fix(coding-agent/eval): remove per-call model override from agent() (#6438)
Completes the maintainer's removal of per-call model selection from
subagent spawns (9f8aa87dbf removed it from the task tool and the
model-facing agent() docs/prompt, but the eval agent() runtime and all
four preludes still accepted and forwarded a per-call model).
Subagents now always resolve through the selected agent's frontmatter
model and settings, so an explicit model: "default" can no longer
silently route children onto the parent session model.
- agent-bridge: drops "model?" from agentArgsSchema and the request
forward; adds "+": "delete" so a legacy model argument is stripped
(same contract as the task wire schemas).
- JS/Python/Ruby/Julia preludes: remove the model parameter from
agent(); completion()'s tier selector is unchanged.
- docs (tools/eval.md, python-repl.md) updated to the removed surface.
Refs #6438
This commit is contained in:
@@ -23,7 +23,6 @@ export const EVAL_AGENT_BRIDGE_NAME = "__agent__";
|
||||
const agentArgsSchema = type({
|
||||
prompt: "string>0",
|
||||
"agent?": "string>0",
|
||||
"model?": "string>0|string>0[]",
|
||||
"label?": "string",
|
||||
"schema?": "unknown",
|
||||
"schemaMode?": "'permissive' | 'strict'",
|
||||
@@ -31,12 +30,12 @@ const agentArgsSchema = type({
|
||||
"apply?": "boolean",
|
||||
"merge?": "boolean",
|
||||
"handle?": "boolean",
|
||||
"+": "delete",
|
||||
});
|
||||
|
||||
interface EvalAgentArgs {
|
||||
prompt: string;
|
||||
agent?: string;
|
||||
model?: string | string[];
|
||||
label?: string;
|
||||
schema?: unknown;
|
||||
schemaMode?: StructuredSubagentSchemaMode;
|
||||
@@ -148,7 +147,6 @@ export async function runEvalAgent(args: unknown, options: EvalAgentBridgeOption
|
||||
invocationKind: "eval",
|
||||
assignment: parsed.prompt,
|
||||
...(parsed.agent !== undefined ? { agent: parsed.agent } : {}),
|
||||
...(parsed.model !== undefined ? { model: parsed.model } : {}),
|
||||
...(Object.hasOwn(parsed, "schema") ? { outputSchema: parsed.schema } : {}),
|
||||
...(parsed.schemaMode !== undefined ? { schemaMode: parsed.schemaMode } : {}),
|
||||
...(parsed.label !== undefined ? { identity: { label: parsed.label } } : {}),
|
||||
|
||||
@@ -519,14 +519,11 @@ function completion(prompt::String; model="default", system=nothing, schema=noth
|
||||
return schema === nothing ? text : Main.json_parse(string(text))
|
||||
end
|
||||
|
||||
function agent(prompt::String; agent="task", model=nothing, label=nothing, schema=nothing, schema_mode=nothing, isolated=nothing, apply=nothing, merge=nothing, handle=false, kwargs...)
|
||||
function agent(prompt::String; agent="task", label=nothing, schema=nothing, schema_mode=nothing, isolated=nothing, apply=nothing, merge=nothing, handle=false, kwargs...)
|
||||
args_dict = Dict{String, Any}("prompt" => prompt)
|
||||
if agent !== nothing
|
||||
args_dict["agent"] = agent
|
||||
end
|
||||
if model !== nothing
|
||||
args_dict["model"] = model
|
||||
end
|
||||
if label !== nothing
|
||||
args_dict["label"] = label
|
||||
end
|
||||
|
||||
@@ -104,8 +104,8 @@ if (!globalThis.__omp_js_prelude_loaded__) {
|
||||
"agent",
|
||||
opts,
|
||||
rest,
|
||||
["agent", "model", "label", "schema", "isolated", "apply", "merge", "schemaMode"],
|
||||
"{ agent, model, label, schema, isolated, apply, merge, schemaMode, handle }",
|
||||
["agent", "label", "schema", "isolated", "apply", "merge", "schemaMode"],
|
||||
"{ agent, label, schema, isolated, apply, merge, schemaMode, handle }",
|
||||
);
|
||||
const { handle, ...callArgs } = o;
|
||||
const res = await globalThis.__omp_call_tool__("__agent__", { prompt, ...callArgs, handle: Boolean(handle) });
|
||||
|
||||
@@ -488,7 +488,6 @@ if "__omp_prelude_loaded__" not in globals():
|
||||
prompt,
|
||||
*,
|
||||
agent="task",
|
||||
model=None,
|
||||
label=None,
|
||||
schema=None,
|
||||
schema_mode=None,
|
||||
@@ -506,8 +505,6 @@ if "__omp_prelude_loaded__" not in globals():
|
||||
args = {"prompt": prompt}
|
||||
if agent is not None:
|
||||
args["agent"] = agent
|
||||
if model is not None:
|
||||
args["model"] = model
|
||||
if label is not None:
|
||||
args["label"] = label
|
||||
if schema is not None:
|
||||
|
||||
@@ -392,10 +392,9 @@ unless defined?($__omp_prelude_loaded) && $__omp_prelude_loaded
|
||||
schema.nil? ? text : JSON.parse(text)
|
||||
end
|
||||
|
||||
def agent(prompt, agent: "task", model: nil, label: nil, schema: nil, schema_mode: nil, isolated: nil, apply: nil, merge: nil, handle: false)
|
||||
def agent(prompt, agent: "task", label: nil, schema: nil, schema_mode: nil, isolated: nil, apply: nil, merge: nil, handle: false)
|
||||
args = { "prompt" => prompt }
|
||||
args["agent"] = agent unless agent.nil?
|
||||
args["model"] = model unless model.nil?
|
||||
args["label"] = label unless label.nil?
|
||||
args["schema"] = schema unless schema.nil?
|
||||
args["schemaMode"] = schema_mode unless schema_mode.nil?
|
||||
|
||||
Reference in New Issue
Block a user