@topy-ai/maggie 0.7.40 → 0.7.42

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 (41) hide show
  1. package/README-zh-TW.md +34 -4
  2. package/README.md +41 -1
  3. package/bin/maggie.js +24 -5
  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/style-editing-v1.schema.json +35 -0
  9. package/bundled-contracts/maggie-media/image-generation-policy-v1.json +28 -0
  10. package/bundled-contracts/maggie-media/video-generation-policy-v1.json +40 -0
  11. package/bundled-contracts/maggie-media/video-job-v1.schema.json +20 -0
  12. package/bundled-contracts/maggie-media/video-playback-evidence-v1.schema.json +15 -0
  13. package/bundled-contracts/maggie-media/video-provider-evidence-v1.schema.json +25 -0
  14. package/bundled-contracts/maggie-ops/npm11-preflight-v1.schema.json +17 -0
  15. package/bundled-contracts/maggie-scaffold/host-scaffold-v1.schema.json +25 -0
  16. package/bundled-contracts/maggie-seo/gsc-readiness-v1.schema.json +19 -0
  17. package/bundled-contracts/maggie-service-booking/delivery-provider-default-v1.json +8 -0
  18. package/bundled-contracts/maggie-service-booking/delivery-provider-v1.schema.json +16 -0
  19. package/bundled-contracts/maggiedash/browser-session-v1.schema.json +18 -0
  20. package/bundled-contracts/maggiedash/content-overrides-v1.schema.json +19 -0
  21. package/bundled-contracts/maggiedash/public-session-cache-v1.schema.json +17 -0
  22. package/bundled-references/browser-inspection.md +21 -0
  23. package/bundled-skills/maggie-blog/SKILL.md +12 -0
  24. package/bundled-skills/maggie-blog-bootstrap/SKILL.md +23 -0
  25. package/bundled-skills/maggie-booking/SKILL.md +15 -0
  26. package/bundled-skills/maggie-clone/SKILL.md +13 -0
  27. package/bundled-skills/maggie-deployment/SKILL.md +6 -0
  28. package/bundled-skills/maggie-design/SKILL.md +29 -3
  29. package/bundled-skills/maggie-ops/SKILL.md +12 -0
  30. package/bundled-skills/maggie-seo-geo/SKILL.md +33 -0
  31. package/bundled-tools/clis/maggie_analytics.py +43 -1
  32. package/bundled-tools/clis/maggie_browser_audit.py +99 -3
  33. package/bundled-tools/clis/maggie_clone.py +46 -1
  34. package/bundled-tools/clis/maggie_contracts.py +111 -0
  35. package/bundled-tools/clis/maggie_design.py +55 -0
  36. package/bundled-tools/clis/maggie_workflows.py +439 -0
  37. package/bundled-tools/clis/site_audit.py +28 -1
  38. package/bundled-tools/integrations/analytics.md +14 -0
  39. package/bundled-tools/runtime/site_baseline.py +3 -0
  40. package/package.json +1 -1
  41. package/references/browser-inspection.md +21 -0
