mlld
Version:
mlld: llm scripting language
1 lines • 23.3 kB
Source Map (JSON)
{"version":3,"sources":["../core/registry/utils/ModuleNeeds.ts"],"names":["normalizeModuleNeeds","rawNeeds","legacyDetails","Array","isArray","candidate","packagesField","packages","hasPackageObjects","Object","values","some","entry","item","hasCapabilityFields","needs","ecosystem","pkgList","entries","map","pkg","parseVersionSpecifier","candidatePkg","name","specifier","raw","formatVersionSpecifier","filter","runtimes","tools","capabilities","normalized","addRuntime","find","existing","push","addTool","addPackages","bucket","handleRuntimeEntry","String","version","length","undefined","handleToolEntry","handlePackageList","value","structuredNeeds","runtime","tool","packageList","js","inheritLegacyRuntimeDetail","node","py","sh","trimmed","trim","comparatorMatch","match","operator","spec","startsWith","parts","split","pop","scopedName","join","atIndex","lastIndexOf","slice","moduleNeedsToSerializable","result","packageEntries","reduce","acc","detail","python","shell","commands","command"],"mappings":"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","file":"chunk-KQOGKTK5.mjs","sourcesContent":["import type {\n ModuleNeeds,\n ModuleNeedsNormalized,\n PackageRequirement,\n PackageRequirementMap,\n RuntimeRequirement,\n ToolRequirement,\n VersionSpecifier\n} from '../types';\nimport type { NeedsDeclaration } from '@core/policy/needs';\n\ntype LegacyRuntimeDetail = {\n node?: string;\n python?: string;\n shell?: string;\n packages?: string[];\n commands?: string[];\n};\n\ntype LegacyNeedsDetails = {\n js?: LegacyRuntimeDetail;\n node?: LegacyRuntimeDetail;\n py?: LegacyRuntimeDetail;\n sh?: LegacyRuntimeDetail;\n};\n\nexport function normalizeModuleNeeds(\n rawNeeds: unknown,\n legacyDetails?: LegacyNeedsDetails\n): ModuleNeedsNormalized {\n if (rawNeeds && typeof rawNeeds === 'object' && !Array.isArray(rawNeeds)) {\n const candidate = rawNeeds as Record<string, unknown>;\n const packagesField = candidate.packages as unknown;\n const hasPackageObjects =\n packagesField &&\n typeof packagesField === 'object' &&\n Object.values(packagesField as Record<string, unknown>).some(\n entry => Array.isArray(entry) && entry.some(item => typeof item === 'object' && item !== null)\n );\n const hasCapabilityFields =\n 'capabilities' in candidate ||\n 'cmd' in candidate ||\n 'network' in candidate ||\n 'sh' in candidate ||\n 'filesystem' in candidate;\n if (hasCapabilityFields || hasPackageObjects) {\n const needs = rawNeeds as NeedsDeclaration;\n const packages: PackageRequirementMap = {};\n for (const [ecosystem, pkgList] of Object.entries(needs.packages || {})) {\n packages[ecosystem] = (pkgList || []).map(pkg => {\n if (typeof pkg === 'string') {\n return parseVersionSpecifier(pkg);\n }\n if (pkg && typeof pkg === 'object') {\n const candidatePkg = pkg as PackageRequirement;\n return {\n name: candidatePkg.name,\n specifier: candidatePkg.specifier,\n raw: candidatePkg.raw ?? formatVersionSpecifier(candidatePkg.name, candidatePkg.specifier)\n };\n }\n return { name: '', raw: '' };\n }).filter(pkg => pkg.name);\n }\n\n return {\n runtimes: [],\n tools: [],\n packages,\n capabilities: needs\n };\n }\n }\n\n const normalized: ModuleNeedsNormalized = {\n runtimes: [],\n tools: [],\n packages: {}\n };\n\n const addRuntime = (candidate: RuntimeRequirement): void => {\n if (!candidate.name) {\n return;\n }\n\n if (!normalized.runtimes.find(existing => existing.name === candidate.name)) {\n normalized.runtimes.push(candidate);\n return;\n }\n\n const existing = normalized.runtimes.find(existing => existing.name === candidate.name);\n if (existing && !existing.specifier && candidate.specifier) {\n existing.specifier = candidate.specifier;\n existing.raw = candidate.raw;\n }\n };\n\n const addTool = (candidate: ToolRequirement): void => {\n if (!candidate.name) {\n return;\n }\n\n if (!normalized.tools.find(existing => existing.name === candidate.name)) {\n normalized.tools.push(candidate);\n return;\n }\n\n const existing = normalized.tools.find(existing => existing.name === candidate.name);\n if (existing && !existing.specifier && candidate.specifier) {\n existing.specifier = candidate.specifier;\n existing.raw = candidate.raw;\n }\n };\n\n const addPackages = (ecosystem: string, packages: PackageRequirement[]): void => {\n if (!ecosystem) {\n return;\n }\n\n const bucket = normalized.packages[ecosystem] || [];\n for (const pkg of packages) {\n if (!pkg.name) {\n continue;\n }\n if (!bucket.find(existing => existing.name === pkg.name && existing.specifier === pkg.specifier)) {\n bucket.push(pkg);\n }\n }\n normalized.packages[ecosystem] = bucket;\n };\n\n const handleRuntimeEntry = (entry: unknown): void => {\n if (typeof entry === 'string') {\n addRuntime(parseVersionSpecifier(entry));\n } else if (entry && typeof entry === 'object') {\n const name = String((entry as any).name || '');\n const specifier = (entry as any).specifier ?? (entry as any).version;\n if (name) {\n addRuntime({\n name,\n specifier: typeof specifier === 'string' && specifier.length > 0 ? specifier : undefined,\n raw: formatVersionSpecifier(name, specifier)\n });\n }\n }\n };\n\n const handleToolEntry = (entry: unknown): void => {\n if (typeof entry === 'string') {\n addTool(parseVersionSpecifier(entry));\n } else if (entry && typeof entry === 'object') {\n const name = String((entry as any).name || '');\n const specifier = (entry as any).specifier ?? (entry as any).version;\n if (name) {\n addTool({\n name,\n specifier: typeof specifier === 'string' && specifier.length > 0 ? specifier : undefined,\n raw: formatVersionSpecifier(name, specifier)\n });\n }\n }\n };\n\n const handlePackageList = (ecosystem: string, value: unknown): void => {\n if (Array.isArray(value)) {\n const packages = value.map(item => parseVersionSpecifier(String(item)));\n addPackages(ecosystem, packages);\n return;\n }\n\n if (value && typeof value === 'object') {\n const packages = Object.values(value as Record<string, unknown>).map(item => parseVersionSpecifier(String(item)));\n addPackages(ecosystem, packages);\n }\n };\n\n if (Array.isArray(rawNeeds)) {\n for (const entry of rawNeeds) {\n handleRuntimeEntry(entry);\n }\n } else if (typeof rawNeeds === 'string') {\n handleRuntimeEntry(rawNeeds);\n } else if (rawNeeds && typeof rawNeeds === 'object') {\n const structuredNeeds = rawNeeds as ModuleNeeds;\n\n if (structuredNeeds.runtimes) {\n for (const runtime of structuredNeeds.runtimes) {\n handleRuntimeEntry(runtime);\n }\n }\n\n if (structuredNeeds.tools) {\n for (const tool of structuredNeeds.tools) {\n handleToolEntry(tool);\n }\n }\n\n if (structuredNeeds.packages) {\n for (const [ecosystem, packageList] of Object.entries(structuredNeeds.packages)) {\n handlePackageList(ecosystem, packageList);\n }\n }\n }\n\n if (legacyDetails) {\n if (legacyDetails.js) {\n inheritLegacyRuntimeDetail('js', legacyDetails.js, addRuntime, addPackages, addTool);\n }\n if (legacyDetails.node) {\n inheritLegacyRuntimeDetail('node', legacyDetails.node, addRuntime, addPackages, addTool);\n }\n if (legacyDetails.py) {\n inheritLegacyRuntimeDetail('python', legacyDetails.py, addRuntime, addPackages, addTool);\n }\n if (legacyDetails.sh) {\n inheritLegacyRuntimeDetail('sh', legacyDetails.sh, addRuntime, addPackages, addTool);\n }\n }\n\n return normalized;\n}\n\nexport function moduleNeedsToRuntimeNames(needs?: ModuleNeeds | ModuleNeedsNormalized): string[] {\n if (!needs) {\n return [];\n }\n\n const source = Array.isArray((needs as ModuleNeeds).runtimes) ? (needs as ModuleNeeds).runtimes : (needs as ModuleNeedsNormalized).runtimes;\n if (!source) {\n return [];\n }\n\n return source.map(entry => entry.name);\n}\n\nexport function parseVersionSpecifier(raw: string): VersionSpecifier {\n const trimmed = raw.trim();\n if (!trimmed) {\n return { name: '', raw: '' };\n }\n\n const comparatorMatch = trimmed.match(/^(@?[^@<>=!~\\s]+)\\s*(==|>=|<=|>|<|!=|~=)\\s*(.+)$/);\n if (comparatorMatch) {\n const [, name, operator, spec] = comparatorMatch;\n return {\n name,\n specifier: `${operator}${spec}`,\n raw: trimmed\n };\n }\n\n if (trimmed.startsWith('@')) {\n const parts = trimmed.split('@');\n if (parts.length > 2) {\n const spec = parts.pop();\n const scopedName = parts.join('@');\n if (spec) {\n return {\n name: scopedName,\n specifier: spec,\n raw: trimmed\n };\n }\n }\n }\n\n const atIndex = trimmed.lastIndexOf('@');\n if (atIndex > 0 && atIndex < trimmed.length - 1) {\n const name = trimmed.slice(0, atIndex);\n const specifier = trimmed.slice(atIndex + 1);\n return { name, specifier, raw: trimmed };\n }\n\n return { name: trimmed, raw: trimmed };\n}\n\nexport function formatVersionSpecifier(name: string, specifier?: unknown): string {\n if (!name) {\n return '';\n }\n\n if (typeof specifier === 'string' && specifier.length > 0) {\n return `${name}@${specifier}`;\n }\n\n return name;\n}\n\nexport function moduleNeedsToSerializable(needs: ModuleNeedsNormalized): ModuleNeeds {\n const result: ModuleNeeds = {};\n\n if (needs.runtimes.length > 0) {\n result.runtimes = needs.runtimes.map(runtime => ({\n name: runtime.name,\n specifier: runtime.specifier,\n raw: runtime.raw\n }));\n }\n\n if (needs.tools.length > 0) {\n result.tools = needs.tools.map(tool => ({\n name: tool.name,\n specifier: tool.specifier,\n raw: tool.raw\n }));\n }\n\n const packageEntries = Object.entries(needs.packages);\n if (packageEntries.length > 0) {\n result.packages = packageEntries.reduce<PackageRequirementMap>((acc, [ecosystem, packages]) => {\n acc[ecosystem] = packages.map(pkg => ({\n name: pkg.name,\n specifier: pkg.specifier,\n raw: pkg.raw\n }));\n return acc;\n }, {});\n }\n\n if (needs.capabilities) {\n result.capabilities = needs.capabilities;\n }\n\n return result;\n}\n\nexport function stringifyRequirementList(requirements: VersionSpecifier[]): string[] {\n return requirements.map(req => formatVersionSpecifier(req.name, req.specifier));\n}\n\nexport function stringifyPackageMap(packages: PackageRequirementMap): Record<string, string[]> {\n const entries: [string, string[]][] = Object.entries(packages).map(([ecosystem, list]) => [\n ecosystem,\n list.map(pkg => formatVersionSpecifier(pkg.name, pkg.specifier))\n ]);\n return Object.fromEntries(entries);\n}\n\nfunction inheritLegacyRuntimeDetail(\n name: string,\n detail: LegacyRuntimeDetail,\n addRuntime: (candidate: RuntimeRequirement) => void,\n addPackages: (ecosystem: string, packages: PackageRequirement[]) => void,\n addTool: (candidate: ToolRequirement) => void\n): void {\n if (detail.node && (name === 'node' || name === 'js')) {\n addRuntime({ name: 'node', specifier: detail.node, raw: formatVersionSpecifier('node', detail.node) });\n }\n\n if (detail.python && name === 'python') {\n addRuntime({ name: 'python', specifier: detail.python, raw: formatVersionSpecifier('python', detail.python) });\n }\n\n if (detail.shell && name === 'sh') {\n addTool({ name: detail.shell, raw: detail.shell });\n }\n\n if (detail.packages && detail.packages.length > 0) {\n addPackages(name, detail.packages.map(pkg => parseVersionSpecifier(pkg)));\n }\n\n if (detail.commands && detail.commands.length > 0) {\n for (const command of detail.commands) {\n addTool(parseVersionSpecifier(command));\n }\n }\n}\n"]}