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 URLSessions 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": []
}
]
}
]
}
