@better-openclaw/core 1.0.11 → 1.0.13

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 (78) hide show
  1. package/README.md +70 -0
  2. package/dist/bare-metal-partition.test.mjs +1 -1
  3. package/dist/composer.d.mts.map +1 -1
  4. package/dist/composer.mjs +5 -3
  5. package/dist/composer.mjs.map +1 -1
  6. package/dist/composer.snapshot.test.mjs +1 -1
  7. package/dist/composer.test.mjs +1 -1
  8. package/dist/generate.test.mjs +1 -1
  9. package/dist/generators/bare-metal-install.test.mjs +1 -1
  10. package/dist/generators/caddy.test.mjs +1 -1
  11. package/dist/generators/env.test.mjs +1 -1
  12. package/dist/generators/health-check.mjs.map +1 -1
  13. package/dist/generators/health-check.test.mjs +1 -1
  14. package/dist/generators/scripts.test.mjs +1 -1
  15. package/dist/generators/traefik.test.mjs +1 -1
  16. package/dist/{magic-string.es-1uTtupLe.mjs → magic-string.es-CfFonO_S.mjs} +1 -1
  17. package/dist/{magic-string.es-1uTtupLe.mjs.map → magic-string.es-CfFonO_S.mjs.map} +1 -1
  18. package/dist/manifest-BjK4ALvr.mjs +1158 -0
  19. package/dist/manifest-BjK4ALvr.mjs.map +1 -0
  20. package/dist/migrations.d.mts.map +1 -1
  21. package/dist/migrations.mjs.map +1 -1
  22. package/dist/migrations.test.mjs +1 -1
  23. package/dist/presets/registry.test.mjs +1 -1
  24. package/dist/resolver.test.mjs +1 -1
  25. package/dist/schema.d.mts +4 -0
  26. package/dist/schema.d.mts.map +1 -1
  27. package/dist/schema.mjs +2 -1
  28. package/dist/schema.mjs.map +1 -1
  29. package/dist/schema.test.mjs +1 -1
  30. package/dist/services/definitions/hexstrike.d.mts +7 -0
  31. package/dist/services/definitions/hexstrike.d.mts.map +1 -0
  32. package/dist/services/definitions/hexstrike.mjs +44 -0
  33. package/dist/services/definitions/hexstrike.mjs.map +1 -0
  34. package/dist/services/definitions/index.d.mts +6 -1
  35. package/dist/services/definitions/index.d.mts.map +1 -1
  36. package/dist/services/definitions/index.mjs +12 -2
  37. package/dist/services/definitions/index.mjs.map +1 -1
  38. package/dist/services/definitions/pentagi.d.mts +7 -0
  39. package/dist/services/definitions/pentagi.d.mts.map +1 -0
  40. package/dist/services/definitions/pentagi.mjs +44 -0
  41. package/dist/services/definitions/pentagi.mjs.map +1 -0
  42. package/dist/services/definitions/pentestagent.d.mts +7 -0
  43. package/dist/services/definitions/pentestagent.d.mts.map +1 -0
  44. package/dist/services/definitions/pentestagent.mjs +39 -0
  45. package/dist/services/definitions/pentestagent.mjs.map +1 -0
  46. package/dist/services/definitions/scrapling.d.mts +7 -0
  47. package/dist/services/definitions/scrapling.d.mts.map +1 -0
  48. package/dist/services/definitions/scrapling.mjs +44 -0
  49. package/dist/services/definitions/scrapling.mjs.map +1 -0
  50. package/dist/services/definitions/solidityguard.d.mts +7 -0
  51. package/dist/services/definitions/solidityguard.d.mts.map +1 -0
  52. package/dist/services/definitions/solidityguard.mjs +49 -0
  53. package/dist/services/definitions/solidityguard.mjs.map +1 -0
  54. package/dist/services/registry.test.mjs +1 -1
  55. package/dist/skills/skill-manifest.d.mts.map +1 -1
  56. package/dist/skills/skill-manifest.mjs +5 -13
  57. package/dist/skills/skill-manifest.mjs.map +1 -1
  58. package/dist/types.mjs +5 -0
  59. package/dist/types.mjs.map +1 -1
  60. package/dist/validator.test.mjs +1 -1
  61. package/dist/version-manager.test.mjs +1 -1
  62. package/dist/{vi.2VT5v0um-YSByewHe.mjs → vi.2VT5v0um-BgmKutxR.mjs} +2 -2
  63. package/dist/{vi.2VT5v0um-YSByewHe.mjs.map → vi.2VT5v0um-BgmKutxR.mjs.map} +1 -1
  64. package/package.json +1 -1
  65. package/src/composer.ts +12 -3
  66. package/src/generators/health-check.ts +46 -8
  67. package/src/migrations.ts +0 -1
  68. package/src/schema.ts +1 -0
  69. package/src/services/definitions/hexstrike.ts +40 -0
  70. package/src/services/definitions/index.ts +15 -0
  71. package/src/services/definitions/pentagi.ts +40 -0
  72. package/src/services/definitions/pentestagent.ts +33 -0
  73. package/src/services/definitions/scrapling.ts +40 -0
  74. package/src/services/definitions/solidityguard.ts +46 -0
  75. package/src/skills/manifest.json +1391 -0
  76. package/src/skills/manifest.schema.json +51 -0
  77. package/src/skills/skill-manifest.ts +27 -22
  78. package/src/types.ts +1 -0
