feat: flow export/import + procedural Flow Assist #96

Merged
chihlasm merged 43 commits from feat/flow-transfer-and-procedural-assist into main 2026-03-07 20:51:37 +00:00
2 changed files with 11 additions and 5 deletions
Showing only changes of commit d1d21152d7 - Show all commits

View File

@@ -465,7 +465,9 @@ async def send_message(
for msg in history
]
provider = get_ai_provider()
# Resolve model for this action type
action_model = settings.get_model_for_action(action_type)
provider = get_ai_provider(model=action_model)
response_text, input_tokens, output_tokens = await provider.generate_text(
system_prompt=system_prompt,
messages=provider_messages,
@@ -584,7 +586,7 @@ Also provide metadata as a separate JSON object after the tree:
provider_messages.append({"role": "user", "content": generation_instruction})
provider = get_ai_provider()
provider = get_ai_provider(model=settings.get_model_for_action("generate_full"))
for attempt in range(2): # One try + one retry
response_text, input_tokens, output_tokens = await provider.generate_text(

View File

@@ -209,9 +209,13 @@ class AnthropicProvider(AIProvider):
return await self.generate_json(system_prompt, messages, max_tokens)
def get_ai_provider() -> AIProvider:
def get_ai_provider(model: str | None = None) -> AIProvider:
"""Factory that returns the configured AI provider.
Args:
model: Optional model override (Anthropic model ID). Only applied to
AnthropicProvider; Gemini always uses settings.AI_MODEL_GEMINI.
Selection logic:
1. If AI_PROVIDER == "gemini" and GOOGLE_AI_API_KEY is set -> GeminiProvider
2. If AI_PROVIDER == "anthropic" and ANTHROPIC_API_KEY is set -> AnthropicProvider
@@ -230,7 +234,7 @@ def get_ai_provider() -> AIProvider:
if settings.ANTHROPIC_API_KEY:
return AnthropicProvider(
api_key=settings.ANTHROPIC_API_KEY,
model=settings.AI_MODEL_ANTHROPIC,
model=model or settings.AI_MODEL_ANTHROPIC,
timeout=settings.AI_REQUEST_TIMEOUT_SECONDS,
)
@@ -238,7 +242,7 @@ def get_ai_provider() -> AIProvider:
if settings.ANTHROPIC_API_KEY:
return AnthropicProvider(
api_key=settings.ANTHROPIC_API_KEY,
model=settings.AI_MODEL_ANTHROPIC,
model=model or settings.AI_MODEL_ANTHROPIC,
timeout=settings.AI_REQUEST_TIMEOUT_SECONDS,
)
# Fallback to Gemini