@topy-ai/maggie 0.7.54 → 0.7.55

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 (36) hide show
  1. package/README-zh-TW.md +22 -22
  2. package/README.md +62 -67
  3. package/bin/maggie.js +10 -2
  4. package/bundled-contracts/maggie-assistant-tools/booking-receptionist-example-v1.json +18 -2
  5. package/bundled-contracts/maggie-assistant-tools/report-v1.schema.json +43 -0
  6. package/bundled-contracts/maggie-assistant-tools/tool-registry-example-v1.json +249 -11
  7. package/bundled-contracts/maggie-assistant-tools/tool-registry-v1.schema.json +175 -0
  8. package/bundled-contracts/maggie-ops/agent-routines-v1.schema.json +48 -0
  9. package/bundled-skills/catalog.json +1 -1
  10. package/bundled-skills/maggie-assistant-tools/SKILL.md +34 -1
  11. package/bundled-skills/maggie-assistant-tools/references/report-inbox.md +45 -0
  12. package/bundled-skills/maggie-assistant-tools/references/unattended-agents.md +70 -0
  13. package/bundled-skills/maggie-blog/SKILL.md +9 -2
  14. package/bundled-skills/maggie-booking/SKILL.md +1 -1
  15. package/bundled-skills/maggie-dash/SKILL.md +9 -0
  16. package/bundled-skills/maggie-deployment/SKILL.md +77 -1
  17. package/bundled-skills/maggie-deployment/references/vps.md +5 -0
  18. package/bundled-skills/maggie-marketplace/SKILL.md +21 -1
  19. package/bundled-skills/maggie-ops/SKILL.md +28 -0
  20. package/bundled-skills/maggie-ops/references/agents-repository.md +108 -0
  21. package/bundled-skills/maggie-ops/references/ops-autopilot.md +65 -0
  22. package/bundled-skills/maggie-ops/references/routine-mode.md +92 -0
  23. package/bundled-skills/maggie-seo-geo/SKILL.md +9 -1
  24. package/bundled-skills/maggie-social-share/SKILL.md +20 -0
  25. package/bundled-tools/clis/maggie.py +63 -3
  26. package/bundled-tools/clis/maggie_assistant_tools.py +225 -1
  27. package/bundled-tools/clis/maggie_host_runtime.py +458 -0
  28. package/bundled-tools/clis/maggie_live_urls.py +11 -2
  29. package/bundled-tools/clis/maggie_ops.py +2 -0
  30. package/bundled-tools/clis/maggie_ops_routines.py +352 -0
  31. package/bundled-tools/clis/maggie_query_ideas.py +154 -0
  32. package/bundled-tools/clis/maggie_skill_catalog.py +16 -2
  33. package/bundled-tools/clis/maggie_social_share.py +101 -1
  34. package/bundled-tools/clis/maggie_version_sources.py +93 -0
  35. package/bundled-tools/integrations/maggie-api-pull.md +28 -1
  36. package/package.json +1 -1
package/README-zh-TW.md CHANGED
@@ -29,27 +29,27 @@ npx @topy-ai/maggie init --scope project --agent all
29
29
  npx @topy-ai/maggie doctor --scope project --project .
