opencode-pollinations-plugin 6.4.7 → 6.4.9

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.de.md CHANGED
@@ -1,11 +1,17 @@
1
- # 🌸 Pollinations AI Plugin für OpenCode (v6.4)
1
+ # 🌸 Pollinations AI Plugin für OpenCode (v6.4.9)
2
2
 
3
- ## ✨ Neu in v6.4.0
3
+ ## ✨ Neu in v6.4.9
4
4
 
5
- - 🎯 **Quests & Gamification** : `polli_quests` + `/poll quests` sieh deine Quests und das **einlösbare kostenlose Pollen**. Die Nutzung des Plugins schließt Quests rückwirkend ab!
6
- - 🆓 **Kostenlose Bild- & Videogenerierung (ohne Schlüssel!)** : `gen_edit_image_free` (erstellen + bearbeiten, ~20/Tag) und `gen_video_free` (Text→Video + Bild/Audio, ~5/Tag), für jedes Modell.
7
- - 🔐 **1-Klick-Login** : `/poll login` + `polli_login` (Device Flow wie `gh auth login`), Browser öffnet automatisch. `/poll connect sk_...` bleibt für permanente Schlüssel verfügbar.
8
- - 🇨🇳 **Chinesisch hinzugefügt** : Oberfläche in 6 Sprachen (en, fr, es, de, it, zh).
5
+ - 🎯 **Quests & Gamification**: `polli_quests` + `/poll quests`. Plugin-Nutzung erfüllt Quests **rückwirkend**.
6
+ - 🆓 **Kostenlose Tools (kein Schlüssel)** für **jedes** OpenCode-Modell:
7
+ - `gen_edit_image_free` generieren **und** bearbeiten (~20/Tag)
8
+ - `gen_video_free` Text→Video (~5/Tag)
9
+ - `object_remover` / `image_upscaler` / `image_enhancer` — kostenlose Bildverarbeitung
10
+ - `remove_background` — kostenloses KI-Freistellen (rmbg / bgeraser)
11
+ - 🔐 **1-Klick-Login**: `/poll login` + `polli_login`. `/poll connect sk_...` bleibt verfügbar.
12
+ - 🧊 **Vollständiger Modellkatalog**: text, image, video, audio, **3D**, **embeddings**, realtime.
13
+ - 🧪 **CI + Packaging**: Node ≥ 18, CLI `npx opencode-pollinations-plugin`, Unit- + i18n-Tests.
14
+ - 🌍 **6 Sprachen**: en, fr, es, de, it, zh — Onboarding und Commands ausgerichtet.
9
15
 
10
16
 
11
17
  <div align="center">
@@ -91,7 +97,6 @@ Das **Pollen 🌻** ist unser zentrales Kreditsystem (1$ ≈ 1 Pollen). Verbinde
91
97
 
92
98
  | Tier (Stufe) | Stündliche Aufladung ⏱️ | Schätzung Tag* | Voraussetzung |
93
99
  | :--- | :--- | :--- | :--- |
94
- | 🦠 **Microbe** | **0.01 Pollen / Std.** | ~0.24 / Tag | Einfach registrieren! |
95
100
  | 🍄 **Spore** | **0.01 Pollen / Std.** | ~0.24 / Tag | Automatische Verifikation |
96
101
  | 🌱 **Seed** | **0.15 Pollen / Std.** | ~3.6 / Tag | Aktiver GitHub-Entwickler (8+ Punkte) |
97
102
  | 🌸 **Flower** | **0.40 Pollen / Std.** | ~9.6 / Tag | **Eine App veröffentlichen** (Wie dieses Plugin!) |
package/README.es.md CHANGED
@@ -1,11 +1,17 @@
1
- # 🌸 Pollinations AI Plugin para OpenCode (v6.4)
1
+ # 🌸 Pollinations AI Plugin para OpenCode (v6.4.9)
2
2
 
3
- ## ✨ Novedades v6.4.0
3
+ ## ✨ Novedades v6.4.9
4
4
 
5
- - 🎯 **Misiones y Gamificación** : `polli_quests` + `/poll quests` — mira tus misiones y el **Pollen gratis por reclamar**. ¡Usar el plugin completa misiones retroactivamente!
6
- - 🆓 **Imagen y Vídeo gratis (¡sin clave!)** : `gen_edit_image_free` (generar + editar, ~20/día) y `gen_video_free` (texto→vídeo + imagen/audio, ~5/día), para cualquier modelo.
7
- - 🔐 **Inicio 1 clic** : `/poll login` + `polli_login` (device flow como `gh auth login`), el navegador se abre solo. `/poll connect sk_...` sigue disponible para clave permanente.
8
- - 🇨🇳 **Chino añadido** : interfaz en 6 idiomas (en, fr, es, de, it, zh).
5
+ - 🎯 **Quests & Gamificación**: `polli_quests` + `/poll quests`. Usar el plugin completa quests **retroactivamente**.
6
+ - 🆓 **Herramientas gratis (sin clave)** para **cualquier** modelo OpenCode:
7
+ - `gen_edit_image_free` generar **y** editar (~20/día)
8
+ - `gen_video_free` texto→vídeo (~5/día)
9
+ - `object_remover` / `image_upscaler` / `image_enhancer` — procesado de imagen gratis
10
+ - `remove_background` — recorte IA gratis (rmbg / bgeraser)
11
+ - 🔐 **Login en 1 clic**: `/poll login` + `polli_login`. `/poll connect sk_...` sigue disponible.
12
+ - 🧊 **Catálogo completo**: text, image, video, audio, **3D**, **embeddings**, realtime.
13
+ - 🧪 **CI + packaging**: Node ≥ 18, CLI `npx opencode-pollinations-plugin`, tests unit + i18n.
14
+ - 🌍 **6 idiomas**: en, fr, es, de, it, zh — onboarding y comandos alineados.
9
15
 
10
16
 
11
17
  <div align="center">
@@ -91,7 +97,6 @@ El **Pollen 🌻** dicta la ley unificada del crédito (1$ ≈ 1 Pollen). Sólo
91
97
 
92
98
  | Tier | Recarga Hora ⏱️ | Aprox Diario* | Requisito a Cumplir |
93
99
  | :--- | :--- | :--- | :--- |
94
- | 🦠 **Microbe** | **0.01 Pollen / hora** | ~0.24 /día | ¡Sólo con crear el token! |
95
100
  | 🍄 **Spore** | **0.01 Pollen / hora** | ~0.24 /día | Examen de perfil y verificación |
96
101
  | 🌱 **Seed** | **0.15 Pollen / hora** | ~3.6 /día | Desarrollador activo en Github (+8 pts) |
97
102
  | 🌸 **Flower** | **0.40 Pollen / hora** | ~9.6 /día | **Completar y Publicar una App** |
package/README.fr.md CHANGED
@@ -1,11 +1,17 @@
1
- # 🌸 Plugin Pollinations AI pour OpenCode (v6.4)
1
+ # 🌸 Plugin Pollinations AI pour OpenCode (v6.4.9)
2
2
 
3
- ## ✨ Nouveautés v6.4.0
3
+ ## ✨ Nouveautés v6.4.9
4
4
 
5
- - 🎯 **Quêtes & Gamification** : `polli_quests` + `/poll quests` — voyez vos quêtes et le **Pollen gratuit à réclamer**. Utiliser le plugin complète des quêtes rétroactivement !
6
- - 🆓 **Image & Vidéo gratuites (sans clé !)** : `gen_edit_image_free` (génération + édition, ~20/j) et `gen_video_free` (texte→vidéo + image/audio, ~5/j), pour n'importe quel modèle.
7
- - 🔐 **Connexion 1 clic** : `/poll login` + `polli_login` (device flow façon `gh auth login`), le navigateur s'ouvre tout seul. `/poll connect sk_...` reste dispo pour une clé permanente.
8
- - 🇨🇳 **Chinois ajouté** : interface disponible en 6 langues (en, fr, es, de, it, zh).
5
+ - 🎯 **Quêtes & Gamification** : `polli_quests` + `/poll quests`. Utiliser le plugin complète des quêtes **rétroactivement**.
6
+ - 🆓 **Outils gratuits (sans clé)** pour **n'importe quel** modèle OpenCode :
7
+ - `gen_edit_image_free` génération **et** édition (~20/jour)
8
+ - `gen_video_free` texte→vidéo (~5/jour)
9
+ - `object_remover` / `image_upscaler` / `image_enhancer` — traitement d'image gratuit
10
+ - `remove_background` — détourage IA gratuit (rmbg / bgeraser)
11
+ - 🔐 **Connexion 1 clic** : `/poll login` + `polli_login`. `/poll connect sk_...` reste disponible.
12
+ - 🧊 **Catalogue modèles complet** : text, image, video, audio, **3D**, **embeddings**, realtime.
13
+ - 🧪 **CI + packaging** : Node ≥ 18, CLI `npx opencode-pollinations-plugin`, tests unit + i18n.
14
+ - 🌍 **6 langues** : en, fr, es, de, it, zh — onboarding et commandes alignés.
9
15
 
10
16
 
11
17
  <div align="center">
@@ -91,7 +97,6 @@ Le **Pollen 🌻** est notre système de crédit unifié (1$ ≈ 1 Pollen). En c
91
97
 
92
98
  | Tier | Recharge Horaire ⏱️ | Estimation Jour* | Condition |
93
99
  | :--- | :--- | :--- | :--- |
94
- | 🦠 **Microbe** | **0.01 Pollen / heure** | ~0.24 / jour | Simple inscription ! |
95
100
  | 🍄 **Spore** | **0.01 Pollen / heure** | ~0.24 / jour | Vérification automatique |
96
101
  | 🌱 **Seed** | **0.15 Pollen / heure** | ~3.6 / jour | Développeur GitHub Actif (8+ points) |
97
102
  | 🌸 **Flower** | **0.40 Pollen / heure** | ~9.6 / jour | **Publier une App** (Comme ce plugin !) |
package/README.it.md CHANGED
@@ -1,11 +1,17 @@
1
- # 🌸 Pollinations AI Plugin per OpenCode (v6.4)
1
+ # 🌸 Pollinations AI Plugin per OpenCode (v6.4.9)
2
2
 
3
- ## ✨ Novità v6.4.0
3
+ ## ✨ Novità v6.4.9
4
4
 
5
- - 🎯 **Quest e Gamification** : `polli_quests` + `/poll quests` — guarda le tue quest e il **Pollen gratuito da riscattare**. Usare il plugin completa quest retroattivamente!
6
- - 🆓 **Immagini e Video gratis (senza chiave!)** : `gen_edit_image_free` (genera + modifica, ~20/giorno) e `gen_video_free` (testo→video + immagine/audio, ~5/giorno), per qualsiasi modello.
7
- - 🔐 **Accesso 1 clic** : `/poll login` + `polli_login` (device flow come `gh auth login`), il browser si apre da solo. `/poll connect sk_...` resta disponibile per chiave permanente.
8
- - 🇨🇳 **Cinese aggiunto** : interfaccia in 6 lingue (en, fr, es, de, it, zh).
5
+ - 🎯 **Quest & Gamification**: `polli_quests` + `/poll quests`. Usare il plugin completa le quest **retroattivamente**.
6
+ - 🆓 **Strumenti gratis (senza chiave)** per **qualsiasi** modello OpenCode:
7
+ - `gen_edit_image_free` genera **e** modifica (~20/giorno)
8
+ - `gen_video_free` testo→video (~5/giorno)
9
+ - `object_remover` / `image_upscaler` / `image_enhancer` — elaborazione immagini gratis
10
+ - `remove_background` — ritaglio IA gratis (rmbg / bgeraser)
11
+ - 🔐 **Login in 1 clic**: `/poll login` + `polli_login`. `/poll connect sk_...` resta disponibile.
12
+ - 🧊 **Catalogo modelli completo**: text, image, video, audio, **3D**, **embeddings**, realtime.
13
+ - 🧪 **CI + packaging**: Node ≥ 18, CLI `npx opencode-pollinations-plugin`, test unit + i18n.
14
+ - 🌍 **6 lingue**: en, fr, es, de, it, zh — onboarding e comandi allineati.
9
15
 
10
16
 
11
17
  <div align="center">
@@ -91,7 +97,6 @@ Il **Pollen 🌻** è un sistema universale (1$ ≈ 1 Pollen). Immettendo una pr
91
97
 
92
98
  | Tier (Livello) | Ricarica Oraria ⏱️ | Stima Giorno* | Requisito richiesto |
93
99
  | :--- | :--- | :--- | :--- |
94
- | 🦠 **Microbe** | **0.01 Pollen / ora** | ~0.24 / giorno | Solo effettuando il login! |
95
100
  | 🍄 **Spore** | **0.01 Pollen / ora** | ~0.24 / giorno | Essendo verificato dal sistema |
