@topy-ai/maggie 0.7.52 → 0.7.53

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 (57) hide show
  1. package/README-zh-TW.md +48 -2
  2. package/README.md +66 -54
  3. package/bin/maggie.js +18 -7
  4. package/bundled-contracts/maggie-assistant-tools/booking-receptionist-example-v1.json +161 -0
  5. package/bundled-contracts/maggie-assistant-tools/tool-registry-v1.schema.json +268 -20
  6. package/bundled-contracts/maggie-deployment/bridge-host-example-v1.json +49 -7
  7. package/bundled-contracts/maggiedash/booking-email-templates-v1.json +181 -13
  8. package/bundled-contracts/maggiedash/booking-rules-v1.json +1699 -0
  9. package/bundled-contracts/maggiedash/stripe-booking-capabilities-v1.json +398 -39
  10. package/bundled-references/maggiedash-booking/PRD.md +22 -11
  11. package/bundled-references/maggiedash-booking/RULES.md +167 -0
  12. package/bundled-references/maggiedash-booking/STRIPE-INTEGRATION.md +42 -4
  13. package/bundled-references/provider-adapter-contract.md +16 -3
  14. package/bundled-skills/catalog.json +1 -1
  15. package/bundled-skills/maggie-assistant-tools/SKILL.md +54 -3
  16. package/bundled-skills/maggie-assistant-tools/references/approvals-and-audit.md +27 -0
  17. package/bundled-skills/maggie-assistant-tools/references/booking-receptionist.md +45 -0
  18. package/bundled-skills/maggie-assistant-tools/references/bridge-host.md +54 -0
  19. package/bundled-skills/maggie-auth-reference/SKILL.md +18 -0
  20. package/bundled-skills/maggie-booking/SKILL.md +47 -3
  21. package/bundled-skills/maggie-deployment/SKILL.md +21 -0
  22. package/bundled-skills/maggie-deployment/references/cloudflare.md +19 -0
  23. package/bundled-skills/maggie-deployment/references/vps.md +92 -0
  24. package/bundled-skills/maggie-design/SKILL.md +17 -3
  25. package/bundled-skills/maggie-design/references/app-ui-patterns.md +79 -0
  26. package/bundled-skills/maggie-feedback/SKILL.md +17 -0
  27. package/bundled-skills/maggie-marketplace/SKILL.md +12 -0
  28. package/bundled-skills/maggie-marketplace/references/directory-search.md +51 -0
  29. package/bundled-skills/maggie-marketplace/references/directory.mjs +112 -0
  30. package/bundled-skills/maggie-mobile-app/SKILL.md +36 -6
  31. package/bundled-skills/maggie-mobile-app/references/payments-and-push.md +78 -0
  32. package/bundled-skills/maggie-qa-workflow/SKILL.md +60 -0
  33. package/bundled-skills/maggie-seo-geo/SKILL.md +33 -0
  34. package/bundled-skills/maggie-service-booking/SKILL.md +28 -3
  35. package/bundled-skills/maggie-social-share/SKILL.md +26 -4
  36. package/bundled-skills/maggie-social-share/references/queue-and-connections.md +28 -0
  37. package/bundled-tools/clis/maggie_assistant_tools.py +84 -3
  38. package/bundled-tools/clis/maggie_booking.py +15 -4
  39. package/bundled-tools/clis/maggie_booking_connect_qa.py +136 -0
  40. package/bundled-tools/clis/maggie_booking_rules.py +476 -0
  41. package/bundled-tools/clis/maggie_bridge_host.py +77 -1
  42. package/bundled-tools/clis/maggie_deployment_ops.py +461 -0
  43. package/bundled-tools/clis/maggie_design.py +9 -2
  44. package/bundled-tools/clis/maggie_design_lint.py +75 -3
  45. package/bundled-tools/clis/maggie_feedback.py +97 -15
  46. package/bundled-tools/clis/maggie_mobile.py +136 -4
  47. package/bundled-tools/clis/maggie_qa_app_preflight.py +122 -4
  48. package/bundled-tools/clis/maggie_qa_fit.py +217 -0
  49. package/bundled-tools/clis/maggie_qa_workflow.py +5 -0
  50. package/bundled-tools/clis/maggie_schema_complexity.py +84 -0
  51. package/bundled-tools/clis/maggie_seo_routes.py +154 -0
  52. package/bundled-tools/clis/maggie_service_migration.py +272 -0
  53. package/bundled-tools/clis/maggie_social_queue.py +2 -0
  54. package/bundled-tools/clis/maggie_social_share.py +52 -6
  55. package/bundled-tools/runtime/assistant_approval.py +98 -0
  56. package/package.json +1 -1
  57. package/references/provider-adapter-contract.md +16 -3
