Commit Graph

456 Commits

Author SHA1 Message Date
VespianRex 8ccb1eaef0 Address review feedback for fallback fixes 2026-02-20 17:46:12 +02:00
VespianRex ff78a7f46a Fix model fallback across main/background/sync agents 2026-02-20 17:45:53 +02:00
YeonGyu-Kim 258e9d473c fix(hashline-edit): do not restore indentation for replace_lines
- applyReplaceLines: use stripped array directly instead of restoreLeadingIndent
- applySetLine: keep restoreLeadingIndent (1:1 replacement needs indent preservation)
- Added test case for replace_lines preserving new line indentation
- All 3025 tests pass

🤖 Generated with OhMyOpenCode assistance
2026-02-20 17:47:37 +09:00
YeonGyu-Kim 7b1e7ffdbb Merge pull request #1813 from GyuminJack/fix/custom-agent-empty-response
fix: resolve empty response when custom agents end with tool calls
2026-02-20 11:54:04 +09:00
YeonGyu-Kim bce12d2fdc Merge pull request #1953 from maximharizanov/fix/copilot-initiator-attribution
fix(copilot): mark internal hook injections as agent-initiated
2026-02-20 11:54:01 +09:00
YeonGyu-Kim dc32c38a51 refactor(hashline-edit): redesign hashline format with CID-based hashing
Breaking Changes:
- Change hashline format from 'lineNum:hex|content' to 'lineNum#CID:content'
- Replace hex-based hashing (00-ff) with CID-based hashing (ZPMQVRWSNKTXJBYH nibbles)
- Simplify constants: HASH_DICT → NIBBLE_STR + HASHLINE_DICT
- Update patterns: HASHLINE_PATTERN → HASHLINE_REF_PATTERN + HASHLINE_OUTPUT_PATTERN

