mirror of
https://github.com/getcompanion-ai/co-mono.git
synced 2026-04-18 20:03:33 +00:00
feat(ai): Rename package to @mariozechner/pi-ai and improve documentation
- Changed package name from @mariozechner/ai to @mariozechner/pi-ai - Fixed generate-models.ts to fetch from models.dev API instead of local file - Completely rewrote README with practical examples: - Image input with base64 encoding - Proper tool calling with context management - Streaming with completion indicators - Abort signal usage - Provider-specific options (reasoning/thinking) - Custom model definitions for local/self-hosted LLMs - Environment variables explanation - Bumped version to 0.5.9 and published
This commit is contained in:
parent
796e48b80e
commit
d46a98ec10
13 changed files with 388 additions and 210 deletions
8
package-lock.json
generated
8
package-lock.json
generated
|
|
@ -2716,7 +2716,7 @@
|
||||||
},
|
},
|
||||||
"packages/agent": {
|
"packages/agent": {
|
||||||
"name": "@mariozechner/pi-agent",
|
"name": "@mariozechner/pi-agent",
|
||||||
"version": "0.5.8",
|
"version": "0.5.9",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@mariozechner/pi-tui": "^0.5.8",
|
"@mariozechner/pi-tui": "^0.5.8",
|
||||||
|
|
@ -3098,7 +3098,7 @@
|
||||||
},
|
},
|
||||||
"packages/ai": {
|
"packages/ai": {
|
||||||
"name": "@mariozechner/ai",
|
"name": "@mariozechner/ai",
|
||||||
"version": "0.5.8",
|
"version": "0.5.9",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@anthropic-ai/sdk": "^0.60.0",
|
"@anthropic-ai/sdk": "^0.60.0",
|
||||||
|
|
@ -3134,7 +3134,7 @@
|
||||||
},
|
},
|
||||||
"packages/pods": {
|
"packages/pods": {
|
||||||
"name": "@mariozechner/pi",
|
"name": "@mariozechner/pi",
|
||||||
"version": "0.5.8",
|
"version": "0.5.9",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@mariozechner/pi-agent": "^0.5.8",
|
"@mariozechner/pi-agent": "^0.5.8",
|
||||||
|
|
@ -3150,7 +3150,7 @@
|
||||||
},
|
},
|
||||||
"packages/tui": {
|
"packages/tui": {
|
||||||
"name": "@mariozechner/pi-tui",
|
"name": "@mariozechner/pi-tui",
|
||||||
"version": "0.5.8",
|
"version": "0.5.9",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/mime-types": "^2.1.4",
|
"@types/mime-types": "^2.1.4",
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@
|
||||||
],
|
],
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"clean": "npm run clean --workspaces",
|
"clean": "npm run clean --workspaces",
|
||||||
"build": "npm run build -w @mariozechner/pi-tui && npm run build -w @mariozechner/ai && npm run build -w @mariozechner/pi-agent && npm run build -w @mariozechner/pi",
|
"build": "npm run build -w @mariozechner/pi-tui && npm run build -w @mariozechner/pi-ai && npm run build -w @mariozechner/pi-agent && npm run build -w @mariozechner/pi",
|
||||||
"check": "biome check --write . && npm run check --workspaces && tsc --noEmit",
|
"check": "biome check --write . && npm run check --workspaces && tsc --noEmit",
|
||||||
"test": "npm run test --workspaces --if-present",
|
"test": "npm run test --workspaces --if-present",
|
||||||
"version:patch": "npm version patch -ws --no-git-tag-version && node scripts/sync-versions.js",
|
"version:patch": "npm version patch -ws --no-git-tag-version && node scripts/sync-versions.js",
|
||||||
|
|
|
||||||
4
packages/agent/package-lock.json
generated
4
packages/agent/package-lock.json
generated
|
|
@ -1,12 +1,12 @@
|
||||||
{
|
{
|
||||||
"name": "@mariozechner/pi-agent",
|
"name": "@mariozechner/pi-agent",
|
||||||
"version": "0.5.8",
|
"version": "0.5.9",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "@mariozechner/pi-agent",
|
"name": "@mariozechner/pi-agent",
|
||||||
"version": "0.5.8",
|
"version": "0.5.9",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@mariozechner/tui": "^0.1.1",
|
"@mariozechner/tui": "^0.1.1",
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "@mariozechner/pi-agent",
|
"name": "@mariozechner/pi-agent",
|
||||||
"version": "0.5.8",
|
"version": "0.5.9",
|
||||||
"description": "General-purpose agent with tool calling and session persistence",
|
"description": "General-purpose agent with tool calling and session persistence",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"bin": {
|
"bin": {
|
||||||
|
|
@ -18,7 +18,7 @@
|
||||||
"prepublishOnly": "npm run clean && npm run build"
|
"prepublishOnly": "npm run clean && npm run build"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@mariozechner/pi-tui": "^0.5.8",
|
"@mariozechner/pi-tui": "^0.5.9",
|
||||||
"@types/glob": "^8.1.0",
|
"@types/glob": "^8.1.0",
|
||||||
"chalk": "^5.5.0",
|
"chalk": "^5.5.0",
|
||||||
"glob": "^11.0.3",
|
"glob": "^11.0.3",
|
||||||
|
|
|
||||||
|
|
@ -1,69 +1,230 @@
|
||||||
# @mariozechner/ai
|
# @mariozechner/pi-ai
|
||||||
|
|
||||||
Unified API for OpenAI, Anthropic, and Google Gemini LLM providers with streaming, tool calling, and thinking support.
|
Unified LLM API with automatic model discovery, provider configuration, token and cost tracking, and simple context persistence and hand-off to other models mid-session.
|
||||||
|
|
||||||
|
## Supported Providers
|
||||||
|
|
||||||
|
- **OpenAI**
|
||||||
|
- **Anthropic**
|
||||||
|
- **Google**
|
||||||
|
- **Groq**
|
||||||
|
- **Cerebras**
|
||||||
|
- **xAI**
|
||||||
|
- **OpenRouter**
|
||||||
|
- **Any OpenAI-compatible API**: Ollama, vLLM, LM Studio, etc.
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
npm install @mariozechner/ai
|
npm install @mariozechner/pi-ai
|
||||||
```
|
```
|
||||||
|
|
||||||
## Quick Start
|
## Quick Start
|
||||||
|
|
||||||
```typescript
|
```typescript
|
||||||
import { AnthropicLLM } from '@mariozechner/ai/providers/anthropic';
|
import { createLLM } from '@mariozechner/pi-ai';
|
||||||
import { OpenAICompletionsLLM } from '@mariozechner/ai/providers/openai-completions';
|
|
||||||
import { GoogleLLM } from '@mariozechner/ai/providers/gemini';
|
|
||||||
|
|
||||||
// Pick your provider - same API for all
|
const llm = createLLM('openai', 'gpt-4o-mini');
|
||||||
const llm = new AnthropicLLM('claude-sonnet-4-0');
|
|
||||||
// const llm = new OpenAICompletionsLLM('gpt-5-mini');
|
|
||||||
// const llm = new GoogleLLM('gemini-2.5-flash');
|
|
||||||
|
|
||||||
// Basic completion
|
|
||||||
const response = await llm.complete({
|
const response = await llm.complete({
|
||||||
messages: [{ role: 'user', content: 'Hello!' }]
|
messages: [{ role: 'user', content: 'Hello!' }]
|
||||||
});
|
});
|
||||||
|
|
||||||
console.log(response.content);
|
console.log(response.content);
|
||||||
|
```
|
||||||
|
|
||||||
// Streaming with thinking
|
## Image Input
|
||||||
const streamResponse = await llm.complete({
|
|
||||||
messages: [{ role: 'user', content: 'Explain quantum computing' }]
|
```typescript
|
||||||
}, {
|
import { readFileSync } from 'fs';
|
||||||
onText: (chunk) => process.stdout.write(chunk),
|
|
||||||
onThinking: (chunk) => process.stderr.write(chunk),
|
const imageBuffer = readFileSync('image.png');
|
||||||
// Provider specific config
|
const base64Image = imageBuffer.toString('base64');
|
||||||
thinking: { enabled: true }
|
|
||||||
|
const response = await llm.complete({
|
||||||
|
messages: [{
|
||||||
|
role: 'user',
|
||||||
|
content: [
|
||||||
|
{ type: 'text', text: 'What is in this image?' },
|
||||||
|
{ type: 'image', data: base64Image, mimeType: 'image/png' }
|
||||||
|
]
|
||||||
|
}]
|
||||||
});
|
});
|
||||||
|
```
|
||||||
|
|
||||||
// Tool calling
|
## Tool Calling
|
||||||
|
|
||||||
|
```typescript
|
||||||
const tools = [{
|
const tools = [{
|
||||||
name: 'calculator',
|
name: 'get_weather',
|
||||||
description: 'Perform calculations',
|
description: 'Get current weather for a location',
|
||||||
parameters: {
|
parameters: {
|
||||||
type: 'object',
|
type: 'object',
|
||||||
properties: {
|
properties: {
|
||||||
expression: { type: 'string' }
|
location: { type: 'string' }
|
||||||
},
|
},
|
||||||
required: ['expression']
|
required: ['location']
|
||||||
}
|
}
|
||||||
}];
|
}];
|
||||||
|
|
||||||
const toolResponse = await llm.complete({
|
const messages = [];
|
||||||
messages: [{ role: 'user', content: 'What is 15 * 27?' }],
|
messages.push({ role: 'user', content: 'What is the weather in Paris?' });
|
||||||
tools
|
|
||||||
});
|
|
||||||
|
|
||||||
if (toolResponse.toolCalls) {
|
const response = await llm.complete({ messages, tools });
|
||||||
for (const call of toolResponse.toolCalls) {
|
messages.push(response);
|
||||||
console.log(`Tool: ${call.name}, Args:`, call.arguments);
|
|
||||||
|
if (response.toolCalls) {
|
||||||
|
for (const call of response.toolCalls) {
|
||||||
|
// Call your actual function
|
||||||
|
const result = await getWeather(call.arguments.location);
|
||||||
|
|
||||||
|
// Add tool result to context
|
||||||
|
messages.push({
|
||||||
|
role: 'toolResult',
|
||||||
|
content: JSON.stringify(result),
|
||||||
|
toolCallId: call.id,
|
||||||
|
isError: false
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Continue conversation with tool results
|
||||||
|
const followUp = await llm.complete({ messages, tools });
|
||||||
|
messages.push(followUp);
|
||||||
|
console.log(followUp.content);
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Streaming
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
const response = await llm.complete({
|
||||||
|
messages: [{ role: 'user', content: 'Write a story' }]
|
||||||
|
}, {
|
||||||
|
onText: (chunk, complete) => {
|
||||||
|
process.stdout.write(chunk);
|
||||||
|
if (complete) console.log('\n[Text streaming complete]');
|
||||||
|
},
|
||||||
|
onThinking: (chunk, complete) => {
|
||||||
|
process.stderr.write(chunk);
|
||||||
|
if (complete) console.error('\n[Thinking complete]');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
## Abort Signal
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
const controller = new AbortController();
|
||||||
|
|
||||||
|
// Abort after 5 seconds
|
||||||
|
setTimeout(() => controller.abort(), 5000);
|
||||||
|
|
||||||
|
try {
|
||||||
|
const response = await llm.complete({
|
||||||
|
messages: [{ role: 'user', content: 'Write a long story' }]
|
||||||
|
}, {
|
||||||
|
signal: controller.signal,
|
||||||
|
onText: (chunk) => process.stdout.write(chunk)
|
||||||
|
});
|
||||||
|
} catch (error) {
|
||||||
|
if (error.name === 'AbortError') {
|
||||||
|
console.log('Request was aborted');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
## Development
|
## Provider-Specific Options
|
||||||
|
|
||||||
This package is part of the pi monorepo. See the main README for development instructions.
|
### OpenAI Reasoning (o1, o3)
|
||||||
|
```typescript
|
||||||
|
const llm = createLLM('openai', 'o1-mini');
|
||||||
|
|
||||||
|
await llm.complete(context, {
|
||||||
|
reasoningEffort: 'medium' // 'minimal' | 'low' | 'medium' | 'high'
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
### Anthropic Thinking
|
||||||
|
```typescript
|
||||||
|
const llm = createLLM('anthropic', 'claude-3-7-sonnet-latest');
|
||||||
|
|
||||||
|
await llm.complete(context, {
|
||||||
|
thinking: {
|
||||||
|
enabled: true,
|
||||||
|
budgetTokens: 2048 // Optional thinking token limit
|
||||||
|
}
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
### Google Gemini Thinking
|
||||||
|
```typescript
|
||||||
|
const llm = createLLM('google', 'gemini-2.0-flash-thinking-exp');
|
||||||
|
|
||||||
|
await llm.complete(context, {
|
||||||
|
thinking: { enabled: true }
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
## Custom Models
|
||||||
|
|
||||||
|
### Local Models (Ollama, vLLM, etc.)
|
||||||
|
```typescript
|
||||||
|
import { OpenAICompletionsLLM } from '@mariozechner/pi-ai';
|
||||||
|
|
||||||
|
const model = {
|
||||||
|
id: 'llama3.1:8b',
|
||||||
|
provider: 'ollama',
|
||||||
|
baseUrl: 'http://localhost:11434/v1',
|
||||||
|
reasoning: false,
|
||||||
|
input: ['text'],
|
||||||
|
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
|
||||||
|
contextWindow: 8192,
|
||||||
|
maxTokens: 4096,
|
||||||
|
name: 'Llama 3.1 8B'
|
||||||
|
};
|
||||||
|
|
||||||
|
const llm = new OpenAICompletionsLLM(model, 'dummy-key');
|
||||||
|
```
|
||||||
|
|
||||||
|
### Custom OpenAI-Compatible Endpoints
|
||||||
|
```typescript
|
||||||
|
const model = {
|
||||||
|
id: 'custom-model',
|
||||||
|
provider: 'custom',
|
||||||
|
baseUrl: 'https://your-api.com/v1',
|
||||||
|
reasoning: true,
|
||||||
|
input: ['text', 'image'],
|
||||||
|
cost: { input: 0.5, output: 1.5, cacheRead: 0, cacheWrite: 0 },
|
||||||
|
contextWindow: 32768,
|
||||||
|
maxTokens: 8192,
|
||||||
|
name: 'Custom Model'
|
||||||
|
};
|
||||||
|
|
||||||
|
const llm = new OpenAICompletionsLLM(model, 'your-api-key');
|
||||||
|
```
|
||||||
|
|
||||||
|
## Environment Variables
|
||||||
|
|
||||||
|
Set these environment variables to use `createLLM` without passing API keys:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
OPENAI_API_KEY=sk-...
|
||||||
|
ANTHROPIC_API_KEY=sk-ant-...
|
||||||
|
GEMINI_API_KEY=...
|
||||||
|
GROQ_API_KEY=gsk_...
|
||||||
|
CEREBRAS_API_KEY=csk-...
|
||||||
|
XAI_API_KEY=xai-...
|
||||||
|
OPENROUTER_API_KEY=sk-or-...
|
||||||
|
```
|
||||||
|
|
||||||
|
When set, you can omit the API key parameter:
|
||||||
|
```typescript
|
||||||
|
// Uses OPENAI_API_KEY from environment
|
||||||
|
const llm = createLLM('openai', 'gpt-4o-mini');
|
||||||
|
|
||||||
|
// Or pass explicitly
|
||||||
|
const llm = createLLM('openai', 'gpt-4o-mini', 'sk-...');
|
||||||
|
```
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"name": "@mariozechner/ai",
|
"name": "@mariozechner/pi-ai",
|
||||||
"version": "0.5.8",
|
"version": "0.5.9",
|
||||||
"description": "Unified API for OpenAI, Anthropic, and Google Gemini LLM providers",
|
"description": "Unified LLM API with automatic model discovery and provider configuration",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "./dist/index.js",
|
"main": "./dist/index.js",
|
||||||
"types": "./dist/index.d.ts",
|
"types": "./dist/index.d.ts",
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
#!/usr/bin/env tsx
|
#!/usr/bin/env tsx
|
||||||
|
|
||||||
import { readFileSync, writeFileSync } from "fs";
|
import { writeFileSync } from "fs";
|
||||||
import { join, dirname } from "path";
|
import { join, dirname } from "path";
|
||||||
import { fileURLToPath } from "url";
|
import { fileURLToPath } from "url";
|
||||||
|
|
||||||
|
|
@ -164,10 +164,11 @@ async function fetchOpenRouterModels(): Promise<NormalizedModel[]> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function loadModelsDevData(): NormalizedModel[] {
|
async function loadModelsDevData(): Promise<NormalizedModel[]> {
|
||||||
try {
|
try {
|
||||||
console.log("Loading models from models.json...");
|
console.log("Fetching models from models.dev API...");
|
||||||
const data = JSON.parse(readFileSync(join(packageRoot, "src/models.json"), "utf-8"));
|
const response = await fetch("https://models.dev/api.json");
|
||||||
|
const data = await response.json();
|
||||||
|
|
||||||
const models: NormalizedModel[] = [];
|
const models: NormalizedModel[] = [];
|
||||||
|
|
||||||
|
|
@ -232,7 +233,7 @@ function loadModelsDevData(): NormalizedModel[] {
|
||||||
async function generateModels() {
|
async function generateModels() {
|
||||||
// Fetch all models
|
// Fetch all models
|
||||||
const openRouterModels = await fetchOpenRouterModels();
|
const openRouterModels = await fetchOpenRouterModels();
|
||||||
const modelsDevModels = loadModelsDevData();
|
const modelsDevModels = await loadModelsDevData();
|
||||||
|
|
||||||
// Combine models (models.dev takes priority for Groq/Cerebras)
|
// Combine models (models.dev takes priority for Groq/Cerebras)
|
||||||
const allModels = [...modelsDevModels, ...openRouterModels];
|
const allModels = [...modelsDevModels, ...openRouterModels];
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// @mariozechner/ai - Unified API for OpenAI, Anthropic, and Google Gemini
|
// @mariozechner/pi-ai - Unified LLM API with automatic model discovery
|
||||||
// This package provides a common interface for working with multiple LLM providers
|
// This package provides a common interface for working with multiple LLM providers
|
||||||
|
|
||||||
export const version = "0.5.8";
|
export const version = "0.5.8";
|
||||||
|
|
|
||||||
|
|
@ -6,54 +6,6 @@ import type { Model } from "./types.js";
|
||||||
export const PROVIDERS = {
|
export const PROVIDERS = {
|
||||||
groq: {
|
groq: {
|
||||||
models: {
|
models: {
|
||||||
"deepseek-r1-distill-llama-70b": {
|
|
||||||
id: "deepseek-r1-distill-llama-70b",
|
|
||||||
name: "DeepSeek R1 Distill Llama 70B",
|
|
||||||
provider: "groq",
|
|
||||||
baseUrl: "https://api.groq.com/openai/v1",
|
|
||||||
reasoning: true,
|
|
||||||
input: ["text"],
|
|
||||||
cost: {
|
|
||||||
input: 0.75,
|
|
||||||
output: 0.99,
|
|
||||||
cacheRead: 0,
|
|
||||||
cacheWrite: 0,
|
|
||||||
},
|
|
||||||
contextWindow: 131072,
|
|
||||||
maxTokens: 8192,
|
|
||||||
} satisfies Model,
|
|
||||||
"llama3-70b-8192": {
|
|
||||||
id: "llama3-70b-8192",
|
|
||||||
name: "Llama 3 70B",
|
|
||||||
provider: "groq",
|
|
||||||
baseUrl: "https://api.groq.com/openai/v1",
|
|
||||||
reasoning: false,
|
|
||||||
input: ["text"],
|
|
||||||
cost: {
|
|
||||||
input: 0.59,
|
|
||||||
output: 0.79,
|
|
||||||
cacheRead: 0,
|
|
||||||
cacheWrite: 0,
|
|
||||||
},
|
|
||||||
contextWindow: 8192,
|
|
||||||
maxTokens: 8192,
|
|
||||||
} satisfies Model,
|
|
||||||
"llama-3.3-70b-versatile": {
|
|
||||||
id: "llama-3.3-70b-versatile",
|
|
||||||
name: "Llama 3.3 70B Versatile",
|
|
||||||
provider: "groq",
|
|
||||||
baseUrl: "https://api.groq.com/openai/v1",
|
|
||||||
reasoning: false,
|
|
||||||
input: ["text"],
|
|
||||||
cost: {
|
|
||||||
input: 0.59,
|
|
||||||
output: 0.79,
|
|
||||||
cacheRead: 0,
|
|
||||||
cacheWrite: 0,
|
|
||||||
},
|
|
||||||
contextWindow: 131072,
|
|
||||||
maxTokens: 32768,
|
|
||||||
} satisfies Model,
|
|
||||||
"llama-3.1-8b-instant": {
|
"llama-3.1-8b-instant": {
|
||||||
id: "llama-3.1-8b-instant",
|
id: "llama-3.1-8b-instant",
|
||||||
name: "Llama 3.1 8B Instant",
|
name: "Llama 3.1 8B Instant",
|
||||||
|
|
@ -86,37 +38,37 @@ export const PROVIDERS = {
|
||||||
contextWindow: 131072,
|
contextWindow: 131072,
|
||||||
maxTokens: 16384,
|
maxTokens: 16384,
|
||||||
} satisfies Model,
|
} satisfies Model,
|
||||||
"gemma2-9b-it": {
|
"llama3-70b-8192": {
|
||||||
id: "gemma2-9b-it",
|
id: "llama3-70b-8192",
|
||||||
name: "Gemma 2 9B",
|
name: "Llama 3 70B",
|
||||||
provider: "groq",
|
provider: "groq",
|
||||||
baseUrl: "https://api.groq.com/openai/v1",
|
baseUrl: "https://api.groq.com/openai/v1",
|
||||||
reasoning: false,
|
reasoning: false,
|
||||||
input: ["text"],
|
input: ["text"],
|
||||||
cost: {
|
cost: {
|
||||||
input: 0.2,
|
input: 0.59,
|
||||||
output: 0.2,
|
output: 0.79,
|
||||||
cacheRead: 0,
|
cacheRead: 0,
|
||||||
cacheWrite: 0,
|
cacheWrite: 0,
|
||||||
},
|
},
|
||||||
contextWindow: 8192,
|
contextWindow: 8192,
|
||||||
maxTokens: 8192,
|
maxTokens: 8192,
|
||||||
} satisfies Model,
|
} satisfies Model,
|
||||||
"mistral-saba-24b": {
|
"deepseek-r1-distill-llama-70b": {
|
||||||
id: "mistral-saba-24b",
|
id: "deepseek-r1-distill-llama-70b",
|
||||||
name: "Mistral Saba 24B",
|
name: "DeepSeek R1 Distill Llama 70B",
|
||||||
provider: "groq",
|
provider: "groq",
|
||||||
baseUrl: "https://api.groq.com/openai/v1",
|
baseUrl: "https://api.groq.com/openai/v1",
|
||||||
reasoning: false,
|
reasoning: true,
|
||||||
input: ["text"],
|
input: ["text"],
|
||||||
cost: {
|
cost: {
|
||||||
input: 0.79,
|
input: 0.75,
|
||||||
output: 0.79,
|
output: 0.99,
|
||||||
cacheRead: 0,
|
cacheRead: 0,
|
||||||
cacheWrite: 0,
|
cacheWrite: 0,
|
||||||
},
|
},
|
||||||
contextWindow: 32768,
|
contextWindow: 131072,
|
||||||
maxTokens: 32768,
|
maxTokens: 8192,
|
||||||
} satisfies Model,
|
} satisfies Model,
|
||||||
"llama3-8b-8192": {
|
"llama3-8b-8192": {
|
||||||
id: "llama3-8b-8192",
|
id: "llama3-8b-8192",
|
||||||
|
|
@ -134,22 +86,54 @@ export const PROVIDERS = {
|
||||||
contextWindow: 8192,
|
contextWindow: 8192,
|
||||||
maxTokens: 8192,
|
maxTokens: 8192,
|
||||||
} satisfies Model,
|
} satisfies Model,
|
||||||
"openai/gpt-oss-120b": {
|
"gemma2-9b-it": {
|
||||||
id: "openai/gpt-oss-120b",
|
id: "gemma2-9b-it",
|
||||||
name: "GPT OSS 120B",
|
name: "Gemma 2 9B",
|
||||||
provider: "groq",
|
provider: "groq",
|
||||||
baseUrl: "https://api.groq.com/openai/v1",
|
baseUrl: "https://api.groq.com/openai/v1",
|
||||||
reasoning: true,
|
reasoning: false,
|
||||||
input: ["text"],
|
input: ["text"],
|
||||||
cost: {
|
cost: {
|
||||||
input: 0.15,
|
input: 0.2,
|
||||||
output: 0.75,
|
output: 0.2,
|
||||||
|
cacheRead: 0,
|
||||||
|
cacheWrite: 0,
|
||||||
|
},
|
||||||
|
contextWindow: 8192,
|
||||||
|
maxTokens: 8192,
|
||||||
|
} satisfies Model,
|
||||||
|
"llama-3.3-70b-versatile": {
|
||||||
|
id: "llama-3.3-70b-versatile",
|
||||||
|
name: "Llama 3.3 70B Versatile",
|
||||||
|
provider: "groq",
|
||||||
|
baseUrl: "https://api.groq.com/openai/v1",
|
||||||
|
reasoning: false,
|
||||||
|
input: ["text"],
|
||||||
|
cost: {
|
||||||
|
input: 0.59,
|
||||||
|
output: 0.79,
|
||||||
cacheRead: 0,
|
cacheRead: 0,
|
||||||
cacheWrite: 0,
|
cacheWrite: 0,
|
||||||
},
|
},
|
||||||
contextWindow: 131072,
|
contextWindow: 131072,
|
||||||
maxTokens: 32768,
|
maxTokens: 32768,
|
||||||
} satisfies Model,
|
} satisfies Model,
|
||||||
|
"mistral-saba-24b": {
|
||||||
|
id: "mistral-saba-24b",
|
||||||
|
name: "Mistral Saba 24B",
|
||||||
|
provider: "groq",
|
||||||
|
baseUrl: "https://api.groq.com/openai/v1",
|
||||||
|
reasoning: false,
|
||||||
|
input: ["text"],
|
||||||
|
cost: {
|
||||||
|
input: 0.79,
|
||||||
|
output: 0.79,
|
||||||
|
cacheRead: 0,
|
||||||
|
cacheWrite: 0,
|
||||||
|
},
|
||||||
|
contextWindow: 32768,
|
||||||
|
maxTokens: 32768,
|
||||||
|
} satisfies Model,
|
||||||
"openai/gpt-oss-20b": {
|
"openai/gpt-oss-20b": {
|
||||||
id: "openai/gpt-oss-20b",
|
id: "openai/gpt-oss-20b",
|
||||||
name: "GPT OSS 20B",
|
name: "GPT OSS 20B",
|
||||||
|
|
@ -166,6 +150,22 @@ export const PROVIDERS = {
|
||||||
contextWindow: 131072,
|
contextWindow: 131072,
|
||||||
maxTokens: 32768,
|
maxTokens: 32768,
|
||||||
} satisfies Model,
|
} satisfies Model,
|
||||||
|
"openai/gpt-oss-120b": {
|
||||||
|
id: "openai/gpt-oss-120b",
|
||||||
|
name: "GPT OSS 120B",
|
||||||
|
provider: "groq",
|
||||||
|
baseUrl: "https://api.groq.com/openai/v1",
|
||||||
|
reasoning: true,
|
||||||
|
input: ["text"],
|
||||||
|
cost: {
|
||||||
|
input: 0.15,
|
||||||
|
output: 0.75,
|
||||||
|
cacheRead: 0,
|
||||||
|
cacheWrite: 0,
|
||||||
|
},
|
||||||
|
contextWindow: 131072,
|
||||||
|
maxTokens: 32768,
|
||||||
|
} satisfies Model,
|
||||||
"meta-llama/llama-4-maverick-17b-128e-instruct": {
|
"meta-llama/llama-4-maverick-17b-128e-instruct": {
|
||||||
id: "meta-llama/llama-4-maverick-17b-128e-instruct",
|
id: "meta-llama/llama-4-maverick-17b-128e-instruct",
|
||||||
name: "Llama 4 Maverick 17B",
|
name: "Llama 4 Maverick 17B",
|
||||||
|
|
@ -1118,6 +1118,22 @@ export const PROVIDERS = {
|
||||||
contextWindow: 131072,
|
contextWindow: 131072,
|
||||||
maxTokens: 96000,
|
maxTokens: 96000,
|
||||||
} satisfies Model,
|
} satisfies Model,
|
||||||
|
"qwen/qwq-32b": {
|
||||||
|
id: "qwen/qwq-32b",
|
||||||
|
name: "Qwen: QwQ 32B",
|
||||||
|
provider: "openrouter",
|
||||||
|
baseUrl: "https://openrouter.ai/api/v1",
|
||||||
|
reasoning: true,
|
||||||
|
input: ["text"],
|
||||||
|
cost: {
|
||||||
|
input: 0.075,
|
||||||
|
output: 0.15,
|
||||||
|
cacheRead: 0,
|
||||||
|
cacheWrite: 0,
|
||||||
|
},
|
||||||
|
contextWindow: 131072,
|
||||||
|
maxTokens: 4096,
|
||||||
|
} satisfies Model,
|
||||||
"mistralai/mistral-saba": {
|
"mistralai/mistral-saba": {
|
||||||
id: "mistralai/mistral-saba",
|
id: "mistralai/mistral-saba",
|
||||||
name: "Mistral: Saba",
|
name: "Mistral: Saba",
|
||||||
|
|
@ -1582,22 +1598,6 @@ export const PROVIDERS = {
|
||||||
contextWindow: 131072,
|
contextWindow: 131072,
|
||||||
maxTokens: 16384,
|
maxTokens: 16384,
|
||||||
} satisfies Model,
|
} satisfies Model,
|
||||||
"meta-llama/llama-3.1-70b-instruct": {
|
|
||||||
id: "meta-llama/llama-3.1-70b-instruct",
|
|
||||||
name: "Meta: Llama 3.1 70B Instruct",
|
|
||||||
provider: "openrouter",
|
|
||||||
baseUrl: "https://openrouter.ai/api/v1",
|
|
||||||
reasoning: false,
|
|
||||||
input: ["text"],
|
|
||||||
cost: {
|
|
||||||
input: 0.09999999999999999,
|
|
||||||
output: 0.28,
|
|
||||||
cacheRead: 0,
|
|
||||||
cacheWrite: 0,
|
|
||||||
},
|
|
||||||
contextWindow: 131072,
|
|
||||||
maxTokens: 16384,
|
|
||||||
} satisfies Model,
|
|
||||||
"meta-llama/llama-3.1-405b-instruct": {
|
"meta-llama/llama-3.1-405b-instruct": {
|
||||||
id: "meta-llama/llama-3.1-405b-instruct",
|
id: "meta-llama/llama-3.1-405b-instruct",
|
||||||
name: "Meta: Llama 3.1 405B Instruct",
|
name: "Meta: Llama 3.1 405B Instruct",
|
||||||
|
|
@ -1614,6 +1614,22 @@ export const PROVIDERS = {
|
||||||
contextWindow: 32768,
|
contextWindow: 32768,
|
||||||
maxTokens: 16384,
|
maxTokens: 16384,
|
||||||
} satisfies Model,
|
} satisfies Model,
|
||||||
|
"meta-llama/llama-3.1-70b-instruct": {
|
||||||
|
id: "meta-llama/llama-3.1-70b-instruct",
|
||||||
|
name: "Meta: Llama 3.1 70B Instruct",
|
||||||
|
provider: "openrouter",
|
||||||
|
baseUrl: "https://openrouter.ai/api/v1",
|
||||||
|
reasoning: false,
|
||||||
|
input: ["text"],
|
||||||
|
cost: {
|
||||||
|
input: 0.09999999999999999,
|
||||||
|
output: 0.28,
|
||||||
|
cacheRead: 0,
|
||||||
|
cacheWrite: 0,
|
||||||
|
},
|
||||||
|
contextWindow: 131072,
|
||||||
|
maxTokens: 16384,
|
||||||
|
} satisfies Model,
|
||||||
"mistralai/mistral-nemo": {
|
"mistralai/mistral-nemo": {
|
||||||
id: "mistralai/mistral-nemo",
|
id: "mistralai/mistral-nemo",
|
||||||
name: "Mistral: Mistral Nemo",
|
name: "Mistral: Mistral Nemo",
|
||||||
|
|
@ -1630,22 +1646,6 @@ export const PROVIDERS = {
|
||||||
contextWindow: 32000,
|
contextWindow: 32000,
|
||||||
maxTokens: 4096,
|
maxTokens: 4096,
|
||||||
} satisfies Model,
|
} satisfies Model,
|
||||||
"mistralai/mistral-7b-instruct-v0.3": {
|
|
||||||
id: "mistralai/mistral-7b-instruct-v0.3",
|
|
||||||
name: "Mistral: Mistral 7B Instruct v0.3",
|
|
||||||
provider: "openrouter",
|
|
||||||
baseUrl: "https://openrouter.ai/api/v1",
|
|
||||||
reasoning: false,
|
|
||||||
input: ["text"],
|
|
||||||
cost: {
|
|
||||||
input: 0.028,
|
|
||||||
output: 0.054,
|
|
||||||
cacheRead: 0,
|
|
||||||
cacheWrite: 0,
|
|
||||||
},
|
|
||||||
contextWindow: 32768,
|
|
||||||
maxTokens: 16384,
|
|
||||||
} satisfies Model,
|
|
||||||
"mistralai/mistral-7b-instruct:free": {
|
"mistralai/mistral-7b-instruct:free": {
|
||||||
id: "mistralai/mistral-7b-instruct:free",
|
id: "mistralai/mistral-7b-instruct:free",
|
||||||
name: "Mistral: Mistral 7B Instruct (free)",
|
name: "Mistral: Mistral 7B Instruct (free)",
|
||||||
|
|
@ -1678,6 +1678,22 @@ export const PROVIDERS = {
|
||||||
contextWindow: 32768,
|
contextWindow: 32768,
|
||||||
maxTokens: 16384,
|
maxTokens: 16384,
|
||||||
} satisfies Model,
|
} satisfies Model,
|
||||||
|
"mistralai/mistral-7b-instruct-v0.3": {
|
||||||
|
id: "mistralai/mistral-7b-instruct-v0.3",
|
||||||
|
name: "Mistral: Mistral 7B Instruct v0.3",
|
||||||
|
provider: "openrouter",
|
||||||
|
baseUrl: "https://openrouter.ai/api/v1",
|
||||||
|
reasoning: false,
|
||||||
|
input: ["text"],
|
||||||
|
cost: {
|
||||||
|
input: 0.028,
|
||||||
|
output: 0.054,
|
||||||
|
cacheRead: 0,
|
||||||
|
cacheWrite: 0,
|
||||||
|
},
|
||||||
|
contextWindow: 32768,
|
||||||
|
maxTokens: 16384,
|
||||||
|
} satisfies Model,
|
||||||
"microsoft/phi-3-mini-128k-instruct": {
|
"microsoft/phi-3-mini-128k-instruct": {
|
||||||
id: "microsoft/phi-3-mini-128k-instruct",
|
id: "microsoft/phi-3-mini-128k-instruct",
|
||||||
name: "Microsoft: Phi-3 Mini 128K Instruct",
|
name: "Microsoft: Phi-3 Mini 128K Instruct",
|
||||||
|
|
@ -1710,22 +1726,6 @@ export const PROVIDERS = {
|
||||||
contextWindow: 128000,
|
contextWindow: 128000,
|
||||||
maxTokens: 4096,
|
maxTokens: 4096,
|
||||||
} satisfies Model,
|
} satisfies Model,
|
||||||
"meta-llama/llama-3-70b-instruct": {
|
|
||||||
id: "meta-llama/llama-3-70b-instruct",
|
|
||||||
name: "Meta: Llama 3 70B Instruct",
|
|
||||||
provider: "openrouter",
|
|
||||||
baseUrl: "https://openrouter.ai/api/v1",
|
|
||||||
reasoning: false,
|
|
||||||
input: ["text"],
|
|
||||||
cost: {
|
|
||||||
input: 0.3,
|
|
||||||
output: 0.39999999999999997,
|
|
||||||
cacheRead: 0,
|
|
||||||
cacheWrite: 0,
|
|
||||||
},
|
|
||||||
contextWindow: 8192,
|
|
||||||
maxTokens: 16384,
|
|
||||||
} satisfies Model,
|
|
||||||
"meta-llama/llama-3-8b-instruct": {
|
"meta-llama/llama-3-8b-instruct": {
|
||||||
id: "meta-llama/llama-3-8b-instruct",
|
id: "meta-llama/llama-3-8b-instruct",
|
||||||
name: "Meta: Llama 3 8B Instruct",
|
name: "Meta: Llama 3 8B Instruct",
|
||||||
|
|
@ -1742,6 +1742,22 @@ export const PROVIDERS = {
|
||||||
contextWindow: 8192,
|
contextWindow: 8192,
|
||||||
maxTokens: 16384,
|
maxTokens: 16384,
|
||||||
} satisfies Model,
|
} satisfies Model,
|
||||||
|
"meta-llama/llama-3-70b-instruct": {
|
||||||
|
id: "meta-llama/llama-3-70b-instruct",
|
||||||
|
name: "Meta: Llama 3 70B Instruct",
|
||||||
|
provider: "openrouter",
|
||||||
|
baseUrl: "https://openrouter.ai/api/v1",
|
||||||
|
reasoning: false,
|
||||||
|
input: ["text"],
|
||||||
|
cost: {
|
||||||
|
input: 0.3,
|
||||||
|
output: 0.39999999999999997,
|
||||||
|
cacheRead: 0,
|
||||||
|
cacheWrite: 0,
|
||||||
|
},
|
||||||
|
contextWindow: 8192,
|
||||||
|
maxTokens: 16384,
|
||||||
|
} satisfies Model,
|
||||||
"mistralai/mixtral-8x22b-instruct": {
|
"mistralai/mixtral-8x22b-instruct": {
|
||||||
id: "mistralai/mixtral-8x22b-instruct",
|
id: "mistralai/mixtral-8x22b-instruct",
|
||||||
name: "Mistral: Mixtral 8x22B Instruct",
|
name: "Mistral: Mixtral 8x22B Instruct",
|
||||||
|
|
@ -1838,22 +1854,6 @@ export const PROVIDERS = {
|
||||||
contextWindow: 128000,
|
contextWindow: 128000,
|
||||||
maxTokens: 4096,
|
maxTokens: 4096,
|
||||||
} satisfies Model,
|
} satisfies Model,
|
||||||
"mistralai/mistral-tiny": {
|
|
||||||
id: "mistralai/mistral-tiny",
|
|
||||||
name: "Mistral Tiny",
|
|
||||||
provider: "openrouter",
|
|
||||||
baseUrl: "https://openrouter.ai/api/v1",
|
|
||||||
reasoning: false,
|
|
||||||
input: ["text"],
|
|
||||||
cost: {
|
|
||||||
input: 0.25,
|
|
||||||
output: 0.25,
|
|
||||||
cacheRead: 0,
|
|
||||||
cacheWrite: 0,
|
|
||||||
},
|
|
||||||
contextWindow: 32768,
|
|
||||||
maxTokens: 4096,
|
|
||||||
} satisfies Model,
|
|
||||||
"mistralai/mistral-small": {
|
"mistralai/mistral-small": {
|
||||||
id: "mistralai/mistral-small",
|
id: "mistralai/mistral-small",
|
||||||
name: "Mistral Small",
|
name: "Mistral Small",
|
||||||
|
|
@ -1870,6 +1870,22 @@ export const PROVIDERS = {
|
||||||
contextWindow: 32768,
|
contextWindow: 32768,
|
||||||
maxTokens: 4096,
|
maxTokens: 4096,
|
||||||
} satisfies Model,
|
} satisfies Model,
|
||||||
|
"mistralai/mistral-tiny": {
|
||||||
|
id: "mistralai/mistral-tiny",
|
||||||
|
name: "Mistral Tiny",
|
||||||
|
provider: "openrouter",
|
||||||
|
baseUrl: "https://openrouter.ai/api/v1",
|
||||||
|
reasoning: false,
|
||||||
|
input: ["text"],
|
||||||
|
cost: {
|
||||||
|
input: 0.25,
|
||||||
|
output: 0.25,
|
||||||
|
cacheRead: 0,
|
||||||
|
cacheWrite: 0,
|
||||||
|
},
|
||||||
|
contextWindow: 32768,
|
||||||
|
maxTokens: 4096,
|
||||||
|
} satisfies Model,
|
||||||
"mistralai/mixtral-8x7b-instruct": {
|
"mistralai/mixtral-8x7b-instruct": {
|
||||||
id: "mistralai/mixtral-8x7b-instruct",
|
id: "mistralai/mixtral-8x7b-instruct",
|
||||||
name: "Mistral: Mixtral 8x7B Instruct",
|
name: "Mistral: Mixtral 8x7B Instruct",
|
||||||
|
|
@ -2457,6 +2473,21 @@ export const PROVIDERS = {
|
||||||
contextWindow: 16385,
|
contextWindow: 16385,
|
||||||
maxTokens: 4096,
|
maxTokens: 4096,
|
||||||
} satisfies Model,
|
} satisfies Model,
|
||||||
|
"gpt-3.5-turbo": {
|
||||||
|
id: "gpt-3.5-turbo",
|
||||||
|
name: "OpenAI: GPT-3.5 Turbo",
|
||||||
|
provider: "openai",
|
||||||
|
reasoning: false,
|
||||||
|
input: ["text"],
|
||||||
|
cost: {
|
||||||
|
input: 0.5,
|
||||||
|
output: 1.5,
|
||||||
|
cacheRead: 0,
|
||||||
|
cacheWrite: 0,
|
||||||
|
},
|
||||||
|
contextWindow: 16385,
|
||||||
|
maxTokens: 4096,
|
||||||
|
} satisfies Model,
|
||||||
"gpt-4": {
|
"gpt-4": {
|
||||||
id: "gpt-4",
|
id: "gpt-4",
|
||||||
name: "OpenAI: GPT-4",
|
name: "OpenAI: GPT-4",
|
||||||
|
|
@ -2487,21 +2518,6 @@ export const PROVIDERS = {
|
||||||
contextWindow: 8191,
|
contextWindow: 8191,
|
||||||
maxTokens: 4096,
|
maxTokens: 4096,
|
||||||
} satisfies Model,
|
} satisfies Model,
|
||||||
"gpt-3.5-turbo": {
|
|
||||||
id: "gpt-3.5-turbo",
|
|
||||||
name: "OpenAI: GPT-3.5 Turbo",
|
|
||||||
provider: "openai",
|
|
||||||
reasoning: false,
|
|
||||||
input: ["text"],
|
|
||||||
cost: {
|
|
||||||
input: 0.5,
|
|
||||||
output: 1.5,
|
|
||||||
cacheRead: 0,
|
|
||||||
cacheWrite: 0,
|
|
||||||
},
|
|
||||||
contextWindow: 16385,
|
|
||||||
maxTokens: 4096,
|
|
||||||
} satisfies Model,
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
anthropic: {
|
anthropic: {
|
||||||
|
|
@ -2581,9 +2597,9 @@ export const PROVIDERS = {
|
||||||
contextWindow: 200000,
|
contextWindow: 200000,
|
||||||
maxTokens: 64000,
|
maxTokens: 64000,
|
||||||
} satisfies Model,
|
} satisfies Model,
|
||||||
"claude-3-5-haiku-20241022": {
|
"claude-3-5-haiku-latest": {
|
||||||
id: "claude-3-5-haiku-20241022",
|
id: "claude-3-5-haiku-latest",
|
||||||
name: "Anthropic: Claude 3.5 Haiku (2024-10-22)",
|
name: "Anthropic: Claude 3.5 Haiku",
|
||||||
provider: "anthropic",
|
provider: "anthropic",
|
||||||
reasoning: false,
|
reasoning: false,
|
||||||
input: ["text", "image"],
|
input: ["text", "image"],
|
||||||
|
|
@ -2596,9 +2612,9 @@ export const PROVIDERS = {
|
||||||
contextWindow: 200000,
|
contextWindow: 200000,
|
||||||
maxTokens: 8192,
|
maxTokens: 8192,
|
||||||
} satisfies Model,
|
} satisfies Model,
|
||||||
"claude-3-5-haiku-latest": {
|
"claude-3-5-haiku-20241022": {
|
||||||
id: "claude-3-5-haiku-latest",
|
id: "claude-3-5-haiku-20241022",
|
||||||
name: "Anthropic: Claude 3.5 Haiku",
|
name: "Anthropic: Claude 3.5 Haiku (2024-10-22)",
|
||||||
provider: "anthropic",
|
provider: "anthropic",
|
||||||
reasoning: false,
|
reasoning: false,
|
||||||
input: ["text", "image"],
|
input: ["text", "image"],
|
||||||
|
|
|
||||||
4
packages/pods/package-lock.json
generated
4
packages/pods/package-lock.json
generated
|
|
@ -1,12 +1,12 @@
|
||||||
{
|
{
|
||||||
"name": "@mariozechner/pi",
|
"name": "@mariozechner/pi",
|
||||||
"version": "0.5.8",
|
"version": "0.5.9",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "@mariozechner/pi",
|
"name": "@mariozechner/pi",
|
||||||
"version": "0.5.8",
|
"version": "0.5.9",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@ai-sdk/openai": "^2.0.5",
|
"@ai-sdk/openai": "^2.0.5",
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "@mariozechner/pi",
|
"name": "@mariozechner/pi",
|
||||||
"version": "0.5.8",
|
"version": "0.5.9",
|
||||||
"description": "CLI tool for managing vLLM deployments on GPU pods",
|
"description": "CLI tool for managing vLLM deployments on GPU pods",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"bin": {
|
"bin": {
|
||||||
|
|
@ -34,7 +34,7 @@
|
||||||
"node": ">=20.0.0"
|
"node": ">=20.0.0"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@mariozechner/pi-agent": "^0.5.8",
|
"@mariozechner/pi-agent": "^0.5.9",
|
||||||
"chalk": "^5.5.0"
|
"chalk": "^5.5.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {}
|
"devDependencies": {}
|
||||||
|
|
|
||||||
4
packages/tui/package-lock.json
generated
4
packages/tui/package-lock.json
generated
|
|
@ -1,12 +1,12 @@
|
||||||
{
|
{
|
||||||
"name": "@mariozechner/tui",
|
"name": "@mariozechner/tui",
|
||||||
"version": "0.5.8",
|
"version": "0.5.9",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "@mariozechner/tui",
|
"name": "@mariozechner/tui",
|
||||||
"version": "0.5.8",
|
"version": "0.5.9",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/mime-types": "^2.1.4",
|
"@types/mime-types": "^2.1.4",
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "@mariozechner/pi-tui",
|
"name": "@mariozechner/pi-tui",
|
||||||
"version": "0.5.8",
|
"version": "0.5.9",
|
||||||
"description": "Terminal User Interface library with differential rendering for efficient text-based applications",
|
"description": "Terminal User Interface library with differential rendering for efficient text-based applications",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.js",
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue