@yourgpt/llm-sdk 2.1.3 → 2.1.4-alpha.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 (58) hide show
  1. package/README.md +59 -0
  2. package/dist/adapters/index.d.mts +9 -2
  3. package/dist/adapters/index.d.ts +9 -2
  4. package/dist/adapters/index.js +421 -19
  5. package/dist/adapters/index.js.map +1 -1
  6. package/dist/adapters/index.mjs +421 -19
  7. package/dist/adapters/index.mjs.map +1 -1
  8. package/dist/index.d.mts +164 -11
  9. package/dist/index.d.ts +164 -11
  10. package/dist/index.js +638 -54
  11. package/dist/index.js.map +1 -1
  12. package/dist/index.mjs +635 -55
  13. package/dist/index.mjs.map +1 -1
  14. package/dist/providers/anthropic/index.d.mts +1 -1
  15. package/dist/providers/anthropic/index.d.ts +1 -1
  16. package/dist/providers/anthropic/index.js +95 -1
  17. package/dist/providers/anthropic/index.js.map +1 -1
  18. package/dist/providers/anthropic/index.mjs +95 -1
  19. package/dist/providers/anthropic/index.mjs.map +1 -1
  20. package/dist/providers/azure/index.d.mts +1 -1
  21. package/dist/providers/azure/index.d.ts +1 -1
  22. package/dist/providers/azure/index.js +51 -5
  23. package/dist/providers/azure/index.js.map +1 -1
  24. package/dist/providers/azure/index.mjs +51 -5
  25. package/dist/providers/azure/index.mjs.map +1 -1
  26. package/dist/providers/google/index.d.mts +1 -1
  27. package/dist/providers/google/index.d.ts +1 -1
  28. package/dist/providers/google/index.js +76 -0
  29. package/dist/providers/google/index.js.map +1 -1
  30. package/dist/providers/google/index.mjs +76 -0
  31. package/dist/providers/google/index.mjs.map +1 -1
  32. package/dist/providers/ollama/index.d.mts +2 -2
  33. package/dist/providers/ollama/index.d.ts +2 -2
  34. package/dist/providers/ollama/index.js +51 -8
  35. package/dist/providers/ollama/index.js.map +1 -1
  36. package/dist/providers/ollama/index.mjs +51 -8
  37. package/dist/providers/ollama/index.mjs.map +1 -1
  38. package/dist/providers/openai/index.d.mts +1 -1
  39. package/dist/providers/openai/index.d.ts +1 -1
  40. package/dist/providers/openai/index.js +301 -3
  41. package/dist/providers/openai/index.js.map +1 -1
  42. package/dist/providers/openai/index.mjs +301 -3
  43. package/dist/providers/openai/index.mjs.map +1 -1
  44. package/dist/providers/openrouter/index.d.mts +1 -1
  45. package/dist/providers/openrouter/index.d.ts +1 -1
  46. package/dist/providers/openrouter/index.js +301 -3
  47. package/dist/providers/openrouter/index.js.map +1 -1
  48. package/dist/providers/openrouter/index.mjs +301 -3
  49. package/dist/providers/openrouter/index.mjs.map +1 -1
  50. package/dist/providers/xai/index.d.mts +1 -1
  51. package/dist/providers/xai/index.d.ts +1 -1
  52. package/dist/providers/xai/index.js +51 -5
  53. package/dist/providers/xai/index.js.map +1 -1
  54. package/dist/providers/xai/index.mjs +51 -5
  55. package/dist/providers/xai/index.mjs.map +1 -1
  56. package/dist/{types-D20jKwJW.d.mts → types-COAOEe_y.d.mts} +68 -8
  57. package/dist/{types-D20jKwJW.d.ts → types-COAOEe_y.d.ts} +68 -8
  58. package/package.json +1 -1
@@ -361,6 +361,44 @@ function generateMessageId() {
361
361
  }
362
362
 
363
363
  // src/adapters/base.ts
