Ctrl K
ComunidadGuías…

Package.swift

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
// 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]
}