@@ -12,41 +12,346 @@
12
12
  "avoidChargesForNewFlows": true
13
13
  },
14
14
  "x-api-matrix": [
15
- { "id": "customers", "status": "core", "resource": "Customer", "operations": ["POST /v1/customers", "GET /v1/customers/:id", "POST /v1/customers/:id"], "bookingUse": "customer mapping and receipts", "officialDocs": ["https://docs.stripe.com/api/customers"] },
16
- { "id": "checkout_sessions", "status": "core", "resource": "Checkout Session", "operations": ["POST /v1/checkout/sessions", "GET /v1/checkout/sessions/:id", "POST /v1/checkout/sessions/:id/expire"], "bookingUse": "hosted or embedded one-off booking payments", "officialDocs": ["https://docs.stripe.com/api/checkout/sessions"] },
17
- { "id": "payment_intents", "status": "core", "resource": "PaymentIntent", "operations": ["POST /v1/payment_intents", "GET /v1/payment_intents/:id", "POST /v1/payment_intents/:id/confirm", "POST /v1/payment_intents/:id/cancel", "POST /v1/payment_intents/:id/capture"], "bookingUse": "custom payment UI, SCA, capture, reconciliation", "officialDocs": ["https://docs.stripe.com/api/payment_intents"] },
18
- { "id": "setup_intents", "status": "optional", "resource": "SetupIntent", "operations": ["POST /v1/setup_intents", "GET /v1/setup_intents/:id", "POST /v1/setup_intents/:id/confirm"], "bookingUse": "consented saved payment methods", "officialDocs": ["https://docs.stripe.com/api/setup_intents"] },
19
- { "id": "refunds", "status": "core", "resource": "Refund", "operations": ["POST /v1/refunds", "GET /v1/refunds/:id", "POST /v1/refunds/:id/cancel"], "bookingUse": "full and partial refunds", "officialDocs": ["https://docs.stripe.com/api/refunds"] },
20
- { "id": "events", "status": "core", "resource": "Event", "operations": ["GET /v1/events/:id", "GET /v1/events"], "bookingUse": "event identity and reconciliation", "officialDocs": ["https://docs.stripe.com/api/events", "https://docs.stripe.com/api/events/types"] },
21
- { "id": "promotion_codes", "status": "optional", "resource": "Promotion Code", "operations": ["POST /v1/promotion_codes", "GET /v1/promotion_codes/:id", "GET /v1/promotion_codes"], "bookingUse": "campaign and referral discount codes", "officialDocs": ["https://docs.stripe.com/api/promotion_codes"] },
22
- { "id": "coupons", "status": "optional", "resource": "Coupon", "operations": ["POST /v1/coupons", "GET /v1/coupons/:id", "DELETE /v1/coupons/:id"], "bookingUse": "reusable discounts", "officialDocs": ["https://docs.stripe.com/api/coupons"] },
23
- { "id": "customer_balance_transactions", "status": "optional", "resource": "Customer Balance Transaction", "operations": ["POST /v1/customers/:id/balance_transactions", "GET /v1/customers/:id/balance_transactions"], "bookingUse": "invoice credit, not gift-card redemption", "officialDocs": ["https://docs.stripe.com/api/customer_balance_transactions"] },
24
- { "id": "subscriptions", "status": "future", "resource": "Subscription", "operations": ["POST /v1/subscriptions", "GET /v1/subscriptions/:id", "POST /v1/subscriptions/:id"], "bookingUse": "future memberships", "officialDocs": ["https://docs.stripe.com/api/subscriptions"] },
25
- { "id": "invoices", "status": "future", "resource": "Invoice", "operations": ["POST /v1/invoices", "GET /v1/invoices/:id", "POST /v1/invoices/:id/finalize"], "bookingUse": "future business invoicing", "officialDocs": ["https://docs.stripe.com/api/invoices"] },
26
- { "id": "customer_portal_sessions", "status": "future", "resource": "Billing Portal Session", "operations": ["POST /v1/billing_portal/sessions"], "bookingUse": "future customer self-service billing", "officialDocs": ["https://docs.stripe.com/api/customer_portal/sessions"] },
27
- { "id": "tax", "status": "optional", "resource": "Tax Calculation/Transaction", "operations": ["POST /v1/tax/calculations", "POST /v1/tax/transactions/create_from_calculation", "POST /v1/tax/transactions/create_reversal"], "bookingUse": "optional VAT/tax calculation", "officialDocs": ["https://docs.stripe.com/tax/payment_intent", "https://docs.stripe.com/api/tax/transactions"] },
28
- { "id": "terminal", "status": "future", "resource": "Terminal PaymentIntent", "operations": ["POST /v1/terminal/readers", "POST /v1/terminal/readers/:id/process_payment_intent"], "bookingUse": "future in-person payments", "officialDocs": ["https://docs.stripe.com/terminal/payments"] },
29
- { "id": "connect", "status": "future", "resource": "Connected Account", "operations": ["POST /v1/accounts", "POST /v1/account_links", "POST /v1/transfers"], "bookingUse": "future multi-merchant platforms only", "officialDocs": ["https://docs.stripe.com/connect"] }
15
+ {
16
+ "id": "customers",
17
+ "status": "core",
18
+ "resource": "Customer",
19
+ "operations": [
20
+ "POST /v1/customers",
21
+ "GET /v1/customers/:id",
22
+ "POST /v1/customers/:id"
23
+ ],
24
+ "bookingUse": "customer mapping and receipts",
25
+ "officialDocs": [
26
+ "https://docs.stripe.com/api/customers"
27
+ ]
28
+ },
29
+ {
30
+ "id": "checkout_sessions",
31
+ "status": "core",
32
+ "resource": "Checkout Session",
33
+ "operations": [
34
+ "POST /v1/checkout/sessions",
35
+ "GET /v1/checkout/sessions/:id",
36
+ "POST /v1/checkout/sessions/:id/expire"
37
+ ],
38
+ "bookingUse": "hosted or embedded one-off booking payments",
39
+ "officialDocs": [
40
+ "https://docs.stripe.com/api/checkout/sessions"
41
+ ]
42
+ },
43
+ {
44
+ "id": "payment_intents",
45
+ "status": "core",
46
+ "resource": "PaymentIntent",
47
+ "operations": [
48
+ "POST /v1/payment_intents",
49
+ "GET /v1/payment_intents/:id",
50
+ "POST /v1/payment_intents/:id/confirm",
51
+ "POST /v1/payment_intents/:id/cancel",
52
+ "POST /v1/payment_intents/:id/capture"
53
+ ],
54
+ "bookingUse": "custom payment UI, SCA, capture, reconciliation",
55
+ "officialDocs": [
56
+ "https://docs.stripe.com/api/payment_intents"
57
+ ]
58
+ },
59
+ {
60
+ "id": "setup_intents",
61
+ "status": "optional",
62
+ "resource": "SetupIntent",
63
+ "operations": [
64
+ "POST /v1/setup_intents",
65
+ "GET /v1/setup_intents/:id",
66
+ "POST /v1/setup_intents/:id/confirm"
67
+ ],
68
+ "bookingUse": "consented saved payment methods",
69
+ "officialDocs": [
70
+ "https://docs.stripe.com/api/setup_intents"
71
+ ]
72
+ },
73
+ {
74
+ "id": "refunds",
75
+ "status": "core",
76
+ "resource": "Refund",
77
+ "operations": [
78
+ "POST /v1/refunds",
79
+ "GET /v1/refunds/:id",
80
+ "POST /v1/refunds/:id/cancel"
81
+ ],
82
+ "bookingUse": "full and partial refunds",
83
+ "officialDocs": [
84
+ "https://docs.stripe.com/api/refunds"
85
+ ]
86
+ },
87
+ {
88
+ "id": "events",
89
+ "status": "core",
90
+ "resource": "Event",
91
+ "operations": [
92
+ "GET /v1/events/:id",
93
+ "GET /v1/events"
94
+ ],
95
+ "bookingUse": "event identity and reconciliation",
96
+ "officialDocs": [
97
+ "https://docs.stripe.com/api/events",
98
+ "https://docs.stripe.com/api/events/types"
99
+ ]
100
+ },
101
+ {
102
+ "id": "promotion_codes",
103
+ "status": "optional",
104
+ "resource": "Promotion Code",
105
+ "operations": [
106
+ "POST /v1/promotion_codes",
107
+ "GET /v1/promotion_codes/:id",
108
+ "GET /v1/promotion_codes"
109
+ ],
110
+ "bookingUse": "campaign and referral discount codes",
111
+ "officialDocs": [
112
+ "https://docs.stripe.com/api/promotion_codes"
113
+ ]
114
+ },
115
+ {
116
+ "id": "coupons",
117
+ "status": "optional",
118
+ "resource": "Coupon",
119
+ "operations": [
120
+ "POST /v1/coupons",
121
+ "GET /v1/coupons/:id",
122
+ "DELETE /v1/coupons/:id"
123
+ ],
124
+ "bookingUse": "reusable discounts",
125
+ "officialDocs": [
126
+ "https://docs.stripe.com/api/coupons"
127
+ ]
128
+ },
129
+ {
130
+ "id": "customer_balance_transactions",
131
+ "status": "optional",
132
+ "resource": "Customer Balance Transaction",
133
+ "operations": [
134
+ "POST /v1/customers/:id/balance_transactions",
135
+ "GET /v1/customers/:id/balance_transactions"
136
+ ],
137
+ "bookingUse": "invoice credit, not gift-card redemption",
138
+ "officialDocs": [
139
+ "https://docs.stripe.com/api/customer_balance_transactions"
140
+ ]
141
+ },
142
+ {
143
+ "id": "subscriptions",
144
+ "status": "optional",
145
+ "resource": "Subscription",
146
+ "operations": [
147
+ "POST /v1/subscriptions",
148
+ "GET /v1/subscriptions/:id",
149
+ "POST /v1/subscriptions/:id"
150
+ ],
151
+ "bookingUse": "memberships billed monthly on the business's connected account, pause/resume",
152
+ "officialDocs": [
153
+ "https://docs.stripe.com/api/subscriptions"
154
+ ]
155
+ },
156
+ {
157
+ "id": "invoices",
158
+ "status": "future",
159
+ "resource": "Invoice",
160
+ "operations": [
161
+ "POST /v1/invoices",
162
+ "GET /v1/invoices/:id",
163
+ "POST /v1/invoices/:id/finalize"
164
+ ],
165
+ "bookingUse": "future business invoicing",
166
+ "officialDocs": [
167
+ "https://docs.stripe.com/api/invoices"
168
+ ]
169
+ },
170
+ {
171
+ "id": "customer_portal_sessions",
172
+ "status": "future",
173
+ "resource": "Billing Portal Session",
174
+ "operations": [
175
+ "POST /v1/billing_portal/sessions"
176
+ ],
177
+ "bookingUse": "future customer self-service billing",
178
+ "officialDocs": [
179
+ "https://docs.stripe.com/api/customer_portal/sessions"
180
+ ]
181
+ },
182
+ {
183
+ "id": "tax",
184
+ "status": "optional",
185
+ "resource": "Tax Calculation/Transaction",
186
+ "operations": [
187
+ "POST /v1/tax/calculations",
188
+ "POST /v1/tax/transactions/create_from_calculation",
189
+ "POST /v1/tax/transactions/create_reversal"
190
+ ],
191
+ "bookingUse": "optional VAT/tax calculation",
192
+ "officialDocs": [
193
+ "https://docs.stripe.com/tax/payment_intent",
194
+ "https://docs.stripe.com/api/tax/transactions"
195
+ ]
196
+ },
197
+ {
198
+ "id": "terminal",
199
+ "status": "optional",
200
+ "resource": "Terminal PaymentIntent",
201
+ "operations": [
202
+ "POST /v1/terminal/readers",
203
+ "POST /v1/terminal/readers/:id/process_payment_intent"
204
+ ],
205
+ "bookingUse": "in-person payments: server-driven readers per branch location, simulated reader for tests, Tap to Pay in the native app",
206
+ "officialDocs": [
207
+ "https://docs.stripe.com/terminal/payments"
208
+ ]
209
+ },
210
+ {
211
+ "id": "connect",
212
+ "status": "platform",
213
+ "resource": "Connected Account",
214
+ "operations": [
215
+ "POST /v2/core/accounts",
216
+ "POST /v2/core/account_links",
217
+ "POST /v1/checkout/sessions (Stripe-Account)",
218
+ "POST /v1/refunds (Stripe-Account)",
219
+ "GET /v1/payouts (Stripe-Account)",
220
+ "GET /v1/disputes (Stripe-Account)"
221
+ ],
222
+ "bookingUse": "multi-tenant booking platforms: direct charges on each business's connected account (Stripe-Account header), no application fee option, Accounts v2 onboarding, thin-event destinations, per-account webhook checks",
223
+ "officialDocs": [
224
+ "https://docs.stripe.com/connect"
225
+ ]
226
+ }
30
227
  ],
