nixbot

builds

succeeded x86_64-linux.packages-default build #4 · raw · ·

1this derivation will be built:2  /nix/store/lxzz5y4s9dagwdifajnpk20p9wzmnhn0-llx-0.0.1.drv3building '/nix/store/lxzz5y4s9dagwdifajnpk20p9wzmnhn0-llx-0.0.1.drv' on 'ssh-ng://nix-remote-build@quine.prim.private.invalid'4building '/nix/store/lxzz5y4s9dagwdifajnpk20p9wzmnhn0-llx-0.0.1.drv'5llx-0.0.1> Running phase: unpackPhase6llx-0.0.1> unpacking source archive /nix/store/iq5syfgykc4vv7b46la7ff4pcp80v9gw-source7llx-0.0.1> source root is source8llx-0.0.1> Running phase: patchPhase9llx-0.0.1> Running phase: updateAutotoolsGnuConfigScriptsPhase10llx-0.0.1> Running phase: configurePhase11llx-0.0.1> no configure script, doing nothing12llx-0.0.1> Running phase: buildPhase13llx-0.0.1> Picked up JAVA_TOOL_OPTIONS: -Duser.home=/build/tmp.yiMzGSeeoj14llx-0.0.1> Picked up JAVA_TOOL_OPTIONS: -Duser.home=/build/tmp.yiMzGSeeoj15llx-0.0.1> GUARDRAILS IS ENABLED. RUNTIME PERFORMANCE WILL BE AFFECTED.16llx-0.0.1> Mode: :runtime  config: {:throw? true, :guardrails/use-stderr? true}17llx-0.0.1> Guardrails was enabled because the guardrails.enabled property is set to a (any) value.18llx-0.0.1> --- unit (clojure.test) ---------------------------19llx-0.0.1> ol.llx.ai.adapters.openai-responses-test20llx-0.0.1>   decode-event-response-failed-includes-provider-error-details21llx-0.0.1>   decode-event-stream-contract22llx-0.0.1>   build-request-sanitizes-unpaired-surrogates-in-user-text23llx-0.0.1>   build-request-converts-context-to-openai-responses-input24llx-0.0.1>   build-request-preserves-valid-emoji-surrogate-pairs25llx-0.0.1>   finalize-throws-on-unknown-stop-reason26llx-0.0.1>   decode-event-message-output-item-done-encodes-versioned-text-signature27llx-0.0.1>   build-request-emits-provider-payload-trove-signal28llx-0.0.1>   normalize-tool-call-id-preserves-same-provider-item-ids29llx-0.0.1>   build-request-disables-reasoning-when-no-reasoning-opts30llx-0.0.1>   normalize-tool-call-id-hashes-foreign-item-ids31llx-0.0.1>   build-request-replays-versioned-text-signature-metadata32llx-0.0.1>   cache-retention-mapping33llx-0.0.1>     cache-control none omits both prompt cache fields34llx-0.0.1>     cache-control long sets 24h retention for direct api.openai.com35llx-0.0.1>     cache-control long does not set retention for non-openai base url36llx-0.0.1>   finalize-calculates-tier-adjusted-cost-when-usage-present37llx-0.0.1>   decode-event-reasoning-summary-part-done-requires-summary-part38llx-0.0.1>   normalize-tool-call-id-gates-by-provider-allowlist39llx-0.0.1>   normalize-tool-call-id-trims-trailing-underscores-and-enforces-fc-prefix40llx-0.0.1>   normalize-tool-call-id-normalizes-pipe-ids-and-preserves-pairing41llx-0.0.1>   finalize-maps-responses-status-to-canonical-stop-reason42llx-0.0.1>   normalize-tool-call-id-matches-upstream-issue-1022-test-id43llx-0.0.1>   stream-error-normalization-contract44llx-0.0.1> 45llx-0.0.1> ol.llx.agent-test46llx-0.0.1>   set-schema-config-clears-user-additions-without-removing-canonical-schemas-test47llx-0.0.1>   tool-and-pending-tool-call-schema-test48llx-0.0.1>   custom-message-public-api-validation-test49llx-0.0.1>   tool-call-schema-contract-test50llx-0.0.1>   custom-message-schemas-validate-message-and-messages-test51llx-0.0.1>     :ol.llx.agent/custom-message-schemas requires namespace-qualified dispatch keys52llx-0.0.1>     :ol.llx.agent/message rejects custom roles when not registered53llx-0.0.1>     :ol.llx.agent/message accepts registered custom role54llx-0.0.1>     :ol.llx.agent/messages accepts canonical + registered custom messages55llx-0.0.1>     :ol.llx.agent/messages rejects invalid registered custom message payloads56llx-0.0.1>     canonical messages remain valid with custom registrations enabled57llx-0.0.1>   set-model-validates-model-shape-test58llx-0.0.1>   create-agent-rejects-missing-custom-schema-registration-test59llx-0.0.1>   create-agent-requires-env-contract-test60llx-0.0.1>   create-agent-initializes-state-test61llx-0.0.1>   custom-message-schema-may-reference-provided-schemas-test62llx-0.0.1>   tool-signal-and-event-schema-tightening-test63llx-0.0.1>   set-schema-config-updates-custom-message-validation-on-live-agent-test64llx-0.0.1>   tool-schema-tightening-on-commands-and-state-test65llx-0.0.1>     :ol.llx.agent/command-set-tools expects :ol.llx.agent/tool entries66llx-0.0.1>     :ol.llx.agent/create-agent-opts expects :ol.llx.agent/tool entries in :tools67llx-0.0.1>     :ol.llx.agent.loop/state expects :ol.llx.agent/tool entries in :tools68llx-0.0.1>   prompt-validates-messages-test69llx-0.0.1>   effect-execute-tool-tool-call-schema-test70llx-0.0.1>   set-schema-config-ignores-nil-fields-test71llx-0.0.1>     nil schema-registry preserves the current user registry72llx-0.0.1>     nil custom-message-schemas preserves the current dispatch map73llx-0.0.1>   rehydrate-agent-custom-message-validation-test74llx-0.0.1>   subscribe-unsubscribe-test75llx-0.0.1>   create-agent-default-convert-to-llm-test76llx-0.0.1>   command-wrappers-dispatch-through-driver-run-test77llx-0.0.1>     prompt dispatches vector messages78llx-0.0.1>     continue dispatches the continue command79llx-0.0.1>     abort dispatches the abort command80llx-0.0.1>     state mutators dispatch commands81llx-0.0.1>   create-agent-ignores-initial-state-option-test82llx-0.0.1>   rehydrate-agent-uses-snapshot-test83llx-0.0.1> 84llx-0.0.1> ol.llx.ai.errors-test85llx-0.0.1>   quota-exceeded-is-not-recoverable86llx-0.0.1>   connection-error-is-recoverable87llx-0.0.1>   timeout-error-is-recoverable88llx-0.0.1>   extracts-retry-after-seconds-header89llx-0.0.1>   should-retry-allows-transient-errors90llx-0.0.1>   http-status-unknown-4xx-returns-non-recoverable-provider-error91llx-0.0.1>   retry-delay-uses-linear-backoff-for-connection-errors92llx-0.0.1>   retry-delay-adds-jitter-for-server-errors93llx-0.0.1>   http-status-429-with-quota-and-retry-after-returns-rate-limit94llx-0.0.1>   retry-delay-uses-server-retry-after-for-rate-limit95llx-0.0.1>   retry-loop-async-does-not-retry-client-errors96llx-0.0.1>   retry-loop-async-fails-when-server-retry-delay-exceeds-cap97llx-0.0.1>   should-retry-rejects-client-errors98llx-0.0.1>   retry-loop-async-retries-transient-and-succeeds99llx-0.0.1>   retry-delay-exceeded-is-not-recoverable100llx-0.0.1>   extracts-retry-after-ms-header101llx-0.0.1>   http-status->error-maps-common-codes102llx-0.0.1>     400 -> invalid-request103llx-0.0.1>     401 -> authentication-error104llx-0.0.1>     403 -> authorization-error105llx-0.0.1>     404 -> model-not-found106llx-0.0.1>     408 -> timeout107llx-0.0.1>     500 -> server-error108llx-0.0.1>     502 -> server-error109llx-0.0.1>     503 -> server-error110llx-0.0.1>   retry-after-ms-takes-priority111llx-0.0.1>   should-retry-respects-max-retries112llx-0.0.1>   caps-at-max-seconds113llx-0.0.1>   content-filter-is-not-recoverable114llx-0.0.1>   retry-loop-async-emits-retry-scheduled-trove-signal115llx-0.0.1>   http-status-429-without-quota-returns-rate-limit116llx-0.0.1>   extract-retry-after-from-message-returns-nil-when-missing117llx-0.0.1>   http-status-429-with-quota-body-returns-quota-exceeded118llx-0.0.1>   extract-retry-after-from-message-parses-seconds119llx-0.0.1>   predicates-match-error-categories120llx-0.0.1>     llx-error? matches structured errors121llx-0.0.1>     recoverable? matches recoverable errors122llx-0.0.1>     rate-limit-error?123llx-0.0.1>     quota-exceeded-error?124llx-0.0.1>     rate-limited-error?125llx-0.0.1>     timeout-error?126llx-0.0.1>     client-error?127llx-0.0.1>     transient-error?128llx-0.0.1>   retry-loop-async-succeeds-on-first-attempt129llx-0.0.1>   retry-delay-uses-exponential-backoff-for-rate-limit-without-header130llx-0.0.1>   provider-error-with-custom-recoverability131llx-0.0.1>   server-error-is-recoverable132llx-0.0.1>   model-not-found-is-not-recoverable133llx-0.0.1>   returns-nil-when-no-header134llx-0.0.1>   http-status-unknown-5xx-returns-recoverable-provider-error135llx-0.0.1>   extracts-x-ratelimit-reset-after-header136llx-0.0.1>   invalid-request-is-not-recoverable137llx-0.0.1>   authentication-error-is-not-recoverable138llx-0.0.1>   retry-loop-async-exhausts-retries-and-throws139llx-0.0.1>   rate-limit-error-has-correct-type-and-recoverable140llx-0.0.1> 141llx-0.0.1> ol.llx.ai.model-catalog.generate-test142llx-0.0.1>   build-catalog-normalizes-supported-providers-only143llx-0.0.1>   build-catalog-is-deterministically-sorted144llx-0.0.1>   build-catalog-deep-merges-nested-override-fields145llx-0.0.1>   generate-models-writes-artifact-using-injected-paths146llx-0.0.1>   render-generated-source-is-stable147llx-0.0.1>   build-catalog-rejects-provider-change-for-existing-id148llx-0.0.1>   build-catalog-rejects-invalid-override-shapes149llx-0.0.1>   generate-models-uses-checked-in-overrides-and-emits-openai-codex-models150llx-0.0.1>   build-catalog-supports-provider-qualified-override-keys151llx-0.0.1>   build-catalog-rejects-duplicate-normalized-source-keys152llx-0.0.1> 153llx-0.0.1> ol.llx.ai.utils.rate-limit-test154llx-0.0.1>   rate-limited-detection155llx-0.0.1>     detects structured error types156llx-0.0.1>     detects provider message patterns157llx-0.0.1>     false for non-rate-limit errors158llx-0.0.1> 159llx-0.0.1> ol.llx.ai.client.jvm-test160llx-0.0.1>   run-stream-emits-stream-event-error-trove-signal161llx-0.0.1>   run-stream-cancel-fn-closes-upstream-body162llx-0.0.1>   run-stream-wraps-untyped-stream-errors-as-streaming-error163llx-0.0.1>   run-stream-validation164llx-0.0.1>     rejects malformed decoded events165llx-0.0.1>     rejects malformed finalize output166llx-0.0.1>     malformed normalize-error still emits terminal error167llx-0.0.1>   run-stream-emits-stream-lifecycle-trove-signals168llx-0.0.1> 169llx-0.0.1> ol.llx.ai.schema-test170llx-0.0.1>   model-schema171llx-0.0.1>     accepts a valid model172llx-0.0.1>     accepts supported openai-completions compat profile keys173llx-0.0.1>     accepts unknown model keys174llx-0.0.1>   schema-registry-rebuilds-when-component-schemas-change175llx-0.0.1>   adapter-and-env-schema176llx-0.0.1>     accepts valid adapter and runtime env177llx-0.0.1>     rejects adapter missing required function slots178llx-0.0.1>     rejects env missing required function slots179llx-0.0.1>   oauth-schema-contracts180llx-0.0.1>     accepts OpenAI Codex provider and API enum values181llx-0.0.1>     accepts oauth credential and provider contracts182llx-0.0.1>     rejects oauth credential map missing required keys183llx-0.0.1>     rejects oauth provider missing required function slots184llx-0.0.1>   config-schema185llx-0.0.1>     accepts known provider config186llx-0.0.1>     accepts unknown provider keys187llx-0.0.1>   options-schema-allows-provider-specific-option-keys188llx-0.0.1>   runtime-boundary-schemas189llx-0.0.1>     accepts runtime adapter boundary maps190llx-0.0.1>     rejects malformed runtime boundary maps191llx-0.0.1>     accepts run-stream argument map contract192llx-0.0.1>   context-schema193llx-0.0.1>     context is an ordered vector of canonical messages194llx-0.0.1>     context-map enforces required :messages and optional envelope keys195llx-0.0.1>   event-schemas196llx-0.0.1>     accepts stream terminal events197llx-0.0.1>     rejects malformed events198llx-0.0.1>     accepts delta events with required payload199llx-0.0.1>   usage-schema200llx-0.0.1>     accepts usage where total-tokens equals component sum201llx-0.0.1>     accepts usage where provider total-tokens does not match component sum (Google!)202llx-0.0.1>   message-schemas203llx-0.0.1>     accepts all three canonical message roles204llx-0.0.1>     assistant message accepts unknown keys205llx-0.0.1>   options-schema206llx-0.0.1>     accepts valid unified request options207llx-0.0.1>     accepts unknown unified request option keys208llx-0.0.1>     accepts valid provider request options including provider-specific keys209llx-0.0.1>     tool input schema field descriptions survive json schema conversion210llx-0.0.1> 211llx-0.0.1> ol.llx.ai.oauth-test212llx-0.0.1>   oauth-provider-registry-operations213llx-0.0.1>   get-oauth-api-key-behavior214llx-0.0.1>     returns nil for missing provider credentials215llx-0.0.1>     returns existing api key when credential is not expired216llx-0.0.1>     refreshes expired credential before returning api key217llx-0.0.1>   refresh-oauth-token-dispatch218llx-0.0.1> 219llx-0.0.1> ol.llx.ai.oauth.openai-codex-test220llx-0.0.1>   parse-authorization-input-cases221llx-0.0.1>     accepts full redirect URL222llx-0.0.1>     accepts code#state format223llx-0.0.1>     accepts query-string format224llx-0.0.1>     falls back to raw code225llx-0.0.1>   login-openai-codex-state-mismatch-fails226llx-0.0.1>   login-openai-codex-manual-fallback227llx-0.0.1>   account-id-extraction228llx-0.0.1>   login-openai-codex-bind-failure-falls-back-to-manual-input229llx-0.0.1> 230llx-0.0.1> ol.llx.ai.registry-test231llx-0.0.1>   registry-operations232llx-0.0.1>     unregister and clear adapters233llx-0.0.1>     rejects invalid api value234llx-0.0.1>   registry-patterns235llx-0.0.1>     immutable registry returns new value236llx-0.0.1>     mutable registry237llx-0.0.1>     dynamic registry238llx-0.0.1> 239llx-0.0.1> ol.llx.ai.transform-messages-test240llx-0.0.1>   does-not-duplicate-existing-synthetic-tool-result241llx-0.0.1>   fixture-for-aborted-reasoning-skips-aborted-turn242llx-0.0.1>     aborted assistant turn is removed from replay243llx-0.0.1>   same-model-replay-preserves-thinking-and-signatures244llx-0.0.1>   google-gated-normalization-rewrites-assistant-and-tool-result-ids245llx-0.0.1>   cross-model-replay-converts-thinking-and-drops-signatures246llx-0.0.1>   missing-tool-results-get-synthetic-error-message247llx-0.0.1>   skipped-assistant-turns-with-error-or-aborted-stop-reasons248llx-0.0.1>   synthetic-tool-result-uses-real-time-when-clock-missing249llx-0.0.1>   tool-call-id-normalization-avoids-collision-for-mistral250llx-0.0.1>   user-interruption-inserts-only-missing-tool-results251llx-0.0.1>   tool-call-id-normalization-propagates-to-tool-result252llx-0.0.1> 253llx-0.0.1> ol.llx.agent.fx-test254llx-0.0.1>   execute-fx-validates-effect-shape-test255llx-0.0.1>   fx-execute-tool-uses-active-schema-registry-for-input-coercion-test256llx-0.0.1>   fx-execute-tool-uses-updated-schema-config-from-live-agent-test257llx-0.0.1>   fx-call-llm-runs-hooks-and-maps-events-test258llx-0.0.1>   fx-call-llm-emits-llm-error-on-non-canonical-event-type-test259llx-0.0.1>   fx-call-llm-uses-default-stream-fn-when-not-provided-test260llx-0.0.1>   fx-call-llm-emits-llm-error-on-hook-failure-test261llx-0.0.1> 262llx-0.0.1> ol.llx.agent.loop-test263llx-0.0.1>   handle-command-replace-messages-test264llx-0.0.1>   handle-command-prompt-from-idle-test265llx-0.0.1>   handle-command-clear-messages-test266llx-0.0.1>   step-abort-from-tool-executing-to-idle-test267llx-0.0.1>   route-from-tool-executing-test268llx-0.0.1>     with pending tool calls stays tool-executing269llx-0.0.1>     without pending tool calls routes to streaming270llx-0.0.1>     closed routes to closed271llx-0.0.1>   handle-command-continue-with-steering-all-mode-test272llx-0.0.1>   step-tool-loop-test273llx-0.0.1>     state progression through tool loop274llx-0.0.1>     tool completion resumes llm275llx-0.0.1>     final state has all messages276llx-0.0.1>     agent-end emitted on final transition to idle277llx-0.0.1>   streaming-transition-llm-start-test278llx-0.0.1>   streaming-transition-abort-test279llx-0.0.1>     transitions to idle and clears stream-message280llx-0.0.1>     emits message-end and turn-end281llx-0.0.1>   handle-command-clear-steering-queue-test282llx-0.0.1>   step-signal-llm-done-with-tools-test283llx-0.0.1>   handle-command-clear-all-queues-test284llx-0.0.1>   streaming-transition-llm-error-test285llx-0.0.1>     transitions to idle and sets error286llx-0.0.1>     emits message-end and turn-end287llx-0.0.1>   streaming-transition-llm-chunk-test288llx-0.0.1>   tool-executing-transition-tool-result-with-remaining-test289llx-0.0.1>     processes result and keeps remaining tools290llx-0.0.1>     appends result to messages291llx-0.0.1>     emits tool-execution-end, message events, and starts next tool292llx-0.0.1>   step-full-happy-path-test293llx-0.0.1>     state progression294llx-0.0.1>     final state has both messages295llx-0.0.1>     agent-end is emitted on final step296llx-0.0.1>     agent-end is not emitted on intermediate steps297llx-0.0.1>   handle-command-continue-steering-before-follow-up-test298llx-0.0.1>   handle-command-steer-test299llx-0.0.1>   handle-command-prompt-when-not-idle-test300llx-0.0.1>   agent-end-emitted-on-error-to-idle-test301llx-0.0.1>   step-prompt-from-idle-to-streaming-test302llx-0.0.1>   agent-end-not-emitted-on-streaming-to-tool-executing-test303llx-0.0.1>   streaming-transition-llm-done-no-tools-test304llx-0.0.1>     transitions to idle and clears stream-message305llx-0.0.1>     appends the final message306llx-0.0.1>     emits message-end and turn-end307llx-0.0.1>   idle-transition-prompt-start-test308llx-0.0.1>     appends messages and transitions to streaming309llx-0.0.1>     emits agent-start, turn-start, message events, and call-llm310llx-0.0.1>     call-llm receives the full message history including new messages311llx-0.0.1>   command-predicate-test312llx-0.0.1>     recognizes commands313llx-0.0.1>     rejects signals314llx-0.0.1>     rejects events315llx-0.0.1>   streaming-transition-unknown-signal-test316llx-0.0.1>   handle-command-abort-when-streaming-test317llx-0.0.1>   tool-executing-transition-tool-result-last-tool-test318llx-0.0.1>     clears pending-tool-calls319llx-0.0.1>     appends result to messages and resumes llm320llx-0.0.1>   route-from-idle-test321llx-0.0.1>   streaming-transition-llm-done-with-steering-queue-starts-next-turn-test322llx-0.0.1>     moves directly into the next streaming turn323llx-0.0.1>     appends the finished assistant message and queued steering message324llx-0.0.1>     continues the run by ending the turn and scheduling more llm work325llx-0.0.1>   tool-executing-transition-tool-update-test326llx-0.0.1>   tool-executing-transition-tool-error-with-steering-interrupts-remaining-tools-test327llx-0.0.1>     does not execute the next real tool and resumes llm after synthetic skipped results328llx-0.0.1>     keeps one steering message queued in one-at-a-time mode329llx-0.0.1>     appends error result, skipped tool results, and dequeued steering message330llx-0.0.1>   handle-command-append-message-test331llx-0.0.1>   streaming-transition-llm-done-with-follow-up-queue-starts-next-turn-test332llx-0.0.1>     starts a new turn from follow-up messages when no steering exists333llx-0.0.1>     continues the run with another llm call334llx-0.0.1>   handle-command-continue-with-follow-up-one-at-a-time-test335llx-0.0.1>   handle-command-continue-when-not-idle-test336llx-0.0.1>   handle-command-set-system-prompt-test337llx-0.0.1>   handle-command-follow-up-test338llx-0.0.1>   step-signal-llm-done-no-tools-to-idle-test339llx-0.0.1>   handle-command-set-steering-mode-test340llx-0.0.1>   agent-end-emitted-on-streaming-to-idle-test341llx-0.0.1>   handle-command-continue-empty-queues-test342llx-0.0.1>   tool-executing-transition-tool-error-last-tool-test343llx-0.0.1>     clears pending-tool-calls344llx-0.0.1>     records error result and resumes llm345llx-0.0.1>   handle-command-continue-with-follow-up-all-mode-test346llx-0.0.1>   tool-executing-transition-unknown-signal-test347llx-0.0.1>   agent-end-not-emitted-when-staying-idle-test348llx-0.0.1>   handle-command-set-follow-up-mode-test349llx-0.0.1>   closed-transition-is-terminal-test350llx-0.0.1>     any signal returns state unchanged with no effects351llx-0.0.1>   handle-command-set-tools-test352llx-0.0.1>   tool-executing-transition-tool-error-with-remaining-test353llx-0.0.1>     records error result and keeps remaining tools354llx-0.0.1>     emits tool-execution-end, message events, and starts next tool355llx-0.0.1>   step-prompt-when-streaming-is-rejected-test356llx-0.0.1>   initial-state-has-expected-shape-test357llx-0.0.1>   streaming-transition-llm-done-prefers-steering-over-follow-up-test358llx-0.0.1>     uses steering messages first and leaves follow-up queued359llx-0.0.1>     continues immediately with call-llm360llx-0.0.1>   handle-command-set-model-test361llx-0.0.1>   tool-executing-transition-tool-result-with-steering-interrupts-remaining-tools-test362llx-0.0.1>     clears pending tool calls and keeps remaining steering queued in one-at-a-time mode363llx-0.0.1>     appends current tool result, synthetic skipped results, and dequeued steering message364llx-0.0.1>     emits current result events, skipped tool lifecycle events, steering message events, and resumes llm365llx-0.0.1>   handle-command-reset-test366llx-0.0.1>   step-abort-from-streaming-to-idle-test367llx-0.0.1>     abort signal from streaming368llx-0.0.1>     abort command from streaming369llx-0.0.1>   handle-command-set-schema-config-test370llx-0.0.1>   tool-executing-transition-abort-test371llx-0.0.1>     transitions to idle and clears pending-tool-calls372llx-0.0.1>     emits turn-end373llx-0.0.1>   idle-transition-invalid-signal-test374llx-0.0.1>   idle-transition-continue-start-test375llx-0.0.1>     appends messages and transitions to streaming376llx-0.0.1>     emits turn-start (no agent-start), message events, and call-llm377llx-0.0.1>     call-llm receives the full message history including new messages378llx-0.0.1>   tool-executing-transition-tool-result-with-steering-all-mode-dequeues-all-test379llx-0.0.1>     dequeues all steering messages in :all mode380llx-0.0.1>   handle-command-continue-with-steering-one-at-a-time-test381llx-0.0.1>   handle-command-clear-follow-up-queue-test382llx-0.0.1>   handle-command-set-thinking-level-test383llx-0.0.1>   streaming-transition-llm-done-with-tools-test384llx-0.0.1>     transitions to tool-executing385llx-0.0.1>     sets pending-tool-calls and clears stream-message386llx-0.0.1>     appends the message387llx-0.0.1>     emits message-end, tool-execution-start, and execute-tool388llx-0.0.1>   handle-command-abort-when-idle-test389llx-0.0.1>   route-from-streaming-test390llx-0.0.1>     idle routes to idle391llx-0.0.1>     tool-executing routes to tool-executing392llx-0.0.1>     closed routes to closed393llx-0.0.1>     streaming stays streaming394llx-0.0.1> 395llx-0.0.1> ol.llx.ai.utils.overflow-test396llx-0.0.1>   context-overflow-detection397llx-0.0.1>     detects explicit provider messages398llx-0.0.1>     detects 400/413 status codes399llx-0.0.1>     detects silent overflow with context window400llx-0.0.1>     false for non-overflow errors401llx-0.0.1> 402llx-0.0.1> ol.llx.ai.adapters.anthropic-messages-test403llx-0.0.1>   build-request-omits-temperature-when-thinking-is-enabled404llx-0.0.1>   finalize-calculates-usage-costs405llx-0.0.1>   build-request-uses-custom-thinking-budgets406llx-0.0.1>   build-request-replays-redacted-thinking-as-anthropic-redacted-block407llx-0.0.1>   build-request-enables-budget-thinking-for-older-reasoning-model408llx-0.0.1>   decode-event-stream-contract409llx-0.0.1>   build-request-omits-thinking-when-model-not-reasoning410llx-0.0.1>   build-request-preserves-valid-emoji-surrogate-pairs411llx-0.0.1>   build-request-disables-thinking-when-no-reasoning-opts412llx-0.0.1>   finalize-throws-on-unknown-stop-reason413llx-0.0.1>   decode-event-redacted-thinking-round-trips-to-canonical-content414llx-0.0.1>   decode-event-stream-usage-calculates-costs415llx-0.0.1>   normalize-tool-call-id-sanitizes-and-truncates416llx-0.0.1>   build-request-enables-adaptive-thinking-for-opus-4-6417llx-0.0.1>   build-request-converts-canonical-context-to-anthropic-payload418llx-0.0.1>   finalize-maps-anthropic-stop-reasons419llx-0.0.1>   build-request-emits-provider-payload-trove-signal420llx-0.0.1>   build-request-enables-adaptive-thinking-for-sonnet-4-6421llx-0.0.1>   image-only-content-does-not-inject-placeholder-text422llx-0.0.1>   build-request-clamps-sonnet-4-6-xhigh-to-high423llx-0.0.1>   build-request-sanitizes-unpaired-surrogates-in-user-and-system424llx-0.0.1> 425llx-0.0.1> ol.llx.ai.adapters.common-test426llx-0.0.1>   empty-usage-shape-is-canonical427llx-0.0.1>   trim-trailing-slash-removes-single-trailing-slash428llx-0.0.1>   parse-json-safe-returns-decoded-or-empty-map429llx-0.0.1>   parse-json-lenient-falls-back-to-decode430llx-0.0.1>     uses decode-safe when it succeeds431llx-0.0.1>     falls back to decode when decode-safe returns nil432llx-0.0.1>     uses decode directly when decode-safe is absent433llx-0.0.1> 434llx-0.0.1> ol.llx.ai.adapters.openai-codex-responses-test435llx-0.0.1>   build-request-strips-codex-unsupported-payload-fields436llx-0.0.1>   build-request-prefers-explicit-api-key-over-env437llx-0.0.1>   build-request-rejects-token-missing-account-id438llx-0.0.1>   build-request-disables-reasoning-when-no-reasoning-opts439llx-0.0.1>   build-request-shapes-codex-url-and-headers440llx-0.0.1> 441llx-0.0.1> ol.llx.ai.client-test442llx-0.0.1>   complete-emits-lifecycle-trove-signals443llx-0.0.1>   complete-rejects-malformed-adapter-finalize-result444llx-0.0.1>   unified-opts->request-opts-normalizes-unified-shape445llx-0.0.1>   complete-surfaces-unknown-openai-completions-stop-reason-as-error-message446llx-0.0.1>   complete-simple-wrapper-normalizes-openai-responses-reasoning-to-effort447llx-0.0.1>   complete-does-not-retry-on-client-error448llx-0.0.1>   opts-registry-overrides-env-registry449llx-0.0.1>   stream-close-delegates-to-runtime-cancel-fn450llx-0.0.1>   stream-retries-open-stream-on-transient-error451llx-0.0.1>   unified-opts->request-opts-rejects-provider-shape-in-unified-opts452llx-0.0.1>   stream-returns-csp-channel453llx-0.0.1>   complete-emits-error-lifecycle-trove-signals454llx-0.0.1>   complete-simple-wrapper-normalizes-options455llx-0.0.1>   stream-rejects-unsupported-xhigh-with-structured-error456llx-0.0.1>   stream-simple-wrapper-normalizes-options457llx-0.0.1>   complete-transforms-context-before-build-request458llx-0.0.1>   complete-retries-on-transient-error459llx-0.0.1>   complete-allows-xhigh-for-supported-model460llx-0.0.1>   complete-rejects-unsupported-xhigh-with-structured-error461llx-0.0.1>   complete-openai-completions-non-2xx462llx-0.0.1>   complete-retries-without-thread-sleep-hook463llx-0.0.1>   complete-returns-deferred464llx-0.0.1> 465llx-0.0.1> ol.llx.ai.guardrails-contract-test466llx-0.0.1>   guardrails-enforces-boundary-shapes467llx-0.0.1>     decode-event boundary is enforced for all adapters468llx-0.0.1> 469llx-0.0.1> ol.llx.ai.utils.unicode-test470llx-0.0.1>   sanitize-surrogates-handles-surrogate-edge-cases471llx-0.0.1>     preserves valid emoji surrogate pairs472llx-0.0.1>     removes unpaired high surrogate473llx-0.0.1>     removes unpaired low surrogate474llx-0.0.1>     removes high surrogate at end of string475llx-0.0.1>     removes multiple unpaired surrogates in one string476llx-0.0.1>     preserves mixed content: emoji, CJK, math symbols, special quotes477llx-0.0.1>     handles nil and empty input478llx-0.0.1>     passes through plain ASCII unchanged479llx-0.0.1>   truncate-limits-string-length480llx-0.0.1>     truncates only when input exceeds max-len481llx-0.0.1>     coerces nil to empty string482llx-0.0.1>   sanitize-payload-deep-walks-data-structures483llx-0.0.1>     sanitizes strings nested in maps, vectors, and mixed structures484llx-0.0.1>     real-world LinkedIn data with emoji preserved485llx-0.0.1>     unpaired surrogates stripped from tool result content486llx-0.0.1>     handles bare string input487llx-0.0.1>     handles bare vector input488llx-0.0.1>     passes through non-string leaves unchanged489llx-0.0.1> 490llx-0.0.1> ol.llx.ai.oauth.cli-test491llx-0.0.1>   login-command-writes-auth-json-in-current-working-directory492llx-0.0.1>     persists oauth credentials to auth.json493llx-0.0.1> 494llx-0.0.1> ol.llx.ai.utils.tool-validation-test495llx-0.0.1>   validate-tool-call496llx-0.0.1>     success case497llx-0.0.1>     tool not found498llx-0.0.1>     validation errors are structured499llx-0.0.1>     missing required field500llx-0.0.1>     human-readable error message includes tool name and arguments501llx-0.0.1>     tool-not-found error message includes tool name502llx-0.0.1>     coerces string values using the input schema503llx-0.0.1>     applies schema defaults from the input schema504llx-0.0.1>       resolves custom schema references from the active registry505llx-0.0.1> 506llx-0.0.1> ol.llx.ai.models-test507llx-0.0.1>   model-utility-functions508llx-0.0.1>     calculate-cost509llx-0.0.1>     supports-xhigh?510llx-0.0.1>     direct anthropic 4.6 models use the larger context window511llx-0.0.1>     models-equal?512llx-0.0.1>   model-registry-and-lookup513llx-0.0.1> 514llx-0.0.1> ol.llx.ai.adapters.openai-completions-test515llx-0.0.1>   build-request-reads-provider-specific-env-api-key516llx-0.0.1>   decode-event-extracts-reasoning-details-to-tool-call-signature517llx-0.0.1>   normalize-tool-call-id-matches-upstream-issue-1022-test-id518llx-0.0.1>   convert-message-restores-thinking-field-from-signature519llx-0.0.1>   normalize-tool-call-id-mistral-avoids-collision-for-distinct-source-ids520llx-0.0.1>   normalize-tool-call-id-openai-compatible-non-pipe-ids-are-unchanged521llx-0.0.1>   build-request-emits-provider-payload-trove-signal522llx-0.0.1>   build-request-forwards-tools-and-tool-choice-with-compat-token-field523llx-0.0.1>   decode-event-emits-thinking-events-for-reasoning-content524llx-0.0.1>   build-request-omits-reasoning-effort-when-model-lacks-reasoning525llx-0.0.1>   build-request-tool-choice-sentinel-strings-pass-through526llx-0.0.1>   response->assistant-message-calculates-usage-costs527llx-0.0.1>   build-request-includes-reasoning-effort-for-reasoning-model528llx-0.0.1>   response->assistant-message-maps-provider-finish-reason-errors529llx-0.0.1>   decode-event-tracks-thinking-signature530llx-0.0.1>   normalize-tool-call-id-openai-non-pipe-ids-are-truncated-only531llx-0.0.1>   build-request-missing-api-key-message-includes-env-var-name532llx-0.0.1>   build-request-preserves-valid-emoji-surrogate-pairs533llx-0.0.1>   decode-event-stream-contract534llx-0.0.1>   build-request-sanitizes-unpaired-surrogates-in-tool-result-text535llx-0.0.1>   decode-event-stream-usage-calculates-costs536llx-0.0.1>   normalize-tool-call-id-mistral-shape537llx-0.0.1>     normalization is deterministic 9-char alphanumeric538llx-0.0.1>   normalize-tool-call-id-pipe-ids-use-call-segment-sanitize-and-truncate539llx-0.0.1>   build-request-zai-disables-thinking-when-no-reasoning540llx-0.0.1>   build-request-sanitizes-unpaired-surrogates-in-user-text541llx-0.0.1>   build-request-qwen-thinking-format-sends-enable-thinking542llx-0.0.1>   convert-message-reconstructs-reasoning-details-from-tool-signatures543llx-0.0.1>   decode-event-thinking-to-text-transition544llx-0.0.1>   build-request-batches-tool-result-images-for-openai-completions545llx-0.0.1>   response->assistant-message-falls-back-to-choice-usage546llx-0.0.1>   build-request-openai-compatible-omits-auth-and-respects-compat-overrides547llx-0.0.1>   decode-event-stream-falls-back-to-choice-usage548llx-0.0.1>   build-request-zai-thinking-format-sends-thinking-object549llx-0.0.1>   decode-event-maps-provider-finish-reason-errors550llx-0.0.1> 551llx-0.0.1> ol.llx.ai.adapters.google-generative-ai-test552llx-0.0.1>   reasoning-config-gemini-3-pro-clamps-low-effort553llx-0.0.1>   adapter-registers-tool-call-id-normalizer-with-model-id-gate554llx-0.0.1>   build-request-converts-canonical-context-to-google-payload555llx-0.0.1>   build-request-emits-provider-payload-trove-signal556llx-0.0.1>   reasoning-config-gemini-3-flash-uses-level557llx-0.0.1>   google-normalizer-matches-upstream-issue-1022-test-id-under-gate558llx-0.0.1>   thought-signature-alone-is-not-thinking559llx-0.0.1>   map-stop-reason-fail-fast-on-unknown560llx-0.0.1>     unknown finish reason in stream decode fails fast561llx-0.0.1>   reasoning-config-disables-thinking-by-default-for-gemini-3-pro562llx-0.0.1>   finalize-calculates-usage-costs563llx-0.0.1>   decode-event-stream-usage-calculates-costs564llx-0.0.1>   build-request-preserves-valid-emoji-surrogate-pairs565llx-0.0.1>   stream-error-normalization-contract566llx-0.0.1>   reasoning-config-gemini-3-pro-uses-level567llx-0.0.1>   open-stream-non-2xx-throws-structured-error568llx-0.0.1>   reasoning-config-disables-thinking-by-default-for-gemini-3569llx-0.0.1>   build-request-uses-custom-thinking-budgets570llx-0.0.1>   decode-event-stream-contract571llx-0.0.1>   reasoning-config-omitted-when-model-not-reasoning572llx-0.0.1>   decode-event-tool-call-missing-args-defaults-to-empty-map573llx-0.0.1>   reasoning-config-gemini-25-pro-budget-differs-from-flash574llx-0.0.1>   build-request-sanitizes-unpaired-surrogates-in-user-and-system575llx-0.0.1>   build-request-gemini-3-preserves-unsigned-tool-calls-with-sentinel576llx-0.0.1>   reasoning-config-disables-thinking-by-default-for-gemini-25577llx-0.0.1>   build-request-tool-result-image-forwarding-by-model-capability578llx-0.0.1>     gemini-3 multimodal model forwards image in functionResponse parts579llx-0.0.1>     text-only model drops images from functionResponse580llx-0.0.1>   finalize-throws-on-unknown-stop-reason581llx-0.0.1> 582llx-0.0.1> ol.llx.ai.client.stream-test583llx-0.0.1>   run-stream-emits-start-and-done-events584llx-0.0.1>   run-stream-calls-cancel-when-output-channel-preclosed585llx-0.0.1>   runtime-run-stream-input-requires-runtime-hooks586llx-0.0.1>     requires stream runtime hooks587llx-0.0.1> 588llx-0.0.1> ol.llx.agent.driver-test589llx-0.0.1>   abort-drops-stale-llm-events-and-allows-reuse-test590llx-0.0.1>   abort-cancels-tool-execution-and-returns-to-idle-test591llx-0.0.1>   prompt-continues-through-queued-steering-without-stalling-test592llx-0.0.1> 593llx-0.0.1> 333 tests, 1549 assertions, 0 failures.594llx-0.0.1> Picked up JAVA_TOOL_OPTIONS: -Duser.home=/build/tmp.yiMzGSeeoj595llx-0.0.1> Picked up JAVA_TOOL_OPTIONS: -Duser.home=/build/tmp.yiMzGSeeoj596llx-0.0.1> Running phase: installPhase597llx-0.0.1> Running phase: fixupPhase598llx-0.0.1> shrinking RPATHs of ELF executables and libraries in /nix/store/w5j360rzfk9agmphrw14bf43iqhrng46-llx-0.0.1599llx-0.0.1> checking for references to /build/ in /nix/store/w5j360rzfk9agmphrw14bf43iqhrng46-llx-0.0.1...600llx-0.0.1> patching script interpreter paths in /nix/store/w5j360rzfk9agmphrw14bf43iqhrng46-llx-0.0.1601602post-build step Upload to Mali Attic: ok603⚙️ Pushing 1 paths to "private" on "mali" (0 already cached, 0 in upstream)...604✅ w5j360rzfk9agmphrw14bf43iqhrng46-llx-0.0.1 (4.60 MiB/s)