drizzy-agent 0.5.4 → 0.6.0-beta.2

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 CHANGED
@@ -17,11 +17,16 @@ DrizzyAgent provides **discipline agents** that work together to complete coding
17
17
  | **Librarian** | Documentation/code search - external references, OSS examples | Gemini 3 Flash / GLM-4.7 / Claude Sonnet 4.5 |
18
18
  | **Explore** | Fast codebase grep - pattern discovery, cross-layer search | Custom resolver (Claude / Copilot / OpenAI) |
19
19
  | **Atlas** | Plan executor - runs Planner-generated plans step by step | Kimi K2.5 / Claude Sonnet 4.6 / GPT-5.4 / Gemini 3.1 Pro |
20
+ | **Researcher** | Deep research orchestrator - multi-source investigation with cited reports | Gemini 3.1 Pro / Kimi K2.5 / Claude Sonnet 4.6 / GPT-5.4 / GLM-4.7 Free |
20
21
  | **Coder Junior** | Delegated sub-tasks from Coder via category system | Claude Sonnet 4.6 / GPT-5.4 / Gemini 3 Flash |
22
+ | **Researcher Junior** | Focused web research subagent for parallel sub-topic investigation | Kimi K2.5 / Claude Sonnet 4.6 / GPT-5.4 / GLM-4.7 Free |
21
23
  | **Plan Consultant** | Pre-planning analysis - scope clarification, ambiguity detection | Claude Opus 4.6 / Kimi K2.5 / GPT-5.4 / Gemini 3.1 Pro |
22
24
  | **Plan Reviewer** | Plan quality review - verifiability, completeness checks | GPT-5.4 / Kimi K2.5 / Claude Opus 4.6 / Gemini 3.1 Pro |
23
25
  | **Multimodal Looker** | Image and visual analysis | GPT-5.4 / Kimi K2.5 / Gemini 3 Flash |
24
26
 
27
+ Main selectable agents: **Coder**, **GPTCoder**, **Planner**, **Atlas**, **Researcher**.
28
+ Subagent-only specialists include **Researcher Junior**, **Oracle**, **Librarian**, **Explore**, and other focused helpers.
29
+
25
30
  ## Key Features
26
31
 
27
32
  ### `ultrawork` Mode
@@ -106,6 +111,9 @@ Create `.opencode/drizzy-agent.jsonc` or `~/.config/opencode/drizzy-agent.jsonc`
106
111
  "agents": {
107
112
  "coder": {
108
113
  "model": "claude-opus-4-6"
114
+ },
115
+ "researcher": {
116
+ "model": "gemini-3.1-pro"
109
117
  }
110
118
  },
