yuanyuanxiang
70dbb6b255
Feature: Add persistent remote terminal MCP tools
...
Add terminal_open / terminal_exec / terminal_close so an AI can hold one
shell session per Windows host and run a sequence of commands with cwd and
environment preserved, instead of the one-shot exec_command.
The persistent terminal is a separate full-command write capability gated by
McpTerminal (default off) plus McpReadonly=0, with no whitelist and full
audit. One device maps to one terminal session via the shared m_TermSessions
map; idle sessions are swept after 300s. terminal_exec rejects commands that
contain & or | (they corrupt the sentinel control-operator chain) as well as
control characters.
Also harden exec_command and terminal_exec against newline/CR injection, fix a
dangling subCtx after an abrupt shell disconnect, and refresh lastActiveAt on
command completion. Add en/zh-TW translations for the new UI strings and a
design document covering both exec_command and the persistent terminal.
Co-Authored-By: deepseek-v4-pro
2026-08-24 19:11:16 +02:00
..
2026-04-19 22:55:21 +02:00
2026-08-24 19:11:16 +02:00
2026-04-19 22:55:21 +02:00
2026-04-19 22:55:21 +02:00
2026-08-15 13:42:57 +02:00
2026-04-19 22:55:21 +02:00
2026-04-19 22:55:21 +02:00
2026-08-16 14:37:11 +02:00
2026-08-16 14:37:11 +02:00
2026-04-19 22:55:21 +02:00
2026-07-14 22:32:29 +02:00
2026-04-19 22:55:21 +02:00
2026-08-15 13:42:57 +02:00
2026-08-24 19:11:16 +02:00
2026-08-21 20:33:59 +02:00
2026-04-19 22:55:21 +02:00
2026-04-19 22:55:21 +02:00
2026-04-19 22:55:21 +02:00
2026-05-23 13:37:28 +02:00
2026-05-23 13:37:28 +02:00
2026-04-19 22:55:21 +02:00
2026-04-19 22:55:21 +02:00
2026-06-29 22:49:30 +02:00
2026-05-10 19:46:48 +02:00
2026-08-20 17:54:33 +02:00
2026-08-15 11:09:14 +02:00
2026-07-14 15:17:31 +02:00
2026-04-19 22:55:21 +02:00
2026-08-20 17:54:33 +02:00
2026-08-20 17:54:33 +02:00
2026-04-19 22:55:21 +02:00
2026-04-19 22:55:21 +02:00
2026-04-19 22:55:21 +02:00
2026-04-19 22:55:21 +02:00
2026-04-19 22:55:21 +02:00
2026-04-19 22:55:21 +02:00
2026-04-19 22:55:21 +02:00
2026-04-19 22:55:21 +02:00
2026-06-14 07:34:30 +02:00
2026-06-14 07:34:30 +02:00
2026-06-20 13:01:35 +02:00
2026-06-20 13:01:35 +02:00
2026-04-19 22:55:21 +02:00
2026-04-19 22:55:21 +02:00
2026-08-05 20:07:21 +02:00
2026-05-22 00:31:54 +02:00
2026-05-22 00:31:54 +02:00
2026-04-19 22:55:21 +02:00
2026-05-05 21:21:38 +02:00
2026-04-19 22:55:21 +02:00
2026-04-19 22:55:21 +02:00
2026-04-19 22:55:21 +02:00
2026-04-19 22:55:21 +02:00
2026-04-19 22:55:21 +02:00
2026-04-19 22:55:21 +02:00
2026-04-19 22:55:21 +02:00
2026-04-19 22:55:21 +02:00
2026-04-19 22:55:21 +02:00
2026-04-19 22:55:21 +02:00
2026-04-19 22:55:21 +02:00
2026-08-16 14:37:11 +02:00
2026-04-19 22:55:21 +02:00
2026-04-19 22:55:21 +02:00
2026-04-19 22:55:21 +02:00
2026-05-10 13:50:04 +02:00
2026-05-10 13:50:04 +02:00
2026-04-19 22:55:21 +02:00
2026-04-19 22:55:21 +02:00
2026-04-19 22:55:21 +02:00
2026-04-19 22:55:21 +02:00
2026-04-19 22:55:21 +02:00
2026-08-20 16:36:30 +02:00
2026-08-20 16:36:30 +02:00
2026-04-19 22:55:21 +02:00
2026-08-16 14:37:11 +02:00
2026-08-16 14:37:11 +02:00
2026-04-19 22:55:21 +02:00
2026-04-19 22:55:21 +02:00
2026-04-19 22:55:21 +02:00
2026-04-19 22:55:21 +02:00
2026-04-19 22:55:21 +02:00
2026-05-16 19:48:39 +02:00
2026-05-16 19:48:39 +02:00
2026-04-19 22:55:21 +02:00
2026-04-19 22:55:21 +02:00
2026-04-19 22:55:21 +02:00
2026-04-19 22:55:21 +02:00
2026-05-11 20:22:07 +02:00
2026-05-11 20:22:07 +02:00
2026-05-08 09:27:19 +02:00
2026-05-27 15:28:56 +02:00
2026-04-19 22:55:21 +02:00
2026-04-19 22:55:21 +02:00
2026-07-16 00:10:12 +02:00
2026-07-16 00:10:12 +02:00
2026-04-19 22:55:21 +02:00
2026-08-24 19:11:16 +02:00
2026-08-24 19:11:16 +02:00
2026-08-24 19:11:16 +02:00
2026-08-24 19:11:16 +02:00
2026-04-19 22:55:21 +02:00
2026-04-19 22:55:21 +02:00
2026-04-19 22:55:21 +02:00
2026-08-05 20:07:21 +02:00
2026-08-06 18:13:14 +02:00
2026-04-19 22:55:21 +02:00
2026-08-05 20:07:21 +02:00
2026-04-19 22:55:21 +02:00
2026-04-19 22:55:21 +02:00
2026-05-25 00:16:39 +02:00
2026-04-25 17:30:07 +02:00
2026-05-13 13:05:31 +02:00
2026-05-13 13:05:31 +02:00
2026-05-21 23:33:13 +02:00
2026-04-19 22:55:21 +02:00
2026-04-19 22:55:21 +02:00
2026-04-19 22:55:21 +02:00
2026-08-16 14:37:11 +02:00
2026-08-20 16:36:30 +02:00
2026-08-20 16:36:30 +02:00
2026-04-19 22:55:21 +02:00
2026-04-19 22:55:21 +02:00
2026-06-09 10:01:50 +02:00
2026-04-19 22:55:21 +02:00
2026-04-19 22:55:21 +02:00
2026-04-19 22:55:21 +02:00
2026-04-19 22:55:21 +02:00
2026-04-19 22:55:21 +02:00
2026-04-19 22:55:21 +02:00
2026-06-06 13:02:29 +02:00
2026-04-19 22:55:21 +02:00
2026-04-19 22:55:21 +02:00
2026-04-19 22:55:21 +02:00
2026-04-19 22:55:21 +02:00
2026-04-19 22:55:21 +02:00
2026-04-19 22:55:21 +02:00
2026-04-19 22:55:21 +02:00
2026-04-19 22:55:21 +02:00
2026-04-19 22:55:21 +02:00
2026-07-13 19:02:25 +02:00
2026-08-13 12:59:29 +02:00
2026-08-13 12:59:29 +02:00
2026-04-19 22:55:21 +02:00
2026-04-19 22:55:21 +02:00
2026-04-19 22:55:21 +02:00
2026-04-19 22:55:21 +02:00
2026-04-19 22:55:21 +02:00
2026-05-10 17:36:46 +02:00
2026-06-14 07:34:30 +02:00
2026-04-19 22:55:21 +02:00
2026-04-26 14:41:42 +02:00
2026-04-26 14:41:42 +02:00
2026-04-19 22:55:21 +02:00
2026-04-19 22:55:21 +02:00
2026-08-16 14:37:11 +02:00
2026-04-19 22:55:21 +02:00
2026-04-19 22:55:21 +02:00
2026-05-17 18:46:21 +02:00
2026-08-16 14:37:11 +02:00
2026-07-10 16:08:02 +02:00
2026-04-19 22:55:21 +02:00
2026-05-30 18:10:15 +02:00
2026-05-30 18:10:15 +02:00