Skip to content

test(plugin-manager): add library E2E and optional task gate (stack 7/7)#79

Draft
wanglongan587 wants to merge 38 commits into
ora-space:mainfrom
wanglongan587:pick-0717-07-e2e
Draft

test(plugin-manager): add library E2E and optional task gate (stack 7/7)#79
wanglongan587 wants to merge 38 commits into
ora-space:mainfrom
wanglongan587:pick-0717-07-e2e

Conversation

@wanglongan587

Copy link
Copy Markdown

Summary

  • Add library-level management / Windows Job runtime / full library E2Es.
  • Add optional task test-plugin-runtime-e2e gate (not hooked into default task test).

Scope note

  • Still excludes Web/Tauri app integration and design docs.

Stack

Test plan

  • (Windows) task prepare-plugin-runtime then task test-plugin-runtime-e2e
  • Confirm ignored E2Es stay out of default task test

wanglongan587 and others added 9 commits July 20, 2026 11:32
Establish validated plugin identifiers and strict manifest parsing.
Add the v1 Agent and Workbench package model for later wire contracts.

Co-authored-by: Cursor <cursoragent@cursor.com>
Define the bounded five-byte frame format and cover split, coalesced,
and malformed input behavior before adding JSON-RPC messages.

Co-authored-by: Cursor <cursoragent@cursor.com>
Introduce opaque IDs, page limits, and JSON-safe numeric leaf types so
lifecycle and Agent contract modules can share one validated value layer.
Add the closed Agent request/response/event shapes on top of leaf types so
lifecycle stream envelopes and method registry can reference one contract.
Add initialize/activate/deactivate/stream/exit DTOs and invariants so Host
and private bootstrap share one wire lifecycle contract.
Add request/response/error framing helpers on top of the binary frame codec
so Host and plugin runtimes share one JSON-RPC parse/reject matrix.
Register the closed Agent method set and invocation semantics so SDK and
runtime dispatch share one method catalog.
Close the protocol crate with cross-field Agent validators, TypeScript export
helpers, and checked-in Frame/Agent golden fixtures for drift detection.
wanglongan587 and others added 20 commits July 20, 2026 15:26
FrameEnvelopeMismatch was unreachable because require_allowed_fields
rejected result/error/method/params first. Check shape incompatibilities
first so mismatch and unknown-field failures stay distinct.

Co-authored-by: Cursor <cursoragent@cursor.com>
Introduce the shared process abstraction and Tokio spawner so plugin runtime
can depend on a Host-owned process API before Windows Job Object support.
Add Job-bound spawn, named-pipe stdio, and tree terminate/reap so each
plugin generation can own a killable Windows process tree.
Introduce config, catalog, enablement, state, receipts, error taxonomy, and
management/runtime ports so later install and actor modules share one type layer.
Add no-follow path auditing, safe tree deletion, and deterministic package
tree digests used by install staging and integrity checks.
Add single-owner data-dir lease plus atomic state backup/recovery so manager
restarts can fail closed instead of silently accepting corrupt state.
Validate manifests and package layout, issue selection/candidate handles, and
build the provider registry used by later install and admission flows.
Stage authorized candidates behind digest revalidation, commit receipts, and
rebuild catalog snapshots from the installed package store.
Recover interrupted installs and removals from journals/trash so manager
bootstrap converges without leaving half-applied package state.
Expose scan/identify/install/enable/disable/uninstall use cases and wire
critical runtime events into crash-policy state updates.
Track write certainty and pending request state, and add framed reader/writer
lanes with backpressure for one plugin generation.
Assemble pinned Bun ProcessSpecs and adapt ProcessTreeSpawner output into
generation transport so plugin runtime can launch one contained process tree.
Perform Host-owned $/initialize and $/activate round-trips with post-activate
admission recheck, producing HandshakeProof for the generation actor.
Run admission, asset verification, process launch, and handshake as a
cancellable worker that reaps late spawns instead of leaking process trees.
Own one running generation's mailbox: invoke/stream/cancel, deadline and
fatal settlement, and deactivate/exit drain before tree reap.
Provide AgentPluginRuntime with single-flight start/invoke/stop so one plugin
owns at most one live generation while startup and session actors stay nested.
Route start/invoke/stop by plugin id through late-bound admission and event
ports, creating one lazy supervisor per plugin without construction cycles.
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
wanglongan587 and others added 9 commits July 20, 2026 15:28
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant