oh-my-opencode 5.1.54 → 5.1.55
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 +29 -18
- package/dist/cli-node/index.js +29 -18
- package/dist/config/schema/agent-overrides.d.ts +64 -0
- package/dist/config/schema/categories.d.ts +8 -0
- package/dist/config/schema/oh-my-opencode-config.d.ts +64 -0
- package/dist/index.js +120 -48
- package/dist/oh-my-opencode.schema.json +112 -0
- package/dist/skills/browser/runtime/omowright/manifest.json +1 -1
- package/dist/skills/programming/SKILL.md +2 -0
- package/dist/skills/programming/references/testing/README.md +2 -2
- package/dist/skills/programming/scripts/typescript/check-test-junk-rules.ts +140 -0
- package/dist/skills/programming/scripts/typescript/check-test-junk.test.ts +125 -0
- package/dist/skills/programming/scripts/typescript/check-test-junk.ts +148 -0
- package/dist/skills/programming/scripts/typescript/mutation-proof.test.ts +43 -0
- package/dist/skills/programming/scripts/typescript/mutation-proof.ts +179 -0
- package/dist/skills/remove-ai-slops/SKILL.md +32 -20
- package/dist/skills/ulw-research/scripts/source-commands.mjs +3 -1
- package/dist/skills/ulw-research/scripts/source-integrity.test.ts +39 -2
- package/dist/tools/delegate-task/models-distribution.d.ts +1 -0
- package/dist/tui.js +28 -17
- package/package.json +16 -14
- package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +2 -0
- package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
- package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
- package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
- package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +2 -2
- package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
- package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
- package/packages/omo-codex/plugin/components/rules/package.json +1 -1
- package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
- package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-execute-continuation/package.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +5 -5
- package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-recording-spawn-admission.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
- package/packages/omo-codex/plugin/hooks/stop-checking-ulw-execute-continuation.json +1 -1
- package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
- package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
- package/packages/omo-codex/plugin/package-lock.json +12 -12
- package/packages/omo-codex/plugin/package.json +1 -1
- package/packages/omo-codex/plugin/skills/browser/runtime/omowright/manifest.json +1 -1
- package/packages/omo-codex/plugin/skills/programming/SKILL.md +2 -0
- package/packages/omo-codex/plugin/skills/programming/references/testing/README.md +2 -2
- package/packages/omo-codex/plugin/skills/programming/scripts/typescript/check-test-junk-rules.ts +140 -0
- package/packages/omo-codex/plugin/skills/programming/scripts/typescript/check-test-junk.ts +148 -0
- package/packages/omo-codex/plugin/skills/programming/scripts/typescript/mutation-proof.ts +179 -0
- package/packages/omo-codex/plugin/skills/remove-ai-slops/SKILL.md +32 -20
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/source-commands.mjs +3 -1
- package/packages/omo-codex/scripts/install-dist/install-local.mjs +4 -2
- package/packages/shared-skills/skills/browser/runtime/omowright/manifest.json +1 -1
- package/packages/shared-skills/skills/programming/SKILL.md +2 -0
- package/packages/shared-skills/skills/programming/references/testing/README.md +2 -2
- package/packages/shared-skills/skills/programming/scripts/typescript/check-test-junk-rules.ts +140 -0
- package/packages/shared-skills/skills/programming/scripts/typescript/check-test-junk.test.ts +125 -0
- package/packages/shared-skills/skills/programming/scripts/typescript/check-test-junk.ts +148 -0
- package/packages/shared-skills/skills/programming/scripts/typescript/mutation-proof.test.ts +43 -0
- package/packages/shared-skills/skills/programming/scripts/typescript/mutation-proof.ts +179 -0
- package/packages/shared-skills/skills/remove-ai-slops/SKILL.md +32 -20
- package/packages/shared-skills/skills/ulw-research/scripts/source-commands.mjs +3 -1
- 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.
|
|
97803
|
+
version: "5.1.55",
|
|
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.
|
|
98031
|
-
"oh-my-opencode-darwin-x64": "5.1.
|
|
98032
|
-
"oh-my-opencode-darwin-x64-baseline": "5.1.
|
|
98033
|
-
"oh-my-opencode-linux-arm64": "5.1.
|
|
98034
|
-
"oh-my-opencode-linux-arm64-musl": "5.1.
|
|
98035
|
-
"oh-my-opencode-linux-x64": "5.1.
|
|
98036
|
-
"oh-my-opencode-linux-x64-baseline": "5.1.
|
|
98037
|
-
"oh-my-opencode-linux-x64-musl": "5.1.
|
|
98038
|
-
"oh-my-opencode-linux-x64-musl-baseline": "5.1.
|
|
98039
|
-
"oh-my-opencode-windows-arm64": "5.1.
|
|
98040
|
-
"oh-my-opencode-windows-x64": "5.1.
|
|
98041
|
-
"oh-my-opencode-windows-x64-baseline": "5.1.
|
|
98055
|
+
"oh-my-opencode-darwin-arm64": "5.1.55",
|
|
98056
|
+
"oh-my-opencode-darwin-x64": "5.1.55",
|
|
98057
|
+
"oh-my-opencode-darwin-x64-baseline": "5.1.55",
|
|
98058
|
+
"oh-my-opencode-linux-arm64": "5.1.55",
|
|
98059
|
+
"oh-my-opencode-linux-arm64-musl": "5.1.55",
|
|
98060
|
+
"oh-my-opencode-linux-x64": "5.1.55",
|
|
98061
|
+
"oh-my-opencode-linux-x64-baseline": "5.1.55",
|
|
98062
|
+
"oh-my-opencode-linux-x64-musl": "5.1.55",
|
|
98063
|
+
"oh-my-opencode-linux-x64-musl-baseline": "5.1.55",
|
|
98064
|
+
"oh-my-opencode-windows-arm64": "5.1.55",
|
|
98065
|
+
"oh-my-opencode-windows-x64": "5.1.55",
|
|
98066
|
+
"oh-my-opencode-windows-x64-baseline": "5.1.55"
|
|
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
|
-
|
|
112774
|
-
|
|
112775
|
-
|
|
112776
|
-
|
|
112777
|
-
|
|
112778
|
-
|
|
112779
|
-
|
|
112780
|
-
|
|
112781
|
-
|
|
112782
|
-
|
|
112783
|
-
return
|
|
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(
|
|
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,
|
|
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,
|
|
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
|
|
150917
|
-
const
|
|
150918
|
-
const
|
|
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 ||
|
|
150975
|
+
if (canonicalModels || agentOverride?.model || agentCategoryConfig?.model || agentRequirement || matchedAgent.model) {
|
|
150923
150976
|
const resolution = resolveModelForDelegateTask2({
|
|
150924
|
-
userModel:
|
|
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 &&
|
|
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:
|
|
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
|
-
|
|
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,
|
|
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 },
|
|
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 },
|
|
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,
|