Skip to content

fix: forward OMP developer messages to Claude - #9

Open
LaurensBosscher wants to merge 4 commits into
DevVig:mainfrom
LaurensBosscher:upstream/04-developer-messages
Open

LaurensBosscher wants to merge 4 commits into
DevVig:mainfrom
LaurensBosscher:upstream/04-developer-messages

Conversation

@LaurensBosscher

Copy link
Copy Markdown

Changes

  • Forward developer-role messages as Claude user turns in prompts and rebuilt history, skipping empty messages.
  • Add conversion tests.

Stacked after #8: this branch includes earlier commits until their PRs merge.

Verification

  • Conversion unit tests passed.
  • A bridge-backed parent ran parallel sub-agents and subsequent tool calls locally.

omp-install and others added 4 commits September 18, 2026 09:47
Deep @oh-my-pi/* imports fail under OMP 18.2.5 extension loading because
host onLoad only rewrites legacy scopes onto in-process shims. Switch to
@earendil-works root imports (proven on this host) and register
claude-opus-5 so existing modelRoles/fallbackChains keep resolving.
…, Fable 5.1, Mythos) + max effort

Derive the picker from the host's anthropic catalog instead of a hardcoded id
list, keeping the 1M/200K variant entries. Measured [1m] entitlements stay in
tables; unmeasured 1M-capable models default to 200K with a -1m alternate.
Map thinking levels onto each model's catalog effort ladder (adds max).
Fix unsuffixed entries throwing when their preferred window has no runtime.
OMP 18 ends some turns with developer messages (subagent reminders, synthetic
continues). The bridge only read user messages, so it replaced them with
"[continue]" and dropped them from rebuilt history. Treat them as user turns,
matching OMP's anthropic provider; empty ones are skipped.
@coderabbitai

coderabbitai Bot commented Oct 27, 2026

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 6d37a71a-b54b-492f-ba6f-8506d25fe476
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Comment @coderabbitai help to get the list of available commands.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 27, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-27T09:48:13.711104Z 98db92a PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 98db92a1a6

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/index.ts
const allResults = activeQueryContexts.size > 0 ? extractAllToolResults(context) : [];
const resultCtx = allResults.length > 0 ? contextForToolResults(allResults) : undefined;
const isReentrantUserQuery = activeQuery && lastMsgRole === "user" && allResults.length === 0;
const isReentrantUserQuery = activeQuery && lastMsgRole != null && isPromptRole(lastMsgRole) && allResults.length === 0;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Defer developer prompts that accompany tool results

When OMP appends a non-empty developer reminder or synthetic continue in the same provider callback as a tool result, allResults.length > 0 routes into resultCtx; that branch still checks only lastMsgRole === "user" before filling deferredUserMessages (lines 1139-1144), then advances the session cursor and returns. The developer instruction is therefore neither replayed nor imported, so reminders such as the tested call yield instruction are silently lost on tool-running turns; use isPromptRole in that defer path as well.

Useful? React with 👍 / 👎.

Comment thread src/index.ts
function extractUserPrompt(messages: Context["messages"]): string | null {
const last = messages[messages.length - 1];
if (!last || last.role !== "user") return null;
if (!last || !isPromptRole(last.role)) return null;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Skip empty developer turns before starting a query

When a provider invocation ends in a developer message whose content is whitespace or a textless array (cases this commit explicitly drops during convertPiMessages), this predicate admits it, extractUserPrompt returns "", and the fresh-query guard at lines 1195-1206 substitutes "[continue]". Thus an empty developer placeholder starts an unintended Claude turn (and under an active query can spawn a reentrant turn) instead of being skipped; apply the same non-empty check before classifying or extracting live prompts.

Useful? React with 👍 / 👎.

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