30
30
  ```
31
31
 
32
- 目前 npm 版本為 `0.7.54`:完成 feedback batch 30,共 13 條 feedback,來自一個在自家網站上執行 MaggieDash 的內容與社群產品,並同步發布 MaggieDash 0.2.14。
33
-
34
- - **MaggieDash 先裝核心**:`maggie dash install` 現在只安裝儀表板、登入、`/_maggie/admin` 路由與核心資料表。接著讀取專案(框架、既有登入、資料庫、金流、是否提供服務或經營 Blog、語言),逐項推薦選配模組並說明原因。沒有你的指示不會安裝任何選配:`maggie dash add booking --confirm`(或 `maggie booking install`)。純內容網站不再被裝上 Stripe、預約路由與 worker。`maggie dash recommend` 可隨時重新分析。
35
- - **MaggieDash 0.2.14 不再把密鑰寫進 build**:Astro scaffold 以 `import.meta.env` 讀取伺服器設定,Vite 會把它寫進建置輸出;只要 build 時環境中有 `DATABASE_URL` 或 `BOOKING_TOKEN_SECRET`,就會出現在 `dist/server`。現在改為執行時讀取,用舊 scaffold 安裝的 host 請重新 build。管理介面側欄只顯示 host 實際提供的面板(capability manifest);從 GitHub 安裝時也會拿到 Booking 的 env 範例檔。
36
- - **agent 資料夾不再有特定客戶的文件**:舊版會把某個客戶的整合稽核、進度記錄與交付看板裝進 `~/.claude/references` 與 `~/.codex/references`。現在只打包一般性的 Booking 文件。打包時若有檔案提到客戶,或連到沒有打包的文件,release gate 會直接失敗。`maggie update` 會移除舊版裝了、新版不再提供、且你沒改過的檔案;`maggie doctor --scope user` 會列出剩下的。
37
- - **Feedback 一定送得到**:`maggie feedback submit` 不需要 `--endpoint`。先送 NoBlox;只有在該主機儲存前失敗(連不上或 526 之類的 5xx)才改送 `feedback.cmo.so`,兩邊都以 `feedbackId` 去重。
38
- - **社群貼文**:
39
- - `link-check`(及 `plan --check-link`)在規劃貼文前排除連結已失效(404/410)的文章;被擋或暫時出錯的頁面會保留。
40
- - `pictures` 確保同一個點子寫給多個頻道的貼文共用同一張圖。
41
- - **Blog API Pull**:`maggie blog live-urls` 記錄已交付文章的實際上線網址(來自網站回報或 sitemap 比對)。比對只會新增、不會撤回先前的結果,且優先採用原文頁而不是翻譯頁。
42
- - **大量產生的頁面**:
43
- - `maggie design bulk` 用同一份 brief、facts 與 validator 產生大量相似頁面:只替已通過驗證、之後沒再改過的頁面畫圖;頁面被改過,寫手必須重新讀取;規則收緊時,先前通過的頁面會退回重新驗證;所有頁面都通過才寫入。
44
- - `maggie localization key-check` 找出需要「每頁位置 key」而不能共用文字 key 的翻譯。
45
- - `maggie localization fragments` 找出被品牌名切成太短、無法單獨翻譯的片段。
46
- - **圖片**:`maggie media generate --engine codex|gemini` 產生圖片;`maggie media engine-plan` 在大量產生前列出各引擎的時間與費用(例如 2400x1000 在 Gemini 會用 21:9、2K)。
47
- - **App**:
48
- - `maggie design sheet-check` 抓出 iOS 凍結問題:關閉 sheet 的同時顯示 toast、重新整理、換頁或開另一個 sheet。
49
- - `maggie mobile ota-guard` 只把更新發佈到已安裝 build 擁有的 runtime;在 pnpm monorepo 中,fingerprint 可能因不相關的套件變動而改變。
50
- - **發佈**:
51
- - `maggie deployment preview-auth-check` 找出仍在送資料到已加密碼的 preview 主機的 workflow 與 webhook。
52
- - `maggie product published` 等到 staged 的 npm 版本真正成為 `latest`。
32
+ 目前 npm 版本為 `0.7.55`:完成 feedback batch 31,共 16 條,來自一個以排程 AI agent 操作自家行銷產品、同時維護 PHP 主機的團隊,並同步發布 MaggieDash 0.2.15。
33
+
34
+ - **排程 agent(`maggie-ops`)**:
35
+ - Skill 的「Routine mode」範本:何時執行、讀什麼、可確認哪些寫入與每日上限、失敗時怎麼辦,最後一定存一份報告。排程規則:排在伺服器自己的工作之後、避開整點,並留在平台每日執行次數上限內。
36
+ - `maggie ops routines-check routines.json` 依上述規則檢查 routines 檔;`maggie ops routines-payload` 產生 agents repository 送給 MaggieDash Routines 分頁的內容。
37
+ - Ops Autopilot 模式:每日例行工作在伺服器上以網站當地時間、每個週期只跑一次,絕不重發可能已上線的內容;agent 先讀它的狀態,只補上判斷。
38
+ - **AI 助理工具(`maggie-assistant-tools`)**:
39
+ - 報告收件匣:每次無人值守的執行都在這裡留下結果(存、列、讀;每站每日上限;標題、摘要與內文視為不可信)。`maggie assistant report-check` 檢查報告。
40
+ - 限制由伺服器執行:agent key 的長期工具要有每日數量;登入(OAuth)連線能用到的每個寫入工具都要有每日上限。登入連線預設取得該角色的完整工具集,縮小時必須說明原因。
41
+ - 會截短文字的列表工具,每一筆都要標示已截短,並指名能取得全文的 get 工具。`maggie assistant list-check` 找出看起來被截斷的項目。
42
+ - **PHP 主機與安全公告(`maggie-deployment`)**:
43
+ - `maggie deployment runtime-inventory` 從 `nginx -T`(包含 symlink 到 `sites-enabled` 的設定)列出每個網站的 PHP runtime,標出已停止支援的作業系統與過舊的固定 image 版本,並為每個受影響的網站產生遷移計畫:綁在 127.0.0.1 的容器、唯讀掛載網站、nginx 變更、啟動後檢查與回復步驟。
44
+ - PHP image 一律以 `--entrypoint docker-php-entrypoint` 啟動。`wordpress:*-fpm` 的預設 entrypoint 會把 WordPress 複製進沒有 `wp-config.php` 的掛載目錄。
45
+ - `maggie deployment host-lock` 避免兩個 agent session 同時修改同一台主機,並列出最近的變更。
46
+ - **Blog API Pull**:改寫內容現在會送到 pull 網站:讀取 `/updates`,新內文套用到它所屬的文章(依原始 content id、slug 或網址),並保留上線網址。`live-urls match` 也會補上網址為空的已追蹤文章。
47
+ - **Search Console 點子**:`maggie seo query-ideas` 不會把 `site:` 查詢、單純網域或只有品牌名的查詢變成點子,單複數視為同一主題。
48
+ - **社群佇列**:`maggie tool maggie_social_share.py used-on` / `queue-check`:同一篇文章在某個頻道分享後 30 天內不會在該頻道重用(其他頻道不受影響);每則貼文都要有圖片;自動模式下選配檢查不再擋住貼文;「全部核准」包含被擋住的貼文。
49
+ - **單一版本來源**:`VERSION` 與 `package.json` 不一致時拒絕打包,發佈前會檢查所有 release 文件,`maggie skills package` 必須明確指定版本來源。
50
+ - **MaggieDash 0.2.15** 新增 AI agents 工作區,管理 host 自己的 MCP:附工具與每日上限的 token、登入連線、逐次呼叫復原、Google 分析連線,以及同步的 routines。
51
+
52
+ 前一版 `0.7.54` 完成 feedback batch 30(13 條,來自在自家網站執行 MaggieDash 的內容與社群產品):MaggieDash 先裝核心、release privacy gate、feedback 備援到 `feedback.cmo.so`、社群 `link-check` 與 `pictures`、`blog live-urls`、`design bulk`、`sheet-check`、`media generate`、`mobile ota-guard`、`preview-auth-check` 與 `product published`。
53
53
 
54
54
  前一版 `0.7.53` 完成 feedback batch 29(56 條,來自預約平台與社群/AI 助理產品):預約規則與共用測試向量、Stripe Connect 平台指引與 `connect-qa`、MaggieDash 0.2.13 預約修正、`cloudflare-preflight`、`vps-release`、`qa fit-check`、`mobile ota --build-ref`、助理 registry 卡片與長期核准、社群只用自家網域文章,以及 `seo origin-check`。
55
55
 
@@ -137,7 +137,7 @@ structure drift 或重複 treatment product 時 fail closed。
137
137
  deployment、memory、feedback 和 MaggieDash。內容先 draft/review,外部寫入、
138
138
  publish 與 production deployment 需要明確確認。
139
139
 
140
- 目前 npm 版本為 `0.7.54`,包含 batch 30 MaggieDash 先裝核心、release privacy gate、feedback 備援、社群連結與圖片檢查、大量頁面產生與 app 檢查,batch 29 預約規則、部署、app QA、助理與社群功能,以及 batch 28 產品 app、assistant tools、mobile、product release、skills catalog 與 bridge host 功能、batch 26、27 feedback 修正與 idempotent `maggie update`與 Booking email-template 合約/CLI validator 同步。本版完成 2026-09-24 booking feedback batch:Calendar grid/free-slot entry 與 host modal focus-restoration evidence。本版新增 Starter marketplace provisioning plan;本版完成 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
140
+ 目前 npm 版本為 `0.7.55`,包含 batch 31 排程 agent routines、報告收件匣與無人值守 agent 限制、PHP runtime 盤點與主機鎖、pull 網站改寫、query 點子與社群佇列檢查,batch 30 MaggieDash 先裝核心、release privacy gate、feedback 備援、社群連結與圖片檢查、大量頁面產生與 app 檢查,batch 29 預約規則、部署、app QA、助理與社群功能,以及 batch 28 產品 app、assistant tools、mobile、product release、skills catalog 與 bridge host 功能、batch 26、27 feedback 修正與 idempotent `maggie update`與 Booking email-template 合約/CLI validator 同步。本版完成 2026-09-24 booking feedback batch:Calendar grid/free-slot entry 與 host modal focus-restoration evidence。本版新增 Starter marketplace provisioning plan;本版完成 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
141
141
  dispatch、`maggie --version`、feedback batch review 聚合與重複偵測、marketplace enrichment evidence、booking
142
142
  worker/resolver evidence,以及 read-only migration preflight。它也包含 host-owned mobile app surface contract、signed-in
143
143
  camera-state QA、直接 Astro route resolution、correlated feedback batch,以及
package/README.md CHANGED
@@ -89,71 +89,66 @@ Maggie keeps the existing project foundation and asks for decisions before
89
89
  shared routes, analytics, or publishing boundaries change. The current
90
90
  package ships 22 installable skills and a local-first MaggieDash foundation.
91
91
 
92
- This package is `0.7.54`. It closes feedback batch 30: 13 records
93
- from a content and social product that runs MaggieDash on its own website,
94
- plus MaggieDash 0.2.14.
95
-
96
- - **MaggieDash installs the core first.** `maggie dash install` now installs
97
- only the dashboard, sign-in, the `/_maggie/admin` route and the core schema.
98
- It then reads your project (framework, existing sign-in, database, payments,
99
- whether you sell services or run a blog, languages) and recommends optional
100
- modules, each with a reason. Nothing optional is installed until you ask:
101
- `maggie dash add booking --confirm` (or `maggie booking install`). A content
102
- site no longer gets Stripe, booking routes and a worker it never asked for.
103
- `maggie dash recommend` repeats the analysis at any time.
104
- - **MaggieDash 0.2.14 keeps secrets out of the build.** The Astro scaffold
105
- read server settings through `import.meta.env`, which Vite writes into the
106
- build output: an `astro build` with `DATABASE_URL` or `BOOKING_TOKEN_SECRET`
107
- in the environment put them into `dist/server`. They are now read at run
108
- time. Rebuild any host installed from an earlier scaffold. The admin
109
- sidebar shows only the panels your host serves (capability manifest), and
110
- the Booking env example now reaches installs from GitHub.
111
- - **Nothing client-specific in your agent folders.** Earlier packages
112
- installed one client's integration audit, progress logs and a delivery
113
- board into `~/.claude/references` and `~/.codex/references`. Only general
114
- Booking documents ship now. A release gate fails packaging when a packaged
115
- file names a client or links to an unshipped document. `maggie update`
116
- removes files an older package installed and this one no longer ships
117
- (only when you have not changed them), and `maggie doctor --scope user`
118
- reports any that are left.
119
- - **Feedback always arrives.** `maggie feedback submit` needs no
120
- `--endpoint`. It tries the NoBlox host first and, only when that host fails
121
- before storing the draft (no connection or a 5xx such as 526), sends it to
122
- `feedback.cmo.so`. Both hosts drop duplicates by `feedbackId`.
123
- - **Social posts.**
124
- - `link-check` (and `plan --check-link`) drops articles whose link is gone
125
- (404 or 410) before posts are planned. Blocked or failing pages are kept.
126
- - `pictures` makes posts written together for several channels share one
127
- picture.
128
- - **Blog API Pull.** `maggie blog live-urls` records where a delivered post
129
- went live, from the site's own report or a sitemap match. Matching only
130
- adds URLs, never retires earlier matches, and prefers the original page
131
- over translated copies.
132
- - **Generated pages.**
133
- - `maggie design bulk` runs many similar pages from one brief, facts file
134
- and validator. Pictures are drawn only for validated pages that have not
135
- changed since. A writer must re-read a page that changed. Tightened rules
136
- send earlier passes back for validation. Nothing is seeded until every
137
- page passes.
138
- - `maggie localization key-check` finds texts that need per-page position
139
- keys instead of site-wide text keys.
140
- - `maggie localization fragments` finds sentences split around a brand
141
- name into pieces too short to translate.
142
- - **Pictures.** `maggie media generate --engine codex|gemini` draws a picture,
143
- and `maggie media engine-plan` states the time and cost of each engine
144
- before a large run (for example, 2400x1000 becomes 21:9 at 2K on Gemini).
145
- - **Apps.**
146
- - `maggie design sheet-check` catches the iOS freeze: closing a sheet and,
147
- in the same moment, showing a toast, refreshing, navigating or opening
148
- another sheet.
149
- - `maggie mobile ota-guard` publishes an update only to a runtime an
150
- installed build has. In pnpm monorepos the fingerprint can move with
151
- unrelated dependency changes.
152
- - **Releases.**
153
- - `maggie deployment preview-auth-check` finds workflows and webhooks that
154
- still post to a preview host you protected with a password.
155
- - `maggie product published` waits until a staged npm version is really
156
- `latest`.
92
+ This package is `0.7.55`. It closes feedback batch 31: 16 records from a team that runs scheduled AI
93
+ agents against its own marketing product and maintains PHP hosts, plus
94
+ MaggieDash 0.2.15.
95
+
96
+ - **Scheduled agents (`maggie-ops`).**
97
+ - A "Routine mode" template for skills: when it runs, what it reads, which
98
+ writes it may confirm and how many a day, what to do on failure, and that
99
+ it ends by saving a report. Scheduling rules: start after the server's own
100
+ jobs and off the hour, and stay inside the platform's daily run cap.
101
+ - `maggie ops routines-check routines.json` checks a routines file against
102
+ those rules. `maggie ops routines-payload` builds the body an agents
103
+ repository sends to MaggieDash's Routines tab.
104
+ - The Ops Autopilot pattern: daily chores run on the server, once per
105
+ period, in the site's local time, and never repost something that may
106
+ already be live. Agents read its state first and add judgement.
107
+ - **AI assistant tools (`maggie-assistant-tools`).**
108
+ - A report inbox where every unattended run leaves its result (save, list,
109
+ get; daily cap per site; title, summary and body treated as untrusted).
110
+ `maggie assistant report-check` checks a report.
111
+ - Limits are the server's: agent keys get standing tools with a daily
112
+ number, and every write a sign-in (OAuth) connection can reach needs a
113
+ daily cap. A sign-in connection gets the role's whole tool set unless the
114
+ narrowing is stated.
115
+ - A list tool that shortens text must say so on each item and name a get
116
+ tool that returns the full text. `maggie assistant list-check` finds
117
+ items that look cut off.
118
+ - **PHP hosts and advisories (`maggie-deployment`).**
119
+ - `maggie deployment runtime-inventory` lists each site's PHP runtime from
120
+ `nginx -T` (symlinked `sites-enabled` files included), flags end-of-life
121
+ operating systems and stale pinned images, and writes a migration plan
122
+ per affected site: a container on 127.0.0.1, the site mounted read-only,
123
+ the nginx change, checks after start and a rollback.
124
+ - PHP images always start with `--entrypoint docker-php-entrypoint`. The
125
+ `wordpress:*-fpm` default entrypoint copies WordPress into a mounted site
126
+ that has no `wp-config.php`.
127
+ - `maggie deployment host-lock` stops two agent sessions from changing the
128
+ same host at once and shows what changed recently.
129
+ - **Blog API Pull.** Rewrites now reach pull-delivered sites: `/updates` is
130
+ read, the new body lands on the post it belongs to (by its original content
131
+ id, slug or address) and keeps its live URL. `live-urls match` also fills
132
+ posts tracked with an empty URL.
133
+ - **Search Console ideas.** `maggie seo query-ideas` never turns `site:`
134
+ queries, bare domains or the brand name alone into ideas, and treats
135
+ singular and plural as one topic.
136
+ - **Social queue.** `maggie tool maggie_social_share.py used-on` / `queue-check`: an article
137
+ shared on a channel is not reused there for 30 days (other channels stay
138
+ free); every post needs a picture; in auto mode optional checks no longer
139
+ hold posts; Approve all includes held posts.
140
+ - **One version source.** Packaging refuses when `VERSION` and
141
+ `package.json` disagree, publishing checks every release document, and
142
+ `maggie skills package` needs an explicit version source.
143
+ - **MaggieDash 0.2.15** adds the AI agents workspace for a host's own MCP:
144
+ tokens with tools and a daily limit, sign-in connections, per-call undo,
145
+ Google analytics connection and synced routines.
146
+
147
+ 0.7.54 closed feedback batch 30 (13 records from a content and social product
148
+ running MaggieDash): core-first `maggie dash install`, the release privacy
149
+ gate, feedback fallback to `feedback.cmo.so`, social `link-check` and
150
+ `pictures`, `blog live-urls`, `design bulk`, `sheet-check`, `media generate`,
151
+ `mobile ota-guard`, `preview-auth-check` and `product published`.
157
152
 
158
153
  0.7.53 closed feedback batch 29 (56 records from a booking marketplace and a
159
154
  social/assistant product): booking rules with shared test vectors, Stripe
@@ -815,8 +810,8 @@ artifact schemas.
815
810
  Recommended upgrade sequence for the current release:
816
811
 
817
812
  ```bash