96
101
  | 🌱 **Seed** | **0.15 Pollen / ora** | ~3.6 / giorno | Operazioni su Github valide (+8 pts) |
97
102
  | 🌸 **Flower** | **0.40 Pollen / ora** | ~9.6 / giorno | **Aver prodotto una applicazione** (Come questo Plugin) |
package/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # 🌸 Pollinations AI Plugin for OpenCode (v6.4)
1
+ # 🌸 Pollinations AI Plugin for OpenCode (v6.4.9)
2
2
 
3
3
  <div align="center">
4
4
  <img src="https://avatars.githubusercontent.com/u/88394740?s=400&v=4" alt="Pollinations.ai Logo" width="180">
@@ -27,15 +27,18 @@
27
27
 
28
28
  ---
29
29
 
30
- ## ✨ What's new in v6.4?
30
+ ## ✨ What's new in v6.4.9?
31
31
 
32
- - 🎯 **Quests & Gamification**: New `polli_quests` tool + `/poll quests` command. See your Pollinations quests by category and the **free Pollen waiting to be claimed**. Just using this plugin (text, image & audio models) completes several quests **retroactively** — you may already have free Pollen waiting!
33
- - 🆓 **Free Image & Video Tools (no key required!)**: Two brand-new bonus tools usable by **any** OpenCode model, even without a Pollinations account:
32
+ - 🎯 **Quests & Gamification**: `polli_quests` + `/poll quests`. Using this plugin completes several quests **retroactively** — free Pollen may already be waiting.
33
+ - 🆓 **Free tools (no key required)** usable by **any** OpenCode model:
34
34
  - `gen_edit_image_free` — generate **and edit** images (~20/day).
35
- - `gen_video_free` — text-to-video with optional first-frame image & audio (~5/day).
36
- - 🔐 **1-Click Device Login**: New `/poll login` command + `polli_login` tool (like `gh auth login`). Opens your browser automatically and connects the plugin no manual key copy-paste needed. The old `/poll connect sk_...` still works for permanent keys.
37
- - 🇨🇳 **Chinese added**: The interface is now available in **6 languages** (en, fr, es, de, it, **zh**).
38
- - 🛠️ **Tier fixes**: Full alignment with the official Pollinations tier config (added `router` 🐝, `anonymous`), crash fixes on no-refill tiers, and quest-based progression replacing the deprecated dev-points system.
35
+ - `gen_video_free` — text-to-video (~5/day), optional first frame & audio.
36
+ - `object_remover` / `image_upscaler` / `image_enhancer` — free image processing.
37
+ - `remove_background` free AI cutout (rmbg / bgeraser).
38
+ - 🔐 **1-Click Device Login**: `/poll login` + `polli_login` (like `gh auth login`). Manual `/poll connect sk_...` still works.
39
+ - 🧊 **Full model catalog**: text, image, video, audio, **3D**, **embeddings**, realtime.
40
+ - 🧪 **CI + packaging**: Node 18+ only (no VS Code leftovers), `npx opencode-pollinations-plugin` setup CLI restored, unit + i18n tests.
41
+ - 🌍 **6 languages**: en, fr, es, de, it, zh — onboarding, commands, and free-tool strings aligned.
39
42
 
40
43
  ---
41
44
 
@@ -53,7 +56,10 @@ Beyond text discussion, connecting your key gives OpenCode Agents access to our
53
56
  ### 🧰 Free Creator Bonus Tools (Always available — no API key needed)
54
57
  - 🆓 `gen_edit_image_free` : Generate **and edit** images for free (~20/day, any model, no key).
55
58
  - 🆓 `gen_video_free` : Free text-to-video with optional first-frame image & audio (~5/day, no key).
56
- - ✂️ `remove_background` : Built-in ultra-fast AI image background removal.
59
+ - 🧹 `object_remover` : Remove objects by prompt for free (30-120s, no key).
60
+ - 📐 `image_upscaler` : Upscale images 2x/4x for free (30-120s, no key).
61
+ - ✨ `image_enhancer` : AI image enhancement — denoise, sharpen, restore (30-120s, no key).
62
+ - ✂️ `remove_background` : AI background removal via rmbg (bgeraser.com) — free.
57
63
  - 🛠️ `gen_qrcode`, `gen_diagram`, `gen_palette`, `extract_frames`, `extract_audio`, `file_to_url`: Dev utilities.
58
64
 
59
65
  ### 💻 Complete List of Terminal Commands
@@ -80,34 +86,29 @@ We have introduced fundamental protections to ensure your workflow never interru
80
86
 
81
87
  ---
82
88
 
83
- ## 🐝 Understanding Pollens & "Free Tiers"
89
+ ## 🐝 Understanding Quest Pollen & Hourly Refill
84
90
 
85
- In the past, Pollinations mainly relied on ad-funded network traffic. Today, running massive models (like Claude 3.5 Sonnet, Flux Pro, Wan Video) costs money. The **Enter Universe** unlocks cutting-edge models through an API key.
91
+ In the past, Pollinations relied on tier grants. Today, you earn free Pollen by completing **Quests** and get **hourly refills** based on your contribution level:
86
92
 
87
- **But wait, you don't need a credit card!**
88
-
89
- **Pollen 🌻** is our unified credit system ($1 ≈ 1 Pollen). By connecting a simple Free API Key, you unlock **hourly** Pollen reloads according to your Developer Tier:
90
-
91
- | Tier | Hourly Reload ⏱️ | Daily Estimate* | Condition |
93
+ | Level | Hourly Refill ⏱️ | Daily Estimate* | Condition |
92
94
  | :--- | :--- | :--- | :--- |
93
- | 🦠 **Microbe** | **0 Pollen / hour** | ~0 / day | Just register! |
94
- | 🍄 **Spore** | **0.01 Pollen / hour** | ~0.24 / day | Automatic verification |
95
+ | 🍄 **Spore** | **0.01 Pollen / hour** | ~0.24 / day | New account (default) |
95
96
  | 🌱 **Seed** | **0.15 Pollen / hour** | ~3.6 / day | Active community member |
96
- | 🌸 **Flower** | **0.40 Pollen / hour** | ~9.6 / day | Publish an App (like this Plugin!) |
97
+ | 🌸 **Flower** | **0.40 Pollen / hour** | ~9.6 / day | Complete Quests & contribute |
97
98
  | 🍯 **Nectar** | **0.80 Pollen / hour** | ~19.2 / day | Top contributor |
98
99
  | 🐝 **Router** | **10 Pollen / hour** | ~240 / day | Special / invite-only |
99
100
 
100
- _*Daily estimates are approximate (~24h × hourly rate). Actual reset occurs automatically at the top of every hour (XX:00)._
101
+ _*Daily estimates are approximate (~24h × hourly rate). Refill resets automatically at the top of every hour (XX:00). Quest Pollen lasts 12 months since last account activity._
101
102
 
102
- > 🎯 **Earn even more free Pollen by completing Quests!** Just using this plugin completes several quests retroactively. Run `/poll quests` to see what you can claim.
103
+ > 🎯 **Earn free Pollen by completing Quests!** Just using this plugin completes several quests retroactively. Run `/poll quests` to see what you can claim.
103
104
 
