• Admin's avatar
    feat: add agent log viewer, SSE streaming, and L1 sandbox · 71aa8270
    Admin authored
    - services/agent_log_writer.py: Writes ExecutionRunLog rows via AIAgent
      callbacks (tool_start, tool_complete, step, status). Errors swallowed
      to never block agent execution.
    
    - services/workspace_manager.py: Creates isolated workspace directories
      per agent run (workspaces/{company_id}/{run_id}/) with src/,
      .agent_output/, README.md structure.
    
    - services/path_security.py: Path validation to prevent directory
      traversal, blocks dangerous paths (C:\Windows, /etc, .env, .git).
    
    - api/routes/run_logs.py: Added company-scoped runs_router with:
      GET /companies/{id}/runs/{runId} — run detail with all logs
      GET /companies/{id}/runs/{runId}/stream — SSE real-time log stream
    
    - api/routes/agents.py: run_agent_in_background now creates workspace,
      instantiates AgentLogWriter, passes callbacks to AIAgent, and cleans
      up workspace in finally block.
    
    - tests/test_agent_flow.py: Updated to mock WorkspaceManager and
      AgentLogWriter, relaxed AIAgent assertion to check core kwargs only.
    
    All 3 tests pass. Dashboard verified 0 JS errors via Playwright.
    71aa8270
Name
Last commit
Last update
..
access.py Loading commit data...
activity.py Loading commit data...
adapters.py Loading commit data...
agents.py Loading commit data...
approvals.py Loading commit data...
assets.py Loading commit data...
auth.py Loading commit data...
auth_accounts.py Loading commit data...
auth_sessions.py Loading commit data...
auth_verifications.py Loading commit data...
authz.py Loading commit data...
cli_auth.py Loading commit data...
companies.py Loading commit data...
company_logos.py Loading commit data...
company_memberships.py Loading commit data...
company_portability.py Loading commit data...
company_search.py Loading commit data...
company_skills.py Loading commit data...
costs.py Loading commit data...
dashboard.py Loading commit data...
document_revisions.py Loading commit data...
documents.py Loading commit data...
environment_config.py Loading commit data...
environment_probe.py Loading commit data...
environment_selection.py Loading commit data...
environments.py Loading commit data...
execution_workspaces.py Loading commit data...
feedback.py Loading commit data...
goals.py Loading commit data...
health.py Loading commit data...
heartbeat_run_events.py Loading commit data...
heartbeat_runs.py Loading commit data...
inbox_dismissals.py Loading commit data...
instance_database_backups.py Loading commit data...
instance_settings.py Loading commit data...
issue_attachments.py Loading commit data...
issue_comments.py Loading commit data...
issue_documents.py Loading commit data...
issue_labels.py Loading commit data...
issue_recovery.py Loading commit data...
issue_tree_control.py Loading commit data...
issues.py Loading commit data...
issues_checkout_wakeup.py Loading commit data...
llms.py Loading commit data...
memory.py Loading commit data...
org_chart_svg.py Loading commit data...
plugin_jobs.py Loading commit data...
plugin_ui_static.py Loading commit data...
plugins.py Loading commit data...
projects.py Loading commit data...
routines.py Loading commit data...
run_logs.py Loading commit data...
secrets.py Loading commit data...
sidebar_badges.py Loading commit data...
sidebar_preferences.py Loading commit data...
user_profiles.py Loading commit data...
workspace_command_authz.py Loading commit data...
workspace_runtime_service_authz.py Loading commit data...