summaryrefslogtreecommitdiffhomepage
path: root/packages/core/src/agent/agent.ts
blob: 2e2dbb23cd3af51140c642b5ec51f5f8fdfb6e8b (plain)
ofshex dumpascii
0000 69 6d 70 6f 72 74 20 7b 20 64 69 72 6e 61 6d 65 20 7d 20 66 72 6f 6d 20 22 6e 6f 64 65 3a 70 61 import.{.dirname.}.from."node:pa
0020 74 68 22 3b 0a 69 6d 70 6f 72 74 20 74 79 70 65 20 7b 20 50 72 6f 76 69 64 65 72 4f 70 74 69 6f th";.import.type.{.ProviderOptio
0040 6e 73 20 7d 20 66 72 6f 6d 20 22 40 61 69 2d 73 64 6b 2f 70 72 6f 76 69 64 65 72 2d 75 74 69 6c ns.}.from."@ai-sdk/provider-util
0060 73 22 3b 0a 69 6d 70 6f 72 74 20 74 79 70 65 20 7b 0a 09 46 69 6c 65 50 61 72 74 2c 0a 09 49 6d s";.import.type.{..FilePart,..Im
0080 61 67 65 50 61 72 74 2c 0a 09 4c 61 6e 67 75 61 67 65 4d 6f 64 65 6c 55 73 61 67 65 2c 0a 09 4d agePart,..LanguageModelUsage,..M
00a0 6f 64 65 6c 4d 65 73 73 61 67 65 2c 0a 09 53 79 73 74 65 6d 4d 6f 64 65 6c 4d 65 73 73 61 67 65 odelMessage,..SystemModelMessage
00c0 2c 0a 09 54 65 78 74 50 61 72 74 2c 0a 09 54 6f 6f 6c 2c 0a 7d 20 66 72 6f 6d 20 22 61 69 22 3b ,..TextPart,..Tool,.}.from."ai";
00e0 0a 69 6d 70 6f 72 74 20 7b 20 73 74 72 65 61 6d 54 65 78 74 20 7d 20 66 72 6f 6d 20 22 61 69 22 .import.{.streamText.}.from."ai"
0100 3b 0a 69 6d 70 6f 72 74 20 7b 20 67 65 74 41 67 65 6e 74 44 69 72 50 61 74 68 73 20 7d 20 66 72 ;.import.{.getAgentDirPaths.}.fr
0120 6f 6d 20 22 2e 2e 2f 61 67 65 6e 74 73 2f 6c 6f 61 64 65 72 2e 6a 73 22 3b 0a 69 6d 70 6f 72 74 om."../agents/loader.js";.import
0140 20 7b 20 61 70 70 65 6e 64 45 76 65 6e 74 54 6f 43 68 75 6e 6b 73 20 7d 20 66 72 6f 6d 20 22 2e .{.appendEventToChunks.}.from.".
0160 2e 2f 63 68 75 6e 6b 73 2f 61 70 70 65 6e 64 2e 6a 73 22 3b 0a 69 6d 70 6f 72 74 20 7b 20 62 75 ./chunks/append.js";.import.{.bu
0180 69 6c 64 42 69 6c 6c 69 6e 67 48 65 61 64 65 72 56 61 6c 75 65 2c 20 53 59 53 54 45 4d 5f 49 44 ildBillingHeaderValue,.SYSTEM_ID
01a0 45 4e 54 49 54 59 20 7d 20 66 72 6f 6d 20 22 2e 2e 2f 63 72 65 64 65 6e 74 69 61 6c 73 2f 63 6c ENTITY.}.from."../credentials/cl
01c0 61 75 64 65 2e 6a 73 22 3b 0a 69 6d 70 6f 72 74 20 7b 0a 09 6c 6f 67 41 67 65 6e 74 4c 6f 6f 70 aude.js";.import.{..logAgentLoop
01e0 2c 0a 09 6c 6f 67 53 74 65 70 4c 69 66 65 63 79 63 6c 65 2c 0a 09 6c 6f 67 53 74 72 65 61 6d 45 ,..logStepLifecycle,..logStreamE
0200 76 65 6e 74 2c 0a 09 6e 65 78 74 44 65 62 75 67 53 65 71 2c 0a 7d 20 66 72 6f 6d 20 22 2e 2e 2f vent,..nextDebugSeq,.}.from."../
0220 6c 6c 6d 2f 64 65 62 75 67 2d 6c 6f 67 67 65 72 2e 6a 73 22 3b 0a 69 6d 70 6f 72 74 20 7b 0a 09 llm/debug-logger.js";.import.{..
0240 63 72 65 61 74 65 50 72 6f 76 69 64 65 72 2c 0a 09 74 79 70 65 20 4d 6f 64 65 6c 46 61 63 74 6f createProvider,..type.ModelFacto
0260 72 79 2c 0a 09 70 72 65 66 69 78 54 6f 6f 6c 4e 61 6d 65 2c 0a 09 75 6e 70 72 65 66 69 78 54 6f ry,..prefixToolName,..unprefixTo
0280 6f 6c 4e 61 6d 65 2c 0a 7d 20 66 72 6f 6d 20 22 2e 2e 2f 6c 6c 6d 2f 70 72 6f 76 69 64 65 72 2e olName,.}.from."../llm/provider.
02a0 6a 73 22 3b 0a 69 6d 70 6f 72 74 20 7b 20 63 61 6e 6f 6e 69 63 61 6c 69 7a 65 20 7d 20 66 72 6f js";.import.{.canonicalize.}.fro
02c0 6d 20 22 2e 2e 2f 74 6f 6f 6c 73 2f 70 61 74 68 2d 75 74 69 6c 73 2e 6a 73 22 3b 0a 69 6d 70 6f m."../tools/path-utils.js";.impo
02e0 72 74 20 7b 20 63 72 65 61 74 65 54 6f 6f 6c 52 65 67 69 73 74 72 79 20 7d 20 66 72 6f 6d 20 22 rt.{.createToolRegistry.}.from."
0300 2e 2e 2f 74 6f 6f 6c 73 2f 72 65 67 69 73 74 72 79 2e 6a 73 22 3b 0a 69 6d 70 6f 72 74 20 7b 20 ../tools/registry.js";.import.{.
0320 61 6e 61 6c 79 7a 65 43 6f 6d 6d 61 6e 64 20 7d 20 66 72 6f 6d 20 22 2e 2e 2f 74 6f 6f 6c 73 2f analyzeCommand.}.from."../tools/
0340 73 68 65 6c 6c 2d 61 6e 61 6c 79 7a 65 2e 6a 73 22 3b 0a 69 6d 70 6f 72 74 20 7b 20 61 70 70 6c shell-analyze.js";.import.{.appl
0360 79 54 72 75 6e 63 61 74 69 6f 6e 2c 20 53 50 49 4c 4c 5f 52 4f 4f 54 20 7d 20 66 72 6f 6d 20 22 yTruncation,.SPILL_ROOT.}.from."
0380 2e 2e 2f 74 6f 6f 6c 73 2f 74 72 75 6e 63 61 74 65 2e 6a 73 22 3b 0a 69 6d 70 6f 72 74 20 74 79 ../tools/truncate.js";.import.ty
03a0 70 65 20 7b 0a 09 41 67 65 6e 74 43 6f 6e 66 69 67 2c 0a 09 41 67 65 6e 74 45 76 65 6e 74 2c 0a pe.{..AgentConfig,..AgentEvent,.
03c0 09 41 67 65 6e 74 53 74 61 74 75 73 2c 0a 09 43 68 61 74 4d 65 73 73 61 67 65 2c 0a 09 43 68 75 .AgentStatus,..ChatMessage,..Chu
03e0 6e 6b 2c 0a 09 51 75 65 75 65 43 61 6c 6c 62 61 63 6b 73 2c 0a 09 52 65 61 73 6f 6e 69 6e 67 45 nk,..QueueCallbacks,..ReasoningE
0400 66 66 6f 72 74 2c 0a 09 54 6f 6f 6c 43 61 6c 6c 2c 0a 09 54 6f 6f 6c 52 65 73 75 6c 74 2c 0a 09 ffort,..ToolCall,..ToolResult,..
0420 55 73 61 67 65 44 61 74 61 2c 0a 09 55 73 65 72 43 6f 6e 74 65 6e 74 50 61 72 74 2c 0a 7d 20 66 UsageData,..UserContentPart,.}.f
0440 72 6f 6d 20 22 2e 2e 2f 74 79 70 65 73 2f 69 6e 64 65 78 2e 6a 73 22 3b 0a 69 6d 70 6f 72 74 20 rom."../types/index.js";.import.
0460 7b 20 44 45 46 41 55 4c 54 5f 52 45 41 53 4f 4e 49 4e 47 5f 45 46 46 4f 52 54 20 7d 20 66 72 6f {.DEFAULT_REASONING_EFFORT.}.fro
0480 6d 20 22 2e 2e 2f 74 79 70 65 73 2f 69 6e 64 65 78 2e 6a 73 22 3b 0a 0a 2f 2a 2a 0a 20 2a 20 52 m."../types/index.js";../**..*.R
04a0 65 62 75 69 6c 64 20 41 49 20 53 44 4b 20 60 4d 6f 64 65 6c 4d 65 73 73 61 67 65 5b 5d 60 20 66 ebuild.AI.SDK.`ModelMessage[]`.f
04c0 72 6f 6d 20 6f 75 72 20 69 6e 74 65 72 6e 61 6c 20 60 43 68 61 74 4d 65 73 73 61 67 65 5b 5d 60 rom.our.internal.`ChatMessage[]`
04e0 2e 0a 20 2a 0a 20 2a 20 53 74 72 69 70 20 72 75 6c 65 73 20 28 73 65 65 20 70 6c 61 6e 2d 63 68 ...*..*.Strip.rules.(see.plan-ch
0500 75 6e 6b 2d 72 65 66 61 63 74 6f 72 2e 6d 64 29 3a 0a 20 2a 20 20 2d 20 60 72 6f 6c 65 3a 20 22 unk-refactor.md):..*..-.`role:."
0520 73 79 73 74 65 6d 22 60 20 6d 65 73 73 61 67 65 73 20 61 72 65 20 73 6b 69 70 70 65 64 20 77 68 system"`.messages.are.skipped.wh
0540 6f 6c 65 73 61 6c 65 20 28 74 68 65 79 27 72 65 20 64 69 73 70 6c 61 79 2d 6f 6e 6c 79 0a 20 2a olesale.(they're.display-only..*
0560 20 20 20 20 73 74 61 6e 64 61 6c 6f 6e 65 2d 73 79 73 74 65 6d 20 62 75 62 62 6c 65 73 20 74 68 ....standalone-system.bubbles.th
0580 61 74 20 65 78 69 73 74 20 6f 75 74 73 69 64 65 20 61 6e 79 20 6d 6f 64 65 6c 20 74 75 72 6e 29 at.exist.outside.any.model.turn)
05a0 2e 0a 20 2a 20 20 2d 20 60 65 72 72 6f 72 60 20 63 68 75 6e 6b 73 20 61 72 65 20 73 6b 69 70 70 ...*..-.`error`.chunks.are.skipp
05c0 65 64 20 e2 80 94 20 74 68 65 20 74 75 72 6e 20 65 6e 64 65 64 3b 20 74 68 65 20 4c 4c 4d 20 64 ed.....the.turn.ended;.the.LLM.d
05e0 6f 65 73 6e 27 74 20 6e 65 65 64 20 74 68 65 6d 2e 0a 20 2a 20 20 2d 20 60 73 79 73 74 65 6d 60 oesn't.need.them...*..-.`system`
0600 20 63 68 75 6e 6b 73 20 61 72 65 20 73 6b 69 70 70 65 64 20 e2 80 94 20 64 69 73 70 6c 61 79 2d .chunks.are.skipped.....display-
0620 6f 6e 6c 79 20 6e 6f 74 69 63 65 73 2e 0a 20 2a 20 20 2d 20 60 74 65 78 74 60 20 63 68 75 6e 6b only.notices...*..-.`text`.chunk
0640 73 20 e2 86 92 20 60 7b 20 74 79 70 65 3a 20 22 74 65 78 74 22 2c 20 74 65 78 74 20 7d 60 20 70 s.....`{.type:."text",.text.}`.p
0660 61 72 74 73 2e 0a 20 2a 20 20 2d 20 60 74 68 69 6e 6b 69 6e 67 60 20 63 68 75 6e 6b 73 20 e2 86 arts...*..-.`thinking`.chunks...
0680 92 20 60 7b 20 74 79 70 65 3a 20 22 72 65 61 73 6f 6e 69 6e 67 22 2c 20 74 65 78 74 2c 20 70 72 ..`{.type:."reasoning",.text,.pr
06a0 6f 76 69 64 65 72 4f 70 74 69 6f 6e 73 3f 20 7d 60 20 70 61 72 74 73 2e 0a 20 2a 20 20 20 20 54 oviderOptions?.}`.parts...*....T
06c0 68 65 20 60 70 72 6f 76 69 64 65 72 4f 70 74 69 6f 6e 73 60 20 63 61 72 72 69 65 73 20 74 68 65 he.`providerOptions`.carries.the
06e0 20 41 6e 74 68 72 6f 70 69 63 20 73 69 67 6e 61 74 75 72 65 20 62 6c 6f 62 20 28 69 66 20 70 72 .Anthropic.signature.blob.(if.pr
0700 65 73 65 6e 74 29 20 73 6f 0a 20 2a 20 20 20 20 41 6e 74 68 72 6f 70 69 63 20 63 61 6e 20 76 61 esent).so..*....Anthropic.can.va
0720 6c 69 64 61 74 65 20 65 78 74 65 6e 64 65 64 2d 74 68 69 6e 6b 69 6e 67 20 72 6f 75 6e 64 2d 74 lidate.extended-thinking.round-t
0740 72 69 70 73 2e 20 4e 6f 6e 2d 41 6e 74 68 72 6f 70 69 63 0a 20 2a 20 20 20 20 72 65 61 73 6f 6e rips..Non-Anthropic..*....reason
0760 69 6e 67 20 68 61 73 20 6e 6f 20 6d 65 74 61 64 61 74 61 20 61 6e 64 20 69 73 20 73 65 6e 74 20 ing.has.no.metadata.and.is.sent.
0780 77 69 74 68 6f 75 74 20 70 72 6f 76 69 64 65 72 4f 70 74 69 6f 6e 73 20 28 61 63 63 65 70 74 65 without.providerOptions.(accepte
07a0 64 0a 20 2a 20 20 20 20 62 79 20 41 6e 74 68 72 6f 70 69 63 20 e2 80 94 20 69 74 20 6a 75 73 74 d..*....by.Anthropic.....it.just
07c0 20 77 6f 6e 27 74 20 76 65 72 69 66 79 20 61 20 6d 69 73 73 69 6e 67 20 73 69 67 6e 61 74 75 72 .won't.verify.a.missing.signatur
07e0 65 29 2e 0a 20 2a 20 20 2d 20 60 74 6f 6f 6c 2d 62 61 74 63 68 60 20 63 68 75 6e 6b 73 20 e2 86 e)...*..-.`tool-batch`.chunks...
0800 92 20 6f 6e 65 20 60 7b 20 74 79 70 65 3a 20 22 74 6f 6f 6c 2d 63 61 6c 6c 22 20 7d 60 20 70 61 ..one.`{.type:."tool-call".}`.pa
0820 72 74 20 70 65 72 20 65 6e 74 72 79 0a 20 2a 20 20 20 20 69 6e 73 69 64 65 20 74 68 65 20 63 75 rt.per.entry..*....inside.the.cu
0840 72 72 65 6e 74 20 61 73 73 69 73 74 61 6e 74 20 6d 65 73 73 61 67 65 2c 20 66 6f 6c 6c 6f 77 65 rrent.assistant.message,.followe
0860 64 20 62 79 20 61 20 53 49 4e 47 4c 45 0a 20 2a 20 20 20 20 60 7b 20 72 6f 6c 65 3a 20 22 74 6f d.by.a.SINGLE..*....`{.role:."to
0880 6f 6c 22 2c 20 63 6f 6e 74 65 6e 74 3a 20 5b 2e 2e 2e 61 6c 6c 20 74 6f 6f 6c 2d 72 65 73 75 6c ol",.content:.[...all.tool-resul
08a0 74 20 70 61 72 74 73 5d 20 7d 60 20 6d 65 73 73 61 67 65 20 68 6f 6c 64 69 6e 67 0a 20 2a 20 20 t.parts].}`.message.holding..*..
08c0 20 20 65 76 65 72 79 20 65 6e 74 72 79 20 74 68 61 74 20 68 61 73 20 61 20 72 65 73 75 6c 74 2e ..every.entry.that.has.a.result.
08e0 20 47 72 6f 75 70 69 6e 67 20 28 72 61 74 68 65 72 20 74 68 61 6e 20 6f 6e 65 20 6d 65 73 73 61 .Grouping.(rather.than.one.messa
0900 67 65 20 70 65 72 0a 20 2a 20 20 20 20 72 65 73 75 6c 74 29 20 6b 65 65 70 73 20 41 6e 74 68 72 ge.per..*....result).keeps.Anthr
0920 6f 70 69 63 20 70 72 6f 6d 70 74 2d 63 61 63 68 69 6e 67 20 62 72 65 61 6b 70 6f 69 6e 74 73 20 opic.prompt-caching.breakpoints.
0940 6c 61 6e 64 69 6e 67 20 6f 6e 20 74 68 65 0a 20 2a 20 20 20 20 61 73 73 69 73 74 61 6e 74 2f 74 landing.on.the..*....assistant/t
0960 6f 6f 6c 20 74 75 72 6e 20 62 6f 75 6e 64 61 72 79 3b 20 74 68 65 20 77 69 72 65 20 66 6f 72 6d ool.turn.boundary;.the.wire.form
0980 61 74 20 69 73 20 69 64 65 6e 74 69 63 61 6c 20 66 6f 72 20 62 6f 74 68 20 74 68 65 0a 20 2a 20 at.is.identical.for.both.the..*.
09a0 20 20 20 41 6e 74 68 72 6f 70 69 63 20 61 6e 64 20 4f 70 65 6e 41 49 2d 63 6f 6d 70 61 74 69 62 ...Anthropic.and.OpenAI-compatib
09c0 6c 65 20 62 61 63 6b 65 6e 64 73 2e 0a 20 2a 0a 20 2a 20 4d 69 78 65 64 2d 72 65 73 6f 6c 75 74 le.backends...*..*.Mixed-resolut
09e0 69 6f 6e 20 74 6f 6f 6c 20 62 61 74 63 68 65 73 20 28 73 6f 6d 65 20 65 6e 74 72 69 65 73 20 77 ion.tool.batches.(some.entries.w
0a00 69 74 68 20 60 72 65 73 75 6c 74 60 2c 20 73 6f 6d 65 20 77 69 74 68 6f 75 74 29 3a 0a 20 2a 20 ith.`result`,.some.without):..*.
0a20 77 65 20 65 6d 69 74 20 74 6f 6f 6c 2d 72 65 73 75 6c 74 73 20 6f 6e 6c 79 20 66 6f 72 20 74 68 we.emit.tool-results.only.for.th
0a40 65 20 65 6e 74 72 69 65 73 20 74 68 61 74 20 68 61 76 65 20 74 68 65 6d 2e 20 49 6e 20 70 72 61 e.entries.that.have.them..In.pra
0a60 63 74 69 63 65 0a 20 2a 20 74 68 65 20 61 67 65 6e 74 20 72 65 73 6f 6c 76 65 73 20 65 76 65 72 ctice..*.the.agent.resolves.ever
0a80 79 20 74 6f 6f 6c 20 63 61 6c 6c 20 69 6e 20 61 20 73 74 65 70 20 62 65 66 6f 72 65 20 6c 6f 6f y.tool.call.in.a.step.before.loo
0aa0 70 69 6e 67 20 62 61 63 6b 20 74 6f 20 74 68 65 0a 20 2a 20 4c 4c 4d 2c 20 73 6f 20 74 68 69 73 ping.back.to.the..*.LLM,.so.this
0ac0 20 63 61 73 65 20 6f 6e 6c 79 20 61 72 69 73 65 73 20 6d 69 64 2d 73 74 65 70 20 28 77 68 65 72 .case.only.arises.mid-step.(wher
0ae0 65 20 74 68 65 20 6d 65 73 73 61 67 65 20 68 61 73 6e 27 74 20 62 65 65 6e 0a 20 2a 20 72 6f 75 e.the.message.hasn't.been..*.rou
0b00 6e 64 2d 74 72 69 70 70 65 64 20 74 6f 20 74 68 65 20 4c 4c 4d 20 79 65 74 29 20 61 6e 64 20 69 nd-tripped.to.the.LLM.yet).and.i
0b20 73 20 62 65 6e 69 67 6e 2e 0a 20 2a 2f 0a 2f 2a 2a 0a 20 2a 20 4d 61 72 6b 65 72 20 75 73 65 64 s.benign...*/./**..*.Marker.used
0b40 20 74 6f 20 69 64 65 6e 74 69 66 79 20 74 68 65 20 73 74 61 72 74 20 6f 66 20 61 20 60 5b 55 53 .to.identify.the.start.of.a.`[US
0b60 45 52 20 49 4e 54 45 52 52 55 50 54 5d 60 20 62 6c 6f 63 6b 20 65 6d 62 65 64 64 65 64 0a 20 2a ER.INTERRUPT]`.block.embedded..*
0b80 20 69 6e 20 61 20 74 6f 6f 6c 20 72 65 73 75 6c 74 2e 20 42 6f 74 68 20 74 68 65 20 61 67 65 6e .in.a.tool.result..Both.the.agen
0ba0 74 2d 6c 65 76 65 6c 20 69 6e 6a 65 63 74 69 6f 6e 0a 20 2a 20 28 60 70 61 63 6b 61 67 65 73 2f t-level.injection..*.(`packages/
0bc0 63 6f 72 65 2f 73 72 63 2f 61 67 65 6e 74 2f 61 67 65 6e 74 2e 74 73 60 29 20 61 6e 64 20 74 68 core/src/agent/agent.ts`).and.th
0be0 65 20 74 6f 6f 6c 2d 6c 65 76 65 6c 20 69 6e 6a 65 63 74 69 6f 6e 73 20 69 6e 0a 20 2a 20 60 72 e.tool-level.injections.in..*.`r
0c00 75 6e 2d 73 68 65 6c 6c 60 2c 20 60 79 6f 75 74 75 62 65 2d 74 72 61 6e 73 63 72 69 62 65 60 2c un-shell`,.`youtube-transcribe`,
0c20 20 61 6e 64 20 60 72 65 74 72 69 65 76 65 60 20 75 73 65 20 74 68 65 20 73 61 6d 65 20 73 65 70 .and.`retrieve`.use.the.same.sep
0c40 61 72 61 74 6f 72 0a 20 2a 20 28 60 5c 6e 5c 6e 5b 55 53 45 52 20 49 4e 54 45 52 52 55 50 54 5d arator..*.(`\n\n[USER.INTERRUPT]
0c60 60 29 20 62 65 66 6f 72 65 20 74 68 65 20 62 6f 69 6c 65 72 70 6c 61 74 65 2c 20 73 6f 20 61 20 `).before.the.boilerplate,.so.a.
0c80 73 69 6e 67 6c 65 20 73 75 62 73 74 72 69 6e 67 0a 20 2a 20 73 65 61 72 63 68 20 73 75 66 66 69 single.substring..*.search.suffi
0ca0 63 65 73 20 66 6f 72 20 73 74 72 69 70 70 69 6e 67 2e 0a 20 2a 2f 0a 63 6f 6e 73 74 20 55 53 45 ces.for.stripping...*/.const.USE
0cc0 52 5f 49 4e 54 45 52 52 55 50 54 5f 4d 41 52 4b 45 52 20 3d 20 22 5c 6e 5c 6e 5b 55 53 45 52 20 R_INTERRUPT_MARKER.=."\n\n[USER.
0ce0 49 4e 54 45 52 52 55 50 54 5d 22 3b 0a 0a 2f 2a 2a 0a 20 2a 20 52 65 6d 6f 76 65 20 74 68 65 20 INTERRUPT]";../**..*.Remove.the.
0d00 60 5b 55 53 45 52 20 49 4e 54 45 52 52 55 50 54 5d 60 20 62 6c 6f 63 6b 20 28 61 6e 64 20 65 76 `[USER.INTERRUPT]`.block.(and.ev
0d20 65 72 79 74 68 69 6e 67 20 61 66 74 65 72 20 69 74 29 20 66 72 6f 6d 20 61 20 74 6f 6f 6c 0a 20 erything.after.it).from.a.tool..
0d40 2a 20 72 65 73 75 6c 74 20 73 74 72 69 6e 67 2e 20 55 73 65 64 20 77 68 65 6e 20 61 20 68 69 73 *.result.string..Used.when.a.his
0d60 74 6f 72 69 63 61 6c 20 74 6f 6f 6c 2d 72 65 73 75 6c 74 20 69 73 20 62 65 69 6e 67 20 72 65 2d torical.tool-result.is.being.re-
0d80 73 65 72 69 61 6c 69 7a 65 64 0a 20 2a 20 66 6f 72 20 74 68 65 20 4c 4c 4d 20 61 6e 64 20 74 68 serialized..*.for.the.LLM.and.th
0da0 65 20 6d 6f 64 65 6c 20 68 61 73 20 61 6c 72 65 61 64 79 20 68 61 64 20 61 20 63 68 61 6e 63 65 e.model.has.already.had.a.chance
0dc0 20 74 6f 20 61 64 64 72 65 73 73 20 74 68 61 74 0a 20 2a 20 69 6e 74 65 72 72 75 70 74 20 e2 80 .to.address.that..*.interrupt...
0de0 94 20 6c 65 61 76 69 6e 67 20 74 68 65 20 69 6d 70 65 72 61 74 69 76 65 20 22 59 6f 75 20 4d 55 ..leaving.the.imperative."You.MU
0e00 53 54 20 61 64 64 72 65 73 73 20 74 68 65 73 65 22 20 74 65 78 74 20 69 6e 0a 20 2a 20 70 6c 61 ST.address.these".text.in..*.pla
0e20 63 65 20 63 61 75 73 65 73 20 74 68 65 20 6d 6f 64 65 6c 20 74 6f 20 72 65 2d 61 63 6b 6e 6f 77 ce.causes.the.model.to.re-acknow
0e40 6c 65 64 67 65 20 74 68 65 20 73 61 6d 65 20 69 6e 74 65 72 72 75 70 74 20 6f 6e 20 65 76 65 72 ledge.the.same.interrupt.on.ever
0e60 79 0a 20 2a 20 73 75 62 73 65 71 75 65 6e 74 20 73 74 65 70 2e 0a 20 2a 0a 20 2a 20 54 68 65 20 y..*.subsequent.step...*..*.The.
0e80 69 6e 74 65 72 72 75 70 74 20 62 6c 6f 63 6b 20 69 73 20 61 6c 77 61 79 73 20 61 70 70 65 6e 64 interrupt.block.is.always.append
0ea0 65 64 20 74 6f 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65 20 74 6f 6f 6c 20 72 65 73 75 6c 74 ed.to.the.end.of.the.tool.result
0ec0 2c 20 73 6f 0a 20 2a 20 77 65 20 73 74 72 69 70 20 66 72 6f 6d 20 74 68 65 20 6d 61 72 6b 65 72 ,.so..*.we.strip.from.the.marker
0ee0 20 74 6f 20 65 6e 64 2d 6f 66 2d 73 74 72 69 6e 67 2e 0a 20 2a 2f 0a 66 75 6e 63 74 69 6f 6e 20 .to.end-of-string...*/.function.
0f00 73 74 72 69 70 55 73 65 72 49 6e 74 65 72 72 75 70 74 42 6c 6f 63 6b 28 72 65 73 75 6c 74 3a 20 stripUserInterruptBlock(result:.
0f20 73 74 72 69 6e 67 29 3a 20 73 74 72 69 6e 67 20 7b 0a 09 63 6f 6e 73 74 20 69 64 78 20 3d 20 72 string):.string.{..const.idx.=.r
0f40 65 73 75 6c 74 2e 69 6e 64 65 78 4f 66 28 55 53 45 52 5f 49 4e 54 45 52 52 55 50 54 5f 4d 41 52 esult.indexOf(USER_INTERRUPT_MAR
0f60 4b 45 52 29 3b 0a 09 69 66 20 28 69 64 78 20 3d 3d 3d 20 2d 31 29 20 72 65 74 75 72 6e 20 72 65 KER);..if.(idx.===.-1).return.re
0f80 73 75 6c 74 3b 0a 09 72 65 74 75 72 6e 20 72 65 73 75 6c 74 2e 73 6c 69 63 65 28 30 2c 20 69 64 sult;..return.result.slice(0,.id
0fa0 78 29 3b 0a 7d 0a 0a 2f 2a 2a 0a 20 2a 20 53 74 61 62 6c 65 20 6b 65 79 20 66 6f 72 20 63 6f 6c x);.}../**..*.Stable.key.for.col
0fc0 6c 61 70 73 69 6e 67 20 62 79 74 65 2d 69 64 65 6e 74 69 63 61 6c 20 74 6f 6f 6c 20 63 61 6c 6c lapsing.byte-identical.tool.call
0fe0 73 20 69 6e 73 69 64 65 20 61 20 73 69 6e 67 6c 65 20 62 61 74 63 68 2e 0a 20 2a 0a 20 2a 20 43 s.inside.a.single.batch...*..*.C
1000 6c 61 75 64 65 20 6f 63 63 61 73 69 6f 6e 61 6c 6c 79 20 64 65 67 65 6e 65 72 61 74 65 73 20 69 laude.occasionally.degenerates.i
1020 6e 74 6f 20 61 20 67 65 6e 65 72 61 74 69 6f 6e 20 6c 6f 6f 70 20 61 6e 64 20 65 6d 69 74 73 20 nto.a.generation.loop.and.emits.
1040 74 68 65 20 73 61 6d 65 0a 20 2a 20 74 6f 6f 6c 20 63 61 6c 6c 20 28 73 61 6d 65 20 6e 61 6d 65 the.same..*.tool.call.(same.name
1060 20 2b 20 73 61 6d 65 20 61 72 67 75 6d 65 6e 74 73 29 20 64 6f 7a 65 6e 73 20 e2 80 94 20 65 76 .+.same.arguments).dozens.....ev
1080 65 6e 20 31 35 30 2b 20 e2 80 94 20 74 69 6d 65 73 20 69 6e 20 6f 6e 65 0a 20 2a 20 70 61 72 61 en.150+.....times.in.one..*.para
10a0 6c 6c 65 6c 20 62 61 74 63 68 20 28 73 65 65 20 74 6f 6f 6c 2d 72 75 6e 6e 65 72 2d 64 75 70 6c llel.batch.(see.tool-runner-dupl
10c0 69 63 61 74 69 6f 6e 2d 69 6e 63 69 64 65 6e 74 2e 6d 64 29 2e 20 45 61 63 68 20 63 6f 70 79 20 ication-incident.md)..Each.copy.
10e0 63 61 72 72 69 65 73 0a 20 2a 20 69 74 73 20 6f 77 6e 20 75 6e 69 71 75 65 20 60 74 6f 6f 6c 43 carries..*.its.own.unique.`toolC
1100 61 6c 6c 49 64 60 2c 20 73 6f 20 41 6e 74 68 72 6f 70 69 63 20 73 74 69 6c 6c 20 72 65 71 75 69 allId`,.so.Anthropic.still.requi
1120 72 65 73 20 61 20 60 74 6f 6f 6c 5f 72 65 73 75 6c 74 60 20 66 6f 72 0a 20 2a 20 65 76 65 72 79 res.a.`tool_result`.for..*.every
1140 20 6f 6e 65 2c 20 62 75 74 20 72 65 2d 65 78 65 63 75 74 69 6e 67 20 69 64 65 6e 74 69 63 61 6c .one,.but.re-executing.identical
1160 20 69 64 65 6d 70 6f 74 65 6e 74 20 72 65 61 64 73 20 77 61 73 74 65 73 20 72 65 61 6c 20 77 61 .idempotent.reads.wastes.real.wa
1180 6c 6c 2d 63 6c 6f 63 6b 0a 20 2a 20 74 69 6d 65 20 61 6e 64 20 6d 6f 6e 65 79 20 61 6e 64 20 66 ll-clock..*.time.and.money.and.f
11a0 6c 6f 6f 64 73 20 74 68 65 20 63 6f 6e 74 65 78 74 20 77 69 74 68 20 72 65 64 75 6e 64 61 6e 74 loods.the.context.with.redundant
11c0 20 6f 75 74 70 75 74 2e 0a 20 2a 0a 20 2a 20 52 65 74 75 72 6e 69 6e 67 20 61 20 6e 6f 6e 2d 6e .output...*..*.Returning.a.non-n
11e0 75 6c 6c 20 6b 65 79 20 68 65 72 65 20 6c 65 74 73 20 74 68 65 20 65 78 65 63 75 74 6f 72 20 72 ull.key.here.lets.the.executor.r
1200 75 6e 20 74 68 65 20 46 49 52 53 54 20 6f 63 63 75 72 72 65 6e 63 65 20 61 6e 64 0a 20 2a 20 72 un.the.FIRST.occurrence.and..*.r
1220 65 75 73 65 20 69 74 73 20 72 65 73 75 6c 74 20 66 6f 72 20 65 76 65 72 79 20 73 75 62 73 65 71 euse.its.result.for.every.subseq
1240 75 65 6e 74 20 69 64 65 6e 74 69 63 61 6c 20 63 61 6c 6c 20 69 6e 20 74 68 65 20 73 61 6d 65 20 uent.identical.call.in.the.same.
1260 62 61 74 63 68 2e 20 54 68 65 0a 20 2a 20 6b 65 79 20 72 65 6c 69 65 73 20 6f 6e 20 60 4a 53 4f batch..The..*.key.relies.on.`JSO
1280 4e 2e 73 74 72 69 6e 67 69 66 79 60 20 70 72 65 73 65 72 76 69 6e 67 20 61 72 67 75 6d 65 6e 74 N.stringify`.preserving.argument
12a0 20 6f 72 64 65 72 20 e2 80 94 20 74 77 6f 20 69 64 65 6e 74 69 63 61 6c 0a 20 2a 20 67 65 6e 65 .order.....two.identical..*.gene
12c0 72 61 74 69 6f 6e 73 20 73 65 72 69 61 6c 69 7a 65 20 69 64 65 6e 74 69 63 61 6c 6c 79 20 e2 80 rations.serialize.identically...
12e0 94 20 77 68 69 63 68 20 63 6f 76 65 72 73 20 74 68 65 20 6f 62 73 65 72 76 65 64 20 66 61 69 6c ..which.covers.the.observed.fail
1300 75 72 65 20 6d 6f 64 65 2e 0a 20 2a 20 49 66 20 74 68 65 20 61 72 67 75 6d 65 6e 74 73 20 63 61 ure.mode...*.If.the.arguments.ca
1320 6e 27 74 20 62 65 20 73 65 72 69 61 6c 69 7a 65 64 20 77 65 20 72 65 74 75 72 6e 20 60 6e 75 6c n't.be.serialized.we.return.`nul
1340 6c 60 2c 20 77 68 69 63 68 20 64 69 73 61 62 6c 65 73 20 64 65 64 75 70 0a 20 2a 20 66 6f 72 20 l`,.which.disables.dedup..*.for.
1360 74 68 61 74 20 63 61 6c 6c 20 28 69 74 20 61 6c 77 61 79 73 20 65 78 65 63 75 74 65 73 29 2e 0a that.call.(it.always.executes)..
1380 20 2a 2f 0a 66 75 6e 63 74 69 6f 6e 20 74 6f 6f 6c 44 65 64 75 70 4b 65 79 28 6e 61 6d 65 3a 20 .*/.function.toolDedupKey(name:.
13a0 73 74 72 69 6e 67 2c 20 61 72 67 73 3a 20 52 65 63 6f 72 64 3c 73 74 72 69 6e 67 2c 20 75 6e 6b string,.args:.Record<string,.unk
13c0 6e 6f 77 6e 3e 29 3a 20 73 74 72 69 6e 67 20 7c 20 6e 75 6c 6c 20 7b 0a 09 74 72 79 20 7b 0a 09 nown>):.string.|.null.{..try.{..
13e0 09 72 65 74 75 72 6e 20 60 24 7b 6e 61 6d 65 7d 00 24 7b 4a 53 4f 4e 2e 73 74 72 69 6e 67 69 66 .return.`${name}.${JSON.stringif
1400 79 28 61 72 67 73 20 3f 3f 20 7b 7d 29 7d 60 3b 0a 09 7d 20 63 61 74 63 68 20 7b 0a 09 09 72 65 y(args.??.{})}`;..}.catch.{...re
1420 74 75 72 6e 20 6e 75 6c 6c 3b 0a 09 7d 0a 7d 0a 0a 2f 2a 2a 0a 20 2a 20 43 6f 6e 76 65 72 74 20 turn.null;..}.}../**..*.Convert.
1440 61 20 75 73 65 72 20 74 75 72 6e 27 73 20 65 70 68 65 6d 65 72 61 6c 20 6d 75 6c 74 69 6d 6f 64 a.user.turn's.ephemeral.multimod
1460 61 6c 20 60 63 6f 6e 74 65 6e 74 60 20 69 6e 74 6f 20 41 49 20 53 44 4b 20 75 73 65 72 2d 63 6f al.`content`.into.AI.SDK.user-co
1480 6e 74 65 6e 74 0a 20 2a 20 70 61 72 74 73 20 28 60 54 65 78 74 50 61 72 74 20 7c 20 49 6d 61 67 ntent..*.parts.(`TextPart.|.Imag
14a0 65 50 61 72 74 20 7c 20 46 69 6c 65 50 61 72 74 60 29 2c 20 70 72 65 73 65 72 76 69 6e 67 20 6f ePart.|.FilePart`),.preserving.o
14c0 72 64 65 72 2e 20 49 6d 61 67 65 73 20 62 65 63 6f 6d 65 0a 20 2a 20 60 49 6d 61 67 65 50 61 72 rder..Images.become..*.`ImagePar
14e0 74 60 73 3b 20 50 44 46 73 20 28 61 6e 64 20 61 6e 79 20 6e 6f 6e 2d 69 6d 61 67 65 20 61 74 74 t`s;.PDFs.(and.any.non-image.att
1500 61 63 68 6d 65 6e 74 29 20 62 65 63 6f 6d 65 20 60 46 69 6c 65 50 61 72 74 60 73 2e 20 54 68 65 achment).become.`FilePart`s..The
1520 0a 20 2a 20 62 61 73 65 36 34 20 70 61 79 6c 6f 61 64 20 69 73 20 77 72 61 70 70 65 64 20 69 6e ..*.base64.payload.is.wrapped.in
1540 20 61 20 60 64 61 74 61 3a 60 20 55 52 49 20 73 6f 20 74 68 65 20 53 44 4b 20 61 63 63 65 70 74 .a.`data:`.URI.so.the.SDK.accept
1560 73 20 69 74 20 64 69 72 65 63 74 6c 79 2e 0a 20 2a 0a 20 2a 20 52 65 74 75 72 6e 73 20 60 6e 75 s.it.directly...*..*.Returns.`nu
1580 6c 6c 60 20 77 68 65 6e 20 74 68 65 72 65 20 69 73 20 6e 6f 20 61 63 74 75 61 6c 20 61 74 74 61 ll`.when.there.is.no.actual.atta
15a0 63 68 6d 65 6e 74 20 28 6e 6f 20 60 63 6f 6e 74 65 6e 74 60 2c 20 6f 72 20 6f 6e 6c 79 20 74 65 chment.(no.`content`,.or.only.te
15c0 78 74 0a 20 2a 20 70 61 72 74 73 29 2c 20 73 6f 20 74 68 65 20 63 61 6c 6c 65 72 20 66 61 6c 6c xt..*.parts),.so.the.caller.fall
15e0 73 20 62 61 63 6b 20 74 6f 20 74 68 65 20 70 6c 61 69 6e 2d 73 74 72 69 6e 67 20 70 61 74 68 20 s.back.to.the.plain-string.path.
1600 61 6e 64 20 74 65 78 74 2d 6f 6e 6c 79 20 74 75 72 6e 73 0a 20 2a 20 73 65 72 69 61 6c 69 7a 65 and.text-only.turns..*.serialize
1620 20 62 79 74 65 2d 69 64 65 6e 74 69 63 61 6c 6c 79 20 74 6f 20 62 65 66 6f 72 65 2e 0a 20 2a 2f .byte-identically.to.before...*/
1640 0a 66 75 6e 63 74 69 6f 6e 20 75 73 65 72 43 6f 6e 74 65 6e 74 54 6f 50 61 72 74 73 28 0a 09 63 .function.userContentToParts(..c
1660 6f 6e 74 65 6e 74 3a 20 55 73 65 72 43 6f 6e 74 65 6e 74 50 61 72 74 5b 5d 20 7c 20 75 6e 64 65 ontent:.UserContentPart[].|.unde
1680 66 69 6e 65 64 2c 0a 29 3a 20 41 72 72 61 79 3c 54 65 78 74 50 61 72 74 20 7c 20 49 6d 61 67 65 fined,.):.Array<TextPart.|.Image
16a0 50 61 72 74 20 7c 20 46 69 6c 65 50 61 72 74 3e 20 7c 20 6e 75 6c 6c 20 7b 0a 09 69 66 20 28 21 Part.|.FilePart>.|.null.{..if.(!
16c0 63 6f 6e 74 65 6e 74 3f 2e 73 6f 6d 65 28 28 70 29 20 3d 3e 20 70 2e 74 79 70 65 20 3d 3d 3d 20 content?.some((p).=>.p.type.===.
16e0 22 61 74 74 61 63 68 6d 65 6e 74 22 29 29 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0a 09 63 6f 6e "attachment")).return.null;..con
1700 73 74 20 70 61 72 74 73 3a 20 41 72 72 61 79 3c 54 65 78 74 50 61 72 74 20 7c 20 49 6d 61 67 65 st.parts:.Array<TextPart.|.Image
1720 50 61 72 74 20 7c 20 46 69 6c 65 50 61 72 74 3e 20 3d 20 5b 5d 3b 0a 09 66 6f 72 20 28 63 6f 6e Part.|.FilePart>.=.[];..for.(con
1740 73 74 20 70 61 72 74 20 6f 66 20 63 6f 6e 74 65 6e 74 29 20 7b 0a 09 09 69 66 20 28 70 61 72 74 st.part.of.content).{...if.(part
1760 2e 74 79 70 65 20 3d 3d 3d 20 22 74 65 78 74 22 29 20 7b 0a 09 09 09 69 66 20 28 70 61 72 74 2e .type.===."text").{....if.(part.
1780 74 65 78 74 2e 6c 65 6e 67 74 68 20 3e 20 30 29 20 70 61 72 74 73 2e 70 75 73 68 28 7b 20 74 79 text.length.>.0).parts.push({.ty
17a0 70 65 3a 20 22 74 65 78 74 22 2c 20 74 65 78 74 3a 20 70 61 72 74 2e 74 65 78 74 20 7d 29 3b 0a pe:."text",.text:.part.text.});.
17c0 09 09 09 63 6f 6e 74 69 6e 75 65 3b 0a 09 09 7d 0a 09 09 63 6f 6e 73 74 20 64 61 74 61 55 72 69 ...continue;...}...const.dataUri
17e0 20 3d 20 60 64 61 74 61 3a 24 7b 70 61 72 74 2e 6d 65 64 69 61 54 79 70 65 7d 3b 62 61 73 65 36 .=.`data:${part.mediaType};base6
1800 34 2c 24 7b 70 61 72 74 2e 64 61 74 61 7d 60 3b 0a 09 09 69 66 20 28 70 61 72 74 2e 6d 65 64 69 4,${part.data}`;...if.(part.medi
1820 61 54 79 70 65 2e 73 74 61 72 74 73 57 69 74 68 28 22 69 6d 61 67 65 2f 22 29 29 20 7b 0a 09 09 aType.startsWith("image/")).{...
1840 09 70 61 72 74 73 2e 70 75 73 68 28 7b 20 74 79 70 65 3a 20 22 69 6d 61 67 65 22 2c 20 69 6d 61 .parts.push({.type:."image",.ima
1860 67 65 3a 20 64 61 74 61 55 72 69 2c 20 6d 65 64 69 61 54 79 70 65 3a 20 70 61 72 74 2e 6d 65 64 ge:.dataUri,.mediaType:.part.med
1880 69 61 54 79 70 65 20 7d 29 3b 0a 09 09 7d 20 65 6c 73 65 20 7b 0a 09 09 09 70 61 72 74 73 2e 70 iaType.});...}.else.{....parts.p
18a0 75 73 68 28 7b 0a 09 09 09 09 74 79 70 65 3a 20 22 66 69 6c 65 22 2c 0a 09 09 09 09 64 61 74 61 ush({.....type:."file",.....data
18c0 3a 20 64 61 74 61 55 72 69 2c 0a 09 09 09 09 6d 65 64 69 61 54 79 70 65 3a 20 70 61 72 74 2e 6d :.dataUri,.....mediaType:.part.m
18e0 65 64 69 61 54 79 70 65 2c 0a 09 09 09 09 2e 2e 2e 28 70 61 72 74 2e 6e 61 6d 65 20 3f 20 7b 20 ediaType,........(part.name.?.{.
1900 66 69 6c 65 6e 61 6d 65 3a 20 70 61 72 74 2e 6e 61 6d 65 20 7d 20 3a 20 7b 7d 29 2c 0a 09 09 09 filename:.part.name.}.:.{}),....
1920 7d 29 3b 0a 09 09 7d 0a 09 7d 0a 09 72 65 74 75 72 6e 20 70 61 72 74 73 3b 0a 7d 0a 0a 66 75 6e });...}..}..return.parts;.}..fun
1940 63 74 69 6f 6e 20 74 6f 4d 6f 64 65 6c 4d 65 73 73 61 67 65 73 28 6d 65 73 73 61 67 65 73 3a 20 ction.toModelMessages(messages:.
1960 43 68 61 74 4d 65 73 73 61 67 65 5b 5d 2c 20 75 73 65 54 6f 6f 6c 50 72 65 66 69 78 3f 3a 20 62 ChatMessage[],.useToolPrefix?:.b
1980 6f 6f 6c 65 61 6e 29 3a 20 4d 6f 64 65 6c 4d 65 73 73 61 67 65 5b 5d 20 7b 0a 09 63 6f 6e 73 74 oolean):.ModelMessage[].{..const
19a0 20 72 65 73 75 6c 74 3a 20 4d 6f 64 65 6c 4d 65 73 73 61 67 65 5b 5d 20 3d 20 5b 5d 3b 0a 0a 09 .result:.ModelMessage[].=.[];...
19c0 2f 2f 20 41 20 60 5b 55 53 45 52 20 49 4e 54 45 52 52 55 50 54 5d 60 20 62 6c 6f 63 6b 20 69 6e //.A.`[USER.INTERRUPT]`.block.in
19e0 20 61 20 74 6f 6f 6c 2d 72 65 73 75 6c 74 20 69 73 20 22 66 72 65 73 68 22 20 e2 80 94 20 69 2e .a.tool-result.is."fresh".....i.
1a00 65 2e 2c 20 74 68 65 0a 09 2f 2f 20 6d 6f 64 65 6c 20 68 61 73 20 6e 6f 74 20 79 65 74 20 73 65 e.,.the..//.model.has.not.yet.se
1a20 65 6e 20 61 6e 64 20 72 65 73 70 6f 6e 64 65 64 20 74 6f 20 69 74 20 e2 80 94 20 6f 6e 6c 79 20 en.and.responded.to.it.....only.
1a40 77 68 65 6e 20 41 4c 4c 20 6f 66 20 74 68 65 73 65 0a 09 2f 2f 20 68 6f 6c 64 3a 0a 09 2f 2f 20 when.ALL.of.these..//.hold:..//.
1a60 20 20 31 2e 20 54 68 65 20 74 6f 6f 6c 2d 62 61 74 63 68 20 69 73 20 69 6e 20 74 68 65 20 76 65 ..1..The.tool-batch.is.in.the.ve
1a80 72 79 20 6c 61 73 74 20 6d 65 73 73 61 67 65 20 6f 66 20 74 68 65 20 68 69 73 74 6f 72 79 2e 0a ry.last.message.of.the.history..
1aa0 09 2f 2f 20 20 20 32 2e 20 54 68 61 74 20 6d 65 73 73 61 67 65 20 69 73 20 61 6e 20 61 73 73 69 .//...2..That.message.is.an.assi
1ac0 73 74 61 6e 74 20 6d 65 73 73 61 67 65 20 28 61 20 66 6f 6c 6c 6f 77 2d 75 70 20 75 73 65 72 20 stant.message.(a.follow-up.user.
1ae0 6d 65 73 73 61 67 65 0a 09 2f 2f 20 20 20 20 20 20 6d 65 61 6e 73 20 74 68 65 20 75 73 65 72 20 message..//......means.the.user.
1b00 6d 6f 76 65 64 20 6f 6e 3b 20 74 68 65 20 69 6e 74 65 72 72 75 70 74 20 77 61 73 20 61 64 64 72 moved.on;.the.interrupt.was.addr
1b20 65 73 73 65 64 29 2e 0a 09 2f 2f 20 20 20 33 2e 20 54 68 65 20 74 6f 6f 6c 2d 62 61 74 63 68 20 essed)...//...3..The.tool-batch.
1b40 69 73 20 74 68 65 20 4c 41 53 54 20 63 68 75 6e 6b 20 69 6e 20 74 68 61 74 20 6d 65 73 73 61 67 is.the.LAST.chunk.in.that.messag
1b60 65 20 28 61 6e 79 20 6c 61 74 65 72 0a 09 2f 2f 20 20 20 20 20 20 74 65 78 74 2f 74 68 69 6e 6b e.(any.later..//......text/think
1b80 69 6e 67 2f 74 6f 6f 6c 2d 62 61 74 63 68 20 69 6e 20 74 68 65 20 73 61 6d 65 20 6d 65 73 73 61 ing/tool-batch.in.the.same.messa
1ba0 67 65 20 72 65 70 72 65 73 65 6e 74 73 20 74 68 65 0a 09 2f 2f 20 20 20 20 20 20 6d 6f 64 65 6c ge.represents.the..//......model
1bc0 27 73 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 20 74 6f 6f 6c 20 72 65 73 75 6c 74 73 29 's.response.to.the.tool.results)
1be0 2e 0a 09 2f 2f 0a 09 2f 2f 20 41 6c 6c 20 6f 74 68 65 72 20 69 6e 74 65 72 72 75 70 74 73 20 67 ...//..//.All.other.interrupts.g
1c00 65 74 20 73 74 72 69 70 70 65 64 20 66 72 6f 6d 20 68 69 73 74 6f 72 79 20 62 65 63 61 75 73 65 et.stripped.from.history.because
1c20 20 74 68 65 20 69 6d 70 65 72 61 74 69 76 65 0a 09 2f 2f 20 22 59 6f 75 20 4d 55 53 54 20 61 64 .the.imperative..//."You.MUST.ad
1c40 64 72 65 73 73 20 74 68 65 73 65 22 20 6f 74 68 65 72 77 69 73 65 20 67 65 74 73 20 72 65 2d 65 dress.these".otherwise.gets.re-e
1c60 76 61 6c 75 61 74 65 64 20 61 73 20 61 20 66 72 65 73 68 0a 09 2f 2f 20 69 6e 73 74 72 75 63 74 valuated.as.a.fresh..//.instruct
1c80 69 6f 6e 20 6f 6e 20 65 76 65 72 79 20 73 75 62 73 65 71 75 65 6e 74 20 4c 4c 4d 20 73 74 65 70 ion.on.every.subsequent.LLM.step
1ca0 2e 0a 09 6c 65 74 20 66 72 65 73 68 65 73 74 54 6f 6f 6c 42 61 74 63 68 4d 73 67 49 64 78 20 3d ...let.freshestToolBatchMsgIdx.=
1cc0 20 2d 31 3b 0a 09 6c 65 74 20 66 72 65 73 68 65 73 74 54 6f 6f 6c 42 61 74 63 68 43 68 75 6e 6b .-1;..let.freshestToolBatchChunk
1ce0 49 64 78 20 3d 20 2d 31 3b 0a 09 63 6f 6e 73 74 20 6c 61 73 74 4d 73 67 49 64 78 20 3d 20 6d 65 Idx.=.-1;..const.lastMsgIdx.=.me
1d00 73 73 61 67 65 73 2e 6c 65 6e 67 74 68 20 2d 20 31 3b 0a 09 63 6f 6e 73 74 20 6c 61 73 74 4d 73 ssages.length.-.1;..const.lastMs
1d20 67 20 3d 20 6d 65 73 73 61 67 65 73 5b 6c 61 73 74 4d 73 67 49 64 78 5d 3b 0a 09 69 66 20 28 6c g.=.messages[lastMsgIdx];..if.(l
1d40 61 73 74 4d 73 67 20 26 26 20 6c 61 73 74 4d 73 67 2e 72 6f 6c 65 20 3d 3d 3d 20 22 61 73 73 69 astMsg.&&.lastMsg.role.===."assi
1d60 73 74 61 6e 74 22 20 26 26 20 6c 61 73 74 4d 73 67 2e 63 68 75 6e 6b 73 2e 6c 65 6e 67 74 68 20 stant".&&.lastMsg.chunks.length.
1d80 3e 20 30 29 20 7b 0a 09 09 63 6f 6e 73 74 20 6c 61 73 74 43 68 75 6e 6b 49 64 78 20 3d 20 6c 61 >.0).{...const.lastChunkIdx.=.la
1da0 73 74 4d 73 67 2e 63 68 75 6e 6b 73 2e 6c 65 6e 67 74 68 20 2d 20 31 3b 0a 09 09 63 6f 6e 73 74 stMsg.chunks.length.-.1;...const
1dc0 20 6c 61 73 74 43 68 75 6e 6b 20 3d 20 6c 61 73 74 4d 73 67 2e 63 68 75 6e 6b 73 5b 6c 61 73 74 .lastChunk.=.lastMsg.chunks[last
1de0 43 68 75 6e 6b 49 64 78 5d 3b 0a 09 09 69 66 20 28 6c 61 73 74 43 68 75 6e 6b 20 26 26 20 6c 61 ChunkIdx];...if.(lastChunk.&&.la
1e00 73 74 43 68 75 6e 6b 2e 74 79 70 65 20 3d 3d 3d 20 22 74 6f 6f 6c 2d 62 61 74 63 68 22 29 20 7b stChunk.type.===."tool-batch").{
1e20 0a 09 09 09 66 72 65 73 68 65 73 74 54 6f 6f 6c 42 61 74 63 68 4d 73 67 49 64 78 20 3d 20 6c 61 ....freshestToolBatchMsgIdx.=.la
1e40 73 74 4d 73 67 49 64 78 3b 0a 09 09 09 66 72 65 73 68 65 73 74 54 6f 6f 6c 42 61 74 63 68 43 68 stMsgIdx;....freshestToolBatchCh
1e60 75 6e 6b 49 64 78 20 3d 20 6c 61 73 74 43 68 75 6e 6b 49 64 78 3b 0a 09 09 7d 0a 09 7d 0a 0a 09 unkIdx.=.lastChunkIdx;...}..}...
1e80 66 6f 72 20 28 6c 65 74 20 6d 73 67 49 64 78 20 3d 20 30 3b 20 6d 73 67 49 64 78 20 3c 20 6d 65 for.(let.msgIdx.=.0;.msgIdx.<.me
1ea0 73 73 61 67 65 73 2e 6c 65 6e 67 74 68 3b 20 6d 73 67 49 64 78 2b 2b 29 20 7b 0a 09 09 63 6f 6e ssages.length;.msgIdx++).{...con
1ec0 73 74 20 6d 73 67 20 3d 20 6d 65 73 73 61 67 65 73 5b 6d 73 67 49 64 78 5d 3b 0a 09 09 69 66 20 st.msg.=.messages[msgIdx];...if.
1ee0 28 21 6d 73 67 20 7c 7c 20 6d 73 67 2e 72 6f 6c 65 20 3d 3d 3d 20 22 73 79 73 74 65 6d 22 29 20 (!msg.||.msg.role.===."system").
1f00 63 6f 6e 74 69 6e 75 65 3b 0a 0a 09 09 69 66 20 28 6d 73 67 2e 72 6f 6c 65 20 3d 3d 3d 20 22 75 continue;....if.(msg.role.===."u
1f20 73 65 72 22 29 20 7b 0a 09 09 09 2f 2f 20 41 20 75 73 65 72 20 74 75 72 6e 20 77 69 74 68 20 65 ser").{....//.A.user.turn.with.e
1f40 70 68 65 6d 65 72 61 6c 20 6d 75 6c 74 69 6d 6f 64 61 6c 20 60 63 6f 6e 74 65 6e 74 60 20 28 69 phemeral.multimodal.`content`.(i
1f60 6d 61 67 65 2f 70 64 66 0a 09 09 09 2f 2f 20 61 74 74 61 63 68 6d 65 6e 74 73 20 69 6e 74 65 72 mage/pdf....//.attachments.inter
1f80 6c 65 61 76 65 64 20 77 69 74 68 20 74 65 78 74 29 20 69 73 20 65 6d 69 74 74 65 64 20 61 73 20 leaved.with.text).is.emitted.as.
1fa0 61 6e 20 4f 52 44 45 52 45 44 20 70 61 72 74 73 0a 09 09 09 2f 2f 20 61 72 72 61 79 20 73 6f 20 an.ORDERED.parts....//.array.so.
1fc0 74 68 65 20 6d 6f 64 65 6c 20 73 65 65 73 20 74 65 78 74 20 61 6e 64 20 61 74 74 61 63 68 6d 65 the.model.sees.text.and.attachme
1fe0 6e 74 73 20 69 6e 20 74 68 65 20 65 78 61 63 74 20 73 65 71 75 65 6e 63 65 0a 09 09 09 2f 2f 20 nts.in.the.exact.sequence....//.
2000 74 68 65 20 75 73 65 72 20 63 6f 6d 70 6f 73 65 64 2e 20 54 68 69 73 20 69 73 20 6f 6e 6c 79 20 the.user.composed..This.is.only.
2020 65 76 65 72 20 73 65 74 20 6f 6e 20 74 68 65 20 69 6e 2d 66 6c 69 67 68 74 20 74 75 72 6e 20 e2 ever.set.on.the.in-flight.turn..
2040 80 94 0a 09 09 09 2f 2f 20 68 69 73 74 6f 72 79 2d 72 65 62 75 69 6c 74 20 6d 65 73 73 61 67 65 ......//.history-rebuilt.message
2060 73 20 68 61 76 65 20 6e 6f 20 60 63 6f 6e 74 65 6e 74 60 20 61 6e 64 20 66 61 6c 6c 20 74 68 72 s.have.no.`content`.and.fall.thr
2080 6f 75 67 68 20 74 6f 20 74 68 65 0a 09 09 09 2f 2f 20 70 6c 61 69 6e 2d 74 65 78 74 20 70 61 74 ough.to.the....//.plain-text.pat
20a0 68 20 62 65 6c 6f 77 2e 0a 09 09 09 63 6f 6e 73 74 20 6d 75 6c 74 69 6d 6f 64 61 6c 20 3d 20 75 h.below.....const.multimodal.=.u
20c0 73 65 72 43 6f 6e 74 65 6e 74 54 6f 50 61 72 74 73 28 6d 73 67 2e 63 6f 6e 74 65 6e 74 29 3b 0a serContentToParts(msg.content);.
20e0 09 09 09 69 66 20 28 6d 75 6c 74 69 6d 6f 64 61 6c 29 20 7b 0a 09 09 09 09 72 65 73 75 6c 74 2e ...if.(multimodal).{.....result.
2100 70 75 73 68 28 7b 20 72 6f 6c 65 3a 20 22 75 73 65 72 22 2c 20 63 6f 6e 74 65 6e 74 3a 20 6d 75 push({.role:."user",.content:.mu
2120 6c 74 69 6d 6f 64 61 6c 20 7d 29 3b 0a 09 09 09 09 63 6f 6e 74 69 6e 75 65 3b 0a 09 09 09 7d 0a ltimodal.});.....continue;....}.
2140 09 09 09 2f 2f 20 55 73 65 72 20 6d 65 73 73 61 67 65 73 20 69 6e 20 6f 75 72 20 6d 6f 64 65 6c ...//.User.messages.in.our.model
2160 20 63 61 6e 20 69 6e 20 74 68 65 6f 72 79 20 63 6f 6e 74 61 69 6e 20 6e 6f 6e 2d 74 65 78 74 20 .can.in.theory.contain.non-text.
2180 63 68 75 6e 6b 73 2c 0a 09 09 09 2f 2f 20 62 75 74 20 69 6e 20 70 72 61 63 74 69 63 65 20 74 68 chunks,....//.but.in.practice.th
21a0 65 20 55 49 20 6f 6e 6c 79 20 70 72 6f 64 75 63 65 73 20 74 65 78 74 2e 20 43 6f 6e 63 61 74 65 e.UI.only.produces.text..Concate
21c0 6e 61 74 65 20 61 6e 79 20 74 65 78 74 0a 09 09 09 2f 2f 20 63 68 75 6e 6b 73 3b 20 69 67 6e 6f nate.any.text....//.chunks;.igno
21e0 72 65 20 61 6e 79 74 68 69 6e 67 20 65 6c 73 65 2e 0a 09 09 09 63 6f 6e 73 74 20 74 65 78 74 20 re.anything.else.....const.text.
2200 3d 20 6d 73 67 2e 63 68 75 6e 6b 73 0a 09 09 09 09 2e 66 69 6c 74 65 72 28 28 63 29 3a 20 63 20 =.msg.chunks......filter((c):.c.
2220 69 73 20 45 78 74 72 61 63 74 3c 43 68 75 6e 6b 2c 20 7b 20 74 79 70 65 3a 20 22 74 65 78 74 22 is.Extract<Chunk,.{.type:."text"
2240 20 7d 3e 20 3d 3e 20 63 2e 74 79 70 65 20 3d 3d 3d 20 22 74 65 78 74 22 29 0a 09 09 09 09 2e 6d .}>.=>.c.type.===."text")......m
2260 61 70 28 28 63 29 20 3d 3e 20 63 2e 74 65 78 74 29 0a 09 09 09 09 2e 6a 6f 69 6e 28 22 22 29 3b ap((c).=>.c.text)......join("");
2280 0a 09 09 09 72 65 73 75 6c 74 2e 70 75 73 68 28 7b 20 72 6f 6c 65 3a 20 22 75 73 65 72 22 2c 20 ....result.push({.role:."user",.
22a0 63 6f 6e 74 65 6e 74 3a 20 74 65 78 74 20 7d 29 3b 0a 09 09 09 63 6f 6e 74 69 6e 75 65 3b 0a 09 content:.text.});....continue;..
22c0 09 7d 0a 0a 09 09 2f 2f 20 72 6f 6c 65 20 3d 3d 3d 20 22 61 73 73 69 73 74 61 6e 74 22 0a 09 09 .}....//.role.===."assistant"...
22e0 2f 2f 0a 09 09 2f 2f 20 53 65 67 6d 65 6e 74 20 74 68 65 20 74 75 72 6e 27 73 20 63 68 75 6e 6b //...//.Segment.the.turn's.chunk
2300 73 20 69 6e 74 6f 20 70 65 72 2d 4c 4c 4d 2d 73 74 65 70 20 60 5b 61 73 73 69 73 74 61 6e 74 2c s.into.per-LLM-step.`[assistant,
2320 20 74 6f 6f 6c 5d 60 0a 09 09 2f 2f 20 6d 65 73 73 61 67 65 20 70 61 69 72 73 2c 20 73 70 6c 69 .tool]`...//.message.pairs,.spli
2340 74 74 69 6e 67 20 61 74 20 65 61 63 68 20 60 74 6f 6f 6c 2d 62 61 74 63 68 60 20 62 6f 75 6e 64 tting.at.each.`tool-batch`.bound
2360 61 72 79 2e 20 45 76 65 72 79 0a 09 09 2f 2f 20 72 6f 75 6e 64 2d 74 72 69 70 20 65 6d 69 74 73 ary..Every...//.round-trip.emits
2380 20 74 65 78 74 2f 74 68 69 6e 6b 69 6e 67 20 74 68 65 6e 20 28 6f 70 74 69 6f 6e 61 6c 6c 79 29 .text/thinking.then.(optionally)
23a0 20 6f 6e 65 20 74 6f 6f 6c 2d 62 61 74 63 68 2c 20 73 6f 0a 09 09 2f 2f 20 61 20 74 6f 6f 6c 2d .one.tool-batch,.so...//.a.tool-
23c0 62 61 74 63 68 20 69 73 20 65 78 61 63 74 6c 79 20 61 20 73 74 65 70 20 62 6f 75 6e 64 61 72 79 batch.is.exactly.a.step.boundary
23e0 2e 0a 09 09 2f 2f 0a 09 09 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65 20 63 61 63 68 65 20 66 69 ....//...//.This.is.the.cache.fi
2400 78 3a 20 65 61 63 68 20 70 72 69 6f 72 20 73 74 65 70 27 73 20 6d 65 73 73 61 67 65 73 20 61 72 x:.each.prior.step's.messages.ar
2420 65 20 62 75 69 6c 74 20 66 72 6f 6d 0a 09 09 2f 2f 20 69 6d 6d 75 74 61 62 6c 65 20 63 68 75 6e e.built.from...//.immutable.chun
2440 6b 73 20 61 74 20 66 69 78 65 64 20 70 6f 73 69 74 69 6f 6e 73 2c 20 73 6f 20 74 68 65 79 20 73 ks.at.fixed.positions,.so.they.s
2460 65 72 69 61 6c 69 7a 65 0a 09 09 2f 2f 20 62 79 74 65 2d 69 64 65 6e 74 69 63 61 6c 6c 79 20 6f erialize...//.byte-identically.o
2480 6e 20 65 76 65 72 79 20 6c 61 74 65 72 20 72 65 71 75 65 73 74 20 e2 86 92 20 73 74 61 62 6c 65 n.every.later.request.....stable
24a0 20 41 6e 74 68 72 6f 70 69 63 20 70 72 6f 6d 70 74 0a 09 09 2f 2f 20 70 72 65 66 69 78 2e 20 43 .Anthropic.prompt...//.prefix..C
24c0 6f 6c 6c 61 70 73 69 6e 67 20 61 6c 6c 20 73 74 65 70 73 20 69 6e 74 6f 20 4f 4e 45 20 61 73 73 ollapsing.all.steps.into.ONE.ass
24e0 69 73 74 61 6e 74 20 2b 20 4f 4e 45 20 74 6f 6f 6c 20 6d 65 73 73 61 67 65 0a 09 09 2f 2f 20 28 istant.+.ONE.tool.message...//.(
2500 61 6e 64 20 74 68 65 6e 20 6c 65 74 74 69 6e 67 20 74 68 65 20 73 74 72 75 63 74 75 72 61 6c 2d and.then.letting.the.structural-
2520 6e 6f 72 6d 61 6c 69 73 61 74 69 6f 6e 20 70 61 73 73 20 72 65 2d 62 75 63 6b 65 74 20 74 68 65 normalisation.pass.re-bucket.the
2540 0a 09 09 2f 2f 20 74 6f 6f 6c 5f 75 73 65 2f 74 6f 6f 6c 5f 72 65 73 75 6c 74 20 62 6c 6f 63 6b ...//.tool_use/tool_result.block
2560 73 29 20 72 65 73 68 75 66 66 6c 65 64 20 65 61 72 6c 69 65 72 20 73 74 65 70 73 27 20 70 6f 73 s).reshuffled.earlier.steps'.pos
2580 69 74 69 6f 6e 73 20 6f 6e 0a 09 09 2f 2f 20 65 76 65 72 79 20 73 74 65 70 20 61 6e 64 20 73 68 itions.on...//.every.step.and.sh
25a0 61 74 74 65 72 65 64 20 74 68 65 20 63 61 63 68 65 20 28 73 65 65 20 63 61 63 68 65 2d 6d 69 73 attered.the.cache.(see.cache-mis
25c0 73 2d 72 65 70 6f 72 74 2e 6d 64 29 2e 0a 09 09 74 79 70 65 20 41 73 73 69 73 74 61 6e 74 50 61 s-report.md)....type.AssistantPa
25e0 72 74 20 3d 0a 09 09 09 7c 20 7b 20 74 79 70 65 3a 20 22 74 65 78 74 22 3b 20 74 65 78 74 3a 20 rt.=....|.{.type:."text";.text:.
2600 73 74 72 69 6e 67 20 7d 0a 09 09 09 7c 20 7b 20 74 79 70 65 3a 20 22 72 65 61 73 6f 6e 69 6e 67 string.}....|.{.type:."reasoning
2620 22 3b 20 74 65 78 74 3a 20 73 74 72 69 6e 67 3b 20 70 72 6f 76 69 64 65 72 4f 70 74 69 6f 6e 73 ";.text:.string;.providerOptions
2640 3f 3a 20 50 72 6f 76 69 64 65 72 4f 70 74 69 6f 6e 73 20 7d 0a 09 09 09 7c 20 7b 20 74 79 70 65 ?:.ProviderOptions.}....|.{.type
2660 3a 20 22 74 6f 6f 6c 2d 63 61 6c 6c 22 3b 20 74 6f 6f 6c 43 61 6c 6c 49 64 3a 20 73 74 72 69 6e :."tool-call";.toolCallId:.strin
2680 67 3b 20 74 6f 6f 6c 4e 61 6d 65 3a 20 73 74 72 69 6e 67 3b 20 69 6e 70 75 74 3a 20 75 6e 6b 6e g;.toolName:.string;.input:.unkn
26a0 6f 77 6e 20 7d 3b 0a 09 09 74 79 70 65 20 53 74 65 70 52 65 73 75 6c 74 20 3d 20 7b 0a 09 09 09 own.};...type.StepResult.=.{....
26c0 74 6f 6f 6c 43 61 6c 6c 49 64 3a 20 73 74 72 69 6e 67 3b 0a 09 09 09 74 6f 6f 6c 4e 61 6d 65 3a toolCallId:.string;....toolName:
26e0 20 73 74 72 69 6e 67 3b 0a 09 09 09 72 65 73 75 6c 74 3a 20 73 74 72 69 6e 67 3b 0a 09 09 09 69 .string;....result:.string;....i
2700 73 45 72 72 6f 72 3f 3a 20 62 6f 6f 6c 65 61 6e 3b 0a 09 09 7d 3b 0a 0a 09 09 6c 65 74 20 70 61 sError?:.boolean;...};....let.pa
2720 72 74 73 3a 20 41 73 73 69 73 74 61 6e 74 50 61 72 74 5b 5d 20 3d 20 5b 5d 3b 0a 09 09 6c 65 74 rts:.AssistantPart[].=.[];...let
2740 20 73 74 65 70 52 65 73 75 6c 74 73 3a 20 53 74 65 70 52 65 73 75 6c 74 5b 5d 20 3d 20 5b 5d 3b .stepResults:.StepResult[].=.[];
2760 0a 0a 09 09 63 6f 6e 73 74 20 66 6c 75 73 68 53 74 65 70 20 3d 20 28 29 3a 20 76 6f 69 64 20 3d ....const.flushStep.=.():.void.=
2780 3e 20 7b 0a 09 09 09 69 66 20 28 70 61 72 74 73 2e 6c 65 6e 67 74 68 20 3e 20 30 29 20 7b 0a 09 >.{....if.(parts.length.>.0).{..
27a0 09 09 09 72 65 73 75 6c 74 2e 70 75 73 68 28 7b 20 72 6f 6c 65 3a 20 22 61 73 73 69 73 74 61 6e ...result.push({.role:."assistan
27c0 74 22 2c 20 63 6f 6e 74 65 6e 74 3a 20 70 61 72 74 73 20 7d 29 3b 0a 09 09 09 7d 0a 09 09 09 2f t",.content:.parts.});....}..../
27e0 2f 20 4f 6e 65 20 67 72 6f 75 70 65 64 20 60 72 6f 6c 65 3a 20 22 74 6f 6f 6c 22 60 20 6d 65 73 /.One.grouped.`role:."tool"`.mes
2800 73 61 67 65 20 70 65 72 20 73 74 65 70 20 68 6f 6c 64 73 20 74 68 61 74 20 73 74 65 70 27 73 0a sage.per.step.holds.that.step's.
2820 09 09 09 2f 2f 20 72 65 73 75 6c 74 73 20 e2 80 94 20 60 61 70 70 6c 79 41 6e 74 68 72 6f 70 69 ...//.results.....`applyAnthropi
2840 63 43 61 63 68 69 6e 67 60 20 74 68 65 6e 20 6d 61 72 6b 73 20 74 68 65 20 6c 61 73 74 20 74 77 cCaching`.then.marks.the.last.tw
2860 6f 0a 09 09 09 2f 2f 20 6e 6f 6e 2d 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 73 20 61 73 20 60 o....//.non-system.messages.as.`
2880 5b 61 73 73 69 73 74 61 6e 74 28 73 74 65 70 29 2c 20 74 6f 6f 6c 28 73 74 65 70 29 5d 60 2c 20 [assistant(step),.tool(step)]`,.
28a0 74 68 65 0a 09 09 09 2f 2f 20 63 6f 72 72 65 63 74 20 72 6f 6c 6c 69 6e 67 2d 62 72 65 61 6b 70 the....//.correct.rolling-breakp
28c0 6f 69 6e 74 20 70 6c 61 63 65 6d 65 6e 74 2e 0a 09 09 09 69 66 20 28 73 74 65 70 52 65 73 75 6c oint.placement.....if.(stepResul
28e0 74 73 2e 6c 65 6e 67 74 68 20 3e 20 30 29 20 7b 0a 09 09 09 09 72 65 73 75 6c 74 2e 70 75 73 68 ts.length.>.0).{.....result.push
2900 28 7b 0a 09 09 09 09 09 72 6f 6c 65 3a 20 22 74 6f 6f 6c 22 2c 0a 09 09 09 09 09 63 6f 6e 74 65 ({......role:."tool",......conte
2920 6e 74 3a 20 73 74 65 70 52 65 73 75 6c 74 73 2e 6d 61 70 28 28 74 72 29 20 3d 3e 20 28 7b 0a 09 nt:.stepResults.map((tr).=>.({..
2940 09 09 09 09 09 74 79 70 65 3a 20 22 74 6f 6f 6c 2d 72 65 73 75 6c 74 22 20 61 73 20 63 6f 6e 73 .....type:."tool-result".as.cons
2960 74 2c 0a 09 09 09 09 09 09 74 6f 6f 6c 43 61 6c 6c 49 64 3a 20 74 72 2e 74 6f 6f 6c 43 61 6c 6c t,.......toolCallId:.tr.toolCall
2980 49 64 2c 0a 09 09 09 09 09 09 74 6f 6f 6c 4e 61 6d 65 3a 20 74 72 2e 74 6f 6f 6c 4e 61 6d 65 2c Id,.......toolName:.tr.toolName,
29a0 0a 09 09 09 09 09 09 2f 2f 20 76 36 3a 20 60 6f 75 74 70 75 74 60 20 28 54 6f 6f 6c 52 65 73 75 .......//.v6:.`output`.(ToolResu
29c0 6c 74 4f 75 74 70 75 74 29 20 72 65 70 6c 61 63 65 73 20 76 34 27 73 20 72 61 77 20 60 72 65 73 ltOutput).replaces.v4's.raw.`res
29e0 75 6c 74 60 0a 09 09 09 09 09 09 6f 75 74 70 75 74 3a 20 7b 20 74 79 70 65 3a 20 22 74 65 78 74 ult`.......output:.{.type:."text
2a00 22 20 61 73 20 63 6f 6e 73 74 2c 20 76 61 6c 75 65 3a 20 74 72 2e 72 65 73 75 6c 74 20 7d 2c 0a ".as.const,.value:.tr.result.},.
2a20 09 09 09 09 09 09 2e 2e 2e 28 74 72 2e 69 73 45 72 72 6f 72 20 3f 20 7b 20 69 73 45 72 72 6f 72 .........(tr.isError.?.{.isError
2a40 3a 20 74 72 75 65 20 7d 20 3a 20 7b 7d 29 2c 0a 09 09 09 09 09 7d 29 29 2c 0a 09 09 09 09 7d 29 :.true.}.:.{}),......})),.....})
2a60 3b 0a 09 09 09 7d 0a 09 09 09 70 61 72 74 73 20 3d 20 5b 5d 3b 0a 09 09 09 73 74 65 70 52 65 73 ;....}....parts.=.[];....stepRes
2a80 75 6c 74 73 20 3d 20 5b 5d 3b 0a 09 09 7d 3b 0a 0a 09 09 66 6f 72 20 28 6c 65 74 20 63 68 75 6e ults.=.[];...};....for.(let.chun
2aa0 6b 49 64 78 20 3d 20 30 3b 20 63 68 75 6e 6b 49 64 78 20 3c 20 6d 73 67 2e 63 68 75 6e 6b 73 2e kIdx.=.0;.chunkIdx.<.msg.chunks.
2ac0 6c 65 6e 67 74 68 3b 20 63 68 75 6e 6b 49 64 78 2b 2b 29 20 7b 0a 09 09 09 63 6f 6e 73 74 20 63 length;.chunkIdx++).{....const.c
2ae0 68 75 6e 6b 20 3d 20 6d 73 67 2e 63 68 75 6e 6b 73 5b 63 68 75 6e 6b 49 64 78 5d 3b 0a 09 09 09 hunk.=.msg.chunks[chunkIdx];....
2b00 69 66 20 28 21 63 68 75 6e 6b 29 20 63 6f 6e 74 69 6e 75 65 3b 0a 09 09 09 73 77 69 74 63 68 20 if.(!chunk).continue;....switch.
2b20 28 63 68 75 6e 6b 2e 74 79 70 65 29 20 7b 0a 09 09 09 09 63 61 73 65 20 22 74 65 78 74 22 3a 0a (chunk.type).{.....case."text":.
2b40 09 09 09 09 09 70 61 72 74 73 2e 70 75 73 68 28 7b 20 74 79 70 65 3a 20 22 74 65 78 74 22 2c 20 .....parts.push({.type:."text",.
2b60 74 65 78 74 3a 20 63 68 75 6e 6b 2e 74 65 78 74 20 7d 29 3b 0a 09 09 09 09 09 62 72 65 61 6b 3b text:.chunk.text.});......break;
2b80 0a 09 09 09 09 63 61 73 65 20 22 74 68 69 6e 6b 69 6e 67 22 3a 0a 09 09 09 09 09 2f 2f 20 76 36 .....case."thinking":......//.v6
2ba0 3a 20 63 61 72 72 79 20 70 72 6f 76 69 64 65 72 4f 70 74 69 6f 6e 73 20 28 41 6e 74 68 72 6f 70 :.carry.providerOptions.(Anthrop
2bc0 69 63 20 73 69 67 6e 61 74 75 72 65 20 62 6c 6f 62 29 20 69 66 20 70 72 65 73 65 6e 74 2e 0a 09 ic.signature.blob).if.present...
2be0 09 09 09 09 2f 2f 20 4e 6f 6e 2d 41 6e 74 68 72 6f 70 69 63 20 72 65 61 73 6f 6e 69 6e 67 20 68 ....//.Non-Anthropic.reasoning.h
2c00 61 73 20 6e 6f 20 6d 65 74 61 64 61 74 61 20 e2 86 92 20 73 65 6e 64 20 77 69 74 68 6f 75 74 20 as.no.metadata.....send.without.
2c20 70 72 6f 76 69 64 65 72 4f 70 74 69 6f 6e 73 0a 09 09 09 09 09 2f 2f 20 28 41 6e 74 68 72 6f 70 providerOptions......//.(Anthrop
2c40 69 63 20 61 63 63 65 70 74 73 20 69 74 3b 20 74 68 65 20 72 6f 75 6e 64 2d 74 72 69 70 20 6a 75 ic.accepts.it;.the.round-trip.ju
2c60 73 74 20 77 6f 6e 27 74 20 63 61 72 72 79 20 61 20 73 69 67 6e 61 74 75 72 65 29 2e 0a 09 09 09 st.won't.carry.a.signature).....
2c80 09 09 70 61 72 74 73 2e 70 75 73 68 28 7b 0a 09 09 09 09 09 09 74 79 70 65 3a 20 22 72 65 61 73 ..parts.push({.......type:."reas
2ca0 6f 6e 69 6e 67 22 2c 0a 09 09 09 09 09 09 74 65 78 74 3a 20 63 68 75 6e 6b 2e 74 65 78 74 2c 0a oning",.......text:.chunk.text,.
2cc0 09 09 09 09 09 09 2e 2e 2e 28 63 68 75 6e 6b 2e 6d 65 74 61 64 61 74 61 20 21 3d 3d 20 75 6e 64 .........(chunk.metadata.!==.und
2ce0 65 66 69 6e 65 64 0a 09 09 09 09 09 09 09 3f 20 7b 20 70 72 6f 76 69 64 65 72 4f 70 74 69 6f 6e efined........?.{.providerOption
2d00 73 3a 20 63 68 75 6e 6b 2e 6d 65 74 61 64 61 74 61 20 61 73 20 50 72 6f 76 69 64 65 72 4f 70 74 s:.chunk.metadata.as.ProviderOpt
2d20 69 6f 6e 73 20 7d 0a 09 09 09 09 09 09 09 3a 20 7b 7d 29 2c 0a 09 09 09 09 09 7d 29 3b 0a 09 09 ions.}........:.{}),......});...
2d40 09 09 09 62 72 65 61 6b 3b 0a 09 09 09 09 63 61 73 65 20 22 74 6f 6f 6c 2d 62 61 74 63 68 22 3a ...break;.....case."tool-batch":
2d60 20 7b 0a 09 09 09 09 09 2f 2f 20 53 74 72 69 70 20 73 74 61 6c 65 20 60 5b 55 53 45 52 20 49 4e .{......//.Strip.stale.`[USER.IN
2d80 54 45 52 52 55 50 54 5d 60 20 62 6c 6f 63 6b 73 20 66 72 6f 6d 20 65 76 65 72 79 0a 09 09 09 09 TERRUPT]`.blocks.from.every.....
2da0 09 2f 2f 20 74 6f 6f 6c 2d 62 61 74 63 68 20 65 78 63 65 70 74 20 74 68 65 20 66 72 65 73 68 65 .//.tool-batch.except.the.freshe
2dc0 73 74 20 6f 6e 65 20 28 6d 6f 73 74 20 72 65 63 65 6e 74 0a 09 09 09 09 09 2f 2f 20 74 6f 6f 6c st.one.(most.recent......//.tool
2de0 2d 62 61 74 63 68 20 69 6e 20 74 68 65 20 6d 6f 73 74 20 72 65 63 65 6e 74 20 61 73 73 69 73 74 -batch.in.the.most.recent.assist
2e00 61 6e 74 20 6d 65 73 73 61 67 65 29 2e 0a 09 09 09 09 09 2f 2f 20 57 69 74 68 6f 75 74 20 74 68 ant.message).......//.Without.th
2e20 69 73 2c 20 74 68 65 20 69 6d 70 65 72 61 74 69 76 65 20 22 59 6f 75 20 4d 55 53 54 20 61 64 64 is,.the.imperative."You.MUST.add
2e40 72 65 73 73 20 74 68 65 73 65 22 0a 09 09 09 09 09 2f 2f 20 74 65 78 74 20 70 65 72 73 69 73 74 ress.these"......//.text.persist
2e60 73 20 69 6e 20 68 69 73 74 6f 72 79 20 61 6e 64 20 74 68 65 20 6d 6f 64 65 6c 20 72 65 2d 61 63 s.in.history.and.the.model.re-ac
2e80 6b 6e 6f 77 6c 65 64 67 65 73 0a 09 09 09 09 09 2f 2f 20 74 68 65 20 73 61 6d 65 20 69 6e 74 65 knowledges......//.the.same.inte
2ea0 72 72 75 70 74 20 76 65 72 62 61 74 69 6d 20 6f 6e 20 65 76 65 72 79 20 73 75 62 73 65 71 75 65 rrupt.verbatim.on.every.subseque
2ec0 6e 74 20 73 74 65 70 2e 0a 09 09 09 09 09 63 6f 6e 73 74 20 69 73 46 72 65 73 68 65 73 74 54 6f nt.step.......const.isFreshestTo
2ee0 6f 6c 42 61 74 63 68 20 3d 0a 09 09 09 09 09 09 6d 73 67 49 64 78 20 3d 3d 3d 20 66 72 65 73 68 olBatch.=.......msgIdx.===.fresh
2f00 65 73 74 54 6f 6f 6c 42 61 74 63 68 4d 73 67 49 64 78 20 26 26 20 63 68 75 6e 6b 49 64 78 20 3d estToolBatchMsgIdx.&&.chunkIdx.=
2f20 3d 3d 20 66 72 65 73 68 65 73 74 54 6f 6f 6c 42 61 74 63 68 43 68 75 6e 6b 49 64 78 3b 0a 09 09 ==.freshestToolBatchChunkIdx;...
2f40 09 09 09 66 6f 72 20 28 63 6f 6e 73 74 20 65 6e 74 72 79 20 6f 66 20 63 68 75 6e 6b 2e 63 61 6c ...for.(const.entry.of.chunk.cal
2f60 6c 73 29 20 7b 0a 09 09 09 09 09 09 63 6f 6e 73 74 20 74 6f 6f 6c 4e 61 6d 65 20 3d 20 75 73 65 ls).{.......const.toolName.=.use
2f80 54 6f 6f 6c 50 72 65 66 69 78 20 3f 20 70 72 65 66 69 78 54 6f 6f 6c 4e 61 6d 65 28 65 6e 74 72 ToolPrefix.?.prefixToolName(entr
2fa0 79 2e 6e 61 6d 65 29 20 3a 20 65 6e 74 72 79 2e 6e 61 6d 65 3b 0a 09 09 09 09 09 09 2f 2f 20 76 y.name).:.entry.name;.......//.v
2fc0 36 3a 20 60 69 6e 70 75 74 60 20 72 65 70 6c 61 63 65 73 20 76 34 27 73 20 60 61 72 67 73 60 0a 6:.`input`.replaces.v4's.`args`.
2fe0 09 09 09 09 09 09 70 61 72 74 73 2e 70 75 73 68 28 7b 0a 09 09 09 09 09 09 09 74 79 70 65 3a 20 ......parts.push({........type:.
3000 22 74 6f 6f 6c 2d 63 61 6c 6c 22 2c 0a 09 09 09 09 09 09 09 74 6f 6f 6c 43 61 6c 6c 49 64 3a 20 "tool-call",........toolCallId:.
3020 65 6e 74 72 79 2e 69 64 2c 0a 09 09 09 09 09 09 09 74 6f 6f 6c 4e 61 6d 65 2c 0a 09 09 09 09 09 entry.id,........toolName,......
3040 09 09 69 6e 70 75 74 3a 20 65 6e 74 72 79 2e 61 72 67 75 6d 65 6e 74 73 2c 0a 09 09 09 09 09 09 ..input:.entry.arguments,.......
3060 7d 29 3b 0a 09 09 09 09 09 09 69 66 20 28 65 6e 74 72 79 2e 72 65 73 75 6c 74 20 21 3d 3d 20 75 });.......if.(entry.result.!==.u
3080 6e 64 65 66 69 6e 65 64 29 20 7b 0a 09 09 09 09 09 09 09 63 6f 6e 73 74 20 72 65 73 75 6c 74 54 ndefined).{........const.resultT
30a0 65 78 74 20 3d 20 69 73 46 72 65 73 68 65 73 74 54 6f 6f 6c 42 61 74 63 68 0a 09 09 09 09 09 09 ext.=.isFreshestToolBatch.......
30c0 09 09 3f 20 65 6e 74 72 79 2e 72 65 73 75 6c 74 0a 09 09 09 09 09 09 09 09 3a 20 73 74 72 69 70 ..?.entry.result.........:.strip
30e0 55 73 65 72 49 6e 74 65 72 72 75 70 74 42 6c 6f 63 6b 28 65 6e 74 72 79 2e 72 65 73 75 6c 74 29 UserInterruptBlock(entry.result)
3100 3b 0a 09 09 09 09 09 09 09 73 74 65 70 52 65 73 75 6c 74 73 2e 70 75 73 68 28 7b 0a 09 09 09 09 ;........stepResults.push({.....
3120 09 09 09 09 74 6f 6f 6c 43 61 6c 6c 49 64 3a 20 65 6e 74 72 79 2e 69 64 2c 0a 09 09 09 09 09 09 ....toolCallId:.entry.id,.......
3140 09 09 74 6f 6f 6c 4e 61 6d 65 2c 0a 09 09 09 09 09 09 09 09 72 65 73 75 6c 74 3a 20 72 65 73 75 ..toolName,.........result:.resu
3160 6c 74 54 65 78 74 2c 0a 09 09 09 09 09 09 09 09 69 73 45 72 72 6f 72 3a 20 65 6e 74 72 79 2e 69 ltText,.........isError:.entry.i
3180 73 45 72 72 6f 72 2c 0a 09 09 09 09 09 09 09 7d 29 3b 0a 09 09 09 09 09 09 7d 0a 09 09 09 09 09 sError,........});.......}......
31a0 7d 0a 09 09 09 09 09 2f 2f 20 45 6e 64 20 6f 66 20 74 68 69 73 20 4c 4c 4d 20 73 74 65 70 20 e2 }......//.End.of.this.LLM.step..
31c0 86 92 20 65 6d 69 74 20 69 74 73 20 60 5b 61 73 73 69 73 74 61 6e 74 2c 20 74 6f 6f 6c 5d 60 20 ...emit.its.`[assistant,.tool]`.
31e0 70 61 69 72 20 61 6e 64 0a 09 09 09 09 09 2f 2f 20 73 74 61 72 74 20 61 20 66 72 65 73 68 20 70 pair.and......//.start.a.fresh.p
3200 61 69 72 20 66 6f 72 20 74 68 65 20 6e 65 78 74 20 73 74 65 70 2e 0a 09 09 09 09 09 66 6c 75 73 air.for.the.next.step.......flus
3220 68 53 74 65 70 28 29 3b 0a 09 09 09 09 09 62 72 65 61 6b 3b 0a 09 09 09 09 7d 0a 09 09 09 09 63 hStep();......break;.....}.....c
3240 61 73 65 20 22 65 72 72 6f 72 22 3a 0a 09 09 09 09 63 61 73 65 20 22 73 79 73 74 65 6d 22 3a 0a ase."error":.....case."system":.
3260 09 09 09 09 09 2f 2f 20 53 74 72 69 70 20 e2 80 94 20 6e 6f 74 20 73 65 6e 74 20 62 61 63 6b 20 .....//.Strip.....not.sent.back.
3280 74 6f 20 74 68 65 20 4c 4c 4d 2e 0a 09 09 09 09 09 62 72 65 61 6b 3b 0a 09 09 09 7d 0a 09 09 7d to.the.LLM.......break;....}...}
32a0 0a 0a 09 09 2f 2f 20 46 69 6e 61 6c 20 73 74 65 70 3a 20 74 72 61 69 6c 69 6e 67 20 74 65 78 74 ....//.Final.step:.trailing.text
32c0 2f 74 68 69 6e 6b 69 6e 67 20 77 69 74 68 20 6e 6f 20 74 6f 6f 6c 2d 62 61 74 63 68 2e 20 60 66 /thinking.with.no.tool-batch..`f
32e0 6c 75 73 68 53 74 65 70 60 0a 09 09 2f 2f 20 73 6b 69 70 73 20 65 6d 70 74 69 65 73 2c 20 73 6f lushStep`...//.skips.empties,.so
3300 20 61 20 74 75 72 6e 20 6f 66 20 6f 6e 6c 79 20 73 79 73 74 65 6d 2f 65 72 72 6f 72 20 63 68 75 .a.turn.of.only.system/error.chu
3320 6e 6b 73 20 65 6d 69 74 73 20 6e 6f 74 68 69 6e 67 2e 0a 09 09 66 6c 75 73 68 53 74 65 70 28 29 nks.emits.nothing....flushStep()
3340 3b 0a 09 7d 0a 09 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a 7d 0a 0a 2f 2a 2a 0a 20 2a 20 41 ;..}..return.result;.}../**..*.A
3360 70 70 6c 79 20 4f 70 65 6e 41 49 2d 63 6f 6d 70 61 74 69 62 6c 65 20 72 65 61 73 6f 6e 69 6e 67 pply.OpenAI-compatible.reasoning
3380 20 6e 6f 72 6d 61 6c 69 73 61 74 69 6f 6e 2e 0a 20 2a 0a 20 2a 20 43 72 69 62 62 65 64 20 66 72 .normalisation...*..*.Cribbed.fr
33a0 6f 6d 20 6f 70 65 6e 63 6f 64 65 20 60 70 72 6f 76 69 64 65 72 2f 74 72 61 6e 73 66 6f 72 6d 2e om.opencode.`provider/transform.
33c0 74 73 3a 32 31 37 2d 32 34 39 60 2e 20 53 6f 6c 76 65 73 20 44 65 65 70 53 65 65 6b 27 73 0a 20 ts:217-249`..Solves.DeepSeek's..
33e0 2a 20 22 54 68 65 20 72 65 61 73 6f 6e 69 6e 67 5f 63 6f 6e 74 65 6e 74 20 69 6e 20 74 68 65 20 *."The.reasoning_content.in.the.
3400 74 68 69 6e 6b 69 6e 67 20 6d 6f 64 65 20 6d 75 73 74 20 62 65 20 70 61 73 73 65 64 20 62 61 63 thinking.mode.must.be.passed.bac
3420 6b 20 74 6f 20 74 68 65 0a 20 2a 20 41 50 49 22 20 65 72 72 6f 72 2e 0a 20 2a 0a 20 2a 20 54 68 k.to.the..*.API".error...*..*.Th
3440 65 20 76 36 20 60 40 61 69 2d 73 64 6b 2f 6f 70 65 6e 61 69 2d 63 6f 6d 70 61 74 69 62 6c 65 40 e.v6.`@ai-sdk/openai-compatible@
3460 32 2e 78 60 20 70 72 6f 76 69 64 65 72 20 65 78 74 72 61 63 74 73 20 60 72 65 61 73 6f 6e 69 6e 2.x`.provider.extracts.`reasonin
3480 67 5f 63 6f 6e 74 65 6e 74 60 0a 20 2a 20 66 72 6f 6d 20 61 73 73 69 73 74 61 6e 74 20 60 7b 20 g_content`..*.from.assistant.`{.
34a0 74 79 70 65 3a 20 22 72 65 61 73 6f 6e 69 6e 67 22 2c 20 74 65 78 74 20 7d 60 20 70 61 72 74 73 type:."reasoning",.text.}`.parts
34c0 20 6e 61 74 69 76 65 6c 79 0a 20 2a 20 28 73 65 65 20 60 6e 6f 64 65 5f 6d 6f 64 75 6c 65 73 2f .natively..*.(see.`node_modules/
34e0 40 61 69 2d 73 64 6b 2f 6f 70 65 6e 61 69 2d 63 6f 6d 70 61 74 69 62 6c 65 2f 64 69 73 74 2f 69 @ai-sdk/openai-compatible/dist/i
3500 6e 64 65 78 2e 6d 6a 73 3a 32 31 35 2d 32 31 36 60 20 61 6e 64 20 3a 32 34 35 29 2e 0a 20 2a 20 ndex.mjs:215-216`.and.:245)...*.
3520 42 75 74 20 74 68 61 74 20 6e 61 74 69 76 65 20 70 61 74 68 20 53 4b 49 50 53 20 65 6d 69 73 73 But.that.native.path.SKIPS.emiss
3540 69 6f 6e 20 77 68 65 6e 20 60 72 65 61 73 6f 6e 69 6e 67 2e 6c 65 6e 67 74 68 20 3d 3d 3d 20 30 ion.when.`reasoning.length.===.0
3560 60 20 e2 80 94 0a 20 2a 20 22 72 65 61 73 6f 6e 69 6e 67 5f 63 6f 6e 74 65 6e 74 22 20 69 73 20 `......*."reasoning_content".is.
3580 6f 6d 69 74 74 65 64 20 66 72 6f 6d 20 74 68 65 20 77 69 72 65 2e 20 44 65 65 70 53 65 65 6b 20 omitted.from.the.wire..DeepSeek.
35a0 28 61 6e 64 20 73 69 6d 69 6c 61 72 0a 20 2a 20 22 74 68 69 6e 6b 69 6e 67 20 6d 6f 64 65 22 20 (and.similar..*."thinking.mode".
35c0 70 72 6f 76 69 64 65 72 73 29 20 72 65 71 75 69 72 65 20 74 68 65 20 66 69 65 6c 64 20 74 6f 20 providers).require.the.field.to.
35e0 62 65 20 70 72 65 73 65 6e 74 20 69 6e 20 65 76 65 72 79 0a 20 2a 20 66 6f 6c 6c 6f 77 2d 75 70 be.present.in.every..*.follow-up
3600 20 74 75 72 6e 20 6f 6e 63 65 20 69 74 20 77 61 73 20 65 6d 69 74 74 65 64 20 61 74 20 6c 65 61 .turn.once.it.was.emitted.at.lea
3620 73 74 20 6f 6e 63 65 2c 20 65 76 65 6e 20 69 66 20 74 68 65 20 76 61 6c 75 65 20 69 73 0a 20 2a st.once,.even.if.the.value.is..*
3640 20 74 68 65 20 65 6d 70 74 79 20 73 74 72 69 6e 67 2e 0a 20 2a 0a 20 2a 20 53 74 72 61 74 65 67 .the.empty.string...*..*.Strateg
3660 79 3a 20 66 6f 72 20 65 76 65 72 79 20 61 73 73 69 73 74 61 6e 74 20 6d 65 73 73 61 67 65 20 74 y:.for.every.assistant.message.t
3680 68 61 74 20 68 61 73 20 61 6e 79 20 60 72 65 61 73 6f 6e 69 6e 67 60 20 70 61 72 74 73 2c 0a 20 hat.has.any.`reasoning`.parts,..
36a0 2a 20 63 6f 6e 63 61 74 65 6e 61 74 65 20 74 68 65 69 72 20 74 65 78 74 20 69 6e 74 6f 20 60 70 *.concatenate.their.text.into.`p
36c0 72 6f 76 69 64 65 72 4f 70 74 69 6f 6e 73 2e 6f 70 65 6e 61 69 43 6f 6d 70 61 74 69 62 6c 65 2e roviderOptions.openaiCompatible.
36e0 72 65 61 73 6f 6e 69 6e 67 5f 63 6f 6e 74 65 6e 74 60 0a 20 2a 20 28 70 72 65 73 65 72 76 69 6e reasoning_content`..*.(preservin
3700 67 20 65 6d 70 74 79 20 73 74 72 69 6e 67 73 29 20 41 4e 44 20 73 74 72 69 70 20 74 68 6f 73 65 g.empty.strings).AND.strip.those
3720 20 70 61 72 74 73 20 66 72 6f 6d 20 63 6f 6e 74 65 6e 74 2e 20 54 68 65 0a 20 2a 20 72 65 73 75 .parts.from.content..The..*.resu
3740 6c 74 69 6e 67 20 70 61 79 6c 6f 61 64 20 68 61 73 20 61 20 73 69 6e 67 6c 65 20 73 6f 75 72 63 lting.payload.has.a.single.sourc
3760 65 20 6f 66 20 74 72 75 74 68 20 66 6f 72 20 60 72 65 61 73 6f 6e 69 6e 67 5f 63 6f 6e 74 65 6e e.of.truth.for.`reasoning_conten
3780 74 60 0a 20 2a 20 63 6f 6d 69 6e 67 20 76 69 61 20 74 68 65 20 6d 65 73 73 61 67 65 2d 6c 65 76 t`..*.coming.via.the.message-lev
37a0 65 6c 20 60 70 72 6f 76 69 64 65 72 4f 70 74 69 6f 6e 73 60 20 73 70 72 65 61 64 20 61 74 20 6c el.`providerOptions`.spread.at.l
37c0 69 6e 65 20 32 34 37 20 6f 66 20 74 68 65 0a 20 2a 20 53 44 4b 20 70 72 6f 76 69 64 65 72 2c 20 ine.247.of.the..*.SDK.provider,.
37e0 77 68 69 63 68 20 66 69 72 65 73 20 72 65 67 61 72 64 6c 65 73 73 20 6f 66 20 65 6d 70 74 79 2d which.fires.regardless.of.empty-
3800 76 73 2d 6e 6f 6e 2d 65 6d 70 74 79 20 74 65 78 74 2e 0a 20 2a 0a 20 2a 20 4f 6e 6c 79 20 61 70 vs-non-empty.text...*..*.Only.ap
3820 70 6c 69 65 64 20 66 6f 72 20 74 68 65 20 64 65 66 61 75 6c 74 20 28 6e 6f 6e 2d 41 6e 74 68 72 plied.for.the.default.(non-Anthr
3840 6f 70 69 63 29 20 6f 70 65 6e 61 69 2d 63 6f 6d 70 61 74 69 62 6c 65 20 70 61 74 68 2e 0a 20 2a opic).openai-compatible.path...*
3860 2f 0a 66 75 6e 63 74 69 6f 6e 20 61 70 70 6c 79 4f 70 65 6e 41 49 43 6f 6d 70 61 74 69 62 6c 65 /.function.applyOpenAICompatible
3880 52 65 61 73 6f 6e 69 6e 67 4e 6f 72 6d 61 6c 69 73 61 74 69 6f 6e 28 6d 73 67 73 3a 20 4d 6f 64 ReasoningNormalisation(msgs:.Mod
38a0 65 6c 4d 65 73 73 61 67 65 5b 5d 29 3a 20 4d 6f 64 65 6c 4d 65 73 73 61 67 65 5b 5d 20 7b 0a 09 elMessage[]):.ModelMessage[].{..
38c0 72 65 74 75 72 6e 20 6d 73 67 73 2e 6d 61 70 28 28 6d 73 67 29 20 3d 3e 20 7b 0a 09 09 69 66 20 return.msgs.map((msg).=>.{...if.
38e0 28 6d 73 67 2e 72 6f 6c 65 20 21 3d 3d 20 22 61 73 73 69 73 74 61 6e 74 22 20 7c 7c 20 21 41 72 (msg.role.!==."assistant".||.!Ar
3900 72 61 79 2e 69 73 41 72 72 61 79 28 6d 73 67 2e 63 6f 6e 74 65 6e 74 29 29 20 72 65 74 75 72 6e ray.isArray(msg.content)).return
3920 20 6d 73 67 3b 0a 0a 09 09 2f 2f 20 46 69 6e 64 20 72 65 61 73 6f 6e 69 6e 67 20 70 61 72 74 73 .msg;....//.Find.reasoning.parts
3940 2e 20 49 66 20 74 68 65 72 65 20 61 72 65 20 6e 6f 6e 65 2c 20 74 68 69 73 20 6d 65 73 73 61 67 ..If.there.are.none,.this.messag
3960 65 20 6e 65 76 65 72 20 68 61 64 0a 09 09 2f 2f 20 61 20 74 68 69 6e 6b 69 6e 67 20 74 75 72 6e e.never.had...//.a.thinking.turn
3980 20 e2 80 94 20 44 65 65 70 53 65 65 6b 20 64 6f 65 73 6e 27 74 20 72 65 71 75 69 72 65 20 60 72 .....DeepSeek.doesn't.require.`r
39a0 65 61 73 6f 6e 69 6e 67 5f 63 6f 6e 74 65 6e 74 60 0a 09 09 2f 2f 20 69 6e 20 74 68 61 74 20 63 easoning_content`...//.in.that.c
39c0 61 73 65 2c 20 73 6f 20 77 65 20 70 61 73 73 20 74 68 72 6f 75 67 68 20 75 6e 63 68 61 6e 67 65 ase,.so.we.pass.through.unchange
39e0 64 2e 0a 09 09 63 6f 6e 73 74 20 72 65 61 73 6f 6e 69 6e 67 50 61 72 74 73 20 3d 20 6d 73 67 2e d....const.reasoningParts.=.msg.
3a00 63 6f 6e 74 65 6e 74 2e 66 69 6c 74 65 72 28 0a 09 09 09 28 70 29 3a 20 70 20 69 73 20 45 78 74 content.filter(....(p):.p.is.Ext
3a20 72 61 63 74 3c 74 79 70 65 6f 66 20 70 2c 20 7b 20 74 79 70 65 3a 20 22 72 65 61 73 6f 6e 69 6e ract<typeof.p,.{.type:."reasonin
3a40 67 22 20 7d 3e 20 3d 3e 20 70 2e 74 79 70 65 20 3d 3d 3d 20 22 72 65 61 73 6f 6e 69 6e 67 22 2c g".}>.=>.p.type.===."reasoning",
3a60 0a 09 09 29 3b 0a 09 09 69 66 20 28 72 65 61 73 6f 6e 69 6e 67 50 61 72 74 73 2e 6c 65 6e 67 74 ...);...if.(reasoningParts.lengt
3a80 68 20 3d 3d 3d 20 30 29 20 72 65 74 75 72 6e 20 6d 73 67 3b 0a 0a 09 09 63 6f 6e 73 74 20 72 65 h.===.0).return.msg;....const.re
3aa0 61 73 6f 6e 69 6e 67 54 65 78 74 20 3d 20 72 65 61 73 6f 6e 69 6e 67 50 61 72 74 73 2e 6d 61 70 asoningText.=.reasoningParts.map
3ac0 28 28 70 29 20 3d 3e 20 70 2e 74 65 78 74 29 2e 6a 6f 69 6e 28 22 22 29 3b 0a 09 09 63 6f 6e 73 ((p).=>.p.text).join("");...cons
3ae0 74 20 66 69 6c 74 65 72 65 64 43 6f 6e 74 65 6e 74 20 3d 20 6d 73 67 2e 63 6f 6e 74 65 6e 74 2e t.filteredContent.=.msg.content.
3b00 66 69 6c 74 65 72 28 28 70 29 20 3d 3e 20 70 2e 74 79 70 65 20 21 3d 3d 20 22 72 65 61 73 6f 6e filter((p).=>.p.type.!==."reason
3b20 69 6e 67 22 29 3b 0a 0a 09 09 63 6f 6e 73 74 20 65 78 69 73 74 69 6e 67 4f 70 74 73 20 3d 20 6d ing");....const.existingOpts.=.m
3b40 73 67 2e 70 72 6f 76 69 64 65 72 4f 70 74 69 6f 6e 73 20 3f 3f 20 7b 7d 3b 0a 09 09 63 6f 6e 73 sg.providerOptions.??.{};...cons
3b60 74 20 65 78 69 73 74 69 6e 67 43 6f 6d 70 61 74 20 3d 20 28 65 78 69 73 74 69 6e 67 4f 70 74 73 t.existingCompat.=.(existingOpts
3b80 2e 6f 70 65 6e 61 69 43 6f 6d 70 61 74 69 62 6c 65 20 3f 3f 20 7b 7d 29 20 61 73 20 52 65 63 6f .openaiCompatible.??.{}).as.Reco
3ba0 72 64 3c 73 74 72 69 6e 67 2c 20 75 6e 6b 6e 6f 77 6e 3e 3b 0a 0a 09 09 72 65 74 75 72 6e 20 7b rd<string,.unknown>;....return.{
3bc0 0a 09 09 09 2e 2e 2e 6d 73 67 2c 0a 09 09 09 63 6f 6e 74 65 6e 74 3a 20 66 69 6c 74 65 72 65 64 .......msg,....content:.filtered
3be0 43 6f 6e 74 65 6e 74 2c 0a 09 09 09 70 72 6f 76 69 64 65 72 4f 70 74 69 6f 6e 73 3a 20 7b 0a 09 Content,....providerOptions:.{..
3c00 09 09 09 2e 2e 2e 65 78 69 73 74 69 6e 67 4f 70 74 73 2c 0a 09 09 09 09 6f 70 65 6e 61 69 43 6f ......existingOpts,.....openaiCo
3c20 6d 70 61 74 69 62 6c 65 3a 20 7b 0a 09 09 09 09 09 2e 2e 2e 65 78 69 73 74 69 6e 67 43 6f 6d 70 mpatible:.{.........existingComp
3c40 61 74 2c 0a 09 09 09 09 09 2f 2f 20 41 6c 77 61 79 73 20 73 65 74 2c 20 65 76 65 6e 20 77 68 65 at,......//.Always.set,.even.whe
3c60 6e 20 65 6d 70 74 79 2e 20 54 68 69 73 20 69 73 20 74 68 65 20 6b 65 79 20 66 69 78 20 e2 80 94 n.empty..This.is.the.key.fix....
3c80 0a 09 09 09 09 09 2f 2f 20 74 68 65 20 53 44 4b 27 73 20 63 6f 6e 74 65 6e 74 2d 73 69 64 65 20 ......//.the.SDK's.content-side.
3ca0 65 78 74 72 61 63 74 69 6f 6e 20 73 6b 69 70 73 20 65 6d 70 74 79 0a 09 09 09 09 09 2f 2f 20 72 extraction.skips.empty......//.r
3cc0 65 61 73 6f 6e 69 6e 67 2c 20 62 75 74 20 44 65 65 70 53 65 65 6b 20 72 65 71 75 69 72 65 73 20 easoning,.but.DeepSeek.requires.
3ce0 74 68 65 20 66 69 65 6c 64 20 70 72 65 73 65 6e 74 2e 0a 09 09 09 09 09 72 65 61 73 6f 6e 69 6e the.field.present.......reasonin
3d00 67 5f 63 6f 6e 74 65 6e 74 3a 20 72 65 61 73 6f 6e 69 6e 67 54 65 78 74 2c 0a 09 09 09 09 7d 2c g_content:.reasoningText,.....},
3d20 0a 09 09 09 7d 2c 0a 09 09 7d 20 61 73 20 4d 6f 64 65 6c 4d 65 73 73 61 67 65 3b 0a 09 7d 29 3b ....},...}.as.ModelMessage;..});
3d40 0a 7d 0a 0a 2f 2a 2a 0a 20 2a 20 41 70 70 6c 79 20 41 6e 74 68 72 6f 70 69 63 20 73 74 72 75 63 .}../**..*.Apply.Anthropic.struc
3d60 74 75 72 61 6c 20 6e 6f 72 6d 61 6c 69 73 61 74 69 6f 6e 73 20 74 6f 20 61 20 60 4d 6f 64 65 6c tural.normalisations.to.a.`Model
3d80 4d 65 73 73 61 67 65 5b 5d 60 2e 0a 20 2a 0a 20 2a 20 43 72 69 62 62 65 64 20 66 72 6f 6d 20 6f Message[]`...*..*.Cribbed.from.o
3da0 70 65 6e 63 6f 64 65 20 60 70 72 6f 76 69 64 65 72 2f 74 72 61 6e 73 66 6f 72 6d 2e 74 73 3a 35 pencode.`provider/transform.ts:5
3dc0 33 2d 31 34 38 60 2e 20 54 77 6f 20 70 61 73 73 65 73 3a 0a 20 2a 0a 20 2a 20 31 2e 20 2a 2a 45 3-148`..Two.passes:..*..*.1..**E
3de0 6d 70 74 79 2d 74 65 78 74 2f 72 65 61 73 6f 6e 69 6e 67 20 66 69 6c 74 65 72 2a 2a 3a 20 44 72 mpty-text/reasoning.filter**:.Dr
3e00 6f 70 20 60 74 65 78 74 60 20 2f 20 60 72 65 61 73 6f 6e 69 6e 67 60 20 70 61 72 74 73 0a 20 2a op.`text`./.`reasoning`.parts..*
3e20 20 20 20 20 77 68 6f 73 65 20 60 74 65 78 74 20 3d 3d 3d 20 22 22 60 2e 20 44 72 6f 70 20 6d 65 ....whose.`text.===.""`..Drop.me
3e40 73 73 61 67 65 73 20 77 68 6f 73 65 20 63 6f 6e 74 65 6e 74 20 61 72 72 61 79 20 62 65 63 6f 6d ssages.whose.content.array.becom
3e60 65 73 0a 20 2a 20 20 20 20 65 6d 70 74 79 2e 20 41 6e 74 68 72 6f 70 69 63 20 72 65 6a 65 63 74 es..*....empty..Anthropic.reject
3e80 73 20 61 73 73 69 73 74 61 6e 74 20 74 75 72 6e 73 20 77 69 74 68 20 65 6d 70 74 79 20 63 6f 6e s.assistant.turns.with.empty.con
3ea0 74 65 6e 74 2e 0a 20 2a 0a 20 2a 20 32 2e 20 2a 2a 60 74 6f 6f 6c 43 61 6c 6c 49 64 60 20 73 63 tent...*..*.2..**`toolCallId`.sc
3ec0 72 75 62 62 69 6e 67 2a 2a 3a 20 41 6e 74 68 72 6f 70 69 63 20 6f 6e 6c 79 20 61 63 63 65 70 74 rubbing**:.Anthropic.only.accept
3ee0 73 20 74 6f 6f 6c 20 63 61 6c 6c 20 49 44 73 0a 20 2a 20 20 20 20 74 68 61 74 20 6d 61 74 63 68 s.tool.call.IDs..*....that.match
3f00 20 60 5b 61 2d 7a 41 2d 5a 30 2d 39 5f 2d 5d 60 2e 20 4f 75 72 20 49 44 73 20 61 72 65 20 63 72 .`[a-zA-Z0-9_-]`..Our.IDs.are.cr
3f20 79 70 74 6f 2e 72 61 6e 64 6f 6d 55 55 49 44 28 29 20 76 61 6c 75 65 73 0a 20 2a 20 20 20 20 77 ypto.randomUUID().values..*....w
3f40 68 69 63 68 20 61 72 65 20 61 6c 72 65 61 64 79 20 73 61 66 65 2c 20 62 75 74 20 74 6f 6f 6c 2d hich.are.already.safe,.but.tool-
3f60 63 61 6c 6c 20 49 44 73 20 61 73 73 69 67 6e 65 64 20 62 79 20 75 70 73 74 72 65 61 6d 0a 20 2a call.IDs.assigned.by.upstream..*
3f80 20 20 20 20 73 6f 75 72 63 65 73 20 28 70 72 6f 76 69 64 65 72 2d 65 78 65 63 75 74 65 64 20 74 ....sources.(provider-executed.t
3fa0 6f 6f 6c 73 2c 20 73 75 62 61 67 65 6e 74 20 72 65 74 72 69 65 76 61 6c 2c 20 65 74 63 2e 29 20 ools,.subagent.retrieval,.etc.).
3fc0 6d 61 79 0a 20 2a 20 20 20 20 6e 6f 74 20 62 65 2e 20 44 65 66 65 6e 73 69 76 65 6c 79 20 73 63 may..*....not.be..Defensively.sc
3fe0 72 75 62 2e 20 4d 69 72 72 6f 72 73 20 6f 70 65 6e 63 6f 64 65 20 60 70 72 6f 76 69 64 65 72 2f rub..Mirrors.opencode.`provider/
4000 74 72 61 6e 73 66 6f 72 6d 2e 74 73 3a 39 36 2d 31 32 32 60 2e 0a 20 2a 0a 20 2a 20 33 2e 20 2a transform.ts:96-122`...*..*.3..*
4020 2a 60 5b 74 6f 6f 6c 2d 63 61 6c 6c 2c 20 74 65 78 74 5d 60 20 73 70 6c 69 74 2a 2a 3a 20 41 6e *`[tool-call,.text]`.split**:.An
4040 74 68 72 6f 70 69 63 20 72 65 6a 65 63 74 73 20 61 73 73 69 73 74 61 6e 74 20 74 75 72 6e 73 0a thropic.rejects.assistant.turns.
4060 20 2a 20 20 20 20 77 68 65 72 65 20 60 74 6f 6f 6c 5f 75 73 65 60 20 62 6c 6f 63 6b 73 20 61 72 .*....where.`tool_use`.blocks.ar
4080 65 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 6e 6f 6e 2d 74 6f 6f 6c 2d 63 61 6c 6c 20 63 6f 6e 74 e.followed.by.non-tool-call.cont
40a0 65 6e 74 0a 20 2a 20 20 20 20 28 22 60 74 6f 6f 6c 5f 75 73 65 60 20 69 64 73 20 77 65 72 65 20 ent..*....("`tool_use`.ids.were.
40c0 66 6f 75 6e 64 20 77 69 74 68 6f 75 74 20 60 74 6f 6f 6c 5f 72 65 73 75 6c 74 60 20 62 6c 6f 63 found.without.`tool_result`.bloc
40e0 6b 73 20 69 6d 6d 65 64 69 61 74 65 6c 79 0a 20 2a 20 20 20 20 61 66 74 65 72 22 29 2e 20 49 66 ks.immediately..*....after")..If
4100 20 61 6e 20 61 73 73 69 73 74 61 6e 74 20 6d 65 73 73 61 67 65 20 68 61 73 20 6d 69 78 65 64 20 .an.assistant.message.has.mixed.
4120 6f 72 64 65 72 69 6e 67 2c 20 73 70 6c 69 74 20 69 74 20 69 6e 74 6f 0a 20 2a 20 20 20 20 60 5b ordering,.split.it.into..*....`[
4140 6e 6f 6e 2d 74 6f 6f 6c 20 70 61 72 74 73 5d 20 2b 20 5b 74 6f 6f 6c 2d 63 61 6c 6c 20 70 61 72 non-tool.parts].+.[tool-call.par
4160 74 73 5d 60 2e 0a 20 2a 0a 20 2a 20 4f 6e 6c 79 20 61 70 70 6c 69 65 64 20 66 6f 72 20 41 6e 74 ts]`...*..*.Only.applied.for.Ant
4180 68 72 6f 70 69 63 2d 62 61 63 6b 65 64 20 70 72 6f 76 69 64 65 72 73 20 28 43 6c 61 75 64 65 20 hropic-backed.providers.(Claude.
41a0 4f 41 75 74 68 20 6f 72 0a 20 2a 20 6f 70 65 6e 63 6f 64 65 2d 61 6e 74 68 72 6f 70 69 63 29 2e OAuth.or..*.opencode-anthropic).
41c0 20 53 6b 69 70 20 66 6f 72 20 6f 70 65 6e 61 69 2d 63 6f 6d 70 61 74 69 62 6c 65 20 2f 20 4f 70 .Skip.for.openai-compatible./.Op
41e0 65 6e 43 6f 64 65 20 5a 65 6e 2e 0a 20 2a 2f 0a 63 6f 6e 73 74 20 53 43 52 55 42 5f 54 4f 4f 4c enCode.Zen...*/.const.SCRUB_TOOL
4200 5f 43 41 4c 4c 5f 49 44 20 3d 20 28 69 64 3a 20 73 74 72 69 6e 67 29 3a 20 73 74 72 69 6e 67 20 _CALL_ID.=.(id:.string):.string.
4220 3d 3e 20 69 64 2e 72 65 70 6c 61 63 65 28 2f 5b 5e 61 2d 7a 41 2d 5a 30 2d 39 5f 2d 5d 2f 67 2c =>.id.replace(/[^a-zA-Z0-9_-]/g,
4240 20 22 5f 22 29 3b 0a 0a 66 75 6e 63 74 69 6f 6e 20 61 70 70 6c 79 41 6e 74 68 72 6f 70 69 63 53 ."_");..function.applyAnthropicS
4260 74 72 75 63 74 75 72 61 6c 4e 6f 72 6d 61 6c 69 73 61 74 69 6f 6e 73 28 6d 73 67 73 3a 20 4d 6f tructuralNormalisations(msgs:.Mo
4280 64 65 6c 4d 65 73 73 61 67 65 5b 5d 29 3a 20 4d 6f 64 65 6c 4d 65 73 73 61 67 65 5b 5d 20 7b 0a delMessage[]):.ModelMessage[].{.
42a0 09 2f 2f 20 50 61 73 73 20 31 3a 20 46 69 6c 74 65 72 20 65 6d 70 74 79 20 74 65 78 74 2f 72 65 .//.Pass.1:.Filter.empty.text/re
42c0 61 73 6f 6e 69 6e 67 20 70 61 72 74 73 3b 20 64 72 6f 70 20 6d 65 73 73 61 67 65 73 20 74 68 61 asoning.parts;.drop.messages.tha
42e0 74 20 62 65 63 6f 6d 65 20 65 6d 70 74 79 2e 0a 09 6d 73 67 73 20 3d 20 6d 73 67 73 0a 09 09 2e t.become.empty...msgs.=.msgs....
4300 6d 61 70 28 28 6d 73 67 29 20 3d 3e 20 7b 0a 09 09 09 69 66 20 28 74 79 70 65 6f 66 20 6d 73 67 map((msg).=>.{....if.(typeof.msg
4320 2e 63 6f 6e 74 65 6e 74 20 3d 3d 3d 20 22 73 74 72 69 6e 67 22 29 20 7b 0a 09 09 09 09 69 66 20 .content.===."string").{.....if.
4340 28 6d 73 67 2e 63 6f 6e 74 65 6e 74 20 3d 3d 3d 20 22 22 29 20 72 65 74 75 72 6e 20 75 6e 64 65 (msg.content.===."").return.unde
4360 66 69 6e 65 64 3b 0a 09 09 09 09 72 65 74 75 72 6e 20 6d 73 67 3b 0a 09 09 09 7d 0a 09 09 09 69 fined;.....return.msg;....}....i
4380 66 20 28 21 41 72 72 61 79 2e 69 73 41 72 72 61 79 28 6d 73 67 2e 63 6f 6e 74 65 6e 74 29 29 20 f.(!Array.isArray(msg.content)).
43a0 72 65 74 75 72 6e 20 6d 73 67 3b 0a 09 09 09 63 6f 6e 73 74 20 66 69 6c 74 65 72 65 64 20 3d 20 return.msg;....const.filtered.=.
43c0 6d 73 67 2e 63 6f 6e 74 65 6e 74 2e 66 69 6c 74 65 72 28 28 70 61 72 74 29 20 3d 3e 20 7b 0a 09 msg.content.filter((part).=>.{..
43e0 09 09 09 69 66 20 28 70 61 72 74 2e 74 79 70 65 20 3d 3d 3d 20 22 74 65 78 74 22 20 7c 7c 20 70 ...if.(part.type.===."text".||.p
4400 61 72 74 2e 74 79 70 65 20 3d 3d 3d 20 22 72 65 61 73 6f 6e 69 6e 67 22 29 20 7b 0a 09 09 09 09 art.type.===."reasoning").{.....
4420 09 2f 2f 20 44 72 6f 70 20 65 6d 70 74 79 20 74 65 78 74 2f 72 65 61 73 6f 6e 69 6e 67 20 70 61 .//.Drop.empty.text/reasoning.pa
4440 72 74 73 2e 20 41 6e 74 68 72 6f 70 69 63 20 72 65 6a 65 63 74 73 20 61 6e 20 65 6d 70 74 79 0a rts..Anthropic.rejects.an.empty.
4460 09 09 09 09 09 2f 2f 20 60 72 65 61 73 6f 6e 69 6e 67 60 20 70 61 72 74 20 28 22 74 68 69 6e 6b .....//.`reasoning`.part.("think
4480 69 6e 67 20 62 6c 6f 63 6b 20 6d 75 73 74 20 68 61 76 65 20 63 6f 6e 74 65 6e 74 22 29 20 65 76 ing.block.must.have.content").ev
44a0 65 6e 0a 09 09 09 09 09 2f 2f 20 77 68 65 6e 20 69 74 20 63 61 72 72 69 65 73 20 61 20 73 69 67 en......//.when.it.carries.a.sig
44c0 6e 61 74 75 72 65 2c 20 73 6f 20 77 65 20 73 74 72 69 70 20 69 74 20 6f 6e 20 74 68 65 20 77 61 nature,.so.we.strip.it.on.the.wa
44e0 79 20 6f 75 74 0a 09 09 09 09 09 2f 2f 20 77 68 69 6c 65 20 73 74 69 6c 6c 20 70 65 72 73 69 73 y.out......//.while.still.persis
4500 74 69 6e 67 20 74 68 65 20 73 69 67 6e 65 64 20 62 6c 6f 63 6b 20 66 6f 72 20 72 6f 75 6e 64 2d ting.the.signed.block.for.round-
4520 74 72 69 70 0a 09 09 09 09 09 2f 2f 20 66 69 64 65 6c 69 74 79 20 28 73 65 65 20 74 68 65 20 65 trip......//.fidelity.(see.the.e
4540 6d 70 74 79 2d 72 65 61 73 6f 6e 69 6e 67 2d 70 61 72 74 20 74 65 73 74 29 2e 0a 09 09 09 09 09 mpty-reasoning-part.test).......
4560 72 65 74 75 72 6e 20 28 70 61 72 74 20 61 73 20 7b 20 74 65 78 74 3a 20 73 74 72 69 6e 67 20 7d return.(part.as.{.text:.string.}
4580 29 2e 74 65 78 74 20 21 3d 3d 20 22 22 3b 0a 09 09 09 09 7d 0a 09 09 09 09 72 65 74 75 72 6e 20 ).text.!==."";.....}.....return.
45a0 74 72 75 65 3b 0a 09 09 09 7d 29 3b 0a 09 09 09 69 66 20 28 66 69 6c 74 65 72 65 64 2e 6c 65 6e true;....});....if.(filtered.len
45c0 67 74 68 20 3d 3d 3d 20 30 29 20 72 65 74 75 72 6e 20 75 6e 64 65 66 69 6e 65 64 3b 0a 09 09 09 gth.===.0).return.undefined;....
45e0 72 65 74 75 72 6e 20 7b 20 2e 2e 2e 6d 73 67 2c 20 63 6f 6e 74 65 6e 74 3a 20 66 69 6c 74 65 72 return.{....msg,.content:.filter
4600 65 64 20 7d 3b 0a 09 09 7d 29 0a 09 09 2e 66 69 6c 74 65 72 28 28 6d 73 67 29 3a 20 6d 73 67 20 ed.};...})....filter((msg):.msg.
4620 69 73 20 4d 6f 64 65 6c 4d 65 73 73 61 67 65 20 3d 3e 20 6d 73 67 20 21 3d 3d 20 75 6e 64 65 66 is.ModelMessage.=>.msg.!==.undef
4640 69 6e 65 64 20 26 26 20 6d 73 67 2e 63 6f 6e 74 65 6e 74 20 21 3d 3d 20 22 22 29 3b 0a 0a 09 2f ined.&&.msg.content.!==."");.../
4660 2f 20 50 61 73 73 20 32 3a 20 53 63 72 75 62 20 74 6f 6f 6c 43 61 6c 6c 49 64 20 63 68 61 72 73 /.Pass.2:.Scrub.toolCallId.chars
4680 20 6f 6e 20 62 6f 74 68 20 61 73 73 69 73 74 61 6e 74 20 74 6f 6f 6c 2d 63 61 6c 6c 20 70 61 72 .on.both.assistant.tool-call.par
46a0 74 73 20 61 6e 64 0a 09 2f 2f 20 74 6f 6f 6c 2d 72 6f 6c 65 20 74 6f 6f 6c 2d 72 65 73 75 6c 74 ts.and..//.tool-role.tool-result
46c0 20 70 61 72 74 73 2e 20 41 6e 74 68 72 6f 70 69 63 20 72 65 6a 65 63 74 73 20 61 6e 79 74 68 69 .parts..Anthropic.rejects.anythi
46e0 6e 67 20 6f 75 74 73 69 64 65 0a 09 2f 2f 20 5b 61 2d 7a 41 2d 5a 30 2d 39 5f 2d 5d 2e 20 4f 75 ng.outside..//.[a-zA-Z0-9_-]..Ou
4700 72 20 69 6e 74 65 72 6e 61 6c 20 49 44 73 20 61 72 65 20 63 72 79 70 74 6f 2e 72 61 6e 64 6f 6d r.internal.IDs.are.crypto.random
4720 55 55 49 44 28 29 20 61 6e 64 20 73 61 66 65 2c 20 62 75 74 0a 09 2f 2f 20 75 70 73 74 72 65 61 UUID().and.safe,.but..//.upstrea
4740 6d 20 70 72 6f 76 69 64 65 72 2d 65 78 65 63 75 74 65 64 20 74 6f 6f 6c 73 20 6f 72 20 65 78 74 m.provider-executed.tools.or.ext
4760 65 72 6e 61 6c 20 73 6f 75 72 63 65 73 20 6d 61 79 20 6e 6f 74 20 62 65 2e 0a 09 6d 73 67 73 20 ernal.sources.may.not.be...msgs.
4780 3d 20 6d 73 67 73 2e 6d 61 70 28 28 6d 73 67 29 20 3d 3e 20 7b 0a 09 09 69 66 20 28 6d 73 67 2e =.msgs.map((msg).=>.{...if.(msg.
47a0 72 6f 6c 65 20 3d 3d 3d 20 22 61 73 73 69 73 74 61 6e 74 22 20 26 26 20 41 72 72 61 79 2e 69 73 role.===."assistant".&&.Array.is
47c0 41 72 72 61 79 28 6d 73 67 2e 63 6f 6e 74 65 6e 74 29 29 20 7b 0a 09 09 09 72 65 74 75 72 6e 20 Array(msg.content)).{....return.
47e0 7b 0a 09 09 09 09 2e 2e 2e 6d 73 67 2c 0a 09 09 09 09 63 6f 6e 74 65 6e 74 3a 20 6d 73 67 2e 63 {........msg,.....content:.msg.c
4800 6f 6e 74 65 6e 74 2e 6d 61 70 28 28 70 61 72 74 29 20 3d 3e 20 7b 0a 09 09 09 09 09 69 66 20 28 ontent.map((part).=>.{......if.(
4820 70 61 72 74 2e 74 79 70 65 20 3d 3d 3d 20 22 74 6f 6f 6c 2d 63 61 6c 6c 22 20 7c 7c 20 70 61 72 part.type.===."tool-call".||.par
4840 74 2e 74 79 70 65 20 3d 3d 3d 20 22 74 6f 6f 6c 2d 72 65 73 75 6c 74 22 29 20 7b 0a 09 09 09 09 t.type.===."tool-result").{.....
4860 09 09 72 65 74 75 72 6e 20 7b 20 2e 2e 2e 70 61 72 74 2c 20 74 6f 6f 6c 43 61 6c 6c 49 64 3a 20 ..return.{....part,.toolCallId:.
4880 53 43 52 55 42 5f 54 4f 4f 4c 5f 43 41 4c 4c 5f 49 44 28 70 61 72 74 2e 74 6f 6f 6c 43 61 6c 6c SCRUB_TOOL_CALL_ID(part.toolCall
48a0 49 64 29 20 7d 3b 0a 09 09 09 09 09 7d 0a 09 09 09 09 09 72 65 74 75 72 6e 20 70 61 72 74 3b 0a Id).};......}......return.part;.
48c0 09 09 09 09 7d 29 2c 0a 09 09 09 7d 3b 0a 09 09 7d 0a 09 09 69 66 20 28 6d 73 67 2e 72 6f 6c 65 ....}),....};...}...if.(msg.role
48e0 20 3d 3d 3d 20 22 74 6f 6f 6c 22 20 26 26 20 41 72 72 61 79 2e 69 73 41 72 72 61 79 28 6d 73 67 .===."tool".&&.Array.isArray(msg
4900 2e 63 6f 6e 74 65 6e 74 29 29 20 7b 0a 09 09 09 72 65 74 75 72 6e 20 7b 0a 09 09 09 09 2e 2e 2e .content)).{....return.{........
4920 6d 73 67 2c 0a 09 09 09 09 63 6f 6e 74 65 6e 74 3a 20 6d 73 67 2e 63 6f 6e 74 65 6e 74 2e 6d 61 msg,.....content:.msg.content.ma
4940 70 28 28 70 61 72 74 29 20 3d 3e 20 7b 0a 09 09 09 09 09 69 66 20 28 70 61 72 74 2e 74 79 70 65 p((part).=>.{......if.(part.type
4960 20 3d 3d 3d 20 22 74 6f 6f 6c 2d 72 65 73 75 6c 74 22 29 20 7b 0a 09 09 09 09 09 09 72 65 74 75 .===."tool-result").{.......retu
4980 72 6e 20 7b 20 2e 2e 2e 70 61 72 74 2c 20 74 6f 6f 6c 43 61 6c 6c 49 64 3a 20 53 43 52 55 42 5f rn.{....part,.toolCallId:.SCRUB_
49a0 54 4f 4f 4c 5f 43 41 4c 4c 5f 49 44 28 70 61 72 74 2e 74 6f 6f 6c 43 61 6c 6c 49 64 29 20 7d 3b TOOL_CALL_ID(part.toolCallId).};
49c0 0a 09 09 09 09 09 7d 0a 09 09 09 09 09 72 65 74 75 72 6e 20 70 61 72 74 3b 0a 09 09 09 09 7d 29 ......}......return.part;.....})
49e0 2c 0a 09 09 09 7d 3b 0a 09 09 7d 0a 09 09 72 65 74 75 72 6e 20 6d 73 67 3b 0a 09 7d 29 3b 0a 0a ,....};...}...return.msg;..});..
4a00 09 2f 2f 20 50 61 73 73 20 33 3a 20 53 70 6c 69 74 20 61 73 73 69 73 74 61 6e 74 20 6d 65 73 73 .//.Pass.3:.Split.assistant.mess
4a20 61 67 65 73 20 77 68 65 72 65 20 74 6f 6f 6c 2d 63 61 6c 6c 73 20 61 72 65 20 66 6f 6c 6c 6f 77 ages.where.tool-calls.are.follow
4a40 65 64 20 62 79 20 6e 6f 6e 2d 74 6f 6f 6c 2d 63 61 6c 6c 20 70 61 72 74 73 2e 0a 09 2f 2f 20 5b ed.by.non-tool-call.parts...//.[
4a60 74 65 78 74 2c 20 74 6f 6f 6c 2d 63 61 6c 6c 2c 20 74 65 78 74 5d 20 e2 86 92 20 5b 74 65 78 74 text,.tool-call,.text].....[text
4a80 2c 20 74 65 78 74 5d 20 2b 20 5b 74 6f 6f 6c 2d 63 61 6c 6c 5d 20 28 74 65 78 74 2d 6f 6e 6c 79 ,.text].+.[tool-call].(text-only
4aa0 20 66 69 72 73 74 2c 20 74 6f 6f 6c 73 2d 6f 6e 6c 79 20 73 65 63 6f 6e 64 29 0a 09 6d 73 67 73 .first,.tools-only.second)..msgs
4ac0 20 3d 20 6d 73 67 73 2e 66 6c 61 74 4d 61 70 28 28 6d 73 67 29 20 3d 3e 20 7b 0a 09 09 69 66 20 .=.msgs.flatMap((msg).=>.{...if.
4ae0 28 6d 73 67 2e 72 6f 6c 65 20 21 3d 3d 20 22 61 73 73 69 73 74 61 6e 74 22 20 7c 7c 20 21 41 72 (msg.role.!==."assistant".||.!Ar
4b00 72 61 79 2e 69 73 41 72 72 61 79 28 6d 73 67 2e 63 6f 6e 74 65 6e 74 29 29 20 72 65 74 75 72 6e ray.isArray(msg.content)).return
4b20 20 5b 6d 73 67 5d 3b 0a 09 09 63 6f 6e 73 74 20 70 61 72 74 73 20 3d 20 6d 73 67 2e 63 6f 6e 74 .[msg];...const.parts.=.msg.cont
4b40 65 6e 74 3b 0a 09 09 63 6f 6e 73 74 20 66 69 72 73 74 54 6f 6f 6c 43 61 6c 6c 49 64 78 20 3d 20 ent;...const.firstToolCallIdx.=.
4b60 70 61 72 74 73 2e 66 69 6e 64 49 6e 64 65 78 28 28 70 61 72 74 29 20 3d 3e 20 70 61 72 74 2e 74 parts.findIndex((part).=>.part.t
4b80 79 70 65 20 3d 3d 3d 20 22 74 6f 6f 6c 2d 63 61 6c 6c 22 29 3b 0a 09 09 69 66 20 28 66 69 72 73 ype.===."tool-call");...if.(firs
4ba0 74 54 6f 6f 6c 43 61 6c 6c 49 64 78 20 3d 3d 3d 20 2d 31 29 20 72 65 74 75 72 6e 20 5b 6d 73 67 tToolCallIdx.===.-1).return.[msg
4bc0 5d 3b 20 2f 2f 20 6e 6f 20 74 6f 6f 6c 20 63 61 6c 6c 73 20 e2 86 92 20 70 61 73 73 20 74 68 72 ];.//.no.tool.calls.....pass.thr
4be0 6f 75 67 68 0a 09 09 2f 2f 20 49 66 20 65 76 65 72 79 74 68 69 6e 67 20 66 72 6f 6d 20 74 68 65 ough...//.If.everything.from.the
4c00 20 66 69 72 73 74 20 74 6f 6f 6c 2d 63 61 6c 6c 20 6f 6e 77 61 72 64 20 69 73 20 61 6c 73 6f 20 .first.tool-call.onward.is.also.
4c20 61 20 74 6f 6f 6c 2d 63 61 6c 6c 2c 20 69 74 27 73 20 61 6c 72 65 61 64 79 20 76 61 6c 69 64 0a a.tool-call,.it's.already.valid.
4c40 09 09 69 66 20 28 21 70 61 72 74 73 2e 73 6c 69 63 65 28 66 69 72 73 74 54 6f 6f 6c 43 61 6c 6c ..if.(!parts.slice(firstToolCall
4c60 49 64 78 29 2e 73 6f 6d 65 28 28 70 61 72 74 29 20 3d 3e 20 70 61 72 74 2e 74 79 70 65 20 21 3d Idx).some((part).=>.part.type.!=
4c80 3d 20 22 74 6f 6f 6c 2d 63 61 6c 6c 22 29 29 20 72 65 74 75 72 6e 20 5b 6d 73 67 5d 3b 0a 09 09 =."tool-call")).return.[msg];...
4ca0 2f 2f 20 48 61 73 20 6e 6f 6e 2d 74 6f 6f 6c 2d 63 61 6c 6c 20 63 6f 6e 74 65 6e 74 20 41 46 54 //.Has.non-tool-call.content.AFT
4cc0 45 52 20 61 20 74 6f 6f 6c 2d 63 61 6c 6c 20 e2 86 92 20 73 70 6c 69 74 0a 09 09 63 6f 6e 73 74 ER.a.tool-call.....split...const
4ce0 20 6e 6f 6e 54 6f 6f 6c 50 61 72 74 73 20 3d 20 70 61 72 74 73 2e 66 69 6c 74 65 72 28 28 70 61 .nonToolParts.=.parts.filter((pa
4d00 72 74 29 20 3d 3e 20 70 61 72 74 2e 74 79 70 65 20 21 3d 3d 20 22 74 6f 6f 6c 2d 63 61 6c 6c 22 rt).=>.part.type.!==."tool-call"
4d20 29 3b 0a 09 09 63 6f 6e 73 74 20 74 6f 6f 6c 50 61 72 74 73 20 3d 20 70 61 72 74 73 2e 66 69 6c );...const.toolParts.=.parts.fil
4d40 74 65 72 28 28 70 61 72 74 29 20 3d 3e 20 70 61 72 74 2e 74 79 70 65 20 3d 3d 3d 20 22 74 6f 6f ter((part).=>.part.type.===."too
4d60 6c 2d 63 61 6c 6c 22 29 3b 0a 09 09 72 65 74 75 72 6e 20 5b 0a 09 09 09 7b 20 2e 2e 2e 6d 73 67 l-call");...return.[....{....msg
4d80 2c 20 63 6f 6e 74 65 6e 74 3a 20 6e 6f 6e 54 6f 6f 6c 50 61 72 74 73 20 7d 2c 0a 09 09 09 7b 20 ,.content:.nonToolParts.},....{.
4da0 2e 2e 2e 6d 73 67 2c 20 63 6f 6e 74 65 6e 74 3a 20 74 6f 6f 6c 50 61 72 74 73 20 7d 2c 0a 09 09 ...msg,.content:.toolParts.},...
4dc0 5d 3b 0a 09 7d 29 3b 0a 0a 09 72 65 74 75 72 6e 20 6d 73 67 73 3b 0a 7d 0a 0a 2f 2a 2a 0a 20 2a ];..});...return.msgs;.}../**..*
4de0 20 41 70 70 6c 79 20 41 6e 74 68 72 6f 70 69 63 20 70 72 6f 6d 70 74 2d 63 61 63 68 69 6e 67 20 .Apply.Anthropic.prompt-caching.
4e00 62 72 65 61 6b 70 6f 69 6e 74 73 20 74 6f 20 61 20 6d 65 73 73 61 67 65 20 6c 69 73 74 2e 0a 20 breakpoints.to.a.message.list...
4e20 2a 0a 20 2a 20 41 6e 74 68 72 6f 70 69 63 20 63 61 63 68 65 73 20 74 68 65 20 65 6e 74 69 72 65 *..*.Anthropic.caches.the.entire
4e40 20 72 65 71 75 65 73 74 20 70 72 65 66 69 78 20 75 70 20 74 6f 20 28 61 6e 64 20 69 6e 63 6c 75 .request.prefix.up.to.(and.inclu
4e60 64 69 6e 67 29 20 61 6e 79 20 62 6c 6f 63 6b 0a 20 2a 20 6d 61 72 6b 65 64 20 77 69 74 68 20 60 ding).any.block..*.marked.with.`
4e80 63 61 63 68 65 5f 63 6f 6e 74 72 6f 6c 60 2e 20 55 70 20 74 6f 20 34 20 62 72 65 61 6b 70 6f 69 cache_control`..Up.to.4.breakpoi
4ea0 6e 74 73 20 70 65 72 20 72 65 71 75 65 73 74 3b 20 77 65 20 75 73 65 20 74 68 72 65 65 0a 20 2a nts.per.request;.we.use.three..*
4ec0 20 28 66 69 72 73 74 20 73 79 73 74 65 6d 20 2b 20 6c 61 73 74 20 32 20 6e 6f 6e 2d 73 79 73 74 .(first.system.+.last.2.non-syst
4ee0 65 6d 29 2e 0a 20 2a 0a 20 2a 20 53 74 72 61 74 65 67 79 20 28 6d 69 72 72 6f 72 73 20 4f 70 65 em)...*..*.Strategy.(mirrors.Ope
4f00 6e 43 6f 64 65 27 73 20 60 61 70 70 6c 79 43 61 63 68 69 6e 67 60 20 69 6e 20 74 72 61 6e 73 66 nCode's.`applyCaching`.in.transf
4f20 6f 72 6d 2e 74 73 29 3a 0a 20 2a 20 20 2d 20 4d 61 72 6b 20 74 68 65 20 66 69 72 73 74 20 73 79 orm.ts):..*..-.Mark.the.first.sy
4f40 73 74 65 6d 20 6d 65 73 73 61 67 65 20 e2 86 92 20 63 61 63 68 65 73 20 73 79 73 74 65 6d 20 70 stem.message.....caches.system.p
4f60 72 6f 6d 70 74 20 28 61 6e 64 20 74 6f 6f 6c 73 2c 20 77 68 69 63 68 0a 20 2a 20 20 20 20 73 69 rompt.(and.tools,.which..*....si
4f80 74 20 62 65 66 6f 72 65 20 6d 65 73 73 61 67 65 73 20 69 6e 20 74 68 65 20 72 65 71 75 65 73 74 t.before.messages.in.the.request
4fa0 20 62 6f 64 79 29 2e 0a 20 2a 20 20 2d 20 4d 61 72 6b 20 74 68 65 20 6c 61 73 74 20 32 20 6e 6f .body)...*..-.Mark.the.last.2.no
4fc0 6e 2d 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 73 20 e2 86 92 20 72 6f 6c 6c 69 6e 67 20 63 61 n-system.messages.....rolling.ca
4fe0 63 68 65 20 74 68 61 74 20 65 78 74 65 6e 64 73 20 74 68 72 6f 75 67 68 0a 20 2a 20 20 20 20 74 che.that.extends.through..*....t
5000 68 65 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 20 65 61 63 68 20 74 75 72 6e 2e 0a 20 2a 0a 20 2a he.conversation.each.turn...*..*
5020 20 54 68 69 73 20 72 65 6c 69 65 73 20 6f 6e 20 60 74 6f 4d 6f 64 65 6c 4d 65 73 73 61 67 65 73 .This.relies.on.`toModelMessages
5040 60 20 67 72 6f 75 70 69 6e 67 20 61 20 74 75 72 6e 27 73 20 74 6f 6f 6c 20 72 65 73 75 6c 74 73 `.grouping.a.turn's.tool.results
5060 20 69 6e 74 6f 20 6f 6e 65 0a 20 2a 20 60 72 6f 6c 65 3a 20 22 74 6f 6f 6c 22 60 20 6d 65 73 73 .into.one..*.`role:."tool"`.mess
5080 61 67 65 3a 20 74 68 61 74 20 6d 61 6b 65 73 20 74 68 65 20 6c 61 73 74 20 74 77 6f 20 6e 6f 6e age:.that.makes.the.last.two.non
50a0 2d 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 73 0a 20 2a 20 60 5b 61 73 73 69 73 74 61 6e 74 28 -system.messages..*.`[assistant(
50c0 74 6f 6f 6c 2d 63 61 6c 6c 73 29 2c 20 74 6f 6f 6c 28 72 65 73 75 6c 74 73 29 5d 60 20 6d 69 64 tool-calls),.tool(results)]`.mid
50e0 2d 74 75 72 6e 2c 20 73 6f 20 74 68 65 20 74 77 6f 20 72 6f 6c 6c 69 6e 67 0a 20 2a 20 62 72 65 -turn,.so.the.two.rolling..*.bre
5100 61 6b 70 6f 69 6e 74 73 20 73 74 72 61 64 64 6c 65 20 74 68 65 20 61 73 73 69 73 74 61 6e 74 2f akpoints.straddle.the.assistant/
5120 74 6f 6f 6c 20 62 6f 75 6e 64 61 72 79 20 69 6e 73 74 65 61 64 20 6f 66 20 63 6f 6c 6c 61 70 73 tool.boundary.instead.of.collaps
5140 69 6e 67 20 6f 6e 74 6f 0a 20 2a 20 74 77 6f 20 61 64 6a 61 63 65 6e 74 20 74 6f 6f 6c 2d 72 65 ing.onto..*.two.adjacent.tool-re
5160 73 75 6c 74 20 6d 65 73 73 61 67 65 73 20 28 77 68 69 63 68 20 77 61 73 74 65 73 20 61 20 62 72 sult.messages.(which.wastes.a.br
5180 65 61 6b 70 6f 69 6e 74 20 e2 80 94 20 73 65 65 0a 20 2a 20 63 6c 61 75 64 65 2d 72 65 70 6f 72 eakpoint.....see..*.claude-repor
51a0 74 2e 6d 64 2c 20 52 6f 6f 74 20 43 61 75 73 65 20 32 29 2e 20 41 6e 74 68 72 6f 70 69 63 20 63 t.md,.Root.Cause.2)..Anthropic.c
51c0 61 63 68 65 73 20 74 68 65 20 77 68 6f 6c 65 20 70 72 65 66 69 78 20 75 70 20 74 6f 20 61 6e 64 aches.the.whole.prefix.up.to.and
51e0 0a 20 2a 20 69 6e 63 6c 75 64 69 6e 67 20 61 20 6d 61 72 6b 65 64 20 62 6c 6f 63 6b 2c 20 73 6f ..*.including.a.marked.block,.so
5200 20 6d 61 72 6b 69 6e 67 20 74 68 65 20 67 72 6f 75 70 65 64 20 74 6f 6f 6c 20 6d 65 73 73 61 67 .marking.the.grouped.tool.messag
5220 65 20 65 78 74 65 6e 64 73 20 74 68 65 0a 20 2a 20 63 61 63 68 65 64 20 70 72 65 66 69 78 20 61 e.extends.the..*.cached.prefix.a
5240 63 72 6f 73 73 20 65 76 65 72 79 20 72 65 73 75 6c 74 20 74 68 65 20 74 75 72 6e 20 70 72 6f 64 cross.every.result.the.turn.prod
5260 75 63 65 64 2e 0a 20 2a 0a 20 2a 20 4f 6e 6c 79 20 61 70 70 6c 69 65 64 20 66 6f 72 20 74 68 65 uced...*..*.Only.applied.for.the
5280 20 41 6e 74 68 72 6f 70 69 63 20 70 72 6f 76 69 64 65 72 2e 20 4f 70 65 6e 43 6f 64 65 20 5a 65 .Anthropic.provider..OpenCode.Ze
52a0 6e 27 73 20 4f 70 65 6e 41 49 2d 63 6f 6d 70 61 74 69 62 6c 65 0a 20 2a 20 65 6e 64 70 6f 69 6e n's.OpenAI-compatible..*.endpoin
52c0 74 20 28 60 2f 7a 65 6e 2f 76 31 2f 63 68 61 74 2f 63 6f 6d 70 6c 65 74 69 6f 6e 73 60 29 20 62 t.(`/zen/v1/chat/completions`).b
52e0 61 63 6b 73 20 6d 6f 64 65 6c 73 20 6c 69 6b 65 20 4d 69 6e 69 4d 61 78 2c 20 47 4c 4d 2c 20 4b acks.models.like.MiniMax,.GLM,.K
5300 69 6d 69 2c 0a 20 2a 20 47 72 6f 6b 2c 20 65 74 63 2e 20 e2 80 94 20 74 68 6f 73 65 20 75 70 73 imi,..*.Grok,.etc......those.ups
5320 74 72 65 61 6d 73 20 64 6f 20 61 75 74 6f 6d 61 74 69 63 20 70 72 65 66 69 78 20 63 61 63 68 69 treams.do.automatic.prefix.cachi
5340 6e 67 20 73 65 72 76 65 72 2d 73 69 64 65 20 61 6e 64 0a 20 2a 20 64 6f 6e 27 74 20 61 63 63 65 ng.server-side.and..*.don't.acce
5360 70 74 20 60 63 61 63 68 65 5f 63 6f 6e 74 72 6f 6c 60 20 6d 61 72 6b 65 72 73 2e 20 4f 70 65 6e pt.`cache_control`.markers..Open
5380 43 6f 64 65 27 73 20 6f 77 6e 20 74 72 61 6e 73 66 6f 72 6d 2e 74 73 20 67 61 74 65 73 0a 20 2a Code's.own.transform.ts.gates..*
53a0 20 60 61 70 70 6c 79 43 61 63 68 69 6e 67 60 20 6f 6e 20 41 6e 74 68 72 6f 70 69 63 2d 66 61 6d .`applyCaching`.on.Anthropic-fam
53c0 69 6c 79 20 64 65 74 65 63 74 69 6f 6e 20 66 6f 72 20 74 68 65 20 73 61 6d 65 20 72 65 61 73 6f ily.detection.for.the.same.reaso
53e0 6e 2e 20 4d 6f 64 65 6c 73 0a 20 2a 20 73 65 72 76 65 64 20 76 69 61 20 60 40 61 69 2d 73 64 6b n..Models..*.served.via.`@ai-sdk
5400 2f 6f 70 65 6e 61 69 60 20 28 47 50 54 29 20 61 6e 64 20 60 40 61 69 2d 73 64 6b 2f 67 6f 6f 67 /openai`.(GPT).and.`@ai-sdk/goog
5420 6c 65 60 20 28 47 65 6d 69 6e 69 29 20 6c 69 6b 65 77 69 73 65 0a 20 2a 20 75 73 65 20 73 65 72 le`.(Gemini).likewise..*.use.ser
5440 76 65 72 2d 73 69 64 65 20 61 75 74 6f 6d 61 74 69 63 20 63 61 63 68 69 6e 67 2e 0a 20 2a 2f 0a ver-side.automatic.caching...*/.
5460 66 75 6e 63 74 69 6f 6e 20 61 70 70 6c 79 41 6e 74 68 72 6f 70 69 63 43 61 63 68 69 6e 67 28 6d function.applyAnthropicCaching(m
5480 73 67 73 3a 20 4d 6f 64 65 6c 4d 65 73 73 61 67 65 5b 5d 29 3a 20 76 6f 69 64 20 7b 0a 09 63 6f sgs:.ModelMessage[]):.void.{..co
54a0 6e 73 74 20 74 61 72 67 65 74 73 20 3d 20 6e 65 77 20 53 65 74 3c 4d 6f 64 65 6c 4d 65 73 73 61 nst.targets.=.new.Set<ModelMessa
54c0 67 65 3e 28 29 3b 0a 0a 09 63 6f 6e 73 74 20 73 79 73 74 65 6d 4d 73 67 73 20 3d 20 6d 73 67 73 ge>();...const.systemMsgs.=.msgs
54e0 2e 66 69 6c 74 65 72 28 28 6d 29 20 3d 3e 20 6d 2e 72 6f 6c 65 20 3d 3d 3d 20 22 73 79 73 74 65 .filter((m).=>.m.role.===."syste
5500 6d 22 29 2e 73 6c 69 63 65 28 30 2c 20 32 29 3b 0a 09 66 6f 72 20 28 63 6f 6e 73 74 20 6d 20 6f m").slice(0,.2);..for.(const.m.o
5520 66 20 73 79 73 74 65 6d 4d 73 67 73 29 20 74 61 72 67 65 74 73 2e 61 64 64 28 6d 29 3b 0a 0a 09 f.systemMsgs).targets.add(m);...
5540 63 6f 6e 73 74 20 6e 6f 6e 53 79 73 74 65 6d 20 3d 20 6d 73 67 73 2e 66 69 6c 74 65 72 28 28 6d const.nonSystem.=.msgs.filter((m
5560 29 20 3d 3e 20 6d 2e 72 6f 6c 65 20 21 3d 3d 20 22 73 79 73 74 65 6d 22 29 2e 73 6c 69 63 65 28 ).=>.m.role.!==."system").slice(
5580 2d 32 29 3b 0a 09 66 6f 72 20 28 63 6f 6e 73 74 20 6d 20 6f 66 20 6e 6f 6e 53 79 73 74 65 6d 29 -2);..for.(const.m.of.nonSystem)
55a0 20 74 61 72 67 65 74 73 2e 61 64 64 28 6d 29 3b 0a 0a 09 66 6f 72 20 28 63 6f 6e 73 74 20 6d 73 .targets.add(m);...for.(const.ms
55c0 67 20 6f 66 20 74 61 72 67 65 74 73 29 20 7b 0a 09 09 6d 73 67 2e 70 72 6f 76 69 64 65 72 4f 70 g.of.targets).{...msg.providerOp
55e0 74 69 6f 6e 73 20 3d 20 7b 0a 09 09 09 2e 2e 2e 6d 73 67 2e 70 72 6f 76 69 64 65 72 4f 70 74 69 tions.=.{.......msg.providerOpti
5600 6f 6e 73 2c 0a 09 09 09 61 6e 74 68 72 6f 70 69 63 3a 20 7b 0a 09 09 09 09 2e 2e 2e 28 6d 73 67 ons,....anthropic:.{........(msg
5620 2e 70 72 6f 76 69 64 65 72 4f 70 74 69 6f 6e 73 3f 2e 61 6e 74 68 72 6f 70 69 63 20 3f 3f 20 7b .providerOptions?.anthropic.??.{
5640 7d 29 2c 0a 09 09 09 09 63 61 63 68 65 43 6f 6e 74 72 6f 6c 3a 20 7b 20 74 79 70 65 3a 20 22 65 }),.....cacheControl:.{.type:."e
5660 70 68 65 6d 65 72 61 6c 22 20 7d 2c 0a 09 09 09 7d 2c 0a 09 09 7d 3b 0a 09 7d 0a 7d 0a 0a 66 75 phemeral".},....},...};..}.}..fu
5680 6e 63 74 69 6f 6e 20 66 6f 72 6d 61 74 45 72 72 6f 72 28 65 72 72 3a 20 75 6e 6b 6e 6f 77 6e 2c nction.formatError(err:.unknown,
56a0 20 63 6f 6e 66 69 67 3a 20 41 67 65 6e 74 43 6f 6e 66 69 67 29 3a 20 73 74 72 69 6e 67 20 7b 0a .config:.AgentConfig):.string.{.
56c0 09 63 6f 6e 73 74 20 63 6f 6e 74 65 78 74 20 3d 20 60 5b 6d 6f 64 65 6c 3d 24 7b 63 6f 6e 66 69 .const.context.=.`[model=${confi
56e0 67 2e 6d 6f 64 65 6c 7d 2c 20 62 61 73 65 55 52 4c 3d 24 7b 63 6f 6e 66 69 67 2e 62 61 73 65 55 g.model},.baseURL=${config.baseU
5700 52 4c 7d 5d 60 3b 0a 0a 09 69 66 20 28 65 72 72 20 69 6e 73 74 61 6e 63 65 6f 66 20 45 72 72 6f RL}]`;...if.(err.instanceof.Erro
5720 72 29 20 7b 0a 09 09 63 6f 6e 73 74 20 63 61 75 73 65 20 3d 20 65 72 72 2e 63 61 75 73 65 20 3f r).{...const.cause.=.err.cause.?
5740 20 60 20 7c 20 63 61 75 73 65 3a 20 24 7b 4a 53 4f 4e 2e 73 74 72 69 6e 67 69 66 79 28 65 72 72 .`.|.cause:.${JSON.stringify(err
5760 2e 63 61 75 73 65 29 7d 60 20 3a 20 22 22 3b 0a 09 09 2f 2f 20 41 49 20 53 44 4b 20 65 72 72 6f .cause)}`.:."";...//.AI.SDK.erro
5780 72 73 20 6f 66 74 65 6e 20 68 61 76 65 20 73 74 61 74 75 73 43 6f 64 65 2c 20 72 65 73 70 6f 6e rs.often.have.statusCode,.respon
57a0 73 65 42 6f 64 79 2c 20 6f 72 20 75 72 6c 20 70 72 6f 70 65 72 74 69 65 73 0a 09 09 63 6f 6e 73 seBody,.or.url.properties...cons
57c0 74 20 65 78 74 72 61 73 3a 20 73 74 72 69 6e 67 5b 5d 20 3d 20 5b 5d 3b 0a 09 09 63 6f 6e 73 74 t.extras:.string[].=.[];...const
57e0 20 65 72 72 52 65 63 6f 72 64 20 3d 20 65 72 72 20 61 73 20 75 6e 6b 6e 6f 77 6e 20 61 73 20 52 .errRecord.=.err.as.unknown.as.R
5800 65 63 6f 72 64 3c 73 74 72 69 6e 67 2c 20 75 6e 6b 6e 6f 77 6e 3e 3b 0a 09 09 69 66 20 28 22 73 ecord<string,.unknown>;...if.("s
5820 74 61 74 75 73 43 6f 64 65 22 20 69 6e 20 65 72 72 52 65 63 6f 72 64 29 20 65 78 74 72 61 73 2e tatusCode".in.errRecord).extras.
5840 70 75 73 68 28 60 73 74 61 74 75 73 3d 24 7b 65 72 72 52 65 63 6f 72 64 2e 73 74 61 74 75 73 43 push(`status=${errRecord.statusC
5860 6f 64 65 7d 60 29 3b 0a 09 09 69 66 20 28 22 75 72 6c 22 20 69 6e 20 65 72 72 52 65 63 6f 72 64 ode}`);...if.("url".in.errRecord
5880 29 20 65 78 74 72 61 73 2e 70 75 73 68 28 60 75 72 6c 3d 24 7b 65 72 72 52 65 63 6f 72 64 2e 75 ).extras.push(`url=${errRecord.u
58a0 72 6c 7d 60 29 3b 0a 09 09 69 66 20 28 22 72 65 73 70 6f 6e 73 65 42 6f 64 79 22 20 69 6e 20 65 rl}`);...if.("responseBody".in.e
58c0 72 72 52 65 63 6f 72 64 29 20 65 78 74 72 61 73 2e 70 75 73 68 28 60 62 6f 64 79 3d 24 7b 4a 53 rrRecord).extras.push(`body=${JS
58e0 4f 4e 2e 73 74 72 69 6e 67 69 66 79 28 65 72 72 52 65 63 6f 72 64 2e 72 65 73 70 6f 6e 73 65 42 ON.stringify(errRecord.responseB
5900 6f 64 79 29 7d 60 29 3b 0a 09 09 69 66 20 28 22 72 65 73 70 6f 6e 73 65 48 65 61 64 65 72 73 22 ody)}`);...if.("responseHeaders"
5920 20 69 6e 20 65 72 72 52 65 63 6f 72 64 29 0a 09 09 09 65 78 74 72 61 73 2e 70 75 73 68 28 60 68 .in.errRecord)....extras.push(`h
5940 65 61 64 65 72 73 3d 24 7b 4a 53 4f 4e 2e 73 74 72 69 6e 67 69 66 79 28 65 72 72 52 65 63 6f 72 eaders=${JSON.stringify(errRecor
5960 64 2e 72 65 73 70 6f 6e 73 65 48 65 61 64 65 72 73 29 7d 60 29 3b 0a 0a 09 09 63 6f 6e 73 74 20 d.responseHeaders)}`);....const.
5980 64 65 74 61 69 6c 20 3d 20 65 78 74 72 61 73 2e 6c 65 6e 67 74 68 20 3e 20 30 20 3f 20 60 20 28 detail.=.extras.length.>.0.?.`.(
59a0 24 7b 65 78 74 72 61 73 2e 6a 6f 69 6e 28 22 2c 20 22 29 7d 29 60 20 3a 20 22 22 3b 0a 09 09 72 ${extras.join(",.")})`.:."";...r
59c0 65 74 75 72 6e 20 60 24 7b 65 72 72 2e 6d 65 73 73 61 67 65 7d 24 7b 64 65 74 61 69 6c 7d 24 7b eturn.`${err.message}${detail}${
59e0 63 61 75 73 65 7d 20 24 7b 63 6f 6e 74 65 78 74 7d 60 3b 0a 09 7d 0a 0a 09 72 65 74 75 72 6e 20 cause}.${context}`;..}...return.
5a00 60 24 7b 53 74 72 69 6e 67 28 65 72 72 29 7d 20 24 7b 63 6f 6e 74 65 78 74 7d 60 3b 0a 7d 0a 0a `${String(err)}.${context}`;.}..
5a20 2f 2a 2a 0a 20 2a 20 42 75 69 6c 64 20 74 68 65 20 41 6e 74 68 72 6f 70 69 63 20 60 70 72 6f 76 /**..*.Build.the.Anthropic.`prov
5a40 69 64 65 72 4f 70 74 69 6f 6e 73 2e 61 6e 74 68 72 6f 70 69 63 60 20 74 68 69 6e 6b 69 6e 67 20 iderOptions.anthropic`.thinking.
5a60 63 6f 6e 66 69 67 20 66 6f 72 20 61 20 67 69 76 65 6e 0a 20 2a 20 6d 6f 64 65 6c 20 2b 20 72 65 config.for.a.given..*.model.+.re
5a80 61 73 6f 6e 69 6e 67 20 65 66 66 6f 72 74 2e 20 44 65 74 65 63 74 69 6f 6e 20 6d 69 72 72 6f 72 asoning.effort..Detection.mirror
5aa0 73 20 6f 70 65 6e 63 6f 64 65 27 73 20 60 70 72 6f 76 69 64 65 72 2f 74 72 61 6e 73 66 6f 72 6d s.opencode's.`provider/transform
5ac0 2e 74 73 60 0a 20 2a 20 28 60 61 6e 74 68 72 6f 70 69 63 4f 70 75 73 34 37 4f 72 4c 61 74 65 72 .ts`..*.(`anthropicOpus47OrLater
5ae0 60 20 2b 20 60 61 6e 74 68 72 6f 70 69 63 41 64 61 70 74 69 76 65 45 66 66 6f 72 74 73 60 29 3a `.+.`anthropicAdaptiveEfforts`):
5b00 0a 20 2a 0a 20 2a 20 20 2d 20 41 44 41 50 54 49 56 45 20 6d 6f 64 65 6c 73 20 65 6d 69 74 20 60 ..*..*..-.ADAPTIVE.models.emit.`
5b20 7b 20 74 68 69 6e 6b 69 6e 67 3a 20 7b 20 74 79 70 65 3a 20 22 61 64 61 70 74 69 76 65 22 20 7d {.thinking:.{.type:."adaptive".}
5b40 2c 20 65 66 66 6f 72 74 20 7d 60 20 61 6e 64 20 70 69 63 6b 0a 20 2a 20 20 20 20 74 68 65 69 72 ,.effort.}`.and.pick..*....their
5b60 20 6f 77 6e 20 74 68 69 6e 6b 69 6e 67 20 62 75 64 67 65 74 20 77 69 74 68 69 6e 20 60 6d 61 78 .own.thinking.budget.within.`max
5b80 4f 75 74 70 75 74 54 6f 6b 65 6e 73 60 2e 20 41 20 6d 6f 64 65 6c 20 69 73 20 61 64 61 70 74 69 OutputTokens`..A.model.is.adapti
5ba0 76 65 20 77 68 65 6e 0a 20 2a 20 20 20 20 69 74 20 69 73 20 4f 70 75 73 20 34 2e 37 2b 20 28 70 ve.when..*....it.is.Opus.4.7+.(p
5bc0 61 72 73 65 64 20 66 72 6f 6d 20 74 68 65 20 69 64 29 20 4f 52 20 4f 70 75 73 2f 53 6f 6e 6e 65 arsed.from.the.id).OR.Opus/Sonne
5be0 74 20 34 2e 36 20 28 6d 61 74 63 68 65 64 20 62 79 20 69 64 0a 20 2a 20 20 20 20 73 75 62 73 74 t.4.6.(matched.by.id..*....subst
5c00 72 69 6e 67 20 e2 80 94 20 74 68 65 72 65 20 69 73 20 6e 6f 20 6e 65 77 65 72 20 53 6f 6e 6e 65 ring.....there.is.no.newer.Sonne
5c20 74 20 74 6f 20 67 65 6e 65 72 61 6c 69 73 65 20 79 65 74 29 2e 0a 20 2a 20 20 20 20 20 20 2d 20 t.to.generalise.yet)...*......-.
5c40 60 64 69 73 70 6c 61 79 3a 20 22 73 75 6d 6d 61 72 69 7a 65 64 22 60 20 69 73 20 61 64 64 65 64 `display:."summarized"`.is.added
5c60 20 4f 4e 4c 59 20 66 6f 72 20 4f 70 75 73 20 34 2e 37 2b 2e 20 54 68 6f 73 65 20 6d 6f 64 65 6c .ONLY.for.Opus.4.7+..Those.model
5c80 73 0a 20 2a 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 20 74 6f 20 60 64 69 73 70 6c 61 79 3a s..*........default.to.`display:
5ca0 20 22 6f 6d 69 74 74 65 64 22 60 20 28 4e 4f 20 74 68 69 6e 6b 69 6e 67 20 73 74 72 65 61 6d 65 ."omitted"`.(NO.thinking.streame
5cc0 64 20 74 6f 20 75 73 29 2c 20 73 6f 20 74 68 65 0a 20 2a 20 20 20 20 20 20 20 20 66 6c 61 67 20 d.to.us),.so.the..*........flag.
5ce0 6d 75 73 74 20 62 65 20 66 6f 72 63 65 64 20 74 6f 20 73 75 72 66 61 63 65 20 74 68 69 6e 6b 69 must.be.forced.to.surface.thinki
5d00 6e 67 20 69 6e 20 74 68 65 20 55 49 2e 20 4f 70 75 73 2f 53 6f 6e 6e 65 74 20 34 2e 36 0a 20 2a ng.in.the.UI..Opus/Sonnet.4.6..*
5d20 20 20 20 20 20 20 20 20 73 74 72 65 61 6d 20 74 68 69 6e 6b 69 6e 67 20 77 69 74 68 6f 75 74 20 ........stream.thinking.without.
5d40 69 74 20 28 6f 70 65 6e 63 6f 64 65 20 6f 6d 69 74 73 20 60 64 69 73 70 6c 61 79 60 20 74 68 65 it.(opencode.omits.`display`.the
5d60 72 65 20 74 6f 6f 29 2e 0a 20 2a 20 20 20 20 20 20 2d 20 60 65 66 66 6f 72 74 60 20 28 73 69 62 re.too)...*......-.`effort`.(sib
5d80 6c 69 6e 67 20 6f 66 20 60 74 68 69 6e 6b 69 6e 67 60 29 20 74 65 6c 6c 73 20 61 64 61 70 74 69 ling.of.`thinking`).tells.adapti
5da0 76 65 20 68 6f 77 20 68 61 72 64 20 74 6f 20 74 68 69 6e 6b 2e 0a 20 2a 20 20 2d 20 41 6c 6c 20 ve.how.hard.to.think...*..-.All.
5dc0 4f 54 48 45 52 20 43 6c 61 75 64 65 20 6d 6f 64 65 6c 73 20 75 73 65 20 63 6c 61 73 73 69 63 20 OTHER.Claude.models.use.classic.
5de0 60 7b 20 74 68 69 6e 6b 69 6e 67 3a 20 7b 20 74 79 70 65 3a 20 22 65 6e 61 62 6c 65 64 22 2c 0a `{.thinking:.{.type:."enabled",.
5e00 20 2a 20 20 20 20 62 75 64 67 65 74 54 6f 6b 65 6e 73 20 7d 20 7d 60 2e 20 54 68 65 20 62 75 64 .*....budgetTokens.}.}`..The.bud
5e20 67 65 74 20 69 73 20 61 20 63 65 69 6c 69 6e 67 2c 20 6e 6f 74 20 61 20 72 65 71 75 69 72 65 6d get.is.a.ceiling,.not.a.requirem
5e40 65 6e 74 20 e2 80 94 20 74 68 65 20 6d 6f 64 65 6c 0a 20 2a 20 20 20 20 73 65 6c 66 2d 72 65 67 ent.....the.model..*....self-reg
5e60 75 6c 61 74 65 73 20 74 68 69 6e 6b 69 6e 67 20 76 73 20 72 65 73 70 6f 6e 73 65 20 77 69 74 68 ulates.thinking.vs.response.with
5e80 69 6e 20 60 6d 61 78 4f 75 74 70 75 74 54 6f 6b 65 6e 73 60 2e 0a 20 2a 0a 20 2a 20 52 65 74 75 in.`maxOutputTokens`...*..*.Retu
5ea0 72 6e 65 64 20 61 73 20 63 6f 6e 63 72 65 74 65 20 6f 62 6a 65 63 74 20 73 68 61 70 65 73 20 28 rned.as.concrete.object.shapes.(
5ec0 6e 6f 20 6f 70 74 69 6f 6e 61 6c 2f 60 75 6e 64 65 66 69 6e 65 64 60 20 70 72 6f 70 65 72 74 69 no.optional/`undefined`.properti
5ee0 65 73 29 20 73 6f 20 74 68 65 0a 20 2a 20 72 65 73 75 6c 74 20 69 73 20 61 20 63 6c 65 61 6e 20 es).so.the..*.result.is.a.clean.
5f00 60 52 65 63 6f 72 64 3c 73 74 72 69 6e 67 2c 20 4a 53 4f 4e 56 61 6c 75 65 3e 60 20 66 6f 72 20 `Record<string,.JSONValue>`.for.
5f20 60 70 72 6f 76 69 64 65 72 4f 70 74 69 6f 6e 73 2e 61 6e 74 68 72 6f 70 69 63 60 2e 0a 20 2a 20 `providerOptions.anthropic`...*.
5f40 43 61 6c 6c 65 72 73 20 6f 6e 6c 79 20 69 6e 76 6f 6b 65 20 74 68 69 73 20 77 68 65 6e 20 60 65 Callers.only.invoke.this.when.`e
5f60 66 66 6f 72 74 20 21 3d 3d 20 22 6e 6f 6e 65 22 60 2e 0a 20 2a 2f 0a 65 78 70 6f 72 74 20 66 75 ffort.!==."none"`...*/.export.fu
5f80 6e 63 74 69 6f 6e 20 61 6e 74 68 72 6f 70 69 63 54 68 69 6e 6b 69 6e 67 50 72 6f 76 69 64 65 72 nction.anthropicThinkingProvider
5fa0 4f 70 74 69 6f 6e 73 28 6d 6f 64 65 6c 3a 20 73 74 72 69 6e 67 2c 20 65 66 66 6f 72 74 3a 20 52 Options(model:.string,.effort:.R
5fc0 65 61 73 6f 6e 69 6e 67 45 66 66 6f 72 74 29 20 7b 0a 09 63 6f 6e 73 74 20 6f 70 75 73 56 65 72 easoningEffort).{..const.opusVer
5fe0 73 69 6f 6e 20 3d 20 2f 6f 70 75 73 2d 28 5c 64 2b 29 5b 2e 2d 5d 28 5c 64 2b 29 28 3f 3a 5b 2e sion.=./opus-(\d+)[.-](\d+)(?:[.
6000 40 2d 5d 7c 24 29 2f 69 2e 65 78 65 63 28 6d 6f 64 65 6c 29 3b 0a 09 63 6f 6e 73 74 20 69 73 4f @-]|$)/i.exec(model);..const.isO
6020 70 75 73 34 37 4f 72 4c 61 74 65 72 20 3d 20 6f 70 75 73 56 65 72 73 69 6f 6e 0a 09 09 3f 20 4e pus47OrLater.=.opusVersion...?.N
6040 75 6d 62 65 72 28 6f 70 75 73 56 65 72 73 69 6f 6e 5b 31 5d 29 20 3e 20 34 20 7c 7c 20 28 4e 75 umber(opusVersion[1]).>.4.||.(Nu
6060 6d 62 65 72 28 6f 70 75 73 56 65 72 73 69 6f 6e 5b 31 5d 29 20 3d 3d 3d 20 34 20 26 26 20 4e 75 mber(opusVersion[1]).===.4.&&.Nu
6080 6d 62 65 72 28 6f 70 75 73 56 65 72 73 69 6f 6e 5b 32 5d 29 20 3e 3d 20 37 29 0a 09 09 3a 20 66 mber(opusVersion[2]).>=.7)...:.f
60a0 61 6c 73 65 3b 0a 09 63 6f 6e 73 74 20 69 73 41 64 61 70 74 69 76 65 20 3d 0a 09 09 69 73 4f 70 alse;..const.isAdaptive.=...isOp
60c0 75 73 34 37 4f 72 4c 61 74 65 72 20 7c 7c 0a 09 09 5b 22 6f 70 75 73 2d 34 2d 36 22 2c 20 22 6f us47OrLater.||...["opus-4-6",."o
60e0 70 75 73 2d 34 2e 36 22 2c 20 22 73 6f 6e 6e 65 74 2d 34 2d 36 22 2c 20 22 73 6f 6e 6e 65 74 2d pus-4.6",."sonnet-4-6",."sonnet-
6100 34 2e 36 22 5d 2e 73 6f 6d 65 28 28 73 29 20 3d 3e 20 6d 6f 64 65 6c 2e 69 6e 63 6c 75 64 65 73 4.6"].some((s).=>.model.includes
6120 28 73 29 29 3b 0a 0a 09 69 66 20 28 69 73 41 64 61 70 74 69 76 65 29 20 7b 0a 09 09 72 65 74 75 (s));...if.(isAdaptive).{...retu
6140 72 6e 20 69 73 4f 70 75 73 34 37 4f 72 4c 61 74 65 72 0a 09 09 09 3f 20 7b 20 74 68 69 6e 6b 69 rn.isOpus47OrLater....?.{.thinki
6160 6e 67 3a 20 7b 20 74 79 70 65 3a 20 22 61 64 61 70 74 69 76 65 22 20 61 73 20 63 6f 6e 73 74 2c ng:.{.type:."adaptive".as.const,
6180 20 64 69 73 70 6c 61 79 3a 20 22 73 75 6d 6d 61 72 69 7a 65 64 22 20 61 73 20 63 6f 6e 73 74 20 .display:."summarized".as.const.
61a0 7d 2c 20 65 66 66 6f 72 74 20 7d 0a 09 09 09 3a 20 7b 20 74 68 69 6e 6b 69 6e 67 3a 20 7b 20 74 },.effort.}....:.{.thinking:.{.t
61c0 79 70 65 3a 20 22 61 64 61 70 74 69 76 65 22 20 61 73 20 63 6f 6e 73 74 20 7d 2c 20 65 66 66 6f ype:."adaptive".as.const.},.effo
61e0 72 74 20 7d 3b 0a 09 7d 0a 0a 09 63 6f 6e 73 74 20 62 75 64 67 65 74 54 6f 6b 65 6e 73 20 3d 0a rt.};..}...const.budgetTokens.=.
6200 09 09 65 66 66 6f 72 74 20 3d 3d 3d 20 22 6d 61 78 22 0a 09 09 09 3f 20 33 31 39 39 39 0a 09 09 ..effort.===."max"....?.31999...
6220 09 3a 20 65 66 66 6f 72 74 20 3d 3d 3d 20 22 78 68 69 67 68 22 0a 09 09 09 09 3f 20 32 34 30 30 .:.effort.===."xhigh".....?.2400
6240 30 0a 09 09 09 09 3a 20 65 66 66 6f 72 74 20 3d 3d 3d 20 22 68 69 67 68 22 0a 09 09 09 09 09 3f 0.....:.effort.===."high"......?
6260 20 31 36 30 30 30 0a 09 09 09 09 09 3a 20 65 66 66 6f 72 74 20 3d 3d 3d 20 22 6d 65 64 69 75 6d .16000......:.effort.===."medium
6280 22 0a 09 09 09 09 09 09 3f 20 35 30 30 30 0a 09 09 09 09 09 09 3a 20 65 66 66 6f 72 74 20 3d 3d ".......?.5000.......:.effort.==
62a0 3d 20 22 6c 6f 77 22 0a 09 09 09 09 09 09 09 3f 20 32 30 30 30 0a 09 09 09 09 09 09 09 3a 20 30 =."low"........?.2000........:.0
62c0 3b 0a 09 72 65 74 75 72 6e 20 7b 20 74 68 69 6e 6b 69 6e 67 3a 20 7b 20 74 79 70 65 3a 20 22 65 ;..return.{.thinking:.{.type:."e
62e0 6e 61 62 6c 65 64 22 20 61 73 20 63 6f 6e 73 74 2c 20 62 75 64 67 65 74 54 6f 6b 65 6e 73 20 7d nabled".as.const,.budgetTokens.}
6300 20 7d 3b 0a 7d 0a 0a 63 6f 6e 73 74 20 4d 41 58 5f 53 54 45 50 53 20 3d 20 35 30 3b 0a 0a 2f 2a .};.}..const.MAX_STEPS.=.50;../*
6320 2a 0a 20 2a 20 54 68 65 20 73 69 6e 67 6c 65 20 74 72 69 76 69 61 6c 20 74 68 72 6f 77 61 77 61 *..*.The.single.trivial.throwawa
6340 79 20 75 73 65 72 20 74 75 72 6e 20 61 70 70 65 6e 64 65 64 20 74 6f 20 61 20 63 61 63 68 65 2d y.user.turn.appended.to.a.cache-
6360 77 61 72 6d 69 6e 67 20 72 65 70 6c 61 79 2e 0a 20 2a 20 49 74 73 20 6f 6e 6c 79 20 70 75 72 70 warming.replay...*.Its.only.purp
6380 6f 73 65 20 69 73 20 74 6f 20 67 69 76 65 20 74 68 65 20 70 72 6f 76 69 64 65 72 20 61 20 63 68 ose.is.to.give.the.provider.a.ch
63a0 65 61 70 20 66 69 6e 61 6c 20 74 75 72 6e 20 74 6f 20 72 65 73 70 6f 6e 64 20 74 6f 0a 20 2a 20 eap.final.turn.to.respond.to..*.
63c0 77 68 69 6c 65 20 74 68 65 20 49 44 45 4e 54 49 43 41 4c 20 63 61 63 68 65 64 20 70 72 65 66 69 while.the.IDENTICAL.cached.prefi
63e0 78 20 28 73 79 73 74 65 6d 20 2b 20 74 6f 6f 6c 73 20 2b 20 74 68 65 20 74 61 62 27 73 20 72 65 x.(system.+.tools.+.the.tab's.re
6400 61 6c 20 68 69 73 74 6f 72 79 29 0a 20 2a 20 69 73 20 72 65 2d 73 65 6e 74 20 e2 80 94 20 72 65 al.history)..*.is.re-sent.....re
6420 67 69 73 74 65 72 69 6e 67 20 61 20 63 61 63 68 65 20 52 45 41 44 20 74 68 61 74 20 72 65 66 72 gistering.a.cache.READ.that.refr
6440 65 73 68 65 73 20 74 68 65 20 70 72 6f 76 69 64 65 72 27 73 20 7e 35 2d 6d 69 6e 0a 20 2a 20 70 eshes.the.provider's.~5-min..*.p
6460 72 6f 6d 70 74 2d 63 61 63 68 65 20 54 54 4c 2e 20 4e 65 76 65 72 20 70 65 72 73 69 73 74 65 64 rompt-cache.TTL..Never.persisted
6480 3b 20 6e 65 76 65 72 20 73 68 6f 77 6e 20 74 6f 20 74 68 65 20 75 73 65 72 2e 0a 20 2a 2f 0a 63 ;.never.shown.to.the.user...*/.c
64a0 6f 6e 73 74 20 57 41 52 4d 5f 43 41 43 48 45 5f 50 52 4f 42 45 5f 54 45 58 54 20 3d 20 22 72 65 onst.WARM_CACHE_PROBE_TEXT.=."re
64c0 70 6c 79 20 77 69 74 68 20 6a 75 73 74 20 61 20 2e 22 3b 0a 0a 65 78 70 6f 72 74 20 63 6c 61 73 ply.with.just.a..";..export.clas
64e0 73 20 41 67 65 6e 74 20 7b 0a 09 73 74 61 74 75 73 3a 20 41 67 65 6e 74 53 74 61 74 75 73 20 3d s.Agent.{..status:.AgentStatus.=
6500 20 22 69 64 6c 65 22 3b 0a 09 6d 65 73 73 61 67 65 73 3a 20 43 68 61 74 4d 65 73 73 61 67 65 5b ."idle";..messages:.ChatMessage[
6520 5d 20 3d 20 5b 5d 3b 0a 0a 09 70 72 69 76 61 74 65 20 63 6f 6e 66 69 67 3a 20 41 67 65 6e 74 43 ].=.[];...private.config:.AgentC
6540 6f 6e 66 69 67 3b 0a 09 70 72 69 76 61 74 65 20 71 75 65 75 65 43 61 6c 6c 62 61 63 6b 73 3f 3a onfig;..private.queueCallbacks?:
6560 20 51 75 65 75 65 43 61 6c 6c 62 61 63 6b 73 3b 0a 0a 09 63 6f 6e 73 74 72 75 63 74 6f 72 28 63 .QueueCallbacks;...constructor(c
6580 6f 6e 66 69 67 3a 20 41 67 65 6e 74 43 6f 6e 66 69 67 2c 20 71 75 65 75 65 43 61 6c 6c 62 61 63 onfig:.AgentConfig,.queueCallbac
65a0 6b 73 3f 3a 20 51 75 65 75 65 43 61 6c 6c 62 61 63 6b 73 29 20 7b 0a 09 09 74 68 69 73 2e 63 6f ks?:.QueueCallbacks).{...this.co
65c0 6e 66 69 67 20 3d 20 63 6f 6e 66 69 67 3b 0a 09 09 74 68 69 73 2e 71 75 65 75 65 43 61 6c 6c 62 nfig.=.config;...this.queueCallb
65e0 61 63 6b 73 20 3d 20 71 75 65 75 65 43 61 6c 6c 62 61 63 6b 73 3b 0a 09 7d 0a 0a 09 70 72 69 76 acks.=.queueCallbacks;..}...priv
6600 61 74 65 20 61 73 79 6e 63 20 65 78 65 63 75 74 65 54 6f 6f 6c 57 69 74 68 53 74 72 65 61 6d 69 ate.async.executeToolWithStreami
6620 6e 67 28 0a 09 09 74 63 3a 20 54 6f 6f 6c 43 61 6c 6c 2c 0a 09 09 73 68 65 6c 6c 4f 75 74 70 75 ng(...tc:.ToolCall,...shellOutpu
6640 74 51 75 65 75 65 3a 20 41 72 72 61 79 3c 7b 20 64 61 74 61 3a 20 73 74 72 69 6e 67 3b 20 73 74 tQueue:.Array<{.data:.string;.st
6660 72 65 61 6d 3a 20 22 73 74 64 6f 75 74 22 20 7c 20 22 73 74 64 65 72 72 22 20 7d 3e 2c 0a 09 29 ream:."stdout".|."stderr".}>,..)
6680 3a 20 50 72 6f 6d 69 73 65 3c 54 6f 6f 6c 52 65 73 75 6c 74 3e 20 7b 0a 09 09 63 6f 6e 73 74 20 :.Promise<ToolResult>.{...const.
66a0 72 65 67 69 73 74 72 79 20 3d 20 63 72 65 61 74 65 54 6f 6f 6c 52 65 67 69 73 74 72 79 28 74 68 registry.=.createToolRegistry(th
66c0 69 73 2e 63 6f 6e 66 69 67 2e 74 6f 6f 6c 73 29 3b 0a 09 09 63 6f 6e 73 74 20 74 6f 6f 6c 20 3d is.config.tools);...const.tool.=
66e0 20 72 65 67 69 73 74 72 79 2e 67 65 74 54 6f 6f 6c 28 74 63 2e 6e 61 6d 65 29 3b 0a 09 09 69 66 .registry.getTool(tc.name);...if
6700 20 28 21 74 6f 6f 6c 29 20 7b 0a 09 09 09 72 65 74 75 72 6e 20 7b 0a 09 09 09 09 74 6f 6f 6c 43 .(!tool).{....return.{.....toolC
6720 61 6c 6c 49 64 3a 20 74 63 2e 69 64 2c 0a 09 09 09 09 74 6f 6f 6c 4e 61 6d 65 3a 20 74 63 2e 6e allId:.tc.id,.....toolName:.tc.n
6740 61 6d 65 2c 0a 09 09 09 09 72 65 73 75 6c 74 3a 20 60 55 6e 6b 6e 6f 77 6e 20 74 6f 6f 6c 3a 20 ame,.....result:.`Unknown.tool:.
6760 24 7b 74 63 2e 6e 61 6d 65 7d 60 2c 0a 09 09 09 09 69 73 45 72 72 6f 72 3a 20 74 72 75 65 2c 0a ${tc.name}`,.....isError:.true,.
6780 09 09 09 7d 3b 0a 09 09 7d 0a 0a 09 09 2f 2f 20 50 65 72 6d 69 73 73 69 6f 6e 20 63 68 65 63 6b ...};...}....//.Permission.check
67a0 20 66 6f 72 20 73 68 65 6c 6c 20 63 6f 6d 6d 61 6e 64 73 20 e2 80 94 20 6f 6e 6c 79 20 70 72 6f .for.shell.commands.....only.pro
67c0 6d 70 74 20 66 6f 72 20 65 78 74 65 72 6e 61 6c 20 64 69 72 65 63 74 6f 72 79 20 61 63 63 65 73 mpt.for.external.directory.acces
67e0 73 2e 0a 09 09 2f 2f 20 43 6f 6d 6d 61 6e 64 73 20 74 68 61 74 20 73 74 61 79 20 77 69 74 68 69 s....//.Commands.that.stay.withi
6800 6e 20 74 68 65 20 77 6f 72 6b 69 6e 67 20 64 69 72 65 63 74 6f 72 79 20 61 72 65 20 61 75 74 6f n.the.working.directory.are.auto
6820 2d 61 6c 6c 6f 77 65 64 2e 0a 09 09 69 66 20 28 74 63 2e 6e 61 6d 65 20 3d 3d 3d 20 22 72 75 6e -allowed....if.(tc.name.===."run
6840 5f 73 68 65 6c 6c 22 20 26 26 20 74 68 69 73 2e 63 6f 6e 66 69 67 2e 70 65 72 6d 69 73 73 69 6f _shell".&&.this.config.permissio
6860 6e 43 68 65 63 6b 65 72 29 20 7b 0a 09 09 09 63 6f 6e 73 74 20 63 6f 6d 6d 61 6e 64 20 3d 20 74 nChecker).{....const.command.=.t
6880 79 70 65 6f 66 20 74 63 2e 61 72 67 75 6d 65 6e 74 73 2e 63 6f 6d 6d 61 6e 64 20 3d 3d 3d 20 22 ypeof.tc.arguments.command.===."
68a0 73 74 72 69 6e 67 22 20 3f 20 74 63 2e 61 72 67 75 6d 65 6e 74 73 2e 63 6f 6d 6d 61 6e 64 20 3a string".?.tc.arguments.command.:
68c0 20 22 22 3b 0a 09 09 09 63 6f 6e 73 74 20 77 6f 72 6b 69 6e 67 44 69 72 65 63 74 6f 72 79 20 3d ."";....const.workingDirectory.=
68e0 20 74 68 69 73 2e 63 6f 6e 66 69 67 2e 77 6f 72 6b 69 6e 67 44 69 72 65 63 74 6f 72 79 3b 0a 09 .this.config.workingDirectory;..
6900 09 09 63 6f 6e 73 74 20 61 6e 61 6c 79 73 69 73 20 3d 20 61 77 61 69 74 20 61 6e 61 6c 79 7a 65 ..const.analysis.=.await.analyze
6920 43 6f 6d 6d 61 6e 64 28 63 6f 6d 6d 61 6e 64 2c 20 77 6f 72 6b 69 6e 67 44 69 72 65 63 74 6f 72 Command(command,.workingDirector
6940 79 29 3b 0a 09 09 09 63 6f 6e 73 74 20 72 75 6c 65 73 65 74 20 3d 20 74 68 69 73 2e 63 6f 6e 66 y);....const.ruleset.=.this.conf
6960 69 67 2e 72 75 6c 65 73 65 74 20 3f 3f 20 5b 5d 3b 0a 0a 09 09 09 2f 2f 20 43 68 65 63 6b 20 66 ig.ruleset.??.[];.....//.Check.f
6980 6f 72 20 65 78 74 65 72 6e 61 6c 20 64 69 72 65 63 74 6f 72 79 20 61 63 63 65 73 73 20 66 72 6f or.external.directory.access.fro
69a0 6d 20 73 68 65 6c 6c 20 63 6f 6d 6d 61 6e 64 0a 09 09 09 69 66 20 28 61 6e 61 6c 79 73 69 73 2e m.shell.command....if.(analysis.
69c0 64 69 72 73 2e 6c 65 6e 67 74 68 20 3e 20 30 29 20 7b 0a 09 09 09 09 63 6f 6e 73 74 20 64 69 72 dirs.length.>.0).{.....const.dir
69e0 52 65 71 75 65 73 74 20 3d 20 7b 0a 09 09 09 09 09 70 65 72 6d 69 73 73 69 6f 6e 3a 20 22 65 78 Request.=.{......permission:."ex
6a00 74 65 72 6e 61 6c 5f 64 69 72 65 63 74 6f 72 79 22 2c 0a 09 09 09 09 09 70 61 74 74 65 72 6e 73 ternal_directory",......patterns
6a20 3a 20 61 6e 61 6c 79 73 69 73 2e 64 69 72 73 2e 6d 61 70 28 28 64 29 20 3d 3e 20 60 24 7b 64 7d :.analysis.dirs.map((d).=>.`${d}
6a40 2f 2a 60 29 2c 0a 09 09 09 09 09 61 6c 77 61 79 73 3a 20 61 6e 61 6c 79 73 69 73 2e 64 69 72 73 /*`),......always:.analysis.dirs
6a60 2e 6d 61 70 28 28 64 29 20 3d 3e 20 60 24 7b 64 7d 2f 2a 60 29 2c 0a 09 09 09 09 09 64 65 73 63 .map((d).=>.`${d}/*`),......desc
6a80 72 69 70 74 69 6f 6e 3a 20 60 53 68 65 6c 6c 20 63 6f 6d 6d 61 6e 64 20 61 63 63 65 73 73 65 73 ription:.`Shell.command.accesses
6aa0 20 65 78 74 65 72 6e 61 6c 20 64 69 72 65 63 74 6f 72 79 3a 20 24 7b 61 6e 61 6c 79 73 69 73 2e .external.directory:.${analysis.
6ac0 64 69 72 73 2e 6a 6f 69 6e 28 22 2c 20 22 29 7d 60 2c 0a 09 09 09 09 09 6d 65 74 61 64 61 74 61 dirs.join(",.")}`,......metadata
6ae0 3a 20 7b 20 63 6f 6d 6d 61 6e 64 2c 20 64 69 72 73 3a 20 61 6e 61 6c 79 73 69 73 2e 64 69 72 73 :.{.command,.dirs:.analysis.dirs
6b00 20 7d 2c 0a 09 09 09 09 7d 3b 0a 09 09 09 09 74 72 79 20 7b 0a 09 09 09 09 09 63 6f 6e 73 74 20 .},.....};.....try.{......const.
6b20 64 69 72 52 65 70 6c 79 20 3d 20 61 77 61 69 74 20 74 68 69 73 2e 63 6f 6e 66 69 67 2e 70 65 72 dirReply.=.await.this.config.per
6b40 6d 69 73 73 69 6f 6e 43 68 65 63 6b 65 72 2e 61 73 6b 28 64 69 72 52 65 71 75 65 73 74 2c 20 5b missionChecker.ask(dirRequest,.[
6b60 72 75 6c 65 73 65 74 5d 29 3b 0a 09 09 09 09 09 69 66 20 28 64 69 72 52 65 70 6c 79 20 3d 3d 3d ruleset]);......if.(dirReply.===
6b80 20 22 72 65 6a 65 63 74 22 29 20 7b 0a 09 09 09 09 09 09 72 65 74 75 72 6e 20 7b 0a 09 09 09 09 ."reject").{.......return.{.....
6ba0 09 09 09 74 6f 6f 6c 43 61 6c 6c 49 64 3a 20 74 63 2e 69 64 2c 0a 09 09 09 09 09 09 09 74 6f 6f ...toolCallId:.tc.id,........too
6bc0 6c 4e 61 6d 65 3a 20 74 63 2e 6e 61 6d 65 2c 0a 09 09 09 09 09 09 09 72 65 73 75 6c 74 3a 20 60 lName:.tc.name,........result:.`
6be0 50 65 72 6d 69 73 73 69 6f 6e 20 64 65 6e 69 65 64 3a 20 61 63 63 65 73 73 20 74 6f 20 65 78 74 Permission.denied:.access.to.ext
6c00 65 72 6e 61 6c 20 64 69 72 65 63 74 6f 72 69 65 73 20 72 65 6a 65 63 74 65 64 60 2c 0a 09 09 09 ernal.directories.rejected`,....
6c20 09 09 09 09 69 73 45 72 72 6f 72 3a 20 74 72 75 65 2c 0a 09 09 09 09 09 09 7d 3b 0a 09 09 09 09 ....isError:.true,.......};.....
6c40 09 7d 0a 09 09 09 09 7d 20 63 61 74 63 68 20 7b 0a 09 09 09 09 09 72 65 74 75 72 6e 20 7b 0a 09 .}.....}.catch.{......return.{..
6c60 09 09 09 09 09 74 6f 6f 6c 43 61 6c 6c 49 64 3a 20 74 63 2e 69 64 2c 0a 09 09 09 09 09 09 74 6f .....toolCallId:.tc.id,.......to
6c80 6f 6c 4e 61 6d 65 3a 20 74 63 2e 6e 61 6d 65 2c 0a 09 09 09 09 09 09 72 65 73 75 6c 74 3a 20 60 olName:.tc.name,.......result:.`
6ca0 50 65 72 6d 69 73 73 69 6f 6e 20 64 65 6e 69 65 64 3a 20 65 78 74 65 72 6e 61 6c 20 64 69 72 65 Permission.denied:.external.dire
6cc0 63 74 6f 72 79 20 61 63 63 65 73 73 20 6e 6f 74 20 61 6c 6c 6f 77 65 64 60 2c 0a 09 09 09 09 09 ctory.access.not.allowed`,......
6ce0 09 69 73 45 72 72 6f 72 3a 20 74 72 75 65 2c 0a 09 09 09 09 09 7d 3b 0a 09 09 09 09 7d 0a 09 09 .isError:.true,......};.....}...
6d00 09 7d 0a 09 09 7d 0a 0a 09 09 2f 2f 20 50 65 72 6d 69 73 73 69 6f 6e 20 63 68 65 63 6b 20 66 6f .}...}....//.Permission.check.fo
6d20 72 20 66 69 6c 65 20 74 6f 6f 6c 73 20 61 63 63 65 73 73 69 6e 67 20 70 61 74 68 73 20 6f 75 74 r.file.tools.accessing.paths.out
6d40 73 69 64 65 20 77 6f 72 6b 73 70 61 63 65 0a 09 09 69 66 20 28 0a 09 09 09 74 68 69 73 2e 63 6f side.workspace...if.(....this.co
6d60 6e 66 69 67 2e 70 65 72 6d 69 73 73 69 6f 6e 43 68 65 63 6b 65 72 20 26 26 0a 09 09 09 28 74 63 nfig.permissionChecker.&&....(tc
6d80 2e 6e 61 6d 65 20 3d 3d 3d 20 22 72 65 61 64 5f 66 69 6c 65 22 20 7c 7c 0a 09 09 09 09 74 63 2e .name.===."read_file".||.....tc.
6da0 6e 61 6d 65 20 3d 3d 3d 20 22 72 65 61 64 5f 66 69 6c 65 5f 73 6c 69 63 65 22 20 7c 7c 0a 09 09 name.===."read_file_slice".||...
6dc0 09 09 74 63 2e 6e 61 6d 65 20 3d 3d 3d 20 22 77 72 69 74 65 5f 66 69 6c 65 22 20 7c 7c 0a 09 09 ..tc.name.===."write_file".||...
6de0 09 09 74 63 2e 6e 61 6d 65 20 3d 3d 3d 20 22 6c 69 73 74 5f 66 69 6c 65 73 22 29 0a 09 09 29 20 ..tc.name.===."list_files")...).
6e00 7b 0a 09 09 09 63 6f 6e 73 74 20 70 61 74 68 41 72 67 20 3d 20 74 79 70 65 6f 66 20 74 63 2e 61 {....const.pathArg.=.typeof.tc.a
6e20 72 67 75 6d 65 6e 74 73 2e 70 61 74 68 20 3d 3d 3d 20 22 73 74 72 69 6e 67 22 20 3f 20 74 63 2e rguments.path.===."string".?.tc.
6e40 61 72 67 75 6d 65 6e 74 73 2e 70 61 74 68 20 3a 20 22 2e 22 3b 0a 0a 09 09 09 2f 2f 20 43 61 6e arguments.path.:.".";.....//.Can
6e60 6f 6e 69 63 61 6c 69 7a 65 20 61 6c 6c 20 74 68 72 65 65 20 73 6f 20 73 79 6d 6c 69 6e 6b 2d 69 onicalize.all.three.so.symlink-i
6e80 6e 2d 77 6f 72 6b 64 69 72 20 65 73 63 61 70 65 73 20 61 72 65 20 64 65 74 65 63 74 65 64 0a 09 n-workdir.escapes.are.detected..
6ea0 09 09 2f 2f 20 61 74 20 74 68 65 20 70 65 72 6d 69 73 73 69 6f 6e 20 67 61 74 65 20 28 6e 6f 74 ..//.at.the.permission.gate.(not
6ec0 20 6a 75 73 74 20 72 65 6c 61 74 69 76 65 20 60 2e 2e 2f 60 20 74 72 61 76 65 72 73 61 6c 29 2e .just.relative.`../`.traversal).
6ee0 20 54 68 65 0a 09 09 09 2f 2f 20 68 65 6c 70 65 72 20 77 61 6c 6b 73 20 75 70 20 74 6f 20 74 68 .The....//.helper.walks.up.to.th
6f00 65 20 6e 65 61 72 65 73 74 20 65 78 69 73 74 69 6e 67 20 61 6e 63 65 73 74 6f 72 20 77 68 65 6e e.nearest.existing.ancestor.when
6f20 20 74 68 65 20 6c 65 61 66 0a 09 09 09 2f 2f 20 64 6f 65 73 6e 27 74 20 65 78 69 73 74 20 28 77 .the.leaf....//.doesn't.exist.(w
6f40 72 69 74 65 5f 66 69 6c 65 20 63 72 65 61 74 69 6e 67 20 6e 65 77 20 66 69 6c 65 73 29 2c 20 73 rite_file.creating.new.files),.s
6f60 6f 20 61 20 70 61 72 65 6e 74 0a 09 09 09 2f 2f 20 73 79 6d 6c 69 6e 6b 20 70 6f 69 6e 74 69 6e o.a.parent....//.symlink.pointin
6f80 67 20 6f 75 74 73 69 64 65 20 74 68 65 20 77 6f 72 6b 64 69 72 20 69 73 20 73 74 69 6c 6c 20 63 g.outside.the.workdir.is.still.c
6fa0 61 75 67 68 74 2e 20 54 68 65 20 73 61 6d 65 0a 09 09 09 2f 2f 20 68 65 6c 70 65 72 20 69 73 20 aught..The.same....//.helper.is.
6fc0 75 73 65 64 20 69 6e 73 69 64 65 20 74 68 65 20 74 6f 6f 6c 20 69 6d 70 6c 65 6d 65 6e 74 61 74 used.inside.the.tool.implementat
6fe0 69 6f 6e 73 20 e2 80 94 20 6b 65 65 70 69 6e 67 20 74 68 65 0a 09 09 09 2f 2f 20 74 77 6f 20 6c ions.....keeping.the....//.two.l
7000 61 79 65 72 73 20 63 6f 6e 73 69 73 74 65 6e 74 20 73 6f 20 61 20 70 61 74 68 20 74 68 61 74 20 ayers.consistent.so.a.path.that.
7020 6c 6f 6f 6b 73 20 65 78 74 65 72 6e 61 6c 20 68 65 72 65 20 61 6c 73 6f 0a 09 09 09 2f 2f 20 6c looks.external.here.also....//.l
7040 6f 6f 6b 73 20 65 78 74 65 72 6e 61 6c 20 69 6e 20 74 68 65 20 74 6f 6f 6c 2c 20 61 6e 64 20 76 ooks.external.in.the.tool,.and.v
7060 69 63 65 20 76 65 72 73 61 2e 0a 09 09 09 63 6f 6e 73 74 20 72 65 73 6f 6c 76 65 64 50 61 74 68 ice.versa.....const.resolvedPath
7080 20 3d 20 61 77 61 69 74 20 63 61 6e 6f 6e 69 63 61 6c 69 7a 65 28 74 68 69 73 2e 63 6f 6e 66 69 .=.await.canonicalize(this.confi
70a0 67 2e 77 6f 72 6b 69 6e 67 44 69 72 65 63 74 6f 72 79 2c 20 70 61 74 68 41 72 67 29 3b 0a 09 09 g.workingDirectory,.pathArg);...
70c0 09 63 6f 6e 73 74 20 72 65 73 6f 6c 76 65 64 57 6f 72 6b 44 69 72 20 3d 20 61 77 61 69 74 20 63 .const.resolvedWorkDir.=.await.c
70e0 61 6e 6f 6e 69 63 61 6c 69 7a 65 28 74 68 69 73 2e 63 6f 6e 66 69 67 2e 77 6f 72 6b 69 6e 67 44 anonicalize(this.config.workingD
7100 69 72 65 63 74 6f 72 79 29 3b 0a 09 09 09 63 6f 6e 73 74 20 72 65 73 6f 6c 76 65 64 53 70 69 6c irectory);....const.resolvedSpil
7120 6c 52 6f 6f 74 20 3d 20 61 77 61 69 74 20 63 61 6e 6f 6e 69 63 61 6c 69 7a 65 28 53 50 49 4c 4c lRoot.=.await.canonicalize(SPILL
7140 5f 52 4f 4f 54 29 3b 0a 0a 09 09 09 63 6f 6e 73 74 20 69 73 55 6e 64 65 72 57 6f 72 6b 64 69 72 _ROOT);.....const.isUnderWorkdir
7160 20 3d 0a 09 09 09 09 72 65 73 6f 6c 76 65 64 50 61 74 68 20 3d 3d 3d 20 72 65 73 6f 6c 76 65 64 .=.....resolvedPath.===.resolved
7180 57 6f 72 6b 44 69 72 20 7c 7c 20 72 65 73 6f 6c 76 65 64 50 61 74 68 2e 73 74 61 72 74 73 57 69 WorkDir.||.resolvedPath.startsWi
71a0 74 68 28 60 24 7b 72 65 73 6f 6c 76 65 64 57 6f 72 6b 44 69 72 7d 2f 60 29 3b 0a 09 09 09 2f 2f th(`${resolvedWorkDir}/`);....//
71c0 20 44 69 73 70 61 74 63 68 27 73 20 6f 77 6e 20 74 6f 6f 6c 2d 6f 75 74 70 75 74 20 73 70 69 6c .Dispatch's.own.tool-output.spil
71e0 6c 20 64 69 72 65 63 74 6f 72 79 20 69 73 20 69 6d 70 6c 69 63 69 74 6c 79 20 61 6c 6c 6f 77 65 l.directory.is.implicitly.allowe
7200 64 20 e2 80 94 0a 09 09 09 2f 2f 20 74 68 65 20 41 49 20 72 65 63 65 69 76 65 73 20 61 20 74 72 d........//.the.AI.receives.a.tr
7220 75 6e 63 61 74 69 6f 6e 20 6e 6f 74 69 63 65 20 70 6f 69 6e 74 69 6e 67 20 68 65 72 65 20 61 6e uncation.notice.pointing.here.an
7240 64 20 69 73 20 65 78 70 65 63 74 65 64 0a 09 09 09 2f 2f 20 74 6f 20 72 65 61 64 20 69 74 20 77 d.is.expected....//.to.read.it.w
7260 69 74 68 6f 75 74 20 70 72 6f 6d 70 74 69 6e 67 20 74 68 65 20 75 73 65 72 2e 20 42 79 70 61 73 ithout.prompting.the.user..Bypas
7280 73 69 6e 67 20 74 68 65 20 65 78 74 65 72 6e 61 6c 2d 0a 09 09 09 2f 2f 20 64 69 72 65 63 74 6f sing.the.external-....//.directo
72a0 72 79 20 63 68 65 63 6b 20 68 65 72 65 20 6b 65 65 70 73 20 74 68 65 20 69 6e 73 70 65 63 74 69 ry.check.here.keeps.the.inspecti
72c0 6f 6e 20 66 6c 6f 77 20 66 72 69 63 74 69 6f 6e 6c 65 73 73 2e 0a 09 09 09 63 6f 6e 73 74 20 69 on.flow.frictionless.....const.i
72e0 73 53 70 69 6c 6c 50 61 74 68 20 3d 0a 09 09 09 09 72 65 73 6f 6c 76 65 64 50 61 74 68 20 3d 3d sSpillPath.=.....resolvedPath.==
7300 3d 20 72 65 73 6f 6c 76 65 64 53 70 69 6c 6c 52 6f 6f 74 20 7c 7c 20 72 65 73 6f 6c 76 65 64 50 =.resolvedSpillRoot.||.resolvedP
7320 61 74 68 2e 73 74 61 72 74 73 57 69 74 68 28 60 24 7b 72 65 73 6f 6c 76 65 64 53 70 69 6c 6c 52 ath.startsWith(`${resolvedSpillR
7340 6f 6f 74 7d 2f 60 29 3b 0a 0a 09 09 09 2f 2f 20 41 67 65 6e 74 20 64 65 66 69 6e 69 74 69 6f 6e oot}/`);.....//.Agent.definition
7360 73 20 6c 69 76 65 20 69 6e 20 77 65 6c 6c 2d 6b 6e 6f 77 6e 20 64 69 72 65 63 74 6f 72 69 65 73 s.live.in.well-known.directories
7380 0a 09 09 09 2f 2f 20 28 60 7e 2f 2e 63 6f 6e 66 69 67 2f 64 69 73 70 61 74 63 68 2f 61 67 65 6e ....//.(`~/.config/dispatch/agen
73a0 74 73 2f 60 20 61 6e 64 0a 09 09 09 2f 2f 20 60 3c 77 6f 72 6b 64 69 72 3e 2f 2e 64 69 73 70 61 ts/`.and....//.`<workdir>/.dispa
73c0 74 63 68 2f 61 67 65 6e 74 73 2f 60 29 2e 20 52 65 61 64 69 6e 67 20 74 68 6f 73 65 20 69 73 20 tch/agents/`)..Reading.those.is.
73e0 61 0a 09 09 09 2f 2f 20 70 72 65 72 65 71 75 69 73 69 74 65 20 66 6f 72 20 74 68 65 20 73 75 6d a....//.prerequisite.for.the.sum
7400 6d 6f 6e 20 74 6f 6f 6c 27 73 20 22 73 70 65 63 69 66 79 20 77 68 69 63 68 20 73 75 62 61 67 65 mon.tool's."specify.which.subage
7420 6e 74 22 0a 09 09 09 2f 2f 20 66 6c 6f 77 20 e2 80 94 20 74 68 65 20 4c 4c 4d 20 6e 65 65 64 73 nt"....//.flow.....the.LLM.needs
7440 20 74 6f 20 69 6e 73 70 65 63 74 20 74 68 65 20 54 4f 4d 4c 20 74 6f 20 6b 6e 6f 77 20 77 68 61 .to.inspect.the.TOML.to.know.wha
7460 74 20 65 61 63 68 0a 09 09 09 2f 2f 20 61 67 65 6e 74 20 64 6f 65 73 2e 20 57 65 20 61 75 74 6f t.each....//.agent.does..We.auto
7480 2d 61 6c 6c 6f 77 20 52 45 41 44 2d 4f 4e 4c 59 20 74 6f 6f 6c 73 20 75 6e 64 65 72 20 74 68 6f -allow.READ-ONLY.tools.under.tho
74a0 73 65 20 70 61 74 68 73 0a 09 09 09 2f 2f 20 77 69 74 68 6f 75 74 20 70 72 6f 6d 70 74 69 6e 67 se.paths....//.without.prompting
74c0 20 74 68 65 20 75 73 65 72 2e 20 57 72 69 74 65 73 20 28 60 77 72 69 74 65 5f 66 69 6c 65 60 29 .the.user..Writes.(`write_file`)
74e0 20 73 74 69 6c 6c 20 67 6f 0a 09 09 09 2f 2f 20 74 68 72 6f 75 67 68 20 74 68 65 20 6e 6f 72 6d .still.go....//.through.the.norm
7500 61 6c 20 65 78 74 65 72 6e 61 6c 5f 64 69 72 65 63 74 6f 72 79 20 67 61 74 65 20 73 6f 20 61 6e al.external_directory.gate.so.an
7520 20 61 67 65 6e 74 20 63 61 6e 27 74 0a 09 09 09 2f 2f 20 71 75 69 65 74 6c 79 20 6f 76 65 72 77 .agent.can't....//.quietly.overw
7540 72 69 74 65 20 61 6e 6f 74 68 65 72 20 61 67 65 6e 74 27 73 20 64 65 66 69 6e 69 74 69 6f 6e 2e rite.another.agent's.definition.
7560 0a 09 09 09 63 6f 6e 73 74 20 69 73 52 65 61 64 4f 6e 6c 79 54 6f 6f 6c 20 3d 0a 09 09 09 09 74 ....const.isReadOnlyTool.=.....t
7580 63 2e 6e 61 6d 65 20 3d 3d 3d 20 22 72 65 61 64 5f 66 69 6c 65 22 20 7c 7c 20 74 63 2e 6e 61 6d c.name.===."read_file".||.tc.nam
75a0 65 20 3d 3d 3d 20 22 72 65 61 64 5f 66 69 6c 65 5f 73 6c 69 63 65 22 20 7c 7c 20 74 63 2e 6e 61 e.===."read_file_slice".||.tc.na
75c0 6d 65 20 3d 3d 3d 20 22 6c 69 73 74 5f 66 69 6c 65 73 22 3b 0a 09 09 09 6c 65 74 20 69 73 41 67 me.===."list_files";....let.isAg
75e0 65 6e 74 73 44 69 72 52 65 61 64 4f 6e 6c 79 20 3d 20 66 61 6c 73 65 3b 0a 09 09 09 69 66 20 28 entsDirReadOnly.=.false;....if.(
7600 69 73 52 65 61 64 4f 6e 6c 79 54 6f 6f 6c 29 20 7b 0a 09 09 09 09 63 6f 6e 73 74 20 61 67 65 6e isReadOnlyTool).{.....const.agen
7620 74 44 69 72 73 20 3d 20 67 65 74 41 67 65 6e 74 44 69 72 50 61 74 68 73 28 74 68 69 73 2e 63 6f tDirs.=.getAgentDirPaths(this.co
7640 6e 66 69 67 2e 77 6f 72 6b 69 6e 67 44 69 72 65 63 74 6f 72 79 29 3b 0a 09 09 09 09 63 6f 6e 73 nfig.workingDirectory);.....cons
7660 74 20 63 61 6e 6f 6e 69 63 61 6c 41 67 65 6e 74 44 69 72 73 20 3d 20 61 77 61 69 74 20 50 72 6f t.canonicalAgentDirs.=.await.Pro
7680 6d 69 73 65 2e 61 6c 6c 28 61 67 65 6e 74 44 69 72 73 2e 6d 61 70 28 28 64 29 20 3d 3e 20 63 61 mise.all(agentDirs.map((d).=>.ca
76a0 6e 6f 6e 69 63 61 6c 69 7a 65 28 64 29 29 29 3b 0a 09 09 09 09 69 73 41 67 65 6e 74 73 44 69 72 nonicalize(d)));.....isAgentsDir
76c0 52 65 61 64 4f 6e 6c 79 20 3d 20 63 61 6e 6f 6e 69 63 61 6c 41 67 65 6e 74 44 69 72 73 2e 73 6f ReadOnly.=.canonicalAgentDirs.so
76e0 6d 65 28 0a 09 09 09 09 09 28 64 29 20 3d 3e 20 72 65 73 6f 6c 76 65 64 50 61 74 68 20 3d 3d 3d me(......(d).=>.resolvedPath.===
7700 20 64 20 7c 7c 20 72 65 73 6f 6c 76 65 64 50 61 74 68 2e 73 74 61 72 74 73 57 69 74 68 28 60 24 .d.||.resolvedPath.startsWith(`$
7720 7b 64 7d 2f 60 29 2c 0a 09 09 09 09 29 3b 0a 09 09 09 7d 0a 0a 09 09 09 69 66 20 28 21 69 73 55 {d}/`),.....);....}.....if.(!isU
7740 6e 64 65 72 57 6f 72 6b 64 69 72 20 26 26 20 21 69 73 53 70 69 6c 6c 50 61 74 68 20 26 26 20 21 nderWorkdir.&&.!isSpillPath.&&.!
7760 69 73 41 67 65 6e 74 73 44 69 72 52 65 61 64 4f 6e 6c 79 29 20 7b 0a 09 09 09 09 63 6f 6e 73 74 isAgentsDirReadOnly).{.....const
7780 20 70 65 72 6d 69 73 73 69 6f 6e 54 79 70 65 20 3d 0a 09 09 09 09 09 74 63 2e 6e 61 6d 65 20 3d .permissionType.=......tc.name.=
77a0 3d 3d 20 22 72 65 61 64 5f 66 69 6c 65 22 20 3f 20 22 72 65 61 64 22 20 3a 20 74 63 2e 6e 61 6d ==."read_file".?."read".:.tc.nam
77c0 65 20 3d 3d 3d 20 22 77 72 69 74 65 5f 66 69 6c 65 22 20 3f 20 22 65 64 69 74 22 20 3a 20 22 6c e.===."write_file".?."edit".:."l
77e0 69 73 74 22 3b 0a 0a 09 09 09 09 63 6f 6e 73 74 20 70 61 72 65 6e 74 44 69 72 20 3d 20 64 69 72 ist";......const.parentDir.=.dir
7800 6e 61 6d 65 28 72 65 73 6f 6c 76 65 64 50 61 74 68 29 3b 0a 09 09 09 09 63 6f 6e 73 74 20 72 65 name(resolvedPath);.....const.re
7820 71 75 65 73 74 20 3d 20 7b 0a 09 09 09 09 09 70 65 72 6d 69 73 73 69 6f 6e 3a 20 22 65 78 74 65 quest.=.{......permission:."exte
7840 72 6e 61 6c 5f 64 69 72 65 63 74 6f 72 79 22 2c 0a 09 09 09 09 09 70 61 74 74 65 72 6e 73 3a 20 rnal_directory",......patterns:.
7860 5b 60 24 7b 70 61 72 65 6e 74 44 69 72 7d 2f 2a 60 5d 2c 0a 09 09 09 09 09 61 6c 77 61 79 73 3a [`${parentDir}/*`],......always:
7880 20 5b 60 24 7b 70 61 72 65 6e 74 44 69 72 7d 2f 2a 60 5d 2c 0a 09 09 09 09 09 64 65 73 63 72 69 .[`${parentDir}/*`],......descri
78a0 70 74 69 6f 6e 3a 20 60 24 7b 70 65 72 6d 69 73 73 69 6f 6e 54 79 70 65 7d 20 66 69 6c 65 20 6f ption:.`${permissionType}.file.o
78c0 75 74 73 69 64 65 20 77 6f 72 6b 73 70 61 63 65 3a 20 24 7b 72 65 73 6f 6c 76 65 64 50 61 74 68 utside.workspace:.${resolvedPath
78e0 7d 60 2c 0a 09 09 09 09 09 6d 65 74 61 64 61 74 61 3a 20 7b 20 66 69 6c 65 70 61 74 68 3a 20 72 }`,......metadata:.{.filepath:.r
7900 65 73 6f 6c 76 65 64 50 61 74 68 2c 20 70 61 72 65 6e 74 44 69 72 2c 20 6f 70 65 72 61 74 69 6f esolvedPath,.parentDir,.operatio
7920 6e 3a 20 70 65 72 6d 69 73 73 69 6f 6e 54 79 70 65 20 7d 2c 0a 09 09 09 09 7d 3b 0a 0a 09 09 09 n:.permissionType.},.....};.....
7940 09 63 6f 6e 73 74 20 72 75 6c 65 73 65 74 20 3d 20 74 68 69 73 2e 63 6f 6e 66 69 67 2e 72 75 6c .const.ruleset.=.this.config.rul
7960 65 73 65 74 20 3f 3f 20 5b 5d 3b 0a 09 09 09 09 74 72 79 20 7b 0a 09 09 09 09 09 63 6f 6e 73 74 eset.??.[];.....try.{......const
7980 20 72 65 70 6c 79 20 3d 20 61 77 61 69 74 20 74 68 69 73 2e 63 6f 6e 66 69 67 2e 70 65 72 6d 69 .reply.=.await.this.config.permi
79a0 73 73 69 6f 6e 43 68 65 63 6b 65 72 2e 61 73 6b 28 72 65 71 75 65 73 74 2c 20 5b 72 75 6c 65 73 ssionChecker.ask(request,.[rules
79c0 65 74 5d 29 3b 0a 09 09 09 09 09 69 66 20 28 72 65 70 6c 79 20 3d 3d 3d 20 22 72 65 6a 65 63 74 et]);......if.(reply.===."reject
79e0 22 29 20 7b 0a 09 09 09 09 09 09 72 65 74 75 72 6e 20 7b 0a 09 09 09 09 09 09 09 74 6f 6f 6c 43 ").{.......return.{........toolC
7a00 61 6c 6c 49 64 3a 20 74 63 2e 69 64 2c 0a 09 09 09 09 09 09 09 74 6f 6f 6c 4e 61 6d 65 3a 20 74 allId:.tc.id,........toolName:.t
7a20 63 2e 6e 61 6d 65 2c 0a 09 09 09 09 09 09 09 72 65 73 75 6c 74 3a 20 60 50 65 72 6d 69 73 73 69 c.name,........result:.`Permissi
7a40 6f 6e 20 64 65 6e 69 65 64 3a 20 24 7b 70 65 72 6d 69 73 73 69 6f 6e 54 79 70 65 7d 20 61 63 63 on.denied:.${permissionType}.acc
7a60 65 73 73 20 74 6f 20 24 7b 72 65 73 6f 6c 76 65 64 50 61 74 68 7d 20 72 65 6a 65 63 74 65 64 60 ess.to.${resolvedPath}.rejected`
7a80 2c 0a 09 09 09 09 09 09 09 69 73 45 72 72 6f 72 3a 20 74 72 75 65 2c 0a 09 09 09 09 09 09 7d 3b ,........isError:.true,.......};
7aa0 0a 09 09 09 09 09 7d 0a 09 09 09 09 7d 20 63 61 74 63 68 20 7b 0a 09 09 09 09 09 72 65 74 75 72 ......}.....}.catch.{......retur
7ac0 6e 20 7b 0a 09 09 09 09 09 09 74 6f 6f 6c 43 61 6c 6c 49 64 3a 20 74 63 2e 69 64 2c 0a 09 09 09 n.{.......toolCallId:.tc.id,....
7ae0 09 09 09 74 6f 6f 6c 4e 61 6d 65 3a 20 74 63 2e 6e 61 6d 65 2c 0a 09 09 09 09 09 09 72 65 73 75 ...toolName:.tc.name,.......resu
7b00 6c 74 3a 20 60 50 65 72 6d 69 73 73 69 6f 6e 20 64 65 6e 69 65 64 3a 20 24 7b 70 65 72 6d 69 73 lt:.`Permission.denied:.${permis
7b20 73 69 6f 6e 54 79 70 65 7d 20 61 63 63 65 73 73 20 74 6f 20 24 7b 72 65 73 6f 6c 76 65 64 50 61 sionType}.access.to.${resolvedPa
7b40 74 68 7d 20 6e 6f 74 20 61 6c 6c 6f 77 65 64 60 2c 0a 09 09 09 09 09 09 69 73 45 72 72 6f 72 3a th}.not.allowed`,.......isError:
7b60 20 74 72 75 65 2c 0a 09 09 09 09 09 7d 3b 0a 09 09 09 09 7d 0a 09 09 09 7d 0a 09 09 7d 0a 0a 09 .true,......};.....}....}...}...
7b80 09 74 72 79 20 7b 0a 09 09 09 63 6f 6e 73 74 20 65 78 65 63 50 72 6f 6d 69 73 65 20 3d 20 74 6f .try.{....const.execPromise.=.to
7ba0 6f 6c 2e 65 78 65 63 75 74 65 28 74 63 2e 61 72 67 75 6d 65 6e 74 73 2c 20 7b 0a 09 09 09 09 6f ol.execute(tc.arguments,.{.....o
7bc0 6e 4f 75 74 70 75 74 3a 20 28 64 61 74 61 3a 20 73 74 72 69 6e 67 2c 20 73 74 72 65 61 6d 3a 20 nOutput:.(data:.string,.stream:.
7be0 22 73 74 64 6f 75 74 22 20 7c 20 22 73 74 64 65 72 72 22 29 20 3d 3e 20 7b 0a 09 09 09 09 09 73 "stdout".|."stderr").=>.{......s
7c00 68 65 6c 6c 4f 75 74 70 75 74 51 75 65 75 65 2e 70 75 73 68 28 7b 20 64 61 74 61 2c 20 73 74 72 hellOutputQueue.push({.data,.str
7c20 65 61 6d 20 7d 29 3b 0a 09 09 09 09 7d 2c 0a 09 09 09 09 71 75 65 75 65 43 61 6c 6c 62 61 63 6b eam.});.....},.....queueCallback
7c40 73 3a 20 74 68 69 73 2e 71 75 65 75 65 43 61 6c 6c 62 61 63 6b 73 2c 0a 09 09 09 7d 29 3b 0a 0a s:.this.queueCallbacks,....});..
7c60 09 09 09 63 6f 6e 73 74 20 72 61 77 52 65 73 75 6c 74 20 3d 20 61 77 61 69 74 20 65 78 65 63 50 ...const.rawResult.=.await.execP
7c80 72 6f 6d 69 73 65 3b 0a 09 09 09 63 6f 6e 73 74 20 72 65 73 75 6c 74 53 74 72 20 3d 20 74 79 70 romise;....const.resultStr.=.typ
7ca0 65 6f 66 20 72 61 77 52 65 73 75 6c 74 20 3d 3d 3d 20 22 73 74 72 69 6e 67 22 20 3f 20 72 61 77 eof.rawResult.===."string".?.raw
7cc0 52 65 73 75 6c 74 20 3a 20 4a 53 4f 4e 2e 73 74 72 69 6e 67 69 66 79 28 72 61 77 52 65 73 75 6c Result.:.JSON.stringify(rawResul
7ce0 74 29 3b 0a 0a 09 09 09 2f 2f 20 43 6f 6d 70 75 74 65 20 69 73 45 72 72 6f 72 20 6f 6e 20 74 68 t);.....//.Compute.isError.on.th
7d00 65 20 72 61 77 20 28 75 6e 74 72 75 6e 63 61 74 65 64 29 20 73 74 72 69 6e 67 20 73 6f 20 61 6e e.raw.(untruncated).string.so.an
7d20 20 60 45 72 72 6f 72 3a 60 20 70 72 65 66 69 78 0a 09 09 09 2f 2f 20 74 68 61 74 20 6c 69 76 65 .`Error:`.prefix....//.that.live
7d40 73 20 61 6e 79 77 68 65 72 65 20 e2 80 94 20 69 6e 63 6c 75 64 69 6e 67 20 62 65 79 6f 6e 64 20 s.anywhere.....including.beyond.
7d60 74 68 65 20 68 65 61 64 20 65 78 63 65 72 70 74 20 e2 80 94 20 69 73 20 73 74 69 6c 6c 0a 09 09 the.head.excerpt.....is.still...
7d80 09 2f 2f 20 64 65 74 65 63 74 65 64 2e 20 54 68 65 20 64 69 73 70 6c 61 79 20 72 65 73 75 6c 74 .//.detected..The.display.result
7da0 20 67 6f 65 73 20 74 68 72 6f 75 67 68 20 75 6e 69 76 65 72 73 61 6c 20 74 72 75 6e 63 61 74 69 .goes.through.universal.truncati
7dc0 6f 6e 20 73 6f 0a 09 09 09 2f 2f 20 6f 76 65 72 73 69 7a 65 64 20 6f 75 74 70 75 74 73 20 64 6f on.so....//.oversized.outputs.do
7de0 6e 27 74 20 62 6c 6f 77 20 63 6f 6e 74 65 78 74 2e 20 54 68 65 20 66 75 6c 6c 20 63 6f 6e 74 65 n't.blow.context..The.full.conte
7e00 6e 74 20 6c 69 76 65 73 20 69 6e 20 74 68 65 0a 09 09 09 2f 2f 20 73 70 69 6c 6c 20 66 69 6c 65 nt.lives.in.the....//.spill.file
7e20 20 74 68 65 20 74 72 75 6e 63 61 74 69 6f 6e 20 6e 6f 74 69 63 65 20 70 6f 69 6e 74 73 20 74 6f .the.truncation.notice.points.to
7e40 2e 0a 09 09 09 63 6f 6e 73 74 20 69 73 45 72 72 6f 72 20 3d 20 72 65 73 75 6c 74 53 74 72 2e 73 .....const.isError.=.resultStr.s
7e60 74 61 72 74 73 57 69 74 68 28 22 45 72 72 6f 72 3a 22 29 3b 0a 09 09 09 63 6f 6e 73 74 20 7b 20 tartsWith("Error:");....const.{.
7e80 64 69 73 70 6c 61 79 52 65 73 75 6c 74 20 7d 20 3d 20 61 70 70 6c 79 54 72 75 6e 63 61 74 69 6f displayResult.}.=.applyTruncatio
7ea0 6e 28 72 65 73 75 6c 74 53 74 72 2c 20 7b 0a 09 09 09 09 74 61 62 49 64 3a 20 74 68 69 73 2e 63 n(resultStr,.{.....tabId:.this.c
7ec0 6f 6e 66 69 67 2e 74 61 62 49 64 20 3f 3f 20 22 64 65 66 61 75 6c 74 22 2c 0a 09 09 09 09 63 61 onfig.tabId.??."default",.....ca
7ee0 6c 6c 49 64 3a 20 74 63 2e 69 64 2c 0a 09 09 09 09 74 6f 6f 6c 4e 61 6d 65 3a 20 74 63 2e 6e 61 llId:.tc.id,.....toolName:.tc.na
7f00 6d 65 2c 0a 09 09 09 7d 29 3b 0a 0a 09 09 09 72 65 74 75 72 6e 20 7b 0a 09 09 09 09 74 6f 6f 6c me,....});.....return.{.....tool
7f20 43 61 6c 6c 49 64 3a 20 74 63 2e 69 64 2c 0a 09 09 09 09 74 6f 6f 6c 4e 61 6d 65 3a 20 74 63 2e CallId:.tc.id,.....toolName:.tc.
7f40 6e 61 6d 65 2c 0a 09 09 09 09 72 65 73 75 6c 74 3a 20 64 69 73 70 6c 61 79 52 65 73 75 6c 74 2c name,.....result:.displayResult,
7f60 0a 09 09 09 09 69 73 45 72 72 6f 72 2c 0a 09 09 09 7d 3b 0a 09 09 7d 20 63 61 74 63 68 20 28 65 .....isError,....};...}.catch.(e
7f80 72 72 29 20 7b 0a 09 09 09 72 65 74 75 72 6e 20 7b 0a 09 09 09 09 74 6f 6f 6c 43 61 6c 6c 49 64 rr).{....return.{.....toolCallId
7fa0 3a 20 74 63 2e 69 64 2c 0a 09 09 09 09 74 6f 6f 6c 4e 61 6d 65 3a 20 74 63 2e 6e 61 6d 65 2c 0a :.tc.id,.....toolName:.tc.name,.
7fc0 09 09 09 09 72 65 73 75 6c 74 3a 20 65 72 72 20 69 6e 73 74 61 6e 63 65 6f 66 20 45 72 72 6f 72 ....result:.err.instanceof.Error
7fe0 20 3f 20 65 72 72 2e 6d 65 73 73 61 67 65 20 3a 20 53 74 72 69 6e 67 28 65 72 72 29 2c 0a 09 09 .?.err.message.:.String(err),...
8000 09 09 69 73 45 72 72 6f 72 3a 20 74 72 75 65 2c 0a 09 09 09 7d 3b 0a 09 09 7d 0a 09 7d 0a 0a 09 ..isError:.true,....};...}..}...
8020 2f 2a 2a 0a 09 20 2a 20 42 75 69 6c 64 20 73 79 6e 74 68 65 74 69 63 20 60 74 6f 6f 6c 2d 72 65 /**...*.Build.synthetic.`tool-re
8040 73 75 6c 74 60 20 65 72 72 6f 72 20 65 76 65 6e 74 73 20 66 6f 72 20 65 76 65 72 79 20 74 6f 6f sult`.error.events.for.every.too
8060 6c 20 63 61 6c 6c 20 69 6e 0a 09 20 2a 20 60 73 74 65 70 54 6f 6f 6c 43 61 6c 6c 73 60 20 74 68 l.call.in...*.`stepToolCalls`.th
8080 61 74 20 64 6f 65 73 20 6e 6f 74 20 79 65 74 20 68 61 76 65 20 61 20 72 65 63 6f 72 64 65 64 20 at.does.not.yet.have.a.recorded.
80a0 72 65 73 75 6c 74 20 69 6e 20 60 63 68 75 6e 6b 73 60 2e 0a 09 20 2a 0a 09 20 2a 20 57 68 65 6e result.in.`chunks`....*...*.When
80c0 20 61 20 74 6f 6f 6c 20 62 61 74 63 68 20 69 73 20 70 61 72 74 69 61 6c 6c 79 20 72 65 73 6f 6c .a.tool.batch.is.partially.resol
80e0 76 65 64 20 e2 80 94 20 65 2e 67 2e 20 6f 6e 65 20 74 6f 6f 6c 20 65 6d 69 74 74 65 64 20 61 0a ved.....e.g..one.tool.emitted.a.
8100 09 20 2a 20 60 74 6f 6f 6c 2d 65 72 72 6f 72 60 20 77 68 69 6c 65 20 69 74 73 20 73 69 62 6c 69 ..*.`tool-error`.while.its.sibli
8120 6e 67 73 20 77 65 72 65 20 6e 65 76 65 72 20 65 78 65 63 75 74 65 64 2c 20 6f 72 20 74 68 65 20 ngs.were.never.executed,.or.the.
8140 73 74 72 65 61 6d 0a 09 20 2a 20 61 62 6f 72 74 65 64 20 6d 69 64 2d 62 61 74 63 68 20 e2 80 94 stream...*.aborted.mid-batch....
8160 20 74 68 65 20 75 6e 72 65 73 6f 6c 76 65 64 20 74 6f 6f 6c 2d 63 61 6c 6c 20 49 44 73 20 61 72 .the.unresolved.tool-call.IDs.ar
8180 65 20 72 65 67 69 73 74 65 72 65 64 20 69 6e 20 74 68 65 0a 09 20 2a 20 68 69 73 74 6f 72 79 20 e.registered.in.the...*.history.
81a0 28 69 6e 73 69 64 65 20 60 74 6f 6f 6c 2d 62 61 74 63 68 60 20 63 68 75 6e 6b 73 29 20 62 75 74 (inside.`tool-batch`.chunks).but
81c0 20 68 61 76 65 20 6e 6f 20 6d 61 74 63 68 69 6e 67 20 72 65 73 75 6c 74 2e 20 4f 6e 20 74 68 65 .have.no.matching.result..On.the
81e0 0a 09 20 2a 20 6e 65 78 74 20 4c 4c 4d 20 72 6f 75 6e 64 2d 74 72 69 70 20 74 68 65 20 41 49 20 ...*.next.LLM.round-trip.the.AI.
8200 53 44 4b 20 74 68 72 6f 77 73 20 60 4d 69 73 73 69 6e 67 54 6f 6f 6c 52 65 73 75 6c 74 73 45 72 SDK.throws.`MissingToolResultsEr
8220 72 6f 72 60 2e 20 46 69 6c 6c 69 6e 67 0a 09 20 2a 20 69 6e 20 60 69 73 45 72 72 6f 72 3a 20 74 ror`..Filling...*.in.`isError:.t
8240 72 75 65 60 20 72 65 73 75 6c 74 73 20 66 6f 72 20 74 68 6f 73 65 20 6f 72 70 68 61 6e 65 64 20 rue`.results.for.those.orphaned.
8260 49 44 73 20 6b 65 65 70 73 20 74 68 65 20 6f 6e 2d 74 68 65 2d 77 69 72 65 0a 09 20 2a 20 74 6f IDs.keeps.the.on-the-wire...*.to
8280 6f 6c 2d 63 61 6c 6c 2f 74 6f 6f 6c 2d 72 65 73 75 6c 74 20 70 61 69 72 69 6e 67 20 63 6f 6d 70 ol-call/tool-result.pairing.comp
82a0 6c 65 74 65 2e 0a 09 20 2a 0a 09 20 2a 20 43 61 6c 6c 65 72 20 69 73 20 72 65 73 70 6f 6e 73 69 lete....*...*.Caller.is.responsi
82c0 62 6c 65 20 66 6f 72 20 60 61 70 70 65 6e 64 45 76 65 6e 74 54 6f 43 68 75 6e 6b 73 28 63 68 75 ble.for.`appendEventToChunks(chu
82e0 6e 6b 73 2c 20 65 76 74 29 60 20 2b 20 60 79 69 65 6c 64 60 69 6e 67 0a 09 20 2a 20 65 61 63 68 nks,.evt)`.+.`yield`ing...*.each
8300 20 72 65 74 75 72 6e 65 64 20 65 76 65 6e 74 2e 0a 09 20 2a 2f 0a 09 70 72 69 76 61 74 65 20 73 .returned.event....*/..private.s
8320 79 6e 74 68 65 73 69 7a 65 52 65 73 69 64 75 61 6c 54 6f 6f 6c 52 65 73 75 6c 74 73 28 0a 09 09 ynthesizeResidualToolResults(...
8340 73 74 65 70 54 6f 6f 6c 43 61 6c 6c 73 3a 20 54 6f 6f 6c 43 61 6c 6c 5b 5d 2c 0a 09 09 63 68 75 stepToolCalls:.ToolCall[],...chu
8360 6e 6b 73 3a 20 43 68 75 6e 6b 5b 5d 2c 0a 09 09 64 65 66 61 75 6c 74 4d 65 73 73 61 67 65 3a 20 nks:.Chunk[],...defaultMessage:.
8380 73 74 72 69 6e 67 2c 0a 09 29 3a 20 41 67 65 6e 74 45 76 65 6e 74 5b 5d 20 7b 0a 09 09 63 6f 6e string,..):.AgentEvent[].{...con
83a0 73 74 20 72 65 73 75 6c 74 73 3a 20 41 67 65 6e 74 45 76 65 6e 74 5b 5d 20 3d 20 5b 5d 3b 0a 09 st.results:.AgentEvent[].=.[];..
83c0 09 63 6f 6e 73 74 20 72 65 73 6f 6c 76 65 64 20 3d 20 6e 65 77 20 53 65 74 3c 73 74 72 69 6e 67 .const.resolved.=.new.Set<string
83e0 3e 28 29 3b 0a 09 09 66 6f 72 20 28 63 6f 6e 73 74 20 63 20 6f 66 20 63 68 75 6e 6b 73 29 20 7b >();...for.(const.c.of.chunks).{
8400 0a 09 09 09 69 66 20 28 63 2e 74 79 70 65 20 21 3d 3d 20 22 74 6f 6f 6c 2d 62 61 74 63 68 22 29 ....if.(c.type.!==."tool-batch")
8420 20 63 6f 6e 74 69 6e 75 65 3b 0a 09 09 09 66 6f 72 20 28 63 6f 6e 73 74 20 65 6e 74 72 79 20 6f .continue;....for.(const.entry.o
8440 66 20 63 2e 63 61 6c 6c 73 29 20 7b 0a 09 09 09 09 69 66 20 28 65 6e 74 72 79 2e 72 65 73 75 6c f.c.calls).{.....if.(entry.resul
8460 74 20 21 3d 3d 20 75 6e 64 65 66 69 6e 65 64 29 20 72 65 73 6f 6c 76 65 64 2e 61 64 64 28 65 6e t.!==.undefined).resolved.add(en
8480 74 72 79 2e 69 64 29 3b 0a 09 09 09 7d 0a 09 09 7d 0a 09 09 66 6f 72 20 28 63 6f 6e 73 74 20 74 try.id);....}...}...for.(const.t
84a0 63 20 6f 66 20 73 74 65 70 54 6f 6f 6c 43 61 6c 6c 73 29 20 7b 0a 09 09 09 69 66 20 28 72 65 73 c.of.stepToolCalls).{....if.(res
84c0 6f 6c 76 65 64 2e 68 61 73 28 74 63 2e 69 64 29 29 20 63 6f 6e 74 69 6e 75 65 3b 0a 09 09 09 63 olved.has(tc.id)).continue;....c
84e0 6f 6e 73 74 20 74 72 3a 20 54 6f 6f 6c 52 65 73 75 6c 74 20 3d 20 7b 0a 09 09 09 09 74 6f 6f 6c onst.tr:.ToolResult.=.{.....tool
8500 43 61 6c 6c 49 64 3a 20 74 63 2e 69 64 2c 0a 09 09 09 09 74 6f 6f 6c 4e 61 6d 65 3a 20 74 63 2e CallId:.tc.id,.....toolName:.tc.
8520 6e 61 6d 65 2c 0a 09 09 09 09 72 65 73 75 6c 74 3a 20 64 65 66 61 75 6c 74 4d 65 73 73 61 67 65 name,.....result:.defaultMessage
8540 2c 0a 09 09 09 09 69 73 45 72 72 6f 72 3a 20 74 72 75 65 2c 0a 09 09 09 7d 3b 0a 09 09 09 63 6f ,.....isError:.true,....};....co
8560 6e 73 74 20 65 76 74 3a 20 41 67 65 6e 74 45 76 65 6e 74 20 3d 20 7b 20 74 79 70 65 3a 20 22 74 nst.evt:.AgentEvent.=.{.type:."t
8580 6f 6f 6c 2d 72 65 73 75 6c 74 22 2c 20 74 6f 6f 6c 52 65 73 75 6c 74 3a 20 74 72 20 7d 3b 0a 09 ool-result",.toolResult:.tr.};..
85a0 09 09 72 65 73 75 6c 74 73 2e 70 75 73 68 28 65 76 74 29 3b 0a 09 09 7d 0a 09 09 72 65 74 75 72 ..results.push(evt);...}...retur
85c0 6e 20 72 65 73 75 6c 74 73 3b 0a 09 7d 0a 0a 09 2f 2a 2a 0a 09 20 2a 20 42 75 69 6c 64 20 74 68 n.results;..}.../**...*.Build.th
85e0 65 20 70 72 6f 76 69 64 65 72 2d 66 61 63 69 6e 67 20 72 65 71 75 65 73 74 20 63 6f 6e 74 65 78 e.provider-facing.request.contex
8600 74 20 73 68 61 72 65 64 20 62 79 20 60 72 75 6e 28 29 60 20 61 6e 64 0a 09 20 2a 20 60 77 61 72 t.shared.by.`run()`.and...*.`war
8620 6d 43 61 63 68 65 28 29 60 3a 20 74 68 65 20 6d 6f 64 65 6c 20 66 61 63 74 6f 72 79 2c 20 74 68 mCache()`:.the.model.factory,.th
8640 65 20 28 70 6f 73 73 69 62 6c 79 20 60 6d 63 70 5f 2a 60 2d 70 72 65 66 69 78 65 64 29 20 74 6f e.(possibly.`mcp_*`-prefixed).to
8660 6f 6c 0a 09 20 2a 20 73 65 74 2c 20 74 68 65 20 61 73 73 65 6d 62 6c 65 64 20 73 79 73 74 65 6d ol...*.set,.the.assembled.system
8680 20 70 72 6f 6d 70 74 20 28 77 69 74 68 20 74 68 65 20 43 6c 61 75 64 65 2d 43 6f 64 65 20 62 69 .prompt.(with.the.Claude-Code.bi
86a0 6c 6c 69 6e 67 20 68 65 61 64 65 72 20 2b 0a 09 20 2a 20 69 64 65 6e 74 69 74 79 20 70 72 65 61 lling.header.+...*.identity.prea
86c0 6d 62 6c 65 20 66 6f 72 20 74 68 65 20 4f 41 75 74 68 20 66 6c 6f 77 29 2c 20 61 6e 64 20 74 68 mble.for.the.OAuth.flow),.and.th
86e0 65 20 74 77 6f 20 70 72 6f 76 69 64 65 72 2d 66 61 6d 69 6c 79 20 66 6c 61 67 73 2e 0a 09 20 2a e.two.provider-family.flags....*
8700 0a 09 20 2a 20 60 6d 65 73 73 61 67 65 73 46 6f 72 42 69 6c 6c 69 6e 67 60 20 69 73 20 74 68 65 ...*.`messagesForBilling`.is.the
8720 20 6d 65 73 73 61 67 65 20 6c 69 73 74 20 74 68 65 20 62 69 6c 6c 69 6e 67 20 68 65 61 64 65 72 .message.list.the.billing.header
8740 20 73 61 6d 70 6c 65 73 20 69 74 73 0a 09 20 2a 20 66 69 72 73 74 2d 75 73 65 72 2d 6d 65 73 73 .samples.its...*.first-user-mess
8760 61 67 65 20 74 65 78 74 20 66 72 6f 6d 2e 20 60 72 75 6e 28 29 60 20 70 61 73 73 65 73 20 60 74 age.text.from..`run()`.passes.`t
8780 68 69 73 2e 6d 65 73 73 61 67 65 73 60 20 28 77 68 69 63 68 0a 09 20 2a 20 61 6c 72 65 61 64 79 his.messages`.(which...*.already
87a0 20 69 6e 63 6c 75 64 65 73 20 74 68 65 20 6a 75 73 74 2d 70 75 73 68 65 64 20 6c 69 76 65 20 75 .includes.the.just-pushed.live.u
87c0 73 65 72 20 74 75 72 6e 29 3b 20 60 77 61 72 6d 43 61 63 68 65 28 29 60 20 70 61 73 73 65 73 20 ser.turn);.`warmCache()`.passes.
87e0 74 68 65 0a 09 20 2a 20 67 65 6e 75 69 6e 65 20 68 69 73 74 6f 72 79 20 73 6f 20 74 68 65 20 68 the...*.genuine.history.so.the.h
8800 65 61 64 65 72 20 e2 80 94 20 61 6e 64 20 74 68 65 72 65 66 6f 72 65 20 74 68 65 20 63 61 63 68 eader.....and.therefore.the.cach
8820 65 64 20 70 72 65 66 69 78 20 e2 80 94 20 69 73 0a 09 20 2a 20 62 79 74 65 2d 69 64 65 6e 74 69 ed.prefix.....is...*.byte-identi
8840 63 61 6c 20 74 6f 20 77 68 61 74 20 74 68 65 20 6e 65 78 74 20 72 65 61 6c 20 74 75 72 6e 20 77 cal.to.what.the.next.real.turn.w
8860 69 6c 6c 20 73 65 6e 64 2e 0a 09 20 2a 2f 0a 09 70 72 69 76 61 74 65 20 62 75 69 6c 64 4c 6c 6d ill.send....*/..private.buildLlm
8880 43 6f 6e 74 65 78 74 28 6d 65 73 73 61 67 65 73 46 6f 72 42 69 6c 6c 69 6e 67 3a 20 43 68 61 74 Context(messagesForBilling:.Chat
88a0 4d 65 73 73 61 67 65 5b 5d 29 3a 20 7b 0a 09 09 69 73 43 6c 61 75 64 65 4f 41 75 74 68 3a 20 62 Message[]):.{...isClaudeOAuth:.b
88c0 6f 6f 6c 65 61 6e 3b 0a 09 09 75 73 65 73 41 6e 74 68 72 6f 70 69 63 53 44 4b 3a 20 62 6f 6f 6c oolean;...usesAnthropicSDK:.bool
88e0 65 61 6e 3b 0a 09 09 70 72 6f 76 69 64 65 72 46 61 63 74 6f 72 79 3a 20 4d 6f 64 65 6c 46 61 63 ean;...providerFactory:.ModelFac
8900 74 6f 72 79 3b 0a 09 09 74 6f 6f 6c 73 3a 20 52 65 63 6f 72 64 3c 73 74 72 69 6e 67 2c 20 54 6f tory;...tools:.Record<string,.To
8920 6f 6c 3e 3b 0a 09 09 73 79 73 74 65 6d 50 72 6f 6d 70 74 3a 20 73 74 72 69 6e 67 3b 0a 09 7d 20 ol>;...systemPrompt:.string;..}.
8940 7b 0a 09 09 63 6f 6e 73 74 20 72 65 67 69 73 74 72 79 20 3d 20 63 72 65 61 74 65 54 6f 6f 6c 52 {...const.registry.=.createToolR
8960 65 67 69 73 74 72 79 28 74 68 69 73 2e 63 6f 6e 66 69 67 2e 74 6f 6f 6c 73 29 3b 0a 09 09 2f 2f egistry(this.config.tools);...//
8980 20 60 69 73 43 6c 61 75 64 65 4f 41 75 74 68 60 20 67 61 74 65 73 20 43 6c 61 75 64 65 2d 43 6f .`isClaudeOAuth`.gates.Claude-Co
89a0 64 65 2d 43 4c 49 2d 73 70 65 63 69 66 69 63 20 62 65 68 61 76 69 6f 72 3a 20 62 69 6c 6c 69 6e de-CLI-specific.behavior:.billin
89c0 67 2d 68 65 61 64 65 72 0a 09 09 2f 2f 20 69 6e 6a 65 63 74 69 6f 6e 2c 20 69 64 65 6e 74 69 74 g-header...//.injection,.identit
89e0 79 20 70 72 65 61 6d 62 6c 65 2c 20 60 6d 63 70 5f 2a 60 20 74 6f 6f 6c 20 6e 61 6d 65 20 70 72 y.preamble,.`mcp_*`.tool.name.pr
8a00 65 66 69 78 2c 20 61 6e 64 20 65 78 74 65 6e 64 65 64 0a 09 09 2f 2f 20 74 68 69 6e 6b 69 6e 67 efix,.and.extended...//.thinking
8a20 20 63 6f 6e 66 69 67 2e 20 4f 6e 6c 79 20 74 68 65 20 4f 41 75 74 68 20 66 6c 6f 77 20 28 70 72 .config..Only.the.OAuth.flow.(pr
8a40 6f 76 69 64 65 72 3d 22 61 6e 74 68 72 6f 70 69 63 22 29 20 6e 65 65 64 73 20 74 68 65 73 65 2e ovider="anthropic").needs.these.
8a60 0a 09 09 2f 2f 20 60 75 73 65 73 41 6e 74 68 72 6f 70 69 63 53 44 4b 60 20 69 73 20 74 68 65 20 ...//.`usesAnthropicSDK`.is.the.
8a80 62 72 6f 61 64 65 72 20 63 61 74 65 67 6f 72 79 20 e2 80 94 20 61 6e 79 20 70 72 6f 76 69 64 65 broader.category.....any.provide
8aa0 72 20 77 68 6f 73 65 0a 09 09 2f 2f 20 72 65 71 75 65 73 74 73 20 61 72 65 20 73 65 72 69 61 6c r.whose...//.requests.are.serial
8ac0 69 7a 65 64 20 62 79 20 60 40 61 69 2d 73 64 6b 2f 61 6e 74 68 72 6f 70 69 63 60 20 61 6e 64 20 ized.by.`@ai-sdk/anthropic`.and.
8ae0 74 68 65 72 65 66 6f 72 65 20 65 78 70 65 63 74 0a 09 09 2f 2f 20 41 6e 74 68 72 6f 70 69 63 2d therefore.expect...//.Anthropic-
8b00 73 74 79 6c 65 20 60 63 61 63 68 65 5f 63 6f 6e 74 72 6f 6c 60 20 6d 61 72 6b 65 72 73 2e 20 54 style.`cache_control`.markers..T
8b20 6f 64 61 79 20 74 68 61 74 27 73 20 43 6c 61 75 64 65 20 4f 41 75 74 68 0a 09 09 2f 2f 20 70 6c oday.that's.Claude.OAuth...//.pl
8b40 75 73 20 4f 70 65 6e 43 6f 64 65 20 47 6f 27 73 20 4d 69 6e 69 4d 61 78 2f 51 77 65 6e 20 72 6f us.OpenCode.Go's.MiniMax/Qwen.ro
8b60 75 74 65 73 2e 0a 09 09 63 6f 6e 73 74 20 69 73 43 6c 61 75 64 65 4f 41 75 74 68 20 3d 20 74 68 utes....const.isClaudeOAuth.=.th
8b80 69 73 2e 63 6f 6e 66 69 67 2e 70 72 6f 76 69 64 65 72 20 3d 3d 3d 20 22 61 6e 74 68 72 6f 70 69 is.config.provider.===."anthropi
8ba0 63 22 3b 0a 09 09 63 6f 6e 73 74 20 75 73 65 73 41 6e 74 68 72 6f 70 69 63 53 44 4b 20 3d 20 69 c";...const.usesAnthropicSDK.=.i
8bc0 73 43 6c 61 75 64 65 4f 41 75 74 68 20 7c 7c 20 74 68 69 73 2e 63 6f 6e 66 69 67 2e 70 72 6f 76 sClaudeOAuth.||.this.config.prov
8be0 69 64 65 72 20 3d 3d 3d 20 22 6f 70 65 6e 63 6f 64 65 2d 61 6e 74 68 72 6f 70 69 63 22 3b 0a 09 ider.===."opencode-anthropic";..
8c00 09 63 6f 6e 73 74 20 70 72 6f 76 69 64 65 72 46 61 63 74 6f 72 79 20 3d 20 63 72 65 61 74 65 50 .const.providerFactory.=.createP
8c20 72 6f 76 69 64 65 72 28 7b 0a 09 09 09 61 70 69 4b 65 79 3a 20 74 68 69 73 2e 63 6f 6e 66 69 67 rovider({....apiKey:.this.config
8c40 2e 61 70 69 4b 65 79 2c 0a 09 09 09 62 61 73 65 55 52 4c 3a 20 74 68 69 73 2e 63 6f 6e 66 69 67 .apiKey,....baseURL:.this.config
8c60 2e 62 61 73 65 55 52 4c 2c 0a 09 09 09 70 72 6f 76 69 64 65 72 3a 20 74 68 69 73 2e 63 6f 6e 66 .baseURL,....provider:.this.conf
8c80 69 67 2e 70 72 6f 76 69 64 65 72 2c 0a 09 09 09 63 6c 61 75 64 65 43 72 65 64 65 6e 74 69 61 6c ig.provider,....claudeCredential
8ca0 73 3a 20 74 68 69 73 2e 63 6f 6e 66 69 67 2e 63 6c 61 75 64 65 43 72 65 64 65 6e 74 69 61 6c 73 s:.this.config.claudeCredentials
8cc0 2c 0a 09 09 09 74 61 62 49 64 3a 20 74 68 69 73 2e 63 6f 6e 66 69 67 2e 74 61 62 49 64 2c 0a 09 ,....tabId:.this.config.tabId,..
8ce0 09 7d 29 3b 0a 0a 09 09 2f 2f 20 4f 6e 6c 79 20 74 68 65 20 43 6c 61 75 64 65 20 4f 41 75 74 68 .});....//.Only.the.Claude.OAuth
8d00 20 66 6c 6f 77 20 65 78 70 65 63 74 73 20 60 6d 63 70 5f 2a 60 20 70 72 65 66 69 78 65 64 20 74 .flow.expects.`mcp_*`.prefixed.t
8d20 6f 6f 6c 20 6e 61 6d 65 73 2e 20 54 68 65 0a 09 09 2f 2f 20 4f 70 65 6e 43 6f 64 65 20 47 6f 20 ool.names..The...//.OpenCode.Go.
8d40 61 6e 74 68 72 6f 70 69 63 2d 66 6f 72 6d 61 74 20 65 6e 64 70 6f 69 6e 74 20 70 61 73 73 65 73 anthropic-format.endpoint.passes
8d60 20 74 6f 6f 6c 73 20 74 68 72 6f 75 67 68 20 74 6f 20 4d 69 6e 69 4d 61 78 0a 09 09 2f 2f 20 6f .tools.through.to.MiniMax...//.o
8d80 72 20 51 77 65 6e 2c 20 77 68 69 63 68 20 65 78 70 65 63 74 20 72 61 77 20 6e 61 6d 65 73 2e 0a r.Qwen,.which.expect.raw.names..
8da0 09 09 63 6f 6e 73 74 20 61 69 54 6f 6f 6c 73 20 3d 20 72 65 67 69 73 74 72 79 2e 67 65 74 41 49 ..const.aiTools.=.registry.getAI
8dc0 53 44 4b 54 6f 6f 6c 73 28 29 3b 0a 09 09 63 6f 6e 73 74 20 74 6f 6f 6c 73 20 3d 20 69 73 43 6c SDKTools();...const.tools.=.isCl
8de0 61 75 64 65 4f 41 75 74 68 0a 09 09 09 3f 20 4f 62 6a 65 63 74 2e 66 72 6f 6d 45 6e 74 72 69 65 audeOAuth....?.Object.fromEntrie
8e00 73 28 0a 09 09 09 09 09 4f 62 6a 65 63 74 2e 65 6e 74 72 69 65 73 28 61 69 54 6f 6f 6c 73 29 2e s(......Object.entries(aiTools).
8e20 6d 61 70 28 28 5b 6e 61 6d 65 2c 20 74 6f 6f 6c 5d 29 20 3d 3e 20 5b 70 72 65 66 69 78 54 6f 6f map(([name,.tool]).=>.[prefixToo
8e40 6c 4e 61 6d 65 28 6e 61 6d 65 29 2c 20 74 6f 6f 6c 5d 29 2c 0a 09 09 09 09 29 0a 09 09 09 3a 20 lName(name),.tool]),.....)....:.
8e60 61 69 54 6f 6f 6c 73 3b 0a 0a 09 09 2f 2f 20 42 75 69 6c 64 20 73 79 73 74 65 6d 20 70 72 6f 6d aiTools;....//.Build.system.prom
8e80 70 74 20 e2 80 94 20 43 6c 61 75 64 65 20 4f 41 75 74 68 20 72 65 71 75 65 73 74 73 20 65 6d 62 pt.....Claude.OAuth.requests.emb
8ea0 65 64 20 61 20 62 69 6c 6c 69 6e 67 20 68 65 61 64 65 72 0a 09 09 2f 2f 20 61 6e 64 20 74 68 65 ed.a.billing.header...//.and.the
8ec0 20 43 6c 61 75 64 65 20 43 6f 64 65 20 69 64 65 6e 74 69 74 79 20 70 72 65 61 6d 62 6c 65 20 73 .Claude.Code.identity.preamble.s
8ee0 6f 20 41 6e 74 68 72 6f 70 69 63 20 72 65 63 6f 67 6e 69 7a 65 73 20 74 68 65 0a 09 09 2f 2f 20 o.Anthropic.recognizes.the...//.
8f00 72 65 71 75 65 73 74 20 61 73 20 63 6f 6d 69 6e 67 20 66 72 6f 6d 20 74 68 65 20 6f 66 66 69 63 request.as.coming.from.the.offic
8f20 69 61 6c 20 43 4c 49 2e 0a 09 09 6c 65 74 20 73 79 73 74 65 6d 50 72 6f 6d 70 74 20 3d 20 74 68 ial.CLI....let.systemPrompt.=.th
8f40 69 73 2e 63 6f 6e 66 69 67 2e 73 79 73 74 65 6d 50 72 6f 6d 70 74 3b 0a 09 09 69 66 20 28 69 73 is.config.systemPrompt;...if.(is
8f60 43 6c 61 75 64 65 4f 41 75 74 68 29 20 7b 0a 09 09 09 2f 2f 20 60 62 75 69 6c 64 42 69 6c 6c 69 ClaudeOAuth).{....//.`buildBilli
8f80 6e 67 48 65 61 64 65 72 56 61 6c 75 65 60 20 68 69 73 74 6f 72 69 63 61 6c 6c 79 20 74 6f 6f 6b ngHeaderValue`.historically.took
8fa0 20 60 7b 20 72 6f 6c 65 2c 20 63 6f 6e 74 65 6e 74 3a 20 73 74 72 69 6e 67 20 7d 5b 5d 60 2e 0a .`{.role,.content:.string.}[]`..
8fc0 09 09 09 2f 2f 20 50 72 6f 6a 65 63 74 20 74 68 65 20 6e 65 77 20 63 68 75 6e 6b 2d 62 61 73 65 ...//.Project.the.new.chunk-base
8fe0 64 20 43 68 61 74 4d 65 73 73 61 67 65 20 73 68 61 70 65 20 6f 6e 74 6f 20 74 68 61 74 20 6c 65 d.ChatMessage.shape.onto.that.le
9000 67 61 63 79 20 73 68 61 70 65 0a 09 09 09 2f 2f 20 62 79 20 73 74 72 69 6e 67 69 66 79 69 6e 67 gacy.shape....//.by.stringifying
9020 20 74 65 78 74 20 63 68 75 6e 6b 73 2e 20 4f 6e 6c 79 20 74 68 65 20 66 69 72 73 74 20 75 73 65 .text.chunks..Only.the.first.use
9040 72 20 6d 65 73 73 61 67 65 27 73 20 74 65 78 74 20 69 73 0a 09 09 09 2f 2f 20 61 63 74 75 61 6c r.message's.text.is....//.actual
9060 6c 79 20 75 73 65 64 20 28 73 65 65 20 65 78 74 72 61 63 74 46 69 72 73 74 55 73 65 72 4d 65 73 ly.used.(see.extractFirstUserMes
9080 73 61 67 65 54 65 78 74 29 20 e2 80 94 20 6e 6f 6e 2d 74 65 78 74 20 63 68 75 6e 6b 73 0a 09 09 sageText).....non-text.chunks...
90a0 09 2f 2f 20 73 61 66 65 6c 79 20 63 6f 6e 74 72 69 62 75 74 65 20 6e 6f 74 68 69 6e 67 2e 0a 09 .//.safely.contribute.nothing...
90c0 09 09 63 6f 6e 73 74 20 6c 65 67 61 63 79 53 68 61 70 65 20 3d 20 6d 65 73 73 61 67 65 73 46 6f ..const.legacyShape.=.messagesFo
90e0 72 42 69 6c 6c 69 6e 67 2e 6d 61 70 28 28 6d 29 20 3d 3e 20 28 7b 0a 09 09 09 09 72 6f 6c 65 3a rBilling.map((m).=>.({.....role:
9100 20 6d 2e 72 6f 6c 65 2c 0a 09 09 09 09 63 6f 6e 74 65 6e 74 3a 20 6d 2e 63 68 75 6e 6b 73 0a 09 .m.role,.....content:.m.chunks..
9120 09 09 09 09 2e 66 69 6c 74 65 72 28 28 63 29 3a 20 63 20 69 73 20 45 78 74 72 61 63 74 3c 43 68 .....filter((c):.c.is.Extract<Ch
9140 75 6e 6b 2c 20 7b 20 74 79 70 65 3a 20 22 74 65 78 74 22 20 7d 3e 20 3d 3e 20 63 2e 74 79 70 65 unk,.{.type:."text".}>.=>.c.type
9160 20 3d 3d 3d 20 22 74 65 78 74 22 29 0a 09 09 09 09 09 2e 6d 61 70 28 28 63 29 20 3d 3e 20 63 2e .===."text").......map((c).=>.c.
9180 74 65 78 74 29 0a 09 09 09 09 09 2e 6a 6f 69 6e 28 22 22 29 2c 0a 09 09 09 7d 29 29 3b 0a 09 09 text).......join(""),....}));...
91a0 09 63 6f 6e 73 74 20 62 69 6c 6c 69 6e 67 48 65 61 64 65 72 20 3d 20 62 75 69 6c 64 42 69 6c 6c .const.billingHeader.=.buildBill
91c0 69 6e 67 48 65 61 64 65 72 56 61 6c 75 65 28 6c 65 67 61 63 79 53 68 61 70 65 29 3b 0a 09 09 09 ingHeaderValue(legacyShape);....
91e0 73 79 73 74 65 6d 50 72 6f 6d 70 74 20 3d 20 60 24 7b 62 69 6c 6c 69 6e 67 48 65 61 64 65 72 7d systemPrompt.=.`${billingHeader}
9200 5c 6e 24 7b 53 59 53 54 45 4d 5f 49 44 45 4e 54 49 54 59 7d 5c 6e 5c 6e 24 7b 73 79 73 74 65 6d \n${SYSTEM_IDENTITY}\n\n${system
9220 50 72 6f 6d 70 74 7d 60 3b 0a 09 09 7d 0a 0a 09 09 72 65 74 75 72 6e 20 7b 20 69 73 43 6c 61 75 Prompt}`;...}....return.{.isClau
9240 64 65 4f 41 75 74 68 2c 20 75 73 65 73 41 6e 74 68 72 6f 70 69 63 53 44 4b 2c 20 70 72 6f 76 69 deOAuth,.usesAnthropicSDK,.provi
9260 64 65 72 46 61 63 74 6f 72 79 2c 20 74 6f 6f 6c 73 2c 20 73 79 73 74 65 6d 50 72 6f 6d 70 74 20 derFactory,.tools,.systemPrompt.
9280 7d 3b 0a 09 7d 0a 0a 09 2f 2a 2a 0a 09 20 2a 20 50 72 6f 6d 70 74 2d 63 61 63 68 65 20 57 41 52 };..}.../**...*.Prompt-cache.WAR
92a0 4d 49 4e 47 20 72 65 70 6c 61 79 20 28 4e 4f 54 20 61 20 72 65 61 6c 20 74 75 72 6e 29 2e 0a 09 MING.replay.(NOT.a.real.turn)...
92c0 20 2a 0a 09 20 2a 20 52 65 2d 73 65 6e 64 73 20 74 68 65 20 45 58 41 43 54 20 63 61 63 68 65 64 .*...*.Re-sends.the.EXACT.cached
92e0 20 70 72 65 66 69 78 20 e2 80 94 20 73 79 73 74 65 6d 20 70 72 6f 6d 70 74 20 2b 20 74 6f 6f 6c .prefix.....system.prompt.+.tool
9300 20 64 65 66 69 6e 69 74 69 6f 6e 73 20 2b 20 74 68 65 0a 09 20 2a 20 74 61 62 27 73 20 67 65 6e .definitions.+.the...*.tab's.gen
9320 75 69 6e 65 20 60 68 69 73 74 6f 72 79 60 20 77 69 74 68 20 69 64 65 6e 74 69 63 61 6c 20 41 6e uine.`history`.with.identical.An
9340 74 68 72 6f 70 69 63 20 60 63 61 63 68 65 5f 63 6f 6e 74 72 6f 6c 60 0a 09 20 2a 20 62 72 65 61 thropic.`cache_control`...*.brea
9360 6b 70 6f 69 6e 74 73 20 e2 80 94 20 70 6c 75 73 20 61 20 73 69 6e 67 6c 65 20 74 72 69 76 69 61 kpoints.....plus.a.single.trivia
9380 6c 20 74 68 72 6f 77 61 77 61 79 20 75 73 65 72 20 74 75 72 6e 2c 20 69 6e 20 4f 4e 45 0a 09 20 l.throwaway.user.turn,.in.ONE...
93a0 2a 20 6e 6f 6e 2d 73 74 72 65 61 6d 69 6e 67 2d 72 65 6c 65 76 61 6e 74 20 72 65 71 75 65 73 74 *.non-streaming-relevant.request
93c0 2e 20 52 65 75 73 69 6e 67 20 74 68 61 74 20 69 64 65 6e 74 69 63 61 6c 20 70 72 65 66 69 78 20 ..Reusing.that.identical.prefix.
93e0 72 65 67 69 73 74 65 72 73 20 61 0a 09 20 2a 20 63 61 63 68 65 20 52 45 41 44 20 6f 6e 20 74 68 registers.a...*.cache.READ.on.th
9400 65 20 70 72 6f 76 69 64 65 72 2c 20 77 68 69 63 68 20 72 65 66 72 65 73 68 65 73 20 74 68 65 20 e.provider,.which.refreshes.the.
9420 7e 35 2d 6d 69 6e 75 74 65 20 70 72 6f 6d 70 74 2d 63 61 63 68 65 20 54 54 4c 0a 09 20 2a 20 73 ~5-minute.prompt-cache.TTL...*.s
9440 6f 20 74 68 65 20 75 73 65 72 27 73 20 4e 45 58 54 20 72 65 61 6c 20 6d 65 73 73 61 67 65 20 6c o.the.user's.NEXT.real.message.l
9460 61 6e 64 73 20 6f 6e 20 61 20 73 74 69 6c 6c 2d 77 61 72 6d 20 63 61 63 68 65 2e 20 54 68 65 20 ands.on.a.still-warm.cache..The.
9480 6d 6f 64 65 6c 27 73 0a 09 20 2a 20 72 65 70 6c 79 20 28 61 20 62 61 72 65 20 22 2e 22 29 20 69 model's...*.reply.(a.bare.".").i
94a0 73 20 64 69 73 63 61 72 64 65 64 2e 0a 09 20 2a 0a 09 20 2a 20 53 74 72 69 63 74 6c 79 20 73 69 s.discarded....*...*.Strictly.si
94c0 64 65 2d 65 66 66 65 63 74 20 66 72 65 65 2c 20 62 79 20 64 65 73 69 67 6e 3a 0a 09 20 2a 20 20 de-effect.free,.by.design:...*..
94e0 2d 20 64 6f 65 73 20 4e 4f 54 20 6d 75 74 61 74 65 20 60 74 68 69 73 2e 6d 65 73 73 61 67 65 73 -.does.NOT.mutate.`this.messages
9500 60 20 28 68 69 73 74 6f 72 79 20 69 73 20 70 61 73 73 65 64 20 69 6e 2c 20 6e 65 76 65 72 20 73 `.(history.is.passed.in,.never.s
9520 74 6f 72 65 64 29 3b 0a 09 20 2a 20 20 2d 20 64 6f 65 73 20 4e 4f 54 20 63 68 61 6e 67 65 20 60 tored);...*..-.does.NOT.change.`
9540 74 68 69 73 2e 73 74 61 74 75 73 60 3b 0a 09 20 2a 20 20 2d 20 65 6d 69 74 73 20 4e 4f 20 65 76 this.status`;...*..-.emits.NO.ev
9560 65 6e 74 73 20 61 6e 64 20 70 65 72 73 69 73 74 73 20 4e 4f 54 48 49 4e 47 2e 0a 09 20 2a 0a 09 ents.and.persists.NOTHING....*..
9580 20 2a 20 52 65 74 75 72 6e 73 20 74 68 65 20 72 65 71 75 65 73 74 27 73 20 60 75 73 61 67 65 60 .*.Returns.the.request's.`usage`
95a0 20 73 6f 20 74 68 65 20 63 61 6c 6c 65 72 20 63 61 6e 20 73 75 72 66 61 63 65 20 61 20 77 61 72 .so.the.caller.can.surface.a.war
95c0 6d 69 6e 67 2d 73 70 65 63 69 66 69 63 0a 09 20 2a 20 22 6c 61 73 74 20 72 65 71 75 65 73 74 22 ming-specific...*."last.request"
95e0 20 63 61 63 68 65 20 72 61 74 65 20 57 49 54 48 4f 55 54 20 70 6f 6c 6c 75 74 69 6e 67 20 74 68 .cache.rate.WITHOUT.polluting.th
9600 65 20 72 65 61 6c 20 43 61 63 68 65 20 52 61 74 65 20 6d 65 74 72 69 63 2e 0a 09 20 2a 20 54 68 e.real.Cache.Rate.metric....*.Th
9620 72 6f 77 73 20 6f 6e 20 70 72 6f 76 69 64 65 72 20 65 72 72 6f 72 20 73 6f 20 74 68 65 20 63 61 rows.on.provider.error.so.the.ca
9640 6c 6c 65 72 20 63 61 6e 20 73 75 72 66 61 63 65 20 69 74 20 69 6e 20 74 68 65 20 64 65 62 75 67 ller.can.surface.it.in.the.debug
9660 20 73 74 72 69 70 2e 0a 09 20 2a 2f 0a 09 2f 2a 2a 0a 09 20 2a 20 41 73 73 65 6d 62 6c 65 20 74 .strip....*/../**...*.Assemble.t
9680 68 65 20 60 73 74 72 65 61 6d 54 65 78 74 60 20 6f 70 74 69 6f 6e 73 20 74 68 61 74 20 44 45 46 he.`streamText`.options.that.DEF
96a0 49 4e 45 20 74 68 65 20 41 6e 74 68 72 6f 70 69 63 20 6d 65 73 73 61 67 65 2d 63 61 63 68 65 0a INE.the.Anthropic.message-cache.
96c0 09 20 2a 20 62 75 63 6b 65 74 2e 20 41 6e 74 68 72 6f 70 69 63 20 6b 65 79 73 20 74 68 65 20 6d ..*.bucket..Anthropic.keys.the.m
96e0 65 73 73 61 67 65 20 63 61 63 68 65 20 6f 6e 20 60 74 6f 6f 6c 5f 63 68 6f 69 63 65 60 20 61 6e essage.cache.on.`tool_choice`.an
9700 64 20 74 68 65 20 65 78 74 65 6e 64 65 64 2d 0a 09 20 2a 20 74 68 69 6e 6b 69 6e 67 20 70 61 72 d.the.extended-...*.thinking.par
9720 61 6d 65 74 65 72 73 20 28 65 6e 61 62 6c 65 2f 64 69 73 61 62 6c 65 20 2b 20 62 75 64 67 65 74 ameters.(enable/disable.+.budget
9740 2f 65 66 66 6f 72 74 29 20 e2 80 94 20 73 65 65 20 74 68 65 20 63 61 63 68 65 0a 09 20 2a 20 69 /effort).....see.the.cache...*.i
9760 6e 76 61 6c 69 64 61 74 69 6f 6e 20 74 61 62 6c 65 20 69 6e 20 74 68 65 69 72 20 70 72 6f 6d 70 nvalidation.table.in.their.promp
9780 74 2d 63 61 63 68 69 6e 67 20 64 6f 63 73 2e 20 60 72 75 6e 28 29 60 20 28 72 65 61 6c 20 74 75 t-caching.docs..`run()`.(real.tu
97a0 72 6e 73 29 20 61 6e 64 0a 09 20 2a 20 60 77 61 72 6d 43 61 63 68 65 28 29 60 20 28 69 64 6c 65 rns).and...*.`warmCache()`.(idle
97c0 20 77 61 72 6d 69 6e 67 29 20 4d 55 53 54 20 70 72 6f 64 75 63 65 20 69 64 65 6e 74 69 63 61 6c .warming).MUST.produce.identical
97e0 20 76 61 6c 75 65 73 20 68 65 72 65 2c 20 6f 72 20 74 68 65 79 0a 09 20 2a 20 77 72 69 74 65 2f .values.here,.or.they...*.write/
9800 72 65 61 64 20 74 77 6f 20 64 69 66 66 65 72 65 6e 74 20 63 61 63 68 65 73 3a 20 74 68 65 20 77 read.two.different.caches:.the.w
9820 61 72 6d 69 6e 67 20 72 65 70 6c 61 79 20 77 6f 75 6c 64 20 6b 65 65 70 20 74 68 65 20 77 72 6f arming.replay.would.keep.the.wro
9840 6e 67 0a 09 20 2a 20 62 75 63 6b 65 74 20 77 61 72 6d 20 61 6e 64 20 74 68 65 20 75 73 65 72 27 ng...*.bucket.warm.and.the.user'
9860 73 20 6e 65 78 74 20 72 65 61 6c 20 6d 65 73 73 61 67 65 20 77 6f 75 6c 64 20 73 74 69 6c 6c 20 s.next.real.message.would.still.
9880 6d 69 73 73 2e 0a 09 20 2a 0a 09 20 2a 20 60 6d 61 78 4f 75 74 70 75 74 54 6f 6b 65 6e 73 60 20 miss....*...*.`maxOutputTokens`.
98a0 69 73 20 4e 4f 54 20 63 61 63 68 65 2d 61 66 66 65 63 74 69 6e 67 2c 20 62 75 74 20 69 74 20 6d is.NOT.cache-affecting,.but.it.m
98c0 75 73 74 20 65 78 63 65 65 64 20 74 68 65 20 74 68 69 6e 6b 69 6e 67 0a 09 20 2a 20 62 75 64 67 ust.exceed.the.thinking...*.budg
98e0 65 74 20 6f 72 20 41 6e 74 68 72 6f 70 69 63 20 72 65 6a 65 63 74 73 20 74 68 65 20 72 65 71 75 et.or.Anthropic.rejects.the.requ
9900 65 73 74 2c 20 73 6f 20 77 65 20 6b 65 65 70 20 69 74 20 69 64 65 6e 74 69 63 61 6c 20 74 6f 6f est,.so.we.keep.it.identical.too
9920 2e 0a 09 20 2a 2f 0a 09 70 72 69 76 61 74 65 20 62 75 69 6c 64 53 74 72 65 61 6d 4f 70 74 69 6f ....*/..private.buildStreamOptio
9940 6e 73 28 61 72 67 73 3a 20 7b 0a 09 09 6d 6f 64 65 6c 3a 20 50 61 72 61 6d 65 74 65 72 73 3c 74 ns(args:.{...model:.Parameters<t
9960 79 70 65 6f 66 20 73 74 72 65 61 6d 54 65 78 74 3e 5b 30 5d 5b 22 6d 6f 64 65 6c 22 5d 3b 0a 09 ypeof.streamText>[0]["model"];..
9980 09 63 6f 72 65 4d 65 73 73 61 67 65 73 3a 20 4d 6f 64 65 6c 4d 65 73 73 61 67 65 5b 5d 3b 0a 09 .coreMessages:.ModelMessage[];..
99a0 09 74 6f 6f 6c 73 3a 20 52 65 63 6f 72 64 3c 73 74 72 69 6e 67 2c 20 54 6f 6f 6c 3e 3b 0a 09 09 .tools:.Record<string,.Tool>;...
99c0 69 73 43 6c 61 75 64 65 4f 41 75 74 68 3a 20 62 6f 6f 6c 65 61 6e 3b 0a 09 09 75 73 65 73 41 6e isClaudeOAuth:.boolean;...usesAn
99e0 74 68 72 6f 70 69 63 53 44 4b 3a 20 62 6f 6f 6c 65 61 6e 3b 0a 09 09 65 66 66 6f 72 74 3a 20 52 thropicSDK:.boolean;...effort:.R
9a00 65 61 73 6f 6e 69 6e 67 45 66 66 6f 72 74 3b 0a 09 09 61 62 6f 72 74 53 69 67 6e 61 6c 3f 3a 20 easoningEffort;...abortSignal?:.
9a20 41 62 6f 72 74 53 69 67 6e 61 6c 3b 0a 09 7d 29 3a 20 50 61 72 61 6d 65 74 65 72 73 3c 74 79 70 AbortSignal;..}):.Parameters<typ
9a40 65 6f 66 20 73 74 72 65 61 6d 54 65 78 74 3e 5b 30 5d 20 7b 0a 09 09 63 6f 6e 73 74 20 7b 20 6d eof.streamText>[0].{...const.{.m
9a60 6f 64 65 6c 2c 20 63 6f 72 65 4d 65 73 73 61 67 65 73 2c 20 74 6f 6f 6c 73 2c 20 69 73 43 6c 61 odel,.coreMessages,.tools,.isCla
9a80 75 64 65 4f 41 75 74 68 2c 20 75 73 65 73 41 6e 74 68 72 6f 70 69 63 53 44 4b 2c 20 65 66 66 6f udeOAuth,.usesAnthropicSDK,.effo
9aa0 72 74 2c 20 61 62 6f 72 74 53 69 67 6e 61 6c 20 7d 20 3d 0a 09 09 09 61 72 67 73 3b 0a 09 09 63 rt,.abortSignal.}.=....args;...c
9ac0 6f 6e 73 74 20 73 74 72 65 61 6d 4f 70 74 69 6f 6e 73 3a 20 50 61 72 61 6d 65 74 65 72 73 3c 74 onst.streamOptions:.Parameters<t
9ae0 79 70 65 6f 66 20 73 74 72 65 61 6d 54 65 78 74 3e 5b 30 5d 20 3d 20 7b 0a 09 09 09 6d 6f 64 65 ypeof.streamText>[0].=.{....mode
9b00 6c 2c 0a 09 09 09 6d 65 73 73 61 67 65 73 3a 20 63 6f 72 65 4d 65 73 73 61 67 65 73 2c 0a 09 09 l,....messages:.coreMessages,...
9b20 09 74 6f 6f 6c 73 2c 0a 09 09 09 61 62 6f 72 74 53 69 67 6e 61 6c 2c 0a 09 09 7d 3b 0a 0a 09 09 .tools,....abortSignal,...};....
9b40 2f 2f 20 45 6e 63 6f 75 72 61 67 65 20 74 6f 6f 6c 20 75 73 65 20 6f 6e 20 41 6e 74 68 72 6f 70 //.Encourage.tool.use.on.Anthrop
9b60 69 63 2e 20 57 69 74 68 6f 75 74 20 61 6e 20 65 78 70 6c 69 63 69 74 20 60 74 6f 6f 6c 43 68 6f ic..Without.an.explicit.`toolCho
9b80 69 63 65 60 2c 0a 09 09 2f 2f 20 43 6c 61 75 64 65 20 28 65 73 70 65 63 69 61 6c 6c 79 20 4f 70 ice`,...//.Claude.(especially.Op
9ba0 75 73 20 34 2e 37 20 77 69 74 68 20 61 64 61 70 74 69 76 65 20 74 68 69 6e 6b 69 6e 67 29 20 63 us.4.7.with.adaptive.thinking).c
9bc0 61 6e 20 64 65 63 69 64 65 20 74 6f 0a 09 09 2f 2f 20 22 74 68 69 6e 6b 20 66 6f 72 65 76 65 72 an.decide.to...//."think.forever
9be0 22 20 69 6e 73 74 65 61 64 20 6f 66 20 63 61 6c 6c 69 6e 67 20 74 68 65 20 74 6f 6f 6c 73 20 69 ".instead.of.calling.the.tools.i
9c00 74 20 68 61 73 20 62 65 65 6e 20 67 69 76 65 6e 2e 0a 09 09 2f 2f 20 60 22 61 75 74 6f 22 60 20 t.has.been.given....//.`"auto"`.
9c20 6b 65 65 70 73 20 43 6c 61 75 64 65 20 66 72 65 65 20 74 6f 20 61 6e 73 77 65 72 20 77 69 74 68 keeps.Claude.free.to.answer.with
9c40 20 74 65 78 74 20 77 68 65 6e 20 6e 6f 20 74 6f 6f 6c 20 69 73 20 6e 65 65 64 65 64 2c 0a 09 09 .text.when.no.tool.is.needed,...
9c60 2f 2f 20 77 68 69 6c 65 20 6d 61 6b 69 6e 67 20 74 68 65 20 61 76 61 69 6c 61 62 69 6c 69 74 79 //.while.making.the.availability
9c80 20 6f 66 20 74 6f 6f 6c 73 20 61 6e 20 65 78 70 6c 69 63 69 74 20 73 69 67 6e 61 6c 20 e2 80 94 .of.tools.an.explicit.signal....
9ca0 20 41 4e 44 20 69 74 20 69 73 0a 09 09 2f 2f 20 61 20 63 61 63 68 65 2d 6b 65 79 20 69 6e 70 75 .AND.it.is...//.a.cache-key.inpu
9cc0 74 2c 20 73 6f 20 77 61 72 6d 69 6e 67 20 6d 75 73 74 20 73 65 6e 64 20 74 68 65 20 53 41 4d 45 t,.so.warming.must.send.the.SAME
9ce0 20 76 61 6c 75 65 2e 0a 09 09 69 66 20 28 69 73 43 6c 61 75 64 65 4f 41 75 74 68 29 20 7b 0a 09 .value....if.(isClaudeOAuth).{..
9d00 09 09 73 74 72 65 61 6d 4f 70 74 69 6f 6e 73 2e 74 6f 6f 6c 43 68 6f 69 63 65 20 3d 20 22 61 75 ..streamOptions.toolChoice.=."au
9d20 74 6f 22 3b 0a 09 09 7d 0a 0a 09 09 69 66 20 28 69 73 43 6c 61 75 64 65 4f 41 75 74 68 20 26 26 to";...}....if.(isClaudeOAuth.&&
9d40 20 65 66 66 6f 72 74 20 21 3d 3d 20 22 6e 6f 6e 65 22 29 20 7b 0a 09 09 09 2f 2f 20 76 36 20 6e .effort.!==."none").{....//.v6.n
9d60 61 74 69 76 65 20 41 6e 74 68 72 6f 70 69 63 20 61 64 61 70 74 69 76 65 20 74 68 69 6e 6b 69 6e ative.Anthropic.adaptive.thinkin
9d80 67 20 76 69 61 20 70 72 6f 76 69 64 65 72 4f 70 74 69 6f 6e 73 2e 20 54 68 69 6e 6b 69 6e 67 0a g.via.providerOptions..Thinking.
9da0 09 09 09 2f 2f 20 63 6f 6e 66 69 67 20 28 61 64 61 70 74 69 76 65 20 76 73 20 65 6e 61 62 6c 65 ...//.config.(adaptive.vs.enable
9dc0 64 2c 20 62 75 64 67 65 74 2c 20 70 6c 75 73 20 64 69 73 70 6c 61 79 3a 22 73 75 6d 6d 61 72 69 d,.budget,.plus.display:"summari
9de0 7a 65 64 22 20 66 6f 72 0a 09 09 09 2f 2f 20 4f 70 75 73 20 34 2e 37 2b 29 20 69 73 20 64 65 72 zed".for....//.Opus.4.7+).is.der
9e00 69 76 65 64 20 66 72 6f 6d 20 74 68 65 20 6d 6f 64 65 6c 20 69 64 20 2b 20 65 66 66 6f 72 74 2e ived.from.the.model.id.+.effort.
9e20 20 54 68 65 73 65 20 61 72 65 20 63 61 63 68 65 2d 6b 65 79 0a 09 09 09 2f 2f 20 69 6e 70 75 74 .These.are.cache-key....//.input
9e40 73 20 28 41 6e 74 68 72 6f 70 69 63 27 73 20 22 54 68 69 6e 6b 69 6e 67 20 70 61 72 61 6d 65 74 s.(Anthropic's."Thinking.paramet
9e60 65 72 73 22 20 72 6f 77 29 2c 20 73 6f 20 77 61 72 6d 69 6e 67 20 6d 75 73 74 20 70 61 73 73 0a ers".row),.so.warming.must.pass.
9e80 09 09 09 2f 2f 20 74 68 65 20 53 41 4d 45 20 65 66 66 6f 72 74 20 74 68 65 20 6e 65 78 74 20 72 ...//.the.SAME.effort.the.next.r
9ea0 65 61 6c 20 74 75 72 6e 20 77 69 6c 6c 20 75 73 65 2e 20 60 6d 61 78 4f 75 74 70 75 74 54 6f 6b eal.turn.will.use..`maxOutputTok
9ec0 65 6e 73 60 20 63 61 70 73 0a 09 09 09 2f 2f 20 74 68 69 6e 6b 69 6e 67 20 2b 20 72 65 73 70 6f ens`.caps....//.thinking.+.respo
9ee0 6e 73 65 20 63 6f 6d 62 69 6e 65 64 3b 20 74 68 65 20 6d 6f 64 65 6c 20 73 65 6c 66 2d 72 65 67 nse.combined;.the.model.self-reg
9f00 75 6c 61 74 65 73 20 77 69 74 68 69 6e 20 69 74 2e 0a 09 09 09 73 74 72 65 61 6d 4f 70 74 69 6f ulates.within.it.....streamOptio
9f20 6e 73 2e 6d 61 78 4f 75 74 70 75 74 54 6f 6b 65 6e 73 20 3d 20 33 32 30 30 30 3b 0a 09 09 09 73 ns.maxOutputTokens.=.32000;....s
9f40 74 72 65 61 6d 4f 70 74 69 6f 6e 73 2e 70 72 6f 76 69 64 65 72 4f 70 74 69 6f 6e 73 20 3d 20 7b treamOptions.providerOptions.=.{
9f60 0a 09 09 09 09 61 6e 74 68 72 6f 70 69 63 3a 20 61 6e 74 68 72 6f 70 69 63 54 68 69 6e 6b 69 6e .....anthropic:.anthropicThinkin
9f80 67 50 72 6f 76 69 64 65 72 4f 70 74 69 6f 6e 73 28 74 68 69 73 2e 63 6f 6e 66 69 67 2e 6d 6f 64 gProviderOptions(this.config.mod
9fa0 65 6c 2c 20 65 66 66 6f 72 74 29 2c 0a 09 09 09 7d 3b 0a 09 09 7d 20 65 6c 73 65 20 69 66 20 28 el,.effort),....};...}.else.if.(
9fc0 21 75 73 65 73 41 6e 74 68 72 6f 70 69 63 53 44 4b 20 26 26 20 65 66 66 6f 72 74 20 21 3d 3d 20 !usesAnthropicSDK.&&.effort.!==.
9fe0 22 6e 6f 6e 65 22 29 20 7b 0a 09 09 09 2f 2f 20 4f 70 65 6e 41 49 2d 63 6f 6d 70 61 74 69 62 6c "none").{....//.OpenAI-compatibl
a000 65 20 6d 6f 64 65 6c 73 20 28 4f 70 65 6e 43 6f 64 65 20 5a 65 6e 3a 20 44 65 65 70 53 65 65 6b e.models.(OpenCode.Zen:.DeepSeek
a020 2c 20 47 4c 4d 2c 20 4b 69 6d 69 2c 20 65 74 63 2e 29 2e 0a 09 09 09 2f 2f 20 54 68 6f 73 65 20 ,.GLM,.Kimi,.etc.).....//.Those.
a040 65 6e 64 70 6f 69 6e 74 73 20 64 6f 20 61 75 74 6f 6d 61 74 69 63 20 73 65 72 76 65 72 2d 73 69 endpoints.do.automatic.server-si
a060 64 65 20 70 72 65 66 69 78 20 63 61 63 68 69 6e 67 20 61 6e 64 20 69 67 6e 6f 72 65 0a 09 09 09 de.prefix.caching.and.ignore....
a080 2f 2f 20 6f 75 72 20 6d 61 72 6b 65 72 73 2c 20 62 75 74 20 77 65 20 6b 65 65 70 20 74 68 65 20 //.our.markers,.but.we.keep.the.
a0a0 72 65 71 75 65 73 74 20 73 68 61 70 65 20 63 6f 6e 73 69 73 74 65 6e 74 20 72 65 67 61 72 64 6c request.shape.consistent.regardl
a0c0 65 73 73 2e 0a 09 09 09 73 74 72 65 61 6d 4f 70 74 69 6f 6e 73 2e 70 72 6f 76 69 64 65 72 4f 70 ess.....streamOptions.providerOp
a0e0 74 69 6f 6e 73 20 3d 20 7b 20 6f 70 65 6e 61 69 43 6f 6d 70 61 74 69 62 6c 65 3a 20 7b 20 72 65 tions.=.{.openaiCompatible:.{.re
a100 61 73 6f 6e 69 6e 67 45 66 66 6f 72 74 3a 20 65 66 66 6f 72 74 20 7d 20 7d 3b 0a 09 09 7d 0a 0a asoningEffort:.effort.}.};...}..
a120 09 09 72 65 74 75 72 6e 20 73 74 72 65 61 6d 4f 70 74 69 6f 6e 73 3b 0a 09 7d 0a 0a 09 61 73 79 ..return.streamOptions;..}...asy
a140 6e 63 20 77 61 72 6d 43 61 63 68 65 28 0a 09 09 68 69 73 74 6f 72 79 3a 20 43 68 61 74 4d 65 73 nc.warmCache(...history:.ChatMes
a160 73 61 67 65 5b 5d 2c 0a 09 09 6f 70 74 69 6f 6e 73 3f 3a 20 7b 20 61 62 6f 72 74 53 69 67 6e 61 sage[],...options?:.{.abortSigna
a180 6c 3f 3a 20 41 62 6f 72 74 53 69 67 6e 61 6c 3b 20 72 65 61 73 6f 6e 69 6e 67 45 66 66 6f 72 74 l?:.AbortSignal;.reasoningEffort
a1a0 3f 3a 20 52 65 61 73 6f 6e 69 6e 67 45 66 66 6f 72 74 20 7d 2c 0a 09 29 3a 20 50 72 6f 6d 69 73 ?:.ReasoningEffort.},..):.Promis
a1c0 65 3c 55 73 61 67 65 44 61 74 61 3e 20 7b 0a 09 09 63 6f 6e 73 74 20 7b 20 69 73 43 6c 61 75 64 e<UsageData>.{...const.{.isClaud
a1e0 65 4f 41 75 74 68 2c 20 75 73 65 73 41 6e 74 68 72 6f 70 69 63 53 44 4b 2c 20 70 72 6f 76 69 64 eOAuth,.usesAnthropicSDK,.provid
a200 65 72 46 61 63 74 6f 72 79 2c 20 74 6f 6f 6c 73 2c 20 73 79 73 74 65 6d 50 72 6f 6d 70 74 20 7d erFactory,.tools,.systemPrompt.}
a220 20 3d 0a 09 09 09 74 68 69 73 2e 62 75 69 6c 64 4c 6c 6d 43 6f 6e 74 65 78 74 28 68 69 73 74 6f .=....this.buildLlmContext(histo
a240 72 79 29 3b 0a 09 09 2f 2f 20 52 65 73 6f 6c 76 65 20 74 68 65 20 53 41 4d 45 20 65 66 66 6f 72 ry);...//.Resolve.the.SAME.effor
a260 74 20 74 68 65 20 6e 65 78 74 20 72 65 61 6c 20 74 75 72 6e 20 77 6f 75 6c 64 20 75 73 65 20 28 t.the.next.real.turn.would.use.(
a280 70 65 72 2d 74 61 62 20 6f 76 65 72 72 69 64 65 20 e2 86 92 0a 09 09 2f 2f 20 61 67 65 6e 74 20 per-tab.override.......//.agent.
a2a0 64 65 66 61 75 6c 74 20 e2 86 92 20 44 45 46 41 55 4c 54 5f 52 45 41 53 4f 4e 49 4e 47 5f 45 46 default.....DEFAULT_REASONING_EF
a2c0 46 4f 52 54 29 2e 20 54 68 69 73 20 64 72 69 76 65 73 20 74 68 65 20 74 68 69 6e 6b 69 6e 67 0a FORT)..This.drives.the.thinking.
a2e0 09 09 2f 2f 20 70 72 6f 76 69 64 65 72 4f 70 74 69 6f 6e 73 2c 20 77 68 69 63 68 20 69 73 20 61 ..//.providerOptions,.which.is.a
a300 20 6d 65 73 73 61 67 65 2d 63 61 63 68 65 20 6b 65 79 20 e2 80 94 20 77 61 72 6d 69 6e 67 20 4d .message-cache.key.....warming.M
a320 55 53 54 20 6d 61 74 63 68 20 69 74 2e 0a 09 09 63 6f 6e 73 74 20 65 66 66 6f 72 74 20 3d 0a 09 UST.match.it....const.effort.=..
a340 09 09 6f 70 74 69 6f 6e 73 3f 2e 72 65 61 73 6f 6e 69 6e 67 45 66 66 6f 72 74 20 3f 3f 20 74 68 ..options?.reasoningEffort.??.th
a360 69 73 2e 63 6f 6e 66 69 67 2e 72 65 61 73 6f 6e 69 6e 67 45 66 66 6f 72 74 20 3f 3f 20 44 45 46 is.config.reasoningEffort.??.DEF
a380 41 55 4c 54 5f 52 45 41 53 4f 4e 49 4e 47 5f 45 46 46 4f 52 54 3b 0a 0a 09 09 2f 2f 20 4d 69 72 AULT_REASONING_EFFORT;....//.Mir
a3a0 72 6f 72 20 60 72 75 6e 28 29 60 27 73 20 73 65 72 69 61 6c 69 73 61 74 69 6f 6e 20 65 78 61 63 ror.`run()`'s.serialisation.exac
a3c0 74 6c 79 20 73 6f 20 74 68 65 20 70 72 65 66 69 78 20 62 79 74 65 73 20 6d 61 74 63 68 20 74 68 tly.so.the.prefix.bytes.match.th
a3e0 65 0a 09 09 2f 2f 20 72 65 61 6c 20 74 75 72 6e 27 73 3a 20 73 79 73 74 65 6d 20 6d 65 73 73 61 e...//.real.turn's:.system.messa
a400 67 65 20 66 69 72 73 74 20 28 63 61 63 68 69 6e 67 20 6e 65 65 64 73 20 69 74 20 69 6e 6c 69 6e ge.first.(caching.needs.it.inlin
a420 65 29 2c 20 74 68 65 6e 20 74 68 65 0a 09 09 2f 2f 20 67 65 6e 75 69 6e 65 20 68 69 73 74 6f 72 e),.then.the...//.genuine.histor
a440 79 2c 20 74 68 65 6e 20 74 68 65 20 74 68 72 6f 77 61 77 61 79 20 70 72 6f 62 65 20 74 75 72 6e y,.then.the.throwaway.probe.turn
a460 20 61 70 70 65 6e 64 65 64 20 61 74 20 74 68 65 20 45 4e 44 2e 0a 09 09 2f 2f 20 41 70 70 65 6e .appended.at.the.END....//.Appen
a480 64 69 6e 67 20 61 74 20 74 68 65 20 65 6e 64 20 6c 65 61 76 65 73 20 74 68 65 20 66 69 72 73 74 ding.at.the.end.leaves.the.first
a4a0 2d 75 73 65 72 2d 6d 65 73 73 61 67 65 2d 64 65 72 69 76 65 64 20 62 69 6c 6c 69 6e 67 0a 09 09 -user-message-derived.billing...
a4c0 2f 2f 20 68 65 61 64 65 72 20 28 61 6e 64 20 74 68 75 73 20 74 68 65 20 63 61 63 68 65 64 20 70 //.header.(and.thus.the.cached.p
a4e0 72 65 66 69 78 29 20 75 6e 74 6f 75 63 68 65 64 2e 0a 09 09 63 6f 6e 73 74 20 77 61 72 6d 4d 65 refix).untouched....const.warmMe
a500 73 73 61 67 65 73 3a 20 43 68 61 74 4d 65 73 73 61 67 65 5b 5d 20 3d 20 5b 0a 09 09 09 2e 2e 2e ssages:.ChatMessage[].=.[.......
a520 68 69 73 74 6f 72 79 2c 0a 09 09 09 7b 20 72 6f 6c 65 3a 20 22 75 73 65 72 22 2c 20 63 68 75 6e history,....{.role:."user",.chun
a540 6b 73 3a 20 5b 7b 20 74 79 70 65 3a 20 22 74 65 78 74 22 2c 20 74 65 78 74 3a 20 57 41 52 4d 5f ks:.[{.type:."text",.text:.WARM_
a560 43 41 43 48 45 5f 50 52 4f 42 45 5f 54 45 58 54 20 7d 5d 20 7d 2c 0a 09 09 5d 3b 0a 09 09 63 6f CACHE_PROBE_TEXT.}].},...];...co
a580 6e 73 74 20 73 79 73 74 65 6d 4d 65 73 73 61 67 65 3a 20 53 79 73 74 65 6d 4d 6f 64 65 6c 4d 65 nst.systemMessage:.SystemModelMe
a5a0 73 73 61 67 65 20 3d 20 7b 20 72 6f 6c 65 3a 20 22 73 79 73 74 65 6d 22 2c 20 63 6f 6e 74 65 6e ssage.=.{.role:."system",.conten
a5c0 74 3a 20 73 79 73 74 65 6d 50 72 6f 6d 70 74 20 7d 3b 0a 09 09 6c 65 74 20 63 6f 72 65 4d 65 73 t:.systemPrompt.};...let.coreMes
a5e0 73 61 67 65 73 3a 20 4d 6f 64 65 6c 4d 65 73 73 61 67 65 5b 5d 20 3d 20 5b 0a 09 09 09 73 79 73 sages:.ModelMessage[].=.[....sys
a600 74 65 6d 4d 65 73 73 61 67 65 2c 0a 09 09 09 2e 2e 2e 74 6f 4d 6f 64 65 6c 4d 65 73 73 61 67 65 temMessage,.......toModelMessage
a620 73 28 77 61 72 6d 4d 65 73 73 61 67 65 73 2c 20 69 73 43 6c 61 75 64 65 4f 41 75 74 68 29 2c 0a s(warmMessages,.isClaudeOAuth),.
a640 09 09 5d 3b 0a 09 09 69 66 20 28 75 73 65 73 41 6e 74 68 72 6f 70 69 63 53 44 4b 29 20 7b 0a 09 ..];...if.(usesAnthropicSDK).{..
a660 09 09 63 6f 72 65 4d 65 73 73 61 67 65 73 20 3d 20 61 70 70 6c 79 41 6e 74 68 72 6f 70 69 63 53 ..coreMessages.=.applyAnthropicS
a680 74 72 75 63 74 75 72 61 6c 4e 6f 72 6d 61 6c 69 73 61 74 69 6f 6e 73 28 63 6f 72 65 4d 65 73 73 tructuralNormalisations(coreMess
a6a0 61 67 65 73 29 3b 0a 09 09 09 61 70 70 6c 79 41 6e 74 68 72 6f 70 69 63 43 61 63 68 69 6e 67 28 ages);....applyAnthropicCaching(
a6c0 63 6f 72 65 4d 65 73 73 61 67 65 73 29 3b 0a 09 09 7d 20 65 6c 73 65 20 7b 0a 09 09 09 63 6f 72 coreMessages);...}.else.{....cor
a6e0 65 4d 65 73 73 61 67 65 73 20 3d 20 61 70 70 6c 79 4f 70 65 6e 41 49 43 6f 6d 70 61 74 69 62 6c eMessages.=.applyOpenAICompatibl
a700 65 52 65 61 73 6f 6e 69 6e 67 4e 6f 72 6d 61 6c 69 73 61 74 69 6f 6e 28 63 6f 72 65 4d 65 73 73 eReasoningNormalisation(coreMess
a720 61 67 65 73 29 3b 0a 09 09 7d 0a 0a 09 09 2f 2f 20 42 75 69 6c 64 20 74 68 65 20 72 65 71 75 65 ages);...}....//.Build.the.reque
a740 73 74 20 74 68 72 6f 75 67 68 20 74 68 65 20 53 41 4d 45 20 73 68 61 72 65 64 20 68 65 6c 70 65 st.through.the.SAME.shared.helpe
a760 72 20 72 75 6e 28 29 20 75 73 65 73 2c 20 77 69 74 68 20 74 68 65 0a 09 09 2f 2f 20 53 41 4d 45 r.run().uses,.with.the...//.SAME
a780 20 72 65 73 6f 6c 76 65 64 20 65 66 66 6f 72 74 20 e2 80 94 20 73 6f 20 74 6f 6f 6c 43 68 6f 69 .resolved.effort.....so.toolChoi
a7a0 63 65 20 2b 20 74 68 69 6e 6b 69 6e 67 20 70 72 6f 76 69 64 65 72 4f 70 74 69 6f 6e 73 20 2b 0a ce.+.thinking.providerOptions.+.
a7c0 09 09 2f 2f 20 6d 61 78 4f 75 74 70 75 74 54 6f 6b 65 6e 73 20 6d 61 74 63 68 20 74 68 65 20 72 ..//.maxOutputTokens.match.the.r
a7e0 65 61 6c 20 74 75 72 6e 20 65 78 61 63 74 6c 79 2e 20 54 68 69 73 20 69 73 20 77 68 61 74 20 6d eal.turn.exactly..This.is.what.m
a800 61 6b 65 73 20 74 68 65 0a 09 09 2f 2f 20 77 61 72 6d 69 6e 67 20 72 65 70 6c 61 79 20 68 69 74 akes.the...//.warming.replay.hit
a820 20 28 61 6e 64 20 72 65 66 72 65 73 68 29 20 74 68 65 20 52 45 41 4c 20 74 75 72 6e 27 73 20 6d .(and.refresh).the.REAL.turn's.m
a840 65 73 73 61 67 65 20 63 61 63 68 65 20 69 6e 73 74 65 61 64 0a 09 09 2f 2f 20 6f 66 20 77 72 69 essage.cache.instead...//.of.wri
a860 74 69 6e 67 20 61 20 73 65 70 61 72 61 74 65 20 22 77 61 72 6d 69 6e 67 2d 6f 6e 6c 79 22 20 62 ting.a.separate."warming-only".b
a880 75 63 6b 65 74 2e 20 54 68 65 20 74 68 72 6f 77 61 77 61 79 20 70 72 6f 62 65 20 74 75 72 6e 0a ucket..The.throwaway.probe.turn.
a8a0 09 09 2f 2f 20 69 73 20 61 70 70 65 6e 64 65 64 20 41 46 54 45 52 20 74 68 65 20 6c 61 73 74 20 ..//.is.appended.AFTER.the.last.
a8c0 63 61 63 68 65 20 62 72 65 61 6b 70 6f 69 6e 74 2c 20 73 6f 20 69 74 20 63 61 6e 6e 6f 74 20 64 cache.breakpoint,.so.it.cannot.d
a8e0 69 73 74 75 72 62 20 74 68 65 0a 09 09 2f 2f 20 63 61 63 68 65 64 20 70 72 65 66 69 78 3b 20 69 isturb.the...//.cached.prefix;.i
a900 74 20 6f 6e 6c 79 20 67 69 76 65 73 20 74 68 65 20 6d 6f 64 65 6c 20 61 20 63 68 65 61 70 20 66 t.only.gives.the.model.a.cheap.f
a920 69 6e 61 6c 20 74 75 72 6e 20 74 6f 20 61 6e 73 77 65 72 2e 0a 09 09 63 6f 6e 73 74 20 73 74 72 inal.turn.to.answer....const.str
a940 65 61 6d 4f 70 74 69 6f 6e 73 20 3d 20 74 68 69 73 2e 62 75 69 6c 64 53 74 72 65 61 6d 4f 70 74 eamOptions.=.this.buildStreamOpt
a960 69 6f 6e 73 28 7b 0a 09 09 09 6d 6f 64 65 6c 3a 20 70 72 6f 76 69 64 65 72 46 61 63 74 6f 72 79 ions({....model:.providerFactory
a980 28 74 68 69 73 2e 63 6f 6e 66 69 67 2e 6d 6f 64 65 6c 29 2c 0a 09 09 09 63 6f 72 65 4d 65 73 73 (this.config.model),....coreMess
a9a0 61 67 65 73 2c 0a 09 09 09 74 6f 6f 6c 73 2c 0a 09 09 09 69 73 43 6c 61 75 64 65 4f 41 75 74 68 ages,....tools,....isClaudeOAuth
a9c0 2c 0a 09 09 09 75 73 65 73 41 6e 74 68 72 6f 70 69 63 53 44 4b 2c 0a 09 09 09 65 66 66 6f 72 74 ,....usesAnthropicSDK,....effort
a9e0 2c 0a 09 09 09 2e 2e 2e 28 6f 70 74 69 6f 6e 73 3f 2e 61 62 6f 72 74 53 69 67 6e 61 6c 20 3f 20 ,.......(options?.abortSignal.?.
aa00 7b 20 61 62 6f 72 74 53 69 67 6e 61 6c 3a 20 6f 70 74 69 6f 6e 73 2e 61 62 6f 72 74 53 69 67 6e {.abortSignal:.options.abortSign
aa20 61 6c 20 7d 20 3a 20 7b 7d 29 2c 0a 09 09 7d 29 3b 0a 0a 09 09 63 6f 6e 73 74 20 75 73 61 67 65 al.}.:.{}),...});....const.usage
aa40 3a 20 55 73 61 67 65 44 61 74 61 20 3d 20 7b 0a 09 09 09 69 6e 70 75 74 54 6f 6b 65 6e 73 3a 20 :.UsageData.=.{....inputTokens:.
aa60 30 2c 0a 09 09 09 6f 75 74 70 75 74 54 6f 6b 65 6e 73 3a 20 30 2c 0a 09 09 09 63 61 63 68 65 52 0,....outputTokens:.0,....cacheR
aa80 65 61 64 54 6f 6b 65 6e 73 3a 20 30 2c 0a 09 09 09 63 61 63 68 65 57 72 69 74 65 54 6f 6b 65 6e eadTokens:.0,....cacheWriteToken
aaa0 73 3a 20 30 2c 0a 09 09 7d 3b 0a 09 09 74 72 79 20 7b 0a 09 09 09 63 6f 6e 73 74 20 72 65 73 75 s:.0,...};...try.{....const.resu
aac0 6c 74 20 3d 20 73 74 72 65 61 6d 54 65 78 74 28 73 74 72 65 61 6d 4f 70 74 69 6f 6e 73 29 3b 0a lt.=.streamText(streamOptions);.
aae0 09 09 09 66 6f 72 20 61 77 61 69 74 20 28 63 6f 6e 73 74 20 65 76 65 6e 74 20 6f 66 20 72 65 73 ...for.await.(const.event.of.res
ab00 75 6c 74 2e 66 75 6c 6c 53 74 72 65 61 6d 29 20 7b 0a 09 09 09 09 69 66 20 28 65 76 65 6e 74 2e ult.fullStream).{.....if.(event.
ab20 74 79 70 65 20 3d 3d 3d 20 22 65 72 72 6f 72 22 29 20 7b 0a 09 09 09 09 09 63 6f 6e 73 74 20 65 type.===."error").{......const.e
ab40 20 3d 20 28 65 76 65 6e 74 20 61 73 20 7b 20 65 72 72 6f 72 3f 3a 20 75 6e 6b 6e 6f 77 6e 20 7d .=.(event.as.{.error?:.unknown.}
ab60 29 2e 65 72 72 6f 72 3b 0a 09 09 09 09 09 74 68 72 6f 77 20 65 20 69 6e 73 74 61 6e 63 65 6f 66 ).error;......throw.e.instanceof
ab80 20 45 72 72 6f 72 20 3f 20 65 20 3a 20 6e 65 77 20 45 72 72 6f 72 28 53 74 72 69 6e 67 28 65 20 .Error.?.e.:.new.Error(String(e.
aba0 3f 3f 20 22 63 61 63 68 65 2d 77 61 72 6d 20 73 74 72 65 61 6d 20 65 72 72 6f 72 22 29 29 3b 0a ??."cache-warm.stream.error"));.
abc0 09 09 09 09 7d 0a 09 09 09 09 69 66 20 28 65 76 65 6e 74 2e 74 79 70 65 20 3d 3d 3d 20 22 66 69 ....}.....if.(event.type.===."fi
abe0 6e 69 73 68 2d 73 74 65 70 22 29 20 7b 0a 09 09 09 09 09 63 6f 6e 73 74 20 75 20 3d 20 28 65 76 nish-step").{......const.u.=.(ev
ac00 65 6e 74 20 61 73 20 7b 20 75 73 61 67 65 3f 3a 20 4c 61 6e 67 75 61 67 65 4d 6f 64 65 6c 55 73 ent.as.{.usage?:.LanguageModelUs
ac20 61 67 65 20 7d 29 2e 75 73 61 67 65 3b 0a 09 09 09 09 09 69 66 20 28 75 29 20 7b 0a 09 09 09 09 age.}).usage;......if.(u).{.....
ac40 09 09 63 6f 6e 73 74 20 64 65 74 61 69 6c 73 20 3d 20 75 2e 69 6e 70 75 74 54 6f 6b 65 6e 44 65 ..const.details.=.u.inputTokenDe
ac60 74 61 69 6c 73 3b 0a 09 09 09 09 09 09 75 73 61 67 65 2e 69 6e 70 75 74 54 6f 6b 65 6e 73 20 3d tails;.......usage.inputTokens.=
ac80 20 75 2e 69 6e 70 75 74 54 6f 6b 65 6e 73 20 3f 3f 20 30 3b 0a 09 09 09 09 09 09 75 73 61 67 65 .u.inputTokens.??.0;.......usage
aca0 2e 6f 75 74 70 75 74 54 6f 6b 65 6e 73 20 3d 20 75 2e 6f 75 74 70 75 74 54 6f 6b 65 6e 73 20 3f .outputTokens.=.u.outputTokens.?
acc0 3f 20 30 3b 0a 09 09 09 09 09 09 75 73 61 67 65 2e 63 61 63 68 65 52 65 61 64 54 6f 6b 65 6e 73 ?.0;.......usage.cacheReadTokens
ace0 20 3d 20 64 65 74 61 69 6c 73 3f 2e 63 61 63 68 65 52 65 61 64 54 6f 6b 65 6e 73 20 3f 3f 20 30 .=.details?.cacheReadTokens.??.0
ad00 3b 0a 09 09 09 09 09 09 75 73 61 67 65 2e 63 61 63 68 65 57 72 69 74 65 54 6f 6b 65 6e 73 20 3d ;.......usage.cacheWriteTokens.=
ad20 20 64 65 74 61 69 6c 73 3f 2e 63 61 63 68 65 57 72 69 74 65 54 6f 6b 65 6e 73 20 3f 3f 20 30 3b .details?.cacheWriteTokens.??.0;
ad40 0a 09 09 09 09 09 7d 0a 09 09 09 09 7d 0a 09 09 09 7d 0a 09 09 7d 20 63 61 74 63 68 20 28 65 72 ......}.....}....}...}.catch.(er
ad60 72 29 20 7b 0a 09 09 09 74 68 72 6f 77 20 6e 65 77 20 45 72 72 6f 72 28 66 6f 72 6d 61 74 45 72 r).{....throw.new.Error(formatEr
ad80 72 6f 72 28 65 72 72 2c 20 74 68 69 73 2e 63 6f 6e 66 69 67 29 29 3b 0a 09 09 7d 0a 09 09 72 65 ror(err,.this.config));...}...re
ada0 74 75 72 6e 20 75 73 61 67 65 3b 0a 09 7d 0a 0a 09 61 73 79 6e 63 20 2a 72 75 6e 28 0a 09 09 75 turn.usage;..}...async.*run(...u
adc0 73 65 72 4d 65 73 73 61 67 65 3a 20 73 74 72 69 6e 67 2c 0a 09 09 6f 70 74 69 6f 6e 73 3f 3a 20 serMessage:.string,...options?:.
ade0 7b 0a 09 09 09 72 65 61 73 6f 6e 69 6e 67 45 66 66 6f 72 74 3f 3a 20 52 65 61 73 6f 6e 69 6e 67 {....reasoningEffort?:.Reasoning
ae00 45 66 66 6f 72 74 3b 0a 09 09 09 61 62 6f 72 74 53 69 67 6e 61 6c 3f 3a 20 41 62 6f 72 74 53 69 Effort;....abortSignal?:.AbortSi
ae20 67 6e 61 6c 3b 0a 09 09 09 2f 2a 2a 0a 09 09 09 20 2a 20 45 70 68 65 6d 65 72 61 6c 20 6f 72 64 gnal;..../**.....*.Ephemeral.ord
ae40 65 72 65 64 20 6d 75 6c 74 69 6d 6f 64 61 6c 20 63 6f 6e 74 65 6e 74 20 28 74 65 78 74 20 2b 20 ered.multimodal.content.(text.+.
ae60 69 6d 61 67 65 2f 70 64 66 20 61 74 74 61 63 68 6d 65 6e 74 73 29 0a 09 09 09 20 2a 20 66 6f 72 image/pdf.attachments).....*.for
ae80 20 54 48 49 53 20 75 73 65 72 20 74 75 72 6e 2e 20 57 68 65 6e 20 70 72 65 73 65 6e 74 2c 20 60 .THIS.user.turn..When.present,.`
aea0 75 73 65 72 4d 65 73 73 61 67 65 60 20 69 73 20 74 68 65 20 74 65 78 74 2d 6f 6e 6c 79 0a 09 09 userMessage`.is.the.text-only...
aec0 09 20 2a 20 70 72 6f 6a 65 63 74 69 6f 6e 20 28 77 69 74 68 20 60 5b 69 6d 61 67 65 5d 60 2f 60 ..*.projection.(with.`[image]`/`
aee0 5b 70 64 66 5d 60 20 6d 61 72 6b 65 72 73 29 20 75 73 65 64 20 66 6f 72 20 70 65 72 73 69 73 74 [pdf]`.markers).used.for.persist
af00 65 6e 63 65 20 61 6e 64 0a 09 09 09 20 2a 20 74 68 65 20 63 68 75 6e 6b 20 72 65 6e 64 65 72 2c ence.and.....*.the.chunk.render,
af20 20 77 68 69 6c 65 20 60 63 6f 6e 74 65 6e 74 60 20 63 61 72 72 69 65 73 20 74 68 65 20 61 63 74 .while.`content`.carries.the.act
af40 75 61 6c 20 70 61 72 74 73 20 66 6f 72 77 61 72 64 65 64 0a 09 09 09 20 2a 20 74 6f 20 74 68 65 ual.parts.forwarded.....*.to.the
af60 20 70 72 6f 76 69 64 65 72 2e 20 4f 6d 69 74 74 65 64 20 66 6f 72 20 70 6c 61 69 6e 2d 74 65 78 .provider..Omitted.for.plain-tex
af80 74 20 74 75 72 6e 73 20 28 74 68 65 20 63 6f 6d 6d 6f 6e 20 63 61 73 65 29 2e 0a 09 09 09 20 2a t.turns.(the.common.case)......*
afa0 2f 0a 09 09 09 63 6f 6e 74 65 6e 74 3f 3a 20 55 73 65 72 43 6f 6e 74 65 6e 74 50 61 72 74 5b 5d /....content?:.UserContentPart[]
afc0 3b 0a 09 09 7d 2c 0a 09 29 3a 20 41 73 79 6e 63 47 65 6e 65 72 61 74 6f 72 3c 41 67 65 6e 74 45 ;...},..):.AsyncGenerator<AgentE
afe0 76 65 6e 74 3e 20 7b 0a 09 09 74 68 69 73 2e 73 74 61 74 75 73 20 3d 20 22 72 75 6e 6e 69 6e 67 vent>.{...this.status.=."running
b000 22 3b 0a 09 09 79 69 65 6c 64 20 7b 20 74 79 70 65 3a 20 22 73 74 61 74 75 73 22 2c 20 73 74 61 ";...yield.{.type:."status",.sta
b020 74 75 73 3a 20 22 72 75 6e 6e 69 6e 67 22 20 7d 3b 0a 0a 09 09 2f 2f 20 41 74 74 61 63 68 20 74 tus:."running".};....//.Attach.t
b040 68 65 20 65 70 68 65 6d 65 72 61 6c 20 6d 75 6c 74 69 6d 6f 64 61 6c 20 63 6f 6e 74 65 6e 74 20 he.ephemeral.multimodal.content.
b060 28 69 66 20 61 6e 79 29 20 74 6f 20 74 68 65 20 69 6e 2d 66 6c 69 67 68 74 20 75 73 65 72 0a 09 (if.any).to.the.in-flight.user..
b080 09 2f 2f 20 6d 65 73 73 61 67 65 20 73 6f 20 60 74 6f 4d 6f 64 65 6c 4d 65 73 73 61 67 65 73 60 .//.message.so.`toModelMessages`
b0a0 20 63 61 6e 20 65 6d 69 74 20 69 6e 74 65 72 6c 65 61 76 65 64 20 69 6d 61 67 65 2f 70 64 66 20 .can.emit.interleaved.image/pdf.
b0c0 70 61 72 74 73 20 74 6f 20 74 68 65 0a 09 09 2f 2f 20 70 72 6f 76 69 64 65 72 2e 20 54 68 65 20 parts.to.the...//.provider..The.
b0e0 70 65 72 73 69 73 74 65 64 20 63 68 75 6e 6b 20 69 73 20 73 74 69 6c 6c 20 74 65 78 74 2d 6f 6e persisted.chunk.is.still.text-on
b100 6c 79 20 28 60 75 73 65 72 4d 65 73 73 61 67 65 60 29 2e 0a 09 09 63 6f 6e 73 74 20 68 61 73 4d ly.(`userMessage`)....const.hasM
b120 75 6c 74 69 6d 6f 64 61 6c 20 3d 0a 09 09 09 21 21 6f 70 74 69 6f 6e 73 3f 2e 63 6f 6e 74 65 6e ultimodal.=....!!options?.conten
b140 74 20 26 26 20 6f 70 74 69 6f 6e 73 2e 63 6f 6e 74 65 6e 74 2e 73 6f 6d 65 28 28 70 29 20 3d 3e t.&&.options.content.some((p).=>
b160 20 70 2e 74 79 70 65 20 3d 3d 3d 20 22 61 74 74 61 63 68 6d 65 6e 74 22 29 3b 0a 09 09 74 68 69 .p.type.===."attachment");...thi
b180 73 2e 6d 65 73 73 61 67 65 73 2e 70 75 73 68 28 7b 0a 09 09 09 72 6f 6c 65 3a 20 22 75 73 65 72 s.messages.push({....role:."user
b1a0 22 2c 0a 09 09 09 63 68 75 6e 6b 73 3a 20 5b 7b 20 74 79 70 65 3a 20 22 74 65 78 74 22 2c 20 74 ",....chunks:.[{.type:."text",.t
b1c0 65 78 74 3a 20 75 73 65 72 4d 65 73 73 61 67 65 20 7d 5d 2c 0a 09 09 09 2e 2e 2e 28 68 61 73 4d ext:.userMessage.}],.......(hasM
b1e0 75 6c 74 69 6d 6f 64 61 6c 20 3f 20 7b 20 63 6f 6e 74 65 6e 74 3a 20 6f 70 74 69 6f 6e 73 3f 2e ultimodal.?.{.content:.options?.
b200 63 6f 6e 74 65 6e 74 20 7d 20 3a 20 7b 7d 29 2c 0a 09 09 7d 29 3b 0a 0a 09 09 63 6f 6e 73 74 20 content.}.:.{}),...});....const.
b220 7b 20 69 73 43 6c 61 75 64 65 4f 41 75 74 68 2c 20 75 73 65 73 41 6e 74 68 72 6f 70 69 63 53 44 {.isClaudeOAuth,.usesAnthropicSD
b240 4b 2c 20 70 72 6f 76 69 64 65 72 46 61 63 74 6f 72 79 2c 20 74 6f 6f 6c 73 2c 20 73 79 73 74 65 K,.providerFactory,.tools,.syste
b260 6d 50 72 6f 6d 70 74 20 7d 20 3d 0a 09 09 09 74 68 69 73 2e 62 75 69 6c 64 4c 6c 6d 43 6f 6e 74 mPrompt.}.=....this.buildLlmCont
b280 65 78 74 28 74 68 69 73 2e 6d 65 73 73 61 67 65 73 29 3b 0a 0a 09 09 74 72 79 20 7b 0a 09 09 09 ext(this.messages);....try.{....
b2a0 6c 6f 67 41 67 65 6e 74 4c 6f 6f 70 28 7b 0a 09 09 09 09 74 61 62 49 64 3a 20 74 68 69 73 2e 63 logAgentLoop({.....tabId:.this.c
b2c0 6f 6e 66 69 67 2e 74 61 62 49 64 2c 0a 09 09 09 09 65 76 65 6e 74 3a 20 22 72 75 6e 2d 73 74 61 onfig.tabId,.....event:."run-sta
b2e0 72 74 22 2c 0a 09 09 09 09 64 65 74 61 69 6c 3a 20 7b 20 6d 6f 64 65 6c 3a 20 74 68 69 73 2e 63 rt",.....detail:.{.model:.this.c
b300 6f 6e 66 69 67 2e 6d 6f 64 65 6c 2c 20 70 72 6f 76 69 64 65 72 3a 20 74 68 69 73 2e 63 6f 6e 66 onfig.model,.provider:.this.conf
b320 69 67 2e 70 72 6f 76 69 64 65 72 20 7d 2c 0a 09 09 09 7d 29 3b 0a 09 09 09 2f 2f 20 53 69 6e 67 ig.provider.},....});....//.Sing
b340 6c 65 20 63 68 75 6e 6b 20 61 63 63 75 6d 75 6c 61 74 6f 72 20 66 6f 72 20 74 68 65 20 65 6e 74 le.chunk.accumulator.for.the.ent
b360 69 72 65 20 61 73 73 69 73 74 61 6e 74 20 74 75 72 6e 20 28 61 6c 6c 20 73 74 65 70 73 29 2e 0a ire.assistant.turn.(all.steps)..
b380 09 09 09 2f 2f 20 41 6c 6c 20 65 76 65 6e 74 2d 64 72 69 76 65 6e 20 6d 75 74 61 74 69 6f 6e 73 ...//.All.event-driven.mutations
b3a0 20 67 6f 20 74 68 72 6f 75 67 68 20 60 61 70 70 65 6e 64 45 76 65 6e 74 54 6f 43 68 75 6e 6b 73 .go.through.`appendEventToChunks
b3c0 60 2e 0a 09 09 09 63 6f 6e 73 74 20 63 68 75 6e 6b 73 3a 20 43 68 75 6e 6b 5b 5d 20 3d 20 5b 5d `.....const.chunks:.Chunk[].=.[]
b3e0 3b 0a 0a 09 09 09 2f 2f 20 57 65 20 62 75 69 6c 64 20 75 70 20 61 20 6c 6f 63 61 6c 20 6d 65 73 ;.....//.We.build.up.a.local.mes
b400 73 61 67 65 20 6c 69 73 74 20 66 6f 72 20 6d 75 6c 74 69 2d 74 75 72 6e 20 77 69 74 68 69 6e 20 sage.list.for.multi-turn.within.
b420 6f 6e 65 20 72 75 6e 28 29 20 63 61 6c 6c 0a 09 09 09 2f 2f 20 74 68 61 74 20 69 6e 63 6c 75 64 one.run().call....//.that.includ
b440 65 73 20 74 6f 6f 6c 20 72 65 73 75 6c 74 73 20 66 65 64 20 62 61 63 6b 20 74 6f 20 74 68 65 20 es.tool.results.fed.back.to.the.
b460 4c 4c 4d 2e 20 45 61 63 68 20 73 74 65 70 20 61 70 70 65 6e 64 73 0a 09 09 09 2f 2f 20 74 68 65 LLM..Each.step.appends....//.the
b480 20 61 73 73 69 73 74 61 6e 74 27 73 20 65 76 6f 6c 76 69 6e 67 20 63 68 75 6e 6b 20 6c 69 73 74 .assistant's.evolving.chunk.list
b4a0 20 61 73 20 6f 6e 65 20 43 68 61 74 4d 65 73 73 61 67 65 3b 20 73 75 62 73 65 71 75 65 6e 74 0a .as.one.ChatMessage;.subsequent.
b4c0 09 09 09 2f 2f 20 73 74 65 70 73 20 73 65 65 20 70 72 69 6f 72 20 74 6f 6f 6c 20 63 61 6c 6c 73 ...//.steps.see.prior.tool.calls
b4e0 20 61 6e 64 20 74 68 65 69 72 20 72 65 73 75 6c 74 73 20 76 69 61 20 74 68 65 20 63 68 75 6e 6b .and.their.results.via.the.chunk
b500 73 2e 0a 09 09 09 63 6f 6e 73 74 20 73 74 65 70 4d 65 73 73 61 67 65 73 3a 20 43 68 61 74 4d 65 s.....const.stepMessages:.ChatMe
b520 73 73 61 67 65 5b 5d 20 3d 20 5b 2e 2e 2e 74 68 69 73 2e 6d 65 73 73 61 67 65 73 5d 3b 0a 09 09 ssage[].=.[...this.messages];...
b540 09 2f 2f 20 54 68 65 20 61 73 73 69 73 74 61 6e 74 20 43 68 61 74 4d 65 73 73 61 67 65 20 66 6f .//.The.assistant.ChatMessage.fo
b560 72 20 74 68 65 20 63 75 72 72 65 6e 74 20 74 75 72 6e 2c 20 73 68 61 72 65 64 20 61 63 72 6f 73 r.the.current.turn,.shared.acros
b580 73 20 73 74 65 70 73 0a 09 09 09 2f 2f 20 73 6f 20 69 74 73 20 60 63 68 75 6e 6b 73 60 20 72 65 s.steps....//.so.its.`chunks`.re
b5a0 66 65 72 65 6e 63 65 20 6d 61 74 63 68 65 73 20 74 68 65 20 61 63 63 75 6d 75 6c 61 74 6f 72 20 ference.matches.the.accumulator.
b5c0 61 62 6f 76 65 2e 20 57 65 20 70 75 73 68 0a 09 09 09 2f 2f 20 69 74 20 6f 6e 63 65 20 77 68 65 above..We.push....//.it.once.whe
b5e0 6e 20 74 68 65 20 66 69 72 73 74 20 73 74 65 70 20 68 61 73 20 61 63 74 75 61 6c 20 6f 75 74 70 n.the.first.step.has.actual.outp
b600 75 74 20 74 6f 20 72 65 63 6f 72 64 2e 0a 09 09 09 6c 65 74 20 61 73 73 69 73 74 61 6e 74 54 75 ut.to.record.....let.assistantTu
b620 72 6e 4d 65 73 73 61 67 65 3a 20 43 68 61 74 4d 65 73 73 61 67 65 20 7c 20 6e 75 6c 6c 20 3d 20 rnMessage:.ChatMessage.|.null.=.
b640 6e 75 6c 6c 3b 0a 0a 09 09 09 66 6f 72 20 28 6c 65 74 20 73 74 65 70 20 3d 20 30 3b 20 73 74 65 null;.....for.(let.step.=.0;.ste
b660 70 20 3c 20 4d 41 58 5f 53 54 45 50 53 3b 20 73 74 65 70 2b 2b 29 20 7b 0a 09 09 09 09 63 6f 6e p.<.MAX_STEPS;.step++).{.....con
b680 73 74 20 65 66 66 6f 72 74 20 3d 0a 09 09 09 09 09 6f 70 74 69 6f 6e 73 3f 2e 72 65 61 73 6f 6e st.effort.=......options?.reason
b6a0 69 6e 67 45 66 66 6f 72 74 20 3f 3f 20 74 68 69 73 2e 63 6f 6e 66 69 67 2e 72 65 61 73 6f 6e 69 ingEffort.??.this.config.reasoni
b6c0 6e 67 45 66 66 6f 72 74 20 3f 3f 20 44 45 46 41 55 4c 54 5f 52 45 41 53 4f 4e 49 4e 47 5f 45 46 ngEffort.??.DEFAULT_REASONING_EF
b6e0 46 4f 52 54 3b 0a 09 09 09 09 63 6f 6e 73 74 20 64 65 62 75 67 52 65 71 49 64 20 3d 20 6e 65 78 FORT;.....const.debugReqId.=.nex
b700 74 44 65 62 75 67 53 65 71 28 29 3b 0a 09 09 09 09 6c 6f 67 53 74 65 70 4c 69 66 65 63 79 63 6c tDebugSeq();.....logStepLifecycl
b720 65 28 7b 0a 09 09 09 09 09 74 61 62 49 64 3a 20 74 68 69 73 2e 63 6f 6e 66 69 67 2e 74 61 62 49 e({......tabId:.this.config.tabI
b740 64 2c 0a 09 09 09 09 09 73 74 65 70 2c 0a 09 09 09 09 09 65 76 65 6e 74 3a 20 22 73 74 65 70 2d d,......step,......event:."step-
b760 73 74 61 72 74 22 2c 0a 09 09 09 09 09 64 65 74 61 69 6c 3a 20 7b 20 65 66 66 6f 72 74 2c 20 68 start",......detail:.{.effort,.h
b780 69 73 74 6f 72 79 4d 65 73 73 61 67 65 73 3a 20 73 74 65 70 4d 65 73 73 61 67 65 73 2e 6c 65 6e istoryMessages:.stepMessages.len
b7a0 67 74 68 20 7d 2c 0a 09 09 09 09 7d 29 3b 0a 0a 09 09 09 09 2f 2f 20 42 75 69 6c 64 20 73 74 72 gth.},.....});......//.Build.str
b7c0 65 61 6d 20 74 65 78 74 20 6f 70 74 69 6f 6e 73 0a 09 09 09 09 63 6f 6e 73 74 20 6d 6f 64 65 6c eam.text.options.....const.model
b7e0 20 3d 20 70 72 6f 76 69 64 65 72 46 61 63 74 6f 72 79 28 74 68 69 73 2e 63 6f 6e 66 69 67 2e 6d .=.providerFactory(this.config.m
b800 6f 64 65 6c 29 3b 0a 0a 09 09 09 09 2f 2f 20 42 75 69 6c 64 20 74 68 65 20 6d 65 73 73 61 67 65 odel);......//.Build.the.message
b820 20 6c 69 73 74 20 77 69 74 68 20 74 68 65 20 73 79 73 74 65 6d 20 70 72 6f 6d 70 74 20 70 72 65 .list.with.the.system.prompt.pre
b840 70 65 6e 64 65 64 20 61 73 20 61 20 73 79 73 74 65 6d 0a 09 09 09 09 2f 2f 20 72 6f 6c 65 20 6d pended.as.a.system.....//.role.m
b860 65 73 73 61 67 65 2e 20 54 68 69 73 20 69 73 20 72 65 71 75 69 72 65 64 20 66 6f 72 20 41 6e 74 essage..This.is.required.for.Ant
b880 68 72 6f 70 69 63 20 70 72 6f 6d 70 74 20 63 61 63 68 69 6e 67 3a 20 74 68 65 0a 09 09 09 09 2f hropic.prompt.caching:.the...../
b8a0 2f 20 60 73 79 73 74 65 6d 60 20 73 68 6f 72 74 63 75 74 20 70 61 72 61 6d 65 74 65 72 20 74 61 /.`system`.shortcut.parameter.ta
b8c0 6b 65 73 20 61 20 70 6c 61 69 6e 20 73 74 72 69 6e 67 20 77 69 74 68 20 6e 6f 77 68 65 72 65 20 kes.a.plain.string.with.nowhere.
b8e0 74 6f 0a 09 09 09 09 2f 2f 20 61 74 74 61 63 68 20 60 70 72 6f 76 69 64 65 72 4f 70 74 69 6f 6e to.....//.attach.`providerOption
b900 73 2e 61 6e 74 68 72 6f 70 69 63 2e 63 61 63 68 65 43 6f 6e 74 72 6f 6c 60 2e 20 4d 6f 76 69 6e s.anthropic.cacheControl`..Movin
b920 67 20 69 74 20 69 6e 6c 69 6e 65 0a 09 09 09 09 2f 2f 20 61 6c 73 6f 20 6c 65 74 73 20 75 73 20 g.it.inline.....//.also.lets.us.
b940 61 70 70 6c 79 20 72 6f 6c 6c 69 6e 67 20 63 61 63 68 65 20 62 72 65 61 6b 70 6f 69 6e 74 73 20 apply.rolling.cache.breakpoints.
b960 74 6f 20 74 68 65 20 6c 61 73 74 20 6d 65 73 73 61 67 65 73 2e 0a 09 09 09 09 63 6f 6e 73 74 20 to.the.last.messages......const.
b980 73 79 73 74 65 6d 4d 65 73 73 61 67 65 3a 20 53 79 73 74 65 6d 4d 6f 64 65 6c 4d 65 73 73 61 67 systemMessage:.SystemModelMessag
b9a0 65 20 3d 20 7b 0a 09 09 09 09 09 72 6f 6c 65 3a 20 22 73 79 73 74 65 6d 22 2c 0a 09 09 09 09 09 e.=.{......role:."system",......
b9c0 63 6f 6e 74 65 6e 74 3a 20 73 79 73 74 65 6d 50 72 6f 6d 70 74 2c 0a 09 09 09 09 7d 3b 0a 0a 09 content:.systemPrompt,.....};...
b9e0 09 09 09 6c 65 74 20 63 6f 72 65 4d 65 73 73 61 67 65 73 3a 20 4d 6f 64 65 6c 4d 65 73 73 61 67 ...let.coreMessages:.ModelMessag
ba00 65 5b 5d 20 3d 20 5b 0a 09 09 09 09 09 73 79 73 74 65 6d 4d 65 73 73 61 67 65 2c 0a 09 09 09 09 e[].=.[......systemMessage,.....
ba20 09 2e 2e 2e 74 6f 4d 6f 64 65 6c 4d 65 73 73 61 67 65 73 28 73 74 65 70 4d 65 73 73 61 67 65 73 ....toModelMessages(stepMessages
ba40 2c 20 69 73 43 6c 61 75 64 65 4f 41 75 74 68 29 2c 0a 09 09 09 09 5d 3b 0a 0a 09 09 09 09 2f 2f ,.isClaudeOAuth),.....];......//
ba60 20 41 70 70 6c 79 20 70 72 6f 76 69 64 65 72 2d 73 70 65 63 69 66 69 63 20 73 74 72 75 63 74 75 .Apply.provider-specific.structu
ba80 72 61 6c 20 6e 6f 72 6d 61 6c 69 73 61 74 69 6f 6e 73 20 62 65 66 6f 72 65 0a 09 09 09 09 2f 2f ral.normalisations.before.....//
baa0 20 73 65 6e 64 69 6e 67 2e 20 41 6e 74 68 72 6f 70 69 63 20 61 6e 64 20 6f 70 65 6e 61 69 2d 63 .sending..Anthropic.and.openai-c
bac0 6f 6d 70 61 74 69 62 6c 65 20 70 61 74 68 73 20 65 61 63 68 20 68 61 76 65 0a 09 09 09 09 2f 2f ompatible.paths.each.have.....//
bae0 20 74 68 65 69 72 20 6f 77 6e 20 6d 65 73 73 61 67 65 2d 73 68 61 70 65 20 72 65 71 75 69 72 65 .their.own.message-shape.require
bb00 6d 65 6e 74 73 3b 20 74 68 65 20 74 77 6f 20 70 61 73 73 65 73 20 61 72 65 0a 09 09 09 09 2f 2f ments;.the.two.passes.are.....//
bb20 20 6d 75 74 75 61 6c 6c 79 20 65 78 63 6c 75 73 69 76 65 2e 0a 09 09 09 09 69 66 20 28 75 73 65 .mutually.exclusive......if.(use
bb40 73 41 6e 74 68 72 6f 70 69 63 53 44 4b 29 20 7b 0a 09 09 09 09 09 63 6f 72 65 4d 65 73 73 61 67 sAnthropicSDK).{......coreMessag
bb60 65 73 20 3d 20 61 70 70 6c 79 41 6e 74 68 72 6f 70 69 63 53 74 72 75 63 74 75 72 61 6c 4e 6f 72 es.=.applyAnthropicStructuralNor
bb80 6d 61 6c 69 73 61 74 69 6f 6e 73 28 63 6f 72 65 4d 65 73 73 61 67 65 73 29 3b 0a 09 09 09 09 09 malisations(coreMessages);......
bba0 61 70 70 6c 79 41 6e 74 68 72 6f 70 69 63 43 61 63 68 69 6e 67 28 63 6f 72 65 4d 65 73 73 61 67 applyAnthropicCaching(coreMessag
bbc0 65 73 29 3b 0a 09 09 09 09 7d 20 65 6c 73 65 20 7b 0a 09 09 09 09 09 63 6f 72 65 4d 65 73 73 61 es);.....}.else.{......coreMessa
bbe0 67 65 73 20 3d 20 61 70 70 6c 79 4f 70 65 6e 41 49 43 6f 6d 70 61 74 69 62 6c 65 52 65 61 73 6f ges.=.applyOpenAICompatibleReaso
bc00 6e 69 6e 67 4e 6f 72 6d 61 6c 69 73 61 74 69 6f 6e 28 63 6f 72 65 4d 65 73 73 61 67 65 73 29 3b ningNormalisation(coreMessages);
bc20 0a 09 09 09 09 7d 0a 0a 09 09 09 09 2f 2f 20 42 75 69 6c 64 20 74 68 65 20 72 65 71 75 65 73 74 .....}......//.Build.the.request
bc40 27 73 20 73 74 72 65 61 6d 20 6f 70 74 69 6f 6e 73 20 74 68 72 6f 75 67 68 20 74 68 65 20 53 48 's.stream.options.through.the.SH
bc60 41 52 45 44 20 68 65 6c 70 65 72 20 73 6f 0a 09 09 09 09 2f 2f 20 74 68 65 20 63 61 63 68 65 2d ARED.helper.so.....//.the.cache-
bc80 61 66 66 65 63 74 69 6e 67 20 70 61 72 61 6d 65 74 65 72 73 20 28 74 6f 6f 6c 43 68 6f 69 63 65 affecting.parameters.(toolChoice
bca0 2c 20 74 68 69 6e 6b 69 6e 67 0a 09 09 09 09 2f 2f 20 70 72 6f 76 69 64 65 72 4f 70 74 69 6f 6e ,.thinking.....//.providerOption
bcc0 73 2c 20 6d 61 78 4f 75 74 70 75 74 54 6f 6b 65 6e 73 29 20 61 72 65 20 62 79 74 65 2d 69 64 65 s,.maxOutputTokens).are.byte-ide
bce0 6e 74 69 63 61 6c 20 74 6f 20 77 68 61 74 20 74 68 65 0a 09 09 09 09 2f 2f 20 69 64 6c 65 20 63 ntical.to.what.the.....//.idle.c
bd00 61 63 68 65 2d 77 61 72 6d 69 6e 67 20 72 65 70 6c 61 79 20 73 65 6e 64 73 2e 20 41 6e 79 20 64 ache-warming.replay.sends..Any.d
bd20 72 69 66 74 20 68 65 72 65 20 77 6f 75 6c 64 20 73 70 6c 69 74 20 74 68 65 0a 09 09 09 09 2f 2f rift.here.would.split.the.....//
bd40 20 41 6e 74 68 72 6f 70 69 63 20 6d 65 73 73 61 67 65 20 63 61 63 68 65 20 69 6e 74 6f 20 74 77 .Anthropic.message.cache.into.tw
bd60 6f 20 62 75 63 6b 65 74 73 20 28 73 65 65 20 62 75 69 6c 64 53 74 72 65 61 6d 4f 70 74 69 6f 6e o.buckets.(see.buildStreamOption
bd80 73 0a 09 09 09 09 2f 2f 20 2b 20 41 67 65 6e 74 2e 77 61 72 6d 43 61 63 68 65 29 2e 0a 09 09 09 s.....//.+.Agent.warmCache).....
bda0 09 63 6f 6e 73 74 20 73 74 72 65 61 6d 4f 70 74 69 6f 6e 73 20 3d 20 74 68 69 73 2e 62 75 69 6c .const.streamOptions.=.this.buil
bdc0 64 53 74 72 65 61 6d 4f 70 74 69 6f 6e 73 28 7b 0a 09 09 09 09 09 6d 6f 64 65 6c 2c 0a 09 09 09 dStreamOptions({......model,....
bde0 09 09 63 6f 72 65 4d 65 73 73 61 67 65 73 2c 0a 09 09 09 09 09 74 6f 6f 6c 73 2c 0a 09 09 09 09 ..coreMessages,......tools,.....
be00 09 69 73 43 6c 61 75 64 65 4f 41 75 74 68 2c 0a 09 09 09 09 09 75 73 65 73 41 6e 74 68 72 6f 70 .isClaudeOAuth,......usesAnthrop
be20 69 63 53 44 4b 2c 0a 09 09 09 09 09 65 66 66 6f 72 74 2c 0a 09 09 09 09 09 61 62 6f 72 74 53 69 icSDK,......effort,......abortSi
be40 67 6e 61 6c 3a 20 6f 70 74 69 6f 6e 73 3f 2e 61 62 6f 72 74 53 69 67 6e 61 6c 2c 0a 09 09 09 09 gnal:.options?.abortSignal,.....
be60 7d 29 3b 0a 0a 09 09 09 09 63 6f 6e 73 74 20 72 65 73 75 6c 74 20 3d 20 73 74 72 65 61 6d 54 65 });......const.result.=.streamTe
be80 78 74 28 73 74 72 65 61 6d 4f 70 74 69 6f 6e 73 29 3b 0a 0a 09 09 09 09 2f 2f 20 50 65 72 2d 73 xt(streamOptions);......//.Per-s
bea0 74 65 70 20 74 6f 6f 6c 2d 63 61 6c 6c 20 74 72 61 63 6b 69 6e 67 20 e2 80 94 20 6e 65 65 64 65 tep.tool-call.tracking.....neede
bec0 64 20 62 65 63 61 75 73 65 20 77 65 20 6f 6e 6c 79 20 6c 6f 6f 70 20 62 61 63 6b 0a 09 09 09 09 d.because.we.only.loop.back.....
bee0 2f 2f 20 74 6f 20 74 68 65 20 4c 4c 4d 20 69 66 20 74 68 69 73 20 73 74 65 70 20 70 72 6f 64 75 //.to.the.LLM.if.this.step.produ
bf00 63 65 64 20 74 6f 6f 6c 20 63 61 6c 6c 73 2e 20 54 68 65 20 61 63 74 75 61 6c 20 63 68 75 6e 6b ced.tool.calls..The.actual.chunk
bf20 0a 09 09 09 09 2f 2f 20 73 74 61 74 65 20 66 6f 72 20 74 68 65 20 74 75 72 6e 20 6c 69 76 65 73 .....//.state.for.the.turn.lives
bf40 20 69 6e 20 60 63 68 75 6e 6b 73 60 2e 0a 09 09 09 09 63 6f 6e 73 74 20 73 74 65 70 54 6f 6f 6c .in.`chunks`......const.stepTool
bf60 43 61 6c 6c 73 3a 20 54 6f 6f 6c 43 61 6c 6c 5b 5d 20 3d 20 5b 5d 3b 0a 0a 09 09 09 09 2f 2f 20 Calls:.ToolCall[].=.[];......//.
bf80 45 6e 73 75 72 65 20 77 65 20 68 61 76 65 20 61 6e 20 61 73 73 69 73 74 61 6e 74 20 6d 65 73 73 Ensure.we.have.an.assistant.mess
bfa0 61 67 65 20 69 6e 20 73 74 65 70 4d 65 73 73 61 67 65 73 20 77 68 6f 73 65 0a 09 09 09 09 2f 2f age.in.stepMessages.whose.....//
bfc0 20 60 63 68 75 6e 6b 73 60 20 72 65 66 65 72 65 6e 63 65 20 69 73 20 73 68 61 72 65 64 20 77 69 .`chunks`.reference.is.shared.wi
bfe0 74 68 20 6f 75 72 20 61 63 63 75 6d 75 6c 61 74 6f 72 2e 20 4f 6e 6c 79 20 70 75 73 68 0a 09 09 th.our.accumulator..Only.push...
c000 09 09 2f 2f 20 6f 6e 63 65 3b 20 73 75 62 73 65 71 75 65 6e 74 20 73 74 65 70 73 20 6d 75 74 61 ..//.once;.subsequent.steps.muta
c020 74 65 20 74 68 65 20 73 61 6d 65 20 63 68 75 6e 6b 73 20 61 72 72 61 79 2e 0a 09 09 09 09 69 66 te.the.same.chunks.array......if
c040 20 28 61 73 73 69 73 74 61 6e 74 54 75 72 6e 4d 65 73 73 61 67 65 20 3d 3d 3d 20 6e 75 6c 6c 29 .(assistantTurnMessage.===.null)
c060 20 7b 0a 09 09 09 09 09 61 73 73 69 73 74 61 6e 74 54 75 72 6e 4d 65 73 73 61 67 65 20 3d 20 7b .{......assistantTurnMessage.=.{
c080 20 72 6f 6c 65 3a 20 22 61 73 73 69 73 74 61 6e 74 22 2c 20 63 68 75 6e 6b 73 20 7d 3b 0a 09 09 .role:."assistant",.chunks.};...
c0a0 09 09 09 73 74 65 70 4d 65 73 73 61 67 65 73 2e 70 75 73 68 28 61 73 73 69 73 74 61 6e 74 54 75 ...stepMessages.push(assistantTu
c0c0 72 6e 4d 65 73 73 61 67 65 29 3b 0a 09 09 09 09 7d 0a 0a 09 09 09 09 2f 2f 20 55 6e 65 78 70 65 rnMessage);.....}......//.Unexpe
c0e0 63 74 65 64 20 73 74 72 65 61 6d 20 65 72 72 6f 72 73 20 70 72 6f 70 61 67 61 74 65 20 75 70 20 cted.stream.errors.propagate.up.
c100 74 6f 20 74 68 65 20 6f 75 74 65 72 20 74 72 79 2f 63 61 74 63 68 0a 09 09 09 09 2f 2f 20 69 6e to.the.outer.try/catch.....//.in
c120 20 60 72 75 6e 28 29 60 2c 20 77 68 69 63 68 20 66 6f 72 6d 61 74 73 20 74 68 65 6d 20 61 6e 64 .`run()`,.which.formats.them.and
c140 20 74 72 61 6e 73 69 74 69 6f 6e 73 20 74 68 65 20 61 67 65 6e 74 20 74 6f 0a 09 09 09 09 2f 2f .transitions.the.agent.to.....//
c160 20 74 68 65 20 22 65 72 72 6f 72 22 20 73 74 61 74 75 73 2e 20 54 68 65 20 41 49 20 53 44 4b 20 .the."error".status..The.AI.SDK.
c180 76 36 20 73 75 72 66 61 63 65 73 20 75 6e 61 76 61 69 6c 61 62 6c 65 2d 74 6f 6f 6c 0a 09 09 09 v6.surfaces.unavailable-tool....
c1a0 09 2f 2f 20 63 61 6c 6c 73 20 61 73 20 6e 61 74 69 76 65 20 60 74 6f 6f 6c 2d 65 72 72 6f 72 60 .//.calls.as.native.`tool-error`
c1c0 20 73 74 72 65 61 6d 20 65 76 65 6e 74 73 20 28 68 61 6e 64 6c 65 64 20 62 65 6c 6f 77 29 2c 0a .stream.events.(handled.below),.
c1e0 09 09 09 09 2f 2f 20 73 6f 20 74 68 65 72 65 27 73 20 6e 6f 20 4e 6f 53 75 63 68 54 6f 6f 6c 45 ....//.so.there's.no.NoSuchToolE
c200 72 72 6f 72 20 74 6f 20 63 61 74 63 68 20 68 65 72 65 2e 0a 09 09 09 09 66 6f 72 20 61 77 61 69 rror.to.catch.here......for.awai
c220 74 20 28 63 6f 6e 73 74 20 65 76 65 6e 74 20 6f 66 20 72 65 73 75 6c 74 2e 66 75 6c 6c 53 74 72 t.(const.event.of.result.fullStr
c240 65 61 6d 29 20 7b 0a 09 09 09 09 09 6c 6f 67 53 74 72 65 61 6d 45 76 65 6e 74 28 7b 0a 09 09 09 eam).{......logStreamEvent({....
c260 09 09 09 72 65 71 75 65 73 74 49 64 3a 20 64 65 62 75 67 52 65 71 49 64 2c 0a 09 09 09 09 09 09 ...requestId:.debugReqId,.......
c280 73 74 65 70 2c 0a 09 09 09 09 09 09 65 76 65 6e 74 54 79 70 65 3a 20 65 76 65 6e 74 2e 74 79 70 step,.......eventType:.event.typ
c2a0 65 2c 0a 09 09 09 09 09 09 74 61 62 49 64 3a 20 74 68 69 73 2e 63 6f 6e 66 69 67 2e 74 61 62 49 e,.......tabId:.this.config.tabI
c2c0 64 2c 0a 09 09 09 09 09 7d 29 3b 0a 09 09 09 09 09 69 66 20 28 65 76 65 6e 74 2e 74 79 70 65 20 d,......});......if.(event.type.
c2e0 3d 3d 3d 20 22 74 65 78 74 2d 64 65 6c 74 61 22 29 20 7b 0a 09 09 09 09 09 09 2f 2f 20 76 36 3a ===."text-delta").{.......//.v6:
c300 20 74 65 78 74 2d 64 65 6c 74 61 20 63 61 72 72 69 65 73 20 60 74 65 78 74 60 20 28 6e 6f 74 20 .text-delta.carries.`text`.(not.
c320 60 74 65 78 74 44 65 6c 74 61 60 29 0a 09 09 09 09 09 09 63 6f 6e 73 74 20 69 6e 74 65 72 6e 61 `textDelta`).......const.interna
c340 6c 45 76 65 6e 74 3a 20 41 67 65 6e 74 45 76 65 6e 74 20 3d 20 7b 0a 09 09 09 09 09 09 09 74 79 lEvent:.AgentEvent.=.{........ty
c360 70 65 3a 20 22 74 65 78 74 2d 64 65 6c 74 61 22 2c 0a 09 09 09 09 09 09 09 64 65 6c 74 61 3a 20 pe:."text-delta",........delta:.
c380 65 76 65 6e 74 2e 74 65 78 74 2c 0a 09 09 09 09 09 09 7d 3b 0a 09 09 09 09 09 09 61 70 70 65 6e event.text,.......};.......appen
c3a0 64 45 76 65 6e 74 54 6f 43 68 75 6e 6b 73 28 63 68 75 6e 6b 73 2c 20 69 6e 74 65 72 6e 61 6c 45 dEventToChunks(chunks,.internalE
c3c0 76 65 6e 74 29 3b 0a 09 09 09 09 09 09 79 69 65 6c 64 20 69 6e 74 65 72 6e 61 6c 45 76 65 6e 74 vent);.......yield.internalEvent
c3e0 3b 0a 09 09 09 09 09 7d 20 65 6c 73 65 20 69 66 20 28 65 76 65 6e 74 2e 74 79 70 65 20 3d 3d 3d ;......}.else.if.(event.type.===
c400 20 22 72 65 61 73 6f 6e 69 6e 67 2d 64 65 6c 74 61 22 29 20 7b 0a 09 09 09 09 09 09 2f 2f 20 76 ."reasoning-delta").{.......//.v
c420 36 20 6e 65 77 20 65 76 65 6e 74 3a 20 72 65 61 73 6f 6e 69 6e 67 2d 64 65 6c 74 61 20 63 61 72 6.new.event:.reasoning-delta.car
c440 72 69 65 73 20 60 74 65 78 74 60 20 28 6e 6f 74 20 60 74 65 78 74 44 65 6c 74 61 60 29 0a 09 09 ries.`text`.(not.`textDelta`)...
c460 09 09 09 09 63 6f 6e 73 74 20 69 6e 74 65 72 6e 61 6c 45 76 65 6e 74 3a 20 41 67 65 6e 74 45 76 ....const.internalEvent:.AgentEv
c480 65 6e 74 20 3d 20 7b 0a 09 09 09 09 09 09 09 74 79 70 65 3a 20 22 72 65 61 73 6f 6e 69 6e 67 2d ent.=.{........type:."reasoning-
c4a0 64 65 6c 74 61 22 2c 0a 09 09 09 09 09 09 09 64 65 6c 74 61 3a 20 65 76 65 6e 74 2e 74 65 78 74 delta",........delta:.event.text
c4c0 2c 0a 09 09 09 09 09 09 7d 3b 0a 09 09 09 09 09 09 61 70 70 65 6e 64 45 76 65 6e 74 54 6f 43 68 ,.......};.......appendEventToCh
c4e0 75 6e 6b 73 28 63 68 75 6e 6b 73 2c 20 69 6e 74 65 72 6e 61 6c 45 76 65 6e 74 29 3b 0a 09 09 09 unks(chunks,.internalEvent);....
c500 09 09 09 79 69 65 6c 64 20 69 6e 74 65 72 6e 61 6c 45 76 65 6e 74 3b 0a 09 09 09 09 09 7d 20 65 ...yield.internalEvent;......}.e
c520 6c 73 65 20 69 66 20 28 65 76 65 6e 74 2e 74 79 70 65 20 3d 3d 3d 20 22 72 65 61 73 6f 6e 69 6e lse.if.(event.type.===."reasonin
c540 67 2d 65 6e 64 22 29 20 7b 0a 09 09 09 09 09 09 2f 2f 20 4f 6e 6c 79 20 65 6d 69 74 20 77 68 65 g-end").{.......//.Only.emit.whe
c560 6e 20 70 72 6f 76 69 64 65 72 4d 65 74 61 64 61 74 61 20 69 73 20 70 72 65 73 65 6e 74 20 e2 80 n.providerMetadata.is.present...
c580 94 20 6e 6f 6e 2d 41 6e 74 68 72 6f 70 69 63 0a 09 09 09 09 09 09 2f 2f 20 6d 6f 64 65 6c 73 20 ..non-Anthropic.......//.models.
c5a0 73 65 6e 64 20 72 65 61 73 6f 6e 69 6e 67 2d 65 6e 64 20 77 69 74 68 6f 75 74 20 61 6e 79 20 6d send.reasoning-end.without.any.m
c5c0 65 74 61 64 61 74 61 20 74 6f 20 72 6f 75 6e 64 2d 74 72 69 70 2e 0a 09 09 09 09 09 09 2f 2f 20 etadata.to.round-trip........//.
c5e0 41 6e 74 68 72 6f 70 69 63 27 73 20 73 69 67 6e 61 74 75 72 65 20 6c 69 76 65 73 20 69 6e 73 69 Anthropic's.signature.lives.insi
c600 64 65 20 70 72 6f 76 69 64 65 72 4d 65 74 61 64 61 74 61 20 61 73 0a 09 09 09 09 09 09 2f 2f 20 de.providerMetadata.as.......//.
c620 7b 20 61 6e 74 68 72 6f 70 69 63 3a 20 7b 20 73 69 67 6e 61 74 75 72 65 3a 20 22 2e 2e 2e 22 20 {.anthropic:.{.signature:."...".
c640 7d 20 7d 2e 0a 09 09 09 09 09 09 69 66 20 28 65 76 65 6e 74 2e 70 72 6f 76 69 64 65 72 4d 65 74 }.}........if.(event.providerMet
c660 61 64 61 74 61 20 21 3d 3d 20 75 6e 64 65 66 69 6e 65 64 29 20 7b 0a 09 09 09 09 09 09 09 63 6f adata.!==.undefined).{........co
c680 6e 73 74 20 69 6e 74 65 72 6e 61 6c 45 76 65 6e 74 3a 20 41 67 65 6e 74 45 76 65 6e 74 20 3d 20 nst.internalEvent:.AgentEvent.=.
c6a0 7b 0a 09 09 09 09 09 09 09 09 74 79 70 65 3a 20 22 72 65 61 73 6f 6e 69 6e 67 2d 65 6e 64 22 2c {.........type:."reasoning-end",
c6c0 0a 09 09 09 09 09 09 09 09 6d 65 74 61 64 61 74 61 3a 20 65 76 65 6e 74 2e 70 72 6f 76 69 64 65 .........metadata:.event.provide
c6e0 72 4d 65 74 61 64 61 74 61 20 61 73 20 52 65 63 6f 72 64 3c 73 74 72 69 6e 67 2c 20 75 6e 6b 6e rMetadata.as.Record<string,.unkn
c700 6f 77 6e 3e 2c 0a 09 09 09 09 09 09 09 7d 3b 0a 09 09 09 09 09 09 09 61 70 70 65 6e 64 45 76 65 own>,........};........appendEve
c720 6e 74 54 6f 43 68 75 6e 6b 73 28 63 68 75 6e 6b 73 2c 20 69 6e 74 65 72 6e 61 6c 45 76 65 6e 74 ntToChunks(chunks,.internalEvent
c740 29 3b 0a 09 09 09 09 09 09 09 79 69 65 6c 64 20 69 6e 74 65 72 6e 61 6c 45 76 65 6e 74 3b 0a 09 );........yield.internalEvent;..
c760 09 09 09 09 09 7d 0a 09 09 09 09 09 7d 20 65 6c 73 65 20 69 66 20 28 65 76 65 6e 74 2e 74 79 70 .....}......}.else.if.(event.typ
c780 65 20 3d 3d 3d 20 22 74 6f 6f 6c 2d 63 61 6c 6c 22 29 20 7b 0a 09 09 09 09 09 09 2f 2f 20 76 36 e.===."tool-call").{.......//.v6
c7a0 3a 20 74 6f 6f 6c 20 63 61 6c 6c 20 69 6e 70 75 74 20 69 73 20 69 6e 20 60 69 6e 70 75 74 60 20 :.tool.call.input.is.in.`input`.
c7c0 28 6e 6f 74 20 60 61 72 67 73 60 29 0a 09 09 09 09 09 09 63 6f 6e 73 74 20 72 61 77 4e 61 6d 65 (not.`args`).......const.rawName
c7e0 20 3d 20 65 76 65 6e 74 2e 74 6f 6f 6c 4e 61 6d 65 3b 0a 09 09 09 09 09 09 63 6f 6e 73 74 20 74 .=.event.toolName;.......const.t
c800 6f 6f 6c 4e 61 6d 65 20 3d 20 69 73 43 6c 61 75 64 65 4f 41 75 74 68 20 3f 20 75 6e 70 72 65 66 oolName.=.isClaudeOAuth.?.unpref
c820 69 78 54 6f 6f 6c 4e 61 6d 65 28 72 61 77 4e 61 6d 65 29 20 3a 20 72 61 77 4e 61 6d 65 3b 0a 09 ixToolName(rawName).:.rawName;..
c840 09 09 09 09 09 63 6f 6e 73 74 20 74 6f 6f 6c 43 61 6c 6c 3a 20 54 6f 6f 6c 43 61 6c 6c 20 3d 20 .....const.toolCall:.ToolCall.=.
c860 7b 0a 09 09 09 09 09 09 09 69 64 3a 20 65 76 65 6e 74 2e 74 6f 6f 6c 43 61 6c 6c 49 64 2c 0a 09 {........id:.event.toolCallId,..
c880 09 09 09 09 09 09 6e 61 6d 65 3a 20 74 6f 6f 6c 4e 61 6d 65 2c 0a 09 09 09 09 09 09 09 61 72 67 ......name:.toolName,........arg
c8a0 75 6d 65 6e 74 73 3a 20 65 76 65 6e 74 2e 69 6e 70 75 74 20 61 73 20 52 65 63 6f 72 64 3c 73 74 uments:.event.input.as.Record<st
c8c0 72 69 6e 67 2c 20 75 6e 6b 6e 6f 77 6e 3e 2c 0a 09 09 09 09 09 09 7d 3b 0a 09 09 09 09 09 09 73 ring,.unknown>,.......};.......s
c8e0 74 65 70 54 6f 6f 6c 43 61 6c 6c 73 2e 70 75 73 68 28 74 6f 6f 6c 43 61 6c 6c 29 3b 0a 09 09 09 tepToolCalls.push(toolCall);....
c900 09 09 09 63 6f 6e 73 74 20 69 6e 74 65 72 6e 61 6c 45 76 65 6e 74 3a 20 41 67 65 6e 74 45 76 65 ...const.internalEvent:.AgentEve
c920 6e 74 20 3d 20 7b 20 74 79 70 65 3a 20 22 74 6f 6f 6c 2d 63 61 6c 6c 22 2c 20 74 6f 6f 6c 43 61 nt.=.{.type:."tool-call",.toolCa
c940 6c 6c 20 7d 3b 0a 09 09 09 09 09 09 61 70 70 65 6e 64 45 76 65 6e 74 54 6f 43 68 75 6e 6b 73 28 ll.};.......appendEventToChunks(
c960 63 68 75 6e 6b 73 2c 20 69 6e 74 65 72 6e 61 6c 45 76 65 6e 74 29 3b 0a 09 09 09 09 09 09 79 69 chunks,.internalEvent);.......yi
c980 65 6c 64 20 69 6e 74 65 72 6e 61 6c 45 76 65 6e 74 3b 0a 09 09 09 09 09 7d 20 65 6c 73 65 20 69 eld.internalEvent;......}.else.i
c9a0 66 20 28 65 76 65 6e 74 2e 74 79 70 65 20 3d 3d 3d 20 22 74 6f 6f 6c 2d 65 72 72 6f 72 22 29 20 f.(event.type.===."tool-error").
c9c0 7b 0a 09 09 09 09 09 09 2f 2f 20 54 68 65 20 6d 6f 64 65 6c 20 63 61 6c 6c 65 64 20 61 20 74 6f {.......//.The.model.called.a.to
c9e0 6f 6c 20 74 68 61 74 20 64 6f 65 73 6e 27 74 20 65 78 69 73 74 20 28 6f 72 20 61 0a 09 09 09 09 ol.that.doesn't.exist.(or.a.....
ca00 09 09 2f 2f 20 70 72 6f 76 69 64 65 72 2d 65 78 65 63 75 74 65 64 20 2f 20 73 65 72 76 65 72 20 ..//.provider-executed./.server.
ca20 74 6f 6f 6c 20 66 61 69 6c 65 64 29 2e 20 54 68 65 20 41 49 20 53 44 4b 20 76 36 0a 09 09 09 09 tool.failed)..The.AI.SDK.v6.....
ca40 09 09 2f 2f 20 65 6d 69 74 73 20 74 68 69 73 20 61 73 20 61 20 6e 61 74 69 76 65 20 73 74 72 65 ..//.emits.this.as.a.native.stre
ca60 61 6d 20 65 76 65 6e 74 20 63 61 72 72 79 69 6e 67 20 74 68 65 0a 09 09 09 09 09 09 2f 2f 20 6f am.event.carrying.the.......//.o
ca80 72 69 67 69 6e 61 6c 20 74 6f 6f 6c 20 6e 61 6d 65 2e 20 46 6f 72 77 61 72 64 20 62 6f 74 68 20 riginal.tool.name..Forward.both.
caa0 61 20 73 79 6e 74 68 65 74 69 63 0a 09 09 09 09 09 09 2f 2f 20 74 6f 6f 6c 2d 72 65 73 75 6c 74 a.synthetic.......//.tool-result
cac0 20 28 73 6f 20 74 68 65 20 74 6f 6f 6c 2d 62 61 74 63 68 20 65 6e 74 72 79 20 74 68 65 20 6d 6f .(so.the.tool-batch.entry.the.mo
cae0 64 65 6c 20 65 78 70 65 63 74 73 0a 09 09 09 09 09 09 2f 2f 20 68 61 73 20 61 6e 20 60 69 73 45 del.expects.......//.has.an.`isE
cb00 72 72 6f 72 3a 20 74 72 75 65 60 20 72 65 73 75 6c 74 29 20 61 6e 64 20 61 6e 20 65 72 72 6f 72 rror:.true`.result).and.an.error
cb20 20 63 68 75 6e 6b 20 66 6f 72 0a 09 09 09 09 09 09 2f 2f 20 76 69 73 69 62 69 6c 69 74 79 20 e2 .chunk.for.......//.visibility..
cb40 80 94 20 77 69 74 68 6f 75 74 20 74 68 65 20 72 65 73 75 6c 74 20 74 68 65 20 6d 6f 64 65 6c 20 ...without.the.result.the.model.
cb60 77 6f 75 6c 64 0a 09 09 09 09 09 09 2f 2f 20 73 69 6c 65 6e 74 6c 79 20 77 61 69 74 20 66 6f 72 would.......//.silently.wait.for
cb80 20 6f 6e 65 20 74 68 61 74 20 6e 65 76 65 72 20 61 72 72 69 76 65 73 2e 0a 09 09 09 09 09 09 63 .one.that.never.arrives........c
cba0 6f 6e 73 74 20 65 76 74 20 3d 20 65 76 65 6e 74 20 61 73 20 75 6e 6b 6e 6f 77 6e 20 61 73 20 7b onst.evt.=.event.as.unknown.as.{
cbc0 0a 09 09 09 09 09 09 09 74 6f 6f 6c 43 61 6c 6c 49 64 3a 20 73 74 72 69 6e 67 3b 0a 09 09 09 09 ........toolCallId:.string;.....
cbe0 09 09 09 74 6f 6f 6c 4e 61 6d 65 3a 20 73 74 72 69 6e 67 3b 0a 09 09 09 09 09 09 09 65 72 72 6f ...toolName:.string;........erro
cc00 72 3a 20 75 6e 6b 6e 6f 77 6e 3b 0a 09 09 09 09 09 09 7d 3b 0a 09 09 09 09 09 09 63 6f 6e 73 74 r:.unknown;.......};.......const
cc20 20 74 6f 6f 6c 4e 61 6d 65 20 3d 20 69 73 43 6c 61 75 64 65 4f 41 75 74 68 20 3f 20 75 6e 70 72 .toolName.=.isClaudeOAuth.?.unpr
cc40 65 66 69 78 54 6f 6f 6c 4e 61 6d 65 28 65 76 74 2e 74 6f 6f 6c 4e 61 6d 65 29 20 3a 20 65 76 74 efixToolName(evt.toolName).:.evt
cc60 2e 74 6f 6f 6c 4e 61 6d 65 3b 0a 09 09 09 09 09 09 63 6f 6e 73 74 20 65 72 72 4d 65 73 73 61 67 .toolName;.......const.errMessag
cc80 65 20 3d 20 65 76 74 2e 65 72 72 6f 72 20 69 6e 73 74 61 6e 63 65 6f 66 20 45 72 72 6f 72 20 3f e.=.evt.error.instanceof.Error.?
cca0 20 65 76 74 2e 65 72 72 6f 72 2e 6d 65 73 73 61 67 65 20 3a 20 53 74 72 69 6e 67 28 65 76 74 2e .evt.error.message.:.String(evt.
ccc0 65 72 72 6f 72 29 3b 0a 0a 09 09 09 09 09 09 63 6f 6e 73 74 20 74 72 45 76 65 6e 74 3a 20 41 67 error);........const.trEvent:.Ag
cce0 65 6e 74 45 76 65 6e 74 20 3d 20 7b 0a 09 09 09 09 09 09 09 74 79 70 65 3a 20 22 74 6f 6f 6c 2d entEvent.=.{........type:."tool-
cd00 72 65 73 75 6c 74 22 2c 0a 09 09 09 09 09 09 09 74 6f 6f 6c 52 65 73 75 6c 74 3a 20 7b 0a 09 09 result",........toolResult:.{...
cd20 09 09 09 09 09 09 74 6f 6f 6c 43 61 6c 6c 49 64 3a 20 65 76 74 2e 74 6f 6f 6c 43 61 6c 6c 49 64 ......toolCallId:.evt.toolCallId
cd40 2c 0a 09 09 09 09 09 09 09 09 74 6f 6f 6c 4e 61 6d 65 2c 0a 09 09 09 09 09 09 09 09 72 65 73 75 ,.........toolName,.........resu
cd60 6c 74 3a 20 60 45 72 72 6f 72 3a 20 24 7b 65 72 72 4d 65 73 73 61 67 65 7d 60 2c 0a 09 09 09 09 lt:.`Error:.${errMessage}`,.....
cd80 09 09 09 09 69 73 45 72 72 6f 72 3a 20 74 72 75 65 2c 0a 09 09 09 09 09 09 09 7d 2c 0a 09 09 09 ....isError:.true,........},....
cda0 09 09 09 7d 3b 0a 09 09 09 09 09 09 61 70 70 65 6e 64 45 76 65 6e 74 54 6f 43 68 75 6e 6b 73 28 ...};.......appendEventToChunks(
cdc0 63 68 75 6e 6b 73 2c 20 74 72 45 76 65 6e 74 29 3b 0a 09 09 09 09 09 09 79 69 65 6c 64 20 74 72 chunks,.trEvent);.......yield.tr
cde0 45 76 65 6e 74 3b 0a 0a 09 09 09 09 09 09 2f 2f 20 45 6d 69 74 20 61 6e 20 65 72 72 6f 72 20 63 Event;........//.Emit.an.error.c
ce00 68 75 6e 6b 20 66 6f 72 20 76 69 73 69 62 69 6c 69 74 79 2c 20 62 75 74 20 64 6f 20 4e 4f 54 20 hunk.for.visibility,.but.do.NOT.
ce20 73 65 74 20 74 68 65 0a 09 09 09 09 09 09 2f 2f 20 61 67 65 6e 74 20 73 74 61 74 75 73 20 74 6f set.the.......//.agent.status.to
ce40 20 22 65 72 72 6f 72 22 20 e2 80 94 20 74 68 65 20 73 74 65 70 20 63 6f 6e 74 69 6e 75 65 73 20 ."error".....the.step.continues.
ce60 61 6e 64 20 6c 6f 6f 70 73 0a 09 09 09 09 09 09 2f 2f 20 62 61 63 6b 20 74 6f 20 74 68 65 20 4c and.loops.......//.back.to.the.L
ce80 4c 4d 20 6e 6f 72 6d 61 6c 6c 79 2e 0a 09 09 09 09 09 09 63 6f 6e 73 74 20 65 72 72 6f 72 4d 73 LM.normally........const.errorMs
cea0 67 20 3d 20 66 6f 72 6d 61 74 45 72 72 6f 72 28 65 76 74 2e 65 72 72 6f 72 2c 20 74 68 69 73 2e g.=.formatError(evt.error,.this.
cec0 63 6f 6e 66 69 67 29 3b 0a 09 09 09 09 09 09 63 6f 6e 73 74 20 65 72 72 43 68 75 6e 6b 45 76 65 config);.......const.errChunkEve
cee0 6e 74 3a 20 41 67 65 6e 74 45 76 65 6e 74 20 3d 20 7b 20 74 79 70 65 3a 20 22 65 72 72 6f 72 22 nt:.AgentEvent.=.{.type:."error"
cf00 2c 20 65 72 72 6f 72 3a 20 65 72 72 6f 72 4d 73 67 20 7d 3b 0a 09 09 09 09 09 09 61 70 70 65 6e ,.error:.errorMsg.};.......appen
cf20 64 45 76 65 6e 74 54 6f 43 68 75 6e 6b 73 28 63 68 75 6e 6b 73 2c 20 65 72 72 43 68 75 6e 6b 45 dEventToChunks(chunks,.errChunkE
cf40 76 65 6e 74 29 3b 0a 09 09 09 09 09 09 79 69 65 6c 64 20 65 72 72 43 68 75 6e 6b 45 76 65 6e 74 vent);.......yield.errChunkEvent
cf60 3b 0a 09 09 09 09 09 09 62 72 65 61 6b 3b 0a 09 09 09 09 09 7d 20 65 6c 73 65 20 69 66 20 28 65 ;.......break;......}.else.if.(e
cf80 76 65 6e 74 2e 74 79 70 65 20 3d 3d 3d 20 22 61 62 6f 72 74 22 29 20 7b 0a 09 09 09 09 09 09 2f vent.type.===."abort").{......./
cfa0 2f 20 53 74 72 65 61 6d 20 61 62 6f 72 74 65 64 20 75 70 73 74 72 65 61 6d 2e 20 53 75 72 66 61 /.Stream.aborted.upstream..Surfa
cfc0 63 65 20 61 73 20 61 6e 20 65 72 72 6f 72 20 73 6f 20 74 68 65 0a 09 09 09 09 09 09 2f 2f 20 66 ce.as.an.error.so.the.......//.f
cfe0 72 6f 6e 74 65 6e 64 20 74 61 62 20 74 72 61 6e 73 69 74 69 6f 6e 73 20 6f 75 74 20 6f 66 20 60 rontend.tab.transitions.out.of.`
d000 72 75 6e 6e 69 6e 67 60 2e 20 57 65 20 64 6f 6e 27 74 0a 09 09 09 09 09 09 2f 2f 20 63 75 72 72 running`..We.don't.......//.curr
d020 65 6e 74 6c 79 20 63 61 6c 6c 20 61 62 6f 72 74 43 6f 6e 74 72 6f 6c 6c 65 72 2e 61 62 6f 72 74 ently.call.abortController.abort
d040 28 29 20 6f 75 72 73 65 6c 76 65 73 2c 20 73 6f 0a 09 09 09 09 09 09 2f 2f 20 74 68 69 73 20 77 ().ourselves,.so.......//.this.w
d060 6f 75 6c 64 20 6f 6e 6c 79 20 66 69 72 65 20 66 72 6f 6d 20 65 78 74 65 72 6e 61 6c 20 73 69 67 ould.only.fire.from.external.sig
d080 6e 61 6c 20 70 72 6f 70 61 67 61 74 69 6f 6e 2e 0a 09 09 09 09 09 09 63 6f 6e 73 74 20 72 65 61 nal.propagation........const.rea
d0a0 73 6f 6e 20 3d 0a 09 09 09 09 09 09 09 74 79 70 65 6f 66 20 28 65 76 65 6e 74 20 61 73 20 7b 20 son.=........typeof.(event.as.{.
d0c0 72 65 61 73 6f 6e 3f 3a 20 75 6e 6b 6e 6f 77 6e 20 7d 29 2e 72 65 61 73 6f 6e 20 3d 3d 3d 20 22 reason?:.unknown.}).reason.===."
d0e0 73 74 72 69 6e 67 22 0a 09 09 09 09 09 09 09 09 3f 20 28 65 76 65 6e 74 20 61 73 20 7b 20 72 65 string".........?.(event.as.{.re
d100 61 73 6f 6e 3a 20 73 74 72 69 6e 67 20 7d 29 2e 72 65 61 73 6f 6e 0a 09 09 09 09 09 09 09 09 3a ason:.string.}).reason.........:
d120 20 22 73 74 72 65 61 6d 20 61 62 6f 72 74 65 64 22 3b 0a 09 09 09 09 09 09 2f 2f 20 46 69 6c 6c ."stream.aborted";.......//.Fill
d140 20 69 6e 20 65 72 72 6f 72 20 72 65 73 75 6c 74 73 20 66 6f 72 20 61 6e 79 20 75 6e 72 65 73 6f .in.error.results.for.any.unreso
d160 6c 76 65 64 20 74 6f 6f 6c 20 63 61 6c 6c 73 20 73 6f 0a 09 09 09 09 09 09 2f 2f 20 74 68 65 20 lved.tool.calls.so.......//.the.
d180 6f 72 70 68 61 6e 65 64 20 74 6f 6f 6c 2d 63 61 6c 6c 20 49 44 73 20 64 6f 6e 27 74 20 74 72 69 orphaned.tool-call.IDs.don't.tri
d1a0 67 67 65 72 20 61 0a 09 09 09 09 09 09 2f 2f 20 4d 69 73 73 69 6e 67 54 6f 6f 6c 52 65 73 75 6c gger.a.......//.MissingToolResul
d1c0 74 73 45 72 72 6f 72 20 69 66 20 74 68 69 73 20 68 69 73 74 6f 72 79 20 69 73 20 65 76 65 72 20 tsError.if.this.history.is.ever.
d1e0 72 65 70 6c 61 79 65 64 2e 0a 09 09 09 09 09 09 63 6f 6e 73 74 20 61 62 6f 72 74 52 65 73 69 64 replayed........const.abortResid
d200 75 61 6c 20 3d 20 74 68 69 73 2e 73 79 6e 74 68 65 73 69 7a 65 52 65 73 69 64 75 61 6c 54 6f 6f ual.=.this.synthesizeResidualToo
d220 6c 52 65 73 75 6c 74 73 28 0a 09 09 09 09 09 09 09 73 74 65 70 54 6f 6f 6c 43 61 6c 6c 73 2c 0a lResults(........stepToolCalls,.
d240 09 09 09 09 09 09 09 63 68 75 6e 6b 73 2c 0a 09 09 09 09 09 09 09 60 45 72 72 6f 72 3a 20 53 74 .......chunks,........`Error:.St
d260 72 65 61 6d 20 77 61 73 20 61 62 6f 72 74 65 64 3a 20 24 7b 72 65 61 73 6f 6e 7d 60 2c 0a 09 09 ream.was.aborted:.${reason}`,...
d280 09 09 09 09 29 3b 0a 09 09 09 09 09 09 66 6f 72 20 28 63 6f 6e 73 74 20 72 20 6f 66 20 61 62 6f ....);.......for.(const.r.of.abo
d2a0 72 74 52 65 73 69 64 75 61 6c 29 20 7b 0a 09 09 09 09 09 09 09 61 70 70 65 6e 64 45 76 65 6e 74 rtResidual).{........appendEvent
d2c0 54 6f 43 68 75 6e 6b 73 28 63 68 75 6e 6b 73 2c 20 72 29 3b 0a 09 09 09 09 09 09 09 79 69 65 6c ToChunks(chunks,.r);........yiel
d2e0 64 20 72 3b 0a 09 09 09 09 09 09 7d 0a 0a 09 09 09 09 09 09 63 6f 6e 73 74 20 65 72 72 6f 72 4d d.r;.......}........const.errorM
d300 73 67 20 3d 20 66 6f 72 6d 61 74 45 72 72 6f 72 28 6e 65 77 20 45 72 72 6f 72 28 72 65 61 73 6f sg.=.formatError(new.Error(reaso
d320 6e 29 2c 20 74 68 69 73 2e 63 6f 6e 66 69 67 29 3b 0a 09 09 09 09 09 09 63 6f 6e 73 74 20 69 6e n),.this.config);.......const.in
d340 74 65 72 6e 61 6c 45 76 65 6e 74 3a 20 41 67 65 6e 74 45 76 65 6e 74 20 3d 20 7b 20 74 79 70 65 ternalEvent:.AgentEvent.=.{.type
d360 3a 20 22 65 72 72 6f 72 22 2c 20 65 72 72 6f 72 3a 20 65 72 72 6f 72 4d 73 67 20 7d 3b 0a 09 09 :."error",.error:.errorMsg.};...
d380 09 09 09 09 61 70 70 65 6e 64 45 76 65 6e 74 54 6f 43 68 75 6e 6b 73 28 63 68 75 6e 6b 73 2c 20 ....appendEventToChunks(chunks,.
d3a0 69 6e 74 65 72 6e 61 6c 45 76 65 6e 74 29 3b 0a 09 09 09 09 09 09 79 69 65 6c 64 20 69 6e 74 65 internalEvent);.......yield.inte
d3c0 72 6e 61 6c 45 76 65 6e 74 3b 0a 09 09 09 09 09 09 74 68 69 73 2e 73 74 61 74 75 73 20 3d 20 22 rnalEvent;.......this.status.=."
d3e0 65 72 72 6f 72 22 3b 0a 09 09 09 09 09 09 79 69 65 6c 64 20 7b 20 74 79 70 65 3a 20 22 73 74 61 error";.......yield.{.type:."sta
d400 74 75 73 22 2c 20 73 74 61 74 75 73 3a 20 22 65 72 72 6f 72 22 20 7d 3b 0a 09 09 09 09 09 09 72 tus",.status:."error".};.......r
d420 65 74 75 72 6e 3b 0a 09 09 09 09 09 7d 20 65 6c 73 65 20 69 66 20 28 65 76 65 6e 74 2e 74 79 70 eturn;......}.else.if.(event.typ
d440 65 20 3d 3d 3d 20 22 65 72 72 6f 72 22 29 20 7b 0a 09 09 09 09 09 09 63 6f 6e 73 74 20 65 72 72 e.===."error").{.......const.err
d460 52 65 63 6f 72 64 20 3d 20 65 76 65 6e 74 2e 65 72 72 6f 72 20 61 73 20 75 6e 6b 6e 6f 77 6e 20 Record.=.event.error.as.unknown.
d480 61 73 20 52 65 63 6f 72 64 3c 73 74 72 69 6e 67 2c 20 75 6e 6b 6e 6f 77 6e 3e 3b 0a 09 09 09 09 as.Record<string,.unknown>;.....
d4a0 09 09 63 6f 6e 73 74 20 73 74 61 74 75 73 43 6f 64 65 20 3d 0a 09 09 09 09 09 09 09 74 79 70 65 ..const.statusCode.=........type
d4c0 6f 66 20 65 72 72 52 65 63 6f 72 64 2e 73 74 61 74 75 73 43 6f 64 65 20 3d 3d 3d 20 22 6e 75 6d of.errRecord.statusCode.===."num
d4e0 62 65 72 22 20 3f 20 65 72 72 52 65 63 6f 72 64 2e 73 74 61 74 75 73 43 6f 64 65 20 3a 20 75 6e ber".?.errRecord.statusCode.:.un
d500 64 65 66 69 6e 65 64 3b 0a 09 09 09 09 09 09 63 6f 6e 73 74 20 65 72 72 6f 72 4d 73 67 20 3d 20 defined;.......const.errorMsg.=.
d520 66 6f 72 6d 61 74 45 72 72 6f 72 28 65 76 65 6e 74 2e 65 72 72 6f 72 2c 20 74 68 69 73 2e 63 6f formatError(event.error,.this.co
d540 6e 66 69 67 29 3b 0a 09 09 09 09 09 09 2f 2f 20 46 69 6c 6c 20 69 6e 20 65 72 72 6f 72 20 72 65 nfig);.......//.Fill.in.error.re
d560 73 75 6c 74 73 20 66 6f 72 20 61 6e 79 20 75 6e 72 65 73 6f 6c 76 65 64 20 74 6f 6f 6c 20 63 61 sults.for.any.unresolved.tool.ca
d580 6c 6c 73 20 73 6f 0a 09 09 09 09 09 09 2f 2f 20 74 68 65 20 6f 72 70 68 61 6e 65 64 20 74 6f 6f lls.so.......//.the.orphaned.too
d5a0 6c 2d 63 61 6c 6c 20 49 44 73 20 64 6f 6e 27 74 20 74 72 69 67 67 65 72 20 61 0a 09 09 09 09 09 l-call.IDs.don't.trigger.a......
d5c0 09 2f 2f 20 4d 69 73 73 69 6e 67 54 6f 6f 6c 52 65 73 75 6c 74 73 45 72 72 6f 72 20 69 66 20 74 .//.MissingToolResultsError.if.t
d5e0 68 69 73 20 68 69 73 74 6f 72 79 20 69 73 20 65 76 65 72 20 72 65 70 6c 61 79 65 64 2e 0a 09 09 his.history.is.ever.replayed....
d600 09 09 09 09 63 6f 6e 73 74 20 73 74 72 65 61 6d 45 72 72 52 65 73 69 64 75 61 6c 20 3d 20 74 68 ....const.streamErrResidual.=.th
d620 69 73 2e 73 79 6e 74 68 65 73 69 7a 65 52 65 73 69 64 75 61 6c 54 6f 6f 6c 52 65 73 75 6c 74 73 is.synthesizeResidualToolResults
d640 28 0a 09 09 09 09 09 09 09 73 74 65 70 54 6f 6f 6c 43 61 6c 6c 73 2c 0a 09 09 09 09 09 09 09 63 (........stepToolCalls,........c
d660 68 75 6e 6b 73 2c 0a 09 09 09 09 09 09 09 60 45 72 72 6f 72 3a 20 24 7b 65 72 72 6f 72 4d 73 67 hunks,........`Error:.${errorMsg
d680 7d 60 2c 0a 09 09 09 09 09 09 29 3b 0a 09 09 09 09 09 09 66 6f 72 20 28 63 6f 6e 73 74 20 72 20 }`,.......);.......for.(const.r.
d6a0 6f 66 20 73 74 72 65 61 6d 45 72 72 52 65 73 69 64 75 61 6c 29 20 7b 0a 09 09 09 09 09 09 09 61 of.streamErrResidual).{........a
d6c0 70 70 65 6e 64 45 76 65 6e 74 54 6f 43 68 75 6e 6b 73 28 63 68 75 6e 6b 73 2c 20 72 29 3b 0a 09 ppendEventToChunks(chunks,.r);..
d6e0 09 09 09 09 09 09 79 69 65 6c 64 20 72 3b 0a 09 09 09 09 09 09 7d 0a 0a 09 09 09 09 09 09 63 6f ......yield.r;.......}........co
d700 6e 73 74 20 69 6e 74 65 72 6e 61 6c 45 76 65 6e 74 3a 20 41 67 65 6e 74 45 76 65 6e 74 20 3d 20 nst.internalEvent:.AgentEvent.=.
d720 7b 0a 09 09 09 09 09 09 09 74 79 70 65 3a 20 22 65 72 72 6f 72 22 2c 0a 09 09 09 09 09 09 09 65 {........type:."error",........e
d740 72 72 6f 72 3a 20 65 72 72 6f 72 4d 73 67 2c 0a 09 09 09 09 09 09 09 2e 2e 2e 28 73 74 61 74 75 rror:.errorMsg,...........(statu
d760 73 43 6f 64 65 20 21 3d 3d 20 75 6e 64 65 66 69 6e 65 64 20 3f 20 7b 20 73 74 61 74 75 73 43 6f sCode.!==.undefined.?.{.statusCo
d780 64 65 20 7d 20 3a 20 7b 7d 29 2c 0a 09 09 09 09 09 09 7d 3b 0a 09 09 09 09 09 09 61 70 70 65 6e de.}.:.{}),.......};.......appen
d7a0 64 45 76 65 6e 74 54 6f 43 68 75 6e 6b 73 28 63 68 75 6e 6b 73 2c 20 69 6e 74 65 72 6e 61 6c 45 dEventToChunks(chunks,.internalE
d7c0 76 65 6e 74 29 3b 0a 09 09 09 09 09 09 79 69 65 6c 64 20 69 6e 74 65 72 6e 61 6c 45 76 65 6e 74 vent);.......yield.internalEvent
d7e0 3b 0a 09 09 09 09 09 09 74 68 69 73 2e 73 74 61 74 75 73 20 3d 20 22 65 72 72 6f 72 22 3b 0a 09 ;.......this.status.=."error";..
d800 09 09 09 09 09 79 69 65 6c 64 20 7b 20 74 79 70 65 3a 20 22 73 74 61 74 75 73 22 2c 20 73 74 61 .....yield.{.type:."status",.sta
d820 74 75 73 3a 20 22 65 72 72 6f 72 22 20 7d 3b 0a 09 09 09 09 09 09 72 65 74 75 72 6e 3b 0a 09 09 tus:."error".};.......return;...
d840 09 09 09 7d 20 65 6c 73 65 20 69 66 20 28 65 76 65 6e 74 2e 74 79 70 65 20 3d 3d 3d 20 22 66 69 ...}.else.if.(event.type.===."fi
d860 6e 69 73 68 2d 73 74 65 70 22 29 20 7b 0a 09 09 09 09 09 09 2f 2f 20 4f 6e 65 20 60 66 69 6e 69 nish-step").{.......//.One.`fini
d880 73 68 2d 73 74 65 70 60 20 70 65 72 20 60 73 74 72 65 61 6d 54 65 78 74 60 20 73 74 65 70 2e 20 sh-step`.per.`streamText`.step..
d8a0 54 68 69 73 20 e2 80 94 20 4e 4f 54 20 74 68 65 0a 09 09 09 09 09 09 2f 2f 20 74 65 72 6d 69 6e This.....NOT.the.......//.termin
d8c0 61 6c 20 60 66 69 6e 69 73 68 60 20 70 61 72 74 20 e2 80 94 20 69 73 20 77 68 65 72 65 20 74 68 al.`finish`.part.....is.where.th
d8e0 65 20 41 49 20 53 44 4b 20 70 75 74 73 20 74 68 65 0a 09 09 09 09 09 09 2f 2f 20 70 65 72 2d 73 e.AI.SDK.puts.the.......//.per-s
d900 74 65 70 20 60 75 73 61 67 65 60 20 28 74 68 65 20 60 66 69 6e 69 73 68 60 20 70 61 72 74 20 6f tep.`usage`.(the.`finish`.part.o
d920 6e 6c 79 20 63 61 72 72 69 65 73 20 74 68 65 0a 09 09 09 09 09 09 2f 2f 20 61 67 67 72 65 67 61 nly.carries.the.......//.aggrega
d940 74 65 20 60 74 6f 74 61 6c 55 73 61 67 65 60 29 2e 20 60 75 73 61 67 65 2e 69 6e 70 75 74 54 6f te.`totalUsage`)..`usage.inputTo
d960 6b 65 6e 44 65 74 61 69 6c 73 60 20 68 6f 6c 64 73 0a 09 09 09 09 09 09 2f 2f 20 41 6e 74 68 72 kenDetails`.holds.......//.Anthr
d980 6f 70 69 63 27 73 20 70 72 6f 6d 70 74 2d 63 61 63 68 65 20 72 65 61 64 2f 77 72 69 74 65 20 73 opic's.prompt-cache.read/write.s
d9a0 70 6c 69 74 2c 20 77 68 69 63 68 20 70 6f 77 65 72 73 20 74 68 65 0a 09 09 09 09 09 09 2f 2f 20 plit,.which.powers.the.......//.
d9c0 43 61 63 68 65 20 52 61 74 65 20 76 69 65 77 2e 20 60 69 6e 70 75 74 54 6f 6b 65 6e 73 60 20 69 Cache.Rate.view..`inputTokens`.i
d9e0 73 20 74 68 65 20 54 4f 54 41 4c 20 70 72 6f 6d 70 74 20 28 63 61 63 68 65 64 20 2b 0a 09 09 09 s.the.TOTAL.prompt.(cached.+....
da00 09 09 09 2f 2f 20 66 72 65 73 68 29 2e 20 53 6b 69 70 20 65 6d 69 73 73 69 6f 6e 20 77 68 65 6e ...//.fresh)..Skip.emission.when
da20 20 6e 6f 20 75 73 61 67 65 20 69 73 20 61 74 74 61 63 68 65 64 20 28 65 2e 67 2e 20 74 65 73 74 .no.usage.is.attached.(e.g..test
da40 0a 09 09 09 09 09 09 2f 2f 20 6d 6f 63 6b 73 29 20 73 6f 20 77 65 20 6e 65 76 65 72 20 62 72 6f .......//.mocks).so.we.never.bro
da60 61 64 63 61 73 74 20 61 6e 20 61 6c 6c 2d 7a 65 72 6f 20 75 73 61 67 65 20 65 76 65 6e 74 2e 0a adcast.an.all-zero.usage.event..
da80 09 09 09 09 09 09 63 6f 6e 73 74 20 75 20 3d 20 28 65 76 65 6e 74 20 61 73 20 7b 20 75 73 61 67 ......const.u.=.(event.as.{.usag
daa0 65 3f 3a 20 4c 61 6e 67 75 61 67 65 4d 6f 64 65 6c 55 73 61 67 65 20 7d 29 2e 75 73 61 67 65 3b e?:.LanguageModelUsage.}).usage;
dac0 0a 09 09 09 09 09 09 69 66 20 28 75 29 20 7b 0a 09 09 09 09 09 09 09 63 6f 6e 73 74 20 64 65 74 .......if.(u).{........const.det
dae0 61 69 6c 73 20 3d 20 75 2e 69 6e 70 75 74 54 6f 6b 65 6e 44 65 74 61 69 6c 73 3b 0a 09 09 09 09 ails.=.u.inputTokenDetails;.....
db00 09 09 09 63 6f 6e 73 74 20 75 73 61 67 65 45 76 65 6e 74 3a 20 41 67 65 6e 74 45 76 65 6e 74 20 ...const.usageEvent:.AgentEvent.
db20 3d 20 7b 0a 09 09 09 09 09 09 09 09 74 79 70 65 3a 20 22 75 73 61 67 65 22 2c 0a 09 09 09 09 09 =.{.........type:."usage",......
db40 09 09 09 75 73 61 67 65 3a 20 7b 0a 09 09 09 09 09 09 09 09 09 69 6e 70 75 74 54 6f 6b 65 6e 73 ...usage:.{..........inputTokens
db60 3a 20 75 2e 69 6e 70 75 74 54 6f 6b 65 6e 73 20 3f 3f 20 30 2c 0a 09 09 09 09 09 09 09 09 09 6f :.u.inputTokens.??.0,..........o
db80 75 74 70 75 74 54 6f 6b 65 6e 73 3a 20 75 2e 6f 75 74 70 75 74 54 6f 6b 65 6e 73 20 3f 3f 20 30 utputTokens:.u.outputTokens.??.0
dba0 2c 0a 09 09 09 09 09 09 09 09 09 63 61 63 68 65 52 65 61 64 54 6f 6b 65 6e 73 3a 20 64 65 74 61 ,..........cacheReadTokens:.deta
dbc0 69 6c 73 3f 2e 63 61 63 68 65 52 65 61 64 54 6f 6b 65 6e 73 20 3f 3f 20 30 2c 0a 09 09 09 09 09 ils?.cacheReadTokens.??.0,......
dbe0 09 09 09 09 63 61 63 68 65 57 72 69 74 65 54 6f 6b 65 6e 73 3a 20 64 65 74 61 69 6c 73 3f 2e 63 ....cacheWriteTokens:.details?.c
dc00 61 63 68 65 57 72 69 74 65 54 6f 6b 65 6e 73 20 3f 3f 20 30 2c 0a 09 09 09 09 09 09 09 09 7d 2c acheWriteTokens.??.0,.........},
dc20 0a 09 09 09 09 09 09 09 7d 3b 0a 09 09 09 09 09 09 09 2f 2f 20 53 65 74 20 44 49 53 50 41 54 43 ........};........//.Set.DISPATC
dc40 48 5f 44 45 42 55 47 5f 55 53 41 47 45 3d 31 20 74 6f 20 70 72 69 6e 74 20 74 68 65 20 72 61 77 H_DEBUG_USAGE=1.to.print.the.raw
dc60 20 70 65 72 2d 73 74 65 70 0a 09 09 09 09 09 09 09 2f 2f 20 75 73 61 67 65 20 74 6f 20 74 68 65 .per-step........//.usage.to.the
dc80 20 73 65 72 76 65 72 20 6c 6f 67 20 e2 80 94 20 6c 65 74 73 20 79 6f 75 20 63 6f 6e 66 69 72 6d .server.log.....lets.you.confirm
dca0 20 63 61 63 68 65 20 72 65 61 64 73 0a 09 09 09 09 09 09 09 2f 2f 20 61 72 65 20 6e 6f 6e 2d 7a .cache.reads........//.are.non-z
dcc0 65 72 6f 20 77 69 74 68 6f 75 74 20 74 68 65 20 55 49 2e 0a 09 09 09 09 09 09 09 69 66 20 28 70 ero.without.the.UI.........if.(p
dce0 72 6f 63 65 73 73 2e 65 6e 76 2e 44 49 53 50 41 54 43 48 5f 44 45 42 55 47 5f 55 53 41 47 45 29 rocess.env.DISPATCH_DEBUG_USAGE)
dd00 20 7b 0a 09 09 09 09 09 09 09 09 63 6f 6e 73 6f 6c 65 2e 65 72 72 6f 72 28 22 5b 64 69 73 70 61 .{.........console.error("[dispa
dd20 74 63 68 20 75 73 61 67 65 5d 22 2c 20 4a 53 4f 4e 2e 73 74 72 69 6e 67 69 66 79 28 75 73 61 67 tch.usage]",.JSON.stringify(usag
dd40 65 45 76 65 6e 74 2e 75 73 61 67 65 29 29 3b 0a 09 09 09 09 09 09 09 7d 0a 09 09 09 09 09 09 09 eEvent.usage));........}........
dd60 2f 2f 20 4e 6f 74 20 61 70 70 65 6e 64 65 64 20 74 6f 20 63 68 75 6e 6b 73 20 e2 80 94 20 75 73 //.Not.appended.to.chunks.....us
dd80 61 67 65 20 69 73 20 74 65 6c 65 6d 65 74 72 79 2c 20 6e 6f 74 0a 09 09 09 09 09 09 09 2f 2f 20 age.is.telemetry,.not........//.
dda0 6d 65 73 73 61 67 65 20 63 6f 6e 74 65 6e 74 20 28 73 65 65 20 61 70 70 65 6e 64 45 76 65 6e 74 message.content.(see.appendEvent
ddc0 54 6f 43 68 75 6e 6b 73 29 2e 0a 09 09 09 09 09 09 09 79 69 65 6c 64 20 75 73 61 67 65 45 76 65 ToChunks).........yield.usageEve
dde0 6e 74 3b 0a 09 09 09 09 09 09 7d 0a 09 09 09 09 09 7d 0a 09 09 09 09 09 2f 2f 20 49 67 6e 6f 72 nt;.......}......}......//.Ignor
de00 65 64 20 65 76 65 6e 74 73 20 28 69 6e 74 65 6e 74 69 6f 6e 61 6c 29 3a 0a 09 09 09 09 09 2f 2f ed.events.(intentional):......//
de20 20 20 20 73 74 61 72 74 2c 20 74 65 78 74 2d 73 74 61 72 74 2c 20 74 65 78 74 2d 65 6e 64 2c 20 ...start,.text-start,.text-end,.
de40 72 65 61 73 6f 6e 69 6e 67 2d 73 74 61 72 74 2c 0a 09 09 09 09 09 2f 2f 20 20 20 74 6f 6f 6c 2d reasoning-start,......//...tool-
de60 69 6e 70 75 74 2d 73 74 61 72 74 2c 20 74 6f 6f 6c 2d 69 6e 70 75 74 2d 64 65 6c 74 61 2c 20 74 input-start,.tool-input-delta,.t
de80 6f 6f 6c 2d 69 6e 70 75 74 2d 65 6e 64 2c 0a 09 09 09 09 09 2f 2f 20 20 20 74 6f 6f 6c 2d 72 65 ool-input-end,......//...tool-re
dea0 73 75 6c 74 20 28 6f 6e 6c 79 20 66 69 72 65 73 20 69 66 20 74 6f 6f 6c 20 68 61 73 20 65 78 65 sult.(only.fires.if.tool.has.exe
dec0 63 75 74 65 3b 20 6f 75 72 73 20 64 6f 6e 27 74 29 2c 0a 09 09 09 09 09 2f 2f 20 20 20 73 74 61 cute;.ours.don't),......//...sta
dee0 72 74 2d 73 74 65 70 2c 20 66 69 6e 69 73 68 20 28 61 67 67 72 65 67 61 74 65 20 74 6f 74 61 6c rt-step,.finish.(aggregate.total
df00 55 73 61 67 65 20 6f 6e 6c 79 29 2c 20 72 61 77 2c 0a 09 09 09 09 09 2f 2f 20 20 20 73 6f 75 72 Usage.only),.raw,......//...sour
df20 63 65 2c 20 66 69 6c 65 2c 20 74 6f 6f 6c 2d 6f 75 74 70 75 74 2d 64 65 6e 69 65 64 2c 20 74 6f ce,.file,.tool-output-denied,.to
df40 6f 6c 2d 61 70 70 72 6f 76 61 6c 2d 2a 0a 09 09 09 09 7d 0a 0a 09 09 09 09 2f 2f 20 4e 6f 20 74 ol-approval-*.....}......//.No.t
df60 6f 6f 6c 20 63 61 6c 6c 73 20 6d 65 61 6e 73 20 74 68 65 20 61 67 65 6e 74 20 69 73 20 64 6f 6e ool.calls.means.the.agent.is.don
df80 65 20 e2 80 94 20 74 68 65 20 61 73 73 69 73 74 61 6e 74 20 6d 65 73 73 61 67 65 0a 09 09 09 09 e.....the.assistant.message.....
dfa0 2f 2f 20 61 6c 72 65 61 64 79 20 65 78 69 73 74 73 20 69 6e 20 73 74 65 70 4d 65 73 73 61 67 65 //.already.exists.in.stepMessage
dfc0 73 20 77 69 74 68 20 75 70 2d 74 6f 2d 64 61 74 65 20 63 68 75 6e 6b 73 2e 0a 09 09 09 09 69 66 s.with.up-to-date.chunks......if
dfe0 20 28 73 74 65 70 54 6f 6f 6c 43 61 6c 6c 73 2e 6c 65 6e 67 74 68 20 3d 3d 3d 20 30 29 20 7b 0a .(stepToolCalls.length.===.0).{.
e000 09 09 09 09 09 6c 6f 67 53 74 65 70 4c 69 66 65 63 79 63 6c 65 28 7b 0a 09 09 09 09 09 09 74 61 .....logStepLifecycle({.......ta
e020 62 49 64 3a 20 74 68 69 73 2e 63 6f 6e 66 69 67 2e 74 61 62 49 64 2c 0a 09 09 09 09 09 09 73 74 bId:.this.config.tabId,.......st
e040 65 70 2c 0a 09 09 09 09 09 09 65 76 65 6e 74 3a 20 22 73 74 65 70 2d 65 6e 64 2d 6e 6f 2d 74 6f ep,.......event:."step-end-no-to
e060 6f 6c 73 22 2c 0a 09 09 09 09 09 7d 29 3b 0a 09 09 09 09 09 6c 6f 67 41 67 65 6e 74 4c 6f 6f 70 ols",......});......logAgentLoop
e080 28 7b 0a 09 09 09 09 09 09 74 61 62 49 64 3a 20 74 68 69 73 2e 63 6f 6e 66 69 67 2e 74 61 62 49 ({.......tabId:.this.config.tabI
e0a0 64 2c 0a 09 09 09 09 09 09 65 76 65 6e 74 3a 20 22 72 75 6e 2d 65 6e 64 2d 63 6c 65 61 6e 22 2c d,.......event:."run-end-clean",
e0c0 0a 09 09 09 09 09 09 64 65 74 61 69 6c 3a 20 7b 20 73 74 65 70 73 3a 20 73 74 65 70 20 2b 20 31 .......detail:.{.steps:.step.+.1
e0e0 20 7d 2c 0a 09 09 09 09 09 7d 29 3b 0a 09 09 09 09 09 62 72 65 61 6b 3b 0a 09 09 09 09 7d 0a 09 .},......});......break;.....}..
e100 09 09 09 6c 6f 67 53 74 65 70 4c 69 66 65 63 79 63 6c 65 28 7b 0a 09 09 09 09 09 74 61 62 49 64 ...logStepLifecycle({......tabId
e120 3a 20 74 68 69 73 2e 63 6f 6e 66 69 67 2e 74 61 62 49 64 2c 0a 09 09 09 09 09 73 74 65 70 2c 0a :.this.config.tabId,......step,.
e140 09 09 09 09 09 65 76 65 6e 74 3a 20 22 73 74 65 70 2d 68 61 73 2d 74 6f 6f 6c 73 22 2c 0a 09 09 .....event:."step-has-tools",...
e160 09 09 09 64 65 74 61 69 6c 3a 20 7b 0a 09 09 09 09 09 09 74 6f 6f 6c 43 6f 75 6e 74 3a 20 73 74 ...detail:.{.......toolCount:.st
e180 65 70 54 6f 6f 6c 43 61 6c 6c 73 2e 6c 65 6e 67 74 68 2c 0a 09 09 09 09 09 09 74 6f 6f 6c 4e 61 epToolCalls.length,.......toolNa
e1a0 6d 65 73 3a 20 73 74 65 70 54 6f 6f 6c 43 61 6c 6c 73 2e 6d 61 70 28 28 74 29 20 3d 3e 20 74 2e mes:.stepToolCalls.map((t).=>.t.
e1c0 6e 61 6d 65 29 2c 0a 09 09 09 09 09 7d 2c 0a 09 09 09 09 7d 29 3b 0a 0a 09 09 09 09 2f 2f 20 45 name),......},.....});......//.E
e1e0 78 65 63 75 74 65 20 74 6f 6f 6c 20 63 61 6c 6c 73 20 6d 61 6e 75 61 6c 6c 79 2e 20 54 68 65 69 xecute.tool.calls.manually..Thei
e200 72 20 72 65 73 75 6c 74 73 20 6d 65 72 67 65 20 62 61 63 6b 20 69 6e 74 6f 20 74 68 65 0a 09 09 r.results.merge.back.into.the...
e220 09 09 2f 2f 20 60 63 68 75 6e 6b 73 60 20 61 63 63 75 6d 75 6c 61 74 6f 72 20 76 69 61 20 60 61 ..//.`chunks`.accumulator.via.`a
e240 70 70 65 6e 64 45 76 65 6e 74 54 6f 43 68 75 6e 6b 73 60 2c 20 77 68 69 63 68 20 72 6f 75 74 65 ppendEventToChunks`,.which.route
e260 73 0a 09 09 09 09 2f 2f 20 65 61 63 68 20 72 65 73 75 6c 74 20 74 6f 20 74 68 65 20 63 6f 72 72 s.....//.each.result.to.the.corr
e280 65 63 74 20 65 6e 74 72 79 20 69 6e 73 69 64 65 20 69 74 73 20 74 6f 6f 6c 2d 62 61 74 63 68 20 ect.entry.inside.its.tool-batch.
e2a0 63 68 75 6e 6b 2e 0a 09 09 09 09 2f 2f 20 54 72 61 63 6b 20 77 68 69 63 68 20 63 61 6c 6c 73 20 chunk......//.Track.which.calls.
e2c0 61 6c 72 65 61 64 79 20 68 61 76 65 20 61 20 72 65 63 6f 72 64 65 64 20 72 65 73 75 6c 74 20 28 already.have.a.recorded.result.(
e2e0 66 72 6f 6d 20 74 68 65 0a 09 09 09 09 2f 2f 20 73 79 6e 74 68 65 74 69 63 20 75 6e 61 76 61 69 from.the.....//.synthetic.unavai
e300 6c 61 62 6c 65 2d 74 6f 6f 6c 20 65 72 72 6f 72 20 70 61 74 68 20 61 62 6f 76 65 29 20 73 6f 20 lable-tool.error.path.above).so.
e320 77 65 20 64 6f 6e 27 74 0a 09 09 09 09 2f 2f 20 72 65 2d 65 78 65 63 75 74 65 20 74 68 65 6d 2e we.don't.....//.re-execute.them.
e340 0a 09 09 09 09 63 6f 6e 73 74 20 61 6c 72 65 61 64 79 52 65 73 6f 6c 76 65 64 20 3d 20 6e 65 77 .....const.alreadyResolved.=.new
e360 20 53 65 74 3c 73 74 72 69 6e 67 3e 28 29 3b 0a 09 09 09 09 66 6f 72 20 28 63 6f 6e 73 74 20 63 .Set<string>();.....for.(const.c
e380 20 6f 66 20 63 68 75 6e 6b 73 29 20 7b 0a 09 09 09 09 09 69 66 20 28 63 2e 74 79 70 65 20 21 3d .of.chunks).{......if.(c.type.!=
e3a0 3d 20 22 74 6f 6f 6c 2d 62 61 74 63 68 22 29 20 63 6f 6e 74 69 6e 75 65 3b 0a 09 09 09 09 09 66 =."tool-batch").continue;......f
e3c0 6f 72 20 28 63 6f 6e 73 74 20 65 6e 74 72 79 20 6f 66 20 63 2e 63 61 6c 6c 73 29 20 7b 0a 09 09 or.(const.entry.of.c.calls).{...
e3e0 09 09 09 09 69 66 20 28 65 6e 74 72 79 2e 72 65 73 75 6c 74 20 21 3d 3d 20 75 6e 64 65 66 69 6e ....if.(entry.result.!==.undefin
e400 65 64 29 20 61 6c 72 65 61 64 79 52 65 73 6f 6c 76 65 64 2e 61 64 64 28 65 6e 74 72 79 2e 69 64 ed).alreadyResolved.add(entry.id
e420 29 3b 0a 09 09 09 09 09 7d 0a 09 09 09 09 7d 0a 0a 09 09 09 09 2f 2f 20 49 64 65 6e 74 69 66 79 );......}.....}......//.Identify
e440 20 74 68 65 20 69 6e 64 65 78 20 6f 66 20 74 68 65 20 6c 61 73 74 20 74 6f 6f 6c 20 69 6e 20 74 .the.index.of.the.last.tool.in.t
e460 68 69 73 20 62 61 74 63 68 20 74 68 61 74 20 77 69 6c 6c 0a 09 09 09 09 2f 2f 20 61 63 74 75 61 his.batch.that.will.....//.actua
e480 6c 6c 79 20 65 78 65 63 75 74 65 2e 20 51 75 65 75 65 64 20 75 73 65 72 20 6d 65 73 73 61 67 65 lly.execute..Queued.user.message
e4a0 73 20 61 72 65 20 62 75 66 66 65 72 65 64 20 61 63 72 6f 73 73 0a 09 09 09 09 2f 2f 20 74 68 69 s.are.buffered.across.....//.thi
e4c0 73 20 62 61 74 63 68 20 61 6e 64 20 69 6e 6a 65 63 74 65 64 20 69 6e 74 6f 20 4f 4e 4c 59 20 74 s.batch.and.injected.into.ONLY.t
e4e0 68 61 74 20 74 6f 6f 6c 27 73 20 72 65 73 75 6c 74 2c 20 73 6f 20 74 68 65 0a 09 09 09 09 2f 2f hat.tool's.result,.so.the.....//
e500 20 69 6e 74 65 72 72 75 70 74 20 61 70 70 65 61 72 73 20 65 78 61 63 74 6c 79 20 6f 6e 63 65 20 .interrupt.appears.exactly.once.
e520 70 65 72 20 73 74 65 70 20 72 61 74 68 65 72 20 74 68 61 6e 20 66 72 61 67 6d 65 6e 74 65 64 0a per.step.rather.than.fragmented.
e540 09 09 09 09 2f 2f 20 61 63 72 6f 73 73 20 77 68 69 63 68 65 76 65 72 20 74 6f 6f 6c 20 68 61 70 ....//.across.whichever.tool.hap
e560 70 65 6e 65 64 20 74 6f 20 64 65 71 75 65 75 65 20 66 69 72 73 74 2e 20 54 6f 6f 6c 2d 6c 65 76 pened.to.dequeue.first..Tool-lev
e580 65 6c 0a 09 09 09 09 2f 2f 20 69 6e 74 65 72 72 75 70 74 20 68 61 6e 64 6c 65 72 73 20 69 6e 20 el.....//.interrupt.handlers.in.
e5a0 72 75 6e 2d 73 68 65 6c 6c 2f 79 6f 75 74 75 62 65 2d 74 72 61 6e 73 63 72 69 62 65 2f 72 65 74 run-shell/youtube-transcribe/ret
e5c0 72 69 65 76 65 0a 09 09 09 09 2f 2f 20 73 74 69 6c 6c 20 65 6d 62 65 64 20 74 68 65 69 72 20 6f rieve.....//.still.embed.their.o
e5e0 77 6e 20 69 6e 74 65 72 72 75 70 74 20 74 65 78 74 20 69 6e 20 74 68 65 69 72 20 72 65 74 75 72 wn.interrupt.text.in.their.retur
e600 6e 20 76 61 6c 75 65 73 20 e2 80 94 0a 09 09 09 09 2f 2f 20 74 68 61 74 20 70 61 74 68 20 69 73 n.values.........//.that.path.is
e620 20 69 6e 64 65 70 65 6e 64 65 6e 74 20 61 6e 64 20 72 65 6d 61 69 6e 73 20 63 6f 72 72 65 63 74 .independent.and.remains.correct
e640 2e 0a 09 09 09 09 6c 65 74 20 6c 61 73 74 45 78 65 63 75 74 61 62 6c 65 49 64 78 20 3d 20 2d 31 ......let.lastExecutableIdx.=.-1
e660 3b 0a 09 09 09 09 66 6f 72 20 28 6c 65 74 20 69 20 3d 20 30 3b 20 69 20 3c 20 73 74 65 70 54 6f ;.....for.(let.i.=.0;.i.<.stepTo
e680 6f 6c 43 61 6c 6c 73 2e 6c 65 6e 67 74 68 3b 20 69 2b 2b 29 20 7b 0a 09 09 09 09 09 63 6f 6e 73 olCalls.length;.i++).{......cons
e6a0 74 20 74 63 41 74 20 3d 20 73 74 65 70 54 6f 6f 6c 43 61 6c 6c 73 5b 69 5d 3b 0a 09 09 09 09 09 t.tcAt.=.stepToolCalls[i];......
e6c0 69 66 20 28 74 63 41 74 20 26 26 20 21 61 6c 72 65 61 64 79 52 65 73 6f 6c 76 65 64 2e 68 61 73 if.(tcAt.&&.!alreadyResolved.has
e6e0 28 74 63 41 74 2e 69 64 29 29 20 6c 61 73 74 45 78 65 63 75 74 61 62 6c 65 49 64 78 20 3d 20 69 (tcAt.id)).lastExecutableIdx.=.i
e700 3b 0a 09 09 09 09 7d 0a 0a 09 09 09 09 2f 2f 20 41 63 63 75 6d 75 6c 61 74 6f 72 20 66 6f 72 20 ;.....}......//.Accumulator.for.
e720 6d 65 73 73 61 67 65 73 20 64 65 71 75 65 75 65 64 20 64 75 72 69 6e 67 20 74 68 69 73 20 62 61 messages.dequeued.during.this.ba
e740 74 63 68 2e 20 44 72 61 69 6e 65 64 0a 09 09 09 09 2f 2f 20 6f 6e 6c 79 20 61 74 20 60 6c 61 73 tch..Drained.....//.only.at.`las
e760 74 45 78 65 63 75 74 61 62 6c 65 49 64 78 60 2e 20 44 65 73 74 72 75 63 74 69 76 65 20 64 65 71 tExecutableIdx`..Destructive.deq
e780 75 65 75 65 20 61 74 20 74 68 65 20 71 75 65 75 65 0a 09 09 09 09 2f 2f 20 6c 65 76 65 6c 20 70 ueue.at.the.queue.....//.level.p
e7a0 72 65 76 65 6e 74 73 20 74 68 65 20 73 61 6d 65 20 6d 65 73 73 61 67 65 20 66 72 6f 6d 20 61 70 revents.the.same.message.from.ap
e7c0 70 65 61 72 69 6e 67 20 69 6e 20 73 75 62 73 65 71 75 65 6e 74 0a 09 09 09 09 2f 2f 20 62 61 74 pearing.in.subsequent.....//.bat
e7e0 63 68 65 73 2e 0a 09 09 09 09 63 6f 6e 73 74 20 62 61 74 63 68 50 65 6e 64 69 6e 67 49 6e 6a 65 ches......const.batchPendingInje
e800 63 74 69 6f 6e 3a 20 7b 20 69 64 3a 20 73 74 72 69 6e 67 3b 20 6d 65 73 73 61 67 65 3a 20 73 74 ction:.{.id:.string;.message:.st
e820 72 69 6e 67 3b 20 74 69 6d 65 73 74 61 6d 70 3a 20 6e 75 6d 62 65 72 20 7d 5b 5d 20 3d 20 5b 5d ring;.timestamp:.number.}[].=.[]
e840 3b 0a 0a 09 09 09 09 2f 2f 20 52 65 73 75 6c 74 73 20 6f 66 20 61 6c 72 65 61 64 79 2d 65 78 65 ;......//.Results.of.already-exe
e860 63 75 74 65 64 20 63 61 6c 6c 73 20 69 6e 20 74 68 69 73 20 62 61 74 63 68 2c 20 6b 65 79 65 64 cuted.calls.in.this.batch,.keyed
e880 20 62 79 0a 09 09 09 09 2f 2f 20 60 74 6f 6f 6c 44 65 64 75 70 4b 65 79 60 2e 20 42 79 74 65 2d .by.....//.`toolDedupKey`..Byte-
e8a0 69 64 65 6e 74 69 63 61 6c 20 72 65 70 65 61 74 73 20 72 65 75 73 65 20 74 68 65 20 66 69 72 73 identical.repeats.reuse.the.firs
e8c0 74 20 72 65 73 75 6c 74 0a 09 09 09 09 2f 2f 20 69 6e 73 74 65 61 64 20 6f 66 20 72 65 2d 72 75 t.result.....//.instead.of.re-ru
e8e0 6e 6e 69 6e 67 20 74 68 65 20 74 6f 6f 6c 20 28 73 65 65 20 74 6f 6f 6c 2d 72 75 6e 6e 65 72 2d nning.the.tool.(see.tool-runner-
e900 64 75 70 6c 69 63 61 74 69 6f 6e 2d 0a 09 09 09 09 2f 2f 20 69 6e 63 69 64 65 6e 74 2e 6d 64 29 duplication-.....//.incident.md)
e920 2e 20 4f 6e 6c 79 20 74 68 65 20 72 61 77 2c 20 70 72 65 2d 69 6e 74 65 72 72 75 70 74 2d 69 6e ..Only.the.raw,.pre-interrupt-in
e940 6a 65 63 74 69 6f 6e 20 72 65 73 75 6c 74 20 69 73 0a 09 09 09 09 2f 2f 20 63 61 63 68 65 64 20 jection.result.is.....//.cached.
e960 73 6f 20 61 20 72 65 75 73 65 64 20 63 6f 70 79 20 6e 65 76 65 72 20 63 61 72 72 69 65 73 20 61 so.a.reused.copy.never.carries.a
e980 6e 6f 74 68 65 72 20 63 61 6c 6c 27 73 20 69 6e 74 65 72 72 75 70 74 2e 0a 09 09 09 09 63 6f 6e nother.call's.interrupt......con
e9a0 73 74 20 64 65 64 75 70 52 65 73 75 6c 74 73 20 3d 20 6e 65 77 20 4d 61 70 3c 73 74 72 69 6e 67 st.dedupResults.=.new.Map<string
e9c0 2c 20 54 6f 6f 6c 52 65 73 75 6c 74 3e 28 29 3b 0a 0a 09 09 09 09 66 6f 72 20 28 6c 65 74 20 74 ,.ToolResult>();......for.(let.t
e9e0 63 49 64 78 20 3d 20 30 3b 20 74 63 49 64 78 20 3c 20 73 74 65 70 54 6f 6f 6c 43 61 6c 6c 73 2e cIdx.=.0;.tcIdx.<.stepToolCalls.
ea00 6c 65 6e 67 74 68 3b 20 74 63 49 64 78 2b 2b 29 20 7b 0a 09 09 09 09 09 63 6f 6e 73 74 20 74 63 length;.tcIdx++).{......const.tc
ea20 20 3d 20 73 74 65 70 54 6f 6f 6c 43 61 6c 6c 73 5b 74 63 49 64 78 5d 3b 0a 09 09 09 09 09 69 66 .=.stepToolCalls[tcIdx];......if
ea40 20 28 21 74 63 20 7c 7c 20 61 6c 72 65 61 64 79 52 65 73 6f 6c 76 65 64 2e 68 61 73 28 74 63 2e .(!tc.||.alreadyResolved.has(tc.
ea60 69 64 29 29 20 63 6f 6e 74 69 6e 75 65 3b 0a 0a 09 09 09 09 09 63 6f 6e 73 74 20 64 65 64 75 70 id)).continue;.......const.dedup
ea80 4b 65 79 20 3d 20 74 6f 6f 6c 44 65 64 75 70 4b 65 79 28 74 63 2e 6e 61 6d 65 2c 20 74 63 2e 61 Key.=.toolDedupKey(tc.name,.tc.a
eaa0 72 67 75 6d 65 6e 74 73 29 3b 0a 0a 09 09 09 09 09 6c 65 74 20 74 6f 6f 6c 52 65 73 75 6c 74 3a rguments);.......let.toolResult:
eac0 20 54 6f 6f 6c 52 65 73 75 6c 74 20 7c 20 75 6e 64 65 66 69 6e 65 64 3b 0a 09 09 09 09 09 63 6f .ToolResult.|.undefined;......co
eae0 6e 73 74 20 63 61 63 68 65 64 20 3d 20 64 65 64 75 70 4b 65 79 20 21 3d 3d 20 6e 75 6c 6c 20 3f nst.cached.=.dedupKey.!==.null.?
eb00 20 64 65 64 75 70 52 65 73 75 6c 74 73 2e 67 65 74 28 64 65 64 75 70 4b 65 79 29 20 3a 20 75 6e .dedupResults.get(dedupKey).:.un
eb20 64 65 66 69 6e 65 64 3b 0a 09 09 09 09 09 69 66 20 28 63 61 63 68 65 64 29 20 7b 0a 09 09 09 09 defined;......if.(cached).{.....
eb40 09 09 2f 2f 20 49 64 65 6e 74 69 63 61 6c 20 63 61 6c 6c 20 61 6c 72 65 61 64 79 20 72 61 6e 20 ..//.Identical.call.already.ran.
eb60 69 6e 20 74 68 69 73 20 62 61 74 63 68 20 e2 80 94 20 72 65 75 73 65 20 69 74 73 0a 09 09 09 09 in.this.batch.....reuse.its.....
eb80 09 09 2f 2f 20 6f 75 74 70 75 74 20 75 6e 64 65 72 20 74 68 69 73 20 63 61 6c 6c 27 73 20 6f 77 ..//.output.under.this.call's.ow
eba0 6e 20 69 64 20 28 6e 6f 20 65 78 65 63 75 74 69 6f 6e 2c 20 6e 6f 20 73 68 65 6c 6c 0a 09 09 09 n.id.(no.execution,.no.shell....
ebc0 09 09 09 2f 2f 20 6f 75 74 70 75 74 20 74 6f 20 73 74 72 65 61 6d 29 2e 0a 09 09 09 09 09 09 74 ...//.output.to.stream)........t
ebe0 6f 6f 6c 52 65 73 75 6c 74 20 3d 20 7b 20 2e 2e 2e 63 61 63 68 65 64 2c 20 74 6f 6f 6c 43 61 6c oolResult.=.{....cached,.toolCal
ec00 6c 49 64 3a 20 74 63 2e 69 64 2c 20 74 6f 6f 6c 4e 61 6d 65 3a 20 74 63 2e 6e 61 6d 65 20 7d 3b lId:.tc.id,.toolName:.tc.name.};
ec20 0a 09 09 09 09 09 7d 20 65 6c 73 65 20 7b 0a 09 09 09 09 09 09 63 6f 6e 73 74 20 73 68 65 6c 6c ......}.else.{.......const.shell
ec40 4f 75 74 70 75 74 51 75 65 75 65 3a 20 41 72 72 61 79 3c 7b 20 64 61 74 61 3a 20 73 74 72 69 6e OutputQueue:.Array<{.data:.strin
ec60 67 3b 20 73 74 72 65 61 6d 3a 20 22 73 74 64 6f 75 74 22 20 7c 20 22 73 74 64 65 72 72 22 20 7d g;.stream:."stdout".|."stderr".}
ec80 3e 20 3d 20 5b 5d 3b 0a 0a 09 09 09 09 09 09 63 6f 6e 73 74 20 65 78 65 63 50 72 6f 6d 69 73 65 >.=.[];........const.execPromise
eca0 20 3d 20 74 68 69 73 2e 65 78 65 63 75 74 65 54 6f 6f 6c 57 69 74 68 53 74 72 65 61 6d 69 6e 67 .=.this.executeToolWithStreaming
ecc0 28 74 63 2c 20 73 68 65 6c 6c 4f 75 74 70 75 74 51 75 65 75 65 29 3b 0a 0a 09 09 09 09 09 09 2f (tc,.shellOutputQueue);......../
ece0 2f 20 50 6f 6c 6c 20 66 6f 72 20 73 68 65 6c 6c 20 6f 75 74 70 75 74 20 77 68 69 6c 65 20 74 68 /.Poll.for.shell.output.while.th
ed00 65 20 74 6f 6f 6c 20 69 73 20 72 75 6e 6e 69 6e 67 2c 20 75 73 69 6e 67 20 50 72 6f 6d 69 73 65 e.tool.is.running,.using.Promise
ed20 2e 72 61 63 65 0a 09 09 09 09 09 09 2f 2f 20 73 6f 20 77 65 20 63 61 6e 20 79 69 65 6c 64 20 73 .race.......//.so.we.can.yield.s
ed40 68 65 6c 6c 2d 6f 75 74 70 75 74 20 65 76 65 6e 74 73 20 61 73 20 74 68 65 79 20 61 72 72 69 76 hell-output.events.as.they.arriv
ed60 65 20 72 61 74 68 65 72 20 74 68 61 6e 20 62 75 66 66 65 72 69 6e 67 0a 09 09 09 09 09 09 2f 2f e.rather.than.buffering.......//
ed80 20 74 68 65 6d 20 61 6c 6c 20 75 6e 74 69 6c 20 74 6f 6f 6c 20 63 6f 6d 70 6c 65 74 69 6f 6e 2e .them.all.until.tool.completion.
eda0 0a 09 09 09 09 09 09 77 68 69 6c 65 20 28 74 6f 6f 6c 52 65 73 75 6c 74 20 3d 3d 3d 20 75 6e 64 .......while.(toolResult.===.und
edc0 65 66 69 6e 65 64 29 20 7b 0a 09 09 09 09 09 09 09 69 66 20 28 73 68 65 6c 6c 4f 75 74 70 75 74 efined).{........if.(shellOutput
ede0 51 75 65 75 65 2e 6c 65 6e 67 74 68 20 3e 20 30 29 20 7b 0a 09 09 09 09 09 09 09 09 63 6f 6e 73 Queue.length.>.0).{.........cons
ee00 74 20 69 74 65 6d 20 3d 20 73 68 65 6c 6c 4f 75 74 70 75 74 51 75 65 75 65 2e 73 68 69 66 74 28 t.item.=.shellOutputQueue.shift(
ee20 29 3b 0a 09 09 09 09 09 09 09 09 69 66 20 28 69 74 65 6d 29 20 7b 0a 09 09 09 09 09 09 09 09 09 );.........if.(item).{..........
ee40 63 6f 6e 73 74 20 73 68 65 6c 6c 45 76 65 6e 74 3a 20 41 67 65 6e 74 45 76 65 6e 74 20 3d 20 7b const.shellEvent:.AgentEvent.=.{
ee60 0a 09 09 09 09 09 09 09 09 09 09 74 79 70 65 3a 20 22 73 68 65 6c 6c 2d 6f 75 74 70 75 74 22 2c ...........type:."shell-output",
ee80 0a 09 09 09 09 09 09 09 09 09 09 64 61 74 61 3a 20 69 74 65 6d 2e 64 61 74 61 2c 0a 09 09 09 09 ...........data:.item.data,.....
eea0 09 09 09 09 09 09 73 74 72 65 61 6d 3a 20 69 74 65 6d 2e 73 74 72 65 61 6d 2c 0a 09 09 09 09 09 ......stream:.item.stream,......
eec0 09 09 09 09 7d 3b 0a 09 09 09 09 09 09 09 09 09 61 70 70 65 6e 64 45 76 65 6e 74 54 6f 43 68 75 ....};..........appendEventToChu
eee0 6e 6b 73 28 63 68 75 6e 6b 73 2c 20 73 68 65 6c 6c 45 76 65 6e 74 29 3b 0a 09 09 09 09 09 09 09 nks(chunks,.shellEvent);........
ef00 09 09 79 69 65 6c 64 20 73 68 65 6c 6c 45 76 65 6e 74 3b 0a 09 09 09 09 09 09 09 09 7d 0a 09 09 ..yield.shellEvent;.........}...
ef20 09 09 09 09 09 09 63 6f 6e 74 69 6e 75 65 3b 0a 09 09 09 09 09 09 09 7d 0a 09 09 09 09 09 09 09 ......continue;........}........
ef40 63 6f 6e 73 74 20 72 61 63 65 52 65 73 75 6c 74 20 3d 20 61 77 61 69 74 20 50 72 6f 6d 69 73 65 const.raceResult.=.await.Promise
ef60 2e 72 61 63 65 28 5b 0a 09 09 09 09 09 09 09 09 65 78 65 63 50 72 6f 6d 69 73 65 2e 74 68 65 6e .race([.........execPromise.then
ef80 28 28 72 29 20 3d 3e 20 28 7b 20 64 6f 6e 65 3a 20 74 72 75 65 20 61 73 20 63 6f 6e 73 74 2c 20 ((r).=>.({.done:.true.as.const,.
efa0 76 61 6c 75 65 3a 20 72 20 7d 29 29 2c 0a 09 09 09 09 09 09 09 09 6e 65 77 20 50 72 6f 6d 69 73 value:.r.})),.........new.Promis
efc0 65 3c 7b 20 64 6f 6e 65 3a 20 66 61 6c 73 65 20 7d 3e 28 28 72 65 73 6f 6c 76 65 29 20 3d 3e 0a e<{.done:.false.}>((resolve).=>.
efe0 09 09 09 09 09 09 09 09 09 73 65 74 49 6d 6d 65 64 69 61 74 65 28 28 29 20 3d 3e 20 72 65 73 6f .........setImmediate(().=>.reso
f000 6c 76 65 28 7b 20 64 6f 6e 65 3a 20 66 61 6c 73 65 20 7d 29 29 2c 0a 09 09 09 09 09 09 09 09 29 lve({.done:.false.})),.........)
f020 2c 0a 09 09 09 09 09 09 09 5d 29 3b 0a 09 09 09 09 09 09 09 69 66 20 28 72 61 63 65 52 65 73 75 ,........]);........if.(raceResu
f040 6c 74 2e 64 6f 6e 65 29 20 7b 0a 09 09 09 09 09 09 09 09 74 6f 6f 6c 52 65 73 75 6c 74 20 3d 20 lt.done).{.........toolResult.=.
f060 72 61 63 65 52 65 73 75 6c 74 2e 76 61 6c 75 65 3b 0a 09 09 09 09 09 09 09 7d 0a 09 09 09 09 09 raceResult.value;........}......
f080 09 7d 0a 0a 09 09 09 09 09 09 2f 2f 20 44 72 61 69 6e 20 61 6e 79 20 72 65 6d 61 69 6e 69 6e 67 .}........//.Drain.any.remaining
f0a0 20 73 68 65 6c 6c 20 6f 75 74 70 75 74 20 65 6d 69 74 74 65 64 20 62 65 66 6f 72 65 20 77 65 20 .shell.output.emitted.before.we.
f0c0 72 65 61 64 20 74 68 65 20 72 65 73 75 6c 74 0a 09 09 09 09 09 09 77 68 69 6c 65 20 28 73 68 65 read.the.result.......while.(she
f0e0 6c 6c 4f 75 74 70 75 74 51 75 65 75 65 2e 6c 65 6e 67 74 68 20 3e 20 30 29 20 7b 0a 09 09 09 09 llOutputQueue.length.>.0).{.....
f100 09 09 09 63 6f 6e 73 74 20 69 74 65 6d 20 3d 20 73 68 65 6c 6c 4f 75 74 70 75 74 51 75 65 75 65 ...const.item.=.shellOutputQueue
f120 2e 73 68 69 66 74 28 29 3b 0a 09 09 09 09 09 09 09 69 66 20 28 69 74 65 6d 29 20 7b 0a 09 09 09 .shift();........if.(item).{....
f140 09 09 09 09 09 63 6f 6e 73 74 20 73 68 65 6c 6c 45 76 65 6e 74 3a 20 41 67 65 6e 74 45 76 65 6e .....const.shellEvent:.AgentEven
f160 74 20 3d 20 7b 0a 09 09 09 09 09 09 09 09 09 74 79 70 65 3a 20 22 73 68 65 6c 6c 2d 6f 75 74 70 t.=.{..........type:."shell-outp
f180 75 74 22 2c 0a 09 09 09 09 09 09 09 09 09 64 61 74 61 3a 20 69 74 65 6d 2e 64 61 74 61 2c 0a 09 ut",..........data:.item.data,..
f1a0 09 09 09 09 09 09 09 09 73 74 72 65 61 6d 3a 20 69 74 65 6d 2e 73 74 72 65 61 6d 2c 0a 09 09 09 ........stream:.item.stream,....
f1c0 09 09 09 09 09 7d 3b 0a 09 09 09 09 09 09 09 09 61 70 70 65 6e 64 45 76 65 6e 74 54 6f 43 68 75 .....};.........appendEventToChu
f1e0 6e 6b 73 28 63 68 75 6e 6b 73 2c 20 73 68 65 6c 6c 45 76 65 6e 74 29 3b 0a 09 09 09 09 09 09 09 nks(chunks,.shellEvent);........
f200 09 79 69 65 6c 64 20 73 68 65 6c 6c 45 76 65 6e 74 3b 0a 09 09 09 09 09 09 09 7d 0a 09 09 09 09 .yield.shellEvent;........}.....
f220 09 09 7d 0a 0a 09 09 09 09 09 09 2f 2f 20 43 61 63 68 65 20 74 68 65 20 72 61 77 20 72 65 73 75 ..}........//.Cache.the.raw.resu
f240 6c 74 20 73 6f 20 6c 61 74 65 72 20 69 64 65 6e 74 69 63 61 6c 20 63 61 6c 6c 73 20 69 6e 20 74 lt.so.later.identical.calls.in.t
f260 68 69 73 0a 09 09 09 09 09 09 2f 2f 20 62 61 74 63 68 20 63 61 6e 20 72 65 75 73 65 20 69 74 2e his.......//.batch.can.reuse.it.
f280 0a 09 09 09 09 09 09 69 66 20 28 64 65 64 75 70 4b 65 79 20 21 3d 3d 20 6e 75 6c 6c 29 20 64 65 .......if.(dedupKey.!==.null).de
f2a0 64 75 70 52 65 73 75 6c 74 73 2e 73 65 74 28 64 65 64 75 70 4b 65 79 2c 20 74 6f 6f 6c 52 65 73 dupResults.set(dedupKey,.toolRes
f2c0 75 6c 74 29 3b 0a 09 09 09 09 09 7d 0a 0a 09 09 09 09 09 2f 2f 20 48 61 72 76 65 73 74 20 61 6e ult);......}.......//.Harvest.an
f2e0 79 20 71 75 65 75 65 64 20 75 73 65 72 20 6d 65 73 73 61 67 65 73 20 62 75 74 20 44 45 46 45 52 y.queued.user.messages.but.DEFER
f300 20 69 6e 6a 65 63 74 69 6f 6e 20 75 6e 74 69 6c 0a 09 09 09 09 09 2f 2f 20 74 68 65 20 6c 61 73 .injection.until......//.the.las
f320 74 20 74 6f 6f 6c 20 6f 66 20 74 68 65 20 62 61 74 63 68 2e 20 54 68 69 73 20 63 6f 6c 6c 61 70 t.tool.of.the.batch..This.collap
f340 73 65 73 20 6d 75 6c 74 69 70 6c 65 0a 09 09 09 09 09 2f 2f 20 71 75 65 75 65 64 20 6d 65 73 73 ses.multiple......//.queued.mess
f360 61 67 65 73 20 69 6e 74 6f 20 61 20 73 69 6e 67 6c 65 20 69 6e 74 65 72 72 75 70 74 20 62 6c 6f ages.into.a.single.interrupt.blo
f380 63 6b 20 6f 6e 20 61 20 73 69 6e 67 6c 65 0a 09 09 09 09 09 2f 2f 20 74 6f 6f 6c 2d 72 65 73 75 ck.on.a.single......//.tool-resu
f3a0 6c 74 20 69 6e 73 74 65 61 64 20 6f 66 20 66 72 61 67 6d 65 6e 74 69 6e 67 20 61 63 72 6f 73 73 lt.instead.of.fragmenting.across
f3c0 20 74 68 65 20 62 61 74 63 68 2e 0a 09 09 09 09 09 69 66 20 28 74 68 69 73 2e 71 75 65 75 65 43 .the.batch.......if.(this.queueC
f3e0 61 6c 6c 62 61 63 6b 73 29 20 7b 0a 09 09 09 09 09 09 63 6f 6e 73 74 20 71 75 65 75 65 64 4d 73 allbacks).{.......const.queuedMs
f400 67 73 20 3d 20 74 68 69 73 2e 71 75 65 75 65 43 61 6c 6c 62 61 63 6b 73 2e 64 65 71 75 65 75 65 gs.=.this.queueCallbacks.dequeue
f420 4d 65 73 73 61 67 65 73 28 29 3b 0a 09 09 09 09 09 09 69 66 20 28 71 75 65 75 65 64 4d 73 67 73 Messages();.......if.(queuedMsgs
f440 2e 6c 65 6e 67 74 68 20 3e 20 30 29 20 7b 0a 09 09 09 09 09 09 09 62 61 74 63 68 50 65 6e 64 69 .length.>.0).{........batchPendi
f460 6e 67 49 6e 6a 65 63 74 69 6f 6e 2e 70 75 73 68 28 2e 2e 2e 71 75 65 75 65 64 4d 73 67 73 29 3b ngInjection.push(...queuedMsgs);
f480 0a 09 09 09 09 09 09 7d 0a 09 09 09 09 09 7d 0a 0a 09 09 09 09 09 6c 65 74 20 66 69 6e 61 6c 54 .......}......}.......let.finalT
f4a0 6f 6f 6c 52 65 73 75 6c 74 20 3d 20 74 6f 6f 6c 52 65 73 75 6c 74 3b 0a 09 09 09 09 09 69 66 20 oolResult.=.toolResult;......if.
f4c0 28 74 63 49 64 78 20 3d 3d 3d 20 6c 61 73 74 45 78 65 63 75 74 61 62 6c 65 49 64 78 20 26 26 20 (tcIdx.===.lastExecutableIdx.&&.
f4e0 62 61 74 63 68 50 65 6e 64 69 6e 67 49 6e 6a 65 63 74 69 6f 6e 2e 6c 65 6e 67 74 68 20 3e 20 30 batchPendingInjection.length.>.0
f500 29 20 7b 0a 09 09 09 09 09 09 63 6f 6e 73 74 20 75 73 65 72 4d 65 73 73 61 67 65 73 20 3d 20 62 ).{.......const.userMessages.=.b
f520 61 74 63 68 50 65 6e 64 69 6e 67 49 6e 6a 65 63 74 69 6f 6e 2e 6d 61 70 28 28 6d 29 20 3d 3e 20 atchPendingInjection.map((m).=>.
f540 6d 2e 6d 65 73 73 61 67 65 29 2e 6a 6f 69 6e 28 22 5c 6e 2d 2d 2d 5c 6e 22 29 3b 0a 09 09 09 09 m.message).join("\n---\n");.....
f560 09 09 66 69 6e 61 6c 54 6f 6f 6c 52 65 73 75 6c 74 20 3d 20 7b 0a 09 09 09 09 09 09 09 2e 2e 2e ..finalToolResult.=.{...........
f580 74 6f 6f 6c 52 65 73 75 6c 74 2c 0a 09 09 09 09 09 09 09 72 65 73 75 6c 74 3a 20 60 24 7b 74 6f toolResult,........result:.`${to
f5a0 6f 6c 52 65 73 75 6c 74 2e 72 65 73 75 6c 74 7d 5c 6e 5c 6e 5b 55 53 45 52 20 49 4e 54 45 52 52 olResult.result}\n\n[USER.INTERR
f5c0 55 50 54 5d 5c 6e 54 68 65 20 75 73 65 72 20 68 61 73 20 73 65 6e 74 20 79 6f 75 20 6d 65 73 73 UPT]\nThe.user.has.sent.you.mess
f5e0 61 67 65 28 73 29 20 77 68 69 6c 65 20 79 6f 75 20 77 65 72 65 20 77 6f 72 6b 69 6e 67 2e 20 59 age(s).while.you.were.working..Y
f600 6f 75 20 4d 55 53 54 20 61 64 64 72 65 73 73 20 74 68 65 73 65 20 62 65 66 6f 72 65 20 63 6f 6e ou.MUST.address.these.before.con
f620 74 69 6e 75 69 6e 67 20 77 69 74 68 20 79 6f 75 72 20 63 75 72 72 65 6e 74 20 74 61 73 6b 3a 5c tinuing.with.your.current.task:\
f640 6e 5c 6e 24 7b 75 73 65 72 4d 65 73 73 61 67 65 73 7d 60 2c 0a 09 09 09 09 09 09 7d 3b 0a 09 09 n\n${userMessages}`,.......};...
f660 09 09 09 09 62 61 74 63 68 50 65 6e 64 69 6e 67 49 6e 6a 65 63 74 69 6f 6e 2e 6c 65 6e 67 74 68 ....batchPendingInjection.length
f680 20 3d 20 30 3b 0a 09 09 09 09 09 7d 0a 0a 09 09 09 09 09 63 6f 6e 73 74 20 74 72 45 76 65 6e 74 .=.0;......}.......const.trEvent
f6a0 3a 20 41 67 65 6e 74 45 76 65 6e 74 20 3d 20 7b 20 74 79 70 65 3a 20 22 74 6f 6f 6c 2d 72 65 73 :.AgentEvent.=.{.type:."tool-res
f6c0 75 6c 74 22 2c 20 74 6f 6f 6c 52 65 73 75 6c 74 3a 20 66 69 6e 61 6c 54 6f 6f 6c 52 65 73 75 6c ult",.toolResult:.finalToolResul
f6e0 74 20 7d 3b 0a 09 09 09 09 09 61 70 70 65 6e 64 45 76 65 6e 74 54 6f 43 68 75 6e 6b 73 28 63 68 t.};......appendEventToChunks(ch
f700 75 6e 6b 73 2c 20 74 72 45 76 65 6e 74 29 3b 0a 09 09 09 09 09 79 69 65 6c 64 20 74 72 45 76 65 unks,.trEvent);......yield.trEve
f720 6e 74 3b 0a 09 09 09 09 7d 0a 0a 09 09 09 09 2f 2f 20 53 61 66 65 74 79 20 6e 65 74 3a 20 69 66 nt;.....}......//.Safety.net:.if
f740 20 60 6c 61 73 74 45 78 65 63 75 74 61 62 6c 65 49 64 78 60 20 77 61 73 20 6e 65 76 65 72 20 72 .`lastExecutableIdx`.was.never.r
f760 65 61 63 68 65 64 20 28 65 2e 67 2e 2c 0a 09 09 09 09 2f 2f 20 6e 6f 20 74 6f 6f 6c 73 20 65 78 eached.(e.g.,.....//.no.tools.ex
f780 65 63 75 74 65 64 20 62 65 63 61 75 73 65 20 61 6c 6c 20 77 65 72 65 20 61 6c 72 65 61 64 79 20 ecuted.because.all.were.already.
f7a0 72 65 73 6f 6c 76 65 64 29 20 62 75 74 0a 09 09 09 09 2f 2f 20 6d 65 73 73 61 67 65 73 20 77 65 resolved).but.....//.messages.we
f7c0 72 65 20 73 74 69 6c 6c 20 64 65 71 75 65 75 65 64 2c 20 73 75 72 66 61 63 65 20 74 68 65 6d 20 re.still.dequeued,.surface.them.
f7e0 61 73 20 61 20 75 73 65 72 20 6d 65 73 73 61 67 65 0a 09 09 09 09 2f 2f 20 73 6f 20 74 68 65 79 as.a.user.message.....//.so.they
f800 20 61 72 65 6e 27 74 20 64 72 6f 70 70 65 64 2e 20 49 6e 20 70 72 61 63 74 69 63 65 20 74 68 69 .aren't.dropped..In.practice.thi
f820 73 20 69 73 20 72 61 72 65 20 e2 80 94 20 69 74 20 6f 6e 6c 79 0a 09 09 09 09 2f 2f 20 68 61 70 s.is.rare.....it.only.....//.hap
f840 70 65 6e 73 20 77 68 65 6e 20 74 68 65 20 65 6e 74 69 72 65 20 62 61 74 63 68 20 69 73 20 75 6e pens.when.the.entire.batch.is.un
f860 61 76 61 69 6c 61 62 6c 65 2d 74 6f 6f 6c 20 73 79 6e 74 68 65 73 69 7a 65 64 0a 09 09 09 09 2f available-tool.synthesized...../
f880 2f 20 65 72 72 6f 72 73 20 77 69 74 68 20 61 20 6d 65 73 73 61 67 65 20 61 72 72 69 76 69 6e 67 /.errors.with.a.message.arriving
f8a0 20 69 6e 20 74 68 61 74 20 6e 61 72 72 6f 77 20 77 69 6e 64 6f 77 2e 0a 09 09 09 09 69 66 20 28 .in.that.narrow.window......if.(
f8c0 62 61 74 63 68 50 65 6e 64 69 6e 67 49 6e 6a 65 63 74 69 6f 6e 2e 6c 65 6e 67 74 68 20 3e 20 30 batchPendingInjection.length.>.0
f8e0 29 20 7b 0a 09 09 09 09 09 63 6f 6e 73 74 20 75 73 65 72 4d 65 73 73 61 67 65 73 20 3d 20 62 61 ).{......const.userMessages.=.ba
f900 74 63 68 50 65 6e 64 69 6e 67 49 6e 6a 65 63 74 69 6f 6e 2e 6d 61 70 28 28 6d 29 20 3d 3e 20 6d tchPendingInjection.map((m).=>.m
f920 2e 6d 65 73 73 61 67 65 29 2e 6a 6f 69 6e 28 22 5c 6e 2d 2d 2d 5c 6e 22 29 3b 0a 09 09 09 09 09 .message).join("\n---\n");......
f940 74 68 69 73 2e 6d 65 73 73 61 67 65 73 2e 70 75 73 68 28 7b 0a 09 09 09 09 09 09 72 6f 6c 65 3a this.messages.push({.......role:
f960 20 22 75 73 65 72 22 2c 0a 09 09 09 09 09 09 63 68 75 6e 6b 73 3a 20 5b 7b 20 74 79 70 65 3a 20 ."user",.......chunks:.[{.type:.
f980 22 74 65 78 74 22 2c 20 74 65 78 74 3a 20 75 73 65 72 4d 65 73 73 61 67 65 73 20 7d 5d 2c 0a 09 "text",.text:.userMessages.}],..
f9a0 09 09 09 09 7d 29 3b 0a 09 09 09 09 09 62 61 74 63 68 50 65 6e 64 69 6e 67 49 6e 6a 65 63 74 69 ....});......batchPendingInjecti
f9c0 6f 6e 2e 6c 65 6e 67 74 68 20 3d 20 30 3b 0a 09 09 09 09 7d 0a 0a 09 09 09 09 2f 2f 20 46 69 6e on.length.=.0;.....}......//.Fin
f9e0 61 6c 20 73 61 66 65 74 79 20 6e 65 74 3a 20 61 66 74 65 72 20 65 78 65 63 75 74 69 6e 67 20 74 al.safety.net:.after.executing.t
fa00 68 65 20 62 61 74 63 68 2c 20 67 75 61 72 61 6e 74 65 65 20 65 76 65 72 79 0a 09 09 09 09 2f 2f he.batch,.guarantee.every.....//
fa20 20 74 6f 6f 6c 2d 63 61 6c 6c 20 72 65 63 6f 72 64 65 64 20 69 6e 20 74 68 69 73 20 73 74 65 70 .tool-call.recorded.in.this.step
fa40 20 68 61 73 20 61 20 6d 61 74 63 68 69 6e 67 20 72 65 73 75 6c 74 20 62 65 66 6f 72 65 20 77 65 .has.a.matching.result.before.we
fa60 0a 09 09 09 09 2f 2f 20 6c 6f 6f 70 20 62 61 63 6b 20 74 6f 20 74 68 65 20 4c 4c 4d 2e 20 41 6e .....//.loop.back.to.the.LLM..An
fa80 79 20 74 6f 6f 6c 2d 63 61 6c 6c 20 49 44 20 74 68 61 74 20 73 6c 69 70 70 65 64 20 74 68 72 6f y.tool-call.ID.that.slipped.thro
faa0 75 67 68 0a 09 09 09 09 2f 2f 20 77 69 74 68 6f 75 74 20 61 20 72 65 73 75 6c 74 20 28 61 20 70 ugh.....//.without.a.result.(a.p
fac0 61 74 68 20 77 65 20 64 69 64 6e 27 74 20 61 6e 74 69 63 69 70 61 74 65 29 20 77 6f 75 6c 64 20 ath.we.didn't.anticipate).would.
fae0 6f 74 68 65 72 77 69 73 65 0a 09 09 09 09 2f 2f 20 6f 72 70 68 61 6e 20 61 6e 64 20 74 72 69 67 otherwise.....//.orphan.and.trig
fb00 67 65 72 20 4d 69 73 73 69 6e 67 54 6f 6f 6c 52 65 73 75 6c 74 73 45 72 72 6f 72 20 6f 6e 20 74 ger.MissingToolResultsError.on.t
fb20 68 65 20 6e 65 78 74 0a 09 09 09 09 2f 2f 20 72 6f 75 6e 64 2d 74 72 69 70 2e 0a 09 09 09 09 63 he.next.....//.round-trip......c
fb40 6f 6e 73 74 20 73 61 66 65 74 79 52 65 73 69 64 75 61 6c 20 3d 20 74 68 69 73 2e 73 79 6e 74 68 onst.safetyResidual.=.this.synth
fb60 65 73 69 7a 65 52 65 73 69 64 75 61 6c 54 6f 6f 6c 52 65 73 75 6c 74 73 28 0a 09 09 09 09 09 73 esizeResidualToolResults(......s
fb80 74 65 70 54 6f 6f 6c 43 61 6c 6c 73 2c 0a 09 09 09 09 09 63 68 75 6e 6b 73 2c 0a 09 09 09 09 09 tepToolCalls,......chunks,......
fba0 22 45 72 72 6f 72 3a 20 49 6e 74 65 72 6e 61 6c 20 65 72 72 6f 72 3a 20 74 6f 6f 6c 20 72 65 73 "Error:.Internal.error:.tool.res
fbc0 75 6c 74 20 77 61 73 20 6e 65 76 65 72 20 70 72 6f 64 75 63 65 64 2e 22 2c 0a 09 09 09 09 29 3b ult.was.never.produced.",.....);
fbe0 0a 09 09 09 09 66 6f 72 20 28 63 6f 6e 73 74 20 72 20 6f 66 20 73 61 66 65 74 79 52 65 73 69 64 .....for.(const.r.of.safetyResid
fc00 75 61 6c 29 20 7b 0a 09 09 09 09 09 61 70 70 65 6e 64 45 76 65 6e 74 54 6f 43 68 75 6e 6b 73 28 ual).{......appendEventToChunks(
fc20 63 68 75 6e 6b 73 2c 20 72 29 3b 0a 09 09 09 09 09 79 69 65 6c 64 20 72 3b 0a 09 09 09 09 7d 0a chunks,.r);......yield.r;.....}.
fc40 09 09 09 7d 0a 0a 09 09 09 2f 2f 20 42 75 69 6c 64 20 74 68 65 20 66 69 6e 61 6c 20 61 73 73 69 ...}.....//.Build.the.final.assi
fc60 73 74 61 6e 74 20 6d 65 73 73 61 67 65 20 66 72 6f 6d 20 74 68 65 20 61 63 63 75 6d 75 6c 61 74 stant.message.from.the.accumulat
fc80 65 64 20 63 68 75 6e 6b 73 2e 0a 09 09 09 2f 2f 20 49 66 20 6e 6f 20 61 73 73 69 73 74 61 6e 74 ed.chunks.....//.If.no.assistant
fca0 20 74 75 72 6e 20 6d 65 73 73 61 67 65 20 77 61 73 20 65 76 65 72 20 63 72 65 61 74 65 64 20 28 .turn.message.was.ever.created.(
fcc0 65 2e 67 2e 2c 20 74 68 65 20 6d 6f 64 65 6c 0a 09 09 09 2f 2f 20 70 72 6f 64 75 63 65 64 20 6e e.g.,.the.model....//.produced.n
fce0 6f 74 68 69 6e 67 20 e2 80 94 20 75 6e 75 73 75 61 6c 20 62 75 74 20 70 6f 73 73 69 62 6c 65 29 othing.....unusual.but.possible)
fd00 2c 20 73 79 6e 74 68 65 73 69 7a 65 20 61 6e 20 65 6d 70 74 79 20 6f 6e 65 2e 0a 09 09 09 63 6f ,.synthesize.an.empty.one.....co
fd20 6e 73 74 20 61 73 73 69 73 74 61 6e 74 4d 65 73 73 61 67 65 3a 20 43 68 61 74 4d 65 73 73 61 67 nst.assistantMessage:.ChatMessag
fd40 65 20 3d 20 61 73 73 69 73 74 61 6e 74 54 75 72 6e 4d 65 73 73 61 67 65 20 3f 3f 20 7b 0a 09 09 e.=.assistantTurnMessage.??.{...
fd60 09 09 72 6f 6c 65 3a 20 22 61 73 73 69 73 74 61 6e 74 22 2c 0a 09 09 09 09 63 68 75 6e 6b 73 2c ..role:."assistant",.....chunks,
fd80 0a 09 09 09 7d 3b 0a 09 09 09 2f 2f 20 60 61 73 73 69 73 74 61 6e 74 54 75 72 6e 4d 65 73 73 61 ....};....//.`assistantTurnMessa
fda0 67 65 60 20 77 61 73 20 70 75 73 68 65 64 20 69 6e 74 6f 20 60 73 74 65 70 4d 65 73 73 61 67 65 ge`.was.pushed.into.`stepMessage
fdc0 73 60 20 62 75 74 20 6e 6f 74 20 69 6e 74 6f 0a 09 09 09 2f 2f 20 60 74 68 69 73 2e 6d 65 73 73 s`.but.not.into....//.`this.mess
fde0 61 67 65 73 60 20 e2 80 94 20 70 75 73 68 20 69 74 20 6e 6f 77 20 73 6f 20 74 68 65 20 61 67 65 ages`.....push.it.now.so.the.age
fe00 6e 74 27 73 20 6f 75 74 77 61 72 64 2d 66 61 63 69 6e 67 0a 09 09 09 2f 2f 20 68 69 73 74 6f 72 nt's.outward-facing....//.histor
fe20 79 20 72 65 66 6c 65 63 74 73 20 74 68 65 20 74 75 72 6e 2e 0a 09 09 09 74 68 69 73 2e 6d 65 73 y.reflects.the.turn.....this.mes
fe40 73 61 67 65 73 2e 70 75 73 68 28 61 73 73 69 73 74 61 6e 74 4d 65 73 73 61 67 65 29 3b 0a 0a 09 sages.push(assistantMessage);...
fe60 09 09 2f 2f 20 4e 4f 54 45 3a 20 71 75 65 75 65 64 20 6d 65 73 73 61 67 65 73 20 74 68 61 74 20 ..//.NOTE:.queued.messages.that.
fe80 61 72 72 69 76 65 20 41 46 54 45 52 20 74 68 65 20 6c 61 73 74 20 74 6f 6f 6c 20 63 61 6c 6c 20 arrive.AFTER.the.last.tool.call.
fea0 28 6f 72 20 77 69 74 68 0a 09 09 09 2f 2f 20 6e 6f 20 74 6f 6f 6c 20 63 61 6c 6c 73 20 61 74 20 (or.with....//.no.tool.calls.at.
fec0 61 6c 6c 29 20 61 72 65 20 69 6e 74 65 6e 74 69 6f 6e 61 6c 6c 79 20 4e 4f 54 20 64 72 61 69 6e all).are.intentionally.NOT.drain
fee0 65 64 20 68 65 72 65 2e 20 44 72 61 69 6e 69 6e 67 0a 09 09 09 2f 2f 20 74 68 65 6d 20 69 6e 74 ed.here..Draining....//.them.int
ff00 6f 20 60 74 68 69 73 2e 6d 65 73 73 61 67 65 73 60 20 61 73 20 61 20 74 72 61 69 6c 69 6e 67 20 o.`this.messages`.as.a.trailing.
ff20 75 73 65 72 20 74 75 72 6e 20 e2 80 94 20 74 68 65 20 6f 6c 64 0a 09 09 09 2f 2f 20 62 65 68 61 user.turn.....the.old....//.beha
ff40 76 69 6f 75 72 20 e2 80 94 20 6c 65 66 74 20 74 68 65 6d 20 73 69 74 74 69 6e 67 20 69 6e 20 68 viour.....left.them.sitting.in.h
ff60 69 73 74 6f 72 79 20 77 69 74 68 20 6e 6f 20 6d 6f 64 65 6c 20 72 65 73 70 6f 6e 73 65 3a 0a 09 istory.with.no.model.response:..
ff80 09 09 2f 2f 20 74 68 65 20 74 75 72 6e 20 65 6e 64 65 64 20 69 6e 73 74 65 61 64 20 6f 66 20 61 ..//.the.turn.ended.instead.of.a
ffa0 6e 73 77 65 72 69 6e 67 20 74 68 65 6d 20 28 74 68 65 20 22 71 75 65 75 65 20 6e 6f 74 20 63 6f nswering.them.(the."queue.not.co
ffc0 6e 73 75 6d 65 64 0a 09 09 09 2f 2f 20 61 66 74 65 72 20 74 68 65 20 74 75 72 6e 20 65 6e 64 73 nsumed....//.after.the.turn.ends
ffe0 22 20 62 75 67 29 2e 20 54 68 65 79 20 6e 6f 77 20 73 74 61 79 20 6f 6e 20 74 68 65 20 71 75 65 ".bug)..They.now.stay.on.the.que
10000 75 65 20 73 6f 20 74 68 65 0a 09 09 09 2f 2f 20 6f 72 63 68 65 73 74 72 61 74 6f 72 20 28 60 41 ue.so.the....//.orchestrator.(`A
10020 67 65 6e 74 4d 61 6e 61 67 65 72 2e 70 72 6f 63 65 73 73 4d 65 73 73 61 67 65 60 29 20 63 61 6e gentManager.processMessage`).can
10040 20 73 74 61 72 74 20 61 20 66 72 65 73 68 20 74 75 72 6e 0a 09 09 09 2f 2f 20 66 6f 72 20 74 68 .start.a.fresh.turn....//.for.th
10060 65 6d 20 6f 6e 63 65 20 74 68 69 73 20 6f 6e 65 20 73 65 74 74 6c 65 73 2e 20 4d 69 64 2d 74 75 em.once.this.one.settles..Mid-tu
10080 72 6e 20 69 6e 74 65 72 72 75 70 74 73 20 61 72 65 20 73 74 69 6c 6c 0a 09 09 09 2f 2f 20 69 6e rn.interrupts.are.still....//.in
100a0 6a 65 63 74 65 64 20 69 6e 74 6f 20 74 68 65 20 6c 61 73 74 20 74 6f 6f 6c 20 72 65 73 75 6c 74 jected.into.the.last.tool.result
100c0 20 61 62 6f 76 65 20 e2 80 94 20 74 68 61 74 20 70 61 74 68 20 69 73 20 75 6e 63 68 61 6e 67 65 .above.....that.path.is.unchange
100e0 64 2e 0a 0a 09 09 09 79 69 65 6c 64 20 7b 20 74 79 70 65 3a 20 22 64 6f 6e 65 22 2c 20 6d 65 73 d......yield.{.type:."done",.mes
10100 73 61 67 65 3a 20 61 73 73 69 73 74 61 6e 74 4d 65 73 73 61 67 65 20 7d 3b 0a 09 09 7d 20 63 61 sage:.assistantMessage.};...}.ca
10120 74 63 68 20 28 65 72 72 29 20 7b 0a 09 09 09 63 6f 6e 73 74 20 65 72 72 52 65 63 6f 72 64 20 3d tch.(err).{....const.errRecord.=
10140 20 65 72 72 20 61 73 20 75 6e 6b 6e 6f 77 6e 20 61 73 20 52 65 63 6f 72 64 3c 73 74 72 69 6e 67 .err.as.unknown.as.Record<string
10160 2c 20 75 6e 6b 6e 6f 77 6e 3e 3b 0a 09 09 09 63 6f 6e 73 74 20 73 74 61 74 75 73 43 6f 64 65 20 ,.unknown>;....const.statusCode.
10180 3d 0a 09 09 09 09 74 79 70 65 6f 66 20 65 72 72 52 65 63 6f 72 64 2e 73 74 61 74 75 73 43 6f 64 =.....typeof.errRecord.statusCod
101a0 65 20 3d 3d 3d 20 22 6e 75 6d 62 65 72 22 20 3f 20 65 72 72 52 65 63 6f 72 64 2e 73 74 61 74 75 e.===."number".?.errRecord.statu
101c0 73 43 6f 64 65 20 3a 20 75 6e 64 65 66 69 6e 65 64 3b 0a 09 09 09 63 6f 6e 73 74 20 65 72 72 6f sCode.:.undefined;....const.erro
101e0 72 4d 73 67 20 3d 20 66 6f 72 6d 61 74 45 72 72 6f 72 28 65 72 72 2c 20 74 68 69 73 2e 63 6f 6e rMsg.=.formatError(err,.this.con
10200 66 69 67 29 3b 0a 09 09 09 79 69 65 6c 64 20 7b 20 74 79 70 65 3a 20 22 65 72 72 6f 72 22 2c 20 fig);....yield.{.type:."error",.
10220 65 72 72 6f 72 3a 20 65 72 72 6f 72 4d 73 67 2c 20 2e 2e 2e 28 73 74 61 74 75 73 43 6f 64 65 20 error:.errorMsg,....(statusCode.
10240 21 3d 3d 20 75 6e 64 65 66 69 6e 65 64 20 3f 20 7b 20 73 74 61 74 75 73 43 6f 64 65 20 7d 20 3a !==.undefined.?.{.statusCode.}.:
10260 20 7b 7d 29 20 7d 3b 0a 09 09 09 74 68 69 73 2e 73 74 61 74 75 73 20 3d 20 22 65 72 72 6f 72 22 .{}).};....this.status.=."error"
10280 3b 0a 09 09 09 79 69 65 6c 64 20 7b 20 74 79 70 65 3a 20 22 73 74 61 74 75 73 22 2c 20 73 74 61 ;....yield.{.type:."status",.sta
102a0 74 75 73 3a 20 22 65 72 72 6f 72 22 20 7d 3b 0a 09 09 09 72 65 74 75 72 6e 3b 0a 09 09 7d 0a 0a tus:."error".};....return;...}..
102c0 09 09 74 68 69 73 2e 73 74 61 74 75 73 20 3d 20 22 69 64 6c 65 22 3b 0a 09 09 79 69 65 6c 64 20 ..this.status.=."idle";...yield.
102e0 7b 20 74 79 70 65 3a 20 22 73 74 61 74 75 73 22 2c 20 73 74 61 74 75 73 3a 20 22 69 64 6c 65 22 {.type:."status",.status:."idle"
10300 20 7d 3b 0a 09 7d 0a 7d 0a .};..}.}.