- Split config into LaunchSnapshot (frozen security keys: ollama, applescript, toolBlocklist, confirmationPolicy, logging) and PerTurnSnapshot (mutable: provider, tts, stt, featureFlags) per SEC-05 - OllamaConfig.init(from:) rejects non-localhost hosts at decode time with ConfigError.invalidOllamaHost (AGENT-05) - AppleScriptPolicy has no skipAllowlist/bypass/regex field (SEC-08); reflection test ConfigSplitTests.test_noSkipAllowlistKey enforces - FeatureFlags lives in PerTurnSnapshot only (OBS-05); reflection test LaunchSnapshotTests.test_featureFlagsNotInLaunchSnapshot enforces - SchemaMigrator: currentVersion=1, v1->v1 pass-through, future versions throw ConfigError.futureSchema - ConfigLoader.loadSnapshots: peek schemaVersion, migrate, decode both snapshots; wraps DecodingError into ConfigError.malformed - ConfigStore actor holds launch + streams perTurn updates (file- watcher wiring is Plan 03 scope) - Bundled default-config.json resource - Tests: 15/15 pass covering all behaviors listed in the plan - Deletes Plan 01 placeholders Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
31 lines
823 B
Swift
31 lines
823 B
Swift
// swift-tools-version:6.0
|
|
import PackageDescription
|
|
|
|
let package = Package(
|
|
name: "Config",
|
|
platforms: [.macOS(.v13)],
|
|
products: [
|
|
.library(name: "Config", targets: ["Config"]),
|
|
],
|
|
dependencies: [
|
|
.package(path: "../Keychain"),
|
|
.package(path: "../Logging"),
|
|
],
|
|
targets: [
|
|
.target(
|
|
name: "Config",
|
|
dependencies: [
|
|
.product(name: "Keychain", package: "Keychain"),
|
|
.product(name: "JarvisLogging", package: "Logging"),
|
|
],
|
|
resources: [.process("Resources")],
|
|
swiftSettings: [.swiftLanguageMode(.v6)]
|
|
),
|
|
.testTarget(
|
|
name: "ConfigTests",
|
|
dependencies: ["Config"],
|
|
swiftSettings: [.swiftLanguageMode(.v6)]
|
|
),
|
|
]
|
|
)
|