Skip to content

feat: add advisory Jev decision support - #256

Open
mrrkrieg wants to merge 11 commits into
omar-os:mainfrom
mrrkrieg:feat/decision-support-pilot-pr
Open

mrrkrieg wants to merge 11 commits into
omar-os:mainfrom
mrrkrieg:feat/decision-support-pilot-pr

Conversation

@mrrkrieg

Copy link
Copy Markdown
Contributor

Summary

OMAR can now offer an operator-requested Jev decision suggestion from an enrolled review output, while keeping the existing workflow fully advisory and unchanged by default.

  • Adds the feature-gated local /v1/assist service and a Mission Control Suggestions experience.
  • Captures only outputs from explicitly configured review reactions on the daemon-issued loopback SSE stream, and sends only an operator-selected Unicode-scalar range with its digest.
  • Calls pinned jev-1.13.0 through TypeSafe, validates the exact response schema and probability distributions, and returns a specific owner only when owner, context, and selected-answer confidence are each at least 0.90.
  • Keeps the result useful without granting control-plane access: no workflow writes, agent messages, approvals, or lifecycle mutations are possible.

Reliability and safety

  • Defaults to disabled and per-run off; shadow and suggest are explicit operator modes.
  • Uses a writer-preferred dispatch gate so disabling a run prevents queued provider egress and invalidates late results.
  • Bounds workers, queue depth, source and selection sizes, provider responses, private-store capacity, and paginated API reads.
  • Persists sources, decisions, idempotency bindings, provenance, coverage, and feedback atomically with private permissions. Restarted daemons reload those records without replaying work.
  • Treats observer gaps, late events, and interrupted streams as partial or stale evidence. Retention is non-destructive: expired records become unavailable from the API rather than being silently deleted.

Validation

  • cargo test --offline --bin omar -- --skip manager::tests::a_codex_home_outlives_its_pane_only_until_the_next_launch — 426 passed, 7 ignored.
  • cargo test --offline --bin omar --features decision-support -- --skip manager::tests::a_codex_home_outlives_its_pane_only_until_the_next_launch — 435 passed, 7 ignored.
  • cargo build --offline --features decision-support.
  • Mission Control: ESLint, vinext build, and rendered/protocol contract tests (15 passed).
  • Real-daemon conformance checks are skipped here because OMAR_BIN and OMARC_BIN are not present in this checkout.

dan krieger added 9 commits September 20, 2026 21:15
Adds a feature-gated Jev decision layer and Mission Control suggestions without touching workflow control paths.
Adds operator setup and safety boundaries for the optional Jev integration.
Covers the default-off path, source binding, and generated wire contract.
Enforces the Jev model contract instead of allowing an incompatible configured override.
Keeps polling asynchronous so the panel satisfies React's effect contract.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

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

A critical compile error and multiple correctness and lifecycle issues remain unresolved.

Get a fresh assessment by requesting another Copilot review.

Review effort: Lite
Findings: 1 High severity · 1 Medium severity

Open (2)
What changed in this PR

Adds optional, advisory Jev decision support with local APIs, persistence, provider validation, and Mission Control UI.

Changes:

  • Adds feature-gated decision-support service and worker workflow.
  • Adds /v1/assist APIs, protocol types, and persistence.
  • Adds Suggestions UI, configuration, documentation, and dependencies.
File Reviewed change
web/​app/​suggestions.tsx Suggestions interface
web/​app/​studio.tsx Mission Control integration
web/​app/​lib/​protocol.ts Protocol exports
web/​app/​lib/​protocol-generated.ts Generated decision types
web/​app/​lib/​decision-client.ts Assist API client
web/​app/​globals.css Suggestions styling
src/​serve.rs Assist API routes and lifecycle handling
src/​protocol.rs Wire protocol generation
src/​omar.rs Decision module registration
src/​decisions.rs Decision service, provider workflow, persistence, and validation
src/​config.rs Decision-support configuration
src/​app.rs Test configuration defaults
docs/​decision-support.md Feature documentation
Cargo.toml Feature flag and dependencies

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

Comment thread src/decisions.rs
record.reason_code = outcome.reason_code;
record.model = Some(outcome.model.clone());
record.model_resolved = Some(outcome.model);
} else if let Err(error) = result {
Comment thread web/app/suggestions.tsx Outdated
{sources.map((item) => <option key={item.source_id} value={item.source_id}>{item.reaction_id} · {item.port}</option>)}
</select>
</label>
<textarea ref={excerpt} defaultValue={source?.text} key={source?.source_id} aria-label="Review excerpt" />
@lsk567

lsk567 commented Sep 23, 2026 •

Copy link
Copy Markdown
Collaborator

Integrating Jev is a super cool idea! And I think OMAR is a great fit for Jev because TypeSafe AI advertises Jev as a "System I model". It needs a coordination framework like OMAR to connect it to the other "System II models".

I have a proposal regarding integration: why not just make Jev an OMAR backend? While it cannot be a generic backend like Codex, we can make it a special backend that only writes to structured output ports. This connects elegantly to @FeritBerkay's structured output PR #248.

For example, we can have a Jev-integrated program that looks like this:

Screenshot 2026-09-23 at 5 36 42 PM

With a structured schema like this:

Screenshot 2026-09-23 at 5 37 03 PM

Then Jev picks one choice with speed and cost effectiveness.

This also allows Jev to fit seamlessly into the OMAR model!

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.

3 participants