31
228
  "x-webhook-events": [
32
- { "eventType": "checkout.session.completed", "requiredFor": "hosted checkout completion", "officialDocs": ["https://docs.stripe.com/api/events/types"] },
33
- { "eventType": "checkout.session.expired", "requiredFor": "release an unpaid pending booking when its hosted Checkout expires", "officialDocs": ["https://docs.stripe.com/api/events/types"] },
34
- { "eventType": "checkout.session.async_payment_succeeded", "requiredFor": "delayed payment completion", "officialDocs": ["https://docs.stripe.com/api/events/types"] },
35
- { "eventType": "checkout.session.async_payment_failed", "requiredFor": "delayed payment failure", "officialDocs": ["https://docs.stripe.com/api/events/types"] },
36
- { "eventType": "payment_intent.processing", "requiredFor": "payment pending", "officialDocs": ["https://docs.stripe.com/api/events/types"] },
37
- { "eventType": "payment_intent.payment_failed", "requiredFor": "payment failure", "officialDocs": ["https://docs.stripe.com/api/events/types"] },
38
- { "eventType": "payment_intent.succeeded", "requiredFor": "payment confirmation", "officialDocs": ["https://docs.stripe.com/api/events/types"] },
39
- { "eventType": "payment_intent.requires_action", "requiredFor": "customer action", "officialDocs": ["https://docs.stripe.com/api/events/types"] },
40
- { "eventType": "payment_intent.canceled", "requiredFor": "payment cancellation", "officialDocs": ["https://docs.stripe.com/api/events/types"] },
41
- { "eventType": "refund.created", "requiredFor": "refund projection", "officialDocs": ["https://docs.stripe.com/api/events/types"] },
42
- { "eventType": "refund.updated", "requiredFor": "refund status changes", "officialDocs": ["https://docs.stripe.com/api/events/types"] },
43
- { "eventType": "refund.failed", "requiredFor": "refund failure", "officialDocs": ["https://docs.stripe.com/api/events/types"] },
44
- { "eventType": "setup_intent.succeeded", "requiredFor": "saved method setup", "officialDocs": ["https://docs.stripe.com/api/events/types"] },
45
- { "eventType": "setup_intent.setup_failed", "requiredFor": "saved method failure", "officialDocs": ["https://docs.stripe.com/api/events/types"] },
46
- { "eventType": "invoice.paid", "requiredFor": "future recurring billing", "officialDocs": ["https://docs.stripe.com/api/events/types"] },
47
- { "eventType": "invoice.payment_failed", "requiredFor": "future recurring billing failure", "officialDocs": ["https://docs.stripe.com/api/events/types"] },
48
- { "eventType": "customer.subscription.updated", "requiredFor": "future membership state", "officialDocs": ["https://docs.stripe.com/api/events/types"] },
49
- { "eventType": "customer.subscription.deleted", "requiredFor": "future membership cancellation", "officialDocs": ["https://docs.stripe.com/api/events/types"] }
229
+ {
230
+ "eventType": "checkout.session.completed",
231
+ "requiredFor": "hosted checkout completion",
232
+ "officialDocs": [
233
+ "https://docs.stripe.com/api/events/types"
234
+ ]
235
+ },
236
+ {
237
+ "eventType": "checkout.session.expired",
238
+ "requiredFor": "release an unpaid pending booking when its hosted Checkout expires",
239
+ "officialDocs": [
240
+ "https://docs.stripe.com/api/events/types"
241
+ ]
242
+ },
243
+ {
244
+ "eventType": "checkout.session.async_payment_succeeded",
245
+ "requiredFor": "delayed payment completion",
246
+ "officialDocs": [
247
+ "https://docs.stripe.com/api/events/types"
248
+ ]
249
+ },
250
+ {
251
+ "eventType": "checkout.session.async_payment_failed",
252
+ "requiredFor": "delayed payment failure",
253
+ "officialDocs": [
254
+ "https://docs.stripe.com/api/events/types"
255
+ ]
256
+ },
257
+ {
258
+ "eventType": "payment_intent.processing",
259
+ "requiredFor": "payment pending",
260
+ "officialDocs": [
261
+ "https://docs.stripe.com/api/events/types"
262
+ ]
263
+ },
264
+ {
265
+ "eventType": "payment_intent.payment_failed",
266
+ "requiredFor": "payment failure",
267
+ "officialDocs": [
268
+ "https://docs.stripe.com/api/events/types"
269
+ ]
270
+ },
271
+ {
272
+ "eventType": "payment_intent.succeeded",
273
+ "requiredFor": "payment confirmation",
274
+ "officialDocs": [
275
+ "https://docs.stripe.com/api/events/types"
276
+ ]
277
+ },
278
+ {
279
+ "eventType": "payment_intent.requires_action",
280
+ "requiredFor": "customer action",
281
+ "officialDocs": [
282
+ "https://docs.stripe.com/api/events/types"
283
+ ]
284
+ },
285
+ {
286
+ "eventType": "payment_intent.canceled",
287
+ "requiredFor": "payment cancellation",
288
+ "officialDocs": [
289
+ "https://docs.stripe.com/api/events/types"
290
+ ]
291
+ },
292
+ {
293
+ "eventType": "refund.created",
294
+ "requiredFor": "refund projection",
295
+ "officialDocs": [
296
+ "https://docs.stripe.com/api/events/types"
297
+ ]
298
+ },
299
+ {
300
+ "eventType": "refund.updated",
301
+ "requiredFor": "refund status changes",
302
+ "officialDocs": [
303
+ "https://docs.stripe.com/api/events/types"
304
+ ]
305
+ },
306
+ {
307
+ "eventType": "refund.failed",
308
+ "requiredFor": "refund failure",
309
+ "officialDocs": [
310
+ "https://docs.stripe.com/api/events/types"
311
+ ]
312
+ },
313
+ {
314
+ "eventType": "setup_intent.succeeded",
315
+ "requiredFor": "saved method setup",
316
+ "officialDocs": [
317
+ "https://docs.stripe.com/api/events/types"
318
+ ]
319
+ },
320
+ {
321
+ "eventType": "setup_intent.setup_failed",
322
+ "requiredFor": "saved method failure",
323
+ "officialDocs": [
324
+ "https://docs.stripe.com/api/events/types"
325
+ ]
326
+ },
327
+ {
328
+ "eventType": "invoice.paid",
329
+ "requiredFor": "future recurring billing",
330
+ "officialDocs": [
331
+ "https://docs.stripe.com/api/events/types"
332
+ ]
333
+ },
334
+ {
335
+ "eventType": "invoice.payment_failed",
336
+ "requiredFor": "future recurring billing failure",
337
+ "officialDocs": [
338
+ "https://docs.stripe.com/api/events/types"
339
+ ]
340
+ },
341
+ {
342
+ "eventType": "customer.subscription.updated",
343
+ "requiredFor": "future membership state",
344
+ "officialDocs": [
345
+ "https://docs.stripe.com/api/events/types"
346
+ ]
347
+ },
348
+ {
349
+ "eventType": "customer.subscription.deleted",
350
+ "requiredFor": "future membership cancellation",
351
+ "officialDocs": [
352
+ "https://docs.stripe.com/api/events/types"
353
+ ]
354
+ }
50
355
  ],
