YeonGyu-Kim
0fa188e5ee
Merge branch 'dev' into fix/1679-copilot-fallback
2026-02-17 01:54:05 +09:00
YeonGyu-Kim
bdbc111384
Merge pull request #1896 from code-yeongyu/fix/1283-review-code-silent-fail
...
fix: report silent subagent delegation failures (#1283 )
2026-02-17 01:53:56 +09:00
YeonGyu-Kim
12aae86dec
Merge pull request #1895 from code-yeongyu/fix/1718-windows-subagent-dir
...
fix: use correct project directory for Windows subagents (#1718 )
2026-02-17 01:53:43 +09:00
YeonGyu-Kim
9d3ac67da7
fix: detect AppData directory paths without trailing separators
2026-02-17 01:45:14 +09:00
YeonGyu-Kim
df59ef6e80
Merge pull request #1849 from jkoelker/preserve-default-agent
...
fix(config): preserve configured default_agent
2026-02-17 01:43:04 +09:00
Jason Kölker
97b57c1a64
fix(config): preserve configured default_agent
...
oh-my-opencode overwrote OpenCode's default_agent with sisyphus whenever
Sisyphus orchestration was enabled. This made explicit defaults like
Hephaestus ineffective and forced manual agent switching in new sessions.
Only assign sisyphus as default when default_agent is missing or blank,
and preserve existing configured values. Add tests for both preservation
and fallback behavior to prevent regressions.
2026-02-17 01:41:52 +09:00
YeonGyu-Kim
3a4325a800
Merge pull request #1884 from code-yeongyu/feat/hashline-edit
...
feat: port hashline edit tool from oh-my-pi
2026-02-17 01:35:22 +09:00
YeonGyu-Kim
1159f76d65
Merge pull request #1870 from dankochetov/fix/background-notification-hook-gate
...
fix(background-agent): honor disabled background-notification for system reminders
2026-02-17 01:35:21 +09:00
YeonGyu-Kim
f04045b335
Merge pull request #1708 from jsl9208/fix/ast-grep-replace-silent-noop
...
fix(ast-grep): fix ast_grep_replace silent write failure
2026-02-17 01:34:41 +09:00
YeonGyu-Kim
04ee341399
Merge pull request #1729 from potb/fix/1716-disabled-agents-call-omo
...
fix(call-omo-agent): enforce disabled_agents config
2026-02-17 01:34:38 +09:00
YeonGyu-Kim
f82f4b7288
Merge pull request #1819 from jonasherr/feat/add-playwright-cli-provider
...
feat(browser-automation): add playwright-cli as browser automation provider
2026-02-17 01:34:34 +09:00
YeonGyu-Kim
2f08c1d316
fix: use correct project directory for Windows subagents ( #1718 )
2026-02-17 01:29:25 +09:00
YeonGyu-Kim
1fa59efff5
fix: handle all model versions in normalizeModelName for fallback chains ( #1679 )
2026-02-17 01:27:10 +09:00
YeonGyu-Kim
41c57df6f9
fix: report errors instead of silent catch in subagent-resolver ( #1283 )
2026-02-17 01:26:58 +09:00
sisyphus-dev-ai
6c8be72943
chore: changes by sisyphus-dev-ai
2026-02-16 16:21:51 +00:00
YeonGyu-Kim
8a80b88a08
refactor(hashline): override native edit tool instead of separate tool + disabler hook
...
Replace 3-component hashline system (separate hashline_edit tool + edit
disabler hook + OpenAI-exempted read enhancer) with 2-component system
that directly overrides the native edit tool key, matching the
delegate_task pattern.
- Register hashline tool as 'edit' key to override native edit
- Delete hashline-edit-disabler hook (no longer needed)
- Delete hashline-provider-state module (no remaining consumers)
- Remove OpenAI exemption from read enhancer (explicit opt-in means all providers)
- Remove setProvider wiring from chat-params
2026-02-17 00:03:10 +09:00
YeonGyu-Kim
bcf0a4998d
test(session-manager): fix storage tests by mocking message-dir dependency
2026-02-17 00:03:10 +09:00
YeonGyu-Kim
1345c0719d
test: skip 4 flaky session-manager tests (test order dependency)
2026-02-17 00:03:10 +09:00
YeonGyu-Kim
c26eb80afc
fix(ci): isolate session-manager tests to prevent flakiness
...
- Move src/tools/session-manager to isolated test section
- Prevents mock.module() pollution across parallel test runs
- Fixes 4 flaky storage tests that failed in CI
2026-02-17 00:03:10 +09:00
YeonGyu-Kim
eb6be8ac7b
fix(hashline): address Cubic review comments
...
- P2: Change replace edit sorting from POSITIVE_INFINITY to NEGATIVE_INFINITY
so replace edits run LAST after line-based edits, preventing line number
shifts that would invalidate subsequent anchors
- P3: Update tool description from SHA-256 to xxHash32 to match actual
implementation in hash-computation.ts
2026-02-17 00:03:10 +09:00
YeonGyu-Kim
9bd21c8a67
feat(hashline): port hashline edit tool from oh-my-pi
...
This PR ports the hashline edit tool from oh-my-pi to oh-my-opencode as an experimental feature.
## Features
- New experimental.hashline_edit config flag
- hashline_edit tool with 4 operations: set_line, replace_lines, insert_after, replace
- Hash-based line anchors for safe concurrent editing
- Edit tool disabler for non-OpenAI providers
- Read output enhancer with LINE:HASH prefixes
- Provider state tracking module
## Technical Details
- xxHash32-based 2-char hex hashes
- Bottom-up edit application to prevent index shifting
- OpenAI provider exemption (uses native apply_patch)
- 90 tests covering all operations and edge cases
- All files under 200 LOC limit
## Files Added/Modified
- src/tools/hashline-edit/ (7 files, ~400 LOC)
- src/hooks/hashline-edit-disabler/ (4 files, ~200 LOC)
- src/hooks/hashline-read-enhancer/ (3 files, ~400 LOC)
- src/features/hashline-provider-state.ts (13 LOC)
- src/config/schema/experimental.ts (hashline_edit flag)
- src/config/schema/hooks.ts (2 new hook names)
- src/plugin/tool-registry.ts (conditional registration)
- src/plugin/chat-params.ts (provider state tracking)
- src/tools/index.ts (export)
- src/hooks/index.ts (exports)
2026-02-17 00:03:10 +09:00
YeonGyu-Kim
3e90ec6f93
feat(config): add experimental.hashline_edit flag and provider state module
2026-02-17 00:03:10 +09:00
github-actions[bot]
187c6b0700
release: v3.6.0
2026-02-16 15:02:43 +00:00
YeonGyu-Kim
e403f3a028
Merge pull request #1721 from edxeth/fix/disable-mcps
...
fix(mcp): preserve user's enabled:false and apply disabled_mcps to all MCP sources
2026-02-16 23:52:24 +09:00
YeonGyu-Kim
ba770dc9ec
test: align load_skills error assertions in delegate-task
2026-02-16 22:59:52 +09:00
YeonGyu-Kim
41286affff
fix: force include_thinking and include_tool_results for running background tasks
2026-02-16 22:47:51 +09:00
YeonGyu-Kim
cabd1e9696
feat: auto-enable full_session, thinking, and tool_results for running background tasks
2026-02-16 22:37:27 +09:00
YeonGyu-Kim
9477d1e598
refactor: rewrite remove-deadcode command for parallel deep agent batching
2026-02-16 22:37:18 +09:00
YeonGyu-Kim
9cc941e0cf
refactor: remove dead file task-id-validator.ts and unused isModelAvailable from model-name-matcher
2026-02-16 22:33:44 +09:00
YeonGyu-Kim
d5212eb547
test: remove tests for dead pollSessions function
2026-02-16 22:13:55 +09:00
YeonGyu-Kim
d4f469827f
refactor: remove unused params/imports/types from lsp-tools, task-tools, delegate-task, skill-loader, context-window-monitor, plugin-config
2026-02-16 22:12:21 +09:00
YeonGyu-Kim
83e8fb9cae
refactor: remove unused imports from auto-update-checker, claude-code-hooks, mcp
2026-02-16 22:11:38 +09:00
YeonGyu-Kim
a4cf75feec
refactor: remove unused imports from interactive-bash-session, session-recovery, start-work
2026-02-16 22:11:35 +09:00
YeonGyu-Kim
7c6da2b1f8
refactor: remove unused code from background-agent, background-task, call-omo-agent
2026-02-16 22:11:29 +09:00
YeonGyu-Kim
5fafa572a4
refactor: remove unused imports from injector, tool-result-storage-sdk, session-notification-utils, model-resolver
2026-02-16 22:11:05 +09:00
YeonGyu-Kim
2090742869
refactor: remove unused constants and dead pollSessions from tmux-subagent
2026-02-16 22:11:00 +09:00
YeonGyu-Kim
38b6a00d82
refactor: remove unused hasIgnoredParts variables from context-window-limit-recovery
2026-02-16 22:10:44 +09:00
YeonGyu-Kim
8a1d7ad8f6
refactor: remove dead file message-storage-locator.ts
2026-02-16 22:09:10 +09:00
YeonGyu-Kim
e5be444c07
remove dead code: legacy unified task tool and its action handlers
2026-02-16 21:58:44 +09:00
YeonGyu-Kim
d7b4ed7c2a
clarify task tool: emphasize category/subagent_type is required, remove inline examples
2026-02-16 21:47:56 +09:00
YeonGyu-Kim
513e618bab
fix: resolve category delegation and command routing with display name agent keys
...
Category-based delegation (task(category='quick')) was broken because
SISYPHUS_JUNIOR_AGENT sent 'sisyphus-junior' to session.prompt but
config.agent keys are now display names ('Sisyphus-Junior').
- Use getAgentDisplayName() for SISYPHUS_JUNIOR_AGENT constant
- Replace hardcoded 'sisyphus-junior' strings in tools.ts with constant
- Update background-output local constants to use display names
- Add remapCommandAgentFields() to translate command agent fields
- Add raw-key fallback in tool-config-handler agentByKey()
2026-02-16 21:32:33 +09:00
Dan Kochetov
2947d9666c
Merge remote-tracking branch 'origin/dev' into fix/background-notification-hook-gate
...
# Conflicts:
# src/features/background-agent/manager.ts
2026-02-16 13:56:33 +02:00
YeonGyu-Kim
0f5287e92e
test: update assertions for display name agent keys
...
- config-handler.test: look up agents by display name keys
- agent-key-remapper.test: new tests for key remapping function
- Rebuild schema asset
2026-02-16 20:43:18 +09:00
YeonGyu-Kim
49b6c108e2
Normalize agent name comparisons to handle display name keys
...
Hooks and tools now use getAgentConfigKey() to resolve agent names (which may
be display names like 'Atlas (Plan Executor)') to lowercase config keys
before comparison.
- session-utils: orchestrator check uses getAgentConfigKey
- atlas event-handler: boulder agent matching uses config keys
- category-skill-reminder: target agent check uses config keys
- todo-continuation-enforcer: skipAgents comparison normalized
- subagent-resolver: resolves 'metis' -> 'Metis (Plan Consultant)' for lookup
2026-02-16 20:43:09 +09:00
YeonGyu-Kim
dde858794a
Remap config.agent keys to display names at output boundary
...
Use display names as config.agent keys so opencode shows proper names in UI
(Tab/@ menu). Key remapping happens after all agents are assembled but before
reordering, via remapAgentKeysToDisplayNames().
- agent-config-handler: set default_agent to display name, add key remapping
- agent-key-remapper: new module to transform lowercase keys to display names
- agent-priority-order: CORE_AGENT_ORDER uses display names
- tool-config-handler: look up agents by config key via agentByKey() helper
2026-02-16 20:42:58 +09:00
YeonGyu-Kim
2c9e6638f6
Revert name fields from agent configs, add getAgentConfigKey reverse lookup
...
Remove crash-causing name fields from 6 agent configs (sisyphus, hephaestus,
atlas, metis, momus, prometheus). The name field approach breaks opencode
because Agent.get(agent.name) uses name as lookup key.
Add getAgentConfigKey() to agent-display-names.ts for resolving display names
back to lowercase config keys (e.g. 'Atlas (Plan Executor)' -> 'atlas').
2026-02-16 20:42:45 +09:00
YeonGyu-Kim
c596b475d2
Add display names to all core agents via name field
...
Sisyphus (Ultraworker), Hephaestus (Deep Agent), Prometheus (Plan Builder),
Atlas (Plan Executor), Metis (Plan Consultant), Momus (Plan Critic).
Requires opencode fix: Agent.get() fallback to name-based lookup when key
lookup fails, since opencode stores agent.name in messages and reuses it
for subsequent Agent.get() calls.
2026-02-16 20:15:58 +09:00
YeonGyu-Kim
0a06b82ec2
Update agent display names: add Hephaestus (Deep Agent), rename Atlas to (Plan Executor), rename Momus to (Plan Critic)
2026-02-16 20:12:24 +09:00
YeonGyu-Kim
02a1953155
Revert "Add display names to core agents: Sisyphus (Ultraworker), Hephaestus (Deep Agent), Prometheus (Plan Builder), Atlas (Plan Executor)"
...
This reverts commit 655899a264 .
2026-02-16 20:12:24 +09:00
YeonGyu-Kim
47601964ee
Revert "Add display names to Metis (Plan Consultant) and Momus (Plan Critic)"
...
This reverts commit 301847011c .
2026-02-16 20:12:24 +09:00