drizzy-agent 0.7.0 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. package/dist/agents/coder-junior/gpt-5-3-codex.d.ts +1 -1
  2. package/dist/agents/coder-junior/gpt-5-4.d.ts +1 -1
  3. package/dist/agents/coder-junior/gpt.d.ts +1 -1
  4. package/dist/agents/env-context.d.ts +1 -1
  5. package/dist/cli/index.js +12 -12
  6. package/dist/features/builtin-commands/templates/refactor.d.ts +1 -1
  7. package/dist/index.js +85 -85
  8. package/dist/tools/call-drizzy-agent/background-agent-executor.d.ts +5 -0
  9. package/dist/tools/{call-omo-agent → call-drizzy-agent}/background-executor.d.ts +2 -2
  10. package/dist/tools/call-drizzy-agent/constants.d.ts +2 -0
  11. package/dist/tools/{call-omo-agent → call-drizzy-agent}/index.d.ts +1 -1
  12. package/dist/tools/{call-omo-agent → call-drizzy-agent}/session-creator.d.ts +2 -2
  13. package/dist/tools/{call-omo-agent → call-drizzy-agent}/subagent-session-creator.d.ts +2 -2
  14. package/dist/tools/{call-omo-agent → call-drizzy-agent}/sync-executor.d.ts +2 -2
  15. package/dist/tools/{call-omo-agent → call-drizzy-agent}/tools.d.ts +1 -1
  16. package/dist/tools/{call-omo-agent → call-drizzy-agent}/types.d.ts +3 -3
  17. package/dist/tools/delegate-task/constants.d.ts +1 -1
  18. package/dist/tools/index.d.ts +1 -1
  19. package/package.json +12 -12
  20. package/dist/tools/call-omo-agent/background-agent-executor.d.ts +0 -5
  21. package/dist/tools/call-omo-agent/constants.d.ts +0 -2
  22. /package/dist/tools/{call-omo-agent → call-drizzy-agent}/completion-poller.d.ts +0 -0
  23. /package/dist/tools/{call-omo-agent → call-drizzy-agent}/message-dir.d.ts +0 -0
  24. /package/dist/tools/{call-omo-agent → call-drizzy-agent}/message-processor.d.ts +0 -0
  25. /package/dist/tools/{call-omo-agent → call-drizzy-agent}/message-storage-directory.d.ts +0 -0
  26. /package/dist/tools/{call-omo-agent → call-drizzy-agent}/tool-context-with-metadata.d.ts +0 -0
@@ -3,6 +3,6 @@
3
3
  *
4
4
  * GPTCoder-style prompt adapted for a focused executor:
5
5
  * - Same autonomy, reporting, parallelism, and tool usage patterns
6
- * - CAN spawn explore/librarian via call_omo_agent for research
6
+ * - CAN spawn explore/librarian via call_drizzy_agent for research
7
7
  */
8
8
  export declare function buildGpt53CodexCoderJuniorPrompt(useTaskSystem: boolean, promptAppend?: string): string;
@@ -6,6 +6,6 @@
6
6
  * - Deterministic tool usage (always/never, not try/maybe)
7
7
  * - Prose-first output style
8
8
  * - Nuanced autonomy (focus unless directly conflicting)
9
- * - CAN spawn explore/librarian via call_omo_agent for research
9
+ * - CAN spawn explore/librarian via call_drizzy_agent for research
10
10
  */
11
11
  export declare function buildGpt54CoderJuniorPrompt(useTaskSystem: boolean, promptAppend?: string): string;
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * GPTCoder-style prompt adapted for a focused executor:
5
5
  * - Same autonomy, reporting, parallelism, and tool usage patterns
6
- * - CAN spawn explore/librarian via call_omo_agent for research
6
+ * - CAN spawn explore/librarian via call_drizzy_agent for research
7
7
  * - Used as fallback for GPT models without a model-specific prompt
8
8
  */
9
9
  export declare function buildGptCoderJuniorPrompt(useTaskSystem: boolean, promptAppend?: string): string;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Creates OmO-specific environment context (timezone, locale).
2
+ * Creates Drizzy-specific environment context (timezone, locale).
3
3
  * Note: Working directory, platform, and date are already provided by OpenCode's system.ts,
4
4
  * so we only include fields that OpenCode doesn't provide to avoid duplication.
5
5
  * See: https://github.com/code-yeongyu/oh-my-openagent/issues/379
