cue-ai 0.9.2 → 0.9.4
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/CHANGELOG.md +4 -3
- package/README.md +154 -394
- package/bin/cue-learnings +30 -4
- package/bin/cue-review-progress +0 -0
- package/bin/cue-review-watch +0 -0
- package/dist/cue.js +4328 -3108
- package/package.json +1 -1
- package/plugins/cue/commands/cue-switch.md +1 -1
- package/plugins/cue/commands/cue.md +1 -1
- package/profiles/backend/profile.yaml +4 -0
- package/profiles/browser/profile.yaml +4 -0
- package/profiles/career/profile.yaml +2 -13
- package/profiles/commerce/profile.yaml +0 -2
- package/profiles/coolify/profile.yaml +0 -1
- package/profiles/core/profile.yaml +78 -11
- package/profiles/dash-merge-test/profile.yaml +6 -1
- package/profiles/designer/profile.yaml +9 -1
- package/profiles/dropshipping/profile.yaml +69 -0
- package/profiles/frontend/profile.yaml +4 -0
- package/profiles/google-ads/profile.yaml +34 -0
- package/profiles/google-analytics/profile.yaml +34 -0
- package/profiles/google-drive/profile.yaml +34 -0
- package/profiles/gstack/profile.yaml +117 -29
- package/profiles/marketing/profile.yaml +0 -1
- package/profiles/media/README.md +70 -0
- package/profiles/media/profile.yaml +104 -0
- package/profiles/nano-banana/profile.yaml +52 -0
- package/profiles/ops/profile.yaml +1 -2
- package/profiles/secops/profile.yaml +3 -0
- package/profiles/skill-writer/profile.yaml +15 -0
- package/profiles/video/profile.yaml +3 -0
- package/profiles/web-frontend-base/profile.yaml +6 -0
- package/profiles/webshop/profile.yaml +0 -1
- package/profiles/webshop-google/profile.yaml +1 -0
- package/profiles/x-growth-bot/profile.yaml +2 -0
- package/resources/icons/generate-icons.py +2 -128
- package/resources/mcps/configs/claude.sanitized.json +88 -20
- package/resources/mcps/configs/claude_runtime.sanitized.json +40 -1
- package/resources/mcps/configs/codex.sanitized.json +29 -0
- package/resources/skills/skills/career/job-hunter/LICENSE +21 -0
- package/resources/skills/skills/career/job-hunter/README.md +323 -0
- package/resources/skills/skills/career/job-hunter/SKILL.md +91 -0
- package/resources/skills/skills/career/job-hunter/agents/README.md +96 -0
- package/resources/skills/skills/career/job-hunter/agents/apply-assessment-prep.md +195 -0
- package/resources/skills/skills/career/job-hunter/agents/apply-ats-scan.md +155 -0
- package/resources/skills/skills/career/job-hunter/agents/apply-bias-audit.md +224 -0
- package/resources/skills/skills/career/job-hunter/agents/apply-cover-letter.md +69 -0
- package/resources/skills/skills/career/job-hunter/agents/apply-decode-jd.md +117 -0
- package/resources/skills/skills/career/job-hunter/agents/apply-fit-score.md +183 -0
- package/resources/skills/skills/career/job-hunter/agents/apply-linkedin-audit.md +74 -0
- package/resources/skills/skills/career/job-hunter/agents/apply-linkedin-scrape.md +255 -0
- package/resources/skills/skills/career/job-hunter/agents/apply-portfolio-brief.md +123 -0
- package/resources/skills/skills/career/job-hunter/agents/apply-reality-check.md +164 -0
- package/resources/skills/skills/career/job-hunter/agents/apply-reference-prep.md +150 -0
- package/resources/skills/skills/career/job-hunter/agents/apply-rejection-analysis.md +172 -0
- package/resources/skills/skills/career/job-hunter/agents/apply-resume.md +70 -0
- package/resources/skills/skills/career/job-hunter/agents/apply-skills-gap-filler.md +109 -0
- package/resources/skills/skills/career/job-hunter/agents/career-internal.md +94 -0
- package/resources/skills/skills/career/job-hunter/agents/career-linkedin-content.md +173 -0
- package/resources/skills/skills/career/job-hunter/agents/career-linkedin-scanner.md +262 -0
- package/resources/skills/skills/career/job-hunter/agents/career-network-message.md +108 -0
- package/resources/skills/skills/career/job-hunter/agents/career-promote.md +102 -0
- package/resources/skills/skills/career/job-hunter/agents/career-review.md +71 -0
- package/resources/skills/skills/career/job-hunter/agents/interview-debrief.md +117 -0
- package/resources/skills/skills/career/job-hunter/agents/interview-mock.md +171 -0
- package/resources/skills/skills/career/job-hunter/agents/interview-panel-decoder.md +152 -0
- package/resources/skills/skills/career/job-hunter/agents/interview-prep.md +184 -0
- package/resources/skills/skills/career/job-hunter/agents/interview-question-bank.md +133 -0
- package/resources/skills/skills/career/job-hunter/agents/interview-research.md +148 -0
- package/resources/skills/skills/career/job-hunter/agents/offer-compare.md +117 -0
- package/resources/skills/skills/career/job-hunter/agents/offer-counteroffer.md +144 -0
- package/resources/skills/skills/career/job-hunter/agents/offer-deadline-manager.md +148 -0
- package/resources/skills/skills/career/job-hunter/agents/offer-negotiate.md +126 -0
- package/resources/skills/skills/career/job-hunter/agents/offer-schedule.md +99 -0
- package/resources/skills/skills/career/job-hunter/agents/offer-thankyou.md +80 -0
- package/resources/skills/skills/career/job-hunter/agents/search-company-research.md +146 -0
- package/resources/skills/skills/career/job-hunter/agents/search-follow-up.md +129 -0
- package/resources/skills/skills/career/job-hunter/agents/search-ghost-job-detector.md +152 -0
- package/resources/skills/skills/career/job-hunter/agents/search-inbox-scan.md +193 -0
- package/resources/skills/skills/career/job-hunter/agents/search-interview-scorecard.md +164 -0
- package/resources/skills/skills/career/job-hunter/agents/search-jobs.md +149 -0
- package/resources/skills/skills/career/job-hunter/agents/search-momentum-check.md +194 -0
- package/resources/skills/skills/career/job-hunter/agents/search-outreach.md +85 -0
- package/resources/skills/skills/career/job-hunter/agents/search-referral-finder.md +124 -0
- package/resources/skills/skills/career/job-hunter/agents/search-salary.md +96 -0
- package/resources/skills/skills/career/job-hunter/agents/search-send-email.md +109 -0
- package/resources/skills/skills/career/job-hunter/agents/search-tracker-update.md +127 -0
- package/resources/skills/skills/career/job-hunter/inputs/README.md +26 -0
- package/resources/skills/skills/career/job-hunter/inputs/apply-linkedin-url.txt +8 -0
- package/resources/skills/skills/career/job-hunter/inputs/interview-context.md +24 -0
- package/resources/skills/skills/career/job-hunter/inputs/job-description.md +20 -0
- package/resources/skills/skills/career/job-hunter/inputs/job-search-criteria.md +36 -0
- package/resources/skills/skills/career/job-hunter/inputs/my-linkedin.md +24 -0
- package/resources/skills/skills/career/job-hunter/inputs/my-resume.md +28 -0
- package/resources/skills/skills/career/job-hunter/inputs/search-outreach-target.md +24 -0
- package/resources/skills/skills/career/job-hunter/rules/README.md +37 -0
- package/resources/skills/skills/career/job-hunter/rules/writing-rules.md +81 -0
- package/resources/skills/skills/design/banana/SKILL.md +375 -0
- package/resources/skills/skills/design/banana/references/cost-tracking.md +47 -0
- package/resources/skills/skills/design/banana/references/gemini-models.md +236 -0
- package/resources/skills/skills/design/banana/references/mcp-tools.md +145 -0
- package/resources/skills/skills/design/banana/references/post-processing.md +192 -0
- package/resources/skills/skills/design/banana/references/presets.md +69 -0
- package/resources/skills/skills/design/banana/references/prompt-engineering.md +481 -0
- package/resources/skills/skills/design/banana/scripts/batch.py +97 -0
- package/resources/skills/skills/design/banana/scripts/cost_tracker.py +191 -0
- package/resources/skills/skills/design/banana/scripts/edit.py +159 -0
- package/resources/skills/skills/design/banana/scripts/generate.py +168 -0
- package/resources/skills/skills/design/banana/scripts/presets.py +154 -0
- package/resources/skills/skills/design/banana/scripts/setup_mcp.py +151 -0
- package/resources/skills/skills/design/banana/scripts/validate_setup.py +133 -0
- package/resources/skills/skills/gstack/ship/SKILL.md +13 -0
- package/resources/skills/skills/media/3d-logo-animation/SKILL.md +59 -0
- package/resources/skills/skills/media/action-figure-generator/SKILL.md +48 -0
- package/resources/skills/skills/media/ad-creative/SKILL.md +79 -0
- package/resources/skills/skills/media/ai-clipping/SKILL.md +194 -0
- package/resources/skills/skills/media/ai-clipping/scripts/run-ai-clipping.sh +200 -0
- package/resources/skills/skills/media/ai-fight-scene/SKILL.md +132 -0
- package/resources/skills/skills/media/amazon-product-listing/SKILL.md +68 -0
- package/resources/skills/skills/media/animal-video-generator/SKILL.md +59 -0
- package/resources/skills/skills/media/award-ceremony-video/SKILL.md +87 -0
- package/resources/skills/skills/media/blog-header/SKILL.md +61 -0
- package/resources/skills/skills/media/brand-kit/SKILL.md +72 -0
- package/resources/skills/skills/media/brochures/SKILL.md +65 -0
- package/resources/skills/skills/media/cartoon-dance-animation/SKILL.md +62 -0
- package/resources/skills/skills/media/character-story-video/SKILL.md +84 -0
- package/resources/skills/skills/media/chibi-collage-effect/SKILL.md +63 -0
- package/resources/skills/skills/media/cinema-director/SKILL.md +93 -0
- package/resources/skills/skills/media/cinema-director/scripts/generate-film.sh +78 -0
- package/resources/skills/skills/media/color-analysis-board/SKILL.md +71 -0
- package/resources/skills/skills/media/core-edit/SKILL.md +48 -0
- package/resources/skills/skills/media/core-edit/edit-image.sh +54 -0
- package/resources/skills/skills/media/core-edit/enhance-image.sh +191 -0
- package/resources/skills/skills/media/core-edit/lipsync.sh +144 -0
- package/resources/skills/skills/media/core-edit/video-effects.sh +193 -0
- package/resources/skills/skills/media/core-media/SKILL.md +49 -0
- package/resources/skills/skills/media/core-media/create-music.sh +169 -0
- package/resources/skills/skills/media/core-media/generate-image.sh +161 -0
- package/resources/skills/skills/media/core-media/generate-video.sh +137 -0
- package/resources/skills/skills/media/core-media/image-to-video.sh +228 -0
- package/resources/skills/skills/media/core-media/schema_data.json +18708 -0
- package/resources/skills/skills/media/core-media/upload.sh +41 -0
- package/resources/skills/skills/media/core-platform/SKILL.md +41 -0
- package/resources/skills/skills/media/core-platform/check-result.sh +37 -0
- package/resources/skills/skills/media/core-platform/setup.sh +31 -0
- package/resources/skills/skills/media/couple-grid-creator/SKILL.md +47 -0
- package/resources/skills/skills/media/design-guide/SKILL.md +73 -0
- package/resources/skills/skills/media/drone-style-video/SKILL.md +61 -0
- package/resources/skills/skills/media/fashion-try-on/SKILL.md +61 -0
- package/resources/skills/skills/media/floor-plan-rendering/SKILL.md +56 -0
- package/resources/skills/skills/media/freeze-effect-video/SKILL.md +100 -0
- package/resources/skills/skills/media/giant-product-showcase/SKILL.md +61 -0
- package/resources/skills/skills/media/instagram-post/SKILL.md +58 -0
- package/resources/skills/skills/media/interior-design/SKILL.md +61 -0
- package/resources/skills/skills/media/interior-design-visualizer/SKILL.md +57 -0
- package/resources/skills/skills/media/jewelry-product-video/SKILL.md +61 -0
- package/resources/skills/skills/media/kdenlive/SKILL.md +106 -0
- package/resources/skills/skills/media/kdenlive/scripts/assemble.sh +57 -0
- package/resources/skills/skills/media/kdenlive/scripts/common.sh +30 -0
- package/resources/skills/skills/media/kdenlive/scripts/inspect.sh +19 -0
- package/resources/skills/skills/media/kdenlive/scripts/reframe.sh +22 -0
- package/resources/skills/skills/media/kdenlive/scripts/render.sh +16 -0
- package/resources/skills/skills/media/kdenlive/scripts/title-card.sh +25 -0
- package/resources/skills/skills/media/keyboard-art-maker/SKILL.md +44 -0
- package/resources/skills/skills/media/logo-branding/SKILL.md +70 -0
- package/resources/skills/skills/media/logo-creator/SKILL.md +80 -0
- package/resources/skills/skills/media/logo-creator/scripts/create-logo.sh +38 -0
- package/resources/skills/skills/media/logo-generator/SKILL.md +56 -0
- package/resources/skills/skills/media/multi-angle-reshoot/SKILL.md +70 -0
- package/resources/skills/skills/media/multi-angle-shots/SKILL.md +73 -0
- package/resources/skills/skills/media/music-video/SKILL.md +61 -0
- package/resources/skills/skills/media/nano-banana/SKILL.md +80 -0
- package/resources/skills/skills/media/nano-banana/scripts/generate-nano-art.sh +54 -0
- package/resources/skills/skills/media/one-shot-video/SKILL.md +56 -0
- package/resources/skills/skills/media/photo-pack-generator/SKILL.md +205 -0
- package/resources/skills/skills/media/photo-pack-generator/scripts/generate-pack.sh +241 -0
- package/resources/skills/skills/media/product-ad-cinematic/SKILL.md +78 -0
- package/resources/skills/skills/media/product-campaign/SKILL.md +76 -0
- package/resources/skills/skills/media/product-showcase-video/SKILL.md +60 -0
- package/resources/skills/skills/media/product-video-ad-maker/SKILL.md +59 -0
- package/resources/skills/skills/media/rednote-cover/SKILL.md +57 -0
- package/resources/skills/skills/media/seedance-2/SKILL.md +632 -0
- package/resources/skills/skills/media/seedance-2/scripts/generate-seedance.sh +701 -0
- package/resources/skills/skills/media/selfie-with-celebrities/SKILL.md +64 -0
- package/resources/skills/skills/media/social-media-video/SKILL.md +277 -0
- package/resources/skills/skills/media/social-media-video/scripts/run-social-video.sh +316 -0
- package/resources/skills/skills/media/social-pack/SKILL.md +58 -0
- package/resources/skills/skills/media/storyboard/SKILL.md +57 -0
- package/resources/skills/skills/media/storyboard-to-cooking-video/SKILL.md +143 -0
- package/resources/skills/skills/media/talking-baby-video/SKILL.md +57 -0
- package/resources/skills/skills/media/ugc-ads-workflow/SKILL.md +70 -0
- package/resources/skills/skills/media/ugc-lifestyle-try-on/SKILL.md +65 -0
- package/resources/skills/skills/media/ugc-video-factory/SKILL.md +134 -0
- package/resources/skills/skills/media/ui-design/SKILL.md +81 -0
- package/resources/skills/skills/media/ui-design/scripts/generate-mockup.sh +49 -0
- package/resources/skills/skills/media/url-to-design/SKILL.md +61 -0
- package/resources/skills/skills/media/workflow/SKILL.md +197 -0
- package/resources/skills/skills/media/workflow/scripts/discover-workflow.sh +18 -0
- package/resources/skills/skills/media/workflow/scripts/generate-workflow.sh +33 -0
- package/resources/skills/skills/media/workflow/scripts/interactive-run.sh +16 -0
- package/resources/skills/skills/media/workflow/scripts/list-workflows.sh +20 -0
- package/resources/skills/skills/media/workflow/scripts/run-workflow.sh +34 -0
- package/resources/skills/skills/media/youtube-shorts/SKILL.md +173 -0
- package/resources/skills/skills/media/youtube-shorts/scripts/run-youtube-shorts.sh +141 -0
- package/resources/skills/skills/media/youtube-thumbnail/SKILL.md +66 -0
- package/resources/skills/skills/meta/cue-developer/references/architecture.md +2 -2
- package/resources/skills/skills/meta/cue-usage/SKILL.md +1 -1
- package/resources/skills/skills/meta/profile-fit-monitor/SKILL.md +2 -2
- package/resources/skills/skills/meta/profile-optimizer/SKILL.md +1 -1
- package/resources/skills/skills/meta/profile-suggest/SKILL.md +7 -7
- package/resources/skills/skills/meta/profile-summon/SKILL.md +159 -0
- package/resources/skills/skills/meta/profile-summon/evals/evals.json +53 -0
- package/resources/skills/skills/meta/save-profile/SKILL.md +1 -1
- package/resources/skills/skills/meta/skill-reviewer/SKILL.md +3 -0
- package/resources/skills/skills/meta/skill-reviewer/references/tdd-for-skills.md +55 -0
- package/resources/skills/skills/research/find-skills/SKILL.md +1 -1
- package/resources/skills/skills/review/code-review-deep/SKILL.md +20 -0
- package/resources/skills/skills/security/trivy-scan/SKILL.md +139 -0
- package/resources/skills/skills/security/trivy-scan/scripts/ensure-trivy.sh +21 -0
- package/resources/skills/skills/tools/ccusage/SKILL.md +142 -0
- package/src/commands/_index.ts +8 -0
- package/src/commands/ai.ts +2 -2
- package/src/commands/auto-detect.test.ts +74 -0
- package/src/commands/auto-detect.ts +9 -7
- package/src/commands/cli.test.ts +20 -4
- package/src/commands/cli.ts +36 -20
- package/src/commands/create-profile.ts +2 -2
- package/src/commands/debug.ts +2 -2
- package/src/commands/discover.ts +14 -4
- package/src/commands/export-docker.ts +1 -1
- package/src/commands/features-batch1.test.ts +1 -1
- package/src/commands/gates.ts +1 -1
- package/src/commands/import-profile.ts +1 -1
- package/src/commands/init.ts +15 -11
- package/src/commands/install.test.ts +192 -0
- package/src/commands/install.ts +610 -0
- package/src/commands/launch-handoff.e2e.test.ts +33 -1
- package/src/commands/launch.e2e.test.ts +15 -10
- package/src/commands/launch.ts +73 -116
- package/src/commands/materialize.ts +2 -2
- package/src/commands/prune.ts +1 -1
- package/src/commands/security-audit.ts +1 -1
- package/src/commands/shell.ts +7 -7
- package/src/commands/skill-report.ts +1 -1
- package/src/commands/skills.ts +3 -3
- package/src/commands/snapshot.ts +2 -2
- package/src/commands/summon.test.ts +116 -0
- package/src/commands/summon.ts +338 -0
- package/src/commands/trigger-gaps.ts +1 -1
- package/src/commands/use.ts +47 -3
- package/src/commands/watch-live.ts +5 -5
- package/src/commands/watch.ts +8 -8
- package/src/index.ts +2 -0
- package/src/lib/active-sessions.test.ts +3 -3
- package/src/lib/active-sessions.ts +4 -4
- package/src/lib/auto-detect.test.ts +172 -8
- package/src/lib/auto-detect.ts +191 -136
- package/src/lib/codex-persona-parity.test.ts +58 -0
- package/src/lib/companion-detect.test.ts +43 -1
- package/src/lib/companion-detect.ts +35 -0
- package/src/lib/credentials-sync.test.ts +121 -1
- package/src/lib/credentials-sync.ts +95 -1
- package/src/lib/cwd-resolver.test.ts +8 -8
- package/src/lib/cwd-resolver.ts +2 -2
- package/src/lib/dashboard-merge.test.ts +9 -4
- package/src/lib/dashboard-server.ts +1 -1
- package/src/lib/picker.test.ts +1 -1
- package/src/lib/picker.ts +5 -5
- package/src/lib/profile-merge.test.ts +8 -0
- package/src/lib/profile-names.test.ts +3 -3
- package/src/lib/runtime-install.ts +166 -0
- package/src/lib/runtime-materializer.test.ts +137 -0
- package/src/lib/runtime-materializer.ts +105 -2
- package/src/lib/skill-router.test.ts +38 -0
- package/src/lib/skill-router.ts +65 -4
- package/profiles/eu-tender-research/README.md +0 -48
- package/profiles/eu-tender-research/logo.png +0 -0
- package/profiles/eu-tender-research/profile.yaml +0 -108
|
@@ -17,145 +17,19 @@ Sources:
|
|
|
17
17
|
|
|
18
18
|
import io
|
|
19
19
|
import os
|
|
20
|
-
import re
|
|
21
|
-
import shutil
|
|
22
|
-
import subprocess
|
|
23
20
|
import sys
|
|
24
|
-
import tempfile
|
|
25
21
|
import urllib.request
|
|
26
22
|
|
|
27
23
|
try:
|
|
24
|
+
import cairosvg
|
|
28
25
|
from PIL import Image
|
|
29
26
|
except ImportError:
|
|
30
27
|
print("Missing deps. Run with: uv run --with Pillow --with cairosvg python3 generate-icons.py")
|
|
31
28
|
sys.exit(1)
|
|
32
29
|
|
|
33
|
-
# cairosvg is the primary rasterizer but optional: if it (or its native
|
|
34
|
-
# libcairo) is unavailable, rasterize() falls back to a headless browser,
|
|
35
|
-
# then ImageMagick. So a broken libcairo no longer blocks icon generation.
|
|
36
|
-
try:
|
|
37
|
-
import cairosvg
|
|
38
|
-
except Exception: # ImportError, or OSError when libcairo can't be loaded
|
|
39
|
-
cairosvg = None
|
|
40
|
-
|
|
41
30
|
SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
|
|
42
31
|
SIZE = 64
|
|
43
32
|
|
|
44
|
-
|
|
45
|
-
def _sized_svg(svg_content: str, size: int) -> str:
|
|
46
|
-
"""Force explicit width/height on the root <svg> so browsers/IM render at `size`."""
|
|
47
|
-
# Drop any existing width/height on the opening tag, then inject our own.
|
|
48
|
-
def fix(m: re.Match) -> str:
|
|
49
|
-
tag = re.sub(r'\s(width|height)="[^"]*"', "", m.group(0))
|
|
50
|
-
return tag[:-1] + f' width="{size}" height="{size}">'
|
|
51
|
-
|
|
52
|
-
return re.sub(r"<svg\b[^>]*>", fix, svg_content, count=1)
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
def _rasterize_rsvg(svg_content: str, size: int) -> bytes | None:
|
|
56
|
-
"""Render via librsvg's rsvg-convert. Fast, accurate, no browser needed."""
|
|
57
|
-
rsvg = shutil.which("rsvg-convert")
|
|
58
|
-
if not rsvg:
|
|
59
|
-
return None
|
|
60
|
-
try:
|
|
61
|
-
res = subprocess.run(
|
|
62
|
-
[rsvg, "-w", str(size), "-h", str(size), "-f", "png"],
|
|
63
|
-
input=svg_content.encode(),
|
|
64
|
-
capture_output=True,
|
|
65
|
-
timeout=30,
|
|
66
|
-
check=False,
|
|
67
|
-
)
|
|
68
|
-
except Exception:
|
|
69
|
-
return None
|
|
70
|
-
return res.stdout if res.returncode == 0 and res.stdout else None
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
def _rasterize_chrome(svg_content: str, size: int) -> bytes | None:
|
|
74
|
-
"""Render via headless Chrome. Returns PNG bytes or None if unavailable."""
|
|
75
|
-
chrome = (
|
|
76
|
-
shutil.which("google-chrome")
|
|
77
|
-
or shutil.which("chromium")
|
|
78
|
-
or shutil.which("chromium-browser")
|
|
79
|
-
)
|
|
80
|
-
if not chrome:
|
|
81
|
-
return None
|
|
82
|
-
with tempfile.TemporaryDirectory() as tmp:
|
|
83
|
-
svg_path = os.path.join(tmp, "icon.svg")
|
|
84
|
-
out_path = os.path.join(tmp, "icon.png")
|
|
85
|
-
with open(svg_path, "w") as f:
|
|
86
|
-
f.write(_sized_svg(svg_content, size))
|
|
87
|
-
# Isolated --user-data-dir avoids clashing with a running browser's
|
|
88
|
-
# profile lock. Transparent background via RRGGBBAA = 00000000.
|
|
89
|
-
cmd = [
|
|
90
|
-
chrome,
|
|
91
|
-
"--headless=new",
|
|
92
|
-
"--disable-gpu",
|
|
93
|
-
"--hide-scrollbars",
|
|
94
|
-
"--force-device-scale-factor=1",
|
|
95
|
-
f"--user-data-dir={tmp}/profile",
|
|
96
|
-
"--default-background-color=00000000",
|
|
97
|
-
f"--window-size={size},{size}",
|
|
98
|
-
f"--screenshot={out_path}",
|
|
99
|
-
svg_path,
|
|
100
|
-
]
|
|
101
|
-
try:
|
|
102
|
-
subprocess.run(cmd, capture_output=True, timeout=30, check=False)
|
|
103
|
-
except Exception:
|
|
104
|
-
return None
|
|
105
|
-
if os.path.exists(out_path) and os.path.getsize(out_path) > 0:
|
|
106
|
-
with open(out_path, "rb") as f:
|
|
107
|
-
return f.read()
|
|
108
|
-
return None
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
def _rasterize_imagemagick(svg_content: str, size: int) -> bytes | None:
|
|
112
|
-
"""Last resort: ImageMagick. Unreliable without an rsvg-convert delegate."""
|
|
113
|
-
magick = shutil.which("magick") or shutil.which("convert")
|
|
114
|
-
if not magick:
|
|
115
|
-
return None
|
|
116
|
-
base = [magick] if magick.endswith("magick") else []
|
|
117
|
-
with tempfile.TemporaryDirectory() as tmp:
|
|
118
|
-
svg_path = os.path.join(tmp, "icon.svg")
|
|
119
|
-
out_path = os.path.join(tmp, "icon.png")
|
|
120
|
-
with open(svg_path, "w") as f:
|
|
121
|
-
f.write(_sized_svg(svg_content, size))
|
|
122
|
-
cmd = base + [
|
|
123
|
-
"convert" if not base else "",
|
|
124
|
-
"-background", "none",
|
|
125
|
-
"-density", "384",
|
|
126
|
-
svg_path,
|
|
127
|
-
"-resize", f"{size}x{size}",
|
|
128
|
-
out_path,
|
|
129
|
-
]
|
|
130
|
-
cmd = [c for c in cmd if c != ""]
|
|
131
|
-
try:
|
|
132
|
-
subprocess.run(cmd, capture_output=True, timeout=30, check=False)
|
|
133
|
-
except Exception:
|
|
134
|
-
return None
|
|
135
|
-
if os.path.exists(out_path) and os.path.getsize(out_path) > 0:
|
|
136
|
-
with open(out_path, "rb") as f:
|
|
137
|
-
return f.read()
|
|
138
|
-
return None
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
def rasterize(svg_content: str, size: int) -> bytes:
|
|
142
|
-
"""SVG -> PNG bytes via cairosvg, then headless Chrome, then ImageMagick."""
|
|
143
|
-
if cairosvg is not None:
|
|
144
|
-
try:
|
|
145
|
-
return cairosvg.svg2png(
|
|
146
|
-
bytestring=svg_content.encode(), output_width=size, output_height=size
|
|
147
|
-
)
|
|
148
|
-
except Exception as e: # broken libcairo at call time, malformed SVG, etc.
|
|
149
|
-
print(f" (cairosvg failed: {e}; trying fallback)", end="")
|
|
150
|
-
for fn in (_rasterize_rsvg, _rasterize_chrome, _rasterize_imagemagick):
|
|
151
|
-
png = fn(svg_content, size)
|
|
152
|
-
if png:
|
|
153
|
-
return png
|
|
154
|
-
raise RuntimeError(
|
|
155
|
-
"No working SVG rasterizer. Install cairosvg (uv run --with cairosvg), "
|
|
156
|
-
"or a headless Chrome/Chromium, or ImageMagick with an SVG delegate."
|
|
157
|
-
)
|
|
158
|
-
|
|
159
33
|
# Brand icon definitions: name -> {svg_slug, color, bg}
|
|
160
34
|
# svg_slug: name on simpleicons.org (lowercase, no spaces)
|
|
161
35
|
# color: fill color for the SVG path (hex without #)
|
|
@@ -306,7 +180,7 @@ def render_icon(svg_content: str, color: str | None, bg: str | None) -> Image.Im
|
|
|
306
180
|
f'xmlns="http://www.w3.org/2000/svg"><rect width="24" height="24" fill="#{bg}"/>',
|
|
307
181
|
)
|
|
308
182
|
|
|
309
|
-
png_data =
|
|
183
|
+
png_data = cairosvg.svg2png(bytestring=svg_content.encode(), output_width=SIZE, output_height=SIZE)
|
|
310
184
|
img = Image.open(io.BytesIO(png_data)).convert("RGBA")
|
|
311
185
|
return img
|
|
312
186
|
|
|
@@ -1,18 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"server_key": "mcpServers",
|
|
3
3
|
"servers": {
|
|
4
|
-
"
|
|
5
|
-
"type": "http",
|
|
6
|
-
"url": "https://gateway.pipeworx.io/ted-eu/mcp"
|
|
7
|
-
},
|
|
8
|
-
"apify-ted-eu": {
|
|
4
|
+
"buywhere": {
|
|
9
5
|
"command": "npx",
|
|
10
6
|
"args": [
|
|
11
|
-
"
|
|
12
|
-
"
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
7
|
+
"-y",
|
|
8
|
+
"@buywhere/mcp-server"
|
|
9
|
+
],
|
|
10
|
+
"env": {
|
|
11
|
+
"BUYWHERE_API_KEY": "${BUYWHERE_API_KEY}"
|
|
12
|
+
}
|
|
16
13
|
},
|
|
17
14
|
"strapi-docs": {
|
|
18
15
|
"type": "http",
|
|
@@ -27,43 +24,64 @@
|
|
|
27
24
|
},
|
|
28
25
|
"financial-datasets": {
|
|
29
26
|
"command": "/home/deadpool/.local/bin/uv",
|
|
30
|
-
"args": [
|
|
27
|
+
"args": [
|
|
28
|
+
"--directory",
|
|
29
|
+
"/home/deadpool/.config/cue/mcp-servers/financial-datasets",
|
|
30
|
+
"run",
|
|
31
|
+
"server.py"
|
|
32
|
+
],
|
|
31
33
|
"env": {
|
|
32
34
|
"FINANCIAL_DATASETS_API_KEY": "${FINANCIAL_DATASETS_API_KEY}"
|
|
33
35
|
}
|
|
34
36
|
},
|
|
35
37
|
"postgres-pro": {
|
|
36
38
|
"command": "uvx",
|
|
37
|
-
"args": [
|
|
39
|
+
"args": [
|
|
40
|
+
"postgres-mcp",
|
|
41
|
+
"--access-mode=restricted"
|
|
42
|
+
],
|
|
38
43
|
"env": {
|
|
39
44
|
"DATABASE_URI": "${DATABASE_URI}"
|
|
40
45
|
}
|
|
41
46
|
},
|
|
42
47
|
"supabase": {
|
|
43
48
|
"command": "npx",
|
|
44
|
-
"args": [
|
|
49
|
+
"args": [
|
|
50
|
+
"-y",
|
|
51
|
+
"@supabase/mcp-server-supabase@latest",
|
|
52
|
+
"--read-only"
|
|
53
|
+
],
|
|
45
54
|
"env": {
|
|
46
55
|
"SUPABASE_ACCESS_TOKEN": "${SUPABASE_ACCESS_TOKEN}"
|
|
47
56
|
}
|
|
48
57
|
},
|
|
49
58
|
"github": {
|
|
50
59
|
"command": "docker",
|
|
51
|
-
"args": [
|
|
60
|
+
"args": [
|
|
61
|
+
"run",
|
|
62
|
+
"-i",
|
|
63
|
+
"--rm",
|
|
64
|
+
"-e",
|
|
65
|
+
"GITHUB_PERSONAL_ACCESS_TOKEN",
|
|
66
|
+
"ghcr.io/github/github-mcp-server"
|
|
67
|
+
],
|
|
52
68
|
"env": {
|
|
53
69
|
"GITHUB_PERSONAL_ACCESS_TOKEN": "${GITHUB_PERSONAL_ACCESS_TOKEN}"
|
|
54
70
|
}
|
|
55
71
|
},
|
|
56
72
|
"playwright": {
|
|
57
73
|
"command": "npx",
|
|
58
|
-
"args": [
|
|
74
|
+
"args": [
|
|
75
|
+
"-y",
|
|
76
|
+
"@playwright/mcp@latest"
|
|
77
|
+
]
|
|
59
78
|
},
|
|
60
79
|
"context7": {
|
|
61
80
|
"command": "npx",
|
|
62
|
-
"args": [
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
"args": ["serve", "--mcp"]
|
|
81
|
+
"args": [
|
|
82
|
+
"-y",
|
|
83
|
+
"@upstash/context7-mcp"
|
|
84
|
+
]
|
|
67
85
|
},
|
|
68
86
|
"kroschuorder": {
|
|
69
87
|
"args": [
|
|
@@ -93,6 +111,17 @@
|
|
|
93
111
|
"gbrain": {
|
|
94
112
|
"command": "/home/deadpool/.local/bin/gbrain-mcp-wrapper.sh"
|
|
95
113
|
},
|
|
114
|
+
"figma": {
|
|
115
|
+
"command": "npx",
|
|
116
|
+
"args": [
|
|
117
|
+
"-y",
|
|
118
|
+
"figma-developer-mcp",
|
|
119
|
+
"--stdio"
|
|
120
|
+
],
|
|
121
|
+
"env": {
|
|
122
|
+
"FIGMA_API_KEY": "${FIGMA_API_KEY}"
|
|
123
|
+
}
|
|
124
|
+
},
|
|
96
125
|
"secret-mcp": {
|
|
97
126
|
"command": "bash",
|
|
98
127
|
"args": [
|
|
@@ -114,6 +143,12 @@
|
|
|
114
143
|
"X_ACCESS_TOKEN_SECRET": "${X_ACCESS_TOKEN_SECRET}"
|
|
115
144
|
}
|
|
116
145
|
},
|
|
146
|
+
"xbot": {
|
|
147
|
+
"command": "bash",
|
|
148
|
+
"args": [
|
|
149
|
+
"${HOME}/Documents/x-growth-bot/run-mcp.sh"
|
|
150
|
+
]
|
|
151
|
+
},
|
|
117
152
|
"trendradar": {
|
|
118
153
|
"command": "uvx",
|
|
119
154
|
"args": [
|
|
@@ -240,6 +275,39 @@
|
|
|
240
275
|
"args": [
|
|
241
276
|
"awslabs.aws-documentation-mcp-server@latest"
|
|
242
277
|
]
|
|
278
|
+
},
|
|
279
|
+
"nanobanana-mcp": {
|
|
280
|
+
"command": "npx",
|
|
281
|
+
"args": [
|
|
282
|
+
"-y",
|
|
283
|
+
"@ycse/nanobanana-mcp"
|
|
284
|
+
],
|
|
285
|
+
"env": {
|
|
286
|
+
"GOOGLE_AI_API_KEY": "${GOOGLE_AI_API_KEY}",
|
|
287
|
+
"NANOBANANA_MODEL": "gemini-3.1-flash-image-preview"
|
|
288
|
+
}
|
|
289
|
+
},
|
|
290
|
+
"fetch": {
|
|
291
|
+
"command": "npx",
|
|
292
|
+
"args": [
|
|
293
|
+
"-y",
|
|
294
|
+
"@modelcontextprotocol/server-fetch"
|
|
295
|
+
]
|
|
296
|
+
},
|
|
297
|
+
"memory": {
|
|
298
|
+
"command": "npx",
|
|
299
|
+
"args": [
|
|
300
|
+
"-y",
|
|
301
|
+
"@modelcontextprotocol/server-memory"
|
|
302
|
+
]
|
|
303
|
+
},
|
|
304
|
+
"filesystem": {
|
|
305
|
+
"command": "npx",
|
|
306
|
+
"args": [
|
|
307
|
+
"-y",
|
|
308
|
+
"@modelcontextprotocol/server-filesystem",
|
|
309
|
+
"${HOME}"
|
|
310
|
+
]
|
|
243
311
|
}
|
|
244
312
|
},
|
|
245
313
|
"source": "claude",
|
|
@@ -128,6 +128,12 @@
|
|
|
128
128
|
"X_ACCESS_TOKEN_SECRET": "${X_ACCESS_TOKEN_SECRET}"
|
|
129
129
|
}
|
|
130
130
|
},
|
|
131
|
+
"xbot": {
|
|
132
|
+
"command": "bash",
|
|
133
|
+
"args": [
|
|
134
|
+
"${HOME}/Documents/x-growth-bot/run-mcp.sh"
|
|
135
|
+
]
|
|
136
|
+
},
|
|
131
137
|
"reddit": {
|
|
132
138
|
"command": "npx",
|
|
133
139
|
"args": [
|
|
@@ -174,8 +180,41 @@
|
|
|
174
180
|
"mcp-remote",
|
|
175
181
|
"https://merchantapi.googleapis.com/devdocs/mcp"
|
|
176
182
|
]
|
|
183
|
+
},
|
|
184
|
+
"nanobanana-mcp": {
|
|
185
|
+
"command": "npx",
|
|
186
|
+
"args": [
|
|
187
|
+
"-y",
|
|
188
|
+
"@ycse/nanobanana-mcp"
|
|
189
|
+
],
|
|
190
|
+
"env": {
|
|
191
|
+
"GOOGLE_AI_API_KEY": "${GOOGLE_AI_API_KEY}",
|
|
192
|
+
"NANOBANANA_MODEL": "gemini-3.1-flash-image-preview"
|
|
193
|
+
}
|
|
194
|
+
},
|
|
195
|
+
"fetch": {
|
|
196
|
+
"command": "npx",
|
|
197
|
+
"args": [
|
|
198
|
+
"-y",
|
|
199
|
+
"@modelcontextprotocol/server-fetch"
|
|
200
|
+
]
|
|
201
|
+
},
|
|
202
|
+
"memory": {
|
|
203
|
+
"command": "npx",
|
|
204
|
+
"args": [
|
|
205
|
+
"-y",
|
|
206
|
+
"@modelcontextprotocol/server-memory"
|
|
207
|
+
]
|
|
208
|
+
},
|
|
209
|
+
"filesystem": {
|
|
210
|
+
"command": "npx",
|
|
211
|
+
"args": [
|
|
212
|
+
"-y",
|
|
213
|
+
"@modelcontextprotocol/server-filesystem",
|
|
214
|
+
"${HOME}"
|
|
215
|
+
]
|
|
177
216
|
}
|
|
178
217
|
},
|
|
179
218
|
"source": "claude_runtime",
|
|
180
219
|
"source_path": "~/.claude.json"
|
|
181
|
-
}
|
|
220
|
+
}
|
|
@@ -30,6 +30,13 @@
|
|
|
30
30
|
],
|
|
31
31
|
"command": "npx"
|
|
32
32
|
},
|
|
33
|
+
"xbot": {
|
|
34
|
+
"args": [
|
|
35
|
+
"${HOME}/Documents/x-growth-bot/run-mcp.sh"
|
|
36
|
+
],
|
|
37
|
+
"command": "bash",
|
|
38
|
+
"enabled": false
|
|
39
|
+
},
|
|
33
40
|
"coolify": {
|
|
34
41
|
"args": [
|
|
35
42
|
"-lc",
|
|
@@ -117,6 +124,28 @@
|
|
|
117
124
|
"GOOGLE_APPLICATION_CREDENTIALS": "${GOOGLE_APPLICATION_CREDENTIALS}",
|
|
118
125
|
"GOOGLE_PROJECT_ID": "${GOOGLE_PROJECT_ID}"
|
|
119
126
|
}
|
|
127
|
+
},
|
|
128
|
+
"fetch": {
|
|
129
|
+
"command": "npx",
|
|
130
|
+
"args": [
|
|
131
|
+
"-y",
|
|
132
|
+
"@modelcontextprotocol/server-fetch"
|
|
133
|
+
]
|
|
134
|
+
},
|
|
135
|
+
"memory": {
|
|
136
|
+
"command": "npx",
|
|
137
|
+
"args": [
|
|
138
|
+
"-y",
|
|
139
|
+
"@modelcontextprotocol/server-memory"
|
|
140
|
+
]
|
|
141
|
+
},
|
|
142
|
+
"filesystem": {
|
|
143
|
+
"command": "npx",
|
|
144
|
+
"args": [
|
|
145
|
+
"-y",
|
|
146
|
+
"@modelcontextprotocol/server-filesystem",
|
|
147
|
+
"${HOME}"
|
|
148
|
+
]
|
|
120
149
|
}
|
|
121
150
|
},
|
|
122
151
|
"source": "codex",
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 owlguardco
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|