51
356
  "x-native-capabilities": {
52
357
  "giftCards": "not-native",
@@ -59,11 +364,65 @@
59
364
  "connect": "native"
60
365
  },
61
366
  "x-ecosystem-integrations": [
62
- { "id": "gift-up", "category": "gift-cards", "kind": "stripe-app", "status": "evaluate", "officialDocs": ["https://marketplace.stripe.com/apps/gift-up"], "maggieDecision": "separate partner gift-card system; retain local reference and reconciliation" },
63
- { "id": "partnerstack", "category": "affiliate-and-referrals", "kind": "stripe-app", "status": "evaluate", "officialDocs": ["https://marketplace.stripe.com/apps/partnerstack"], "maggieDecision": "affiliate payout candidate; local referral attribution remains authoritative" },
64
- { "id": "stripe-apps", "category": "business-operations", "kind": "stripe-product", "status": "recommended", "officialDocs": ["https://stripe.com/apps"], "maggieDecision": "prefer reviewed apps for accounting, CRM, support, analytics, and automation" },
65
- { "id": "stripe-tax", "category": "tax", "kind": "stripe-product", "status": "evaluate", "officialDocs": ["https://docs.stripe.com/tax"], "maggieDecision": "enable only after jurisdiction and tax ownership review" },
66
- { "id": "stripe-terminal", "category": "in-person-payments", "kind": "stripe-product", "status": "future", "officialDocs": ["https://docs.stripe.com/terminal"], "maggieDecision": "future reader operations" },
67
- { "id": "stripe-connect", "category": "multi-merchant", "kind": "stripe-product", "status": "future", "officialDocs": ["https://docs.stripe.com/connect"], "maggieDecision": "future platform-only capability" }
367
+ {
368
+ "id": "gift-up",
369
+ "category": "gift-cards",
370
+ "kind": "stripe-app",
371
+ "status": "evaluate",
372
+ "officialDocs": [
373
+ "https://marketplace.stripe.com/apps/gift-up"
374
+ ],
375
+ "maggieDecision": "separate partner gift-card system; retain local reference and reconciliation"
376
+ },
377
+ {
378
+ "id": "partnerstack",
379
+ "category": "affiliate-and-referrals",
380
+ "kind": "stripe-app",
381
+ "status": "evaluate",
382
+ "officialDocs": [
383
+ "https://marketplace.stripe.com/apps/partnerstack"
384
+ ],
385
+ "maggieDecision": "affiliate payout candidate; local referral attribution remains authoritative"
386
+ },
387
+ {
388
+ "id": "stripe-apps",
389
+ "category": "business-operations",
390
+ "kind": "stripe-product",
391
+ "status": "recommended",
392
+ "officialDocs": [
393
+ "https://stripe.com/apps"
394
+ ],
395
+ "maggieDecision": "prefer reviewed apps for accounting, CRM, support, analytics, and automation"
396
+ },
397
+ {
398
+ "id": "stripe-tax",
399
+ "category": "tax",
400
+ "kind": "stripe-product",
401
+ "status": "evaluate",
402
+ "officialDocs": [
403
+ "https://docs.stripe.com/tax"
404
+ ],
405
+ "maggieDecision": "enable only after jurisdiction and tax ownership review"
406
+ },
407
+ {
408
+ "id": "stripe-terminal",
409
+ "category": "in-person-payments",
410
+ "kind": "stripe-product",
411
+ "status": "future",
412
+ "officialDocs": [
413
+ "https://docs.stripe.com/terminal"
414
+ ],
415
+ "maggieDecision": "future reader operations"
416
+ },
417
+ {
418
+ "id": "stripe-connect",
419
+ "category": "multi-merchant",
420
+ "kind": "stripe-product",
421
+ "status": "future",
422
+ "officialDocs": [
423
+ "https://docs.stripe.com/connect"
424
+ ],
425
+ "maggieDecision": "future platform-only capability"
426
+ }
68
427
  ]