@@ -0,0 +1,49 @@
1
+ //#region src/services/definitions/solidityguard.ts
2
+ const solidityGuardDefinition = {
3
+ id: "solidityguard",
4
+ name: "SolidityGuard",
5
+ description: "7-Phase Deep Audit Smart Contract Security Auditor for EVM/Solidity.",
6
+ category: "security",
7
+ icon: "🛡️",
8
+ image: "altresearch/solidityguard",
9
+ imageTag: "latest",
10
+ ports: [{
11
+ host: 8e3,
12
+ container: 8e3,
13
+ description: "SolidityGuard Web Dashboard",
14
+ exposed: true
15
+ }],
16
+ volumes: [{
17
+ name: "./contracts",
18
+ containerPath: "/audit",
19
+ description: "Mounts local contracts for CLI deep auditing."
20
+ }],
21
+ environment: [],
22
+ command: "web",
23
+ dependsOn: [],
24
+ restartPolicy: "unless-stopped",
25
+ networks: ["openclaw-network"],
26
+ skills: [{
27
+ skillId: "solidityguard-audit",
28
+ autoInstall: true
29
+ }],
30
+ openclawEnvVars: [],
31
+ docsUrl: "https://solidityguard.org",
32
+ tags: [
33
+ "security",
34
+ "web3",
35
+ "solidity",
36
+ "evm",
37
+ "audit"
38
+ ],
39
+ maturity: "stable",
40
+ requires: [],
41
+ recommends: [],
42
+ conflictsWith: [],
43
+ minMemoryMB: 2048,
44
+ gpuRequired: false
45
+ };
46
+
47
+ //#endregion
48
+ export { solidityGuardDefinition };
49
+ //# sourceMappingURL=solidityguard.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solidityguard.mjs","names":[],"sources":["../../../src/services/definitions/solidityguard.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const solidityGuardDefinition: ServiceDefinition = {\n\tid: \"solidityguard\",\n\tname: \"SolidityGuard\",\n\tdescription: \"7-Phase Deep Audit Smart Contract Security Auditor for EVM/Solidity.\",\n\tcategory: \"security\",\n\ticon: \"🛡️\",\n\n\timage: \"altresearch/solidityguard\", // Presumed standard dockerhub naming format, usually ghcr.io or dockerhub\n\timageTag: \"latest\",\n\tports: [\n\t\t{\n\t\t\thost: 8000,\n\t\t\tcontainer: 8000,\n\t\t\tdescription: \"SolidityGuard Web Dashboard\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"./contracts\",\n\t\t\tcontainerPath: \"/audit\",\n\t\t\tdescription: \"Mounts local contracts for CLI deep auditing.\",\n\t\t},\n\t],\n\tenvironment: [],\n\tcommand: \"web\", // Presumed default startup command for the web UI if no CLI args are given\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [{ skillId: \"solidityguard-audit\", autoInstall: true }],\n\topenclawEnvVars: [],\n\n\tdocsUrl: \"https://solidityguard.org\",\n\ttags: [\"security\", \"web3\", \"solidity\", \"evm\", \"audit\"],\n\tmaturity: \"stable\",\n\n\trequires: [],\n\trecommends: [],\n\tconflictsWith: [],\n\n\tminMemoryMB: 2048,\n\tgpuRequired: false,\n};\n"],"mappings":";AAEA,MAAa,0BAA6C;CACzD,IAAI;CACJ,MAAM;CACN,aAAa;CACb,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,CACR;EACC,MAAM;EACN,eAAe;EACf,aAAa;EACb,CACD;CACD,aAAa,EAAE;CACf,SAAS;CACT,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,CAAC;EAAE,SAAS;EAAuB,aAAa;EAAM,CAAC;CAC/D,iBAAiB,EAAE;CAEnB,SAAS;CACT,MAAM;EAAC;EAAY;EAAQ;EAAY;EAAO;EAAQ;CACtD,UAAU;CAEV,UAAU,EAAE;CACZ,YAAY,EAAE;CACd,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb"}
@@ -1,4 +1,4 @@
1
- import { n as describe, r as it, t as globalExpect } from "../vi.2VT5v0um-YSByewHe.mjs";
1
+ import { n as describe, r as it, t as globalExpect } from "../vi.2VT5v0um-BgmKutxR.mjs";
2
2
  import { getAllServices, getServiceById, getServicesByCategory, getServicesByTag } from "./registry.mjs";
