@sudobility/shapeshyft_engine 1.0.2 → 1.0.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.
Files changed (53) hide show
  1. package/dist/config/providers.d.ts +26 -6
  2. package/dist/config/providers.d.ts.map +1 -1
  3. package/dist/config/providers.js +320 -142
  4. package/dist/config/providers.js.map +1 -1
  5. package/dist/index.d.ts +2 -0
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +2 -0
  8. package/dist/index.js.map +1 -1
  9. package/dist/lib/cost-estimation.d.ts +52 -0
  10. package/dist/lib/cost-estimation.d.ts.map +1 -0
  11. package/dist/lib/cost-estimation.js +121 -0
  12. package/dist/lib/cost-estimation.js.map +1 -0
  13. package/dist/services/llm/anthropic.d.ts.map +1 -1
  14. package/dist/services/llm/anthropic.js +9 -6
  15. package/dist/services/llm/anthropic.js.map +1 -1
  16. package/dist/services/llm/cohere-schema.d.ts +26 -0
  17. package/dist/services/llm/cohere-schema.d.ts.map +1 -0
  18. package/dist/services/llm/cohere-schema.js +103 -0
  19. package/dist/services/llm/cohere-schema.js.map +1 -0
  20. package/dist/services/llm/compatible-usage.d.ts +29 -0
  21. package/dist/services/llm/compatible-usage.d.ts.map +1 -0
  22. package/dist/services/llm/compatible-usage.js +116 -0
  23. package/dist/services/llm/compatible-usage.js.map +1 -0
  24. package/dist/services/llm/custom.d.ts.map +1 -1
  25. package/dist/services/llm/custom.js +12 -3
  26. package/dist/services/llm/custom.js.map +1 -1
  27. package/dist/services/llm/gemini.d.ts +9 -1
  28. package/dist/services/llm/gemini.d.ts.map +1 -1
  29. package/dist/services/llm/gemini.js +63 -10
  30. package/dist/services/llm/gemini.js.map +1 -1
  31. package/dist/services/llm/groq.d.ts +6 -0
  32. package/dist/services/llm/groq.d.ts.map +1 -1
  33. package/dist/services/llm/groq.js +81 -14
  34. package/dist/services/llm/groq.js.map +1 -1
  35. package/dist/services/llm/index.d.ts +2 -2
  36. package/dist/services/llm/index.d.ts.map +1 -1
  37. package/dist/services/llm/index.js +13 -6
  38. package/dist/services/llm/index.js.map +1 -1
  39. package/dist/services/llm/openai.d.ts +19 -2
  40. package/dist/services/llm/openai.d.ts.map +1 -1
  41. package/dist/services/llm/openai.js +119 -73
  42. package/dist/services/llm/openai.js.map +1 -1
  43. package/dist/services/llm/types.d.ts +48 -4
  44. package/dist/services/llm/types.d.ts.map +1 -1
  45. package/dist/services/llm/usage-error.d.ts +23 -0
  46. package/dist/services/llm/usage-error.d.ts.map +1 -0
  47. package/dist/services/llm/usage-error.js +34 -0
  48. package/dist/services/llm/usage-error.js.map +1 -0
  49. package/dist/types/index.d.ts +52 -3
  50. package/dist/types/index.d.ts.map +1 -1
  51. package/dist/types/index.js +8 -4
  52. package/dist/types/index.js.map +1 -1
  53. package/package.json +1 -1
@@ -2,7 +2,7 @@
2
2
  * @fileoverview LLM provider factory and exports
3
3
  * @description Creates the appropriate LLM provider instance based on provider type.
4
4
  * OpenAI-compatible providers (Mistral, xAI, DeepSeek, Perplexity, Cohere) reuse
5
- * the OpenAIProvider class. Groq has a dedicated provider for Whisper transcription.
5
+ * the OpenAIProvider class, each with its own base URL. Groq has a dedicated provider for Whisper transcription.
6
6
  */
7
7
  import { OpenAIProvider } from "./openai.js";
8
8
  import { AnthropicProvider } from "./anthropic.js";
@@ -48,11 +48,17 @@ export function createLLMProvider(providerType, config) {
48
48
  ...config,
49
49
  endpointUrl: config.endpointUrl ?? OPENAI_COMPATIBLE_BASE_URLS[providerType],
50
50
  }, { disableThinking: true });
51
- // NOTE: Cohere's API is NOT OpenAI-compatible (different request/response
52
- // shape); routing it through OpenAIProvider will not work regardless of base
53
- // URL. It needs a dedicated provider — left as-is to avoid changing behavior.
51
+ /*
52
+ Cohere's native Chat API has its own request and response shape, but its
53
+ Compatibility API speaks OpenAI's -- except that it takes no
54
+ `tool_choice`, so structured output goes through `response_format`.
55
+ https://docs.cohere.com/docs/compatibility-api
56
+ */
54
57
  case "cohere":
55
- return new OpenAIProvider(config);
58
+ return new OpenAIProvider({
59
+ ...config,
60
+ endpointUrl: config.endpointUrl ?? OPENAI_COMPATIBLE_BASE_URLS[providerType],
61
+ }, { structuredOutput: "response_format" });
56
62
  case "lm_studio":