package/dist/cli/index.js CHANGED
@@ -29286,7 +29286,7 @@ function createMcpOAuthCommand() {
29286
29286
  // package.json
29287
29287
  var package_default = {
29288
29288
  name: "drizzy-agent",
29289
- version: "0.7.0",
29289
+ version: "0.7.1",
29290
29290
  description: "DrizzyAgent - AI agent plugin for OpenCode",
29291
29291
  main: "dist/index.js",
29292
29292
  types: "dist/index.d.ts",
@@ -29362,17 +29362,17 @@ var package_default = {
29362
29362
  typescript: "^5.7.3"
29363
29363
  },
29364
29364
  optionalDependencies: {
29365
- "drizzy-agent-darwin-arm64": "0.7.0",
29366
- "drizzy-agent-darwin-x64": "0.7.0",
29367
- "drizzy-agent-darwin-x64-baseline": "0.7.0",
29368
- "drizzy-agent-linux-arm64": "0.7.0",
29369
- "drizzy-agent-linux-arm64-musl": "0.7.0",
29370
- "drizzy-agent-linux-x64": "0.7.0",
29371
- "drizzy-agent-linux-x64-baseline": "0.7.0",
29372
- "drizzy-agent-linux-x64-musl": "0.7.0",
29373
- "drizzy-agent-linux-x64-musl-baseline": "0.7.0",
29374
- "drizzy-agent-windows-x64": "0.7.0",
29375
- "drizzy-agent-windows-x64-baseline": "0.7.0"
29365
+ "drizzy-agent-darwin-arm64": "0.7.1",
29366
+ "drizzy-agent-darwin-x64": "0.7.1",
29367
+ "drizzy-agent-darwin-x64-baseline": "0.7.1",
29368
+ "drizzy-agent-linux-arm64": "0.7.1",
29369
+ "drizzy-agent-linux-arm64-musl": "0.7.1",
29370
+ "drizzy-agent-linux-x64": "0.7.1",
29371
+ "drizzy-agent-linux-x64-baseline": "0.7.1",
29372
+ "drizzy-agent-linux-x64-musl": "0.7.1",
29373
+ "drizzy-agent-linux-x64-musl-baseline": "0.7.1",
29374
+ "drizzy-agent-windows-x64": "0.7.1",
29375
+ "drizzy-agent-windows-x64-baseline": "0.7.1"
29376
29376
  },
29377
29377
  overrides: {
29378
29378
  "@opencode-ai/sdk": "^1.2.24"
@@ -1 +1 @@
1
- export declare const REFACTOR_TEMPLATE = "# Intelligent Refactor Command\n\n## Usage\n```\n/refactor <refactoring-target> [--scope=<file|module|project>] [--strategy=<safe|aggressive>]\n\nArguments:\n refactoring-target: What to refactor. Can be:\n - File path: src/auth/handler.ts\n - Symbol name: \"AuthService class\"\n - Pattern: \"all functions using deprecated API\"\n - Description: \"extract validation logic into separate module\"\n\nOptions:\n --scope: Refactoring scope (default: module)\n - file: Single file only\n - module: Module/directory scope\n - project: Entire codebase\n\n --strategy: Risk tolerance (default: safe)\n - safe: Conservative, maximum test coverage required\n - aggressive: Allow broader changes with adequate coverage\n```\n\n## What This Command Does\n\nPerforms intelligent, deterministic refactoring with full codebase awareness. Unlike blind search-and-replace, this command:\n\n1. **Understands your intent** - Analyzes what you actually want to achieve\n2. **Maps the codebase** - Builds a definitive codemap before touching anything\n3. **Assesses risk** - Evaluates test coverage and determines verification strategy\n4. **Plans meticulously** - Creates a detailed plan with Plan agent\n5. **Executes precisely** - Step-by-step refactoring with LSP and AST-grep\n6. **Verifies constantly** - Runs tests after each change to ensure zero regression\n\n---\n\n# PHASE 0: INTENT GATE (MANDATORY FIRST STEP)\n\n**BEFORE ANY ACTION, classify and validate the request.**\n\n## Step 0.1: Parse Request Type\n\n| Signal | Classification | Action |\n|--------|----------------|--------|\n| Specific file/symbol | Explicit | Proceed to codebase analysis |\n| \"Refactor X to Y\" | Clear transformation | Proceed to codebase analysis |\n| \"Improve\", \"Clean up\" | Open-ended | **MUST ask**: \"What specific improvement?\" |\n| Ambiguous scope | Uncertain | **MUST ask**: \"Which modules/files?\" |\n| Missing context | Incomplete | **MUST ask**: \"What's the desired outcome?\" |\n\n## Step 0.2: Validate Understanding\n\nBefore proceeding, confirm:\n- [ ] Target is clearly identified\n- [ ] Desired outcome is understood\n- [ ] Scope is defined (file/module/project)\n- [ ] Success criteria can be articulated\n\n**If ANY of above is unclear, ASK CLARIFYING QUESTION:**\n\n```\nI want to make sure I understand the refactoring goal correctly.\n\n**What I understood**: [interpretation]\n**What I'm unsure about**: [specific ambiguity]\n\nOptions I see:\n1. [Option A] - [implications]\n2. [Option B] - [implications]\n\n**My recommendation**: [suggestion with reasoning]\n\nShould I proceed with [recommendation], or would you prefer differently?\n```\n\n## Step 0.3: Create Initial Todos\n\n**IMMEDIATELY after understanding the request, create todos:**\n\n```\nTodoWrite([\n {\"id\": \"phase-1\", \"content\": \"PHASE 1: Codebase Analysis - launch parallel explore agents\", \"status\": \"pending\", \"priority\": \"high\"},\n {\"id\": \"phase-2\", \"content\": \"PHASE 2: Build Codemap - map dependencies and impact zones\", \"status\": \"pending\", \"priority\": \"high\"},\n {\"id\": \"phase-3\", \"content\": \"PHASE 3: Test Assessment - analyze test coverage and verification strategy\", \"status\": \"pending\", \"priority\": \"high\"},\n {\"id\": \"phase-4\", \"content\": \"PHASE 4: Plan Generation - invoke Plan agent for detailed refactoring plan\", \"status\": \"pending\", \"priority\": \"high\"},\n {\"id\": \"phase-5\", \"content\": \"PHASE 5: Execute Refactoring - step-by-step with continuous verification\", \"status\": \"pending\", \"priority\": \"high\"},\n {\"id\": \"phase-6\", \"content\": \"PHASE 6: Final Verification - full test suite and regression check\", \"status\": \"pending\", \"priority\": \"high\"}\n])\n```\n\n---\n\n# PHASE 1: CODEBASE ANALYSIS (PARALLEL EXPLORATION)\n\n**Mark phase-1 as in_progress.**\n\n## 1.1: Launch Parallel Explore Agents (BACKGROUND)\n\nFire ALL of these simultaneously using `call_omo_agent`:\n\n```\n// Agent 1: Find the refactoring target\ncall_omo_agent(\n subagent_type=\"explore\",\n run_in_background=true,\n prompt=\"Find all occurrences and definitions of [TARGET]. \n Report: file paths, line numbers, usage patterns.\"\n)\n\n// Agent 2: Find related code\ncall_omo_agent(\n subagent_type=\"explore\", \n run_in_background=true,\n prompt=\"Find all code that imports, uses, or depends on [TARGET].\n Report: dependency chains, import graphs.\"\n)\n\n// Agent 3: Find similar patterns\ncall_omo_agent(\n subagent_type=\"explore\",\n run_in_background=true,\n prompt=\"Find similar code patterns to [TARGET] in the codebase.\n Report: analogous implementations, established conventions.\"\n)\n\n// Agent 4: Find tests\ncall_omo_agent(\n subagent_type=\"explore\",\n run_in_background=true,\n prompt=\"Find all test files related to [TARGET].\n Report: test file paths, test case names, coverage indicators.\"\n)\n\n// Agent 5: Architecture context\ncall_omo_agent(\n subagent_type=\"explore\",\n run_in_background=true,\n prompt=\"Find architectural patterns and module organization around [TARGET].\n Report: module boundaries, layer structure, design patterns in use.\"\n)\n```\n\n## 1.2: Direct Tool Exploration (WHILE AGENTS RUN)\n\nWhile background agents are running, use direct tools:\n\n### LSP Tools for Precise Analysis:\n\n```typescript\n// Find definition(s)\nLspGotoDefinition(filePath, line, character) // Where is it defined?\n\n// Find ALL usages across workspace\nLspFindReferences(filePath, line, character, includeDeclaration=true)\n\n// Get file structure\nLspDocumentSymbols(filePath) // Hierarchical outline\nLspWorkspaceSymbols(filePath, query=\"[target_symbol]\") // Search by name\n\n// Get current diagnostics\nlsp_diagnostics(filePath) // Errors, warnings before we start\n```\n\n### AST-Grep for Pattern Analysis:\n\n```typescript\n// Find structural patterns\nast_grep_search(\n pattern=\"function $NAME($$$) { $$$ }\", // or relevant pattern\n lang=\"typescript\", // or relevant language\n paths=[\"src/\"]\n)\n\n// Preview refactoring (DRY RUN)\nast_grep_replace(\n pattern=\"[old_pattern]\",\n rewrite=\"[new_pattern]\",\n lang=\"[language]\",\n dryRun=true // ALWAYS preview first\n)\n```\n\n### Grep for Text Patterns:\n\n```\ngrep(pattern=\"[search_term]\", path=\"src/\", include=\"*.ts\")\n```\n\n## 1.3: Collect Background Results\n\n```\nbackground_output(task_id=\"[agent_1_id]\")\nbackground_output(task_id=\"[agent_2_id]\")\n...\n```\n\n**Mark phase-1 as completed after all results collected.**\n\n---\n\n# PHASE 2: BUILD CODEMAP (DEPENDENCY MAPPING)\n\n**Mark phase-2 as in_progress.**\n\n## 2.1: Construct Definitive Codemap\n\nBased on Phase 1 results, build:\n\n```\n## CODEMAP: [TARGET]\n\n### Core Files (Direct Impact)\n- `path/to/file.ts:L10-L50` - Primary definition\n- `path/to/file2.ts:L25` - Key usage\n\n### Dependency Graph\n```\n[TARGET] \n\u251C\u2500\u2500 imports from: \n\u2502 \u251C\u2500\u2500 module-a (types)\n\u2502 \u2514\u2500\u2500 module-b (utils)\n\u251C\u2500\u2500 imported by:\n\u2502 \u251C\u2500\u2500 consumer-1.ts\n\u2502 \u251C\u2500\u2500 consumer-2.ts\n\u2502 \u2514\u2500\u2500 consumer-3.ts\n\u2514\u2500\u2500 used by:\n \u251C\u2500\u2500 handler.ts (direct call)\n \u2514\u2500\u2500 service.ts (dependency injection)\n```\n\n### Impact Zones\n| Zone | Risk Level | Files Affected | Test Coverage |\n|------|------------|----------------|---------------|\n| Core | HIGH | 3 files | 85% covered |\n| Consumers | MEDIUM | 8 files | 70% covered |\n| Edge | LOW | 2 files | 50% covered |\n\n### Established Patterns\n- Pattern A: [description] - used in N places\n- Pattern B: [description] - established convention\n```\n\n## 2.2: Identify Refactoring Constraints\n\nBased on codemap:\n- **MUST follow**: [existing patterns identified]\n- **MUST NOT break**: [critical dependencies]\n- **Safe to change**: [isolated code zones]\n- **Requires migration**: [breaking changes impact]\n\n**Mark phase-2 as completed.**\n\n---\n\n# PHASE 3: TEST ASSESSMENT (VERIFICATION STRATEGY)\n\n**Mark phase-3 as in_progress.**\n\n## 3.1: Detect Test Infrastructure\n\n```bash\n# Check for test commands\ncat package.json | jq '.scripts | keys[] | select(test(\"test\"))'\n\n# Or for Python\nls -la pytest.ini pyproject.toml setup.cfg\n\n# Or for Go\nls -la *_test.go\n```\n\n## 3.2: Analyze Test Coverage\n\n```\n// Find all tests related to target\ncall_omo_agent(\n subagent_type=\"explore\",\n run_in_background=false, // Need this synchronously\n prompt=\"Analyze test coverage for [TARGET]:\n 1. Which test files cover this code?\n 2. What test cases exist?\n 3. Are there integration tests?\n 4. What edge cases are tested?\n 5. Estimated coverage percentage?\"\n)\n```\n\n## 3.3: Determine Verification Strategy\n\nBased on test analysis:\n\n| Coverage Level | Strategy |\n|----------------|----------|\n| HIGH (>80%) | Run existing tests after each step |\n| MEDIUM (50-80%) | Run tests + add safety assertions |\n| LOW (<50%) | **PAUSE**: Propose adding tests first |\n| NONE | **BLOCK**: Refuse aggressive refactoring |\n\n**If coverage is LOW or NONE, ask user:**\n\n```\nTest coverage for [TARGET] is [LEVEL].\n\n**Risk Assessment**: Refactoring without adequate tests is dangerous.\n\nOptions:\n1. Add tests first, then refactor (RECOMMENDED)\n2. Proceed with extra caution, manual verification required\n3. Abort refactoring\n\nWhich approach do you prefer?\n```\n\n## 3.4: Document Verification Plan\n\n```\n## VERIFICATION PLAN\n\n### Test Commands\n- Unit: `bun test` / `npm test` / `pytest` / etc.\n- Integration: [command if exists]\n- Type check: `tsc --noEmit` / `pyright` / etc.\n\n### Verification Checkpoints\nAfter each refactoring step:\n1. lsp_diagnostics \u2192 zero new errors\n2. Run test command \u2192 all pass\n3. Type check \u2192 clean\n\n### Regression Indicators\n- [Specific test that must pass]\n- [Behavior that must be preserved]\n- [API contract that must not change]\n```\n\n**Mark phase-3 as completed.**\n\n---\n\n# PHASE 4: PLAN GENERATION (PLAN AGENT)\n\n**Mark phase-4 as in_progress.**\n\n## 4.1: Invoke Plan Agent\n\n```\nTask(\n subagent_type=\"plan\",\n prompt=\"Create a detailed refactoring plan:\n\n ## Refactoring Goal\n [User's original request]\n\n ## Codemap (from Phase 2)\n [Insert codemap here]\n\n ## Test Coverage (from Phase 3)\n [Insert verification plan here]\n\n ## Constraints\n - MUST follow existing patterns: [list]\n - MUST NOT break: [critical paths]\n - MUST run tests after each step\n\n ## Requirements\n 1. Break down into atomic refactoring steps\n 2. Each step must be independently verifiable\n 3. Order steps by dependency (what must happen first)\n 4. Specify exact files and line ranges for each step\n 5. Include rollback strategy for each step\n 6. Define commit checkpoints\"\n)\n```\n\n## 4.2: Review and Validate Plan\n\nAfter receiving plan from Plan agent:\n\n1. **Verify completeness**: All identified files addressed?\n2. **Verify safety**: Each step reversible?\n3. **Verify order**: Dependencies respected?\n4. **Verify verification**: Test commands specified?\n\n## 4.3: Register Detailed Todos\n\nConvert Plan agent output into granular todos:\n\n```\nTodoWrite([\n // Each step from the plan becomes a todo\n {\"id\": \"refactor-1\", \"content\": \"Step 1: [description]\", \"status\": \"pending\", \"priority\": \"high\"},\n {\"id\": \"verify-1\", \"content\": \"Verify Step 1: run tests\", \"status\": \"pending\", \"priority\": \"high\"},\n {\"id\": \"refactor-2\", \"content\": \"Step 2: [description]\", \"status\": \"pending\", \"priority\": \"medium\"},\n {\"id\": \"verify-2\", \"content\": \"Verify Step 2: run tests\", \"status\": \"pending\", \"priority\": \"medium\"},\n // ... continue for all steps\n])\n```\n\n**Mark phase-4 as completed.**\n\n---\n\n# PHASE 5: EXECUTE REFACTORING (DETERMINISTIC EXECUTION)\n\n**Mark phase-5 as in_progress.**\n\n## 5.1: Execution Protocol\n\nFor EACH refactoring step:\n\n### Pre-Step\n1. Mark step todo as `in_progress`\n2. Read current file state\n3. Verify lsp_diagnostics is baseline\n\n### Execute Step\nUse appropriate tool:\n\n**For Symbol Renames:**\n```typescript\nlsp_prepare_rename(filePath, line, character) // Validate rename is possible\nlsp_rename(filePath, line, character, newName) // Execute rename\n```\n\n**For Pattern Transformations:**\n```typescript\n// Preview first\nast_grep_replace(pattern, rewrite, lang, dryRun=true)\n\n// If preview looks good, execute\nast_grep_replace(pattern, rewrite, lang, dryRun=false)\n```\n\n**For Structural Changes:**\n```typescript\n// Use Edit tool for precise changes\nedit(filePath, oldString, newString)\n```\n\n### Post-Step Verification (MANDATORY)\n\n```typescript\n// 1. Check diagnostics\nlsp_diagnostics(filePath) // Must be clean or same as baseline\n\n// 2. Run tests\nbash(\"bun test\") // Or appropriate test command\n\n// 3. Type check\nbash(\"tsc --noEmit\") // Or appropriate type check\n```\n\n### Step Completion\n1. If verification passes \u2192 Mark step todo as `completed`\n2. If verification fails \u2192 **STOP AND FIX**\n\n## 5.2: Failure Recovery Protocol\n\nIf ANY verification fails:\n\n1. **STOP** immediately\n2. **REVERT** the failed change\n3. **DIAGNOSE** what went wrong\n4. **OPTIONS**:\n - Fix the issue and retry\n - Skip this step (if optional)\n - Consult oracle agent for help\n - Ask user for guidance\n\n**NEVER proceed to next step with broken tests.**\n\n## 5.3: Commit Checkpoints\n\nAfter each logical group of changes:\n\n```bash\ngit add [changed-files]\ngit commit -m \"refactor(scope): description\n\n[details of what was changed and why]\"\n```\n\n**Mark phase-5 as completed when all refactoring steps done.**\n\n---\n\n# PHASE 6: FINAL VERIFICATION (REGRESSION CHECK)\n\n**Mark phase-6 as in_progress.**\n\n## 6.1: Full Test Suite\n\n```bash\n# Run complete test suite\nbun test # or npm test, pytest, go test, etc.\n```\n\n## 6.2: Type Check\n\n```bash\n# Full type check\ntsc --noEmit # or equivalent\n```\n\n## 6.3: Lint Check\n\n```bash\n# Run linter\neslint . # or equivalent\n```\n\n## 6.4: Build Verification (if applicable)\n\n```bash\n# Ensure build still works\nbun run build # or npm run build, etc.\n```\n\n## 6.5: Final Diagnostics\n\n```typescript\n// Check all changed files\nfor (file of changedFiles) {\n lsp_diagnostics(file) // Must all be clean\n}\n```\n\n## 6.6: Generate Summary\n\n```markdown\n## Refactoring Complete\n\n### What Changed\n- [List of changes made]\n\n### Files Modified\n- `path/to/file.ts` - [what changed]\n- `path/to/file2.ts` - [what changed]\n\n### Verification Results\n- Tests: PASSED (X/Y passing)\n- Type Check: CLEAN\n- Lint: CLEAN\n- Build: SUCCESS\n\n### No Regressions Detected\nAll existing tests pass. No new errors introduced.\n```\n\n**Mark phase-6 as completed.**\n\n---\n\n# CRITICAL RULES\n\n## NEVER DO\n- Skip lsp_diagnostics check after changes\n- Proceed with failing tests\n- Make changes without understanding impact\n- Use `as any`, `@ts-ignore`, `@ts-expect-error`\n- Delete tests to make them pass\n- Commit broken code\n- Refactor without understanding existing patterns\n\n## ALWAYS DO\n- Understand before changing\n- Preview before applying (ast_grep dryRun=true)\n- Verify after every change\n- Follow existing codebase patterns\n- Keep todos updated in real-time\n- Commit at logical checkpoints\n- Report issues immediately\n\n## ABORT CONDITIONS\nIf any of these occur, **STOP and consult user**:\n- Test coverage is zero for target code\n- Changes would break public API\n- Refactoring scope is unclear\n- 3 consecutive verification failures\n- User-defined constraints violated\n\n---\n\n# Tool Usage Philosophy\n\nYou already know these tools. Use them intelligently:\n\n## LSP Tools\nLeverage LSP tools for precision analysis. Key patterns:\n- **Understand before changing**: `LspGotoDefinition` to grasp context\n- **Impact analysis**: `LspFindReferences` to map all usages before modification\n- **Safe refactoring**: `lsp_prepare_rename` \u2192 `lsp_rename` for symbol renames\n- **Continuous verification**: `lsp_diagnostics` after every change\n\n## AST-Grep\nUse `ast_grep_search` and `ast_grep_replace` for structural transformations.\n**Critical**: Always `dryRun=true` first, review, then execute.\n\n## Agents\n- `explore`: Parallel codebase pattern discovery\n- `plan`: Detailed refactoring plan generation\n- `oracle`: Read-only consultation for complex architectural decisions and debugging\n- `librarian`: **Use proactively** when encountering deprecated methods or library migration tasks. Query official docs and OSS examples for modern replacements.\n\n## Deprecated Code & Library Migration\nWhen you encounter deprecated methods/APIs during refactoring:\n1. Fire `librarian` to find the recommended modern alternative\n2. **DO NOT auto-upgrade to latest version** unless user explicitly requests migration\n3. If user requests library migration, use `librarian` to fetch latest API docs before making changes\n\n---\n\n**Remember: Refactoring without tests is reckless. Refactoring without understanding is destructive. This command ensures you do neither.**\n\n<user-request>\n$ARGUMENTS\n</user-request>\n";
1
+ export declare const REFACTOR_TEMPLATE = "# Intelligent Refactor Command\n\n## Usage\n```\n/refactor <refactoring-target> [--scope=<file|module|project>] [--strategy=<safe|aggressive>]\n\nArguments:\n refactoring-target: What to refactor. Can be:\n - File path: src/auth/handler.ts\n - Symbol name: \"AuthService class\"\n - Pattern: \"all functions using deprecated API\"\n - Description: \"extract validation logic into separate module\"\n\nOptions:\n --scope: Refactoring scope (default: module)\n - file: Single file only\n - module: Module/directory scope\n - project: Entire codebase\n\n --strategy: Risk tolerance (default: safe)\n - safe: Conservative, maximum test coverage required\n - aggressive: Allow broader changes with adequate coverage\n```\n\n## What This Command Does\n\nPerforms intelligent, deterministic refactoring with full codebase awareness. Unlike blind search-and-replace, this command:\n\n1. **Understands your intent** - Analyzes what you actually want to achieve\n2. **Maps the codebase** - Builds a definitive codemap before touching anything\n3. **Assesses risk** - Evaluates test coverage and determines verification strategy\n4. **Plans meticulously** - Creates a detailed plan with Plan agent\n5. **Executes precisely** - Step-by-step refactoring with LSP and AST-grep\n6. **Verifies constantly** - Runs tests after each change to ensure zero regression\n\n---\n\n# PHASE 0: INTENT GATE (MANDATORY FIRST STEP)\n\n**BEFORE ANY ACTION, classify and validate the request.**\n\n## Step 0.1: Parse Request Type\n\n| Signal | Classification | Action |\n|--------|----------------|--------|\n| Specific file/symbol | Explicit | Proceed to codebase analysis |\n| \"Refactor X to Y\" | Clear transformation | Proceed to codebase analysis |\n| \"Improve\", \"Clean up\" | Open-ended | **MUST ask**: \"What specific improvement?\" |\n| Ambiguous scope | Uncertain | **MUST ask**: \"Which modules/files?\" |\n| Missing context | Incomplete | **MUST ask**: \"What's the desired outcome?\" |\n\n## Step 0.2: Validate Understanding\n\nBefore proceeding, confirm:\n- [ ] Target is clearly identified\n- [ ] Desired outcome is understood\n- [ ] Scope is defined (file/module/project)\n- [ ] Success criteria can be articulated\n\n**If ANY of above is unclear, ASK CLARIFYING QUESTION:**\n\n```\nI want to make sure I understand the refactoring goal correctly.\n\n**What I understood**: [interpretation]\n**What I'm unsure about**: [specific ambiguity]\n\nOptions I see:\n1. [Option A] - [implications]\n2. [Option B] - [implications]\n\n**My recommendation**: [suggestion with reasoning]\n\nShould I proceed with [recommendation], or would you prefer differently?\n```\n\n## Step 0.3: Create Initial Todos\n\n**IMMEDIATELY after understanding the request, create todos:**\n\n```\nTodoWrite([\n {\"id\": \"phase-1\", \"content\": \"PHASE 1: Codebase Analysis - launch parallel explore agents\", \"status\": \"pending\", \"priority\": \"high\"},\n {\"id\": \"phase-2\", \"content\": \"PHASE 2: Build Codemap - map dependencies and impact zones\", \"status\": \"pending\", \"priority\": \"high\"},\n {\"id\": \"phase-3\", \"content\": \"PHASE 3: Test Assessment - analyze test coverage and verification strategy\", \"status\": \"pending\", \"priority\": \"high\"},\n {\"id\": \"phase-4\", \"content\": \"PHASE 4: Plan Generation - invoke Plan agent for detailed refactoring plan\", \"status\": \"pending\", \"priority\": \"high\"},\n {\"id\": \"phase-5\", \"content\": \"PHASE 5: Execute Refactoring - step-by-step with continuous verification\", \"status\": \"pending\", \"priority\": \"high\"},\n {\"id\": \"phase-6\", \"content\": \"PHASE 6: Final Verification - full test suite and regression check\", \"status\": \"pending\", \"priority\": \"high\"}\n])\n```\n\n---\n\n# PHASE 1: CODEBASE ANALYSIS (PARALLEL EXPLORATION)\n\n**Mark phase-1 as in_progress.**\n\n## 1.1: Launch Parallel Explore Agents (BACKGROUND)\n\nFire ALL of these simultaneously using `call_drizzy_agent`:\n\n```\n// Agent 1: Find the refactoring target\ncall_drizzy_agent(\n subagent_type=\"explore\",\n run_in_background=true,\n prompt=\"Find all occurrences and definitions of [TARGET]. \n Report: file paths, line numbers, usage patterns.\"\n)\n\n// Agent 2: Find related code\ncall_drizzy_agent(\n subagent_type=\"explore\", \n run_in_background=true,\n prompt=\"Find all code that imports, uses, or depends on [TARGET].\n Report: dependency chains, import graphs.\"\n)\n\n// Agent 3: Find similar patterns\ncall_drizzy_agent(\n subagent_type=\"explore\",\n run_in_background=true,\n prompt=\"Find similar code patterns to [TARGET] in the codebase.\n Report: analogous implementations, established conventions.\"\n)\n\n// Agent 4: Find tests\ncall_drizzy_agent(\n subagent_type=\"explore\",\n run_in_background=true,\n prompt=\"Find all test files related to [TARGET].\n Report: test file paths, test case names, coverage indicators.\"\n)\n\n// Agent 5: Architecture context\ncall_drizzy_agent(\n subagent_type=\"explore\",\n run_in_background=true,\n prompt=\"Find architectural patterns and module organization around [TARGET].\n Report: module boundaries, layer structure, design patterns in use.\"\n)\n```\n\n## 1.2: Direct Tool Exploration (WHILE AGENTS RUN)\n\nWhile background agents are running, use direct tools:\n\n### LSP Tools for Precise Analysis:\n\n```typescript\n// Find definition(s)\nLspGotoDefinition(filePath, line, character) // Where is it defined?\n\n// Find ALL usages across workspace\nLspFindReferences(filePath, line, character, includeDeclaration=true)\n\n// Get file structure\nLspDocumentSymbols(filePath) // Hierarchical outline\nLspWorkspaceSymbols(filePath, query=\"[target_symbol]\") // Search by name\n\n// Get current diagnostics\nlsp_diagnostics(filePath) // Errors, warnings before we start\n```\n\n### AST-Grep for Pattern Analysis:\n\n```typescript\n// Find structural patterns\nast_grep_search(\n pattern=\"function $NAME($$$) { $$$ }\", // or relevant pattern\n lang=\"typescript\", // or relevant language\n paths=[\"src/\"]\n)\n\n// Preview refactoring (DRY RUN)\nast_grep_replace(\n pattern=\"[old_pattern]\",\n rewrite=\"[new_pattern]\",\n lang=\"[language]\",\n dryRun=true // ALWAYS preview first\n)\n```\n\n### Grep for Text Patterns:\n\n```\ngrep(pattern=\"[search_term]\", path=\"src/\", include=\"*.ts\")\n```\n\n## 1.3: Collect Background Results\n\n```\nbackground_output(task_id=\"[agent_1_id]\")\nbackground_output(task_id=\"[agent_2_id]\")\n...\n```\n\n**Mark phase-1 as completed after all results collected.**\n\n---\n\n# PHASE 2: BUILD CODEMAP (DEPENDENCY MAPPING)\n\n**Mark phase-2 as in_progress.**\n\n## 2.1: Construct Definitive Codemap\n\nBased on Phase 1 results, build:\n\n```\n## CODEMAP: [TARGET]\n\n### Core Files (Direct Impact)\n- `path/to/file.ts:L10-L50` - Primary definition\n- `path/to/file2.ts:L25` - Key usage\n\n### Dependency Graph\n```\n[TARGET] \n\u251C\u2500\u2500 imports from: \n\u2502 \u251C\u2500\u2500 module-a (types)\n\u2502 \u2514\u2500\u2500 module-b (utils)\n\u251C\u2500\u2500 imported by:\n\u2502 \u251C\u2500\u2500 consumer-1.ts\n\u2502 \u251C\u2500\u2500 consumer-2.ts\n\u2502 \u2514\u2500\u2500 consumer-3.ts\n\u2514\u2500\u2500 used by:\n \u251C\u2500\u2500 handler.ts (direct call)\n \u2514\u2500\u2500 service.ts (dependency injection)\n```\n\n### Impact Zones\n| Zone | Risk Level | Files Affected | Test Coverage |\n|------|------------|----------------|---------------|\n| Core | HIGH | 3 files | 85% covered |\n| Consumers | MEDIUM | 8 files | 70% covered |\n| Edge | LOW | 2 files | 50% covered |\n\n### Established Patterns\n- Pattern A: [description] - used in N places\n- Pattern B: [description] - established convention\n```\n\n## 2.2: Identify Refactoring Constraints\n\nBased on codemap:\n- **MUST follow**: [existing patterns identified]\n- **MUST NOT break**: [critical dependencies]\n- **Safe to change**: [isolated code zones]\n- **Requires migration**: [breaking changes impact]\n\n**Mark phase-2 as completed.**\n\n---\n\n# PHASE 3: TEST ASSESSMENT (VERIFICATION STRATEGY)\n\n**Mark phase-3 as in_progress.**\n\n## 3.1: Detect Test Infrastructure\n\n```bash\n# Check for test commands\ncat package.json | jq '.scripts | keys[] | select(test(\"test\"))'\n\n# Or for Python\nls -la pytest.ini pyproject.toml setup.cfg\n\n# Or for Go\nls -la *_test.go\n```\n\n## 3.2: Analyze Test Coverage\n\n```\n// Find all tests related to target\ncall_drizzy_agent(\n subagent_type=\"explore\",\n run_in_background=false, // Need this synchronously\n prompt=\"Analyze test coverage for [TARGET]:\n 1. Which test files cover this code?\n 2. What test cases exist?\n 3. Are there integration tests?\n 4. What edge cases are tested?\n 5. Estimated coverage percentage?\"\n)\n```\n\n## 3.3: Determine Verification Strategy\n\nBased on test analysis:\n\n| Coverage Level | Strategy |\n|----------------|----------|\n| HIGH (>80%) | Run existing tests after each step |\n| MEDIUM (50-80%) | Run tests + add safety assertions |\n| LOW (<50%) | **PAUSE**: Propose adding tests first |\n| NONE | **BLOCK**: Refuse aggressive refactoring |\n\n**If coverage is LOW or NONE, ask user:**\n\n```\nTest coverage for [TARGET] is [LEVEL].\n\n**Risk Assessment**: Refactoring without adequate tests is dangerous.\n\nOptions:\n1. Add tests first, then refactor (RECOMMENDED)\n2. Proceed with extra caution, manual verification required\n3. Abort refactoring\n\nWhich approach do you prefer?\n```\n\n## 3.4: Document Verification Plan\n\n```\n## VERIFICATION PLAN\n\n### Test Commands\n- Unit: `bun test` / `npm test` / `pytest` / etc.\n- Integration: [command if exists]\n- Type check: `tsc --noEmit` / `pyright` / etc.\n\n### Verification Checkpoints\nAfter each refactoring step:\n1. lsp_diagnostics \u2192 zero new errors\n2. Run test command \u2192 all pass\n3. Type check \u2192 clean\n\n### Regression Indicators\n- [Specific test that must pass]\n- [Behavior that must be preserved]\n- [API contract that must not change]\n```\n\n**Mark phase-3 as completed.**\n\n---\n\n# PHASE 4: PLAN GENERATION (PLAN AGENT)\n\n**Mark phase-4 as in_progress.**\n\n## 4.1: Invoke Plan Agent\n\n```\nTask(\n subagent_type=\"plan\",\n prompt=\"Create a detailed refactoring plan:\n\n ## Refactoring Goal\n [User's original request]\n\n ## Codemap (from Phase 2)\n [Insert codemap here]\n\n ## Test Coverage (from Phase 3)\n [Insert verification plan here]\n\n ## Constraints\n - MUST follow existing patterns: [list]\n - MUST NOT break: [critical paths]\n - MUST run tests after each step\n\n ## Requirements\n 1. Break down into atomic refactoring steps\n 2. Each step must be independently verifiable\n 3. Order steps by dependency (what must happen first)\n 4. Specify exact files and line ranges for each step\n 5. Include rollback strategy for each step\n 6. Define commit checkpoints\"\n)\n```\n\n## 4.2: Review and Validate Plan\n\nAfter receiving plan from Plan agent:\n\n1. **Verify completeness**: All identified files addressed?\n2. **Verify safety**: Each step reversible?\n3. **Verify order**: Dependencies respected?\n4. **Verify verification**: Test commands specified?\n\n## 4.3: Register Detailed Todos\n\nConvert Plan agent output into granular todos:\n\n```\nTodoWrite([\n // Each step from the plan becomes a todo\n {\"id\": \"refactor-1\", \"content\": \"Step 1: [description]\", \"status\": \"pending\", \"priority\": \"high\"},\n {\"id\": \"verify-1\", \"content\": \"Verify Step 1: run tests\", \"status\": \"pending\", \"priority\": \"high\"},\n {\"id\": \"refactor-2\", \"content\": \"Step 2: [description]\", \"status\": \"pending\", \"priority\": \"medium\"},\n {\"id\": \"verify-2\", \"content\": \"Verify Step 2: run tests\", \"status\": \"pending\", \"priority\": \"medium\"},\n // ... continue for all steps\n])\n```\n\n**Mark phase-4 as completed.**\n\n---\n\n# PHASE 5: EXECUTE REFACTORING (DETERMINISTIC EXECUTION)\n\n**Mark phase-5 as in_progress.**\n\n## 5.1: Execution Protocol\n\nFor EACH refactoring step:\n\n### Pre-Step\n1. Mark step todo as `in_progress`\n2. Read current file state\n3. Verify lsp_diagnostics is baseline\n\n### Execute Step\nUse appropriate tool:\n\n**For Symbol Renames:**\n```typescript\nlsp_prepare_rename(filePath, line, character) // Validate rename is possible\nlsp_rename(filePath, line, character, newName) // Execute rename\n```\n\n**For Pattern Transformations:**\n```typescript\n// Preview first\nast_grep_replace(pattern, rewrite, lang, dryRun=true)\n\n// If preview looks good, execute\nast_grep_replace(pattern, rewrite, lang, dryRun=false)\n```\n\n**For Structural Changes:**\n```typescript\n// Use Edit tool for precise changes\nedit(filePath, oldString, newString)\n```\n\n### Post-Step Verification (MANDATORY)\n\n```typescript\n// 1. Check diagnostics\nlsp_diagnostics(filePath) // Must be clean or same as baseline\n\n// 2. Run tests\nbash(\"bun test\") // Or appropriate test command\n\n// 3. Type check\nbash(\"tsc --noEmit\") // Or appropriate type check\n```\n\n### Step Completion\n1. If verification passes \u2192 Mark step todo as `completed`\n2. If verification fails \u2192 **STOP AND FIX**\n\n## 5.2: Failure Recovery Protocol\n\nIf ANY verification fails:\n\n1. **STOP** immediately\n2. **REVERT** the failed change\n3. **DIAGNOSE** what went wrong\n4. **OPTIONS**:\n - Fix the issue and retry\n - Skip this step (if optional)\n - Consult oracle agent for help\n - Ask user for guidance\n\n**NEVER proceed to next step with broken tests.**\n\n## 5.3: Commit Checkpoints\n\nAfter each logical group of changes:\n\n```bash\ngit add [changed-files]\ngit commit -m \"refactor(scope): description\n\n[details of what was changed and why]\"\n```\n\n**Mark phase-5 as completed when all refactoring steps done.**\n\n---\n\n# PHASE 6: FINAL VERIFICATION (REGRESSION CHECK)\n\n**Mark phase-6 as in_progress.**\n\n## 6.1: Full Test Suite\n\n```bash\n# Run complete test suite\nbun test # or npm test, pytest, go test, etc.\n```\n\n## 6.2: Type Check\n\n```bash\n# Full type check\ntsc --noEmit # or equivalent\n```\n\n## 6.3: Lint Check\n\n```bash\n# Run linter\neslint . # or equivalent\n```\n\n## 6.4: Build Verification (if applicable)\n\n```bash\n# Ensure build still works\nbun run build # or npm run build, etc.\n```\n\n## 6.5: Final Diagnostics\n\n```typescript\n// Check all changed files\nfor (file of changedFiles) {\n lsp_diagnostics(file) // Must all be clean\n}\n```\n\n## 6.6: Generate Summary\n\n```markdown\n## Refactoring Complete\n\n### What Changed\n- [List of changes made]\n\n### Files Modified\n- `path/to/file.ts` - [what changed]\n- `path/to/file2.ts` - [what changed]\n\n### Verification Results\n- Tests: PASSED (X/Y passing)\n- Type Check: CLEAN\n- Lint: CLEAN\n- Build: SUCCESS\n\n### No Regressions Detected\nAll existing tests pass. No new errors introduced.\n```\n\n**Mark phase-6 as completed.**\n\n---\n\n# CRITICAL RULES\n\n## NEVER DO\n- Skip lsp_diagnostics check after changes\n- Proceed with failing tests\n- Make changes without understanding impact\n- Use `as any`, `@ts-ignore`, `@ts-expect-error`\n- Delete tests to make them pass\n- Commit broken code\n- Refactor without understanding existing patterns\n\n## ALWAYS DO\n- Understand before changing\n- Preview before applying (ast_grep dryRun=true)\n- Verify after every change\n- Follow existing codebase patterns\n- Keep todos updated in real-time\n- Commit at logical checkpoints\n- Report issues immediately\n\n## ABORT CONDITIONS\nIf any of these occur, **STOP and consult user**:\n- Test coverage is zero for target code\n- Changes would break public API\n- Refactoring scope is unclear\n- 3 consecutive verification failures\n- User-defined constraints violated\n\n---\n\n# Tool Usage Philosophy\n\nYou already know these tools. Use them intelligently:\n\n## LSP Tools\nLeverage LSP tools for precision analysis. Key patterns:\n- **Understand before changing**: `LspGotoDefinition` to grasp context\n- **Impact analysis**: `LspFindReferences` to map all usages before modification\n- **Safe refactoring**: `lsp_prepare_rename` \u2192 `lsp_rename` for symbol renames\n- **Continuous verification**: `lsp_diagnostics` after every change\n\n## AST-Grep\nUse `ast_grep_search` and `ast_grep_replace` for structural transformations.\n**Critical**: Always `dryRun=true` first, review, then execute.\n\n## Agents\n- `explore`: Parallel codebase pattern discovery\n- `plan`: Detailed refactoring plan generation\n- `oracle`: Read-only consultation for complex architectural decisions and debugging\n- `librarian`: **Use proactively** when encountering deprecated methods or library migration tasks. Query official docs and OSS examples for modern replacements.\n\n## Deprecated Code & Library Migration\nWhen you encounter deprecated methods/APIs during refactoring:\n1. Fire `librarian` to find the recommended modern alternative\n2. **DO NOT auto-upgrade to latest version** unless user explicitly requests migration\n3. If user requests library migration, use `librarian` to fetch latest API docs before making changes\n\n---\n\n**Remember: Refactoring without tests is reckless. Refactoring without understanding is destructive. This command ensures you do neither.**\n\n<user-request>\n$ARGUMENTS\n</user-request>\n";
package/dist/index.js CHANGED
@@ -17009,7 +17009,7 @@ var EXPLORATION_AGENT_DENYLIST = {
17009
17009
  write: false,
17010
17010
  edit: false,
17011
17011
  task: false,
17012
- call_omo_agent: false
17012
+ call_drizzy_agent: false
17013
17013
  };
17014
17014
  var AGENT_RESTRICTIONS = {
17015
17015
  explore: EXPLORATION_AGENT_DENYLIST,
@@ -17018,7 +17018,7 @@ var AGENT_RESTRICTIONS = {
17018
17018
  write: false,
17019
17019
  edit: false,
17020
17020
  task: false,
17021
- call_omo_agent: false
17021
+ call_drizzy_agent: false
17022
17022
  },
17023
17023
  planConsultant: {
17024
17024
  write: false,
@@ -40842,7 +40842,7 @@ var TARGET_TOOLS = new Set([
40842
40842
  ]);
40843
40843
  var AGENT_TOOLS = new Set([
40844
40844
  "task",
40845
- "call_omo_agent",
40845
+ "call_drizzy_agent",
40846
40846
  "task"
40847
40847
  ]);
40848
40848
  var REMINDER_MESSAGE = `
@@ -42548,7 +42548,7 @@ var DELEGATABLE_WORK_TOOLS = new Set([
42548
42548
  ]);
42549
42549
  var DELEGATION_TOOLS = new Set([
42550
42550
  "task",
42551
- "call_omo_agent"
42551
+ "call_drizzy_agent"
42552
42552
  ]);
42553
42553
  function createCategorySkillReminderHook(_ctx, availableSkills = []) {
42554
42554
  const sessionStates = new Map;
@@ -44334,11 +44334,11 @@ TodoWrite([
44334
44334
 
44335
44335
  ## 1.1: Launch Parallel Explore Agents (BACKGROUND)
44336
44336
 
44337
- Fire ALL of these simultaneously using \`call_omo_agent\`:
44337
+ Fire ALL of these simultaneously using \`call_drizzy_agent\`:
44338
44338
 
44339
44339
  \`\`\`
44340
44340
  // Agent 1: Find the refactoring target
44341
- call_omo_agent(
44341
+ call_drizzy_agent(
44342
44342
  subagent_type="explore",
44343
44343
  run_in_background=true,
44344
44344
  prompt="Find all occurrences and definitions of [TARGET].
@@ -44346,7 +44346,7 @@ call_omo_agent(
44346
44346
  )
44347
44347
 
44348
44348
  // Agent 2: Find related code
44349
- call_omo_agent(
44349
+ call_drizzy_agent(
44350
44350
  subagent_type="explore",
44351
44351
  run_in_background=true,
44352
44352
  prompt="Find all code that imports, uses, or depends on [TARGET].
@@ -44354,7 +44354,7 @@ call_omo_agent(
44354
44354
  )
44355
44355
 
44356
44356
  // Agent 3: Find similar patterns
44357
- call_omo_agent(
44357
+ call_drizzy_agent(
44358
44358
  subagent_type="explore",
44359
44359
  run_in_background=true,
44360
44360
  prompt="Find similar code patterns to [TARGET] in the codebase.
@@ -44362,7 +44362,7 @@ call_omo_agent(
44362
44362
  )
44363
44363
 
44364
44364
  // Agent 4: Find tests
44365
- call_omo_agent(
44365
+ call_drizzy_agent(
44366
44366
  subagent_type="explore",
44367
44367
  run_in_background=true,
44368
44368
  prompt="Find all test files related to [TARGET].
@@ -44370,7 +44370,7 @@ call_omo_agent(
44370
44370
  )
44371
44371
 
44372
44372
  // Agent 5: Architecture context
44373
- call_omo_agent(
44373
+ call_drizzy_agent(
44374
44374
  subagent_type="explore",
44375
44375
  run_in_background=true,
44376
44376
  prompt="Find architectural patterns and module organization around [TARGET].
@@ -44511,7 +44511,7 @@ ls -la *_test.go
44511
44511
 
44512
44512
  \`\`\`
44513
44513
  // Find all tests related to target
44514
- call_omo_agent(
44514
+ call_drizzy_agent(
44515
44515
  subagent_type="explore",
44516
44516
  run_in_background=false, // Need this synchronously
44517
44517
  prompt="Analyze test coverage for [TARGET]:
@@ -49272,7 +49272,7 @@ function isAllowedFile(filePath, workspaceRoot) {
49272
49272
  }
49273
49273
 
49274
49274
  // src/hooks/planner-md-only/hook.ts
49275
- var TASK_TOOLS = ["task", "call_omo_agent"];
49275
+ var TASK_TOOLS = ["task", "call_drizzy_agent"];
49276
49276
  function createPlannerMdOnlyHook(ctx) {
49277
49277
  return {
49278
49278
  "tool.execute.before": async (input, output) => {
@@ -49477,7 +49477,7 @@ function createCoderJuniorNotepadHook(ctx) {
49477
49477
  };
49478
49478
  }
49479
49479
  // src/hooks/task-resume-info/hook.ts
49480
- var TARGET_TOOLS2 = ["task", "Task", "task_tool", "call_omo_agent"];
49480
+ var TARGET_TOOLS2 = ["task", "Task", "task_tool", "call_drizzy_agent"];
49481
49481
  var SESSION_ID_PATTERNS = [
49482
49482
  /Session ID: (ses_[a-zA-Z0-9_-]+)/,
49483
49483
  /session_id: (ses_[a-zA-Z0-9_-]+)/,
@@ -71449,7 +71449,7 @@ Status: ${task.status}`;
71449
71449
  }
71450
71450
  });
71451
71451
  }
71452
- // src/tools/call-omo-agent/constants.ts
71452
+ // src/tools/call-drizzy-agent/constants.ts
71453
71453
  var ALLOWED_AGENTS = [
71454
71454
  "explore",
71455
71455
  "librarian",
@@ -71459,7 +71459,7 @@ var ALLOWED_AGENTS = [
71459
71459
  "plan-reviewer",
71460
71460
  "multimodal-looker"
71461
71461
  ];
71462
- var CALL_OMO_AGENT_DESCRIPTION = `Spawn explore/librarian agent. run_in_background REQUIRED (true=async with task_id, false=sync).
71462
+ var CALL_DRIZZY_AGENT_DESCRIPTION = `Spawn explore/librarian agent. run_in_background REQUIRED (true=async with task_id, false=sync).
71463
71463
 
71464
71464
  Available: {agents}
71465
71465
 
@@ -71523,14 +71523,14 @@ function buildFallbackChainFromModels(fallbackModels, contextProviderID, default
71523
71523
  return;
71524
71524
  return parsed;
71525
71525
  }
71526
- // src/tools/call-omo-agent/background-executor.ts
71526
+ // src/tools/call-drizzy-agent/background-executor.ts
71527
71527
  async function executeBackground(args, toolContext, manager, client2, fallbackChain) {
71528
71528
  try {
71529
71529
  const messageDir = getMessageDir(toolContext.sessionID);
71530
71530
  const { prevMessage, firstMessageAgent } = await resolveMessageContext(toolContext.sessionID, client2, messageDir);
71531
71531
  const sessionAgent = getSessionAgent(toolContext.sessionID);
71532
71532
  const parentAgent = toolContext.agent ?? sessionAgent ?? firstMessageAgent ?? prevMessage?.agent;
71533
- log("[call_omo_agent] parentAgent resolution", {
71533
+ log("[call_drizzy_agent] parentAgent resolution", {
71534
71534
  sessionID: toolContext.sessionID,
71535
71535
  messageDir,
71536
71536
  ctxAgent: toolContext.agent,
@@ -71568,10 +71568,10 @@ Task ID: ${task.id}`;
71568
71568
  await new Promise((resolve16) => setTimeout(resolve16, WAIT_FOR_SESSION_INTERVAL_MS));
71569
71569
  sessionId = manager.getTask(task.id)?.sessionID;
71570
71570
  }
71571
- await toolContext.metadata?.({
71571
+ await Promise.resolve(toolContext.metadata?.({
71572
71572
  title: args.description,
71573
71573
  metadata: { sessionId: sessionId ?? "pending" }
71574
- });
71574
+ }));
71575
71575
  return `Background agent task launched successfully.
71576
71576
 
71577
71577
  Task ID: ${task.id}
@@ -71590,9 +71590,9 @@ Use \`background_output\` tool with task_id="${task.id}" to check progress:
71590
71590
  }
71591
71591
  }
71592
71592
 
71593
- // src/tools/call-omo-agent/completion-poller.ts
71593
+ // src/tools/call-drizzy-agent/completion-poller.ts
71594
71594
  async function waitForCompletion(sessionID, toolContext, ctx) {
71595
- log(`[call_omo_agent] Polling for completion...`);
71595
+ log(`[call_drizzy_agent] Polling for completion...`);
71596
71596
  const POLL_INTERVAL_MS = 500;
71597
71597
  const MAX_POLL_TIME_MS = 5 * 60 * 1000;
71598
71598
  const pollStart = Date.now();
@@ -71601,7 +71601,7 @@ async function waitForCompletion(sessionID, toolContext, ctx) {
71601
71601
  const STABILITY_REQUIRED = 3;
71602
71602
  while (Date.now() - pollStart < MAX_POLL_TIME_MS) {
71603
71603
  if (toolContext.abort?.aborted) {
71604
- log(`[call_omo_agent] Aborted by user`);
71604
+ log(`[call_drizzy_agent] Aborted by user`);
71605
71605
  throw new Error("Task aborted.");
71606
71606
  }
71607
71607
  await new Promise((resolve16) => setTimeout(resolve16, POLL_INTERVAL_MS));
@@ -71621,7 +71621,7 @@ async function waitForCompletion(sessionID, toolContext, ctx) {
71621
71621
  if (currentMsgCount > 0 && currentMsgCount === lastMsgCount) {
71622
71622
  stablePolls++;
71623
71623
  if (stablePolls >= STABILITY_REQUIRED) {
71624
- log(`[call_omo_agent] Session complete, ${currentMsgCount} messages`);
71624
+ log(`[call_drizzy_agent] Session complete, ${currentMsgCount} messages`);
71625
71625
  break;
71626
71626
  }
71627
71627
  } else {
@@ -71630,29 +71630,29 @@ async function waitForCompletion(sessionID, toolContext, ctx) {
71630
71630
  }
71631
71631
  }
71632
71632
  if (Date.now() - pollStart >= MAX_POLL_TIME_MS) {
71633
- log(`[call_omo_agent] Timeout reached`);
71633
+ log(`[call_drizzy_agent] Timeout reached`);
71634
71634
  throw new Error("Agent task timed out after 5 minutes.");
71635
71635
  }
71636
71636
  }
71637
71637
 
71638
- // src/tools/call-omo-agent/message-processor.ts
71638
+ // src/tools/call-drizzy-agent/message-processor.ts
71639
71639
  async function processMessages(sessionID, ctx) {
71640
71640
  const messagesResult = await ctx.client.session.messages({
71641
71641
  path: { id: sessionID }
71642
71642
  });
71643
71643
  if (messagesResult.error) {
71644
- log(`[call_omo_agent] Messages error:`, messagesResult.error);
71644
+ log(`[call_drizzy_agent] Messages error:`, messagesResult.error);
71645
71645
  throw new Error(`Failed to get messages: ${messagesResult.error}`);
71646
71646
  }
71647
71647
  const messages = messagesResult.data;
71648
- log(`[call_omo_agent] Got ${messages.length} messages`);
71648
+ log(`[call_drizzy_agent] Got ${messages.length} messages`);
71649
71649
  const relevantMessages = messages.filter((m) => m.info?.role === "assistant" || m.info?.role === "tool");
71650
71650
  if (relevantMessages.length === 0) {
71651
- log(`[call_omo_agent] No assistant or tool messages found`);
71652
- log(`[call_omo_agent] All messages:`, JSON.stringify(messages, null, 2));
71651
+ log(`[call_drizzy_agent] No assistant or tool messages found`);
71652
+ log(`[call_drizzy_agent] All messages:`, JSON.stringify(messages, null, 2));
71653
71653
  throw new Error("No assistant or tool response found");
71654
71654
  }
71655
- log(`[call_omo_agent] Found ${relevantMessages.length} relevant messages`);
71655
+ log(`[call_drizzy_agent] Found ${relevantMessages.length} relevant messages`);
71656
71656
  const sortedMessages = [...relevantMessages].sort((a, b) => {
71657
71657
  const timeA = a.info?.time?.created ?? 0;
71658
71658
  const timeB = b.info?.time?.created ?? 0;
@@ -71684,31 +71684,31 @@ async function processMessages(sessionID, ctx) {
71684
71684
  const responseText = extractedContent.filter((text) => text.length > 0).join(`
71685
71685
 
71686
71686
  `);
71687
- log(`[call_omo_agent] Got response, length: ${responseText.length}`);
71687
+ log(`[call_drizzy_agent] Got response, length: ${responseText.length}`);
71688
71688
  return responseText;
71689
71689
  }
71690
71690
 
71691
- // src/tools/call-omo-agent/session-creator.ts
71691
+ // src/tools/call-drizzy-agent/session-creator.ts
71692
71692
  async function createOrGetSession(args, toolContext, ctx) {
71693
71693
  if (args.session_id) {
71694
- log(`[call_omo_agent] Using existing session: ${args.session_id}`);
71694
+ log(`[call_drizzy_agent] Using existing session: ${args.session_id}`);
71695
71695
  const sessionResult = await ctx.client.session.get({
71696
71696
  path: { id: args.session_id }
71697
71697
  });
71698
71698
  if (sessionResult.error) {
71699
- log(`[call_omo_agent] Session get error:`, sessionResult.error);
71699
+ log(`[call_drizzy_agent] Session get error:`, sessionResult.error);
71700
71700
  throw new Error(`Failed to get existing session: ${sessionResult.error}`);
71701
71701
  }
71702
71702
  return { sessionID: args.session_id, isNew: false };
71703
71703
  } else {
71704
- log(`[call_omo_agent] Creating new session with parent: ${toolContext.sessionID}`);
71704
+ log(`[call_drizzy_agent] Creating new session with parent: ${toolContext.sessionID}`);
71705
71705
  const parentSession = await ctx.client.session.get({
71706
71706
  path: { id: toolContext.sessionID }
71707
71707
  }).catch((err) => {
71708
- log(`[call_omo_agent] Failed to get parent session:`, err);
71708
+ log(`[call_drizzy_agent] Failed to get parent session:`, err);
71709
71709
  return null;
71710
71710
  });
71711
- log(`[call_omo_agent] Parent session dir: ${parentSession?.data?.directory}, fallback: ${ctx.directory}`);
71711
+ log(`[call_drizzy_agent] Parent session dir: ${parentSession?.data?.directory}, fallback: ${ctx.directory}`);
71712
71712
  const parentDirectory = parentSession?.data?.directory ?? ctx.directory;
71713
71713
  const createResult = await ctx.client.session.create({
71714
71714
  body: {
@@ -71720,7 +71720,7 @@ async function createOrGetSession(args, toolContext, ctx) {
71720
71720
  }
71721
71721
  });
71722
71722
  if (createResult.error) {
71723
- log(`[call_omo_agent] Session create error:`, createResult.error);
71723
+ log(`[call_drizzy_agent] Session create error:`, createResult.error);
71724
71724
  const errorStr = String(createResult.error);
71725
71725
  if (errorStr.toLowerCase().includes("unauthorized")) {
71726
71726
  throw new Error(`Failed to create session (Unauthorized). This may be due to:
@@ -71735,14 +71735,14 @@ Original error: ${createResult.error}`);
71735
71735
  throw new Error(`Failed to create session: ${createResult.error}`);
71736
71736
  }
71737
71737
  const sessionID = createResult.data.id;
71738
- log(`[call_omo_agent] Created session: ${sessionID}`);
71738
+ log(`[call_drizzy_agent] Created session: ${sessionID}`);
71739
71739
  subagentSessions.add(sessionID);
71740
71740
  syncSubagentSessions.add(sessionID);
71741
71741
  return { sessionID, isNew: true };
71742
71742
  }
71743
71743
  }
71744
71744
 
71745
- // src/tools/call-omo-agent/sync-executor.ts
71745
+ // src/tools/call-drizzy-agent/sync-executor.ts
71746
71746
  var defaultDeps = {
71747
71747
  createOrGetSession,
71748
71748
  waitForCompletion,
@@ -71771,8 +71771,8 @@ async function executeSync(args, toolContext, ctx, deps = defaultDeps, fallbackC
71771
71771
  title: args.description,
71772
71772
  metadata: { sessionId: sessionID }
71773
71773
  }));
71774
- log(`[call_omo_agent] Sending prompt to session ${sessionID}`);
71775
- log(`[call_omo_agent] Prompt text:`, args.prompt.substring(0, 100));
71774
+ log(`[call_drizzy_agent] Sending prompt to session ${sessionID}`);
71775
+ log(`[call_drizzy_agent] Prompt text:`, args.prompt.substring(0, 100));
71776
71776
  try {
71777
71777
  await ctx.client.session.promptAsync({
71778
71778
  path: { id: sessionID },
@@ -71788,7 +71788,7 @@ async function executeSync(args, toolContext, ctx, deps = defaultDeps, fallbackC
71788
71788
  });
71789
71789
  } catch (error92) {
71790
71790
  const errorMessage = error92 instanceof Error ? error92.message : String(error92);
71791
- log(`[call_omo_agent] Prompt error:`, errorMessage);
71791
+ log(`[call_drizzy_agent] Prompt error:`, errorMessage);
71792
71792
  if (errorMessage.includes("agent.name") || errorMessage.includes("undefined")) {
71793
71793
  return `Error: Agent "${args.subagent_type}" not found. Make sure the agent is registered in your opencode.json or provided by a plugin.
71794
71794
 
@@ -71822,8 +71822,8 @@ session_id: ${sessionID}
71822
71822
  }
71823
71823
  }
71824
71824
 
71825
- // src/tools/call-omo-agent/tools.ts
71826
- function resolveFallbackChainForCallOmoAgent(args) {
71825
+ // src/tools/call-drizzy-agent/tools.ts
71826
+ function resolveFallbackChainForCallDrizzyAgent(args) {
71827
71827
  const { subagentType, agentOverrides, userCategories } = args;
71828
71828
  const agentConfigKey = getAgentConfigKey(subagentType);
71829
71829
  const agentRequirement = AGENT_MODEL_REQUIREMENTS[agentConfigKey];
@@ -71833,10 +71833,10 @@ function resolveFallbackChainForCallOmoAgent(args) {
71833
71833
  const configuredFallbackChain = buildFallbackChainFromModels(normalizedFallbackModels, defaultProviderID);
71834
71834
  return configuredFallbackChain ?? agentRequirement?.fallbackChain;
71835
71835
  }
71836
- function createCallOmoAgent(ctx, backgroundManager, disabledAgents = [], agentOverrides, userCategories) {
71836
+ function createCallDrizzyAgent(ctx, backgroundManager, disabledAgents = [], agentOverrides, userCategories) {
71837
71837
  const agentDescriptions = ALLOWED_AGENTS.map((name) => `- ${name}: Specialized agent for ${name} tasks`).join(`
71838
71838
  `);
71839
- const description = CALL_OMO_AGENT_DESCRIPTION.replace("{agents}", agentDescriptions);
71839
+ const description = CALL_DRIZZY_AGENT_DESCRIPTION.replace("{agents}", agentDescriptions);
71840
71840
  return tool({
71841
71841
  description,
71842
71842
  args: {
@@ -71848,7 +71848,7 @@ function createCallOmoAgent(ctx, backgroundManager, disabledAgents = [], agentOv
71848
71848
  },
71849
71849
  async execute(args, toolContext) {
71850
71850
  const toolCtx = toolContext;
71851
- log(`[call_omo_agent] Starting with agent: ${args.subagent_type}, background: ${args.run_in_background}`);
71851
+ log(`[call_drizzy_agent] Starting with agent: ${args.subagent_type}, background: ${args.run_in_background}`);
71852
71852
  if (!ALLOWED_AGENTS.some((name) => name.toLowerCase() === args.subagent_type.toLowerCase())) {
71853
71853
  return `Error: Invalid agent type "${args.subagent_type}". Only ${ALLOWED_AGENTS.join(", ")} are allowed.`;
71854
71854
  }
@@ -71857,7 +71857,7 @@ function createCallOmoAgent(ctx, backgroundManager, disabledAgents = [], agentOv
71857
71857
  if (disabledAgents.some((disabled) => disabled.toLowerCase() === normalizedAgent)) {
71858
71858
  return `Error: Agent "${normalizedAgent}" is disabled via disabled_agents configuration. Remove it from disabled_agents in your drizzy-agent.json to use it.`;
71859
71859
  }
71860
- const fallbackChain = resolveFallbackChainForCallOmoAgent({
71860
+ const fallbackChain = resolveFallbackChainForCallDrizzyAgent({
71861
71861
  subagentType: args.subagent_type,
71862
71862
  agentOverrides,
71863
71863
  userCategories
@@ -72385,7 +72385,7 @@ Original error: ${createResult.error}`;
72385
72385
  agent: MULTIMODAL_LOOKER_AGENT,
72386
72386
  tools: {
72387
72387
  task: false,
72388
- call_omo_agent: false,
72388
+ call_drizzy_agent: false,
72389
72389
  look_at: false,
72390
72390
  read: false
72391
72391
  },
@@ -72737,8 +72737,8 @@ BEFORE you begin planning, you MUST first understand the user's request deeply.
72737
72737
 
72738
72738
  MANDATORY CONTEXT GATHERING PROTOCOL:
72739
72739
  1. Launch background agents to gather context:
72740
- - call_omo_agent(description="Explore codebase patterns", subagent_type="explore", run_in_background=true, prompt="<search for relevant patterns, files, and implementations in the codebase related to user's request>")
72741
- - call_omo_agent(description="Research documentation", subagent_type="librarian", run_in_background=true, prompt="<search for external documentation, examples, and best practices related to user's request>")
72740
+ - call_drizzy_agent(description="Explore codebase patterns", subagent_type="explore", run_in_background=true, prompt="<search for relevant patterns, files, and implementations in the codebase related to user's request>")
72741
+ - call_drizzy_agent(description="Research documentation", subagent_type="librarian", run_in_background=true, prompt="<search for external documentation, examples, and best practices related to user's request>")
72742
72742
 
72743
72743
  2. After gathering context, ALWAYS present:
72744
72744
  - **User Request Summary**: Concise restatement of what the user is asking for
@@ -73601,7 +73601,7 @@ async function executeSyncContinuation(args, ctx, executorCtx, deps = syncContin
73601
73601
  const tools = {
73602
73602
  ...resumeAgent ? getAgentToolRestrictions(resumeAgent) : {},
73603
73603
  task: allowTask,
73604
- call_omo_agent: true,
73604
+ call_drizzy_agent: true,
73605
73605
  question: false
73606
73606
  };
73607
73607
  setSessionTools(args.session_id, tools);
@@ -73975,7 +73975,7 @@ async function sendSyncPrompt(client2, input, deps = sendSyncPromptDeps) {
73975
73975
  const effectivePrompt = buildTaskPrompt(input.args.prompt, input.agentToUse);
73976
73976
  const tools = {
73977
73977
  task: allowTask,
73978
- call_omo_agent: true,
73978
+ call_drizzy_agent: true,
73979
73979
  question: false,
73980
73980
  ...getAgentToolRestrictions(input.agentToUse)
73981
73981
  };
@@ -78426,7 +78426,7 @@ class BackgroundManager {
78426
78426
  tools: (() => {
78427
78427
  const tools = {
78428
78428
  task: false,
78429
- call_omo_agent: true,
78429
+ call_drizzy_agent: true,
78430
78430
  question: false,
78431
78431
  ...getAgentToolRestrictions(input.agent)
78432
78432
  };
@@ -78637,7 +78637,7 @@ class BackgroundManager {
78637
78637
  tools: (() => {
78638
78638
  const tools = {
78639
78639
  task: false,
78640
- call_omo_agent: true,
78640
+ call_drizzy_agent: true,
78641
78641
  question: false,
78642
78642
  ...getAgentToolRestrictions(existingTask.agent)
78643
78643
  };
@@ -87239,7 +87239,7 @@ function createCoderAgent(model, availableAgents, availableToolNames, availableS
87239
87239
  color: "#00CED1",
87240
87240
  permission: {
87241
87241
  question: "allow",
87242
- call_omo_agent: "deny"
87242
+ call_drizzy_agent: "deny"
87243
87243
  },
87244
87244
  reasoningEffort: "medium"
87245
87245
  };
@@ -87264,7 +87264,7 @@ ${buildGeminiVerificationOverride()}
87264
87264
  }
87265
87265
  const permission = {
87266
87266
  question: "allow",
87267
- call_omo_agent: "deny"
87267
+ call_drizzy_agent: "deny"
87268
87268
  };
87269
87269
  const base = {
87270
87270
  description: "Powerful AI orchestrator. Plans obsessively with todos, assesses search complexity before exploration, delegates strategically via category+skills combinations. Uses explore for internal code (parallel-friendly), librarian for external docs. (Coder - DrizzyAgent)",
@@ -87558,7 +87558,7 @@ function createLibrarianAgent(model) {
87558
87558
  "edit",
87559
87559
  "apply_patch",
87560
87560
  "task",
87561
- "call_omo_agent"
87561
+ "call_drizzy_agent"
87562
87562
  ]);
87563
87563
  return {
87564
87564
  description: "Specialized codebase understanding agent for multi-repository analysis, searching remote codebases, retrieving official documentation, and finding implementation examples using GitHub CLI, Context7, and Web Search. MUST BE USED when users ask to look up code in remote repositories, explain library internals, or find usage examples in open source. (Librarian - DrizzyAgent)",
@@ -87875,7 +87875,7 @@ function createExploreAgent(model) {
87875
87875
  "edit",
87876
87876
  "apply_patch",
87877
87877
  "task",
87878
- "call_omo_agent"
87878
+ "call_drizzy_agent"
87879
87879
  ]);
87880
87880
  return {
87881
87881
  description: 'Contextual grep for codebases. Answers "Where is X?", "Which file has Y?", "Find the code that does Z". Fire multiple in parallel for broad searches. Specify thoroughness: "quick" for basic, "medium" for moderate, "very thorough" for comprehensive analysis. (Explore - DrizzyAgent)',
@@ -88083,9 +88083,9 @@ Confirm:
88083
88083
  \`\`\`
88084
88084
  // Launch these explore agents FIRST
88085
88085
  // Prompt structure: CONTEXT + GOAL + QUESTION + REQUEST
88086
- call_omo_agent(subagent_type="explore", prompt="I'm analyzing a new feature request and need to understand existing patterns before asking clarifying questions. Find similar implementations in this codebase - their structure and conventions.")
88087
- call_omo_agent(subagent_type="explore", prompt="I'm planning to build [feature type] and want to ensure consistency with the project. Find how similar features are organized - file structure, naming patterns, and architectural approach.")
88088
- call_omo_agent(subagent_type="librarian", prompt="I'm implementing [technology] and need to understand best practices before making recommendations. Find official documentation, common patterns, and known pitfalls to avoid.")
88086
+ call_drizzy_agent(subagent_type="explore", prompt="I'm analyzing a new feature request and need to understand existing patterns before asking clarifying questions. Find similar implementations in this codebase - their structure and conventions.")
88087
+ call_drizzy_agent(subagent_type="explore", prompt="I'm planning to build [feature type] and want to ensure consistency with the project. Find how similar features are organized - file structure, naming patterns, and architectural approach.")
88088
+ call_drizzy_agent(subagent_type="librarian", prompt="I'm implementing [technology] and need to understand best practices before making recommendations. Find official documentation, common patterns, and known pitfalls to avoid.")
88089
88089
  \`\`\`
88090
88090
 
88091
88091
  **Questions to Ask** (AFTER exploration):
@@ -88196,9 +88196,9 @@ Task(
88196
88196
  **Investigation Structure**:
88197
88197
  \`\`\`
88198
88198
  // Parallel probes - Prompt structure: CONTEXT + GOAL + QUESTION + REQUEST
88199
- call_omo_agent(subagent_type="explore", prompt="I'm researching how to implement [feature] and need to understand the current approach. Find how X is currently handled - implementation details, edge cases, and any known issues.")
88200
- call_omo_agent(subagent_type="librarian", prompt="I'm implementing Y and need authoritative guidance. Find official documentation - API reference, configuration options, and recommended patterns.")
88201
- call_omo_agent(subagent_type="librarian", prompt="I'm looking for proven implementations of Z. Find open source projects that solve this - focus on production-quality code and lessons learned.")
88199
+ call_drizzy_agent(subagent_type="explore", prompt="I'm researching how to implement [feature] and need to understand the current approach. Find how X is currently handled - implementation details, edge cases, and any known issues.")
88200
+ call_drizzy_agent(subagent_type="librarian", prompt="I'm implementing Y and need authoritative guidance. Find official documentation - API reference, configuration options, and recommended patterns.")
88201
+ call_drizzy_agent(subagent_type="librarian", prompt="I'm looking for proven implementations of Z. Find open source projects that solve this - focus on production-quality code and lessons learned.")
88202
88202
  \`\`\`
88203
88203
 
88204
88204
  **Directives for Planner**:
@@ -90819,7 +90819,7 @@ function createGptcoderAgent(model, availableAgents, availableToolNames, availab
90819
90819
  color: "#D97706",
90820
90820
  permission: {
90821
90821
  question: "allow",
90822
- call_omo_agent: "deny"
90822
+ call_drizzy_agent: "deny"
90823
90823
  },
90824
90824
  reasoningEffort: "medium"
90825
90825
  };
@@ -91239,7 +91239,7 @@ function createGptcoderAgent2(model, availableAgents, availableToolNames, availa
91239
91239
  color: "#D97706",
91240
91240
  permission: {
91241
91241
  question: "allow",
91242
- call_omo_agent: "deny"
91242
+ call_drizzy_agent: "deny"
91243
91243
  },
91244
91244
  reasoningEffort: "medium"
91245
91245
  };
@@ -91351,7 +91351,7 @@ When blocked: try a different approach \u2192 decompose the problem \u2192 chall
91351
91351
  - Run verification (lint, tests, build) WITHOUT asking
91352
91352
  - Make decisions. Course-correct only on CONCRETE failure
91353
91353
  - Note assumptions in final message, not as questions mid-work
91354
- - Need context? Fire explore/librarian via call_omo_agent IMMEDIATELY \u2014 continue only with non-overlapping work while they search
91354
+ - Need context? Fire explore/librarian via call_drizzy_agent IMMEDIATELY \u2014 continue only with non-overlapping work while they search
91355
91355
 
91356
91356
  ## Scope Discipline
91357
91357
 
@@ -91369,7 +91369,7 @@ When blocked: try a different approach \u2192 decompose the problem \u2192 chall
91369
91369
 
91370
91370
  <tool_usage_rules>
91371
91371
  - Parallelize independent tool calls: multiple file reads, grep searches, agent fires \u2014 all at once
91372
- - Explore/Librarian via call_omo_agent = background research. Fire them and continue only with non-overlapping work
91372
+ - Explore/Librarian via call_drizzy_agent = background research. Fire them and continue only with non-overlapping work
91373
91373
  - After any file edit: restate what changed, where, and what validation follows
91374
91374
  - Prefer tools over guessing whenever you need specific data (files, configs, patterns)
91375
91375
  - ALWAYS use tools over internal knowledge for file contents, project state, and verification
@@ -91489,7 +91489,7 @@ When blocked: try a different approach \u2192 decompose the problem \u2192 chall
91489
91489
  - Run verification (lint, tests, build) WITHOUT asking
91490
91490
  - Make decisions. Course-correct only on CONCRETE failure
91491
91491
  - Note assumptions in final message, not as questions mid-work
91492
- - Need context? Fire explore/librarian via call_omo_agent IMMEDIATELY \u2014 continue only with non-overlapping work while they search
91492
+ - Need context? Fire explore/librarian via call_drizzy_agent IMMEDIATELY \u2014 continue only with non-overlapping work while they search
91493
91493
 
91494
91494
  ## Scope Discipline
91495
91495
 
@@ -91508,7 +91508,7 @@ When blocked: try a different approach \u2192 decompose the problem \u2192 chall
91508
91508
 
91509
91509
  <tool_usage_rules>
91510
91510
  - Parallelize independent tool calls: multiple file reads, grep searches, agent fires \u2014 all at once
91511
- - Explore/Librarian via call_omo_agent = background research. Fire them and continue only with non-overlapping work
91511
+ - Explore/Librarian via call_drizzy_agent = background research. Fire them and continue only with non-overlapping work
91512
91512
  - After any file edit: restate what changed, where, and what validation follows
91513
91513
  - Prefer tools over guessing whenever you need specific data (files, configs, patterns)
91514
91514
  - ALWAYS use tools over internal knowledge for file contents, project state, and verification
@@ -91630,7 +91630,7 @@ When blocked: try a different approach \u2192 decompose the problem \u2192 chall
91630
91630
  - Run verification (lint, tests, build) WITHOUT asking
91631
91631
  - Make decisions. Course-correct only on CONCRETE failure
91632
91632
  - Note assumptions in final message, not as questions mid-work
91633
- - Need context? Fire explore/librarian via call_omo_agent IMMEDIATELY \u2014 continue only with non-overlapping work while they search
91633
+ - Need context? Fire explore/librarian via call_drizzy_agent IMMEDIATELY \u2014 continue only with non-overlapping work while they search
91634
91634
 
91635
91635
  ## Scope Discipline
91636
91636
 
@@ -91648,7 +91648,7 @@ When blocked: try a different approach \u2192 decompose the problem \u2192 chall
91648
91648
 
91649
91649
  <tool_usage_rules>
91650
91650
  - Parallelize independent tool calls: multiple file reads, grep searches, agent fires \u2014 all at once
91651
- - Explore/Librarian via call_omo_agent = background research. Fire them and continue only with non-overlapping work
91651
+ - Explore/Librarian via call_drizzy_agent = background research. Fire them and continue only with non-overlapping work
91652
91652
  - After any file edit: restate what changed, where, and what validation follows
91653
91653
  - Prefer tools over guessing whenever you need specific data (files, configs, patterns)
91654
91654
  - ALWAYS use tools over internal knowledge for file contents, project state, and verification
@@ -91784,7 +91784,7 @@ Before responding, ask yourself: What tools do I need to call? What am I assumin
91784
91784
  - Run verification (lint, tests, build) WITHOUT asking
91785
91785
  - Make decisions. Course-correct only on CONCRETE failure
91786
91786
  - Note assumptions in final message, not as questions mid-work
91787
- - Need context? Fire explore/librarian via call_omo_agent IMMEDIATELY \u2014 continue only with non-overlapping work while they search
91787
+ - Need context? Fire explore/librarian via call_drizzy_agent IMMEDIATELY \u2014 continue only with non-overlapping work while they search
91788
91788
 
91789
91789
  ## Scope Discipline
91790
91790
 
@@ -91803,7 +91803,7 @@ Before responding, ask yourself: What tools do I need to call? What am I assumin
91803
91803
 
91804
91804
  <tool_usage_rules>
91805
91805
  - Parallelize independent tool calls: multiple file reads, grep searches, agent fires \u2014 all at once
91806
- - Explore/Librarian via call_omo_agent = background research. Fire them and continue only with non-overlapping work
91806
+ - Explore/Librarian via call_drizzy_agent = background research. Fire them and continue only with non-overlapping work
91807
91807
  - After any file edit: restate what changed, where, and what validation follows
91808
91808
  - Prefer tools over guessing whenever you need specific data (files, configs, patterns)
91809
91809
  - ALWAYS use tools over internal knowledge for file contents, project state, and verification
@@ -91970,7 +91970,7 @@ function createCoderJuniorAgentWithOverrides(override, systemDefaultModel, useTa
91970
91970
  for (const tool3 of BLOCKED_TOOLS3) {
91971
91971
  merged[tool3] = "deny";
91972
91972
  }
91973
- merged.call_omo_agent = "allow";
91973
+ merged.call_drizzy_agent = "allow";
91974
91974
  const toolsConfig = { permission: { ...merged, ...basePermission } };
91975
91975
  const base = {
91976
91976
  description: override?.description ?? "Focused task executor. Same discipline, no delegation. (Coder-Junior - DrizzyAgent)",
@@ -92350,7 +92350,7 @@ function createResearcherAgent(model) {
92350
92350
  const restrictions = createAgentToolRestrictions([
92351
92351
  "apply_patch",
92352
92352
  "ast_grep_replace",
92353
- "call_omo_agent",
92353
+ "call_drizzy_agent",
92354
92354
  "interactive_bash",
92355
92355
  "Bash",
92356
92356
  "hashline_edit",
@@ -92508,7 +92508,7 @@ var createResearcherJuniorAgent = (model) => {
92508
92508
  const restrictions = createAgentToolRestrictions([
92509
92509
  "apply_patch",
92510
92510
  "ast_grep_replace",
92511
- "call_omo_agent",
92511
+ "call_drizzy_agent",
92512
92512
  "interactive_bash",
92513
92513
  "Bash",
92514
92514
  "hashline_edit",
@@ -96054,7 +96054,7 @@ function applyToolConfig(params) {
96054
96054
  orchestrator.permission = {
96055
96055
  ...orchestrator.permission,
96056
96056
  task: "allow",
96057
- call_omo_agent: "deny",
96057
+ call_drizzy_agent: "deny",
96058
96058
  "task_*": "allow",
96059
96059
  teammate: "allow",
96060
96060
  ...denyTodoTools
@@ -96064,7 +96064,7 @@ function applyToolConfig(params) {
96064
96064
  if (coder2) {
96065
96065
  coder2.permission = {
96066
96066
  ...coder2.permission,
96067
- call_omo_agent: "deny",
96067
+ call_drizzy_agent: "deny",
96068
96068
  task: "allow",
96069
96069
  question: questionPermission,
96070
96070
  "task_*": "allow",
@@ -96076,7 +96076,7 @@ function applyToolConfig(params) {
96076
96076
  if (gptcoder) {
96077
96077
  gptcoder.permission = {
96078
96078
  ...gptcoder.permission,
96079
- call_omo_agent: "deny",
96079
+ call_drizzy_agent: "deny",
96080
96080
  task: "allow",
96081
96081
  question: questionPermission,
96082
96082
  ...denyTodoTools
@@ -96086,7 +96086,7 @@ function applyToolConfig(params) {
96086
96086
  if (planner) {
96087
96087
  planner.permission = {
96088
96088
  ...planner.permission,
96089
- call_omo_agent: "deny",
96089
+ call_drizzy_agent: "deny",
96090
96090
  task: "allow",
96091
96091
  question: questionPermission,
96092
96092
  "task_*": "allow",
@@ -96315,7 +96315,7 @@ function normalizeToolArgSchemas(toolDefinition) {
96315
96315
  function createToolRegistry(args) {
96316
96316
  const { ctx, pluginConfig, managers, skillContext, availableCategories } = args;
96317
96317
  const backgroundTools = createBackgroundTools(managers.backgroundManager, ctx.client);
96318
- const callOmoAgent = createCallOmoAgent(ctx, managers.backgroundManager, pluginConfig.disabled_agents ?? [], pluginConfig.agents, pluginConfig.categories);
96318
+ const callDrizzyAgent = createCallDrizzyAgent(ctx, managers.backgroundManager, pluginConfig.disabled_agents ?? [], pluginConfig.agents, pluginConfig.categories);
96319
96319
  const isMultimodalLookerEnabled = !(pluginConfig.disabled_agents ?? []).some((agent) => agent.toLowerCase() === "multimodal-looker");
96320
96320
  const lookAt = isMultimodalLookerEnabled ? createLookAt(ctx) : null;
96321
96321
  const delegateTask = createDelegateTask({
@@ -96382,7 +96382,7 @@ function createToolRegistry(args) {
96382
96382
  ...createAstGrepTools(ctx),
96383
96383
  ...createSessionManagerTools(ctx),
96384
96384
  ...backgroundTools,
96385
- call_omo_agent: callOmoAgent,
96385
+ call_drizzy_agent: callDrizzyAgent,
96386
96386
  ...lookAt ? { look_at: lookAt } : {},
96387
96387
  task: delegateTask,
96388
96388
  skill_mcp: skillMcpTool,
@@ -0,0 +1,5 @@
1
+ import type { BackgroundManager } from "../../features/background-agent";
2
+ import type { PluginInput } from "@opencode-ai/plugin";
3
+ import type { CallDrizzyAgentArgs } from "./types";
4
+ import type { ToolContextWithMetadata } from "./tool-context-with-metadata";
5
+ export declare function executeBackgroundAgent(args: CallDrizzyAgentArgs, toolContext: ToolContextWithMetadata, manager: BackgroundManager, client: PluginInput["client"]): Promise<string>;
@@ -1,8 +1,8 @@
1
- import type { CallOmoAgentArgs } from "./types";
1
+ import type { CallDrizzyAgentArgs } from "./types";
2
2
  import type { BackgroundManager } from "../../features/background-agent";
3
3
  import type { PluginInput } from "@opencode-ai/plugin";
4
4
  import type { FallbackEntry } from "../../shared/model-requirements";
5
- export declare function executeBackground(args: CallOmoAgentArgs, toolContext: {
5
+ export declare function executeBackground(args: CallDrizzyAgentArgs, toolContext: {
6
6
  sessionID: string;
7
7
  messageID: string;
8
8
  agent: string;
@@ -0,0 +1,2 @@
1
+ export declare const ALLOWED_AGENTS: readonly ["explore", "librarian", "oracle", "gptcoder", "plan-consultant", "plan-reviewer", "multimodal-looker"];
2
+ export declare const CALL_DRIZZY_AGENT_DESCRIPTION = "Spawn explore/librarian agent. run_in_background REQUIRED (true=async with task_id, false=sync).\n\nAvailable: {agents}\n\nPass `session_id=<id>` to continue previous agent with full context. Nested subagent depth is tracked automatically and blocked past the configured limit. Prompts MUST be in English. Use `background_output` for async results.";
@@ -1,3 +1,3 @@
1
1
  export * from "./types";
2
2
  export * from "./constants";
3
- export { createCallOmoAgent } from "./tools";
3
+ export { createCallDrizzyAgent } from "./tools";
@@ -1,6 +1,6 @@
1
- import type { CallOmoAgentArgs } from "./types";
1
+ import type { CallDrizzyAgentArgs } from "./types";
2
2
  import type { PluginInput } from "@opencode-ai/plugin";
3
- export declare function createOrGetSession(args: CallOmoAgentArgs, toolContext: {
3
+ export declare function createOrGetSession(args: CallDrizzyAgentArgs, toolContext: {
4
4
  sessionID: string;
5
5
  messageID: string;
6
6
  agent: string;
@@ -1,7 +1,7 @@
1
1
  import type { PluginInput } from "@opencode-ai/plugin";
2
- import type { CallOmoAgentArgs } from "./types";
2
+ import type { CallDrizzyAgentArgs } from "./types";
3
3
  import type { ToolContextWithMetadata } from "./tool-context-with-metadata";
4
- export declare function resolveOrCreateSessionId(ctx: PluginInput, args: CallOmoAgentArgs, toolContext: ToolContextWithMetadata): Promise<{
4
+ export declare function resolveOrCreateSessionId(ctx: PluginInput, args: CallDrizzyAgentArgs, toolContext: ToolContextWithMetadata): Promise<{
5
5
  ok: true;
6
6
  sessionID: string;
7
7
  } | {
@@ -1,4 +1,4 @@
1
- import type { CallOmoAgentArgs } from "./types";
1
+ import type { CallDrizzyAgentArgs } from "./types";
2
2
  import type { PluginInput } from "@opencode-ai/plugin";
3
3
  import { clearSessionFallbackChain, setSessionFallbackChain } from "../../hooks/model-fallback/hook";
4
4
  import type { FallbackEntry } from "../../shared/model-requirements";
@@ -16,7 +16,7 @@ type SpawnReservation = {
16
16
  commit: () => number;
17
17
  rollback: () => void;
18
18
  };
19
- export declare function executeSync(args: CallOmoAgentArgs, toolContext: {
19
+ export declare function executeSync(args: CallDrizzyAgentArgs, toolContext: {
20
20
  sessionID: string;
21
21
  messageID: string;
22
22
  agent: string;
@@ -1,4 +1,4 @@
1
1
  import { type PluginInput, type ToolDefinition } from "@opencode-ai/plugin";
2
2
  import type { BackgroundManager } from "../../features/background-agent";
3
3
  import type { CategoriesConfig, AgentOverrides } from "../../config/schema";
4
- export declare function createCallOmoAgent(ctx: PluginInput, backgroundManager: BackgroundManager, disabledAgents?: string[], agentOverrides?: AgentOverrides, userCategories?: CategoriesConfig): ToolDefinition;
4
+ export declare function createCallDrizzyAgent(ctx: PluginInput, backgroundManager: BackgroundManager, disabledAgents?: string[], agentOverrides?: AgentOverrides, userCategories?: CategoriesConfig): ToolDefinition;
@@ -1,13 +1,13 @@
1
1
  import type { ALLOWED_AGENTS } from "./constants";
2
2
  export type AllowedAgentType = (typeof ALLOWED_AGENTS)[number];
3
- export interface CallOmoAgentArgs {
3
+ export interface CallDrizzyAgentArgs {
4
4
  description: string;
5
5
  prompt: string;
6
6
  subagent_type: string;
7
7
  run_in_background: boolean;
8
8
  session_id?: string;
9
9
  }
10
- export interface CallOmoAgentSyncResult {
10
+ export interface CallDrizzyAgentSyncResult {
11
11
  title: string;
12
12
  metadata: {
13
13
  summary?: Array<{
@@ -30,5 +30,5 @@ export type ToolContextWithMetadata = {
30
30
  metadata?: (input: {
31
31
  title?: string;
32
32
  metadata?: Record<string, unknown>;
33
- }) => void;
33
+ }) => void | Promise<void>;
34
34
  };
@@ -17,7 +17,7 @@ export declare const CATEGORY_DESCRIPTIONS: Record<string, string>;
17
17
  * then summarize user requirements and clarify uncertainties before proceeding.
18
18
  * Also MANDATES dependency graphs, parallel execution analysis, and category+skill recommendations.
19
19
  */
20
- export declare const PLAN_AGENT_SYSTEM_PREPEND_STATIC_BEFORE_SKILLS = "<system>\nBEFORE you begin planning, you MUST first understand the user's request deeply.\n\nMANDATORY CONTEXT GATHERING PROTOCOL:\n1. Launch background agents to gather context:\n - call_omo_agent(description=\"Explore codebase patterns\", subagent_type=\"explore\", run_in_background=true, prompt=\"<search for relevant patterns, files, and implementations in the codebase related to user's request>\")\n - call_omo_agent(description=\"Research documentation\", subagent_type=\"librarian\", run_in_background=true, prompt=\"<search for external documentation, examples, and best practices related to user's request>\")\n\n2. After gathering context, ALWAYS present:\n - **User Request Summary**: Concise restatement of what the user is asking for\n - **Uncertainties**: List of unclear points, ambiguities, or assumptions you're making\n - **Clarifying Questions**: Specific questions to resolve the uncertainties\n\n3. ITERATE until ALL requirements are crystal clear:\n - Do NOT proceed to planning until you have 100% clarity\n - Ask the user to confirm your understanding\n - Resolve every ambiguity before generating the work plan\n\nREMEMBER: Vague requirements lead to failed implementations. Take the time to understand thoroughly.\n</system>\n\n<CRITICAL_REQUIREMENT_DEPENDENCY_PARALLEL_EXECUTION_CATEGORY_SKILLS>\n#####################################################################\n# #\n# \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2557 \u2588\u2588\u2557\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2557 #\n# \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u2588\u2588\u2554\u2550\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557 #\n# \u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2551 \u2588\u2588\u2551 #\n# \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u255D \u2588\u2588\u2551\u2584\u2584 \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u255D \u2588\u2588\u2551 \u2588\u2588\u2551 #\n# \u2588\u2588\uFFFD\uFFFD \u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D #\n# \u255A\u2550\u255D \u255A\u2550\u255D\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2580\u2580\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u255D\u255A\u2550\u255D \u255A\u2550\u255D\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D\u255A\u2550\u2550\u2550\u2550\u2550\u255D #\n# #\n#####################################################################\n\nYOU MUST INCLUDE THE FOLLOWING SECTIONS IN YOUR PLAN OUTPUT.\nTHIS IS NON-NEGOTIABLE. FAILURE TO INCLUDE THESE SECTIONS = INCOMPLETE PLAN.\n\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\u2588 SECTION 1: TASK DEPENDENCY GRAPH (MANDATORY) \u2588\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\nYOU MUST ANALYZE AND DOCUMENT TASK DEPENDENCIES.\n\nFor EVERY task in your plan, you MUST specify:\n- Which tasks it DEPENDS ON (blockers)\n- Which tasks DEPEND ON IT (dependents)\n- The REASON for each dependency\n\nExample format:\n```\n## Task Dependency Graph\n\n| Task | Depends On | Reason |\n|------|------------|--------|\n| Task 1 | None | Starting point, no prerequisites |\n| Task 2 | Task 1 | Requires output/artifact from Task 1 |\n| Task 3 | Task 1 | Uses same foundation established in Task 1 |\n| Task 4 | Task 2, Task 3 | Integrates results from both tasks |\n```\n\nWHY THIS MATTERS:\n- Executors need to know execution ORDER\n- Prevents blocked work from starting prematurely\n- Identifies critical path for project timeline\n\n\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\u2588 SECTION 2: PARALLEL EXECUTION GRAPH (MANDATORY) \u2588\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\nYOU MUST IDENTIFY WHICH TASKS CAN RUN IN PARALLEL.\n\nAnalyze your dependency graph and group tasks into PARALLEL EXECUTION WAVES:\n\nExample format:\n```\n## Parallel Execution Graph\n\nWave 1 (Start immediately):\n\u251C\u2500\u2500 Task 1: [description] (no dependencies)\n\u2514\u2500\u2500 Task 5: [description] (no dependencies)\n\nWave 2 (After Wave 1 completes):\n\u251C\u2500\u2500 Task 2: [description] (depends: Task 1)\n\u251C\u2500\u2500 Task 3: [description] (depends: Task 1)\n\u2514\u2500\u2500 Task 6: [description] (depends: Task 5)\n\nWave 3 (After Wave 2 completes):\n\u2514\u2500\u2500 Task 4: [description] (depends: Task 2, Task 3)\n\nCritical Path: Task 1 \u2192 Task 2 \u2192 Task 4\nEstimated Parallel Speedup: 40% faster than sequential\n```\n\nWHY THIS MATTERS:\n- MASSIVE time savings through parallelization\n- Executors can dispatch multiple agents simultaneously\n- Identifies bottlenecks in the execution plan\n\n\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\u2588 SECTION 3: CATEGORY + SKILLS RECOMMENDATIONS (MANDATORY) \u2588\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\nFOR EVERY TASK, YOU MUST RECOMMEND:\n1. Which CATEGORY to use for delegation\n2. Which SKILLS to load for the delegated agent\n";
20
+ export declare const PLAN_AGENT_SYSTEM_PREPEND_STATIC_BEFORE_SKILLS = "<system>\nBEFORE you begin planning, you MUST first understand the user's request deeply.\n\nMANDATORY CONTEXT GATHERING PROTOCOL:\n1. Launch background agents to gather context:\n - call_drizzy_agent(description=\"Explore codebase patterns\", subagent_type=\"explore\", run_in_background=true, prompt=\"<search for relevant patterns, files, and implementations in the codebase related to user's request>\")\n - call_drizzy_agent(description=\"Research documentation\", subagent_type=\"librarian\", run_in_background=true, prompt=\"<search for external documentation, examples, and best practices related to user's request>\")\n\n2. After gathering context, ALWAYS present:\n - **User Request Summary**: Concise restatement of what the user is asking for\n - **Uncertainties**: List of unclear points, ambiguities, or assumptions you're making\n - **Clarifying Questions**: Specific questions to resolve the uncertainties\n\n3. ITERATE until ALL requirements are crystal clear:\n - Do NOT proceed to planning until you have 100% clarity\n - Ask the user to confirm your understanding\n - Resolve every ambiguity before generating the work plan\n\nREMEMBER: Vague requirements lead to failed implementations. Take the time to understand thoroughly.\n</system>\n\n<CRITICAL_REQUIREMENT_DEPENDENCY_PARALLEL_EXECUTION_CATEGORY_SKILLS>\n#####################################################################\n# #\n# \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2557 \u2588\u2588\u2557\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2557 #\n# \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u2588\u2588\u2554\u2550\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557 #\n# \u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2551 \u2588\u2588\u2551 #\n# \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u255D \u2588\u2588\u2551\u2584\u2584 \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u255D \u2588\u2588\u2551 \u2588\u2588\u2551 #\n# \u2588\u2588\uFFFD\uFFFD \u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D #\n# \u255A\u2550\u255D \u255A\u2550\u255D\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2580\u2580\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u255D\u255A\u2550\u255D \u255A\u2550\u255D\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D\u255A\u2550\u2550\u2550\u2550\u2550\u255D #\n# #\n#####################################################################\n\nYOU MUST INCLUDE THE FOLLOWING SECTIONS IN YOUR PLAN OUTPUT.\nTHIS IS NON-NEGOTIABLE. FAILURE TO INCLUDE THESE SECTIONS = INCOMPLETE PLAN.\n\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\u2588 SECTION 1: TASK DEPENDENCY GRAPH (MANDATORY) \u2588\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\nYOU MUST ANALYZE AND DOCUMENT TASK DEPENDENCIES.\n\nFor EVERY task in your plan, you MUST specify:\n- Which tasks it DEPENDS ON (blockers)\n- Which tasks DEPEND ON IT (dependents)\n- The REASON for each dependency\n\nExample format:\n```\n## Task Dependency Graph\n\n| Task | Depends On | Reason |\n|------|------------|--------|\n| Task 1 | None | Starting point, no prerequisites |\n| Task 2 | Task 1 | Requires output/artifact from Task 1 |\n| Task 3 | Task 1 | Uses same foundation established in Task 1 |\n| Task 4 | Task 2, Task 3 | Integrates results from both tasks |\n```\n\nWHY THIS MATTERS:\n- Executors need to know execution ORDER\n- Prevents blocked work from starting prematurely\n- Identifies critical path for project timeline\n\n\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\u2588 SECTION 2: PARALLEL EXECUTION GRAPH (MANDATORY) \u2588\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\nYOU MUST IDENTIFY WHICH TASKS CAN RUN IN PARALLEL.\n\nAnalyze your dependency graph and group tasks into PARALLEL EXECUTION WAVES:\n\nExample format:\n```\n## Parallel Execution Graph\n\nWave 1 (Start immediately):\n\u251C\u2500\u2500 Task 1: [description] (no dependencies)\n\u2514\u2500\u2500 Task 5: [description] (no dependencies)\n\nWave 2 (After Wave 1 completes):\n\u251C\u2500\u2500 Task 2: [description] (depends: Task 1)\n\u251C\u2500\u2500 Task 3: [description] (depends: Task 1)\n\u2514\u2500\u2500 Task 6: [description] (depends: Task 5)\n\nWave 3 (After Wave 2 completes):\n\u2514\u2500\u2500 Task 4: [description] (depends: Task 2, Task 3)\n\nCritical Path: Task 1 \u2192 Task 2 \u2192 Task 4\nEstimated Parallel Speedup: 40% faster than sequential\n```\n\nWHY THIS MATTERS:\n- MASSIVE time savings through parallelization\n- Executors can dispatch multiple agents simultaneously\n- Identifies bottlenecks in the execution plan\n\n\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\u2588 SECTION 3: CATEGORY + SKILLS RECOMMENDATIONS (MANDATORY) \u2588\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\nFOR EVERY TASK, YOU MUST RECOMMEND:\n1. Which CATEGORY to use for delegation\n2. Which SKILLS to load for the delegated agent\n";
21
21
  export declare const PLAN_AGENT_SYSTEM_PREPEND_STATIC_AFTER_SKILLS = "### REQUIRED OUTPUT FORMAT\n\nFor EACH task, include a recommendation block:\n\n```\n### Task N: [Task Title]\n\n**Delegation Recommendation:**\n- Category: `[category-name]` - [reason for choice]\n- Skills: [`skill-1`, `skill-2`] - [reason each skill is needed]\n\n**Skills Evaluation:**\n- INCLUDED `skill-name`: [reason]\n- OMITTED `other-skill`: [reason domain doesn't overlap]\n```\n\nWHY THIS MATTERS:\n- Category determines the MODEL used for execution\n- Skills inject SPECIALIZED KNOWLEDGE into the executor\n- Missing a relevant skill = suboptimal execution\n- Wrong category = wrong model = poor results\n\n\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\u2588 RESPONSE FORMAT SPECIFICATION (MANDATORY) \u2588\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\nYOUR PLAN OUTPUT MUST FOLLOW THIS EXACT STRUCTURE:\n\n```markdown\n# [Plan Title]\n\n## Context\n[User request summary, interview findings, research results]\n\n## Task Dependency Graph\n[Dependency table - see Section 1]\n\n## Parallel Execution Graph \n[Wave structure - see Section 2]\n\n## Tasks\n\n### Task 1: [Title]\n**Description**: [What to do]\n**Delegation Recommendation**:\n- Category: `[category]` - [reason]\n- Skills: [`skill-1`] - [reason]\n**Skills Evaluation**: [\u2705 included / \u274C omitted with reasons]\n**Depends On**: [Task IDs or \"None\"]\n**Acceptance Criteria**: [Verifiable conditions]\n\n### Task 2: [Title]\n[Same structure...]\n\n## Commit Strategy\n[How to commit changes atomically]\n\n## Success Criteria\n[Final verification steps]\n```\n\n#####################################################################\n# #\n# FAILURE TO INCLUDE THESE SECTIONS = PLAN WILL BE REJECTED #\n# BY PLAN REVIEWER. DO NOT SKIP. DO NOT ABBREVIATE. #\n# #\n#####################################################################\n</CRITICAL_REQUIREMENT_DEPENDENCY_PARALLEL_EXECUTION_CATEGORY_SKILLS>\n\n<FINAL_OUTPUT_FOR_CALLER>\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\u2588 SECTION 4: ACTIONABLE TODO LIST FOR CALLER (MANDATORY) \u2588\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\nYOU MUST END YOUR RESPONSE WITH THIS SECTION.\n\n```markdown\n## TODO List (ADD THESE)\n\n> CALLER: Add these TODOs using TodoWrite/TaskCreate and execute by wave.\n\n### Wave 1 (Start Immediately - No Dependencies)\n\n- [ ] **1. [Task Title]**\n - What: [Clear implementation steps]\n - Depends: None\n - Blocks: [Tasks that depend on this]\n - Category: `category-name`\n - Skills: [`skill-1`, `skill-2`]\n - QA: [How to verify completion - specific command or check]\n\n- [ ] **N. [Task Title]**\n - What: [Steps]\n - Depends: None\n - Blocks: [...]\n - Category: `category-name`\n - Skills: [`skill-1`]\n - QA: [Verification]\n\n### Wave 2 (After Wave 1 Completes)\n\n- [ ] **2. [Task Title]**\n - What: [Steps]\n - Depends: 1\n - Blocks: [4]\n - Category: `category-name`\n - Skills: [`skill-1`]\n - QA: [Verification]\n\n[Continue for all waves...]\n\n## Execution Instructions\n\n1. **Wave 1**: Fire these tasks IN PARALLEL (no dependencies)\n ```\n task(category=\"...\", load_skills=[...], run_in_background=false, prompt=\"Task 1: ...\")\n task(category=\"...\", load_skills=[...], run_in_background=false, prompt=\"Task N: ...\")\n ```\n\n2. **Wave 2**: After Wave 1 completes, fire next wave IN PARALLEL\n ```\n task(category=\"...\", load_skills=[...], run_in_background=false, prompt=\"Task 2: ...\")\n ```\n\n3. Continue until all waves complete\n\n4. Final QA: Verify all tasks pass their QA criteria\n```\n\nWHY THIS FORMAT IS MANDATORY:\n- Caller can directly copy TODO items\n- Wave grouping enables parallel execution\n- Each task has clear task parameters\n- QA criteria ensure verifiable completion\n</FINAL_OUTPUT_FOR_CALLER>\n\n";
22
22
  export declare function buildPlanAgentSkillsSection(categories?: AvailableCategory[], skills?: AvailableSkill[]): string;
23
23
  export declare function buildPlanAgentSystemPrepend(categories?: AvailableCategory[], skills?: AvailableSkill[]): string;
@@ -12,7 +12,7 @@ export { createSkillMcpTool } from "./skill-mcp";
12
12
  import type { PluginInput, ToolDefinition } from "@opencode-ai/plugin";
13
13
  import type { BackgroundManager } from "../features/background-agent";
14
14
  type OpencodeClient = PluginInput["client"];
15
- export { createCallOmoAgent } from "./call-omo-agent";
15
+ export { createCallDrizzyAgent } from "./call-drizzy-agent";
16
16
  export { createLookAt } from "./look-at";
17
17
  export { createDelegateTask } from "./delegate-task";
18
18
  export { createTaskCreateTool, createTaskGetTool, createTaskList, createTaskUpdateTool, } from "./task";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "drizzy-agent",
3
- "version": "0.7.0",
3
+ "version": "0.7.1",
4
4
  "description": "DrizzyAgent - AI agent plugin for OpenCode",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -76,17 +76,17 @@
76
76
  "typescript": "^5.7.3"
77
77
  },
78
78
  "optionalDependencies": {
79
- "drizzy-agent-darwin-arm64": "0.7.0",
80
- "drizzy-agent-darwin-x64": "0.7.0",
81
- "drizzy-agent-darwin-x64-baseline": "0.7.0",
82
- "drizzy-agent-linux-arm64": "0.7.0",
83
- "drizzy-agent-linux-arm64-musl": "0.7.0",
84
- "drizzy-agent-linux-x64": "0.7.0",
85
- "drizzy-agent-linux-x64-baseline": "0.7.0",
86
- "drizzy-agent-linux-x64-musl": "0.7.0",
87
- "drizzy-agent-linux-x64-musl-baseline": "0.7.0",
88
- "drizzy-agent-windows-x64": "0.7.0",
89
- "drizzy-agent-windows-x64-baseline": "0.7.0"
79
+ "drizzy-agent-darwin-arm64": "0.7.1",
80
+ "drizzy-agent-darwin-x64": "0.7.1",
81
+ "drizzy-agent-darwin-x64-baseline": "0.7.1",
82
+ "drizzy-agent-linux-arm64": "0.7.1",
83
+ "drizzy-agent-linux-arm64-musl": "0.7.1",
84
+ "drizzy-agent-linux-x64": "0.7.1",
85
+ "drizzy-agent-linux-x64-baseline": "0.7.1",
86
+ "drizzy-agent-linux-x64-musl": "0.7.1",
87
+ "drizzy-agent-linux-x64-musl-baseline": "0.7.1",
88
+ "drizzy-agent-windows-x64": "0.7.1",
89
+ "drizzy-agent-windows-x64-baseline": "0.7.1"
90
90
  },
91
91
  "overrides": {
92
92
  "@opencode-ai/sdk": "^1.2.24"
@@ -1,5 +0,0 @@
1
- import type { BackgroundManager } from "../../features/background-agent";
2
- import type { PluginInput } from "@opencode-ai/plugin";
3
- import type { CallOmoAgentArgs } from "./types";
4
- import type { ToolContextWithMetadata } from "./tool-context-with-metadata";
5
- export declare function executeBackgroundAgent(args: CallOmoAgentArgs, toolContext: ToolContextWithMetadata, manager: BackgroundManager, client: PluginInput["client"]): Promise<string>;
@@ -1,2 +0,0 @@
1
- export declare const ALLOWED_AGENTS: readonly ["explore", "librarian", "oracle", "gptcoder", "plan-consultant", "plan-reviewer", "multimodal-looker"];
2
- export declare const CALL_OMO_AGENT_DESCRIPTION = "Spawn explore/librarian agent. run_in_background REQUIRED (true=async with task_id, false=sync).\n\nAvailable: {agents}\n\nPass `session_id=<id>` to continue previous agent with full context. Nested subagent depth is tracked automatically and blocked past the configured limit. Prompts MUST be in English. Use `background_output` for async results.";