Skip to content

feat(paseo-omp): DX quick wins from integration research - #273

Closed
masrurimz wants to merge 4 commits into
omercnet:mainfrom
masrurimz:feat/paseo-omp-dx-quick-wins
Closed

masrurimz wants to merge 4 commits into
omercnet:mainfrom
masrurimz:feat/paseo-omp-dx-quick-wins

Conversation

@masrurimz

Copy link
Copy Markdown

Why

The DX integration research in paseo-omp/docs/omp-paseo-dx-integration-research.md named four quick wins that need no protocol change, plus release process ratchets. Users hit silent pills, unexplained rejects, and a support flow split across two copy actions. This stack implements all four wins and the ratchets without changing protocol behavior.

Scope

  • Config surface. Restart-required badges (shared/restart-required.ts, omp-config-surface.tsx), historical quota label (quota-state.ts, quota-popover.tsx, wired in index.client.tsx), tool boundary explainer card (policy-explainer.ts) with configuration.md cross-links.
  • Pills and diagnostics. Freshness machine (client/pill-freshness.ts) with stale and error banners plus retry, pre-launch availability display (shared/availability-display.ts) reusing the existing provider-health query. No new timers, no new RPCs.
  • Support and process. One-click report plus transcript bundle (shared/support-bundle.ts, server/support-bundle.ts, 32 KiB journal excerpt), instead-hint side channel on six reject sites (server/provider/instead-hints.ts, messages byte-identical), offline wire and SDK diff lever (scripts/omp-wire-diff.mjs) with README, SUPPORT, and TESTING notes.
  • Out. Every section 5.1 protocol feature (queue, fork, voice, effort, presets, and the rest) and SDK command, status, and usage-source registration. The untracked server/usage-source.ts in the worktree belongs to another effort and stays out.

Tradeoffs

  • Hints ride as non-enumerable diagnostic fields instead of an explicit envelope. Old hosts keep the exact {message} shape, which tests pin, and strict host schemas never see a new key. A future mapper that copies errors without rejectDetails drops hints silently.
  • The availability display maps the existing health contract client-side instead of adding an RPC. Per-profile command probing before launch would need daemon input that does not exist yet.
  • Transcript excerpts are capped and opt-in per click with a redaction reminder. No redaction engine. The rule stays review before pasting.

Blast Radius

Client pills, config surface, diagnostics views, six server reject sites with messages preserved, one additive RPC. Full suite reads 894 passed with 1 pre-existing failure (omp-rpc-protocol multi-provider catalog, red at base 0155e0a before this work).

Verification

  • npm run typecheck clean across client, server, and tests.
  • bun x vitest run gives 894 passed, 7 skipped, 1 failed pre-existing and unrelated.
  • node scripts/omp-wire-diff.mjs --self-check holds the exit-code contract.
  • bun x biome check clean on all touched paths.
  • No daemon runtime check. Unit and static only. The Docker canary stays the end to end gate.

get_available_models node budget 16384 -> 65536: a standard
OMP 18.6 registry (962 models) serializes to 16385 nodes and
failed discovery with rpc-response-limit, leaving the provider
in error.

OMP_MAX_CATALOG_MODELS 256 -> 4096: selection kept the head of
OMP order and silently dropped providers past zai (muse-sub,
devin, opencode-go, qodeer, z0ne, crof, cline-pass).

Boundary tests scaled 257 -> 4097 to preserve intent.
Copilot AI balanced review requested due to automatic review settings October 4, 2026 15:52
@masrurimz
masrurimz requested a review from omercnet as a code owner October 4, 2026 15:52
@masrurimz

Copy link
Copy Markdown
Author

Closing: this stack should live on my fork only, not as an upstream PR. The branch remains at masrurimz/paseo-plugins feat/paseo-omp-dx-quick-wins.

@masrurimz masrurimz closed this Oct 4, 2026

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🟡 Changes recommended

selectPerProfileAvailability uses require() in an ESM module with an always-true guard, and SUPPORT.md documents a "Copy bundle" UI action that is never wired into the client.

