Commit Graph

5296 Commits

Author SHA1 Message Date
YeonGyu-Kim dbf0bb9b4c test(agents): cover skills override prompt injection
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-27 17:18:37 +09:00
YeonGyu-Kim aeb4419172 fix(agents): resolve skills after agent overrides
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-27 17:18:37 +09:00
github-actions[bot] d32300a6c5 @islee23520 has signed the CLA in code-yeongyu/oh-my-openagent#3664 2026-04-27 07:59:11 +00:00
YeonGyu-Kim 1da7df1aee Revert "Merge pull request #3657 from code-yeongyu/refactor/replace-zwsp-with-real-spaces"
This reverts commit f1a11f2c92, reversing
changes made to 62c19ce0ef.
2026-04-27 15:54:05 +09:00
YeonGyu-Kim 9823462994 Merge pull request #3661 from code-yeongyu/fix/doctor-heuristic-model-status
fix(doctor): suppress resolved model capability warnings
2026-04-27 15:44:38 +09:00
YeonGyu-Kim a696c8a67c fix(hooks): apply Sisyphus GPT-5.5 variant
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-27 15:37:39 +09:00
YeonGyu-Kim f1a11f2c92 Merge pull request #3657 from code-yeongyu/refactor/replace-zwsp-with-real-spaces
refactor(agents): replace broken ZWSP sort prefixes with leading ASCII spaces
2026-04-27 15:36:51 +09:00
YeonGyu-Kim 136a54f467 fix(doctor): avoid warnings for resolved model capabilities
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-27 15:31:48 +09:00
YeonGyu-Kim 8e785963cf fix(model-capabilities): recognize current provider aliases
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-27 15:31:48 +09:00
YeonGyu-Kim f100a8565b fix(agents): keep object keys clean by separating list display from runtime name
Discovered via post-implementation review (Oracle goal verification): the
prior commit's prefix swap (ZWSP -> ASCII spaces) inherited a pre-existing
architectural bug from the ZWSP era. `getAgentListDisplayName()` was an
alias for `getAgentRuntimeName()`, which meant every callsite that used
the "list display" name as an OBJECT KEY (config.agent keys, lookup keys,
HTTP-header-bound paths) ended up carrying the sort prefix.

This worked silently with ZWSP because zero-width characters are visually
invisible. With ASCII space prefixes, the same bug becomes user-visible
and violates the explicit RFC 7230 constraint documented in AGENTS.md:
"ZWSP MUST NOT appear in object keys (used as HTTP header values)."

Fix: separate the two concepts that were conflated.

- `getAgentListDisplayName(key)` now returns the CLEAN display name
  (alias of `getAgentDisplayName`). Used for object keys, config keys,
  and any path where the name will be sent over HTTP.
- `getAgentRuntimeName(key)` keeps its prefixed return value. Used ONLY
  for the `.name` field that OpenCode reads for `localeCompare` sort.

`agent-key-remapper.ts` was already correct: it uses `getAgentRuntimeName`
for the `.name` field. The bug was that `getAgentListDisplayName` (used
as the object key) also returned the prefix.

Test updates:
- agent-display-names.test.ts splits the assertions: getAgentListDisplayName
  asserts clean names, new getAgentRuntimeName describe asserts prefixes
- All other tests using getAgentListDisplayName as an expected object key
  continue to pass because they always wanted clean names

Verification:
- bun test: 5769 pass / 10 pre-existing failures (unchanged)
- bun run typecheck: clean
- Manual: agent-key-remapper output keys verified RFC 7230 safe (no
  leading whitespace, no ZWSP); name fields preserve descending-space
  prefix for canonical core agent ordering
2026-04-27 15:30:20 +09:00
YeonGyu-Kim 62c19ce0ef Merge pull request #3659 from code-yeongyu/fix/dotted-opus-frontier-tools
fix(agents): cover dotted opus frontier model
2026-04-27 14:48:32 +09:00
YeonGyu-Kim 80791f10bc fix(agents): cover dotted opus frontier model
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-27 14:40:16 +09:00
YeonGyu-Kim 3f30dac3f1 Merge pull request #3656 from code-yeongyu/feature/hide-grep-glob-for-frontier-agents
fix(agents): hide grep glob for frontier agents
2026-04-27 14:31:30 +09:00
YeonGyu-Kim acf293de96 fix(tmux): validate fallback port
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-27 14:24:42 +09:00
YeonGyu-Kim ac8987a732 fix(agents): preserve explicit legacy tool denies
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-27 14:24:42 +09:00
github-actions[bot] baef011326 @LathissKhumar has signed the CLA in code-yeongyu/oh-my-openagent#3658 2026-04-27 04:58:33 +00:00
YeonGyu-Kim c65f90ee09 fix(tmux): preserve configured fallback port
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-27 13:51:16 +09:00
YeonGyu-Kim 467248535e fix(agents): clear stale frontier tool denies
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-27 13:51:16 +09:00
YeonGyu-Kim 0e9bb5969d refactor(agents): replace broken ZWSP sort prefixes with leading ASCII spaces
The ZWSP-based core agent sort prefixes silently failed to produce the
canonical sisyphus -> hephaestus -> prometheus -> atlas order.