Benefits:
- More compact and memorable CID identifiers
- Better alignment with LSP line reference format (lineNum#ID)
- Improved error messages and diff metadata clarity
- Remove unused toHashlineContent from diff-enhancer hook

Updates:
- Refactor hash-computation for CID generation
- Update all diff-utils to use new format
- Update hook to use raw content instead of hashline format
- Update tests to match new expectations

🤖 Generated with assistance of [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)
2026-02-20 11:07:42 +09:00
YeonGyu-Kim 3ab2eec117 fix(hashline): add autocorrect, batch mismatch reporting, and write anchors 2026-02-20 11:02:07 +09:00
Maxim Harizanov 2e5fd99918 fix(types): restore CI compatibility for plugin hooks and tool context 2026-02-19 13:40:38 +02:00
YeonGyu-Kim ce44445946 update docs 2026-02-19 18:41:37 +09:00
YeonGyu-Kim 9402905738 fix(hashline-edit): improve hash computation and tool description clarity
- Include line number in hash computation to ensure uniqueness
- Add explicit examples of WRONG vs CORRECT LINE:HASH format
- Clarify that hash must be hex characters (0-9, a-f only)
- Update tests to use dynamic hash computation
2026-02-19 18:40:42 +09:00
YeonGyu-Kim 27466b8baa feat(skill): merge skills and commands into unified available_items with priority sorting
- Merge <available_skills> and <available_commands> into single <available_items>
- Sort by priority: project > user > opencode > builtin
- List skills before commands
- Add priority documentation to description
- Add 5 tests for ordering and priority

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-02-19 18:40:42 +09:00
YeonGyu-Kim 6869a2c0b5 fix(hashline-edit): stabilize TUI diff metadata and output flow
Align edit/write hashline handling with TUI expectations by preserving metadata through tool execution, keeping unified diff raw to avoid duplicated line numbers, and tightening read/write/edit outputs plus tests for reliable agent operation.
2026-02-19 18:40:42 +09:00
YeonGyu-Kim 8dcde36031 Merge pull request #1698 from Luodian/fix/merge-skill-into-slashcommand
refactor: merge slashcommand behavior into skill tool to reduce prompt size
2026-02-19 15:51:59 +09:00
YeonGyu-Kim 2df6655d1e docs: update AGENTS.md metadata
🤖 Generated with assistance of [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)
2026-02-19 10:46:40 +09:00
YeonGyu-Kim 6fc1b8430b docs: add module-level AGENTS.md for mcp-oauth, atlas, rules-injector, background-task, call-omo-agent, lsp
🤖 Generated with assistance of [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)
2026-02-19 10:46:40 +09:00
Bo Li d06f55325a fix(skill): keep no-skills wording compatible with tests 2026-02-19 01:19:44 +08:00
Bo Li 1dce4d42e7 fix(skill): eagerly build description for preloaded skills 2026-02-19 01:16:57 +08:00
Bo Li 4a6335c232 refactor: merge slashcommand tool into skill tool
Per reviewer feedback (code-yeongyu), keep the 'skill' tool as the main
tool and merge slashcommand functionality INTO it, rather than the reverse.

Changes:
- skill/tools.ts: Add command discovery (discoverCommandsSync) support;
  handle both SKILL.md skills and .omo/commands/ slash commands in a single
  tool; show combined listing in tool description
- skill/types.ts: Add 'commands' option to SkillLoadOptions
- skill/constants.ts: Update description to mention both skills and commands
- plugin/tool-registry.ts: Replace createSlashcommandTool with createSkillTool;
  register tool as 'skill' instead of 'slashcommand'
- tools/index.ts: Export createSkillTool instead of createSlashcommandTool
- plugin/tool-execute-before.ts: Update tool name checks from 'slashcommand'
  to 'skill'; update arg name from 'command' to 'name'
- agents/dynamic-agent-prompt-builder.ts: Categorize 'skill' tool as 'command'
- tools/skill-mcp/tools.ts: Update hint message to reference 'skill' tool
- hooks/auto-slash-command/executor.ts: Update error message

The slashcommand/ module files are kept (they provide shared utilities used
by the skill tool), but the slashcommand tool itself is no longer registered.
2026-02-19 00:18:47 +08:00
Bo Li 2192f4a783 fix: preserve git-master config defaults and tighten type safety 2026-02-19 00:17:22 +08:00
Bo Li 6025035f27 refactor: merge skill tool into slashcommand to reduce system prompt size 2026-02-19 00:17:22 +08:00
YeonGyu-Kim 8ea24d26d2 chore: upgrade claude-sonnet-4-5 to claude-sonnet-4-6 across codebase 2026-02-18 15:51:24 +09:00
YeonGyu-Kim a70ae411b0 chore: regenerate AGENTS.md knowledge base
🤖 Generated with [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode) assistance
2026-02-18 01:26:19 +09:00
YeonGyu-Kim 1f46e73fa3 refactor: remove 3 orphaned files and prefix unused parameter 2026-02-17 14:09:12 +09:00
YeonGyu-Kim eef47d794d refactor: remove 3 orphaned files from call-omo-agent and delegate-task 2026-02-17 14:08:44 +09:00
YeonGyu-Kim 10c98519da refactor: remove orphaned modules/ directory from background-task 2026-02-17 14:08:30 +09:00
YeonGyu-Kim 0a3c1bdd0f docs: regenerate all AGENTS.md files from comprehensive codebase exploration
- Fired 33 parallel explore agents across all major directories
- Analyzed 1164 TS files, 133k LOC, 41 hooks, 26 tools, 11 agents, 18 features
- Regenerated 13 AGENTS.md files with 905 total lines
- Root: plugin architecture, initialization flow, 7 OpenCode hook handlers
- src/: entry point orchestration, hook composition pipeline
- agents/: 11 agent inventory with tool restrictions and factory patterns
- hooks/: 41 hooks organized by 5 tiers, key complex hooks documented
- tools/: 26 tools across 14 directories, delegation categories
- features/: 18 modules mapped by complexity (HIGH/MEDIUM/LOW)
- shared/: 101 utilities in 13 categories, model resolution pipeline
- config/: 22 schema files, Zod v4 validation system
- cli/: 5 commands, doctor checks, model fallback system
- mcp/: 3-tier MCP system architecture
- plugin-handlers/: 6-phase config loading pipeline
- claude-code-hooks/: CC settings.json compatibility layer
- claude-tasks/: task schema + file-based persistence

🤖 Generated with assistance of oh-my-opencode
2026-02-17 11:17:01 +09:00
YeonGyu-Kim 2d80b76b30 Merge branch 'dev' into fix/1681-oracle-json-parse 2026-02-17 01:54:03 +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 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 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 2f08c1d316 fix: use correct project directory for Windows subagents (#1718) 2026-02-17 01:29:25 +09:00
YeonGyu-Kim f4fc2fbbfd fix: resolve JSON parse error in Oracle after promptAsync refactor (#1681) 2026-02-17 01:29:17 +09:00
YeonGyu-Kim 41c57df6f9 fix: report errors instead of silent catch in subagent-resolver (#1283) 2026-02-17 01:26:58 +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 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
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 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 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 7c6da2b1f8 refactor: remove unused code from background-agent, background-task, call-omo-agent 2026-02-16 22:11:29 +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
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