@topy-ai/maggie 0.8.13 → 0.8.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README-zh-TW.md
CHANGED
|
@@ -143,7 +143,7 @@ structure drift 或重複 treatment product 時 fail closed。
|
|
|
143
143
|
deployment、memory、feedback 和 MaggieDash。內容先 draft/review,外部寫入、
|
|
144
144
|
publish 與 production deployment 需要明確確認。
|
|
145
145
|
|
|
146
|
-
目前 npm 版本為 `0.8.
|
|
146
|
+
目前 npm 版本為 `0.8.14`,新增 `maggie-ai-media`(去背/放大/arm's-length ComfyUI 的命令生成器,自身不下載模型、不用 GPU),讓 Q 類達到同級;重型執行仍受成本把關。先前 0.8.13 新增 AI 媒體生成規劃 reference(Q 類:自託管模型概覽、程式碼授權≠權重授權規則、商用安全子集 rembg/Real-ESRGAN、成本/BYOK 守則;實際建置待明確許可)。先前 0.8.12 收尾其餘設計類:新增 `maggie-image`(影像處理 CLI:尺寸/OG/favicon/WebP-AVIF/svg/montage)與 web 動效、生成式視覺、圖像配方、字幕四個 reference。先前 0.8.11 收尾 N 類影片功能:`maggie_video.py compile` 再補上視頻 clip ken-burns、sidechain ducking、以及非透明度 overlay 效果(move/slide、圖片 zoom),並新增 `autocut` 子命令(silencedetect 去靜音)。先前 0.8.10 新增圖片 ken-burns + 文字透明度關鍵幀與 `captions`(whisper)子命令。先前 0.8.9 新增 `compile`(宣告式 timeline JSON→單一 ffmpeg 命令)。先前 0.8.8 新增 `maggie-video`(製作與處理行銷影片:剪輯、字幕、裁切成各渠道比例、浮水印、轉碼、響度正規化、clip 組裝、程式化動畫),附一個實測可用的 ffmpeg 配方 CLI(`maggie_video.py`),從參考庫的影片專案(moviepy/editly/ffmpeg 命令層、Revideo/Motion Canvas/CCapture 程式化渲染、MLT/OpenShot/Olive 的 timeline 資料形狀)提煉而來;另加 `ffmpeg-recipes`、`programmatic-video`、`video-timeline-model` 三個 reference。先前 0.8.7 把 redesign 稽核併入 `maggie-design`(改編自 MIT 的 `elayadesign/redesign-skill`):掃描 + 診斷 AI 通病/缺失狀態/雜亂程式碼,再經 in-place/verify 流程就地修正,因此「稽核/打磨/升級既有站點」會路由到 maggie-design。先前 0.8.6 補齊兩個設計技能:加入完整的生產 reference,並把設計來源明確為 Figma 非必需(實時 URL、既有程式碼、Figma、或純截圖)。先前 0.8.5 採納兩個設計技能(改編自 MIT 的 `elayadesign/ai-design-skills`):maggie-landing-page(轉化策略 + 視覺系統紀律,具體數值為可被專案 DESIGN.md 覆蓋的預設值;由 maggie-design 生產與驗證)與 maggie-design-motion(靜態設計→像素級動畫 HTML 複刻→匯出 MP4 + GIF)。先前 0.8.4 將技能庫擴展成完整的「一人用 AI 跑一家公司」C-suite,新增八條職能線:maggie-sales(CRM 中立的銷售管線)、maggie-finance(只解釋的 CFO 指標,含確定性 maggie_finance.py 計算器)、maggie-support(面向客戶的客戶成功)、maggie-product(路線圖 + 預註冊實驗)、maggie-fundraising(pitch deck、data room、投資人更新)、maggie-legal(ToS/隱私/DPA/SOC2 readiness)、maggie-monetization(定價/paywall/dunning,金錢操作需人工批准)、maggie-orchestrator(CEO 編排層:將目標拆成帶審批門的 mission 分派到各職能線,含 maggie_orchestrator.py 規劃器)。先前 0.8.3 將 cmo.so/www 開發經驗沉澱進技能庫:新增兩個技能 maggie-skill-authoring(依 catalog 與 MCP 工具白名單撰寫/校驗社區營銷 playbook 技能)與 maggie-feedback-triage(反饋的團隊接收端:決策/定級/分派、PRD + issue 流程、24/7 隊列守護);新增多個 reference(OAuth PKCE 登入、Expo 約定與 Router 骨架、MCP evals 測試框架、conversation cards、WordPress→Firebase 認證遷移手冊);並增補 maggie-assistant-tools(tool≤user 每輪工具過濾、agent loop 安全不變量、preview-only 橋接代理、MCP resources/prompts、注解加固、CLI 與 ChatGPT 插件打包)、maggie-auth-reference(自清理登入測試套件、自簽單次令牌)、maggie-mobile-app(OTA 開機拉取、live==built 部署守衛)、maggie-deployment(pm2 單包發布、live-hash 校驗)與 maggie-ops(template-as-code 郵件同步)。先前 0.8.2 新增 maggie-spirit(為 AI 品牌生成平面像素 spirit/sprite 系統)與 goal-led AI agent 設計參考;0.8.0 為安全優化 roadmap(scan、image-patch、標頭評分、SSVC、GDPR 日誌規則、新 MCP 工具)。先前 0.8.0 為安全優化 roadmap(scan、image-patch、標頭評分、SSVC、GDPR 日誌規則、新 MCP 工具),含 fix-plan 修補風險分級 T1–T4(判斷補丁是否安全套用)與 host-impact 補丁影響面量測(哪些服務需重啟、是否需重開機)、public-check、Maggie Security、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
|
|
147
147
|
dispatch、`maggie --version`、feedback batch review 聚合與重複偵測、marketplace enrichment evidence、booking
|
|
148
148
|
worker/resolver evidence,以及 read-only migration preflight。它也包含 host-owned mobile app surface contract、signed-in
|
|
149
149
|
camera-state QA、直接 Astro route resolution、correlated feedback batch,以及
|
package/README.md
CHANGED
|
@@ -87,9 +87,9 @@ Then invoke the installed skills from your coding agent, for example:
|
|
|
87
87
|
|
|
88
88
|
Maggie keeps the existing project foundation and asks for decisions before
|
|
89
89
|
shared routes, analytics, or publishing boundaries change. The current
|
|
90
|
-
package ships
|
|
90
|
+
package ships 39 installable skills and a local-first MaggieDash foundation.
|
|
91
91
|
|
|
92
|
-
This package is `0.8.
|
|
92
|
+
This package is `0.8.14` — adds `maggie-ai-media` (bg removal / upscaling / arm's-length ComfyUI as a command generator; no model downloads or GPU itself). `0.8.13` adds the AI-media-generation planning reference (category Q: licensing + safe subset + cost guardrails; build gated on go-ahead). `0.8.12` adds `maggie-image` (process images via an ImageMagick recipe CLI) + references for web animation, generative visuals, image recipes, and captions. `0.8.11` - `maggie_video.py compile` now also does video-clip ken-burns, sidechain ducking, and non-opacity overlay effects (move/slide, image zoom), and a new `autocut` subcommand removes silent gaps. `0.8.10` added image ken-burns + text opacity keyframes and the `captions` (whisper) subcommand. `0.8.9` added `compile` (declarative timeline JSON -> one ffmpeg command). `0.8.8` added `maggie-video` (produce and process marketing video: cut, caption, resize to channel aspects, watermark, transcode, normalize loudness, assemble clips, render code-drawn animation) with a tested ffmpeg-recipe CLI, distilled from the reference library's video projects; plus references `ffmpeg-recipes`, `programmatic-video`, `video-timeline-model`. `0.8.7` folded a redesign audit into `maggie-design` (from the MIT `elayadesign/redesign-skill`): scan + diagnose generic AI-design patterns/weak states/sloppy code, then fix in place via the in-place/verify flow, so "audit/polish/upgrade an existing site" routes to maggie-design. `0.8.6` completed the two adopted design skills with full production references and made the design source Figma-optional (live URL, existing code, Figma, or a screenshot). `0.8.5` adopted the two design skills (adapted, MIT, from `elayadesign/ai-design-skills`): `maggie-landing-page` (conversion strategy + a visual-system discipline whose values defer to the project's DESIGN.md) and `maggie-design-motion` (static design → pixel-exact animated HTML replica → MP4 + GIF export). `0.8.4` expanded the library into a full "one person runs a company with AI" C-suite with eight new function lanes: `maggie-sales` (CRM-neutral pipeline), `maggie-finance` (explain-only CFO metrics + a deterministic `maggie_finance.py` calculator), `maggie-support` (customer success), `maggie-product` (roadmap + pre-registered experiments), `maggie-fundraising` (deck, data room, investor updates), `maggie-legal` (ToS/privacy/DPA/SOC2 readiness), `maggie-monetization` (pricing/paywalls/dunning; money actions human-approved), and `maggie-orchestrator` (the CEO layer that decomposes a goal into gated missions across the lanes, with a `maggie_orchestrator.py` planner). `0.8.3` folded cmo.so/www development learnings in (maggie-skill-authoring, maggie-feedback-triage, and mobile/MCP/auth references); `0.8.2` added `maggie-spirit`; `0.8.0` was the security optimization roadmap.
|
|
93
93
|
|
|
94
94
|
The 0.7.59 release made `maggie security host-audit` (the deep
|
|
95
95
|
lynis audit over SSH) robust on hosts where a storage test can stall: lynis runs
|
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
"schemaVersion": "maggie-skill-catalog.v1",
|
|
3
3
|
"generatedFrom": "skills/*/SKILL.md",
|
|
4
4
|
"skills": [
|
|
5
|
+
{
|
|
6
|
+
"name": "maggie-ai-media",
|
|
7
|
+
"description": "Self-hosted AI media operations for marketing - background removal, upscaling, and arm's-length ComfyUI orchestration - as a command generator (prints the command; runs it only when you have the tool installed). It downloads no model weights and uses no GPU itself. Use when the user wants to remove a background, upscale/restore an image, or drive a local ComfyUI for generation. Heavy model runs are gated on an explicit cost go-ahead."
|
|
8
|
+
},
|
|
5
9
|
{
|
|
6
10
|
"name": "maggie-assistant-tools",
|
|
7
11
|
"description": "Build an AI assistant's tools once and expose them safely to an in-app agent, an MCP server and ChatGPT/Claude apps. Use for tool registries, risk levels and gates, result cards, approval cards with signed one-time tokens and standing workflow approvals, audit logs, report inboxes and server-enforced limits for scheduled agents (agent keys, sign-in grants, clipped lists), MCP annotations, public discovery MCP and audience binding, visitor-facing receptionists, user-facing capability pages, publishing product CLI/MCP packages and app reviews, and multi-tenant assistant bridge hosts."
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: maggie-ai-media
|
|
3
|
+
description: Self-hosted AI media operations for marketing - background removal, upscaling, and arm's-length ComfyUI orchestration - as a command generator (prints the command; runs it only when you have the tool installed). It downloads no model weights and uses no GPU itself. Use when the user wants to remove a background, upscale/restore an image, or drive a local ComfyUI for generation. Heavy model runs are gated on an explicit cost go-ahead.
|
|
4
|
+
metadata:
|
|
5
|
+
version: 0.1.0
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Maggie AI Media
|
|
9
|
+
|
|
10
|
+
The self-hosted AI-media lane (category Q): background removal, upscaling, and
|
|
11
|
+
heavier generation via a host-run ComfyUI. It is a **command generator** like
|
|
12
|
+
`maggie-video` / `maggie-image` - it prints the exact command and runs it with
|
|
13
|
+
`--run` only when the tool is already on PATH. It **downloads no model weights and
|
|
14
|
+
uses no GPU itself**; actually running an op is the host's resource/cost, under the
|
|
15
|
+
rules in [AI media generation](../../references/ai-media-generation.md).
|
|
16
|
+
|
|
17
|
+
Read that reference before doing anything here. The load-bearing rule: **a repo's
|
|
18
|
+
code license is not its model-weight license** - verify each weight's terms for
|
|
19
|
+
commercial use. No AGPL/GPL code is vendored (sd-webui, ComfyUI, Fooocus, Upscayl are
|
|
20
|
+
invoked at arm's length or not at all).
|
|
21
|
+
|
|
22
|
+
Follow the [Maggie Memory Hook](../../references/memory-hook.md) at invocation and
|
|
23
|
+
completion.
|
|
24
|
+
|
|
25
|
+
## Scope (commercial-safe subset)
|
|
26
|
+
|
|
27
|
+
- **Background removal** - `rembg` (MIT) or `backgroundremover` (MIT). CPU-fine; pairs
|
|
28
|
+
with `maggie-image` compositing for clean product cut-outs.
|
|
29
|
+
- **Upscaling** - `Real-ESRGAN` (BSD) via the standalone `realesrgan-ncnn-vulkan`
|
|
30
|
+
binary (never Upscayl, which is AGPL).
|
|
31
|
+
- **Generation (heavier)** - submit a saved workflow to a **host-run ComfyUI**
|
|
32
|
+
endpoint over HTTP (GPL, arm's-length): the host supplies the GPU and the
|
|
33
|
+
license-cleared weights; Maggie only POSTs the workflow and fetches the result,
|
|
34
|
+
which then flows into `maggie-image` / `maggie-video`.
|
|
35
|
+
|
|
36
|
+
## CLI
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
maggie tool maggie_ai_media.py rmbg --input product.png --output product-cut.png # bg removal
|
|
40
|
+
maggie tool maggie_ai_media.py --run rmbg --input product.png --output cut.png # runs if rembg installed
|
|
41
|
+
maggie tool maggie_ai_media.py upscale --input logo.png --output logo-4x.png --scale 4 # Real-ESRGAN
|
|
42
|
+
maggie tool maggie_ai_media.py comfy --endpoint http://127.0.0.1:8188 --workflow wf.json # ComfyUI submit
|
|
43
|
+
maggie tool maggie_ai_media.py presets
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Subcommands: `rmbg`, `upscale`, `comfy`, `presets`. `--run` executes only when the
|
|
47
|
+
tool is present; otherwise the command is printed for review.
|
|
48
|
+
|
|
49
|
+
## Guardrails
|
|
50
|
+
|
|
51
|
+
- **State cost first** for any model download or GPU run (weights are gigabytes, GPU
|
|
52
|
+
time is real) - the global spend-first rule. Small CPU ops (rembg) aside, get a yes
|
|
53
|
+
before a batch.
|
|
54
|
+
- **Weights license per model** (code license is not weight license); record which
|
|
55
|
+
weights are cleared for commercial use.
|
|
56
|
+
- **No vendoring** of AGPL/GPL code; invoke ComfyUI / realesrgan at arm's length.
|
|
57
|
+
- **If a hosted API is used** instead of self-host, the global BYOK rule applies
|
|
58
|
+
(`provider.order` + `allow_fallbacks:false` + explicit limits, our key, verify
|
|
59
|
+
`is_byok`/`cost:0`).
|
|
60
|
+
- **Provenance + rights + moderation** on any generated asset before publishing (as
|
|
61
|
+
`maggie-design`'s hero-video policy requires); never pass generated media off as a
|
|
62
|
+
real photo of a real person/place without disclosure.
|
|
63
|
+
- Do not claim a file was produced unless `--run` executed and it exists.
|
|
64
|
+
|
|
65
|
+
## Related
|
|
66
|
+
|
|
67
|
+
- [AI media generation](../../references/ai-media-generation.md) - the full landscape,
|
|
68
|
+
license map, and staged plan.
|
|
69
|
+
- `maggie-image` / `maggie-video` - post-process the output (size, caption, assemble).
|
|
70
|
+
- `maggie media generate` - the existing generation entry point.
|
|
71
|
+
- [generative visuals](../../references/generative-visuals.md) - code-drawn (non-AI)
|
|
72
|
+
visuals.
|
|
73
|
+
|
|
74
|
+
## Boundaries
|
|
75
|
+
|
|
76
|
+
- Command generation + arm's-length orchestration only; the models, GPU, and their
|
|
77
|
+
licensing/cost belong to the host, gated on an explicit go-ahead.
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""maggie_ai_media - generate commands for the license-clean AI-media subset.
|
|
3
|
+
|
|
4
|
+
A recipe generator for self-hosted AI media operations, matching the maggie_video /
|
|
5
|
+
maggie_image pattern: it PRINTS the exact command (reviewable/loggable) and runs it
|
|
6
|
+
with --run only when the tool is already on PATH. It downloads NO model weights and
|
|
7
|
+
uses NO GPU itself - actually running an op requires you to have installed the tool
|
|
8
|
+
(and its weights), which is where the cost/licensing responsibilities in
|
|
9
|
+
references/ai-media-generation.md apply (code license != weights license; check each
|
|
10
|
+
model's weight terms for commercial use).
|
|
11
|
+
|
|
12
|
+
Scope = the commercial-safe subset only: background removal (rembg / backgroundremover,
|
|
13
|
+
MIT) and upscaling (Real-ESRGAN via the standalone realesrgan-ncnn-vulkan binary,
|
|
14
|
+
BSD). Heavier generation goes through a ComfyUI endpoint at arm's length (comfy), never
|
|
15
|
+
by vendoring its GPL code. No AGPL/GPL code is bundled.
|
|
16
|
+
|
|
17
|
+
Subcommands: rmbg, upscale, comfy, presets.
|
|
18
|
+
"""
|
|
19
|
+
import argparse
|
|
20
|
+
import json
|
|
21
|
+
import shlex
|
|
22
|
+
import shutil
|
|
23
|
+
import subprocess
|
|
24
|
+
import sys
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def emit(args, run, tool):
|
|
28
|
+
print(" ".join(shlex.quote(a) for a in args))
|
|
29
|
+
if not run:
|
|
30
|
+
return 0
|
|
31
|
+
if not shutil.which(tool):
|
|
32
|
+
sys.stderr.write(f"{tool} not found on PATH; printed the command only "
|
|
33
|
+
f"(install it + its weights first - see ai-media-generation.md).\n")
|
|
34
|
+
return 3
|
|
35
|
+
return subprocess.run(args).returncode
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def c_rmbg(a):
|
|
39
|
+
"""Background removal. rembg (MIT); u2net default, u2netp (light), isnet-general-use."""
|
|
40
|
+
if a.engine == "backgroundremover":
|
|
41
|
+
cmd = ["backgroundremover", "-i", a.input, "-o", a.output]
|
|
42
|
+
return emit(cmd, a.run, "backgroundremover")
|
|
43
|
+
cmd = ["rembg", "i", "-m", a.model, a.input, a.output]
|
|
44
|
+
print("# rembg downloads its model once on first run (~170MB for u2net); MIT, CPU-fine.")
|
|
45
|
+
return emit(cmd, a.run, "rembg")
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
def c_upscale(a):
|
|
49
|
+
"""Upscale with Real-ESRGAN via the standalone realesrgan-ncnn-vulkan binary (BSD).
|
|
50
|
+
Do NOT use Upscayl (AGPL). Models: realesrgan-x4plus, realesrgan-x4plus-anime."""
|
|
51
|
+
cmd = ["realesrgan-ncnn-vulkan", "-i", a.input, "-o", a.output,
|
|
52
|
+
"-n", a.model, "-s", str(a.scale)]
|
|
53
|
+
print("# needs the realesrgan-ncnn-vulkan binary + its models; invoked at arm's length (BSD).")
|
|
54
|
+
return emit(cmd, a.run, "realesrgan-ncnn-vulkan")
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def c_comfy(a):
|
|
58
|
+
"""Submit a saved ComfyUI workflow graph to a running ComfyUI endpoint over HTTP.
|
|
59
|
+
ComfyUI is GPL - it runs as the host's own service; we only POST to its API."""
|
|
60
|
+
url = a.endpoint.rstrip("/") + "/prompt"
|
|
61
|
+
curl = ["curl", "-s", "-X", "POST", url, "-H", "Content-Type: application/json",
|
|
62
|
+
"-d", f"@{a.workflow}"]
|
|
63
|
+
print(f"# arm's-length: the host runs ComfyUI (GPL) + supplies the GPU and license-cleared weights.")
|
|
64
|
+
print(f"# the workflow JSON must be wrapped as {{\"prompt\": <graph>}}; outputs are fetched from /history.")
|
|
65
|
+
print(" ".join(shlex.quote(x) for x in curl))
|
|
66
|
+
if not a.run:
|
|
67
|
+
return 0
|
|
68
|
+
try:
|
|
69
|
+
import urllib.request
|
|
70
|
+
with open(a.workflow, "rb") as fh:
|
|
71
|
+
body = fh.read()
|
|
72
|
+
req = urllib.request.Request(url, data=body, method="POST",
|
|
73
|
+
headers={"Content-Type": "application/json"})
|
|
74
|
+
with urllib.request.urlopen(req, timeout=30) as resp:
|
|
75
|
+
print(resp.read().decode("utf-8", "replace")[:2000])
|
|
76
|
+
return 0
|
|
77
|
+
except Exception as e: # noqa: BLE001
|
|
78
|
+
sys.stderr.write(f"ComfyUI submit failed (is the endpoint running?): {e}\n")
|
|
79
|
+
return 5
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
def c_presets(a):
|
|
83
|
+
print("Commercial-safe AI-media subset (generate-only; you install the tools+weights):")
|
|
84
|
+
print(" rmbg background removal - rembg (MIT) / backgroundremover (MIT)")
|
|
85
|
+
print(" upscale Real-ESRGAN via realesrgan-ncnn-vulkan (BSD); never Upscayl (AGPL)")
|
|
86
|
+
print(" comfy submit a workflow to a host-run ComfyUI endpoint (GPL, arm's-length)")
|
|
87
|
+
print("\nHard rule: code license != model-weight license - verify each weight's terms")
|
|
88
|
+
print("for commercial use. Heavy runs (downloads/GPU) cost time/resources: see")
|
|
89
|
+
print("references/ai-media-generation.md and state cost before a batch.")
|
|
90
|
+
return 0
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
def main(argv=None):
|
|
94
|
+
ap = argparse.ArgumentParser(prog="maggie_ai_media", description=__doc__,
|
|
95
|
+
formatter_class=argparse.RawDescriptionHelpFormatter)
|
|
96
|
+
ap.add_argument("--run", action="store_true", help="execute (needs the tool on PATH); default prints only")
|
|
97
|
+
sub = ap.add_subparsers(dest="cmd", required=True)
|
|
98
|
+
|
|
99
|
+
r = sub.add_parser("rmbg", help="remove background (rembg / backgroundremover)")
|
|
100
|
+
r.add_argument("--input", required=True); r.add_argument("--output", required=True)
|
|
101
|
+
r.add_argument("--engine", choices=["rembg", "backgroundremover"], default="rembg")
|
|
102
|
+
r.add_argument("--model", default="u2net"); r.set_defaults(fn=c_rmbg)
|
|
103
|
+
|
|
104
|
+
u = sub.add_parser("upscale", help="upscale (Real-ESRGAN ncnn-vulkan)")
|
|
105
|
+
u.add_argument("--input", required=True); u.add_argument("--output", required=True)
|
|
106
|
+
u.add_argument("--model", default="realesrgan-x4plus"); u.add_argument("--scale", type=int, default=4)
|
|
107
|
+
u.set_defaults(fn=c_upscale)
|
|
108
|
+
|
|
109
|
+
c = sub.add_parser("comfy", help="submit a workflow to a ComfyUI endpoint (arm's-length)")
|
|
110
|
+
c.add_argument("--endpoint", required=True, help="e.g. http://127.0.0.1:8188")
|
|
111
|
+
c.add_argument("--workflow", required=True, help="workflow JSON file ({\"prompt\": <graph>})")
|
|
112
|
+
c.set_defaults(fn=c_comfy)
|
|
113
|
+
|
|
114
|
+
sub.add_parser("presets", help="list the safe subset + the license rule").set_defaults(fn=c_presets)
|
|
115
|
+
|
|
116
|
+
a = ap.parse_args(argv)
|
|
117
|
+
raise SystemExit(a.fn(a))
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
if __name__ == "__main__":
|
|
121
|
+
main()
|