mirror of
https://github.com/MODSetter/SurfSense.git
synced 2026-05-12 09:12:40 +02:00
Document thinkingStepId on tool-call parts and first-key metadata merge.
This commit is contained in:
parent
007a0a30ec
commit
a309e830d3
1 changed files with 12 additions and 1 deletions
|
|
@ -52,6 +52,12 @@ _MEANINGFUL_PART_TYPES: frozenset[str] = frozenset({"text", "reasoning", "tool-c
|
||||||
|
|
||||||
|
|
||||||
def _merge_tool_part_metadata(part: dict[str, Any], metadata: dict[str, Any] | None) -> None:
|
def _merge_tool_part_metadata(part: dict[str, Any], metadata: dict[str, Any] | None) -> None:
|
||||||
|
"""Shallow-merge ``metadata`` into ``part["metadata"]``; first key wins.
|
||||||
|
|
||||||
|
Used for tool-call linkage (``spanId``, ``thinkingStepId``, …): a later
|
||||||
|
event must not overwrite an existing key so chunk order vs ``on_tool_start``
|
||||||
|
stays stable.
|
||||||
|
"""
|
||||||
if not metadata:
|
if not metadata:
|
||||||
return
|
return
|
||||||
md = part.setdefault("metadata", {})
|
md = part.setdefault("metadata", {})
|
||||||
|
|
@ -70,6 +76,7 @@ class AssistantContentBuilder:
|
||||||
| { type: "reasoning"; text: string }
|
| { type: "reasoning"; text: string }
|
||||||
| { type: "tool-call"; toolCallId: str; toolName: str;
|
| { type: "tool-call"; toolCallId: str; toolName: str;
|
||||||
args: dict; result?: any; argsText?: str; langchainToolCallId?: str;
|
args: dict; result?: any; argsText?: str; langchainToolCallId?: str;
|
||||||
|
metadata?: { spanId?: str; thinkingStepId?: str; ... };
|
||||||
state?: "aborted" }
|
state?: "aborted" }
|
||||||
| { type: "data-thinking-steps"; data: { steps: ThinkingStepData[] } }
|
| { type: "data-thinking-steps"; data: { steps: ThinkingStepData[] } }
|
||||||
| { type: "data-step-separator"; data: { stepIndex: int } }
|
| { type: "data-step-separator"; data: { stepIndex: int } }
|
||||||
|
|
@ -189,7 +196,11 @@ class AssistantContentBuilder:
|
||||||
*,
|
*,
|
||||||
metadata: dict[str, Any] | None = None,
|
metadata: dict[str, Any] | None = None,
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Register a tool-call card. Args are filled in by later events."""
|
"""Register a tool-call card. Args are filled in by later events.
|
||||||
|
|
||||||
|
Optional ``metadata`` (``spanId``, ``thinkingStepId``, …) is stored on the
|
||||||
|
part; duplicate ``tool-input-start`` calls merge with first-key-wins.
|
||||||
|
"""
|
||||||
if not ui_id:
|
if not ui_id:
|
||||||
return
|
return
|
||||||
# Skip duplicate registration: the stream may emit
|
# Skip duplicate registration: the stream may emit
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue