@meetsmore-oss/use-ai-server 1.9.5 → 1.11.0
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/agents/AISDKAgent.d.ts +47 -1
- package/dist/agents/AISDKAgent.d.ts.map +1 -1
- package/dist/agents/AISDKAgent.reasoning.test.d.ts +2 -0
- package/dist/agents/AISDKAgent.reasoning.test.d.ts.map +1 -0
- package/dist/agents/index.d.ts +1 -0
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/testing/MockReasoningModel.d.ts +33 -0
- package/dist/agents/testing/MockReasoningModel.d.ts.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6759 -6438
- package/dist/plugins/index.d.ts +1 -1
- package/dist/plugins/index.d.ts.map +1 -1
- package/dist/plugins/types.d.ts +20 -1
- package/dist/plugins/types.d.ts.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/src/agents/AISDKAgent.d.ts +47 -1
- package/dist/src/agents/AISDKAgent.d.ts.map +1 -1
- package/dist/src/agents/AISDKAgent.reasoning.test.d.ts +2 -0
- package/dist/src/agents/AISDKAgent.reasoning.test.d.ts.map +1 -0
- package/dist/src/agents/index.d.ts +1 -0
- package/dist/src/agents/index.d.ts.map +1 -1
- package/dist/src/agents/testing/MockReasoningModel.d.ts +33 -0
- package/dist/src/agents/testing/MockReasoningModel.d.ts.map +1 -0
- package/dist/src/index.d.ts +2 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/plugins/index.d.ts +1 -1
- package/dist/src/plugins/index.d.ts.map +1 -1
- package/dist/src/plugins/types.d.ts +20 -1
- package/dist/src/plugins/types.d.ts.map +1 -1
- package/dist/src/server.d.ts.map +1 -1
- package/dist/src/types.d.ts +1 -1
- package/dist/src/types.d.ts.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { LanguageModel } from 'ai';
|
|
1
|
+
import { LanguageModel, type JSONValue } from 'ai';
|
|
2
2
|
import type { Agent, AgentInput, EventEmitter, AgentResult } from './types';
|
|
3
3
|
import type { ToolDefinition } from '../types';
|
|
4
4
|
import { type CacheBreakpointFn } from './anthropicCache';
|
|
@@ -147,6 +147,33 @@ export interface AISDKAgentConfig {
|
|
|
147
147
|
* ```
|
|
148
148
|
*/
|
|
149
149
|
cacheBreakpoint?: CacheBreakpointFn;
|
|
150
|
+
/**
|
|
151
|
+
* Provider-specific options passed directly to `streamText`.
|
|
152
|
+
* Can be used for AI Gateway features like model fallbacks, provider routing, etc.
|
|
153
|
+
*
|
|
154
|
+
* @example
|
|
155
|
+
* ```typescript
|
|
156
|
+
* // Model fallbacks via AI Gateway
|
|
157
|
+
* {
|
|
158
|
+
* providerOptions: {
|
|
159
|
+
* gateway: {
|
|
160
|
+
* models: ['anthropic/claude-opus-4.6', 'google/gemini-3.1-pro-preview'],
|
|
161
|
+
* },
|
|
162
|
+
* },
|
|
163
|
+
* }
|
|
164
|
+
*
|
|
165
|
+
* // Model fallbacks + provider routing
|
|
166
|
+
* {
|
|
167
|
+
* providerOptions: {
|
|
168
|
+
* gateway: {
|
|
169
|
+
* models: ['openai/gpt-5-nano', 'anthropic/claude-opus-4.6'],
|
|
170
|
+
* order: ['azure', 'openai'],
|
|
171
|
+
* },
|
|
172
|
+
* },
|
|
173
|
+
* }
|
|
174
|
+
* ```
|
|
175
|
+
*/
|
|
176
|
+
providerOptions?: Record<string, Record<string, JSONValue>>;
|
|
150
177
|
/**
|
|
151
178
|
* Maximum number of tokens the model can output per response.
|
|
152
179
|
* @default 4096
|
|
@@ -183,6 +210,12 @@ export interface AISDKAgentConfig {
|
|
|
183
210
|
* - AG-UI event emission
|
|
184
211
|
* - Optional Langfuse telemetry
|
|
185
212
|
*
|
|
213
|
+
* **Reasoning / Extended Thinking:**
|
|
214
|
+
* Reasoning (extended thinking) is currently only tested with Anthropic models.
|
|
215
|
+
* The signature extraction logic supports pluggable providers via {@link REASONING_SIGNATURE_KEYS},
|
|
216
|
+
* but only Anthropic has been verified end-to-end.
|
|
217
|
+
* OpenAI and Google providers are mapped but commented out pending testing.
|
|
218
|
+
*
|
|
186
219
|
* Used for conversational chat (via useAI hook).
|
|
187
220
|
*
|
|
188
221
|
* @example
|
|
@@ -213,6 +246,7 @@ export interface AISDKAgentConfig {
|
|
|
213
246
|
*/
|
|
214
247
|
export declare class AISDKAgent implements Agent {
|
|
215
248
|
private model;
|
|
249
|
+
private providerOptions?;
|
|
216
250
|
private name;
|
|
217
251
|
private annotation?;
|
|
218
252
|
private toolFilter?;
|
|
@@ -336,6 +370,18 @@ export declare class AISDKAgent implements Agent {
|
|
|
336
370
|
* This allows file transformers on the client to send pre-processed file content.
|
|
337
371
|
*/
|
|
338
372
|
private static readonly transformedFileContentSchema;
|
|
373
|
+
/**
|
|
374
|
+
* Schema for reasoning content parts (extended thinking).
|
|
375
|
+
* Preserves providerMetadata (e.g., Anthropic's signature) for multi-turn context.
|
|
376
|
+
*
|
|
377
|
+
* providerMetadata is stored as an opaque record keyed by provider name.
|
|
378
|
+
* The transform merges it into providerOptions so the AI SDK sends it back
|
|
379
|
+
* to the correct provider API for signature verification.
|
|
380
|
+
*
|
|
381
|
+
* Currently only Anthropic signatures are tested.
|
|
382
|
+
* @see REASONING_SIGNATURE_KEYS for the mapping of supported providers.
|
|
383
|
+
*/
|
|
384
|
+
private static readonly reasoningContentSchema;
|
|
339
385
|
private static readonly contentPartSchema;
|
|
340
386
|
private static readonly messageSchema;
|
|
341
387
|
private static readonly messagesArraySchema;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AISDKAgent.d.ts","sourceRoot":"","sources":["../../../src/agents/AISDKAgent.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,aAAa,EAA8G,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"AISDKAgent.d.ts","sourceRoot":"","sources":["../../../src/agents/AISDKAgent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AISDKAgent.reasoning.test.d.ts","sourceRoot":"","sources":["../../../src/agents/AISDKAgent.reasoning.test.ts"],"names":[],"mappings":""}
|
package/dist/agents/index.d.ts
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
export type { Agent, AgentInput, EventEmitter, AgentResult, ClientSession } from './types';
|
|
6
6
|
export { AISDKAgent, type AISDKAgentConfig } from './AISDKAgent';
|
|
7
|
+
export { createMockReasoningModel } from './testing/MockReasoningModel';
|
|
7
8
|
export { applyCacheBreakpoints, isAnthropicModel, type MessageWithCacheContext, type CacheTtl, type CacheBreakpointResult, type CacheBreakpointFn, } from './anthropicCache';
|
|
8
9
|
export { toolNeedsApproval, createApprovalWrapper, waitForApproval, type ToolArguments, type ToolResult, type ToolExecutor, } from './toolApproval';
|
|
9
10
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agents/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC3F,OAAO,EAAE,UAAU,EAAE,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,KAAK,uBAAuB,EAC5B,KAAK,QAAQ,EACb,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,GACvB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,eAAe,EACf,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,YAAY,GAClB,MAAM,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agents/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC3F,OAAO,EAAE,UAAU,EAAE,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,KAAK,uBAAuB,EAC5B,KAAK,QAAQ,EACb,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,GACvB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,eAAe,EACf,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,YAAY,GAClB,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mock AI model for UI development and testing.
|
|
3
|
+
*
|
|
4
|
+
* Classifies incoming user messages by fixed keyword and returns predetermined responses,
|
|
5
|
+
* including reasoning (extended thinking) blocks and multi-step tool calls.
|
|
6
|
+
* Runs through the full AISDKAgent pipeline so all production code paths are exercised.
|
|
7
|
+
*
|
|
8
|
+
* Keywords:
|
|
9
|
+
* "long reasoning" → long reasoning block + text
|
|
10
|
+
* "multi-step reasoning" → reasoning + tool call + reasoning + text
|
|
11
|
+
* anything else → short reasoning + text (default)
|
|
12
|
+
*
|
|
13
|
+
* Usage:
|
|
14
|
+
* import { createMockReasoningModel, AISDKAgent } from '@meetsmore-oss/use-ai-server';
|
|
15
|
+
*
|
|
16
|
+
* const agent = new AISDKAgent({
|
|
17
|
+
* model: createMockReasoningModel(),
|
|
18
|
+
* name: 'Mock (Reasoning)',
|
|
19
|
+
* });
|
|
20
|
+
*
|
|
21
|
+
* Enable in server-app with: USE_AI_ENABLE_MOCK_AGENT=true
|
|
22
|
+
*/
|
|
23
|
+
import { MockLanguageModelV3 } from 'ai/test';
|
|
24
|
+
/**
|
|
25
|
+
* Create a mock model that simulates reasoning/thinking responses.
|
|
26
|
+
*
|
|
27
|
+
* Keyword detection (case-insensitive, in user message):
|
|
28
|
+
* - `"long reasoning"` → long reasoning block + text
|
|
29
|
+
* - `"multi-step reasoning"` → reasoning + tool call + reasoning + text
|
|
30
|
+
* - anything else → short reasoning + text (default)
|
|
31
|
+
*/
|
|
32
|
+
export declare function createMockReasoningModel(): MockLanguageModelV3;
|
|
33
|
+
//# sourceMappingURL=MockReasoningModel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MockReasoningModel.d.ts","sourceRoot":"","sources":["../../../../src/agents/testing/MockReasoningModel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,EAAE,mBAAmB,EAA0B,MAAM,SAAS,CAAC;AAuItE;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,IAAI,mBAAmB,CAqE9D"}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,8 +2,8 @@ export { UseAIServer } from './server';
|
|
|
2
2
|
export type { UseAIServerConfig, McpEndpointConfig, ToolDefinition, CorsOptions } from './types';
|
|
3
3
|
export type { ClientSession } from './server';
|
|
4
4
|
export type { Agent, AgentInput, EventEmitter, AgentResult } from './agents';
|
|
5
|
-
export { AISDKAgent, type AISDKAgentConfig, type MessageWithCacheContext, type CacheTtl, type CacheBreakpointResult, type CacheBreakpointFn } from './agents';
|
|
6
|
-
export type { UseAIServerPlugin, MessageHandler } from './plugins';
|
|
5
|
+
export { AISDKAgent, type AISDKAgentConfig, type MessageWithCacheContext, type CacheTtl, type CacheBreakpointResult, type CacheBreakpointFn, createMockReasoningModel } from './agents';
|
|
6
|
+
export type { UseAIServerPlugin, MessageHandler, BeforeRunAgentResult } from './plugins';
|
|
7
7
|
export { FeedbackPlugin } from './plugins';
|
|
8
8
|
export type { SpanProcessor } from './instrumentation';
|
|
9
9
|
export { logger } from './logger';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACjG,YAAY,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAG9C,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,KAAK,gBAAgB,EAAE,KAAK,uBAAuB,EAAE,KAAK,QAAQ,EAAE,KAAK,qBAAqB,EAAE,KAAK,iBAAiB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACjG,YAAY,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAG9C,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,KAAK,gBAAgB,EAAE,KAAK,uBAAuB,EAAE,KAAK,QAAQ,EAAE,KAAK,qBAAqB,EAAE,KAAK,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AAGxL,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACzF,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAG3C,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGvD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAGlC,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AAGzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAGzF,OAAO,EACL,uBAAuB,EACvB,KAAK,yBAAyB,EAC9B,KAAK,qBAAqB,EAC1B,yBAAyB,EACzB,KAAK,uBAAuB,GAC7B,MAAM,OAAO,CAAC;AAGf,OAAO,EACL,wBAAwB,EACxB,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,GAAG,EACH,EAAE,EACF,GAAG,GACJ,MAAM,SAAS,CAAC"}
|