104
- > 🎁 **Get your Free Personal Key (BYOK) on [Pollinations.ai](https://enter.pollinations.ai/authorize?redirect_url=https://github.com/fkom13/opencode-pollinations-plugin) to boost OpenCode!**
105
+ > 🎁 **Get your Free Personal Key (BYOK) on [Pollinations](https://enter.pollinations.ai) to boost OpenCode!**
105
106
 
106
107
  **How It Works:**
107
- 1. Your free tier quota (e.g., 0.40 🌻/hour for Flower) is consumed first.
108
- 2. When quota is exhausted, the safety net gracefully switches you to free fallback variants.
109
- 3. Wallet balance (if purchased) is used for premium models only when the free quota is insufficient.
110
- 4. Boom! 💥 Quota resets completely at the start of the next hour.
108
+ 1. Your Quest Pollen (hourly refill + accumulated quest rewards) is consumed first on all regular models.
109
+ 2. 💎 Paid-only models always use purchased Pollen.
110
+ 3. When Quest Pollen is exhausted, the safety net gracefully switches you to free fallback variants.
111
+ 4. Refill resets at the top of the next hour.
111
112
 
112
113
  ---
113
114
 
@@ -122,17 +123,18 @@ Pollinations for OpenCode natively speaks your language:
122
123
  ## 🚀 Getting Started & Onboarding
123
124
 
124
125
  ### 🐧 1. Cross-Platform Configuration (NPM Installation)
125
- This plugin is **fully cross-platform** (Windows, macOS, Linux) and detects OpenCode ports dynamically.
126
+ This plugin is **fully cross-platform** (Windows, macOS, Linux; Node **≥ 18**) and starts a local proxy on a dynamic port.
126
127
 
127
- 1. Global installation:
128
+ 1. Install (global or project-local):
128
129
  ```bash
129
130
  npm install -g opencode-pollinations-plugin
130
131
  ```
131
- 2. Auto-Configuration:
132
+ 2. Auto-inject into OpenCode config:
132
133
  ```bash
133
134
  npx opencode-pollinations-plugin
135
+ # or: npx opencode-pollinations-plugin --check
134
136
  ```
135
- *(Or inject it manually into `~/.config/opencode/opencode.json`)*
137
+ *(Writes `opencode-pollinations-plugin` into `~/.config/opencode/opencode.json` — or `$OPENCODE_CONFIG_DIR/opencode.json`.)*
136
138
 
137
139
  ### 🔑 2. Interactive Onboarding
138
140
 
@@ -154,7 +156,7 @@ Create a **Secret** key yourself on [enter.pollinations.ai](https://enter.pollin
154
156
 
155
157
  ## 🔗 Links
156
158
 
157
- - **Create your Pollen API Key**: [pollinations.ai](https://pollinations.ai)
159
+ - **Dashboard**: [enter.pollinations.ai](https://enter.pollinations.ai)
158
160
  - **Discord Community**: [Join us!](https://discord.gg/pollinations-ai-885844321461485618)
159
161
  - **OpenCode Ecosystem**: [opencode.ai](https://opencode.ai/docs/ecosystem#plugins)
160
162
 
package/README.zh.md CHANGED
@@ -1,11 +1,17 @@
1
- # 🌸 Pollinations AI 插件 - OpenCode版 (v6.4)
1
+ # 🌸 Pollinations AI 插件 - OpenCode版 (v6.4.9)
2
2
 
3
- ## ✨ v6.4.0 新功能
3
+ ## ✨ v6.4.9 新功能
4
4
 
5
- - 🎯 **任务与游戏化** :`polli_quests` + `/poll quests` — 查看你的任务和**可领取的免费 Pollen**。使用本插件会追溯性地完成多个任务!
6
- - 🆓 **免费图像和视频 (无需密钥!)** :`gen_edit_image_free` (生成 + 编辑,约 20/天) 和 `gen_video_free` (文本→视频 + 图像/音频,约 5/天),适用于任何模型。
7
- - 🔐 **一键登录** :`/poll login` + `polli_login` (设备流程,类似 `gh auth login`),浏览器自动打开。`/poll connect sk_...` 仍可用于永久密钥。
8
- - 🇨🇳 **新增中文** :界面支持 6 种语言 (en, fr, es, de, it, zh)。
5
+ - 🎯 **任务与游戏化**:`polli_quests` + `/poll quests`。使用本插件可**追溯**完成多项任务。
6
+ - 🆓 **免费工具(无需密钥)** 适用于**任何** OpenCode 模型:
7
+ - `gen_edit_image_free` 生成**与**编辑(约 20/天)
8
+ - `gen_video_free` 文本→视频(约 5/天)
9
+ - `object_remover` / `image_upscaler` / `image_enhancer` — 免费图像处理
10
+ - `remove_background` — 免费 AI 抠图(rmbg / bgeraser)
11
+ - 🔐 **一键登录**:`/poll login` + `polli_login`。仍可用 `/poll connect sk_...`。
12
+ - 🧊 **完整模型目录**:text、image、video、audio、**3D**、**embeddings**、realtime。
13
+ - 🧪 **CI + 打包**:Node ≥ 18,CLI `npx opencode-pollinations-plugin`,单元 + i18n 测试。
14
+ - 🌍 **6 种语言**:en、fr、es、de、it、zh — 引导与命令对齐。
9
15
 
10
16
 
11
17
  <div align="center">
@@ -91,7 +97,6 @@
91
97
 
92
98
  | Tier (称号) | 每小时获取补贴量 ⏱️ | 无限循环参考值* | 达成条件 |
93
99
  | :--- | :--- | :--- | :--- |
94
- | 🦠 **Microbe (微生物)** | **0.01 Pollen / 小时** | 每天约 ~0.24 | 仅仅只要登录! |
95
100
  | 🍄 **Spore (孢子)** | **0.01 Pollen / 小时** | 每天约 ~0.24 | 自动安全审核激活系统 |
96
101
  | 🌱 **Seed (树种)** | **0.15 Pollen / 小时** | 每天约 ~3.6 | GitHub 活跃开发成员 (总分达 8+) |
97
102
  | 🌸 **Flower (花朵)** | **0.40 Pollen / 小时** | 每天约 ~9.6 | **至少有完成并首发过一款应用在市场!** |
package/bin/setup.js ADDED
@@ -0,0 +1,139 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * opencode-pollinations-plugin setup CLI
4
+ * Injects the plugin into ~/.config/opencode/opencode.json (or OPENCODE_CONFIG_DIR).
5
+ */
6
+ import * as fs from 'fs';
7
+ import * as os from 'os';
8
+ import * as path from 'path';
9
+ import { createRequire } from 'module';
10
+ import { fileURLToPath } from 'url';
11
+
12
+ const require = createRequire(import.meta.url);
13
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
14
+ const pkg = require(path.join(__dirname, '..', 'package.json'));
15
+
16
+ const PLUGIN_SPEC = 'opencode-pollinations-plugin';
17
+
18
+ function getConfigPaths() {
19
+ const custom = process.env.OPENCODE_CONFIG_DIR;
20
+ const base = custom
21
+ ? path.resolve(custom)
22
+ : path.join(os.homedir(), '.config', 'opencode');
23
+ return {
24
+ dir: base,
25
+ file: path.join(base, 'opencode.json'),
26
+ };
27
+ }
28
+
29
+ function loadJson(file) {
30
+ if (!fs.existsSync(file)) return {};
31
+ try {
32
+ return JSON.parse(fs.readFileSync(file, 'utf-8'));
33
+ } catch (e) {
34
+ console.error(`❌ Failed to parse ${file}: ${e.message}`);
35
+ process.exit(1);
36
+ }
37
+ }
38
+
39
+ function saveJson(file, data) {
40
+ fs.mkdirSync(path.dirname(file), { recursive: true });
41
+ fs.writeFileSync(file, JSON.stringify(data, null, 2) + '\n', 'utf-8');
42
+ }
43
+
44
+ function ensurePlugin(config) {
45
+ const plugins = Array.isArray(config.plugin)
46
+ ? [...config.plugin]
47
+ : Array.isArray(config.plugins)
48
+ ? [...config.plugins]
49
+ : [];
50
+
51
+ const already = plugins.some((p) => {
52
+ if (typeof p === 'string') {
53
+ return p === PLUGIN_SPEC || p.includes('opencode-pollinations-plugin');
54
+ }
55
+ if (p && typeof p === 'object') {
56
+ const id = p.id || p.name || p.package || '';
57
+ return String(id).includes('opencode-pollinations-plugin');
58
+ }
59
+ return false;
60
+ });
61
+
62
+ if (!already) {
63
+ plugins.push(PLUGIN_SPEC);
64
+ }
65
+
66
+ // Prefer singular "plugin" (OpenCode current) but keep existing key if present
67
+ if (Array.isArray(config.plugins) && !Array.isArray(config.plugin)) {
68
+ config.plugins = plugins;
69
+ } else {
70
+ config.plugin = plugins;
71
+ if (config.plugins) delete config.plugins;
72
+ }
73
+
74
+ return { config, already, count: plugins.length };
75
+ }
76
+
77
+ function printHelp() {
78
+ console.log(`
79
+ 🌸 opencode-pollinations-plugin v${pkg.version}
80
+
81
+ Usage:
82
+ npx opencode-pollinations-plugin Inject plugin into OpenCode config
83
+ npx opencode-pollinations-plugin --check Check if plugin is already configured
84
+ npx opencode-pollinations-plugin --help Show this help
85
+
86
+ Config file:
87
+ $OPENCODE_CONFIG_DIR/opencode.json
88
+ or ~/.config/opencode/opencode.json
89
+
90
+ After install:
91
+ 1. Restart OpenCode
92
+ 2. Run: /poll login (or /poll connect sk_...)
93
+ 3. Run: /poll help
94
+ `);
95
+ }
96
+
97
+ function main() {
98
+ const args = process.argv.slice(2);
99
+ if (args.includes('--help') || args.includes('-h')) {
100
+ printHelp();
101
+ return;
102
+ }
103
+
104
+ const { dir, file } = getConfigPaths();
105
+ const checkOnly = args.includes('--check');
106
+
107
+ console.log(`🌸 Pollinations OpenCode Plugin v${pkg.version}`);
108
+ console.log(`📁 Config: ${file}`);
109
+
110
+ const config = loadJson(file);
111
+ const { config: next, already, count } = ensurePlugin(config);
112
+
113
+ if (checkOnly) {
114
+ if (already) {
115
+ console.log(`✅ Plugin already configured (${count} plugin entr${count === 1 ? 'y' : 'ies'})`);
116
+ process.exit(0);
117
+ }
118
+ console.log('❌ Plugin not found in config');
119
+ process.exit(1);
120
+ }
121
+
122
+ if (already) {
123
+ console.log('✅ Plugin already present in config — nothing to change.');
124
+ } else {
125
+ saveJson(file, next);
126
+ console.log('✅ Plugin injected into OpenCode config.');
127
+ }
128
+
129
+ console.log(`
130
+ Next steps:
131
+ 1. Restart OpenCode
132
+ 2. /poll login # 1-click device login
133
+ or /poll connect sk_...
134
+ 3. /poll help # commands & free tools
135
+ 4. /poll quests # free Pollen waiting to claim
136
+ `);
137
+ }
138
+
139
+ main();
package/dist/index.js CHANGED
@@ -14,8 +14,6 @@ const sessionModels = new Map();
14
14
  const startProxy = () => {
15
15
  return new Promise((resolve) => {
16
16
  const server = http.createServer(async (req, res) => {
17
- // ... (Request Handling) ...
18
- // We reuse the existing logic structure but simplified startup
19
17
  log(`[Proxy] Request: ${req.method} ${req.url}`);
20
18
  res.setHeader('Access-Control-Allow-Origin', '*');
21
19
  res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');
@@ -37,7 +35,7 @@ const startProxy = () => {
37
35
  }
38
36
  if (req.method === 'POST' && (req.url === '/v1/chat/completions' || req.url === '/chat/completions')) {
39
37
  const chunks = [];
40
- req.on('data', chunk => chunks.push(chunk));
38
+ req.on('data', (chunk) => chunks.push(chunk));
41
39
  req.on('end', async () => {
42
40
  try {
43
41
  const bodyRaw = Buffer.concat(chunks).toString();
@@ -59,8 +57,8 @@ const startProxy = () => {
59
57
  });
60
58
  // Listen on random port (0) to avoid conflicts (CLI/IDE)
61
59
  server.listen(0, '127.0.0.1', () => {
62
- // @ts-ignore
63
- const assignedPort = server.address().port;
60
+ const addr = server.address();
61
+ const assignedPort = addr?.port ?? 0;
64
62
  log(`[Proxy] Started v${require('../package.json').version} (Dynamic Port) on port ${assignedPort}`);
65
63
  resolve(assignedPort);
66
64
  });
@@ -85,7 +83,7 @@ export const PollinationsPlugin = async (ctx) => {
85
83
  const configLocal = loadConfig();
86
84
  await ModelRegistry.refresh(configLocal.apiKey);
87
85
  const stats = ModelRegistry.stats();
88
- log(`[ModelRegistry] Ready: ${stats.image} image, ${stats.video} video, ${stats.audio} audio, ${stats.text} text`);
86
+ log(`[ModelRegistry] Ready: image=${stats.image} video=${stats.video} audio=${stats.audio} text=${stats.text} 3d=${stats['3d']} emb=${stats.embedding} rt=${stats.realtime}`);
89
87
  // Initialisation synchrone du patcher des descriptions des Outils
90
88
  const module = await import('./server/models/worker.js');
91
89
  module.ToolRegistryWorker.start();
@@ -104,19 +104,22 @@
104
104
  "image": "Bilder",
105
105
  "video": "Videos",
106
106
  "audio": "Audio",
107
- "text": "Text & Chat"
107
+ "text": "Text & Chat",
108
+ "3d": "3D",
109
+ "embedding": "Embeddings",
110
+ "realtime": "Echtzeit"
108
111
  },
109
112
  "cat_title": "### {emoji} {label} ({count})",
110
113
  "enter_headers1": "| Name | ID | Beschreibung | Flags | In | Out-Kosten |",
111
114
  "enter_headers2": "|------|----|--------------|-------|----|------------|",
112
115
  "capabilities": "\n**Capabilities :** `💎` Paid-only `💬` Chat/Reasoning `👁️` Vision/Images `🎙️` Audio `🔍` Search `💻` Code",
113
116
  "other": "**Input :** `📝` Text `🖼️` Image `🎤` Audio",
114
- "enter_error": "⚠️ Fehler beim Abrufen der Premium-Modelle."
117
+ "enter_error": "⚠️ Fehler beim Abrufen der Enter-Modelle."
115
118
  },
116
119
  "infos": {
117
120
  "title": "## 🍯💚 POLLINATIONS OPENCODE PLUGIN 💚🍯\n\nWillkommen **{name}** beim Pollinations OpenCode Plugin!\n\nDieses Plugin ermöglicht es, Code und Bilder zu generieren, Videos zu analysieren und nahtlos mit den besten KI-Modellen zu interagieren. Greifen Sie über Chat, Refactoring oder Terminal auf erstklassige LLMs zu.",
118
121
  "features_title": "**Was dieses Plugin Ihnen bietet! :**",
119
- "features_free": "**🛠️ Kostenlose Tools (Immer verfugbar):**\n- `gen_qrcode` / `gen_diagram` / `gen_palette` : Visuals und Dev-Tools.\n- `remove_background` : Hintergrundentfernung.\n- `extract_frames` / `extract_audio` : Medien-Extraktion.\n- `file_to_url` : Online-Hosting.\n- `gen_edit_image_free` : Kostenlose Bild-Generierung & Bearbeitung (~20/Tag).\n- `gen_video_free` : Kostenlose Video-Generierung (~5/Tag).\n- `object_remover` : Suppression d’objets par prompt (gratuit, direct).\n- `image_upscaler` : Agrandissement 2x/4x (gratuit, direct).\n- `image_enhancer` : Amélioration IA d’image (gratuit, direct).",
122
+ "features_free": "**🛠️ Kostenlose Tools (Immer verfugbar):**\n- `gen_qrcode` / `gen_diagram` / `gen_palette` : Visuals und Dev-Tools.\n- `remove_background` : KI-Hintergrundentfernung (rmbg / bgeraser — kostenlos).\n- `extract_frames` / `extract_audio` : Medien-Extraktion.\n- `file_to_url` : Online-Hosting.\n- `gen_edit_image_free` : Kostenlose Bild-Generierung & Bearbeitung (~20/Tag).\n- `gen_video_free` : Kostenlose Video-Generierung (~5/Tag).\n- `object_remover` : Objekte per Prompt entfernen (kostenlos, direkt).\n- `image_upscaler` : Hochskalierung 2x/4x (kostenlos, direkt).\n- `image_enhancer` : KI-Bildverbesserung (kostenlos, direkt).",
120
123
  "features_pro": "**💎 Pollinations Tools (Premium - Automatisiert mit Key):**\n- `polli_gen_image` : Bildgen (Flux, Gemini) + Image-to-Image.\n- `polli_gen_video` : Text-to-Video / Image-to-Video (Veo, Wan...).\n- `polli_gen_audio`/`polli_stt` : Whisper STT, ElevenLabs TTS.\n- `polli_gen_music` : Generative Musik-Engine.\n- `polli_web_search` : Verbundene Websuche.",
121
124
  "features_config": "- **Granulare Konfiguration**, Modus- und Token-Management, Kostenschutz...",
122
125
  "tiers_title": "> **Dein Quest Pollen Refill:** {emoji} {tier}",
@@ -469,7 +472,7 @@
469
472
  "resources": "### 📚 Ressourcen\n* **Dashboard:** enter.pollinations.ai\n* **Discord:** Community beitreten\n* **Plugin:** github.com/fkom13/opencode-pollinations-plugin",
470
473
  "free_models_success": "Verfügbare Modelle: {models}",
471
474
  "free_models_error": "⚠️ Modelle konnten nicht abgerufen werden.",
472
- "onboarding": "## 🌸 Willkommen beim Pollinations-Plugin\n\n**Sofortiger kostenloser Zugang — kein Schlüssel nötig**\nDieses Plugin bietet eine vollständige Umgebung für Chat, Codegenerierung und Medienbearbeitung (Bild-, Video-, Audiogenerierung, Extraktionstools...).\n\nWähle ein `pollinations/free/*`-Modell aus der Liste und beginne zu chatten.\n{freeText}\n\n**🆓 Kostenlose Bonus-Tools (kein Schlüssel):** `gen_edit_image_free` und `gen_video_free` generiere/bearbeite Bilder (~20/Tag) und Videos (~5/Tag) sofort, für jedes Modell.\n\n---\n\n## 🚀 Multimedia-Agenten und Tools für Entwickler\n\nClaude Opus, GPT-5, Gemini 3, Veo & Wan Videogenerierung, ElevenLabs Musik... entfessle die volle Kraft der Pollinations-API!\n\nDieses Plugin nutzt ein **BYOK**-Modell (Bring Your Own Key): mit deinem eigenen API-Schlüssel kann der OpenCode-Agent direkt mit Premium-Tools interagieren und deine Mediendateien in deinem Workspace erstellen.\n\n**Schritt 1 — Kostenloses Konto erstellen**\n👉 **https://enter.pollinations.ai**\n\n**Schritt 2 — API-Schlüssel generieren**\nErstelle im Bereich **API Keys** auf `enter.pollinations.ai` einen **Secret**-Schlüssel (`sk_...`).\n\n**Schritt 3 — Schlüssel verbinden**\n```bash\n/poll connect sk_dein_schluessel\n```\n*(Der Schlüssel wird sofort in deiner OpenCode-Umgebung registriert und schaltet Pro-Modelle frei!)*\n\n---\n\n## 💰 Pollen, Stufen & Quests\nDeine **Stufe** gibt dir ein stündliches kostenloses Pollen-Guthaben (z. B. 🌸 Flower ≈ 0,4/h). Zusätzlich belohnen dich **Quests** mit kostenlosem Pollen — und allein die Nutzung dieses Plugins schließt mehrere rückwirkend ab! Siehe `/poll quests`.\n\nWenn das kostenlose Pollen aufgebraucht ist, zahlst du aus deiner Wallet ($1 ≈ 1 Pollen, kein Abo, kein Ablauf).\n\n**Hilfe?** Gib `/poll help` ein. Offizieller Discord: https://discord.gg/pollinations-ai-885844321461485618"
475
+ "onboarding": "## 🌸 Willkommen beim Pollinations-Plugin\n\n**Sofortiger kostenloser Zugang — kein Schlüssel nötig**\nDieses Plugin bietet eine vollständige Umgebung für Chat, Codegenerierung und Medienbearbeitung (Bild-, Video-, Audiogenerierung, Extraktionstools...).\n\nWähle ein `pollinations/free/*`-Modell aus der Liste und beginne zu chatten.\n{freeText}\n\n**🆓 Kostenlose Bonus-Tools (kein Schlüssel):** `gen_edit_image_free`, `gen_video_free`, `object_remover`, `image_upscaler`, `image_enhancer`, `remove_background` gratis Bild/Video + lokale Verarbeitung.\n\n---\n\n## 🚀 Multimedia-Agenten und Tools für Entwickler\n\nClaude Opus, GPT-5, Gemini 3, Veo & Wan Videogenerierung, ElevenLabs Musik... entfessle die volle Kraft der Pollinations-API!\n\nDieses Plugin nutzt ein **BYOK**-Modell (Bring Your Own Key): mit deinem eigenen API-Schlüssel kann der OpenCode-Agent direkt mit Premium-Tools interagieren und deine Mediendateien in deinem Workspace erstellen.\n\n**Schritt 1 — Kostenloses Konto erstellen**\n👉 **https://enter.pollinations.ai**\n\n**Schritt 2 — API-Schlüssel generieren**\nErstelle im Bereich **API Keys** auf `enter.pollinations.ai` einen **Secret**-Schlüssel (`sk_...`).\n\n**Schritt 3 — Schlüssel verbinden**\n```bash\n/poll connect sk_dein_schluessel\n```\n*(Der Schlüssel wird sofort in deiner OpenCode-Umgebung registriert und schaltet Pro-Modelle frei!)*\n\n---\n\n## 💰 Pollen, Stufen & Quests\nDeine **Stufe** gibt dir ein stündliches kostenloses Pollen-Guthaben (z. B. 🌸 Flower ≈ 0,4/h). Zusätzlich belohnen dich **Quests** mit kostenlosem Pollen — und allein die Nutzung dieses Plugins schließt mehrere rückwirkend ab! Siehe `/poll quests`.\n\nWenn das kostenlose Pollen aufgebraucht ist, zahlst du aus deiner Wallet ($1 ≈ 1 Pollen, kein Abo, kein Ablauf).\n\n**Hilfe?** Gib `/poll help` ein. Offizieller Discord: https://discord.gg/pollinations-ai-885844321461485618"
473
476
  },
474
477
  "cost_guard": {
475
478
  "cost_validated_max": "💰 Kosten validiert (Theoretisches Max: {maxCost})",
@@ -104,18 +104,22 @@
104
104
  "image": "Images",
105
105
  "video": "Videos",
106
106
  "audio": "Audio",
107
- "text": "Text & Chat"
107
+ "text": "Text & Chat",
108
+ "3d": "3D",
109
+ "embedding": "Embeddings",
110
+ "realtime": "Realtime"
108
111
  },
109
112
  "cat_title": "### {emoji} {label} ({count})",
110
113
  "enter_headers1": "| Name | ID | Description | Flags | In | Out Cost |",
111
114
  "enter_headers2": "|------|----|-------------|-------|----|----------|",
112
115
  "capabilities": "\n**Capabilities :** `💎` Paid-only `💬` Chat/Reasoning `👁️` Vision/Images `🎙️` Audio `🔍` Search `💻` Code",
113
- "other": "**Input :** `📝` Text `🖼️` Image `🎤` Audio"
116
+ "other": "**Input :** `📝` Text `🖼️` Image `🎤` Audio",
117
+ "enter_error": "⚠️ Error retrieving Enter models."
114
118
  },
115
119
  "infos": {
116
120
  "title": "## 🍯💚 POLLINATIONS OPENCODE PLUGIN 💚🍯\n\nWelcome **{name}** to the Pollinations OpenCode plugin!\n\nThis plugin empowers you to generate code, images, analyze videos, and interact with top-tier AI models seamlessly within your dev environment. Access state-of-the-art LLMs via chat, refactoring, or terminal.",
117
121
  "features_title": "**What this plugin brings to you! :**",
118
- "features_free": "**🛠️ Integrated Free Tools (Always Available):**\n- `gen_qrcode` / `gen_diagram` / `gen_palette` : Visuals and dev utilities.\n- `remove_background` : Native background removal.\n- `extract_frames` / `extract_audio` : Fast media extraction.\n- `file_to_url` : Instant online hosting of local files.\n- `gen_edit_image_free` : Free image gen & edit (~20/day).\n- `gen_video_free` : Free video gen (~5/day).\n- `object_remover` : Suppression d’objets par prompt (gratuit, direct).\n- `image_upscaler` : Agrandissement 2x/4x (gratuit, direct).\n- `image_enhancer` : Amélioration IA d’image (gratuit, direct).",
122
+ "features_free": "**🛠️ Integrated Free Tools (Always Available):**\n- `gen_qrcode` / `gen_diagram` / `gen_palette` : Visuals and dev utilities.\n- `remove_background` : AI background removal (rmbg / bgeraser — free).\n- `extract_frames` / `extract_audio` : Fast media extraction.\n- `file_to_url` : Instant online hosting of local files.\n- `gen_edit_image_free` : Free image gen & edit (~20/day).\n- `gen_video_free` : Free video gen (~5/day).\n- `object_remover` : Remove objects by prompt (free, direct).\n- `image_upscaler` : Upscale 2x/4x (free, direct).\n- `image_enhancer` : AI image enhancement (free, direct).",
119
123
  "features_pro": "**💎 Pollinations Tools (Premium - Automated with Key) :**\n- `polli_gen_image` : Image gen (Flux, Seedream, Gemini) + Image-to-Image.\n- `polli_gen_video` : Text-to-video / Image-to-video (Veo, Wan, LTX...).\n- `polli_gen_audio`/`polli_stt` : Whisper STT, ElevenLabs TTS.\n- `polli_gen_music` : Generative music engine.\n- `polli_web_search` : Connected web search.",
120
124
  "features_config": "- **Granular configuration**, mode and token management, tool cost protections...",
121
125
  "tiers_title": "> **Your Quest Pollen refill:** {emoji} {tier}",
@@ -468,7 +472,7 @@
468
472
  "resources": "### 📚 Resources\n* **Dashboard:** enter.pollinations.ai\n* **Discord:** Join the Community\n* **Plugin:** github.com/fkom13/opencode-pollinations-plugin",
469
473
  "free_models_success": "Available free models: {models}",
470
474
  "free_models_error": "⚠️ Couldn't fetch free models.",
471
- "onboarding": "## 🌸 Welcome to the Pollinations Plugin\n\n**Immediate free access — no key required**\nThis plugin provides a complete environment for chat, code generation, and media manipulation (Image, Video, Audio Generation, Extraction Tools...).\n\nSelect a `pollinations/free/*` model from the list and start chatting.\n{freeText}\n\n**🆓 Bonus free tools (no key needed):** `gen_edit_image_free` and `gen_video_free` — generate/edit images (~20/day) and videos (~5/day) right away, for any model.\n\n---\n\n## 🚀 Multimedia Agents and Tools for Developers\n\nClaude Opus, GPT-5, Gemini 3, Veo & Wan Video Gen, ElevenLabs Music... unlock the full power of the Pollinations API!\n\nThis plugin uses a **BYOK** (Bring Your Own Key) model: with your own API key, the OpenCode Agent can interact directly with Premium tools, creating your media files in your Workspace.\n\n**Step 1 — Create a free account**\n👉 **https://enter.pollinations.ai**\n\n**Step 2 — Generate your API key**\nIn the **API Keys** section on `enter.pollinations.ai`, create a **Secret** key (`sk_...`).\n\n**Step 3 — Connect the key**\n```bash\n/poll connect sk_your_key_here\n```\n*(The key is immediately registered in your OpenCode environment, unlocking Pro models!)*\n\n---\n\n## 💰 Pollen, Tiers & Quests\nYour **tier** gives you an hourly free Pollen grant (e.g. 🌸 Flower ≈ 0.4/h). On top of that, **Quests** reward you with free Pollen — and simply using this plugin completes several of them retroactively! Check `/poll quests`.\n\nOnce free Pollen runs out, you spend from your wallet ($1 ≈ 1 Pollen, no subscription, no expiration).\n\n**Need help?** Type `/poll help`. Official Discord: https://discord.gg/pollinations-ai-885844321461485618"
475
+ "onboarding": "## 🌸 Welcome to the Pollinations Plugin\n\n**Immediate free access — no key required**\nThis plugin provides a complete environment for chat, code generation, and media manipulation (Image, Video, Audio Generation, Extraction Tools...).\n\nSelect a `pollinations/free/*` model from the list and start chatting.\n{freeText}\n\n**🆓 Bonus free tools (no key needed):** `gen_edit_image_free`, `gen_video_free`, `object_remover`, `image_upscaler`, `image_enhancer`, `remove_background` image/video free tiers + local processing tools.\n\n---\n\n## 🚀 Multimedia Agents and Tools for Developers\n\nClaude Opus, GPT-5, Gemini 3, Veo & Wan Video Gen, ElevenLabs Music... unlock the full power of the Pollinations API!\n\nThis plugin uses a **BYOK** (Bring Your Own Key) model: with your own API key, the OpenCode Agent can interact directly with Premium tools, creating your media files in your Workspace.\n\n**Step 1 — Create a free account**\n👉 **https://enter.pollinations.ai**\n\n**Step 2 — Generate your API key**\nIn the **API Keys** section on `enter.pollinations.ai`, create a **Secret** key (`sk_...`).\n\n**Step 3 — Connect the key**\n```bash\n`/poll login` (recommended) or `/poll connect` sk_your_key_here\n```\n*(The key is immediately registered in your OpenCode environment, unlocking Pro models!)*\n\n---\n\n## 💰 Pollen, Tiers & Quests\nYour **tier** gives you an hourly free Pollen grant (e.g. 🌸 Flower ≈ 0.4/h). On top of that, **Quests** reward you with free Pollen — and simply using this plugin completes several of them retroactively! Check `/poll quests`.\n\nOnce free Pollen runs out, you spend from your wallet ($1 ≈ 1 Pollen, no subscription, no expiration).\n\n**Need help?** Type `/poll help`. Official Discord: https://discord.gg/pollinations-ai-885844321461485618"
472
476
  },
473
477
  "cost_guard": {
474
478
  "cost_validated_max": "💰 Cost validated (Max theoretical: {maxCost})",
@@ -104,19 +104,22 @@
104
104
  "image": "Imágenes",
105
105
  "video": "Videos",
106
106
  "audio": "Audio",
107
- "text": "Texto & Chat"
107
+ "text": "Texto & Chat",
108
+ "3d": "3D",
109
+ "embedding": "Embeddings",
110
+ "realtime": "Tiempo real"
108
111
  },
109
112
  "cat_title": "### {emoji} {label} ({count})",
110
113
  "enter_headers1": "| Nombre | ID | Descripción | Flags | In | Costo Out |",
111
114
  "enter_headers2": "|--------|----|-------------|-------|----|-----------|",
112
115
  "capabilities": "\n**Capabilities :** `💎` Paid-only `💬` Chat/Reasoning `👁️` Vision/Images `🎙️` Audio `🔍` Search `💻` Code",
113
116
  "other": "**Input :** `📝` Text `🖼️` Image `🎤` Audio",
114
- "enter_error": "⚠️ Error al obtener los modelos de pago."
117
+ "enter_error": "⚠️ Error al recuperar los modelos Enter."
115
118
  },
116
119
  "infos": {
117
120
  "title": "## 🍯💚 PLUGIN POLLINATIONS OPENCODE 💚🍯\n\n¡Bienvenido **{name}** al plugin Pollinations OpenCode!\n\nEste plugin te permite generar código, imágenes, analizar videos e interactuar con los mejores modelos de IA sin problemas desde tu entorno de desarrollo. Accede a LLMs avanzados a través del chat, reestructuración o terminal.",
118
121
  "features_title": "**¡Lo que este plugin trae para ti!:**",
119
- "features_free": "**🛠️ Herramientas Gratuitas (Siempre Disponibles):**\n- `gen_qrcode` / `gen_diagram` / `gen_palette` : Visuales y utilidades.\n- `remove_background` : Eliminacion de fondo nativa.\n- `extract_frames` / `extract_audio` : Extraccion rapida de medios.\n- `file_to_url` : Alojamiento online instantaneo.\n- `gen_edit_image_free` : Gen y edicion de imagenes gratis (~20/dia).\n- `gen_video_free` : Gen de video gratis (~5/dia).\n- `object_remover` : Suppression d’objets par prompt (gratuit, direct).\n- `image_upscaler` : Agrandissement 2x/4x (gratuit, direct).\n- `image_enhancer` : Amélioration IA d’image (gratuit, direct).",
122
+ "features_free": "**🛠️ Herramientas Gratuitas (Siempre Disponibles):**\n- `gen_qrcode` / `gen_diagram` / `gen_palette` : Visuales y utilidades.\n- `remove_background` : Eliminación de fondo IA (rmbg / bgeraser — gratis).\n- `extract_frames` / `extract_audio` : Extraccion rapida de medios.\n- `file_to_url` : Alojamiento online instantaneo.\n- `gen_edit_image_free` : Gen y edicion de imagenes gratis (~20/dia).\n- `gen_video_free` : Gen de video gratis (~5/dia).\n- `object_remover` : Eliminación de objetos por prompt (gratis, directo).\n- `image_upscaler` : Ampliación 2x/4x (gratis, directo).\n- `image_enhancer` : Mejora de imagen con IA (gratis, directo).",
120
123
  "features_pro": "**💎 Herramientas Pollinations (Premium - Automatizado con Clave):**\n- `polli_gen_image` : Gen de imágenes (Flux, Gemini) + Image-to-Image.\n- `polli_gen_video` : Text-to-video / Image-to-video (Veo, Wan...).\n- `polli_gen_audio`/`polli_stt` : Whisper STT, ElevenLabs TTS.\n- `polli_gen_music` : Motor de música generativa.\n- `polli_web_search` : Búsqueda web contectada.",
121
124
  "features_config": "- **Configuración granular**, gestión de modos y tokens, protección de costos...",
122
125
  "tiers_title": "> **Tu refill Quest Pollen:** {emoji} {tier}",
@@ -469,7 +472,7 @@
469
472
  "resources": "### 📚 Recursos\n* **Dashboard:** enter.pollinations.ai\n* **Discord:** Unete a la comunidad\n* **Plugin:** github.com/fkom13/opencode-pollinations-plugin",
470
473
  "free_models_success": "Modelos gratuitos disponibles: {models}",
471
474
  "free_models_error": "⚠️ No se pudieron obtener los modelos gratuitos.",
472
- "onboarding": "## 🌸 Bienvenido al plugin Pollinations\n\n**Acceso gratis inmediato — sin clave**\nEste plugin ofrece un entorno completo para chat, generación de código y manipulación de medios (generación de imágenes, vídeos, audio, herramientas de extracción...).\n\nSelecciona un modelo `pollinations/free/*` de la lista y empieza a chatear.\n{freeText}\n\n**🆓 Herramientas gratis bonus (sin clave):** `gen_edit_image_free` y `gen_video_free` genera/edita imágenes (~20/día) y vídeos (~5/día) de inmediato, para cualquier modelo.\n\n---\n\n## 🚀 Agentes y herramientas multimedia para desarrolladores\n\nClaude Opus, GPT-5, Gemini 3, generación de vídeo Veo y Wan, música ElevenLabs... ¡desbloquea todo el poder de la API de Pollinations!\n\nEste plugin usa un modelo **BYOK** (Bring Your Own Key): con tu propia clave API, el agente OpenCode puede interactuar directamente con las herramientas Premium y crear tus archivos en tu Workspace.\n\n**Paso 1 — Crea una cuenta gratis**\n👉 **https://enter.pollinations.ai**\n\n**Paso 2 — Genera tu clave API**\nEn la sección **API Keys** en `enter.pollinations.ai`, crea una clave **Secret** (`sk_...`).\n\n**Paso 3 — Conecta la clave**\n```bash\n/poll connect sk_tu_clave_aqui\n```\n*(¡La clave se registra de inmediato en tu entorno OpenCode, desbloqueando modelos Pro!)*\n\n---\n\n## 💰 Pollen, Niveles y Misiones\nTu **nivel** te da una recarga horaria de Pollen gratis (p. ej. 🌸 Flower ≈ 0.4/h). Además, las **Misiones** te recompensan con Pollen gratis — ¡y usar este plugin completa varias retroactivamente! Consulta `/poll quests`.\n\nCuando se agota el Pollen gratis, gastas de tu monedero ($1 ≈ 1 Pollen, sin suscripción, sin caducidad).\n\n**¿Necesitas ayuda?** Escribe `/poll help`. Discord oficial: https://discord.gg/pollinations-ai-885844321461485618"
475
+ "onboarding": "## 🌸 Bienvenido al plugin Pollinations\n\n**Acceso gratis inmediato — sin clave**\nEste plugin ofrece un entorno completo para chat, generación de código y manipulación de medios (generación de imágenes, vídeos, audio, herramientas de extracción...).\n\nSelecciona un modelo `pollinations/free/*` de la lista y empieza a chatear.\n{freeText}\n\n**🆓 Herramientas gratis bonus (sin clave):** `gen_edit_image_free`, `gen_video_free`, `object_remover`, `image_upscaler`, `image_enhancer`, `remove_background` imagen/vídeo gratis + procesamiento local.\n\n---\n\n## 🚀 Agentes y herramientas multimedia para desarrolladores\n\nClaude Opus, GPT-5, Gemini 3, generación de vídeo Veo y Wan, música ElevenLabs... ¡desbloquea todo el poder de la API de Pollinations!\n\nEste plugin usa un modelo **BYOK** (Bring Your Own Key): con tu propia clave API, el agente OpenCode puede interactuar directamente con las herramientas Premium y crear tus archivos en tu Workspace.\n\n**Paso 1 — Crea una cuenta gratis**\n👉 **https://enter.pollinations.ai**\n\n**Paso 2 — Genera tu clave API**\nEn la sección **API Keys** en `enter.pollinations.ai`, crea una clave **Secret** (`sk_...`).\n\n**Paso 3 — Conecta la clave**\n```bash\n/poll connect sk_tu_clave_aqui\n```\n*(¡La clave se registra de inmediato en tu entorno OpenCode, desbloqueando modelos Pro!)*\n\n---\n\n## 💰 Pollen, Niveles y Misiones\nTu **nivel** te da una recarga horaria de Pollen gratis (p. ej. 🌸 Flower ≈ 0.4/h). Además, las **Misiones** te recompensan con Pollen gratis — ¡y usar este plugin completa varias retroactivamente! Consulta `/poll quests`.\n\nCuando se agota el Pollen gratis, gastas de tu monedero ($1 ≈ 1 Pollen, sin suscripción, sin caducidad).\n\n**¿Necesitas ayuda?** Escribe `/poll help`. Discord oficial: https://discord.gg/pollinations-ai-885844321461485618"
473
476
  },
474
477
  "cost_guard": {
475
478
  "cost_validated_max": "💰 Costo validado (Máx teórico: {maxCost})",
@@ -104,18 +104,22 @@
104
104
  "image": "Images",
105
105
  "video": "Vidéos",
106
106
  "audio": "Audio",
107
- "text": "Texte & Chat"
107
+ "text": "Texte & Chat",
108
+ "3d": "3D",
109
+ "embedding": "Embeddings",
110
+ "realtime": "Temps réel"
108
111
  },
109
112
  "cat_title": "### {emoji} {label} ({count})",
110
113
  "enter_headers1": "| Nom | ID | Description | Flags | In | Coût Out |",
111
114
  "enter_headers2": "|-----|----|-------------|-------|----|----------|",
112
115
  "capabilities": "\n**Capacités :** `💎` Payant uniq. `💬` Chat/Reasoning `👁️` Vision/Images `🎙️` Audio `🔍` WebSearch `💻` Code",
113
- "other": "**Entrée :** `📝` Texte `🖼️` Image `🎤` Audio"
116
+ "other": "**Entrée :** `📝` Texte `🖼️` Image `🎤` Audio",
117
+ "enter_error": "⚠️ Erreur lors de la récupération des modèles Enter."
114
118
  },
115
119
  "infos": {
116
120
  "title": "## 🍯💚 POLLINATIONS OPENCODE PLUGIN 💚🍯\n\nBienvenue **{name}** sur le plugin Pollinations pour OpenCode !\n\nCe plugin vous permet de générer du code, des images, d'analyser des vidéos et d'interagir avec les meilleurs modèles d'Intelligence Artificielle de manière totalement transparente et intégrée à votre environnement de travail. Accédez aux capacités des LLMs de pointe, que ce soit via des requêtes de chat, la refonte de votre base de code, ou directement dans le terminal.",
117
121
  "features_title": "**Ce Que ce plugin vous apporte en plus ! :**",
118
- "features_free": "**🛠️ Outils Gratuits Intégrés (Toujours disponibles) :**\n- `gen_qrcode` / `gen_diagram` / `gen_palette` : Outils visuels et dev.\n- `remove_background` : Détourage d'image natif.\n- `extract_frames` / `extract_audio` : Extraction rapide de contenu média.\n- `file_to_url` : Hébergement instantané de vos fichiers locaux en ligne.\n- `gen_edit_image_free` : Génération & édition d'images gratuite (~20/jour).\n- `gen_video_free` : Génération vidéo gratuite (~5/jour).\n- `object_remover` : Suppression dobjets par prompt (gratuit, direct).\n- `image_upscaler` : Agrandissement 2x/4x (gratuit, direct).\n- `image_enhancer` : Amélioration IA dimage (gratuit, direct).",
122
+ "features_free": "**🛠️ Outils Gratuits Intégrés (Toujours disponibles) :**\n- `gen_qrcode` / `gen_diagram` / `gen_palette` : Outils visuels et dev.\n- `remove_background` : Détourage IA (rmbg / bgeraser — gratuit).\n- `extract_frames` / `extract_audio` : Extraction rapide de contenu média.\n- `file_to_url` : Hébergement instantané de vos fichiers locaux en ligne.\n- `gen_edit_image_free` : Génération & édition d'images gratuite (~20/jour).\n- `gen_video_free` : Génération vidéo gratuite (~5/jour).\n- `object_remover` : Suppression d'objets par prompt (gratuit, direct).\n- `image_upscaler` : Agrandissement 2x/4x (gratuit, direct).\n- `image_enhancer` : Amélioration IA d'image (gratuit, direct).",
119
123
  "features_pro": "**💎 Outils Pollinations (Premium - Automatisés avec votre Clé) :**\n- `polli_gen_image` : Génération d'images (Flux, Seedream, Gemini) + support Image-to-Image.\n- `polli_gen_video` : Génération vidéo text-to-video / image-to-video (Veo, Wan, LTX...).\n- `polli_gen_audio`/`polli_stt` : Transcription Whisper, Text-to-Speech ElevenLabs.\n- `polli_gen_music` : Moteur de musique générative.\n- `polli_web_search` : Recherche connectée pour étendre la base de contexte de l'agent.",
120
124
  "features_config": "- **Une configuration granulaire**, des modes de gestions de vos tokens et de vos outils, de la sécurisation des coûts des outils consommant du pollen...",
121
125
  "tiers_title": "> **Votre refill Quest Pollen :** {emoji} {tier}",
@@ -468,7 +472,7 @@
468
472
  "resources": "### 📚 Ressources\n* **Dashboard:** enter.pollinations.ai\n* **Discord:** Rejoindre la communauté\n* **Plugin:** github.com/fkom13/opencode-pollinations-plugin",
469
473
  "free_models_success": "Modèles gratuits disponibles : {models}",
470
474
  "free_models_error": "⚠️ Impossible de récupérer la liste des modèles gratuits.",
471
- "onboarding": "## 🌸 Bienvenue sur le plugin Pollinations\n\n**Accès gratuit immédiat — aucune clé requise**\nCe plugin offre un environnement complet pour le chat, la génération de code et la manipulation média (génération d'images, vidéos, audio, outils d'extraction...).\n\nSélectionnez un modèle `pollinations/free/*` dans la liste et commencez à discuter.\n{freeText}\n\n**🆓 Outils gratuits bonus (sans clé) :** `gen_edit_image_free` et `gen_video_free` générez/éditez des images (~20/jour) et des vidéos (~5/jour) immédiatement, pour n'importe quel modèle.\n\n---\n\n## 🚀 Agents et outils multimédias pour développeurs\n\nClaude Opus, GPT-5, Gemini 3, génération vidéo Veo & Wan, musique ElevenLabs... libérez toute la puissance de l'API Pollinations !\n\nCe plugin adopte un modèle **BYOK** (Bring Your Own Key) : avec votre propre clé API, l'agent OpenCode peut interagir directement avec les outils Premium et créer vos fichiers média dans votre Workspace.\n\n**Étape 1 — Créez un compte gratuit**\n👉 **https://enter.pollinations.ai**\n\n**Étape 2 — Générez votre clé API**\nDans la section **API Keys** sur `enter.pollinations.ai`, créez une clé **Secret** (`sk_...`).\n\n**Étape 3 — Connectez la clé**\n```bash\n/poll connect sk_votre_cle_ici\n```\n*(La clé est immédiatement enregistrée dans votre environnement OpenCode, débloquant les modèles Pro !)*\n\n---\n\n## 💰 Pollen, Paliers & Quêtes\nVotre **palier** vous donne une recharge horaire de Pollen gratuit (ex. 🌸 Flower ≈ 0,4/h). En plus, les **Quêtes** vous récompensent en Pollen gratuit — et utiliser simplement ce plugin en complète plusieurs rétroactivement ! Consultez `/poll quests`.\n\nUne fois le Pollen gratuit épuisé, vous puisez dans votre wallet (1 $ ≈ 1 Pollen, sans abonnement, sans expiration).\n\n**Besoin d'aide ?** Tapez `/poll help`. Discord officiel : https://discord.gg/pollinations-ai-885844321461485618"
475
+ "onboarding": "## 🌸 Bienvenue sur le plugin Pollinations\n\n**Accès gratuit immédiat — aucune clé requise**\nCe plugin offre un environnement complet pour le chat, la génération de code et la manipulation média (génération d'images, vidéos, audio, outils d'extraction...).\n\nSélectionnez un modèle `pollinations/free/*` dans la liste et commencez à discuter.\n{freeText}\n\n**🆓 Outils gratuits bonus (sans clé) :** `gen_edit_image_free`, `gen_video_free`, `object_remover`, `image_upscaler`, `image_enhancer`, `remove_background` image/vidéo gratuits + traitement local.\n\n---\n\n## 🚀 Agents et outils multimédias pour développeurs\n\nClaude Opus, GPT-5, Gemini 3, génération vidéo Veo & Wan, musique ElevenLabs... libérez toute la puissance de l'API Pollinations !\n\nCe plugin adopte un modèle **BYOK** (Bring Your Own Key) : avec votre propre clé API, l'agent OpenCode peut interagir directement avec les outils Premium et créer vos fichiers média dans votre Workspace.\n\n**Étape 1 — Créez un compte gratuit**\n👉 **https://enter.pollinations.ai**\n\n**Étape 2 — Générez votre clé API**\nDans la section **API Keys** sur `enter.pollinations.ai`, créez une clé **Secret** (`sk_...`).\n\n**Étape 3 — Connectez la clé**\n```bash\n/poll connect sk_votre_cle_ici\n```\n*(La clé est immédiatement enregistrée dans votre environnement OpenCode, débloquant les modèles Pro !)*\n\n---\n\n## 💰 Pollen, Paliers & Quêtes\nVotre **palier** vous donne une recharge horaire de Pollen gratuit (ex. 🌸 Flower ≈ 0,4/h). En plus, les **Quêtes** vous récompensent en Pollen gratuit — et utiliser simplement ce plugin en complète plusieurs rétroactivement ! Consultez `/poll quests`.\n\nUne fois le Pollen gratuit épuisé, vous puisez dans votre wallet (1 $ ≈ 1 Pollen, sans abonnement, sans expiration).\n\n**Besoin d'aide ?** Tapez `/poll help`. Discord officiel : https://discord.gg/pollinations-ai-885844321461485618"
472
476
  },
473
477
  "cost_guard": {
474
478
  "cost_validated_max": "💰 Coût validé (Max théorique: {maxCost})",
@@ -104,19 +104,22 @@
104
104
  "image": "Immagini",
105
105
  "video": "Video",
106
106
  "audio": "Audio",
107
- "text": "Testo e Chat"
107
+ "text": "Testo e Chat",
108
+ "3d": "3D",
109
+ "embedding": "Embeddings",
110
+ "realtime": "Realtime"
108
111
  },
109
112
  "cat_title": "### {emoji} {label} ({count})",
110
113
  "enter_headers1": "| Nome | ID | Descrizione | Flags | In | Costo Out |",
111
114
  "enter_headers2": "|------|----|-------------|-------|----|-----------|",
112
115
  "capabilities": "\n**Capabilities :** `💎` Paid-only `💬` Chat/Reasoning `👁️` Vision/Images `🎙️` Audio `🔍` Search `💻` Code",
113
116
  "other": "**Input :** `📝` Text `🖼️` Image `🎤` Audio",
114
- "enter_error": "⚠️ Errore durante il recupero dei modelli premium."
117
+ "enter_error": "⚠️ Errore nel recupero dei modelli Enter."
115
118
  },
116
119
  "infos": {
117
120
  "title": "## 🍯💚 PLUGIN POLLINATIONS OPENCODE 💚🍯\n\nBenvenuto **{name}** nel plugin OpenCode di Pollinations!\n\nQuesto plugin ti consente di generare codice, immagini, analizzare video e interagire senza problemi con i migliori modelli di IA. Accedi agli LLM più avanzati tramite chat, refactoring o terminale.",
118
121
  "features_title": "**Cosa ti offre questo plugin! :**",
119
- "features_free": "**🛠️ Strumenti Gratuiti (Sempre Disponibili):**\n- `gen_qrcode` / `gen_diagram` / `gen_palette` : Visual e dev.\n- `remove_background` : Rimozione sfondo nativa.\n- `extract_frames` / `extract_audio` : Estrazione media rapida.\n- `file_to_url` : Hosting online istantaneo.\n- `gen_edit_image_free` : Gen e modifica immagini gratis (~20/giorno).\n- `gen_video_free` : Gen video gratis (~5/giorno).\n- `object_remover` : Suppression d’objets par prompt (gratuit, direct).\n- `image_upscaler` : Agrandissement 2x/4x (gratuit, direct).\n- `image_enhancer` : Amélioration IA d’image (gratuit, direct).",
122
+ "features_free": "**🛠️ Strumenti Gratuiti (Sempre Disponibili):**\n- `gen_qrcode` / `gen_diagram` / `gen_palette` : Visual e dev.\n- `remove_background` : Rimozione sfondo IA (rmbg / bgeraser — gratuito).\n- `extract_frames` / `extract_audio` : Estrazione media rapida.\n- `file_to_url` : Hosting online istantaneo.\n- `gen_edit_image_free` : Gen e modifica immagini gratis (~20/giorno).\n- `gen_video_free` : Gen video gratis (~5/giorno).\n- `object_remover` : Rimozione oggetti tramite prompt (gratuito, diretto).\n- `image_upscaler` : Upscale 2x/4x (gratuito, diretto).\n- `image_enhancer` : Miglioramento immagini IA (gratuito, diretto).",
120
123
  "features_pro": "**💎 Strumenti Pollinations (Premium - Automatizzato con Chiave):**\n- `polli_gen_image` : Gen immagine (Flux, Gemini) + Image-to-Image.\n- `polli_gen_video` : Text-to-Video / Image-to-Video (Veo, Wan...).\n- `polli_gen_audio`/`polli_stt` : Whisper STT, ElevenLabs TTS.\n- `polli_gen_music` : Motore di musica generativa.\n- `polli_web_search` : Ricerca web connessa.",
121
124
  "features_config": "- **Configurazione granulare**, gestione di modalità/token, protezioni costi...",
122
125
  "tiers_title": "> **Il tuo refill Quest Pollen:** {emoji} {tier}",
@@ -469,7 +472,7 @@
469
472
  "resources": "### 📚 Risorse\n* **Dashboard:** enter.pollinations.ai\n* **Discord:** Unisciti alla community\n* **Plugin:** github.com/fkom13/opencode-pollinations-plugin",
470
473
  "free_models_success": "Modelli disponibili: {models}",
471
474
  "free_models_error": "⚠️ Impossibile recuperare i modelli gratuiti.",
472
- "onboarding": "## 🌸 Benvenuto nel plugin Pollinations\n\n**Accesso gratuito immediato — nessuna chiave richiesta**\nQuesto plugin offre un ambiente completo per chat, generazione di codice e manipolazione multimediale (generazione di immagini, video, audio, strumenti di estrazione...).\n\nSeleziona un modello `pollinations/free/*` dall'elenco e inizia a chattare.\n{freeText}\n\n**🆓 Strumenti gratuiti bonus (senza chiave):** `gen_edit_image_free` e `gen_video_free` — genera/modifica immagini (~20/giorno) e video (~5/giorno) subito, per qualsiasi modello.\n\n---\n\n## 🚀 Agenti e strumenti multimediali per sviluppatori\n\nClaude Opus, GPT-5, Gemini 3, generazione video Veo e Wan, musica ElevenLabs... sblocca tutta la potenza dell'API Pollinations!\n\nQuesto plugin usa un modello **BYOK** (Bring Your Own Key): con la tua chiave API, l'agente OpenCode può interagire direttamente con gli strumenti Premium e creare i tuoi file multimediali nel tuo Workspace.\n\n**Passo 1 — Crea un account gratuito**\n👉 **https://enter.pollinations.ai**\n\n**Passo 2 — Genera la tua chiave API**\nNella sezione **API Keys** su `enter.pollinations.ai`, crea una chiave **Secret** (`sk_...`).\n\n**Passo 3 — Connetti la chiave**\n```bash\n/poll connect sk_la_tua_chiave\n```\n*(La chiave viene registrata subito nel tuo ambiente OpenCode, sbloccando i modelli Pro!)*\n\n---\n\n## 💰 Pollen, Livelli e Quest\nIl tuo **livello** ti dà una ricarica oraria di Pollen gratuito (es. 🌸 Flower ≈ 0,4/h). Inoltre, le **Quest** ti premiano con Pollen gratuito — e usare semplicemente questo plugin ne completa diverse retroattivamente! Controlla `/poll quests`.\n\nUna volta esaurito il Pollen gratuito, spendi dal tuo wallet ($1 ≈ 1 Pollen, senza abbonamento, senza scadenza).\n\n**Serve aiuto?** Digita `/poll help`. Discord ufficiale: https://discord.gg/pollinations-ai-885844321461485618"
475
+ "onboarding": "## 🌸 Benvenuto nel plugin Pollinations\n\n**Accesso gratuito immediato — nessuna chiave richiesta**\nQuesto plugin offre un ambiente completo per chat, generazione di codice e manipolazione multimediale (generazione di immagini, video, audio, strumenti di estrazione...).\n\nSeleziona un modello `pollinations/free/*` dall'elenco e inizia a chattare.\n{freeText}\n\n**🆓 Strumenti gratuiti bonus (senza chiave):** `gen_edit_image_free`, `gen_video_free`, `object_remover`, `image_upscaler`, `image_enhancer`, `remove_background` immagine/video gratis + elaborazione locale.\n\n---\n\n## 🚀 Agenti e strumenti multimediali per sviluppatori\n\nClaude Opus, GPT-5, Gemini 3, generazione video Veo e Wan, musica ElevenLabs... sblocca tutta la potenza dell'API Pollinations!\n\nQuesto plugin usa un modello **BYOK** (Bring Your Own Key): con la tua chiave API, l'agente OpenCode può interagire direttamente con gli strumenti Premium e creare i tuoi file multimediali nel tuo Workspace.\n\n**Passo 1 — Crea un account gratuito**\n👉 **https://enter.pollinations.ai**\n\n**Passo 2 — Genera la tua chiave API**\nNella sezione **API Keys** su `enter.pollinations.ai`, crea una chiave **Secret** (`sk_...`).\n\n**Passo 3 — Connetti la chiave**\n```bash\n/poll connect sk_la_tua_chiave\n```\n*(La chiave viene registrata subito nel tuo ambiente OpenCode, sbloccando i modelli Pro!)*\n\n---\n\n## 💰 Pollen, Livelli e Quest\nIl tuo **livello** ti dà una ricarica oraria di Pollen gratuito (es. 🌸 Flower ≈ 0,4/h). Inoltre, le **Quest** ti premiano con Pollen gratuito — e usare semplicemente questo plugin ne completa diverse retroattivamente! Controlla `/poll quests`.\n\nUna volta esaurito il Pollen gratuito, spendi dal tuo wallet ($1 ≈ 1 Pollen, senza abbonamento, senza scadenza).\n\n**Serve aiuto?** Digita `/poll help`. Discord ufficiale: https://discord.gg/pollinations-ai-885844321461485618"
473
476
  },
474
477
  "cost_guard": {
475
478
  "cost_validated_max": "💰 Costo convalidato (Max teorico: {maxCost})",
@@ -104,18 +104,22 @@
104
104
  "image": "图像",
105
105
  "video": "视频",
106
106
  "audio": "音频",
107
- "text": "文本与聊天"
107
+ "text": "文本与聊天",
108
+ "3d": "3D",
109
+ "embedding": "嵌入",
110
+ "realtime": "实时"
108
111
  },
109
112
  "cat_title": "### {emoji} {label} ({count})",
110
113
  "enter_headers1": "| 名称 | ID | 描述 | 标志 | 输入 | 输出费用 |",
111
114
  "enter_headers2": "|------|----|-------------|-------|----|----------|",
112
115
  "capabilities": "\n**能力:** `💎` 仅付费 `💬` 聊天/推理 `👁️` 视觉/图像 `🎙️` 音频 `🔍` 搜索 `💻` 代码",
113
- "other": "**输入:** `📝` 文本 `🖼️` 图像 `🎤` 音频"
116
+ "other": "**输入:** `📝` 文本 `🖼️` 图像 `🎤` 音频",
117
+ "enter_error": "⚠️ 获取 Enter 模型时出错。"
114
118
  },
115
119
  "infos": {
116
120
  "title": "## 🍯💚 POLLINATIONS OPENCODE 插件 💚🍯\n\n欢迎 **{name}** 使用 Pollinations OpenCode 插件!\n\n本插件让你能够在开发环境中无缝生成代码、图像、分析视频,并与顶级 AI 模型交互。通过聊天、重构或终端访问最先进的 LLM。",
117
121
  "features_title": "**本插件为你带来的功能:**",
118
- "features_free": "**🛠️ 免费工具 (始终可用):**\n- `gen_qrcode` / `gen_diagram` / `gen_palette` : 视觉和开发工具.\n- `remove_background` : 原生背景移除.\n- `extract_frames` / `extract_audio` : 快速媒体提取.\n- `file_to_url` : 即时在线托管.\n- `gen_edit_image_free` : 免费图像生成和编辑 (~20/天).\n- `gen_video_free` : 免费视频生成 (~5/天).\n- `object_remover` : Suppression d’objets par prompt (gratuit, direct).\n- `image_upscaler` : Agrandissement 2x/4x (gratuit, direct).\n- `image_enhancer` : Amélioration IA d’image (gratuit, direct).",
122
+ "features_free": "**🛠️ 免费工具 (始终可用):**\n- `gen_qrcode` / `gen_diagram` / `gen_palette` : 视觉和开发工具.\n- `remove_background` : AI 背景移除(rmbg / bgeraser — 免费)。\n- `extract_frames` / `extract_audio` : 快速媒体提取.\n- `file_to_url` : 即时在线托管.\n- `gen_edit_image_free` : 免费图像生成和编辑 (~20/天).\n- `gen_video_free` : 免费视频生成 (~5/天).\n- `object_remover` : 按提示词移除对象(免费,直连)。\n- `image_upscaler` : 放大 2x/4x(免费,直连)。\n- `image_enhancer` : AI 图像增强(免费,直连)。",
119
123
  "features_pro": "**💎 Pollinations 工具 (高级 - 使用密钥自动化):**\n- `polli_gen_image`:图像生成 (Flux, Seedream, Gemini) + 图生图。\n- `polli_gen_video`:文生视频 / 图生视频 (Veo, Wan, LTX...)。\n- `polli_gen_audio`/`polli_stt`:Whisper 语音转文字, ElevenLabs 文字转语音。\n- `polli_gen_music`:生成式音乐引擎。\n- `polli_web_search`:联网搜索。",
120
124
  "features_config": "- **精细化配置**、模式与令牌管理、工具费用保护...",
121
125
  "tiers_title": "> **你的 Quest Pollen 补充:** {emoji} {tier}",
@@ -468,7 +472,7 @@
468
472
  "resources": "### 📚 资源\n* **Dashboard:** enter.pollinations.ai\n* **Discord:** 加入社区\n* **Plugin:** github.com/fkom13/opencode-pollinations-plugin",
469
473
  "free_models_success": "可用免费模型:{models}",
470
474
  "free_models_error": "⚠️ 无法获取免费模型。",
471
- "onboarding": "## 🌸 欢迎使用 Pollinations 插件\n\n**即时免费访问 — 无需密钥**\n本插件提供完整的聊天、代码生成和媒体处理环境 (图像、视频、音频生成、提取工具...)。\n\n从列表中选择一个 `pollinations/free/*` 模型并开始聊天。\n{freeText}\n\n---\n\n## 🚀 为开发者集成的多媒体代理和工具\n\nClaude Opus, GPT-5, Gemini 3, Veo 和 Wan 视频生成, ElevenLabs 音乐... 释放 Pollinations API 的全部威力!\n\n本插件采用 **BYOK** (自带密钥) 模式:通过使用你自己的 API 密钥,OpenCode 代理获得直接与高级工具交互的能力,在你的工作区创建多媒体文件。\n\n**第 1 步 — 创建账户,获赠 $10!**\n通过此链接支持本插件:\n👉 **https://enter.pollinations.ai/authorize?redirect_url=https://github.com/fkom13/opencode-pollinations-plugin**\n\n**第 2 步 — 生成你的 API 密钥**\n在 `enter.pollinations.ai` 的 **API Keys** 部分,创建一个 **Secret** 密钥 (`sk_...`)。\n\n**第 3 步 — 连接密钥**\n```bash\n/poll connect sk_your_key_here\n```\n*(密钥会立即注册到你的 OpenCode 环境,解锁 Pro 模型!)*\n\n---\n\n## 💰 Pollen 系统与任务\n现在 Pollen 主要通过完成**任务**来赚取 — 仅仅使用本插件就能追溯性地完成多个任务。在[仪表盘](https://enter.pollinations.ai)查看并领取你的免费 Pollen。\n\n你的等级提供每小时免费的 Pollen 充值额度,用于这些高级服务。免费额度耗尽后,你将从钱包消费 Pollen ($1 ≈ 1 Pollen,无订阅,无过期)。\n\n**需要帮助?**\n- 输入 `/poll help` 查看命令列表。\n- 官方 Discord:https://discord.gg/pollinations-ai-885844321461485618"
475
+ "onboarding": "## 🌸 欢迎使用 Pollinations 插件\n\n**即时免费访问 — 无需密钥**\n本插件提供完整的聊天、代码生成和媒体处理环境 (图像、视频、音频生成、提取工具...)。\n\n从列表中选择一个 `pollinations/free/*` 模型并开始聊天。\n{freeText}\n\n**🆓 额外免费工具(无需密钥):** `gen_edit_image_free`、`gen_video_free`、`object_remover`、`image_upscaler`、`image_enhancer`、`remove_background` — 免费图像/视频 + 本地处理工具。\n\n---\n\n## 🚀 为开发者集成的多媒体代理和工具\n\nClaude Opus, GPT-5, Gemini 3, Veo 和 Wan 视频生成, ElevenLabs 音乐... 释放 Pollinations API 的全部威力!\n\n本插件采用 **BYOK** (自带密钥) 模式:通过使用你自己的 API 密钥,OpenCode 代理获得直接与高级工具交互的能力,在你的工作区创建多媒体文件。\n\n**第 1 步 — 创建账户,获赠 $10!**\n通过此链接支持本插件:\n👉 **https://enter.pollinations.ai/authorize?redirect_url=https://github.com/fkom13/opencode-pollinations-plugin**\n\n**第 2 步 — 生成你的 API 密钥**\n在 `enter.pollinations.ai` 的 **API Keys** 部分,创建一个 **Secret** 密钥 (`sk_...`)。\n\n**第 3 步 — 连接密钥**\n```bash\n/poll connect sk_your_key_here\n```\n*(密钥会立即注册到你的 OpenCode 环境,解锁 Pro 模型!)*\n\n---\n\n## 💰 Pollen 系统与任务\n现在 Pollen 主要通过完成**任务**来赚取 — 仅仅使用本插件就能追溯性地完成多个任务。在[仪表盘](https://enter.pollinations.ai)查看并领取你的免费 Pollen。\n\n你的等级提供每小时免费的 Pollen 充值额度,用于这些高级服务。免费额度耗尽后,你将从钱包消费 Pollen ($1 ≈ 1 Pollen,无订阅,无过期)。\n\n**需要帮助?**\n- 输入 `/poll help` 查看命令列表。\n- 官方 Discord:https://discord.gg/pollinations-ai-885844321461485618"
472
476
  },
473
477
  "cost_guard": {
474
478
  "cost_validated_max": "💰 费用已验证 (理论最大值:{maxCost})",
@@ -854,6 +854,9 @@ export async function handleModelsCommand(args) {
854
854
  { cat: 'video', emoji: '🎬', label: t('commands.models.cats.video') },
855
855
  { cat: 'audio', emoji: '🔊', label: t('commands.models.cats.audio') },
856
856
  { cat: 'text', emoji: '📝', label: t('commands.models.cats.text') },
857
+ { cat: '3d', emoji: '🧊', label: t('commands.models.cats.3d') },
858
+ { cat: 'embedding', emoji: '🔢', label: t('commands.models.cats.embedding') },
859
+ { cat: 'realtime', emoji: '⚡', label: t('commands.models.cats.realtime') },
857
860
  ];
858
861
  for (const { cat, emoji, label } of categories) {
859
862
  if (filter && filter !== cat)
@@ -153,6 +153,9 @@ class ModelRegistryImpl {
153
153
  video: this.list('video').length,
154
154
  audio: this.list('audio').length,
155
155
  text: this.list('text').length,
156
+ '3d': this.list('3d').length,
157
+ embedding: this.list('embedding').length,
158
+ realtime: this.list('realtime').length,
156
159
  };
157
160
  }
158
161
  }
@@ -9,8 +9,9 @@ import type { PollinationsModel } from './types.js';
9
9
  /**
10
10
  * Fetch all models from the Pollinations API.
11
11
  *
12
- * - /image/models returns both image AND video models (sorted by output_modalities)
13
- * - /audio/models returns audio models (TTS, STT, music)
12
+ * Primary: unified /models (all categories including 3d / embedding / realtime).
13
+ * Fallback per-modality endpoints if unified is empty/unavailable.
14
+ * Enriched with /v1/models structural fields + model-stats averages.
14
15
  *
15
16
  * @param apiKey - Bearer token for authenticated endpoints
16
17
  * @returns Array of unified PollinationsModel objects
@@ -38,17 +38,31 @@ function fetchJson(url, headers = {}) {
38
38
  }
39
39
  // ─── Category Detection ──────────────────────────────────────────────────
40
40
  function detectCategory(raw) {
41
+ // Prefer explicit type/category from unified /models endpoint
42
+ const explicit = String(raw.type || raw.category || raw.output_modality || '').toLowerCase();
43
+ if (explicit === 'video' || explicit === 'image' || explicit === 'audio' || explicit === 'text'
44
+ || explicit === '3d' || explicit === 'embedding' || explicit === 'realtime') {
45
+ return explicit;
46
+ }
41
47
  const outputs = raw.output_modalities || [];
42
48
  if (outputs.includes('video'))
43
49
  return 'video';
50
+ if (outputs.includes('3d') || outputs.includes('mesh'))
51
+ return '3d';
52
+ if (outputs.includes('embedding') || outputs.includes('embeddings'))
53
+ return 'embedding';
44
54
  if (outputs.includes('image'))
45
55
  return 'image';
46
56
  if (outputs.includes('audio'))
47
57
  return 'audio';
48
- // Correctif : Forcer les modèles Speech-to-Text en audio même si leur sortie API est 'text'
58
+ if (outputs.includes('realtime'))
59
+ return 'realtime';
60
+ // Force STT models into audio even when output is text
49
61
  const nameStr = (raw.name || raw.id || '').toLowerCase();
50
62
  if (nameStr.includes('whisper') || nameStr.includes('scribe'))
51
63
  return 'audio';
64
+ if (nameStr.includes('embed'))
65
+ return 'embedding';
52
66
  return 'text';
53
67
  }
54
68
  function detectOutputType(raw) {
@@ -92,8 +106,9 @@ function mapRawToModel(raw, fallbackCategory, averageCost) {
92
106
  /**
93
107
  * Fetch all models from the Pollinations API.
94
108
  *
95
- * - /image/models returns both image AND video models (sorted by output_modalities)
96
- * - /audio/models returns audio models (TTS, STT, music)
109
+ * Primary: unified /models (all categories including 3d / embedding / realtime).
110
+ * Fallback per-modality endpoints if unified is empty/unavailable.
111
+ * Enriched with /v1/models structural fields + model-stats averages.
97
112
  *
98
113
  * @param apiKey - Bearer token for authenticated endpoints
99
114
  * @returns Array of unified PollinationsModel objects
@@ -106,9 +121,13 @@ export async function fetchAllModels(apiKey) {
106
121
  const results = [];
107
122
  const seen = new Set();
108
123
  const endpoints = [
124
+ { url: `https://${API_BASE}/models`, fallbackCategory: 'text' },
109
125
  { url: `https://${API_BASE}/image/models`, fallbackCategory: 'image' },
126
+ { url: `https://${API_BASE}/video/models`, fallbackCategory: 'video' },
110
127
  { url: `https://${API_BASE}/audio/models`, fallbackCategory: 'audio' },
111
128
  { url: `https://${API_BASE}/text/models`, fallbackCategory: 'text' },
129
+ { url: `https://${API_BASE}/3d/models`, fallbackCategory: '3d' },
130
+ { url: `https://${API_BASE}/embeddings/models`, fallbackCategory: 'embedding' },
112
131
  ];
113
132
  const statsPromise = fetchJson('https://enter.pollinations.ai/api/model-stats', headers).catch(() => ({ data: [] }));
114
133
  const openapiPromise = fetchJson('https://enter.pollinations.ai/api/docs/open-api/generate-schema', headers).catch(() => ({}));
@@ -168,7 +187,8 @@ export async function fetchAllModels(apiKey) {
168
187
  }
169
188
  log(`[ModelFetcher] Parsed ${list.length} models from ${res.url}`);
170
189
  }
171
- log(`[ModelFetcher] Total: ${results.length} models (${results.filter(m => m.category === 'image').length} image, ${results.filter(m => m.category === 'video').length} video, ${results.filter(m => m.category === 'audio').length} audio, ${results.filter(m => m.category === 'text').length} text)`);
190
+ const count = (c) => results.filter(m => m.category === c).length;
191
+ log(`[ModelFetcher] Total: ${results.length} models (image=${count('image')} video=${count('video')} audio=${count('audio')} text=${count('text')} 3d=${count('3d')} emb=${count('embedding')} rt=${count('realtime')})`);
172
192
  // --- ENRICH MODELS WITH OPENAPI CONSTRAINTS ---
173
193
  try {
174
194
  const videoParams = openapiRaw?.paths?.['/video/{prompt}']?.get?.parameters || [];
@@ -4,7 +4,7 @@
4
4
  * Single source of truth for all Pollinations model metadata.
5
5
  * Replaces the fragmented hardcoded constants in shared.ts.
6
6
  */
7
- export type ModelCategory = 'image' | 'video' | 'audio' | 'text';
7
+ export type ModelCategory = 'image' | 'video' | 'audio' | 'text' | '3d' | 'embedding' | 'realtime';
8
8
  export interface ModelPricing {
9
9
  currency: string;
10
10
  completionImageTokens?: number;
@@ -241,23 +241,7 @@ export async function handleChatCompletion(req, res, bodyRaw) {
241
241
  try {
242
242
  const body = JSON.parse(bodyRaw);
243
243
  const config = loadConfig();
244
- // DEBUG: Trace Config State for Hot Reload verification
245
- log(`[Proxy Request] Config Loaded. Mode: ${config.mode}, HasKey: ${!!config.apiKey}, KeyLength: ${config.apiKey ? config.apiKey.length : 0}`);
246
- // TEMPORARY DIAGNOSTIC: Capture multimodal content format from OpenCode
247
- if (body.messages && body.messages.length > 0) {
248
- const lastUserMsg = [...body.messages].reverse().find((m) => m.role === 'user');
249
- if (lastUserMsg) {
250
- const contentType = typeof lastUserMsg.content;
251
- const isArray = Array.isArray(lastUserMsg.content);
252
- log(`[VISION DEBUG] Last user msg content type: ${contentType}, isArray: ${isArray}`);
253
- if (isArray) {
254
- log(`[VISION DEBUG] Content parts: ${JSON.stringify(lastUserMsg.content.map((c) => ({ type: c.type, hasText: !!c.text, hasImageUrl: !!c.image_url, hasImage: !!c.image })))}`);
255
- }
256
- else if (contentType === 'string') {
257
- log(`[VISION DEBUG] String content (first 200 chars): ${lastUserMsg.content.substring(0, 200)}`);
258
- }
259
- }
260
- }
244
+ log(`[Proxy Request] Mode: ${config.mode}, HasKey: ${!!config.apiKey}`);
261
245
  // 0. COMMAND HANDLING
262
246
  if (body.messages && body.messages.length > 0) {
263
247
  const lastMsg = body.messages[body.messages.length - 1];
@@ -1,4 +1,14 @@
1
1
  import { DetailedUsageEntry } from './pollinations-api.js';
2
+ interface ResetInfo {
3
+ nextReset: Date;
4
+ lastReset: Date;
5
+ timeUntilReset: number;
6
+ timeSinceReset: number;
7
+ resetHour: number;
8
+ resetMinute: number;
9
+ resetSecond: number;
10
+ progressPercent: number;
11
+ }
2
12
  export interface QuotaStatus {
3
13
  tierRemaining: number;
4
14
  tierUsed: number;
@@ -15,10 +25,24 @@ export interface QuotaStatus {
15
25
  errorType?: 'auth_limited' | 'network' | 'unknown';
16
26
  }
17
27
  export declare function fetchUsageForPeriod(apiKey: string, lastReset: Date): Promise<DetailedUsageEntry[]>;
28
+ /** Map hourly refill amount → display meta (exported for unit tests). */
29
+ export declare function tierMetaForAllowance(allowance: number): {
30
+ label: string;
31
+ emoji: string;
32
+ };
33
+ /** Known hourly refill ladder (read-only, for tests / UI). */
34
+ export declare function getKnownRefills(): ReadonlyArray<{
35
+ pollen: number;
36
+ emoji: string;
37
+ label: string;
38
+ }>;
18
39
  export declare function getQuotaStatus(forceRefresh?: boolean): Promise<QuotaStatus>;
40
+ /** Next top-of-hour UTC reset window (exported for unit tests). */
41
+ export declare function calculateResetInfo(): ResetInfo;
19
42
  export declare function formatQuotaForToast(quota: QuotaStatus): string;
20
43
  export declare function fetchQuestStash(apiKey: string): Promise<{
21
44
  questStash: number;
22
45
  claimedQuestTier: number;
23
46
  tierConsumedSinceClaim: number;
24
47
  }>;
48
+ export {};
@@ -138,13 +138,18 @@ function deduceAllowanceFromUsage(usage) {
138
138
  const match = KNOWN_REFILLS.slice().reverse().find(r => r.pollen <= maxHourlyTier + 0.02);
139
139
  return match ? match.pollen : 0;
140
140
  }
141
- function tierMetaForAllowance(allowance) {
141
+ /** Map hourly refill amount → display meta (exported for unit tests). */
142
+ export function tierMetaForAllowance(allowance) {
142
143
  const match = KNOWN_REFILLS.find(r => r.pollen === allowance)
143
144
  || KNOWN_REFILLS.findLast(r => r.pollen <= allowance);
144
145
  return match
145
146
  ? { label: match.label, emoji: match.emoji }
146
147
  : { label: 'unknown', emoji: '❓' };
147
148
  }
149
+ /** Known hourly refill ladder (read-only, for tests / UI). */
150
+ export function getKnownRefills() {
151
+ return KNOWN_REFILLS;
152
+ }
148
153
  // === MAIN QUOTA FUNCTION ===
149
154
  export async function getQuotaStatus(forceRefresh = false) {
150
155
  const config = loadConfig();
@@ -270,7 +275,8 @@ function fetchAPI(endpoint, apiKey) {
270
275
  req.end();
271
276
  });
272
277
  }
273
- function calculateResetInfo() {
278
+ /** Next top-of-hour UTC reset window (exported for unit tests). */
279
+ export function calculateResetInfo() {
274
280
  const now = new Date();
275
281
  const nextReset = new Date(Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate(), now.getUTCHours() + 1, 0, 0, 0));
276
282
  const lastReset = new Date(nextReset.getTime() - ONE_HOUR_MS);
package/package.json CHANGED
@@ -1,13 +1,28 @@
1
1
  {
2
2
  "name": "opencode-pollinations-plugin",
3
3
  "displayName": "Pollinations",
4
- "version": "6.4.7",
5
- "description": "Native Pollinations.ai Provider Plugin for OpenCode",
6
- "publisher": "pollinations",
4
+ "version": "6.4.9",
5
+ "description": "Native Pollinations.ai Provider Plugin for OpenCode — free & premium AI models, media tools, quests, cost guards",
6
+ "author": "fkom13",
7
+ "license": "MIT",
8
+ "keywords": [
9
+ "opencode",
10
+ "pollinations",
11
+ "ai",
12
+ "plugin",
13
+ "image-generation",
14
+ "video-generation",
15
+ "llm",
16
+ "pollen"
17
+ ],
7
18
  "repository": {
8
19
  "type": "git",
9
20
  "url": "git+https://github.com/fkom13/opencode-pollinations-plugin.git"
10
21
  },
22
+ "bugs": {
23
+ "url": "https://github.com/fkom13/opencode-pollinations-plugin/issues"
24
+ },
25
+ "homepage": "https://github.com/fkom13/opencode-pollinations-plugin#readme",
11
26
  "type": "module",
12
27
  "exports": {
13
28
  ".": {
@@ -21,35 +36,21 @@
21
36
  "main": "./dist/index.js",
22
37
  "types": "./dist/index.d.ts",
23
38
  "engines": {
24
- "vscode": "^1.80.0"
39
+ "node": ">=18"
25
40
  },
26
- "activationEvents": [
27
- "onStartupFinished"
28
- ],
29
41
  "scripts": {
30
42
  "build": "tsc",
31
- "test": "node scripts/tests/test-suite.cjs",
43
+ "test": "npm run build && node scripts/tests/test-suite.cjs",
44
+ "test:unit": "node scripts/tests/test-suite.cjs",
45
+ "test:i18n": "node scripts/tests/test-i18n.cjs",
32
46
  "prepare": "npm run build",
33
- "package": "npx vsce package"
34
- },
35
- "contributes": {
36
- "commands": [
37
- {
38
- "command": "pollinations.mode",
39
- "title": "Pollinations: Change Mode"
40
- },
41
- {
42
- "command": "pollinations.usage",
43
- "title": "Pollinations: Show Usage"
44
- },
45
- {
46
- "command": "pollinations.addKey",
47
- "title": "Pollinations: Add BackgroundCut Key"
48
- }
49
- ]
47
+ "prepublishOnly": "npm run build && npm run test:unit && npm run test:i18n"
50
48
  },
51
49
  "files": [
52
- "dist"
50
+ "dist",
51
+ "bin",
52
+ "README.md",
53
+ "LICENSE.md"
53
54
  ],
54
55
  "dependencies": {
55
56
  "@opencode-ai/plugin": "^1.0.85",
@@ -61,4 +62,4 @@
61
62
  "@types/qrcode": "^1.5.6",
62
63
  "typescript": "^5.0.0"
63
64
  }
64
- }
65
+ }