@timetotest/cli 0.3.1 → 0.3.3

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 (77) hide show
  1. package/README.md +12 -2
  2. package/dist/bin/ttt.js +0 -6
  3. package/dist/bin/ttt.js.map +1 -1
  4. package/dist/package.json +1 -1
  5. package/dist/src/commands/chat/ChatApp.js +229 -124
  6. package/dist/src/commands/chat/ChatApp.js.map +1 -1
  7. package/dist/src/commands/chat/OnboardingApp.js +13 -6
  8. package/dist/src/commands/chat/OnboardingApp.js.map +1 -1
  9. package/dist/src/commands/chat/components/ChatInput.js +22 -9
  10. package/dist/src/commands/chat/components/ChatInput.js.map +1 -1
  11. package/dist/src/commands/chat/components/ModelPicker.js +62 -0
  12. package/dist/src/commands/chat/components/ModelPicker.js.map +1 -0
  13. package/dist/src/commands/chat/components/TodoPanel.js +71 -0
  14. package/dist/src/commands/chat/components/TodoPanel.js.map +1 -0
  15. package/dist/src/commands/chat/components/ToolCallDisplay.js +45 -28
  16. package/dist/src/commands/chat/components/ToolCallDisplay.js.map +1 -1
  17. package/dist/src/commands/chat/tool-message-matcher.js +20 -0
  18. package/dist/src/commands/chat/tool-message-matcher.js.map +1 -0
  19. package/dist/src/commands/chat-ink.js +200 -341
  20. package/dist/src/commands/chat-ink.js.map +1 -1
  21. package/dist/src/commands/login.js +21 -5
  22. package/dist/src/commands/login.js.map +1 -1
  23. package/dist/src/lib/__tests__/code-mode-integration.test.js +45 -356
  24. package/dist/src/lib/__tests__/code-mode-integration.test.js.map +1 -1
  25. package/dist/src/lib/__tests__/login-auth-flow.test.js +14 -0
  26. package/dist/src/lib/__tests__/login-auth-flow.test.js.map +1 -0
  27. package/dist/src/lib/__tests__/model-picker-window.test.js +20 -0
  28. package/dist/src/lib/__tests__/model-picker-window.test.js.map +1 -0
  29. package/dist/src/lib/__tests__/tool-executor-mode-gating.test.js +46 -0
  30. package/dist/src/lib/__tests__/tool-executor-mode-gating.test.js.map +1 -0
  31. package/dist/src/lib/__tests__/tool-message-matcher.test.js +26 -0
  32. package/dist/src/lib/__tests__/tool-message-matcher.test.js.map +1 -0
  33. package/dist/src/lib/__tests__/ui-browser-integration.test.js +35 -0
  34. package/dist/src/lib/__tests__/ui-browser-integration.test.js.map +1 -0
  35. package/dist/src/lib/agent-orchestrator.js +16 -717
  36. package/dist/src/lib/agent-orchestrator.js.map +1 -1
  37. package/dist/src/lib/backend-loop-client.js +377 -0
  38. package/dist/src/lib/backend-loop-client.js.map +1 -0
  39. package/dist/src/lib/cli-tool-manifest.js +71 -0
  40. package/dist/src/lib/cli-tool-manifest.js.map +1 -0
  41. package/dist/src/lib/config.js +60 -9
  42. package/dist/src/lib/config.js.map +1 -1
  43. package/dist/src/lib/conversation/turns.js +58 -0
  44. package/dist/src/lib/conversation/turns.js.map +1 -0
  45. package/dist/src/lib/events.js +20 -4
  46. package/dist/src/lib/events.js.map +1 -1
  47. package/dist/src/lib/http.js +7 -2
  48. package/dist/src/lib/http.js.map +1 -1
  49. package/dist/src/lib/prompts/templates.js +18 -0
  50. package/dist/src/lib/prompts/templates.js.map +1 -1
  51. package/dist/src/lib/session-manager.js +74 -33
  52. package/dist/src/lib/session-manager.js.map +1 -1
  53. package/dist/src/lib/socket.js +15 -3
  54. package/dist/src/lib/socket.js.map +1 -1
  55. package/dist/src/lib/todo.js +7 -0
  56. package/dist/src/lib/todo.js.map +1 -0
  57. package/dist/src/lib/tool-executor.js +196 -51
  58. package/dist/src/lib/tool-executor.js.map +1 -1
  59. package/dist/src/lib/tui/events.js +10 -9
  60. package/dist/src/lib/tui/events.js.map +1 -1
  61. package/dist/src/lib/tui/ink/components/TimetoTestLogo.js +1 -1
  62. package/dist/src/lib/tui/ink/components/TimetoTestLogo.js.map +1 -1
  63. package/dist/src/lib/utils/json.js +15 -0
  64. package/dist/src/lib/utils/json.js.map +1 -0
  65. package/package.json +1 -1
  66. package/dist/src/commands/report.js +0 -25
  67. package/dist/src/commands/report.js.map +0 -1
  68. package/dist/src/commands/restart.js +0 -17
  69. package/dist/src/commands/restart.js.map +0 -1
  70. package/dist/src/commands/share.js +0 -18
  71. package/dist/src/commands/share.js.map +0 -1
  72. package/dist/src/lib/context-compactor.js +0 -310
  73. package/dist/src/lib/context-compactor.js.map +0 -1
  74. package/dist/src/lib/tool-registry.js +0 -971
  75. package/dist/src/lib/tool-registry.js.map +0 -1
  76. package/dist/src/lib/tool-result-pruner.js +0 -384
  77. package/dist/src/lib/tool-result-pruner.js.map +0 -1
