@topy-ai/maggie 0.7.38 → 0.7.41

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 (95) hide show
  1. package/README-zh-TW.md +82 -6
  2. package/README.md +99 -7
  3. package/bin/maggie.js +30 -3
  4. package/bundled-contracts/maggie-clone/interaction-state-v1.schema.json +26 -0
  5. package/bundled-contracts/maggie-content/provenance-v1.schema.json +20 -0
  6. package/bundled-contracts/maggie-design/brand-kit-v1.schema.json +18 -0
  7. package/bundled-contracts/maggie-design/browser-interactions-v1.schema.json +27 -0
  8. package/bundled-contracts/maggie-design/css-utility-evidence-v1.schema.json +10 -0
  9. package/bundled-contracts/maggie-design/dashboard-surface-v1.schema.json +11 -0
  10. package/bundled-contracts/maggie-design/progressive-enhancement-v1.schema.json +12 -0
  11. package/bundled-contracts/maggie-design/sample-surface-v1.schema.json +13 -0
  12. package/bundled-contracts/maggie-design/style-editing-v1.schema.json +35 -0
  13. package/bundled-contracts/maggie-media/image-generation-policy-v1.json +28 -0
  14. package/bundled-contracts/maggie-media/video-generation-policy-v1.json +40 -0
  15. package/bundled-contracts/maggie-media/video-job-v1.schema.json +20 -0
  16. package/bundled-contracts/maggie-media/video-playback-evidence-v1.schema.json +15 -0
  17. package/bundled-contracts/maggie-ops/npm11-preflight-v1.schema.json +17 -0
  18. package/bundled-contracts/maggie-scaffold/host-scaffold-v1.schema.json +25 -0
  19. package/bundled-contracts/maggie-seo/gsc-readiness-v1.schema.json +19 -0
  20. package/bundled-contracts/maggie-seo/privacy-origin-evidence-v1.schema.json +11 -0
  21. package/bundled-contracts/maggie-service-booking/delivery-provider-default-v1.json +8 -0
  22. package/bundled-contracts/maggie-service-booking/delivery-provider-v1.schema.json +16 -0
  23. package/bundled-contracts/maggiedash/booking-access-v1.json +5 -4
  24. package/bundled-contracts/maggiedash/booking-customer-surface-v1.json +12 -1
  25. package/bundled-contracts/maggiedash/booking-email-templates-v1.json +2 -0
  26. package/bundled-contracts/maggiedash/booking-host-adapter-v1.json +14 -2
  27. package/bundled-contracts/maggiedash/booking-runtime.v1.json +41 -0
  28. package/bundled-contracts/maggiedash/browser-session-v1.schema.json +18 -0
  29. package/bundled-contracts/maggiedash/content-overrides-v1.schema.json +19 -0
  30. package/bundled-contracts/maggiedash/execution-board.json +526 -26
  31. package/bundled-contracts/maggiedash/host-capabilities-v1.schema.json +10 -0
  32. package/bundled-contracts/maggiedash/public-session-cache-v1.schema.json +17 -0
  33. package/bundled-contracts/maggiedash/site-structure-v1.schema.json +13 -0
  34. package/bundled-references/browser-inspection.md +21 -0
  35. package/bundled-references/maggiedash-booking/ARCHITECTURE.md +218 -0
  36. package/bundled-references/maggiedash-booking/CURRENT-STATE.md +92 -0
  37. package/bundled-references/maggiedash-booking/DATA-FLOW.md +143 -0
  38. package/bundled-references/maggiedash-booking/DATA-MODEL.md +367 -0
  39. package/bundled-references/maggiedash-booking/DECISIONS.md +94 -0
  40. package/bundled-references/maggiedash-booking/EXECUTION-BOARD.json +2387 -0
  41. package/bundled-references/maggiedash-booking/HOST-ADAPTER.md +314 -0
  42. package/bundled-references/maggiedash-booking/ORAWELLNESS-INTEGRATION-AUDIT.md +227 -0
  43. package/bundled-references/maggiedash-booking/PAYMENT-GATEWAY.md +267 -0
  44. package/bundled-references/maggiedash-booking/PRD.md +228 -0
  45. package/bundled-references/maggiedash-booking/PROGRESS.md +2434 -0
  46. package/bundled-references/maggiedash-booking/QA-TEST-PLAN.md +235 -0
  47. package/bundled-references/maggiedash-booking/README.md +271 -0
  48. package/bundled-references/maggiedash-booking/RUNTIME-OPERATIONS.md +152 -0
  49. package/bundled-references/maggiedash-booking/SECURITY-COMPLIANCE.md +158 -0
  50. package/bundled-references/maggiedash-booking/SKILLS-AND-CLI.md +542 -0
  51. package/bundled-references/maggiedash-booking/STRIPE-INTEGRATION.md +129 -0
  52. package/bundled-references/maggiedash-booking/TASK-RUNBOOK.md +107 -0
  53. package/bundled-references/maggiedash-booking/TASKS.md +137 -0
  54. package/bundled-references/maggiedash-booking/USER-JOURNEYS.md +224 -0
  55. package/bundled-references/maggiedash-booking/diagrams/booking-dfd.excalidraw +1 -0
  56. package/bundled-references/maggiedash-booking/diagrams/booking-dfd.mmd +16 -0
  57. package/bundled-references/maggiedash-booking/diagrams/booking-dfd.png +0 -0
  58. package/bundled-references/maggiedash-booking/diagrams/booking-dfd.svg +1 -0
  59. package/bundled-references/maggiedash-booking/diagrams/booking-state-machine.mmd +19 -0
  60. package/bundled-references/maggiedash-booking/diagrams/booking-state-machine.png +0 -0
  61. package/bundled-references/maggiedash-booking/diagrams/booking-state-machine.svg +1 -0
  62. package/bundled-references/maggiedash-booking/diagrams/manager-journey.excalidraw +1 -0
  63. package/bundled-references/maggiedash-booking/diagrams/manager-journey.mmd +11 -0
  64. package/bundled-references/maggiedash-booking/diagrams/manager-journey.png +0 -0
  65. package/bundled-references/maggiedash-booking/diagrams/manager-journey.svg +1 -0
  66. package/bundled-references/maggiedash-booking/diagrams/payment-sequence.mmd +20 -0
  67. package/bundled-references/maggiedash-booking/diagrams/payment-sequence.png +0 -0
  68. package/bundled-references/maggiedash-booking/diagrams/payment-sequence.svg +1 -0
  69. package/bundled-references/maggiedash-booking/diagrams/system-context.excalidraw +1 -0
  70. package/bundled-references/maggiedash-booking/diagrams/system-context.mmd +10 -0
  71. package/bundled-references/maggiedash-booking/diagrams/system-context.png +0 -0
  72. package/bundled-references/maggiedash-booking/diagrams/system-context.svg +1 -0
  73. package/bundled-skills/maggie-blog/SKILL.md +12 -0
  74. package/bundled-skills/maggie-blog-bootstrap/SKILL.md +39 -0
  75. package/bundled-skills/maggie-booking/SKILL.md +112 -18
  76. package/bundled-skills/maggie-clone/SKILL.md +13 -0
  77. package/bundled-skills/maggie-deployment/SKILL.md +6 -0
  78. package/bundled-skills/maggie-design/SKILL.md +64 -3
  79. package/bundled-skills/maggie-ops/SKILL.md +12 -0
  80. package/bundled-skills/maggie-seo-geo/SKILL.md +45 -0
  81. package/bundled-skills/maggie-service-booking/SKILL.md +14 -0
  82. package/bundled-tools/clis/maggie_analytics.py +43 -1
  83. package/bundled-tools/clis/maggie_booking.py +161 -26
  84. package/bundled-tools/clis/maggie_browser_audit.py +99 -3
  85. package/bundled-tools/clis/maggie_clone.py +46 -1
  86. package/bundled-tools/clis/maggie_contracts.py +393 -0
  87. package/bundled-tools/clis/maggie_dash.py +22 -6
  88. package/bundled-tools/clis/maggie_design.py +84 -12
  89. package/bundled-tools/clis/maggie_service_booking.py +50 -1
  90. package/bundled-tools/clis/maggie_workflows.py +387 -0
  91. package/bundled-tools/clis/site_audit.py +77 -1
  92. package/bundled-tools/integrations/analytics.md +14 -0
  93. package/bundled-tools/runtime/site_baseline.py +3 -0
  94. package/package.json +1 -1
  95. package/references/browser-inspection.md +21 -0
package/README-zh-TW.md CHANGED
@@ -2,14 +2,47 @@
2
2
 
3
3
  [English README](README.md) · [完整繁體中文 README](https://github.com/TOPY-AI-LTD/ai-cmo-skills/blob/main/README.zh-TW.md)
4
4
 
5
- `@topy-ai/maggie` 提供 19 個可安裝的 AI website workflow skills,支援
5
+ `@topy-ai/maggie` 提供 20 個可安裝的 AI website workflow skills,支援
6
6
  Codex、Claude Code 與相容的 coding agents。
7
7
 
8
8
  ## 安裝
9
9
 
10
10
  ```bash
11
- npx @topy-ai/maggie@0.7.38 init --agent all
12
- npx @topy-ai/maggie doctor --project .
11
+ npx @topy-ai/maggie@0.7.41 init --agent all
12
+ npx @topy-ai/maggie@0.7.41 doctor --project .
13
+ ```
14
+
15
+ 目前 release 是 `0.7.41`,完成 feedback batches 22、23:加入 declarative
16
+ browser interaction evidence、design markup/style/content-key gate、compiler
17
+ source anchoring、entity double-escape protection、`update --help` read-only,
18
+ 以及 noindex hypothetical indexability、可過期 baseline acknowledgement、
19
+ DOM-only link extraction regression。MaggieDash 0.2.10 同步提供 content
20
+ override、短期 browser session、CDN-safe public-session cache contracts;
21
+ authentication 和 isolated dev server 仍由 host 負責。
22
+
23
+ 0.7.40 加入 feedback batch 21:progressive enhancement
24
+ 的區域/identity/request 驗證、Tailwind utility 與 CSS cascade evidence、
25
+ dashboard/sample surface contract、primary navigation indexability、privacy
26
+ origin parity、provider-neutral site structure、host capability manifest,
27
+ 以及包含 duration/price variants 的 Booking treatment group。MaggieDash
28
+ 同步更新至 0.2.9,ORA reference host 也提供相同的 capability/site-structure
29
+ 邊界。
30
+
31
+ 目前也加入 deferred workflow 的共用 contract gate:Gemini image/edit 使用
32
+ Nano Banana 2,hero video 使用 Gemini Omni Flash,GSC 直接擴充 analytics
33
+ release-gate,booking delivery 預設 Resend email + Twilio SMS;credentials、
34
+ billing、storage 和 provider runtime 仍由 host 負責。
35
+
36
+ ```bash
37
+ maggie media image-policy --policy contracts/maggie-media/image-generation-policy-v1.json
38
+ maggie media video-policy --policy contracts/maggie-media/video-generation-policy-v1.json
39
+ maggie analytics gsc-readiness --gsc-evidence .maggie/gsc-readiness.json
40
+ maggie provenance --project . --source src/content/post.md
41
+ maggie scaffold --project . --framework astro --language typescript --write --confirm
42
+ maggie brand-kit --project . --design DESIGN.md --write --confirm
43
+ maggie npm11 --project . --smoke --confirm
44
+ maggie media video-playback --evidence .maggie/video-playback-evidence.json
45
+ maggie booking-delivery --policy .maggie/booking-delivery-policy.json
13
46
  ```
14
47
 
15
48
  常用流程:
@@ -21,11 +54,26 @@ maggie memory context --project . --skill <skill-name>
21
54
  maggie doctor --project . --require-bootstrap --strict
22
55
  ```
23
56
 
57
+ Feedback batch quality gates:
58
+
59
+ ```bash
60
+ maggie design progressive-check --evidence .maggie/progressive.json
61
+ maggie design dash-validate --plan .maggie/design/dashboard/PLAN.json --evidence .maggie/dashboard.json
62
+ maggie seo privacy-check --evidence .maggie/privacy-origins.json
63
+ maggie dash capabilities-validate --manifest .maggie/host-capabilities.json
64
+ maggie dash structure-validate --model .maggie/site-structure.json --evidence .maggie/site-structure-rendered.json
65
+ maggie service treatment-group-audit --project .
66
+ ```
67
+
68
+ 這些 gate 只接受經過清理的 build/browser evidence,會在第三方 request 重複、
69
+ Tailwind/CSS cascade、dashboard unsupported surface、privacy origin、site
70
+ structure drift 或重複 treatment product 時 fail closed。
71
+
24
72
  主要 skills 包括 clone、design、template、Blog、SEO/GEO、localization、
25
73
  deployment、memory、feedback 和 MaggieDash。內容先 draft/review,外部寫入、
26
74
  publish 與 production deployment 需要明確確認。
27
75
 
28
- 目前 release 是 `0.7.38`,加入可安裝的 `maggie-booking` workflow:MaggieDash Booking host bootstrap、傳統 email/password 團隊登入與 granular permissions、Stripe payment boundary、Resend outbox/template 管理、public customer booking flow、runtime/ops evidence checks,以及完整的 Booking 維護文件。全新的 Astro host 會自動補上可攜的 Node SSR adapter;已有 Cloudflare、Vercel、Netlify 或 Deno adapter 的專案會保留原本的部署選擇。Production activation 仍會 fail-closed,直到 host migration、owner、Stripe、scheduler 和 authenticated runtime evidence 都完成。上一版 `0.7.36` 完成下一批已驗證 feedback:修正 doctor placeholder scope、Tailwind renderable source scope、internal link/fragment audit、unstable baseline classification、site-wide baseline reason、base64url asset hash、installed-file hash update safety,並加入 provider-routed Gemini v2、venue timezone/DST booking parsing、social-card release path、notification lifecycle contract 和 mobile hero video playback contract。provider-bound video generation 與 transactional delivery 已記錄在 issue #39;前一批延後功能仍在 issue #38,不會直接成為 active memory。0.7.33 記錄並審查一筆更正回饋;確認 0.7.32 已正確處理 batch index,沒有修改已驗證的 shared behavior。0.7.32 加入 feedback 一基索引支援、MaggieDash panel 的 source/freshness/error evidence、Consent Mode 與實際 write/no-op reconciliation、SEO baseline recapture、sitemap origin rebasing、content-diff scope、migration ledger reconciliation、deployment credential preflight、release provenance/runtime preflight、icon release gate、opt-in blog auto-publish gate,以及 least-privilege VPS deployer。也修復 top-level `maggie feedback` dispatcher parity。0.7.31 加入 update 差異摘要、atomic installer copy、subset install manifest merge,以及 inventory drift 時 doctor non-zero。0.7.30 補上 feedback tracking issue closeout gate 與 batch 14/15 audit ledger。0.7.29 修正 npm package landing page 使用英文 README;0.7.28 加入 versioned Gemini model policy、明確 fallback 與 provenance、bundled-first CLI
76
+ 目前 source tree 的正式 release 是 `0.7.41`。本版完成 feedback batches 22、23:加入 declarative browser interaction evidence、design markup/style/content-key gate、compiler source anchoring、entity double-escape protection、`update --help` read-only、noindex hypothetical indexability、可過期 baseline acknowledgement、DOM-only link extraction regression,以及 MaggieDash 0.2.10 的 content override、短期 browser session、CDN-safe public-session cache contracts。authentication 和 isolated dev server 仍由 host 負責。`maggie-booking` workflow、傳統 email/password、Stripe、Resend、public booking flow 及既有安全邊界維持不變;provider-bound video generation 與 transactional delivery 仍記錄在 issue #39,前一批延後功能仍在 issue #38,不會直接成為 active memory。0.7.33 記錄並審查一筆更正回饋;確認 0.7.32 已正確處理 batch index,沒有修改已驗證的 shared behavior。0.7.32 加入 feedback 一基索引支援、MaggieDash panel 的 source/freshness/error evidence、Consent Mode 與實際 write/no-op reconciliation、SEO baseline recapture、sitemap origin rebasing、content-diff scope、migration ledger reconciliation、deployment credential preflight、release provenance/runtime preflight、icon release gate、opt-in blog auto-publish gate,以及 least-privilege VPS deployer。也修復 top-level `maggie feedback` dispatcher parity。0.7.31 加入 update 差異摘要、atomic installer copy、subset install manifest merge,以及 inventory drift 時 doctor non-zero。0.7.30 補上 feedback tracking issue closeout gate 與 batch 14/15 audit ledger。0.7.29 修正 npm package landing page 使用英文 README;0.7.28 加入 versioned Gemini model policy、明確 fallback 與 provenance、bundled-first CLI
29
77
  dispatch、`maggie --version`、feedback batch review 聚合與重複偵測、marketplace enrichment evidence、booking
30
78
  worker/resolver evidence,以及 read-only migration preflight。它也包含 host-owned mobile app surface contract、signed-in
31
79
  camera-state QA、直接 Astro route resolution、correlated feedback batch,以及
@@ -63,10 +111,20 @@ delivery outbox:可查看去識別化的狀態與 sanitized error;owner/mana
63
111
  這是 Maggie 的 server-side delivery queue 與 audit 管理,不取代 Resend 自己的
64
112
  domain、audience、campaign 或 analytics console。
65
113
 
114
+ Booking manager 也已提供 tenant-scoped 的 prepaid treatment package catalogue,
115
+ 以及客戶 package entitlement 的手動授予、餘額查詢和預約時的原子核銷:可設定
116
+ 包含的 treatment variant 數量、價格、幣別、有效期與啟用狀態。公開客戶流程
117
+ 也支援 package checkout、token-bound payment return;manager 可以查看購買紀錄
118
+ 並提出受 redemption 保護的 Stripe package refund。Stripe 確認購買或退款後,
119
+ 會透過共用 outbox/worker 發送去識別化且具 idempotency 的 Resend 通知。
120
+
66
121
  在全新的 Astro 專案中,可以讓安裝流程補上缺少的 Booking runtime 套件:
67
122
 
68
123
  ```bash
69
124
  maggie booking install --project . --confirm --install-dependencies
125
+
126
+ # 已審核的新主機:安裝缺少的套件並套用 Booking schema
127
+ maggie booking install --project . --confirm --ready
70
128
  ```
71
129
 
72
130
  這個選項會依照專案現有的 npm/pnpm/yarn/bun lockfile,只安裝缺少的
@@ -76,6 +134,19 @@ React、Phosphor、Tailwind、PostgreSQL、Stripe 和 SSR adapter 套件,保
76
134
  Cloudflare/Vercel/Netlify/Deno adapter 的專案會保留原本的部署選擇。
77
135
  它不能和 `--dry-run` 或 `--diff` 一起使用。
78
136
 
137
+ 如果 host 需要自動處理 Resend outbox、reminder 和 payment reconciliation,
138
+ 可以同時產生 scheduler artifact:
139
+
140
+ ```bash
141
+ maggie booking install --project . --confirm --bootstrap --schedule systemd
142
+ # 沒有 systemd 的 host:
143
+ maggie booking worker-schedule --project . --scheduler cron --confirm
144
+ ```
145
+
146
+ 這只會在 `deploy/` 寫入可審查的 service/timer 或 cron 文件,不會修改
147
+ crontab、啟用 systemd、啟動 worker,也不會輸出 secret。啟用前仍要由 host
148
+ 管理員審查 service user,並完成 migration、backup/restore 及 release evidence。
149
+
79
150
  Booking 的 browser evidence gate 現在涵蓋全部 15 個 manager routes,在 mobile、
80
151
  tablet、desktop 三種 viewport 共需要 45 個 screens,包含 waitlist、locations、
81
152
  notifications、reports 和 audit。Production release 仍需要 authenticated HTTPS
@@ -98,7 +169,12 @@ Booking Team access 支援透過 Resend 發送傳統 email/password 邀請、`ma
98
169
  maggie booking email-templates-contract
99
170
  ```
100
171
 
101
- Booking 內置七種 Resend 事件模板。Owner、administrator 和 Booking manager
172
+ Booking 內置十種 Resend 事件模板,包含 package purchase confirmation/refund
173
+ 與成功 no-show fee charge 通知。No-show 狀態轉換不會自動扣款;只有在
174
+ 客戶同意、已有保存的 Stripe payment method、provider off-session capability
175
+ 已驗證,且 owner/manager/finance 明確確認後,才會建立 idempotent adjustment
176
+ charge。
177
+ Owner、administrator 和 Booking manager
102
178
  可以編輯 draft、用 sandbox sample data 預覽、發佈 audited version,或 rollback
103
179
  舊版本。每個事件只接受核准的 placeholder,worker 發送前會 escape value;
104
180
  provider credentials 和 recipient address 只留在 server/worker,不會返回瀏覽器。
@@ -149,6 +225,6 @@ maggie service retirement-audit --project . \
149
225
  --evidence .maggie/booking/retirement-evidence.json
150
226
  ```
151
227
 
152
- 完整中文說明、19 個 skills 清單和 roadmap:
228
+ 完整中文說明、20 個 skills 清單和 roadmap:
153
229
  [繁體中文 README](https://github.com/TOPY-AI-LTD/ai-cmo-skills/blob/main/README.zh-TW.md)
154
230
  · [Roadmap](https://github.com/TOPY-AI-LTD/ai-cmo-skills/blob/main/ROADMAP.md)
package/README.md CHANGED
@@ -58,17 +58,75 @@ Then invoke the installed skills from your coding agent, for example:
58
58
 
59
59
  Maggie keeps the existing project foundation and asks for decisions before
60
60
  shared routes, analytics, or publishing boundaries change. The current
61
- package ships 19 installable skills and a local-first MaggieDash foundation.
61
+ package ships 20 installable skills and a local-first MaggieDash foundation.
62
+
63
+ The current release is `0.7.41`. It closes feedback batches 22 and 23 with
64
+ declarative browser interaction evidence, stable design markup/style/content-key
65
+ gates, compiler source anchoring, entity double-escape protection, and a
66
+ read-only `update --help` path. It also adds hypothetical indexability
67
+ diagnostics for `noindex` pages, expiring baseline acknowledgement evidence,
68
+ DOM-only link extraction regression coverage, and provider-neutral MaggieDash
69
+ contracts for content overrides, short-lived browser sessions, and CDN-safe
70
+ public-session cache boundaries. Host-owned authentication and isolated
71
+ dev-server choices remain explicit. MaggieDash 0.2.10 contains the matching
72
+ host contracts.
73
+
74
+ The source tree also includes the selected deferred-workflow contracts for
75
+ Gemini media, clone interaction replay, GSC readiness, git content provenance,
76
+ npm 11, empty-project scaffolding, brand kits, and booking delivery. The
77
+ default provider policy is Gemini Nano Banana 2 for image/edit, Gemini Omni
78
+ Flash for hero video, and Resend email plus Twilio SMS for booking delivery.
79
+ Credentials, billing, storage, and live provider adapters remain host-owned.
62
80
 
63
- The current release is `0.7.38`. It adds adapter-aware fresh Astro Booking
81
+ ```bash
82
+ maggie media image-policy --policy contracts/maggie-media/image-generation-policy-v1.json
83
+ maggie media video-policy --policy contracts/maggie-media/video-generation-policy-v1.json
84
+ maggie analytics gsc-readiness --gsc-evidence .maggie/gsc-readiness.json
85
+ maggie provenance --project . --source src/content/post.md
86
+ maggie scaffold --project . --framework astro --language typescript --write --confirm
87
+ maggie brand-kit --project . --design DESIGN.md --write --confirm
88
+ maggie npm11 --project . --smoke --confirm
89
+ maggie media video-playback --evidence .maggie/video-playback-evidence.json
90
+ maggie booking-delivery --policy .maggie/booking-delivery-policy.json
91
+ ```
92
+
93
+ These are evidence gates, not implicit provider calls. See the maintainer
94
+ [decision record](../../docs/github-issues/DECISIONS-2026-09-22.md) for the
95
+ remaining host/provider release work.
96
+
97
+ The 0.7.40 release adds feedback batch 21 contracts for
98
+ progressive-enhancement identity/request safety, rendered Tailwind utility and
99
+ CSS-cascade checks, dashboard/sample surface evidence, primary-navigation
100
+ indexability, privacy-origin parity, provider-neutral site structure, host
101
+ capability manifests, and Booking treatment groups with duration/price
102
+ variants. It also includes MaggieDash 0.2.9 host-contract updates.
103
+
104
+ The previous `0.7.39` release candidate added adapter-aware fresh Astro Booking
64
105
  installation: blank hosts receive a portable Node SSR config while existing
65
106
  deployment adapters remain host-owned. It also adds the installable `maggie-booking`
66
107
  workflow for MaggieDash Booking: host bootstrap, traditional email/password
67
108
  team access with granular permissions, Stripe payment boundaries, Resend
68
109
  outbox and tenant email-template management, public customer booking flow,
69
110
  runtime/ops evidence checks, and the maintained Booking implementation docs.
111
+ The manager workspace also includes a tenant-scoped prepaid treatment package
112
+ catalogue with included variant quantities, package pricing, optional expiry,
113
+ and active/inactive state. Managers can also grant tenant-scoped customer
114
+ entitlements, inspect remaining balances, and redeem matching visits
115
+ transactionally when creating a manager booking. Public customers can also
116
+ start package checkout, return through a token-bound payment page, and the
117
+ manager can list and request guarded Stripe package refunds. Verified package
118
+ success/refund transitions also enqueue idempotent Resend confirmation/refund
119
+ emails through the shared delivery worker.
120
+ The Booking flow also supports an explicit, consented Stripe off-session
121
+ no-show fee action after a booking is marked `no_show`; it requires a saved
122
+ payment method, verified provider capability, idempotent adjustment state, and
123
+ queues the customer email through the Resend outbox only after a successful
124
+ charge. A status transition never charges automatically.
70
125
  Production activation remains fail-closed until the host migration, owner,
71
- Stripe, scheduler, and authenticated runtime evidence are supplied.
126
+ Stripe, scheduler, and authenticated runtime evidence are supplied. The
127
+ release candidate also regenerates the published Booking contracts and adds
128
+ an exact npm-tarball smoke test so the registry package cannot silently fall
129
+ behind the source CLI.
72
130
 
73
131
  The previous `0.7.36` release closed the next validated feedback batch:
74
132
  production demo fixtures are development-only, Dash infers the persisted
@@ -527,8 +585,8 @@ artifact schemas.
527
585
  Recommended upgrade sequence for the current release:
528
586
 
529
587
  ```bash
530
- npx @topy-ai/maggie@0.7.38 update --project . --force
531
- npx @topy-ai/maggie@0.7.38 cleanup --project .
588
+ npx @topy-ai/maggie@0.7.39 update --project . --force
589
+ npx @topy-ai/maggie@0.7.39 cleanup --project .
532
590
  ```
533
591
 
534
592
  Maintainers should pass npm credentials through the repository helper, never
@@ -642,6 +700,9 @@ has no existing Astro deployment adapter:
642
700
 
643
701
  ```bash
644
702
  maggie booking install --project . --confirm --install-dependencies
703
+
704
+ # Reviewed new host: install missing packages and apply the Booking schema
705
+ maggie booking install --project . --confirm --ready
645
706
  ```
646
707
 
647
708
  Existing dependency versions are preserved. A blank Astro project receives a
@@ -663,6 +724,20 @@ one in the local `.env` without printing it. Existing secrets are preserved;
663
724
  short configured values fail closed. External secret stores must provision the
664
725
  key themselves.
665
726
 
727
+ Generate the worker schedule artifact during install when the host is ready to
728
+ review its Resend outbox, reminders, and payment reconciliation cadence:
729
+
730
+ ```bash
731
+ maggie booking install --project . --confirm --bootstrap --schedule systemd
732
+ # or:
733
+ maggie booking worker-schedule --project . --scheduler cron --confirm
734
+ ```
735
+
736
+ The command writes reviewable files under `deploy/` only. It does not edit a
737
+ crontab, enable systemd, start a worker, or print secrets. Review the generated
738
+ unit, set an unprivileged service user, and enable it only after the migration,
739
+ backup/restore, and host evidence gates pass.
740
+
666
741
  Run the read-only onboarding checklist after installation:
667
742
 
668
743
  ```bash
@@ -689,7 +764,7 @@ Validate the tenant-scoped Booking email-template contract independently:
689
764
  maggie booking email-templates-contract
690
765
  ```
691
766
 
692
- The Booking workspace includes seven Resend event templates. Owner,
767
+ The Booking workspace includes ten Resend event templates. Owner,
693
768
  administrator, and Booking managers can edit drafts, preview sandboxed sample
694
769
  data, publish audited versions, and roll back earlier versions. Event-specific
695
770
  placeholders are allowlisted and escaped before the host worker sends through
@@ -1007,7 +1082,7 @@ repairs with `maggie dash sections validate`, `fanout-validate`,
1007
1082
  `maggie dash inventory` to classify published pages once into disjoint kinds.
1008
1083
  See the [quality contract examples](https://github.com/TOPY-AI-LTD/ai-cmo-skills/blob/main/contracts/maggiedash/quality-contracts.md).
1009
1084
 
1010
- The package includes all 19 installable skills: `maggie-blog-bootstrap`,
1085
+ The package includes all 20 installable skills: `maggie-blog-bootstrap`,
1011
1086
  `maggie-dash`, `maggie-clone`, `maggie-clone-to-template`, `maggie-marketplace`,
1012
1087
  `maggie-template`, `maggie-design`, `maggie-ops`, `maggie-deployment`,
1013
1088
  `maggie-project-context`, `maggie-seo-geo`, `maggie-social-share`,
@@ -1065,6 +1140,23 @@ maggie list
1065
1140
  maggie --help
1066
1141
  ```
1067
1142
 
1143
+ Feedback batch quality gates:
1144
+
1145
+ ```bash
1146
+ maggie design progressive-check --evidence .maggie/progressive.json
1147
+ maggie design dash-validate --plan .maggie/design/dashboard/PLAN.json --evidence .maggie/dashboard.json
1148
+ maggie design sample-validate --plan .maggie/design/sample/PLAN.json --evidence .maggie/sample.json
1149
+ maggie seo privacy-check --evidence .maggie/privacy-origins.json
1150
+ maggie dash capabilities-validate --manifest .maggie/host-capabilities.json
1151
+ maggie dash structure-validate --model .maggie/site-structure.json --evidence .maggie/site-structure-rendered.json
1152
+ maggie service treatment-group-audit --project .
1153
+ ```
1154
+
1155
+ These checks consume sanitized build/browser evidence and fail closed on
1156
+ third-party request churn, stale utility CSS, unsupported dashboard panels,
1157
+ privacy-policy origin drift, site-structure drift, or duplicated treatment
1158
+ products.
1159
+
1068
1160
  ## Safety model
1069
1161
 
1070
1162
  - Clone only sites the user owns or is authorized to reproduce.
package/bin/maggie.js CHANGED
@@ -58,7 +58,7 @@ Usage:
58
58
  maggie doctor [--project PATH]
59
59
  maggie bootstrap interview [project]
60
60
  maggie dash init|install|status|migrate|transition|variant|cms --project PATH [options]
61
- maggie booking install|inspect|setup|contract|runtime-validate|ops-validate|release-gate|stripe-audit|tasks --project PATH [options]
61
+ maggie booking install|worker-schedule|inspect|setup|contract|runtime-validate|ops-validate|release-gate|stripe-audit|tasks --project PATH [options]
62
62
  maggie dash sections <validate|prompt|keys|remap-translations|fanout-validate|locale-validate|variant-copy-validate|media-validate|bindings-validate|idempotency-validate|reconcile> [options]
63
63
  maggie dash inventory --pages-file FILE [--require-page-kinds] [--require-source-coverage]
64
64
  maggie dash api-contract --spec FILE
@@ -68,6 +68,12 @@ Usage:
68
68
  maggie dash components-audit --bindings-file FILE --sections-file FILE --pages-file FILE
69
69
  maggie dash status --project PATH
70
70
  maggie dash migrate --project PATH --confirm
71
+ maggie dash capabilities-validate|session-check|content-overrides-check --manifest FILE
72
+ maggie dash cache-boundary-check --evidence FILE
73
+ maggie dash structure-validate --model FILE --evidence FILE
74
+ maggie design progressive-check|css-check|css-cascade-check|style-check --evidence FILE
75
+ maggie design dash-init|dash-validate|sample-init|sample-validate [options]
76
+ maggie seo privacy-check --evidence FILE
71
77
  maggie content FILE --source PROVIDER --project PATH --confirm
72
78
  maggie agent-content write --url URL --allowed-origin ORIGIN --token-env ENV --payload FILE
73
79
  maggie bootstrap phase <start|pass|fail|status> <phase> [project]
@@ -85,6 +91,7 @@ Usage:
85
91
  maggie clone-to-template validate <id>
86
92
  maggie clone run <homepage-url> --run-id <id>
87
93
  maggie clone status --run-id <id>
94
+ maggie clone interactions --run-id <id> --browse PATH --interactions FILE
88
95
  maggie design run <target-url> --clone-run <id>
89
96
  maggie design reference-ui --project PATH --reference PATH --surface blog,service --confirm
90
97
  maggie design init --project PATH --surface blog|service --reference-run PATH --confirm
@@ -94,6 +101,7 @@ Usage:
94
101
  maggie design icon-inventory --project PATH --source-dir src --runtime assets/icons.css --output docs/icon-inventory.json
95
102
  maggie design icon-release-gate --icon-report FILE --browser-report FILE --output FILE
96
103
  maggie design author --project PATH --route /about --purpose TEXT --audience TEXT --confirm
104
+ maggie design markup-check --html FILE [--require-content-keys]
97
105
  maggie design in-place --project PATH --route /pricing [--content-source PATH]
98
106
  maggie design section --project PATH --route /pricing --section-id ID
99
107
  maggie design section-validate --before FILE --after FILE --section-id ID
@@ -126,6 +134,13 @@ Usage:
126
134
  maggie migration identity --identity-file FILE [--expected-file FILE]
127
135
  maggie schedule PATH/.maggie/schedule.json --project PATH
128
136
  maggie analytics [traffic-audit|release-gate] --project PATH --environment staging
137
+ maggie analytics gsc-readiness --gsc-evidence FILE
138
+ maggie media [image-policy|video-policy|video-job|video-playback] [--policy/--job/--evidence FILE]
139
+ maggie provenance --project PATH [--source PATH] [--output FILE]
140
+ maggie scaffold --project PATH --framework astro|nextjs|sveltekit|nuxt|vite-react|vite-vue [--write --confirm]
141
+ maggie brand-kit --manifest FILE | --project PATH --design DESIGN.md [--write --confirm]
142
+ maggie npm11 --project PATH [--smoke --confirm]
143
+ maggie booking-delivery [--policy FILE]
129
144
  maggie release PATH --environment staging --target vps-with-cloudflare-dns
130
145
  maggie api lifecycle --project PATH [--execute --allow-quota]
131
146
  maggie memory <init|list|search|context|add|record-error|transition|export> --project PATH
@@ -136,7 +151,7 @@ Usage:
136
151
  maggie site-audit URL [--crawl] [--access-log FILE] [--require-sitemap-request] [--languages en-GB,es-MX,ja-JP] [--check-hreflang] [--check-internal-links]
137
152
  maggie site-audit URL --crawl --save-baseline FILE --reviewer NAME
138
153
  maggie site-audit URL --crawl --baseline FILE [--reason-all REASON]
139
- maggie browser-audit URL --browse PATH --output DIR --required SELECTOR [--sticky SELECTOR]
154
+ maggie browser-audit URL --browse PATH --output DIR --required SELECTOR [--sticky SELECTOR] [--interactions FILE]
140
155
  maggie verification coverage --contract FILE --evidence FILE
141
156
  maggie ops audit|preflight|verify|lockfiles|seed-manifest|google-capabilities|favicon-check --project PATH
142
157
  maggie ops google-capabilities --project PATH --report FILE [--output FILE]
@@ -400,6 +415,10 @@ function install(args) {
400
415
  }
401
416
 
402
417
  function update(args) {
418
+ if (args.some((item) => ["--help", "-h"].includes(item))) {
419
+ usage();
420
+ return;
421
+ }
403
422
  const root = projectRoot(args);
404
423
  const skills = selectedSkills(args);
405
424
  const force = args.includes("--force");
@@ -469,7 +488,8 @@ function docs(args) {
469
488
  function seo(args) {
470
489
  const command = args[0];
471
490
  const scripts = { performance: "maggie_performance.py", images: "maggie_images.py", sitemap: "maggie_sitemap.py", indexnow: "maggie_indexnow.py", "social-cards": "maggie_social_cards.py", "head-tags": "maggie_head_tags.py" };
472
- if (!scripts[command]) throw new Error("seo command must be performance, images, sitemap, indexnow, social-cards, or head-tags");
491
+ if (command === "privacy-check") return workflowCli("maggie_contracts.py", ["privacy-check", ...args.slice(1)]);
492
+ if (!scripts[command]) throw new Error("seo command must be performance, images, sitemap, indexnow, social-cards, head-tags, or privacy-check");
473
493
  workflowCli(scripts[command], args.slice(1));
474
494
  }
475
495
 
@@ -564,6 +584,8 @@ try {
564
584
  else if (command === "clone-to-template") workflowCli("maggie_clone_to_template.py", args);
565
585
  else if (command === "design" && args[0] === "icon-inventory") workflowCli("maggie_icon_inventory.py", args.slice(1));
566
586
  else if (command === "design" && args[0] === "icon-release-gate") workflowCli("maggie_icon_release_gate.py", args.slice(1));
587
+ else if (command === "design" && ["progressive-check", "css-check", "css-cascade-check", "style-check", "dash-init", "dash-validate", "sample-init", "sample-validate"].includes(args[0])) workflowCli("maggie_contracts.py", args);
588
+ else if (command === "design" && args[0] === "markup-check") workflowCli("maggie_design.py", args);
567
589
  else if (command === "design") workflowCli("maggie_design.py", args);
568
590
  else if (command === "auth") workflowCli("maggie_auth.py", args);
569
591
  else if (command === "blog") workflowCli("maggie_blog.py", args);
@@ -580,6 +602,10 @@ try {
580
602
  else if (command === "migration") workflowCli("maggie_migration.py", args);
581
603
  else if (command === "schedule") workflowCli("maggie_schedule.py", args);
582
604
  else if (command === "analytics") workflowCli("maggie_analytics.py", args);
605
+ else if (["media", "provenance", "scaffold", "brand-kit", "npm11", "booking-delivery"].includes(command)) {
606
+ const workflowArgs = command === "media" ? ["media", ...args] : command === "brand-kit" ? ["brand-kit", ...args] : command === "npm11" ? ["npm11", ...args] : command === "booking-delivery" ? ["booking-delivery", ...args] : [command, ...args];
607
+ workflowCli("maggie_workflows.py", workflowArgs);
608
+ }
583
609
  else if (command === "release") workflowCli("maggie_release.py", args);
584
610
  else if (command === "bootstrap") workflowCli("maggie.py", ["bootstrap", ...args]);
585
611
  else if (command === "api") workflowCli("maggie.py", ["api", ...args]);
@@ -590,6 +616,7 @@ try {
590
616
  else if (command === "site-audit") workflowCli("site_audit.py", args);
591
617
  else if (command === "browser-audit") workflowCli("maggie_browser_audit.py", args);
592
618
  else if (command === "verification") workflowCli("maggie_verification.py", args);
619
+ else if (command === "dash" && ["capabilities-validate", "structure-validate", "content-overrides-check", "session-check", "cache-boundary-check"].includes(args[0])) workflowCli("maggie_contracts.py", args);
593
620
  else if (command === "dash") workflowCli("maggie_dash.py", args);
594
621
  else if (command === "booking") workflowCli("maggie_booking.py", args);
595
622
  else if (command === "agent-content") workflowCli("maggie_agent_content.py", args);
@@ -0,0 +1,26 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://maggie.noblox.app/contracts/maggie-clone/interaction-state-v1.schema.json",
4
+ "title": "Maggie clone interaction-state evidence v1",
5
+ "type": "object",
6
+ "required": ["schemaVersion", "sourceRunId", "interactionManifest", "viewports", "states"],
7
+ "properties": {
8
+ "schemaVersion": {"const": "maggie-clone-interaction-state.v1"},
9
+ "sourceRunId": {"type": "string", "pattern": "^[A-Za-z0-9._-]+$"},
10
+ "interactionManifest": {"type": "string", "minLength": 1},
11
+ "viewports": {"type": "array", "items": {"enum": ["desktop", "tablet", "mobile"]}, "minItems": 3, "uniqueItems": true},
12
+ "states": {
13
+ "type": "array",
14
+ "minItems": 1,
15
+ "items": {"type": "object", "required": ["viewport", "stepId", "status"], "properties": {
16
+ "viewport": {"enum": ["desktop", "tablet", "mobile"]},
17
+ "stepId": {"type": "string"},
18
+ "status": {"enum": ["passed", "failed"]},
19
+ "screenshot": {"type": ["string", "null"]},
20
+ "error": {"type": ["string", "null"]}
21
+ }, "additionalProperties": false}
22
+ },
23
+ "redacted": {"const": true}
24
+ },
25
+ "additionalProperties": false
26
+ }
@@ -0,0 +1,20 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://maggie.noblox.app/contracts/maggie-content/provenance-v1.schema.json",
4
+ "title": "Maggie git-backed content provenance v1",
5
+ "type": "object",
6
+ "required": ["schemaVersion", "commit", "branch", "dirty", "sourceRevision", "authoringBoundary"],
7
+ "properties": {
8
+ "schemaVersion": {"const": "maggie-content-provenance.v1"},
9
+ "commit": {"type": "string", "pattern": "^[0-9a-f]{7,64}$"},
10
+ "branch": {"type": "string", "minLength": 1},
11
+ "dirty": {"type": "boolean"},
12
+ "sourceRevision": {"type": "string", "pattern": "^[0-9a-f]{7,64}$"},
13
+ "sourcePath": {"type": "string", "minLength": 1},
14
+ "authoringBoundary": {"enum": ["git-source", "host-runtime", "generated-artifact"]},
15
+ "tracked": {"type": "boolean"},
16
+ "staleWritePolicy": {"const": "reject-unless-source-revision-matches"},
17
+ "capturedAt": {"type": "string", "format": "date-time"}
18
+ },
19
+ "additionalProperties": false
20
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://maggie.noblox.app/contracts/maggie-design/brand-kit-v1.schema.json",
4
+ "title": "Maggie reusable brand kit v1",
5
+ "type": "object",
6
+ "required": ["schemaVersion", "designTokens", "logo", "typography", "icons", "assetManifest", "preview", "designBoundary"],
7
+ "properties": {
8
+ "schemaVersion": {"const": "maggie-brand-kit.v1"},
9
+ "designTokens": {"type": "object", "minProperties": 1},
10
+ "logo": {"type": "object", "required": ["primary", "variants"], "properties": {"primary": {"type": "string"}, "variants": {"type": "array", "items": {"type": "string"}}}, "additionalProperties": false},
11
+ "typography": {"type": "object", "required": ["families", "weights"], "properties": {"families": {"type": "array", "minItems": 1}, "weights": {"type": "array", "minItems": 1}}, "additionalProperties": false},
12
+ "icons": {"type": "object", "required": ["library", "policy"], "properties": {"library": {"type": "string"}, "policy": {"enum": ["library-first", "host-defined"]}}, "additionalProperties": false},
13
+ "assetManifest": {"type": "string", "minLength": 1},
14
+ "preview": {"type": "string", "minLength": 1},
15
+ "designBoundary": {"const": "DESIGN.md-and-host-tokens-are-source-of-truth"}
16
+ },
17
+ "additionalProperties": false
18
+ }
@@ -0,0 +1,27 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://maggie.noblox.app/contracts/browser-interactions-v1.schema.json",
4
+ "title": "Maggie browser interaction evidence v1",
5
+ "type": "object",
6
+ "required": ["schemaVersion", "steps"],
7
+ "properties": {
8
+ "schemaVersion": {"const": "maggie-browser-interactions.v1"},
9
+ "steps": {
10
+ "type": "array",
11
+ "minItems": 1,
12
+ "items": {
13
+ "type": "object",
14
+ "required": ["id", "action"],
15
+ "properties": {
16
+ "id": {"type": "string", "pattern": "^[A-Za-z0-9._-]+$"},
17
+ "action": {"enum": ["click", "fill", "type", "select", "press", "wait", "assert-visible", "assert-enabled", "assert-disabled", "assert-checked", "assert-editable", "assert-text", "assert-style", "assert-no-request"]},
18
+ "selector": {"type": "string"},
19
+ "property": {"type": "string"},
20
+ "origin": {"type": "string"}
21
+ },
22
+ "additionalProperties": true
23
+ }
24
+ }
25
+ },
26
+ "additionalProperties": false
27
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "title": "Maggie rendered CSS utility evidence",
4
+ "type": "object",
5
+ "required": ["schemaVersion", "elements"],
6
+ "properties": {
7
+ "schemaVersion": {"const": "maggie-css-utility-evidence.v1"},
8
+ "elements": {"type": "array"}
9
+ }
10
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "title": "Maggie operator dashboard surface",
4
+ "type": "object",
5
+ "required": ["schemaVersion", "route", "requiredEvidence"],
6
+ "properties": {
7
+ "schemaVersion": {"const": "maggie-dashboard-surface.v1"},
8
+ "route": {"type": "string"},
9
+ "requiredEvidence": {"type": "array", "minItems": 6}
10
+ }
11
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "title": "Maggie progressive enhancement evidence",
4
+ "type": "object",
5
+ "required": ["schemaVersion", "region", "initial", "states"],
6
+ "properties": {
7
+ "schemaVersion": {"const": "maggie-progressive-enhancement.v1"},
8
+ "region": {"type": "object", "required": ["id", "selector", "swapScope"]},
9
+ "initial": {"type": "object", "required": ["thirdPartyRequests", "identities"]},
10
+ "states": {"type": "array", "minItems": 1}
11
+ }
12
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "title": "Maggie layout sample surface",
4
+ "type": "object",
5
+ "required": ["schemaVersion", "route", "noindex", "sitemapIncluded", "finishChecklist"],
6
+ "properties": {
7
+ "schemaVersion": {"const": "maggie-sample-surface.v1"},
8
+ "route": {"type": "string"},
9
+ "noindex": {"const": true},
10
+ "sitemapIncluded": {"const": false},
11
+ "finishChecklist": {"type": "array", "minItems": 1}
12
+ }
13
+ }
@@ -0,0 +1,35 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://maggie.noblox.app/contracts/style-editing-v1.schema.json",
4
+ "title": "Maggie design style editing contract v1",
5
+ "type": "object",
6
+ "required": ["schemaVersion", "properties", "templates"],
7
+ "properties": {
8
+ "schemaVersion": {"const": "maggie-style-editing.v1"},
9
+ "properties": {
10
+ "type": "array",
11
+ "minItems": 1,
12
+ "items": {
13
+ "type": "object",
14
+ "required": ["name", "pattern"],
15
+ "properties": {
16
+ "name": {"type": "string", "pattern": "^[A-Za-z][A-Za-z0-9-]*$"},
17
+ "pattern": {"type": "string", "minLength": 1},
18
+ "scale": {"type": "array", "items": {"type": "string"}}
19
+ },
20
+ "additionalProperties": false
21
+ }
22
+ },
23
+ "templates": {
24
+ "type": "array",
25
+ "items": {
26
+ "type": "object",
27
+ "required": ["id", "styles"],
28
+ "properties": {"id": {"type": "string"}, "appliesTo": {"type": "string"}, "styles": {"type": "object"}},
29
+ "additionalProperties": false
30
+ }
31
+ },
32
+ "customValues": {"const": "allow only after property pattern validation"}
33
+ },
34
+ "additionalProperties": false
35
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://maggie.noblox.app/contracts/maggie-media/image-generation-policy-v1.json",
4
+ "title": "Maggie Gemini image generation and editing policy v1",
5
+ "schemaVersion": "maggie-image-generation-policy.v1",
6
+ "provider": "google-gemini",
7
+ "model": "gemini-3.1-flash-image",
8
+ "fallbackModel": "gemini-3.1-flash-lite-image",
9
+ "endpointEnv": "GEMINI_API_ENDPOINT",
10
+ "apiKeyEnv": "GEMINI_API_KEY",
11
+ "billingMode": "host-managed-or-byok",
12
+ "rights": {
13
+ "inputRightsRequired": true,
14
+ "outputReviewRequired": true,
15
+ "syntheticWatermarkExpected": true
16
+ },
17
+ "moderation": {
18
+ "preflightRequired": true,
19
+ "postGenerationReviewRequired": true,
20
+ "blockedOutputPolicy": "discard-and-report"
21
+ },
22
+ "outputs": {
23
+ "allowedMimeTypes": ["image/png", "image/jpeg", "image/webp"],
24
+ "allowedSizes": ["1K", "2K", "4K"],
25
+ "maxReferenceImages": 14
26
+ },
27
+ "provenance": ["provider", "model", "promptHash", "inputAssetHashes", "sourceRevision", "createdAt"]
28
+ }