Skip to content

Conversation

@hyacinthus
Copy link
Collaborator

Changes

  • Add GPT-5.2 model with enhanced capabilities
  • Add Gemini 3 Pro support
  • Add OpenRouter provider integration
  • Add DeepSeek 3.2 model
  • Filter available models based on provider API key presence
  • Initialize frontend application
  • Remove readonly router and service
  • Resolve linting errors and deprecation warnings

This PR includes model updates, new provider integrations, and frontend initialization work.

Copilot AI review requested due to automatic review settings December 12, 2025 03:18
@hyacinthus hyacinthus merged commit e4559ad into main Dec 12, 2025
8 checks passed
@hyacinthus hyacinthus deleted the hyacinthus branch December 12, 2025 03:19
Copy link
Contributor

Copilot AI left a 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_ENTITY to HTTP_422_UNPROCESSABLE_CONTENT
  • Updated type annotations from dict to dict[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.

Comment on lines +22 to +23
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
Copy link

Copilot AI Dec 12, 2025

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.

Copilot uses AI. Check for mistakes.
Comment on lines +123 to +129
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
),
Copy link

Copilot AI Dec 12, 2025

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.

Copilot uses AI. Check for mistakes.
"metadata_router",
"user_router",
"user_router_readonly",
"agent_generator_router",
Copy link

Copilot AI Dec 12, 2025

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.

Suggested change
"agent_generator_router",

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants