@rubytech/taskmaster 1.13.3 → 1.13.4

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.
Files changed (22) hide show
  1. package/dist/build-info.json +3 -3
  2. package/dist/control-ui/assets/{index-BWqMMgRV.js → index-BiGN9NNG.js} +2 -2
  3. package/dist/control-ui/assets/{index-BWqMMgRV.js.map → index-BiGN9NNG.js.map} +1 -1
  4. package/dist/control-ui/assets/{index-B8I8lMfz.css → index-l54GcTyj.css} +1 -1
  5. package/dist/control-ui/index.html +2 -2
  6. package/package.json +1 -1
  7. package/taskmaster-docs/USER-GUIDE.md +2 -1
  8. package/templates/beagle-taxi/memory/public/knowledge-base.md +11 -11
  9. package/templates/beagle-taxi/skills/beagle-taxi/SKILL.md +1 -1
  10. package/templates/{zanzi-taxi → beagle-zanzibar}/agents/admin/AGENTS.md +4 -0
  11. package/templates/beagle-zanzibar/agents/admin/BOOTSTRAP.md +122 -0
  12. package/templates/{zanzi-taxi/skills/zanzi-taxi → beagle-zanzibar/skills/beagle-zanzibar}/SKILL.md +3 -3
  13. package/templates/{zanzi-taxi/skills/zanzi-taxi → beagle-zanzibar/skills/beagle-zanzibar}/references/ride-matching.md +2 -0
  14. /package/templates/{zanzi-taxi → beagle-zanzibar}/agents/admin/HEARTBEAT.md +0 -0
  15. /package/templates/{zanzi-taxi → beagle-zanzibar}/agents/admin/IDENTITY.md +0 -0
  16. /package/templates/{zanzi-taxi → beagle-zanzibar}/agents/admin/SOUL.md +0 -0
  17. /package/templates/{zanzi-taxi → beagle-zanzibar}/agents/public/AGENTS.md +0 -0
  18. /package/templates/{zanzi-taxi → beagle-zanzibar}/agents/public/IDENTITY.md +0 -0
  19. /package/templates/{zanzi-taxi → beagle-zanzibar}/agents/public/SOUL.md +0 -0
  20. /package/templates/{zanzi-taxi → beagle-zanzibar}/memory/public/knowledge-base.md +0 -0
  21. /package/templates/{zanzi-taxi/skills/zanzi-taxi → beagle-zanzibar/skills/beagle-zanzibar}/references/local-knowledge.md +0 -0
  22. /package/templates/{zanzi-taxi/skills/zanzi-taxi → beagle-zanzibar/skills/beagle-zanzibar}/references/post-ride.md +0 -0
@@ -6,8 +6,8 @@
6
6
  <title>Taskmaster Control</title>
7
7
  <meta name="color-scheme" content="dark light" />
8
8
  <link rel="icon" type="image/png" href="./favicon.png" />
9
- <script type="module" crossorigin src="./assets/index-BWqMMgRV.js"></script>
10
- <link rel="stylesheet" crossorigin href="./assets/index-B8I8lMfz.css">
9
+ <script type="module" crossorigin src="./assets/index-BiGN9NNG.js"></script>
10
+ <link rel="stylesheet" crossorigin href="./assets/index-l54GcTyj.css">
11
11
  </head>
12
12
  <body>
13
13
  <taskmaster-app></taskmaster-app>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rubytech/taskmaster",
3
- "version": "1.13.3",
3
+ "version": "1.13.4",
4
4
  "description": "AI-powered business assistant for small businesses",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -1155,7 +1155,8 @@ The gateway is the software that runs your assistant. If it's showing red:
1155
1155
  Occasionally, AI providers like Claude experience temporary outages or slowdowns. When this happens, Taskmaster automatically tries to get a reply from a different AI provider instead. Here's how it works:
1156
1156
 
1157
1157
  - **If you have backup providers configured** (e.g., a Google AI key or OpenAI key added on the Setup page), your assistant switches to those automatically. You don't need to do anything — replies keep coming, just from a different AI model behind the scenes.
1158
- - **If you only have one provider** (e.g., Claude with no other API keys), messages sent during the outage won't get a reply. The customer's message is received but the assistant can't respond until the service recovers.
1158
+ - **If only one provider is configured**, messages sent during the outage won't get a reply. The customer's message is received but the assistant can't respond until the service recovers.
1159
+ - **You'll be notified.** When a fallback happens, a notification banner appears in the control panel and (if WhatsApp is connected) you receive a WhatsApp message with the error and instructions to re-authenticate or add backup providers.
1159
1160
  - **Messages are not queued.** If a message arrives during an outage and all providers are down, it won't be retried automatically. The customer (or you) will need to send the message again once the service is back.
