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
Check Cross-Plugin Imports / check (push) Has been cancelled
This commit is contained in:
@@ -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",
|
||||
|
||||
Reference in New Issue
Block a user