mirror of
https://github.com/Mesh-LLM/mesh-llm.git
synced 2026-08-08 22:23:19 -04:00
* a run at SDK, tested with a client * Use in-process shutdown for embedded SDK * Satisfy clippy for embedded shutdown plumbing * Document embedded Rust SDK usage * Add public Rust SDK crate * Tighten embedded SDK lifecycle * Address embedded SDK review feedback * Document native runtime packaging direction * Document runtime CLI namespace * Document runtime CLI UX expectations * Document runtime diagnostics under doctor * Add Windows PowerShell installer * Document recommended runtime install flow * Add native runtime resolver foundation * Wire native runtime release installs * Document native runtime crate * Load versioned native runtimes dynamically * Fix embedded SDK output manager reset * Expose SDK mesh admission controls * Split SDK runtime mapping assertions * Tighten SDK docs and config module * Clarify native runtime SDK TODOs * Stabilize native log note test * Expose native runtime install SDK * Re-export native runtime APIs from SDK crate * Add embedded SDK knobs for Sprout relay mesh (#782) Two opt-in seams the Sprout v1 mesh integration needs: - disable_iroh_relays(bool): when true, embedded runtime selects an explicitly disabled relay policy, which uses RelayMode::Disabled, skips public relay URL fallback, skips raw STUN, and avoids the 5s endpoint.online() wait that cannot succeed without a home relay. Default false preserves existing behavior. - EmbeddedNodeHandle::join_token(token): forwards an invite token over the runtime control channel to node.join_with_retry so an already-running embedded node can dial a new EndpointAddr without restart. Handled in both auto and passive/client runtime loops. Purely additive; existing defaults and startup join_tokens behavior remain unchanged. Co-authored-by: npub1mprnacetjua2xx3p5eddmhxyk6wv929ymm5py8kd2xfxurxahspqqlgyta <d8473ee32b973aa31a21a65adddcc4b69cc2a8a4dee8121ecd51926e0cddbc02@sprout-oss.stage.blox.sqprod.co> Co-authored-by: Perci <5a968df9a7494b4e019b9ecf739e088ba61097b4312124e9a88ae5b42e3f5f3e@sprout-oss.stage.blox.sqprod.co> * Fix relay policy test visibility * Make SDK publishable and align language bindings (#771) * Split SDK native runtime publish surface * Split CLI and TUI support crates * Move CLI parser surface into mesh-llm-cli * Extract shared mesh event surface * Move standalone command handlers out of host runtime * Move benchmark and plugin commands out of host runtime * Finish plugin command extraction * Extract auth identity ownership * Move remaining standalone commands out of host runtime * Move model store into model-hf * Move CLI commands out of host runtime * Decouple host runtime from CLI and TUI crates * Expose embedded node SDK facade * Keep client identity dependencies pure * Simplify Rust SDK feature surface * Keep SDK client feature runtime-free * Expose SDK client API base override * Use direct mesh SDK client transport * Remove API base URL client builder shim * Align language SDKs with Rust SDK facade * Document SDK client and serving modes * Fix SDK smoke runtime setup * Package SDK console assets * Fix dynamic runtime CI setup * Restructure SDK docs by language * Fix SDK smoke package loading * Fix native runtime bundle resolution * Add structured native runtime backend metadata * Harden Kotlin native runtime smoke resolution * Fix mesh-llm-sdk clippy imports * Retry smoke model downloads --------- Co-authored-by: James Dumay <jameswdumay@gmail.com> Co-authored-by: tlongwell-block <109685178+tlongwell-block@users.noreply.github.com> Co-authored-by: npub1mprnacetjua2xx3p5eddmhxyk6wv929ymm5py8kd2xfxurxahspqqlgyta <d8473ee32b973aa31a21a65adddcc4b69cc2a8a4dee8121ecd51926e0cddbc02@sprout-oss.stage.blox.sqprod.co> Co-authored-by: Perci <5a968df9a7494b4e019b9ecf739e088ba61097b4312124e9a88ae5b42e3f5f3e@sprout-oss.stage.blox.sqprod.co>
78 lines
2.6 KiB
Swift
78 lines
2.6 KiB
Swift
// swift-tools-version: 5.9
|
|
import PackageDescription
|
|
import Foundation
|
|
|
|
let repoRoot = URL(fileURLWithPath: #filePath).deletingLastPathComponent().path
|
|
let swiftSDKRelativePath = "sdk/swift"
|
|
let ffiXCFrameworkRelativePath = "\(swiftSDKRelativePath)/Generated/MeshLLMFFI.xcframework"
|
|
let ffiXCFrameworkPath = "\(repoRoot)/\(ffiXCFrameworkRelativePath)"
|
|
let remoteFFIXCFrameworkURL = "https://github.com/Mesh-LLM/mesh-llm/releases/download/__MESH_SWIFT_RELEASE_TAG__/MeshLLMFFI.xcframework.zip"
|
|
let remoteFFIXCFrameworkChecksum = "__MESH_SWIFT_RELEASE_CHECKSUM__"
|
|
let hasLocalFFIXCFramework = FileManager.default.fileExists(atPath: ffiXCFrameworkPath)
|
|
let hasRemoteFFIXCFramework =
|
|
!remoteFFIXCFrameworkURL.contains("__MESH_SWIFT_RELEASE_TAG__")
|
|
&& !remoteFFIXCFrameworkChecksum.contains("__MESH_SWIFT_RELEASE_CHECKSUM__")
|
|
|
|
var meshLLMDependencies: [Target.Dependency] = []
|
|
var packageTargets: [Target] = []
|
|
|
|
if hasLocalFFIXCFramework {
|
|
meshLLMDependencies.append("MeshLLMFFI")
|
|
packageTargets.append(
|
|
.binaryTarget(
|
|
name: "MeshLLMFFI",
|
|
path: ffiXCFrameworkRelativePath
|
|
)
|
|
)
|
|
} else if hasRemoteFFIXCFramework {
|
|
meshLLMDependencies.append("MeshLLMFFI")
|
|
packageTargets.append(
|
|
.binaryTarget(
|
|
name: "MeshLLMFFI",
|
|
url: remoteFFIXCFrameworkURL,
|
|
checksum: remoteFFIXCFrameworkChecksum
|
|
)
|
|
)
|
|
}
|
|
|
|
let hasFFIBinaryTarget = hasLocalFFIXCFramework || hasRemoteFFIXCFramework
|
|
|
|
let package = Package(
|
|
name: "MeshLLM",
|
|
platforms: [
|
|
.iOS(.v16),
|
|
.macOS(.v13),
|
|
],
|
|
products: [
|
|
.library(
|
|
name: "MeshLLM",
|
|
targets: ["MeshLLM"]
|
|
),
|
|
],
|
|
targets: [
|
|
.target(
|
|
name: "MeshLLM",
|
|
dependencies: meshLLMDependencies,
|
|
path: "sdk/swift/Sources/MeshLLM",
|
|
exclude: hasFFIBinaryTarget ? [] : ["Generated"],
|
|
resources: [
|
|
.copy("Resources/Console"),
|
|
],
|
|
linkerSettings: [
|
|
.linkedFramework("Accelerate"),
|
|
.linkedFramework("AppKit", .when(platforms: [.macOS])),
|
|
.linkedFramework("CoreGraphics"),
|
|
.linkedFramework("Foundation"),
|
|
.linkedFramework("Metal"),
|
|
.linkedFramework("MetalKit"),
|
|
.linkedFramework("SystemConfiguration"),
|
|
.linkedLibrary("c++"),
|
|
]
|
|
),
|
|
.testTarget(
|
|
name: "MeshLLMTests",
|
|
dependencies: ["MeshLLM"],
|
|
path: "sdk/swift/Tests/MeshLLMTests"
|
|
),
|
|
] + packageTargets
|
|
)
|