Skip to content

Commit b3feae9

Browse files
indykishKishore Kumar
andauthored
Release v4.1.0 - Mistral AI Provider Support (#5)
* chore: add Mistral provider and MISTRAL_API_KEY support * chore(release): bump version to 4.1.0 - Add Mistral AI provider support - Update version badge to 4.1.0 in README.md - Create CHANGELOG.md with v4.1.0 release notes - Sync from ai-jumpstart v4.1.0 --------- Co-authored-by: Kishore Kumar <kishore.kumar@e2enetworks.com>
1 parent 68f6adb commit b3feae9

File tree

9 files changed

+188
-218
lines changed

9 files changed

+188
-218
lines changed

.config/opencode/opencode.json

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,22 @@
197197
"name": "Kimi K2.5"
198198
}
199199
}
200+
},
201+
"mistral": {
202+
"name": "Mistral AI",
203+
"npm": "@ai-sdk/openai-compatible",
204+
"options": {
205+
"apiKey": "{env:MISTRAL_API_KEY}",
206+
"baseURL": "https://api.mistral.ai/v1"
207+
},
208+
"models": {
209+
"mistral-large-latest": {
210+
"name": "Mistral Large"
211+
},
212+
"codestral-latest": {
213+
"name": "Codestral"
214+
}
215+
}
200216
}
201217
}
202218
}

.pi/agent/models.json

