initial commit

This commit is contained in:
2026-03-25 00:05:57 +01:00
commit 25c7d598ca
63 changed files with 5257 additions and 0 deletions

132
03-CRD/PersonaPack.md Normal file
View File

@@ -0,0 +1,132 @@
# PersonaPack
#sympozium #crd #personapack
## Definicja
`PersonaPack` to CRD bundlujący **wiele pre-konfigurowanych person agentów**. Aktywacja packa powoduje automatyczne tworzenie SympoziumInstances, Schedules i memory seeds.
**Plik:** `api/v1alpha1/personapack_types.go`
## Analogia
PersonaPack jest dla agentów AI tym, czym Helm Chart dla aplikacji K8s - **deklaratywny bundle** który controller "rozpakowuje" w konkretne zasoby.
## Spec
```yaml
apiVersion: sympozium.ai/v1alpha1
kind: PersonaPack
metadata:
name: platform-team
spec:
enabled: true # Dopóki false - katalog; true - controller stampuje
description: "Core platform engineering team"
category: platform
version: "1.0.0"
authRefs: # Credentials (ustawiane przy aktywacji)
- provider: openai
secret: platform-team-openai-key
policyRef: restrictive # Wspólna polityka
baseURL: "" # Override dla lokalnych providerów
channelConfigs: # Mapowanie kanał → secret
telegram: telegram-creds
skillParams: # Parametry per-skill
github-gitops:
REPO: my-org/my-repo
taskOverride: "Focus on reducing MTTR" # Nadpisanie celów
excludePersonas: # Wyłączone persony
- cost-analyzer
channelAccessControl:
telegram:
allowedSenders: ["123456"]
agentSandbox: # Kernel-level isolation dla wszystkich
enabled: true
runtimeClass: gvisor
personas:
- name: security-guardian
displayName: "Security Guardian"
systemPrompt: |
You are a Kubernetes security specialist...
model: claude-sonnet-4-20250514
skills:
- k8s-ops
- sre-observability
toolPolicy:
allow: [execute_command, read_file, fetch_url]
channels:
- telegram
schedule:
type: heartbeat
interval: "30m"
task: "Run security audit on all namespaces"
memory:
enabled: true
seeds:
- "Track CVEs found in previous scans"
- "Remember cluster topology changes"
```
## Mechanizm aktywacji
```
PersonaPack (enabled: false) → Katalog (TUI pokazuje jako dostępny)
Użytkownik aktywuje (TUI wizard / kubectl patch)
PersonaPack (enabled: true, authRefs set) → Controller stampuje:
├── Secret: platform-team-openai-key
├── SympoziumInstance: platform-team-security-guardian
│ ├── SympoziumSchedule + ConfigMap memory (seeded)
├── SympoziumInstance: platform-team-sre-watchdog
│ ├── SympoziumSchedule + ConfigMap memory (seeded)
└── SympoziumInstance: platform-team-platform-engineer
└── SympoziumSchedule + ConfigMap memory (seeded)
```
## Wbudowane packi
| Pack | Kategoria | Agenty | Opis |
|------|-----------|--------|------|
| `platform-team` | Platform | Security Guardian, SRE Watchdog, Platform Engineer | Bezpieczeństwo, health, manifest review |
| `devops-essentials` | DevOps | Incident Responder, Cost Analyzer | Triage incydentów, right-sizing |
| `developer-team` | Development | 7 agentów (Tech Lead, Backend/Frontend Dev, QA, Code Reviewer, DevOps, Docs Writer) | Pełny zespół dev |
## Status
```yaml
status:
phase: Pending|Ready|Error
personaCount: 3
installedCount: 3
installedPersonas:
- name: security-guardian
instanceName: platform-team-security-guardian
scheduleName: platform-team-security-guardian-schedule
```
## ownerReferences
Wszystkie wygenerowane zasoby mają `ownerReference` → PersonaPack. Usunięcie packa = garbage collection całego zespołu.
## Znaczenie architektoniczne
PersonaPacks rozwiązują problem **Day 1 Experience** - zamiast ręcznie tworzyć Secret + Instance + Schedule + Memory per agent, użytkownik:
1. Wybiera pack w TUI
2. Podaje klucz API
3. Cały zespół agentów jest gotowy
To także wzorzec **Infrastructure as Code dla AI Teams** - deklarujesz zespół agentów w YAML, controller realizuje intent.
---
Powiązane: [[PersonaPacks - zespoły agentów]] | [[SympoziumInstance]] | [[SympoziumSchedule]]