57
63
  return new CustomLLMProvider(config);
58
64
  default:
@@ -69,6 +75,7 @@ const OPENAI_COMPATIBLE_BASE_URLS = {
69
75
  xai: "https://api.x.ai/v1",
70
76
  deepseek: "https://api.deepseek.com/v1",
71
77
  perplexity: "https://api.perplexity.ai",
78
+ cohere: "https://api.cohere.ai/compatibility/v1",
72
79
  };
73
80
  /**
74
81
  * Provider endpoint hints for Type 3/4 endpoints
@@ -78,7 +85,7 @@ export const PROVIDER_ENDPOINTS = {
78
85
  anthropic: "https://api.anthropic.com/v1/messages",
79
86
  gemini: "https://generativelanguage.googleapis.com/v1beta/models/{model}:generateContent",
80
87
  mistral: "https://api.mistral.ai/v1/chat/completions",
81
- cohere: "https://api.cohere.ai/v1/chat",
88
+ cohere: "https://api.cohere.ai/compatibility/v1/chat/completions",
82
89
  groq: "https://api.groq.com/openai/v1/chat/completions",
83
90
  xai: "https://api.x.ai/v1/chat/completions",
84
91
  deepseek: "https://api.deepseek.com/v1/chat/completions",
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/llm/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAQhD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE3D;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,YAAyB,EACzB,MAAsB;IAEtB,QAAQ,YAAY,EAAE,CAAC;QACrB,KAAK,QAAQ;YACX,0EAA0E;YAC1E,2EAA2E;YAC3E,OAAO,IAAI,cAAc,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QACxD,KAAK,WAAW;YACd,OAAO,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACvC,KAAK,QAAQ;YACX,OAAO,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;QACpC,KAAK,MAAM;YACT,OAAO,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,0CAA0C;QAC7E,yEAAyE;QACzE,6DAA6D;QAC7D,KAAK,SAAS,CAAC;QACf,KAAK,KAAK,CAAC;QACX,KAAK,YAAY;YACf,OAAO,IAAI,cAAc,CAAC;gBACxB,GAAG,MAAM;gBACT,WAAW,EACT,MAAM,CAAC,WAAW,IAAI,2BAA2B,CAAC,YAAY,CAAC;aAClE,CAAC,CAAC;QACL;;;;;;;;UAQE;QACF,KAAK,UAAU;YACb,OAAO,IAAI,cAAc,CACvB;gBACE,GAAG,MAAM;gBACT,WAAW,EACT,MAAM,CAAC,WAAW,IAAI,2BAA2B,CAAC,YAAY,CAAC;aAClE,EACD,EAAE,eAAe,EAAE,IAAI,EAAE,CAC1B,CAAC;QACJ,0EAA0E;QAC1E,6EAA6E;QAC7E,8EAA8E;QAC9E,KAAK,QAAQ;YACX,OAAO,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;QACpC,KAAK,WAAW;YACd,OAAO,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACvC;YACE,MAAM,IAAI,KAAK,CAAC,0BAA0B,YAAY,EAAE,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,2BAA2B,GAAyC;IACxE,OAAO,EAAE,2BAA2B;IACpC,GAAG,EAAE,qBAAqB;IAC1B,QAAQ,EAAE,6BAA6B;IACvC,UAAU,EAAE,2BAA2B;CACxC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAgC;IAC7D,MAAM,EAAE,4CAA4C;IACpD,SAAS,EAAE,uCAAuC;IAClD,MAAM,EACJ,iFAAiF;IACnF,OAAO,EAAE,4CAA4C;IACrD,MAAM,EAAE,+BAA+B;IACvC,IAAI,EAAE,iDAAiD;IACvD,GAAG,EAAE,sCAAsC;IAC3C,QAAQ,EAAE,8CAA8C;IACxD,UAAU,EAAE,4CAA4C;IACxD,SAAS,EAAE,mBAAmB;CAC/B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/llm/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAShD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE3D;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,YAAyB,EACzB,MAAsB;IAEtB,QAAQ,YAAY,EAAE,CAAC;QACrB,KAAK,QAAQ;YACX,0EAA0E;YAC1E,2EAA2E;YAC3E,OAAO,IAAI,cAAc,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QACxD,KAAK,WAAW;YACd,OAAO,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACvC,KAAK,QAAQ;YACX,OAAO,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;QACpC,KAAK,MAAM;YACT,OAAO,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,0CAA0C;QAC7E,yEAAyE;QACzE,6DAA6D;QAC7D,KAAK,SAAS,CAAC;QACf,KAAK,KAAK,CAAC;QACX,KAAK,YAAY;YACf,OAAO,IAAI,cAAc,CAAC;gBACxB,GAAG,MAAM;gBACT,WAAW,EACT,MAAM,CAAC,WAAW,IAAI,2BAA2B,CAAC,YAAY,CAAC;aAClE,CAAC,CAAC;QACL;;;;;;;;UAQE;QACF,KAAK,UAAU;YACb,OAAO,IAAI,cAAc,CACvB;gBACE,GAAG,MAAM;gBACT,WAAW,EACT,MAAM,CAAC,WAAW,IAAI,2BAA2B,CAAC,YAAY,CAAC;aAClE,EACD,EAAE,eAAe,EAAE,IAAI,EAAE,CAC1B,CAAC;QACJ;;;;;UAKE;QACF,KAAK,QAAQ;YACX,OAAO,IAAI,cAAc,CACvB;gBACE,GAAG,MAAM;gBACT,WAAW,EACT,MAAM,CAAC,WAAW,IAAI,2BAA2B,CAAC,YAAY,CAAC;aAClE,EACD,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,CACxC,CAAC;QACJ,KAAK,WAAW;YACd,OAAO,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACvC;YACE,MAAM,IAAI,KAAK,CAAC,0BAA0B,YAAY,EAAE,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,2BAA2B,GAAyC;IACxE,OAAO,EAAE,2BAA2B;IACpC,GAAG,EAAE,qBAAqB;IAC1B,QAAQ,EAAE,6BAA6B;IACvC,UAAU,EAAE,2BAA2B;IACvC,MAAM,EAAE,wCAAwC;CACjD,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAgC;IAC7D,MAAM,EAAE,4CAA4C;IACpD,SAAS,EAAE,uCAAuC;IAClD,MAAM,EACJ,iFAAiF;IACnF,OAAO,EAAE,4CAA4C;IACrD,MAAM,EAAE,yDAAyD;IACjE,IAAI,EAAE,iDAAiD;IACvD,GAAG,EAAE,sCAAsC;IAC3C,QAAQ,EAAE,8CAA8C;IACxD,UAAU,EAAE,4CAA4C;IACxD,SAAS,EAAE,mBAAmB;CAC/B,CAAC"}
@@ -2,10 +2,21 @@
2
2
  * @fileoverview OpenAI LLM provider
3
3
  * @description Implements the ILLMProvider interface for OpenAI models.
4
4
  * Also used by Mistral, xAI, DeepSeek, Perplexity, and Cohere
5
- * (OpenAI-compatible APIs). Supports function calling for structured output,
6
- * multimodal input (images, audio), and audio output generation.
5
+ * (OpenAI-compatible APIs). Structured output is a forced function call,
6
+ * except for Cohere, whose compatibility API has no `tool_choice` and uses
7
+ * `response_format` instead. Supports multimodal input (images, audio) and
8
+ * audio output generation.
7
9
  */
