@librechat/agents 3.1.89 → 3.1.91

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 (145) hide show
  1. package/dist/cjs/agents/AgentContext.cjs +9 -5
  2. package/dist/cjs/agents/AgentContext.cjs.map +1 -1
  3. package/dist/cjs/graphs/Graph.cjs +53 -14
  4. package/dist/cjs/graphs/Graph.cjs.map +1 -1
  5. package/dist/cjs/hooks/executeHooks.cjs +14 -7
  6. package/dist/cjs/hooks/executeHooks.cjs.map +1 -1
  7. package/dist/cjs/langfuse.cjs +234 -0
  8. package/dist/cjs/langfuse.cjs.map +1 -0
  9. package/dist/cjs/llm/anthropic/index.cjs +8 -2
  10. package/dist/cjs/llm/anthropic/index.cjs.map +1 -1
  11. package/dist/cjs/llm/anthropic/utils/message_inputs.cjs +34 -0
  12. package/dist/cjs/llm/anthropic/utils/message_inputs.cjs.map +1 -1
  13. package/dist/cjs/main.cjs +34 -0
  14. package/dist/cjs/main.cjs.map +1 -1
  15. package/dist/cjs/run.cjs +44 -27
  16. package/dist/cjs/run.cjs.map +1 -1
  17. package/dist/cjs/stream.cjs +10 -3
  18. package/dist/cjs/stream.cjs.map +1 -1
  19. package/dist/cjs/tools/BashExecutor.cjs +10 -9
  20. package/dist/cjs/tools/BashExecutor.cjs.map +1 -1
  21. package/dist/cjs/tools/BashProgrammaticToolCalling.cjs +12 -8
  22. package/dist/cjs/tools/BashProgrammaticToolCalling.cjs.map +1 -1
  23. package/dist/cjs/tools/CodeExecutor.cjs +35 -11
  24. package/dist/cjs/tools/CodeExecutor.cjs.map +1 -1
  25. package/dist/cjs/tools/CodeSessionFileSummary.cjs +63 -0
  26. package/dist/cjs/tools/CodeSessionFileSummary.cjs.map +1 -0
  27. package/dist/cjs/tools/ProgrammaticToolCalling.cjs +16 -12
  28. package/dist/cjs/tools/ProgrammaticToolCalling.cjs.map +1 -1
  29. package/dist/cjs/tools/ToolNode.cjs +8 -5
  30. package/dist/cjs/tools/ToolNode.cjs.map +1 -1
  31. package/dist/cjs/tools/cloudflare/CloudflareBridgeRuntime.cjs +380 -0
  32. package/dist/cjs/tools/cloudflare/CloudflareBridgeRuntime.cjs.map +1 -0
  33. package/dist/cjs/tools/cloudflare/CloudflareProgrammaticToolCalling.cjs +997 -0
  34. package/dist/cjs/tools/cloudflare/CloudflareProgrammaticToolCalling.cjs.map +1 -0
  35. package/dist/cjs/tools/cloudflare/CloudflareSandboxExecutionEngine.cjs +575 -0
  36. package/dist/cjs/tools/cloudflare/CloudflareSandboxExecutionEngine.cjs.map +1 -0
  37. package/dist/cjs/tools/cloudflare/CloudflareSandboxTools.cjs +165 -0
  38. package/dist/cjs/tools/cloudflare/CloudflareSandboxTools.cjs.map +1 -0
  39. package/dist/cjs/tools/local/LocalExecutionEngine.cjs +17 -5
  40. package/dist/cjs/tools/local/LocalExecutionEngine.cjs.map +1 -1
  41. package/dist/cjs/tools/local/resolveLocalExecutionTools.cjs +110 -6
  42. package/dist/cjs/tools/local/resolveLocalExecutionTools.cjs.map +1 -1
  43. package/dist/cjs/tools/subagent/SubagentExecutor.cjs +319 -29
  44. package/dist/cjs/tools/subagent/SubagentExecutor.cjs.map +1 -1
  45. package/dist/esm/agents/AgentContext.mjs +9 -5
  46. package/dist/esm/agents/AgentContext.mjs.map +1 -1
  47. package/dist/esm/graphs/Graph.mjs +53 -14
  48. package/dist/esm/graphs/Graph.mjs.map +1 -1
  49. package/dist/esm/hooks/executeHooks.mjs +14 -7
  50. package/dist/esm/hooks/executeHooks.mjs.map +1 -1
  51. package/dist/esm/langfuse.mjs +226 -0
  52. package/dist/esm/langfuse.mjs.map +1 -0
  53. package/dist/esm/llm/anthropic/index.mjs +9 -3
  54. package/dist/esm/llm/anthropic/index.mjs.map +1 -1
  55. package/dist/esm/llm/anthropic/utils/message_inputs.mjs +33 -1
  56. package/dist/esm/llm/anthropic/utils/message_inputs.mjs.map +1 -1
  57. package/dist/esm/main.mjs +7 -2
  58. package/dist/esm/main.mjs.map +1 -1
  59. package/dist/esm/run.mjs +44 -27
  60. package/dist/esm/run.mjs.map +1 -1
  61. package/dist/esm/stream.mjs +10 -3
  62. package/dist/esm/stream.mjs.map +1 -1
  63. package/dist/esm/tools/BashExecutor.mjs +11 -10
  64. package/dist/esm/tools/BashExecutor.mjs.map +1 -1
  65. package/dist/esm/tools/BashProgrammaticToolCalling.mjs +13 -9
  66. package/dist/esm/tools/BashProgrammaticToolCalling.mjs.map +1 -1
  67. package/dist/esm/tools/CodeExecutor.mjs +29 -12
  68. package/dist/esm/tools/CodeExecutor.mjs.map +1 -1
  69. package/dist/esm/tools/CodeSessionFileSummary.mjs +60 -0
  70. package/dist/esm/tools/CodeSessionFileSummary.mjs.map +1 -0
  71. package/dist/esm/tools/ProgrammaticToolCalling.mjs +17 -13
  72. package/dist/esm/tools/ProgrammaticToolCalling.mjs.map +1 -1
  73. package/dist/esm/tools/ToolNode.mjs +8 -5
  74. package/dist/esm/tools/ToolNode.mjs.map +1 -1
  75. package/dist/esm/tools/cloudflare/CloudflareBridgeRuntime.mjs +378 -0
  76. package/dist/esm/tools/cloudflare/CloudflareBridgeRuntime.mjs.map +1 -0
  77. package/dist/esm/tools/cloudflare/CloudflareProgrammaticToolCalling.mjs +994 -0
  78. package/dist/esm/tools/cloudflare/CloudflareProgrammaticToolCalling.mjs.map +1 -0
  79. package/dist/esm/tools/cloudflare/CloudflareSandboxExecutionEngine.mjs +566 -0
  80. package/dist/esm/tools/cloudflare/CloudflareSandboxExecutionEngine.mjs.map +1 -0
  81. package/dist/esm/tools/cloudflare/CloudflareSandboxTools.mjs +155 -0
  82. package/dist/esm/tools/cloudflare/CloudflareSandboxTools.mjs.map +1 -0
  83. package/dist/esm/tools/local/LocalExecutionEngine.mjs +17 -6
  84. package/dist/esm/tools/local/LocalExecutionEngine.mjs.map +1 -1
  85. package/dist/esm/tools/local/resolveLocalExecutionTools.mjs +111 -7
  86. package/dist/esm/tools/local/resolveLocalExecutionTools.mjs.map +1 -1
  87. package/dist/esm/tools/subagent/SubagentExecutor.mjs +320 -31
  88. package/dist/esm/tools/subagent/SubagentExecutor.mjs.map +1 -1
  89. package/dist/types/agents/AgentContext.d.ts +4 -1
  90. package/dist/types/graphs/Graph.d.ts +6 -5
  91. package/dist/types/index.d.ts +1 -0
  92. package/dist/types/langfuse.d.ts +48 -0
  93. package/dist/types/llm/anthropic/index.d.ts +3 -1
  94. package/dist/types/llm/anthropic/utils/message_inputs.d.ts +4 -0
  95. package/dist/types/tools/BashExecutor.d.ts +3 -3
  96. package/dist/types/tools/CodeExecutor.d.ts +10 -3
  97. package/dist/types/tools/CodeSessionFileSummary.d.ts +3 -0
  98. package/dist/types/tools/ProgrammaticToolCalling.d.ts +4 -4
  99. package/dist/types/tools/cloudflare/CloudflareBridgeRuntime.d.ts +23 -0
  100. package/dist/types/tools/cloudflare/CloudflareProgrammaticToolCalling.d.ts +4 -0
  101. package/dist/types/tools/cloudflare/CloudflareSandboxExecutionEngine.d.ts +21 -0
  102. package/dist/types/tools/cloudflare/CloudflareSandboxTools.d.ts +22 -0
  103. package/dist/types/tools/cloudflare/index.d.ts +4 -0
  104. package/dist/types/tools/local/LocalExecutionEngine.d.ts +1 -0
  105. package/dist/types/tools/subagent/SubagentExecutor.d.ts +8 -5
  106. package/dist/types/types/graph.d.ts +8 -0
  107. package/dist/types/types/tools.d.ts +120 -5
  108. package/package.json +4 -4
  109. package/src/__tests__/stream.eagerEventExecution.test.ts +66 -0
  110. package/src/agents/AgentContext.ts +13 -3
  111. package/src/graphs/Graph.ts +60 -16
  112. package/src/hooks/__tests__/executeHooks.test.ts +38 -0
  113. package/src/hooks/executeHooks.ts +27 -7
  114. package/src/index.ts +1 -0
  115. package/src/langfuse.ts +358 -0
  116. package/src/llm/anthropic/index.ts +27 -3
  117. package/src/llm/anthropic/llm.spec.ts +60 -1
  118. package/src/llm/anthropic/utils/message_inputs.ts +46 -0
  119. package/src/run.ts +60 -38
  120. package/src/specs/langfuse-config.test.ts +57 -0
  121. package/src/specs/langfuse-metadata.test.ts +19 -1
  122. package/src/stream.ts +13 -3
  123. package/src/tools/BashExecutor.ts +21 -10
  124. package/src/tools/BashProgrammaticToolCalling.ts +21 -9
  125. package/src/tools/CodeExecutor.ts +55 -12
  126. package/src/tools/CodeSessionFileSummary.ts +80 -0
  127. package/src/tools/ProgrammaticToolCalling.ts +25 -12
  128. package/src/tools/ToolNode.ts +8 -5
  129. package/src/tools/__tests__/BashExecutor.test.ts +9 -0
  130. package/src/tools/__tests__/CloudflareSandboxExecution.test.ts +537 -0
  131. package/src/tools/__tests__/CodeApiAuthHeaders.test.ts +43 -0
  132. package/src/tools/__tests__/ProgrammaticToolCalling.test.ts +100 -16
  133. package/src/tools/__tests__/SubagentExecutor.test.ts +540 -6
  134. package/src/tools/__tests__/ToolNode.outputReferences.test.ts +52 -0
  135. package/src/tools/__tests__/subagentHooks.test.ts +237 -0
  136. package/src/tools/cloudflare/CloudflareBridgeRuntime.ts +480 -0
  137. package/src/tools/cloudflare/CloudflareProgrammaticToolCalling.ts +1162 -0
  138. package/src/tools/cloudflare/CloudflareSandboxExecutionEngine.ts +744 -0
  139. package/src/tools/cloudflare/CloudflareSandboxTools.ts +225 -0
  140. package/src/tools/cloudflare/index.ts +4 -0
  141. package/src/tools/local/LocalExecutionEngine.ts +20 -4
  142. package/src/tools/local/resolveLocalExecutionTools.ts +169 -7
  143. package/src/tools/subagent/SubagentExecutor.ts +514 -36
  144. package/src/types/graph.ts +9 -0
  145. package/src/types/tools.ts +143 -5