Empirical testing of OpenCode's Agent.list() sort behavior shows that
Unicode collation treats zero-width characters as ignorable at the primary
level, so ZWSP-prefixed names sorted alphabetically with non-core agents
interleaved (e.g. Sisyphus, athena, Atlas, explore, Hephaestus, ...).

This commit replaces the ZWSP prefixes with leading ASCII spaces in
descending lengths (sisyphus=4, hephaestus=3, prometheus=2, atlas=1).
ASCII spaces sort reliably before alphabetic characters in localeCompare
under all locales and render correctly in every terminal.

Changes:
- AGENT_LIST_SORT_PREFIXES: ZWSP -> leading spaces (4-3-2-1 descending)
- stripAgentListSortPrefix: now strips both legacy ZWSP and new leading
  whitespace, preserving backward compatibility with existing sessions
- normalizeStoredAgentName / normalizeRegisteredAgentName: extract a
  shared stripSortPrefix helper that handles both prefix formats
- agent-config-handler: resolve user-provided default_agent display
  names through getAgentConfigKey before applying the runtime prefix,
  so configs like default_agent="Hephaestus - Deep Agent" are normalized
- agent-runtime-name-sort.test.ts: new regression test simulating
  OpenCode's exact sortBy logic (default_agent desc + name asc localeCompare)
  to verify canonical core agent order under randomised input permutations
- AGENTS.md: document the empirical finding that ZWSP was broken, why
  ASCII spaces work, and the descending prefix-length contract

Existing strip functions retain ZWSP support so legacy session state and
configs continue to resolve correctly without migration.
2026-04-27 13:48:09 +09:00
YeonGyu-Kim 8a49a03100 test(skill): fresh import skill tool factory
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-27 13:37:51 +09:00
YeonGyu-Kim 168057870a test(skill): stabilize command discovery spy
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-27 13:31:49 +09:00
YeonGyu-Kim a2c3804b5f test(slashcommand): isolate command discovery mocks
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-27 13:24:50 +09:00
YeonGyu-Kim ecce65bb67 fix(skill): isolate injected skill discovery
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-27 13:24:50 +09:00
YeonGyu-Kim f1353cd9a8 fix(tmux): use stable fallback server URL
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-27 13:24:50 +09:00
YeonGyu-Kim c46b712997 fix(agents): hide grep glob for frontier agents
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-27 12:49:20 +09:00
acamq f74d03ca90 Merge pull request #3654 from acamq/fix/failing-ci
test: fix remaining stale gpt-5.4 expectations after gpt-5.5 promotion
2026-04-26 13:40:55 -06:00
acamq 0afacfa756 test: fix remaining stale gpt-5.4 expectations after gpt-5.5 promotion
Commit 708891dab fixed most test expectations after the gpt-5.5 model
promotion but missed 13 tests across 6 files that still expected
openai/gpt-5.4 in DEFAULT_CATEGORIES and AGENT_MODEL_REQUIREMENTS.

Updates all remaining stale expectations to openai/gpt-5.5:
- agents/utils.test.ts: atlas/metis resolution, buildAgent category,
  override.category expansion (5 tests)
- plugin-handlers/config-handler.test.ts: ultrabrain config resolution
  and fallback (2 tests)
- shared/agent-variant.test.ts: sisyphus chain variant and category
  fallback (2 tests)
- shared/model-capability-guardrails.test.ts: built-in requirement
  model ID assertion (1 test)
- tools/look-at/multimodal-fallback-chain.test.ts: multimodal-looker
  hardcoded variant metadata (1 test)
- cli/config-manager/generate-omo-config.test.ts: sisyphus model and
  fallback_models expectations (2 tests)
2026-04-26 13:20:46 -06:00
github-actions[bot] 25e1fa9c3d @gutierrezx7 has signed the CLA in code-yeongyu/oh-my-openagent#3651 2026-04-26 11:58:38 +00:00
YeonGyu-Kim b32620ca47 Merge pull request #3640 from ismetanin/docs/fix-kimi-code-link 2026-04-26 13:32:57 +09:00
github-actions[bot] 6a0272feb1 @ismetanin has signed the CLA in code-yeongyu/oh-my-openagent#3640 2026-04-25 13:13:03 +00:00
Ivan Smetanin 3577f30243 docs(readme): fix Kimi Code subscription link and price
The Kimi Code subscription link had drifted across the 5 README
translations: the English README pointed to https://www.kimi.com/kimiplus/sale
at $0.99, while the Japanese, Korean, Russian, and Simplified Chinese
versions pointed to https://www.kimi.com/membership/pricing with a
referral tracking ID, also at $0.99 with an "only this month" qualifier.

