@snap-agent/core 0.1.2 → 0.1.4

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/index.d.mts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { P as ProviderConfig, a as ProviderType, b as Plugin, S as StoredPluginConfig, A as AgentData, c as StorageAdapter, d as AgentConfig, e as AgentFile, R as RAGDocument, I as IngestOptions, f as IngestResult, B as BulkOperation, g as BulkResult, U as URLSource, h as URLIngestResult, T as ThreadData, i as ThreadConfig, M as MessageRole, j as MessageAttachment, k as MessageData, C as ClientConfig, l as ChatRequest, m as ChatResponse, n as StreamCallbacks, o as RAGPlugin, p as ToolPlugin, q as MiddlewarePlugin, r as AnalyticsPlugin, s as RAGContext } from './index-m2vDW79n.mjs';
2
2
  export { L as AgentNotFoundError, K as AgentSDKError, u as BasePlugin, D as DataTransform, H as ErrorTrackingData, w as IngestionSchedule, Q as InvalidConfigError, W as MemoryStorage, V as MongoDBStorage, Y as MongoDBStorageConfig, y as PerformanceTimings, J as PluginRegistryInterface, O as ProviderNotFoundError, t as RAGConfig, z as RAGMetrics, F as RequestTrackingData, G as ResponseTrackingData, N as ThreadNotFoundError, E as TokenMetrics, x as Tool, v as URLSourceAuth, X as UpstashStorage, Z as UpstashStorageConfig } from './index-m2vDW79n.mjs';
3
- import { LanguageModel, UserModelMessage, AssistantModelMessage } from 'ai';
3
+ import { LanguageModel, UserModelMessage, AssistantModelMessage, Schema } from 'ai';
4
4
 
5
5
  /**
6
6
  * Provider factory for creating language model instances
@@ -30,21 +30,27 @@ declare class ProviderFactory {
30
30
  }
31
31
  /**
32
32
  * Common model names for quick reference
33
+ * Updated: February 2026
33
34
  */
