Kubrick is a director for long running tasks known as "Jobs" that are guaranteed to complete. Jobs are resiliant across
process restarts and work between processes like applications and extensions. The framework includes integration with
long running system services like background URLSession
s and User Notifications.
What's New
🚀 1.0.0 - FirstCut
2023-10-31T16:34:59Z
Initial Release
The initial release of the Kubrick Job Director supporting long-running resilient Jobs, multi-process coordination, and integration with persistent system services.
The following features are covered by tests and are working:
- Injection via
JobInject
- SwiftUI Style Job Builders
- Map Jobs
- Retry Jobs
- Error/Catch Jobs
- Background URLSession Jobs
- UserNotification Jobs
- Multi-Process Assistant Directors
- Automatic Job Transfers (from Assistant to Principal)
- File Based Job Store
Description
- Swift Tools 5.6.0
Description
{ "name": "Kubrick", "path": "/usr/src/package", "targets": [ { "name": "Kubrick", "path": "Sources/Kubrick", "type": "library", "c99name": "Kubrick", "sources": [ "AssistantsWatcher.swift", "Base64URL.swift", "BatchJob.swift", "CatchJob.swift", "DirectoryWatcher.swift", "DynamicJobDirector.swift", "ExecutableJob.swift", "ExternalJobKey.swift", "FileHandles.swift", "Job.swift", "JobBinding.swift", "JobBuilder.swift", "JobCodable.swift", "JobDirector.swift", "JobDirectorID.swift", "JobDirectorMode.swift", "JobDirectorStore.swift", "JobEnvironment.swift", "JobEnvironmentValue.swift", "JobError.swift", "JobErrorBox.swift", "JobExecutionError.swift", "JobHashable.swift", "JobHasher.swift", "JobID.swift", "JobInject.swift", "JobInjectManagable.swift", "JobInput.swift", "JobInputDescriptor.swift", "JobInputResults.swift", "JobKey.swift", "JobResult.swift", "JobTransferError.swift", "JobValue.swift", "Logging.swift", "MapJob.swift", "NoValue.swift", "RegEx.swift", "RegisterCache.swift", "ResultJob.swift", "RetryJob.swift", "SubmittableJob.swift", "SubmittableJobStore.swift", "Tasks.swift", "TimeDuration.swift", "TypeResolvers.swift", "URLSessionJobManager.swift", "UUIDs.swift", "UniqueID.swift", "UserNotificationJobManager.swift" ], "resources": [ { "path": "/usr/src/package/Sources/Kubrick/Kubrick.docc", "rule": { "process": {} } } ], "module_type": "SwiftTarget", "product_memberships": [ "Kubrick" ], "product_dependencies": [ "AsyncObjects", "IOStreams", "PotentCodables", "FriendlyId" ] } ], "products": [ { "name": "Kubrick", "type": { "library": [ "automatic" ] }, "targets": [ "Kubrick" ] } ], "platforms": [ { "name": "macos", "version": "12.0" }, { "name": "ios", "version": "15.0" }, { "name": "tvos", "version": "15.0" }, { "name": "watchos", "version": "8.0" } ], "dependencies": [ { "url": "https://github.com/SwiftyLab/AsyncObjects.git", "type": "sourceControl", "identity": "asyncobjects", "requirement": { "range": [ { "lower_bound": "2.1.0", "upper_bound": "2.2.0" } ] } }, { "url": "https://github.com/outfoxx/potentcodables.git", "type": "sourceControl", "identity": "potentcodables", "requirement": { "range": [ { "lower_bound": "3.2.0", "upper_bound": "3.3.0" } ] } }, { "url": "https://github.com/kdubb/SwiftFriendlyId.git", "type": "sourceControl", "identity": "swiftfriendlyid", "requirement": { "range": [ { "lower_bound": "1.3.1", "upper_bound": "1.4.0" } ] } }, { "url": "https://github.com/outfoxx/IOStreams.git", "type": "sourceControl", "identity": "iostreams", "requirement": { "range": [ { "lower_bound": "1.4.2", "upper_bound": "1.5.0" } ] } }, { "url": "https://github.com/apple/swift-docc-plugin", "type": "sourceControl", "identity": "swift-docc-plugin", "requirement": { "range": [ { "lower_bound": "1.3.0", "upper_bound": "1.4.0" } ] } } ], "tools_version": "5.6", "manifest_display_name": "Kubrick" }
Package Dump
{ "name": "Kubrick", "targets": [ { "name": "Kubrick", "type": "regular", "exclude": [], "settings": [], "resources": [ { "path": "Kubrick.docc", "rule": { "process": {} } } ], "dependencies": [ { "product": [ "AsyncObjects", "AsyncObjects", null, null ] }, { "product": [ "IOStreams", "iostreams", null, null ] }, { "product": [ "PotentCodables", "potentcodables", null, null ] }, { "product": [ "FriendlyId", "SwiftFriendlyId", null, null ] } ], "packageAccess": false } ], "products": [ { "name": "Kubrick", "type": { "library": [ "automatic" ] }, "targets": [ "Kubrick" ] } ], "pkgConfig": null, "platforms": [ { "options": [], "version": "12.0", "platformName": "macos" }, { "options": [], "version": "15.0", "platformName": "ios" }, { "options": [], "version": "15.0", "platformName": "tvos" }, { "options": [], "version": "8.0", "platformName": "watchos" } ], "providers": null, "packageKind": { "root": [ "/usr/src/package" ] }, "dependencies": [ { "sourceControl": [ { "identity": "asyncobjects", "location": { "remote": [ { "urlString": "https://github.com/SwiftyLab/AsyncObjects.git" } ] }, "requirement": { "range": [ { "lowerBound": "2.1.0", "upperBound": "2.2.0" } ] }, "productFilter": null } ] }, { "sourceControl": [ { "identity": "potentcodables", "location": { "remote": [ { "urlString": "https://github.com/outfoxx/potentcodables.git" } ] }, "requirement": { "range": [ { "lowerBound": "3.2.0", "upperBound": "3.3.0" } ] }, "productFilter": null } ] }, { "sourceControl": [ { "identity": "swiftfriendlyid", "location": { "remote": [ { "urlString": "https://github.com/kdubb/SwiftFriendlyId.git" } ] }, "requirement": { "range": [ { "lowerBound": "1.3.1", "upperBound": "1.4.0" } ] }, "productFilter": null } ] }, { "sourceControl": [ { "identity": "iostreams", "location": { "remote": [ { "urlString": "https://github.com/outfoxx/IOStreams.git" } ] }, "requirement": { "range": [ { "lowerBound": "1.4.2", "upperBound": "1.5.0" } ] }, "productFilter": null } ] }, { "sourceControl": [ { "identity": "swift-docc-plugin", "location": { "remote": [ { "urlString": "https://github.com/apple/swift-docc-plugin" } ] }, "requirement": { "range": [ { "lowerBound": "1.3.0", "upperBound": "1.4.0" } ] }, "productFilter": null } ] } ], "toolsVersion": { "_version": "5.6.0" }, "cLanguageStandard": null, "cxxLanguageStandard": null, "swiftLanguageVersions": null }
Dependencies
- AsyncObjects2.1.0
- PotentCodables3.2.0
- FriendlyId1.3.1
- IOStreams1.4.2
- SwiftDocCPlugin1.3.0
Dependencies
{ "url": "/usr/src/package", "name": "Kubrick", "path": "/usr/src/package", "version": "unspecified", "identity": "package", "dependencies": [ { "url": "https://github.com/SwiftyLab/AsyncObjects.git", "name": "AsyncObjects", "path": "/usr/src/package/.build/checkouts/AsyncObjects", "version": "2.1.0", "identity": "asyncobjects", "dependencies": [ { "url": "https://github.com/apple/swift-collections.git", "name": "swift-collections", "path": "/usr/src/package/.build/checkouts/swift-collections", "version": "1.0.5", "identity": "swift-collections", "dependencies": [] } ] }, { "url": "https://github.com/outfoxx/potentcodables.git", "name": "PotentCodables", "path": "/usr/src/package/.build/checkouts/potentcodables", "version": "3.2.0", "identity": "potentcodables", "dependencies": [ { "url": "https://github.com/attaswift/BigInt.git", "name": "BigInt", "path": "/usr/src/package/.build/checkouts/BigInt", "version": "5.3.0", "identity": "bigint", "dependencies": [] }, { "url": "https://github.com/SusanDoggie/Float16.git", "name": "Float16", "path": "/usr/src/package/.build/checkouts/Float16", "version": "1.1.1", "identity": "float16", "dependencies": [ { "url": "https://github.com/apple/swift-numerics", "name": "swift-numerics", "path": "/usr/src/package/.build/checkouts/swift-numerics", "version": "1.0.2", "identity": "swift-numerics", "dependencies": [] } ] }, { "url": "https://github.com/apple/swift-collections.git", "name": "swift-collections", "path": "/usr/src/package/.build/checkouts/swift-collections", "version": "1.0.5", "identity": "swift-collections", "dependencies": [] } ] }, { "url": "https://github.com/kdubb/SwiftFriendlyId.git", "name": "FriendlyId", "path": "/usr/src/package/.build/checkouts/SwiftFriendlyId", "version": "1.3.1", "identity": "swiftfriendlyid", "dependencies": [ { "url": "https://github.com/apple/swift-argument-parser", "name": "swift-argument-parser", "path": "/usr/src/package/.build/checkouts/swift-argument-parser", "version": "0.5.0", "identity": "swift-argument-parser", "dependencies": [] }, { "url": "https://github.com/attaswift/BigInt.git", "name": "BigInt", "path": "/usr/src/package/.build/checkouts/BigInt", "version": "5.3.0", "identity": "bigint", "dependencies": [] } ] }, { "url": "https://github.com/outfoxx/IOStreams.git", "name": "IOStreams", "path": "/usr/src/package/.build/checkouts/IOStreams", "version": "1.4.2", "identity": "iostreams", "dependencies": [ { "url": "https://github.com/apple/swift-atomics.git", "name": "swift-atomics", "path": "/usr/src/package/.build/checkouts/swift-atomics", "version": "1.1.0", "identity": "swift-atomics", "dependencies": [] } ] }, { "url": "https://github.com/apple/swift-docc-plugin", "name": "SwiftDocCPlugin", "path": "/usr/src/package/.build/checkouts/swift-docc-plugin", "version": "1.3.0", "identity": "swift-docc-plugin", "dependencies": [ { "url": "https://github.com/apple/swift-docc-symbolkit", "name": "SymbolKit", "path": "/usr/src/package/.build/checkouts/swift-docc-symbolkit", "version": "1.0.0", "identity": "swift-docc-symbolkit", "dependencies": [] } ] } ] }