69
428
  }
@@ -46,17 +46,28 @@ creates four user-visible failures:
46
46
  host integration.
47
47
  - Preserve the existing `/_maggie/admin` content and operations workspace.
48
48
 
49
- ## 4. Non-goals for the first release
50
-
51
- - Payroll, commissions, inventory, accounting, or tax filing.
52
- - A marketplace, platform-led merchant-of-record flow, or public discovery
53
- network.
54
- - Memberships, loyalty, gift-card ledgers, or advanced waitlist optimization
55
- in the first production slice. The current release includes treatment
56
- packages, customer entitlements, package checkout/refunds, package
57
- redemption, cancellation-safe credit restoration, a tenant-scoped waitlist
58
- queue, and a bounded priority/FIFO matcher with manual conversion to a real
59
- booking.
49
+ ## 4. Scope boundaries
50
+
51
+ Shipped as contracts (rules with shared test vectors in
52
+ [RULES.md](./RULES.md), `maggie booking rules-vectors`) that hosts implement:
53
+ the booking state machine, late payment after an expired hold, venue-time
54
+ schedule inputs, money in minor units, till/checkout maths with tips and
55
+ service charge, payment-policy setup validation, reminders and notices,
56
+ `.ics`, availability rules (split hours, rotas, per-staff durations, gaps,
57
+ groups, peak pricing), team roles and permissions with PIN switching, client
58
+ safety (patch tests, blocked clients), loyalty and memberships, team pay
59
+ (commissions, time clock), and customer accounts. The gift voucher ledger is
60
+ fixed by the [voucher lifecycle contract](./VOUCHERS.md) (0.7.48). A platform
61
+ that hosts many businesses uses Stripe Connect direct charges
62
+ ([STRIPE-INTEGRATION.md](./STRIPE-INTEGRATION.md#platform-hosts-stripe-connect)).
63
+
64
+ Still out of scope for the MaggieDash manager UI itself:
65
+
66
+ - Payroll filing, tax filing and inventory management (pay runs export to
67
+ accounting tools instead).
68
+ - Being the merchant of record for businesses: a platform host uses direct
69
+ charges so each business stays the merchant.
70
+ - Advanced waitlist optimisation beyond the bounded priority/FIFO matcher.
60
71
  - Replacing the host's authentication, database connection, deployment, or
61
72
  media storage.
62
73
  - Storing card numbers, CVC, or other payment credentials in the host database.