8
10
  import { type ILLMProvider, type LLMRequest, type LLMResponse, type ProviderConfig } from "./types.js";
11
+ /**
12
+ * How a provider is made to return the endpoint's schema.
13
+ *
14
+ * - `tool_call`: a `structured_response` function with a forced `tool_choice`.
15
+ * - `response_format`: Cohere's `{ type: "json_object", schema }`, read from
16
+ * the message content. Cohere's compatibility API does not accept
17
+ * `tool_choice`, so a tool call there could not be forced.
18
+ */
19
+ export type StructuredOutputMode = "tool_call" | "response_format";
9
20
  /**
10
21
  * What a provider calls its cap on generated tokens.
11
22
  *
@@ -31,6 +42,9 @@ export declare class OpenAIProvider implements ILLMProvider {
31
42
  private disableThinking;
32
43
  /** Whether this client talks to OpenAI itself, or an OpenAI-compatible third party. */
33
44
  private isOpenAi;
45
+ private structuredOutput;
46
+ /** Request fields that ask for structured output, in this provider's dialect. */
47
+ private structuredOutputParams;
34
48
  constructor(config: ProviderConfig,
35
49
  /**
36
50
  * Per-provider quirks. Defaults keep every provider that works today
@@ -58,6 +72,8 @@ export declare class OpenAIProvider implements ILLMProvider {
58
72
  * only know `max_tokens`.
59
73
  */
60
74
  isOpenAi?: boolean;
75
+ /** How to request structured output. Default: `tool_call`. */
76
+ structuredOutput?: StructuredOutputMode;
61
77
  });
62
78
  generate(request: LLMRequest): Promise<LLMResponse>;
63
79
  /**
@@ -96,6 +112,7 @@ export declare class OpenAIProvider implements ILLMProvider {
96
112
  * 3. If search needed → web search → structure results.
97
113
  */
98
114
  private generateWithSearch;
115
+ private runSearchSteps;
99
116
  buildApiPayload(request: LLMRequest): Record<string, unknown>;
100
117
  }
