drizzy-agent 0.6.3 → 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.
- package/README.md +3 -3
- package/dist/agents/builtin-agents/{atlas-agent.d.ts → orchestrator-agent.d.ts} +1 -1
- package/dist/agents/coder-junior/gpt-5-3-codex.d.ts +1 -1
- package/dist/agents/coder-junior/gpt-5-4.d.ts +1 -1
- package/dist/agents/coder-junior/gpt.d.ts +1 -1
- package/dist/agents/env-context.d.ts +1 -1
- package/dist/agents/{atlas → orchestrator}/agent.d.ts +9 -9
- package/dist/agents/{atlas → orchestrator}/default.d.ts +3 -3
- package/dist/agents/{atlas → orchestrator}/gemini.d.ts +3 -3
- package/dist/agents/{atlas → orchestrator}/gpt.d.ts +3 -3
- package/dist/agents/orchestrator/index.d.ts +2 -0
- package/dist/agents/{atlas → orchestrator}/prompt-section-builder.d.ts +1 -1
- package/dist/agents/types.d.ts +2 -2
- package/dist/cli/index.js +26 -26
- package/dist/config/schema/agent-names.d.ts +3 -3
- package/dist/config/schema/agent-overrides.d.ts +1 -1
- package/dist/config/schema/drizzy-agent-config.d.ts +2 -2
- package/dist/config/schema/hooks.d.ts +1 -1
- package/dist/create-hooks.d.ts +1 -1
- package/dist/drizzy-agent.schema.json +2 -2
- package/dist/features/boulder-state/types.d.ts +1 -1
- package/dist/features/builtin-commands/templates/refactor.d.ts +1 -1
- package/dist/features/builtin-commands/templates/start-work.d.ts +1 -1
- package/dist/features/hook-message-injector/injector.d.ts +1 -1
- package/dist/hooks/index.d.ts +1 -1
- package/dist/hooks/{atlas → orchestrator}/event-handler.d.ts +3 -3
- package/dist/hooks/orchestrator/hook-name.d.ts +1 -0
- package/dist/hooks/orchestrator/idle-event.d.ts +8 -0
- package/dist/hooks/orchestrator/index.d.ts +3 -0
- package/dist/hooks/{atlas/atlas-hook.d.ts → orchestrator/orchestrator-hook.d.ts} +2 -2
- package/dist/hooks/{atlas → orchestrator}/types.d.ts +1 -1
- package/dist/hooks/planner-md-only/agent-resolution.d.ts +1 -1
- package/dist/index.js +196 -196
- package/dist/plugin/hooks/create-continuation-hooks.d.ts +2 -2
- package/dist/shared/agent-display-names.d.ts +1 -1
- package/dist/shared/agent-model-defaults.d.ts +2 -2
- package/dist/tools/call-drizzy-agent/background-agent-executor.d.ts +5 -0
- package/dist/tools/{call-omo-agent → call-drizzy-agent}/background-executor.d.ts +2 -2
- package/dist/tools/call-drizzy-agent/constants.d.ts +2 -0
- package/dist/tools/{call-omo-agent → call-drizzy-agent}/index.d.ts +1 -1
- package/dist/tools/{call-omo-agent → call-drizzy-agent}/session-creator.d.ts +2 -2
- package/dist/tools/{call-omo-agent → call-drizzy-agent}/subagent-session-creator.d.ts +2 -2
- package/dist/tools/{call-omo-agent → call-drizzy-agent}/sync-executor.d.ts +2 -2
- package/dist/tools/{call-omo-agent → call-drizzy-agent}/tools.d.ts +1 -1
- package/dist/tools/{call-omo-agent → call-drizzy-agent}/types.d.ts +3 -3
- package/dist/tools/delegate-task/constants.d.ts +1 -1
- package/dist/tools/index.d.ts +1 -1
- package/package.json +12 -12
- package/dist/agents/atlas/index.d.ts +0 -2
- package/dist/hooks/atlas/hook-name.d.ts +0 -1
- package/dist/hooks/atlas/idle-event.d.ts +0 -8
- package/dist/hooks/atlas/index.d.ts +0 -3
- package/dist/tools/call-omo-agent/background-agent-executor.d.ts +0 -5
- package/dist/tools/call-omo-agent/constants.d.ts +0 -2
- /package/dist/hooks/{atlas → orchestrator}/boulder-continuation-injector.d.ts +0 -0
- /package/dist/hooks/{atlas → orchestrator}/coder-path.d.ts +0 -0
- /package/dist/hooks/{atlas → orchestrator}/is-abort-error.d.ts +0 -0
- /package/dist/hooks/{atlas → orchestrator}/recent-model-resolver.d.ts +0 -0
- /package/dist/hooks/{atlas → orchestrator}/session-last-agent.d.ts +0 -0
- /package/dist/hooks/{atlas → orchestrator}/subagent-session-id.d.ts +0 -0
- /package/dist/hooks/{atlas → orchestrator}/system-reminder-templates.d.ts +0 -0
- /package/dist/hooks/{atlas → orchestrator}/tool-execute-after.d.ts +0 -0
- /package/dist/hooks/{atlas → orchestrator}/tool-execute-before.d.ts +0 -0
- /package/dist/hooks/{atlas → orchestrator}/verification-reminders.d.ts +0 -0
- /package/dist/hooks/{atlas → orchestrator}/write-edit-tool-policy.d.ts +0 -0
- /package/dist/tools/{call-omo-agent → call-drizzy-agent}/completion-poller.d.ts +0 -0
- /package/dist/tools/{call-omo-agent → call-drizzy-agent}/message-dir.d.ts +0 -0
- /package/dist/tools/{call-omo-agent → call-drizzy-agent}/message-processor.d.ts +0 -0
- /package/dist/tools/{call-omo-agent → call-drizzy-agent}/message-storage-directory.d.ts +0 -0
- /package/dist/tools/{call-omo-agent → call-drizzy-agent}/tool-context-with-metadata.d.ts +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { HookName, DrizzyAgentConfig } from "../../config";
|
|
2
2
|
import type { BackgroundManager } from "../../features/background-agent";
|
|
3
3
|
import type { PluginContext } from "../types";
|
|
4
|
-
import { createGptPermissionContinuationHook, createTodoContinuationEnforcer, createBackgroundNotificationHook, createStopContinuationGuardHook, createCompactionContextInjector, createCompactionTodoPreserverHook,
|
|
4
|
+
import { createGptPermissionContinuationHook, createTodoContinuationEnforcer, createBackgroundNotificationHook, createStopContinuationGuardHook, createCompactionContextInjector, createCompactionTodoPreserverHook, createOrchestratorHook } from "../../hooks";
|
|
5
5
|
import { createUnstableAgentBabysitter } from "../unstable-agent-babysitter";
|
|
6
6
|
export type ContinuationHooks = {
|
|
7
7
|
gptPermissionContinuation: ReturnType<typeof createGptPermissionContinuationHook> | null;
|
|
@@ -11,7 +11,7 @@ export type ContinuationHooks = {
|
|
|
11
11
|
todoContinuationEnforcer: ReturnType<typeof createTodoContinuationEnforcer> | null;
|
|
12
12
|
unstableAgentBabysitter: ReturnType<typeof createUnstableAgentBabysitter> | null;
|
|
13
13
|
backgroundNotificationHook: ReturnType<typeof createBackgroundNotificationHook> | null;
|
|
14
|
-
|
|
14
|
+
orchestratorHook: ReturnType<typeof createOrchestratorHook> | null;
|
|
15
15
|
};
|
|
16
16
|
type SessionRecovery = {
|
|
17
17
|
setOnAbortCallback: (callback: (sessionID: string) => void) => void;
|
|
@@ -7,6 +7,6 @@ export declare const AGENT_DISPLAY_NAMES: Record<string, string>;
|
|
|
7
7
|
export declare function getAgentDisplayName(configKey: string): string;
|
|
8
8
|
/**
|
|
9
9
|
* Resolve an agent name (display name or config key) to its lowercase config key.
|
|
10
|
-
* "
|
|
10
|
+
* "Orchestrator" → "orchestrator", "orchestrator" → "orchestrator", "unknown" → "unknown"
|
|
11
11
|
*/
|
|
12
12
|
export declare function getAgentConfigKey(agentName: string): string;
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
* | **multimodal-looker** | gpt-5.4 → k2p5 → gemini-3-flash → glm-4.6v → gpt-5-nano |
|
|
53
53
|
* | **plan-consultant** | claude-opus-4-6 → k2p5 → gpt-5.4 → gemini-3.1-pro |
|
|
54
54
|
* | **plan-reviewer** | gpt-5.4 → kimi-k2.5 → claude-opus-4-6 → gemini-3.1-pro → big-pickle (free) |
|
|
55
|
-
* | **
|
|
55
|
+
* | **orchestrator** | k2p5 → claude-sonnet-4-6 → claude-sonnet-4-5 → gpt-5.4 → gemini-3.1-pro |
|
|
56
56
|
* | **coder-junior** | claude-sonnet-4-6 → gpt-5.3-codex → gemini-3-flash (runtime only) |
|
|
57
57
|
*
|
|
58
58
|
* ## Category Model Chains
|
|
@@ -78,7 +78,7 @@
|
|
|
78
78
|
*
|
|
79
79
|
* The following changed from install-time defaults after unification:
|
|
80
80
|
* - **librarian**: Now uses gemini-3-flash first (was glm-4.7)
|
|
81
|
-
* - **
|
|
81
|
+
* - **orchestrator**: Now uses k2p5 first (was claude-sonnet-4-6)
|
|
82
82
|
* - **gptcoder**: Now allows github-copilot fallback (was OpenAI-only)
|
|
83
83
|
*
|
|
84
84
|
* These simplifications achieve true single source of truth.
|
|
@@ -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 {
|
|
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:
|
|
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,6 +1,6 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { CallDrizzyAgentArgs } from "./types";
|
|
2
2
|
import type { PluginInput } from "@opencode-ai/plugin";
|
|
3
|
-
export declare function createOrGetSession(args:
|
|
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 {
|
|
2
|
+
import type { CallDrizzyAgentArgs } from "./types";
|
|
3
3
|
import type { ToolContextWithMetadata } from "./tool-context-with-metadata";
|
|
4
|
-
export declare function resolveOrCreateSessionId(ctx: PluginInput, args:
|
|
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 {
|
|
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:
|
|
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
|
|
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
|
|
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
|
|
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 -
|
|
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;
|
package/dist/tools/index.d.ts
CHANGED
|
@@ -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 {
|
|
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.
|
|
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.
|
|
80
|
-
"drizzy-agent-darwin-x64": "0.
|
|
81
|
-
"drizzy-agent-darwin-x64-baseline": "0.
|
|
82
|
-
"drizzy-agent-linux-arm64": "0.
|
|
83
|
-
"drizzy-agent-linux-arm64-musl": "0.
|
|
84
|
-
"drizzy-agent-linux-x64": "0.
|
|
85
|
-
"drizzy-agent-linux-x64-baseline": "0.
|
|
86
|
-
"drizzy-agent-linux-x64-musl": "0.
|
|
87
|
-
"drizzy-agent-linux-x64-musl-baseline": "0.
|
|
88
|
-
"drizzy-agent-windows-x64": "0.
|
|
89
|
-
"drizzy-agent-windows-x64-baseline": "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 +0,0 @@
|
|
|
1
|
-
export declare const HOOK_NAME = "atlas";
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { PluginInput } from "@opencode-ai/plugin";
|
|
2
|
-
import type { AtlasHookOptions, SessionState } from "./types";
|
|
3
|
-
export declare function handleAtlasSessionIdle(input: {
|
|
4
|
-
ctx: PluginInput;
|
|
5
|
-
options?: AtlasHookOptions;
|
|
6
|
-
getState: (sessionID: string) => SessionState;
|
|
7
|
-
sessionID: string;
|
|
8
|
-
}): Promise<void>;
|
|
@@ -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.";
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|