agent-portal-2 0.1.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.
Files changed (120) hide show
  1. package/.continue/agents/new-config.yaml +22 -0
  2. package/AGENT_STEERING.md +36 -0
  3. package/ARCHITECTURE.md +13 -0
  4. package/CHANGELOG.md +97 -0
  5. package/CLI.md +38 -0
  6. package/CONTRIBUTING.md +55 -0
  7. package/INSTALLATION.md +58 -0
  8. package/LICENSE +60 -0
  9. package/PLUGIN_SYSTEM.md +33 -0
  10. package/PYTHON_SDK.md +22 -0
  11. package/QUICKSTART.md +19 -0
  12. package/README.md +385 -0
  13. package/RELEASE_NOTES_v0.1.0.md +281 -0
  14. package/ROADMAP.md +3 -0
  15. package/RUNTIME.md +44 -0
  16. package/SAFETY_MODEL.md +24 -0
  17. package/TESTING.md +35 -0
  18. package/TROUBLESHOOTING.md +30 -0
  19. package/UPGRADE_GUIDE.md +288 -0
  20. package/VS_CODE_EXTENSION.md +47 -0
  21. package/agent-portal.config.json +20 -0
  22. package/apps/desktop/agent-portal-desktop.zip +0 -0
  23. package/apps/desktop/fixtures/local-workflow.html +151 -0
  24. package/apps/desktop/package.json +18 -0
  25. package/apps/desktop/src/main.ts +117 -0
  26. package/apps/desktop/tsconfig.json +8 -0
  27. package/apps/vscode-extension/LICENSE +60 -0
  28. package/apps/vscode-extension/README.md +20 -0
  29. package/apps/vscode-extension/media/agent-portal-logo.png +0 -0
  30. package/apps/vscode-extension/package.json +149 -0
  31. package/apps/vscode-extension/src/extension.ts +614 -0
  32. package/apps/vscode-extension/tsconfig.json +12 -0
  33. package/assets/branding/agent-portal-logo.png +0 -0
  34. package/connectors/chatgpt-tools/README.md +9 -0
  35. package/connectors/claude-mcp-server/README.md +9 -0
  36. package/connectors/gemini-connector/README.md +9 -0
  37. package/connectors/rest-websocket-api/README.md +9 -0
  38. package/docs/MCP_SERVER.md +68 -0
  39. package/docs/architecture.md +214 -0
  40. package/docs/roadmap.md +125 -0
  41. package/package.json +21 -0
  42. package/packages/agent-portal-mcp/README.md +12 -0
  43. package/packages/agent-portal-mcp/agent_portal_mcp/__init__.py +3 -0
  44. package/packages/agent-portal-mcp/agent_portal_mcp/bridge/__init__.py +1 -0
  45. package/packages/agent-portal-mcp/agent_portal_mcp/bridge/runtime_client.py +180 -0
  46. package/packages/agent-portal-mcp/agent_portal_mcp/cli.py +32 -0
  47. package/packages/agent-portal-mcp/agent_portal_mcp/doctor.py +71 -0
  48. package/packages/agent-portal-mcp/agent_portal_mcp/schemas/__init__.py +1 -0
  49. package/packages/agent-portal-mcp/agent_portal_mcp/schemas/actions.py +17 -0
  50. package/packages/agent-portal-mcp/agent_portal_mcp/schemas/results.py +24 -0
  51. package/packages/agent-portal-mcp/agent_portal_mcp/schemas/risk.py +20 -0
  52. package/packages/agent-portal-mcp/agent_portal_mcp/security/__init__.py +1 -0
  53. package/packages/agent-portal-mcp/agent_portal_mcp/security/policy.py +27 -0
  54. package/packages/agent-portal-mcp/agent_portal_mcp/server.py +148 -0
  55. package/packages/agent-portal-mcp/agent_portal_mcp/tool_registry.py +58 -0
  56. package/packages/agent-portal-mcp/agent_portal_mcp/tools/__init__.py +1 -0
  57. package/packages/agent-portal-mcp/agent_portal_mcp/tools/browser.py +89 -0
  58. package/packages/agent-portal-mcp/agent_portal_mcp/tools/common.py +98 -0
  59. package/packages/agent-portal-mcp/agent_portal_mcp/tools/inspection.py +93 -0
  60. package/packages/agent-portal-mcp/agent_portal_mcp/tools/navigation.py +93 -0
  61. package/packages/agent-portal-mcp/agent_portal_mcp/tools/reports.py +34 -0
  62. package/packages/agent-portal-mcp/agent_portal_mcp/tools/steering.py +93 -0
  63. package/packages/agent-portal-mcp/pyproject.toml +20 -0
  64. package/packages/agent-portal-mcp/tests/test_doctor.py +20 -0
  65. package/packages/agent-portal-mcp/tests/test_mcp_server.py +161 -0
  66. package/packages/core/package.json +15 -0
  67. package/packages/core/src/index.ts +1842 -0
  68. package/packages/core/tsconfig.json +8 -0
  69. package/packages/mcp-server/package.json +15 -0
  70. package/packages/mcp-server/src/index.ts +73 -0
  71. package/packages/mcp-server/tsconfig.json +8 -0
  72. package/packages/sdk/package.json +15 -0
  73. package/packages/sdk/src/index.ts +544 -0
  74. package/packages/sdk/tsconfig.json +8 -0
  75. package/plugins/README.md +16 -0
  76. package/plugins/agent-portal-browser/plugin.json +19 -0
  77. package/plugins/agent-portal-python/plugin.json +16 -0
  78. package/plugins/agent-portal-skills/plugin.json +19 -0
  79. package/plugins/agent-portal-vscode/plugin.json +27 -0
  80. package/plugins/example-runtime-plugin/README.md +3 -0
  81. package/plugins/example-runtime-plugin/plugin.json +20 -0
  82. package/plugins/plugin.schema.json +53 -0
  83. package/python/README.md +18 -0
  84. package/python/agent_portal/__init__.py +5 -0
  85. package/python/agent_portal/__main__.py +5 -0
  86. package/python/agent_portal/browser.py +393 -0
  87. package/python/agent_portal/cli.py +164 -0
  88. package/python/agent_portal/config.py +31 -0
  89. package/python/agent_portal/doctor.py +165 -0
  90. package/python/agent_portal/exceptions.py +39 -0
  91. package/python/agent_portal/logging_utils.py +33 -0
  92. package/python/agent_portal/metrics.py +309 -0
  93. package/python/agent_portal/models.py +160 -0
  94. package/python/agent_portal/plugin_system.py +42 -0
  95. package/python/agent_portal/rate_limit.py +253 -0
  96. package/python/agent_portal/runtime.py +739 -0
  97. package/python/agent_portal/server.py +351 -0
  98. package/python/agent_portal/validation.py +299 -0
  99. package/python/pyproject.toml +29 -0
  100. package/python/tests/test_config.py +24 -0
  101. package/python/tests/test_doctor.py +19 -0
  102. package/python/tests/test_metrics.py +180 -0
  103. package/python/tests/test_rate_limit.py +237 -0
  104. package/python/tests/test_runtime.py +122 -0
  105. package/python/tests/test_server.py +53 -0
  106. package/python/tests/test_validation.py +170 -0
  107. package/releases/desktop/agent-portal-desktop/README.md +378 -0
  108. package/releases/desktop/agent-portal-desktop/RELEASE_NOTES.md +14 -0
  109. package/releases/desktop/agent-portal-desktop/assets/branding/agent-portal-logo.png +0 -0
  110. package/releases/desktop/agent-portal-desktop/fixtures/local-workflow.html +151 -0
  111. package/releases/desktop/agent-portal-desktop/launch-agent-portal.bat +4 -0
  112. package/releases/desktop/agent-portal-desktop.zip +0 -0
  113. package/releases/python/agent_portal-0.0.2-py3-none-any.whl +0 -0
  114. package/releases/python/agent_portal-0.0.2.tar.gz +0 -0
  115. package/scripts/package_desktop.mjs +117 -0
  116. package/scripts/release_python.py +46 -0
  117. package/tests/plugin-manifest.test.mjs +26 -0
  118. package/tests/runtime.test.mjs +41 -0
  119. package/tests/vscode-extension.test.mjs +22 -0
  120. package/tsconfig.base.json +16 -0