101
118
  //# sourceMappingURL=openai.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../../src/services/llm/openai.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,cAAc,EACpB,MAAM,YAAY,CAAC;AAsBpB;;;;;;;;GAQG;AACH,MAAM,MAAM,eAAe,GAAG,YAAY,GAAG,uBAAuB,CAAC;AAgBrE;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,OAAO,EACjB,KAAK,EAAE,MAAM,GACZ,eAAe,CAIjB;AAED,qBAAa,cAAe,YAAW,YAAY;IACjD,QAAQ,CAAC,YAAY,EAAG,QAAQ,CAAU;IAC1C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,YAAY,CAAS;IAE7B,OAAO,CAAC,eAAe,CAAU;IAEjC,uFAAuF;IACvF,OAAO,CAAC,QAAQ,CAAU;gBAGxB,MAAM,EAAE,cAAc;IACtB;;;OAGG;IACH,OAAO,GAAE;QACP;;;;;;;;;;;;;WAaG;QACH,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B;;;;WAIG;QACH,QAAQ,CAAC,EAAE,OAAO,CAAC;KACf;IAgBF,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;IA4LzD;;;OAGG;IAKH,OAAO,CAAC,MAAM,CAAC,aAAa,CAUzB;IAEH,0EAA0E;IAC1E,OAAO,CAAC,qBAAqB;IAa7B;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAsBzB;;;OAGG;IAEH;;;OAGG;YACW,uBAAuB;IAwErC;;OAEG;YACW,SAAS;IAoCvB,qDAAqD;IACrD,OAAO,CAAC,mBAAmB;IAgC3B;;;;;;;OAOG;YACW,kBAAkB;IAyJhC,eAAe,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CA4E9D"}
