Adrià Arrufat
b8a3135835
SemanticTree: add pruning support and move logic to walk
2026-03-09 13:02:03 +09:00
Adrià Arrufat
2a2b067633
mcp: fix wrong merge
2026-03-09 10:37:21 +09:00
Adrià Arrufat
9cd5afe5b6
Merge branch 'main' into semantic-tree
2026-03-09 10:18:54 +09:00
Adrià Arrufat
b674c2e448
CDP/MCP: add highly compressed text format for semantic tree
2026-03-08 22:42:00 +09:00
Karl Seguin
3de55899fa
fix test
2026-03-07 11:04:22 +08:00
Karl Seguin
ae4ad713ec
Fix page re-navigate
...
It isn't safe/correct to call `navigate` on the same page multiple times. A page
is meant to have 1 navigate call. The caller should either remove the page
and create a new one, or call Session.replacePage.
This commit removes the *Page from the MCP Server and instead interacts with
the session to create or remove+create the page as needed, and lets the Session
own the *Page.
It also adds a bit of defensiveness around parameter parsing, e.g. calling
{"method": "tools/call"} (without an id) now errors instead of crashing.
2026-03-07 10:19:37 +08:00
Adrià Arrufat
248851701f
Refactor: move SemanticTree to core and expose via MCP tools
2026-03-06 15:44:03 +09:00
Karl Seguin
3dea554e9e
Ensure that mcp.Server is correctly initialized
...
It relies on default field values, e.g. for mutex: std.Thread.Mutex = .{}, but
doesn't initialize the structure, just the pointer on the heap resulting in a
crash.
2026-03-05 16:32:25 +08:00
Adrià Arrufat
7bddc0a89c
mcp: remove search and over tools
2026-03-03 22:50:06 +09:00
Adrià Arrufat
48df38cbfe
mcp: improve evaluate error reporting and refactor tool result types
2026-03-03 15:17:59 +09:00
Adrià Arrufat
f982f073df
mcp: optimize memory re-use and add thread safety to Server.sendResponse
2026-03-03 14:50:13 +09:00
Adrià Arrufat
34999f12ca
mcp: migrate tests to expectJson
2026-03-03 14:40:20 +09:00
Adrià Arrufat
c8d5665653
mcp: use testing allocator in tests
2026-03-03 14:32:29 +09:00
Adrià Arrufat
6b80cd6109
mcp: namespace tests
2026-03-03 14:19:36 +09:00
Adrià Arrufat
4f99df694b
mcp: simplify minify and remove eval quota
2026-03-02 22:46:20 +09:00
Adrià Arrufat
6e7c8d7ae2
mcp: consolidate tests and streamline parameter parsing
2026-03-02 22:18:02 +09:00
Adrià Arrufat
3c858f522b
mcp: simplify minify function
2026-03-02 22:04:55 +09:00
Adrià Arrufat
f2a30f8cdd
mcp: don't forget to flush
2026-03-02 21:46:49 +09:00
Adrià Arrufat
43785bfab4
mcp: simplify handleList implementations
2026-03-02 21:30:47 +09:00
Adrià Arrufat
78edf6d324
mcp: simplify I/O architecture and remove test harness
2026-03-02 21:25:07 +09:00
Adrià Arrufat
73565c4493
mcp: optimize dispatching and simplify test harness
...
- Use StaticStringMap and enums for method, tool, and resource lookups.
- Implement comptime JSON minification for tool schemas.
- Refactor router and harness to use more efficient buffered polling.
- Consolidate integration tests and add synchronous unit tests.
2026-03-02 20:53:14 +09:00
Adrià Arrufat
a7872aa054
mcp: improve robustness of server and test harness
...
- Refactor router and test harness for non-blocking I/O using buffered polling.
- Implement reliable test failure reporting from sub-threads to the main test runner.
- Encapsulate pipe management using idiomatic std.fs.File methods.
- Fix invalid JSON generation in resource streaming due to duplicate fields.
- Improve shutdown sequence for clean test exits.
2026-03-02 17:03:04 +09:00
Adrià Arrufat
64107f5957
mcp: refactor for testability and add comprehensive test suite
...
- Refactor mcp.Server and router to accept injected I/O streams.
- Implement McpHarness for high-fidelity MCP integration testing.
- Add unit tests for protocol, tools, and resources modules.
- Add integration tests covering initialization, tool/resource execution, and error handling.
- Improve error reporting for malformed JSON requests.
2026-03-02 15:52:05 +09:00
Adrià Arrufat
8a1795d56f
mcp: fix memory leak in links tool
2026-03-02 13:09:58 +09:00
Adrià Arrufat
175488563e
mcp: remove browser message loop from processRequests
2026-03-02 12:25:33 +09:00
Adrià Arrufat
a8a47b138f
mcp: change browser from pointer to value
2026-03-02 11:50:56 +09:00
Adrià Arrufat
b63d4cf675
mcp: improve RawJson stringification and schema formatting
...
- Update `RawJson.jsonStringify` to parse and re-write JSON content, ensuring valid output.
- Reformat tool input schemas in `tools.zig` using multi-line string literals for better readability.
2026-03-02 11:47:02 +09:00
Adrià Arrufat
a91afab038
mcp: improve event loop and response handling
...
- Use an allocating writer in `sendResponse` to handle large payloads.
- Update the main loop to tick the HTTP client and cap poll timeouts.
- Update protocol version and minify tool input schemas.
2026-03-02 11:12:00 +09:00
Adrià Arrufat
d4747b5386
mcp: own the browser
...
Co-authored-by: Karl Seguin <karlseguin@users.noreply.github.com >
2026-03-02 10:10:08 +09:00
Adrià Arrufat
41b81c8b05
mcp: use io poll for stdin and integrate message loop
...
Replaces blocking stdin reads with `std.io.poll` to allow macrotasks to
run. Removes the stdout mutex as I/O is now serialized.
2026-03-02 10:04:23 +09:00
Adrià Arrufat
42b5e32473
mcp: modernize I/O processing and reuse message buffer
2026-03-01 22:35:28 +09:00
Adrià Arrufat
e9c36fd6f8
mcp: use declarative static definitions for tools and resources
2026-03-01 21:56:48 +09:00
Adrià Arrufat
952dfbef36
mcp: use acquire/release ordering for server running flag
2026-03-01 21:39:38 +09:00
Adrià Arrufat
254984b600
mcp: use dynamic allocation for error messages in tools
2026-03-01 21:36:21 +09:00
Adrià Arrufat
8cbc58d257
mcp: unify error reporting and use named error codes
2026-03-01 21:29:59 +09:00
Adrià Arrufat
e6cc3e8c34
mcp: refactor tools handling
2026-03-01 21:18:28 +09:00
Adrià Arrufat
01798ed7f8
mcp: use sentinel-terminated strings for tool params
2026-03-01 20:58:00 +09:00
Adrià Arrufat
fcad67a854
mcp: pre-initialize tools and resources on server startup
2026-03-01 20:44:11 +09:00
Adrià Arrufat
e359ffead0
mcp: propagate errors in tool schema parsing
2026-03-01 20:39:40 +09:00
Adrià Arrufat
eb09041859
mcp: resolve absolute URLs for links tool
2026-03-01 20:35:13 +09:00
Adrià Arrufat
b3d52c966d
mcp: handle errors during resource and tool streaming
2026-03-01 20:23:23 +09:00
Adrià Arrufat
947e672d18
mcp: stream resource and tool content to JSON output
2026-02-28 23:04:22 +09:00
Adrià Arrufat
96942960a9
mcp: reuse arena allocator for message processing
2026-02-28 22:38:16 +09:00
Adrià Arrufat
8b0118e2c8
mcp: update logging scope to use mcp instead of app
2026-02-28 22:30:02 +09:00
Adrià Arrufat
5f9a7a5381
mcp: ignore unknown json fields and improve error reporting
2026-02-28 22:18:37 +09:00
Adrià Arrufat
6897d72c3e
mcp: simplify request processing to single-threaded
2026-02-28 21:26:51 +09:00
Adrià Arrufat
aae9a505e0
mcp: promot Server.zig to file struct
2026-02-28 21:02:49 +09:00
Adrià Arrufat
5ec4305a9f
mcp: add optional url parameter to tools
2026-02-27 22:17:15 +09:00
Adrià Arrufat
8c8a05b8c1
mcp: consolidate tests and cleanup imports
2026-02-26 00:02:49 +09:00
Adrià Arrufat
34d2fc1503
mcp: support notifications and improve error handling
...
Make Request id optional for JSON-RPC notifications and handle the
initialized event. Improve thread safety, logging, and error paths.
2026-02-25 23:14:06 +09:00