1160
1161
  - **Your conversation history is safe.** An outage doesn't corrupt or lose any previous conversations. Once the service recovers, everything picks up where it left off.
1161
1162
 
@@ -10,8 +10,8 @@ Beagle is a WhatsApp-based ride matching company. It connects travellers with lo
10
10
 
11
11
  - **Live in:** Zanzibar
12
12
  - **Model:** Traveller messages on WhatsApp → Beagle's agent contacts local drivers → negotiates competing fares → presents the best offer → traveller confirms with a small booking fee → ride happens
13
- - **Revenue:** 5% booking fee ($2 minimum), paid by the traveller at booking time
14
- - **Driver economics:** Drivers keep 95% of the agreed fare. No sign-up fee, no app, no commission deduction.
13
+ - **Revenue:** Booking fee (5% of fare, $2 minimum, $5 maximum), paid by the traveller at booking time — separate from the driver's fare
14
+ - **Driver economics:** Drivers keep 100% of the agreed fare. No sign-up fee, no app, no commission deducted from the driver.
15
15
  - **Distribution:** WhatsApp — 2+ billion users, already installed, no onboarding friction
16
16
 
17
17
  ---
@@ -44,9 +44,9 @@ Beagle is a WhatsApp-based ride matching company. It connects travellers with lo
44
44
  - Non-refundable — acts as a commitment device
45
45
 
46
46
  ### Unit Economics
47
- - **Driver receives:** 95% of the negotiated fare, paid directly by the traveller
48
- - **Beagle receives:** 5% booking fee
49
- - **Compare:** Ride-hailing apps take 25-30%. Hotel transfers mark up ~50%. Beagle takes 5%.
47
+ - **Driver receives:** 100% of the negotiated fare, paid directly by the traveller at the end of the ride
48
+ - **Beagle receives:** A booking fee (5% of fare, $2 minimum, $5 maximum) paid separately by the traveller at booking time
49
+ - **Compare:** Ride-hailing apps deduct 25-30% from the driver. Hotel transfers mark up ~50%. Beagle deducts nothing from the driver.
50
50
 
51
51
  ### Expansion Economics
52
52
  - No app to build or maintain
@@ -85,7 +85,7 @@ Markets that share the Zanzibar pattern: high tourist volume, fragmented taxi su
85
85
  | Pre-arrival booking | Sometimes | Yes | Yes | Yes |
86
86
  | Driver rated | No | No | Yes | Yes |
87
87
  | Verified pickup | No | No | Yes | Yes |
88
- | Driver's share | 100%* | ~50% | 70-75% | 95% |
88
+ | Driver's share | 100%* | ~50% | 70-75% | 100%† |
89
89
  | Language barrier | High | Medium | Low | None |
90
90
  | App required | No | No | Yes | No |
91
91
  | Works on WhatsApp | No | No | No | Yes |
@@ -143,10 +143,10 @@ Markets that share the Zanzibar pattern: high tourist volume, fragmented taxi su
143
143
  A WhatsApp-based ride matching company. We connect travellers with local self-drive taxi owners, negotiate fair fares, and confirm bookings — entirely via WhatsApp.
144
144
 
145
145
  **How does Beagle make money?**
146
- A 5% booking fee ($2 minimum) paid by the traveller when they confirm a ride. The driver keeps 95%.
146
+ A booking fee (5% of the agreed fare, $2 minimum, $5 maximum) paid by the traveller when they confirm a ride. This is charged on top of the fare — the driver keeps 100% of the agreed fare.
147
147
 
148
148
  **How is this different from Uber?**
149
- No app. No algorithmic pricing. No 25-30% commission. Beagle runs on WhatsApp, fares are set by competing drivers, and drivers keep nearly everything. It's built for markets where ride-hailing apps don't fit.
149
+ No app. No algorithmic pricing. No commission deducted from drivers. Beagle runs on WhatsApp, fares are set by competing drivers, and drivers keep 100% of the agreed fare. It's built for markets where ride-hailing apps don't fit.
150
150
 
151
151
  **How does Beagle expand to new markets?**
152
152
  Each market needs driver WhatsApp numbers and local geographic knowledge. No app infrastructure, no mapping systems. Setup takes days, not months.
@@ -163,15 +163,15 @@ You see up to 3 competing offers from independent drivers. You compare fare, dri
163
163
  Every ride has a verified pickup (offline PIN check), a WhatsApp trail, and driver ratings from previous passengers. You always know who's driving you.
164
164
 
165
165
  **How much does it cost?**
166
- A 5% booking fee ($2 minimum) paid by card when you confirm. The rest goes directly to your driver at the end of the ride — cash, card, or mobile money.
166
+ A booking fee (5% of fare, $2 minimum, $5 maximum) paid by card when you confirm. You then pay your driver the full agreed fare directly at the end of the ride — cash, card, or mobile money.
167
167
 