3
3
 
4
4
  //#region src/services/registry.test.ts
@@ -1 +1 @@
1
- {"version":3,"file":"skill-manifest.d.mts","names":[],"sources":["../../src/skills/skill-manifest.ts"],"mappings":";UAMiB,kBAAA;EAAA;EAEhB,EAAA;;EAEA,IAAA;EAFA;EAIA,KAAA;EAAA;EAEA,QAAA;AAAA;;iBAyBe,oBAAA,CAAA,GAAwB,kBAAA;;iBAKxB,oBAAA,CAAqB,EAAA,WAAa,kBAAA;;iBAKlC,qBAAA,CAAA"}
1
+ {"version":3,"file":"skill-manifest.d.mts","names":[],"sources":["../../src/skills/skill-manifest.ts"],"mappings":";UAQiB,kBAAA;EAAA;EAEhB,EAAA;;EAEA,IAAA;EAFA;EAIA,KAAA;EAAA;EAEA,QAAA;AAAA;;iBAyBe,oBAAA,CAAA,GAAwB,kBAAA;;iBAMxB,oBAAA,CAAqB,EAAA,WAAa,kBAAA;;iBAMlC,qBAAA,CAAA"}
@@ -1,26 +1,18 @@
1
- import { readFileSync } from "node:fs";
2
- import { dirname, resolve } from "node:path";
3
- import { fileURLToPath } from "node:url";
1
+ import { t as manifest_default } from "../manifest-BjK4ALvr.mjs";
4
2
 
5
3
  //#region src/skills/skill-manifest.ts
6
- let _cache = null;
7
- function loadManifest() {
8
- if (_cache) return _cache;
9
- const raw = readFileSync(resolve(dirname(fileURLToPath(import.meta.url)), "../../../../skills/manifest.json"), "utf-8");
10
- _cache = JSON.parse(raw).skills;
11
- return _cache;
12
- }
4
+ const manifestData = manifest_default;
13
5
  /** Return all skills defined in the local manifest.json */
14
6
  function getAllManifestSkills() {
15
- return loadManifest();
7
+ return manifestData.skills;
16
8
  }
17
9
  /** Look up a single skill by ID */
18
10
  function getManifestSkillById(id) {
19
- return loadManifest().find((s) => s.id === id);
11
+ return manifestData.skills.find((s) => s.id === id);
20
12
  }
21
13
  /** Return the total count of curated skills */
22
14
  function getManifestSkillCount() {
23
- return loadManifest().length;
15
+ return manifestData.skills.length;
24
16
  }
25
17
 