package/README.md CHANGED
@@ -17,13 +17,23 @@ Give our agent a URL and a goal. It plans, executes, and self-heals end-to-end t
17
17
  ```bash
18
18
  npm install -g @timetotest/cli
19
19
 
20
+ # Authenticate
21
+ ttt login
22
+
20
23
  # Start an interactive session
21
24
  ttt
22
25
 
23
26
  # Run a test with a prompt
24
- ttt test "Verify the login flow works" --url http://localhost:3000
27
+ ttt test "Verify the login flow works" --base-url http://localhost:3000
25
28
  ```
26
29
 
30
+ ## Available Commands
31
+
32
+ - `ttt chat` - Interactive chat/testing session (`--mode ui|api|code`).
33
+ - `ttt test` - Opens chat with a prefilled test prompt.
34
+ - `ttt status <test-id>` - Fetch test status from backend.
35
+ - `ttt login` - Authenticate via browser flow or token.
36
+
27
37
  ## How It Works
28
38
 
29
39
  1. **Describe Your Test** — Write your testing goal in plain English. No scripts, no complex selectors.
@@ -53,7 +63,7 @@ Analyze your local codebase for bugs, run linters, and execute tests — no GitH
53
63
 
54
64
  ```bash
55
65
  # Start in code mode
56
- ttt --mode code
66
+ ttt chat --mode code
57
67
 
58
68
  # Example prompts
59
69
  > "Find potential null pointer issues in src/api/"
package/dist/bin/ttt.js CHANGED
@@ -4,9 +4,6 @@ import packageJson from "../package.json" with { type: "json" };
4
4
  import { login } from "../src/commands/login.js";
5
5
  import { test } from "../src/commands/test.js";
6
6
  import { status } from "../src/commands/status.js";
7
- import { restart } from "../src/commands/restart.js";
8
- import { report } from "../src/commands/report.js";
9
- import { share } from "../src/commands/share.js";
10
7
  import { applyStyledHelpRecursively } from "../src/lib/help.js";
11
8
  import { promptForUpdateIfAvailable } from "../src/lib/update.js";
12
9
  import { chatInk as chat } from "../src/commands/chat-ink.js";
@@ -16,9 +13,6 @@ program.name("ttt").description("Time to Test CLI").version(cliVersion);
16
13
  program.addCommand(login);
17
14
  program.addCommand(test);
18
15
  program.addCommand(status);
19
- program.addCommand(restart);
20
- program.addCommand(report);
21
- program.addCommand(share);
22
16
  program.addCommand(chat);
23
17
  applyStyledHelpRecursively(program, "ttt");
24
18
  await promptForUpdateIfAvailable();
@@ -1 +1 @@
1
- {"version":3,"file":"ttt.js","sourceRoot":"","sources":["../../bin/ttt.ts"],"names":[],"mappings":";AACA,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAClC,OAAO,WAAW,MAAM,iBAAiB,CAAC,OAAM,IAAI,EAAE,MAAM,EAAC,CAAC;AAC9D,OAAO,EAAC,KAAK,EAAC,MAAM,0BAA0B,CAAC;AAC/C,OAAO,EAAC,IAAI,EAAC,MAAM,yBAAyB,CAAC;AAC7C,OAAO,EAAC,MAAM,EAAC,MAAM,2BAA2B,CAAC;AACjD,OAAO,EAAC,OAAO,EAAC,MAAM,4BAA4B,CAAC;AACnD,OAAO,EAAC,MAAM,EAAC,MAAM,2BAA2B,CAAC;AACjD,OAAO,EAAC,KAAK,EAAC,MAAM,0BAA0B,CAAC;AAC/C,OAAO,EAAC,0BAA0B,EAAC,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAC,0BAA0B,EAAC,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAC,OAAO,IAAI,IAAI,EAAC,MAAM,6BAA6B,CAAC;AAE5D,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAC9B,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,OAAO,IAAI,OAAO,CAAC,CAAC;AAC1D,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAExE,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC1B,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACzB,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAC3B,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAC5B,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAC3B,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC1B,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAEzB,0BAA0B,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAE3C,MAAM,0BAA0B,EAAE,CAAC;AACnC,gEAAgE;AAChE,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;IAC7B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC;AACD,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
1
+ {"version":3,"file":"ttt.js","sourceRoot":"","sources":["../../bin/ttt.ts"],"names":[],"mappings":";AACA,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAClC,OAAO,WAAW,MAAM,iBAAiB,CAAC,OAAM,IAAI,EAAE,MAAM,EAAC,CAAC;AAC9D,OAAO,EAAC,KAAK,EAAC,MAAM,0BAA0B,CAAC;AAC/C,OAAO,EAAC,IAAI,EAAC,MAAM,yBAAyB,CAAC;AAC7C,OAAO,EAAC,MAAM,EAAC,MAAM,2BAA2B,CAAC;AACjD,OAAO,EAAC,0BAA0B,EAAC,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAC,0BAA0B,EAAC,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAC,OAAO,IAAI,IAAI,EAAC,MAAM,6BAA6B,CAAC;AAE5D,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAC9B,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,OAAO,IAAI,OAAO,CAAC,CAAC;AAC1D,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAExE,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC1B,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACzB,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAC3B,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAEzB,0BAA0B,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAE3C,MAAM,0BAA0B,EAAE,CAAC;AACnC,gEAAgE;AAChE,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;IAC7B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC;AACD,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@timetotest/cli",
3
- "version": "0.3.1",
3
+ "version": "0.3.3",
4
4
  "description": "Time to Test CLI",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,4 +1,4 @@
1
- import React, { useEffect, useMemo, useRef, useState } from "react";
1
+ import React, { useEffect, useMemo, useRef, useState, useCallback } from "react";
2
2
  import { Box, Text, useApp, useInput, useStdout } from "ink";
3
3
  import os from "node:os";
4
4
  import { ChatInput } from "./components/ChatInput.js";
@@ -8,8 +8,11 @@ import { ToolCallDisplay } from "./components/ToolCallDisplay.js";
8
8
  import { TESTING_MODES } from "../../lib/testing-mode.js";
9
9
  import { TimetoTestLogo } from "../../lib/tui/ink/components/TimetoTestLogo.js";
10
10
  import { ChatMessage } from "./components/ChatMessage.js";
11
+ import { TodoPanel } from "./components/TodoPanel.js";
12
+ import { ModelPicker } from "./components/ModelPicker.js";
13
+ import { resolveToolMessageIndex } from "./tool-message-matcher.js";
11
14
  import { CommandPalette, } from "../../lib/tui/ink/components/CommandPalette.js";
12
- export const ChatApp = ({ user, context, slashCommands, onUserMessage, onSlashCommand, onSetTestingMode, onExit, onCancel, initialMessages = [], initialInput, }) => {
15
+ export const ChatApp = ({ context, slashCommands, onUserMessage, onSlashCommand, onSetTestingMode, onExit, onCancel, initialMessages = [], initialInput, }) => {
13
16
  // Single source of truth: `slashCommands` comes from `chat-ink.ts`.
14
17
  const allSlashCommands = slashCommands;
15
18
  const { exit } = useApp();
@@ -18,32 +21,29 @@ export const ChatApp = ({ user, context, slashCommands, onUserMessage, onSlashCo
18
21
  const [status, setStatus] = useState(null);
19
22
  const [inputDisabled, setInputDisabled] = useState(false);
20
23
  const [chatContext, setChatContext] = useState(context);
24
+ const [todoSnapshot, setTodoSnapshot] = useState(null);
25
+ const showTodo = true;
21
26
  const [inputValue, setInputValue] = useState(initialInput ?? "");
22
27
  const inputHistoryRef = useRef([]);
23
28
  const historyIndexRef = useRef(-1);
24
- const [showSystem, setShowSystem] = useState(true);
25
29
  const [paletteOpen, setPaletteOpen] = useState(false);
26
30
  const [paletteQuery, setPaletteQuery] = useState("");
27
31
  const [paletteIndex, setPaletteIndex] = useState(0);
32
+ const [modelPickerOpen, setModelPickerOpen] = useState(false);
33
+ const [modelQuery, setModelQuery] = useState("");
34
+ const [modelPickerIndex, setModelPickerIndex] = useState(0);
35
+ const [modelPickerItems, setModelPickerItems] = useState([]);
36
+ const [modelPickerMeta, setModelPickerMeta] = useState({});
37
+ const modelPickerResolverRef = useRef(null);
28
38
  // Permission prompt state
29
39
  const [permissionRequest, setPermissionRequest] = useState(null);
30
40
  const permissionResolverRef = useRef(null);
31
41
  const paletteItems = useMemo(() => {
32
42
  const base = [
33
43
  { id: "help", title: "Help", hint: "/help" },
34
- { id: "progress", title: "Progress", hint: "/progress" },
35
- { id: "session", title: "Session info", hint: "/session" },
36
- { id: "bugs", title: "List Bugs", hint: "/bugs" },
37
- { id: "report", title: "Generate Report", hint: "/report" },
38
- { id: "screenshot", title: "Take Screenshot", hint: "/screenshot" },
39
- { id: "scan", title: "Scan Page", hint: "/scan" },
40
- { id: "where", title: "Where am I?", hint: "/where" },
41
- {
42
- id: "toggle_details",
43
- title: showSystem ? "Hide details" : "Show details",
44
- hint: "toggle tool/system messages",
45
- },
46
- { id: "clear", title: "Clear transcript", hint: "ctrl+l" },
44
+ { id: "stop", title: "Stop Agent", hint: "/stop" },
45
+ { id: "model", title: "Switch Model", hint: "/model" },
46
+ { id: "logout", title: "Logout", hint: "/logout" },
47
47
  { id: "exit_session", title: "Exit", hint: "ctrl+q" },
48
48
  ];
49
49
  const q = paletteQuery.trim().toLowerCase();
@@ -51,28 +51,46 @@ export const ChatApp = ({ user, context, slashCommands, onUserMessage, onSlashCo
51
51
  return base;
52
52
  return base.filter((i) => i.title.toLowerCase().includes(q) ||
53
53
  (i.hint || "").toLowerCase().includes(q));
54
- }, [paletteQuery, showSystem]);
54
+ }, [paletteQuery]);
55
+ const filteredModelItems = useMemo(() => {
56
+ const q = modelQuery.trim().toLowerCase();
57
+ if (!q)
58
+ return modelPickerItems;
59
+ return modelPickerItems.filter((m) => {
60
+ const id = m.id.toLowerCase();
61
+ const name = m.name.toLowerCase();
62
+ const tier = (m.tier || "").toLowerCase();
63
+ return id.includes(q) || name.includes(q) || tier.includes(q);
64
+ });
65
+ }, [modelPickerItems, modelQuery]);
66
+ useEffect(() => {
67
+ if (!modelPickerOpen) {
68
+ if (modelPickerIndex !== 0)
69
+ setModelPickerIndex(0);
70
+ return;
71
+ }
72
+ const max = Math.max(0, filteredModelItems.length - 1);
73
+ if (modelPickerIndex > max) {
74
+ setModelPickerIndex(max);
75
+ }
76
+ }, [modelPickerOpen, filteredModelItems.length, modelPickerIndex]);
77
+ const closeModelPicker = useCallback((value) => {
78
+ setModelPickerOpen(false);
79
+ setModelQuery("");
80
+ setModelPickerIndex(0);
81
+ const resolver = modelPickerResolverRef.current;
82
+ modelPickerResolverRef.current = null;
83
+ resolver?.(value);
84
+ }, []);
55
85
  const runPaletteAction = async (id) => {
56
86
  if (id === "help")
57
87
  await onSlashCommand("help", []);
58
- else if (id === "progress")
59
- await onSlashCommand("progress", []);
60
- else if (id === "bugs")
61
- await onSlashCommand("bugs", []);
62
- else if (id === "report")
63
- await onSlashCommand("report", []);
64
- else if (id === "screenshot")
65
- await onSlashCommand("screenshot", []);
66
- else if (id === "scan")
67
- await onSlashCommand("scan", []);
68
- else if (id === "where")
69
- await onSlashCommand("where", []);
70
- else if (id === "session")
71
- await onSlashCommand("session", []);
72
- else if (id === "toggle_details")
73
- setShowSystem((v) => !v);
74
- else if (id === "clear")
75
- setMessages([]);
88
+ else if (id === "stop")
89
+ await onSlashCommand("stop", []);
90
+ else if (id === "model")
91
+ await onSlashCommand("model", []);
92
+ else if (id === "logout")
93
+ await onSlashCommand("logout", []);
76
94
  else if (id === "exit_session") {
77
95
  exit();
78
96
  onExit();
@@ -86,7 +104,70 @@ export const ChatApp = ({ user, context, slashCommands, onUserMessage, onSlashCo
86
104
  onSetTestingMode?.(next);
87
105
  };
88
106
  useInput((input, key) => {
89
- // Global keybinds (avoid fighting with input)
107
+ if (permissionRequest) {
108
+ return;
109
+ }
110
+ if (modelPickerOpen) {
111
+ if (key.escape) {
112
+ closeModelPicker(null);
113
+ return;
114
+ }
115
+ if (key.upArrow) {
116
+ setModelPickerIndex((i) => Math.max(0, i - 1));
117
+ return;
118
+ }
119
+ if (key.downArrow) {
120
+ setModelPickerIndex((i) => Math.min(Math.max(0, filteredModelItems.length - 1), i + 1));
121
+ return;
122
+ }
123
+ if (key.backspace || key.delete) {
124
+ setModelQuery((q) => q.slice(0, -1));
125
+ setModelPickerIndex(0);
126
+ return;
127
+ }
128
+ if (key.return) {
129
+ const selected = filteredModelItems[modelPickerIndex];
130
+ closeModelPicker(selected?.id ?? null);
131
+ return;
132
+ }
133
+ if (input && !key.ctrl && !key.meta) {
134
+ setModelQuery((q) => q + input);
135
+ setModelPickerIndex(0);
136
+ }
137
+ return;
138
+ }
139
+ if (paletteOpen) {
140
+ if (key.escape) {
141
+ setPaletteOpen(false);
142
+ return;
143
+ }
144
+ if (key.upArrow) {
145
+ setPaletteIndex((i) => Math.max(0, i - 1));
146
+ return;
147
+ }
148
+ if (key.downArrow) {
149
+ setPaletteIndex((i) => Math.min(paletteItems.length - 1, i + 1));
150
+ return;
151
+ }
152
+ if (key.backspace || key.delete) {
153
+ setPaletteQuery((q) => q.slice(0, -1));
154
+ return;
155
+ }
156
+ if (key.return) {
157
+ const selected = paletteItems[paletteIndex];
158
+ if (selected) {
159
+ setPaletteOpen(false);
160
+ void runPaletteAction(selected.id);
161
+ }
162
+ return;
163
+ }
164
+ if (input && !key.ctrl && !key.meta) {
165
+ setPaletteQuery((q) => q + input);
166
+ setPaletteIndex(0);
167
+ }
168
+ return;
169
+ }
170
+ // Global keybinds (only when no overlay owns focus)
90
171
  if (key.ctrl && input === "l") {
91
172
  setMessages([]);
92
173
  return;
@@ -102,37 +183,6 @@ export const ChatApp = ({ user, context, slashCommands, onUserMessage, onSlashCo
102
183
  setPaletteIndex(0);
103
184
  return;
104
185
  }
105
- if (!paletteOpen)
106
- return;
107
- // Palette input handling
108
- if (key.escape) {
109
- setPaletteOpen(false);
110
- return;
111
- }
112
- if (key.upArrow) {
113
- setPaletteIndex((i) => Math.max(0, i - 1));
114
- return;
115
- }
116
- if (key.downArrow) {
117
- setPaletteIndex((i) => Math.min(paletteItems.length - 1, i + 1));
118
- return;
119
- }
120
- if (key.backspace || key.delete) {
121
- setPaletteQuery((q) => q.slice(0, -1));
122
- return;
123
- }
124
- if (key.return) {
125
- const selected = paletteItems[paletteIndex];
126
- if (selected) {
127
- setPaletteOpen(false);
128
- void runPaletteAction(selected.id);
129
- }
130
- return;
131
- }
132
- if (input && !key.ctrl && !key.meta) {
133
- setPaletteQuery((q) => q + input);
134
- setPaletteIndex(0);
135
- }
136
186
  });
137
187
  // Public methods to update UI from parent
138
188
  useEffect(() => {
@@ -172,15 +222,10 @@ export const ChatApp = ({ user, context, slashCommands, onUserMessage, onSlashCo
172
222
  updateLastToolMessage: (update) => {
173
223
  try {
174
224
  setMessages((prev) => {
175
- // Find the last tool message matching this tool (iterate backwards)
176
- let lastIndex = -1;
177
- for (let i = prev.length - 1; i >= 0; i--) {
178
- if (prev[i].metadata?.isTool &&
179
- prev[i].metadata?.toolName === update.toolName) {
180
- lastIndex = i;
181
- break;
182
- }
183
- }
225
+ const lastIndex = resolveToolMessageIndex(prev, {
226
+ toolName: update.toolName,
227
+ callId: update.callId,
228
+ });
184
229
  if (lastIndex === -1)
185
230
  return prev;
186
231
  const updated = [...prev];
@@ -204,11 +249,35 @@ export const ChatApp = ({ user, context, slashCommands, onUserMessage, onSlashCo
204
249
  setPermissionRequest(request);
205
250
  });
206
251
  },
252
+ promptModelSelection: (payload) => {
253
+ return new Promise((resolve) => {
254
+ modelPickerResolverRef.current = resolve;
255
+ setModelPickerItems(payload.models || []);
256
+ setModelPickerMeta({
257
+ currentModel: payload.currentModel,
258
+ planTier: payload.planTier,
259
+ creditBalance: payload.creditBalance,
260
+ });
261
+ setModelQuery("");
262
+ setModelPickerIndex(0);
263
+ setPaletteOpen(false);
264
+ setModelPickerOpen(true);
265
+ });
266
+ },
267
+ setTodos: (snapshot) => {
268
+ try {
269
+ setTodoSnapshot(snapshot);
270
+ }
271
+ catch { }
272
+ },
207
273
  };
208
274
  return () => {
275
+ const resolver = modelPickerResolverRef.current;
276
+ modelPickerResolverRef.current = null;
277
+ resolver?.(null);
209
278
  delete globalThis.__chatAppInterface;
210
279
  };
211
- }, []);
280
+ }, [closeModelPicker]);
212
281
  const handleSubmit = async (value) => {
213
282
  if (!value.trim())
214
283
  return;
@@ -227,27 +296,52 @@ export const ChatApp = ({ user, context, slashCommands, onUserMessage, onSlashCo
227
296
  // Check for slash commands
228
297
  if (trimmed.startsWith("/")) {
229
298
  const parts = trimmed.slice(1).split(/\s+/);
230
- const cmd = parts[0];
299
+ const cmd = (parts[0] || "").toLowerCase();
231
300
  const args = parts.slice(1);
232
301
  if (!cmd)
233
302
  return; // Ignore lone "/"
234
- // Handle client-side commands
235
- if (cmd === "clear") {
236
- setMessages([]);
237
- return;
238
- }
239
- if (cmd === "config") {
303
+ const resolveSlashCommand = (inputCommand) => {
304
+ const normalized = inputCommand.toLowerCase();
305
+ const commandNames = allSlashCommands.map((c) => (c.value || `/${c.name}`).replace(/^\//, "").toLowerCase());
306
+ // Exact match first.
307
+ if (commandNames.includes(normalized)) {
308
+ return { resolved: normalized };
309
+ }
310
+ // Prefix match for fast partial command entry, e.g. /he => /help
311
+ const prefixMatches = commandNames.filter((name) => name.startsWith(normalized));
312
+ if (prefixMatches.length === 1) {
313
+ return { resolved: prefixMatches[0] };
314
+ }
315
+ if (prefixMatches.length > 1) {
316
+ return { ambiguity: prefixMatches.slice(0, 5) };
317
+ }
318
+ // Fuzzy fallback for typo/discoverability assistance.
319
+ const fuzzyMatches = commandNames.filter((name) => name.includes(normalized));
320
+ if (fuzzyMatches.length === 1) {
321
+ return { resolved: fuzzyMatches[0] };
322
+ }
323
+ if (fuzzyMatches.length > 1) {
324
+ return { ambiguity: fuzzyMatches.slice(0, 5) };
325
+ }
326
+ return {};
327
+ };
328
+ const resolved = resolveSlashCommand(cmd);
329
+ if (!resolved.resolved) {
330
+ const suggestionText = resolved.ambiguity && resolved.ambiguity.length > 0
331
+ ? `Did you mean: ${resolved.ambiguity.map((c) => `/${c}`).join(", ")}`
332
+ : "Type /help to see available commands.";
240
333
  setMessages((prev) => [
241
334
  ...prev,
242
335
  {
243
336
  id: Date.now().toString(),
244
337
  type: "system",
245
- content: `Current Configuration:\nUser: ${user}\nMode: ${chatContext.mode}\nSession ID: ${chatContext.sessionId}`,
338
+ content: `Unknown or ambiguous command: /${cmd}. ${suggestionText}`,
339
+ isError: true,
246
340
  },
247
341
  ]);
248
342
  return;
249
343
  }
250
- const result = await onSlashCommand(cmd, args);
344
+ const result = await onSlashCommand(resolved.resolved, args);
251
345
  if (result === "exit") {
252
346
  exit();
253
347
  onExit();
@@ -279,9 +373,28 @@ export const ChatApp = ({ user, context, slashCommands, onUserMessage, onSlashCo
279
373
  const getSuggestions = (input) => {
280
374
  if (!input.startsWith("/"))
281
375
  return [];
282
- const query = input.toLowerCase();
376
+ const raw = input.slice(1).toLowerCase().trim();
377
+ const rank = (cmd) => {
378
+ const name = cmd.name.toLowerCase();
379
+ if (!raw)
380
+ return 0;
381
+ if (name.startsWith(raw))
382
+ return 0;
383
+ if (name.includes(raw))
384
+ return 1;
385
+ if (cmd.description.toLowerCase().includes(raw))
386
+ return 2;
387
+ return 3;
388
+ };
283
389
  return allSlashCommands
284
- .filter((cmd) => cmd.value.toLowerCase().startsWith(query))
390
+ .filter((cmd) => {
391
+ if (!raw)
392
+ return true;
393
+ const name = cmd.name.toLowerCase();
394
+ const desc = cmd.description.toLowerCase();
395
+ return name.startsWith(raw) || name.includes(raw) || desc.includes(raw);
396
+ })
397
+ .sort((a, b) => rank(a) - rank(b))
285
398
  .map((cmd) => ({
286
399
  label: cmd.label,
287
400
  value: cmd.value,
@@ -293,48 +406,40 @@ export const ChatApp = ({ user, context, slashCommands, onUserMessage, onSlashCo
293
406
  const displayPath = workspacePath.startsWith(homeDir)
294
407
  ? `~${workspacePath.slice(homeDir.length)}`
295
408
  : workspacePath;
296
- const subtitleLines = useMemo(() => {
297
- const who = user && user !== "Unknown" ? user : "unknown (check auth profile)";
298
- return [];
299
- }, [
300
- user,
301
- chatContext.mode,
302
- chatContext.testingMode,
303
- chatContext.sessionId,
304
- displayPath,
305
- ]);
306
- const footer = status ? (React.createElement(Box, { flexDirection: "column" },
307
- React.createElement(StatusIndicator, { message: status.text, type: status.type }))) : undefined;
409
+ const cols = stdout?.columns ?? 120;
410
+ const todoVisible = showTodo && !!todoSnapshot && todoSnapshot.todos.length > 0;
411
+ const sidebarWidth = Math.min(44, Math.max(34, Math.floor(cols * 0.32)));
412
+ const showSidebar = cols >= 100 && todoVisible;
413
+ const overlayActive = !!permissionRequest || paletteOpen || modelPickerOpen;
308
414
  return (React.createElement(Box, { flexDirection: "column", width: "100%", height: "100%", overflow: "hidden" },
309
- paletteOpen ? (React.createElement(CommandPalette, { query: paletteQuery, items: paletteItems, selectedIndex: paletteIndex })) : null,
310
- React.createElement(Box, { flexDirection: "column", flexGrow: 1, overflow: "hidden" },
311
- React.createElement(TimetoTestLogo, null),
312
- messages.map((message) => {
313
- if (!showSystem && message.type === "system") {
314
- return null;
315
- }
316
- // Render tool calls with ToolCallDisplay
317
- if (message.metadata?.isTool) {
318
- return (React.createElement(ToolCallDisplay, { key: message.id, toolName: message.metadata.toolName || "unknown", args: message.metadata.toolArgs, result: message.metadata.toolResult, isLoading: message.metadata.isLoading }));
319
- }
320
- // Render reasoning with italic/dimmed style
321
- if (message.metadata?.isReasoning) {
322
- return (React.createElement(Box, { key: message.id, paddingLeft: 2, marginBottom: 1 },
323
- React.createElement(Text, { color: "yellow", dimColor: true, italic: true }, message.content)));
324
- }
325
- return (React.createElement(ChatMessage, { key: message.id, type: message.type, content: message.content, isError: message.isError }));
326
- })),
415
+ paletteOpen && !modelPickerOpen ? (React.createElement(CommandPalette, { query: paletteQuery, items: paletteItems, selectedIndex: paletteIndex })) : null,
416
+ React.createElement(Box, { flexDirection: "row", flexGrow: 1, overflow: "hidden" },
417
+ React.createElement(Box, { flexDirection: "column", flexGrow: 1, overflow: "hidden" },
418
+ React.createElement(TimetoTestLogo, null),
419
+ todoVisible && !showSidebar ? (React.createElement(Box, { paddingLeft: 2, paddingRight: 2, marginBottom: 1 },
420
+ React.createElement(TodoPanel, { snapshot: todoSnapshot, width: Math.min(cols - 4, 80) }))) : null,
421
+ messages.map((message) => {
422
+ // Render tool calls with ToolCallDisplay
423
+ if (message.metadata?.isTool) {
424
+ return (React.createElement(ToolCallDisplay, { key: message.id, toolName: message.metadata.toolName || "unknown", args: message.metadata.toolArgs, result: message.metadata.toolResult, isLoading: message.metadata.isLoading }));
425
+ }
426
+ // Render reasoning with italic/dimmed style
427
+ if (message.metadata?.isReasoning) {
428
+ return (React.createElement(Box, { key: message.id, paddingLeft: 2, marginBottom: 1 },
429
+ React.createElement(Text, { color: "yellow", dimColor: true, italic: true }, message.content)));
430
+ }
431
+ return (React.createElement(ChatMessage, { key: message.id, type: message.type, content: message.content, isError: message.isError }));
432
+ })),
433
+ showSidebar ? (React.createElement(Box, { flexDirection: "column", width: sidebarWidth, paddingLeft: 1 },
434
+ React.createElement(TodoPanel, { snapshot: todoSnapshot, width: sidebarWidth }))) : null),
327
435
  status && (React.createElement(Box, { paddingY: 1, overflow: "hidden" },
328
436
  React.createElement(StatusIndicator, { message: status.text, type: status.type }))),
329
437
  permissionRequest && (React.createElement(PermissionPrompt, { request: permissionRequest, onResponse: handlePermissionResponse })),
330
- React.createElement(ChatInput, { placeholder: "Ask anything or use /help for commands", value: inputValue, onChange: setInputValue, onSubmit: handleSubmit, onCancel: handleCancel, getSuggestions: getSuggestions, disabled: inputDisabled || paletteOpen, testingMode: chatContext.testingMode, directory: displayPath, hintsRight: paletteOpen ? ("esc close") : (React.createElement(Text, null,
438
+ modelPickerOpen ? (React.createElement(ModelPicker, { query: modelQuery, items: filteredModelItems, selectedIndex: modelPickerIndex, currentModel: modelPickerMeta.currentModel, planTier: modelPickerMeta.planTier, creditBalance: modelPickerMeta.creditBalance })) : null,
439
+ React.createElement(ChatInput, { placeholder: "Ask anything or use /help for commands", value: inputValue, onChange: setInputValue, onSubmit: handleSubmit, onCancel: handleCancel, getSuggestions: getSuggestions, disabled: inputDisabled || overlayActive, isActive: !overlayActive, testingMode: chatContext.testingMode, directory: displayPath, hintsRight: modelPickerOpen ? ("esc close model picker") : paletteOpen ? ("esc close palette") : permissionRequest ? ("permission prompt active") : (React.createElement(Text, null,
331
440
  React.createElement(Text, { bold: true, color: "white" }, "tab"),
332
441
  " ",
333
- React.createElement(Text, { dimColor: true }, "mode"),
334
- " \u2022 ",
335
- React.createElement(Text, { bold: true, color: "white" }, "ctrl+k"),
336
- " ",
337
- React.createElement(Text, { dimColor: true }, "commands"))), onToggleMode: toggleTestingMode, onHistoryUp: () => {
442
+ React.createElement(Text, { dimColor: true }, "mode"))), onToggleMode: toggleTestingMode, onHistoryUp: () => {
338
443
  const hist = inputHistoryRef.current;
339
444
  if (hist.length === 0)
340
445
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"ChatApp.js","sourceRoot":"","sources":["../../../../src/commands/chat/ChatApp.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ChatApp.js","sourceRoot":"","sources":["../../../../src/commands/chat/ChatApp.tsx"],"names":[],"mappings":"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"}