YeonGyu-Kim
598a4389d1
refactor(core): split index.ts and config-handler.ts into focused modules
...
Main entry point:
- create-hooks.ts, create-tools.ts, create-managers.ts
- plugin-interface.ts: plugin interface types
- plugin/ directory: plugin lifecycle modules
Config handler:
- agent-config-handler.ts, command-config-handler.ts
- tool-config-handler.ts, mcp-config-handler.ts
- provider-config-handler.ts, category-config-resolver.ts
- agent-priority-order.ts, prometheus-agent-config-builder.ts
- plugin-components-loader.ts
2026-02-08 16:25:25 +09:00
YeonGyu-Kim
d525958a9d
refactor(cli): split install.ts and model-fallback.ts into focused modules
...
Install pipeline:
- cli-installer.ts, tui-installer.ts, tui-install-prompts.ts
- install-validators.ts
Model fallback:
- model-fallback-types.ts, fallback-chain-resolution.ts
- provider-availability.ts, provider-model-id-transform.ts
2026-02-08 16:25:12 +09:00
YeonGyu-Kim
3c1e71f256
refactor(cli): split doctor/model-resolution and run/events into focused modules
...
Doctor checks:
- model-resolution-cache.ts, model-resolution-config.ts
- model-resolution-details.ts, model-resolution-effective-model.ts
- model-resolution-types.ts, model-resolution-variant.ts
Run events:
- event-formatting.ts, event-handlers.ts
- event-state.ts, event-stream-processor.ts
2026-02-08 16:25:01 +09:00
YeonGyu-Kim
4e5792ce4d
refactor(shared): split model-availability.ts into model resolution modules
...
Extract model availability checking pipeline:
- available-models-fetcher.ts: top-level model fetching orchestration
- model-cache-availability.ts, models-json-cache-reader.ts
- provider-models-cache-model-reader.ts: provider cache reading with null guard
- fallback-model-availability.ts, model-name-matcher.ts
- open-code-client-accessors.ts, open-code-client-shapes.ts
- record-type-guard.ts
2026-02-08 16:24:52 +09:00
YeonGyu-Kim
052beb364f
refactor(task-tool): split task.ts into per-action modules
...
Extract CRUD actions into dedicated modules:
- task-action-create.ts, task-action-get.ts
- task-action-list.ts, task-action-update.ts, task-action-delete.ts
- task-id-validator.ts: ID validation logic
2026-02-08 16:24:43 +09:00
YeonGyu-Kim
4400e18a52
refactor(slashcommand): split tools.ts into discovery and formatting modules
...
Extract slash command tool internals:
- command-discovery.ts: command finding and listing
- command-output-formatter.ts: output formatting
- skill-command-converter.ts: skill-to-command conversion
- slashcommand-description.ts: tool description generation
- slashcommand-tool.ts: core tool definition
2026-02-08 16:24:34 +09:00
YeonGyu-Kim
480dcff420
refactor(look-at): split tools.ts into argument parsing and extraction modules
...
Extract multimodal look-at tool internals:
- look-at-arguments.ts: argument validation and parsing
- assistant-message-extractor.ts: response extraction
- mime-type-inference.ts: file type detection
- multimodal-agent-metadata.ts: agent metadata constants
2026-02-08 16:24:21 +09:00
YeonGyu-Kim
6e0f6d53a7
refactor(call-omo-agent): split tools.ts into agent execution modules
...
Extract agent call pipeline:
- agent-type-normalizer.ts, tool-context-with-metadata.ts
- subagent-session-creator.ts, subagent-session-prompter.ts
- sync-agent-executor.ts, background-agent-executor.ts
- session-completion-poller.ts, session-message-output-extractor.ts
- message-storage-directory.ts
2026-02-08 16:24:13 +09:00
YeonGyu-Kim
76fad73550
refactor(ast-grep): split cli.ts and constants.ts into focused modules
...
Extract AST-grep tooling into single-responsibility files:
- cli-binary-path-resolution.ts, sg-cli-path.ts
- environment-check.ts, language-support.ts
- process-output-timeout.ts, sg-compact-json-output.ts
2026-02-08 16:24:03 +09:00
YeonGyu-Kim
e4583668c0
refactor(hooks): split session-notification and unstable-agent-babysitter
...
Extract notification and babysitter logic:
- session-notification-formatting.ts, session-notification-scheduler.ts
- session-notification-sender.ts, session-todo-status.ts
- task-message-analyzer.ts: message analysis for babysitter hook
2026-02-08 16:23:56 +09:00
YeonGyu-Kim
2d22a54b55
refactor(rules-injector): split finder.ts into rule discovery modules
...
Extract rule finding logic:
- project-root-finder.ts: project root detection
- rule-file-finder.ts: rule file discovery
- rule-file-scanner.ts: filesystem scanning for rules
- rule-distance.ts: rule-to-file distance calculation
2026-02-08 16:22:33 +09:00
YeonGyu-Kim
c2efdb4334
refactor(interactive-bash-session): extract tracker and command parser
...
Split hook into focused modules:
- interactive-bash-session-tracker.ts: session tracking logic
- tmux-command-parser.ts: tmux command parsing utilities
2026-02-08 16:22:25 +09:00
YeonGyu-Kim
d3a3f0c3a6
refactor(claude-code-hooks): extract handlers and session state
...
Split hook into per-concern modules:
- handlers/ directory for individual hook handlers
- session-hook-state.ts: session-level hook state management
2026-02-08 16:22:17 +09:00
YeonGyu-Kim
0f145b2e40
refactor(ralph-loop): split hook into state controller and event handler modules
...
Extract Ralph loop lifecycle management:
- loop-state-controller.ts: start/stop/recovery state machine
- ralph-loop-event-handler.ts: event handling logic
- continuation-prompt-builder.ts, continuation-prompt-injector.ts
- completion-promise-detector.ts, loop-session-recovery.ts
- message-storage-directory.ts
2026-02-08 16:22:10 +09:00
YeonGyu-Kim
161d6e4159
refactor(context-window-recovery): split executor and storage into focused modules
...
Extract recovery strategies and storage management:
- recovery-strategy.ts, aggressive-truncation-strategy.ts
- summarize-retry-strategy.ts, target-token-truncation.ts
- empty-content-recovery.ts, message-builder.ts
- tool-result-storage.ts, storage-paths.ts, state.ts
- client.ts, tool-part-types.ts
2026-02-08 16:22:01 +09:00
YeonGyu-Kim
8dff42830c
refactor(builtin-skills): extract git-master metadata to separate module
...
Split prompt-heavy git-master.ts:
- git-master-skill-metadata.ts: skill metadata constants (name, desc, agent)
2026-02-08 16:21:50 +09:00
YeonGyu-Kim
9b841c6edc
refactor(mcp-oauth): extract OAuth authorization flow from provider.ts
...
Split provider.ts into focused modules:
- oauth-authorization-flow.ts: OAuth2 authorization code flow logic
2026-02-08 16:21:43 +09:00
YeonGyu-Kim
39dc62c62a
refactor(claude-code-plugin-loader): split loader.ts into per-type loaders
...
Extract plugin component loading into dedicated modules:
- discovery.ts: plugin directory detection
- plugin-path-resolver.ts: path resolution logic
- agent-loader.ts, command-loader.ts, hook-loader.ts
- mcp-server-loader.ts, skill-loader.ts
2026-02-08 16:21:37 +09:00
YeonGyu-Kim
46969935cd
refactor(skill-mcp-manager): split manager.ts into connection and client modules
...
Extract MCP client lifecycle management:
- connection.ts: getOrCreateClientWithRetry logic
- stdio-client.ts, http-client.ts: transport-specific creation
- oauth-handler.ts: OAuth token management
- cleanup.ts: session and global cleanup
- connection-type.ts: connection type detection
2026-02-08 16:21:28 +09:00
YeonGyu-Kim
51ced65b5f
refactor(opencode-skill-loader): split loader and merger into focused modules
...
Extract skill loading pipeline into single-responsibility modules:
- skill-discovery.ts, skill-directory-loader.ts, skill-deduplication.ts
- loaded-skill-from-path.ts, loaded-skill-template-extractor.ts
- skill-template-resolver.ts, skill-definition-record.ts
- git-master-template-injection.ts, allowed-tools-parser.ts
- skill-mcp-config.ts, skill-resolution-options.ts
- merger/ directory for skill merging logic
2026-02-08 16:21:19 +09:00
YeonGyu-Kim
f8b5771443
refactor(tmux-subagent): split manager and decision-engine into focused modules
...
Extract session lifecycle, polling, grid planning, and event handling:
- polling.ts: session polling controller with stability detection
- event-handlers.ts: session created/deleted handlers
- grid-planning.ts, spawn-action-decider.ts, spawn-target-finder.ts
- session-status-parser.ts, session-message-count.ts
- cleanup.ts, polling-constants.ts, tmux-grid-constants.ts
2026-02-08 16:21:04 +09:00
YeonGyu-Kim
e3bd43ff64
refactor(background-agent): split manager.ts into focused modules
...
Extract 30+ single-responsibility modules from manager.ts (1556 LOC):
- task lifecycle: task-starter, task-completer, task-canceller, task-resumer
- task queries: task-queries, task-poller, task-queue-processor
- notifications: notification-builder, notification-tracker, parent-session-notifier
- session handling: session-validator, session-output-validator, session-todo-checker
- spawner: spawner/ directory with focused spawn modules
- utilities: duration-formatter, error-classifier, message-storage-locator
- result handling: result-handler-context, background-task-completer
- shutdown: background-manager-shutdown, process-signal
2026-02-08 16:20:52 +09:00
YeonGyu-Kim
c7122b4127
fix: resolve all test failures and Cubic review issues
...
- Fix unstable-agent-babysitter: add promptAsync to test mock
- Fix claude-code-mcp-loader: isolate tests from user home configs
- Fix npm-dist-tags: encode packageName for scoped packages
- Fix agent-builder: clone source to prevent shared object mutation
- Fix add-plugin-to-opencode-config: handle JSONC with leading comments
- Fix auth-plugins/add-provider-config: error on parse failures
- Fix bun-install: clear timeout on completion
- Fix git-diff-stats: include untracked files in diff summary
2026-02-08 15:31:32 +09:00
YeonGyu-Kim
119e18c810
refactor: wave 2 - split atlas, auto-update-checker, session-recovery, todo-enforcer, background-task hooks
...
- Extract atlas/ into 15 focused modules (hook, event handler, tool policies, types, etc.)
- Split auto-update-checker into checker/ and hook/ subdirectories with single-purpose files
- Decompose session-recovery into separate recovery strategy files per error type
- Extract todo-continuation-enforcer from monolith to directory with dedicated modules
- Split background-task/tools.ts into individual tool creator files
- Extract command-executor, tmux-utils into focused sub-modules
- Split config/schema.ts into domain-specific schema files
- Decompose cli/config-manager.ts into focused modules
- Rollback skill-mcp-manager, model-availability, index.ts splits that broke tests
- Fix all import path depths for moved files (../../ -> ../../../)
- Add explicit type annotations to resolve TS7006 implicit any errors
Typecheck: 0 errors
Tests: 2359 pass, 5 fail (all pre-existing)
2026-02-08 15:01:42 +09:00
YeonGyu-Kim
29155ec7bc
refactor: wave 1 - extract leaf modules, rename catch-all files, split index.ts hooks
...
- Split 25+ index.ts files into hook.ts + extracted modules
- Rename all catch-all utils.ts/helpers.ts to domain-specific names
- Split src/tools/lsp/ into ~15 focused modules
- Split src/tools/delegate-task/ into ~18 focused modules
- Separate shared types from implementation
- 155 files changed, 60+ new files created
- All typecheck clean, 61 tests pass
2026-02-08 13:57:26 +09:00
YeonGyu-Kim
71ac54c33e
Merge pull request #1622 from itsnebulalol/dev
2026-02-08 11:44:40 +09:00
github-actions[bot]
cbeeee4053
@QiRaining has signed the CLA in code-yeongyu/oh-my-opencode#1641
2026-02-08 02:34:48 +00:00
github-actions[bot]
737bda680c
@quantmind-br has signed the CLA in code-yeongyu/oh-my-opencode#1634
2026-02-07 18:38:33 +00:00
github-actions[bot]
ff94aa3033
release: v3.3.1
v3.3.1
2026-02-07 17:48:30 +00:00
YeonGyu-Kim
d0c4085ae1
release: v3.3.1
2026-02-08 02:45:38 +09:00
YeonGyu-Kim
56f9de4652
Merge pull request #1632 from code-yeongyu/fix/look-at-sync-prompt
...
fix(look-at): use synchronous prompt to fix race condition (#1620 regression)
2026-02-08 02:45:06 +09:00
YeonGyu-Kim
b2661be833
test: fix ralph-loop tests by adding promptAsync to mock
...
The ralph-loop hook calls promptAsync in the implementation, but the
test mock only defined prompt(). Added promptAsync with identical
behavior to make tests pass.
- All 38 ralph-loop tests now pass
- Total test suite: 2361 pass, 3 fail (unrelated to this change)
2026-02-08 02:41:29 +09:00
YeonGyu-Kim
3d4ed912d7
fix(look-at): use synchronous prompt to fix race condition ( #1620 regression)
...
PR #1620 migrated all prompt calls from session.prompt (blocking) to
session.promptAsync (fire-and-forget HTTP 204). This broke look_at which
needs the multimodal-looker response to be available immediately after
the prompt call returns.
Fix: add promptSyncWithModelSuggestionRetry() that uses session.prompt
(blocking) with model suggestion retry support. look_at now uses this
sync variant while all other callers keep using promptAsync.
- Add promptSyncWithModelSuggestionRetry to model-suggestion-retry.ts
- Switch look_at from promptWithModelSuggestionRetry to sync variant
- Add comprehensive tests for the new sync function
- No changes to other callers (delegate-task, background-agent)
2026-02-08 02:36:27 +09:00
github-actions[bot]
9a338b16f1
@mkusaka has signed the CLA in code-yeongyu/oh-my-opencode#1629
2026-02-07 16:54:49 +00:00
github-actions[bot]
471bc6e52d
@itsnebulalol has signed the CLA in code-yeongyu/oh-my-opencode#1622
2026-02-07 15:11:05 +00:00
Dominic Frye
0cbbdd566e
fix(cli): enable positional options on parent command for passThroughOptions
2026-02-07 10:06:13 -05:00
github-actions[bot]
825a5e70f7
release: v3.3.0
v3.3.0
2026-02-07 14:47:32 +00:00
YeonGyu-Kim
18c161a9cd
Merge pull request #1620 from potb/acp-json-error
...
fix: switch session.prompt() to promptAsync() — delegate broken in ACP
2026-02-07 22:52:39 +09:00
Peïo Thibault
414cecd7df
test: add promptAsync mocks to all test files for promptAsync migration
2026-02-07 14:41:46 +01:00
YeonGyu-Kim
2b541b8725
Merge pull request #1621 from code-yeongyu/fix/814-mcp-config-both-paths
...
fix(mcp-loader): read both ~/.claude.json and ~/.claude/.mcp.json for user MCP config
2026-02-07 22:33:13 +09:00
YeonGyu-Kim
ac6e7d00f2
fix(mcp-loader): also read ~/.claude/.mcp.json for CLI-managed user MCP config
...
PR #1616 replaced ~/.claude/.mcp.json with ~/.claude.json but both paths
should be read:
- ~/.claude.json: user/local scope MCP settings (mcpServers field)
- ~/.claude/.mcp.json: CLI-managed MCP servers (claude mcp add)
Fixes #814
2026-02-07 22:29:51 +09:00
Peïo Thibault
fa77be0daf
chore: remove testing guide from branch
2026-02-07 14:14:06 +01:00
Peïo Thibault
13da4ef4aa
docs: add comprehensive local testing guide for acp-json-error branch
2026-02-07 14:07:55 +01:00
Peïo Thibault
6451b212f8
test(todo-continuation): add promptAsync mocks for migrated hook
2026-02-07 13:51:28 +01:00
Peïo Thibault
fad7354b13
fix(look-at): remove isJsonParseError band-aid (root cause fixed)
2026-02-07 13:46:03 +01:00
Peïo Thibault
55dc64849f
fix(tools): switch session.prompt to promptAsync in delegate-task and call-omo-agent
2026-02-07 13:43:06 +01:00
Peïo Thibault
e984a5c639
test(shared): update model-suggestion-retry tests for promptAsync passthrough
2026-02-07 13:42:49 +01:00
Peïo Thibault
46e02b9457
fix(hooks): switch session.prompt to promptAsync in all hooks
2026-02-07 13:42:24 +01:00
Peïo Thibault
5f21ddf473
fix(background-agent): switch session.prompt to promptAsync
2026-02-07 13:42:20 +01:00
Peïo Thibault
108e860ddd
fix(core): switch compatibility shim to promptAsync
2026-02-07 13:42:19 +01:00