1
+ {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../../src/services/llm/openai.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,WAAW,EAEhB,KAAK,cAAc,EACpB,MAAM,YAAY,CAAC;AA6CpB;;;;;;;GAOG;AACH,MAAM,MAAM,oBAAoB,GAAG,WAAW,GAAG,iBAAiB,CAAC;AAYnE;;;;;;;;GAQG;AACH,MAAM,MAAM,eAAe,GAAG,YAAY,GAAG,uBAAuB,CAAC;AAgBrE;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,OAAO,EACjB,KAAK,EAAE,MAAM,GACZ,eAAe,CAIjB;AAED,qBAAa,cAAe,YAAW,YAAY;IACjD,QAAQ,CAAC,YAAY,EAAG,QAAQ,CAAU;IAC1C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,YAAY,CAAS;IAE7B,OAAO,CAAC,eAAe,CAAU;IAEjC,uFAAuF;IACvF,OAAO,CAAC,QAAQ,CAAU;IAE1B,OAAO,CAAC,gBAAgB,CAAuB;IAE/C,iFAAiF;IACjF,OAAO,CAAC,sBAAsB;gBAyB5B,MAAM,EAAE,cAAc;IACtB;;;OAGG;IACH,OAAO,GAAE;QACP;;;;;;;;;;;;;WAaG;QACH,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B;;;;WAIG;QACH,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,8DAA8D;QAC9D,gBAAgB,CAAC,EAAE,oBAAoB,CAAC;KACpC;IAiBF,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;IA8LzD;;;OAGG;IAKH,OAAO,CAAC,MAAM,CAAC,aAAa,CAUzB;IAEH,0EAA0E;IAC1E,OAAO,CAAC,qBAAqB;IAa7B;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAsBzB;;;OAGG;IAEH;;;OAGG;YACW,uBAAuB;IAiFrC;;OAEG;YACW,SAAS;IAiCvB,qDAAqD;IACrD,OAAO,CAAC,mBAAmB;IAgC3B;;;;;;;OAOG;YACW,kBAAkB;YA8BlB,cAAc;IA8I5B,eAAe,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CA+D9D"}
@@ -2,8 +2,10 @@
2
2
  * @fileoverview OpenAI LLM provider
3
3
  * @description Implements the ILLMProvider interface for OpenAI models.
4
4
  * Also used by Mistral, xAI, DeepSeek, Perplexity, and Cohere
5
- * (OpenAI-compatible APIs). Supports function calling for structured output,
6
- * multimodal input (images, audio), and audio output generation.
5
+ * (OpenAI-compatible APIs). Structured output is a forced function call,
6
+ * except for Cohere, whose compatibility API has no `tool_choice` and uses
7
+ * `response_format` instead. Supports multimodal input (images, audio) and
8
+ * audio output generation.
7
9
  */
8
10
  import OpenAI from "openai";
9
11
  import { requiresEntityId, } from "./types.js";
@@ -11,6 +13,33 @@ import { getOpenAIAudioFormat } from "../../lib/media-constants.js";
11
13
  import { getModelCapabilities } from "../../config/providers.js";
12
14
  import { buildOutputStructureSection, buildResponseFormatSection, buildWebSearchRoutingSection, } from "../../lib/prompt-builder.js";
13
15
  import { normalizeFinishReason } from "./finish-reason.js";
16
+ import { addUsage, compatibleUsage } from "./compatible-usage.js";
17
+ import { attachUsage, getFailedInvocationUsage } from "./usage-error.js";
18
+ import { cohereResponseFormat } from "./cohere-schema.js";
19
+ /** Usage from a Responses API response, which names its fields differently. */
20
+ function responsesUsage(response) {
21
+ const inputTokens = response.usage?.input_tokens ?? 0;
22
+ const outputTokens = response.usage?.output_tokens ?? 0;
23
+ const inputDetails = response.usage?.input_tokens_details;
24
+ const cached = inputDetails?.cached_tokens ?? 0;
25
+ // GPT-5.6+ bills cache writes at 1.25x input; older SDK types omit the field.
26
+ const cacheWrite = inputDetails?.cache_write_tokens ?? 0;
27
+ const reasoning = response.usage?.output_tokens_details?.reasoning_tokens ?? 0;
28
+ // Only `search` actions carry the tool fee; `open_page` and `find_in_page`
29
+ // are web_search_call items too, but free.
30
+ const searches = response.output.filter(item => item.type === "web_search_call" &&
31
+ (item.action?.type ?? "search") ===
32
+ "search").length;
33
+ return {
34
+ promptTokens: inputTokens,
35
+ completionTokens: outputTokens,
36
+ totalTokens: response.usage?.total_tokens ?? inputTokens + outputTokens,
37
+ ...(cached ? { cachedInputTokens: cached } : {}),
38
+ ...(cacheWrite ? { cacheWriteInputTokens: cacheWrite } : {}),
39
+ ...(reasoning ? { reasoningTokens: reasoning } : {}),
40
+ ...(searches ? { searchCalls: searches } : {}),
41
+ };
42
+ }
14
43
  const DEFAULT_MODEL = "gpt-4o-mini";
15
44
  class OpenAIProviderError extends Error {
16
45
  details;
@@ -52,6 +81,29 @@ export class OpenAIProvider {
52
81
  disableThinking;
53
82
  /** Whether this client talks to OpenAI itself, or an OpenAI-compatible third party. */
54
83
  isOpenAi;
84
+ structuredOutput;
85
+ /** Request fields that ask for structured output, in this provider's dialect. */
86
+ structuredOutputParams(outputSchema) {
87
+ if (this.structuredOutput === "response_format") {
88
+ return { response_format: cohereResponseFormat(outputSchema) };
89
+ }
90
+ return {
91
+ tools: [
92
+ {
93
+ type: "function",
94
+ function: {
95
+ name: "structured_response",
96
+ description: "Generate structured response matching the schema",
97
+ parameters: outputSchema,
98
+ },
99
+ },
100
+ ],
101
+ tool_choice: {
102
+ type: "function",
103
+ function: { name: "structured_response" },
104
+ },
105
+ };
106
+ }
55
107
  constructor(config,
56
108
  /**
57
109
  * Per-provider quirks. Defaults keep every provider that works today
@@ -60,6 +112,7 @@ export class OpenAIProvider {
60
112
  options = {}) {
61
113
  this.disableThinking = options.disableThinking ?? false;
62
114
  this.isOpenAi = options.isOpenAi ?? false;
115
+ this.structuredOutput = options.structuredOutput ?? "tool_call";
63
116
  if (!config.apiKey) {
64
117
  throw new Error("OpenAI API key is required");
65
118
  }
@@ -115,17 +168,6 @@ export class OpenAIProvider {
115
168
  messages.push({ role: "system", content: request.systemPrompt });
116
169
  }
117
170
  messages.push({ role: "user", content: userContent });
118
- // Use function calling for structured output
119
- const tools = [
120
- {
121
- type: "function",
122
- function: {
123
- name: "structured_response",
124
- description: "Generate structured response matching the schema",
125
- parameters: request.outputSchema,
126
- },
127
- },
128
- ];
129
171
  // Audio output configuration - ONLY enable when endpoint expects audio output
130
172
  const modalities = ["text"];
131
173
  let audioConfig;
@@ -141,13 +183,9 @@ export class OpenAIProvider {
141
183
  model,
142
184
  messages,
143
185
  ...(audioConfig ? { modalities, audio: audioConfig } : {}),
144
- tools,
145
- tool_choice: {
146
- type: "function",
147
- function: { name: "structured_response" },
148
- },
186
+ ...this.structuredOutputParams(request.outputSchema),
149
187
  // Off where the model reasons by default: thinking mode rejects
150
- // `tool_choice` outright, so this is what keeps the line above legal.
188
+ // `tool_choice` outright, so this is what keeps the forced call legal.
151
189
  ...(this.disableThinking ? { thinking: { type: "disabled" } } : {}),
152
190
  temperature: request.temperature ?? 0,
153
191
  [tokenLimitParamFor(this.isOpenAi, model)]: request.maxTokens,
@@ -179,18 +217,25 @@ export class OpenAIProvider {
179
217
  });
180
218
  }
181
219
  }
182
- // Extract structured response from function call
183
- const toolCall = response.choices[0]?.message.tool_calls?.[0];
184
- if (!toolCall || toolCall.function.name !== "structured_response") {
185
- throw new Error("Expected function call response from OpenAI");
220
+ const usage = compatibleUsage(response.usage);
221
+ // Extract the structured response: the forced function call's arguments,
222
+ // or the message content in response_format mode.
223
+ let rawResponse;
224
+ if (this.structuredOutput === "response_format") {
225
+ const text = response.choices[0]?.message.content;
226
+ if (typeof text !== "string" || text.length === 0) {
227
+ throw attachUsage(new Error("Expected JSON message content from the provider"), usage, response.model);
228
+ }
229
+ rawResponse = text;
230
+ }
231
+ else {
232
+ const toolCall = response.choices[0]?.message.tool_calls?.[0];
233
+ if (!toolCall || toolCall.function.name !== "structured_response") {
234
+ throw attachUsage(new Error("Expected function call response from OpenAI"), usage, response.model);
235
+ }
236
+ rawResponse = toolCall.function.arguments;
186
237
  }
187
- const rawResponse = toolCall.function.arguments;
188
238
  const finishReason = normalizeFinishReason(response.choices[0]?.finish_reason);
189
- const usage = {
190
- promptTokens: response.usage?.prompt_tokens ?? 0,
191
- completionTokens: response.usage?.completion_tokens ?? 0,
192
- totalTokens: response.usage?.total_tokens ?? 0,
193
- };
194
239
  /*
195
240
  Why the stop reason is read BEFORE parsing.
196
241
 
@@ -218,7 +263,7 @@ export class OpenAIProvider {
218
263
  catch (error) {
219
264
  // Not truncated, so genuinely malformed. Carry a head of the payload:
220
265
  // "Unable to parse JSON string" alone leaves nothing to diagnose from.
221
- throw new Error(`Model returned unparseable JSON (${error instanceof Error ? error.message : String(error)}). First 300 chars: ${rawResponse.slice(0, 300)}`);
266
+ throw attachUsage(new Error(`Model returned unparseable JSON (${error instanceof Error ? error.message : String(error)}). First 300 chars: ${rawResponse.slice(0, 300)}`), usage, response.model);
222
267
  }
223
268
  return {
224
269
  content,
@@ -314,24 +359,29 @@ export class OpenAIProvider {
314
359
  temperature,
315
360
  max_output_tokens: maxTokens,
316
361
  });
362
+ const usage = responsesUsage(response);
317
363
  const functionCall = response.output.find((item) => item.type === "function_call" && item.name === "structured_response");
318
364
  if (!functionCall) {
319
- throw new OpenAIProviderError("Expected structured_response function call from Responses API", {
365
+ throw attachUsage(new OpenAIProviderError("Expected structured_response function call from Responses API", {
320
366
  model,
321
367
  responseId: response.id,
322
368
  outputItems: response.output.map(item => ({
323
369
  type: item.type,
324
370
  ...("name" in item ? { name: item.name } : {}),
325
371
  })),
326
- });
372
+ }), usage, response.model);
373
+ }
374
+ let content;
375
+ try {
376
+ content = JSON.parse(functionCall.arguments);
377
+ }
378
+ catch (error) {
379
+ throw attachUsage(error, usage, response.model);
327
380
  }
328
381
  return {
329
- content: JSON.parse(functionCall.arguments),
382
+ content,
330
383
  rawResponse: functionCall.arguments,
331
- usage: {
332
- inputTokens: response.usage?.input_tokens ?? 0,
333
- outputTokens: response.usage?.output_tokens ?? 0,
334
- },
384
+ usage,
335
385
  model: response.model,
336
386
  // The Responses API reports truncation as an incomplete status with a
337
387
  // reason, rather than a finish_reason on the choice.
@@ -361,10 +411,7 @@ export class OpenAIProvider {
361
411
  });
362
412
  return {
363
413
  summary: response.output_text ?? "",
364
- usage: {
365
- inputTokens: response.usage?.input_tokens ?? 0,
366
- outputTokens: response.usage?.output_tokens ?? 0,
367
- },
414
+ usage: responsesUsage(response),
368
415
  };
369
416
  }
370
417
  /** Build Responses API input from an LLM request. */
@@ -400,13 +447,36 @@ export class OpenAIProvider {
400
447
  * 3. If search needed → web search → structure results.
401
448
  */
402
449
  async generateWithSearch(request) {
450
+ /*
451
+ Up to three billed calls make one invocation. Each step's usage is added
452
+ to the total only once that step succeeds, so a failure part-way reports
453
+ the completed steps plus whatever the failing call attached -- counted
454
+ once -- instead of pricing the whole search as free.
455
+ */
456
+ let total;
457
+ const record = (usage) => (total = total ? addUsage(total, usage) : usage);
458
+ try {
459
+ return await this.runSearchSteps(request, record);
460
+ }
461
+ catch (error) {
462
+ const failed = getFailedInvocationUsage(error);
463
+ const consumed = failed
464
+ ? total
465
+ ? addUsage(total, failed.usage)
466
+ : failed.usage
467
+ : total;
468
+ if (consumed) {
469
+ throw attachUsage(error, consumed, failed?.model ?? request.model ?? this.defaultModel);
470
+ }
471
+ throw error;
472
+ }
473
+ }
474
+ async runSearchSteps(request, record) {
403
475
  console.log(`[web-search] generateWithSearch() entered`);
404
476
  const model = request.model ?? this.defaultModel;
405
477
  const startTime = Date.now();
406
478
  const userSchema = request.outputSchema;
407
479
  const temperature = request.temperature ?? 0;
408
- let totalInputTokens = 0;
409
- let totalOutputTokens = 0;
410
480
  // --- Step 1: Try to answer (Responses API, forced function call) ------
411
481
  console.log(`[web-search] Step 1: Triage via Responses API, model=${model}`);
412
482
  const triageSchema = this.buildTriageSchema(userSchema);
@@ -425,8 +495,7 @@ export class OpenAIProvider {
425
495
  console.log(`[web-search] System prompt:\n${triageSystemPrompt}`);
426
496
  const triageInput = this.buildResponsesInput(triageSystemPrompt, request.prompt, request.media);
427
497
  const triageResult = await this.callResponsesStructured(model, triageInput, triageSchema, temperature, request.maxTokens);
428
- totalInputTokens += triageResult.usage.inputTokens;
429
- totalOutputTokens += triageResult.usage.outputTokens;
498
+ const triageUsage = record(triageResult.usage);
430
499
  const triageData = triageResult.content;
431
500
  console.log(`[web-search] Triage result: web_search_needed=${triageData.web_search_needed}`);
432
501
  // --- If no search needed, or user_data is a clarification form, return directly
@@ -443,11 +512,7 @@ export class OpenAIProvider {
443
512
  return {
444
513
  content: triageData.user_data,
445
514
  rawResponse,
446
- usage: {
447
- promptTokens: totalInputTokens,
448
- completionTokens: totalOutputTokens,
449
- totalTokens: totalInputTokens + totalOutputTokens,
450
- },
515
+ usage: triageUsage,
451
516
  model: triageResult.model,
452
517
  provider: this.providerName,
453
518
  latencyMs: Date.now() - startTime,
@@ -457,8 +522,7 @@ export class OpenAIProvider {
457
522
  // --- Step 2: Web search -----------------------------------------------
458
523
  console.log(`[web-search] Step 2: Searching the web`);
459
524
  const searchResult = await this.searchWeb(model, request.prompt, temperature);
460
- totalInputTokens += searchResult.usage.inputTokens;
461
- totalOutputTokens += searchResult.usage.outputTokens;
525
+ record(searchResult.usage);
462
526
  console.log(`[web-search] Step 2 done: ${searchResult.summary.length} chars`);
463
527
  // --- Step 3: Structure search results (Responses API) -----------------
464
528
  console.log(`[web-search] Step 3: Structuring search results`);
@@ -472,17 +536,12 @@ export class OpenAIProvider {
472
536
  "Using ONLY the information from the web search results above, " +
473
537
  "generate the structured response.");
474
538
  const structureResult = await this.callResponsesStructured(model, structureInput, userSchema, temperature, request.maxTokens);
475
- totalInputTokens += structureResult.usage.inputTokens;
476
- totalOutputTokens += structureResult.usage.outputTokens;
539
+ const totalUsage = record(structureResult.usage);
477
540
  console.log(`[web-search] Step 3 done, total time: ${Date.now() - startTime}ms`);
478
541
  return {
479
542
  content: structureResult.content,
480
543
  rawResponse: structureResult.rawResponse,
481
- usage: {
482
- promptTokens: totalInputTokens,
483
- completionTokens: totalOutputTokens,
484
- totalTokens: totalInputTokens + totalOutputTokens,
485
- },
544
+ usage: totalUsage,
486
545
  model: structureResult.model,
487
546
  provider: this.providerName,
488
547
  latencyMs: Date.now() - startTime,
@@ -539,20 +598,7 @@ export class OpenAIProvider {
539
598
  model,
540
599
  messages,
541
600
  ...(audioConfig ? { modalities, audio: audioConfig } : {}),
542
- tools: [
543
- {
544
- type: "function",
545
- function: {
546
- name: "structured_response",
547
- description: "Generate structured response matching the schema",
548
- parameters: request.outputSchema,
549
- },
550
- },
551
- ],
552
- tool_choice: {
553
- type: "function",
554
- function: { name: "structured_response" },
555
- },
601
+ ...this.structuredOutputParams(request.outputSchema),
556
602
  temperature: request.temperature ?? 0,
557
603
  [tokenLimitParamFor(this.isOpenAi, model)]: request.maxTokens,
558
604
  };
@@ -1 +1 @@
1
- {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../../src/services/llm/openai.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../../src/services/llm/openai.ts"],"names":[],"mappings":"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"}
@@ -55,16 +55,60 @@ export type LLMRequest = LLMRequestWithUrlOutput | LLMRequestWithBase64Output;
55
55
  * Type guard for URL output requests
56
56
  */
57
57
  export declare function requiresEntityId(request: LLMRequest): request is LLMRequestWithUrlOutput;
58
+ /**
59
+ * Token accounting for one invocation, which may span several provider calls.
60
+ *
61
+ * The first three fields are what every provider reports. The rest are the
62
+ * parts of the bill that plain token counts misprice; an adapter sets only
63
+ * what its provider reports, and `estimateUsageCost` treats an absent field as
64
+ * zero or as "billed at the plain rate".
65
+ */
66
+ export interface LLMUsage {
67
+ promptTokens: number;
68
+ /** Everything billed at the output rate, including thinking tokens. */
69
+ completionTokens: number;
70
+ totalTokens: number;
71
+ /** Part of `promptTokens` served from the provider's prompt cache. */
72
+ cachedInputTokens?: number;
73
+ /** Part of `promptTokens` written to the prompt cache, where writes cost extra. */
74
+ cacheWriteInputTokens?: number;
75
+ /** Part of `promptTokens` that was audio, not cached, for providers billing audio by the token. */
76
+ audioInputTokens?: number;
77
+ /** Part of `completionTokens` spent reasoning. Informational; already priced as output. */
78
+ reasoningTokens?: number;
79
+ /** Reasoning tokens billed apart from `completionTokens` (Perplexity). */
80
+ separateReasoningTokens?: number;
81
+ /** Citation tokens billed apart from `completionTokens` (Perplexity). */
82
+ citationTokens?: number;
83
+ /** Web search calls or search queries the provider bills per call. */
84
+ searchCalls?: number;
85
+ /** Billable provider requests. Absent means one. */
86
+ requests?: number;
87
+ /** Largest prompt sent in any single request, for long-context tiers. Absent: `promptTokens`. */
88
+ maxPromptTokens?: number;
89
+ /**
90
+ * The complete cost in cents, when it is known without the catalog: billed
91
+ * by the provider itself (xAI, Perplexity) or priced by the adapter from a
92
+ * per-model and per-tool breakdown (Groq Compound). Replaces the token-based
93
+ * estimate entirely.
94
+ */
95
+ billedCostCents?: number;
96
+ }
58
97
  /**
59
98
  * Response from an LLM provider
60
99
  */
61
100
  export interface LLMResponse {
62
101
  content: unknown;
63
102
  rawResponse: string;
64
- usage: {
65
- promptTokens: number;
66
- completionTokens: number;
67
- totalTokens: number;
103
+ usage: LLMUsage;
104
+ /**
105
+ * Audio transcribed before generation (Groq Whisper). Priced against the
106
+ * transcription model, which is not `model` when an extraction model
107
+ * produced the structured output.
108
+ */
109
+ transcription?: {
110
+ model: string;
111
+ billedSeconds: number;
68
112
  };
69
113
  model: string;
70
114
  provider: LlmProvider;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/llm/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,UAAU,EACV,WAAW,EACX,YAAY,EACZ,cAAc,EACf,MAAM,sBAAsB,CAAC;AAG9B,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC;AAG1D,OAAO,EACL,YAAY,EACZ,UAAU,EACV,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGzD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAM5D;;GAEG;AACH,UAAU,cAAc;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,UAAU,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yCAAyC;IACzC,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;IACvB,+CAA+C;IAC/C,kBAAkB,CAAC,EAAE;QACnB,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,KAAK,CAAC,EAAE,OAAO,CAAC;KACjB,CAAC;IACF,+CAA+C;IAC/C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,6EAA6E;IAC7E,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,+DAA+D;IAC/D,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,UAAU,uBAAwB,SAAQ,cAAc;IACtD,iBAAiB,EAAE,KAAK,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,UAAU,0BAA2B,SAAQ,cAAc;IACzD,iBAAiB,CAAC,EAAE,QAAQ,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,uBAAuB,GAAG,0BAA0B,CAAC;AAE9E;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,UAAU,GAClB,OAAO,IAAI,uBAAuB,CAEpC;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE;QACL,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,MAAM,CAAC;QACzB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,WAAW,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,oEAAoE;IACpE,cAAc,CAAC,EAAE,cAAc,EAAE,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAC;IAEnC;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAEpD;;;OAGG;IACH,eAAe,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/D"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/llm/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @fileoverview Usage carried on a failed invocation.
3
+ * @description A provider that answers with something we cannot use -- JSON
4
+ * that does not parse, no tool call -- still bills the tokens it generated.
5
+ * Adapters attach what they know to the error so the caller can record the
6
+ * cost of a failure instead of treating it as free.
7
+ */
8
+ import type { LLMResponse, LLMUsage } from "./types.js";
9
+ export interface FailedInvocationUsage {
10
+ usage: LLMUsage;
11
+ model: string;
12
+ /** Audio transcribed before the failing step, which is billed regardless. */
13
+ transcription?: LLMResponse["transcription"];
14
+ }
15
+ /**
16
+ * Attach usage to an error and return it, for `throw attachUsage(...)`.
17
+ * Replaces any usage already attached: a multi-call flow reads the inner
18
+ * call's usage with `getFailedInvocationUsage`, adds its own, and re-attaches.
19
+ */
20
+ export declare function attachUsage<E>(error: E, usage: LLMUsage, model: string, transcription?: LLMResponse["transcription"]): E;
21
+ /** The usage a failed invocation consumed, if its adapter could tell. */
22
+ export declare function getFailedInvocationUsage(error: unknown): FailedInvocationUsage | undefined;
23
+ //# sourceMappingURL=usage-error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usage-error.d.ts","sourceRoot":"","sources":["../../../src/services/llm/usage-error.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAExD,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,QAAQ,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,6EAA6E;IAC7E,aAAa,CAAC,EAAE,WAAW,CAAC,eAAe,CAAC,CAAC;CAC9C;AAID;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAC3B,KAAK,EAAE,CAAC,EACR,KAAK,EAAE,QAAQ,EACf,KAAK,EAAE,MAAM,EACb,aAAa,CAAC,EAAE,WAAW,CAAC,eAAe,CAAC,GAC3C,CAAC,CAaH;AAED,yEAAyE;AACzE,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,OAAO,GACb,qBAAqB,GAAG,SAAS,CAGnC"}