@rubytech/taskmaster 1.0.98 → 1.0.100
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/dist/gateway/server-methods/files.js +3 -3
- package/dist/hooks/bundled/license-request/HOOK.md +47 -0
- package/dist/hooks/bundled/license-request/handler.js +192 -0
- 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/skills/taskmaster/SKILL.md +6 -6
- package/taskmaster-docs/USER-GUIDE.md +67 -6
- package/templates/beagle/agents/admin/AGENTS.md +2 -2
- package/templates/beagle/agents/public/AGENTS.md +2 -2
- package/templates/beagle/skills/beagle/SKILL.md +3 -3
- package/templates/beagle/skills/beagle/references/booking-schema.md +1 -1
- package/templates/beagle/skills/beagle/references/data-compliance.md +2 -2
- package/templates/beagle/skills/beagle/references/fee-collection.md +1 -1
- package/templates/beagle/skills/beagle/references/workflow.md +2 -2
- package/templates/maxy/TOOLS.md +15 -0
- package/templates/maxy/agents/admin/AGENTS.md +70 -0
- package/templates/maxy/agents/admin/BOOTSTRAP.md +30 -0
- package/templates/maxy/agents/admin/HEARTBEAT.md +6 -0
- package/templates/maxy/agents/admin/IDENTITY.md +13 -0
- package/templates/maxy/agents/admin/SOUL.md +21 -0
- package/templates/maxy/agents/admin/TOOLS.md +20 -0
- package/templates/maxy/agents/admin/USER.md +17 -0
- package/templates/maxy/agents/public/AGENTS.md +72 -0
- package/templates/maxy/agents/public/HEARTBEAT.md +2 -0
- package/templates/maxy/agents/public/IDENTITY.md +13 -0
- package/templates/maxy/agents/public/SOUL.md +60 -0
- package/templates/maxy/agents/public/TOOLS.md +20 -0
- package/templates/maxy/agents/public/USER.md +17 -0
- package/templates/maxy/memory/public/FAQ.md +241 -0
- package/templates/maxy/skills/maxy/SKILL.md +55 -0
- package/templates/maxy/skills/personal-assistant/SKILL.md +50 -0
- package/templates/taskmaster/agents/admin/AGENTS.md +20 -0
- package/templates/taskmaster/agents/public/AGENTS.md +9 -0
- package/dist/control-ui/assets/index-TI7yF6r_.js.map +0 -1
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
# Expert Prompt Construction
|
|
2
|
+
|
|
3
|
+
A strong prompt is the difference between a usable image and a generic one. This reference covers prompt structure, quality modifiers, and business-specific examples.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Prompt Structure
|
|
8
|
+
|
|
9
|
+
Build prompts in this order. Each element adds specificity. Not every element is needed for every image — use judgement based on the request.
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
Subject → Style → Composition → Lighting → Mood → Quality modifiers
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
**Subject:** What is in the image. Be concrete — "a golden retriever puppy sitting on grass" beats "a dog." Include materials, textures, and context when relevant.
|
|
16
|
+
|
|
17
|
+
**Style:** How the image looks. Photorealistic, illustration, watercolour, etc. See `styles.md` for vocabulary.
|
|
18
|
+
|
|
19
|
+
**Composition:** How the frame is arranged. Camera angle, framing, depth of field, negative space.
|
|
20
|
+
|
|
21
|
+
**Lighting:** How the scene is lit. Studio, golden hour, dramatic, etc. This has outsized impact on mood.
|
|
22
|
+
|
|
23
|
+
**Mood:** The emotional feel. Professional, cozy, dramatic, energetic. Guides the overall atmosphere.
|
|
24
|
+
|
|
25
|
+
**Quality modifiers:** Technical terms that push the model toward higher-quality output.
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## Quality Modifiers
|
|
30
|
+
|
|
31
|
+
Append these to improve output quality. Use sparingly — 2-3 is effective, more can cause conflicting signals.
|
|
32
|
+
|
|
33
|
+
- "highly detailed" — encourages fine detail and texture
|
|
34
|
+
- "professional quality" — steers toward polished, commercial output
|
|
35
|
+
- "sharp focus" — reduces soft or blurry areas
|
|
36
|
+
- "4K" / "8K resolution" — emphasises resolution and clarity in the prompt
|
|
37
|
+
- "award-winning" — biases toward striking, well-composed results
|
|
38
|
+
- "editorial quality" — clean, publication-ready aesthetic
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## Composition Terms
|
|
43
|
+
|
|
44
|
+
| Term | Effect |
|
|
45
|
+
|------|--------|
|
|
46
|
+
| "close-up" | Tight framing on subject |
|
|
47
|
+
| "wide angle" | Expansive view, more context |
|
|
48
|
+
| "bird's eye view" | Top-down perspective |
|
|
49
|
+
| "eye level" | Natural, relatable perspective |
|
|
50
|
+
| "rule of thirds" | Subject offset, balanced composition |
|
|
51
|
+
| "centered" | Subject in the middle, symmetrical |
|
|
52
|
+
| "symmetrical" | Mirror balance, architectural feel |
|
|
53
|
+
| "shallow depth of field" | Subject sharp, background blurred |
|
|
54
|
+
| "bokeh background" | Soft, circular blur behind subject |
|
|
55
|
+
| "negative space" | Large empty areas, minimalist feel |
|
|
56
|
+
| "minimalist composition" | Few elements, clean, focused |
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## Business Use Case Examples
|
|
61
|
+
|
|
62
|
+
These are starting points. Adapt subject, colours, and details to the user's specific needs.
|
|
63
|
+
|
|
64
|
+
### Product Photography
|
|
65
|
+
|
|
66
|
+
```
|
|
67
|
+
Professional product photograph of [item] on a clean white surface, studio lighting,
|
|
68
|
+
shallow depth of field, commercial quality, highly detailed, 4K
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
```
|
|
72
|
+
Lifestyle product shot of [item] in a modern kitchen, natural window light,
|
|
73
|
+
warm tones, editorial quality, shallow depth of field
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
```
|
|
77
|
+
Flat lay arrangement of [items] on a marble surface, top-down view,
|
|
78
|
+
soft diffused lighting, minimalist composition, professional quality
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### Social Media Graphics
|
|
82
|
+
|
|
83
|
+
```
|
|
84
|
+
Vibrant flat design illustration of [concept], bold colours, clean lines,
|
|
85
|
+
modern aesthetic, Instagram-ready, 1:1 aspect ratio
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
```
|
|
89
|
+
Eye-catching social media graphic with [text/concept], gradient background,
|
|
90
|
+
bold typography space, energetic mood, vibrant colours
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
Minimalist quote background, soft pastel gradient, clean negative space
|
|
95
|
+
for text overlay, calming mood, 1:1
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### Logo Concepts
|
|
99
|
+
|
|
100
|
+
```
|
|
101
|
+
Minimalist logo design for [business type], clean vector style, simple geometric shapes,
|
|
102
|
+
professional, white background, scalable design
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
```
|
|
106
|
+
Modern logo mark for [business type], flat design, single accent colour on white,
|
|
107
|
+
memorable silhouette, minimalist
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
Note: Image generation models produce raster images, not vectors. Generated logos work well as concepts and mood boards. For final logo files, the user will need a graphic designer to recreate the chosen concept as a vector.
|
|
111
|
+
|
|
112
|
+
### Business Headshots
|
|
113
|
+
|
|
114
|
+
```
|
|
115
|
+
Professional headshot portrait, studio lighting, neutral grey background,
|
|
116
|
+
sharp focus, natural expression, business attire, editorial quality
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
```
|
|
120
|
+
Approachable business portrait, natural window light, warm tones,
|
|
121
|
+
shallow depth of field, genuine smile, professional quality
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### Illustrations
|
|
125
|
+
|
|
126
|
+
```
|
|
127
|
+
Warm watercolour illustration of [scene], soft edges, pastel palette,
|
|
128
|
+
editorial style, hand-painted feel, gentle mood
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
```
|
|
132
|
+
Detailed line art illustration of [subject], black ink on white,
|
|
133
|
+
clean lines, technical precision, architectural style
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
```
|
|
137
|
+
Playful children's book illustration of [scene], bright colours,
|
|
138
|
+
rounded shapes, whimsical mood, hand-drawn style
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### Marketing and Print
|
|
142
|
+
|
|
143
|
+
```
|
|
144
|
+
Hero image for [business type] website, wide angle shot of [scene],
|
|
145
|
+
golden hour lighting, professional quality, 16:9, inviting mood
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
```
|
|
149
|
+
Business card background, abstract geometric pattern, [brand colours],
|
|
150
|
+
subtle texture, professional, minimalist, 3:2
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
## Iteration Tips
|
|
156
|
+
|
|
157
|
+
When the first result isn't right, refine systematically rather than starting from scratch.
|
|
158
|
+
|
|
159
|
+
**Change one thing at a time.** If the lighting is wrong but the composition is good, adjust only the lighting terms. Changing everything at once makes it impossible to learn what works.
|
|
160
|
+
|
|
161
|
+
**Add specificity to fix vagueness.** Generic subjects produce generic results. "A dog" becomes "a golden retriever puppy sitting on freshly cut grass, looking at camera." Specificity is the most reliable way to improve output.
|
|
162
|
+
|
|
163
|
+
**Use Gemini models for iterative refinement.** Gemini supports multi-turn editing — generate an image, then ask to change specific elements ("make the background warmer," "remove the text," "zoom in on the product"). This is faster than re-prompting from scratch.
|
|
164
|
+
|
|
165
|
+
**Switch to Imagen for final output.** Once the concept is right (via Gemini iteration), re-generate with Imagen Standard or Ultra for maximum fidelity. Think of Gemini as the sketch pad and Imagen as the final print.
|
|
166
|
+
|
|
167
|
+
**Ask the user what to change, not whether they like it.** "What would you change?" gets more useful feedback than "Do you like it?" People find it easier to articulate what's wrong than to rate overall quality.
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
## Imagen-Specific Tips
|
|
172
|
+
|
|
173
|
+
Imagen models have constraints that affect prompt strategy:
|
|
174
|
+
|
|
175
|
+
- **English only** — prompts must be in English, even if the user's conversation is in another language. Translate the intent, then prompt in English.
|
|
176
|
+
- **480-token prompt limit** — be concise. Front-load the most important elements (subject, style) and put modifiers at the end so they get trimmed first if the prompt is too long.
|
|
177
|
+
- **Concrete over abstract** — Imagen produces better results with specific, visual descriptions than with abstract concepts. "A sunrise over a calm ocean" works better than "hope and renewal."
|
|
178
|
+
- **Person generation control** — use `personGeneration: "dont_allow"` when people aren't needed in the image. This avoids potential content policy issues and often produces cleaner results for product/object shots.
|
|
179
|
+
|
|
180
|
+
---
|
|
181
|
+
|
|
182
|
+
## Showing the Prompt
|
|
183
|
+
|
|
184
|
+
Show the user the crafted prompt AND call `image_generate` in the same turn. Do not wait for prompt approval before generating — generate immediately, then iterate. This avoids unnecessary round-trips and gives the user a concrete result to react to. Frame it as: "Here's what I'm generating:" followed by the tool call. Iterate after seeing the result.
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
# Style, Format & Visual Vocabulary
|
|
2
|
+
|
|
3
|
+
Use this reference when discussing visual style with the user. Suggest options based on their use case — most users know what they want to feel, not the technical vocabulary to express it.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Style Categories
|
|
8
|
+
|
|
9
|
+
Each style has distinct strengths. Match the style to the purpose, not personal preference.
|
|
10
|
+
|
|
11
|
+
| Style | Character | When to suggest |
|
|
12
|
+
|-------|-----------|-----------------|
|
|
13
|
+
| **Photorealistic** | Lifelike, indistinguishable from a photograph | Product photography, headshots, real estate, food |
|
|
14
|
+
| **Illustration** | Hand-drawn feel, artistic interpretation | Editorial content, children's materials, storytelling |
|
|
15
|
+
| **Digital art** | Polished, vibrant, contemporary | Tech marketing, game assets, social media |
|
|
16
|
+
| **Watercolour** | Soft edges, translucent washes, organic | Invitations, fine art prints, greeting cards |
|
|
17
|
+
| **Oil painting** | Rich textures, visible brushwork, classical depth | Portraits, wall art, premium branding |
|
|
18
|
+
| **Minimalist** | Clean, sparse, essential shapes only | Logos, icons, modern branding |
|
|
19
|
+
| **3D render** | Dimensional, material-accurate, product-focused | Product mockups, architectural visualisation, tech |
|
|
20
|
+
| **Pixel art** | Blocky, nostalgic, 8/16-bit aesthetic | Gaming, retro branding, novelty |
|
|
21
|
+
| **Vector / flat** | Clean lines, solid fills, scalable | Infographics, UI elements, icons, print |
|
|
22
|
+
| **Sketch / line art** | Raw, conceptual, structural | Wireframes, concept art, technical illustration |
|
|
23
|
+
| **Pop art** | Bold outlines, high contrast, graphic | Marketing, social media, event posters |
|
|
24
|
+
| **Anime / manga** | Expressive, character-driven, stylised | Character design, storytelling, youth audience |
|
|
25
|
+
| **Vintage / retro** | Aged, film grain, muted tones, nostalgic | Heritage branding, event themes, editorial |
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## Aspect Ratios
|
|
30
|
+
|
|
31
|
+
Aspect ratio should match the output medium. Ask the user where the image will be used if they haven't said.
|
|
32
|
+
|
|
33
|
+
| Ratio | Common uses | Notes |
|
|
34
|
+
|-------|-------------|-------|
|
|
35
|
+
| **1:1** | Social media posts, profile pictures, product shots | Universal default |
|
|
36
|
+
| **16:9** | Presentations, hero images, desktop wallpapers, YouTube thumbnails | Standard widescreen |
|
|
37
|
+
| **9:16** | Instagram/TikTok stories, mobile wallpapers, vertical ads | Vertical video format |
|
|
38
|
+
| **3:4 / 4:3** | Portrait/landscape photos, print | Classic photography |
|
|
39
|
+
| **3:2 / 2:3** | Traditional photo format, DSLR native | Gemini only |
|
|
40
|
+
| **21:9** | Ultrawide banners, website headers, cinematic | Gemini only |
|
|
41
|
+
|
|
42
|
+
When a requested ratio isn't available for the chosen model (e.g. 21:9 on Imagen), explain the limitation and suggest the closest alternative.
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Colour Vocabulary
|
|
47
|
+
|
|
48
|
+
Use these terms in prompts to steer colour treatment. Combine with style for precision.
|
|
49
|
+
|
|
50
|
+
| Term | Effect |
|
|
51
|
+
|------|--------|
|
|
52
|
+
| **Warm** | Reds, oranges, yellows — cozy, inviting |
|
|
53
|
+
| **Cool** | Blues, greens, purples — calm, professional |
|
|
54
|
+
| **Muted** | Desaturated, subdued — sophisticated, understated |
|
|
55
|
+
| **Vibrant** | Saturated, bold — energetic, attention-grabbing |
|
|
56
|
+
| **Monochrome** | Single hue or black/white — dramatic, editorial |
|
|
57
|
+
| **Pastel** | Soft, light tints — gentle, approachable |
|
|
58
|
+
| **Neon** | Electric, glowing — nightlife, tech, youth |
|
|
59
|
+
| **Earth tones** | Browns, tans, olive — natural, organic |
|
|
60
|
+
| **Jewel tones** | Deep emerald, sapphire, ruby — rich, luxurious |
|
|
61
|
+
| **Neutral** | Greys, whites, beiges — clean, unobtrusive |
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## Mood Vocabulary
|
|
66
|
+
|
|
67
|
+
Mood shapes the overall emotional impression. It influences lighting, colour, composition, and subject expression.
|
|
68
|
+
|
|
69
|
+
| Mood | Visual impression |
|
|
70
|
+
|------|-------------------|
|
|
71
|
+
| **Dramatic** | High contrast, deep shadows, strong focal point |
|
|
72
|
+
| **Serene** | Soft light, open space, gentle colours |
|
|
73
|
+
| **Energetic** | Bright, dynamic angles, saturated colour |
|
|
74
|
+
| **Mysterious** | Low light, fog, obscured elements, cool tones |
|
|
75
|
+
| **Whimsical** | Playful, unexpected, fantasy elements |
|
|
76
|
+
| **Professional** | Clean, neutral, well-lit, no visual noise |
|
|
77
|
+
| **Playful** | Bright, rounded shapes, warm palette |
|
|
78
|
+
| **Dark** | Low-key lighting, muted palette, heavy shadows |
|
|
79
|
+
| **Ethereal** | Soft focus, glowing light, translucent elements |
|
|
80
|
+
| **Cozy** | Warm tones, soft textures, intimate framing |
|
|
81
|
+
| **Bold** | Strong shapes, high saturation, graphic composition |
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## Lighting Vocabulary
|
|
86
|
+
|
|
87
|
+
Lighting is the single most impactful prompt element after subject and style. Specific lighting terms produce dramatically different results.
|
|
88
|
+
|
|
89
|
+
| Lighting | Character | Best for |
|
|
90
|
+
|----------|-----------|----------|
|
|
91
|
+
| **Golden hour** | Warm, directional, long shadows | Portraits, landscapes, lifestyle |
|
|
92
|
+
| **Studio** | Even, controlled, professional | Product shots, headshots |
|
|
93
|
+
| **Natural** | Ambient, unprocessed, authentic | Documentary, editorial |
|
|
94
|
+
| **Dramatic / chiaroscuro** | Strong contrast between light and shadow | Portraits, moody scenes |
|
|
95
|
+
| **Flat** | Even, shadowless, clean | Product photography, UI mockups |
|
|
96
|
+
| **Rim-lit** | Edge highlighting, subject separation | Silhouettes, athletic, cinematic |
|
|
97
|
+
| **Backlit** | Light behind subject, halo effect | Ethereal, spiritual, romantic |
|
|
98
|
+
| **Soft / diffused** | Gentle, wrapped light, minimal shadows | Beauty, fashion, food |
|
|
99
|
+
| **Neon** | Coloured artificial light, urban | Night scenes, tech, cyberpunk |
|
|
100
|
+
| **Candlelight** | Warm, flickering, intimate | Cozy scenes, romantic, vintage |
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## Combining Vocabulary
|
|
105
|
+
|
|
106
|
+
A well-crafted style description combines one element from each category. Examples:
|
|
107
|
+
|
|
108
|
+
- Product shot: "photorealistic, studio lighting, neutral background, professional mood"
|
|
109
|
+
- Social post: "digital art, vibrant colours, energetic mood, flat lighting, 1:1"
|
|
110
|
+
- Business card: "minimalist, monochrome, clean, professional, 3:2"
|
|
111
|
+
- Event poster: "pop art, neon colours, bold mood, dramatic lighting, 9:16"
|
|
112
|
+
|
|
113
|
+
The order matters less than specificity. Vague descriptions produce generic results.
|
|
@@ -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.
|
|
@@ -79,12 +79,12 @@ Customer data exists in two tiers:
|
|
|
79
79
|
|
|
80
80
|
### Secure Records (Tamper-Proof)
|
|
81
81
|
|
|
82
|
-
Use the `
|
|
82
|
+
Use the `contact_lookup` tool to check verified customer data — payment status, account details. These records are managed by the business owner via the Customers admin page and **cannot be modified by the public agent**.
|
|
83
83
|
|
|
84
|
-
The admin agent has a `
|
|
84
|
+
The admin agent has a `contact_update` tool to write fields back to a customer record (e.g. storing a generated license key). The public agent does not have this tool.
|
|
85
85
|
|
|
86
86
|
Before generating a license key or making any payment-related decision, always look up the customer:
|
|
87
|
-
1. Call `
|
|
87
|
+
1. Call `contact_lookup` with the customer's phone number
|
|
88
88
|
2. Check the relevant fields (e.g. `status`, `paid`)
|
|
89
89
|
3. If no record exists or payment is not confirmed, tell them to contact support
|
|
90
90
|
|
|
@@ -98,7 +98,7 @@ Conversational context lives in `memory/users/{phone}/profile.md`. You can read
|
|
|
98
98
|
|
|
99
99
|
**What you must NEVER write to memory profiles:**
|
|
100
100
|
- `Paid`, `Payment ref`, `Status` — these live in secure records only
|
|
101
|
-
- `License key` — write this to the customer record using `
|
|
101
|
+
- `License key` — write this to the customer record using `contact_update`, not to the memory profile
|
|
102
102
|
|
|
103
103
|
---
|
|
104
104
|
|
|
@@ -109,7 +109,7 @@ You have a `license_generate` tool that creates device-bound license keys for cu
|
|
|
109
109
|
### When to Generate
|
|
110
110
|
|
|
111
111
|
Only generate a license when ALL of these are true:
|
|
112
|
-
- The `
|
|
112
|
+
- The `contact_lookup` tool shows their record has a `paid` or `shipped` status
|
|
113
113
|
- They have provided their **device ID** (starts with `tm_dev_`)
|
|
114
114
|
|
|
115
115
|
**If no record exists or payment is not confirmed, do NOT generate a key.** Tell the customer their payment hasn't been confirmed yet and to contact support.
|
|
@@ -126,7 +126,7 @@ The tool returns a license token (starts with `TM1-`). Send this to the customer
|
|
|
126
126
|
### After Generating
|
|
127
127
|
|
|
128
128
|
After generating a license key, store it on the customer record:
|
|
129
|
-
1. Call `
|
|
129
|
+
1. Call `contact_update` with the customer's phone, field `license_key`, and the token value
|
|
130
130
|
2. Optionally set `licensed_at` to the current date and `license_expires` to the expiry date
|
|
131
131
|
|
|
132
132
|
### Delivery
|
|
@@ -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.
|
|
@@ -80,7 +80,7 @@ stripe refunds create --payment-intent {pi_id}
|
|
|
80
80
|
|
|
81
81
|
## Customer Record Management
|
|
82
82
|
|
|
83
|
-
You have write access to customer records (`
|
|
83
|
+
You have write access to customer records (`contact_update`). Use this for:
|
|
84
84
|
- Updating trust scores after job completion
|
|
85
85
|
- Setting blacklist status after fee escalation
|
|
86
86
|
- Reinstating customers after payment
|
|
@@ -93,7 +93,7 @@ The public agent (Beagle) can read records but cannot modify them — this preve
|
|
|
93
93
|
## Data Compliance (Admin-Side Execution)
|
|
94
94
|
|
|
95
95
|
When the Beagle agent receives a data erasure request, you execute the deletion sequence:
|
|
96
|
-
1. Delete the customer record (`
|
|
96
|
+
1. Delete the customer record (`contact_update` with DELETE)
|
|
97
97
|
2. Clear the memory profile
|
|
98
98
|
3. Redact booking files (replace customer phone/name with [REDACTED])
|
|
99
99
|
4. Delete member files from booking groups
|
|
@@ -25,7 +25,7 @@ Every inbound message comes from a phone number. Before responding, determine wh
|
|
|
25
25
|
|
|
26
26
|
1. **Check for active booking group membership:** Use `memory_search` to look for `memory/groups/*/members/{peer}.md`. If found, this person is a participant in an active booking — read the booking state from `memory/groups/{booking-id}/booking.md`.
|
|
27
27
|
|
|
28
|
-
2. **Check customer record:** Use `
|
|
28
|
+
2. **Check customer record:** Use `contact_lookup` with the phone number. This tells you their role (customer or provider), status, trust score, and fee history.
|
|
29
29
|
|
|
30
30
|
3. **Check their profile:** Use `memory_get` for `memory/users/{phone}/profile.md`. This has detailed history.
|
|
31
31
|
|
|
@@ -110,7 +110,7 @@ Available tools and when to use them:
|
|
|
110
110
|
| `web_search` | Find local providers when building a shortlist |
|
|
111
111
|
| `web_fetch` | Get details from provider websites |
|
|
112
112
|
| `cron` | Schedule timeouts, follow-ups, fee reminders |
|
|
113
|
-
| `
|
|
113
|
+
| `contact_lookup` | Quick status/score lookup from secure records |
|
|
114
114
|
| `sessions_list` | Check conversation history |
|
|
115
115
|
| `sessions_history` | Read specific past sessions |
|
|
116
116
|
| `current_time` | Generate booking IDs, check timing |
|
|
@@ -25,8 +25,8 @@ Load `references/workflow.md` for full step-by-step detail.
|
|
|
25
25
|
|
|
26
26
|
Run these checks before starting any new booking:
|
|
27
27
|
|
|
28
|
-
1. **Outstanding fees:** `
|
|
29
|
-
2. **Blacklist:** `
|
|
28
|
+
1. **Outstanding fees:** `contact_lookup` → if `fees_outstanding > 0`, block and send payment link.
|
|
29
|
+
2. **Blacklist:** `contact_lookup` → if `beagle_status: blacklisted`, check Stripe for payment. If paid → reinstate. If not → send payment link.
|
|
30
30
|
3. **UK location:** If the customer's location is outside the UK, politely decline.
|
|
31
31
|
4. **Multi-booking cap:** If the customer has 3+ active unpaid bookings, explain the cap.
|
|
32
32
|
|
|
@@ -105,7 +105,7 @@ Load `references/fee-collection.md` for cron specifications and escalation detai
|
|
|
105
105
|
| `web_search` | Find local providers for the shortlist |
|
|
106
106
|
| `web_fetch` | Get details from provider websites |
|
|
107
107
|
| `cron` | Schedule all timeouts, follow-ups, and fee reminders |
|
|
108
|
-
| `
|
|
108
|
+
| `contact_lookup` | Check status, trust score, fees from secure records |
|
|
109
109
|
| `sessions_list` | Check conversation history |
|
|
110
110
|
| `sessions_history` | Read specific past sessions |
|
|
111
111
|
| `current_time` | Generate booking IDs (BGL-YYMMDD-HHmm) |
|
|
@@ -147,7 +147,7 @@ When a DM peer has a member file in a booking group, they get read/write access
|
|
|
147
147
|
|
|
148
148
|
## Customer Record Fields
|
|
149
149
|
|
|
150
|
-
Stored in `~/.taskmaster/records.json` via `
|
|
150
|
+
Stored in `~/.taskmaster/records.json` via `contact_lookup` / `contact_update`:
|
|
151
151
|
|
|
152
152
|
| Field | Type | Description |
|
|
153
153
|
|-------|------|-------------|
|
|
@@ -14,7 +14,7 @@ Customer messages: "What data do you have on me?" or similar.
|
|
|
14
14
|
|
|
15
15
|
### Tool Call Sequence
|
|
16
16
|
|
|
17
|
-
1. `
|
|
17
|
+
1. `contact_lookup({ phone: "{customer-phone}" })`
|
|
18
18
|
- Returns: trust score, booking counts, fee history, status, all record fields
|
|
19
19
|
|
|
20
20
|
2. `memory_get({ path: "memory/users/{phone}/profile.md" })`
|
|
@@ -63,7 +63,7 @@ Deletion proceeds regardless of their answer — the right to erasure is uncondi
|
|
|
63
63
|
|
|
64
64
|
Request the admin agent to execute the full deletion sequence (the public agent cannot write to customer records):
|
|
65
65
|
|
|
66
|
-
1. `
|
|
66
|
+
1. `contact_update({ phone: "{customer-phone}", fields: { DELETE: true } })`
|
|
67
67
|
- Deletes the customer record from records.json
|
|
68
68
|
|
|
69
69
|
2. `memory_write({ path: "memory/users/{phone}/profile.md", content: "" })`
|