@outputai/llm 0.6.1-next.d3c9b1f.0 → 0.6.1-next.f8d698e.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.
Files changed (47) hide show
  1. package/package.json +20 -12
  2. package/src/agent.js +15 -9
  3. package/src/agent.spec.js +295 -214
  4. package/src/ai_model.js +48 -126
  5. package/src/ai_model.spec.js +187 -746
  6. package/src/ai_provider.js +86 -0
  7. package/src/ai_provider.spec.js +147 -0
  8. package/src/ai_sdk.js +55 -79
  9. package/src/ai_sdk.spec.js +464 -611
  10. package/src/ai_sdk_options.js +61 -0
  11. package/src/ai_sdk_options.spec.js +164 -0
  12. package/src/cost/index.js +1 -1
  13. package/src/index.d.ts +267 -177
  14. package/src/index.js +3 -6
  15. package/src/prompt/escape.js +65 -0
  16. package/src/prompt/escape.spec.js +159 -0
  17. package/src/{load_content.js → prompt/load_content.js} +1 -22
  18. package/src/{load_content.spec.js → prompt/load_content.spec.js} +6 -6
  19. package/src/prompt/loader.js +49 -0
  20. package/src/prompt/loader.spec.js +274 -0
  21. package/src/{prompt_loader_validation.spec.js → prompt/loader_validation.spec.js} +40 -7
  22. package/src/prompt/parser.js +19 -0
  23. package/src/{parser.spec.js → prompt/parser.spec.js} +74 -29
  24. package/src/prompt/prepare_text.js +27 -0
  25. package/src/prompt/prepare_text.spec.js +141 -0
  26. package/src/{skill.js → prompt/skill.js} +19 -0
  27. package/src/prompt/skill.spec.js +172 -0
  28. package/src/{prompt_validations.js → prompt/validations.js} +35 -6
  29. package/src/{prompt_validations.spec.js → prompt/validations.spec.js} +254 -1
  30. package/src/utils/__fixtures__/image_response.json +38 -0
  31. package/src/utils/__fixtures__/stream_response.json +294 -0
  32. package/src/utils/__fixtures__/text_response.json +201 -0
  33. package/src/utils/error_handler.js +121 -0
  34. package/src/utils/error_handler.spec.js +300 -0
  35. package/src/utils/image.js +10 -0
  36. package/src/utils/image.spec.js +20 -0
  37. package/src/utils/response_wrappers.js +46 -19
  38. package/src/utils/response_wrappers.spec.js +130 -70
  39. package/src/utils/source_extraction.js +17 -27
  40. package/src/utils/trace.js +2 -3
  41. package/src/utils/trace.spec.js +9 -13
  42. package/src/validations.js +54 -2
  43. package/src/validations.spec.js +166 -0
  44. package/src/parser.js +0 -28
  45. package/src/prompt_loader.js +0 -80
  46. package/src/prompt_loader.spec.js +0 -358
  47. package/src/skill.d.ts +0 -49
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@outputai/llm",
3
- "version": "0.6.1-next.d3c9b1f.0",
3
+ "version": "0.6.1-next.f8d698e.0",
4
4
  "description": "Framework abstraction to interact with LLM models",
5
5
  "type": "module",
6
6
  "main": "src/index.js",
@@ -9,21 +9,29 @@
9
9
  "./src"
10
10
  ],
11
11
  "dependencies": {
12
- "@ai-sdk/amazon-bedrock": "4.0.96",
13
- "@ai-sdk/anthropic": "3.0.71",
14
- "@ai-sdk/azure": "3.0.54",
15
- "@ai-sdk/google-vertex": "4.0.112",
16
- "@ai-sdk/openai": "3.0.53",
17
- "@ai-sdk/perplexity": "3.0.29",
18
- "@exalabs/ai-sdk": "2.0.1",
19
- "@perplexity-ai/ai-sdk": "0.1.3",
20
- "@tavily/ai-sdk": "0.4.1",
21
- "ai": "6.0.168",
22
12
  "entities": "8.0.0",
23
13
  "gray-matter": "4.0.3",
24
14
  "liquidjs": "10.25.7",
25
15
  "undici": "8.1.0",
26
- "@outputai/core": "0.6.1-next.d3c9b1f.0"
16
+ "@outputai/core": "0.6.1-next.f8d698e.0"
17
+ },
18
+ "devDependencies": {
19
+ "ai": "6.0.168",
20
+ "@ai-sdk/amazon-bedrock": "4.0.111",
21
+ "@ai-sdk/anthropic": "3.0.81",
22
+ "@ai-sdk/azure": "3.0.68",
23
+ "@ai-sdk/google-vertex": "4.0.140",
24
+ "@ai-sdk/openai": "3.0.67",
25
+ "@ai-sdk/perplexity": "3.0.33"
26
+ },
27
+ "peerDependencies": {
28
+ "ai": ">=6 <7",
29
+ "@ai-sdk/amazon-bedrock": ">=4 <5",
30
+ "@ai-sdk/anthropic": ">=3 <4",
31
+ "@ai-sdk/azure": ">=3 <4",
32
+ "@ai-sdk/google-vertex": ">=4 <5",
33
+ "@ai-sdk/openai": ">=3 <4",
34
+ "@ai-sdk/perplexity": ">=3 <4"
27
35
  },