Normalized all 5 to the canonical https://www.kimi.com/code at $19,
preserving each language's localized "Kimi Code Subscription" wording.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-25 14:07:34 +01:00
github-actions[bot] c3b3417097 @ihoooohi has signed the CLA in code-yeongyu/oh-my-openagent#3637 2026-04-25 10:50:03 +00:00
github-actions[bot] 48b0cfeaf5 @darianstlex has signed the CLA in code-yeongyu/oh-my-openagent#3626 2026-04-24 17:59:48 +00:00
YeonGyu-Kim 33ac355645 Preserve migration history during config migration 2026-04-25 00:41:32 +09:00
YeonGyu-Kim fbd4cfba9e Update OpenAI defaults to GPT-5.5 2026-04-25 00:41:32 +09:00
github-actions[bot] 17d3350985 @hackerh3 has signed the CLA in code-yeongyu/oh-my-openagent#3600 2026-04-24 15:07:38 +00:00
acamq 7bbe11ac01 Merge pull request #3623 from MoerAI/fix/session-model-recovery-guard
fix(chat-message): remove unreachable guard that blocked session model recovery (fixes #3561)
2026-04-24 07:52:39 -06:00
MoerAI 7fa21efc2a fix(chat-message): remove unreachable guard that blocked session model recovery (fixes #3561) 2026-04-24 19:06:08 +09:00
YeonGyu-Kim 708891dabe test: fix stale expectations after gpt-5.5 model promotion
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>
2026-04-24 16:17:44 +09:00
YeonGyu-Kim 6b46b9b4be fix(model-capabilities): add gpt-5.5 capability snapshot
Adds missing capability entry for gpt-5.5 to supplemental-entries.ts.

This model was promoted as default for oracle, hephaestus, and deep agents,

but the capability snapshot was missing, causing resolution failures.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-24 16:17:37 +09:00
YeonGyu-Kim 3875b40c17 feat(migration): auto-upgrade openai/gpt-5.4 to openai/gpt-5.5
Now that oracle, hephaestus, and the deep category ship gpt-5.5-native
prompts and default to gpt-5.5 in their fallback chains, user configs
that pin openai/gpt-5.4 should follow the same upgrade on next load.

The existing migration pipeline (migrateModelVersions) picks this up
automatically from MODEL_VERSION_MAP, records the upgrade in the
sidecar file to stay idempotent, and leaves gpt-5.4-mini / -mini-fast
/ -nano alone since those cost-tier variants are intentional picks
and do not have direct gpt-5.5 counterparts yet.
2026-04-24 13:13:14 +09:00
YeonGyu-Kim 3bab66b96c feat(models): promote gpt-5.5 as default for oracle, hephaestus, and deep
Now that each of these agents ships a native gpt-5.5 prompt variant,
their default OpenAI model is bumped from gpt-5.4 to gpt-5.5. The
gpt-5.4 entries are removed from the same-provider position in each
fallback chain (a single provider doesn't need both version entries -
if gpt-5.5 isn't available there, cross-provider fallback kicks in).

- oracle.fallbackChain: gpt-5.5 high (openai) -> gemini-3.1-pro -> claude -> glm
- hephaestus.fallbackChain: gpt-5.5 medium (openai only, requiresProvider)
- deep category.fallbackChain: gpt-5.5 medium -> claude -> gemini
- deep category.config: openai/gpt-5.5 medium

No changes to sisyphus, sisyphus-junior, ultrabrain, momus, or other
agents that still point at gpt-5.4; those stay on the shared regex-
based routing in the gpt-5-4 prompt family.
2026-04-24 13:06:50 +09:00
YeonGyu-Kim 1ff60d5afe feat(agents): add gpt-5.5 native oracle prompt
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.
2026-04-24 13:06:35 +09:00
YeonGyu-Kim c57d08c0b4 feat(agents): add gpt-5.5 native sisyphus-junior prompt
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.
2026-04-24 13:06:18 +09:00
YeonGyu-Kim a432e29ae3 feat(agents): add gpt-5.5 native hephaestus prompt
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.
2026-04-24 13:06:02 +09:00
YeonGyu-Kim 98964eb6f8 feat(agents): add gpt-5.5 native sisyphus prompt
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.
2026-04-24 13:05:49 +09:00
YeonGyu-Kim 69e6f386b3 feat(agents): reintroduce isGpt5_5Model for per-version prompt routing
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.
2026-04-24 13:05:31 +09:00
YeonGyu-Kim 81c5ed44f0 docs(drafts): add gpt-5.5 native prompt drafts
Ground-up rewrites of sisyphus, hephaestus, oracle, and deep-category
prompts styled after OpenAI Codex's gpt-5.4 prompt architecture. Drafts
include shared sisyphus-junior base plus a deep category-context append
that layers on top of it.

Design principles captured in README: Codex-style section structure,
single {{ personality }} slot, prose-first output, contract frames over
threat frames, explicit opener blacklist, and "why, not just what"
justification for every rule.
2026-04-24 13:05:20 +09:00
YeonGyu-Kim ed23e8b453 release: v3.17.5 2026-04-24 11:59:01 +09:00
acamq bcbd99bda0 Merge pull request #3605 from Jay1/jay/gpt-5-5-native-sisyphus
feat(agents): add GPT-5.5 native Sisyphus support
2026-04-23 20:52:14 -06:00