oh-my-opencode 5.1.54 → 5.1.56

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 (89) hide show
  1. package/dist/cli/index.js +29 -18
  2. package/dist/cli-node/index.js +29 -18
  3. package/dist/config/schema/agent-overrides.d.ts +64 -0
  4. package/dist/config/schema/categories.d.ts +8 -0
  5. package/dist/config/schema/oh-my-opencode-config.d.ts +64 -0
  6. package/dist/index.js +120 -48
  7. package/dist/oh-my-opencode.schema.json +112 -0
  8. package/dist/skills/browser/runtime/omowright/manifest.json +1 -1
  9. package/dist/skills/programming/SKILL.md +2 -0
  10. package/dist/skills/programming/references/testing/README.md +2 -2
  11. package/dist/skills/programming/scripts/typescript/check-test-junk-rules.ts +140 -0
  12. package/dist/skills/programming/scripts/typescript/check-test-junk.test.ts +125 -0
  13. package/dist/skills/programming/scripts/typescript/check-test-junk.ts +148 -0
  14. package/dist/skills/programming/scripts/typescript/mutation-proof.test.ts +43 -0
  15. package/dist/skills/programming/scripts/typescript/mutation-proof.ts +179 -0
  16. package/dist/skills/remove-ai-slops/SKILL.md +32 -20
  17. package/dist/skills/ulw-research/scripts/source-commands.mjs +3 -1
  18. package/dist/skills/ulw-research/scripts/source-integrity.test.ts +39 -2
  19. package/dist/tools/delegate-task/models-distribution.d.ts +1 -0
  20. package/dist/tui.js +28 -17
  21. package/package.json +16 -14
  22. package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
  23. package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +2 -0
  24. package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
  25. package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
  26. package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
  27. package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
  28. package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
  29. package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
  30. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
  31. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
  32. package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +2 -2
  33. package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
  34. package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
  35. package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
  36. package/packages/omo-codex/plugin/components/rules/package.json +1 -1
  37. package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
  38. package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
  39. package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
  40. package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
  41. package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
  42. package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
  43. package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +1 -1
  44. package/packages/omo-codex/plugin/components/ulw-execute-continuation/package.json +1 -1
  45. package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +5 -5
  46. package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
  47. package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
  48. package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
  49. package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
  50. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
  51. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
  52. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
  53. package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
  54. package/packages/omo-codex/plugin/hooks/post-tool-use-recording-spawn-admission.json +1 -1
  55. package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
  56. package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
  57. package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
  58. package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
  59. package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
  60. package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
  61. package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
  62. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-execute-continuation.json +1 -1
  63. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
  64. package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
  65. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
  66. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
  67. package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
  68. package/packages/omo-codex/plugin/package-lock.json +12 -12
  69. package/packages/omo-codex/plugin/package.json +1 -1
  70. package/packages/omo-codex/plugin/skills/browser/runtime/omowright/manifest.json +1 -1
  71. package/packages/omo-codex/plugin/skills/programming/SKILL.md +2 -0
  72. package/packages/omo-codex/plugin/skills/programming/references/testing/README.md +2 -2
  73. package/packages/omo-codex/plugin/skills/programming/scripts/typescript/check-test-junk-rules.ts +140 -0
  74. package/packages/omo-codex/plugin/skills/programming/scripts/typescript/check-test-junk.ts +148 -0
  75. package/packages/omo-codex/plugin/skills/programming/scripts/typescript/mutation-proof.ts +179 -0
  76. package/packages/omo-codex/plugin/skills/remove-ai-slops/SKILL.md +32 -20
  77. package/packages/omo-codex/plugin/skills/ulw-research/scripts/source-commands.mjs +3 -1
  78. package/packages/omo-codex/scripts/install-dist/install-local.mjs +4 -2
  79. package/packages/shared-skills/skills/browser/runtime/omowright/manifest.json +1 -1
  80. package/packages/shared-skills/skills/programming/SKILL.md +2 -0
  81. package/packages/shared-skills/skills/programming/references/testing/README.md +2 -2
  82. package/packages/shared-skills/skills/programming/scripts/typescript/check-test-junk-rules.ts +140 -0
  83. package/packages/shared-skills/skills/programming/scripts/typescript/check-test-junk.test.ts +125 -0
  84. package/packages/shared-skills/skills/programming/scripts/typescript/check-test-junk.ts +148 -0
  85. package/packages/shared-skills/skills/programming/scripts/typescript/mutation-proof.test.ts +43 -0
  86. package/packages/shared-skills/skills/programming/scripts/typescript/mutation-proof.ts +179 -0
  87. package/packages/shared-skills/skills/remove-ai-slops/SKILL.md +32 -20
  88. package/packages/shared-skills/skills/ulw-research/scripts/source-commands.mjs +3 -1
  89. package/packages/shared-skills/skills/ulw-research/scripts/source-integrity.test.ts +39 -2
@@ -59,6 +59,10 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
59
59
  budgetTokens: z.ZodOptional<z.ZodNumber>;
60
60
  }, z.core.$strip>>;
61
61
  }, z.core.$strip>]>>>;
62
+ models_distribution: z.ZodOptional<z.ZodEnum<{
63
+ round_robin: "round_robin";
64
+ sequential: "sequential";
65
+ }>>;
62
66
  fallback_models: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>, z.ZodArray<z.ZodObject<{
63
67
  model: z.ZodString;
64
68
  reasoning: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
@@ -278,6 +282,10 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
278
282
  budgetTokens: z.ZodOptional<z.ZodNumber>;
279
283
  }, z.core.$strip>>;
280
284
  }, z.core.$strip>]>>>;
