@better-openclaw/core 1.0.8 โ†’ 1.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. package/dist/bare-metal-partition.d.mts.map +1 -1
  2. package/dist/bare-metal-partition.mjs +1 -0
  3. package/dist/bare-metal-partition.mjs.map +1 -1
  4. package/dist/bare-metal-partition.test.mjs +1 -1
  5. package/dist/composer.d.mts.map +1 -1
  6. package/dist/composer.mjs +11 -1
  7. package/dist/composer.mjs.map +1 -1
  8. package/dist/composer.snapshot.test.mjs +1 -1
  9. package/dist/composer.test.mjs +1 -1
  10. package/dist/errors.d.mts +17 -0
  11. package/dist/errors.d.mts.map +1 -0
  12. package/dist/errors.mjs +24 -0
  13. package/dist/errors.mjs.map +1 -0
  14. package/dist/generate.d.mts +4 -3
  15. package/dist/generate.d.mts.map +1 -1
  16. package/dist/generate.mjs +13 -5
  17. package/dist/generate.mjs.map +1 -1
  18. package/dist/generate.test.mjs +1 -1
  19. package/dist/generators/bare-metal-install.test.mjs +1 -1
  20. package/dist/generators/traefik.d.mts +19 -0
  21. package/dist/generators/traefik.d.mts.map +1 -0
  22. package/dist/generators/traefik.mjs +86 -0
  23. package/dist/generators/traefik.mjs.map +1 -0
  24. package/dist/generators/traefik.test.d.mts +1 -0
  25. package/dist/generators/traefik.test.mjs +69 -0
  26. package/dist/generators/traefik.test.mjs.map +1 -0
  27. package/dist/index.d.mts +4 -2
  28. package/dist/index.mjs +4 -2
  29. package/dist/migrations.d.mts +14 -0
  30. package/dist/migrations.d.mts.map +1 -0
  31. package/dist/migrations.mjs +33 -0
  32. package/dist/migrations.mjs.map +1 -0
  33. package/dist/migrations.test.d.mts +1 -0
  34. package/dist/migrations.test.mjs +42 -0
  35. package/dist/migrations.test.mjs.map +1 -0
  36. package/dist/presets/registry.test.mjs +1 -1
  37. package/dist/resolver.d.mts +6 -1
  38. package/dist/resolver.d.mts.map +1 -1
  39. package/dist/resolver.mjs +21 -3
  40. package/dist/resolver.mjs.map +1 -1
  41. package/dist/resolver.test.mjs +1 -1
  42. package/dist/schema.d.mts +1 -0
  43. package/dist/schema.d.mts.map +1 -1
  44. package/dist/schema.mjs +1 -0
  45. package/dist/schema.mjs.map +1 -1
  46. package/dist/schema.test.mjs +1 -1
  47. package/dist/services/definitions/caddy.mjs +20 -1
  48. package/dist/services/definitions/caddy.mjs.map +1 -1
  49. package/dist/services/definitions/cal-com.d.mts +7 -0
  50. package/dist/services/definitions/cal-com.d.mts.map +1 -0
  51. package/dist/services/definitions/cal-com.mjs +88 -0
  52. package/dist/services/definitions/cal-com.mjs.map +1 -0
  53. package/dist/services/definitions/grafana.mjs +13 -1
  54. package/dist/services/definitions/grafana.mjs.map +1 -1
  55. package/dist/services/definitions/index.d.mts +4 -1
  56. package/dist/services/definitions/index.d.mts.map +1 -1
  57. package/dist/services/definitions/index.mjs +8 -2
  58. package/dist/services/definitions/index.mjs.map +1 -1
  59. package/dist/services/definitions/neo4j.d.mts +7 -0
  60. package/dist/services/definitions/neo4j.d.mts.map +1 -0
  61. package/dist/services/definitions/neo4j.mjs +91 -0
  62. package/dist/services/definitions/neo4j.mjs.map +1 -0
  63. package/dist/services/definitions/traefik.mjs +0 -1
  64. package/dist/services/definitions/traefik.mjs.map +1 -1
  65. package/dist/services/definitions/xyops.d.mts +7 -0
  66. package/dist/services/definitions/xyops.d.mts.map +1 -0
  67. package/dist/services/definitions/xyops.mjs +86 -0
  68. package/dist/services/definitions/xyops.mjs.map +1 -0
  69. package/dist/services/registry.test.mjs +1 -1
  70. package/dist/skills/registry.d.mts.map +1 -1
  71. package/dist/skills/registry.mjs +454 -6
  72. package/dist/skills/registry.mjs.map +1 -1
  73. package/dist/types.d.mts +8 -1
  74. package/dist/types.d.mts.map +1 -1
  75. package/dist/types.mjs.map +1 -1
  76. package/dist/validator.mjs +11 -0
  77. package/dist/validator.mjs.map +1 -1
  78. package/dist/validator.test.mjs +1 -1
  79. package/dist/version-manager.d.mts +1 -1
  80. package/dist/version-manager.d.mts.map +1 -1
  81. package/dist/version-manager.mjs +11 -5
  82. package/dist/version-manager.mjs.map +1 -1
  83. package/dist/version-manager.test.d.mts +1 -0
  84. package/dist/version-manager.test.mjs +102 -0
  85. package/dist/version-manager.test.mjs.map +1 -0
  86. package/dist/{vi.2VT5v0um-Qk6MgAnK.mjs โ†’ vi.2VT5v0um-YSByewHe.mjs} +5 -5
  87. package/dist/{vi.2VT5v0um-Qk6MgAnK.mjs.map โ†’ vi.2VT5v0um-YSByewHe.mjs.map} +1 -1
  88. package/package.json +1 -1
  89. package/src/__snapshots__/composer.snapshot.test.ts.snap +15 -1
  90. package/src/bare-metal-partition.ts +1 -0
  91. package/src/composer.ts +22 -1
  92. package/src/errors.ts +23 -0
  93. package/src/generate.ts +22 -4
  94. package/src/generators/traefik.test.ts +97 -0
  95. package/src/generators/traefik.ts +104 -0
  96. package/src/index.ts +7 -1
  97. package/src/migrations.test.ts +36 -0
  98. package/src/migrations.ts +49 -0
  99. package/src/resolver.ts +37 -3
  100. package/src/schema.ts +1 -0
  101. package/src/services/definitions/caddy.ts +23 -1
  102. package/src/services/definitions/cal-com.ts +91 -0
  103. package/src/services/definitions/grafana.ts +16 -1
  104. package/src/services/definitions/index.ts +9 -0
  105. package/src/services/definitions/neo4j.ts +96 -0
  106. package/src/services/definitions/traefik.ts +0 -2
  107. package/src/services/definitions/xyops.ts +94 -0
  108. package/src/skills/registry.ts +352 -6
  109. package/src/types.ts +5 -1
  110. package/src/validator.ts +16 -0
  111. package/src/version-manager.test.ts +134 -0
  112. package/src/version-manager.ts +12 -5
@@ -74,7 +74,13 @@ const skillPacks = [
74
74
  "grafana",
75
75
  "prometheus"
76
76
  ],
77
- skills: ["n8n-trigger", "redis-cache"],
77
+ skills: [
78
+ "n8n-trigger",
79
+ "redis-cache",
80
+ "grafana-dashboard",
81
+ "prometheus-query",
82
+ "uptime-kuma-monitor"
83
+ ],
78
84
  icon: "โš™๏ธ",
