@better-openclaw/core 1.0.25 → 1.0.26
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/dist/addon-stack.cjs +55 -3
- package/dist/addon-stack.cjs.map +1 -1
- package/dist/addon-stack.d.cts.map +1 -1
- package/dist/addon-stack.d.mts.map +1 -1
- package/dist/addon-stack.mjs +54 -2
- package/dist/addon-stack.mjs.map +1 -1
- package/dist/addon-stack.test.cjs +113 -1
- package/dist/addon-stack.test.cjs.map +1 -1
- package/dist/addon-stack.test.mjs +112 -0
- package/dist/addon-stack.test.mjs.map +1 -1
- package/dist/compose-validation.test.cjs +1 -1
- package/dist/composer.cjs +1 -1
- package/dist/composer.test.cjs +1 -1
- package/dist/deployers/strip-host-ports.cjs +1 -1
- package/dist/generate.cjs +1 -1
- package/dist/generate.test.cjs +1 -1
- package/dist/generators/env.cjs +1 -1
- package/dist/generators/postgres-init.cjs +5 -0
- package/dist/generators/postgres-init.cjs.map +1 -1
- package/dist/generators/postgres-init.d.cts.map +1 -1
- package/dist/generators/postgres-init.d.mts.map +1 -1
- package/dist/generators/postgres-init.mjs +5 -0
- package/dist/generators/postgres-init.mjs.map +1 -1
- package/dist/generators/skills.cjs +1 -1
- package/dist/generators/skills.d.cts.map +1 -1
- package/dist/generators/skills.d.mts.map +1 -1
- package/dist/generators/skills.mjs +141 -0
- package/dist/generators/skills.mjs.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/presets/presets.test.cjs +1 -1
- package/dist/{schema-CKBRu-Rt.d.cts → schema-BQnZrcw8.d.cts} +6 -1
- package/dist/{schema-CKBRu-Rt.d.cts.map → schema-BQnZrcw8.d.cts.map} +1 -1
- package/dist/{schema-Dn-_Jpb6.d.mts → schema-SBpL0bdI.d.mts} +6 -1
- package/dist/{schema-Dn-_Jpb6.d.mts.map → schema-SBpL0bdI.d.mts.map} +1 -1
- package/dist/schema.cjs +11 -2
- package/dist/schema.cjs.map +1 -1
- package/dist/schema.d.cts +1 -1
- package/dist/schema.d.mts +1 -1
- package/dist/schema.mjs +10 -1
- package/dist/schema.mjs.map +1 -1
- package/dist/services/definitions/burnlink.cjs +142 -0
- package/dist/services/definitions/burnlink.cjs.map +1 -0
- package/dist/services/definitions/burnlink.d.cts +7 -0
- package/dist/services/definitions/burnlink.d.cts.map +1 -0
- package/dist/services/definitions/burnlink.d.mts +7 -0
- package/dist/services/definitions/burnlink.d.mts.map +1 -0
- package/dist/services/definitions/burnlink.mjs +141 -0
- package/dist/services/definitions/burnlink.mjs.map +1 -0
- package/dist/services/definitions/hindsight.cjs +130 -0
- package/dist/services/definitions/hindsight.cjs.map +1 -0
- package/dist/services/definitions/hindsight.d.cts +7 -0
- package/dist/services/definitions/hindsight.d.cts.map +1 -0
- package/dist/services/definitions/hindsight.d.mts +7 -0
- package/dist/services/definitions/hindsight.d.mts.map +1 -0
- package/dist/services/definitions/hindsight.mjs +129 -0
- package/dist/services/definitions/hindsight.mjs.map +1 -0
- package/dist/services/definitions/index.cjs +9 -0
- package/dist/services/definitions/index.cjs.map +1 -1
- package/dist/services/definitions/index.d.cts +4 -1
- package/dist/services/definitions/index.d.cts.map +1 -1
- package/dist/services/definitions/index.d.mts +4 -1
- package/dist/services/definitions/index.d.mts.map +1 -1
- package/dist/services/definitions/index.mjs +7 -1
- package/dist/services/definitions/index.mjs.map +1 -1
- package/dist/services/definitions/opensandbox.cjs +149 -0
- package/dist/services/definitions/opensandbox.cjs.map +1 -0
- package/dist/services/definitions/opensandbox.d.cts +7 -0
- package/dist/services/definitions/opensandbox.d.cts.map +1 -0
- package/dist/services/definitions/opensandbox.d.mts +7 -0
- package/dist/services/definitions/opensandbox.d.mts.map +1 -0
- package/dist/services/definitions/opensandbox.mjs +148 -0
- package/dist/services/definitions/opensandbox.mjs.map +1 -0
- package/dist/{skills-BlzpHmpH.cjs → skills-BSF7iNa4.cjs} +142 -1
- package/dist/{skills-BlzpHmpH.cjs.map → skills-BSF7iNa4.cjs.map} +1 -1
- package/dist/types.d.cts +1 -1
- package/dist/types.d.mts +1 -1
- package/dist/validator.cjs +1 -1
- package/package.json +1 -1
- package/src/addon-stack.test.ts +158 -0
- package/src/addon-stack.ts +48 -0
- package/src/generators/postgres-init.ts +2 -0
- package/src/generators/skills.ts +142 -0
- package/src/schema.ts +7 -0
- package/src/services/definitions/burnlink.ts +142 -0
- package/src/services/definitions/hindsight.ts +131 -0
- package/src/services/definitions/index.ts +10 -0
- package/src/services/definitions/opensandbox.ts +156 -0
|
@@ -523,6 +523,147 @@ curl -X POST http://{{STEEL_HOST}}:{{STEEL_PORT}}/v1/scrape \\
|
|
|
523
523
|
- Proxy support and IP rotation
|
|
524
524
|
- Auto CAPTCHA solving
|
|
525
525
|
- Puppeteer/Playwright/Selenium compatible
|
|
526
|
+
`,
|
|
527
|
+
"code-sandbox": `---
|
|
528
|
+
name: code-sandbox
|
|
529
|
+
description: "Execute code safely in an isolated OpenSandbox container"
|
|
530
|
+
metadata:
|
|
531
|
+
openclaw:
|
|
532
|
+
emoji: "📦"
|
|
533
|
+
---
|
|
534
|
+
|
|
535
|
+
# Code Sandbox
|
|
536
|
+
|
|
537
|
+
Execute code safely in an isolated OpenSandbox container.
|
|
538
|
+
|
|
539
|
+
## Description
|
|
540
|
+
|
|
541
|
+
This skill provides secure, containerized code execution for AI agents. Code runs in ephemeral Docker containers with resource limits, network isolation, and automatic cleanup.
|
|
542
|
+
|
|
543
|
+
## Connection Details
|
|
544
|
+
|
|
545
|
+
- **Host:** \`{{OPENSANDBOX_HOST}}\`
|
|
546
|
+
- **Port:** \`{{OPENSANDBOX_PORT}}\`
|
|
547
|
+
- **Auth:** API key (auto-configured)
|
|
548
|
+
|
|
549
|
+
## Supported Languages
|
|
550
|
+
|
|
551
|
+
- Python 3.12
|
|
552
|
+
- JavaScript / TypeScript (Node.js 22)
|
|
553
|
+
- Java 21
|
|
554
|
+
- Go 1.24
|
|
555
|
+
- Bash
|
|
556
|
+
|
|
557
|
+
## Available Actions
|
|
558
|
+
|
|
559
|
+
### execute_code
|
|
560
|
+
|
|
561
|
+
Run a code snippet in a fresh sandbox.
|
|
562
|
+
|
|
563
|
+
**Parameters:**
|
|
564
|
+
- \`language\` (required): Programming language ("python", "javascript", "typescript", "java", "go", "bash")
|
|
565
|
+
- \`code\` (required): The code to execute
|
|
566
|
+
- \`timeout_seconds\` (optional): Max execution time (default: 60, max: 300)
|
|
567
|
+
|
|
568
|
+
**Returns:** stdout, stderr, exit_code, execution_time_ms
|
|
569
|
+
|
|
570
|
+
### execute_shell
|
|
571
|
+
|
|
572
|
+
Run a shell command in an existing or new sandbox.
|
|
573
|
+
|
|
574
|
+
**Parameters:**
|
|
575
|
+
- \`command\` (required): Shell command to execute
|
|
576
|
+
- \`sandbox_id\` (optional): Reuse an existing sandbox (for multi-step workflows)
|
|
577
|
+
- \`background\` (optional): Run in background (default: false)
|
|
578
|
+
|
|
579
|
+
**Returns:** stdout, stderr, exit_code
|
|
580
|
+
|
|
581
|
+
### upload_file
|
|
582
|
+
|
|
583
|
+
Upload a file to a sandbox for processing.
|
|
584
|
+
|
|
585
|
+
**Parameters:**
|
|
586
|
+
- \`sandbox_id\` (required): Target sandbox
|
|
587
|
+
- \`path\` (required): Destination path inside sandbox
|
|
588
|
+
- \`content\` (required): File content (text or base64 for binary)
|
|
589
|
+
|
|
590
|
+
### download_file
|
|
591
|
+
|
|
592
|
+
Download a file from a sandbox.
|
|
593
|
+
|
|
594
|
+
**Parameters:**
|
|
595
|
+
- \`sandbox_id\` (required): Source sandbox
|
|
596
|
+
- \`path\` (required): File path inside sandbox
|
|
597
|
+
|
|
598
|
+
**Returns:** File content
|
|
599
|
+
|
|
600
|
+
### list_sandboxes
|
|
601
|
+
|
|
602
|
+
List active sandboxes on this instance.
|
|
603
|
+
|
|
604
|
+
**Returns:** Array of { id, status, image, created_at, expires_at }
|
|
605
|
+
|
|
606
|
+
### terminate_sandbox
|
|
607
|
+
|
|
608
|
+
Terminate a running sandbox immediately.
|
|
609
|
+
|
|
610
|
+
**Parameters:**
|
|
611
|
+
- \`sandbox_id\` (required): Sandbox to terminate
|
|
612
|
+
|
|
613
|
+
### create_desktop
|
|
614
|
+
|
|
615
|
+
Create a GUI desktop sandbox with VNC access (for Homespace live preview).
|
|
616
|
+
|
|
617
|
+
**Parameters:**
|
|
618
|
+
- \`image\` (optional): Desktop image (default: "opensandbox/desktop:latest", also: "opensandbox/chrome:latest", "opensandbox/vscode:latest")
|
|
619
|
+
- \`resolution\` (optional): Screen resolution (default: "1280x800x24")
|
|
620
|
+
|
|
621
|
+
**Returns:** sandbox_id, vnc_endpoint (port 5900), novnc_url (port 6080 WebSocket), devtools_url (port 9222, chrome only)
|
|
622
|
+
|
|
623
|
+
### get_preview_url
|
|
624
|
+
|
|
625
|
+
Get the browser-accessible noVNC URL for an existing desktop sandbox.
|
|
626
|
+
|
|
627
|
+
**Parameters:**
|
|
628
|
+
- \`sandbox_id\` (required): Desktop sandbox ID
|
|
629
|
+
|
|
630
|
+
**Returns:** novnc_url (embeddable in iframe), vnc_endpoint, status
|
|
631
|
+
|
|
632
|
+
## Examples
|
|
633
|
+
|
|
634
|
+
### Run Python code
|
|
635
|
+
|
|
636
|
+
\`\`\`bash
|
|
637
|
+
curl -X POST http://{{OPENSANDBOX_HOST}}:{{OPENSANDBOX_PORT}}/v1/sandboxes \\
|
|
638
|
+
-H "Authorization: Bearer $OPENSANDBOX_API_KEY" \\
|
|
639
|
+
-H "Content-Type: application/json" \\
|
|
640
|
+
-d '{"image": "opensandbox/code-interpreter:python"}'
|
|
641
|
+
\`\`\`
|
|
642
|
+
|
|
643
|
+
### Execute code in a sandbox
|
|
644
|
+
|
|
645
|
+
\`\`\`bash
|
|
646
|
+
curl -X POST http://{{OPENSANDBOX_HOST}}:{{OPENSANDBOX_PORT}}/v1/sandboxes/{id}/code \\
|
|
647
|
+
-H "Authorization: Bearer $OPENSANDBOX_API_KEY" \\
|
|
648
|
+
-H "Content-Type: application/json" \\
|
|
649
|
+
-d '{"language": "python", "code": "print(42 * 42)"}'
|
|
650
|
+
\`\`\`
|
|
651
|
+
|
|
652
|
+
## Configuration
|
|
653
|
+
|
|
654
|
+
- **Default timeout:** 60 seconds
|
|
655
|
+
- **Max concurrent sandboxes:** Determined by VPS RAM
|
|
656
|
+
- **Idle cleanup:** Sandboxes with no activity for 30 minutes are auto-terminated
|
|
657
|
+
- **Network:** Bridge mode (isolated from host services)
|
|
658
|
+
- **Security:** gVisor runtime, capability dropping, PID limits
|
|
659
|
+
|
|
660
|
+
## Limitations
|
|
661
|
+
|
|
662
|
+
- No persistent storage between sandbox sessions (ephemeral by design)
|
|
663
|
+
- No GPU access (CPU-only execution)
|
|
664
|
+
- No outbound network access by default (egress blocked)
|
|
665
|
+
- Max 512 PIDs per sandbox (fork bomb protection)
|
|
666
|
+
- Memory capped per sandbox (default 512MB)
|
|
526
667
|
`
|
|
527
668
|
};
|
|
528
669
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skills.mjs","names":[],"sources":["../../src/generators/skills.ts"],"sourcesContent":["import Handlebars from \"handlebars\";\nimport type { ResolverOutput } from \"../types.js\";\n\n/**\n * Basic skill templates keyed by skillId.\n *\n * Templates use Handlebars `{{VAR}}` syntax. Variables are resolved from the\n * service's `openclawEnvVars` array at generation time.\n */\nconst skillTemplates: Record<string, string> = {\n\t\"redis-cache\": `---\nname: redis-cache\ndescription: \"Cache data and manage key-value state using Redis\"\nmetadata:\n openclaw:\n emoji: \"🔴\"\n---\n\n# Redis Cache\n\nUse Redis as a high-performance in-memory cache and key-value store.\n\n## Connection Details\n\n- **Host:** \\`{{REDIS_HOST}}\\`\n- **Port:** \\`{{REDIS_PORT}}\\`\n\n## Example Commands\n\n### Set a value\n\\`\\`\\`bash\nredis-cli -h {{REDIS_HOST}} -p {{REDIS_PORT}} -a $REDIS_PASSWORD SET mykey \"myvalue\"\n\\`\\`\\`\n\n### Get a value\n\\`\\`\\`bash\nredis-cli -h {{REDIS_HOST}} -p {{REDIS_PORT}} -a $REDIS_PASSWORD GET mykey\n\\`\\`\\`\n\n### List all keys\n\\`\\`\\`bash\nredis-cli -h {{REDIS_HOST}} -p {{REDIS_PORT}} -a $REDIS_PASSWORD KEYS \"*\"\n\\`\\`\\`\n\n## Usage Notes\n\n- Use Redis for caching frequently accessed data, session storage, and pub/sub messaging.\n- Data is persisted to disk via RDB snapshots in the mounted volume.\n- Password authentication is required.\n`,\n\n\t\"qdrant-memory\": `---\nname: qdrant-memory\ndescription: \"Store and retrieve vector embeddings for semantic search and RAG\"\nmetadata:\n openclaw:\n emoji: \"🧠\"\n---\n\n# Qdrant Memory\n\nUse Qdrant as a vector database for storing embeddings, enabling semantic search and retrieval-augmented generation (RAG).\n\n## Connection Details\n\n- **Host:** \\`{{QDRANT_HOST}}\\`\n- **Port:** \\`{{QDRANT_PORT}}\\` (REST API)\n\n## Example API Calls\n\n### Create a collection\n\\`\\`\\`bash\ncurl -X PUT \"http://{{QDRANT_HOST}}:{{QDRANT_PORT}}/collections/my_collection\" \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"vectors\": {\"size\": 384, \"distance\": \"Cosine\"}}'\n\\`\\`\\`\n\n### Upsert points\n\\`\\`\\`bash\ncurl -X PUT \"http://{{QDRANT_HOST}}:{{QDRANT_PORT}}/collections/my_collection/points\" \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"points\": [{\"id\": 1, \"vector\": [0.1, 0.2, ...], \"payload\": {\"text\": \"hello\"}}]}'\n\\`\\`\\`\n\n### Search similar vectors\n\\`\\`\\`bash\ncurl -X POST \"http://{{QDRANT_HOST}}:{{QDRANT_PORT}}/collections/my_collection/points/search\" \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"vector\": [0.1, 0.2, ...], \"limit\": 5}'\n\\`\\`\\`\n\n## Usage Notes\n\n- Use 384-dimensional vectors for MiniLM-based embeddings or 1536 for OpenAI ada-002.\n- Qdrant supports filtering, batch operations, and named vectors.\n`,\n\n\t\"n8n-trigger\": `---\nname: n8n-trigger\ndescription: \"Trigger and manage automation workflows using n8n\"\nmetadata:\n openclaw:\n emoji: \"🔄\"\n---\n\n# n8n Workflow Trigger\n\nUse n8n to create, trigger, and manage automation workflows via its REST API.\n\n## Connection Details\n\n- **Host:** \\`{{N8N_HOST}}\\`\n- **Port:** \\`{{N8N_PORT}}\\`\n- **Webhook URL:** \\`{{N8N_WEBHOOK_URL}}\\`\n\n## Example API Calls\n\n### Trigger a webhook workflow\n\\`\\`\\`bash\ncurl -X POST \"{{N8N_WEBHOOK_URL}}webhook/<your-webhook-id>\" \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"message\": \"Hello from OpenClaw\"}'\n\\`\\`\\`\n\n### List workflows\n\\`\\`\\`bash\ncurl -X GET \"http://{{N8N_HOST}}:{{N8N_PORT}}/api/v1/workflows\" \\\\\n -H \"Content-Type: application/json\"\n\\`\\`\\`\n\n### Activate a workflow\n\\`\\`\\`bash\ncurl -X PATCH \"http://{{N8N_HOST}}:{{N8N_PORT}}/api/v1/workflows/<id>\" \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"active\": true}'\n\\`\\`\\`\n\n## Usage Notes\n\n- Create workflows in the n8n UI at http://{{N8N_HOST}}:{{N8N_PORT}}.\n- Webhook nodes allow external triggers from OpenClaw.\n- n8n stores workflow state in PostgreSQL.\n`,\n\n\t\"ffmpeg-process\": `---\nname: ffmpeg-process\ndescription: \"Process media files using FFmpeg for transcoding, conversion, and manipulation\"\nmetadata:\n openclaw:\n emoji: \"🎬\"\n---\n\n# FFmpeg Media Processing\n\nUse FFmpeg for video/audio transcoding, format conversion, and media manipulation.\n\n## Shared Directory\n\n- **Media directory:** \\`{{FFMPEG_SHARED_DIR}}\\`\n\n## Example Commands\n\n### Convert video to MP4\n\\`\\`\\`bash\ndocker exec ffmpeg ffmpeg -i /data/input.avi -c:v libx264 -c:a aac /data/output.mp4\n\\`\\`\\`\n\n### Extract audio from video\n\\`\\`\\`bash\ndocker exec ffmpeg ffmpeg -i /data/video.mp4 -vn -acodec libmp3lame /data/audio.mp3\n\\`\\`\\`\n\n### Create thumbnail from video\n\\`\\`\\`bash\ndocker exec ffmpeg ffmpeg -i /data/video.mp4 -ss 00:00:05 -vframes 1 /data/thumb.jpg\n\\`\\`\\`\n\n### Resize video\n\\`\\`\\`bash\ndocker exec ffmpeg ffmpeg -i /data/input.mp4 -vf scale=1280:720 /data/output_720p.mp4\n\\`\\`\\`\n\n## Usage Notes\n\n- Place input files in the shared media directory.\n- FFmpeg runs as a sidecar container sharing a volume with OpenClaw.\n- Output files appear in the same shared directory.\n`,\n\n\t\"minio-storage\": `---\nname: minio-storage\ndescription: \"Store and retrieve files using S3-compatible object storage\"\nmetadata:\n openclaw:\n emoji: \"💾\"\n---\n\n# MinIO Object Storage\n\nUse MinIO as S3-compatible object storage for files, assets, and backups.\n\n## Connection Details\n\n- **Host:** \\`{{MINIO_HOST}}\\`\n- **API Port:** \\`{{MINIO_PORT}}\\`\n- **Access Key:** Uses \\`MINIO_ACCESS_KEY\\` env var\n- **Secret Key:** Uses \\`MINIO_SECRET_KEY\\` env var\n\n## Example API Calls\n\n### Create a bucket\n\\`\\`\\`bash\nmc alias set local http://{{MINIO_HOST}}:{{MINIO_PORT}} $MINIO_ACCESS_KEY $MINIO_SECRET_KEY\nmc mb local/my-bucket\n\\`\\`\\`\n\n### Upload a file\n\\`\\`\\`bash\nmc cp /path/to/file.txt local/my-bucket/file.txt\n\\`\\`\\`\n\n### Download a file\n\\`\\`\\`bash\nmc cp local/my-bucket/file.txt /path/to/local/file.txt\n\\`\\`\\`\n\n### List bucket contents\n\\`\\`\\`bash\nmc ls local/my-bucket/\n\\`\\`\\`\n\n## Usage Notes\n\n- MinIO is fully S3-compatible—use any S3 SDK or CLI.\n- Access the web console at http://{{MINIO_HOST}}:9001 for a visual file browser.\n- Create separate buckets for different data types (assets, backups, uploads).\n`,\n\n\t\"browserless-browse\": `---\nname: browserless-browse\ndescription: \"Automate browser interactions, scrape web pages, and generate PDFs\"\nmetadata:\n openclaw:\n emoji: \"🌐\"\n---\n\n# Browserless Browser Automation\n\nUse Browserless for headless Chrome browser automation, web scraping, screenshots, and PDF generation.\n\n## Connection Details\n\n- **Host:** \\`{{BROWSERLESS_HOST}}\\`\n- **Port:** \\`{{BROWSERLESS_PORT}}\\`\n- **Token:** Uses \\`BROWSERLESS_TOKEN\\` env var\n\n## Example API Calls\n\n### Take a screenshot\n\\`\\`\\`bash\ncurl -X POST \"http://{{BROWSERLESS_HOST}}:{{BROWSERLESS_PORT}}/screenshot?token=$BROWSERLESS_TOKEN\" \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"url\": \"https://example.com\", \"options\": {\"fullPage\": true}}' \\\\\n --output screenshot.png\n\\`\\`\\`\n\n### Generate a PDF\n\\`\\`\\`bash\ncurl -X POST \"http://{{BROWSERLESS_HOST}}:{{BROWSERLESS_PORT}}/pdf?token=$BROWSERLESS_TOKEN\" \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"url\": \"https://example.com\"}' \\\\\n --output page.pdf\n\\`\\`\\`\n\n### Scrape page content\n\\`\\`\\`bash\ncurl -X POST \"http://{{BROWSERLESS_HOST}}:{{BROWSERLESS_PORT}}/content?token=$BROWSERLESS_TOKEN\" \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"url\": \"https://example.com\"}'\n\\`\\`\\`\n\n## Usage Notes\n\n- Browserless manages a pool of Chrome instances (max concurrent sessions configured via env).\n- Token authentication is required for all API calls.\n- Supports Puppeteer and Playwright WebSocket connections.\n`,\n\n\t\"searxng-search\": `---\nname: searxng-search\ndescription: \"Search the web using a privacy-respecting metasearch engine\"\nmetadata:\n openclaw:\n emoji: \"🔍\"\n---\n\n# SearXNG Web Search\n\nUse SearXNG as a privacy-respecting metasearch engine to query the web.\n\n## Connection Details\n\n- **Host:** \\`{{SEARXNG_HOST}}\\`\n- **Port:** \\`{{SEARXNG_PORT}}\\`\n\n## Example API Calls\n\n### Search the web\n\\`\\`\\`bash\ncurl \"http://{{SEARXNG_HOST}}:{{SEARXNG_PORT}}/search?q=your+search+query&format=json\"\n\\`\\`\\`\n\n### Search with category filter\n\\`\\`\\`bash\ncurl \"http://{{SEARXNG_HOST}}:{{SEARXNG_PORT}}/search?q=openai&categories=it&format=json\"\n\\`\\`\\`\n\n### Search with language filter\n\\`\\`\\`bash\ncurl \"http://{{SEARXNG_HOST}}:{{SEARXNG_PORT}}/search?q=hello&language=en&format=json\"\n\\`\\`\\`\n\n## Usage Notes\n\n- Always use \\`format=json\\` for machine-readable results.\n- Available categories: general, images, videos, news, map, music, it, science, files.\n- SearXNG aggregates results from many search engines without tracking.\n`,\n\n\t\"whisper-transcribe\": `---\nname: whisper-transcribe\ndescription: \"Transcribe audio files to text using Faster Whisper\"\nmetadata:\n openclaw:\n emoji: \"🎙️\"\n---\n\n# Whisper Transcription\n\nUse the Faster Whisper server for speech-to-text transcription.\n\n## Connection Details\n\n- **Host:** \\`{{WHISPER_HOST}}\\`\n- **Port:** \\`{{WHISPER_PORT}}\\`\n\n## Example API Calls\n\n### Transcribe an audio file\n\\`\\`\\`bash\ncurl -X POST \"http://{{WHISPER_HOST}}:{{WHISPER_PORT}}/v1/audio/transcriptions\" \\\\\n -F \"file=@/path/to/audio.mp3\" \\\\\n -F \"model=base\"\n\\`\\`\\`\n\n### Transcribe with language hint\n\\`\\`\\`bash\ncurl -X POST \"http://{{WHISPER_HOST}}:{{WHISPER_PORT}}/v1/audio/transcriptions\" \\\\\n -F \"file=@/path/to/audio.wav\" \\\\\n -F \"model=base\" \\\\\n -F \"language=en\"\n\\`\\`\\`\n\n### Get available models\n\\`\\`\\`bash\ncurl \"http://{{WHISPER_HOST}}:{{WHISPER_PORT}}/v1/models\"\n\\`\\`\\`\n\n## Usage Notes\n\n- Supports MP3, WAV, FLAC, and other common audio formats.\n- Model sizes: tiny, base, small, medium, large (larger = more accurate but slower).\n- GPU acceleration significantly improves transcription speed.\n`,\n\n\t\"ollama-local-llm\": `---\nname: ollama-local-llm\ndescription: \"Run local language models for text generation, chat, and embeddings\"\nmetadata:\n openclaw:\n emoji: \"🦙\"\n---\n\n# Ollama Local LLM\n\nUse Ollama to run large language models locally for text generation, chat, and embeddings.\n\n## Connection Details\n\n- **Host:** \\`{{OLLAMA_HOST}}\\`\n- **Port:** \\`{{OLLAMA_PORT}}\\`\n\n## Example API Calls\n\n### Generate text\n\\`\\`\\`bash\ncurl -X POST \"http://{{OLLAMA_HOST}}:{{OLLAMA_PORT}}/api/generate\" \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"model\": \"llama3.2\", \"prompt\": \"Explain quantum computing in simple terms\"}'\n\\`\\`\\`\n\n### Chat completion\n\\`\\`\\`bash\ncurl -X POST \"http://{{OLLAMA_HOST}}:{{OLLAMA_PORT}}/api/chat\" \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"model\": \"llama3.2\", \"messages\": [{\"role\": \"user\", \"content\": \"Hello!\"}]}'\n\\`\\`\\`\n\n### Pull a model\n\\`\\`\\`bash\ncurl -X POST \"http://{{OLLAMA_HOST}}:{{OLLAMA_PORT}}/api/pull\" \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"name\": \"llama3.2\"}'\n\\`\\`\\`\n\n### Generate embeddings\n\\`\\`\\`bash\ncurl -X POST \"http://{{OLLAMA_HOST}}:{{OLLAMA_PORT}}/api/embeddings\" \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"model\": \"nomic-embed-text\", \"prompt\": \"Hello world\"}'\n\\`\\`\\`\n\n## Usage Notes\n\n- Pull models before first use (they are cached in the persistent volume).\n- Recommended models: llama3.2 (general), codellama (code), nomic-embed-text (embeddings).\n- GPU passthrough dramatically improves inference speed.\n- The Ollama API is OpenAI-compatible at /v1/ endpoints.\n`,\n\n\t\"remotion-render\": `---\nname: remotion-render\ndescription: \"Create and render videos programmatically using React\"\nmetadata:\n openclaw:\n emoji: \"🎥\"\n---\n\n# Remotion Video Rendering\n\nUse Remotion Studio to create and render videos programmatically with React.\n\n## Connection Details\n\n- **Host:** \\`{{REMOTION_HOST}}\\`\n- **Port:** \\`{{REMOTION_PORT}}\\`\n\n## Example Usage\n\n### Access the Studio UI\nOpen \\`http://{{REMOTION_HOST}}:{{REMOTION_PORT}}\\` in your browser to use the Remotion Studio visual editor.\n\n### Render a video via CLI\n\\`\\`\\`bash\ndocker exec remotion npx remotion render src/index.tsx MyComposition out/video.mp4\n\\`\\`\\`\n\n### Render with custom props\n\\`\\`\\`bash\ndocker exec remotion npx remotion render src/index.tsx MyComposition out/video.mp4 \\\\\n --props='{\"title\": \"Hello World\"}'\n\\`\\`\\`\n\n## Usage Notes\n\n- Define video compositions in React components.\n- Remotion supports MP4, WebM, and GIF output formats.\n- Use the Studio UI for previewing before rendering.\n- Combine with FFmpeg for post-processing.\n`,\n\n\t\"lightpanda-browse\": `---\nname: lightpanda-browse\ndescription: \"Browse the web using the ultra-fast LightPanda headless browser via CDP\"\nmetadata:\n openclaw:\n emoji: \"🐼\"\n---\n\n# LightPanda Browse\n\nLightPanda is an ultra-fast headless browser available via CDP WebSocket at \\`ws://{{LIGHTPANDA_HOST}}:{{LIGHTPANDA_PORT}}\\`.\n\n## Connect via Puppeteer\n\n\\`\\`\\`javascript\nconst browser = await puppeteer.connect({\n browserWSEndpoint: \"ws://{{LIGHTPANDA_HOST}}:{{LIGHTPANDA_PORT}}\"\n});\nconst page = await browser.newPage();\nawait page.goto('https://example.com');\nconst content = await page.evaluate(() => document.body.innerText);\n\\`\\`\\`\n\n## Key Advantages\n\n- 9x less memory than Chrome (ideal for parallel scraping)\n- 11x faster page loading\n- Instant startup\n- Full CDP compatibility with Puppeteer and Playwright\n`,\n\n\t\"steel-browse\": `---\nname: steel-browse\ndescription: \"Browse the web using Steel Browser API with session management and anti-detection\"\nmetadata:\n openclaw:\n emoji: \"🔥\"\n---\n\n# Steel Browser\n\nSteel provides a REST API at \\`http://{{STEEL_HOST}}:{{STEEL_PORT}}\\` for AI agent web automation.\n\n## Create a Session\n\n\\`\\`\\`bash\ncurl -X POST http://{{STEEL_HOST}}:{{STEEL_PORT}}/v1/sessions \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"blockAds\": true}'\n\\`\\`\\`\n\n## Scrape a Page\n\n\\`\\`\\`bash\ncurl -X POST http://{{STEEL_HOST}}:{{STEEL_PORT}}/v1/scrape \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"url\": \"https://example.com\", \"format\": \"markdown\"}'\n\\`\\`\\`\n\n## Features\n\n- Session management with persistent cookies\n- Anti-detection and stealth plugins\n- Proxy support and IP rotation\n- Auto CAPTCHA solving\n- Puppeteer/Playwright/Selenium compatible\n`,\n};\n\n/**\n * Generates SKILL.md files for each service that has skills defined.\n *\n * Returns a map of file paths (relative to project root) to file contents.\n * Handlebars is used to replace `{{VAR}}` placeholders with actual values\n * from each service's `openclawEnvVars`.\n */\nexport function generateSkillFiles(resolved: ResolverOutput): Record<string, string> {\n\tconst files: Record<string, string> = {};\n\n\tfor (const { definition } of resolved.services) {\n\t\tif (definition.skills.length === 0) continue;\n\n\t\t// Build a variable map from openclawEnvVars for Handlebars\n\t\tconst vars: Record<string, string> = {};\n\t\tfor (const envVar of definition.openclawEnvVars) {\n\t\t\t// Resolve ${REFERENCES} to the default value (just strip the ${} wrapper)\n\t\t\tconst val = envVar.defaultValue.startsWith(\"${\")\n\t\t\t\t? envVar.defaultValue.slice(2, -1)\n\t\t\t\t: envVar.defaultValue;\n\t\t\tvars[envVar.key] = val;\n\t\t}\n\n\t\tfor (const skill of definition.skills) {\n\t\t\tconst template = skillTemplates[skill.skillId];\n\t\t\tif (!template) {\n\t\t\t\t// Generate a generic skill file if no template exists\n\t\t\t\tconst generic = generateGenericSkill(\n\t\t\t\t\tskill.skillId,\n\t\t\t\t\tdefinition.name,\n\t\t\t\t\tdefinition.icon,\n\t\t\t\t\tdefinition.description,\n\t\t\t\t\tvars,\n\t\t\t\t);\n\t\t\t\tfiles[`openclaw/workspace/skills/${skill.skillId}/SKILL.md`] = generic;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst compiled = Handlebars.compile(template, { noEscape: true });\n\t\t\tconst rendered = compiled(vars);\n\t\t\tfiles[`openclaw/workspace/skills/${skill.skillId}/SKILL.md`] = rendered;\n\t\t}\n\t}\n\n\treturn files;\n}\n\n/**\n * Generate a generic SKILL.md for skills that don't have a dedicated template.\n */\nfunction generateGenericSkill(\n\tskillId: string,\n\tserviceName: string,\n\ticon: string,\n\tdescription: string,\n\tvars: Record<string, string>,\n): string {\n\tconst title = skillId\n\t\t.split(\"-\")\n\t\t.map((w) => w.charAt(0).toUpperCase() + w.slice(1))\n\t\t.join(\" \");\n\n\tconst envSection = Object.entries(vars)\n\t\t.map(([key, value]) => `- **${key}:** \\`${value}\\``)\n\t\t.join(\"\\n\");\n\n\treturn `---\nname: ${skillId}\ndescription: \"${description}\"\nmetadata:\n openclaw:\n emoji: \"${icon}\"\n---\n\n# ${title}\n\nInteract with ${serviceName} through this skill.\n\n## Connection Details\n\n${envSection || \"No specific connection variables configured.\"}\n\n## Usage Notes\n\n- This skill provides OpenClaw access to ${serviceName}.\n- Refer to the service documentation for available API endpoints.\n`;\n}\n"],"mappings":";;;;;;;;AASA,MAAM,iBAAyC;CAC9C,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyCf,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8CjB,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+Cf,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6ClB,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiDjB,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkDtB,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyClB,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8CtB,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuDpB,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyCnB,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BrB,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoChB;;;;;;;;AASD,SAAgB,mBAAmB,UAAkD;CACpF,MAAM,QAAgC,EAAE;AAExC,MAAK,MAAM,EAAE,gBAAgB,SAAS,UAAU;AAC/C,MAAI,WAAW,OAAO,WAAW,EAAG;EAGpC,MAAM,OAA+B,EAAE;AACvC,OAAK,MAAM,UAAU,WAAW,iBAAiB;GAEhD,MAAM,MAAM,OAAO,aAAa,WAAW,KAAK,GAC7C,OAAO,aAAa,MAAM,GAAG,GAAG,GAChC,OAAO;AACV,QAAK,OAAO,OAAO;;AAGpB,OAAK,MAAM,SAAS,WAAW,QAAQ;GACtC,MAAM,WAAW,eAAe,MAAM;AACtC,OAAI,CAAC,UAAU;IAEd,MAAM,UAAU,qBACf,MAAM,SACN,WAAW,MACX,WAAW,MACX,WAAW,aACX,KACA;AACD,UAAM,6BAA6B,MAAM,QAAQ,cAAc;AAC/D;;GAID,MAAM,WADW,WAAW,QAAQ,UAAU,EAAE,UAAU,MAAM,CAAC,CACvC,KAAK;AAC/B,SAAM,6BAA6B,MAAM,QAAQ,cAAc;;;AAIjE,QAAO;;;;;AAMR,SAAS,qBACR,SACA,aACA,MACA,aACA,MACS;AAUT,QAAO;QACA,QAAQ;gBACA,YAAY;;;cAGd,KAAK;;;IAdJ,QACZ,MAAM,IAAI,CACV,KAAK,MAAM,EAAE,OAAO,EAAE,CAAC,aAAa,GAAG,EAAE,MAAM,EAAE,CAAC,CAClD,KAAK,IAAI,CAcF;;gBAEM,YAAY;;;;EAdR,OAAO,QAAQ,KAAK,CACrC,KAAK,CAAC,KAAK,WAAW,OAAO,IAAI,QAAQ,MAAM,IAAI,CACnD,KAAK,KAAK,IAgBG,+CAA+C;;;;2CAIpB,YAAY"}
|
|
1
|
+
{"version":3,"file":"skills.mjs","names":[],"sources":["../../src/generators/skills.ts"],"sourcesContent":["import Handlebars from \"handlebars\";\nimport type { ResolverOutput } from \"../types.js\";\n\n/**\n * Basic skill templates keyed by skillId.\n *\n * Templates use Handlebars `{{VAR}}` syntax. Variables are resolved from the\n * service's `openclawEnvVars` array at generation time.\n */\nconst skillTemplates: Record<string, string> = {\n\t\"redis-cache\": `---\nname: redis-cache\ndescription: \"Cache data and manage key-value state using Redis\"\nmetadata:\n openclaw:\n emoji: \"🔴\"\n---\n\n# Redis Cache\n\nUse Redis as a high-performance in-memory cache and key-value store.\n\n## Connection Details\n\n- **Host:** \\`{{REDIS_HOST}}\\`\n- **Port:** \\`{{REDIS_PORT}}\\`\n\n## Example Commands\n\n### Set a value\n\\`\\`\\`bash\nredis-cli -h {{REDIS_HOST}} -p {{REDIS_PORT}} -a $REDIS_PASSWORD SET mykey \"myvalue\"\n\\`\\`\\`\n\n### Get a value\n\\`\\`\\`bash\nredis-cli -h {{REDIS_HOST}} -p {{REDIS_PORT}} -a $REDIS_PASSWORD GET mykey\n\\`\\`\\`\n\n### List all keys\n\\`\\`\\`bash\nredis-cli -h {{REDIS_HOST}} -p {{REDIS_PORT}} -a $REDIS_PASSWORD KEYS \"*\"\n\\`\\`\\`\n\n## Usage Notes\n\n- Use Redis for caching frequently accessed data, session storage, and pub/sub messaging.\n- Data is persisted to disk via RDB snapshots in the mounted volume.\n- Password authentication is required.\n`,\n\n\t\"qdrant-memory\": `---\nname: qdrant-memory\ndescription: \"Store and retrieve vector embeddings for semantic search and RAG\"\nmetadata:\n openclaw:\n emoji: \"🧠\"\n---\n\n# Qdrant Memory\n\nUse Qdrant as a vector database for storing embeddings, enabling semantic search and retrieval-augmented generation (RAG).\n\n## Connection Details\n\n- **Host:** \\`{{QDRANT_HOST}}\\`\n- **Port:** \\`{{QDRANT_PORT}}\\` (REST API)\n\n## Example API Calls\n\n### Create a collection\n\\`\\`\\`bash\ncurl -X PUT \"http://{{QDRANT_HOST}}:{{QDRANT_PORT}}/collections/my_collection\" \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"vectors\": {\"size\": 384, \"distance\": \"Cosine\"}}'\n\\`\\`\\`\n\n### Upsert points\n\\`\\`\\`bash\ncurl -X PUT \"http://{{QDRANT_HOST}}:{{QDRANT_PORT}}/collections/my_collection/points\" \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"points\": [{\"id\": 1, \"vector\": [0.1, 0.2, ...], \"payload\": {\"text\": \"hello\"}}]}'\n\\`\\`\\`\n\n### Search similar vectors\n\\`\\`\\`bash\ncurl -X POST \"http://{{QDRANT_HOST}}:{{QDRANT_PORT}}/collections/my_collection/points/search\" \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"vector\": [0.1, 0.2, ...], \"limit\": 5}'\n\\`\\`\\`\n\n## Usage Notes\n\n- Use 384-dimensional vectors for MiniLM-based embeddings or 1536 for OpenAI ada-002.\n- Qdrant supports filtering, batch operations, and named vectors.\n`,\n\n\t\"n8n-trigger\": `---\nname: n8n-trigger\ndescription: \"Trigger and manage automation workflows using n8n\"\nmetadata:\n openclaw:\n emoji: \"🔄\"\n---\n\n# n8n Workflow Trigger\n\nUse n8n to create, trigger, and manage automation workflows via its REST API.\n\n## Connection Details\n\n- **Host:** \\`{{N8N_HOST}}\\`\n- **Port:** \\`{{N8N_PORT}}\\`\n- **Webhook URL:** \\`{{N8N_WEBHOOK_URL}}\\`\n\n## Example API Calls\n\n### Trigger a webhook workflow\n\\`\\`\\`bash\ncurl -X POST \"{{N8N_WEBHOOK_URL}}webhook/<your-webhook-id>\" \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"message\": \"Hello from OpenClaw\"}'\n\\`\\`\\`\n\n### List workflows\n\\`\\`\\`bash\ncurl -X GET \"http://{{N8N_HOST}}:{{N8N_PORT}}/api/v1/workflows\" \\\\\n -H \"Content-Type: application/json\"\n\\`\\`\\`\n\n### Activate a workflow\n\\`\\`\\`bash\ncurl -X PATCH \"http://{{N8N_HOST}}:{{N8N_PORT}}/api/v1/workflows/<id>\" \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"active\": true}'\n\\`\\`\\`\n\n## Usage Notes\n\n- Create workflows in the n8n UI at http://{{N8N_HOST}}:{{N8N_PORT}}.\n- Webhook nodes allow external triggers from OpenClaw.\n- n8n stores workflow state in PostgreSQL.\n`,\n\n\t\"ffmpeg-process\": `---\nname: ffmpeg-process\ndescription: \"Process media files using FFmpeg for transcoding, conversion, and manipulation\"\nmetadata:\n openclaw:\n emoji: \"🎬\"\n---\n\n# FFmpeg Media Processing\n\nUse FFmpeg for video/audio transcoding, format conversion, and media manipulation.\n\n## Shared Directory\n\n- **Media directory:** \\`{{FFMPEG_SHARED_DIR}}\\`\n\n## Example Commands\n\n### Convert video to MP4\n\\`\\`\\`bash\ndocker exec ffmpeg ffmpeg -i /data/input.avi -c:v libx264 -c:a aac /data/output.mp4\n\\`\\`\\`\n\n### Extract audio from video\n\\`\\`\\`bash\ndocker exec ffmpeg ffmpeg -i /data/video.mp4 -vn -acodec libmp3lame /data/audio.mp3\n\\`\\`\\`\n\n### Create thumbnail from video\n\\`\\`\\`bash\ndocker exec ffmpeg ffmpeg -i /data/video.mp4 -ss 00:00:05 -vframes 1 /data/thumb.jpg\n\\`\\`\\`\n\n### Resize video\n\\`\\`\\`bash\ndocker exec ffmpeg ffmpeg -i /data/input.mp4 -vf scale=1280:720 /data/output_720p.mp4\n\\`\\`\\`\n\n## Usage Notes\n\n- Place input files in the shared media directory.\n- FFmpeg runs as a sidecar container sharing a volume with OpenClaw.\n- Output files appear in the same shared directory.\n`,\n\n\t\"minio-storage\": `---\nname: minio-storage\ndescription: \"Store and retrieve files using S3-compatible object storage\"\nmetadata:\n openclaw:\n emoji: \"💾\"\n---\n\n# MinIO Object Storage\n\nUse MinIO as S3-compatible object storage for files, assets, and backups.\n\n## Connection Details\n\n- **Host:** \\`{{MINIO_HOST}}\\`\n- **API Port:** \\`{{MINIO_PORT}}\\`\n- **Access Key:** Uses \\`MINIO_ACCESS_KEY\\` env var\n- **Secret Key:** Uses \\`MINIO_SECRET_KEY\\` env var\n\n## Example API Calls\n\n### Create a bucket\n\\`\\`\\`bash\nmc alias set local http://{{MINIO_HOST}}:{{MINIO_PORT}} $MINIO_ACCESS_KEY $MINIO_SECRET_KEY\nmc mb local/my-bucket\n\\`\\`\\`\n\n### Upload a file\n\\`\\`\\`bash\nmc cp /path/to/file.txt local/my-bucket/file.txt\n\\`\\`\\`\n\n### Download a file\n\\`\\`\\`bash\nmc cp local/my-bucket/file.txt /path/to/local/file.txt\n\\`\\`\\`\n\n### List bucket contents\n\\`\\`\\`bash\nmc ls local/my-bucket/\n\\`\\`\\`\n\n## Usage Notes\n\n- MinIO is fully S3-compatible—use any S3 SDK or CLI.\n- Access the web console at http://{{MINIO_HOST}}:9001 for a visual file browser.\n- Create separate buckets for different data types (assets, backups, uploads).\n`,\n\n\t\"browserless-browse\": `---\nname: browserless-browse\ndescription: \"Automate browser interactions, scrape web pages, and generate PDFs\"\nmetadata:\n openclaw:\n emoji: \"🌐\"\n---\n\n# Browserless Browser Automation\n\nUse Browserless for headless Chrome browser automation, web scraping, screenshots, and PDF generation.\n\n## Connection Details\n\n- **Host:** \\`{{BROWSERLESS_HOST}}\\`\n- **Port:** \\`{{BROWSERLESS_PORT}}\\`\n- **Token:** Uses \\`BROWSERLESS_TOKEN\\` env var\n\n## Example API Calls\n\n### Take a screenshot\n\\`\\`\\`bash\ncurl -X POST \"http://{{BROWSERLESS_HOST}}:{{BROWSERLESS_PORT}}/screenshot?token=$BROWSERLESS_TOKEN\" \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"url\": \"https://example.com\", \"options\": {\"fullPage\": true}}' \\\\\n --output screenshot.png\n\\`\\`\\`\n\n### Generate a PDF\n\\`\\`\\`bash\ncurl -X POST \"http://{{BROWSERLESS_HOST}}:{{BROWSERLESS_PORT}}/pdf?token=$BROWSERLESS_TOKEN\" \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"url\": \"https://example.com\"}' \\\\\n --output page.pdf\n\\`\\`\\`\n\n### Scrape page content\n\\`\\`\\`bash\ncurl -X POST \"http://{{BROWSERLESS_HOST}}:{{BROWSERLESS_PORT}}/content?token=$BROWSERLESS_TOKEN\" \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"url\": \"https://example.com\"}'\n\\`\\`\\`\n\n## Usage Notes\n\n- Browserless manages a pool of Chrome instances (max concurrent sessions configured via env).\n- Token authentication is required for all API calls.\n- Supports Puppeteer and Playwright WebSocket connections.\n`,\n\n\t\"searxng-search\": `---\nname: searxng-search\ndescription: \"Search the web using a privacy-respecting metasearch engine\"\nmetadata:\n openclaw:\n emoji: \"🔍\"\n---\n\n# SearXNG Web Search\n\nUse SearXNG as a privacy-respecting metasearch engine to query the web.\n\n## Connection Details\n\n- **Host:** \\`{{SEARXNG_HOST}}\\`\n- **Port:** \\`{{SEARXNG_PORT}}\\`\n\n## Example API Calls\n\n### Search the web\n\\`\\`\\`bash\ncurl \"http://{{SEARXNG_HOST}}:{{SEARXNG_PORT}}/search?q=your+search+query&format=json\"\n\\`\\`\\`\n\n### Search with category filter\n\\`\\`\\`bash\ncurl \"http://{{SEARXNG_HOST}}:{{SEARXNG_PORT}}/search?q=openai&categories=it&format=json\"\n\\`\\`\\`\n\n### Search with language filter\n\\`\\`\\`bash\ncurl \"http://{{SEARXNG_HOST}}:{{SEARXNG_PORT}}/search?q=hello&language=en&format=json\"\n\\`\\`\\`\n\n## Usage Notes\n\n- Always use \\`format=json\\` for machine-readable results.\n- Available categories: general, images, videos, news, map, music, it, science, files.\n- SearXNG aggregates results from many search engines without tracking.\n`,\n\n\t\"whisper-transcribe\": `---\nname: whisper-transcribe\ndescription: \"Transcribe audio files to text using Faster Whisper\"\nmetadata:\n openclaw:\n emoji: \"🎙️\"\n---\n\n# Whisper Transcription\n\nUse the Faster Whisper server for speech-to-text transcription.\n\n## Connection Details\n\n- **Host:** \\`{{WHISPER_HOST}}\\`\n- **Port:** \\`{{WHISPER_PORT}}\\`\n\n## Example API Calls\n\n### Transcribe an audio file\n\\`\\`\\`bash\ncurl -X POST \"http://{{WHISPER_HOST}}:{{WHISPER_PORT}}/v1/audio/transcriptions\" \\\\\n -F \"file=@/path/to/audio.mp3\" \\\\\n -F \"model=base\"\n\\`\\`\\`\n\n### Transcribe with language hint\n\\`\\`\\`bash\ncurl -X POST \"http://{{WHISPER_HOST}}:{{WHISPER_PORT}}/v1/audio/transcriptions\" \\\\\n -F \"file=@/path/to/audio.wav\" \\\\\n -F \"model=base\" \\\\\n -F \"language=en\"\n\\`\\`\\`\n\n### Get available models\n\\`\\`\\`bash\ncurl \"http://{{WHISPER_HOST}}:{{WHISPER_PORT}}/v1/models\"\n\\`\\`\\`\n\n## Usage Notes\n\n- Supports MP3, WAV, FLAC, and other common audio formats.\n- Model sizes: tiny, base, small, medium, large (larger = more accurate but slower).\n- GPU acceleration significantly improves transcription speed.\n`,\n\n\t\"ollama-local-llm\": `---\nname: ollama-local-llm\ndescription: \"Run local language models for text generation, chat, and embeddings\"\nmetadata:\n openclaw:\n emoji: \"🦙\"\n---\n\n# Ollama Local LLM\n\nUse Ollama to run large language models locally for text generation, chat, and embeddings.\n\n## Connection Details\n\n- **Host:** \\`{{OLLAMA_HOST}}\\`\n- **Port:** \\`{{OLLAMA_PORT}}\\`\n\n## Example API Calls\n\n### Generate text\n\\`\\`\\`bash\ncurl -X POST \"http://{{OLLAMA_HOST}}:{{OLLAMA_PORT}}/api/generate\" \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"model\": \"llama3.2\", \"prompt\": \"Explain quantum computing in simple terms\"}'\n\\`\\`\\`\n\n### Chat completion\n\\`\\`\\`bash\ncurl -X POST \"http://{{OLLAMA_HOST}}:{{OLLAMA_PORT}}/api/chat\" \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"model\": \"llama3.2\", \"messages\": [{\"role\": \"user\", \"content\": \"Hello!\"}]}'\n\\`\\`\\`\n\n### Pull a model\n\\`\\`\\`bash\ncurl -X POST \"http://{{OLLAMA_HOST}}:{{OLLAMA_PORT}}/api/pull\" \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"name\": \"llama3.2\"}'\n\\`\\`\\`\n\n### Generate embeddings\n\\`\\`\\`bash\ncurl -X POST \"http://{{OLLAMA_HOST}}:{{OLLAMA_PORT}}/api/embeddings\" \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"model\": \"nomic-embed-text\", \"prompt\": \"Hello world\"}'\n\\`\\`\\`\n\n## Usage Notes\n\n- Pull models before first use (they are cached in the persistent volume).\n- Recommended models: llama3.2 (general), codellama (code), nomic-embed-text (embeddings).\n- GPU passthrough dramatically improves inference speed.\n- The Ollama API is OpenAI-compatible at /v1/ endpoints.\n`,\n\n\t\"remotion-render\": `---\nname: remotion-render\ndescription: \"Create and render videos programmatically using React\"\nmetadata:\n openclaw:\n emoji: \"🎥\"\n---\n\n# Remotion Video Rendering\n\nUse Remotion Studio to create and render videos programmatically with React.\n\n## Connection Details\n\n- **Host:** \\`{{REMOTION_HOST}}\\`\n- **Port:** \\`{{REMOTION_PORT}}\\`\n\n## Example Usage\n\n### Access the Studio UI\nOpen \\`http://{{REMOTION_HOST}}:{{REMOTION_PORT}}\\` in your browser to use the Remotion Studio visual editor.\n\n### Render a video via CLI\n\\`\\`\\`bash\ndocker exec remotion npx remotion render src/index.tsx MyComposition out/video.mp4\n\\`\\`\\`\n\n### Render with custom props\n\\`\\`\\`bash\ndocker exec remotion npx remotion render src/index.tsx MyComposition out/video.mp4 \\\\\n --props='{\"title\": \"Hello World\"}'\n\\`\\`\\`\n\n## Usage Notes\n\n- Define video compositions in React components.\n- Remotion supports MP4, WebM, and GIF output formats.\n- Use the Studio UI for previewing before rendering.\n- Combine with FFmpeg for post-processing.\n`,\n\n\t\"lightpanda-browse\": `---\nname: lightpanda-browse\ndescription: \"Browse the web using the ultra-fast LightPanda headless browser via CDP\"\nmetadata:\n openclaw:\n emoji: \"🐼\"\n---\n\n# LightPanda Browse\n\nLightPanda is an ultra-fast headless browser available via CDP WebSocket at \\`ws://{{LIGHTPANDA_HOST}}:{{LIGHTPANDA_PORT}}\\`.\n\n## Connect via Puppeteer\n\n\\`\\`\\`javascript\nconst browser = await puppeteer.connect({\n browserWSEndpoint: \"ws://{{LIGHTPANDA_HOST}}:{{LIGHTPANDA_PORT}}\"\n});\nconst page = await browser.newPage();\nawait page.goto('https://example.com');\nconst content = await page.evaluate(() => document.body.innerText);\n\\`\\`\\`\n\n## Key Advantages\n\n- 9x less memory than Chrome (ideal for parallel scraping)\n- 11x faster page loading\n- Instant startup\n- Full CDP compatibility with Puppeteer and Playwright\n`,\n\n\t\"steel-browse\": `---\nname: steel-browse\ndescription: \"Browse the web using Steel Browser API with session management and anti-detection\"\nmetadata:\n openclaw:\n emoji: \"🔥\"\n---\n\n# Steel Browser\n\nSteel provides a REST API at \\`http://{{STEEL_HOST}}:{{STEEL_PORT}}\\` for AI agent web automation.\n\n## Create a Session\n\n\\`\\`\\`bash\ncurl -X POST http://{{STEEL_HOST}}:{{STEEL_PORT}}/v1/sessions \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"blockAds\": true}'\n\\`\\`\\`\n\n## Scrape a Page\n\n\\`\\`\\`bash\ncurl -X POST http://{{STEEL_HOST}}:{{STEEL_PORT}}/v1/scrape \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"url\": \"https://example.com\", \"format\": \"markdown\"}'\n\\`\\`\\`\n\n## Features\n\n- Session management with persistent cookies\n- Anti-detection and stealth plugins\n- Proxy support and IP rotation\n- Auto CAPTCHA solving\n- Puppeteer/Playwright/Selenium compatible\n`,\n\n\t\"code-sandbox\": `---\nname: code-sandbox\ndescription: \"Execute code safely in an isolated OpenSandbox container\"\nmetadata:\n openclaw:\n emoji: \"📦\"\n---\n\n# Code Sandbox\n\nExecute code safely in an isolated OpenSandbox container.\n\n## Description\n\nThis skill provides secure, containerized code execution for AI agents. Code runs in ephemeral Docker containers with resource limits, network isolation, and automatic cleanup.\n\n## Connection Details\n\n- **Host:** \\`{{OPENSANDBOX_HOST}}\\`\n- **Port:** \\`{{OPENSANDBOX_PORT}}\\`\n- **Auth:** API key (auto-configured)\n\n## Supported Languages\n\n- Python 3.12\n- JavaScript / TypeScript (Node.js 22)\n- Java 21\n- Go 1.24\n- Bash\n\n## Available Actions\n\n### execute_code\n\nRun a code snippet in a fresh sandbox.\n\n**Parameters:**\n- \\`language\\` (required): Programming language (\"python\", \"javascript\", \"typescript\", \"java\", \"go\", \"bash\")\n- \\`code\\` (required): The code to execute\n- \\`timeout_seconds\\` (optional): Max execution time (default: 60, max: 300)\n\n**Returns:** stdout, stderr, exit_code, execution_time_ms\n\n### execute_shell\n\nRun a shell command in an existing or new sandbox.\n\n**Parameters:**\n- \\`command\\` (required): Shell command to execute\n- \\`sandbox_id\\` (optional): Reuse an existing sandbox (for multi-step workflows)\n- \\`background\\` (optional): Run in background (default: false)\n\n**Returns:** stdout, stderr, exit_code\n\n### upload_file\n\nUpload a file to a sandbox for processing.\n\n**Parameters:**\n- \\`sandbox_id\\` (required): Target sandbox\n- \\`path\\` (required): Destination path inside sandbox\n- \\`content\\` (required): File content (text or base64 for binary)\n\n### download_file\n\nDownload a file from a sandbox.\n\n**Parameters:**\n- \\`sandbox_id\\` (required): Source sandbox\n- \\`path\\` (required): File path inside sandbox\n\n**Returns:** File content\n\n### list_sandboxes\n\nList active sandboxes on this instance.\n\n**Returns:** Array of { id, status, image, created_at, expires_at }\n\n### terminate_sandbox\n\nTerminate a running sandbox immediately.\n\n**Parameters:**\n- \\`sandbox_id\\` (required): Sandbox to terminate\n\n### create_desktop\n\nCreate a GUI desktop sandbox with VNC access (for Homespace live preview).\n\n**Parameters:**\n- \\`image\\` (optional): Desktop image (default: \"opensandbox/desktop:latest\", also: \"opensandbox/chrome:latest\", \"opensandbox/vscode:latest\")\n- \\`resolution\\` (optional): Screen resolution (default: \"1280x800x24\")\n\n**Returns:** sandbox_id, vnc_endpoint (port 5900), novnc_url (port 6080 WebSocket), devtools_url (port 9222, chrome only)\n\n### get_preview_url\n\nGet the browser-accessible noVNC URL for an existing desktop sandbox.\n\n**Parameters:**\n- \\`sandbox_id\\` (required): Desktop sandbox ID\n\n**Returns:** novnc_url (embeddable in iframe), vnc_endpoint, status\n\n## Examples\n\n### Run Python code\n\n\\`\\`\\`bash\ncurl -X POST http://{{OPENSANDBOX_HOST}}:{{OPENSANDBOX_PORT}}/v1/sandboxes \\\\\n -H \"Authorization: Bearer $OPENSANDBOX_API_KEY\" \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"image\": \"opensandbox/code-interpreter:python\"}'\n\\`\\`\\`\n\n### Execute code in a sandbox\n\n\\`\\`\\`bash\ncurl -X POST http://{{OPENSANDBOX_HOST}}:{{OPENSANDBOX_PORT}}/v1/sandboxes/{id}/code \\\\\n -H \"Authorization: Bearer $OPENSANDBOX_API_KEY\" \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"language\": \"python\", \"code\": \"print(42 * 42)\"}'\n\\`\\`\\`\n\n## Configuration\n\n- **Default timeout:** 60 seconds\n- **Max concurrent sandboxes:** Determined by VPS RAM\n- **Idle cleanup:** Sandboxes with no activity for 30 minutes are auto-terminated\n- **Network:** Bridge mode (isolated from host services)\n- **Security:** gVisor runtime, capability dropping, PID limits\n\n## Limitations\n\n- No persistent storage between sandbox sessions (ephemeral by design)\n- No GPU access (CPU-only execution)\n- No outbound network access by default (egress blocked)\n- Max 512 PIDs per sandbox (fork bomb protection)\n- Memory capped per sandbox (default 512MB)\n`,\n};\n\n/**\n * Generates SKILL.md files for each service that has skills defined.\n *\n * Returns a map of file paths (relative to project root) to file contents.\n * Handlebars is used to replace `{{VAR}}` placeholders with actual values\n * from each service's `openclawEnvVars`.\n */\nexport function generateSkillFiles(resolved: ResolverOutput): Record<string, string> {\n\tconst files: Record<string, string> = {};\n\n\tfor (const { definition } of resolved.services) {\n\t\tif (definition.skills.length === 0) continue;\n\n\t\t// Build a variable map from openclawEnvVars for Handlebars\n\t\tconst vars: Record<string, string> = {};\n\t\tfor (const envVar of definition.openclawEnvVars) {\n\t\t\t// Resolve ${REFERENCES} to the default value (just strip the ${} wrapper)\n\t\t\tconst val = envVar.defaultValue.startsWith(\"${\")\n\t\t\t\t? envVar.defaultValue.slice(2, -1)\n\t\t\t\t: envVar.defaultValue;\n\t\t\tvars[envVar.key] = val;\n\t\t}\n\n\t\tfor (const skill of definition.skills) {\n\t\t\tconst template = skillTemplates[skill.skillId];\n\t\t\tif (!template) {\n\t\t\t\t// Generate a generic skill file if no template exists\n\t\t\t\tconst generic = generateGenericSkill(\n\t\t\t\t\tskill.skillId,\n\t\t\t\t\tdefinition.name,\n\t\t\t\t\tdefinition.icon,\n\t\t\t\t\tdefinition.description,\n\t\t\t\t\tvars,\n\t\t\t\t);\n\t\t\t\tfiles[`openclaw/workspace/skills/${skill.skillId}/SKILL.md`] = generic;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst compiled = Handlebars.compile(template, { noEscape: true });\n\t\t\tconst rendered = compiled(vars);\n\t\t\tfiles[`openclaw/workspace/skills/${skill.skillId}/SKILL.md`] = rendered;\n\t\t}\n\t}\n\n\treturn files;\n}\n\n/**\n * Generate a generic SKILL.md for skills that don't have a dedicated template.\n */\nfunction generateGenericSkill(\n\tskillId: string,\n\tserviceName: string,\n\ticon: string,\n\tdescription: string,\n\tvars: Record<string, string>,\n): string {\n\tconst title = skillId\n\t\t.split(\"-\")\n\t\t.map((w) => w.charAt(0).toUpperCase() + w.slice(1))\n\t\t.join(\" \");\n\n\tconst envSection = Object.entries(vars)\n\t\t.map(([key, value]) => `- **${key}:** \\`${value}\\``)\n\t\t.join(\"\\n\");\n\n\treturn `---\nname: ${skillId}\ndescription: \"${description}\"\nmetadata:\n openclaw:\n emoji: \"${icon}\"\n---\n\n# ${title}\n\nInteract with ${serviceName} through this skill.\n\n## Connection Details\n\n${envSection || \"No specific connection variables configured.\"}\n\n## Usage Notes\n\n- This skill provides OpenClaw access to ${serviceName}.\n- Refer to the service documentation for available API endpoints.\n`;\n}\n"],"mappings":";;;;;;;;AASA,MAAM,iBAAyC;CAC9C,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyCf,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8CjB,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+Cf,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6ClB,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiDjB,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkDtB,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyClB,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8CtB,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuDpB,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyCnB,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BrB,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqChB,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6IhB;;;;;;;;AASD,SAAgB,mBAAmB,UAAkD;CACpF,MAAM,QAAgC,EAAE;AAExC,MAAK,MAAM,EAAE,gBAAgB,SAAS,UAAU;AAC/C,MAAI,WAAW,OAAO,WAAW,EAAG;EAGpC,MAAM,OAA+B,EAAE;AACvC,OAAK,MAAM,UAAU,WAAW,iBAAiB;GAEhD,MAAM,MAAM,OAAO,aAAa,WAAW,KAAK,GAC7C,OAAO,aAAa,MAAM,GAAG,GAAG,GAChC,OAAO;AACV,QAAK,OAAO,OAAO;;AAGpB,OAAK,MAAM,SAAS,WAAW,QAAQ;GACtC,MAAM,WAAW,eAAe,MAAM;AACtC,OAAI,CAAC,UAAU;IAEd,MAAM,UAAU,qBACf,MAAM,SACN,WAAW,MACX,WAAW,MACX,WAAW,aACX,KACA;AACD,UAAM,6BAA6B,MAAM,QAAQ,cAAc;AAC/D;;GAID,MAAM,WADW,WAAW,QAAQ,UAAU,EAAE,UAAU,MAAM,CAAC,CACvC,KAAK;AAC/B,SAAM,6BAA6B,MAAM,QAAQ,cAAc;;;AAIjE,QAAO;;;;;AAMR,SAAS,qBACR,SACA,aACA,MACA,aACA,MACS;AAUT,QAAO;QACA,QAAQ;gBACA,YAAY;;;cAGd,KAAK;;;IAdJ,QACZ,MAAM,IAAI,CACV,KAAK,MAAM,EAAE,OAAO,EAAE,CAAC,aAAa,GAAG,EAAE,MAAM,EAAE,CAAC,CAClD,KAAK,IAAI,CAcF;;gBAEM,YAAY;;;;EAdR,OAAO,QAAQ,KAAK,CACrC,KAAK,CAAC,KAAK,WAAW,OAAO,IAAI,QAAQ,MAAM,IAAI,CACnD,KAAK,KAAK,IAgBG,+CAA+C;;;;2CAIpB,YAAY"}
|
package/dist/index.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_skills = require("./skills-
|
|
2
|
+
const require_skills = require("./skills-BSF7iNa4.cjs");
|
|
3
3
|
const require_generators_postgres_init = require("./generators/postgres-init.cjs");
|
|
4
4
|
const require_composer = require("./composer.cjs");
|
|
5
5
|
const require_services_registry = require("./services/registry.cjs");
|
package/dist/index.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { A as PortMappingSchema, B as SkillBindingSchema, C as MaturitySchema, D as OpenclawInstallMethodSchema, E as OpenclawImageVariantSchema, F as ResolverOutputSchema, G as ValidateResponseSchema, H as SkippedServiceReasonSchema, I as ResourceLimitsSchema, K as VolumeMappingSchema, L as RestartPolicySchema, M as ProxyRouteSchema, N as ProxyTypeSchema, O as OutputFormatSchema, P as ResolvedServiceSchema, R as ServiceCategorySchema, S as HealthCheckSchema, T as NativeRecipeSchema, U as SkippedServiceSchema, V as SkillPackSchema, W as ValidateRequestSchema, _ as EnvVariableSchema, a as AddonStackUpdateResultSchema, b as GitSourceSchema, c as BuildContextSchema, d as DeploySchema, f as DeployTargetSchema, g as EnvQuirkSchema, h as EnvQuirkFixSchema, i as AddonStackUpdateInputSchema, j as PresetSchema, k as PlatformSchema, l as ComposeOptionsSchema, m as DeploymentTypeSchema, n as AddonStackInputSchema, p as DeploymentTargetSchema, q as WarningSchema, r as AddonStackResultSchema, s as ApiErrorSchema, t as AddedDependencySchema, v as ErrorSchema, w as NativePlatformSchema, y as GenerationInputSchema, z as ServiceDefinitionSchema } from "./schema-
|
|
1
|
+
import { A as PortMappingSchema, B as SkillBindingSchema, C as MaturitySchema, D as OpenclawInstallMethodSchema, E as OpenclawImageVariantSchema, F as ResolverOutputSchema, G as ValidateResponseSchema, H as SkippedServiceReasonSchema, I as ResourceLimitsSchema, K as VolumeMappingSchema, L as RestartPolicySchema, M as ProxyRouteSchema, N as ProxyTypeSchema, O as OutputFormatSchema, P as ResolvedServiceSchema, R as ServiceCategorySchema, S as HealthCheckSchema, T as NativeRecipeSchema, U as SkippedServiceSchema, V as SkillPackSchema, W as ValidateRequestSchema, _ as EnvVariableSchema, a as AddonStackUpdateResultSchema, b as GitSourceSchema, c as BuildContextSchema, d as DeploySchema, f as DeployTargetSchema, g as EnvQuirkSchema, h as EnvQuirkFixSchema, i as AddonStackUpdateInputSchema, j as PresetSchema, k as PlatformSchema, l as ComposeOptionsSchema, m as DeploymentTypeSchema, n as AddonStackInputSchema, p as DeploymentTargetSchema, q as WarningSchema, r as AddonStackResultSchema, s as ApiErrorSchema, t as AddedDependencySchema, v as ErrorSchema, w as NativePlatformSchema, y as GenerationInputSchema, z as ServiceDefinitionSchema } from "./schema-BQnZrcw8.cjs";
|
|
2
2
|
import { AddedDependency, AddonStackInput, AddonStackResult, AddonStackUpdateInput, AddonStackUpdateResult, AiProvider, ApiError, BuildContext, CategoryInfo, ComposeOptions, Deploy, DeployTarget, DeploymentTarget, DeploymentType, EnvQuirk, EnvQuirkFix, EnvVariable, GeneratedFiles, GenerationInput, GenerationMetadata, GenerationResult, GitSource, GsdRuntime, HealthCheck, Maturity, NativePlatform, NativeRecipe, OpenclawImageVariant, OpenclawInstallMethod, OutputFormat, Platform, PortMapping, Preset, ProxyRoute, ProxyType, ResolvedService, ResolverError, ResolverInput, ResolverOutput, ResourceLimits, RestartPolicy, SERVICE_CATEGORIES, ServiceCategory, ServiceDefinition, SkillBinding, SkillPack, SkippedService, ValidateRequest, ValidateResponse, VolumeMapping, Warning } from "./types.cjs";
|
|
3
3
|
import { generateAddonStack, updateAddonStack } from "./addon-stack.cjs";
|
|
4
4
|
import { partitionBareMetal, platformToNativePlatform, resolvedWithOnlyServices } from "./bare-metal-partition.cjs";
|
package/dist/index.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { A as PortMappingSchema, B as SkillBindingSchema, C as MaturitySchema, D as OpenclawInstallMethodSchema, E as OpenclawImageVariantSchema, F as ResolverOutputSchema, G as ValidateResponseSchema, H as SkippedServiceReasonSchema, I as ResourceLimitsSchema, K as VolumeMappingSchema, L as RestartPolicySchema, M as ProxyRouteSchema, N as ProxyTypeSchema, O as OutputFormatSchema, P as ResolvedServiceSchema, R as ServiceCategorySchema, S as HealthCheckSchema, T as NativeRecipeSchema, U as SkippedServiceSchema, V as SkillPackSchema, W as ValidateRequestSchema, _ as EnvVariableSchema, a as AddonStackUpdateResultSchema, b as GitSourceSchema, c as BuildContextSchema, d as DeploySchema, f as DeployTargetSchema, g as EnvQuirkSchema, h as EnvQuirkFixSchema, i as AddonStackUpdateInputSchema, j as PresetSchema, k as PlatformSchema, l as ComposeOptionsSchema, m as DeploymentTypeSchema, n as AddonStackInputSchema, p as DeploymentTargetSchema, q as WarningSchema, r as AddonStackResultSchema, s as ApiErrorSchema, t as AddedDependencySchema, v as ErrorSchema, w as NativePlatformSchema, y as GenerationInputSchema, z as ServiceDefinitionSchema } from "./schema-
|
|
1
|
+
import { A as PortMappingSchema, B as SkillBindingSchema, C as MaturitySchema, D as OpenclawInstallMethodSchema, E as OpenclawImageVariantSchema, F as ResolverOutputSchema, G as ValidateResponseSchema, H as SkippedServiceReasonSchema, I as ResourceLimitsSchema, K as VolumeMappingSchema, L as RestartPolicySchema, M as ProxyRouteSchema, N as ProxyTypeSchema, O as OutputFormatSchema, P as ResolvedServiceSchema, R as ServiceCategorySchema, S as HealthCheckSchema, T as NativeRecipeSchema, U as SkippedServiceSchema, V as SkillPackSchema, W as ValidateRequestSchema, _ as EnvVariableSchema, a as AddonStackUpdateResultSchema, b as GitSourceSchema, c as BuildContextSchema, d as DeploySchema, f as DeployTargetSchema, g as EnvQuirkSchema, h as EnvQuirkFixSchema, i as AddonStackUpdateInputSchema, j as PresetSchema, k as PlatformSchema, l as ComposeOptionsSchema, m as DeploymentTypeSchema, n as AddonStackInputSchema, p as DeploymentTargetSchema, q as WarningSchema, r as AddonStackResultSchema, s as ApiErrorSchema, t as AddedDependencySchema, v as ErrorSchema, w as NativePlatformSchema, y as GenerationInputSchema, z as ServiceDefinitionSchema } from "./schema-SBpL0bdI.mjs";
|
|
2
2
|
import { AddedDependency, AddonStackInput, AddonStackResult, AddonStackUpdateInput, AddonStackUpdateResult, AiProvider, ApiError, BuildContext, CategoryInfo, ComposeOptions, Deploy, DeployTarget, DeploymentTarget, DeploymentType, EnvQuirk, EnvQuirkFix, EnvVariable, GeneratedFiles, GenerationInput, GenerationMetadata, GenerationResult, GitSource, GsdRuntime, HealthCheck, Maturity, NativePlatform, NativeRecipe, OpenclawImageVariant, OpenclawInstallMethod, OutputFormat, Platform, PortMapping, Preset, ProxyRoute, ProxyType, ResolvedService, ResolverError, ResolverInput, ResolverOutput, ResourceLimits, RestartPolicy, SERVICE_CATEGORIES, ServiceCategory, ServiceDefinition, SkillBinding, SkillPack, SkippedService, ValidateRequest, ValidateResponse, VolumeMapping, Warning } from "./types.mjs";
|
|
3
3
|
import { generateAddonStack, updateAddonStack } from "./addon-stack.mjs";
|
|
4
4
|
import { partitionBareMetal, platformToNativePlatform, resolvedWithOnlyServices } from "./bare-metal-partition.mjs";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const require_skills = require("../skills-
|
|
1
|
+
const require_skills = require("../skills-BSF7iNa4.cjs");
|
|
2
2
|
const require_resolver = require("../resolver.cjs");
|
|
3
3
|
const require_generate = require("../generate.cjs");
|
|
4
4
|
const require_presets_registry = require("./registry.cjs");
|
|
@@ -1088,6 +1088,7 @@ declare const AddonStackResultSchema: z.ZodObject<{
|
|
|
1088
1088
|
}>>;
|
|
1089
1089
|
stripPrefix: z.ZodDefault<z.ZodBoolean>;
|
|
1090
1090
|
}, z.core.$strip>>;
|
|
1091
|
+
additionalFiles: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
1091
1092
|
metadata: z.ZodObject<{
|
|
1092
1093
|
serviceCount: z.ZodNumber;
|
|
1093
1094
|
skillCount: z.ZodNumber;
|
|
@@ -1109,6 +1110,10 @@ declare const AddonStackResultSchema: z.ZodObject<{
|
|
|
1109
1110
|
}, z.core.$strip>>;
|
|
1110
1111
|
generatedSecretKeys: z.ZodArray<z.ZodString>;
|
|
1111
1112
|
portAssignments: z.ZodRecord<z.ZodString, z.ZodNumber>;
|
|
1113
|
+
prePullImages: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
1114
|
+
image: z.ZodString;
|
|
1115
|
+
priority: z.ZodUnion<readonly [z.ZodLiteral<1>, z.ZodLiteral<2>, z.ZodLiteral<3>]>;
|
|
1116
|
+
}, z.core.$strip>>>;
|
|
1112
1117
|
}, z.core.$strip>;
|
|
1113
1118
|
warnings: z.ZodArray<z.ZodString>;
|
|
1114
1119
|
}, z.core.$strip>;
|
|
@@ -1258,4 +1263,4 @@ declare const ApiErrorSchema: z.ZodObject<{
|
|
|
1258
1263
|
}, z.core.$strip>;
|
|
1259
1264
|
//#endregion
|
|
1260
1265
|
export { PortMappingSchema as A, SkillBindingSchema as B, MaturitySchema as C, OpenclawInstallMethodSchema as D, OpenclawImageVariantSchema as E, ResolverOutputSchema as F, ValidateResponseSchema as G, SkippedServiceReasonSchema as H, ResourceLimitsSchema as I, VolumeMappingSchema as K, RestartPolicySchema as L, ProxyRouteSchema as M, ProxyTypeSchema as N, OutputFormatSchema as O, ResolvedServiceSchema as P, ServiceCategorySchema as R, HealthCheckSchema as S, NativeRecipeSchema as T, SkippedServiceSchema as U, SkillPackSchema as V, ValidateRequestSchema as W, EnvVariableSchema as _, AddonStackUpdateResultSchema as a, GitSourceSchema as b, BuildContextSchema as c, DeploySchema as d, DeployTargetSchema as f, EnvQuirkSchema as g, EnvQuirkFixSchema as h, AddonStackUpdateInputSchema as i, PresetSchema as j, PlatformSchema as k, ComposeOptionsSchema as l, DeploymentTypeSchema as m, AddonStackInputSchema as n, AiProviderSchema as o, DeploymentTargetSchema as p, WarningSchema as q, AddonStackResultSchema as r, ApiErrorSchema as s, AddedDependencySchema as t, ComposePlatformSchema as u, ErrorSchema as v, NativePlatformSchema as w, GsdRuntimeSchema as x, GenerationInputSchema as y, ServiceDefinitionSchema as z };
|
|
1261
|
-
//# sourceMappingURL=schema-
|
|
1266
|
+
//# sourceMappingURL=schema-BQnZrcw8.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-
|
|
1
|
+
{"version":3,"file":"schema-BQnZrcw8.d.cts","names":[],"sources":["../src/schema.ts"],"mappings":"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"}
|
|
@@ -1088,6 +1088,7 @@ declare const AddonStackResultSchema: z.ZodObject<{
|
|
|
1088
1088
|
}>>;
|
|
1089
1089
|
stripPrefix: z.ZodDefault<z.ZodBoolean>;
|
|
1090
1090
|
}, z.core.$strip>>;
|
|
1091
|
+
additionalFiles: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
1091
1092
|
metadata: z.ZodObject<{
|
|
1092
1093
|
serviceCount: z.ZodNumber;
|
|
1093
1094
|
skillCount: z.ZodNumber;
|
|
@@ -1109,6 +1110,10 @@ declare const AddonStackResultSchema: z.ZodObject<{
|
|
|
1109
1110
|
}, z.core.$strip>>;
|
|
1110
1111
|
generatedSecretKeys: z.ZodArray<z.ZodString>;
|
|
1111
1112
|
portAssignments: z.ZodRecord<z.ZodString, z.ZodNumber>;
|
|
1113
|
+
prePullImages: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
1114
|
+
image: z.ZodString;
|
|
1115
|
+
priority: z.ZodUnion<readonly [z.ZodLiteral<1>, z.ZodLiteral<2>, z.ZodLiteral<3>]>;
|
|
1116
|
+
}, z.core.$strip>>>;
|
|
1112
1117
|
}, z.core.$strip>;
|
|
1113
1118
|
warnings: z.ZodArray<z.ZodString>;
|
|
1114
1119
|
}, z.core.$strip>;
|
|
@@ -1258,4 +1263,4 @@ declare const ApiErrorSchema: z.ZodObject<{
|
|
|
1258
1263
|
}, z.core.$strip>;
|
|
1259
1264
|
//#endregion
|
|
1260
1265
|
export { PortMappingSchema as A, SkillBindingSchema as B, MaturitySchema as C, OpenclawInstallMethodSchema as D, OpenclawImageVariantSchema as E, ResolverOutputSchema as F, ValidateResponseSchema as G, SkippedServiceReasonSchema as H, ResourceLimitsSchema as I, VolumeMappingSchema as K, RestartPolicySchema as L, ProxyRouteSchema as M, ProxyTypeSchema as N, OutputFormatSchema as O, ResolvedServiceSchema as P, ServiceCategorySchema as R, HealthCheckSchema as S, NativeRecipeSchema as T, SkippedServiceSchema as U, SkillPackSchema as V, ValidateRequestSchema as W, EnvVariableSchema as _, AddonStackUpdateResultSchema as a, GitSourceSchema as b, BuildContextSchema as c, DeploySchema as d, DeployTargetSchema as f, EnvQuirkSchema as g, EnvQuirkFixSchema as h, AddonStackUpdateInputSchema as i, PresetSchema as j, PlatformSchema as k, ComposeOptionsSchema as l, DeploymentTypeSchema as m, AddonStackInputSchema as n, AiProviderSchema as o, DeploymentTargetSchema as p, WarningSchema as q, AddonStackResultSchema as r, ApiErrorSchema as s, AddedDependencySchema as t, ComposePlatformSchema as u, ErrorSchema as v, NativePlatformSchema as w, GsdRuntimeSchema as x, GenerationInputSchema as y, ServiceDefinitionSchema as z };
|
|
1261
|
-
//# sourceMappingURL=schema-
|
|
1266
|
+
//# sourceMappingURL=schema-SBpL0bdI.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-
|
|
1
|
+
{"version":3,"file":"schema-SBpL0bdI.d.mts","names":[],"sources":["../src/schema.ts"],"mappings":"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"}
|
package/dist/schema.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
require("./skills-
|
|
2
|
+
require("./skills-BSF7iNa4.cjs");
|
|
3
3
|
let zod = require("zod");
|
|
4
4
|
//#region src/schema.ts
|
|
5
5
|
const ServiceCategorySchema = zod.z.enum([
|
|
@@ -392,6 +392,7 @@ const AddonStackResultSchema = zod.z.object({
|
|
|
392
392
|
skillFiles: zod.z.record(zod.z.string(), zod.z.string()),
|
|
393
393
|
openclawConfigPatch: zod.z.object({ skills: zod.z.object({ entries: zod.z.record(zod.z.string(), zod.z.object({ enabled: zod.z.boolean() })) }) }),
|
|
394
394
|
proxyRoutes: zod.z.array(ProxyRouteSchema),
|
|
395
|
+
additionalFiles: zod.z.record(zod.z.string(), zod.z.string()).default({}),
|
|
395
396
|
metadata: zod.z.object({
|
|
396
397
|
serviceCount: zod.z.number(),
|
|
397
398
|
skillCount: zod.z.number(),
|
|
@@ -399,7 +400,15 @@ const AddonStackResultSchema = zod.z.object({
|
|
|
399
400
|
resolvedServices: zod.z.array(zod.z.string()),
|
|
400
401
|
skippedServices: zod.z.array(SkippedServiceSchema),
|
|
401
402
|
generatedSecretKeys: zod.z.array(zod.z.string()),
|
|
402
|
-
portAssignments: zod.z.record(zod.z.string(), zod.z.number())
|
|
403
|
+
portAssignments: zod.z.record(zod.z.string(), zod.z.number()),
|
|
404
|
+
prePullImages: zod.z.array(zod.z.object({
|
|
405
|
+
image: zod.z.string(),
|
|
406
|
+
priority: zod.z.union([
|
|
407
|
+
zod.z.literal(1),
|
|
408
|
+
zod.z.literal(2),
|
|
409
|
+
zod.z.literal(3)
|
|
410
|
+
])
|
|
411
|
+
})).default([])
|
|
403
412
|
}),
|
|
404
413
|
warnings: zod.z.array(zod.z.string())
|
|
405
414
|
});
|
package/dist/schema.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.cjs","names":["z"],"sources":["../src/schema.ts"],"sourcesContent":["import { z } from \"zod\";\n\n// ─── Enums ──────────────────────────────────────────────────────────────────\n\nexport const ServiceCategorySchema = z.enum([\n\t\"automation\",\n\t\"vector-db\",\n\t\"media\",\n\t\"storage\",\n\t\"database\",\n\t\"proxy\",\n\t\"monitoring\",\n\t\"browser\",\n\t\"search\",\n\t\"ai\",\n\t\"communication\",\n\t\"coding-agent\",\n\t\"social-media\",\n\t\"analytics\",\n\t\"ai-platform\",\n\t\"dev-tools\",\n\t\"knowledge\",\n\t\"desktop\",\n\t\"streaming\",\n\t\"security\",\n\t\"billing\",\n\t\"crm\",\n\t\"email-marketing\",\n\t\"forms\",\n\t\"api-gateway\",\n\t\"backup\",\n\t\"voice\",\n\t\"ecommerce\",\n\t\"collaboration\",\n\t\"ai-observability\",\n\t\"fine-tuning\",\n\t\"project-management\",\n\t\"business-intelligence\",\n\t\"dns-networking\",\n\t\"iot\",\n\t\"saas-boilerplate\",\n]);\n\nexport const MaturitySchema = z.enum([\"stable\", \"beta\", \"experimental\"]);\n\nexport const PlatformSchema = z.enum([\n\t\"linux/amd64\",\n\t\"linux/arm64\",\n\t\"windows/amd64\",\n\t\"macos/amd64\",\n\t\"macos/arm64\",\n]);\n\n/** Platform for Docker image arch only (used by resolver/compose). */\nexport const ComposePlatformSchema = z.enum([\"linux/amd64\", \"linux/arm64\"]);\n\nexport const DeploymentTypeSchema = z.enum([\"docker\", \"bare-metal\", \"local\"]);\n\nexport const RestartPolicySchema = z.enum([\"unless-stopped\", \"always\", \"on-failure\", \"no\"]);\n\nexport const ProxyTypeSchema = z.enum([\"none\", \"caddy\", \"traefik\"]);\n\nexport const DeploymentTargetSchema = z.enum([\"local\", \"vps\", \"homelab\", \"clawexa\"]);\n\nexport const OutputFormatSchema = z.enum([\"directory\", \"tar\", \"zip\"]);\n\nexport const OpenclawImageVariantSchema = z.enum([\"official\", \"coolify\", \"alpine\"]);\n\nexport const OpenclawInstallMethodSchema = z.enum([\"docker\", \"direct\"]);\n\nexport const DeployTargetSchema = z.enum([\"local\", \"cloud-init\"]);\n\nexport const AiProviderSchema = z.enum([\n\t\"openai\",\n\t\"anthropic\",\n\t\"google\",\n\t\"xai\",\n\t\"deepseek\",\n\t\"groq\",\n\t\"openrouter\",\n\t\"mistral\",\n\t\"together\",\n\t\"ollama\",\n\t\"ollama-cloud\",\n\t\"lmstudio\",\n\t\"vllm\",\n]);\n\nexport const GsdRuntimeSchema = z.enum([\"claude\", \"opencode\", \"gemini\", \"codex\"]);\n\n// ─── Sub-Schemas ────────────────────────────────────────────────────────────\n\nexport const PortMappingSchema = z.object({\n\thost: z.number().int().min(1).max(65535),\n\tcontainer: z.number().int().min(1).max(65535),\n\tdescription: z.string(),\n\texposed: z.boolean().default(true),\n});\n\nexport const VolumeMappingSchema = z.object({\n\tname: z.string().min(1),\n\tcontainerPath: z.string().min(1),\n\tdescription: z.string(),\n\tdriver: z.string().optional(),\n});\n\nexport const EnvVariableSchema = z.object({\n\tkey: z.string().min(1),\n\tdefaultValue: z.string(),\n\tsecret: z.boolean().default(false),\n\tdescription: z.string(),\n\trequired: z.boolean().default(true),\n\tvalidation: z.string().optional(),\n});\n\nexport const HealthCheckSchema = z.object({\n\ttest: z.string().min(1),\n\tinterval: z.string().default(\"30s\"),\n\ttimeout: z.string().default(\"10s\"),\n\tretries: z.number().int().min(1).default(3),\n\tstartPeriod: z.string().optional(),\n});\n\nexport const ResourceLimitsSchema = z.object({\n\tcpus: z.string().optional(),\n\tmemory: z.string().optional(),\n});\n\nexport const DeploySchema = z.object({\n\tresources: z\n\t\t.object({\n\t\t\tlimits: ResourceLimitsSchema.optional(),\n\t\t\treservations: ResourceLimitsSchema.optional(),\n\t\t})\n\t\t.optional(),\n});\n\nexport const SkillBindingSchema = z.object({\n\tskillId: z.string().min(1),\n\tautoInstall: z.boolean().default(true),\n\tconfigOverrides: z.record(z.string(), z.string()).optional(),\n});\n\n/** Platform for native install (linux, windows, macos — no arch). */\nexport const NativePlatformSchema = z.enum([\"linux\", \"windows\", \"macos\"]);\n\nexport const NativeRecipeSchema = z.object({\n\tplatform: NativePlatformSchema,\n\tinstallSteps: z.array(z.string()).min(1),\n\tstartCommand: z.string(),\n\tstopCommand: z.string().optional(),\n\tconfigPath: z.string().optional(),\n\tconfigTemplate: z.string().optional(),\n\tsystemdUnit: z.string().optional(),\n});\n\n// ─── Git Source / Build Context (for repo-based services) ───────────────────\n\nexport const GitSourceSchema = z.object({\n\t/** Git clone URL, e.g. \"https://github.com/wasp-lang/open-saas.git\" */\n\trepoUrl: z.string().url(),\n\t/** Branch or tag to clone. Defaults to repo's default branch. */\n\tbranch: z.string().optional(),\n\t/** Subdirectory within the cloned repo to use as build context root. */\n\tsubdirectory: z.string().optional(),\n\t/** Commands to run after cloning (e.g. \"cp .env.example .env\"). */\n\tpostCloneCommands: z.array(z.string()).default([]),\n});\n\nexport const BuildContextSchema = z.object({\n\t/** Path to Dockerfile relative to the context root. Defaults to \"Dockerfile\". */\n\tdockerfile: z.string().optional(),\n\t/** Build context path relative to the subdirectory root. Defaults to \".\". */\n\tcontext: z.string().default(\".\"),\n\t/** Docker build args to pass at build time. */\n\targs: z.record(z.string(), z.string()).optional(),\n\t/** Target stage in a multi-stage Dockerfile. */\n\ttarget: z.string().optional(),\n});\n\n// ─── Env Quirks (for addon stack generation) ────────────────────────────────\n\nexport const EnvQuirkFixSchema = z.object({\n\ttype: z.enum([\"set_value\", \"generate_hex\", \"generate_base64url\", \"sync_with\"]),\n\t/** Fixed value to set (for set_value type). */\n\tvalue: z.string().optional(),\n\t/** Minimum bytes for generated secrets (for generate_hex/generate_base64url). */\n\tminBytes: z.number().int().min(1).optional(),\n\t/** Key to synchronize with (for sync_with type). */\n\tsyncKey: z.string().optional(),\n});\n\nexport const EnvQuirkSchema = z.object({\n\tkey: z.string(),\n\tissue: z.enum([\"empty_string_crashes\", \"min_length\", \"must_sync\"]),\n\tfix: EnvQuirkFixSchema,\n});\n\n// ─── Service Definition ─────────────────────────────────────────────────────\n\nexport const ServiceDefinitionSchema = z.object({\n\t// Identity\n\tid: z\n\t\t.string()\n\t\t.min(1)\n\t\t.regex(/^[a-z0-9-]+$/),\n\tname: z.string().min(1),\n\tdescription: z.string(),\n\tcategory: ServiceCategorySchema,\n\ticon: z.string(),\n\n\t// Docker (required for image-based services, omitted for git-based)\n\timage: z.string().min(1).optional(),\n\timageTag: z.string().min(1).optional(),\n\n\t// Git source (for services built from cloned repositories)\n\tgitSource: GitSourceSchema.optional(),\n\tbuildContext: BuildContextSchema.optional(),\n\tports: z.array(PortMappingSchema).default([]),\n\tvolumes: z.array(VolumeMappingSchema).default([]),\n\tenvironment: z.array(EnvVariableSchema).default([]),\n\thealthcheck: HealthCheckSchema.optional(),\n\tcommand: z.string().optional(),\n\tentrypoint: z.string().optional(),\n\tdependsOn: z.array(z.string()).default([]),\n\trestartPolicy: RestartPolicySchema.default(\"unless-stopped\"),\n\tnetworks: z.array(z.string()).default([\"openclaw-network\"]),\n\tlabels: z.record(z.string(), z.string()).optional(),\n\tdeploy: DeploySchema.optional(),\n\n\t// OpenClaw Integration\n\tskills: z.array(SkillBindingSchema).default([]),\n\topenclawEnvVars: z.array(EnvVariableSchema).default([]),\n\topenclawVolumeMounts: z.array(VolumeMappingSchema).optional(),\n\n\t// Metadata\n\tdocsUrl: z.string().url(),\n\tselfHostedDocsUrl: z.string().url().optional(),\n\ttags: z.array(z.string()).default([]),\n\tmaturity: MaturitySchema.default(\"stable\"),\n\n\t// Dependencies & Conflicts\n\trequires: z.array(z.string()).default([]),\n\trecommends: z.array(z.string()).default([]),\n\tconflictsWith: z.array(z.string()).default([]),\n\tmandatory: z.boolean().default(false).optional(),\n\tremovalWarning: z.string().optional(),\n\n\t// Platform Constraints\n\tplatforms: z.array(PlatformSchema).optional(),\n\tminMemoryMB: z.number().int().min(0).optional(),\n\tgpuRequired: z.boolean().default(false),\n\n\t// Bare-metal native (install/run on host when no Docker)\n\tnativeSupported: z.boolean().optional(),\n\tnativeRecipes: z.array(NativeRecipeSchema).optional(),\n\n\t// Clawexa addon metadata\n\t/** Whether the service works with cap_drop: ALL (default: undefined = not audited). */\n\tcapDropCompatible: z.boolean().optional(),\n\t/** Pre-built Docker image for cloud-init deployment (replaces build: directives). */\n\tprebuiltImage: z.string().optional(),\n\t/** Default reverse proxy path (e.g. \"/n8n\", \"/grafana\"). */\n\tproxyPath: z.string().optional(),\n\t/** Linux capabilities needed at first boot (e.g. [\"CHOWN\", \"SETGID\"]). */\n\tfirstBootCapabilities: z.array(z.string()).optional(),\n\t/** Known environment variable quirks that need special handling. */\n\tenvQuirks: z.array(EnvQuirkSchema).optional(),\n});\n\n// ─── Skill Pack ─────────────────────────────────────────────────────────────\n\nexport const SkillPackSchema = z.object({\n\tid: z\n\t\t.string()\n\t\t.min(1)\n\t\t.regex(/^[a-z0-9-]+$/),\n\tname: z.string().min(1),\n\tdescription: z.string(),\n\trequiredServices: z.array(z.string()).min(1),\n\tskills: z.array(z.string()),\n\ticon: z.string().optional(),\n\ttags: z.array(z.string()).default([]),\n});\n\n// ─── Preset ─────────────────────────────────────────────────────────────────\n\nexport const PresetSchema = z.object({\n\tid: z\n\t\t.string()\n\t\t.min(1)\n\t\t.regex(/^[a-z0-9-]+$/),\n\tname: z.string().min(1),\n\tdescription: z.string(),\n\tservices: z.array(z.string()),\n\tskillPacks: z.array(z.string()).default([]),\n\testimatedMemoryMB: z.number().int().min(0).optional(),\n});\n\n// ─── Generation Input ───────────────────────────────────────────────────────\n\nexport const GenerationInputSchema = z.object({\n\tconfigVersion: z.number().int().min(1).optional(),\n\tprojectName: z\n\t\t.string()\n\t\t.min(1)\n\t\t.max(64)\n\t\t.regex(/^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]$/, {\n\t\t\tmessage:\n\t\t\t\t\"Project name must be lowercase alphanumeric with hyphens, cannot start or end with hyphen\",\n\t\t}),\n\tservices: z.array(z.string()).default([]),\n\tskillPacks: z.array(z.string()).default([]),\n\taiProviders: z.array(AiProviderSchema).default([]),\n\tgsdRuntimes: z.array(GsdRuntimeSchema).default([]),\n\tproxy: ProxyTypeSchema.default(\"none\"),\n\tproxyHttpPort: z.number().int().min(1).max(65535).optional(),\n\tproxyHttpsPort: z.number().int().min(1).max(65535).optional(),\n\tportOverrides: z\n\t\t.record(z.string(), z.record(z.string(), z.number().int().min(1).max(65535)))\n\t\t.optional(),\n\tdomain: z.string().optional(),\n\tgpu: z.boolean().default(false),\n\tplatform: PlatformSchema.default(\"linux/amd64\"),\n\tdeployment: DeploymentTargetSchema.default(\"local\"),\n\tdeploymentType: DeploymentTypeSchema.default(\"docker\"),\n\tgenerateSecrets: z.boolean().default(true),\n\topenclawVersion: z.string().default(\"latest\"),\n\tmonitoring: z.boolean().default(false),\n\topenclawImage: OpenclawImageVariantSchema.default(\"official\"),\n\topenclawInstallMethod: OpenclawInstallMethodSchema.default(\"docker\"),\n\tdeployTarget: DeployTargetSchema.default(\"local\"),\n\thardened: z.boolean().default(true),\n});\n\n// ─── Resolver Output ────────────────────────────────────────────────────────\n\nexport const ResolvedServiceSchema = z.object({\n\tdefinition: ServiceDefinitionSchema,\n\taddedBy: z.enum([\"user\", \"dependency\", \"skill-pack\", \"proxy\", \"monitoring\", \"mandatory\"]).default(\"user\"),\n});\n\nexport const AddedDependencySchema = z.object({\n\tservice: z.string(),\n\tserviceId: z.string().optional(),\n\trequiredBy: z.string().optional(),\n\treason: z.string(),\n});\n\nexport const WarningSchema = z.object({\n\ttype: z.string(),\n\tmessage: z.string(),\n});\n\nexport const ErrorSchema = z.object({\n\ttype: z.string(),\n\tmessage: z.string(),\n});\n\nexport const ResolverOutputSchema = z.object({\n\tservices: z.array(ResolvedServiceSchema),\n\taddedDependencies: z.array(AddedDependencySchema),\n\tremovedConflicts: z.array(z.object({ service: z.string(), reason: z.string() })),\n\twarnings: z.array(WarningSchema),\n\terrors: z.array(ErrorSchema),\n\tisValid: z.boolean(),\n\testimatedMemoryMB: z.number().int().min(0),\n\taiProviders: z.array(AiProviderSchema).default([]),\n\tgsdRuntimes: z.array(GsdRuntimeSchema).default([]),\n});\n\n// ─── Compose Options ────────────────────────────────────────────────────────\n\nexport const ComposeOptionsSchema = z.object({\n\tprojectName: z.string(),\n\tproxy: ProxyTypeSchema.default(\"none\"),\n\tproxyHttpPort: z.number().int().min(1).max(65535).optional(),\n\tproxyHttpsPort: z.number().int().min(1).max(65535).optional(),\n\tportOverrides: z\n\t\t.record(z.string(), z.record(z.string(), z.number().int().min(1).max(65535)))\n\t\t.optional(),\n\tdomain: z.string().optional(),\n\tgpu: z.boolean().default(false),\n\tplatform: PlatformSchema.default(\"linux/amd64\"),\n\tdeployment: DeploymentTargetSchema.default(\"local\"),\n\topenclawVersion: z.string().default(\"latest\"),\n\t/** When true, gateway gets extra_hosts so it can reach host-run (native) services. */\n\tbareMetalNativeHost: z.boolean().optional(),\n\t/** OpenClaw Docker image variant: official, coolify, or alpine. */\n\topenclawImage: OpenclawImageVariantSchema.default(\"official\"),\n\t/** Whether to apply security hardening (cap_drop, no-new-privileges, etc.) */\n\thardened: z.boolean().default(true),\n\t/** How to install OpenClaw itself: docker (in container) or direct (host install). */\n\topenclawInstallMethod: OpenclawInstallMethodSchema.default(\"docker\"),\n});\n\n// ─── Addon Stack (Clawexa) ───────────────────────────────────────────────────\n\nexport const SkippedServiceReasonSchema = z.enum([\n\t\"missing_credentials\",\n\t\"no_image\",\n\t\"platform_unsupported\",\n\t\"conflict\",\n\t\"gpu_required\",\n\t\"unknown_service\",\n\t\"resolution_error\",\n]);\n\nexport const SkippedServiceSchema = z.object({\n\tserviceId: z.string(),\n\treason: SkippedServiceReasonSchema,\n\tdetails: z.string(),\n\trequiredCredentials: z.array(z.string()).optional(),\n});\n\nexport const ProxyRouteSchema = z.object({\n\tserviceId: z.string(),\n\tpath: z.string(),\n\tport: z.number().int(),\n\tprotocol: z.enum([\"http\", \"https\", \"ws\"]).default(\"http\"),\n\tstripPrefix: z.boolean().default(true),\n});\n\nexport const AddonStackInputSchema = z.object({\n\t/** Instance identifier (used for project name sanitization). */\n\tinstanceId: z.string().min(1),\n\t/** Addon service IDs to deploy. */\n\tservices: z.array(z.string()),\n\t/** Optional skill packs. */\n\tskillPacks: z.array(z.string()).default([]),\n\t/** Platform architecture. */\n\tplatform: PlatformSchema.default(\"linux/amd64\"),\n\t/** OpenClaw version running on the instance. */\n\topenclawVersion: z.string().default(\"latest\"),\n\t/** Services already running on the instance (to detect conflicts). */\n\texistingServices: z.array(z.string()).default([]),\n\t/** Ports already in use on the host. */\n\treservedPorts: z.array(z.number().int()).default([]),\n\t/** Whether to generate secrets (default: true). */\n\tgenerateSecrets: z.boolean().default(true),\n\t/** User-provided credentials for services that need them. */\n\tcredentials: z.record(z.string(), z.record(z.string(), z.string())).default({}),\n\t/** Port overrides for specific services. */\n\tportOverrides: z.record(z.string(), z.record(z.string(), z.number().int().min(1).max(65535))).optional(),\n\t/** Whether the host has GPU support. */\n\tgpu: z.boolean().default(false),\n\t/** AI providers configured on this instance. */\n\taiProviders: z.array(AiProviderSchema).default([]),\n\t/** Pre-built image overrides (serviceId → image:tag). */\n\tprebuiltImages: z.record(z.string(), z.string()).default({}),\n});\n\nexport const AddonStackResultSchema = z.object({\n\t/** Single docker-compose.override.yml content. */\n\tcomposeOverride: z.string(),\n\t/** Complete .env file with all secrets generated. */\n\tenvFile: z.string(),\n\t/** Structured env vars for UI display / credential management. */\n\tenvVars: z.array(z.object({\n\t\tserviceName: z.string(),\n\t\tvars: z.array(z.object({\n\t\t\tkey: z.string(),\n\t\t\tdescription: z.string(),\n\t\t\tvalue: z.string(),\n\t\t\tsecret: z.boolean(),\n\t\t})),\n\t})),\n\t/** SKILL.md files keyed by slug. */\n\tskillFiles: z.record(z.string(), z.string()),\n\t/** OpenClaw config additions (skills.entries to merge). */\n\topenclawConfigPatch: z.object({\n\t\tskills: z.object({\n\t\t\tentries: z.record(z.string(), z.object({ enabled: z.boolean() })),\n\t\t}),\n\t}),\n\t/** Port mapping for reverse proxy configuration. */\n\tproxyRoutes: z.array(ProxyRouteSchema),\n\t/** Metadata. */\n\tmetadata: z.object({\n\t\tserviceCount: z.number(),\n\t\tskillCount: z.number(),\n\t\testimatedMemoryMB: z.number(),\n\t\tresolvedServices: z.array(z.string()),\n\t\tskippedServices: z.array(SkippedServiceSchema),\n\t\tgeneratedSecretKeys: z.array(z.string()),\n\t\tportAssignments: z.record(z.string(), z.number()),\n\t}),\n\t/** Warnings (non-fatal issues). */\n\twarnings: z.array(z.string()),\n});\n\nexport const AddonStackUpdateInputSchema = z.object({\n\tinstanceId: z.string().min(1),\n\t/** Current compose override YAML (from the running instance). */\n\tcurrentCompose: z.string(),\n\t/** Current .env content. */\n\tcurrentEnv: z.string(),\n\t/** Services to add. */\n\taddServices: z.array(z.string()).default([]),\n\t/** Services to remove. */\n\tremoveServices: z.array(z.string()).default([]),\n\t/** Whether to generate secrets for newly added services (default: true). */\n\tgenerateSecrets: z.boolean().default(true),\n\t/** User-provided credentials for new services. */\n\tcredentials: z.record(z.string(), z.record(z.string(), z.string())).default({}),\n\t/** Port overrides for specific services. */\n\tportOverrides: z.record(z.string(), z.record(z.string(), z.number().int().min(1).max(65535))).optional(),\n\t/** Reserved ports. */\n\treservedPorts: z.array(z.number().int()).default([]),\n\tplatform: PlatformSchema.default(\"linux/amd64\"),\n\topenclawVersion: z.string().default(\"latest\"),\n\taiProviders: z.array(AiProviderSchema).default([]),\n\tprebuiltImages: z.record(z.string(), z.string()).default({}),\n});\n\nexport const AddonStackUpdateResultSchema = z.object({\n\t/** Updated compose override (merged with existing). */\n\tcomposeOverride: z.string(),\n\t/** Updated .env (existing values preserved, new ones added). */\n\tenvFile: z.string(),\n\t/** Only NEW skill files to deploy. */\n\tnewSkillFiles: z.record(z.string(), z.string()),\n\t/** Skill slugs to remove from openclaw.json. */\n\tremovedSkillSlugs: z.array(z.string()),\n\t/** Config patch to apply. */\n\topenclawConfigPatch: z.object({\n\t\tskills: z.object({\n\t\t\tadd: z.record(z.string(), z.object({ enabled: z.boolean() })),\n\t\t\tremove: z.array(z.string()),\n\t\t}),\n\t}),\n\t/** New proxy routes to add. */\n\taddProxyRoutes: z.array(ProxyRouteSchema),\n\t/** Proxy routes to remove (service IDs). */\n\tremoveProxyRoutes: z.array(z.string()),\n\t/** Services that need their images pulled. */\n\timagesToPull: z.array(z.string()),\n\t/** Services to restart (due to dependency changes). */\n\trestartRequired: z.array(z.string()),\n\t/** Metadata. */\n\tmetadata: z.object({\n\t\tadded: z.array(z.string()),\n\t\tremoved: z.array(z.string()),\n\t\tunchanged: z.array(z.string()),\n\t\testimatedMemoryDelta: z.number(),\n\t}),\n\twarnings: z.array(z.string()),\n});\n\n// ─── API Request/Response ───────────────────────────────────────────────────\n\nexport const ValidateRequestSchema = z.object({\n\tservices: z.array(z.string()),\n\tskillPacks: z.array(z.string()).default([]),\n\taiProviders: z.array(AiProviderSchema).default([]),\n\tgsdRuntimes: z.array(GsdRuntimeSchema).default([]),\n\tproxy: ProxyTypeSchema.default(\"none\"),\n\tdomain: z.string().optional(),\n\tgpu: z.boolean().default(false),\n\tplatform: PlatformSchema.default(\"linux/amd64\"),\n});\n\nexport const ValidateResponseSchema = z.object({\n\tvalid: z.boolean(),\n\tresolvedServices: z.array(z.string()),\n\taddedDependencies: z.array(AddedDependencySchema),\n\twarnings: z.array(WarningSchema),\n\tconflicts: z.array(ErrorSchema),\n\testimatedMemoryMB: z.number(),\n});\n\nexport const ApiErrorSchema = z.object({\n\terror: z.object({\n\t\tcode: z.enum([\n\t\t\t\"VALIDATION_ERROR\",\n\t\t\t\"CONFLICT_ERROR\",\n\t\t\t\"GENERATION_ERROR\",\n\t\t\t\"RATE_LIMITED\",\n\t\t\t\"INTERNAL_ERROR\",\n\t\t]),\n\t\tmessage: z.string(),\n\t\tdetails: z\n\t\t\t.array(\n\t\t\t\tz.object({\n\t\t\t\t\tfield: z.string().optional(),\n\t\t\t\t\tmessage: z.string(),\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.optional(),\n\t}),\n});\n"],"mappings":";;;;AAIA,MAAa,wBAAwBA,IAAAA,EAAE,KAAK;CAC3C;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAC;AAEF,MAAa,iBAAiBA,IAAAA,EAAE,KAAK;CAAC;CAAU;CAAQ;CAAe,CAAC;AAExE,MAAa,iBAAiBA,IAAAA,EAAE,KAAK;CACpC;CACA;CACA;CACA;CACA;CACA,CAAC;;AAGF,MAAa,wBAAwBA,IAAAA,EAAE,KAAK,CAAC,eAAe,cAAc,CAAC;AAE3E,MAAa,uBAAuBA,IAAAA,EAAE,KAAK;CAAC;CAAU;CAAc;CAAQ,CAAC;AAE7E,MAAa,sBAAsBA,IAAAA,EAAE,KAAK;CAAC;CAAkB;CAAU;CAAc;CAAK,CAAC;AAE3F,MAAa,kBAAkBA,IAAAA,EAAE,KAAK;CAAC;CAAQ;CAAS;CAAU,CAAC;AAEnE,MAAa,yBAAyBA,IAAAA,EAAE,KAAK;CAAC;CAAS;CAAO;CAAW;CAAU,CAAC;AAEpF,MAAa,qBAAqBA,IAAAA,EAAE,KAAK;CAAC;CAAa;CAAO;CAAM,CAAC;AAErE,MAAa,6BAA6BA,IAAAA,EAAE,KAAK;CAAC;CAAY;CAAW;CAAS,CAAC;AAEnF,MAAa,8BAA8BA,IAAAA,EAAE,KAAK,CAAC,UAAU,SAAS,CAAC;AAEvE,MAAa,qBAAqBA,IAAAA,EAAE,KAAK,CAAC,SAAS,aAAa,CAAC;AAEjE,MAAa,mBAAmBA,IAAAA,EAAE,KAAK;CACtC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAC;AAEF,MAAa,mBAAmBA,IAAAA,EAAE,KAAK;CAAC;CAAU;CAAY;CAAU;CAAQ,CAAC;AAIjF,MAAa,oBAAoBA,IAAAA,EAAE,OAAO;CACzC,MAAMA,IAAAA,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,MAAM;CACxC,WAAWA,IAAAA,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,MAAM;CAC7C,aAAaA,IAAAA,EAAE,QAAQ;CACvB,SAASA,IAAAA,EAAE,SAAS,CAAC,QAAQ,KAAK;CAClC,CAAC;AAEF,MAAa,sBAAsBA,IAAAA,EAAE,OAAO;CAC3C,MAAMA,IAAAA,EAAE,QAAQ,CAAC,IAAI,EAAE;CACvB,eAAeA,IAAAA,EAAE,QAAQ,CAAC,IAAI,EAAE;CAChC,aAAaA,IAAAA,EAAE,QAAQ;CACvB,QAAQA,IAAAA,EAAE,QAAQ,CAAC,UAAU;CAC7B,CAAC;AAEF,MAAa,oBAAoBA,IAAAA,EAAE,OAAO;CACzC,KAAKA,IAAAA,EAAE,QAAQ,CAAC,IAAI,EAAE;CACtB,cAAcA,IAAAA,EAAE,QAAQ;CACxB,QAAQA,IAAAA,EAAE,SAAS,CAAC,QAAQ,MAAM;CAClC,aAAaA,IAAAA,EAAE,QAAQ;CACvB,UAAUA,IAAAA,EAAE,SAAS,CAAC,QAAQ,KAAK;CACnC,YAAYA,IAAAA,EAAE,QAAQ,CAAC,UAAU;CACjC,CAAC;AAEF,MAAa,oBAAoBA,IAAAA,EAAE,OAAO;CACzC,MAAMA,IAAAA,EAAE,QAAQ,CAAC,IAAI,EAAE;CACvB,UAAUA,IAAAA,EAAE,QAAQ,CAAC,QAAQ,MAAM;CACnC,SAASA,IAAAA,EAAE,QAAQ,CAAC,QAAQ,MAAM;CAClC,SAASA,IAAAA,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;CAC3C,aAAaA,IAAAA,EAAE,QAAQ,CAAC,UAAU;CAClC,CAAC;AAEF,MAAa,uBAAuBA,IAAAA,EAAE,OAAO;CAC5C,MAAMA,IAAAA,EAAE,QAAQ,CAAC,UAAU;CAC3B,QAAQA,IAAAA,EAAE,QAAQ,CAAC,UAAU;CAC7B,CAAC;AAEF,MAAa,eAAeA,IAAAA,EAAE,OAAO,EACpC,WAAWA,IAAAA,EACT,OAAO;CACP,QAAQ,qBAAqB,UAAU;CACvC,cAAc,qBAAqB,UAAU;CAC7C,CAAC,CACD,UAAU,EACZ,CAAC;AAEF,MAAa,qBAAqBA,IAAAA,EAAE,OAAO;CAC1C,SAASA,IAAAA,EAAE,QAAQ,CAAC,IAAI,EAAE;CAC1B,aAAaA,IAAAA,EAAE,SAAS,CAAC,QAAQ,KAAK;CACtC,iBAAiBA,IAAAA,EAAE,OAAOA,IAAAA,EAAE,QAAQ,EAAEA,IAAAA,EAAE,QAAQ,CAAC,CAAC,UAAU;CAC5D,CAAC;;AAGF,MAAa,uBAAuBA,IAAAA,EAAE,KAAK;CAAC;CAAS;CAAW;CAAQ,CAAC;AAEzE,MAAa,qBAAqBA,IAAAA,EAAE,OAAO;CAC1C,UAAU;CACV,cAAcA,IAAAA,EAAE,MAAMA,IAAAA,EAAE,QAAQ,CAAC,CAAC,IAAI,EAAE;CACxC,cAAcA,IAAAA,EAAE,QAAQ;CACxB,aAAaA,IAAAA,EAAE,QAAQ,CAAC,UAAU;CAClC,YAAYA,IAAAA,EAAE,QAAQ,CAAC,UAAU;CACjC,gBAAgBA,IAAAA,EAAE,QAAQ,CAAC,UAAU;CACrC,aAAaA,IAAAA,EAAE,QAAQ,CAAC,UAAU;CAClC,CAAC;AAIF,MAAa,kBAAkBA,IAAAA,EAAE,OAAO;CAEvC,SAASA,IAAAA,EAAE,QAAQ,CAAC,KAAK;CAEzB,QAAQA,IAAAA,EAAE,QAAQ,CAAC,UAAU;CAE7B,cAAcA,IAAAA,EAAE,QAAQ,CAAC,UAAU;CAEnC,mBAAmBA,IAAAA,EAAE,MAAMA,IAAAA,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;CAClD,CAAC;AAEF,MAAa,qBAAqBA,IAAAA,EAAE,OAAO;CAE1C,YAAYA,IAAAA,EAAE,QAAQ,CAAC,UAAU;CAEjC,SAASA,IAAAA,EAAE,QAAQ,CAAC,QAAQ,IAAI;CAEhC,MAAMA,IAAAA,EAAE,OAAOA,IAAAA,EAAE,QAAQ,EAAEA,IAAAA,EAAE,QAAQ,CAAC,CAAC,UAAU;CAEjD,QAAQA,IAAAA,EAAE,QAAQ,CAAC,UAAU;CAC7B,CAAC;AAIF,MAAa,oBAAoBA,IAAAA,EAAE,OAAO;CACzC,MAAMA,IAAAA,EAAE,KAAK;EAAC;EAAa;EAAgB;EAAsB;EAAY,CAAC;CAE9E,OAAOA,IAAAA,EAAE,QAAQ,CAAC,UAAU;CAE5B,UAAUA,IAAAA,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,UAAU;CAE5C,SAASA,IAAAA,EAAE,QAAQ,CAAC,UAAU;CAC9B,CAAC;AAEF,MAAa,iBAAiBA,IAAAA,EAAE,OAAO;CACtC,KAAKA,IAAAA,EAAE,QAAQ;CACf,OAAOA,IAAAA,EAAE,KAAK;EAAC;EAAwB;EAAc;EAAY,CAAC;CAClE,KAAK;CACL,CAAC;AAIF,MAAa,0BAA0BA,IAAAA,EAAE,OAAO;CAE/C,IAAIA,IAAAA,EACF,QAAQ,CACR,IAAI,EAAE,CACN,MAAM,eAAe;CACvB,MAAMA,IAAAA,EAAE,QAAQ,CAAC,IAAI,EAAE;CACvB,aAAaA,IAAAA,EAAE,QAAQ;CACvB,UAAU;CACV,MAAMA,IAAAA,EAAE,QAAQ;CAGhB,OAAOA,IAAAA,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,UAAU;CACnC,UAAUA,IAAAA,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,UAAU;CAGtC,WAAW,gBAAgB,UAAU;CACrC,cAAc,mBAAmB,UAAU;CAC3C,OAAOA,IAAAA,EAAE,MAAM,kBAAkB,CAAC,QAAQ,EAAE,CAAC;CAC7C,SAASA,IAAAA,EAAE,MAAM,oBAAoB,CAAC,QAAQ,EAAE,CAAC;CACjD,aAAaA,IAAAA,EAAE,MAAM,kBAAkB,CAAC,QAAQ,EAAE,CAAC;CACnD,aAAa,kBAAkB,UAAU;CACzC,SAASA,IAAAA,EAAE,QAAQ,CAAC,UAAU;CAC9B,YAAYA,IAAAA,EAAE,QAAQ,CAAC,UAAU;CACjC,WAAWA,IAAAA,EAAE,MAAMA,IAAAA,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;CAC1C,eAAe,oBAAoB,QAAQ,iBAAiB;CAC5D,UAAUA,IAAAA,EAAE,MAAMA,IAAAA,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC;CAC3D,QAAQA,IAAAA,EAAE,OAAOA,IAAAA,EAAE,QAAQ,EAAEA,IAAAA,EAAE,QAAQ,CAAC,CAAC,UAAU;CACnD,QAAQ,aAAa,UAAU;CAG/B,QAAQA,IAAAA,EAAE,MAAM,mBAAmB,CAAC,QAAQ,EAAE,CAAC;CAC/C,iBAAiBA,IAAAA,EAAE,MAAM,kBAAkB,CAAC,QAAQ,EAAE,CAAC;CACvD,sBAAsBA,IAAAA,EAAE,MAAM,oBAAoB,CAAC,UAAU;CAG7D,SAASA,IAAAA,EAAE,QAAQ,CAAC,KAAK;CACzB,mBAAmBA,IAAAA,EAAE,QAAQ,CAAC,KAAK,CAAC,UAAU;CAC9C,MAAMA,IAAAA,EAAE,MAAMA,IAAAA,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;CACrC,UAAU,eAAe,QAAQ,SAAS;CAG1C,UAAUA,IAAAA,EAAE,MAAMA,IAAAA,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;CACzC,YAAYA,IAAAA,EAAE,MAAMA,IAAAA,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;CAC3C,eAAeA,IAAAA,EAAE,MAAMA,IAAAA,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;CAC9C,WAAWA,IAAAA,EAAE,SAAS,CAAC,QAAQ,MAAM,CAAC,UAAU;CAChD,gBAAgBA,IAAAA,EAAE,QAAQ,CAAC,UAAU;CAGrC,WAAWA,IAAAA,EAAE,MAAM,eAAe,CAAC,UAAU;CAC7C,aAAaA,IAAAA,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,UAAU;CAC/C,aAAaA,IAAAA,EAAE,SAAS,CAAC,QAAQ,MAAM;CAGvC,iBAAiBA,IAAAA,EAAE,SAAS,CAAC,UAAU;CACvC,eAAeA,IAAAA,EAAE,MAAM,mBAAmB,CAAC,UAAU;CAIrD,mBAAmBA,IAAAA,EAAE,SAAS,CAAC,UAAU;CAEzC,eAAeA,IAAAA,EAAE,QAAQ,CAAC,UAAU;CAEpC,WAAWA,IAAAA,EAAE,QAAQ,CAAC,UAAU;CAEhC,uBAAuBA,IAAAA,EAAE,MAAMA,IAAAA,EAAE,QAAQ,CAAC,CAAC,UAAU;CAErD,WAAWA,IAAAA,EAAE,MAAM,eAAe,CAAC,UAAU;CAC7C,CAAC;AAIF,MAAa,kBAAkBA,IAAAA,EAAE,OAAO;CACvC,IAAIA,IAAAA,EACF,QAAQ,CACR,IAAI,EAAE,CACN,MAAM,eAAe;CACvB,MAAMA,IAAAA,EAAE,QAAQ,CAAC,IAAI,EAAE;CACvB,aAAaA,IAAAA,EAAE,QAAQ;CACvB,kBAAkBA,IAAAA,EAAE,MAAMA,IAAAA,EAAE,QAAQ,CAAC,CAAC,IAAI,EAAE;CAC5C,QAAQA,IAAAA,EAAE,MAAMA,IAAAA,EAAE,QAAQ,CAAC;CAC3B,MAAMA,IAAAA,EAAE,QAAQ,CAAC,UAAU;CAC3B,MAAMA,IAAAA,EAAE,MAAMA,IAAAA,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;CACrC,CAAC;AAIF,MAAa,eAAeA,IAAAA,EAAE,OAAO;CACpC,IAAIA,IAAAA,EACF,QAAQ,CACR,IAAI,EAAE,CACN,MAAM,eAAe;CACvB,MAAMA,IAAAA,EAAE,QAAQ,CAAC,IAAI,EAAE;CACvB,aAAaA,IAAAA,EAAE,QAAQ;CACvB,UAAUA,IAAAA,EAAE,MAAMA,IAAAA,EAAE,QAAQ,CAAC;CAC7B,YAAYA,IAAAA,EAAE,MAAMA,IAAAA,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;CAC3C,mBAAmBA,IAAAA,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,UAAU;CACrD,CAAC;AAIF,MAAa,wBAAwBA,IAAAA,EAAE,OAAO;CAC7C,eAAeA,IAAAA,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,UAAU;CACjD,aAAaA,IAAAA,EACX,QAAQ,CACR,IAAI,EAAE,CACN,IAAI,GAAG,CACP,MAAM,2CAA2C,EACjD,SACC,6FACD,CAAC;CACH,UAAUA,IAAAA,EAAE,MAAMA,IAAAA,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;CACzC,YAAYA,IAAAA,EAAE,MAAMA,IAAAA,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;CAC3C,aAAaA,IAAAA,EAAE,MAAM,iBAAiB,CAAC,QAAQ,EAAE,CAAC;CAClD,aAAaA,IAAAA,EAAE,MAAM,iBAAiB,CAAC,QAAQ,EAAE,CAAC;CAClD,OAAO,gBAAgB,QAAQ,OAAO;CACtC,eAAeA,IAAAA,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,MAAM,CAAC,UAAU;CAC5D,gBAAgBA,IAAAA,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,MAAM,CAAC,UAAU;CAC7D,eAAeA,IAAAA,EACb,OAAOA,IAAAA,EAAE,QAAQ,EAAEA,IAAAA,EAAE,OAAOA,IAAAA,EAAE,QAAQ,EAAEA,IAAAA,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,MAAM,CAAC,CAAC,CAC5E,UAAU;CACZ,QAAQA,IAAAA,EAAE,QAAQ,CAAC,UAAU;CAC7B,KAAKA,IAAAA,EAAE,SAAS,CAAC,QAAQ,MAAM;CAC/B,UAAU,eAAe,QAAQ,cAAc;CAC/C,YAAY,uBAAuB,QAAQ,QAAQ;CACnD,gBAAgB,qBAAqB,QAAQ,SAAS;CACtD,iBAAiBA,IAAAA,EAAE,SAAS,CAAC,QAAQ,KAAK;CAC1C,iBAAiBA,IAAAA,EAAE,QAAQ,CAAC,QAAQ,SAAS;CAC7C,YAAYA,IAAAA,EAAE,SAAS,CAAC,QAAQ,MAAM;CACtC,eAAe,2BAA2B,QAAQ,WAAW;CAC7D,uBAAuB,4BAA4B,QAAQ,SAAS;CACpE,cAAc,mBAAmB,QAAQ,QAAQ;CACjD,UAAUA,IAAAA,EAAE,SAAS,CAAC,QAAQ,KAAK;CACnC,CAAC;AAIF,MAAa,wBAAwBA,IAAAA,EAAE,OAAO;CAC7C,YAAY;CACZ,SAASA,IAAAA,EAAE,KAAK;EAAC;EAAQ;EAAc;EAAc;EAAS;EAAc;EAAY,CAAC,CAAC,QAAQ,OAAO;CACzG,CAAC;AAEF,MAAa,wBAAwBA,IAAAA,EAAE,OAAO;CAC7C,SAASA,IAAAA,EAAE,QAAQ;CACnB,WAAWA,IAAAA,EAAE,QAAQ,CAAC,UAAU;CAChC,YAAYA,IAAAA,EAAE,QAAQ,CAAC,UAAU;CACjC,QAAQA,IAAAA,EAAE,QAAQ;CAClB,CAAC;AAEF,MAAa,gBAAgBA,IAAAA,EAAE,OAAO;CACrC,MAAMA,IAAAA,EAAE,QAAQ;CAChB,SAASA,IAAAA,EAAE,QAAQ;CACnB,CAAC;AAEF,MAAa,cAAcA,IAAAA,EAAE,OAAO;CACnC,MAAMA,IAAAA,EAAE,QAAQ;CAChB,SAASA,IAAAA,EAAE,QAAQ;CACnB,CAAC;AAEF,MAAa,uBAAuBA,IAAAA,EAAE,OAAO;CAC5C,UAAUA,IAAAA,EAAE,MAAM,sBAAsB;CACxC,mBAAmBA,IAAAA,EAAE,MAAM,sBAAsB;CACjD,kBAAkBA,IAAAA,EAAE,MAAMA,IAAAA,EAAE,OAAO;EAAE,SAASA,IAAAA,EAAE,QAAQ;EAAE,QAAQA,IAAAA,EAAE,QAAQ;EAAE,CAAC,CAAC;CAChF,UAAUA,IAAAA,EAAE,MAAM,cAAc;CAChC,QAAQA,IAAAA,EAAE,MAAM,YAAY;CAC5B,SAASA,IAAAA,EAAE,SAAS;CACpB,mBAAmBA,IAAAA,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE;CAC1C,aAAaA,IAAAA,EAAE,MAAM,iBAAiB,CAAC,QAAQ,EAAE,CAAC;CAClD,aAAaA,IAAAA,EAAE,MAAM,iBAAiB,CAAC,QAAQ,EAAE,CAAC;CAClD,CAAC;AAIF,MAAa,uBAAuBA,IAAAA,EAAE,OAAO;CAC5C,aAAaA,IAAAA,EAAE,QAAQ;CACvB,OAAO,gBAAgB,QAAQ,OAAO;CACtC,eAAeA,IAAAA,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,MAAM,CAAC,UAAU;CAC5D,gBAAgBA,IAAAA,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,MAAM,CAAC,UAAU;CAC7D,eAAeA,IAAAA,EACb,OAAOA,IAAAA,EAAE,QAAQ,EAAEA,IAAAA,EAAE,OAAOA,IAAAA,EAAE,QAAQ,EAAEA,IAAAA,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,MAAM,CAAC,CAAC,CAC5E,UAAU;CACZ,QAAQA,IAAAA,EAAE,QAAQ,CAAC,UAAU;CAC7B,KAAKA,IAAAA,EAAE,SAAS,CAAC,QAAQ,MAAM;CAC/B,UAAU,eAAe,QAAQ,cAAc;CAC/C,YAAY,uBAAuB,QAAQ,QAAQ;CACnD,iBAAiBA,IAAAA,EAAE,QAAQ,CAAC,QAAQ,SAAS;CAE7C,qBAAqBA,IAAAA,EAAE,SAAS,CAAC,UAAU;CAE3C,eAAe,2BAA2B,QAAQ,WAAW;CAE7D,UAAUA,IAAAA,EAAE,SAAS,CAAC,QAAQ,KAAK;CAEnC,uBAAuB,4BAA4B,QAAQ,SAAS;CACpE,CAAC;AAIF,MAAa,6BAA6BA,IAAAA,EAAE,KAAK;CAChD;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAC;AAEF,MAAa,uBAAuBA,IAAAA,EAAE,OAAO;CAC5C,WAAWA,IAAAA,EAAE,QAAQ;CACrB,QAAQ;CACR,SAASA,IAAAA,EAAE,QAAQ;CACnB,qBAAqBA,IAAAA,EAAE,MAAMA,IAAAA,EAAE,QAAQ,CAAC,CAAC,UAAU;CACnD,CAAC;AAEF,MAAa,mBAAmBA,IAAAA,EAAE,OAAO;CACxC,WAAWA,IAAAA,EAAE,QAAQ;CACrB,MAAMA,IAAAA,EAAE,QAAQ;CAChB,MAAMA,IAAAA,EAAE,QAAQ,CAAC,KAAK;CACtB,UAAUA,IAAAA,EAAE,KAAK;EAAC;EAAQ;EAAS;EAAK,CAAC,CAAC,QAAQ,OAAO;CACzD,aAAaA,IAAAA,EAAE,SAAS,CAAC,QAAQ,KAAK;CACtC,CAAC;AAEF,MAAa,wBAAwBA,IAAAA,EAAE,OAAO;CAE7C,YAAYA,IAAAA,EAAE,QAAQ,CAAC,IAAI,EAAE;CAE7B,UAAUA,IAAAA,EAAE,MAAMA,IAAAA,EAAE,QAAQ,CAAC;CAE7B,YAAYA,IAAAA,EAAE,MAAMA,IAAAA,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;CAE3C,UAAU,eAAe,QAAQ,cAAc;CAE/C,iBAAiBA,IAAAA,EAAE,QAAQ,CAAC,QAAQ,SAAS;CAE7C,kBAAkBA,IAAAA,EAAE,MAAMA,IAAAA,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;CAEjD,eAAeA,IAAAA,EAAE,MAAMA,IAAAA,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;CAEpD,iBAAiBA,IAAAA,EAAE,SAAS,CAAC,QAAQ,KAAK;CAE1C,aAAaA,IAAAA,EAAE,OAAOA,IAAAA,EAAE,QAAQ,EAAEA,IAAAA,EAAE,OAAOA,IAAAA,EAAE,QAAQ,EAAEA,IAAAA,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;CAE/E,eAAeA,IAAAA,EAAE,OAAOA,IAAAA,EAAE,QAAQ,EAAEA,IAAAA,EAAE,OAAOA,IAAAA,EAAE,QAAQ,EAAEA,IAAAA,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,UAAU;CAExG,KAAKA,IAAAA,EAAE,SAAS,CAAC,QAAQ,MAAM;CAE/B,aAAaA,IAAAA,EAAE,MAAM,iBAAiB,CAAC,QAAQ,EAAE,CAAC;CAElD,gBAAgBA,IAAAA,EAAE,OAAOA,IAAAA,EAAE,QAAQ,EAAEA,IAAAA,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;CAC5D,CAAC;AAEF,MAAa,yBAAyBA,IAAAA,EAAE,OAAO;CAE9C,iBAAiBA,IAAAA,EAAE,QAAQ;CAE3B,SAASA,IAAAA,EAAE,QAAQ;CAEnB,SAASA,IAAAA,EAAE,MAAMA,IAAAA,EAAE,OAAO;EACzB,aAAaA,IAAAA,EAAE,QAAQ;EACvB,MAAMA,IAAAA,EAAE,MAAMA,IAAAA,EAAE,OAAO;GACtB,KAAKA,IAAAA,EAAE,QAAQ;GACf,aAAaA,IAAAA,EAAE,QAAQ;GACvB,OAAOA,IAAAA,EAAE,QAAQ;GACjB,QAAQA,IAAAA,EAAE,SAAS;GACnB,CAAC,CAAC;EACH,CAAC,CAAC;CAEH,YAAYA,IAAAA,EAAE,OAAOA,IAAAA,EAAE,QAAQ,EAAEA,IAAAA,EAAE,QAAQ,CAAC;CAE5C,qBAAqBA,IAAAA,EAAE,OAAO,EAC7B,QAAQA,IAAAA,EAAE,OAAO,EAChB,SAASA,IAAAA,EAAE,OAAOA,IAAAA,EAAE,QAAQ,EAAEA,IAAAA,EAAE,OAAO,EAAE,SAASA,IAAAA,EAAE,SAAS,EAAE,CAAC,CAAC,EACjE,CAAC,EACF,CAAC;CAEF,aAAaA,IAAAA,EAAE,MAAM,iBAAiB;CAEtC,UAAUA,IAAAA,EAAE,OAAO;EAClB,cAAcA,IAAAA,EAAE,QAAQ;EACxB,YAAYA,IAAAA,EAAE,QAAQ;EACtB,mBAAmBA,IAAAA,EAAE,QAAQ;EAC7B,kBAAkBA,IAAAA,EAAE,MAAMA,IAAAA,EAAE,QAAQ,CAAC;EACrC,iBAAiBA,IAAAA,EAAE,MAAM,qBAAqB;EAC9C,qBAAqBA,IAAAA,EAAE,MAAMA,IAAAA,EAAE,QAAQ,CAAC;EACxC,iBAAiBA,IAAAA,EAAE,OAAOA,IAAAA,EAAE,QAAQ,EAAEA,IAAAA,EAAE,QAAQ,CAAC;EACjD,CAAC;CAEF,UAAUA,IAAAA,EAAE,MAAMA,IAAAA,EAAE,QAAQ,CAAC;CAC7B,CAAC;AAEF,MAAa,8BAA8BA,IAAAA,EAAE,OAAO;CACnD,YAAYA,IAAAA,EAAE,QAAQ,CAAC,IAAI,EAAE;CAE7B,gBAAgBA,IAAAA,EAAE,QAAQ;CAE1B,YAAYA,IAAAA,EAAE,QAAQ;CAEtB,aAAaA,IAAAA,EAAE,MAAMA,IAAAA,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;CAE5C,gBAAgBA,IAAAA,EAAE,MAAMA,IAAAA,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;CAE/C,iBAAiBA,IAAAA,EAAE,SAAS,CAAC,QAAQ,KAAK;CAE1C,aAAaA,IAAAA,EAAE,OAAOA,IAAAA,EAAE,QAAQ,EAAEA,IAAAA,EAAE,OAAOA,IAAAA,EAAE,QAAQ,EAAEA,IAAAA,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;CAE/E,eAAeA,IAAAA,EAAE,OAAOA,IAAAA,EAAE,QAAQ,EAAEA,IAAAA,EAAE,OAAOA,IAAAA,EAAE,QAAQ,EAAEA,IAAAA,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,UAAU;CAExG,eAAeA,IAAAA,EAAE,MAAMA,IAAAA,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;CACpD,UAAU,eAAe,QAAQ,cAAc;CAC/C,iBAAiBA,IAAAA,EAAE,QAAQ,CAAC,QAAQ,SAAS;CAC7C,aAAaA,IAAAA,EAAE,MAAM,iBAAiB,CAAC,QAAQ,EAAE,CAAC;CAClD,gBAAgBA,IAAAA,EAAE,OAAOA,IAAAA,EAAE,QAAQ,EAAEA,IAAAA,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;CAC5D,CAAC;AAEF,MAAa,+BAA+BA,IAAAA,EAAE,OAAO;CAEpD,iBAAiBA,IAAAA,EAAE,QAAQ;CAE3B,SAASA,IAAAA,EAAE,QAAQ;CAEnB,eAAeA,IAAAA,EAAE,OAAOA,IAAAA,EAAE,QAAQ,EAAEA,IAAAA,EAAE,QAAQ,CAAC;CAE/C,mBAAmBA,IAAAA,EAAE,MAAMA,IAAAA,EAAE,QAAQ,CAAC;CAEtC,qBAAqBA,IAAAA,EAAE,OAAO,EAC7B,QAAQA,IAAAA,EAAE,OAAO;EAChB,KAAKA,IAAAA,EAAE,OAAOA,IAAAA,EAAE,QAAQ,EAAEA,IAAAA,EAAE,OAAO,EAAE,SAASA,IAAAA,EAAE,SAAS,EAAE,CAAC,CAAC;EAC7D,QAAQA,IAAAA,EAAE,MAAMA,IAAAA,EAAE,QAAQ,CAAC;EAC3B,CAAC,EACF,CAAC;CAEF,gBAAgBA,IAAAA,EAAE,MAAM,iBAAiB;CAEzC,mBAAmBA,IAAAA,EAAE,MAAMA,IAAAA,EAAE,QAAQ,CAAC;CAEtC,cAAcA,IAAAA,EAAE,MAAMA,IAAAA,EAAE,QAAQ,CAAC;CAEjC,iBAAiBA,IAAAA,EAAE,MAAMA,IAAAA,EAAE,QAAQ,CAAC;CAEpC,UAAUA,IAAAA,EAAE,OAAO;EAClB,OAAOA,IAAAA,EAAE,MAAMA,IAAAA,EAAE,QAAQ,CAAC;EAC1B,SAASA,IAAAA,EAAE,MAAMA,IAAAA,EAAE,QAAQ,CAAC;EAC5B,WAAWA,IAAAA,EAAE,MAAMA,IAAAA,EAAE,QAAQ,CAAC;EAC9B,sBAAsBA,IAAAA,EAAE,QAAQ;EAChC,CAAC;CACF,UAAUA,IAAAA,EAAE,MAAMA,IAAAA,EAAE,QAAQ,CAAC;CAC7B,CAAC;AAIF,MAAa,wBAAwBA,IAAAA,EAAE,OAAO;CAC7C,UAAUA,IAAAA,EAAE,MAAMA,IAAAA,EAAE,QAAQ,CAAC;CAC7B,YAAYA,IAAAA,EAAE,MAAMA,IAAAA,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;CAC3C,aAAaA,IAAAA,EAAE,MAAM,iBAAiB,CAAC,QAAQ,EAAE,CAAC;CAClD,aAAaA,IAAAA,EAAE,MAAM,iBAAiB,CAAC,QAAQ,EAAE,CAAC;CAClD,OAAO,gBAAgB,QAAQ,OAAO;CACtC,QAAQA,IAAAA,EAAE,QAAQ,CAAC,UAAU;CAC7B,KAAKA,IAAAA,EAAE,SAAS,CAAC,QAAQ,MAAM;CAC/B,UAAU,eAAe,QAAQ,cAAc;CAC/C,CAAC;AAEF,MAAa,yBAAyBA,IAAAA,EAAE,OAAO;CAC9C,OAAOA,IAAAA,EAAE,SAAS;CAClB,kBAAkBA,IAAAA,EAAE,MAAMA,IAAAA,EAAE,QAAQ,CAAC;CACrC,mBAAmBA,IAAAA,EAAE,MAAM,sBAAsB;CACjD,UAAUA,IAAAA,EAAE,MAAM,cAAc;CAChC,WAAWA,IAAAA,EAAE,MAAM,YAAY;CAC/B,mBAAmBA,IAAAA,EAAE,QAAQ;CAC7B,CAAC;AAEF,MAAa,iBAAiBA,IAAAA,EAAE,OAAO,EACtC,OAAOA,IAAAA,EAAE,OAAO;CACf,MAAMA,IAAAA,EAAE,KAAK;EACZ;EACA;EACA;EACA;EACA;EACA,CAAC;CACF,SAASA,IAAAA,EAAE,QAAQ;CACnB,SAASA,IAAAA,EACP,MACAA,IAAAA,EAAE,OAAO;EACR,OAAOA,IAAAA,EAAE,QAAQ,CAAC,UAAU;EAC5B,SAASA,IAAAA,EAAE,QAAQ;EACnB,CAAC,CACF,CACA,UAAU;CACZ,CAAC,EACF,CAAC"}
|
|
1
|
+
{"version":3,"file":"schema.cjs","names":["z"],"sources":["../src/schema.ts"],"sourcesContent":["import { z } from \"zod\";\n\n// ─── Enums ──────────────────────────────────────────────────────────────────\n\nexport const ServiceCategorySchema = z.enum([\n\t\"automation\",\n\t\"vector-db\",\n\t\"media\",\n\t\"storage\",\n\t\"database\",\n\t\"proxy\",\n\t\"monitoring\",\n\t\"browser\",\n\t\"search\",\n\t\"ai\",\n\t\"communication\",\n\t\"coding-agent\",\n\t\"social-media\",\n\t\"analytics\",\n\t\"ai-platform\",\n\t\"dev-tools\",\n\t\"knowledge\",\n\t\"desktop\",\n\t\"streaming\",\n\t\"security\",\n\t\"billing\",\n\t\"crm\",\n\t\"email-marketing\",\n\t\"forms\",\n\t\"api-gateway\",\n\t\"backup\",\n\t\"voice\",\n\t\"ecommerce\",\n\t\"collaboration\",\n\t\"ai-observability\",\n\t\"fine-tuning\",\n\t\"project-management\",\n\t\"business-intelligence\",\n\t\"dns-networking\",\n\t\"iot\",\n\t\"saas-boilerplate\",\n]);\n\nexport const MaturitySchema = z.enum([\"stable\", \"beta\", \"experimental\"]);\n\nexport const PlatformSchema = z.enum([\n\t\"linux/amd64\",\n\t\"linux/arm64\",\n\t\"windows/amd64\",\n\t\"macos/amd64\",\n\t\"macos/arm64\",\n]);\n\n/** Platform for Docker image arch only (used by resolver/compose). */\nexport const ComposePlatformSchema = z.enum([\"linux/amd64\", \"linux/arm64\"]);\n\nexport const DeploymentTypeSchema = z.enum([\"docker\", \"bare-metal\", \"local\"]);\n\nexport const RestartPolicySchema = z.enum([\"unless-stopped\", \"always\", \"on-failure\", \"no\"]);\n\nexport const ProxyTypeSchema = z.enum([\"none\", \"caddy\", \"traefik\"]);\n\nexport const DeploymentTargetSchema = z.enum([\"local\", \"vps\", \"homelab\", \"clawexa\"]);\n\nexport const OutputFormatSchema = z.enum([\"directory\", \"tar\", \"zip\"]);\n\nexport const OpenclawImageVariantSchema = z.enum([\"official\", \"coolify\", \"alpine\"]);\n\nexport const OpenclawInstallMethodSchema = z.enum([\"docker\", \"direct\"]);\n\nexport const DeployTargetSchema = z.enum([\"local\", \"cloud-init\"]);\n\nexport const AiProviderSchema = z.enum([\n\t\"openai\",\n\t\"anthropic\",\n\t\"google\",\n\t\"xai\",\n\t\"deepseek\",\n\t\"groq\",\n\t\"openrouter\",\n\t\"mistral\",\n\t\"together\",\n\t\"ollama\",\n\t\"ollama-cloud\",\n\t\"lmstudio\",\n\t\"vllm\",\n]);\n\nexport const GsdRuntimeSchema = z.enum([\"claude\", \"opencode\", \"gemini\", \"codex\"]);\n\n// ─── Sub-Schemas ────────────────────────────────────────────────────────────\n\nexport const PortMappingSchema = z.object({\n\thost: z.number().int().min(1).max(65535),\n\tcontainer: z.number().int().min(1).max(65535),\n\tdescription: z.string(),\n\texposed: z.boolean().default(true),\n});\n\nexport const VolumeMappingSchema = z.object({\n\tname: z.string().min(1),\n\tcontainerPath: z.string().min(1),\n\tdescription: z.string(),\n\tdriver: z.string().optional(),\n});\n\nexport const EnvVariableSchema = z.object({\n\tkey: z.string().min(1),\n\tdefaultValue: z.string(),\n\tsecret: z.boolean().default(false),\n\tdescription: z.string(),\n\trequired: z.boolean().default(true),\n\tvalidation: z.string().optional(),\n});\n\nexport const HealthCheckSchema = z.object({\n\ttest: z.string().min(1),\n\tinterval: z.string().default(\"30s\"),\n\ttimeout: z.string().default(\"10s\"),\n\tretries: z.number().int().min(1).default(3),\n\tstartPeriod: z.string().optional(),\n});\n\nexport const ResourceLimitsSchema = z.object({\n\tcpus: z.string().optional(),\n\tmemory: z.string().optional(),\n});\n\nexport const DeploySchema = z.object({\n\tresources: z\n\t\t.object({\n\t\t\tlimits: ResourceLimitsSchema.optional(),\n\t\t\treservations: ResourceLimitsSchema.optional(),\n\t\t})\n\t\t.optional(),\n});\n\nexport const SkillBindingSchema = z.object({\n\tskillId: z.string().min(1),\n\tautoInstall: z.boolean().default(true),\n\tconfigOverrides: z.record(z.string(), z.string()).optional(),\n});\n\n/** Platform for native install (linux, windows, macos — no arch). */\nexport const NativePlatformSchema = z.enum([\"linux\", \"windows\", \"macos\"]);\n\nexport const NativeRecipeSchema = z.object({\n\tplatform: NativePlatformSchema,\n\tinstallSteps: z.array(z.string()).min(1),\n\tstartCommand: z.string(),\n\tstopCommand: z.string().optional(),\n\tconfigPath: z.string().optional(),\n\tconfigTemplate: z.string().optional(),\n\tsystemdUnit: z.string().optional(),\n});\n\n// ─── Git Source / Build Context (for repo-based services) ───────────────────\n\nexport const GitSourceSchema = z.object({\n\t/** Git clone URL, e.g. \"https://github.com/wasp-lang/open-saas.git\" */\n\trepoUrl: z.string().url(),\n\t/** Branch or tag to clone. Defaults to repo's default branch. */\n\tbranch: z.string().optional(),\n\t/** Subdirectory within the cloned repo to use as build context root. */\n\tsubdirectory: z.string().optional(),\n\t/** Commands to run after cloning (e.g. \"cp .env.example .env\"). */\n\tpostCloneCommands: z.array(z.string()).default([]),\n});\n\nexport const BuildContextSchema = z.object({\n\t/** Path to Dockerfile relative to the context root. Defaults to \"Dockerfile\". */\n\tdockerfile: z.string().optional(),\n\t/** Build context path relative to the subdirectory root. Defaults to \".\". */\n\tcontext: z.string().default(\".\"),\n\t/** Docker build args to pass at build time. */\n\targs: z.record(z.string(), z.string()).optional(),\n\t/** Target stage in a multi-stage Dockerfile. */\n\ttarget: z.string().optional(),\n});\n\n// ─── Env Quirks (for addon stack generation) ────────────────────────────────\n\nexport const EnvQuirkFixSchema = z.object({\n\ttype: z.enum([\"set_value\", \"generate_hex\", \"generate_base64url\", \"sync_with\"]),\n\t/** Fixed value to set (for set_value type). */\n\tvalue: z.string().optional(),\n\t/** Minimum bytes for generated secrets (for generate_hex/generate_base64url). */\n\tminBytes: z.number().int().min(1).optional(),\n\t/** Key to synchronize with (for sync_with type). */\n\tsyncKey: z.string().optional(),\n});\n\nexport const EnvQuirkSchema = z.object({\n\tkey: z.string(),\n\tissue: z.enum([\"empty_string_crashes\", \"min_length\", \"must_sync\"]),\n\tfix: EnvQuirkFixSchema,\n});\n\n// ─── Service Definition ─────────────────────────────────────────────────────\n\nexport const ServiceDefinitionSchema = z.object({\n\t// Identity\n\tid: z\n\t\t.string()\n\t\t.min(1)\n\t\t.regex(/^[a-z0-9-]+$/),\n\tname: z.string().min(1),\n\tdescription: z.string(),\n\tcategory: ServiceCategorySchema,\n\ticon: z.string(),\n\n\t// Docker (required for image-based services, omitted for git-based)\n\timage: z.string().min(1).optional(),\n\timageTag: z.string().min(1).optional(),\n\n\t// Git source (for services built from cloned repositories)\n\tgitSource: GitSourceSchema.optional(),\n\tbuildContext: BuildContextSchema.optional(),\n\tports: z.array(PortMappingSchema).default([]),\n\tvolumes: z.array(VolumeMappingSchema).default([]),\n\tenvironment: z.array(EnvVariableSchema).default([]),\n\thealthcheck: HealthCheckSchema.optional(),\n\tcommand: z.string().optional(),\n\tentrypoint: z.string().optional(),\n\tdependsOn: z.array(z.string()).default([]),\n\trestartPolicy: RestartPolicySchema.default(\"unless-stopped\"),\n\tnetworks: z.array(z.string()).default([\"openclaw-network\"]),\n\tlabels: z.record(z.string(), z.string()).optional(),\n\tdeploy: DeploySchema.optional(),\n\n\t// OpenClaw Integration\n\tskills: z.array(SkillBindingSchema).default([]),\n\topenclawEnvVars: z.array(EnvVariableSchema).default([]),\n\topenclawVolumeMounts: z.array(VolumeMappingSchema).optional(),\n\n\t// Metadata\n\tdocsUrl: z.string().url(),\n\tselfHostedDocsUrl: z.string().url().optional(),\n\ttags: z.array(z.string()).default([]),\n\tmaturity: MaturitySchema.default(\"stable\"),\n\n\t// Dependencies & Conflicts\n\trequires: z.array(z.string()).default([]),\n\trecommends: z.array(z.string()).default([]),\n\tconflictsWith: z.array(z.string()).default([]),\n\tmandatory: z.boolean().default(false).optional(),\n\tremovalWarning: z.string().optional(),\n\n\t// Platform Constraints\n\tplatforms: z.array(PlatformSchema).optional(),\n\tminMemoryMB: z.number().int().min(0).optional(),\n\tgpuRequired: z.boolean().default(false),\n\n\t// Bare-metal native (install/run on host when no Docker)\n\tnativeSupported: z.boolean().optional(),\n\tnativeRecipes: z.array(NativeRecipeSchema).optional(),\n\n\t// Clawexa addon metadata\n\t/** Whether the service works with cap_drop: ALL (default: undefined = not audited). */\n\tcapDropCompatible: z.boolean().optional(),\n\t/** Pre-built Docker image for cloud-init deployment (replaces build: directives). */\n\tprebuiltImage: z.string().optional(),\n\t/** Default reverse proxy path (e.g. \"/n8n\", \"/grafana\"). */\n\tproxyPath: z.string().optional(),\n\t/** Linux capabilities needed at first boot (e.g. [\"CHOWN\", \"SETGID\"]). */\n\tfirstBootCapabilities: z.array(z.string()).optional(),\n\t/** Known environment variable quirks that need special handling. */\n\tenvQuirks: z.array(EnvQuirkSchema).optional(),\n});\n\n// ─── Skill Pack ─────────────────────────────────────────────────────────────\n\nexport const SkillPackSchema = z.object({\n\tid: z\n\t\t.string()\n\t\t.min(1)\n\t\t.regex(/^[a-z0-9-]+$/),\n\tname: z.string().min(1),\n\tdescription: z.string(),\n\trequiredServices: z.array(z.string()).min(1),\n\tskills: z.array(z.string()),\n\ticon: z.string().optional(),\n\ttags: z.array(z.string()).default([]),\n});\n\n// ─── Preset ─────────────────────────────────────────────────────────────────\n\nexport const PresetSchema = z.object({\n\tid: z\n\t\t.string()\n\t\t.min(1)\n\t\t.regex(/^[a-z0-9-]+$/),\n\tname: z.string().min(1),\n\tdescription: z.string(),\n\tservices: z.array(z.string()),\n\tskillPacks: z.array(z.string()).default([]),\n\testimatedMemoryMB: z.number().int().min(0).optional(),\n});\n\n// ─── Generation Input ───────────────────────────────────────────────────────\n\nexport const GenerationInputSchema = z.object({\n\tconfigVersion: z.number().int().min(1).optional(),\n\tprojectName: z\n\t\t.string()\n\t\t.min(1)\n\t\t.max(64)\n\t\t.regex(/^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]$/, {\n\t\t\tmessage:\n\t\t\t\t\"Project name must be lowercase alphanumeric with hyphens, cannot start or end with hyphen\",\n\t\t}),\n\tservices: z.array(z.string()).default([]),\n\tskillPacks: z.array(z.string()).default([]),\n\taiProviders: z.array(AiProviderSchema).default([]),\n\tgsdRuntimes: z.array(GsdRuntimeSchema).default([]),\n\tproxy: ProxyTypeSchema.default(\"none\"),\n\tproxyHttpPort: z.number().int().min(1).max(65535).optional(),\n\tproxyHttpsPort: z.number().int().min(1).max(65535).optional(),\n\tportOverrides: z\n\t\t.record(z.string(), z.record(z.string(), z.number().int().min(1).max(65535)))\n\t\t.optional(),\n\tdomain: z.string().optional(),\n\tgpu: z.boolean().default(false),\n\tplatform: PlatformSchema.default(\"linux/amd64\"),\n\tdeployment: DeploymentTargetSchema.default(\"local\"),\n\tdeploymentType: DeploymentTypeSchema.default(\"docker\"),\n\tgenerateSecrets: z.boolean().default(true),\n\topenclawVersion: z.string().default(\"latest\"),\n\tmonitoring: z.boolean().default(false),\n\topenclawImage: OpenclawImageVariantSchema.default(\"official\"),\n\topenclawInstallMethod: OpenclawInstallMethodSchema.default(\"docker\"),\n\tdeployTarget: DeployTargetSchema.default(\"local\"),\n\thardened: z.boolean().default(true),\n});\n\n// ─── Resolver Output ────────────────────────────────────────────────────────\n\nexport const ResolvedServiceSchema = z.object({\n\tdefinition: ServiceDefinitionSchema,\n\taddedBy: z.enum([\"user\", \"dependency\", \"skill-pack\", \"proxy\", \"monitoring\", \"mandatory\"]).default(\"user\"),\n});\n\nexport const AddedDependencySchema = z.object({\n\tservice: z.string(),\n\tserviceId: z.string().optional(),\n\trequiredBy: z.string().optional(),\n\treason: z.string(),\n});\n\nexport const WarningSchema = z.object({\n\ttype: z.string(),\n\tmessage: z.string(),\n});\n\nexport const ErrorSchema = z.object({\n\ttype: z.string(),\n\tmessage: z.string(),\n});\n\nexport const ResolverOutputSchema = z.object({\n\tservices: z.array(ResolvedServiceSchema),\n\taddedDependencies: z.array(AddedDependencySchema),\n\tremovedConflicts: z.array(z.object({ service: z.string(), reason: z.string() })),\n\twarnings: z.array(WarningSchema),\n\terrors: z.array(ErrorSchema),\n\tisValid: z.boolean(),\n\testimatedMemoryMB: z.number().int().min(0),\n\taiProviders: z.array(AiProviderSchema).default([]),\n\tgsdRuntimes: z.array(GsdRuntimeSchema).default([]),\n});\n\n// ─── Compose Options ────────────────────────────────────────────────────────\n\nexport const ComposeOptionsSchema = z.object({\n\tprojectName: z.string(),\n\tproxy: ProxyTypeSchema.default(\"none\"),\n\tproxyHttpPort: z.number().int().min(1).max(65535).optional(),\n\tproxyHttpsPort: z.number().int().min(1).max(65535).optional(),\n\tportOverrides: z\n\t\t.record(z.string(), z.record(z.string(), z.number().int().min(1).max(65535)))\n\t\t.optional(),\n\tdomain: z.string().optional(),\n\tgpu: z.boolean().default(false),\n\tplatform: PlatformSchema.default(\"linux/amd64\"),\n\tdeployment: DeploymentTargetSchema.default(\"local\"),\n\topenclawVersion: z.string().default(\"latest\"),\n\t/** When true, gateway gets extra_hosts so it can reach host-run (native) services. */\n\tbareMetalNativeHost: z.boolean().optional(),\n\t/** OpenClaw Docker image variant: official, coolify, or alpine. */\n\topenclawImage: OpenclawImageVariantSchema.default(\"official\"),\n\t/** Whether to apply security hardening (cap_drop, no-new-privileges, etc.) */\n\thardened: z.boolean().default(true),\n\t/** How to install OpenClaw itself: docker (in container) or direct (host install). */\n\topenclawInstallMethod: OpenclawInstallMethodSchema.default(\"docker\"),\n});\n\n// ─── Addon Stack (Clawexa) ───────────────────────────────────────────────────\n\nexport const SkippedServiceReasonSchema = z.enum([\n\t\"missing_credentials\",\n\t\"no_image\",\n\t\"platform_unsupported\",\n\t\"conflict\",\n\t\"gpu_required\",\n\t\"unknown_service\",\n\t\"resolution_error\",\n]);\n\nexport const SkippedServiceSchema = z.object({\n\tserviceId: z.string(),\n\treason: SkippedServiceReasonSchema,\n\tdetails: z.string(),\n\trequiredCredentials: z.array(z.string()).optional(),\n});\n\nexport const ProxyRouteSchema = z.object({\n\tserviceId: z.string(),\n\tpath: z.string(),\n\tport: z.number().int(),\n\tprotocol: z.enum([\"http\", \"https\", \"ws\"]).default(\"http\"),\n\tstripPrefix: z.boolean().default(true),\n});\n\nexport const AddonStackInputSchema = z.object({\n\t/** Instance identifier (used for project name sanitization). */\n\tinstanceId: z.string().min(1),\n\t/** Addon service IDs to deploy. */\n\tservices: z.array(z.string()),\n\t/** Optional skill packs. */\n\tskillPacks: z.array(z.string()).default([]),\n\t/** Platform architecture. */\n\tplatform: PlatformSchema.default(\"linux/amd64\"),\n\t/** OpenClaw version running on the instance. */\n\topenclawVersion: z.string().default(\"latest\"),\n\t/** Services already running on the instance (to detect conflicts). */\n\texistingServices: z.array(z.string()).default([]),\n\t/** Ports already in use on the host. */\n\treservedPorts: z.array(z.number().int()).default([]),\n\t/** Whether to generate secrets (default: true). */\n\tgenerateSecrets: z.boolean().default(true),\n\t/** User-provided credentials for services that need them. */\n\tcredentials: z.record(z.string(), z.record(z.string(), z.string())).default({}),\n\t/** Port overrides for specific services. */\n\tportOverrides: z.record(z.string(), z.record(z.string(), z.number().int().min(1).max(65535))).optional(),\n\t/** Whether the host has GPU support. */\n\tgpu: z.boolean().default(false),\n\t/** AI providers configured on this instance. */\n\taiProviders: z.array(AiProviderSchema).default([]),\n\t/** Pre-built image overrides (serviceId → image:tag). */\n\tprebuiltImages: z.record(z.string(), z.string()).default({}),\n});\n\nexport const AddonStackResultSchema = z.object({\n\t/** Single docker-compose.override.yml content. */\n\tcomposeOverride: z.string(),\n\t/** Complete .env file with all secrets generated. */\n\tenvFile: z.string(),\n\t/** Structured env vars for UI display / credential management. */\n\tenvVars: z.array(z.object({\n\t\tserviceName: z.string(),\n\t\tvars: z.array(z.object({\n\t\t\tkey: z.string(),\n\t\t\tdescription: z.string(),\n\t\t\tvalue: z.string(),\n\t\t\tsecret: z.boolean(),\n\t\t})),\n\t})),\n\t/** SKILL.md files keyed by slug. */\n\tskillFiles: z.record(z.string(), z.string()),\n\t/** OpenClaw config additions (skills.entries to merge). */\n\topenclawConfigPatch: z.object({\n\t\tskills: z.object({\n\t\t\tentries: z.record(z.string(), z.object({ enabled: z.boolean() })),\n\t\t}),\n\t}),\n\t/** Port mapping for reverse proxy configuration. */\n\tproxyRoutes: z.array(ProxyRouteSchema),\n\t/** Additional files to write alongside compose (e.g. sandbox.toml). Keyed by filename. */\n\tadditionalFiles: z.record(z.string(), z.string()).default({}),\n\t/** Metadata. */\n\tmetadata: z.object({\n\t\tserviceCount: z.number(),\n\t\tskillCount: z.number(),\n\t\testimatedMemoryMB: z.number(),\n\t\tresolvedServices: z.array(z.string()),\n\t\tskippedServices: z.array(SkippedServiceSchema),\n\t\tgeneratedSecretKeys: z.array(z.string()),\n\t\tportAssignments: z.record(z.string(), z.number()),\n\t\t/** Docker images to pre-pull during cloud-init, grouped by priority. */\n\t\tprePullImages: z.array(z.object({\n\t\t\timage: z.string(),\n\t\t\tpriority: z.union([z.literal(1), z.literal(2), z.literal(3)]),\n\t\t})).default([]),\n\t}),\n\t/** Warnings (non-fatal issues). */\n\twarnings: z.array(z.string()),\n});\n\nexport const AddonStackUpdateInputSchema = z.object({\n\tinstanceId: z.string().min(1),\n\t/** Current compose override YAML (from the running instance). */\n\tcurrentCompose: z.string(),\n\t/** Current .env content. */\n\tcurrentEnv: z.string(),\n\t/** Services to add. */\n\taddServices: z.array(z.string()).default([]),\n\t/** Services to remove. */\n\tremoveServices: z.array(z.string()).default([]),\n\t/** Whether to generate secrets for newly added services (default: true). */\n\tgenerateSecrets: z.boolean().default(true),\n\t/** User-provided credentials for new services. */\n\tcredentials: z.record(z.string(), z.record(z.string(), z.string())).default({}),\n\t/** Port overrides for specific services. */\n\tportOverrides: z.record(z.string(), z.record(z.string(), z.number().int().min(1).max(65535))).optional(),\n\t/** Reserved ports. */\n\treservedPorts: z.array(z.number().int()).default([]),\n\tplatform: PlatformSchema.default(\"linux/amd64\"),\n\topenclawVersion: z.string().default(\"latest\"),\n\taiProviders: z.array(AiProviderSchema).default([]),\n\tprebuiltImages: z.record(z.string(), z.string()).default({}),\n});\n\nexport const AddonStackUpdateResultSchema = z.object({\n\t/** Updated compose override (merged with existing). */\n\tcomposeOverride: z.string(),\n\t/** Updated .env (existing values preserved, new ones added). */\n\tenvFile: z.string(),\n\t/** Only NEW skill files to deploy. */\n\tnewSkillFiles: z.record(z.string(), z.string()),\n\t/** Skill slugs to remove from openclaw.json. */\n\tremovedSkillSlugs: z.array(z.string()),\n\t/** Config patch to apply. */\n\topenclawConfigPatch: z.object({\n\t\tskills: z.object({\n\t\t\tadd: z.record(z.string(), z.object({ enabled: z.boolean() })),\n\t\t\tremove: z.array(z.string()),\n\t\t}),\n\t}),\n\t/** New proxy routes to add. */\n\taddProxyRoutes: z.array(ProxyRouteSchema),\n\t/** Proxy routes to remove (service IDs). */\n\tremoveProxyRoutes: z.array(z.string()),\n\t/** Services that need their images pulled. */\n\timagesToPull: z.array(z.string()),\n\t/** Services to restart (due to dependency changes). */\n\trestartRequired: z.array(z.string()),\n\t/** Metadata. */\n\tmetadata: z.object({\n\t\tadded: z.array(z.string()),\n\t\tremoved: z.array(z.string()),\n\t\tunchanged: z.array(z.string()),\n\t\testimatedMemoryDelta: z.number(),\n\t}),\n\twarnings: z.array(z.string()),\n});\n\n// ─── API Request/Response ───────────────────────────────────────────────────\n\nexport const ValidateRequestSchema = z.object({\n\tservices: z.array(z.string()),\n\tskillPacks: z.array(z.string()).default([]),\n\taiProviders: z.array(AiProviderSchema).default([]),\n\tgsdRuntimes: z.array(GsdRuntimeSchema).default([]),\n\tproxy: ProxyTypeSchema.default(\"none\"),\n\tdomain: z.string().optional(),\n\tgpu: z.boolean().default(false),\n\tplatform: PlatformSchema.default(\"linux/amd64\"),\n});\n\nexport const ValidateResponseSchema = z.object({\n\tvalid: z.boolean(),\n\tresolvedServices: z.array(z.string()),\n\taddedDependencies: z.array(AddedDependencySchema),\n\twarnings: z.array(WarningSchema),\n\tconflicts: z.array(ErrorSchema),\n\testimatedMemoryMB: z.number(),\n});\n\nexport const ApiErrorSchema = z.object({\n\terror: z.object({\n\t\tcode: z.enum([\n\t\t\t\"VALIDATION_ERROR\",\n\t\t\t\"CONFLICT_ERROR\",\n\t\t\t\"GENERATION_ERROR\",\n\t\t\t\"RATE_LIMITED\",\n\t\t\t\"INTERNAL_ERROR\",\n\t\t]),\n\t\tmessage: z.string(),\n\t\tdetails: z\n\t\t\t.array(\n\t\t\t\tz.object({\n\t\t\t\t\tfield: z.string().optional(),\n\t\t\t\t\tmessage: z.string(),\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.optional(),\n\t}),\n});\n"],"mappings":"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"}
|
package/dist/schema.d.cts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { A as PortMappingSchema, B as SkillBindingSchema, C as MaturitySchema, D as OpenclawInstallMethodSchema, E as OpenclawImageVariantSchema, F as ResolverOutputSchema, G as ValidateResponseSchema, H as SkippedServiceReasonSchema, I as ResourceLimitsSchema, K as VolumeMappingSchema, L as RestartPolicySchema, M as ProxyRouteSchema, N as ProxyTypeSchema, O as OutputFormatSchema, P as ResolvedServiceSchema, R as ServiceCategorySchema, S as HealthCheckSchema, T as NativeRecipeSchema, U as SkippedServiceSchema, V as SkillPackSchema, W as ValidateRequestSchema, _ as EnvVariableSchema, a as AddonStackUpdateResultSchema, b as GitSourceSchema, c as BuildContextSchema, d as DeploySchema, f as DeployTargetSchema, g as EnvQuirkSchema, h as EnvQuirkFixSchema, i as AddonStackUpdateInputSchema, j as PresetSchema, k as PlatformSchema, l as ComposeOptionsSchema, m as DeploymentTypeSchema, n as AddonStackInputSchema, o as AiProviderSchema, p as DeploymentTargetSchema, q as WarningSchema, r as AddonStackResultSchema, s as ApiErrorSchema, t as AddedDependencySchema, u as ComposePlatformSchema, v as ErrorSchema, w as NativePlatformSchema, x as GsdRuntimeSchema, y as GenerationInputSchema, z as ServiceDefinitionSchema } from "./schema-
|
|
1
|
+
import { A as PortMappingSchema, B as SkillBindingSchema, C as MaturitySchema, D as OpenclawInstallMethodSchema, E as OpenclawImageVariantSchema, F as ResolverOutputSchema, G as ValidateResponseSchema, H as SkippedServiceReasonSchema, I as ResourceLimitsSchema, K as VolumeMappingSchema, L as RestartPolicySchema, M as ProxyRouteSchema, N as ProxyTypeSchema, O as OutputFormatSchema, P as ResolvedServiceSchema, R as ServiceCategorySchema, S as HealthCheckSchema, T as NativeRecipeSchema, U as SkippedServiceSchema, V as SkillPackSchema, W as ValidateRequestSchema, _ as EnvVariableSchema, a as AddonStackUpdateResultSchema, b as GitSourceSchema, c as BuildContextSchema, d as DeploySchema, f as DeployTargetSchema, g as EnvQuirkSchema, h as EnvQuirkFixSchema, i as AddonStackUpdateInputSchema, j as PresetSchema, k as PlatformSchema, l as ComposeOptionsSchema, m as DeploymentTypeSchema, n as AddonStackInputSchema, o as AiProviderSchema, p as DeploymentTargetSchema, q as WarningSchema, r as AddonStackResultSchema, s as ApiErrorSchema, t as AddedDependencySchema, u as ComposePlatformSchema, v as ErrorSchema, w as NativePlatformSchema, x as GsdRuntimeSchema, y as GenerationInputSchema, z as ServiceDefinitionSchema } from "./schema-BQnZrcw8.cjs";
|
|
2
2
|
export { AddedDependencySchema, AddonStackInputSchema, AddonStackResultSchema, AddonStackUpdateInputSchema, AddonStackUpdateResultSchema, AiProviderSchema, ApiErrorSchema, BuildContextSchema, ComposeOptionsSchema, ComposePlatformSchema, DeploySchema, DeployTargetSchema, DeploymentTargetSchema, DeploymentTypeSchema, EnvQuirkFixSchema, EnvQuirkSchema, EnvVariableSchema, ErrorSchema, GenerationInputSchema, GitSourceSchema, GsdRuntimeSchema, HealthCheckSchema, MaturitySchema, NativePlatformSchema, NativeRecipeSchema, OpenclawImageVariantSchema, OpenclawInstallMethodSchema, OutputFormatSchema, PlatformSchema, PortMappingSchema, PresetSchema, ProxyRouteSchema, ProxyTypeSchema, ResolvedServiceSchema, ResolverOutputSchema, ResourceLimitsSchema, RestartPolicySchema, ServiceCategorySchema, ServiceDefinitionSchema, SkillBindingSchema, SkillPackSchema, SkippedServiceReasonSchema, SkippedServiceSchema, ValidateRequestSchema, ValidateResponseSchema, VolumeMappingSchema, WarningSchema };
|