285
+ models_distribution: z.ZodOptional<z.ZodEnum<{
286
+ round_robin: "round_robin";
287
+ sequential: "sequential";
288
+ }>>;
281
289
  fallback_models: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>, z.ZodArray<z.ZodObject<{
282
290
  model: z.ZodString;
283
291
  reasoning: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
@@ -497,6 +505,10 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
497
505
  budgetTokens: z.ZodOptional<z.ZodNumber>;
498
506
  }, z.core.$strip>>;
499
507
  }, z.core.$strip>]>>>;
508
+ models_distribution: z.ZodOptional<z.ZodEnum<{
509
+ round_robin: "round_robin";
510
+ sequential: "sequential";
511
+ }>>;
500
512
  fallback_models: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>, z.ZodArray<z.ZodObject<{
501
513
  model: z.ZodString;
502
514
  reasoning: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
@@ -716,6 +728,10 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
716
728
  budgetTokens: z.ZodOptional<z.ZodNumber>;
717
729
  }, z.core.$strip>>;
718
730
  }, z.core.$strip>]>>>;
731
+ models_distribution: z.ZodOptional<z.ZodEnum<{
732
+ round_robin: "round_robin";
733
+ sequential: "sequential";
734
+ }>>;
719
735
  fallback_models: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>, z.ZodArray<z.ZodObject<{
720
736
  model: z.ZodString;
721
737
  reasoning: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
@@ -936,6 +952,10 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
936
952
  budgetTokens: z.ZodOptional<z.ZodNumber>;
937
953
  }, z.core.$strip>>;
938
954
  }, z.core.$strip>]>>>;
955
+ models_distribution: z.ZodOptional<z.ZodEnum<{
956
+ round_robin: "round_robin";
957
+ sequential: "sequential";
958
+ }>>;
939
959
  fallback_models: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>, z.ZodArray<z.ZodObject<{
940
960
  model: z.ZodString;
941
961
  reasoning: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
@@ -1155,6 +1175,10 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
1155
1175
  budgetTokens: z.ZodOptional<z.ZodNumber>;
1156
1176
  }, z.core.$strip>>;
1157
1177
  }, z.core.$strip>]>>>;
1178
+ models_distribution: z.ZodOptional<z.ZodEnum<{
1179
+ round_robin: "round_robin";
1180
+ sequential: "sequential";
1181
+ }>>;
1158
1182
  fallback_models: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>, z.ZodArray<z.ZodObject<{
1159
1183
  model: z.ZodString;
1160
1184
  reasoning: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
@@ -1374,6 +1398,10 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
1374
1398
  budgetTokens: z.ZodOptional<z.ZodNumber>;
1375
1399
  }, z.core.$strip>>;
1376
1400
  }, z.core.$strip>]>>>;
1401
+ models_distribution: z.ZodOptional<z.ZodEnum<{
1402
+ round_robin: "round_robin";
1403
+ sequential: "sequential";
1404
+ }>>;
1377
1405
  fallback_models: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>, z.ZodArray<z.ZodObject<{
1378
1406
  model: z.ZodString;
1379
1407
  reasoning: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
@@ -1593,6 +1621,10 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
1593
1621
  budgetTokens: z.ZodOptional<z.ZodNumber>;
1594
1622
  }, z.core.$strip>>;
1595
1623
  }, z.core.$strip>]>>>;
1624
+ models_distribution: z.ZodOptional<z.ZodEnum<{
1625
+ round_robin: "round_robin";
1626
+ sequential: "sequential";
1627
+ }>>;
1596
1628
  fallback_models: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>, z.ZodArray<z.ZodObject<{
1597
1629
  model: z.ZodString;
1598
1630
  reasoning: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
@@ -1812,6 +1844,10 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
1812
1844
  budgetTokens: z.ZodOptional<z.ZodNumber>;
1813
1845
  }, z.core.$strip>>;
1814
1846
  }, z.core.$strip>]>>>;
1847
+ models_distribution: z.ZodOptional<z.ZodEnum<{
1848
+ round_robin: "round_robin";
1849
+ sequential: "sequential";
1850
+ }>>;
1815
1851
  fallback_models: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>, z.ZodArray<z.ZodObject<{
1816
1852
  model: z.ZodString;
1817
1853
  reasoning: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
@@ -2031,6 +2067,10 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
2031
2067
  budgetTokens: z.ZodOptional<z.ZodNumber>;
2032
2068
  }, z.core.$strip>>;
2033
2069
  }, z.core.$strip>]>>>;
2070
+ models_distribution: z.ZodOptional<z.ZodEnum<{
2071
+ round_robin: "round_robin";
2072
+ sequential: "sequential";
2073
+ }>>;
2034
2074
  fallback_models: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>, z.ZodArray<z.ZodObject<{
2035
2075
  model: z.ZodString;
2036
2076
  reasoning: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
@@ -2250,6 +2290,10 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
2250
2290
  budgetTokens: z.ZodOptional<z.ZodNumber>;
2251
2291
  }, z.core.$strip>>;
2252
2292
  }, z.core.$strip>]>>>;
2293
+ models_distribution: z.ZodOptional<z.ZodEnum<{
2294
+ round_robin: "round_robin";
2295
+ sequential: "sequential";
2296
+ }>>;
2253
2297
  fallback_models: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>, z.ZodArray<z.ZodObject<{
2254
2298
  model: z.ZodString;
2255
2299
  reasoning: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
@@ -2469,6 +2513,10 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
2469
2513
  budgetTokens: z.ZodOptional<z.ZodNumber>;
2470
2514
  }, z.core.$strip>>;
2471
2515
  }, z.core.$strip>]>>>;
2516
+ models_distribution: z.ZodOptional<z.ZodEnum<{
2517
+ round_robin: "round_robin";
2518
+ sequential: "sequential";
2519
+ }>>;
2472
2520
  fallback_models: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>, z.ZodArray<z.ZodObject<{
2473
2521
  model: z.ZodString;
2474
2522
  reasoning: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
@@ -2688,6 +2736,10 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
2688
2736
  budgetTokens: z.ZodOptional<z.ZodNumber>;
2689
2737
  }, z.core.$strip>>;
