Commit Graph

2166 Commits

Author SHA1 Message Date
YeonGyu-Kim
b538806d5e docs(agents): add merge commit policy to PR rules section 2026-02-10 14:24:18 +09:00
YeonGyu-Kim
a25d8dfdae refactor(prompts): enrich explore/librarian delegation examples with structured context handoff
Expand prompt structure comment to 4-field format (CONTEXT/GOAL/DOWNSTREAM/REQUEST).
Update all explore/librarian task() examples across Sisyphus, Hephaestus,
Prometheus interview-mode, and both ultrawork variants with richer context
including downstream usage, scope limits, and return format expectations.
2026-02-10 14:24:18 +09:00
YeonGyu-Kim
4f9cec434b Merge pull request #1709 from code-yeongyu/feature/comment-checker-apply-patch
feat(comment-checker): support apply_patch
2026-02-10 14:17:28 +09:00
YeonGyu-Kim
f3f5b98c68 test: use BDD markers in pruneRecentSyntheticIdles test 2026-02-10 14:13:28 +09:00
YeonGyu-Kim
97b7215848 fix(event): prune synthetic idle dedup map 2026-02-10 14:08:02 +09:00
YeonGyu-Kim
61531ca26c feat(comment-checker): run checks for apply_patch edits 2026-02-10 13:58:34 +09:00
YeonGyu-Kim
19a4324b3e fix(provider-cache): extract models from provider.list().all response
OpenCode SDK does not expose client.model.list API. This caused the
provider-models cache to always be empty (models: {}), which in turn
caused delegate-task categories with requiresModel (e.g., 'deep',
'artistry') to fail with misleading 'Unknown category' errors.

Changes:
- connected-providers-cache.ts: Extract models from provider.list()
  response's .all array instead of calling non-existent client.model.list
- category-resolver.ts: Distinguish between 'unknown category' and
  'model not available' errors with clearer error messages
- Add comprehensive tests for both fixes

Bug chain:
client.model?.list is undefined -> empty cache -> isModelAvailable
returns false for requiresModel categories -> null returned from
resolveCategoryConfig -> 'Unknown category' error (wrong message)
2026-02-10 13:25:49 +09:00
YeonGyu-Kim
2fd847d88d refactor: fix import path and update test fixtures
- Fix import path in opencode-skill-loader/loader.ts
- Update executor.test.ts fixtures
2026-02-10 11:41:45 +09:00
YeonGyu-Kim
1717050f73 feat(event): normalize session.status to session.idle
Add session-status-normalizer to handle session.status events and
convert idle status to synthetic session.idle events. Includes
deduplication logic to prevent duplicate idle events within 500ms.
2026-02-10 11:41:45 +09:00
YeonGyu-Kim
44675fb57f fix(atlas): allow boulder continuation for Sisyphus sessions
When boulderState.agent is not explicitly set (defaults to 'atlas'),
allow continuation for sessions where the last agent is 'sisyphus'.
This fixes the issue where boulder continuation was skipped when
Sisyphus took over the conversation after boulder creation.
2026-02-10 11:41:44 +09:00
YeonGyu-Kim
7255fec8b3 test(git-worktree): fix test pollution from incomplete fs mock
Replace mock.module with spyOn + mockRestore to prevent fs module
pollution across test files. mock.module replaces the entire module
and caused 69 test failures in other files that depend on fs.
2026-02-10 11:41:44 +09:00
YeonGyu-Kim
fecc488848 fix(sisyphus-junior): disambiguate blocked delegation tool from allowed task management tools
When task_system is enabled, the prompt said 'task tool: BLOCKED' which
LLMs interpreted as blocking task_create/task_update/task_list/task_get
too. Now the constraints section explicitly separates 'task (agent
delegation tool): BLOCKED' from 'task_create, task_update, ...: ALLOWED'
so Junior no longer refuses to use task management tools.
2026-02-10 11:41:44 +09:00
YeonGyu-Kim
b45af0e4d2 Merge pull request #1703 from nianyi778/add-elestyle-to-loved-by
Add ELESTYLE to 'Loved by professionals at' section
2026-02-10 11:26:40 +09:00
likai
25be4ab905 Add ELESTYLE to 'Loved by professionals at' section 2026-02-10 10:43:09 +09:00
github-actions[bot]
4f03aea0a1 @nianyi778 has signed the CLA in code-yeongyu/oh-my-opencode#1703 2026-02-10 01:41:30 +00:00
YeonGyu-Kim
0565ce839e fix(cli/run): handle session.status idle event in addition to deprecated session.idle 2026-02-09 21:12:11 +09:00
YeonGyu-Kim
bb2df9fec6 fix(cli/run): set default timeout to 30 minutes to match help text 2026-02-09 21:12:00 +09:00
YeonGyu-Kim
564bb20f6a fix(cli/run): move error check before idle/tool gates in pollForCompletion 2026-02-09 21:11:48 +09:00
YeonGyu-Kim
096233b23f fix(config-manager): replace heuristic JSONC editing with jsonc-parser modify/applyEdits 2026-02-09 21:11:40 +09:00
YeonGyu-Kim
7eb67521cb fix(agent-config): pass useTaskSystem to sisyphus-junior when task_system is enabled
sisyphus-junior prompt always used todo-based discipline text regardless of
experimental.task_system setting because the useTaskSystem flag was never
forwarded from agent-config-handler to createSisyphusJuniorAgentWithOverrides.
2026-02-09 21:10:15 +09:00
YeonGyu-Kim
498fda11a0 feat(background-agent): handle "interrupt" in notifications, output, and formatting
Update notification systems to display INTERRUPTED status.