26
18
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"skill-manifest.mjs","names":[],"sources":["../../src/skills/skill-manifest.ts"],"sourcesContent":["import { readFileSync } from \"node:fs\";\nimport { dirname, resolve } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\n\n// ── Types ───────────────────────────────────────────────────────────────────\n\nexport interface SkillManifestEntry {\n\t/** Unique skill identifier, e.g. \"gsap-animate\" */\n\tid: string;\n\t/** Relative path to the SKILL.md file */\n\tpath: string;\n\t/** Display emoji */\n\temoji: string;\n\t/** Docker service IDs this skill depends on (empty for frontend-only skills) */\n\tservices: string[];\n}\n\ninterface SkillManifest {\n\tskills: SkillManifestEntry[];\n}\n\n// ── Manifest loader ─────────────────────────────────────────────────────────\n\nlet _cache: SkillManifestEntry[] | null = null;\n\nfunction loadManifest(): SkillManifestEntry[] {\n\tif (_cache) return _cache;\n\t// Resolve the manifest relative to this file's location\n\t// This file is at packages/core/src/skills/skill-manifest.ts\n\t// The manifest is at skills/manifest.json (repo root / skills /)\n\tconst thisDir = dirname(fileURLToPath(import.meta.url));\n\tconst manifestPath = resolve(thisDir, \"../../../../skills/manifest.json\");\n\tconst raw = readFileSync(manifestPath, \"utf-8\");\n\tconst data = JSON.parse(raw) as SkillManifest;\n\t_cache = data.skills;\n\treturn _cache;\n}\n\n/** Return all skills defined in the local manifest.json */\nexport function getAllManifestSkills(): SkillManifestEntry[] {\n\treturn loadManifest();\n}\n\n/** Look up a single skill by ID */\nexport function getManifestSkillById(id: string): SkillManifestEntry | undefined {\n\treturn loadManifest().find((s) => s.id === id);\n}\n\n/** Return the total count of curated skills */\nexport function getManifestSkillCount(): number {\n\treturn loadManifest().length;\n}\n"],"mappings":";;;;;AAuBA,IAAI,SAAsC;AAE1C,SAAS,eAAqC;AAC7C,KAAI,OAAQ,QAAO;CAMnB,MAAM,MAAM,aADS,QADL,QAAQ,cAAc,OAAO,KAAK,IAAI,CAAC,EACjB,mCAAmC,EAClC,QAAQ;AAE/C,UADa,KAAK,MAAM,IAAI,CACd;AACd,QAAO;;;AAIR,SAAgB,uBAA6C;AAC5D,QAAO,cAAc;;;AAItB,SAAgB,qBAAqB,IAA4C;AAChF,QAAO,cAAc,CAAC,MAAM,MAAM,EAAE,OAAO,GAAG;;;AAI/C,SAAgB,wBAAgC;AAC/C,QAAO,cAAc,CAAC"}
1
+ {"version":3,"file":"skill-manifest.mjs","names":["manifestJson"],"sources":["../../src/skills/skill-manifest.ts"],"sourcesContent":["// import { readFileSync } from \"node:fs\";\n// import { dirname, resolve } from \"node:path\";\n// import { fileURLToPath } from \"node:url\";\n//import manifestJson from \"../../../../skills/manifest.json\" with { type: \"json\" };\nimport manifestJson from \"./manifest.json\" with { type: \"json\" };\n\n// ── Types ───────────────────────────────────────────────────────────────────\n\nexport interface SkillManifestEntry {\n\t/** Unique skill identifier, e.g. \"gsap-animate\" */\n\tid: string;\n\t/** Relative path to the SKILL.md file */\n\tpath: string;\n\t/** Display emoji */\n\temoji: string;\n\t/** Docker service IDs this skill depends on (empty for frontend-only skills) */\n\tservices: string[];\n}\n\ninterface SkillManifest {\n\tskills: SkillManifestEntry[];\n}\n\nconst manifestData = manifestJson as SkillManifest;\n\n// ── Manifest loader ─────────────────────────────────────────────────────────\n// let _cache: SkillManifestEntry[] | null = null;\n\n// function loadManifest(): SkillManifestEntry[] {\n// \tif (_cache) return _cache;\n// \t// Resolve the manifest relative to this file's location\n// \t// This file is at packages/core/src/skills/skill-manifest.ts\n// \t// The manifest is at skills/manifest.json (repo root / skills /)\n// \tconst thisDir = dirname(fileURLToPath(import.meta.url));\n// \tconst manifestPath = resolve(thisDir, \"../../../../skills/manifest.json\");\n// \tconst raw = readFileSync(manifestPath, \"utf-8\");\n// \tconst data = JSON.parse(raw) as SkillManifest;\n// \t_cache = data.skills;\n// \treturn _cache;\n// }\n/** Return all skills defined in the local manifest.json */\nexport function getAllManifestSkills(): SkillManifestEntry[] {\n\treturn manifestData.skills;\n\t//return loadManifest();\n}\n\n/** Look up a single skill by ID */\nexport function getManifestSkillById(id: string): SkillManifestEntry | undefined {\n\treturn manifestData.skills.find((s) => s.id === id);\n\t//return loadManifest().find((s) => s.id === id);\n}\n\n/** Return the total count of curated skills */\nexport function getManifestSkillCount(): number {\n\treturn manifestData.skills.length;\n\t//return loadManifest().length;\n}\n"],"mappings":";;;AAuBA,MAAM,eAAeA;;AAkBrB,SAAgB,uBAA6C;AAC5D,QAAO,aAAa;;;AAKrB,SAAgB,qBAAqB,IAA4C;AAChF,QAAO,aAAa,OAAO,MAAM,MAAM,EAAE,OAAO,GAAG;;;AAKpD,SAAgB,wBAAgC;AAC/C,QAAO,aAAa,OAAO"}
package/dist/types.mjs CHANGED
@@ -94,6 +94,11 @@ const SERVICE_CATEGORIES = [
94
94
  id: "streaming",
95
95
  name: "Streaming & Relay",
96
96
  icon: "📺"
97
+ },
98
+ {
99
+ id: "security",
100
+ name: "Security & Pentesting",
101
+ icon: "🛡️"
97
102
  }