@@ -303,9 +303,8 @@ export type FileRef = {
303
303
  * `true` when the codeapi sandbox echoed this entry as an unchanged
304
304
  * passthrough of an input the caller already owns (skill files,
305
305
  * downloaded inputs whose hash matched the baseline, inherited
306
- * `.dirkeep` markers). The tool-result formatter renders these as
307
- * "Available files" rather than "Generated files" so the LLM doesn't
308
- * conflate infrastructure inputs with newly-produced outputs.
306
+ * `.dirkeep` markers). The host can use this flag to skip
307
+ * post-processing work for files the caller already owns.
309
308
  */
310
309
  inherited?: true;
311
310
  };
@@ -506,11 +505,12 @@ export type ToolOutputReferencesConfig = {
506
505
  maxTotalSize?: number;
507
506
  };
508
507
 
509
- export type ToolExecutionEngine = 'sandbox' | 'local';
508
+ export type ToolExecutionEngine = 'sandbox' | 'local' | 'cloudflare-sandbox';
510
509
 
511
510
  /**
512
511
  * Records pre-write file contents so callers can rewind edits/writes
513
- * made by the local engine. Implementations live in `src/tools/local`.
512
+ * made by local-compatible coding-tool engines. Implementations live
513
+ * in `src/tools/local`.
514
514
  */
