fix: For every component that uses an LLM input, replace with the new LLM selector#9966
Conversation
|
Important Review skippedAuto incremental reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the You can disable this status message by setting the WalkthroughAdds an external_options entry (connect_other_models) to the Agent component’s agent_llm dropdown across multiple starter project JSONs, removes certain provider icons (commonly Groq and brain), and updates code_hash values and embedded code blocks. In Python, removes the extra {"icon":"brain"} from agent_llm options_metadata in AgentComponent. Changes
Sequence Diagram(s)sequenceDiagram
participant U as User
participant A as AgentComponent (agent_llm)
participant E as external_options (connect_other_models)
participant C as Model Connector
participant P as Provider LLM
U->>A: Select Model Provider
alt Choose predefined provider
A->>P: Initialize provider LLM
P-->>A: Ready
else Use "Connect other models"
A->>E: Open connect_other_models
E->>C: Configure external model
C-->>A: Return configured provider
A->>P: Initialize configured LLM
P-->>A: Ready
end
A-->>U: Model configured
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
Suggested labels
Suggested reviewers
Pre-merge checks and finishing touches✅ Passed checks (3 passed)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
…istency - Refactored long lines in multiple starter project JSON files for better readability. - Updated the description in the Youtube Analysis project to enhance clarity. - Ensured consistent import paths and formatting across all modified files.
Codecov Report✅ All modified and coverable lines are covered by tests. ❌ Your project status has failed because the head coverage (46.08%) is below the target coverage (55.00%). You can increase the head coverage or adjust the target coverage. Additional details and impacted files@@ Coverage Diff @@
## main #9966 +/- ##
=======================================
Coverage 23.45% 23.45%
=======================================
Files 1090 1090
Lines 39841 39841
Branches 5530 5530
=======================================
Hits 9346 9346
Misses 30324 30324
Partials 171 171
Flags with carried forward coverage won't be shown. Click here to find out more. 🚀 New features to boost your workflow:
|
… project JSON - Eliminated the Amazon icon entry from the options_metadata array to streamline the metadata and improve consistency across starter projects.
There was a problem hiding this comment.
Actionable comments posted: 0
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (11)
src/backend/base/langflow/initial_setup/starter_projects/Invoice Summarizer.json (1)
24-30: Replace literal 'œ' with '\u0153' in starter_projects JSON edge IDs/handles.rg shows literal 'œ' present across many files in src/backend/base/langflow/initial_setup/starter_projects (e.g., Youtube Analysis.json, Meeting Summary.json, Invoice Summarizer.json). Replace every occurrence inside "id", "sourceHandle", and "targetHandle" strings with '\u0153' to match the PR encoding goal and avoid serialization/rendering issues.
src/backend/base/langflow/initial_setup/starter_projects/Instagram Copywriter.json (2)
808-809: Convert literal emojis to Unicode escape sequences.
Replace literal emojis in JSON for consistent rendering/export:
- src/backend/base/langflow/initial_setup/starter_projects/Instagram Copywriter.json — line 808: replace "🌍
✈️ " with "\uD83C\uDF0D\u2708\uFE0F"- src/backend/base/langflow/initial_setup/starter_projects/Instagram Copywriter.json — line 1433: replace "📖" with "\uD83D\uDCD6"
26-32: Replace literal 'œ' with Unicode escape '\u0153' across JSON IDs/handles.Occurrences in src/backend/base/langflow/initial_setup/starter_projects/Instagram Copywriter.json — lines: 26, 29, 31, 56, 59, 61, 84, 87, 89, 112, 115, 117, 140, 143, 145, 169, 172, 174, 198, 201, 203, 226, 229, 231, 255, 258, 260, 282, 284, 286. Replace each literal œ inside string values (IDs/handles) with '\u0153'.
src/backend/base/langflow/initial_setup/starter_projects/News Aggregator.json (1)
27-33: Standardize literal 'œ' to the escaped "\u0153" in edge/handle strings across starter_projects JSON filesrg shows the literal œ occurs throughout src/backend/base/langflow/initial_setup/starter_projects/*.json — replace occurrences in id, sourceHandle, targetHandle and other edge/handle strings with the escaped \u0153 for consistent encoding across templates.
src/backend/base/langflow/initial_setup/starter_projects/Simple Agent.json (1)
992-1007: Provider icon cleanup OK for Simple Agent; 'Groq' absent but 'brain-circuit' icons remain elsewhereNo "Groq" matches under src/backend/base/langflow/initial_setup/starter_projects; however "icon": "brain-circuit" is still present in multiple starter_projects (examples): src/backend/base/langflow/initial_setup/starter_projects/Youtube Analysis.json, SEO Keyword Generator.json, Research Translation Loop.json, Portfolio Website Code Generator.json, Research Agent.json, Memory Chatbot.json, Meeting Summary.json, Image Sentiment Analysis.json, Financial Report Parser.json, Hybrid Search RAG.json, Document Q&A.json, Market Research.json, Blog Writer.json, Custom Component Generator.json, Basic Prompting.json, Instagram Copywriter.json, Vector Store RAG.json, Twitter Thread Generator.json, Basic Prompt Chaining.json, Text Sentiment Analysis.json — remove or confirm intentional.
src/backend/base/langflow/initial_setup/starter_projects/Nvidia Remix.json (1)
25-31: Replace all occurrences of the custom "œ" delimiter with the Unicode escape \u0153 across starter project JSONs.rg shows "œ" in 33 files (576 lines, 12752 matches) under src/backend/base/langflow/initial_setup/starter_projects — replace every occurrence with \u0153 for encoding consistency across environments.
src/backend/base/langflow/initial_setup/starter_projects/Price Deal Finder.json (1)
1466-1466: Fix typos in README note“searcn” → “search”.
- * The **Agent** returns a structured response to your searcn in the chat. + * The **Agent** returns a structured response to your search in the chat.src/backend/base/langflow/initial_setup/starter_projects/Youtube Analysis.json (1)
2072-2072: Fix typo in README“YoutTube” → “YouTube”.
-- If you don't have a YoutTube API key, create one in the [Google Cloud Console](https://console.cloud.google.com). +- If you don't have a YouTube API key, create one in the [Google Cloud Console](https://console.cloud.google.com).src/backend/base/langflow/initial_setup/starter_projects/Market Research.json (2)
2140-2152: Duplicate provider icon in options_metadata (length mismatch).options has 3 providers, but options_metadata has 4 entries (last duplicates OpenAI). This can misalign icons with options.
Apply this diff to remove the extra icon entry:
"options_metadata": [ { "icon": "Anthropic" }, { "icon": "GoogleGenerativeAI" }, { "icon": "OpenAI" - }, - { - "icon": "OpenAI" } ],
27-33: Leftover 'œ' delimiters remain in starter_projects JSON — replace with JSON Unicode escape \u0153rg shows many occurrences under src/backend/base/langflow/initial_setup/starter_projects/*.json; update all literal 'œ' in id/sourceHandle/targetHandle strings to '\u0153'.
src/backend/base/langflow/initial_setup/starter_projects/Search agent.json (1)
25-29: Replace leftover 'œ' delimiters with JSON unicode escape \u0153 in starter_projects JSON filesrg shows many occurrences under src/backend/base/langflow/initial_setup/starter_projects/*.json (edge id / sourceHandle / targetHandle). Replace each 'œ' with \u0153 (JSON unicode escape) in those fields across all affected files and re-run the grep to confirm none remain.
🧹 Nitpick comments (12)
src/backend/base/langflow/initial_setup/starter_projects/Invoice Summarizer.json (1)
1277-1277: Use non-greedy JSON regex to avoid over-matching.
json_pattern = r"\{.*\}"can swallow too much. Prefer non‑greedy:- json_pattern = r"\{.*\}" + json_pattern = r"\{.*?\}"src/backend/base/langflow/initial_setup/starter_projects/Simple Agent.json (1)
27-33: Replace legacy œ delimiter with Unicode escape \u0153 across starter_projects JSON filesrg shows widespread occurrences of the custom œ in src/backend/base/langflow/initial_setup/starter_projects/*.json (e.g. Simple Agent.json, Youtube Analysis.json, Social Media Agent.json); normalize these edge IDs/handles to \u0153 to avoid encoding/rendering issues.
src/backend/base/langflow/initial_setup/starter_projects/Nvidia Remix.json (2)
877-890: Fix options_metadata misalignment (extra Amazon icon).
optionshas 3 providers, butoptions_metadatalists 4, including an unused Amazon icon. This can desync icons vs. options.Apply this diff to align the metadata list with the options:
"options": [ "Anthropic", "Google Generative AI", "OpenAI" ], "options_metadata": [ - { - "icon": "Amazon" - }, { "icon": "Anthropic" }, { "icon": "GoogleGenerativeAI" }, { "icon": "OpenAI" } ],
935-936: AgentComponent changes look solid; tiny nit on stale field_order entry.The OpenAI
json_modeinput is filtered out in code, butfield_orderstill lists"json_mode". Optional: remove it to avoid stale UI ordering references.src/lfx/src/lfx/components/agents/agent.py (1)
514-517: Simplify redundant branch when adding provider fieldsBoth branches call update(fields_to_add). Collapse to a single call.
- # Add provider-specific fields - if field_value == "OpenAI" and not any(field in build_config for field in fields_to_add): - build_config.update(fields_to_add) - else: - build_config.update(fields_to_add) + # Add provider-specific fields + build_config.update(fields_to_add)src/backend/base/langflow/initial_setup/starter_projects/Price Deal Finder.json (3)
1534-1545: Remove deprecated field from field_orderjson_mode remains in field_order but is not present in the template (and OpenAI json_mode is filtered in code). Drop it to avoid confusion.
"field_order": [ "agent_llm", "max_tokens", "model_kwargs", - "json_mode", "model_name", "openai_api_base",
2058-2058: Grammar nit in Agent Instructions text“There two main ways” → “There are two main ways”.
-There two main ways you can provide additional context to your queries. +There are two main ways you can provide additional context to your queries.
23-27: Normalize legacy œ delimiters in edge/handle stringsConsider replacing the custom œ character with the Unicode escape \u0153 (or plain ASCII) for consistency across templates.
Run a quick scan later in the PR to ensure all starter JSONs are normalized.
src/backend/base/langflow/initial_setup/starter_projects/Youtube Analysis.json (2)
735-755: Drop unused json_mode from field_orderIt’s listed but not defined in template and is filtered out in code.
"field_order": [ "agent_llm", "max_tokens", "model_kwargs", - "json_mode", "model_name",
25-31: Optional: normalize œ delimiters in edge ids/handlesStandardize to \u0153 or ASCII to avoid encoding issues.
src/backend/base/langflow/initial_setup/starter_projects/SaaS Pricing.json (1)
1014-1015: Avoid greedy JSON match in structured-output parsing.Using r"{.*}" with DOTALL can over-capture when multiple braces exist. Prefer non-greedy.
Apply this diff within the embedded AgentComponent code:
- json_pattern = r"\{.*\}" + json_pattern = r"\{.*?\}"src/backend/base/langflow/initial_setup/starter_projects/Research Agent.json (1)
2702-2703: Use a non-greedy JSON regex to prevent over-capture.Same parsing concern as in SaaS Pricing; make the pattern non-greedy.
Apply this diff within the embedded AgentComponent code:
- json_pattern = r"\{.*\}" + json_pattern = r"\{.*?\}"
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
src/frontend/package-lock.jsonis excluded by!**/package-lock.json
📒 Files selected for processing (14)
src/backend/base/langflow/initial_setup/starter_projects/Instagram Copywriter.json(3 hunks)src/backend/base/langflow/initial_setup/starter_projects/Invoice Summarizer.json(3 hunks)src/backend/base/langflow/initial_setup/starter_projects/Market Research.json(4 hunks)src/backend/base/langflow/initial_setup/starter_projects/News Aggregator.json(3 hunks)src/backend/base/langflow/initial_setup/starter_projects/Nvidia Remix.json(3 hunks)src/backend/base/langflow/initial_setup/starter_projects/Pokédex Agent.json(3 hunks)src/backend/base/langflow/initial_setup/starter_projects/Price Deal Finder.json(3 hunks)src/backend/base/langflow/initial_setup/starter_projects/Research Agent.json(3 hunks)src/backend/base/langflow/initial_setup/starter_projects/SaaS Pricing.json(3 hunks)src/backend/base/langflow/initial_setup/starter_projects/Search agent.json(3 hunks)src/backend/base/langflow/initial_setup/starter_projects/Simple Agent.json(3 hunks)src/backend/base/langflow/initial_setup/starter_projects/Social Media Agent.json(3 hunks)src/backend/base/langflow/initial_setup/starter_projects/Youtube Analysis.json(3 hunks)src/lfx/src/lfx/components/agents/agent.py(1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (48)
- GitHub Check: Run Frontend Tests / Playwright Tests - Shard 35/40
- GitHub Check: Run Frontend Tests / Playwright Tests - Shard 36/40
- GitHub Check: Run Frontend Tests / Playwright Tests - Shard 39/40
- GitHub Check: Run Frontend Tests / Playwright Tests - Shard 26/40
- GitHub Check: Run Frontend Tests / Playwright Tests - Shard 40/40
- GitHub Check: Run Frontend Tests / Playwright Tests - Shard 37/40
- GitHub Check: Run Frontend Tests / Playwright Tests - Shard 31/40
- GitHub Check: Run Frontend Tests / Playwright Tests - Shard 33/40
- GitHub Check: Run Frontend Tests / Playwright Tests - Shard 30/40
- GitHub Check: Run Frontend Tests / Playwright Tests - Shard 34/40
- GitHub Check: Run Frontend Tests / Playwright Tests - Shard 29/40
- GitHub Check: Run Frontend Tests / Playwright Tests - Shard 25/40
- GitHub Check: Run Frontend Tests / Playwright Tests - Shard 22/40
- GitHub Check: Run Frontend Tests / Playwright Tests - Shard 38/40
- GitHub Check: Run Frontend Tests / Playwright Tests - Shard 28/40
- GitHub Check: Run Frontend Tests / Playwright Tests - Shard 21/40
- GitHub Check: Run Frontend Tests / Playwright Tests - Shard 19/40
- GitHub Check: Run Frontend Tests / Playwright Tests - Shard 27/40
- GitHub Check: Run Frontend Tests / Playwright Tests - Shard 32/40
- GitHub Check: Run Frontend Tests / Playwright Tests - Shard 24/40
- GitHub Check: Run Frontend Tests / Playwright Tests - Shard 20/40
- GitHub Check: Run Frontend Tests / Playwright Tests - Shard 9/40
- GitHub Check: Run Frontend Tests / Playwright Tests - Shard 23/40
- GitHub Check: Run Frontend Tests / Playwright Tests - Shard 17/40
- GitHub Check: Run Frontend Tests / Playwright Tests - Shard 18/40
- GitHub Check: Run Frontend Tests / Playwright Tests - Shard 16/40
- GitHub Check: Run Frontend Tests / Playwright Tests - Shard 15/40
- GitHub Check: Run Frontend Tests / Playwright Tests - Shard 13/40
- GitHub Check: Run Frontend Tests / Playwright Tests - Shard 10/40
- GitHub Check: Run Frontend Tests / Playwright Tests - Shard 12/40
- GitHub Check: Run Frontend Tests / Playwright Tests - Shard 6/40
- GitHub Check: Run Frontend Tests / Playwright Tests - Shard 7/40
- GitHub Check: Run Frontend Tests / Playwright Tests - Shard 14/40
- GitHub Check: Run Frontend Tests / Playwright Tests - Shard 11/40
- GitHub Check: Run Frontend Tests / Playwright Tests - Shard 4/40
- GitHub Check: Run Frontend Tests / Playwright Tests - Shard 5/40
- GitHub Check: Run Frontend Tests / Playwright Tests - Shard 3/40
- GitHub Check: Run Frontend Tests / Playwright Tests - Shard 8/40
- GitHub Check: Run Frontend Tests / Playwright Tests - Shard 2/40
- GitHub Check: Run Frontend Tests / Playwright Tests - Shard 1/40
- GitHub Check: Run Backend Tests / Unit Tests - Python 3.10 - Group 5
- GitHub Check: Run Backend Tests / Unit Tests - Python 3.10 - Group 1
- GitHub Check: Run Backend Tests / Unit Tests - Python 3.10 - Group 3
- GitHub Check: Run Backend Tests / Unit Tests - Python 3.10 - Group 4
- GitHub Check: Run Backend Tests / Unit Tests - Python 3.10 - Group 2
- GitHub Check: Run Backend Tests / Integration Tests - Python 3.10
- GitHub Check: Test Starter Templates
- GitHub Check: test-starter-projects
🔇 Additional comments (35)
src/backend/base/langflow/initial_setup/starter_projects/Invoice Summarizer.json (2)
1108-1108: code_hash updated correctly.
1202-1212: external_options added to agent_llm is correct and aligned with the selector UX.src/backend/base/langflow/initial_setup/starter_projects/Instagram Copywriter.json (3)
1920-1920: code_hash bumped as expected.
2031-2040: agent_llm external_options correctly introduces Connect other models.
2105-2105: Same non‑greedy JSON regex recommendation as in Invoice Summarizer.Reference prior comment for the diff.
src/backend/base/langflow/initial_setup/starter_projects/News Aggregator.json (2)
1402-1412: external_options added correctly to agent_llm — verify icon keyexternal_options matches the Agent component’s connect_other_models branch in update_build_config. Grep shows "CornerDownLeft" used across starter project JSONs (e.g. src/backend/base/langflow/initial_setup/starter_projects/Invoice Summarizer.json:1207, Travel Planning Agents.json:1716) but I couldn't locate a frontend icon definition/import for "CornerDownLeft" in the repo — confirm this icon exists in your UI icon set (lucide/react-icons/your icon library) or replace with a valid key.
1308-1308: code_hash updated — verify it matches embedded Agent codemetadata.code_hash = "01b36483d480" in src/backend/base/langflow/initial_setup/starter_projects/News Aggregator.json (metadata at ~line 1308; AgentComponent node at ~line 1326). Confirm that this 12‑char hash corresponds to the Agent's embedded source used by lfx.components.agents.agent.AgentComponent to avoid stale-cache/mismatch errors.
src/backend/base/langflow/initial_setup/starter_projects/Simple Agent.json (2)
978-988: Nice addition: external_options for “Connect other models” — present in these starter projectsMatches the DropdownInput schema and aligns with the Agent update_build_config handler.
Found in:
- src/backend/base/langflow/initial_setup/starter_projects/Youtube Analysis.json
- src/backend/base/langflow/initial_setup/starter_projects/Simple Agent.json
- src/backend/base/langflow/initial_setup/starter_projects/Sequential Tasks Agents.json
- src/backend/base/langflow/initial_setup/starter_projects/Travel Planning Agents.json
- src/backend/base/langflow/initial_setup/starter_projects/Social Media Agent.json
- src/backend/base/langflow/initial_setup/starter_projects/SaaS Pricing.json
- src/backend/base/langflow/initial_setup/starter_projects/Search agent.json
- src/backend/base/langflow/initial_setup/starter_projects/Research Agent.json
- src/backend/base/langflow/initial_setup/starter_projects/Price Deal Finder.json
- src/backend/base/langflow/initial_setup/starter_projects/Pokédex Agent.json
- src/backend/base/langflow/initial_setup/starter_projects/News Aggregator.json
- src/backend/base/langflow/initial_setup/starter_projects/Nvidia Remix.json
- src/backend/base/langflow/initial_setup/starter_projects/Instagram Copywriter.json
- src/backend/base/langflow/initial_setup/starter_projects/Market Research.json
- src/backend/base/langflow/initial_setup/starter_projects/Invoice Summarizer.json
Add the same external_options to other starter projects for consistency where needed.
887-887: Cannot verify code_hash — template.code.value missing for AgentComponent metadataMultiple starter-project JSONs contain metadata.code_hash = 01b36483d480 but no template.code.value was found under the AgentComponent node, so I could not recompute/confirm the hash.
Files/locations:
- src/backend/base/langflow/initial_setup/starter_projects/Instagram Copywriter.json — data>nodes>[8]>data>node>metadata
- src/backend/base/langflow/initial_setup/starter_projects/Invoice Summarizer.json — data>nodes>[7]>data>node>metadata
- src/backend/base/langflow/initial_setup/starter_projects/Market Research.json — data>nodes>[7]>data>node>metadata
- src/backend/base/langflow/initial_setup/starter_projects/News Aggregator.json — data>nodes>[7]>data>node>metadata
- src/backend/base/langflow/initial_setup/starter_projects/Nvidia Remix.json — data>nodes>[2]>data>node>metadata
- src/backend/base/langflow/initial_setup/starter_projects/Pokédex Agent.json — data>nodes>[6]>data>node>metadata
- src/backend/base/langflow/initial_setup/starter_projects/Price Deal Finder.json — data>nodes>[8]>data>node>metadata
- src/backend/base/langflow/initial_setup/starter_projects/Research Agent.json — data>nodes>[10]>data>node>metadata
- src/backend/base/langflow/initial_setup/starter_projects/SaaS Pricing.json — data>nodes>[4]>data>node>metadata
- src/backend/base/langflow/initial_setup/starter_projects/Search agent.json — data>nodes>[6]>data>node>metadata
- src/backend/base/langflow/initial_setup/starter_projects/Sequential Tasks Agents.json — data>nodes>[0],[1],[7]>data>node>metadata
- src/backend/base/langflow/initial_setup/starter_projects/Simple Agent.json — data>nodes>[5]>data>node>metadata
- src/backend/base/langflow/initial_setup/starter_projects/Social Media Agent.json — data>nodes>[8]>data>node>metadata
- src/backend/base/langflow/initial_setup/starter_projects/Travel Planning Agents.json — data>nodes>[6],[7],[8]>data>node>metadata
- src/backend/base/langflow/initial_setup/starter_projects/Youtube Analysis.json — data>nodes>[2]>data>node>metadata
Action required:
- If code_hash must reflect the serialized code at template.code.value, regenerate/update code_hash from that serialized value (or embed template.code.value under the AgentComponent metadata) so hashes match.
- If the identical code_hash is intentional (shared/placeholder), confirm that behavior.
src/backend/base/langflow/initial_setup/starter_projects/Nvidia Remix.json (2)
767-767: code_hash bump matches content changes.Looks consistent with the updated Agent component code.
858-868: External LLM selector wired correctly.
external_optionsfor connect_other_models is well-formed and matches the Agent code path that handles this selection.Please sanity-check in the UI that selecting “Connect other models” flips the agent_llm input to accept a LanguageModel handle and removes provider fields as intended.
src/backend/base/langflow/initial_setup/starter_projects/Social Media Agent.json (3)
1245-1245: code_hash bump looks correctHash updated to reflect embedded Agent changes. No issues.
1411-1411: Embedded Agent code updated and in sync with sourceThe inlined AgentComponent code includes the new external_options and cleaned provider metadata. Looks good.
1336-1346: New external_options hook for “Connect other models”Addition matches AgentComponent expectations and enables the new selector. Suggest verifying consistency across starter projects and that update_build_config handles this value end-to-end.
src/lfx/src/lfx/components/agents/agent.py (2)
69-69: Removed stray “brain” icon from options_metadataKeeping provider metadata aligned to MODEL_PROVIDERS_LIST only. Good cleanup.
521-547: connect_other_models path is correctly handledSwitching to a LanguageModel handle with placeholder and external_options is implemented properly.
src/backend/base/langflow/initial_setup/starter_projects/Pokédex Agent.json (3)
1193-1193: code_hash updated appropriatelyMatches the embedded Agent code changes.
1287-1297: Added external_options -> connect_other_modelsConsistent with the new selector; UI should surface the node properly.
1362-1362: Agent code block refreshedEmbedded AgentComponent reflects the new selector and provider metadata cleanup.
src/backend/base/langflow/initial_setup/starter_projects/Price Deal Finder.json (3)
1560-1560: code_hash bump looks goodMatches the large Agent component code update.
1654-1664: Added external_options for agent_llm — correct shapeThe fields.data.node payload matches the new selector contract.
If the UI expects a different key casing (e.g., displayName vs display_name), confirm it renders the “Connect other models” entry.
1729-1730: AgentComponent code update aligns with new LLM selectorGood addition of external_options handling and provider-field pruning.
src/backend/base/langflow/initial_setup/starter_projects/Youtube Analysis.json (2)
762-762: code_hash bump for Agent — OKReflects the embedded code changes.
853-863: external_options added to Model Provider — OKSchema matches the new LLM selector hook.
src/backend/base/langflow/initial_setup/starter_projects/Search agent.json (3)
899-899: code_hash update aligns with embedded Agent code changes.Looks consistent with the updated AgentComponent code block.
1068-1069: Agent component code block: overall LGTM.
- Handles connect_other_models in update_build_config.
- Filters json_mode from OpenAI.
- Sensible error handling and logging.
No blockers from this embedded code change.
993-1003: New LLM selector hook added (external_options).The external_options node for connect_other_models is correctly structured and matches the AgentComponent implementation that handles this path.
To ensure parity across starter projects, run a quick check that each Agent node’s agent_llm includes external_options.connect_other_models:
src/backend/base/langflow/initial_setup/starter_projects/Market Research.json (4)
2026-2026: code_hash updated appropriately.Matches the new AgentComponent code content.
2120-2130: New LLM selector hook added (external_options).Correct structure for connect_other_models. Consistent with AgentComponent logic.
Optionally verify that the UI supports this new external_options path for Agent in this flow, given a separate LanguageModelComponent is also present.
2198-2199: Agent component code block: overall LGTM.Same changes as other flows; supports connect_other_models path and improved error handling.
1-2648: Automated validation for provider dropdowns across starter projects (run fixed check)Run the script below — it fixes the previous escaping error and reports any agent_llm options vs options_metadata length mismatches and missing external_options.connect_other_models in src/backend/base/langflow/initial_setup/starter_projects:
#!/bin/bash set -euo pipefail tmp_py=$(mktemp /tmp/check_starters.XXXX.py) cat >"$tmp_py" <<'PY' import json, sys, pathlib root = pathlib.Path("src/backend/base/langflow/initial_setup/starter_projects") problems = [] if not root.exists(): print(f"ERROR: path not found: {root}") sys.exit(2) for p in sorted(root.glob("*.json")): try: data = json.loads(p.read_text(encoding="utf-8")) except Exception as e: problems.append((str(p), f"JSON parse error: {e}")) continue nodes = (data.get("data", {}) or {}).get("nodes", []) or [] for node in nodes: tmpl = (((node or {}).get("data", {}) or {}).get("node", {}) or {}).get("template", {}) or {} agent = tmpl.get("agent_llm") if isinstance(agent, dict): opts = agent.get("options") metas = agent.get("options_metadata") if isinstance(opts, list) and isinstance(metas, list) and len(opts) != len(metas): problems.append((str(p), f"agent_llm options({len(opts)}) != options_metadata({len(metas)})")) ext = agent.get("external_options") or {} nodefld = (((ext.get("fields") or {}).get("data") or {}).get("node") or {}) if nodefld.get("name") != "connect_other_models": problems.append((str(p), "agent_llm missing external_options.connect_other_models")) print("\n".join(f"{f}: {msg}" for f, msg in problems)) sys.exit(1 if problems else 0) PY python "$tmp_py" rc=$? rm -f "$tmp_py" exit $rcsrc/backend/base/langflow/initial_setup/starter_projects/SaaS Pricing.json (2)
845-845: Agent code_hash bump aligns with component changes.Looks good.
939-949: LLM selector external_options block is well-formed.fields.data.node schema matches the new “Connect other models” UI entry.
If possible, verify in the Playground that selecting “Connect other models” triggers the backend path that sets agent_llm to a LanguageModel input (input_types ["LanguageModel"]) and hides provider-specific fields.
src/backend/base/langflow/initial_setup/starter_projects/Research Agent.json (2)
2533-2533: Agent code_hash updated appropriately.Consistent with the shared AgentComponent changes.
2627-2637: Adds “Connect other models” to agent_llm; structure is correct.Matches the expected external_options schema.
Confirm the new entry appears in the dropdown and that choosing it swaps agent_llm to accept a direct LanguageModel handle, removing provider-specific fields.
|



This pull request updates the
Instagram Copywriter.jsonstarter project to improve encoding consistency and enhance compatibility with Unicode characters. The main changes involve replacing custom placeholder characters with their proper Unicode escape sequences throughout edge and handle identifiers, updating emoji representations, and refining metadata and configuration options.Encoding and Unicode Improvements
œin edge and handle identifiers with the Unicode escape sequence\u0153for better encoding consistency and compatibility. (src/backend/base/langflow/initial_setup/starter_projects/Instagram Copywriter.json) [1] [2] [3] [4] [5] [6] [7] [8] [9] [10]src/backend/base/langflow/initial_setup/starter_projects/Instagram Copywriter.json) [1] [2]Metadata and Configuration Updates
code_hashin the metadata section to reflect the latest version. (src/backend/base/langflow/initial_setup/starter_projects/Instagram Copywriter.json)Groq,brain) for clarity and maintainability. (src/backend/base/langflow/initial_setup/starter_projects/Instagram Copywriter.json)providerconfiguration by adding anexternal_optionsfield, allowing users to connect other models via a new UI option. (src/backend/base/langflow/initial_setup/starter_projects/Instagram Copywriter.json)Summary by CodeRabbit
New Features
Bug Fixes
Chores