-
Notifications
You must be signed in to change notification settings - Fork 692
feat: add new models and frontend improvements #925
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR adds new LLM models and provider integrations, initializes a Next.js frontend application, resolves linting errors and deprecation warnings, and removes readonly router patterns.
Key Changes:
- Added Google Gemini and OpenRouter provider integrations with API key-based model filtering
- Introduced multiple new model entries (GPT-5.x series, Gemini 3, DeepSeek 3.2, Grok 4)
- Migrated from deprecated
HTTP_422_UNPROCESSABLE_ENTITYtoHTTP_422_UNPROCESSABLE_CONTENT - Updated type annotations from
dicttodict[str, Any]throughout the codebase - Consolidated routers by removing readonly variants (e.g.,
admin_router_readonly,chat_router_readonly) - Initialized Next.js 15 frontend with TanStack Query, Shadcn UI, and Tailwind CSS
Reviewed changes
Copilot reviewed 91 out of 93 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| intentkit/models/llm.csv | Added new model entries including GPT-5.x, Gemini 3 Pro, DeepSeek 3.2, updated provider from gatewayz to openrouter |
| intentkit/models/llm.py | Added Google and OpenRouter provider support, implemented API key-based model filtering logic |
| pyproject.toml | Added langchain-google-genai dependency |
| uv.lock | Added Google AI dependencies (google-ai-generativelanguage, google-auth, grpcio, protobuf) |
| intentkit/utils/error.py | Updated to use HTTP_422_UNPROCESSABLE_CONTENT and added type hints |
| intentkit/config/config.py | Added google_api_key and openrouter_api_key configuration options |
| app/api.py | Removed readonly router imports, consolidated to single routers |
| app/admin/*.py | Removed readonly router variants, consolidated endpoints |
| app/entrypoints/*.py | Renamed routers (e.g., router_rw/router_ro to agent_api_router), removed readonly variants |
| app/services/twitter/*.py | Renamed router variables to twitter_oauth2_router and twitter_callback_router |
| Multiple skill files | Updated type annotations from dict to dict[str, Any] for better type safety |
| tests/core/test_llm.py | Added comprehensive test for model filtering based on API key configuration |
| frontend/* | Initialized Next.js 15 application with TypeScript, Tailwind CSS, Shadcn UI components, and basic agent dashboard/chat UI |
| README.md, LLM.md, CHANGELOG.md | Updated documentation to reflect changes |
Comments suppressed due to low confidence (19)
app/admin/api.py:79
- This comment appears to contain commented-out code.
# if not input.owner:
# raise IntentKitAPIError(
# status_code=400, key="BadRequest", message="Owner is required"
app/admin/api.py:87
- This comment appears to contain commented-out code.
# if user_id:
# if input.owner != user_id:
# raise IntentKitAPIError(
# status_code=400,
# key="BadRequest",
# message="Owner does not match user ID",
app/admin/api.py:94
- This comment appears to contain commented-out code.
# if user:
# max_fee += user.nft_count * 10
# if input.fee_percentage and input.fee_percentage > max_fee:
# raise IntentKitAPIError(
# status_code=400, key="BadRequest", message="Fee percentage too high"
app/admin/api.py:129
- This comment appears to contain commented-out code.
# if not input.owner:
# raise IntentKitAPIError(
# status_code=400, key="BadRequest", message="Owner is required"
app/admin/api.py:137
- This comment appears to contain commented-out code.
# if user_id:
# if input.owner != user_id:
# raise IntentKitAPIError(
# status_code=400,
# key="BadRequest",
# message="Owner does not match user ID",
app/admin/api.py:144
- This comment appears to contain commented-out code.
# if user:
# max_fee += user.nft_count * 10
# if input.fee_percentage and input.fee_percentage > max_fee:
# raise IntentKitAPIError(
# status_code=400, key="BadRequest", message="Fee percentage too high"
app/admin/credit.py:124
- This comment appears to contain commented-out code.
# class AdjustmentRequest(BaseModel):
# """Request model for adjusting a user account."""
# upstream_tx_id: Annotated[
# str, Field(str, description="Upstream transaction ID, idempotence Check")
# ]
# user_id: Annotated[str, Field(description="ID of the user to adjust")]
# credit_type: Annotated[CreditType, Field(description="Type of credit to adjust")]
# amount: Annotated[
# Decimal, Field(description="Amount to adjust (positive or negative)")
# ]
# note: Annotated[str, Field(description="Required explanation for the adjustment")]
app/admin/api.py:666
- Variable latest_agent is not used.
latest_agent, agent_data = await deploy_agent(agent_id, agent, subject)
app/admin/api.py:666
- Variable agent_data is not used.
latest_agent, agent_data = await deploy_agent(agent_id, agent, subject)
intentkit/core/engine.py:559
- Variable last is not used.
intentkit/core/engine.py:807 - Variable last is not used.
app/services/tg/bot/kind/ai_relayer/router.py:224 - Variable is_owner is not used.
is_owner = False
app/services/tg/bot/kind/ai_relayer/router.py:349
- Variable is_owner is not used.
is_owner = False
intentkit/clients/twitter.py:150
- Variable agent_data is not used.
intentkit/models/agent.py:739 - This import of module re is redundant, as it was previously imported on line 6.
scripts/fix_invalid_wallets.py:102 - 'except' clause does nothing but pass and there is no explanatory comment.
intentkit/skills/moralis/fetch_nft_portfolio.py:209 - Unnecessary 'pass' statement.
intentkit/skills/moralis/fetch_nft_portfolio.py:274 - Unnecessary 'pass' statement.
intentkit/clients/twitter.py:387 - File is opened but is not closed.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| deepseek-chat,Deepseek V3.2,deepseek,TRUE,0.28,0.42,2,128000,4096,4,3,FALSE,TRUE,TRUE,FALSE,FALSE,TRUE,TRUE,TRUE,https://api.deepseek.com,300 | ||
| deepseek-reasoner,DeepSeek V3.2 Thinking,deepseek,TRUE,0.28,0.42,2,128000,32000,5,1,FALSE,TRUE,TRUE,TRUE,FALSE,TRUE,TRUE,TRUE,https://api.deepseek.com,300 |
Copilot
AI
Dec 12, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Model name inconsistency: the CSV shows "Deepseek V3.2" and "DeepSeek V3.2 Thinking" with different capitalizations. The product should use consistent casing for the "DeepSeek" brand name throughout.
| temperature=agent.temperature if agent.temperature is not None else 0.7, | ||
| frequency_penalty=( | ||
| agent.frequency_penalty if agent.frequency_penalty is not None else 0.0 | ||
| ), | ||
| presence_penalty=( | ||
| agent.presence_penalty if agent.presence_penalty is not None else 0.0 | ||
| ), |
Copilot
AI
Dec 12, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The default values for temperature, frequency_penalty, and presence_penalty are applied when the agent properties are None. However, if these fields are defined as optional in the Agent model but have default values, this explicit None checking may be redundant. Additionally, the hardcoded defaults (0.7, 0.0, 0.0) might differ from the model's schema defaults. Consider defining these defaults in one central location to avoid inconsistency.
| "metadata_router", | ||
| "user_router", | ||
| "user_router_readonly", | ||
| "agent_generator_router", |
Copilot
AI
Dec 12, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The name 'agent_generator_router' is exported by all but is not defined.
| "agent_generator_router", |
Changes
This PR includes model updates, new provider integrations, and frontend initialization work.