@@ -0,0 +1,22 @@
1
+ name: Diff Config
2
+ version: 1.0.0
3
+ schema: v1
4
+
5
+ models:
6
+ - name: GLM 5.2 Chat
7
+ provider: openai
8
+ model: glm-5.2
9
+ apiBase: https://api.z.ai/api/paas/v4
10
+ apiKey: 680bd41483654976867ca460ffa1c605.f8K53MYqu7JbdJFs
11
+ roles:
12
+ - chat
13
+ - edit
14
+ - apply
15
+
16
+ - name: GLM 5.2 Autocomplete
17
+ provider: openai
18
+ model: glm-5.2
19
+ apiBase: https://api.z.ai/api/paas/v4
20
+ apiKey: 680bd41483654976867ca460ffa1c605.f8K53MYqu7JbdJFs
21
+ roles:
22
+ - autocomplete
@@ -0,0 +1,36 @@
1
+ # Agent Steering
2
+
3
+ Agent Steering is the control system that governs what the agent can do.
4
+
5
+ ## Current Controls
6
+
7
+ - pause agent
8
+ - resume agent
9
+ - stop agent
10
+ - step-by-step mode
11
+ - redirect goal
12
+ - lock to domain
13
+ - lock to current tab
14
+ - approve next action
15
+ - reject next action
16
+ - edit queued action
17
+
18
+ ## Current Policy Rules
19
+
20
+ - password field typing is blocked
21
+ - billing and payment actions are blocked
22
+ - destructive actions are high risk
23
+ - settings changes are high risk
24
+ - submissions and authentication are medium risk
25
+ - safe and low risk actions can auto-run unless step-by-step mode is enabled
26
+
27
+ ## Action Queue Fields
28
+
29
+ - action type
30
+ - target
31
+ - reason
32
+ - risk level
33
+ - timestamp
34
+ - result
35
+ - screenshot before
36
+ - screenshot after
@@ -0,0 +1,13 @@
1
+ # Architecture
2
+
3
+ See [docs/architecture.md](docs/architecture.md) for the detailed architecture document.
4
+
5
+ ## Current Layers
6
+
7
+ - `python/agent_portal`: primary local runtime, Playwright process owner, and REST/WebSocket server scaffold
8
+ - `apps/vscode-extension`: developer control panel for the running runtime
9
+ - `connectors/`: integration entry points for ChatGPT tools, Claude MCP, Gemini, and generic APIs
10
+ - `packages/core`: shared TypeScript-side control logic, policy, reporting, and contracts
11
+ - `packages/sdk`: developer-facing TypeScript API
12
+ - `packages/mcp-server`: tool-facing command surface
13
+ - `apps/desktop`: local proving ground and runtime demo
package/CHANGELOG.md ADDED
@@ -0,0 +1,97 @@
1
+ # Changelog
2
+
3
+ All notable changes to Agent Portal will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [0.0.3] - 2026-06-26
9
+
10
+ ### Fixed
11
+ - **Critical: ThreadingHTTPServer / Playwright greenlet conflict (#1)**
12
+ Replaced `ThreadingHTTPServer` with single-threaded `HTTPServer`. Playwright
13
+ sync greenlets are pinned to the thread that started the browser; the
14
+ threaded server routed subsequent requests to new threads, crashing every
15
+ browser action with `greenlet.error: cannot switch to a different thread`.
16
+
17
+ - **High: Error handler AttributeError (#2)**
18
+ `fail_action()` accessed `error.message` but `AgentPortalError` exposes the
19
+ message via `str(error)`, not a `.message` attribute. This caused the error
20
+ handler itself to crash, swallowing the real error and returning an empty
21
+ HTTP reply. Changed to `str(error)`.
22
+
23
+ - **Medium: Stale lock file and port reuse (#3)**
24
+ - Added PID liveness check (`os.kill(pid, 0)`) to `_ensure_single_instance()`:
25
+ a stale lock from a crashed runtime is now auto-removed instead of
26
+ blocking restart.
27
+ - Added `SO_REUSEADDR` to both the port-probe socket and the HTTP server
28
+ socket, eliminating the ~60 s `TIME_WAIT` delay after a crash.
29
+
30
+ ---
31
+
32
+ ## [0.1.0] - 2024-01-XX
33
+
34
+ ### Added
35
+ - **Security Features**
36
+ - Input validation module (`validation.py`) with comprehensive validation for URLs, selectors, scripts, action types, risk levels, and configurations
37
+ - Rate limiting system (`rate_limit.py`) with configurable per-minute, per-hour, and burst limits
38
+ - Action throttling to prevent abuse of specific operations (execute, click, type, screenshot)
39
+ - Thread-safe metrics and telemetry system (`metrics.py`) for observability
40
+ - Automatic XSS pattern detection in selectors and URLs
41
+ - Dangerous protocol blocking (javascript:, data:, file:, vbscript:, etc.)
42
+
43
+ - **Runtime Improvements**
44
+ - Metrics collection for actions (total, completed, failed, blocked, approved, rejected)
45
+ - Browser operation metrics (navigations, screenshots, errors)
46
+ - Network metrics (requests, failures, console errors)
47
+ - Timer context manager for performance tracking
48
+ - Histogram statistics for value distributions
49
+ - Export metrics to JSON files
50
+
51
+ - **Testing**
52
+ - Comprehensive test suite for validation module (29 tests)
53
+ - Test suite for rate limiting module
54
+ - Test suite for metrics collection module
55
+ - All tests pass successfully
56
+
57
+ - **Enhancements**
58
+ - Better error handling with structured error messages
59
+ - Improved security posture with input sanitization
60
+ - Performance monitoring and observability
61
+ - Memory-safe sample limiting in metrics
62
+
63
+ ### Security
64
+ - Added URL scheme validation to prevent dangerous protocols
65
+ - Blocked JavaScript execution in page context from untrusted sources
66
+ - Added selector injection protection
67
+ - Implemented rate limiting to prevent DoS
68
+ - Configurable action throttling for high-risk operations
69
+ - Sanitization of text inputs to remove control characters
70
+
71
+ ### Performance
72
+ - Optimized metrics storage with automatic cleanup
73
+ - Sliding window rate limiting algorithm
74
+ - Sample limits to prevent memory leaks
75
+ - Efficient client-based rate tracking
76
+
77
+ ### Documentation
78
+ - Added comprehensive docstrings for all new modules
79
+ - Updated README with security features
80
+ - Added inline documentation for validation rules
81
+
82
+ ---
83
+
84
+ ## [0.0.2] - Previous Release
85
+ - Initial stable release with Python runtime
86
+ - Browser control via Playwright
87
+ - HTTP API server
88
+ - VS Code extension
89
+ - Basic action approval workflow
90
+ - Report generation
91
+
92
+ ---
93
+
94
+ ## [0.0.1] - Initial Release
95
+ - Project scaffolding
96
+ - Basic runtime structure
97
+ - Plugin system foundation
package/CLI.md ADDED
@@ -0,0 +1,38 @@
1
+ # CLI
2
+
3
+ The Python package installs the `agent-portal` command.
4
+
5
+ ## Commands
6
+
7
+ ```bash
8
+ agent-portal start
9
+ agent-portal stop
10
+ agent-portal status
11
+ agent-portal doctor
12
+ agent-portal open http://localhost:3000
13
+ agent-portal screenshot --label homepage
14
+ agent-portal report
15
+ agent-portal plugins list
16
+ agent-portal plugins validate
17
+ ```
18
+
19
+ ## Global Options
20
+
21
+ ```bash
22
+ agent-portal --json --host 127.0.0.1 --port 8765 status
23
+ ```
24
+
25
+ Supported options:
26
+
27
+ - `--json` for machine-readable output
28
+ - `--host` to override the runtime host
29
+ - `--port` to override the runtime port
30
+ - `--verbose`
31
+ - `--debug`
32
+ - `--profile`
33
+
34
+ ## Notes
35
+
36
+ - `start` writes a default `agent-portal.config.json` if one does not exist.
37
+ - runtime-facing commands call the local HTTP runtime.
38
+ - if the runtime is unavailable, the CLI returns a helpful error with a suggested start command.
@@ -0,0 +1,55 @@
1
+ # Contributing
2
+
3
+ Contributing to Agent Portal
4
+
5
+ Thank you for your interest in Agent Portal.
6
+
7
+ Agent Portal is proprietary software owned by Magnexis. At this time, public code contributions, forks, modified versions, redistribution, or derivative works are not permitted unless explicitly authorized in writing by Magnexis.
8
+
9
+ Contribution Policy
10
+
11
+ Magnexis is not currently accepting direct source code contributions from the public.
12
+
13
+ You may not:
14
+
15
+ Fork this repository for modification or redistribution.
16
+ Submit modified versions of the software.
17
+ Repackage or redistribute Agent Portal.
18
+ Create derivative works based on Agent Portal.
19
+ Use the Agent Portal source code in another project.
20
+ Remove or alter copyright, license, or branding notices.
21
+ What You Can Submit
22
+
23
+ You may still help by submitting:
24
+
25
+ Bug reports
26
+ Feature requests
27
+ Documentation corrections
28
+ Security issue reports
29
+ Compatibility feedback
30
+ Usability feedback
31
+ Bug Reports
32
+
33
+ Please include:
34
+
35
+ Operating system
36
+ Agent Portal version
37
+ Steps to reproduce
38
+ Expected behavior
39
+ Actual behavior
40
+ Screenshots or logs, if helpful
41
+ Security Reports
42
+
43
+ Do not publicly disclose security vulnerabilities.
44
+
45
+ Send security reports directly to Magnexis through the official contact method listed in the project documentation.
46
+
47
+ Ownership
48
+
49
+ Any feedback, ideas, reports, suggestions, or other submissions provided to Magnexis may be used by Magnexis to improve Agent Portal without restriction or obligation.
50
+
51
+ License Reminder
52
+
53
+ Agent Portal is not open-source software.
54
+
55
+ All rights are reserved by Magnexis. Use, modification, distribution, sublicensing, hosting, reverse engineering, or creation of derivative works is prohibited without prior written permission from Magnexis.
@@ -0,0 +1,58 @@
1
+ # Installation
2
+
3
+ ## Requirements
4
+
5
+ - Node.js 20+
6
+ - npm 10+
7
+ - Python 3.10+
8
+ - Playwright browser binaries installed with `npx playwright install chromium`
9
+
10
+ ## Setup
11
+
12
+ 1. Install dependencies:
13
+
14
+ ```bash
15
+ npm install
16
+ ```
17
+
18
+ 2. Install Playwright Chromium:
19
+
20
+ ```bash
21
+ npx playwright install chromium
22
+ ```
23
+
24
+ 3. Install the Python runtime package:
25
+
26
+ ```bash
27
+ pip install -e ./python
28
+ ```
29
+
30
+ 4. Build the workspace:
31
+
32
+ ```bash
33
+ npm run build
34
+ ```
35
+
36
+ ## VS Code Extension
37
+
38
+ The VS Code extension is included in `apps/vscode-extension`.
39
+
40
+ Build it with:
41
+
42
+ ```bash
43
+ npm run build --workspace @agent-portal/vscode-extension
44
+ ```
45
+
46
+ ## Python Runtime
47
+
48
+ Run a health check first:
49
+
50
+ ```bash
51
+ agent-portal doctor
52
+ ```
53
+
54
+ Start the runtime server with:
55
+
56
+ ```bash
57
+ agent-portal start
58
+ ```
package/LICENSE ADDED
@@ -0,0 +1,60 @@
1
+ Copyright (c) 2026 Magnexis
2
+
3
+ All Rights Reserved.
4
+
5
+ Agent Portal and all associated source code, binaries, documentation, assets,
6
+ designs, interfaces, branding, logos, and related materials are the exclusive
7
+ property of Magnexis.
8
+
9
+ No person or entity is granted permission to copy, modify, merge, publish,
10
+ distribute, sublicense, sell, lease, rent, host, reverse engineer, create
11
+ derivative works from, or otherwise exploit any portion of the Software
12
+ without the express prior written permission of Magnexis.
13
+
14
+ Permitted Use
15
+
16
+ Subject to compliance with this license, Magnexis grants the end user a
17
+ limited, non-exclusive, non-transferable, revocable license to install and
18
+ use the Software solely for its intended purposes.
19
+
20
+ Restrictions
21
+
22
+ You may not:
23
+
24
+ Modify the Software.
25
+ Create derivative works based on the Software.
26
+ Redistribute the Software.
27
+ Resell the Software.
28
+ Repackage the Software.
29
+ Host the Software as a service.
30
+ Remove copyright notices.
31
+ Reverse engineer, decompile, or disassemble the Software except where
32
+ prohibited by applicable law.
33
+ Use Magnexis trademarks, logos, branding, or product names without
34
+ written authorization.
35
+
36
+ Ownership
37
+
38
+ All right, title, and interest in and to the Software remain exclusively with
39
+ Magnexis. No ownership rights are transferred under this license.
40
+
41
+ Termination
42
+
43
+ This license automatically terminates if any provision is violated. Upon
44
+ termination, all copies of the Software must be permanently removed and
45
+ destroyed.
46
+
47
+ Disclaimer of Warranty
48
+
49
+ THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
50
+ IMPLIED, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS
51
+ FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
52
+
53
+ Limitation of Liability
54
+
55
+ IN NO EVENT SHALL MAGNEXIS BE LIABLE FOR ANY CLAIM, DAMAGES, OR OTHER
56
+ LIABILITY ARISING FROM THE USE OF OR INABILITY TO USE THE SOFTWARE.
57
+
58
+ Contact
59
+
60
+ Licensing inquiries and permission requests should be directed to Magnexis.
@@ -0,0 +1,33 @@
1
+ # Plugin System
2
+
3
+ Agent Portal supports a manifest-driven plugin model.
4
+
5
+ ## Manifest Fields
6
+
7
+ - `name`
8
+ - `version`
9
+ - `type`
10
+ - `permissions`
11
+ - `entryPoint`
12
+ - `commands`
13
+ - `settings`
14
+ - `panels`
15
+ - `lifecycleHooks`
16
+
17
+ ## Included Plugin Manifests
18
+
19
+ - `plugins/agent-portal-vscode/plugin.json`
20
+ - `plugins/agent-portal-browser/plugin.json`
21
+ - `plugins/agent-portal-python/plugin.json`
22
+ - `plugins/agent-portal-skills/plugin.json`
23
+
24
+ ## Connector Scaffolds
25
+
26
+ - `connectors/chatgpt-tools`
27
+ - `connectors/claude-mcp-server`
28
+ - `connectors/gemini-connector`
29
+ - `connectors/rest-websocket-api`
30
+
31
+ ## Validation
32
+
33
+ The core runtime exports `validatePluginManifest()` for manifest checks.
package/PYTHON_SDK.md ADDED
@@ -0,0 +1,22 @@
1
+ # Python Runtime And SDK
2
+
3
+ The Python runtime package lives in `python/agent_portal`.
4
+
5
+ ## Current Status
6
+
7
+ - package metadata is in `python/pyproject.toml`
8
+ - runtime models are in `python/agent_portal/models.py`
9
+ - runtime controller is in `python/agent_portal/runtime.py`
10
+ - HTTP runtime server is in `python/agent_portal/server.py`
11
+ - doctor checks are in `python/agent_portal/doctor.py`
12
+ - CLI commands are in `python/agent_portal/cli.py`
13
+
14
+ ## Direction
15
+
16
+ This package currently owns:
17
+
18
+ - the local runtime
19
+ - Playwright session ownership
20
+ - browser automation and steering state
21
+ - HTTP transport
22
+ - report retrieval and connector access
package/QUICKSTART.md ADDED
@@ -0,0 +1,19 @@
1
+ # Quickstart
2
+
3
+ 1. Run `npm install`
4
+ 2. Run `npx playwright install chromium`
5
+ 3. Run `pip install -e ./python`
6
+ 4. Run `agent-portal doctor`
7
+ 5. Start the runtime with `agent-portal start`
8
+ 6. Use `agent-portal open http://localhost:3000` or start the desktop demo with `npm run dev`
9
+ 7. Run `agent-portal screenshot --label smoke-test`
10
+ 8. Run `agent-portal report`
11
+ 9. Open the VS Code extension sidebar and use `Agent Portal: Connect To Running Runtime`
12
+
13
+ ## What You Should See
14
+
15
+ - a local browser workflow opens
16
+ - the agent types, clicks, scrolls, and captures evidence
17
+ - a session report is generated
18
+ - action queue, graph, and memory artifacts are persisted
19
+ - the VS Code extension reads live runtime status from the Python runtime