168
168
  ### For Drivers
169
169
 
170
170
  **How do I join?**
171
- Message Beagle on WhatsApp. No sign-up fee, no app, no commission — just a 5% booking fee from the passenger's side.
171
+ Message Beagle on WhatsApp. No sign-up fee, no app, no commission — the booking fee is paid separately by the passenger. Nothing is deducted from your fare.
172
172
 
173
173
  **How much do I keep?**
174
- 95% of the agreed fare. The 5% comes from the traveller, not you.
174
+ 100% of the agreed fare. The booking fee (5%, $2–$5) is charged to the traveller on top of the fare.
175
175
 
176
176
  **What is Beagle Dispatcher?**
177
177
  An AI-powered assistant that negotiates fares and manages bookings on your behalf — even while you're mid-journey. Coming soon.
@@ -24,7 +24,7 @@ If the knowledge base doesn't cover what's being asked, say so. Don't invent fig
24
24
 
25
25
  **Travellers** — Explain how the service works from their perspective. If they want to book a ride, direct them to the Beagle WhatsApp number for their market. You don't handle bookings.
26
26
 
27
- **Drivers** — Explain the economics (95% retention, no fees, no app). If they want to join, direct them to the Beagle WhatsApp number. You don't onboard drivers.
27
+ **Drivers** — Explain the economics (100% fare retention, zero commission deducted, booking fee paid separately by the passenger, no app). If they want to join, direct them to the Beagle WhatsApp number. You don't onboard drivers.
28
28
 
29
29
  **General curiosity** — Answer from the knowledge base. Keep it concise. Don't volunteer the full pitch unprompted.
30
30
 
@@ -2,6 +2,10 @@
2
2
 
3
3
  You help the operator manage the Beagle ride matching service in Zanzibar. You handle operational oversight, driver management, knowledge base maintenance, and booking review.
4
4
 
5
+ ## First-Run Check
6
+
7
+ **If BOOTSTRAP.md is present in your context, STOP and follow its instructions.** BOOTSTRAP.md means this workspace hasn't been set up yet. Complete the onboarding flow before doing anything else — no briefings, no memory searches, no normal session behaviour until onboarding is done.
8
+
5
9
  ## Every Session
6
10
 
7
11
  Before doing anything else:
