mana-swift-llm/Package.swift
till 71ad295b73 mana statt »e.V.«: Schweizer Verein (kein Store-Release, nur Quelltext-Korrektur)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 20:32:29 +02:00

59 lines
2.2 KiB
Swift

// swift-tools-version: 6.0
import PackageDescription
/// `mana-swift-llm` — Swift-Package mit lokalen LLM-Backends für alle
/// nativen mana-Apps (FoundationModels + Gemma 4 via MLX).
///
/// Zwei Library-Products:
///
/// - **ManaLLM**: Backend-Abstraktion + Router. Apps importieren
/// dieses Modul für `ManaLLM.summarize(...)` oder direkte Backend-
/// Zugriffe. Bringt MLX-Swift-LM + swift-transformers als
/// Dependencies mit.
///
/// - **ManaLLMShared**: App-Group-Container-Helper für gemeinsamen
/// HuggingFace-Cache (`group.ev.mana.models`). Apps nutzen das,
/// um Modelle einmal zu laden und über alle teilnehmenden Apps
/// hinweg per mmap zu lesen. Kein MLX-Dep — schmale Tool-Lib.
///
/// SOT-Doku: `mana/docs/MANA_LLM.md`. Plattform-Kontext:
/// `mana/docs/MANA_SWIFT.md`. Bewusst eigenes Repo (nicht in
/// mana-swift-core), weil die MLX-Swift-Toolchain ~30 MB schwer ist
/// und ManaCore lean bleiben soll (Architektur-Invariante).
let package = Package(
name: "mana-swift-llm",
platforms: [
.iOS(.v18),
.macOS(.v15),
],
products: [
.library(name: "ManaLLM", targets: ["ManaLLM"]),
.library(name: "ManaLLMShared", targets: ["ManaLLMShared"]),
],
dependencies: [
.package(url: "https://github.com/ml-explore/mlx-swift-lm", branch: "main"),
.package(url: "https://github.com/huggingface/swift-huggingface", from: "0.9.0"),
.package(url: "https://github.com/huggingface/swift-transformers", from: "1.3.0"),
],
targets: [
.target(
name: "ManaLLM",
dependencies: [
"ManaLLMShared",
.product(name: "MLXLLM", package: "mlx-swift-lm"),
.product(name: "MLXLMCommon", package: "mlx-swift-lm"),
.product(name: "MLXHuggingFace", package: "mlx-swift-lm"),
.product(name: "HuggingFace", package: "swift-huggingface"),
.product(name: "Tokenizers", package: "swift-transformers"),
]
),
.target(
name: "ManaLLMShared",
dependencies: []
),
.testTarget(
name: "ManaLLMTests",
dependencies: ["ManaLLM"]
),
]
)