Detach graph viewer from MCP transport
This commit is contained in:
parent
5e77cd2adb
commit
f6b9816ffd
10 changed files with 369 additions and 22 deletions
|
|
@ -23,7 +23,7 @@ approved contract and measured cross-project evidence; it is not an unimplemente
|
|||
- Result envelope: `schemas/result.schema.json`, version 1.
|
||||
- Changeset schema: `schemas/changeset.schema.json`, version 1.
|
||||
- Index schema: version 1, disposable and reproducible.
|
||||
- Core, CLI, and MCP server: version 0.8.0.
|
||||
- Core, CLI, and MCP server: version 0.8.1.
|
||||
|
||||
Schema files describe the generic interchange contract. Runtime validation remains responsible for
|
||||
path confinement, source hashing, relationship resolution, dependency cycles, project limits, stale
|
||||
|
|
@ -125,14 +125,17 @@ sections. An undirected shortest-hop calculation places nodes on distance rings
|
|||
role palette progressively, capped at fifty percent. This presentation does not reinterpret,
|
||||
replace, or add project relationships.
|
||||
|
||||
One MCP process owns at most one listener. Repeated invocations reuse it and may replace its
|
||||
validated snapshot only after a fresh index check. The HTTP worker is non-daemon so standard-input
|
||||
transaction completion does not strand an open browser. The page renews a 180-second lease every
|
||||
15 seconds and when it becomes visible; a link never opened receives a 120-second startup grace.
|
||||
Explicit process termination closes the listener immediately. An abandoned page stops renewing and
|
||||
the listener closes after the bounded lease. Project-specific integrations receive the same tool
|
||||
because it operates on the supplied `ProjectService` and `ProjectIndex`, not the generic source
|
||||
loader.
|
||||
Each invocation launches the validated snapshot in a detached local worker. The worker is outside
|
||||
the short-lived MCP transport process, so transport teardown cannot close an active browser. It
|
||||
tracks the longer-lived MCP client host and closes when that owner process exits. A repeated
|
||||
invocation in the same MCP process replaces its tracked worker after a fresh index check.
|
||||
|
||||
The page renews a 180-second lease every 15 seconds and when it becomes visible; a link never opened
|
||||
receives a 120-second startup grace. An abandoned page stops renewing and the detached worker closes
|
||||
after the bounded lease. Explicit service shutdown closes the worker tracked by that service
|
||||
immediately. Project-specific integrations receive the same tool because the parent validates and
|
||||
serializes only the supplied `ProjectService` and `ProjectIndex` snapshot; the detached worker does
|
||||
not discover projects or load canonical sources.
|
||||
|
||||
## Project adapter boundary
|
||||
|
||||
|
|
|
|||
|
|
@ -74,8 +74,9 @@ Viewport interaction is entirely client-side: wheel zoom, left-button drag pan,
|
|||
buttons, and reset never request or mutate project data. Graph-node activation fetches exact node
|
||||
data from the same bounded read endpoint and opens a client-side modal inspector. Replacing the
|
||||
current root requires the modal's explicit Explore neighborhood action. The open browser renews a
|
||||
bounded lease so standard-input transaction completion does not close the listener; explicit
|
||||
process termination still closes it, and abandoned pages expire.
|
||||
bounded lease in a detached local worker, so standard-input transaction completion does not close
|
||||
the listener. The worker tracks the longer-lived MCP client host and closes when that owner exits.
|
||||
Explicit service shutdown closes its tracked worker, and abandoned pages expire.
|
||||
|
||||
## Excluded tools
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue