swift-apple-intelligence-grpc/Package.swift
Mathias Beaulieu-Duncan e0bf17da3d Add macOS menu bar app with chat and settings
- Restructure project into three targets:
  - AppleIntelligenceCore: Shared gRPC service code
  - AppleIntelligenceServer: CLI server
  - AppleIntelligenceApp: Menu bar app

- Menu bar app features:
  - Toggle server on/off from menu bar
  - Chat window with streaming AI responses
  - Settings: host, port, API key, auto-start, launch at login
  - Proper window focus handling for menu bar apps

- Add build scripts for distribution:
  - build-app.sh: Creates signed .app bundle
  - create-dmg.sh: Creates distributable DMG

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-30 04:31:31 -05:00

62 lines
2.3 KiB
Swift

// swift-tools-version: 6.2
import PackageDescription
let package = Package(
name: "AppleIntelligenceGRPC",
platforms: [
.macOS(.v26)
],
products: [
.executable(name: "AppleIntelligenceServer", targets: ["AppleIntelligenceServer"]),
.executable(name: "AppleIntelligenceApp", targets: ["AppleIntelligenceApp"]),
],
dependencies: [
.package(url: "https://github.com/grpc/grpc-swift.git", from: "2.0.0"),
.package(url: "https://github.com/grpc/grpc-swift-nio-transport.git", from: "1.0.0"),
.package(url: "https://github.com/grpc/grpc-swift-protobuf.git", from: "1.0.0"),
.package(url: "https://github.com/apple/swift-protobuf.git", from: "1.28.0"),
.package(url: "https://github.com/apple/swift-argument-parser.git", from: "1.3.0"),
],
targets: [
// Shared library with gRPC service code
.target(
name: "AppleIntelligenceCore",
dependencies: [
.product(name: "GRPCCore", package: "grpc-swift"),
.product(name: "GRPCNIOTransportHTTP2", package: "grpc-swift-nio-transport"),
.product(name: "GRPCProtobuf", package: "grpc-swift-protobuf"),
.product(name: "SwiftProtobuf", package: "swift-protobuf"),
],
swiftSettings: [
.unsafeFlags(["-Xfrontend", "-suppress-warnings"])
]
),
// CLI server (original)
.executableTarget(
name: "AppleIntelligenceServer",
dependencies: [
"AppleIntelligenceCore",
.product(name: "ArgumentParser", package: "swift-argument-parser"),
],
swiftSettings: [
.unsafeFlags(["-parse-as-library"]),
.unsafeFlags(["-Xfrontend", "-suppress-warnings"])
]
),
// Menu bar app
.executableTarget(
name: "AppleIntelligenceApp",
dependencies: [
"AppleIntelligenceCore",
],
exclude: [
"Info.plist"
],
swiftSettings: [
.unsafeFlags(["-parse-as-library"]),
.unsafeFlags(["-Xfrontend", "-suppress-warnings"])
]
),
]
)