Skip to content

Commit 0cb46db

Browse files
committed
feat: Introduce core system modules, eventing, observability, and middleware with comprehensive planning and tests.
1 parent 114b524 commit 0cb46db

75 files changed

Lines changed: 9914 additions & 1292 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CHANGELOG.md

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8-
## [0.10.0] - 2026-03-07
8+
## [0.11.0] - 2026-03-08
99

1010
### Added
1111

@@ -16,6 +16,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1616
- **`APCore.use_before()`** — Add before function middleware via the unified client.
1717
- **`APCore.use_after()`** — Add after function middleware via the unified client.
1818
- **`APCore.remove()`** — Remove middleware by identity via the unified client.
19+
- **`APCore.on()`** / **`APCore.off()`** — Event subscription management via the unified client.
20+
- **`APCore.disable()`** / **`APCore.enable()`** — Module toggle control via the unified client.
1921

2022
#### Global Entry Points (`apcore.*`)
2123
- **`apcore.stream()`** — Global convenience for streaming module calls.
@@ -26,11 +28,25 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
2628
- **`apcore.use_before()`** — Global convenience for adding before middleware.
2729
- **`apcore.use_after()`** — Global convenience for adding after middleware.
2830
- **`apcore.remove()`** — Global convenience for removing middleware.
31+
- **`apcore.on()`** / **`apcore.off()`** — Global convenience for event subscription.
32+
- **`apcore.disable()`** / **`apcore.enable()`** — Global convenience for module toggle.
33+
34+
#### Public API Exports
35+
- **`ModuleDisabledError`** — Error class for `MODULE_DISABLED` code, raised when a disabled module is called.
36+
- **`ReloadFailedError`** — Error class for `RELOAD_FAILED` code (retryable).
37+
- **`SchemaStrategy`** — Enum for schema resolution strategy (`yaml_first`, `native_first`, `yaml_only`).
38+
- **`ExportProfile`** — Enum for schema export profiles (`mcp`, `openai`, `anthropic`, `generic`).
39+
- **`EventEmitter`**, **`EventSubscriber`**, **`ApCoreEvent`** — Event system types now exported from top-level package.
2940

3041
#### Error Hierarchy
3142
- **`FeatureNotImplementedError`** — New error class for `GENERAL_NOT_IMPLEMENTED` code (renamed from `NotImplementedError` to avoid Python stdlib clash).
3243
- **`DependencyNotFoundError`** — New error class for `DEPENDENCY_NOT_FOUND` code.
3344

45+
### Fixed
46+
- README Access Control example now includes required `Executor` and `Registry` imports.
47+
- `pyproject.toml` repository/issues/changelog URLs now point to `apcore-python` (was incorrectly pointing to `apcore`).
48+
- CHANGELOG `[0.7.1]` compare link added (was missing from link references).
49+
3450
### Changed
3551
- APCore client and `apcore.*` global functions now provide full feature parity with `Executor`.
3652

@@ -417,7 +433,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
417433

418434
[0.10.0]: https://github.com/aipartnerup/apcore-python/compare/v0.9.0...v0.10.0
419435
[0.9.0]: https://github.com/aipartnerup/apcore-python/compare/v0.8.0...v0.9.0
420-
[0.8.0]: https://github.com/aipartnerup/apcore-python/compare/v0.7.0...v0.8.0
436+
[0.8.0]: https://github.com/aipartnerup/apcore-python/compare/v0.7.1...v0.8.0
437+
[0.7.1]: https://github.com/aipartnerup/apcore-python/compare/v0.7.0...v0.7.1
421438
[0.7.0]: https://github.com/aipartnerup/apcore-python/compare/v0.6.0...v0.7.0
422439
[0.6.0]: https://github.com/aipartnerup/apcore-python/compare/v0.5.0...v0.6.0
423440
[0.5.0]: https://github.com/aipartnerup/apcore-python/compare/v0.4.0...v0.5.0

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,8 +121,9 @@ client.use(TracingMiddleware())
121121
### Access control
122122

123123
```python
124-
from apcore import ACL, ACLRule
124+
from apcore import ACL, ACLRule, Executor, Registry
125125

126+
registry = Registry()
126127
acl = ACL(rules=[
127128
ACLRule(callers=["admin.*"], targets=["*"], effect="allow", description="Admins can call anything"),
128129
ACLRule(callers=["*"], targets=["admin.*"], effect="deny", description="Others cannot call admin modules"),

docs/apcore-unified-client/state.json

Lines changed: 0 additions & 58 deletions
This file was deleted.

0 commit comments

Comments
 (0)