Review effort: Balanced
Findings: 1 Medium severity · 1 Low severity

Open (2)
What changed in this PR

This PR implements four no-protocol-change DX "quick wins" for the paseo-omp plugin plus release-process ratchets, sourced from the OMP↔Paseo DX integration research. It touches the config surface (restart-required badges, historical-quota labeling, a tool-boundary explainer card), composer pills/diagnostics (a freshness state machine with stale/error banners and a pre-launch availability display), and support/process tooling (a one-click report+transcript bundle RPC, an "instead-hint" side channel on six reject sites, and an offline wire-diff lever with doc updates).

Changes:

  • Config surface: per-setting restart/new-session badges, (historical) quota labels, and a canonical tool-policy boundary card cross-linked to configuration.md.
  • Pills & diagnostics: pure pill-freshness machine driving stale/error annotations and popover banners, plus a pre-launch availability display reusing the existing provider-health query.
  • Support & process: get-support-bundle RPC + shared assembler with a 32 KiB transcript cap, non-enumerable "instead" hints on reject paths (messages preserved), and scripts/omp-wire-diff.mjs with README/SUPPORT/TESTING notes; catalog cap raised 256→4096.
File Description
shared/​restart-required.ts Classifies setting impact (live/new-sessions/restart) and derives restart requirement.
shared/​availability-display.ts Maps existing health contract to a four-state availability union + fixed copy.
shared/​support-bundle.ts UTF-8-safe transcript truncation, bundle assembler, and get-support-bundle RPC schema.
server/​support-bundle.ts Journal-only transcript retrieval and bundle resolver.
server/​provider/​instead-hints.ts Reject-code hint registry carried as a non-enumerable diagnostic field.
server/​provider/​{session,connection,host-tools,prompt-payload}.ts Routes six reject sites through hint-carrying helpers (messages unchanged).
server/​provider/​catalog.ts, omp-rpc-transport.ts Catalog cap 256→4096 and matching response node bound bump.
client/​pill-freshness.ts Freshness transitions, label/notice derivation, subscription store.
index.client.tsx Wires freshness store, poll intervals, historical quota label, and pill popover banners.
client/​provider-diagnostics-state.ts Availability re-exports, shared health query key, and per-profile availability (has a bug).
client/​hub-sidebar.tsx, hub-status.ts Availability banner/trailing badge in the Hub sidebar.
client/​omp-config-surface.tsx, policy-explainer.ts Restart badges, restart summary, and tool-boundary explainer card.
client/​quota-state.ts, quota-popover.tsx Historical quota suffix/title and popover note.
client/​support-diagnostics-state.ts Bundle view-model helper (not yet consumed by any UI).
scripts/​omp-wire-diff.mjs Offline wire/SDK drift classifier with self-check.
docs/​README/​SUPPORT/​TESTING Documentation for badges, bundle flow, and the wire-diff lever.
tests/​* New/updated unit coverage for the above modules and catalog cap.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment on lines +312 to +316
if (failed && (input.errors[provider.id] ?? provider.id.length > 0)) {
const { displayForStatus } = require("../shared/availability-display") as typeof import(
"../shared/availability-display"
);
result.set(provider.id, displayForStatus("unrunnable"));
Comment thread paseo-omp/SUPPORT.md
- keep adaptation, packaging, and cross-project compatibility work in this repository.

Do not put credentials, private repository paths, session transcripts, or unredacted RPC payloads in an issue. Report vulnerabilities through the [private GitHub Security Advisory form](https://github.com/omercnet/paseo-plugins/security/advisories/new), not a public issue.
Do not put credentials, private repository paths, session transcripts, or unredacted RPC payloads in an issue. If a maintainer asks for a transcript excerpt, use **Copy bundle** in **OMP → Help**. It appends an opt-in 32 KiB journal excerpt to the same report, and you must review and redact that excerpt before pasting it. Report vulnerabilities through the [private GitHub Security Advisory form](https://github.com/omercnet/paseo-plugins/security/advisories/new), not a public issue.
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.

2 participants