package/README-zh-TW.md CHANGED
@@ -8,11 +8,22 @@ Codex、Claude Code 與相容的 coding agents。
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.42 init --agent all
12
+ npx @topy-ai/maggie@0.7.42 doctor --project .
13
13
  ```
14
14
 
15
- 目前 release 是 `0.7.40`,加入 feedback batch 21:progressive enhancement
15
+ 目前 release 是 `0.7.42`。新增 redacted Gemini video-provider evidence gate,
16
+ 驗證 provider acknowledgement、idempotency、moderation、object-storage
17
+ readback、bounded retry 與 git provenance,並拒絕 raw provider payload 或
18
+ input asset 欄位。0.7.41 完成 feedback batches 22、23:加入 declarative
19
+ browser interaction evidence、design markup/style/content-key gate、compiler
20
+ source anchoring、entity double-escape protection、`update --help` read-only,
21
+ 以及 noindex hypothetical indexability、可過期 baseline acknowledgement、
22
+ DOM-only link extraction regression。MaggieDash 0.2.10 同步提供 content
23
+ override、短期 browser session、CDN-safe public-session cache contracts;
24
+ authentication 和 isolated dev server 仍由 host 負責。
25
+
26
+ 0.7.40 加入 feedback batch 21:progressive enhancement
16
27
  的區域/identity/request 驗證、Tailwind utility 與 CSS cascade evidence、
17
28
  dashboard/sample surface contract、primary navigation indexability、privacy
18
29
  origin parity、provider-neutral site structure、host capability manifest,
@@ -20,6 +31,25 @@ origin parity、provider-neutral site structure、host capability manifest,
20
31
  同步更新至 0.2.9,ORA reference host 也提供相同的 capability/site-structure
21
32
  邊界。
22
33
 
34
+ 目前也加入 deferred workflow 的共用 contract gate:Gemini image/edit 使用
35
+ Nano Banana 2,hero video 使用 Gemini Omni Flash,GSC 直接擴充 analytics
36
+ release-gate,booking delivery 預設 Resend email + Twilio SMS;credentials、
37
+ billing、storage 和 provider runtime 仍由 host 負責。
38
+
39
+ ```bash
40
+ maggie media image-policy --policy contracts/maggie-media/image-generation-policy-v1.json
41
+ maggie media video-policy --policy contracts/maggie-media/video-generation-policy-v1.json
42
+ maggie analytics gsc-readiness --gsc-evidence .maggie/gsc-readiness.json
43
+ maggie provenance --project . --source src/content/post.md
44
+ maggie scaffold --project . --framework astro --language typescript --write --confirm
45
+ maggie brand-kit --project . --design DESIGN.md --write --confirm
46
+ maggie npm11 --project . --smoke --confirm
47
+ maggie media video-provider-evidence --evidence .maggie/video-provider-evidence.json \
48
+ --environment staging --model gemini-omni-1.1-flash --require-host
49
+ maggie media video-playback --evidence .maggie/video-playback-evidence.json
50
+ maggie booking-delivery --policy .maggie/booking-delivery-policy.json
51
+ ```
52
+
23
53
  常用流程:
24
54
 
25
55
  ```bash
@@ -48,7 +78,7 @@ structure drift 或重複 treatment product 時 fail closed。
48
78
  deployment、memory、feedback 和 MaggieDash。內容先 draft/review,外部寫入、
49
79
  publish 與 production deployment 需要明確確認。
50
80
 