98
103
  ];
99
104
 
@@ -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> & {\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"}
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\t{ id: \"security\", name: \"Security & Pentesting\", 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;EAAE,IAAI;EAAY,MAAM;EAAyB,MAAM;EAAO;CAC9D"}
@@ -1,4 +1,4 @@
1
- import { n as describe, r as it, t as globalExpect } from "./vi.2VT5v0um-YSByewHe.mjs";
1
+ import { n as describe, r as it, t as globalExpect } from "./vi.2VT5v0um-BgmKutxR.mjs";
2
2
  import { resolve } from "./resolver.mjs";
3
3
  import { compose } from "./composer.mjs";
4
4
  import { validate } from "./validator.mjs";
@@ -1,4 +1,4 @@
1
- import { n as describe, r as it, t as globalExpect } from "./vi.2VT5v0um-YSByewHe.mjs";
1
+ import { n as describe, r as it, t as globalExpect } from "./vi.2VT5v0um-BgmKutxR.mjs";
2
2
  import { getAllServices, getServiceById } from "./services/registry.mjs";
3
3
  import { resolve } from "./resolver.mjs";
4
4
  import { checkCompatibility, getImageReference, getImageTag, pinImageTags } from "./version-manager.mjs";
@@ -9644,7 +9644,7 @@ function offsetToLineNumber(source, offset) {
9644
9644
  return line + 1;
9645
9645
  }
9646
9646
  async function saveInlineSnapshots(environment, snapshots) {
9647
- const MagicString = (await import("./magic-string.es-1uTtupLe.mjs")).default;
9647
+ const MagicString = (await import("./magic-string.es-CfFonO_S.mjs")).default;
9648
9648
  const files = new Set(snapshots.map((i) => i.file));
9649
9649
  await Promise.all(Array.from(files).map(async (file) => {
9650
9650
  const snaps = snapshots.filter((i) => i.file === file);
@@ -12913,4 +12913,4 @@ function getImporter(name) {
12913
12913
 
12914
12914
  //#endregion
12915
12915
  export { describe as n, it as r, globalExpect as t };
12916
- //# sourceMappingURL=vi.2VT5v0um-YSByewHe.mjs.map
12916
+ //# sourceMappingURL=vi.2VT5v0um-BgmKutxR.mjs.map