2690
2738
  }, z.core.$strip>]>>>;
2739
+ models_distribution: z.ZodOptional<z.ZodEnum<{
2740
+ round_robin: "round_robin";
2741
+ sequential: "sequential";
2742
+ }>>;
2691
2743
  fallback_models: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>, z.ZodArray<z.ZodObject<{
2692
2744
  model: z.ZodString;
2693
2745
  reasoning: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
@@ -2907,6 +2959,10 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
2907
2959
  budgetTokens: z.ZodOptional<z.ZodNumber>;
2908
2960
  }, z.core.$strip>>;
2909
2961
  }, z.core.$strip>]>>>;
2962
+ models_distribution: z.ZodOptional<z.ZodEnum<{
2963
+ round_robin: "round_robin";
2964
+ sequential: "sequential";
2965
+ }>>;
2910
2966
  fallback_models: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>, z.ZodArray<z.ZodObject<{
2911
2967
  model: z.ZodString;
2912
2968
  reasoning: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
@@ -3126,6 +3182,10 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
3126
3182
  budgetTokens: z.ZodOptional<z.ZodNumber>;
3127
3183
  }, z.core.$strip>>;
3128
3184
  }, z.core.$strip>]>>>;
3185
+ models_distribution: z.ZodOptional<z.ZodEnum<{
3186
+ round_robin: "round_robin";
3187
+ sequential: "sequential";
3188
+ }>>;
3129
3189
  fallback_models: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>, z.ZodArray<z.ZodObject<{
3130
3190
  model: z.ZodString;
3131
3191
  reasoning: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
@@ -3346,6 +3406,10 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
3346
3406
  budgetTokens: z.ZodOptional<z.ZodNumber>;
3347
3407
  }, z.core.$strip>>;
3348
3408
  }, z.core.$strip>]>>>;