Lines changed: 11 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,18 @@
11
{
22
"providers": {
3-
"ollama": {
4-
"baseUrl": "http://localhost:11434/v1",
3+
"mistral": {
4+
"baseUrl": "https://api.mistral.ai/v1",
55
"api": "openai-completions",
6-
"apiKey": "${OLLAMA_CLOUD_API_KEY}",
6+
"apiKey": "MISTRAL_API_KEY",
77
"models": [
8-
{ "id": "deepseek-v3.2:cloud", "name": "DeepSeek V3.2 (Cloud)" },
9-
{ "id": "qwen3-coder-next:cloud", "name": "Qwen3 Coder Next (Cloud)" }
10-
]
11-
},
12-
"modal": {
13-
"baseUrl": "https://api.us-east-1.modal.direct/v1",
14-
"api": "openai-completions",
15-
"apiKey": "${MODAL_API_KEY}",
16-
"models": [
17-
{ "id": "zai-org/GLM-5-FP8", "name": "GLM-5 FP8" }
18-
]
19-
},
20-
"moonshot": {
21-
"baseUrl": "https://api.moonshot.ai/v1",
22-
"api": "openai-completions",
23-
"apiKey": "${MOONSHOT_API_KEY}",
24-
"models": [
25-
{ "id": "kimi-k2.5", "name": "Kimi K2.5" }
8+
{
9+
"id": "mistral-large-latest",
10+
"name": "Mistral Large"
11+
},
12+
{
13+
"id": "codestral-latest",
14+
"name": "Codestral"
15+
}
2616
]
2717
}
2818
}

.zshrc

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ elif command -v pass-cli >/dev/null 2>&1; then
6868
GITLAB_PERSONAL_ACCESS_TOKEN
6969
MODAL_API_KEY
7070
MOONSHOT_API_KEY
71+
MISTRAL_API_KEY
7172
OPENAI_API_KEY
7273
ZAI_API_KEY
7374
MINIMAX_API_KEY
@@ -122,6 +123,9 @@ test -e "${HOME}/.iterm2_shell_integration.zsh" && source "${HOME}/.iterm2_shell
122123
# opencode
123124
export PATH="${HOME}/.opencode/bin:/usr/local/bin:${HOME}/bin:$PATH"
124125

126+
# Fix TERM for SSH connections to servers without ghostty terminfo
127+
alias ssh='TERM=xterm-256color ssh'
128+
125129
# bun completions
126130
[ -s "${HOME}/.bun/_bun" ] && source "${HOME}/.bun/_bun"
127131

@@ -134,3 +138,9 @@ upgrade-ai() {
134138
kilo upgrade
135139
npm install -g @openai/codex @mariozechner/pi-coding-agent @indykish/oracle
136140
}
141+
142+
# freetype/reportlab build flags (macOS)
143+
export CFLAGS="-I/opt/homebrew/include/freetype2"
144+
export CPPFLAGS="-I/opt/homebrew/include/freetype2"
145+
export LDFLAGS="-L/opt/homebrew/lib"
146+
export PKG_CONFIG_PATH="/opt/homebrew/lib/pkgconfig"

.zshrc.backup.20260223_215215

Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
1+
# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc.
2+
# Initialization code that may require console input (password prompts, [y/n]
3+
# confirmations, etc.) must go above this block; everything else may go below.
4+
if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
5+
source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
6+
fi
7+
8+
# Which plugins would you like to load?
9+
# Standard plugins can be found in $ZSH/plugins/
10+
# Custom plugins may be added to $ZSH_CUSTOM/plugins/
11+
# Example format: plugins=(rails git textmate ruby lighthouse)
12+
# Add wisely, as too many plugins slow down shell startup.
13+
plugins=(git)
14+
15+
# User configuration
16+
# export MANPATH="/usr/local/man:$MANPATH"
17+
# You may need to manually set your language environment
18+
# export LANG=en_US.UTF-8
19+
20+
# Preferred editor for local and remote sessions
21+
# if [[ -n $SSH_CONNECTION ]]; then
22+
# export EDITOR='vim'
23+
# else
24+
# export EDITOR='nvim'
25+
# fi
26+
export EDITOR=vim
27+
export VISUAL=vim
28+
# Compilation flags
29+
# export ARCHFLAGS="-arch $(uname -m)"
30+
alias claude-e2e="CLAUDE_CONFIG_DIR=~/.claude-e2e claude"
31+
32+
# Keep BSD ls colorized on macOS terminals (Ghostty/Starship only render these colors).
33+
export CLICOLOR=1
34+
alias ls='ls -G'
35+
36+
export PATH=$PATH:~/.local/bin
37+
export MYSQLCLIENT_CFLAGS=$(mysql_config --cflags)
38+
export MYSQLCLIENT_LDFLAGS=$(mysql_config --libs)
39+
export GOPATH="${HOME}/code/go"
40+
41+
export GPG_KEY_ID=72980C0F4BF701C8
42+
43+
E2E_AGENT_PROFILES_DIR="${HOME}/.config/clawable"
44+
E2E_AGENT_ENV_FILE="${E2E_AGENT_PROFILES_DIR}/.env_mac"
45+
46+
if [[ -f "${E2E_AGENT_ENV_FILE}" ]]; then
47+
set -a
48+
source "${E2E_AGENT_ENV_FILE}"
49+
set +a
50+
echo "\033[32m✔\033[0m Found ${E2E_AGENT_ENV_FILE}"
51+
elif command -v pass-cli >/dev/null 2>&1; then
52+
_pass_field() {
53+
pass-cli item view --vault-name AGENTS_BUFFET --item-title "$1" --field "$2" 2>/dev/null
54+
}
55+
_emit() { echo "export $1=\"$2\"" >> "${E2E_AGENT_ENV_FILE}"; export "$1=$2"; }
56+
57+
mkdir -p "${E2E_AGENT_PROFILES_DIR}"
58+
: > "${E2E_AGENT_ENV_FILE}"
59+
chmod 600 "${E2E_AGENT_ENV_FILE}"
60+
61+
_ok() { echo "\033[32m✔\033[0m $1"; }
62+
_warn() { echo "\033[33m⚠\033[0m $1"; }
63+
64+
# Simple keys: vault title = env var, password field = value
65+
_simple_keys=(
66+
OLLAMA_CLOUD_API_KEY
67+
GITHUB_PERSONAL_ACCESS_TOKEN
68+
GITLAB_PERSONAL_ACCESS_TOKEN
69+
MODAL_API_KEY
70+
MOONSHOT_API_KEY
71+
OPENAI_API_KEY
72+
ZAI_API_KEY
73+
MINIMAX_API_KEY
74+
OPENROUTER_API_KEY
75+
NPM_TOKEN
76+
)
77+
for _k in "${_simple_keys[@]}"; do
78+
_v="$(_pass_field "$_k" password)"
79+
if [[ -n "$_v" ]]; then
80+
_emit "$_k" "$_v"
81+
_ok "Pulled ${_k}"
82+
else
83+
_warn "Skipped ${_k} (not found)"
84+
fi
85+
done
86+
87+
# Docker registries: pull credentials and login
88+
_docker_registries=(INFRA MARKETPLACE MYACCOUNT)
89+
for _name in "${_docker_registries[@]}"; do
90+
_url="$(_pass_field "DOCKER_REGISTRY_${_name}" url)"
91+
_u="$(_pass_field "DOCKER_REGISTRY_${_name}" username)"
92+
_p="$(_pass_field "DOCKER_REGISTRY_${_name}" password)"
93+
if [[ -n "$_u" && -n "$_p" ]]; then
94+
_emit "DOCKER_USER_${_name}" "$_u"
95+
_emit "DOCKER_PASSWORD_${_name}" "$_p"
96+
_ok "Pulled DOCKER_REGISTRY_${_name}"
97+
if command -v docker >/dev/null 2>&1 && [[ -n "$_url" ]]; then
98+
if ! echo "$_p" | docker login "$_url" -u "$_u" --password-stdin 2>&1 | grep -q "Login Succeeded"; then
99+
_warn "Docker login failed: $_url (check credentials and registry availability)"
100+
else
101+
_ok "Docker login: $_url"
102+
fi
103+
fi
104+
elif [[ -n "$_u" || -n "$_p" ]]; then
105+
_warn "Partial credentials for DOCKER_REGISTRY_${_name}"
106+
else
107+
_warn "Skipped DOCKER_REGISTRY_${_name}"
108+
fi
109+
done
110+
111+
unset _k _v _u _p _url _name _simple_keys _docker_registries
112+
unset -f _pass_field _emit _ok _warn
113+
fi
114+
eval "$("${HOME}/.local/bin/mise" activate zsh)"
115+
116+
export PATH="/opt/homebrew/opt/libxml2/bin:${HOME}/.local/share/mise/shims:${HOME}/.bun/bin:$PATH"
117+
118+
eval "$(starship init zsh)"
119+
120+
test -e "${HOME}/.iterm2_shell_integration.zsh" && source "${HOME}/.iterm2_shell_integration.zsh"
121+
122+
# opencode
123+
export PATH="${HOME}/.opencode/bin:/usr/local/bin:${HOME}/bin:$PATH"
124+
125+
# bun completions
126+
[ -s "${HOME}/.bun/_bun" ] && source "${HOME}/.bun/_bun"
127+
128+
export PATH="/opt/homebrew/opt/trash/bin:$PATH"
129+
130+
# Upgrade all AI coding tools in one shot
131+
upgrade-ai() {
132+
claude upgrade
133+
opencode upgrade
134+
kilo upgrade
135+
npm install -g @openai/codex @mariozechner/pi-coding-agent @indykish/oracle
136+
}

AGENTS.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,8 @@ Execution pattern:
8888
- If builds fail with local Docker disk exhaustion (`ENOSPC` or "no space left on device"), run `~/bin/mac-cleanup.sh`, then verify with `docker system df`, and retry the build.
8989
- Keep edits small and reviewable; split large files before they become hard to review.
9090
- Use Conventional Commits when committing is requested.
91+
- For date-time entries in docs/notes, use format `Feb 02, 2026: 10:30 AM`.
92+
- Sync is mandatory, not user-prompted: after any change under `~/Projects/ai-jumpstart/*` (except `README.md`), sync mapped files to `~/Projects/dotfiles` in the same turn and explicitly report `sync completed + verified`.
9193
- For Oracle CLI assistance, run once per session:
9294

9395
```bash

0 commit comments

Comments
 (0)