@hiai-gg/hiai-opencode 0.1.3 → 0.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/.env.example +14 -18
  2. package/AGENTS.md +77 -23
  3. package/ARCHITECTURE.md +15 -17
  4. package/LICENSE.md +1 -0
  5. package/README.md +189 -94
  6. package/assets/cli/hiai-opencode.mjs +276 -0
  7. package/assets/mcp/playwright.mjs +7 -0
  8. package/config/hiai-opencode.schema.json +85 -50
  9. package/dist/config/defaults.d.ts +1 -3
  10. package/dist/config/index.d.ts +0 -1
  11. package/dist/config/platform-schema.d.ts +343 -4
  12. package/dist/config/schema/agent-overrides.d.ts +256 -0
  13. package/dist/config/schema/categories.d.ts +1 -1
  14. package/dist/config/schema/commands.d.ts +1 -0
  15. package/dist/config/schema/index.d.ts +2 -0
  16. package/dist/config/schema/oh-my-opencode-config.d.ts +267 -0
  17. package/dist/config/schema/skill-discovery.d.ts +11 -0
  18. package/dist/config/types.d.ts +33 -3
  19. package/dist/create-tools.d.ts +2 -0
  20. package/dist/features/builtin-commands/templates/mcp-status.d.ts +1 -0
  21. package/dist/features/builtin-commands/types.d.ts +1 -1
  22. package/dist/features/opencode-skill-loader/loader.d.ts +2 -0
  23. package/dist/index.js +744 -358
  24. package/dist/internals/plugins/websearch-cited/index.d.ts +7 -1
  25. package/dist/mcp/types.d.ts +1 -1
  26. package/dist/plugin/skill-discovery-config.d.ts +4 -0
  27. package/dist/plugin/tool-registry.d.ts +2 -0
  28. package/dist/shared/startup-diagnostics.d.ts +6 -0
  29. package/dist/tools/skill-mcp/tools.d.ts +2 -0
  30. package/hiai-opencode.json +55 -33
  31. package/package.json +4 -1
  32. package/src/agents/AGENTS.md +3 -4
  33. package/src/config/defaults.ts +186 -77
  34. package/src/config/index.ts +0 -1
  35. package/src/config/loader.test.ts +16 -1
  36. package/src/config/loader.ts +4 -2
  37. package/src/config/platform-schema.ts +53 -4
  38. package/src/config/schema/agent-overrides.ts +2 -0
  39. package/src/config/schema/commands.ts +1 -0
  40. package/src/config/schema/fast-apply.ts +4 -4
  41. package/src/config/schema/index.ts +2 -0
  42. package/src/config/schema/oh-my-opencode-config.ts +3 -0
  43. package/src/config/schema/skill-discovery.ts +25 -0
  44. package/src/config/types.ts +49 -2
  45. package/src/create-tools.ts +4 -1
  46. package/src/features/builtin-commands/commands.ts +7 -0
  47. package/src/features/builtin-commands/templates/mcp-status.ts +36 -0
  48. package/src/features/builtin-commands/types.ts +1 -1
  49. package/src/features/builtin-skills/skills/playwright.ts +24 -2
  50. package/src/features/opencode-skill-loader/loader.ts +11 -0
  51. package/src/index.ts +53 -14
  52. package/src/internals/plugins/websearch-cited/index.ts +10 -5
  53. package/src/lsp/index.ts +1 -0
  54. package/src/mcp/registry.ts +6 -1
  55. package/src/plugin/hooks/create-tool-guard-hooks.ts +1 -1
  56. package/src/plugin/skill-context.ts +31 -13
  57. package/src/plugin/skill-discovery-config.ts +32 -0
  58. package/src/plugin/tool-registry.ts +4 -0
  59. package/src/plugin-handlers/agent-config-handler.ts +20 -13
  60. package/src/plugin-handlers/command-config-handler.ts +22 -12
  61. package/src/shared/migration/agent-names.ts +5 -5
  62. package/src/shared/startup-diagnostics.ts +77 -0
  63. package/src/tools/skill-mcp/tools.ts +45 -7
  64. package/src/config/models.ts +0 -32
@@ -2561,6 +2561,262 @@ export declare const AgentOverridesSchema: z.ZodObject<{
2561
2561
  variant: z.ZodOptional<z.ZodString>;
2562
2562
  }, z.core.$strip>>;
2563
2563
  }, z.core.$strip>>;
