Skip to content

Conversation

@code-yeongyu
Copy link
Owner

@code-yeongyu code-yeongyu commented Jan 8, 2026

code-yeongyu and others added 30 commits January 8, 2026 23:05
Setting concurrency to 0 means unlimited (Infinity).
Works for defaultConcurrency, providerConcurrency, and modelConcurrency.

🤖 Generated with [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)
- executor.ts: Added `auto: true` to summarize body, removed subsequent prompt_async call
- preemptive-compaction/index.ts: Added `auto: true` to summarize body, removed subsequent promptAsync call
- executor.test.ts: Updated test expectation to include `auto: true`

Instead of sending 'Continue' prompt after compaction, use SessionCompaction's `auto: true` feature which auto-resumes the session.

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)
Update Sisyphus agent orchestrator with latest changes.

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)
Update background agent manager with latest configuration changes.

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)
Update initialization template with latest configuration.

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)
Update hook constants and configuration across agent-usage-reminder, keyword-detector, and claude-code-hooks.

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)
Remove background-task tool module completely:
- src/tools/background-task/constants.ts
- src/tools/background-task/index.ts
- src/tools/background-task/tools.ts
- src/tools/background-task/types.ts

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)
Update tool index exports and main plugin entry point after background-task tool removal.

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)
…dpoints)

- Changed ANTIGRAVITY_TOKEN_REFRESH_BUFFER_MS from 60,000ms (1min) to 3,000,000ms (50min)
- Removed autopush endpoint from ANTIGRAVITY_ENDPOINT_FALLBACKS (now 2 endpoints: daily → prod)
- Added comprehensive test suite with 6 tests covering all updated constants
- Updated comments to reflect CLIProxyAPI parity

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)
Add port fallback logic to OAuth callback server:
- Try port 51121 (ANTIGRAVITY_CALLBACK_PORT) first
- Fallback to OS-assigned port on EADDRINUSE
- Add redirectUri property to CallbackServerHandle
- Return actual bound port in handle.port

Add comprehensive port handling tests (5 new tests):
- Should prefer port 51121
- Should return actual bound port
- Should fallback when port occupied
- Should cleanup and release port on close
- Should provide redirect URI with actual port

All 16 tests passing (11 existing + 5 new).

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)
Add prometheus-prompt.ts with comprehensive planner agent system prompt.
Update plan-prompt.ts with streamlined Prometheus workflow including:
- Context gathering via explore/librarian agents
- Metis integration for AI slop guardrails
- Structured plan output format

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)
Add Metis agent for pre-planning analysis that identifies:
- Hidden requirements and implicit constraints
- AI failure points and common mistakes
- Clarifying questions before planning begins

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)
Add Momus agent for rigorous plan review against:
- Clarity and verifiability standards
- Completeness checks
- AI slop detection

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)
Add Sisyphus-Junior agent for focused task execution:
- Same discipline as Sisyphus, no delegation capability
- Used for category-based task spawning via sisyphus_task tool

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)
Add orchestrator-sisyphus agent for complex workflow orchestration:
- Manages multi-agent workflows
- Coordinates between specialized agents
- Handles start-work command execution

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)
Add resolveMultipleSkills() for resolving skill content to prepend to agent prompts.
Includes test coverage for resolution logic.

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)
Extend buildAgent() to support:
- category: inherit model/temperature from DEFAULT_CATEGORIES
- skills: prepend resolved skill content to agent prompt

Includes comprehensive test coverage for new functionality.

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)
- Export Metis, Momus, orchestrator-sisyphus in builtinAgents
- Add new agent names to BuiltinAgentName type
- Update AGENTS.md documentation with new agents

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)
Add boulder-state feature for persisting workflow state:
- storage.ts: File I/O operations for state persistence
- types.ts: State interfaces
- Includes test coverage

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)
Add frontend-ui-ux skill for designer-turned-developer UI work:
- SKILL.md with comprehensive design principles
- skills.ts updated with skill template

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)
Add sisyphus_task tool supporting:
- Category-based task delegation (visual, business-logic, etc.)
- Direct agent targeting
- Background execution with resume capability
- DEFAULT_CATEGORIES configuration

Includes test coverage.

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)
- Add resume() method for continuing existing agent sessions
- Add model field to BackgroundTask and LaunchInput types
- Update launch() to pass model to session.prompt()
- Comprehensive test coverage for resume functionality

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)
Add hook for injecting task resume information into tool outputs.
Enables seamless continuation of background agent sessions.

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)
Add hook that restricts Prometheus planner to writing only .md files
in the .sisyphus/ directory. Prevents planners from implementing.
Includes test coverage.

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)
Add hook for detecting /start-work command and triggering
orchestrator-sisyphus agent for plan execution.
Includes test coverage.

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)
Add hook for orchestrating Sisyphus agent workflows:
- Coordinates task execution between agents
- Manages workflow state persistence
- Handles agent handoffs

Includes comprehensive test coverage.

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)
…nching

- Add optional skillContent field to LaunchInput type
- Implement buildSystemContent utility to combine skill and category prompts
- Update BackgroundManager to pass skillContent as system parameter
- Add comprehensive tests for skillContent optionality and buildSystemContent logic

🤖 Generated with assistance of oh-my-opencode
This reverts commit 6dbc4c095badd400e024510554a42a0dc018ae42.
…eminder format

- Auto-select when only one incomplete plan exists among multiple
- Wrap multiple plans message in <system-reminder> tag
- Change prompt to 'ask user' style for agent guidance
- Add 'All Plans Complete' state handling
- Add validation for skills parameter (must be provided, use [] if empty)
- Update schema to remove .optional()
- Update type definition to make skills non-optional
- Fix existing tests to include skills parameter
- background-agent: use only parentModel, remove prevMessage fallback
- todo-continuation: don't pass model to preserve session's lastModel
- Remove unused imports (findNearestMessageWithFields, fs, path)

Root cause: session.prompt with model param changes session's lastModel
…ssion

- session.prompt() changes the active session, causing UI model switch
- Switch to promptAsync + polling to avoid main session state change
- Matches background-agent pattern for consistency
…ntext in background tasks

- Add parentAgent field to BackgroundTask, LaunchInput, and ResumeInput interfaces
- Pass parentAgent through background task manager to preserve agent identity
- Update sisyphus-orchestrator to set orchestrator-sisyphus agent context
- Add session tracking for background agents to prevent context loss
- Propagate agent context in background-task and sisyphus-task tools

This ensures background/subagent spawned tasks maintain proper agent context for notifications and continuity.

🤖 Generated with assistance of oh-my-opencode
Remove decodeState import and update OAuth flow to use simple state
string comparison for CSRF protection instead of PKCE verifier.
Update exchangeCode calls to match new signature (code, redirectUri,
clientId, clientSecret).
… lookup

findNearestMessageWithFields now has a fallback pass that returns
messages with ANY useful field (agent OR model) instead of requiring
ALL fields. This prevents parentAgent from being lost when stored
messages don't have complete model info.
Background task notifications were showing 'build' agent instead of the
actual parent agent (e.g., 'Sisyphus'). The hook-injected message storage
only contains limited info; the actual agent name is in the SDK session.

Changes:
- Add getParentAgentFromSdk() to query SDK messages API
- Look up agent from SDK first, fallback to hook-injected messages
- Ensures background tasks correctly preserve parent agent context
The tool context already provides the agent name via ctx.agent.
The previous SDK session.messages lookup was completely wrong -
SDK messages don't store agent info per message.

Removes useless getParentAgentFromSdk function.
…iles

Prometheus (Planner) can now write .md files anywhere, not just .sisyphus/.
Still blocks non-.md files (code) to enforce read-only planning for code.

This allows planners to write commentary and analysis in markdown format.
Momus was rejecting inputs with bracket-style directives like [analyze-mode]
and [SYSTEM DIRECTIVE...] because it only recognized XML-style tags.

Now accepts:
- XML tags: <system-reminder>, <context>, etc.
- Bracket blocks: [analyze-mode], [SYSTEM DIRECTIVE...], [SYSTEM REMINDER...], etc.
…it outside .sisyphus