51
- 目前 source tree 的 release candidate 是 `0.7.39`,npm registry 仍是 `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
81
+ 目前 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
52
82
  dispatch、`maggie --version`、feedback batch review 聚合與重複偵測、marketplace enrichment evidence、booking
53
83
  worker/resolver evidence,以及 read-only migration preflight。它也包含 host-owned mobile app surface contract、signed-in
54
84
  camera-state QA、直接 Astro route resolution、correlated feedback batch,以及
package/README.md CHANGED
@@ -60,7 +60,47 @@ Maggie keeps the existing project foundation and asks for decisions before
60
60
  shared routes, analytics, or publishing boundaries change. The current
61
61
  package ships 20 installable skills and a local-first MaggieDash foundation.
62
62
 
63
- The current release is `0.7.40`. It adds feedback batch 21 contracts for
63
+ The current release is `0.7.42`. It adds a redacted Gemini video-provider
64
+ evidence gate for provider acknowledgement, idempotency, moderation,
65
+ object-storage readback, bounded retry, and git provenance; unknown raw
66
+ provider payload and input-asset fields fail validation. The 0.7.41 release
67
+ closes feedback batches 22 and 23 with
68
+ declarative browser interaction evidence, stable design markup/style/content-key
69
+ gates, compiler source anchoring, entity double-escape protection, and a
70
+ read-only `update --help` path. It also adds hypothetical indexability
71
+ diagnostics for `noindex` pages, expiring baseline acknowledgement evidence,
72
+ DOM-only link extraction regression coverage, and provider-neutral MaggieDash
73
+ contracts for content overrides, short-lived browser sessions, and CDN-safe
74
+ public-session cache boundaries. Host-owned authentication and isolated
75
+ dev-server choices remain explicit. MaggieDash 0.2.10 contains the matching
76
+ host contracts.
77
+
78
+ The source tree also includes the selected deferred-workflow contracts for
79
+ Gemini media, clone interaction replay, GSC readiness, git content provenance,
80
+ npm 11, empty-project scaffolding, brand kits, and booking delivery. The
81
+ default provider policy is Gemini Nano Banana 2 for image/edit, Gemini Omni
82
+ Flash for hero video, and Resend email plus Twilio SMS for booking delivery.
83
+ Credentials, billing, storage, and live provider adapters remain host-owned.
84
+
85
+ ```bash
86
+ maggie media image-policy --policy contracts/maggie-media/image-generation-policy-v1.json
87
+ maggie media video-policy --policy contracts/maggie-media/video-generation-policy-v1.json
88
+ maggie analytics gsc-readiness --gsc-evidence .maggie/gsc-readiness.json
89
+ maggie provenance --project . --source src/content/post.md
90
+ maggie scaffold --project . --framework astro --language typescript --write --confirm
91
+ maggie brand-kit --project . --design DESIGN.md --write --confirm
92
+ maggie npm11 --project . --smoke --confirm
93
+ maggie media video-provider-evidence --evidence .maggie/video-provider-evidence.json \
94
+ --environment staging --model gemini-omni-1.1-flash --require-host
95
+ maggie media video-playback --evidence .maggie/video-playback-evidence.json
96
+ maggie booking-delivery --policy .maggie/booking-delivery-policy.json
97
+ ```
98
+
99
+ These are evidence gates, not implicit provider calls. See the maintainer
100
+ [decision record](../../docs/github-issues/DECISIONS-2026-09-22.md) for the
101
+ remaining host/provider release work.
102
+
103
+ The 0.7.40 release adds feedback batch 21 contracts for
64
104
  progressive-enhancement identity/request safety, rendered Tailwind utility and
65
105
  CSS-cascade checks, dashboard/sample surface evidence, primary-navigation
66
106
  indexability, privacy-origin parity, provider-neutral site structure, host
package/bin/maggie.js CHANGED
@@ -68,9 +68,10 @@ 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 --manifest FILE
71
+ maggie dash capabilities-validate|session-check|content-overrides-check --manifest FILE
72
+ maggie dash cache-boundary-check --evidence FILE
72
73
  maggie dash structure-validate --model FILE --evidence FILE
73
- maggie design progressive-check|css-check|css-cascade-check --evidence FILE
74
+ maggie design progressive-check|css-check|css-cascade-check|style-check --evidence FILE
74
75
  maggie design dash-init|dash-validate|sample-init|sample-validate [options]
75
76
  maggie seo privacy-check --evidence FILE
76
77
  maggie content FILE --source PROVIDER --project PATH --confirm
@@ -90,6 +91,7 @@ Usage:
90
91
  maggie clone-to-template validate <id>
91
92
  maggie clone run <homepage-url> --run-id <id>
92
93
  maggie clone status --run-id <id>
94
+ maggie clone interactions --run-id <id> --browse PATH --interactions FILE
93
95
  maggie design run <target-url> --clone-run <id>
94
96
  maggie design reference-ui --project PATH --reference PATH --surface blog,service --confirm
95
97
  maggie design init --project PATH --surface blog|service --reference-run PATH --confirm
@@ -99,6 +101,7 @@ Usage:
99
101
  maggie design icon-inventory --project PATH --source-dir src --runtime assets/icons.css --output docs/icon-inventory.json
100
102
  maggie design icon-release-gate --icon-report FILE --browser-report FILE --output FILE
101
103
  maggie design author --project PATH --route /about --purpose TEXT --audience TEXT --confirm
104
+ maggie design markup-check --html FILE [--require-content-keys]
102
105
  maggie design in-place --project PATH --route /pricing [--content-source PATH]
103
106
  maggie design section --project PATH --route /pricing --section-id ID
104
107
  maggie design section-validate --before FILE --after FILE --section-id ID
@@ -131,6 +134,13 @@ Usage:
131
134
  maggie migration identity --identity-file FILE [--expected-file FILE]
132
135
  maggie schedule PATH/.maggie/schedule.json --project PATH
133
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-provider-evidence|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]
134
144
  maggie release PATH --environment staging --target vps-with-cloudflare-dns
135
145
  maggie api lifecycle --project PATH [--execute --allow-quota]
136
146
  maggie memory <init|list|search|context|add|record-error|transition|export> --project PATH
@@ -141,7 +151,7 @@ Usage:
141
151
  maggie site-audit URL [--crawl] [--access-log FILE] [--require-sitemap-request] [--languages en-GB,es-MX,ja-JP] [--check-hreflang] [--check-internal-links]
142
152
  maggie site-audit URL --crawl --save-baseline FILE --reviewer NAME
143
153
  maggie site-audit URL --crawl --baseline FILE [--reason-all REASON]
144
- 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]
145
155
  maggie verification coverage --contract FILE --evidence FILE
146
156
  maggie ops audit|preflight|verify|lockfiles|seed-manifest|google-capabilities|favicon-check --project PATH
147
157
  maggie ops google-capabilities --project PATH --report FILE [--output FILE]
@@ -405,6 +415,10 @@ function install(args) {
405
415
  }
406
416
 
407
417
  function update(args) {
418
+ if (args.some((item) => ["--help", "-h"].includes(item))) {
419
+ usage();
420
+ return;
421
+ }
408
422
  const root = projectRoot(args);
409
423
  const skills = selectedSkills(args);
410
424
  const force = args.includes("--force");
@@ -570,7 +584,8 @@ try {
570
584
  else if (command === "clone-to-template") workflowCli("maggie_clone_to_template.py", args);
571
585
  else if (command === "design" && args[0] === "icon-inventory") workflowCli("maggie_icon_inventory.py", args.slice(1));
572
586
  else if (command === "design" && args[0] === "icon-release-gate") workflowCli("maggie_icon_release_gate.py", args.slice(1));
573
- else if (command === "design" && ["progressive-check", "css-check", "css-cascade-check", "dash-init", "dash-validate", "sample-init", "sample-validate"].includes(args[0])) workflowCli("maggie_contracts.py", args);
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);
574
589
  else if (command === "design") workflowCli("maggie_design.py", args);
575
590
  else if (command === "auth") workflowCli("maggie_auth.py", args);
576
591
  else if (command === "blog") workflowCli("maggie_blog.py", args);
@@ -587,6 +602,10 @@ try {
587
602
  else if (command === "migration") workflowCli("maggie_migration.py", args);
588
603
  else if (command === "schedule") workflowCli("maggie_schedule.py", args);
589
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
+ }
590
609
  else if (command === "release") workflowCli("maggie_release.py", args);
591
610
  else if (command === "bootstrap") workflowCli("maggie.py", ["bootstrap", ...args]);
592
611
  else if (command === "api") workflowCli("maggie.py", ["api", ...args]);
@@ -597,7 +616,7 @@ try {
597
616
  else if (command === "site-audit") workflowCli("site_audit.py", args);
598
617
  else if (command === "browser-audit") workflowCli("maggie_browser_audit.py", args);
599
618
  else if (command === "verification") workflowCli("maggie_verification.py", args);
600
- else if (command === "dash" && ["capabilities-validate", "structure-validate"].includes(args[0])) workflowCli("maggie_contracts.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);
601
620
  else if (command === "dash") workflowCli("maggie_dash.py", args);
602
621
  else if (command === "booking") workflowCli("maggie_booking.py", args);
603
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,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
+ }
@@ -0,0 +1,40 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://maggie.noblox.app/contracts/maggie-media/video-generation-policy-v1.json",
4
+ "title": "Maggie Gemini hero video generation policy v1",
5
+ "schemaVersion": "maggie-video-generation-policy.v1",
6
+ "provider": "google-gemini",
7
+ "model": "gemini-omni-1.1-flash",
8
+ "fallbackModel": "veo-3.1-generate-preview",
9
+ "endpointEnv": "GEMINI_API_ENDPOINT",
10
+ "apiKeyEnv": "GEMINI_API_KEY",
11
+ "billingMode": "host-managed-or-byok",
12
+ "costPolicy": {
13
+ "budgetRequired": true,
14
+ "maxAttemptsPerJob": 3,
15
+ "duplicateChargeProtection": "idempotency-key"
16
+ },
17
+ "rights": {
18
+ "inputRightsRequired": true,
19
+ "outputReviewRequired": true,
20
+ "audioRightsRequired": true
21
+ },
22
+ "moderation": {
23
+ "preflightRequired": true,
24
+ "postGenerationReviewRequired": true,
25
+ "blockedOutputPolicy": "discard-and-report"
26
+ },
27
+ "storage": {
28
+ "adapter": "host-owned-object-storage",
29
+ "publicUrlPolicy": "signed-or-approved-public-url",
30
+ "retentionDaysRequired": true,
31
+ "sourceAssetAndJobMetadataRequired": true
32
+ },
33
+ "playback": {
34
+ "posterRequired": true,
35
+ "reducedMotionFallbackRequired": true,
36
+ "saveDataFallbackRequired": true,
37
+ "mobileSafe": true
38
+ },
39
+ "provenance": ["provider", "model", "promptHash", "inputAssetHashes", "sourceRevision", "createdAt"]
40
+ }
@@ -0,0 +1,20 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://maggie.noblox.app/contracts/maggie-media/video-job-v1.schema.json",
4
+ "title": "Maggie video generation job v1",
5
+ "type": "object",
6
+ "required": ["schemaVersion", "jobId", "idempotencyKey", "state", "attempt", "sourceRevision", "provenance"],
7
+ "properties": {
8
+ "schemaVersion": {"const": "maggie-video-job.v1"},
9
+ "jobId": {"type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,119}$"},
10
+ "idempotencyKey": {"type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,159}$"},
11
+ "state": {"enum": ["queued", "running", "retrying", "cancelled", "blocked", "completed", "failed", "dead-letter"]},
12
+ "attempt": {"type": "integer", "minimum": 0, "maximum": 3},
13
+ "sourceRevision": {"type": "object"},
14
+ "provenance": {"type": "object"},
15
+ "segments": {"type": "array", "items": {"type": "object"}},
16
+ "storage": {"type": "object"},
17
+ "errorClass": {"enum": ["provider-transient", "provider-permanent", "moderation", "rights", "validation", "cancelled", "cost-limit", "unknown"]}
18
+ },
19
+ "additionalProperties": false
20
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://maggie.noblox.app/contracts/maggie-media/video-playback-evidence-v1.schema.json",
4
+ "title": "Maggie video playback evidence v1",
5
+ "type": "object",
6
+ "required": ["schemaVersion", "jobId", "sourceRevision", "viewports", "rawProviderPayloadIncluded"],
7
+ "properties": {
8
+ "schemaVersion": {"const": "maggie-video-playback-evidence.v1"},
9
+ "jobId": {"type": "string"},
10
+ "sourceRevision": {"type": "object"},
11
+ "viewports": {"type": "array", "minItems": 3, "items": {"type": "object", "required": ["viewport", "status", "posterVisible", "reducedMotionFallback", "saveDataFallback"], "properties": {"viewport": {"enum": ["desktop", "tablet", "mobile"]}, "status": {"const": "passed"}, "posterVisible": {"const": true}, "reducedMotionFallback": {"const": true}, "saveDataFallback": {"const": true}}, "additionalProperties": false}},
12
+ "rawProviderPayloadIncluded": {"const": false}
13
+ },
14
+ "additionalProperties": false
15
+ }
@@ -0,0 +1,25 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://maggie.noblox.app/contracts/maggie-media/video-provider-evidence-v1.schema.json",
4
+ "title": "Maggie video provider canary evidence v1",
5
+ "type": "object",
6
+ "required": ["schemaVersion", "environment", "provider", "model", "status", "hostVerified", "acknowledgement", "idempotency", "moderation", "storage", "retry", "rawProviderPayloadIncluded", "inputAssetDataIncluded", "sourceRevision"],
7
+ "properties": {
8
+ "schemaVersion": {"const": "maggie-video-provider-evidence.v1"},
9
+ "environment": {"enum": ["test", "staging", "production"]},
10
+ "provider": {"const": "google-gemini"},
11
+ "model": {"type": "string", "pattern": "^(gemini|veo)-"},
12
+ "status": {"const": "passed"},
13
+ "hostVerified": {"const": true},
14
+ "acknowledgement": {"type": "object", "required": ["accepted", "providerReferencePresent"], "properties": {"accepted": {"const": true}, "providerReferencePresent": {"const": true}}, "additionalProperties": false},
15
+ "idempotency": {"type": "object", "required": ["replayAccepted", "duplicateChargePrevented", "assetDeduplicated"], "properties": {"replayAccepted": {"const": true}, "duplicateChargePrevented": {"const": true}, "assetDeduplicated": {"const": true}}, "additionalProperties": false},
16
+ "moderation": {"type": "object", "required": ["preflightPassed", "postGenerationReviewPassed"], "properties": {"preflightPassed": {"const": true}, "postGenerationReviewPassed": {"const": true}}, "additionalProperties": false},
17
+ "storage": {"type": "object", "required": ["uploadAccepted", "metadataPersisted", "readbackPassed", "signedOrApprovedUrlPresent"], "properties": {"uploadAccepted": {"const": true}, "metadataPersisted": {"const": true}, "readbackPassed": {"const": true}, "signedOrApprovedUrlPresent": {"const": true}}, "additionalProperties": false},
18
+ "retry": {"type": "object", "required": ["transientFailureObserved", "bounded", "attempts"], "properties": {"transientFailureObserved": {"const": true}, "bounded": {"const": true}, "attempts": {"type": "integer", "minimum": 1, "maximum": 3}}, "additionalProperties": false},
19
+ "rawProviderPayloadIncluded": {"const": false},
20
+ "inputAssetDataIncluded": {"const": false},
21
+ "sourceRevision": {"type": "object", "required": ["commit", "branch", "dirty"], "properties": {"commit": {"type": "string"}, "branch": {"type": "string"}, "dirty": {"type": "boolean"}}, "additionalProperties": false},
22
+ "generatedAt": {"type": "string"}
23
+ },
24
+ "additionalProperties": false
25
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://maggie.noblox.app/contracts/maggie-ops/npm11-preflight-v1.schema.json",
4
+ "title": "Maggie npm 11 install preflight v1",
5
+ "type": "object",
6
+ "required": ["schemaVersion", "supportMatrix", "node", "npm", "installScriptPolicy", "lockfilePolicy", "smoke"],
7
+ "properties": {
8
+ "schemaVersion": {"const": "maggie-npm11-preflight.v1"},
9
+ "supportMatrix": {"type": "array", "minItems": 4, "items": {"type": "object", "required": ["packageManager", "supportedVersions", "installCommand", "lockfile", "lifecyclePolicy"], "properties": {"packageManager": {"enum": ["npm", "pnpm", "yarn", "bun"]}, "supportedVersions": {"type": "array", "minItems": 1}, "installCommand": {"type": "string"}, "lockfile": {"type": "string"}, "lifecyclePolicy": {"const": "ignore-scripts-smoke-first"}}, "additionalProperties": false}},
10
+ "node": {"type": "object", "required": ["supportedMajor", "observedMajor"]},
11
+ "npm": {"type": "object", "required": ["supportedMajor", "observedMajor"]},
12
+ "installScriptPolicy": {"enum": ["audit-before-run", "ignore-scripts-smoke-first"]},
13
+ "lockfilePolicy": {"enum": ["package-lock-v3", "host-package-manager"]},
14
+ "smoke": {"type": "object", "required": ["ignoreScripts", "passed"], "properties": {"ignoreScripts": {"type": "boolean"}, "passed": {"type": "boolean"}}, "additionalProperties": false}
15
+ },
16
+ "additionalProperties": false
17
+ }
@@ -0,0 +1,25 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://maggie.noblox.app/contracts/maggie-scaffold/host-scaffold-v1.schema.json",
4
+ "title": "Maggie empty-project host scaffold v1",
5
+ "type": "object",
6
+ "required": ["schemaVersion", "framework", "language", "packageManager", "installPolicy", "hostHandoff"],
7
+ "properties": {
8
+ "schemaVersion": {"const": "maggie-host-scaffold.v1"},
9
+ "framework": {"enum": ["astro", "nextjs", "sveltekit", "nuxt", "vite-react", "vite-vue"]},
10
+ "language": {"enum": ["typescript", "javascript"]},
11
+ "packageManager": {"enum": ["npm", "pnpm", "yarn", "bun"]},
12
+ "installPolicy": {"type": "object", "required": ["requiresConfirm", "secretsByDefault", "migrationsByDefault"], "properties": {
13
+ "requiresConfirm": {"const": true},
14
+ "secretsByDefault": {"const": "never"},
15
+ "migrationsByDefault": {"const": "never"},
16
+ "installDependencies": {"type": "boolean"}
17
+ }, "additionalProperties": false},
18
+ "hostHandoff": {"type": "object", "required": ["generatedFiles", "rollbackPlan", "nextCommands"], "properties": {
19
+ "generatedFiles": {"type": "array", "items": {"type": "string"}},
20
+ "rollbackPlan": {"type": "string", "minLength": 1},
21
+ "nextCommands": {"type": "array", "items": {"type": "string"}}
22
+ }, "additionalProperties": false}
23
+ },
24
+ "additionalProperties": false
25
+ }
@@ -0,0 +1,19 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://maggie.noblox.app/contracts/maggie-seo/gsc-readiness-v1.schema.json",
4
+ "title": "Maggie Search Console readiness evidence v1",
5
+ "type": "object",
6
+ "required": ["schemaVersion", "property", "verification", "canonical", "robots", "sitemap", "authorization", "queryReadback", "productionSmoke"],
7
+ "properties": {
8
+ "schemaVersion": {"const": "maggie-gsc-readiness.v1"},
9
+ "property": {"type": "object", "required": ["siteUrl", "type"], "properties": {"siteUrl": {"type": "string", "format": "uri"}, "type": {"enum": ["domain", "url-prefix"]}}, "additionalProperties": false},
10
+ "verification": {"type": "object", "required": ["passed"], "properties": {"passed": {"const": true}, "method": {"enum": ["dns", "html", "meta"]}}, "additionalProperties": false},
11
+ "canonical": {"type": "object", "required": ["passed", "origin"], "properties": {"passed": {"const": true}, "origin": {"type": "string"}}, "additionalProperties": false},
12
+ "robots": {"type": "object", "required": ["passed"], "properties": {"passed": {"const": true}}, "additionalProperties": false},
13
+ "sitemap": {"type": "object", "required": ["passed", "url"], "properties": {"passed": {"const": true}, "url": {"type": "string", "format": "uri"}}, "additionalProperties": false},
14
+ "authorization": {"type": "object", "required": ["readOnly", "authorized"], "properties": {"readOnly": {"const": true}, "authorized": {"const": true}}, "additionalProperties": false},
15
+ "queryReadback": {"type": "object", "required": ["passed"], "properties": {"passed": {"const": true}, "rows": {"type": "integer", "minimum": 0}}, "additionalProperties": false},
16
+ "productionSmoke": {"type": "object", "required": ["passed"], "properties": {"passed": {"const": true}}, "additionalProperties": false}
17
+ },
18
+ "additionalProperties": false
19
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "schemaVersion": "maggie-booking-delivery-provider.v1",
3
+ "email": {"provider": "resend", "channel": "email", "secretEnv": "RESEND_API_KEY"},
4
+ "sms": {"provider": "twilio", "channel": "sms", "secretEnv": "TWILIO_AUTH_TOKEN"},
5
+ "confirmationRule": "provider-acknowledged-only",
6
+ "retryPolicy": {"maxAttempts": 5, "backoff": "exponential-jitter", "idempotency": "booking-event-and-channel"},
7
+ "deadLetterPolicy": {"afterMaxAttempts": "dead-letter", "replayRequiresExplicitAction": true}
8
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://maggie.noblox.app/contracts/maggie-service-booking/delivery-provider-v1.schema.json",
4
+ "title": "Maggie booking notification delivery provider v1",
5
+ "type": "object",
6
+ "required": ["schemaVersion", "email", "sms", "confirmationRule", "retryPolicy", "deadLetterPolicy"],
7
+ "properties": {
8
+ "schemaVersion": {"const": "maggie-booking-delivery-provider.v1"},
9
+ "email": {"type": "object", "required": ["provider", "channel", "secretEnv"], "properties": {"provider": {"enum": ["resend", "provider-neutral"]}, "channel": {"const": "email"}, "secretEnv": {"type": "string", "pattern": "^[A-Z][A-Z0-9_]+$"}}, "additionalProperties": false},
10
+ "sms": {"type": "object", "required": ["provider", "channel", "secretEnv"], "properties": {"provider": {"enum": ["twilio", "provider-neutral"]}, "channel": {"const": "sms"}, "secretEnv": {"type": "string", "pattern": "^[A-Z][A-Z0-9_]+$"}}, "additionalProperties": false},
11
+ "confirmationRule": {"const": "provider-acknowledged-only"},
12
+ "retryPolicy": {"type": "object", "required": ["maxAttempts", "backoff", "idempotency"], "properties": {"maxAttempts": {"type": "integer", "minimum": 1, "maximum": 10}, "backoff": {"enum": ["exponential-jitter", "fixed"]}, "idempotency": {"const": "booking-event-and-channel"}}, "additionalProperties": false},
13
+ "deadLetterPolicy": {"type": "object", "required": ["afterMaxAttempts", "replayRequiresExplicitAction"], "properties": {"afterMaxAttempts": {"const": "dead-letter"}, "replayRequiresExplicitAction": {"const": true}}, "additionalProperties": false}
14
+ },
15
+ "additionalProperties": false
16
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://maggiedash.noblox.app/contracts/browser-session-v1.schema.json",
4
+ "title": "MaggieDash browser QA session contract v1",
5
+ "type": "object",
6
+ "required": ["schemaVersion", "mintingBoundary", "passwordHandling", "ttlMinutes", "mintRoute", "revokeRoute"],
7
+ "properties": {
8
+ "schemaVersion": {"const": "maggie-browser-session.v1"},
9
+ "mintingBoundary": {"const": "host-adapter"},
10
+ "passwordHandling": {"const": "never-exposed"},
11
+ "ttlMinutes": {"type": "integer", "minimum": 1, "maximum": 240},
12
+ "mintRoute": {"type": "string", "pattern": "^/"},
13
+ "revokeRoute": {"type": "string", "pattern": "^/"},
14
+ "cookie": {"type": "object", "additionalProperties": true},
15
+ "roles": {"type": "array", "items": {"type": "string"}}
16
+ },
17
+ "additionalProperties": false
18
+ }