@mragentix/cli 4.2.39 β†’ 4.2.53

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 (223) hide show
  1. package/README.md +15 -6
  2. package/defaults/agents/bee.md +22 -0
  3. package/defaults/agents/db-manager.md +31 -0
  4. package/defaults/agents/deployer.md +35 -0
  5. package/defaults/agents/devops.md +36 -0
  6. package/defaults/agents/owl.md +24 -0
  7. package/defaults/agents/payments.md +29 -0
  8. package/defaults/agents/workspace.md +37 -0
  9. package/defaults/skills/act.md +65 -0
  10. package/defaults/skills/docker.md +84 -0
  11. package/defaults/skills/doppler.md +89 -0
  12. package/defaults/skills/drizzle.md +81 -0
  13. package/defaults/skills/firebase.md +83 -0
  14. package/defaults/skills/gh.md +91 -0
  15. package/defaults/skills/gws.md +72 -0
  16. package/defaults/skills/netlify.md +69 -0
  17. package/defaults/skills/prisma.md +62 -0
  18. package/defaults/skills/railway.md +69 -0
  19. package/defaults/skills/stripe.md +69 -0
  20. package/defaults/skills/supabase.md +84 -0
  21. package/defaults/skills/turso.md +78 -0
  22. package/defaults/skills/vercel.md +72 -0
  23. package/defaults/skills/wrangler.md +105 -0
  24. package/dist/cli.js +5 -5
  25. package/dist/cli.js.map +1 -1
  26. package/dist/config.d.ts.map +1 -1
  27. package/dist/config.js +4 -63
  28. package/dist/config.js.map +1 -1
  29. package/dist/core/agent-session.d.ts +1 -1
  30. package/dist/core/agent-session.d.ts.map +1 -1
  31. package/dist/core/agent-session.js +7 -7
  32. package/dist/core/agent-session.js.map +1 -1
  33. package/dist/core/agents.d.ts +9 -4
  34. package/dist/core/agents.d.ts.map +1 -1
  35. package/dist/core/agents.js +53 -8
  36. package/dist/core/agents.js.map +1 -1
  37. package/dist/core/auto-update.js +1 -1
  38. package/dist/core/auto-update.js.map +1 -1
  39. package/dist/core/compaction/compactor.d.ts +1 -1
  40. package/dist/core/compaction/compactor.d.ts.map +1 -1
  41. package/dist/core/compaction/compactor.js +1 -1
  42. package/dist/core/compaction/compactor.js.map +1 -1
  43. package/dist/core/compaction/compactor.test.js +2 -2
  44. package/dist/core/compaction/compactor.test.js.map +1 -1
  45. package/dist/core/compaction/token-estimator.d.ts +1 -1
  46. package/dist/core/compaction/token-estimator.d.ts.map +1 -1
  47. package/dist/core/event-bus.d.ts +1 -1
  48. package/dist/core/event-bus.d.ts.map +1 -1
  49. package/dist/core/extensions/types.d.ts +1 -1
  50. package/dist/core/extensions/types.d.ts.map +1 -1
  51. package/dist/core/index.d.ts +2 -3
  52. package/dist/core/index.d.ts.map +1 -1
  53. package/dist/core/index.js +2 -3
  54. package/dist/core/index.js.map +1 -1
  55. package/dist/core/mcp/client.d.ts +1 -1
  56. package/dist/core/mcp/client.d.ts.map +1 -1
  57. package/dist/core/mcp/defaults.d.ts +1 -1
  58. package/dist/core/mcp/defaults.d.ts.map +1 -1
  59. package/dist/core/model-registry.d.ts +1 -1
  60. package/dist/core/model-registry.d.ts.map +1 -1
  61. package/dist/core/process-manager.d.ts.map +1 -1
  62. package/dist/core/process-manager.js +2 -7
  63. package/dist/core/process-manager.js.map +1 -1
  64. package/dist/core/session-manager.d.ts +1 -1
  65. package/dist/core/session-manager.d.ts.map +1 -1
  66. package/dist/core/skills.d.ts +7 -1
  67. package/dist/core/skills.d.ts.map +1 -1
  68. package/dist/core/skills.js +53 -7
  69. package/dist/core/skills.js.map +1 -1
  70. package/dist/core/slash-commands.d.ts.map +1 -1
  71. package/dist/core/slash-commands.js +1 -97
  72. package/dist/core/slash-commands.js.map +1 -1
  73. package/dist/core/telegram.d.ts +19 -0
  74. package/dist/core/telegram.d.ts.map +1 -1
  75. package/dist/core/telegram.js +22 -0
  76. package/dist/core/telegram.js.map +1 -1
  77. package/dist/core/voice-transcriber.d.ts +33 -0
  78. package/dist/core/voice-transcriber.d.ts.map +1 -0
  79. package/dist/core/voice-transcriber.js +113 -0
  80. package/dist/core/voice-transcriber.js.map +1 -0
  81. package/dist/core/voice-transcriber.test.d.ts +2 -0
  82. package/dist/core/voice-transcriber.test.d.ts.map +1 -0
  83. package/dist/core/voice-transcriber.test.js +88 -0
  84. package/dist/core/voice-transcriber.test.js.map +1 -0
  85. package/dist/interactive.js +6 -6
  86. package/dist/interactive.js.map +1 -1
  87. package/dist/modes/json-mode.d.ts +1 -1
  88. package/dist/modes/json-mode.d.ts.map +1 -1
  89. package/dist/modes/json-mode.js +1 -1
  90. package/dist/modes/json-mode.js.map +1 -1
  91. package/dist/modes/print-mode.d.ts +1 -1
  92. package/dist/modes/print-mode.d.ts.map +1 -1
  93. package/dist/modes/print-mode.js +1 -1
  94. package/dist/modes/print-mode.js.map +1 -1
  95. package/dist/modes/rpc-mode.d.ts +1 -1
  96. package/dist/modes/rpc-mode.d.ts.map +1 -1
  97. package/dist/modes/rpc-mode.js +1 -1
  98. package/dist/modes/rpc-mode.js.map +1 -1
  99. package/dist/modes/serve-mode.d.ts +1 -1
  100. package/dist/modes/serve-mode.d.ts.map +1 -1
  101. package/dist/modes/serve-mode.js +41 -4
  102. package/dist/modes/serve-mode.js.map +1 -1
  103. package/dist/session.d.ts +1 -1
  104. package/dist/session.d.ts.map +1 -1
  105. package/dist/session.js +1 -8
  106. package/dist/session.js.map +1 -1
  107. package/dist/system-prompt.js +2 -2
  108. package/dist/system-prompt.js.map +1 -1
  109. package/dist/tools/bash.d.ts +1 -2
  110. package/dist/tools/bash.d.ts.map +1 -1
  111. package/dist/tools/bash.js +1 -1
  112. package/dist/tools/bash.js.map +1 -1
  113. package/dist/tools/edit.d.ts +1 -1
  114. package/dist/tools/edit.d.ts.map +1 -1
  115. package/dist/tools/enter-plan.d.ts +1 -1
  116. package/dist/tools/enter-plan.d.ts.map +1 -1
  117. package/dist/tools/exit-plan.d.ts +1 -1
  118. package/dist/tools/exit-plan.d.ts.map +1 -1
  119. package/dist/tools/exit-plan.js +2 -3
  120. package/dist/tools/exit-plan.js.map +1 -1
  121. package/dist/tools/find.d.ts +1 -1
  122. package/dist/tools/find.d.ts.map +1 -1
  123. package/dist/tools/grep.d.ts +1 -1
  124. package/dist/tools/grep.d.ts.map +1 -1
  125. package/dist/tools/index.d.ts +5 -2
  126. package/dist/tools/index.d.ts.map +1 -1
  127. package/dist/tools/index.js.map +1 -1
  128. package/dist/tools/ls.d.ts +1 -1
  129. package/dist/tools/ls.d.ts.map +1 -1
  130. package/dist/tools/plan-mode.test.js +6 -6
  131. package/dist/tools/plan-mode.test.js.map +1 -1
  132. package/dist/tools/read.d.ts +1 -1
  133. package/dist/tools/read.d.ts.map +1 -1
  134. package/dist/tools/skill.d.ts +1 -1
  135. package/dist/tools/skill.d.ts.map +1 -1
  136. package/dist/tools/subagent.d.ts +1 -1
  137. package/dist/tools/subagent.d.ts.map +1 -1
  138. package/dist/tools/task-output.d.ts +1 -1
  139. package/dist/tools/task-output.d.ts.map +1 -1
  140. package/dist/tools/task-stop.d.ts +1 -1
  141. package/dist/tools/task-stop.d.ts.map +1 -1
  142. package/dist/tools/tasks.d.ts +1 -1
  143. package/dist/tools/tasks.d.ts.map +1 -1
  144. package/dist/tools/tasks.js +1 -1
  145. package/dist/tools/tasks.js.map +1 -1
  146. package/dist/tools/web-fetch.d.ts +1 -1
  147. package/dist/tools/web-fetch.d.ts.map +1 -1
  148. package/dist/tools/web-fetch.js +1 -1
  149. package/dist/tools/web-fetch.js.map +1 -1
  150. package/dist/tools/write.d.ts +1 -1
  151. package/dist/tools/write.d.ts.map +1 -1
  152. package/dist/tools/write.js +3 -1
  153. package/dist/tools/write.js.map +1 -1
  154. package/dist/types.d.ts +1 -1
  155. package/dist/types.d.ts.map +1 -1
  156. package/dist/ui/App.d.ts +9 -3
  157. package/dist/ui/App.d.ts.map +1 -1
  158. package/dist/ui/App.js +49 -121
  159. package/dist/ui/App.js.map +1 -1
  160. package/dist/ui/activity-phrases.d.ts +10 -0
  161. package/dist/ui/activity-phrases.d.ts.map +1 -0
  162. package/dist/ui/activity-phrases.js +227 -0
  163. package/dist/ui/activity-phrases.js.map +1 -0
  164. package/dist/ui/components/ActivityIndicator.d.ts.map +1 -1
  165. package/dist/ui/components/ActivityIndicator.js +1 -225
  166. package/dist/ui/components/ActivityIndicator.js.map +1 -1
  167. package/dist/ui/components/Banner.d.ts +1 -1
  168. package/dist/ui/components/Banner.d.ts.map +1 -1
  169. package/dist/ui/components/Banner.js +7 -4
  170. package/dist/ui/components/Banner.js.map +1 -1
  171. package/dist/ui/components/InputArea.d.ts.map +1 -1
  172. package/dist/ui/components/InputArea.js +453 -39
  173. package/dist/ui/components/InputArea.js.map +1 -1
  174. package/dist/ui/components/ModelSelector.d.ts +1 -1
  175. package/dist/ui/components/ModelSelector.d.ts.map +1 -1
  176. package/dist/ui/components/PlanOverlay.d.ts.map +1 -1
  177. package/dist/ui/components/PlanOverlay.js +7 -3
  178. package/dist/ui/components/PlanOverlay.js.map +1 -1
  179. package/dist/ui/components/SkillsOverlay.d.ts.map +1 -1
  180. package/dist/ui/components/SkillsOverlay.js +6 -2
  181. package/dist/ui/components/SkillsOverlay.js.map +1 -1
  182. package/dist/ui/components/TaskOverlay.d.ts.map +1 -1
  183. package/dist/ui/components/TaskOverlay.js +8 -4
  184. package/dist/ui/components/TaskOverlay.js.map +1 -1
  185. package/dist/ui/hooks/useAgentLoop.d.ts +2 -2
  186. package/dist/ui/hooks/useAgentLoop.d.ts.map +1 -1
  187. package/dist/ui/hooks/useAgentLoop.js +3 -2
  188. package/dist/ui/hooks/useAgentLoop.js.map +1 -1
  189. package/dist/ui/hooks/useSessionManager.d.ts +2 -2
  190. package/dist/ui/hooks/useSessionManager.d.ts.map +1 -1
  191. package/dist/ui/hooks/useTerminalSize.d.ts +12 -2
  192. package/dist/ui/hooks/useTerminalSize.d.ts.map +1 -1
  193. package/dist/ui/hooks/useTerminalSize.js +27 -6
  194. package/dist/ui/hooks/useTerminalSize.js.map +1 -1
  195. package/dist/ui/hooks/useTerminalTitle.d.ts +8 -1
  196. package/dist/ui/hooks/useTerminalTitle.d.ts.map +1 -1
  197. package/dist/ui/hooks/useTerminalTitle.js +20 -23
  198. package/dist/ui/hooks/useTerminalTitle.js.map +1 -1
  199. package/dist/ui/login.d.ts +1 -1
  200. package/dist/ui/login.d.ts.map +1 -1
  201. package/dist/ui/login.js +5 -1
  202. package/dist/ui/login.js.map +1 -1
  203. package/dist/ui/plan-overlay.test.d.ts +2 -0
  204. package/dist/ui/plan-overlay.test.d.ts.map +1 -0
  205. package/dist/ui/plan-overlay.test.js +327 -0
  206. package/dist/ui/plan-overlay.test.js.map +1 -0
  207. package/dist/ui/render.d.ts +2 -2
  208. package/dist/ui/render.d.ts.map +1 -1
  209. package/dist/ui/render.js +1 -1
  210. package/dist/ui/render.js.map +1 -1
  211. package/dist/ui/sessions.d.ts.map +1 -1
  212. package/dist/ui/sessions.js +5 -1
  213. package/dist/ui/sessions.js.map +1 -1
  214. package/package.json +17 -14
  215. package/LICENSE +0 -21
  216. package/dist/core/branding.d.ts +0 -11
  217. package/dist/core/branding.d.ts.map +0 -1
  218. package/dist/core/branding.js +0 -11
  219. package/dist/core/branding.js.map +0 -1
  220. package/dist/core/update.d.ts +0 -34
  221. package/dist/core/update.d.ts.map +0 -1
  222. package/dist/core/update.js +0 -231
  223. package/dist/core/update.js.map +0 -1
