@topy-ai/maggie 0.7.47 → 0.7.48
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-zh-TW.md +2 -2
- package/README.md +49 -15
- package/bin/maggie.js +6 -2
- package/bundled-contracts/maggie-design/palette-roles-v1.schema.json +47 -0
- package/bundled-contracts/maggie-marketplace/template-content-v1.schema.json +103 -0
- package/bundled-contracts/maggiedash/booking-browser-evidence-v1.json +21 -0
- package/bundled-contracts/maggiedash/booking-browser-evidence-v2.json +191 -0
- package/bundled-contracts/maggiedash/booking-email-templates-v1.json +3 -1
- package/bundled-contracts/maggiedash/booking-voucher-lifecycle-v1.json +85 -0
- package/bundled-contracts/maggiedash/execution-board.json +4629 -1553
- package/bundled-contracts/maggiedash/stripe-booking-capabilities-v1.json +1 -0
- package/bundled-marketplace/README.md +17 -0
- package/bundled-marketplace/catalog.json +56 -7
- package/bundled-references/browser-inspection.md +25 -0
- package/bundled-references/maggiedash-booking/CURRENT-STATE.md +128 -10
- package/bundled-references/maggiedash-booking/EXECUTION-BOARD.json +4629 -1553
- package/bundled-references/maggiedash-booking/HOST-ADAPTER.md +5 -0
- package/bundled-references/maggiedash-booking/ORAWELLNESS-INTEGRATION-AUDIT.md +64 -21
- package/bundled-references/maggiedash-booking/PRD.md +9 -1
- package/bundled-references/maggiedash-booking/PROGRESS.md +244 -2399
- package/bundled-references/maggiedash-booking/QA-TEST-PLAN.md +37 -6
- package/bundled-references/maggiedash-booking/README.md +23 -6
- package/bundled-references/maggiedash-booking/RUNTIME-OPERATIONS.md +64 -8
- package/bundled-references/maggiedash-booking/SKILLS-AND-CLI.md +11 -2
- package/bundled-references/maggiedash-booking/STRIPE-INTEGRATION.md +66 -2
- package/bundled-references/maggiedash-booking/TASK-RUNBOOK.md +1 -1
- package/bundled-references/maggiedash-booking/TASKS.md +44 -3
- package/bundled-references/maggiedash-booking/VOUCHERS.md +47 -0
- package/bundled-references/provider-adapter-contract.md +33 -0
- package/bundled-skills/maggie-booking/SKILL.md +8 -0
- package/bundled-skills/maggie-clone-to-template/SKILL.md +26 -0
- package/bundled-skills/maggie-deployment/SKILL.md +53 -1
- package/bundled-skills/maggie-deployment/references/vps.md +41 -0
- package/bundled-skills/maggie-design/SKILL.md +99 -0
- package/bundled-skills/maggie-feedback/SKILL.md +38 -1
- package/bundled-skills/maggie-marketplace/SKILL.md +91 -0
- package/bundled-skills/maggie-qa-workflow/SKILL.md +41 -1
- package/bundled-skills/maggie-service-booking/SKILL.md +23 -0
- package/bundled-skills/maggie-social-share/SKILL.md +37 -5
- package/bundled-skills/maggie-social-share/references/queue-and-connections.md +101 -0
- package/bundled-skills/maggie-template/SKILL.md +57 -3
- package/bundled-skills/maggie-template/references/template-content-v1.example.json +34 -0
- package/bundled-tools/clis/maggie_booking.py +199 -26
- package/bundled-tools/clis/maggie_booking_vouchers.py +185 -0
- package/bundled-tools/clis/maggie_clone_to_template.py +14 -0
- package/bundled-tools/clis/maggie_deployment.py +249 -1
- package/bundled-tools/clis/maggie_design.py +9 -0
- package/bundled-tools/clis/maggie_design_lint.py +277 -0
- package/bundled-tools/clis/maggie_feedback.py +106 -3
- package/bundled-tools/clis/maggie_marketplace.py +199 -5
- package/bundled-tools/clis/maggie_palette.py +280 -0
- package/bundled-tools/clis/maggie_qa_workflow.py +156 -1
- package/bundled-tools/clis/maggie_social_queue.py +338 -0
- package/bundled-tools/clis/maggie_social_share.py +42 -9
- package/bundled-tools/clis/maggie_template_package.py +1141 -0
- package/package.json +1 -1
- package/references/browser-inspection.md +25 -0
- package/references/provider-adapter-contract.md +33 -0
package/package.json
CHANGED
|
@@ -75,3 +75,28 @@ appearance. For every stateful component capture state A and state B and
|
|
|
75
75
|
record the trigger and transition. Keep screenshots and extracted data under
|
|
76
76
|
the target's namespaced research root so multiple URLs cannot overwrite one
|
|
77
77
|
another.
|
|
78
|
+
|
|
79
|
+
## Network interception and write safety
|
|
80
|
+
|
|
81
|
+
Any skill that drives a browser against a running app (QA, clone, design
|
|
82
|
+
review) must assume the app may talk to a real API. A local development build
|
|
83
|
+
is often configured with the production API base URL, so a click in local QA
|
|
84
|
+
can change live accounts.
|
|
85
|
+
|
|
86
|
+
- Do not rely on page-level stubs such as overriding `window.fetch` from the
|
|
87
|
+
console or an injected script. Bundled API clients usually capture `fetch`
|
|
88
|
+
at module load, use `XMLHttpRequest`, or run in a service worker, so the
|
|
89
|
+
override never sees their requests.
|
|
90
|
+
- Intercept at the network layer instead: Playwright `page.route()` /
|
|
91
|
+
`context.route()`, Puppeteer request interception, or CDP `Fetch.enable`.
|
|
92
|
+
Deny by default every non-GET request to a production origin and let only
|
|
93
|
+
explicitly listed reads through.
|
|
94
|
+
- Verify the interception before any write flow: trigger one harmless request
|
|
95
|
+
and confirm in the browser's network log that it was intercepted, not sent.
|
|
96
|
+
- Without network-layer interception, run write flows only against a
|
|
97
|
+
non-production API, or after the user gives explicit consent naming the
|
|
98
|
+
account and the data that will change. Record a backup or restore path first.
|
|
99
|
+
|
|
100
|
+
`maggie qa start --api-base URL --production-api URL` records the API target.
|
|
101
|
+
Scenarios marked `"mutates": true` are blocked against a production API unless
|
|
102
|
+
`--allow-production-writes` is given. See the `maggie-qa-workflow` skill.
|
|
@@ -150,6 +150,39 @@ image-processing contract: optimisation may use Cloudflare Images
|
|
|
150
150
|
transformations, Astro build tooling or a provider-specific implementation
|
|
151
151
|
behind the same interface.
|
|
152
152
|
|
|
153
|
+
## OAuth connections
|
|
154
|
+
|
|
155
|
+
A provider connection is only as reliable as its weakest connect path:
|
|
156
|
+
|
|
157
|
+
- Each adapter declares one canonical OAuth scope set. Every client that
|
|
158
|
+
starts the flow (dashboard, mobile app, CLI) requests exactly that set.
|
|
159
|
+
LinkedIn invalidates a member's earlier tokens when a later sign-in asks for
|
|
160
|
+
a different scope set, so a mobile app that omits `email` silently revokes
|
|
161
|
+
the dashboard's token while the database still says `active`.
|
|
162
|
+
- Prefer one OAuth client per product. When a client ID is shared with other
|
|
163
|
+
products or callbacks, record it as `client_shared_with`; their sign-ins can
|
|
164
|
+
revoke this product's tokens unless they use the identical scope set.
|
|
165
|
+
- Treat stored connection status as a cache. A token that the provider has
|
|
166
|
+
revoked, or that the serving host cannot decrypt, is `needs_reconnect`
|
|
167
|
+
before anything is scheduled on it — not when a post fails.
|
|
168
|
+
- Provider media URLs (for example `media.licdn.com` with an `e=` expiry) are
|
|
169
|
+
signed and expire. Cache the bytes in owned storage or refresh on readback.
|
|
170
|
+
|
|
171
|
+
`maggie tool maggie_social_share.py adapters` and `connections` check these
|
|
172
|
+
rules from a redacted JSON manifest; see the Social Share skill for shapes.
|
|
173
|
+
|
|
174
|
+
## Structured model output
|
|
175
|
+
|
|
176
|
+
Keep structured-output schemas small. Gemini rejected a JSON schema whose enum
|
|
177
|
+
had 125 values with `400 INVALID_ARGUMENT`, and the caller silently fell back
|
|
178
|
+
for every request. For a large vocabulary (styles, categories, catalogue IDs):
|
|
179
|
+
|
|
180
|
+
1. ask for a free string (optionally with a short list of examples in the
|
|
181
|
+
prompt) instead of a large `enum`;
|
|
182
|
+
2. validate the returned value server-side against the authoritative list;
|
|
183
|
+
3. treat a schema rejection or an unknown value as a visible, counted failure —
|
|
184
|
+
never a silent fallback to a default.
|
|
185
|
+
|
|
153
186
|
## Adding a provider
|
|
154
187
|
|
|
155
188
|
1. Implement the relevant interface in `src/lib/providers/`.
|