• Admin's avatar
    feat: platform generalization — Company Blueprint system (Paperclip OS) · 406a39cf
    Admin authored
    Transforms Canifa-specific codebase into a generic AI Company platform
    that can instantiate any business type from a YAML Company Blueprint.
    
    Core additions:
    - backend/schemas/blueprint.py: CompanyBlueprint, BlueprintRole,
      BlueprintPipelineNode, BlueprintSummary Pydantic models with
      reports_to cross-validation via @model_validator(mode='after')
    - backend/services/blueprint_service.py: load/list/validate blueprints,
      deploy_company_from_blueprint() with 2-pass agent seeding for FK safety
    - backend/blueprints/: 4 YAML blueprints (fashion-retail, software-studio,
      ecommerce-brand, marketing-agency) with roles, pipeline DAGs, nocobase_collections
    - backend/tests/test_blueprint_e2e.py: 5 E2E tests — all pass
    
    API changes:
    - GET /companies/blueprints → List[BlueprintSummary] (with role_count)
    - GET /companies/blueprints/{name} → full blueprint detail
    - POST /companies/from-blueprint → deploy company from blueprint
    - POST /pipelines/run accepts blueprint_id to drive orchestrator DAG
    
    Orchestrator:
    - ProjectOrchestrator now accepts pipeline_spec: list[dict] | None
    - topological_sort_stages() (Kahn's BFS) derives parallel stages from blueprint DAG
    - Falls back to PIPELINE_STAGES if no spec provided
    
    De-branded:
    - Removed all "Canifa" strings from models/services/api/tasks source files
    - run_logs.py demo data → generic "Demo Brand/Server/Landing Page"
    - agents.py demo HTML → "Demo Company"
    - seed_db.py → uses deploy_company_from_blueprint("fashion-retail")
    
    NocoBase:
    - NocoBaseConnector: params-based init + from_company() classmethod
    - company_secrets: UniqueConstraint('company_id', 'key') instead of global unique
    
    Frontend:
    - OnboardingWizard: blueprint picker with org-chart preview + DAG layer render
    - blueprints.ts API client
    - Companies.tsx: blueprint badge on company cards
    Co-Authored-By: 's avatarClaude Opus 4.8 <noreply@anthropic.com>
    406a39cf
Name
Last commit
Last update
..
__init__.py Loading commit data...
activity.py Loading commit data...
adapter.py Loading commit data...
agent.py Loading commit data...
approval.py Loading commit data...
asset.py Loading commit data...
auth.py Loading commit data...
auth_account.py Loading commit data...
auth_session.py Loading commit data...
blueprint.py Loading commit data...
common.py Loading commit data...
company.py Loading commit data...
company_logo.py Loading commit data...
company_membership.py Loading commit data...
company_secret.py Loading commit data...
company_skill.py Loading commit data...
cost.py Loading commit data...
document.py Loading commit data...
document_revision.py Loading commit data...
environment.py Loading commit data...
execution_run_log.py Loading commit data...
execution_workspace.py Loading commit data...
feedback.py Loading commit data...
goal.py Loading commit data...
heartbeat_run_event.py Loading commit data...
inbox_dismissal.py Loading commit data...
instance_setting.py Loading commit data...
issue.py Loading commit data...
issue_attachment.py Loading commit data...
issue_comment.py Loading commit data...
issue_document.py Loading commit data...
issue_label.py Loading commit data...
issue_label_assignment.py Loading commit data...
issue_recovery_action.py Loading commit data...
memory.py Loading commit data...
plugin.py Loading commit data...
plugin_config.py Loading commit data...
plugin_job.py Loading commit data...
project.py Loading commit data...
routine.py Loading commit data...
sidebar_preference.py Loading commit data...
vote.py Loading commit data...