@librechat/agents 3.3.5 → 3.3.7
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/cjs/hooks/createWorkspacePolicyHook.cjs +1 -1
- package/dist/cjs/llm/openai/index.cjs +51 -6
- package/dist/cjs/llm/openai/index.cjs.map +1 -1
- package/dist/cjs/main.cjs +16 -0
- package/dist/cjs/session/JsonlSessionStore.cjs +1 -1
- package/dist/cjs/stream.cjs +6 -1
- package/dist/cjs/stream.cjs.map +1 -1
- package/dist/cjs/tools/BashExecutor.cjs +3 -1
- package/dist/cjs/tools/BashExecutor.cjs.map +1 -1
- package/dist/cjs/tools/BashProgrammaticToolCalling.cjs +2 -0
- package/dist/cjs/tools/BashProgrammaticToolCalling.cjs.map +1 -1
- package/dist/cjs/tools/CodeExecutor.cjs +19 -16
- package/dist/cjs/tools/CodeExecutor.cjs.map +1 -1
- package/dist/cjs/tools/ProgrammaticToolCalling.cjs +2 -0
- package/dist/cjs/tools/ProgrammaticToolCalling.cjs.map +1 -1
- package/dist/cjs/tools/ReadFile.cjs +8 -4
- package/dist/cjs/tools/ReadFile.cjs.map +1 -1
- package/dist/cjs/tools/SkillTool.cjs +2 -0
- package/dist/cjs/tools/SkillTool.cjs.map +1 -1
- package/dist/cjs/tools/SubagentTool.cjs +3 -0
- package/dist/cjs/tools/SubagentTool.cjs.map +1 -1
- package/dist/cjs/tools/ToolNode.cjs +88 -27
- package/dist/cjs/tools/ToolNode.cjs.map +1 -1
- package/dist/cjs/tools/ToolSearch.cjs +5 -1
- package/dist/cjs/tools/ToolSearch.cjs.map +1 -1
- package/dist/cjs/tools/intentArg.cjs +256 -0
- package/dist/cjs/tools/intentArg.cjs.map +1 -0
- package/dist/cjs/tools/local/CompileCheckTool.cjs +3 -2
- package/dist/cjs/tools/local/CompileCheckTool.cjs.map +1 -1
- package/dist/cjs/tools/local/LocalCodingTools.cjs +13 -12
- package/dist/cjs/tools/local/LocalCodingTools.cjs.map +1 -1
- package/dist/cjs/tools/local/LocalExecutionEngine.cjs +2 -2
- package/dist/cjs/tools/ptcTimeout.cjs.map +1 -1
- package/dist/cjs/tools/search/schema.cjs +2 -0
- package/dist/cjs/tools/search/schema.cjs.map +1 -1
- package/dist/cjs/tools/search/tool.cjs +31 -1
- package/dist/cjs/tools/search/tool.cjs.map +1 -1
- package/dist/cjs/tools/subagent/SubagentExecutor.cjs +1 -0
- package/dist/cjs/tools/subagent/SubagentExecutor.cjs.map +1 -1
- package/dist/cjs/tools/toolOutputReferences.cjs +41 -7
- package/dist/cjs/tools/toolOutputReferences.cjs.map +1 -1
- package/dist/esm/hooks/createWorkspacePolicyHook.mjs +1 -1
- package/dist/esm/llm/openai/index.mjs +51 -6
- package/dist/esm/llm/openai/index.mjs.map +1 -1
- package/dist/esm/main.mjs +4 -3
- package/dist/esm/session/JsonlSessionStore.mjs +1 -1
- package/dist/esm/stream.mjs +6 -1
- package/dist/esm/stream.mjs.map +1 -1
- package/dist/esm/tools/BashExecutor.mjs +3 -1
- package/dist/esm/tools/BashExecutor.mjs.map +1 -1
- package/dist/esm/tools/BashProgrammaticToolCalling.mjs +2 -0
- package/dist/esm/tools/BashProgrammaticToolCalling.mjs.map +1 -1
- package/dist/esm/tools/CodeExecutor.mjs +19 -16
- package/dist/esm/tools/CodeExecutor.mjs.map +1 -1
- package/dist/esm/tools/ProgrammaticToolCalling.mjs +2 -0
- package/dist/esm/tools/ProgrammaticToolCalling.mjs.map +1 -1
- package/dist/esm/tools/ReadFile.mjs +8 -4
- package/dist/esm/tools/ReadFile.mjs.map +1 -1
- package/dist/esm/tools/SkillTool.mjs +2 -0
- package/dist/esm/tools/SkillTool.mjs.map +1 -1
- package/dist/esm/tools/SubagentTool.mjs +3 -0
- package/dist/esm/tools/SubagentTool.mjs.map +1 -1
- package/dist/esm/tools/ToolNode.mjs +88 -28
- package/dist/esm/tools/ToolNode.mjs.map +1 -1
- package/dist/esm/tools/ToolSearch.mjs +5 -1
- package/dist/esm/tools/ToolSearch.mjs.map +1 -1
- package/dist/esm/tools/intentArg.mjs +244 -0
- package/dist/esm/tools/intentArg.mjs.map +1 -0
- package/dist/esm/tools/local/CompileCheckTool.mjs +3 -2
- package/dist/esm/tools/local/CompileCheckTool.mjs.map +1 -1
- package/dist/esm/tools/local/LocalCodingTools.mjs +13 -12
- package/dist/esm/tools/local/LocalCodingTools.mjs.map +1 -1
- package/dist/esm/tools/local/LocalExecutionEngine.mjs +2 -2
- package/dist/esm/tools/ptcTimeout.mjs.map +1 -1
- package/dist/esm/tools/search/schema.mjs +2 -0
- package/dist/esm/tools/search/schema.mjs.map +1 -1
- package/dist/esm/tools/search/tool.mjs +31 -2
- package/dist/esm/tools/search/tool.mjs.map +1 -1
- package/dist/esm/tools/subagent/SubagentExecutor.mjs +1 -0
- package/dist/esm/tools/subagent/SubagentExecutor.mjs.map +1 -1
- package/dist/esm/tools/toolOutputReferences.mjs +41 -7
- package/dist/esm/tools/toolOutputReferences.mjs.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/llm/openai/index.d.ts +0 -11
- package/dist/types/tools/BashExecutor.d.ts +18 -0
- package/dist/types/tools/CodeExecutor.d.ts +18 -0
- package/dist/types/tools/ReadFile.d.ts +18 -0
- package/dist/types/tools/SkillTool.d.ts +18 -0
- package/dist/types/tools/SubagentTool.d.ts +9 -0
- package/dist/types/tools/ToolNode.d.ts +37 -5
- package/dist/types/tools/ToolSearch.d.ts +18 -0
- package/dist/types/tools/intentArg.d.ts +181 -0
- package/dist/types/tools/ptcTimeout.d.ts +2 -0
- package/dist/types/tools/search/schema.d.ts +18 -0
- package/dist/types/tools/search/tool.d.ts +18 -0
- package/dist/types/tools/toolOutputReferences.d.ts +12 -2
- package/dist/types/types/stream.d.ts +18 -0
- package/dist/types/types/tools.d.ts +27 -2
- package/package.json +1 -1
- package/src/index.ts +1 -0
- package/src/llm/openai/index.ts +74 -10
- package/src/llm/openai/llm.spec.ts +105 -0
- package/src/stream.ts +12 -1
- package/src/tools/BashExecutor.ts +6 -0
- package/src/tools/BashProgrammaticToolCalling.ts +2 -0
- package/src/tools/CodeExecutor.ts +6 -0
- package/src/tools/ProgrammaticToolCalling.ts +2 -0
- package/src/tools/ReadFile.ts +2 -0
- package/src/tools/SkillTool.ts +2 -0
- package/src/tools/SubagentTool.ts +3 -0
- package/src/tools/ToolNode.ts +190 -43
- package/src/tools/ToolSearch.ts +3 -0
- package/src/tools/__tests__/ToolNode.onResultCompletion.test.ts +174 -0
- package/src/tools/__tests__/intentArg.test.ts +357 -0
- package/src/tools/__tests__/intentCoverage.test.ts +139 -0
- package/src/tools/__tests__/toolOutputReferences.test.ts +83 -0
- package/src/tools/intentArg.ts +357 -0
- package/src/tools/local/CompileCheckTool.ts +4 -3
- package/src/tools/local/LocalCodingTools.ts +14 -13
- package/src/tools/ptcTimeout.ts +2 -0
- package/src/tools/search/outcome.test.ts +90 -0
- package/src/tools/search/schema.ts +3 -0
- package/src/tools/search/tool.ts +47 -1
- package/src/tools/subagent/SubagentExecutor.ts +2 -1
- package/src/tools/toolOutputReferences.ts +77 -9
- package/src/types/stream.ts +18 -0
- package/src/types/tools.ts +24 -2
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
require("../common/enum.cjs");
|
|
2
2
|
require("../common/index.cjs");
|
|
3
3
|
let path = require("path");
|
|
4
|
-
let fs_promises = require("fs/promises");
|
|
5
4
|
let os = require("os");
|
|
5
|
+
let fs_promises = require("fs/promises");
|
|
6
6
|
//#region src/hooks/createWorkspacePolicyHook.ts
|
|
7
7
|
/**
|
|
8
8
|
* Workspace boundary policy as a `PreToolUse` hook.
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
const require_cache = require("../../messages/cache.cjs");
|
|
2
2
|
const require_core = require("../../messages/core.cjs");
|
|
3
3
|
const require_streamedToolCallSeals = require("../../tools/streamedToolCallSeals.cjs");
|
|
4
|
+
const require_intentArg = require("../../tools/intentArg.cjs");
|
|
4
5
|
const require_index = require("./utils/index.cjs");
|
|
5
6
|
const require_streamMetadata = require("./streamMetadata.cjs");
|
|
6
7
|
let _langchain_openai = require("@langchain/openai");
|
|
@@ -439,6 +440,50 @@ function createAbortHandler(controller) {
|
|
|
439
440
|
* @param {Object} [fields] Additional fields to add to the OpenAI tool.
|
|
440
441
|
* @returns {ToolDefinition} The inputted tool in OpenAI tool format.
|
|
441
442
|
*/
|
|
443
|
+
/**
|
|
444
|
+
* OpenAI strict function schemas require every property to appear in
|
|
445
|
+
* `required`. The optional `intent` label (see `tools/intentArg.ts`) is
|
|
446
|
+
* deliberately NOT required — the same schema is callable from programmatic
|
|
447
|
+
* tool calling — so a tool auto-marked `strict: true` (the non-streaming
|
|
448
|
+
* `json_schema` structured-output path) would be rejected as invalid before
|
|
449
|
+
* execution. That path never streams a live label anyway, so the
|
|
450
|
+
* marker-identified property is dropped there; every other path keeps it.
|
|
451
|
+
*/
|
|
452
|
+
function stripIntentFromStrictTools(params) {
|
|
453
|
+
const tools = params.tools;
|
|
454
|
+
if (!Array.isArray(tools) || tools.length === 0) return params;
|
|
455
|
+
const nextTools = tools.map((tool) => {
|
|
456
|
+
const candidate = tool;
|
|
457
|
+
/** Chat-completions tools nest under `function`; responses-API tools are flat. */
|
|
458
|
+
const holder = candidate.function ?? candidate;
|
|
459
|
+
if (holder.strict !== true) return tool;
|
|
460
|
+
const parameters = holder.parameters;
|
|
461
|
+
const properties = parameters?.properties;
|
|
462
|
+
if (properties == null || !require_intentArg.isIntentLabelProperty(properties["intent"])) return tool;
|
|
463
|
+
if ((Array.isArray(parameters?.required) ? parameters.required : []).includes("intent")) return tool;
|
|
464
|
+
const { [require_intentArg.INTENT_ARG]: _omit, ...restProps } = properties;
|
|
465
|
+
const nextParams = {
|
|
466
|
+
...parameters,
|
|
467
|
+
properties: restProps
|
|
468
|
+
};
|
|
469
|
+
if (candidate.function != null) return {
|
|
470
|
+
...candidate,
|
|
471
|
+
function: {
|
|
472
|
+
...candidate.function,
|
|
473
|
+
parameters: nextParams
|
|
474
|
+
}
|
|
475
|
+
};
|
|
476
|
+
return {
|
|
477
|
+
...candidate,
|
|
478
|
+
parameters: nextParams
|
|
479
|
+
};
|
|
480
|
+
});
|
|
481
|
+
if (nextTools.every((tool, index) => tool === tools[index])) return params;
|
|
482
|
+
return {
|
|
483
|
+
...params,
|
|
484
|
+
tools: nextTools
|
|
485
|
+
};
|
|
486
|
+
}
|
|
442
487
|
function _convertToOpenAITool(tool, fields) {
|
|
443
488
|
let toolDef;
|
|
444
489
|
if ((0, _langchain_core_utils_function_calling.isLangChainTool)(tool)) toolDef = (0, _langchain_core_utils_function_calling.convertToOpenAITool)(tool);
|
|
@@ -535,10 +580,10 @@ var LibreChatOpenAICompletions = class extends _langchain_openai.ChatOpenAICompl
|
|
|
535
580
|
this.safetyIdentifier = fields?.safety_identifier;
|
|
536
581
|
}
|
|
537
582
|
invocationParams(options, extra) {
|
|
538
|
-
return applyManagedRequestParams(super.invocationParams(options, extra), {
|
|
583
|
+
return stripIntentFromStrictTools(applyManagedRequestParams(super.invocationParams(options, extra), {
|
|
539
584
|
promptCacheExplicit: this.promptCacheExplicit,
|
|
540
585
|
safetyIdentifier: this.safetyIdentifier
|
|
541
|
-
});
|
|
586
|
+
}));
|
|
542
587
|
}
|
|
543
588
|
_getReasoningParams(options) {
|
|
544
589
|
return getReasoningParams(this.reasoning, options);
|
|
@@ -756,7 +801,7 @@ var LibreChatOpenAIResponses = class extends _langchain_openai.ChatOpenAIRespons
|
|
|
756
801
|
...cacheControl != null && { cache_control: cacheControl }
|
|
757
802
|
};
|
|
758
803
|
if (shouldIncludeEncryptedReasoning(this.model, params)) params.include = [...new Set([...params.include ?? [], "reasoning.encrypted_content"])];
|
|
759
|
-
return params;
|
|
804
|
+
return stripIntentFromStrictTools(params);
|
|
760
805
|
}
|
|
761
806
|
async completionWithRetry(request, requestOptions) {
|
|
762
807
|
const managedRequest = {
|
|
@@ -796,10 +841,10 @@ var LibreChatAzureOpenAICompletions = class extends _langchain_openai.AzureChatO
|
|
|
796
841
|
this.safetyIdentifier = fields?.safety_identifier;
|
|
797
842
|
}
|
|
798
843
|
invocationParams(options, extra) {
|
|
799
|
-
return applyManagedRequestParams(super.invocationParams(options, extra), {
|
|
844
|
+
return stripIntentFromStrictTools(applyManagedRequestParams(super.invocationParams(options, extra), {
|
|
800
845
|
promptCacheExplicit: this.promptCacheExplicit,
|
|
801
846
|
safetyIdentifier: this.safetyIdentifier
|
|
802
|
-
});
|
|
847
|
+
}));
|
|
803
848
|
}
|
|
804
849
|
_getReasoningParams(options) {
|
|
805
850
|
return getGatedReasoningParams(this.model, this.reasoning, options);
|
|
@@ -879,7 +924,7 @@ var LibreChatAzureOpenAIResponses = class extends _langchain_openai.AzureChatOpe
|
|
|
879
924
|
safetyIdentifier: this.safetyIdentifier
|
|
880
925
|
});
|
|
881
926
|
if (shouldIncludeEncryptedReasoning(this.model, params)) params.include = [...new Set([...params.include ?? [], "reasoning.encrypted_content"])];
|
|
882
|
-
return params;
|
|
927
|
+
return stripIntentFromStrictTools(params);
|
|
883
928
|
}
|
|
884
929
|
async completionWithRetry(request, requestOptions) {
|
|
885
930
|
const managedRequest = {
|