111
119
  "categories": {
@@ -153,6 +161,9 @@ You can add explicit overrides on top of the computed defaults:
153
161
  "agents": {
154
162
  "coder": {
155
163
  "model": "claude-opus-4-6" // This overrides the computed default
164
+ },
165
+ "researcher": {
166
+ "model": "gemini-3.1-pro"
156
167
  }
157
168
  },
158
169
  "categories": {
@@ -203,7 +214,7 @@ bun test
203
214
 
204
215
  ```
205
216
  src/
206
- ├── agents/ # 11 agents (Coder, GPTCoder, Oracle, Librarian, Explore, Atlas, Planner, Plan Consultant, Plan Reviewer, Coder Junior, Multimodal Looker)
217
+ ├── agents/ # 13 agents (Coder, GPTCoder, Oracle, Librarian, Explore, Atlas, Planner, Researcher, Researcher Junior, Plan Consultant, Plan Reviewer, Coder Junior, Multimodal Looker)
207
218
  ├── hooks/ # 46 lifecycle hooks
208
219
  ├── tools/ # 26 built-in tools
209
220
  ├── features/ # Core feature modules
@@ -3,3 +3,5 @@ export { createBuiltinAgents } from "./builtin-agents";
3
3
  export type { AvailableAgent, AvailableCategory, AvailableSkill } from "./dynamic-agent-prompt-builder";
4
4
  export type { PlannerPromptSource } from "./planner";
5
5
  export { createCoderJuniorAgentWithOverrides, CODER_JUNIOR_DEFAULTS } from "./coder-junior";
6
+ export { createResearcherAgent, RESEARCHER_PROMPT_METADATA } from "./researcher";
7
+ export { createResearcherJuniorAgent, RESEARCHER_JUNIOR_PROMPT_METADATA } from "./researcher-junior";
@@ -0,0 +1,3 @@
1
+ import type { AgentFactory, AgentPromptMetadata } from "./types";
2
+ export declare const RESEARCHER_JUNIOR_PROMPT_METADATA: AgentPromptMetadata;
3
+ export declare const createResearcherJuniorAgent: AgentFactory;
@@ -0,0 +1,7 @@
1
+ import type { AgentConfig } from "@opencode-ai/sdk";
2
+ import type { AgentPromptMetadata } from "./types";
3
+ export declare const RESEARCHER_PROMPT_METADATA: AgentPromptMetadata;
4
+ export declare function createResearcherAgent(model: string): AgentConfig;
5
+ export declare namespace createResearcherAgent {
6
+ var mode: "all";
7
+ }
@@ -56,7 +56,7 @@ export declare function isGptModel(model: string): boolean;
56
56
  export declare function isGpt5_4Model(model: string): boolean;
57
57
  export declare function isGpt5_3CodexModel(model: string): boolean;
58
58
  export declare function isGeminiModel(model: string): boolean;
59
- export type BuiltinAgentName = "coder" | "gptcoder" | "oracle" | "librarian" | "explore" | "multimodal-looker" | "plan-consultant" | "plan-reviewer" | "atlas" | "coder-junior";
59
+ export type BuiltinAgentName = "coder" | "gptcoder" | "oracle" | "librarian" | "explore" | "multimodal-looker" | "plan-consultant" | "plan-reviewer" | "atlas" | "coder-junior" | "researcher" | "researcher-junior";
60
60
  export type OverridableAgentName = "build" | BuiltinAgentName;
61
61
  export type AgentName = BuiltinAgentName;
62
62
  export type AgentOverrideConfig = Partial<AgentConfig> & {
package/dist/cli/index.js CHANGED
@@ -3532,6 +3532,27 @@ var init_agent_model_defaults = __esm(() => {
3532
3532
  "coder-junior": {
3533
3533
  chain: [{ providers: CLAUDE_PROVIDERS, model: "claude-sonnet-4-6" }, { providers: OPENAI_PROVIDERS, model: "gpt-5.4", variant: "medium" }, { providers: GEMINI_PROVIDERS, model: "gemini-3-flash" }],
3534
3534
  includeInInstall: false
3535
+ },
3536
+ researcher: {
3537
+ chain: [
3538
+ { providers: GEMINI_PROVIDERS, model: "gemini-3.1-pro" },
3539
+ { providers: ["kimi-for-coding"], model: "k2p5" },
3540
+ { providers: KIMI_K25_PROVIDERS, model: "kimi-k2.5" },
3541
+ { providers: CLAUDE_PROVIDERS, model: "claude-sonnet-4-6", variant: "medium" },
3542
+ { providers: OPENAI_PROVIDERS, model: "gpt-5.4", variant: "medium" },
3543
+ { providers: ["opencode"], model: "glm-4.7-free", alwaysAvailable: true }
3544
+ ],
3545
+ includeInInstall: false
3546
+ },
3547
+ "researcher-junior": {
3548
+ chain: [
3549
+ { providers: ["kimi-for-coding"], model: "k2p5" },
3550
+ { providers: KIMI_K25_PROVIDERS, model: "kimi-k2.5" },
3551
+ { providers: CLAUDE_PROVIDERS, model: "claude-sonnet-4-6", variant: "medium" },
3552
+ { providers: OPENAI_PROVIDERS, model: "gpt-5.4", variant: "low" },
3553
+ { providers: ["opencode"], model: "glm-4.7-free", alwaysAvailable: true }
3554
+ ],
3555
+ includeInInstall: false
3535
3556
  }
3536
3557
  };
3537
3558
  CATEGORY_MODEL_DEFAULTS = {
@@ -5420,7 +5441,7 @@ var {
5420
5441
  // package.json
5421
5442
  var package_default = {
5422
5443
  name: "drizzy-agent",
5423
- version: "0.5.4",
5444
+ version: "0.6.0-beta.2",
5424
5445
  description: "DrizzyAgent - AI agent plugin for OpenCode",
5425
5446
  main: "dist/index.js",
5426
5447
  types: "dist/index.d.ts",
@@ -5496,17 +5517,17 @@ var package_default = {
5496
5517
  typescript: "^5.7.3"
5497
5518
  },
5498
5519
  optionalDependencies: {
5499
- "drizzy-agent-darwin-arm64": "0.5.4",
5500
- "drizzy-agent-darwin-x64": "0.5.4",
5501
- "drizzy-agent-darwin-x64-baseline": "0.5.4",
5502
- "drizzy-agent-linux-arm64": "0.5.4",
5503
- "drizzy-agent-linux-arm64-musl": "0.5.4",
5504
- "drizzy-agent-linux-x64": "0.5.4",
5505
- "drizzy-agent-linux-x64-baseline": "0.5.4",
5506
- "drizzy-agent-linux-x64-musl": "0.5.4",
5507
- "drizzy-agent-linux-x64-musl-baseline": "0.5.4",
5508
- "drizzy-agent-windows-x64": "0.5.4",
5509
- "drizzy-agent-windows-x64-baseline": "0.5.4"
5520
+ "drizzy-agent-darwin-arm64": "0.6.0-beta.2",
5521
+ "drizzy-agent-darwin-x64": "0.6.0-beta.2",
5522
+ "drizzy-agent-darwin-x64-baseline": "0.6.0-beta.2",
5523
+ "drizzy-agent-linux-arm64": "0.6.0-beta.2",
5524
+ "drizzy-agent-linux-arm64-musl": "0.6.0-beta.2",
5525
+ "drizzy-agent-linux-x64": "0.6.0-beta.2",
5526
+ "drizzy-agent-linux-x64-baseline": "0.6.0-beta.2",
5527
+ "drizzy-agent-linux-x64-musl": "0.6.0-beta.2",
5528
+ "drizzy-agent-linux-x64-musl-baseline": "0.6.0-beta.2",
5529
+ "drizzy-agent-windows-x64": "0.6.0-beta.2",
5530
+ "drizzy-agent-windows-x64-baseline": "0.6.0-beta.2"
5510
5531
  },
5511
5532
  overrides: {
5512
5533
  "@opencode-ai/sdk": "^1.2.24"
@@ -20928,7 +20949,9 @@ var BuiltinAgentNameSchema = exports_external.enum([
20928
20949
  "plan-consultant",
20929
20950
  "plan-reviewer",
20930
20951
  "atlas",
20931
- "coder-junior"
20952
+ "coder-junior",
20953
+ "researcher",
20954
+ "researcher-junior"
20932
20955
  ]);
20933
20956
  var BuiltinSkillNameSchema = exports_external.enum([
20934
20957
  "playwright",
@@ -21021,7 +21044,9 @@ var AgentOverridesSchema = exports_external.object({
21021
21044
  librarian: AgentOverrideConfigSchema.optional(),
21022
21045
  explore: AgentOverrideConfigSchema.optional(),
21023
21046
  "multimodal-looker": AgentOverrideConfigSchema.optional(),
21024
- atlas: AgentOverrideConfigSchema.optional()
21047
+ atlas: AgentOverrideConfigSchema.optional(),
21048
+ researcher: AgentOverrideConfigSchema.optional(),
21049
+ "researcher-junior": AgentOverrideConfigSchema.optional()
21025
21050
  });
21026
21051
  // src/config/schema/babysitting.ts
21027
21052
  var BabysittingConfigSchema = exports_external.object({
@@ -21214,7 +21239,8 @@ var HookNameSchema = exports_external.enum([
21214
21239
  "write-existing-file-guard",
21215
21240
  "anthropic-effort",
21216
21241
  "hashline-read-enhancer",
21217
- "read-image-resizer"
21242
+ "read-image-resizer",
21243
+ "researcher-research-only"
21218
21244
  ]);
21219
21245
  // src/config/schema/install-defaults.ts
21220
21246
  init_install_defaults_contract();
@@ -24387,7 +24413,9 @@ var AGENT_DISPLAY_NAMES = {
24387
24413
  oracle: "oracle",
24388
24414
  librarian: "librarian",
24389
24415
  explore: "explore",
24390
- "multimodal-looker": "multimodal-looker"
24416
+ "multimodal-looker": "multimodal-looker",
24417
+ researcher: "Researcher",
24418
+ "researcher-junior": "Researcher Junior"
24391
24419
  };
24392
24420
  function getAgentDisplayName(configKey) {
24393
24421
  const exactMatch = AGENT_DISPLAY_NAMES[configKey];
@@ -26483,7 +26511,7 @@ async function executeOnCompleteHook(options) {
26483
26511
 
26484
26512
  // src/cli/run/agent-resolver.ts
26485
26513
  var import_picocolors13 = __toESM(require_picocolors(), 1);
26486
- var CORE_AGENT_ORDER = ["coder", "gptcoder", "planner", "atlas"];
26514
+ var CORE_AGENT_ORDER = ["coder", "gptcoder", "planner", "atlas", "researcher"];
26487
26515
  var DEFAULT_AGENT = "coder";
26488
26516
  var normalizeAgentName = (agent) => {
26489
26517
  if (!agent)
@@ -29443,7 +29471,7 @@ Agent resolution order:
29443
29471
  4) Coder (fallback)
29444
29472
 
29445
29473
  Available core agents:
29446
- Coder, GPTCoder, Planner, Atlas
29474
+ Coder, GPTCoder, Planner, Atlas, Researcher
29447
29475
 
29448
29476
  Unlike 'opencode run', this command waits until:
29449
29477
  - All todos are completed or cancelled
@@ -9,6 +9,8 @@ export declare const BuiltinAgentNameSchema: z.ZodEnum<{
9
9
  "multimodal-looker": "multimodal-looker";
10
10
  atlas: "atlas";
11
11
  "coder-junior": "coder-junior";
12
+ researcher: "researcher";
13
+ "researcher-junior": "researcher-junior";
12
14
  "plan-consultant": "plan-consultant";
13
15
  "plan-reviewer": "plan-reviewer";
14
16
  }>;
@@ -45,6 +47,8 @@ export declare const AgentNameSchema: z.ZodEnum<{
45
47
  "multimodal-looker": "multimodal-looker";
46
48
  atlas: "atlas";
47
49
  "coder-junior": "coder-junior";
50
+ researcher: "researcher";
51
+ "researcher-junior": "researcher-junior";
48
52
  "plan-consultant": "plan-consultant";
49
53
  "plan-reviewer": "plan-reviewer";
50
54
  }>;
@@ -1261,6 +1261,174 @@ export declare const AgentOverridesSchema: z.ZodObject<{
1261
1261
  variant: z.ZodOptional<z.ZodString>;
1262
1262
  }, z.core.$strip>>;
1263
1263
  }, z.core.$strip>>;
1264
+ researcher: z.ZodOptional<z.ZodObject<{
1265
+ model: z.ZodOptional<z.ZodString>;
1266
+ fallback_models: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
1267
+ variant: z.ZodOptional<z.ZodString>;
1268
+ category: z.ZodOptional<z.ZodString>;
1269
+ skills: z.ZodOptional<z.ZodArray<z.ZodString>>;
1270
+ temperature: z.ZodOptional<z.ZodNumber>;
1271
+ top_p: z.ZodOptional<z.ZodNumber>;
1272
+ prompt: z.ZodOptional<z.ZodString>;
1273
+ prompt_append: z.ZodOptional<z.ZodString>;
1274
+ tools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
1275
+ disable: z.ZodOptional<z.ZodBoolean>;
1276
+ description: z.ZodOptional<z.ZodString>;
1277
+ mode: z.ZodOptional<z.ZodEnum<{
1278
+ subagent: "subagent";
1279
+ primary: "primary";
1280
+ all: "all";
1281
+ }>>;
1282
+ color: z.ZodOptional<z.ZodString>;
1283
+ permission: z.ZodOptional<z.ZodObject<{
1284
+ edit: z.ZodOptional<z.ZodEnum<{
1285
+ ask: "ask";
1286
+ allow: "allow";
1287
+ deny: "deny";
1288
+ }>>;
1289
+ bash: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
1290
+ ask: "ask";
1291
+ allow: "allow";
1292
+ deny: "deny";
1293
+ }>, z.ZodRecord<z.ZodString, z.ZodEnum<{
1294
+ ask: "ask";
1295
+ allow: "allow";
1296
+ deny: "deny";
1297
+ }>>]>>;
1298
+ webfetch: z.ZodOptional<z.ZodEnum<{
1299
+ ask: "ask";
1300
+ allow: "allow";
1301
+ deny: "deny";
1302
+ }>>;
1303
+ task: z.ZodOptional<z.ZodEnum<{
1304
+ ask: "ask";
1305
+ allow: "allow";
1306
+ deny: "deny";
1307
+ }>>;
1308
+ doom_loop: z.ZodOptional<z.ZodEnum<{
1309
+ ask: "ask";
1310
+ allow: "allow";
1311
+ deny: "deny";
1312
+ }>>;
1313
+ external_directory: z.ZodOptional<z.ZodEnum<{
1314
+ ask: "ask";
1315
+ allow: "allow";
1316
+ deny: "deny";
1317
+ }>>;
1318
+ }, z.core.$strip>>;
1319
+ maxTokens: z.ZodOptional<z.ZodNumber>;
1320
+ thinking: z.ZodOptional<z.ZodObject<{
1321
+ type: z.ZodEnum<{
1322
+ enabled: "enabled";
1323
+ disabled: "disabled";
1324
+ }>;
1325
+ budgetTokens: z.ZodOptional<z.ZodNumber>;
1326
+ }, z.core.$strip>>;
1327
+ reasoningEffort: z.ZodOptional<z.ZodEnum<{
1328
+ medium: "medium";
1329
+ high: "high";
1330
+ xhigh: "xhigh";
1331
+ low: "low";
1332
+ }>>;
1333
+ textVerbosity: z.ZodOptional<z.ZodEnum<{
1334
+ medium: "medium";
1335
+ high: "high";
1336
+ low: "low";
1337
+ }>>;
1338
+ providerOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1339
+ ultrawork: z.ZodOptional<z.ZodObject<{
1340
+ model: z.ZodOptional<z.ZodString>;
1341
+ variant: z.ZodOptional<z.ZodString>;
1342
+ }, z.core.$strip>>;
1343
+ compaction: z.ZodOptional<z.ZodObject<{
1344
+ model: z.ZodOptional<z.ZodString>;
1345
+ variant: z.ZodOptional<z.ZodString>;
1346
+ }, z.core.$strip>>;
1347
+ }, z.core.$strip>>;
1348
+ "researcher-junior": z.ZodOptional<z.ZodObject<{
1349
+ model: z.ZodOptional<z.ZodString>;
1350
+ fallback_models: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
1351
+ variant: z.ZodOptional<z.ZodString>;
1352
+ category: z.ZodOptional<z.ZodString>;
1353
+ skills: z.ZodOptional<z.ZodArray<z.ZodString>>;
1354
+ temperature: z.ZodOptional<z.ZodNumber>;
1355
+ top_p: z.ZodOptional<z.ZodNumber>;
1356
+ prompt: z.ZodOptional<z.ZodString>;
1357
+ prompt_append: z.ZodOptional<z.ZodString>;
1358
+ tools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
1359
+ disable: z.ZodOptional<z.ZodBoolean>;
1360
+ description: z.ZodOptional<z.ZodString>;
1361
+ mode: z.ZodOptional<z.ZodEnum<{
1362
+ subagent: "subagent";
1363
+ primary: "primary";
1364
+ all: "all";
1365
+ }>>;
1366
+ color: z.ZodOptional<z.ZodString>;
1367
+ permission: z.ZodOptional<z.ZodObject<{
1368
+ edit: z.ZodOptional<z.ZodEnum<{
1369
+ ask: "ask";
1370
+ allow: "allow";
1371
+ deny: "deny";
1372
+ }>>;
1373
+ bash: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
1374
+ ask: "ask";
1375
+ allow: "allow";
1376
+ deny: "deny";
1377
+ }>, z.ZodRecord<z.ZodString, z.ZodEnum<{
1378
+ ask: "ask";
1379
+ allow: "allow";
1380
+ deny: "deny";
1381
+ }>>]>>;
1382
+ webfetch: z.ZodOptional<z.ZodEnum<{
1383
+ ask: "ask";
1384
+ allow: "allow";
1385
+ deny: "deny";
1386
+ }>>;
1387
+ task: z.ZodOptional<z.ZodEnum<{
1388
+ ask: "ask";
1389
+ allow: "allow";
1390
+ deny: "deny";
1391
+ }>>;
1392
+ doom_loop: z.ZodOptional<z.ZodEnum<{
1393
+ ask: "ask";
1394
+ allow: "allow";
1395
+ deny: "deny";
1396
+ }>>;
1397
+ external_directory: z.ZodOptional<z.ZodEnum<{
1398
+ ask: "ask";
1399
+ allow: "allow";
1400
+ deny: "deny";
1401
+ }>>;
1402
+ }, z.core.$strip>>;
1403
+ maxTokens: z.ZodOptional<z.ZodNumber>;
1404
+ thinking: z.ZodOptional<z.ZodObject<{
1405
+ type: z.ZodEnum<{
1406
+ enabled: "enabled";
1407
+ disabled: "disabled";
1408
+ }>;
1409
+ budgetTokens: z.ZodOptional<z.ZodNumber>;
1410
+ }, z.core.$strip>>;
1411
+ reasoningEffort: z.ZodOptional<z.ZodEnum<{
1412
+ medium: "medium";
1413
+ high: "high";
1414
+ xhigh: "xhigh";
1415
+ low: "low";
1416
+ }>>;
1417
+ textVerbosity: z.ZodOptional<z.ZodEnum<{
1418
+ medium: "medium";
1419
+ high: "high";
1420
+ low: "low";
1421
+ }>>;
1422
+ providerOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1423
+ ultrawork: z.ZodOptional<z.ZodObject<{
1424
+ model: z.ZodOptional<z.ZodString>;
1425
+ variant: z.ZodOptional<z.ZodString>;
1426
+ }, z.core.$strip>>;
1427
+ compaction: z.ZodOptional<z.ZodObject<{
1428
+ model: z.ZodOptional<z.ZodString>;
1429
+ variant: z.ZodOptional<z.ZodString>;
1430
+ }, z.core.$strip>>;
1431
+ }, z.core.$strip>>;
1264
1432
  }, z.core.$strip>;
1265
1433
  export type AgentOverrideConfig = z.infer<typeof AgentOverrideConfigSchema>;
1266
1434
  export type AgentOverrides = z.infer<typeof AgentOverridesSchema>;
@@ -61,6 +61,7 @@ export declare const DrizzyAgentConfigSchema: z.ZodObject<{
61
61
  "anthropic-effort": "anthropic-effort";
62
62
  "hashline-read-enhancer": "hashline-read-enhancer";
63
63
  "read-image-resizer": "read-image-resizer";
64
+ "researcher-research-only": "researcher-research-only";
64
65
  }>>>;
65
66
  disabled_commands: z.ZodOptional<z.ZodArray<z.ZodEnum<{
66
67
  "init-deep": "init-deep";
@@ -1252,6 +1253,174 @@ export declare const DrizzyAgentConfigSchema: z.ZodObject<{
1252
1253
  variant: z.ZodOptional<z.ZodString>;
1253
1254
  }, z.core.$strip>>;
1254
1255
  }, z.core.$strip>>;
1256
+ researcher: z.ZodOptional<z.ZodObject<{
1257
+ model: z.ZodOptional<z.ZodString>;
1258
+ fallback_models: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
1259
+ variant: z.ZodOptional<z.ZodString>;
1260
+ category: z.ZodOptional<z.ZodString>;
1261
+ skills: z.ZodOptional<z.ZodArray<z.ZodString>>;
1262
+ temperature: z.ZodOptional<z.ZodNumber>;
1263
+ top_p: z.ZodOptional<z.ZodNumber>;
1264
+ prompt: z.ZodOptional<z.ZodString>;
1265
+ prompt_append: z.ZodOptional<z.ZodString>;
1266
+ tools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
1267
+ disable: z.ZodOptional<z.ZodBoolean>;
1268
+ description: z.ZodOptional<z.ZodString>;
1269
+ mode: z.ZodOptional<z.ZodEnum<{
1270
+ subagent: "subagent";
1271
+ primary: "primary";
1272
+ all: "all";
1273
+ }>>;
1274
+ color: z.ZodOptional<z.ZodString>;
1275
+ permission: z.ZodOptional<z.ZodObject<{
1276
+ edit: z.ZodOptional<z.ZodEnum<{
1277
+ ask: "ask";
1278
+ allow: "allow";
1279
+ deny: "deny";
1280
+ }>>;
1281
+ bash: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
1282
+ ask: "ask";
1283
+ allow: "allow";
1284
+ deny: "deny";
1285
+ }>, z.ZodRecord<z.ZodString, z.ZodEnum<{
1286
+ ask: "ask";
1287
+ allow: "allow";
1288
+ deny: "deny";
1289
+ }>>]>>;
1290
+ webfetch: z.ZodOptional<z.ZodEnum<{
1291
+ ask: "ask";
1292
+ allow: "allow";
1293
+ deny: "deny";
1294
+ }>>;
1295
+ task: z.ZodOptional<z.ZodEnum<{
1296
+ ask: "ask";
1297
+ allow: "allow";
1298
+ deny: "deny";
1299
+ }>>;
1300
+ doom_loop: z.ZodOptional<z.ZodEnum<{
1301
+ ask: "ask";
1302
+ allow: "allow";
1303
+ deny: "deny";
1304
+ }>>;
1305
+ external_directory: z.ZodOptional<z.ZodEnum<{
1306
+ ask: "ask";
1307
+ allow: "allow";
1308
+ deny: "deny";
1309
+ }>>;
1310
+ }, z.core.$strip>>;
1311
+ maxTokens: z.ZodOptional<z.ZodNumber>;
1312
+ thinking: z.ZodOptional<z.ZodObject<{
1313
+ type: z.ZodEnum<{
1314
+ enabled: "enabled";
1315
+ disabled: "disabled";
1316
+ }>;
1317
+ budgetTokens: z.ZodOptional<z.ZodNumber>;
1318
+ }, z.core.$strip>>;
1319
+ reasoningEffort: z.ZodOptional<z.ZodEnum<{
1320
+ medium: "medium";
1321
+ high: "high";
1322
+ xhigh: "xhigh";
1323
+ low: "low";
1324
+ }>>;
1325
+ textVerbosity: z.ZodOptional<z.ZodEnum<{
1326
+ medium: "medium";
1327
+ high: "high";
1328
+ low: "low";
1329
+ }>>;
1330
+ providerOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1331
+ ultrawork: z.ZodOptional<z.ZodObject<{
1332
+ model: z.ZodOptional<z.ZodString>;
1333
+ variant: z.ZodOptional<z.ZodString>;
1334
+ }, z.core.$strip>>;
1335
+ compaction: z.ZodOptional<z.ZodObject<{
1336
+ model: z.ZodOptional<z.ZodString>;
1337
+ variant: z.ZodOptional<z.ZodString>;
1338
+ }, z.core.$strip>>;
1339
+ }, z.core.$strip>>;
1340
+ "researcher-junior": z.ZodOptional<z.ZodObject<{
1341
+ model: z.ZodOptional<z.ZodString>;
1342
+ fallback_models: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
1343
+ variant: z.ZodOptional<z.ZodString>;
1344
+ category: z.ZodOptional<z.ZodString>;
1345
+ skills: z.ZodOptional<z.ZodArray<z.ZodString>>;
1346
+ temperature: z.ZodOptional<z.ZodNumber>;
1347
+ top_p: z.ZodOptional<z.ZodNumber>;
1348
+ prompt: z.ZodOptional<z.ZodString>;
1349
+ prompt_append: z.ZodOptional<z.ZodString>;
1350
+ tools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
1351
+ disable: z.ZodOptional<z.ZodBoolean>;
1352
+ description: z.ZodOptional<z.ZodString>;
1353
+ mode: z.ZodOptional<z.ZodEnum<{
1354
+ subagent: "subagent";
1355
+ primary: "primary";
1356
+ all: "all";
1357
+ }>>;
1358
+ color: z.ZodOptional<z.ZodString>;
1359
+ permission: z.ZodOptional<z.ZodObject<{
1360
+ edit: z.ZodOptional<z.ZodEnum<{
1361
+ ask: "ask";
1362
+ allow: "allow";
1363
+ deny: "deny";
1364
+ }>>;
1365
+ bash: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
1366
+ ask: "ask";
1367
+ allow: "allow";
1368
+ deny: "deny";
1369
+ }>, z.ZodRecord<z.ZodString, z.ZodEnum<{
1370
+ ask: "ask";
1371
+ allow: "allow";
1372
+ deny: "deny";
1373
+ }>>]>>;
1374
+ webfetch: z.ZodOptional<z.ZodEnum<{
1375
+ ask: "ask";
1376
+ allow: "allow";
1377
+ deny: "deny";
1378
+ }>>;
1379
+ task: z.ZodOptional<z.ZodEnum<{
1380
+ ask: "ask";
1381
+ allow: "allow";
1382
+ deny: "deny";
1383
+ }>>;
1384
+ doom_loop: z.ZodOptional<z.ZodEnum<{
1385
+ ask: "ask";
1386
+ allow: "allow";
1387
+ deny: "deny";
1388
+ }>>;
1389
+ external_directory: z.ZodOptional<z.ZodEnum<{
1390
+ ask: "ask";
1391
+ allow: "allow";
1392
+ deny: "deny";
1393
+ }>>;
1394
+ }, z.core.$strip>>;
1395
+ maxTokens: z.ZodOptional<z.ZodNumber>;
1396
+ thinking: z.ZodOptional<z.ZodObject<{
1397
+ type: z.ZodEnum<{
1398
+ enabled: "enabled";
1399
+ disabled: "disabled";
1400
+ }>;
1401
+ budgetTokens: z.ZodOptional<z.ZodNumber>;
1402
+ }, z.core.$strip>>;
1403
+ reasoningEffort: z.ZodOptional<z.ZodEnum<{
1404
+ medium: "medium";
1405
+ high: "high";
1406
+ xhigh: "xhigh";
1407
+ low: "low";
1408
+ }>>;
1409
+ textVerbosity: z.ZodOptional<z.ZodEnum<{
1410
+ medium: "medium";
1411
+ high: "high";
1412
+ low: "low";
1413
+ }>>;
1414
+ providerOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1415
+ ultrawork: z.ZodOptional<z.ZodObject<{
1416
+ model: z.ZodOptional<z.ZodString>;
1417
+ variant: z.ZodOptional<z.ZodString>;
1418
+ }, z.core.$strip>>;
1419
+ compaction: z.ZodOptional<z.ZodObject<{
1420
+ model: z.ZodOptional<z.ZodString>;
1421
+ variant: z.ZodOptional<z.ZodString>;
1422
+ }, z.core.$strip>>;
1423
+ }, z.core.$strip>>;
1255
1424
  }, z.core.$strip>>;
1256
1425
  categories: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
1257
1426
  description: z.ZodOptional<z.ZodString>;
@@ -48,5 +48,6 @@ export declare const HookNameSchema: z.ZodEnum<{
48
48
  "anthropic-effort": "anthropic-effort";
49
49
  "hashline-read-enhancer": "hashline-read-enhancer";
50
50
  "read-image-resizer": "read-image-resizer";
51
+ "researcher-research-only": "researcher-research-only";
51
52
  }>;
52
53
  export type HookName = z.infer<typeof HookNameSchema>;
@@ -66,6 +66,7 @@ export declare function createHooks(args: {
66
66
  delegateTaskRetry: ReturnType<typeof import("./hooks").createDelegateTaskRetryHook> | null;
67
67
  startWork: ReturnType<typeof import("./hooks").createStartWorkHook> | null;
68
68
  plannerMdOnly: ReturnType<typeof import("./hooks").createPlannerMdOnlyHook> | null;
69
+ researcherResearchOnly: ReturnType<typeof import("./hooks").createResearcherResearchOnlyHook> | null;
69
70
  coderJuniorNotepad: ReturnType<typeof import("./hooks").createCoderJuniorNotepadHook> | null;
70
71
  noCoderGpt: ReturnType<typeof import("./hooks").createNoCoderGptHook> | null;
71
72
  noGptcoderNonGpt: ReturnType<typeof import("./hooks").createNoGptcoderNonGptHook> | null;