Files
paseo/plugins/muse-provider/test/fixtures/README.md
Mohamed Boudraandmillerben95 8332f4d1ff feat(muse): add Muse Code as a built-in provider plugin (#5719)
* test(muse): record real host protocol fixtures

* feat(muse): add built-in MSP provider

Co-authored-by: millerben95 <millerben95@users.noreply.github.com>

* fix(muse): expose provider settings in the app

The daemon registered host settings without a client contribution, leaving sandbox, network, and workspace trust unreachable. Share the definition with a settings screen and expose it through Command Center even when installed plugins are disabled.

* docs(muse): publish setup and provider support

* test: correct runtime fixtures and restart readiness

* fix(muse): hide reminder housekeeping from the timeline

* fix(muse): use the official Muse Code mark

Source: https://muse.ai/images/favicon/app-squiggle.svg

Preserve the official silhouette path verbatim. Remove its gradient definition and use currentColor, scaling the original 100-unit coordinates into the 24-unit viewBox. Black silhouette renders match pixel-for-pixel.

* fix(muse): adapt to current plugin APIs

Use the screen API introduced with sidebar plugin items. Usage reports now come from source account discovery; remove the retired agent usage-reference request and headline marker, and exercise discovery through the existing provider fixtures.

---------

Co-authored-by: millerben95 <millerben95@users.noreply.github.com>
2026-09-30 14:56:41 +01:00

79 lines
9.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Muse MSP fixtures
Captured on Linux on 2026-09-29 from Muse Code **1.4.1 (1.4.1-R4503.1)**,
build `35815c253477406321e3f5595195becc25e3907a`.
- Stable handshake fingerprint: `sha256:e0e163db6ccf00dbe68402ce55d6319b3edc33c421f31e9583b587b2de8a118f`.
- Experimental export fingerprint: `sha256:b359d70b581b0ea471d35a7770d3039fdd35f19a46a2d42b43fd4b1674d52c8a`.
- Schema version: `1`. Both `sessionMcp` and `sessionListStream` were granted.
Each line is `{ "dir": "out" | "in", "msg": <JSON-RPC message> }`.
`out` means client to host; `in` means host to client. IDs, timestamps, cursors,
revisions, deltas, and event order are retained. Replay consumers should treat IDs
and cursors as opaque and compare behavior rather than wall-clock values.
The skill catalogs retain only the test selectors `phase0` and `muse-parity-*`; unrelated personal,
bundled, and installed-plugin skill rows were removed. No credentials are included.
A throwaway driver launched `muse serve` with isolated `XDG_CONFIG_HOME` and
`XDG_DATA_HOME`. Model turns used a custom Responses endpoint, an environment key,
`providerId: "meta"`, and `modelId: "meta/muse-spark-1.3"`. The settings pinned the
endpoint's `auth: "bearer"`, the default provider/model, and permission profile
`:ask-me` with its own `schema_version: 1`. The sandbox and default `proxy-only`
network policy remained enabled. Workspace trust was enabled for project skills.
The approval judge was disabled for staged approval probes so decisions reached
the client. The driver and local server remain outside the repository.
| File | Recorded behavior |
| -------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `text-reasoning.ndjson` | Session start, rational-sum prompt, public reasoning summary, streamed assistant text, token usage, terminal. |
| `tools-edit.ndjson` | Read `f`, run `wc -l f`, replace `beta` with `gamma`; fetch the JSON patch through `patchRef` and `item/readOutput`. |
| `staged-approval.ndjson` | `wc -l f && rm -rf f`: safe first stage, held second stage, receipt and decision, terminal resolution. Also records a duplicate decision rejected as already resolved. |
| `multi-stage-approval.ndjson` | `wc -l f && rm -rf f && rm -rf g`: successive decisions return `terminal: false`, then `true`; both files are removed. |
| `interrupt.ndjson` | Interrupt a running shell sleep; tool reconciliation and `turn/completed` with `terminal: "cancelled"`. |
| `steer.ndjson` | Submit `ifBusy: "steer"` during a shell sleep; accepted as `steered`, and the original turn replies with the replacement marker. |
| `resume-source.ndjson` | Complete a marker turn, then kill the host process before starting either resume probe. |
| `resume-without-cursor.ndjson` | New host returns inline history and runs a fresh turn recalling the marker. |
| `resume-with-cursor.ndjson` | New host returns `history.mode: "none"`, replays the cursor suffix, then completes a fresh marker turn. |
| `resume-reasoning.ndjson` | New host resumes the steering session, including its reasoning history, and completes another text turn. |
| `subagent.ndjson` | Native spawn/wait/read-result tool calls return a child result marker and an evidence log path. This build emits `toolCall`, without a dedicated `subagent` item. |
| `skill.ndjson` | Discover the project skill and invoke its selector through a structured skill input part. |
| `image-followup.ndjson` | Send a valid 16×16 PNG, then complete a text-only marker turn in the same session. Image-description accuracy is not asserted. |
| `catalog-controls.ndjson` | Model catalog, environment-key account state, empty subscription usage, paginated sessions, approval mode change, valid model selection, and rejection of a model outside the catalog. |
| `mcp-stdio.ndjson` | Admit a session-scoped stdio server. Model attempts fail with an unknown-tool routing error and no marker is returned; this is a failure fixture. |
| `auto-review-unavailable.ndjson` | Selecting `:auto-review` as the default profile rejects session start because the automated reviewer is unavailable. |
| `unsafe-path.ndjson` | Group-writable data directory rejects session start with `UnsafePath`. |
| `initialize-history.ndjson` | Handshake against 322 retained session logs (7,713,541 bytes); three measured launches took 155–160 ms. |
The project skill body was “Reply with exactly SKILL_PHASE0_OK. Do not use tools.”
The injected stdio server implemented `initialize`, `tools/list`, and `tools/call`,
advertised `verification_echo` with an empty-object input schema, and returned
`MCP_PHASE0_OK` as text. The host registered `mcp__verification__verification_echo`,
but the model route attempted the unqualified `verification_echo`; the marker
was never delivered. Keep this distinction when testing MCP support.
Phase 3 captures use the same build and isolated custom route. Sandbox and network
remain at their defaults. `phase3-user-skill` omits workspace trust;
`phase3-project-skill` enables it. Native subagent captures enable
`MUSE_EXPERIMENTAL_SDK_ENABLED=on`; the default workflow capture reads the session
from a daemon run that omitted the flag. Its workflow child IDs are internal
activity IDs, not MSP `childSessionId` values.
| File | Recorded behavior |
| -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| `phase3-controls.ndjson` | Two todo entries, a single-choice question, an answer and matching settlement, retained view paging, empty subscription usage. |
| `phase3-cancel.ndjson` | Question cancellation and matching cancelled settlement. |
| `phase3-child-read.ndjson` | Read and page an actual native child session, returning its assistant marker. |
| `phase3-default-workflow.ndjson` | Read and page the default daemon run: workflow revisions 1–7, child activity, and `MUSE_PARITY_CHILD_OK`; no `childSessionId`. |
| `phase3-user-skill.ndjson` | User-scoped skill catalog and structured invocation, returning `MUSE_PARITY_USER_OK` with trust off. |
| `phase3-project-skill.ndjson` | Project-scoped skill catalog and invocation, returning `MUSE_PARITY_PROJECT_OK` with trust on. |
| `phase3-compact.ndjson` | Resume a completed session; manual compaction rejects with `compaction_unavailable`. |
| `phase3-compact-history.ndjson` | Resume three completed turns; catalog context limit is null and compaction still rejects. |
| `phase3-compact-limit.ndjson` | Same session and route with only a configured context limit; compaction is admitted and completes, reducing 22,192 tokens to 21,322. |
The subprocess fixture host also generates schema-based variants for dedicated
subagent items, explicit child-session linkage, nonempty subscription windows,
`skill/changed`, deny choices, lost events, watchdog silence, and late admission.
These variants test protocol behavior; they are not claimed as real-host captures.
The workflow replay triggers a generated gap to page the recorded default run.
Disk edits in a live host did not emit `skill/changed` during a 15-second probe.