mirror of
https://github.com/logos-co/logos-capability-module.git
synced 2026-08-31 04:31:15 +00:00
capability_module's requestModule was a Q_INVOKABLE that blocked on a nested outbound IPC inside the QtRO source read loop; when the caller's connection dropped during that nested pump, the source-side reply crashed (SIGSEGV in CodecBase::send on a dangling connection). Rewrite it as a Qt-free universal impl (CapabilityModuleImpl on LogosTokenManagerContext) with interface:"universal" + concurrency:"multi", so each call runs on a worker off the read stack and replies via a deferred completion — eliminating the re-entrancy. The wire API is unchanged (requestModule/registerRestriction), so it stays a drop-in broker. The token store reads and arbitrary-module inform now go through the LogosTokenManagerContext bridge (host-backed). m_restrictions is guarded by a std::mutex (multi dispatch runs handlers concurrently) and the token is minted from std entropy instead of QUuid. Unit tests reworked to drive the impl directly with injected bridge stubs. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
34 lines
712 B
JSON
34 lines
712 B
JSON
{
|
|
"name": "capability_module",
|
|
"display_name": "Capabilities",
|
|
"version": "1.0.0",
|
|
"description": "Coordinates permissions between modules",
|
|
"author": "Logos Core Team",
|
|
"type": "core",
|
|
"interface": "universal",
|
|
"concurrency": "multi",
|
|
"category": "security",
|
|
"main": "capability_module_plugin",
|
|
"codegen": {
|
|
"impl_class": "CapabilityModuleImpl",
|
|
"impl_header": "capability_module_impl.h"
|
|
},
|
|
"dependencies": [],
|
|
"capabilities": [
|
|
"module_coordination",
|
|
"permission_management"
|
|
],
|
|
|
|
"nix": {
|
|
"packages": {
|
|
"build": [],
|
|
"runtime": []
|
|
},
|
|
"external_libraries": [],
|
|
"cmake": {
|
|
"find_packages": [],
|
|
"extra_sources": []
|
|
}
|
|
}
|
|
}
|