Commit Graph

1853 Commits

Author SHA1 Message Date
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 52029a0d42 feat(hephaestus): add proactive intent detection and verbalization
Add Step 0 intent extraction to counter GPT 5.2's conservative grounding bias:
- Map surface questions to true action intent (e.g., "Did you do X?" → do X now)
- Verbalization pattern: model must state intent before acting, creating commitment
- Turn-end self-check to prevent stopping after only talking about work

Prevents Hephaestus from answering questions then stopping when action is implied.
2026-02-19 18:40:42 +09:00
YeonGyu-Kim b66d338c59 test(models): sync librarian fallback expectation 2026-02-19 18:40:42 +09:00
YeonGyu-Kim c5a7a6d410 fix(ultrawork): use session agent fallback and skip same-model override 2026-02-19 18:40:42 +09:00
YeonGyu-Kim e6f73201ae feat(hashline-read-enhancer): add write tool support and fix early termination
- Support write tool in addition to read tool

- Fix early termination when encountering non-matching lines

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 1a7efe594d feat(hashline-edit-diff-enhancer): add unified diff output and write tool support
- Generate unified diff for TUI display via metadata.diff

- Support write tool in addition to edit tool

- Hashline-format before/after content in filediff metadata

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 347ce0005f fix(ultrawork): respect variant-only schema overrides
Allow ultrawork overrides configured with only variant to apply at message time so thinking level is honored even without model replacement.
2026-02-19 18:40:42 +09:00
YeonGyu-Kim 0cf6df8225 test(hashline-read-enhancer): add hash consistency and content isolation tests
Add comprehensive test coverage for:
- Hash consistency validation between Read tool output and Edit tool validateLineRef
- Injected content isolation to prevent hashifying non-file-content lines
- Footer messages and system reminders that should pass through unchanged

Tests ensure Read hook properly handles content boundaries and maintains
hash validity for Edit tool operations.

🤖 Generated with assistance of oh-my-opencode
2026-02-19 18:40:42 +09:00
YeonGyu-Kim 0af912a87d feat(ultrawork): implement per-message model override with deferred DB retry strategy
- Add per-message ultrawork mode detection via keyword matching
- Implement deferred DB override strategy using microtask retry loop
- Fall back to setTimeout after 10 microtask retries for robustness
- Update agent configuration schema with ultrawork model/variant fields
- Integrate with chat.message hook to apply overrides on detection
- Add comprehensive tests for all override scenarios
- Generated schema includes ultrawork configuration