34
35
  declare const Models: {
35
36
  readonly OpenAI: {
37
+ readonly GPT5: "gpt-5";
38
+ readonly GPT5_MINI: "gpt-5-mini";
36
39
  readonly GPT4O: "gpt-4o";
37
40
  readonly GPT4O_MINI: "gpt-4o-mini";
38
- readonly GPT4_TURBO: "gpt-4-turbo";
39
- readonly GPT35_TURBO: "gpt-3.5-turbo";
41
+ readonly O1: "o1";
42
+ readonly O1_MINI: "o1-mini";
40
43
  };
41
44
  readonly Anthropic: {
42
- readonly CLAUDE_35_SONNET: "claude-3-5-sonnet-20241022";
43
- readonly CLAUDE_35_HAIKU: "claude-3-5-haiku-20241022";
44
- readonly CLAUDE_3_OPUS: "claude-3-opus-20240229";
45
+ readonly CLAUDE_4_OPUS: "claude-opus-4-20250514";
46
+ readonly CLAUDE_4_SONNET: "claude-sonnet-4-20250514";
47
+ readonly CLAUDE_37_SONNET: "claude-3-7-sonnet-latest";
48
+ readonly CLAUDE_35_SONNET: "claude-3-5-sonnet-latest";
49
+ readonly CLAUDE_35_HAIKU: "claude-3-5-haiku-latest";
45
50
  };
46
51
  readonly Google: {
47
- readonly GEMINI_2_FLASH: "gemini-2.0-flash-exp";
52
+ readonly GEMINI_2_FLASH: "gemini-2.0-flash";
53
+ readonly GEMINI_2_FLASH_LITE: "gemini-2.0-flash-lite";
48
54
  readonly GEMINI_15_PRO: "gemini-1.5-pro";
49
55
  readonly GEMINI_15_FLASH: "gemini-1.5-flash";
50
56
  };
@@ -215,12 +221,19 @@ declare class Agent {
215
221
  /**
216
222
  * Generate a text response with optional plugin support
217
223
  */
218
- generateResponse(messages: AIMessage$1[], options?: {
224
+ generateResponse<T = unknown>(messages: AIMessage$1[], options?: {
219
225
  useRAG?: boolean;
220
226
  ragFilters?: Record<string, any>;
221
227
  threadId?: string;
228
+ output?: {
229
+ mode: 'json';
230
+ } | {
231
+ mode: 'object';
232
+ schema: Schema<T>;
233
+ };
222
234
  }): Promise<{
223
235
  text: string;
236
+ parsed?: T;
224
237
  metadata?: Record<string, any>;
225
238
  }>;
226
239
  /**
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { P as ProviderConfig, a as ProviderType, b as Plugin, S as StoredPluginConfig, A as AgentData, c as StorageAdapter, d as AgentConfig, e as AgentFile, R as RAGDocument, I as IngestOptions, f as IngestResult, B as BulkOperation, g as BulkResult, U as URLSource, h as URLIngestResult, T as ThreadData, i as ThreadConfig, M as MessageRole, j as MessageAttachment, k as MessageData, C as ClientConfig, l as ChatRequest, m as ChatResponse, n as StreamCallbacks, o as RAGPlugin, p as ToolPlugin, q as MiddlewarePlugin, r as AnalyticsPlugin, s as RAGContext } from './index-m2vDW79n.js';
2
2
  export { L as AgentNotFoundError, K as AgentSDKError, u as BasePlugin, D as DataTransform, H as ErrorTrackingData, w as IngestionSchedule, Q as InvalidConfigError, W as MemoryStorage, V as MongoDBStorage, Y as MongoDBStorageConfig, y as PerformanceTimings, J as PluginRegistryInterface, O as ProviderNotFoundError, t as RAGConfig, z as RAGMetrics, F as RequestTrackingData, G as ResponseTrackingData, N as ThreadNotFoundError, E as TokenMetrics, x as Tool, v as URLSourceAuth, X as UpstashStorage, Z as UpstashStorageConfig } from './index-m2vDW79n.js';
3
- import { LanguageModel, UserModelMessage, AssistantModelMessage } from 'ai';
3
+ import { LanguageModel, UserModelMessage, AssistantModelMessage, Schema } from 'ai';
4
4
 
5
5
  /**
6
6
  * Provider factory for creating language model instances
@@ -30,21 +30,27 @@ declare class ProviderFactory {
30
30
  }
31
31
  /**
32
32
  * Common model names for quick reference
33
+ * Updated: February 2026
33
34
  */
34
35
  declare const Models: {
35
36
  readonly OpenAI: {
37
+ readonly GPT5: "gpt-5";
38
+ readonly GPT5_MINI: "gpt-5-mini";
36
39
  readonly GPT4O: "gpt-4o";
37
40
  readonly GPT4O_MINI: "gpt-4o-mini";
38
- readonly GPT4_TURBO: "gpt-4-turbo";
39
- readonly GPT35_TURBO: "gpt-3.5-turbo";
41
+ readonly O1: "o1";
42
+ readonly O1_MINI: "o1-mini";
40
43
  };
41
44
  readonly Anthropic: {
42
- readonly CLAUDE_35_SONNET: "claude-3-5-sonnet-20241022";
43
- readonly CLAUDE_35_HAIKU: "claude-3-5-haiku-20241022";
44
- readonly CLAUDE_3_OPUS: "claude-3-opus-20240229";
45
+ readonly CLAUDE_4_OPUS: "claude-opus-4-20250514";
46
+ readonly CLAUDE_4_SONNET: "claude-sonnet-4-20250514";
47
+ readonly CLAUDE_37_SONNET: "claude-3-7-sonnet-latest";
48
+ readonly CLAUDE_35_SONNET: "claude-3-5-sonnet-latest";
49
+ readonly CLAUDE_35_HAIKU: "claude-3-5-haiku-latest";
45
50
  };
46
51
  readonly Google: {
47
- readonly GEMINI_2_FLASH: "gemini-2.0-flash-exp";
52
+ readonly GEMINI_2_FLASH: "gemini-2.0-flash";
53
+ readonly GEMINI_2_FLASH_LITE: "gemini-2.0-flash-lite";
48
54
  readonly GEMINI_15_PRO: "gemini-1.5-pro";
49
55
  readonly GEMINI_15_FLASH: "gemini-1.5-flash";
50
56
  };
@@ -215,12 +221,19 @@ declare class Agent {
215
221
  /**
216
222
  * Generate a text response with optional plugin support
217
223
  */
218
- generateResponse(messages: AIMessage$1[], options?: {
224
+ generateResponse<T = unknown>(messages: AIMessage$1[], options?: {
219
225
  useRAG?: boolean;
220
226
  ragFilters?: Record<string, any>;
221
227
  threadId?: string;
228
+ output?: {
229
+ mode: 'json';
230
+ } | {
231
+ mode: 'object';
232
+ schema: Schema<T>;
233
+ };
222
234
  }): Promise<{
223
235
  text: string;
236
+ parsed?: T;
224
237
  metadata?: Record<string, any>;
225
238
  }>;
226
239
  /**
package/dist/index.js CHANGED
@@ -7688,11 +7688,37 @@ var Agent = class _Agent {
7688
7688
  ragMetadata = allMetadata;
7689
7689
  }
7690
7690
  const model = await this.providerFactory.getModel(this.data.provider, this.data.model);
7691
- const { text } = await (0, import_ai.generateText)({
7692
- model,
7693
- messages: beforeResult.messages,
7694
- system: systemPrompt
7695
- });
7691
+ let text;
7692
+ let parsed;
7693
+ if (options?.output?.mode === "object") {
7694
+ const result = await (0, import_ai.generateText)({
7695
+ model,
7696
+ messages: beforeResult.messages,
7697
+ system: systemPrompt,
7698
+ experimental_output: import_ai.Output.object({ schema: options.output.schema })
7699
+ });
7700
+ text = JSON.stringify(result.experimental_output);
7701
+ parsed = result.experimental_output;
7702
+ } else if (options?.output?.mode === "json") {
7703
+ const jsonSystemPrompt = systemPrompt + "\n\n---\nOUTPUT FORMAT: You MUST respond with valid JSON only. No markdown code blocks, no explanations, no additional text - just raw JSON that can be parsed directly.";
7704
+ const result = await (0, import_ai.generateText)({
7705
+ model,
7706
+ messages: beforeResult.messages,
7707
+ system: jsonSystemPrompt
7708
+ });
7709
+ text = result.text;
7710
+ try {
7711
+ parsed = JSON.parse(text);
7712
+ } catch {
7713
+ }
7714
+ } else {
7715
+ const result = await (0, import_ai.generateText)({
7716
+ model,
7717
+ messages: beforeResult.messages,
7718
+ system: systemPrompt
7719
+ });
7720
+ text = result.text;
7721
+ }
7696
7722
  const afterResult = await this.pluginManager.executeAfterResponse(text, {
7697
7723
  agentId: this.data.id,
7698
7724
  threadId: options?.threadId,
@@ -7708,6 +7734,7 @@ var Agent = class _Agent {
7708
7734
  });
7709
7735
  return {
7710
7736
  text: afterResult.response,
7737
+ ...parsed !== void 0 && { parsed },
7711
7738
  metadata: {
7712
7739
  ...afterResult.metadata,
7713
7740
  ragMetadata,
@@ -8196,18 +8223,31 @@ var ProviderFactory = class {
8196
8223
  };
8197
8224
  var Models = {
8198
8225
  OpenAI: {
8226
+ // GPT-5 series (latest)
8227
+ GPT5: "gpt-5",
8228
+ GPT5_MINI: "gpt-5-mini",
8229
+ // GPT-4o series (stable)
8199
8230
  GPT4O: "gpt-4o",
8200
8231
  GPT4O_MINI: "gpt-4o-mini",
8201
- GPT4_TURBO: "gpt-4-turbo",
8202
- GPT35_TURBO: "gpt-3.5-turbo"
8232
+ // Reasoning models
8233
+ O1: "o1",
8234
+ O1_MINI: "o1-mini"
8203
8235
  },
8204
8236
  Anthropic: {
8205
- CLAUDE_35_SONNET: "claude-3-5-sonnet-20241022",
8206
- CLAUDE_35_HAIKU: "claude-3-5-haiku-20241022",
8207
- CLAUDE_3_OPUS: "claude-3-opus-20240229"
8237
+ // Claude 4 series (latest)
8238
+ CLAUDE_4_OPUS: "claude-opus-4-20250514",
8239
+ CLAUDE_4_SONNET: "claude-sonnet-4-20250514",
8240
+ // Claude 3.7 series
8241
+ CLAUDE_37_SONNET: "claude-3-7-sonnet-latest",
8242
+ // Claude 3.5 series (stable)
8243
+ CLAUDE_35_SONNET: "claude-3-5-sonnet-latest",
8244
+ CLAUDE_35_HAIKU: "claude-3-5-haiku-latest"
8208
8245
  },
8209
8246
  Google: {
8210
- GEMINI_2_FLASH: "gemini-2.0-flash-exp",
8247
+ // Gemini 2.0 series (latest)
8248
+ GEMINI_2_FLASH: "gemini-2.0-flash",
8249
+ GEMINI_2_FLASH_LITE: "gemini-2.0-flash-lite",
8250
+ // Gemini 1.5 series (stable)
8211
8251
  GEMINI_15_PRO: "gemini-1.5-pro",
8212
8252
  GEMINI_15_FLASH: "gemini-1.5-flash"
8213
8253
  }
package/dist/index.mjs CHANGED
@@ -5,7 +5,7 @@ import {
5
5
  } from "./chunk-FS7G3ID4.mjs";
6
6
 
7
7
  // src/core/Agent.ts
8
- import { generateText, streamText } from "ai";
8
+ import { generateText, streamText, Output } from "ai";
9
9
 
10
10
  // src/core/PluginManager.ts
11
11
  var PluginManager = class {
@@ -352,11 +352,37 @@ var Agent = class _Agent {
352
352
  ragMetadata = allMetadata;
353
353
  }
354
354
  const model = await this.providerFactory.getModel(this.data.provider, this.data.model);
355
- const { text } = await generateText({
356
- model,
357
- messages: beforeResult.messages,
358
- system: systemPrompt
359
- });
355
+ let text;
356
+ let parsed;
357
+ if (options?.output?.mode === "object") {
358
+ const result = await generateText({
359
+ model,
360
+ messages: beforeResult.messages,
361
+ system: systemPrompt,
362
+ experimental_output: Output.object({ schema: options.output.schema })
363
+ });
364
+ text = JSON.stringify(result.experimental_output);
365
+ parsed = result.experimental_output;
366
+ } else if (options?.output?.mode === "json") {
367
+ const jsonSystemPrompt = systemPrompt + "\n\n---\nOUTPUT FORMAT: You MUST respond with valid JSON only. No markdown code blocks, no explanations, no additional text - just raw JSON that can be parsed directly.";
368
+ const result = await generateText({
369
+ model,
370
+ messages: beforeResult.messages,
371
+ system: jsonSystemPrompt
372
+ });
373
+ text = result.text;
374
+ try {
375
+ parsed = JSON.parse(text);
376
+ } catch {
377
+ }
378
+ } else {
379
+ const result = await generateText({
380
+ model,
381
+ messages: beforeResult.messages,
382
+ system: systemPrompt
383
+ });
384
+ text = result.text;
385
+ }
360
386
  const afterResult = await this.pluginManager.executeAfterResponse(text, {
361
387
  agentId: this.data.id,
362
388
  threadId: options?.threadId,
@@ -372,6 +398,7 @@ var Agent = class _Agent {
372
398
  });
373
399
  return {
374
400
  text: afterResult.response,
401
+ ...parsed !== void 0 && { parsed },
375
402
  metadata: {
376
403
  ...afterResult.metadata,
377
404
  ragMetadata,
@@ -860,18 +887,31 @@ var ProviderFactory = class {
860
887
  };
861
888
  var Models = {
862
889
  OpenAI: {
890
+ // GPT-5 series (latest)
891
+ GPT5: "gpt-5",
892
+ GPT5_MINI: "gpt-5-mini",
893
+ // GPT-4o series (stable)
863
894
  GPT4O: "gpt-4o",
864
895
  GPT4O_MINI: "gpt-4o-mini",
865
- GPT4_TURBO: "gpt-4-turbo",
866
- GPT35_TURBO: "gpt-3.5-turbo"
896
+ // Reasoning models
897
+ O1: "o1",
898
+ O1_MINI: "o1-mini"
867
899
  },
868
900
  Anthropic: {
869
- CLAUDE_35_SONNET: "claude-3-5-sonnet-20241022",
870
- CLAUDE_35_HAIKU: "claude-3-5-haiku-20241022",
871
- CLAUDE_3_OPUS: "claude-3-opus-20240229"
901
+ // Claude 4 series (latest)
902
+ CLAUDE_4_OPUS: "claude-opus-4-20250514",
903
+ CLAUDE_4_SONNET: "claude-sonnet-4-20250514",
904
+ // Claude 3.7 series
905
+ CLAUDE_37_SONNET: "claude-3-7-sonnet-latest",
906
+ // Claude 3.5 series (stable)
907
+ CLAUDE_35_SONNET: "claude-3-5-sonnet-latest",
908
+ CLAUDE_35_HAIKU: "claude-3-5-haiku-latest"
872
909
  },
873
910
  Google: {
874
- GEMINI_2_FLASH: "gemini-2.0-flash-exp",
911
+ // Gemini 2.0 series (latest)
912
+ GEMINI_2_FLASH: "gemini-2.0-flash",
913
+ GEMINI_2_FLASH_LITE: "gemini-2.0-flash-lite",
914
+ // Gemini 1.5 series (stable)
875
915
  GEMINI_15_PRO: "gemini-1.5-pro",
876
916
  GEMINI_15_FLASH: "gemini-1.5-flash"
877
917
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@snap-agent/core",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "description": "SnapAgent - The lightweight, snap-in AI agent SDK. Multi-provider support. Edge-runtime compatible.",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",
@@ -89,6 +89,7 @@
89
89
  "eslint": "^8.0.0",
90
90
  "mongodb": "^7.0.0",
91
91
  "tsup": "^8.0.0",
92
+ "tsx": "^4.21.0",
92
93
  "typescript": "^5.8.0",
93
94
  "vitest": "^1.0.0"
94
95
  },