28
36
  "license": "Apache-2.0",
29
37
  "publishConfig": {
package/src/agent.js CHANGED
@@ -1,12 +1,12 @@
1
1
  import { ValidationError } from '@outputai/core';
2
2
  import { resolveInvocationDir } from '@outputai/core/sdk_utils';
3
3
  import { ToolLoopAgent as AIToolLoopAgent, stepCountIs } from 'ai';
4
- import { hydratePromptTemplate, loadAiSdkOptionsFromPrompt } from './ai_sdk.js';
4
+ import { loadAiSdkTextOptions } from './ai_sdk_options.js';
5
+ import { prepareTextPrompt } from './prompt/prepare_text.js';
5
6
  import { startTrace, endTraceWithError } from './utils/trace.js';
6
7
  import { wrapTextResponse, wrapStreamOnFinishResponse } from './utils/response_wrappers.js';
7
8
  import { ROLE, isRole, getContent } from './utils/message.js';
8
-
9
- export { skill } from './skill.js';
9
+ export { skill } from './prompt/skill.js';
10
10
 
11
11
  export const createMemoryConversationStore = () => {
12
12
  const messages = [];
@@ -23,8 +23,15 @@ export class Agent extends AIToolLoopAgent {
23
23
  #store;
24
24
 
25
25
  constructor( {
26
- prompt, promptDir, variables = {}, skills = [], tools = {},
27
- stopWhen, maxSteps = 10, conversationStore, ...rest
26
+ prompt,
27
+ promptDir,
28
+ variables = {},
29
+ skills = [],
30
+ tools: toolsArg,
31
+ stopWhen,
32
+ maxSteps = 10,
33
+ conversationStore,
34
+ ...rest
28
35
  } ) {
29
36
  if ( !prompt ) {
30
37
  throw new ValidationError( 'Agent requires a prompt' );
@@ -34,10 +41,9 @@ export class Agent extends AIToolLoopAgent {
34
41
  // breaks the call stack, so resolveInvocationDir() fails if called lazily.
35
42
  const resolvedPromptDir = promptDir ?? resolveInvocationDir();
36
43
 
37
- const { loadedPrompt, tools: mergedTools } =
38
- hydratePromptTemplate( prompt, variables, resolvedPromptDir, skills, tools );
44
+ const { loadedPrompt, tools } = prepareTextPrompt( { prompt, variables, promptDir: resolvedPromptDir, skills, tools: toolsArg } );
39
45
 
40
- const { messages: allMessages, ...constructorOptions } = loadAiSdkOptionsFromPrompt( loadedPrompt );
46
+ const { messages: allMessages, ...constructorOptions } = loadAiSdkTextOptions( loadedPrompt );
41
47
 
42
48
  // Extract system messages as `instructions` for the ToolLoopAgent constructor
43
49
  // and keep user messages for generate() calls — avoids provider errors
@@ -47,7 +53,7 @@ export class Agent extends AIToolLoopAgent {
47
53
  super( {
48
54
  ...constructorOptions,
49
55
  ...( systemContent ? { instructions: systemContent } : {} ),
50
- ...( Object.keys( mergedTools ).length > 0 ? { tools: mergedTools } : {} ),
56
+ ...( tools ? { tools } : {} ),
51
57
  stopWhen: stopWhen ?? stepCountIs( maxSteps ),
52
58
  ...rest
53
59
  } );