@timetotest/cli 0.2.2 → 0.2.4

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 (134) hide show
  1. package/README.md +3 -3
  2. package/dist/bin/ttt.js +1 -5
  3. package/dist/bin/ttt.js.map +1 -1
  4. package/dist/package.json +8 -5
  5. package/dist/src/commands/chat/ChatApp.js +91 -37
  6. package/dist/src/commands/chat/ChatApp.js.map +1 -1
  7. package/dist/src/commands/chat/components/AssistantResponse.js +8 -0
  8. package/dist/src/commands/chat/components/AssistantResponse.js.map +1 -0
  9. package/dist/src/commands/chat/components/Banner.js +23 -0
  10. package/dist/src/commands/chat/components/Banner.js.map +1 -0
  11. package/dist/src/commands/chat/components/ChatInput.js +95 -0
  12. package/dist/src/commands/chat/components/ChatInput.js.map +1 -0
  13. package/dist/src/commands/chat/components/MessageBubble.js +9 -0
  14. package/dist/src/commands/chat/components/MessageBubble.js.map +1 -0
  15. package/dist/src/commands/chat/components/StatusIndicator.js +11 -0
  16. package/dist/src/commands/chat/components/StatusIndicator.js.map +1 -0
  17. package/dist/src/commands/chat-ink.js +122 -19
  18. package/dist/src/commands/chat-ink.js.map +1 -1
  19. package/dist/src/commands/start-test.js +127 -34
  20. package/dist/src/commands/start-test.js.map +1 -1
  21. package/dist/src/commands/stream/StreamApp.js +127 -0
  22. package/dist/src/commands/stream/StreamApp.js.map +1 -0
  23. package/dist/src/commands/stream.js +43 -8
  24. package/dist/src/commands/stream.js.map +1 -1
  25. package/dist/src/commands/test/TestRunApp.js +183 -0
  26. package/dist/src/commands/test/TestRunApp.js.map +1 -0
  27. package/dist/src/commands/test.js +236 -25
  28. package/dist/src/commands/test.js.map +1 -1
  29. package/dist/src/lib/agent-orchestrator.js +9 -81
  30. package/dist/src/lib/agent-orchestrator.js.map +1 -1
  31. package/dist/src/lib/api-types.js +2 -0
  32. package/dist/src/lib/api-types.js.map +1 -0
  33. package/dist/src/lib/events.js +0 -3
  34. package/dist/src/lib/events.js.map +1 -1
  35. package/dist/src/lib/http.js +4 -5
  36. package/dist/src/lib/http.js.map +1 -1
  37. package/dist/src/lib/local-tools/ui/playwright-mcp.js +1 -1
  38. package/dist/src/lib/socket.js +1 -19
  39. package/dist/src/lib/socket.js.map +1 -1
  40. package/dist/src/lib/tool-descriptions.js +2 -2
  41. package/dist/src/lib/tool-descriptions.js.map +1 -1
  42. package/dist/src/lib/tool-executor.js +0 -1
  43. package/dist/src/lib/tool-executor.js.map +1 -1
  44. package/dist/src/lib/tui/ink/theme.js +21 -0
  45. package/dist/src/lib/tui/ink/theme.js.map +1 -0
  46. package/package.json +8 -5
  47. package/dist/src/commands/ask/AskApp.js +0 -121
  48. package/dist/src/commands/ask/AskApp.js.map +0 -1
  49. package/dist/src/commands/ask/components/AssistantResponse.js +0 -31
  50. package/dist/src/commands/ask/components/AssistantResponse.js.map +0 -1
  51. package/dist/src/commands/ask/components/Banner.js +0 -15
  52. package/dist/src/commands/ask/components/Banner.js.map +0 -1
  53. package/dist/src/commands/ask/components/ChatInput.js +0 -93
  54. package/dist/src/commands/ask/components/ChatInput.js.map +0 -1
  55. package/dist/src/commands/ask/components/Divider.js +0 -17
  56. package/dist/src/commands/ask/components/Divider.js.map +0 -1
  57. package/dist/src/commands/ask/components/IntroTips.js +0 -19
  58. package/dist/src/commands/ask/components/IntroTips.js.map +0 -1
  59. package/dist/src/commands/ask/components/MessageBubble.js +0 -47
  60. package/dist/src/commands/ask/components/MessageBubble.js.map +0 -1
  61. package/dist/src/commands/ask/components/SessionInfo.js +0 -20
  62. package/dist/src/commands/ask/components/SessionInfo.js.map +0 -1
  63. package/dist/src/commands/ask/components/StatusIndicator.js +0 -67
  64. package/dist/src/commands/ask/components/StatusIndicator.js.map +0 -1
  65. package/dist/src/commands/ask-ink.js +0 -380
  66. package/dist/src/commands/ask-ink.js.map +0 -1
  67. package/dist/src/commands/ask.js +0 -991
  68. package/dist/src/commands/ask.js.map +0 -1
  69. package/dist/src/commands/chat.js +0 -82
  70. package/dist/src/commands/chat.js.map +0 -1
  71. package/dist/src/lib/legacy-chat-runner.js +0 -37
  72. package/dist/src/lib/legacy-chat-runner.js.map +0 -1
  73. package/dist/src/lib/local-tools/ui/click-element.js +0 -105
  74. package/dist/src/lib/local-tools/ui/click-element.js.map +0 -1
  75. package/dist/src/lib/local-tools/ui/dom-rag.js +0 -201
  76. package/dist/src/lib/local-tools/ui/dom-rag.js.map +0 -1
  77. package/dist/src/lib/local-tools/ui/find-element.js +0 -31
  78. package/dist/src/lib/local-tools/ui/find-element.js.map +0 -1
  79. package/dist/src/lib/local-tools/ui/hover-element.js +0 -94
  80. package/dist/src/lib/local-tools/ui/hover-element.js.map +0 -1
  81. package/dist/src/lib/local-tools/ui/manage-tab.js +0 -65
  82. package/dist/src/lib/local-tools/ui/manage-tab.js.map +0 -1
  83. package/dist/src/lib/local-tools/ui/navigate.js +0 -35
  84. package/dist/src/lib/local-tools/ui/navigate.js.map +0 -1
  85. package/dist/src/lib/local-tools/ui/page-discovery.js +0 -32
  86. package/dist/src/lib/local-tools/ui/page-discovery.js.map +0 -1
  87. package/dist/src/lib/local-tools/ui/screenshot.js +0 -19
  88. package/dist/src/lib/local-tools/ui/screenshot.js.map +0 -1
  89. package/dist/src/lib/local-tools/ui/search-interactive-elements.js +0 -18
  90. package/dist/src/lib/local-tools/ui/search-interactive-elements.js.map +0 -1
  91. package/dist/src/lib/local-tools/ui/selector-resolver.js +0 -153
  92. package/dist/src/lib/local-tools/ui/selector-resolver.js.map +0 -1
  93. package/dist/src/lib/local-tools/ui/type-text.js +0 -40
  94. package/dist/src/lib/local-tools/ui/type-text.js.map +0 -1
  95. package/dist/src/lib/tui/components/AskIntro.js +0 -6
  96. package/dist/src/lib/tui/components/AskIntro.js.map +0 -1
  97. package/dist/src/lib/tui/components/Banner.js +0 -15
  98. package/dist/src/lib/tui/components/Banner.js.map +0 -1
  99. package/dist/src/lib/tui/components/Divider.js +0 -17
  100. package/dist/src/lib/tui/components/Divider.js.map +0 -1
  101. package/dist/src/lib/tui/components/EventLine.js +0 -110
  102. package/dist/src/lib/tui/components/EventLine.js.map +0 -1
  103. package/dist/src/lib/tui/components/Header.js +0 -15
  104. package/dist/src/lib/tui/components/Header.js.map +0 -1
  105. package/dist/src/lib/tui/components/InputBox.js +0 -9
  106. package/dist/src/lib/tui/components/InputBox.js.map +0 -1
  107. package/dist/src/lib/tui/components/Mapping.js +0 -8
  108. package/dist/src/lib/tui/components/Mapping.js.map +0 -1
  109. package/dist/src/lib/tui/components/ProjectList.js +0 -6
  110. package/dist/src/lib/tui/components/ProjectList.js.map +0 -1
  111. package/dist/src/lib/tui/components/Spinner.js +0 -20
  112. package/dist/src/lib/tui/components/Spinner.js.map +0 -1
  113. package/dist/src/lib/tui/components/StatusBanner.js +0 -12
  114. package/dist/src/lib/tui/components/StatusBanner.js.map +0 -1
  115. package/dist/src/lib/tui/components/StatusBar.js +0 -11
  116. package/dist/src/lib/tui/components/StatusBar.js.map +0 -1
  117. package/dist/src/lib/tui/components/UserBubble.js +0 -6
  118. package/dist/src/lib/tui/components/UserBubble.js.map +0 -1
  119. package/dist/src/lib/tui/components/index.js +0 -16
  120. package/dist/src/lib/tui/components/index.js.map +0 -1
  121. package/dist/src/lib/tui/ink-print.js +0 -41
  122. package/dist/src/lib/tui/ink-print.js.map +0 -1
  123. package/dist/src/test-agent-flow.js +0 -148
  124. package/dist/src/test-agent-flow.js.map +0 -1
  125. package/dist/src/test-browser-session.js +0 -152
  126. package/dist/src/test-browser-session.js.map +0 -1
  127. package/dist/src/test-browser-snapshot.js +0 -187
  128. package/dist/src/test-browser-snapshot.js.map +0 -1
  129. package/dist/src/test-snapshot-detailed.js +0 -219
  130. package/dist/src/test-snapshot-detailed.js.map +0 -1
  131. package/dist/src/test-snapshot-simple.js +0 -85
  132. package/dist/src/test-snapshot-simple.js.map +0 -1
  133. package/dist/src/test-snapshot-tabs.js +0 -110
  134. package/dist/src/test-snapshot-tabs.js.map +0 -1