818
- npx @topy-ai/maggie@0.7.54 update --scope project --project . --force
819
- npx @topy-ai/maggie@0.7.54 cleanup --scope project --project .
813
+ npx @topy-ai/maggie@0.7.55 update --scope project --project . --force
814
+ npx @topy-ai/maggie@0.7.55 cleanup --scope project --project .
820
815
  ```
821
816
 
822
817
  Maintainers should pass npm credentials through the repository helper, never
package/bin/maggie.js CHANGED
@@ -105,6 +105,7 @@ Usage:
105
105
  maggie seo privacy-check --evidence FILE
106
106
  maggie seo origin-check --base-url URL [--project PATH] [--expect-host HOST]
107
107
  maggie seo fragment-check --url URL [--url URL2] [--cookie-env NAME]
108
+ maggie seo query-ideas ROWS.json [--coverage FILE] [--brand NAME] [--limit 5]
108
109
  maggie content FILE --source PROVIDER --project PATH --confirm
109
110
  maggie agent-content write --url URL --allowed-origin ORIGIN --token-env ENV --payload FILE
110
111
  maggie bootstrap phase <start|pass|fail|status> <phase> [project]
@@ -172,12 +173,16 @@ Usage:
172
173
  maggie deployment file-parity --host H [--host H2] --root /srv/app/current --path dist/x.mjs [--ref DEPLOYED_COMMIT]
173
174
  maggie deployment warm-check --url URL [--warm 3] [--samples 5] [--budget-ms 800]
174
175
  maggie deployment preview-auth-check --host preview.example.com [--repo PATH] [--live]
176
+ maggie deployment runtime-inventory --evidence FILE|--ssh USER@HOST|--print-collector [--advisory FILE] [--latest-tags FILE] [--image php:{version}-fpm]
177
+ maggie deployment host-lock acquire|status|release --host USER@HOST|local --session ID [--purpose TEXT] [--ttl 3600]
175
178
  maggie deployment vps-release --host deploy@HOST --release-root /srv/app --service app --env-file /etc/app.env [--health-url URL] [--confirm]
176
179
  maggie mobile preflight|plan --project PATH [--app-dir apps/app] [--profile production] [--platform ios|android|all] [--auto-submit] [--build-ref REF]
177
180
  maggie mobile ota --project PATH --build-ref REF --build-id ID --message TEXT [--confirm]
178
181
  maggie mobile ota-guard --project PATH --platform ios|android --runtimes FILE [--publish --message TEXT --confirm]
179
182
  maggie assistant registry-validate|annotations|capability-page|audit-check --registry FILE [--mcp-tools FILE] [--session FILE] [--output FILE]
180
183
  maggie assistant approval-selftest
184
+ maggie assistant list-check --registry FILE --tool NAME --result FILE
185
+ maggie assistant report-check --report FILE [--registry FILE]
181
186
  maggie product release-check --package DIR [--server-json FILE] [--changelog FILE] [--pack]
182
187
  maggie product smoke --package DIR | mcp-check --mcp-url URL | review-status --reviews FILE [--chatgpt-plugin FILE]
183
188
  maggie product published --package-name NAME --version X [--wait 600] [--publish-log FILE]
@@ -220,6 +225,8 @@ Usage:
220
225
  maggie ops google-ads-preflight|google-ads-keyword-ideas --customer-id ID [--login-customer-id ID]
221
226
  maggie ops notifications catalogue|templates|preflight|health|retention|alerts --project PATH ...
222
227
  maggie ops preflight --project PATH --write
228
+ maggie ops routines-check routines.json [--server-jobs FILE] [--plan pro|max|team|enterprise]
229
+ maggie ops routines-payload routines.json --repo OWNER/NAME [--commit SHA] [--output FILE]
223
230
 
224
231
  Examples:
225
232
  npx @topy-ai/maggie init
@@ -675,10 +682,10 @@ function docs(args) {
675
682
 
676
683
  function seo(args) {
677
684
  const command = args[0];
678
- 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" };
685
+ 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", "query-ideas": "maggie_query_ideas.py" };
679
686
  if (command === "privacy-check") return workflowCli("maggie_contracts.py", ["privacy-check", ...args.slice(1)]);
680
687
  if (command === "origin-check" || command === "fragment-check") return workflowCli("maggie_seo_routes.py", args);
681
- if (!scripts[command]) throw new Error("seo command must be performance, images, sitemap, indexnow, social-cards, head-tags, privacy-check, origin-check, or fragment-check");
688
+ if (!scripts[command]) throw new Error("seo command must be performance, images, sitemap, indexnow, social-cards, head-tags, query-ideas, privacy-check, origin-check, or fragment-check");
682
689
  workflowCli(scripts[command], args.slice(1));
683
690
  }
684
691
 
@@ -855,6 +862,7 @@ try {
855
862
  else if (command === "deployment" && args[0] === "collect") workflowCli("maggie_deployment_collect.py", args.slice(1));
856
863
  else if (command === "deployment" && args[0] === "parity") workflowCli("maggie_deployment_parity.py", args.slice(1));
857
864
  else if (command === "deployment" && args[0] === "release-manifest") workflowCli("maggie_release_manifest.py", args.slice(1));
865
+ else if (command === "deployment" && ["runtime-inventory", "host-lock"].includes(args[0])) workflowCli("maggie_host_runtime.py", args);
858
866
  else if (command === "deployment" && args[0] === "runtime-preflight") workflowCli("maggie_runtime_preflight.py", args.slice(1));
859
867
  else if (command === "deployment") workflowCli("maggie_deployment.py", args);
860
868
  else if (command === "migration") workflowCli("maggie_migration.py", args);
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schemaVersion": "maggie-assistant-tool-registry.v1",
3
- "description": "Booking receptionist and public discovery MCP for a multi-business booking marketplace. The receptionist answers visitors on one business's page from that business's facts only; it never books, cancels or takes card details \u2014 it opens the normal booking sheet at a real free time.",
3
+ "description": "Booking receptionist and public discovery MCP for a multi-business booking marketplace. The receptionist answers visitors on one business's page from that business's facts only; it never books, cancels or takes card details — it opens the normal booking sheet at a real free time.",
4
4
  "visitorPolicy": {
5
5
  "enabledByDefault": false,
6
6
  "dailyCaps": {
@@ -157,5 +157,21 @@
157
157
  "text": "Give medical advice.",
158
158
  "instead": "Ask the business, or your doctor."
159
159
  }
160
- ]
160
+ ],
161
+ "unattended": {
162
+ "enforcedBy": "server",
163
+ "agentKeys": {
164
+ "canConfirmPreviews": false,
165
+ "refusalReturnsReason": true,
166
+ "standingTools": {}
167
+ },
168
+ "oauth": {
169
+ "server": "owner",
170
+ "defaultTools": "role",
171
+ "dailyWriteLimit": 100,
172
+ "perToolPerDay": {
173
+ "booking_reschedule": 20
174
+ }
175
+ }
176
+ }
161
177
  }
@@ -0,0 +1,43 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://github.com/TOPY-AI-LTD/ai-cmo-skills/blob/main/contracts/maggie-assistant-tools/report-v1.schema.json",
4
+ "title": "Maggie assistant report",
5
+ "description": "A report a scheduled agent (or the server's own job) leaves in a website's report inbox. Agents end every run by saving one. Checked before saving with `maggie assistant report-check`.",
6
+ "type": "object",
7
+ "required": [
8
+ "title",
9
+ "summary"
10
+ ],
11
+ "properties": {
12
+ "schemaVersion": {
13
+ "const": "maggie-assistant-report.v1"
14
+ },
15
+ "kind": {
16
+ "type": "string",
17
+ "description": "e.g. weekly, daily_ops, agent, post_health"
18
+ },
19
+ "title": {
20
+ "type": "string",
21
+ "minLength": 1,
22
+ "maxLength": 120
23
+ },
24
+ "summary": {
25
+ "type": "string",
26
+ "minLength": 1,
27
+ "maxLength": 500,
28
+ "description": "One or two sentences shown in the inbox and the push."
29
+ },
30
+ "body_md": {
31
+ "type": "string",
32
+ "maxLength": 50000
33
+ },
34
+ "data": {
35
+ "type": "object"
36
+ },
37
+ "source": {
38
+ "type": "string",
39
+ "description": "system:<job> or agent:<key or grant id>; set by the server, never by the caller."
40
+ }
41
+ },
42
+ "additionalProperties": false
43
+ }