@@ -0,0 +1,122 @@
1
+ # BOOTSTRAP.md — First Run Setup
2
+
3
+ > **IMPORTANT:** Only follow this file if you are the **Beagle Admin** agent talking to the **operator** (self-chat or authorised admin device). If you're the public agent handling a tourist, ignore this file entirely and handle their message normally.
4
+
5
+ You're being set up for the first time. This is your operational onboarding checklist. Work through it conversationally — one step at a time.
6
+
7
+ ---
8
+
9
+ ## Step 1: Confirm the Operator
10
+
11
+ Greet the operator. Confirm you're the Beagle Zanzibar management assistant, ready to be configured for live operation. Ask: **"Who am I speaking with, and what's the best name for me to use when messaging you?"**
12
+
13
+ ---
14
+
15
+ ## Step 2: Authorise Admin Devices
16
+
17
+ The paired device (self-chat) already has admin access. Ask: **"Do you want to add your personal phone as an additional admin device?"**
18
+
19
+ If yes, use the `authorize_admin` tool with their number (international format, e.g., `+44750...`).
20
+
21
+ ---
22
+
23
+ ## Step 3: Verify the Knowledge Base
24
+
25
+ Ask the operator to confirm the knowledge base is accurate and current:
26
+
27
+ - **Fare ranges** — do the figures in `memory/public/knowledge-base.md` reflect current market rates?
28
+ - **Route coverage** — any popular routes missing that you should add?
29
+ - **Seasonal notes** — is the seasonal information current for the upcoming period?
30
+
31
+ If anything needs updating, edit `memory/public/knowledge-base.md` directly. Use `memory_get` to read it and `memory_write` to update.
32
+
33
+ ---
34
+
35
+ ## Step 4: Set Up the Driver Roster
36
+
37
+ Explain that drivers need to be registered before the service can take bookings. For each driver, collect:
38
+
39
+ - Name and WhatsApp number
40
+ - Vehicle type and plate number
41
+ - Areas they cover (e.g., airport, north coast, east coast)
42
+
43
+ Store each driver as a structured record in memory at `drivers/{first-name-lastname}.md`. Use this format:
44
+
45
+ ```
46
+ # Driver: [Name]
47
+ - WhatsApp: [number]
48
+ - Vehicle: [type, year if known]
49
+ - Plate: [plate number]
50
+ - Routes: [areas covered]
51
+ - Rating: not yet rated
52
+ - Status: idle
53
+ - Response rate: n/a (new)
54
+ ```
55
+
56
+ Ask: **"Can you share the names and WhatsApp numbers for your initial driver pool? Even 3–5 drivers is enough to start."**
57
+
58
+ If they'd prefer to add drivers later via conversation, note that they can tell you "Add driver: [name], [number], [vehicle]" at any time.
59
+
60
+ ---
61
+
62
+ ## Step 5: Configure Stripe
63
+
64
+ Payments are handled via Stripe payment links. The public agent generates a link per booking — tourists pay the booking fee, the agent confirms payment, then releases driver details.
65
+
66
+ Ask: **"Do you have a Stripe account set up? I'll need your Stripe API keys to generate payment links."**
67
+
68
+ If not, direct them to [stripe.com](https://stripe.com) to create an account (free, takes 5 minutes). Once they have keys, store them using the `api_keys` tool:
69
+ - Provider: `stripe`
70
+ - Key: their Stripe secret key (`sk_live_...` or `sk_test_...` for testing)
71
+
72
+ If they want to start in test mode first (recommended), use the test key (`sk_test_...`) — all bookings will use Stripe test mode until switched to live.
73
+
74
+ ---
75
+
76
+ ## Step 6: API Keys
77
+
78
+ Two free API keys unlock important capabilities for the service:
79
+
80
+ - **Google AI** (voice notes — tourists can send voice messages) — load the `google-ai` skill's setup reference and walk them through it
81
+ - **Tavily** (web search — for checking flight times, weather, local events) — load the `tavily` skill's setup reference
82
+
83
+ These are optional. The service works without them. If they want to skip for now, that's fine — they can add keys later via the API Keys section in the control panel.
84
+
85
+ ---
86
+
87
+ ## Step 7: Test Booking Flow
88
+
89
+ Before going live, recommend a test run:
90
+
91
+ 1. Have the operator message the public agent (from a separate device or ask them to switch to the public number) with a sample request: "Airport to Stone Town, tomorrow 3pm, 2 people"
92
+ 2. Observe how the public agent handles it — does it find the route in the knowledge base, trigger driver negotiation, etc.?
93
+ 3. If Stripe is in test mode, they can complete a full booking with a test card
94
+
95
+ This confirms the whole flow works before real tourists arrive.
96
+
97
+ ---
98
+
99
+ ## Step 8: Going Live Checklist
100
+
101
+ Confirm before marking setup complete:
102
+
103
+ - [ ] Knowledge base reviewed and accurate
104
+ - [ ] At least one driver registered
105
+ - [ ] Stripe configured (test or live)
106
+ - [ ] Operator's personal phone added as admin (or consciously skipped)
107
+ - [ ] Test booking completed (or consciously skipped)
108
+
109
+ ---
110
+
111
+ ## Step 9: Complete Setup
112
+
113
+ Once everything is done, call the `bootstrap_complete` tool (no parameters needed). This marks setup complete so this guide never appears again.
114
+
115
+ Tell the operator:
116
+ - Tourists who message the business WhatsApp will reach the public agent
117
+ - They (admin) get full access to operational oversight, driver monitoring, and knowledge base management
118
+ - They can message anytime: "How are bookings looking today?", "Add driver: Ahmed, +255..., Toyota Hiace", "Update Stone Town fare to $20–30"
119
+
120
+ ---
121
+
122
+ **Remember:** This is WhatsApp, not a form. One question at a time. It's fine to skip steps they want to come back to — just note what's pending.
@@ -1,10 +1,10 @@
1
1
  ---
2
- name: zanzi-taxi
2
+ name: beagle-zanzibar
3
3
  description: "Guides Beagle's ride matching behaviour in Zanzibar — handling ride requests, fare negotiation, booking confirmation, and post-ride feedback."
4
- metadata: {"taskmaster":{"always":true,"emoji":"🚕","skillKey":"zanzi-taxi"}}
4
+ metadata: {"taskmaster":{"always":true,"emoji":"🚕","skillKey":"beagle-zanzibar"}}
5
5
  ---
6
6
 
7
- # Zanzi Taxi — Ride Matching
7
+ # Beagle Zanzibar — Ride Matching
8
8
 
9
9
  ## Your Role
10
10
 
@@ -8,6 +8,8 @@ When a tourist messages about a ride, gather:
8
8
  2. **Destination** — where they're going
9
9
  3. **Date and time** — when they need the ride
10
10
  4. **Passengers** — how many people
11
+ 5. **Luggage** - how many pieces, anythinbg oversized
12
+ 6. **Special Requests*** - e.g. wheelchair access
11
13
 
12
14
  Ask naturally, not as a form. If they give you everything in one message ("Airport to Stone Town, Tuesday 3pm, 2 people"), acknowledge and proceed. If anything is missing, ask for it conversationally.
13
15