Package.swift
Rama main · réplica de lectura del repositorio original.
// swift-tools-version: 6.4
import PackageDescription
let package = Package(
name: "swift-claw",
platforms: [.macOS(.v26)],
products: [.executable(name: "clawd", targets: ["clawd"])],
dependencies: [
.package(url: "https://github.com/swift-server/async-http-client.git", from: "1.21.0"),
.package(url: "https://github.com/apple/swift-crypto.git", from: "4.0.0"),
.package(url: "https://github.com/groue/GRDB.swift.git", from: "7.11.0"),
.package(url: "https://github.com/jpsim/Yams.git", from: "6.2.2"),
.package(url: "https://github.com/modelcontextprotocol/swift-sdk", from: "0.12.1"),
.package(url: "https://github.com/apple/swift-argument-parser.git", from: "1.3.0"),
.package(url: "https://github.com/apple/swift-log.git", from: "1.14.0"),
.package(url: "https://github.com/apple/swift-nio.git", from: "2.65.0"),
.package(url: "https://github.com/apple/swift-nio-extras.git", from: "1.34.0"),
.package(url: "https://github.com/swift-server/swift-service-lifecycle.git", from: "2.11.0"),
.package(url: "https://github.com/swiftlang/swift-subprocess.git", exact: "1.0.0"),
.package(url: "https://github.com/apple/swift-system.git", from: "1.7.4"),
],
targets: [
.target(name: "ClawCore", dependencies: [.product(name: "Crypto", package: "swift-crypto")]),
.target(
name: "ClawSecrets",
dependencies: ["ClawCore", "ClawAuth", .product(name: "Crypto", package: "swift-crypto")]
),
.target(
name: "ClawData",
dependencies: ["ClawCore", .product(name: "GRDB", package: "GRDB.swift")]
),
.target(
name: "ClawWorkspace",
dependencies: ["ClawCore", .product(name: "Yams", package: "Yams")]
),
.target(
name: "ClawHTTP",
dependencies: [
"ClawCore",
.product(name: "AsyncHTTPClient", package: "async-http-client"),
.product(name: "NIOCore", package: "swift-nio"),
.product(name: "NIOHTTP1", package: "swift-nio"),
.product(name: "NIOHTTPCompression", package: "swift-nio-extras"),
.product(name: "NIOPosix", package: "swift-nio"),
]
),
.target(
name: "ClawTelegram",
dependencies: [
"ClawCore",
"ClawHTTP",
.product(name: "AsyncHTTPClient", package: "async-http-client"),
]
),
.target(
name: "ClawLLM",
dependencies: ["ClawCore", "ClawAuth", .product(name: "Logging", package: "swift-log")],
resources: [.embedInCode("Pricing/Prices.json")]
),
.target(
name: "ClawAgent",
dependencies: ["ClawCore", .product(name: "Logging", package: "swift-log")]
),
.target(name: "ClawTools", dependencies: ["ClawCore"]),
.target(
name: "ClawMCP",
dependencies: [
"ClawCore",
.product(name: "Logging", package: "swift-log"),
.product(name: "MCP", package: "swift-sdk"),
]
),
.target(name: "ClawAppleSpeech", dependencies: ["ClawCore"]),
.target(
name: "ClawSubprocess",
dependencies: [
"ClawCore",
.product(name: "Subprocess", package: "swift-subprocess"),
.product(
name: "SystemPackage",
package: "swift-system",
condition: .when(platforms: [.linux])
),
]
),
.target(name: "ClawExec", dependencies: ["ClawCore", "ClawSubprocess"]),
.target(
name: "ClawCoder",
dependencies: [
"ClawCore",
.product(name: "Subprocess", package: "swift-subprocess"),
.product(
name: "SystemPackage",
package: "swift-system",
condition: .when(platforms: [.linux])
),
],
resources: [.embedInCode("Codex/CodexResult.schema.json")]
),
.target(name: "ClawAuth", dependencies: ["ClawCore"]),
.target(
name: "ClawTestSupport",
dependencies: [
"ClawAgent",
"ClawAuth",
"ClawCore",
"ClawData",
"ClawTools",
.product(name: "GRDB", package: "GRDB.swift"),
.product(name: "Logging", package: "swift-log"),
]
),
.target(
name: "ClawGateway",
dependencies: [
"ClawCore",
"ClawAgent",
.product(name: "ServiceLifecycle", package: "swift-service-lifecycle"),
.product(name: "UnixSignals", package: "swift-service-lifecycle"),
.product(name: "Logging", package: "swift-log"),
]
),
.executableTarget(
name: "clawd",
dependencies: [
"ClawCore",
"ClawData",
"ClawSecrets",
"ClawHTTP",
"ClawTelegram",
"ClawGateway",
"ClawLLM",
"ClawAgent",
"ClawWorkspace",
"ClawTools",
"ClawExec",
"ClawSubprocess",
"ClawAuth",
"ClawAppleSpeech",
"ClawMCP",
"ClawCoder",
.product(name: "ServiceLifecycle", package: "swift-service-lifecycle"),
.product(name: "UnixSignals", package: "swift-service-lifecycle"),
.product(name: "ArgumentParser", package: "swift-argument-parser"),
.product(name: "AsyncHTTPClient", package: "async-http-client"),
.product(name: "Logging", package: "swift-log"),
]
),
.testTarget(name: "ClawCoreTests", dependencies: ["ClawCore", "ClawTestSupport"]),
.testTarget(
name: "ClawAuthTests",
dependencies: [
"ClawAuth",
"ClawCore",
"ClawSecrets",
"ClawSubprocess",
"ClawTestSupport",
]
),
.testTarget(
name: "ClawSecretsTests",
dependencies: [
"ClawSecrets",
"ClawCore",
"ClawTestSupport",
.product(name: "Crypto", package: "swift-crypto"),
]
),
.testTarget(
name: "ClawDataTests",
dependencies: [
"ClawData",
"ClawCore",
"ClawTestSupport",
.product(name: "GRDB", package: "GRDB.swift"),
]
),
.testTarget(name: "ClawWorkspaceTests", dependencies: ["ClawWorkspace", "ClawCore"]),
.testTarget(
name: "ClawHTTPTests",
dependencies: [
"ClawHTTP",
"ClawCore",
"ClawTestSupport",
.product(name: "AsyncHTTPClient", package: "async-http-client"),
.product(name: "NIOCore", package: "swift-nio"),
.product(name: "NIOHTTP1", package: "swift-nio"),
.product(name: "NIOPosix", package: "swift-nio"),
]
),
.testTarget(
name: "ClawTelegramTests",
dependencies: ["ClawTelegram", "ClawCore", "ClawHTTP", "ClawTestSupport"]
),
.testTarget(
name: "ClawLLMTests",
dependencies: [
"ClawLLM",
"ClawAuth",
"ClawCore",
"ClawTestSupport",
.product(name: "Logging", package: "swift-log"),
],
exclude: ["ChatGPT/Fixtures"]
),
.testTarget(
name: "ClawAgentTests",
dependencies: [
"ClawAgent",
"ClawCore",
"ClawWorkspace",
"ClawTestSupport",
.product(name: "Logging", package: "swift-log"),
]
),
.testTarget(
name: "ClawToolsTests",
dependencies: ["ClawTools", "ClawCore", "ClawTestSupport"]
),
.testTarget(
name: "ClawMCPTests",
dependencies: [
"ClawMCP",
"ClawCore",
"ClawTestSupport",
.product(name: "MCP", package: "swift-sdk"),
]
),
.testTarget(
name: "ClawExecTests",
dependencies: ["ClawExec", "ClawCore", "ClawSubprocess", "ClawTestSupport"]
),
.testTarget(name: "ClawSubprocessTests", dependencies: ["ClawSubprocess", "ClawTestSupport"]),
.testTarget(
name: "ClawCoderTests",
dependencies: [
"ClawCoder",
"ClawCore",
"ClawTestSupport",
.product(name: "Subprocess", package: "swift-subprocess"),
.product(
name: "SystemPackage",
package: "swift-system",
condition: .when(platforms: [.linux])
),
],
exclude: ["Process/Fixtures"]
),
.testTarget(
name: "ClawAppleSpeechTests",
dependencies: ["ClawAppleSpeech", "ClawCore"],
resources: [.copy("Fixtures")]
),
.testTarget(
name: "ClawGatewayTests",
dependencies: [
"ClawGateway",
"ClawCore",
"ClawData",
"ClawAgent",
"ClawTelegram",
"ClawWorkspace",
"ClawTools",
"ClawTestSupport",
.product(name: "GRDB", package: "GRDB.swift"),
.product(name: "Logging", package: "swift-log"),
.product(name: "ServiceLifecycle", package: "swift-service-lifecycle"),
.product(name: "ServiceLifecycleTestKit", package: "swift-service-lifecycle"),
]
),
.testTarget(
name: "ClawdCompositionTests",
dependencies: [
"clawd",
"ClawGateway",
"ClawAgent",
"ClawHTTP",
"ClawTestSupport",
"ClawCore",
"ClawAuth",
"ClawSecrets",
"ClawLLM",
"ClawData",
"ClawTelegram",
"ClawWorkspace",
"ClawMCP",
"ClawSubprocess",
"ClawTools",
"ClawCoder",
.product(name: "ServiceLifecycleTestKit", package: "swift-service-lifecycle"),
.product(name: "ArgumentParser", package: "swift-argument-parser"),
.product(name: "AsyncHTTPClient", package: "async-http-client"),
.product(name: "GRDB", package: "GRDB.swift"),
]
),
]
)
// Require a direct import for every member a file uses, so a transitive import cannot hide a
// missing module dependency (architecture §19.2).
let memberImportVisibility = SwiftSetting.enableUpcomingFeature(
"MemberImportVisibility",
.when(platforms: [.macOS])
)
for target in package.targets {
target.swiftSettings = (target.swiftSettings ?? []) + [memberImportVisibility]
}