Updates test expectations across agent, cli, shared, plugin, and tools tests
to match gpt-5.5 as the new default for oracle, hephaestus, and deep agents.
Includes snapshot updates for model-fallback tests.
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Inline ORACLE_GPT_5_5_PROMPT constant added to oracle.ts (Oracle is
a single-file agent, no sub-directory variant split).
Distinctive elements over ORACLE_GPT_PROMPT:
- Confidence signaling (high/medium/low) added as a required field
alongside the existing effort estimate (borrowed from Codex's
review_prompt.md)
- Codex-style section headers (# General, ## Decision framework,
## Response structure, etc.) replacing the XML-tagged structure
- Prose-first output more explicitly encouraged
- Three-tier response structure (Essential / Expanded / Edge cases)
preserved with the same hard numerical limits
- Follow-up session behavior explicitly documented
createOracleAgent() branches on isGpt5_5Model first, then isGptModel,
falling back to the thinking-enabled claude default.
The base prompt is category-agnostic; the actual category context (deep,
quick, ultrabrain, writing) layers on top at runtime via the
promptAppend parameter resolved by resolvePromptAppend.
Distinctive elements:
- Closing '# Category context' section explicitly telling the agent
to read the appended block as overriding defaults on conflict
- Orchestrator-facing final-answer structure (What changed / Key
decisions / Verification / Observations / Blockers) instead of a
user-facing conversational close
- Sparse commentary cadence; the orchestrator synthesizes progress
for the user, so mid-task narration is mostly noise
getSisyphusJuniorPromptSource() checks gpt-5-5 before the gpt-5.4 /
gpt-5.3-codex path so the new prompt takes precedence for gpt-5.5
deployments.
Ground-up rewrite that follows the same Codex-style section structure
as the new gpt-5-5 sisyphus prompt, tuned for Hephaestus's autonomous
deep-worker role.
Distinctive elements:
- 'Autonomy and Persistence' section with named 'Forbidden stops' list
(replaces gpt-5-4's FORBIDDEN/CORRECT table rhetoric)
- 'Three-attempt failure protocol' codified
- 'Exploration-first approach' with explicit 5-15 minute expectation
- 'Dig deeper' subsection for root-cause bias
- 'Ambition vs precision' distinction for greenfield vs existing
codebase work
getHephaestusPromptSource() now checks gpt-5-5 before gpt-5-4; the
regex-based gpt-5-4 path stays as the catch-all for other native
versions.
Ground-up rewrite styled after OpenAI Codex's gpt-5.4 prompt
architecture: '# General' -> '## Autonomy and Persistence' -> '## Task
execution' -> '## Validating your work' -> '# Working with the user' ->
'# Tool Guidelines' section hierarchy.
Key differences from the gpt-5-4 variant:
- Prose-first output, bullets only when content is list-shaped
- Contract frames replace threat frames (GPT-5.5 follows instructions
well; NEVER/FORBIDDEN rhetoric adds entropy without compliance gain)
- Explicit opener blacklist for 'Done -', 'Got it', 'Great question'
- '{{ personality }}' slot reserved for future persona substitution
- '{{ taskSystemGuide }}' slot switches todo/task tools per harness cfg
- Codex-compatible clickable file reference format
Sisyphus factory now checks isGpt5_5Model before isGptNativeSisyphusModel,
so gpt-5.5 models route to the new prompt while gpt-5.4, gpt-5.6+, and
other matches stay on the existing gpt-5-4 prompt.
The GPT_NATIVE_SISYPHUS_RE regex already matches gpt-5.5 (and future
5.6+), which is correct for shared behavior. However, gpt-5.5 now has
its own prompt family separate from gpt-5.4, so we need a narrower
check to route exclusively to the gpt-5-5 variants before falling
through to the regex-matched gpt-5-4 path.
The regex stays as the catch-all for future versions; isGpt5_5Model
is the precise-match guard for the current release.
Replace isGpt5_4Model + isGpt5_5Model + OR-composed isGptNativeSisyphusModel
with a single regex matching GPT-5.x where x >= 4. Automatically covers
future versions (5.6, 5.7, 5.10+) without code changes.
Constraint: Must continue to reject gpt-5.3-codex and gpt-5.x where x < 4
Rejected: Per-version functions | not scalable, each new version adds a function + OR clause
Confidence: high
Scope-risk: narrow
ast_grep_search was mentioned exactly once in the librarian prompt
(bundled as 'grep/ast_grep_search for function/class') with no syntax
guidance. When the librarian cloned a repo and tried to match code
shape, it fell into the same regex-in-AST trap as the main agent.
Two targeted edits, no rewrite of the surrounding request-classification
flow:
- Phase 1 TYPE B 'Find the implementation' now separates ast_grep_search
(code shape) from grep (text/literals) and reminds the LLM that AST
patterns use $VAR and $$$ and are not regex.
- TOOL REFERENCE adds a dedicated ast_grep_search row with valid
examples and the explicit regex anti-pattern list, alongside tightened
guidance for grep_app and grep so the LLM picks the right tool for
cross-repo vs single-repo, text vs shape.
The previous Tool Strategy was a neutral 5-bullet list that treated
ast_grep_search and grep as equals. LLMs read 'structural patterns
(function shapes, class structures)' and reach for ast_grep_search
first, then call it with regex ('foo|bar', '.*', '\\w') and silently
get zero results.
Rewrite so the default is clear - grep first, ast_grep_search only for
true AST shape matching - and enumerate the regex anti-patterns with
their corrective switches. Add an explicit rule: if ast_grep_search
returns zero matches and the printed hint says the pattern is regex-
shaped, switch to grep instead of retrying with another regex variant.
Preserves the existing absolute-path requirement, <results> block
format, and read-only / no-emoji constraints.
Document the new primary chain and install-time fallback behavior for explorer and librarian.\nKeep the user-facing guidance aligned with the runtime and CLI model selection.
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Syncs the README translations, CONTRIBUTING, docs/reference,
docs/guide, docs/examples JSONC configs, and the hierarchical
src/**/AGENTS.md files with the model version bump already landed
in the source and migration commits.
Updates the canonical Anthropic Opus model in every fallback chain
(sisyphus, oracle, prometheus, metis, momus, visual-engineering,
ultrabrain, deep, artistry, unspecified-high), the unspecified-high
category default, the think-mode HIGH_VARIANT_MAP, the Claude Code
alias map, the claude-thinking legacy alias, the context-limit GA
regex, and event.ts fallback strings.
Widens supportsCachedAnthropicLimit to accept both claude-*-4-6 and
claude-*-4-7 so the 1M context cache still applies across the bump.
Regenerates the bundled model-capabilities snapshot from models.dev
and the model-fallback snapshot to match the new source output.
Several places still emitted task(session_id=...) after the refactor:
- src/hooks/atlas/verification-reminders.ts: 2 occurrences
- src/agents/dynamic-agent-core-sections.ts: buildNonClaudePlannerSection prompt
Tests updated to match: atlas index.test.ts and dynamic-agent-prompt-builder.test.ts
The agent prompt described PDF handling but did not tell the agent
to call the Read tool, which is its only allowed tool. Added
explicit instruction so PDFs and documents are actually loaded
before extraction.
🤖 Generated with OhMyOpenCode assistance
https://github.com/code-yeongyu/oh-my-opencode
Anthropic API accepts claude-opus-4.6 (dot format) but not
claude-opus-4-6 (dash format). Added anthropic case to
transformModelForProvider to normalize dash-format model IDs before
they reach the provider. Updated model config snapshots and test
expectations to match the new dot-format output.
🤖 Generated with OhMyOpenCode assistance
https://github.com/code-yeongyu/oh-my-opencode
Extract hardcoded GPT apply_patch permission logic into a reusable module
to ensure consistent behavior across all agents. This prevents GPT models
from using the unreliable apply_patch tool while allowing other models.
- Add gpt-apply-patch-guard.ts with GPT_APPLY_PATCH_GUIDANCE and getGptApplyPatchPermission
- Update Hephaestus agent to use centralized permission logic
- Update Sisyphus-Junior agent to use centralized permission logic
- Update all GPT prompt builders to reference shared guidance constant
🤖 Generated with assistance of OhMyOpenCode
Built-in agents (Sisyphus, Hephaestus, Atlas) now include explicit
identity section in their system prompts, matching custom agent behavior.
12 agent identity tests pass, 266 total pass, tsc clean.
Closes#2964
GPT models (5.3-codex, 5.4, etc.) frequently hang when using apply_patch
due to verification loops. This adds:
1. Tool restriction: apply_patch is denied for GPT variants of
Hephaestus, Sisyphus-Junior, and Sisyphus agents
2. Prompt guidance: GPT-specific prompts now explicitly instruct using
edit/write tools instead of apply_patch
3. Removed the 'Always use apply_patch' instruction from
sisyphus-junior/gpt-5-4.ts that contradicted the fix
The deny is model-conditional — Claude variants retain apply_patch
access since it works reliably there.
Tool return values contained CTAs ("Use background_output to check") that
caused models to immediately poll instead of waiting for <system-reminder>
notifications. Unified all 5 tool return messages with explicit "Do NOT call
background_output now" guard, added pre-notification warning to BackgroundOutput
tool description, and strengthened Background Result Collection sections across
all 3 Sisyphus prompt variants (default, gpt-5-4, main) with BLOCKING
anti-pattern enforcement.
🤖 Generated with assistance of [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)
These agents should only be usable as primary session agents, not as
subagent targets via call_omo_agent/task(). Previously MODE was 'all'
which allowed them to be spawned as subagents, leading to confusing
behavior (e.g. Atlas delegating to Hephaestus as a subagent).
Subagent-callable agents remain: oracle, explore, librarian,
multimodal-looker, metis, momus, sisyphus-junior.
Note: Prometheus is not a BuiltinAgentName and is only invoked via
slash commands, so no change needed there.
- Add providerModelsCache/fetchAvailableModels mocks to 20 utils.test.ts
tests that broke when createBuiltinAgents started reading the cache
- Isolate ALL src/plugin and src/features/background-agent test files in CI
(mock.module pollution crosses between files in the same bun process)
- Mirror CI isolation changes in publish.yml
25 failures → 0 in CI (all mock-pollution tests run individually)
GLM-5 has native reasoning built-in. Injecting thinking: {type: 'enabled'}
causes a param conflict (400 error). Add isGlmModel() check to return base
config without thinking/reasoningEffort for GLM models.
- Add isGlmModel() helper to types.ts
- Early return in createSisyphusJuniorAgentWithOverrides for GLM models
- Add tests for isGlmModel and GLM reasoning config behavior