@hiai-gg/hiai-opencode 0.1.3 → 0.1.5

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 (64) hide show
  1. package/.env.example +14 -18
  2. package/AGENTS.md +77 -23
  3. package/ARCHITECTURE.md +15 -17
  4. package/LICENSE.md +1 -0
  5. package/README.md +189 -94
  6. package/assets/cli/hiai-opencode.mjs +276 -0
  7. package/assets/mcp/playwright.mjs +7 -0
  8. package/config/hiai-opencode.schema.json +85 -50
  9. package/dist/config/defaults.d.ts +1 -3
  10. package/dist/config/index.d.ts +0 -1
  11. package/dist/config/platform-schema.d.ts +343 -4
  12. package/dist/config/schema/agent-overrides.d.ts +256 -0
  13. package/dist/config/schema/categories.d.ts +1 -1
  14. package/dist/config/schema/commands.d.ts +1 -0
  15. package/dist/config/schema/index.d.ts +2 -0
  16. package/dist/config/schema/oh-my-opencode-config.d.ts +267 -0
  17. package/dist/config/schema/skill-discovery.d.ts +11 -0
  18. package/dist/config/types.d.ts +33 -3
  19. package/dist/create-tools.d.ts +2 -0
  20. package/dist/features/builtin-commands/templates/mcp-status.d.ts +1 -0
  21. package/dist/features/builtin-commands/types.d.ts +1 -1
  22. package/dist/features/opencode-skill-loader/loader.d.ts +2 -0
  23. package/dist/index.js +744 -358
  24. package/dist/internals/plugins/websearch-cited/index.d.ts +7 -1
  25. package/dist/mcp/types.d.ts +1 -1
  26. package/dist/plugin/skill-discovery-config.d.ts +4 -0
  27. package/dist/plugin/tool-registry.d.ts +2 -0
  28. package/dist/shared/startup-diagnostics.d.ts +6 -0
  29. package/dist/tools/skill-mcp/tools.d.ts +2 -0
  30. package/hiai-opencode.json +55 -33
  31. package/package.json +4 -1
  32. package/src/agents/AGENTS.md +3 -4
  33. package/src/config/defaults.ts +186 -77
  34. package/src/config/index.ts +0 -1
  35. package/src/config/loader.test.ts +16 -1
  36. package/src/config/loader.ts +4 -2
  37. package/src/config/platform-schema.ts +53 -4
  38. package/src/config/schema/agent-overrides.ts +2 -0
  39. package/src/config/schema/commands.ts +1 -0
  40. package/src/config/schema/fast-apply.ts +4 -4
  41. package/src/config/schema/index.ts +2 -0
  42. package/src/config/schema/oh-my-opencode-config.ts +3 -0
  43. package/src/config/schema/skill-discovery.ts +25 -0
  44. package/src/config/types.ts +49 -2
  45. package/src/create-tools.ts +4 -1
  46. package/src/features/builtin-commands/commands.ts +7 -0
  47. package/src/features/builtin-commands/templates/mcp-status.ts +36 -0
  48. package/src/features/builtin-commands/types.ts +1 -1
  49. package/src/features/builtin-skills/skills/playwright.ts +24 -2
  50. package/src/features/opencode-skill-loader/loader.ts +11 -0
  51. package/src/index.ts +53 -14
  52. package/src/internals/plugins/websearch-cited/index.ts +10 -5
  53. package/src/lsp/index.ts +1 -0
  54. package/src/mcp/registry.ts +6 -1
  55. package/src/plugin/hooks/create-tool-guard-hooks.ts +1 -1
  56. package/src/plugin/skill-context.ts +31 -13
  57. package/src/plugin/skill-discovery-config.ts +32 -0
  58. package/src/plugin/tool-registry.ts +4 -0
  59. package/src/plugin-handlers/agent-config-handler.ts +20 -13
  60. package/src/plugin-handlers/command-config-handler.ts +22 -12
  61. package/src/shared/migration/agent-names.ts +5 -5
  62. package/src/shared/startup-diagnostics.ts +77 -0
  63. package/src/tools/skill-mcp/tools.ts +45 -7
  64. package/src/config/models.ts +0 -32
