opencode-dux 1.0.0

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 (302) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +452 -0
  3. package/dist/agents/descriptions.d.ts +6 -0
  4. package/dist/agents/designer.d.ts +2 -0
  5. package/dist/agents/explorer.d.ts +2 -0
  6. package/dist/agents/fixer.d.ts +2 -0
  7. package/dist/agents/index.d.ts +22 -0
  8. package/dist/agents/interpreter.d.ts +2 -0
  9. package/dist/agents/librarian.d.ts +2 -0
  10. package/dist/agents/oracle.d.ts +2 -0
  11. package/dist/agents/orchestrator.d.ts +27 -0
  12. package/dist/agents/overrides.d.ts +18 -0
  13. package/dist/agents/prompt-blocks.d.ts +97 -0
  14. package/dist/agents/steward.d.ts +3 -0
  15. package/dist/cli/config-io.d.ts +24 -0
  16. package/dist/cli/config-manager.d.ts +4 -0
  17. package/dist/cli/index.d.ts +2 -0
  18. package/dist/cli/index.js +1006 -0
  19. package/dist/cli/install.d.ts +2 -0
  20. package/dist/cli/mcps.d.ts +13 -0
  21. package/dist/cli/model-key-normalization.d.ts +1 -0
  22. package/dist/cli/paths.d.ts +35 -0
  23. package/dist/cli/providers.d.ts +137 -0
  24. package/dist/cli/skills.d.ts +22 -0
  25. package/dist/cli/system.d.ts +5 -0
  26. package/dist/cli/types.d.ts +38 -0
  27. package/dist/config/constants.d.ts +12 -0
  28. package/dist/config/index.d.ts +4 -0
  29. package/dist/config/loader.d.ts +40 -0
  30. package/dist/config/runtime-preset.d.ts +12 -0
  31. package/dist/config/schema.d.ts +281 -0
  32. package/dist/config/utils.d.ts +10 -0
  33. package/dist/discovery/local/types.d.ts +79 -0
  34. package/dist/discovery/local.d.ts +73 -0
  35. package/dist/discovery/mcp-servers.d.ts +88 -0
  36. package/dist/discovery/skills.d.ts +94 -0
  37. package/dist/hooks/apply-patch/codec.d.ts +7 -0
  38. package/dist/hooks/apply-patch/errors.d.ts +25 -0
  39. package/dist/hooks/apply-patch/execution-context.d.ts +27 -0
  40. package/dist/hooks/apply-patch/index.d.ts +15 -0
  41. package/dist/hooks/apply-patch/matching.d.ts +26 -0
  42. package/dist/hooks/apply-patch/operations.d.ts +3 -0
  43. package/dist/hooks/apply-patch/patch.d.ts +2 -0
  44. package/dist/hooks/apply-patch/prepared-changes.d.ts +17 -0
  45. package/dist/hooks/apply-patch/resolution.d.ts +19 -0
  46. package/dist/hooks/apply-patch/rewrite.d.ts +7 -0
  47. package/dist/hooks/apply-patch/test-helpers.d.ts +6 -0
  48. package/dist/hooks/apply-patch/types.d.ts +80 -0
  49. package/dist/hooks/auto-update-checker/cache.d.ts +11 -0
  50. package/dist/hooks/auto-update-checker/checker.d.ts +32 -0
  51. package/dist/hooks/auto-update-checker/constants.d.ts +11 -0
  52. package/dist/hooks/auto-update-checker/index.d.ts +18 -0
  53. package/dist/hooks/auto-update-checker/types.d.ts +22 -0
  54. package/dist/hooks/chat-headers.d.ts +16 -0
  55. package/dist/hooks/context-pressure-reminder/index.d.ts +33 -0
  56. package/dist/hooks/delegate-task-retry/guidance.d.ts +2 -0
  57. package/dist/hooks/delegate-task-retry/hook.d.ts +8 -0
  58. package/dist/hooks/delegate-task-retry/index.d.ts +4 -0
  59. package/dist/hooks/delegate-task-retry/patterns.d.ts +11 -0
  60. package/dist/hooks/filter-available-skills/index.d.ts +32 -0
  61. package/dist/hooks/foreground-fallback/index.d.ts +72 -0
  62. package/dist/hooks/image-hook.d.ts +5 -0
  63. package/dist/hooks/index.d.ts +14 -0
  64. package/dist/hooks/json-error-recovery/hook.d.ts +18 -0
  65. package/dist/hooks/json-error-recovery/index.d.ts +1 -0
  66. package/dist/hooks/phase-reminder/index.d.ts +26 -0
  67. package/dist/hooks/post-file-tool-nudge/index.d.ts +19 -0
  68. package/dist/hooks/task-session-manager/index.d.ts +52 -0
  69. package/dist/hooks/todo-continuation/index.d.ts +53 -0
  70. package/dist/hooks/todo-continuation/todo-hygiene.d.ts +35 -0
  71. package/dist/index.d.ts +5 -0
  72. package/dist/index.js +31782 -0
  73. package/dist/mcp/context7.d.ts +6 -0
  74. package/dist/mcp/grep-app.d.ts +6 -0
  75. package/dist/mcp/index.d.ts +13 -0
  76. package/dist/mcp/types.d.ts +12 -0
  77. package/dist/mcp/websearch.d.ts +9 -0
  78. package/dist/skills/registry.d.ts +29 -0
  79. package/dist/subscriptions/accounts-store.d.ts +57 -0
  80. package/dist/subscriptions/index.d.ts +13 -0
  81. package/dist/subscriptions/neuralwatt-scraper.d.ts +14 -0
  82. package/dist/subscriptions/opencode-go-scraper.d.ts +27 -0
  83. package/dist/subscriptions/types.d.ts +115 -0
  84. package/dist/subscriptions/usage-service.d.ts +74 -0
  85. package/dist/tools/ast-grep/cli.d.ts +15 -0
  86. package/dist/tools/ast-grep/constants.d.ts +25 -0
  87. package/dist/tools/ast-grep/downloader.d.ts +5 -0
  88. package/dist/tools/ast-grep/index.d.ts +10 -0
  89. package/dist/tools/ast-grep/tools.d.ts +3 -0
  90. package/dist/tools/ast-grep/types.d.ts +30 -0
  91. package/dist/tools/ast-grep/utils.d.ts +4 -0
  92. package/dist/tools/delegate.d.ts +14 -0
  93. package/dist/tools/index.d.ts +5 -0
  94. package/dist/tools/preset-manager.d.ts +27 -0
  95. package/dist/tools/smartfetch/binary.d.ts +3 -0
  96. package/dist/tools/smartfetch/cache.d.ts +6 -0
  97. package/dist/tools/smartfetch/constants.d.ts +12 -0
  98. package/dist/tools/smartfetch/index.d.ts +3 -0
  99. package/dist/tools/smartfetch/network.d.ts +38 -0
  100. package/dist/tools/smartfetch/secondary-model.d.ts +28 -0
  101. package/dist/tools/smartfetch/tool.d.ts +3 -0
  102. package/dist/tools/smartfetch/types.d.ts +122 -0
  103. package/dist/tools/smartfetch/utils.d.ts +18 -0
  104. package/dist/tui-state.d.ts +168 -0
  105. package/dist/tui.d.ts +37 -0
  106. package/dist/tui.js +1896 -0
  107. package/dist/utils/agent-variant.d.ts +63 -0
  108. package/dist/utils/compat.d.ts +30 -0
  109. package/dist/utils/env.d.ts +1 -0
  110. package/dist/utils/index.d.ts +9 -0
  111. package/dist/utils/internal-initiator.d.ts +6 -0
  112. package/dist/utils/logger.d.ts +8 -0
  113. package/dist/utils/polling.d.ts +21 -0
  114. package/dist/utils/session-manager.d.ts +55 -0
  115. package/dist/utils/session.d.ts +90 -0
  116. package/dist/utils/subagent-depth.d.ts +35 -0
  117. package/dist/utils/system-collapse.d.ts +6 -0
  118. package/dist/utils/task.d.ts +4 -0
  119. package/dist/utils/zip-extractor.d.ts +1 -0
  120. package/index.ts +1 -0
  121. package/opencode-dux.schema.json +634 -0
  122. package/package.json +103 -0
  123. package/src/agents/descriptions.ts +55 -0
  124. package/src/agents/designer.test.ts +86 -0
  125. package/src/agents/designer.ts +154 -0
  126. package/src/agents/display-name.test.ts +186 -0
  127. package/src/agents/explorer.test.ts +79 -0
  128. package/src/agents/explorer.ts +144 -0
  129. package/src/agents/fixer.test.ts +79 -0
  130. package/src/agents/fixer.ts +145 -0
  131. package/src/agents/index.test.ts +472 -0
  132. package/src/agents/index.ts +248 -0
  133. package/src/agents/interpreter.ts +136 -0
  134. package/src/agents/librarian.test.ts +80 -0
  135. package/src/agents/librarian.ts +145 -0
  136. package/src/agents/oracle.test.ts +89 -0
  137. package/src/agents/oracle.ts +184 -0
  138. package/src/agents/orchestrator.test.ts +116 -0
  139. package/src/agents/orchestrator.ts +574 -0
  140. package/src/agents/overrides.ts +95 -0
  141. package/src/agents/prompt-blocks.test.ts +114 -0
  142. package/src/agents/prompt-blocks.ts +640 -0
  143. package/src/agents/steward.ts +146 -0
  144. package/src/cli/config-io.test.ts +536 -0
  145. package/src/cli/config-io.ts +473 -0
  146. package/src/cli/config-manager.test.ts +141 -0
  147. package/src/cli/config-manager.ts +4 -0
  148. package/src/cli/index.ts +88 -0
  149. package/src/cli/install.ts +282 -0
  150. package/src/cli/mcps.test.ts +62 -0
  151. package/src/cli/mcps.ts +39 -0
  152. package/src/cli/model-key-normalization.test.ts +21 -0
  153. package/src/cli/model-key-normalization.ts +60 -0
  154. package/src/cli/paths.test.ts +167 -0
  155. package/src/cli/paths.ts +144 -0
  156. package/src/cli/providers.test.ts +118 -0
  157. package/src/cli/providers.ts +141 -0
  158. package/src/cli/skills.test.ts +111 -0
  159. package/src/cli/skills.ts +103 -0
  160. package/src/cli/system.test.ts +91 -0
  161. package/src/cli/system.ts +180 -0
  162. package/src/cli/types.ts +43 -0
  163. package/src/config/constants.ts +58 -0
  164. package/src/config/index.ts +4 -0
  165. package/src/config/loader.test.ts +1194 -0
  166. package/src/config/loader.ts +269 -0
  167. package/src/config/model-resolution.test.ts +176 -0
  168. package/src/config/runtime-preset.test.ts +61 -0
  169. package/src/config/runtime-preset.ts +37 -0
  170. package/src/config/schema.ts +248 -0
  171. package/src/config/utils.test.ts +41 -0
  172. package/src/config/utils.ts +23 -0
  173. package/src/discovery/local/types.ts +85 -0
  174. package/src/discovery/local.ts +322 -0
  175. package/src/discovery/mcp-servers.ts +804 -0
  176. package/src/discovery/skills.ts +959 -0
  177. package/src/hooks/apply-patch/codec.test.ts +184 -0
  178. package/src/hooks/apply-patch/codec.ts +352 -0
  179. package/src/hooks/apply-patch/errors.ts +117 -0
  180. package/src/hooks/apply-patch/execution-context.ts +432 -0
  181. package/src/hooks/apply-patch/hook.test.ts +768 -0
  182. package/src/hooks/apply-patch/index.ts +126 -0
  183. package/src/hooks/apply-patch/matching.test.ts +215 -0
  184. package/src/hooks/apply-patch/matching.ts +586 -0
  185. package/src/hooks/apply-patch/operations.test.ts +1535 -0
  186. package/src/hooks/apply-patch/operations.ts +3 -0
  187. package/src/hooks/apply-patch/patch.ts +9 -0
  188. package/src/hooks/apply-patch/prepared-changes.ts +400 -0
  189. package/src/hooks/apply-patch/resolution.test.ts +420 -0
  190. package/src/hooks/apply-patch/resolution.ts +437 -0
  191. package/src/hooks/apply-patch/rewrite.ts +496 -0
  192. package/src/hooks/apply-patch/test-helpers.ts +52 -0
  193. package/src/hooks/apply-patch/types.ts +111 -0
  194. package/src/hooks/auto-update-checker/cache.test.ts +179 -0
  195. package/src/hooks/auto-update-checker/cache.ts +188 -0
  196. package/src/hooks/auto-update-checker/checker.test.ts +159 -0
  197. package/src/hooks/auto-update-checker/checker.ts +308 -0
  198. package/src/hooks/auto-update-checker/constants.ts +33 -0
  199. package/src/hooks/auto-update-checker/index.test.ts +282 -0
  200. package/src/hooks/auto-update-checker/index.ts +225 -0
  201. package/src/hooks/auto-update-checker/types.ts +26 -0
  202. package/src/hooks/chat-headers.test.ts +236 -0
  203. package/src/hooks/chat-headers.ts +97 -0
  204. package/src/hooks/context-pressure-reminder/index.test.ts +179 -0
  205. package/src/hooks/context-pressure-reminder/index.ts +137 -0
  206. package/src/hooks/delegate-task-retry/guidance.ts +41 -0
  207. package/src/hooks/delegate-task-retry/hook.ts +23 -0
  208. package/src/hooks/delegate-task-retry/index.test.ts +38 -0
  209. package/src/hooks/delegate-task-retry/index.ts +7 -0
  210. package/src/hooks/delegate-task-retry/patterns.ts +79 -0
  211. package/src/hooks/filter-available-skills/index.test.ts +297 -0
  212. package/src/hooks/filter-available-skills/index.ts +160 -0
  213. package/src/hooks/foreground-fallback/index.test.ts +624 -0
  214. package/src/hooks/foreground-fallback/index.ts +374 -0
  215. package/src/hooks/image-hook.ts +6 -0
  216. package/src/hooks/index.ts +17 -0
  217. package/src/hooks/json-error-recovery/hook.ts +73 -0
  218. package/src/hooks/json-error-recovery/index.test.ts +111 -0
  219. package/src/hooks/json-error-recovery/index.ts +6 -0
  220. package/src/hooks/phase-reminder/index.test.ts +74 -0
  221. package/src/hooks/phase-reminder/index.ts +85 -0
  222. package/src/hooks/post-file-tool-nudge/index.test.ts +94 -0
  223. package/src/hooks/post-file-tool-nudge/index.ts +63 -0
  224. package/src/hooks/task-session-manager/index.test.ts +833 -0
  225. package/src/hooks/task-session-manager/index.ts +434 -0
  226. package/src/hooks/todo-continuation/index.test.ts +3026 -0
  227. package/src/hooks/todo-continuation/index.ts +878 -0
  228. package/src/hooks/todo-continuation/todo-hygiene.test.ts +204 -0
  229. package/src/hooks/todo-continuation/todo-hygiene.ts +207 -0
  230. package/src/index.ts +1672 -0
  231. package/src/mcp/context7.ts +14 -0
  232. package/src/mcp/grep-app.ts +11 -0
  233. package/src/mcp/index.test.ts +96 -0
  234. package/src/mcp/index.ts +66 -0
  235. package/src/mcp/types.ts +16 -0
  236. package/src/mcp/websearch.ts +47 -0
  237. package/src/skills/codemap/README.md +60 -0
  238. package/src/skills/codemap/SKILL.md +174 -0
  239. package/src/skills/codemap/scripts/codemap.mjs +483 -0
  240. package/src/skills/codemap/scripts/codemap.test.ts +129 -0
  241. package/src/skills/registry.ts +218 -0
  242. package/src/skills/simplify/README.md +19 -0
  243. package/src/skills/simplify/SKILL.md +138 -0
  244. package/src/subscriptions/accounts-store.test.ts +236 -0
  245. package/src/subscriptions/accounts-store.ts +184 -0
  246. package/src/subscriptions/index.ts +30 -0
  247. package/src/subscriptions/neuralwatt-scraper.ts +108 -0
  248. package/src/subscriptions/opencode-go-scraper.ts +301 -0
  249. package/src/subscriptions/types.ts +145 -0
  250. package/src/subscriptions/usage-service.test.ts +202 -0
  251. package/src/subscriptions/usage-service.ts +651 -0
  252. package/src/tools/ast-grep/cli.ts +257 -0
  253. package/src/tools/ast-grep/constants.ts +214 -0
  254. package/src/tools/ast-grep/downloader.ts +131 -0
  255. package/src/tools/ast-grep/index.ts +24 -0
  256. package/src/tools/ast-grep/tools.ts +117 -0
  257. package/src/tools/ast-grep/types.ts +51 -0
  258. package/src/tools/ast-grep/utils.ts +126 -0
  259. package/src/tools/delegate-handoff.test.ts +18 -0
  260. package/src/tools/delegate.ts +508 -0
  261. package/src/tools/index.ts +8 -0
  262. package/src/tools/preset-manager.test.ts +795 -0
  263. package/src/tools/preset-manager.ts +332 -0
  264. package/src/tools/smartfetch/binary.ts +58 -0
  265. package/src/tools/smartfetch/cache.test.ts +34 -0
  266. package/src/tools/smartfetch/cache.ts +112 -0
  267. package/src/tools/smartfetch/constants.ts +29 -0
  268. package/src/tools/smartfetch/index.ts +8 -0
  269. package/src/tools/smartfetch/network.test.ts +178 -0
  270. package/src/tools/smartfetch/network.ts +614 -0
  271. package/src/tools/smartfetch/secondary-model.test.ts +85 -0
  272. package/src/tools/smartfetch/secondary-model.ts +276 -0
  273. package/src/tools/smartfetch/tool.test.ts +60 -0
  274. package/src/tools/smartfetch/tool.ts +832 -0
  275. package/src/tools/smartfetch/types.ts +135 -0
  276. package/src/tools/smartfetch/utils.test.ts +24 -0
  277. package/src/tools/smartfetch/utils.ts +456 -0
  278. package/src/tui-state.test.ts +867 -0
  279. package/src/tui-state.ts +1255 -0
  280. package/src/tui.test.ts +336 -0
  281. package/src/tui.ts +1539 -0
  282. package/src/utils/agent-variant.test.ts +244 -0
  283. package/src/utils/agent-variant.ts +187 -0
  284. package/src/utils/compat.ts +91 -0
  285. package/src/utils/env.ts +12 -0
  286. package/src/utils/index.ts +9 -0
  287. package/src/utils/internal-initiator.ts +28 -0
  288. package/src/utils/logger.test.ts +220 -0
  289. package/src/utils/logger.ts +136 -0
  290. package/src/utils/polling.test.ts +191 -0
  291. package/src/utils/polling.ts +67 -0
  292. package/src/utils/session-manager.test.ts +173 -0
  293. package/src/utils/session-manager.ts +356 -0
  294. package/src/utils/session.test.ts +110 -0
  295. package/src/utils/session.ts +389 -0
  296. package/src/utils/subagent-depth.test.ts +170 -0
  297. package/src/utils/subagent-depth.ts +75 -0
  298. package/src/utils/system-collapse.test.ts +86 -0
  299. package/src/utils/system-collapse.ts +24 -0
  300. package/src/utils/task.test.ts +24 -0
  301. package/src/utils/task.ts +20 -0
  302. package/src/utils/zip-extractor.ts +102 -0
