Commit Graph

2590 Commits

Author SHA1 Message Date
YeonGyu-Kim ca7c0e391e fix(bun-install): default outputMode to "pipe" to prevent TUI stdout leak
runBunInstallWithDetails() defaulted to outputMode:"inherit", causing
bun install stdout/stderr to leak into the TUI when callers omitted the
option. Changed default to "pipe" so output is captured silently.

Also fixed stale mock in background-update-check.test.ts: the test was
mocking runBunInstall (unused) instead of runBunInstallWithDetails, and
returning boolean instead of BunInstallResult.
2026-03-12 18:19:06 +09:00
YeonGyu-Kim 81301a6071 feat: skip model resolution for delegated tasks when provider cache not yet created
Before provider cache exists (first run), resolveModelForDelegateTask now
returns undefined instead of guessing a model. This lets OpenCode use its
system default model when no model is specified in the prompt body.

User-specified model overrides still take priority regardless of cache state.
2026-03-12 18:19:06 +09:00
YeonGyu-Kim 62883d753f Merge pull request #2519 from code-yeongyu/fix/ultrawork-variant-no-max-override
fix: skip ultrawork variant override without SDK validation + add porcelain worktree parser
2026-03-12 17:27:57 +09:00
YeonGyu-Kim c9d30f8be3 feat: add porcelain worktree parser with listWorktrees and parseWorktreeListPorcelain
Introduce git worktree list --porcelain parsing following upstream opencode patterns. Exports listWorktrees() for full worktree enumeration with branch info alongside existing detectWorktreePath().

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-12 17:25:10 +09:00
YeonGyu-Kim 2210997c89 fix: skip ultrawork variant override when SDK validation unavailable
When provider.list is not available for SDK validation, do not apply the configured ultrawork variant. This prevents models without a max variant from being incorrectly forced to max when ultrawork mode activates.

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-12 17:24:54 +09:00
YeonGyu-Kim feb2160a7a Merge pull request #2518 from code-yeongyu/fix-2499-ulw-oracle-verified-loop
Keep ulw-loop running until Oracle verifies completion
2026-03-12 17:15:49 +09:00
YeonGyu-Kim 37c7231a50 test: isolate connected providers cache test setup
Prevent the cache test from deleting the user cache directory and add a regression test for that setup path.

Co-authored-by: Codex <noreply@openai.com>
2026-03-12 17:08:06 +09:00
YeonGyu-Kim 1812c9f054 test(ralph-loop): cover overlapping ultrawork loops
Lock down stale-session and overwrite cases so a previous ULW verification flow cannot complete or mutate a newer loop.

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-12 17:05:02 +09:00
YeonGyu-Kim f31537f14c fix(ralph-loop): continue ultrawork until oracle verifies
Keep /ulw-loop iterating after the main session emits DONE so completion still depends on an actual Oracle VERIFIED result.

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-12 17:00:25 +09:00
YeonGyu-Kim 0cbc15da96 fix(hashline): use strict whitespace hashing (trimEnd only, preserve leading indentation)
Previously computeLineHash stripped ALL whitespace before hashing, making
indentation changes invisible to hash validation. This weakened the stale-line
detection guarantee, especially for indentation-sensitive files (Python, YAML).

