@timetotest/cli 0.2.4 → 0.3.0
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 +49 -40
- package/dist/bin/ttt.js +0 -2
- package/dist/bin/ttt.js.map +1 -1
- package/dist/package.json +7 -3
- package/dist/src/commands/chat/ChatApp.js +249 -67
- package/dist/src/commands/chat/ChatApp.js.map +1 -1
- package/dist/src/commands/chat/components/ChatInput.js +61 -22
- package/dist/src/commands/chat/components/ChatInput.js.map +1 -1
- package/dist/src/commands/chat/components/ChatMessage.js +102 -0
- package/dist/src/commands/chat/components/ChatMessage.js.map +1 -0
- package/dist/src/commands/chat/components/MessageBubble.js +1 -1
- package/dist/src/commands/chat/components/MessageBubble.js.map +1 -1
- package/dist/src/commands/chat/components/PermissionPrompt.js +92 -0
- package/dist/src/commands/chat/components/PermissionPrompt.js.map +1 -0
- package/dist/src/commands/chat/components/StatusIndicator.js +21 -5
- package/dist/src/commands/chat/components/StatusIndicator.js.map +1 -1
- package/dist/src/commands/chat/components/ToolCallDisplay.js +141 -0
- package/dist/src/commands/chat/components/ToolCallDisplay.js.map +1 -0
- package/dist/src/commands/chat-ink.js +298 -79
- package/dist/src/commands/chat-ink.js.map +1 -1
- package/dist/src/commands/login.js +5 -5
- package/dist/src/commands/login.js.map +1 -1
- package/dist/src/commands/test.js +14 -291
- package/dist/src/commands/test.js.map +1 -1
- package/dist/src/lib/__tests__/code-mode-integration.test.js +381 -0
- package/dist/src/lib/__tests__/code-mode-integration.test.js.map +1 -0
- package/dist/src/lib/__tests__/config-manager.test.js +81 -0
- package/dist/src/lib/__tests__/config-manager.test.js.map +1 -0
- package/dist/src/lib/__tests__/mode-persistence-integration.test.js +75 -0
- package/dist/src/lib/__tests__/mode-persistence-integration.test.js.map +1 -0
- package/dist/src/lib/__tests__/permission-flow-integration.test.js +145 -0
- package/dist/src/lib/__tests__/permission-flow-integration.test.js.map +1 -0
- package/dist/src/lib/__tests__/permissions.test.js +132 -0
- package/dist/src/lib/__tests__/permissions.test.js.map +1 -0
- package/dist/src/lib/agent-orchestrator.js +259 -5
- package/dist/src/lib/agent-orchestrator.js.map +1 -1
- package/dist/src/lib/config.js +40 -0
- package/dist/src/lib/config.js.map +1 -1
- package/dist/src/lib/context-compactor.js +310 -0
- package/dist/src/lib/context-compactor.js.map +1 -0
- package/dist/src/lib/http.js +8 -0
- package/dist/src/lib/http.js.map +1 -1
- package/dist/src/lib/local-tools/code/__tests__/grep-search.test.js +146 -0
- package/dist/src/lib/local-tools/code/__tests__/grep-search.test.js.map +1 -0
- package/dist/src/lib/local-tools/code/__tests__/list-directory.test.js +192 -0
- package/dist/src/lib/local-tools/code/__tests__/list-directory.test.js.map +1 -0
- package/dist/src/lib/local-tools/code/__tests__/read-file.test.js +169 -0
- package/dist/src/lib/local-tools/code/__tests__/read-file.test.js.map +1 -0
- package/dist/src/lib/local-tools/code/__tests__/run-command.test.js +101 -0
- package/dist/src/lib/local-tools/code/__tests__/run-command.test.js.map +1 -0
- package/dist/src/lib/local-tools/code/__tests__/search-files.test.js +191 -0
- package/dist/src/lib/local-tools/code/__tests__/search-files.test.js.map +1 -0
- package/dist/src/lib/local-tools/code/grep-search.js +404 -0
- package/dist/src/lib/local-tools/code/grep-search.js.map +1 -0
- package/dist/src/lib/local-tools/code/index.js +11 -0
- package/dist/src/lib/local-tools/code/index.js.map +1 -0
- package/dist/src/lib/local-tools/code/list-directory.js +276 -0
- package/dist/src/lib/local-tools/code/list-directory.js.map +1 -0
- package/dist/src/lib/local-tools/code/read-file.js +301 -0
- package/dist/src/lib/local-tools/code/read-file.js.map +1 -0
- package/dist/src/lib/local-tools/code/run-command.js +235 -0
- package/dist/src/lib/local-tools/code/run-command.js.map +1 -0
- package/dist/src/lib/local-tools/code/search-files.js +297 -0
- package/dist/src/lib/local-tools/code/search-files.js.map +1 -0
- package/dist/src/lib/local-tools/code/types.js +6 -0
- package/dist/src/lib/local-tools/code/types.js.map +1 -0
- package/dist/src/lib/permissions.js +94 -0
- package/dist/src/lib/permissions.js.map +1 -0
- package/dist/src/lib/prompts/builder.js +13 -10
- package/dist/src/lib/prompts/builder.js.map +1 -1
- package/dist/src/lib/prompts/templates.js +78 -0
- package/dist/src/lib/prompts/templates.js.map +1 -1
- package/dist/src/lib/session-manager.js.map +1 -1
- package/dist/src/lib/testing-mode.js +2 -2
- package/dist/src/lib/testing-mode.js.map +1 -1
- package/dist/src/lib/tool-executor.js +131 -2
- package/dist/src/lib/tool-executor.js.map +1 -1
- package/dist/src/lib/tool-registry.js +171 -3
- package/dist/src/lib/tool-registry.js.map +1 -1
- package/dist/src/lib/tool-result-pruner.js +4 -4
- package/dist/src/lib/tool-result-pruner.js.map +1 -1
- package/dist/src/lib/tui/ink/components/AppFrame.js +17 -0
- package/dist/src/lib/tui/ink/components/AppFrame.js.map +1 -0
- package/dist/src/lib/tui/ink/components/CommandPalette.js +24 -0
- package/dist/src/lib/tui/ink/components/CommandPalette.js.map +1 -0
- package/dist/src/lib/tui/ink/components/Pill.js +19 -0
- package/dist/src/lib/tui/ink/components/Pill.js.map +1 -0
- package/dist/src/lib/tui/ink/components/TimetoTestLogo.js +30 -0
- package/dist/src/lib/tui/ink/components/TimetoTestLogo.js.map +1 -0
- package/dist/src/lib/tui/ink/theme.js +13 -6
- package/dist/src/lib/tui/ink/theme.js.map +1 -1
- package/dist/src/lib/tui/interactive-chat.js +35 -35
- package/dist/src/lib/tui/interactive-chat.js.map +1 -1
- package/dist/src/lib/tui/print.js +18 -18
- package/dist/src/lib/tui/print.js.map +1 -1
- package/dist/src/lib/tui/prompt.js +3 -3
- package/dist/src/lib/tui/prompt.js.map +1 -1
- package/dist/src/lib/tui/status.js +1 -1
- package/dist/src/lib/tui/status.js.map +1 -1
- package/dist/src/lib/update.js +10 -10
- package/dist/src/lib/update.js.map +1 -1
- package/package.json +7 -3
- package/dist/src/commands/start-test.js +0 -180
- package/dist/src/commands/start-test.js.map +0 -1
- package/dist/src/commands/stream/StreamApp.js +0 -127
- package/dist/src/commands/stream/StreamApp.js.map +0 -1
- package/dist/src/commands/stream.js +0 -52
- package/dist/src/commands/stream.js.map +0 -1
- package/dist/src/commands/test/TestRunApp.js +0 -183
- package/dist/src/commands/test/TestRunApp.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,66 +1,75 @@
|
|
|
1
|
-
#
|
|
1
|
+
# TimetoTest CLI
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
**Ship Faster with AI Agents That Don't Flake**
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Give our agent a URL and a goal. It plans, executes, and self-heals end-to-end tests in an isolated environment. Built for developers and QA engineers who demand verifiable evidence, not black-box magic.
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
- Local-first: runs on your machine for fast, private feedback.
|
|
9
|
-
- Intelligent discovery: finds pages, endpoints, and flows to expand coverage.
|
|
10
|
-
- Clear results: human-readable reports that explain what passed and why failures happened.
|
|
7
|
+
## Capabilities
|
|
11
8
|
|
|
12
|
-
|
|
9
|
+
- **UI Testing** — Real browser automation with semantic DOM understanding
|
|
10
|
+
- **API Testing** — Validate endpoints, schemas, and response data
|
|
11
|
+
- **Code Analysis** — Local code analysis for bug finding and quality checks
|
|
12
|
+
- **End-to-End** — Complete user journey validation
|
|
13
|
+
- **Regression** — Catch breaking changes before production
|
|
13
14
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
- Local mode (default): runs browser automation and API checks on your machine; ideal for localhost and PR previews.
|
|
17
|
-
- Cloud mode: optional remote execution without localhost access; better for prod/staging where local access isn’t possible.
|
|
18
|
-
- Post-run: you get an actionable summary and a report capturing steps, assertions, and failures.
|
|
19
|
-
|
|
20
|
-
## Quick start
|
|
15
|
+
## Quick Start
|
|
21
16
|
|
|
22
17
|
```bash
|
|
23
18
|
npm install -g @timetotest/cli
|
|
24
19
|
|
|
25
|
-
# Start an interactive
|
|
20
|
+
# Start an interactive session
|
|
26
21
|
ttt
|
|
27
22
|
|
|
28
|
-
# Run a
|
|
29
|
-
ttt test "
|
|
23
|
+
# Run a test with a prompt
|
|
24
|
+
ttt test "Verify the login flow works" --url http://localhost:3000
|
|
30
25
|
```
|
|
31
26
|
|
|
32
|
-
##
|
|
27
|
+
## How It Works
|
|
33
28
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
29
|
+
1. **Describe Your Test** — Write your testing goal in plain English. No scripts, no complex selectors.
|
|
30
|
+
2. **Smart Test Planning** — The agent analyzes your application and builds a comprehensive test plan.
|
|
31
|
+
3. **Automated Execution** — Watch the agent execute in a real browser, interacting exactly like a human.
|
|
32
|
+
4. **Actionable Results** — Get clear reports with screenshots, video logs, and step-by-step diagnostics.
|
|
37
33
|
|
|
38
|
-
##
|
|
34
|
+
## Technical Excellence
|
|
39
35
|
|
|
40
|
-
-
|
|
41
|
-
-
|
|
36
|
+
- **Semantic DOM Parsing** — Understands context, not just pixels. No brittle visual-only testing.
|
|
37
|
+
- **LLM-Powered Planning** — Decomposes complex flows into atomic, verifiable actions.
|
|
38
|
+
- **Self-Healing Tests** — Adapts to UI changes automatically. Stop maintaining broken selectors.
|
|
39
|
+
- **Isolated Execution** — Tests run in ephemeral sandboxes destroyed after every run.
|
|
40
|
+
- **Evidence-Based Reports** — Screenshots, video logs, and step-by-step diagnostics for every test.
|
|
42
41
|
|
|
43
|
-
##
|
|
42
|
+
## Use Cases
|
|
44
43
|
|
|
45
|
-
-
|
|
46
|
-
-
|
|
47
|
-
-
|
|
44
|
+
- **Regression Testing** — Automated suites that run on every deploy
|
|
45
|
+
- **E2E Flow Validation** — Validate complete user journeys without writing test scripts
|
|
46
|
+
- **API Contract Testing** — Automatic schema validation and edge case handling
|
|
47
|
+
- **Sprint QA Automation** — Ship faster by automating QA within your sprint cycles
|
|
48
|
+
- **Bug Reproduction** — Turn vague bug reports into actionable test cases with evidence
|
|
48
49
|
|
|
49
|
-
##
|
|
50
|
+
## Code Mode
|
|
50
51
|
|
|
51
|
-
|
|
52
|
-
- Issues and support: use the support links on the website
|
|
52
|
+
Analyze your local codebase for bugs, run linters, and execute tests — no GitHub integration required.
|
|
53
53
|
|
|
54
|
-
|
|
54
|
+
```bash
|
|
55
|
+
# Start in code mode
|
|
56
|
+
ttt --mode code
|
|
55
57
|
|
|
56
|
-
|
|
58
|
+
# Example prompts
|
|
59
|
+
> "Find potential null pointer issues in src/api/"
|
|
60
|
+
> "Run ESLint and fix the errors"
|
|
61
|
+
> "Find and run the auth tests"
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Requirements
|
|
57
65
|
|
|
58
|
-
|
|
66
|
+
- Node.js 18+
|
|
67
|
+
- macOS, Linux, or Windows
|
|
68
|
+
- Chrome/Chromium for UI testing
|
|
59
69
|
|
|
60
|
-
##
|
|
70
|
+
## Links
|
|
61
71
|
|
|
62
|
-
|
|
72
|
+
- Website: https://timetotest.tech
|
|
73
|
+
- Docs: https://timetotest.tech/docs
|
|
63
74
|
|
|
64
|
-
|
|
65
|
-
- Startup teams needing fast feedback on PRs
|
|
66
|
-
- QA engineers exploring flows rapidly in staging
|
|
75
|
+
No credit card required • Free tier forever
|
package/dist/bin/ttt.js
CHANGED
|
@@ -5,7 +5,6 @@ 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
7
|
import { restart } from "../src/commands/restart.js";
|
|
8
|
-
import { stream } from "../src/commands/stream.js";
|
|
9
8
|
import { report } from "../src/commands/report.js";
|
|
10
9
|
import { share } from "../src/commands/share.js";
|
|
11
10
|
import { applyStyledHelpRecursively } from "../src/lib/help.js";
|
|
@@ -18,7 +17,6 @@ program.addCommand(login);
|
|
|
18
17
|
program.addCommand(test);
|
|
19
18
|
program.addCommand(status);
|
|
20
19
|
program.addCommand(restart);
|
|
21
|
-
program.addCommand(stream);
|
|
22
20
|
program.addCommand(report);
|
|
23
21
|
program.addCommand(share);
|
|
24
22
|
program.addCommand(chat);
|
package/dist/bin/ttt.js.map
CHANGED
|
@@ -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,
|
|
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"}
|
package/dist/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@timetotest/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Time to Test CLI",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -23,7 +23,9 @@
|
|
|
23
23
|
"publish": "node scripts/publish.mjs",
|
|
24
24
|
"publish:dev": "node scripts/publish.mjs --channel dev",
|
|
25
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"
|
|
26
|
+
"upgrade-and-push": "npm run version:patch && git push && git push --tags && npm run publish",
|
|
27
|
+
"test": "vitest run",
|
|
28
|
+
"test:watch": "vitest"
|
|
27
29
|
},
|
|
28
30
|
"publishConfig": {
|
|
29
31
|
"access": "public"
|
|
@@ -54,6 +56,7 @@
|
|
|
54
56
|
"react": "^19.2.0",
|
|
55
57
|
"readline": "^1.3.0",
|
|
56
58
|
"socket.io-client": "^4.7.5",
|
|
59
|
+
"tiktoken": "^1.0.17",
|
|
57
60
|
"yaml": "^2.8.1"
|
|
58
61
|
},
|
|
59
62
|
"devDependencies": {
|
|
@@ -62,6 +65,7 @@
|
|
|
62
65
|
"@types/inquirer": "^9.0.9",
|
|
63
66
|
"@types/node": "^20.11.19",
|
|
64
67
|
"@types/react": "^19.2.2",
|
|
65
|
-
"typescript": "^5.5.4"
|
|
68
|
+
"typescript": "^5.5.4",
|
|
69
|
+
"vitest": "^1.6.0"
|
|
66
70
|
}
|
|
67
71
|
}
|
|
@@ -1,28 +1,139 @@
|
|
|
1
|
-
import React, {
|
|
2
|
-
import { Box, Text, useApp,
|
|
1
|
+
import React, { useEffect, useMemo, useRef, useState } from "react";
|
|
2
|
+
import { Box, Text, useApp, useInput, useStdout } from "ink";
|
|
3
3
|
import os from "node:os";
|
|
4
|
-
import { Banner } from "./components/Banner.js";
|
|
5
4
|
import { ChatInput } from "./components/ChatInput.js";
|
|
6
|
-
import { MessageBubble } from "./components/MessageBubble.js";
|
|
7
|
-
import { AssistantResponse } from "./components/AssistantResponse.js";
|
|
8
5
|
import { StatusIndicator } from "./components/StatusIndicator.js";
|
|
9
|
-
|
|
6
|
+
import { PermissionPrompt } from "./components/PermissionPrompt.js";
|
|
7
|
+
import { ToolCallDisplay } from "./components/ToolCallDisplay.js";
|
|
8
|
+
import { TESTING_MODES } from "../../lib/testing-mode.js";
|
|
9
|
+
import { TimetoTestLogo } from "../../lib/tui/ink/components/TimetoTestLogo.js";
|
|
10
|
+
import { ChatMessage } from "./components/ChatMessage.js";
|
|
11
|
+
import { CommandPalette, } from "../../lib/tui/ink/components/CommandPalette.js";
|
|
12
|
+
export const ChatApp = ({ user, context, slashCommands, onUserMessage, onSlashCommand, onSetTestingMode, onExit, onCancel, initialMessages = [], initialInput, }) => {
|
|
10
13
|
// Single source of truth: `slashCommands` comes from `chat-ink.ts`.
|
|
11
14
|
const allSlashCommands = slashCommands;
|
|
12
15
|
const { exit } = useApp();
|
|
13
|
-
|
|
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
|
-
});
|
|
16
|
+
const { stdout } = useStdout();
|
|
17
|
+
const [messages, setMessages] = useState(() => initialMessages.length > 0 ? initialMessages : []);
|
|
23
18
|
const [status, setStatus] = useState(null);
|
|
24
19
|
const [inputDisabled, setInputDisabled] = useState(false);
|
|
25
20
|
const [chatContext, setChatContext] = useState(context);
|
|
21
|
+
const [inputValue, setInputValue] = useState(initialInput ?? "");
|
|
22
|
+
const inputHistoryRef = useRef([]);
|
|
23
|
+
const historyIndexRef = useRef(-1);
|
|
24
|
+
const [showSystem, setShowSystem] = useState(true);
|
|
25
|
+
const [paletteOpen, setPaletteOpen] = useState(false);
|
|
26
|
+
const [paletteQuery, setPaletteQuery] = useState("");
|
|
27
|
+
const [paletteIndex, setPaletteIndex] = useState(0);
|
|
28
|
+
// Permission prompt state
|
|
29
|
+
const [permissionRequest, setPermissionRequest] = useState(null);
|
|
30
|
+
const permissionResolverRef = useRef(null);
|
|
31
|
+
const paletteItems = useMemo(() => {
|
|
32
|
+
const base = [
|
|
33
|
+
{ 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" },
|
|
47
|
+
{ id: "exit_session", title: "Exit", hint: "ctrl+q" },
|
|
48
|
+
];
|
|
49
|
+
const q = paletteQuery.trim().toLowerCase();
|
|
50
|
+
if (!q)
|
|
51
|
+
return base;
|
|
52
|
+
return base.filter((i) => i.title.toLowerCase().includes(q) ||
|
|
53
|
+
(i.hint || "").toLowerCase().includes(q));
|
|
54
|
+
}, [paletteQuery, showSystem]);
|
|
55
|
+
const runPaletteAction = async (id) => {
|
|
56
|
+
if (id === "help")
|
|
57
|
+
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([]);
|
|
76
|
+
else if (id === "exit_session") {
|
|
77
|
+
exit();
|
|
78
|
+
onExit();
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
const toggleTestingMode = () => {
|
|
82
|
+
const current = chatContext.testingMode;
|
|
83
|
+
const idx = TESTING_MODES.indexOf(current);
|
|
84
|
+
const next = TESTING_MODES[(idx + 1) % TESTING_MODES.length] ?? "ui";
|
|
85
|
+
setChatContext((prev) => ({ ...prev, testingMode: next }));
|
|
86
|
+
onSetTestingMode?.(next);
|
|
87
|
+
};
|
|
88
|
+
useInput((input, key) => {
|
|
89
|
+
// Global keybinds (avoid fighting with input)
|
|
90
|
+
if (key.ctrl && input === "l") {
|
|
91
|
+
setMessages([]);
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
if (key.ctrl && input === "q") {
|
|
95
|
+
exit();
|
|
96
|
+
onExit();
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
if (key.ctrl && input === "k") {
|
|
100
|
+
setPaletteOpen(true);
|
|
101
|
+
setPaletteQuery("");
|
|
102
|
+
setPaletteIndex(0);
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
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
|
+
});
|
|
26
137
|
// Public methods to update UI from parent
|
|
27
138
|
useEffect(() => {
|
|
28
139
|
// Store reference for external updates
|
|
@@ -57,6 +168,42 @@ export const ChatApp = ({ user, context, slashCommands, onUserMessage, onSlashCo
|
|
|
57
168
|
}
|
|
58
169
|
catch { }
|
|
59
170
|
},
|
|
171
|
+
// Update the last tool message with result
|
|
172
|
+
updateLastToolMessage: (update) => {
|
|
173
|
+
try {
|
|
174
|
+
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
|
+
}
|
|
184
|
+
if (lastIndex === -1)
|
|
185
|
+
return prev;
|
|
186
|
+
const updated = [...prev];
|
|
187
|
+
updated[lastIndex] = {
|
|
188
|
+
...updated[lastIndex],
|
|
189
|
+
metadata: {
|
|
190
|
+
...updated[lastIndex].metadata,
|
|
191
|
+
toolResult: update.result,
|
|
192
|
+
isLoading: update.isLoading,
|
|
193
|
+
},
|
|
194
|
+
};
|
|
195
|
+
return updated;
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
catch { }
|
|
199
|
+
},
|
|
200
|
+
// Permission prompt handler - returns a promise that resolves with user's response
|
|
201
|
+
promptPermission: (request) => {
|
|
202
|
+
return new Promise((resolve) => {
|
|
203
|
+
permissionResolverRef.current = resolve;
|
|
204
|
+
setPermissionRequest(request);
|
|
205
|
+
});
|
|
206
|
+
},
|
|
60
207
|
};
|
|
61
208
|
return () => {
|
|
62
209
|
delete globalThis.__chatAppInterface;
|
|
@@ -72,31 +219,32 @@ export const ChatApp = ({ user, context, slashCommands, onUserMessage, onSlashCo
|
|
|
72
219
|
// setShowIntro(false);
|
|
73
220
|
// }
|
|
74
221
|
// Check for exit commands
|
|
75
|
-
if (normalized === "exit"
|
|
222
|
+
if (normalized === "exit") {
|
|
76
223
|
exit();
|
|
77
224
|
onExit();
|
|
78
225
|
return;
|
|
79
226
|
}
|
|
80
227
|
// Check for slash commands
|
|
81
228
|
if (trimmed.startsWith("/")) {
|
|
82
|
-
const
|
|
229
|
+
const parts = trimmed.slice(1).split(/\s+/);
|
|
230
|
+
const cmd = parts[0];
|
|
231
|
+
const args = parts.slice(1);
|
|
232
|
+
if (!cmd)
|
|
233
|
+
return; // Ignore lone "/"
|
|
83
234
|
// Handle client-side commands
|
|
84
235
|
if (cmd === "clear") {
|
|
85
|
-
setMessages([
|
|
86
|
-
{
|
|
87
|
-
id: "banner",
|
|
88
|
-
type: "banner",
|
|
89
|
-
content: "banner",
|
|
90
|
-
},
|
|
91
|
-
]);
|
|
236
|
+
setMessages([]);
|
|
92
237
|
return;
|
|
93
238
|
}
|
|
94
239
|
if (cmd === "config") {
|
|
95
|
-
setMessages(prev => [
|
|
240
|
+
setMessages((prev) => [
|
|
241
|
+
...prev,
|
|
242
|
+
{
|
|
96
243
|
id: Date.now().toString(),
|
|
97
244
|
type: "system",
|
|
98
|
-
content: `Current Configuration:\nUser: ${user}\nMode: ${chatContext.mode}\nSession ID: ${chatContext.sessionId}
|
|
99
|
-
}
|
|
245
|
+
content: `Current Configuration:\nUser: ${user}\nMode: ${chatContext.mode}\nSession ID: ${chatContext.sessionId}`,
|
|
246
|
+
},
|
|
247
|
+
]);
|
|
100
248
|
return;
|
|
101
249
|
}
|
|
102
250
|
const result = await onSlashCommand(cmd, args);
|
|
@@ -113,12 +261,21 @@ export const ChatApp = ({ user, context, slashCommands, onUserMessage, onSlashCo
|
|
|
113
261
|
content: trimmed,
|
|
114
262
|
};
|
|
115
263
|
setMessages((prev) => [...prev, userMessage]);
|
|
264
|
+
inputHistoryRef.current.push(trimmed);
|
|
265
|
+
historyIndexRef.current = inputHistoryRef.current.length;
|
|
116
266
|
await onUserMessage(trimmed);
|
|
117
267
|
};
|
|
118
268
|
const handleCancel = () => {
|
|
119
269
|
setInputDisabled(false); // Re-enable input after cancellation
|
|
120
270
|
onCancel?.();
|
|
121
271
|
};
|
|
272
|
+
const handlePermissionResponse = (response) => {
|
|
273
|
+
if (permissionResolverRef.current) {
|
|
274
|
+
permissionResolverRef.current(response);
|
|
275
|
+
permissionResolverRef.current = null;
|
|
276
|
+
}
|
|
277
|
+
setPermissionRequest(null);
|
|
278
|
+
};
|
|
122
279
|
const getSuggestions = (input) => {
|
|
123
280
|
if (!input.startsWith("/"))
|
|
124
281
|
return [];
|
|
@@ -136,44 +293,69 @@ export const ChatApp = ({ user, context, slashCommands, onUserMessage, onSlashCo
|
|
|
136
293
|
const displayPath = workspacePath.startsWith(homeDir)
|
|
137
294
|
? `~${workspacePath.slice(homeDir.length)}`
|
|
138
295
|
: workspacePath;
|
|
139
|
-
const
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
React.createElement(Text, {
|
|
175
|
-
|
|
176
|
-
React.createElement(
|
|
177
|
-
|
|
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;
|
|
308
|
+
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
|
+
})),
|
|
327
|
+
status && (React.createElement(Box, { paddingY: 1, overflow: "hidden" },
|
|
328
|
+
React.createElement(StatusIndicator, { message: status.text, type: status.type }))),
|
|
329
|
+
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,
|
|
331
|
+
React.createElement(Text, { bold: true, color: "white" }, "tab"),
|
|
332
|
+
" ",
|
|
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: () => {
|
|
338
|
+
const hist = inputHistoryRef.current;
|
|
339
|
+
if (hist.length === 0)
|
|
340
|
+
return;
|
|
341
|
+
const next = Math.max(0, (historyIndexRef.current < 0
|
|
342
|
+
? hist.length
|
|
343
|
+
: historyIndexRef.current) - 1);
|
|
344
|
+
historyIndexRef.current = next;
|
|
345
|
+
setInputValue(hist[next] || "");
|
|
346
|
+
}, onHistoryDown: () => {
|
|
347
|
+
const hist = inputHistoryRef.current;
|
|
348
|
+
if (hist.length === 0)
|
|
349
|
+
return;
|
|
350
|
+
const next = Math.min(hist.length, (historyIndexRef.current < 0
|
|
351
|
+
? hist.length
|
|
352
|
+
: historyIndexRef.current) + 1);
|
|
353
|
+
historyIndexRef.current = next;
|
|
354
|
+
if (next >= hist.length) {
|
|
355
|
+
setInputValue("");
|
|
356
|
+
return;
|
|
357
|
+
}
|
|
358
|
+
setInputValue(hist[next] || "");
|
|
359
|
+
} })));
|
|
178
360
|
};
|
|
179
361
|
//# sourceMappingURL=ChatApp.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatApp.js","sourceRoot":"","sources":["../../../../src/commands/chat/ChatApp.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAC,QAAQ,EAAE,SAAS,EAAC,MAAM,OAAO,CAAC;AACjD,OAAO,EAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAC,MAAM,KAAK,CAAC;AAC9C,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAC,MAAM,EAAC,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAC,SAAS,EAAC,MAAM,2BAA2B,CAAC;AACpD,OAAO,EAAC,aAAa,EAAC,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAC,iBAAiB,EAAC,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAC,eAAe,EAAC,MAAM,iCAAiC,CAAC;AA2ChE,MAAM,CAAC,MAAM,OAAO,GAA2B,CAAC,EAC9C,IAAI,EACJ,OAAO,EACP,aAAa,EACb,aAAa,EACb,cAAc,EACd,MAAM,EACN,QAAQ,EACR,eAAe,GAAG,EAAE,GACrB,EAAE,EAAE;IACH,oEAAoE;IACpE,MAAM,gBAAgB,GAAG,aAAa,CAAC;IACvC,MAAM,EAAC,IAAI,EAAC,GAAG,MAAM,EAAE,CAAC;IACxB,2CAA2C;IAC3C,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAY,GAAG,EAAE;QACvD,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,eAAe,CAAC;QACvD,OAAO,CAAC;gBACN,EAAE,EAAE,QAAQ;gBACZ,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,QAAQ;aAClB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAuB,IAAI,CAAC,CAAC;IACjE,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC1D,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAc,OAAO,CAAC,CAAC;IAErE,0CAA0C;IAC1C,SAAS,CAAC,GAAG,EAAE;QACb,uCAAuC;QACtC,UAAkB,CAAC,kBAAkB,GAAG;YACvC,UAAU,EAAE,CAAC,OAAgB,EAAE,EAAE;gBAC/B,IAAI,CAAC;oBACH,WAAW,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;gBAC5C,CAAC;gBAAC,MAAM,CAAC,CAAA,CAAC;YACZ,CAAC;YACD,SAAS,EAAE,CAAC,SAA+B,EAAE,EAAE;gBAC7C,IAAI,CAAC;oBACH,SAAS,CAAC,SAAS,CAAC,CAAC;gBACvB,CAAC;gBAAC,MAAM,CAAC,CAAA,CAAC;YACZ,CAAC;YACD,WAAW,EAAE,GAAG,EAAE;gBAChB,IAAI,CAAC;oBACH,SAAS,CAAC,IAAI,CAAC,CAAC;gBAClB,CAAC;gBAAC,MAAM,CAAC,CAAA,CAAC;YACZ,CAAC;YACD,gBAAgB,EAAE,CAAC,QAAiB,EAAE,EAAE;gBACtC,IAAI,CAAC;oBACH,gBAAgB,CAAC,QAAQ,CAAC,CAAC;gBAC7B,CAAC;gBAAC,MAAM,CAAC,CAAA,CAAC;YACZ,CAAC;YACD,aAAa,EAAE,CAAC,UAAgC,EAAE,EAAE;gBAClD,IAAI,CAAC;oBACH,cAAc,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAC,GAAG,IAAI,EAAE,GAAG,UAAU,EAAC,CAAC,CAAC,CAAC;gBACvD,CAAC;gBAAC,MAAM,CAAC,CAAA,CAAC;YACZ,CAAC;SACF,CAAC;QAEF,OAAO,GAAG,EAAE;YACV,OAAQ,UAAkB,CAAC,kBAAkB,CAAC;QAChD,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,YAAY,GAAG,KAAK,EAAE,KAAa,EAAE,EAAE;QAC3C,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;YAAE,OAAO;QAE1B,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7B,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;QAEzC,iCAAiC;QACjC,mBAAmB;QACnB,yBAAyB;QACzB,IAAI;QAEJ,0BAA0B;QAC1B,IAAI,UAAU,KAAK,MAAM,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;YACnD,IAAI,EAAE,CAAC;YACP,MAAM,EAAE,CAAC;YACT,OAAO;QACT,CAAC;QAED,2BAA2B;QAC3B,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAErD,8BAA8B;YAC9B,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;gBACpB,WAAW,CAAC;oBACV;wBACE,EAAE,EAAE,QAAQ;wBACZ,IAAI,EAAE,QAAQ;wBACd,OAAO,EAAE,QAAQ;qBAClB;iBACF,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YAED,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;gBACpB,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE;wBAC1B,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;wBACzB,IAAI,EAAE,QAAQ;wBACd,OAAO,EAAE,iCAAiC,IAAI,WAAW,WAAW,CAAC,IAAI,iBAAiB,WAAW,CAAC,SAAS,EAAE;qBACpH,CAAC,CAAC,CAAC;gBACJ,OAAO;YACV,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAC/C,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBACtB,IAAI,EAAE,CAAC;gBACP,MAAM,EAAE,CAAC;YACX,CAAC;YACD,OAAO;QACT,CAAC;QAED,kBAAkB;QAClB,MAAM,WAAW,GAAY;YAC3B,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;YACzB,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,OAAO;SACjB,CAAC;QACF,WAAW,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;QAC9C,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,GAAG,EAAE;QACxB,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,qCAAqC;QAC9D,QAAQ,EAAE,EAAE,CAAC;IACf,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,CAAC,KAAa,EAAE,EAAE;QACvC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QAElC,OAAO,gBAAgB;aACpB,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;aAC1D,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACb,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,WAAW,EAAE,GAAG,CAAC,WAAW;SAC7B,CAAC,CAAC,CAAC;IACR,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IACpC,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IAC7B,MAAM,WAAW,GAAG,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC;QACnD,CAAC,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QAC3C,CAAC,CAAC,aAAa,CAAC;IAElB,MAAM,UAAU,GAAG,SAAS,WAAW,YAAY,WAAW,CAAC,IAAI,EAAE,CAAC;IACtE,MAAM,WAAW,GAAG,CAAC,mBAAmB,CAAC,CAAC;IAE1C,OAAO,CACL,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ;QAKzB,oBAAC,MAAM,IAAC,KAAK,EAAE,QAAQ,IACpB,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;YAClB,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC5B,OAAO,CACL,oBAAC,GAAG,IAAC,GAAG,EAAE,OAAO,CAAC,EAAE;oBAClB,oBAAC,aAAa,IAAC,OAAO,EAAE,OAAO,CAAC,OAAO,GAAI,CACvC,CACP,CAAC;YACJ,CAAC;iBAAM,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBACxC,OAAO,CACL,oBAAC,GAAG,IAAC,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC;oBAC/B,oBAAC,iBAAiB,IAChB,OAAO,EAAE,OAAO,CAAC,OAAO,EACxB,OAAO,EAAE,OAAO,CAAC,OAAO,GACxB,CACE,CACP,CAAC;YACJ,CAAC;iBAAM,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACrC,OAAO,CACL,oBAAC,GAAG,IAAC,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC;oBAC/D,oBAAC,IAAI,IAAC,KAAK,EAAC,MAAM,IAAE,OAAO,CAAC,OAAO,CAAQ,CACvC,CACP,CAAC;YACJ,CAAC;iBAAM,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACpC,OAAO,CACN,oBAAC,GAAG,IAAC,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC;oBAChD,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ;wBACzB,oBAAC,MAAM,IACL,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,WAAW,CAAC,IAAI,EACtB,IAAI,EAAE,WAAW,GACjB;wBACF,oBAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,aAAa,EAAC,QAAQ;4BACvC,oBAAC,IAAI,IAAC,KAAK,EAAC,MAAM,oEAAqE;4BACvF,oBAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,aAAa,EAAC,QAAQ,IACtC,gBAAgB;iCACd,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CACd,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAC1E;iCACA,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CACZ,oBAAC,IAAI,IAAC,GAAG,EAAE,GAAG,CAAC,KAAK;gCAClB,oBAAC,IAAI,IAAC,KAAK,EAAC,OAAO,EAAC,IAAI,UAAE,GAAG,CAAC,KAAK,CAAQ;gCAC3C,oBAAC,IAAI,IAAC,KAAK,EAAC,MAAM;;oCAAK,GAAG,CAAC,WAAW,CAAQ,CACzC,CACR,CAAC,CACE,CACF,CACF,CACF,CACN,CAAC;YACL,CAAC;YACD,OAAO,oBAAC,GAAG,IAAC,GAAG,EAAE,OAAO,CAAC,EAAE,GAAI,CAAC;QAClC,CAAC,CACM;QAGT,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ;YAEzB,oBAAC,GAAG,IAAC,MAAM,EAAE,CAAC,IACX,MAAM,CAAC,CAAC,CAAC,CACR,oBAAC,eAAe,IAAC,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,GAAI,CAC7D,CAAC,CAAC,CAAC,CACF,oBAAC,IAAI,YAAS,CACf,CACG;YAIN,oBAAC,GAAG,IAAC,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC;gBACxB,oBAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,QAAQ,8BAAyB,CACjD;YAGN,oBAAC,GAAG;gBACF,oBAAC,SAAS,IACR,WAAW,EAAC,wCAAwC,EACpD,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,YAAY,EACtB,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,aAAa,GACvB,CACE;YAGN,oBAAC,GAAG,IAAC,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,IACxB,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CACvC,oBAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,QAAQ,UACxB,WAAW,CAAC,CAAC,CAAC,CACV,CACR,CAAC,CAAC,CAAC,CACF,oBAAC,IAAI,YAAS,CACf,CACG,CACF,CACF,CACP,CAAC;AACJ,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"ChatApp.js","sourceRoot":"","sources":["../../../../src/commands/chat/ChatApp.tsx"],"names":[],"mappings":"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"}
|