From 5c02a5d846a17b9f9db40cf64caa0bc75e7b13c1 Mon Sep 17 00:00:00 2001 From: Aaron Pham Date: Sun, 27 Oct 2024 02:27:10 -0400 Subject: [PATCH] chore(type): update providers and claude hints (#766) --- .github/workflows/ci.yaml | 3 +++ lua/avante/providers/claude.lua | 16 ++++++++++++++++ lua/avante/providers/init.lua | 9 +++------ 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 44a8644..e2da7af 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -32,6 +32,7 @@ jobs: rust-tests: name: Run Rust tests runs-on: ubuntu-latest + if: github.event_name == 'push' || contains(github.event.pull_request.files.*.path, 'crates/') || contains(github.event.pull_request.files.*.path, '.cargo/') steps: - uses: actions/checkout@v4 - uses: Swatinem/rust-cache@v2 @@ -44,6 +45,7 @@ jobs: rust: name: Check Rust style runs-on: ubuntu-latest + if: github.event_name == 'push' || contains(github.event.pull_request.files.*.path, 'crates/') || contains(github.event.pull_request.files.*.path, '.cargo/') steps: - uses: actions/checkout@v4 - uses: Swatinem/rust-cache@v2 @@ -56,6 +58,7 @@ jobs: rustlint: name: Lint Rust runs-on: ubuntu-latest + if: github.event_name == 'push' || contains(github.event.pull_request.files.*.path, 'crates/') || contains(github.event.pull_request.files.*.path, '.cargo/') steps: - uses: actions/checkout@v4 - uses: Swatinem/rust-cache@v2 diff --git a/lua/avante/providers/claude.lua b/lua/avante/providers/claude.lua index aa999c3..7efd891 100644 --- a/lua/avante/providers/claude.lua +++ b/lua/avante/providers/claude.lua @@ -2,6 +2,21 @@ local Utils = require("avante.utils") local Clipboard = require("avante.clipboard") local P = require("avante.providers") +---@class AvanteClaudeBaseMessage +---@field cache_control {type: "ephemeral"}? +--- +---@class AvanteClaudeTextMessage: AvanteClaudeBaseMessage +---@field type "text" +---@field text string +--- +---@class AvanteClaudeImageMessage: AvanteClaudeBaseMessage +---@field type "image" +---@field source {type: "base64", media_type: string, data: string} +--- +---@class AvanteClaudeMessage: AvanteBaseMessage +---@field role "user" +---@field content [AvanteClaudeTextMessage | AvanteClaudeImageMessage][] + ---@class AvanteProviderFunctor local M = {} @@ -9,6 +24,7 @@ M.api_key_name = "ANTHROPIC_API_KEY" M.use_xml_format = true M.parse_message = function(opts) + ---@type AvanteClaudeMessage[] local message_content = {} if Clipboard.support_paste_image() and opts.image_paths then diff --git a/lua/avante/providers/init.lua b/lua/avante/providers/init.lua index 761c667..2debe03 100644 --- a/lua/avante/providers/init.lua +++ b/lua/avante/providers/init.lua @@ -23,10 +23,6 @@ local DressingState = { winid = nil, input_winid = nil, input_bufnr = nil } ---@field role "user" | "system" ---@field content string --- ----@class AvanteClaudeMessage: AvanteBaseMessage ----@field role "user" ----@field content {type: "text", text: string, cache_control?: {type: "ephemeral"}}[] ---- ---@class AvanteGeminiMessage ---@field role "user" ---@field parts { text: string }[] @@ -75,16 +71,17 @@ local DressingState = { winid = nil, input_winid = nil, input_bufnr = nil } ---@field setup fun(): nil ---@field has fun(): boolean ---@field api_key_name string ----@field tokenizer_id string | "gpt-4o" +---@field tokenizer_id [string] | "gpt-4o" ---@field use_xml_format boolean ---@field model? string ---@field parse_api_key fun(): string | nil ---@field parse_stream_data? AvanteStreamParser ----@field on_error? fun(result: table): nil +---@field on_error? fun(result: table): nil --- ---@class avante.Providers ---@field openai AvanteProviderFunctor ---@field claude AvanteProviderFunctor +---@field copilot AvanteProviderFunctor ---@field azure AvanteProviderFunctor ---@field gemini AvanteProviderFunctor ---@field cohere AvanteProviderFunctor