package/dist/ui/App.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import type { Message, Provider, ThinkingLevel } from "@mragentix/ai";
2
- import type { AgentTool } from "@mragentix/agent";
1
+ import type { Message, Provider, ThinkingLevel } from "@kenkaiiii/gg-ai";
2
+ import type { AgentTool } from "@kenkaiiii/gg-agent";
3
3
  import type { PasteInfo } from "./components/InputArea.js";
4
4
  import { type SubAgentInfo } from "./components/SubAgentPanel.js";
5
5
  import type { ProcessManager } from "../core/process-manager.js";
@@ -103,6 +103,12 @@ interface ServerToolDoneItem {
103
103
  durationMs: number;
104
104
  id: string;
105
105
  }
106
+ interface PlanTransitionItem {
107
+ kind: "plan_transition";
108
+ text: string;
109
+ active: boolean;
110
+ id: string;
111
+ }
106
112
  interface TombstoneItem {
107
113
  kind: "tombstone";
108
114
  id: string;
@@ -120,7 +126,7 @@ export interface ToolGroupItem {
120
126
  tools: ToolGroupTool[];
121
127
  id: string;
122
128
  }
123
- export type CompletedItem = UserItem | TaskItem | AssistantItem | ToolStartItem | ToolDoneItem | ServerToolStartItem | ServerToolDoneItem | ErrorItem | InfoItem | QueuedItem | CompactingItem | CompactedItem | DurationItem | BannerItem | SubAgentGroupItem | ToolGroupItem | TombstoneItem;
129
+ export type CompletedItem = UserItem | TaskItem | AssistantItem | ToolStartItem | ToolDoneItem | ServerToolStartItem | ServerToolDoneItem | ErrorItem | InfoItem | QueuedItem | CompactingItem | CompactedItem | DurationItem | BannerItem | SubAgentGroupItem | ToolGroupItem | PlanTransitionItem | TombstoneItem;
124
130
  export interface AppProps {
125
131
  provider: Provider;
126
132
  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
@@ -40,7 +40,6 @@ import { PROMPT_COMMANDS, getPromptCommand } from "../core/prompt-commands.js";
40
40
  import { loadCustomCommands } from "../core/custom-commands.js";
41
41
  import { buildSystemPrompt } from "../system-prompt.js";
42
42
  import { getMCPServers } from "../core/mcp/index.js";
43
- import { fetchUpstreamChanges, mergeUpstream, restoreBranding, bumpVersion, buildAll, publishToNpm, pushToGithub, selfUpdate, } from "../core/update.js";
44
43
  import { trimFlushedItems, flushOnTurnText, flushOnTurnEnd } from "./live-item-flush.js";
45
44
  // ── Provider Error Hints ──────────────────────────────────
46
45
  /** Detect provider-side errors and return a user-facing hint. */
@@ -185,7 +184,7 @@ const THINKING_BORDER_COLORS = ["#60a5fa", "#818cf8", "#a78bfa", "#818cf8", "#60
185
184
  function getTaskCount(cwd) {
186
185
  try {
187
186
  const hash = createHash("sha256").update(cwd).digest("hex").slice(0, 16);
188
- const data = readFileSync(join(homedir(), ".mragentix-tasks", "projects", hash, "tasks.json"), "utf-8");
187
+ const data = readFileSync(join(homedir(), ".gg-tasks", "projects", hash, "tasks.json"), "utf-8");
189
188
  const tasks = JSON.parse(data);
190
189
  return tasks.filter((t) => t.status !== "done").length;
191
190
  }
@@ -196,7 +195,7 @@ function getTaskCount(cwd) {
196
195
  function getNextPendingTask(cwd) {
197
196
  try {
198
197
  const hash = createHash("sha256").update(cwd).digest("hex").slice(0, 16);
199
- const data = readFileSync(join(homedir(), ".mragentix-tasks", "projects", hash, "tasks.json"), "utf-8");
198
+ const data = readFileSync(join(homedir(), ".gg-tasks", "projects", hash, "tasks.json"), "utf-8");
200
199
  const tasks = JSON.parse(data);
201
200
  const pending = tasks.find((t) => t.status === "pending");
202
201
  if (!pending)
@@ -214,7 +213,7 @@ function getNextPendingTask(cwd) {
214
213
  function markTaskInProgress(cwd, taskId) {
215
214
  try {
216
215
  const hash = createHash("sha256").update(cwd).digest("hex").slice(0, 16);
217
- const filePath = join(homedir(), ".mragentix-tasks", "projects", hash, "tasks.json");
216
+ const filePath = join(homedir(), ".gg-tasks", "projects", hash, "tasks.json");
218
217
  const data = readFileSync(filePath, "utf-8");
219
218
  const tasks = JSON.parse(data);
220
219
  const updated = tasks.map((t) => (t.id === taskId ? { ...t, status: "in-progress" } : t));
@@ -229,11 +228,21 @@ export function App(props) {
229
228
  const theme = useTheme();
230
229
  const { stdout } = useStdout();
231
230
  const { columns, resizeKey } = useTerminalSize();
231
+ // Hoisted before terminal title hook so it can reference them
232
+ const [lastUserMessage, setLastUserMessage] = useState("");
233
+ const [planMode, setPlanMode] = useState(false);
232
234
  // Terminal title β€” updated later after agentLoop is created
233
235
  // (hoisted here so the hook is always called in the same order)
234
236
  const [titlePhase, setTitlePhase] = useState("idle");
235
237
  const [titleRunning, setTitleRunning] = useState(false);
236
- useTerminalTitle(titlePhase, titleRunning);
238
+ const [titleToolNames, setTitleToolNames] = useState([]);
239
+ useTerminalTitle({
240
+ phase: titlePhase,
241
+ isRunning: titleRunning,
242
+ userMessage: lastUserMessage,
243
+ activeToolNames: titleToolNames,
244
+ planMode,
245
+ });
237
246
  // Items scrolled into Static (history). For restored sessions, skip the
238
247
  // banner and add restored items via useEffect so Ink's <Static> treats them
239
248
  // as incremental additions (large initial arrays can race with Static's
@@ -256,15 +265,15 @@ export function App(props) {
256
265
  const startTaskRef = useRef(() => { });
257
266
  const cwdRef = useRef(props.cwd);
258
267
  const [staticKey, setStaticKey] = useState(0);
259
- const [lastUserMessage, setLastUserMessage] = useState("");
260
268
  const [doneStatus, setDoneStatus] = useState(null);
269
+ // Suppress "done" status when a plan overlay is about to open
270
+ const planOverlayPendingRef = useRef(false);
261
271
  const [gitBranch, setGitBranch] = useState(null);
262
272
  const [currentModel, setCurrentModel] = useState(props.model);
263
273
  const [currentProvider, setCurrentProvider] = useState(props.provider);
264
274
  const [currentTools, setCurrentTools] = useState(props.tools);
265
275
  const [thinkingEnabled, setThinkingEnabled] = useState(!!props.thinking);
266
276
  const messagesRef = useRef(props.messages);
267
- const [planMode, setPlanMode] = useState(false);
268
277
  const [planAutoExpand, setPlanAutoExpand] = useState(false);
269
278
  const approvedPlanPathRef = useRef(undefined);
270
279
  const nextIdRef = useRef(0);
@@ -315,8 +324,11 @@ export function App(props) {
315
324
  if (props.onEnterPlanRef) {
316
325
  props.onEnterPlanRef.current = (reason) => {
317
326
  setPlanMode(true);
318
- const msg = reason ? `Plan mode activated: ${reason}` : "Plan mode activated";
319
- setLiveItems((prev) => [...prev, { kind: "info", text: msg, id: getId() }]);
327
+ const msg = reason ? `Plan Mode Activated β€” ${reason}` : "Plan Mode Activated";
328
+ setLiveItems((prev) => [
329
+ ...prev,
330
+ { kind: "plan_transition", text: msg, active: true, id: getId() },
331
+ ]);
320
332
  };
321
333
  }
322
334
  }, [props.onEnterPlanRef]);
@@ -329,10 +341,14 @@ export function App(props) {
329
341
  approvedPlanPathRef.current = planPath;
330
342
  // Use setTimeout to open pane after the current tool execution completes,
331
343
  // so the turn can finish and the UI transitions cleanly
344
+ // Flag that the plan overlay is about to open β€” suppresses the
345
+ // premature "done" status that fires when the agent loop finishes
346
+ planOverlayPendingRef.current = true;
332
347
  setTimeout(() => {
333
348
  stdout?.write("\x1b[2J\x1b[3J\x1b[H");
334
349
  setPlanAutoExpand(true);
335
350
  setOverlay("plan");
351
+ planOverlayPendingRef.current = false;
336
352
  }, 300);
337
353
  return ("Plan submitted. Exiting plan mode.\n" +
338
354
  "The plan pane is opening for user review.\n" +
@@ -397,6 +413,7 @@ export function App(props) {
397
413
  apiKey: compactApiKey,
398
414
  contextWindow,
399
415
  signal: undefined,
416
+ approvedPlanPath: approvedPlanPathRef.current,
400
417
  });
401
418
  // Replace spinner with completed notice
402
419
  setLiveItems((prev) => prev.map((item) => item.id === spinId
@@ -753,6 +770,10 @@ export function App(props) {
753
770
  duration: `${durationMs}ms`,
754
771
  toolsUsed: toolsUsed.join(",") || "none",
755
772
  });
773
+ // Don't show "done" status when plan overlay is about to open β€”
774
+ // the agent loop finished but we're waiting for user plan review
775
+ if (planOverlayPendingRef.current)
776
+ return;
756
777
  setDoneStatus({ durationMs, toolsUsed, verb: pickDurationVerb(toolsUsed) });
757
778
  playNotificationSound();
758
779
  // Two-phase flush to avoid Ink text clipping.
@@ -874,10 +895,12 @@ export function App(props) {
874
895
  }
875
896
  });
876
897
  // Sync terminal title with agent loop state
898
+ const activeToolNamesKey = agentLoop.activeToolCalls.map((tc) => tc.name).join(",");
877
899
  useEffect(() => {
878
900
  setTitlePhase(agentLoop.activityPhase);
879
901
  setTitleRunning(agentLoop.isRunning);
880
- }, [agentLoop.activityPhase, agentLoop.isRunning]);
902
+ setTitleToolNames(agentLoop.activeToolCalls.map((tc) => tc.name));
903
+ }, [agentLoop.activityPhase, agentLoop.isRunning, activeToolNamesKey]);
881
904
  // Animated thinking border β€” derived from global animation tick
882
905
  const animTick = useAnimationTick();
883
906
  const thinkingBorderFrame = agentLoop.activityPhase === "thinking"
@@ -928,7 +951,7 @@ export function App(props) {
928
951
  setPlanMode(true);
929
952
  setLiveItems((prev) => [
930
953
  ...prev,
931
- { kind: "info", text: "Plan mode activated", id: getId() },
954
+ { kind: "plan_transition", text: "Plan Mode Activated", active: true, id: getId() },
932
955
  ]);
933
956
  return;
934
957
  }
@@ -936,115 +959,13 @@ export function App(props) {
936
959
  setPlanMode(false);
937
960
  setLiveItems((prev) => [
938
961
  ...prev,
939
- { kind: "info", text: "Plan mode deactivated", id: getId() },
940
- ]);
941
- return;
942
- }
943
- // Handle /update β€” upstream sync pipeline
944
- if (trimmed === "/update" || trimmed === "/u") {
945
- try {
946
- const status = fetchUpstreamChanges();
947
- if (!status.hasUpdates) {
948
- setLiveItems((prev) => [
949
- ...prev,
950
- { kind: "info", text: "βœ… Already up to date with upstream.", id: getId() },
951
- ]);
952
- }
953
- else {
954
- const commitList = status.commits.map((c) => ` ${c}`).join("\n");
955
- const msg = [
956
- `πŸ“¦ Found ${status.commits.length} new commit(s) from upstream:\n`,
957
- commitList,
958
- "",
959
- status.diffStat,
960
- "",
961
- "Run /update confirm to merge, build, and publish.",
962
- ].join("\n");
963
- setLiveItems((prev) => [...prev, { kind: "info", text: msg, id: getId() }]);
964
- }
965
- }
966
- catch (err) {
967
- setLiveItems((prev) => [
968
- ...prev,
969
- { kind: "error", message: `${err.message}`, id: getId() },
970
- ]);
971
- }
972
- return;
973
- }
974
- if (trimmed === "/update confirm") {
975
- setLiveItems((prev) => [
976
- ...prev,
977
- { kind: "info", text: "πŸ”„ Running update pipeline...", id: getId() },
962
+ {
963
+ kind: "plan_transition",
964
+ text: "Plan Mode Deactivated",
965
+ active: false,
966
+ id: getId(),
967
+ },
978
968
  ]);
979
- try {
980
- const steps = [];
981
- steps.push("πŸ”„ Merging upstream changes...");
982
- const merge = mergeUpstream();
983
- if (!merge.ok) {
984
- steps.push(` ❌ ${merge.error}`);
985
- setLiveItems((prev) => [
986
- ...prev,
987
- { kind: "error", message: steps.join("\n"), id: getId() },
988
- ]);
989
- return;
990
- }
991
- steps.push(" βœ“ Merged");
992
- steps.push("🎨 Restoring branding...");
993
- const branding = restoreBranding();
994
- steps.push(` βœ“ ${branding.filesModified} file(s) updated`);
995
- steps.push("πŸ“ Bumping version...");
996
- const version = bumpVersion();
997
- steps.push(` βœ“ ${version.oldVersion} β†’ ${version.newVersion}`);
998
- steps.push("πŸ”¨ Building all packages...");
999
- const build = buildAll();
1000
- if (!build.ok) {
1001
- steps.push(` ❌ Build failed:\n${build.output}`);
1002
- setLiveItems((prev) => [
1003
- ...prev,
1004
- { kind: "error", message: steps.join("\n"), id: getId() },
1005
- ]);
1006
- return;
1007
- }
1008
- steps.push(" βœ“ Built");
1009
- steps.push("πŸ“¦ Publishing to npm...");
1010
- const pub = publishToNpm();
1011
- for (const r of pub.results)
1012
- steps.push(` ${r}`);
1013
- if (!pub.ok) {
1014
- setLiveItems((prev) => [
1015
- ...prev,
1016
- { kind: "error", message: steps.join("\n"), id: getId() },
1017
- ]);
1018
- return;
1019
- }
1020
- steps.push("πŸš€ Pushing to GitHub...");
1021
- const push = pushToGithub(version.newVersion);
1022
- if (!push.ok) {
1023
- steps.push(` ❌ ${push.error}`);
1024
- setLiveItems((prev) => [
1025
- ...prev,
1026
- { kind: "error", message: steps.join("\n"), id: getId() },
1027
- ]);
1028
- return;
1029
- }
1030
- steps.push(" βœ“ Pushed");
1031
- steps.push("⬆️ Updating global install...");
1032
- const update = selfUpdate();
1033
- steps.push(update.ok ? " βœ“ Updated" : ` ⚠️ Self-update failed: ${update.output}`);
1034
- steps.push("");
1035
- steps.push(`βœ… Updated to v${version.newVersion}! Restart mragentix to use the new version.`);
1036
- setLiveItems((prev) => [...prev, { kind: "info", text: steps.join("\n"), id: getId() }]);
1037
- }
1038
- catch (err) {
1039
- setLiveItems((prev) => [
1040
- ...prev,
1041
- {
1042
- kind: "error",
1043
- message: `Pipeline error: ${err.message}`,
1044
- id: getId(),
1045
- },
1046
- ]);
1047
- }
1048
969
  return;
1049
970
  }
1050
971
  // Handle /plans β€” open plan pane
@@ -1302,7 +1223,6 @@ export function App(props) {
1302
1223
  { name: "quit", aliases: ["q", "exit"], description: "Exit the agent" },
1303
1224
  { name: "plan", aliases: [], description: "Toggle plan mode (on/off)" },
1304
1225
  { name: "plans", aliases: [], description: "Open plans pane" },
1305
- { name: "update", aliases: ["u"], description: "Pull upstream changes, rebuild & publish" },
1306
1226
  ...PROMPT_COMMANDS.map((cmd) => ({
1307
1227
  name: cmd.name,
1308
1228
  aliases: cmd.aliases,
@@ -1342,6 +1262,8 @@ export function App(props) {
1342
1262
  }
1343
1263
  case "info":
1344
1264
  return (_jsx(Box, { marginTop: 1, flexShrink: 1, children: _jsx(Text, { color: theme.textDim, wrap: "wrap", children: item.text }) }, item.id));
1265
+ case "plan_transition":
1266
+ return (_jsx(Box, { marginTop: 1, flexShrink: 1, children: _jsxs(Text, { color: theme.planPrimary, bold: true, wrap: "wrap", children: [item.active ? "⊞ " : "⊟ ", item.text] }) }, item.id));
1345
1267
  case "queued":
1346
1268
  return (_jsxs(Box, { marginTop: 1, children: [_jsx(Text, { color: theme.accent, bold: true, children: "⏳ Queued: " }), _jsxs(Text, { color: theme.text, wrap: "wrap", children: [item.text, item.imageCount
1347
1269
  ? ` (+${item.imageCount} image${item.imageCount > 1 ? "s" : ""})`
@@ -1474,6 +1396,7 @@ export function App(props) {
1474
1396
  setStaticKey((k) => k + 1);
1475
1397
  setPlanAutoExpand(false);
1476
1398
  setOverlay(null);
1399
+ setDoneStatus(null);
1477
1400
  // Send rejection + feedback to the agent
1478
1401
  const msg = `The plan at ${planPath} was rejected.\n\nFeedback: ${feedback}\n\n` +
1479
1402
  `Please revise the plan based on this feedback.`;
@@ -1496,7 +1419,12 @@ export function App(props) {
1496
1419
  log("INFO", "plan", `Plan mode ${next ? "enabled" : "disabled"}`);
1497
1420
  setLiveItems((items) => [
1498
1421
  ...items,
1499
- { kind: "info", text: `Plan mode ${next ? "on" : "off"}`, id: getId() },
1422
+ {
1423
+ kind: "plan_transition",
1424
+ text: next ? "Plan Mode Activated" : "Plan Mode Deactivated",
1425
+ active: next,
1426
+ id: getId(),
1427
+ },
1500
1428
  ]);
1501
1429
  }, cwd: props.cwd, commands: allCommands }), overlay === "model" ? (_jsx(ModelSelector, { onSelect: handleModelSelect, onCancel: () => setOverlay(null), loggedInProviders: props.loggedInProviders ?? [currentProvider], currentModel: currentModel, currentProvider: currentProvider })) : (_jsx(Footer, { model: currentModel, tokensIn: agentLoop.contextUsed, cwd: props.cwd, gitBranch: gitBranch, thinkingEnabled: thinkingEnabled, planMode: planMode })), bgTasks.length > 0 && (_jsx(BackgroundTasksBar, { tasks: bgTasks, focused: taskBarFocused, expanded: taskBarExpanded, selectedIndex: selectedTaskIndex, onExpand: handleTaskBarExpand, onCollapse: handleTaskBarCollapse, onKill: handleTaskKill, onExit: handleTaskBarExit, onNavigate: handleTaskNavigate }))] }))] }));
1502
1430
  }