Now only trailing whitespace and carriage returns are stripped, matching
oh-my-pi upstream behavior. Leading indentation is preserved in the hash,
so indentation-only changes correctly trigger hash mismatches.
2026-03-12 16:42:41 +09:00
YeonGyu-Kim 04b0d62a55 feat(session-notification): include session context in ready notifications
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-12 15:29:21 +09:00
YeonGyu-Kim 943f31f460 feat(session-notification): add ready notification content builder
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-12 15:29:21 +09:00
YeonGyu-Kim abc4b2a6a4 fix(runtime-fallback): remove committed rebase conflict markers
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-12 13:49:46 +09:00
YeonGyu-Kim d8da2f1ad6 fix(runtime-fallback): clear retry keys on failed session bootstrap
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-12 13:39:30 +09:00
YeonGyu-Kim 62a905b690 fix(runtime-fallback): reuse normalized messages for visible assistant checks
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-12 13:39:30 +09:00
YeonGyu-Kim 79fb746a1c fix(runtime-fallback): resolve agents from normalized session messages
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-12 13:39:30 +09:00
YeonGyu-Kim fcd4fa5164 fix(runtime-fallback): normalize retry part message extraction
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-12 13:39:30 +09:00
YeonGyu-Kim 6a4a3322c1 fix(runtime-fallback): add session messages extractor
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-12 13:39:30 +09:00
YeonGyu-Kim 3caa3fcc3d fix: address Cubic findings for runtime fallback child sessions
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-12 13:39:30 +09:00
YeonGyu-Kim ba86ef0eea fix: enable runtime fallback for delegated child sessions (#2357) 2026-03-12 13:39:04 +09:00
acamq 4ded45d14c Merge pull request #2446 from win0na/fix/momus-key-trigger-specificity
fix(momus): make keyTrigger specify file-path-only invocation requirement
2026-03-11 20:34:08 -06:00
acamq 9032eeaa68 Merge pull request #2419 from guazi04/fix/serverurl-throw-getter
fix(tmux): handle serverUrl throw getter from upstream opencode refactor
2026-03-11 20:32:38 -06:00
YeonGyu-Kim 3ea23561f2 Merge pull request #2488 from code-yeongyu/fix/issue-2295-fallback-provider-preserve
fix: preserve session provider context in fallback chain
2026-03-12 11:24:43 +09:00
YeonGyu-Kim 0cdbd15f74 Merge pull request #2487 from code-yeongyu/fix/issue-2431-lsp-path-resolution
fix: unify LSP server PATH resolution between detection and spawn
2026-03-12 11:24:41 +09:00
YeonGyu-Kim 60e6f6d4f3 Merge pull request #2484 from code-yeongyu/fix/issue-2393-cubic-error-name
fix: add FreeUsageLimitError to RETRYABLE_ERROR_NAMES set
2026-03-12 11:24:37 +09:00
YeonGyu-Kim b00fc89dfa Merge pull request #2458 from code-yeongyu/fix/memory-leaks
fix: resolve 12 memory leaks (3 critical + 9 high)
2026-03-12 11:21:13 +09:00
YeonGyu-Kim 2912b6598c fix: address Cubic findings for provider preserve fallback
- Reorder resolveFallbackProviderID: providerHint now checked before global connected-provider cache
- Revert require('bun:test') hack to standard ESM import in fallback-chain-from-models.test.ts

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-12 11:05:31 +09:00
YeonGyu-Kim 755efe226e fix: address Cubic findings for FreeUsageLimitError classification
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-12 11:05:26 +09:00
YeonGyu-Kim 6014f03ed2 fix: address Cubic finding for LSP server npm bin path
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-12 11:04:43 +09:00
YeonGyu-Kim 2b4a5ca5da test(agent-variant): restore hephaestus openai case
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-12 11:04:43 +09:00
YeonGyu-Kim 4157c2224f fix(background-agent): clear pending parent on silent cancel
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-12 11:04:35 +09:00
YeonGyu-Kim d253f267c3 fix(skill-mcp-manager): guard stale client cleanup
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-12 11:04:28 +09:00
YeonGyu-Kim d83f875740 fix(call-omo-agent): track reused sync sessions
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-12 11:04:20 +09:00
acamq 9832f7b52e fix(test): update agent-variant test model to gpt-5.4 2026-03-11 15:43:03 -06:00
acamq 2d6be11fa0 test: update ultrabrain model expectations to gpt-5.4
The DEFAULT_CATEGORIES ultrabrain model was updated from openai/gpt-5.3-codex
to openai/gpt-5.4 in a previous commit, but test expectations were not updated.

Updated test expectations in:
- src/plugin-handlers/config-handler.test.ts (lines 560, 620)
- src/agents/utils.test.ts (lines 1119, 1232, 1234, 1301, 1303, 1316, 1318)
2026-03-11 15:18:29 -06:00
acamq 5f419b7d9d Merge pull request #2473 from code-yeongyu/fix/sync-package-json-to-opencode-intent
fix(auto-update): sync cache package.json to opencode.json intent
2026-03-11 14:51:49 -06:00
acamq d08754d1b4 fix(auto-update): pipe bun install output and restore other-deps preservation test
background-update-check.ts was using runBunInstall() which defaults to outputMode:"inherit", leaking bun install stdout/stderr into the background session. Reverted to runBunInstallWithDetails({ outputMode: "pipe" }) and explicitly logs result.error on failure.

Restores the accidentally deleted test case asserting that sibling dependencies (e.g. other:"1.0.0") are preserved in package.json after a plugin version sync.

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-11 13:28:12 -06:00
acamq e6e32d345e fix(auto-update): expand semver regex to support hyphenated prerelease tags
The previous pattern `(-[\w.]+)?` used `\w` which excludes hyphens, causing versions like `1.2.3-alpha-1` and `1.2.3-rc-test` to be misclassified as unpinned tags. Updated both plugin-entry.ts and sync-package-json.ts (which share the definition) to the spec-compliant pattern that allows dot-separated identifiers using [0-9A-Za-z-] and optional build metadata.

Also adds String() coercion before .trim() in sync-package-json.ts to guard against a TypeError if the parsed JSON value for currentVersion is non-string at runtime.

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-11 13:28:04 -06:00
YeonGyu-Kim 7c89a2acf6 test: update gpt-5.4 fallback expectations
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-12 02:24:47 +09:00
YeonGyu-Kim 57b4985424 fix(background-agent): delay session error task cleanup
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-12 02:24:42 +09:00
YeonGyu-Kim f9c8392179 fix(tmux-subagent): cap stale close retries
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-12 02:24:35 +09:00
YeonGyu-Kim cbb378265e fix(skill-mcp-manager): drop superseded stale clients
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-12 02:24:29 +09:00
YeonGyu-Kim 7997606892 fix(call-omo-agent): preserve reused session tracking
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-12 02:24:22 +09:00
YeonGyu-Kim 99730088ef fix: remove contaminated await change from FreeUsageLimitError PR
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-12 01:51:25 +09:00
YeonGyu-Kim 7870e43578 fix: preserve session provider context in fallback chain (#2295) 2026-03-12 01:49:16 +09:00
YeonGyu-Kim 9b792c3224 Merge pull request #2485 from code-yeongyu/fix/issue-2316-tool-after-error-boundary
fix: add error boundary around extract/discard hooks in tool-execute-after
2026-03-12 01:46:51 +09:00
YeonGyu-Kim 9d0b56d375 fix: unify LSP server PATH resolution between detection and spawn (#2431) 2026-03-12 01:44:06 +09:00
YeonGyu-Kim 305389bd7f fix: add error boundary around extract/discard hooks in tool-execute-after (#2316) 2026-03-12 01:41:07 +09:00
YeonGyu-Kim e249333898 test(skill-mcp-manager): cover pending cleanup registration retention
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-12 01:40:34 +09:00
YeonGyu-Kim 810dd5848f test(skill-mcp-manager): cover disposed guard after disconnectAll
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-12 01:40:34 +09:00