- Add ORCHESTRATOR_DELEGATION_REQUIRED strong warning in tool.execute.before
- Fix tool.execute.after filePath detection using pendingFilePaths Map
- before stores filePath by callID, after retrieves and deletes it
- Fixes bug where output.metadata.filePath was undefined
- constants.test.ts: Update endpoint count (2→3) and token buffer (50min→60sec)
- token.test.ts: Update expiry tests to use 60-second buffer
- sisyphus-orchestrator: Add fallback to output.metadata.filePath when callID missing
Copy link

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Greptile Overview

Greptile Summary

This PR introduces a comprehensive orchestration system called "THE ORCHESTRATOR" that implements separation of planning and execution through multiple specialized agents and infrastructure components.

Major Changes:

  • New Planning Agents: Prometheus (planner), Metis (pre-planning consultant), and Momus (plan reviewer) implement a three-stage planning workflow with interview mode, requirements gathering, and validation
  • New Orchestrator Agent: orchestrator-sisyphus (1481 lines) delegates work via sisyphus_task tool, enforcing verification and parallel execution patterns
  • Category System: Introduces domain-specific task delegation with pre-configured categories (visual-engineering, ultrabrain, artistry, quick, most-capable, writing, general) that spawn Sisyphus-Junior-{category} agents with optimized model configs
  • Boulder State Management: New .sisyphus/boulder.json file tracks active work plans, session IDs, and progress across multiple sessions
  • New Hooks: sisyphus-orchestrator enforces delegation patterns, start-work initializes work sessions, prometheus-md-only restricts planner to markdown-only writes
  • Git Master Skill: Comprehensive 1132-line git skill for atomic commits, rebase/squash, and history search
  • Infrastructure: Task toast manager for UI notifications, enhanced background agent management, category configuration schema