515
515
  export interface LocalFileCheckpointer {
516
516
  /**
@@ -635,6 +635,12 @@ export type LocalExecConfig = {
635
635
  * overridden together for non-host engines.
636
636
  */
637
637
  fs?: import('@/tools/local/workspaceFS').WorkspaceFS;
638
+ /**
639
+ * Set by custom execution backends that already provide their own
640
+ * sandbox boundary. Suppresses the local host-sandbox warning while
641
+ * preserving the warning for plain host `child_process` execution.
642
+ */
643
+ sandboxed?: boolean;
638
644
  };
639
645
 
640
646
  export type LocalExecutionConfig = {
@@ -791,11 +797,143 @@ export type LocalExecutionConfig = {
791
797
  };
792
798
  };
793
799
 
800
+ export type CloudflareSandboxExecOptions = {
801
+ cwd?: string;
802
+ env?: Record<string, string | undefined>;
803
+ timeout?: number;
804
+ stream?: boolean;
805
+ onOutput?: (stream: 'stdout' | 'stderr', data: string) => void;
806
+ signal?: AbortSignal;
807
+ };
808
+
809
+ export type CloudflareSandboxExecResult = {
810
+ success?: boolean;
811
+ exitCode: number;
812
+ stdout: string;
813
+ stderr: string;
814
+ command?: string;
815
+ duration?: number;
816
+ timestamp?: string;
817
+ };
818
+
819
+ export type CloudflareSandboxReadFileResult =
820
+ | string
821
+ | Buffer
822
+ | Uint8Array
823
+ | {
824
+ content: string | Buffer | Uint8Array | ReadableStream<Uint8Array>;
825
+ size?: number;
826
+ mimeType?: string;
827
+ encoding?: 'utf-8' | 'utf8' | 'base64';
828
+ isBinary?: boolean;
829
+ };
830
+
831
+ export type CloudflareSandboxListFilesOptions = {
832
+ recursive?: boolean;
833
+ includeHidden?: boolean;
834
+ };
835
+
836
+ export type CloudflareSandboxFileInfo = {
837
+ name: string;
838
+ absolutePath?: string;
839
+ relativePath?: string;
840
+ type?: 'file' | 'directory' | 'symlink' | 'other';
841
+ size?: number;
842
+ modifiedAt?: string;
843
+ mode?: string;
844
+ };
845
+
846
+ export type CloudflareSandboxListFilesResult =
847
+ | CloudflareSandboxFileInfo[]
848
+ | {
849
+ files: CloudflareSandboxFileInfo[];
850
+ count?: number;
851
+ path?: string;
852
+ success?: boolean;
853
+ };
854
+
855
+ export interface CloudflareSandboxRuntime {
856
+ exec(
857
+ command: string,
858
+ options?: CloudflareSandboxExecOptions
859
+ ): Promise<CloudflareSandboxExecResult>;
860
+ readFile(
861
+ path: string,
862
+ options?: { encoding?: string }
863
+ ): Promise<CloudflareSandboxReadFileResult>;
864
+ writeFile(
865
+ path: string,
866
+ content: string | ReadableStream<Uint8Array>,
867
+ options?: { encoding?: string }
868
+ ): Promise<unknown>;
869
+ mkdir(path: string, options?: { recursive?: boolean }): Promise<unknown>;
870
+ listFiles(
871
+ path: string,
872
+ options?: CloudflareSandboxListFilesOptions
873
+ ): Promise<CloudflareSandboxListFilesResult>;
874
+ deleteFile(path: string): Promise<unknown>;
875
+ }
876
+
877
+ export type CloudflareSandboxExecutionConfig = {
878
+ sandbox:
879
+ | CloudflareSandboxRuntime
880
+ | (() => CloudflareSandboxRuntime | Promise<CloudflareSandboxRuntime>);
881
+ /** Working directory inside the sandbox. Defaults to `/workspace`. */
882
+ workspaceRoot?: string;
883
+ /** Extra environment variables merged into sandbox command executions. */
884
+ env?: Record<string, string | undefined>;
885
+ /** Default timeout for sandbox commands, in milliseconds. */
886
+ timeoutMs?: number;
887
+ /** Maximum stdout/stderr characters surfaced to the model. */
888
+ maxOutputChars?: number;
889
+ /**
890
+ * Add the built-in coding suite when `engine` is `cloudflare-sandbox`.
891
+ * Defaults to true, matching the local execution backend.
892
+ */
893
+ includeCodingTools?: boolean;
894
+ /**
895
+ * Optional exact coding-tool names to expose when `includeCodingTools`
896
+ * is on. Defaults to the full local-parity Cloudflare bundle. Use this
897
+ * to publish a bash-only sandbox surface, for example file/search tools
898
+ * plus `bash_tool` and `run_tools_with_bash`, without exposing
899
+ * `execute_code`.
900
+ */
901
+ codingToolNames?: readonly string[];
902
+ /** Optional shell executable for bash-style tools. Defaults to `bash`. */
903
+ shell?: string;
904
+ /**
905
+ * Optional project-level compile check configuration. Mirrors the local
906
+ * execution backend.
907
+ */
908
+ compileCheck?: LocalExecutionConfig['compileCheck'];
909
+ /** Optional read-only guard for mutating coding tools. */
910
+ readOnly?: boolean;
911
+ /** Permit dangerous commands that the validator otherwise blocks. */
912
+ allowDangerousCommands?: LocalExecutionConfig['allowDangerousCommands'];
913
+ /** Tree-sitter-bash AST validation pass for bash commands. */
914
+ bashAst?: LocalExecutionConfig['bashAst'];
915
+ /**
916
+ * Enable per-Run file checkpointing for `edit_file` / `write_file`
917
+ * against the Cloudflare Sandbox workspace.
918
+ */
919
+ fileCheckpointing?: LocalExecutionConfig['fileCheckpointing'];
920
+ /** Maximum bytes to read in `read_file` before returning a stub. */
921
+ maxReadBytes?: LocalExecutionConfig['maxReadBytes'];
922
+ /** Controls whether `read_file` returns binary files as attachments. */
923
+ attachReadAttachments?: LocalExecutionConfig['attachReadAttachments'];
924
+ /** Maximum pre-encoding byte size to embed inline. */
925
+ maxAttachmentBytes?: LocalExecutionConfig['maxAttachmentBytes'];
926
+ /** Run a fast per-file syntax check after successful edits/writes. */
927
+ postEditSyntaxCheck?: LocalExecutionConfig['postEditSyntaxCheck'];
928
+ };
929
+
794
930
  export type ToolExecutionConfig = {
795
931
  /** `sandbox` preserves the remote Code API behavior and is the default. */
796
932
  engine?: ToolExecutionEngine;
797
933
  /** Local process execution settings used when `engine` is `local`. */
798
934
  local?: LocalExecutionConfig;
935
+ /** Cloudflare Sandbox execution settings used when `engine` is `cloudflare-sandbox`. */
936
+ cloudflare?: CloudflareSandboxExecutionConfig;
799
937
  };
800
938
 
801
939
  export type ProgrammaticCache = {