feat(J): Phase J Self-Improvement Plugin — controlled improvement loop
Check Cross-Plugin Imports / check (push) Has been cancelled
Check Cross-Plugin Imports / check (push) Has been cancelled
- New self_improvement plugin: models, services, routes, plugin - 4 SQLAlchemy models: ImprovementSignal, ImprovementPattern, ImprovementProposal, ImpactMeasurement - Migration 0132: 4 tables with RLS - Services: collect_signals, detect_patterns, create_proposal, evaluate_proposal, request_approval, activate_proposal, rollback_proposal, measure_impact - 11 API routes under /api/v1/improvement/ - Frontend: improvement.ts API client, ImprovementPanel.tsx in AISidebar proactive tab - 24/24 integration tests pass - Fix: __init__.py imports Plugin class for discover_builtins() (self_improvement + knowledge) - Fix: automation plugin register_plugin_contributions skips when no tenant exists
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
"""Self-improvement plugin — controlled improvement loop.
|
||||
|
||||
Builds on existing systems:
|
||||
- ai_proactive: ContextLog, ProactiveSuggestion (signals)
|
||||
- automation: AgentRun, AgentVersion (versioning + runs)
|
||||
- app.core.approval: ApprovalRequest (human approval)
|
||||
- app.ai.oversight: DecisionRecord (audit trail)
|
||||
- app.ai.llm_client: llm_complete (evaluation)
|
||||
- AuditLog, WorkflowInstance (usage data)
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
import logging
|
||||
|
||||
from app.plugins.base import BasePlugin
|
||||
from app.plugins.manifest import PluginManifest, PluginRouteDef
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class SelfImprovementPlugin(BasePlugin):
|
||||
manifest = PluginManifest(
|
||||
name="self_improvement",
|
||||
version="1.0.0",
|
||||
display_name="Self-Improvement",
|
||||
description="Controlled self-improvement loop: signals, patterns, proposals, evaluation, approval, activation, rollback, impact measurement.",
|
||||
dependencies=["permissions", "automation", "ai_proactive"],
|
||||
routes=[
|
||||
PluginRouteDef(
|
||||
path="/api/v1/improvement",
|
||||
module="app.plugins.builtins.self_improvement.routes",
|
||||
router_attr="router",
|
||||
),
|
||||
],
|
||||
permissions=["improvement:read", "improvement:write", "improvement:admin"],
|
||||
)
|
||||
|
||||
async def on_activate(self, db, service_container, event_bus) -> None:
|
||||
"""Register self-improvement hooks on activation."""
|
||||
await super().on_activate(db, service_container, event_bus)
|
||||
logger.info("Self-improvement plugin activated")
|
||||
|
||||
async def on_deactivate(self, db, service_container, event_bus) -> None:
|
||||
"""Clean up on deactivation."""
|
||||
await super().on_deactivate(db, service_container, event_bus)
|
||||
logger.info("Self-improvement plugin deactivated")
|
||||
Reference in New Issue
Block a user