oh-my-opencode-slim 0.9.14 → 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 (74) hide show
  1. package/README.md +131 -56
  2. package/dist/agents/council.d.ts +7 -8
  3. package/dist/agents/orchestrator.d.ts +1 -0
  4. package/dist/background/background-manager.d.ts +20 -1
  5. package/dist/background/index.d.ts +1 -1
  6. package/dist/background/multiplexer-session-manager.d.ts +2 -0
  7. package/dist/cli/index.js +351 -13849
  8. package/dist/cli/types.d.ts +1 -2
  9. package/dist/config/constants.d.ts +3 -3
  10. package/dist/config/council-schema.d.ts +45 -69
  11. package/dist/config/index.d.ts +1 -1
  12. package/dist/config/schema.d.ts +52 -33
  13. package/dist/config/utils.d.ts +7 -0
  14. package/dist/council/council-manager.d.ts +6 -13
  15. package/dist/hooks/auto-update-checker/types.d.ts +1 -1
  16. package/dist/hooks/foreground-fallback/index.d.ts +1 -1
  17. package/dist/hooks/phase-reminder/index.d.ts +1 -1
  18. package/dist/hooks/todo-continuation/todo-hygiene.d.ts +0 -1
  19. package/dist/index.js +7339 -26210
  20. package/dist/interview/service.d.ts +1 -0
  21. package/dist/multiplexer/factory.d.ts +5 -1
  22. package/dist/multiplexer/index.d.ts +1 -0
  23. package/dist/multiplexer/session-manager.d.ts +46 -0
  24. package/dist/multiplexer/tmux/index.d.ts +3 -1
  25. package/dist/multiplexer/types.d.ts +3 -3
  26. package/dist/multiplexer/zellij/index.d.ts +1 -1
  27. package/dist/tools/ast-grep/index.d.ts +1 -1
  28. package/dist/tools/background.d.ts +1 -1
  29. package/dist/tools/council.d.ts +2 -1
  30. package/dist/tools/index.d.ts +0 -2
  31. package/dist/tools/lsp/types.d.ts +1 -1
  32. package/dist/utils/agent-variant.d.ts +15 -1
  33. package/dist/utils/subagent-depth.d.ts +35 -0
  34. package/dist/utils/tmux-debug-log.d.ts +2 -0
  35. package/oh-my-opencode-slim.schema.json +47 -50
  36. package/package.json +11 -10
  37. package/src/skills/{cartography → codemap}/README.md +11 -9
  38. package/src/skills/{cartography → codemap}/SKILL.md +21 -18
  39. package/src/skills/codemap/codemap.md +36 -0
  40. package/src/skills/codemap/scripts/codemap.mjs +483 -0
  41. package/src/skills/codemap/scripts/codemap.test.ts +129 -0
  42. package/src/skills/codemap.md +40 -0
  43. package/src/skills/simplify/README.md +19 -0
  44. package/src/skills/simplify/SKILL.md +138 -0
  45. package/src/skills/simplify/codemap.md +36 -0
  46. package/dist/background/tmux-session-manager.d.ts +0 -63
  47. package/dist/cli/chutes-selection.d.ts +0 -3
  48. package/dist/cli/dynamic-model-selection.d.ts +0 -14
  49. package/dist/cli/external-rankings.d.ts +0 -8
  50. package/dist/cli/model-selection.d.ts +0 -30
  51. package/dist/cli/opencode-models.d.ts +0 -18
  52. package/dist/cli/opencode-selection.d.ts +0 -3
  53. package/dist/cli/precedence-resolver.d.ts +0 -16
  54. package/dist/cli/scoring-v2/engine.d.ts +0 -4
  55. package/dist/cli/scoring-v2/features.d.ts +0 -3
  56. package/dist/cli/scoring-v2/index.d.ts +0 -4
  57. package/dist/cli/scoring-v2/types.d.ts +0 -17
  58. package/dist/cli/scoring-v2/weights.d.ts +0 -2
  59. package/dist/hooks/post-read-nudge/index.d.ts +0 -18
  60. package/dist/interview/store.d.ts +0 -9
  61. package/dist/tools/grep/cli.d.ts +0 -3
  62. package/dist/tools/grep/constants.d.ts +0 -18
  63. package/dist/tools/grep/downloader.d.ts +0 -3
  64. package/dist/tools/grep/index.d.ts +0 -5
  65. package/dist/tools/grep/tools.d.ts +0 -2
  66. package/dist/tools/grep/types.d.ts +0 -35
  67. package/dist/tools/grep/utils.d.ts +0 -2
  68. package/dist/tools/quota/api.d.ts +0 -5
  69. package/dist/tools/quota/command.d.ts +0 -1
  70. package/dist/tools/quota/index.d.ts +0 -21
  71. package/dist/tools/quota/types.d.ts +0 -41
  72. package/dist/utils/tmux.d.ts +0 -32
  73. package/src/skills/cartography/scripts/cartographer.py +0 -456
  74. package/src/skills/cartography/scripts/test_cartographer.py +0 -87