79
85
  tags: [
80
86
  "devops",
@@ -91,7 +97,11 @@ const skillPacks = [
91
97
  "postgresql",
92
98
  "meilisearch"
93
99
  ],
94
- skills: ["qdrant-memory"],
100
+ skills: [
101
+ "qdrant-memory",
102
+ "postgresql-query",
103
+ "meilisearch-index"
104
+ ],
95
105
  icon: "๐Ÿ“š",
96
106
  tags: [
97
107
  "knowledge",
@@ -126,7 +136,8 @@ const skillPacks = [
126
136
  skills: [
127
137
  "ffmpeg-process",
128
138
  "minio-storage",
129
- "redis-cache"
139
+ "redis-cache",
140
+ "postiz-schedule"
130
141
  ],
131
142
  icon: "๐Ÿ“ฑ",
132
143
  tags: [
@@ -145,7 +156,11 @@ const skillPacks = [
145
156
  "open-webui",
146
157
  "litellm"
147
158
  ],
148
- skills: ["ollama-local-llm"],
159
+ skills: [
160
+ "ollama-local-llm",
161
+ "open-webui-chat",
162
+ "litellm-gateway"
163
+ ],
149
164
  icon: "๐Ÿงช",
150
165
  tags: [
151
166
  "ai",
@@ -163,7 +178,11 @@ const skillPacks = [
163
178
  "gitea",
164
179
  "code-server"
165
180
  ],
166
- skills: [],
181
+ skills: [
182
+ "claude-code-assist",
183
+ "gitea-repo",
184
+ "code-server-develop"
185
+ ],
167
186
  icon: "๐Ÿ’ป",
168
187
  tags: [
169
188
  "coding",
@@ -183,7 +202,13 @@ const skillPacks = [
183
202
  "postgresql",
184
203
  "redis"
185
204
  ],
186
- skills: ["qdrant-memory"],
205
+ skills: [
206
+ "qdrant-memory",
207
+ "outline-wiki",
208
+ "paperless-archive",
209
+ "postgresql-query",
210
+ "redis-cache"
211
+ ],
187
212
  icon: "๐Ÿ“š",
188
213
  tags: [
189
214
  "knowledge",
@@ -191,6 +216,429 @@ const skillPacks = [
191
216
  "documents",
192
217
  "search"
193
218
  ]
219
+ },
220
+ {
221
+ id: "data-engineer",
222
+ name: "Data Engineer",
223
+ description: "Process and transform data with PostgreSQL, CSV/JSON/XML transforms, and PDF extraction",
224
+ requiredServices: ["postgresql"],
225
+ skills: [
226
+ "postgresql-query",
227
+ "csv-transform",
228
+ "json-transform",
229
+ "xml-parse",
230
+ "pdf-extract",
231
+ "excel-process",
232
+ "markdown-convert"
233
+ ],
234
+ icon: "๐Ÿ”ง",
235
+ tags: [
236
+ "data",
237
+ "etl",
238
+ "transform",
239
+ "processing"
240
+ ]
241
+ },
242
+ {
243
+ id: "nlp-pipeline",
244
+ name: "NLP Pipeline",
245
+ description: "Natural language processing with summarization, translation, classification, and embeddings via Ollama",
246
+ requiredServices: ["ollama"],
247
+ skills: [
248
+ "text-summarize",
249
+ "text-translate",
250
+ "text-classify",
251
+ "text-embed",
252
+ "ollama-local-llm"
253
+ ],
254
+ icon: "๐Ÿง ",
255
+ tags: [
256
+ "nlp",
257
+ "text",
258
+ "embeddings",
259
+ "translation"
260
+ ]
261
+ },
262
+ {
263
+ id: "image-processor",
264
+ name: "Image Processor",
265
+ description: "Resize, convert, and OCR images with ImageMagick and Tesseract",
266
+ requiredServices: ["ffmpeg"],
267
+ skills: [
268
+ "image-resize",
269
+ "image-convert",
270
+ "image-ocr",
271
+ "ffmpeg-process"
272
+ ],
273
+ icon: "๐Ÿ–ผ๏ธ",
274
+ tags: [
275
+ "image",
276
+ "ocr",
277
+ "media",
278
+ "conversion"
279
+ ]
280
+ },
281
+ {
282
+ id: "api-integrator",
283
+ name: "API Integrator",
284
+ description: "HTTP requests, webhooks, and GraphQL queries for external API integration",
285
+ requiredServices: [],
286
+ skills: [
287
+ "http-request",
288
+ "api-webhook",
289
+ "graphql-query"
290
+ ],
291
+ icon: "๐ŸŒ",
292
+ tags: [
293
+ "api",
294
+ "http",
295
+ "webhook",
296
+ "graphql"
297
+ ]
298
+ },
299
+ {
300
+ id: "security-ops",
301
+ name: "Security Ops",
302
+ description: "JWT validation, hashing, SSL checks, port scanning, and network diagnostics",
303
+ requiredServices: [],
304
+ skills: [
305
+ "jwt-manage",
306
+ "hash-generate",
307
+ "ssl-check",
308
+ "dns-lookup",
309
+ "port-scan",
310
+ "ping-check"
311
+ ],
312
+ icon: "๐Ÿ›ก๏ธ",
313
+ tags: [
314
+ "security",
315
+ "networking",
316
+ "diagnostics"
317
+ ]
318
+ },
319
+ {
320
+ id: "communication-hub",
321
+ name: "Communication Hub",
322
+ description: "Multi-channel messaging with Matrix, Mattermost, Rocket.Chat, email, and push notifications",
323
+ requiredServices: ["matrix-synapse", "gotify"],
324
+ skills: [
325
+ "matrix-message",
326
+ "mattermost-post",
327
+ "rocketchat-send",
328
+ "gotify-notify",
329
+ "ntfy-publish",
330
+ "email-send"
331
+ ],
332
+ icon: "๐Ÿ“จ",
333
+ tags: [
334
+ "messaging",
335
+ "notifications",
336
+ "email",
337
+ "chat"
338
+ ]
339
+ },
340
+ {
341
+ id: "analytics-suite",
342
+ name: "Analytics Suite",
343
+ description: "Web and product analytics with Matomo, Umami, OpenPanel, Grafana, and Prometheus",
344
+ requiredServices: ["grafana", "prometheus"],
345
+ skills: [
346
+ "matomo-track",
347
+ "umami-analytics",
348
+ "openpanel-analyze",
349
+ "grafana-dashboard",
350
+ "prometheus-query"
351
+ ],
352
+ icon: "๐Ÿ“Š",
353
+ tags: [
354
+ "analytics",
355
+ "monitoring",
356
+ "metrics",
357
+ "dashboards"
358
+ ]
359
+ },
360
+ {
361
+ id: "full-devops",
362
+ name: "Full DevOps",
363
+ description: "Complete DevOps toolkit with Git hosting, container management, deployments, monitoring, and log viewing",
364
+ requiredServices: [
365
+ "gitea",
366
+ "portainer",
367
+ "coolify",
368
+ "grafana",
369
+ "prometheus"
370
+ ],
371
+ skills: [
372
+ "gitea-repo",
373
+ "portainer-manage",
374
+ "coolify-deploy",
375
+ "dokploy-deploy",
376
+ "watchtower-update",
377
+ "dozzle-logs",
378
+ "grafana-dashboard",
379
+ "prometheus-query",
380
+ "uptime-kuma-monitor",
381
+ "beszel-monitor"
382
+ ],
383
+ icon: "๐Ÿ—๏ธ",
384
+ tags: [
385
+ "devops",
386
+ "ci-cd",
387
+ "containers",
388
+ "deployment"
389
+ ]
390
+ },
391
+ {
392
+ id: "document-manager",
393
+ name: "Document Manager",
394
+ description: "Document processing pipeline with wiki, archival, OCR, Q&A, and PDF extraction",
395
+ requiredServices: ["outline", "paperless-ngx"],
396
+ skills: [
397
+ "outline-wiki",
398
+ "paperless-archive",
399
+ "docsgpt-ask",
400
+ "pdf-extract",
401
+ "image-ocr"
402
+ ],
403
+ icon: "๐Ÿ“‘",
404
+ tags: [
405
+ "documents",
406
+ "wiki",
407
+ "ocr",
408
+ "archive"
409
+ ]
410
+ },
411
+ {
412
+ id: "ai-coding-team",
413
+ name: "AI Coding Team",
414
+ description: "Multi-agent AI coding ensemble with Claude Code, Codex, Gemini CLI, OpenCode, and browser IDE",
415
+ requiredServices: ["code-server", "gitea"],
416
+ skills: [
417
+ "claude-code-assist",
418
+ "codex-generate",
419
+ "gemini-cli-query",
420
+ "opencode-develop",
421
+ "code-server-develop",
422
+ "gitea-repo"
423
+ ],
424
+ icon: "๐Ÿค–",
425
+ tags: [
426
+ "ai-coding",
427
+ "agents",
428
+ "development",
429
+ "ide"
430
+ ]
431
+ },
432
+ {
433
+ id: "rag-pipeline",
434
+ name: "RAG Pipeline",
435
+ description: "Build retrieval-augmented generation systems with LangChain, LlamaIndex, Haystack, and vector databases",
436
+ requiredServices: ["milvus"],
437
+ skills: [
438
+ "langchain-agent",
439
+ "llamaindex-query",
440
+ "haystack-rag",
441
+ "ragflow-pipeline",
442
+ "milvus-vectors",
443
+ "firecrawl-scrape"
444
+ ],
445
+ icon: "๐Ÿง ",
446
+ tags: [
447
+ "rag",
448
+ "ai",
449
+ "embeddings",
450
+ "search",
451
+ "llm"
452
+ ]
453
+ },
454
+ {
455
+ id: "self-hosted-cloud",
456
+ name: "Self-Hosted Cloud",
457
+ description: "Complete self-hosted infrastructure with cloud storage, photos, media streaming, and password management",
458
+ requiredServices: [
459
+ "nextcloud",
460
+ "immich",
461
+ "jellyfin",
462
+ "vaultwarden"
463
+ ],
464
+ skills: [
465
+ "nextcloud-files",
466
+ "immich-photos",
467
+ "jellyfin-media",
468
+ "vaultwarden-manage"
469
+ ],
470
+ icon: "โ˜๏ธ",
471
+ tags: [
472
+ "self-hosted",
473
+ "cloud",
474
+ "storage",
475
+ "media",
476
+ "security"
477
+ ]
478
+ },
479
+ {
480
+ id: "ai-agent-orchestra",
481
+ name: "AI Agent Orchestra",
482
+ description: "Multi-agent AI orchestration with CrewAI, AutoGPT, LangChain, Langflow, and Open Interpreter",
483
+ requiredServices: [],
484
+ skills: [
485
+ "crewai-orchestrate",
486
+ "autogpt-autonomous",
487
+ "langchain-agent",
488
+ "langflow-build",
489
+ "open-interpreter-run"
490
+ ],
491
+ icon: "๐ŸŽญ",
492
+ tags: [
493
+ "ai",
494
+ "agents",
495
+ "multi-agent",
496
+ "orchestration",
497
+ "autonomous"
498
+ ]
499
+ },
500
+ {
501
+ id: "cicd-pipeline",
502
+ name: "CI/CD Pipeline",
503
+ description: "Full CI/CD pipeline with Jenkins, ArgoCD, Woodpecker, and infrastructure as code",
504
+ requiredServices: ["jenkins"],
505
+ skills: [
506
+ "jenkins-pipeline",
507
+ "argocd-deploy",
508
+ "woodpecker-ci",
509
+ "terraform-provision",
510
+ "ansible-configure"
511
+ ],
512
+ icon: "๐Ÿ”„",
513
+ tags: [
514
+ "ci-cd",
515
+ "devops",
516
+ "gitops",
517
+ "infrastructure"
518
+ ]
519
+ },
520
+ {
521
+ id: "zero-trust-security",
522
+ name: "Zero-Trust Security",
523
+ description: "Enterprise security with SSO, secrets management, VPN, intrusion detection, and feature flags",
524
+ requiredServices: ["authentik", "crowdsec"],
525
+ skills: [
526
+ "authentik-auth",
527
+ "keycloak-auth",
528
+ "vault-secrets",
529
+ "infisical-secrets",
530
+ "netbird-vpn",
531
+ "teleport-access",
532
+ "crowdsec-protect"
533
+ ],
534
+ icon: "๐Ÿ”’",
535
+ tags: [
536
+ "security",
537
+ "zero-trust",
538
+ "sso",
539
+ "secrets",
540
+ "vpn"
541
+ ]
542
+ },
543
+ {
544
+ id: "content-platform",
545
+ name: "Content Platform",
546
+ description: "Publishing and CMS platform with Ghost, Strapi, Directus, and newsletter management",
547
+ requiredServices: ["ghost"],
548
+ skills: [
549
+ "ghost-publish",
550
+ "strapi-cms",
551
+ "directus-cms",
552
+ "listmonk-email",
553
+ "plausible-analytics"
554
+ ],
555
+ icon: "๐Ÿ“",
556
+ tags: [
557
+ "cms",
558
+ "publishing",
559
+ "blog",
560
+ "newsletter",
561
+ "analytics"
562
+ ]
563
+ },
564
+ {
565
+ id: "backend-platform",
566
+ name: "Backend Platform",
567
+ description: "Backend-as-a-service with Supabase, Appwrite, PocketBase, and API gateway",
568
+ requiredServices: ["supabase"],
569
+ skills: [
570
+ "supabase-query",
571
+ "appwrite-backend",
572
+ "pocketbase-backend",
573
+ "kong-gateway",
574
+ "rabbitmq-queue"
575
+ ],
576
+ icon: "โšก",
577
+ tags: [
578
+ "backend",
579
+ "baas",
580
+ "api",
581
+ "database",
582
+ "messaging"
583
+ ]
584
+ },
585
+ {
586
+ id: "observability-stack",
587
+ name: "Observability Stack",
588
+ description: "Full observability with Loki logs, SigNoz APM, Sentry errors, Gatus health, and Elasticsearch",
589
+ requiredServices: ["loki", "signoz"],
590
+ skills: [
591
+ "loki-logs",
592
+ "signoz-observe",
593
+ "sentry-errors",
594
+ "gatus-health",
595
+ "elasticsearch-search"
596
+ ],
597
+ icon: "๐Ÿ“ก",
598
+ tags: [
599
+ "observability",
600
+ "logs",
601
+ "apm",
602
+ "errors",
603
+ "health"
604
+ ]
605
+ },
606
+ {
607
+ id: "document-hub",
608
+ name: "Document Hub",
609
+ description: "Document management with Paperless-ngx, BookStack wiki, Stirling PDF tools, and Excalidraw",
610
+ requiredServices: ["paperless-ngx"],
611
+ skills: [
612
+ "paperless-ngx-docs",
613
+ "bookstack-wiki",
614
+ "stirling-pdf-tools",
615
+ "excalidraw-draw"
616
+ ],
617
+ icon: "๐Ÿ“‘",
618
+ tags: [
619
+ "documents",
620
+ "wiki",
621
+ "pdf",
622
+ "collaboration"
623
+ ]
624
+ },
625
+ {
626
+ id: "smart-home",
627
+ name: "Smart Home",
628
+ description: "Home automation and event-driven workflows with Home Assistant, Huginn, and Activepieces",
629
+ requiredServices: ["homeassistant"],
630
+ skills: [
631
+ "home-assistant-automate",
632
+ "huginn-automate",
633
+ "activepieces-flow"
634
+ ],
635
+ icon: "๐Ÿ ",
636
+ tags: [
637
+ "iot",
638
+ "automation",
639
+ "smart-home",
640
+ "workflows"
641
+ ]
194
642
  }
195
643
  ];
196
644
  const packMap = /* @__PURE__ */ new Map();
@@ -1 +1 @@
1
- {"version":3,"file":"registry.mjs","names":[],"sources":["../../src/skills/registry.ts"],"sourcesContent":["import type { SkillPack } from \"../types.js\";\n\nconst skillPacks: SkillPack[] = [\n\t{\n\t\tid: \"video-creator\",\n\t\tname: \"Video Creator\",\n\t\tdescription:\n\t\t\t\"Create and process videos programmatically with FFmpeg, Remotion, and MinIO storage\",\n\t\trequiredServices: [\"ffmpeg\", \"remotion\", \"minio\"],\n\t\tskills: [\"ffmpeg-process\", \"remotion-render\", \"minio-storage\"],\n\t\ticon: \"๐ŸŽฌ\",\n\t\ttags: [\"video\", \"media\", \"rendering\"],\n\t},\n\t{\n\t\tid: \"research-agent\",\n\t\tname: \"Research Agent\",\n\t\tdescription: \"Research the web, store findings in vector memory, and scrape full pages\",\n\t\trequiredServices: [\"qdrant\", \"searxng\", \"browserless\"],\n\t\tskills: [\"qdrant-memory\", \"searxng-search\", \"browserless-browse\"],\n\t\ticon: \"๐Ÿ”ฌ\",\n\t\ttags: [\"research\", \"rag\", \"web-scraping\"],\n\t},\n\t{\n\t\tid: \"social-media\",\n\t\tname: \"Social Media\",\n\t\tdescription:\n\t\t\t\"Process and manage social media content with video tools, caching, and asset storage\",\n\t\trequiredServices: [\"ffmpeg\", \"redis\", \"minio\"],\n\t\tskills: [\"ffmpeg-process\", \"redis-cache\", \"minio-storage\"],\n\t\ticon: \"๐Ÿ“ฑ\",\n\t\ttags: [\"social\", \"content\", \"scheduling\"],\n\t},\n\t{\n\t\tid: \"dev-ops\",\n\t\tname: \"DevOps\",\n\t\tdescription: \"Monitor services, automate workflows, and manage infrastructure alerts\",\n\t\trequiredServices: [\"n8n\", \"redis\", \"uptime-kuma\", \"grafana\", \"prometheus\"],\n\t\tskills: [\"n8n-trigger\", \"redis-cache\"],\n\t\ticon: \"โš™๏ธ\",\n\t\ttags: [\"devops\", \"monitoring\", \"automation\"],\n\t},\n\t{\n\t\tid: \"knowledge-base\",\n\t\tname: \"Knowledge Base\",\n\t\tdescription:\n\t\t\t\"Index documents with vector search and full-text search for comprehensive retrieval\",\n\t\trequiredServices: [\"qdrant\", \"postgresql\", \"meilisearch\"],\n\t\tskills: [\"qdrant-memory\"],\n\t\ticon: \"๐Ÿ“š\",\n\t\ttags: [\"knowledge\", \"search\", \"indexing\"],\n\t},\n\t{\n\t\tid: \"local-ai\",\n\t\tname: \"Local AI\",\n\t\tdescription: \"Run local LLM inference and speech-to-text transcription without external APIs\",\n\t\trequiredServices: [\"ollama\", \"whisper\"],\n\t\tskills: [\"ollama-local-llm\", \"whisper-transcribe\"],\n\t\ticon: \"๐Ÿค–\",\n\t\ttags: [\"local-llm\", \"transcription\", \"offline\"],\n\t},\n\t{\n\t\tid: \"content-creator\",\n\t\tname: \"Content Creator\",\n\t\tdescription:\n\t\t\t\"Full social media content pipeline with scheduling, media processing, analytics, and storage\",\n\t\trequiredServices: [\"postiz\", \"ffmpeg\", \"minio\", \"redis\", \"postgresql\"],\n\t\tskills: [\"ffmpeg-process\", \"minio-storage\", \"redis-cache\"],\n\t\ticon: \"๐Ÿ“ฑ\",\n\t\ttags: [\"social-media\", \"content\", \"scheduling\", \"analytics\"],\n\t},\n\t{\n\t\tid: \"ai-playground\",\n\t\tname: \"AI Playground\",\n\t\tdescription:\n\t\t\t\"Full AI experimentation stack with chat UIs, LLM gateway, local models, and document chat\",\n\t\trequiredServices: [\"ollama\", \"open-webui\", \"litellm\"],\n\t\tskills: [\"ollama-local-llm\"],\n\t\ticon: \"๐Ÿงช\",\n\t\ttags: [\"ai\", \"llm\", \"playground\", \"experimentation\"],\n\t},\n\t{\n\t\tid: \"coding-team\",\n\t\tname: \"Coding Team\",\n\t\tdescription:\n\t\t\t\"AI-powered development environment with coding agents, Git hosting, and browser IDE\",\n\t\trequiredServices: [\"claude-code\", \"gitea\", \"code-server\"],\n\t\tskills: [],\n\t\ticon: \"๐Ÿ’ป\",\n\t\ttags: [\"coding\", \"development\", \"ide\", \"git\"],\n\t},\n\t{\n\t\tid: \"knowledge-hub\",\n\t\tname: \"Knowledge Hub\",\n\t\tdescription:\n\t\t\t\"Enterprise knowledge management with wiki, document processing, analytics, and vector search\",\n\t\trequiredServices: [\"outline\", \"paperless-ngx\", \"qdrant\", \"postgresql\", \"redis\"],\n\t\tskills: [\"qdrant-memory\"],\n\t\ticon: \"๐Ÿ“š\",\n\t\ttags: [\"knowledge\", \"wiki\", \"documents\", \"search\"],\n\t},\n];\n\nconst packMap = new Map<string, SkillPack>();\nfor (const pack of skillPacks) {\n\tif (packMap.has(pack.id)) {\n\t\tthrow new Error(`Duplicate skill pack ID: \"${pack.id}\"`);\n\t}\n\tpackMap.set(pack.id, pack);\n}\n\nexport const skillPackRegistry: ReadonlyMap<string, SkillPack> = packMap;\n\nexport function getSkillPackById(id: string): SkillPack | undefined {\n\treturn packMap.get(id);\n}\n\nexport function getAllSkillPacks(): SkillPack[] {\n\treturn [...skillPacks];\n}\n\n/** Get skill packs whose required services are all present in the given service list */\nexport function getCompatibleSkillPacks(availableServiceIds: string[]): SkillPack[] {\n\treturn skillPacks.filter((pack) =>\n\t\tpack.requiredServices.every((req) => availableServiceIds.includes(req)),\n\t);\n}\n"],"mappings":";AAEA,MAAM,aAA0B;CAC/B;EACC,IAAI;EACJ,MAAM;EACN,aACC;EACD,kBAAkB;GAAC;GAAU;GAAY;GAAQ;EACjD,QAAQ;GAAC;GAAkB;GAAmB;GAAgB;EAC9D,MAAM;EACN,MAAM;GAAC;GAAS;GAAS;GAAY;EACrC;CACD;EACC,IAAI;EACJ,MAAM;EACN,aAAa;EACb,kBAAkB;GAAC;GAAU;GAAW;GAAc;EACtD,QAAQ;GAAC;GAAiB;GAAkB;GAAqB;EACjE,MAAM;EACN,MAAM;GAAC;GAAY;GAAO;GAAe;EACzC;CACD;EACC,IAAI;EACJ,MAAM;EACN,aACC;EACD,kBAAkB;GAAC;GAAU;GAAS;GAAQ;EAC9C,QAAQ;GAAC;GAAkB;GAAe;GAAgB;EAC1D,MAAM;EACN,MAAM;GAAC;GAAU;GAAW;GAAa;EACzC;CACD;EACC,IAAI;EACJ,MAAM;EACN,aAAa;EACb,kBAAkB;GAAC;GAAO;GAAS;GAAe;GAAW;GAAa;EAC1E,QAAQ,CAAC,eAAe,cAAc;EACtC,MAAM;EACN,MAAM;GAAC;GAAU;GAAc;GAAa;EAC5C;CACD;EACC,IAAI;EACJ,MAAM;EACN,aACC;EACD,kBAAkB;GAAC;GAAU;GAAc;GAAc;EACzD,QAAQ,CAAC,gBAAgB;EACzB,MAAM;EACN,MAAM;GAAC;GAAa;GAAU;GAAW;EACzC;CACD;EACC,IAAI;EACJ,MAAM;EACN,aAAa;EACb,kBAAkB,CAAC,UAAU,UAAU;EACvC,QAAQ,CAAC,oBAAoB,qBAAqB;EAClD,MAAM;EACN,MAAM;GAAC;GAAa;GAAiB;GAAU;EAC/C;CACD;EACC,IAAI;EACJ,MAAM;EACN,aACC;EACD,kBAAkB;GAAC;GAAU;GAAU;GAAS;GAAS;GAAa;EACtE,QAAQ;GAAC;GAAkB;GAAiB;GAAc;EAC1D,MAAM;EACN,MAAM;GAAC;GAAgB;GAAW;GAAc;GAAY;EAC5D;CACD;EACC,IAAI;EACJ,MAAM;EACN,aACC;EACD,kBAAkB;GAAC;GAAU;GAAc;GAAU;EACrD,QAAQ,CAAC,mBAAmB;EAC5B,MAAM;EACN,MAAM;GAAC;GAAM;GAAO;GAAc;GAAkB;EACpD;CACD;EACC,IAAI;EACJ,MAAM;EACN,aACC;EACD,kBAAkB;GAAC;GAAe;GAAS;GAAc;EACzD,QAAQ,EAAE;EACV,MAAM;EACN,MAAM;GAAC;GAAU;GAAe;GAAO;GAAM;EAC7C;CACD;EACC,IAAI;EACJ,MAAM;EACN,aACC;EACD,kBAAkB;GAAC;GAAW;GAAiB;GAAU;GAAc;GAAQ;EAC/E,QAAQ,CAAC,gBAAgB;EACzB,MAAM;EACN,MAAM;GAAC;GAAa;GAAQ;GAAa;GAAS;EAClD;CACD;AAED,MAAM,0BAAU,IAAI,KAAwB;AAC5C,KAAK,MAAM,QAAQ,YAAY;AAC9B,KAAI,QAAQ,IAAI,KAAK,GAAG,CACvB,OAAM,IAAI,MAAM,6BAA6B,KAAK,GAAG,GAAG;AAEzD,SAAQ,IAAI,KAAK,IAAI,KAAK;;AAG3B,MAAa,oBAAoD;AAEjE,SAAgB,iBAAiB,IAAmC;AACnE,QAAO,QAAQ,IAAI,GAAG;;AAGvB,SAAgB,mBAAgC;AAC/C,QAAO,CAAC,GAAG,WAAW;;;AAIvB,SAAgB,wBAAwB,qBAA4C;AACnF,QAAO,WAAW,QAAQ,SACzB,KAAK,iBAAiB,OAAO,QAAQ,oBAAoB,SAAS,IAAI,CAAC,CACvE"}
1
+ {"version":3,"file":"registry.mjs","names":[],"sources":["../../src/skills/registry.ts"],"sourcesContent":["import type { SkillPack } from \"../types.js\";\n\nconst skillPacks: SkillPack[] = [\n\t{\n\t\tid: \"video-creator\",\n\t\tname: \"Video Creator\",\n\t\tdescription:\n\t\t\t\"Create and process videos programmatically with FFmpeg, Remotion, and MinIO storage\",\n\t\trequiredServices: [\"ffmpeg\", \"remotion\", \"minio\"],\n\t\tskills: [\"ffmpeg-process\", \"remotion-render\", \"minio-storage\"],\n\t\ticon: \"๐ŸŽฌ\",\n\t\ttags: [\"video\", \"media\", \"rendering\"],\n\t},\n\t{\n\t\tid: \"research-agent\",\n\t\tname: \"Research Agent\",\n\t\tdescription: \"Research the web, store findings in vector memory, and scrape full pages\",\n\t\trequiredServices: [\"qdrant\", \"searxng\", \"browserless\"],\n\t\tskills: [\"qdrant-memory\", \"searxng-search\", \"browserless-browse\"],\n\t\ticon: \"๐Ÿ”ฌ\",\n\t\ttags: [\"research\", \"rag\", \"web-scraping\"],\n\t},\n\t{\n\t\tid: \"social-media\",\n\t\tname: \"Social Media\",\n\t\tdescription:\n\t\t\t\"Process and manage social media content with video tools, caching, and asset storage\",\n\t\trequiredServices: [\"ffmpeg\", \"redis\", \"minio\"],\n\t\tskills: [\"ffmpeg-process\", \"redis-cache\", \"minio-storage\"],\n\t\ticon: \"๐Ÿ“ฑ\",\n\t\ttags: [\"social\", \"content\", \"scheduling\"],\n\t},\n\t{\n\t\tid: \"dev-ops\",\n\t\tname: \"DevOps\",\n\t\tdescription: \"Monitor services, automate workflows, and manage infrastructure alerts\",\n\t\trequiredServices: [\"n8n\", \"redis\", \"uptime-kuma\", \"grafana\", \"prometheus\"],\n\t\tskills: [\n\t\t\t\"n8n-trigger\",\n\t\t\t\"redis-cache\",\n\t\t\t\"grafana-dashboard\",\n\t\t\t\"prometheus-query\",\n\t\t\t\"uptime-kuma-monitor\",\n\t\t],\n\t\ticon: \"โš™๏ธ\",\n\t\ttags: [\"devops\", \"monitoring\", \"automation\"],\n\t},\n\t{\n\t\tid: \"knowledge-base\",\n\t\tname: \"Knowledge Base\",\n\t\tdescription:\n\t\t\t\"Index documents with vector search and full-text search for comprehensive retrieval\",\n\t\trequiredServices: [\"qdrant\", \"postgresql\", \"meilisearch\"],\n\t\tskills: [\"qdrant-memory\", \"postgresql-query\", \"meilisearch-index\"],\n\t\ticon: \"๐Ÿ“š\",\n\t\ttags: [\"knowledge\", \"search\", \"indexing\"],\n\t},\n\t{\n\t\tid: \"local-ai\",\n\t\tname: \"Local AI\",\n\t\tdescription: \"Run local LLM inference and speech-to-text transcription without external APIs\",\n\t\trequiredServices: [\"ollama\", \"whisper\"],\n\t\tskills: [\"ollama-local-llm\", \"whisper-transcribe\"],\n\t\ticon: \"๐Ÿค–\",\n\t\ttags: [\"local-llm\", \"transcription\", \"offline\"],\n\t},\n\t{\n\t\tid: \"content-creator\",\n\t\tname: \"Content Creator\",\n\t\tdescription:\n\t\t\t\"Full social media content pipeline with scheduling, media processing, analytics, and storage\",\n\t\trequiredServices: [\"postiz\", \"ffmpeg\", \"minio\", \"redis\", \"postgresql\"],\n\t\tskills: [\n\t\t\t\"ffmpeg-process\",\n\t\t\t\"minio-storage\",\n\t\t\t\"redis-cache\",\n\t\t\t\"postiz-schedule\",\n\t\t],\n\t\ticon: \"๐Ÿ“ฑ\",\n\t\ttags: [\"social-media\", \"content\", \"scheduling\", \"analytics\"],\n\t},\n\t{\n\t\tid: \"ai-playground\",\n\t\tname: \"AI Playground\",\n\t\tdescription:\n\t\t\t\"Full AI experimentation stack with chat UIs, LLM gateway, local models, and document chat\",\n\t\trequiredServices: [\"ollama\", \"open-webui\", \"litellm\"],\n\t\tskills: [\"ollama-local-llm\", \"open-webui-chat\", \"litellm-gateway\"],\n\t\ticon: \"๐Ÿงช\",\n\t\ttags: [\"ai\", \"llm\", \"playground\", \"experimentation\"],\n\t},\n\t{\n\t\tid: \"coding-team\",\n\t\tname: \"Coding Team\",\n\t\tdescription:\n\t\t\t\"AI-powered development environment with coding agents, Git hosting, and browser IDE\",\n\t\trequiredServices: [\"claude-code\", \"gitea\", \"code-server\"],\n\t\tskills: [\"claude-code-assist\", \"gitea-repo\", \"code-server-develop\"],\n\t\ticon: \"๐Ÿ’ป\",\n\t\ttags: [\"coding\", \"development\", \"ide\", \"git\"],\n\t},\n\t{\n\t\tid: \"knowledge-hub\",\n\t\tname: \"Knowledge Hub\",\n\t\tdescription:\n\t\t\t\"Enterprise knowledge management with wiki, document processing, analytics, and vector search\",\n\t\trequiredServices: [\"outline\", \"paperless-ngx\", \"qdrant\", \"postgresql\", \"redis\"],\n\t\tskills: [\n\t\t\t\"qdrant-memory\",\n\t\t\t\"outline-wiki\",\n\t\t\t\"paperless-archive\",\n\t\t\t\"postgresql-query\",\n\t\t\t\"redis-cache\",\n\t\t],\n\t\ticon: \"๐Ÿ“š\",\n\t\ttags: [\"knowledge\", \"wiki\", \"documents\", \"search\"],\n\t},\n\t// โ”€โ”€ New Skill Packs โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\n\t{\n\t\tid: \"data-engineer\",\n\t\tname: \"Data Engineer\",\n\t\tdescription:\n\t\t\t\"Process and transform data with PostgreSQL, CSV/JSON/XML transforms, and PDF extraction\",\n\t\trequiredServices: [\"postgresql\"],\n\t\tskills: [\n\t\t\t\"postgresql-query\",\n\t\t\t\"csv-transform\",\n\t\t\t\"json-transform\",\n\t\t\t\"xml-parse\",\n\t\t\t\"pdf-extract\",\n\t\t\t\"excel-process\",\n\t\t\t\"markdown-convert\",\n\t\t],\n\t\ticon: \"๐Ÿ”ง\",\n\t\ttags: [\"data\", \"etl\", \"transform\", \"processing\"],\n\t},\n\t{\n\t\tid: \"nlp-pipeline\",\n\t\tname: \"NLP Pipeline\",\n\t\tdescription:\n\t\t\t\"Natural language processing with summarization, translation, classification, and embeddings via Ollama\",\n\t\trequiredServices: [\"ollama\"],\n\t\tskills: [\n\t\t\t\"text-summarize\",\n\t\t\t\"text-translate\",\n\t\t\t\"text-classify\",\n\t\t\t\"text-embed\",\n\t\t\t\"ollama-local-llm\",\n\t\t],\n\t\ticon: \"๐Ÿง \",\n\t\ttags: [\"nlp\", \"text\", \"embeddings\", \"translation\"],\n\t},\n\t{\n\t\tid: \"image-processor\",\n\t\tname: \"Image Processor\",\n\t\tdescription:\n\t\t\t\"Resize, convert, and OCR images with ImageMagick and Tesseract\",\n\t\trequiredServices: [\"ffmpeg\"],\n\t\tskills: [\n\t\t\t\"image-resize\",\n\t\t\t\"image-convert\",\n\t\t\t\"image-ocr\",\n\t\t\t\"ffmpeg-process\",\n\t\t],\n\t\ticon: \"๐Ÿ–ผ๏ธ\",\n\t\ttags: [\"image\", \"ocr\", \"media\", \"conversion\"],\n\t},\n\t{\n\t\tid: \"api-integrator\",\n\t\tname: \"API Integrator\",\n\t\tdescription:\n\t\t\t\"HTTP requests, webhooks, and GraphQL queries for external API integration\",\n\t\trequiredServices: [],\n\t\tskills: [\n\t\t\t\"http-request\",\n\t\t\t\"api-webhook\",\n\t\t\t\"graphql-query\",\n\t\t],\n\t\ticon: \"๐ŸŒ\",\n\t\ttags: [\"api\", \"http\", \"webhook\", \"graphql\"],\n\t},\n\t{\n\t\tid: \"security-ops\",\n\t\tname: \"Security Ops\",\n\t\tdescription:\n\t\t\t\"JWT validation, hashing, SSL checks, port scanning, and network diagnostics\",\n\t\trequiredServices: [],\n\t\tskills: [\n\t\t\t\"jwt-manage\",\n\t\t\t\"hash-generate\",\n\t\t\t\"ssl-check\",\n\t\t\t\"dns-lookup\",\n\t\t\t\"port-scan\",\n\t\t\t\"ping-check\",\n\t\t],\n\t\ticon: \"๐Ÿ›ก๏ธ\",\n\t\ttags: [\"security\", \"networking\", \"diagnostics\"],\n\t},\n\t{\n\t\tid: \"communication-hub\",\n\t\tname: \"Communication Hub\",\n\t\tdescription:\n\t\t\t\"Multi-channel messaging with Matrix, Mattermost, Rocket.Chat, email, and push notifications\",\n\t\trequiredServices: [\"matrix-synapse\", \"gotify\"],\n\t\tskills: [\n\t\t\t\"matrix-message\",\n\t\t\t\"mattermost-post\",\n\t\t\t\"rocketchat-send\",\n\t\t\t\"gotify-notify\",\n\t\t\t\"ntfy-publish\",\n\t\t\t\"email-send\",\n\t\t],\n\t\ticon: \"๐Ÿ“จ\",\n\t\ttags: [\"messaging\", \"notifications\", \"email\", \"chat\"],\n\t},\n\t{\n\t\tid: \"analytics-suite\",\n\t\tname: \"Analytics Suite\",\n\t\tdescription:\n\t\t\t\"Web and product analytics with Matomo, Umami, OpenPanel, Grafana, and Prometheus\",\n\t\trequiredServices: [\"grafana\", \"prometheus\"],\n\t\tskills: [\n\t\t\t\"matomo-track\",\n\t\t\t\"umami-analytics\",\n\t\t\t\"openpanel-analyze\",\n\t\t\t\"grafana-dashboard\",\n\t\t\t\"prometheus-query\",\n\t\t],\n\t\ticon: \"๐Ÿ“Š\",\n\t\ttags: [\"analytics\", \"monitoring\", \"metrics\", \"dashboards\"],\n\t},\n\t{\n\t\tid: \"full-devops\",\n\t\tname: \"Full DevOps\",\n\t\tdescription:\n\t\t\t\"Complete DevOps toolkit with Git hosting, container management, deployments, monitoring, and log viewing\",\n\t\trequiredServices: [\"gitea\", \"portainer\", \"coolify\", \"grafana\", \"prometheus\"],\n\t\tskills: [\n\t\t\t\"gitea-repo\",\n\t\t\t\"portainer-manage\",\n\t\t\t\"coolify-deploy\",\n\t\t\t\"dokploy-deploy\",\n\t\t\t\"watchtower-update\",\n\t\t\t\"dozzle-logs\",\n\t\t\t\"grafana-dashboard\",\n\t\t\t\"prometheus-query\",\n\t\t\t\"uptime-kuma-monitor\",\n\t\t\t\"beszel-monitor\",\n\t\t],\n\t\ticon: \"๐Ÿ—๏ธ\",\n\t\ttags: [\"devops\", \"ci-cd\", \"containers\", \"deployment\"],\n\t},\n\t{\n\t\tid: \"document-manager\",\n\t\tname: \"Document Manager\",\n\t\tdescription:\n\t\t\t\"Document processing pipeline with wiki, archival, OCR, Q&A, and PDF extraction\",\n\t\trequiredServices: [\"outline\", \"paperless-ngx\"],\n\t\tskills: [\n\t\t\t\"outline-wiki\",\n\t\t\t\"paperless-archive\",\n\t\t\t\"docsgpt-ask\",\n\t\t\t\"pdf-extract\",\n\t\t\t\"image-ocr\",\n\t\t],\n\t\ticon: \"๐Ÿ“‘\",\n\t\ttags: [\"documents\", \"wiki\", \"ocr\", \"archive\"],\n\t},\n\t{\n\t\tid: \"ai-coding-team\",\n\t\tname: \"AI Coding Team\",\n\t\tdescription:\n\t\t\t\"Multi-agent AI coding ensemble with Claude Code, Codex, Gemini CLI, OpenCode, and browser IDE\",\n\t\trequiredServices: [\"code-server\", \"gitea\"],\n\t\tskills: [\n\t\t\t\"claude-code-assist\",\n\t\t\t\"codex-generate\",\n\t\t\t\"gemini-cli-query\",\n\t\t\t\"opencode-develop\",\n\t\t\t\"code-server-develop\",\n\t\t\t\"gitea-repo\",\n\t\t],\n\t\ticon: \"๐Ÿค–\",\n\t\ttags: [\"ai-coding\", \"agents\", \"development\", \"ide\"],\n\t},\n\t// โ”€โ”€ Internet-Verified Skill Packs โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\n\t{\n\t\tid: \"rag-pipeline\",\n\t\tname: \"RAG Pipeline\",\n\t\tdescription:\n\t\t\t\"Build retrieval-augmented generation systems with LangChain, LlamaIndex, Haystack, and vector databases\",\n\t\trequiredServices: [\"milvus\"],\n\t\tskills: [\n\t\t\t\"langchain-agent\",\n\t\t\t\"llamaindex-query\",\n\t\t\t\"haystack-rag\",\n\t\t\t\"ragflow-pipeline\",\n\t\t\t\"milvus-vectors\",\n\t\t\t\"firecrawl-scrape\",\n\t\t],\n\t\ticon: \"๐Ÿง \",\n\t\ttags: [\"rag\", \"ai\", \"embeddings\", \"search\", \"llm\"],\n\t},\n\t{\n\t\tid: \"self-hosted-cloud\",\n\t\tname: \"Self-Hosted Cloud\",\n\t\tdescription:\n\t\t\t\"Complete self-hosted infrastructure with cloud storage, photos, media streaming, and password management\",\n\t\trequiredServices: [\"nextcloud\", \"immich\", \"jellyfin\", \"vaultwarden\"],\n\t\tskills: [\n\t\t\t\"nextcloud-files\",\n\t\t\t\"immich-photos\",\n\t\t\t\"jellyfin-media\",\n\t\t\t\"vaultwarden-manage\",\n\t\t],\n\t\ticon: \"โ˜๏ธ\",\n\t\ttags: [\"self-hosted\", \"cloud\", \"storage\", \"media\", \"security\"],\n\t},\n\t{\n\t\tid: \"ai-agent-orchestra\",\n\t\tname: \"AI Agent Orchestra\",\n\t\tdescription:\n\t\t\t\"Multi-agent AI orchestration with CrewAI, AutoGPT, LangChain, Langflow, and Open Interpreter\",\n\t\trequiredServices: [],\n\t\tskills: [\n\t\t\t\"crewai-orchestrate\",\n\t\t\t\"autogpt-autonomous\",\n\t\t\t\"langchain-agent\",\n\t\t\t\"langflow-build\",\n\t\t\t\"open-interpreter-run\",\n\t\t],\n\t\ticon: \"๐ŸŽญ\",\n\t\ttags: [\"ai\", \"agents\", \"multi-agent\", \"orchestration\", \"autonomous\"],\n\t},\n\t{\n\t\tid: \"cicd-pipeline\",\n\t\tname: \"CI/CD Pipeline\",\n\t\tdescription:\n\t\t\t\"Full CI/CD pipeline with Jenkins, ArgoCD, Woodpecker, and infrastructure as code\",\n\t\trequiredServices: [\"jenkins\"],\n\t\tskills: [\n\t\t\t\"jenkins-pipeline\",\n\t\t\t\"argocd-deploy\",\n\t\t\t\"woodpecker-ci\",\n\t\t\t\"terraform-provision\",\n\t\t\t\"ansible-configure\",\n\t\t],\n\t\ticon: \"๐Ÿ”„\",\n\t\ttags: [\"ci-cd\", \"devops\", \"gitops\", \"infrastructure\"],\n\t},\n\t{\n\t\tid: \"zero-trust-security\",\n\t\tname: \"Zero-Trust Security\",\n\t\tdescription:\n\t\t\t\"Enterprise security with SSO, secrets management, VPN, intrusion detection, and feature flags\",\n\t\trequiredServices: [\"authentik\", \"crowdsec\"],\n\t\tskills: [\n\t\t\t\"authentik-auth\",\n\t\t\t\"keycloak-auth\",\n\t\t\t\"vault-secrets\",\n\t\t\t\"infisical-secrets\",\n\t\t\t\"netbird-vpn\",\n\t\t\t\"teleport-access\",\n\t\t\t\"crowdsec-protect\",\n\t\t],\n\t\ticon: \"๐Ÿ”’\",\n\t\ttags: [\"security\", \"zero-trust\", \"sso\", \"secrets\", \"vpn\"],\n\t},\n\t{\n\t\tid: \"content-platform\",\n\t\tname: \"Content Platform\",\n\t\tdescription:\n\t\t\t\"Publishing and CMS platform with Ghost, Strapi, Directus, and newsletter management\",\n\t\trequiredServices: [\"ghost\"],\n\t\tskills: [\n\t\t\t\"ghost-publish\",\n\t\t\t\"strapi-cms\",\n\t\t\t\"directus-cms\",\n\t\t\t\"listmonk-email\",\n\t\t\t\"plausible-analytics\",\n\t\t],\n\t\ticon: \"๐Ÿ“\",\n\t\ttags: [\"cms\", \"publishing\", \"blog\", \"newsletter\", \"analytics\"],\n\t},\n\t{\n\t\tid: \"backend-platform\",\n\t\tname: \"Backend Platform\",\n\t\tdescription:\n\t\t\t\"Backend-as-a-service with Supabase, Appwrite, PocketBase, and API gateway\",\n\t\trequiredServices: [\"supabase\"],\n\t\tskills: [\n\t\t\t\"supabase-query\",\n\t\t\t\"appwrite-backend\",\n\t\t\t\"pocketbase-backend\",\n\t\t\t\"kong-gateway\",\n\t\t\t\"rabbitmq-queue\",\n\t\t],\n\t\ticon: \"โšก\",\n\t\ttags: [\"backend\", \"baas\", \"api\", \"database\", \"messaging\"],\n\t},\n\t{\n\t\tid: \"observability-stack\",\n\t\tname: \"Observability Stack\",\n\t\tdescription:\n\t\t\t\"Full observability with Loki logs, SigNoz APM, Sentry errors, Gatus health, and Elasticsearch\",\n\t\trequiredServices: [\"loki\", \"signoz\"],\n\t\tskills: [\n\t\t\t\"loki-logs\",\n\t\t\t\"signoz-observe\",\n\t\t\t\"sentry-errors\",\n\t\t\t\"gatus-health\",\n\t\t\t\"elasticsearch-search\",\n\t\t],\n\t\ticon: \"๐Ÿ“ก\",\n\t\ttags: [\"observability\", \"logs\", \"apm\", \"errors\", \"health\"],\n\t},\n\t{\n\t\tid: \"document-hub\",\n\t\tname: \"Document Hub\",\n\t\tdescription:\n\t\t\t\"Document management with Paperless-ngx, BookStack wiki, Stirling PDF tools, and Excalidraw\",\n\t\trequiredServices: [\"paperless-ngx\"],\n\t\tskills: [\n\t\t\t\"paperless-ngx-docs\",\n\t\t\t\"bookstack-wiki\",\n\t\t\t\"stirling-pdf-tools\",\n\t\t\t\"excalidraw-draw\",\n\t\t],\n\t\ticon: \"๐Ÿ“‘\",\n\t\ttags: [\"documents\", \"wiki\", \"pdf\", \"collaboration\"],\n\t},\n\t{\n\t\tid: \"smart-home\",\n\t\tname: \"Smart Home\",\n\t\tdescription:\n\t\t\t\"Home automation and event-driven workflows with Home Assistant, Huginn, and Activepieces\",\n\t\trequiredServices: [\"homeassistant\"],\n\t\tskills: [\n\t\t\t\"home-assistant-automate\",\n\t\t\t\"huginn-automate\",\n\t\t\t\"activepieces-flow\",\n\t\t],\n\t\ticon: \"๐Ÿ \",\n\t\ttags: [\"iot\", \"automation\", \"smart-home\", \"workflows\"],\n\t},\n];\n\n\nconst packMap = new Map<string, SkillPack>();\nfor (const pack of skillPacks) {\n\tif (packMap.has(pack.id)) {\n\t\tthrow new Error(`Duplicate skill pack ID: \"${pack.id}\"`);\n\t}\n\tpackMap.set(pack.id, pack);\n}\n\nexport const skillPackRegistry: ReadonlyMap<string, SkillPack> = packMap;\n\nexport function getSkillPackById(id: string): SkillPack | undefined {\n\treturn packMap.get(id);\n}\n\nexport function getAllSkillPacks(): SkillPack[] {\n\treturn [...skillPacks];\n}\n\n/** Get skill packs whose required services are all present in the given service list */\nexport function getCompatibleSkillPacks(availableServiceIds: string[]): SkillPack[] {\n\treturn skillPacks.filter((pack) =>\n\t\tpack.requiredServices.every((req) => availableServiceIds.includes(req)),\n\t);\n}\n"],"mappings":"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"}
package/dist/types.d.mts CHANGED
@@ -23,7 +23,9 @@ type ServiceDefinition = z.infer<typeof ServiceDefinitionSchema>;
23
23
  type SkillPack = z.infer<typeof SkillPackSchema>;
24
24
  type Preset = z.infer<typeof PresetSchema>;
25
25
  type GenerationInput = z.infer<typeof GenerationInputSchema>;
26
- type ComposeOptions = z.infer<typeof ComposeOptionsSchema>;
26
+ type ComposeOptions = z.infer<typeof ComposeOptionsSchema> & {
27
+ /** Dynamic Traefik labels per service, computed by the Traefik generator. */traefikLabels?: Map<string, Record<string, string>>;
28
+ };
27
29
  type ResolvedService = z.infer<typeof ResolvedServiceSchema>;
28
30
  type AddedDependency = z.infer<typeof AddedDependencySchema>;
29
31
  type Warning = z.infer<typeof WarningSchema>;
@@ -39,6 +41,11 @@ interface ResolverInput {
39
41
  gpu?: boolean;
40
42
  platform?: Platform;
41
43
  monitoring?: boolean;
44
+ memoryThresholds?: {
45
+ info: number;
46
+ warning: number;
47
+ critical: number;
48
+ };
42
49
  }
43
50
  interface GeneratedFiles {
44
51
  [path: string]: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.mts","names":[],"sources":["../src/types.ts"],"mappings":";;;;KAoCY,eAAA,GAAkB,CAAA,CAAE,KAAA,QAAa,qBAAA;AAAA,KACjC,QAAA,GAAW,CAAA,CAAE,KAAA,QAAa,cAAA;AAAA,KAC1B,QAAA,GAAW,CAAA,CAAE,KAAA,QAAa,cAAA;AAAA,KAC1B,aAAA,GAAgB,CAAA,CAAE,KAAA,QAAa,mBAAA;AAAA,KAC/B,SAAA,GAAY,CAAA,CAAE,KAAA,QAAa,eAAA;AAAA,KAC3B,gBAAA,GAAmB,CAAA,CAAE,KAAA,QAAa,sBAAA;AAAA,KAClC,cAAA,GAAiB,CAAA,CAAE,KAAA,QAAa,oBAAA;AAAA,KAChC,cAAA,GAAiB,CAAA,CAAE,KAAA,QAAa,oBAAA;AAAA,KAChC,YAAA,GAAe,CAAA,CAAE,KAAA,QAAa,kBAAA;AAAA,KAC9B,YAAA,GAAe,CAAA,CAAE,KAAA,QAAa,kBAAA;AAAA,KAE9B,WAAA,GAAc,CAAA,CAAE,KAAA,QAAa,iBAAA;AAAA,KAC7B,aAAA,GAAgB,CAAA,CAAE,KAAA,QAAa,mBAAA;AAAA,KAC/B,WAAA,GAAc,CAAA,CAAE,KAAA,QAAa,iBAAA;AAAA,KAC7B,WAAA,GAAc,CAAA,CAAE,KAAA,QAAa,iBAAA;AAAA,KAC7B,cAAA,GAAiB,CAAA,CAAE,KAAA,QAAa,oBAAA;AAAA,KAChC,MAAA,GAAS,CAAA,CAAE,KAAA,QAAa,YAAA;AAAA,KACxB,YAAA,GAAe,CAAA,CAAE,KAAA,QAAa,kBAAA;AAAA,KAE9B,iBAAA,GAAoB,CAAA,CAAE,KAAA,QAAa,uBAAA;AAAA,KACnC,SAAA,GAAY,CAAA,CAAE,KAAA,QAAa,eAAA;AAAA,KAC3B,MAAA,GAAS,CAAA,CAAE,KAAA,QAAa,YAAA;AAAA,KAExB,eAAA,GAAkB,CAAA,CAAE,KAAA,QAAa,qBAAA;AAAA,KACjC,cAAA,GAAiB,CAAA,CAAE,KAAA,QAAa,oBAAA;AAAA,KAChC,eAAA,GAAkB,CAAA,CAAE,KAAA,QAAa,qBAAA;AAAA,KACjC,eAAA,GAAkB,CAAA,CAAE,KAAA,QAAa,qBAAA;AAAA,KACjC,OAAA,GAAU,CAAA,CAAE,KAAA,QAAa,aAAA;AAAA,KACzB,aAAA,GAAgB,CAAA,CAAE,KAAA,QAAa,WAAA;AAAA,KAC/B,cAAA,GAAiB,CAAA,CAAE,KAAA,QAAa,oBAAA;AAAA,KAEhC,eAAA,GAAkB,CAAA,CAAE,KAAA,QAAa,qBAAA;AAAA,KACjC,gBAAA,GAAmB,CAAA,CAAE,KAAA,QAAa,sBAAA;AAAA,KAClC,QAAA,GAAW,CAAA,CAAE,KAAA,QAAa,cAAA;AAAA,UAIrB,aAAA;EAChB,QAAA;EACA,UAAA;EACA,KAAA,GAAQ,SAAA;EACR,GAAA;EACA,QAAA,GAAW,QAAA;EACX,UAAA;AAAA;AAAA,UAGgB,cAAA;EAAA,CACf,IAAA;AAAA;AAAA,UAGe,kBAAA;EAChB,YAAA;EACA,UAAA;EACA,iBAAA;EACA,WAAA;AAAA;AAAA,UAGgB,gBAAA;EAChB,KAAA,EAAO,cAAA;EACP,QAAA,EAAU,kBAAA;AAAA;AAAA,UAGM,YAAA;EAChB,EAAA,EAAI,eAAA;EACJ,IAAA;EACA,IAAA;AAAA;AAAA,cAGY,kBAAA,EAAoB,YAAA"}
1
+ {"version":3,"file":"types.d.mts","names":[],"sources":["../src/types.ts"],"mappings":";;;;KAoCY,eAAA,GAAkB,CAAA,CAAE,KAAA,QAAa,qBAAA;AAAA,KACjC,QAAA,GAAW,CAAA,CAAE,KAAA,QAAa,cAAA;AAAA,KAC1B,QAAA,GAAW,CAAA,CAAE,KAAA,QAAa,cAAA;AAAA,KAC1B,aAAA,GAAgB,CAAA,CAAE,KAAA,QAAa,mBAAA;AAAA,KAC/B,SAAA,GAAY,CAAA,CAAE,KAAA,QAAa,eAAA;AAAA,KAC3B,gBAAA,GAAmB,CAAA,CAAE,KAAA,QAAa,sBAAA;AAAA,KAClC,cAAA,GAAiB,CAAA,CAAE,KAAA,QAAa,oBAAA;AAAA,KAChC,cAAA,GAAiB,CAAA,CAAE,KAAA,QAAa,oBAAA;AAAA,KAChC,YAAA,GAAe,CAAA,CAAE,KAAA,QAAa,kBAAA;AAAA,KAC9B,YAAA,GAAe,CAAA,CAAE,KAAA,QAAa,kBAAA;AAAA,KAE9B,WAAA,GAAc,CAAA,CAAE,KAAA,QAAa,iBAAA;AAAA,KAC7B,aAAA,GAAgB,CAAA,CAAE,KAAA,QAAa,mBAAA;AAAA,KAC/B,WAAA,GAAc,CAAA,CAAE,KAAA,QAAa,iBAAA;AAAA,KAC7B,WAAA,GAAc,CAAA,CAAE,KAAA,QAAa,iBAAA;AAAA,KAC7B,cAAA,GAAiB,CAAA,CAAE,KAAA,QAAa,oBAAA;AAAA,KAChC,MAAA,GAAS,CAAA,CAAE,KAAA,QAAa,YAAA;AAAA,KACxB,YAAA,GAAe,CAAA,CAAE,KAAA,QAAa,kBAAA;AAAA,KAE9B,iBAAA,GAAoB,CAAA,CAAE,KAAA,QAAa,uBAAA;AAAA,KACnC,SAAA,GAAY,CAAA,CAAE,KAAA,QAAa,eAAA;AAAA,KAC3B,MAAA,GAAS,CAAA,CAAE,KAAA,QAAa,YAAA;AAAA,KAExB,eAAA,GAAkB,CAAA,CAAE,KAAA,QAAa,qBAAA;AAAA,KACjC,cAAA,GAAiB,CAAA,CAAE,KAAA,QAAa,oBAAA;+EAE3C,aAAA,GAAgB,GAAA,SAAY,MAAA;AAAA;AAAA,KAEjB,eAAA,GAAkB,CAAA,CAAE,KAAA,QAAa,qBAAA;AAAA,KACjC,eAAA,GAAkB,CAAA,CAAE,KAAA,QAAa,qBAAA;AAAA,KACjC,OAAA,GAAU,CAAA,CAAE,KAAA,QAAa,aAAA;AAAA,KACzB,aAAA,GAAgB,CAAA,CAAE,KAAA,QAAa,WAAA;AAAA,KAC/B,cAAA,GAAiB,CAAA,CAAE,KAAA,QAAa,oBAAA;AAAA,KAEhC,eAAA,GAAkB,CAAA,CAAE,KAAA,QAAa,qBAAA;AAAA,KACjC,gBAAA,GAAmB,CAAA,CAAE,KAAA,QAAa,sBAAA;AAAA,KAClC,QAAA,GAAW,CAAA,CAAE,KAAA,QAAa,cAAA;AAAA,UAIrB,aAAA;EAChB,QAAA;EACA,UAAA;EACA,KAAA,GAAQ,SAAA;EACR,GAAA;EACA,QAAA,GAAW,QAAA;EACX,UAAA;EACA,gBAAA;IAAqB,IAAA;IAAc,OAAA;IAAiB,QAAA;EAAA;AAAA;AAAA,UAGpC,cAAA;EAAA,CACf,IAAA;AAAA;AAAA,UAGe,kBAAA;EAChB,YAAA;EACA,UAAA;EACA,iBAAA;EACA,WAAA;AAAA;AAAA,UAGgB,gBAAA;EAChB,KAAA,EAAO,cAAA;EACP,QAAA,EAAU,kBAAA;AAAA;AAAA,UAGM,YAAA;EAChB,EAAA,EAAI,eAAA;EACJ,IAAA;EACA,IAAA;AAAA;AAAA,cAGY,kBAAA,EAAoB,YAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.mjs","names":[],"sources":["../src/types.ts"],"sourcesContent":["import type { z } from \"zod\";\nimport type {\n\tAddedDependencySchema,\n\tApiErrorSchema,\n\tComposeOptionsSchema,\n\tDeploymentTargetSchema,\n\tDeploymentTypeSchema,\n\tDeploySchema,\n\tEnvVariableSchema,\n\tErrorSchema,\n\tGenerationInputSchema,\n\tHealthCheckSchema,\n\tMaturitySchema,\n\tNativePlatformSchema,\n\tNativeRecipeSchema,\n\tOutputFormatSchema,\n\tPlatformSchema,\n\tPortMappingSchema,\n\tPresetSchema,\n\tProxyTypeSchema,\n\tResolvedServiceSchema,\n\tResolverOutputSchema,\n\tResourceLimitsSchema,\n\tRestartPolicySchema,\n\tServiceCategorySchema,\n\tServiceDefinitionSchema,\n\tSkillBindingSchema,\n\tSkillPackSchema,\n\tValidateRequestSchema,\n\tValidateResponseSchema,\n\tVolumeMappingSchema,\n\tWarningSchema,\n} from \"./schema.js\";\n\n// โ”€โ”€โ”€ Inferred Types โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\n\nexport type ServiceCategory = z.infer<typeof ServiceCategorySchema>;\nexport type Maturity = z.infer<typeof MaturitySchema>;\nexport type Platform = z.infer<typeof PlatformSchema>;\nexport type RestartPolicy = z.infer<typeof RestartPolicySchema>;\nexport type ProxyType = z.infer<typeof ProxyTypeSchema>;\nexport type DeploymentTarget = z.infer<typeof DeploymentTargetSchema>;\nexport type DeploymentType = z.infer<typeof DeploymentTypeSchema>;\nexport type NativePlatform = z.infer<typeof NativePlatformSchema>;\nexport type NativeRecipe = z.infer<typeof NativeRecipeSchema>;\nexport type OutputFormat = z.infer<typeof OutputFormatSchema>;\n\nexport type PortMapping = z.infer<typeof PortMappingSchema>;\nexport type VolumeMapping = z.infer<typeof VolumeMappingSchema>;\nexport type EnvVariable = z.infer<typeof EnvVariableSchema>;\nexport type HealthCheck = z.infer<typeof HealthCheckSchema>;\nexport type ResourceLimits = z.infer<typeof ResourceLimitsSchema>;\nexport type Deploy = z.infer<typeof DeploySchema>;\nexport type SkillBinding = z.infer<typeof SkillBindingSchema>;\n\nexport type ServiceDefinition = z.infer<typeof ServiceDefinitionSchema>;\nexport type SkillPack = z.infer<typeof SkillPackSchema>;\nexport type Preset = z.infer<typeof PresetSchema>;\n\nexport type GenerationInput = z.infer<typeof GenerationInputSchema>;\nexport type ComposeOptions = z.infer<typeof ComposeOptionsSchema>;\nexport type ResolvedService = z.infer<typeof ResolvedServiceSchema>;\nexport type AddedDependency = z.infer<typeof AddedDependencySchema>;\nexport type Warning = z.infer<typeof WarningSchema>;\nexport type ResolverError = z.infer<typeof ErrorSchema>;\nexport type ResolverOutput = z.infer<typeof ResolverOutputSchema>;\n\nexport type ValidateRequest = z.infer<typeof ValidateRequestSchema>;\nexport type ValidateResponse = z.infer<typeof ValidateResponseSchema>;\nexport type ApiError = z.infer<typeof ApiErrorSchema>;\n\n// โ”€โ”€โ”€ Additional Types โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\n\nexport interface ResolverInput {\n\tservices: string[];\n\tskillPacks: string[];\n\tproxy?: ProxyType;\n\tgpu?: boolean;\n\tplatform?: Platform;\n\tmonitoring?: boolean;\n}\n\nexport interface GeneratedFiles {\n\t[path: string]: string;\n}\n\nexport interface GenerationMetadata {\n\tserviceCount: number;\n\tskillCount: number;\n\testimatedMemoryMB: number;\n\tgeneratedAt: string;\n}\n\nexport interface GenerationResult {\n\tfiles: GeneratedFiles;\n\tmetadata: GenerationMetadata;\n}\n\nexport interface CategoryInfo {\n\tid: ServiceCategory;\n\tname: string;\n\ticon: string;\n}\n\nexport const SERVICE_CATEGORIES: CategoryInfo[] = [\n\t{ id: \"coding-agent\", name: \"AI Coding Agents\", icon: \"๐Ÿ’ป\" },\n\t{ id: \"ai-platform\", name: \"AI Platforms & Chat UIs\", icon: \"๐Ÿงช\" },\n\t{ id: \"ai\", name: \"AI / Local Models\", icon: \"๐Ÿค–\" },\n\t{ id: \"automation\", name: \"Automation & Workflows\", icon: \"๐Ÿ”„\" },\n\t{ id: \"vector-db\", name: \"Vector Databases\", icon: \"๐Ÿง \" },\n\t{ id: \"media\", name: \"Media & Video\", icon: \"๐ŸŽฌ\" },\n\t{ id: \"social-media\", name: \"Social Media\", icon: \"๐Ÿ“ฑ\" },\n\t{ id: \"analytics\", name: \"Analytics\", icon: \"๐Ÿ“Š\" },\n\t{ id: \"knowledge\", name: \"Knowledge & Documents\", icon: \"๐Ÿ“š\" },\n\t{ id: \"storage\", name: \"Object Storage\", icon: \"๐Ÿ’พ\" },\n\t{ id: \"database\", name: \"Databases & Caching\", icon: \"๐Ÿ—„๏ธ\" },\n\t{ id: \"dev-tools\", name: \"Developer Tools\", icon: \"๐Ÿ› ๏ธ\" },\n\t{ id: \"proxy\", name: \"Reverse Proxy\", icon: \"๐ŸŒ\" },\n\t{ id: \"monitoring\", name: \"Monitoring\", icon: \"๐Ÿ“ก\" },\n\t{ id: \"browser\", name: \"Browser Automation\", icon: \"๐ŸŒ\" },\n\t{ id: \"search\", name: \"Search\", icon: \"๐Ÿ”\" },\n\t{ id: \"communication\", name: \"Notifications\", icon: \"๐Ÿ””\" },\n\t{ id: \"desktop\", name: \"Desktop Environment\", icon: \"๐Ÿ–ฅ๏ธ\" },\n\t{ id: \"streaming\", name: \"Streaming & Relay\", icon: \"๐Ÿ“บ\" },\n];\n"],"mappings":";AAwGA,MAAa,qBAAqC;CACjD;EAAE,IAAI;EAAgB,MAAM;EAAoB,MAAM;EAAM;CAC5D;EAAE,IAAI;EAAe,MAAM;EAA2B,MAAM;EAAM;CAClE;EAAE,IAAI;EAAM,MAAM;EAAqB,MAAM;EAAM;CACnD;EAAE,IAAI;EAAc,MAAM;EAA0B,MAAM;EAAM;CAChE;EAAE,IAAI;EAAa,MAAM;EAAoB,MAAM;EAAM;CACzD;EAAE,IAAI;EAAS,MAAM;EAAiB,MAAM;EAAM;CAClD;EAAE,IAAI;EAAgB,MAAM;EAAgB,MAAM;EAAM;CACxD;EAAE,IAAI;EAAa,MAAM;EAAa,MAAM;EAAM;CAClD;EAAE,IAAI;EAAa,MAAM;EAAyB,MAAM;EAAM;CAC9D;EAAE,IAAI;EAAW,MAAM;EAAkB,MAAM;EAAM;CACrD;EAAE,IAAI;EAAY,MAAM;EAAuB,MAAM;EAAO;CAC5D;EAAE,IAAI;EAAa,MAAM;EAAmB,MAAM;EAAO;CACzD;EAAE,IAAI;EAAS,MAAM;EAAiB,MAAM;EAAM;CAClD;EAAE,IAAI;EAAc,MAAM;EAAc,MAAM;EAAM;CACpD;EAAE,IAAI;EAAW,MAAM;EAAsB,MAAM;EAAM;CACzD;EAAE,IAAI;EAAU,MAAM;EAAU,MAAM;EAAM;CAC5C;EAAE,IAAI;EAAiB,MAAM;EAAiB,MAAM;EAAM;CAC1D;EAAE,IAAI;EAAW,MAAM;EAAuB,MAAM;EAAO;CAC3D;EAAE,IAAI;EAAa,MAAM;EAAqB,MAAM;EAAM;CAC1D"}
1
+ {"version":3,"file":"types.mjs","names":[],"sources":["../src/types.ts"],"sourcesContent":["import type { z } from \"zod\";\nimport type {\n\tAddedDependencySchema,\n\tApiErrorSchema,\n\tComposeOptionsSchema,\n\tDeploymentTargetSchema,\n\tDeploymentTypeSchema,\n\tDeploySchema,\n\tEnvVariableSchema,\n\tErrorSchema,\n\tGenerationInputSchema,\n\tHealthCheckSchema,\n\tMaturitySchema,\n\tNativePlatformSchema,\n\tNativeRecipeSchema,\n\tOutputFormatSchema,\n\tPlatformSchema,\n\tPortMappingSchema,\n\tPresetSchema,\n\tProxyTypeSchema,\n\tResolvedServiceSchema,\n\tResolverOutputSchema,\n\tResourceLimitsSchema,\n\tRestartPolicySchema,\n\tServiceCategorySchema,\n\tServiceDefinitionSchema,\n\tSkillBindingSchema,\n\tSkillPackSchema,\n\tValidateRequestSchema,\n\tValidateResponseSchema,\n\tVolumeMappingSchema,\n\tWarningSchema,\n} from \"./schema.js\";\n\n// โ”€โ”€โ”€ Inferred Types โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\n\nexport type ServiceCategory = z.infer<typeof ServiceCategorySchema>;\nexport type Maturity = z.infer<typeof MaturitySchema>;\nexport type Platform = z.infer<typeof PlatformSchema>;\nexport type RestartPolicy = z.infer<typeof RestartPolicySchema>;\nexport type ProxyType = z.infer<typeof ProxyTypeSchema>;\nexport type DeploymentTarget = z.infer<typeof DeploymentTargetSchema>;\nexport type DeploymentType = z.infer<typeof DeploymentTypeSchema>;\nexport type NativePlatform = z.infer<typeof NativePlatformSchema>;\nexport type NativeRecipe = z.infer<typeof NativeRecipeSchema>;\nexport type OutputFormat = z.infer<typeof OutputFormatSchema>;\n\nexport type PortMapping = z.infer<typeof PortMappingSchema>;\nexport type VolumeMapping = z.infer<typeof VolumeMappingSchema>;\nexport type EnvVariable = z.infer<typeof EnvVariableSchema>;\nexport type HealthCheck = z.infer<typeof HealthCheckSchema>;\nexport type ResourceLimits = z.infer<typeof ResourceLimitsSchema>;\nexport type Deploy = z.infer<typeof DeploySchema>;\nexport type SkillBinding = z.infer<typeof SkillBindingSchema>;\n\nexport type ServiceDefinition = z.infer<typeof ServiceDefinitionSchema>;\nexport type SkillPack = z.infer<typeof SkillPackSchema>;\nexport type Preset = z.infer<typeof PresetSchema>;\n\nexport type GenerationInput = z.infer<typeof GenerationInputSchema>;\nexport type ComposeOptions = z.infer<typeof ComposeOptionsSchema> & {\n\t/** Dynamic Traefik labels per service, computed by the Traefik generator. */\n\ttraefikLabels?: Map<string, Record<string, string>>;\n};\nexport type ResolvedService = z.infer<typeof ResolvedServiceSchema>;\nexport type AddedDependency = z.infer<typeof AddedDependencySchema>;\nexport type Warning = z.infer<typeof WarningSchema>;\nexport type ResolverError = z.infer<typeof ErrorSchema>;\nexport type ResolverOutput = z.infer<typeof ResolverOutputSchema>;\n\nexport type ValidateRequest = z.infer<typeof ValidateRequestSchema>;\nexport type ValidateResponse = z.infer<typeof ValidateResponseSchema>;\nexport type ApiError = z.infer<typeof ApiErrorSchema>;\n\n// โ”€โ”€โ”€ Additional Types โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\n\nexport interface ResolverInput {\n\tservices: string[];\n\tskillPacks: string[];\n\tproxy?: ProxyType;\n\tgpu?: boolean;\n\tplatform?: Platform;\n\tmonitoring?: boolean;\n\tmemoryThresholds?: { info: number; warning: number; critical: number };\n}\n\nexport interface GeneratedFiles {\n\t[path: string]: string;\n}\n\nexport interface GenerationMetadata {\n\tserviceCount: number;\n\tskillCount: number;\n\testimatedMemoryMB: number;\n\tgeneratedAt: string;\n}\n\nexport interface GenerationResult {\n\tfiles: GeneratedFiles;\n\tmetadata: GenerationMetadata;\n}\n\nexport interface CategoryInfo {\n\tid: ServiceCategory;\n\tname: string;\n\ticon: string;\n}\n\nexport const SERVICE_CATEGORIES: CategoryInfo[] = [\n\t{ id: \"coding-agent\", name: \"AI Coding Agents\", icon: \"๐Ÿ’ป\" },\n\t{ id: \"ai-platform\", name: \"AI Platforms & Chat UIs\", icon: \"๐Ÿงช\" },\n\t{ id: \"ai\", name: \"AI / Local Models\", icon: \"๐Ÿค–\" },\n\t{ id: \"automation\", name: \"Automation & Workflows\", icon: \"๐Ÿ”„\" },\n\t{ id: \"vector-db\", name: \"Vector Databases\", icon: \"๐Ÿง \" },\n\t{ id: \"media\", name: \"Media & Video\", icon: \"๐ŸŽฌ\" },\n\t{ id: \"social-media\", name: \"Social Media\", icon: \"๐Ÿ“ฑ\" },\n\t{ id: \"analytics\", name: \"Analytics\", icon: \"๐Ÿ“Š\" },\n\t{ id: \"knowledge\", name: \"Knowledge & Documents\", icon: \"๐Ÿ“š\" },\n\t{ id: \"storage\", name: \"Object Storage\", icon: \"๐Ÿ’พ\" },\n\t{ id: \"database\", name: \"Databases & Caching\", icon: \"๐Ÿ—„๏ธ\" },\n\t{ id: \"dev-tools\", name: \"Developer Tools\", icon: \"๐Ÿ› ๏ธ\" },\n\t{ id: \"proxy\", name: \"Reverse Proxy\", icon: \"๐ŸŒ\" },\n\t{ id: \"monitoring\", name: \"Monitoring\", icon: \"๐Ÿ“ก\" },\n\t{ id: \"browser\", name: \"Browser Automation\", icon: \"๐ŸŒ\" },\n\t{ id: \"search\", name: \"Search\", icon: \"๐Ÿ”\" },\n\t{ id: \"communication\", name: \"Notifications\", icon: \"๐Ÿ””\" },\n\t{ id: \"desktop\", name: \"Desktop Environment\", icon: \"๐Ÿ–ฅ๏ธ\" },\n\t{ id: \"streaming\", name: \"Streaming & Relay\", icon: \"๐Ÿ“บ\" },\n];\n"],"mappings":";AA4GA,MAAa,qBAAqC;CACjD;EAAE,IAAI;EAAgB,MAAM;EAAoB,MAAM;EAAM;CAC5D;EAAE,IAAI;EAAe,MAAM;EAA2B,MAAM;EAAM;CAClE;EAAE,IAAI;EAAM,MAAM;EAAqB,MAAM;EAAM;CACnD;EAAE,IAAI;EAAc,MAAM;EAA0B,MAAM;EAAM;CAChE;EAAE,IAAI;EAAa,MAAM;EAAoB,MAAM;EAAM;CACzD;EAAE,IAAI;EAAS,MAAM;EAAiB,MAAM;EAAM;CAClD;EAAE,IAAI;EAAgB,MAAM;EAAgB,MAAM;EAAM;CACxD;EAAE,IAAI;EAAa,MAAM;EAAa,MAAM;EAAM;CAClD;EAAE,IAAI;EAAa,MAAM;EAAyB,MAAM;EAAM;CAC9D;EAAE,IAAI;EAAW,MAAM;EAAkB,MAAM;EAAM;CACrD;EAAE,IAAI;EAAY,MAAM;EAAuB,MAAM;EAAO;CAC5D;EAAE,IAAI;EAAa,MAAM;EAAmB,MAAM;EAAO;CACzD;EAAE,IAAI;EAAS,MAAM;EAAiB,MAAM;EAAM;CAClD;EAAE,IAAI;EAAc,MAAM;EAAc,MAAM;EAAM;CACpD;EAAE,IAAI;EAAW,MAAM;EAAsB,MAAM;EAAM;CACzD;EAAE,IAAI;EAAU,MAAM;EAAU,MAAM;EAAM;CAC5C;EAAE,IAAI;EAAiB,MAAM;EAAiB,MAAM;EAAM;CAC1D;EAAE,IAAI;EAAW,MAAM;EAAuB,MAAM;EAAO;CAC3D;EAAE,IAAI;EAAa,MAAM;EAAqB,MAAM;EAAM;CAC1D"}
@@ -55,6 +55,17 @@ function checkEnvCompleteness(resolved, errors, warnings, generateSecrets) {
55
55
  type: "secret_needed",
56
56
  message: `Secret "${envVar.key}" for "${svc.definition.name}" needs to be configured manually`
57
57
  });
58
+ if (envVar.validation && envVar.defaultValue) try {
59
+ if (!new RegExp(envVar.validation).test(envVar.defaultValue)) warnings.push({
60
+ type: "env_validation",
61
+ message: `Environment variable "${envVar.key}" for "${svc.definition.name}" default value does not match validation pattern: ${envVar.validation}`
62
+ });
63
+ } catch {
64
+ warnings.push({
65
+ type: "env_validation",
66
+ message: `Environment variable "${envVar.key}" for "${svc.definition.name}" has invalid validation regex: ${envVar.validation}`
67
+ });
68
+ }
58
69
  }
59
70
  }
60
71
  function checkNetworkConsistency(resolved, warnings) {