🤖 Generated with assistance of OhMyOpenCode (https://github.com/code-yeongyu/oh-my-opencode)
2026-02-19 18:40:42 +09:00
YeonGyu-Kim 9a46843f4d feat(hooks): add hashline-edit-diff-enhancer for TUI inline diff display
Capture file content before hashline edit execution and compute filediff
metadata after, enabling opencode TUI to render inline diffs for the
plugin's edit tool (which replaces the built-in EditTool).
2026-02-19 18:40:42 +09:00
YeonGyu-Kim cb2519f44f refactor(models): expand provider listings for robust fuzzy matching
Add alternative providers to free-tier and cross-provider models:
- k2p5: add friendli as alternative to kimi-for-coding
- kimi-k2.5-free, minimax-m2.5-free, big-pickle, gpt-5-nano: add opencode-zen-abuse
- grok-code-fast-1: add venice as alternative to github-copilot
- glm-5: add opencode as alternative to zai-coding-plan
2026-02-19 18:40:42 +09:00
YeonGyu-Kim 327de261a2 refactor(atlas): remove gemini-3-pro from fallback chain 2026-02-19 18:40:42 +09:00
YeonGyu-Kim 5ff9d66788 refactor(multimodal-looker): reorder fallback to k2p5 → kimi-free → gemini-flash → gpt-5.2 → glm-4.6v 2026-02-19 18:40:42 +09:00
YeonGyu-Kim 035a213dec refactor(explore): add minimax-m2.5-free as #2 fallback after grok-code-fast-1 2026-02-19 18:40:42 +09:00
YeonGyu-Kim fa8a24b0af refactor(librarian): switch fallback to minimax-m2.5-free → gemini-3-flash → big-pickle 2026-02-19 18:40:42 +09:00
YeonGyu-Kim 94611a9f93 refactor(models): upgrade zai-coding-plan default from glm-4.7 to glm-5 2026-02-19 18:40:42 +09:00
YeonGyu-Kim fd67e6aff5 feat(prometheus): add GPT-5.2 optimized prompt with model-based routing
- Create gpt.ts with XML-tagged, principle-driven prompt (Codex plan mode style)
- Add getPrometheusPrompt() routing: GPT models → GPT prompt, others → default
- Promote gpt-5.2 (high) to #2 in prometheus fallback chain
- Follow Atlas GPT variant pattern (isGptModel detection)
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 f3ba126d45 test(todo-continuation-enforcer): cover isContinuationStopped race during countdown
Adds a regression test for the race where /stop-continuation fires after
handleSessionIdle passes the flag check but before injectContinuation runs.
Verifies no injection occurs when the flag becomes true mid-countdown.
2026-02-19 14:08:03 +09:00
YeonGyu-Kim 944e64a1f9 fix(todo-continuation-enforcer): check isContinuationStopped in injectContinuation to close race window
When /stop-continuation is invoked during the 2s countdown, the stop flag
was never checked inside injectContinuation, so the injection would still
fire after the countdown elapsed.

Propagate isContinuationStopped from handleSessionIdle through startCountdown
into injectContinuation, where it is now re-checked before any API call.
2026-02-19 14:07:52 +09:00
YeonGyu-Kim d5f85eb9c4 feat(hashline): enable hashline-edit by default
🤖 Generated with assistance of [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)
2026-02-19 10:46:40 +09:00
YeonGyu-Kim 084f300c29 fix(run): set default stabilization to 1s and coerce non-positive values
- Change MIN_STABILIZATION_MS from 0 to 1_000 to prevent premature exits
- Coerce non-positive minStabilizationMs to default instead of treating as disabled
- Fix stabilization logic: track firstWorkTimestamp inside the meaningful-work branch
- Add tests for default stabilization behavior and zero-value coercion

🤖 Generated with assistance of [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)
2026-02-19 10:46:40 +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 4d79577088 docs: add module-level AGENTS.md for config-manager, keyword-detector, ralph-loop, session-recovery, todo-continuation-enforcer
🤖 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
YeonGyu-Kim 7aeb50e887 feat(cli): enable timestamped run output by default 2026-02-19 10:46:40 +09:00
Bo Li 652fc75b3d refactor(prompt): dedupe repeated skill guidance blocks 2026-02-19 02:22:14 +08:00
YeonGyu-Kim 12db8271ad refactor: remove dead ultrawork model override code
Remove ultrawork-model-override hook and per-agent ultrawork model swap
config that relied on zen opencode.ai free tier (no longer functional).

Removed:
- src/hooks/ultrawork-model-override/ (hook, test, index)
- ultrawork field from AgentOverrideConfigSchema
- ultrawork-model-override from HookNameSchema
- UltraworkConfig type from model-fallback-types
- Non-max20 sonnet+ultrawork-opus codepath from model-fallback
- Claude subscription model table from installation docs
- All references in plugin-interface, create-session-hooks, schema.json
- Related test cases and updated snapshots
2026-02-19 03:17: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
YeonGyu-Kim 15bdfd7511 fix(tests): stabilize auto-update-checker isolation under bun 2026-02-19 01:40:58 +09: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 977f8fa07c fix(tests): update atlas hook and auto-update-checker tests
- atlas hook: update verification reminder assertions to match new
  4-phase QA system (MANDATORY -> PHASE 1/2, LIE -> LYING)
- auto-update-checker: add missing revertPinnedVersion mock export
  to fix SyntaxError in background-update-check tests

Note: 4 auto-update-checker tests fail only when run alongside
checker.test.ts due to bun mock.module isolation issue (pre-existing
in v3.7.3, not a regression)
2026-02-18 23:13:16 +09:00
YeonGyu-Kim d05cbe5ab2 feat(run): print agent/model/duration on assistant completion 2026-02-18 21:10:21 +09:00
YeonGyu-Kim 1003a03cc6 refactor: replace opencode/glm-4.7-free with opencode/big-pickle model
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-02-18 21:10:21 +09:00
YeonGyu-Kim dba7a1e07c fix(run): inherit main-session tool permissions for continuation prompts 2026-02-18 21:10:21 +09:00
YeonGyu-Kim 80bb262066 refactor(agents): convert all markdown tables to bullet lists across 12 agent files
Tables in template literal prompts render poorly in some LLM contexts.
Replaced 43 table instances with equivalent bullet list format preserving
all information. Affected: hephaestus, atlas/default, atlas/prompt-section-builder,
sisyphus-junior/gpt, librarian, explore, metis, prometheus/behavioral-summary,
prometheus/identity-constraints, prometheus/interview-mode, prometheus/plan-generation,
prometheus/plan-template.
2026-02-18 21:10:21 +09:00
YeonGyu-Kim a838925e23 Merge pull request #1535 from acamq/feature/start-work-plan-name-clean
feat(prometheus): include plan name in /start-work guidance
2026-02-18 18:20:08 +09:00
YeonGyu-Kim d61c55c0bf Merge pull request #1549 from MoerAI/fix/windows-path-absolute-check
fix(hooks): use path.isAbsolute() for cross-platform path detection on Windows
2026-02-18 18:04:13 +09:00
YeonGyu-Kim ab37ada91b Merge pull request #1822 from Strocs/fix/non-interactive-env-hook-duplication
fix(non-interactive-env): prevent environment variable duplication on repeated executions
2026-02-18 18:03:50 +09:00
YeonGyu-Kim 5de09070eb Merge pull request #1938 from POBIM/fix/delegate-task-agent-overrides
fix(delegate-task): pass plugin agent overrides into task resolver
2026-02-18 18:03:13 +09:00
YeonGyu-Kim 0c03e8217e feat(atlas): enforce 4-phase critical QA with mandatory hands-on verification
Rewrite Atlas GPT verification from a checklist to a 4-phase protocol:
Phase 1 (Read Code First), Phase 2 (Automated Checks), Phase 3 (Hands-On QA),
Phase 4 (Gate Decision). Hands-on QA is now mandatory for user-facing changes,
not 'if applicable'. Hook message reinforces subagent distrust and requires
actually running deliverables before proceeding to next task.
2026-02-18 17:50:26 +09:00
YeonGyu-Kim 912c41e0d3 feat(agents): boost sisyphus parallel tool call intensity, remove incorrect subagent_type enforcement from hephaestus 2026-02-18 17:47:08 +09:00
YeonGyu-Kim 7b842c62ee feat(cli): use sonnet-4-6 with ultrawork opus-4-6 for non-max20 Claude subscribers 2026-02-18 17:47:08 +09:00
YeonGyu-Kim b3cc2bd528 test(hooks): add ultrawork-model-override unit tests 2026-02-18 17:47:08 +09:00
YeonGyu-Kim c7f9fed60b feat(hooks): add ultrawork-model-override hook for per-agent model swap 2026-02-18 17:47:08 +09:00
YeonGyu-Kim 04936cd8e5 fix: clear spy call history in completion-verbose-logging test
spyOn(console, 'log') accumulates calls across test files in bun:test.
Add mockClear() after spy creation to prevent cross-file contamination
when run in the same bun test batch as completion.test.ts.
2026-02-18 17:43:16 +09:00