agentops-cockpit 0.2.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- agentops_cockpit-0.2.2/.gitignore +46 -0
- agentops_cockpit-0.2.2/A2A_GUIDE.md +39 -0
- agentops_cockpit-0.2.2/BE_INTEGRATION_GUIDE.md +35 -0
- agentops_cockpit-0.2.2/DEPLOYMENT.md +84 -0
- agentops_cockpit-0.2.2/Dockerfile +14 -0
- agentops_cockpit-0.2.2/LICENSE +21 -0
- agentops_cockpit-0.2.2/Makefile +100 -0
- agentops_cockpit-0.2.2/PKG-INFO +142 -0
- agentops_cockpit-0.2.2/README.md +125 -0
- agentops_cockpit-0.2.2/firebase.json +37 -0
- agentops_cockpit-0.2.2/index.html +15 -0
- agentops_cockpit-0.2.2/package.json +28 -0
- agentops_cockpit-0.2.2/public/A2A_GUIDE.md +60 -0
- agentops_cockpit-0.2.2/public/AGENT_OPS_STORY.md +38 -0
- agentops_cockpit-0.2.2/public/BE_INTEGRATION_GUIDE.md +94 -0
- agentops_cockpit-0.2.2/public/CLI_COMMANDS.md +65 -0
- agentops_cockpit-0.2.2/public/DEPLOYMENT.md +85 -0
- agentops_cockpit-0.2.2/public/DEVELOPMENT.md +55 -0
- agentops_cockpit-0.2.2/public/GEMINI.md +35 -0
- agentops_cockpit-0.2.2/public/GETTING_STARTED.md +39 -0
- agentops_cockpit-0.2.2/public/README.md +104 -0
- agentops_cockpit-0.2.2/public/cicd-workflow.png +0 -0
- agentops_cockpit-0.2.2/public/diagrams/agentic-stack.png +0 -0
- agentops_cockpit-0.2.2/public/diagrams/value-proposition.png +0 -0
- agentops_cockpit-0.2.2/public/hero.png +0 -0
- agentops_cockpit-0.2.2/pyproject.toml +51 -0
- agentops_cockpit-0.2.2/src/App.tsx +34 -0
- agentops_cockpit-0.2.2/src/a2ui/A2UIRenderer.tsx +37 -0
- agentops_cockpit-0.2.2/src/a2ui/components/index.tsx +63 -0
- agentops_cockpit-0.2.2/src/a2ui/components/lit-component-example.ts +48 -0
- agentops_cockpit-0.2.2/src/a2ui/types.ts +16 -0
- agentops_cockpit-0.2.2/src/agent_ops_cockpit/__init__.py +0 -0
- agentops_cockpit-0.2.2/src/agent_ops_cockpit/cli/__init__.py +0 -0
- agentops_cockpit-0.2.2/src/agent_ops_cockpit/cli/main.py +184 -0
- agentops_cockpit-0.2.2/src/backend/__init__.py +0 -0
- agentops_cockpit-0.2.2/src/backend/agent.py +87 -0
- agentops_cockpit-0.2.2/src/backend/cache/semantic_cache.py +59 -0
- agentops_cockpit-0.2.2/src/backend/cost_control.py +53 -0
- agentops_cockpit-0.2.2/src/backend/eval/__init__.py +1 -0
- agentops_cockpit-0.2.2/src/backend/eval/load_test.py +91 -0
- agentops_cockpit-0.2.2/src/backend/eval/quality_climber.py +129 -0
- agentops_cockpit-0.2.2/src/backend/eval/red_team.py +72 -0
- agentops_cockpit-0.2.2/src/backend/ops/__init__.py +1 -0
- agentops_cockpit-0.2.2/src/backend/ops/arch_review.py +100 -0
- agentops_cockpit-0.2.2/src/backend/ops/cost_optimizer.py +40 -0
- agentops_cockpit-0.2.2/src/backend/ops/evidence.py +25 -0
- agentops_cockpit-0.2.2/src/backend/ops/frameworks.py +407 -0
- agentops_cockpit-0.2.2/src/backend/ops/mcp_hub.py +35 -0
- agentops_cockpit-0.2.2/src/backend/ops/memory_optimizer.py +44 -0
- agentops_cockpit-0.2.2/src/backend/ops/orchestrator.py +113 -0
- agentops_cockpit-0.2.2/src/backend/ops/pii_scrubber.py +47 -0
- agentops_cockpit-0.2.2/src/backend/ops/reliability.py +49 -0
- agentops_cockpit-0.2.2/src/backend/ops/secret_scanner.py +75 -0
- agentops_cockpit-0.2.2/src/backend/ops/ui_auditor.py +120 -0
- agentops_cockpit-0.2.2/src/backend/optimizer.py +263 -0
- agentops_cockpit-0.2.2/src/backend/shadow/router.py +75 -0
- agentops_cockpit-0.2.2/src/backend/tests/test_agent.py +27 -0
- agentops_cockpit-0.2.2/src/backend/tests/test_arch_review.py +47 -0
- agentops_cockpit-0.2.2/src/backend/tests/test_frameworks.py +102 -0
- agentops_cockpit-0.2.2/src/backend/tests/test_optimizer.py +69 -0
- agentops_cockpit-0.2.2/src/backend/tests/test_quality_climber.py +20 -0
- agentops_cockpit-0.2.2/src/backend/tests/test_red_team.py +33 -0
- agentops_cockpit-0.2.2/src/backend/tests/test_secret_scanner.py +26 -0
- agentops_cockpit-0.2.2/src/components/FlightRecorder.tsx +231 -0
- agentops_cockpit-0.2.2/src/components/Home.tsx +866 -0
- agentops_cockpit-0.2.2/src/components/OpsDashboard.tsx +301 -0
- agentops_cockpit-0.2.2/src/components/Playground.tsx +267 -0
- agentops_cockpit-0.2.2/src/components/ThemeToggle.tsx +27 -0
- agentops_cockpit-0.2.2/src/docs/DocLayout.tsx +487 -0
- agentops_cockpit-0.2.2/src/docs/DocPage.tsx +68 -0
- agentops_cockpit-0.2.2/src/index.css +936 -0
- agentops_cockpit-0.2.2/src/knowledge/example_policy.txt +5 -0
- agentops_cockpit-0.2.2/src/main.tsx +13 -0
- agentops_cockpit-0.2.2/tsconfig.json +36 -0
- agentops_cockpit-0.2.2/vite.config.ts +9 -0
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Dependencies
|
|
2
|
+
node_modules/
|
|
3
|
+
.npm/
|
|
4
|
+
|
|
5
|
+
# Build outputs
|
|
6
|
+
dist/
|
|
7
|
+
build/
|
|
8
|
+
|
|
9
|
+
# IDE files
|
|
10
|
+
.vscode/
|
|
11
|
+
.idea/
|
|
12
|
+
*.swp
|
|
13
|
+
*.swo
|
|
14
|
+
|
|
15
|
+
# OS files
|
|
16
|
+
.DS_Store
|
|
17
|
+
Thumbs.db
|
|
18
|
+
|
|
19
|
+
# Environment variables
|
|
20
|
+
.env
|
|
21
|
+
.env.local
|
|
22
|
+
.env.development.local
|
|
23
|
+
.env.test.local
|
|
24
|
+
.env.production.local
|
|
25
|
+
|
|
26
|
+
# Logs
|
|
27
|
+
npm-debug.log*
|
|
28
|
+
yarn-debug.log*
|
|
29
|
+
yarn-error.log*
|
|
30
|
+
*.log
|
|
31
|
+
|
|
32
|
+
# Misc
|
|
33
|
+
.cache/
|
|
34
|
+
.adk/
|
|
35
|
+
staging/
|
|
36
|
+
deploy_stage/
|
|
37
|
+
.firebase/
|
|
38
|
+
|
|
39
|
+
# Python
|
|
40
|
+
__pycache__/
|
|
41
|
+
*.pyc
|
|
42
|
+
*.pyo
|
|
43
|
+
*.pyd
|
|
44
|
+
.pytest_cache/
|
|
45
|
+
.venv/
|
|
46
|
+
.python-version
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# π‘ A2A (Agent-to-Agent) & The Cockpit
|
|
2
|
+
|
|
3
|
+
The **Agent-to-Agent (A2A) Protocol** enables distributed agent architectures. In the **AgentOps Cockpit**, A2A is managed as a first-class orchestration pattern.
|
|
4
|
+
|
|
5
|
+
## π The Cockpit's Role in A2A
|
|
6
|
+
While A2A handles the communication, the Cockpit handles the **Intelligence of the Connection**:
|
|
7
|
+
1. **Auditing**: The `make audit` command detects "Chatty A2A" patterns where too many turns occur between agents, suggesting tool-offloading or prompt-collapsing.
|
|
8
|
+
2. **Security**: `make red-team` tests the trust boundaries between agents to prevent "Side-Channel Injections" (where a compromised agent hacks another agent).
|
|
9
|
+
3. **Caching**: The **Hive Mind Cache** can cache results of expensive A2A sub-tasks across your entire agent mesh.
|
|
10
|
+
|
|
11
|
+
## π οΈ Implementation
|
|
12
|
+
|
|
13
|
+
### 1. Exposing an Agent Service
|
|
14
|
+
Wrap your agent as an A2A service for other agents in the Cockpit to consume:
|
|
15
|
+
```python
|
|
16
|
+
from google.adk.a2a.utils.agent_to_a2a import to_a2a
|
|
17
|
+
from src.backend.agent import my_agent
|
|
18
|
+
|
|
19
|
+
# Standardizing the A2A port to 8001 (Engine is 8000)
|
|
20
|
+
a2a_app = to_a2a(my_agent, port=8001)
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### 2. Orchestration via MCP
|
|
24
|
+
The Cockpit uses the **Model Context Protocol (MCP)** to manage A2A connections:
|
|
25
|
+
- **Unified Tooling**: Remote agents appear as standard tools in `src/backend/ops/mcp_hub.py`.
|
|
26
|
+
- **Latency Tracking**: The Cockpit monitors the round-trip time between agent calls to ensure sub-second UI responsiveness.
|
|
27
|
+
|
|
28
|
+
## π A2UI + A2A Flow
|
|
29
|
+
When Agent A calls Agent B, the A2UI content from Agent B is automatically passed through to the final surface if the **Cockpit Middleware** is enabled:
|
|
30
|
+
```python
|
|
31
|
+
# In agent.py
|
|
32
|
+
shadow_router = ShadowRouter(v1_func=agent_v1, v2_func=agent_v2)
|
|
33
|
+
# Handles A2UI + A2A metadata automatically
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## ποΈ Enterprise Mesh
|
|
37
|
+
In large-scale deployments, the Cockpit allows you to:
|
|
38
|
+
- **A/B Test Agents**: Split traffic between different expert agents using the Shadow Router.
|
|
39
|
+
- **Cost Guarding**: Set per-agent budgets to prevent one agent in the mesh from exhausting your quota.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# βοΈ Engine Integration: The Day 0 Brain
|
|
2
|
+
|
|
3
|
+
The **Engine** is the reasoning core of your Agentic Stack. We use **FastAPI** and Googleβs **Agent Development Kit (ADK)** to build agents that are fast, tool-capable, and "Well-Architected."
|
|
4
|
+
|
|
5
|
+
## π§© Middleware Components
|
|
6
|
+
The Engine comes pre-installed with the **Cockpit Middleware Stack**:
|
|
7
|
+
|
|
8
|
+
1. **`CostOptimizer`**: Real-time token tracking and savings recommendations.
|
|
9
|
+
2. **`PIIScrubber`**: Automatic masking of sensitive user data.
|
|
10
|
+
3. **`SemanticCache`**: Integrated with the "Hive Mind" for 40%+ cost reduction.
|
|
11
|
+
4. **`MemoryOptimizer`**: Automates context truncation and summarization.
|
|
12
|
+
|
|
13
|
+
## π οΈ Tool Orchestration (ADK)
|
|
14
|
+
We recommend building your tools as **MCP (Model Context Protocol)** or **ADK Extensions**. This ensures that the agent can discover and invoke them with high reliability.
|
|
15
|
+
|
|
16
|
+
```python
|
|
17
|
+
# Example Tool in src/backend/tools/search.py
|
|
18
|
+
from adk import Tool
|
|
19
|
+
|
|
20
|
+
@Tool
|
|
21
|
+
def search_docs(query: str):
|
|
22
|
+
"""Searches the knowledge base for agent-ops documentation."""
|
|
23
|
+
return get_search_results(query)
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## ποΈ The Agentic Flow
|
|
27
|
+
A "Well-Architected" flow always follows this sequence:
|
|
28
|
+
1. **Sanitize**: Input passes through the `PIIScrubber`.
|
|
29
|
+
2. **Cache Check**: `Hive Mind` checks for a semantic hit.
|
|
30
|
+
3. **Reason**: Gemini 2.0 reasoning loop via Vertex AI.
|
|
31
|
+
4. **Action**: Tool execution via ADK.
|
|
32
|
+
5. **Pack**: Final output is wrapped in an `EvidencePacket` for transparency.
|
|
33
|
+
|
|
34
|
+
## ποΈ Grounding
|
|
35
|
+
To prevent hallucinations, ensure all tool outputs are grounded in your data sources. Use the `EvidenceNode` class to report the sources used in your final response.
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# π Production Deployment
|
|
2
|
+
|
|
3
|
+
Deploying a "Well-Architected" agent requires orchestration across two primary Google Cloud environments.
|
|
4
|
+
|
|
5
|
+
## βοΈ The Engine (Cloud Run)
|
|
6
|
+
The Python backend (FastAPI) is deployed as a serverless service.
|
|
7
|
+
- **Scaling**: We default to scale-to-zero to minimize costs during idle time.
|
|
8
|
+
- **Regions**: Always deploy to `us-central1` or your local equivalent for lowest latency to Vertex AI endpoints.
|
|
9
|
+
- **Best Practice**: Enable **Startup CPU Boost** to reduce cold-start latency by up to 50%.
|
|
10
|
+
|
|
11
|
+
## π§ Agent Engine (Vertex AI Reasoning Engine)
|
|
12
|
+
Recommended for agents that require deep integration with the Google Cloud agentic ecosystem.
|
|
13
|
+
- **Why**: Provides a managed runtime that handles serialization, versioning, and built-in tracing.
|
|
14
|
+
- **Best Practice**: Use **Context Caching** for agents with extremely long system instructions (>32k tokens).
|
|
15
|
+
|
|
16
|
+
## βΈοΈ Enterprise Engine (GKE)
|
|
17
|
+
Recommended for agents with specialized isolation needs or high-intensity workloads.
|
|
18
|
+
- **Why**: Provides the highest level of control over networking (Service Mesh) and compute resources (GPUs).
|
|
19
|
+
- **Best Practice**: Use **Workload Identity** to assign fine-grained IAM roles to your K8s service accounts.
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## π Infrastructure Decision Matrix
|
|
24
|
+
|
|
25
|
+
| Feature | Agent Engine | Cloud Run | GKE |
|
|
26
|
+
| :--- | :--- | :--- | :--- |
|
|
27
|
+
| **Orchestration** | Managed (ADK) | Custom (FastAPI) | Custom (K8s) |
|
|
28
|
+
| **Scaling** | Automatic | Scale-to-Zero | Dynamic / GPU |
|
|
29
|
+
| **Observability** | Vertex AI Traces | Cloud Logging/Trace | Prometheus / Istio |
|
|
30
|
+
| **Best Case** | Fast ADK Prototyping | Standard Web Agents | High-Perf Enterprise |
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## π The Face (Firebase Hosting)
|
|
35
|
+
The React/Vite frontend is deployed to Firebase for globally distributed edge performance.
|
|
36
|
+
- **Protocol**: Ensure all components use the **A2UI Protocol** for consistent engine-driven rendering.
|
|
37
|
+
- **Responsiveness**: Use mobile-first breakpoints to support iOS and Android high-density displays.
|
|
38
|
+
- **Accessibility**: All interactive elements must have `aria-labels` to support automated testing in the Cockpit.
|
|
39
|
+
- **Performance**: Split large components (>300 lines) to optimize React's virtual DOM reconciliation.
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## ποΈ Deployment Workflow
|
|
44
|
+
|
|
45
|
+
We use a **1-click deployment** strategy that builds safety into the process:
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
make deploy-prod
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### The "Safe-Build" Sequence:
|
|
52
|
+
1. **Audit Phase**: The Cockpit runs `arch-review` (design) and `audit` (cost).
|
|
53
|
+
2. **Security Phase**: Executes `red-team` to ensure no public breaches exist in the latest code.
|
|
54
|
+
3. **Build Phase**: Compiles the React application and optimizes static assets.
|
|
55
|
+
4. **Push Phase**:
|
|
56
|
+
- Containerizes the Engine and pushes to **Artifact Registry**.
|
|
57
|
+
- Deploys the container to **Cloud Run**.
|
|
58
|
+
- Deploys static assets to **Firebase Hosting**.
|
|
59
|
+
|
|
60
|
+
## π‘οΈ Staging & Traffic Splitting
|
|
61
|
+
We recommend using Cloud Run **Revisions** for canary deployments:
|
|
62
|
+
- Deploy 5% of traffic to your new Revision.
|
|
63
|
+
- Monitor the **Cockpit Dashboard** for error rate anomalies.
|
|
64
|
+
- Promote to 100% when satisfied.
|
|
65
|
+
|
|
66
|
+
## π€ Automated CI/CD (GitHub Actions)
|
|
67
|
+
|
|
68
|
+
The AgentOps Cockpit is designed for "Policy-as-Code." Every commit to `main` triggers an automated governance pipeline that ensures your agent never regresses in quality or security.
|
|
69
|
+
|
|
70
|
+

|
|
71
|
+
|
|
72
|
+
### The Automated Pipeline:
|
|
73
|
+
1. **Architecture Audit**: Scans for design alignment with the detected framework (LangGraph, ADK, etc.).
|
|
74
|
+
2. **Red Team Evaluation**: Automatically tests for prompt injection and instruction overrides on every PR.
|
|
75
|
+
3. **Token Optimization**: Identifies non-cached prompts and expensive model routing before deployment.
|
|
76
|
+
4. **Reliability Suite**: Runs all unit tests and regression checks against the core engine.
|
|
77
|
+
|
|
78
|
+
Refer to `.github/workflows/agent-ops-audit.yml` for the full pipeline definition.
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
## π Secret Management
|
|
82
|
+
Never commit `.env` files. Use **Google Cloud Secret Manager**:
|
|
83
|
+
- Store your `GOOGLE_API_KEY` and third-party tool tokens.
|
|
84
|
+
- Map them as environment variables in your Cloud Run configuration.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
FROM python:3.11-slim
|
|
2
|
+
|
|
3
|
+
WORKDIR /app
|
|
4
|
+
|
|
5
|
+
COPY pyproject.toml .
|
|
6
|
+
COPY requirements.txt .
|
|
7
|
+
RUN pip install -r requirements.txt
|
|
8
|
+
|
|
9
|
+
COPY src/ ./src/
|
|
10
|
+
|
|
11
|
+
# Set PYTHONPATH so it can find the modules
|
|
12
|
+
ENV PYTHONPATH=/app/src
|
|
13
|
+
|
|
14
|
+
CMD ["python", "src/backend/agent.py"]
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Enrique Kalven
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
# --- A2UI Starter Makefile ---
|
|
2
|
+
|
|
3
|
+
# Project Variables
|
|
4
|
+
PROJECT_ID ?= $(shell gcloud config get-value project)
|
|
5
|
+
REGION ?= us-central1
|
|
6
|
+
SERVICE_NAME = agent-ops-backend
|
|
7
|
+
IMAGE_TAG = us-central1-docker.pkg.dev/$(PROJECT_ID)/agent-repo/$(SERVICE_NAME):latest
|
|
8
|
+
|
|
9
|
+
.PHONY: help dev build deploy-cloud-run deploy-firebase deploy-gke audit deploy-prod scan-secrets ui-audit audit-all
|
|
10
|
+
|
|
11
|
+
help:
|
|
12
|
+
@echo "Available commands:"
|
|
13
|
+
@echo " make dev - Start local development server"
|
|
14
|
+
@echo " make build - Build production assets"
|
|
15
|
+
@echo " make audit-all - Run ALL audits and generate Final Report"
|
|
16
|
+
@echo " make reliability - Run unit tests and regression suite"
|
|
17
|
+
@echo " make scan-secrets - Scan for hardcoded API keys & credentials"
|
|
18
|
+
@echo " make ui-audit - Run Face Auditor (UI/UX best practices)"
|
|
19
|
+
@echo " make audit - Run Agent Optimizer audit"
|
|
20
|
+
@echo " make arch-review - Run Google Well-Architected design review"
|
|
21
|
+
@echo " make quality-baseline - Start iterative Quality Hill Climbing"
|
|
22
|
+
@echo " make red-team - Run adversarial security audit"
|
|
23
|
+
@echo " make load-test - Run base load test"
|
|
24
|
+
@echo " make deploy-prod - Deploy to production (All Audits -> Cloud Run + Firebase)"
|
|
25
|
+
@echo " make deploy-cloud-run - Deploy to Google Cloud Run"
|
|
26
|
+
@echo " make deploy-firebase - Deploy to Firebase Hosting"
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
dev:
|
|
31
|
+
npm run dev
|
|
32
|
+
|
|
33
|
+
build:
|
|
34
|
+
npm run build
|
|
35
|
+
|
|
36
|
+
# π Master Audit: Run all modules and generate report
|
|
37
|
+
audit-all:
|
|
38
|
+
@python3 src/backend/ops/orchestrator.py
|
|
39
|
+
|
|
40
|
+
# π‘οΈ Reliability: Unit tests and regression suite
|
|
41
|
+
reliability:
|
|
42
|
+
@python3 src/backend/ops/reliability.py
|
|
43
|
+
|
|
44
|
+
# π The Optimizer: Audit your agent for waste
|
|
45
|
+
audit:
|
|
46
|
+
@python3 src/backend/optimizer.py src/backend/agent.py
|
|
47
|
+
|
|
48
|
+
# ποΈ Architecture: Design review against Google Well-Architected Framework
|
|
49
|
+
arch-review:
|
|
50
|
+
@python3 src/backend/ops/arch_review.py
|
|
51
|
+
|
|
52
|
+
# π§ Quality: Iterative Hill Climbing optimization
|
|
53
|
+
quality-baseline:
|
|
54
|
+
@python3 src/backend/eval/quality_climber.py climb
|
|
55
|
+
|
|
56
|
+
# π§ͺ Secrets: Scan for hardcoded credentials
|
|
57
|
+
scan-secrets:
|
|
58
|
+
@python3 src/backend/ops/secret_scanner.py .
|
|
59
|
+
|
|
60
|
+
# π¨ UI/UX: Face Auditor for frontend quality
|
|
61
|
+
ui-audit:
|
|
62
|
+
@python3 src/backend/ops/ui_auditor.py src
|
|
63
|
+
|
|
64
|
+
# π₯ Red Team: Unleash self-hacking security audit
|
|
65
|
+
|
|
66
|
+
red-team:
|
|
67
|
+
@python3 src/backend/eval/red_team.py src/backend/agent.py
|
|
68
|
+
|
|
69
|
+
# β‘ Load Test: Stress test your agent endpoint (Usage: make load_test REQUESTS=100 CONCURRENCY=10)
|
|
70
|
+
REQUESTS ?= 50
|
|
71
|
+
|
|
72
|
+
CONCURRENCY ?= 5
|
|
73
|
+
URL ?= http://localhost:8000/agent/query?q=healthcheck
|
|
74
|
+
|
|
75
|
+
load_test:
|
|
76
|
+
@python3 src/backend/eval/load_test.py run --url $(URL) --requests $(REQUESTS) --concurrency $(CONCURRENCY)
|
|
77
|
+
|
|
78
|
+
# π Production: The Vercel-style 1-click deploy
|
|
79
|
+
deploy-prod: audit-all build
|
|
80
|
+
|
|
81
|
+
@echo "π¦ Containerizing and deploying to Cloud Run..."
|
|
82
|
+
gcloud run deploy $(SERVICE_NAME) --source . --region $(REGION) --allow-unauthenticated --port 80
|
|
83
|
+
@echo "π₯ Deploying frontend to Firebase..."
|
|
84
|
+
firebase deploy --only hosting
|
|
85
|
+
|
|
86
|
+
# π Cloud Run: The fastest way to production
|
|
87
|
+
deploy-cloud-run:
|
|
88
|
+
gcloud run deploy $(SERVICE_NAME) --source . --region $(REGION) --allow-unauthenticated --port 80
|
|
89
|
+
|
|
90
|
+
# π₯ Firebase: Optimized for frontend hosting
|
|
91
|
+
deploy-firebase: build
|
|
92
|
+
firebase deploy --only hosting
|
|
93
|
+
|
|
94
|
+
# βΈοΈ GKE: Enterprise container orchestration
|
|
95
|
+
deploy-gke:
|
|
96
|
+
docker build -t $(IMAGE_TAG) .
|
|
97
|
+
docker push $(IMAGE_TAG)
|
|
98
|
+
@echo "Updating deployment.yaml..."
|
|
99
|
+
sed -i '' 's|image: .*|image: $(IMAGE_TAG)|' deployment.yaml || true
|
|
100
|
+
kubectl apply -f deployment.yaml || echo "No deployment.yaml found. Please create one based on DEPLOYMENT.md"
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: agentops-cockpit
|
|
3
|
+
Version: 0.2.2
|
|
4
|
+
Summary: Production-grade Agent Operations (AgentOps) Platform
|
|
5
|
+
Project-URL: Homepage, https://github.com/enriquekalven/agent-ops-cockpit
|
|
6
|
+
Project-URL: Bug Tracker, https://github.com/enriquekalven/agent-ops-cockpit/issues
|
|
7
|
+
Author-email: Enrique <enrique@example.com>
|
|
8
|
+
License-File: LICENSE
|
|
9
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
10
|
+
Classifier: Operating System :: OS Independent
|
|
11
|
+
Classifier: Programming Language :: Python :: 3
|
|
12
|
+
Requires-Python: >=3.10
|
|
13
|
+
Requires-Dist: gitpython>=3.1.0
|
|
14
|
+
Requires-Dist: rich>=13.0.0
|
|
15
|
+
Requires-Dist: typer>=0.9.0
|
|
16
|
+
Description-Content-Type: text/markdown
|
|
17
|
+
|
|
18
|
+
# πΉοΈ AgentOps Cockpit
|
|
19
|
+
|
|
20
|
+
<div align="center">
|
|
21
|
+
<img src="https://img.shields.io/github/stars/enriquekalven/agent-cockpit?style=for-the-badge&color=ffd700" alt="GitHub Stars" />
|
|
22
|
+
<img src="https://img.shields.io/github/license/enriquekalven/agent-cockpit?style=for-the-badge&color=007bff" alt="License" />
|
|
23
|
+
<img src="https://img.shields.io/badge/Google-Well--Architected-4285F4?style=for-the-badge&logo=google-cloud" alt="Google Well-Architected" />
|
|
24
|
+
<img src="https://img.shields.io/badge/Status-Day%202%20Operations-10b981?style=for-the-badge" alt="Status" />
|
|
25
|
+
</div>
|
|
26
|
+
|
|
27
|
+
<br />
|
|
28
|
+
|
|
29
|
+
<div align="center">
|
|
30
|
+
<h3>"Infrastructure gives you the pipes. We give you the Intelligence."</h3>
|
|
31
|
+
<p>The developer distribution for building, optimizing, and securing AI agents on Google Cloud.</p>
|
|
32
|
+
</div>
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## π½οΈ The Mission
|
|
37
|
+
Most AI agent templates stop at a single Python file and an API key. **The AgentOps Cockpit** is for developers moving into production. While optimized for **ADK**, it provides framework-agnostic governance, safety, and cost guardrails for the entire agentic ecosystemβfrom CrewAI to LangGraph. Based on the **[Google Well-Architected Framework for Agents](/docs/google-architecture)**.
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## ποΈ The Agentic Trinity
|
|
42
|
+
We divide the complexity of production agents into three focused pillars:
|
|
43
|
+
|
|
44
|
+
- **βοΈ The Engine**: The reasoning core. Built with **ADK**, FastAPI, and Vertex AI.
|
|
45
|
+
- **π The Face**: The user experience. Adaptive UI surfaces and **GenUI** standards via the A2UI spec.
|
|
46
|
+
- **πΉοΈ The Cockpit**: The operational brain. Cost control, semantic caching, shadow routing, and adversarial audits.
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## π Framework Agnostic Governance
|
|
51
|
+
The Cockpit isn't just for ADK. It provides **Best Practices as Code** across all major agentic frameworks:
|
|
52
|
+
|
|
53
|
+
<div align="center">
|
|
54
|
+
<img src="https://img.shields.io/badge/OpenAI_Agentkit-412991?style=for-the-badge&logo=openai" alt="OpenAI Agentkit" />
|
|
55
|
+
<img src="https://img.shields.io/badge/Anthropic_Claude-D97757?style=for-the-badge&logo=anthropic" alt="Anthropic" />
|
|
56
|
+
<img src="https://img.shields.io/badge/Microsoft_AutoGen-0078d4?style=for-the-badge&logo=microsoft" alt="Microsoft" />
|
|
57
|
+
<img src="https://img.shields.io/badge/AWS_Bedrock-FF9900?style=for-the-badge&logo=amazon-aws" alt="AWS" />
|
|
58
|
+
<img src="https://img.shields.io/badge/CopilotKit.ai-6366f1?style=for-the-badge" alt="CopilotKit" />
|
|
59
|
+
<img src="https://img.shields.io/badge/LangChain-1C3C3C?style=for-the-badge" alt="LangChain" />
|
|
60
|
+
<img src="https://img.shields.io/badge/ADK-4285F4?style=for-the-badge&logo=google-cloud" alt="ADK" />
|
|
61
|
+
</div>
|
|
62
|
+
|
|
63
|
+
<div align="center">
|
|
64
|
+
<img src="https://img.shields.io/badge/Python-3776AB?style=flat-square&logo=python&logoColor=white" alt="Python" />
|
|
65
|
+
<img src="https://img.shields.io/badge/Go-00ADD8?style=flat-square&logo=go&logoColor=white" alt="Go" />
|
|
66
|
+
<img src="https://img.shields.io/badge/NodeJS-339933?style=flat-square&logo=node.js&logoColor=white" alt="NodeJS" />
|
|
67
|
+
<img src="https://img.shields.io/badge/TypeScript-3178C6?style=flat-square&logo=typescript&logoColor=white" alt="TypeScript" />
|
|
68
|
+
<img src="https://img.shields.io/badge/Streamlit-FF4B4B?style=flat-square&logo=streamlit&logoColor=white" alt="Streamlit" />
|
|
69
|
+
<img src="https://img.shields.io/badge/Angular-DD0031?style=flat-square&logo=angular&logoColor=white" alt="Angular" />
|
|
70
|
+
<img src="https://img.shields.io/badge/Lit-324FFF?style=flat-square&logo=lit&logoColor=white" alt="Lit" />
|
|
71
|
+
</div>
|
|
72
|
+
|
|
73
|
+
Whether you are building a swarm in **CrewAI**, a Go-based high-perf engine, or a **Streamlit** dashboard, the Cockpit ensures your agent maps to the **Google Well-Architected Framework**.
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## π Key Innovation: The "Intelligence" Layer
|
|
79
|
+
|
|
80
|
+
### π‘οΈ Red Team Auditor (Self-Hacking)
|
|
81
|
+
Don't wait for your users to find prompt injections. Use the built-in Adversarial Evaluator to launch self-attacks against your agent, testing for PII leaks, instruction overrides, and safety filter bypasses.
|
|
82
|
+
|
|
83
|
+
### π§ Hive Mind (Semantic Caching)
|
|
84
|
+
**Reduce LLM costs by up to 40%.** The Hive Mind checks for semantically similar queries in 10ms, serving cached answers for common questions without calling the LLM.
|
|
85
|
+
|
|
86
|
+
### ποΈ Arch Review & Framework Detection
|
|
87
|
+
Every agent in the cockpit is graded against a framework-aware checklist. The Cockpit intelligently detects your stackβ**Google ADK**, **OpenAI Agentkit**, **Anthropic Claude**, **Microsoft AutoGen/Semantic Kernel**, **AWS Bedrock Agents**, or **CopilotKit**βand runs a tailored audit against corresponding production standards. Use `make arch-review` to verify your **Governance-as-Code**.
|
|
88
|
+
|
|
89
|
+
### π§ Quality Hill Climbing (ADK Evaluation)
|
|
90
|
+
Following **Google ADK Evaluation** best practices, the Cockpit provides an iterative optimization loop. `make quality-baseline` runs your agent against a "Golden Dataset" using **LLM-as-a-Judge** scoring (Response Match & Tool Trajectory), climbing the quality curve until production-grade fidelity is reached.
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## β¨οΈ Quick Start
|
|
95
|
+
|
|
96
|
+
You don't even need to clone the repo to start auditing.
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
# 1. Audit your existing agent design
|
|
100
|
+
uvx agent-ops-cockpit arch-review
|
|
101
|
+
|
|
102
|
+
# 2. Stress test your endpoint
|
|
103
|
+
uvx agent-ops-cockpit load-test --requests 100 --concurrency 10
|
|
104
|
+
|
|
105
|
+
# 3. Scaffold a new Well-Architected app
|
|
106
|
+
uvx agent-ops-cockpit create my-agent --ui a2ui
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## π Local Development
|
|
112
|
+
The Cockpit provides a unified "Mission Control" to evaluate your agents instantly.
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
make audit-all # πΉοΈ Run ALL audits and generate a Final Report
|
|
116
|
+
make reliability # π‘οΈ Run unit tests and regression suite
|
|
117
|
+
make dev # Start the local Engine + Face stack
|
|
118
|
+
make arch-review # ποΈ Run the Google Well-Architected design review
|
|
119
|
+
make quality-baseline # π§ Run iterative 'Hill Climbing' quality audit
|
|
120
|
+
make audit # π Run the Interactive Agent Optimizer
|
|
121
|
+
make red-team # Execute a white-hat security audit
|
|
122
|
+
make deploy-prod # π 1-click deploy to Google Cloud
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## π§ Roadmap
|
|
128
|
+
- [ ] **One-Click GitHub Action**: Automated audits on every PR.
|
|
129
|
+
- [ ] **Multi-Agent Orchestrator**: Support for Swarm/Coordinator patterns.
|
|
130
|
+
- [ ] **Visual Mission Control**: Real-time observability dashboard.
|
|
131
|
+
|
|
132
|
+
[View full roadmap β](/ROADMAP.md)
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## π€ Community
|
|
137
|
+
- **Star this repo** to help us build the future of AgentOps.
|
|
138
|
+
- **Join the Discussion** for patterns on Google Cloud.
|
|
139
|
+
- **Contribute**: Read our [Contributing Guide](/CONTRIBUTING.md).
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
*Reference: [Google Cloud Architecture Center - Agentic AI Overview](https://docs.cloud.google.com/architecture/agentic-ai-overview)*
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
# πΉοΈ AgentOps Cockpit
|
|
2
|
+
|
|
3
|
+
<div align="center">
|
|
4
|
+
<img src="https://img.shields.io/github/stars/enriquekalven/agent-cockpit?style=for-the-badge&color=ffd700" alt="GitHub Stars" />
|
|
5
|
+
<img src="https://img.shields.io/github/license/enriquekalven/agent-cockpit?style=for-the-badge&color=007bff" alt="License" />
|
|
6
|
+
<img src="https://img.shields.io/badge/Google-Well--Architected-4285F4?style=for-the-badge&logo=google-cloud" alt="Google Well-Architected" />
|
|
7
|
+
<img src="https://img.shields.io/badge/Status-Day%202%20Operations-10b981?style=for-the-badge" alt="Status" />
|
|
8
|
+
</div>
|
|
9
|
+
|
|
10
|
+
<br />
|
|
11
|
+
|
|
12
|
+
<div align="center">
|
|
13
|
+
<h3>"Infrastructure gives you the pipes. We give you the Intelligence."</h3>
|
|
14
|
+
<p>The developer distribution for building, optimizing, and securing AI agents on Google Cloud.</p>
|
|
15
|
+
</div>
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## π½οΈ The Mission
|
|
20
|
+
Most AI agent templates stop at a single Python file and an API key. **The AgentOps Cockpit** is for developers moving into production. While optimized for **ADK**, it provides framework-agnostic governance, safety, and cost guardrails for the entire agentic ecosystemβfrom CrewAI to LangGraph. Based on the **[Google Well-Architected Framework for Agents](/docs/google-architecture)**.
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## ποΈ The Agentic Trinity
|
|
25
|
+
We divide the complexity of production agents into three focused pillars:
|
|
26
|
+
|
|
27
|
+
- **βοΈ The Engine**: The reasoning core. Built with **ADK**, FastAPI, and Vertex AI.
|
|
28
|
+
- **π The Face**: The user experience. Adaptive UI surfaces and **GenUI** standards via the A2UI spec.
|
|
29
|
+
- **πΉοΈ The Cockpit**: The operational brain. Cost control, semantic caching, shadow routing, and adversarial audits.
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## π Framework Agnostic Governance
|
|
34
|
+
The Cockpit isn't just for ADK. It provides **Best Practices as Code** across all major agentic frameworks:
|
|
35
|
+
|
|
36
|
+
<div align="center">
|
|
37
|
+
<img src="https://img.shields.io/badge/OpenAI_Agentkit-412991?style=for-the-badge&logo=openai" alt="OpenAI Agentkit" />
|
|
38
|
+
<img src="https://img.shields.io/badge/Anthropic_Claude-D97757?style=for-the-badge&logo=anthropic" alt="Anthropic" />
|
|
39
|
+
<img src="https://img.shields.io/badge/Microsoft_AutoGen-0078d4?style=for-the-badge&logo=microsoft" alt="Microsoft" />
|
|
40
|
+
<img src="https://img.shields.io/badge/AWS_Bedrock-FF9900?style=for-the-badge&logo=amazon-aws" alt="AWS" />
|
|
41
|
+
<img src="https://img.shields.io/badge/CopilotKit.ai-6366f1?style=for-the-badge" alt="CopilotKit" />
|
|
42
|
+
<img src="https://img.shields.io/badge/LangChain-1C3C3C?style=for-the-badge" alt="LangChain" />
|
|
43
|
+
<img src="https://img.shields.io/badge/ADK-4285F4?style=for-the-badge&logo=google-cloud" alt="ADK" />
|
|
44
|
+
</div>
|
|
45
|
+
|
|
46
|
+
<div align="center">
|
|
47
|
+
<img src="https://img.shields.io/badge/Python-3776AB?style=flat-square&logo=python&logoColor=white" alt="Python" />
|
|
48
|
+
<img src="https://img.shields.io/badge/Go-00ADD8?style=flat-square&logo=go&logoColor=white" alt="Go" />
|
|
49
|
+
<img src="https://img.shields.io/badge/NodeJS-339933?style=flat-square&logo=node.js&logoColor=white" alt="NodeJS" />
|
|
50
|
+
<img src="https://img.shields.io/badge/TypeScript-3178C6?style=flat-square&logo=typescript&logoColor=white" alt="TypeScript" />
|
|
51
|
+
<img src="https://img.shields.io/badge/Streamlit-FF4B4B?style=flat-square&logo=streamlit&logoColor=white" alt="Streamlit" />
|
|
52
|
+
<img src="https://img.shields.io/badge/Angular-DD0031?style=flat-square&logo=angular&logoColor=white" alt="Angular" />
|
|
53
|
+
<img src="https://img.shields.io/badge/Lit-324FFF?style=flat-square&logo=lit&logoColor=white" alt="Lit" />
|
|
54
|
+
</div>
|
|
55
|
+
|
|
56
|
+
Whether you are building a swarm in **CrewAI**, a Go-based high-perf engine, or a **Streamlit** dashboard, the Cockpit ensures your agent maps to the **Google Well-Architected Framework**.
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## π Key Innovation: The "Intelligence" Layer
|
|
62
|
+
|
|
63
|
+
### π‘οΈ Red Team Auditor (Self-Hacking)
|
|
64
|
+
Don't wait for your users to find prompt injections. Use the built-in Adversarial Evaluator to launch self-attacks against your agent, testing for PII leaks, instruction overrides, and safety filter bypasses.
|
|
65
|
+
|
|
66
|
+
### π§ Hive Mind (Semantic Caching)
|
|
67
|
+
**Reduce LLM costs by up to 40%.** The Hive Mind checks for semantically similar queries in 10ms, serving cached answers for common questions without calling the LLM.
|
|
68
|
+
|
|
69
|
+
### ποΈ Arch Review & Framework Detection
|
|
70
|
+
Every agent in the cockpit is graded against a framework-aware checklist. The Cockpit intelligently detects your stackβ**Google ADK**, **OpenAI Agentkit**, **Anthropic Claude**, **Microsoft AutoGen/Semantic Kernel**, **AWS Bedrock Agents**, or **CopilotKit**βand runs a tailored audit against corresponding production standards. Use `make arch-review` to verify your **Governance-as-Code**.
|
|
71
|
+
|
|
72
|
+
### π§ Quality Hill Climbing (ADK Evaluation)
|
|
73
|
+
Following **Google ADK Evaluation** best practices, the Cockpit provides an iterative optimization loop. `make quality-baseline` runs your agent against a "Golden Dataset" using **LLM-as-a-Judge** scoring (Response Match & Tool Trajectory), climbing the quality curve until production-grade fidelity is reached.
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## β¨οΈ Quick Start
|
|
78
|
+
|
|
79
|
+
You don't even need to clone the repo to start auditing.
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
# 1. Audit your existing agent design
|
|
83
|
+
uvx agent-ops-cockpit arch-review
|
|
84
|
+
|
|
85
|
+
# 2. Stress test your endpoint
|
|
86
|
+
uvx agent-ops-cockpit load-test --requests 100 --concurrency 10
|
|
87
|
+
|
|
88
|
+
# 3. Scaffold a new Well-Architected app
|
|
89
|
+
uvx agent-ops-cockpit create my-agent --ui a2ui
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## π Local Development
|
|
95
|
+
The Cockpit provides a unified "Mission Control" to evaluate your agents instantly.
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
make audit-all # πΉοΈ Run ALL audits and generate a Final Report
|
|
99
|
+
make reliability # π‘οΈ Run unit tests and regression suite
|
|
100
|
+
make dev # Start the local Engine + Face stack
|
|
101
|
+
make arch-review # ποΈ Run the Google Well-Architected design review
|
|
102
|
+
make quality-baseline # π§ Run iterative 'Hill Climbing' quality audit
|
|
103
|
+
make audit # π Run the Interactive Agent Optimizer
|
|
104
|
+
make red-team # Execute a white-hat security audit
|
|
105
|
+
make deploy-prod # π 1-click deploy to Google Cloud
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## π§ Roadmap
|
|
111
|
+
- [ ] **One-Click GitHub Action**: Automated audits on every PR.
|
|
112
|
+
- [ ] **Multi-Agent Orchestrator**: Support for Swarm/Coordinator patterns.
|
|
113
|
+
- [ ] **Visual Mission Control**: Real-time observability dashboard.
|
|
114
|
+
|
|
115
|
+
[View full roadmap β](/ROADMAP.md)
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## π€ Community
|
|
120
|
+
- **Star this repo** to help us build the future of AgentOps.
|
|
121
|
+
- **Join the Discussion** for patterns on Google Cloud.
|
|
122
|
+
- **Contribute**: Read our [Contributing Guide](/CONTRIBUTING.md).
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
*Reference: [Google Cloud Architecture Center - Agentic AI Overview](https://docs.cloud.google.com/architecture/agentic-ai-overview)*
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"hosting": {
|
|
3
|
+
"target": "agent-ui",
|
|
4
|
+
"public": "dist",
|
|
5
|
+
"ignore": [
|
|
6
|
+
"firebase.json",
|
|
7
|
+
"**/.*",
|
|
8
|
+
"**/node_modules/**"
|
|
9
|
+
],
|
|
10
|
+
"headers": [
|
|
11
|
+
{
|
|
12
|
+
"source": "**/*.html",
|
|
13
|
+
"headers": [
|
|
14
|
+
{
|
|
15
|
+
"key": "Content-Type",
|
|
16
|
+
"value": "text/html"
|
|
17
|
+
}
|
|
18
|
+
]
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"source": "/",
|
|
22
|
+
"headers": [
|
|
23
|
+
{
|
|
24
|
+
"key": "Content-Type",
|
|
25
|
+
"value": "text/html"
|
|
26
|
+
}
|
|
27
|
+
]
|
|
28
|
+
}
|
|
29
|
+
],
|
|
30
|
+
"rewrites": [
|
|
31
|
+
{
|
|
32
|
+
"source": "**",
|
|
33
|
+
"destination": "/index.html"
|
|
34
|
+
}
|
|
35
|
+
]
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
+
<title>AgentOps Cockpit</title>
|
|
7
|
+
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
8
|
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
9
|
+
<link href="https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500;600&display=swap" rel="stylesheet">
|
|
10
|
+
</head>
|
|
11
|
+
<body>
|
|
12
|
+
<div id="root"></div>
|
|
13
|
+
<script type="module" src="/src/main.tsx"></script>
|
|
14
|
+
</body>
|
|
15
|
+
</html>
|