flowforge-sdk 0.2.3__tar.gz → 0.2.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {flowforge_sdk-0.2.3 → flowforge_sdk-0.2.4}/PKG-INFO +1 -1
- {flowforge_sdk-0.2.3 → flowforge_sdk-0.2.4}/pyproject.toml +1 -1
- {flowforge_sdk-0.2.3 → flowforge_sdk-0.2.4}/src/flowforge/steps.py +27 -4
- {flowforge_sdk-0.2.3 → flowforge_sdk-0.2.4}/.gitignore +0 -0
- {flowforge_sdk-0.2.3 → flowforge_sdk-0.2.4}/README.md +0 -0
- {flowforge_sdk-0.2.3 → flowforge_sdk-0.2.4}/src/flowforge/__init__.py +0 -0
- {flowforge_sdk-0.2.3 → flowforge_sdk-0.2.4}/src/flowforge/agent.py +0 -0
- {flowforge_sdk-0.2.3 → flowforge_sdk-0.2.4}/src/flowforge/agent_def.py +0 -0
- {flowforge_sdk-0.2.3 → flowforge_sdk-0.2.4}/src/flowforge/ai/__init__.py +0 -0
- {flowforge_sdk-0.2.3 → flowforge_sdk-0.2.4}/src/flowforge/ai/providers.py +0 -0
- {flowforge_sdk-0.2.3 → flowforge_sdk-0.2.4}/src/flowforge/client.py +0 -0
- {flowforge_sdk-0.2.3 → flowforge_sdk-0.2.4}/src/flowforge/config.py +0 -0
- {flowforge_sdk-0.2.3 → flowforge_sdk-0.2.4}/src/flowforge/context.py +0 -0
- {flowforge_sdk-0.2.3 → flowforge_sdk-0.2.4}/src/flowforge/decorators.py +0 -0
- {flowforge_sdk-0.2.3 → flowforge_sdk-0.2.4}/src/flowforge/dev/__init__.py +0 -0
- {flowforge_sdk-0.2.3 → flowforge_sdk-0.2.4}/src/flowforge/dev/server.py +0 -0
- {flowforge_sdk-0.2.3 → flowforge_sdk-0.2.4}/src/flowforge/exceptions.py +0 -0
- {flowforge_sdk-0.2.3 → flowforge_sdk-0.2.4}/src/flowforge/execution.py +0 -0
- {flowforge_sdk-0.2.3 → flowforge_sdk-0.2.4}/src/flowforge/integrations/__init__.py +0 -0
- {flowforge_sdk-0.2.3 → flowforge_sdk-0.2.4}/src/flowforge/integrations/fastapi.py +0 -0
- {flowforge_sdk-0.2.3 → flowforge_sdk-0.2.4}/src/flowforge/network.py +0 -0
- {flowforge_sdk-0.2.3 → flowforge_sdk-0.2.4}/src/flowforge/router.py +0 -0
- {flowforge_sdk-0.2.3 → flowforge_sdk-0.2.4}/src/flowforge/tools.py +0 -0
- {flowforge_sdk-0.2.3 → flowforge_sdk-0.2.4}/src/flowforge/triggers.py +0 -0
- {flowforge_sdk-0.2.3 → flowforge_sdk-0.2.4}/src/flowforge/worker.py +0 -0
|
@@ -564,9 +564,32 @@ class StepManager:
|
|
|
564
564
|
"content": ai_response.get("content", ""),
|
|
565
565
|
}
|
|
566
566
|
|
|
567
|
+
# Normalize tool calls to OpenAI format for litellm compatibility.
|
|
568
|
+
# Server stores flat format: {"id", "name", "arguments"}
|
|
569
|
+
# LiteLLM expects OpenAI format: {"id", "type", "function": {"name", "arguments"}}
|
|
570
|
+
raw_tool_calls = ai_response.get("tool_calls", [])
|
|
571
|
+
normalized_tool_calls = []
|
|
572
|
+
for tc in raw_tool_calls:
|
|
573
|
+
if "function" in tc:
|
|
574
|
+
# Already in OpenAI format
|
|
575
|
+
normalized_tool_calls.append(tc)
|
|
576
|
+
else:
|
|
577
|
+
# Convert flat format to OpenAI format
|
|
578
|
+
args = tc.get("arguments", {})
|
|
579
|
+
if not isinstance(args, str):
|
|
580
|
+
args = json.dumps(args)
|
|
581
|
+
normalized_tool_calls.append({
|
|
582
|
+
"id": tc.get("id", ""),
|
|
583
|
+
"type": "function",
|
|
584
|
+
"function": {
|
|
585
|
+
"name": tc.get("name", ""),
|
|
586
|
+
"arguments": args,
|
|
587
|
+
},
|
|
588
|
+
})
|
|
589
|
+
|
|
567
590
|
# Include tool calls in assistant message if present
|
|
568
|
-
if
|
|
569
|
-
assistant_message["tool_calls"] =
|
|
591
|
+
if normalized_tool_calls:
|
|
592
|
+
assistant_message["tool_calls"] = normalized_tool_calls
|
|
570
593
|
|
|
571
594
|
state.messages.append(assistant_message)
|
|
572
595
|
|
|
@@ -574,12 +597,12 @@ class StepManager:
|
|
|
574
597
|
finish_reason = ai_response.get("finish_reason", "stop")
|
|
575
598
|
|
|
576
599
|
# If no tool calls, we're done
|
|
577
|
-
if not
|
|
600
|
+
if not normalized_tool_calls or finish_reason == "stop":
|
|
578
601
|
state.status = "completed"
|
|
579
602
|
break
|
|
580
603
|
|
|
581
604
|
# Execute each tool call
|
|
582
|
-
for tool_call in
|
|
605
|
+
for tool_call in normalized_tool_calls:
|
|
583
606
|
tool_call_id = tool_call.get("id", f"tool-{state.tool_calls_count}")
|
|
584
607
|
tool_name = tool_call.get("function", {}).get("name", "")
|
|
585
608
|
tool_args = tool_call.get("function", {}).get("arguments", {})
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|