@@ -42,6 +42,13 @@ if (shouldInstallBrowsers()) {
42
42
  const result = runNpx(["-y", "playwright@latest", "install", "chromium"])
43
43
  if (result.status !== 0) {
44
44
  console.error("[hiai-opencode] playwright browser install failed")
45
+ console.error("[hiai-opencode] Try: npx playwright install chromium")
46
+ }
47
+
48
+ if (process.platform === "linux") {
49
+ console.error("[hiai-opencode] Playwright Chromium may also need Linux system libraries.")
50
+ console.error("[hiai-opencode] If browser launch fails with libnspr4/libnss3/libgtk errors, run: sudo npx playwright install-deps chromium")
51
+ console.error("[hiai-opencode] Without sudo, use an existing browser by adding args in hiai-opencode.json, e.g. --browser chrome")
45
52
  }
46
53
  }
47
54
 
@@ -1,82 +1,117 @@
1
1
  {
2
2
  "$schema": "http://json-schema.org/draft-07/schema#",
3
3
  "title": "hiai-opencode Configuration",
4
- "description": "Unified configuration for hiai-opencode plugin",
4
+ "description": "User-facing hiai-opencode config. Users choose 10 primary agent models, service auth placeholders, and enable/disable MCP/LSP integrations. Internal routing derives hidden agents and task categories from these model slots.",
5
5
  "type": "object",
6
6
  "properties": {
7
7
  "$schema": { "type": "string" },
8
- "agents": {
8
+ "models": {
9
9
  "type": "object",
10
- "additionalProperties": {
11
- "type": "object",
12
- "properties": {
13
- "model": { "type": "string" },
14
- "description": { "type": "string" }
15
- },
16
- "required": ["model"]
17
- }
10
+ "description": "The only user-facing model source of truth. Use fully qualified OpenCode model IDs.",
11
+ "properties": {
12
+ "bob": { "$ref": "#/definitions/modelSlot" },
13
+ "coder": { "$ref": "#/definitions/modelSlot" },
14
+ "strategist": { "$ref": "#/definitions/modelSlot" },
15
+ "guard": { "$ref": "#/definitions/modelSlot" },
16
+ "critic": { "$ref": "#/definitions/modelSlot" },
17
+ "designer": { "$ref": "#/definitions/modelSlot" },
18
+ "researcher": { "$ref": "#/definitions/modelSlot" },
19
+ "manager": { "$ref": "#/definitions/modelSlot" },
20
+ "brainstormer": { "$ref": "#/definitions/modelSlot" },
21
+ "vision": { "$ref": "#/definitions/modelSlot" }
22
+ },
23
+ "required": [
24
+ "bob",
25
+ "coder",
26
+ "strategist",
27
+ "guard",
28
+ "critic",
29
+ "designer",
30
+ "researcher",
31
+ "manager",
32
+ "brainstormer",
33
+ "vision"
34
+ ]
18
35
  },
19
- "categories": {
36
+ "auth": {
20
37
  "type": "object",
21
- "additionalProperties": {
22
- "type": "object",
23
- "properties": {
24
- "model": { "type": "string" },
25
- "variant": { "type": "string" },
26
- "description": { "type": "string" }
27
- },
28
- "required": ["model"]
38
+ "additionalProperties": { "type": "string" },
39
+ "properties": {
40
+ "googleSearch": { "type": "string" },
41
+ "stitch": { "type": "string" },
42
+ "firecrawl": { "type": "string" },
43
+ "context7": { "type": "string" }
29
44
  }
30
45
  },
31
46
  "mcp": {
32
47
  "type": "object",
33
- "additionalProperties": {
34
- "type": "object",
35
- "properties": {
36
- "enabled": { "type": "boolean", "default": true },
37
- "type": { "enum": ["remote", "local"] },
38
- "url": { "type": "string" },
39
- "command": { "type": "array", "items": { "type": "string" } },
40
- "timeout": { "type": "number" },
41
- "environment": { "type": "object", "additionalProperties": { "type": "string" } }
42
- },
43
- "required": ["enabled"]
48
+ "additionalProperties": false,
49
+ "properties": {
50
+ "playwright": { "$ref": "#/definitions/toggle" },
51
+ "stitch": { "$ref": "#/definitions/toggle" },
52
+ "sequential-thinking": { "$ref": "#/definitions/toggle" },
53
+ "firecrawl": { "$ref": "#/definitions/toggle" },
54
+ "rag": { "$ref": "#/definitions/toggle" },
55
+ "mempalace": { "$ref": "#/definitions/toggle" },
56
+ "context7": { "$ref": "#/definitions/toggle" }
44
57
  }
45
58
  },
46
59
  "lsp": {
47
60
  "type": "object",
48
- "additionalProperties": {
49
- "type": "object",
50
- "properties": {
51
- "command": { "type": "array", "items": { "type": "string" } },
52
- "extensions": { "type": "array", "items": { "type": "string" } },
53
- "initialization": { "type": "object" }
54
- },
55
- "required": ["command", "extensions"]
61
+ "additionalProperties": false,
62
+ "properties": {
63
+ "typescript": { "$ref": "#/definitions/toggle" },
64
+ "svelte": { "$ref": "#/definitions/toggle" },
65
+ "eslint": { "$ref": "#/definitions/toggle" },
66
+ "bash": { "$ref": "#/definitions/toggle" },
67
+ "pyright": { "$ref": "#/definitions/toggle" }
56
68
  }
57
69
  },
58
- "subtask2": {
70
+ "skill_discovery": {
59
71
  "type": "object",
72
+ "description": "Controls external skill folder scanning. Defaults keep installs deterministic.",
60
73
  "properties": {
61
- "replace_generic": { "type": "boolean" },
62
- "generic_return": { "type": ["string", "null"] }
74
+ "config_sources": { "type": "boolean", "default": true },
75
+ "project_opencode": { "type": "boolean", "default": true },
76
+ "global_opencode": { "type": "boolean", "default": false },
77
+ "project_claude": { "type": "boolean", "default": false },
78
+ "global_claude": { "type": "boolean", "default": false },
79
+ "project_agents": { "type": "boolean", "default": false },
80
+ "global_agents": { "type": "boolean", "default": false }
63
81
  }
64
82
  },
65
- "skills": {
83
+ "subtask2": {
66
84
  "type": "object",
67
85
  "properties": {
68
- "enabled": { "type": "boolean", "default": true },
69
- "disabled": { "type": "array", "items": { "type": "string" } }
86
+ "replace_generic": { "type": "boolean" }
70
87
  }
88
+ }
89
+ },
90
+ "required": ["models"],
91
+ "definitions": {
92
+ "modelSlot": {
93
+ "oneOf": [
94
+ { "type": "string" },
95
+ {
96
+ "type": "object",
97
+ "properties": {
98
+ "model": { "type": "string" },
99
+ "recommended": {
100
+ "enum": ["xhigh", "high", "middle", "fast", "vision", "writing", "design"]
101
+ }
102
+ },
103
+ "required": ["model"],
104
+ "additionalProperties": false
105
+ }
106
+ ]
71
107
  },
72
- "permissions": {
108
+ "toggle": {
73
109
  "type": "object",
74
110
  "properties": {
75
- "read": { "type": "object", "additionalProperties": { "type": "string" } },
76
- "edit": { "type": "object", "additionalProperties": { "type": "string" } },
77
- "bash": { "type": "object", "additionalProperties": { "type": "string" } },
78
- "deny_paths": { "type": "array", "items": { "type": "string" } }
79
- }
111
+ "enabled": { "type": "boolean", "default": true }
112
+ },
113
+ "required": ["enabled"],
114
+ "additionalProperties": false
80
115
  }
81
116
  }
82
117
  }
@@ -1,5 +1,3 @@
1
- /**
2
- * Default config values for hiai-opencode
3
- */
4
1
  import type { HiaiOpencodeConfig } from "./types.js";
2
+ export declare function applyModelSlots(config: HiaiOpencodeConfig): HiaiOpencodeConfig;
5
3
  export declare const defaultConfig: HiaiOpencodeConfig;
@@ -9,7 +9,6 @@
9
9
  export { loadConfig, resolveEnvVars, resolveMcpEnv } from "./loader.js";
10
10
  export { HiaiOpencodeConfigSchema } from "./platform-schema.js";
11
11
  export { defaultConfig } from "./defaults.js";
12
- export { MODEL_PRESETS, MODEL_ROLE_GUIDE, PROVIDER_MODEL_RULES } from "./models.js";
13
12
  export type { HiaiOpencodeConfig, AgentConfig, CategoryConfig, McpServerConfig, LspServerConfig, Subtask2Config, SkillsConfig as PlatformSkillsConfig, PermissionsConfig as PlatformPermissionsConfig, } from "./types.js";
14
13
  export { HiaiOpenCodeConfigSchema } from "./schema/oh-my-opencode-config.js";
15
14
  export type { HiaiOpenCodeConfig } from "./schema/oh-my-opencode-config.js";
@@ -6,6 +6,149 @@ export declare const AgentConfigSchema: z.ZodObject<{
6
6
  model: z.ZodString;
7
7
  description: z.ZodOptional<z.ZodString>;
8
8
  }, z.core.$strip>;
9
+ export declare const ModelRecommendationSchema: z.ZodEnum<{
10
+ high: "high";
11
+ xhigh: "xhigh";
12
+ middle: "middle";
13
+ fast: "fast";
14
+ vision: "vision";
15
+ writing: "writing";
16
+ design: "design";
17
+ }>;
18
+ export declare const ModelSlotConfigSchema: z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
19
+ model: z.ZodString;
20
+ recommended: z.ZodOptional<z.ZodEnum<{
21
+ high: "high";
22
+ xhigh: "xhigh";
23
+ middle: "middle";
24
+ fast: "fast";
25
+ vision: "vision";
26
+ writing: "writing";
27
+ design: "design";
28
+ }>>;
29
+ }, z.core.$strip>]>;
30
+ export declare const ModelSlotsConfigSchema: z.ZodObject<{
31
+ bob: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
32
+ model: z.ZodString;
33
+ recommended: z.ZodOptional<z.ZodEnum<{
34
+ high: "high";
35
+ xhigh: "xhigh";
36
+ middle: "middle";
37
+ fast: "fast";
38
+ vision: "vision";
39
+ writing: "writing";
40
+ design: "design";
41
+ }>>;
42
+ }, z.core.$strip>]>>;
43
+ coder: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
44
+ model: z.ZodString;
45
+ recommended: z.ZodOptional<z.ZodEnum<{
46
+ high: "high";
47
+ xhigh: "xhigh";
48
+ middle: "middle";
49
+ fast: "fast";
50
+ vision: "vision";
51
+ writing: "writing";
52
+ design: "design";
53
+ }>>;
54
+ }, z.core.$strip>]>>;
55
+ strategist: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
56
+ model: z.ZodString;
57
+ recommended: z.ZodOptional<z.ZodEnum<{
58
+ high: "high";
59
+ xhigh: "xhigh";
60
+ middle: "middle";
61
+ fast: "fast";
62
+ vision: "vision";
63
+ writing: "writing";
64
+ design: "design";
65
+ }>>;
66
+ }, z.core.$strip>]>>;
67
+ guard: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
68
+ model: z.ZodString;
69
+ recommended: z.ZodOptional<z.ZodEnum<{
70
+ high: "high";
71
+ xhigh: "xhigh";
72
+ middle: "middle";
73
+ fast: "fast";
74
+ vision: "vision";
75
+ writing: "writing";
76
+ design: "design";
77
+ }>>;
78
+ }, z.core.$strip>]>>;
79
+ critic: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
80
+ model: z.ZodString;
81
+ recommended: z.ZodOptional<z.ZodEnum<{
82
+ high: "high";
83
+ xhigh: "xhigh";
84
+ middle: "middle";
85
+ fast: "fast";
86
+ vision: "vision";
87
+ writing: "writing";
88
+ design: "design";
89
+ }>>;
90
+ }, z.core.$strip>]>>;
91
+ designer: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
92
+ model: z.ZodString;
93
+ recommended: z.ZodOptional<z.ZodEnum<{
94
+ high: "high";
95
+ xhigh: "xhigh";
96
+ middle: "middle";
97
+ fast: "fast";
98
+ vision: "vision";
99
+ writing: "writing";
100
+ design: "design";
101
+ }>>;
102
+ }, z.core.$strip>]>>;
103
+ researcher: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
104
+ model: z.ZodString;
105
+ recommended: z.ZodOptional<z.ZodEnum<{
106
+ high: "high";
107
+ xhigh: "xhigh";
108
+ middle: "middle";
109
+ fast: "fast";
110
+ vision: "vision";
111
+ writing: "writing";
112
+ design: "design";
113
+ }>>;
114
+ }, z.core.$strip>]>>;
115
+ manager: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
116
+ model: z.ZodString;
117
+ recommended: z.ZodOptional<z.ZodEnum<{
118
+ high: "high";
119
+ xhigh: "xhigh";
120
+ middle: "middle";
121
+ fast: "fast";
122
+ vision: "vision";
123
+ writing: "writing";
124
+ design: "design";
125
+ }>>;
126
+ }, z.core.$strip>]>>;
127
+ brainstormer: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
128
+ model: z.ZodString;
129
+ recommended: z.ZodOptional<z.ZodEnum<{
130
+ high: "high";
131
+ xhigh: "xhigh";
132
+ middle: "middle";
133
+ fast: "fast";
134
+ vision: "vision";
135
+ writing: "writing";
136
+ design: "design";
137
+ }>>;
138
+ }, z.core.$strip>]>>;
139
+ vision: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
140
+ model: z.ZodString;
141
+ recommended: z.ZodOptional<z.ZodEnum<{
142
+ high: "high";
143
+ xhigh: "xhigh";
144
+ middle: "middle";
145
+ fast: "fast";
146
+ vision: "vision";
147
+ writing: "writing";
148
+ design: "design";
149
+ }>>;
150
+ }, z.core.$strip>]>>;
151
+ }, z.core.$strip>;
9
152
  export declare const FallbackEntrySchema: z.ZodObject<{
10
153
  providers: z.ZodArray<z.ZodString>;
11
154
  model: z.ZodString;
@@ -78,8 +221,9 @@ export declare const McpServerConfigSchema: z.ZodObject<{
78
221
  environment: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
79
222
  }, z.core.$strip>;
80
223
  export declare const LspServerConfigSchema: z.ZodObject<{
81
- command: z.ZodArray<z.ZodString>;
82
- extensions: z.ZodArray<z.ZodString>;
224
+ enabled: z.ZodOptional<z.ZodBoolean>;
225
+ command: z.ZodOptional<z.ZodArray<z.ZodString>>;
226
+ extensions: z.ZodOptional<z.ZodArray<z.ZodString>>;
83
227
  initialization: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
84
228
  }, z.core.$strip>;
85
229
  export declare const Subtask2ConfigSchema: z.ZodObject<{
@@ -90,6 +234,15 @@ export declare const SkillsConfigSchema: z.ZodObject<{
90
234
  enabled: z.ZodOptional<z.ZodBoolean>;
91
235
  disabled: z.ZodOptional<z.ZodArray<z.ZodString>>;
92
236
  }, z.core.$strip>;
237
+ export declare const SkillDiscoveryConfigSchema: z.ZodObject<{
238
+ config_sources: z.ZodOptional<z.ZodBoolean>;
239
+ project_opencode: z.ZodOptional<z.ZodBoolean>;
240
+ global_opencode: z.ZodOptional<z.ZodBoolean>;
241
+ project_claude: z.ZodOptional<z.ZodBoolean>;
242
+ global_claude: z.ZodOptional<z.ZodBoolean>;
243
+ project_agents: z.ZodOptional<z.ZodBoolean>;
244
+ global_agents: z.ZodOptional<z.ZodBoolean>;
245
+ }, z.core.$strip>;
93
246
  export declare const PermissionsConfigSchema: z.ZodObject<{
94
247
  read: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
95
248
  edit: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
@@ -163,6 +316,7 @@ export declare const AuthKeysSchema: z.ZodObject<{
163
316
  openrouter: z.ZodOptional<z.ZodString>;
164
317
  stitch: z.ZodOptional<z.ZodString>;
165
318
  firecrawl: z.ZodOptional<z.ZodString>;
319
+ context7: z.ZodOptional<z.ZodString>;
166
320
  }, z.core.$strip>;
167
321
  export declare const OllamaConfigSchema: z.ZodObject<{
168
322
  enabled: z.ZodDefault<z.ZodBoolean>;
@@ -184,6 +338,128 @@ export declare const ModelFamilySchema: z.ZodObject<{
184
338
  }, z.core.$strip>;
185
339
  export declare const HiaiOpencodeConfigSchema: z.ZodObject<{
186
340
  $schema: z.ZodOptional<z.ZodString>;
341
+ models: z.ZodOptional<z.ZodObject<{
342
+ bob: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
343
+ model: z.ZodString;
344
+ recommended: z.ZodOptional<z.ZodEnum<{
345
+ high: "high";
346
+ xhigh: "xhigh";
347
+ middle: "middle";
348
+ fast: "fast";
349
+ vision: "vision";
350
+ writing: "writing";
351
+ design: "design";
352
+ }>>;
353
+ }, z.core.$strip>]>>;
354
+ coder: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
355
+ model: z.ZodString;
356
+ recommended: z.ZodOptional<z.ZodEnum<{
357
+ high: "high";
358
+ xhigh: "xhigh";
359
+ middle: "middle";
360
+ fast: "fast";
361
+ vision: "vision";
362
+ writing: "writing";
363
+ design: "design";
364
+ }>>;
365
+ }, z.core.$strip>]>>;
366
+ strategist: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
367
+ model: z.ZodString;
368
+ recommended: z.ZodOptional<z.ZodEnum<{
369
+ high: "high";
370
+ xhigh: "xhigh";
371
+ middle: "middle";
372
+ fast: "fast";
373
+ vision: "vision";
374
+ writing: "writing";
375
+ design: "design";
376
+ }>>;
377
+ }, z.core.$strip>]>>;
378
+ guard: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
379
+ model: z.ZodString;
380
+ recommended: z.ZodOptional<z.ZodEnum<{
381
+ high: "high";
382
+ xhigh: "xhigh";
383
+ middle: "middle";
384
+ fast: "fast";
385
+ vision: "vision";
386
+ writing: "writing";
387
+ design: "design";
388
+ }>>;
389
+ }, z.core.$strip>]>>;
390
+ critic: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
391
+ model: z.ZodString;
392
+ recommended: z.ZodOptional<z.ZodEnum<{
393
+ high: "high";
394
+ xhigh: "xhigh";
395
+ middle: "middle";
396
+ fast: "fast";
397
+ vision: "vision";
398
+ writing: "writing";
399
+ design: "design";
400
+ }>>;
401
+ }, z.core.$strip>]>>;
402
+ designer: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
403
+ model: z.ZodString;
404
+ recommended: z.ZodOptional<z.ZodEnum<{
405
+ high: "high";
406
+ xhigh: "xhigh";
407
+ middle: "middle";
408
+ fast: "fast";
409
+ vision: "vision";
410
+ writing: "writing";
411
+ design: "design";
412
+ }>>;
413
+ }, z.core.$strip>]>>;
414
+ researcher: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
415
+ model: z.ZodString;
416
+ recommended: z.ZodOptional<z.ZodEnum<{
417
+ high: "high";
418
+ xhigh: "xhigh";
419
+ middle: "middle";
420
+ fast: "fast";
421
+ vision: "vision";
422
+ writing: "writing";
423
+ design: "design";
424
+ }>>;
425
+ }, z.core.$strip>]>>;
426
+ manager: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
427
+ model: z.ZodString;
428
+ recommended: z.ZodOptional<z.ZodEnum<{
429
+ high: "high";
430
+ xhigh: "xhigh";
431
+ middle: "middle";
432
+ fast: "fast";
433
+ vision: "vision";
434
+ writing: "writing";
435
+ design: "design";
436
+ }>>;
437
+ }, z.core.$strip>]>>;
438
+ brainstormer: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
439
+ model: z.ZodString;
440
+ recommended: z.ZodOptional<z.ZodEnum<{
441
+ high: "high";
442
+ xhigh: "xhigh";
443
+ middle: "middle";
444
+ fast: "fast";
445
+ vision: "vision";
446
+ writing: "writing";
447
+ design: "design";
448
+ }>>;
449
+ }, z.core.$strip>]>>;
450
+ vision: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
451
+ model: z.ZodString;
452
+ recommended: z.ZodOptional<z.ZodEnum<{
453
+ high: "high";
454
+ xhigh: "xhigh";
455
+ middle: "middle";
456
+ fast: "fast";
457
+ vision: "vision";
458
+ writing: "writing";
459
+ design: "design";
460
+ }>>;
461
+ }, z.core.$strip>]>>;
462
+ }, z.core.$strip>>;
187
463
  agents: z.ZodOptional<z.ZodObject<{
188
464
  bob: z.ZodOptional<z.ZodObject<{
189
465
  model: z.ZodString;
@@ -253,6 +529,14 @@ export declare const HiaiOpencodeConfigSchema: z.ZodObject<{
253
529
  model: z.ZodString;
254
530
  description: z.ZodOptional<z.ZodString>;
255
531
  }, z.core.$strip>>;
532
+ manager: z.ZodOptional<z.ZodObject<{
533
+ model: z.ZodString;
534
+ description: z.ZodOptional<z.ZodString>;
535
+ }, z.core.$strip>>;
536
+ vision: z.ZodOptional<z.ZodObject<{
537
+ model: z.ZodString;
538
+ description: z.ZodOptional<z.ZodString>;
539
+ }, z.core.$strip>>;
256
540
  logician: z.ZodOptional<z.ZodObject<{
257
541
  model: z.ZodString;
258
542
  description: z.ZodOptional<z.ZodString>;
@@ -672,6 +956,50 @@ export declare const HiaiOpencodeConfigSchema: z.ZodObject<{
672
956
  requiresAnyModel: z.ZodOptional<z.ZodBoolean>;
673
957
  requiresProvider: z.ZodOptional<z.ZodArray<z.ZodString>>;
674
958
  }, z.core.$strip>>;
959
+ manager: z.ZodOptional<z.ZodObject<{
960
+ fallbackChain: z.ZodArray<z.ZodObject<{
961
+ providers: z.ZodArray<z.ZodString>;
962
+ model: z.ZodString;
963
+ variant: z.ZodOptional<z.ZodString>;
964
+ reasoningEffort: z.ZodOptional<z.ZodString>;
965
+ temperature: z.ZodOptional<z.ZodNumber>;
966
+ top_p: z.ZodOptional<z.ZodNumber>;
967
+ maxTokens: z.ZodOptional<z.ZodNumber>;
968
+ thinking: z.ZodOptional<z.ZodObject<{
969
+ type: z.ZodEnum<{
970
+ enabled: "enabled";
971
+ disabled: "disabled";
972
+ }>;
973
+ budgetTokens: z.ZodOptional<z.ZodNumber>;
974
+ }, z.core.$strip>>;
975
+ }, z.core.$strip>>;
976
+ variant: z.ZodOptional<z.ZodString>;
977
+ requiresModel: z.ZodOptional<z.ZodString>;
978
+ requiresAnyModel: z.ZodOptional<z.ZodBoolean>;
979
+ requiresProvider: z.ZodOptional<z.ZodArray<z.ZodString>>;
980
+ }, z.core.$strip>>;
981
+ vision: z.ZodOptional<z.ZodObject<{
982
+ fallbackChain: z.ZodArray<z.ZodObject<{
983
+ providers: z.ZodArray<z.ZodString>;
984
+ model: z.ZodString;
985
+ variant: z.ZodOptional<z.ZodString>;
986
+ reasoningEffort: z.ZodOptional<z.ZodString>;
987
+ temperature: z.ZodOptional<z.ZodNumber>;
988
+ top_p: z.ZodOptional<z.ZodNumber>;
989
+ maxTokens: z.ZodOptional<z.ZodNumber>;
990
+ thinking: z.ZodOptional<z.ZodObject<{
991
+ type: z.ZodEnum<{
992
+ enabled: "enabled";
993
+ disabled: "disabled";
994
+ }>;
995
+ budgetTokens: z.ZodOptional<z.ZodNumber>;
996
+ }, z.core.$strip>>;
997
+ }, z.core.$strip>>;
998
+ variant: z.ZodOptional<z.ZodString>;
999
+ requiresModel: z.ZodOptional<z.ZodString>;
1000
+ requiresAnyModel: z.ZodOptional<z.ZodBoolean>;
1001
+ requiresProvider: z.ZodOptional<z.ZodArray<z.ZodString>>;
1002
+ }, z.core.$strip>>;
675
1003
  logician: z.ZodOptional<z.ZodObject<{
676
1004
  fallbackChain: z.ZodArray<z.ZodObject<{
677
1005
  providers: z.ZodArray<z.ZodString>;
@@ -978,8 +1306,9 @@ export declare const HiaiOpencodeConfigSchema: z.ZodObject<{
978
1306
  environment: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
979
1307
  }, z.core.$strip>>>;
980
1308
  lsp: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
981
- command: z.ZodArray<z.ZodString>;
982
- extensions: z.ZodArray<z.ZodString>;
1309
+ enabled: z.ZodOptional<z.ZodBoolean>;
1310
+ command: z.ZodOptional<z.ZodArray<z.ZodString>>;
1311
+ extensions: z.ZodOptional<z.ZodArray<z.ZodString>>;
983
1312
  initialization: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
984
1313
  }, z.core.$strip>>>;
985
1314
  subtask2: z.ZodOptional<z.ZodObject<{
@@ -990,6 +1319,15 @@ export declare const HiaiOpencodeConfigSchema: z.ZodObject<{
990
1319
  enabled: z.ZodOptional<z.ZodBoolean>;
991
1320
  disabled: z.ZodOptional<z.ZodArray<z.ZodString>>;
992
1321
  }, z.core.$strip>>;
1322
+ skill_discovery: z.ZodOptional<z.ZodObject<{
1323
+ config_sources: z.ZodOptional<z.ZodBoolean>;
1324
+ project_opencode: z.ZodOptional<z.ZodBoolean>;
1325
+ global_opencode: z.ZodOptional<z.ZodBoolean>;
1326
+ project_claude: z.ZodOptional<z.ZodBoolean>;
1327
+ global_claude: z.ZodOptional<z.ZodBoolean>;
1328
+ project_agents: z.ZodOptional<z.ZodBoolean>;
1329
+ global_agents: z.ZodOptional<z.ZodBoolean>;
1330
+ }, z.core.$strip>>;
993
1331
  permissions: z.ZodOptional<z.ZodObject<{
994
1332
  read: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
995
1333
  edit: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
@@ -1063,6 +1401,7 @@ export declare const HiaiOpencodeConfigSchema: z.ZodObject<{
1063
1401
  openrouter: z.ZodOptional<z.ZodString>;
1064
1402
  stitch: z.ZodOptional<z.ZodString>;
1065
1403
  firecrawl: z.ZodOptional<z.ZodString>;
1404
+ context7: z.ZodOptional<z.ZodString>;
1066
1405
  }, z.core.$strip>>;
1067
1406
  ollama: z.ZodOptional<z.ZodObject<{
1068
1407
  enabled: z.ZodDefault<z.ZodBoolean>;