YeonGyu-Kim
f67a4df07e
fix: integrate dev background_output task_id title resolution
2026-02-08 21:24:08 +09:00
YeonGyu-Kim
9353ac5b9d
fix: integrate dev CLAUDE_CODE_TASK_LIST_ID env var support
2026-02-08 21:23:21 +09:00
YeonGyu-Kim
fecc6b8605
fix: remove task-continuation-enforcer references after dev merge
...
Dev removed task-continuation-enforcer entirely. Remove all remaining
references from plugin hooks, event handler, tool-execute-before, and
config schema to align with origin/dev.
2026-02-08 21:11:07 +09:00
YeonGyu-Kim
46a30cd7ec
Merge remote-tracking branch 'origin/dev' into refactor/modular-code-enforcement
...
# Conflicts:
# src/agents/utils.ts
# src/config/schema.ts
# src/features/background-agent/spawner/background-session-creator.ts
# src/features/background-agent/spawner/parent-directory-resolver.ts
# src/features/background-agent/spawner/tmux-callback-invoker.ts
# src/features/tmux-subagent/manager.ts
# src/hooks/interactive-bash-session/index.ts
# src/hooks/task-continuation-enforcer.test.ts
# src/index.ts
# src/plugin-handlers/config-handler.test.ts
# src/tools/background-task/tools.ts
# src/tools/call-omo-agent/tools.ts
# src/tools/delegate-task/executor.ts
2026-02-08 19:05:41 +09:00
YeonGyu-Kim
cbb7771525
fix: prevent command injection in git diff stats collection
...
Replace execSync with string commands with execFileSync using argument
arrays to avoid shell interpretation of file paths with special chars.
2026-02-08 18:39:36 +09:00
YeonGyu-Kim
d5f0e75b7d
fix: restore permission config in background session creation
...
Add permission: [{ permission: 'question', action: 'deny', pattern: '*' }]
to client.session.create() call to prevent background sessions from
asking questions that go unanswered, causing hangs.
2026-02-08 18:39:36 +09:00
YeonGyu-Kim
c9be2e1696
refactor: extract model selection logic from delegate-task into focused modules
...
- Create available-models.ts for model availability checking
- Create model-selection.ts for category-to-model resolution logic
- Update category-resolver, subagent-resolver, and sync modules to import
from new focused modules instead of monolithic sources
2026-02-08 18:03:15 +09:00
YeonGyu-Kim
caf08af88b
fix: resolve test isolation failures in task-continuation-enforcer and config-handler tests
...
- Change BackgroundManager import to type-only to prevent global process
listener pollution across parallel test files
- Replace real BackgroundManager construction with createMockBackgroundManager
- Fix nested spyOn in config-handler tests to reuse beforeEach spy via
mockResolvedValue instead of re-spying inside test bodies
2026-02-08 18:03:08 +09:00
YeonGyu-Kim
e663d7b335
refactor(shared): update model-availability tests to use split modules
...
Migrate imports from monolithic `model-availability` to split modules
(`model-name-matcher`, `available-models-fetcher`, `model-cache-availability`).
Replace XDG_CACHE_HOME env var manipulation with `mock.module` for
`data-path`, ensuring test isolation without polluting process env.
🤖 Generated with assistance of [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode )
2026-02-08 18:00:19 +09:00
YeonGyu-Kim
e257bff31c
fix(plugin-handlers): remove as any type assertions in config-handler tests
...
Replace unsafe `as any` casts on `createBuiltinAgents` spy with properly
typed `as unknown as { mockResolvedValue: ... }` pattern. Adds bun-types
reference directive.
🤖 Generated with assistance of [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode )
2026-02-08 18:00:12 +09:00
YeonGyu-Kim
23bca2b4d5
feat(tools/background-task): resolve background_output task_id title
2026-02-08 17:54:59 +09:00
YeonGyu-Kim
83a05630cd
feat(tools/delegate-task): add skill-resolver module
...
- Add skill-resolver.ts for resolving skill configurations
- Handles skill loading and configuration resolution
- Part of modular delegate-task refactoring effort
🤖 Generated with assistance of OhMyOpenCode
2026-02-08 17:52:34 +09:00
YeonGyu-Kim
6717349e5b
feat(claude-tasks): add CLAUDE_CODE_TASK_LIST_ID env var support
...
- Export session-storage from claude-tasks/index.ts
- Add CLAUDE_CODE_TASK_LIST_ID fallback support in storage.ts
- Add comprehensive tests for CLAUDE_CODE_TASK_LIST_ID handling
- Prefer ULTRAWORK_TASK_LIST_ID, fall back to CLAUDE_CODE_TASK_LIST_ID
- Both env vars are properly sanitized for path safety
🤖 Generated with assistance of OhMyOpenCode
2026-02-08 17:52:16 +09:00
YeonGyu-Kim
ee72c45552
refactor(tools/background-task): split tools.ts into focused modules under 200 LOC
...
- Create modules/ directory with 6 focused modules:
- background-task.ts: task creation logic
- background-output.ts: output retrieval logic
- background-cancel.ts: cancellation logic
- formatters.ts: message formatting utilities
- message-processing.ts: message extraction utilities
- utils.ts: shared utility functions
- Reduce tools.ts from ~798 to ~30 lines (barrel pattern)
- Add new types to types.ts for module interfaces
- Update index.ts for clean re-exports
- Follow modular code architecture (200 LOC limit)
🤖 Generated with assistance of OhMyOpenCode
2026-02-08 17:52:00 +09:00
YeonGyu-Kim
9377c7eba9
refactor(hooks/interactive-bash-session): split monolithic hook into modules
...
- Convert index.ts to clean barrel export
- Extract hook implementation to hook.ts
- Extract terminal parsing to parser.ts
- Extract state management to state-manager.ts
- Reduce index.ts from ~276 to ~5 lines
- Follow modular code architecture principles
🤖 Generated with assistance of OhMyOpenCode
2026-02-08 17:51:48 +09:00
YeonGyu-Kim
f1316bc800
refactor(tmux-subagent): split manager.ts into focused modules
...
- Extract polling logic to polling-manager.ts
- Extract session cleanup to session-cleaner.ts
- Extract session spawning to session-spawner.ts
- Extract cleanup logic to manager-cleanup.ts
- Reduce manager.ts from ~495 to ~345 lines
- Follow modular code architecture (200 LOC limit)
🤖 Generated with assistance of OhMyOpenCode
2026-02-08 17:51:38 +09:00
YeonGyu-Kim
1f8f7b592b
docs(AGENTS): update line counts and stats across all AGENTS.md files
...
- Update main AGENTS.md with current file sizes
- Update complexity hotspot line counts
- Update agent count from 11 to 32 files
- Update CLI utility count to 70
- Update test file count from 100+ to 163
🤖 Generated with assistance of OhMyOpenCode
2026-02-08 17:51:30 +09:00
YeonGyu-Kim
c6fafd6624
fix: remove task-continuation-enforcer and restore task tool titles
2026-02-08 17:49:22 +09:00
YeonGyu-Kim
42dbc8f39c
Fix Issue #1428 : Deny bash permission for Prometheus agent
...
- Change PROMETHEUS_PERMISSION bash from 'allow' to 'deny' to prevent unrestricted bash execution
- Prometheus is a read-only planner and should not execute bash commands
- The prometheus-md-only hook provides additional blocking as backup
2026-02-08 17:37:44 +09:00
YeonGyu-Kim
6bb9a3b7bc
refactor(tools/call-omo-agent): split tools.ts into focused modules under 200 LOC
...
- Extract getMessageDir to message-dir.ts
- Extract executeBackground to background-executor.ts
- Extract session creation logic to session-creator.ts
- Extract polling logic to completion-poller.ts
- Extract message processing to message-processor.ts
- Create sync-executor.ts to orchestrate sync execution
- Add ToolContextWithMetadata type to types.ts
- tools.ts now <200 LOC and focused on tool definition
2026-02-08 17:37:44 +09:00
YeonGyu-Kim
f3f6ba47fe
merge: integrate origin/dev into modular-enforcement branch
...
Resolves all merge conflicts, preserving our split module structure
while integrating all dev changes:
- Custom agent summaries support (parseRegisteredAgentSummaries)
- Background notification queue (enqueueNotificationForParent)
- Atlas shared git-worktree module (collectGitDiffStats, formatFileChanges)
- Ralph-loop withTimeout + DEFAULT_API_TIMEOUT=5000
- Session recovery assistant_prefill_unsupported error type
- Atlas agentOverrides forwarding
- Config handler plan model demotion (buildPlanDemoteConfig)
- Delegate-task agentOverrides, promptSyncWithModelSuggestionRetry, variant
- LSP init timeout + stale init detection
- isPlanFamily function + task-continuation-enforcer hook
- Handoff command
2026-02-08 17:34:47 +09:00
YeonGyu-Kim
bb86523240
fix: add isPlanFamily for prometheus↔plan mutual blocking and task permission
...
- PLAN_AGENT_NAMES = ['plan'] (system prompt only)
- PLAN_FAMILY_NAMES = ['plan', 'prometheus'] (blocking + task permission)
- prometheus↔plan mutual delegation blocked via isPlanFamily()
- prometheus gets task tool permission via isPlanFamily()
- prompt-builder unchanged: prometheus does NOT get plan system prompt
2026-02-08 16:48:52 +09:00
YeonGyu-Kim
f2b7b759c8
Merge pull request #1173 from code-yeongyu/feature/handoff
...
feat(commands): add /handoff builtin command for context continuation
2026-02-08 16:44:25 +09:00
YeonGyu-Kim
a5af7e95c0
Merge pull request #1536 from code-yeongyu/feat/task-continuation-enforcer
...
feat(hooks): implement task-continuation-enforcer
2026-02-08 16:43:42 +09:00
justsisyphus
a5489718f9
feat(commands): add /handoff builtin command with programmatic context synthesis
...
Port handoff concept from ampcode as a builtin command that extracts
detailed context summary from current session for seamless continuation
in a new session. Enhanced with programmatic context gathering:
- Add HANDOFF_TEMPLATE with phased extraction (gather programmatic
context via session_read/todoread/git, extract context, format, instruct)
- Gather concrete data: session history, todo state, git diff/status
- Include compaction-style sections: USER REQUESTS (AS-IS) verbatim,
EXPLICIT CONSTRAINTS verbatim, plus all original handoff sections
- Register handoff in BuiltinCommandName type and command definitions
- Include session context variables (SESSION_ID, TIMESTAMP, ARGUMENTS)
- Add 14 tests covering registration, template content, programmatic
gathering, compaction-style sections, and emoji-free constraint
2026-02-08 16:38:53 +09:00
YeonGyu-Kim
582e0ead27
fix: revert load_skills default and enforce via prompts instead
...
Revert .default([]) on load_skills schema back to required, restore the runtime error for missing load_skills, and add explicit load_skills=[] to all task() examples in agent prompts that were missing it.
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-02-08 16:31:02 +09:00
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
0743855b40
Merge pull request #1652 from code-yeongyu/fix-1623-v2
...
fix(agents): include custom agents in orchestrator delegation prompt (#1623 )
2026-02-08 16:02:09 +09:00
YeonGyu-Kim
2588f33075
Merge pull request #1643 from code-yeongyu/fix/exa-api-key-1627
...
fix(mcp): append EXA_API_KEY to Exa MCP URL when env var is set (#1627 )
2026-02-08 16:01:59 +09:00