Architecture: The system separates planning (Prometheus creates .sisyphus/plans/*.md) from execution (Sisyphus reads plans and delegates via sisyphus_task). The boulder state provides persistence across sessions, enabling work resumption.

Testing: Comprehensive test coverage added including 430+ lines of tests for sisyphus-task tool, 829 lines for sisyphus-orchestrator hook, 298 lines for prometheus-md-only hook, and extensive coverage for boulder-state, task-toast-manager, and other new features.

Confidence Score: 4/5

  • Safe to merge with minor considerations - comprehensive implementation with extensive testing, but watch for edge cases in complex orchestration flows
  • Score of 4 reflects: (1) Massive feature addition (13,767 insertions) is well-structured with clear separation of concerns, (2) Comprehensive test coverage across all new major components (tests for sisyphus-task, hooks, boulder-state, etc.), (3) TDD approach followed as evidenced by test files, (4) Consistent with AGENTS.md style guide, (5) Minor concerns: complexity of orchestration system may have edge cases in error handling and session management that could emerge in production, and the large prompt files (1481 lines, 982 lines) may need fine-tuning based on real-world usage
  • Pay close attention to src/tools/sisyphus-task/tools.ts for session polling logic and error handling, src/hooks/sisyphus-orchestrator/index.ts for abort error detection, and ensure boulder state synchronization works correctly across concurrent sessions

Important Files Changed

File Analysis

Filename Score Overview
src/agents/orchestrator-sisyphus.ts 5/5 New orchestrator agent with extensive 1481-line prompt implementing delegation-based workflow via sisyphus_task. Includes comprehensive guidance for task management, verification, and parallel execution.
src/agents/prometheus-prompt.ts 5/5 New 982-line planning agent prompt that operates in interview/consultant mode, gathering requirements before generating work plans. Enforces read-only constraint except for .sisyphus/*.md files.
src/tools/sisyphus-task/tools.ts 4/5 New tool (493 lines) implementing category-based and agent-based task delegation. Handles synchronous and background execution, skill injection, session management, and result polling.
src/hooks/sisyphus-orchestrator/index.ts 4/5 New hook (660 lines) that enforces orchestrator behavior by injecting verification reminders, delegation warnings for direct file modifications, and boulder continuation prompts for incomplete plans.
src/features/boulder-state/storage.ts 5/5 New state management module (150 lines) for tracking active work plans via boulder.json. Handles plan progress calculation, session tracking, and Prometheus plan discovery.
src/config/schema.ts 4/5 Updated with CategoryConfig schema, renamed Planner-Sisyphus to Prometheus (Planner), added Metis agent, new builtin skills (frontend-ui-ux, git-master), and new hooks (prometheus-md-only, start-work, sisyphus-orchestrator).
docs/orchestration-guide.md 5/5 New comprehensive guide (132 lines) explaining separation of planning and execution, agent roles (Prometheus, Metis, Momus, Sisyphus), workflow phases, and configuration.
README.md 5/5 Added sisyphus_task tool documentation, categories section with visual/business-logic defaults, git-master skill with configuration options, and updated Sisyphus agent documentation with Prometheus/Metis agents.

Sequence Diagram

sequenceDiagram
    participant User
    participant Prometheus as Prometheus (Planner)
    participant Metis as Metis (Consultant)
    participant Momus as Momus (Reviewer)
    participant StartWork as /start-work Hook
    participant Boulder as Boulder State
    participant Sisyphus as Orchestrator-Sisyphus
    participant SisyphusTask as sisyphus_task Tool
    participant Junior as Sisyphus-Junior-{category}
    participant SpecializedAgent as Specialized Agent

    Note over User,Prometheus: Phase 1: Planning (Interview Mode)
    User->>Prometheus: Request feature/refactor
    activate Prometheus
    Prometheus->>Prometheus: Classify intent (refactor/build/etc)
    Prometheus->>Metis: Consult for hidden requirements
    activate Metis
    Metis-->>Prometheus: Analysis + clarifying questions
    deactivate Metis
    Prometheus->>User: Ask clarifying questions
    User->>Prometheus: Provide answers
    Prometheus->>Prometheus: Update draft in .sisyphus/drafts/
    User->>Prometheus: "Make it into a work plan"
    
    opt High Accuracy Mode
        Prometheus->>Momus: Review draft plan
        activate Momus
        Momus-->>Prometheus: Critique + required changes
        deactivate Momus
        Prometheus->>Prometheus: Refine plan
    end
    
    Prometheus->>Prometheus: Write plan to .sisyphus/plans/{name}.md
    Prometheus-->>User: Plan ready - use /start-work
    deactivate Prometheus

    Note over User,Boulder: Phase 2: Execution Initialization
    User->>StartWork: Run /start-work command
    activate StartWork
    StartWork->>Boulder: Check for existing boulder.json
    
    alt No active plan
        StartWork->>StartWork: Find plans in .sisyphus/plans/
        StartWork->>Boulder: Create boulder.json with plan path
    else Active plan exists
        StartWork->>Boulder: Append session ID
    end
    
    StartWork-->>User: Boulder initialized
    deactivate StartWork

    Note over User,Sisyphus: Phase 3: Orchestrated Execution
    User->>Sisyphus: Continue work
    activate Sisyphus
    Sisyphus->>Boulder: Read active plan
    Sisyphus->>Sisyphus: Parse unchecked TODOs
    
    loop For each task
        Sisyphus->>Sisyphus: Select category or agent
        Sisyphus->>SisyphusTask: Delegate via sisyphus_task
        activate SisyphusTask
        
        alt Category-based delegation
            SisyphusTask->>Junior: Create Sisyphus-Junior-{category}
            activate Junior
            Junior->>Junior: Execute task with category config
            Junior-->>SisyphusTask: Return result
            deactivate Junior
        else Agent-based delegation
            SisyphusTask->>SpecializedAgent: Call specific agent (oracle/explore/etc)
            activate SpecializedAgent
            SpecializedAgent->>SpecializedAgent: Execute specialized task
            SpecializedAgent-->>SisyphusTask: Return result
            deactivate SpecializedAgent
        end
        
        SisyphusTask-->>Sisyphus: Task completed
        deactivate SisyphusTask
        
        Sisyphus->>Sisyphus: Verify results (lsp_diagnostics, tests)
        Sisyphus->>Sisyphus: Mark task [x] in plan
        Sisyphus->>Boulder: Update progress
    end
    
    Sisyphus-->>User: All tasks complete
    deactivate Sisyphus
Loading

@code-yeongyu code-yeongyu merged commit 768ecd9 into dev Jan 8, 2026
3 checks passed
@code-yeongyu code-yeongyu deleted the the-orchestrator branch January 8, 2026 17:24
Copy link

@cubic-dev-ai cubic-dev-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

31 issues found across 92 files

Confidence score: 1/5

  • src/auth/antigravity/oauth.ts drops PKCE from a native OAuth flow, creating a high-likelihood credential interception vulnerability and violating RFC 9700 requirements for public clients.
  • sisyphus_task integrations in src/agents/plan-prompt.ts and src/features/builtin-commands/templates/init-deep.ts omit the correct tool name and required parameters, so related commands will fail to execute at runtime.
  • Pay close attention to src/auth/antigravity/oauth.ts, src/agents/plan-prompt.ts, src/features/builtin-commands/templates/init-deep.ts - restore PKCE and fix sisyphus_task usage before merging.

Note: This PR contains a large number of files. cubic only reviews up to 75 files per PR, so some files may not have been reviewed.

Prompt for AI agents (all issues)

Check if these issues are valid — if so, understand the root cause of each and fix them.


<file name="src/agents/utils.test.ts">

<violation number="1" location="src/agents/utils.test.ts:150">
P2: Test name claims to test "multiple skills" but only provides a single skill in the test data. Consider renaming the test to match what it actually tests, or add multiple valid skills to properly test the claimed behavior.</violation>
</file>

<file name="src/agents/AGENTS.md">

<violation number="1" location="src/agents/AGENTS.md:13">
P1: Incorrect model information for librarian agent. Documentation claims "Claude Sonnet 4.5" but actual default model is "opencode/glm-4.7-free".</violation>

<violation number="2" location="src/agents/AGENTS.md:31">
P1: Incorrect model in AGENT MODELS table. Librarian's actual default model is "opencode/glm-4.7-free", not "anthropic/claude-sonnet-4-5".</violation>
</file>

<file name="src/auth/antigravity/oauth.ts">

<violation number="1" location="src/auth/antigravity/oauth.ts:47">
P2: `projectId` is now unused in `buildAuthURL()`. If callers rely on round-tripping project context through the OAuth redirect, this will break that behavior. Either remove `projectId` from the API (and update call sites) or reintroduce a way to carry it (e.g., encode it into state).</violation>

<violation number="2" location="src/auth/antigravity/oauth.ts:56">
P0: Critical security regression: Removing PKCE from OAuth 2.0 flow for a native/CLI application. PKCE protects against authorization code interception attacks and is required for public clients per RFC 9700. Since this is a CLI app (uses localhost callback server), it's a public client and PKCE should be preserved. The `code_challenge` and `code_challenge_method` params should be added back to the authorization URL, and `code_verifier` should be sent during token exchange.</violation>

<violation number="3" location="src/auth/antigravity/oauth.ts:276">
P3: Use `serverHandle.redirectUri` instead of rebuilding the redirect URI from `serverHandle.port` to avoid duplication/drift.</violation>
</file>

<file name="src/features/boulder-state/storage.ts">

<violation number="1" location="src/features/boulder-state/storage.ts:93">
P2: Calling `statSync` inside the sort comparator is inefficient. For N files, this results in O(N log N) * 2 stat calls instead of O(N). Consider caching the mtime values before sorting.</violation>

<violation number="2" location="src/features/boulder-state/storage.ts:114">
P2: Regex pattern won't match indented checkboxes like `  - [ ] subtask`. Consider using `^\s*[-*]\s*\[\s*\]` to allow leading whitespace.</violation>
</file>

<file name="src/cli/config-manager.ts">

<violation number="1" location="src/cli/config-manager.ts:316">
P2: Model names missing required `antigravity-` prefix. Per the documented convention in this file (line 514), Gemini model names MUST use the `antigravity-` prefix for stability. The agents section correctly uses it, but the categories section uses the legacy naming convention which "may break in future".</violation>
</file>

<file name="src/features/opencode-skill-loader/skill-content.ts">

<violation number="1" location="src/features/opencode-skill-loader/skill-content.ts:21">
P2: Truthy check `if (template)` fails for empty string templates. A skill with an empty template (`""`) would be incorrectly reported as not found. Use `template !== undefined` or `skillMap.has(name)` instead.</violation>
</file>

<file name="src/features/context-injector/injector.ts">

<violation number="1" location="src/features/context-injector/injector.ts:127">
P1: If no text part is found, the function returns early but the pending context has already been consumed (and cleared) from the collector. This causes the context to be permanently lost. The text part check should happen BEFORE calling `collector.consume(sessionID)`.</violation>
</file>

<file name="src/agents/sisyphus-junior.ts">

<violation number="1" location="src/agents/sisyphus-junior.ts:88">
P1: Security issue: On older OpenCode versions, `categoryConfig.tools` can completely override `BLOCKED_TOOLS`. The blocked tools (`task`, `sisyphus_task`, `call_omo_agent`) should always take precedence. Reverse the spread order so base restrictions are applied last.</violation>
</file>

<file name="src/features/opencode-skill-loader/skill-content.test.ts">

<violation number="1" location="src/features/opencode-skill-loader/skill-content.test.ts:99">
P2: Test doesn't verify what it claims. The test name says 'preserve skill order in resolved map' but assertions only check key existence via `has()`, not actual iteration order. To verify Map order preservation, check `Array.from(result.resolved.keys())` matches the input order.</violation>
</file>

<file name="src/hooks/start-work/index.ts">

<violation number="1" location="src/hooks/start-work/index.ts:118">
P2: Using `require("node:fs")` inside a loop is inefficient and inconsistent with the ES module imports at the top of the file. Additionally, `statSync(p)` can throw if the file is inaccessible, which could crash the hook session. Import `fs` at the top and wrap file operations in try/catch.</violation>
</file>

<file name="docs/category-skill-guide.md">

<violation number="1" location="docs/category-skill-guide.md:22">
P2: Model names in the "Optimal Model" column use simplified format without provider prefixes and version suffixes, which doesn't match the actual configuration format. This could confuse users who might try to use these short names when configuring categories.

For example:
- Shows `gemini-3-pro` but should indicate `google/gemini-3-pro-preview`
- Shows `claude-haiku` but should indicate `anthropic/claude-haiku-4-5`
- Shows `claude-opus` but should indicate `anthropic/claude-opus-4-5`

Consider either:
1. Using full model identifiers in the table for accuracy
2. Adding a note that these are simplified names and showing the mapping to full identifiers
3. Using a "Model Family" column header to indicate these are simplified representations</violation>
</file>

<file name="docs/cli-guide.md">

<violation number="1" location="docs/cli-guide.md:9">
P1: Document incorrect `auth` subcommands. The implementation only has `list` and `remove`, not `login`, `logout`, or `status`.</violation>

<violation number="2" location="docs/cli-guide.md:50">
P1: Document incorrect `run` command options. The `--enforce-completion` option doesn't exist, and `--timeout` takes milliseconds, not seconds. Missing `-a/--agent` and `-d/--directory` options.</violation>

<violation number="3" location="docs/cli-guide.md:250">
P1: TypeScript example uses incorrect type name (`DoctorCheck` instead of `CheckDefinition`), wrong structure, and invalid category "environment". The example won't compile.</violation>
</file>

<file name="src/features/boulder-state/constants.ts">

<violation number="1" location="src/features/boulder-state/constants.ts:13">
P2: Hardcoded parent directory path violates DRY principle. Use BOULDER_DIR constant for consistency with BOULDER_STATE_PATH and NOTEPAD_BASE_PATH patterns.</violation>
</file>

<file name="src/agents/utils.ts">

<violation number="1" location="src/agents/utils.ts:51">
P2: Function mutates input when source is not a factory. When `source` is a direct `AgentConfig` object (not a factory), `base` references the original object and subsequent assignments mutate it. This could cause unexpected behavior if `createBuiltinAgents` is called multiple times. Create a shallow copy for non-factory sources.</violation>
</file>

<file name="src/features/builtin-skills/git-master/SKILL.md">

<violation number="1" location="src/features/builtin-skills/git-master/SKILL.md:230">
P0: The minimum commit formula contradicts the CORE PRINCIPLE hard rules. For 3 files, the formula allows 1 commit but the hard rule mandates 2+ commits (NO EXCEPTIONS). For 5 files, the formula allows 2 commits but the hard rule mandates 3+ commits. This inconsistency will cause the agent to produce incorrect behavior.</violation>
</file>

<file name="src/features/hook-message-injector/types.ts">

<violation number="1" location="src/features/hook-message-injector/types.ts:1">
P1: Mixing boolean and string literals in ToolPermission creates truthiness bugs. The string "deny" is truthy, so `if (tools[name])` incorrectly evaluates to true for denied permissions. Use separate types for boolean vs string formats like the rest of the codebase (see permission-compat.ts).</violation>
</file>

<file name="src/agents/plan-prompt.ts">

<violation number="1" location="src/agents/plan-prompt.ts:5">
P2: Removal of user dialogue capability. Agent will now make assumptions instead of asking clarifying questions, potentially leading to plans based on incorrect understanding of requirements.</violation>

<violation number="2" location="src/agents/plan-prompt.ts:73">
P0: Incorrect tool name `Task` used. Should be `sisyphus_task` with required parameters `run_in_background` and `skills`.</violation>
</file>

<file name="src/features/builtin-commands/types.ts">

<violation number="1" location="src/features/builtin-commands/types.ts:3">
P1: Adding "start-work" to BuiltinCommandName creates/perpetuates a type definition conflict. The same type exists in src/config/schema.ts with only ["init-deep", "start-work"], missing "ralph-loop", "cancel-ralph", and "refactor". Update BuiltinCommandNameSchema in src/config/schema.ts to include all 5 commands to maintain consistency.</violation>
</file>

<file name="src/hooks/sisyphus-orchestrator/index.ts">

<violation number="1" location="src/hooks/sisyphus-orchestrator/index.ts:255">
P2: Empty catch block silently swallows all errors from git commands. Consider logging the error for debugging purposes, especially since this involves external command execution.</violation>
</file>

<file name="src/hooks/index.ts">

<violation number="1" location="src/hooks/index.ts:31">
P2: Missing type export for SisyphusOrchestratorHookOptions. This interface is used as a parameter in createSisyphusOrchestratorHook and should be re-exported to match the pattern of other hooks like SessionRecoveryHook and PreemptiveCompactionOptions.</violation>
</file>

<file name="README.md">

<violation number="1" location="README.md:1065">
P0: Categories section documents non-existent category names (`visual`, `business-logic`) that don't match the actual implementation. The code defines 7 categories with different names: `visual-engineering`, `ultrabrain`, `artistry`, `quick`, `most-capable`, `writing`, `general`. Usage examples will fail with "Unknown category" errors.</violation>

<violation number="2" location="README.md:1091">
P2: Custom categories example shows overriding `visual` but the actual default category is `visual-engineering`. This example misleadingly suggests overriding a non-existent default category instead of the actual one, causing confusion about category naming.</violation>
</file>

<file name="src/features/builtin-commands/templates/init-deep.ts">

<violation number="1" location="src/features/builtin-commands/templates/init-deep.ts:48">
P0: Missing required parameters for sisyphus_task. The sisyphus_task tool requires run_in_background (boolean) and skills (array) parameters that are missing from this call.</violation>
</file>

<file name="src/features/background-agent/manager.ts">

<violation number="1" location="src/features/background-agent/manager.ts:228">
P1: The `resume` method doesn't acquire concurrency, but `notifyParentSession` (called on both error and success paths) will attempt to release `task.concurrencyKey`. This causes concurrency tracking issues - either a double-release if concurrency was previously released, or releasing without acquiring. Consider acquiring concurrency at the start of `resume` if `existingTask.concurrencyKey` exists, similar to how `launch` does.</violation>
</file>

Reply with feedback, questions, or to request a fix. Tag @cubic-dev-ai to re-run a review.

url.searchParams.set("state", encodeState(state))
url.searchParams.set("code_challenge", pkce.challenge)
url.searchParams.set("code_challenge_method", "S256")
url.searchParams.set("state", state)
Copy link

@cubic-dev-ai cubic-dev-ai bot Jan 8, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P0: Critical security regression: Removing PKCE from OAuth 2.0 flow for a native/CLI application. PKCE protects against authorization code interception attacks and is required for public clients per RFC 9700. Since this is a CLI app (uses localhost callback server), it's a public client and PKCE should be preserved. The code_challenge and code_challenge_method params should be added back to the authorization URL, and code_verifier should be sent during token exchange.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At src/auth/antigravity/oauth.ts, line 56:

<comment>Critical security regression: Removing PKCE from OAuth 2.0 flow for a native/CLI application. PKCE protects against authorization code interception attacks and is required for public clients per RFC 9700. Since this is a CLI app (uses localhost callback server), it's a public client and PKCE should be preserved. The `code_challenge` and `code_challenge_method` params should be added back to the authorization URL, and `code_verifier` should be sent during token exchange.</comment>

<file context>
@@ -136,42 +53,37 @@ export async function buildAuthURL(
-  url.searchParams.set("state", encodeState(state))
-  url.searchParams.set("code_challenge", pkce.challenge)
-  url.searchParams.set("code_challenge_method", "S256")
+  url.searchParams.set("state", state)
   url.searchParams.set("access_type", "offline")
   url.searchParams.set("prompt", "consent")
</file context>
Fix with Cubic

```
FORMULA: min_commits = ceil(file_count / 3)
3 files -> min 1 commit
Copy link

@cubic-dev-ai cubic-dev-ai bot Jan 8, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P0: The minimum commit formula contradicts the CORE PRINCIPLE hard rules. For 3 files, the formula allows 1 commit but the hard rule mandates 2+ commits (NO EXCEPTIONS). For 5 files, the formula allows 2 commits but the hard rule mandates 3+ commits. This inconsistency will cause the agent to produce incorrect behavior.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At src/features/builtin-skills/git-master/SKILL.md, line 230:

<comment>The minimum commit formula contradicts the CORE PRINCIPLE hard rules. For 3 files, the formula allows 1 commit but the hard rule mandates 2+ commits (NO EXCEPTIONS). For 5 files, the formula allows 2 commits but the hard rule mandates 3+ commits. This inconsistency will cause the agent to produce incorrect behavior.</comment>

<file context>
@@ -0,0 +1,1132 @@
+```
+FORMULA: min_commits = ceil(file_count / 3)
+
+ 3 files -> min 1 commit
+ 5 files -> min 2 commits
+ 9 files -> min 3 commits
</file context>
Fix with Cubic

Call \`Metis (Plan Consultant)\` with gathered context to identify guardrails:
\`\`\`
Task(
Copy link

@cubic-dev-ai cubic-dev-ai bot Jan 8, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P0: Incorrect tool name Task used. Should be sisyphus_task with required parameters run_in_background and skills.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At src/agents/plan-prompt.ts, line 73:

<comment>Incorrect tool name `Task` used. Should be `sisyphus_task` with required parameters `run_in_background` and `skills`.</comment>

<file context>
@@ -1,37 +1,111 @@
+Call \`Metis (Plan Consultant)\` with gathered context to identify guardrails:
+
+\`\`\`
+Task(
+  subagent_type="Metis (Plan Consultant)",
+  prompt="Based on this context, identify AI slop guardrails:
</file context>
Fix with Cubic

Comment on lines +1065 to +1066
| `visual` | `google/gemini-3-pro-preview` | Frontend, UI/UX, design-focused tasks. High creativity (temp 0.7). |
| `business-logic` | `openai/gpt-5.2` | Backend logic, architecture, strategic reasoning. Low creativity (temp 0.1). |
Copy link

@cubic-dev-ai cubic-dev-ai bot Jan 8, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P0: Categories section documents non-existent category names (visual, business-logic) that don't match the actual implementation. The code defines 7 categories with different names: visual-engineering, ultrabrain, artistry, quick, most-capable, writing, general. Usage examples will fail with "Unknown category" errors.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At README.md, line 1065:

<comment>Categories section documents non-existent category names (`visual`, `business-logic`) that don't match the actual implementation. The code defines 7 categories with different names: `visual-engineering`, `ultrabrain`, `artistry`, `quick`, `most-capable`, `writing`, `general`. Usage examples will fail with "Unknown category" errors.</comment>

<file context>
@@ -1029,6 +1054,50 @@ Configure concurrency limits for background agent tasks. This controls how many
+
+| Category | Model | Description |
+|----------|-------|-------------|
+| `visual` | `google/gemini-3-pro-preview` | Frontend, UI/UX, design-focused tasks. High creativity (temp 0.7). |
+| `business-logic` | `openai/gpt-5.2` | Backend logic, architecture, strategic reasoning. Low creativity (temp 0.1). |
+
</file context>
Suggested change
| `visual` | `google/gemini-3-pro-preview` | Frontend, UI/UX, design-focused tasks. High creativity (temp 0.7). |
| `business-logic` | `openai/gpt-5.2` | Backend logic, architecture, strategic reasoning. Low creativity (temp 0.1). |
| `visual-engineering` | `google/gemini-3-pro-preview` | Frontend, UI/UX, design, styling, animation. High creativity (temp 0.7). |
| `ultrabrain` | `openai/gpt-5.2` | Strict architecture design, very complex business logic. Low creativity (temp 0.1). |
| `artistry` | `google/gemini-3-pro-preview` | Highly creative/artistic tasks, novel ideas. Very high creativity (temp 0.9). |
| `quick` | `anthropic/claude-haiku-4-5` | Cheap & fast - small tasks with minimal overhead, budget-friendly. Medium creativity (temp 0.3). |
| `most-capable` | `anthropic/claude-opus-4-5` | Complex tasks requiring maximum capability. Low creativity (temp 0.1). |
| `writing` | `google/gemini-3-flash-preview` | Documentation, prose, technical writing. Medium creativity (temp 0.5). |
| `general` | `anthropic/claude-sonnet-4-5` | General purpose tasks. Medium creativity (temp 0.3). |
Fix with Cubic

background_task(agent="explore", prompt="Anti-patterns: FIND 'DO NOT', 'NEVER', 'ALWAYS', 'DEPRECATED' comments → LIST forbidden patterns")
background_task(agent="explore", prompt="Build/CI: FIND .github/workflows, Makefile → REPORT non-standard patterns")
background_task(agent="explore", prompt="Test patterns: FIND test configs, test structure → REPORT unique conventions")
sisyphus_task(agent="explore", prompt="Project structure: PREDICT standard patterns for detected language → REPORT deviations only")
Copy link

@cubic-dev-ai cubic-dev-ai bot Jan 8, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P0: Missing required parameters for sisyphus_task. The sisyphus_task tool requires run_in_background (boolean) and skills (array) parameters that are missing from this call.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At src/features/builtin-commands/templates/init-deep.ts, line 48:

<comment>Missing required parameters for sisyphus_task. The sisyphus_task tool requires run_in_background (boolean) and skills (array) parameters that are missing from this call.</comment>

<file context>
@@ -45,12 +45,12 @@ Don't wait—these run async while main session works.
-background_task(agent="explore", prompt="Anti-patterns: FIND 'DO NOT', 'NEVER', 'ALWAYS', 'DEPRECATED' comments → LIST forbidden patterns")
-background_task(agent="explore", prompt="Build/CI: FIND .github/workflows, Makefile → REPORT non-standard patterns")
-background_task(agent="explore", prompt="Test patterns: FIND test configs, test structure → REPORT unique conventions")
+sisyphus_task(agent="explore", prompt="Project structure: PREDICT standard patterns for detected language → REPORT deviations only")
+sisyphus_task(agent="explore", prompt="Entry points: FIND main files → REPORT non-standard organization")
+sisyphus_task(agent="explore", prompt="Conventions: FIND config files (.eslintrc, pyproject.toml, .editorconfig) → REPORT project-specific rules")
</file context>
Suggested change
sisyphus_task(agent="explore", prompt="Project structure: PREDICT standard patterns for detected language → REPORT deviations only")
sisyphus_task(agent="explore", prompt="Project structure: PREDICT standard patterns for detected language → REPORT deviations only", run_in_background=true, skills=[])
Fix with Cubic

* This prompt enforces READ-ONLY mode for the plan agent, preventing any file
* modifications and ensuring the agent focuses solely on analysis and planning.
* A streamlined planner that:
* - SKIPS user dialogue/Q&A (no user questioning)
Copy link

@cubic-dev-ai cubic-dev-ai bot Jan 8, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: Removal of user dialogue capability. Agent will now make assumptions instead of asking clarifying questions, potentially leading to plans based on incorrect understanding of requirements.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At src/agents/plan-prompt.ts, line 5:

<comment>Removal of user dialogue capability. Agent will now make assumptions instead of asking clarifying questions, potentially leading to plans based on incorrect understanding of requirements.</comment>

<file context>
@@ -1,37 +1,111 @@
- * This prompt enforces READ-ONLY mode for the plan agent, preventing any file
- * modifications and ensuring the agent focuses solely on analysis and planning.
+ * A streamlined planner that:
+ * - SKIPS user dialogue/Q&A (no user questioning)
+ * - KEEPS context gathering via explore/librarian agents
+ * - Uses Metis ONLY for AI slop guardrails
</file context>
Fix with Cubic

}

return stats
} catch {
Copy link

@cubic-dev-ai cubic-dev-ai bot Jan 8, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: Empty catch block silently swallows all errors from git commands. Consider logging the error for debugging purposes, especially since this involves external command execution.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At src/hooks/sisyphus-orchestrator/index.ts, line 255:

<comment>Empty catch block silently swallows all errors from git commands. Consider logging the error for debugging purposes, especially since this involves external command execution.</comment>

<file context>
@@ -0,0 +1,660 @@
+    }
+
+    return stats
+  } catch {
+    return []
+  }
</file context>
Fix with Cubic

export { createPrometheusMdOnlyHook } from "./prometheus-md-only";
export { createTaskResumeInfoHook } from "./task-resume-info";
export { createStartWorkHook } from "./start-work";
export { createSisyphusOrchestratorHook } from "./sisyphus-orchestrator";
Copy link

@cubic-dev-ai cubic-dev-ai bot Jan 8, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: Missing type export for SisyphusOrchestratorHookOptions. This interface is used as a parameter in createSisyphusOrchestratorHook and should be re-exported to match the pattern of other hooks like SessionRecoveryHook and PreemptiveCompactionOptions.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At src/hooks/index.ts, line 31:

<comment>Missing type export for SisyphusOrchestratorHookOptions. This interface is used as a parameter in createSisyphusOrchestratorHook and should be re-exported to match the pattern of other hooks like SessionRecoveryHook and PreemptiveCompactionOptions.</comment>

<file context>
@@ -25,3 +25,7 @@ export { createThinkingBlockValidatorHook } from "./thinking-block-validator";
+export { createPrometheusMdOnlyHook } from "./prometheus-md-only";
+export { createTaskResumeInfoHook } from "./task-resume-info";
+export { createStartWorkHook } from "./start-work";
+export { createSisyphusOrchestratorHook } from "./sisyphus-orchestrator";
</file context>
Suggested change
export { createSisyphusOrchestratorHook } from "./sisyphus-orchestrator";
export { createSisyphusOrchestratorHook, type SisyphusOrchestratorHookOptions } from "./sisyphus-orchestrator";
Fix with Cubic

"temperature": 0.2,
"prompt_append": "Focus on data analysis, ML pipelines, and statistical methods."
},
"visual": {
Copy link

@cubic-dev-ai cubic-dev-ai bot Jan 8, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: Custom categories example shows overriding visual but the actual default category is visual-engineering. This example misleadingly suggests overriding a non-existent default category instead of the actual one, causing confusion about category naming.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At README.md, line 1091:

<comment>Custom categories example shows overriding `visual` but the actual default category is `visual-engineering`. This example misleadingly suggests overriding a non-existent default category instead of the actual one, causing confusion about category naming.</comment>

<file context>
@@ -1029,6 +1054,50 @@ Configure concurrency limits for background agent tasks. This controls how many
+      "temperature": 0.2,
+      "prompt_append": "Focus on data analysis, ML pipelines, and statistical methods."
+    },
+    "visual": {
+      "model": "google/gemini-3-pro-high",
+      "prompt_append": "Use shadcn/ui components and Tailwind CSS."
</file context>
Suggested change
"visual": {
"visual-engineering": {
Fix with Cubic

Comment on lines +276 to +277
const redirectUri = `http://localhost:${serverHandle.port}/oauth-callback`
const tokens = await exchangeCode(callback.code, redirectUri, clientId, clientSecret)
Copy link

@cubic-dev-ai cubic-dev-ai bot Jan 8, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P3: Use serverHandle.redirectUri instead of rebuilding the redirect URI from serverHandle.port to avoid duplication/drift.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At src/auth/antigravity/oauth.ts, line 276:

<comment>Use `serverHandle.redirectUri` instead of rebuilding the redirect URI from `serverHandle.port` to avoid duplication/drift.</comment>

<file context>
@@ -345,15 +269,15 @@ export async function performOAuthFlow(
     }
 
-    const tokens = await exchangeCode(callback.code, auth.verifier, clientId, clientSecret, serverHandle.port)
+    const redirectUri = `http://localhost:${serverHandle.port}/oauth-callback`
+    const tokens = await exchangeCode(callback.code, redirectUri, clientId, clientSecret)
     const userInfo = await fetchUserInfo(tokens.access_token)
</file context>
Suggested change
const redirectUri = `http://localhost:${serverHandle.port}/oauth-callback`
const tokens = await exchangeCode(callback.code, redirectUri, clientId, clientSecret)
const tokens = await exchangeCode(callback.code, serverHandle.redirectUri, clientId, clientSecret)
Fix with Cubic

kdcokenny pushed a commit that referenced this pull request Jan 13, 2026
* feat(background-agent): add ConcurrencyManager for model-based limits

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)

* fix(background-agent): set default concurrency to 5

🤖 Generated with [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)

* feat(background-agent): support 0 as unlimited concurrency

Setting concurrency to 0 means unlimited (Infinity).
Works for defaultConcurrency, providerConcurrency, and modelConcurrency.

🤖 Generated with [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)

* feat(hooks): use auto flag for session resumption after compaction

- executor.ts: Added `auto: true` to summarize body, removed subsequent prompt_async call
- preemptive-compaction/index.ts: Added `auto: true` to summarize body, removed subsequent promptAsync call
- executor.test.ts: Updated test expectation to include `auto: true`

Instead of sending 'Continue' prompt after compaction, use SessionCompaction's `auto: true` feature which auto-resumes the session.

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)

* refactor(agents): update sisyphus orchestrator

Update Sisyphus agent orchestrator with latest changes.

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)

* refactor(features): update background agent manager

Update background agent manager with latest configuration changes.

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)

* refactor(features): update init-deep template

Update initialization template with latest configuration.

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)

* refactor(hooks): update hook constants and configuration

Update hook constants and configuration across agent-usage-reminder, keyword-detector, and claude-code-hooks.

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)

* refactor(tools): remove background-task tool

Remove background-task tool module completely:
- src/tools/background-task/constants.ts
- src/tools/background-task/index.ts
- src/tools/background-task/tools.ts
- src/tools/background-task/types.ts

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)

* refactor(tools): update tool exports and main plugin entry

Update tool index exports and main plugin entry point after background-task tool removal.

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)

* feat(auth): update constants to match CLIProxyAPI (50min buffer, 2 endpoints)

- Changed ANTIGRAVITY_TOKEN_REFRESH_BUFFER_MS from 60,000ms (1min) to 3,000,000ms (50min)
- Removed autopush endpoint from ANTIGRAVITY_ENDPOINT_FALLBACKS (now 2 endpoints: daily → prod)
- Added comprehensive test suite with 6 tests covering all updated constants
- Updated comments to reflect CLIProxyAPI parity

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)

* feat(auth): remove PKCE to match CLIProxyAPI

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

Co-authored-by: Sisyphus <[email protected]>

* feat(auth): implement port 51121 with OS fallback

Add port fallback logic to OAuth callback server:
- Try port 51121 (ANTIGRAVITY_CALLBACK_PORT) first
- Fallback to OS-assigned port on EADDRINUSE
- Add redirectUri property to CallbackServerHandle
- Return actual bound port in handle.port

Add comprehensive port handling tests (5 new tests):
- Should prefer port 51121
- Should return actual bound port
- Should fallback when port occupied
- Should cleanup and release port on close
- Should provide redirect URI with actual port

All 16 tests passing (11 existing + 5 new).

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)

* test(auth): add token expiry tests for 50-min buffer

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

Co-authored-by: Sisyphus <[email protected]>

* feat(agents): add Prometheus system prompt and planner methodology

Add prometheus-prompt.ts with comprehensive planner agent system prompt.
Update plan-prompt.ts with streamlined Prometheus workflow including:
- Context gathering via explore/librarian agents
- Metis integration for AI slop guardrails
- Structured plan output format

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)

* feat(agents): add Metis plan consultant agent

Add Metis agent for pre-planning analysis that identifies:
- Hidden requirements and implicit constraints
- AI failure points and common mistakes
- Clarifying questions before planning begins

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)

* feat(agents): add Momus plan reviewer agent

Add Momus agent for rigorous plan review against:
- Clarity and verifiability standards
- Completeness checks
- AI slop detection

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)

* feat(agents): add Sisyphus-Junior focused executor agent

Add Sisyphus-Junior agent for focused task execution:
- Same discipline as Sisyphus, no delegation capability
- Used for category-based task spawning via sisyphus_task tool

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)

* feat(agents): add orchestrator-sisyphus agent

Add orchestrator-sisyphus agent for complex workflow orchestration:
- Manages multi-agent workflows
- Coordinates between specialized agents
- Handles start-work command execution

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)

* feat(skill-loader): add skill-content resolver for agent skills

Add resolveMultipleSkills() for resolving skill content to prepend to agent prompts.
Includes test coverage for resolution logic.

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)

* feat(agents): add category and skills support to buildAgent

Extend buildAgent() to support:
- category: inherit model/temperature from DEFAULT_CATEGORIES
- skills: prepend resolved skill content to agent prompt

Includes comprehensive test coverage for new functionality.

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)

* feat(agents): register new agents in index and types

- Export Metis, Momus, orchestrator-sisyphus in builtinAgents
- Add new agent names to BuiltinAgentName type
- Update AGENTS.md documentation with new agents

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)

* feat(features): add boulder-state persistence

Add boulder-state feature for persisting workflow state:
- storage.ts: File I/O operations for state persistence
- types.ts: State interfaces
- Includes test coverage

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)

* feat(skills): add frontend-ui-ux builtin skill

Add frontend-ui-ux skill for designer-turned-developer UI work:
- SKILL.md with comprehensive design principles
- skills.ts updated with skill template

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)

* feat(tools): add sisyphus_task tool for category-based delegation

Add sisyphus_task tool supporting:
- Category-based task delegation (visual, business-logic, etc.)
- Direct agent targeting
- Background execution with resume capability
- DEFAULT_CATEGORIES configuration

Includes test coverage.

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)

* feat(background-agent): add resume capability and model field

- Add resume() method for continuing existing agent sessions
- Add model field to BackgroundTask and LaunchInput types
- Update launch() to pass model to session.prompt()
- Comprehensive test coverage for resume functionality

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)

* feat(hooks): add task-resume-info hook

Add hook for injecting task resume information into tool outputs.
Enables seamless continuation of background agent sessions.

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)

* feat(hooks): add prometheus-md-only write restriction hook

Add hook that restricts Prometheus planner to writing only .md files
in the .sisyphus/ directory. Prevents planners from implementing.
Includes test coverage.

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)

* feat(hooks): add start-work hook for Sisyphus workflow

Add hook for detecting /start-work command and triggering
orchestrator-sisyphus agent for plan execution.
Includes test coverage.

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)

* feat(hooks): add sisyphus-orchestrator hook

Add hook for orchestrating Sisyphus agent workflows:
- Coordinates task execution between agents
- Manages workflow state persistence
- Handles agent handoffs

Includes comprehensive test coverage.

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)

* feat(hooks): export new hooks in index

Export new hooks:
- createPrometheusMdOnlyHook
- createTaskResumeInfoHook
- createStartWorkHook
- createSisyphusOrchestratorHook

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)

* feat(todo-enforcer): add skipAgents option and improve permission check

- Add skipAgents option to skip continuation for specified agents
- Default skip: Prometheus (Planner)
- Improve tool permission check to handle 'allow'/'deny' string values
- Add agent name detection from session messages

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)

* feat(config): add categories, new agents and hooks to schema

Update Zod schema with:
- CategoryConfigSchema for task delegation categories
- CategoriesConfigSchema for user category overrides
- New agents: Metis (Plan Consultant)
- New hooks: prometheus-md-only, start-work, sisyphus-orchestrator
- New commands: start-work
- Agent category and skills fields

Includes schema test coverage.

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)

* feat(commands): add start-work command

Add /start-work command for executing Prometheus plans:
- start-work.ts: Command template for orchestrator-sisyphus
- commands.ts: Register command with agent binding
- types.ts: Add command name to type union

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)

* refactor(migration): add backup creation and category migration

- Create timestamped backup before migration writes
- Add migrateAgentConfigToCategory() for model→category migration
- Add shouldDeleteAgentConfig() for cleanup when matching defaults
- Add Prometheus and Metis to agent name map
- Comprehensive test coverage for new functionality

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)

* feat(config-handler): add Sisyphus-Junior and orchestrator support

- Add Sisyphus-Junior agent creation
- Add orchestrator-sisyphus tool restrictions
- Rename Planner-Sisyphus to Prometheus (Planner)
- Use PROMETHEUS_SYSTEM_PROMPT and PROMETHEUS_PERMISSION

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)

* feat(cli): add categories config for Antigravity auth

Add category model overrides for Gemini Antigravity authentication:
- visual: gemini-3-pro-high
- artistry: gemini-3-pro-high
- writing: gemini-3-pro-high

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)

* refactor(sisyphus): update to use sisyphus_task and add resume docs

- Update example code from background_task to sisyphus_task
- Add 'Resume Previous Agent' documentation section
- Remove model name from Oracle section heading
- Disable call_omo_agent tool for Sisyphus

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)

* refactor: update tool references from background_task to sisyphus_task

Update all references across:
- agent-usage-reminder: Update AGENT_TOOLS and REMINDER_MESSAGE
- claude-code-hooks: Update comment
- call-omo-agent: Update constants and tool restrictions
- init-deep template: Update example code
- tools/index.ts: Export sisyphus_task, remove background_task

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)

* feat(hook-message-injector): add ToolPermission type support

Add ToolPermission type union: boolean | 'allow' | 'deny' | 'ask'
Update StoredMessage and related interfaces for new permission format.

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)

* feat(main): wire up new tools, hooks and agents

Wire up in main plugin entry:
- Import and create sisyphus_task tool
- Import and wire taskResumeInfo, startWork, sisyphusOrchestrator hooks
- Update tool restrictions from background_task to sisyphus_task
- Pass userCategories to createSisyphusTask

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)

* docs: update documentation for Prometheus and new features

Update documentation across all language versions:
- Rename Planner-Sisyphus to Prometheus (Planner)
- Add Metis (Plan Consultant) agent documentation
- Add Categories section with usage examples
- Add sisyphus_task tool documentation
- Update AGENTS.md with new structure and complexity hotspots
- Update src/tools/AGENTS.md with sisyphus_task category

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)

* build: regenerate schema.json with new types

Update JSON schema with:
- New agents: Prometheus (Planner), Metis (Plan Consultant)
- New hooks: prometheus-md-only, start-work, sisyphus-orchestrator
- New commands: start-work
- New skills: frontend-ui-ux
- CategoryConfigSchema for task delegation
- Agent category and skills fields

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)

* skill

* feat: add toast notifications for task execution

- Display toast when background task starts in BackgroundManager
- Display toast when sisyphus_task sync task starts
- Wire up prometheus-md-only hook initialization in main plugin

This provides user feedback in OpenCode TUI where task TUI is not visible.

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)

* feat(hooks): add read-only warning injection for Prometheus task delegation

When Prometheus (Planner) spawns subagents via task tools (sisyphus_task, task, call_omo_agent), a system directive is injected into the prompt to ensure subagents understand they are in a planning consultation context and must NOT modify files.

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)

* feat(hooks): add mandatory hands-on verification enforcement for orchestrated tasks

- sisyphus-orchestrator: Add verification reminder with tool matrix (playwright/interactive_bash/curl)

- start-work: Inject detailed verification workflow with deliverable-specific guidance

🤖 Generated with [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode) assistance

* docs(agents): clarify oracle and metis agent descriptions emphasizing read-only consultation roles

- Oracle: high-IQ reasoning specialist for debugging and architecture (read-only)
- Metis: updated description to align with oracle's consultation-only model
- Updated AGENTS.md with clarified agent responsibilities

* docs(orchestrator): emphasize oracle as read-only consultation agent

- Updated orchestrator-sisyphus agent descriptions
- Updated sisyphus-prompt-builder to highlight oracle's read-only consultation role
- Clarified that oracle provides high-IQ reasoning without write operations

* docs(refactor,root): update oracle consultation model in feature templates and root docs

- Updated refactor command template to emphasize oracle's read-only role
- Updated root AGENTS.md with oracle agent description emphasizing high-IQ debugging and architecture consultation
- Clarified oracle as non-write agent for design and debugging support

* feat(features): add TaskToastManager for consolidated task notifications

- Create task-toast-manager feature with singleton pattern

- Show running task list (newest first) when new task starts

- Track queued tasks status from ConcurrencyManager

- Integrate with BackgroundManager and sisyphus-task tool

🤖 Generated with [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode) assistance

* feat(hooks): add resume session_id to verification reminders for orchestrator subagent work

When subagent work fails verification, show exact sisyphus_task(resume="...")
command with session_id for immediate retry. Consolidates verification workflow
across boulder and standalone modes.

* refactor(hooks): remove duplicate verification enforcement from start-work hook

Verification reminders are now centralized in sisyphus-orchestrator hook,
eliminating redundant code in start-work. The orchestrator hook handles all
verification messaging across both boulder and standalone modes.

* test(hooks): update prometheus-md-only test assertions and formatting

Updated test structure and assertions to match current output format.
Improved test clarity while maintaining complete coverage of markdown
validation and write restriction behavior.

* orchestrator

* feat(skills): add git-master skill for atomic commits and history management

- Add comprehensive git-master skill for commit, rebase, and history operations
- Implements atomic commit strategy with multi-file splitting rules
- Includes style detection, branch analysis, and history search capabilities
- Provides three modes: COMMIT, REBASE, HISTORY_SEARCH

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)

* docs(agents): add pre-delegation planning section to Sisyphus prompt

- Add SISYPHUS_PRE_DELEGATION_PLANNING section with mandatory declaration rules
- Implements 3-step decision tree: Identify → Select → Declare
- Forces explicit category/agent/skill declaration before every sisyphus_task call
- Includes mandatory 4-part format: Category/Agent, Reason, Skills, Expected Outcome
- Provides examples (CORRECT vs WRONG) and enforcement rules
- Follows prompt engineering best practices: Clear, CoT, Structured, Examples

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)

* refactor(tools): rename agent parameter to subagent_type in sisyphus_task

- Update parameter name from 'agent' to 'subagent_type' for consistency with call_omo_agent
- Update all references and error messages
- Remove deprecated 'agent' field from SisyphusTaskArgs interface
- Update git-master skill documentation to reflect parameter name change

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)

* feat(agents): change orchestrator-sisyphus default model to claude-sonnet-4-5

- Update orchestrator-sisyphus model from opus-4-5 to sonnet-4-5 for better cost efficiency
- Keep Prometheus using opus-4-5 for planning tasks

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)

* refactor(config): make Prometheus model independent from plan agent config

- Prometheus no longer inherits model from plan agent configuration
- Fallback chain: session default model -> claude-opus-4-5
- Removes coupling between Prometheus and legacy plan agent settings

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)

* fix(momus): allow system directives in input validation

System directives (XML tags like <system-reminder>) are automatically
injected and should be ignored during input validation. Only reject
when there's actual user text besides the file path.

🤖 Generated with assistance of [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)

* feat(prometheus): enhance high accuracy mode with mandatory Momus loop

When user requests high accuracy:
- Momus review loop is now mandatory until 'OKAY'
- No excuses allowed - must fix ALL issues
- No maximum retry limit - keep looping until approved
- Added clear explanation of what 'OKAY' means

🤖 Generated with assistance of [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)

* feat(prometheus): enhance reference section with detailed guidance

References now include:
- Pattern references (existing code to follow)
- API/Type references (contracts to implement)
- Test references (testing patterns)
- Documentation references (specs and requirements)
- External references (libraries and frameworks)
- Explanation of WHY each reference matters

The executor has no interview context - references are their only guide.

🤖 Generated with assistance of [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)

* feat(git-master): add configurable commit footer and co-author options

Add git_master config with commit_footer and include_co_authored_by flags.
Users can disable Sisyphus attribution in commits via oh-my-opencode.json.

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

Co-authored-by: Sisyphus <[email protected]>

* feat(hooks): add single-task directive and system-reminder tags to orchestrator

Inject SINGLE_TASK_DIRECTIVE when orchestrator calls sisyphus_task to enforce
atomic task delegation. Wrap verification reminders in <system-reminder> tags
for better LLM attention.

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

Co-authored-by: Sisyphus <[email protected]>

* refactor: use ContextCollector for hook injection and remove unused background tools

Split changes:
- Replace injectHookMessage with ContextCollector.register() pattern for improved hook content injection
- Remove unused background task tools infrastructure (createBackgroundOutput, createBackgroundCancel)

🤖 Generated with assistance of OhMyOpenCode (https://github.com/code-yeongyu/oh-my-opencode)

* chore(context-injector): add debug logging for context injection tracing

Add DEBUG log statements to trace context injection flow:
- Log message transform hook invocations
- Log sessionID extraction from message info
- Log hasPending checks for context collector
- Log hook content registration to contextCollector

🤖 Generated with [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode) assistance

* fix(context-injector): prepend to user message instead of separate synthetic message

- Change from creating separate synthetic user message to prepending context
  directly to last user message's text part
- Separate synthetic messages were ignored by model (treated as previous turn)
- Prepending to clone ensures: UI shows original, model receives prepended content
- Update tests to reflect new behavior

* feat(prometheus): enforce mandatory todo registration on plan generation trigger

* fix(sisyphus-task): add proper error handling for sync mode and implement BackgroundManager.resume()

- Add try-catch for session.prompt() in sync mode with detailed error messages
- Sort assistant messages by time to get the most recent response
- Add 'No assistant response found' error handling
- Implement BackgroundManager.resume() method for task resumption
- Fix ConcurrencyManager type mismatch (model → concurrencyKey)

* docs(sisyphus-task): clarify resume usage with session_id and add when-to-use guidance

- Fix terminology: 'Task ID' → 'Session ID' in resume parameter docs
- Add clear 'WHEN TO USE resume' section with concrete scenarios
- Add example usage pattern in Sisyphus agent prompt
- Emphasize token savings and context preservation benefits

* fix(agents): block task/sisyphus_task/call_omo_agent from explore and librarian

Exploration agents should not spawn other agents - they are leaf nodes
in the agent hierarchy for codebase search only.

* refactor(oracle): change default model from GPT-5.2 to Claude Opus 4.5

* feat(oracle): change default model to claude-opus-4-5

* fix(sisyphus-orchestrator): check boulder session_ids before filtering sessions

Bug: continuation was not triggered even when boulder.json existed with
session_ids because the session filter ran BEFORE reading boulder state.

Fix: Read boulder state first, then include boulder sessions in the
allowed sessions for continuation.

* feat(task-toast): display skills and concurrency info in toast

- Add skills field to TrackedTask and LaunchInput types
- Show skills in task list message as [skill1, skill2]
- Add concurrency slot info [running/limit] in Running header
- Pass skills from sisyphus_task to toast manager (sync & background)
- Add unit tests for new toast features

* refactor(categories): rename high-iq to ultrabrain

* feat(sisyphus-task): add skillContent support to background agent launching

- Add optional skillContent field to LaunchInput type
- Implement buildSystemContent utility to combine skill and category prompts
- Update BackgroundManager to pass skillContent as system parameter
- Add comprehensive tests for skillContent optionality and buildSystemContent logic

🤖 Generated with assistance of oh-my-opencode

* Revert "refactor(tools): remove background-task tool"

This reverts commit 6dbc4c095badd400e024510554a42a0dc018ae42.

* refactor(sisyphus-task): rename background to run_in_background

* fix(oracle): use gpt-5.2 as default model

* test(sisyphus-task): add resume with background parameter tests

* feat(start-work): auto-select single incomplete plan and use system-reminder format

- Auto-select when only one incomplete plan exists among multiple
- Wrap multiple plans message in <system-reminder> tag
- Change prompt to 'ask user' style for agent guidance
- Add 'All Plans Complete' state handling

* feat(sisyphus-task): make skills parameter required

- Add validation for skills parameter (must be provided, use [] if empty)
- Update schema to remove .optional()
- Update type definition to make skills non-optional
- Fix existing tests to include skills parameter

* fix: prevent session model change when sending notifications

- background-agent: use only parentModel, remove prevMessage fallback
- todo-continuation: don't pass model to preserve session's lastModel
- Remove unused imports (findNearestMessageWithFields, fs, path)

Root cause: session.prompt with model param changes session's lastModel

* fix(sisyphus-orchestrator): register handler in event loop for boulder continuation

* fix(sisyphus_task): use promptAsync for sync mode to preserve main session

- session.prompt() changes the active session, causing UI model switch
- Switch to promptAsync + polling to avoid main session state change
- Matches background-agent pattern for consistency

* fix(sisyphus-orchestrator): only trigger boulder continuation for orchestrator-sisyphus agent

* feat(background-agent): add parentAgent tracking to preserve agent context in background tasks

- Add parentAgent field to BackgroundTask, LaunchInput, and ResumeInput interfaces
- Pass parentAgent through background task manager to preserve agent identity
- Update sisyphus-orchestrator to set orchestrator-sisyphus agent context
- Add session tracking for background agents to prevent context loss
- Propagate agent context in background-task and sisyphus-task tools

This ensures background/subagent spawned tasks maintain proper agent context for notifications and continuity.

🤖 Generated with assistance of oh-my-opencode

* fix(antigravity): sync plugin.ts with PKCE-removed oauth.ts API

Remove decodeState import and update OAuth flow to use simple state
string comparison for CSRF protection instead of PKCE verifier.
Update exchangeCode calls to match new signature (code, redirectUri,
clientId, clientSecret).

* fix(hook-message-injector): preserve agent info with two-pass message lookup

findNearestMessageWithFields now has a fallback pass that returns
messages with ANY useful field (agent OR model) instead of requiring
ALL fields. This prevents parentAgent from being lost when stored
messages don't have complete model info.

* fix(sisyphus-task): use SDK session.messages API for parent agent lookup

Background task notifications were showing 'build' agent instead of the
actual parent agent (e.g., 'Sisyphus'). The hook-injected message storage
only contains limited info; the actual agent name is in the SDK session.

Changes:
- Add getParentAgentFromSdk() to query SDK messages API
- Look up agent from SDK first, fallback to hook-injected messages
- Ensures background tasks correctly preserve parent agent context

* fix(sisyphus-task): use ctx.agent directly for parentAgent

The tool context already provides the agent name via ctx.agent.
The previous SDK session.messages lookup was completely wrong -
SDK messages don't store agent info per message.

Removes useless getParentAgentFromSdk function.

* feat(prometheus-md-only): allow .md files anywhere, only block code files

Prometheus (Planner) can now write .md files anywhere, not just .sisyphus/.
Still blocks non-.md files (code) to enforce read-only planning for code.

This allows planners to write commentary and analysis in markdown format.

* Revert "feat(prometheus-md-only): allow .md files anywhere, only block code files"

This reverts commit c600111.

* fix(momus): accept bracket-style system directives in input validation

Momus was rejecting inputs with bracket-style directives like [analyze-mode]
and [SYSTEM DIRECTIVE...] because it only recognized XML-style tags.

Now accepts:
- XML tags: <system-reminder>, <context>, etc.
- Bracket blocks: [analyze-mode], [SYSTEM DIRECTIVE...], [SYSTEM REMINDER...], etc.

* fix(sisyphus-orchestrator): inject delegation warning before Write/Edit outside .sisyphus

- Add ORCHESTRATOR_DELEGATION_REQUIRED strong warning in tool.execute.before
- Fix tool.execute.after filePath detection using pendingFilePaths Map
- before stores filePath by callID, after retrieves and deletes it
- Fixes bug where output.metadata.filePath was undefined

* docs: add orchestration, category-skill, and CLI guides

* fix(cli): correct category names in Antigravity migration (visual → visual-engineering)

* fix(sisyphus-task): prevent infinite polling when session removed from status

* fix(tests): update outdated test expectations

- constants.test.ts: Update endpoint count (2→3) and token buffer (50min→60sec)
- token.test.ts: Update expiry tests to use 60-second buffer
- sisyphus-orchestrator: Add fallback to output.metadata.filePath when callID missing

---------

Co-authored-by: Sisyphus <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants