@capekai/core 1.0.6 → 1.0.8
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/package.json
CHANGED
package/src/adapters/ai-sdk.ts
CHANGED
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
type Tool,
|
|
9
9
|
} from 'ai';
|
|
10
10
|
import { getModelWithMetadata } from '../core/model-utils';
|
|
11
|
+
import { openAiModelOmitsTemperature } from '../core/provider-utils';
|
|
11
12
|
import type { ModelFactoryResult } from '../providers/types';
|
|
12
13
|
|
|
13
14
|
export interface TextModelRequest {
|
|
@@ -21,7 +22,7 @@ export interface TextModelRequest {
|
|
|
21
22
|
}
|
|
22
23
|
|
|
23
24
|
export async function runTextModel(request: TextModelRequest): Promise<string> {
|
|
24
|
-
const { model, omitMaxOutputTokens, providerOptions, useProviderInstructions } = await getModelWithMetadata({
|
|
25
|
+
const { model, omitMaxOutputTokens, omitTemperature, providerOptions, useProviderInstructions } = await getModelWithMetadata({
|
|
25
26
|
modelId: request.modelId,
|
|
26
27
|
providerId: request.providerId,
|
|
27
28
|
systemPrompt: request.systemPrompt,
|
|
@@ -34,7 +35,7 @@ export async function runTextModel(request: TextModelRequest): Promise<string> {
|
|
|
34
35
|
...(omitMaxOutputTokens || request.maxOutputTokens === undefined
|
|
35
36
|
? {}
|
|
36
37
|
: { maxOutputTokens: request.maxOutputTokens }),
|
|
37
|
-
temperature: request.temperature,
|
|
38
|
+
...(omitTemperature ? {} : { temperature: request.temperature }),
|
|
38
39
|
providerOptions: providerOptions as Parameters<typeof streamText>[0]['providerOptions'],
|
|
39
40
|
});
|
|
40
41
|
return stream.text;
|
|
@@ -57,6 +58,7 @@ export function createOpenAiResponsesModel(request: OpenAiResponsesModelRequest)
|
|
|
57
58
|
model: openai.responses(request.modelId) as unknown as LanguageModel,
|
|
58
59
|
useProviderInstructions: true,
|
|
59
60
|
omitMaxOutputTokens: true,
|
|
61
|
+
omitTemperature: openAiModelOmitsTemperature(request.modelId),
|
|
60
62
|
providerOptions: {
|
|
61
63
|
openai: {
|
|
62
64
|
instructions: request.systemPrompt || 'You are a helpful assistant.',
|
package/src/core/agent.ts
CHANGED
|
@@ -141,7 +141,7 @@ export async function* streamChat(options: ChatOptions): AsyncGenerator<MessageE
|
|
|
141
141
|
selfDelegationAvailable,
|
|
142
142
|
});
|
|
143
143
|
|
|
144
|
-
const { model, useProviderInstructions, omitMaxOutputTokens, providerOptions: baseProviderOptions } =
|
|
144
|
+
const { model, useProviderInstructions, omitMaxOutputTokens, omitTemperature, providerOptions: baseProviderOptions } =
|
|
145
145
|
await getModelWithMetadata({
|
|
146
146
|
modelId: resolvedModelId,
|
|
147
147
|
providerId,
|
|
@@ -199,7 +199,7 @@ export async function* streamChat(options: ChatOptions): AsyncGenerator<MessageE
|
|
|
199
199
|
tools: aiTools,
|
|
200
200
|
maxOutputTokens: omitMaxOutputTokens ? undefined : getMaxOutputTokens(resolvedModelId),
|
|
201
201
|
providerOptions: streamConfig.providerOptions as Parameters<typeof streamText>[0]['providerOptions'],
|
|
202
|
-
temperature: streamConfig.temperature,
|
|
202
|
+
...(omitTemperature ? {} : { temperature: streamConfig.temperature }),
|
|
203
203
|
stopWhen: stepCountIs(streamConfig.maxSteps),
|
|
204
204
|
abortSignal: abortController.signal,
|
|
205
205
|
experimental_onStepStart,
|
package/src/core/chat-handler.ts
CHANGED
|
@@ -682,10 +682,21 @@ export async function handleChat<Origin>(
|
|
|
682
682
|
return;
|
|
683
683
|
}
|
|
684
684
|
|
|
685
|
-
if (result.isFatal
|
|
685
|
+
if (result.isFatal) {
|
|
686
686
|
return;
|
|
687
687
|
}
|
|
688
688
|
|
|
689
|
+
if (result.interrupted) {
|
|
690
|
+
// The old turn has finished cleanup; queued input starts a fresh turn.
|
|
691
|
+
const next = await drainQueue(ctx, sessionId);
|
|
692
|
+
if (!next) {
|
|
693
|
+
return;
|
|
694
|
+
}
|
|
695
|
+
currentContent = next.content;
|
|
696
|
+
currentAttachments = next.attachments;
|
|
697
|
+
continue;
|
|
698
|
+
}
|
|
699
|
+
|
|
689
700
|
if (result.isQueueDrainable) {
|
|
690
701
|
const next = await drainQueue(ctx, sessionId);
|
|
691
702
|
if (next) {
|
package/src/core/model-utils.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type LanguageModel } from 'ai';
|
|
2
2
|
import { createOpenAI } from '@ai-sdk/openai';
|
|
3
|
-
import { findProviderFromModel, parseModelSpecifier } from './provider-utils';
|
|
3
|
+
import { findProviderFromModel, openAiModelOmitsTemperature, parseModelSpecifier } from './provider-utils';
|
|
4
4
|
import { findModel, getApiKeyForProvider, getLLMBaseUrl, getModelsConfig } from '../configuration/runtime';
|
|
5
5
|
import { createModelForProvider, getProvider } from '../providers/registry';
|
|
6
6
|
import { isSandboxActive } from '../runtime/host-dependencies';
|
|
@@ -9,6 +9,7 @@ export interface ModelWithMetadata {
|
|
|
9
9
|
model: LanguageModel;
|
|
10
10
|
useProviderInstructions?: boolean;
|
|
11
11
|
omitMaxOutputTokens?: boolean;
|
|
12
|
+
omitTemperature?: boolean;
|
|
12
13
|
providerOptions?: Record<string, Record<string, unknown>>;
|
|
13
14
|
}
|
|
14
15
|
|
|
@@ -46,6 +47,7 @@ export async function getModelWithMetadata(
|
|
|
46
47
|
model: result.model,
|
|
47
48
|
useProviderInstructions: result.useProviderInstructions,
|
|
48
49
|
omitMaxOutputTokens: result.omitMaxOutputTokens,
|
|
50
|
+
omitTemperature: result.omitTemperature,
|
|
49
51
|
providerOptions: result.providerOptions,
|
|
50
52
|
};
|
|
51
53
|
}
|
|
@@ -77,6 +79,7 @@ export async function getModelWithMetadata(
|
|
|
77
79
|
model: result.model,
|
|
78
80
|
useProviderInstructions: result.useProviderInstructions,
|
|
79
81
|
omitMaxOutputTokens: result.omitMaxOutputTokens,
|
|
82
|
+
omitTemperature: result.omitTemperature,
|
|
80
83
|
providerOptions: result.providerOptions,
|
|
81
84
|
};
|
|
82
85
|
}
|
|
@@ -132,6 +135,7 @@ export async function getModelWithMetadata(
|
|
|
132
135
|
});
|
|
133
136
|
return {
|
|
134
137
|
model: openai.responses(model) as unknown as LanguageModel,
|
|
138
|
+
omitTemperature: openAiModelOmitsTemperature(model),
|
|
135
139
|
providerOptions: {
|
|
136
140
|
openai: {
|
|
137
141
|
promptCacheKey: options.sessionId,
|
|
@@ -19,6 +19,10 @@ const PROVIDER_PREFIXES: Array<{ test: (m: string) => boolean; provider: string
|
|
|
19
19
|
{ test: (m) => m.startsWith('deepseek-'), provider: 'deepseek' },
|
|
20
20
|
];
|
|
21
21
|
|
|
22
|
+
export function openAiModelOmitsTemperature(modelId: string): boolean {
|
|
23
|
+
return modelId.startsWith('gpt-6');
|
|
24
|
+
}
|
|
25
|
+
|
|
22
26
|
export interface ParsedModelSpecifier {
|
|
23
27
|
modelId: string;
|
|
24
28
|
providerId?: string;
|
package/src/providers/types.ts
CHANGED