package/README.md CHANGED
@@ -22,11 +22,11 @@ The CLI launches an AI testing agent that plans and executes tests based on your
22
22
  ```bash
23
23
  npm install -g @timetotest/cli
24
24
 
25
- # Start an interactive session
25
+ # Start an interactive local session (default)
26
26
  ttt
27
27
 
28
- # Or point it at a URL with a short objective
29
- ttt test --url http://localhost:3000 --prompt "Smoke test the login flow"
28
+ # Run a cloud test with a prompt (automatically handles tunnels & project context)
29
+ ttt test "Smoke test the login flow" --url http://localhost:3000
30
30
  ```
31
31
 
32
32
  ## What makes this different
package/dist/bin/ttt.js CHANGED
@@ -8,8 +8,6 @@ import { restart } from "../src/commands/restart.js";
8
8
  import { stream } from "../src/commands/stream.js";
9
9
  import { report } from "../src/commands/report.js";
10
10
  import { share } from "../src/commands/share.js";
11
- import { askInk as ask } from "../src/commands/ask-ink.js";
12
- import { startTest } from "../src/commands/start-test.js";
13
11
  import { applyStyledHelpRecursively } from "../src/lib/help.js";
14
12
  import { promptForUpdateIfAvailable } from "../src/lib/update.js";
