mirror of
https://github.com/getpaseo/paseo.git
synced 2026-07-29 12:01:31 +00:00
fix(agent): allow cross-provider creation for modeless providers (#2000)
* fix: 允许无模式 Provider 创建子 Agent * test: 补充无模式 Provider 继承场景
This commit is contained in:
@@ -96,6 +96,32 @@ describe("resolveAndValidateCreateAgentMode", () => {
|
||||
);
|
||||
});
|
||||
|
||||
it("uses the provider default when the cross-provider target has no modes", () => {
|
||||
const resolved = resolveAndValidateCreateAgentMode({
|
||||
requestedMode: undefined,
|
||||
targetProvider: "pi",
|
||||
parent: agentParent("codex", "auto"),
|
||||
unattended: false,
|
||||
availableModes: [],
|
||||
targetUnattendedMode: undefined,
|
||||
});
|
||||
|
||||
expect(resolved).toBeUndefined();
|
||||
});
|
||||
|
||||
it("uses the provider default when an unattended parent targets a provider with no modes", () => {
|
||||
const resolved = resolveAndValidateCreateAgentMode({
|
||||
requestedMode: undefined,
|
||||
targetProvider: "pi",
|
||||
parent: agentParent("claude", "bypassPermissions", true),
|
||||
unattended: false,
|
||||
availableModes: [],
|
||||
targetUnattendedMode: undefined,
|
||||
});
|
||||
|
||||
expect(resolved).toBeUndefined();
|
||||
});
|
||||
|
||||
it("passes through an explicit mode when the target provider's modes are unknown", () => {
|
||||
const resolved = resolveAndValidateCreateAgentMode({
|
||||
requestedMode: "default",
|
||||
|
||||
@@ -14,6 +14,7 @@ export interface ResolveCreateAgentModeInput {
|
||||
unattended: boolean;
|
||||
// `undefined` = target provider's modes unknown: explicit modes pass through
|
||||
// unvalidated, but cross-provider inheritance is still refused.
|
||||
// `[]` = target provider explicitly has no modes: use its default behavior.
|
||||
availableModes: string[] | undefined;
|
||||
// Target provider's own unattended mode id, if it has one. Used to bridge
|
||||
// unattended parents into unattended children across providers.
|
||||
@@ -71,6 +72,10 @@ export function resolveAndValidateCreateAgentMode(
|
||||
return input.targetUnattendedMode;
|
||||
}
|
||||
|
||||
if (availableModes?.length === 0) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
throw new Error(
|
||||
`cannot inherit mode '${formatCreateConfigParentMode(parent)}' from ${formatCreateConfigParentSource(parent)} for new agent (provider '${targetProvider}'). Pass an explicit mode. Available modes for '${targetProvider}': ${listModes(availableModes)}`,
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user