fix(pi): recover from Works prompt rejection
This commit is contained in:
@@ -43,6 +43,7 @@ export interface PiProviderModelDescriptor {
|
||||
compat?: {
|
||||
thinkingFormat?: 'deepseek' | 'openrouter';
|
||||
sessionAffinityFormat?: 'openrouter';
|
||||
supportsDeveloperRole?: boolean;
|
||||
requiresReasoningContentOnAssistantMessages?: boolean;
|
||||
};
|
||||
thinkingLevelMap?: Partial<Record<ProductModelRef['thinkingLevel'], string | null>>;
|
||||
@@ -291,6 +292,7 @@ function modelDescriptor(
|
||||
summaries: readonly ModelSummary[],
|
||||
compat: PiProviderModelDescriptor['compat'],
|
||||
backendModels: Map<string, ProviderModelEntry>,
|
||||
enforcedCompat: PiProviderModelDescriptor['compat'],
|
||||
): PiProviderModelDescriptor {
|
||||
const summary = summaries.find((candidate) => (
|
||||
candidate.id === modelId
|
||||
@@ -320,8 +322,8 @@ function modelDescriptor(
|
||||
|| backend?.reasoning === true,
|
||||
...(contextWindow ? { contextWindow } : {}),
|
||||
...(maxOutputTokens ? { maxOutputTokens } : {}),
|
||||
...(compat || profile?.pi?.compat
|
||||
? { compat: { ...compat, ...profile?.pi?.compat } }
|
||||
...(compat || profile?.pi?.compat || enforcedCompat
|
||||
? { compat: { ...compat, ...profile?.pi?.compat, ...enforcedCompat } }
|
||||
: {}),
|
||||
...(profile?.pi?.thinkingLevelMap
|
||||
? { thinkingLevelMap: { ...profile.pi.thinkingLevelMap } }
|
||||
@@ -367,12 +369,19 @@ function descriptorForAccount(
|
||||
);
|
||||
}
|
||||
const apiKeyEnv = apiKeyEnvForAccount(account.id);
|
||||
const credentialMode = account.metadata?.worksSquareCredentialMode;
|
||||
const enforcedCompat: PiProviderModelDescriptor['compat'] = mapping.api === 'openai-completions'
|
||||
&& (credentialMode === WORKS_SQUARE_AI_GATEWAY_CREDENTIAL_MODE
|
||||
|| credentialMode === WORKS_SQUARE_AI_GATEWAY_PROXY_CREDENTIAL_MODE)
|
||||
? { supportsDeveloperRole: false }
|
||||
: undefined;
|
||||
const models = modelIdsForAccount(account).map((modelId) => modelDescriptor(
|
||||
account,
|
||||
modelId,
|
||||
summaries,
|
||||
mapping.compat,
|
||||
backendModelEntries(account),
|
||||
enforcedCompat,
|
||||
));
|
||||
if (models.length === 0) {
|
||||
throw new PiProviderConfigError(
|
||||
|
||||
Reference in New Issue
Block a user