• Md Rakibul Islam Rocky's avatar
    Add Google Vertex AI provider (#1163) · 4db6d63b
    Md Rakibul Islam Rocky 提交于
    # Summary
    
    * Adds first-class **Google Vertex AI provider** using
    `@ai-sdk/google-vertex`.
    * Supports **Gemini 2.5** models and partner **MaaS (Model Garden)**
    models via full publisher IDs.
    * New **Vertex-specific settings UI** for Project, Location, and Service
    Account JSON.
    * Implements a **“thinking” toggle** for Gemini 2.5 Flash
    
      * Pro: always on
      * Flash: toggleable
      * Flash Lite: none
    * Fixes *“AI not found”* for Vertex built-ins by mapping to
    `publishers/google` paths.
    * Hardens **cross-platform file ops** and ensures all tests pass.
    
    ---
    
    # What’s New
    
    ### Vertex AI Provider
    
    * Uses `@ai-sdk/google-vertex` with `googleAuthOptions.credentials` from
    pasted Service Account JSON.
    * Configurable **project** and **location**.
    * Base URL → `/projects/{project}/locations/{location}`
    
      * Built-ins: `publishers/google/models/<id>`
      * Partner MaaS: `publishers/<partner>/models/...`
    
    ### Built-in Vertex Models
    
    * `gemini-2.5-pro`
    * `gemini-2.5-flash`
    * `gemini-2.5-flash-lite`
    
    ### Thinking Behavior
    
    * Vertex + Google marked as thinking-capable.
    * Pro: always thinking
    * Flash: toggle in UI
    * Flash Lite: none
    
    ### Vertex Settings UI
    
    * New **Google Vertex AI panel** for Project ID, Location, Service
    Account JSON.
    * Keys encrypted like other secrets.
    
    ---
    
    # Fixes
    
    * **Model resolution:** built-ins auto-map to
    `publishers/google/models/<id>`.
    * **Partner MaaS support:** full publisher IDs work directly (e.g.
    DeepSeek).
    * **Cross-platform paths:** normalize file ops with `toPosixPath`,
    preserve `safeJoin` semantics.
    
    ---
    
    # Why This Is Better
    
    * Users can select **Vertex alongside other providers**.
    * **More models** available through Model Garden.
    * **Dedicated setup UI** reduces misconfig.
    * **Thinking toggle** gives control over cost vs. reasoning depth.
    
    ---
    
    # Files Changed
    
    * **Provider & Models**: `language_model_helpers.ts`,
    `get_model_client.ts`
    * **Streaming**: `chat_stream_handlers.ts`
    * **Schemas & Encryption**: `schemas.ts`, `settings.ts`
    * **Settings UI**: `VertexConfiguration.tsx`, `ApiKeyConfiguration.tsx`
    * **Models UI**: `ModelsSection.tsx` (Flash toggle)
    * **Setup Detection**: `useLanguageModelProviders.ts`
    * **Path Utils**: `path_utils.ts`, `response_processor.ts`
    * **Deps**: `package.json` → `@ai-sdk/google-vertex@3.0.16`
    
    ---
    
    # Tests & Validation
    
    * **TypeScript**: `npm run ts` → 
    * **Lint**: `npm run lint` → 
    * **Unit tests**: `npm test` →  231 passed, 0 failed
    
    ---
    
    # Migration / Notes
    
    * No breaking changes.
    * For Vertex usage:
    
      * Ensure Vertex AI API is enabled.
      * Service Account needs `roles/aiplatform.user`.
      * Region must support model (e.g. `us-central1`).
    * Thinking toggle currently affects **only** Gemini 2.5 Flash.
    
    ---
    
    # Manual QA
    
    1. Configure Vertex with Project/Location/Service Account JSON.
    2. Test built-ins:
    
       * `gemini-2.5-pro`
       * `gemini-2.5-flash` (toggle on/off)
       * `gemini-2.5-flash-lite`
    3. Test MaaS partner model (e.g., DeepSeek) via full publisher ID.
    4. Verify other providers remain unaffected.
        
    <!-- This is an auto-generated description by cubic. -->
    ---
    
    ## Summary by cubic
    Adds a first-class Google Vertex AI provider with Gemini 2.5 models, a
    Vertex settings panel, and a “thinking” toggle for Gemini 2.5 Flash.
    Also fixes model resolution for Vertex and hardens cross-platform file
    operations.
    
    - **New Features**
    - Vertex AI provider via @ai-sdk/google-vertex with project, location,
    and service account JSON.
    - Built-in models: gemini-2.5-pro, gemini-2.5-flash,
    gemini-2.5-flash-lite.
    - “Thinking” support: Pro always on; Flash toggle in Models UI; Flash
    Lite none.
    - MaaS partners supported via full publisher paths (e.g.,
    publishers/<partner>/models/...).
      - Vertex settings UI with encrypted service account key storage.
    
    - **Bug Fixes**
      - Built-in Vertex models auto-map to publishers/google/models/<id>.
      - Consistent file ops across platforms using toPosixPath.
    - Vertex readiness detection requires project/location/service account
    JSON.
    - Streaming “thinking” behavior respects Vertex Flash toggle and Pro
    always-on.
    
    <!-- End of auto-generated description by cubic. -->
    
    ---------
    Co-authored-by: 's avatarMd Rakibul Islam Rocky <mdrirocky08@gmail.com>
    Co-authored-by: 's avatargraphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
    Co-authored-by: 's avatarWill Chen <willchen90@gmail.com>
    4db6d63b
名称
最后提交
最后更新
.cursor/rules 正在载入提交数据...
.devcontainer 正在载入提交数据...
.github 正在载入提交数据...
.husky 正在载入提交数据...
assets 正在载入提交数据...
docs 正在载入提交数据...
drizzle 正在载入提交数据...
e2e-tests 正在载入提交数据...
packages/@dyad-sh 正在载入提交数据...
scaffold 正在载入提交数据...
scripts 正在载入提交数据...
shared 正在载入提交数据...
src 正在载入提交数据...
testing/fake-llm-server 正在载入提交数据...
tools 正在载入提交数据...
worker 正在载入提交数据...
workers/tsc 正在载入提交数据...
.cursorignore 正在载入提交数据...
.env.example 正在载入提交数据...
.eslintrc.json 正在载入提交数据...
.gitattributes 正在载入提交数据...
.gitignore 正在载入提交数据...
.oxlintrc.json 正在载入提交数据...
.prettierignore 正在载入提交数据...
.prettierrc 正在载入提交数据...
CONTRIBUTING.md 正在载入提交数据...
LICENSE 正在载入提交数据...
README.md 正在载入提交数据...
SECURITY.md 正在载入提交数据...
biome.json 正在载入提交数据...
components.json 正在载入提交数据...
drizzle.config.ts 正在载入提交数据...
forge.config.ts 正在载入提交数据...
forge.env.d.ts 正在载入提交数据...
index.html 正在载入提交数据...
merge.config.ts 正在载入提交数据...
package-lock.json 正在载入提交数据...
package.json 正在载入提交数据...
playwright.config.ts 正在载入提交数据...
tsconfig.app.json 正在载入提交数据...
tsconfig.json 正在载入提交数据...
tsconfig.node.json 正在载入提交数据...
vite.main.config.mts 正在载入提交数据...
vite.preload.config.mts 正在载入提交数据...
vite.renderer.config.mts 正在载入提交数据...
vite.worker.config.mts 正在载入提交数据...
vitest.config.ts 正在载入提交数据...