@@ -0,0 +1,2 @@
1
+ import type { InstallArgs } from './types';
2
+ export declare function install(args: InstallArgs): Promise<number>;
@@ -0,0 +1,13 @@
1
+ import type { SkillOrMcpConfig } from '../config';
2
+ import { type NormalizedSkillConfig, normalizeSkillConfig } from './skills';
3
+ export type { NormalizedSkillConfig as NormalizedMcpConfig };
4
+ export { normalizeSkillConfig as normalizeMcpConfig };
5
+ /**
6
+ * Get MCP permissions for a specific agent.
7
+ * MCP permission rules use 'allow'/'deny' per MCP name.
8
+ *
9
+ * @param agentName - The agent name
10
+ * @param mcpList - Optional MCP config (object or array syntax)
11
+ * @returns Permission rules keyed by MCP name
12
+ */
13
+ export declare function getMcpPermissionsForAgent(_agentName: string, mcpList?: SkillOrMcpConfig): Promise<Record<string, 'allow' | 'ask' | 'deny'>>;
@@ -0,0 +1 @@
1
+ export declare function buildModelKeyAliases(input: string): string[];
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Get the OpenCode plugin config directory.
3
+ *
4
+ * Resolution order:
5
+ * 1. OPENCODE_CONFIG_DIR (custom OpenCode directory)
6
+ * 2. XDG_CONFIG_HOME/opencode
7
+ * 3. ~/.config/opencode
8
+ */
9
+ export declare function getConfigDir(): string;
10
+ /**
11
+ * Get OpenCode config directories in read/search order.
12
+ *
13
+ * Resolution order:
14
+ * 1. OPENCODE_CONFIG_DIR (if set)
15
+ * 2. XDG_CONFIG_HOME/opencode or ~/.config/opencode
16
+ *
17
+ * Duplicate entries are removed.
18
+ */
19
+ export declare function getConfigSearchDirs(): string[];
20
+ export declare function getOpenCodeConfigPaths(): string[];
21
+ export declare function getConfigJson(): string;
22
+ export declare function getConfigJsonc(): string;
23
+ export declare function getLiteConfig(): string;
24
+ export declare function getLiteConfigJsonc(): string;
25
+ export declare function getTuiConfig(): string;
26
+ export declare function getTuiConfigJsonc(): string;
27
+ export declare function getExistingLiteConfigPath(): string;
28
+ export declare function getExistingTuiConfigPath(): string;
29
+ export declare function getExistingConfigPath(): string;
30
+ export declare function ensureConfigDir(): void;
31
+ export declare function ensureTuiConfigDir(): void;
32
+ /**
33
+ * Ensure the directory for OpenCode's main config file exists.
34
+ */
35
+ export declare function ensureOpenCodeConfigDir(): void;
@@ -0,0 +1,137 @@
1
+ import type { InstallConfig } from './types';
2
+ export declare const GENERATED_PRESETS: readonly ["openai", "opencode-go"];
3
+ export declare const MODEL_MAPPINGS: {
4
+ readonly openai: {
5
+ readonly orchestrator: {
6
+ readonly model: "openai/gpt-5.5";
7
+ };
8
+ readonly oracle: {
9
+ readonly model: "openai/gpt-5.5";
10
+ readonly variant: "high";
11
+ };
12
+ readonly librarian: {
13
+ readonly model: "openai/gpt-5.4-mini";
14
+ readonly variant: "low";
15
+ };
16
+ readonly explorer: {
17
+ readonly model: "openai/gpt-5.4-mini";
18
+ readonly variant: "low";
19
+ };
20
+ readonly designer: {
21
+ readonly model: "openai/gpt-5.4-mini";
22
+ readonly variant: "medium";
23
+ };
24
+ readonly fixer: {
25
+ readonly model: "openai/gpt-5.4-mini";
26
+ readonly variant: "low";
27
+ };
28
+ };
29
+ readonly kimi: {
30
+ readonly orchestrator: {
31
+ readonly model: "kimi-for-coding/k2p5";
32
+ };
33
+ readonly oracle: {
34
+ readonly model: "kimi-for-coding/k2p5";
35
+ readonly variant: "high";
36
+ };
37
+ readonly librarian: {
38
+ readonly model: "kimi-for-coding/k2p5";
39
+ readonly variant: "low";
40
+ };
41
+ readonly explorer: {
42
+ readonly model: "kimi-for-coding/k2p5";
43
+ readonly variant: "low";
44
+ };
45
+ readonly designer: {
46
+ readonly model: "kimi-for-coding/k2p5";
47
+ readonly variant: "medium";
48
+ };
49
+ readonly fixer: {
50
+ readonly model: "kimi-for-coding/k2p5";
51
+ readonly variant: "low";
52
+ };
53
+ };
54
+ readonly copilot: {
55
+ readonly orchestrator: {
56
+ readonly model: "github-copilot/claude-opus-4.6";
57
+ };
58
+ readonly oracle: {
59
+ readonly model: "github-copilot/claude-opus-4.6";
60
+ readonly variant: "high";
61
+ };
62
+ readonly librarian: {
63
+ readonly model: "github-copilot/grok-code-fast-1";
64
+ readonly variant: "low";
65
+ };
66
+ readonly explorer: {
67
+ readonly model: "github-copilot/grok-code-fast-1";
68
+ readonly variant: "low";
69
+ };
70
+ readonly designer: {
71
+ readonly model: "github-copilot/gemini-3.1-pro-preview";
72
+ readonly variant: "medium";
73
+ };
74
+ readonly fixer: {
75
+ readonly model: "github-copilot/claude-sonnet-4.6";
76
+ readonly variant: "low";
77
+ };
78
+ };
79
+ readonly 'zai-plan': {
80
+ readonly orchestrator: {
81
+ readonly model: "zai-coding-plan/glm-5";
82
+ };
83
+ readonly oracle: {
84
+ readonly model: "zai-coding-plan/glm-5";
85
+ readonly variant: "high";
86
+ };
87
+ readonly librarian: {
88
+ readonly model: "zai-coding-plan/glm-5";
89
+ readonly variant: "low";
90
+ };
91
+ readonly explorer: {
92
+ readonly model: "zai-coding-plan/glm-5";
93
+ readonly variant: "low";
94
+ };
95
+ readonly designer: {
96
+ readonly model: "zai-coding-plan/glm-5";
97
+ readonly variant: "medium";
98
+ };
99
+ readonly fixer: {
100
+ readonly model: "zai-coding-plan/glm-5";
101
+ readonly variant: "low";
102
+ };
103
+ };
104
+ readonly 'opencode-go': {
105
+ readonly orchestrator: {
106
+ readonly model: "neuralwatt/zai-org/GLM-5.1-FP8";
107
+ readonly variant: "medium";
108
+ };
109
+ readonly oracle: {
110
+ readonly model: "opencode-go/deepseek-v4-flash";
111
+ readonly variant: "medium";
112
+ };
113
+ readonly librarian: {
114
+ readonly model: "opencode-go/deepseek-v4-flash";
115
+ readonly variant: "low";
116
+ };
117
+ readonly explorer: {
118
+ readonly model: "neuralwatt/qwen3.5-397b-fast";
119
+ readonly variant: "low";
120
+ };
121
+ readonly designer: {
122
+ readonly model: "opencode-go/mimo-v2.5-pro";
123
+ readonly variant: "medium";
124
+ };
125
+ readonly fixer: {
126
+ readonly model: "opencode-go/deepseek-v4-flash";
127
+ readonly variant: "low";
128
+ };
129
+ };
130
+ };
131
+ export type PresetName = keyof typeof MODEL_MAPPINGS;
132
+ export type GeneratedPresetName = (typeof GENERATED_PRESETS)[number];
133
+ export declare function isPresetName(value: string): value is PresetName;
134
+ export declare function getPresetNames(): PresetName[];
135
+ export declare function isGeneratedPresetName(value: string): value is GeneratedPresetName;
136
+ export declare function getGeneratedPresetNames(): GeneratedPresetName[];
137
+ export declare function generateLiteConfig(installConfig: InstallConfig): Record<string, unknown>;
@@ -0,0 +1,22 @@
1
+ import type { PluginInput } from '@opencode-ai/plugin';
2
+ import type { SkillOrMcpConfig } from '../config';
3
+ export interface NormalizedSkillConfig {
4
+ alwaysLoad: string[];
5
+ wildcard: boolean;
6
+ excluded: string[];
7
+ }
8
+ export declare function normalizeSkillConfig(raw: SkillOrMcpConfig | undefined): NormalizedSkillConfig;
9
+ /**
10
+ * Get permission presets for a specific agent based on recommended skills.
11
+ * @param agentName - The name of the agent
12
+ * @param skillList - Optional explicit list of skills to allow (overrides recommendations)
13
+ * @param ctx - Plugin input context for SDK discovery when wildcard=true
14
+ * @returns Permission rules for the skill permission type
15
+ */
16
+ export declare function getSkillPermissionsForAgent(_agentName: string, skillList?: SkillOrMcpConfig, ctx?: PluginInput): Promise<Record<string, 'allow' | 'ask' | 'deny'>>;
17
+ /**
18
+ * Scan installed skills from the filesystem via SDK discovery.
19
+ * @param ctx - Plugin input context for SDK discovery
20
+ * @returns Array of skill names that are installed
21
+ */
22
+ export declare function scanInstalledSkills(ctx: PluginInput): Promise<string[]>;
@@ -0,0 +1,5 @@
1
+ export declare function resolveOpenCodePath(): string;
2
+ export declare function isOpenCodeInstalled(): Promise<boolean>;
3
+ export declare function getOpenCodeVersion(): Promise<string | null>;
4
+ export declare function getOpenCodePath(): string | null;
5
+ export declare function fetchLatestVersion(packageName: string): Promise<string | null>;
@@ -0,0 +1,38 @@
1
+ export type BooleanArg = 'yes' | 'no';
2
+ export interface InstallArgs {
3
+ tui: boolean;
4
+ skills?: BooleanArg;
5
+ preset?: string;
6
+ dryRun?: boolean;
7
+ reset?: boolean;
8
+ }
9
+ export interface OpenCodeConfig {
10
+ plugin?: unknown[];
11
+ provider?: Record<string, unknown>;
12
+ agent?: Record<string, unknown>;
13
+ [key: string]: unknown;
14
+ }
15
+ export interface InstallConfig {
16
+ installSkills: boolean;
17
+ installCustomSkills: boolean;
18
+ preset?: string;
19
+ promptForStar?: boolean;
20
+ dryRun?: boolean;
21
+ reset: boolean;
22
+ }
23
+ export interface ConfigMergeResult {
24
+ success: boolean;
25
+ configPath: string;
26
+ error?: string;
27
+ }
28
+ export interface DetectedConfig {
29
+ isInstalled: boolean;
30
+ hasKimi: boolean;
31
+ hasOpenAI: boolean;
32
+ hasAnthropic?: boolean;
33
+ hasCopilot?: boolean;
34
+ hasZaiPlan?: boolean;
35
+ hasAntigravity: boolean;
36
+ hasChutes?: boolean;
37
+ hasOpencodeZen: boolean;
38
+ }
@@ -0,0 +1,12 @@
1
+ export declare const AGENT_ALIASES: Record<string, string>;
2
+ export declare const SUBAGENT_NAMES: readonly ["explorer", "librarian", "oracle", "designer", "fixer", "steward", "interpreter"];
3
+ export declare const ORCHESTRATOR_NAME: "orchestrator";
4
+ export declare const ALL_AGENT_NAMES: readonly ["orchestrator", "explorer", "librarian", "oracle", "designer", "fixer", "steward", "interpreter"];
5
+ export type AgentName = (typeof ALL_AGENT_NAMES)[number];
6
+ export declare const DEFAULT_MODELS: Record<AgentName, string | undefined>;
7
+ export declare const POLL_INTERVAL_MS = 500;
8
+ export declare const MAX_POLL_TIME_MS: number;
9
+ export declare const DEFAULT_MAX_SUBAGENT_DEPTH = 10;
10
+ export declare const PHASE_REMINDER_TEXT = "!IMPORTANT! Follow <first_gate> order in system prompt; delegate_subagent in the same turn you name the agent. !END!";
11
+ export declare const STABLE_POLLS_THRESHOLD = 3;
12
+ export declare const SDK_DISCOVERY_TIMEOUT_MS = 10000;
@@ -0,0 +1,4 @@
1
+ export * from './constants';
2
+ export { deepMerge, loadAgentPrompt, loadPluginConfig } from './loader';
3
+ export * from './schema';
4
+ export { getAgentOverride } from './utils';
@@ -0,0 +1,40 @@
1
+ import { type PluginConfig } from './schema';
2
+ /**
3
+ * Recursively merge two objects, with override values taking precedence.
4
+ * For nested objects, merges recursively. For arrays and primitives, override replaces base.
5
+ *
6
+ * @param base - Base object to merge into
7
+ * @param override - Override object whose values take precedence
8
+ * @returns Merged object, or undefined if both inputs are undefined
9
+ */
10
+ export declare function deepMerge<T extends Record<string, unknown>>(base?: T, override?: T): T | undefined;
11
+ /**
12
+ * Load plugin configuration from user and project config files, merging them appropriately.
13
+ *
14
+ * Configuration is loaded from two locations:
15
+ * 1. User config: $OPENCODE_CONFIG_DIR/opencode-dux.jsonc or .json,
16
+ * or ~/.config/opencode/opencode-dux.jsonc or .json (or $XDG_CONFIG_HOME)
17
+ * 2. Project config: <directory>/.opencode/opencode-dux.jsonc or .json
18
+ *
19
+ * JSONC format is preferred over JSON (allows comments and trailing commas).
20
+ * Project config takes precedence over user config. Nested objects (agents) are
21
+ * deep-merged, while top-level arrays are replaced entirely by project config.
22
+ *
23
+ * @param directory - Project directory to search for .opencode config
24
+ * @returns Merged plugin configuration (empty object if no configs found)
25
+ */
26
+ export declare function loadPluginConfig(directory: string): PluginConfig;
27
+ /**
28
+ * Load custom prompt for an agent from the prompts directory.
29
+ * Checks for {agent}.md (replaces default) and {agent}_append.md (appends to default).
30
+ * If preset is provided and safe for paths, it first checks {preset}/ subdirectory,
31
+ * then falls back to the root prompts directory.
32
+ *
33
+ * @param agentName - Name of the agent (e.g., "orchestrator", "explorer")
34
+ * @param preset - Optional preset name for preset-scoped prompt lookup
35
+ * @returns Object with prompt and/or appendPrompt if files exist
36
+ */
37
+ export declare function loadAgentPrompt(agentName: string, preset?: string): {
38
+ prompt?: string;
39
+ appendPrompt?: string;
40
+ };
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Module-level runtime preset state.
3
+ *
4
+ * Survives plugin re-inits triggered by client.config.update() →
5
+ * Instance.dispose(). The plugin function re-runs but this module-level
6
+ * variable persists within the same Node.js process.
7
+ */
8
+ export declare function setActiveRuntimePreset(name: string | null): void;
9
+ export declare function getActiveRuntimePreset(): string | null;
10
+ export declare function getPreviousRuntimePreset(): string | null;
11
+ export declare function setActiveRuntimePresetWithPrevious(name: string | null): void;
12
+ export declare function rollbackRuntimePreset(previous: string | null): void;
@@ -0,0 +1,281 @@
1
+ import { z } from 'zod';
2
+ declare const FALLBACK_AGENT_NAMES: readonly ["orchestrator", "oracle", "designer", "explorer", "librarian", "fixer", "steward", "interpreter"];
3
+ declare const MANUAL_AGENT_NAMES: readonly ["orchestrator", "oracle", "designer", "explorer", "librarian", "fixer"];
4
+ export declare const ProviderModelIdSchema: z.ZodString;
5
+ export declare const ManualAgentPlanSchema: z.ZodObject<{
6
+ primary: z.ZodString;
7
+ fallback1: z.ZodString;
8
+ fallback2: z.ZodString;
9
+ fallback3: z.ZodString;
10
+ }, z.core.$strip>;
11
+ export declare const ManualPlanSchema: z.ZodObject<{
12
+ orchestrator: z.ZodObject<{
13
+ primary: z.ZodString;
14
+ fallback1: z.ZodString;
15
+ fallback2: z.ZodString;
16
+ fallback3: z.ZodString;
17
+ }, z.core.$strip>;
18
+ oracle: z.ZodObject<{
19
+ primary: z.ZodString;
20
+ fallback1: z.ZodString;
21
+ fallback2: z.ZodString;
22
+ fallback3: z.ZodString;
23
+ }, z.core.$strip>;
24
+ designer: z.ZodObject<{
25
+ primary: z.ZodString;
26
+ fallback1: z.ZodString;
27
+ fallback2: z.ZodString;
28
+ fallback3: z.ZodString;
29
+ }, z.core.$strip>;
30
+ explorer: z.ZodObject<{
31
+ primary: z.ZodString;
32
+ fallback1: z.ZodString;
33
+ fallback2: z.ZodString;
34
+ fallback3: z.ZodString;
35
+ }, z.core.$strip>;
36
+ librarian: z.ZodObject<{
37
+ primary: z.ZodString;
38
+ fallback1: z.ZodString;
39
+ fallback2: z.ZodString;
40
+ fallback3: z.ZodString;
41
+ }, z.core.$strip>;
42
+ fixer: z.ZodObject<{
43
+ primary: z.ZodString;
44
+ fallback1: z.ZodString;
45
+ fallback2: z.ZodString;
46
+ fallback3: z.ZodString;
47
+ }, z.core.$strip>;
48
+ }, z.core.$strict>;
49
+ export type ManualAgentName = (typeof MANUAL_AGENT_NAMES)[number];
50
+ export type ManualAgentPlan = z.infer<typeof ManualAgentPlanSchema>;
51
+ export type ManualPlan = z.infer<typeof ManualPlanSchema>;
52
+ export type FallbackAgentName = (typeof FALLBACK_AGENT_NAMES)[number];
53
+ declare const SkillOrMcpConfigSchema: z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodObject<{
54
+ 'always-load': z.ZodOptional<z.ZodArray<z.ZodString>>;
55
+ mandatory: z.ZodOptional<z.ZodArray<z.ZodString>>;
56
+ wildcard: z.ZodOptional<z.ZodBoolean>;
57
+ }, z.core.$strip>]>;
58
+ export declare const AgentOverrideConfigSchema: z.ZodObject<{
59
+ model: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
60
+ id: z.ZodString;
61
+ variant: z.ZodOptional<z.ZodString>;
62
+ }, z.core.$strip>]>>]>>;
63
+ temperature: z.ZodOptional<z.ZodNumber>;
64
+ variant: z.ZodCatch<z.ZodOptional<z.ZodString>>;
65
+ options: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
66
+ displayName: z.ZodOptional<z.ZodString>;
67
+ skills: z.ZodOptional<z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodObject<{
68
+ 'always-load': z.ZodOptional<z.ZodArray<z.ZodString>>;
69
+ mandatory: z.ZodOptional<z.ZodArray<z.ZodString>>;
70
+ wildcard: z.ZodOptional<z.ZodBoolean>;
71
+ }, z.core.$strip>]>>;
72
+ mcps: z.ZodOptional<z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodObject<{
73
+ 'always-load': z.ZodOptional<z.ZodArray<z.ZodString>>;
74
+ mandatory: z.ZodOptional<z.ZodArray<z.ZodString>>;
75
+ wildcard: z.ZodOptional<z.ZodBoolean>;
76
+ }, z.core.$strip>]>>;
77
+ }, z.core.$strict>;
78
+ export type AgentOverrideConfig = z.infer<typeof AgentOverrideConfigSchema>;
79
+ /** Normalized model entry with optional per-model variant. */
80
+ export type ModelEntry = {
81
+ id: string;
82
+ variant?: string;
83
+ };
84
+ export declare const PresetSchema: z.ZodRecord<z.ZodString, z.ZodObject<{
85
+ model: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
86
+ id: z.ZodString;
87
+ variant: z.ZodOptional<z.ZodString>;
88
+ }, z.core.$strip>]>>]>>;
89
+ temperature: z.ZodOptional<z.ZodNumber>;
90
+ variant: z.ZodCatch<z.ZodOptional<z.ZodString>>;
91
+ options: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
92
+ displayName: z.ZodOptional<z.ZodString>;
93
+ skills: z.ZodOptional<z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodObject<{
94
+ 'always-load': z.ZodOptional<z.ZodArray<z.ZodString>>;
95
+ mandatory: z.ZodOptional<z.ZodArray<z.ZodString>>;
96
+ wildcard: z.ZodOptional<z.ZodBoolean>;
97
+ }, z.core.$strip>]>>;
98
+ mcps: z.ZodOptional<z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodObject<{
99
+ 'always-load': z.ZodOptional<z.ZodArray<z.ZodString>>;
100
+ mandatory: z.ZodOptional<z.ZodArray<z.ZodString>>;
101
+ wildcard: z.ZodOptional<z.ZodBoolean>;
102
+ }, z.core.$strip>]>>;
103
+ }, z.core.$strict>>;
104
+ export type Preset = z.infer<typeof PresetSchema>;
105
+ export declare const WebsearchConfigSchema: z.ZodObject<{
106
+ provider: z.ZodDefault<z.ZodEnum<{
107
+ exa: "exa";
108
+ tavily: "tavily";
109
+ }>>;
110
+ }, z.core.$strip>;
111
+ export type WebsearchConfig = z.infer<typeof WebsearchConfigSchema>;
112
+ export declare const McpNameSchema: z.ZodEnum<{
113
+ websearch: "websearch";
114
+ context7: "context7";
115
+ grep_app: "grep_app";
116
+ }>;
117
+ export type McpName = z.infer<typeof McpNameSchema>;
118
+ export declare const SessionManagerConfigSchema: z.ZodObject<{
119
+ maxSessionsPerAgent: z.ZodDefault<z.ZodNumber>;
120
+ readContextMinLines: z.ZodDefault<z.ZodNumber>;
121
+ readContextMaxFiles: z.ZodDefault<z.ZodNumber>;
122
+ }, z.core.$strip>;
123
+ export type SessionManagerConfig = z.infer<typeof SessionManagerConfigSchema>;
124
+ export declare const TodoContinuationConfigSchema: z.ZodObject<{
125
+ maxContinuations: z.ZodDefault<z.ZodNumber>;
126
+ cooldownMs: z.ZodDefault<z.ZodNumber>;
127
+ autoEnable: z.ZodDefault<z.ZodBoolean>;
128
+ autoEnableThreshold: z.ZodDefault<z.ZodNumber>;
129
+ }, z.core.$strip>;
130
+ export type TodoContinuationConfig = z.infer<typeof TodoContinuationConfigSchema>;
131
+ export declare const ContextPressureConfigSchema: z.ZodObject<{
132
+ enabled: z.ZodDefault<z.ZodBoolean>;
133
+ warnThresholdPct: z.ZodDefault<z.ZodNumber>;
134
+ }, z.core.$strip>;
135
+ export type ContextPressureConfig = z.infer<typeof ContextPressureConfigSchema>;
136
+ export declare const FailoverConfigSchema: z.ZodObject<{
137
+ enabled: z.ZodDefault<z.ZodBoolean>;
138
+ timeoutMs: z.ZodDefault<z.ZodNumber>;
139
+ retryDelayMs: z.ZodDefault<z.ZodNumber>;
140
+ chains: z.ZodDefault<z.ZodObject<{
141
+ orchestrator: z.ZodOptional<z.ZodArray<z.ZodString>>;
142
+ oracle: z.ZodOptional<z.ZodArray<z.ZodString>>;
143
+ designer: z.ZodOptional<z.ZodArray<z.ZodString>>;
144
+ explorer: z.ZodOptional<z.ZodArray<z.ZodString>>;
145
+ librarian: z.ZodOptional<z.ZodArray<z.ZodString>>;
146
+ fixer: z.ZodOptional<z.ZodArray<z.ZodString>>;
147
+ steward: z.ZodOptional<z.ZodArray<z.ZodString>>;
148
+ interpreter: z.ZodOptional<z.ZodArray<z.ZodString>>;
149
+ }, z.core.$catchall<z.ZodArray<z.ZodString>>>>;
150
+ retry_on_empty: z.ZodDefault<z.ZodBoolean>;
151
+ }, z.core.$strip>;
152
+ export type FailoverConfig = z.infer<typeof FailoverConfigSchema>;
153
+ export declare const PluginConfigSchema: z.ZodObject<{
154
+ preset: z.ZodOptional<z.ZodString>;
155
+ setDefaultAgent: z.ZodOptional<z.ZodBoolean>;
156
+ scoringEngineVersion: z.ZodOptional<z.ZodEnum<{
157
+ v1: "v1";
158
+ "v2-shadow": "v2-shadow";
159
+ v2: "v2";
160
+ }>>;
161
+ balanceProviderUsage: z.ZodOptional<z.ZodBoolean>;
162
+ autoUpdate: z.ZodOptional<z.ZodBoolean>;
163
+ manualPlan: z.ZodOptional<z.ZodObject<{
164
+ orchestrator: z.ZodObject<{
165
+ primary: z.ZodString;
166
+ fallback1: z.ZodString;
167
+ fallback2: z.ZodString;
168
+ fallback3: z.ZodString;
169
+ }, z.core.$strip>;
170
+ oracle: z.ZodObject<{
171
+ primary: z.ZodString;
172
+ fallback1: z.ZodString;
173
+ fallback2: z.ZodString;
174
+ fallback3: z.ZodString;
175
+ }, z.core.$strip>;
176
+ designer: z.ZodObject<{
177
+ primary: z.ZodString;
178
+ fallback1: z.ZodString;
179
+ fallback2: z.ZodString;
180
+ fallback3: z.ZodString;
181
+ }, z.core.$strip>;
182
+ explorer: z.ZodObject<{
183
+ primary: z.ZodString;
184
+ fallback1: z.ZodString;
185
+ fallback2: z.ZodString;
186
+ fallback3: z.ZodString;
187
+ }, z.core.$strip>;
188
+ librarian: z.ZodObject<{
189
+ primary: z.ZodString;
190
+ fallback1: z.ZodString;
191
+ fallback2: z.ZodString;
192
+ fallback3: z.ZodString;
193
+ }, z.core.$strip>;
194
+ fixer: z.ZodObject<{
195
+ primary: z.ZodString;
196
+ fallback1: z.ZodString;
197
+ fallback2: z.ZodString;
198
+ fallback3: z.ZodString;
199
+ }, z.core.$strip>;
200
+ }, z.core.$strict>>;
201
+ presets: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodObject<{
202
+ model: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
203
+ id: z.ZodString;
204
+ variant: z.ZodOptional<z.ZodString>;
205
+ }, z.core.$strip>]>>]>>;
206
+ temperature: z.ZodOptional<z.ZodNumber>;
207
+ variant: z.ZodCatch<z.ZodOptional<z.ZodString>>;
208
+ options: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
209
+ displayName: z.ZodOptional<z.ZodString>;
210
+ skills: z.ZodOptional<z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodObject<{
211
+ 'always-load': z.ZodOptional<z.ZodArray<z.ZodString>>;
212
+ mandatory: z.ZodOptional<z.ZodArray<z.ZodString>>;
213
+ wildcard: z.ZodOptional<z.ZodBoolean>;
214
+ }, z.core.$strip>]>>;
215
+ mcps: z.ZodOptional<z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodObject<{
216
+ 'always-load': z.ZodOptional<z.ZodArray<z.ZodString>>;
217
+ mandatory: z.ZodOptional<z.ZodArray<z.ZodString>>;
218
+ wildcard: z.ZodOptional<z.ZodBoolean>;
219
+ }, z.core.$strip>]>>;
220
+ }, z.core.$strict>>>>;
221
+ agents: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
222
+ model: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
223
+ id: z.ZodString;
224
+ variant: z.ZodOptional<z.ZodString>;
225
+ }, z.core.$strip>]>>]>>;
226
+ temperature: z.ZodOptional<z.ZodNumber>;
227
+ variant: z.ZodCatch<z.ZodOptional<z.ZodString>>;
228
+ options: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
229
+ displayName: z.ZodOptional<z.ZodString>;
230
+ skills: z.ZodOptional<z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodObject<{
231
+ 'always-load': z.ZodOptional<z.ZodArray<z.ZodString>>;
232
+ mandatory: z.ZodOptional<z.ZodArray<z.ZodString>>;
233
+ wildcard: z.ZodOptional<z.ZodBoolean>;
234
+ }, z.core.$strip>]>>;
235
+ mcps: z.ZodOptional<z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodObject<{
236
+ 'always-load': z.ZodOptional<z.ZodArray<z.ZodString>>;
237
+ mandatory: z.ZodOptional<z.ZodArray<z.ZodString>>;
238
+ wildcard: z.ZodOptional<z.ZodBoolean>;
239
+ }, z.core.$strip>]>>;
240
+ }, z.core.$strict>>>;
241
+ websearch: z.ZodOptional<z.ZodObject<{
242
+ provider: z.ZodDefault<z.ZodEnum<{
243
+ exa: "exa";
244
+ tavily: "tavily";
245
+ }>>;
246
+ }, z.core.$strip>>;
247
+ sessionManager: z.ZodOptional<z.ZodObject<{
248
+ maxSessionsPerAgent: z.ZodDefault<z.ZodNumber>;
249
+ readContextMinLines: z.ZodDefault<z.ZodNumber>;
250
+ readContextMaxFiles: z.ZodDefault<z.ZodNumber>;
251
+ }, z.core.$strip>>;
252
+ todoContinuation: z.ZodOptional<z.ZodObject<{
253
+ maxContinuations: z.ZodDefault<z.ZodNumber>;
254
+ cooldownMs: z.ZodDefault<z.ZodNumber>;
255
+ autoEnable: z.ZodDefault<z.ZodBoolean>;
256
+ autoEnableThreshold: z.ZodDefault<z.ZodNumber>;
257
+ }, z.core.$strip>>;
258
+ contextPressure: z.ZodOptional<z.ZodObject<{
259
+ enabled: z.ZodDefault<z.ZodBoolean>;
260
+ warnThresholdPct: z.ZodDefault<z.ZodNumber>;
261
+ }, z.core.$strip>>;
262
+ fallback: z.ZodOptional<z.ZodObject<{
263
+ enabled: z.ZodDefault<z.ZodBoolean>;
264
+ timeoutMs: z.ZodDefault<z.ZodNumber>;
265
+ retryDelayMs: z.ZodDefault<z.ZodNumber>;
266
+ chains: z.ZodDefault<z.ZodObject<{
267
+ orchestrator: z.ZodOptional<z.ZodArray<z.ZodString>>;
268
+ oracle: z.ZodOptional<z.ZodArray<z.ZodString>>;
269
+ designer: z.ZodOptional<z.ZodArray<z.ZodString>>;
270
+ explorer: z.ZodOptional<z.ZodArray<z.ZodString>>;
271
+ librarian: z.ZodOptional<z.ZodArray<z.ZodString>>;
272
+ fixer: z.ZodOptional<z.ZodArray<z.ZodString>>;
273
+ steward: z.ZodOptional<z.ZodArray<z.ZodString>>;
274
+ interpreter: z.ZodOptional<z.ZodArray<z.ZodString>>;
275
+ }, z.core.$catchall<z.ZodArray<z.ZodString>>>>;
276
+ retry_on_empty: z.ZodDefault<z.ZodBoolean>;
277
+ }, z.core.$strip>>;
278
+ }, z.core.$strip>;
279
+ export type PluginConfig = z.infer<typeof PluginConfigSchema>;
280
+ export type { AgentName } from './constants';
281
+ export type SkillOrMcpConfig = z.infer<typeof SkillOrMcpConfigSchema>;
@@ -0,0 +1,10 @@
1
+ import type { AgentOverrideConfig, PluginConfig } from './schema';
2
+ /**
3
+ * Get agent override config by name, supporting backward-compatible aliases.
4
+ * Checks both the current name and any legacy alias names.
5
+ *
6
+ * @param config - The plugin configuration
7
+ * @param name - The current agent name
8
+ * @returns The agent-specific override configuration if found
9
+ */
10
+ export declare function getAgentOverride(config: PluginConfig | undefined, name: string): AgentOverrideConfig | undefined;