3409
+ models_distribution: z.ZodOptional<z.ZodEnum<{
3410
+ round_robin: "round_robin";
3411
+ sequential: "sequential";
3412
+ }>>;
3349
3413
  fallback_models: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>, z.ZodArray<z.ZodObject<{
3350
3414
  model: z.ZodString;
3351
3415
  reasoning: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
package/dist/index.js CHANGED
@@ -94726,6 +94726,7 @@ var OmoAgentDefInputSchema = z3.object({
94726
94726
  prompt: z3.string().optional(),
94727
94727
  model: z3.string().optional(),
94728
94728
  models: z3.array(OmoAgentModelEntrySchema).optional(),
94729
+ models_distribution: z3.enum(["sequential", "round_robin"]).optional(),
94729
94730
  reasoning: OmoReasoningSchema.optional(),
94730
94731
  variant: z3.string().optional(),
94731
94732
  reasoningEffort: OmoReasoningEffortSchema.optional(),
@@ -94753,6 +94754,7 @@ var OmoCategoryConfigObjectSchema = z4.object({
94753
94754
  description: z4.string().optional(),
94754
94755
  model: z4.string().optional(),
94755
94756
  models: z4.array(z4.union([z4.string(), OmoFallbackModelObjectSchema])).optional(),
94757
+ models_distribution: z4.enum(["sequential", "round_robin"]).optional(),
94756
94758
  reasoning: OmoReasoningSchema.optional(),
94757
94759
  temperature: z4.number().min(0).max(2).optional(),
94758
94760
  top_p: z4.number().min(0).max(1).optional(),
@@ -96465,6 +96467,27 @@ function resolveModelReferences(view) {
96465
96467
  };
96466
96468
  }
96467
96469
 
96470
+ // packages/omo-config-core/src/models/models-distribution.ts
96471
+ function createModelDistributor() {
96472
+ const cursors = new Map;
96473
+ return (target, models, distribution) => {
96474
+ if (distribution !== "round_robin" || models.length === 0)
96475
+ return models;
96476
+ const seen = new Set;
96477
+ const unique = models.filter((entry) => {
96478
+ const model = typeof entry === "string" ? entry : entry.model;
96479
+ const key = splitReasoningSuffix2(model, { allowMaxSuffix: true }).base.replace(/\([^()]+\)\s*$/, "").replace(/\s+[a-z][a-z0-9_-]*$/i, "").trim();
96480
+ if (seen.has(key))
96481
+ return false;
96482
+ seen.add(key);
96483
+ return true;
96484
+ });
96485
+ const start = (cursors.get(target) ?? 0) % unique.length;
96486
+ cursors.set(target, (start + 1) % unique.length);
96487
+ return [...unique.slice(start), ...unique.slice(0, start)];
96488
+ };
96489
+ }
96490
+
96468
96491
  // packages/omo-config-core/src/writer/types.ts
96469
96492
  import {
96470
96493
  copyFileSync,
@@ -97777,7 +97800,7 @@ init_src();
97777
97800
  // package.json
97778
97801
  var package_default = {
97779
97802
  name: "oh-my-opencode",
97780
- version: "5.1.54",
97803
+ version: "5.1.56",
97781
97804
  description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
97782
97805
  main: "./dist/index.js",
97783
97806
  types: "dist/index.d.ts",
@@ -97801,6 +97824,7 @@ var package_default = {
97801
97824
  "packages/openclaw-core",
97802
97825
  "packages/boulder-state",
97803
97826
  "packages/memory-core",
97827
+ "packages/device-service-core",
97804
97828
  "packages/isolation-core",
97805
97829
  "packages/telemetry-core",
97806
97830
  "packages/claude-code-compat-core",
@@ -97921,7 +97945,7 @@ var package_default = {
97921
97945
  "check:copy": "bun script/check-copy.ts",
97922
97946
  typecheck: "bun run check:copy && bun check --no-script --all -p tsconfig.json && bun run typecheck:script && bun run typecheck:packages && bun run typecheck:skill-scripts",
97923
97947
  "typecheck:skill-scripts": "bun check --no-script --all -p packages/shared-skills/skills/frontend/scripts/detect/tsconfig.json",
97924
- "typecheck:packages": "bun check --no-script --all -p packages/rules-engine/tsconfig.json && bun check --no-script --all -p packages/delegate-core/tsconfig.json && bun check --no-script --all -p packages/mcp-stdio-core/tsconfig.json && bun check --no-script --all -p packages/mcp-client-core/tsconfig.json && bun check --no-script --all -p packages/git-bash-mcp/tsconfig.json && bun check --no-script --all -p packages/ast-grep-mcp/tsconfig.json && bun check --no-script --all -p packages/lsp-core/tsconfig.json && bun check --no-script --all -p packages/utils/tsconfig.json && bun check --no-script --all -p packages/model-core/tsconfig.json && bun check --no-script --all -p packages/omo-config-core/tsconfig.json && bun check --no-script --all -p packages/prompts-core/tsconfig.json && bun check --no-script --all -p packages/comment-checker-core/tsconfig.json && bun check --no-script --all -p packages/hashline-core/tsconfig.json && bun check --no-script --all -p packages/tmux-core/tsconfig.json && bun check --no-script --all -p packages/team-core/tsconfig.json && bun check --no-script --all -p packages/openclaw-core/tsconfig.json && bun check --no-script --all -p packages/boulder-state/tsconfig.json && bun check --no-script --all -p packages/isolation-core/tsconfig.json && bun check --no-script --all -p packages/memory-core/tsconfig.json && bun check --no-script --all -p packages/telemetry-core/tsconfig.json && bun check --no-script --all -p packages/claude-code-compat-core/tsconfig.json && bun check --no-script --all -p packages/skills-loader-core/tsconfig.json && bun check --no-script --all -p packages/agents-md-core/tsconfig.json && bun check --no-script --all -p packages/omo-codex/plugin/shared/tsconfig.json && bun check --no-script --all -p packages/omo-codex/tsconfig.json && bun check --no-script --all -p packages/omo-senpi/tsconfig.json && bun check --no-script --all -p packages/senpi-task/tsconfig.json && bun check --no-script --all -p packages/omo-opencode/tsconfig.json && bun check --no-script --all -p packages/omo-native/tsconfig.json && bun check --no-script --all -p packages/senpi-desktop-protocol/tsconfig.json && bun check --no-script --all -p packages/senpi-desktop-engine/tsconfig.json && bun check --no-script --all -p packages/senpi-desktop-prelude/tsconfig.json && bun check --no-script --all -p packages/senpi-desktop-service/tsconfig.json && bun check --no-script --all -p packages/senpi-desktop-tool/tsconfig.json",
97948
+ "typecheck:packages": "bun check --no-script --all -p packages/rules-engine/tsconfig.json && bun check --no-script --all -p packages/delegate-core/tsconfig.json && bun check --no-script --all -p packages/mcp-stdio-core/tsconfig.json && bun check --no-script --all -p packages/mcp-client-core/tsconfig.json && bun check --no-script --all -p packages/git-bash-mcp/tsconfig.json && bun check --no-script --all -p packages/ast-grep-mcp/tsconfig.json && bun check --no-script --all -p packages/lsp-core/tsconfig.json && bun check --no-script --all -p packages/utils/tsconfig.json && bun check --no-script --all -p packages/device-service-core/tsconfig.json && bun check --no-script --all -p packages/model-core/tsconfig.json && bun check --no-script --all -p packages/omo-config-core/tsconfig.json && bun check --no-script --all -p packages/prompts-core/tsconfig.json && bun check --no-script --all -p packages/comment-checker-core/tsconfig.json && bun check --no-script --all -p packages/hashline-core/tsconfig.json && bun check --no-script --all -p packages/tmux-core/tsconfig.json && bun check --no-script --all -p packages/team-core/tsconfig.json && bun check --no-script --all -p packages/openclaw-core/tsconfig.json && bun check --no-script --all -p packages/boulder-state/tsconfig.json && bun check --no-script --all -p packages/isolation-core/tsconfig.json && bun check --no-script --all -p packages/memory-core/tsconfig.json && bun check --no-script --all -p packages/telemetry-core/tsconfig.json && bun check --no-script --all -p packages/claude-code-compat-core/tsconfig.json && bun check --no-script --all -p packages/skills-loader-core/tsconfig.json && bun check --no-script --all -p packages/agents-md-core/tsconfig.json && bun check --no-script --all -p packages/omo-codex/plugin/shared/tsconfig.json && bun check --no-script --all -p packages/omo-codex/tsconfig.json && bun check --no-script --all -p packages/omo-senpi/tsconfig.json && bun check --no-script --all -p packages/senpi-task/tsconfig.json && bun check --no-script --all -p packages/omo-opencode/tsconfig.json && bun check --no-script --all -p packages/omo-native/tsconfig.json && bun check --no-script --all -p packages/senpi-desktop-protocol/tsconfig.json && bun check --no-script --all -p packages/senpi-desktop-engine/tsconfig.json && bun check --no-script --all -p packages/senpi-desktop-prelude/tsconfig.json && bun check --no-script --all -p packages/senpi-desktop-service/tsconfig.json && bun check --no-script --all -p packages/senpi-desktop-tool/tsconfig.json",
97925
97949
  "typecheck:script": "bun check --no-script --all -p script/tsconfig.json",
97926
97950
  test: "bun test --timeout 20000",
97927
97951
  "changelog:section": "bun script/changelog-section.ts",
@@ -97968,6 +97992,7 @@ var package_default = {
97968
97992
  "@oh-my-opencode/agents-md-core": "workspace:*",
97969
97993
  "@oh-my-opencode/ast-grep-mcp": "workspace:*",
97970
97994
  "@oh-my-opencode/boulder-state": "workspace:*",
97995
+ "@oh-my-opencode/device-service-core": "workspace:*",
97971
97996
  "@oh-my-opencode/claude-code-compat-core": "workspace:*",
97972
97997
  "@oh-my-opencode/comment-checker-core": "workspace:*",
97973
97998
  "@oh-my-opencode/delegate-core": "workspace:*",
@@ -98027,18 +98052,18 @@ var package_default = {
98027
98052
  typescript: "^7.0.2"
98028
98053
  },
98029
98054
  optionalDependencies: {
98030
- "oh-my-opencode-darwin-arm64": "5.1.54",
98031
- "oh-my-opencode-darwin-x64": "5.1.54",
98032
- "oh-my-opencode-darwin-x64-baseline": "5.1.54",
98033
- "oh-my-opencode-linux-arm64": "5.1.54",
98034
- "oh-my-opencode-linux-arm64-musl": "5.1.54",
98035
- "oh-my-opencode-linux-x64": "5.1.54",
98036
- "oh-my-opencode-linux-x64-baseline": "5.1.54",
98037
- "oh-my-opencode-linux-x64-musl": "5.1.54",
98038
- "oh-my-opencode-linux-x64-musl-baseline": "5.1.54",
98039
- "oh-my-opencode-windows-arm64": "5.1.54",
98040
- "oh-my-opencode-windows-x64": "5.1.54",
98041
- "oh-my-opencode-windows-x64-baseline": "5.1.54"
98055
+ "oh-my-opencode-darwin-arm64": "5.1.56",
98056
+ "oh-my-opencode-darwin-x64": "5.1.56",
98057
+ "oh-my-opencode-darwin-x64-baseline": "5.1.56",
98058
+ "oh-my-opencode-linux-arm64": "5.1.56",
98059
+ "oh-my-opencode-linux-arm64-musl": "5.1.56",
98060
+ "oh-my-opencode-linux-x64": "5.1.56",
98061
+ "oh-my-opencode-linux-x64-baseline": "5.1.56",
98062
+ "oh-my-opencode-linux-x64-musl": "5.1.56",
98063
+ "oh-my-opencode-linux-x64-musl-baseline": "5.1.56",
98064
+ "oh-my-opencode-windows-arm64": "5.1.56",
98065
+ "oh-my-opencode-windows-x64": "5.1.56",
98066
+ "oh-my-opencode-windows-x64-baseline": "5.1.56"
98042
98067
  },
98043
98068
  overrides: {
98044
98069
  hono: "^4.13.8",
@@ -99160,11 +99185,11 @@ function recordFields(value, fields) {
99160
99185
  }
99161
99186
  function modelInput(view) {
99162
99187
  const agents = isPlainRecord(view.agents) ? Object.fromEntries(Object.entries(view.agents).flatMap(([name, definition]) => {
99163
- const fields = recordFields(definition, ["description", "prompt", "model", "models", "variant", "reasoningEffort", "tools", "temperature", "disable"]);
99188
+ const fields = recordFields(definition, ["description", "prompt", "model", "models", "models_distribution", "variant", "reasoningEffort", "tools", "temperature", "disable"]);
99164
99189
  return fields === undefined ? [] : [[name, fields]];
99165
99190
  })) : undefined;
99166
99191
  const categories = isPlainRecord(view.categories) ? Object.fromEntries(Object.entries(view.categories).flatMap(([name, definition]) => {
99167
- const fields = recordFields(definition, ["description", "model", "fallback_models", "variant", "temperature", "top_p", "maxTokens", "thinking", "reasoningEffort", "textVerbosity", "tools", "prompt_append", "max_prompt_tokens", "is_unstable_agent", "disable"]);
99192
+ const fields = recordFields(definition, ["description", "model", "models", "models_distribution", "fallback_models", "variant", "temperature", "top_p", "maxTokens", "thinking", "reasoningEffort", "textVerbosity", "tools", "prompt_append", "max_prompt_tokens", "is_unstable_agent", "disable"]);
99168
99193
  return fields === undefined ? [] : [[name, fields]];
99169
99194
  })) : undefined;
99170
99195
  return {
@@ -99433,6 +99458,7 @@ var AgentPermissionSchema = z22.object({
99433
99458
  var AgentOverrideConfigSchema = z23.object({
99434
99459
  model: z23.string().optional(),
99435
99460
  models: z23.array(z23.union([z23.string(), FallbackModelObjectSchema])).optional(),
99461
+ models_distribution: z23.enum(["sequential", "round_robin"]).optional(),
99436
99462
  fallback_models: FallbackModelsSchema.optional(),
99437
99463
  reasoning: OmoReasoningSchema.optional(),
99438
99464
  variant: z23.string().optional(),
@@ -99532,6 +99558,7 @@ var CategoryConfigSchema = z27.object({
99532
99558
  description: z27.string().optional(),
99533
99559
  model: z27.string().optional(),
99534
99560
  models: z27.array(z27.union([z27.string(), FallbackModelObjectSchema])).optional(),
99561
+ models_distribution: z27.enum(["sequential", "round_robin"]).optional(),
99535
99562
  fallback_models: FallbackModelsSchema.optional(),
99536
99563
  reasoning: OmoReasoningSchema.optional(),
99537
99564
  variant: z27.string().optional(),
@@ -100101,7 +100128,8 @@ function materializeAgentModelChains(config) {
100101
100128
  return [name, {
100102
100129
  ...rest,
100103
100130
  ...primarySettings,
100104
- fallback_models: fallbacks
100131
+ fallback_models: fallbacks,
100132
+ ...agent.models_distribution === "round_robin" ? { models: agent.models } : {}
100105
100133
  }];
100106
100134
  }));
100107
100135
  return changed ? { ...config, agents } : config;
@@ -112770,17 +112798,17 @@ function isOrchestratorAgent(agentName) {
112770
112798
  function createAgentUsageReminderHook(_ctx) {
112771
112799
  const sessionStates = new Map;
112772
112800
  function getOrCreateState(sessionID) {
112773
- if (!sessionStates.has(sessionID)) {
112774
- const persisted = loadAgentUsageState(sessionID);
112775
- const state = persisted ?? {
112776
- sessionID,
112777
- agentUsed: false,
112778
- reminderCount: 0,
112779
- updatedAt: Date.now()
112780
- };
112781
- sessionStates.set(sessionID, state);
112782
- }
112783
- return sessionStates.get(sessionID);
112801
+ const cached = sessionStates.get(sessionID);
112802
+ if (cached !== undefined)
112803
+ return cached;
112804
+ const state = loadAgentUsageState(sessionID) ?? {
112805
+ sessionID,
112806
+ agentUsed: false,
112807
+ reminderCount: 0,
112808
+ updatedAt: Date.now()
112809
+ };
112810
+ sessionStates.set(sessionID, state);
112811
+ return state;
112784
112812
  }
112785
112813
  function markAgentUsed(sessionID) {
112786
112814
  const state = getOrCreateState(sessionID);
@@ -112816,9 +112844,8 @@ function createAgentUsageReminderHook(_ctx) {
112816
112844
  saveAgentUsageState(state);
112817
112845
  };
112818
112846
  const eventHandler = async ({ event }) => {
112819
- const props = event.properties;
112820
112847
  if (event.type === "session.deleted") {
112821
- const sessionID = resolveSessionEventID(props);
112848
+ const sessionID = resolveSessionEventID(event.properties);
112822
112849
  if (sessionID) {
112823
112850
  resetState(sessionID);
112824
112851
  }
@@ -122497,7 +122524,7 @@ var reviewWorkSkill = {
122497
122524
  // packages/skills-loader-core/src/features/builtin-skills/skills/remove-ai-slops.ts
122498
122525
  var removeAiSlopsSkill = {
122499
122526
  name: "remove-ai-slops",
122500
- description: "Removes AI-generated code smells from branch changes or an explicit file list behind regression tests. Use when the user asks to clean up, deslop, or remove AI-slop patterns from recent changes.",
122527
+ description: "Removes AI-generated code smells from branch changes or an explicit file list behind regression tests, including junk tests (prose pins, source greps, copied inventories, mock echoes), each proven by its class's rule before a cut. Use when the user asks to clean up, deslop, remove AI-slop patterns, or prune tests from recent changes.",
122501
122528
  template: loadSharedSkillTemplate("remove-ai-slops")
122502
122529
  };
122503
122530
  // packages/skills-loader-core/src/features/builtin-skills/skills/init-deep.ts
@@ -131978,6 +132005,15 @@ function getRawFallbackModels(sessionID, agent, pluginConfig) {
131978
132005
  }
131979
132006
  function getRawFallbackModelsForSession(sessionID, agent, pluginConfig) {
131980
132007
  const sessionCategory = SessionCategoryRegistry.get(sessionID);
132008
+ const categoryConfig = sessionCategory ? pluginConfig.categories?.[sessionCategory] : undefined;
132009
+ const agentKey = agent ? getAgentConfigKey(agent) : undefined;
132010
+ const agentConfig = agentKey ? pluginConfig.agents?.[agentKey] ?? Object.entries(pluginConfig.agents ?? {}).find(([key]) => key.toLowerCase() === agentKey)?.[1] : undefined;
132011
+ const agentCategoryConfig = agentConfig?.category ? pluginConfig.categories?.[agentConfig.category] : undefined;
132012
+ const distribution = categoryConfig?.models_distribution ?? (agentConfig?.models?.length ? agentConfig.models_distribution : !agentConfig?.model ? agentCategoryConfig?.models_distribution : undefined);
132013
+ const bootstrap = distribution === "round_robin" ? getDelegatedChildSessionBootstrap(sessionID) : undefined;
132014
+ if (bootstrap) {
132015
+ return bootstrap.fallbackChain?.flatMap(({ providers, model, ...settings }) => providers.map((provider) => ({ ...settings, model: `${provider}/${model}` }))) ?? [];
132016
+ }
131981
132017
  if (sessionCategory && pluginConfig.categories?.[sessionCategory]) {
131982
132018
  const categoryConfig = pluginConfig.categories[sessionCategory];
131983
132019
  if (categoryConfig?.fallback_models) {
@@ -150617,6 +150653,9 @@ function applyFallbackEntrySettings(input) {
150617
150653
  };
150618
150654
  }
150619
150655
 
150656
+ // packages/omo-opencode/src/tools/delegate-task/models-distribution.ts
150657
+ var distributeTaskModels = createModelDistributor();
150658
+
150620
150659
  // packages/omo-opencode/src/tools/delegate-task/category-resolver.ts
150621
150660
  function getConfiguredModel(entry) {
150622
150661
  return typeof entry === "string" ? entry : entry?.model;
@@ -150647,7 +150686,8 @@ function categoryResolutionError(error) {
150647
150686
  };
150648
150687
  }
150649
150688
  async function resolveCategoryExecution(args, executorCtx, inheritedModel, systemDefaultModel) {
150650
- const { client, userCategories, sisyphusJuniorModel } = executorCtx;
150689
+ const { client, sisyphusJuniorModel } = executorCtx;
150690
+ let userCategories = executorCtx.userCategories;
150651
150691
  const enabledCategories = mergeCategories(userCategories);
150652
150692
  const requestedCategoryName = args.category;
150653
150693
  const categoryName = enabledCategories[requestedCategoryName] !== undefined ? requestedCategoryName : canonicalCategoryName(requestedCategoryName);
@@ -150656,6 +150696,16 @@ async function resolveCategoryExecution(args, executorCtx, inheritedModel, syste
150656
150696
  const allCategoryNames = Object.keys(enabledCategories).join(", ");
150657
150697
  return categoryResolutionError(`Unknown category: "${categoryName}". Available: ${allCategoryNames}`);
150658
150698
  }
150699
+ const configuredCategory = userCategories?.[categoryName];
150700
+ if (configuredCategory?.models_distribution === "round_robin" && configuredCategory.models?.length) {
150701
+ userCategories = {
150702
+ ...userCategories,
150703
+ [categoryName]: {
150704
+ ...configuredCategory,
150705
+ models: [...distributeTaskModels(`category:${categoryName}`, configuredCategory.models, "round_robin")]
150706
+ }
150707
+ };
150708
+ }
150659
150709
  const availableModels = await getAvailableModelsForDelegateTask(client);
150660
150710
  const resolved = resolveCategoryConfig(categoryName, {
150661
150711
  userCategories,
@@ -150913,15 +150963,18 @@ async function resolveSubagentModel(agentToUse, matchedAgent, executorCtx) {
150913
150963
  const agentOverride = findAgentOverride2(executorCtx.agentOverrides, agentConfigKey);
150914
150964
  const agentRequirement = AGENT_MODEL_REQUIREMENTS[agentConfigKey];
150915
150965
  const agentCategoryConfig = agentOverride?.category ? executorCtx.userCategories?.[agentOverride.category] : undefined;
150916
- const agentCategoryModel = agentCategoryConfig?.model;
150917
- const hasExplicitUserModel = Boolean(agentOverride?.model ?? agentCategoryModel);
150918
- const normalizedAgentFallbackModels = normalizeFallbackModels(agentOverride?.fallback_models ?? agentCategoryConfig?.fallback_models);
150966
+ const chainConfig = agentOverride?.models?.length ? agentOverride : !agentOverride?.model ? agentCategoryConfig : undefined;
150967
+ const canonicalModels = chainConfig?.models_distribution === "round_robin" && chainConfig.models?.length ? [...distributeTaskModels(chainConfig === agentOverride ? `agent:${agentConfigKey}` : `category:${agentOverride?.category}`, chainConfig.models, "round_robin")] : undefined;
150968
+ const firstEntry = canonicalModels?.[0];
150969
+ const explicitModel = (typeof firstEntry === "string" ? firstEntry : firstEntry?.model) ?? agentOverride?.model ?? agentCategoryConfig?.model;
150970
+ const hasExplicitUserModel = Boolean(explicitModel);
150971
+ const normalizedAgentFallbackModels = normalizeFallbackModels(canonicalModels?.slice(1) ?? agentOverride?.fallback_models ?? agentCategoryConfig?.fallback_models);
150919
150972
  const availableModels = await getAvailableModelsForDelegateTask(executorCtx.client);
150920
150973
  const normalizedMatchedModel = matchedAgent.model ? normalizeModelFormat(matchedAgent.model) : undefined;
150921
150974
  const matchedAgentModelStr = normalizedMatchedModel ? `${normalizedMatchedModel.providerID}/${normalizedMatchedModel.modelID}` : undefined;
150922
- if (agentOverride?.model || agentCategoryModel || agentRequirement || matchedAgent.model) {
150975
+ if (canonicalModels || agentOverride?.model || agentCategoryConfig?.model || agentRequirement || matchedAgent.model) {
150923
150976
  const resolution = resolveModelForDelegateTask2({
150924
- userModel: agentOverride?.model ?? agentCategoryModel,
150977
+ userModel: explicitModel,
150925
150978
  userFallbackModels: flattenToFallbackModelStrings(normalizedAgentFallbackModels),
150926
150979
  categoryDefaultModel: matchedAgentModelStr,
150927
150980
  fallbackChain: agentRequirement?.fallbackChain,
@@ -150936,8 +150989,7 @@ async function resolveSubagentModel(agentToUse, matchedAgent, executorCtx) {
150936
150989
  const resolvedModel = variantToUse ? { ...normalized, variant: variantToUse } : normalized;
150937
150990
  categoryModel = applyCategoryParams(resolvedModel, agentCategoryConfig);
150938
150991
  }
150939
- } else if (resolutionSkipped && (agentOverride?.model ?? agentCategoryModel)) {
150940
- const explicitModel = agentOverride?.model ?? agentCategoryModel;
150992
+ } else if (resolutionSkipped && explicitModel) {
150941
150993
  const normalized = explicitModel ? normalizeModelFormat(explicitModel) : undefined;
150942
150994
  if (normalized) {
150943
150995
  const variantToUse = agentOverride?.variant ?? agentCategoryConfig?.variant;
@@ -150945,14 +150997,19 @@ async function resolveSubagentModel(agentToUse, matchedAgent, executorCtx) {
150945
150997
  categoryModel = applyCategoryParams(resolvedModel, agentCategoryConfig);
150946
150998
  log2("[delegate-task] Cold cache: using explicit user override for subagent", {
150947
150999
  agent: agentToUse,
150948
- model: agentOverride?.model ?? agentCategoryModel
151000
+ model: explicitModel
150949
151001
  });
150950
151002
  }
150951
151003
  }
150952
151004
  const defaultProviderID = categoryModel?.providerID ?? normalizedMatchedModel?.providerID ?? "opencode";
150953
151005
  const configuredFallbackChain = buildFallbackChainFromModels(normalizedAgentFallbackModels, defaultProviderID);
151006
+ const canonicalChain = buildFallbackChainFromModels(canonicalModels, defaultProviderID);
151007
+ const canonicalEntry = categoryModel && canonicalChain ? findMostSpecificFallbackEntry(categoryModel.providerID, categoryModel.modelID, canonicalChain) : undefined;
150954
151008
  fallbackChain = configuredFallbackChain ?? (resolutionSkipped || hasExplicitUserModel ? undefined : agentRequirement?.fallbackChain);
150955
- const effectiveEntry = resolveEffectiveFallbackEntry({
151009
+ if (canonicalChain && canonicalEntry) {
151010
+ fallbackChain = canonicalChain.slice(canonicalChain.indexOf(canonicalEntry) + 1);
151011
+ }
151012
+ const effectiveEntry = canonicalEntry ?? resolveEffectiveFallbackEntry({
150956
151013
  categoryModel,
150957
151014
  configuredFallbackChain,
150958
151015
  resolution
@@ -167996,6 +168053,22 @@ async function createClient3(params) {
167996
168053
  return await createStdioClient(params);
167997
168054
  }
167998
168055
 
168056
+ // packages/mcp-client-core/src/skill-mcp-manager/request-options.ts
168057
+ var MAX_TIMER_DELAY_MS = 2147483647;
168058
+ function resolveRequestTimeoutMs(config) {
168059
+ const timeout = config.timeout;
168060
+ if (typeof timeout !== "number" || !Number.isFinite(timeout))
168061
+ return;
168062
+ return timeout > 0 && timeout <= MAX_TIMER_DELAY_MS ? timeout : undefined;
168063
+ }
168064
+ function buildRequestOptions(config, scope) {
168065
+ const timeout = resolveRequestTimeoutMs(config);
168066
+ return {
168067
+ ...scope?.signal === undefined ? {} : { signal: scope.signal },
168068
+ ...timeout === undefined ? {} : { timeout }
168069
+ };
168070
+ }
168071
+
167999
168072
  // packages/mcp-client-core/src/skill-mcp-manager/manager.ts
168000
168073
  function buildSkillMcpClientKey(info, options) {
168001
168074
  const baseKey = `${info.sessionID}:${info.skillName}:${info.serverName}`;
@@ -168070,21 +168143,21 @@ class SkillMcpManager {
168070
168143
  async listTools(info, context, options) {
168071
168144
  const client = await this.getOrCreateClientWithRetry(info, context.config, options);
168072
168145
  return this.collectPages(async (cursor) => {
168073
- const result = await client.listTools(cursor === undefined ? undefined : { cursor });
168146
+ const result = await client.listTools(cursor === undefined ? undefined : { cursor }, buildRequestOptions(context.config, options));
168074
168147
  return { items: result.tools, nextCursor: result.nextCursor };
168075
168148
  });
168076
168149
  }
168077
168150
  async listResources(info, context, options) {
168078
168151
  const client = await this.getOrCreateClientWithRetry(info, context.config, options);
168079
168152
  return this.collectPages(async (cursor) => {
168080
- const result = await client.listResources(cursor === undefined ? undefined : { cursor });
168153
+ const result = await client.listResources(cursor === undefined ? undefined : { cursor }, buildRequestOptions(context.config, options));
168081
168154
  return { items: result.resources, nextCursor: result.nextCursor };
168082
168155
  });
168083
168156
  }
168084
168157
  async listPrompts(info, context, options) {
168085
168158
  const client = await this.getOrCreateClientWithRetry(info, context.config, options);
168086
168159
  return this.collectPages(async (cursor) => {
168087
- const result = await client.listPrompts(cursor === undefined ? undefined : { cursor });
168160
+ const result = await client.listPrompts(cursor === undefined ? undefined : { cursor }, buildRequestOptions(context.config, options));
168088
168161
  return { items: result.prompts, nextCursor: result.nextCursor };
168089
168162
  });
168090
168163
  }
@@ -168102,18 +168175,18 @@ class SkillMcpManager {
168102
168175
  }
168103
168176
  async callTool(info, context, name, args, options) {
168104
168177
  return await this.withOperationRetry(info, context.config, options, async (client) => {
168105
- return await client.callTool({ name, arguments: args }, undefined, { signal: options?.signal });
168178
+ return await client.callTool({ name, arguments: args }, undefined, buildRequestOptions(context.config, options));
168106
168179
  });
168107
168180
  }
168108
168181
  async readResource(info, context, uri, options) {
168109
168182
  return await this.withOperationRetry(info, context.config, options, async (client) => {
168110
- const result = await client.readResource({ uri }, { signal: options?.signal });
168183
+ const result = await client.readResource({ uri }, buildRequestOptions(context.config, options));
168111
168184
  return result.contents;
168112
168185
  });
168113
168186
  }
168114
168187
  async getPrompt(info, context, name, args, options) {
168115
168188
  return await this.withOperationRetry(info, context.config, options, async (client) => {
168116
- const result = await client.getPrompt({ name, arguments: args }, { signal: options?.signal });
168189
+ const result = await client.getPrompt({ name, arguments: args }, buildRequestOptions(context.config, options));
168117
168190
  return result.messages;
168118
168191
  });
168119
168192
  }
@@ -181540,7 +181613,6 @@ function mapScopeToLocation(scope) {
181540
181613
  }
181541
181614
  function buildAvailableSkills(discoveredSkills, browserProvider, disabledSkills, teamModeEnabled, agentName) {
181542
181615
  const builtinSkills = createBuiltinSkills({ browserProvider, disabledSkills, teamModeEnabled });
181543
- const builtinSkillNames = new Set(builtinSkills.map((s) => s.name));
181544
181616
  const builtinAvailable = builtinSkills.map((skill) => ({
181545
181617
  name: skill.name,
181546
181618
  description: skill.description,