364
+ function stringifyForDebug(value) {
365
+ return JSON.stringify(
366
+ value,
367
+ (_key, currentValue) => {
368
+ if (typeof currentValue === "bigint") {
369
+ return currentValue.toString();
370
+ }
371
+ if (currentValue instanceof Error) {
372
+ return {
373
+ name: currentValue.name,
374
+ message: currentValue.message,
375
+ stack: currentValue.stack
376
+ };
377
+ }
378
+ return currentValue;
379
+ },
380
+ 2
381
+ );
382
+ }
383
+ function logProviderPayload(provider, label, payload, enabled) {
384
+ if (!enabled) {
385
+ return;
386
+ }
387
+ if (label.toLowerCase().includes("stream ")) {
388
+ return;
389
+ }
390
+ try {
391
+ console.log(
392
+ `[llm-sdk:${provider}] ${label}
393
+ ${stringifyForDebug(payload)}`
394
+ );
395
+ } catch (error) {
396
+ console.log(
397
+ `[llm-sdk:${provider}] ${label} (failed to stringify payload)`,
398
+ error
399
+ );
400
+ }
401
+ }
364
402
  function hasMediaAttachments(message) {
365
403
  const attachments = message.metadata?.attachments;
366
404
  return attachments?.some(
@@ -708,6 +746,26 @@ var AnthropicAdapter = class {
708
746
  }
709
747
  return messages;
710
748
  }
749
+ buildNativeSearchTools(tools, variant = "bm25") {
750
+ const nativeSearchTool = variant === "regex" ? {
751
+ type: "tool_search_tool_regex_20251119",
752
+ name: "tool_search_tool_regex"
753
+ } : {
754
+ type: "tool_search_tool_bm25_20251119",
755
+ name: "tool_search_tool_bm25"
756
+ };
757
+ const providerTools = tools.filter((tool) => tool.available !== false).map((tool) => ({
758
+ name: tool.name,
759
+ description: tool.description,
760
+ input_schema: tool.inputSchema ?? {
761
+ type: "object",
762
+ properties: {},
763
+ required: []
764
+ },
765
+ defer_loading: tool.deferLoading === true
766
+ }));
767
+ return [nativeSearchTool, ...providerTools];
768
+ }
711
769
  /**
712
770
  * Build common request options for both streaming and non-streaming
713
771
  */
@@ -720,7 +778,11 @@ var AnthropicAdapter = class {
720
778
  const formatted = formatMessagesForAnthropic2(request.messages);
721
779
  messages = formatted.messages;
722
780
  }
723
- const tools = request.actions?.map((action) => ({
781
+ const anthropicNativeSearch = request.providerToolOptions?.anthropic?.nativeToolSearch;
782
+ const tools = anthropicNativeSearch?.enabled ? this.buildNativeSearchTools(
783
+ request.toolDefinitions ?? [],
784
+ anthropicNativeSearch.variant
785
+ ) : request.actions?.map((action) => ({
724
786
  name: action.name,
725
787
  description: action.description,
726
788
  input_schema: {
@@ -773,6 +835,19 @@ var AnthropicAdapter = class {
773
835
  messages,
774
836
  tools: tools.length ? tools : void 0
775
837
  };
838
+ const anthropicToolOptions = request.providerToolOptions?.anthropic;
839
+ if (tools.length > 0 && anthropicToolOptions) {
840
+ if (anthropicToolOptions.toolChoice || anthropicToolOptions.disableParallelToolUse !== void 0) {
841
+ const toolChoice = typeof anthropicToolOptions.toolChoice === "object" ? {
842
+ type: "tool",
843
+ name: anthropicToolOptions.toolChoice.name
844
+ } : anthropicToolOptions.toolChoice ? { type: anthropicToolOptions.toolChoice } : { type: "auto" };
845
+ if (anthropicToolOptions.disableParallelToolUse !== void 0) {
846
+ toolChoice.disable_parallel_tool_use = anthropicToolOptions.disableParallelToolUse;
847
+ }
848
+ options.tool_choice = toolChoice;
849
+ }
850
+ }
776
851
  if (serverToolConfiguration) {
777
852
  options.server_tool_configuration = serverToolConfiguration;
778
853
  }
@@ -795,7 +870,19 @@ var AnthropicAdapter = class {
795
870
  stream: false
796
871
  };
797
872
  try {
873
+ logProviderPayload(
874
+ "anthropic",
875
+ "request payload",
876
+ nonStreamingOptions,
877
+ request.debug
878
+ );
798
879
  const response = await client.messages.create(nonStreamingOptions);
880
+ logProviderPayload(
881
+ "anthropic",
882
+ "response payload",
883
+ response,
884
+ request.debug
885
+ );
799
886
  let content = "";
800
887
  let thinking = "";
801
888
  const toolCalls = [];
@@ -828,6 +915,12 @@ var AnthropicAdapter = class {
828
915
  const messageId = generateMessageId();
829
916
  yield { type: "message:start", id: messageId };
830
917
  try {
918
+ logProviderPayload(
919
+ "anthropic",
920
+ "request payload",
921
+ options,
922
+ request.debug
923
+ );
831
924
  const stream = await client.messages.stream(options);
832
925
  let currentToolUse = null;
833
926
  let isInThinkingBlock = false;
@@ -835,6 +928,7 @@ var AnthropicAdapter = class {
835
928
  let citationIndex = 0;
836
929
  let usage;
837
930
  for await (const event of stream) {
931
+ logProviderPayload("anthropic", "stream event", event, request.debug);
838
932
  if (request.signal?.aborted) {
839
933
  break;
840
934
  }