YeonGyu-Kim
2c6a161441
test(runtime-fallback): fix OpenAI auto-retry test expectations
...
- Add timeout_seconds to mock config for auto-retry signal detection
- Add 'usage limit' pattern to quota_exceeded error classification
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-08 13:40:40 +09:00
YeonGyu-Kim
902b2f9f58
test(ci): update workflow test to match actual CI command
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-08 13:40:38 +09:00
YeonGyu-Kim
4d9652c028
test(start-work): update display name expectations for ZWSP fix
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-08 13:33:19 +09:00
YeonGyu-Kim
94449e0a24
test(delegate-task): update isPlanAgent test for exact match fix
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-08 13:33:18 +09:00
YeonGyu-Kim
1a04a6effb
test(ralph-loop): update iteration cap expectation to 500
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-08 13:33:09 +09:00
YeonGyu-Kim
ab0e1e3be0
fix(oauth): refresh-once handler for 401/403 responses
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-08 13:28:17 +09:00
YeonGyu-Kim
7ba41d388a
fix(oauth): atomic storage writes for token safety
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-08 13:28:14 +09:00
YeonGyu-Kim
7be285ef89
feat(oauth): add per-server refresh mutex
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-08 13:28:08 +09:00
YeonGyu-Kim
cdd6e88557
fix(installer): add upgrade path safety checks
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-08 13:26:33 +09:00
YeonGyu-Kim
01f7d5e2a8
feat(installer): export version compatibility and backup utilities
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-08 13:26:29 +09:00
YeonGyu-Kim
2f86a17516
feat(installer): add config backup utility for safe upgrades
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-08 13:26:27 +09:00
YeonGyu-Kim
7022a7e85d
feat(installer): add version compatibility checking utilities
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-08 13:26:26 +09:00
YeonGyu-Kim
a09b905b18
fix(installer): add installedVersion to DetectedConfig type
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-08 13:26:22 +09:00
YeonGyu-Kim
d490b4dc20
fix(ralph-loop): harden Oracle VERIFIED detection
...
Replace fragile regex text matching with structured detection for Oracle verification evidence.
- Add oracle-verification-detector.ts with parseOracleVerificationEvidence()
- Use structured parsing instead of multiple regex patterns
- Add comprehensive test coverage for edge cases
- Update completion-promise-detector.ts to use isOracleVerified()
- Update pending-verification-handler.ts to use structured extraction
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-08 13:24:50 +09:00
YeonGyu-Kim
0bf5dc2629
fix(token-limit): normalize detection across providers
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-08 13:24:14 +09:00
YeonGyu-Kim
c3fe0ae09e
fix(background): propagate variant in parent notifications
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-08 13:23:08 +09:00
YeonGyu-Kim
14f4390a34
fix(ultrawork): add iteration cap to prevent infinite loops
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-08 13:22:41 +09:00
YeonGyu-Kim
8090ee6afe
fix(compaction): persist recovery cap across cycles
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-08 13:20:01 +09:00
YeonGyu-Kim
f2fac9bc0b
test(runtime-fallback): update tests for quota STOP classification
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-08 13:14:54 +09:00
YeonGyu-Kim
8169dbec89
docs: update for v3.16.0 release
...
- Update AGENTS.md header with current date and commit
- Update runtime-fallback test to reflect quota STOP classification
- Release notes drafted in .sisyphus/drafts/release-notes-v3.16.0.md
2026-04-08 13:13:22 +09:00
YeonGyu-Kim
b7d9521a39
feat(installer): add opencode v1.4.0 minimum version check
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-08 13:13:03 +09:00
YeonGyu-Kim
4f196f4917
ci: restore mock-isolated test runner
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-08 13:12:34 +09:00
YeonGyu-Kim
35f778db2d
test(skill-mcp): add scope field to test fixtures
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-08 13:11:28 +09:00
YeonGyu-Kim
fa140b0375
fix(skill-loader): propagate scope to MCP connections
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-08 13:10:41 +09:00
YeonGyu-Kim
5e0bd87dea
test(runtime-fallback): add provider matrix quota tests
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-08 13:10:26 +09:00
YeonGyu-Kim
05efb20fda
feat(skill-mcp): add scope field to connection types
2026-04-08 13:10:20 +09:00
YeonGyu-Kim
b81fdef5d9
fix(skill-mcp): redact sensitive data from connection errors
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-08 13:10:06 +09:00
YeonGyu-Kim
7751402999
fix(runtime-fallback): classify quota exhaustion as STOP not retryable
...
Remove quota exhaustion patterns from RETRYABLE_ERROR_PATTERNS:
- 'usage limit reached' patterns (lines 30, 32)
- 'insufficient credits' pattern (line 37)
- 'credit balance too low' pattern (line 38)
These errors indicate permanent quota exhaustion, not temporary
rate limits. They are already handled by classifyErrorType() which returns
'quota_exceeded', and isRetryableError() properly stops on these
unless there's an explicit auto-retry signal.
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-08 13:09:38 +09:00
YeonGyu-Kim
a419857b46
fix(delegate-task): use exact match for isPlanFamily to allow Metis/Momus
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-08 13:09:31 +09:00
YeonGyu-Kim
78e6d780eb
fix(plugin): verify event hook compatibility with v1.4.0
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-08 13:08:03 +09:00
YeonGyu-Kim
e52dd340c6
fix(plugin): migrate chat.params to maxOutputTokens for v1.4.0
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-08 13:02:51 +09:00
YeonGyu-Kim
e8d83b5f98
fix(zwsp): strip zero-width chars in delegate-task tools
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-08 13:02:05 +09:00
YeonGyu-Kim
317e2c6465
fix(zwsp): strip zero-width chars in start-work-hook
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-08 13:01:51 +09:00
YeonGyu-Kim
3724093618
fix(zwsp): strip zero-width chars from agent headers in command-config-handler
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-08 13:01:43 +09:00
YeonGyu-Kim
130e67a432
fix(zwsp): strip zero-width chars in boulder-continuation-injector
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-08 13:01:41 +09:00
YeonGyu-Kim
5188df903f
fix(types): revert task-tool type inference workarounds
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-08 13:00:17 +09:00
YeonGyu-Kim
18771c8d6d
fix(schema): restore z.toJSONSchema native v4 API
2026-04-08 12:59:54 +09:00
YeonGyu-Kim
f4eabf9f0e
chore(deps): upgrade @opencode-ai/{plugin,sdk} to 1.4.0 and restore zod v4
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-08 12:57:45 +09:00
GeonWoo Jeon (Jay)
3f5dfd8201
fix(test): isolate openclaw bootstrap mocks
2026-04-07 22:54:03 +09:00
GeonWoo Jeon (Jay)
21ab1a6475
fix(plugin): dispatch openclaw lifecycle events from handlers
2026-04-07 22:54:03 +09:00
GeonWoo Jeon (Jay)
9491bede5b
fix(tmux): expose tracked pane ids for openclaw routing
2026-04-07 22:54:03 +09:00
GeonWoo Jeon (Jay)
20ee955030
fix(openclaw): stop stale listeners during initialization
2026-04-07 22:52:09 +09:00
GeonWoo Jeon (Jay)
ed4617ec84
fix(openclaw): stabilize reply polling and tmux injection
2026-04-07 22:52:09 +09:00
GeonWoo Jeon (Jay)
92b59b1afd
fix(openclaw): harden reply listener process lifecycle
2026-04-07 22:52:09 +09:00
GeonWoo Jeon (Jay)
6c2bed2f58
fix(openclaw): split reply listener state and startup flow
2026-04-07 22:52:09 +09:00
GeonWoo Jeon (Jay)
efde63f733
fix(openclaw): register reply correlation from runtime dispatch
2026-04-07 22:52:09 +09:00
GeonWoo Jeon (Jay)
4241227227
fix(openclaw): parse wake metadata from gateway responses
2026-04-07 22:52:09 +09:00
github-actions[bot]
9a9b5be518
@teneburu has signed the CLA in code-yeongyu/oh-my-openagent#3203
2026-04-07 13:06:20 +00:00
YeonGyu-Kim
76239972c2
fix(doctor): include custom providers from opencode.json in provider check
...
The doctor's 'Model override uses unavailable provider' check only
looked at providers from ~/.cache/opencode/models.json (built-in
providers from models.dev). Custom OpenAI-compatible providers defined
in the user's opencode.json (under the 'provider' key) were not
included, causing false-positive warnings.
Now loadAvailableModelsFromCache() also reads provider names from
~/.config/opencode/opencode.json and ~/.config/opencode/opencode.jsonc,
merging them with the cache providers. This eliminates the false
positive while preserving real warnings for truly unknown providers.
7 new tests cover: cache-only, custom-only, merged, deduplicated,
JSONC variant, and malformed config resilience.
Fixes #3199
2026-04-07 20:24:03 +09:00
YeonGyu-Kim
ae3a8d628b
fix(delegate-task): tighten subagent depth guard + add regression smoke tests
...
The depth limit (default maxDepth=3) was being silently bypassed when
sync-task.ts could not reach the manager's spawn enforcement methods --
the fallback hardcoded childDepth: 1, allowing infinite recursion of
delegate_task calls in degraded environments.
This was hard to catch because:
1. The fallback path took the dangerous default silently (no log).
2. There were no end-to-end smoke tests asserting that the depth value
coming back from reserveSubagentSpawn is actually used.
3. The unit tests for resolveSubagentSpawnContext only covered error
cases, not the actual depth calculation.
Changes:
- sync-task.ts: split the spawnContext fallback into an explicit if/else
with a WARNING log when the manager is missing enforcement methods.
This makes the dangerous path observable in logs.
- subagent-spawn-limits.test.ts: add depth calculation regression tests
(root, depth-1, depth-2, depth at max, parent cycle detection).
- sync-task.test.ts: add two regression smoke tests:
1. depth limit error from reserveSubagentSpawn must be propagated and
must NOT create the session.
2. spawnDepth recorded in metadata must equal what reserveSubagentSpawn
returns -- guards against silent fallback to childDepth: 1.
15 new spawn-limits tests + 2 new sync-task tests pass.
Full suite: 5105 pass, 0 fail.
2026-04-07 19:56:51 +09:00