Add interrupt handling to background_output tool (terminal status).

Add interrupt-specific status note to formatTaskStatus.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-02-09 18:26:16 +09:00
YeonGyu-Kim
5b34a98e0a feat(background-agent): use "interrupt" status for promptAsync errors
Change promptAsync catch blocks to set status = "interrupt" instead of "error".

This distinguishes prompt errors from stale timeouts (cancelled) and TTL expirations (error).

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-02-09 18:25:54 +09:00
YeonGyu-Kim
a37259326a feat(background-agent): add "interrupt" to BackgroundTaskStatus type
Add interrupt as a terminal status for background tasks that fail due to promptAsync errors (e.g., prompt exceed, agent not found).

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-02-09 18:25:34 +09:00
YeonGyu-Kim
a5bdb64933 fix(delegation): restore category to sisyphus-junior auto-mapping
Category-based delegation should always route to sisyphus-junior even if
subagent_type is mistakenly provided, matching the original behavior and
preventing accidental bypass of category routing.
2026-02-09 16:14:30 +09:00
YeonGyu-Kim
11f587194f fix(delegation): replace message-count-stability polling with native finish-based completion detection
Sync task completion was fragile — detecting premature stability during
brief idle periods between tool calls. Now mirrors opencode's native
SessionPrompt.loop() logic: checks assistant finish reason is terminal
(not tool-calls/unknown) and assistant.id > user.id.

