oh-my-opencode-serverlocal 0.1.2 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli/index.js CHANGED
@@ -154,7 +154,7 @@ var init_zip_extractor = __esm(() => {
154
154
 
155
155
  // src/cli/doctor.ts
156
156
  import * as fs2 from "node:fs";
157
- import { z as z3 } from "zod";
157
+ import { z as z2 } from "zod";
158
158
 
159
159
  // src/config/loader.ts
160
160
  import * as fs from "node:fs";
@@ -285,12 +285,10 @@ var SUBAGENT_NAMES = [
285
285
  "oracle",
286
286
  "designer",
287
287
  "fixer",
288
- "observer",
289
- "council",
290
- "councillor"
288
+ "observer"
291
289
  ];
292
290
  var ALL_AGENT_NAMES = ["orchestrator", ...SUBAGENT_NAMES];
293
- var PROTECTED_AGENTS = new Set(["orchestrator", "councillor"]);
291
+ var PROTECTED_AGENTS = new Set(["orchestrator"]);
294
292
  var MAX_POLL_TIME_MS = 5 * 60 * 1000;
295
293
  var PHASE_REMINDER_TEXT = `!IMPORTANT! Scheduler workflow: First choose the lightest workflow that fits the work. If direct execution is justified, complete it and verify proportionately. Otherwise: plan lanes/dependencies → dispatch background specialists → track task IDs → wait for hook-driven completion → reconcile terminal results → verify. Do not poll running jobs, consume running-job output, or advance dependent work. !END!`;
296
294
  function formatSystemReminder(text) {
@@ -299,96 +297,10 @@ ${text}
299
297
  </system-reminder>`;
300
298
  }
301
299
  var PHASE_REMINDER = formatSystemReminder(PHASE_REMINDER_TEXT);
302
- // src/config/council-schema.ts
303
- import { z } from "zod";
304
-
305
- // src/utils/councillor-models.ts
306
- function normalizeCouncillorModels(model, fallbackVariant) {
307
- const raw = Array.isArray(model) ? model : [model];
308
- return raw.map((entry) => typeof entry === "string" ? { id: entry, variant: fallbackVariant } : { id: entry.id, variant: entry.variant ?? fallbackVariant });
309
- }
310
-
311
- // src/config/council-schema.ts
312
- var ModelIdSchema = z.string().regex(/^[^/\s]+\/[^\s]+$/, 'Expected provider/model format (e.g. "openai/gpt-5.6-luna")');
313
- var CouncillorModelEntrySchema = z.object({
314
- id: ModelIdSchema,
315
- variant: z.string().optional()
316
- });
317
- var CouncillorModelSchema = z.union([
318
- ModelIdSchema,
319
- z.array(z.union([ModelIdSchema, CouncillorModelEntrySchema])).min(1)
320
- ]).describe('Model ID in provider/model format (e.g. "openai/gpt-5.6-luna"), or an ' + "ordered fallback chain (array of model IDs or { id, variant } entries) " + "tried in order until one responds.");
321
- var CouncillorConfigSchema = z.object({
322
- model: CouncillorModelSchema,
323
- variant: z.string().optional(),
324
- prompt: z.string().optional().describe("Optional role/guidance injected into the councillor user prompt")
325
- }).transform((c) => {
326
- const models = normalizeCouncillorModels(c.model, c.variant);
327
- return {
328
- model: models[0].id,
329
- variant: c.variant,
330
- prompt: c.prompt,
331
- models
332
- };
333
- });
334
- var CouncilPresetSchema = z.record(z.string(), z.record(z.string(), z.unknown())).transform((entries, ctx) => {
335
- const councillors = {};
336
- for (const [key, raw] of Object.entries(entries)) {
337
- if (key === "master")
338
- continue;
339
- if (key === "councillors" && typeof raw === "object" && raw !== null) {
340
- for (const [innerKey, innerRaw] of Object.entries(raw)) {
341
- const innerParsed = CouncillorConfigSchema.safeParse(innerRaw);
342
- if (!innerParsed.success) {
343
- ctx.addIssue({
344
- code: z.ZodIssueCode.custom,
345
- message: `Invalid councillor "${innerKey}" (nested under legacy "councillors" key): ${innerParsed.error.issues.map((i) => i.message).join(", ")}`
346
- });
347
- return z.NEVER;
348
- }
349
- councillors[innerKey] = innerParsed.data;
350
- }
351
- continue;
352
- }
353
- const parsed = CouncillorConfigSchema.safeParse(raw);
354
- if (!parsed.success) {
355
- ctx.addIssue({
356
- code: z.ZodIssueCode.custom,
357
- message: `Invalid councillor "${key}": ${parsed.error.issues.map((i) => i.message).join(", ")}`
358
- });
359
- return z.NEVER;
360
- }
361
- councillors[key] = parsed.data;
362
- }
363
- return councillors;
364
- });
365
- var CouncillorExecutionModeSchema = z.enum(["parallel", "serial"]).default("parallel").describe('Execution mode for councillors. Use "serial" for single-model systems to avoid conflicts. ' + 'Use "parallel" for multi-model systems for faster execution.');
366
- var CouncilConfigSchema = z.object({
367
- presets: z.record(z.string(), CouncilPresetSchema),
368
- timeout: z.number().min(0).default(180000),
369
- default_preset: z.string().default("default"),
370
- councillor_execution_mode: CouncillorExecutionModeSchema.describe('Execution mode for councillors. "serial" runs them one at a time (required for single-model systems). "parallel" runs them concurrently (default, faster for multi-model systems).'),
371
- councillor_retries: z.number().int().min(0).max(5).default(3).describe("Number of retry attempts for councillors that return empty responses " + "(e.g. due to provider rate limiting). Default: 3 retries."),
372
- master: z.unknown().optional().describe("DEPRECATED - ignored. Council agent synthesizes directly.")
373
- }).transform((data) => {
374
- const deprecated = [];
375
- if (data.master !== undefined)
376
- deprecated.push("master");
377
- const legacyMasterModel = typeof data.master === "object" && data.master !== null && "model" in data.master && typeof data.master.model === "string" ? data.master.model : undefined;
378
- return {
379
- presets: data.presets,
380
- timeout: data.timeout,
381
- default_preset: data.default_preset,
382
- councillor_execution_mode: data.councillor_execution_mode,
383
- councillor_retries: data.councillor_retries,
384
- _deprecated: deprecated.length > 0 ? deprecated : undefined,
385
- _legacyMasterModel: legacyMasterModel
386
- };
387
- });
388
300
  // src/config/schema.ts
389
- import { z as z2 } from "zod";
390
- var ProviderModelIdSchema = z2.string().regex(/^[^/\s]+\/[^\s]+$/, "Expected provider/model format (provider/.../model)");
391
- var ManualAgentPlanSchema = z2.object({
301
+ import { z } from "zod";
302
+ var ProviderModelIdSchema = z.string().regex(/^[^/\s]+\/[^\s]+$/, "Expected provider/model format (provider/.../model)");
303
+ var ManualAgentPlanSchema = z.object({
392
304
  primary: ProviderModelIdSchema,
393
305
  fallback1: ProviderModelIdSchema,
394
306
  fallback2: ProviderModelIdSchema,
@@ -402,12 +314,12 @@ var ManualAgentPlanSchema = z2.object({
402
314
  ]);
403
315
  if (unique.size !== 4) {
404
316
  ctx.addIssue({
405
- code: z2.ZodIssueCode.custom,
317
+ code: z.ZodIssueCode.custom,
406
318
  message: "primary and fallbacks must be unique per agent"
407
319
  });
408
320
  }
409
321
  });
410
- var ManualPlanSchema = z2.object({
322
+ var ManualPlanSchema = z.object({
411
323
  orchestrator: ManualAgentPlanSchema,
412
324
  oracle: ManualAgentPlanSchema,
413
325
  designer: ManualAgentPlanSchema,
@@ -415,12 +327,12 @@ var ManualPlanSchema = z2.object({
415
327
  librarian: ManualAgentPlanSchema,
416
328
  fixer: ManualAgentPlanSchema
417
329
  }).strict();
418
- var PermissionActionSchema = z2.enum(["ask", "allow", "deny"]);
419
- var PermissionRuleSchema = z2.union([
330
+ var PermissionActionSchema = z.enum(["ask", "allow", "deny"]);
331
+ var PermissionRuleSchema = z.union([
420
332
  PermissionActionSchema,
421
- z2.record(z2.string(), PermissionActionSchema)
333
+ z.record(z.string(), PermissionActionSchema)
422
334
  ]);
423
- var PermissionObjectSchema = z2.object({
335
+ var PermissionObjectSchema = z.object({
424
336
  read: PermissionRuleSchema.optional(),
425
337
  edit: PermissionRuleSchema.optional(),
426
338
  glob: PermissionRuleSchema.optional(),
@@ -438,32 +350,32 @@ var PermissionObjectSchema = z2.object({
438
350
  codesearch: PermissionActionSchema.optional(),
439
351
  doom_loop: PermissionActionSchema.optional()
440
352
  }).catchall(PermissionRuleSchema);
441
- var PermissionConfigSchema = z2.union([
353
+ var PermissionConfigSchema = z.union([
442
354
  PermissionActionSchema,
443
355
  PermissionObjectSchema
444
356
  ]);
445
- var AgentOverrideConfigSchema = z2.object({
446
- model: z2.union([
447
- z2.string(),
448
- z2.array(z2.union([
449
- z2.string(),
450
- z2.object({
451
- id: z2.string(),
452
- variant: z2.string().optional()
357
+ var AgentOverrideConfigSchema = z.object({
358
+ model: z.union([
359
+ z.string(),
360
+ z.array(z.union([
361
+ z.string(),
362
+ z.object({
363
+ id: z.string(),
364
+ variant: z.string().optional()
453
365
  })
454
366
  ])).min(1)
455
367
  ]).optional(),
456
- temperature: z2.number().min(0).max(2).optional(),
457
- variant: z2.string().optional().catch(undefined),
458
- skills: z2.array(z2.string()).optional(),
459
- mcps: z2.array(z2.string()).optional(),
460
- prompt: z2.string().min(1).optional(),
461
- orchestratorPrompt: z2.string().min(1).optional(),
462
- options: z2.record(z2.string(), z2.unknown()).optional(),
463
- displayName: z2.string().min(1).optional(),
368
+ temperature: z.number().min(0).max(2).optional(),
369
+ variant: z.string().optional().catch(undefined),
370
+ skills: z.array(z.string()).optional(),
371
+ mcps: z.array(z.string()).optional(),
372
+ prompt: z.string().min(1).optional(),
373
+ orchestratorPrompt: z.string().min(1).optional(),
374
+ options: z.record(z.string(), z.unknown()).optional(),
375
+ displayName: z.string().min(1).optional(),
464
376
  permission: PermissionConfigSchema.optional()
465
377
  }).strict();
466
- var MultiplexerTypeSchema = z2.enum([
378
+ var MultiplexerTypeSchema = z.enum([
467
379
  "auto",
468
380
  "tmux",
469
381
  "zellij",
@@ -471,107 +383,106 @@ var MultiplexerTypeSchema = z2.enum([
471
383
  "cmux",
472
384
  "none"
473
385
  ]);
474
- var MultiplexerLayoutSchema = z2.enum([
386
+ var MultiplexerLayoutSchema = z.enum([
475
387
  "main-horizontal",
476
388
  "main-vertical",
477
389
  "tiled",
478
390
  "even-horizontal",
479
391
  "even-vertical"
480
392
  ]);
481
- var ZellijPaneModeSchema = z2.enum(["agent-tab", "current-tab"]);
393
+ var ZellijPaneModeSchema = z.enum(["agent-tab", "current-tab"]);
482
394
  var TmuxLayoutSchema = MultiplexerLayoutSchema;
483
- var MultiplexerConfigSchema = z2.object({
395
+ var MultiplexerConfigSchema = z.object({
484
396
  type: MultiplexerTypeSchema.default("none"),
485
397
  layout: MultiplexerLayoutSchema.default("main-vertical"),
486
- main_pane_size: z2.number().min(20).max(80).default(60),
398
+ main_pane_size: z.number().min(20).max(80).default(60),
487
399
  zellij_pane_mode: ZellijPaneModeSchema.default("agent-tab")
488
400
  });
489
- var TmuxConfigSchema = z2.object({
490
- enabled: z2.boolean().default(false),
401
+ var TmuxConfigSchema = z.object({
402
+ enabled: z.boolean().default(false),
491
403
  layout: TmuxLayoutSchema.default("main-vertical"),
492
- main_pane_size: z2.number().min(20).max(80).default(60)
404
+ main_pane_size: z.number().min(20).max(80).default(60)
493
405
  });
494
- var PresetSchema = z2.record(z2.string(), AgentOverrideConfigSchema);
495
- var WebsearchConfigSchema = z2.object({
496
- provider: z2.enum(["exa", "tavily"]).default("exa")
406
+ var PresetSchema = z.record(z.string(), AgentOverrideConfigSchema);
407
+ var WebsearchConfigSchema = z.object({
408
+ provider: z.enum(["exa", "tavily"]).default("exa")
497
409
  });
498
- var McpNameSchema = z2.enum(["websearch", "context7", "gh_grep"]);
499
- var InterviewConfigSchema = z2.object({
500
- maxQuestions: z2.number().int().min(1).max(10).default(2),
501
- outputFolder: z2.string().min(1).default("interview"),
502
- autoOpenBrowser: z2.boolean().default(true).describe("Automatically open the interview UI in your default browser during interactive runs. Disabled automatically in tests and CI."),
503
- port: z2.number().int().min(0).max(65535).default(0),
504
- dashboard: z2.boolean().default(false)
410
+ var McpNameSchema = z.enum(["websearch", "context7", "gh_grep"]);
411
+ var InterviewConfigSchema = z.object({
412
+ maxQuestions: z.number().int().min(1).max(10).default(2),
413
+ outputFolder: z.string().min(1).default("interview"),
414
+ autoOpenBrowser: z.boolean().default(true).describe("Automatically open the interview UI in your default browser during interactive runs. Disabled automatically in tests and CI."),
415
+ port: z.number().int().min(0).max(65535).default(0),
416
+ dashboard: z.boolean().default(false)
505
417
  });
506
- var BackgroundJobsConfigSchema = z2.object({
507
- maxSessionsPerAgent: z2.number().int().min(1).max(10).default(2),
508
- readContextMinLines: z2.number().int().min(0).max(1000).default(10),
509
- readContextMaxFiles: z2.number().int().min(0).max(50).default(8)
418
+ var BackgroundJobsConfigSchema = z.object({
419
+ maxSessionsPerAgent: z.number().int().min(1).max(10).default(2),
420
+ readContextMinLines: z.number().int().min(0).max(1000).default(10),
421
+ readContextMaxFiles: z.number().int().min(0).max(50).default(8)
510
422
  });
511
- var FailoverConfigSchema = z2.object({
512
- enabled: z2.boolean().default(true),
513
- timeoutMs: z2.number().min(0).default(15000),
514
- retryDelayMs: z2.number().min(0).default(500),
515
- maxRetries: z2.number().int().min(0).default(3).describe("Number of consecutive 429/rate-limit responses tolerated on the " + "same model before aborting (or swapping to the next fallback " + "model when a chain is configured)."),
516
- retry_on_empty: z2.boolean().default(true).describe("When true (default), empty provider responses are treated as failures, " + "triggering fallback/retry. Set to false to treat them as successes."),
517
- runtimeOverride: z2.boolean().optional().describe("DEPRECATED: no longer used. Previously controlled whether out-of-chain " + "runtime model picks triggered fallback. Fallback is now always " + "disabled when a user explicitly selects a model via /model.")
423
+ var FailoverConfigSchema = z.object({
424
+ enabled: z.boolean().default(true),
425
+ timeoutMs: z.number().min(0).default(15000),
426
+ retryDelayMs: z.number().min(0).default(500),
427
+ maxRetries: z.number().int().min(0).default(3).describe("Number of consecutive 429/rate-limit responses tolerated on the " + "same model before aborting (or swapping to the next fallback " + "model when a chain is configured)."),
428
+ retry_on_empty: z.boolean().default(true).describe("When true (default), empty provider responses are treated as failures, " + "triggering fallback/retry. Set to false to treat them as successes."),
429
+ runtimeOverride: z.boolean().optional().describe("DEPRECATED: no longer used. Previously controlled whether out-of-chain " + "runtime model picks triggered fallback. Fallback is now always " + "disabled when a user explicitly selects a model via /model.")
518
430
  }).strict();
519
- var CompanionConfigSchema = z2.object({
520
- enabled: z2.boolean().optional(),
521
- binaryPath: z2.string().min(1).optional().describe("Path to a custom companion binary to launch."),
522
- position: z2.enum(["bottom-right", "bottom-left", "top-right", "top-left"]).optional(),
523
- size: z2.enum(["small", "medium", "large"]).optional(),
524
- gifPack: z2.enum(["default"]).optional().describe("Bundled companion animation pack to use."),
525
- loopStyle: z2.enum(["classic", "smooth"]).optional().describe("Companion animation playback style: classic loops or smooth ping-pong playback."),
526
- speed: z2.number().min(0.25).max(4).optional().describe("Companion animation playback speed multiplier. Defaults to 1."),
527
- debug: z2.boolean().optional().describe("Enable verbose native companion debug logs.")
431
+ var CompanionConfigSchema = z.object({
432
+ enabled: z.boolean().optional(),
433
+ binaryPath: z.string().min(1).optional().describe("Path to a custom companion binary to launch."),
434
+ position: z.enum(["bottom-right", "bottom-left", "top-right", "top-left"]).optional(),
435
+ size: z.enum(["small", "medium", "large"]).optional(),
436
+ gifPack: z.enum(["default"]).optional().describe("Bundled companion animation pack to use."),
437
+ loopStyle: z.enum(["classic", "smooth"]).optional().describe("Companion animation playback style: classic loops or smooth ping-pong playback."),
438
+ speed: z.number().min(0.25).max(4).optional().describe("Companion animation playback speed multiplier. Defaults to 1."),
439
+ debug: z.boolean().optional().describe("Enable verbose native companion debug logs.")
528
440
  });
529
- var AcpAgentPermissionModeSchema = z2.enum(["ask", "allow", "reject"]);
441
+ var AcpAgentPermissionModeSchema = z.enum(["ask", "allow", "reject"]);
530
442
  var MAX_ACP_TIMEOUT_MS = 2147483647;
531
- var AcpAgentConfigSchema = z2.object({
532
- command: z2.string().min(1),
533
- args: z2.array(z2.string()).default([]),
534
- env: z2.record(z2.string(), z2.string()).default({}),
535
- cwd: z2.string().min(1).optional(),
536
- description: z2.string().min(1).optional(),
537
- prompt: z2.string().min(1).optional(),
538
- orchestratorPrompt: z2.string().min(1).optional(),
443
+ var AcpAgentConfigSchema = z.object({
444
+ command: z.string().min(1),
445
+ args: z.array(z.string()).default([]),
446
+ env: z.record(z.string(), z.string()).default({}),
447
+ cwd: z.string().min(1).optional(),
448
+ description: z.string().min(1).optional(),
449
+ prompt: z.string().min(1).optional(),
450
+ orchestratorPrompt: z.string().min(1).optional(),
539
451
  wrapperModel: ProviderModelIdSchema.optional(),
540
- timeoutMs: z2.number().int().min(0).max(MAX_ACP_TIMEOUT_MS).default(0).describe("Timeout for a single ACP run in milliseconds. Set to 0 to disable the timeout."),
452
+ timeoutMs: z.number().int().min(0).max(MAX_ACP_TIMEOUT_MS).default(0).describe("Timeout for a single ACP run in milliseconds. Set to 0 to disable the timeout."),
541
453
  permissionMode: AcpAgentPermissionModeSchema.default("ask")
542
454
  }).strict();
543
- var AcpAgentsConfigSchema = z2.record(z2.string(), AcpAgentConfigSchema);
455
+ var AcpAgentsConfigSchema = z.record(z.string(), AcpAgentConfigSchema);
544
456
  function rejectOrchestratorPromptOnOrchestrator(overrides, ctx, pathPrefix) {
545
457
  for (const [name, override] of Object.entries(overrides)) {
546
458
  if (name === "orchestrator" && override.orchestratorPrompt !== undefined) {
547
459
  ctx.addIssue({
548
- code: z2.ZodIssueCode.custom,
460
+ code: z.ZodIssueCode.custom,
549
461
  path: [...pathPrefix, name, "orchestratorPrompt"],
550
462
  message: "orchestratorPrompt is not supported for the orchestrator agent"
551
463
  });
552
464
  }
553
465
  }
554
466
  }
555
- var PluginConfigSchema = z2.object({
556
- preset: z2.string().optional(),
557
- setDefaultAgent: z2.boolean().optional(),
558
- compactSidebar: z2.boolean().optional().describe("Use the compact TUI sidebar layout. Defaults to true; set false to use the expanded layout."),
559
- stripOrchestratorModel: z2.boolean().optional().describe("When true, omit orchestrator.model and orchestrator.variant from the SDK config so OpenCode uses the session model selected with /model after subagent dispatch. An explicitly selected preset that sets orchestrator.model is preserved. Defaults to false."),
560
- autoUpdate: z2.boolean().optional().describe("Disable automatic installation of plugin updates when false. Defaults to true."),
561
- presets: z2.record(z2.string(), PresetSchema).optional(),
562
- agents: z2.record(z2.string(), AgentOverrideConfigSchema).optional(),
563
- disabled_agents: z2.array(z2.string()).optional().describe("Agent names to disable completely. " + "Disabled agents are not instantiated and cannot be delegated to. " + "Orchestrator and council internal agents (councillor) cannot be disabled. " + "By default, 'observer' is disabled. Remove it from this list and configure a vision-capable model to enable."),
564
- image_routing: z2.enum(["auto", "direct"]).optional().describe("How image attachments are handled. " + "When omitted, preserves legacy conditional behavior: intercept " + 'attachments only when observer is enabled. "auto": requires ' + "observer to be enabled and saves attachments to disk before " + 'nudging delegation to @observer. "direct": always passes ' + "attachments to the orchestrator untouched."),
565
- disabled_mcps: z2.array(z2.string()).optional().describe("MCP server names to disable completely. Disabled servers are not " + "started and cannot be used by agents."),
566
- disabled_tools: z2.array(z2.string()).optional().describe("Tool names to disable completely. Disabled tools are not registered with OpenCode and cannot be used by agents."),
567
- disabled_skills: z2.array(z2.string()).optional().describe("Skill names to disable completely. Disabled skills are not granted to agents, even when referenced by presets or agent overrides."),
467
+ var PluginConfigSchema = z.object({
468
+ preset: z.string().optional(),
469
+ setDefaultAgent: z.boolean().optional(),
470
+ compactSidebar: z.boolean().optional().describe("Use the compact TUI sidebar layout. Defaults to true; set false to use the expanded layout."),
471
+ stripOrchestratorModel: z.boolean().optional().describe("When true, omit orchestrator.model and orchestrator.variant from the SDK config so OpenCode uses the session model selected with /model after subagent dispatch. An explicitly selected preset that sets orchestrator.model is preserved. Defaults to false."),
472
+ autoUpdate: z.boolean().optional().describe("Disable automatic installation of plugin updates when false. Defaults to true."),
473
+ presets: z.record(z.string(), PresetSchema).optional(),
474
+ agents: z.record(z.string(), AgentOverrideConfigSchema).optional(),
475
+ disabled_agents: z.array(z.string()).optional().describe("Agent names to disable completely. " + "Disabled agents are not instantiated and cannot be delegated to. " + "Orchestrator cannot be disabled. " + "By default, 'observer' is disabled. Remove it from this list and configure a vision-capable model to enable."),
476
+ image_routing: z.enum(["auto", "direct"]).optional().describe("How image attachments are handled. " + "When omitted, preserves legacy conditional behavior: intercept " + 'attachments only when observer is enabled. "auto": requires ' + "observer to be enabled and saves attachments to disk before " + 'nudging delegation to @observer. "direct": always passes ' + "attachments to the orchestrator untouched."),
477
+ disabled_mcps: z.array(z.string()).optional().describe("MCP server names to disable completely. Disabled servers are not " + "started and cannot be used by agents."),
478
+ disabled_tools: z.array(z.string()).optional().describe("Tool names to disable completely. Disabled tools are not registered with OpenCode and cannot be used by agents."),
479
+ disabled_skills: z.array(z.string()).optional().describe("Skill names to disable completely. Disabled skills are not granted to agents, even when referenced by presets or agent overrides."),
568
480
  multiplexer: MultiplexerConfigSchema.optional(),
569
481
  tmux: TmuxConfigSchema.optional(),
570
482
  websearch: WebsearchConfigSchema.optional(),
571
483
  interview: InterviewConfigSchema.optional(),
572
484
  backgroundJobs: BackgroundJobsConfigSchema.optional(),
573
485
  fallback: FailoverConfigSchema.optional(),
574
- council: CouncilConfigSchema.optional(),
575
486
  companion: CompanionConfigSchema.optional(),
576
487
  acpAgents: AcpAgentsConfigSchema.optional()
577
488
  }).superRefine((value, ctx) => {
@@ -595,9 +506,7 @@ var DEFAULT_AGENT_MCPS = {
595
506
  librarian: ["websearch", "context7", "gh_grep"],
596
507
  explorer: [],
597
508
  fixer: [],
598
- observer: [],
599
- council: [],
600
- councillor: []
509
+ observer: []
601
510
  };
602
511
 
603
512
  // src/cli/custom-skills-registry.ts
@@ -1308,7 +1217,6 @@ function mergePluginConfigs(base, override) {
1308
1217
  interview: deepMerge(base.interview, override.interview),
1309
1218
  backgroundJobs: deepMerge(base.backgroundJobs, override.backgroundJobs),
1310
1219
  fallback: deepMerge(base.fallback, override.fallback),
1311
- council: deepMerge(base.council, override.council),
1312
1220
  acpAgents: deepMerge(base.acpAgents, override.acpAgents),
1313
1221
  companion: deepMerge(base.companion, override.companion)
1314
1222
  };
@@ -1374,7 +1282,7 @@ function checkConfigFile(scope, configPath) {
1374
1282
  ok: false,
1375
1283
  error: {
1376
1284
  kind: "invalid-schema",
1377
- message: z3.prettifyError(parseResult.error),
1285
+ message: z2.prettifyError(parseResult.error),
1378
1286
  issues: parseResult.error.issues
1379
1287
  }
1380
1288
  };
@@ -1,6 +1,6 @@
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"];
3
- export declare const ALL_AGENT_NAMES: readonly ["orchestrator", "explorer", "librarian", "oracle", "designer", "fixer", "observer", "council", "councillor"];
2
+ export declare const SUBAGENT_NAMES: readonly ["explorer", "librarian", "oracle", "designer", "fixer", "observer"];
3
+ export declare const ALL_AGENT_NAMES: readonly ["orchestrator", "explorer", "librarian", "oracle", "designer", "fixer", "observer"];
4
4
  export type AgentName = (typeof ALL_AGENT_NAMES)[number];
5
5
  /** Agents that cannot be disabled even if listed in disabled_agents config. */
6
6
  export declare const PROTECTED_AGENTS: Set<string>;
@@ -1,5 +1,4 @@
1
1
  export * from './constants';
2
- export * from './council-schema';
3
2
  export { deepMerge, loadAgentPrompt, loadPluginConfig, } from './loader';
4
3
  export * from './schema';
5
4
  export { getAcpAgentNames, getAgentOverride, getCustomAgentNames, } from './utils';
@@ -1021,47 +1021,6 @@ export declare const PluginConfigSchema: z.ZodObject<{
1021
1021
  retry_on_empty: z.ZodDefault<z.ZodBoolean>;
1022
1022
  runtimeOverride: z.ZodOptional<z.ZodBoolean>;
1023
1023
  }, z.core.$strict>>;
1024
- council: z.ZodOptional<z.ZodPipe<z.ZodObject<{
1025
- presets: z.ZodRecord<z.ZodString, z.ZodPipe<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodUnknown>>, z.ZodTransform<Record<string, {
1026
- model: string;
1027
- variant: string | undefined;
1028
- prompt: string | undefined;
1029
- models: import("./council-schema").CouncillorModelEntry[];
1030
- }>, Record<string, Record<string, unknown>>>>>;
1031
- timeout: z.ZodDefault<z.ZodNumber>;
1032
- default_preset: z.ZodDefault<z.ZodString>;
1033
- councillor_execution_mode: z.ZodDefault<z.ZodEnum<{
1034
- parallel: "parallel";
1035
- serial: "serial";
1036
- }>>;
1037
- councillor_retries: z.ZodDefault<z.ZodNumber>;
1038
- master: z.ZodOptional<z.ZodUnknown>;
1039
- }, z.core.$strip>, z.ZodTransform<{
1040
- presets: Record<string, Record<string, {
1041
- model: string;
1042
- variant: string | undefined;
1043
- prompt: string | undefined;
1044
- models: import("./council-schema").CouncillorModelEntry[];
1045
- }>>;
1046
- timeout: number;
1047
- default_preset: string;
1048
- councillor_execution_mode: "parallel" | "serial";
1049
- councillor_retries: number;
1050
- _deprecated: string[] | undefined;
1051
- _legacyMasterModel: string | undefined;
1052
- }, {
1053
- presets: Record<string, Record<string, {
1054
- model: string;
1055
- variant: string | undefined;
1056
- prompt: string | undefined;
1057
- models: import("./council-schema").CouncillorModelEntry[];
1058
- }>>;
1059
- timeout: number;
1060
- default_preset: string;
1061
- councillor_execution_mode: "parallel" | "serial";
1062
- councillor_retries: number;
1063
- master?: unknown;
1064
- }>>>;
1065
1024
  companion: z.ZodOptional<z.ZodObject<{
1066
1025
  enabled: z.ZodOptional<z.ZodBoolean>;
1067
1026
  binaryPath: z.ZodOptional<z.ZodString>;