provide-terminal
2026-03-12
MCP server, HijackClient REST client, WebSocket connector, and auth hardening
76 files · 8,417+ · 380-
MCP server for terminal control
3 files changed
__init__.pyMCP package init (7 lines)cli.pyCLI entry point for the MCP server (58 lines)server.pyFull MCP server exposing terminal hijack operations as MCP tools (332 lines)
src/provide/terminal/mcp/server.py(332 lines): full MCP server exposing terminal hijack operations as MCP tools. interface behavioral3 files
server.pycli.py__init__.py
HijackClient REST client and MCP tool bindings
3 files changed
__init__.pyClient package inithijack.pyTyped REST client for the hijack control plane (333 lines)mcp_tools.pyGeneric MCP tool bindings wrapping the REST client (137 lines)
src/provide/terminal/client/hijack.py(333 lines): typed REST client for the hijack control plane.src/provide/terminal/client/mcp_tools.py(137 lines): generic MCP tool bindings wrapping the REST client. interface behavioral2 files
hijack.pymcp_tools.py
WebSocket connector for the server-side connection registry
3 files changed
__init__.pyConnectors package initwebsocket.pyNew WebSocket connector for the server-side connection registry (174 lines)io.pyI/O module additions
src/provide/terminal/server/connectors/websocket.py(174 lines): new WebSocket connector for the server-side connection registry. interface behavioral2 files
websocket.py__init__.py
Auth hardening with scoped bearer tokens and CF page-level JWT
5 files changed
auth.pyScoped worker bearer tokens and JWT extraction logicapp.pyApp-level auth wiring for page-level JWTconfig.pyCloudflare auth configsession_runtime.pyDurable Object session runtime with authentry.pyCloudflare entry point with auth enforcement
- Worker-scoped bearer tokens instead of global tokens. Cloudflare page-level JWT for browser sessions.
harden
behavioral
3 files
auth.pyapp.pyentry.py
API walkthrough script
1 file changed
walkthrough.pyEnd-to-end walkthrough script exercising the full REST API lifecycle (433 lines)
scripts/walkthrough.py(433 lines): end-to-end walkthrough script exercising the full REST API lifecycle — start, connect, hijack, send commands, disconnect. specify behavioral1 file
walkthrough.py
Test suites for new client, MCP, and server components
12 files changed
__init__.pyClient tests packagetest_hijack_client.pyHijackClient tests (533 lines)test_mcp_tools.pyMCP tools tests (189 lines)__init__.pyMCP tests packagetest_mcp_regression.pyMCP regression teststest_mcp_server.pyMCP server teststest_connectors_websocket.pyWebSocket connector tests (315 lines)test_auth.pyAuth server teststest_coverage3.pyAdditional coverage teststest_security_late.pyLate-binding security tests (84 lines)test_io.pyI/O module tests (407 lines)test_routes_coverage.pyHijack routes coverage tests
tests/client/test_hijack_client.py(533 lines),tests/client/test_mcp_tools.py(189 lines).tests/mcp/test_mcp_server.py,tests/server/test_connectors_websocket.py(315 lines),tests/server/test_security_late.py(84 lines),tests/test_io.py(407 lines). qualify internal6 files
test_hijack_client.pytest_mcp_tools.pytest_mcp_server.pytest_connectors_websocket.pytest_security_late.pytest_io.py
CI, tooling, and Cloudflare infrastructure updates
14 files changed
ci.ymlCI workflow updatesdeploy-cf.ymlCloudflare deployment workflow.pre-commit-config.yamlPre-commit config updatesmax-loc-baseline.jsonLOC baseline updatedrelease-governance.mdRelease governance documentationrelease_governance_check.shRelease governance check scriptverify_package_artifacts.pyPackage artifacts verification scriptconftest.pyCloudflare tests conftesttest_alarm.pyAlarm teststest_auth_jwt.pyAuth JWT teststest_security_hardening.pySecurity hardening teststest_session_runtime_unit.pySession runtime unit testsapp-header.tsApp header TS sourceterminal.tsTerminal TS source