@@ -1,13 +1,12 @@
1
1
  export type BooleanArg = 'yes' | 'no';
2
2
  export interface InstallArgs {
3
3
  tui: boolean;
4
- tmux?: BooleanArg;
5
4
  skills?: BooleanArg;
6
5
  dryRun?: boolean;
7
6
  reset?: boolean;
8
7
  }
9
8
  export interface OpenCodeConfig {
10
- plugin?: string[];
9
+ plugin?: unknown[];
11
10
  provider?: Record<string, unknown>;
12
11
  agent?: Record<string, unknown>;
13
12
  [key: string]: unknown;
@@ -1,7 +1,7 @@
1
1
  export declare const AGENT_ALIASES: Record<string, string>;
2
- export declare const SUBAGENT_NAMES: readonly ["explorer", "librarian", "oracle", "designer", "fixer", "observer", "council", "councillor", "council-master"];
2
+ export declare const SUBAGENT_NAMES: readonly ["explorer", "librarian", "oracle", "designer", "fixer", "observer", "council", "councillor"];
3
3
  export declare const ORCHESTRATOR_NAME: "orchestrator";
4
- export declare const ALL_AGENT_NAMES: readonly ["orchestrator", "explorer", "librarian", "oracle", "designer", "fixer", "observer", "council", "councillor", "council-master"];
4
+ export declare const ALL_AGENT_NAMES: readonly ["orchestrator", "explorer", "librarian", "oracle", "designer", "fixer", "observer", "council", "councillor"];
5
5
  export type AgentName = (typeof ALL_AGENT_NAMES)[number];
6
6
  export declare const ORCHESTRATABLE_AGENTS: readonly ["explorer", "librarian", "oracle", "designer", "fixer", "observer", "council"];
7
7
  /** Agents that cannot be disabled even if listed in disabled_agents config. */
@@ -20,7 +20,7 @@ export declare const DEFAULT_TIMEOUT_MS: number;
20
20
  export declare const MAX_POLL_TIME_MS: number;
21
21
  export declare const FALLBACK_FAILOVER_TIMEOUT_MS = 15000;
22
22
  export declare const DEFAULT_MAX_SUBAGENT_DEPTH = 3;
23
- export declare const PHASE_REMINDER_TEXT = "Recall Workflow Rules:\nUnderstand \u2192 build the best path (delegated based on Agent rules, split and parallelized as much as possible) \u2192 execute \u2192 verify.\nIf delegating, launch the specialist in the same turn you mention it.";
23
+ export declare const PHASE_REMINDER_TEXT = "!IMPORTANT! Recall the workflow rules:\nUnderstand \u2192 choose the best parallelized path based on your agents delegation rules \u2192 don't prefer solo \u2192 execute \u2192 verify.\nIf delegating, launch the specialist in the same turn you mention it !END!";
24
24
  export declare const TMUX_SPAWN_DELAY_MS = 500;
25
25
  export declare const COUNCILLOR_STAGGER_MS = 250;
26
26
  export declare const STABLE_POLLS_THRESHOLD = 3;
@@ -14,53 +14,18 @@ export declare const CouncillorConfigSchema: z.ZodObject<{
14
14
  }, z.core.$strip>;
15
15
  export type CouncillorConfig = z.infer<typeof CouncillorConfigSchema>;
16
16
  /**
17
- * Per-preset master override. All fields are optional — any field
18
- * provided here overrides the global `council.master` for this preset.
19
- * Fields not provided fall back to the global master config.
20
- */
21
- export declare const PresetMasterOverrideSchema: z.ZodObject<{
22
- model: z.ZodOptional<z.ZodString>;
23
- variant: z.ZodOptional<z.ZodString>;
24
- prompt: z.ZodOptional<z.ZodString>;
25
- }, z.core.$strip>;
26
- export type PresetMasterOverride = z.infer<typeof PresetMasterOverrideSchema>;
27
- /**
28
- * A named preset grouping several councillors with an optional master override.
29
- *
30
- * The reserved key `"master"` provides per-preset overrides for the council
31
- * master (model, variant, prompt). All other keys are treated as councillor
32
- * names mapping to councillor configs.
17
+ * A named preset grouping several councillors.
33
18
  *
34
- * After parsing, the preset resolves to:
35
- * `{ councillors: Record<string, CouncillorConfig>, master?: PresetMasterOverride }`
19
+ * All keys are treated as councillor names mapping to councillor configs.
20
+ * The reserved key `"master"` is silently ignored (legacy from when
21
+ * council-master was a separate agent).
36
22
  */
37
- export declare const CouncilPresetSchema: z.ZodPipe<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodUnknown>>, z.ZodTransform<{
38
- councillors: Record<string, {
39
- model: string;
40
- variant?: string | undefined;
41
- prompt?: string | undefined;
42
- }>;
43
- master: {
44
- model?: string | undefined;
45
- variant?: string | undefined;
46
- prompt?: string | undefined;
47
- } | undefined;
48
- }, Record<string, Record<string, unknown>>>>;
23
+ export declare const CouncilPresetSchema: z.ZodPipe<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodUnknown>>, z.ZodTransform<Record<string, {
24
+ model: string;
25
+ variant?: string | undefined;
26
+ prompt?: string | undefined;
27
+ }>, Record<string, Record<string, unknown>>>>;
49
28
  export type CouncilPreset = z.infer<typeof CouncilPresetSchema>;
50
- /**
51
- * Council Master configuration.
52
- * The master receives all councillor responses and produces the final synthesis.
53
- *
54
- * Note: The master runs as a council-master agent session with zero
55
- * permissions (deny all). Synthesis is a text-in/text-out operation —
56
- * no tools or MCPs are needed.
57
- */
58
- export declare const CouncilMasterConfigSchema: z.ZodObject<{
59
- model: z.ZodString;
60
- variant: z.ZodOptional<z.ZodString>;
61
- prompt: z.ZodOptional<z.ZodString>;
62
- }, z.core.$strip>;
63
- export type CouncilMasterConfig = z.infer<typeof CouncilMasterConfigSchema>;
64
29
  /**
65
30
  * Execution mode for councillors.
66
31
  * - parallel: Run all councillors concurrently (default, fastest for multi-model systems)
@@ -77,7 +42,6 @@ export declare const CouncillorExecutionModeSchema: z.ZodDefault<z.ZodEnum<{
77
42
  * ```jsonc
78
43
  * {
79
44
  * "council": {
80
- * "master": { "model": "anthropic/claude-opus-4-6" },
81
45
  * "presets": {
82
46
  * "default": {
83
47
  * "alpha": { "model": "openai/gpt-5.4-mini" },
@@ -85,41 +49,53 @@ export declare const CouncillorExecutionModeSchema: z.ZodDefault<z.ZodEnum<{
85
49
  * "gamma": { "model": "google/gemini-3-pro" }
86
50
  * }
87
51
  * },
88
- * "master_timeout": 300000,
89
- * "councillors_timeout": 180000,
52
+ * "timeout": 180000,
90
53
  * "councillor_execution_mode": "serial"
91
54
  * }
92
55
  * }
93
56
  * ```
94
57
  */
95
- export declare const CouncilConfigSchema: z.ZodObject<{
96
- master: z.ZodObject<{
97
- model: z.ZodString;
98
- variant: z.ZodOptional<z.ZodString>;
99
- prompt: z.ZodOptional<z.ZodString>;
100
- }, z.core.$strip>;
101
- presets: z.ZodRecord<z.ZodString, z.ZodPipe<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodUnknown>>, z.ZodTransform<{
102
- councillors: Record<string, {
103
- model: string;
104
- variant?: string | undefined;
105
- prompt?: string | undefined;
106
- }>;
107
- master: {
108
- model?: string | undefined;
109
- variant?: string | undefined;
110
- prompt?: string | undefined;
111
- } | undefined;
112
- }, Record<string, Record<string, unknown>>>>>;
113
- master_timeout: z.ZodDefault<z.ZodNumber>;
114
- councillors_timeout: z.ZodDefault<z.ZodNumber>;
58
+ export declare const CouncilConfigSchema: z.ZodPipe<z.ZodObject<{
59
+ presets: z.ZodRecord<z.ZodString, z.ZodPipe<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodUnknown>>, z.ZodTransform<Record<string, {
60
+ model: string;
61
+ variant?: string | undefined;
62
+ prompt?: string | undefined;
63
+ }>, Record<string, Record<string, unknown>>>>>;
64
+ timeout: z.ZodDefault<z.ZodNumber>;
115
65
  default_preset: z.ZodDefault<z.ZodString>;
116
- master_fallback: z.ZodPipe<z.ZodOptional<z.ZodArray<z.ZodString>>, z.ZodTransform<string[] | undefined, string[] | undefined>>;
117
66
  councillor_execution_mode: z.ZodDefault<z.ZodEnum<{
118
67
  parallel: "parallel";
119
68
  serial: "serial";
120
69
  }>>;
121
70
  councillor_retries: z.ZodDefault<z.ZodNumber>;
122
- }, z.core.$strip>;
71
+ master: z.ZodOptional<z.ZodUnknown>;
72
+ master_timeout: z.ZodOptional<z.ZodUnknown>;
73
+ master_fallback: z.ZodOptional<z.ZodUnknown>;
74
+ }, z.core.$strip>, z.ZodTransform<{
75
+ presets: Record<string, Record<string, {
76
+ model: string;
77
+ variant?: string | undefined;
78
+ prompt?: string | undefined;
79
+ }>>;
80
+ timeout: number;
81
+ default_preset: string;
82
+ councillor_execution_mode: "parallel" | "serial";
83
+ councillor_retries: number;
84
+ _deprecated: string[] | undefined;
85
+ }, {
86
+ presets: Record<string, Record<string, {
87
+ model: string;
88
+ variant?: string | undefined;
89
+ prompt?: string | undefined;
90
+ }>>;
91
+ timeout: number;
92
+ default_preset: string;
93
+ councillor_execution_mode: "parallel" | "serial";
94
+ councillor_retries: number;
95
+ master?: unknown;
96
+ master_timeout?: unknown;
97
+ master_fallback?: unknown;
98
+ }>>;
123
99
  export type CouncilConfig = z.infer<typeof CouncilConfigSchema>;
124
100
  export type CouncillorExecutionMode = z.infer<typeof CouncillorExecutionModeSchema>;
125
101
  /**
@@ -2,4 +2,4 @@ export * from './constants';
2
2
  export * from './council-schema';
3
3
  export { loadAgentPrompt, loadPluginConfig } from './loader';
4
4
  export * from './schema';
5
- export { getAgentOverride } from './utils';
5
+ export { getAgentOverride, getCustomAgentNames } from './utils';
@@ -59,8 +59,11 @@ export declare const AgentOverrideConfigSchema: z.ZodObject<{
59
59
  variant: z.ZodCatch<z.ZodOptional<z.ZodString>>;
60
60
  skills: z.ZodOptional<z.ZodArray<z.ZodString>>;
61
61
  mcps: z.ZodOptional<z.ZodArray<z.ZodString>>;
62
+ prompt: z.ZodOptional<z.ZodString>;
63
+ orchestratorPrompt: z.ZodOptional<z.ZodString>;
62
64
  options: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
63
- }, z.core.$strip>;
65
+ displayName: z.ZodOptional<z.ZodString>;
66
+ }, z.core.$strict>;
64
67
  export declare const MultiplexerTypeSchema: z.ZodEnum<{
65
68
  auto: "auto";
66
69
  tmux: "tmux";
@@ -128,8 +131,11 @@ export declare const PresetSchema: z.ZodRecord<z.ZodString, z.ZodObject<{
128
131
  variant: z.ZodCatch<z.ZodOptional<z.ZodString>>;
129
132
  skills: z.ZodOptional<z.ZodArray<z.ZodString>>;
130
133
  mcps: z.ZodOptional<z.ZodArray<z.ZodString>>;
134
+ prompt: z.ZodOptional<z.ZodString>;
135
+ orchestratorPrompt: z.ZodOptional<z.ZodString>;
131
136
  options: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
132
- }, z.core.$strip>>;
137
+ displayName: z.ZodOptional<z.ZodString>;
138
+ }, z.core.$strict>>;
133
139
  export type Preset = z.infer<typeof PresetSchema>;
134
140
  export declare const WebsearchConfigSchema: z.ZodObject<{
135
141
  provider: z.ZodDefault<z.ZodEnum<{
@@ -144,10 +150,6 @@ export declare const McpNameSchema: z.ZodEnum<{
144
150
  grep_app: "grep_app";
145
151
  }>;
146
152
  export type McpName = z.infer<typeof McpNameSchema>;
147
- export declare const BackgroundTaskConfigSchema: z.ZodObject<{
148
- maxConcurrentStarts: z.ZodDefault<z.ZodNumber>;
149
- }, z.core.$strip>;
150
- export type BackgroundTaskConfig = z.infer<typeof BackgroundTaskConfigSchema>;
151
153
  export declare const InterviewConfigSchema: z.ZodObject<{
152
154
  maxQuestions: z.ZodDefault<z.ZodNumber>;
153
155
  outputFolder: z.ZodDefault<z.ZodString>;
@@ -187,6 +189,7 @@ export declare const PluginConfigSchema: z.ZodObject<{
187
189
  v2: "v2";
188
190
  }>>;
189
191
  balanceProviderUsage: z.ZodOptional<z.ZodBoolean>;
192
+ showStartupToast: z.ZodOptional<z.ZodBoolean>;
190
193
  manualPlan: z.ZodOptional<z.ZodObject<{
191
194
  orchestrator: z.ZodObject<{
192
195
  primary: z.ZodString;
@@ -234,8 +237,11 @@ export declare const PluginConfigSchema: z.ZodObject<{
234
237
  variant: z.ZodCatch<z.ZodOptional<z.ZodString>>;
235
238
  skills: z.ZodOptional<z.ZodArray<z.ZodString>>;
236
239
  mcps: z.ZodOptional<z.ZodArray<z.ZodString>>;
240
+ prompt: z.ZodOptional<z.ZodString>;
241
+ orchestratorPrompt: z.ZodOptional<z.ZodString>;
237
242
  options: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
238
- }, z.core.$strip>>>>;
243
+ displayName: z.ZodOptional<z.ZodString>;
244
+ }, z.core.$strict>>>>;
239
245
  agents: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
240
246
  model: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
241
247
  id: z.ZodString;
@@ -245,8 +251,11 @@ export declare const PluginConfigSchema: z.ZodObject<{
245
251
  variant: z.ZodCatch<z.ZodOptional<z.ZodString>>;
246
252
  skills: z.ZodOptional<z.ZodArray<z.ZodString>>;
247
253
  mcps: z.ZodOptional<z.ZodArray<z.ZodString>>;
254
+ prompt: z.ZodOptional<z.ZodString>;
255
+ orchestratorPrompt: z.ZodOptional<z.ZodString>;
248
256
  options: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
249
- }, z.core.$strip>>>;
257
+ displayName: z.ZodOptional<z.ZodString>;
258
+ }, z.core.$strict>>>;
250
259
  disabled_agents: z.ZodOptional<z.ZodArray<z.ZodString>>;
251
260
  disabled_mcps: z.ZodOptional<z.ZodArray<z.ZodString>>;
252
261
  multiplexer: z.ZodOptional<z.ZodObject<{
@@ -282,9 +291,6 @@ export declare const PluginConfigSchema: z.ZodObject<{
282
291
  tavily: "tavily";
283
292
  }>>;
284
293
  }, z.core.$strip>>;
285
- background: z.ZodOptional<z.ZodObject<{
286
- maxConcurrentStarts: z.ZodDefault<z.ZodNumber>;
287
- }, z.core.$strip>>;
288
294
  interview: z.ZodOptional<z.ZodObject<{
289
295
  maxQuestions: z.ZodDefault<z.ZodNumber>;
290
296
  outputFolder: z.ZodDefault<z.ZodString>;
@@ -312,34 +318,47 @@ export declare const PluginConfigSchema: z.ZodObject<{
312
318
  }, z.core.$catchall<z.ZodArray<z.ZodString>>>>;
313
319
  retry_on_empty: z.ZodDefault<z.ZodBoolean>;
314
320
  }, z.core.$strip>>;
315
- council: z.ZodOptional<z.ZodObject<{
316
- master: z.ZodObject<{
317
- model: z.ZodString;
318
- variant: z.ZodOptional<z.ZodString>;
319
- prompt: z.ZodOptional<z.ZodString>;
320
- }, z.core.$strip>;
321
- presets: z.ZodRecord<z.ZodString, z.ZodPipe<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodUnknown>>, z.ZodTransform<{
322
- councillors: Record<string, {
323
- model: string;
324
- variant?: string | undefined;
325
- prompt?: string | undefined;
326
- }>;
327
- master: {
328
- model?: string | undefined;
329
- variant?: string | undefined;
330
- prompt?: string | undefined;
331
- } | undefined;
332
- }, Record<string, Record<string, unknown>>>>>;
333
- master_timeout: z.ZodDefault<z.ZodNumber>;
334
- councillors_timeout: z.ZodDefault<z.ZodNumber>;
321
+ council: z.ZodOptional<z.ZodPipe<z.ZodObject<{
322
+ presets: z.ZodRecord<z.ZodString, z.ZodPipe<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodUnknown>>, z.ZodTransform<Record<string, {
323
+ model: string;
324
+ variant?: string | undefined;
325
+ prompt?: string | undefined;
326
+ }>, Record<string, Record<string, unknown>>>>>;
327
+ timeout: z.ZodDefault<z.ZodNumber>;
335
328
  default_preset: z.ZodDefault<z.ZodString>;
336
- master_fallback: z.ZodPipe<z.ZodOptional<z.ZodArray<z.ZodString>>, z.ZodTransform<string[] | undefined, string[] | undefined>>;
337
329
  councillor_execution_mode: z.ZodDefault<z.ZodEnum<{
338
330
  parallel: "parallel";
339
331
  serial: "serial";
340
332
  }>>;
341
333
  councillor_retries: z.ZodDefault<z.ZodNumber>;
342
- }, z.core.$strip>>;
334
+ master: z.ZodOptional<z.ZodUnknown>;
335
+ master_timeout: z.ZodOptional<z.ZodUnknown>;
336
+ master_fallback: z.ZodOptional<z.ZodUnknown>;
337
+ }, z.core.$strip>, z.ZodTransform<{
338
+ presets: Record<string, Record<string, {
339
+ model: string;
340
+ variant?: string | undefined;
341
+ prompt?: string | undefined;
342
+ }>>;
343
+ timeout: number;
344
+ default_preset: string;
345
+ councillor_execution_mode: "parallel" | "serial";
346
+ councillor_retries: number;
347
+ _deprecated: string[] | undefined;
348
+ }, {
349
+ presets: Record<string, Record<string, {
350
+ model: string;
351
+ variant?: string | undefined;
352
+ prompt?: string | undefined;
353
+ }>>;
354
+ timeout: number;
355
+ default_preset: string;
356
+ councillor_execution_mode: "parallel" | "serial";
357
+ councillor_retries: number;
358
+ master?: unknown;
359
+ master_timeout?: unknown;
360
+ master_fallback?: unknown;
361
+ }>>>;
343
362
  }, z.core.$strip>;
344
363
  export type PluginConfig = z.infer<typeof PluginConfigSchema>;
345
364
  export type { AgentName } from './constants';
@@ -8,3 +8,10 @@ import type { AgentOverrideConfig, PluginConfig } from './schema';
8
8
  * @returns The agent-specific override configuration if found
9
9
  */
10
10
  export declare function getAgentOverride(config: PluginConfig | undefined, name: string): AgentOverrideConfig | undefined;
11
+ /**
12
+ * Get custom agent names declared in config.agents.
13
+ *
14
+ * Custom agents are unknown keys that are neither built-in agent names nor
15
+ * legacy aliases.
16
+ */
17
+ export declare function getCustomAgentNames(config: PluginConfig | undefined): string[];
@@ -2,27 +2,29 @@
2
2
  * Council Manager
3
3
  *
4
4
  * Orchestrates multi-LLM council sessions: launches councillors in
5
- * parallel, collects results, then runs the council master for synthesis.
5
+ * parallel and collects their results for the council agent to synthesize.
6
6
  */
7
7
  import type { PluginInput } from '@opencode-ai/plugin';
8
- import type { SubagentDepthTracker } from '../background/subagent-depth';
9
8
  import type { PluginConfig } from '../config';
10
9
  import type { CouncilResult } from '../config/council-schema';
10
+ import type { SubagentDepthTracker } from '../utils/subagent-depth';
11
11
  export declare class CouncilManager {
12
12
  private client;
13
13
  private directory;
14
14
  private config?;
15
15
  private depthTracker?;
16
16
  private tmuxEnabled;
17
+ private deprecatedFields?;
17
18
  constructor(ctx: PluginInput, config?: PluginConfig, depthTracker?: SubagentDepthTracker, tmuxEnabled?: boolean);
19
+ /** Return deprecated config fields detected during parsing (for tool warnings). */
20
+ getDeprecatedFields(): string[] | undefined;
18
21
  /**
19
22
  * Run a full council session.
20
23
  *
21
24
  * 1. Look up the preset
22
25
  * 2. Launch all councillors in parallel
23
26
  * 3. Collect results (respecting timeout)
24
- * 4. Run master synthesis
25
- * 5. Return combined result
27
+ * 4. Return formatted councillor results for synthesis
26
28
  */
27
29
  runCouncil(prompt: string, presetName: string | undefined, parentSessionId: string): Promise<CouncilResult>;
28
30
  /**
@@ -32,7 +34,6 @@ export declare class CouncilManager {
32
34
  private sendStartNotification;
33
35
  /**
34
36
  * Run a single agent session: create → register → prompt → extract → cleanup.
35
- * Both councillors and the master follow this identical lifecycle.
36
37
  */
37
38
  private runAgentSession;
38
39
  private runCouncillors;
@@ -42,12 +43,4 @@ export declare class CouncilManager {
42
43
  * and other failures are returned immediately.
43
44
  */
44
45
  private runCouncillorWithRetry;
45
- /**
46
- * Run a single master model with retry logic for empty responses.
47
- * Only retries on "Empty response from provider" — timeouts and
48
- * other failures throw immediately so runMaster can try the next
49
- * fallback model.
50
- */
51
- private runMasterModelWithRetry;
52
- private runMaster;
53
46
  }
@@ -3,7 +3,7 @@ export interface NpmDistTags {
3
3
  [key: string]: string;
4
4
  }
5
5
  export interface OpencodeConfig {
6
- plugin?: string[];
6
+ plugin?: unknown[];
7
7
  [key: string]: unknown;
8
8
  }
9
9
  export interface PackageJson {
@@ -9,7 +9,7 @@
9
9
  * with the new model — promptAsync returns immediately so we never
10
10
  * block the event handler waiting for a full LLM response.
11
11
  *
12
- * This mirrors the BackgroundTaskManager's fallback loop but operates
12
+ * This mirrors the same fallback loop used for delegated sessions, but operates
13
13
  * reactively through the event system instead of wrapping prompt() in a
14
14
  * try/catch, which is not possible for interactive (foreground) sessions.
15
15
  */
@@ -1,4 +1,4 @@
1
- export declare const PHASE_REMINDER = "<reminder>Recall Workflow Rules:\nUnderstand \u2192 build the best path (delegated based on Agent rules, split and parallelized as much as possible) \u2192 execute \u2192 verify.\nIf delegating, launch the specialist in the same turn you mention it.</reminder>";
1
+ export declare const PHASE_REMINDER = "<reminder>!IMPORTANT! Recall the workflow rules:\nUnderstand \u2192 choose the best parallelized path based on your agents delegation rules \u2192 don't prefer solo \u2192 execute \u2192 verify.\nIf delegating, launch the specialist in the same turn you mention it !END!</reminder>";
2
2
  interface MessageInfo {
3
3
  role: string;
4
4
  agent?: string;
@@ -1,6 +1,5 @@
1
1
  export declare const TODO_HYGIENE_REMINDER = "If the active task changed or finished, update the todo list to match the current work state.";
2
2
  export declare const TODO_FINAL_ACTIVE_REMINDER = "If you are finishing now, do not leave the active todo in_progress. Mark it completed, or move unfinished work back to pending.";
3
- export declare const TODO_DELEGATION_RESUME_REMINDER = "A delegated result just returned. Reconcile the todo list before continuing or delegating again.";
4
3
  interface ToolInput {
5
4
  tool: string;
6
5
  sessionID?: string;