15
13
  import { chatInk as chat } from "../src/commands/chat-ink.js";
@@ -23,12 +21,10 @@ program.addCommand(restart);
23
21
  program.addCommand(stream);
24
22
  program.addCommand(report);
25
23
  program.addCommand(share);
26
- program.addCommand(ask);
27
- program.addCommand(startTest);
28
24
  program.addCommand(chat);
29
25
  applyStyledHelpRecursively(program, "ttt");
30
26
  await promptForUpdateIfAvailable();
31
- // Default to `ask` when no subcommand is provided
27
+ // Default to `chat` (local mode) when no subcommand is provided
32
28
  if (process.argv.length <= 2) {
33
29
  process.argv.push("chat");
34
30
  }
@@ -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,MAAM,EAAC,MAAM,2BAA2B,CAAC;AACjD,OAAO,EAAC,KAAK,EAAC,MAAM,0BAA0B,CAAC;AAC/C,OAAO,EAAC,MAAM,IAAI,GAAG,EAAC,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAC,SAAS,EAAC,MAAM,+BAA+B,CAAC;AACxD,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,MAAM,CAAC,CAAC;AAC3B,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC1B,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AACxB,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AAC9B,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAEzB,0BAA0B,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAE3C,MAAM,0BAA0B,EAAE,CAAC;AACnC,kDAAkD;AAClD,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,OAAO,EAAC,MAAM,4BAA4B,CAAC;AACnD,OAAO,EAAC,MAAM,EAAC,MAAM,2BAA2B,CAAC;AACjD,OAAO,EAAC,MAAM,EAAC,MAAM,2BAA2B,CAAC;AACjD,OAAO,EAAC,KAAK,EAAC,MAAM,0BAA0B,CAAC;AAG/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,MAAM,CAAC,CAAC;AAC3B,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAE1B,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.2.2",
3
+ "version": "0.2.4",
4
4
  "description": "Time to Test CLI",
5
5
  "type": "module",
6
6
  "bin": {
@@ -12,15 +12,18 @@
12
12
  "LICENSE"
13
13
  ],
14
14
  "scripts": {
15
- "dev": "node dist/bin/ttt.js",
15
+ "dev": "npm run build && node dist/bin/ttt.js",
16
16
  "build": "tsc --project tsconfig.json",
17
17
  "clean": "rm -rf dist",
18
- "prepublishOnly": "npm run build | cat",
18
+ "prepublishOnly": "npm run clean && npm run build",
19
19
  "version:patch": "npm version patch -m 'chore(release): %s'",
20
20
  "version:minor": "npm version minor -m 'chore(release): %s'",
21
21
  "version:major": "npm version major -m 'chore(release): %s'",
22
- "release": "npm run build && npm publish --access public",
23
- "upgrade-and-push": "npm run version:patch && git push && git push --tags && npm run release"
22
+ "version:dev": "npm version prerelease --preid dev -m 'chore(release): %s'",
23
+ "publish": "node scripts/publish.mjs",
24
+ "publish:dev": "node scripts/publish.mjs --channel dev",
25
+ "publish:prod": "node scripts/publish.mjs --channel prod",
26
+ "upgrade-and-push": "npm run version:patch && git push && git push --tags && npm run publish"
24
27
  },
