blondie-types 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,32 @@
1
+ *$py.class
2
+ *.egg
3
+ *.egg-info/
4
+ *.log
5
+ *.py[cod]
6
+ .agent/secrets.env.yaml
7
+ .agent/llm.yaml
8
+ .agent/usage.yaml
9
+ .agent/.backlog-idempotency.json
10
+ .agent/.backlog.lock
11
+ .agent/backlog/
12
+ .agent/journal/webhook-dead-letter/
13
+ .coverage*
14
+ .eggs/
15
+ .mypy_cache/
16
+ .pytest_cache/
17
+ .ruff_cache/
18
+ .tox/
19
+ .venv/
20
+ __pycache__/
21
+ _import/
22
+ /_logs/
23
+ _tmp*
24
+ .tmp*
25
+ !/_tmp_pytest/.gitkeep
26
+ build/
27
+ dist/
28
+ env/
29
+ htmlcov/
30
+ log.*
31
+ secrets.env.yaml
32
+ venv/
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Ilya I
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,172 @@
1
+ Metadata-Version: 2.4
2
+ Name: blondie-types
3
+ Version: 0.1.0
4
+ Summary: Public SDK types for authoring Blondie plugins (backlog backends, CI providers, LLM tools).
5
+ Project-URL: Homepage, https://github.com/iva2k/blondie
6
+ Project-URL: Documentation, https://github.com/iva2k/blondie/blob/main/docs/PLUGINS.md
7
+ Project-URL: Repository, https://github.com/iva2k/blondie
8
+ Project-URL: Issues, https://github.com/iva2k/blondie/issues
9
+ Author-email: iva2k <iva2k@yahoo.com>
10
+ Maintainer-email: iva2k <iva2k@yahoo.com>
11
+ License: MIT License
12
+
13
+ Copyright (c) 2026 Ilya I
14
+
15
+ Permission is hereby granted, free of charge, to any person obtaining a copy
16
+ of this software and associated documentation files (the "Software"), to deal
17
+ in the Software without restriction, including without limitation the rights
18
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
19
+ copies of the Software, and to permit persons to whom the Software is
20
+ furnished to do so, subject to the following conditions:
21
+
22
+ The above copyright notice and this permission notice shall be included in all
23
+ copies or substantial portions of the Software.
24
+
25
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
26
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
27
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
28
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
29
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
30
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
31
+ SOFTWARE.
32
+ License-File: LICENSE
33
+ Keywords: agent,blondie,llm,plugins,sdk
34
+ Classifier: Development Status :: 3 - Alpha
35
+ Classifier: Intended Audience :: Developers
36
+ Classifier: License :: OSI Approved :: MIT License
37
+ Classifier: Operating System :: OS Independent
38
+ Classifier: Programming Language :: Python :: 3
39
+ Classifier: Programming Language :: Python :: 3 :: Only
40
+ Classifier: Programming Language :: Python :: 3.10
41
+ Classifier: Programming Language :: Python :: 3.11
42
+ Classifier: Programming Language :: Python :: 3.12
43
+ Classifier: Programming Language :: Python :: 3.13
44
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
45
+ Classifier: Typing :: Typed
46
+ Requires-Python: >=3.10
47
+ Requires-Dist: pydantic>=2.8.0
48
+ Requires-Dist: typing-extensions>=4.10.0
49
+ Provides-Extra: dev
50
+ Requires-Dist: mypy>=1.11; extra == 'dev'
51
+ Requires-Dist: pytest>=8.0; extra == 'dev'
52
+ Requires-Dist: ruff>=0.6; extra == 'dev'
53
+ Description-Content-Type: text/markdown
54
+
55
+ # blondie-types
56
+
57
+ Public SDK types for authoring [Blondie](https://github.com/iva2k/blondie)
58
+ plugins. Plugins import every Blondie type they need from this single
59
+ package.
60
+
61
+ * **Distribution name** (PyPI): `blondie-types`
62
+ * **Import name**: `blondie`
63
+ * **Contents**: ABCs, dataclasses, enums, error classes, capability
64
+ constants, and API protocols. No runtime code.
65
+ * **Dependencies**: stdlib + `pydantic` + `typing_extensions`.
66
+
67
+ The Blondie runtime depends on `blondie-types`; `blondie-types` does not
68
+ depend on the runtime. Plugins develop, test, and ship outside the
69
+ Blondie repo with `blondie-types` as their only Blondie-side dependency.
70
+
71
+ ## Quick start
72
+
73
+ ```bash
74
+ pip install blondie-types
75
+ ```
76
+
77
+ ```python
78
+ from blondie import (
79
+ BacklogBackend,
80
+ BackendProvider,
81
+ Plugin,
82
+ PluginTool,
83
+ Task,
84
+ TaskStatus,
85
+ ToolProvider,
86
+ )
87
+
88
+
89
+ class MyTool(PluginTool):
90
+ name = "my_tool"
91
+ description = "A tiny example."
92
+
93
+ async def execute(self, **kwargs) -> str:
94
+ self.api.journal.info("hello from my_tool")
95
+ return "ok"
96
+
97
+
98
+ class MyPlugin(Plugin):
99
+ def provides(self):
100
+ return [ToolProvider(MyTool)]
101
+ ```
102
+
103
+ ## Top-level exports
104
+
105
+ | Symbol | Kind | Module |
106
+ |:----------------------------|:----------|:-------------------|
107
+ | `Plugin` | ABC | `blondie.plugins` |
108
+ | `Provider` | ABC | `blondie.plugins` |
109
+ | `BackendProvider` | dataclass | `blondie.plugins` |
110
+ | `CIProviderProvider` | dataclass | `blondie.plugins` |
111
+ | `ToolProvider` | dataclass | `blondie.plugins` |
112
+ | `RegistrationContext` | dataclass | `blondie.plugins` |
113
+ | `PluginInfo` | dataclass | `blondie.plugins` |
114
+ | `PluginEvent` | dataclass | `blondie.plugins` |
115
+ | `PLUGIN_API_VERSION` | int | `blondie.plugins` |
116
+ | `PluginTool` | ABC | `blondie.tools` |
117
+ | `ToolAPI` | Protocol | `blondie.tools` |
118
+ | `BacklogBackend` | ABC | `blondie.backlog` |
119
+ | `BackendAPI` | Protocol | `blondie.backlog` |
120
+ | `Task`, `Sprint`, `Comment` | dataclass | `blondie.backlog` |
121
+ | `Priority`, `TaskStatus` | enum | `blondie.backlog` |
122
+ | `TaskFormatter` | ABC | `blondie.backlog` |
123
+ | `CredentialSpec` | dataclass | `blondie.backlog` |
124
+ | `BackendError` (+ family) | exception | `blondie.backlog` |
125
+ | `CAP_*` | constants | `blondie.backlog` |
126
+ | `CIProvider` | ABC | `blondie.ci` |
127
+ | `CIAPI` | Protocol | `blondie.ci` |
128
+ | `Journal` | Protocol | `blondie.journal` |
129
+
130
+ The flat `from blondie import X` form is preferred; per-area submodules
131
+ are also exposed for selective import.
132
+
133
+ ## Versioning
134
+
135
+ The SDK follows [Semantic Versioning](https://semver.org/). Two version
136
+ numbers travel together:
137
+
138
+ * The **distribution version** in `pyproject.toml` (visible as
139
+ `blondie.__version__`, sourced from package metadata) — bumped on every
140
+ release.
141
+ * The **plugin contract version** `blondie.PLUGIN_API_VERSION` — bumped
142
+ on every breaking change to the public surface re-exported from
143
+ `blondie`.
144
+
145
+ Release notes live in [CHANGELOG.md](CHANGELOG.md) (Keep-a-Changelog
146
+ format). The release flow is automated:
147
+
148
+ ```bash
149
+ # 1. Land your changes; describe them under '## [Unreleased]' in CHANGELOG.md.
150
+ # 2. From the repo root, run one of:
151
+ poe bump-types --patch # bug fixes
152
+ poe bump-types --minor # additive change
153
+ poe bump-types --major # breaking change (also bump PLUGIN_API_VERSION)
154
+ poe bump-types --to 1.2.3 # explicit target
155
+
156
+ # 3. The script edits pyproject.toml and CHANGELOG.md. Review:
157
+ git diff packages/blondie-types/
158
+
159
+ # 4. Commit, tag, push:
160
+ git commit -am "[#NNN] blondie-types vX.Y.Z"
161
+ git tag blondie-types-vX.Y.Z
162
+ git push && git push origin blondie-types-vX.Y.Z
163
+ ```
164
+
165
+ The tag triggers `.github/workflows/blondie-types-publish.yml`, which
166
+ publishes to PyPI via OIDC trusted publishing and creates a matching
167
+ GitHub Release with the CHANGELOG section as release notes and the
168
+ sdist + wheel attached as assets.
169
+
170
+ ## License
171
+
172
+ MIT
@@ -0,0 +1,118 @@
1
+ # blondie-types
2
+
3
+ Public SDK types for authoring [Blondie](https://github.com/iva2k/blondie)
4
+ plugins. Plugins import every Blondie type they need from this single
5
+ package.
6
+
7
+ * **Distribution name** (PyPI): `blondie-types`
8
+ * **Import name**: `blondie`
9
+ * **Contents**: ABCs, dataclasses, enums, error classes, capability
10
+ constants, and API protocols. No runtime code.
11
+ * **Dependencies**: stdlib + `pydantic` + `typing_extensions`.
12
+
13
+ The Blondie runtime depends on `blondie-types`; `blondie-types` does not
14
+ depend on the runtime. Plugins develop, test, and ship outside the
15
+ Blondie repo with `blondie-types` as their only Blondie-side dependency.
16
+
17
+ ## Quick start
18
+
19
+ ```bash
20
+ pip install blondie-types
21
+ ```
22
+
23
+ ```python
24
+ from blondie import (
25
+ BacklogBackend,
26
+ BackendProvider,
27
+ Plugin,
28
+ PluginTool,
29
+ Task,
30
+ TaskStatus,
31
+ ToolProvider,
32
+ )
33
+
34
+
35
+ class MyTool(PluginTool):
36
+ name = "my_tool"
37
+ description = "A tiny example."
38
+
39
+ async def execute(self, **kwargs) -> str:
40
+ self.api.journal.info("hello from my_tool")
41
+ return "ok"
42
+
43
+
44
+ class MyPlugin(Plugin):
45
+ def provides(self):
46
+ return [ToolProvider(MyTool)]
47
+ ```
48
+
49
+ ## Top-level exports
50
+
51
+ | Symbol | Kind | Module |
52
+ |:----------------------------|:----------|:-------------------|
53
+ | `Plugin` | ABC | `blondie.plugins` |
54
+ | `Provider` | ABC | `blondie.plugins` |
55
+ | `BackendProvider` | dataclass | `blondie.plugins` |
56
+ | `CIProviderProvider` | dataclass | `blondie.plugins` |
57
+ | `ToolProvider` | dataclass | `blondie.plugins` |
58
+ | `RegistrationContext` | dataclass | `blondie.plugins` |
59
+ | `PluginInfo` | dataclass | `blondie.plugins` |
60
+ | `PluginEvent` | dataclass | `blondie.plugins` |
61
+ | `PLUGIN_API_VERSION` | int | `blondie.plugins` |
62
+ | `PluginTool` | ABC | `blondie.tools` |
63
+ | `ToolAPI` | Protocol | `blondie.tools` |
64
+ | `BacklogBackend` | ABC | `blondie.backlog` |
65
+ | `BackendAPI` | Protocol | `blondie.backlog` |
66
+ | `Task`, `Sprint`, `Comment` | dataclass | `blondie.backlog` |
67
+ | `Priority`, `TaskStatus` | enum | `blondie.backlog` |
68
+ | `TaskFormatter` | ABC | `blondie.backlog` |
69
+ | `CredentialSpec` | dataclass | `blondie.backlog` |
70
+ | `BackendError` (+ family) | exception | `blondie.backlog` |
71
+ | `CAP_*` | constants | `blondie.backlog` |
72
+ | `CIProvider` | ABC | `blondie.ci` |
73
+ | `CIAPI` | Protocol | `blondie.ci` |
74
+ | `Journal` | Protocol | `blondie.journal` |
75
+
76
+ The flat `from blondie import X` form is preferred; per-area submodules
77
+ are also exposed for selective import.
78
+
79
+ ## Versioning
80
+
81
+ The SDK follows [Semantic Versioning](https://semver.org/). Two version
82
+ numbers travel together:
83
+
84
+ * The **distribution version** in `pyproject.toml` (visible as
85
+ `blondie.__version__`, sourced from package metadata) — bumped on every
86
+ release.
87
+ * The **plugin contract version** `blondie.PLUGIN_API_VERSION` — bumped
88
+ on every breaking change to the public surface re-exported from
89
+ `blondie`.
90
+
91
+ Release notes live in [CHANGELOG.md](CHANGELOG.md) (Keep-a-Changelog
92
+ format). The release flow is automated:
93
+
94
+ ```bash
95
+ # 1. Land your changes; describe them under '## [Unreleased]' in CHANGELOG.md.
96
+ # 2. From the repo root, run one of:
97
+ poe bump-types --patch # bug fixes
98
+ poe bump-types --minor # additive change
99
+ poe bump-types --major # breaking change (also bump PLUGIN_API_VERSION)
100
+ poe bump-types --to 1.2.3 # explicit target
101
+
102
+ # 3. The script edits pyproject.toml and CHANGELOG.md. Review:
103
+ git diff packages/blondie-types/
104
+
105
+ # 4. Commit, tag, push:
106
+ git commit -am "[#NNN] blondie-types vX.Y.Z"
107
+ git tag blondie-types-vX.Y.Z
108
+ git push && git push origin blondie-types-vX.Y.Z
109
+ ```
110
+
111
+ The tag triggers `.github/workflows/blondie-types-publish.yml`, which
112
+ publishes to PyPI via OIDC trusted publishing and creates a matching
113
+ GitHub Release with the CHANGELOG section as release notes and the
114
+ sdist + wheel attached as assets.
115
+
116
+ ## License
117
+
118
+ MIT
@@ -0,0 +1,60 @@
1
+ [build-system]
2
+ requires = ["hatchling>=1.21"]
3
+ build-backend = "hatchling.build"
4
+
5
+ [project]
6
+ name = "blondie-types"
7
+ version = "0.1.0"
8
+ description = "Public SDK types for authoring Blondie plugins (backlog backends, CI providers, LLM tools)."
9
+ readme = "README.md"
10
+ license = { file = "LICENSE" }
11
+ requires-python = ">=3.10"
12
+ authors = [
13
+ { name = "iva2k", email = "iva2k@yahoo.com" },
14
+ ]
15
+ maintainers = [
16
+ { name = "iva2k", email = "iva2k@yahoo.com" },
17
+ ]
18
+ keywords = ["blondie", "plugins", "sdk", "agent", "llm"]
19
+ classifiers = [
20
+ "Development Status :: 3 - Alpha",
21
+ "Intended Audience :: Developers",
22
+ "License :: OSI Approved :: MIT License",
23
+ "Operating System :: OS Independent",
24
+ "Programming Language :: Python :: 3",
25
+ "Programming Language :: Python :: 3 :: Only",
26
+ "Programming Language :: Python :: 3.10",
27
+ "Programming Language :: Python :: 3.11",
28
+ "Programming Language :: Python :: 3.12",
29
+ "Programming Language :: Python :: 3.13",
30
+ "Topic :: Software Development :: Libraries :: Python Modules",
31
+ "Typing :: Typed",
32
+ ]
33
+ dependencies = [
34
+ "pydantic>=2.8.0",
35
+ "typing_extensions>=4.10.0",
36
+ ]
37
+
38
+ [project.optional-dependencies]
39
+ dev = [
40
+ "pytest>=8.0",
41
+ "mypy>=1.11",
42
+ "ruff>=0.6",
43
+ ]
44
+
45
+ [project.urls]
46
+ Homepage = "https://github.com/iva2k/blondie"
47
+ Documentation = "https://github.com/iva2k/blondie/blob/main/docs/PLUGINS.md"
48
+ Repository = "https://github.com/iva2k/blondie"
49
+ Issues = "https://github.com/iva2k/blondie/issues"
50
+
51
+ [tool.hatch.build.targets.wheel]
52
+ packages = ["src/blondie"]
53
+
54
+ [tool.hatch.build.targets.sdist]
55
+ include = [
56
+ "src/blondie",
57
+ "README.md",
58
+ "LICENSE",
59
+ "pyproject.toml",
60
+ ]
@@ -0,0 +1,211 @@
1
+ """Public SDK for authoring Blondie plugins.
2
+
3
+ Plugins import every Blondie type they need from this single package.
4
+ The flat ``from blondie import X`` form is preferred; per-area
5
+ submodules (``blondie.plugins``, ``blondie.tools``, ``blondie.backlog``,
6
+ ``blondie.ci``, ``blondie.journal``, ``blondie.testing``) are also
7
+ exposed for selective import.
8
+
9
+ Distribution name on PyPI: ``blondie-types``. Import name: ``blondie``.
10
+ """
11
+
12
+ from __future__ import annotations
13
+
14
+ from importlib.metadata import PackageNotFoundError
15
+ from importlib.metadata import version as _pkg_version
16
+
17
+ from .backlog import (
18
+ BACKLOG_ABC_VERSION,
19
+ CAP_ADVISORY_LOCK,
20
+ CAP_BULK_UPDATE,
21
+ CAP_CLAIM_STEAL,
22
+ CAP_DISCUSSION,
23
+ CAP_DISTILLATION,
24
+ CAP_EXPORT_STREAMING,
25
+ CAP_GET_MANY,
26
+ CAP_HISTORY,
27
+ CAP_NATIVE_TIMESTAMPS,
28
+ CAP_WEBHOOKS,
29
+ CORE_CAPABILITIES,
30
+ BackendAPI,
31
+ BackendError,
32
+ BacklogBackend,
33
+ BacklogError,
34
+ BacklogHealth,
35
+ BacklogLockedError,
36
+ BacklogShutdownError,
37
+ BuilderAlreadyCommittedError,
38
+ Change,
39
+ ChangeAction,
40
+ ChangeEvent,
41
+ Claim,
42
+ ClaimantInfo,
43
+ ClaimConflictError,
44
+ ClaimResult,
45
+ Comment,
46
+ CredentialField,
47
+ CredentialSpec,
48
+ CredentialsProxy,
49
+ CredentialValidationError,
50
+ CyclicDependencyError,
51
+ DiscussionSummary,
52
+ Distillation,
53
+ DuplicateTaskError,
54
+ EncodingError,
55
+ ExportBundle,
56
+ ExportSchemaError,
57
+ ExportTooLargeError,
58
+ GitHelper,
59
+ HealthState,
60
+ HeartbeatResult,
61
+ HistoryHelper,
62
+ HttpHelper,
63
+ IdempotencyConflictError,
64
+ IdempotencyRecord,
65
+ InvalidPaginationCursorError,
66
+ PagedResult,
67
+ PermissionDeniedError,
68
+ Priority,
69
+ PromptStyle,
70
+ RateLimiter,
71
+ RateLimitExhaustedError,
72
+ RateLimitPolicy,
73
+ Release,
74
+ Sprint,
75
+ StaleSnapshotError,
76
+ Task,
77
+ TaskFormatter,
78
+ TaskNotFoundError,
79
+ TaskPreemptedError,
80
+ TaskStatus,
81
+ WebhookVerificationError,
82
+ )
83
+ from .ci import CIAPI, SUPPORTED_STRATEGIES, CIProvider
84
+ from .journal import Journal
85
+ from .plugins import (
86
+ PLUGIN_API_VERSION,
87
+ BackendProvider,
88
+ CIProviderProvider,
89
+ Plugin,
90
+ PluginEvent,
91
+ PluginEventKind,
92
+ PluginInfo,
93
+ PluginStatus,
94
+ Provider,
95
+ RegistrationContext,
96
+ ToolProvider,
97
+ )
98
+ from .tools import (
99
+ Budget,
100
+ Executor,
101
+ GitCLI,
102
+ Memory,
103
+ PluginTool,
104
+ Progress,
105
+ ToolAPI,
106
+ Tracer,
107
+ )
108
+
109
+ try:
110
+ __version__ = _pkg_version("blondie-types")
111
+ except PackageNotFoundError:
112
+ __version__ = "0.0.0+local"
113
+
114
+ __all__ = [
115
+ # Versioning
116
+ "BACKLOG_ABC_VERSION",
117
+ "PLUGIN_API_VERSION",
118
+ "__version__",
119
+ # Plugin entry-point
120
+ "Plugin",
121
+ "Provider",
122
+ "BackendProvider",
123
+ "CIProviderProvider",
124
+ "ToolProvider",
125
+ "RegistrationContext",
126
+ "PluginInfo",
127
+ "PluginEvent",
128
+ "PluginEventKind",
129
+ "PluginStatus",
130
+ # Tools
131
+ "PluginTool",
132
+ "ToolAPI",
133
+ "Executor",
134
+ "GitCLI",
135
+ "Progress",
136
+ "Memory",
137
+ "Tracer",
138
+ "Budget",
139
+ # Backlog domain
140
+ "BacklogBackend",
141
+ "BackendAPI",
142
+ "Task",
143
+ "Sprint",
144
+ "Release",
145
+ "Comment",
146
+ "Distillation",
147
+ "DiscussionSummary",
148
+ "Claim",
149
+ "ClaimantInfo",
150
+ "ClaimResult",
151
+ "HeartbeatResult",
152
+ "Change",
153
+ "ChangeEvent",
154
+ "ChangeAction",
155
+ "ExportBundle",
156
+ "BacklogHealth",
157
+ "IdempotencyRecord",
158
+ "PagedResult",
159
+ "Priority",
160
+ "TaskStatus",
161
+ "HealthState",
162
+ "PromptStyle",
163
+ "TaskFormatter",
164
+ "CredentialField",
165
+ "CredentialSpec",
166
+ "CredentialsProxy",
167
+ "RateLimitPolicy",
168
+ "RateLimiter",
169
+ "HistoryHelper",
170
+ "HttpHelper",
171
+ "GitHelper",
172
+ # Capability constants
173
+ "CAP_ADVISORY_LOCK",
174
+ "CAP_BULK_UPDATE",
175
+ "CAP_CLAIM_STEAL",
176
+ "CAP_DISCUSSION",
177
+ "CAP_DISTILLATION",
178
+ "CAP_EXPORT_STREAMING",
179
+ "CAP_GET_MANY",
180
+ "CAP_HISTORY",
181
+ "CAP_NATIVE_TIMESTAMPS",
182
+ "CAP_WEBHOOKS",
183
+ "CORE_CAPABILITIES",
184
+ # Backlog errors
185
+ "BacklogError",
186
+ "BacklogLockedError",
187
+ "BacklogShutdownError",
188
+ "BackendError",
189
+ "BuilderAlreadyCommittedError",
190
+ "ClaimConflictError",
191
+ "CredentialValidationError",
192
+ "CyclicDependencyError",
193
+ "DuplicateTaskError",
194
+ "EncodingError",
195
+ "ExportSchemaError",
196
+ "ExportTooLargeError",
197
+ "IdempotencyConflictError",
198
+ "InvalidPaginationCursorError",
199
+ "PermissionDeniedError",
200
+ "RateLimitExhaustedError",
201
+ "StaleSnapshotError",
202
+ "TaskNotFoundError",
203
+ "TaskPreemptedError",
204
+ "WebhookVerificationError",
205
+ # CI
206
+ "CIAPI",
207
+ "CIProvider",
208
+ "SUPPORTED_STRATEGIES",
209
+ # Journal
210
+ "Journal",
211
+ ]