local-lemonade 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +520 -0
- package/docs/README.md +22 -0
- package/docs/anthropic.md +11 -0
- package/docs/lemonade.md +2537 -0
- package/docs/llamacpp.md +442 -0
- package/docs/mcp.md +199 -0
- package/docs/ollama.md +21 -0
- package/docs/openai.md +1192 -0
- package/index.ts +2374 -0
- package/lemonade.example.json +71 -0
- package/package.json +24 -0
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
{
|
|
2
|
+
// Template for ~/.pi/agent/lemonade.json — copy there and edit for your server:
|
|
3
|
+
// cp ~/.pi/agent/extensions/local-lemonade/lemonade.example.json ~/.pi/agent/lemonade.json
|
|
4
|
+
// All endpoints/paths below are the defaults confirmed against lemonade 11.7.0.
|
|
5
|
+
// JSONC-style comments are allowed in the live config; note that /lemonade-setup
|
|
6
|
+
// rewrites the file at runtime and strips them.
|
|
7
|
+
// Full field documentation: see README.md in this directory.
|
|
8
|
+
|
|
9
|
+
// API key lemonade expects (lemonade's default unless you changed it).
|
|
10
|
+
"apiKey": "lemonade",
|
|
11
|
+
|
|
12
|
+
// servers[] is the ONLY instance store — every tool accepts an optional
|
|
13
|
+
// `server` argument naming one of these. Add more entries for multi-server setups.
|
|
14
|
+
"servers": [
|
|
15
|
+
{
|
|
16
|
+
// Human-readable name used in tool calls and /lemonade-setup.
|
|
17
|
+
"name": "my-lemonade-server",
|
|
18
|
+
// Base URL of the lemonade server, no trailing slash.
|
|
19
|
+
"baseUrl": "http://localhost:13305",
|
|
20
|
+
// Free-form note shown in the setup TUI.
|
|
21
|
+
"description": "Replace with your server's host:port."
|
|
22
|
+
}
|
|
23
|
+
],
|
|
24
|
+
|
|
25
|
+
// --- Endpoint paths (relative to baseUrl; lemonade 11.7.0 defaults) ---
|
|
26
|
+
"chatPath": "/api/v1", // OpenAI-compatible chat completions
|
|
27
|
+
"modelsPath": "/v1/models", // model catalog listing
|
|
28
|
+
"healthPath": "/v1/health", // server health / loaded models
|
|
29
|
+
"loadPath": "/v1/load", // load a model
|
|
30
|
+
"unloadPath": "/v1/unload", // unload a model
|
|
31
|
+
"pullPath": "/v1/pull", // download a model (blocking fallback)
|
|
32
|
+
"deletePath": "/v1/delete", // delete a downloaded model
|
|
33
|
+
"downloadsPath": "/v1/downloads", // list download jobs (non-blocking pull)
|
|
34
|
+
"downloadsControlPath": "/v1/downloads/control", // cancel / control download jobs
|
|
35
|
+
"registrySearchPath": "/v1/registry/search", // Hugging Face registry search
|
|
36
|
+
"pullVariantsPath": "/v1/pull/variants", // pull variants for a model
|
|
37
|
+
"transcriptionPath": "/v1/audio/transcriptions", // transcribe_audio
|
|
38
|
+
"imageGenerationPath": "/v1/images/generations", // generate_image
|
|
39
|
+
"imageEditPath": "/v1/images/edits", // edit_image
|
|
40
|
+
"imageVariationPath": "/v1/images/variations", // vary_image
|
|
41
|
+
"imageUpscalePath": "/v1/images/upscale", // upscale_image
|
|
42
|
+
"speechPath": "/v1/audio/speech", // text_to_speech
|
|
43
|
+
"audioGenerationPath": "/v1/audio/generations", // generate_audio (music/SFX)
|
|
44
|
+
"mesh3dPath": "/v1/3d/generations", // generate_3d_model
|
|
45
|
+
"classifyPath": "/v1/classify", // classify_text
|
|
46
|
+
|
|
47
|
+
// UDP port for automatic lemonade-server discovery (broadcast beacon).
|
|
48
|
+
"beaconPort": 13305,
|
|
49
|
+
|
|
50
|
+
// true = only register chat-capable models (no embed/rerank/vision-only etc.)
|
|
51
|
+
// as pi providers.
|
|
52
|
+
"chatOnly": true,
|
|
53
|
+
|
|
54
|
+
// --- Model defaults (empty string = auto-pick first in catalog / tool default) ---
|
|
55
|
+
"defaultTranscriptionModel": "Whisper-Large-v3",
|
|
56
|
+
"defaultImageModel": "",
|
|
57
|
+
"defaultUpscaleModel": "RealESRGAN-x4plus",
|
|
58
|
+
"defaultClassifierModel": "",
|
|
59
|
+
|
|
60
|
+
// Directory where generated images/audio/3D files are saved.
|
|
61
|
+
// Empty = same directory pi is running in.
|
|
62
|
+
"outputDir": "",
|
|
63
|
+
|
|
64
|
+
// --- Timeouts (milliseconds) ---
|
|
65
|
+
"discoveryTimeoutMs": 5000, // mDNS-style server discovery
|
|
66
|
+
"beaconTimeoutMs": 3000, // UDP beacon discovery
|
|
67
|
+
"loadTimeoutMs": 300000, // model load (5 min)
|
|
68
|
+
"pullTimeoutMs": 1800000, // blocking model pull (30 min)
|
|
69
|
+
"transcriptionTimeoutMs": 300000,
|
|
70
|
+
"generationTimeoutMs": 600000
|
|
71
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "local-lemonade",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Unified pi extension for a self-hosted Lemonade server: dynamic chat-model discovery, multimodal agent tools (transcription, image gen/edit/upscale, TTS, audio, 3D mesh), and a live /lemonade-setup management TUI.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"pi-package",
|
|
7
|
+
"pi",
|
|
8
|
+
"pi-extension",
|
|
9
|
+
"lemonade",
|
|
10
|
+
"local-llm",
|
|
11
|
+
"ai-server"
|
|
12
|
+
],
|
|
13
|
+
"license": "MIT",
|
|
14
|
+
"type": "module",
|
|
15
|
+
"files": ["*"],
|
|
16
|
+
"peerDependencies": {
|
|
17
|
+
"@earendil-works/pi-coding-agent": "*",
|
|
18
|
+
"@earendil-works/pi-tui": "*",
|
|
19
|
+
"typebox": "*"
|
|
20
|
+
},
|
|
21
|
+
"pi": {
|
|
22
|
+
"extensions": ["./index.ts"]
|
|
23
|
+
}
|
|
24
|
+
}
|