Merge branch 'main' into fix/support-umlauts-and-unicode

This commit is contained in:
Mario Rodler 2025-11-16 21:08:31 +01:00
commit 4a83da00c4
11 changed files with 44 additions and 25 deletions

14
package-lock.json generated
View file

@ -3193,7 +3193,7 @@
},
"packages/agent": {
"name": "@mariozechner/pi-agent",
"version": "0.7.10",
"version": "0.7.11",
"license": "MIT",
"dependencies": {
"@mariozechner/pi-ai": "^0.7.10",
@ -3223,7 +3223,7 @@
},
"packages/ai": {
"name": "@mariozechner/pi-ai",
"version": "0.7.10",
"version": "0.7.11",
"license": "MIT",
"dependencies": {
"@anthropic-ai/sdk": "^0.61.0",
@ -3270,7 +3270,7 @@
},
"packages/coding-agent": {
"name": "@mariozechner/pi-coding-agent",
"version": "0.7.10",
"version": "0.7.11",
"license": "MIT",
"dependencies": {
"@mariozechner/pi-agent": "^0.7.10",
@ -3317,7 +3317,7 @@
},
"packages/pods": {
"name": "@mariozechner/pi",
"version": "0.7.10",
"version": "0.7.11",
"license": "MIT",
"dependencies": {
"@mariozechner/pi-agent": "^0.7.10",
@ -3343,7 +3343,7 @@
},
"packages/proxy": {
"name": "@mariozechner/pi-proxy",
"version": "0.7.10",
"version": "0.7.11",
"dependencies": {
"@hono/node-server": "^1.14.0",
"hono": "^4.6.16"
@ -3359,7 +3359,7 @@
},
"packages/tui": {
"name": "@mariozechner/pi-tui",
"version": "0.7.10",
"version": "0.7.11",
"license": "MIT",
"dependencies": {
"@types/mime-types": "^2.1.4",
@ -3398,7 +3398,7 @@
},
"packages/web-ui": {
"name": "@mariozechner/pi-web-ui",
"version": "0.7.10",
"version": "0.7.11",
"license": "MIT",
"dependencies": {
"@lmstudio/sdk": "^1.5.0",

View file

@ -1,6 +1,6 @@
{
"name": "@mariozechner/pi-agent",
"version": "0.7.10",
"version": "0.7.11",
"description": "General-purpose agent with transport abstraction, state management, and attachment support",
"type": "module",
"main": "./dist/index.js",
@ -18,8 +18,8 @@
"prepublishOnly": "npm run clean && npm run build"
},
"dependencies": {
"@mariozechner/pi-ai": "^0.7.10",
"@mariozechner/pi-tui": "^0.7.10"
"@mariozechner/pi-ai": "^0.7.11",
"@mariozechner/pi-tui": "^0.7.11"
},
"keywords": [
"ai",

View file

@ -1,6 +1,6 @@
{
"name": "@mariozechner/pi-ai",
"version": "0.7.10",
"version": "0.7.11",
"description": "Unified LLM API with automatic model discovery and provider configuration",
"type": "module",
"main": "./dist/index.js",

View file

@ -2,6 +2,12 @@
## [Unreleased]
## [0.7.11] - 2025-11-16
### Changed
- The `/model` selector now filters models based on available API keys. Only models for which API keys are configured in environment variables are shown. This prevents selecting models that would fail due to missing credentials. A yellow hint is displayed at the top of the selector explaining this behavior. ([#19](https://github.com/badlogic/pi-mono/pull/19))
## [0.7.10] - 2025-11-14
### Added

View file

@ -62,6 +62,8 @@ export ZAI_API_KEY=...
If no API key is set, the CLI will prompt you to configure one on first run.
**Note:** The `/model` command only shows models for which API keys are configured in your environment. If you don't see a model you expect, check that you've set the corresponding environment variable.
## Slash Commands
The CLI supports several commands to control its behavior:
@ -70,6 +72,8 @@ The CLI supports several commands to control its behavior:
Switch models mid-session. Opens an interactive selector where you can type to search (by provider or model name), use arrow keys to navigate, Enter to select, or Escape to cancel.
The selector only displays models for which API keys are configured in your environment (see API Keys section).
### /thinking
Adjust thinking/reasoning level for supported models (Claude Sonnet 4, GPT-5, Gemini 2.5). Opens an interactive selector where you can use arrow keys to navigate, Enter to select, or Escape to cancel.

View file

@ -1,6 +1,6 @@
{
"name": "@mariozechner/pi-coding-agent",
"version": "0.7.10",
"version": "0.7.11",
"description": "Coding agent CLI with read, bash, edit, write tools and session management",
"type": "module",
"bin": {
@ -21,8 +21,8 @@
"prepublishOnly": "npm run clean && npm run build"
},
"dependencies": {
"@mariozechner/pi-agent": "^0.7.10",
"@mariozechner/pi-ai": "^0.7.10",
"@mariozechner/pi-agent": "^0.7.11",
"@mariozechner/pi-ai": "^0.7.11",
"chalk": "^5.5.0",
"diff": "^8.0.2",
"glob": "^11.0.3"

View file

@ -1,4 +1,4 @@
import { getModels, getProviders, type Model } from "@mariozechner/pi-ai";
import { getApiKey, getModels, getProviders, type Model } from "@mariozechner/pi-ai";
import { Container, Input, Spacer, Text } from "@mariozechner/pi-tui";
import chalk from "chalk";
@ -35,6 +35,12 @@ export class ModelSelectorComponent extends Container {
this.addChild(new Text(chalk.blue("─".repeat(80)), 0, 0));
this.addChild(new Spacer(1));
// Add hint about API key filtering
this.addChild(
new Text(chalk.yellow("Only showing models with configured API keys (see README for details)"), 0, 0),
);
this.addChild(new Spacer(1));
// Create search input
this.searchInput = new Input();
this.searchInput.onSubmit = () => {
@ -71,8 +77,11 @@ export class ModelSelectorComponent extends Container {
}
}
// Filter out models from providers without API keys
const filteredModels = models.filter((item) => getApiKey(item.provider as any) !== undefined);
// Sort: current model first, then by provider
models.sort((a, b) => {
filteredModels.sort((a, b) => {
const aIsCurrent = this.currentModel?.id === a.model.id;
const bIsCurrent = this.currentModel?.id === b.model.id;
if (aIsCurrent && !bIsCurrent) return -1;
@ -80,8 +89,8 @@ export class ModelSelectorComponent extends Container {
return a.provider.localeCompare(b.provider);
});
this.allModels = models;
this.filteredModels = models;
this.allModels = filteredModels;
this.filteredModels = filteredModels;
}
private filterModels(query: string): void {

View file

@ -1,6 +1,6 @@
{
"name": "@mariozechner/pi",
"version": "0.7.10",
"version": "0.7.11",
"description": "CLI tool for managing vLLM deployments on GPU pods",
"type": "module",
"bin": {
@ -34,7 +34,7 @@
"node": ">=20.0.0"
},
"dependencies": {
"@mariozechner/pi-agent": "^0.7.10",
"@mariozechner/pi-agent": "^0.7.11",
"chalk": "^5.5.0"
},
"devDependencies": {}

View file

@ -1,6 +1,6 @@
{
"name": "@mariozechner/pi-proxy",
"version": "0.7.10",
"version": "0.7.11",
"type": "module",
"description": "CORS and authentication proxy for pi-ai",
"main": "dist/index.js",

View file

@ -1,6 +1,6 @@
{
"name": "@mariozechner/pi-tui",
"version": "0.7.10",
"version": "0.7.11",
"description": "Terminal User Interface library with differential rendering for efficient text-based applications",
"type": "module",
"main": "dist/index.js",

View file

@ -1,6 +1,6 @@
{
"name": "@mariozechner/pi-web-ui",
"version": "0.7.10",
"version": "0.7.11",
"description": "Reusable web UI components for AI chat interfaces powered by @mariozechner/pi-ai",
"type": "module",
"main": "dist/index.js",
@ -18,8 +18,8 @@
},
"dependencies": {
"@lmstudio/sdk": "^1.5.0",
"@mariozechner/pi-ai": "^0.7.10",
"@mariozechner/pi-tui": "^0.7.10",
"@mariozechner/pi-ai": "^0.7.11",
"@mariozechner/pi-tui": "^0.7.11",
"docx-preview": "^0.3.7",
"jszip": "^3.10.1",
"lucide": "^0.544.0",