Updated 1 path from 97e9d27f3

> LibreChat@v0.8.6-rc1 build:packages
> npm run build:data-provider && npm run build:data-schemas && npm run build:api && npm run build:client-package


> LibreChat@v0.8.6-rc1 build:data-provider
> cd packages/data-provider && npm run build


> librechat-data-provider@0.8.502 build
> npm run clean && rollup -c --silent --bundleConfigAsCjs


> librechat-data-provider@0.8.502 clean
> rimraf dist


> LibreChat@v0.8.6-rc1 build:data-schemas
> cd packages/data-schemas && npm run build


> @librechat/data-schemas@0.0.51 build
> npm run clean && rollup -c --silent --bundleConfigAsCjs


> @librechat/data-schemas@0.0.51 clean
> rimraf dist


> LibreChat@v0.8.6-rc1 build:api
> cd packages/api && npm run build


> @librechat/api@1.7.30 build
> npm run clean && rollup -c --bundleConfigAsCjs


> @librechat/api@1.7.30 clean
> rimraf dist

[36m
[1msrc/index.ts, src/telemetry/index.ts[22m → [1mdist[22m...[39m
[32mcreated [1mdist[22m in [1m42.9s[22m[39m

> LibreChat@v0.8.6-rc1 build:client-package
> cd packages/client && npm run build


> @librechat/client@0.4.59 build
> npm run clean && rollup -c --bundleConfigAsCjs


> @librechat/client@0.4.59 clean
> rimraf dist

[36m
[1msrc/index.ts[22m → [1mdist/index.js, dist/index.es.js[22m...[39m
[32mcreated [1mdist/index.js, dist/index.es.js[22m in [1m49.9s[22m[39m
2026-09-05 00:35:32 [33m[3mwarn[23m[39m: [33m[3m[resolveManualSkills] Skill "does-not-exist" not found or not accessible[23m[39m
2026-09-05 00:35:32 [33m[3mwarn[23m[39m: [33m[3m[allowedTools] loadTools returned no result with skill-added extras [mcp__broken__tool]; retrying without them.[23m[39m
2026-09-05 00:35:32 [33m[3mwarn[23m[39m: [33m[3m[allowedTools] loadTools threw with skill-added extras [mcp__broken__tool]; retrying without them:[23m[39m
2026-09-05 00:35:32 [33m[3mwarn[23m[39m: [33m[3m[allowedTools] loadTools returned no result with skill-added extras [some-tool]; retrying without them.[23m[39m
FAIL src/agents/__tests__/initialize.test.ts (8.918 s)
  initializeAgent — custom provider token lookup
    ✓ passes the resolved provider endpoint to getModelMaxTokens, not the custom name (10 ms)
    ✓ uses endpointTokenConfig from the custom endpoint for unrecognized models (6 ms)
  initializeAgent — Anthropic web_search precedence
    ✓ keeps Anthropic native web_search when LibreChat search is not selected (1 ms)
    ✓ keeps LibreChat web_search definitions when native Anthropic search is not enabled (2 ms)
    ✕ prefers LibreChat web_search when Anthropic native search is also enabled (8 ms)
    ✓ leaves non-Anthropic providers unchanged (2 ms)
  initializeAgent — stable and dynamic instruction fields
    ✓ moves instructions with temporal special vars into the dynamic tail using the conversation anchor (7 ms)
    ✓ keeps non-temporal special vars in stable instructions (3 ms)
    ✓ appends generated artifact guidance without replacing existing dynamic instructions (1 ms)
  initializeAgent — maxContextTokens
    ✓ uses user-configured maxContextTokens when provided via model_parameters (3 ms)
    ✓ falls back to formula when maxContextTokens is NOT provided (1 ms)
    ✓ falls back to formula when maxContextTokens is 0 (1 ms)
    ✓ falls back to formula when maxContextTokens is negative
    ✓ preserves small user-configured value (e.g. 1000 from modelSpec) (1 ms)
    ✓ sets baseContextTokens to agentMaxContextNum minus maxOutputTokensNum (1 ms)
    ✓ clamps maxContextTokens to at least 1024 for tiny models (1 ms)
  initializeAgent — manual skill priming (Phase 3)
    ✓ attaches resolved manual skill primes to the initialized agent (5 ms)
    ✓ leaves manualSkillPrimes undefined when no manualSkills are provided (1 ms)
    ✓ returns empty array when every manual skill is unresolvable (no primes, no throw) (5 ms)
    ✓ skips resolution entirely when accessibleSkillIds is empty (user has no skill access)
    ✓ silently no-ops when getSkillByName is not provided in db methods
  initializeAgent — skill `allowed-tools` union (Phase 6)
    ✓ passes the union of agent.tools + allowed-tools to loadTools and merges resulting toolDefinitions (1 ms)
    ✓ does not call loadTools twice when the skill declares no allowed-tools (1 ms)
    ✓ skips extras already on the agent (agent baseline wins; no double-loading) (1 ms)
    ✓ retries loadTools without extras when the union call returns undefined (production loaders swallow errors) (3 ms)
    ✓ retries loadTools without extras when the union call throws (agent tools must still load) (7 ms)
    ✓ falls through to empty toolDefinitions when BOTH the union and base-only loadTools calls return undefined (46 ms)
    ✓ propagates the error when loadTools fails AND there are no skill-added extras to drop (4 ms)
    ✓ does not invoke loadTools twice when the agent has no tools and the skill adds none
  initializeAgent — execute_code capability expansion
    ✓ expands execute_code into bash_tool + read_file when codeEnvAvailable=true (1 ms)
    ✓ upgrades read_file to the skill-aware description when active skills are in scope (1 ms)
    ✓ does not register bash_tool + read_file when codeEnvAvailable=false (1 ms)
    ✓ does not register bash_tool + read_file when agent does not request execute_code (1 ms)
    ✓ narrows codeEnvAvailable on InitializedAgent to the per-agent effective value (1 ms)
    ✓ trips GOOGLE_TOOL_CONFLICT on Google/Vertex when execute_code expands alongside provider tools (12 ms)
  initializeAgent — code-generated file thread filter (regression)
    ✓ passes threadFileIds (not threadMessageIds) to getCodeGeneratedFiles (7 ms)
    ✓ selects messages.attachments alongside messages.files (regression) (2 ms)
    ✓ skips the code-generated fetch entirely when threadFileIds is empty

  ● initializeAgent — Anthropic web_search precedence › prefers LibreChat web_search when Anthropic native search is also enabled

    expect(received).toEqual(expected) // deep equality

    - Expected  - 1
    + Received  + 6

    - Array []
    + Array [
    +   Object {
    +     "name": "web_search",
    +     "type": "web_search_20250305",
    +   },
    + ]

      394 |     );
      395 |
    > 396 |     expect(result.tools).toEqual([]);
          |                          ^
      397 |     expect(countNamedWebSearchTools(result.tools)).toBe(0);
      398 |     expect(countWebSearchDefinitions(result.toolDefinitions)).toBe(1);
      399 |   });

      at Object.toEqual (src/agents/__tests__/initialize.test.ts:396:26)

Test Suites: 1 failed, 1 total
Tests:       1 failed, 37 passed, 38 total
Snapshots:   0 total
Time:        9.057 s
Ran all test suites matching src/agents/__tests__/initialize.test.ts.
<?xml version="1.0" encoding="UTF-8"?>
<testsuites name="jest tests" tests="38" failures="1" errors="0" time="9.079">
  <testsuite name="initializeAgent — custom provider token lookup" errors="0" failures="1" skipped="0" timestamp="2026-09-05T00:35:23" time="8.918" tests="38">
    <testcase classname="initializeAgent — custom provider token lookup passes the resolved provider endpoint to getModelMaxTokens, not the custom name" name="initializeAgent — custom provider token lookup passes the resolved provider endpoint to getModelMaxTokens, not the custom name" time="0.01">
    </testcase>
    <testcase classname="initializeAgent — custom provider token lookup uses endpointTokenConfig from the custom endpoint for unrecognized models" name="initializeAgent — custom provider token lookup uses endpointTokenConfig from the custom endpoint for unrecognized models" time="0.006">
    </testcase>
    <testcase classname="initializeAgent — Anthropic web_search precedence keeps Anthropic native web_search when LibreChat search is not selected" name="initializeAgent — Anthropic web_search precedence keeps Anthropic native web_search when LibreChat search is not selected" time="0.001">
    </testcase>
    <testcase classname="initializeAgent — Anthropic web_search precedence keeps LibreChat web_search definitions when native Anthropic search is not enabled" name="initializeAgent — Anthropic web_search precedence keeps LibreChat web_search definitions when native Anthropic search is not enabled" time="0.002">
    </testcase>
    <testcase classname="initializeAgent — Anthropic web_search precedence prefers LibreChat web_search when Anthropic native search is also enabled" name="initializeAgent — Anthropic web_search precedence prefers LibreChat web_search when Anthropic native search is also enabled" time="0.008">
      <failure>Error: expect(received).toEqual(expected) // deep equality

- Expected  - 1
+ Received  + 6

- Array []
+ Array [
+   Object {
+     &quot;name&quot;: &quot;web_search&quot;,
+     &quot;type&quot;: &quot;web_search_20250305&quot;,
+   },
+ ]
    at Object.toEqual (/LibreChat/packages/api/src/agents/__tests__/initialize.test.ts:396:26)</failure>
    </testcase>
    <testcase classname="initializeAgent — Anthropic web_search precedence leaves non-Anthropic providers unchanged" name="initializeAgent — Anthropic web_search precedence leaves non-Anthropic providers unchanged" time="0.002">
    </testcase>
    <testcase classname="initializeAgent — stable and dynamic instruction fields moves instructions with temporal special vars into the dynamic tail using the conversation anchor" name="initializeAgent — stable and dynamic instruction fields moves instructions with temporal special vars into the dynamic tail using the conversation anchor" time="0.007">
    </testcase>
    <testcase classname="initializeAgent — stable and dynamic instruction fields keeps non-temporal special vars in stable instructions" name="initializeAgent — stable and dynamic instruction fields keeps non-temporal special vars in stable instructions" time="0.003">
    </testcase>
    <testcase classname="initializeAgent — stable and dynamic instruction fields appends generated artifact guidance without replacing existing dynamic instructions" name="initializeAgent — stable and dynamic instruction fields appends generated artifact guidance without replacing existing dynamic instructions" time="0.001">
    </testcase>
    <testcase classname="initializeAgent — maxContextTokens uses user-configured maxContextTokens when provided via model_parameters" name="initializeAgent — maxContextTokens uses user-configured maxContextTokens when provided via model_parameters" time="0.003">
    </testcase>
    <testcase classname="initializeAgent — maxContextTokens falls back to formula when maxContextTokens is NOT provided" name="initializeAgent — maxContextTokens falls back to formula when maxContextTokens is NOT provided" time="0.001">
    </testcase>
    <testcase classname="initializeAgent — maxContextTokens falls back to formula when maxContextTokens is 0" name="initializeAgent — maxContextTokens falls back to formula when maxContextTokens is 0" time="0.001">
    </testcase>
    <testcase classname="initializeAgent — maxContextTokens falls back to formula when maxContextTokens is negative" name="initializeAgent — maxContextTokens falls back to formula when maxContextTokens is negative" time="0">
    </testcase>
    <testcase classname="initializeAgent — maxContextTokens preserves small user-configured value (e.g. 1000 from modelSpec)" name="initializeAgent — maxContextTokens preserves small user-configured value (e.g. 1000 from modelSpec)" time="0.001">
    </testcase>
    <testcase classname="initializeAgent — maxContextTokens sets baseContextTokens to agentMaxContextNum minus maxOutputTokensNum" name="initializeAgent — maxContextTokens sets baseContextTokens to agentMaxContextNum minus maxOutputTokensNum" time="0.001">
    </testcase>
    <testcase classname="initializeAgent — maxContextTokens clamps maxContextTokens to at least 1024 for tiny models" name="initializeAgent — maxContextTokens clamps maxContextTokens to at least 1024 for tiny models" time="0.001">
    </testcase>
    <testcase classname="initializeAgent — manual skill priming (Phase 3) attaches resolved manual skill primes to the initialized agent" name="initializeAgent — manual skill priming (Phase 3) attaches resolved manual skill primes to the initialized agent" time="0.005">
    </testcase>
    <testcase classname="initializeAgent — manual skill priming (Phase 3) leaves manualSkillPrimes undefined when no manualSkills are provided" name="initializeAgent — manual skill priming (Phase 3) leaves manualSkillPrimes undefined when no manualSkills are provided" time="0.001">
    </testcase>
    <testcase classname="initializeAgent — manual skill priming (Phase 3) returns empty array when every manual skill is unresolvable (no primes, no throw)" name="initializeAgent — manual skill priming (Phase 3) returns empty array when every manual skill is unresolvable (no primes, no throw)" time="0.005">
    </testcase>
    <testcase classname="initializeAgent — manual skill priming (Phase 3) skips resolution entirely when accessibleSkillIds is empty (user has no skill access)" name="initializeAgent — manual skill priming (Phase 3) skips resolution entirely when accessibleSkillIds is empty (user has no skill access)" time="0">
    </testcase>
    <testcase classname="initializeAgent — manual skill priming (Phase 3) silently no-ops when getSkillByName is not provided in db methods" name="initializeAgent — manual skill priming (Phase 3) silently no-ops when getSkillByName is not provided in db methods" time="0">
    </testcase>
    <testcase classname="initializeAgent — skill `allowed-tools` union (Phase 6) passes the union of agent.tools + allowed-tools to loadTools and merges resulting toolDefinitions" name="initializeAgent — skill `allowed-tools` union (Phase 6) passes the union of agent.tools + allowed-tools to loadTools and merges resulting toolDefinitions" time="0.001">
    </testcase>
    <testcase classname="initializeAgent — skill `allowed-tools` union (Phase 6) does not call loadTools twice when the skill declares no allowed-tools" name="initializeAgent — skill `allowed-tools` union (Phase 6) does not call loadTools twice when the skill declares no allowed-tools" time="0.001">
    </testcase>
    <testcase classname="initializeAgent — skill `allowed-tools` union (Phase 6) skips extras already on the agent (agent baseline wins; no double-loading)" name="initializeAgent — skill `allowed-tools` union (Phase 6) skips extras already on the agent (agent baseline wins; no double-loading)" time="0.001">
    </testcase>
    <testcase classname="initializeAgent — skill `allowed-tools` union (Phase 6) retries loadTools without extras when the union call returns undefined (production loaders swallow errors)" name="initializeAgent — skill `allowed-tools` union (Phase 6) retries loadTools without extras when the union call returns undefined (production loaders swallow errors)" time="0.003">
    </testcase>
    <testcase classname="initializeAgent — skill `allowed-tools` union (Phase 6) retries loadTools without extras when the union call throws (agent tools must still load)" name="initializeAgent — skill `allowed-tools` union (Phase 6) retries loadTools without extras when the union call throws (agent tools must still load)" time="0.007">
    </testcase>
    <testcase classname="initializeAgent — skill `allowed-tools` union (Phase 6) falls through to empty toolDefinitions when BOTH the union and base-only loadTools calls return undefined" name="initializeAgent — skill `allowed-tools` union (Phase 6) falls through to empty toolDefinitions when BOTH the union and base-only loadTools calls return undefined" time="0.046">
    </testcase>
    <testcase classname="initializeAgent — skill `allowed-tools` union (Phase 6) propagates the error when loadTools fails AND there are no skill-added extras to drop" name="initializeAgent — skill `allowed-tools` union (Phase 6) propagates the error when loadTools fails AND there are no skill-added extras to drop" time="0.004">
    </testcase>
    <testcase classname="initializeAgent — skill `allowed-tools` union (Phase 6) does not invoke loadTools twice when the agent has no tools and the skill adds none" name="initializeAgent — skill `allowed-tools` union (Phase 6) does not invoke loadTools twice when the agent has no tools and the skill adds none" time="0">
    </testcase>
    <testcase classname="initializeAgent — execute_code capability expansion expands execute_code into bash_tool + read_file when codeEnvAvailable=true" name="initializeAgent — execute_code capability expansion expands execute_code into bash_tool + read_file when codeEnvAvailable=true" time="0.001">
    </testcase>
    <testcase classname="initializeAgent — execute_code capability expansion upgrades read_file to the skill-aware description when active skills are in scope" name="initializeAgent — execute_code capability expansion upgrades read_file to the skill-aware description when active skills are in scope" time="0.001">
    </testcase>
    <testcase classname="initializeAgent — execute_code capability expansion does not register bash_tool + read_file when codeEnvAvailable=false" name="initializeAgent — execute_code capability expansion does not register bash_tool + read_file when codeEnvAvailable=false" time="0.001">
    </testcase>
    <testcase classname="initializeAgent — execute_code capability expansion does not register bash_tool + read_file when agent does not request execute_code" name="initializeAgent — execute_code capability expansion does not register bash_tool + read_file when agent does not request execute_code" time="0.001">
    </testcase>
    <testcase classname="initializeAgent — execute_code capability expansion narrows codeEnvAvailable on InitializedAgent to the per-agent effective value" name="initializeAgent — execute_code capability expansion narrows codeEnvAvailable on InitializedAgent to the per-agent effective value" time="0.001">
    </testcase>
    <testcase classname="initializeAgent — execute_code capability expansion trips GOOGLE_TOOL_CONFLICT on Google/Vertex when execute_code expands alongside provider tools" name="initializeAgent — execute_code capability expansion trips GOOGLE_TOOL_CONFLICT on Google/Vertex when execute_code expands alongside provider tools" time="0.012">
    </testcase>
    <testcase classname="initializeAgent — code-generated file thread filter (regression) passes threadFileIds (not threadMessageIds) to getCodeGeneratedFiles" name="initializeAgent — code-generated file thread filter (regression) passes threadFileIds (not threadMessageIds) to getCodeGeneratedFiles" time="0.007">
    </testcase>
    <testcase classname="initializeAgent — code-generated file thread filter (regression) selects messages.attachments alongside messages.files (regression)" name="initializeAgent — code-generated file thread filter (regression) selects messages.attachments alongside messages.files (regression)" time="0.002">
    </testcase>
    <testcase classname="initializeAgent — code-generated file thread filter (regression) skips the code-generated fetch entirely when threadFileIds is empty" name="initializeAgent — code-generated file thread filter (regression) skips the code-generated fetch entirely when threadFileIds is empty" time="0">
    </testcase>
  </testsuite>
</testsuites>Updated 1 path from 97e9d27f3
SWE-rebench parser: parse_log_js_4
SWE-rebench results:
FAILED
