fix(arch-a2): deactivation cleanup - container services, search provider, hook deregistration, notification sync, task state, activation order
Check Cross-Plugin Imports / check (push) Has been cancelled

This commit is contained in:
Agent Zero
2026-08-23 19:24:12 +02:00
parent 73d2e109cd
commit c21634b323
10 changed files with 154 additions and 29 deletions
@@ -579,29 +579,30 @@ async def request_approval(
proposal.approval_request_id = req.id
await db.flush()
# Post to Communication via KommunikationContract
# Post to Communication via KommunikationContract (ARCH-013: contract
# only — no direct plugin imports; skip cleanly when contract is absent)
try:
from app.plugins.builtins.contracts import get_contract
# Find or create a system conversation for improvement proposals
_komm = get_contract("kommunikation")
if not _komm or not hasattr(_komm, "create_plugin_room"):
from app.plugins.builtins.kommunikation.services import create_plugin_room
room = await create_plugin_room(
db=db, tenant_id=tenant_id, user_id=requested_by,
plugin_name="self_improvement", title="Improvement Proposals",
participant_type="system",
)
conversation_id = room.get("conversation_id") if isinstance(room, dict) else None
if not conversation_id and hasattr(room, "id"):
conversation_id = room.id
if conversation_id:
await KommunikationContract.send_message(
db=db,
tenant_id=tenant_id,
conversation_id=conversation_id,
sender_id=requested_by,
sender_type="system",
content=f"Improvement Proposal: {proposal.title}",
logger.warning("kommunikation contract unavailable - skipping proposal notification")
else:
room = await _komm.create_plugin_room(
db=db, tenant_id=tenant_id, user_id=requested_by,
plugin_name="self_improvement", title="Improvement Proposals",
participant_type="system",
)
conversation_id = room.get("conversation_id") if isinstance(room, dict) else None
if not conversation_id and hasattr(room, "id"):
conversation_id = room.id
if conversation_id:
await _komm.send_message(
db=db,
tenant_id=tenant_id,
conversation_id=conversation_id,
sender_id=requested_by,
sender_type="system",
content=f"Improvement Proposal: {proposal.title}",
blocks=[
{
"type": "action_card",