2564
+ manager: z.ZodOptional<z.ZodObject<{
2565
+ model: z.ZodOptional<z.ZodString>;
2566
+ fallback_models: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>, z.ZodArray<z.ZodObject<{
2567
+ model: z.ZodString;
2568
+ variant: z.ZodOptional<z.ZodString>;
2569
+ reasoningEffort: z.ZodOptional<z.ZodEnum<{
2570
+ none: "none";
2571
+ minimal: "minimal";
2572
+ low: "low";
2573
+ medium: "medium";
2574
+ high: "high";
2575
+ xhigh: "xhigh";
2576
+ }>>;
2577
+ temperature: z.ZodOptional<z.ZodNumber>;
2578
+ top_p: z.ZodOptional<z.ZodNumber>;
2579
+ maxTokens: z.ZodOptional<z.ZodNumber>;
2580
+ thinking: z.ZodOptional<z.ZodObject<{
2581
+ type: z.ZodEnum<{
2582
+ enabled: "enabled";
2583
+ disabled: "disabled";
2584
+ }>;
2585
+ budgetTokens: z.ZodOptional<z.ZodNumber>;
2586
+ }, z.core.$strip>>;
2587
+ }, z.core.$strip>>, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
2588
+ model: z.ZodString;
2589
+ variant: z.ZodOptional<z.ZodString>;
2590
+ reasoningEffort: z.ZodOptional<z.ZodEnum<{
2591
+ none: "none";
2592
+ minimal: "minimal";
2593
+ low: "low";
2594
+ medium: "medium";
2595
+ high: "high";
2596
+ xhigh: "xhigh";
2597
+ }>>;
2598
+ temperature: z.ZodOptional<z.ZodNumber>;
2599
+ top_p: z.ZodOptional<z.ZodNumber>;
2600
+ maxTokens: z.ZodOptional<z.ZodNumber>;
2601
+ thinking: z.ZodOptional<z.ZodObject<{
2602
+ type: z.ZodEnum<{
2603
+ enabled: "enabled";
2604
+ disabled: "disabled";
2605
+ }>;
2606
+ budgetTokens: z.ZodOptional<z.ZodNumber>;
2607
+ }, z.core.$strip>>;
2608
+ }, z.core.$strip>]>>]>>;
2609
+ variant: z.ZodOptional<z.ZodString>;
2610
+ category: z.ZodOptional<z.ZodString>;
2611
+ skills: z.ZodOptional<z.ZodArray<z.ZodString>>;
2612
+ temperature: z.ZodOptional<z.ZodNumber>;
2613
+ top_p: z.ZodOptional<z.ZodNumber>;
2614
+ prompt: z.ZodOptional<z.ZodString>;
2615
+ prompt_append: z.ZodOptional<z.ZodString>;
2616
+ tools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
2617
+ disable: z.ZodOptional<z.ZodBoolean>;
2618
+ description: z.ZodOptional<z.ZodString>;
2619
+ mode: z.ZodOptional<z.ZodEnum<{
2620
+ primary: "primary";
2621
+ subagent: "subagent";
2622
+ all: "all";
2623
+ }>>;
2624
+ color: z.ZodOptional<z.ZodString>;
2625
+ permission: z.ZodOptional<z.ZodObject<{
2626
+ edit: z.ZodOptional<z.ZodEnum<{
2627
+ allow: "allow";
2628
+ deny: "deny";
2629
+ ask: "ask";
2630
+ }>>;
2631
+ bash: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
2632
+ allow: "allow";
2633
+ deny: "deny";
2634
+ ask: "ask";
2635
+ }>, z.ZodRecord<z.ZodString, z.ZodEnum<{
2636
+ allow: "allow";
2637
+ deny: "deny";
2638
+ ask: "ask";
2639
+ }>>]>>;
2640
+ webfetch: z.ZodOptional<z.ZodEnum<{
2641
+ allow: "allow";
2642
+ deny: "deny";
2643
+ ask: "ask";
2644
+ }>>;
2645
+ task: z.ZodOptional<z.ZodEnum<{
2646
+ allow: "allow";
2647
+ deny: "deny";
2648
+ ask: "ask";
2649
+ }>>;
2650
+ doom_loop: z.ZodOptional<z.ZodEnum<{
2651
+ allow: "allow";
2652
+ deny: "deny";
2653
+ ask: "ask";
2654
+ }>>;
2655
+ external_directory: z.ZodOptional<z.ZodEnum<{
2656
+ allow: "allow";
2657
+ deny: "deny";
2658
+ ask: "ask";
2659
+ }>>;
2660
+ }, z.core.$strip>>;
2661
+ maxTokens: z.ZodOptional<z.ZodNumber>;
2662
+ thinking: z.ZodOptional<z.ZodObject<{
2663
+ type: z.ZodEnum<{
2664
+ enabled: "enabled";
2665
+ disabled: "disabled";
2666
+ }>;
2667
+ budgetTokens: z.ZodOptional<z.ZodNumber>;
2668
+ }, z.core.$strip>>;
2669
+ reasoningEffort: z.ZodOptional<z.ZodEnum<{
2670
+ none: "none";
2671
+ minimal: "minimal";
2672
+ low: "low";
2673
+ medium: "medium";
2674
+ high: "high";
2675
+ xhigh: "xhigh";
2676
+ }>>;
2677
+ textVerbosity: z.ZodOptional<z.ZodEnum<{
2678
+ low: "low";
2679
+ medium: "medium";
2680
+ high: "high";
2681
+ }>>;
2682
+ providerOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
2683
+ ultrawork: z.ZodOptional<z.ZodObject<{
2684
+ model: z.ZodOptional<z.ZodString>;
2685
+ variant: z.ZodOptional<z.ZodString>;
2686
+ }, z.core.$strip>>;
2687
+ compaction: z.ZodOptional<z.ZodObject<{
2688
+ model: z.ZodOptional<z.ZodString>;
2689
+ variant: z.ZodOptional<z.ZodString>;
2690
+ }, z.core.$strip>>;
2691
+ }, z.core.$strip>>;
2692
+ vision: z.ZodOptional<z.ZodObject<{
2693
+ model: z.ZodOptional<z.ZodString>;
2694
+ fallback_models: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>, z.ZodArray<z.ZodObject<{
2695
+ model: z.ZodString;
2696
+ variant: z.ZodOptional<z.ZodString>;
2697
+ reasoningEffort: z.ZodOptional<z.ZodEnum<{
2698
+ none: "none";
2699
+ minimal: "minimal";
2700
+ low: "low";
2701
+ medium: "medium";
2702
+ high: "high";
2703
+ xhigh: "xhigh";
2704
+ }>>;
2705
+ temperature: z.ZodOptional<z.ZodNumber>;
2706
+ top_p: z.ZodOptional<z.ZodNumber>;
2707
+ maxTokens: z.ZodOptional<z.ZodNumber>;
2708
+ thinking: z.ZodOptional<z.ZodObject<{
2709
+ type: z.ZodEnum<{
2710
+ enabled: "enabled";
2711
+ disabled: "disabled";
2712
+ }>;
2713
+ budgetTokens: z.ZodOptional<z.ZodNumber>;
2714
+ }, z.core.$strip>>;
2715
+ }, z.core.$strip>>, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
2716
+ model: z.ZodString;
2717
+ variant: z.ZodOptional<z.ZodString>;
2718
+ reasoningEffort: z.ZodOptional<z.ZodEnum<{
2719
+ none: "none";
2720
+ minimal: "minimal";
2721
+ low: "low";
2722
+ medium: "medium";
2723
+ high: "high";
2724
+ xhigh: "xhigh";
2725
+ }>>;
2726
+ temperature: z.ZodOptional<z.ZodNumber>;
2727
+ top_p: z.ZodOptional<z.ZodNumber>;
2728
+ maxTokens: z.ZodOptional<z.ZodNumber>;
2729
+ thinking: z.ZodOptional<z.ZodObject<{
2730
+ type: z.ZodEnum<{
2731
+ enabled: "enabled";
2732
+ disabled: "disabled";
2733
+ }>;
2734
+ budgetTokens: z.ZodOptional<z.ZodNumber>;
2735
+ }, z.core.$strip>>;
2736
+ }, z.core.$strip>]>>]>>;
2737
+ variant: z.ZodOptional<z.ZodString>;
2738
+ category: z.ZodOptional<z.ZodString>;
2739
+ skills: z.ZodOptional<z.ZodArray<z.ZodString>>;
2740
+ temperature: z.ZodOptional<z.ZodNumber>;
2741
+ top_p: z.ZodOptional<z.ZodNumber>;
2742
+ prompt: z.ZodOptional<z.ZodString>;
2743
+ prompt_append: z.ZodOptional<z.ZodString>;
2744
+ tools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
2745
+ disable: z.ZodOptional<z.ZodBoolean>;
2746
+ description: z.ZodOptional<z.ZodString>;
2747
+ mode: z.ZodOptional<z.ZodEnum<{
2748
+ primary: "primary";
2749
+ subagent: "subagent";
2750
+ all: "all";
2751
+ }>>;
2752
+ color: z.ZodOptional<z.ZodString>;
2753
+ permission: z.ZodOptional<z.ZodObject<{
2754
+ edit: z.ZodOptional<z.ZodEnum<{
2755
+ allow: "allow";
2756
+ deny: "deny";
2757
+ ask: "ask";
2758
+ }>>;
2759
+ bash: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
2760
+ allow: "allow";
2761
+ deny: "deny";
2762
+ ask: "ask";
2763
+ }>, z.ZodRecord<z.ZodString, z.ZodEnum<{
2764
+ allow: "allow";
2765
+ deny: "deny";
2766
+ ask: "ask";
2767
+ }>>]>>;
2768
+ webfetch: z.ZodOptional<z.ZodEnum<{
2769
+ allow: "allow";
2770
+ deny: "deny";
2771
+ ask: "ask";
2772
+ }>>;
2773
+ task: z.ZodOptional<z.ZodEnum<{
2774
+ allow: "allow";
2775
+ deny: "deny";
2776
+ ask: "ask";
2777
+ }>>;
2778
+ doom_loop: z.ZodOptional<z.ZodEnum<{
2779
+ allow: "allow";
2780
+ deny: "deny";
2781
+ ask: "ask";
2782
+ }>>;
2783
+ external_directory: z.ZodOptional<z.ZodEnum<{
2784
+ allow: "allow";
2785
+ deny: "deny";
2786
+ ask: "ask";
2787
+ }>>;
2788
+ }, z.core.$strip>>;
2789
+ maxTokens: z.ZodOptional<z.ZodNumber>;
2790
+ thinking: z.ZodOptional<z.ZodObject<{
2791
+ type: z.ZodEnum<{
2792
+ enabled: "enabled";
2793
+ disabled: "disabled";
2794
+ }>;
2795
+ budgetTokens: z.ZodOptional<z.ZodNumber>;
2796
+ }, z.core.$strip>>;
2797
+ reasoningEffort: z.ZodOptional<z.ZodEnum<{
2798
+ none: "none";
2799
+ minimal: "minimal";
2800
+ low: "low";
2801
+ medium: "medium";
2802
+ high: "high";
2803
+ xhigh: "xhigh";
2804
+ }>>;
2805
+ textVerbosity: z.ZodOptional<z.ZodEnum<{
2806
+ low: "low";
2807
+ medium: "medium";
2808
+ high: "high";
2809
+ }>>;
2810
+ providerOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
2811
+ ultrawork: z.ZodOptional<z.ZodObject<{
2812
+ model: z.ZodOptional<z.ZodString>;
2813
+ variant: z.ZodOptional<z.ZodString>;
2814
+ }, z.core.$strip>>;
2815
+ compaction: z.ZodOptional<z.ZodObject<{
2816
+ model: z.ZodOptional<z.ZodString>;
2817
+ variant: z.ZodOptional<z.ZodString>;
2818
+ }, z.core.$strip>>;
2819
+ }, z.core.$strip>>;
2564
2820
  logician: z.ZodOptional<z.ZodObject<{
2565
2821
  model: z.ZodOptional<z.ZodString>;
2566
2822
  fallback_models: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>, z.ZodArray<z.ZodObject<{
@@ -78,11 +78,11 @@ export declare const CategoryConfigSchema: z.ZodObject<{
78
78
  export declare const BuiltinCategoryNameSchema: z.ZodEnum<{
79
79
  deep: "deep";
80
80
  "unspecified-high": "unspecified-high";
81
+ writing: "writing";
81
82
  "visual-engineering": "visual-engineering";
82
83
  artistry: "artistry";
83
84
  ultrabrain: "ultrabrain";
84
85
  quick: "quick";
85
- writing: "writing";
86
86
  "unspecified-low": "unspecified-low";
87
87
  }>;
88
88
  export declare const CategoriesConfigSchema: z.ZodRecord<z.ZodString, z.ZodObject<{
@@ -8,5 +8,6 @@ export declare const BuiltinCommandNameSchema: z.ZodEnum<{
8
8
  "start-work": "start-work";
9
9
  "stop-continuation": "stop-continuation";
10
10
  "remove-ai-slops": "remove-ai-slops";
11
+ "mcp-status": "mcp-status";
11
12
  }>;
12
13
  export type BuiltinCommandName = z.infer<typeof BuiltinCommandNameSchema>;
@@ -44,6 +44,8 @@ export { BobAgentConfigSchema } from "./bob-agent";
44
44
  export type { BobAgentConfig } from "./bob-agent";
45
45
  export { SkillsConfigSchema } from "./skills";
46
46
  export type { SkillsConfig, SkillDefinition } from "./skills";
47
+ export { SkillDiscoveryConfigSchema } from "./skill-discovery";
48
+ export type { SkillDiscoveryConfig } from "./skill-discovery";
47
49
  export { StartWorkConfigSchema } from "./start-work";
48
50
  export type { StartWorkConfig } from "./start-work";
49
51
  export { TmuxConfigSchema, TmuxLayoutSchema, TmuxIsolationSchema } from "./tmux";
@@ -25,6 +25,7 @@ export declare const HiaiOpenCodeConfigSchema: z.ZodObject<{
25
25
  "start-work": "start-work";
26
26
  "stop-continuation": "stop-continuation";
27
27
  "remove-ai-slops": "remove-ai-slops";
28
+ "mcp-status": "mcp-status";
28
29
  }>>>;
29
30
  disabled_tools: z.ZodOptional<z.ZodArray<z.ZodString>>;
30
31
  mcp_env_allowlist: z.ZodOptional<z.ZodArray<z.ZodString>>;
@@ -2464,6 +2465,262 @@ export declare const HiaiOpenCodeConfigSchema: z.ZodObject<{
2464
2465
  variant: z.ZodOptional<z.ZodString>;
2465
2466
  }, z.core.$strip>>;
2466
2467
  }, z.core.$strip>>;
2468
+ manager: z.ZodOptional<z.ZodObject<{
2469
+ model: z.ZodOptional<z.ZodString>;
2470
+ fallback_models: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>, z.ZodArray<z.ZodObject<{
2471
+ model: z.ZodString;
2472
+ variant: z.ZodOptional<z.ZodString>;
2473
+ reasoningEffort: z.ZodOptional<z.ZodEnum<{
2474
+ none: "none";
2475
+ minimal: "minimal";
2476
+ low: "low";
2477
+ medium: "medium";
2478
+ high: "high";
2479
+ xhigh: "xhigh";
2480
+ }>>;
2481
+ temperature: z.ZodOptional<z.ZodNumber>;
2482
+ top_p: z.ZodOptional<z.ZodNumber>;
2483
+ maxTokens: z.ZodOptional<z.ZodNumber>;
2484
+ thinking: z.ZodOptional<z.ZodObject<{
2485
+ type: z.ZodEnum<{
2486
+ enabled: "enabled";
2487
+ disabled: "disabled";
2488
+ }>;
2489
+ budgetTokens: z.ZodOptional<z.ZodNumber>;
2490
+ }, z.core.$strip>>;
2491
+ }, z.core.$strip>>, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
2492
+ model: z.ZodString;
2493
+ variant: z.ZodOptional<z.ZodString>;
2494
+ reasoningEffort: z.ZodOptional<z.ZodEnum<{
2495
+ none: "none";
2496
+ minimal: "minimal";
2497
+ low: "low";
2498
+ medium: "medium";
2499
+ high: "high";
2500
+ xhigh: "xhigh";
2501
+ }>>;
2502
+ temperature: z.ZodOptional<z.ZodNumber>;
2503
+ top_p: z.ZodOptional<z.ZodNumber>;
2504
+ maxTokens: z.ZodOptional<z.ZodNumber>;
2505
+ thinking: z.ZodOptional<z.ZodObject<{
2506
+ type: z.ZodEnum<{
2507
+ enabled: "enabled";
2508
+ disabled: "disabled";
2509
+ }>;
2510
+ budgetTokens: z.ZodOptional<z.ZodNumber>;
2511
+ }, z.core.$strip>>;
2512
+ }, z.core.$strip>]>>]>>;
2513
+ variant: z.ZodOptional<z.ZodString>;
2514
+ category: z.ZodOptional<z.ZodString>;
2515
+ skills: z.ZodOptional<z.ZodArray<z.ZodString>>;
2516
+ temperature: z.ZodOptional<z.ZodNumber>;
2517
+ top_p: z.ZodOptional<z.ZodNumber>;
2518
+ prompt: z.ZodOptional<z.ZodString>;
2519
+ prompt_append: z.ZodOptional<z.ZodString>;
2520
+ tools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
2521
+ disable: z.ZodOptional<z.ZodBoolean>;
2522
+ description: z.ZodOptional<z.ZodString>;
2523
+ mode: z.ZodOptional<z.ZodEnum<{
2524
+ primary: "primary";
2525
+ subagent: "subagent";
2526
+ all: "all";
2527
+ }>>;
2528
+ color: z.ZodOptional<z.ZodString>;
2529
+ permission: z.ZodOptional<z.ZodObject<{
2530
+ edit: z.ZodOptional<z.ZodEnum<{
2531
+ allow: "allow";
2532
+ deny: "deny";
2533
+ ask: "ask";
2534
+ }>>;
2535
+ bash: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
2536
+ allow: "allow";
2537
+ deny: "deny";
2538
+ ask: "ask";
2539
+ }>, z.ZodRecord<z.ZodString, z.ZodEnum<{
2540
+ allow: "allow";
2541
+ deny: "deny";
2542
+ ask: "ask";
2543
+ }>>]>>;
2544
+ webfetch: z.ZodOptional<z.ZodEnum<{
2545
+ allow: "allow";
2546
+ deny: "deny";
2547
+ ask: "ask";
2548
+ }>>;
2549
+ task: z.ZodOptional<z.ZodEnum<{
2550
+ allow: "allow";
2551
+ deny: "deny";
2552
+ ask: "ask";
2553
+ }>>;
2554
+ doom_loop: z.ZodOptional<z.ZodEnum<{
2555
+ allow: "allow";
2556
+ deny: "deny";
2557
+ ask: "ask";
2558
+ }>>;
2559
+ external_directory: z.ZodOptional<z.ZodEnum<{
2560
+ allow: "allow";
2561
+ deny: "deny";
2562
+ ask: "ask";
2563
+ }>>;
2564
+ }, z.core.$strip>>;
2565
+ maxTokens: z.ZodOptional<z.ZodNumber>;
2566
+ thinking: z.ZodOptional<z.ZodObject<{
2567
+ type: z.ZodEnum<{
2568
+ enabled: "enabled";
2569
+ disabled: "disabled";
2570
+ }>;
2571
+ budgetTokens: z.ZodOptional<z.ZodNumber>;
2572
+ }, z.core.$strip>>;
2573
+ reasoningEffort: z.ZodOptional<z.ZodEnum<{
2574
+ none: "none";
2575
+ minimal: "minimal";
2576
+ low: "low";
2577
+ medium: "medium";
2578
+ high: "high";
2579
+ xhigh: "xhigh";
2580
+ }>>;
2581
+ textVerbosity: z.ZodOptional<z.ZodEnum<{
2582
+ low: "low";
2583
+ medium: "medium";
2584
+ high: "high";
2585
+ }>>;
2586
+ providerOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
2587
+ ultrawork: z.ZodOptional<z.ZodObject<{
2588
+ model: z.ZodOptional<z.ZodString>;
2589
+ variant: z.ZodOptional<z.ZodString>;
2590
+ }, z.core.$strip>>;
2591
+ compaction: z.ZodOptional<z.ZodObject<{
2592
+ model: z.ZodOptional<z.ZodString>;
2593
+ variant: z.ZodOptional<z.ZodString>;
2594
+ }, z.core.$strip>>;
2595
+ }, z.core.$strip>>;
2596
+ vision: z.ZodOptional<z.ZodObject<{
2597
+ model: z.ZodOptional<z.ZodString>;
2598
+ fallback_models: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>, z.ZodArray<z.ZodObject<{
2599
+ model: z.ZodString;
2600
+ variant: z.ZodOptional<z.ZodString>;
2601
+ reasoningEffort: z.ZodOptional<z.ZodEnum<{
2602
+ none: "none";
2603
+ minimal: "minimal";
2604
+ low: "low";
2605
+ medium: "medium";
2606
+ high: "high";
2607
+ xhigh: "xhigh";
2608
+ }>>;
2609
+ temperature: z.ZodOptional<z.ZodNumber>;
2610
+ top_p: z.ZodOptional<z.ZodNumber>;
2611
+ maxTokens: z.ZodOptional<z.ZodNumber>;
2612
+ thinking: z.ZodOptional<z.ZodObject<{
2613
+ type: z.ZodEnum<{
2614
+ enabled: "enabled";
2615
+ disabled: "disabled";
2616
+ }>;
2617
+ budgetTokens: z.ZodOptional<z.ZodNumber>;
2618
+ }, z.core.$strip>>;
2619
+ }, z.core.$strip>>, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
2620
+ model: z.ZodString;
2621
+ variant: z.ZodOptional<z.ZodString>;
2622
+ reasoningEffort: z.ZodOptional<z.ZodEnum<{
2623
+ none: "none";
2624
+ minimal: "minimal";
2625
+ low: "low";
2626
+ medium: "medium";
2627
+ high: "high";
2628
+ xhigh: "xhigh";
2629
+ }>>;
2630
+ temperature: z.ZodOptional<z.ZodNumber>;
2631
+ top_p: z.ZodOptional<z.ZodNumber>;
2632
+ maxTokens: z.ZodOptional<z.ZodNumber>;
2633
+ thinking: z.ZodOptional<z.ZodObject<{
2634
+ type: z.ZodEnum<{
2635
+ enabled: "enabled";
2636
+ disabled: "disabled";
2637
+ }>;
2638
+ budgetTokens: z.ZodOptional<z.ZodNumber>;
2639
+ }, z.core.$strip>>;
2640
+ }, z.core.$strip>]>>]>>;
2641
+ variant: z.ZodOptional<z.ZodString>;
2642
+ category: z.ZodOptional<z.ZodString>;
2643
+ skills: z.ZodOptional<z.ZodArray<z.ZodString>>;
2644
+ temperature: z.ZodOptional<z.ZodNumber>;
2645
+ top_p: z.ZodOptional<z.ZodNumber>;
2646
+ prompt: z.ZodOptional<z.ZodString>;
2647
+ prompt_append: z.ZodOptional<z.ZodString>;
2648
+ tools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
2649
+ disable: z.ZodOptional<z.ZodBoolean>;
2650
+ description: z.ZodOptional<z.ZodString>;
2651
+ mode: z.ZodOptional<z.ZodEnum<{
2652
+ primary: "primary";
2653
+ subagent: "subagent";
2654
+ all: "all";
2655
+ }>>;
2656
+ color: z.ZodOptional<z.ZodString>;
2657
+ permission: z.ZodOptional<z.ZodObject<{
2658
+ edit: z.ZodOptional<z.ZodEnum<{
2659
+ allow: "allow";
2660
+ deny: "deny";
2661
+ ask: "ask";
2662
+ }>>;
2663
+ bash: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
2664
+ allow: "allow";
2665
+ deny: "deny";
2666
+ ask: "ask";
2667
+ }>, z.ZodRecord<z.ZodString, z.ZodEnum<{
2668
+ allow: "allow";
2669
+ deny: "deny";
2670
+ ask: "ask";
2671
+ }>>]>>;
2672
+ webfetch: z.ZodOptional<z.ZodEnum<{
2673
+ allow: "allow";
2674
+ deny: "deny";
2675
+ ask: "ask";
2676
+ }>>;
2677
+ task: z.ZodOptional<z.ZodEnum<{
2678
+ allow: "allow";
2679
+ deny: "deny";
2680
+ ask: "ask";
2681
+ }>>;
2682
+ doom_loop: z.ZodOptional<z.ZodEnum<{
2683
+ allow: "allow";
2684
+ deny: "deny";
2685
+ ask: "ask";
2686
+ }>>;
2687
+ external_directory: z.ZodOptional<z.ZodEnum<{
2688
+ allow: "allow";
2689
+ deny: "deny";
2690
+ ask: "ask";
2691
+ }>>;
2692
+ }, z.core.$strip>>;
2693
+ maxTokens: z.ZodOptional<z.ZodNumber>;
2694
+ thinking: z.ZodOptional<z.ZodObject<{
2695
+ type: z.ZodEnum<{
2696
+ enabled: "enabled";
2697
+ disabled: "disabled";
2698
+ }>;
2699
+ budgetTokens: z.ZodOptional<z.ZodNumber>;
2700
+ }, z.core.$strip>>;
2701
+ reasoningEffort: z.ZodOptional<z.ZodEnum<{
2702
+ none: "none";
2703
+ minimal: "minimal";
2704
+ low: "low";
2705
+ medium: "medium";
2706
+ high: "high";
2707
+ xhigh: "xhigh";
2708
+ }>>;
2709
+ textVerbosity: z.ZodOptional<z.ZodEnum<{
2710
+ low: "low";
2711
+ medium: "medium";
2712
+ high: "high";
2713
+ }>>;
2714
+ providerOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
2715
+ ultrawork: z.ZodOptional<z.ZodObject<{
2716
+ model: z.ZodOptional<z.ZodString>;
2717
+ variant: z.ZodOptional<z.ZodString>;
2718
+ }, z.core.$strip>>;
2719
+ compaction: z.ZodOptional<z.ZodObject<{
2720
+ model: z.ZodOptional<z.ZodString>;
2721
+ variant: z.ZodOptional<z.ZodString>;
2722
+ }, z.core.$strip>>;
2723
+ }, z.core.$strip>>;
2467
2724
  logician: z.ZodOptional<z.ZodObject<{
2468
2725
  model: z.ZodOptional<z.ZodString>;
2469
2726
  fallback_models: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>, z.ZodArray<z.ZodObject<{
@@ -3902,6 +4159,15 @@ export declare const HiaiOpenCodeConfigSchema: z.ZodObject<{
3902
4159
  "allowed-tools": z.ZodOptional<z.ZodArray<z.ZodString>>;
3903
4160
  disable: z.ZodOptional<z.ZodBoolean>;
3904
4161
  }, z.core.$strip>]>>>]>>;
