@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.
- package/README.md +15 -6
- package/defaults/agents/bee.md +22 -0
- package/defaults/agents/db-manager.md +31 -0
- package/defaults/agents/deployer.md +35 -0
- package/defaults/agents/devops.md +36 -0
- package/defaults/agents/owl.md +24 -0
- package/defaults/agents/payments.md +29 -0
- package/defaults/agents/workspace.md +37 -0
- package/defaults/skills/act.md +65 -0
- package/defaults/skills/docker.md +84 -0
- package/defaults/skills/doppler.md +89 -0
- package/defaults/skills/drizzle.md +81 -0
- package/defaults/skills/firebase.md +83 -0
- package/defaults/skills/gh.md +91 -0
- package/defaults/skills/gws.md +72 -0
- package/defaults/skills/netlify.md +69 -0
- package/defaults/skills/prisma.md +62 -0
- package/defaults/skills/railway.md +69 -0
- package/defaults/skills/stripe.md +69 -0
- package/defaults/skills/supabase.md +84 -0
- package/defaults/skills/turso.md +78 -0
- package/defaults/skills/vercel.md +72 -0
- package/defaults/skills/wrangler.md +105 -0
- package/dist/cli.js +5 -5
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +4 -63
- package/dist/config.js.map +1 -1
- package/dist/core/agent-session.d.ts +1 -1
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +7 -7
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/agents.d.ts +9 -4
- package/dist/core/agents.d.ts.map +1 -1
- package/dist/core/agents.js +53 -8
- package/dist/core/agents.js.map +1 -1
- package/dist/core/auto-update.js +1 -1
- package/dist/core/auto-update.js.map +1 -1
- package/dist/core/compaction/compactor.d.ts +1 -1
- package/dist/core/compaction/compactor.d.ts.map +1 -1
- package/dist/core/compaction/compactor.js +1 -1
- package/dist/core/compaction/compactor.js.map +1 -1
- package/dist/core/compaction/compactor.test.js +2 -2
- package/dist/core/compaction/compactor.test.js.map +1 -1
- package/dist/core/compaction/token-estimator.d.ts +1 -1
- package/dist/core/compaction/token-estimator.d.ts.map +1 -1
- package/dist/core/event-bus.d.ts +1 -1
- package/dist/core/event-bus.d.ts.map +1 -1
- package/dist/core/extensions/types.d.ts +1 -1
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/index.d.ts +2 -3
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +2 -3
- package/dist/core/index.js.map +1 -1
- package/dist/core/mcp/client.d.ts +1 -1
- package/dist/core/mcp/client.d.ts.map +1 -1
- package/dist/core/mcp/defaults.d.ts +1 -1
- package/dist/core/mcp/defaults.d.ts.map +1 -1
- package/dist/core/model-registry.d.ts +1 -1
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/process-manager.d.ts.map +1 -1
- package/dist/core/process-manager.js +2 -7
- package/dist/core/process-manager.js.map +1 -1
- package/dist/core/session-manager.d.ts +1 -1
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/skills.d.ts +7 -1
- package/dist/core/skills.d.ts.map +1 -1
- package/dist/core/skills.js +53 -7
- package/dist/core/skills.js.map +1 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +1 -97
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/telegram.d.ts +19 -0
- package/dist/core/telegram.d.ts.map +1 -1
- package/dist/core/telegram.js +22 -0
- package/dist/core/telegram.js.map +1 -1
- package/dist/core/voice-transcriber.d.ts +33 -0
- package/dist/core/voice-transcriber.d.ts.map +1 -0
- package/dist/core/voice-transcriber.js +113 -0
- package/dist/core/voice-transcriber.js.map +1 -0
- package/dist/core/voice-transcriber.test.d.ts +2 -0
- package/dist/core/voice-transcriber.test.d.ts.map +1 -0
- package/dist/core/voice-transcriber.test.js +88 -0
- package/dist/core/voice-transcriber.test.js.map +1 -0
- package/dist/interactive.js +6 -6
- package/dist/interactive.js.map +1 -1
- package/dist/modes/json-mode.d.ts +1 -1
- package/dist/modes/json-mode.d.ts.map +1 -1
- package/dist/modes/json-mode.js +1 -1
- package/dist/modes/json-mode.js.map +1 -1
- package/dist/modes/print-mode.d.ts +1 -1
- package/dist/modes/print-mode.d.ts.map +1 -1
- package/dist/modes/print-mode.js +1 -1
- package/dist/modes/print-mode.js.map +1 -1
- package/dist/modes/rpc-mode.d.ts +1 -1
- package/dist/modes/rpc-mode.d.ts.map +1 -1
- package/dist/modes/rpc-mode.js +1 -1
- package/dist/modes/rpc-mode.js.map +1 -1
- package/dist/modes/serve-mode.d.ts +1 -1
- package/dist/modes/serve-mode.d.ts.map +1 -1
- package/dist/modes/serve-mode.js +41 -4
- package/dist/modes/serve-mode.js.map +1 -1
- package/dist/session.d.ts +1 -1
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +1 -8
- package/dist/session.js.map +1 -1
- package/dist/system-prompt.js +2 -2
- package/dist/system-prompt.js.map +1 -1
- package/dist/tools/bash.d.ts +1 -2
- package/dist/tools/bash.d.ts.map +1 -1
- package/dist/tools/bash.js +1 -1
- package/dist/tools/bash.js.map +1 -1
- package/dist/tools/edit.d.ts +1 -1
- package/dist/tools/edit.d.ts.map +1 -1
- package/dist/tools/enter-plan.d.ts +1 -1
- package/dist/tools/enter-plan.d.ts.map +1 -1
- package/dist/tools/exit-plan.d.ts +1 -1
- package/dist/tools/exit-plan.d.ts.map +1 -1
- package/dist/tools/exit-plan.js +2 -3
- package/dist/tools/exit-plan.js.map +1 -1
- package/dist/tools/find.d.ts +1 -1
- package/dist/tools/find.d.ts.map +1 -1
- package/dist/tools/grep.d.ts +1 -1
- package/dist/tools/grep.d.ts.map +1 -1
- package/dist/tools/index.d.ts +5 -2
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/ls.d.ts +1 -1
- package/dist/tools/ls.d.ts.map +1 -1
- package/dist/tools/plan-mode.test.js +6 -6
- package/dist/tools/plan-mode.test.js.map +1 -1
- package/dist/tools/read.d.ts +1 -1
- package/dist/tools/read.d.ts.map +1 -1
- package/dist/tools/skill.d.ts +1 -1
- package/dist/tools/skill.d.ts.map +1 -1
- package/dist/tools/subagent.d.ts +1 -1
- package/dist/tools/subagent.d.ts.map +1 -1
- package/dist/tools/task-output.d.ts +1 -1
- package/dist/tools/task-output.d.ts.map +1 -1
- package/dist/tools/task-stop.d.ts +1 -1
- package/dist/tools/task-stop.d.ts.map +1 -1
- package/dist/tools/tasks.d.ts +1 -1
- package/dist/tools/tasks.d.ts.map +1 -1
- package/dist/tools/tasks.js +1 -1
- package/dist/tools/tasks.js.map +1 -1
- package/dist/tools/web-fetch.d.ts +1 -1
- package/dist/tools/web-fetch.d.ts.map +1 -1
- package/dist/tools/web-fetch.js +1 -1
- package/dist/tools/web-fetch.js.map +1 -1
- package/dist/tools/write.d.ts +1 -1
- package/dist/tools/write.d.ts.map +1 -1
- package/dist/tools/write.js +3 -1
- package/dist/tools/write.js.map +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/ui/App.d.ts +9 -3
- package/dist/ui/App.d.ts.map +1 -1
- package/dist/ui/App.js +49 -121
- package/dist/ui/App.js.map +1 -1
- package/dist/ui/activity-phrases.d.ts +10 -0
- package/dist/ui/activity-phrases.d.ts.map +1 -0
- package/dist/ui/activity-phrases.js +227 -0
- package/dist/ui/activity-phrases.js.map +1 -0
- package/dist/ui/components/ActivityIndicator.d.ts.map +1 -1
- package/dist/ui/components/ActivityIndicator.js +1 -225
- package/dist/ui/components/ActivityIndicator.js.map +1 -1
- package/dist/ui/components/Banner.d.ts +1 -1
- package/dist/ui/components/Banner.d.ts.map +1 -1
- package/dist/ui/components/Banner.js +7 -4
- package/dist/ui/components/Banner.js.map +1 -1
- package/dist/ui/components/InputArea.d.ts.map +1 -1
- package/dist/ui/components/InputArea.js +453 -39
- package/dist/ui/components/InputArea.js.map +1 -1
- package/dist/ui/components/ModelSelector.d.ts +1 -1
- package/dist/ui/components/ModelSelector.d.ts.map +1 -1
- package/dist/ui/components/PlanOverlay.d.ts.map +1 -1
- package/dist/ui/components/PlanOverlay.js +7 -3
- package/dist/ui/components/PlanOverlay.js.map +1 -1
- package/dist/ui/components/SkillsOverlay.d.ts.map +1 -1
- package/dist/ui/components/SkillsOverlay.js +6 -2
- package/dist/ui/components/SkillsOverlay.js.map +1 -1
- package/dist/ui/components/TaskOverlay.d.ts.map +1 -1
- package/dist/ui/components/TaskOverlay.js +8 -4
- package/dist/ui/components/TaskOverlay.js.map +1 -1
- package/dist/ui/hooks/useAgentLoop.d.ts +2 -2
- package/dist/ui/hooks/useAgentLoop.d.ts.map +1 -1
- package/dist/ui/hooks/useAgentLoop.js +3 -2
- package/dist/ui/hooks/useAgentLoop.js.map +1 -1
- package/dist/ui/hooks/useSessionManager.d.ts +2 -2
- package/dist/ui/hooks/useSessionManager.d.ts.map +1 -1
- package/dist/ui/hooks/useTerminalSize.d.ts +12 -2
- package/dist/ui/hooks/useTerminalSize.d.ts.map +1 -1
- package/dist/ui/hooks/useTerminalSize.js +27 -6
- package/dist/ui/hooks/useTerminalSize.js.map +1 -1
- package/dist/ui/hooks/useTerminalTitle.d.ts +8 -1
- package/dist/ui/hooks/useTerminalTitle.d.ts.map +1 -1
- package/dist/ui/hooks/useTerminalTitle.js +20 -23
- package/dist/ui/hooks/useTerminalTitle.js.map +1 -1
- package/dist/ui/login.d.ts +1 -1
- package/dist/ui/login.d.ts.map +1 -1
- package/dist/ui/login.js +5 -1
- package/dist/ui/login.js.map +1 -1
- package/dist/ui/plan-overlay.test.d.ts +2 -0
- package/dist/ui/plan-overlay.test.d.ts.map +1 -0
- package/dist/ui/plan-overlay.test.js +327 -0
- package/dist/ui/plan-overlay.test.js.map +1 -0
- package/dist/ui/render.d.ts +2 -2
- package/dist/ui/render.d.ts.map +1 -1
- package/dist/ui/render.js +1 -1
- package/dist/ui/render.js.map +1 -1
- package/dist/ui/sessions.d.ts.map +1 -1
- package/dist/ui/sessions.js +5 -1
- package/dist/ui/sessions.js.map +1 -1
- package/package.json +17 -14
- package/LICENSE +0 -21
- package/dist/core/branding.d.ts +0 -11
- package/dist/core/branding.d.ts.map +0 -1
- package/dist/core/branding.js +0 -11
- package/dist/core/branding.js.map +0 -1
- package/dist/core/update.d.ts +0 -34
- package/dist/core/update.d.ts.map +0 -1
- package/dist/core/update.js +0 -231
- 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 "@
|
|
2
|
-
import type { AgentTool } from "@
|
|
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;
|
package/dist/ui/App.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/ui/App.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAA6B,MAAM,
|
|
1
|
+
{"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/ui/App.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAA6B,MAAM,kBAAkB,CAAC;AAEpG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAK3D,OAAO,EAAiB,KAAK,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAcjF,OAAO,KAAK,EAAE,cAAc,EAAqB,MAAM,4BAA4B,CAAC;AAcpF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAkD3D,UAAU,QAAQ;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,UAAU,QAAQ;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,UAAU,aAAa;IACrB,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,UAAU,aAAa;IACrB,IAAI,EAAE,YAAY,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,UAAU,YAAY;IACpB,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,UAAU,SAAS;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,UAAU,QAAQ;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,UAAU,UAAU;IAClB,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,UAAU,cAAc;IACtB,IAAI,EAAE,YAAY,CAAC;IACnB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,UAAU,aAAa;IACrB,IAAI,EAAE,WAAW,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,UAAU,YAAY;IACpB,IAAI,EAAE,UAAU,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,UAAU,UAAU;IAClB,IAAI,EAAE,QAAQ,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,UAAU,iBAAiB;IACzB,IAAI,EAAE,gBAAgB,CAAC;IACvB,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,UAAU,mBAAmB;IAC3B,IAAI,EAAE,mBAAmB,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,UAAU,kBAAkB;IAC1B,IAAI,EAAE,kBAAkB,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,OAAO,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,UAAU,kBAAkB;IAC1B,IAAI,EAAE,iBAAiB,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,UAAU,aAAa;IACrB,IAAI,EAAE,WAAW,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;CACZ;AAKD,UAAU,aAAa;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,MAAM,EAAE,SAAS,GAAG,MAAM,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,MAAM,aAAa,GACrB,QAAQ,GACR,QAAQ,GACR,aAAa,GACb,aAAa,GACb,YAAY,GACZ,mBAAmB,GACnB,kBAAkB,GAClB,SAAS,GACT,QAAQ,GACR,UAAU,GACV,cAAc,GACd,aAAa,GACb,YAAY,GACZ,UAAU,GACV,iBAAiB,GACjB,aAAa,GACb,kBAAkB,GAClB,aAAa,CAAC;AAqJlB,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,QAAQ,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC3D,iBAAiB,CAAC,EAAE,QAAQ,EAAE,CAAC;IAC/B,qBAAqB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpF,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,WAAW,CAAC,EAAE;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IACnC,cAAc,CAAC,EAAE;QAAE,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE,CAAC;IACxD,aAAa,CAAC,EAAE;QAAE,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;KAAE,CAAC;IACnE,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;CAClB;AAID,wBAAgB,GAAG,CAAC,KAAK,EAAE,QAAQ,2CA0lDlC"}
|
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(), ".
|
|
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(), ".
|
|
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(), ".
|
|
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
|
-
|
|
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
|
|
319
|
-
setLiveItems((prev) => [
|
|
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
|
-
|
|
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: "
|
|
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
|
-
{
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
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
|
-
{
|
|
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
|
}
|