Svrha: Referentni dokument za Claude Code sesije. Sve što projekat ima — na jednom mestu. Ažurirano: April 2026 (dubinska analiza koda) Statistike: 55 node tipova · 89+ API routes · 85+ UI komponenti · 36 Prisma modela · 2502+ unit testova
Lokacija: src/app/builder/[agentId]/page.tsx, src/components/builder/
Šta radi:
- ReactFlow (@xyflow/react v12) vizuelni editor za kreiranje AI workflow-ova
- Drag-and-drop dodavanje nodova iz node picker-a
- Real-time property panel za konfiguraciju svakog noda
- Version history sidebar sa diff prikazom i rollback opcijom
- Deploy dialog sa sandbox testom pre produkcije
- Debug mode sa breakpoint-ima, step-through, variable watch
- Timeline vizualizacija execution trace-a
Ključne komponente:
flow-builder.tsx— glavni editornode-picker.tsx— paleta sa 55 tipova nodovaproperty-panel.tsx— desni sidebar za konfiguracijuversion-panel.tsx— istorija verzijadiff-view.tsx— poređenje verzijadebug-toolbar.tsx,debug-panel.tsx,debug-timeline.tsx— debug alatideploy-dialog.tsx— deploy flow
Lokacija: src/types/index.ts (definicije), src/lib/runtime/handlers/ (logika), src/components/builder/nodes/ (prikaz)
| Node | Handler | Opis |
|---|---|---|
message |
message-handler.ts | Prikazuje tekst korisniku. Podržava {{variable}} interpolaciju |
button |
button-handler.ts | Dugmad za routing — korisnik bira sledeći korak |
capture |
capture-handler.ts | Hvata korisnički unos i čuva u varijablu |
condition |
condition-handler.ts | If/else grananje na osnovu izraza |
switch |
switch-handler.ts | Multi-branch routing (kao JS switch) |
set_variable |
set-variable-handler.ts | Postavlja/ažurira varijablu u kontekstu |
end |
end-handler.ts | Završava flow |
goto |
goto-handler.ts | Bezuslovni skok na drugi node |
wait |
wait-handler.ts | Pauza (fiksno vreme ili cron) |
loop |
loop-handler.ts | Iteracija (array, broj, uslov). Limit: 50 iteracija |
parallel |
parallel-handler.ts + parallel-streaming-handler.ts | Paralelno izvršavanje grana + merge |
retry |
retry-handler.ts | Exponential backoff retry wrapper |
| Node | Handler | Opis |
|---|---|---|
ai_response |
ai-response-handler.ts + streaming | LLM odgovor sa RAG, MCP alatima, agent tools. 20-step tool limit |
ai_classify |
ai-classify-handler.ts | Klasifikacija teksta u kategorije sa confidence score-om |
ai_extract |
ai-extract-handler.ts | Strukturovana ekstrakcija podataka sa Zod validacijom |
ai_summarize |
ai-summarize-handler.ts | Sumarizacija teksta ili konverzacije |
structured_output |
structured-output-handler.ts | Tipizovan JSON output sa Zod schema validacijom |
plan_and_execute |
plan-and-execute-handler.ts | ReAct-style planiranje — moćan model planira, jeftini izvršavaju |
reflexive_loop |
reflexive-loop-handler.ts | Self-correcting loop. Max 5 iteracija, konfigurabilan prag kvaliteta |
semantic_router |
semantic-router-handler.ts | Routing na osnovu semantičke sličnosti poruka sa intentima |
| Node | Handler | Opis |
|---|---|---|
kb_search |
kb-search-handler.ts | Hybrid search (semantic + BM25). Dynamic top-k. Analytics tracking |
web_search |
web-search-handler.ts | Web pretraga via Tavily ili Brave Search API |
web_fetch |
web-fetch-handler.ts | HTTP fetch + HTML/JSON parsing (cheerio). SSRF zaštita |
browser_action |
browser-action-handler.ts | Playwright headless browser automation |
embeddings |
embeddings-handler.ts | Generisanje embeddings-a (OpenAI, custom modeli) |
| Node | Handler | Opis |
|---|---|---|
memory_write |
memory-write-handler.ts | Čuva podatke u agent persistent memory (sa embedding-om) |
memory_read |
memory-read-handler.ts | Čita iz agent memorije (key/category/semantic search) |
| Node | Handler | Opis |
|---|---|---|
api_call |
api-call-handler.ts | HTTP pozivi (GET/POST/PUT/DELETE). Auth headers, retry, JSON mapping |
mcp_tool |
mcp-tool-handler.ts | Deterministički MCP tool poziv po imenu |
mcp_task_runner |
mcp-task-runner-handler.ts | Long-running MCP task sa progress tracking-om |
call_agent |
call-agent-handler.ts | Agent-to-Agent (A2A) poziv. Circuit breaker, rate limit, depth limit (3) |
email_send |
email-send-handler.ts | Slanje emaila via konfigurisani SMTP ili servis |
notification |
notification-handler.ts | Multi-channel notifikacije (Slack, Discord, email, webhook) |
webhook |
webhook-handler.ts | Outbound webhook sa retry i idempotency |
webhook_trigger |
webhook-trigger-handler.ts | Inbound webhook entry point. Kreira WebhookConfig u DB |
schedule_trigger |
schedule-trigger-handler.ts | Cron/interval trigger entry point. Kreira FlowSchedule u DB |
database_query |
database-query-handler.ts | SQL izvršavanje (MySQL/PostgreSQL) sa limitima |
file_operations |
file-operations-handler.ts | Čitanje/pisanje fajlova (S3, lokalni storage) |
image_generation |
image-generation-handler.ts | Generisanje slika (FAL.ai, Stability AI/DALL-E) |
speech_audio |
speech-audio-handler.ts | TTS (Eleven Labs) i STT (Deepgram) |
multimodal_input |
multimodal-input-handler.ts | Prihvatanje slika, audio, fajlova od korisnika |
desktop_app |
desktop-app-handler.ts | Desktop automation (zahteva instaliranog agenta) |
google_workspace |
(via MCP proxy) | Google Sheets, Docs, Drive, Calendar, Gmail |
| Node | Handler | Opis |
|---|---|---|
format_transform |
format-transform-handler.ts | JSON↔CSV↔XML↔YAML konverzija |
function |
function-handler.ts | Sandboxed JS/TS izvršavanje (vm2, 5s timeout) |
python_code |
python-code-handler.ts | Python izvršavanje u subprocess sandboxu |
code_interpreter |
code-interpreter-handler.ts | Arbitrary code execution sa output capture |
| Node | Handler | Opis |
|---|---|---|
evaluator |
evaluator-handler.ts | AI-powered content evaluacija sa criteria scoring |
trajectory_evaluator |
trajectory-evaluator-handler.ts | Evaluacija agent reasoning trajectory (korak-po-korak) |
guardrails |
guardrails-handler.ts | Content moderation, PII detekcija, prompt injection odbrana |
human_approval |
human-approval-handler.ts | Pauzira flow i čeka human decision |
cost_monitor |
cost-monitor-handler.ts | Token budget tracking + alerting. Adaptive mode za auto-downgrade |
| Node | Handler | Opis |
|---|---|---|
ab_test |
ab-test-handler.ts | A/B traffic splitting sa weighted routing |
aggregate |
aggregate-handler.ts | Merge rezultata iz paralelnih grana |
cache |
cache-handler.ts | Redis caching sa TTL i sourceHandle routing-om |
learn |
learn-handler.ts | ECC pattern extraction iz AgentExecution istorije |
Lokacija: src/lib/runtime/
| Fajl | Opis |
|---|---|
engine.ts |
Sinhroni execution loop. MAX_ITERATIONS=50, MAX_HISTORY=100 |
engine-streaming.ts |
Streaming varijanta — NDJSON ReadableStream output |
stream-protocol.ts |
StreamChunk encode/decode/writer. Tipovi: message, stream_start/delta/end, done, error |
context.ts |
Load/save conversation context iz DB |
template.ts |
{{variable}} interpolacija. Podržava nested paths i bracket notation |
debug-controller.ts |
Debug session state machine (breakpoints, step, resume, inspect) |
python-executor.ts |
Python execution via Pyodide WASM worker |
workers/pyodide-node-worker.js |
Node.js Worker thread sa Pyodide |
types.ts |
RuntimeContext, ExecutionResult, NodeHandler, StreamChunk tipovi |
handlers/index.ts |
Registry svih 55 handlera |
Sigurnosni limiti: MAX_ITERATIONS=50 · MAX_HISTORY=100 · function timeout 5s · Python timeout 30s
Lokacija: src/app/chat/[agentId]/page.tsx, src/components/chat/
- Streaming chat sa NDJSON protokolom
use-streaming-chat.tshook — line-buffered NDJSON parser, AbortController (1800s timeout)- Pipeline progress prikaz za multi-agent workflow-ove
- Prikaz citata iz Knowledge Base
pipeline-progress.tsx— real-time progress indikatorplot-renderer.tsx— Recharts vizualizacije u chat output-u- Embed widget podrška (
/embed/[agentId]) - Public embed.js script za ugradnju na spoljne sajtove
Lokacija: src/lib/knowledge/, src/app/knowledge/[agentId]/page.tsx
- Parseri: PDF (pdf-parse), DOCX (mammoth), HTML (cheerio), XLSX (xlsx), PPTX (JSZip), plain text
- Chunking: 5 strategija — recursive, markdown, code, sentence, fixed (400 tokena, 20% overlap)
- Embeddings: OpenAI text-embedding-3-small (1536 dim), text-embedding-3-large (3072 dim)
- Deduplication: SHA-256 content hash, pronalazi duplicate chunks pre embedding-a
- Progress tracking: 6 faza (parsing→chunking→dedup→embedding→storing→complete) u bazi
- Max file: 10MB, dozvoljeni tipovi: PDF/DOCX/XLSX/CSV/PPTX
- Hybrid search: semantic (pgvector cosine) + BM25 keyword → RRF fusion (70% semantic, 30% BM25)
- HNSW index: m=16, ef_construction=64. Dynamic efSearch (40/60/100 za kratke/srednje/duge upite)
- GIN index: Full-text search za BM25
- Threshold: 0.25 similarity minimum
- Dynamic top-k: 5 za kratke upite, 8 za duže
- Parent document retrieval: vraća širi kontekst oko matched chunks
- Query transformation: HyDE (hypothetical document embedding), multi-query expansion
- Reranking: LLM rubric (deepseek-chat) ili Cohere Rerank v3.5
- Context ordering: relevance, lost-in-middle, chronological, diversity (MMR-like)
- Metadata filtering: 10 operatora (eq/neq/gt/gte/lt/lte/in/nin/contains/exists)
- Embedding cache: Redis 600s TTL. Semaphore: max 3 concurrent embedding poziva
- Drift detection: detektuje mismatch embedding modela
- RAGAS evaluation: faithfulness, contextPrecision, contextRecall, answerRelevancy
- Analytics: source/chunk stats, token distribucija, top retrieved chunks
- Maintenance: dead chunk cleanup, scheduled re-ingestion
Lokacija: src/lib/webhooks/, src/app/webhooks/[agentId]/page.tsx
- Standard Webhooks spec: HMAC-SHA256, x-webhook-id/timestamp/signature headers, 5-min timestamp window
- Idempotency: @@unique na WebhookExecution.idempotencyKey — duplikat = 409
- Event filtering: po tipu eventa (GitHub, Slack, Stripe, generic)
- Body/header mapping: JSONPath, dot notation, bracket notation
- Rotation:
POST .../rotategeneriše novi HMAC ključ - Replay: re-izvršava webhook sa originalnim payload-om
- Execution log: status, payload, duration, replay chain
- Rate limit: 60 req/min po webhookId
- Provider presets: GitHub, Stripe, Slack, Generic (pre-konfigurisani maperi)
- Slack URL verification: automatski odgovara na challenge pre signature check-a
- UI: Dva panela — lista + detalj sa Executions/Configuration/Test tabovima
Lokacija: src/lib/scheduler/, API: /api/agents/[agentId]/schedules
- Tipovi: CRON (5-field), INTERVAL (1-10080 min), MANUAL
- IANA timezone podrška
- Preview: sledeći N vremena izvršavanja za dati cron izraz
- Execution history: status, duration, tokenUsage, errorMessage po execuciji
- Failure notifications: multi-channel upozorenja pri consecutive failure-ima
- Auto-sync: schedule_trigger node → FlowSchedule DB zapis pri deploy-u
- Railway cron:
/api/cron/trigger-scheduled-flows— CRON_SECRET zaštita - Stats API: total runs, success rate, avg duration
Lokacija: src/lib/evals/, src/app/evals/[agentId]/page.tsx
| Sloj | Tip | Opis |
|---|---|---|
| L1 Deterministic | exact_match | Tačno poklapanje stringa |
| L1 | contains | Sadrži substring |
| L1 | icontains | Case-insensitive contains |
| L1 | not_contains | Ne sadrži |
| L1 | regex | Regex poklapanje |
| L1 | starts_with | Počinje sa |
| L1 | json_valid | Validan JSON |
| L1 | latency | Vreme odgovora ispod praga |
| L2 Semantic | semantic_similarity | Cosine sličnost via OpenAI embedding (prag 0.8) |
| L3 LLM-Judge | llm_rubric | Custom criteria scoring (0-1) |
| L3 | kb_faithfulness | Hallucination detekcija vs KB |
| L3 | relevance | Odgovara li na pitanje |
- Auto-generisanje test case-ova iz system prompt-a i konverzacija
- A/B poređenje (po flow verziji ili modelu)
- CSV export rezultata (po run-u ili suite-u)
- runOnDeploy flag — automatski pokreće posle svakog deploy-a
- Scheduled evals (cron)
- Eval standards katalog sa pre-built assertion template-ima
- Trend chart (Recharts LineChart) za score kroz vreme
- Limiti: 20 suites/agent, 50 test cases/suite, 1 running run/suite
Lokacija: src/lib/cli-generator/, src/app/cli-generator/page.tsx
- 6 faza: analyze → design → implement → test → document → publish
- Dual target: Python (FastMCP) ili TypeScript (Node.js MCP SDK)
- Generisani fajlovi Python (10): main.py, bridge.py, server.py, init.py, conftest.py, test_bridge.py, test_server.py, requirements.txt, pyproject.toml, README.md
- Generisani fajlovi TypeScript (8): index.ts, bridge.ts, server.ts, bridge.test.ts, server.test.ts, package.json, tsconfig.json, README.md
- Auto-fix engine: automatski popravlja česte greške generisanog koda
- Python validator: proverava FastMCP import, @mcp.tool, mcp.run() posle generate-a
- TypeScript validator: 8 validacionih pravila za MCP SDK output
- Stuck detection: STUCK_THRESHOLD_MS = 5 min → AlertTriangle u UI
- Auto-resume: frontend detektuje stuck i automatski resume-uje
- Live file preview: SWR polling na /files tokom generisanja
- Download: ZIP arhiva generisanih fajlova
- Publish: registruje bridge kao MCP server u korisnikov nalog
Lokacija: src/lib/ecc/, services/ecc-skills-mcp/
- 29 ECC agent template-a u
src/data/ecc-agent-templates.json - 60+ skills ingested i vektorizovani u KB
- Skills Browser na
/skillssa search + faceted filter (jezik, kategorija, agent) - Meta-Orchestrator: LLM-based task routing ka odgovarajućem agentu
- Instinct sistem: pattern extraction iz AgentExecution istorije → confidence 0-1 → promovišu se u skills pri >0.85
- Learn node: hvata patterne iz korisnikove interakcije
- ECC Skills MCP server: poseban Railway servis (Python FastMCP, port 8000)
get_skill(name),search_skills(query, tag?),list_skills(language?)- asyncpg connection pool (min=2, max=10)
- TRENUTNO: numReplicas=1 (SPOF — videti SAAS-MIGRATION-PLAN.md Faza 0)
- Feature flag:
ECC_ENABLEDenv var (default: false) - Evolve API:
/api/skills/evolve— AI klasteruje instinkte i generiše novi SKILL.md
Lokacija: src/lib/mcp/
- Transporti: Streamable HTTP (primarni) + SSE (backward compat)
- Connection pool: MAX_POOL_SIZE=50, IDLE_TTL=5min, auto-cleanup 60s
- Graceful degradation: ako MCP server ne odgovori — AI nastavlja bez alata
- Tool filtering: per-agent enabledTools array — samo odabrani alati se prosleđuju AI-u
- Featured servers: pre-konfigurisani MCP serveri (GitHub, Playwright, itd.)
- ECC Skills MCP: skills kao MCP resursi (
kb://agent-id/skill-name) - Google Workspace proxy:
/api/mcp/proxy/google-workspace/[tokenId]— OAuth token aware
Lokacija: src/lib/agents/agent-tools.ts
- Konvertuje sibling agente u Vercel AI SDK tool definicije
- AI dinamički odlučuje koji sub-agent pozvati na osnovu konteksta
- Timeout profili (AGENT_TIMEOUT_PROFILES):
- fast (45s): reality checker, validator, linter
- standard (120s): research, discovery, product, analysis
- slow (150s): architect, design, plan, spec
- very-slow (180s): code, generate, implement, engineer
- default (120s): ostalo
- Per-agent override:
expectedDurationSecondsu Agent modelu - Zaštita: circuit breaker + rate limiter + circular call detekcija + depth limit (3) + audit log
- stopWhen: stepCountIs(20) za multi-step tool calling
Lokacija: src/lib/a2a/
- Google A2A v0.3 spec — AgentCard sa JSON-LD
- AgentCard: name, description, skills, inputModes, outputModes, capabilities
- Circuit breaker: CLOSED/OPEN/HALF_OPEN. Konfigurabilan prag failures
- Rate limiter: per-agent call rate limiting
- Distributed tracing: traceId, spanId, parentSpanId u AgentCallLog
- Discovery:
/api/a2a/agents— javni katalog dostupnih agenata - Agent Call Monitor UI:
src/components/a2a/agent-call-monitor.tsx - Stats API:
/api/agent-calls/stats
- Immutable snapshots pri svakom save-u (30s throttle, skip ako se ništa nije promenilo)
- Lifecycle: DRAFT → PUBLISHED → ARCHIVED (samo jedan PUBLISHED u jednom trenutku)
- Deploy: archivira stari PUBLISHED, publishuje novi, update Flow.activeVersionId, kreira FlowDeployment — sve u jednoj transakciji
- Rollback: kreira NOVU verziju sa starim sadržajem (non-destructive), zatim deploye
- Diff engine: poredi nodove po ID-u, edges po ID-u, varijable po imenu; ignoriše pomeranje nodova <10px
- Sandbox test pre deploy-a:
/api/agents/[agentId]/flow/versions/[versionId]/test - Deploy hook: automatski pokreće eval suites sa runOnDeploy=true
human_approvalnode pauzira flow i čeka human decision- HumanApprovalRequest model: PENDING → APPROVED/REJECTED/EXPIRED
/api/approvals— lista pending zahteva/api/approvals/[requestId]/respond— approve/reject
Lokacija: src/app/discover/page.tsx, /api/agents/discover
- Faceted search: kategorija, tag, model, sortiranje, scope (public/mine/all)
- 4 paralelne Prisma query-je (agenti, count, category stats, tag agregacija)
- 23 kategorije (uključujući marketplace-only)
- Debounced search 300ms
- Agent model fields:
category String?,tags String[],isPublic Boolean
Lokacija: src/data/agent-templates.json, src/app/templates/page.tsx
- 221 template-a u 19 kategorija
- Kategorije pokrivene: customer-support, coding, data, finance, hr, sales, research, writing, itd.
- Starter flows za odabrane template-e (pre-populated 3-5 nodova)
- Browse Templates tab u "New Agent" dialogu
Lokacija: src/app/analytics/page.tsx, /api/analytics
- Response time metrike po agentu i modelu
- KB search statistike
- Conversation counts i token usage
- Cost breakdown (USD)
- TTFB (Time To First Byte) tracking
- SWR-based real-time refresh
- Recharts vizualizacije
Lokacija: src/app/devsecops/page.tsx
- Interaktivna checklist za DevSecOps setup
- Arhitekturni dijagram
- Integrisano sa OWASP standardima
Lokacija: src/lib/auth.ts, src/middleware.ts, src/lib/security/, src/lib/safety/
- NextAuth v5 (beta.30), JWT strategija, 24h max age
- Provajderi: GitHub OAuth + Google OAuth (oba kondicionalna na env vars)
- CSRF Origin header check u middleware-u za POST/PUT/PATCH/DELETE
- HTTPOnly, SameSite=lax, Secure (prod) kolačići
src/lib/auth-adapter.ts— AES-256-GCM enkripcija OAuth tokena pre čuvanja u DBsrc/lib/crypto.ts— kriptografski utilities
requireAuth()irequireAgentOwner()u svakom API route-u- Body limit: 1MB default (
src/lib/api/body-limit.ts) - SSRF zaštita: validateExternalUrlWithDNS() sa private IP blocklist-om
- File upload: whitelist ekstenzija + MIME type validacija
- X-Content-Type-Options: nosniff
- X-Frame-Options: DENY
- Referrer-Policy: strict-origin-when-cross-origin
- Permissions-Policy
- NEDOSTAJE: Content-Security-Policy (CSP) — videti SAAS-MIGRATION-PLAN.md Faza 3
- READ(1), EXECUTE(2), ADMIN(3) hijerarhija
checkSkillAccess(agentId, skillId, level)— postoji ali se NE POZIVA u handler-ima- Problem: RBAC je implementiran ali nije enforced — videti SAAS-MIGRATION-PLAN.md Faza 0
- Pre-AI: prompt injection detekcija (pattern matching)
- Post-AI: PII redakcija (email, telefon, SSN, kreditna kartica, IP)
- Content moderation via Azure Content Safety (opcionalno)
- AuditLog za safety evente
Lokacija: src/lib/observability/, src/instrumentation.ts
- OpenTelemetry: custom implementacija (ne @opentelemetry/sdk-node)
tracer.ts— startSpan(), OTLP push. gen_ai.* semantic conventions (AAIF 2026)metrics.ts— counters/histograms. 30s flush interval ka OTLP endpoint-u- Opcionalno: radi samo ako je OTEL_EXPORTER_OTLP_ENDPOINT setovan
- PROBLEM: treba biti obavezan za SaaS — videti SAAS-MIGRATION-PLAN.md Faza 0
src/lib/logger.ts— strukturirani JSON logger sa redakcijom sensitive podatakaAuditLogmodel u Prisma — postoji ali je nedovoljno korišćen
Lokacija: src/lib/google-workspace/
- OAuth 2.1 + PKCE flow
- Podržane usluge: Sheets, Docs, Drive, Calendar, Gmail
GoogleOAuthTokenmodel za čuvanje token-a po korisniku+emailu- Auto-refresh pre isteka token-a
- MCP proxy:
/api/mcp/proxy/google-workspace/[tokenId]
Lokacija: src/app/api/auth/oauth/notion/
- OAuth flow za Notion
- Notion stranice/baze podataka kao KB sources ili agent output targeti
Lokacija: src/lib/ecc/obsidian-adapter.ts, /api/integrations/obsidian
- STATUS: Stub — interface definisan, implementacija odložena
- Plan: Obsidian vault na GitHub (Git-sync) kao persistent memory layer
Lokacija: src/lib/redis.ts
Šta se čuva u Redis-u:
- Rate limiting (sliding window ZSET, 60s window)
- Session cache (5min TTL, JWT dekodiran korisnik)
- MCP pool koordinacija između replika (10min TTL)
- Embedding cache (600s TTL)
- Embedding semaphore (max 3 concurrent poziva, Lua EVAL)
- BullMQ queues (planiran u Fazi 1)
Graceful fallback: ako Redis nije dostupan — sve funkcioniše sa in-memory fallback-om
Lokacija: railway.toml, nixpacks.toml, services/*/railway.toml
- Next.js 15.5, Turbopack dev, standalone output
numReplicas = 2(zahteva Redis za cross-replica state)- Health check:
/api/health, timeout 120s - Restart: ON_FAILURE, max 5 pokušaja
- Python FastMCP, port 8000
numReplicas = 1← SPOF, treba → 2 (videti Faza 0)- Health check:
/health, timeout 60s
deal-flow-agent/— FastAPI + Uvicorn, port 8000- 5 M&A due diligence agenata
- Scoring model: Screening 15% + Financial 30% + Risk 25% + Competitive 20% + Legal 10%
Lokacija: prisma/schema.prisma
| Model | Svrha |
|---|---|
| User | Korisnički nalog |
| Account | OAuth account linking (GitHub/Google) |
| Session | NextAuth sesije |
| VerificationToken | Email verifikacija |
| Agent | Centralni entitet agenta |
| Flow | Vizuelni workflow (JSON content) |
| FlowVersion | Immutable snapshot verzije |
| FlowDeployment | Audit log deploy-a |
| FlowTrace | Debug execution snapshot |
| KnowledgeBase | KB konfiguracija po agentu |
| KBSource | Izvor dokumenta (FILE/URL/SITEMAP/TEXT) |
| KBChunk | Tekst chunk sa pgvector embedding-om |
| Conversation | Chat sesija |
| Message | Chat poruka |
| AnalyticsEvent | Usage tracking (token, cost, latency) |
| MCPServer | MCP server konfiguracija |
| AgentMCPServer | Agent↔MCP server mapping |
| GoogleOAuthToken | Google Workspace OAuth token |
| AgentCard | A2A agent metadata |
| HumanApprovalRequest | Human-in-the-loop zahtev |
| AgentCallLog | A2A poziv sa distributed tracing |
| FlowSchedule | Cron schedule konfiguracija |
| ScheduledExecution | Execution log rasporeda |
| WebhookConfig | Inbound webhook endpoint |
| WebhookExecution | Webhook trigger log |
| EvalSuite | Test suite za agenta |
| EvalTestCase | Jedan test case |
| EvalRun | Jedno izvršavanje suite-a |
| EvalResult | Rezultat jednog test case-a |
| AgentMemory | Persistent memorija agenta sa embedding-om |
| AgentExecution | Execution trace (ECC) |
| Skill | Skill modul (ECC) |
| AgentSkillPermission | Agent↔Skill RBAC permisija |
| Instinct | Naučeni pattern (ECC, confidence 0-1) |
| CLIGeneration | CLI generator pipeline run |
| AuditLog | Compliance log |
| Servis | Env var | Modeli |
|---|---|---|
| DeepSeek | DEEPSEEK_API_KEY | deepseek-chat (default), deepseek-reasoner |
| OpenAI | OPENAI_API_KEY | gpt-4.1, gpt-4.1-mini, o3, o4-mini |
| Anthropic | ANTHROPIC_API_KEY | claude-sonnet-4-6, claude-haiku-4-5, claude-opus-4-6 |
| GOOGLE_GENERATIVE_AI_API_KEY | gemini-2.5-flash, gemini-2.5-pro | |
| Groq | GROQ_API_KEY | llama-3.3-70b, compound-beta |
| Mistral | MISTRAL_API_KEY | mistral-small/medium/large |
| Moonshot (Kimi) | MOONSHOT_API_KEY | kimi-k2, kimi-k2-thinking |
- OpenAI
text-embedding-3-small(1536 dim) +text-embedding-3-large(3072 dim)
- Tavily (TAVILY_API_KEY), Brave Search (BRAVE_SEARCH_API_KEY)
- FAL.ai (FAL_API_KEY) — slike
- Stability AI (STABILITY_API_KEY) — slike
- Eleven Labs (ELEVENLABS_API_KEY) — TTS
- Deepgram (DEEPGRAM_API_KEY) — STT
- Azure Content Safety (AZURE_CONTENT_SAFETY_KEY + ENDPOINT)
- GitHub, Google, Google Workspace, Notion
- PostgreSQL/Supabase (DATABASE_URL, DIRECT_URL)
- Redis (REDIS_URL)
- AWS S3 (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_S3_BUCKET)
- OTEL_EXPORTER_OTLP_ENDPOINT → Grafana Cloud/Jaeger
- OTEL_SERVICE_NAME (default: agent-studio)
- Framework: Vitest + @testing-library/react
- Broj: 2502+ testova u 179 test fajlova
- Lokacija:
src/**/__tests__/*.test.ts - Coverage: handlers, evals, webhooks, CLI generator, auth, security, safety, cache, cost
- Framework: Playwright (10 spec fajlova)
- Lokacija:
e2e/tests/ - Coverage: auth, dashboard, flow editor, chat streaming, KB, webhooks, import/export, eval gen, API routes
- Framework: k6
- Lokacija:
k6/load-test.js - Scenariji: smoke, skills_load, chat_load
- Thresholds: P95 <500ms (health), P95 <100ms (skills), P95 <5000ms (chat)
- Script:
scripts/pre-push-check.sh - 4 provere: TypeScript, Vitest, Lucide icon mocks, string konzistentnost
- Komanda:
pnpm precheck
| Problem | Gde | Prioritet |
|---|---|---|
| ECC MCP numReplicas=1 (SPOF) | services/ecc-skills-mcp/railway.toml L10 | Faza 0 |
| RBAC postoji ali nije enforced | src/lib/security/rbac.ts | Faza 0 |
| AuditLog se gotovo nigde ne poziva | src/lib/security/audit.ts | Faza 0 |
| OTEL je opcionalan | src/instrumentation.ts L33-43 | Faza 0 |
| Sinhrono izvršavanje blokira HTTP | src/lib/runtime/engine.ts | Faza 1 |
| Nema transactional email | package.json — nema email library | Faza 1.5 |
| Nema Sentry/error monitoring | package.json — nema @sentry/nextjs | Faza 1.5 |
| Nema Organization modela | prisma/schema.prisma | Faza 2 |
| Nema GDPR account deletion | API routes — ne postoji DELETE /user | Faza 2.5 |
| Nema CSP header | src/lib/api/security-headers.ts | Faza 3 |
| Session management basic | src/lib/auth.ts — nema refresh rotation | Faza 3 |
| Nema webhook retry logike | src/lib/webhooks/execute.ts | Faza 3.5 |
Dokument generisan automatskom analizom koda — april 2026. Ažuriraj kad se doda novi feature.