@mohanscodex/spectra-code 0.4.5
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 +275 -0
- package/dist/package.json +62 -0
- package/dist/src/agents/definitions.d.ts +16 -0
- package/dist/src/agents/definitions.d.ts.map +1 -0
- package/dist/src/agents/definitions.js +148 -0
- package/dist/src/agents/definitions.js.map +1 -0
- package/dist/src/agents/registry.d.ts +11 -0
- package/dist/src/agents/registry.d.ts.map +1 -0
- package/dist/src/agents/registry.js +13 -0
- package/dist/src/agents/registry.js.map +1 -0
- package/dist/src/cli.d.ts +3 -0
- package/dist/src/cli.d.ts.map +1 -0
- package/dist/src/cli.js +436 -0
- package/dist/src/cli.js.map +1 -0
- package/dist/src/commands/agent.d.ts +3 -0
- package/dist/src/commands/agent.d.ts.map +1 -0
- package/dist/src/commands/agent.js +28 -0
- package/dist/src/commands/agent.js.map +1 -0
- package/dist/src/commands/db.d.ts +3 -0
- package/dist/src/commands/db.d.ts.map +1 -0
- package/dist/src/commands/db.js +47 -0
- package/dist/src/commands/db.js.map +1 -0
- package/dist/src/commands/doctor.d.ts +12 -0
- package/dist/src/commands/doctor.d.ts.map +1 -0
- package/dist/src/commands/doctor.js +59 -0
- package/dist/src/commands/doctor.js.map +1 -0
- package/dist/src/commands/mcp.d.ts +9 -0
- package/dist/src/commands/mcp.d.ts.map +1 -0
- package/dist/src/commands/mcp.js +208 -0
- package/dist/src/commands/mcp.js.map +1 -0
- package/dist/src/commands/plugin.d.ts +3 -0
- package/dist/src/commands/plugin.d.ts.map +1 -0
- package/dist/src/commands/plugin.js +36 -0
- package/dist/src/commands/plugin.js.map +1 -0
- package/dist/src/commands/session.d.ts +3 -0
- package/dist/src/commands/session.d.ts.map +1 -0
- package/dist/src/commands/session.js +49 -0
- package/dist/src/commands/session.js.map +1 -0
- package/dist/src/index.d.ts +19 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +17 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/integrations/acp/index.d.ts +2 -0
- package/dist/src/integrations/acp/index.d.ts.map +1 -0
- package/dist/src/integrations/acp/index.js +2 -0
- package/dist/src/integrations/acp/index.js.map +1 -0
- package/dist/src/integrations/acp/server.d.ts +11 -0
- package/dist/src/integrations/acp/server.d.ts.map +1 -0
- package/dist/src/integrations/acp/server.js +220 -0
- package/dist/src/integrations/acp/server.js.map +1 -0
- package/dist/src/integrations/custom-tools/index.d.ts +3 -0
- package/dist/src/integrations/custom-tools/index.d.ts.map +1 -0
- package/dist/src/integrations/custom-tools/index.js +2 -0
- package/dist/src/integrations/custom-tools/index.js.map +1 -0
- package/dist/src/integrations/custom-tools/loader.d.ts +16 -0
- package/dist/src/integrations/custom-tools/loader.d.ts.map +1 -0
- package/dist/src/integrations/custom-tools/loader.js +95 -0
- package/dist/src/integrations/custom-tools/loader.js.map +1 -0
- package/dist/src/integrations/mcp/client.d.ts +32 -0
- package/dist/src/integrations/mcp/client.d.ts.map +1 -0
- package/dist/src/integrations/mcp/client.js +117 -0
- package/dist/src/integrations/mcp/client.js.map +1 -0
- package/dist/src/integrations/mcp/index.d.ts +3 -0
- package/dist/src/integrations/mcp/index.d.ts.map +1 -0
- package/dist/src/integrations/mcp/index.js +2 -0
- package/dist/src/integrations/mcp/index.js.map +1 -0
- package/dist/src/security/doom-loop.d.ts +22 -0
- package/dist/src/security/doom-loop.d.ts.map +1 -0
- package/dist/src/security/doom-loop.js +72 -0
- package/dist/src/security/doom-loop.js.map +1 -0
- package/dist/src/security/index.d.ts +46 -0
- package/dist/src/security/index.d.ts.map +1 -0
- package/dist/src/security/index.js +362 -0
- package/dist/src/security/index.js.map +1 -0
- package/dist/src/security/path-safety.d.ts +15 -0
- package/dist/src/security/path-safety.d.ts.map +1 -0
- package/dist/src/security/path-safety.js +57 -0
- package/dist/src/security/path-safety.js.map +1 -0
- package/dist/src/security/permissions.d.ts +7 -0
- package/dist/src/security/permissions.d.ts.map +1 -0
- package/dist/src/security/permissions.js +41 -0
- package/dist/src/security/permissions.js.map +1 -0
- package/dist/src/security/read-tracker.d.ts +20 -0
- package/dist/src/security/read-tracker.d.ts.map +1 -0
- package/dist/src/security/read-tracker.js +73 -0
- package/dist/src/security/read-tracker.js.map +1 -0
- package/dist/src/security/ssrf-guard.d.ts +19 -0
- package/dist/src/security/ssrf-guard.d.ts.map +1 -0
- package/dist/src/security/ssrf-guard.js +98 -0
- package/dist/src/security/ssrf-guard.js.map +1 -0
- package/dist/src/security/types.d.ts +70 -0
- package/dist/src/security/types.d.ts.map +1 -0
- package/dist/src/security/types.js +2 -0
- package/dist/src/security/types.js.map +1 -0
- package/dist/src/security/wildcard.d.ts +5 -0
- package/dist/src/security/wildcard.d.ts.map +1 -0
- package/dist/src/security/wildcard.js +50 -0
- package/dist/src/security/wildcard.js.map +1 -0
- package/dist/src/services/auth-store.d.ts +25 -0
- package/dist/src/services/auth-store.d.ts.map +1 -0
- package/dist/src/services/auth-store.js +40 -0
- package/dist/src/services/auth-store.js.map +1 -0
- package/dist/src/services/config.d.ts +66 -0
- package/dist/src/services/config.d.ts.map +1 -0
- package/dist/src/services/config.js +83 -0
- package/dist/src/services/config.js.map +1 -0
- package/dist/src/services/context.d.ts +7 -0
- package/dist/src/services/context.d.ts.map +1 -0
- package/dist/src/services/context.js +23 -0
- package/dist/src/services/context.js.map +1 -0
- package/dist/src/services/custom-providers.d.ts +5 -0
- package/dist/src/services/custom-providers.d.ts.map +1 -0
- package/dist/src/services/custom-providers.js +213 -0
- package/dist/src/services/custom-providers.js.map +1 -0
- package/dist/src/services/session-store.d.ts +76 -0
- package/dist/src/services/session-store.d.ts.map +1 -0
- package/dist/src/services/session-store.js +199 -0
- package/dist/src/services/session-store.js.map +1 -0
- package/dist/src/services/snapshot-manager.d.ts +46 -0
- package/dist/src/services/snapshot-manager.d.ts.map +1 -0
- package/dist/src/services/snapshot-manager.js +183 -0
- package/dist/src/services/snapshot-manager.js.map +1 -0
- package/dist/src/tools/edit.d.ts +3 -0
- package/dist/src/tools/edit.d.ts.map +1 -0
- package/dist/src/tools/edit.js +57 -0
- package/dist/src/tools/edit.js.map +1 -0
- package/dist/src/tools/glob.d.ts +3 -0
- package/dist/src/tools/glob.d.ts.map +1 -0
- package/dist/src/tools/glob.js +46 -0
- package/dist/src/tools/glob.js.map +1 -0
- package/dist/src/tools/grep.d.ts +3 -0
- package/dist/src/tools/grep.d.ts.map +1 -0
- package/dist/src/tools/grep.js +50 -0
- package/dist/src/tools/grep.js.map +1 -0
- package/dist/src/tools/index.d.ts +26 -0
- package/dist/src/tools/index.d.ts.map +1 -0
- package/dist/src/tools/index.js +202 -0
- package/dist/src/tools/index.js.map +1 -0
- package/dist/src/tools/mcp-tool.d.ts +5 -0
- package/dist/src/tools/mcp-tool.d.ts.map +1 -0
- package/dist/src/tools/mcp-tool.js +82 -0
- package/dist/src/tools/mcp-tool.js.map +1 -0
- package/dist/src/tools/read.d.ts +3 -0
- package/dist/src/tools/read.d.ts.map +1 -0
- package/dist/src/tools/read.js +48 -0
- package/dist/src/tools/read.js.map +1 -0
- package/dist/src/tools/shell.d.ts +3 -0
- package/dist/src/tools/shell.d.ts.map +1 -0
- package/dist/src/tools/shell.js +266 -0
- package/dist/src/tools/shell.js.map +1 -0
- package/dist/src/tools/task.d.ts +3 -0
- package/dist/src/tools/task.d.ts.map +1 -0
- package/dist/src/tools/task.js +75 -0
- package/dist/src/tools/task.js.map +1 -0
- package/dist/src/tools/types.d.ts +18 -0
- package/dist/src/tools/types.d.ts.map +1 -0
- package/dist/src/tools/types.js +2 -0
- package/dist/src/tools/types.js.map +1 -0
- package/dist/src/tools/utils.d.ts +4 -0
- package/dist/src/tools/utils.d.ts.map +1 -0
- package/dist/src/tools/utils.js +10 -0
- package/dist/src/tools/utils.js.map +1 -0
- package/dist/src/tools/web-fetch.d.ts +3 -0
- package/dist/src/tools/web-fetch.d.ts.map +1 -0
- package/dist/src/tools/web-fetch.js +81 -0
- package/dist/src/tools/web-fetch.js.map +1 -0
- package/dist/src/tools/write.d.ts +3 -0
- package/dist/src/tools/write.d.ts.map +1 -0
- package/dist/src/tools/write.js +28 -0
- package/dist/src/tools/write.js.map +1 -0
- package/dist/src/tui/app-constants.d.ts +3 -0
- package/dist/src/tui/app-constants.d.ts.map +1 -0
- package/dist/src/tui/app-constants.js +4 -0
- package/dist/src/tui/app-constants.js.map +1 -0
- package/dist/src/tui/app.d.ts +5 -0
- package/dist/src/tui/app.d.ts.map +1 -0
- package/dist/src/tui/app.js +322 -0
- package/dist/src/tui/app.js.map +1 -0
- package/dist/src/tui/commands.d.ts +61 -0
- package/dist/src/tui/commands.d.ts.map +1 -0
- package/dist/src/tui/commands.js +95 -0
- package/dist/src/tui/commands.js.map +1 -0
- package/dist/src/tui/components/chat-area.d.ts +9 -0
- package/dist/src/tui/components/chat-area.d.ts.map +1 -0
- package/dist/src/tui/components/chat-area.js +12 -0
- package/dist/src/tui/components/chat-area.js.map +1 -0
- package/dist/src/tui/components/command-palette.d.ts +18 -0
- package/dist/src/tui/components/command-palette.d.ts.map +1 -0
- package/dist/src/tui/components/command-palette.js +50 -0
- package/dist/src/tui/components/command-palette.js.map +1 -0
- package/dist/src/tui/components/message.d.ts +9 -0
- package/dist/src/tui/components/message.d.ts.map +1 -0
- package/dist/src/tui/components/message.js +116 -0
- package/dist/src/tui/components/message.js.map +1 -0
- package/dist/src/tui/components/slash-autocomplete.d.ts +14 -0
- package/dist/src/tui/components/slash-autocomplete.d.ts.map +1 -0
- package/dist/src/tui/components/slash-autocomplete.js +29 -0
- package/dist/src/tui/components/slash-autocomplete.js.map +1 -0
- package/dist/src/tui/components/toast.d.ts +8 -0
- package/dist/src/tui/components/toast.d.ts.map +1 -0
- package/dist/src/tui/components/toast.js +29 -0
- package/dist/src/tui/components/toast.js.map +1 -0
- package/dist/src/tui/hooks/use-agent.d.ts +20 -0
- package/dist/src/tui/hooks/use-agent.d.ts.map +1 -0
- package/dist/src/tui/hooks/use-agent.js +129 -0
- package/dist/src/tui/hooks/use-agent.js.map +1 -0
- package/dist/src/tui/hooks/use-app-keyboard.d.ts +53 -0
- package/dist/src/tui/hooks/use-app-keyboard.d.ts.map +1 -0
- package/dist/src/tui/hooks/use-app-keyboard.js +155 -0
- package/dist/src/tui/hooks/use-app-keyboard.js.map +1 -0
- package/dist/src/tui/hooks/use-chat-submit.d.ts +61 -0
- package/dist/src/tui/hooks/use-chat-submit.d.ts.map +1 -0
- package/dist/src/tui/hooks/use-chat-submit.js +269 -0
- package/dist/src/tui/hooks/use-chat-submit.js.map +1 -0
- package/dist/src/tui/hooks/use-permission-queue.d.ts +10 -0
- package/dist/src/tui/hooks/use-permission-queue.d.ts.map +1 -0
- package/dist/src/tui/hooks/use-permission-queue.js +26 -0
- package/dist/src/tui/hooks/use-permission-queue.js.map +1 -0
- package/dist/src/tui/hooks/use-revert.d.ts +26 -0
- package/dist/src/tui/hooks/use-revert.d.ts.map +1 -0
- package/dist/src/tui/hooks/use-revert.js +88 -0
- package/dist/src/tui/hooks/use-revert.js.map +1 -0
- package/dist/src/tui/index.d.ts +5 -0
- package/dist/src/tui/index.d.ts.map +1 -0
- package/dist/src/tui/index.js +38 -0
- package/dist/src/tui/index.js.map +1 -0
- package/dist/src/tui/prompt-bar.d.ts +29 -0
- package/dist/src/tui/prompt-bar.d.ts.map +1 -0
- package/dist/src/tui/prompt-bar.js +41 -0
- package/dist/src/tui/prompt-bar.js.map +1 -0
- package/dist/src/tui/slash-commands.d.ts +20 -0
- package/dist/src/tui/slash-commands.d.ts.map +1 -0
- package/dist/src/tui/slash-commands.js +30 -0
- package/dist/src/tui/slash-commands.js.map +1 -0
- package/dist/src/tui/theme.d.ts +29 -0
- package/dist/src/tui/theme.d.ts.map +1 -0
- package/dist/src/tui/theme.js +54 -0
- package/dist/src/tui/theme.js.map +1 -0
- package/dist/src/tui/tips.d.ts +2 -0
- package/dist/src/tui/tips.d.ts.map +1 -0
- package/dist/src/tui/tips.js +40 -0
- package/dist/src/tui/tips.js.map +1 -0
- package/dist/src/tui/types.d.ts +34 -0
- package/dist/src/tui/types.d.ts.map +1 -0
- package/dist/src/tui/types.js +2 -0
- package/dist/src/tui/types.js.map +1 -0
- package/dist/src/tui/ui/about-dialog.d.ts +8 -0
- package/dist/src/tui/ui/about-dialog.d.ts.map +1 -0
- package/dist/src/tui/ui/about-dialog.js +21 -0
- package/dist/src/tui/ui/about-dialog.js.map +1 -0
- package/dist/src/tui/ui/agent-switcher.d.ts +10 -0
- package/dist/src/tui/ui/agent-switcher.d.ts.map +1 -0
- package/dist/src/tui/ui/agent-switcher.js +77 -0
- package/dist/src/tui/ui/agent-switcher.js.map +1 -0
- package/dist/src/tui/ui/debug-dialog.d.ts +15 -0
- package/dist/src/tui/ui/debug-dialog.d.ts.map +1 -0
- package/dist/src/tui/ui/debug-dialog.js +74 -0
- package/dist/src/tui/ui/debug-dialog.js.map +1 -0
- package/dist/src/tui/ui/doctor-dialog.d.ts +9 -0
- package/dist/src/tui/ui/doctor-dialog.d.ts.map +1 -0
- package/dist/src/tui/ui/doctor-dialog.js +45 -0
- package/dist/src/tui/ui/doctor-dialog.js.map +1 -0
- package/dist/src/tui/ui/manage-providers-dialog.d.ts +10 -0
- package/dist/src/tui/ui/manage-providers-dialog.d.ts.map +1 -0
- package/dist/src/tui/ui/manage-providers-dialog.js +257 -0
- package/dist/src/tui/ui/manage-providers-dialog.js.map +1 -0
- package/dist/src/tui/ui/mcp-toggle-dialog.d.ts +8 -0
- package/dist/src/tui/ui/mcp-toggle-dialog.d.ts.map +1 -0
- package/dist/src/tui/ui/mcp-toggle-dialog.js +89 -0
- package/dist/src/tui/ui/mcp-toggle-dialog.js.map +1 -0
- package/dist/src/tui/ui/message-controls.d.ts +16 -0
- package/dist/src/tui/ui/message-controls.d.ts.map +1 -0
- package/dist/src/tui/ui/message-controls.js +102 -0
- package/dist/src/tui/ui/message-controls.js.map +1 -0
- package/dist/src/tui/ui/model-switcher.d.ts +10 -0
- package/dist/src/tui/ui/model-switcher.d.ts.map +1 -0
- package/dist/src/tui/ui/model-switcher.js +139 -0
- package/dist/src/tui/ui/model-switcher.js.map +1 -0
- package/dist/src/tui/ui/permission-dialog.d.ts +12 -0
- package/dist/src/tui/ui/permission-dialog.d.ts.map +1 -0
- package/dist/src/tui/ui/permission-dialog.js +37 -0
- package/dist/src/tui/ui/permission-dialog.js.map +1 -0
- package/dist/src/tui/ui/provider-dialog.d.ts +11 -0
- package/dist/src/tui/ui/provider-dialog.d.ts.map +1 -0
- package/dist/src/tui/ui/provider-dialog.js +232 -0
- package/dist/src/tui/ui/provider-dialog.js.map +1 -0
- package/dist/src/tui/ui/session-list.d.ts +23 -0
- package/dist/src/tui/ui/session-list.d.ts.map +1 -0
- package/dist/src/tui/ui/session-list.js +147 -0
- package/dist/src/tui/ui/session-list.js.map +1 -0
- package/dist/src/tui/ui/thinking-effort-dialog.d.ts +11 -0
- package/dist/src/tui/ui/thinking-effort-dialog.d.ts.map +1 -0
- package/dist/src/tui/ui/thinking-effort-dialog.js +79 -0
- package/dist/src/tui/ui/thinking-effort-dialog.js.map +1 -0
- package/dist/src/tui/utils/model-config.d.ts +9 -0
- package/dist/src/tui/utils/model-config.d.ts.map +1 -0
- package/dist/src/tui/utils/model-config.js +63 -0
- package/dist/src/tui/utils/model-config.js.map +1 -0
- package/dist/src/tui/utils/session-messages.d.ts +22 -0
- package/dist/src/tui/utils/session-messages.d.ts.map +1 -0
- package/dist/src/tui/utils/session-messages.js +62 -0
- package/dist/src/tui/utils/session-messages.js.map +1 -0
- package/dist/src/tui/utils.d.ts +6 -0
- package/dist/src/tui/utils.d.ts.map +1 -0
- package/dist/src/tui/utils.js +23 -0
- package/dist/src/tui/utils.js.map +1 -0
- package/dist/src/tui/variant-cycle.d.ts +10 -0
- package/dist/src/tui/variant-cycle.d.ts.map +1 -0
- package/dist/src/tui/variant-cycle.js +64 -0
- package/dist/src/tui/variant-cycle.js.map +1 -0
- package/dist/src/utils/paths.d.ts +10 -0
- package/dist/src/utils/paths.d.ts.map +1 -0
- package/dist/src/utils/paths.js +106 -0
- package/dist/src/utils/paths.js.map +1 -0
- package/dist/src/utils/platform.d.ts +10 -0
- package/dist/src/utils/platform.d.ts.map +1 -0
- package/dist/src/utils/platform.js +133 -0
- package/dist/src/utils/platform.js.map +1 -0
- package/package.json +62 -0
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { getEffortLabel } from "./variant-cycle.js";
|
|
2
|
+
import { titlecase } from "./utils.js";
|
|
3
|
+
export function buildCmdItems(opts) {
|
|
4
|
+
const { renderer, sessionStore: s, sessionIdRef, hasModel, selectedModel, provider, mcpCount, customProviderCount, messagesLength, showThinking, showToolCalls, setRoute, setMessages, setStatus, setElapsedMs, setTokPerSec, setTokenUsage, setShowThinking, setShowToolCalls, setHomeKey, setNavKey, setDialogStep, currentEffort, selectedAgent, onSecurityReset } = opts;
|
|
5
|
+
return [
|
|
6
|
+
// Session
|
|
7
|
+
{ id: "new", label: "New Session", desc: "Start fresh", cat: "Session", slashName: "new", slashAliases: ["clear"], action: () => {
|
|
8
|
+
sessionIdRef.current = null;
|
|
9
|
+
setMessages(() => []);
|
|
10
|
+
setRoute("home");
|
|
11
|
+
setHomeKey(k => k + 1);
|
|
12
|
+
setNavKey(k => k + 1);
|
|
13
|
+
setStatus("New session");
|
|
14
|
+
setTimeout(() => setStatus("Ready"), 3000);
|
|
15
|
+
onSecurityReset?.();
|
|
16
|
+
} },
|
|
17
|
+
{ id: "sessions", label: "List Sessions", desc: "Browse saved sessions", cat: "Session", slashName: "sessions", slashAliases: ["resume", "continue"], action: () => { setDialogStep({ type: "session-list" }); } },
|
|
18
|
+
{ id: "delete-session", label: "Delete Session", desc: "Remove a saved session", cat: "Session", slashName: "delete-session", action: () => { setDialogStep({ type: "session-list", mode: "delete" }); } },
|
|
19
|
+
{ id: "rename-session", label: "Rename Session", desc: "Change session title", cat: "Session", slashName: "rename", action: () => { setDialogStep({ type: "session-list", mode: "rename" }); } },
|
|
20
|
+
{ id: "fork-session", label: "Fork Session", desc: "Copy session to new one", cat: "Session", slashName: "fork", action: () => {
|
|
21
|
+
const sid = opts.sessionIdRef.current;
|
|
22
|
+
if (!sid) {
|
|
23
|
+
setStatus("No active session");
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
const forked = s.fork(sid);
|
|
27
|
+
if (forked) {
|
|
28
|
+
sessionIdRef.current = forked.id;
|
|
29
|
+
opts.sessionIdRef.current = forked.id;
|
|
30
|
+
setStatus(`Forked: ${forked.title}`);
|
|
31
|
+
}
|
|
32
|
+
} },
|
|
33
|
+
{ id: "archive-session", label: "Archive Session", desc: "Move session to archive", cat: "Session", slashName: "archive", action: () => {
|
|
34
|
+
const sid = opts.sessionIdRef.current;
|
|
35
|
+
if (!sid) {
|
|
36
|
+
setStatus("No active session");
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
s.archive(sid);
|
|
40
|
+
sessionIdRef.current = null;
|
|
41
|
+
opts.sessionIdRef.current = null;
|
|
42
|
+
setMessages(() => []);
|
|
43
|
+
setRoute("home");
|
|
44
|
+
opts.setHomeKey?.((k) => k + 1);
|
|
45
|
+
setStatus("Session archived");
|
|
46
|
+
} },
|
|
47
|
+
{ id: "clear", label: "Clear", desc: "Clear conversation", cat: "Session", slashName: "clear", action: () => { setMessages(() => []); setStatus("Cleared"); } },
|
|
48
|
+
// Display
|
|
49
|
+
{ id: "toggle-thinking", label: `${showThinking ? "Hide" : "Show"} Thinking`, desc: showThinking ? "Hide thinking blocks" : "Show thinking blocks", cat: "Display", slashName: "thinking", slashAliases: ["toggle-thinking"], action: () => { setShowThinking((v) => !v); } },
|
|
50
|
+
{ id: "toggle-tools", label: `${showToolCalls ? "Hide" : "Show"} Tool Calls`, desc: showToolCalls ? "Hide tool call indicators" : "Show tool call indicators", cat: "Display", slashName: "tools", slashAliases: ["toggle-tools"], action: () => { setShowToolCalls((v) => !v); } },
|
|
51
|
+
// Provider
|
|
52
|
+
{ id: "provider", label: "Connect Provider", desc: hasModel ? "Switch API provider" : "No provider configured", cat: "Provider", slashName: "connect", slashAliases: ["provider"], action: () => { setDialogStep({ type: "provider" }); } },
|
|
53
|
+
{ id: "manage-providers", label: "Manage Providers", desc: `${opts.customProviderCount} custom provider${opts.customProviderCount !== 1 ? "s" : ""}`, cat: "Provider", slashName: "providers", action: () => { setDialogStep({ type: "manage-providers" }); } },
|
|
54
|
+
// Model
|
|
55
|
+
{ id: "switch-model", label: "Switch Model", desc: selectedModel || "No model selected", cat: "Agent", slashName: "model", slashAliases: ["models", "switch-model"], action: () => {
|
|
56
|
+
setDialogStep({ type: "switch-model" });
|
|
57
|
+
} },
|
|
58
|
+
{ id: "switch-agent", label: "Switch Agent", desc: titlecase(selectedAgent || "build"), cat: "Agent", slashName: "agent", slashAliases: ["agents", "switch-agent"], action: () => {
|
|
59
|
+
setDialogStep({ type: "switch-agent" });
|
|
60
|
+
} },
|
|
61
|
+
{ id: "cycle-effort", label: "Thinking effort cycle", desc: `effort: ${getEffortLabel(currentEffort)}`, cat: "Agent", slashName: "effort", slashAliases: ["cycle-effort", "variant"], action: () => { opts.onCycleVariant(); } },
|
|
62
|
+
{ id: "change-effort", label: "Change Thinking effort", desc: `set to ${getEffortLabel(currentEffort)}`, cat: "Agent", slashName: "thinking-effort", slashAliases: ["change-effort"], action: () => {
|
|
63
|
+
setDialogStep({ type: "thinking-effort" });
|
|
64
|
+
} },
|
|
65
|
+
{ id: "toggle-mcp", label: "Toggle MCPs", desc: `${opts.mcpCount} connected`, cat: "Agent", slashName: "mcp", slashAliases: ["toggle-mcp"], action: () => {
|
|
66
|
+
setDialogStep({ type: "toggle-mcp" });
|
|
67
|
+
} },
|
|
68
|
+
// Navigation
|
|
69
|
+
{ id: "home", label: "Go Home", desc: "Return to home", cat: "Navigation", slashName: "home", action: () => { setRoute("home"); } },
|
|
70
|
+
// System
|
|
71
|
+
{ id: "doctor", label: "Doctor", desc: "Run health check", cat: "System", slashName: "doctor", action: () => {
|
|
72
|
+
setDialogStep({ type: "doctor", result: null });
|
|
73
|
+
import("../commands/doctor.js").then((m) => m.runDoctor().then((result) => {
|
|
74
|
+
setDialogStep({ type: "doctor", result });
|
|
75
|
+
}));
|
|
76
|
+
} },
|
|
77
|
+
{ id: "debug", label: "Debug", desc: "System information", cat: "System", slashName: "debug", action: () => { setDialogStep({ type: "debug" }); } },
|
|
78
|
+
{ id: "about", label: "About", desc: "Version info", cat: "System", slashName: "about", action: () => { setDialogStep({ type: "about" }); } },
|
|
79
|
+
{ id: "help", label: "Help", desc: "Keyboard shortcuts", cat: "System", slashName: "help", action: () => { setStatus("Esc quit · Tab agents · Ctrl+P palette · Ctrl+L clear"); setTimeout(() => setStatus("Ready"), 4000); } },
|
|
80
|
+
{ id: "quit", label: "Quit", desc: "Exit", cat: "System", slashName: "exit", slashAliases: ["quit", "q"], action: () => renderer.destroy() },
|
|
81
|
+
];
|
|
82
|
+
}
|
|
83
|
+
export function collectSlashNames(items) {
|
|
84
|
+
const names = new Set();
|
|
85
|
+
for (const item of items) {
|
|
86
|
+
if (item.slashName)
|
|
87
|
+
names.add(item.slashName);
|
|
88
|
+
if (item.slashAliases) {
|
|
89
|
+
for (const alias of item.slashAliases)
|
|
90
|
+
names.add(alias);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return names;
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../../src/tui/commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ChatMessage } from "../types.js";
|
|
2
|
+
export declare function ChatArea({ messages, showThinking, showToolCalls, revertPoint, onMessageClick }: {
|
|
3
|
+
messages: ChatMessage[];
|
|
4
|
+
showThinking?: boolean;
|
|
5
|
+
showToolCalls?: boolean;
|
|
6
|
+
revertPoint?: string | null;
|
|
7
|
+
onMessageClick?: (msg: ChatMessage) => void;
|
|
8
|
+
}): import("react").ReactNode;
|
|
9
|
+
//# sourceMappingURL=chat-area.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-area.d.ts","sourceRoot":"","sources":["../../../../src/tui/components/chat-area.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAE9C,wBAAgB,QAAQ,CAAC,EAAE,QAAQ,EAAE,YAAmB,EAAE,aAAoB,EAAE,WAAW,EAAE,cAAc,EAAE,EAAE;IAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,IAAI,CAAA;CAAE,6BA0BpQ"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "@opentui/react/jsx-runtime";
|
|
2
|
+
import { c } from "../theme.js";
|
|
3
|
+
import { MessageView } from "./message.js";
|
|
4
|
+
export function ChatArea({ messages, showThinking = true, showToolCalls = true, revertPoint, onMessageClick }) {
|
|
5
|
+
const visible = messages.filter((msg) => {
|
|
6
|
+
if (msg.role === "tool" && !showToolCalls)
|
|
7
|
+
return false;
|
|
8
|
+
return true;
|
|
9
|
+
});
|
|
10
|
+
return (_jsx("box", { flexDirection: "column", children: _jsxs("scrollbox", { flexGrow: 1, stickyScroll: true, stickyStart: "bottom", scrollY: true, backgroundColor: c.bg, viewportCulling: false, focusable: false, verticalScrollbarOptions: { trackOptions: { backgroundColor: c.sbTrack, foregroundColor: c.sbThumb } }, children: [_jsx("box", { height: 1 }), visible.length === 0 ? (_jsxs("box", { flexDirection: "column", alignItems: "center", justifyContent: "center", flexGrow: 1, children: [_jsx("text", { fg: c.dim, children: "No messages yet" }), _jsx("text", { fg: c.dim, children: "Type below to start chatting" })] })) : visible.map((msg, i) => (_jsx(MessageView, { msg: msg, showThinking: showThinking, isFirst: i === 0, isRevertPoint: msg.id === revertPoint, onClick: msg.role === "user" ? () => onMessageClick?.(msg) : undefined }, msg.id)))] }) }));
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=chat-area.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-area.js","sourceRoot":"","sources":["../../../../src/tui/components/chat-area.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,aAAa,CAAA;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAG1C,MAAM,UAAU,QAAQ,CAAC,EAAE,QAAQ,EAAE,YAAY,GAAG,IAAI,EAAE,aAAa,GAAG,IAAI,EAAE,WAAW,EAAE,cAAc,EAA0J;IACnQ,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;QACtC,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,aAAa;YAAE,OAAO,KAAK,CAAA;QACvD,OAAO,IAAI,CAAA;IACb,CAAC,CAAC,CAAA;IAEF,OAAO,CACL,cAAK,aAAa,EAAC,QAAQ,YACzB,qBAAW,QAAQ,EAAE,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,EAAC,QAAQ,EAAC,OAAO,EAAE,IAAI,EAC5E,eAAe,EAAE,CAAC,CAAC,EAAE,EAAE,eAAe,EAAE,KAAK,EAC7C,SAAS,EAAE,KAAK,EAChB,wBAAwB,EAAE,EAAE,YAAY,EAAE,EAAE,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,aACtG,cAAK,MAAM,EAAE,CAAC,GAAI,EACjB,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CACtB,eAAK,aAAa,EAAC,QAAQ,EAAC,UAAU,EAAC,QAAQ,EAAC,cAAc,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,aACjF,eAAM,EAAE,EAAE,CAAC,CAAC,GAAG,gCAAwB,EACvC,eAAM,EAAE,EAAE,CAAC,CAAC,GAAG,6CAAqC,IAChD,CACP,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAC1B,KAAC,WAAW,IAAc,GAAG,EAAE,GAAG,EAAE,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC,EAC9E,aAAa,EAAE,GAAG,CAAC,EAAE,KAAK,WAAW,EACrC,OAAO,EAAE,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,IAFtD,GAAG,CAAC,EAAE,CAEoD,CAC7E,CAAC,IACQ,GACR,CACP,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export interface CmdItem {
|
|
2
|
+
id: string;
|
|
3
|
+
label: string;
|
|
4
|
+
desc: string;
|
|
5
|
+
cat?: string;
|
|
6
|
+
action: () => void;
|
|
7
|
+
slashName?: string;
|
|
8
|
+
slashAliases?: string[];
|
|
9
|
+
}
|
|
10
|
+
export interface CommandPaletteProps {
|
|
11
|
+
filter: string;
|
|
12
|
+
selected: number;
|
|
13
|
+
items: CmdItem[];
|
|
14
|
+
termWidth: number;
|
|
15
|
+
termHeight: number;
|
|
16
|
+
}
|
|
17
|
+
export declare function CommandPalette(props: CommandPaletteProps): import("react").ReactNode;
|
|
18
|
+
//# sourceMappingURL=command-palette.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-palette.d.ts","sourceRoot":"","sources":["../../../../src/tui/components/command-palette.tsx"],"names":[],"mappings":"AAGA,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,OAAO,EAAE,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,6BA6FxD"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "@opentui/react/jsx-runtime";
|
|
2
|
+
import { useRef, useEffect, useMemo } from "react";
|
|
3
|
+
import { c } from "../theme.js";
|
|
4
|
+
export function CommandPalette(props) {
|
|
5
|
+
const { filter, selected, items, termWidth, termHeight } = props;
|
|
6
|
+
const scrollRef = useRef(null);
|
|
7
|
+
const mw = Math.min(64, termWidth - 4);
|
|
8
|
+
const ml = Math.floor((termWidth - mw) / 2);
|
|
9
|
+
const mh = Math.min(22, termHeight - 4);
|
|
10
|
+
const mt = Math.max(1, Math.floor((termHeight - mh) / 2));
|
|
11
|
+
const innerW = mw - 4;
|
|
12
|
+
const listH = mh - 5;
|
|
13
|
+
const rows = useMemo(() => {
|
|
14
|
+
const r = [];
|
|
15
|
+
let prevCat = "";
|
|
16
|
+
for (let i = 0; i < items.length; i++) {
|
|
17
|
+
const item = items[i];
|
|
18
|
+
if (item.cat && item.cat !== prevCat) {
|
|
19
|
+
if (prevCat) {
|
|
20
|
+
r.push(_jsx("box", { height: 1, backgroundColor: c.bgCard }, `gap-${i}`));
|
|
21
|
+
}
|
|
22
|
+
prevCat = item.cat;
|
|
23
|
+
r.push(_jsx("box", { height: 1, paddingLeft: 2, backgroundColor: c.bgCard, children: _jsx("text", { fg: c.warn, attributes: 1, children: item.cat }) }, `cat-${i}`));
|
|
24
|
+
}
|
|
25
|
+
const isSelected = i === selected;
|
|
26
|
+
r.push(_jsxs("box", { id: item.id, height: 1, paddingLeft: 2, paddingRight: 1, backgroundColor: isSelected ? c.bgSelect : c.bgCard, flexDirection: "row", justifyContent: "space-between", alignItems: "center", children: [_jsx("text", { fg: isSelected ? c.accent : c.text, overflow: "hidden", wrapMode: "none", flexGrow: 1, children: item.label }), _jsx("text", { fg: c.dim, flexShrink: 0, children: item.desc })] }, item.id));
|
|
27
|
+
}
|
|
28
|
+
return r;
|
|
29
|
+
}, [items, selected]);
|
|
30
|
+
useEffect(() => {
|
|
31
|
+
if (!scrollRef.current || !items[selected])
|
|
32
|
+
return;
|
|
33
|
+
const el = scrollRef.current;
|
|
34
|
+
if (typeof el.scrollChildIntoView === "function") {
|
|
35
|
+
el.scrollChildIntoView(items[selected].id);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
const child = el.getChildren?.()?.find?.((ch) => ch.id === items[selected].id);
|
|
39
|
+
if (child) {
|
|
40
|
+
const y = child.y - (el.y || 0);
|
|
41
|
+
if (y >= (el.height || listH))
|
|
42
|
+
el.scrollBy?.(y - (el.height || listH) + 1);
|
|
43
|
+
if (y < 0)
|
|
44
|
+
el.scrollBy?.(y);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}, [selected, items, listH]);
|
|
48
|
+
return (_jsx("box", { position: "absolute", left: 0, right: 0, top: 0, bottom: 0, backgroundColor: c.bgOverlay, children: _jsxs("box", { position: "absolute", left: ml, top: mt, width: mw, height: mh, backgroundColor: c.bgCard, children: [_jsxs("box", { height: 1, paddingX: 2, paddingTop: 1, flexDirection: "row", justifyContent: "space-between", alignItems: "center", children: [_jsxs("box", { flexDirection: "row", gap: 1, alignItems: "center", children: [_jsx("text", { fg: c.accent, children: ">" }), _jsx("text", { fg: c.text, children: filter || "Type to filter..." })] }), _jsx("box", { flexDirection: "row", height: 1, children: _jsx("text", { fg: c.dim, children: "esc" }) })] }), _jsx("box", { height: 1 }), _jsx("box", { height: 1, paddingX: 2, children: _jsx("text", { fg: c.border, children: "─".repeat(innerW) }) }), _jsx("scrollbox", { ref: (r) => { scrollRef.current = r; }, paddingX: 1, maxHeight: listH, scrollY: true, scrollbarOptions: { visible: false }, children: _jsx("box", { flexDirection: "column", children: rows.length === 0 ? (_jsx("box", { height: 1, paddingX: 1, backgroundColor: c.bgCard, children: _jsx("text", { fg: c.dim, children: "No matching commands" }) })) : rows }) }), _jsx("box", { paddingX: 2, paddingTop: 1, paddingBottom: 1, flexDirection: "row", justifyContent: "center", children: _jsxs("text", { fg: c.dim, children: ["\u2191\u2193", " navigate \u00B7 ", "\u23CE", " select \u00B7 esc close"] }) })] }) }));
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=command-palette.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-palette.js","sourceRoot":"","sources":["../../../../src/tui/components/command-palette.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ChatMessage } from "../types.js";
|
|
2
|
+
export declare function MessageView({ msg, showThinking, isFirst, isRevertPoint, onClick }: {
|
|
3
|
+
msg: ChatMessage;
|
|
4
|
+
showThinking?: boolean;
|
|
5
|
+
isFirst?: boolean;
|
|
6
|
+
isRevertPoint?: boolean;
|
|
7
|
+
onClick?: () => void;
|
|
8
|
+
}): import("react").ReactNode;
|
|
9
|
+
//# sourceMappingURL=message.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../../../src/tui/components/message.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAgB,MAAM,aAAa,CAAA;AA6C5D,wBAAgB,WAAW,CAAC,EAAE,GAAG,EAAE,YAAmB,EAAE,OAAe,EAAE,aAAqB,EAAE,OAAO,EAAE,EAAE;IAAE,GAAG,EAAE,WAAW,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CAAE,6BAkNxN"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { jsxs as _jsxs, jsx as _jsx, Fragment as _Fragment } from "@opentui/react/jsx-runtime";
|
|
2
|
+
import { useState } from "react";
|
|
3
|
+
import { c, mdStyle } from "../theme.js";
|
|
4
|
+
import stripAnsi from "strip-ansi";
|
|
5
|
+
// OpenCode-style SplitBorder — only vertical bar on the left
|
|
6
|
+
const SB = {
|
|
7
|
+
vertical: "┃", topLeft: "", bottomLeft: "", topRight: "", bottomRight: "",
|
|
8
|
+
horizontal: " ", bottomT: "", topT: "", cross: "", leftT: "", rightT: "",
|
|
9
|
+
};
|
|
10
|
+
const MAX_SHELL_LINES = 10;
|
|
11
|
+
const MAX_GENERIC_LINES = 3;
|
|
12
|
+
function InlineTool(props) {
|
|
13
|
+
return (_jsxs("box", { flexDirection: "row", paddingLeft: 3, marginTop: props.marginTop ?? 0, children: [_jsxs("text", { fg: props.color || c.tool, children: [props.icon, " "] }), _jsx("text", { fg: c.dim, children: props.title }), props.meta ? _jsxs("text", { fg: c.dim, children: [" ", props.meta] }) : null] }));
|
|
14
|
+
}
|
|
15
|
+
function BlockTool(props) {
|
|
16
|
+
return (_jsxs("box", { flexDirection: "column", paddingTop: 1, paddingBottom: 1, paddingLeft: 2, marginTop: props.marginTop ?? 1, gap: 1, backgroundColor: c.bgTool, border: ["left"], customBorderChars: SB, borderColor: c.bg, children: [_jsx("text", { fg: props.titleColor || c.tool, paddingLeft: 1, children: props.title }), _jsx("box", { paddingLeft: 2, children: props.children })] }));
|
|
17
|
+
}
|
|
18
|
+
function TruncatedContent(props) {
|
|
19
|
+
const [expanded, setExpanded] = useState(false);
|
|
20
|
+
const lines = props.text.split("\n");
|
|
21
|
+
const overflow = lines.length > props.maxLines;
|
|
22
|
+
const display = expanded || !overflow ? props.text : lines.slice(0, props.maxLines).join("\n") + "\n…";
|
|
23
|
+
return (_jsxs("box", { flexDirection: "column", onMouseDown: overflow ? () => setExpanded(!expanded) : undefined, children: [_jsx("text", { fg: c.text, children: display }), overflow ? _jsx("text", { fg: c.dim, children: expanded ? "click to collapse" : "click to expand" }) : null] }));
|
|
24
|
+
}
|
|
25
|
+
export function MessageView({ msg, showThinking = true, isFirst = false, isRevertPoint = false, onClick }) {
|
|
26
|
+
const mt = isFirst ? 0 : 1;
|
|
27
|
+
if (msg.role === "user") {
|
|
28
|
+
return (_jsxs("box", { flexDirection: "column", marginTop: mt, backgroundColor: c.bg, border: ["left"], customBorderChars: SB, borderColor: isRevertPoint ? c.warn : c.user, paddingLeft: 2, paddingRight: 1, onMouseUp: onClick, children: [_jsx("text", { fg: c.user, attributes: 1, children: "You" }), _jsx("text", { fg: c.text, children: msg.content }), isRevertPoint && (_jsxs("box", { flexDirection: "row", marginTop: 1, gap: 1, children: [_jsx("text", { fg: c.warn, children: "\u238C" }), _jsx("text", { fg: c.dim, children: "Messages after this point were reverted" })] }))] }));
|
|
29
|
+
}
|
|
30
|
+
if (msg.role === "assistant") {
|
|
31
|
+
// Build turn footer: agent · model · duration · status
|
|
32
|
+
const agentName = msg.agent || "build";
|
|
33
|
+
const showFooter = !msg.streaming && (msg.turnStatus || msg.turnTokens);
|
|
34
|
+
const isInterrupted = msg.turnStatus === "interrupted";
|
|
35
|
+
const isError = msg.turnStatus === "error";
|
|
36
|
+
const durationStr = msg.turnDurationMs && msg.turnDurationMs > 1000
|
|
37
|
+
? `${(msg.turnDurationMs / 1000).toFixed(1)}s`
|
|
38
|
+
: msg.turnDurationMs
|
|
39
|
+
? `${msg.turnDurationMs}ms`
|
|
40
|
+
: null;
|
|
41
|
+
const tokensStr = msg.turnTokens
|
|
42
|
+
? `↑${msg.turnTokens.input} ↓${msg.turnTokens.output}`
|
|
43
|
+
: null;
|
|
44
|
+
return (_jsxs("box", { flexDirection: "column", marginTop: mt, children: [msg.blocks && msg.blocks.length === 0 && msg.streaming ? (_jsx("text", { fg: c.dim, paddingLeft: 2, children: "(streaming...)" })) : null, msg.blocks ? (_jsx("box", { flexDirection: "column", paddingLeft: 3, children: (() => {
|
|
45
|
+
const thinkBlocks = msg.blocks.filter((b) => b.type === "thinking");
|
|
46
|
+
const textBlocks = msg.blocks.filter((b) => b.type === "text");
|
|
47
|
+
const mdContent = textBlocks.map((b) => b.content).join("\n");
|
|
48
|
+
const hasThinking = showThinking && thinkBlocks.length > 0;
|
|
49
|
+
return (_jsxs(_Fragment, { children: [hasThinking && thinkBlocks.map((block, i) => (_jsx("box", { marginTop: i === 0 ? 0 : 1, children: _jsx("text", { fg: c.dim, children: block.content }) }, `think-${i}`))), mdContent ? _jsx("markdown", { content: mdContent, syntaxStyle: mdStyle, streaming: !!msg.streaming, conceal: true, width: "100%", tableOptions: { style: "grid", borders: true, borderStyle: "single" }, marginTop: hasThinking ? 1 : 0 }) : null] }));
|
|
50
|
+
})() })) : (_jsx("text", { fg: isInterrupted ? c.dim : c.text, paddingLeft: 3, children: msg.content })), showFooter && (_jsxs("box", { flexDirection: "column", paddingLeft: 3, marginTop: 1, children: [(isInterrupted || isError) && (_jsx("box", { height: 1, flexDirection: "row", justifyContent: "center", marginBottom: 1, children: _jsxs("text", { fg: isInterrupted ? c.warn : c.error, children: ["─".repeat(16), " ", isInterrupted ? "⊘ interrupted" : "✖ error", " ", "─".repeat(16)] }) })), _jsxs("box", { flexDirection: "row", gap: 1, children: [_jsx("text", { fg: c.accent, children: "\u25A3" }), _jsx("text", { fg: c.text, children: agentName }), msg.model && _jsxs("text", { fg: c.dim, children: ["\u00B7 ", msg.model] }), durationStr && _jsxs("text", { fg: c.dim, children: ["\u00B7 ", durationStr] }), tokensStr && _jsxs("text", { fg: c.dim, children: ["\u00B7 ", tokensStr] }), !isInterrupted && !isError && msg.turnStatus === "completed" && _jsx("text", { fg: c.success, children: "\u00B7 done" })] })] }))] }));
|
|
51
|
+
}
|
|
52
|
+
if (msg.role === "tool") {
|
|
53
|
+
const raw = msg.meta || "";
|
|
54
|
+
const tName = raw.includes("(") ? raw.split("(")[0] : raw;
|
|
55
|
+
const rawArgs = raw.includes("(") ? raw.slice(raw.indexOf("(") + 1, raw.lastIndexOf(")")) : "";
|
|
56
|
+
// Parse args: try JSON first, fall back to raw string
|
|
57
|
+
let argsObj = {};
|
|
58
|
+
let argsStr = rawArgs;
|
|
59
|
+
try {
|
|
60
|
+
const parsed = JSON.parse(rawArgs);
|
|
61
|
+
if (typeof parsed === "object" && parsed !== null) {
|
|
62
|
+
argsObj = parsed;
|
|
63
|
+
argsStr = Object.values(parsed).filter(v => v !== undefined && v !== "undefined").map(v => String(v)).join(" ");
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
if (argsStr === "undefined")
|
|
68
|
+
argsStr = "";
|
|
69
|
+
}
|
|
70
|
+
const output = stripAnsi(msg.content || "");
|
|
71
|
+
const isReadingTool = ["read", "glob", "grep"].includes(tName);
|
|
72
|
+
// Reading tools: only show inline indicator, never show output
|
|
73
|
+
if (isReadingTool) {
|
|
74
|
+
const displayTitle = argsStr ? `${tName === "read" ? "Read" : tName === "glob" ? "Glob" : "Grep"} ${argsStr}` : tName;
|
|
75
|
+
return _jsx(InlineTool, { icon: tName === "read" ? "→" : "", title: displayTitle, color: tName === "read" ? c.info : c.tool, marginTop: mt });
|
|
76
|
+
}
|
|
77
|
+
if (tName === "task") {
|
|
78
|
+
const subagentType = argsObj?.subagent_type || "subagent";
|
|
79
|
+
const description = argsObj?.description || "";
|
|
80
|
+
const title = `@${subagentType} ${description}`.slice(0, 60);
|
|
81
|
+
if (!output) {
|
|
82
|
+
return (_jsxs("box", { flexDirection: "row", paddingLeft: 2, marginTop: mt, gap: 1, children: [_jsx("text", { fg: c.thinking, children: "\u25C6" }), _jsx("text", { fg: c.dim, children: title }), _jsx("text", { fg: c.accent, children: "(running...)" })] }));
|
|
83
|
+
}
|
|
84
|
+
return (_jsxs("box", { flexDirection: "column", paddingTop: 1, paddingBottom: 1, paddingLeft: 2, marginTop: mt, gap: 1, backgroundColor: c.bgTool, border: ["left"], customBorderChars: SB, borderColor: c.thinking, children: [_jsxs("box", { flexDirection: "row", gap: 1, paddingLeft: 1, children: [_jsx("text", { fg: c.thinking, children: "\u25C6" }), _jsx("text", { fg: c.dim, children: title }), _jsx("text", { fg: c.success, children: "(done)" })] }), _jsx("box", { paddingLeft: 2, children: _jsx("markdown", { content: output, syntaxStyle: mdStyle, conceal: true, width: "100%", tableOptions: { style: "grid", borders: true, borderStyle: "single" } }) })] }));
|
|
85
|
+
}
|
|
86
|
+
if (tName === "bash" || tName === "shell") {
|
|
87
|
+
const command = argsObj?.command || argsStr;
|
|
88
|
+
const description = argsObj?.description;
|
|
89
|
+
if (!output)
|
|
90
|
+
return _jsx(InlineTool, { icon: "$", title: command || "shell", color: c.tool, marginTop: mt });
|
|
91
|
+
const exitCode = msg.exitCode ?? null;
|
|
92
|
+
const exitColor = exitCode === 0 ? c.success : c.error;
|
|
93
|
+
return (_jsxs("box", { flexDirection: "column", paddingTop: 1, paddingBottom: 1, paddingLeft: 2, marginTop: mt, gap: 1, backgroundColor: c.bgTool, border: ["left"], customBorderChars: SB, borderColor: c.bg, children: [_jsxs("box", { flexDirection: "row", justifyContent: "space-between", alignItems: "flex-start", paddingLeft: 1, children: [_jsxs("box", { flexDirection: "column", gap: 1, children: [description ? _jsx("text", { fg: c.info, attributes: 1, children: description }) : null, _jsxs("text", { fg: c.tool, children: ["$ ", command] })] }), exitCode !== null && _jsxs("text", { fg: exitColor, children: ["Exit ", exitCode] })] }), _jsx("box", { paddingLeft: 2, children: _jsx(TruncatedContent, { text: output, maxLines: MAX_SHELL_LINES }) })] }));
|
|
94
|
+
}
|
|
95
|
+
if (tName === "write") {
|
|
96
|
+
const displayTitle = argsStr ? `Wrote ${argsStr}` : "Wrote";
|
|
97
|
+
return (_jsx(BlockTool, { title: displayTitle, titleColor: c.success, marginTop: mt, children: _jsx("text", { fg: c.dim, children: "File written" }) }));
|
|
98
|
+
}
|
|
99
|
+
if (tName === "edit") {
|
|
100
|
+
const displayTitle = argsStr ? `Edit ${argsStr}` : "Edit";
|
|
101
|
+
return (_jsx(BlockTool, { title: displayTitle, titleColor: c.thinking, marginTop: mt, children: _jsx("text", { fg: c.dim, children: "Edit applied" }) }));
|
|
102
|
+
}
|
|
103
|
+
if (tName === "web_fetch") {
|
|
104
|
+
const displayTitle = argsStr ? `Fetch ${argsStr}` : "Fetch";
|
|
105
|
+
if (!output)
|
|
106
|
+
return _jsx(InlineTool, { icon: "\u2197", title: displayTitle, color: c.info, marginTop: mt });
|
|
107
|
+
return (_jsx(BlockTool, { title: displayTitle, titleColor: c.info, marginTop: mt, children: _jsx(TruncatedContent, { text: output, maxLines: MAX_GENERIC_LINES }) }));
|
|
108
|
+
}
|
|
109
|
+
if (!output)
|
|
110
|
+
return _jsx(InlineTool, { icon: "\u2699", title: raw, color: c.tool, marginTop: mt });
|
|
111
|
+
const displayTitle = argsStr ? `${tName} ${argsStr}` : tName;
|
|
112
|
+
return (_jsx(BlockTool, { title: displayTitle, titleColor: c.tool, marginTop: mt, children: _jsx(TruncatedContent, { text: output, maxLines: MAX_GENERIC_LINES }) }));
|
|
113
|
+
}
|
|
114
|
+
return (_jsx("box", { paddingLeft: 2, border: ["left"], customBorderChars: SB, borderColor: c.error, marginTop: mt, children: _jsxs("text", { fg: c.error, children: [_jsx("strong", { children: "Error:" }), " ", msg.content] }) }));
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=message.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message.js","sourceRoot":"","sources":["../../../../src/tui/components/message.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { CmdItem } from "./command-palette.js";
|
|
2
|
+
export interface SlashAutocompleteProps {
|
|
3
|
+
query: string;
|
|
4
|
+
selected: number;
|
|
5
|
+
items: CmdItem[];
|
|
6
|
+
termWidth: number;
|
|
7
|
+
termHeight: number;
|
|
8
|
+
route: "home" | "chat";
|
|
9
|
+
promptTop?: number;
|
|
10
|
+
promptLeft?: number;
|
|
11
|
+
promptWidth?: number;
|
|
12
|
+
}
|
|
13
|
+
export declare function SlashAutocomplete(props: SlashAutocompleteProps): import("react").ReactNode;
|
|
14
|
+
//# sourceMappingURL=slash-autocomplete.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slash-autocomplete.d.ts","sourceRoot":"","sources":["../../../../src/tui/components/slash-autocomplete.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAEnD,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,OAAO,EAAE,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;IACtB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAID,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,6BAuE9D"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { jsxs as _jsxs, jsx as _jsx } from "@opentui/react/jsx-runtime";
|
|
2
|
+
import { useMemo } from "react";
|
|
3
|
+
import { c } from "../theme.js";
|
|
4
|
+
const MAX_ITEMS = 8;
|
|
5
|
+
export function SlashAutocomplete(props) {
|
|
6
|
+
const { query, selected, items, termWidth, termHeight, route, promptTop, promptLeft, promptWidth } = props;
|
|
7
|
+
const count = Math.min(items.length, MAX_ITEMS);
|
|
8
|
+
if (count === 0)
|
|
9
|
+
return null;
|
|
10
|
+
const mw = Math.min(50, termWidth - 8);
|
|
11
|
+
const mh = count + 4;
|
|
12
|
+
const isChat = route === "chat";
|
|
13
|
+
const menuLeft = promptLeft ?? 3;
|
|
14
|
+
const menuWidth = promptWidth ?? mw;
|
|
15
|
+
const menuTop = isChat
|
|
16
|
+
? (promptTop ?? termHeight) - mh - 1
|
|
17
|
+
: Math.floor(termHeight / 2) - mh - 2;
|
|
18
|
+
const rows = useMemo(() => {
|
|
19
|
+
const r = [];
|
|
20
|
+
for (let i = 0; i < count; i++) {
|
|
21
|
+
const item = items[i];
|
|
22
|
+
const isSel = i === selected;
|
|
23
|
+
r.push(_jsxs("box", { height: 1, paddingLeft: 1, paddingRight: 1, backgroundColor: isSel ? c.bgSelect : c.bgCard, flexDirection: "row", justifyContent: "space-between", alignItems: "center", children: [_jsxs("box", { flexDirection: "row", gap: 1, children: [_jsxs("text", { fg: isSel ? c.accent : c.dim, children: ["/", item.slashName || item.id] }), item.label && item.label !== (item.slashName || item.id) && (_jsx("text", { fg: c.subtext, children: item.label }))] }), _jsx("text", { fg: c.dim, children: item.desc })] }, item.id));
|
|
24
|
+
}
|
|
25
|
+
return r;
|
|
26
|
+
}, [items, selected, count]);
|
|
27
|
+
return (_jsxs("box", { position: "absolute", left: menuLeft, top: menuTop, width: menuWidth, height: mh, zIndex: 100, backgroundColor: c.bgCard, children: [_jsxs("box", { height: 1, paddingLeft: 1, paddingRight: 1, flexDirection: "row", justifyContent: "space-between", alignItems: "center", children: [_jsxs("box", { flexDirection: "row", gap: 1, children: [_jsx("text", { fg: c.accent, children: "/" }), _jsx("text", { fg: c.text, children: query })] }), _jsx("box", { flexDirection: "row", gap: 1, height: 1, children: _jsx("text", { fg: c.dim, children: "tab" }) })] }), _jsx("box", { height: 1, paddingLeft: 1, paddingRight: 1, children: _jsx("text", { fg: c.border, children: "─".repeat(menuWidth - 2) }) }), _jsx("box", { flexDirection: "column", children: rows }), items.length > MAX_ITEMS && (_jsx("box", { height: 1, paddingLeft: 1, children: _jsxs("text", { fg: c.dim, children: ["...", items.length - MAX_ITEMS, " more"] }) })), _jsxs("box", { height: 1, paddingLeft: 1, paddingRight: 1, flexDirection: "row", justifyContent: "space-between", children: [_jsxs("text", { fg: c.dim, children: ["\u2191\u2193", " navigate"] }), _jsx("text", { fg: c.dim, children: "esc dismiss" })] })] }));
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=slash-autocomplete.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slash-autocomplete.js","sourceRoot":"","sources":["../../../../src/tui/components/slash-autocomplete.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export interface Toast {
|
|
2
|
+
id: string;
|
|
3
|
+
message: string;
|
|
4
|
+
variant: "info" | "success" | "warn" | "error";
|
|
5
|
+
}
|
|
6
|
+
export declare function showToast(message: string, variant?: Toast["variant"]): void;
|
|
7
|
+
export declare function ToastContainer(): import("react").ReactNode;
|
|
8
|
+
//# sourceMappingURL=toast.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toast.d.ts","sourceRoot":"","sources":["../../../../src/tui/components/toast.tsx"],"names":[],"mappings":"AAGA,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,CAAA;CAC/C;AAID,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,KAAK,CAAC,SAAS,CAAU,QAG5E;AAED,wBAAgB,cAAc,8BA6B7B"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { jsx as _jsx } from "@opentui/react/jsx-runtime";
|
|
2
|
+
import { useState, useEffect } from "react";
|
|
3
|
+
import { c } from "../theme.js";
|
|
4
|
+
let toastListeners = [];
|
|
5
|
+
export function showToast(message, variant = "info") {
|
|
6
|
+
const toast = { id: Math.random().toString(36).slice(2, 9), message, variant };
|
|
7
|
+
for (const fn of toastListeners)
|
|
8
|
+
fn(toast);
|
|
9
|
+
}
|
|
10
|
+
export function ToastContainer() {
|
|
11
|
+
const [toasts, setToasts] = useState([]);
|
|
12
|
+
useEffect(() => {
|
|
13
|
+
const handler = (toast) => {
|
|
14
|
+
setToasts((prev) => [...prev, toast]);
|
|
15
|
+
setTimeout(() => {
|
|
16
|
+
setToasts((prev) => prev.filter((t) => t.id !== toast.id));
|
|
17
|
+
}, 3000);
|
|
18
|
+
};
|
|
19
|
+
toastListeners.push(handler);
|
|
20
|
+
return () => { toastListeners = toastListeners.filter((h) => h !== handler); };
|
|
21
|
+
}, []);
|
|
22
|
+
if (toasts.length === 0)
|
|
23
|
+
return null;
|
|
24
|
+
const colors = {
|
|
25
|
+
info: c.info, success: c.success, warn: c.warn, error: c.error,
|
|
26
|
+
};
|
|
27
|
+
return (_jsx("box", { position: "absolute", right: 2, bottom: 2, flexDirection: "column", gap: 1, zIndex: 9999, children: toasts.map((t) => (_jsx("box", { backgroundColor: c.bgBar, paddingX: 2, paddingY: 1, children: _jsx("text", { fg: colors[t.variant], children: t.message }) }, t.id))) }));
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=toast.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toast.js","sourceRoot":"","sources":["../../../../src/tui/components/toast.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAe,MAAM,OAAO,CAAA;AACxD,OAAO,EAAE,CAAC,EAAE,MAAM,aAAa,CAAA;AAQ/B,IAAI,cAAc,GAA+B,EAAE,CAAA;AAEnD,MAAM,UAAU,SAAS,CAAC,OAAe,EAAE,UAA4B,MAAM;IAC3E,MAAM,KAAK,GAAU,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAA;IACrF,KAAK,MAAM,EAAE,IAAI,cAAc;QAAE,EAAE,CAAC,KAAK,CAAC,CAAA;AAC5C,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAU,EAAE,CAAC,CAAA;IAEjD,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,OAAO,GAAG,CAAC,KAAY,EAAE,EAAE;YAC/B,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC,CAAA;YACrC,UAAU,CAAC,GAAG,EAAE;gBACd,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC,CAAA;YAC5D,CAAC,EAAE,IAAI,CAAC,CAAA;QACV,CAAC,CAAA;QACD,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC5B,OAAO,GAAG,EAAE,GAAG,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC,CAAA,CAAC,CAAC,CAAA;IAC/E,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAEpC,MAAM,MAAM,GAA2B;QACrC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK;KAC/D,CAAA;IAED,OAAO,CACL,cAAK,QAAQ,EAAC,UAAU,EAAC,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,aAAa,EAAC,QAAQ,EAAC,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,YACtF,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACjB,cAAgB,eAAe,EAAE,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,YAChE,eAAM,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,YAAG,CAAC,CAAC,OAAO,GAAQ,IADvC,CAAC,CAAC,EAAE,CAER,CACP,CAAC,GACE,CACP,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { SecurityManager } from "../../security/index.js";
|
|
2
|
+
import type { CustomProviderConfig } from "../../services/config.js";
|
|
3
|
+
import type { PermissionRequest } from "../../security/types.js";
|
|
4
|
+
interface UseAgentDeps {
|
|
5
|
+
securityRef: React.MutableRefObject<SecurityManager | null>;
|
|
6
|
+
securityConfig: {
|
|
7
|
+
permission: any;
|
|
8
|
+
security: any;
|
|
9
|
+
};
|
|
10
|
+
enqueuePermission: (req: PermissionRequest) => void;
|
|
11
|
+
}
|
|
12
|
+
export declare function useAgent(deps: UseAgentDeps): {
|
|
13
|
+
agentRef: import("react").RefObject<any>;
|
|
14
|
+
lastAgentRef: import("react").RefObject<string | null>;
|
|
15
|
+
loadedSessionMessages: import("react").RefObject<import("@mohanscodex/spectra-ai").Message[]>;
|
|
16
|
+
getOrCreateAgent: (selectedModel: string | null, provider: string | null, selectedAgent: string, customProviders: Record<string, CustomProviderConfig>, thinkingEffort: string | undefined) => Promise<any>;
|
|
17
|
+
resetAgentForModelSwitch: () => void;
|
|
18
|
+
};
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=use-agent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-agent.d.ts","sourceRoot":"","sources":["../../../../src/tui/hooks/use-agent.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAA;AAMpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAEhE,UAAU,YAAY;IACpB,WAAW,EAAE,KAAK,CAAC,gBAAgB,CAAC,eAAe,GAAG,IAAI,CAAC,CAAA;IAC3D,cAAc,EAAE;QAAE,UAAU,EAAE,GAAG,CAAC;QAAC,QAAQ,EAAE,GAAG,CAAA;KAAE,CAAA;IAClD,iBAAiB,EAAE,CAAC,GAAG,EAAE,iBAAiB,KAAK,IAAI,CAAA;CACpD;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,YAAY;;;;sCA2CxB,MAAM,GAAG,IAAI,YAClB,MAAM,GAAG,IAAI,iBACR,MAAM,mBACJ,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,kBACrC,MAAM,GAAG,SAAS;;EA2FrC"}
|