# sqdqzy/aitoolrunner architecture

> Architecture diagram of the GitHub repository sqdqzy/aitoolrunner, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/sqdqzy/aitoolrunner
- Repository: https://github.com/sqdqzy/aitoolrunner

## Overview

AIToolRunner is an Android app for executing AI-generated shell and file tool calls, with a DeepSeek WebView for prompt and result exchange. The main workflow is: enter or receive a tool-call block, parse it, review risky calls, execute approved calls, then publish the results for return to the chat. Separate capabilities include execution testing, settings and Shizuku permission management. The execution and parser source is only partially sampled, so links to unsampled internals are limited to responsibilities supported by the tree and excerpts.

Main entry points: [`app/src/main/java/com/aitool/runner/ui/MainActivity.kt`](https://github.com/sqdqzy/aitoolrunner/blob/master/app/src/main/java/com/aitool/runner/ui/MainActivity.kt) (Main Navigation), [`app/src/main/java/com/aitool/runner/ui/ExecutorFragment.kt`](https://github.com/sqdqzy/aitoolrunner/blob/master/app/src/main/java/com/aitool/runner/ui/ExecutorFragment.kt) (Tool Executor), [`app/src/main/java/com/aitool/runner/tool/ToolRunner.kt`](https://github.com/sqdqzy/aitoolrunner/blob/master/app/src/main/java/com/aitool/runner/tool/ToolRunner.kt) (Tool Runner), [`app/src/main/java/com/aitool/runner/ui/TestFragment.kt`](https://github.com/sqdqzy/aitoolrunner/blob/master/app/src/main/java/com/aitool/runner/ui/TestFragment.kt) (Tool Self-Test)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["App Navigation"]
  node_main["Main Navigation<br/>[MainActivity.kt]"]
  node_test["Tool Self-Test<br/>[TestFragment.kt]"]
end

subgraph group_chat["Chat Exchange"]
  node_web["Chat WebView<br/>[WebFragment.kt]"]
  node_bus["Execution Bus<br/>[ExecutionBus.kt]"]
end

subgraph group_execution["Tool Execution"]
  node_executor["Tool Executor"]
  node_parser["Call Parser<br/>[ToolCallParser.kt]"]
  node_models["Call Models<br/>[Models.kt]"]
  node_runner["Tool Runner<br/>[ToolRunner.kt]"]
  node_shell["Shell Tool<br/>[ShellTool.kt]"]
  node_file["File Tool<br/>[FileTool.kt]"]
  node_result["Tool Results<br/>[ToolResult.kt]"]
end

subgraph group_settings["Settings and Safety"]
  node_danger["Danger Detector<br/>[DangerDetector.kt]"]
  node_audit["Audit Logger<br/>[AuditLogger.kt]"]
  node_settings_ui["Settings Screen"]
  node_shizuku["Shizuku Access<br/>[ShizukuHelper.kt]"]
  node_app["Theme Startup<br/>[App.kt]"]
end

node_user(("User"))
node_deepseek(("DeepSeek Chat"))

node_user -->|"selects screen"| node_main
node_main -->|"shows screen"| node_executor
node_main -->|"shows screen"| node_web
node_main -->|"shows screen"| node_test
node_main -->|"shows screen"| node_settings_ui
node_user -->|"enters calls"| node_executor
node_executor -->|"parses input"| node_parser
node_parser -->|"creates calls"| node_models
node_executor -->|"checks calls"| node_danger
node_executor -->|"runs approved calls"| node_runner
node_runner -->|"dispatches shell"| node_shell
node_runner -->|"dispatches files"| node_file
node_runner -->|"records activity"| node_audit
node_shell -->|"returns result"| node_result
node_file -->|"returns result"| node_result
node_runner -->|"collects results"| node_result
node_executor -->|"publishes summary"| node_bus
node_bus -->|"provides results"| node_web
node_web -->|"loads and fills chat"| node_deepseek
node_deepseek -->|"returns response"| node_user
node_user -->|"starts checks"| node_test
node_test -->|"runs sample tools"| node_runner
node_test -->|"checks parsing"| node_parser
node_test -->|"checks safety"| node_danger
node_user -->|"changes preferences"| node_settings_ui
node_settings_ui -->|"checks or requests access"| node_shizuku
node_main -->|"refreshes permission status"| node_shizuku
node_app -->|"applies theme preference"| node_user

click node_main "https://github.com/sqdqzy/aitoolrunner/blob/master/app/src/main/java/com/aitool/runner/ui/MainActivity.kt"
click node_executor "https://github.com/sqdqzy/aitoolrunner/blob/master/app/src/main/java/com/aitool/runner/ui/ExecutorFragment.kt"
click node_test "https://github.com/sqdqzy/aitoolrunner/blob/master/app/src/main/java/com/aitool/runner/ui/TestFragment.kt"
click node_web "https://github.com/sqdqzy/aitoolrunner/blob/master/app/src/main/java/com/aitool/runner/ui/WebFragment.kt"
click node_parser "https://github.com/sqdqzy/aitoolrunner/blob/master/app/src/main/java/com/aitool/runner/parser/ToolCallParser.kt"
click node_models "https://github.com/sqdqzy/aitoolrunner/blob/master/app/src/main/java/com/aitool/runner/parser/Models.kt"
click node_danger "https://github.com/sqdqzy/aitoolrunner/blob/master/app/src/main/java/com/aitool/runner/security/DangerDetector.kt"
click node_runner "https://github.com/sqdqzy/aitoolrunner/blob/master/app/src/main/java/com/aitool/runner/tool/ToolRunner.kt"
click node_shell "https://github.com/sqdqzy/aitoolrunner/blob/master/app/src/main/java/com/aitool/runner/tool/ShellTool.kt"
click node_file "https://github.com/sqdqzy/aitoolrunner/blob/master/app/src/main/java/com/aitool/runner/tool/FileTool.kt"
click node_result "https://github.com/sqdqzy/aitoolrunner/blob/master/app/src/main/java/com/aitool/runner/tool/ToolResult.kt"
click node_audit "https://github.com/sqdqzy/aitoolrunner/blob/master/app/src/main/java/com/aitool/runner/tool/AuditLogger.kt"
click node_bus "https://github.com/sqdqzy/aitoolrunner/blob/master/app/src/main/java/com/aitool/runner/tool/ExecutionBus.kt"
click node_settings_ui "https://github.com/sqdqzy/aitoolrunner/blob/master/app/src/main/java/com/aitool/runner/ui/SettingsFragment.kt"
click node_shizuku "https://github.com/sqdqzy/aitoolrunner/blob/master/app/src/main/java/com/aitool/runner/adb/ShizukuHelper.kt"
click node_app "https://github.com/sqdqzy/aitoolrunner/blob/master/app/src/main/java/com/aitool/runner/App.kt"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_main,node_test,node_user toneBlue
class node_web,node_bus toneAmber
class node_executor,node_parser,node_models,node_runner,node_shell,node_file,node_result toneMint
class node_danger,node_audit,node_settings_ui,node_shizuku,node_app toneRose
class node_deepseek toneIndigo
```

## Components

### App Navigation

- [Main Navigation](https://github.com/sqdqzy/aitoolrunner/blob/master/app/src/main/java/com/aitool/runner/ui/MainActivity.kt): `app/src/main/java/com/aitool/runner/ui/MainActivity.kt`
- [Tool Self-Test](https://github.com/sqdqzy/aitoolrunner/blob/master/app/src/main/java/com/aitool/runner/ui/TestFragment.kt): `app/src/main/java/com/aitool/runner/ui/TestFragment.kt`

### Chat Exchange

- [Chat WebView](https://github.com/sqdqzy/aitoolrunner/blob/master/app/src/main/java/com/aitool/runner/ui/WebFragment.kt): `app/src/main/java/com/aitool/runner/ui/WebFragment.kt`
- [Execution Bus](https://github.com/sqdqzy/aitoolrunner/blob/master/app/src/main/java/com/aitool/runner/tool/ExecutionBus.kt): `app/src/main/java/com/aitool/runner/tool/ExecutionBus.kt`

### Tool Execution

- [Tool Executor](https://github.com/sqdqzy/aitoolrunner/blob/master/app/src/main/java/com/aitool/runner/ui/ExecutorFragment.kt): `app/src/main/java/com/aitool/runner/ui/ExecutorFragment.kt`
- [Call Parser](https://github.com/sqdqzy/aitoolrunner/blob/master/app/src/main/java/com/aitool/runner/parser/ToolCallParser.kt): `app/src/main/java/com/aitool/runner/parser/ToolCallParser.kt`
- [Call Models](https://github.com/sqdqzy/aitoolrunner/blob/master/app/src/main/java/com/aitool/runner/parser/Models.kt): `app/src/main/java/com/aitool/runner/parser/Models.kt`
- [Tool Runner](https://github.com/sqdqzy/aitoolrunner/blob/master/app/src/main/java/com/aitool/runner/tool/ToolRunner.kt): `app/src/main/java/com/aitool/runner/tool/ToolRunner.kt`
- [Shell Tool](https://github.com/sqdqzy/aitoolrunner/blob/master/app/src/main/java/com/aitool/runner/tool/ShellTool.kt): `app/src/main/java/com/aitool/runner/tool/ShellTool.kt`
- [File Tool](https://github.com/sqdqzy/aitoolrunner/blob/master/app/src/main/java/com/aitool/runner/tool/FileTool.kt): `app/src/main/java/com/aitool/runner/tool/FileTool.kt`
- [Tool Results](https://github.com/sqdqzy/aitoolrunner/blob/master/app/src/main/java/com/aitool/runner/tool/ToolResult.kt): `app/src/main/java/com/aitool/runner/tool/ToolResult.kt`

### Settings and Safety

- [Danger Detector](https://github.com/sqdqzy/aitoolrunner/blob/master/app/src/main/java/com/aitool/runner/security/DangerDetector.kt): `app/src/main/java/com/aitool/runner/security/DangerDetector.kt`
- [Audit Logger](https://github.com/sqdqzy/aitoolrunner/blob/master/app/src/main/java/com/aitool/runner/tool/AuditLogger.kt): `app/src/main/java/com/aitool/runner/tool/AuditLogger.kt`
- [Settings Screen](https://github.com/sqdqzy/aitoolrunner/blob/master/app/src/main/java/com/aitool/runner/ui/SettingsFragment.kt): `app/src/main/java/com/aitool/runner/ui/SettingsFragment.kt`
- [Shizuku Access](https://github.com/sqdqzy/aitoolrunner/blob/master/app/src/main/java/com/aitool/runner/adb/ShizukuHelper.kt): `app/src/main/java/com/aitool/runner/adb/ShizukuHelper.kt`
- [Theme Startup](https://github.com/sqdqzy/aitoolrunner/blob/master/app/src/main/java/com/aitool/runner/App.kt): `app/src/main/java/com/aitool/runner/App.kt`

### Other components

- **User**
- **DeepSeek Chat**

## Connections

- User → Main Navigation: selects screen
- Main Navigation → Tool Executor: shows screen
- Main Navigation → Chat WebView: shows screen
- Main Navigation → Tool Self-Test: shows screen
- Main Navigation → Settings Screen: shows screen
- User → Tool Executor: enters calls
- Tool Executor → Call Parser: parses input
- Call Parser → Call Models: creates calls
- Tool Executor → Danger Detector: checks calls
- Tool Executor → Tool Runner: runs approved calls
- Tool Runner → Shell Tool: dispatches shell
- Tool Runner → File Tool: dispatches files
- Tool Runner → Audit Logger: records activity
- Shell Tool → Tool Results: returns result
- File Tool → Tool Results: returns result
- Tool Runner → Tool Results: collects results
- Tool Executor → Execution Bus: publishes summary
- Execution Bus → Chat WebView: provides results
- Chat WebView → DeepSeek Chat: loads and fills chat
- DeepSeek Chat → User: returns response
- User → Tool Self-Test: starts checks
- Tool Self-Test → Tool Runner: runs sample tools
- Tool Self-Test → Call Parser: checks parsing
- Tool Self-Test → Danger Detector: checks safety
- User → Settings Screen: changes preferences
- Settings Screen → Shizuku Access: checks or requests access
- Main Navigation → Shizuku Access: refreshes permission status
- Theme Startup → User: applies theme preference
