Commit Graph

6015 Commits

Author SHA1 Message Date
YeonGyu-Kim f5e063b00a fix: only call setDefaultAgentForSort when user explicitly sets default_agent
The previous code read params.config.default_agent which is always populated to
"Sisyphus - Ultraworker" by existing logic (lines 196-204) even when the user
never configured default_agent. This silently overrode any custom agent_order.

Now we gate on configuredDefaultAgent (the user's explicit value) so the sort
shim rank map is only mutated when the user actually set default_agent.

Add regression test: agent_order without default_agent must preserve order.

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-18 13:42:59 +09:00
Alan She ec7168eb6c fix: respect default_agent in sort shim ordering (#3900)
The sort shim always placed core agents (sisyphus, hephaestus, prometheus,
atlas) before any custom agent, ignoring the user's configured default_agent
in opencode.json. This caused the TUI to always show Sisyphus as the selected
agent on startup regardless of default_agent.

Add setDefaultAgentForSort() which inserts the configured default_agent at
rank 0 in the sort shim's rank map. Called from applyAgentConfig after
resolving the effective default_agent value.

Fixes #3900
2026-05-14 20:45:52 +08:00
YeonGyu-Kim ca178f411c Merge pull request #4016 from code-yeongyu/fix-bg-noti-coalesce
fix(background-agent): coalesce rapid-fire idle parent notifications
2026-05-14 19:02:10 +09:00
YeonGyu-Kim 8ea1e0fd6a chore: sync bun.lock with v4.1.2 release
Bun's --frozen-lockfile failed on origin/dev because v4.1.2 (c75deee54)
bumped the platform binary versions in package.json without refreshing
bun.lock. Regenerated via `bun install` to unblock CI on dev-based PRs.

Required for `bun install --frozen-lockfile` (used by ci.yml test +
typecheck jobs) to succeed.
2026-05-14 18:55:52 +09:00
YeonGyu-Kim 268c89c945 fix(background-agent): coalesce rapid-fire idle parent notifications
When many background tasks complete in rapid succession while the parent
session is idle, each completion fired its own promptAsync call, stacking
N consecutive `<system-reminder>` user messages with no assistant turn
between. Hyperplan + many parallel explore subagents made this very
visible to the user.

Route the idle-path through the existing pendingParentWakes queue with a
100ms debounce window. Notifications arriving during the debounce join
the same batch, the 150ms settle window also coalesces newcomers, and a
single batched prompt fires to the parent. Busy-path semantics are
unchanged (still 1s retry).

Prior attempts (1c05c60dc, ea55c385b, a337635e3) all coalesced only the
busy-defer path, leaving the idle-immediate-send path uncoalesced.
2026-05-14 18:52:28 +09:00
YeonGyu-Kim b9beea1039 feat(team-mode): drive immediate teardown and recreate-to-reshape loop
Reframe the skill's Lifecycle section so the lead treats teams as
ephemeral, one-per-phase units. The moment a phase ends or the shape
no longer fits, call team_delete and spawn a fresh team. Restructure
through delete-then-create, never in place.

Also fixes a misframing in old step 5: team_shutdown_request is a
per-session self-shutdown signal, not a 'wind down the team' command.
team_delete is what tears the whole team down.
2026-05-14 18:22:30 +09:00
github-actions[bot] c75deee54c release: v4.1.2 2026-05-14 06:38:21 +00:00
YeonGyu-Kim 9a1f8f679f fix(web): route installation links to docs section 2026-05-14 14:18:13 +09:00
YeonGyu-Kim 63ced1d2a0 Merge pull request #4010 from code-yeongyu/chore/safe-tooling-upgrades-biome-tsgo-20260514-132516
chore(tooling): refresh safe deps and checks
2026-05-14 13:57:31 +09:00
YeonGyu-Kim 96d7249581 Merge pull request #4009 from code-yeongyu/fix/ralph-loop-compaction-race
fix(ralph-loop): guard compaction continuation ownership
2026-05-14 13:50:09 +09:00
YeonGyu-Kim f10251b59d chore(tooling): refresh safe deps and checks 2026-05-14 13:46:11 +09:00
YeonGyu-Kim 9e6185266d fix(ralph-loop): guard compaction continuation ownership 2026-05-14 13:43:47 +09:00
github-actions[bot] 72bac14a11 @clousky2020 has signed the CLA in code-yeongyu/oh-my-openagent#4005 2026-05-14 04:42:37 +00:00
YeonGyu-Kim d16d47a0b4 docs: complete v4.1.1 drift sweep in reference and guide docs
Follow-up pass to catch drift my earlier docs commit missed:

docs/reference/features.md:
- 'Architecture Snapshot': 5-tier hook composition '52 base / 59 with team mode'
  to '54 base / 61 with team mode' (matches actual ToolGuard +2 from
  fsync-skip-warning + bash-file-read-guard).

docs/reference/cli.md:
- Add 'boulder' subcommand to Commands table (inspects boulder work-state).

docs/reference/configuration.md:
- Code comment example 'Kimi K2.5 work best' to 'Kimi K2.6 work best' to match
  current primary Sisyphus fallback chain.

docs/guide/installation.md:
- Add 'Kimi K2.6 (opencode-go, vercel)' row to the provider availability table
  above the existing K2.5 row.
- Selection priority footnote and 'Safe Overrides' chains updated to mention
  K2.6 alongside K2.5 in Sisyphus and Atlas chains.

docs/guide/agent-model-matching.md:
- Provider table 'Kimi K2.5' row to 'Kimi K2.6 / K2.5'.
- Atlas fallback chain mentions K2.6 instead of K2.5 alone.
2026-05-14 13:05:15 +09:00
YeonGyu-Kim 98242ba64f docs(i18n+web): align translated READMEs and landing copy with v4.1.1 hook count
Sweep the same '25+ hooks' / '50+ hooks' drift that lingered in the localized
READMEs and the marketing site after the user-facing docs refresh:

- README.ja.md / README.ko.md / README.zh-cn.md / README.ru.md:
  '25+ built-in hooks' to '54+ lifecycle hooks (61 with Team Mode)'.

- web/app/layout.tsx + web/app/_components/landing-page.tsx:
  SEO description, OG description, Twitter description, JSON-LD description,
  and HeroStats injected count: '50+ lifecycle hooks' to '54+ lifecycle hooks'.

Matches the canonical hook composition in src/plugin/hooks/ (24 Session +
16 ToolGuard + 5 Transform + 7 Continuation + 2 Skill = 54 base; +7 with
team_mode.enabled = 61 total).
2026-05-14 13:00:52 +09:00
YeonGyu-Kim 8cc3c32099 docs: refresh user-facing docs to match v4.1.1 codebase
Align README.md, CONTRIBUTING.md, and docs/ with the same ground truth used
in the hierarchical AGENTS.md regeneration commit 1e7a7600a:

- README.md: '25+ built-in hooks' was undercounted by ~30 hooks; now reads
  '54+ lifecycle hooks (61 with Team Mode)' to match actual tier composition.
- CONTRIBUTING.md: src/hooks/ '52 hooks across 55 modules' -> '54 base (61 team) across 58 dirs';
  src/tools/ '26 tools across 16 directories' -> '20-39 tools (config-gated)';
  src/features/ '19 feature modules' -> '20 feature modules' (boulder-state, team-mode added).
- docs/reference/features.md: Core-agent order indices were off-by-one;
  Sisyphus 1/Hephaestus 2/Prometheus 3/Atlas 4 -> 0/1/2/3 (matches installAgentSortShim).
- docs/guide/overview.md: Sisyphus model recommendations now mention Kimi K2.6 alongside K2.5
  since K2.6 is the active default fallback in the primary Sisyphus chain
  (see src/shared/model-requirements.ts).
2026-05-14 12:59:01 +09:00
YeonGyu-Kim 1e7a7600a2 docs(agents-md): regenerate hierarchical AGENTS.md knowledge base for v4.1.1
Refresh all AGENTS.md files to reflect codebase state at 5ffbe0e24 (was cd31d2a1a, 197 commits behind).

Key drift corrections across 45 modified + 1 new file:

Root AGENTS.md:
- TS file counts: 1967 -> 2034 in src/ (1337 source + 697 test)
- LOC: 278k -> 292k
- Barrel index.ts: 120 -> 122
- Hook tier composition: 52/59 -> 54/61 (base/with team-mode)
- Tool Guard hooks: 14 -> 16 (add fsync-skip-warning, bash-file-read-guard)
- Add boulder feature, agent-ordering schema, .agents/ directory, v4.1.1 release tag
- Add generated/ directory entry

src/AGENTS.md:
- Subsystem inventory: agents 96->102, hooks 570->581, tools 306->314,
  features 389->400, shared 258->278, cli 150->158, plugin 55->56
- LOC totals refreshed for every subsystem
- Schema files: 32 -> 30

src/hooks/AGENTS.md:
- Tier 2 (Tool Guard): 14 -> 16 hooks, add fsyncSkipWarning row
- Total: 52 base / 59 team-mode -> 54 base / 61 team-mode
- zauc-mocks count: 7 -> 5

src/features/AGENTS.md:
- background-agent: 47 -> 57 files, mention archive fallback
- opencode-skill-loader: 33 -> 30
- tmux-subagent: 34 -> 32

src/plugin/AGENTS.md:
- Tool Guard composer count: 14 -> 16
- Aggregator total: 43 -> 45

src/cli/AGENTS.md:
- Add new boulder subcommand (BoulderState inspector)
- Command count: 6 -> 7

NEW: src/features/boulder-state/AGENTS.md
- Document the new Boulder work tracking feature
- Schema v2 with BoulderState/BoulderWorkState/TaskSessionState
- Lifecycle, storage, integration points with atlas/ralph-loop hooks

All other AGENTS.md files: Generated date 2026-05-08 -> 2026-05-14.
2026-05-14 12:57:46 +09:00
YeonGyu-Kim 5ffbe0e24e fix(fallback): guard duplicate prompt injections 2026-05-14 01:03:19 +09:00
YeonGyu-Kim ea55c385bb fix(background-agent): defer busy parent notifications 2026-05-14 00:45:36 +09:00
github-actions[bot] 6e841773b6 @PeterPonyu has signed the CLA in code-yeongyu/oh-my-openagent#3871 2026-05-13 15:40:55 +00:00
YeonGyu-Kim f9b95f9e3e Merge pull request #3993 from code-yeongyu/fix/non-interactive-env-windows-shell
fix(non-interactive-env): respect Windows command shell
2026-05-13 23:45:23 +09:00
YeonGyu-Kim 43b2d0e0d0 Merge pull request #3992 from MoerAI/fix/omo-block-native-execution-delegation
fix(delegate-task): exclude hidden agents from task delegation discovery (fixes #3957)
2026-05-13 23:44:50 +09:00
YeonGyu-Kim 47d60a74d3 fix(non-interactive-env): honor Windows ComSpec shell
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-13 22:47:37 +09:00
YeonGyu-Kim 95cc9e2d28 [sisyphus-dev] fix(delegate-task): canonicalize agent dedup key to close hidden filter bypass
mergeWithClaudeCodeAgents deduplicated by raw agent.name.toLowerCase() while
matchesRequestedAgent strips invisible characters, the numeric sort prefix,
and wrapper characters via stripAgentListSortPrefix. A project or user agent
named with a zero-width prefix, quote wrappers, or a sort prefix survived as
a visible duplicate of the hidden native build or demoted plan agent and
matched subagent_type="build" or "plan", which let an OMO orchestrator reach
the hidden execution agent the previous filter was meant to block.

Apply the same canonicalization to the dedup key so visible aliases of hidden
server agents collapse onto the hidden entry instead of bypassing the filter.

Adds three regression tests covering ZWSP, quote-wrapper, and sort-prefix
bypass paths.

bun.lock: refresh platform optionalDependencies to 4.1.1 so frozen-lockfile
install succeeds in CI.
2026-05-13 20:31:17 +09:00
YeonGyu-Kim fef1d4530b fix(non-interactive-env): respect Windows command shell
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-13 20:07:46 +09:00
YeonGyu-Kim 7469cb3f3b ci: skip cla for signed contributors 2026-05-13 19:45:06 +09:00
YeonGyu-Kim cab20568da fix(deps): sync platform lock entries 2026-05-13 19:39:37 +09:00
MoerAI 4bd81d2cdd fix(delegate-task): exclude hidden agents from task delegation discovery (fixes #3957)
OpenCode injects native execution agents like build (and a demoted plan in OMO mode) as { mode: 'subagent', hidden: true }. The dynamic agent discovery in subagent-discovery.ts only filtered by mode, so a hidden agent still resolved as a callable target via task(). This created a boundary leak: an OMO orchestrator (sisyphus, prometheus, etc.) could delegate work into the hidden native build/plan path instead of the OMO category/skill pipeline.

Add hidden?: boolean to AgentInfo, plumb it through mergeWithClaudeCodeAgents, and skip hidden agents in both findCallableAgentMatch and listCallableAgentNames so hidden natives are neither matched nor advertised in 'Available agents' error messages. The OpenCode SDK Agent type already exposes hidden?: boolean, so no schema work is required.

Verified by adding three regression tests in zauc-mocks-subagent-resolver/subagent-resolver.test.ts: hidden 'build' is rejected, hidden 'plan' is rejected, and hidden agents are excluded from the Available agents list. Full delegate-task suite (395 tests) and call-omo-agent suite (57 tests) pass; bun run typecheck is clean.
2026-05-13 19:37:54 +09:00
YeonGyu-Kim 61ba4e3b41 fix(ralph-loop): guard delayed start snapshots
Prevent delayed loop-start message counts from overwriting active Ralph Loop state after the loop has already advanced, so ULW completion can still enter Oracle verification instead of iterating forever.

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-13 18:59:07 +09:00
YeonGyu-Kim 1fa97c6efe docs(publish): require discord announcement 2026-05-13 17:39:40 +09:00
github-actions[bot] f44d94413c release: v4.1.1 2026-05-13 08:15:11 +00:00
YeonGyu-Kim 3b4d2431ee fix(hooks): guard stale idle prompts 2026-05-13 17:02:17 +09:00
YeonGyu-Kim a337635e3b fix(background-agent): defer active parent wakes 2026-05-13 17:02:17 +09:00
github-actions[bot] 0b99168b7b @EmiyaKiritsugu3 has signed the CLA in code-yeongyu/oh-my-openagent#3990 2026-05-13 07:31:21 +00:00
YeonGyu-Kim 39fb0143da Merge pull request #3986 from code-yeongyu/fix/continuation-message-dispatch
fix(continuation): mark resumed prompts synthetic
2026-05-13 13:46:23 +09:00
YeonGyu-Kim 36f51ddb16 fix(continuation): mark fallback resumes synthetic 2026-05-13 13:36:25 +09:00
YeonGyu-Kim 1189b96d42 fix(continuation): mark atlas resumes synthetic 2026-05-13 13:25:01 +09:00
YeonGyu-Kim e49ba94728 chore(deps): refresh platform lock entries 2026-05-13 13:15:14 +09:00
YeonGyu-Kim 38b1433ff5 fix(continuation): mark resumes synthetic 2026-05-13 13:09:26 +09:00
YeonGyu-Kim 3f92264311 fix(interactive-bash): prohibit tmux kill-server 2026-05-13 13:07:13 +09:00
YeonGyu-Kim 286f5ccfdf when publish always discord 2026-05-13 11:44:47 +09:00
github-actions[bot] 9edaa6e90b release: v4.1.0 2026-05-13 02:32:42 +00:00
YeonGyu-Kim 21460713e3 .opencode to .agents 2026-05-13 11:08:08 +09:00
YeonGyu-Kim a0b46309b4 remove hyperplan for .opencode (not as a feature) 2026-05-13 10:59:15 +09:00
YeonGyu-Kim 75825eb9a6 fix(todo-description-override): add OpenCode schema contract for string priorities 2026-05-12 18:18:52 +09:00
YeonGyu-Kim c740ed8aca fix(delegate-task): route sync prompts by directory 2026-05-12 18:14:17 +09:00
YeonGyu-Kim 6035a551ad fix(background-agent): route session prompts by directory 2026-05-12 18:13:39 +09:00
YeonGyu-Kim 7d09d2c83c Merge pull request #3967 from code-yeongyu/refactor/typescript-no-excuse-slops
Remove unsafe TypeScript test assertions
2026-05-12 17:27:38 +09:00
YeonGyu-Kim 730d72c9af test: require explicit unsafe test value type
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-12 16:30:00 +09:00
YeonGyu-Kim d5fbada13d test: make unsafe test coercion explicit
Move test coercion out of a hidden global and require each test to import the helper so review tools and runtime scripts can see the unsafe boundary.

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-12 15:51:31 +09:00