opencode-pollinations-plugin 6.4.10 → 6.5.1
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 +67 -55
- package/README.es.md +79 -67
- package/README.fr.md +70 -58
- package/README.it.md +78 -66
- package/README.md +33 -29
- package/README.zh.md +77 -65
- package/dist/locales/de.json +82 -50
- package/dist/locales/en.json +84 -52
- package/dist/locales/es.json +82 -50
- package/dist/locales/fr.json +81 -49
- package/dist/locales/it.json +82 -50
- package/dist/locales/zh.json +82 -50
- package/dist/server/commands.js +112 -110
- package/dist/server/config.d.ts +24 -6
- package/dist/server/config.js +45 -4
- package/dist/server/connect-response.js +7 -7
- package/dist/server/generate-config.d.ts +7 -0
- package/dist/server/generate-config.js +22 -16
- package/dist/server/models/cache.d.ts +23 -10
- package/dist/server/models/cache.js +46 -24
- package/dist/server/models/fetcher.js +9 -0
- package/dist/server/models/types.d.ts +8 -0
- package/dist/server/models/worker.js +32 -8
- package/dist/server/proxy.d.ts +6 -0
- package/dist/server/proxy.js +297 -210
- package/dist/server/quota.d.ts +23 -32
- package/dist/server/quota.js +45 -185
- package/dist/server/status.js +1 -2
- package/dist/server/toast.js +1 -1
- package/dist/tools/index.d.ts +2 -1
- package/dist/tools/index.js +8 -3
- package/dist/tools/pollinations/artifact-core.d.ts +53 -0
- package/dist/tools/pollinations/artifact-core.js +159 -0
- package/dist/tools/pollinations/beta_discovery.js +2 -1
- package/dist/tools/pollinations/cost-guard.d.ts +2 -2
- package/dist/tools/pollinations/error-parser.d.ts +38 -0
- package/dist/tools/pollinations/error-parser.js +112 -0
- package/dist/tools/pollinations/gen_3d.d.ts +17 -0
- package/dist/tools/pollinations/gen_3d.js +207 -0
- package/dist/tools/pollinations/gen_image.js +29 -10
- package/dist/tools/pollinations/gen_music.js +3 -2
- package/dist/tools/pollinations/gen_video.js +13 -2
- package/dist/tools/pollinations/polli_config.js +18 -21
- package/dist/tools/pollinations/polli_gen_confirm.js +2 -0
- package/dist/tools/pollinations/shared.d.ts +1 -1
- package/dist/tools/pollinations/shared.js +53 -142
- package/dist/tools/pollinations/timeout-policy.d.ts +80 -0
- package/dist/tools/pollinations/timeout-policy.js +124 -0
- package/dist/tools/pollinations/tool-capability-registry.d.ts +51 -0
- package/dist/tools/pollinations/tool-capability-registry.js +215 -0
- package/dist/tools/pollinations/transcribe_audio.js +5 -24
- package/package.json +6 -4
- package/dist/server/tier-info.d.ts +0 -36
- package/dist/server/tier-info.js +0 -107
package/dist/locales/en.json
CHANGED
|
@@ -3,23 +3,21 @@
|
|
|
3
3
|
"help": {
|
|
4
4
|
"title": "### 🌸 Pollinations Plugin - Commands V6",
|
|
5
5
|
"alias_note": "*(The alias `/poll` is supported and recommended instead of `/pollinations` !)*",
|
|
6
|
-
"mode_usage": "**Mode & Usage**\n- **`/poll mode [mode]`**: Change mode (manual,
|
|
7
|
-
"configuration": "**Configuration**\n- **`/poll config [key] [value]`**:\n - `lang`: en, fr, etc.\n - `status_gui`: none, alert, all\n - `logs_gui`: none, error, verbose\n - `
|
|
6
|
+
"mode_usage": "**Mode & Usage**\n- **`/poll mode [mode]`**: Change mode (manual, quest, quest_only, paid).\n- **`/poll usage [full]`**: Display dashboard (full = details).\n- **`/poll fallback <main> [agent]`**: Configure Safety Net.",
|
|
7
|
+
"configuration": "**Configuration**\n- **`/poll config [key] [value]`**:\n - `lang`: en, fr, etc.\n - `status_gui`: none, alert, all\n - `logs_gui`: none, error, verbose\n - `threshold_quest` / `threshold_wallet`: pollen floor (default 0.05 / 0.5)\n - `status_bar`: true/false\n - `cost_estimator`: true/false (show cost in outputs)\n - `enablePaidTools`: true/false (blocks paid_only locally — no server guarantee)\n - `costThreshold`: limit in pollen (default: 0.15)\n - `costConfirmationRequired`: true/false (spend confirmation)",
|
|
8
8
|
"models_pricing": "**Models & Pricing**\n- **`/poll models [type]`**: List models (type: image, video, audio, text)\n- **`/poll pricing`**: Detailed pricing table\n- **`/poll infos`**: Explanations on Tiers and Pollen\n- **`/poll quests`**: View your quests & claimable free Pollen\n\n> 💡 **RMBG keys**: Use the `rmbg_keys` tool (works with any model).",
|
|
9
9
|
"configuration_intro": "**Configuration**\n- **`/poll config [key] [value]`**:",
|
|
10
10
|
"config": {
|
|
11
11
|
"lang": "Plugin language",
|
|
12
12
|
"status_gui": "Status toasts verbosity",
|
|
13
13
|
"logs_gui": "Log verbosity",
|
|
14
|
-
"
|
|
15
|
-
"threshold_wallet": "Wallet alert threshold (%)",
|
|
14
|
+
"threshold_wallet": "Wallet alert floor (pollen)",
|
|
16
15
|
"status_bar": "Show status bar icon",
|
|
17
16
|
"cost_estimator": "Show cost estimates",
|
|
18
17
|
"enablePaidTools": "Wallet protection (block paid tools)",
|
|
19
18
|
"costThreshold": "Cost alert threshold",
|
|
20
19
|
"costConfirmationRequired": "Ask confirmation before spending",
|
|
21
|
-
"
|
|
22
|
-
"questStashInFreeMode": "Count quest stash as free in alwaysfree"
|
|
20
|
+
"threshold_quest": "Quest balance alert floor (pollen)"
|
|
23
21
|
}
|
|
24
22
|
},
|
|
25
23
|
"config": {
|
|
@@ -29,7 +27,7 @@
|
|
|
29
27
|
"table_headers": "| Parameter | Current Value | Role | Command |",
|
|
30
28
|
"table_divider": "|-----------|---------------|------|---------|",
|
|
31
29
|
"api_key_role": "Your secret API key (BYOK)",
|
|
32
|
-
"mode_role": "
|
|
30
|
+
"mode_role": "Billing mode (quest/quest_only/paid/manual)",
|
|
33
31
|
"enablePaidTools_role": "Safety: Disable paid tools",
|
|
34
32
|
"costConfirmationRequired_role": "Ask confirmation if threshold exceeded",
|
|
35
33
|
"costThreshold_role": "Tool cost alert threshold",
|
|
@@ -39,12 +37,17 @@
|
|
|
39
37
|
"fallback_enter_role": "Main Agent model (free/* or enter/*) -> *Managed automatically*",
|
|
40
38
|
"status_gui_role": "Status toasts verbosity",
|
|
41
39
|
"logs_gui_role": "Log verbosity",
|
|
42
|
-
"
|
|
43
|
-
"threshold_wallet_role": "Premium Wallet drop alert",
|
|
40
|
+
"threshold_wallet_role": "Paid wallet alert floor (pollen)",
|
|
44
41
|
"status_bar_role": "Show icon in status bar",
|
|
45
42
|
"lang_role": "Plugin Language",
|
|
46
43
|
"not_configured": "Not configured",
|
|
47
|
-
"managed_auto": "Managed automatically"
|
|
44
|
+
"managed_auto": "Managed automatically",
|
|
45
|
+
"threshold_quest_role": "Quest balance alert floor (pollen)",
|
|
46
|
+
"timeouts_default_role": "Global timeout for remote operations",
|
|
47
|
+
"timeouts_long_role": "Timeout for long-running generations",
|
|
48
|
+
"timeouts_max_role": "Absolute timeout ceiling",
|
|
49
|
+
"timeouts_video_role": "Video generation timeout",
|
|
50
|
+
"timeouts_3d_role": "3D generation timeout"
|
|
48
51
|
},
|
|
49
52
|
"generic": {
|
|
50
53
|
"add_key_hint": "💡 Use /poll connect <key> to add an API key.",
|
|
@@ -55,21 +58,17 @@
|
|
|
55
58
|
},
|
|
56
59
|
"mode": {
|
|
57
60
|
"current": "Current mode: {mode}",
|
|
58
|
-
"invalid": "❌ Invalid mode '{mode}'. Use: manual,
|
|
59
|
-
"pro_requires_key": "❌ 'pro' mode requires an API key.",
|
|
61
|
+
"invalid": "❌ Invalid mode '{mode}'. Use: manual, quest, quest_only, paid",
|
|
60
62
|
"verifying": "Verifying permissions...",
|
|
61
|
-
"denied": "❌ Access denied to
|
|
63
|
+
"denied": "❌ Access denied to quest/quest_only/paid ({status}: {reason})",
|
|
62
64
|
"verify_error": "❌ Verification error: {error}",
|
|
63
|
-
"success": "✅ Switched to mode: {mode}"
|
|
65
|
+
"success": "✅ Switched to mode: {mode}",
|
|
66
|
+
"key_required": "❌ '{mode}' mode requires an API key.",
|
|
67
|
+
"legacy_alias": " (legacy alias '{legacy}' → '{mode}')"
|
|
64
68
|
},
|
|
65
69
|
"usage": {
|
|
66
70
|
"title": "## 📊 Pollinations Stats (Mode: {mode})\n\n",
|
|
67
71
|
"resources": "### 🌻 Base Resources\n",
|
|
68
|
-
"tier": "- **Tier:** {emoji} {tier} (Limit: {limit} 🌻)\n",
|
|
69
|
-
"quota": "- **Period:** {remaining} spent / {limit} total limit\n",
|
|
70
|
-
"usage_bar": "- **Usage:** {bar}\n",
|
|
71
|
-
"wallet": "- **Balance (Paid + Quest):** {balance} 🌻\n\n",
|
|
72
|
-
"reset": "### 🕒 Reset Info\n- **Next Reset:** {date} (in {duration})\n\n",
|
|
73
72
|
"restricted_key": "⚠️ Restricted API key. Details unavailable.\n",
|
|
74
73
|
"period_detail": "### 📈 Period detail (since {time})\n",
|
|
75
74
|
"total_reqs": "- **Requests:** {reqs} ({inTok} in | {outTok} out)\n\n",
|
|
@@ -79,7 +78,8 @@
|
|
|
79
78
|
"full_requires_key": "⚠️ `/poll usage full` requires a connected API key.\n",
|
|
80
79
|
"hint_full": "💡 Use `/poll usage full` for details (requires key).",
|
|
81
80
|
"source_split": "- **Consumed this period:** 🎁 Quest {tier} · 💎 Paid {pack}\n",
|
|
82
|
-
"split": "- **Balance:** {total} 🌻 · 🎁 Quest ~{quest} · 💎 Paid ~{paid}\n\n"
|
|
81
|
+
"split": "- **Balance:** {total} 🌻 · 🎁 Quest ~{quest} · 💎 Paid ~{paid}\n\n",
|
|
82
|
+
"quest_note": "> ⚠️ Quest balance is a best-effort client estimate (no server-side split is exposed). The authoritative split is `meter_source` in `/account/usage`.\n"
|
|
83
83
|
},
|
|
84
84
|
"fallback": {
|
|
85
85
|
"current": "Current fallbacks:\n- {free}\n- {enter}",
|
|
@@ -122,16 +122,14 @@
|
|
|
122
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).",
|
|
123
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.",
|
|
124
124
|
"features_config": "- **Granular configuration**, mode and token management, tool cost protections...",
|
|
125
|
-
"tiers_title": "> **Your Quest Pollen refill:** {emoji} {tier}",
|
|
126
125
|
"about": "## 🌍 What is pollinations.ai ?\npollinations.ai is an open-source AI platform built by and for the community. We provide a unified API for Image, Text, Audio, and Video. Everything is open: our code, roadmap, conversations. Hundreds of devs are already building apps, games, bots, and crazy experiments with us. Join us!\n\nNo black boxes. No vendor lock-in. Just a friendly API and a Discord full of helpful people.",
|
|
127
|
-
"levels_title": "## 📈 Hourly Quest Pollen Refill",
|
|
128
|
-
"levels_list": "Your hourly refill depends on your contribution level. Quest Pollen accumulates and never expires (as long as your account stays active).\n\n{tier_table}\n\n> ⚠️ Refill is **hourly** (reset at :00). Daily total is an estimate (~24h × hourly rate).",
|
|
129
126
|
"pollen_title": "## 💎 What is Pollen ?",
|
|
130
127
|
"pollen_get": "Running AI models costs money. Pollen is our way to keep servers running without ads or selling data. A simple, unified credit for all models — predictable, transparent, no surprises.\n\n**$1 ≈ 1 Pollen** (prices subject to change). You spend it on API calls.",
|
|
131
128
|
"pollen_spend": "## 🛒 How to get Pollen?\n1. 🎯 **Quests** — Complete tasks on the dashboard (`/poll quests`).\n2. 💳 **Buy** — By credit card at enter.pollinations.ai.\n3. 🌻 **Dev earnings** — Enable developer earnings on your App Key.",
|
|
132
129
|
"quests": "## 🎯 Quests — Earn Free Pollen\nPollen is now mainly earned by completing **Quests**. Good news: just using this plugin (text, image & audio models) completes several quests **retroactively** — you may already have free Pollen waiting!\n\n👉 Review & claim your rewards on the [dashboard](https://enter.pollinations.ai). _Claiming is dashboard-only._\n\n> 💡 Quest Pollen works on all standard models. 💎 Paid-only models still require purchased Pollen.",
|
|
133
|
-
"
|
|
134
|
-
"
|
|
130
|
+
"get_started": "## 🔑 Getting Started\n\n**1.** Create a free account at enter.pollinations.ai\n**2.** Connect in 1 click: `/poll login`\n**3.** Or use a manual key: `/poll connect sk_...`\n\nType `/poll help` for all commands.",
|
|
131
|
+
"quest_paid_title": "## 🎁 Quest & 💎 Paid Pollen",
|
|
132
|
+
"quest_paid_body": "Pollen is split into two columns:\n\n- **🎁 Quest Pollen** — earned by completing **Quests** (free). Consumed first by the server.\n- **💎 Paid Pollen** — purchased (credit card). Used when Quest is insufficient, or for `paid_only` models.\n\n> ⚠️ The plugin cannot read the split server-side; it estimates Quest/Paid locally and reads the real split (`meter_source`) from `/account/usage`.\n\n**Modes:**\n- `quest` (QUEST_PREFERRED) — default: Quest first, Paid fallback allowed.\n- `quest_only` (QUEST_ELIGIBLE_ONLY) — blocks paid_only models, best-effort Quest only.\n- `paid` (PAID_ALLOWED) — Paid allowed.\n- `manual` — no automatic policy."
|
|
135
133
|
},
|
|
136
134
|
"pricing_units": {
|
|
137
135
|
"tokens": "~tokens",
|
|
@@ -140,7 +138,7 @@
|
|
|
140
138
|
"tok": "🌻/tok"
|
|
141
139
|
},
|
|
142
140
|
"login": {
|
|
143
|
-
"prompt": "## 🔐 Quick Login (Device Flow)\n\n**1.** Open: **{uri_complete}**\n_(or go to {uri} and enter the code below)_\n\n**2.** Your code: **`{code}`**\n\n**3.** Sign in with GitHub, then on the consent form:\n • ✅ Keep **Profile** + **Usage** granted (needed for quota, quests &
|
|
141
|
+
"prompt": "## 🔐 Quick Login (Device Flow)\n\n**1.** Open: **{uri_complete}**\n_(or go to {uri} and enter the code below)_\n\n**2.** Your code: **`{code}`**\n\n**3.** Sign in with GitHub, then on the consent form:\n • ✅ Keep **Profile** + **Usage** granted (needed for quota, quests & the free-universe fallback)\n • 💡 For an **unlimited key**: clear the **Budget** field (→ Unlimited) and the **Expiry** field (→ Never)\n • Click **Authorize**\n\nThe plugin is waiting and connects **automatically** once you approve (a toast confirms ✅).\n\n💡 _Prefer a manually-created key? Use `/poll connect sk_...` instead._",
|
|
144
142
|
"already_running": "⏳ A login is already in progress. Finish authorizing in your browser, or wait a moment.",
|
|
145
143
|
"code_error": "❌ Could not start login: {error}\n💡 You can still use `/poll connect sk_...` manually.",
|
|
146
144
|
"expired": "⏱️ Login code expired. Run /poll login again.",
|
|
@@ -149,7 +147,7 @@
|
|
|
149
147
|
"nothing_pending": "ℹ️ No login in progress. Run polli_login (without wait) first to get a code.",
|
|
150
148
|
"opened": "🌐 Opening your browser to authorize…",
|
|
151
149
|
"still_waiting": "⏳ Still waiting for your authorization in the browser. Once you approve, call polli_login with wait:true again to confirm.",
|
|
152
|
-
"success_limited": "⚠️ Connected, but your key looks limited (you didn't grant Profile/Usage). Quota display,
|
|
150
|
+
"success_limited": "⚠️ Connected, but your key looks limited (you didn't grant Profile/Usage). Quota display, free-universe fallback and wallet control may not work. Re-run login and grant Profile + Usage, or use a full key."
|
|
153
151
|
}
|
|
154
152
|
},
|
|
155
153
|
"proxy": {
|
|
@@ -159,11 +157,16 @@
|
|
|
159
157
|
"no_enter_models": "No Enterprise model detected for this key."
|
|
160
158
|
},
|
|
161
159
|
"warnings": {
|
|
162
|
-
"
|
|
163
|
-
"
|
|
164
|
-
"
|
|
165
|
-
"
|
|
166
|
-
"
|
|
160
|
+
"wallet_limit_msg": "⚠️ **Premium Wallet Alert Exceeded**\n\nYou have less than {threshold}% of your purchased pollen wallet remaining.\n\n🔄 **Fallback Action (Safety Net)**:\nThe Agent was switched to the free network.",
|
|
161
|
+
"quota_unreachable_title": "⚠️ Quota Unreachable",
|
|
162
|
+
"quota_unreachable_msg": "⚠️ **Quota check failed** (network error).\n\n🔄 **Fallback Action (Safety Net)**:\nThe Agent was switched to the free universe to avoid a failure.",
|
|
163
|
+
"balance_exhausted_title": "⚠️ Quest & Paid Exhausted",
|
|
164
|
+
"balance_exhausted_msg": "⚠️ **Both Quest and Paid pollen look exhausted.**\n\n🔄 **Fallback Action (Safety Net)**:\nThe Agent was switched to the free universe. Earn Quest pollen via `/poll quests` or top up at enter.pollinations.ai.",
|
|
165
|
+
"quest_floor_title": "⚠️ Quest Balance Low",
|
|
166
|
+
"quest_floor_msg": "⚠️ **Quest pollen is at or below your floor ({floor} 🌻).**\n\nQuest-Only mode does not spend Paid pollen. 🔄 **Fallback Action**: The Agent was switched to the free universe.\n\n> ⚠️ Best-effort: a Paid (pack) debit can still occur server-side in a race.",
|
|
167
|
+
"paid_blocked_questonly_title": "🚫 Paid model blocked: {model}",
|
|
168
|
+
"paid_blocked_questonly_msg": "🚫 **Paid model not available in Quest-Only mode**\n\nThe `{model}` model always consumes Paid pollen (💎 paid_only).\n\n**Solutions:**\n• `/poll config mode paid` — Allows paid models with wallet protection\n• `/poll config mode quest` — Quest first with Paid fallback allowed\n• `/poll config mode manual` — No restriction, full control",
|
|
169
|
+
"wallet_limit_title": "⚠️ Paid Wallet Low"
|
|
167
170
|
}
|
|
168
171
|
},
|
|
169
172
|
"toasts": {
|
|
@@ -206,7 +209,9 @@
|
|
|
206
209
|
"res_i2i_src": "I2I Source: {src}",
|
|
207
210
|
"res_file": "File: {path}",
|
|
208
211
|
"res_size": "Size: {size}",
|
|
209
|
-
"cost_title": "\n💰 **Financial Report :**"
|
|
212
|
+
"cost_title": "\n💰 **Financial Report :**",
|
|
213
|
+
"arg_timeout": "Per-call timeout in seconds (10–3600).",
|
|
214
|
+
"invalid_timeout": "❌ Invalid timeout_seconds: {reason}"
|
|
210
215
|
},
|
|
211
216
|
"config": {
|
|
212
217
|
"no_values": "No configuration values provided to update. Please specify at least one setting via the arguments.",
|
|
@@ -246,7 +251,8 @@
|
|
|
246
251
|
"result_recency": "📅 Recency: {recency}",
|
|
247
252
|
"result_cost": "🪙 Est. Cost: {cost}",
|
|
248
253
|
"result_cost_max": "🪙 Est. Cost: {cost} (Max allocated: {maxCost})",
|
|
249
|
-
"error_prefix": "❌ Error during Search: {error}"
|
|
254
|
+
"error_prefix": "❌ Error during Search: {error}",
|
|
255
|
+
"warn_beta": "⚠️ (beta) Web search via Pollinations models is experimental."
|
|
250
256
|
},
|
|
251
257
|
"polli_gen_video": {
|
|
252
258
|
"desc": "Generate a video from a text prompt or image using Pollinations AI.\n\n💡 **Dynamic Video Models** :\nThe Pollinations video API is constantly evolving. Available models (T2V/I2V), duration limits, aspect ratios, and pricing are injected below in real time.\n\n**Common options examples** :\n- `veo` interpolation: Use `reference_image=url1,url2` for transitions.",
|
|
@@ -295,7 +301,9 @@
|
|
|
295
301
|
"err_invalid": "❌ Invalid parameters: {msg}",
|
|
296
302
|
"err_520": "⚠️ LTX-2 returned an intermittent 520 error.\n💡 Retry in a few seconds.",
|
|
297
303
|
"err_timeout": "❌ Timeout - Video generation took too long.\n💡 Retry with a shorter duration.",
|
|
298
|
-
"err_gen": "❌ Video generation error: {error}"
|
|
304
|
+
"err_gen": "❌ Video generation error: {error}",
|
|
305
|
+
"arg_timeout": "Per-call timeout in seconds (10–3600). No automatic resubmit on timeout.",
|
|
306
|
+
"invalid_timeout": "❌ Invalid timeout_seconds: {reason}"
|
|
299
307
|
},
|
|
300
308
|
"polli_gen_audio": {
|
|
301
309
|
"desc": "Convert text to speech using Pollinations AI.\n\n**🔊 Models:**\n\n| Model | Type | Voices | Format | Cost | Notes |\n|-------|------|--------|--------|------|-------|\n| openai-audio | TTS + STT | 6 | mp3, wav, pcm16 | Lowest | **DEFAULT** - GPT-4o Audio |\n| elevenlabs | TTS | 34 | mp3, wav, etc. | Higher | Expressive voices |\n\n**🎵 OpenAI Audio (Default, Recommended):**\n- Voices: `alloy`, `echo`, `fable`, `onyx`, `nova`, `shimmer`\n- Formats: `mp3` (default), `wav`, `pcm16`\n- Uses GPT-4o Audio Preview modalities endpoint\n- Lowest cost option\n\n**🎤 ElevenLabs:**\n- 34 expressive voices including: rachel, domi, bella, adam, etc.\n- Higher quality natural-sounding speech\n- More expensive but more expressive\n\n**💡 Tips:**\n- Use `openai-audio` for cost-effective TTS\n- Use `elevenlabs` for more expressive/character voices\n- For STT (transcription), use the `transcribe_audio` tool.",
|
|
@@ -398,7 +406,7 @@
|
|
|
398
406
|
"legend": "_Legend: 🎁 ready to claim · ✅ claimed · ✔️ completed · 🔜 coming soon · ⬜ open_"
|
|
399
407
|
},
|
|
400
408
|
"gen_edit_image_free": {
|
|
401
|
-
"desc": "🆓 BONUS —
|
|
409
|
+
"desc": "🆓 BONUS — Free image generation & editing. No Pollinations key required, works for any model. Generate from a text prompt, or EDIT 1-3 images by passing them in `images`. Backed by a public playground from your own IP: ~20 free requests/day (generation and editing SHARE the same daily counter). Past the quota, use `polli_gen_image` (Pollinations).",
|
|
402
410
|
"arg_prompt": "Description of the image to generate, or the edit instruction when editing.",
|
|
403
411
|
"arg_images": "Optional. 1 to 3 images to EDIT (local path, http(s) URL, or data: URI). If provided, switches to edit mode.",
|
|
404
412
|
"arg_aspect": "Aspect ratio for generation (16:9 default, 1:1, 9:16). Ignored when editing.",
|
|
@@ -420,7 +428,7 @@
|
|
|
420
428
|
"degraded": "⚠️ Free image service unavailable ({error}).\n💡 Fallback: use `polli_gen_image` / `polli_gen_video` with your Pollinations key."
|
|
421
429
|
},
|
|
422
430
|
"gen_video_free": {
|
|
423
|
-
"desc": "🆓 BONUS —
|
|
431
|
+
"desc": "🆓 BONUS — Free video generation. No Pollinations key required, works for any model. Text-to-video, with OPTIONAL first-frame `image` and OPTIONAL `audio` to join. Backed by a public Pruna playground from your own IP: ~5 free videos/day (separate from the image quota). Async generation (may take 1-3 min). Past the quota, use `polli_gen_video` (Pollinations).",
|
|
424
432
|
"arg_prompt": "Description of the video (motion, camera, scene, audio cues).",
|
|
425
433
|
"arg_image": "Optional. A first-frame / reference image (local path, http(s) URL, or data: URI).",
|
|
426
434
|
"arg_audio": "Optional. An audio track to join (local path, http(s) URL, or data: URI).",
|
|
@@ -463,16 +471,53 @@
|
|
|
463
471
|
"file_not_found": "❗ File not found: {path}",
|
|
464
472
|
"no_result": "❗ No result received.",
|
|
465
473
|
"error": "❗ Error: {error}"
|
|
474
|
+
},
|
|
475
|
+
"gen3d": {
|
|
476
|
+
"desc": "Generate a 3D object from a text prompt or reference image using Pollinations AI.\n\nThe current 3D models, access flags, I/O capabilities and costs are injected dynamically from the live Model Registry.\n\n**⏱️ Long-running** : generation can take 20s–150s+ (LONG_BLOCKING). Use `timeout_seconds` to control the local wait.\n\n**♻️ Recovery** : after a timeout, the generation may still be running and billed. Re-running with the SAME seed returns the artifact from cache (not rebilled).",
|
|
477
|
+
"arg_prompt": "Text description of the 3D object (optional when image is provided)",
|
|
478
|
+
"arg_image": "Optional reference image URL (1 image max)",
|
|
479
|
+
"arg_model": "Model to use (default: trellis-2).",
|
|
480
|
+
"arg_resolution": "Resolution: low / medium / high (default: low)",
|
|
481
|
+
"arg_seed": "Seed for reproducibility and cache recovery",
|
|
482
|
+
"arg_save_to": "Custom output directory or file path",
|
|
483
|
+
"arg_filename": "Custom output filename (without extension)",
|
|
484
|
+
"arg_timeout": "Per-call timeout in seconds (10–3600). No automatic resubmit on timeout.",
|
|
485
|
+
"req_key": "❌ polli_gen_3d requires an API key (/poll login).",
|
|
486
|
+
"unknown_model": "Model '{model}' not in the 3D registry — beta passthrough",
|
|
487
|
+
"invalid_image_url": "❌ Invalid image URL. Use http:// or https://",
|
|
488
|
+
"invalid_timeout": "❌ Invalid timeout_seconds: {reason}",
|
|
489
|
+
"blocked": "🚫 3D generation blocked by the Cost Guard.",
|
|
490
|
+
"generating": "Generating 3D: {model} ({resolution})...",
|
|
491
|
+
"success": "3D generated ✓ ({model})",
|
|
492
|
+
"err_format": "❌ Artifact validation failed: expected GLB (glTF-binary), got '{detected}'. File NOT saved.",
|
|
493
|
+
"err_toast": "Error: {error}",
|
|
494
|
+
"err_timeout": "⏱️ **3D generation timed out after {seconds}s.**\n\n⚠️ The generation may still be running upstream and **may still be billed** (client timeout ≠ upstream cancellation). We did NOT resubmit automatically.\n\n♻️ **Recovery** : re-run with the SAME parameters and seed `{seed}` (model `{model}`) — the result is served from cache and is not rebilled.",
|
|
495
|
+
"err_pollen": "❌ Insufficient pollen credits to run {model}.\n💡 Complete quests or top up at enter.pollinations.ai.",
|
|
496
|
+
"err_auth": "❌ Invalid or unauthorized API key.",
|
|
497
|
+
"err_gen": "❌ 3D generation error: {error}",
|
|
498
|
+
"res_title": "### 🧊 3D Generation Result",
|
|
499
|
+
"res_prompt": "- **Prompt** : {prompt}",
|
|
500
|
+
"res_model": "- **Model** : `{model}`",
|
|
501
|
+
"res_resolution": "- **Resolution** : {resolution}",
|
|
502
|
+
"res_seed": "- **Seed** : {seed}",
|
|
503
|
+
"res_image": "- **Ref. image** : {src}",
|
|
504
|
+
"res_file": "- **File** : `{path}`",
|
|
505
|
+
"res_size": "- **Size** : {size}",
|
|
506
|
+
"res_format": "- **Format** : {ext} (magic-bytes validated)",
|
|
507
|
+
"res_cost_est": "- **Est. Cost** : {cost}",
|
|
508
|
+
"res_cost_real": "- **Real Cost** : **{cost}**",
|
|
509
|
+
"res_model_used": "- **Model used** : {model}",
|
|
510
|
+
"res_request_id": "- **Request ID** : {id}"
|
|
466
511
|
}
|
|
467
512
|
},
|
|
468
513
|
"connect_response": {
|
|
469
514
|
"title_key": "## 🍯💚 POLLINATIONS PLUGIN CONNECTED 💚🍯\n\nWelcome **{name}** to the Pollinations Agent plugin!\n**Current Mode**: `{mode}`",
|
|
470
|
-
"tools_intro": "### 🚀 Multimedia Tools Integrated to Development\n\nThis plugin allows you to generate code, images, analyze videos and interact with the best AI models seamlessly. Access state-of-the-art LLMs via chat, refactoring, or terminal.\n\n**What this plugin brings to you:**\n\n**🛠️ Free Integrated Tools (Always Available):**\n- `gen_qrcode` / `gen_diagram` / `gen_palette`\n- `remove_background`\n- `extract_frames` / `extract_audio`\n- `file_to_url`\n- `gen_edit_image_free` (image gen & edit, ~20/day)\n- `gen_video_free` (video gen, ~5/day)\n- `object_remover`\n- `image_upscaler`\n- `image_enhancer`\n\n**💎 Pollinations Tools (Premium):**\n- `polli_gen_image`\n- `polli_gen_video`\n- `polli_gen_audio`/`polli_stt`\n- `polli_gen_music`\n- `polli_web_search`",
|
|
515
|
+
"tools_intro": "### 🚀 Multimedia Tools Integrated to Development\n\nThis plugin allows you to generate code, images, analyze videos and interact with the best AI models seamlessly. Access state-of-the-art LLMs via chat, refactoring, or terminal.\n\n**What this plugin brings to you:**\n\n**🛠️ Free Integrated Tools (Always Available):**\n- `gen_qrcode` / `gen_diagram` / `gen_palette`\n- `remove_background`\n- `extract_frames` / `extract_audio`\n- `file_to_url`\n- `gen_edit_image_free` (image gen & edit, ~20/day)\n- `gen_video_free` (video gen, ~5/day)\n- `object_remover`\n- `image_upscaler`\n- `image_enhancer`\n\n**💎 Pollinations Tools (Premium):**\n- `polli_gen_image`\n- `polli_gen_video`\n- `polli_gen_3d`\n- `polli_gen_audio`/`polli_stt`\n- `polli_gen_music`\n- `polli_web_search`",
|
|
471
516
|
"terminal_cmds": "### 💻 Terminal Commands\nUse `/poll help` to see all commands. Try `/poll models` to discover the catalog or `/poll usage` to tracking remaining pollen.",
|
|
472
517
|
"resources": "### 📚 Resources\n* **Dashboard:** enter.pollinations.ai\n* **Discord:** Join the Community\n* **Plugin:** github.com/fkom13/opencode-pollinations-plugin",
|
|
473
518
|
"free_models_success": "Available free models: {models}",
|
|
474
519
|
"free_models_error": "⚠️ Couldn't fetch free models.",
|
|
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
|
|
520
|
+
"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` — no-key image/video quota + 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## 💰 Quest & Paid Pollen\n**Quest Pollen** is earned free by completing **Quests** — simply using this plugin completes several of them retroactively! Check `/poll quests`.\n\nWhen Quest pollen is insufficient (or for paid-only models), **Paid Pollen** (purchased) is used. The plugin estimates both locally and reads the real split (`meter_source`) from `/account/usage`.\n\n**Need help?** Type `/poll help`. Official Discord: https://discord.gg/pollinations-ai-885844321461485618"
|
|
476
521
|
},
|
|
477
522
|
"cost_guard": {
|
|
478
523
|
"cost_validated_max": "💰 Cost validated (Max theoretical: {maxCost})",
|
|
@@ -483,18 +528,5 @@
|
|
|
483
528
|
"reason_fixed": "The estimated cost of this action ({cost}) exceeds the defined threshold ({limit}).",
|
|
484
529
|
"estimated_max": "💰 Average estimated cost: {cost} (Max: {maxCost})",
|
|
485
530
|
"estimated": "💰 Estimated cost: {cost}"
|
|
486
|
-
},
|
|
487
|
-
"tier": {
|
|
488
|
-
"condition": {
|
|
489
|
-
"signup": "Just register",
|
|
490
|
-
"auto_verify": "Automatic verification",
|
|
491
|
-
"under_review": "Account under review",
|
|
492
|
-
"default": "New account (default)",
|
|
493
|
-
"community": "Active community member",
|
|
494
|
-
"quests": "Complete Quests & contribute",
|
|
495
|
-
"publish_app": "Publish an app",
|
|
496
|
-
"top_contributor": "Top contributor",
|
|
497
|
-
"special": "Special / invite-only"
|
|
498
|
-
}
|
|
499
531
|
}
|
|
500
532
|
}
|
package/dist/locales/es.json
CHANGED
|
@@ -3,23 +3,21 @@
|
|
|
3
3
|
"help": {
|
|
4
4
|
"title": "### 🌸 Pollinations Plugin - Comandos V6",
|
|
5
5
|
"alias_note": "*(¡Se recomienda usar el alias `/poll` en lugar de `/pollinations`!)*",
|
|
6
|
-
"mode_usage": "**Modo y Uso**\n- **`/poll mode [modo]`**: Cambiar modo (manual,
|
|
7
|
-
"configuration": "**Configuración**\n- **`/poll config [clave] [valor]`**:\n - `lang`: en, fr, es, de, it, etc.\n - `status_gui`: none, alert, all\n - `logs_gui`: none, error, verbose\n - `
|
|
6
|
+
"mode_usage": "**Modo y Uso**\n- **`/poll mode [modo]`**: Cambiar modo (manual, quest, quest_only, paid).\n- **`/poll usage [full]`**: Mostrar panel (full = detalles).\n- **`/poll fallback <main> [agente]`**: Configurar red de seguridad.",
|
|
7
|
+
"configuration": "**Configuración**\n- **`/poll config [clave] [valor]`**:\n - `lang`: en, fr, es, de, it, etc.\n - `status_gui`: none, alert, all\n - `logs_gui`: none, error, verbose\n - `threshold_quest` / `threshold_wallet`: umbral en pollen (def. 0.05 / 0.5)\n - `status_bar`: true/false\n - `cost_estimator`: true/false (mostrar costo en salidas)\n - `enablePaidTools`: true/false (bloquea paid_only localmente — sin garantía del servidor)\n - `costThreshold`: límite en pollen (por defecto: 0.15)\n - `costConfirmationRequired`: true/false (confirmar gasto)",
|
|
8
8
|
"models_pricing": "**Modelos y Precios**\n- **`/poll models [tipo]`**: Listar modelos (tipo: image, video, audio, text)\n- **`/poll pricing`**: Tabla de precios detallada\n- **`/poll infos`**: Explicaciones sobre niveles y Pollen\n- **`/poll quests`**: Ver tus misiones y el Pollen gratis por reclamar\n\n> 💡 **Claves RMBG**: Usa la herramienta `rmbg_keys` (funciona con cualquier modelo).",
|
|
9
9
|
"configuration_intro": "**Configuración**\n- **`/poll config [clave] [valor]`**:",
|
|
10
10
|
"config": {
|
|
11
11
|
"lang": "Idioma del plugin",
|
|
12
12
|
"status_gui": "Verbosidad de notificaciones",
|
|
13
13
|
"logs_gui": "Verbosidad de logs",
|
|
14
|
-
"
|
|
15
|
-
"threshold_wallet": "Umbral de alerta wallet (%)",
|
|
14
|
+
"threshold_wallet": "Umbral de alerta del wallet (pollen)",
|
|
16
15
|
"status_bar": "Mostrar icono en barra",
|
|
17
16
|
"cost_estimator": "Mostrar costes estimados",
|
|
18
17
|
"enablePaidTools": "Protección wallet (bloquea herramientas de pago)",
|
|
19
18
|
"costThreshold": "Umbral de alerta de coste",
|
|
20
19
|
"costConfirmationRequired": "Pedir confirmación antes de gastar",
|
|
21
|
-
"
|
|
22
|
-
"questStashInFreeMode": "Contar stash Quest como free en alwaysfree"
|
|
20
|
+
"threshold_quest": "Umbral de alerta del saldo Quest (pollen)"
|
|
23
21
|
}
|
|
24
22
|
},
|
|
25
23
|
"config": {
|
|
@@ -29,7 +27,7 @@
|
|
|
29
27
|
"table_headers": "| Parámetro | Valor Actual | Función | Comando |",
|
|
30
28
|
"table_divider": "|-----------|--------------|---------|---------|",
|
|
31
29
|
"api_key_role": "Tu clave API secreta (BYOK)",
|
|
32
|
-
"mode_role": "Modo de
|
|
30
|
+
"mode_role": "Modo de facturación (quest/quest_only/paid/manual)",
|
|
33
31
|
"enablePaidTools_role": "Seguridad: Desactivar herramientas de pago",
|
|
34
32
|
"costConfirmationRequired_role": "Pedir confirmación si excede umbral",
|
|
35
33
|
"costThreshold_role": "Umbral de alerta de costo de herramientas",
|
|
@@ -39,12 +37,17 @@
|
|
|
39
37
|
"fallback_enter_role": "Modelo principal de Agente (free/* o enter/*)",
|
|
40
38
|
"status_gui_role": "Notificaciones de estado",
|
|
41
39
|
"logs_gui_role": "Verbosidad de registros",
|
|
42
|
-
"
|
|
43
|
-
"threshold_wallet_role": "Alerta Billetera Premium baja",
|
|
40
|
+
"threshold_wallet_role": "Umbral de alerta del wallet de pago (pollen)",
|
|
44
41
|
"status_bar_role": "Mostrar ícono en la barra",
|
|
45
42
|
"lang_role": "Idioma del Plugin",
|
|
46
43
|
"not_configured": "No configurado",
|
|
47
|
-
"managed_auto": "Gestionado automáticamente"
|
|
44
|
+
"managed_auto": "Gestionado automáticamente",
|
|
45
|
+
"threshold_quest_role": "Umbral de alerta del saldo Quest (pollen)",
|
|
46
|
+
"timeouts_default_role": "Timeout global para operaciones remotas",
|
|
47
|
+
"timeouts_long_role": "Timeout para generaciones largas",
|
|
48
|
+
"timeouts_max_role": "Techo absoluto de timeout",
|
|
49
|
+
"timeouts_video_role": "Timeout de generación de video",
|
|
50
|
+
"timeouts_3d_role": "Timeout de generación 3D"
|
|
48
51
|
},
|
|
49
52
|
"generic": {
|
|
50
53
|
"add_key_hint": "💡 Usa /poll connect <key> para agregar una clave API.",
|
|
@@ -55,21 +58,17 @@
|
|
|
55
58
|
},
|
|
56
59
|
"mode": {
|
|
57
60
|
"current": "Current mode: {mode}",
|
|
58
|
-
"invalid": "❌
|
|
59
|
-
"pro_requires_key": "❌ 'pro' mode requires an API key.",
|
|
61
|
+
"invalid": "❌ Modo inválido '{mode}'. Use: manual, quest, quest_only, paid",
|
|
60
62
|
"verifying": "Verifying permissions...",
|
|
61
|
-
"denied": "❌
|
|
63
|
+
"denied": "❌ Acceso denegado a quest/quest_only/paid ({status}: {reason})",
|
|
62
64
|
"verify_error": "❌ Verification error: {error}",
|
|
63
|
-
"success": "✅ Switched to mode: {mode}"
|
|
65
|
+
"success": "✅ Switched to mode: {mode}",
|
|
66
|
+
"key_required": "❌ El modo '{mode}' requiere una clave API.",
|
|
67
|
+
"legacy_alias": " (alias heredado '{legacy}' → '{mode}')"
|
|
64
68
|
},
|
|
65
69
|
"usage": {
|
|
66
70
|
"title": "## 📊 Estadísticas Pollinations (Modo: {mode})\n\n",
|
|
67
71
|
"resources": "### 🌻 Recursos Base\n",
|
|
68
|
-
"tier": "- **Nivel:** {emoji} {tier} (Límite: {limit} 🌻)\n",
|
|
69
|
-
"quota": "- **Período:** {remaining} gastado / {limit} total\n",
|
|
70
|
-
"usage_bar": "- **Uso:** {bar}\n",
|
|
71
|
-
"wallet": "- **Saldo (Pagado + Misiones):** {balance} 🌻\n\n",
|
|
72
|
-
"reset": "### 🕒 Tiempo de recarga\n- **Próximo reinicio:** {date} (en {duration})\n\n",
|
|
73
72
|
"restricted_key": "⚠️ Clave API restringida. Detalles no disponibles.\n",
|
|
74
73
|
"period_detail": "### 📈 Detalle del período (desde {time})\n",
|
|
75
74
|
"total_reqs": "- **Solicitudes:** {reqs} ({inTok} in | {outTok} out)\n\n",
|
|
@@ -79,7 +78,8 @@
|
|
|
79
78
|
"full_requires_key": "⚠️ `/poll usage full` requiere una clave API conectada.\n",
|
|
80
79
|
"hint_full": "💡 Usa `/poll usage full` para ver detalles (requiere clave).",
|
|
81
80
|
"source_split": "- **Consumido este período:** 🎁 Misiones {tier} · 💎 Pagado {pack}\n",
|
|
82
|
-
"split": "- **Saldo:** {total} 🌻 · 🎁 Misiones ~{quest} · 💎 Pagado ~{paid}\n\n"
|
|
81
|
+
"split": "- **Saldo:** {total} 🌻 · 🎁 Misiones ~{quest} · 💎 Pagado ~{paid}\n\n",
|
|
82
|
+
"quest_note": "> ⚠️ El saldo Quest es una estimación local best-effort (el servidor no expone el desglose). El desglose fiable es `meter_source` en `/account/usage`.\n"
|
|
83
83
|
},
|
|
84
84
|
"fallback": {
|
|
85
85
|
"current": "Current fallbacks:\n- {free}\n- {enter}",
|
|
@@ -122,16 +122,14 @@
|
|
|
122
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).",
|
|
123
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.",
|
|
124
124
|
"features_config": "- **Configuración granular**, gestión de modos y tokens, protección de costos...",
|
|
125
|
-
"tiers_title": "> **Tu refill Quest Pollen:** {emoji} {tier}",
|
|
126
125
|
"about": "## 🌍 ¿Qué es pollinations.ai?\npollinations.ai es una plataforma de IA de código abierto creada por y para la comunidad. Ofrecemos una API unificada para Imagen, Texto, Audio y Video. Todo es abierto: nuestro código, roadmap, conversaciones. ¡Únete a nosotros!\n\nSin cajas negras. Sin bloqueos. Solo una API amigable y un Discord lleno de gente dispuesta a ayudar.",
|
|
127
|
-
"levels_title": "## 📈 Refill Quest Pollen por Hora",
|
|
128
|
-
"levels_list": "Tu refill por hora depende de tu nivel de contribucion. El Quest Pollen se acumula y no expira (mientras tu cuenta este activa).\n\n{tier_table}\n\n> ⚠️ El refill es **por hora** (reset a :00). El total diario es una estimacion (~24h x tasa horaria).",
|
|
129
126
|
"pollen_title": "## 💎 ¿Qué es el Pollen?",
|
|
130
127
|
"pollen_get": "Ejecutar modelos de IA cuesta dinero. El Pollen es nuestra forma de mantener los servidores funcionando sin anuncios ni vendiendo datos. Un crédito simple para todos los modelos — predecible y transparente.\n\n**$1 ≈ 1 Pollen**. Se gasta en llamadas API.",
|
|
131
128
|
"pollen_spend": "## 🛒 Como obtener Pollen?\n1. 🎯 **Quests** — Completa tareas en el dashboard (`/poll quests`).\n2. 💳 **Comprar** — Con tarjeta en enter.pollinations.ai.\n3. 🌻 **Dev earnings** — Activa ganancias de desarrollador en tu App Key.",
|
|
132
129
|
"quests": "## 🎯 Misiones — Gana Pollen gratis\nAhora el Pollen se gana principalmente completando **Misiones**. Buenas noticias: usar este plugin (modelos de texto, imagen y audio) completa varias misiones **retroactivamente** — ¡quizás ya tengas Pollen gratis esperando!\n\n👉 Revisa y reclama tus recompensas en el [panel](https://enter.pollinations.ai). _Reclamar solo se hace en el panel._\n\n> 💡 El Pollen de misión funciona en todos los modelos estándar. Los modelos 💎 de pago requieren Pollen comprado.",
|
|
133
|
-
"
|
|
134
|
-
"
|
|
130
|
+
"get_started": "## 🔑 Para empezar\n\n**1.** Crea una cuenta gratis en enter.pollinations.ai\n**2.** Conectate en 1 clic: `/poll login`\n**3.** O usa una clave manual: `/poll connect sk_...`\n\nEscribe `/poll help` para ver todos los comandos.",
|
|
131
|
+
"quest_paid_title": "## 🎁 Quest & 💎 Pollen de Pago",
|
|
132
|
+
"quest_paid_body": "El pollen se divide en dos columnas:\n\n- **🎁 Pollen Quest** — se gana completando **Quests** (gratis). El servidor lo consume primero.\n- **💎 Pollen de Pago** — comprado (tarjeta). Se usa cuando el Quest es insuficiente, o para modelos `paid_only`.\n\n> ⚠️ El plugin no puede leer el desglose en el servidor; estima Quest/Paid localmente y lee el desglose real (`meter_source`) desde `/account/usage`.\n\n**Modos:**\n- `quest` (QUEST_PREFERRED) — por defecto: Quest primero, fallback a Paid permitido.\n- `quest_only` (QUEST_ELIGIBLE_ONLY) — bloquea modelos paid_only, solo Quest best-effort.\n- `paid` (PAID_ALLOWED) — Paid permitido.\n- `manual` — sin política automática."
|
|
135
133
|
},
|
|
136
134
|
"pricing_units": {
|
|
137
135
|
"tokens": "~tokens",
|
|
@@ -140,7 +138,7 @@
|
|
|
140
138
|
"tok": "🌻/tok"
|
|
141
139
|
},
|
|
142
140
|
"login": {
|
|
143
|
-
"prompt": "## 🔐 Inicio rápido (Device Flow)\n\n**1.** Abre: **{uri_complete}**\n_(o ve a {uri} e ingresa el código de abajo)_\n\n**2.** Tu código: **`{code}`**\n\n**3.** Inicia sesión con GitHub, luego en el formulario de consentimiento:\n • ✅ Mantén **Profile** + **Usage** concedidos (necesarios para cuota, misiones y
|
|
141
|
+
"prompt": "## 🔐 Inicio rápido (Device Flow)\n\n**1.** Abre: **{uri_complete}**\n_(o ve a {uri} e ingresa el código de abajo)_\n\n**2.** Tu código: **`{code}`**\n\n**3.** Inicia sesión con GitHub, luego en el formulario de consentimiento:\n • ✅ Mantén **Profile** + **Usage** concedidos (necesarios para la cuota, las misiones y el respaldo gratuito)\n • 💡 Para una **clave ilimitada**: vacía el campo **Budget** (→ Ilimitado) y el campo **Expiry** (→ Nunca)\n • Haz clic en **Authorize**\n\nEl plugin espera y se conecta **automáticamente** al aprobar (un aviso confirma ✅).\n\n💡 _¿Prefieres una clave creada manualmente? Usa `/poll connect sk_...`._",
|
|
144
142
|
"already_running": "⏳ Ya hay un inicio de sesión en curso. Termina de autorizar en tu navegador, o espera un momento.",
|
|
145
143
|
"code_error": "❌ No se pudo iniciar sesión: {error}\n💡 Aún puedes usar `/poll connect sk_...` manualmente.",
|
|
146
144
|
"expired": "⏱️ Código de inicio caducado. Ejecuta /poll login de nuevo.",
|
|
@@ -149,7 +147,7 @@
|
|
|
149
147
|
"nothing_pending": "ℹ️ No hay inicio de sesión en curso. Ejecuta primero polli_login (sin wait) para obtener un código.",
|
|
150
148
|
"opened": "🌐 Abriendo tu navegador para autorizar…",
|
|
151
149
|
"still_waiting": "⏳ Esperando tu autorización en el navegador. Una vez aprobada, vuelve a llamar polli_login con wait:true para confirmar.",
|
|
152
|
-
"success_limited": "⚠️ Conectado, pero tu clave parece limitada (no concediste Profile/Usage). La visualización de cuota, el respaldo
|
|
150
|
+
"success_limited": "⚠️ Conectado, pero tu clave parece limitada (no concediste Profile/Usage). La visualización de cuota, el respaldo al universo gratuito y el control de billetera podrían no funcionar. Vuelve a iniciar sesión concediendo Profile + Usage, o usa una clave completa."
|
|
153
151
|
}
|
|
154
152
|
},
|
|
155
153
|
"proxy": {
|
|
@@ -159,11 +157,16 @@
|
|
|
159
157
|
"no_enter_models": "No se detectó ningún modelo Enterprise para esta clave."
|
|
160
158
|
},
|
|
161
159
|
"warnings": {
|
|
162
|
-
"
|
|
163
|
-
"
|
|
164
|
-
"
|
|
165
|
-
"
|
|
166
|
-
"
|
|
160
|
+
"wallet_limit_msg": "⚠️ **Alerta de Billetera Premium Excedida**\n\nTe queda menos del {threshold}% de tu billetera de pollen comprada.\n\n🔄 **Acción de Respaldo (Red de Seguridad)**:\nEl Agente ha cambiado a la red gratuita.",
|
|
161
|
+
"quota_unreachable_title": "⚠️ Cuota inaccesible",
|
|
162
|
+
"quota_unreachable_msg": "⚠️ **Verificación de cuota fallida** (error de red).\n\n🔄 **Fallback (Safety Net)**:\nEl agente cambió al universo gratuito para evitar un fallo.",
|
|
163
|
+
"balance_exhausted_title": "⚠️ Quest y Paid agotados",
|
|
164
|
+
"balance_exhausted_msg": "⚠️ **El pollen Quest y de pago parecen agotados.**\n\n🔄 **Fallback (Safety Net)**:\nEl agente cambió al universo gratuito. Gana pollen Quest con `/poll quests` o recarga en enter.pollinations.ai.",
|
|
165
|
+
"quest_floor_title": "⚠️ Saldo Quest bajo",
|
|
166
|
+
"quest_floor_msg": "⚠️ **El pollen Quest está en o por debajo de tu umbral ({floor} 🌻).**\n\nEl modo Quest-Only no gasta pollen de pago. 🔄 **Fallback**: El agente cambió al universo gratuito.\n\n> ⚠️ Best-effort: un débito Paid (pack) aún puede ocurrir en el servidor (race).",
|
|
167
|
+
"paid_blocked_questonly_title": "🚫 Modelo de pago bloqueado: {model}",
|
|
168
|
+
"paid_blocked_questonly_msg": "🚫 **Modelo de pago no disponible en modo Quest-Only**\n\nEl modelo `{model}` siempre consume pollen de pago (💎 paid_only).\n\n**Soluciones:**\n• `/poll config mode paid` — Permite modelos de pago con protección de wallet\n• `/poll config mode quest` — Quest primero con fallback a Paid permitido\n• `/poll config mode manual` — Sin restricciones, control total",
|
|
169
|
+
"wallet_limit_title": "⚠️ Wallet de pago bajo"
|
|
167
170
|
}
|
|
168
171
|
},
|
|
169
172
|
"toasts": {
|
|
@@ -206,7 +209,9 @@
|
|
|
206
209
|
"res_i2i_src": "I2I Fuente: {src}",
|
|
207
210
|
"res_file": "Archivo: {path}",
|
|
208
211
|
"res_size": "Tamaño: {size}",
|
|
209
|
-
"cost_title": "\n💰 **Reporte Financiero:**"
|
|
212
|
+
"cost_title": "\n💰 **Reporte Financiero:**",
|
|
213
|
+
"arg_timeout": "Timeout por llamada en segundos (10–3600).",
|
|
214
|
+
"invalid_timeout": "❌ timeout_seconds inválido: {reason}"
|
|
210
215
|
},
|
|
211
216
|
"config": {
|
|
212
217
|
"no_values": "No se han proporcionado valores de configuración para actualizar. Por favor especifica al menos uno en los argumentos.",
|
|
@@ -246,7 +251,8 @@
|
|
|
246
251
|
"result_recency": "📅 Fecha límite: {recency}",
|
|
247
252
|
"result_cost": "🪙 Costo: {cost}",
|
|
248
253
|
"result_cost_max": "🪙 Costo (Max: {maxCost})",
|
|
249
|
-
"error_prefix": "❌ Error: {error}"
|
|
254
|
+
"error_prefix": "❌ Error: {error}",
|
|
255
|
+
"warn_beta": "⚠️ (beta) La búsqueda web vía modelos Pollinations es experimental."
|
|
250
256
|
},
|
|
251
257
|
"polli_gen_video": {
|
|
252
258
|
"desc": "Genera un video desde texto o imagen con Pollinations.\n\n💡 **Modelos Dinámicos**:\nSe inyectan en tiempo real los límites y tarifas.\n\n- `veo` interpolación: Usa `reference_image=url1,url2`.",
|
|
@@ -295,7 +301,9 @@
|
|
|
295
301
|
"err_invalid": "❌ Parámetros inválidos: {msg}",
|
|
296
302
|
"err_520": "⚠️ Error 520 intermitente en LTX-2.",
|
|
297
303
|
"err_timeout": "❌ Tiempo de espera agotado.",
|
|
298
|
-
"err_gen": "❌ Error de generación: {error}"
|
|
304
|
+
"err_gen": "❌ Error de generación: {error}",
|
|
305
|
+
"arg_timeout": "Timeout por llamada en segundos (10–3600). Sin reenvío automático.",
|
|
306
|
+
"invalid_timeout": "❌ timeout_seconds inválido: {reason}"
|
|
299
307
|
},
|
|
300
308
|
"polli_gen_audio": {
|
|
301
309
|
"desc": "Convierte texto en voz (TTS) con Pollinations AI.\n\n**🔊 Modelos:**\n\n| Modelo | Tipo | Voces | Formato | Costo | Notas |\n|-------|------|--------|--------|------|-------|\n| openai-audio | TTS + STT | 6 | mp3, wav, pcm16 | El más bajo | **POR DEFECTO** - GPT-4o Audio |\n| elevenlabs | TTS | 34 | mp3, wav, etc. | Más alto | Voces expresivas |\n\n**🎵 OpenAI Audio (Por Defecto, Recomendado):**\n- Voces: `alloy`, `echo`, `fable`, `onyx`, `nova`, `shimmer`\n- Formatos: `mp3` (por defecto), `wav`, `pcm16`\n- Opción más económica\n\n**🎤 ElevenLabs:**\n- 34 voces expresivas (rachel, domi, bella, adam, etc.)\n- Más caro pero más expresivo\n\n**💡 Consejos:**\n- `openai-audio` para TTS económico\n- `elevenlabs` para voces expresivas\n- STT: usa `transcribe_audio`.",
|
|
@@ -463,16 +471,53 @@
|
|
|
463
471
|
"file_not_found": "❗ File not found: {path}",
|
|
464
472
|
"no_result": "❗ No result received.",
|
|
465
473
|
"error": "❗ Error: {error}"
|
|
474
|
+
},
|
|
475
|
+
"gen3d": {
|
|
476
|
+
"desc": "Genera un objeto 3D desde un prompt de texto o una imagen de referencia con Pollinations AI.\n\nLos modelos 3D actuales, acceso, capacidades E/S y costes se inyectan dinámicamente desde el Model Registry en vivo.\n\n**⏱️ Larga duración**: la generación puede tardar 20s–150s+ (LONG_BLOCKING). Usa `timeout_seconds` para controlar la espera local.\n\n**♻️ Recuperación**: tras un timeout, la generación puede seguir ejecutándose y facturarse. Relanzar con la MISMA seed devuelve el artefacto desde la caché (sin nueva factura).",
|
|
477
|
+
"arg_prompt": "Descripción de texto del objeto 3D (opcional si se da una imagen)",
|
|
478
|
+
"arg_image": "URL de imagen de referencia opcional (máx. 1 imagen)",
|
|
479
|
+
"arg_model": "Modelo a usar (por defecto: trellis-2).",
|
|
480
|
+
"arg_resolution": "Resolución: low / medium / high (por defecto: low)",
|
|
481
|
+
"arg_seed": "Seed para reproducibilidad y recuperación por caché",
|
|
482
|
+
"arg_save_to": "Directorio o ruta de archivo de salida personalizada",
|
|
483
|
+
"arg_filename": "Nombre de archivo personalizado (sin extensión)",
|
|
484
|
+
"arg_timeout": "Timeout por llamada en segundos (10–3600). Sin reenvío automático.",
|
|
485
|
+
"req_key": "❌ polli_gen_3d requiere una clave API (/poll login).",
|
|
486
|
+
"unknown_model": "Modelo '{model}' no está en el registro 3D — passthrough (beta)",
|
|
487
|
+
"invalid_image_url": "❌ URL de imagen inválida. Usa http:// o https://",
|
|
488
|
+
"invalid_timeout": "❌ timeout_seconds inválido: {reason}",
|
|
489
|
+
"blocked": "🚫 Generación 3D bloqueada por el Cost Guard.",
|
|
490
|
+
"generating": "Generando 3D: {model} ({resolution})...",
|
|
491
|
+
"success": "3D generado ✓ ({model})",
|
|
492
|
+
"err_format": "❌ Validación del artefacto fallida: se esperaba GLB (glTF-binary), recibido '{detected}'. Archivo NO guardado.",
|
|
493
|
+
"err_toast": "Error: {error}",
|
|
494
|
+
"err_timeout": "⏱️ **La generación 3D expiró tras {seconds}s.**\n\n⚠️ La generación puede seguir ejecutándose upstream y **puede facturarse** (timeout del cliente ≠ cancelación upstream). NO reenviamos automáticamente.\n\n♻️ **Recuperación**: relanza con los MISMOS parámetros y la seed `{seed}` (modelo `{model}`) — el resultado se sirve desde la caché y no se refactura.",
|
|
495
|
+
"err_pollen": "❌ Créditos de pollen insuficientes para {model}.\n💡 Completa quests o recarga en enter.pollinations.ai.",
|
|
496
|
+
"err_auth": "❌ Clave API inválida o no autorizada.",
|
|
497
|
+
"err_gen": "❌ Error de generación 3D: {error}",
|
|
498
|
+
"res_title": "### 🧊 Resultado de generación 3D",
|
|
499
|
+
"res_prompt": "- **Prompt** : {prompt}",
|
|
500
|
+
"res_model": "- **Modelo** : `{model}`",
|
|
501
|
+
"res_resolution": "- **Resolución** : {resolution}",
|
|
502
|
+
"res_seed": "- **Seed** : {seed}",
|
|
503
|
+
"res_image": "- **Imagen ref.** : {src}",
|
|
504
|
+
"res_file": "- **Archivo** : `{path}`",
|
|
505
|
+
"res_size": "- **Tamaño** : {size}",
|
|
506
|
+
"res_format": "- **Formato** : {ext} (validado por magic bytes)",
|
|
507
|
+
"res_cost_est": "- **Costo est.** : {cost}",
|
|
508
|
+
"res_cost_real": "- **Costo real** : **{cost}**",
|
|
509
|
+
"res_model_used": "- **Modelo real** : {model}",
|
|
510
|
+
"res_request_id": "- **Request ID** : {id}"
|
|
466
511
|
}
|
|
467
512
|
},
|
|
468
513
|
"connect_response": {
|
|
469
514
|
"title_key": "## 🍯💚 PLUGIN POLLINATIONS CONECTADO 💚🍯\n\n¡Bienvenido **{name}** al plugin de Pollinations Agent!\n**Modo actual**: `{mode}`",
|
|
470
|
-
"tools_intro": "### 🚀 Herramientas Multimedia Integradas\n\nEste plugin te permite generar código, imágenes, analizar videos e interactuar con los mejores modelos de IA sin problemas. Accede a los LLM más avanzados a través del chat, reestructuración o terminal.\n\n**Lo que este plugin trae para ti:**\n\n**🛠️ Herramientas gratuitas (Siempre Disponibles):**\n- `gen_qrcode` / `gen_diagram` / `gen_palette`\n- `remove_background`\n- `extract_frames` / `extract_audio`\n- `file_to_url`\n- `gen_edit_image_free` (gen & edición, ~20/día)\n- `gen_video_free` (gen video, ~5/día)\n- `object_remover`\n- `image_upscaler`\n- `image_enhancer`\n\n**💎 Herramientas Pollinations (Premium):**\n- `polli_gen_image`\n- `polli_gen_video`\n- `polli_gen_audio`/`polli_stt`\n- `polli_gen_music`\n- `polli_web_search`",
|
|
515
|
+
"tools_intro": "### 🚀 Herramientas Multimedia Integradas\n\nEste plugin te permite generar código, imágenes, analizar videos e interactuar con los mejores modelos de IA sin problemas. Accede a los LLM más avanzados a través del chat, reestructuración o terminal.\n\n**Lo que este plugin trae para ti:**\n\n**🛠️ Herramientas gratuitas (Siempre Disponibles):**\n- `gen_qrcode` / `gen_diagram` / `gen_palette`\n- `remove_background`\n- `extract_frames` / `extract_audio`\n- `file_to_url`\n- `gen_edit_image_free` (gen & edición, ~20/día)\n- `gen_video_free` (gen video, ~5/día)\n- `object_remover`\n- `image_upscaler`\n- `image_enhancer`\n\n**💎 Herramientas Pollinations (Premium):**\n- `polli_gen_image`\n- `polli_gen_video`\n- `polli_gen_3d`\n- `polli_gen_audio`/`polli_stt`\n- `polli_gen_music`\n- `polli_web_search`",
|
|
471
516
|
"terminal_cmds": "### 💻 Comandos de Terminal\nUsa `/poll help` para ver todos los comandos. Prueba `/poll models` para descubrir el catálogo o `/poll usage` para seguir tu consumo de pollen.",
|
|
472
517
|
"resources": "### 📚 Recursos\n* **Dashboard:** enter.pollinations.ai\n* **Discord:** Unete a la comunidad\n* **Plugin:** github.com/fkom13/opencode-pollinations-plugin",
|
|
473
518
|
"free_models_success": "Modelos gratuitos disponibles: {models}",
|
|
474
519
|
"free_models_error": "⚠️ No se pudieron obtener los modelos gratuitos.",
|
|
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
|
|
520
|
+
"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## 💰 Quest & Pollen de Pago\nEl **Pollen Quest** se gana gratis completando **Misiones** — ¡usar este plugin completa varias retroactivamente! Consulta `/poll quests`.\n\nCuando el Quest es insuficiente (o para modelos de pago), se usa **Pollen de Pago** (comprado). El plugin estima ambos localmente y lee el desglose real (`meter_source`) desde `/account/usage`.\n\n**¿Necesitas ayuda?** Escribe `/poll help`. Discord oficial: https://discord.gg/pollinations-ai-885844321461485618"
|
|
476
521
|
},
|
|
477
522
|
"cost_guard": {
|
|
478
523
|
"cost_validated_max": "💰 Costo validado (Máx teórico: {maxCost})",
|
|
@@ -483,18 +528,5 @@
|
|
|
483
528
|
"reason_fixed": "El costo estimado de esta acción ({cost}) excede el umbral definido ({limit}).",
|
|
484
529
|
"estimated_max": "💰 Costo estimado promedio: {cost} (Máx: {maxCost})",
|
|
485
530
|
"estimated": "💰 Costo estimado: {cost}"
|
|
486
|
-
},
|
|
487
|
-
"tier": {
|
|
488
|
-
"condition": {
|
|
489
|
-
"signup": "¡Solo regístrate!",
|
|
490
|
-
"auto_verify": "Verificación automática",
|
|
491
|
-
"under_review": "Cuenta en revisión",
|
|
492
|
-
"default": "Cuenta nueva (predeterminado)",
|
|
493
|
-
"community": "Miembro activo de la comunidad",
|
|
494
|
-
"quests": "Completa Misiones y contribuye",
|
|
495
|
-
"publish_app": "Publica una app",
|
|
496
|
-
"top_contributor": "Principal contribuidor",
|
|
497
|
-
"special": "Especial / solo por invitación"
|
|
498
|
-
}
|
|
499
531
|
}
|
|
500
532
|
}
|