@rubytech/taskmaster 1.0.98 → 1.0.99
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/agents/system-prompt.js +2 -1
- package/dist/agents/taskmaster-tools.js +6 -0
- package/dist/agents/tool-policy.js +2 -0
- package/dist/agents/tools/image-generate-api.js +154 -0
- package/dist/agents/tools/image-generate-tool.js +145 -0
- package/dist/build-info.json +3 -3
- package/dist/control-ui/assets/{index-TI7yF6r_.js → index-BiXCzgVk.js} +244 -244
- package/dist/control-ui/assets/index-BiXCzgVk.js.map +1 -0
- package/dist/control-ui/assets/{index-6WdtDXJj.css → index-Bj8TaDNH.css} +1 -1
- package/dist/control-ui/index.html +2 -2
- package/dist/gateway/chat-sanitize.js +59 -4
- package/dist/gateway/control-ui.js +8 -7
- package/package.json +1 -1
- package/scripts/install.sh +2 -2
- package/skills/image-gen/SKILL.md +68 -0
- package/skills/image-gen/references/models.md +83 -0
- package/skills/image-gen/references/prompting.md +184 -0
- package/skills/image-gen/references/styles.md +113 -0
- package/skills/image-gen/references/troubleshooting.md +93 -0
- package/taskmaster-docs/USER-GUIDE.md +67 -6
- package/dist/control-ui/assets/index-TI7yF6r_.js.map +0 -1
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# Image Generation — Troubleshooting
|
|
2
|
+
|
|
3
|
+
When `image_generate` fails, diagnose the error and guide the user through resolution. Many issues are fixable in-session using the browser tool.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Quota Exceeded
|
|
8
|
+
|
|
9
|
+
**Symptoms:** Error contains "quota", "rate limit", "429", or "resource exhausted".
|
|
10
|
+
|
|
11
|
+
The free Google AI tier has daily generation limits. This is the most common failure.
|
|
12
|
+
|
|
13
|
+
### Resolution steps
|
|
14
|
+
|
|
15
|
+
1. **Explain clearly** — "The Google AI free tier has a daily image generation limit, and we've hit it."
|
|
16
|
+
|
|
17
|
+
2. **Offer to check quota together** — Use the browser tool to navigate to the Google AI Studio billing/quota page so the user can see their current usage:
|
|
18
|
+
- Navigate to `https://aistudio.google.com/apikey`
|
|
19
|
+
- Take a screenshot and send it — "Here's your current API key dashboard."
|
|
20
|
+
- Look for quota/usage indicators on the page
|
|
21
|
+
|
|
22
|
+
3. **Present options based on what you find:**
|
|
23
|
+
- **Wait for reset** — free tier quotas reset daily. Tell the user approximately when.
|
|
24
|
+
- **Upgrade the plan** — offer to navigate to billing: `https://aistudio.google.com/plan` or `https://ai.google.dev/pricing`. Walk them through upgrading to pay-as-you-go if they want. Take screenshots at each step.
|
|
25
|
+
- **Try a different model** — Imagen and Gemini have separate quotas. If one is exhausted, try the other family.
|
|
26
|
+
- **Reduce usage** — suggest lower resolution (1K instead of 2K/4K), fewer images per request (Imagen), or simpler prompts.
|
|
27
|
+
|
|
28
|
+
4. **If the user wants to upgrade**, guide them through it with browser automation — same pattern as the `google-ai` key setup skill. Navigate, screenshot, explain each step.
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## API Key Missing or Invalid
|
|
33
|
+
|
|
34
|
+
**Symptoms:** Error contains "API key", "authentication", "401", "403", or "PERMISSION_DENIED".
|
|
35
|
+
|
|
36
|
+
### Resolution steps
|
|
37
|
+
|
|
38
|
+
1. **Check if key exists** — use `api_keys({ action: "list" })` to verify the Google key is set.
|
|
39
|
+
2. **If missing** — activate the `google-ai` skill to guide browser-assisted key setup.
|
|
40
|
+
3. **If present but invalid** — the key may have been revoked or restricted. Offer to navigate to `https://aistudio.google.com/apikey` to verify the key is still active and create a new one if needed. Store the new key with `api_keys({ action: "set", provider: "google", apiKey: "<key>" })`.
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## Content Policy Rejection
|
|
45
|
+
|
|
46
|
+
**Symptoms:** Error contains "safety", "blocked", "policy", "SAFETY", or "content filter".
|
|
47
|
+
|
|
48
|
+
Google's models refuse to generate certain content (violence, explicit material, real public figures, copyrighted characters).
|
|
49
|
+
|
|
50
|
+
### Resolution steps
|
|
51
|
+
|
|
52
|
+
1. **Explain the constraint** — "Google's image models have content safety filters. The prompt triggered one of them."
|
|
53
|
+
2. **Suggest prompt adjustments:**
|
|
54
|
+
- Make the subject more generic ("a cartoon dog" instead of a specific character)
|
|
55
|
+
- Remove potentially sensitive elements
|
|
56
|
+
- Rephrase to be less ambiguous
|
|
57
|
+
3. **Try a different model** — Imagen and Gemini have different safety thresholds. One may accept what the other rejects.
|
|
58
|
+
4. **For person-related rejections** — if using Imagen, check the `personGeneration` parameter. `dont_allow` is most restrictive, `allow_adult` is default.
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## Model Not Available
|
|
63
|
+
|
|
64
|
+
**Symptoms:** Error contains "model not found", "not supported", "404".
|
|
65
|
+
|
|
66
|
+
Preview models (like `gemini-3-pro-image-preview`) may be temporarily unavailable or deprecated.
|
|
67
|
+
|
|
68
|
+
### Resolution steps
|
|
69
|
+
|
|
70
|
+
1. **Fall back to a stable model** — try `gemini-2.5-flash-image` (most reliable) or `imagen-4.0-generate-001`.
|
|
71
|
+
2. **If all models fail** — there may be a regional or account restriction. Check `https://ai.google.dev/gemini-api/docs/models` for current availability.
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## Network or Timeout Errors
|
|
76
|
+
|
|
77
|
+
**Symptoms:** Error contains "timeout", "ECONNREFUSED", "network", or "fetch failed".
|
|
78
|
+
|
|
79
|
+
### Resolution steps
|
|
80
|
+
|
|
81
|
+
1. **Retry once** — transient network issues resolve on retry.
|
|
82
|
+
2. **If persistent** — check internet connectivity. Image generation requires outbound HTTPS to `generativelanguage.googleapis.com`.
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## General Approach
|
|
87
|
+
|
|
88
|
+
When any error occurs:
|
|
89
|
+
|
|
90
|
+
1. **Read the error message carefully** — it usually indicates the category above.
|
|
91
|
+
2. **Don't give up after one failure** — diagnose, explain, and offer a concrete next step.
|
|
92
|
+
3. **Use the browser tool proactively** — offer to navigate to relevant Google pages so you can investigate together. This is a collaborative troubleshooting session, not a dead end.
|
|
93
|
+
4. **Always tell the user what happened and why** — no vague "something went wrong" messages. Be specific about the error and what it means.
|
|
@@ -23,7 +23,7 @@ If you received a Taskmaster device:
|
|
|
23
23
|
2. Plug it into a wall socket or power strip
|
|
24
24
|
3. Wait about 2 minutes for it to start up
|
|
25
25
|
|
|
26
|
-
> **WiFi:** Your device needs an internet connection. You can plug a network cable directly into it
|
|
26
|
+
> **WiFi:** Your device needs an internet connection. You can plug a network cable directly into it to get started, then connect to WiFi from the Control Panel (see "WiFi" below). Need help? Message us on WhatsApp at **+44 7591 215452** or visit [taskmaster.bot](https://www.taskmaster.bot/).
|
|
27
27
|
|
|
28
28
|
Then open your web browser on any device connected to the same WiFi and go to:
|
|
29
29
|
|
|
@@ -39,7 +39,7 @@ You'll need a monitor, keyboard, and mouse connected to the Pi.
|
|
|
39
39
|
2. Run:
|
|
40
40
|
|
|
41
41
|
```bash
|
|
42
|
-
curl -fsSL https://taskmaster.bot/install.sh | bash
|
|
42
|
+
curl -fsSL https://taskmaster.bot/install.sh | sudo bash
|
|
43
43
|
```
|
|
44
44
|
|
|
45
45
|
3. Wait for it to finish (a few minutes — it installs Node.js if needed)
|
|
@@ -52,7 +52,7 @@ curl -fsSL https://taskmaster.bot/install.sh | bash
|
|
|
52
52
|
Open **Terminal** (search for "Terminal" in Spotlight) and run:
|
|
53
53
|
|
|
54
54
|
```bash
|
|
55
|
-
curl -fsSL https://taskmaster.bot/install.sh | bash
|
|
55
|
+
curl -fsSL https://taskmaster.bot/install.sh | sudo bash
|
|
56
56
|
```
|
|
57
57
|
|
|
58
58
|
This installs Node.js (if needed), Taskmaster, and sets up the background service. Once finished, open your browser and go to: **http://taskmaster.local:18789/setup**
|
|
@@ -60,7 +60,7 @@ This installs Node.js (if needed), Taskmaster, and sets up the background servic
|
|
|
60
60
|
**Custom port:** If you're running multiple Taskmaster instances (e.g., one on a Pi and one on a Mac), give each a different port:
|
|
61
61
|
|
|
62
62
|
```bash
|
|
63
|
-
curl -fsSL https://taskmaster.bot/install.sh | bash -s -- --port 19000
|
|
63
|
+
curl -fsSL https://taskmaster.bot/install.sh | sudo bash -s -- --port 19000
|
|
64
64
|
```
|
|
65
65
|
|
|
66
66
|
When using a custom port, the hostname includes the port to avoid conflicts. The setup URL becomes `http://taskmaster-19000.local:19000/setup`.
|
|
@@ -325,6 +325,25 @@ Your assistant can analyse photos you send it and read common document formats.
|
|
|
325
325
|
- "Read the attached invoice and tell me the total"
|
|
326
326
|
- "Summarise the key points from this PDF"
|
|
327
327
|
|
|
328
|
+
### Image Generation
|
|
329
|
+
|
|
330
|
+
Your assistant can generate images from text descriptions using Google AI models. Ask for any kind of image — product photos, illustrations, logos, social media graphics — and it will guide you through style and model choices, then generate the image directly in the chat.
|
|
331
|
+
|
|
332
|
+
| Capability | Description |
|
|
333
|
+
|------------|-------------|
|
|
334
|
+
| Generate images | Create images from text descriptions — photos, illustrations, graphics, logos |
|
|
335
|
+
| Multiple models | Choose from fast drafts (Gemini Flash) to high-fidelity output (Imagen 4 Ultra) |
|
|
336
|
+
| Style guidance | Your assistant helps with style, aspect ratio, lighting, and mood choices |
|
|
337
|
+
| Iterate | Refine results — adjust style, change composition, try a different model |
|
|
338
|
+
|
|
339
|
+
**Try asking:**
|
|
340
|
+
- "Generate a product photo of a coffee mug on a white background"
|
|
341
|
+
- "Create a watercolour illustration of a sunset over the ocean"
|
|
342
|
+
- "Design a minimalist logo concept for a landscaping business"
|
|
343
|
+
- "Make a social media graphic for a summer sale, 1:1 square format"
|
|
344
|
+
|
|
345
|
+
Image generation requires a Google AI API key (see API Keys below). Generated images are saved to your workspace and displayed inline in the chat.
|
|
346
|
+
|
|
328
347
|
### Voice Notes & Video
|
|
329
348
|
|
|
330
349
|
When someone sends a voice note, image, or video, your assistant processes it automatically before responding — no extra steps needed.
|
|
@@ -467,7 +486,7 @@ These unlock additional capabilities. All are optional — your assistant works
|
|
|
467
486
|
| Provider | What it unlocks | Free tier? |
|
|
468
487
|
|----------|----------------|------------|
|
|
469
488
|
| **Tavily** | Web search — lets your assistant search the internet | Yes (free plan available) |
|
|
470
|
-
| **Google** | Voice note transcription
|
|
489
|
+
| **Google** | Voice note transcription, video analysis, and image generation | Yes (limited free tier) |
|
|
471
490
|
|
|
472
491
|
> **Note:** Image analysis does not need an extra API key — Claude has built-in vision and analyses images directly.
|
|
473
492
|
|
|
@@ -563,6 +582,7 @@ The setup page shows a **Status Dashboard** with status indicators for each serv
|
|
|
563
582
|
| **WhatsApp** | Connected | Linked but not connected | Not paired |
|
|
564
583
|
| **iMessage** | Connected | Configured but not running | Not configured |
|
|
565
584
|
| **Software** | Up to date | Update available | Not checked |
|
|
585
|
+
| **WiFi** (Pi only) | Connected to a network | Not connected | NetworkManager not available |
|
|
566
586
|
|
|
567
587
|
**Your assistant is ready when Gateway and Claude are green.** You can start chatting straight away using the Chat page. WhatsApp and iMessage are optional — connect them when you're ready.
|
|
568
588
|
|
|
@@ -633,6 +653,27 @@ You can filter by:
|
|
|
633
653
|
|
|
634
654
|
Both views support **auto-follow** (keeps the view scrolled to the latest entries) and **export** to download a log file.
|
|
635
655
|
|
|
656
|
+
### WiFi (Raspberry Pi)
|
|
657
|
+
|
|
658
|
+
If your Pi is connected by Ethernet cable, you can switch to WiFi directly from the Control Panel — no monitor or keyboard needed.
|
|
659
|
+
|
|
660
|
+
1. Go to the **Setup** page
|
|
661
|
+
2. Find the **WiFi** row in the status dashboard (only appears on Raspberry Pi)
|
|
662
|
+
3. Tap **Scan** — a list of nearby WiFi networks appears, sorted by signal strength
|
|
663
|
+
4. Tap the network you want to connect to
|
|
664
|
+
5. If the network is password-protected, enter the password and tap **Connect** (or press Enter)
|
|
665
|
+
6. The row updates to show the connected network name, signal strength, and IP address
|
|
666
|
+
|
|
667
|
+
**Signal bars** next to each network name show the signal strength — more lit bars means a stronger signal.
|
|
668
|
+
|
|
669
|
+
**Disconnecting:** Tap **Disconnect** to drop the current WiFi connection. This is useful if you want to switch back to Ethernet or connect to a different network.
|
|
670
|
+
|
|
671
|
+
**Closing the list:** Tap **Close** to dismiss the network list without making changes. You can also tap the network you're already connected to (marked with a green tick) to dismiss the list.
|
|
672
|
+
|
|
673
|
+
**Rescanning:** While the network list is open, tap **Scan** again at the top to refresh the list with the latest networks.
|
|
674
|
+
|
|
675
|
+
> **Tip:** Connect an Ethernet cable first, open the Control Panel, then use the WiFi row to connect. Once WiFi is working, you can remove the Ethernet cable.
|
|
676
|
+
|
|
636
677
|
### Changing Network Settings
|
|
637
678
|
|
|
638
679
|
You might need to change two network settings after your Pi is deployed:
|
|
@@ -1229,6 +1270,26 @@ Click **Disable** on the Internet Access row. The public URL stops working immed
|
|
|
1229
1270
|
|
|
1230
1271
|
When Internet Access is active, click the copy icon next to the URL to copy it to your clipboard. You can share this URL or embed it on your website.
|
|
1231
1272
|
|
|
1273
|
+
### Embedding the chat widget on your website
|
|
1274
|
+
|
|
1275
|
+
Once Internet Access is enabled, you can add a floating chat button to any website. Add this code just before the closing `</body>` tag:
|
|
1276
|
+
|
|
1277
|
+
```html
|
|
1278
|
+
<script src="https://YOUR-PUBLIC-URL/public/widget.js"></script>
|
|
1279
|
+
<script>
|
|
1280
|
+
Taskmaster.init({
|
|
1281
|
+
server: "https://YOUR-PUBLIC-URL",
|
|
1282
|
+
accountId: "your-account-id"
|
|
1283
|
+
});
|
|
1284
|
+
</script>
|
|
1285
|
+
```
|
|
1286
|
+
|
|
1287
|
+
Replace `YOUR-PUBLIC-URL` with the URL shown on the Internet Access row (e.g. `https://taskmaster.tail0e0afb.ts.net`) and `your-account-id` with your account name (e.g. `taskmaster`).
|
|
1288
|
+
|
|
1289
|
+
A chat button appears in the bottom-right corner of the page. Clicking it opens a chat window where visitors can talk to your assistant — no WhatsApp required.
|
|
1290
|
+
|
|
1291
|
+
You can optionally set the button colour to match your website by adding `color: "#your-hex-colour"` to the init options.
|
|
1292
|
+
|
|
1232
1293
|
---
|
|
1233
1294
|
|
|
1234
1295
|
## Chat Commands
|
|
@@ -1333,7 +1394,7 @@ You don't need to refresh the page — the overlay stays visible during the upda
|
|
|
1333
1394
|
You can also update by re-running the install command in Terminal:
|
|
1334
1395
|
|
|
1335
1396
|
```bash
|
|
1336
|
-
curl -fsSL https://taskmaster.bot/install.sh | bash
|
|
1397
|
+
curl -fsSL https://taskmaster.bot/install.sh | sudo bash
|
|
1337
1398
|
```
|
|
1338
1399
|
|
|
1339
1400
|
This detects your existing installation and upgrades it in place.
|