From b232c32a1778e3a9816bdcdb88bf37e22eb5cfaa Mon Sep 17 00:00:00 2001 From: ezynda3 Date: Wed, 22 Apr 2026 17:25:42 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20mark3lab?= =?UTF-8?q?s/kit@558fb5214f64904bdeaa83be3543826db929e6e3=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _pagefind/fragment/en_9916ae9.pf_fragment | Bin 2843 -> 0 bytes _pagefind/fragment/en_b193b02.pf_fragment | Bin 0 -> 2840 bytes _pagefind/fragment/en_b34664c.pf_fragment | Bin 0 -> 2792 bytes _pagefind/fragment/en_e5a3ab5.pf_fragment | Bin 1970 -> 0 bytes _pagefind/index/en_7ff19aa.pf_index | Bin 0 -> 35170 bytes _pagefind/index/en_c1e0bae.pf_index | Bin 18008 -> 0 bytes _pagefind/index/en_e22a646.pf_index | Bin 0 -> 19160 bytes _pagefind/index/en_f2da96a.pf_index | Bin 34993 -> 0 bytes _pagefind/pagefind-entry.json | 2 +- _pagefind/pagefind.en_7728f75303.pf_meta | Bin 282 -> 0 bytes _pagefind/pagefind.en_b58094b577.pf_meta | Bin 0 -> 284 bytes advanced/json-output/index.html | 2 +- advanced/subagents/index.html | 2 +- advanced/testing/index.html | 2 +- ...acks-Bn_dP0Wn.js => callbacks-DurHXbkP.js} | 356 ++++++++---------- .../{index-BMILh3U4.js => index-DiolDQjB.js} | 22 +- ...rview-CkcpGgQk.js => overview-bUFLfXUg.js} | 4 +- cli/commands/index.html | 2 +- cli/flags/index.html | 2 +- configuration/index.html | 2 +- development/index.html | 2 +- extensions/capabilities/index.html | 2 +- extensions/examples/index.html | 2 +- extensions/loading/index.html | 2 +- extensions/overview/index.html | 2 +- extensions/testing/index.html | 2 +- index.html | 2 +- installation/index.html | 2 +- llms-full.txt | 70 +++- mcp.json | 5 +- providers/index.html | 2 +- quick-start/index.html | 2 +- sdk/callbacks/index.html | 70 +++- sdk/options/index.html | 2 +- sdk/overview/index.html | 4 +- sdk/sessions/index.html | 2 +- search.json | 3 +- sessions/index.html | 2 +- themes/index.html | 2 +- 39 files changed, 312 insertions(+), 264 deletions(-) delete mode 100644 _pagefind/fragment/en_9916ae9.pf_fragment create mode 100644 _pagefind/fragment/en_b193b02.pf_fragment create mode 100644 _pagefind/fragment/en_b34664c.pf_fragment delete mode 100644 _pagefind/fragment/en_e5a3ab5.pf_fragment create mode 100644 _pagefind/index/en_7ff19aa.pf_index delete mode 100644 _pagefind/index/en_c1e0bae.pf_index create mode 100644 _pagefind/index/en_e22a646.pf_index delete mode 100644 _pagefind/index/en_f2da96a.pf_index delete mode 100644 _pagefind/pagefind.en_7728f75303.pf_meta create mode 100644 _pagefind/pagefind.en_b58094b577.pf_meta rename assets/{callbacks-Bn_dP0Wn.js => callbacks-DurHXbkP.js} (67%) rename assets/{index-BMILh3U4.js => index-DiolDQjB.js} (97%) rename assets/{overview-CkcpGgQk.js => overview-bUFLfXUg.js} (98%) diff --git a/_pagefind/fragment/en_9916ae9.pf_fragment b/_pagefind/fragment/en_9916ae9.pf_fragment deleted file mode 100644 index 8f1641987cb8775e34ce0cfd97512d5b468da985..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2843 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 diff --git a/_pagefind/fragment/en_b193b02.pf_fragment b/_pagefind/fragment/en_b193b02.pf_fragment new file mode 100644 index 0000000000000000000000000000000000000000..67f6637affee3b78574edd0e33d34a601df8a91c GIT binary patch literal 2840 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 literal 0 HcmV?d00001 diff --git a/_pagefind/fragment/en_b34664c.pf_fragment b/_pagefind/fragment/en_b34664c.pf_fragment new file mode 100644 index 0000000000000000000000000000000000000000..d3d4181f1893dd0b44e0c7d70926fe05797113e5 GIT binary patch literal 2792 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 literal 0 HcmV?d00001 diff --git a/_pagefind/fragment/en_e5a3ab5.pf_fragment b/_pagefind/fragment/en_e5a3ab5.pf_fragment deleted file mode 100644 index 875b022cacdbb1a7f89f4f592b81c236c239f984..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1970 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%0AIA)TOUq5I1WTZ2WPDe`9 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 diff --git a/_pagefind/index/en_e22a646.pf_index b/_pagefind/index/en_e22a646.pf_index new file mode 100644 index 0000000000000000000000000000000000000000..f790744530589877fc65cb086616d3cd3824378f GIT binary patch literal 19160 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

s)mfzu+Jkzp*JN>W5{OsC? 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 -LC_?&udA5KGqRr#7T z?tCere4PBn&`Z%eGg-@Oo~oM^*le&hqC*UV-!&}aVv58#jgHG|dW@pQMx0_u0?Z7g z(X>TwQJ#gCouiPLVFuDNOhP--VKGBJzcHHh&y?Mk<=HiBHENwiuulK*3u)>L~$})v`+(`S~5fLarh$TA&tRFU>Wc_1|crn&(-F2_x^FZE^(; zkUS*pc@NXyxx&5Ohcx$~O!InWP$#hUxh8sUmhbRPg7e{WR2>guGXxFw6_S8X(lgn^ zv&JF%{U)Y|19u0=tH6+|YD4t758BZlU%nZ_pNz4uPV#Q_WEEcevOJ!pRF6#eRg)Iv zQGMrtA)K%_%^CI5re)1yNyX1)%LWdyKHzoabUUQ&u+S+M+0Bx@fn=o368GLl7K=kD zw>5uid!KfAnL~4}oo(c;mcSpl6>?@yf`_ z8zPNpjJTXKK7Y?iQn;3N$_RuGaa>$9ZEaW7|PPj ze4_}VscO~;7zc6)pK&E5=fr;%9No1KWy92czo}W1^U3Z`(e1f{i6Y}rP~yS^*<5EP zU8)7bo-ccxtEpK#41ISoeNiO8fD!?nJsnNRezG_ zIl*Hm`Ac5PDWyES4UU1;2{?gdk&8I#_=EJ}KI;X_iZKs5;xUv=*Rm~`zw0=NQa6Po zxa1kZ^6jc1stWKN9$ruH^j=tIeAYtb`4J}@3ZKveVKV!@d-j=}fD3N(tkrNBrxV^v zA4I@5{|~JJwhvFCnBCnXHg2>9(s#ZVMNoj426Oqdw=A&Ff*Vlg|D$mgysklp*^GJ% z+}8~E=y|(Yh8l!i1g4t&ur!``o3+JrI>0q>r>rPB)aWN#tYJ#=HbYmH(^&8)dGonU6HSs9oi@HuOMlbM zyT^XKyA+gqjos>OP116>iKqOJQR%RIsAU&_={_RquITAfEjzm1#&g3079)fTZ`33Y z4>7AMA!FLC?>e8L;1v9YoDmIXr5^#PS55X){XFs4R1ne+uW-78EO$2gOGjUm*JEji z@g%c8HDwi}DRM453R!C;T1z3yMJdcPgPr`XX>tQ#R2qM;5~s9PJ%v6W4|89pC>m#Z zH3thx7$db#uQAR#d+XO~t;>~`=V<@_nzY}Y6`>v;^X!XtT|Xxbp|vi+9|xDodGZA- z*uc4W1}E{8yYd)C+qp*4qY&oaxhCD0Gdqa`NNi5kiwEpdcnp>`nyWJ+c^@Z)J?9;Q zk?EuE_rQN6w{D_cre0)*3Em1^oHg_v4!N!RI65)2rZ2ZiGWNWtdquMEmNuB4f^Wf1 zMu zwylWT#ZYhum_Ui0R?r8Pk5fuI*|W!p<3Ig+5*Gx_(dRfQW;NSz#YjC@w`QdMbNze= zCvHmU0mC7m>z4}Vn=VF|q4gvn36bDaV1LcVbhDA(%qX3x^jRu&q{~LezuA=KvpJI~ n_A=V7H!r$pEtz}hyAzBAXWsnUW&9~8@;Ukc)D5iEXp8^=b^2tC literal 0 HcmV?d00001 diff --git a/_pagefind/index/en_f2da96a.pf_index b/_pagefind/index/en_f2da96a.pf_index deleted file mode 100644 index 0c37c5e31f324da72151910bb4f3b010f5430075..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34993 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 - + diff --git a/advanced/subagents/index.html b/advanced/subagents/index.html index dcc670cc..7d1cc3d6 100644 --- a/advanced/subagents/index.html +++ b/advanced/subagents/index.html @@ -7,7 +7,7 @@ - + diff --git a/advanced/testing/index.html b/advanced/testing/index.html index 7f1c3b9e..646a4ee1 100644 --- a/advanced/testing/index.html +++ b/advanced/testing/index.html @@ -7,7 +7,7 @@ - + diff --git a/assets/callbacks-Bn_dP0Wn.js b/assets/callbacks-DurHXbkP.js similarity index 67% rename from assets/callbacks-Bn_dP0Wn.js rename to assets/callbacks-DurHXbkP.js index 12bb6e40..c341219b 100644 --- a/assets/callbacks-Bn_dP0Wn.js +++ b/assets/callbacks-DurHXbkP.js @@ -11,7 +11,7 @@ const s={frontmatter:{title:"Callbacks",description:"Monitor tool calls and stre }) defer unsub2() -unsub3 := host.OnStreaming(func(event kit.MessageUpdateEvent) { +unsub3 := host.OnMessageUpdate(func(event kit.MessageUpdateEvent) { fmt.Print(event.Chunk) }) defer unsub3() @@ -81,6 +81,18 @@ const s={frontmatter:{title:"Callbacks",description:"Monitor tool calls and stre // h.Response, h.Error log.Printf("Turn completed: %d chars", len(h.Response)) }) +

PrepareStep — intercept messages between steps

+

The most powerful hook — fires between steps within a multi-step agent turn, after any steering messages are injected and before messages are sent to the LLM. Can replace the entire context window.

+
host.OnPrepareStep(kit.HookPriorityNormal, func(h kit.PrepareStepHook) *kit.PrepareStepResult {
+    // h.StepNumber — zero-based step index within the turn
+    // h.Messages   — current context window (includes any steering)
+    
+    // Example: transform tool results with images into user messages
+    modified := transformImageToolResults(h.Messages)
+    return &kit.PrepareStepResult{Messages: modified}
+    // Return nil to pass through unchanged
+})
+

Use cases: transforming tool results (e.g., image data for vision models), dynamic tool filtering per step, mid-turn context injection, custom stop conditions.

Hook priorities

kit.HookPriorityHigh   = 0   // runs first
 kit.HookPriorityNormal = 50  // default
@@ -91,56 +103,171 @@ const s={frontmatter:{title:"Callbacks",description:"Monitor tool calls and stre
 
 
 Event
+Typed Subscriber
 Description
 
 
 
 
-ToolCallStartEvent
-LLM began generating tool call arguments (tool name known, args streaming)
-
-
-ToolCallDeltaEvent
-Streamed JSON fragment of tool call arguments
-
-
-ToolCallEndEvent
-Tool argument streaming complete, before execution begins
-
-
-ToolCallEvent
-Tool call fully parsed and about to execute
-
-
-ToolResultEvent
-Tool execution completed with result
-
-
-ToolOutputEvent
-Streaming output chunk from tool (e.g., bash stdout/stderr)
-
-
-MessageUpdateEvent
-Streaming text chunk from LLM
-
-
-ResponseEvent
-Final response received
-
-
 TurnStartEvent
+OnTurnStart
 Agent turn started
 
 
 TurnEndEvent
+OnTurnEnd
 Agent turn completed
 
 
+MessageStartEvent
+OnMessageStart
+New assistant message begins
+
+
+MessageUpdateEvent
+OnMessageUpdate
+Streaming text chunk from LLM
+
+
+MessageEndEvent
+OnMessageEnd
+Assistant message complete
+
+
+ToolCallStartEvent
+OnToolCallStart
+LLM began generating tool call arguments
+
+
+ToolCallDeltaEvent
+OnToolCallDelta
+Streamed JSON fragment of tool call arguments
+
+
+ToolCallEndEvent
+OnToolCallEnd
+Tool argument streaming complete
+
+
+ToolCallEvent
+OnToolCall
+Tool call fully parsed, about to execute
+
+
+ToolExecutionStartEvent
+OnToolExecutionStart
+Tool begins executing
+
+
+ToolExecutionEndEvent
+OnToolExecutionEnd
+Tool finishes executing
+
+
+ToolResultEvent
+OnToolResult
+Tool execution completed with result
+
+
+ToolCallContentEvent
+OnToolCallContent
+Text content alongside tool calls
+
+
+ToolOutputEvent
+OnToolOutput
+Streaming output chunk from tool (e.g., bash)
+
+
+ResponseEvent
+OnResponse
+Final response received
+
+
+ReasoningStartEvent
+OnReasoningStart
+LLM begins reasoning/thinking
+
+
+ReasoningDeltaEvent
+OnReasoningDelta
+Streaming reasoning/thinking chunk
+
+
+ReasoningCompleteEvent
+OnReasoningComplete
+Reasoning/thinking finished
+
+
+StepStartEvent
+OnStepStart
+New LLM call begins within a turn
+
+
+StepFinishEvent
+OnStepFinish
+Step completes (with usage, finish reason, tool call info)
+
+
+StepUsageEvent
+OnStepUsage
+Per-step token usage
+
+
+StreamFinishEvent
+OnStreamFinish
+Per-step stream completes (with usage + finish reason)
+
+
+TextStartEvent
+OnTextStart
+LLM begins text content generation
+
+
+TextEndEvent
+OnTextEnd
+LLM finishes text content generation
+
+
+WarningsEvent
+OnWarnings
+LLM provider returned warnings
+
+
+SourceEvent
+OnSource
+LLM referenced a source (e.g., web search)
+
+
+ErrorEvent
+OnError
+Agent-level error during streaming
+
+
+RetryEvent
+OnRetry
+LLM request retried after transient error
+
+
+CompactionEvent
+OnCompaction
+Conversation compacted
+
+
+SteerConsumedEvent
+OnSteerConsumed
+Steering messages injected into turn
+
+
 PasswordPromptEvent
+—
 Sudo command needs password (respond via ResponseCh)
 
 
 
+
+

Note: OnStreaming is a deprecated alias for OnMessageUpdate and will be removed in a future release.

+

Subagent event monitoring

Monitor real-time events from LLM-initiated subagents (when the model uses the subagent tool):

host.OnToolCall(func(e kit.ToolCallEvent) {
@@ -156,165 +283,4 @@ const s={frontmatter:{title:"Callbacks",description:"Monitor tool calls and stre
         })
     }
 })
-

SubscribeSubagent returns an unsubscribe function. Listeners are also cleaned up automatically when the subagent completes. See Subagents for more details.

`,headings:[{depth:2,text:"Event-based monitoring",id:"event-based-monitoring"},{depth:2,text:"Tool call argument streaming",id:"tool-call-argument-streaming"},{depth:2,text:"Hook system",id:"hook-system"},{depth:3,text:"BeforeToolCall — block tool execution",id:"beforetoolcall--block-tool-execution"},{depth:3,text:"AfterToolResult — modify tool output",id:"aftertoolresult--modify-tool-output"},{depth:3,text:"BeforeTurn — modify prompt, inject messages",id:"beforeturn--modify-prompt-inject-messages"},{depth:3,text:"AfterTurn — observation only",id:"afterturn--observation-only"},{depth:3,text:"Hook priorities",id:"hook-priorities"},{depth:2,text:"All event types",id:"all-event-types"},{depth:2,text:"Subagent event monitoring",id:"subagent-event-monitoring"}],raw:` -# Callbacks - -## Event-based monitoring - -Subscribe to events for real-time monitoring. Each method returns an unsubscribe function: - -\`\`\`go -unsub := host.OnToolCall(func(event kit.ToolCallEvent) { - fmt.Printf("Tool: %s, Args: %s\\n", event.ToolName, event.ToolArgs) -}) -defer unsub() - -unsub2 := host.OnToolResult(func(event kit.ToolResultEvent) { - fmt.Printf("Result: %s (error: %v)\\n", event.ToolName, event.IsError) -}) -defer unsub2() - -unsub3 := host.OnStreaming(func(event kit.MessageUpdateEvent) { - fmt.Print(event.Chunk) -}) -defer unsub3() - -unsub4 := host.OnResponse(func(event kit.ResponseEvent) { - fmt.Println("Final response received") -}) -defer unsub4() - -unsub5 := host.OnTurnStart(func(event kit.TurnStartEvent) { - fmt.Println("Turn started") -}) -defer unsub5() - -unsub6 := host.OnTurnEnd(func(event kit.TurnEndEvent) { - fmt.Println("Turn ended") -}) -defer unsub6() -\`\`\` - -## Tool call argument streaming - -For tools with large arguments (e.g., \`write\` with a full file body), the \`ToolCallEvent\` only fires after the full argument JSON finishes streaming — which can take 5-10+ seconds of "dead air." These three events fire during argument generation so UIs can show activity immediately: - -\`\`\`go -host.OnToolCallStart(func(event kit.ToolCallStartEvent) { - // Fires as soon as the LLM begins generating tool arguments. - // event.ToolCallID, event.ToolName, event.ToolKind - fmt.Printf("⏳ %s generating arguments...\\n", event.ToolName) -}) - -host.OnToolCallDelta(func(event kit.ToolCallDeltaEvent) { - // Each streamed JSON fragment of the tool arguments. - // event.ToolCallID, event.Delta - // Useful for live-previewing content or showing byte progress. -}) - -host.OnToolCallEnd(func(event kit.ToolCallEndEvent) { - // Tool argument streaming complete — execution about to begin. - // event.ToolCallID - fmt.Printf("✓ Arguments ready, executing...\\n") -}) -\`\`\` - -**Full tool lifecycle**: \`ToolCallStartEvent\` → \`ToolCallDeltaEvent\` (repeated) → \`ToolCallEndEvent\` → \`ToolCallEvent\` → \`ToolExecutionStartEvent\` → \`ToolOutputEvent\` (optional) → \`ToolExecutionEndEvent\` → \`ToolResultEvent\` - -## Hook system - -Hooks can **modify or cancel** operations. Unlike events (read-only), hooks are read-write interceptors. - -### BeforeToolCall — block tool execution - -\`\`\`go -host.OnBeforeToolCall(kit.HookPriorityNormal, func(h kit.BeforeToolCallHook) *kit.BeforeToolCallResult { - // h.ToolCallID, h.ToolName, h.ToolArgs - if h.ToolName == "bash" && strings.Contains(h.ToolArgs, "rm -rf") { - return &kit.BeforeToolCallResult{Block: true, Reason: "dangerous command"} - } - return nil // allow -}) -\`\`\` - -### AfterToolResult — modify tool output - -\`\`\`go -host.OnAfterToolResult(kit.HookPriorityNormal, func(h kit.AfterToolResultHook) *kit.AfterToolResultResult { - // h.ToolCallID, h.ToolName, h.ToolArgs, h.Result, h.IsError - if h.ToolName == "read" { - filtered := redactSecrets(h.Result) - return &kit.AfterToolResultResult{Result: &filtered} - } - return nil -}) -\`\`\` - -### BeforeTurn — modify prompt, inject messages - -\`\`\`go -host.OnBeforeTurn(kit.HookPriorityNormal, func(h kit.BeforeTurnHook) *kit.BeforeTurnResult { - // h.Prompt - newPrompt := h.Prompt + "\\nAlways respond in JSON." - return &kit.BeforeTurnResult{Prompt: &newPrompt} - // Also available: SystemPrompt *string, InjectText *string -}) -\`\`\` - -### AfterTurn — observation only - -\`\`\`go -host.OnAfterTurn(kit.HookPriorityNormal, func(h kit.AfterTurnHook) { - // h.Response, h.Error - log.Printf("Turn completed: %d chars", len(h.Response)) -}) -\`\`\` - -### Hook priorities - -\`\`\`go -kit.HookPriorityHigh = 0 // runs first -kit.HookPriorityNormal = 50 // default -kit.HookPriorityLow = 100 // runs last -\`\`\` - -Lower values run first. First non-nil result wins. - -## All event types - -| Event | Description | -|-------|-------------| -| \`ToolCallStartEvent\` | LLM began generating tool call arguments (tool name known, args streaming) | -| \`ToolCallDeltaEvent\` | Streamed JSON fragment of tool call arguments | -| \`ToolCallEndEvent\` | Tool argument streaming complete, before execution begins | -| \`ToolCallEvent\` | Tool call fully parsed and about to execute | -| \`ToolResultEvent\` | Tool execution completed with result | -| \`ToolOutputEvent\` | Streaming output chunk from tool (e.g., bash stdout/stderr) | -| \`MessageUpdateEvent\` | Streaming text chunk from LLM | -| \`ResponseEvent\` | Final response received | -| \`TurnStartEvent\` | Agent turn started | -| \`TurnEndEvent\` | Agent turn completed | -| \`PasswordPromptEvent\` | Sudo command needs password (respond via \`ResponseCh\`) | - -## Subagent event monitoring - -Monitor real-time events from LLM-initiated subagents (when the model uses the \`subagent\` tool): - -\`\`\`go -host.OnToolCall(func(e kit.ToolCallEvent) { - if e.ToolName == "subagent" { - host.SubscribeSubagent(e.ToolCallID, func(event kit.Event) { - // Receives the same event types as Subscribe(), scoped to the child agent - switch ev := event.(type) { - case kit.MessageUpdateEvent: - fmt.Print(ev.Chunk) - case kit.ToolCallEvent: - fmt.Printf("Subagent calling: %s\\n", ev.ToolName) - } - }) - } -}) -\`\`\` - -\`SubscribeSubagent\` returns an unsubscribe function. Listeners are also cleaned up automatically when the subagent completes. See [Subagents](/advanced/subagents) for more details. -`};export{s as default}; +

SubscribeSubagent returns an unsubscribe function. Listeners are also cleaned up automatically when the subagent completes. See Subagents for more details.

`,headings:[{depth:2,text:"Event-based monitoring",id:"event-based-monitoring"},{depth:2,text:"Tool call argument streaming",id:"tool-call-argument-streaming"},{depth:2,text:"Hook system",id:"hook-system"},{depth:3,text:"BeforeToolCall — block tool execution",id:"beforetoolcall--block-tool-execution"},{depth:3,text:"AfterToolResult — modify tool output",id:"aftertoolresult--modify-tool-output"},{depth:3,text:"BeforeTurn — modify prompt, inject messages",id:"beforeturn--modify-prompt-inject-messages"},{depth:3,text:"AfterTurn — observation only",id:"afterturn--observation-only"},{depth:3,text:"PrepareStep — intercept messages between steps",id:"preparestep--intercept-messages-between-steps"},{depth:3,text:"Hook priorities",id:"hook-priorities"},{depth:2,text:"All event types",id:"all-event-types"},{depth:2,text:"Subagent event monitoring",id:"subagent-event-monitoring"}],raw:'\n# Callbacks\n\n## Event-based monitoring\n\nSubscribe to events for real-time monitoring. Each method returns an unsubscribe function:\n\n```go\nunsub := host.OnToolCall(func(event kit.ToolCallEvent) {\n fmt.Printf("Tool: %s, Args: %s\\n", event.ToolName, event.ToolArgs)\n})\ndefer unsub()\n\nunsub2 := host.OnToolResult(func(event kit.ToolResultEvent) {\n fmt.Printf("Result: %s (error: %v)\\n", event.ToolName, event.IsError)\n})\ndefer unsub2()\n\nunsub3 := host.OnMessageUpdate(func(event kit.MessageUpdateEvent) {\n fmt.Print(event.Chunk)\n})\ndefer unsub3()\n\nunsub4 := host.OnResponse(func(event kit.ResponseEvent) {\n fmt.Println("Final response received")\n})\ndefer unsub4()\n\nunsub5 := host.OnTurnStart(func(event kit.TurnStartEvent) {\n fmt.Println("Turn started")\n})\ndefer unsub5()\n\nunsub6 := host.OnTurnEnd(func(event kit.TurnEndEvent) {\n fmt.Println("Turn ended")\n})\ndefer unsub6()\n```\n\n## Tool call argument streaming\n\nFor tools with large arguments (e.g., `write` with a full file body), the `ToolCallEvent` only fires after the full argument JSON finishes streaming — which can take 5-10+ seconds of "dead air." These three events fire during argument generation so UIs can show activity immediately:\n\n```go\nhost.OnToolCallStart(func(event kit.ToolCallStartEvent) {\n // Fires as soon as the LLM begins generating tool arguments.\n // event.ToolCallID, event.ToolName, event.ToolKind\n fmt.Printf("⏳ %s generating arguments...\\n", event.ToolName)\n})\n\nhost.OnToolCallDelta(func(event kit.ToolCallDeltaEvent) {\n // Each streamed JSON fragment of the tool arguments.\n // event.ToolCallID, event.Delta\n // Useful for live-previewing content or showing byte progress.\n})\n\nhost.OnToolCallEnd(func(event kit.ToolCallEndEvent) {\n // Tool argument streaming complete — execution about to begin.\n // event.ToolCallID\n fmt.Printf("✓ Arguments ready, executing...\\n")\n})\n```\n\n**Full tool lifecycle**: `ToolCallStartEvent` → `ToolCallDeltaEvent` (repeated) → `ToolCallEndEvent` → `ToolCallEvent` → `ToolExecutionStartEvent` → `ToolOutputEvent` (optional) → `ToolExecutionEndEvent` → `ToolResultEvent`\n\n## Hook system\n\nHooks can **modify or cancel** operations. Unlike events (read-only), hooks are read-write interceptors.\n\n### BeforeToolCall — block tool execution\n\n```go\nhost.OnBeforeToolCall(kit.HookPriorityNormal, func(h kit.BeforeToolCallHook) *kit.BeforeToolCallResult {\n // h.ToolCallID, h.ToolName, h.ToolArgs\n if h.ToolName == "bash" && strings.Contains(h.ToolArgs, "rm -rf") {\n return &kit.BeforeToolCallResult{Block: true, Reason: "dangerous command"}\n }\n return nil // allow\n})\n```\n\n### AfterToolResult — modify tool output\n\n```go\nhost.OnAfterToolResult(kit.HookPriorityNormal, func(h kit.AfterToolResultHook) *kit.AfterToolResultResult {\n // h.ToolCallID, h.ToolName, h.ToolArgs, h.Result, h.IsError\n if h.ToolName == "read" {\n filtered := redactSecrets(h.Result)\n return &kit.AfterToolResultResult{Result: &filtered}\n }\n return nil\n})\n```\n\n### BeforeTurn — modify prompt, inject messages\n\n```go\nhost.OnBeforeTurn(kit.HookPriorityNormal, func(h kit.BeforeTurnHook) *kit.BeforeTurnResult {\n // h.Prompt\n newPrompt := h.Prompt + "\\nAlways respond in JSON."\n return &kit.BeforeTurnResult{Prompt: &newPrompt}\n // Also available: SystemPrompt *string, InjectText *string\n})\n```\n\n### AfterTurn — observation only\n\n```go\nhost.OnAfterTurn(kit.HookPriorityNormal, func(h kit.AfterTurnHook) {\n // h.Response, h.Error\n log.Printf("Turn completed: %d chars", len(h.Response))\n})\n```\n\n### PrepareStep — intercept messages between steps\n\nThe most powerful hook — fires between steps within a multi-step agent turn, after any steering messages are injected and before messages are sent to the LLM. Can replace the entire context window.\n\n```go\nhost.OnPrepareStep(kit.HookPriorityNormal, func(h kit.PrepareStepHook) *kit.PrepareStepResult {\n // h.StepNumber — zero-based step index within the turn\n // h.Messages — current context window (includes any steering)\n \n // Example: transform tool results with images into user messages\n modified := transformImageToolResults(h.Messages)\n return &kit.PrepareStepResult{Messages: modified}\n // Return nil to pass through unchanged\n})\n```\n\nUse cases: transforming tool results (e.g., image data for vision models), dynamic tool filtering per step, mid-turn context injection, custom stop conditions.\n\n### Hook priorities\n\n```go\nkit.HookPriorityHigh = 0 // runs first\nkit.HookPriorityNormal = 50 // default\nkit.HookPriorityLow = 100 // runs last\n```\n\nLower values run first. First non-nil result wins.\n\n## All event types\n\n| Event | Typed Subscriber | Description |\n|-------|-----------------|-------------|\n| `TurnStartEvent` | `OnTurnStart` | Agent turn started |\n| `TurnEndEvent` | `OnTurnEnd` | Agent turn completed |\n| `MessageStartEvent` | `OnMessageStart` | New assistant message begins |\n| `MessageUpdateEvent` | `OnMessageUpdate` | Streaming text chunk from LLM |\n| `MessageEndEvent` | `OnMessageEnd` | Assistant message complete |\n| `ToolCallStartEvent` | `OnToolCallStart` | LLM began generating tool call arguments |\n| `ToolCallDeltaEvent` | `OnToolCallDelta` | Streamed JSON fragment of tool call arguments |\n| `ToolCallEndEvent` | `OnToolCallEnd` | Tool argument streaming complete |\n| `ToolCallEvent` | `OnToolCall` | Tool call fully parsed, about to execute |\n| `ToolExecutionStartEvent` | `OnToolExecutionStart` | Tool begins executing |\n| `ToolExecutionEndEvent` | `OnToolExecutionEnd` | Tool finishes executing |\n| `ToolResultEvent` | `OnToolResult` | Tool execution completed with result |\n| `ToolCallContentEvent` | `OnToolCallContent` | Text content alongside tool calls |\n| `ToolOutputEvent` | `OnToolOutput` | Streaming output chunk from tool (e.g., bash) |\n| `ResponseEvent` | `OnResponse` | Final response received |\n| `ReasoningStartEvent` | `OnReasoningStart` | LLM begins reasoning/thinking |\n| `ReasoningDeltaEvent` | `OnReasoningDelta` | Streaming reasoning/thinking chunk |\n| `ReasoningCompleteEvent` | `OnReasoningComplete` | Reasoning/thinking finished |\n| `StepStartEvent` | `OnStepStart` | New LLM call begins within a turn |\n| `StepFinishEvent` | `OnStepFinish` | Step completes (with usage, finish reason, tool call info) |\n| `StepUsageEvent` | `OnStepUsage` | Per-step token usage |\n| `StreamFinishEvent` | `OnStreamFinish` | Per-step stream completes (with usage + finish reason) |\n| `TextStartEvent` | `OnTextStart` | LLM begins text content generation |\n| `TextEndEvent` | `OnTextEnd` | LLM finishes text content generation |\n| `WarningsEvent` | `OnWarnings` | LLM provider returned warnings |\n| `SourceEvent` | `OnSource` | LLM referenced a source (e.g., web search) |\n| `ErrorEvent` | `OnError` | Agent-level error during streaming |\n| `RetryEvent` | `OnRetry` | LLM request retried after transient error |\n| `CompactionEvent` | `OnCompaction` | Conversation compacted |\n| `SteerConsumedEvent` | `OnSteerConsumed` | Steering messages injected into turn |\n| `PasswordPromptEvent` | — | Sudo command needs password (respond via `ResponseCh`) |\n\n> **Note:** `OnStreaming` is a deprecated alias for `OnMessageUpdate` and will be removed in a future release.\n\n## Subagent event monitoring\n\nMonitor real-time events from LLM-initiated subagents (when the model uses the `subagent` tool):\n\n```go\nhost.OnToolCall(func(e kit.ToolCallEvent) {\n if e.ToolName == "subagent" {\n host.SubscribeSubagent(e.ToolCallID, func(event kit.Event) {\n // Receives the same event types as Subscribe(), scoped to the child agent\n switch ev := event.(type) {\n case kit.MessageUpdateEvent:\n fmt.Print(ev.Chunk)\n case kit.ToolCallEvent:\n fmt.Printf("Subagent calling: %s\\n", ev.ToolName)\n }\n })\n }\n})\n```\n\n`SubscribeSubagent` returns an unsubscribe function. Listeners are also cleaned up automatically when the subagent completes. See [Subagents](/advanced/subagents) for more details.\n'};export{s as default}; diff --git a/assets/index-BMILh3U4.js b/assets/index-DiolDQjB.js similarity index 97% rename from assets/index-BMILh3U4.js rename to assets/index-DiolDQjB.js index cce930d4..8f78341e 100644 --- a/assets/index-BMILh3U4.js +++ b/assets/index-DiolDQjB.js @@ -51,11 +51,11 @@ Error generating stack: `+a.message+` [Documentation truncated...]`:u;h+=` Documentation: -${d}`}return h}async function Gh(u,h,d,c){var M,O,C;const v=await fetch("https://api.openai.com/v1/chat/completions",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${h}`},body:JSON.stringify({model:d,messages:[{role:"system",content:um(c)},...u.map(y=>({role:y.role,content:y.content}))]})});if(!v.ok){const y=await v.text();throw new Error(`OpenAI API error (${v.status}): ${y}`)}return((C=(O=(M=(await v.json()).choices)==null?void 0:M[0])==null?void 0:O.message)==null?void 0:C.content)||"No response."}async function Yh(u,h,d,c){var M,O;const v=await fetch("https://api.anthropic.com/v1/messages",{method:"POST",headers:{"Content-Type":"application/json","x-api-key":h,"anthropic-version":"2023-06-01","anthropic-dangerous-direct-browser-access":"true"},body:JSON.stringify({model:d,max_tokens:1024,system:um(c),messages:u.map(C=>({role:C.role,content:C.content}))})});if(!v.ok){const C=await v.text();throw new Error(`Anthropic API error (${v.status}): ${C}`)}return((O=(M=(await v.json()).content)==null?void 0:M[0])==null?void 0:O.text)||"No response."}function Kh(u){return u==="openai"?"gpt-4o-mini":"claude-sonnet-4-20250514"}function Xh({provider:u,model:h,apiKey:d,context:c}){const[v,E]=B.useState(!1),[M,O]=B.useState([]),[C,y]=B.useState(""),[G,R]=B.useState(!1),[K,nt]=B.useState(null),xt=B.useRef(null),Dt=B.useRef(null),At=d||(typeof window<"u"?window.__TOME_AI_API_KEY__:void 0),W=h||Kh(u);B.useEffect(()=>{var Q;(Q=xt.current)==null||Q.scrollIntoView({behavior:"smooth"})},[M]),B.useEffect(()=>{v&&setTimeout(()=>{var Q;return(Q=Dt.current)==null?void 0:Q.focus()},100)},[v]);const I=B.useCallback(async()=>{const Q=C.trim();if(!Q||G||!At)return;const Y={role:"user",content:Q},H=[...M,Y];O(H),y(""),R(!0),nt(null);try{let U;u==="openai"?U=await Gh(H,At,W,c):U=await Yh(H,At,W,c),O(at=>[...at,{role:"assistant",content:U}])}catch(U){nt(U instanceof Error?U.message:"Failed to get response")}finally{R(!1)}},[C,G,M,u,At,W,c]),ct=B.useCallback(Q=>{Q.key==="Enter"&&!Q.shiftKey&&(Q.preventDefault(),I())},[I]);return v?s.jsxs("div",{"data-testid":"ai-chat-panel",style:{position:"fixed",bottom:24,right:24,zIndex:900,width:380,maxWidth:"calc(100vw - 48px)",height:520,maxHeight:"calc(100vh - 48px)",background:"var(--sf)",border:"1px solid var(--bd)",borderRadius:12,boxShadow:"0 16px 64px rgba(0,0,0,0.3)",display:"flex",flexDirection:"column",overflow:"hidden",fontFamily:"var(--font-body)"},children:[s.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"12px 16px",borderBottom:"1px solid var(--bd)",flexShrink:0},children:[s.jsx("span",{style:{fontSize:14,fontWeight:600,color:"var(--tx)"},children:"Ask AI"}),s.jsx("button",{"data-testid":"ai-chat-close",onClick:()=>E(!1),"aria-label":"Close AI chat",style:{background:"none",border:"none",color:"var(--txM)",cursor:"pointer",display:"flex",padding:4},children:s.jsx(qh,{})})]}),s.jsxs("div",{style:{flex:1,overflow:"auto",padding:"12px 16px"},children:[!At&&s.jsxs("div",{"data-testid":"ai-chat-no-key",style:{textAlign:"center",color:"var(--txM)",fontSize:13,padding:"24px 8px",lineHeight:1.6},children:[s.jsx("p",{style:{marginBottom:8,fontWeight:500,color:"var(--tx)"},children:"AI not configured"}),s.jsxs("p",{style:{marginBottom:8},children:["To enable AI chat, set the ",s.jsx("code",{style:{fontFamily:"var(--font-code)",fontSize:"0.88em",background:"var(--cdBg)",padding:"0.15em 0.4em",borderRadius:4},children:"apiKeyEnv"})," in ",s.jsx("code",{style:{fontFamily:"var(--font-code)",fontSize:"0.88em",background:"var(--cdBg)",padding:"0.15em 0.4em",borderRadius:4},children:"tome.config.js"})," and provide the environment variable at build time."]}),s.jsxs("p",{style:{fontSize:11.5,color:"var(--txM)"},children:["Example: ",s.jsx("code",{style:{fontFamily:"var(--font-code)",fontSize:"0.88em",background:"var(--cdBg)",padding:"0.15em 0.4em",borderRadius:4},children:"TOME_AI_KEY=sk-... tome build"})]})]}),M.map((Q,Y)=>s.jsx("div",{"data-testid":`ai-chat-message-${Q.role}`,style:{marginBottom:12,display:"flex",justifyContent:Q.role==="user"?"flex-end":"flex-start"},children:s.jsx("div",{style:{maxWidth:"85%",padding:"8px 12px",borderRadius:10,fontSize:13,lineHeight:1.55,whiteSpace:"pre-wrap",wordBreak:"break-word",background:Q.role==="user"?"var(--ac)":"var(--cdBg)",color:Q.role==="user"?"#fff":"var(--tx)"},children:Q.content})},Y)),G&&s.jsx("div",{"data-testid":"ai-chat-loading",style:{display:"flex",justifyContent:"flex-start",marginBottom:12},children:s.jsx("div",{style:{padding:"8px 12px",borderRadius:10,fontSize:13,background:"var(--cdBg)",color:"var(--txM)"},children:"Thinking..."})}),K&&s.jsx("div",{"data-testid":"ai-chat-error",style:{padding:"8px 12px",borderRadius:8,fontSize:12,background:"rgba(220,50,50,0.1)",color:"#d44",marginBottom:12},children:K}),s.jsx("div",{ref:xt})]}),s.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"10px 12px",borderTop:"1px solid var(--bd)",flexShrink:0},children:[s.jsx("input",{ref:Dt,"data-testid":"ai-chat-input",value:C,onChange:Q=>y(Q.target.value),onKeyDown:ct,placeholder:At?"Ask a question...":"API key required",disabled:!At,style:{flex:1,background:"var(--cdBg)",border:"1px solid var(--bd)",borderRadius:8,padding:"8px 12px",color:"var(--tx)",fontSize:13,fontFamily:"var(--font-body)",outline:"none"}}),s.jsx("button",{"data-testid":"ai-chat-send",onClick:I,disabled:!At||!C.trim()||G,"aria-label":"Send message",style:{width:34,height:34,borderRadius:8,background:At&&C.trim()?"var(--ac)":"var(--cdBg)",color:At&&C.trim()?"#fff":"var(--txM)",border:"none",cursor:At&&C.trim()?"pointer":"default",display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0},children:s.jsx(Lh,{})})]})]}):s.jsx("button",{"data-testid":"ai-chat-button",onClick:()=>E(!0),"aria-label":"Open AI chat",style:{position:"fixed",bottom:24,right:24,zIndex:900,width:48,height:48,borderRadius:"50%",background:"var(--ac)",color:"#fff",border:"none",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",boxShadow:"0 4px 16px rgba(0,0,0,0.25)",transition:"transform 0.15s"},children:s.jsx(Nh,{})})}function Qh(u){const h=/^#([0-9a-f]{6})$/i.exec(u.trim());if(!h)return null;const d=parseInt(h[1],16);return[d>>16&255,d>>8&255,d&255]}function Vh(u,h){const d=Qh(u);if(!d)return null;const[c,v,E]=d,M=`rgba(${c},${v},${E},${h?.12:.08})`,O=h?1.15:.85,C=Math.min(255,Math.round(c*O)),y=Math.min(255,Math.round(v*O)),G=Math.min(255,Math.round(E*O)),R=`rgb(${C},${y},${G})`;return{ac:u,acD:M,acT:R}}const je=({d:u,size:h=16})=>s.jsx("svg",{width:h,height:h,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:s.jsx("path",{d:u})}),rm=()=>s.jsx(je,{d:"M11 19a8 8 0 1 0 0-16 8 8 0 0 0 0 16ZM21 21l-4.3-4.3"}),Pd=()=>s.jsx(je,{d:"M9 18l6-6-6-6",size:14}),Vu=()=>s.jsx(je,{d:"M6 9l6 6 6-6",size:14}),Zh=()=>s.jsx(je,{d:"M3 12h18M3 6h18M3 18h18",size:20}),Jh=()=>s.jsx(je,{d:"M18 6L6 18M6 6l12 12",size:18}),tm=()=>s.jsx(je,{d:"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"}),em=()=>s.jsx(je,{d:"M12 8a4 4 0 1 0 0 8 4 4 0 0 0 0-8Zm0-4a1 1 0 0 1 1-1v-1a1 1 0 0 1-2 0v1a1 1 0 0 1 1 1Zm0 16a1 1 0 0 1 1 1v1a1 1 0 0 1-2 0v-1a1 1 0 0 1 1-1ZM4 12a1 1 0 0 1-1 1H2a1 1 0 0 1 0-2h1a1 1 0 0 1 1 1Zm18-1h-1a1 1 0 0 1 0 2h1a1 1 0 0 1 0-2ZM6.34 6.34a1 1 0 0 1-1.41 0l-.71-.71a1 1 0 0 1 1.41-1.41l.71.71a1 1 0 0 1 0 1.41Zm12.73-2.12-.71.71a1 1 0 0 1-1.41-1.41l.71-.71a1 1 0 1 1 1.41 1.41ZM6.34 17.66l-.71.71a1 1 0 0 1-1.41-1.41l.71-.71a1 1 0 0 1 1.41 1.41Zm12.73 2.12-.71-.71a1 1 0 0 1 1.41-1.41l.71.71a1 1 0 0 1-1.41 1.41Z"}),nm=()=>s.jsx(je,{d:"M19 12H5M12 19l-7-7 7-7",size:14}),am=()=>s.jsx(je,{d:"M5 12h14M12 5l7 7-7 7",size:14}),Wh=()=>s.jsx(je,{d:"M17 3a2.83 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z",size:13});function Fh(u){const h=new Date(u),c=new Date().getTime()-h.getTime();if(isNaN(c))return"";const v=Math.floor(c/1e3),E=Math.floor(v/60),M=Math.floor(E/60),O=Math.floor(M/24),C=Math.floor(O/30),y=Math.floor(O/365);return v<60?"just now":E<60?`${E} minute${E===1?"":"s"} ago`:M<24?`${M} hour${M===1?"":"s"} ago`:O<30?`${O} day${O===1?"":"s"} ago`:C<12?`${C} month${C===1?"":"s"} ago`:y>=1?`${y} year${y===1?"":"s"} ago`:h.toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"})}let ul=null;const $h="/_pagefind/pagefind.js";async function Ih(){if(ul)return ul;try{return ul=await import($h),await ul.init(),ul}catch{return null}}let ko=null;function Ph(){return ko||(ko=Lt(()=>import("./theme-BIHI7g3E.js"),[]).catch(()=>null),ko)}function tg({appId:u,apiKey:h,indexName:d,onNavigate:c,onClose:v,basePath:E=""}){const[M,O]=B.useState(null),[C,y]=B.useState(!1);B.useEffect(()=>{Ph().then(R=>{R&&R.DocSearch?O(()=>R.DocSearch):R&&R.default?O(()=>R.default):y(!0)})},[]);const G=B.useCallback(R=>{try{let nt=new URL(R,"http://localhost").pathname;if(E){const xt=E.replace(/\/$/,"");nt.startsWith(xt)&&(nt=nt.slice(xt.length))}return nt.replace(/^\//,"").replace(/\/index\.html$/,"").replace(/\.html$/,"")||"index"}catch{return"index"}},[E]);return C?s.jsx("div",{onClick:v,style:{position:"fixed",inset:0,zIndex:1e3,background:"rgba(0,0,0,0.55)",backdropFilter:"blur(6px)",display:"flex",alignItems:"flex-start",justifyContent:"center",paddingTop:"12vh"},children:s.jsx("div",{onClick:R=>R.stopPropagation(),style:{background:"var(--sf)",border:"1px solid var(--bd)",borderRadius:12,width:"100%",maxWidth:520,boxShadow:"0 24px 80px rgba(0,0,0,0.4)",padding:"32px 18px",textAlign:"center",color:"var(--txM)",fontSize:14},children:"Algolia DocSearch is not available. Install @docsearch/react to enable it."})}):M?s.jsx("div",{"data-testid":"algolia-search-modal",children:s.jsx(M,{appId:u,apiKey:h,indexName:d,navigator:{navigate({itemUrl:R}){const K=G(R);c(K)}},hitComponent:({hit:R,children:K})=>s.jsx("a",{href:R.url,onClick:nt=>{nt.preventDefault();const xt=G(R.url);c(xt)},children:K})})}):s.jsx("div",{onClick:v,style:{position:"fixed",inset:0,zIndex:1e3,background:"rgba(0,0,0,0.55)",backdropFilter:"blur(6px)",display:"flex",alignItems:"flex-start",justifyContent:"center",paddingTop:"12vh"},children:s.jsx("div",{style:{background:"var(--sf)",border:"1px solid var(--bd)",borderRadius:12,width:"100%",maxWidth:520,boxShadow:"0 24px 80px rgba(0,0,0,0.4)",padding:"32px 18px",textAlign:"center",color:"var(--txM)",fontSize:14},children:"Loading search..."})})}const eg=()=>s.jsx(je,{d:"M12 8v4l3 3m6-3a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z",size:14}),ng=()=>s.jsx(je,{d:"M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18ZM3.6 9h16.8M3.6 15h16.8M12 3a15 15 0 0 1 4 9 15 15 0 0 1-4 9 15 15 0 0 1-4-9 15 15 0 0 1 4-9Z",size:14}),ag=()=>s.jsx(je,{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6M15 3h6v6M10 14L21 3",size:11}),lg={github:"M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z",twitter:"M12.6.75h2.454l-5.36 6.142L16 15.25h-4.937l-3.867-5.07-4.425 5.07H.316l5.733-6.57L0 .75h5.063l3.495 4.633L12.601.75Zm-.86 13.028h1.36L4.323 2.145H2.865l8.875 11.633Z",discord:"M13.545 2.907a13.227 13.227 0 00-3.257-1.011.05.05 0 00-.052.025c-.141.25-.297.577-.406.833a12.19 12.19 0 00-3.658 0 8.258 8.258 0 00-.412-.833.051.051 0 00-.052-.025c-1.125.194-2.22.534-3.257 1.011a.041.041 0 00-.021.018C.356 6.024-.213 9.047.066 12.032c.001.014.01.028.021.037a13.276 13.276 0 003.995 2.02.05.05 0 00.056-.019c.308-.42.582-.863.818-1.329a.05.05 0 00-.028-.07 8.735 8.735 0 01-1.248-.595.05.05 0 01-.005-.083c.084-.063.168-.129.248-.195a.05.05 0 01.051-.007c2.619 1.196 5.454 1.196 8.041 0a.052.052 0 01.053.007c.08.066.164.132.248.195a.051.051 0 01-.004.085c-.399.232-.813.431-1.249.594a.05.05 0 00-.03.07c.24.465.515.909.817 1.329a.05.05 0 00.056.019 13.235 13.235 0 004.001-2.02.049.049 0 00.021-.037c.334-3.451-.559-6.449-2.366-9.106a.034.034 0 00-.02-.019z",linkedin:"M0 1.146C0 .513.526 0 1.175 0h13.65C15.474 0 16 .513 16 1.146v13.708c0 .633-.526 1.146-1.175 1.146H1.175C.526 16 0 15.487 0 14.854V1.146zm4.943 12.248V6.169H2.542v7.225h2.401zm-1.2-8.212c.837 0 1.358-.554 1.358-1.248-.015-.709-.52-1.248-1.342-1.248-.822 0-1.359.54-1.359 1.248 0 .694.521 1.248 1.327 1.248h.016zm4.908 8.212V9.359c0-.216.016-.432.08-.586.173-.431.568-.878 1.232-.878.869 0 1.216.662 1.216 1.634v3.865h2.401V9.25c0-2.22-1.184-3.252-2.764-3.252-1.274 0-1.845.7-2.165 1.193v.025h-.016a5.54 5.54 0 01.016-.025V6.169h-2.4c.03.678 0 7.225 0 7.225h2.4z",youtube:"M8.051 1.999h.089c.822.003 4.987.033 6.11.335a2.01 2.01 0 011.415 1.42c.101.38.172.883.22 1.402l.01.104.022.26.008.104c.065.914.073 1.77.074 1.957v.075c-.001.194-.01 1.108-.082 2.06l-.008.105-.009.104c-.05.572-.124 1.14-.235 1.558a2.007 2.007 0 01-1.415 1.42c-1.16.312-5.569.334-6.18.335h-.142c-.309 0-1.587-.006-2.927-.052l-.17-.006-.087-.004-.171-.007-.171-.007c-1.11-.049-2.167-.128-2.654-.26a2.007 2.007 0 01-1.415-1.419c-.111-.417-.185-.986-.235-1.558L.09 9.82l-.008-.104A31.4 31.4 0 010 7.68v-.123c.002-.215.01-.958.064-1.778l.007-.103.003-.052.008-.104.022-.26.01-.104c.048-.519.119-1.023.22-1.402a2.007 2.007 0 011.415-1.42c.487-.13 1.544-.21 2.654-.26l.17-.007.172-.006.086-.003.171-.007A99.788 99.788 0 017.858 2h.193zM6.4 5.209v4.818l4.157-2.408L6.4 5.209z",mastodon:"M11.19 12.195c2.016-.24 3.77-1.475 3.99-2.603.348-1.778.32-4.339.32-4.339 0-3.47-2.286-4.488-2.286-4.488C12.062.238 10.083.017 8.027 0h-.05C5.92.017 3.942.238 2.79.765 2.79.765.504 1.783.504 5.253c-.005.995-.01 2.19.013 3.44.075 4.21.56 8.354 3.383 9.386 1.302.476 2.418.576 3.317.507 1.628-.125 2.541-.8 2.541-.8l-.054-1.182s-1.163.366-2.47.322c-1.293-.044-2.658-.138-2.867-1.716a3.23 3.23 0 01-.028-.465s1.27.31 2.879.384c.984.045 1.905-.058 2.842-.17zM13 8.59V5.319c0-.67-.17-1.2-.507-1.592-.348-.4-.806-.605-1.373-.605-.656 0-1.154.252-1.486.756L9.2 4.595l-.434-.717c-.332-.504-.83-.756-1.486-.756-.567 0-1.025.204-1.373.605-.338.392-.507.923-.507 1.592V8.59h1.69V5.468c0-.67.285-1.012.855-1.012.63 0 .946.404.946 1.204V7.11h1.682V5.66c0-.8.316-1.204.946-1.204.57 0 .855.342.855 1.012V8.59H13z",bluesky:"M3.468 1.948C5.303 3.325 7.276 6.118 8 7.616c.724-1.498 2.697-4.29 4.532-5.668C13.855 1.013 16 .638 16 3.14c0 .5-.286 4.2-.454 4.8-.585 2.093-2.716 2.628-4.544 2.305 3.195.564 4.007 2.433 2.25 4.302-3.337 3.548-4.8-1.244-5.252-2.547 0 0-.116-.334-.166-.334h.332C8.166 11.666 8.05 12 8.05 12c-.452 1.303-1.916 6.095-5.252 2.547-1.756-1.869-.946-3.738 2.25-4.302-1.829.323-3.96-.212-4.544-2.305C.336 7.34.05 3.64.05 3.14.05.638 2.195 1.013 3.468 1.948z"},ig=({platform:u,customIcon:h})=>{const d=u==="custom"&&h?h:lg[u];return d?s.jsx("svg",{width:16,height:16,viewBox:"0 0 16 16",fill:"currentColor",children:s.jsx("path",{d})}):null},og={Added:"#22c55e",Changed:"#3b82f6",Deprecated:"#f59e0b",Removed:"#ef4444",Fixed:"#8b5cf6",Security:"#f97316"};function sg({entries:u}){const[h,d]=B.useState(u.length<=5),c=h?u:u.slice(0,5);return s.jsxs("div",{"data-testid":"changelog-timeline",style:{position:"relative"},children:[s.jsx("div",{style:{position:"absolute",left:15,top:8,bottom:8,width:2,background:"var(--bd)"}}),c.map((v,E)=>s.jsxs("div",{"data-testid":`changelog-entry-${v.version}`,style:{position:"relative",paddingLeft:44,paddingBottom:E{const O=og[M.type]||"#6b7280";return s.jsxs("div",{style:{marginBottom:16},children:[s.jsxs("div",{style:{display:"inline-flex",alignItems:"center",gap:6,marginBottom:8},children:[s.jsx("span",{style:{display:"inline-block",width:8,height:8,borderRadius:"50%",background:O}}),s.jsx("span",{style:{fontSize:12,fontWeight:600,textTransform:"uppercase",letterSpacing:".06em",color:O,fontFamily:"var(--font-code, monospace)"},children:M.type})]}),s.jsx("ul",{style:{margin:0,paddingLeft:18,listStyleType:"disc",color:"var(--tx2)"},children:M.items.map((C,y)=>s.jsx("li",{style:{fontSize:14,lineHeight:1.7,color:"var(--tx2)",marginBottom:2},children:C},y))})]},M.type)})]},v.version)),!h&&u.length>5&&s.jsx("div",{style:{textAlign:"center",marginTop:24},children:s.jsxs("button",{"data-testid":"changelog-show-more",onClick:()=>d(!0),style:{background:"none",border:"1px solid var(--bd)",borderRadius:2,padding:"8px 20px",color:"var(--tx2)",fontSize:13,fontFamily:"var(--font-body, inherit)",cursor:"pointer"},children:["Show all ",u.length," releases"]})})]})}function ug(u,h,d){if(h==="index")return[];for(const c of u)if(c.pages.find(E=>E.id===h)){const E=[],M=c.pages[0];return E.push({label:c.section,href:M?M.urlPath:null}),E.push({label:d,href:null}),E}return[]}function rg({config:u,navigation:h,currentPageId:d,pageHtml:c,pageComponent:v,mdxComponents:E,pageTitle:M,pageDescription:O,headings:C,tocEnabled:y=!0,editUrl:G,lastUpdated:R,changelogEntries:K,apiManifest:nt,apiBaseUrl:xt,apiPlayground:Dt,apiAuth:At,ApiReferenceComponent:W,onNavigate:I,allPages:ct,versioning:Q,currentVersion:Y,i18n:H,currentLocale:U,docContext:at,basePath:lt="",isDraft:P,dir:mt,overrides:tt}){var za,En,fi,dl,ml,pl,Ca,ja,hl,gl,qe,Qt,ne,tn,Aa,di,mi,vl,zn;const Mt=U||(H==null?void 0:H.defaultLocale)||"en",$t=mt||((za=H==null?void 0:H.localeDirs)==null?void 0:za[Mt])||"ltr",ft=$t==="rtl",j=((En=u.theme)==null?void 0:En.mode)||"auto",[w,Z]=B.useState(()=>{var b;return j==="dark"?!0:j==="light"?!1:((b=window.matchMedia)==null?void 0:b.call(window,"(prefers-color-scheme: dark)").matches)??!1}),[J,Tt]=B.useState(()=>typeof window<"u"&&window.innerWidth<768),[m,_]=B.useState(()=>typeof window<"u"&&window.innerWidth>=768),[N,L]=B.useState(!1),[it,rt]=B.useState(!1),[Et,It]=B.useState(!1),[Ut,Ze]=B.useState(null),[pa,ha]=B.useState({}),[rl,Je]=B.useState(()=>{var b;if(!((b=u.banner)!=null&&b.text))return!0;try{const q=Array.from(u.banner.text).reduce((et,dt)=>(et<<5)-et+dt.charCodeAt(0)|0,0).toString(36);return localStorage.getItem("tome-banner-dismissed")===q}catch{return!1}}),cl=Q&&Y&&Y!==Q.current,[ga,Do]=B.useState(h.map(b=>b.section)),We=B.useRef(null),Fn=B.useRef(null),fl=B.useRef(""),[va,Oo]=B.useState(()=>typeof window<"u"&&window.innerWidth>1100),si=((fi=u.theme)==null?void 0:fi.preset)||"amber",se=((dl=Mo[si])==null?void 0:dl[w?"dark":"light"])||Mo.amber.dark,ui=(ml=u.theme)!=null&&ml.accent?Vh(u.theme.accent,w):null,te=ui?{...se,...ui}:se,ya=((pl=Mo[si])==null?void 0:pl.fonts)||Mo.amber.fonts,xn={heading:((ja=(Ca=u.theme)==null?void 0:Ca.fonts)==null?void 0:ja.heading)||ya.heading,body:((gl=(hl=u.theme)==null?void 0:hl.fonts)==null?void 0:gl.body)||ya.body,code:((Qt=(qe=u.theme)==null?void 0:qe.fonts)==null?void 0:Qt.code)||ya.code};B.useEffect(()=>{if(j!=="auto")return;const b=window.matchMedia("(prefers-color-scheme: dark)"),q=et=>Z(et.matches);return b.addEventListener("change",q),()=>b.removeEventListener("change",q)},[j]),B.useEffect(()=>{document.documentElement.classList.toggle("dark",w)},[w]),B.useEffect(()=>{const b=()=>{const q=window.innerWidth;Oo(q>1100),Tt(q<768)};return b(),window.addEventListener("resize",b),()=>window.removeEventListener("resize",b)},[]),B.useEffect(()=>{if(J&&m)return document.body.style.overflow="hidden",()=>{document.body.style.overflow=""}},[J,m]),B.useEffect(()=>{var b;(b=We.current)==null||b.scrollTo(0,0)},[d]),B.useEffect(()=>{const b=We.current;if(!b)return;const q=et=>{const dt=et.target;dt.tagName==="IMG"&&dt.closest(".tome-content")&&Ze(dt.src)};return b.addEventListener("click",q),()=>b.removeEventListener("click",q)},[]),B.useEffect(()=>{const b=We.current;if(!b)return;const q=et=>{const dt=et.target.closest("a");if(!dt)return;const St=dt.getAttribute("href");if(!St||St.startsWith("http://")||St.startsWith("https://")||St.startsWith("mailto:")||St.startsWith("tel:")||St.startsWith("//")||St.startsWith("#"))return;et.preventDefault();let yt=St.replace(/^\.\//,"").replace(/^\//,"").replace(/\.mdx?$/,"").replace(/\/$/,"");if(lt){const ce=lt.replace(/^\//,"").replace(/\/$/,"");ce&&yt.startsWith(ce+"/")?yt=yt.slice(ce.length+1):ce&&yt===ce&&(yt="index")}yt||(yt="index"),I(yt)};return b.addEventListener("click",q),()=>b.removeEventListener("click",q)},[I,lt]),B.useEffect(()=>{if(!Ut)return;const b=q=>{q.key==="Escape"&&Ze(null)};return window.addEventListener("keydown",b),()=>window.removeEventListener("keydown",b)},[Ut]);const Sn=u.toc,ri=(Sn==null?void 0:Sn.depth)??3,ba=(Sn==null?void 0:Sn.enabled)!==!1&&y,ye=C.filter(b=>b.depth<=ri),[ue,Ae]=B.useState("");B.useEffect(()=>{if(!ba||ye.length<2)return;const b=We.current;if(!b)return;const q=setTimeout(()=>{const et=[];for(const St of ye){const yt=b.querySelector(`#${CSS.escape(St.id)}`);yt&&et.push(yt)}if(et.length===0)return;const dt=new IntersectionObserver(St=>{const yt=St.filter(ce=>ce.isIntersecting).sort((ce,pi)=>ce.boundingClientRect.top-pi.boundingClientRect.top);yt.length>0&&Ae(yt[0].target.id)},{root:b,rootMargin:"0px 0px -80% 0px",threshold:0});for(const St of et)dt.observe(St);ee.current=dt},100);return()=>{var et;clearTimeout(q),(et=ee.current)==null||et.disconnect(),ee.current=null}},[d,ba,ye.map(b=>b.id).join(",")]);const ee=B.useRef(null);B.useEffect(()=>{Ae("")},[d]),B.useLayoutEffect(()=>{if(!Fn.current||!c)return;const b=c.replace(/]*>[\s\S]*?<\/h1>\s*/,"");Fn.current.innerHTML=b,fl.current=b},[c,d]);const ci=B.useCallback((b,q)=>{b.preventDefault();const et=We.current;if(!et)return;const dt=et.querySelector(`#${CSS.escape(q)}`);dt&&(dt.scrollIntoView({behavior:"smooth",block:"start"}),Ae(q))},[]);B.useEffect(()=>{const b=q=>{(q.metaKey||q.ctrlKey)&&q.key==="k"&&(q.preventDefault(),L(!0)),q.key==="Escape"&&L(!1)};return window.addEventListener("keydown",b),()=>window.removeEventListener("keydown",b)},[]);const xa=h.flatMap(b=>b.pages),Sa=xa.findIndex(b=>b.id===d),Fe=Sa>0?xa[Sa-1]:null,$e=SaDo(q=>q.includes(b)?q.filter(et=>et!==b):[...q,b]),Ta={"--bg":te.bg,"--sf":te.sf,"--sfH":te.sfH,"--bd":te.bd,"--tx":te.tx,"--tx2":te.tx2,"--txM":te.txM,"--ac":te.ac,"--acD":te.acD,"--acT":te.acT,"--cdBg":te.cdBg,"--cdTx":te.cdTx,"--sbBg":te.sbBg,"--hdBg":te.hdBg,"--font-heading":`"${xn.heading}", serif`,"--font-body":`"${xn.body}", sans-serif`,"--font-code":`"${xn.code}", monospace`},Tn=v,Ne=(ne=u.banner)==null?void 0:ne.link,Ea=Ne?Ne.startsWith("#")||lt&&Ne.startsWith(lt+"/"):!1;return s.jsxs("div",{dir:$t,className:"tome-grain",style:{...Ta,color:"var(--tx)",background:"var(--bg)",fontFamily:"var(--font-body)",height:"100vh",overflow:"clip"},children:[((tn=u.banner)==null?void 0:tn.text)&&!rl&&s.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",gap:12,background:"var(--ac)",color:"#fff",padding:"8px 16px",fontSize:13,fontFamily:"var(--font-body)",fontWeight:500,textAlign:"center",width:"100vw",boxSizing:"border-box"},children:[u.banner.link?s.jsx("a",{href:Ea&&Ne.startsWith("#")?lt+"/"+Ne.slice(1):Ne,...Ea?{}:{target:"_blank",rel:"noopener noreferrer"},style:{color:"#fff",textDecoration:"underline"},onClick:Ea?b=>{b.preventDefault();const q=lt.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),et=Ne.startsWith("#")?Ne.slice(1):Ne.replace(new RegExp("^"+q+"/?"),"");I(et||"index")}:void 0,children:u.banner.text}):s.jsx("span",{children:u.banner.text}),u.banner.dismissible!==!1&&s.jsx("button",{onClick:()=>{Je(!0);try{const b=Array.from(u.banner.text).reduce((q,et)=>(q<<5)-q+et.charCodeAt(0)|0,0).toString(36);localStorage.setItem("tome-banner-dismissed",b)}catch{}},"aria-label":"Dismiss banner",style:{background:"none",border:"none",color:"#fff",cursor:"pointer",fontSize:16,lineHeight:1,padding:0,opacity:.8},children:"×"})]}),N&&((Aa=u.search)==null?void 0:Aa.provider)==="algolia"&&u.search.appId&&u.search.apiKey&&u.search.indexName?s.jsx(tg,{appId:u.search.appId,apiKey:u.search.apiKey,indexName:u.search.indexName,onNavigate:b=>{I(b),L(!1)},onClose:()=>L(!1),basePath:lt}):N?s.jsx(cg,{allPages:ct,onNavigate:b=>{I(b),L(!1)},onClose:()=>L(!1),mobile:J}):null,s.jsxs("div",{style:{display:"flex",flexDirection:ft?"row-reverse":"row",flex:1,height:(di=u.banner)!=null&&di.text&&!rl?"calc(100vh - 32px)":"100vh"},children:[J&&m&&s.jsx("div",{onClick:()=>_(!1),style:{position:"fixed",inset:0,zIndex:200,background:"rgba(0,0,0,0.4)",backdropFilter:"blur(2px)"}}),tt!=null&&tt.Sidebar?s.jsx(tt.Sidebar,{config:u,navigation:h,currentPageId:d,onNavigate:I,mobile:J,sbOpen:m,setSbOpen:_,versioning:Q,currentVersion:Y}):s.jsxs("aside",{style:{width:m?270:0,minWidth:m?270:0,background:"var(--sbBg)",[ft?"borderLeft":"borderRight"]:"1px solid var(--bd)",display:"flex",flexDirection:"column",transition:"width .2s, min-width .2s",overflow:"hidden",...J?{position:"fixed",top:0,[ft?"right":"left"]:0,bottom:0,zIndex:201}:{}},children:[s.jsxs("a",{href:"/",style:{padding:"18px 20px",display:"flex",alignItems:"baseline",gap:6,borderBottom:"1px solid var(--bd)",textDecoration:"none",color:"inherit"},children:[s.jsx("span",{style:{fontFamily:"var(--font-heading)",fontSize:22,fontWeight:700,fontStyle:"italic"},children:u.name}),s.jsx("span",{style:{width:5,height:5,borderRadius:"50%",background:"var(--ac)",display:"inline-block"}})]}),s.jsx("div",{style:{padding:"12px 14px"},children:s.jsxs("button",{onClick:()=>{L(!0),J&&_(!1)},style:{display:"flex",alignItems:"center",gap:8,width:"100%",background:"var(--cdBg)",border:"1px solid var(--bd)",borderRadius:2,padding:"8px 12px",cursor:"pointer",color:"var(--txM)",fontSize:12.5,fontFamily:"var(--font-body)"},children:[s.jsx(rm,{}),s.jsx("span",{style:{flex:1,textAlign:ft?"right":"left"},children:"Search..."}),s.jsx("kbd",{style:{fontFamily:"var(--font-code)",fontSize:9,background:"var(--sf)",border:"1px solid var(--bd)",borderRadius:2,padding:"2px 6px"},children:"⌘K"})]})}),s.jsx("nav",{style:{flex:1,overflow:"auto",padding:"4px 10px 20px"},children:h.map(b=>s.jsxs("div",{style:{marginBottom:8},children:[s.jsxs("button",{onClick:()=>Pe(b.section),style:{display:"flex",alignItems:"center",gap:6,width:"100%",background:"none",border:"none",padding:"8px 10px",cursor:"pointer",borderRadius:2,color:"var(--txM)",fontSize:10,fontWeight:600,textTransform:"uppercase",letterSpacing:".1em",fontFamily:"var(--font-code)"},children:[ga.includes(b.section)?s.jsx(Vu,{}):s.jsx(Pd,{}),b.section]}),ga.includes(b.section)&&s.jsx("div",{style:{[ft?"marginRight":"marginLeft"]:8,[ft?"borderRight":"borderLeft"]:"1px solid var(--bd)",[ft?"paddingRight":"paddingLeft"]:0},children:b.pages.map(q=>{const et=d===q.id;return s.jsxs("button",{onClick:()=>{I(q.id),J&&_(!1)},style:{display:"flex",alignItems:"center",gap:10,width:"100%",textAlign:ft?"right":"left",background:"none",border:"none",borderRadius:0,[ft?"borderRight":"borderLeft"]:et?"2px solid var(--ac)":"2px solid transparent",padding:"7px 14px",cursor:"pointer",color:et?"var(--ac)":"var(--tx2)",fontSize:13,fontWeight:et?500:400,fontFamily:"var(--font-body)",transition:"all .12s"},children:[q.title,q.badge&&(()=>{const dt={default:{bg:"var(--sf)",text:"var(--tx2)"},info:{bg:"rgba(59,130,246,0.15)",text:"rgb(59,130,246)"},success:{bg:"rgba(34,197,94,0.15)",text:"rgb(34,197,94)"},warning:{bg:"rgba(234,179,8,0.15)",text:"rgb(202,138,4)"},danger:{bg:"rgba(239,68,68,0.15)",text:"rgb(239,68,68)"}},St=dt[q.badge.variant||"default"]||dt.default;return s.jsx("span",{style:{fontSize:10,fontWeight:600,padding:"2px 6px",borderRadius:4,marginLeft:6,whiteSpace:"nowrap",background:St.bg,color:St.text},children:q.badge.text})})()]},q.id)})})]},b.section))}),Q&&J&&s.jsx("div",{style:{padding:"8px 16px",borderTop:"1px solid var(--bd)",display:"flex",gap:6},children:Q.versions.map(b=>s.jsxs("button",{onClick:()=>{const q=b===Q.current?"index":`${b}/index`;I(q)},style:{flex:1,padding:"3px 0",textAlign:"center",background:b===(Y||Q.current)?"var(--acD)":"var(--sf)",border:"1px solid var(--bd)",borderRadius:2,cursor:"pointer",color:b===(Y||Q.current)?"var(--ac)":"var(--tx2)",fontSize:11,fontFamily:"var(--font-code)",fontWeight:b===Q.current?600:400},children:[b,b===Q.current?" (latest)":""]},b))}),s.jsxs("div",{style:{padding:"12px 16px",borderTop:"1px solid var(--bd)",display:"flex",alignItems:"center",justifyContent:"space-between"},children:[j==="auto"?s.jsx("button",{"aria-label":w?"Switch to light mode":"Switch to dark mode",onClick:()=>Z(b=>!b),style:{background:"none",border:"none",color:"var(--txM)",cursor:"pointer",display:"flex"},children:w?s.jsx(em,{}):s.jsx(tm,{})}):s.jsx("div",{}),s.jsxs("span",{style:{fontSize:11,color:"var(--txM)",letterSpacing:.2},children:["Built with ","♡"," by Tome"]}),s.jsx("span",{style:{fontFamily:"var(--font-code)",fontSize:10,color:"var(--txM)"},children:"v0.5.0"})]})]}),s.jsxs("div",{style:{flex:1,display:"flex",flexDirection:"column",overflow:"hidden"},children:[tt!=null&&tt.Header?s.jsx(tt.Header,{config:u,navigation:h,currentPageId:d,onNavigate:I,mobile:J,sbOpen:m,setSbOpen:_,isDark:w,setDark:Z,versioning:Q,currentVersion:Y,i18n:H,currentLocale:U,onSearchOpen:()=>L(!0),basePath:lt}):s.jsxs("header",{style:{display:"flex",alignItems:"center",gap:J?8:12,padding:J?"8px 12px":"10px 24px",borderBottom:"1px solid var(--bd)",background:"var(--hdBg)",backdropFilter:"blur(12px)",maxWidth:"100vw",overflow:"visible",position:"relative",zIndex:200},children:[s.jsx("button",{"aria-label":m?"Close sidebar":"Open sidebar",onClick:()=>_(!m),style:{background:"none",border:"none",color:"var(--txM)",cursor:"pointer",display:"flex"},children:m?s.jsx(Jh,{}):s.jsx(Zh,{})}),J?s.jsx("span",{style:{fontSize:13,color:"var(--ac)",fontFamily:"var(--font-code)",flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:((mi=h.flatMap(b=>b.pages).find(b=>b.id===d))==null?void 0:mi.title)||""}):s.jsx("div",{style:{display:"flex",alignItems:"center",gap:8,fontFamily:"var(--font-code)",fontSize:11,color:"var(--txM)",letterSpacing:".03em",flex:1},children:h.map(b=>{const q=b.pages.find(et=>et.id===d);return q?s.jsxs("span",{style:{display:"flex",alignItems:"center",gap:8},children:[s.jsx("span",{children:b.section}),s.jsx(Pd,{}),s.jsx("span",{style:{color:"var(--ac)"},children:q.title})]},b.section):null})}),u.topNav&&u.topNav.length>0&&!J&&s.jsxs("div",{style:{display:"flex",alignItems:"center",gap:12},children:[u.topNav.map(b=>{const q=b.href.startsWith("#")||lt&&b.href.startsWith(lt+"/"),et=!q;return s.jsxs("a",{href:q&&b.href.startsWith("#")?lt+"/"+b.href.slice(1):b.href,...et?{target:"_blank",rel:"noopener noreferrer"}:{},onClick:q?dt=>{dt.preventDefault();const St=b.href.startsWith("#")?b.href.slice(1):b.href.replace(new RegExp("^"+lt.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")+"/?"),"");I(St)}:void 0,style:{display:"flex",alignItems:"center",gap:4,color:"var(--txM)",textDecoration:"none",fontSize:12,fontFamily:"var(--font-body)",fontWeight:500,transition:"color .15s"},onMouseOver:dt=>dt.currentTarget.style.color="var(--ac)",onMouseOut:dt=>dt.currentTarget.style.color="var(--txM)",children:[b.label,et&&s.jsx(ag,{})]},b.label)}),s.jsx("span",{style:{width:1,height:16,background:"var(--bd)"}})]}),u.socialLinks&&u.socialLinks.length>0&&!J&&s.jsx("div",{style:{display:"flex",alignItems:"center",gap:8},children:u.socialLinks.map(b=>s.jsx("a",{href:b.url,target:"_blank",rel:"noopener noreferrer","aria-label":b.label||b.platform,"data-testid":`social-link-${b.platform}`,style:{display:"flex",alignItems:"center",justifyContent:"center",color:"var(--tx2)",cursor:"pointer",transition:"color .15s"},onMouseOver:q=>q.currentTarget.style.color="var(--tx)",onMouseOut:q=>q.currentTarget.style.color="var(--tx2)",children:s.jsx(ig,{platform:b.platform,customIcon:b.icon})},b.url))}),J&&j==="auto"&&s.jsx("button",{"aria-label":w?"Switch to light mode":"Switch to dark mode",onClick:()=>Z(b=>!b),style:{background:"none",border:"none",color:"var(--txM)",cursor:"pointer",display:"flex",flexShrink:0},children:w?s.jsx(em,{}):s.jsx(tm,{})}),Q&&!J&&s.jsxs("div",{style:{position:"relative"},children:[s.jsxs("button",{"data-testid":"version-switcher",onClick:()=>rt(b=>!b),style:{display:"flex",alignItems:"center",gap:6,background:"var(--sf)",border:"1px solid var(--bd)",borderRadius:2,padding:"5px 10px",cursor:"pointer",color:"var(--tx2)",fontSize:12,fontFamily:"var(--font-code)"},children:[s.jsx(eg,{}),Y||Q.current,s.jsx(Vu,{})]}),it&&s.jsx("div",{"data-testid":"version-dropdown",style:{position:"absolute",top:"100%",right:0,marginTop:4,background:"var(--sf)",border:"1px solid var(--bd)",borderRadius:2,boxShadow:"0 8px 32px rgba(0,0,0,0.2)",overflow:"hidden",zIndex:100,minWidth:120},children:Q.versions.map(b=>s.jsxs("button",{onClick:()=>{rt(!1);const q=b===Q.current?"index":`${b}/index`;I(q)},style:{display:"block",width:"100%",textAlign:"left",background:b===(Y||Q.current)?"var(--acD)":"none",border:"none",padding:"8px 14px",cursor:"pointer",color:b===(Y||Q.current)?"var(--ac)":"var(--tx2)",fontSize:12,fontFamily:"var(--font-code)",fontWeight:b===Q.current?600:400},children:[b,b===Q.current?" (latest)":""]},b))})]}),H&&H.locales.length>1&&!J&&s.jsxs("div",{style:{position:"relative"},children:[s.jsxs("button",{"data-testid":"language-switcher",onClick:()=>It(b=>!b),style:{display:"flex",alignItems:"center",gap:6,background:"var(--sf)",border:"1px solid var(--bd)",borderRadius:2,padding:"5px 10px",cursor:"pointer",color:"var(--tx2)",fontSize:12,fontFamily:"var(--font-body)"},children:[s.jsx(ng,{}),((vl=H.localeNames)==null?void 0:vl[U||H.defaultLocale])||U||H.defaultLocale,s.jsx(Vu,{})]}),Et&&s.jsx("div",{"data-testid":"language-dropdown",style:{position:"absolute",top:"100%",right:0,marginTop:4,background:"var(--sf)",border:"1px solid var(--bd)",borderRadius:2,boxShadow:"0 8px 32px rgba(0,0,0,0.2)",overflow:"hidden",zIndex:100,minWidth:120},children:H.locales.map(b=>{var ce;const q=b===(U||H.defaultLocale),et=((ce=H.localeNames)==null?void 0:ce[b])||b,dt=U||H.defaultLocale;let St=d;dt!==H.defaultLocale&&d.startsWith(`${dt}/`)&&(St=d.slice(dt.length+1));const yt=b===H.defaultLocale?St:`${b}/${St}`;return s.jsx("button",{onClick:()=>{It(!1),I(yt)},style:{display:"block",width:"100%",textAlign:"left",background:q?"var(--acD)":"none",border:"none",padding:"8px 14px",cursor:"pointer",color:q?"var(--ac)":"var(--tx2)",fontSize:12,fontFamily:"var(--font-body)",fontWeight:q?600:400},children:et},b)})})]})]}),cl&&s.jsxs("div",{"data-testid":"old-version-banner",style:{display:"flex",alignItems:"center",justifyContent:"center",gap:8,background:"var(--acD)",borderBottom:"1px solid var(--bd)",padding:"8px 24px",fontSize:13,color:"var(--tx2)"},children:[s.jsxs("span",{children:["You're viewing docs for ",Y,"."]}),s.jsx("button",{onClick:()=>{I("index")},style:{background:"none",border:"none",color:"var(--ac)",cursor:"pointer",fontWeight:600,fontSize:13,fontFamily:"var(--font-body)",textDecoration:"underline"},children:"Switch to latest."})]}),s.jsxs("div",{ref:We,style:{flex:1,overflow:"auto",display:"flex"},children:[s.jsxs("main",{style:{flex:1,maxWidth:J?"100%":nt?1100:760,padding:J?"24px 16px 60px":"40px 48px 80px",margin:"0 auto",minWidth:0},children:[Ie.length>0&&s.jsx("nav",{"aria-label":"Breadcrumbs","data-testid":"breadcrumbs",style:{display:"flex",alignItems:"center",gap:6,fontSize:13,color:"var(--tx2)",marginBottom:8},children:Ie.map((b,q)=>s.jsxs(sm.Fragment,{children:[q>0&&s.jsx("span",{style:{color:"var(--tx2)",opacity:.5},children:"›"}),q{et.preventDefault();const dt=h.flatMap(St=>St.pages).find(St=>St.urlPath===b.href);dt&&I(dt.id)},style:{color:"var(--tx2)",textDecoration:"none",cursor:"pointer"},children:b.label}):s.jsx("span",{style:q===Ie.length-1?{color:"var(--tx)"}:void 0,children:b.label})]},q))}),s.jsx("h1",{style:{fontFamily:"var(--font-heading)",fontSize:J?26:38,fontWeight:400,fontStyle:"italic",lineHeight:1.15,marginBottom:8},children:M}),P&&s.jsx("div",{"data-testid":"draft-banner",style:{background:"#fef3c7",color:"#92400e",padding:"8px 16px",borderRadius:6,fontSize:13,marginBottom:16},children:"Draft — This page is only visible in development"}),O&&s.jsx("p",{style:{fontSize:16,color:"var(--tx2)",lineHeight:1.6,marginBottom:32},children:O}),s.jsx("div",{style:{borderTop:"1px solid var(--bd)",paddingTop:28},children:nt&&W?s.jsx(W,{manifest:nt,baseUrl:xt,showPlayground:Dt,playgroundAuth:At}):K&&K.length>0?s.jsx(sg,{entries:K}):Tn?s.jsx("div",{className:"tome-content",children:s.jsx(Tn,{components:E||{}})}):s.jsx("div",{className:"tome-content",ref:Fn},d)}),tt!=null&&tt.PageFooter?s.jsx(tt.PageFooter,{editUrl:G,lastUpdated:R,currentPageId:d,prev:Fe,next:$e,onNavigate:I,mobile:J}):s.jsxs(s.Fragment,{children:[(G||R)&&s.jsxs("div",{style:{marginTop:40,display:"flex",flexDirection:J?"column":"row",alignItems:J?"flex-start":"center",justifyContent:"space-between",gap:J?8:16},children:[G&&s.jsx("div",{"data-testid":"edit-page-link",children:s.jsxs("a",{href:G,target:"_blank",rel:"noopener noreferrer",style:{display:"inline-flex",alignItems:"center",gap:6,color:"var(--txM)",textDecoration:"none",fontSize:13,fontFamily:"var(--font-body)",transition:"color .15s"},onMouseOver:b=>b.currentTarget.style.color="var(--ac)",onMouseOut:b=>b.currentTarget.style.color="var(--txM)",children:[s.jsx(Wh,{})," Edit this page on GitHub"]})}),R&&s.jsxs("div",{"data-testid":"last-updated",style:{fontSize:12,color:"var(--txM)",fontFamily:"var(--font-body)"},children:["Last updated ",Fh(R)]})]}),s.jsx("div",{style:{display:"flex",alignItems:"center",gap:12,marginTop:24,padding:"12px 0"},children:pa[d]?s.jsx("span",{style:{fontSize:13,color:"var(--txM)",fontFamily:"var(--font-body)"},children:"Thanks for your feedback!"}):s.jsxs(s.Fragment,{children:[s.jsx("span",{style:{fontSize:13,color:"var(--txM)",fontFamily:"var(--font-body)"},children:"Was this helpful?"}),s.jsx("button",{onClick:()=>{ha(b=>({...b,[d]:!0}));try{localStorage.setItem(`tome-feedback-${d}`,"up")}catch{}},style:{background:"none",border:"1px solid var(--bd)",borderRadius:2,padding:"4px 10px",cursor:"pointer",fontSize:13,color:"var(--txM)",transition:"border-color .15s"},children:"👍"}),s.jsx("button",{onClick:()=>{ha(b=>({...b,[d]:!0}));try{localStorage.setItem(`tome-feedback-${d}`,"down")}catch{}},style:{background:"none",border:"1px solid var(--bd)",borderRadius:2,padding:"4px 10px",cursor:"pointer",fontSize:13,color:"var(--txM)",transition:"border-color .15s"},children:"👎"})]})}),s.jsxs("div",{style:{display:"flex",flexDirection:J?"column":"row",justifyContent:"space-between",marginTop:16,paddingTop:24,borderTop:"1px solid var(--bd)",gap:J?12:16},children:[Fe?s.jsxs("button",{onClick:()=>I(Fe.id),style:{display:"flex",alignItems:"center",gap:8,background:"none",border:"1px solid var(--bd)",borderRadius:2,padding:"10px 16px",cursor:"pointer",color:"var(--tx2)",fontSize:13,fontFamily:"var(--font-body)",transition:"border-color .15s, color .15s"},children:[ft?s.jsx(am,{}):s.jsx(nm,{})," ",Fe.title]}):s.jsx("div",{}),$e?s.jsxs("button",{onClick:()=>I($e.id),style:{display:"flex",alignItems:"center",gap:8,background:"none",border:"1px solid var(--bd)",borderRadius:2,padding:"10px 16px",cursor:"pointer",color:"var(--tx2)",fontSize:13,fontFamily:"var(--font-body)",transition:"border-color .15s, color .15s"},children:[$e.title," ",ft?s.jsx(nm,{}):s.jsx(am,{})]}):s.jsx("div",{})]})]})]}),tt!=null&&tt.Toc?ba&&ye.length>=2&&va&&s.jsx(tt.Toc,{headings:ye,activeHeadingId:ue,onScrollToHeading:ci}):ba&&ye.length>=2&&va&&s.jsxs("aside",{"data-testid":"toc-sidebar",style:{width:200,padding:ft?"40px 0 40px 16px":"40px 16px 40px 0",position:"sticky",top:0,alignSelf:"flex-start",flexShrink:0},children:[s.jsx("div",{style:{fontSize:10,fontWeight:600,textTransform:"uppercase",letterSpacing:".1em",color:"var(--txM)",marginBottom:12,fontFamily:"var(--font-code)"},children:"On this page"}),s.jsx("nav",{"aria-label":"Table of contents",style:{[ft?"borderRight":"borderLeft"]:"1px solid var(--bd)",[ft?"paddingRight":"paddingLeft"]:0},children:ye.map((b,q)=>{const et=ue===b.id;return s.jsx("a",{href:`#${b.id}`,onClick:dt=>ci(dt,b.id),"data-testid":`toc-link-${b.id}`,style:{display:"block",fontSize:12,color:et?"var(--ac)":"var(--txM)",fontWeight:et?500:400,textDecoration:"none",padding:"4px 12px",[ft?"paddingRight":"paddingLeft"]:12+(b.depth-2)*12,lineHeight:1.4,transition:"color .15s, font-weight .15s",[ft?"borderRight":"borderLeft"]:et?"2px solid var(--ac)":"2px solid transparent",[ft?"marginRight":"marginLeft"]:-1},children:b.text},q)})})]})]})]})]}),(tt==null?void 0:tt.Footer)&&s.jsx(tt.Footer,{config:u,navigation:h,currentPageId:d,onNavigate:I}),((zn=u.ai)==null?void 0:zn.enabled)&&s.jsx(Xh,{provider:u.ai.provider||"anthropic",model:u.ai.model,apiKey:typeof __TOME_AI_API_KEY__<"u"&&__TOME_AI_API_KEY__?__TOME_AI_API_KEY__:void 0,context:(at==null?void 0:at.map(b=>`## ${b.title} +${d}`}return h}async function Gh(u,h,d,c){var M,O,C;const v=await fetch("https://api.openai.com/v1/chat/completions",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${h}`},body:JSON.stringify({model:d,messages:[{role:"system",content:um(c)},...u.map(y=>({role:y.role,content:y.content}))]})});if(!v.ok){const y=await v.text();throw new Error(`OpenAI API error (${v.status}): ${y}`)}return((C=(O=(M=(await v.json()).choices)==null?void 0:M[0])==null?void 0:O.message)==null?void 0:C.content)||"No response."}async function Yh(u,h,d,c){var M,O;const v=await fetch("https://api.anthropic.com/v1/messages",{method:"POST",headers:{"Content-Type":"application/json","x-api-key":h,"anthropic-version":"2023-06-01","anthropic-dangerous-direct-browser-access":"true"},body:JSON.stringify({model:d,max_tokens:1024,system:um(c),messages:u.map(C=>({role:C.role,content:C.content}))})});if(!v.ok){const C=await v.text();throw new Error(`Anthropic API error (${v.status}): ${C}`)}return((O=(M=(await v.json()).content)==null?void 0:M[0])==null?void 0:O.text)||"No response."}function Kh(u){return u==="openai"?"gpt-4o-mini":"claude-sonnet-4-20250514"}function Xh({provider:u,model:h,apiKey:d,context:c}){const[v,E]=B.useState(!1),[M,O]=B.useState([]),[C,y]=B.useState(""),[G,R]=B.useState(!1),[K,nt]=B.useState(null),xt=B.useRef(null),Dt=B.useRef(null),At=d||(typeof window<"u"?window.__TOME_AI_API_KEY__:void 0),W=h||Kh(u);B.useEffect(()=>{var Q;(Q=xt.current)==null||Q.scrollIntoView({behavior:"smooth"})},[M]),B.useEffect(()=>{v&&setTimeout(()=>{var Q;return(Q=Dt.current)==null?void 0:Q.focus()},100)},[v]);const I=B.useCallback(async()=>{const Q=C.trim();if(!Q||G||!At)return;const Y={role:"user",content:Q},H=[...M,Y];O(H),y(""),R(!0),nt(null);try{let U;u==="openai"?U=await Gh(H,At,W,c):U=await Yh(H,At,W,c),O(at=>[...at,{role:"assistant",content:U}])}catch(U){nt(U instanceof Error?U.message:"Failed to get response")}finally{R(!1)}},[C,G,M,u,At,W,c]),ct=B.useCallback(Q=>{Q.key==="Enter"&&!Q.shiftKey&&(Q.preventDefault(),I())},[I]);return v?s.jsxs("div",{"data-testid":"ai-chat-panel",style:{position:"fixed",bottom:24,right:24,zIndex:900,width:380,maxWidth:"calc(100vw - 48px)",height:520,maxHeight:"calc(100vh - 48px)",background:"var(--sf)",border:"1px solid var(--bd)",borderRadius:12,boxShadow:"0 16px 64px rgba(0,0,0,0.3)",display:"flex",flexDirection:"column",overflow:"hidden",fontFamily:"var(--font-body)"},children:[s.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"12px 16px",borderBottom:"1px solid var(--bd)",flexShrink:0},children:[s.jsx("span",{style:{fontSize:14,fontWeight:600,color:"var(--tx)"},children:"Ask AI"}),s.jsx("button",{"data-testid":"ai-chat-close",onClick:()=>E(!1),"aria-label":"Close AI chat",style:{background:"none",border:"none",color:"var(--txM)",cursor:"pointer",display:"flex",padding:4},children:s.jsx(qh,{})})]}),s.jsxs("div",{style:{flex:1,overflow:"auto",padding:"12px 16px"},children:[!At&&s.jsxs("div",{"data-testid":"ai-chat-no-key",style:{textAlign:"center",color:"var(--txM)",fontSize:13,padding:"24px 8px",lineHeight:1.6},children:[s.jsx("p",{style:{marginBottom:8,fontWeight:500,color:"var(--tx)"},children:"AI not configured"}),s.jsxs("p",{style:{marginBottom:8},children:["To enable AI chat, set the ",s.jsx("code",{style:{fontFamily:"var(--font-code)",fontSize:"0.88em",background:"var(--cdBg)",padding:"0.15em 0.4em",borderRadius:4},children:"apiKeyEnv"})," in ",s.jsx("code",{style:{fontFamily:"var(--font-code)",fontSize:"0.88em",background:"var(--cdBg)",padding:"0.15em 0.4em",borderRadius:4},children:"tome.config.js"})," and provide the environment variable at build time."]}),s.jsxs("p",{style:{fontSize:11.5,color:"var(--txM)"},children:["Example: ",s.jsx("code",{style:{fontFamily:"var(--font-code)",fontSize:"0.88em",background:"var(--cdBg)",padding:"0.15em 0.4em",borderRadius:4},children:"TOME_AI_KEY=sk-... tome build"})]})]}),M.map((Q,Y)=>s.jsx("div",{"data-testid":`ai-chat-message-${Q.role}`,style:{marginBottom:12,display:"flex",justifyContent:Q.role==="user"?"flex-end":"flex-start"},children:s.jsx("div",{style:{maxWidth:"85%",padding:"8px 12px",borderRadius:10,fontSize:13,lineHeight:1.55,whiteSpace:"pre-wrap",wordBreak:"break-word",background:Q.role==="user"?"var(--ac)":"var(--cdBg)",color:Q.role==="user"?"#fff":"var(--tx)"},children:Q.content})},Y)),G&&s.jsx("div",{"data-testid":"ai-chat-loading",style:{display:"flex",justifyContent:"flex-start",marginBottom:12},children:s.jsx("div",{style:{padding:"8px 12px",borderRadius:10,fontSize:13,background:"var(--cdBg)",color:"var(--txM)"},children:"Thinking..."})}),K&&s.jsx("div",{"data-testid":"ai-chat-error",style:{padding:"8px 12px",borderRadius:8,fontSize:12,background:"rgba(220,50,50,0.1)",color:"#d44",marginBottom:12},children:K}),s.jsx("div",{ref:xt})]}),s.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"10px 12px",borderTop:"1px solid var(--bd)",flexShrink:0},children:[s.jsx("input",{ref:Dt,"data-testid":"ai-chat-input",value:C,onChange:Q=>y(Q.target.value),onKeyDown:ct,placeholder:At?"Ask a question...":"API key required",disabled:!At,style:{flex:1,background:"var(--cdBg)",border:"1px solid var(--bd)",borderRadius:8,padding:"8px 12px",color:"var(--tx)",fontSize:13,fontFamily:"var(--font-body)",outline:"none"}}),s.jsx("button",{"data-testid":"ai-chat-send",onClick:I,disabled:!At||!C.trim()||G,"aria-label":"Send message",style:{width:34,height:34,borderRadius:8,background:At&&C.trim()?"var(--ac)":"var(--cdBg)",color:At&&C.trim()?"#fff":"var(--txM)",border:"none",cursor:At&&C.trim()?"pointer":"default",display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0},children:s.jsx(Lh,{})})]})]}):s.jsx("button",{"data-testid":"ai-chat-button",onClick:()=>E(!0),"aria-label":"Open AI chat",style:{position:"fixed",bottom:24,right:24,zIndex:900,width:48,height:48,borderRadius:"50%",background:"var(--ac)",color:"#fff",border:"none",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",boxShadow:"0 4px 16px rgba(0,0,0,0.25)",transition:"transform 0.15s"},children:s.jsx(Nh,{})})}function Qh(u){const h=/^#([0-9a-f]{6})$/i.exec(u.trim());if(!h)return null;const d=parseInt(h[1],16);return[d>>16&255,d>>8&255,d&255]}function Vh(u,h){const d=Qh(u);if(!d)return null;const[c,v,E]=d,M=`rgba(${c},${v},${E},${h?.12:.08})`,O=h?1.15:.85,C=Math.min(255,Math.round(c*O)),y=Math.min(255,Math.round(v*O)),G=Math.min(255,Math.round(E*O)),R=`rgb(${C},${y},${G})`;return{ac:u,acD:M,acT:R}}const je=({d:u,size:h=16})=>s.jsx("svg",{width:h,height:h,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:s.jsx("path",{d:u})}),rm=()=>s.jsx(je,{d:"M11 19a8 8 0 1 0 0-16 8 8 0 0 0 0 16ZM21 21l-4.3-4.3"}),Pd=()=>s.jsx(je,{d:"M9 18l6-6-6-6",size:14}),Vu=()=>s.jsx(je,{d:"M6 9l6 6 6-6",size:14}),Zh=()=>s.jsx(je,{d:"M3 12h18M3 6h18M3 18h18",size:20}),Jh=()=>s.jsx(je,{d:"M18 6L6 18M6 6l12 12",size:18}),tm=()=>s.jsx(je,{d:"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"}),em=()=>s.jsx(je,{d:"M12 8a4 4 0 1 0 0 8 4 4 0 0 0 0-8Zm0-4a1 1 0 0 1 1-1v-1a1 1 0 0 1-2 0v1a1 1 0 0 1 1 1Zm0 16a1 1 0 0 1 1 1v1a1 1 0 0 1-2 0v-1a1 1 0 0 1 1-1ZM4 12a1 1 0 0 1-1 1H2a1 1 0 0 1 0-2h1a1 1 0 0 1 1 1Zm18-1h-1a1 1 0 0 1 0 2h1a1 1 0 0 1 0-2ZM6.34 6.34a1 1 0 0 1-1.41 0l-.71-.71a1 1 0 0 1 1.41-1.41l.71.71a1 1 0 0 1 0 1.41Zm12.73-2.12-.71.71a1 1 0 0 1-1.41-1.41l.71-.71a1 1 0 1 1 1.41 1.41ZM6.34 17.66l-.71.71a1 1 0 0 1-1.41-1.41l.71-.71a1 1 0 0 1 1.41 1.41Zm12.73 2.12-.71-.71a1 1 0 0 1 1.41-1.41l.71.71a1 1 0 0 1-1.41 1.41Z"}),nm=()=>s.jsx(je,{d:"M19 12H5M12 19l-7-7 7-7",size:14}),am=()=>s.jsx(je,{d:"M5 12h14M12 5l7 7-7 7",size:14}),Wh=()=>s.jsx(je,{d:"M17 3a2.83 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z",size:13});function Fh(u){const h=new Date(u),c=new Date().getTime()-h.getTime();if(isNaN(c))return"";const v=Math.floor(c/1e3),E=Math.floor(v/60),M=Math.floor(E/60),O=Math.floor(M/24),C=Math.floor(O/30),y=Math.floor(O/365);return v<60?"just now":E<60?`${E} minute${E===1?"":"s"} ago`:M<24?`${M} hour${M===1?"":"s"} ago`:O<30?`${O} day${O===1?"":"s"} ago`:C<12?`${C} month${C===1?"":"s"} ago`:y>=1?`${y} year${y===1?"":"s"} ago`:h.toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"})}let ul=null;const $h="/_pagefind/pagefind.js";async function Ih(){if(ul)return ul;try{return ul=await import($h),await ul.init(),ul}catch{return null}}let ko=null;function Ph(){return ko||(ko=Lt(()=>import("./theme-BIHI7g3E.js"),[]).catch(()=>null),ko)}function t0({appId:u,apiKey:h,indexName:d,onNavigate:c,onClose:v,basePath:E=""}){const[M,O]=B.useState(null),[C,y]=B.useState(!1);B.useEffect(()=>{Ph().then(R=>{R&&R.DocSearch?O(()=>R.DocSearch):R&&R.default?O(()=>R.default):y(!0)})},[]);const G=B.useCallback(R=>{try{let nt=new URL(R,"http://localhost").pathname;if(E){const xt=E.replace(/\/$/,"");nt.startsWith(xt)&&(nt=nt.slice(xt.length))}return nt.replace(/^\//,"").replace(/\/index\.html$/,"").replace(/\.html$/,"")||"index"}catch{return"index"}},[E]);return C?s.jsx("div",{onClick:v,style:{position:"fixed",inset:0,zIndex:1e3,background:"rgba(0,0,0,0.55)",backdropFilter:"blur(6px)",display:"flex",alignItems:"flex-start",justifyContent:"center",paddingTop:"12vh"},children:s.jsx("div",{onClick:R=>R.stopPropagation(),style:{background:"var(--sf)",border:"1px solid var(--bd)",borderRadius:12,width:"100%",maxWidth:520,boxShadow:"0 24px 80px rgba(0,0,0,0.4)",padding:"32px 18px",textAlign:"center",color:"var(--txM)",fontSize:14},children:"Algolia DocSearch is not available. Install @docsearch/react to enable it."})}):M?s.jsx("div",{"data-testid":"algolia-search-modal",children:s.jsx(M,{appId:u,apiKey:h,indexName:d,navigator:{navigate({itemUrl:R}){const K=G(R);c(K)}},hitComponent:({hit:R,children:K})=>s.jsx("a",{href:R.url,onClick:nt=>{nt.preventDefault();const xt=G(R.url);c(xt)},children:K})})}):s.jsx("div",{onClick:v,style:{position:"fixed",inset:0,zIndex:1e3,background:"rgba(0,0,0,0.55)",backdropFilter:"blur(6px)",display:"flex",alignItems:"flex-start",justifyContent:"center",paddingTop:"12vh"},children:s.jsx("div",{style:{background:"var(--sf)",border:"1px solid var(--bd)",borderRadius:12,width:"100%",maxWidth:520,boxShadow:"0 24px 80px rgba(0,0,0,0.4)",padding:"32px 18px",textAlign:"center",color:"var(--txM)",fontSize:14},children:"Loading search..."})})}const e0=()=>s.jsx(je,{d:"M12 8v4l3 3m6-3a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z",size:14}),n0=()=>s.jsx(je,{d:"M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18ZM3.6 9h16.8M3.6 15h16.8M12 3a15 15 0 0 1 4 9 15 15 0 0 1-4 9 15 15 0 0 1-4-9 15 15 0 0 1 4-9Z",size:14}),a0=()=>s.jsx(je,{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6M15 3h6v6M10 14L21 3",size:11}),l0={github:"M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z",twitter:"M12.6.75h2.454l-5.36 6.142L16 15.25h-4.937l-3.867-5.07-4.425 5.07H.316l5.733-6.57L0 .75h5.063l3.495 4.633L12.601.75Zm-.86 13.028h1.36L4.323 2.145H2.865l8.875 11.633Z",discord:"M13.545 2.907a13.227 13.227 0 00-3.257-1.011.05.05 0 00-.052.025c-.141.25-.297.577-.406.833a12.19 12.19 0 00-3.658 0 8.258 8.258 0 00-.412-.833.051.051 0 00-.052-.025c-1.125.194-2.22.534-3.257 1.011a.041.041 0 00-.021.018C.356 6.024-.213 9.047.066 12.032c.001.014.01.028.021.037a13.276 13.276 0 003.995 2.02.05.05 0 00.056-.019c.308-.42.582-.863.818-1.329a.05.05 0 00-.028-.07 8.735 8.735 0 01-1.248-.595.05.05 0 01-.005-.083c.084-.063.168-.129.248-.195a.05.05 0 01.051-.007c2.619 1.196 5.454 1.196 8.041 0a.052.052 0 01.053.007c.08.066.164.132.248.195a.051.051 0 01-.004.085c-.399.232-.813.431-1.249.594a.05.05 0 00-.03.07c.24.465.515.909.817 1.329a.05.05 0 00.056.019 13.235 13.235 0 004.001-2.02.049.049 0 00.021-.037c.334-3.451-.559-6.449-2.366-9.106a.034.034 0 00-.02-.019z",linkedin:"M0 1.146C0 .513.526 0 1.175 0h13.65C15.474 0 16 .513 16 1.146v13.708c0 .633-.526 1.146-1.175 1.146H1.175C.526 16 0 15.487 0 14.854V1.146zm4.943 12.248V6.169H2.542v7.225h2.401zm-1.2-8.212c.837 0 1.358-.554 1.358-1.248-.015-.709-.52-1.248-1.342-1.248-.822 0-1.359.54-1.359 1.248 0 .694.521 1.248 1.327 1.248h.016zm4.908 8.212V9.359c0-.216.016-.432.08-.586.173-.431.568-.878 1.232-.878.869 0 1.216.662 1.216 1.634v3.865h2.401V9.25c0-2.22-1.184-3.252-2.764-3.252-1.274 0-1.845.7-2.165 1.193v.025h-.016a5.54 5.54 0 01.016-.025V6.169h-2.4c.03.678 0 7.225 0 7.225h2.4z",youtube:"M8.051 1.999h.089c.822.003 4.987.033 6.11.335a2.01 2.01 0 011.415 1.42c.101.38.172.883.22 1.402l.01.104.022.26.008.104c.065.914.073 1.77.074 1.957v.075c-.001.194-.01 1.108-.082 2.06l-.008.105-.009.104c-.05.572-.124 1.14-.235 1.558a2.007 2.007 0 01-1.415 1.42c-1.16.312-5.569.334-6.18.335h-.142c-.309 0-1.587-.006-2.927-.052l-.17-.006-.087-.004-.171-.007-.171-.007c-1.11-.049-2.167-.128-2.654-.26a2.007 2.007 0 01-1.415-1.419c-.111-.417-.185-.986-.235-1.558L.09 9.82l-.008-.104A31.4 31.4 0 010 7.68v-.123c.002-.215.01-.958.064-1.778l.007-.103.003-.052.008-.104.022-.26.01-.104c.048-.519.119-1.023.22-1.402a2.007 2.007 0 011.415-1.42c.487-.13 1.544-.21 2.654-.26l.17-.007.172-.006.086-.003.171-.007A99.788 99.788 0 017.858 2h.193zM6.4 5.209v4.818l4.157-2.408L6.4 5.209z",mastodon:"M11.19 12.195c2.016-.24 3.77-1.475 3.99-2.603.348-1.778.32-4.339.32-4.339 0-3.47-2.286-4.488-2.286-4.488C12.062.238 10.083.017 8.027 0h-.05C5.92.017 3.942.238 2.79.765 2.79.765.504 1.783.504 5.253c-.005.995-.01 2.19.013 3.44.075 4.21.56 8.354 3.383 9.386 1.302.476 2.418.576 3.317.507 1.628-.125 2.541-.8 2.541-.8l-.054-1.182s-1.163.366-2.47.322c-1.293-.044-2.658-.138-2.867-1.716a3.23 3.23 0 01-.028-.465s1.27.31 2.879.384c.984.045 1.905-.058 2.842-.17zM13 8.59V5.319c0-.67-.17-1.2-.507-1.592-.348-.4-.806-.605-1.373-.605-.656 0-1.154.252-1.486.756L9.2 4.595l-.434-.717c-.332-.504-.83-.756-1.486-.756-.567 0-1.025.204-1.373.605-.338.392-.507.923-.507 1.592V8.59h1.69V5.468c0-.67.285-1.012.855-1.012.63 0 .946.404.946 1.204V7.11h1.682V5.66c0-.8.316-1.204.946-1.204.57 0 .855.342.855 1.012V8.59H13z",bluesky:"M3.468 1.948C5.303 3.325 7.276 6.118 8 7.616c.724-1.498 2.697-4.29 4.532-5.668C13.855 1.013 16 .638 16 3.14c0 .5-.286 4.2-.454 4.8-.585 2.093-2.716 2.628-4.544 2.305 3.195.564 4.007 2.433 2.25 4.302-3.337 3.548-4.8-1.244-5.252-2.547 0 0-.116-.334-.166-.334h.332C8.166 11.666 8.05 12 8.05 12c-.452 1.303-1.916 6.095-5.252 2.547-1.756-1.869-.946-3.738 2.25-4.302-1.829.323-3.96-.212-4.544-2.305C.336 7.34.05 3.64.05 3.14.05.638 2.195 1.013 3.468 1.948z"},i0=({platform:u,customIcon:h})=>{const d=u==="custom"&&h?h:l0[u];return d?s.jsx("svg",{width:16,height:16,viewBox:"0 0 16 16",fill:"currentColor",children:s.jsx("path",{d})}):null},o0={Added:"#22c55e",Changed:"#3b82f6",Deprecated:"#f59e0b",Removed:"#ef4444",Fixed:"#8b5cf6",Security:"#f97316"};function s0({entries:u}){const[h,d]=B.useState(u.length<=5),c=h?u:u.slice(0,5);return s.jsxs("div",{"data-testid":"changelog-timeline",style:{position:"relative"},children:[s.jsx("div",{style:{position:"absolute",left:15,top:8,bottom:8,width:2,background:"var(--bd)"}}),c.map((v,E)=>s.jsxs("div",{"data-testid":`changelog-entry-${v.version}`,style:{position:"relative",paddingLeft:44,paddingBottom:E{const O=o0[M.type]||"#6b7280";return s.jsxs("div",{style:{marginBottom:16},children:[s.jsxs("div",{style:{display:"inline-flex",alignItems:"center",gap:6,marginBottom:8},children:[s.jsx("span",{style:{display:"inline-block",width:8,height:8,borderRadius:"50%",background:O}}),s.jsx("span",{style:{fontSize:12,fontWeight:600,textTransform:"uppercase",letterSpacing:".06em",color:O,fontFamily:"var(--font-code, monospace)"},children:M.type})]}),s.jsx("ul",{style:{margin:0,paddingLeft:18,listStyleType:"disc",color:"var(--tx2)"},children:M.items.map((C,y)=>s.jsx("li",{style:{fontSize:14,lineHeight:1.7,color:"var(--tx2)",marginBottom:2},children:C},y))})]},M.type)})]},v.version)),!h&&u.length>5&&s.jsx("div",{style:{textAlign:"center",marginTop:24},children:s.jsxs("button",{"data-testid":"changelog-show-more",onClick:()=>d(!0),style:{background:"none",border:"1px solid var(--bd)",borderRadius:2,padding:"8px 20px",color:"var(--tx2)",fontSize:13,fontFamily:"var(--font-body, inherit)",cursor:"pointer"},children:["Show all ",u.length," releases"]})})]})}function u0(u,h,d){if(h==="index")return[];for(const c of u)if(c.pages.find(E=>E.id===h)){const E=[],M=c.pages[0];return E.push({label:c.section,href:M?M.urlPath:null}),E.push({label:d,href:null}),E}return[]}function r0({config:u,navigation:h,currentPageId:d,pageHtml:c,pageComponent:v,mdxComponents:E,pageTitle:M,pageDescription:O,headings:C,tocEnabled:y=!0,editUrl:G,lastUpdated:R,changelogEntries:K,apiManifest:nt,apiBaseUrl:xt,apiPlayground:Dt,apiAuth:At,ApiReferenceComponent:W,onNavigate:I,allPages:ct,versioning:Q,currentVersion:Y,i18n:H,currentLocale:U,docContext:at,basePath:lt="",isDraft:P,dir:mt,overrides:tt}){var za,En,fi,dl,ml,pl,Ca,ja,hl,gl,qe,Qt,ne,tn,Aa,di,mi,vl,zn;const Mt=U||(H==null?void 0:H.defaultLocale)||"en",$t=mt||((za=H==null?void 0:H.localeDirs)==null?void 0:za[Mt])||"ltr",ft=$t==="rtl",j=((En=u.theme)==null?void 0:En.mode)||"auto",[w,Z]=B.useState(()=>{var b;return j==="dark"?!0:j==="light"?!1:((b=window.matchMedia)==null?void 0:b.call(window,"(prefers-color-scheme: dark)").matches)??!1}),[J,Tt]=B.useState(()=>typeof window<"u"&&window.innerWidth<768),[m,_]=B.useState(()=>typeof window<"u"&&window.innerWidth>=768),[N,L]=B.useState(!1),[it,rt]=B.useState(!1),[Et,It]=B.useState(!1),[Ut,Ze]=B.useState(null),[pa,ha]=B.useState({}),[rl,Je]=B.useState(()=>{var b;if(!((b=u.banner)!=null&&b.text))return!0;try{const q=Array.from(u.banner.text).reduce((et,dt)=>(et<<5)-et+dt.charCodeAt(0)|0,0).toString(36);return localStorage.getItem("tome-banner-dismissed")===q}catch{return!1}}),cl=Q&&Y&&Y!==Q.current,[ga,Do]=B.useState(h.map(b=>b.section)),We=B.useRef(null),Fn=B.useRef(null),fl=B.useRef(""),[va,Oo]=B.useState(()=>typeof window<"u"&&window.innerWidth>1100),si=((fi=u.theme)==null?void 0:fi.preset)||"amber",se=((dl=Mo[si])==null?void 0:dl[w?"dark":"light"])||Mo.amber.dark,ui=(ml=u.theme)!=null&&ml.accent?Vh(u.theme.accent,w):null,te=ui?{...se,...ui}:se,ya=((pl=Mo[si])==null?void 0:pl.fonts)||Mo.amber.fonts,xn={heading:((ja=(Ca=u.theme)==null?void 0:Ca.fonts)==null?void 0:ja.heading)||ya.heading,body:((gl=(hl=u.theme)==null?void 0:hl.fonts)==null?void 0:gl.body)||ya.body,code:((Qt=(qe=u.theme)==null?void 0:qe.fonts)==null?void 0:Qt.code)||ya.code};B.useEffect(()=>{if(j!=="auto")return;const b=window.matchMedia("(prefers-color-scheme: dark)"),q=et=>Z(et.matches);return b.addEventListener("change",q),()=>b.removeEventListener("change",q)},[j]),B.useEffect(()=>{document.documentElement.classList.toggle("dark",w)},[w]),B.useEffect(()=>{const b=()=>{const q=window.innerWidth;Oo(q>1100),Tt(q<768)};return b(),window.addEventListener("resize",b),()=>window.removeEventListener("resize",b)},[]),B.useEffect(()=>{if(J&&m)return document.body.style.overflow="hidden",()=>{document.body.style.overflow=""}},[J,m]),B.useEffect(()=>{var b;(b=We.current)==null||b.scrollTo(0,0)},[d]),B.useEffect(()=>{const b=We.current;if(!b)return;const q=et=>{const dt=et.target;dt.tagName==="IMG"&&dt.closest(".tome-content")&&Ze(dt.src)};return b.addEventListener("click",q),()=>b.removeEventListener("click",q)},[]),B.useEffect(()=>{const b=We.current;if(!b)return;const q=et=>{const dt=et.target.closest("a");if(!dt)return;const St=dt.getAttribute("href");if(!St||St.startsWith("http://")||St.startsWith("https://")||St.startsWith("mailto:")||St.startsWith("tel:")||St.startsWith("//")||St.startsWith("#"))return;et.preventDefault();let yt=St.replace(/^\.\//,"").replace(/^\//,"").replace(/\.mdx?$/,"").replace(/\/$/,"");if(lt){const ce=lt.replace(/^\//,"").replace(/\/$/,"");ce&&yt.startsWith(ce+"/")?yt=yt.slice(ce.length+1):ce&&yt===ce&&(yt="index")}yt||(yt="index"),I(yt)};return b.addEventListener("click",q),()=>b.removeEventListener("click",q)},[I,lt]),B.useEffect(()=>{if(!Ut)return;const b=q=>{q.key==="Escape"&&Ze(null)};return window.addEventListener("keydown",b),()=>window.removeEventListener("keydown",b)},[Ut]);const Sn=u.toc,ri=(Sn==null?void 0:Sn.depth)??3,ba=(Sn==null?void 0:Sn.enabled)!==!1&&y,ye=C.filter(b=>b.depth<=ri),[ue,Ae]=B.useState("");B.useEffect(()=>{if(!ba||ye.length<2)return;const b=We.current;if(!b)return;const q=setTimeout(()=>{const et=[];for(const St of ye){const yt=b.querySelector(`#${CSS.escape(St.id)}`);yt&&et.push(yt)}if(et.length===0)return;const dt=new IntersectionObserver(St=>{const yt=St.filter(ce=>ce.isIntersecting).sort((ce,pi)=>ce.boundingClientRect.top-pi.boundingClientRect.top);yt.length>0&&Ae(yt[0].target.id)},{root:b,rootMargin:"0px 0px -80% 0px",threshold:0});for(const St of et)dt.observe(St);ee.current=dt},100);return()=>{var et;clearTimeout(q),(et=ee.current)==null||et.disconnect(),ee.current=null}},[d,ba,ye.map(b=>b.id).join(",")]);const ee=B.useRef(null);B.useEffect(()=>{Ae("")},[d]),B.useLayoutEffect(()=>{if(!Fn.current||!c)return;const b=c.replace(/]*>[\s\S]*?<\/h1>\s*/,"");Fn.current.innerHTML=b,fl.current=b},[c,d]);const ci=B.useCallback((b,q)=>{b.preventDefault();const et=We.current;if(!et)return;const dt=et.querySelector(`#${CSS.escape(q)}`);dt&&(dt.scrollIntoView({behavior:"smooth",block:"start"}),Ae(q))},[]);B.useEffect(()=>{const b=q=>{(q.metaKey||q.ctrlKey)&&q.key==="k"&&(q.preventDefault(),L(!0)),q.key==="Escape"&&L(!1)};return window.addEventListener("keydown",b),()=>window.removeEventListener("keydown",b)},[]);const xa=h.flatMap(b=>b.pages),Sa=xa.findIndex(b=>b.id===d),Fe=Sa>0?xa[Sa-1]:null,$e=SaDo(q=>q.includes(b)?q.filter(et=>et!==b):[...q,b]),Ta={"--bg":te.bg,"--sf":te.sf,"--sfH":te.sfH,"--bd":te.bd,"--tx":te.tx,"--tx2":te.tx2,"--txM":te.txM,"--ac":te.ac,"--acD":te.acD,"--acT":te.acT,"--cdBg":te.cdBg,"--cdTx":te.cdTx,"--sbBg":te.sbBg,"--hdBg":te.hdBg,"--font-heading":`"${xn.heading}", serif`,"--font-body":`"${xn.body}", sans-serif`,"--font-code":`"${xn.code}", monospace`},Tn=v,Ne=(ne=u.banner)==null?void 0:ne.link,Ea=Ne?Ne.startsWith("#")||lt&&Ne.startsWith(lt+"/"):!1;return s.jsxs("div",{dir:$t,className:"tome-grain",style:{...Ta,color:"var(--tx)",background:"var(--bg)",fontFamily:"var(--font-body)",height:"100vh",overflow:"clip"},children:[((tn=u.banner)==null?void 0:tn.text)&&!rl&&s.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",gap:12,background:"var(--ac)",color:"#fff",padding:"8px 16px",fontSize:13,fontFamily:"var(--font-body)",fontWeight:500,textAlign:"center",width:"100vw",boxSizing:"border-box"},children:[u.banner.link?s.jsx("a",{href:Ea&&Ne.startsWith("#")?lt+"/"+Ne.slice(1):Ne,...Ea?{}:{target:"_blank",rel:"noopener noreferrer"},style:{color:"#fff",textDecoration:"underline"},onClick:Ea?b=>{b.preventDefault();const q=lt.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),et=Ne.startsWith("#")?Ne.slice(1):Ne.replace(new RegExp("^"+q+"/?"),"");I(et||"index")}:void 0,children:u.banner.text}):s.jsx("span",{children:u.banner.text}),u.banner.dismissible!==!1&&s.jsx("button",{onClick:()=>{Je(!0);try{const b=Array.from(u.banner.text).reduce((q,et)=>(q<<5)-q+et.charCodeAt(0)|0,0).toString(36);localStorage.setItem("tome-banner-dismissed",b)}catch{}},"aria-label":"Dismiss banner",style:{background:"none",border:"none",color:"#fff",cursor:"pointer",fontSize:16,lineHeight:1,padding:0,opacity:.8},children:"×"})]}),N&&((Aa=u.search)==null?void 0:Aa.provider)==="algolia"&&u.search.appId&&u.search.apiKey&&u.search.indexName?s.jsx(t0,{appId:u.search.appId,apiKey:u.search.apiKey,indexName:u.search.indexName,onNavigate:b=>{I(b),L(!1)},onClose:()=>L(!1),basePath:lt}):N?s.jsx(c0,{allPages:ct,onNavigate:b=>{I(b),L(!1)},onClose:()=>L(!1),mobile:J}):null,s.jsxs("div",{style:{display:"flex",flexDirection:ft?"row-reverse":"row",flex:1,height:(di=u.banner)!=null&&di.text&&!rl?"calc(100vh - 32px)":"100vh"},children:[J&&m&&s.jsx("div",{onClick:()=>_(!1),style:{position:"fixed",inset:0,zIndex:200,background:"rgba(0,0,0,0.4)",backdropFilter:"blur(2px)"}}),tt!=null&&tt.Sidebar?s.jsx(tt.Sidebar,{config:u,navigation:h,currentPageId:d,onNavigate:I,mobile:J,sbOpen:m,setSbOpen:_,versioning:Q,currentVersion:Y}):s.jsxs("aside",{style:{width:m?270:0,minWidth:m?270:0,background:"var(--sbBg)",[ft?"borderLeft":"borderRight"]:"1px solid var(--bd)",display:"flex",flexDirection:"column",transition:"width .2s, min-width .2s",overflow:"hidden",...J?{position:"fixed",top:0,[ft?"right":"left"]:0,bottom:0,zIndex:201}:{}},children:[s.jsxs("a",{href:"/",style:{padding:"18px 20px",display:"flex",alignItems:"baseline",gap:6,borderBottom:"1px solid var(--bd)",textDecoration:"none",color:"inherit"},children:[s.jsx("span",{style:{fontFamily:"var(--font-heading)",fontSize:22,fontWeight:700,fontStyle:"italic"},children:u.name}),s.jsx("span",{style:{width:5,height:5,borderRadius:"50%",background:"var(--ac)",display:"inline-block"}})]}),s.jsx("div",{style:{padding:"12px 14px"},children:s.jsxs("button",{onClick:()=>{L(!0),J&&_(!1)},style:{display:"flex",alignItems:"center",gap:8,width:"100%",background:"var(--cdBg)",border:"1px solid var(--bd)",borderRadius:2,padding:"8px 12px",cursor:"pointer",color:"var(--txM)",fontSize:12.5,fontFamily:"var(--font-body)"},children:[s.jsx(rm,{}),s.jsx("span",{style:{flex:1,textAlign:ft?"right":"left"},children:"Search..."}),s.jsx("kbd",{style:{fontFamily:"var(--font-code)",fontSize:9,background:"var(--sf)",border:"1px solid var(--bd)",borderRadius:2,padding:"2px 6px"},children:"⌘K"})]})}),s.jsx("nav",{style:{flex:1,overflow:"auto",padding:"4px 10px 20px"},children:h.map(b=>s.jsxs("div",{style:{marginBottom:8},children:[s.jsxs("button",{onClick:()=>Pe(b.section),style:{display:"flex",alignItems:"center",gap:6,width:"100%",background:"none",border:"none",padding:"8px 10px",cursor:"pointer",borderRadius:2,color:"var(--txM)",fontSize:10,fontWeight:600,textTransform:"uppercase",letterSpacing:".1em",fontFamily:"var(--font-code)"},children:[ga.includes(b.section)?s.jsx(Vu,{}):s.jsx(Pd,{}),b.section]}),ga.includes(b.section)&&s.jsx("div",{style:{[ft?"marginRight":"marginLeft"]:8,[ft?"borderRight":"borderLeft"]:"1px solid var(--bd)",[ft?"paddingRight":"paddingLeft"]:0},children:b.pages.map(q=>{const et=d===q.id;return s.jsxs("button",{onClick:()=>{I(q.id),J&&_(!1)},style:{display:"flex",alignItems:"center",gap:10,width:"100%",textAlign:ft?"right":"left",background:"none",border:"none",borderRadius:0,[ft?"borderRight":"borderLeft"]:et?"2px solid var(--ac)":"2px solid transparent",padding:"7px 14px",cursor:"pointer",color:et?"var(--ac)":"var(--tx2)",fontSize:13,fontWeight:et?500:400,fontFamily:"var(--font-body)",transition:"all .12s"},children:[q.title,q.badge&&(()=>{const dt={default:{bg:"var(--sf)",text:"var(--tx2)"},info:{bg:"rgba(59,130,246,0.15)",text:"rgb(59,130,246)"},success:{bg:"rgba(34,197,94,0.15)",text:"rgb(34,197,94)"},warning:{bg:"rgba(234,179,8,0.15)",text:"rgb(202,138,4)"},danger:{bg:"rgba(239,68,68,0.15)",text:"rgb(239,68,68)"}},St=dt[q.badge.variant||"default"]||dt.default;return s.jsx("span",{style:{fontSize:10,fontWeight:600,padding:"2px 6px",borderRadius:4,marginLeft:6,whiteSpace:"nowrap",background:St.bg,color:St.text},children:q.badge.text})})()]},q.id)})})]},b.section))}),Q&&J&&s.jsx("div",{style:{padding:"8px 16px",borderTop:"1px solid var(--bd)",display:"flex",gap:6},children:Q.versions.map(b=>s.jsxs("button",{onClick:()=>{const q=b===Q.current?"index":`${b}/index`;I(q)},style:{flex:1,padding:"3px 0",textAlign:"center",background:b===(Y||Q.current)?"var(--acD)":"var(--sf)",border:"1px solid var(--bd)",borderRadius:2,cursor:"pointer",color:b===(Y||Q.current)?"var(--ac)":"var(--tx2)",fontSize:11,fontFamily:"var(--font-code)",fontWeight:b===Q.current?600:400},children:[b,b===Q.current?" (latest)":""]},b))}),s.jsxs("div",{style:{padding:"12px 16px",borderTop:"1px solid var(--bd)",display:"flex",alignItems:"center",justifyContent:"space-between"},children:[j==="auto"?s.jsx("button",{"aria-label":w?"Switch to light mode":"Switch to dark mode",onClick:()=>Z(b=>!b),style:{background:"none",border:"none",color:"var(--txM)",cursor:"pointer",display:"flex"},children:w?s.jsx(em,{}):s.jsx(tm,{})}):s.jsx("div",{}),s.jsxs("span",{style:{fontSize:11,color:"var(--txM)",letterSpacing:.2},children:["Built with ","♡"," by Tome"]}),s.jsx("span",{style:{fontFamily:"var(--font-code)",fontSize:10,color:"var(--txM)"},children:"v0.5.0"})]})]}),s.jsxs("div",{style:{flex:1,display:"flex",flexDirection:"column",overflow:"hidden"},children:[tt!=null&&tt.Header?s.jsx(tt.Header,{config:u,navigation:h,currentPageId:d,onNavigate:I,mobile:J,sbOpen:m,setSbOpen:_,isDark:w,setDark:Z,versioning:Q,currentVersion:Y,i18n:H,currentLocale:U,onSearchOpen:()=>L(!0),basePath:lt}):s.jsxs("header",{style:{display:"flex",alignItems:"center",gap:J?8:12,padding:J?"8px 12px":"10px 24px",borderBottom:"1px solid var(--bd)",background:"var(--hdBg)",backdropFilter:"blur(12px)",maxWidth:"100vw",overflow:"visible",position:"relative",zIndex:200},children:[s.jsx("button",{"aria-label":m?"Close sidebar":"Open sidebar",onClick:()=>_(!m),style:{background:"none",border:"none",color:"var(--txM)",cursor:"pointer",display:"flex"},children:m?s.jsx(Jh,{}):s.jsx(Zh,{})}),J?s.jsx("span",{style:{fontSize:13,color:"var(--ac)",fontFamily:"var(--font-code)",flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:((mi=h.flatMap(b=>b.pages).find(b=>b.id===d))==null?void 0:mi.title)||""}):s.jsx("div",{style:{display:"flex",alignItems:"center",gap:8,fontFamily:"var(--font-code)",fontSize:11,color:"var(--txM)",letterSpacing:".03em",flex:1},children:h.map(b=>{const q=b.pages.find(et=>et.id===d);return q?s.jsxs("span",{style:{display:"flex",alignItems:"center",gap:8},children:[s.jsx("span",{children:b.section}),s.jsx(Pd,{}),s.jsx("span",{style:{color:"var(--ac)"},children:q.title})]},b.section):null})}),u.topNav&&u.topNav.length>0&&!J&&s.jsxs("div",{style:{display:"flex",alignItems:"center",gap:12},children:[u.topNav.map(b=>{const q=b.href.startsWith("#")||lt&&b.href.startsWith(lt+"/"),et=!q;return s.jsxs("a",{href:q&&b.href.startsWith("#")?lt+"/"+b.href.slice(1):b.href,...et?{target:"_blank",rel:"noopener noreferrer"}:{},onClick:q?dt=>{dt.preventDefault();const St=b.href.startsWith("#")?b.href.slice(1):b.href.replace(new RegExp("^"+lt.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")+"/?"),"");I(St)}:void 0,style:{display:"flex",alignItems:"center",gap:4,color:"var(--txM)",textDecoration:"none",fontSize:12,fontFamily:"var(--font-body)",fontWeight:500,transition:"color .15s"},onMouseOver:dt=>dt.currentTarget.style.color="var(--ac)",onMouseOut:dt=>dt.currentTarget.style.color="var(--txM)",children:[b.label,et&&s.jsx(a0,{})]},b.label)}),s.jsx("span",{style:{width:1,height:16,background:"var(--bd)"}})]}),u.socialLinks&&u.socialLinks.length>0&&!J&&s.jsx("div",{style:{display:"flex",alignItems:"center",gap:8},children:u.socialLinks.map(b=>s.jsx("a",{href:b.url,target:"_blank",rel:"noopener noreferrer","aria-label":b.label||b.platform,"data-testid":`social-link-${b.platform}`,style:{display:"flex",alignItems:"center",justifyContent:"center",color:"var(--tx2)",cursor:"pointer",transition:"color .15s"},onMouseOver:q=>q.currentTarget.style.color="var(--tx)",onMouseOut:q=>q.currentTarget.style.color="var(--tx2)",children:s.jsx(i0,{platform:b.platform,customIcon:b.icon})},b.url))}),J&&j==="auto"&&s.jsx("button",{"aria-label":w?"Switch to light mode":"Switch to dark mode",onClick:()=>Z(b=>!b),style:{background:"none",border:"none",color:"var(--txM)",cursor:"pointer",display:"flex",flexShrink:0},children:w?s.jsx(em,{}):s.jsx(tm,{})}),Q&&!J&&s.jsxs("div",{style:{position:"relative"},children:[s.jsxs("button",{"data-testid":"version-switcher",onClick:()=>rt(b=>!b),style:{display:"flex",alignItems:"center",gap:6,background:"var(--sf)",border:"1px solid var(--bd)",borderRadius:2,padding:"5px 10px",cursor:"pointer",color:"var(--tx2)",fontSize:12,fontFamily:"var(--font-code)"},children:[s.jsx(e0,{}),Y||Q.current,s.jsx(Vu,{})]}),it&&s.jsx("div",{"data-testid":"version-dropdown",style:{position:"absolute",top:"100%",right:0,marginTop:4,background:"var(--sf)",border:"1px solid var(--bd)",borderRadius:2,boxShadow:"0 8px 32px rgba(0,0,0,0.2)",overflow:"hidden",zIndex:100,minWidth:120},children:Q.versions.map(b=>s.jsxs("button",{onClick:()=>{rt(!1);const q=b===Q.current?"index":`${b}/index`;I(q)},style:{display:"block",width:"100%",textAlign:"left",background:b===(Y||Q.current)?"var(--acD)":"none",border:"none",padding:"8px 14px",cursor:"pointer",color:b===(Y||Q.current)?"var(--ac)":"var(--tx2)",fontSize:12,fontFamily:"var(--font-code)",fontWeight:b===Q.current?600:400},children:[b,b===Q.current?" (latest)":""]},b))})]}),H&&H.locales.length>1&&!J&&s.jsxs("div",{style:{position:"relative"},children:[s.jsxs("button",{"data-testid":"language-switcher",onClick:()=>It(b=>!b),style:{display:"flex",alignItems:"center",gap:6,background:"var(--sf)",border:"1px solid var(--bd)",borderRadius:2,padding:"5px 10px",cursor:"pointer",color:"var(--tx2)",fontSize:12,fontFamily:"var(--font-body)"},children:[s.jsx(n0,{}),((vl=H.localeNames)==null?void 0:vl[U||H.defaultLocale])||U||H.defaultLocale,s.jsx(Vu,{})]}),Et&&s.jsx("div",{"data-testid":"language-dropdown",style:{position:"absolute",top:"100%",right:0,marginTop:4,background:"var(--sf)",border:"1px solid var(--bd)",borderRadius:2,boxShadow:"0 8px 32px rgba(0,0,0,0.2)",overflow:"hidden",zIndex:100,minWidth:120},children:H.locales.map(b=>{var ce;const q=b===(U||H.defaultLocale),et=((ce=H.localeNames)==null?void 0:ce[b])||b,dt=U||H.defaultLocale;let St=d;dt!==H.defaultLocale&&d.startsWith(`${dt}/`)&&(St=d.slice(dt.length+1));const yt=b===H.defaultLocale?St:`${b}/${St}`;return s.jsx("button",{onClick:()=>{It(!1),I(yt)},style:{display:"block",width:"100%",textAlign:"left",background:q?"var(--acD)":"none",border:"none",padding:"8px 14px",cursor:"pointer",color:q?"var(--ac)":"var(--tx2)",fontSize:12,fontFamily:"var(--font-body)",fontWeight:q?600:400},children:et},b)})})]})]}),cl&&s.jsxs("div",{"data-testid":"old-version-banner",style:{display:"flex",alignItems:"center",justifyContent:"center",gap:8,background:"var(--acD)",borderBottom:"1px solid var(--bd)",padding:"8px 24px",fontSize:13,color:"var(--tx2)"},children:[s.jsxs("span",{children:["You're viewing docs for ",Y,"."]}),s.jsx("button",{onClick:()=>{I("index")},style:{background:"none",border:"none",color:"var(--ac)",cursor:"pointer",fontWeight:600,fontSize:13,fontFamily:"var(--font-body)",textDecoration:"underline"},children:"Switch to latest."})]}),s.jsxs("div",{ref:We,style:{flex:1,overflow:"auto",display:"flex"},children:[s.jsxs("main",{style:{flex:1,maxWidth:J?"100%":nt?1100:760,padding:J?"24px 16px 60px":"40px 48px 80px",margin:"0 auto",minWidth:0},children:[Ie.length>0&&s.jsx("nav",{"aria-label":"Breadcrumbs","data-testid":"breadcrumbs",style:{display:"flex",alignItems:"center",gap:6,fontSize:13,color:"var(--tx2)",marginBottom:8},children:Ie.map((b,q)=>s.jsxs(sm.Fragment,{children:[q>0&&s.jsx("span",{style:{color:"var(--tx2)",opacity:.5},children:"›"}),q{et.preventDefault();const dt=h.flatMap(St=>St.pages).find(St=>St.urlPath===b.href);dt&&I(dt.id)},style:{color:"var(--tx2)",textDecoration:"none",cursor:"pointer"},children:b.label}):s.jsx("span",{style:q===Ie.length-1?{color:"var(--tx)"}:void 0,children:b.label})]},q))}),s.jsx("h1",{style:{fontFamily:"var(--font-heading)",fontSize:J?26:38,fontWeight:400,fontStyle:"italic",lineHeight:1.15,marginBottom:8},children:M}),P&&s.jsx("div",{"data-testid":"draft-banner",style:{background:"#fef3c7",color:"#92400e",padding:"8px 16px",borderRadius:6,fontSize:13,marginBottom:16},children:"Draft — This page is only visible in development"}),O&&s.jsx("p",{style:{fontSize:16,color:"var(--tx2)",lineHeight:1.6,marginBottom:32},children:O}),s.jsx("div",{style:{borderTop:"1px solid var(--bd)",paddingTop:28},children:nt&&W?s.jsx(W,{manifest:nt,baseUrl:xt,showPlayground:Dt,playgroundAuth:At}):K&&K.length>0?s.jsx(s0,{entries:K}):Tn?s.jsx("div",{className:"tome-content",children:s.jsx(Tn,{components:E||{}})}):s.jsx("div",{className:"tome-content",ref:Fn},d)}),tt!=null&&tt.PageFooter?s.jsx(tt.PageFooter,{editUrl:G,lastUpdated:R,currentPageId:d,prev:Fe,next:$e,onNavigate:I,mobile:J}):s.jsxs(s.Fragment,{children:[(G||R)&&s.jsxs("div",{style:{marginTop:40,display:"flex",flexDirection:J?"column":"row",alignItems:J?"flex-start":"center",justifyContent:"space-between",gap:J?8:16},children:[G&&s.jsx("div",{"data-testid":"edit-page-link",children:s.jsxs("a",{href:G,target:"_blank",rel:"noopener noreferrer",style:{display:"inline-flex",alignItems:"center",gap:6,color:"var(--txM)",textDecoration:"none",fontSize:13,fontFamily:"var(--font-body)",transition:"color .15s"},onMouseOver:b=>b.currentTarget.style.color="var(--ac)",onMouseOut:b=>b.currentTarget.style.color="var(--txM)",children:[s.jsx(Wh,{})," Edit this page on GitHub"]})}),R&&s.jsxs("div",{"data-testid":"last-updated",style:{fontSize:12,color:"var(--txM)",fontFamily:"var(--font-body)"},children:["Last updated ",Fh(R)]})]}),s.jsx("div",{style:{display:"flex",alignItems:"center",gap:12,marginTop:24,padding:"12px 0"},children:pa[d]?s.jsx("span",{style:{fontSize:13,color:"var(--txM)",fontFamily:"var(--font-body)"},children:"Thanks for your feedback!"}):s.jsxs(s.Fragment,{children:[s.jsx("span",{style:{fontSize:13,color:"var(--txM)",fontFamily:"var(--font-body)"},children:"Was this helpful?"}),s.jsx("button",{onClick:()=>{ha(b=>({...b,[d]:!0}));try{localStorage.setItem(`tome-feedback-${d}`,"up")}catch{}},style:{background:"none",border:"1px solid var(--bd)",borderRadius:2,padding:"4px 10px",cursor:"pointer",fontSize:13,color:"var(--txM)",transition:"border-color .15s"},children:"👍"}),s.jsx("button",{onClick:()=>{ha(b=>({...b,[d]:!0}));try{localStorage.setItem(`tome-feedback-${d}`,"down")}catch{}},style:{background:"none",border:"1px solid var(--bd)",borderRadius:2,padding:"4px 10px",cursor:"pointer",fontSize:13,color:"var(--txM)",transition:"border-color .15s"},children:"👎"})]})}),s.jsxs("div",{style:{display:"flex",flexDirection:J?"column":"row",justifyContent:"space-between",marginTop:16,paddingTop:24,borderTop:"1px solid var(--bd)",gap:J?12:16},children:[Fe?s.jsxs("button",{onClick:()=>I(Fe.id),style:{display:"flex",alignItems:"center",gap:8,background:"none",border:"1px solid var(--bd)",borderRadius:2,padding:"10px 16px",cursor:"pointer",color:"var(--tx2)",fontSize:13,fontFamily:"var(--font-body)",transition:"border-color .15s, color .15s"},children:[ft?s.jsx(am,{}):s.jsx(nm,{})," ",Fe.title]}):s.jsx("div",{}),$e?s.jsxs("button",{onClick:()=>I($e.id),style:{display:"flex",alignItems:"center",gap:8,background:"none",border:"1px solid var(--bd)",borderRadius:2,padding:"10px 16px",cursor:"pointer",color:"var(--tx2)",fontSize:13,fontFamily:"var(--font-body)",transition:"border-color .15s, color .15s"},children:[$e.title," ",ft?s.jsx(nm,{}):s.jsx(am,{})]}):s.jsx("div",{})]})]})]}),tt!=null&&tt.Toc?ba&&ye.length>=2&&va&&s.jsx(tt.Toc,{headings:ye,activeHeadingId:ue,onScrollToHeading:ci}):ba&&ye.length>=2&&va&&s.jsxs("aside",{"data-testid":"toc-sidebar",style:{width:200,padding:ft?"40px 0 40px 16px":"40px 16px 40px 0",position:"sticky",top:0,alignSelf:"flex-start",flexShrink:0},children:[s.jsx("div",{style:{fontSize:10,fontWeight:600,textTransform:"uppercase",letterSpacing:".1em",color:"var(--txM)",marginBottom:12,fontFamily:"var(--font-code)"},children:"On this page"}),s.jsx("nav",{"aria-label":"Table of contents",style:{[ft?"borderRight":"borderLeft"]:"1px solid var(--bd)",[ft?"paddingRight":"paddingLeft"]:0},children:ye.map((b,q)=>{const et=ue===b.id;return s.jsx("a",{href:`#${b.id}`,onClick:dt=>ci(dt,b.id),"data-testid":`toc-link-${b.id}`,style:{display:"block",fontSize:12,color:et?"var(--ac)":"var(--txM)",fontWeight:et?500:400,textDecoration:"none",padding:"4px 12px",[ft?"paddingRight":"paddingLeft"]:12+(b.depth-2)*12,lineHeight:1.4,transition:"color .15s, font-weight .15s",[ft?"borderRight":"borderLeft"]:et?"2px solid var(--ac)":"2px solid transparent",[ft?"marginRight":"marginLeft"]:-1},children:b.text},q)})})]})]})]})]}),(tt==null?void 0:tt.Footer)&&s.jsx(tt.Footer,{config:u,navigation:h,currentPageId:d,onNavigate:I}),((zn=u.ai)==null?void 0:zn.enabled)&&s.jsx(Xh,{provider:u.ai.provider||"anthropic",model:u.ai.model,apiKey:typeof __TOME_AI_API_KEY__<"u"&&__TOME_AI_API_KEY__?__TOME_AI_API_KEY__:void 0,context:(at==null?void 0:at.map(b=>`## ${b.title} ${b.content}`).join(` `))??ct.map(b=>`- ${b.title}${b.description?": "+b.description:""}`).join(` -`)}),Ut&&s.jsx("div",{onClick:()=>Ze(null),style:{position:"fixed",inset:0,zIndex:9999,display:"flex",alignItems:"center",justifyContent:"center",background:"rgba(0,0,0,0.7)",backdropFilter:"blur(8px)",cursor:"zoom-out"},children:s.jsx("img",{src:Ut,alt:"",style:{maxWidth:"90vw",maxHeight:"90vh",objectFit:"contain",borderRadius:4,boxShadow:"0 16px 64px rgba(0,0,0,0.4)"}})})]})}function cg({allPages:u,onNavigate:h,onClose:d,mobile:c}){const[v,E]=B.useState(""),[M,O]=B.useState([]),[C,y]=B.useState(0),[G,R]=B.useState(null),K=B.useRef(null),nt=B.useRef(void 0);B.useEffect(()=>{Ih().then(W=>R(!!W)),setTimeout(()=>{var W;return(W=K.current)==null?void 0:W.focus()},50)},[]);const xt=B.useCallback(W=>{if(!W.trim())return[];const I=W.toLowerCase();return u.filter(ct=>ct.title.toLowerCase().includes(I)||(ct.description||"").toLowerCase().includes(I)).slice(0,8).map(ct=>({id:ct.id,title:ct.title,excerpt:ct.description}))},[u]),Dt=B.useCallback(async W=>{var ct;if(!W.trim()){O([]),y(0);return}const I=ul;if(I)try{const Q=await I.search(W),Y=[];for(const H of Q.results.slice(0,8)){const U=await H.data(),lt=(U.url||"").replace(/^\//,"").replace(/\/index\.html$/,"").replace(/\.html$/,"")||"index";Y.push({id:lt,title:((ct=U.meta)==null?void 0:ct.title)||lt,excerpt:U.excerpt||void 0})}O(Y),y(0);return}catch{}O(xt(W)),y(0)},[xt]);B.useEffect(()=>(nt.current&&clearTimeout(nt.current),nt.current=setTimeout(()=>Dt(v),120),()=>{nt.current&&clearTimeout(nt.current)}),[v,Dt]);const At=B.useCallback(W=>{W.key==="ArrowDown"?(W.preventDefault(),y(I=>Math.min(I+1,M.length-1))):W.key==="ArrowUp"?(W.preventDefault(),y(I=>Math.max(I-1,0))):W.key==="Enter"&&M.length>0&&(W.preventDefault(),h(M[C].id))},[M,C,h]);return s.jsx("div",{onClick:d,style:{position:"fixed",inset:0,zIndex:1e3,background:"rgba(0,0,0,0.55)",backdropFilter:"blur(6px)",display:"flex",alignItems:c?"stretch":"flex-start",justifyContent:"center",paddingTop:c?0:"12vh"},children:s.jsxs("div",{onClick:W=>W.stopPropagation(),style:{background:"var(--sf)",border:c?"none":"1px solid var(--bd)",borderRadius:c?0:2,width:"100%",maxWidth:c?"100%":520,boxShadow:c?"none":"0 24px 80px rgba(0,0,0,0.4)",overflow:"hidden",display:"flex",flexDirection:"column",...c?{height:"100%"}:{}},children:[s.jsxs("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"14px 18px",borderBottom:"1px solid var(--bd)"},children:[s.jsx(rm,{}),s.jsx("input",{ref:K,value:v,onChange:W=>E(W.target.value),onKeyDown:At,placeholder:"Search documentation...",style:{flex:1,background:"none",border:"none",outline:"none",color:"var(--tx)",fontSize:15,fontFamily:"var(--font-body)"}}),s.jsx("kbd",{style:{fontFamily:"var(--font-code)",fontSize:10,color:"var(--txM)",background:"var(--cdBg)",padding:"2px 6px",borderRadius:2,border:"1px solid var(--bd)"},children:"ESC"})]}),M.length>0&&s.jsx("div",{style:{padding:6,maxHeight:c?"none":360,overflow:"auto",flex:c?1:void 0},children:M.map((W,I)=>s.jsxs("button",{onClick:()=>h(W.id),style:{display:"block",width:"100%",textAlign:"left",background:I===C?"var(--acD)":"none",border:"none",borderRadius:2,padding:"10px 14px",cursor:"pointer",color:"var(--tx)",fontFamily:"var(--font-body)"},onMouseEnter:()=>y(I),children:[s.jsx("div",{style:{fontWeight:500,fontSize:14,marginBottom:2},children:W.title}),W.excerpt&&s.jsx("div",{style:{fontSize:12,color:"var(--txM)",lineHeight:1.3},dangerouslySetInnerHTML:{__html:W.excerpt}})]},W.id+I))}),v&&!M.length&&s.jsx("div",{style:{padding:"32px 18px",textAlign:"center",color:"var(--txM)",fontSize:14},children:"No results found"}),G===!1&&v&&M.length>0&&s.jsx("div",{style:{padding:"6px 18px 10px",fontSize:11,color:"var(--txM)",textAlign:"center"},children:"Showing title matches. Build your site for full-text search."})]})})}function cm(u,h,d){let c=u;h&&c.startsWith(h)&&(c=c.slice(h.length));const v=c.replace(/^\//,"").replace(/\/index\.html$/,"").replace(/\.html$/,"").replace(/\/$/,"")||"index";return d.find(M=>M.id===v)?v:null}function fg(u,h,d){const c=d.find(v=>v.id===u);return c?h+c.urlPath:h+"/"+u}class dg extends Error{constructor(h){super(`Page not found: ${h}`),this.code="PAGE_NOT_FOUND",this.name="PageNotFoundError"}}class mg extends Error{constructor(h,d){super(`Failed to load page: ${h}`),this.code="PAGE_LOAD_ERROR",this.name="PageLoadError",d&&(this.cause=d)}}function pg(u,h){if(!u||!h)return;const{repo:d,branch:c="main",dir:v=""}=u,E=v?`${v.replace(/\/$/,"")}/`:"";return`https://github.com/${d}/edit/${c}/${E}${h}`}function hg(u,h,d,c,v){var O;const E=v(u,c,d);if(E)return E;const M=h.startsWith("#")?h.slice(1):h;return M&&d.some(C=>C.id===M)?M:((O=d[0])==null?void 0:O.id)||"index"}async function fm(u,h,d){const c=h.find(E=>E.id===u);let v;try{v=await d(u)}catch(E){throw new mg(u,E)}if(c!=null&&c.isMdx&&v.meta)return{isMdx:!0,component:v.default,frontmatter:v.meta.frontmatter,headings:v.meta.headings};if(!v.default)throw new dg(u);return v.isApiReference&&v.apiManifest?{isMdx:!1,isApiReference:!0,...v.default,apiManifest:v.apiManifest}:v.isChangelog&&v.changelogEntries?{isMdx:!1,...v.default,changelogEntries:v.changelogEntries}:{isMdx:!1,...v.default}}function gg(u,h){return(u==null?void 0:u.version)||void 0}const Jn={name:"Kit",logo:"/logo.jpg",favicon:"/logo.jpg",baseUrl:"https://go-kit.dev",theme:{preset:"cipher",accent:"#e03030",mode:"dark",fonts:{heading:"Space Grotesk",body:"Space Grotesk",code:"Source Code Pro"}},navigation:[{group:"Getting Started",pages:["index","installation","quick-start"]},{group:"Configuration",pages:["configuration","providers","themes"]},{group:"CLI Reference",pages:["cli/flags","cli/commands"]},{group:"Extensions",pages:["extensions/overview","extensions/capabilities","extensions/examples","extensions/loading","extensions/testing"]},{group:"Sessions",pages:["sessions"]},{group:"Go SDK",pages:["sdk/overview","sdk/options","sdk/callbacks","sdk/sessions"]},{group:"Advanced",pages:["advanced/subagents","advanced/json-output","advanced/testing"]},{group:"Development",pages:["development"]}],search:{provider:"local"},toc:{enabled:!0,depth:3},math:!1,strictLinks:!1,lastUpdated:!0,redirects:[],socialLinks:[{platform:"github",url:"https://github.com/mark3labs/kit"},{platform:"discord",url:"https://discord.gg/RqSS2NQVsY"}]},Wn=[{id:"advanced/json-output",filePath:"advanced/json-output.md",urlPath:"/advanced/json-output",frontmatter:{title:"JSON Output",description:"Machine-readable JSON output for scripting and automation.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-22T16:58:07+03:00"},{id:"advanced/subagents",filePath:"advanced/subagents.md",urlPath:"/advanced/subagents",frontmatter:{title:"Subagents",description:"Multi-agent orchestration with Kit subagents.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-22T16:58:07+03:00"},{id:"advanced/testing",filePath:"advanced/testing.md",urlPath:"/advanced/testing",frontmatter:{title:"Testing with tmux",description:"Test Kit's TUI non-interactively using tmux.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-22T16:58:07+03:00"},{id:"cli/commands",filePath:"cli/commands.md",urlPath:"/cli/commands",frontmatter:{title:"Commands",description:"Complete reference for all Kit CLI subcommands.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-22T16:58:07+03:00"},{id:"cli/flags",filePath:"cli/flags.md",urlPath:"/cli/flags",frontmatter:{title:"Global Flags",description:"Complete reference for all Kit CLI flags.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-22T16:58:07+03:00"},{id:"configuration",filePath:"configuration.md",urlPath:"/configuration",frontmatter:{title:"Configuration",description:"Configure Kit using config files, environment variables, and CLI flags.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-22T16:58:07+03:00"},{id:"development",filePath:"development.md",urlPath:"/development",frontmatter:{title:"Development",description:"Build, test, and contribute to Kit.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-22T16:58:07+03:00"},{id:"extensions/capabilities",filePath:"extensions/capabilities.md",urlPath:"/extensions/capabilities",frontmatter:{title:"Capabilities",description:"All extension capabilities — lifecycle events, tools, commands, widgets, and more.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-22T16:58:07+03:00"},{id:"extensions/examples",filePath:"extensions/examples.md",urlPath:"/extensions/examples",frontmatter:{title:"Examples",description:"Catalog of example extensions included with Kit.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-22T16:58:07+03:00"},{id:"extensions/loading",filePath:"extensions/loading.md",urlPath:"/extensions/loading",frontmatter:{title:"Loading Extensions",description:"How Kit discovers and loads extensions.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-22T16:58:07+03:00"},{id:"extensions/overview",filePath:"extensions/overview.md",urlPath:"/extensions/overview",frontmatter:{title:"Extension System",description:"Overview of Kit's Go-based extension system.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-22T16:58:07+03:00"},{id:"extensions/testing",filePath:"extensions/testing.md",urlPath:"/extensions/testing",frontmatter:{title:"Testing Extensions",description:"Write unit tests for your Kit extensions using the test package.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-22T16:58:07+03:00"},{id:"index",filePath:"index.md",urlPath:"/",frontmatter:{title:"Kit",description:"Kit is a powerful, extensible AI coding agent CLI with multi-provider support, built-in tools, and a rich extension system.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-22T16:58:07+03:00"},{id:"installation",filePath:"installation.md",urlPath:"/installation",frontmatter:{title:"Installation",description:"Install Kit using npm, bun, pnpm, Go, or build from source.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-22T16:58:07+03:00"},{id:"providers",filePath:"providers.md",urlPath:"/providers",frontmatter:{title:"Providers",description:"Supported LLM providers and model configuration.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-22T16:58:07+03:00"},{id:"quick-start",filePath:"quick-start.md",urlPath:"/quick-start",frontmatter:{title:"Quick Start",description:"Get up and running with Kit in minutes.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-22T16:58:07+03:00"},{id:"sdk/callbacks",filePath:"sdk/callbacks.md",urlPath:"/sdk/callbacks",frontmatter:{title:"Callbacks",description:"Monitor tool calls and streaming output with the Kit Go SDK.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-22T16:58:07+03:00"},{id:"sdk/options",filePath:"sdk/options.md",urlPath:"/sdk/options",frontmatter:{title:"SDK Options",description:"Configuration options for the Kit Go SDK.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-22T16:58:07+03:00"},{id:"sdk/overview",filePath:"sdk/overview.md",urlPath:"/sdk/overview",frontmatter:{title:"Go SDK",description:"Embed Kit in your Go applications.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-22T16:58:07+03:00"},{id:"sdk/sessions",filePath:"sdk/sessions.md",urlPath:"/sdk/sessions",frontmatter:{title:"SDK Sessions",description:"Session management in the Kit Go SDK.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-22T16:58:07+03:00"},{id:"sessions",filePath:"sessions.md",urlPath:"/sessions",frontmatter:{title:"Session Management",description:"How Kit persists and manages conversation sessions.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-22T16:58:07+03:00"},{id:"themes",filePath:"themes.md",urlPath:"/themes",frontmatter:{title:"Themes",description:"Customize Kit's appearance with built-in themes, custom theme files, and the extension theme API.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-22T16:58:07+03:00"}],vg=[{section:"Getting Started",pages:[{title:"Kit",id:"index",urlPath:"/"},{title:"Installation",id:"installation",urlPath:"/installation"},{title:"Quick Start",id:"quick-start",urlPath:"/quick-start"}]},{section:"Configuration",pages:[{title:"Configuration",id:"configuration",urlPath:"/configuration"},{title:"Providers",id:"providers",urlPath:"/providers"},{title:"Themes",id:"themes",urlPath:"/themes"}]},{section:"CLI Reference",pages:[{title:"Global Flags",id:"cli/flags",urlPath:"/cli/flags"},{title:"Commands",id:"cli/commands",urlPath:"/cli/commands"}]},{section:"Extensions",pages:[{title:"Extension System",id:"extensions/overview",urlPath:"/extensions/overview"},{title:"Capabilities",id:"extensions/capabilities",urlPath:"/extensions/capabilities"},{title:"Examples",id:"extensions/examples",urlPath:"/extensions/examples"},{title:"Loading Extensions",id:"extensions/loading",urlPath:"/extensions/loading"},{title:"Testing Extensions",id:"extensions/testing",urlPath:"/extensions/testing"}]},{section:"Sessions",pages:[{title:"Session Management",id:"sessions",urlPath:"/sessions"}]},{section:"Go SDK",pages:[{title:"Go SDK",id:"sdk/overview",urlPath:"/sdk/overview"},{title:"SDK Options",id:"sdk/options",urlPath:"/sdk/options"},{title:"Callbacks",id:"sdk/callbacks",urlPath:"/sdk/callbacks"},{title:"SDK Sessions",id:"sdk/sessions",urlPath:"/sdk/sessions"}]},{section:"Advanced",pages:[{title:"Subagents",id:"advanced/subagents",urlPath:"/advanced/subagents"},{title:"JSON Output",id:"advanced/json-output",urlPath:"/advanced/json-output"},{title:"Testing with tmux",id:"advanced/testing",urlPath:"/advanced/testing"}]},{section:"Development",pages:[{title:"Development",id:"development",urlPath:"/development"}]}],Zu=null,yg={"advanced/json-output":()=>Lt(()=>import("./json-output-BiSiIPM0.js"),[]),"advanced/subagents":()=>Lt(()=>import("./subagents-lghAXYlk.js"),[]),"advanced/testing":()=>Lt(()=>import("./testing-COLNxuKj.js"),[]),"cli/commands":()=>Lt(()=>import("./commands-CjvM1xle.js"),[]),"cli/flags":()=>Lt(()=>import("./flags-DBc7n5J6.js"),[]),configuration:()=>Lt(()=>import("./configuration-g-7VIEux.js"),[]),development:()=>Lt(()=>import("./development-E-EC7CAm.js"),[]),"extensions/capabilities":()=>Lt(()=>import("./capabilities-VpEmfPck.js"),[]),"extensions/examples":()=>Lt(()=>import("./examples-Dd5WMq-L.js"),[]),"extensions/loading":()=>Lt(()=>import("./loading-CfdMbwrl.js"),[]),"extensions/overview":()=>Lt(()=>import("./overview-BRtZenVZ.js"),[]),"extensions/testing":()=>Lt(()=>import("./testing-BjX63Hnw.js"),[]),index:()=>Lt(()=>import("./index-DjkHYQxg.js"),[]),installation:()=>Lt(()=>import("./installation-CkjlJXwY.js"),[]),providers:()=>Lt(()=>import("./providers-C6IbA7eV.js"),[]),"quick-start":()=>Lt(()=>import("./quick-start-YzNijQyU.js"),[]),"sdk/callbacks":()=>Lt(()=>import("./callbacks-Bn_dP0Wn.js"),[]),"sdk/options":()=>Lt(()=>import("./options-5jVO69a4.js"),[]),"sdk/overview":()=>Lt(()=>import("./overview-CkcpGgQk.js"),[]),"sdk/sessions":()=>Lt(()=>import("./sessions-CeADaXnR.js"),[]),sessions:()=>Lt(()=>import("./sessions-BR7Y7dXm.js"),[]),themes:()=>Lt(()=>import("./themes-Chyvu6J4.js"),[])};function dm(u){const h=yg[u];if(!h)throw new Error("Unknown page: "+u);return h()}const bg=[{id:"advanced/json-output",title:"JSON Output",content:` +`)}),Ut&&s.jsx("div",{onClick:()=>Ze(null),style:{position:"fixed",inset:0,zIndex:9999,display:"flex",alignItems:"center",justifyContent:"center",background:"rgba(0,0,0,0.7)",backdropFilter:"blur(8px)",cursor:"zoom-out"},children:s.jsx("img",{src:Ut,alt:"",style:{maxWidth:"90vw",maxHeight:"90vh",objectFit:"contain",borderRadius:4,boxShadow:"0 16px 64px rgba(0,0,0,0.4)"}})})]})}function c0({allPages:u,onNavigate:h,onClose:d,mobile:c}){const[v,E]=B.useState(""),[M,O]=B.useState([]),[C,y]=B.useState(0),[G,R]=B.useState(null),K=B.useRef(null),nt=B.useRef(void 0);B.useEffect(()=>{Ih().then(W=>R(!!W)),setTimeout(()=>{var W;return(W=K.current)==null?void 0:W.focus()},50)},[]);const xt=B.useCallback(W=>{if(!W.trim())return[];const I=W.toLowerCase();return u.filter(ct=>ct.title.toLowerCase().includes(I)||(ct.description||"").toLowerCase().includes(I)).slice(0,8).map(ct=>({id:ct.id,title:ct.title,excerpt:ct.description}))},[u]),Dt=B.useCallback(async W=>{var ct;if(!W.trim()){O([]),y(0);return}const I=ul;if(I)try{const Q=await I.search(W),Y=[];for(const H of Q.results.slice(0,8)){const U=await H.data(),lt=(U.url||"").replace(/^\//,"").replace(/\/index\.html$/,"").replace(/\.html$/,"")||"index";Y.push({id:lt,title:((ct=U.meta)==null?void 0:ct.title)||lt,excerpt:U.excerpt||void 0})}O(Y),y(0);return}catch{}O(xt(W)),y(0)},[xt]);B.useEffect(()=>(nt.current&&clearTimeout(nt.current),nt.current=setTimeout(()=>Dt(v),120),()=>{nt.current&&clearTimeout(nt.current)}),[v,Dt]);const At=B.useCallback(W=>{W.key==="ArrowDown"?(W.preventDefault(),y(I=>Math.min(I+1,M.length-1))):W.key==="ArrowUp"?(W.preventDefault(),y(I=>Math.max(I-1,0))):W.key==="Enter"&&M.length>0&&(W.preventDefault(),h(M[C].id))},[M,C,h]);return s.jsx("div",{onClick:d,style:{position:"fixed",inset:0,zIndex:1e3,background:"rgba(0,0,0,0.55)",backdropFilter:"blur(6px)",display:"flex",alignItems:c?"stretch":"flex-start",justifyContent:"center",paddingTop:c?0:"12vh"},children:s.jsxs("div",{onClick:W=>W.stopPropagation(),style:{background:"var(--sf)",border:c?"none":"1px solid var(--bd)",borderRadius:c?0:2,width:"100%",maxWidth:c?"100%":520,boxShadow:c?"none":"0 24px 80px rgba(0,0,0,0.4)",overflow:"hidden",display:"flex",flexDirection:"column",...c?{height:"100%"}:{}},children:[s.jsxs("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"14px 18px",borderBottom:"1px solid var(--bd)"},children:[s.jsx(rm,{}),s.jsx("input",{ref:K,value:v,onChange:W=>E(W.target.value),onKeyDown:At,placeholder:"Search documentation...",style:{flex:1,background:"none",border:"none",outline:"none",color:"var(--tx)",fontSize:15,fontFamily:"var(--font-body)"}}),s.jsx("kbd",{style:{fontFamily:"var(--font-code)",fontSize:10,color:"var(--txM)",background:"var(--cdBg)",padding:"2px 6px",borderRadius:2,border:"1px solid var(--bd)"},children:"ESC"})]}),M.length>0&&s.jsx("div",{style:{padding:6,maxHeight:c?"none":360,overflow:"auto",flex:c?1:void 0},children:M.map((W,I)=>s.jsxs("button",{onClick:()=>h(W.id),style:{display:"block",width:"100%",textAlign:"left",background:I===C?"var(--acD)":"none",border:"none",borderRadius:2,padding:"10px 14px",cursor:"pointer",color:"var(--tx)",fontFamily:"var(--font-body)"},onMouseEnter:()=>y(I),children:[s.jsx("div",{style:{fontWeight:500,fontSize:14,marginBottom:2},children:W.title}),W.excerpt&&s.jsx("div",{style:{fontSize:12,color:"var(--txM)",lineHeight:1.3},dangerouslySetInnerHTML:{__html:W.excerpt}})]},W.id+I))}),v&&!M.length&&s.jsx("div",{style:{padding:"32px 18px",textAlign:"center",color:"var(--txM)",fontSize:14},children:"No results found"}),G===!1&&v&&M.length>0&&s.jsx("div",{style:{padding:"6px 18px 10px",fontSize:11,color:"var(--txM)",textAlign:"center"},children:"Showing title matches. Build your site for full-text search."})]})})}function cm(u,h,d){let c=u;h&&c.startsWith(h)&&(c=c.slice(h.length));const v=c.replace(/^\//,"").replace(/\/index\.html$/,"").replace(/\.html$/,"").replace(/\/$/,"")||"index";return d.find(M=>M.id===v)?v:null}function f0(u,h,d){const c=d.find(v=>v.id===u);return c?h+c.urlPath:h+"/"+u}class d0 extends Error{constructor(h){super(`Page not found: ${h}`),this.code="PAGE_NOT_FOUND",this.name="PageNotFoundError"}}class m0 extends Error{constructor(h,d){super(`Failed to load page: ${h}`),this.code="PAGE_LOAD_ERROR",this.name="PageLoadError",d&&(this.cause=d)}}function p0(u,h){if(!u||!h)return;const{repo:d,branch:c="main",dir:v=""}=u,E=v?`${v.replace(/\/$/,"")}/`:"";return`https://github.com/${d}/edit/${c}/${E}${h}`}function h0(u,h,d,c,v){var O;const E=v(u,c,d);if(E)return E;const M=h.startsWith("#")?h.slice(1):h;return M&&d.some(C=>C.id===M)?M:((O=d[0])==null?void 0:O.id)||"index"}async function fm(u,h,d){const c=h.find(E=>E.id===u);let v;try{v=await d(u)}catch(E){throw new m0(u,E)}if(c!=null&&c.isMdx&&v.meta)return{isMdx:!0,component:v.default,frontmatter:v.meta.frontmatter,headings:v.meta.headings};if(!v.default)throw new d0(u);return v.isApiReference&&v.apiManifest?{isMdx:!1,isApiReference:!0,...v.default,apiManifest:v.apiManifest}:v.isChangelog&&v.changelogEntries?{isMdx:!1,...v.default,changelogEntries:v.changelogEntries}:{isMdx:!1,...v.default}}function g0(u,h){return(u==null?void 0:u.version)||void 0}const Jn={name:"Kit",logo:"/logo.jpg",favicon:"/logo.jpg",baseUrl:"https://go-kit.dev",theme:{preset:"cipher",accent:"#e03030",mode:"dark",fonts:{heading:"Space Grotesk",body:"Space Grotesk",code:"Source Code Pro"}},navigation:[{group:"Getting Started",pages:["index","installation","quick-start"]},{group:"Configuration",pages:["configuration","providers","themes"]},{group:"CLI Reference",pages:["cli/flags","cli/commands"]},{group:"Extensions",pages:["extensions/overview","extensions/capabilities","extensions/examples","extensions/loading","extensions/testing"]},{group:"Sessions",pages:["sessions"]},{group:"Go SDK",pages:["sdk/overview","sdk/options","sdk/callbacks","sdk/sessions"]},{group:"Advanced",pages:["advanced/subagents","advanced/json-output","advanced/testing"]},{group:"Development",pages:["development"]}],search:{provider:"local"},toc:{enabled:!0,depth:3},math:!1,strictLinks:!1,lastUpdated:!0,redirects:[],socialLinks:[{platform:"github",url:"https://github.com/mark3labs/kit"},{platform:"discord",url:"https://discord.gg/RqSS2NQVsY"}]},Wn=[{id:"advanced/json-output",filePath:"advanced/json-output.md",urlPath:"/advanced/json-output",frontmatter:{title:"JSON Output",description:"Machine-readable JSON output for scripting and automation.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-22T20:25:06+03:00"},{id:"advanced/subagents",filePath:"advanced/subagents.md",urlPath:"/advanced/subagents",frontmatter:{title:"Subagents",description:"Multi-agent orchestration with Kit subagents.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-22T20:25:06+03:00"},{id:"advanced/testing",filePath:"advanced/testing.md",urlPath:"/advanced/testing",frontmatter:{title:"Testing with tmux",description:"Test Kit's TUI non-interactively using tmux.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-22T20:25:06+03:00"},{id:"cli/commands",filePath:"cli/commands.md",urlPath:"/cli/commands",frontmatter:{title:"Commands",description:"Complete reference for all Kit CLI subcommands.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-22T20:25:06+03:00"},{id:"cli/flags",filePath:"cli/flags.md",urlPath:"/cli/flags",frontmatter:{title:"Global Flags",description:"Complete reference for all Kit CLI flags.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-22T20:25:06+03:00"},{id:"configuration",filePath:"configuration.md",urlPath:"/configuration",frontmatter:{title:"Configuration",description:"Configure Kit using config files, environment variables, and CLI flags.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-22T20:25:06+03:00"},{id:"development",filePath:"development.md",urlPath:"/development",frontmatter:{title:"Development",description:"Build, test, and contribute to Kit.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-22T20:25:06+03:00"},{id:"extensions/capabilities",filePath:"extensions/capabilities.md",urlPath:"/extensions/capabilities",frontmatter:{title:"Capabilities",description:"All extension capabilities — lifecycle events, tools, commands, widgets, and more.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-22T20:25:06+03:00"},{id:"extensions/examples",filePath:"extensions/examples.md",urlPath:"/extensions/examples",frontmatter:{title:"Examples",description:"Catalog of example extensions included with Kit.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-22T20:25:06+03:00"},{id:"extensions/loading",filePath:"extensions/loading.md",urlPath:"/extensions/loading",frontmatter:{title:"Loading Extensions",description:"How Kit discovers and loads extensions.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-22T20:25:06+03:00"},{id:"extensions/overview",filePath:"extensions/overview.md",urlPath:"/extensions/overview",frontmatter:{title:"Extension System",description:"Overview of Kit's Go-based extension system.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-22T20:25:06+03:00"},{id:"extensions/testing",filePath:"extensions/testing.md",urlPath:"/extensions/testing",frontmatter:{title:"Testing Extensions",description:"Write unit tests for your Kit extensions using the test package.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-22T20:25:06+03:00"},{id:"index",filePath:"index.md",urlPath:"/",frontmatter:{title:"Kit",description:"Kit is a powerful, extensible AI coding agent CLI with multi-provider support, built-in tools, and a rich extension system.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-22T20:25:06+03:00"},{id:"installation",filePath:"installation.md",urlPath:"/installation",frontmatter:{title:"Installation",description:"Install Kit using npm, bun, pnpm, Go, or build from source.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-22T20:25:06+03:00"},{id:"providers",filePath:"providers.md",urlPath:"/providers",frontmatter:{title:"Providers",description:"Supported LLM providers and model configuration.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-22T20:25:06+03:00"},{id:"quick-start",filePath:"quick-start.md",urlPath:"/quick-start",frontmatter:{title:"Quick Start",description:"Get up and running with Kit in minutes.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-22T20:25:06+03:00"},{id:"sdk/callbacks",filePath:"sdk/callbacks.md",urlPath:"/sdk/callbacks",frontmatter:{title:"Callbacks",description:"Monitor tool calls and streaming output with the Kit Go SDK.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-22T20:25:06+03:00"},{id:"sdk/options",filePath:"sdk/options.md",urlPath:"/sdk/options",frontmatter:{title:"SDK Options",description:"Configuration options for the Kit Go SDK.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-22T20:25:06+03:00"},{id:"sdk/overview",filePath:"sdk/overview.md",urlPath:"/sdk/overview",frontmatter:{title:"Go SDK",description:"Embed Kit in your Go applications.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-22T20:25:06+03:00"},{id:"sdk/sessions",filePath:"sdk/sessions.md",urlPath:"/sdk/sessions",frontmatter:{title:"SDK Sessions",description:"Session management in the Kit Go SDK.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-22T20:25:06+03:00"},{id:"sessions",filePath:"sessions.md",urlPath:"/sessions",frontmatter:{title:"Session Management",description:"How Kit persists and manages conversation sessions.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-22T20:25:06+03:00"},{id:"themes",filePath:"themes.md",urlPath:"/themes",frontmatter:{title:"Themes",description:"Customize Kit's appearance with built-in themes, custom theme files, and the extension theme API.",hidden:!1,draft:!1},isMdx:!1,lastUpdated:"2026-04-22T20:25:06+03:00"}],v0=[{section:"Getting Started",pages:[{title:"Kit",id:"index",urlPath:"/"},{title:"Installation",id:"installation",urlPath:"/installation"},{title:"Quick Start",id:"quick-start",urlPath:"/quick-start"}]},{section:"Configuration",pages:[{title:"Configuration",id:"configuration",urlPath:"/configuration"},{title:"Providers",id:"providers",urlPath:"/providers"},{title:"Themes",id:"themes",urlPath:"/themes"}]},{section:"CLI Reference",pages:[{title:"Global Flags",id:"cli/flags",urlPath:"/cli/flags"},{title:"Commands",id:"cli/commands",urlPath:"/cli/commands"}]},{section:"Extensions",pages:[{title:"Extension System",id:"extensions/overview",urlPath:"/extensions/overview"},{title:"Capabilities",id:"extensions/capabilities",urlPath:"/extensions/capabilities"},{title:"Examples",id:"extensions/examples",urlPath:"/extensions/examples"},{title:"Loading Extensions",id:"extensions/loading",urlPath:"/extensions/loading"},{title:"Testing Extensions",id:"extensions/testing",urlPath:"/extensions/testing"}]},{section:"Sessions",pages:[{title:"Session Management",id:"sessions",urlPath:"/sessions"}]},{section:"Go SDK",pages:[{title:"Go SDK",id:"sdk/overview",urlPath:"/sdk/overview"},{title:"SDK Options",id:"sdk/options",urlPath:"/sdk/options"},{title:"Callbacks",id:"sdk/callbacks",urlPath:"/sdk/callbacks"},{title:"SDK Sessions",id:"sdk/sessions",urlPath:"/sdk/sessions"}]},{section:"Advanced",pages:[{title:"Subagents",id:"advanced/subagents",urlPath:"/advanced/subagents"},{title:"JSON Output",id:"advanced/json-output",urlPath:"/advanced/json-output"},{title:"Testing with tmux",id:"advanced/testing",urlPath:"/advanced/testing"}]},{section:"Development",pages:[{title:"Development",id:"development",urlPath:"/development"}]}],Zu=null,y0={"advanced/json-output":()=>Lt(()=>import("./json-output-BiSiIPM0.js"),[]),"advanced/subagents":()=>Lt(()=>import("./subagents-lghAXYlk.js"),[]),"advanced/testing":()=>Lt(()=>import("./testing-COLNxuKj.js"),[]),"cli/commands":()=>Lt(()=>import("./commands-CjvM1xle.js"),[]),"cli/flags":()=>Lt(()=>import("./flags-DBc7n5J6.js"),[]),configuration:()=>Lt(()=>import("./configuration-g-7VIEux.js"),[]),development:()=>Lt(()=>import("./development-E-EC7CAm.js"),[]),"extensions/capabilities":()=>Lt(()=>import("./capabilities-VpEmfPck.js"),[]),"extensions/examples":()=>Lt(()=>import("./examples-Dd5WMq-L.js"),[]),"extensions/loading":()=>Lt(()=>import("./loading-CfdMbwrl.js"),[]),"extensions/overview":()=>Lt(()=>import("./overview-BRtZenVZ.js"),[]),"extensions/testing":()=>Lt(()=>import("./testing-BjX63Hnw.js"),[]),index:()=>Lt(()=>import("./index-DjkHYQxg.js"),[]),installation:()=>Lt(()=>import("./installation-CkjlJXwY.js"),[]),providers:()=>Lt(()=>import("./providers-C6IbA7eV.js"),[]),"quick-start":()=>Lt(()=>import("./quick-start-YzNijQyU.js"),[]),"sdk/callbacks":()=>Lt(()=>import("./callbacks-DurHXbkP.js"),[]),"sdk/options":()=>Lt(()=>import("./options-5jVO69a4.js"),[]),"sdk/overview":()=>Lt(()=>import("./overview-bUFLfXUg.js"),[]),"sdk/sessions":()=>Lt(()=>import("./sessions-CeADaXnR.js"),[]),sessions:()=>Lt(()=>import("./sessions-BR7Y7dXm.js"),[]),themes:()=>Lt(()=>import("./themes-Chyvu6J4.js"),[])};function dm(u){const h=y0[u];if(!h)throw new Error("Unknown page: "+u);return h()}const b0=[{id:"advanced/json-output",title:"JSON Output",content:` # JSON Output Use the \`--json\` flag to get structured output for scripting and automation: @@ -1092,18 +1092,18 @@ Kit automatically discovers and loads extensions from these paths, in order: |------|-------| | \`~/.config/kit/extensions/*.go\` | Global single files | | \`~/.config/kit/extensions/*/main.go\` | Global subdirectory extensions | -| \`.kit/extensions/*.go\` | Project-local `}],xg={};function Sg(u){return u>=200&&u<300?"#22c55e":u>=400&&u<500?"#f59e0b":u>=500?"#ef4444":"#6b7280"}function Tg(u,h,d,c){let v=h;for(const[M,O]of Object.entries(d))v=v.replace(`{${M}}`,encodeURIComponent(O));const E=new URL(v,u);for(const[M,O]of Object.entries(c))O&&E.searchParams.set(M,O);return E.toString()}function Eg(u){return u==="bearer"?"Authorization":"X-API-Key"}const Fu={width:"100%",padding:"6px 10px",border:"1px solid var(--bd)",borderRadius:4,background:"var(--bg)",color:"var(--tx)",fontSize:13,fontFamily:"var(--font-code, monospace)",boxSizing:"border-box"};function Ju({param:u,value:h,onChange:d}){return s.jsxs("div",{style:{marginBottom:10},children:[s.jsxs("label",{style:{display:"block",fontSize:12,fontWeight:600,marginBottom:3,color:"var(--tx)"},children:[u.name,u.required&&s.jsx("span",{style:{color:"#ef4444",marginLeft:2},children:"*"}),s.jsxs("span",{style:{fontWeight:400,color:"var(--txM)",marginLeft:6,fontSize:11},children:[u.in," · ",u.type]})]}),s.jsx("input",{"data-testid":`param-input-${u.name}`,style:Fu,placeholder:u.description||u.name,value:h,onChange:c=>d(c.target.value)})]})}function zg({endpoint:u,baseUrl:h,auth:d}){var lt;const[c,v]=B.useState(!1),[E,M]=B.useState({}),[O,C]=B.useState((lt=u.requestBody)!=null&<.schema?JSON.stringify(u.requestBody.schema,null,2):""),[y,G]=B.useState(""),[R,K]=B.useState(!1),[nt,xt]=B.useState(null),[Dt,At]=B.useState(null),[W,I]=B.useState(!1),ct=(P,mt)=>M(tt=>({...tt,[P]:mt})),Q=u.parameters.filter(P=>P.in==="path"),Y=u.parameters.filter(P=>P.in==="query"),H=u.parameters.filter(P=>P.in==="header"),U=u.requestBody!=null,at=async()=>{K(!0),xt(null),At(null);const P={};for(const Mt of Q)P[Mt.name]=E[Mt.name]||"";const mt={};for(const Mt of Y)E[Mt.name]&&(mt[Mt.name]=E[Mt.name]);const tt={};for(const Mt of H)E[Mt.name]&&(tt[Mt.name]=E[Mt.name]);if(U&&(tt["Content-Type"]="application/json"),d&&y){const Mt=d.header||Eg(d.type);tt[Mt]=d.type==="bearer"?`Bearer ${y}`:y}try{const Mt=Tg(h,u.path,P,mt),$t=Date.now(),ft=await fetch(Mt,{method:u.method.toUpperCase(),headers:tt,body:U&&O?O:void 0}),j=Date.now()-$t,w={};ft.headers.forEach((Tt,m)=>{w[m]=Tt});let Z;if((ft.headers.get("content-type")||"").includes("json")){const Tt=await ft.json();Z=JSON.stringify(Tt,null,2)}else Z=await ft.text();xt({status:ft.status,statusText:ft.statusText,headers:w,body:Z,time:j})}catch(Mt){At(Mt instanceof Error?Mt.message:"Network error")}finally{K(!1)}};return s.jsxs("div",{"data-testid":"api-playground",style:{border:"1px solid var(--bd)",borderRadius:6,overflow:"hidden",marginTop:8},children:[s.jsxs("button",{"data-testid":"playground-toggle",onClick:()=>v(!c),style:{display:"flex",alignItems:"center",gap:8,width:"100%",padding:"10px 14px",background:"var(--sf)",border:"none",cursor:"pointer",fontFamily:"inherit",fontSize:13,fontWeight:600,color:"var(--ac)"},children:[s.jsx("span",{style:{fontSize:14},children:c?"▼":"▶"}),"Try it out"]}),c&&s.jsxs("div",{style:{padding:"14px 16px",borderTop:"1px solid var(--bd)"},children:[d&&s.jsxs("div",{style:{marginBottom:12},children:[s.jsx("label",{style:{display:"block",fontSize:12,fontWeight:600,marginBottom:3,color:"var(--tx)"},children:d.type==="bearer"?"Bearer Token":"API Key"}),s.jsx("input",{"data-testid":"auth-input",type:"password",style:Fu,placeholder:d.type==="bearer"?"Enter bearer token":"Enter API key",value:y,onChange:P=>G(P.target.value)})]}),Q.length>0&&s.jsxs("div",{style:{marginBottom:4},children:[s.jsx("div",{style:{fontSize:11,fontWeight:700,textTransform:"uppercase",color:"var(--txM)",marginBottom:6,letterSpacing:"0.05em"},children:"Path Parameters"}),Q.map(P=>s.jsx(Ju,{param:P,value:E[P.name]||"",onChange:mt=>ct(P.name,mt)},P.name))]}),Y.length>0&&s.jsxs("div",{style:{marginBottom:4},children:[s.jsx("div",{style:{fontSize:11,fontWeight:700,textTransform:"uppercase",color:"var(--txM)",marginBottom:6,letterSpacing:"0.05em"},children:"Query Parameters"}),Y.map(P=>s.jsx(Ju,{param:P,value:E[P.name]||"",onChange:mt=>ct(P.name,mt)},P.name))]}),H.length>0&&s.jsxs("div",{style:{marginBottom:4},children:[s.jsx("div",{style:{fontSize:11,fontWeight:700,textTransform:"uppercase",color:"var(--txM)",marginBottom:6,letterSpacing:"0.05em"},children:"Header Parameters"}),H.map(P=>s.jsx(Ju,{param:P,value:E[P.name]||"",onChange:mt=>ct(P.name,mt)},P.name))]}),U&&s.jsxs("div",{style:{marginBottom:12},children:[s.jsx("label",{style:{display:"block",fontSize:12,fontWeight:600,marginBottom:3,color:"var(--tx)"},children:"Request Body"}),s.jsx("textarea",{"data-testid":"request-body",style:{...Fu,minHeight:100,resize:"vertical",lineHeight:1.5},value:O,onChange:P=>C(P.target.value)})]}),s.jsx("button",{"data-testid":"send-request",onClick:at,disabled:R,style:{padding:"8px 20px",borderRadius:4,border:"none",background:"var(--ac)",color:"#fff",fontWeight:600,fontSize:13,cursor:R?"wait":"pointer",opacity:R?.7:1,fontFamily:"inherit"},children:R?"Sending...":"Send Request"}),Dt&&s.jsx("div",{"data-testid":"playground-error",style:{marginTop:12,padding:"10px 14px",borderRadius:4,background:"#ef444418",border:"1px solid #ef444444",color:"#ef4444",fontSize:13},children:Dt}),nt&&s.jsxs("div",{"data-testid":"playground-response",style:{marginTop:12},children:[s.jsxs("div",{style:{display:"flex",alignItems:"center",gap:10,marginBottom:8},children:[s.jsxs("span",{"data-testid":"response-status",style:{padding:"2px 10px",borderRadius:4,fontSize:13,fontWeight:700,fontFamily:"var(--font-code, monospace)",color:"#fff",background:Sg(nt.status)},children:[nt.status," ",nt.statusText]}),s.jsxs("span",{style:{fontSize:12,color:"var(--txM)"},children:[nt.time,"ms"]})]}),s.jsxs("button",{"data-testid":"toggle-headers",onClick:()=>I(!W),style:{display:"flex",alignItems:"center",gap:4,background:"none",border:"none",cursor:"pointer",fontSize:12,color:"var(--txM)",padding:"4px 0",fontFamily:"inherit",marginBottom:4},children:[s.jsx("span",{style:{transform:W?"rotate(90deg)":"rotate(0)",transition:"transform 0.15s"},children:"▶"}),"Response Headers"]}),W&&s.jsx("pre",{style:{background:"var(--sf)",padding:10,borderRadius:4,fontSize:11,fontFamily:"var(--font-code, monospace)",overflow:"auto",lineHeight:1.5,marginBottom:8,color:"var(--tx2)",margin:"0 0 8px 0"},children:Object.entries(nt.headers).map(([P,mt])=>`${P}: ${mt}`).join(` -`)}),s.jsx("pre",{"data-testid":"response-body",style:{background:"var(--cdBg)",color:"var(--cdTx)",padding:14,borderRadius:6,fontSize:12,fontFamily:"var(--font-code, monospace)",overflow:"auto",lineHeight:1.6,margin:0,maxHeight:400},children:nt.body})]})]})]})}function mm({samples:u}){var c;const[h,d]=B.useState(0);return u.length===0?null:s.jsxs("div",{"data-testid":"code-samples",style:{border:"1px solid var(--bd)",borderRadius:8,overflow:"hidden"},children:[s.jsx("div",{style:{display:"flex",borderBottom:"1px solid var(--bd)",background:"var(--sf)",overflowX:"auto",WebkitOverflowScrolling:"touch"},children:u.map((v,E)=>s.jsx("button",{onClick:()=>d(E),style:{padding:"8px 16px",fontSize:13,fontWeight:500,background:E===h?"var(--cdBg)":"transparent",color:E===h?"var(--tx)":"var(--tx2)",border:"none",borderBottom:E===h?"2px solid var(--ac)":"2px solid transparent",cursor:"pointer",fontFamily:"var(--font-body)",whiteSpace:"nowrap"},children:v.label},v.language))}),s.jsx("pre",{style:{margin:0,padding:16,background:"var(--cdBg)",overflow:"auto"},children:s.jsx("code",{style:{fontSize:13,fontFamily:"var(--font-code)"},children:(c=u[h])==null?void 0:c.code})})]})}const pm={get:"#22c55e",post:"#3b82f6",put:"#f59e0b",delete:"#ef4444",patch:"#a78bfa",head:"#6b7280",options:"#6b7280"};function Cg({method:u}){const h=pm[u.toLowerCase()]||"#6b7280";return s.jsx("span",{"data-testid":"method-badge",style:{display:"inline-block",padding:"2px 8px",borderRadius:4,fontSize:11,fontWeight:700,fontFamily:"var(--font-code, monospace)",textTransform:"uppercase",color:"#fff",background:h,letterSpacing:"0.05em"},children:u.toUpperCase()})}function jg({parameters:u}){return u.length===0?null:s.jsx("div",{style:{overflowX:"auto",marginBottom:16},children:s.jsxs("table",{style:{width:"100%",borderCollapse:"collapse",fontSize:13,lineHeight:1.5},children:[s.jsx("thead",{children:s.jsxs("tr",{style:{borderBottom:"2px solid var(--bd)",textAlign:"left"},children:[s.jsx("th",{style:{padding:"8px 12px",fontWeight:600,color:"var(--tx)"},children:"Name"}),s.jsx("th",{style:{padding:"8px 12px",fontWeight:600,color:"var(--tx)"},children:"Type"}),s.jsx("th",{style:{padding:"8px 12px",fontWeight:600,color:"var(--tx)"},children:"In"}),s.jsx("th",{style:{padding:"8px 12px",fontWeight:600,color:"var(--tx)"},children:"Required"}),s.jsx("th",{style:{padding:"8px 12px",fontWeight:600,color:"var(--tx)"},children:"Description"})]})}),s.jsx("tbody",{children:u.map((h,d)=>s.jsxs("tr",{style:{borderBottom:"1px solid var(--bd)"},children:[s.jsx("td",{style:{padding:"8px 12px",fontFamily:"var(--font-code, monospace)",fontWeight:500,color:h.in==="path"?"var(--ac)":"var(--tx)"},children:h.name}),s.jsx("td",{style:{padding:"8px 12px",fontFamily:"var(--font-code, monospace)",color:"var(--tx2)"},children:h.type}),s.jsx("td",{style:{padding:"8px 12px",color:"var(--txM)"},children:s.jsx("span",{style:{padding:"1px 6px",borderRadius:3,fontSize:11,background:h.in==="path"?"var(--ac)22":"var(--sf)",color:h.in==="path"?"var(--ac)":"var(--txM)"},children:h.in})}),s.jsx("td",{style:{padding:"8px 12px"},children:h.required?s.jsx("span",{"data-testid":"required-badge",style:{padding:"1px 6px",borderRadius:3,fontSize:11,fontWeight:600,background:"#ef444422",color:"#ef4444"},children:"required"}):s.jsx("span",{style:{color:"var(--txM)",fontSize:12},children:"optional"})}),s.jsx("td",{style:{padding:"8px 12px",color:"var(--tx2)"},children:h.description||"—"})]},`${h.name}-${d}`))})]})})}function Ag({requestBody:u}){return s.jsxs("div",{style:{marginBottom:16},children:[s.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,marginBottom:8},children:[s.jsx("span",{style:{padding:"2px 8px",borderRadius:4,fontSize:11,fontFamily:"var(--font-code, monospace)",background:"var(--sf)",color:"var(--tx2)"},children:u.contentType}),u.required&&s.jsx("span",{style:{padding:"1px 6px",borderRadius:3,fontSize:11,fontWeight:600,background:"#ef444422",color:"#ef4444"},children:"required"})]}),u.description&&s.jsx("p",{style:{fontSize:13,color:"var(--tx2)",marginBottom:8,marginTop:0},children:u.description}),u.schema&&s.jsx("pre",{style:{background:"var(--cdBg)",color:"var(--cdTx)",padding:16,borderRadius:6,fontSize:12,fontFamily:"var(--font-code, monospace)",overflow:"auto",lineHeight:1.6,margin:0},children:JSON.stringify(u.schema,null,2)})]})}function Mg(u){return u.startsWith("2")?"#22c55e":u.startsWith("4")?"#f59e0b":u.startsWith("5")?"#ef4444":"#6b7280"}function kg({responses:u}){return u.length===0?null:s.jsx("div",{style:{marginBottom:16},children:u.map((h,d)=>{const c=Mg(h.statusCode);return s.jsxs("div",{style:{border:"1px solid var(--bd)",borderRadius:6,marginBottom:8,overflow:"hidden"},children:[s.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"10px 14px",background:"var(--sf)"},children:[s.jsx("span",{"data-testid":"status-badge",style:{padding:"2px 8px",borderRadius:4,fontSize:12,fontWeight:700,fontFamily:"var(--font-code, monospace)",color:"#fff",background:c},children:h.statusCode}),s.jsx("span",{style:{fontSize:13,color:"var(--tx2)"},children:h.description})]}),h.schema&&s.jsx("pre",{style:{background:"var(--cdBg)",color:"var(--cdTx)",padding:14,fontSize:12,fontFamily:"var(--font-code, monospace)",overflow:"auto",lineHeight:1.6,margin:0,borderTop:"1px solid var(--bd)"},children:JSON.stringify(h.schema,null,2)})]},`${h.statusCode}-${d}`)})})}function _g(u,h){const d=h+u.path,c=[`curl -X ${u.method.toUpperCase()} "${d}"`],v=u.parameters.filter(E=>E.in==="header");for(const E of v)c.push(` -H "${E.name}: "`);return u.requestBody&&(c.push(` -H "Content-Type: ${u.requestBody.contentType}"`),u.requestBody.schema&&c.push(` -d '${JSON.stringify(u.requestBody.schema,null,2)}'`)),c.join(` \\ -`)}function Dg(u,h){var M;const d=h+u.path,c=[];c.push(` method: "${u.method.toUpperCase()}",`);const v={},E=u.parameters.filter(O=>O.in==="header");for(const O of E)v[O.name]="";return u.requestBody&&(v["Content-Type"]=u.requestBody.contentType),Object.keys(v).length>0&&c.push(` headers: ${JSON.stringify(v,null,4).replace(/\n/g,` +| \`.kit/extensions/*.go\` | Project-local `}],x0={};function S0(u){return u>=200&&u<300?"#22c55e":u>=400&&u<500?"#f59e0b":u>=500?"#ef4444":"#6b7280"}function T0(u,h,d,c){let v=h;for(const[M,O]of Object.entries(d))v=v.replace(`{${M}}`,encodeURIComponent(O));const E=new URL(v,u);for(const[M,O]of Object.entries(c))O&&E.searchParams.set(M,O);return E.toString()}function E0(u){return u==="bearer"?"Authorization":"X-API-Key"}const Fu={width:"100%",padding:"6px 10px",border:"1px solid var(--bd)",borderRadius:4,background:"var(--bg)",color:"var(--tx)",fontSize:13,fontFamily:"var(--font-code, monospace)",boxSizing:"border-box"};function Ju({param:u,value:h,onChange:d}){return s.jsxs("div",{style:{marginBottom:10},children:[s.jsxs("label",{style:{display:"block",fontSize:12,fontWeight:600,marginBottom:3,color:"var(--tx)"},children:[u.name,u.required&&s.jsx("span",{style:{color:"#ef4444",marginLeft:2},children:"*"}),s.jsxs("span",{style:{fontWeight:400,color:"var(--txM)",marginLeft:6,fontSize:11},children:[u.in," · ",u.type]})]}),s.jsx("input",{"data-testid":`param-input-${u.name}`,style:Fu,placeholder:u.description||u.name,value:h,onChange:c=>d(c.target.value)})]})}function z0({endpoint:u,baseUrl:h,auth:d}){var lt;const[c,v]=B.useState(!1),[E,M]=B.useState({}),[O,C]=B.useState((lt=u.requestBody)!=null&<.schema?JSON.stringify(u.requestBody.schema,null,2):""),[y,G]=B.useState(""),[R,K]=B.useState(!1),[nt,xt]=B.useState(null),[Dt,At]=B.useState(null),[W,I]=B.useState(!1),ct=(P,mt)=>M(tt=>({...tt,[P]:mt})),Q=u.parameters.filter(P=>P.in==="path"),Y=u.parameters.filter(P=>P.in==="query"),H=u.parameters.filter(P=>P.in==="header"),U=u.requestBody!=null,at=async()=>{K(!0),xt(null),At(null);const P={};for(const Mt of Q)P[Mt.name]=E[Mt.name]||"";const mt={};for(const Mt of Y)E[Mt.name]&&(mt[Mt.name]=E[Mt.name]);const tt={};for(const Mt of H)E[Mt.name]&&(tt[Mt.name]=E[Mt.name]);if(U&&(tt["Content-Type"]="application/json"),d&&y){const Mt=d.header||E0(d.type);tt[Mt]=d.type==="bearer"?`Bearer ${y}`:y}try{const Mt=T0(h,u.path,P,mt),$t=Date.now(),ft=await fetch(Mt,{method:u.method.toUpperCase(),headers:tt,body:U&&O?O:void 0}),j=Date.now()-$t,w={};ft.headers.forEach((Tt,m)=>{w[m]=Tt});let Z;if((ft.headers.get("content-type")||"").includes("json")){const Tt=await ft.json();Z=JSON.stringify(Tt,null,2)}else Z=await ft.text();xt({status:ft.status,statusText:ft.statusText,headers:w,body:Z,time:j})}catch(Mt){At(Mt instanceof Error?Mt.message:"Network error")}finally{K(!1)}};return s.jsxs("div",{"data-testid":"api-playground",style:{border:"1px solid var(--bd)",borderRadius:6,overflow:"hidden",marginTop:8},children:[s.jsxs("button",{"data-testid":"playground-toggle",onClick:()=>v(!c),style:{display:"flex",alignItems:"center",gap:8,width:"100%",padding:"10px 14px",background:"var(--sf)",border:"none",cursor:"pointer",fontFamily:"inherit",fontSize:13,fontWeight:600,color:"var(--ac)"},children:[s.jsx("span",{style:{fontSize:14},children:c?"▼":"▶"}),"Try it out"]}),c&&s.jsxs("div",{style:{padding:"14px 16px",borderTop:"1px solid var(--bd)"},children:[d&&s.jsxs("div",{style:{marginBottom:12},children:[s.jsx("label",{style:{display:"block",fontSize:12,fontWeight:600,marginBottom:3,color:"var(--tx)"},children:d.type==="bearer"?"Bearer Token":"API Key"}),s.jsx("input",{"data-testid":"auth-input",type:"password",style:Fu,placeholder:d.type==="bearer"?"Enter bearer token":"Enter API key",value:y,onChange:P=>G(P.target.value)})]}),Q.length>0&&s.jsxs("div",{style:{marginBottom:4},children:[s.jsx("div",{style:{fontSize:11,fontWeight:700,textTransform:"uppercase",color:"var(--txM)",marginBottom:6,letterSpacing:"0.05em"},children:"Path Parameters"}),Q.map(P=>s.jsx(Ju,{param:P,value:E[P.name]||"",onChange:mt=>ct(P.name,mt)},P.name))]}),Y.length>0&&s.jsxs("div",{style:{marginBottom:4},children:[s.jsx("div",{style:{fontSize:11,fontWeight:700,textTransform:"uppercase",color:"var(--txM)",marginBottom:6,letterSpacing:"0.05em"},children:"Query Parameters"}),Y.map(P=>s.jsx(Ju,{param:P,value:E[P.name]||"",onChange:mt=>ct(P.name,mt)},P.name))]}),H.length>0&&s.jsxs("div",{style:{marginBottom:4},children:[s.jsx("div",{style:{fontSize:11,fontWeight:700,textTransform:"uppercase",color:"var(--txM)",marginBottom:6,letterSpacing:"0.05em"},children:"Header Parameters"}),H.map(P=>s.jsx(Ju,{param:P,value:E[P.name]||"",onChange:mt=>ct(P.name,mt)},P.name))]}),U&&s.jsxs("div",{style:{marginBottom:12},children:[s.jsx("label",{style:{display:"block",fontSize:12,fontWeight:600,marginBottom:3,color:"var(--tx)"},children:"Request Body"}),s.jsx("textarea",{"data-testid":"request-body",style:{...Fu,minHeight:100,resize:"vertical",lineHeight:1.5},value:O,onChange:P=>C(P.target.value)})]}),s.jsx("button",{"data-testid":"send-request",onClick:at,disabled:R,style:{padding:"8px 20px",borderRadius:4,border:"none",background:"var(--ac)",color:"#fff",fontWeight:600,fontSize:13,cursor:R?"wait":"pointer",opacity:R?.7:1,fontFamily:"inherit"},children:R?"Sending...":"Send Request"}),Dt&&s.jsx("div",{"data-testid":"playground-error",style:{marginTop:12,padding:"10px 14px",borderRadius:4,background:"#ef444418",border:"1px solid #ef444444",color:"#ef4444",fontSize:13},children:Dt}),nt&&s.jsxs("div",{"data-testid":"playground-response",style:{marginTop:12},children:[s.jsxs("div",{style:{display:"flex",alignItems:"center",gap:10,marginBottom:8},children:[s.jsxs("span",{"data-testid":"response-status",style:{padding:"2px 10px",borderRadius:4,fontSize:13,fontWeight:700,fontFamily:"var(--font-code, monospace)",color:"#fff",background:S0(nt.status)},children:[nt.status," ",nt.statusText]}),s.jsxs("span",{style:{fontSize:12,color:"var(--txM)"},children:[nt.time,"ms"]})]}),s.jsxs("button",{"data-testid":"toggle-headers",onClick:()=>I(!W),style:{display:"flex",alignItems:"center",gap:4,background:"none",border:"none",cursor:"pointer",fontSize:12,color:"var(--txM)",padding:"4px 0",fontFamily:"inherit",marginBottom:4},children:[s.jsx("span",{style:{transform:W?"rotate(90deg)":"rotate(0)",transition:"transform 0.15s"},children:"▶"}),"Response Headers"]}),W&&s.jsx("pre",{style:{background:"var(--sf)",padding:10,borderRadius:4,fontSize:11,fontFamily:"var(--font-code, monospace)",overflow:"auto",lineHeight:1.5,marginBottom:8,color:"var(--tx2)",margin:"0 0 8px 0"},children:Object.entries(nt.headers).map(([P,mt])=>`${P}: ${mt}`).join(` +`)}),s.jsx("pre",{"data-testid":"response-body",style:{background:"var(--cdBg)",color:"var(--cdTx)",padding:14,borderRadius:6,fontSize:12,fontFamily:"var(--font-code, monospace)",overflow:"auto",lineHeight:1.6,margin:0,maxHeight:400},children:nt.body})]})]})]})}function mm({samples:u}){var c;const[h,d]=B.useState(0);return u.length===0?null:s.jsxs("div",{"data-testid":"code-samples",style:{border:"1px solid var(--bd)",borderRadius:8,overflow:"hidden"},children:[s.jsx("div",{style:{display:"flex",borderBottom:"1px solid var(--bd)",background:"var(--sf)",overflowX:"auto",WebkitOverflowScrolling:"touch"},children:u.map((v,E)=>s.jsx("button",{onClick:()=>d(E),style:{padding:"8px 16px",fontSize:13,fontWeight:500,background:E===h?"var(--cdBg)":"transparent",color:E===h?"var(--tx)":"var(--tx2)",border:"none",borderBottom:E===h?"2px solid var(--ac)":"2px solid transparent",cursor:"pointer",fontFamily:"var(--font-body)",whiteSpace:"nowrap"},children:v.label},v.language))}),s.jsx("pre",{style:{margin:0,padding:16,background:"var(--cdBg)",overflow:"auto"},children:s.jsx("code",{style:{fontSize:13,fontFamily:"var(--font-code)"},children:(c=u[h])==null?void 0:c.code})})]})}const pm={get:"#22c55e",post:"#3b82f6",put:"#f59e0b",delete:"#ef4444",patch:"#a78bfa",head:"#6b7280",options:"#6b7280"};function C0({method:u}){const h=pm[u.toLowerCase()]||"#6b7280";return s.jsx("span",{"data-testid":"method-badge",style:{display:"inline-block",padding:"2px 8px",borderRadius:4,fontSize:11,fontWeight:700,fontFamily:"var(--font-code, monospace)",textTransform:"uppercase",color:"#fff",background:h,letterSpacing:"0.05em"},children:u.toUpperCase()})}function j0({parameters:u}){return u.length===0?null:s.jsx("div",{style:{overflowX:"auto",marginBottom:16},children:s.jsxs("table",{style:{width:"100%",borderCollapse:"collapse",fontSize:13,lineHeight:1.5},children:[s.jsx("thead",{children:s.jsxs("tr",{style:{borderBottom:"2px solid var(--bd)",textAlign:"left"},children:[s.jsx("th",{style:{padding:"8px 12px",fontWeight:600,color:"var(--tx)"},children:"Name"}),s.jsx("th",{style:{padding:"8px 12px",fontWeight:600,color:"var(--tx)"},children:"Type"}),s.jsx("th",{style:{padding:"8px 12px",fontWeight:600,color:"var(--tx)"},children:"In"}),s.jsx("th",{style:{padding:"8px 12px",fontWeight:600,color:"var(--tx)"},children:"Required"}),s.jsx("th",{style:{padding:"8px 12px",fontWeight:600,color:"var(--tx)"},children:"Description"})]})}),s.jsx("tbody",{children:u.map((h,d)=>s.jsxs("tr",{style:{borderBottom:"1px solid var(--bd)"},children:[s.jsx("td",{style:{padding:"8px 12px",fontFamily:"var(--font-code, monospace)",fontWeight:500,color:h.in==="path"?"var(--ac)":"var(--tx)"},children:h.name}),s.jsx("td",{style:{padding:"8px 12px",fontFamily:"var(--font-code, monospace)",color:"var(--tx2)"},children:h.type}),s.jsx("td",{style:{padding:"8px 12px",color:"var(--txM)"},children:s.jsx("span",{style:{padding:"1px 6px",borderRadius:3,fontSize:11,background:h.in==="path"?"var(--ac)22":"var(--sf)",color:h.in==="path"?"var(--ac)":"var(--txM)"},children:h.in})}),s.jsx("td",{style:{padding:"8px 12px"},children:h.required?s.jsx("span",{"data-testid":"required-badge",style:{padding:"1px 6px",borderRadius:3,fontSize:11,fontWeight:600,background:"#ef444422",color:"#ef4444"},children:"required"}):s.jsx("span",{style:{color:"var(--txM)",fontSize:12},children:"optional"})}),s.jsx("td",{style:{padding:"8px 12px",color:"var(--tx2)"},children:h.description||"—"})]},`${h.name}-${d}`))})]})})}function A0({requestBody:u}){return s.jsxs("div",{style:{marginBottom:16},children:[s.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,marginBottom:8},children:[s.jsx("span",{style:{padding:"2px 8px",borderRadius:4,fontSize:11,fontFamily:"var(--font-code, monospace)",background:"var(--sf)",color:"var(--tx2)"},children:u.contentType}),u.required&&s.jsx("span",{style:{padding:"1px 6px",borderRadius:3,fontSize:11,fontWeight:600,background:"#ef444422",color:"#ef4444"},children:"required"})]}),u.description&&s.jsx("p",{style:{fontSize:13,color:"var(--tx2)",marginBottom:8,marginTop:0},children:u.description}),u.schema&&s.jsx("pre",{style:{background:"var(--cdBg)",color:"var(--cdTx)",padding:16,borderRadius:6,fontSize:12,fontFamily:"var(--font-code, monospace)",overflow:"auto",lineHeight:1.6,margin:0},children:JSON.stringify(u.schema,null,2)})]})}function M0(u){return u.startsWith("2")?"#22c55e":u.startsWith("4")?"#f59e0b":u.startsWith("5")?"#ef4444":"#6b7280"}function k0({responses:u}){return u.length===0?null:s.jsx("div",{style:{marginBottom:16},children:u.map((h,d)=>{const c=M0(h.statusCode);return s.jsxs("div",{style:{border:"1px solid var(--bd)",borderRadius:6,marginBottom:8,overflow:"hidden"},children:[s.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"10px 14px",background:"var(--sf)"},children:[s.jsx("span",{"data-testid":"status-badge",style:{padding:"2px 8px",borderRadius:4,fontSize:12,fontWeight:700,fontFamily:"var(--font-code, monospace)",color:"#fff",background:c},children:h.statusCode}),s.jsx("span",{style:{fontSize:13,color:"var(--tx2)"},children:h.description})]}),h.schema&&s.jsx("pre",{style:{background:"var(--cdBg)",color:"var(--cdTx)",padding:14,fontSize:12,fontFamily:"var(--font-code, monospace)",overflow:"auto",lineHeight:1.6,margin:0,borderTop:"1px solid var(--bd)"},children:JSON.stringify(h.schema,null,2)})]},`${h.statusCode}-${d}`)})})}function _0(u,h){const d=h+u.path,c=[`curl -X ${u.method.toUpperCase()} "${d}"`],v=u.parameters.filter(E=>E.in==="header");for(const E of v)c.push(` -H "${E.name}: "`);return u.requestBody&&(c.push(` -H "Content-Type: ${u.requestBody.contentType}"`),u.requestBody.schema&&c.push(` -d '${JSON.stringify(u.requestBody.schema,null,2)}'`)),c.join(` \\ +`)}function D0(u,h){var M;const d=h+u.path,c=[];c.push(` method: "${u.method.toUpperCase()}",`);const v={},E=u.parameters.filter(O=>O.in==="header");for(const O of E)v[O.name]="";return u.requestBody&&(v["Content-Type"]=u.requestBody.contentType),Object.keys(v).length>0&&c.push(` headers: ${JSON.stringify(v,null,4).replace(/\n/g,` `)},`),(M=u.requestBody)!=null&&M.schema&&c.push(` body: JSON.stringify(${JSON.stringify(u.requestBody.schema,null,4).replace(/\n/g,` `)}),`),`fetch("${d}", { ${c.join(` `)} -});`}function Og(u,h){var O,C;const d=h+u.path,c=["import requests",""],v={},E=u.parameters.filter(y=>y.in==="header");for(const y of E)v[y.name]="";u.requestBody&&(v["Content-Type"]=u.requestBody.contentType),Object.keys(v).length>0&&(c.push(`headers = ${JSON.stringify(v,null,4)}`),c.push("")),(O=u.requestBody)!=null&&O.schema&&(c.push(`data = ${JSON.stringify(u.requestBody.schema,null,4)}`),c.push(""));const M=[`"${d}"`];return Object.keys(v).length>0&&M.push("headers=headers"),(C=u.requestBody)!=null&&C.schema&&M.push("json=data"),c.push(`response = requests.${u.method}(${M.join(", ")})`),c.push("print(response.json())"),c.join(` -`)}function Rg(u,h){var E,M;const d=h+u.path,c=["package main","","import (",' "fmt"',' "net/http"'];(E=u.requestBody)!=null&&E.schema&&c.push(' "bytes"',' "encoding/json"'),c.push(' "io"',")",""),c.push("func main() {"),(M=u.requestBody)!=null&&M.schema?(c.push(` body, _ := json.Marshal(${JSON.stringify(u.requestBody.schema)})`),c.push(` req, _ := http.NewRequest("${u.method.toUpperCase()}", "${d}", bytes.NewBuffer(body))`)):c.push(` req, _ := http.NewRequest("${u.method.toUpperCase()}", "${d}", nil)`);const v=u.parameters.filter(O=>O.in==="header");for(const O of v)c.push(` req.Header.Set("${O.name}", "")`);return u.requestBody&&c.push(` req.Header.Set("Content-Type", "${u.requestBody.contentType}")`),c.push(" resp, _ := http.DefaultClient.Do(req)"),c.push(" defer resp.Body.Close()"),c.push(" data, _ := io.ReadAll(resp.Body)"),c.push(" fmt.Println(string(data))"),c.push("}"),c.join(` -`)}function Bg(u,h){var E;const d=h+u.path,c=["import java.net.http.*;","import java.net.URI;","","var client = HttpClient.newHttpClient();"];(E=u.requestBody)!=null&&E.schema?(c.push(`var body = ${JSON.stringify(JSON.stringify(u.requestBody.schema))};`),c.push("var request = HttpRequest.newBuilder()"),c.push(` .uri(URI.create("${d}"))`),c.push(` .method("${u.method.toUpperCase()}", HttpRequest.BodyPublishers.ofString(body))`)):(c.push("var request = HttpRequest.newBuilder()"),c.push(` .uri(URI.create("${d}"))`),c.push(` .method("${u.method.toUpperCase()}", HttpRequest.BodyPublishers.noBody())`));const v=u.parameters.filter(M=>M.in==="header");for(const M of v)c.push(` .header("${M.name}", "")`);return u.requestBody&&c.push(` .header("Content-Type", "${u.requestBody.contentType}")`),c.push(" .build();"),c.push(""),c.push("var response = client.send(request, HttpResponse.BodyHandlers.ofString());"),c.push("System.out.println(response.body());"),c.join(` -`)}function wg(u,h){var E;const d=h+u.path,c=["using var client = new HttpClient();","",`var request = new HttpRequestMessage(HttpMethod.${u.method.charAt(0).toUpperCase()+u.method.slice(1)}, "${d}");`],v=u.parameters.filter(M=>M.in==="header");for(const M of v)c.push(`request.Headers.Add("${M.name}", "");`);return(E=u.requestBody)!=null&&E.schema&&(c.push("request.Content = new StringContent("),c.push(` ${JSON.stringify(JSON.stringify(u.requestBody.schema))},`),c.push(" System.Text.Encoding.UTF8,"),c.push(` "${u.requestBody.contentType}");`)),c.push(""),c.push("var response = await client.SendAsync(request);"),c.push("var body = await response.Content.ReadAsStringAsync();"),c.push("Console.WriteLine(body);"),c.join(` -`)}function Ug({endpoint:u,baseUrl:h="https://api.example.com"}){const[d,c]=B.useState(0),v=["cURL","JavaScript","Python","Go","Java","C#"],E=[_g(u,h),Dg(u,h),Og(u,h),Rg(u,h),Bg(u,h),wg(u,h)];return s.jsxs("div",{style:{marginBottom:16},children:[s.jsx("div",{style:{display:"flex",gap:0,borderBottom:"1px solid var(--bd)",overflowX:"auto",WebkitOverflowScrolling:"touch"},children:v.map((M,O)=>s.jsx("button",{onClick:()=>c(O),style:{padding:"6px 14px",background:"none",border:"none",borderBottom:d===O?"2px solid var(--ac)":"2px solid transparent",color:d===O?"var(--ac)":"var(--txM)",fontWeight:d===O?600:400,fontSize:12,cursor:"pointer",fontFamily:"inherit",whiteSpace:"nowrap"},children:M},M))}),s.jsx("pre",{style:{background:"var(--cdBg)",color:"var(--cdTx)",padding:16,borderRadius:"0 0 6px 6px",fontSize:12,fontFamily:"var(--font-code, monospace)",overflow:"auto",lineHeight:1.6,margin:0},children:E[d]})]})}function Hg({endpoint:u,baseUrl:h,defaultExpanded:d=!1,showPlayground:c,playgroundAuth:v}){const[E,M]=B.useState(d),O=(u.operationId||`${u.method}-${u.path}`).toLowerCase().replace(/[^a-z0-9]+/g,"-"),C=u.parameters.length>0||u.requestBody!=null||u.responses.length>0;return s.jsxs("div",{id:O,style:{border:"1px solid var(--bd)",borderRadius:8,marginBottom:12,overflow:"hidden",scrollMarginTop:24},children:[s.jsxs("button",{onClick:()=>C&&M(!E),style:{display:"flex",alignItems:"center",gap:10,width:"100%",padding:"14px 18px",background:"var(--sf)",border:"none",cursor:C?"pointer":"default",textAlign:"left",fontFamily:"inherit",color:"var(--tx)"},children:[s.jsx(Cg,{method:u.method}),s.jsx("span",{style:{fontFamily:"var(--font-code, monospace)",fontSize:14,fontWeight:500},children:u.path}),u.deprecated&&s.jsx("span",{"data-testid":"deprecated-badge",style:{padding:"1px 6px",borderRadius:3,fontSize:10,fontWeight:700,background:"#f59e0b33",color:"#f59e0b",textTransform:"uppercase",letterSpacing:"0.05em"},children:"Deprecated"}),u.tags.map(y=>s.jsx("span",{style:{padding:"1px 6px",borderRadius:3,fontSize:10,background:"var(--bd)",color:"var(--txM)"},children:y},y)),s.jsx("span",{style:{flex:1}}),u.summary&&s.jsx("span",{style:{fontSize:13,color:"var(--tx2)",marginRight:8},children:u.summary}),C&&s.jsx("span",{style:{transform:E?"rotate(180deg)":"rotate(0)",transition:"transform 0.2s",fontSize:12,color:"var(--txM)"},children:"▾"})]}),E&&s.jsxs("div",{style:{padding:"16px 18px",borderTop:"1px solid var(--bd)"},children:[u.description&&s.jsx("p",{style:{fontSize:14,color:"var(--tx2)",lineHeight:1.65,marginTop:0,marginBottom:16},children:u.description}),u.parameters.length>0&&s.jsxs("div",{style:{marginBottom:16},children:[s.jsx("h4",{style:{fontSize:13,fontWeight:600,marginBottom:8,color:"var(--tx)"},children:"Parameters"}),s.jsx(jg,{parameters:u.parameters})]}),u.requestBody&&s.jsxs("div",{style:{marginBottom:16},children:[s.jsx("h4",{style:{fontSize:13,fontWeight:600,marginBottom:8,color:"var(--tx)"},children:"Request Body"}),s.jsx(Ag,{requestBody:u.requestBody})]}),u.responses.length>0&&s.jsxs("div",{style:{marginBottom:16},children:[s.jsx("h4",{style:{fontSize:13,fontWeight:600,marginBottom:8,color:"var(--tx)"},children:"Responses"}),s.jsx(kg,{responses:u.responses})]}),s.jsxs("div",{children:[s.jsx("h4",{style:{fontSize:13,fontWeight:600,marginBottom:8,color:"var(--tx)"},children:"Code Examples"}),u.codeSamples&&u.codeSamples.length>0?s.jsx(mm,{samples:u.codeSamples}):s.jsx(Ug,{endpoint:u,baseUrl:h})]}),c&&s.jsx("div",{style:{marginTop:16},children:s.jsx(zg,{endpoint:u,baseUrl:h||"https://api.example.com",auth:v})})]})]})}function Ng({manifest:u,baseUrl:h,showPlayground:d,playgroundAuth:c}){const v=h||(u.servers.length>0?u.servers[0].url:"https://api.example.com"),E=new Map;for(const C of u.endpoints){const y=C.tags.length>0?C.tags[0]:"Other";E.has(y)||E.set(y,[]),E.get(y).push(C)}const M=[];for(const C of u.tags)E.has(C.name)&&M.push(C.name);for(const C of E.keys())M.includes(C)||M.push(C);const O=new Map;for(const C of u.tags)O.set(C.name,C.description);return s.jsxs("div",{style:{display:"flex",gap:32},children:[s.jsxs("nav",{"data-testid":"api-toc",style:{width:200,flexShrink:0,position:"sticky",top:24,alignSelf:"flex-start",maxHeight:"calc(100vh - 48px)",overflowY:"auto"},children:[s.jsx("div",{style:{fontSize:11,fontWeight:700,textTransform:"uppercase",color:"var(--txM)",marginBottom:12,letterSpacing:"0.05em"},children:"Endpoints"}),M.map(C=>{const y=C.toLowerCase().replace(/\s+/g,"-");return s.jsxs("div",{style:{marginBottom:14},children:[s.jsx("a",{href:`#${y}`,onClick:G=>{var R;G.preventDefault(),(R=document.getElementById(y))==null||R.scrollIntoView({behavior:"smooth",block:"start"})},style:{display:"block",fontSize:13,fontWeight:600,color:"var(--tx)",textDecoration:"none",marginBottom:4},children:C}),(E.get(C)||[]).map(G=>{const R=(G.operationId||`${G.method}-${G.path}`).toLowerCase().replace(/[^a-z0-9]+/g,"-");return s.jsxs("a",{href:`#${R}`,onClick:K=>{var nt;K.preventDefault(),(nt=document.getElementById(R))==null||nt.scrollIntoView({behavior:"smooth",block:"start"})},style:{display:"flex",alignItems:"center",gap:6,fontSize:12,color:"var(--tx2)",textDecoration:"none",padding:"3px 0"},children:[s.jsx("span",{style:{fontSize:9,fontWeight:700,fontFamily:"var(--font-code, monospace)",color:pm[G.method]||"#6b7280",width:36,textTransform:"uppercase"},children:G.method}),s.jsx("span",{style:{fontFamily:"var(--font-code, monospace)"},children:G.path})]},`${G.method}-${G.path}`)})]},C)})]}),s.jsxs("div",{style:{flex:1,minWidth:0},children:[s.jsxs("div",{style:{marginBottom:32},children:[s.jsx("h1",{style:{fontSize:28,fontWeight:700,marginBottom:4},children:u.title}),s.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,marginBottom:8},children:[s.jsxs("span",{style:{padding:"2px 8px",borderRadius:4,fontSize:11,fontWeight:600,background:"var(--sf)",color:"var(--txM)"},children:["v",u.version]}),u.servers.length>0&&s.jsx("span",{style:{fontSize:12,fontFamily:"var(--font-code, monospace)",color:"var(--tx2)"},children:u.servers[0].url})]}),u.description&&s.jsx("p",{style:{fontSize:14,color:"var(--tx2)",lineHeight:1.65,marginTop:0},children:u.description})]}),M.map(C=>s.jsxs("section",{id:C.toLowerCase().replace(/\s+/g,"-"),"data-testid":"tag-section",style:{marginBottom:40},children:[s.jsx("h2",{style:{fontSize:20,fontWeight:700,marginBottom:4},children:C}),O.get(C)&&s.jsx("p",{style:{fontSize:14,color:"var(--tx2)",lineHeight:1.65,marginTop:0,marginBottom:16},children:O.get(C)}),(E.get(C)||[]).map(y=>s.jsx(Hg,{endpoint:y,baseUrl:v,showPlayground:d,playgroundAuth:c},`${y.method}-${y.path}`))]},C))]})]})}function qg({href:u,title:h,description:d,icon:c,external:v}){const E=v??u.startsWith("http");return s.jsxs("a",{href:u,target:E?"_blank":void 0,rel:E?"noopener noreferrer":void 0,style:{display:"block",padding:"16px 20px",border:"1px solid var(--bd)",borderRadius:8,textDecoration:"none",color:"inherit",background:"var(--sf)",transition:"border-color 0.15s, background 0.15s",cursor:"pointer"},onMouseEnter:M=>{M.currentTarget.style.borderColor="var(--ac)",M.currentTarget.style.background="var(--sfH)"},onMouseLeave:M=>{M.currentTarget.style.borderColor="var(--bd)",M.currentTarget.style.background="var(--sf)"},children:[s.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8},children:[c&&s.jsx("span",{style:{fontSize:18},children:c}),s.jsx("span",{style:{fontWeight:600,fontSize:15,color:"var(--tx)"},children:h}),s.jsx("span",{style:{marginLeft:"auto",color:"var(--tx2)",fontSize:14},children:E?"↗":"→"})]}),d&&s.jsx("p",{style:{margin:"6px 0 0",fontSize:13,color:"var(--tx2)",lineHeight:1.5},children:d})]})}function Lg({columns:u=2,children:h}){return s.jsx("div",{style:{display:"grid",gridTemplateColumns:`repeat(${u}, 1fr)`,gap:12,marginTop:16,marginBottom:16},children:h})}const Gg={Added:"#22c55e",Changed:"#3b82f6",Deprecated:"#f59e0b",Removed:"#ef4444",Fixed:"#8b5cf6",Security:"#f97316"};function lm(u){return Gg[u]||"#6b7280"}function Yg({entries:u,initialLimit:h}){const[d,c]=B.useState(!h),v=d?u:u.slice(0,h||u.length);return u.length===0?s.jsx("div",{"data-testid":"changelog-empty",style:{padding:"40px 0",textAlign:"center",color:"var(--txM)",fontSize:14},children:"No changelog entries found."}):s.jsxs("div",{"data-testid":"changelog-timeline",style:{position:"relative"},children:[s.jsx("div",{style:{position:"absolute",left:15,top:8,bottom:8,width:2,background:"var(--bd)"}}),v.map((E,M)=>s.jsxs("div",{"data-testid":`changelog-entry-${E.version}`,style:{position:"relative",paddingLeft:44,paddingBottom:Ms.jsxs("div",{style:{marginBottom:16},children:[s.jsxs("div",{style:{display:"inline-flex",alignItems:"center",gap:6,marginBottom:8},children:[s.jsx("span",{style:{display:"inline-block",width:8,height:8,borderRadius:"50%",background:lm(O.type)}}),s.jsx("span",{style:{fontSize:12,fontWeight:600,textTransform:"uppercase",letterSpacing:".06em",color:lm(O.type),fontFamily:"var(--font-code, monospace)"},children:O.type})]}),s.jsx("ul",{style:{margin:0,paddingLeft:18,listStyleType:"disc",color:"var(--tx2)"},children:O.items.map((C,y)=>s.jsx("li",{style:{fontSize:14,lineHeight:1.7,color:"var(--tx2)",marginBottom:2},children:C},y))})]},O.type))]},E.version)),!d&&u.length>(h||0)&&s.jsx("div",{style:{textAlign:"center",marginTop:24},children:s.jsxs("button",{"data-testid":"changelog-show-more",onClick:()=>c(!0),style:{background:"none",border:"1px solid var(--bd)",borderRadius:2,padding:"8px 20px",color:"var(--tx2)",fontSize:13,fontFamily:"var(--font-body, inherit)",cursor:"pointer",transition:"border-color .15s, color .15s"},children:["Show all ",u.length," releases"]})})]})}const im={info:{color:"#3b82f6",label:"INFO"},warning:{color:"#f59e0b",label:"WARNING"},tip:{color:"var(--ac, #a78bfa)",label:"TIP"},danger:{color:"#ef4444",label:"DANGER"}};function Kg({type:u="info",title:h,children:d}){const c=im[u]||im.info;return s.jsxs("div",{style:{borderLeft:`3px solid ${c.color}`,background:`${c.color}11`,borderRadius:"0 2px 2px 0",padding:"14px 18px",marginBottom:20},children:[h?s.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,marginBottom:4},children:[s.jsx("span",{style:{fontWeight:700,fontSize:10,letterSpacing:".08em",color:c.color,fontFamily:"var(--font-code, monospace)"},children:c.label}),s.jsx("span",{style:{fontWeight:600,fontSize:13,color:c.color},children:h})]}):s.jsx("div",{style:{marginBottom:4},children:s.jsx("span",{style:{fontWeight:700,fontSize:10,letterSpacing:".08em",color:c.color,fontFamily:"var(--font-code, monospace)"},children:c.label})}),s.jsx("div",{style:{fontSize:14,lineHeight:1.65,color:"var(--tx2)"},children:d})]})}function Xg({items:u,children:h}){const[d,c]=B.useState(0);return s.jsxs("div",{style:{marginBottom:20},children:[s.jsx("div",{style:{display:"flex",gap:0,borderBottom:"1px solid var(--bd)"},children:u.map((v,E)=>s.jsx("button",{onClick:()=>c(E),style:{padding:"8px 16px",background:"none",border:"none",borderBottom:d===E?"2px solid var(--ac)":"2px solid transparent",color:d===E?"var(--ac)":"var(--txM)",fontWeight:d===E?600:400,fontSize:13,cursor:"pointer",fontFamily:"inherit"},children:v},E))}),s.jsx("div",{style:{padding:"16px 0"},children:h[d]})]})}function Qg({title:u,icon:h,href:d,children:c}){const v=s.jsxs("div",{style:{border:"1px solid var(--bd)",borderRadius:2,padding:"20px",transition:"border-color 0.15s",cursor:d?"pointer":"default"},children:[h&&s.jsx("span",{style:{fontSize:24,marginBottom:8,display:"block"},children:h}),s.jsx("div",{style:{fontWeight:600,fontSize:14,marginBottom:4},children:u}),c&&s.jsx("div",{style:{fontSize:13,color:"var(--txM)",lineHeight:1.5},children:c})]});return d?s.jsx("a",{href:d,style:{textDecoration:"none",color:"inherit"},children:v}):v}function Vg({cols:u=2,children:h}){return s.jsx("div",{style:{display:"grid",gridTemplateColumns:`repeat(${u}, 1fr)`,gap:12,marginBottom:20},children:h})}function Zg({children:u}){return s.jsx("div",{style:{paddingLeft:24,borderLeft:"2px solid var(--bd)",marginBottom:20},children:sm.Children.map(u,(h,d)=>s.jsxs("div",{style:{position:"relative",paddingBottom:20},children:[s.jsx("div",{style:{position:"absolute",left:-33,top:0,width:20,height:20,borderRadius:"50%",background:"var(--ac)",color:"#fff",display:"flex",alignItems:"center",justifyContent:"center",fontSize:11,fontWeight:700},children:d+1}),s.jsx("div",{style:{paddingLeft:8},children:h})]}))})}function Jg({title:u,children:h}){const[d,c]=B.useState(!1);return s.jsxs("div",{style:{border:"1px solid var(--bd)",borderRadius:2,marginBottom:8,overflow:"hidden"},children:[s.jsxs("button",{onClick:()=>c(!d),style:{display:"flex",alignItems:"center",justifyContent:"space-between",width:"100%",padding:"12px 16px",background:"var(--sf)",border:"none",cursor:"pointer",fontWeight:500,fontSize:14,color:"var(--tx)",fontFamily:"inherit"},children:[u,s.jsx("span",{style:{transform:d?"rotate(180deg)":"rotate(0)",transition:"transform 0.2s"},children:"▾"})]}),d&&s.jsx("div",{style:{padding:"12px 16px",borderTop:"1px solid var(--bd)",fontSize:14,color:"var(--tx2)",lineHeight:1.65},children:h})]})}const Wg={install:{npm:"npm install",yarn:"yarn add",pnpm:"pnpm add",bun:"bun add"},"install -D":{npm:"npm install -D",yarn:"yarn add -D",pnpm:"pnpm add -D",bun:"bun add -d"},uninstall:{npm:"npm uninstall",yarn:"yarn remove",pnpm:"pnpm remove",bun:"bun remove"},run:{npm:"npm run",yarn:"yarn",pnpm:"pnpm",bun:"bun run"},exec:{npm:"npx",yarn:"yarn dlx",pnpm:"pnpm dlx",bun:"bunx"},init:{npm:"npm init",yarn:"yarn init",pnpm:"pnpm init",bun:"bun init"},create:{npm:"npm create",yarn:"yarn create",pnpm:"pnpm create",bun:"bun create"}};function Fg(u,h){for(const[d,c]of Object.entries(Wg))if(u.startsWith(d+" ")||u===d){const v=u.slice(d.length);return(c[h]||d)+v}return`${h} ${u}`}function $g({command:u}){const[h,d]=B.useState(0),[c,v]=B.useState(!1),E=["npm","yarn","pnpm","bun"],M=Fg(u,E[h]);return s.jsxs("div",{style:{border:"1px solid var(--bd)",borderRadius:2,marginBottom:16,overflow:"hidden"},children:[s.jsx("div",{style:{display:"flex",borderBottom:"1px solid var(--bd)",background:"var(--sf)",overflowX:"auto"},children:E.map((O,C)=>s.jsx("button",{onClick:()=>{d(C),v(!1)},style:{padding:"8px 14px",background:"none",border:"none",cursor:"pointer",fontSize:12,fontFamily:"var(--font-code)",fontWeight:C===h?600:400,color:C===h?"var(--ac)":"var(--txM)",borderBottom:C===h?"2px solid var(--ac)":"2px solid transparent",whiteSpace:"nowrap"},children:O},O))}),s.jsxs("div",{style:{display:"flex",alignItems:"center",padding:"10px 14px",background:"var(--cdBg)",gap:8},children:[s.jsx("code",{style:{flex:1,fontFamily:"var(--font-code)",fontSize:13,color:"var(--cdTx)",whiteSpace:"pre",overflowX:"auto"},children:M}),s.jsx("button",{onClick:()=>{var O;(O=navigator.clipboard)==null||O.writeText(M),v(!0),setTimeout(()=>v(!1),2e3)},style:{background:"none",border:"none",cursor:"pointer",color:"var(--txM)",fontSize:12,fontFamily:"var(--font-code)",flexShrink:0},children:c?"✓":"Copy"})]})]})}function Ig({name:u,fields:h}){return s.jsxs("div",{style:{marginBottom:16},children:[u&&s.jsx("h4",{style:{fontFamily:"var(--font-code)",fontSize:15,marginBottom:8,color:"var(--tx)"},children:u}),s.jsx("div",{style:{overflowX:"auto",WebkitOverflowScrolling:"touch"},children:s.jsxs("table",{style:{width:"100%",borderCollapse:"collapse",fontSize:13,fontFamily:"var(--font-body)"},children:[s.jsx("thead",{children:s.jsx("tr",{style:{borderBottom:"2px solid var(--bd)"},children:["Property","Type","Required","Default","Description"].map(d=>s.jsx("th",{style:{textAlign:"left",padding:"8px 10px",color:"var(--txM)",fontWeight:600,fontSize:11,textTransform:"uppercase",letterSpacing:".05em",whiteSpace:"nowrap"},children:d},d))})}),s.jsx("tbody",{children:h.map(d=>s.jsxs("tr",{style:{borderBottom:"1px solid var(--bd)"},children:[s.jsx("td",{style:{padding:"8px 10px",fontFamily:"var(--font-code)",fontWeight:500,color:"var(--tx)"},children:d.name}),s.jsx("td",{style:{padding:"8px 10px",fontFamily:"var(--font-code)",fontSize:12,color:"var(--ac)"},children:d.type}),s.jsx("td",{style:{padding:"8px 10px"},children:d.required&&s.jsx("span",{style:{fontSize:10,fontWeight:600,color:"#e04040",background:"rgba(224,64,64,0.1)",padding:"2px 6px",borderRadius:2},children:"required"})}),s.jsx("td",{style:{padding:"8px 10px",fontFamily:"var(--font-code)",fontSize:12,color:"var(--txM)"},children:d.default||"—"}),s.jsx("td",{style:{padding:"8px 10px",color:"var(--tx2)"},children:d.description||""})]},d.name))})]})})]})}function Pg({name:u}){return s.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6,padding:"3px 0",fontFamily:"var(--font-code)",fontSize:13,color:"var(--tx2)"},children:[s.jsx("span",{style:{opacity:.6},children:"📄"})," ",u]})}function t0({name:u,defaultOpen:h,children:d}){const[c,v]=B.useState(h??!1);return s.jsxs("div",{children:[s.jsxs("button",{onClick:()=>v(!c),style:{display:"flex",alignItems:"center",gap:6,padding:"3px 0",background:"none",border:"none",cursor:"pointer",fontFamily:"var(--font-code)",fontSize:13,color:"var(--tx)",fontWeight:500},children:[s.jsx("span",{children:c?"📂":"📁"})," ",u]}),c&&s.jsx("div",{style:{paddingLeft:18,borderLeft:"1px solid var(--bd)",marginLeft:8},children:d})]})}function Iu({children:u}){return s.jsx("div",{style:{border:"1px solid var(--bd)",borderRadius:2,padding:"12px 16px",background:"var(--cdBg)",marginBottom:16},children:u})}Iu.File=Pg;Iu.Folder=t0;const e0={Callout:Kg,Tabs:Xg,Card:Qg,CardGroup:Vg,Steps:Zg,Accordion:Jg,ChangelogTimeline:Yg,PackageManager:$g,TypeTable:Ig,FileTree:Iu,CodeSamples:mm,LinkCard:qg,CardGrid:Lg},n0=` +});`}function O0(u,h){var O,C;const d=h+u.path,c=["import requests",""],v={},E=u.parameters.filter(y=>y.in==="header");for(const y of E)v[y.name]="";u.requestBody&&(v["Content-Type"]=u.requestBody.contentType),Object.keys(v).length>0&&(c.push(`headers = ${JSON.stringify(v,null,4)}`),c.push("")),(O=u.requestBody)!=null&&O.schema&&(c.push(`data = ${JSON.stringify(u.requestBody.schema,null,4)}`),c.push(""));const M=[`"${d}"`];return Object.keys(v).length>0&&M.push("headers=headers"),(C=u.requestBody)!=null&&C.schema&&M.push("json=data"),c.push(`response = requests.${u.method}(${M.join(", ")})`),c.push("print(response.json())"),c.join(` +`)}function R0(u,h){var E,M;const d=h+u.path,c=["package main","","import (",' "fmt"',' "net/http"'];(E=u.requestBody)!=null&&E.schema&&c.push(' "bytes"',' "encoding/json"'),c.push(' "io"',")",""),c.push("func main() {"),(M=u.requestBody)!=null&&M.schema?(c.push(` body, _ := json.Marshal(${JSON.stringify(u.requestBody.schema)})`),c.push(` req, _ := http.NewRequest("${u.method.toUpperCase()}", "${d}", bytes.NewBuffer(body))`)):c.push(` req, _ := http.NewRequest("${u.method.toUpperCase()}", "${d}", nil)`);const v=u.parameters.filter(O=>O.in==="header");for(const O of v)c.push(` req.Header.Set("${O.name}", "")`);return u.requestBody&&c.push(` req.Header.Set("Content-Type", "${u.requestBody.contentType}")`),c.push(" resp, _ := http.DefaultClient.Do(req)"),c.push(" defer resp.Body.Close()"),c.push(" data, _ := io.ReadAll(resp.Body)"),c.push(" fmt.Println(string(data))"),c.push("}"),c.join(` +`)}function B0(u,h){var E;const d=h+u.path,c=["import java.net.http.*;","import java.net.URI;","","var client = HttpClient.newHttpClient();"];(E=u.requestBody)!=null&&E.schema?(c.push(`var body = ${JSON.stringify(JSON.stringify(u.requestBody.schema))};`),c.push("var request = HttpRequest.newBuilder()"),c.push(` .uri(URI.create("${d}"))`),c.push(` .method("${u.method.toUpperCase()}", HttpRequest.BodyPublishers.ofString(body))`)):(c.push("var request = HttpRequest.newBuilder()"),c.push(` .uri(URI.create("${d}"))`),c.push(` .method("${u.method.toUpperCase()}", HttpRequest.BodyPublishers.noBody())`));const v=u.parameters.filter(M=>M.in==="header");for(const M of v)c.push(` .header("${M.name}", "")`);return u.requestBody&&c.push(` .header("Content-Type", "${u.requestBody.contentType}")`),c.push(" .build();"),c.push(""),c.push("var response = client.send(request, HttpResponse.BodyHandlers.ofString());"),c.push("System.out.println(response.body());"),c.join(` +`)}function w0(u,h){var E;const d=h+u.path,c=["using var client = new HttpClient();","",`var request = new HttpRequestMessage(HttpMethod.${u.method.charAt(0).toUpperCase()+u.method.slice(1)}, "${d}");`],v=u.parameters.filter(M=>M.in==="header");for(const M of v)c.push(`request.Headers.Add("${M.name}", "");`);return(E=u.requestBody)!=null&&E.schema&&(c.push("request.Content = new StringContent("),c.push(` ${JSON.stringify(JSON.stringify(u.requestBody.schema))},`),c.push(" System.Text.Encoding.UTF8,"),c.push(` "${u.requestBody.contentType}");`)),c.push(""),c.push("var response = await client.SendAsync(request);"),c.push("var body = await response.Content.ReadAsStringAsync();"),c.push("Console.WriteLine(body);"),c.join(` +`)}function U0({endpoint:u,baseUrl:h="https://api.example.com"}){const[d,c]=B.useState(0),v=["cURL","JavaScript","Python","Go","Java","C#"],E=[_0(u,h),D0(u,h),O0(u,h),R0(u,h),B0(u,h),w0(u,h)];return s.jsxs("div",{style:{marginBottom:16},children:[s.jsx("div",{style:{display:"flex",gap:0,borderBottom:"1px solid var(--bd)",overflowX:"auto",WebkitOverflowScrolling:"touch"},children:v.map((M,O)=>s.jsx("button",{onClick:()=>c(O),style:{padding:"6px 14px",background:"none",border:"none",borderBottom:d===O?"2px solid var(--ac)":"2px solid transparent",color:d===O?"var(--ac)":"var(--txM)",fontWeight:d===O?600:400,fontSize:12,cursor:"pointer",fontFamily:"inherit",whiteSpace:"nowrap"},children:M},M))}),s.jsx("pre",{style:{background:"var(--cdBg)",color:"var(--cdTx)",padding:16,borderRadius:"0 0 6px 6px",fontSize:12,fontFamily:"var(--font-code, monospace)",overflow:"auto",lineHeight:1.6,margin:0},children:E[d]})]})}function H0({endpoint:u,baseUrl:h,defaultExpanded:d=!1,showPlayground:c,playgroundAuth:v}){const[E,M]=B.useState(d),O=(u.operationId||`${u.method}-${u.path}`).toLowerCase().replace(/[^a-z0-9]+/g,"-"),C=u.parameters.length>0||u.requestBody!=null||u.responses.length>0;return s.jsxs("div",{id:O,style:{border:"1px solid var(--bd)",borderRadius:8,marginBottom:12,overflow:"hidden",scrollMarginTop:24},children:[s.jsxs("button",{onClick:()=>C&&M(!E),style:{display:"flex",alignItems:"center",gap:10,width:"100%",padding:"14px 18px",background:"var(--sf)",border:"none",cursor:C?"pointer":"default",textAlign:"left",fontFamily:"inherit",color:"var(--tx)"},children:[s.jsx(C0,{method:u.method}),s.jsx("span",{style:{fontFamily:"var(--font-code, monospace)",fontSize:14,fontWeight:500},children:u.path}),u.deprecated&&s.jsx("span",{"data-testid":"deprecated-badge",style:{padding:"1px 6px",borderRadius:3,fontSize:10,fontWeight:700,background:"#f59e0b33",color:"#f59e0b",textTransform:"uppercase",letterSpacing:"0.05em"},children:"Deprecated"}),u.tags.map(y=>s.jsx("span",{style:{padding:"1px 6px",borderRadius:3,fontSize:10,background:"var(--bd)",color:"var(--txM)"},children:y},y)),s.jsx("span",{style:{flex:1}}),u.summary&&s.jsx("span",{style:{fontSize:13,color:"var(--tx2)",marginRight:8},children:u.summary}),C&&s.jsx("span",{style:{transform:E?"rotate(180deg)":"rotate(0)",transition:"transform 0.2s",fontSize:12,color:"var(--txM)"},children:"▾"})]}),E&&s.jsxs("div",{style:{padding:"16px 18px",borderTop:"1px solid var(--bd)"},children:[u.description&&s.jsx("p",{style:{fontSize:14,color:"var(--tx2)",lineHeight:1.65,marginTop:0,marginBottom:16},children:u.description}),u.parameters.length>0&&s.jsxs("div",{style:{marginBottom:16},children:[s.jsx("h4",{style:{fontSize:13,fontWeight:600,marginBottom:8,color:"var(--tx)"},children:"Parameters"}),s.jsx(j0,{parameters:u.parameters})]}),u.requestBody&&s.jsxs("div",{style:{marginBottom:16},children:[s.jsx("h4",{style:{fontSize:13,fontWeight:600,marginBottom:8,color:"var(--tx)"},children:"Request Body"}),s.jsx(A0,{requestBody:u.requestBody})]}),u.responses.length>0&&s.jsxs("div",{style:{marginBottom:16},children:[s.jsx("h4",{style:{fontSize:13,fontWeight:600,marginBottom:8,color:"var(--tx)"},children:"Responses"}),s.jsx(k0,{responses:u.responses})]}),s.jsxs("div",{children:[s.jsx("h4",{style:{fontSize:13,fontWeight:600,marginBottom:8,color:"var(--tx)"},children:"Code Examples"}),u.codeSamples&&u.codeSamples.length>0?s.jsx(mm,{samples:u.codeSamples}):s.jsx(U0,{endpoint:u,baseUrl:h})]}),c&&s.jsx("div",{style:{marginTop:16},children:s.jsx(z0,{endpoint:u,baseUrl:h||"https://api.example.com",auth:v})})]})]})}function N0({manifest:u,baseUrl:h,showPlayground:d,playgroundAuth:c}){const v=h||(u.servers.length>0?u.servers[0].url:"https://api.example.com"),E=new Map;for(const C of u.endpoints){const y=C.tags.length>0?C.tags[0]:"Other";E.has(y)||E.set(y,[]),E.get(y).push(C)}const M=[];for(const C of u.tags)E.has(C.name)&&M.push(C.name);for(const C of E.keys())M.includes(C)||M.push(C);const O=new Map;for(const C of u.tags)O.set(C.name,C.description);return s.jsxs("div",{style:{display:"flex",gap:32},children:[s.jsxs("nav",{"data-testid":"api-toc",style:{width:200,flexShrink:0,position:"sticky",top:24,alignSelf:"flex-start",maxHeight:"calc(100vh - 48px)",overflowY:"auto"},children:[s.jsx("div",{style:{fontSize:11,fontWeight:700,textTransform:"uppercase",color:"var(--txM)",marginBottom:12,letterSpacing:"0.05em"},children:"Endpoints"}),M.map(C=>{const y=C.toLowerCase().replace(/\s+/g,"-");return s.jsxs("div",{style:{marginBottom:14},children:[s.jsx("a",{href:`#${y}`,onClick:G=>{var R;G.preventDefault(),(R=document.getElementById(y))==null||R.scrollIntoView({behavior:"smooth",block:"start"})},style:{display:"block",fontSize:13,fontWeight:600,color:"var(--tx)",textDecoration:"none",marginBottom:4},children:C}),(E.get(C)||[]).map(G=>{const R=(G.operationId||`${G.method}-${G.path}`).toLowerCase().replace(/[^a-z0-9]+/g,"-");return s.jsxs("a",{href:`#${R}`,onClick:K=>{var nt;K.preventDefault(),(nt=document.getElementById(R))==null||nt.scrollIntoView({behavior:"smooth",block:"start"})},style:{display:"flex",alignItems:"center",gap:6,fontSize:12,color:"var(--tx2)",textDecoration:"none",padding:"3px 0"},children:[s.jsx("span",{style:{fontSize:9,fontWeight:700,fontFamily:"var(--font-code, monospace)",color:pm[G.method]||"#6b7280",width:36,textTransform:"uppercase"},children:G.method}),s.jsx("span",{style:{fontFamily:"var(--font-code, monospace)"},children:G.path})]},`${G.method}-${G.path}`)})]},C)})]}),s.jsxs("div",{style:{flex:1,minWidth:0},children:[s.jsxs("div",{style:{marginBottom:32},children:[s.jsx("h1",{style:{fontSize:28,fontWeight:700,marginBottom:4},children:u.title}),s.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,marginBottom:8},children:[s.jsxs("span",{style:{padding:"2px 8px",borderRadius:4,fontSize:11,fontWeight:600,background:"var(--sf)",color:"var(--txM)"},children:["v",u.version]}),u.servers.length>0&&s.jsx("span",{style:{fontSize:12,fontFamily:"var(--font-code, monospace)",color:"var(--tx2)"},children:u.servers[0].url})]}),u.description&&s.jsx("p",{style:{fontSize:14,color:"var(--tx2)",lineHeight:1.65,marginTop:0},children:u.description})]}),M.map(C=>s.jsxs("section",{id:C.toLowerCase().replace(/\s+/g,"-"),"data-testid":"tag-section",style:{marginBottom:40},children:[s.jsx("h2",{style:{fontSize:20,fontWeight:700,marginBottom:4},children:C}),O.get(C)&&s.jsx("p",{style:{fontSize:14,color:"var(--tx2)",lineHeight:1.65,marginTop:0,marginBottom:16},children:O.get(C)}),(E.get(C)||[]).map(y=>s.jsx(H0,{endpoint:y,baseUrl:v,showPlayground:d,playgroundAuth:c},`${y.method}-${y.path}`))]},C))]})]})}function q0({href:u,title:h,description:d,icon:c,external:v}){const E=v??u.startsWith("http");return s.jsxs("a",{href:u,target:E?"_blank":void 0,rel:E?"noopener noreferrer":void 0,style:{display:"block",padding:"16px 20px",border:"1px solid var(--bd)",borderRadius:8,textDecoration:"none",color:"inherit",background:"var(--sf)",transition:"border-color 0.15s, background 0.15s",cursor:"pointer"},onMouseEnter:M=>{M.currentTarget.style.borderColor="var(--ac)",M.currentTarget.style.background="var(--sfH)"},onMouseLeave:M=>{M.currentTarget.style.borderColor="var(--bd)",M.currentTarget.style.background="var(--sf)"},children:[s.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8},children:[c&&s.jsx("span",{style:{fontSize:18},children:c}),s.jsx("span",{style:{fontWeight:600,fontSize:15,color:"var(--tx)"},children:h}),s.jsx("span",{style:{marginLeft:"auto",color:"var(--tx2)",fontSize:14},children:E?"↗":"→"})]}),d&&s.jsx("p",{style:{margin:"6px 0 0",fontSize:13,color:"var(--tx2)",lineHeight:1.5},children:d})]})}function L0({columns:u=2,children:h}){return s.jsx("div",{style:{display:"grid",gridTemplateColumns:`repeat(${u}, 1fr)`,gap:12,marginTop:16,marginBottom:16},children:h})}const G0={Added:"#22c55e",Changed:"#3b82f6",Deprecated:"#f59e0b",Removed:"#ef4444",Fixed:"#8b5cf6",Security:"#f97316"};function lm(u){return G0[u]||"#6b7280"}function Y0({entries:u,initialLimit:h}){const[d,c]=B.useState(!h),v=d?u:u.slice(0,h||u.length);return u.length===0?s.jsx("div",{"data-testid":"changelog-empty",style:{padding:"40px 0",textAlign:"center",color:"var(--txM)",fontSize:14},children:"No changelog entries found."}):s.jsxs("div",{"data-testid":"changelog-timeline",style:{position:"relative"},children:[s.jsx("div",{style:{position:"absolute",left:15,top:8,bottom:8,width:2,background:"var(--bd)"}}),v.map((E,M)=>s.jsxs("div",{"data-testid":`changelog-entry-${E.version}`,style:{position:"relative",paddingLeft:44,paddingBottom:Ms.jsxs("div",{style:{marginBottom:16},children:[s.jsxs("div",{style:{display:"inline-flex",alignItems:"center",gap:6,marginBottom:8},children:[s.jsx("span",{style:{display:"inline-block",width:8,height:8,borderRadius:"50%",background:lm(O.type)}}),s.jsx("span",{style:{fontSize:12,fontWeight:600,textTransform:"uppercase",letterSpacing:".06em",color:lm(O.type),fontFamily:"var(--font-code, monospace)"},children:O.type})]}),s.jsx("ul",{style:{margin:0,paddingLeft:18,listStyleType:"disc",color:"var(--tx2)"},children:O.items.map((C,y)=>s.jsx("li",{style:{fontSize:14,lineHeight:1.7,color:"var(--tx2)",marginBottom:2},children:C},y))})]},O.type))]},E.version)),!d&&u.length>(h||0)&&s.jsx("div",{style:{textAlign:"center",marginTop:24},children:s.jsxs("button",{"data-testid":"changelog-show-more",onClick:()=>c(!0),style:{background:"none",border:"1px solid var(--bd)",borderRadius:2,padding:"8px 20px",color:"var(--tx2)",fontSize:13,fontFamily:"var(--font-body, inherit)",cursor:"pointer",transition:"border-color .15s, color .15s"},children:["Show all ",u.length," releases"]})})]})}const im={info:{color:"#3b82f6",label:"INFO"},warning:{color:"#f59e0b",label:"WARNING"},tip:{color:"var(--ac, #a78bfa)",label:"TIP"},danger:{color:"#ef4444",label:"DANGER"}};function K0({type:u="info",title:h,children:d}){const c=im[u]||im.info;return s.jsxs("div",{style:{borderLeft:`3px solid ${c.color}`,background:`${c.color}11`,borderRadius:"0 2px 2px 0",padding:"14px 18px",marginBottom:20},children:[h?s.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,marginBottom:4},children:[s.jsx("span",{style:{fontWeight:700,fontSize:10,letterSpacing:".08em",color:c.color,fontFamily:"var(--font-code, monospace)"},children:c.label}),s.jsx("span",{style:{fontWeight:600,fontSize:13,color:c.color},children:h})]}):s.jsx("div",{style:{marginBottom:4},children:s.jsx("span",{style:{fontWeight:700,fontSize:10,letterSpacing:".08em",color:c.color,fontFamily:"var(--font-code, monospace)"},children:c.label})}),s.jsx("div",{style:{fontSize:14,lineHeight:1.65,color:"var(--tx2)"},children:d})]})}function X0({items:u,children:h}){const[d,c]=B.useState(0);return s.jsxs("div",{style:{marginBottom:20},children:[s.jsx("div",{style:{display:"flex",gap:0,borderBottom:"1px solid var(--bd)"},children:u.map((v,E)=>s.jsx("button",{onClick:()=>c(E),style:{padding:"8px 16px",background:"none",border:"none",borderBottom:d===E?"2px solid var(--ac)":"2px solid transparent",color:d===E?"var(--ac)":"var(--txM)",fontWeight:d===E?600:400,fontSize:13,cursor:"pointer",fontFamily:"inherit"},children:v},E))}),s.jsx("div",{style:{padding:"16px 0"},children:h[d]})]})}function Q0({title:u,icon:h,href:d,children:c}){const v=s.jsxs("div",{style:{border:"1px solid var(--bd)",borderRadius:2,padding:"20px",transition:"border-color 0.15s",cursor:d?"pointer":"default"},children:[h&&s.jsx("span",{style:{fontSize:24,marginBottom:8,display:"block"},children:h}),s.jsx("div",{style:{fontWeight:600,fontSize:14,marginBottom:4},children:u}),c&&s.jsx("div",{style:{fontSize:13,color:"var(--txM)",lineHeight:1.5},children:c})]});return d?s.jsx("a",{href:d,style:{textDecoration:"none",color:"inherit"},children:v}):v}function V0({cols:u=2,children:h}){return s.jsx("div",{style:{display:"grid",gridTemplateColumns:`repeat(${u}, 1fr)`,gap:12,marginBottom:20},children:h})}function Z0({children:u}){return s.jsx("div",{style:{paddingLeft:24,borderLeft:"2px solid var(--bd)",marginBottom:20},children:sm.Children.map(u,(h,d)=>s.jsxs("div",{style:{position:"relative",paddingBottom:20},children:[s.jsx("div",{style:{position:"absolute",left:-33,top:0,width:20,height:20,borderRadius:"50%",background:"var(--ac)",color:"#fff",display:"flex",alignItems:"center",justifyContent:"center",fontSize:11,fontWeight:700},children:d+1}),s.jsx("div",{style:{paddingLeft:8},children:h})]}))})}function J0({title:u,children:h}){const[d,c]=B.useState(!1);return s.jsxs("div",{style:{border:"1px solid var(--bd)",borderRadius:2,marginBottom:8,overflow:"hidden"},children:[s.jsxs("button",{onClick:()=>c(!d),style:{display:"flex",alignItems:"center",justifyContent:"space-between",width:"100%",padding:"12px 16px",background:"var(--sf)",border:"none",cursor:"pointer",fontWeight:500,fontSize:14,color:"var(--tx)",fontFamily:"inherit"},children:[u,s.jsx("span",{style:{transform:d?"rotate(180deg)":"rotate(0)",transition:"transform 0.2s"},children:"▾"})]}),d&&s.jsx("div",{style:{padding:"12px 16px",borderTop:"1px solid var(--bd)",fontSize:14,color:"var(--tx2)",lineHeight:1.65},children:h})]})}const W0={install:{npm:"npm install",yarn:"yarn add",pnpm:"pnpm add",bun:"bun add"},"install -D":{npm:"npm install -D",yarn:"yarn add -D",pnpm:"pnpm add -D",bun:"bun add -d"},uninstall:{npm:"npm uninstall",yarn:"yarn remove",pnpm:"pnpm remove",bun:"bun remove"},run:{npm:"npm run",yarn:"yarn",pnpm:"pnpm",bun:"bun run"},exec:{npm:"npx",yarn:"yarn dlx",pnpm:"pnpm dlx",bun:"bunx"},init:{npm:"npm init",yarn:"yarn init",pnpm:"pnpm init",bun:"bun init"},create:{npm:"npm create",yarn:"yarn create",pnpm:"pnpm create",bun:"bun create"}};function F0(u,h){for(const[d,c]of Object.entries(W0))if(u.startsWith(d+" ")||u===d){const v=u.slice(d.length);return(c[h]||d)+v}return`${h} ${u}`}function $0({command:u}){const[h,d]=B.useState(0),[c,v]=B.useState(!1),E=["npm","yarn","pnpm","bun"],M=F0(u,E[h]);return s.jsxs("div",{style:{border:"1px solid var(--bd)",borderRadius:2,marginBottom:16,overflow:"hidden"},children:[s.jsx("div",{style:{display:"flex",borderBottom:"1px solid var(--bd)",background:"var(--sf)",overflowX:"auto"},children:E.map((O,C)=>s.jsx("button",{onClick:()=>{d(C),v(!1)},style:{padding:"8px 14px",background:"none",border:"none",cursor:"pointer",fontSize:12,fontFamily:"var(--font-code)",fontWeight:C===h?600:400,color:C===h?"var(--ac)":"var(--txM)",borderBottom:C===h?"2px solid var(--ac)":"2px solid transparent",whiteSpace:"nowrap"},children:O},O))}),s.jsxs("div",{style:{display:"flex",alignItems:"center",padding:"10px 14px",background:"var(--cdBg)",gap:8},children:[s.jsx("code",{style:{flex:1,fontFamily:"var(--font-code)",fontSize:13,color:"var(--cdTx)",whiteSpace:"pre",overflowX:"auto"},children:M}),s.jsx("button",{onClick:()=>{var O;(O=navigator.clipboard)==null||O.writeText(M),v(!0),setTimeout(()=>v(!1),2e3)},style:{background:"none",border:"none",cursor:"pointer",color:"var(--txM)",fontSize:12,fontFamily:"var(--font-code)",flexShrink:0},children:c?"✓":"Copy"})]})]})}function I0({name:u,fields:h}){return s.jsxs("div",{style:{marginBottom:16},children:[u&&s.jsx("h4",{style:{fontFamily:"var(--font-code)",fontSize:15,marginBottom:8,color:"var(--tx)"},children:u}),s.jsx("div",{style:{overflowX:"auto",WebkitOverflowScrolling:"touch"},children:s.jsxs("table",{style:{width:"100%",borderCollapse:"collapse",fontSize:13,fontFamily:"var(--font-body)"},children:[s.jsx("thead",{children:s.jsx("tr",{style:{borderBottom:"2px solid var(--bd)"},children:["Property","Type","Required","Default","Description"].map(d=>s.jsx("th",{style:{textAlign:"left",padding:"8px 10px",color:"var(--txM)",fontWeight:600,fontSize:11,textTransform:"uppercase",letterSpacing:".05em",whiteSpace:"nowrap"},children:d},d))})}),s.jsx("tbody",{children:h.map(d=>s.jsxs("tr",{style:{borderBottom:"1px solid var(--bd)"},children:[s.jsx("td",{style:{padding:"8px 10px",fontFamily:"var(--font-code)",fontWeight:500,color:"var(--tx)"},children:d.name}),s.jsx("td",{style:{padding:"8px 10px",fontFamily:"var(--font-code)",fontSize:12,color:"var(--ac)"},children:d.type}),s.jsx("td",{style:{padding:"8px 10px"},children:d.required&&s.jsx("span",{style:{fontSize:10,fontWeight:600,color:"#e04040",background:"rgba(224,64,64,0.1)",padding:"2px 6px",borderRadius:2},children:"required"})}),s.jsx("td",{style:{padding:"8px 10px",fontFamily:"var(--font-code)",fontSize:12,color:"var(--txM)"},children:d.default||"—"}),s.jsx("td",{style:{padding:"8px 10px",color:"var(--tx2)"},children:d.description||""})]},d.name))})]})})]})}function P0({name:u}){return s.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6,padding:"3px 0",fontFamily:"var(--font-code)",fontSize:13,color:"var(--tx2)"},children:[s.jsx("span",{style:{opacity:.6},children:"📄"})," ",u]})}function tg({name:u,defaultOpen:h,children:d}){const[c,v]=B.useState(h??!1);return s.jsxs("div",{children:[s.jsxs("button",{onClick:()=>v(!c),style:{display:"flex",alignItems:"center",gap:6,padding:"3px 0",background:"none",border:"none",cursor:"pointer",fontFamily:"var(--font-code)",fontSize:13,color:"var(--tx)",fontWeight:500},children:[s.jsx("span",{children:c?"📂":"📁"})," ",u]}),c&&s.jsx("div",{style:{paddingLeft:18,borderLeft:"1px solid var(--bd)",marginLeft:8},children:d})]})}function Iu({children:u}){return s.jsx("div",{style:{border:"1px solid var(--bd)",borderRadius:2,padding:"12px 16px",background:"var(--cdBg)",marginBottom:16},children:u})}Iu.File=P0;Iu.Folder=tg;const eg={Callout:K0,Tabs:X0,Card:Q0,CardGroup:V0,Steps:Z0,Accordion:J0,ChangelogTimeline:Y0,PackageManager:$0,TypeTable:I0,FileTree:Iu,CodeSamples:mm,LinkCard:q0,CardGrid:L0},ng=` @import url('https://fonts.googleapis.com/css2?family=Instrument+Serif:ital@0;1&family=DM+Sans:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500;600&family=Bricolage+Grotesque:wght@300;400;500;600;700&family=Cormorant+Garamond:ital,wght@0,300;0,400;0,600;0,700;1,300;1,400;1,700&family=Fira+Code:wght@400;500;600&family=Bodoni+Moda:ital,wght@0,400;0,700;0,900;1,400&family=Space+Grotesk:wght@400;500;600;700&family=Source+Code+Pro:wght@400;500;600&family=Inter:wght@300;400;500;600;700&display=swap'); html, body { margin: 0; padding: 0; height: 100%; overflow: clip; } @@ -1319,4 +1319,4 @@ ${c.join(` border-color: var(--bd); box-shadow: 0 4px 12px rgba(0,0,0,0.3); } -`,_o=(Jn.basePath||"/").replace(/\/$/,"");function a0(u){return cm(u,_o,Wn)}function Wu(u){return fg(u,_o,Wn)}const hm=hg(window.location.pathname,window.location.hash,Wn,_o,cm),l0=fm(hm,Wn,dm);function i0(){var W,I,ct,Q;const[u,h]=B.useState(hm),[d,c]=B.useState(null),[v,E]=B.useState(!0),M=B.useRef(0),O=B.useCallback(async(Y,H)=>{const U=++M.current;E(!0);let at;try{at=await fm(Y,Wn,dm)}catch(P){if(M.current!==U)return;console.error(`[tome] Navigation failed for page: ${Y}`,P),at=null}if(M.current!==U)return;const lt=Wu(Y);if(H!=null&&H.replace?window.history.replaceState(null,"",lt):window.history.pushState(null,"",lt),h(Y),c(at),E(!1),!(H!=null&&H.skipScroll)){const P=window.location.hash.slice(1);P?requestAnimationFrame(()=>{const mt=document.getElementById(P);mt&&mt.scrollIntoView({behavior:"smooth",block:"start"})}):window.scrollTo(0,0)}},[]);B.useEffect(()=>{const Y=window.location.hash.slice(1);if(Y&&Wn.some(H=>H.id===Y)){const H=Wu(Y);window.history.replaceState(null,"",H),O(Y,{replace:!0})}else{const H=Wu(u);window.history.replaceState(null,"",H),l0.then(U=>{c(U),E(!1)})}},[]),B.useEffect(()=>{const Y=()=>{const H=a0(window.location.pathname);H&&H!==u&&O(H,{replace:!0,skipScroll:!0})};return window.addEventListener("popstate",Y),()=>window.removeEventListener("popstate",Y)},[u,O]);const C=B.useRef(null),[y,G]=B.useState(()=>{var H,U;if(typeof document>"u")return"light";if(document.documentElement.classList.contains("dark"))return"dark";const Y=((H=Jn.theme)==null?void 0:H.mode)||"auto";return Y==="dark"?"dark":Y==="light"?"light":(U=window.matchMedia)!=null&&U.call(window,"(prefers-color-scheme: dark)").matches?"dark":"light"});B.useEffect(()=>{const Y=new MutationObserver(()=>{const H=document.documentElement.classList.contains("dark");G(H?"dark":"light")});return Y.observe(document.documentElement,{attributes:!0,attributeFilter:["class"]}),()=>Y.disconnect()},[]),B.useEffect(()=>{const Y=document.querySelectorAll(".tome-mermaid[data-mermaid]");if(Y.length===0)return;let H=!1;const U="https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.esm.min.mjs";return(async()=>{try{C.current||(C.current=(await import(U)).default);const at=C.current;if(H)return;const lt=y==="dark",P=getComputedStyle(document.documentElement).getPropertyValue("--font-body").trim()||"sans-serif";at.initialize({startOnLoad:!1,theme:lt?"dark":"default",fontFamily:P,flowchart:{padding:15,nodeSpacing:30,rankSpacing:40}});for(let mt=0;mt{lt.textContent="Failed to load diagram renderer",lt.style.cssText="padding:16px;color:var(--txM);font-size:13px;border:1px dashed var(--bd);border-radius:2px;text-align:center;"})}})(),()=>{H=!0}},[d,v,y]),B.useEffect(()=>{if(v)return;const Y=document.querySelectorAll(".tome-content pre"),H=[];return Y.forEach(U=>{if(U.querySelector(".tome-copy-btn"))return;const at=document.createElement("button");at.className="tome-copy-btn",at.textContent="Copy",at.addEventListener("click",async()=>{const lt=U.querySelector("code");if(lt)try{await navigator.clipboard.writeText(lt.textContent||""),at.textContent="Copied!",setTimeout(()=>{at.textContent="Copy"},2e3)}catch{at.textContent="Failed",setTimeout(()=>{at.textContent="Copy"},2e3)}}),U.appendChild(at),H.push(at)}),()=>{H.forEach(U=>U.remove())}},[d,v]);const R=Wn.map(Y=>({id:Y.id,title:Y.frontmatter.title,description:Y.frontmatter.description})),K=Wn.find(Y=>Y.id===u),nt=gg(K),xt=pg(Jn.editLink,K==null?void 0:K.filePath),Dt=(K==null?void 0:K.locale)||(Zu==null?void 0:Zu.defaultLocale)||"en",At="ltr";return B.useEffect(()=>{const Y=document.querySelectorAll(".tome-math[data-math]").length>0;if(!Jn.math&&!Y)return;const H="tome-katex-css";if(document.getElementById(H))return;const U=document.createElement("link");U.id=H,U.rel="stylesheet",U.href="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/katex.min.css",U.crossOrigin="anonymous",document.head.appendChild(U)},[d,v]),B.useEffect(()=>{const Y=document.querySelectorAll(".tome-math[data-math]");if(Y.length===0)return;let H=!1;const U="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/katex.mjs";return(async()=>{try{const at=(await import(U)).default;if(H)return;for(const lt of Y){const P=lt.getAttribute("data-math");if(P)try{const mt=atob(P),tt=lt.classList.contains("tome-math-block");at.render(mt,lt,{displayMode:tt,throwOnError:!1})}catch(mt){console.warn("[tome] KaTeX render failed:",mt)}}}catch(at){console.warn("[tome] Failed to load KaTeX from CDN:",at)}})(),()=>{H=!0}},[d,v]),s.jsxs(s.Fragment,{children:[s.jsx("style",{children:n0}),s.jsx(rg,{config:Jn,navigation:vg,currentPageId:u,pageHtml:d!=null&&d.isMdx?void 0:v?"":(d==null?void 0:d.html)||"

Page not found

",pageComponent:d!=null&&d.isMdx?d.component:void 0,mdxComponents:e0,pageTitle:(d==null?void 0:d.frontmatter.title)||(v?"":"Not Found"),pageDescription:d==null?void 0:d.frontmatter.description,headings:(d==null?void 0:d.headings)||[],tocEnabled:(d==null?void 0:d.frontmatter.toc)!==!1,editUrl:xt,lastUpdated:K==null?void 0:K.lastUpdated,changelogEntries:d!=null&&d.isMdx||d==null?void 0:d.changelogEntries,apiManifest:!(d!=null&&d.isMdx)&&(d!=null&&d.isApiReference)?d.apiManifest:void 0,apiBaseUrl:(W=Jn.api)==null?void 0:W.baseUrl,apiPlayground:(I=Jn.api)==null?void 0:I.playground,apiAuth:(ct=Jn.api)==null?void 0:ct.auth,ApiReferenceComponent:Ng,onNavigate:O,allPages:R,docContext:bg,versioning:void 0,currentVersion:nt,basePath:_o,isDraft:((Q=K==null?void 0:K.frontmatter)==null?void 0:Q.draft)===!0,dir:At,i18n:void 0,currentLocale:Dt,overrides:xg})]})}const om=document.getElementById("tome-root");om&&wh.createRoot(om).render(s.jsx(i0,{})); +`,_o=(Jn.basePath||"/").replace(/\/$/,"");function ag(u){return cm(u,_o,Wn)}function Wu(u){return f0(u,_o,Wn)}const hm=h0(window.location.pathname,window.location.hash,Wn,_o,cm),lg=fm(hm,Wn,dm);function ig(){var W,I,ct,Q;const[u,h]=B.useState(hm),[d,c]=B.useState(null),[v,E]=B.useState(!0),M=B.useRef(0),O=B.useCallback(async(Y,H)=>{const U=++M.current;E(!0);let at;try{at=await fm(Y,Wn,dm)}catch(P){if(M.current!==U)return;console.error(`[tome] Navigation failed for page: ${Y}`,P),at=null}if(M.current!==U)return;const lt=Wu(Y);if(H!=null&&H.replace?window.history.replaceState(null,"",lt):window.history.pushState(null,"",lt),h(Y),c(at),E(!1),!(H!=null&&H.skipScroll)){const P=window.location.hash.slice(1);P?requestAnimationFrame(()=>{const mt=document.getElementById(P);mt&&mt.scrollIntoView({behavior:"smooth",block:"start"})}):window.scrollTo(0,0)}},[]);B.useEffect(()=>{const Y=window.location.hash.slice(1);if(Y&&Wn.some(H=>H.id===Y)){const H=Wu(Y);window.history.replaceState(null,"",H),O(Y,{replace:!0})}else{const H=Wu(u);window.history.replaceState(null,"",H),lg.then(U=>{c(U),E(!1)})}},[]),B.useEffect(()=>{const Y=()=>{const H=ag(window.location.pathname);H&&H!==u&&O(H,{replace:!0,skipScroll:!0})};return window.addEventListener("popstate",Y),()=>window.removeEventListener("popstate",Y)},[u,O]);const C=B.useRef(null),[y,G]=B.useState(()=>{var H,U;if(typeof document>"u")return"light";if(document.documentElement.classList.contains("dark"))return"dark";const Y=((H=Jn.theme)==null?void 0:H.mode)||"auto";return Y==="dark"?"dark":Y==="light"?"light":(U=window.matchMedia)!=null&&U.call(window,"(prefers-color-scheme: dark)").matches?"dark":"light"});B.useEffect(()=>{const Y=new MutationObserver(()=>{const H=document.documentElement.classList.contains("dark");G(H?"dark":"light")});return Y.observe(document.documentElement,{attributes:!0,attributeFilter:["class"]}),()=>Y.disconnect()},[]),B.useEffect(()=>{const Y=document.querySelectorAll(".tome-mermaid[data-mermaid]");if(Y.length===0)return;let H=!1;const U="https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.esm.min.mjs";return(async()=>{try{C.current||(C.current=(await import(U)).default);const at=C.current;if(H)return;const lt=y==="dark",P=getComputedStyle(document.documentElement).getPropertyValue("--font-body").trim()||"sans-serif";at.initialize({startOnLoad:!1,theme:lt?"dark":"default",fontFamily:P,flowchart:{padding:15,nodeSpacing:30,rankSpacing:40}});for(let mt=0;mt{lt.textContent="Failed to load diagram renderer",lt.style.cssText="padding:16px;color:var(--txM);font-size:13px;border:1px dashed var(--bd);border-radius:2px;text-align:center;"})}})(),()=>{H=!0}},[d,v,y]),B.useEffect(()=>{if(v)return;const Y=document.querySelectorAll(".tome-content pre"),H=[];return Y.forEach(U=>{if(U.querySelector(".tome-copy-btn"))return;const at=document.createElement("button");at.className="tome-copy-btn",at.textContent="Copy",at.addEventListener("click",async()=>{const lt=U.querySelector("code");if(lt)try{await navigator.clipboard.writeText(lt.textContent||""),at.textContent="Copied!",setTimeout(()=>{at.textContent="Copy"},2e3)}catch{at.textContent="Failed",setTimeout(()=>{at.textContent="Copy"},2e3)}}),U.appendChild(at),H.push(at)}),()=>{H.forEach(U=>U.remove())}},[d,v]);const R=Wn.map(Y=>({id:Y.id,title:Y.frontmatter.title,description:Y.frontmatter.description})),K=Wn.find(Y=>Y.id===u),nt=g0(K),xt=p0(Jn.editLink,K==null?void 0:K.filePath),Dt=(K==null?void 0:K.locale)||(Zu==null?void 0:Zu.defaultLocale)||"en",At="ltr";return B.useEffect(()=>{const Y=document.querySelectorAll(".tome-math[data-math]").length>0;if(!Jn.math&&!Y)return;const H="tome-katex-css";if(document.getElementById(H))return;const U=document.createElement("link");U.id=H,U.rel="stylesheet",U.href="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/katex.min.css",U.crossOrigin="anonymous",document.head.appendChild(U)},[d,v]),B.useEffect(()=>{const Y=document.querySelectorAll(".tome-math[data-math]");if(Y.length===0)return;let H=!1;const U="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/katex.mjs";return(async()=>{try{const at=(await import(U)).default;if(H)return;for(const lt of Y){const P=lt.getAttribute("data-math");if(P)try{const mt=atob(P),tt=lt.classList.contains("tome-math-block");at.render(mt,lt,{displayMode:tt,throwOnError:!1})}catch(mt){console.warn("[tome] KaTeX render failed:",mt)}}}catch(at){console.warn("[tome] Failed to load KaTeX from CDN:",at)}})(),()=>{H=!0}},[d,v]),s.jsxs(s.Fragment,{children:[s.jsx("style",{children:ng}),s.jsx(r0,{config:Jn,navigation:v0,currentPageId:u,pageHtml:d!=null&&d.isMdx?void 0:v?"":(d==null?void 0:d.html)||"

Page not found

",pageComponent:d!=null&&d.isMdx?d.component:void 0,mdxComponents:eg,pageTitle:(d==null?void 0:d.frontmatter.title)||(v?"":"Not Found"),pageDescription:d==null?void 0:d.frontmatter.description,headings:(d==null?void 0:d.headings)||[],tocEnabled:(d==null?void 0:d.frontmatter.toc)!==!1,editUrl:xt,lastUpdated:K==null?void 0:K.lastUpdated,changelogEntries:d!=null&&d.isMdx||d==null?void 0:d.changelogEntries,apiManifest:!(d!=null&&d.isMdx)&&(d!=null&&d.isApiReference)?d.apiManifest:void 0,apiBaseUrl:(W=Jn.api)==null?void 0:W.baseUrl,apiPlayground:(I=Jn.api)==null?void 0:I.playground,apiAuth:(ct=Jn.api)==null?void 0:ct.auth,ApiReferenceComponent:N0,onNavigate:O,allPages:R,docContext:b0,versioning:void 0,currentVersion:nt,basePath:_o,isDraft:((Q=K==null?void 0:K.frontmatter)==null?void 0:Q.draft)===!0,dir:At,i18n:void 0,currentLocale:Dt,overrides:x0})]})}const om=document.getElementById("tome-root");om&&wh.createRoot(om).render(s.jsx(ig,{})); diff --git a/assets/overview-CkcpGgQk.js b/assets/overview-bUFLfXUg.js similarity index 98% rename from assets/overview-CkcpGgQk.js rename to assets/overview-bUFLfXUg.js index fe1e024b..ff0b86ce 100644 --- a/assets/overview-CkcpGgQk.js +++ b/assets/overview-bUFLfXUg.js @@ -148,7 +148,7 @@ including TopP, TopK, FrequencyPenalty, < fmt.Println("Tool result:", event.Name) }) -host.OnStreaming(func(event kit.MessageUpdateEvent) { +host.OnMessageUpdate(func(event kit.MessageUpdateEvent) { fmt.Print(event.Chunk) })

Model management

@@ -355,7 +355,7 @@ host.OnToolResult(func(event kit.ToolResultEvent) { fmt.Println("Tool result:", event.Name) }) -host.OnStreaming(func(event kit.MessageUpdateEvent) { +host.OnMessageUpdate(func(event kit.MessageUpdateEvent) { fmt.Print(event.Chunk) }) \`\`\` diff --git a/cli/commands/index.html b/cli/commands/index.html index dc1b0c7c..dd0d06d4 100644 --- a/cli/commands/index.html +++ b/cli/commands/index.html @@ -7,7 +7,7 @@ - + diff --git a/cli/flags/index.html b/cli/flags/index.html index e0417c0e..e35fcf16 100644 --- a/cli/flags/index.html +++ b/cli/flags/index.html @@ -7,7 +7,7 @@ - + diff --git a/configuration/index.html b/configuration/index.html index c509a962..f6706ac5 100644 --- a/configuration/index.html +++ b/configuration/index.html @@ -7,7 +7,7 @@ - + diff --git a/development/index.html b/development/index.html index 2e0d98ec..dd9d4567 100644 --- a/development/index.html +++ b/development/index.html @@ -7,7 +7,7 @@ - + diff --git a/extensions/capabilities/index.html b/extensions/capabilities/index.html index e99d1e01..0d6538b6 100644 --- a/extensions/capabilities/index.html +++ b/extensions/capabilities/index.html @@ -7,7 +7,7 @@ - + diff --git a/extensions/examples/index.html b/extensions/examples/index.html index 1e764bfd..e6c4b39d 100644 --- a/extensions/examples/index.html +++ b/extensions/examples/index.html @@ -7,7 +7,7 @@ - + diff --git a/extensions/loading/index.html b/extensions/loading/index.html index ef6e83c8..fb6d6e70 100644 --- a/extensions/loading/index.html +++ b/extensions/loading/index.html @@ -7,7 +7,7 @@ - + diff --git a/extensions/overview/index.html b/extensions/overview/index.html index d2c90ca5..4fd7af5a 100644 --- a/extensions/overview/index.html +++ b/extensions/overview/index.html @@ -7,7 +7,7 @@ - + diff --git a/extensions/testing/index.html b/extensions/testing/index.html index 374f2011..c80e70fe 100644 --- a/extensions/testing/index.html +++ b/extensions/testing/index.html @@ -7,7 +7,7 @@ - + diff --git a/index.html b/index.html index 08f64781..a6abdcfc 100644 --- a/index.html +++ b/index.html @@ -15,7 +15,7 @@ ::-webkit-scrollbar-track { background: transparent; } ::-webkit-scrollbar-thumb { background: #333; border-radius: 3px; } - + diff --git a/installation/index.html b/installation/index.html index 35619ef4..4439bc06 100644 --- a/installation/index.html +++ b/installation/index.html @@ -7,7 +7,7 @@ - + diff --git a/llms-full.txt b/llms-full.txt index 4c5b885c..42c0c719 100644 --- a/llms-full.txt +++ b/llms-full.txt @@ -2456,7 +2456,7 @@ unsub2 := host.OnToolResult(func(event kit.ToolResultEvent) { }) defer unsub2() -unsub3 := host.OnStreaming(func(event kit.MessageUpdateEvent) { +unsub3 := host.OnMessageUpdate(func(event kit.MessageUpdateEvent) { fmt.Print(event.Chunk) }) defer unsub3() @@ -2552,6 +2552,24 @@ host.OnAfterTurn(kit.HookPriorityNormal, func(h kit.AfterTurnHook) { }) ``` +### PrepareStep — intercept messages between steps + +The most powerful hook — fires between steps within a multi-step agent turn, after any steering messages are injected and before messages are sent to the LLM. Can replace the entire context window. + +```go +host.OnPrepareStep(kit.HookPriorityNormal, func(h kit.PrepareStepHook) *kit.PrepareStepResult { + // h.StepNumber — zero-based step index within the turn + // h.Messages — current context window (includes any steering) + + // Example: transform tool results with images into user messages + modified := transformImageToolResults(h.Messages) + return &kit.PrepareStepResult{Messages: modified} + // Return nil to pass through unchanged +}) +``` + +Use cases: transforming tool results (e.g., image data for vision models), dynamic tool filtering per step, mid-turn context injection, custom stop conditions. + ### Hook priorities ```go @@ -2564,19 +2582,41 @@ Lower values run first. First non-nil result wins. ## All event types -| Event | Description | -|-------|-------------| -| `ToolCallStartEvent` | LLM began generating tool call arguments (tool name known, args streaming) | -| `ToolCallDeltaEvent` | Streamed JSON fragment of tool call arguments | -| `ToolCallEndEvent` | Tool argument streaming complete, before execution begins | -| `ToolCallEvent` | Tool call fully parsed and about to execute | -| `ToolResultEvent` | Tool execution completed with result | -| `ToolOutputEvent` | Streaming output chunk from tool (e.g., bash stdout/stderr) | -| `MessageUpdateEvent` | Streaming text chunk from LLM | -| `ResponseEvent` | Final response received | -| `TurnStartEvent` | Agent turn started | -| `TurnEndEvent` | Agent turn completed | -| `PasswordPromptEvent` | Sudo command needs password (respond via `ResponseCh`) | +| Event | Typed Subscriber | Description | +|-------|-----------------|-------------| +| `TurnStartEvent` | `OnTurnStart` | Agent turn started | +| `TurnEndEvent` | `OnTurnEnd` | Agent turn completed | +| `MessageStartEvent` | `OnMessageStart` | New assistant message begins | +| `MessageUpdateEvent` | `OnMessageUpdate` | Streaming text chunk from LLM | +| `MessageEndEvent` | `OnMessageEnd` | Assistant message complete | +| `ToolCallStartEvent` | `OnToolCallStart` | LLM began generating tool call arguments | +| `ToolCallDeltaEvent` | `OnToolCallDelta` | Streamed JSON fragment of tool call arguments | +| `ToolCallEndEvent` | `OnToolCallEnd` | Tool argument streaming complete | +| `ToolCallEvent` | `OnToolCall` | Tool call fully parsed, about to execute | +| `ToolExecutionStartEvent` | `OnToolExecutionStart` | Tool begins executing | +| `ToolExecutionEndEvent` | `OnToolExecutionEnd` | Tool finishes executing | +| `ToolResultEvent` | `OnToolResult` | Tool execution completed with result | +| `ToolCallContentEvent` | `OnToolCallContent` | Text content alongside tool calls | +| `ToolOutputEvent` | `OnToolOutput` | Streaming output chunk from tool (e.g., bash) | +| `ResponseEvent` | `OnResponse` | Final response received | +| `ReasoningStartEvent` | `OnReasoningStart` | LLM begins reasoning/thinking | +| `ReasoningDeltaEvent` | `OnReasoningDelta` | Streaming reasoning/thinking chunk | +| `ReasoningCompleteEvent` | `OnReasoningComplete` | Reasoning/thinking finished | +| `StepStartEvent` | `OnStepStart` | New LLM call begins within a turn | +| `StepFinishEvent` | `OnStepFinish` | Step completes (with usage, finish reason, tool call info) | +| `StepUsageEvent` | `OnStepUsage` | Per-step token usage | +| `StreamFinishEvent` | `OnStreamFinish` | Per-step stream completes (with usage + finish reason) | +| `TextStartEvent` | `OnTextStart` | LLM begins text content generation | +| `TextEndEvent` | `OnTextEnd` | LLM finishes text content generation | +| `WarningsEvent` | `OnWarnings` | LLM provider returned warnings | +| `SourceEvent` | `OnSource` | LLM referenced a source (e.g., web search) | +| `ErrorEvent` | `OnError` | Agent-level error during streaming | +| `RetryEvent` | `OnRetry` | LLM request retried after transient error | +| `CompactionEvent` | `OnCompaction` | Conversation compacted | +| `SteerConsumedEvent` | `OnSteerConsumed` | Steering messages injected into turn | +| `PasswordPromptEvent` | — | Sudo command needs password (respond via `ResponseCh`) | + +> **Note:** `OnStreaming` is a deprecated alias for `OnMessageUpdate` and will be removed in a future release. ## Subagent event monitoring @@ -3033,7 +3073,7 @@ host.OnToolResult(func(event kit.ToolResultEvent) { fmt.Println("Tool result:", event.Name) }) -host.OnStreaming(func(event kit.MessageUpdateEvent) { +host.OnMessageUpdate(func(event kit.MessageUpdateEvent) { fmt.Print(event.Chunk) }) ``` diff --git a/mcp.json b/mcp.json index 61dede75..3231742d 100644 --- a/mcp.json +++ b/mcp.json @@ -318,12 +318,13 @@ "AfterToolResult — modify tool output", "BeforeTurn — modify prompt, inject messages", "AfterTurn — observation only", + "PrepareStep — intercept messages between steps", "Hook priorities", "All event types", "Subagent event monitoring" ], "tags": [], - "content": "\n# Callbacks\n\n## Event-based monitoring\n\nSubscribe to events for real-time monitoring. Each method returns an unsubscribe function:\n\n```go\nunsub := host.OnToolCall(func(event kit.ToolCallEvent) {\n fmt.Printf(\"Tool: %s, Args: %s\\n\", event.ToolName, event.ToolArgs)\n})\ndefer unsub()\n\nunsub2 := host.OnToolResult(func(event kit.ToolResultEvent) {\n fmt.Printf(\"Result: %s (error: %v)\\n\", event.ToolName, event.IsError)\n})\ndefer unsub2()\n\nunsub3 := host.OnStreaming(func(event kit.MessageUpdateEvent) {\n fmt.Print(event.Chunk)\n})\ndefer unsub3()\n\nunsub4 := host.OnResponse(func(event kit.ResponseEvent) {\n fmt.Println(\"Final response received\")\n})\ndefer unsub4()\n\nunsub5 := host.OnTurnStart(func(event kit.TurnStartEvent) {\n fmt.Println(\"Turn started\")\n})\ndefer unsub5()\n\nunsub6 := host.OnTurnEnd(func(event kit.TurnEndEvent) {\n fmt.Println(\"Turn ended\")\n})\ndefer unsub6()\n```\n\n## Tool call argument streaming\n\nFor tools with large arguments (e.g., `write` with a full file body), the `ToolCallEvent` only fires after the full argument JSON finishes streaming — which can take 5-10+ seconds of \"dead air.\" These three events fire during argument generation so UIs can show activity immediately:\n\n```go\nhost.OnToolCallStart(func(event kit.ToolCallStartEvent) {\n // Fires as soon as the LLM begins generating tool arguments.\n // event.ToolCallID, event.ToolName, event.ToolKind\n fmt.Printf(\"⏳ %s generating arguments...\\n\", event.ToolName)\n})\n\nhost.OnToolCallDelta(func(event kit.ToolCallDeltaEvent) {\n // Each streamed JSON fragment of the tool arguments.\n // event.ToolCallID, event.Delta\n // Useful for live-previewing content or showing byte progress.\n})\n\nhost.OnToolCallEnd(func(event kit.ToolCallEndEvent) {\n // Tool argument streaming complete — execution about to begin.\n // event.ToolCallID\n fmt.Printf(\"✓ Arguments ready, executing...\\n\")\n})\n```\n\n**Full tool lifecycle**: `ToolCallStartEvent` → `ToolCallDeltaEvent` (repeated) → `ToolCallEndEvent` → `ToolCallEvent` → `ToolExecutionStartEvent` → `ToolOutputEvent` (optional) → `ToolExecutionEndEvent` → `ToolResultEvent`\n\n## Hook system\n\nHooks can **modify or cancel** operations. Unlike events (read-only), hooks are read-write interceptors.\n\n### BeforeToolCall — block tool execution\n\n```go\nhost.OnBeforeToolCall(kit.HookPriorityNormal, func(h kit.BeforeToolCallHook) *kit.BeforeToolCallResult {\n // h.ToolCallID, h.ToolName, h.ToolArgs\n if h.ToolName == \"bash\" && strings.Contains(h.ToolArgs, \"rm -rf\") {\n return &kit.BeforeToolCallResult{Block: true, Reason: \"dangerous command\"}\n }\n return nil // allow\n})\n```\n\n### AfterToolResult — modify tool output\n\n```go\nhost.OnAfterToolResult(kit.HookPriorityNormal, func(h kit.AfterToolResultHook) *kit.AfterToolResultResult {\n // h.ToolCallID, h.ToolName, h.ToolArgs, h.Result, h.IsError\n if h.ToolName == \"read\" {\n filtered := redactSecrets(h.Result)\n return &kit.AfterToolResultResult{Result: &filtered}\n }\n return nil\n})\n```\n\n### BeforeTurn — modify prompt, inject messages\n\n```go\nhost.OnBeforeTurn(kit.HookPriorityNormal, func(h kit.BeforeTurnHook) *kit.BeforeTurnResult {\n // h.Prompt\n newPrompt := h.Prompt + \"\\nAlways respond in JSON.\"\n return &kit.BeforeTurnResult{Prompt: &newPrompt}\n // Also available: SystemPrompt *string, InjectText *string\n})\n```\n\n### AfterTurn — observation only\n\n```go\nhost.OnAfterTurn(kit.HookPriorityNormal, func(h kit.AfterTurnHook) {\n // h.Response, h.Error\n log.Printf(\"Turn completed: %d chars\", len(h.Response))\n})\n```\n\n### Hook priorities\n\n```go\nkit.HookPriorityHigh = 0 // runs first\nkit.HookPriorityNormal = 50 // default\nkit.HookPriorityLow = 100 // runs last\n```\n\nLower values run first. First non-nil result wins.\n\n## All event types\n\n| Event | Description |\n|-------|-------------|\n| `ToolCallStartEvent` | LLM began generating tool call arguments (tool name known, args streaming) |\n| `ToolCallDeltaEvent` | Streamed JSON fragment of tool call arguments |\n| `ToolCallEndEvent` | Tool argument streaming complete, before execution begins |\n| `ToolCallEvent` | Tool call fully parsed and about to execute |\n| `ToolResultEvent` | Tool execution completed with result |\n| `ToolOutputEvent` | Streaming output chunk from tool (e.g., bash stdout/stderr) |\n| `MessageUpdateEvent` | Streaming text chunk from LLM |\n| `ResponseEvent` | Final response received |\n| `TurnStartEvent` | Agent turn started |\n| `TurnEndEvent` | Agent turn completed |\n| `PasswordPromptEvent` | Sudo command needs password (respond via `ResponseCh`) |\n\n## Subagent event monitoring\n\nMonitor real-time events from LLM-initiated subagents (when the model uses the `subagent` tool):\n\n```go\nhost.OnToolCall(func(e kit.ToolCallEvent) {\n if e.ToolName == \"subagent\" {\n host.SubscribeSubagent(e.ToolCallID, func(event kit.Event) {\n // Receives the same event types as Subscribe(), scoped to the child agent\n switch ev := event.(type) {\n case kit.MessageUpdateEvent:\n fmt.Print(ev.Chunk)\n case kit.ToolCallEvent:\n fmt.Printf(\"Subagent calling: %s\\n\", ev.ToolName)\n }\n })\n }\n})\n```\n\n`SubscribeSubagent` returns an unsubscribe function. Listeners are also cleaned up automatically when the subagent completes. See [Subagents](/advanced/subagents) for more details.\n" + "content": "\n# Callbacks\n\n## Event-based monitoring\n\nSubscribe to events for real-time monitoring. Each method returns an unsubscribe function:\n\n```go\nunsub := host.OnToolCall(func(event kit.ToolCallEvent) {\n fmt.Printf(\"Tool: %s, Args: %s\\n\", event.ToolName, event.ToolArgs)\n})\ndefer unsub()\n\nunsub2 := host.OnToolResult(func(event kit.ToolResultEvent) {\n fmt.Printf(\"Result: %s (error: %v)\\n\", event.ToolName, event.IsError)\n})\ndefer unsub2()\n\nunsub3 := host.OnMessageUpdate(func(event kit.MessageUpdateEvent) {\n fmt.Print(event.Chunk)\n})\ndefer unsub3()\n\nunsub4 := host.OnResponse(func(event kit.ResponseEvent) {\n fmt.Println(\"Final response received\")\n})\ndefer unsub4()\n\nunsub5 := host.OnTurnStart(func(event kit.TurnStartEvent) {\n fmt.Println(\"Turn started\")\n})\ndefer unsub5()\n\nunsub6 := host.OnTurnEnd(func(event kit.TurnEndEvent) {\n fmt.Println(\"Turn ended\")\n})\ndefer unsub6()\n```\n\n## Tool call argument streaming\n\nFor tools with large arguments (e.g., `write` with a full file body), the `ToolCallEvent` only fires after the full argument JSON finishes streaming — which can take 5-10+ seconds of \"dead air.\" These three events fire during argument generation so UIs can show activity immediately:\n\n```go\nhost.OnToolCallStart(func(event kit.ToolCallStartEvent) {\n // Fires as soon as the LLM begins generating tool arguments.\n // event.ToolCallID, event.ToolName, event.ToolKind\n fmt.Printf(\"⏳ %s generating arguments...\\n\", event.ToolName)\n})\n\nhost.OnToolCallDelta(func(event kit.ToolCallDeltaEvent) {\n // Each streamed JSON fragment of the tool arguments.\n // event.ToolCallID, event.Delta\n // Useful for live-previewing content or showing byte progress.\n})\n\nhost.OnToolCallEnd(func(event kit.ToolCallEndEvent) {\n // Tool argument streaming complete — execution about to begin.\n // event.ToolCallID\n fmt.Printf(\"✓ Arguments ready, executing...\\n\")\n})\n```\n\n**Full tool lifecycle**: `ToolCallStartEvent` → `ToolCallDeltaEvent` (repeated) → `ToolCallEndEvent` → `ToolCallEvent` → `ToolExecutionStartEvent` → `ToolOutputEvent` (optional) → `ToolExecutionEndEvent` → `ToolResultEvent`\n\n## Hook system\n\nHooks can **modify or cancel** operations. Unlike events (read-only), hooks are read-write interceptors.\n\n### BeforeToolCall — block tool execution\n\n```go\nhost.OnBeforeToolCall(kit.HookPriorityNormal, func(h kit.BeforeToolCallHook) *kit.BeforeToolCallResult {\n // h.ToolCallID, h.ToolName, h.ToolArgs\n if h.ToolName == \"bash\" && strings.Contains(h.ToolArgs, \"rm -rf\") {\n return &kit.BeforeToolCallResult{Block: true, Reason: \"dangerous command\"}\n }\n return nil // allow\n})\n```\n\n### AfterToolResult — modify tool output\n\n```go\nhost.OnAfterToolResult(kit.HookPriorityNormal, func(h kit.AfterToolResultHook) *kit.AfterToolResultResult {\n // h.ToolCallID, h.ToolName, h.ToolArgs, h.Result, h.IsError\n if h.ToolName == \"read\" {\n filtered := redactSecrets(h.Result)\n return &kit.AfterToolResultResult{Result: &filtered}\n }\n return nil\n})\n```\n\n### BeforeTurn — modify prompt, inject messages\n\n```go\nhost.OnBeforeTurn(kit.HookPriorityNormal, func(h kit.BeforeTurnHook) *kit.BeforeTurnResult {\n // h.Prompt\n newPrompt := h.Prompt + \"\\nAlways respond in JSON.\"\n return &kit.BeforeTurnResult{Prompt: &newPrompt}\n // Also available: SystemPrompt *string, InjectText *string\n})\n```\n\n### AfterTurn — observation only\n\n```go\nhost.OnAfterTurn(kit.HookPriorityNormal, func(h kit.AfterTurnHook) {\n // h.Response, h.Error\n log.Printf(\"Turn completed: %d chars\", len(h.Response))\n})\n```\n\n### PrepareStep — intercept messages between steps\n\nThe most powerful hook — fires between steps within a multi-step agent turn, after any steering messages are injected and before messages are sent to the LLM. Can replace the entire context window.\n\n```go\nhost.OnPrepareStep(kit.HookPriorityNormal, func(h kit.PrepareStepHook) *kit.PrepareStepResult {\n // h.StepNumber — zero-based step index within the turn\n // h.Messages — current context window (includes any steering)\n \n // Example: transform tool results with images into user messages\n modified := transformImageToolResults(h.Messages)\n return &kit.PrepareStepResult{Messages: modified}\n // Return nil to pass through unchanged\n})\n```\n\nUse cases: transforming tool results (e.g., image data for vision models), dynamic tool filtering per step, mid-turn context injection, custom stop conditions.\n\n### Hook priorities\n\n```go\nkit.HookPriorityHigh = 0 // runs first\nkit.HookPriorityNormal = 50 // default\nkit.HookPriorityLow = 100 // runs last\n```\n\nLower values run first. First non-nil result wins.\n\n## All event types\n\n| Event | Typed Subscriber | Description |\n|-------|-----------------|-------------|\n| `TurnStartEvent` | `OnTurnStart` | Agent turn started |\n| `TurnEndEvent` | `OnTurnEnd` | Agent turn completed |\n| `MessageStartEvent` | `OnMessageStart` | New assistant message begins |\n| `MessageUpdateEvent` | `OnMessageUpdate` | Streaming text chunk from LLM |\n| `MessageEndEvent` | `OnMessageEnd` | Assistant message complete |\n| `ToolCallStartEvent` | `OnToolCallStart` | LLM began generating tool call arguments |\n| `ToolCallDeltaEvent` | `OnToolCallDelta` | Streamed JSON fragment of tool call arguments |\n| `ToolCallEndEvent` | `OnToolCallEnd` | Tool argument streaming complete |\n| `ToolCallEvent` | `OnToolCall` | Tool call fully parsed, about to execute |\n| `ToolExecutionStartEvent` | `OnToolExecutionStart` | Tool begins executing |\n| `ToolExecutionEndEvent` | `OnToolExecutionEnd` | Tool finishes executing |\n| `ToolResultEvent` | `OnToolResult` | Tool execution completed with result |\n| `ToolCallContentEvent` | `OnToolCallContent` | Text content alongside tool calls |\n| `ToolOutputEvent` | `OnToolOutput` | Streaming output chunk from tool (e.g., bash) |\n| `ResponseEvent` | `OnResponse` | Final response received |\n| `ReasoningStartEvent` | `OnReasoningStart` | LLM begins reasoning/thinking |\n| `ReasoningDeltaEvent` | `OnReasoningDelta` | Streaming reasoning/thinking chunk |\n| `ReasoningCompleteEvent` | `OnReasoningComplete` | Reasoning/thinking finished |\n| `StepStartEvent` | `OnStepStart` | New LLM call begins within a turn |\n| `StepFinishEvent` | `OnStepFinish` | Step completes (with usage, finish reason, tool call info) |\n| `StepUsageEvent` | `OnStepUsage` | Per-step token usage |\n| `StreamFinishEvent` | `OnStreamFinish` | Per-step stream completes (with usage + finish reason) |\n| `TextStartEvent` | `OnTextStart` | LLM begins text content generation |\n| `TextEndEvent` | `OnTextEnd` | LLM finishes text content generation |\n| `WarningsEvent` | `OnWarnings` | LLM provider returned warnings |\n| `SourceEvent` | `OnSource` | LLM referenced a source (e.g., web search) |\n| `ErrorEvent` | `OnError` | Agent-level error during streaming |\n| `RetryEvent` | `OnRetry` | LLM request retried after transient error |\n| `CompactionEvent` | `OnCompaction` | Conversation compacted |\n| `SteerConsumedEvent` | `OnSteerConsumed` | Steering messages injected into turn |\n| `PasswordPromptEvent` | — | Sudo command needs password (respond via `ResponseCh`) |\n\n> **Note:** `OnStreaming` is a deprecated alias for `OnMessageUpdate` and will be removed in a future release.\n\n## Subagent event monitoring\n\nMonitor real-time events from LLM-initiated subagents (when the model uses the `subagent` tool):\n\n```go\nhost.OnToolCall(func(e kit.ToolCallEvent) {\n if e.ToolName == \"subagent\" {\n host.SubscribeSubagent(e.ToolCallID, func(event kit.Event) {\n // Receives the same event types as Subscribe(), scoped to the child agent\n switch ev := event.(type) {\n case kit.MessageUpdateEvent:\n fmt.Print(ev.Chunk)\n case kit.ToolCallEvent:\n fmt.Printf(\"Subagent calling: %s\\n\", ev.ToolName)\n }\n })\n }\n})\n```\n\n`SubscribeSubagent` returns an unsubscribe function. Listeners are also cleaned up automatically when the subagent completes. See [Subagents](/advanced/subagents) for more details.\n" }, { "url": "/sdk/options", @@ -366,7 +367,7 @@ "In-process subagents" ], "tags": [], - "content": "\n# Go SDK\n\nThe `pkg/kit` package lets you embed Kit as a library in your Go applications.\n\n## Installation\n\n```bash\ngo get github.com/mark3labs/kit/pkg/kit\n```\n\n## Basic usage\n\n```go\npackage main\n\nimport (\n \"context\"\n \"log\"\n\n kit \"github.com/mark3labs/kit/pkg/kit\"\n)\n\nfunc main() {\n ctx := context.Background()\n\n // Create Kit instance with default configuration\n host, err := kit.New(ctx, nil)\n if err != nil {\n log.Fatal(err)\n }\n defer host.Close()\n\n // Send a prompt\n response, err := host.Prompt(ctx, \"What is 2+2?\")\n if err != nil {\n log.Fatal(err)\n }\n\n println(response)\n}\n```\n\n## Multi-turn conversations\n\nConversations retain context automatically across calls:\n\n```go\nhost.Prompt(ctx, \"My name is Alice\")\nresponse, _ := host.Prompt(ctx, \"What's my name?\")\n// response: \"Your name is Alice\"\n```\n\n## Additional prompt methods\n\nThe SDK provides several prompt variants:\n\n| Method | Description |\n|--------|-------------|\n| `Prompt(ctx, message)` | Simple prompt, returns response string |\n| `PromptWithOptions(ctx, message, opts)` | With per-call options |\n| `PromptResult(ctx, message)` | Returns full `TurnResult` with usage stats |\n| `PromptResultWithFiles(ctx, message, files)` | Multimodal with file attachments |\n| `Steer(ctx, instruction)` | System-level steering without user message |\n| `FollowUp(ctx, text)` | Continue without new user input |\n\n## Custom tools\n\nCreate custom tools with `kit.NewTool`. The JSON schema is auto-generated from the input struct — no external dependencies required:\n\n```go\ntype WeatherInput struct {\n City string `json:\"city\" description:\"City name\"`\n}\n\nweatherTool := kit.NewTool(\"get_weather\", \"Get current weather for a city\",\n func(ctx context.Context, input WeatherInput) (kit.ToolOutput, error) {\n return kit.TextResult(\"72°F, sunny in \" + input.City), nil\n },\n)\n\nhost, _ := kit.New(ctx, &kit.Options{\n ExtraTools: []kit.Tool{weatherTool},\n})\n```\n\nStruct tags control the schema:\n\n- `json:\"name\"` — parameter name\n- `description:\"...\"` — description shown to the LLM\n- `enum:\"a,b,c\"` — restrict valid values\n- `omitempty` — marks the parameter as optional\n\nReturn values:\n\n| Helper | Description |\n|--------|-------------|\n| `kit.TextResult(s)` | Successful text result |\n| `kit.ErrorResult(s)` | Error result (LLM sees it as a tool error) |\n| `kit.ImageResult(s, data, mediaType)` | Image result with binary data (e.g. `\"image/png\"`) |\n| `kit.MediaResult(s, data, mediaType)` | Non-image media result (e.g. `\"audio/mpeg\"`) |\n\nBinary data (images, audio, etc.) in `ToolOutput.Data` is automatically forwarded to the LLM when `MediaType` is set. For advanced use, return a `kit.ToolOutput` struct directly with `Data`, `MediaType`, and `Metadata` fields.\n\nUse `kit.NewParallelTool` for tools that are safe to run concurrently. Use `kit.ToolCallIDFromContext(ctx)` to retrieve the LLM-assigned call ID for logging or tracing.\n\n## Generation & provider overrides\n\nSDK consumers can configure generation parameters and provider endpoints\nentirely in-code via `Options`, without touching `.kit.yml` or `viper.Set()`:\n\n```go\nhost, _ := kit.New(ctx, &kit.Options{\n Model: \"anthropic/claude-sonnet-4-5-20250929\",\n MaxTokens: 16384, // 0 = auto-resolve (env → config → per-model → floor)\n ThinkingLevel: \"high\", // \"off\" | \"none\" | \"minimal\" | \"low\" | \"medium\" | \"high\"\n Temperature: ptrFloat32(0.2), // nil = provider/per-model default\n ProviderAPIKey: os.Getenv(\"MY_SECRET\"), // overrides pre-existing viper state\n ProviderURL: \"https://proxy.internal/v1\",\n})\n\nfunc ptrFloat32(v float32) *float32 { return &v }\n```\n\nSee [Options](/sdk/options#generation-parameters) for the full field reference,\nincluding `TopP`, `TopK`, `FrequencyPenalty`, `PresencePenalty`, and `TLSSkipVerify`.\n\n## Event system\n\nSubscribe to events for monitoring:\n\n```go\nunsubscribe := host.OnToolCall(func(event kit.ToolCallEvent) {\n fmt.Println(\"Tool called:\", event.Name)\n})\ndefer unsubscribe()\n\nhost.OnToolResult(func(event kit.ToolResultEvent) {\n fmt.Println(\"Tool result:\", event.Name)\n})\n\nhost.OnStreaming(func(event kit.MessageUpdateEvent) {\n fmt.Print(event.Chunk)\n})\n```\n\n## Model management\n\nSwitch models at runtime:\n\n```go\nhost.SetModel(ctx, \"openai/gpt-4o\")\ninfo := host.GetModelInfo()\nmodels := host.GetAvailableModels()\n```\n\n## Dynamic MCP servers\n\nAdd and remove MCP servers at runtime:\n\n```go\nn, err := host.AddMCPServer(ctx, \"github\", kit.MCPServerConfig{\n Command: []string{\"npx\", \"-y\", \"@modelcontextprotocol/server-github\"},\n})\nfmt.Printf(\"Loaded %d tools\\n\", n)\n\nerr = host.RemoveMCPServer(\"github\")\nservers := host.ListMCPServers() // []kit.MCPServerStatus\n```\n\n### In-process MCP servers\n\nRegister mcp-go servers running in the same process — zero subprocess overhead:\n\n```go\nimport (\n \"github.com/mark3labs/mcp-go/mcp\"\n \"github.com/mark3labs/mcp-go/server\"\n)\n\nmcpSrv := server.NewMCPServer(\"my-tools\", \"1.0.0\",\n server.WithToolCapabilities(true),\n)\nmcpSrv.AddTool(mcp.NewTool(\"search_docs\",\n mcp.WithDescription(\"Search documentation\"),\n mcp.WithString(\"query\", mcp.Required()),\n), searchHandler)\n\n// At init time\nhost, _ := kit.New(ctx, &kit.Options{\n InProcessMCPServers: map[string]*kit.MCPServer{\n \"docs\": mcpSrv,\n },\n})\n\n// Or at runtime\nn, _ := host.AddInProcessMCPServer(ctx, \"docs\", mcpSrv)\n```\n\n## MCP prompts and resources\n\nQuery prompts and resources exposed by connected MCP servers:\n\n```go\n// List and expand prompts\nprompts := host.ListMCPPrompts()\nresult, _ := host.GetMCPPrompt(ctx, \"server\", \"prompt-name\", map[string]string{\"key\": \"value\"})\n\n// List and read resources\nresources := host.ListMCPResources()\ncontent, _ := host.ReadMCPResource(ctx, \"server\", \"file:///path\")\n```\n\n## Context and compaction\n\nMonitor and manage context usage:\n\n```go\ntokens := host.EstimateContextTokens()\nstats := host.GetContextStats()\n\nif host.ShouldCompact() {\n result, err := host.Compact(ctx, nil, \"\")\n}\n```\n\n## In-process subagents\n\nSpawn child Kit instances without subprocess overhead:\n\n```go\nresult, err := host.Subagent(ctx, kit.SubagentConfig{\n Prompt: \"Analyze the test files\",\n Model: \"anthropic/claude-haiku-3-5-20241022\",\n NoSession: true,\n Timeout: 2 * time.Minute,\n})\n```\n\nSee [Options](/sdk/options), [Callbacks](/sdk/callbacks), and [Sessions](/sdk/sessions) for more details.\n" + "content": "\n# Go SDK\n\nThe `pkg/kit` package lets you embed Kit as a library in your Go applications.\n\n## Installation\n\n```bash\ngo get github.com/mark3labs/kit/pkg/kit\n```\n\n## Basic usage\n\n```go\npackage main\n\nimport (\n \"context\"\n \"log\"\n\n kit \"github.com/mark3labs/kit/pkg/kit\"\n)\n\nfunc main() {\n ctx := context.Background()\n\n // Create Kit instance with default configuration\n host, err := kit.New(ctx, nil)\n if err != nil {\n log.Fatal(err)\n }\n defer host.Close()\n\n // Send a prompt\n response, err := host.Prompt(ctx, \"What is 2+2?\")\n if err != nil {\n log.Fatal(err)\n }\n\n println(response)\n}\n```\n\n## Multi-turn conversations\n\nConversations retain context automatically across calls:\n\n```go\nhost.Prompt(ctx, \"My name is Alice\")\nresponse, _ := host.Prompt(ctx, \"What's my name?\")\n// response: \"Your name is Alice\"\n```\n\n## Additional prompt methods\n\nThe SDK provides several prompt variants:\n\n| Method | Description |\n|--------|-------------|\n| `Prompt(ctx, message)` | Simple prompt, returns response string |\n| `PromptWithOptions(ctx, message, opts)` | With per-call options |\n| `PromptResult(ctx, message)` | Returns full `TurnResult` with usage stats |\n| `PromptResultWithFiles(ctx, message, files)` | Multimodal with file attachments |\n| `Steer(ctx, instruction)` | System-level steering without user message |\n| `FollowUp(ctx, text)` | Continue without new user input |\n\n## Custom tools\n\nCreate custom tools with `kit.NewTool`. The JSON schema is auto-generated from the input struct — no external dependencies required:\n\n```go\ntype WeatherInput struct {\n City string `json:\"city\" description:\"City name\"`\n}\n\nweatherTool := kit.NewTool(\"get_weather\", \"Get current weather for a city\",\n func(ctx context.Context, input WeatherInput) (kit.ToolOutput, error) {\n return kit.TextResult(\"72°F, sunny in \" + input.City), nil\n },\n)\n\nhost, _ := kit.New(ctx, &kit.Options{\n ExtraTools: []kit.Tool{weatherTool},\n})\n```\n\nStruct tags control the schema:\n\n- `json:\"name\"` — parameter name\n- `description:\"...\"` — description shown to the LLM\n- `enum:\"a,b,c\"` — restrict valid values\n- `omitempty` — marks the parameter as optional\n\nReturn values:\n\n| Helper | Description |\n|--------|-------------|\n| `kit.TextResult(s)` | Successful text result |\n| `kit.ErrorResult(s)` | Error result (LLM sees it as a tool error) |\n| `kit.ImageResult(s, data, mediaType)` | Image result with binary data (e.g. `\"image/png\"`) |\n| `kit.MediaResult(s, data, mediaType)` | Non-image media result (e.g. `\"audio/mpeg\"`) |\n\nBinary data (images, audio, etc.) in `ToolOutput.Data` is automatically forwarded to the LLM when `MediaType` is set. For advanced use, return a `kit.ToolOutput` struct directly with `Data`, `MediaType`, and `Metadata` fields.\n\nUse `kit.NewParallelTool` for tools that are safe to run concurrently. Use `kit.ToolCallIDFromContext(ctx)` to retrieve the LLM-assigned call ID for logging or tracing.\n\n## Generation & provider overrides\n\nSDK consumers can configure generation parameters and provider endpoints\nentirely in-code via `Options`, without touching `.kit.yml` or `viper.Set()`:\n\n```go\nhost, _ := kit.New(ctx, &kit.Options{\n Model: \"anthropic/claude-sonnet-4-5-20250929\",\n MaxTokens: 16384, // 0 = auto-resolve (env → config → per-model → floor)\n ThinkingLevel: \"high\", // \"off\" | \"none\" | \"minimal\" | \"low\" | \"medium\" | \"high\"\n Temperature: ptrFloat32(0.2), // nil = provider/per-model default\n ProviderAPIKey: os.Getenv(\"MY_SECRET\"), // overrides pre-existing viper state\n ProviderURL: \"https://proxy.internal/v1\",\n})\n\nfunc ptrFloat32(v float32) *float32 { return &v }\n```\n\nSee [Options](/sdk/options#generation-parameters) for the full field reference,\nincluding `TopP`, `TopK`, `FrequencyPenalty`, `PresencePenalty`, and `TLSSkipVerify`.\n\n## Event system\n\nSubscribe to events for monitoring:\n\n```go\nunsubscribe := host.OnToolCall(func(event kit.ToolCallEvent) {\n fmt.Println(\"Tool called:\", event.Name)\n})\ndefer unsubscribe()\n\nhost.OnToolResult(func(event kit.ToolResultEvent) {\n fmt.Println(\"Tool result:\", event.Name)\n})\n\nhost.OnMessageUpdate(func(event kit.MessageUpdateEvent) {\n fmt.Print(event.Chunk)\n})\n```\n\n## Model management\n\nSwitch models at runtime:\n\n```go\nhost.SetModel(ctx, \"openai/gpt-4o\")\ninfo := host.GetModelInfo()\nmodels := host.GetAvailableModels()\n```\n\n## Dynamic MCP servers\n\nAdd and remove MCP servers at runtime:\n\n```go\nn, err := host.AddMCPServer(ctx, \"github\", kit.MCPServerConfig{\n Command: []string{\"npx\", \"-y\", \"@modelcontextprotocol/server-github\"},\n})\nfmt.Printf(\"Loaded %d tools\\n\", n)\n\nerr = host.RemoveMCPServer(\"github\")\nservers := host.ListMCPServers() // []kit.MCPServerStatus\n```\n\n### In-process MCP servers\n\nRegister mcp-go servers running in the same process — zero subprocess overhead:\n\n```go\nimport (\n \"github.com/mark3labs/mcp-go/mcp\"\n \"github.com/mark3labs/mcp-go/server\"\n)\n\nmcpSrv := server.NewMCPServer(\"my-tools\", \"1.0.0\",\n server.WithToolCapabilities(true),\n)\nmcpSrv.AddTool(mcp.NewTool(\"search_docs\",\n mcp.WithDescription(\"Search documentation\"),\n mcp.WithString(\"query\", mcp.Required()),\n), searchHandler)\n\n// At init time\nhost, _ := kit.New(ctx, &kit.Options{\n InProcessMCPServers: map[string]*kit.MCPServer{\n \"docs\": mcpSrv,\n },\n})\n\n// Or at runtime\nn, _ := host.AddInProcessMCPServer(ctx, \"docs\", mcpSrv)\n```\n\n## MCP prompts and resources\n\nQuery prompts and resources exposed by connected MCP servers:\n\n```go\n// List and expand prompts\nprompts := host.ListMCPPrompts()\nresult, _ := host.GetMCPPrompt(ctx, \"server\", \"prompt-name\", map[string]string{\"key\": \"value\"})\n\n// List and read resources\nresources := host.ListMCPResources()\ncontent, _ := host.ReadMCPResource(ctx, \"server\", \"file:///path\")\n```\n\n## Context and compaction\n\nMonitor and manage context usage:\n\n```go\ntokens := host.EstimateContextTokens()\nstats := host.GetContextStats()\n\nif host.ShouldCompact() {\n result, err := host.Compact(ctx, nil, \"\")\n}\n```\n\n## In-process subagents\n\nSpawn child Kit instances without subprocess overhead:\n\n```go\nresult, err := host.Subagent(ctx, kit.SubagentConfig{\n Prompt: \"Analyze the test files\",\n Model: \"anthropic/claude-haiku-3-5-20241022\",\n NoSession: true,\n Timeout: 2 * time.Minute,\n})\n```\n\nSee [Options](/sdk/options), [Callbacks](/sdk/callbacks), and [Sessions](/sdk/sessions) for more details.\n" }, { "url": "/sdk/sessions", diff --git a/providers/index.html b/providers/index.html index 19b6128c..2a0331b0 100644 --- a/providers/index.html +++ b/providers/index.html @@ -7,7 +7,7 @@ - + diff --git a/quick-start/index.html b/quick-start/index.html index 8973e79a..a088c45c 100644 --- a/quick-start/index.html +++ b/quick-start/index.html @@ -7,7 +7,7 @@ - + diff --git a/sdk/callbacks/index.html b/sdk/callbacks/index.html index a0f816cf..b7b22ed0 100644 --- a/sdk/callbacks/index.html +++ b/sdk/callbacks/index.html @@ -7,7 +7,7 @@ - + @@ -30,7 +30,7 @@ unsub2 := host.OnToolResult(func(event kit.ToolResultEvent) { }) defer unsub2() -unsub3 := host.OnStreaming(func(event kit.MessageUpdateEvent) { +unsub3 := host.OnMessageUpdate(func(event kit.MessageUpdateEvent) { fmt.Print(event.Chunk) }) defer unsub3() @@ -126,6 +126,24 @@ host.OnAfterTurn(kit.HookPriorityNormal, func(h kit.AfterTurnHook) { }) ``` +### PrepareStep — intercept messages between steps + +The most powerful hook — fires between steps within a multi-step agent turn, after any steering messages are injected and before messages are sent to the LLM. Can replace the entire context window. + +```go +host.OnPrepareStep(kit.HookPriorityNormal, func(h kit.PrepareStepHook) *kit.PrepareStepResult { + // h.StepNumber — zero-based step index within the turn + // h.Messages — current context window (includes any steering) + + // Example: transform tool results with images into user messages + modified := transformImageToolResults(h.Messages) + return &kit.PrepareStepResult{Messages: modified} + // Return nil to pass through unchanged +}) +``` + +Use cases: transforming tool results (e.g., image data for vision models), dynamic tool filtering per step, mid-turn context injection, custom stop conditions. + ### Hook priorities ```go @@ -138,19 +156,41 @@ Lower values run first. First non-nil result wins. ## All event types -| Event | Description | -|-------|-------------| -| `ToolCallStartEvent` | LLM began generating tool call arguments (tool name known, args streaming) | -| `ToolCallDeltaEvent` | Streamed JSON fragment of tool call arguments | -| `ToolCallEndEvent` | Tool argument streaming complete, before execution begins | -| `ToolCallEvent` | Tool call fully parsed and about to execute | -| `ToolResultEvent` | Tool execution completed with result | -| `ToolOutputEvent` | Streaming output chunk from tool (e.g., bash stdout/stderr) | -| `MessageUpdateEvent` | Streaming text chunk from LLM | -| `ResponseEvent` | Final response received | -| `TurnStartEvent` | Agent turn started | -| `TurnEndEvent` | Agent turn completed | -| `PasswordPromptEvent` | Sudo command needs password (respond via `ResponseCh`) | +| Event | Typed Subscriber | Description | +|-------|-----------------|-------------| +| `TurnStartEvent` | `OnTurnStart` | Agent turn started | +| `TurnEndEvent` | `OnTurnEnd` | Agent turn completed | +| `MessageStartEvent` | `OnMessageStart` | New assistant message begins | +| `MessageUpdateEvent` | `OnMessageUpdate` | Streaming text chunk from LLM | +| `MessageEndEvent` | `OnMessageEnd` | Assistant message complete | +| `ToolCallStartEvent` | `OnToolCallStart` | LLM began generating tool call arguments | +| `ToolCallDeltaEvent` | `OnToolCallDelta` | Streamed JSON fragment of tool call arguments | +| `ToolCallEndEvent` | `OnToolCallEnd` | Tool argument streaming complete | +| `ToolCallEvent` | `OnToolCall` | Tool call fully parsed, about to execute | +| `ToolExecutionStartEvent` | `OnToolExecutionStart` | Tool begins executing | +| `ToolExecutionEndEvent` | `OnToolExecutionEnd` | Tool finishes executing | +| `ToolResultEvent` | `OnToolResult` | Tool execution completed with result | +| `ToolCallContentEvent` | `OnToolCallContent` | Text content alongside tool calls | +| `ToolOutputEvent` | `OnToolOutput` | Streaming output chunk from tool (e.g., bash) | +| `ResponseEvent` | `OnResponse` | Final response received | +| `ReasoningStartEvent` | `OnReasoningStart` | LLM begins reasoning/thinking | +| `ReasoningDeltaEvent` | `OnReasoningDelta` | Streaming reasoning/thinking chunk | +| `ReasoningCompleteEvent` | `OnReasoningComplete` | Reasoning/thinking finished | +| `StepStartEvent` | `OnStepStart` | New LLM call begins within a turn | +| `StepFinishEvent` | `OnStepFinish` | Step completes (with usage, finish reason, tool call info) | +| `StepUsageEvent` | `OnStepUsage` | Per-step token usage | +| `StreamFinishEvent` | `OnStreamFinish` | Per-step stream completes (with usage + finish reason) | +| `TextStartEvent` | `OnTextStart` | LLM begins text content generation | +| `TextEndEvent` | `OnTextEnd` | LLM finishes text content generation | +| `WarningsEvent` | `OnWarnings` | LLM provider returned warnings | +| `SourceEvent` | `OnSource` | LLM referenced a source (e.g., web search) | +| `ErrorEvent` | `OnError` | Agent-level error during streaming | +| `RetryEvent` | `OnRetry` | LLM request retried after transient error | +| `CompactionEvent` | `OnCompaction` | Conversation compacted | +| `SteerConsumedEvent` | `OnSteerConsumed` | Steering messages injected into turn | +| `PasswordPromptEvent` | — | Sudo command needs password (respond via `ResponseCh`) | + +> **Note:** `OnStreaming` is a deprecated alias for `OnMessageUpdate` and will be removed in a future release. ## Subagent event monitoring diff --git a/sdk/options/index.html b/sdk/options/index.html index f649db81..98efb72b 100644 --- a/sdk/options/index.html +++ b/sdk/options/index.html @@ -7,7 +7,7 @@ - + diff --git a/sdk/overview/index.html b/sdk/overview/index.html index cb0cb98f..6b62a138 100644 --- a/sdk/overview/index.html +++ b/sdk/overview/index.html @@ -7,7 +7,7 @@ - + @@ -153,7 +153,7 @@ host.OnToolResult(func(event kit.ToolResultEvent) { fmt.Println("Tool result:", event.Name) }) -host.OnStreaming(func(event kit.MessageUpdateEvent) { +host.OnMessageUpdate(func(event kit.MessageUpdateEvent) { fmt.Print(event.Chunk) }) ``` diff --git a/sdk/sessions/index.html b/sdk/sessions/index.html index 78c2e8ad..a542f29a 100644 --- a/sdk/sessions/index.html +++ b/sdk/sessions/index.html @@ -7,7 +7,7 @@ - + diff --git a/search.json b/search.json index 0af02a52..76579d93 100644 --- a/search.json +++ b/search.json @@ -338,12 +338,13 @@ "AfterToolResult — modify tool output", "BeforeTurn — modify prompt, inject messages", "AfterTurn — observation only", + "PrepareStep — intercept messages between steps", "Hook priorities", "All event types", "Subagent event monitoring" ], "tags": [], - "wordCount": 604 + "wordCount": 958 }, { "id": "sdk/options", diff --git a/sessions/index.html b/sessions/index.html index d41ec0c8..9b4e9e68 100644 --- a/sessions/index.html +++ b/sessions/index.html @@ -7,7 +7,7 @@ - + diff --git a/themes/index.html b/themes/index.html index 2c334f80..7119c02d 100644 --- a/themes/index.html +++ b/themes/index.html @@ -7,7 +7,7 @@ - +