4162
+ skill_discovery: z.ZodOptional<z.ZodObject<{
4163
+ config_sources: z.ZodDefault<z.ZodBoolean>;
4164
+ project_opencode: z.ZodDefault<z.ZodBoolean>;
4165
+ global_opencode: z.ZodDefault<z.ZodBoolean>;
4166
+ project_claude: z.ZodDefault<z.ZodBoolean>;
4167
+ global_claude: z.ZodDefault<z.ZodBoolean>;
4168
+ project_agents: z.ZodDefault<z.ZodBoolean>;
4169
+ global_agents: z.ZodDefault<z.ZodBoolean>;
4170
+ }, z.core.$strip>>;
3905
4171
  ralph_loop: z.ZodOptional<z.ZodObject<{
3906
4172
  enabled: z.ZodDefault<z.ZodBoolean>;
3907
4173
  default_max_iterations: z.ZodDefault<z.ZodNumber>;
@@ -3955,6 +4221,7 @@ export declare const HiaiOpenCodeConfigSchema: z.ZodObject<{
3955
4221
  openrouter: z.ZodOptional<z.ZodString>;
3956
4222
  stitch: z.ZodOptional<z.ZodString>;
3957
4223
  firecrawl: z.ZodOptional<z.ZodString>;
4224
+ context7: z.ZodOptional<z.ZodString>;
3958
4225
  }, z.core.$strip>>;
3959
4226
  git_master: z.ZodDefault<z.ZodObject<{
3960
4227
  commit_footer: z.ZodDefault<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
@@ -0,0 +1,11 @@
1
+ import { z } from "zod";
2
+ export declare const SkillDiscoveryConfigSchema: z.ZodObject<{
3
+ config_sources: z.ZodDefault<z.ZodBoolean>;
4
+ project_opencode: z.ZodDefault<z.ZodBoolean>;
5
+ global_opencode: z.ZodDefault<z.ZodBoolean>;
6
+ project_claude: z.ZodDefault<z.ZodBoolean>;
7
+ global_claude: z.ZodDefault<z.ZodBoolean>;
8
+ project_agents: z.ZodDefault<z.ZodBoolean>;
9
+ global_agents: z.ZodDefault<z.ZodBoolean>;
10
+ }, z.core.$strip>;
11
+ export type SkillDiscoveryConfig = z.infer<typeof SkillDiscoveryConfigSchema>;
@@ -5,9 +5,26 @@ export interface AgentConfig {
5
5
  model: string;
6
6
  description?: string;
7
7
  }
8
+ export type ModelRecommendation = "xhigh" | "high" | "middle" | "fast" | "vision" | "writing" | "design";
9
+ export type ModelSlotConfig = string | {
10
+ model: string;
11
+ recommended?: ModelRecommendation;
12
+ };
13
+ export interface ModelSlotsConfig {
14
+ bob?: ModelSlotConfig;
15
+ coder?: ModelSlotConfig;
16
+ strategist?: ModelSlotConfig;
17
+ guard?: ModelSlotConfig;
18
+ critic?: ModelSlotConfig;
19
+ designer?: ModelSlotConfig;
20
+ researcher?: ModelSlotConfig;
21
+ manager?: ModelSlotConfig;
22
+ brainstormer?: ModelSlotConfig;
23
+ vision?: ModelSlotConfig;
24
+ }
8
25
  export declare const CANONICAL_AGENT_NAMES: readonly ["bob", "guard", "strategist", "critic", "coder", "designer", "sub", "researcher", "multimodal", "quality-guardian", "platform-manager", "brainstormer", "agent-skills"];
9
26
  export type CanonicalAgentName = (typeof CANONICAL_AGENT_NAMES)[number];
10
- export declare const LEGACY_AGENT_ALIAS_NAMES: readonly ["general", "zoe", "build", "pre-plan", "logician", "librarian", "explore", "ui", "code-reviewer", "systematic-debugger", "mindmodel", "ledger-creator", "bootstrapper", "project-initializer"];
27
+ export declare const LEGACY_AGENT_ALIAS_NAMES: readonly ["general", "zoe", "build", "pre-plan", "manager", "vision", "logician", "librarian", "explore", "ui", "code-reviewer", "systematic-debugger", "mindmodel", "ledger-creator", "bootstrapper", "project-initializer"];
11
28
  export type LegacyAgentAliasName = (typeof LEGACY_AGENT_ALIAS_NAMES)[number];
12
29
  export declare const LEGACY_AGENT_ALIAS_TO_CANONICAL: Record<LegacyAgentAliasName, CanonicalAgentName>;
13
30
  export type KnownAgentName = CanonicalAgentName | LegacyAgentAliasName;
@@ -57,8 +74,9 @@ export interface McpServerConfig {
57
74
  environment?: Record<string, string>;
58
75
  }
59
76
  export interface LspServerConfig {
60
- command: string[];
61
- extensions: string[];
77
+ enabled?: boolean;
78
+ command?: string[];
79
+ extensions?: string[];
62
80
  initialization?: Record<string, unknown>;
63
81
  }
64
82
  export interface Subtask2Config {
@@ -69,6 +87,15 @@ export interface SkillsConfig {
69
87
  enabled?: boolean;
70
88
  disabled?: string[];
71
89
  }
90
+ export interface SkillDiscoveryConfig {
91
+ config_sources?: boolean;
92
+ project_opencode?: boolean;
93
+ global_opencode?: boolean;
94
+ project_claude?: boolean;
95
+ global_claude?: boolean;
96
+ project_agents?: boolean;
97
+ global_agents?: boolean;
98
+ }
72
99
  export interface PermissionsConfig {
73
100
  read?: Record<string, string>;
74
101
  edit?: Record<string, string>;
@@ -81,6 +108,7 @@ export interface AuthKeys {
81
108
  openrouter?: string;
82
109
  stitch?: string;
83
110
  firecrawl?: string;
111
+ context7?: string;
84
112
  }
85
113
  export interface OllamaConfig {
86
114
  enabled: boolean;
@@ -90,6 +118,7 @@ export interface OllamaConfig {
90
118
  }
91
119
  export interface HiaiOpencodeConfig {
92
120
  $schema?: string;
121
+ models?: ModelSlotsConfig;
93
122
  agents?: AgentConfigMap;
94
123
  agentRequirements?: AgentRequirementMap;
95
124
  categories?: Record<string, CategoryConfig>;
@@ -99,6 +128,7 @@ export interface HiaiOpencodeConfig {
99
128
  lsp?: Record<string, LspServerConfig>;
100
129
  subtask2?: Subtask2Config;
101
130
  skills?: SkillsConfig;
131
+ skill_discovery?: SkillDiscoveryConfig;
102
132
  permissions?: PermissionsConfig;
103
133
  auth?: AuthKeys;
104
134
  ollama?: OllamaConfig;