Also switches sync prompt sender from blocking HTTP (promptSync) to
async fire-and-forget (promptAsync) to avoid JSON parse errors in ACP.
2026-02-09 15:37:19 +09:00
YeonGyu-Kim
20d009964d docs: refresh all 13 hierarchical AGENTS.md files with current codebase state 2026-02-09 14:29:53 +09:00
YeonGyu-Kim
f22f14d9d1 fix(look-at): catch prompt errors gracefully instead of re-throwing
session.prompt() may throw {} or JSON parse errors even when the server
successfully processes the request. Instead of crashing the tool, catch
all errors and proceed to fetch messages — if the response is available,
return it; otherwise return a clean error string.
2026-02-09 14:18:24 +09:00
YeonGyu-Kim
3d5abb950e refactor: enforce modular code rules — split 25+ files, rename catch-all modules, SRP compliance
refactor: enforce modular code architecture (waves 1-2)
2026-02-09 13:39:36 +09:00
YeonGyu-Kim
c71f0aa700 merge: integrate origin/dev (5th merge) — resolve @path skill references in split file structure 2026-02-09 12:08:15 +09:00
YeonGyu-Kim
70ac962fca feat: auto-resolve @path references in skill templates to absolute paths
Skill loaders previously only told agents that @path references are
relative to the skill directory, but agents often failed to resolve
them. Now @path/with/slash patterns are automatically expanded to
absolute paths during template construction.
2026-02-09 12:04:41 +09:00
YeonGyu-Kim
133da2624a fix(config-manager): guard against non-array plugin values in auth-plugins 2026-02-09 12:00:24 +09:00
YeonGyu-Kim
6a91d72a72 fix(agents): remove duplicate category override application in general-agents 2026-02-09 12:00:11 +09:00
YeonGyu-Kim
b0202e23f7 fix(agents): sanitize custom agent names for markdown table safety 2026-02-09 12:00:01 +09:00
YeonGyu-Kim
c4572a25fb fix(config-manager): skip string literals when counting braces in JSONC provider replacement 2026-02-09 11:59:50 +09:00
YeonGyu-Kim
554926209d fix(git-worktree): use Node readFileSync for cross-platform untracked file line counts 2026-02-09 11:45:29 +09:00
YeonGyu-Kim
0e49214ee7 fix(background-agent): rename getCompletedTasks to getNonRunningTasks for semantic accuracy 2026-02-09 11:45:20 +09:00
YeonGyu-Kim
edc3317e37 fix(git-worktree): compute real line counts for untracked files in diff stats 2026-02-09 11:36:35 +09:00
YeonGyu-Kim
7fdba56d8f fix(background-agent): align getCompletedTasks filter with state manager semantics 2026-02-09 11:36:29 +09:00
YeonGyu-Kim
247940bf02 fix: address Cubic background-agent issues — task status filter, array response handling, error mapping, concurrency key, duration fallback, output validation 2026-02-09 11:19:39 +09:00
YeonGyu-Kim
d6fbe7bd8d fix: address Cubic CLI and agent issues — URL encode, JSONC leading comments, config clone, untracked files, parse error handling, cache path, message-dir dedup 2026-02-09 11:17:51 +09:00
YeonGyu-Kim
5ca3d9c489 fix: address remaining Cubic issues — reset lastPartText on new message, TTY guard for installer, filter disabled skills, local-dev version resolution 2026-02-09 11:01:38 +09:00
YeonGyu-Kim
e5abf8702e merge: integrate origin/dev (4th merge) 2026-02-09 10:59:39 +09:00
YeonGyu-Kim
8dd07973a9 Merge pull request #1685 from code-yeongyu/fix/run-completion-race-condition
fix: prevent run completion race condition with consecutive stability checks
2026-02-09 10:58:37 +09:00
YeonGyu-Kim
e55fc1f14c fix: prevent run completion race condition with consecutive stability checks
pollForCompletion exited immediately when session went idle before agent
created TODOs or registered children (0 todos + 0 children = vacuously
complete). Add consecutive stability checks (3x500ms debounce) and
currentTool guard to prevent premature exit.

Extract pollForCompletion to dedicated module for testability.
2026-02-09 10:41:51 +09:00
github-actions[bot]
f07e364171 @mrm007 has signed the CLA in code-yeongyu/oh-my-opencode#1680 2026-02-08 21:41:45 +00:00
github-actions[bot]
e26c355c76 @aliozdenisik has signed the CLA in code-yeongyu/oh-my-opencode#1676 2026-02-08 17:12:45 +00:00
github-actions[bot]
5f9c3262a2 @JunyeongChoi0 has signed the CLA in code-yeongyu/oh-my-opencode#1674 2026-02-08 16:02:43 +00:00
github-actions[bot]
9d726d91fc release: v3.4.0 v3.4.0 2026-02-08 15:44:17 +00:00
YeonGyu-Kim
a1d7f9e822 fix: guard against missing brace in JSONC provider replacement 2026-02-08 22:43:02 +09:00
YeonGyu-Kim
06d265c1de fix: use brace-depth matching for JSONC provider replacement instead of fragile regex 2026-02-08 22:38:51 +09:00