25
28
  "publishConfig": {
26
29
  "access": "public"
@@ -1,16 +1,26 @@
1
1
  import React, { useState, useEffect } from "react";
2
- import { Box, Text, useApp } from "ink";
2
+ import { Box, Text, useApp, Static } from "ink";
3
3
  import os from "node:os";
4
- import { Banner } from "../ask/components/Banner.js";
5
- import { ChatInput } from "../ask/components/ChatInput.js";
6
- import { MessageBubble } from "../ask/components/MessageBubble.js";
7
- import { AssistantResponse } from "../ask/components/AssistantResponse.js";
8
- import { StatusIndicator } from "../ask/components/StatusIndicator.js";
4
+ import { Banner } from "./components/Banner.js";
5
+ import { ChatInput } from "./components/ChatInput.js";
6
+ import { MessageBubble } from "./components/MessageBubble.js";
7
+ import { AssistantResponse } from "./components/AssistantResponse.js";
8
+ import { StatusIndicator } from "./components/StatusIndicator.js";
9
9
  export const ChatApp = ({ user, context, slashCommands, onUserMessage, onSlashCommand, onExit, onCancel, initialMessages = [], }) => {
10
+ // Single source of truth: `slashCommands` comes from `chat-ink.ts`.
11
+ const allSlashCommands = slashCommands;
10
12
  const { exit } = useApp();
11
- const [messages, setMessages] = useState(initialMessages);
13
+ // Initialize messages with banner if empty
14
+ const [messages, setMessages] = useState(() => {
15
+ if (initialMessages.length > 0)
16
+ return initialMessages;
17
+ return [{
18
+ id: "banner",
19
+ type: "banner",
20
+ content: "banner"
21
+ }];
22
+ });
12
23
  const [status, setStatus] = useState(null);
13
- const [showIntro, setShowIntro] = useState(true);
14
24
  const [inputDisabled, setInputDisabled] = useState(false);
15
25
  const [chatContext, setChatContext] = useState(context);
16
26
  // Public methods to update UI from parent
@@ -18,19 +28,34 @@ export const ChatApp = ({ user, context, slashCommands, onUserMessage, onSlashCo
18
28
  // Store reference for external updates
19
29
  globalThis.__chatAppInterface = {
20
30
  addMessage: (message) => {
21
- setMessages((prev) => [...prev, message]);
31
+ try {
32
+ setMessages((prev) => [...prev, message]);
33
+ }
34
+ catch { }
22
35
  },
23
36
  setStatus: (statusMsg) => {
24
- setStatus(statusMsg);
37
+ try {
38
+ setStatus(statusMsg);
39
+ }
40
+ catch { }
25
41
  },
26
42
  clearStatus: () => {
27
- setStatus(null);
43
+ try {
44
+ setStatus(null);
45
+ }
46
+ catch { }
28
47
  },
29
48
  setInputDisabled: (disabled) => {
30
- setInputDisabled(disabled);
49
+ try {
50
+ setInputDisabled(disabled);
51
+ }
52
+ catch { }
31
53
  },
32
54
  updateContext: (newContext) => {
33
- setChatContext((prev) => ({ ...prev, ...newContext }));
55
+ try {
56
+ setChatContext((prev) => ({ ...prev, ...newContext }));
57
+ }
58
+ catch { }
34
59
  },
35
60
  };
36
61
  return () => {
@@ -43,9 +68,9 @@ export const ChatApp = ({ user, context, slashCommands, onUserMessage, onSlashCo
43
68
  const trimmed = value.trim();
44
69
  const normalized = trimmed.toLowerCase();
45
70
  // Hide intro after first message
46
- if (showIntro) {
47
- setShowIntro(false);
48
- }
71
+ // if (showIntro) {
72
+ // setShowIntro(false);
73
+ // }
49
74
  // Check for exit commands
50
75
  if (normalized === "exit" || normalized === "quit") {
51
76
  exit();
@@ -55,6 +80,25 @@ export const ChatApp = ({ user, context, slashCommands, onUserMessage, onSlashCo
55
80
  // Check for slash commands
56
81
  if (trimmed.startsWith("/")) {
57
82
  const [cmd, ...args] = trimmed.slice(1).split(/\s+/);
83
+ // Handle client-side commands
84
+ if (cmd === "clear") {
85
+ setMessages([
86
+ {
87
+ id: "banner",
88
+ type: "banner",
89
+ content: "banner",
90
+ },
91
+ ]);
92
+ return;
93
+ }
94
+ if (cmd === "config") {
95
+ setMessages(prev => [...prev, {
96
+ id: Date.now().toString(),
97
+ type: "system",
98
+ content: `Current Configuration:\nUser: ${user}\nMode: ${chatContext.mode}\nSession ID: ${chatContext.sessionId}`
99
+ }]);
100
+ return;
101
+ }
58
102
  const result = await onSlashCommand(cmd, args);
59
103
  if (result === "exit") {
60
104
  exit();
@@ -72,14 +116,15 @@ export const ChatApp = ({ user, context, slashCommands, onUserMessage, onSlashCo
72
116
  await onUserMessage(trimmed);
73
117
  };
74
118
  const handleCancel = () => {
75
- console.log("Cancelled — the assistant has stopped. Type whenever you're ready.");
76
119
  setInputDisabled(false); // Re-enable input after cancellation
77
120
  onCancel?.();
78
121
  };
79
122
  const getSuggestions = (input) => {
80
- const query = (input || "").replace(/^\//, "").toLowerCase();
81
- return slashCommands
82
- .filter((cmd) => cmd.value.includes(query))
123
+ if (!input.startsWith("/"))
124
+ return [];
125
+ const query = input.toLowerCase();
126
+ return allSlashCommands
127
+ .filter((cmd) => cmd.value.toLowerCase().startsWith(query))
83
128
  .map((cmd) => ({
84
129
  label: cmd.label,
85
130
  value: cmd.value,
@@ -93,33 +138,42 @@ export const ChatApp = ({ user, context, slashCommands, onUserMessage, onSlashCo
93
138
  : workspacePath;
94
139
  const statusLine = `path: ${displayPath} · mode: ${chatContext.mode}`;
95
140
  const footerLines = ["Press ESC to stop"];
96
- return (React.createElement(Box, { flexDirection: "column", padding: 1 },
97
- showIntro && (React.createElement(React.Fragment, null,
98
- React.createElement(Banner, null),
99
- React.createElement(Box, { marginBottom: 1 },
100
- React.createElement(Text, null,
101
- React.createElement(Text, { dimColor: true }, "\u2022"),
102
- React.createElement(Text, null, " "),
103
- React.createElement(Text, { color: "gray" }, "Signed in as"),
104
- React.createElement(Text, null, " "),
105
- React.createElement(Text, { color: "white" }, user))))),
106
- messages.map((message, index) => {
141
+ return (React.createElement(Box, { flexDirection: "column" },
142
+ React.createElement(Static, { items: messages }, (message, index) => {
107
143
  if (message.type === "user") {
108
144
  return (React.createElement(Box, { key: message.id },
109
145
  React.createElement(MessageBubble, { message: message.content })));
110
146
  }
111
147
  else if (message.type === "assistant") {
112
- return (React.createElement(Box, { key: message.id },
148
+ return (React.createElement(Box, { key: message.id, paddingX: 1 },
113
149
  React.createElement(AssistantResponse, { content: message.content, isError: message.isError })));
114
150
  }
115
151
  else if (message.type === "system") {
116
- return (React.createElement(Box, { key: message.id, marginTop: index === 0 ? 0 : 1 },
152
+ return (React.createElement(Box, { key: message.id, marginTop: index === 0 ? 0 : 1, paddingX: 1 },
117
153
  React.createElement(Text, { color: "gray" }, message.content)));
118
154
  }
119
- return null;
155
+ else if (message.type === "banner") {
156
+ return (React.createElement(Box, { key: message.id, paddingX: 0, marginBottom: 1 },
157
+ React.createElement(Box, { flexDirection: "column" },
158
+ React.createElement(Banner, { user: user, mode: chatContext.mode, path: displayPath }),
159
+ React.createElement(Box, { marginTop: 1, flexDirection: "column" },
160
+ React.createElement(Text, { color: "gray" }, "To get started, describe a task or try one of these commands:"),
161
+ React.createElement(Box, { marginTop: 1, flexDirection: "column" }, allSlashCommands
162
+ .filter((cmd) => ["/help", "/progress", "/session", "/clear", "/stop"].includes(cmd.value))
163
+ .map(cmd => (React.createElement(Text, { key: cmd.value },
164
+ React.createElement(Text, { color: "white", bold: true }, cmd.label),
165
+ React.createElement(Text, { color: "gray" },
166
+ " \u2013 ",
167
+ cmd.description)))))))));
168
+ }
169
+ return React.createElement(Box, { key: message.id });
120
170
  }),
121
- status && (React.createElement(Box, { marginTop: 1, marginBottom: 1 },
122
- React.createElement(StatusIndicator, { message: status.text, type: status.type }))),
123
- React.createElement(ChatInput, { placeholder: "Ask anything or use /help for commands", onSubmit: handleSubmit, onCancel: handleCancel, statusLine: statusLine, footerLines: footerLines, getSuggestions: getSuggestions, disabled: inputDisabled })));
171
+ React.createElement(Box, { flexDirection: "column" },
172
+ React.createElement(Box, { height: 1 }, status ? (React.createElement(StatusIndicator, { message: status.text, type: status.type })) : (React.createElement(Text, null, " "))),
173
+ React.createElement(Box, { height: 1, paddingX: 1 },
174
+ React.createElement(Text, { color: "gray", dimColor: true }, "100% context left")),
175
+ React.createElement(Box, null,
176
+ React.createElement(ChatInput, { placeholder: "Ask anything or use /help for commands", onSubmit: handleSubmit, onCancel: handleCancel, getSuggestions: getSuggestions, disabled: inputDisabled })),
177
+ React.createElement(Box, { height: 1, paddingX: 1 }, footerLines && footerLines.length > 0 ? (React.createElement(Text, { color: "gray", dimColor: true }, footerLines[0])) : (React.createElement(Text, null, " "))))));
124
178
  };
125
179
  //# sourceMappingURL=ChatApp.js.map
@@ -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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"}
@@ -0,0 +1,8 @@
1
+ import React from "react";
2
+ import { Box, Text } from "ink";
3
+ export const AssistantResponse = ({ content, isError }) => {
4
+ return (React.createElement(Box, { marginBottom: 1, flexDirection: "column" },
5
+ React.createElement(Text, { color: isError ? "red" : "green", bold: true }, "Agent:"),
6
+ React.createElement(Text, null, content)));
7
+ };
8
+ //# sourceMappingURL=AssistantResponse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AssistantResponse.js","sourceRoot":"","sources":["../../../../../src/commands/chat/components/AssistantResponse.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,GAAG,EAAE,IAAI,EAAC,MAAM,KAAK,CAAC;AAE9B,MAAM,CAAC,MAAM,iBAAiB,GAGzB,CAAC,EAAC,OAAO,EAAE,OAAO,EAAC,EAAE,EAAE;IAC1B,OAAO,CACL,oBAAC,GAAG,IAAC,YAAY,EAAE,CAAC,EAAE,aAAa,EAAC,QAAQ;QAC1C,oBAAC,IAAI,IAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,mBAErC;QACP,oBAAC,IAAI,QAAE,OAAO,CAAQ,CAClB,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,23 @@
1
+ import React from "react";
2
+ import { Text, Box } from "ink";
3
+ export const Banner = ({ user, mode, path, version = "v0.63.0" }) => {
4
+ return (React.createElement(Box, { borderStyle: "round", borderColor: "gray", paddingX: 1, flexDirection: "column", marginBottom: 1 },
5
+ React.createElement(Box, { marginBottom: 1 },
6
+ React.createElement(Text, { color: "gray" },
7
+ ">_ ",
8
+ React.createElement(Text, { color: "white", bold: true }, "TimetoTest CLI"),
9
+ " ",
10
+ React.createElement(Text, { color: "gray" },
11
+ "(",
12
+ version,
13
+ ")"))),
14
+ React.createElement(Box, null,
15
+ React.createElement(Text, { color: "gray" }, "directory: "),
16
+ React.createElement(Text, { color: "white" }, path)),
17
+ React.createElement(Box, null,
18
+ React.createElement(Text, { color: "gray" }, "user: "),
19
+ React.createElement(Text, { color: "white" }, user),
20
+ React.createElement(Text, { color: "gray" }, " \u00B7 mode: "),
21
+ React.createElement(Text, { color: "white" }, mode))));
22
+ };
23
+ //# sourceMappingURL=Banner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Banner.js","sourceRoot":"","sources":["../../../../../src/commands/chat/components/Banner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,IAAI,EAAE,GAAG,EAAC,MAAM,KAAK,CAAC;AAS9B,MAAM,CAAC,MAAM,MAAM,GAA0B,CAAC,EAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,GAAG,SAAS,EAAC,EAAE,EAAE;IACvF,OAAO,CACL,oBAAC,GAAG,IACF,WAAW,EAAC,OAAO,EACnB,WAAW,EAAC,MAAM,EAClB,QAAQ,EAAE,CAAC,EACX,aAAa,EAAC,QAAQ,EACtB,YAAY,EAAE,CAAC;QAEf,oBAAC,GAAG,IAAC,YAAY,EAAE,CAAC;YAClB,oBAAC,IAAI,IAAC,KAAK,EAAC,MAAM;gBACf,KAAK;gBACN,oBAAC,IAAI,IAAC,KAAK,EAAC,OAAO,EAAC,IAAI,2BAEjB;gBAAC,GAAG;gBACX,oBAAC,IAAI,IAAC,KAAK,EAAC,MAAM;;oBAAG,OAAO;wBAAS,CAChC,CACH;QAIN,oBAAC,GAAG;YACF,oBAAC,IAAI,IAAC,KAAK,EAAC,MAAM,kBAAmB;YACrC,oBAAC,IAAI,IAAC,KAAK,EAAC,OAAO,IAAE,IAAI,CAAQ,CAC7B;QAEN,oBAAC,GAAG;YACF,oBAAC,IAAI,IAAC,KAAK,EAAC,MAAM,aAAc;YAChC,oBAAC,IAAI,IAAC,KAAK,EAAC,OAAO,IAAE,IAAI,CAAQ;YACjC,oBAAC,IAAI,IAAC,KAAK,EAAC,MAAM,qBAAiB;YACnC,oBAAC,IAAI,IAAC,KAAK,EAAC,OAAO,IAAE,IAAI,CAAQ,CAC7B,CACF,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,95 @@
1
+ import React, { useEffect, useState } from "react";
2
+ import { Box, Text, useInput } from "ink";
3
+ import TextInput from "ink-text-input";
4
+ import { inkTheme } from "../../../lib/tui/ink/theme.js";
5
+ export const ChatInput = ({ placeholder, onSubmit, onCancel, getSuggestions, disabled, }) => {
6
+ const [query, setQuery] = useState("");
7
+ const [selectedIndex, setSelectedIndex] = useState(0);
8
+ const [windowStart, setWindowStart] = useState(0);
9
+ const allSuggestions = query.startsWith("/") && getSuggestions ? getSuggestions(query) : [];
10
+ const VISIBLE_ITEMS = 5;
11
+ // Keep indices in bounds and keep the selected item visible.
12
+ useEffect(() => {
13
+ if (allSuggestions.length === 0) {
14
+ if (selectedIndex !== 0)
15
+ setSelectedIndex(0);
16
+ if (windowStart !== 0)
17
+ setWindowStart(0);
18
+ return;
19
+ }
20
+ const clampedIndex = Math.min(selectedIndex, allSuggestions.length - 1);
21
+ if (clampedIndex !== selectedIndex) {
22
+ setSelectedIndex(clampedIndex);
23
+ }
24
+ const maxWindowStart = Math.max(0, allSuggestions.length - VISIBLE_ITEMS);
25
+ let nextWindowStart = Math.max(0, Math.min(maxWindowStart, windowStart));
26
+ if (clampedIndex < nextWindowStart) {
27
+ nextWindowStart = clampedIndex;
28
+ }
29
+ else if (clampedIndex >= nextWindowStart + VISIBLE_ITEMS) {
30
+ nextWindowStart = Math.min(maxWindowStart, clampedIndex - VISIBLE_ITEMS + 1);
31
+ }
32
+ if (nextWindowStart !== windowStart) {
33
+ setWindowStart(nextWindowStart);
34
+ }
35
+ }, [allSuggestions.length, selectedIndex, windowStart]);
36
+ const suggestions = allSuggestions.slice(windowStart, windowStart + VISIBLE_ITEMS);
37
+ const remainingCount = Math.max(0, allSuggestions.length - (windowStart + VISIBLE_ITEMS));
38
+ useInput((input, key) => {
39
+ if (key.escape) {
40
+ onCancel?.();
41
+ return;
42
+ }
43
+ if (disabled) {
44
+ return;
45
+ }
46
+ if (allSuggestions.length === 0)
47
+ return;
48
+ if (key.downArrow) {
49
+ const nextIndex = Math.min(selectedIndex + 1, allSuggestions.length - 1);
50
+ setSelectedIndex(nextIndex);
51
+ }
52
+ if (key.upArrow) {
53
+ const prevIndex = Math.max(selectedIndex - 1, 0);
54
+ setSelectedIndex(prevIndex);
55
+ }
56
+ if (key.return) {
57
+ const selected = allSuggestions[selectedIndex];
58
+ if (selected) {
59
+ setQuery(selected.value + " ");
60
+ // Optional: Submit immediately if desired, or just autocomplete
61
+ // onSubmit(selected.value);
62
+ }
63
+ }
64
+ });
65
+ return (React.createElement(Box, { flexDirection: "column" },
66
+ React.createElement(Box, { width: "100%", paddingX: 1, paddingY: 1, backgroundColor: inkTheme.colors.bg.input },
67
+ React.createElement(Box, null,
68
+ React.createElement(Text, { color: "white", bold: true }, "> "),
69
+ disabled ? (React.createElement(Text, { color: "gray" }, query)) : (React.createElement(TextInput, { value: query, onChange: (val) => {
70
+ setQuery(val);
71
+ setSelectedIndex(0);
72
+ setWindowStart(0);
73
+ }, onSubmit: (val) => {
74
+ setQuery("");
75
+ onSubmit(val);
76
+ }, placeholder: placeholder })))),
77
+ suggestions.length > 0 && (React.createElement(Box, { flexDirection: "column", borderStyle: "single", borderColor: "gray", marginTop: 0, paddingX: 1 },
78
+ suggestions.map((suggestion, index) => {
79
+ const globalIndex = windowStart + index;
80
+ const isSelected = globalIndex === selectedIndex;
81
+ return (React.createElement(Text, { key: suggestion.value },
82
+ React.createElement(Text, { color: isSelected ? "cyan" : "white", bold: isSelected },
83
+ isSelected ? "> " : " ",
84
+ suggestion.label),
85
+ " ",
86
+ React.createElement(Text, { color: "gray" },
87
+ "- ",
88
+ suggestion.description)));
89
+ }),
90
+ remainingCount > 0 && (React.createElement(Text, { color: "gray", dimColor: true },
91
+ "... ",
92
+ remainingCount,
93
+ " more (scroll with arrows)"))))));
94
+ };
95
+ //# sourceMappingURL=ChatInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatInput.js","sourceRoot":"","sources":["../../../../../src/commands/chat/components/ChatInput.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import React from "react";
2
+ import { Box, Text } from "ink";
3
+ import { inkTheme } from "../../../lib/tui/ink/theme.js";
4
+ export const MessageBubble = ({ message }) => {
5
+ return (React.createElement(Box, { width: "100%", paddingX: 1, paddingY: 1, marginBottom: 1, backgroundColor: inkTheme.colors.bg.userBubble },
6
+ React.createElement(Text, { color: "white", bold: true }, "> "),
7
+ React.createElement(Text, { color: "white" }, message)));
8
+ };
9
+ //# sourceMappingURL=MessageBubble.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MessageBubble.js","sourceRoot":"","sources":["../../../../../src/commands/chat/components/MessageBubble.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,GAAG,EAAE,IAAI,EAAC,MAAM,KAAK,CAAC;AAC9B,OAAO,EAAC,QAAQ,EAAC,MAAM,+BAA+B,CAAC;AAEvD,MAAM,CAAC,MAAM,aAAa,GAAgC,CAAC,EAAC,OAAO,EAAC,EAAE,EAAE;IACtE,OAAO,CACL,oBAAC,GAAG,IACF,KAAK,EAAC,MAAM,EACZ,QAAQ,EAAE,CAAC,EACX,QAAQ,EAAE,CAAC,EACX,YAAY,EAAE,CAAC,EACf,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU;QAE9C,oBAAC,IAAI,IAAC,KAAK,EAAC,OAAO,EAAC,IAAI,UAAE,IAAI,CAAQ;QACtC,oBAAC,IAAI,IAAC,KAAK,EAAC,OAAO,IAAE,OAAO,CAAQ,CAChC,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ import React from "react";
2
+ import { Box, Text } from "ink";
3
+ import Spinner from "ink-spinner";
4
+ export const StatusIndicator = ({ message, type }) => {
5
+ return (React.createElement(Box, null,
6
+ type === "loading" && (React.createElement(Text, { color: "yellow" },
7
+ React.createElement(Spinner, { type: "dots" }),
8
+ " ")),
9
+ React.createElement(Text, { color: type === "error" ? "red" : "gray" }, message)));
10
+ };
11
+ //# sourceMappingURL=StatusIndicator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StatusIndicator.js","sourceRoot":"","sources":["../../../../../src/commands/chat/components/StatusIndicator.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,GAAG,EAAE,IAAI,EAAC,MAAM,KAAK,CAAC;AAC9B,OAAO,OAAO,MAAM,aAAa,CAAC;AAElC,MAAM,CAAC,MAAM,eAAe,GAGvB,CAAC,EAAC,OAAO,EAAE,IAAI,EAAC,EAAE,EAAE;IACvB,OAAO,CACL,oBAAC,GAAG;QACD,IAAI,KAAK,SAAS,IAAI,CACrB,oBAAC,IAAI,IAAC,KAAK,EAAC,QAAQ;YAClB,oBAAC,OAAO,IAAC,IAAI,EAAC,MAAM,GAAG;YAAC,GAAG,CACtB,CACR;QACD,oBAAC,IAAI,IAAC,KAAK,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,IAAG,OAAO,CAAQ,CAC5D,CACP,CAAC;AACJ,CAAC,CAAC"}