From d1a2e6856be77e7c89c41f78ef8760bcc524bca0 Mon Sep 17 00:00:00 2001 From: konard Date: Sun, 25 Jan 2026 19:29:21 +0100 Subject: [PATCH 1/4] Initial commit with task details Adding CLAUDE.md with task information for AI processing. This file will be removed when the task is complete. Issue: https://github.com/link-assistant/agent/issues/133 --- CLAUDE.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 CLAUDE.md diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..4455cd8 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,5 @@ +Issue to solve: https://github.com/link-assistant/agent/issues/133 +Your prepared branch: issue-133-814817b2de1f +Your prepared working directory: /tmp/gh-issue-solver-1769365759967 + +Proceed. From 4a9e8db91c91e2cf5a802eb7da3435fe4e316e12 Mon Sep 17 00:00:00 2001 From: konard Date: Sun, 25 Jan 2026 19:33:34 +0100 Subject: [PATCH 2/4] docs: add case study for grok-code model not supported error (#133) This case study documents the "Model grok-code not supported" error that occurred on 2026-01-25 when xAI ended the free tier for Grok Code Fast 1 on OpenCode Zen. Key findings: - Root cause: xAI business decision to end free tier (not a technical bug) - Impact: All users relying on default grok-code model are affected - Solutions: Use alternative free models (gpt-5-nano, big-pickle) or paid models The case study includes: - Complete timeline of events - Root cause analysis - Immediate workarounds - Long-term solution recommendations - Related external and internal references Fixes #133 Co-Authored-By: Claude Opus 4.5 --- docs/case-studies/issue-133/README.md | 240 + .../issue-133/claude-solution-log.txt | 4566 +++++++++++++++++ .../issue-133/grok-code-error-log.txt | 76 + 3 files changed, 4882 insertions(+) create mode 100644 docs/case-studies/issue-133/README.md create mode 100644 docs/case-studies/issue-133/claude-solution-log.txt create mode 100644 docs/case-studies/issue-133/grok-code-error-log.txt diff --git a/docs/case-studies/issue-133/README.md b/docs/case-studies/issue-133/README.md new file mode 100644 index 0000000..be86c2c --- /dev/null +++ b/docs/case-studies/issue-133/README.md @@ -0,0 +1,240 @@ +# Case Study: Model grok-code Not Supported Error + +**Issue ID:** #133 +**Created:** 2026-01-25 +**Status:** Analysis Complete + +## Summary + +When attempting to use the AI solver with the `--tool agent` option and the default `grok-code` model, the system returns a 401 error: "Model grok-code not supported". This occurs because xAI ended their free tier for the Grok Code Fast 1 model on OpenCode Zen around January 24, 2026. + +## Timeline of Events + +### Background (Before Incident) + +| Date | Event | +|------|-------| +| August 2025 | xAI releases Grok Code Fast 1 (`grok-code-fast-1`) optimized for agentic coding | +| Late 2025 | OpenCode Zen adds Grok Code Fast 1 as a free model for users | +| - | The agent CLI sets `opencode/grok-code` as the default model due to its zero cost | + +### Incident Timeline + +| Timestamp (UTC) | Event | +|-----------------|-------| +| 2026-01-24 | xAI ends free tier for Grok Code Fast 1 on OpenCode Zen | +| 2026-01-24 | [GitHub Issue #10348](https://github.com/anomalyco/opencode/issues/10348) reports model disappearance | +| 2026-01-25T16:09:54Z | User `konard` starts solve session for issue #37 using Claude Opus (works successfully) | +| 2026-01-25T16:14:32Z | First solution draft completed with ~$3.18 cost | +| 2026-01-25T18:17:56Z | User `kogeletey` provides feedback on PR #38 | +| 2026-01-25T18:18:25Z | Solve session starts with `--tool agent` (uses grok-code by default) | +| 2026-01-25T18:18:44Z | API returns error: "Model grok-code not supported" with 401 status | +| 2026-01-25T18:18:49Z | Session terminates without completing any work | + +## Root Cause Analysis + +### Primary Cause: xAI Business Decision + +The error is not a technical bug but a result of a business/policy change: + +1. **xAI ended the free tier** for Grok Code Fast 1 on OpenCode Zen +2. The OpenCode Zen API now returns 401 Unauthorized for `grok-code` model requests +3. The agent CLI's default model configuration still points to `opencode/grok-code` + +### Contributing Factors + +1. **No advance notice** - Users received no warning before the model was removed +2. **Default model configuration** - The agent CLI uses `grok-code` as its default, making all unspecified model requests fail +3. **No fallback mechanism** - The system has no automatic fallback to alternative free models + +### Error Details + +```json +{ + "type": "error", + "error": { + "name": "APIError", + "data": { + "message": "Model grok-code not supported", + "statusCode": 401, + "isRetryable": false, + "responseBody": "{\"type\":\"error\",\"error\":{\"type\":\"ModelError\",\"message\":\"Model grok-code not supported\"}}" + } + } +} +``` + +**Key observations:** +- HTTP 401 indicates authentication/authorization failure +- `isRetryable: false` means retry logic won't help +- Error type is `ModelError`, not a network or rate limit error + +## Impact Assessment + +### Affected Functionality + +| Component | Impact | +|-----------|--------| +| `agent` CLI default behavior | Completely broken | +| `solve` with `--tool agent` | Cannot execute | +| Documentation (MODELS.md) | Outdated/misleading | +| User expectations | Free tier no longer available | + +### Scope + +- All users relying on the default `grok-code` model +- Automated systems configured without explicit model selection +- CI/CD pipelines using agent without `--model` flag + +## Solutions + +### Immediate Workarounds + +#### 1. Use Alternative Free Models (Recommended) + +```bash +# Use GPT 5 Nano (currently free) +echo "hello" | agent --model opencode/gpt-5-nano + +# Use Big Pickle (currently free) +echo "hello" | agent --model opencode/big-pickle +``` + +#### 2. Use Paid Models on OpenCode Zen + +```bash +# Use Claude Haiku 3.5 (affordable paid option) +echo "hello" | agent --model opencode/claude-haiku-3-5 + +# Use Claude Sonnet 4.5 (high quality) +echo "hello" | agent --model opencode/sonnet +``` + +#### 3. Use Direct Provider Access + +```bash +# Use Anthropic directly (requires API key) +export ANTHROPIC_API_KEY=your_key +echo "hello" | agent --model anthropic/claude-sonnet-4 + +# Use Groq (requires API key, has free tier) +export GROQ_API_KEY=your_key +echo "hello" | agent --model groq/llama-3.3-70b-versatile +``` + +### Long-Term Solutions + +#### Solution 1: Update Default Model + +Update the agent CLI to use a different free model as default: + +**Pros:** +- Minimal code changes +- Immediate fix for all users + +**Cons:** +- GPT 5 Nano or Big Pickle may not match Grok Code's quality +- Risk of same issue recurring if that model is also removed + +#### Solution 2: Implement Model Availability Checking + +Add a pre-flight check for model availability before starting sessions: + +```typescript +async function checkModelAvailability(modelId: string): Promise { + try { + // Make a minimal API call to verify model is available + const response = await fetch(`${OPENCODE_API}/models/${modelId}/check`); + return response.ok; + } catch { + return false; + } +} +``` + +**Pros:** +- Early failure with clear error message +- Can suggest alternatives when model unavailable + +**Cons:** +- Adds latency to session start +- Requires API support for availability endpoint + +#### Solution 3: Implement Automatic Fallback Chain + +Configure a fallback chain of models to try: + +```typescript +const MODEL_FALLBACK_CHAIN = [ + 'opencode/grok-code', // Primary (if available) + 'opencode/gpt-5-nano', // Free fallback #1 + 'opencode/big-pickle', // Free fallback #2 + 'opencode/claude-haiku-3-5' // Paid fallback +]; +``` + +**Pros:** +- Resilient to model removals +- Graceful degradation + +**Cons:** +- May surprise users with different model behavior +- Paid fallback could incur unexpected costs + +#### Solution 4: Add Model Status Monitoring + +Implement proactive monitoring of model availability: + +1. Periodic health checks on all configured models +2. Update documentation automatically when models become unavailable +3. Alert users/admins when model status changes + +## Related Resources + +### External References + +- [Grok Code Fast 1 disappeared from OpenCode Zen - Issue #10348](https://github.com/anomalyco/opencode/issues/10348) +- [OpenCode Zen Documentation](https://opencode.ai/docs/zen/) +- [OpenCode Providers Documentation](https://opencode.ai/docs/providers/) +- [xAI API Documentation](https://docs.x.ai/docs/models) +- [OpenRouter Grok Code Fast 1](https://openrouter.ai/x-ai/grok-code-fast-1) + +### Internal References + +- [MODELS.md](/MODELS.md) - Current model documentation (needs update) +- [Claude OAuth Documentation](/docs/claude-oauth.md) - Alternative authentication method + +## Files in This Case Study + +| File | Description | +|------|-------------| +| `README.md` | This analysis document | +| `grok-code-error-log.txt` | Complete error log from failed session | +| `claude-solution-log.txt` | Log from successful Claude Opus session for comparison | + +## Lessons Learned + +1. **External dependencies can disappear without notice** - Free tier models from third parties can be removed at any time without advance warning to downstream users. + +2. **Default configurations should be resilient** - Critical defaults (like the default model) should have fallback mechanisms or be set to the most stable option, not necessarily the cheapest. + +3. **Monitor third-party service announcements** - Subscribe to OpenCode and xAI announcements to get advance notice of changes. + +4. **Consider cost vs. reliability trade-offs** - Free models are cost-effective but may be less stable than paid options with SLAs. + +5. **Document model alternatives clearly** - Users should easily find alternative models when their preferred option becomes unavailable. + +## Recommendations + +### Immediate Actions + +1. **Update MODELS.md** - Remove or mark Grok Code Fast 1 as unavailable +2. **Change default model** - Update to `opencode/gpt-5-nano` or another available free model +3. **Add clear error message** - When model is unavailable, suggest alternatives + +### Future Improvements + +1. **Implement model availability API** - Check model availability before starting sessions +2. **Add fallback chain** - Automatically try alternative models when primary fails +3. **Create status page** - Maintain a page showing current model availability +4. **Add deprecation warnings** - Warn users when using models that may be removed soon diff --git a/docs/case-studies/issue-133/claude-solution-log.txt b/docs/case-studies/issue-133/claude-solution-log.txt new file mode 100644 index 0000000..7cfbdd0 --- /dev/null +++ b/docs/case-studies/issue-133/claude-solution-log.txt @@ -0,0 +1,4566 @@ +Solution draft log for https://github.com/kg-ar288/egida-test/pull/38 + +# Solve.mjs Log - 2026-01-25T16:09:54.488Z + +[2026-01-25T16:09:54.489Z] [INFO] 📁 Log file: /home/hive/solve-2026-01-25T16-09-54-488Z.log +[2026-01-25T16:09:54.490Z] [INFO] (All output will be logged here) +[2026-01-25T16:09:54.941Z] [INFO] +[2026-01-25T16:09:54.942Z] [INFO] 🚀 solve v1.9.0 +[2026-01-25T16:09:54.942Z] [INFO] 🔧 Raw command executed: +[2026-01-25T16:09:54.942Z] [INFO] /home/hive/.nvm/versions/node/v20.20.0/bin/node /home/hive/.bun/bin/solve https://github.com/kg-ar288/egida-test/issues/37 --model opus --attach-logs --verbose --no-tool-check --auto-resume-on-limit-reset --tokens-budget-stats +[2026-01-25T16:09:54.942Z] [INFO] +[2026-01-25T16:09:54.962Z] [INFO] +[2026-01-25T16:09:54.963Z] [WARNING] âš ī¸ SECURITY WARNING: --attach-logs is ENABLED +[2026-01-25T16:09:54.963Z] [INFO] +[2026-01-25T16:09:54.964Z] [INFO] This option will upload the complete solution draft log file to the Pull Request. +[2026-01-25T16:09:54.964Z] [INFO] The log may contain sensitive information such as: +[2026-01-25T16:09:54.964Z] [INFO] â€ĸ API keys, tokens, or secrets +[2026-01-25T16:09:54.964Z] [INFO] â€ĸ File paths and directory structures +[2026-01-25T16:09:54.965Z] [INFO] â€ĸ Command outputs and error messages +[2026-01-25T16:09:54.965Z] [INFO] â€ĸ Internal system information +[2026-01-25T16:09:54.965Z] [INFO] +[2026-01-25T16:09:54.966Z] [INFO] âš ī¸ DO NOT use this option with public repositories or if the log +[2026-01-25T16:09:54.966Z] [INFO] might contain sensitive data that should not be shared publicly. +[2026-01-25T16:09:54.966Z] [INFO] +[2026-01-25T16:09:54.966Z] [INFO] Continuing in 5 seconds... (Press Ctrl+C to abort) +[2026-01-25T16:09:54.966Z] [INFO] +[2026-01-25T16:09:59.973Z] [INFO] +[2026-01-25T16:09:59.994Z] [INFO] 💾 Disk space check: 34062MB available (2048MB required) ✅ +[2026-01-25T16:09:59.995Z] [INFO] 🧠 Memory check: 8292MB available, swap: 4095MB (0MB used), total: 12387MB (256MB required) ✅ +[2026-01-25T16:10:00.015Z] [INFO] ⏊ Skipping tool connection validation (dry-run mode or skip-tool-connection-check enabled) +[2026-01-25T16:10:00.016Z] [INFO] ⏊ Skipping GitHub authentication check (dry-run mode or skip-tool-connection-check enabled) +[2026-01-25T16:10:00.016Z] [INFO] 📋 URL validation: +[2026-01-25T16:10:00.017Z] [INFO] Input URL: https://github.com/kg-ar288/egida-test/issues/37 +[2026-01-25T16:10:00.017Z] [INFO] Is Issue URL: true +[2026-01-25T16:10:00.017Z] [INFO] Is PR URL: false +[2026-01-25T16:10:00.017Z] [INFO] 🔍 Checking repository access for auto-fork... +[2026-01-25T16:10:01.079Z] [INFO] Repository visibility: private +[2026-01-25T16:10:01.080Z] [INFO] ✅ Auto-fork: Write access detected to private repository, working directly on repository +[2026-01-25T16:10:01.081Z] [INFO] 🔍 Checking repository write permissions... +[2026-01-25T16:10:01.496Z] [INFO] ✅ Repository write access: Confirmed +[2026-01-25T16:10:01.919Z] [INFO] Repository visibility: private +[2026-01-25T16:10:01.920Z] [INFO] Auto-cleanup default: true (repository is private) +[2026-01-25T16:10:01.921Z] [INFO] 🔍 Auto-continue enabled: Checking for existing PRs for issue #37... +[2026-01-25T16:10:01.923Z] [INFO] 🔍 Checking for existing branches in kg-ar288/egida-test... +[2026-01-25T16:10:03.128Z] [INFO] 📝 No existing PRs found for issue #37 - creating new PR +[2026-01-25T16:10:03.128Z] [INFO] 📝 Issue mode: Working with issue #37 +[2026-01-25T16:10:03.130Z] [INFO] +Creating temporary directory: /tmp/gh-issue-solver-1769357403129 +[2026-01-25T16:10:03.133Z] [INFO] +đŸ“Ĩ Cloning repository: kg-ar288/egida-test +[2026-01-25T16:10:04.460Z] [INFO] ✅ Cloned to: /tmp/gh-issue-solver-1769357403129 +[2026-01-25T16:10:04.692Z] [INFO] +📌 Default branch: release +[2026-01-25T16:10:04.757Z] [INFO] +đŸŒŋ Creating branch: issue-37-eb7bb03ec86d from release (default) +[2026-01-25T16:10:04.822Z] [INFO] 🔍 Verifying: Branch creation... +[2026-01-25T16:10:04.877Z] [INFO] ✅ Branch created: issue-37-eb7bb03ec86d +[2026-01-25T16:10:04.877Z] [INFO] ✅ Current branch: issue-37-eb7bb03ec86d +[2026-01-25T16:10:04.878Z] [INFO] Branch operation: Create new branch +[2026-01-25T16:10:04.878Z] [INFO] Branch verification: Matches expected +[2026-01-25T16:10:04.881Z] [INFO] +🚀 Auto PR creation: ENABLED +[2026-01-25T16:10:04.882Z] [INFO] Creating: Initial commit and draft PR... +[2026-01-25T16:10:04.883Z] [INFO] +[2026-01-25T16:10:04.935Z] [INFO] Using CLAUDE.md mode (--claude-file=true, --gitkeep-file=false, --auto-gitkeep-file=true) +[2026-01-25T16:10:04.936Z] [INFO] 📝 Creating: CLAUDE.md with task details +[2026-01-25T16:10:04.937Z] [INFO] Issue URL from argv['issue-url']: https://github.com/kg-ar288/egida-test/issues/37 +[2026-01-25T16:10:04.937Z] [INFO] Issue URL from argv._[0]: undefined +[2026-01-25T16:10:04.937Z] [INFO] Final issue URL: https://github.com/kg-ar288/egida-test/issues/37 +[2026-01-25T16:10:04.938Z] [INFO] ✅ File created: CLAUDE.md +[2026-01-25T16:10:04.938Z] [INFO] đŸ“Ļ Adding file: To git staging +[2026-01-25T16:10:05.067Z] [INFO] Git status after add: A CLAUDE.md +[2026-01-25T16:10:05.068Z] [INFO] 📝 Creating commit: With CLAUDE.md file +[2026-01-25T16:10:05.131Z] [INFO] ✅ Commit created: Successfully with CLAUDE.md +[2026-01-25T16:10:05.132Z] [INFO] Commit output: [issue-37-eb7bb03ec86d 0a9ffc7] Initial commit with task details + 1 file changed, 5 insertions(+) + create mode 100644 CLAUDE.md +[2026-01-25T16:10:05.183Z] [INFO] Commit hash: 0a9ffc7... +[2026-01-25T16:10:05.239Z] [INFO] Latest commit: 0a9ffc7 Initial commit with task details +[2026-01-25T16:10:05.297Z] [INFO] Git status: clean +[2026-01-25T16:10:05.349Z] [INFO] Remotes: origin https://github.com/kg-ar288/egida-test.git (fetch) +[2026-01-25T16:10:05.405Z] [INFO] Branch info: * issue-37-eb7bb03ec86d 0a9ffc7 [origin/release: ahead 1] Initial commit with task details + release df96d0e [origin/release] feat: schema +[2026-01-25T16:10:05.405Z] [INFO] 📤 Pushing branch: To remote repository... +[2026-01-25T16:10:05.406Z] [INFO] Push command: git push -u origin issue-37-eb7bb03ec86d +[2026-01-25T16:10:06.198Z] [INFO] Push exit code: 0 +[2026-01-25T16:10:06.199Z] [INFO] Push output: remote: +remote: Create a pull request for 'issue-37-eb7bb03ec86d' on GitHub by visiting: +remote: https://github.com/kg-ar288/egida-test/pull/new/issue-37-eb7bb03ec86d +remote: +To https://github.com/kg-ar288/egida-test.git + * [new branch] issue-37-eb7bb03ec86d -> issue-37-eb7bb03ec86d +branch 'issue-37-eb7bb03ec86d' set up to track 'origin/issue-37-eb7bb03ec86d'. +[2026-01-25T16:10:06.199Z] [INFO] ✅ Branch pushed: Successfully to remote +[2026-01-25T16:10:06.199Z] [INFO] Push output: remote: +remote: Create a pull request for 'issue-37-eb7bb03ec86d' on GitHub by visiting: +remote: https://github.com/kg-ar288/egida-test/pull/new/issue-37-eb7bb03ec86d +remote: +To https://github.com/kg-ar288/egida-test.git + * [new branch] issue-37-eb7bb03ec86d -> issue-37-eb7bb03ec86d +branch 'issue-37-eb7bb03ec86d' set up to track 'origin/issue-37-eb7bb03ec86d'. +[2026-01-25T16:10:06.200Z] [INFO] Waiting for GitHub to sync... +[2026-01-25T16:10:08.711Z] [INFO] Compare API check: 1 commit(s) ahead of release +[2026-01-25T16:10:08.711Z] [INFO] GitHub compare API ready: 1 commit(s) found +[2026-01-25T16:10:09.063Z] [INFO] Branch verified on GitHub: issue-37-eb7bb03ec86d +[2026-01-25T16:10:09.388Z] [INFO] Remote commit SHA: 0a9ffc7... +[2026-01-25T16:10:09.388Z] [INFO] 📋 Getting issue: Title from GitHub... +[2026-01-25T16:10:09.735Z] [INFO] Issue title: "Implement batch actions to leak detection" +[2026-01-25T16:10:09.736Z] [INFO] 👤 Getting user: Current GitHub account... +[2026-01-25T16:10:10.046Z] [INFO] Current user: konard +[2026-01-25T16:10:10.313Z] [INFO] User has collaborator access +[2026-01-25T16:10:10.314Z] [INFO] User has collaborator access +[2026-01-25T16:10:10.314Z] [INFO] 🔄 Fetching: Latest release branch... +[2026-01-25T16:10:10.954Z] [INFO] ✅ Base updated: Fetched latest release +[2026-01-25T16:10:10.955Z] [INFO] 🔍 Checking: Commits between branches... +[2026-01-25T16:10:11.010Z] [INFO] Commits ahead of origin/release: 1 +[2026-01-25T16:10:11.011Z] [INFO] ✅ Commits found: 1 commit(s) ahead +[2026-01-25T16:10:11.012Z] [INFO] 🔀 Creating PR: Draft pull request... +[2026-01-25T16:10:11.013Z] [INFO] đŸŽ¯ Target branch: release (default) +[2026-01-25T16:10:11.013Z] [INFO] PR Title: [WIP] Implement batch actions to leak detection +[2026-01-25T16:10:11.015Z] [INFO] Base branch: release +[2026-01-25T16:10:11.015Z] [INFO] Head branch: issue-37-eb7bb03ec86d +[2026-01-25T16:10:11.015Z] [INFO] Assignee: konard +[2026-01-25T16:10:11.015Z] [INFO] PR Body: +## 🤖 AI-Powered Solution Draft + +This pull request is being automatically generated to solve issue #37. + +### 📋 Issue Reference +Fixes #37 + +### 🚧 Status +**Work in Progress** - The AI assistant is currently analyzing and implementing the solution draft. + +### 📝 Implementation Details +_Details will be added as the solution draft is developed..._ + +--- +*This PR was created automatically by the AI issue solver* +[2026-01-25T16:10:11.018Z] [INFO] Command: cd "/tmp/gh-issue-solver-1769357403129" && gh pr create --draft --title "$(cat '/tmp/pr-title-1769357411018.txt')" --body-file "/tmp/pr-body-1769357411017.md" --base release --head issue-37-eb7bb03ec86d --assignee konard +[2026-01-25T16:10:14.126Z] [INFO] 🔍 Verifying: PR creation... +[2026-01-25T16:10:14.551Z] [INFO] ✅ Verification: PR exists on GitHub +[2026-01-25T16:10:14.552Z] [INFO] ✅ PR created: #38 +[2026-01-25T16:10:14.552Z] [INFO] 📍 PR URL: https://github.com/kg-ar288/egida-test/pull/38 +[2026-01-25T16:10:14.553Z] [INFO] 👤 Assigned to: konard +[2026-01-25T16:10:14.553Z] [INFO] 🔗 Linking: Issue #37 to PR #38... +[2026-01-25T16:10:14.980Z] [INFO] Issue node ID: I_kwDOQwo1gM7lr0_0 +[2026-01-25T16:10:15.372Z] [INFO] PR node ID: PR_kwDOQwo1gM6_PiG3 +[2026-01-25T16:10:15.913Z] [INFO] +[2026-01-25T16:10:15.914Z] [WARNING] âš ī¸ ISSUE LINK MISSING: PR not linked to issue +[2026-01-25T16:10:15.914Z] [INFO] +[2026-01-25T16:10:15.915Z] [WARNING] The PR wasn't linked to issue #37 +[2026-01-25T16:10:15.915Z] [WARNING] Expected: "Fixes #37" in PR body +[2026-01-25T16:10:15.915Z] [INFO] +[2026-01-25T16:10:15.915Z] [WARNING] To fix manually: +[2026-01-25T16:10:15.915Z] [WARNING] 1. Edit the PR description at: https://github.com/kg-ar288/egida-test/pull/38 +[2026-01-25T16:10:15.915Z] [WARNING] 2. Ensure it contains: Fixes #37 +[2026-01-25T16:10:15.916Z] [INFO] +[2026-01-25T16:10:16.230Z] [INFO] 👤 Current user: konard +[2026-01-25T16:10:16.231Z] [INFO] +📊 Comment counting conditions: +[2026-01-25T16:10:16.231Z] [INFO] prNumber: 38 +[2026-01-25T16:10:16.231Z] [INFO] branchName: issue-37-eb7bb03ec86d +[2026-01-25T16:10:16.231Z] [INFO] isContinueMode: false +[2026-01-25T16:10:16.231Z] [INFO] Will count comments: true +[2026-01-25T16:10:16.231Z] [INFO] đŸ’Ŧ Counting comments: Checking for new comments since last commit... +[2026-01-25T16:10:16.231Z] [INFO] PR #38 on branch: issue-37-eb7bb03ec86d +[2026-01-25T16:10:16.231Z] [INFO] Owner/Repo: kg-ar288/egida-test +[2026-01-25T16:10:16.740Z] [INFO] 📅 Last commit time (from API): 2026-01-25T16:10:05.000Z +[2026-01-25T16:10:17.712Z] [INFO] đŸ’Ŧ New PR comments: 0 +[2026-01-25T16:10:17.712Z] [INFO] đŸ’Ŧ New PR review comments: 0 +[2026-01-25T16:10:17.713Z] [INFO] đŸ’Ŧ New issue comments: 0 +[2026-01-25T16:10:17.713Z] [INFO] Total new comments: 0 +[2026-01-25T16:10:17.713Z] [INFO] Comment lines to add: No (saving tokens) +[2026-01-25T16:10:17.714Z] [INFO] PR review comments fetched: 0 +[2026-01-25T16:10:17.714Z] [INFO] PR conversation comments fetched: 0 +[2026-01-25T16:10:17.714Z] [INFO] Total PR comments checked: 0 +[2026-01-25T16:10:20.410Z] [INFO] Feedback info will be added to prompt: +[2026-01-25T16:10:20.411Z] [INFO] - Pull request description was edited after last commit +[2026-01-25T16:10:20.411Z] [INFO] 📅 Getting timestamps: From GitHub servers... +[2026-01-25T16:10:21.007Z] [INFO] 📝 Issue updated: 2026-01-25T16:09:32.000Z +[2026-01-25T16:10:21.508Z] [INFO] đŸ’Ŧ Comments: None found +[2026-01-25T16:10:21.874Z] [INFO] 🔀 Recent PR: 2026-01-25T16:10:12.000Z +[2026-01-25T16:10:21.875Z] [INFO] +✅ Reference time: 2026-01-25T16:10:12.000Z +[2026-01-25T16:10:21.875Z] [INFO] +🔍 Checking for uncommitted changes to include as feedback... +[2026-01-25T16:10:21.929Z] [INFO] ✅ No uncommitted changes found +[2026-01-25T16:10:23.671Z] [INFO] 🎭 Playwright MCP detected - enabling browser automation hints +[2026-01-25T16:10:23.676Z] [INFO] +📝 Final prompt structure: +[2026-01-25T16:10:23.677Z] [INFO] Characters: 262 +[2026-01-25T16:10:23.677Z] [INFO] System prompt characters: 11837 +[2026-01-25T16:10:23.677Z] [INFO] Feedback info: Included +[2026-01-25T16:10:23.678Z] [INFO] +🤖 Executing Claude: OPUS +[2026-01-25T16:10:23.679Z] [INFO] Model: opus +[2026-01-25T16:10:23.679Z] [INFO] Working directory: /tmp/gh-issue-solver-1769357403129 +[2026-01-25T16:10:23.679Z] [INFO] Branch: issue-37-eb7bb03ec86d +[2026-01-25T16:10:23.679Z] [INFO] Prompt length: 262 chars +[2026-01-25T16:10:23.679Z] [INFO] System prompt length: 11837 chars +[2026-01-25T16:10:23.679Z] [INFO] Feedback info included: Yes (1 lines) +[2026-01-25T16:10:23.732Z] [INFO] 📈 System resources before execution: +[2026-01-25T16:10:23.733Z] [INFO] Memory: MemFree: 2588912 kB +[2026-01-25T16:10:23.733Z] [INFO] Load: 1.29 1.49 1.05 1/776 506518 +[2026-01-25T16:10:23.733Z] [INFO] +📝 Raw command: +[2026-01-25T16:10:23.733Z] [INFO] (cd "/tmp/gh-issue-solver-1769357403129" && claude --output-format stream-json --verbose --dangerously-skip-permissions --model claude-opus-4-5-20251101 -p "Issue to solve: https://github.com/kg-ar288/egida-test/issues/37 +Your prepared branch: issue-37-eb7bb03ec86d +Your prepared working directory: /tmp/gh-issue-solver-1769357403129 +Your prepared Pull Request: https://github.com/kg-ar288/egida-test/pull/38 + +Proceed. +" --append-system-prompt "You are an AI issue solver. You prefer to find the root cause of each and every issue. When you talk, you prefer to speak with facts which you have double-checked yourself or cite sources that provide evidence, like quote actual code or give references to documents or pages found on the internet. You are polite and patient, and prefer to assume good intent, trying your best to be helpful. If you are unsure or have assumptions, you prefer to test them yourself or ask questions to clarify requirements. +General guidelines. + - When you execute commands, always save their logs to files for easier reading if the output becomes large. + - When running commands, do not set a timeout yourself — let them run as long as needed (default timeout - 2 minutes is more than enough), and once they finish, review the logs in the file. + - When running sudo commands (especially package installations like apt-get, yum, npm install, etc.), always run them in the background to avoid timeout issues and permission errors when the process needs to be killed. Use the run_in_background parameter or append & to the command. + - When CI is failing or user reports failures, consider adding a detailed investigation protocol to your todo list with these steps: + Step 1: List recent runs with timestamps using: gh run list --repo kg-ar288/egida-test --branch issue-37-eb7bb03ec86d --limit 5 --json databaseId,conclusion,createdAt,headSha + Step 2: Verify runs are after the latest commit by checking timestamps and SHA + Step 3: For each non-passing run, download logs to preserve them: gh run view {run-id} --repo kg-ar288/egida-test --log > ci-logs/{workflow}-{run-id}.log + Step 4: Read each downloaded log file using Read tool to understand the actual failures + Step 5: Report findings with specific errors and line numbers from logs + This detailed investigation is especially helpful when user mentions CI failures, asks to investigate logs, you see non-passing status, or when finalizing a PR. + Note: If user says \"failing\" but tools show \"passing\", this might indicate stale data - consider downloading fresh logs and checking timestamps to resolve the discrepancy. + - When a code or log file has more than 1500 lines, read it in chunks of 1500 lines. + - When facing a complex problem, do as much tracing as possible and turn on all verbose modes. + - When you create debug, test, or example/experiment scripts for fixing, always keep them in an examples and/or experiments folders so you can reuse them later. + - When testing your assumptions, use the experiment scripts, and add it to experiments folder. + - When your experiments can show real world use case of the software, add it to examples folder. + - When you face something extremely hard, use divide and conquer — it always helps. + +Initial research. + - When you start, make sure you create detailed plan for yourself and follow your todo list step by step, make sure that as many points from these guidelines are added to your todo list to keep track of everything that can help you solve the issue with highest possible quality. + - When user mentions CI failures or asks to investigate logs, consider adding these todos to track the investigation: (1) List recent CI runs with timestamps, (2) Download logs from failed runs to ci-logs/ directory, (3) Analyze error messages and identify root cause, (4) Implement fix, (5) Verify fix resolves the specific errors found in logs. + - When you read issue, read all details and comments thoroughly. + - When you see screenshots or images in issue descriptions, pull request descriptions, comments, or discussions, use WebFetch tool (or fetch tool) to download the image first, then use Read tool to view and analyze it. IMPORTANT: Before reading downloaded images with the Read tool, verify the file is a valid image (not HTML). Use a CLI tool like 'file' command to check the actual file format. Reading corrupted or non-image files (like GitHub's HTML 404 pages saved as .png) can cause \"Could not process image\" errors and may crash the AI solver process. If the file command shows \"HTML\" or \"text\", the download failed and you should retry or skip the image. + - When you need issue details, use gh issue view https://github.com/kg-ar288/egida-test/issues/37. + - When you need related code, use gh search code --owner kg-ar288 [keywords]. + - When you need repo context, read files in your working directory. + - When you study related work, study the most recent related pull requests. + - When issue is not defined enough, write a comment to ask clarifying questions. + - When accessing GitHub Gists (especially private ones), use gh gist view command instead of direct URL fetching to ensure proper authentication. + - When you are fixing a bug, please make sure you first find the actual root cause, do as many experiments as needed. + - When you are fixing a bug and code does not have enough tracing/logs, add them and make sure they stay in the code, but are switched off by default. + - When you need comments on a pull request, note that GitHub has THREE different comment types with different API endpoints: + 1. PR review comments (inline code comments): gh api repos/kg-ar288/egida-test/pulls/38/comments --paginate + 2. PR conversation comments (general discussion): gh api repos/kg-ar288/egida-test/issues/38/comments --paginate + 3. PR reviews (approve/request changes): gh api repos/kg-ar288/egida-test/pulls/38/reviews --paginate + IMPORTANT: The command \"gh pr view --json comments\" ONLY returns conversation comments and misses review comments! + - When you need latest comments on issue, use gh api repos/kg-ar288/egida-test/issues/37/comments --paginate. + +Solution development and testing. + - When issue is solvable, implement code with tests. + - When implementing features, search for similar existing implementations in the codebase and use them as examples instead of implementing everything from scratch. + - When coding, each atomic step that can be useful by itself should be commited to the pull request's branch, meaning if work will be interrupted by any reason parts of solution will still be kept intact and safe in pull request. + - When you test: + start from testing of small functions using separate scripts; + write unit tests with mocks for easy and quick start. + - When you test integrations, use existing framework. + - When you test solution draft, include automated checks in pr. + - When issue is unclear, write comment on issue asking questions. + - When you encounter any problems that you unable to solve yourself (any human feedback or help), write a comment to the pull request asking for help. + - When you need human help, use gh pr comment 38 --body \"your message\" to comment on existing PR. + +Preparing pull request. + - When you code, follow contributing guidelines. + - When you commit, write clear message. + - When you need examples of style, use gh pr list --repo kg-ar288/egida-test --state merged --search [keywords]. + - When you open pr, describe solution draft and include tests. + - When there is a package with version and GitHub Actions workflows for automatic release, update the version (or other necessary release trigger) in your pull request to prepare for next release. + - When you update existing pr 38, use gh pr edit to modify title and description. + - When you are about to commit or push code, ALWAYS run local CI checks first if they are available in contributing guidelines (like ruff check, mypy, eslint, etc.) to catch errors before pushing. + - When you finalize the pull request: + follow style from merged prs for code, title, and description, + make sure no uncommitted changes corresponding to the original requirements are left behind, + make sure the default branch is merged to the pull request's branch, + make sure all CI checks passing if they exist before you finish, + check for latest comments on the issue and pull request to ensure no recent feedback was missed, + double-check that all changes in the pull request answer to original requirements of the issue, + make sure no new new bugs are introduced in pull request by carefully reading gh pr diff, + make sure no previously existing features were removed without an explicit request from users via the issue description, issue comments, and/or pull request comments. + - When you finish implementation, use gh pr ready 38. + +Workflow and collaboration. + - When you check branch, verify with git branch --show-current. + - When you push, push only to branch issue-37-eb7bb03ec86d. + - When you finish, create a pull request from branch issue-37-eb7bb03ec86d. (Note: PR 38 already exists, update it instead) + - When you organize workflow, use pull requests instead of direct merges to default branch (main or master). + - When you manage commits, preserve commit history for later analysis. + - When you contribute, keep repository history forward-moving with regular commits, pushes, and reverts if needed. + - When you face conflict that you cannot resolve yourself, ask for help. + - When you collaborate, respect branch protections by working only on issue-37-eb7bb03ec86d. + - When you mention result, include pull request url or comment url. + - When you need to create pr, remember pr 38 already exists for this branch. + +Self review. + - When you check your solution draft, run all tests locally. + - When you check your solution draft, verify git status shows a clean working tree with no uncommitted changes. + - When you compare with repo style, use gh pr diff [number]. + - When you finalize, confirm code, tests, and description are consistent. + +GitHub CLI command patterns. + - IMPORTANT: Always use --paginate flag when fetching lists from GitHub API to ensure all results are returned (GitHub returns max 30 per page by default). + - When listing PR review comments (inline code comments), use gh api repos/OWNER/REPO/pulls/NUMBER/comments --paginate. + - When listing PR conversation comments, use gh api repos/OWNER/REPO/issues/NUMBER/comments --paginate. + - When listing PR reviews, use gh api repos/OWNER/REPO/pulls/NUMBER/reviews --paginate. + - When listing issue comments, use gh api repos/OWNER/REPO/issues/NUMBER/comments --paginate. + - When adding PR comment, use gh pr comment NUMBER --body \"text\" --repo OWNER/REPO. + - When adding issue comment, use gh issue comment NUMBER --body \"text\" --repo OWNER/REPO. + - When viewing PR details, use gh pr view NUMBER --repo OWNER/REPO. + - When filtering with jq, use gh api repos/\${owner}/\${repo}/pulls/\${prNumber}/comments --paginate --jq 'reverse | .[0:5]'. + +Playwright MCP usage (browser automation via mcp__playwright__* tools). + - When you develop frontend web applications (HTML, CSS, JavaScript, React, Vue, Angular, etc.), use Playwright MCP tools to test the UI in a real browser. + - When WebFetch tool fails to retrieve expected content (e.g., returns empty content, JavaScript-rendered pages, or login-protected pages), use Playwright MCP tools (browser_navigate, browser_snapshot) as a fallback for web browsing. + - When you need to interact with dynamic web pages that require JavaScript execution, use Playwright MCP tools. + - When you need to visually verify how a web page looks or take screenshots, use browser_take_screenshot from Playwright MCP. + - When you need to fill forms, click buttons, or perform user interactions on web pages, use Playwright MCP tools (browser_click, browser_type, browser_fill_form). + - When you need to test responsive design or different viewport sizes, use browser_resize from Playwright MCP. + - When you finish using the browser, always close it with browser_close to free resources." | jq -c .) +[2026-01-25T16:10:23.734Z] [INFO] +[2026-01-25T16:10:23.734Z] [INFO] 📋 User prompt: +[2026-01-25T16:10:23.735Z] [INFO] ---BEGIN USER PROMPT--- +[2026-01-25T16:10:23.735Z] [INFO] Issue to solve: https://github.com/kg-ar288/egida-test/issues/37 +Your prepared branch: issue-37-eb7bb03ec86d +Your prepared working directory: /tmp/gh-issue-solver-1769357403129 +Your prepared Pull Request: https://github.com/kg-ar288/egida-test/pull/38 + +Proceed. + +[2026-01-25T16:10:23.735Z] [INFO] ---END USER PROMPT--- +[2026-01-25T16:10:23.735Z] [INFO] +[2026-01-25T16:10:23.735Z] [INFO] 📋 System prompt: +[2026-01-25T16:10:23.735Z] [INFO] ---BEGIN SYSTEM PROMPT--- +[2026-01-25T16:10:23.736Z] [INFO] You are an AI issue solver. You prefer to find the root cause of each and every issue. When you talk, you prefer to speak with facts which you have double-checked yourself or cite sources that provide evidence, like quote actual code or give references to documents or pages found on the internet. You are polite and patient, and prefer to assume good intent, trying your best to be helpful. If you are unsure or have assumptions, you prefer to test them yourself or ask questions to clarify requirements. +General guidelines. + - When you execute commands, always save their logs to files for easier reading if the output becomes large. + - When running commands, do not set a timeout yourself — let them run as long as needed (default timeout - 2 minutes is more than enough), and once they finish, review the logs in the file. + - When running sudo commands (especially package installations like apt-get, yum, npm install, etc.), always run them in the background to avoid timeout issues and permission errors when the process needs to be killed. Use the run_in_background parameter or append & to the command. + - When CI is failing or user reports failures, consider adding a detailed investigation protocol to your todo list with these steps: + Step 1: List recent runs with timestamps using: gh run list --repo kg-ar288/egida-test --branch issue-37-eb7bb03ec86d --limit 5 --json databaseId,conclusion,createdAt,headSha + Step 2: Verify runs are after the latest commit by checking timestamps and SHA + Step 3: For each non-passing run, download logs to preserve them: gh run view {run-id} --repo kg-ar288/egida-test --log > ci-logs/{workflow}-{run-id}.log + Step 4: Read each downloaded log file using Read tool to understand the actual failures + Step 5: Report findings with specific errors and line numbers from logs + This detailed investigation is especially helpful when user mentions CI failures, asks to investigate logs, you see non-passing status, or when finalizing a PR. + Note: If user says "failing" but tools show "passing", this might indicate stale data - consider downloading fresh logs and checking timestamps to resolve the discrepancy. + - When a code or log file has more than 1500 lines, read it in chunks of 1500 lines. + - When facing a complex problem, do as much tracing as possible and turn on all verbose modes. + - When you create debug, test, or example/experiment scripts for fixing, always keep them in an examples and/or experiments folders so you can reuse them later. + - When testing your assumptions, use the experiment scripts, and add it to experiments folder. + - When your experiments can show real world use case of the software, add it to examples folder. + - When you face something extremely hard, use divide and conquer — it always helps. + +Initial research. + - When you start, make sure you create detailed plan for yourself and follow your todo list step by step, make sure that as many points from these guidelines are added to your todo list to keep track of everything that can help you solve the issue with highest possible quality. + - When user mentions CI failures or asks to investigate logs, consider adding these todos to track the investigation: (1) List recent CI runs with timestamps, (2) Download logs from failed runs to ci-logs/ directory, (3) Analyze error messages and identify root cause, (4) Implement fix, (5) Verify fix resolves the specific errors found in logs. + - When you read issue, read all details and comments thoroughly. + - When you see screenshots or images in issue descriptions, pull request descriptions, comments, or discussions, use WebFetch tool (or fetch tool) to download the image first, then use Read tool to view and analyze it. IMPORTANT: Before reading downloaded images with the Read tool, verify the file is a valid image (not HTML). Use a CLI tool like 'file' command to check the actual file format. Reading corrupted or non-image files (like GitHub's HTML 404 pages saved as .png) can cause "Could not process image" errors and may crash the AI solver process. If the file command shows "HTML" or "text", the download failed and you should retry or skip the image. + - When you need issue details, use gh issue view https://github.com/kg-ar288/egida-test/issues/37. + - When you need related code, use gh search code --owner kg-ar288 [keywords]. + - When you need repo context, read files in your working directory. + - When you study related work, study the most recent related pull requests. + - When issue is not defined enough, write a comment to ask clarifying questions. + - When accessing GitHub Gists (especially private ones), use gh gist view command instead of direct URL fetching to ensure proper authentication. + - When you are fixing a bug, please make sure you first find the actual root cause, do as many experiments as needed. + - When you are fixing a bug and code does not have enough tracing/logs, add them and make sure they stay in the code, but are switched off by default. + - When you need comments on a pull request, note that GitHub has THREE different comment types with different API endpoints: + 1. PR review comments (inline code comments): gh api repos/kg-ar288/egida-test/pulls/38/comments --paginate + 2. PR conversation comments (general discussion): gh api repos/kg-ar288/egida-test/issues/38/comments --paginate + 3. PR reviews (approve/request changes): gh api repos/kg-ar288/egida-test/pulls/38/reviews --paginate + IMPORTANT: The command "gh pr view --json comments" ONLY returns conversation comments and misses review comments! + - When you need latest comments on issue, use gh api repos/kg-ar288/egida-test/issues/37/comments --paginate. + +Solution development and testing. + - When issue is solvable, implement code with tests. + - When implementing features, search for similar existing implementations in the codebase and use them as examples instead of implementing everything from scratch. + - When coding, each atomic step that can be useful by itself should be commited to the pull request's branch, meaning if work will be interrupted by any reason parts of solution will still be kept intact and safe in pull request. + - When you test: + start from testing of small functions using separate scripts; + write unit tests with mocks for easy and quick start. + - When you test integrations, use existing framework. + - When you test solution draft, include automated checks in pr. + - When issue is unclear, write comment on issue asking questions. + - When you encounter any problems that you unable to solve yourself (any human feedback or help), write a comment to the pull request asking for help. + - When you need human help, use gh pr comment 38 --body "your message" to comment on existing PR. + +Preparing pull request. + - When you code, follow contributing guidelines. + - When you commit, write clear message. + - When you need examples of style, use gh pr list --repo kg-ar288/egida-test --state merged --search [keywords]. + - When you open pr, describe solution draft and include tests. + - When there is a package with version and GitHub Actions workflows for automatic release, update the version (or other necessary release trigger) in your pull request to prepare for next release. + - When you update existing pr 38, use gh pr edit to modify title and description. + - When you are about to commit or push code, ALWAYS run local CI checks first if they are available in contributing guidelines (like ruff check, mypy, eslint, etc.) to catch errors before pushing. + - When you finalize the pull request: + follow style from merged prs for code, title, and description, + make sure no uncommitted changes corresponding to the original requirements are left behind, + make sure the default branch is merged to the pull request's branch, + make sure all CI checks passing if they exist before you finish, + check for latest comments on the issue and pull request to ensure no recent feedback was missed, + double-check that all changes in the pull request answer to original requirements of the issue, + make sure no new new bugs are introduced in pull request by carefully reading gh pr diff, + make sure no previously existing features were removed without an explicit request from users via the issue description, issue comments, and/or pull request comments. + - When you finish implementation, use gh pr ready 38. + +Workflow and collaboration. + - When you check branch, verify with git branch --show-current. + - When you push, push only to branch issue-37-eb7bb03ec86d. + - When you finish, create a pull request from branch issue-37-eb7bb03ec86d. (Note: PR 38 already exists, update it instead) + - When you organize workflow, use pull requests instead of direct merges to default branch (main or master). + - When you manage commits, preserve commit history for later analysis. + - When you contribute, keep repository history forward-moving with regular commits, pushes, and reverts if needed. + - When you face conflict that you cannot resolve yourself, ask for help. + - When you collaborate, respect branch protections by working only on issue-37-eb7bb03ec86d. + - When you mention result, include pull request url or comment url. + - When you need to create pr, remember pr 38 already exists for this branch. + +Self review. + - When you check your solution draft, run all tests locally. + - When you check your solution draft, verify git status shows a clean working tree with no uncommitted changes. + - When you compare with repo style, use gh pr diff [number]. + - When you finalize, confirm code, tests, and description are consistent. + +GitHub CLI command patterns. + - IMPORTANT: Always use --paginate flag when fetching lists from GitHub API to ensure all results are returned (GitHub returns max 30 per page by default). + - When listing PR review comments (inline code comments), use gh api repos/OWNER/REPO/pulls/NUMBER/comments --paginate. + - When listing PR conversation comments, use gh api repos/OWNER/REPO/issues/NUMBER/comments --paginate. + - When listing PR reviews, use gh api repos/OWNER/REPO/pulls/NUMBER/reviews --paginate. + - When listing issue comments, use gh api repos/OWNER/REPO/issues/NUMBER/comments --paginate. + - When adding PR comment, use gh pr comment NUMBER --body "text" --repo OWNER/REPO. + - When adding issue comment, use gh issue comment NUMBER --body "text" --repo OWNER/REPO. + - When viewing PR details, use gh pr view NUMBER --repo OWNER/REPO. + - When filtering with jq, use gh api repos/${owner}/${repo}/pulls/${prNumber}/comments --paginate --jq 'reverse | .[0:5]'. + +Playwright MCP usage (browser automation via mcp__playwright__* tools). + - When you develop frontend web applications (HTML, CSS, JavaScript, React, Vue, Angular, etc.), use Playwright MCP tools to test the UI in a real browser. + - When WebFetch tool fails to retrieve expected content (e.g., returns empty content, JavaScript-rendered pages, or login-protected pages), use Playwright MCP tools (browser_navigate, browser_snapshot) as a fallback for web browsing. + - When you need to interact with dynamic web pages that require JavaScript execution, use Playwright MCP tools. + - When you need to visually verify how a web page looks or take screenshots, use browser_take_screenshot from Playwright MCP. + - When you need to fill forms, click buttons, or perform user interactions on web pages, use Playwright MCP tools (browser_click, browser_type, browser_fill_form). + - When you need to test responsive design or different viewport sizes, use browser_resize from Playwright MCP. + - When you finish using the browser, always close it with browser_close to free resources. +[2026-01-25T16:10:23.736Z] [INFO] ---END SYSTEM PROMPT--- +[2026-01-25T16:10:23.736Z] [INFO] +[2026-01-25T16:10:23.737Z] [INFO] 📊 CLAUDE_CODE_MAX_OUTPUT_TOKENS: 64000 +[2026-01-25T16:10:23.737Z] [INFO] 📋 Command details: +[2026-01-25T16:10:23.737Z] [INFO] 📂 Working directory: /tmp/gh-issue-solver-1769357403129 +[2026-01-25T16:10:23.738Z] [INFO] đŸŒŋ Branch: issue-37-eb7bb03ec86d +[2026-01-25T16:10:23.738Z] [INFO] 🤖 Model: Claude OPUS +[2026-01-25T16:10:23.738Z] [INFO] +â–ļī¸ Streaming output: + +[2026-01-25T16:10:25.910Z] [INFO] { + "type": "system", + "subtype": "init", + "cwd": "/tmp/gh-issue-solver-1769357403129", + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "tools": [ + "Task", + "TaskOutput", + "Bash", + "Glob", + "Grep", + "ExitPlanMode", + "Read", + "Edit", + "Write", + "NotebookEdit", + "WebFetch", + "TodoWrite", + "WebSearch", + "KillShell", + "AskUserQuestion", + "Skill", + "EnterPlanMode", + "ToolSearch", + "mcp__playwright__browser_close", + "mcp__playwright__browser_resize", + "mcp__playwright__browser_console_messages", + "mcp__playwright__browser_handle_dialog", + "mcp__playwright__browser_evaluate", + "mcp__playwright__browser_file_upload", + "mcp__playwright__browser_fill_form", + "mcp__playwright__browser_install", + "mcp__playwright__browser_press_key", + "mcp__playwright__browser_type", + "mcp__playwright__browser_navigate", + "mcp__playwright__browser_navigate_back", + "mcp__playwright__browser_network_requests", + "mcp__playwright__browser_run_code", + "mcp__playwright__browser_take_screenshot", + "mcp__playwright__browser_snapshot", + "mcp__playwright__browser_click", + "mcp__playwright__browser_drag", + "mcp__playwright__browser_hover", + "mcp__playwright__browser_select_option", + "mcp__playwright__browser_tabs", + "mcp__playwright__browser_wait_for" + ], + "mcp_servers": [ + { + "name": "playwright", + "status": "connected" + } + ], + "model": "claude-opus-4-5-20251101", + "permissionMode": "bypassPermissions", + "slash_commands": [ + "compact", + "context", + "cost", + "init", + "pr-comments", + "release-notes", + "review", + "security-review" + ], + "apiKeySource": "none", + "claude_code_version": "2.1.17", + "output_style": "default", + "agents": [ + "Bash", + "general-purpose", + "statusline-setup", + "Explore", + "Plan" + ], + "skills": [], + "plugins": [], + "uuid": "e9fefa93-5bc0-4bde-8ed5-60d562dd2868" +} +[2026-01-25T16:10:25.913Z] [INFO] 📌 Session ID: 97387dbe-7909-417c-bea8-f62ff0bebdd6 +[2026-01-25T16:10:25.914Z] [INFO] 📁 Log renamed to: /home/hive/97387dbe-7909-417c-bea8-f62ff0bebdd6.log +[2026-01-25T16:10:28.217Z] [INFO] { + "type": "assistant", + "message": { + "model": "claude-opus-4-5-20251101", + "id": "msg_018mECg3RkDmv3qc6WC76cx3", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "I'll start by reading the issue details to understand what needs to be solved." + } + ], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 2, + "cache_creation_input_tokens": 6302, + "cache_read_input_tokens": 18966, + "cache_creation": { + "ephemeral_5m_input_tokens": 6302, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 3, + "service_tier": "standard" + }, + "context_management": null + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "fb33a91a-4bc8-4d79-a146-1548d6a6dc7e" +} +[2026-01-25T16:10:28.866Z] [INFO] { + "type": "assistant", + "message": { + "model": "claude-opus-4-5-20251101", + "id": "msg_018mECg3RkDmv3qc6WC76cx3", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "tool_use", + "id": "toolu_01RcvShLRmdZ9bB1os6s2b5S", + "name": "Bash", + "input": { + "command": "gh issue view https://github.com/kg-ar288/egida-test/issues/37", + "description": "View issue details" + } + } + ], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 2, + "cache_creation_input_tokens": 6302, + "cache_read_input_tokens": 18966, + "cache_creation": { + "ephemeral_5m_input_tokens": 6302, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 3, + "service_tier": "standard" + }, + "context_management": null + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "ebbb1fc8-bb48-40a6-abf3-4a30ca73f096" +} +[2026-01-25T16:10:30.401Z] [INFO] { + "type": "user", + "message": { + "role": "user", + "content": [ + { + "tool_use_id": "toolu_01RcvShLRmdZ9bB1os6s2b5S", + "type": "tool_result", + "content": "title:\tImplement batch actions to leak detection\nstate:\tOPEN\nauthor:\tkogeletey\nlabels:\t\ncomments:\t0\nassignees:\t\nprojects:\t\nmilestone:\t\nnumber:\t37\n--\nUpdate ModalAlertsDetailsComponent, using openapi.json in repo and \n\n1. Left panel: Tree view of steps (steps and tool calls)\n - Use the existing TraceTree component from the project\n - Displays hierarchical structure of task execution steps\n - Each node can be expanded/collapsed\n - Nodes can have different types (step, process, function, branch)\n - Clicking a node makes it active and can display additional information\n\n2. Right panel: Document viewer\n - Use the existing DocumentViewer component from the project\n - Displays document content with vulnerability highlighting capabilities\n - Can display text, code, or any other information\n - Can be linked to the selected tree node\n\nTechnical details:\n- Use Vue.js with Composition API as in the rest of the project\n- Follow existing CSS variables and styling patterns\n- Ensure interface responsiveness\n- Implement a horizontal splitter between panels that can be dragged\n- Ensure synchronization between selected node in the tree and document display\n- Use the same color schemes and styles as other components in the project\n\nExample data structure for the tree:\n{\n id: \"step-1\",\n name: \"Step name\",\n type: \"step|process|function|branch\",\n timestamp: \"ISO date\",\n children: [...],\n documentContent: \"Document content for this step\"\n}\n\nThe component should:\n- Be flexible and reusable\n- Support node selection and display of corresponding document\n- Provide smooth transitions and animations during interaction\n- Function as a single component with two linked parts\n\nFor batch actions information, refer to the openapi.json file in the project root directory.", + "is_error": false + } + ] + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "1adebceb-a977-478b-a134-4b324577037f", + "tool_use_result": { + "stdout": "title:\tImplement batch actions to leak detection\nstate:\tOPEN\nauthor:\tkogeletey\nlabels:\t\ncomments:\t0\nassignees:\t\nprojects:\t\nmilestone:\t\nnumber:\t37\n--\nUpdate ModalAlertsDetailsComponent, using openapi.json in repo and \n\n1. Left panel: Tree view of steps (steps and tool calls)\n - Use the existing TraceTree component from the project\n - Displays hierarchical structure of task execution steps\n - Each node can be expanded/collapsed\n - Nodes can have different types (step, process, function, branch)\n - Clicking a node makes it active and can display additional information\n\n2. Right panel: Document viewer\n - Use the existing DocumentViewer component from the project\n - Displays document content with vulnerability highlighting capabilities\n - Can display text, code, or any other information\n - Can be linked to the selected tree node\n\nTechnical details:\n- Use Vue.js with Composition API as in the rest of the project\n- Follow existing CSS variables and styling patterns\n- Ensure interface responsiveness\n- Implement a horizontal splitter between panels that can be dragged\n- Ensure synchronization between selected node in the tree and document display\n- Use the same color schemes and styles as other components in the project\n\nExample data structure for the tree:\n{\n id: \"step-1\",\n name: \"Step name\",\n type: \"step|process|function|branch\",\n timestamp: \"ISO date\",\n children: [...],\n documentContent: \"Document content for this step\"\n}\n\nThe component should:\n- Be flexible and reusable\n- Support node selection and display of corresponding document\n- Provide smooth transitions and animations during interaction\n- Function as a single component with two linked parts\n\nFor batch actions information, refer to the openapi.json file in the project root directory.", + "stderr": "", + "interrupted": false, + "isImage": false + } +} +[2026-01-25T16:10:32.989Z] [INFO] { + "type": "assistant", + "message": { + "model": "claude-opus-4-5-20251101", + "id": "msg_01X16tvmcfoetrGG3iNUTvKa", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "Now let me explore the existing codebase to understand the project structure and find the relevant components mentioned in the issue." + } + ], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 0, + "cache_creation_input_tokens": 547, + "cache_read_input_tokens": 25268, + "cache_creation": { + "ephemeral_5m_input_tokens": 547, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 1, + "service_tier": "standard" + }, + "context_management": null + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "98d78373-c314-437a-87c2-25cc58783fdc" +} +[2026-01-25T16:10:33.725Z] [INFO] { + "type": "assistant", + "message": { + "model": "claude-opus-4-5-20251101", + "id": "msg_01X16tvmcfoetrGG3iNUTvKa", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "tool_use", + "id": "toolu_018xsca4fHHbHko5YpCB97sd", + "name": "Bash", + "input": { + "command": "ls -la /tmp/gh-issue-solver-1769357403129/", + "description": "List project root directory" + } + } + ], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 0, + "cache_creation_input_tokens": 547, + "cache_read_input_tokens": 25268, + "cache_creation": { + "ephemeral_5m_input_tokens": 547, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 1, + "service_tier": "standard" + }, + "context_management": null + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "c50e20d7-6adc-4ca9-a02d-e12bf3323675" +} +[2026-01-25T16:10:34.222Z] [INFO] { + "type": "assistant", + "message": { + "model": "claude-opus-4-5-20251101", + "id": "msg_01X16tvmcfoetrGG3iNUTvKa", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "tool_use", + "id": "toolu_01N68YJTXWR8GcnmAvktvZER", + "name": "Bash", + "input": { + "command": "git branch --show-current", + "description": "Verify current branch" + } + } + ], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 0, + "cache_creation_input_tokens": 547, + "cache_read_input_tokens": 25268, + "cache_creation": { + "ephemeral_5m_input_tokens": 547, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 1, + "service_tier": "standard" + }, + "context_management": null + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "99567485-afbe-4bef-bc8d-badb37b0f300" +} +[2026-01-25T16:10:34.340Z] [INFO] { + "type": "user", + "message": { + "role": "user", + "content": [ + { + "tool_use_id": "toolu_018xsca4fHHbHko5YpCB97sd", + "type": "tool_result", + "content": "total 812\ndrwxrwxr-x 13 hive hive 4096 Jan 25 17:10 .\ndrwxrwxrwt 137 root root 53248 Jan 25 17:10 ..\n-rw-rw-r-- 1 hive hive 207 Jan 25 17:10 .editorconfig\ndrwxrwxr-x 8 hive hive 4096 Jan 25 17:10 .git\n-rw-rw-r-- 1 hive hive 506 Jan 25 17:10 .gitignore\n-rw-rw-r-- 1 hive hive 187 Jan 25 17:10 CLAUDE.md\n-rw-rw-r-- 1 hive hive 1238 Jan 25 17:10 Dockerfile\n-rw-rw-r-- 1 hive hive 553 Jan 25 17:10 Dockerfile.prod\n-rw-rw-r-- 1 hive hive 822 Jan 25 17:10 README.md\ndrwxrwxr-x 2 hive hive 4096 Jan 25 17:10 assets\n-rw-rw-r-- 1 hive hive 183254 Jan 25 17:10 bun.lock\ndrwxrwxr-x 6 hive hive 4096 Jan 25 17:10 components\ndrwxrwxr-x 2 hive hive 4096 Jan 25 17:10 composables\ndrwxrwxr-x 2 hive hive 4096 Jan 25 17:10 e2e\ndrwxrwxr-x 2 hive hive 4096 Jan 25 17:10 layouts\n-rw-rw-r-- 1 hive hive 1653 Jan 25 17:10 nuxt.config.ts\n-rw-rw-r-- 1 hive hive 117841 Jan 25 17:10 openapi.json\n-rw-rw-r-- 1 hive hive 378627 Jan 25 17:10 package-lock.json\n-rw-rw-r-- 1 hive hive 632 Jan 25 17:10 package.json\ndrwxrwxr-x 3 hive hive 4096 Jan 25 17:10 pages\n-rw-rw-r-- 1 hive hive 894 Jan 25 17:10 playwright.config.ts\ndrwxrwxr-x 2 hive hive 4096 Jan 25 17:10 plugins\ndrwxrwxr-x 2 hive hive 4096 Jan 25 17:10 public\ndrwxrwxr-x 4 hive hive 4096 Jan 25 17:10 static\ndrwxrwxr-x 2 hive hive 4096 Jan 25 17:10 store\n-rw-rw-r-- 1 hive hive 95 Jan 25 17:10 tsconfig.json", + "is_error": false + } + ] + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "39a68610-2e02-4c64-ba20-8e5aae60cbc4", + "tool_use_result": { + "stdout": "total 812\ndrwxrwxr-x 13 hive hive 4096 Jan 25 17:10 .\ndrwxrwxrwt 137 root root 53248 Jan 25 17:10 ..\n-rw-rw-r-- 1 hive hive 207 Jan 25 17:10 .editorconfig\ndrwxrwxr-x 8 hive hive 4096 Jan 25 17:10 .git\n-rw-rw-r-- 1 hive hive 506 Jan 25 17:10 .gitignore\n-rw-rw-r-- 1 hive hive 187 Jan 25 17:10 CLAUDE.md\n-rw-rw-r-- 1 hive hive 1238 Jan 25 17:10 Dockerfile\n-rw-rw-r-- 1 hive hive 553 Jan 25 17:10 Dockerfile.prod\n-rw-rw-r-- 1 hive hive 822 Jan 25 17:10 README.md\ndrwxrwxr-x 2 hive hive 4096 Jan 25 17:10 assets\n-rw-rw-r-- 1 hive hive 183254 Jan 25 17:10 bun.lock\ndrwxrwxr-x 6 hive hive 4096 Jan 25 17:10 components\ndrwxrwxr-x 2 hive hive 4096 Jan 25 17:10 composables\ndrwxrwxr-x 2 hive hive 4096 Jan 25 17:10 e2e\ndrwxrwxr-x 2 hive hive 4096 Jan 25 17:10 layouts\n-rw-rw-r-- 1 hive hive 1653 Jan 25 17:10 nuxt.config.ts\n-rw-rw-r-- 1 hive hive 117841 Jan 25 17:10 openapi.json\n-rw-rw-r-- 1 hive hive 378627 Jan 25 17:10 package-lock.json\n-rw-rw-r-- 1 hive hive 632 Jan 25 17:10 package.json\ndrwxrwxr-x 3 hive hive 4096 Jan 25 17:10 pages\n-rw-rw-r-- 1 hive hive 894 Jan 25 17:10 playwright.config.ts\ndrwxrwxr-x 2 hive hive 4096 Jan 25 17:10 plugins\ndrwxrwxr-x 2 hive hive 4096 Jan 25 17:10 public\ndrwxrwxr-x 4 hive hive 4096 Jan 25 17:10 static\ndrwxrwxr-x 2 hive hive 4096 Jan 25 17:10 store\n-rw-rw-r-- 1 hive hive 95 Jan 25 17:10 tsconfig.json", + "stderr": "", + "interrupted": false, + "isImage": false + } +} +[2026-01-25T16:10:34.344Z] [INFO] { + "type": "user", + "message": { + "role": "user", + "content": [ + { + "tool_use_id": "toolu_01N68YJTXWR8GcnmAvktvZER", + "type": "tool_result", + "content": "issue-37-eb7bb03ec86d", + "is_error": false + } + ] + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "afb1f63c-1af6-4889-89f0-2c96c1d5b669", + "tool_use_result": { + "stdout": "issue-37-eb7bb03ec86d", + "stderr": "", + "interrupted": false, + "isImage": false + } +} +[2026-01-25T16:10:36.860Z] [INFO] { + "type": "assistant", + "message": { + "model": "claude-opus-4-5-20251101", + "id": "msg_012suhPQEFbWtyNG2p3doxBZ", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "Good, I'm on the correct branch. Let me explore the components directory and find the relevant components mentioned in the issue." + } + ], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 0, + "cache_creation_input_tokens": 1062, + "cache_read_input_tokens": 25815, + "cache_creation": { + "ephemeral_5m_input_tokens": 1062, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 1, + "service_tier": "standard" + }, + "context_management": null + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "814aa2b8-47ab-41e9-85e8-cdde8ceb7ce2" +} +[2026-01-25T16:10:37.607Z] [INFO] { + "type": "assistant", + "message": { + "model": "claude-opus-4-5-20251101", + "id": "msg_012suhPQEFbWtyNG2p3doxBZ", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "tool_use", + "id": "toolu_01QzPN8Dqbbv11FMQXnnrwzh", + "name": "Bash", + "input": { + "command": "find /tmp/gh-issue-solver-1769357403129/components -type f -name \"*.vue\" | sort", + "description": "List all Vue components" + } + } + ], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 0, + "cache_creation_input_tokens": 1062, + "cache_read_input_tokens": 25815, + "cache_creation": { + "ephemeral_5m_input_tokens": 1062, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 1, + "service_tier": "standard" + }, + "context_management": null + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "101f1732-f9df-40eb-b4d0-e9ffaff9ba0e" +} +[2026-01-25T16:10:38.408Z] [INFO] { + "type": "assistant", + "message": { + "model": "claude-opus-4-5-20251101", + "id": "msg_012suhPQEFbWtyNG2p3doxBZ", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "tool_use", + "id": "toolu_01LdX6vt2aarggcMigde8jA8", + "name": "Bash", + "input": { + "command": "head -200 /tmp/gh-issue-solver-1769357403129/openapi.json", + "description": "Read openapi.json for batch actions info" + } + } + ], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 0, + "cache_creation_input_tokens": 1062, + "cache_read_input_tokens": 25815, + "cache_creation": { + "ephemeral_5m_input_tokens": 1062, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 1, + "service_tier": "standard" + }, + "context_management": null + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "972f21c2-27b5-47ed-878d-585a43730cc5" +} +[2026-01-25T16:10:38.544Z] [INFO] { + "type": "user", + "message": { + "role": "user", + "content": [ + { + "tool_use_id": "toolu_01QzPN8Dqbbv11FMQXnnrwzh", + "type": "tool_result", + "content": "/tmp/gh-issue-solver-1769357403129/components/AlertList/AlertDetails.vue\n/tmp/gh-issue-solver-1769357403129/components/AlertList/AlertFilters.vue\n/tmp/gh-issue-solver-1769357403129/components/AlertList/AlertHeader.vue\n/tmp/gh-issue-solver-1769357403129/components/AlertList/AlertItem.vue\n/tmp/gh-issue-solver-1769357403129/components/AlertList/AlertListContainer.vue\n/tmp/gh-issue-solver-1769357403129/components/AlertList/AlertPageHeader.vue\n/tmp/gh-issue-solver-1769357403129/components/AlertList/AlertsPage.vue\n/tmp/gh-issue-solver-1769357403129/components/AlertList/Badge.vue\n/tmp/gh-issue-solver-1769357403129/components/AlertList/MaskedField.vue\n/tmp/gh-issue-solver-1769357403129/components/AlertList/ModalAlertDetails.vue\n/tmp/gh-issue-solver-1769357403129/components/AlertList/SearchableSelect.vue\n/tmp/gh-issue-solver-1769357403129/components/AlertList/TimeRangePicker.vue\n/tmp/gh-issue-solver-1769357403129/components/AlertList/VerdictSelector.vue\n/tmp/gh-issue-solver-1769357403129/components/DatePicker.vue\n/tmp/gh-issue-solver-1769357403129/components/DateTimePicker.vue\n/tmp/gh-issue-solver-1769357403129/components/DocumentViewer.vue\n/tmp/gh-issue-solver-1769357403129/components/ExpandableMatchItem.vue\n/tmp/gh-issue-solver-1769357403129/components/FalseActivationDropdown/FalseActivationDropdown.vue\n/tmp/gh-issue-solver-1769357403129/components/LeftNav.vue\n/tmp/gh-issue-solver-1769357403129/components/Modal/Modal.vue\n/tmp/gh-issue-solver-1769357403129/components/Modal/ModalAnimated.vue\n/tmp/gh-issue-solver-1769357403129/components/NavButton.vue\n/tmp/gh-issue-solver-1769357403129/components/ThemeSwitcher.vue\n/tmp/gh-issue-solver-1769357403129/components/TimePicker.vue\n/tmp/gh-issue-solver-1769357403129/components/TraceTree/TraceTree.vue\n/tmp/gh-issue-solver-1769357403129/components/TraceTree/TraceTreeNode.vue\n/tmp/gh-issue-solver-1769357403129/components/callings.vue\n/tmp/gh-issue-solver-1769357403129/components/chatRequest.vue\n/tmp/gh-issue-solver-1769357403129/components/chatResponse.vue\n/tmp/gh-issue-solver-1769357403129/components/coloredButton.vue\n/tmp/gh-issue-solver-1769357403129/components/coloredButtonCenter.vue\n/tmp/gh-issue-solver-1769357403129/components/cost.vue\n/tmp/gh-issue-solver-1769357403129/components/criticalCircle.vue\n/tmp/gh-issue-solver-1769357403129/components/diagram.vue\n/tmp/gh-issue-solver-1769357403129/components/diagramHorizontal.vue\n/tmp/gh-issue-solver-1769357403129/components/diagramScore.vue\n/tmp/gh-issue-solver-1769357403129/components/diagram_mobile_circle.vue\n/tmp/gh-issue-solver-1769357403129/components/gradientContainer.vue\n/tmp/gh-issue-solver-1769357403129/components/mobileLeftNav.vue\n/tmp/gh-issue-solver-1769357403129/components/mobileMainHeader.vue\n/tmp/gh-issue-solver-1769357403129/components/modalChat.vue\n/tmp/gh-issue-solver-1769357403129/components/modalInput.vue\n/tmp/gh-issue-solver-1769357403129/components/modelDescription.vue\n/tmp/gh-issue-solver-1769357403129/components/promptInfoRounded.vue\n/tmp/gh-issue-solver-1769357403129/components/promtStatusCircle.vue\n/tmp/gh-issue-solver-1769357403129/components/roundedButton.vue\n/tmp/gh-issue-solver-1769357403129/components/roundedContainer.vue\n/tmp/gh-issue-solver-1769357403129/components/scrollChat.vue\n/tmp/gh-issue-solver-1769357403129/components/switcher.vue\n/tmp/gh-issue-solver-1769357403129/components/tokens.vue\n/tmp/gh-issue-solver-1769357403129/components/useMenuBtn.vue", + "is_error": false + } + ] + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "7ebcc271-c8e9-49b8-94e5-b2a35ba68df1", + "tool_use_result": { + "stdout": "/tmp/gh-issue-solver-1769357403129/components/AlertList/AlertDetails.vue\n/tmp/gh-issue-solver-1769357403129/components/AlertList/AlertFilters.vue\n/tmp/gh-issue-solver-1769357403129/components/AlertList/AlertHeader.vue\n/tmp/gh-issue-solver-1769357403129/components/AlertList/AlertItem.vue\n/tmp/gh-issue-solver-1769357403129/components/AlertList/AlertListContainer.vue\n/tmp/gh-issue-solver-1769357403129/components/AlertList/AlertPageHeader.vue\n/tmp/gh-issue-solver-1769357403129/components/AlertList/AlertsPage.vue\n/tmp/gh-issue-solver-1769357403129/components/AlertList/Badge.vue\n/tmp/gh-issue-solver-1769357403129/components/AlertList/MaskedField.vue\n/tmp/gh-issue-solver-1769357403129/components/AlertList/ModalAlertDetails.vue\n/tmp/gh-issue-solver-1769357403129/components/AlertList/SearchableSelect.vue\n/tmp/gh-issue-solver-1769357403129/components/AlertList/TimeRangePicker.vue\n/tmp/gh-issue-solver-1769357403129/components/AlertList/VerdictSelector.vue\n/tmp/gh-issue-solver-1769357403129/components/DatePicker.vue\n/tmp/gh-issue-solver-1769357403129/components/DateTimePicker.vue\n/tmp/gh-issue-solver-1769357403129/components/DocumentViewer.vue\n/tmp/gh-issue-solver-1769357403129/components/ExpandableMatchItem.vue\n/tmp/gh-issue-solver-1769357403129/components/FalseActivationDropdown/FalseActivationDropdown.vue\n/tmp/gh-issue-solver-1769357403129/components/LeftNav.vue\n/tmp/gh-issue-solver-1769357403129/components/Modal/Modal.vue\n/tmp/gh-issue-solver-1769357403129/components/Modal/ModalAnimated.vue\n/tmp/gh-issue-solver-1769357403129/components/NavButton.vue\n/tmp/gh-issue-solver-1769357403129/components/ThemeSwitcher.vue\n/tmp/gh-issue-solver-1769357403129/components/TimePicker.vue\n/tmp/gh-issue-solver-1769357403129/components/TraceTree/TraceTree.vue\n/tmp/gh-issue-solver-1769357403129/components/TraceTree/TraceTreeNode.vue\n/tmp/gh-issue-solver-1769357403129/components/callings.vue\n/tmp/gh-issue-solver-1769357403129/components/chatRequest.vue\n/tmp/gh-issue-solver-1769357403129/components/chatResponse.vue\n/tmp/gh-issue-solver-1769357403129/components/coloredButton.vue\n/tmp/gh-issue-solver-1769357403129/components/coloredButtonCenter.vue\n/tmp/gh-issue-solver-1769357403129/components/cost.vue\n/tmp/gh-issue-solver-1769357403129/components/criticalCircle.vue\n/tmp/gh-issue-solver-1769357403129/components/diagram.vue\n/tmp/gh-issue-solver-1769357403129/components/diagramHorizontal.vue\n/tmp/gh-issue-solver-1769357403129/components/diagramScore.vue\n/tmp/gh-issue-solver-1769357403129/components/diagram_mobile_circle.vue\n/tmp/gh-issue-solver-1769357403129/components/gradientContainer.vue\n/tmp/gh-issue-solver-1769357403129/components/mobileLeftNav.vue\n/tmp/gh-issue-solver-1769357403129/components/mobileMainHeader.vue\n/tmp/gh-issue-solver-1769357403129/components/modalChat.vue\n/tmp/gh-issue-solver-1769357403129/components/modalInput.vue\n/tmp/gh-issue-solver-1769357403129/components/modelDescription.vue\n/tmp/gh-issue-solver-1769357403129/components/promptInfoRounded.vue\n/tmp/gh-issue-solver-1769357403129/components/promtStatusCircle.vue\n/tmp/gh-issue-solver-1769357403129/components/roundedButton.vue\n/tmp/gh-issue-solver-1769357403129/components/roundedContainer.vue\n/tmp/gh-issue-solver-1769357403129/components/scrollChat.vue\n/tmp/gh-issue-solver-1769357403129/components/switcher.vue\n/tmp/gh-issue-solver-1769357403129/components/tokens.vue\n/tmp/gh-issue-solver-1769357403129/components/useMenuBtn.vue", + "stderr": "", + "interrupted": false, + "isImage": false + } +} +[2026-01-25T16:10:38.561Z] [INFO] {"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01LdX6vt2aarggcMigde8jA8","type":"tool_result","content":"\nOutput too large (115KB). Full output saved to: /home/hive/.claude/projects/-tmp-gh-issue-solver-1769357403129/97387dbe-7909-417c-bea8-f62ff0bebdd6/tool-results/toolu_01LdX6vt2aarggcMigde8jA8.txt\n\nPreview (first 2KB):\n{\"openapi\":\"3.1.0\",\"info\":{\"title\":\"Egida Platform\",\"description\":\"\\n## Egida Platform - Agent Security Firewall\\n\\n### API Endpoints\\n\\n**LLM Proxy (OpenAI-compatible):**\\n- `POST /v1/chat/completions` - Chat completions with security checks\\n- `GET /v1/models` - List available models\\n\\n**Management API:**\\n- `POST /api/v1/events` - Process agent events\\n- `POST /api/v1/tools/check` - Check tool call (SDK mode)\\n- `GET /api/v1/sessions` - List sessions\\n- `GET /api/v1/incidents` - List incidents\\n \",\"version\":\"0.1.0\"},\"paths\":{\"/v1/chat/completions\":{\"post\":{\"tags\":[\"Chat Completions\"],\"summary\":\"Chat Completions\",\"description\":\"OpenAI-compatible chat completions endpoint.\\n\\nThis endpoint:\\n1. Receives requests in OpenAI format\\n2. Checks messages against security scenarios (PRE)\\n3. Forwards to LLM provider\\n4. Checks response against scenarios (POST)\\n5. Returns response to client\\n\\nHeaders:\\n- Authorization: API key for LLM provider (not needed for GigaChat if configured)\\n- X-Provider: LLM provider (openai, anthropic, azure, gigachat, local)\\n- X-Session-ID: Session identifier for tracking\\n- X-Agent-ID: Agent identifier\\n- X-Project-ID: Project identifier\\n\\nGigaChat Usage:\\n- Set X-Provider: gigachat\\n- Configure GIGACHAT_CLIENT_ID and GIGACHAT_CLIENT_SECRET in .env\\n- Token is obtained automatically via OAuth2\",\"operationId\":\"chat_completions_v1_chat_completions_post\",\"parameters\":[{\"name\":\"authorization\",\"in\":\"header\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Authorization\"}},{\"name\":\"X-API-Key\",\"in\":\"header\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"X-Api-Key\"}},{\"name\":\"X-Provider\",\"in\":\"header\",\"required\":false,\"schema\":{\"type\":\"string\",\"default\":\"gigachat\",\"title\":\"X-Provider\"}},{\"name\":\"X-Session-ID\",\"in\":\"header\",\"required\":false,\"schema\":{\"type\":\"string\",\"default\":\"swagger-test\",\"title\":\"X-Session-Id\"}},{\"name\":\"X-Agent-ID\",\"in\":\"header\",\"required\":false,\"schema\":{\"\n...\n","is_error":false}]},"parent_tool_use_id":null,"session_id":"97387dbe-7909-417c-bea8-f62ff0bebdd6","uuid":"f292bcac-180b-41e8-aec8-55478dde07fc","tool_use_result":{"stdout":"{\"openapi\":\"3.1.0\",\"info\":{\"title\":\"Egida Platform\",\"description\":\"\\n## Egida Platform - Agent Security Firewall\\n\\n### API Endpoints\\n\\n**LLM Proxy (OpenAI-compatible):**\\n- `POST /v1/chat/completions` - Chat completions with security checks\\n- `GET /v1/models` - List available models\\n\\n**Management API:**\\n- `POST /api/v1/events` - Process agent events\\n- `POST /api/v1/tools/check` - Check tool call (SDK mode)\\n- `GET /api/v1/sessions` - List sessions\\n- `GET /api/v1/incidents` - List incidents\\n \",\"version\":\"0.1.0\"},\"paths\":{\"/v1/chat/completions\":{\"post\":{\"tags\":[\"Chat Completions\"],\"summary\":\"Chat Completions\",\"description\":\"OpenAI-compatible chat completions endpoint.\\n\\nThis endpoint:\\n1. Receives requests in OpenAI format\\n2. Checks messages against security scenarios (PRE)\\n3. Forwards to LLM provider\\n4. Checks response against scenarios (POST)\\n5. Returns response to client\\n\\nHeaders:\\n- Authorization: API key for LLM provider (not needed for GigaChat if configured)\\n- X-Provider: LLM provider (openai, anthropic, azure, gigachat, local)\\n- X-Session-ID: Session identifier for tracking\\n- X-Agent-ID: Agent identifier\\n- X-Project-ID: Project identifier\\n\\nGigaChat Usage:\\n- Set X-Provider: gigachat\\n- Configure GIGACHAT_CLIENT_ID and GIGACHAT_CLIENT_SECRET in .env\\n- Token is obtained automatically via OAuth2\",\"operationId\":\"chat_completions_v1_chat_completions_post\",\"parameters\":[{\"name\":\"authorization\",\"in\":\"header\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Authorization\"}},{\"name\":\"X-API-Key\",\"in\":\"header\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"X-Api-Key\"}},{\"name\":\"X-Provider\",\"in\":\"header\",\"required\":false,\"schema\":{\"type\":\"string\",\"default\":\"gigachat\",\"title\":\"X-Provider\"}},{\"name\":\"X-Session-ID\",\"in\":\"header\",\"required\":false,\"schema\":{\"type\":\"string\",\"default\":\"swagger-test\",\"title\":\"X-Session-Id\"}},{\"name\":\"X-Agent-ID\",\"in\":\"header\",\"required\":false,\"schema\":{\"type\":\"string\",\"default\":\"test-agent\",\"title\":\"X-Agent-Id\"}},{\"name\":\"X-Project-ID\",\"in\":\"header\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"X-Project-Id\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ChatCompletionRequest\"}}}},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/v1/models\":{\"get\":{\"tags\":[\"Chat Completions\"],\"summary\":\"List Models\",\"description\":\"List available models.\\nReturns a simplified list - actual models depend on provider.\",\"operationId\":\"list_models_v1_models_get\",\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{}}}}}}},\"/api/v1/auth/login\":{\"post\":{\"tags\":[\"auth\"],\"summary\":\"Login\",\"operationId\":\"login_api_v1_auth_login_post\",\"requestBody\":{\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/LoginRequest\"}}},\"required\":true},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/LoginResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/health\":{\"get\":{\"tags\":[\"Health\"],\"summary\":\"Health Check\",\"description\":\"Basic health check\",\"operationId\":\"health_check_api_v1_health_get\",\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{}}}}}}},\"/api/v1/ready\":{\"get\":{\"tags\":[\"Health\"],\"summary\":\"Readiness Check\",\"description\":\"Readiness check with dependencies\",\"operationId\":\"readiness_check_api_v1_ready_get\",\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{}}}}}}},\"/api/v1/events\":{\"post\":{\"tags\":[\"Events\"],\"summary\":\"Process Event\",\"description\":\"Process an agent event.\\n\\nThis is the main endpoint for receiving events from agents.\\nEvents are validated, processed through scenarios, and stored.\",\"operationId\":\"process_event_api_v1_events_post\",\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AgentEventCreate\"}}}},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ProcessingResult\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}},\"get\":{\"tags\":[\"Events\"],\"summary\":\"List Events\",\"description\":\"List events with filters\",\"operationId\":\"list_events_api_v1_events_get\",\"parameters\":[{\"name\":\"session_id\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Session Id\"}},{\"name\":\"project_id\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Project Id\"}},{\"name\":\"agent_id\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Agent Id\"}},{\"name\":\"event_type\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/EventType\"},{\"type\":\"null\"}],\"title\":\"Event Type\"}},{\"name\":\"from_time\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"date-time\"},{\"type\":\"null\"}],\"title\":\"From Time\"}},{\"name\":\"to_time\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"date-time\"},{\"type\":\"null\"}],\"title\":\"To Time\"}},{\"name\":\"skip\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"integer\",\"minimum\":0,\"default\":0,\"title\":\"Skip\"}},{\"name\":\"limit\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"integer\",\"maximum\":1000,\"minimum\":1,\"default\":100,\"title\":\"Limit\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/AgentEventResponse\"},\"title\":\"Response List Events Api V1 Events Get\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/events/batch/{batch_id}\":{\"get\":{\"tags\":[\"Events\"],\"summary\":\"List Events By Batch\",\"description\":\"List events for a batch\",\"operationId\":\"list_events_by_batch_api_v1_events_batch__batch_id__get\",\"parameters\":[{\"name\":\"batch_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Batch Id\"}},{\"name\":\"skip\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"integer\",\"minimum\":0,\"default\":0,\"title\":\"Skip\"}},{\"name\":\"limit\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"integer\",\"maximum\":1000,\"minimum\":1,\"default\":1000,\"title\":\"Limit\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/AgentEventResponse\"},\"title\":\"Response List Events By Batch Api V1 Events Batch Batch Id Get\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/events/{event_id}\":{\"get\":{\"tags\":[\"Events\"],\"summary\":\"Get Event\",\"description\":\"Get event by ID\",\"operationId\":\"get_event_api_v1_events__event_id__get\",\"parameters\":[{\"name\":\"event_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Event Id\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AgentEventResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/tools/check\":{\"post\":{\"tags\":[\"Tools\"],\"summary\":\"Check Tool Call\",\"description\":\"Check tool call BEFORE execution (SDK mode).\\n\\nThis endpoint is called by the SDK before executing a tool.\\nIt validates the tool call against policies and returns a decision.\\n\\nIf decision is BLOCK, the tool should NOT be executed.\\nIf decision is MODIFY, use the modified_args for execution.\\nIf decision is ALLOW, proceed with execution.\",\"operationId\":\"check_tool_call_api_v1_tools_check_post\",\"requestBody\":{\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ToolCheckRequest\"}}},\"required\":true},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ToolCheckResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/tools/result\":{\"post\":{\"tags\":[\"Tools\"],\"summary\":\"Report Tool Result\",\"description\":\"Report tool execution result (SDK mode).\\n\\nThis endpoint is called by the SDK after tool execution.\\nIt checks the result for potential leaks and other issues.\",\"operationId\":\"report_tool_result_api_v1_tools_result_post\",\"requestBody\":{\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ToolResultReport\"}}},\"required\":true},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ProcessingResult\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/incidents\":{\"get\":{\"tags\":[\"Incidents\"],\"summary\":\"List Incidents\",\"description\":\"List incidents with filters and pagination\",\"operationId\":\"list_incidents_api_v1_incidents_get\",\"parameters\":[{\"name\":\"project_id\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Project Id\"}},{\"name\":\"agent_id\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Agent Id\"}},{\"name\":\"scenario_id\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Scenario Id\"}},{\"name\":\"rule_id\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Rule Id\"}},{\"name\":\"severity\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/Severity\"},{\"type\":\"null\"}],\"title\":\"Severity\"}},{\"name\":\"status\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/IncidentStatus\"},{\"type\":\"null\"}],\"title\":\"Status\"}},{\"name\":\"from\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"date-time\"},{\"type\":\"null\"}],\"title\":\"From\"}},{\"name\":\"to\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"date-time\"},{\"type\":\"null\"}],\"title\":\"To\"}},{\"name\":\"page\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"integer\",\"minimum\":1,\"default\":1,\"title\":\"Page\"}},{\"name\":\"page_size\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"integer\",\"maximum\":100,\"minimum\":1,\"default\":50,\"title\":\"Page Size\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/IncidentListResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/incidents/stats\":{\"get\":{\"tags\":[\"Incidents\"],\"summary\":\"Get Incident Stats\",\"description\":\"Get incident stats with filters\",\"operationId\":\"get_incident_stats_api_v1_incidents_stats_get\",\"parameters\":[{\"name\":\"project_id\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Project Id\"}},{\"name\":\"agent_id\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Agent Id\"}},{\"name\":\"scenario_id\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Scenario Id\"}},{\"name\":\"rule_id\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Rule Id\"}},{\"name\":\"severity\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/Severity\"},{\"type\":\"null\"}],\"title\":\"Severity\"}},{\"name\":\"status\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/IncidentStatus\"},{\"type\":\"null\"}],\"title\":\"Status\"}},{\"name\":\"from\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"date-time\"},{\"type\":\"null\"}],\"title\":\"From\"}},{\"name\":\"to\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"date-time\"},{\"type\":\"null\"}],\"title\":\"To\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/IncidentStatsResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/incidents/{incident_id}\":{\"get\":{\"tags\":[\"Incidents\"],\"summary\":\"Get Incident\",\"description\":\"Get incident by ID\",\"operationId\":\"get_incident_api_v1_incidents__incident_id__get\",\"parameters\":[{\"name\":\"incident_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Incident Id\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/IncidentResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}},\"patch\":{\"tags\":[\"Incidents\"],\"summary\":\"Update Incident\",\"description\":\"Update incident (status, resolution)\",\"operationId\":\"update_incident_api_v1_incidents__incident_id__patch\",\"parameters\":[{\"name\":\"incident_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Incident Id\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/IncidentUpdate\"}}}},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/IncidentResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/incidents/{incident_id}/batch-events\":{\"get\":{\"tags\":[\"Incidents\"],\"summary\":\"Get Incident Batch Events\",\"description\":\"Get all events for incident's batch\",\"operationId\":\"get_incident_batch_events_api_v1_incidents__incident_id__batch_events_get\",\"parameters\":[{\"name\":\"incident_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Incident Id\"}},{\"name\":\"skip\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"integer\",\"minimum\":0,\"default\":0,\"title\":\"Skip\"}},{\"name\":\"limit\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"integer\",\"maximum\":1000,\"minimum\":1,\"default\":1000,\"title\":\"Limit\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/AgentEventResponse\"},\"title\":\"Response Get Incident Batch Events Api V1 Incidents Incident Id Batch Events Get\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/incidents/{incident_id}/matches/{match_id}\":{\"get\":{\"tags\":[\"Incidents\"],\"summary\":\"Get Incident Match Original\",\"description\":\"Get original match value for incident/match.\",\"operationId\":\"get_incident_match_original_api_v1_incidents__incident_id__matches__match_id__get\",\"parameters\":[{\"name\":\"incident_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Incident Id\"}},{\"name\":\"match_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"integer\",\"title\":\"Match Id\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/IncidentMatchOriginalResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/incidents/session/{session_id}\":{\"get\":{\"tags\":[\"Incidents\"],\"summary\":\"Get Session Incidents\",\"description\":\"Get all incidents for a session\",\"operationId\":\"get_session_incidents_api_v1_incidents_session__session_id__get\",\"parameters\":[{\"name\":\"session_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Session Id\"}},{\"name\":\"skip\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"integer\",\"minimum\":0,\"default\":0,\"title\":\"Skip\"}},{\"name\":\"limit\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"integer\",\"maximum\":1000,\"minimum\":1,\"default\":100,\"title\":\"Limit\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/IncidentResponse\"},\"title\":\"Response Get Session Incidents Api V1 Incidents Session Session Id Get\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/incidents/{incident_id}/review\":{\"post\":{\"tags\":[\"Incidents\"],\"summary\":\"Submit Incident Review\",\"description\":\"Submit a human review for an incident.\\nSets human_label and optionally notes, marks as reviewed.\\n\\nCan only be called for incidents with review_status != NO_REVIEW.\",\"operationId\":\"submit_incident_review_api_v1_incidents__incident_id__review_post\",\"parameters\":[{\"name\":\"incident_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Incident Id\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/IncidentReviewRequest\"}}}},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/IncidentResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}},\"get\":{\"tags\":[\"Incidents\"],\"summary\":\"Get Incident Review Detail\",\"description\":\"Get detailed review information for an incident.\\nIncludes:\\n- Review status and labels\\n- Static rule trigger info\\n- LLM detector results\\n- Trigger event (the event that caused the incident)\",\"operationId\":\"get_incident_review_detail_api_v1_incidents__incident_id__review_get\",\"parameters\":[{\"name\":\"incident_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Incident Id\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/IncidentReviewDetailResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/sessions\":{\"get\":{\"tags\":[\"Sessions\"],\"summary\":\"List Sessions\",\"description\":\"List sessions with basic info\",\"operationId\":\"list_sessions_api_v1_sessions_get\",\"parameters\":[{\"name\":\"project_id\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Project Id\"}},{\"name\":\"agent_id\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Agent Id\"}},{\"name\":\"skip\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"integer\",\"minimum\":0,\"default\":0,\"title\":\"Skip\"}},{\"name\":\"limit\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"integer\",\"maximum\":100,\"minimum\":1,\"default\":50,\"title\":\"Limit\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/SessionSummary\"},\"title\":\"Response List Sessions Api V1 Sessions Get\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/sessions/{session_id}\":{\"get\":{\"tags\":[\"Sessions\"],\"summary\":\"Get Session\",\"description\":\"Get session details with events\",\"operationId\":\"get_session_api_v1_sessions__session_id__get\",\"parameters\":[{\"name\":\"session_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Session Id\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/SessionDetail\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/sessions/{session_id}/context\":{\"get\":{\"tags\":[\"Sessions\"],\"summary\":\"Get Session Context\",\"description\":\"Get session runtime context (from Redis)\",\"operationId\":\"get_session_context_api_v1_sessions__session_id__context_get\",\"parameters\":[{\"name\":\"session_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Session Id\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/SessionContext\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}},\"delete\":{\"tags\":[\"Sessions\"],\"summary\":\"Clear Session Context\",\"description\":\"Clear session context from Redis\",\"operationId\":\"clear_session_context_api_v1_sessions__session_id__context_delete\",\"parameters\":[{\"name\":\"session_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Session Id\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/scenarios\":{\"get\":{\"tags\":[\"Scenarios\"],\"summary\":\"List Scenarios\",\"description\":\"List all available scenarios\",\"operationId\":\"list_scenarios_api_v1_scenarios_get\",\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ScenarioListResponse\"}}}}}}},\"/api/v1/scenarios/leak_detection/policies\":{\"get\":{\"tags\":[\"Scenarios\"],\"summary\":\"List Leak Detection Policies\",\"description\":\"List all policy rules for leak_detection scenario\",\"operationId\":\"list_leak_detection_policies_api_v1_scenarios_leak_detection_policies_get\",\"parameters\":[{\"name\":\"category\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"description\":\"Filter by category: secret, pii\",\"title\":\"Category\"},\"description\":\"Filter by category: secret, pii\"},{\"name\":\"enabled\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"boolean\"},{\"type\":\"null\"}],\"description\":\"Filter by enabled status\",\"title\":\"Enabled\"},\"description\":\"Filter by enabled status\"}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PolicyRuleListResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}},\"post\":{\"tags\":[\"Scenarios\"],\"summary\":\"Create Leak Detection Policy\",\"description\":\"Create a new policy rule for leak_detection scenario.\\n\\nThe rule will be added to the appropriate policy file based on category.\",\"operationId\":\"create_leak_detection_policy_api_v1_scenarios_leak_detection_policies_post\",\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PolicyRuleCreate\"}}}},\"responses\":{\"201\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PolicyRule\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/scenarios/leak_detection/policies/{rule_id}\":{\"get\":{\"tags\":[\"Scenarios\"],\"summary\":\"Get Policy Rule\",\"description\":\"Get single policy rule by ID\",\"operationId\":\"get_policy_rule_api_v1_scenarios_leak_detection_policies__rule_id__get\",\"parameters\":[{\"name\":\"rule_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Rule Id\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PolicyRule\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}},\"patch\":{\"tags\":[\"Scenarios\"],\"summary\":\"Update Policy Rule\",\"description\":\"Update policy rule.\\n\\nEditable fields: enabled, action, severity, pattern, flags, message, redact_with.\\nChanges are persisted to YAML files and scenarios are reloaded.\",\"operationId\":\"update_policy_rule_api_v1_scenarios_leak_detection_policies__rule_id__patch\",\"parameters\":[{\"name\":\"rule_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Rule Id\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PolicyRuleUpdate\"}}}},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PolicyRule\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/scenarios/prompt_injection/policies\":{\"get\":{\"tags\":[\"Scenarios\"],\"summary\":\"List Prompt Injection Policies\",\"description\":\"List all policy rules for prompt_injection scenario\",\"operationId\":\"list_prompt_injection_policies_api_v1_scenarios_prompt_injection_policies_get\",\"parameters\":[{\"name\":\"category\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"description\":\"Filter by category\",\"title\":\"Category\"},\"description\":\"Filter by category\"},{\"name\":\"enabled\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"boolean\"},{\"type\":\"null\"}],\"description\":\"Filter by enabled status\",\"title\":\"Enabled\"},\"description\":\"Filter by enabled status\"}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PolicyRuleListResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}},\"post\":{\"tags\":[\"Scenarios\"],\"summary\":\"Create Prompt Injection Policy\",\"description\":\"Create a new policy rule for prompt_injection scenario.\\n\\nThe rule will be added to injection.yaml policy file.\",\"operationId\":\"create_prompt_injection_policy_api_v1_scenarios_prompt_injection_policies_post\",\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PolicyRuleCreate\"}}}},\"responses\":{\"201\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PolicyRule\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/scenarios/prompt_injection/policies/{rule_id}\":{\"get\":{\"tags\":[\"Scenarios\"],\"summary\":\"Get Prompt Injection Policy Rule\",\"description\":\"Get single prompt_injection policy rule by ID\",\"operationId\":\"get_prompt_injection_policy_rule_api_v1_scenarios_prompt_injection_policies__rule_id__get\",\"parameters\":[{\"name\":\"rule_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Rule Id\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PolicyRule\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}},\"patch\":{\"tags\":[\"Scenarios\"],\"summary\":\"Update Prompt Injection Policy Rule\",\"description\":\"Update prompt_injection policy rule.\\n\\nEditable fields: enabled, action, severity, pattern, flags, message, redact_with.\\nChanges are persisted to YAML files and scenarios are reloaded.\",\"operationId\":\"update_prompt_injection_policy_rule_api_v1_scenarios_prompt_injection_policies__rule_id__patch\",\"parameters\":[{\"name\":\"rule_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Rule Id\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PolicyRuleUpdate\"}}}},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PolicyRule\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/scenarios/tool_policy/tool-config\":{\"get\":{\"tags\":[\"Scenarios\"],\"summary\":\"Get Tool Policy Config\",\"description\":\"Get tool_policy specific configuration.\\n\\nReturns configuration for tool allowlists, blocklists, limits, and argument validation rules.\",\"operationId\":\"get_tool_policy_config_api_v1_scenarios_tool_policy_tool_config_get\",\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ToolPolicyConfigResponse\"}}}}}},\"patch\":{\"tags\":[\"Scenarios\"],\"summary\":\"Update Tool Policy Config\",\"description\":\"Update tool_policy specific configuration.\\n\\nEditable fields:\\n- allowed_tools: List of allowed tool names (empty = all allowed)\\n- blocked_tools: List of blocked tool names\\n- max_steps: Maximum steps limit\\n- max_tool_calls: Maximum tool calls limit\\n- max_consecutive_errors: Max consecutive errors before blocking\",\"operationId\":\"update_tool_policy_config_api_v1_scenarios_tool_policy_tool_config_patch\",\"requestBody\":{\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ToolPolicyConfigUpdate\"}}},\"required\":true},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ToolPolicyConfigResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/scenarios/tool_policy/argument-rules/{tool_name}\":{\"post\":{\"tags\":[\"Scenarios\"],\"summary\":\"Add Argument Rule\",\"description\":\"Add an argument validation rule for a specific tool.\\n\\nRules define regex patterns to validate tool arguments.\\nAction can be 'allow' (pattern must match) or 'block' (pattern triggers block).\",\"operationId\":\"add_argument_rule_api_v1_scenarios_tool_policy_argument_rules__tool_name__post\",\"parameters\":[{\"name\":\"tool_name\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Tool Name\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ArgumentRuleCreate\"}}}},\"responses\":{\"201\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ToolPolicyConfigResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/scenarios/tool_policy/argument-rules/{tool_name}/{rule_index}\":{\"delete\":{\"tags\":[\"Scenarios\"],\"summary\":\"Delete Argument Rule\",\"description\":\"Delete an argument validation rule by its index.\\n\\nRule indices start at 0.\",\"operationId\":\"delete_argument_rule_api_v1_scenarios_tool_policy_argument_rules__tool_name___rule_index__delete\",\"parameters\":[{\"name\":\"tool_name\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Tool Name\"}},{\"name\":\"rule_index\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"integer\",\"title\":\"Rule Index\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ToolPolicyConfigResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}},\"patch\":{\"tags\":[\"Scenarios\"],\"summary\":\"Update Argument Rule\",\"description\":\"Update an existing argument validation rule.\\n\\nEditable fields: field, pattern, action, message.\",\"operationId\":\"update_argument_rule_api_v1_scenarios_tool_policy_argument_rules__tool_name___rule_index__patch\",\"parameters\":[{\"name\":\"tool_name\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Tool Name\"}},{\"name\":\"rule_index\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"integer\",\"title\":\"Rule Index\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ArgumentRuleUpdate\"}}}},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ToolPolicyConfigResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/scenarios/tool_policy/argument-rules/{tool_name}/reorder\":{\"post\":{\"tags\":[\"Scenarios\"],\"summary\":\"Reorder Argument Rules\",\"description\":\"Reorder argument rules for a tool.\\n\\nProvide a list of indices representing the new order.\",\"operationId\":\"reorder_argument_rules_api_v1_scenarios_tool_policy_argument_rules__tool_name__reorder_post\",\"parameters\":[{\"name\":\"tool_name\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Tool Name\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ArgumentRulesReorder\"}}}},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ToolPolicyConfigResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/scenarios/tool_policy/argument-rules/{tool_name}/{rule_index}/move\":{\"post\":{\"tags\":[\"Scenarios\"],\"summary\":\"Move Argument Rule\",\"description\":\"Move an argument rule up or down in the list.\\n\\nDirection must be 'up' or 'down'.\",\"operationId\":\"move_argument_rule_api_v1_scenarios_tool_policy_argument_rules__tool_name___rule_index__move_post\",\"parameters\":[{\"name\":\"tool_name\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Tool Name\"}},{\"name\":\"rule_index\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"integer\",\"title\":\"Rule Index\"}},{\"name\":\"direction\",\"in\":\"query\",\"required\":true,\"schema\":{\"type\":\"string\",\"pattern\":\"^(up|down)$\",\"description\":\"Direction to move: 'up' or 'down'\",\"title\":\"Direction\"},\"description\":\"Direction to move: 'up' or 'down'\"}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ToolPolicyConfigResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/scenarios/{scenario_id}\":{\"get\":{\"tags\":[\"Scenarios\"],\"summary\":\"Get Scenario\",\"description\":\"Get scenario details by ID\",\"operationId\":\"get_scenario_api_v1_scenarios__scenario_id__get\",\"parameters\":[{\"name\":\"scenario_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Scenario Id\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ScenarioDetail\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/scenarios/{scenario_id}/static-rules\":{\"patch\":{\"tags\":[\"Scenarios\"],\"summary\":\"Toggle Static Rules\",\"description\":\"Toggle static rules for a scenario.\\n\\nStatic rules include regex patterns, blocklists, allowlists, limits, etc.\\nChanges are persisted to YAML config files and scenarios are reloaded.\",\"operationId\":\"toggle_static_rules_api_v1_scenarios__scenario_id__static_rules_patch\",\"parameters\":[{\"name\":\"scenario_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Scenario Id\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ScenarioToggleRequest\"}}}},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ScenarioToggleResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/scenarios/{scenario_id}/llm-detector\":{\"patch\":{\"tags\":[\"Scenarios\"],\"summary\":\"Toggle Llm Detector\",\"description\":\"Toggle LLM detector for a scenario.\\n\\nLLM detector uses language models to analyze events for security threats.\\nChanges are persisted to YAML config files and scenarios are reloaded.\",\"operationId\":\"toggle_llm_detector_api_v1_scenarios__scenario_id__llm_detector_patch\",\"parameters\":[{\"name\":\"scenario_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Scenario Id\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ScenarioToggleRequest\"}}}},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ScenarioToggleResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/scenarios/{scenario_id}/llm-config\":{\"get\":{\"tags\":[\"Scenarios\"],\"summary\":\"Get Llm Config\",\"description\":\"Get LLM detector configuration for a scenario.\\n\\nReturns configuration parameters for the LLM detector including:\\n- llm_detector_name: Name of the detector to use\\n- llm_detector_threshold: Confidence threshold (0.0-1.0)\\n- llm_message_mode: Message selection mode (single/from_user_message)\\n- llm_prompt: Scenario-specific prompt\",\"operationId\":\"get_llm_config_api_v1_scenarios__scenario_id__llm_config_get\",\"parameters\":[{\"name\":\"scenario_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Scenario Id\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ScenarioLLMConfigResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}},\"patch\":{\"tags\":[\"Scenarios\"],\"summary\":\"Update Llm Config\",\"description\":\"Update LLM detector configuration for a scenario.\\n\\nEditable fields:\\n- llm_detector_name: Name of the detector to use (from llm_detector_configs)\\n- llm_detector_threshold: Confidence threshold (0.0-1.0)\\n- llm_message_mode: Message selection mode (single/from_user_message)\\n- llm_prompt: Scenario-specific prompt\\n\\nChanges are persisted to YAML config files and scenarios are reloaded.\",\"operationId\":\"update_llm_config_api_v1_scenarios__scenario_id__llm_config_patch\",\"parameters\":[{\"name\":\"scenario_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Scenario Id\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ScenarioLLMConfigUpdate\"}}}},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ScenarioLLMConfigResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/scenarios/{scenario_id}/base-config\":{\"get\":{\"tags\":[\"Scenarios\"],\"summary\":\"Get Base Config\",\"description\":\"Get base configuration for a scenario.\\n\\nReturns base configuration parameters:\\n- priority: Scenario priority (lower = higher priority)\\n- supported_event_types: Event types this scenario processes\",\"operationId\":\"get_base_config_api_v1_scenarios__scenario_id__base_config_get\",\"parameters\":[{\"name\":\"scenario_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Scenario Id\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ScenarioBaseConfigResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}},\"patch\":{\"tags\":[\"Scenarios\"],\"summary\":\"Update Base Config\",\"description\":\"Update base configuration for a scenario.\\n\\nEditable fields:\\n- priority: Scenario priority (lower = higher priority, 1-1000)\\n- supported_event_types: Event types this scenario should process\\n\\nChanges are persisted to YAML config files and scenarios are reloaded.\",\"operationId\":\"update_base_config_api_v1_scenarios__scenario_id__base_config_patch\",\"parameters\":[{\"name\":\"scenario_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Scenario Id\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ScenarioBaseConfigUpdate\"}}}},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ScenarioBaseConfigResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/llm-detectors\":{\"get\":{\"tags\":[\"LLM Detectors\"],\"summary\":\"List Detectors\",\"description\":\"List LLM detector configurations.\\n\\n- **project_id**: Filter by project ID (optional)\\n- **include_global**: Include global detectors when filtering by project\\n- **enabled**: Filter by enabled status\\n- **provider**: Filter by LLM provider\",\"operationId\":\"list_detectors_api_v1_llm_detectors_get\",\"parameters\":[{\"name\":\"project_id\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"description\":\"Filter by project ID\",\"title\":\"Project Id\"},\"description\":\"Filter by project ID\"},{\"name\":\"include_global\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"Include global detectors\",\"default\":true,\"title\":\"Include Global\"},\"description\":\"Include global detectors\"},{\"name\":\"enabled\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"boolean\"},{\"type\":\"null\"}],\"description\":\"Filter by enabled status\",\"title\":\"Enabled\"},\"description\":\"Filter by enabled status\"},{\"name\":\"provider\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/LLMProvider\"},{\"type\":\"null\"}],\"description\":\"Filter by provider\",\"title\":\"Provider\"},\"description\":\"Filter by provider\"},{\"name\":\"page\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"integer\",\"minimum\":1,\"default\":1,\"title\":\"Page\"}},{\"name\":\"page_size\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"integer\",\"maximum\":100,\"minimum\":1,\"default\":20,\"title\":\"Page Size\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/LLMDetectorConfigList\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}},\"post\":{\"tags\":[\"LLM Detectors\"],\"summary\":\"Create Detector\",\"description\":\"Create a new LLM detector configuration.\\n\\nAPI key will be encrypted before storage.\",\"operationId\":\"create_detector_api_v1_llm_detectors_post\",\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/LLMDetectorConfigCreate\"}}}},\"responses\":{\"201\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/LLMDetectorConfigResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/llm-detectors/{detector_id}\":{\"get\":{\"tags\":[\"LLM Detectors\"],\"summary\":\"Get Detector\",\"description\":\"Get LLM detector configuration by ID.\",\"operationId\":\"get_detector_api_v1_llm_detectors__detector_id__get\",\"parameters\":[{\"name\":\"detector_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Detector Id\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/LLMDetectorConfigResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}},\"patch\":{\"tags\":[\"LLM Detectors\"],\"summary\":\"Update Detector\",\"description\":\"Update LLM detector configuration.\\n\\nIf api_key is provided, it will be re-encrypted.\",\"operationId\":\"update_detector_api_v1_llm_detectors__detector_id__patch\",\"parameters\":[{\"name\":\"detector_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Detector Id\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/LLMDetectorConfigUpdate\"}}}},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/LLMDetectorConfigResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}},\"delete\":{\"tags\":[\"LLM Detectors\"],\"summary\":\"Delete Detector\",\"description\":\"Delete LLM detector configuration.\",\"operationId\":\"delete_detector_api_v1_llm_detectors__detector_id__delete\",\"parameters\":[{\"name\":\"detector_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Detector Id\"}}],\"responses\":{\"204\":{\"description\":\"Successful Response\"},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/llm-detectors/by-name/{name}\":{\"get\":{\"tags\":[\"LLM Detectors\"],\"summary\":\"Get Detector By Name\",\"description\":\"Get LLM detector configuration by name.\\n\\nIf project_id is provided, tries project-specific first, then global.\",\"operationId\":\"get_detector_by_name_api_v1_llm_detectors_by_name__name__get\",\"parameters\":[{\"name\":\"name\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Name\"}},{\"name\":\"project_id\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Project Id\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/LLMDetectorConfigResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/llm-detectors/test\":{\"post\":{\"tags\":[\"LLM Detectors\"],\"summary\":\"Test Detection\",\"description\":\"Test LLM detection with specified detector.\\n\\nUseful for testing detector configurations before using in scenarios.\",\"operationId\":\"test_detection_api_v1_llm_detectors_test_post\",\"requestBody\":{\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/DetectionRequest\"}}},\"required\":true},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/DetectionResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/reviews/detectors\":{\"get\":{\"tags\":[\"Reviews\"],\"summary\":\"List Detector Names\",\"description\":\"Get list of distinct detector names available for filtering\",\"operationId\":\"list_detector_names_api_v1_reviews_detectors_get\",\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"items\":{\"type\":\"string\"},\"type\":\"array\",\"title\":\"Response List Detector Names Api V1 Reviews Detectors Get\"}}}}}}},\"/api/v1/reviews\":{\"get\":{\"tags\":[\"Reviews\"],\"summary\":\"List Reviews\",\"description\":\"Get all incidents that have review status.\\nReturns two lists:\\n- pending_review: incidents requiring human review (review_status = REVIEW_REQUIRED)\\n- already_reviewed: incidents that have been reviewed (review_status = ALREADY_REVIEWED)\\n\\nFilters:\\n- label_filter: 'correct' (tp/tn), 'incorrect' (fp/fn), or specific label (tp, tn, fp, fn)\\n- detector_name: filter by LLM detector name\",\"operationId\":\"list_reviews_api_v1_reviews_get\",\"parameters\":[{\"name\":\"pending_limit\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"integer\",\"maximum\":500,\"minimum\":1,\"description\":\"Max pending items\",\"default\":100,\"title\":\"Pending Limit\"},\"description\":\"Max pending items\"},{\"name\":\"reviewed_limit\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"integer\",\"maximum\":500,\"minimum\":1,\"description\":\"Max reviewed items\",\"default\":100,\"title\":\"Reviewed Limit\"},\"description\":\"Max reviewed items\"},{\"name\":\"label_filter\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"description\":\"Filter by label: 'correct' (tp/tn), 'incorrect' (fp/fn), or specific: tp, tn, fp, fn\",\"title\":\"Label Filter\"},\"description\":\"Filter by label: 'correct' (tp/tn), 'incorrect' (fp/fn), or specific: tp, tn, fp, fn\"},{\"name\":\"detector_name\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"description\":\"Filter by detector name\",\"title\":\"Detector Name\"},\"description\":\"Filter by detector name\"}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ReviewListResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/datasets/export\":{\"post\":{\"tags\":[\"Datasets\"],\"summary\":\"Export Dataset\",\"description\":\"Export reviewed incidents as JSONL dataset.\\n\\nFilters:\\n- scenario_id: Filter by scenario\\n- agent_name: Filter by agent name\\n\\nOutput format (JSONL):\\n- message_text: The text that was analyzed\\n- label: Human label (tp, fp, fn, tn)\\n- meta: {llm_label: safe/unsafe, created_at, reviewed_at}\",\"operationId\":\"export_dataset_api_v1_datasets_export_post\",\"requestBody\":{\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/DatasetExportRequest\"}}},\"required\":true},\"responses\":{\"200\":{\"description\":\"Successful Res +[2026-01-25T16:10:38.570Z] [INFO] ponse\",\"content\":{\"application/json\":{\"schema\":{}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/replay/time_interval\":{\"post\":{\"tags\":[\"Replay\"],\"summary\":\"Replay Time Interval\",\"description\":\"Replay all events in a time interval through security scenarios.\\n\\nThis will:\\n1. Find all events in the time range\\n2. Extract unique batch_ids\\n3. Process each batch with a COMMON replay_id\\n4. Create new incidents with from_replay: true marker\\n\\nDefault time range: last 24 hours.\",\"operationId\":\"replay_time_interval_api_v1_replay_time_interval_post\",\"requestBody\":{\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TimeIntervalReplayRequest\"}}},\"required\":true},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TimeIntervalReplayResult\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/replay/batch/{batch_id}\":{\"get\":{\"tags\":[\"Replay\"],\"summary\":\"Get Batch Info\",\"description\":\"Get information about an event batch.\\n\\nReturns batch metadata including event count and time range.\",\"operationId\":\"get_batch_info_api_v1_replay_batch__batch_id__get\",\"parameters\":[{\"name\":\"batch_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Batch Id\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BatchInfo\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/replay/{batch_id}\":{\"post\":{\"tags\":[\"Replay\"],\"summary\":\"Replay Batch\",\"description\":\"Replay a batch of events through security scenarios.\\n\\nThis will:\\n1. Get all events in the batch\\n2. Reconstruct session context for each event\\n3. Run all security scenarios\\n4. Create new incidents with from_replay: true marker\\n5. Create a Replay entity with optional notes\\n\\nDoes NOT:\\n- Modify original events\\n- Delete existing incidents\\n- Update Redis session context\\n\\nReturns:\\n ReplayResult with detailed results for each event and replay_id\",\"operationId\":\"replay_batch_api_v1_replay__batch_id__post\",\"parameters\":[{\"name\":\"batch_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Batch Id\"}}],\"requestBody\":{\"content\":{\"application/json\":{\"schema\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/ReplayRequest\"},{\"type\":\"null\"}],\"title\":\"Request\"}}}},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ReplayResult\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/replay/{replay_id}/metrics\":{\"get\":{\"tags\":[\"Replay\"],\"summary\":\"Get Replay Metrics\",\"description\":\"Get metrics for a replay session.\\n\\nReturns:\\n - incidents_count: Total number of incidents\\n - review_required_count: Incidents requiring review\\n - conflicts_count: Incidents where human label conflicts with decision\\n - precision_on_reviewed: TP / (TP + FP) on reviewed incidents\",\"operationId\":\"get_replay_metrics_api_v1_replay__replay_id__metrics_get\",\"parameters\":[{\"name\":\"replay_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Replay Id\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ReplayMetrics\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/replay\":{\"get\":{\"tags\":[\"Replay\"],\"summary\":\"List Replays\",\"description\":\"Get list of all replay sessions.\\n\\nReturns both BATCH and TIME_INTERVAL replays.\",\"operationId\":\"list_replays_api_v1_replay_get\",\"parameters\":[{\"name\":\"skip\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"integer\",\"minimum\":0,\"default\":0,\"title\":\"Skip\"}},{\"name\":\"limit\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"integer\",\"maximum\":200,\"minimum\":1,\"default\":50,\"title\":\"Limit\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ReplayListResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/simulate\":{\"post\":{\"tags\":[\"Simulate\"],\"summary\":\"Simulate Batch\",\"description\":\"Simulate a batch of events through security scenarios.\\n\\nThis endpoint allows static testing of security scenarios\\nwithout making actual LLM calls. Events are processed in order,\\nsaved to database, and incidents are created as usual.\\n\\nUse cases:\\n- Testing scenario configurations\\n- Regression testing with known event sequences\\n- Validating that specific patterns are blocked/allowed\\n\\nArgs:\\n request: Batch of events to simulate\\n\\nReturns:\\n SimulateResponse with results for each event and human-readable report\",\"operationId\":\"simulate_batch_api_v1_simulate_post\",\"requestBody\":{\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/SimulateRequest\"}}},\"required\":true},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/SimulateResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/admin/clear-database\":{\"post\":{\"tags\":[\"Admin\"],\"summary\":\"Clear Database\",\"description\":\"Clear all tables in database except alembic_version.\\nWARNING: This is a destructive operation!\",\"operationId\":\"clear_database_api_v1_admin_clear_database_post\",\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"additionalProperties\":true,\"type\":\"object\",\"title\":\"Response Clear Database Api V1 Admin Clear Database Post\"}}}}}}},\"/api/v1/audit\":{\"get\":{\"tags\":[\"Audit\"],\"summary\":\"List Audit Logs\",\"operationId\":\"list_audit_logs_api_v1_audit_get\",\"parameters\":[{\"name\":\"user_id\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"uuid\"},{\"type\":\"null\"}],\"title\":\"User Id\"}},{\"name\":\"action\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Action\"}},{\"name\":\"from\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"date-time\"},{\"type\":\"null\"}],\"title\":\"From\"}},{\"name\":\"to\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"date-time\"},{\"type\":\"null\"}],\"title\":\"To\"}},{\"name\":\"page\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"integer\",\"minimum\":1,\"default\":1,\"title\":\"Page\"}},{\"name\":\"page_size\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"integer\",\"maximum\":200,\"minimum\":1,\"default\":50,\"title\":\"Page Size\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AuditLogListResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}}},\"components\":{\"schemas\":{\"AgentEventCreate\":{\"properties\":{\"session_id\":{\"type\":\"string\",\"title\":\"Session Id\"},\"step\":{\"type\":\"integer\",\"minimum\":0.0,\"title\":\"Step\"},\"event_type\":{\"$ref\":\"#/components/schemas/EventType\"},\"role\":{\"$ref\":\"#/components/schemas/Role\"},\"batch_id\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"uuid\"},{\"type\":\"null\"}],\"title\":\"Batch Id\"},\"project_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Project Id\"},\"agent_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Agent Id\"},\"user_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"User Id\"},\"message\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Message\"},\"tool_calls\":{\"items\":{\"$ref\":\"#/components/schemas/src__schemas__event__ToolCall\"},\"type\":\"array\",\"title\":\"Tool Calls\"},\"tool_results\":{\"items\":{\"$ref\":\"#/components/schemas/ToolResult\"},\"type\":\"array\",\"title\":\"Tool Results\"},\"data_source\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/DataSource\"},{\"type\":\"null\"}]},\"meta\":{\"anyOf\":[{\"additionalProperties\":true,\"type\":\"object\"},{\"type\":\"null\"}],\"title\":\"Meta\"}},\"type\":\"object\",\"required\":[\"session_id\",\"step\",\"event_type\",\"role\"],\"title\":\"AgentEventCreate\",\"description\":\"Schema for creating agent event via API\"},\"AgentEventResponse\":{\"properties\":{\"event_id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Event Id\"},\"session_id\":{\"type\":\"string\",\"title\":\"Session Id\"},\"step\":{\"type\":\"integer\",\"minimum\":0.0,\"title\":\"Step\"},\"timestamp\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Timestamp\"},\"event_type\":{\"$ref\":\"#/components/schemas/EventType\"},\"role\":{\"$ref\":\"#/components/schemas/Role\"},\"batch_id\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"uuid\"},{\"type\":\"null\"}],\"title\":\"Batch Id\"},\"project_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Project Id\"},\"agent_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Agent Id\"},\"user_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"User Id\"},\"model\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Model\"},\"message\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Message\"},\"tool_calls\":{\"items\":{\"$ref\":\"#/components/schemas/src__schemas__event__ToolCall\"},\"type\":\"array\",\"title\":\"Tool Calls\"},\"tool_results\":{\"items\":{\"$ref\":\"#/components/schemas/ToolResult\"},\"type\":\"array\",\"title\":\"Tool Results\"},\"data_source\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/DataSource\"},{\"type\":\"null\"}]},\"data_sources\":{\"items\":{\"$ref\":\"#/components/schemas/DataSource\"},\"type\":\"array\",\"title\":\"Data Sources\"},\"meta\":{\"anyOf\":[{\"additionalProperties\":true,\"type\":\"object\"},{\"type\":\"null\"}],\"title\":\"Meta\"},\"final_decision\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/Decision\"},{\"type\":\"null\"}]},\"incidents_count\":{\"type\":\"integer\",\"title\":\"Incidents Count\",\"default\":0}},\"type\":\"object\",\"required\":[\"session_id\",\"step\",\"event_type\",\"role\"],\"title\":\"AgentEventResponse\",\"description\":\"Response schema with additional fields\",\"example\":{\"agent_id\":\"support_agent\",\"event_type\":\"tool_call\",\"role\":\"assistant\",\"session_id\":\"sess_abc123\",\"step\":1,\"tool_calls\":[{\"arguments\":{\"body\":\"Hello\",\"to\":\"user@example.com\"},\"id\":\"call_1\",\"name\":\"send_email\"}]}},\"ArgumentRule\":{\"properties\":{\"field\":{\"type\":\"string\",\"title\":\"Field\",\"description\":\"Argument field name to validate\"},\"pattern\":{\"type\":\"string\",\"title\":\"Pattern\",\"description\":\"Regex pattern for validation\"},\"action\":{\"$ref\":\"#/components/schemas/ArgumentRuleAction\",\"description\":\"Action when pattern matches (block) or doesn't match (allow)\",\"default\":\"block\"},\"message\":{\"type\":\"string\",\"title\":\"Message\",\"description\":\"Error message when rule triggers\",\"default\":\"\"}},\"type\":\"object\",\"required\":[\"field\",\"pattern\"],\"title\":\"ArgumentRule\",\"description\":\"Single argument validation rule\"},\"ArgumentRuleAction\":{\"type\":\"string\",\"enum\":[\"allow\",\"block\"],\"title\":\"ArgumentRuleAction\",\"description\":\"Action for argument validation rule\"},\"ArgumentRuleCreate\":{\"properties\":{\"field\":{\"type\":\"string\",\"maxLength\":100,\"minLength\":1,\"title\":\"Field\",\"description\":\"Argument field name\"},\"pattern\":{\"type\":\"string\",\"minLength\":1,\"title\":\"Pattern\",\"description\":\"Regex pattern\"},\"action\":{\"$ref\":\"#/components/schemas/ArgumentRuleAction\",\"default\":\"block\"},\"message\":{\"type\":\"string\",\"title\":\"Message\",\"description\":\"Error message\",\"default\":\"\"}},\"additionalProperties\":false,\"type\":\"object\",\"required\":[\"field\",\"pattern\"],\"title\":\"ArgumentRuleCreate\",\"description\":\"Create a new argument validation rule\"},\"ArgumentRuleUpdate\":{\"properties\":{\"field\":{\"anyOf\":[{\"type\":\"string\",\"maxLength\":100,\"minLength\":1},{\"type\":\"null\"}],\"title\":\"Field\",\"description\":\"Argument field name\"},\"pattern\":{\"anyOf\":[{\"type\":\"string\",\"minLength\":1},{\"type\":\"null\"}],\"title\":\"Pattern\",\"description\":\"Regex pattern\"},\"action\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/ArgumentRuleAction\"},{\"type\":\"null\"}],\"description\":\"Action type\"},\"message\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Message\",\"description\":\"Error message\"}},\"additionalProperties\":false,\"type\":\"object\",\"title\":\"ArgumentRuleUpdate\",\"description\":\"Update an existing argument validation rule\"},\"ArgumentRulesReorder\":{\"properties\":{\"rule_indices\":{\"items\":{\"type\":\"integer\"},\"type\":\"array\",\"title\":\"Rule Indices\",\"description\":\"New order of rule indices (0-based)\"}},\"additionalProperties\":false,\"type\":\"object\",\"required\":[\"rule_indices\"],\"title\":\"ArgumentRulesReorder\",\"description\":\"Reorder argument rules for a tool\"},\"AuditLogItem\":{\"properties\":{\"id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Id\"},\"timestamp\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Timestamp\"},\"user_id\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"uuid\"},{\"type\":\"null\"}],\"title\":\"User Id\"},\"action\":{\"type\":\"string\",\"title\":\"Action\"},\"method\":{\"type\":\"string\",\"title\":\"Method\"},\"endpoint\":{\"type\":\"string\",\"title\":\"Endpoint\"},\"status_code\":{\"type\":\"integer\",\"title\":\"Status Code\"},\"detail\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Detail\"},\"client_ip\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Client Ip\"}},\"type\":\"object\",\"required\":[\"id\",\"timestamp\",\"action\",\"method\",\"endpoint\",\"status_code\"],\"title\":\"AuditLogItem\"},\"AuditLogListResponse\":{\"properties\":{\"items\":{\"items\":{\"$ref\":\"#/components/schemas/AuditLogItem\"},\"type\":\"array\",\"title\":\"Items\"},\"total\":{\"type\":\"integer\",\"title\":\"Total\"},\"page\":{\"type\":\"integer\",\"title\":\"Page\"},\"page_size\":{\"type\":\"integer\",\"title\":\"Page Size\"},\"pages\":{\"type\":\"integer\",\"title\":\"Pages\"}},\"type\":\"object\",\"required\":[\"items\",\"total\",\"page\",\"page_size\",\"pages\"],\"title\":\"AuditLogListResponse\"},\"BatchInfo\":{\"properties\":{\"batch_id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Batch Id\"},\"session_id\":{\"type\":\"string\",\"title\":\"Session Id\"},\"events_count\":{\"type\":\"integer\",\"title\":\"Events Count\"},\"first_event_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"First Event At\"},\"last_event_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Last Event At\"},\"has_user_message\":{\"type\":\"boolean\",\"title\":\"Has User Message\"}},\"type\":\"object\",\"required\":[\"batch_id\",\"session_id\",\"events_count\",\"first_event_at\",\"last_event_at\",\"has_user_message\"],\"title\":\"BatchInfo\",\"description\":\"Information about an event batch\"},\"BatchReplayResult\":{\"properties\":{\"batch_id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Batch Id\"},\"session_id\":{\"type\":\"string\",\"title\":\"Session Id\"},\"events_count\":{\"type\":\"integer\",\"title\":\"Events Count\"},\"incidents_created\":{\"type\":\"integer\",\"title\":\"Incidents Created\"},\"event_results\":{\"items\":{\"$ref\":\"#/components/schemas/ReplayEventResult\"},\"type\":\"array\",\"title\":\"Event Results\"}},\"type\":\"object\",\"required\":[\"batch_id\",\"session_id\",\"events_count\",\"incidents_created\",\"event_results\"],\"title\":\"BatchReplayResult\",\"description\":\"Result of replaying a single batch within time interval\"},\"ChatCompletionRequest\":{\"properties\":{\"model\":{\"type\":\"string\",\"title\":\"Model\",\"description\":\"Model ID (GigaChat, GigaChat-Plus, GigaChat-Pro, gpt-4, etc.)\",\"default\":\"GigaChat\"},\"messages\":{\"items\":{\"$ref\":\"#/components/schemas/ChatMessage\"},\"type\":\"array\",\"title\":\"Messages\",\"description\":\"List of messages in conversation\",\"default\":[{\"role\":\"user\",\"content\":\"ĐŸŅ€Đ¸Đ˛ĐĩŅ‚! КаĐē Đ´ĐĩĐģа?\"}]},\"tools\":{\"anyOf\":[{\"items\":{\"$ref\":\"#/components/schemas/ToolDefinition\"},\"type\":\"array\"},{\"type\":\"null\"}],\"title\":\"Tools\"},\"tool_choice\":{\"anyOf\":[{\"type\":\"string\"},{\"additionalProperties\":true,\"type\":\"object\"},{\"type\":\"null\"}],\"title\":\"Tool Choice\"},\"temperature\":{\"anyOf\":[{\"type\":\"number\",\"maximum\":2.0,\"minimum\":0.0},{\"type\":\"null\"}],\"title\":\"Temperature\"},\"top_p\":{\"anyOf\":[{\"type\":\"number\",\"maximum\":1.0,\"minimum\":0.0},{\"type\":\"null\"}],\"title\":\"Top P\",\"default\":1.0},\"n\":{\"anyOf\":[{\"type\":\"integer\",\"maximum\":10.0,\"minimum\":1.0},{\"type\":\"null\"}],\"title\":\"N\",\"default\":1},\"max_tokens\":{\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"null\"}],\"title\":\"Max Tokens\",\"description\":\"Max tokens to generate\"},\"stop\":{\"anyOf\":[{\"type\":\"string\"},{\"items\":{\"type\":\"string\"},\"type\":\"array\"},{\"type\":\"null\"}],\"title\":\"Stop\"},\"presence_penalty\":{\"anyOf\":[{\"type\":\"number\",\"maximum\":2.0,\"minimum\":-2.0},{\"type\":\"null\"}],\"title\":\"Presence Penalty\",\"default\":0},\"frequency_penalty\":{\"anyOf\":[{\"type\":\"number\",\"maximum\":2.0,\"minimum\":-2.0},{\"type\":\"null\"}],\"title\":\"Frequency Penalty\",\"default\":0},\"stream\":{\"anyOf\":[{\"type\":\"boolean\"},{\"type\":\"null\"}],\"title\":\"Stream\",\"default\":false},\"user\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"User\"},\"seed\":{\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"null\"}],\"title\":\"Seed\"},\"response_format\":{\"anyOf\":[{\"additionalProperties\":true,\"type\":\"object\"},{\"type\":\"null\"}],\"title\":\"Response Format\"},\"session_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Session Id\"},\"agent_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Agent Id\"},\"project_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Project Id\"}},\"type\":\"object\",\"title\":\"ChatCompletionRequest\",\"description\":\"OpenAI-compatible chat completion request.\\nhttps://platform.openai.com/docs/api-reference/chat/create\",\"examples\":[{\"max_tokens\":1024,\"messages\":[{\"content\":\"ĐŸŅ€Đ¸Đ˛ĐĩŅ‚! Đ Đ°ŅŅĐēаĐļи Đž ҁĐĩĐąĐĩ.\",\"role\":\"user\"}],\"model\":\"GigaChat\",\"temperature\":0.7}]},\"ChatMessage\":{\"properties\":{\"role\":{\"type\":\"string\",\"enum\":[\"system\",\"user\",\"assistant\",\"tool\"],\"title\":\"Role\"},\"content\":{\"anyOf\":[{\"type\":\"string\"},{\"items\":{},\"type\":\"array\"},{\"type\":\"null\"}],\"title\":\"Content\"},\"name\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Name\"},\"tool_calls\":{\"anyOf\":[{\"items\":{\"$ref\":\"#/components/schemas/src__schemas__openai__ToolCall\"},\"type\":\"array\"},{\"type\":\"null\"}],\"title\":\"Tool Calls\"},\"tool_call_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Tool Call Id\"}},\"type\":\"object\",\"required\":[\"role\"],\"title\":\"ChatMessage\",\"description\":\"Single message in conversation\"},\"DataSource\":{\"properties\":{\"type\":{\"type\":\"string\",\"title\":\"Type\"},\"id\":{\"type\":\"string\",\"title\":\"Id\"},\"server\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Server\"},\"meta\":{\"anyOf\":[{\"additionalProperties\":true,\"type\":\"object\"},{\"type\":\"null\"}],\"title\":\"Meta\"}},\"type\":\"object\",\"required\":[\"type\",\"id\"],\"title\":\"DataSource\",\"description\":\"Data source for RAG/data poisoning tracking\"},\"DatasetExportRequest\":{\"properties\":{\"scenario_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Scenario Id\"},\"agent_name\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Agent Name\"}},\"type\":\"object\",\"title\":\"DatasetExportRequest\",\"description\":\"Request schema for exporting dataset\"},\"Decision\":{\"type\":\"string\",\"enum\":[\"allow\",\"block\",\"log_only\",\"modify\",\"redact\"],\"title\":\"Decision\",\"description\":\"Scenario decision types\"},\"DetectionRequest\":{\"properties\":{\"detector_name\":{\"type\":\"string\",\"title\":\"Detector Name\",\"description\":\"Name of detector to use\"},\"content\":{\"type\":\"string\",\"minLength\":1,\"title\":\"Content\",\"description\":\"Content to analyze\"},\"scenario_id\":{\"type\":\"string\",\"title\":\"Scenario Id\",\"description\":\"Scenario ID\",\"default\":\"manual\"},\"scenario_prompt\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Scenario Prompt\",\"description\":\"Additional prompt from scenario\"},\"project_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Project Id\",\"description\":\"Project ID for project-specific detectors\"},\"event_data\":{\"anyOf\":[{\"additionalProperties\":true,\"type\":\"object\"},{\"type\":\"null\"}],\"title\":\"Event Data\",\"description\":\"Additional event context\"}},\"additionalProperties\":false,\"type\":\"object\",\"required\":[\"detector_name\",\"content\"],\"title\":\"DetectionRequest\",\"description\":\"Schema for manual detection request.\"},\"DetectionResponse\":{\"properties\":{\"label\":{\"$ref\":\"#/components/schemas/LLMLabel\"},\"confidence\":{\"anyOf\":[{\"type\":\"number\"},{\"type\":\"null\"}],\"title\":\"Confidence\"},\"reason\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Reason\"},\"latency_ms\":{\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"null\"}],\"title\":\"Latency Ms\"},\"detector_name\":{\"type\":\"string\",\"title\":\"Detector Name\"},\"detector_model\":{\"type\":\"string\",\"title\":\"Detector Model\"},\"error\":{\"type\":\"boolean\",\"title\":\"Error\",\"default\":false},\"error_message\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Error Message\"}},\"type\":\"object\",\"required\":[\"label\",\"detector_name\",\"detector_model\"],\"title\":\"DetectionResponse\",\"description\":\"Schema for detection response.\"},\"EventContextItem\":{\"properties\":{\"event_id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Event Id\"},\"step\":{\"type\":\"integer\",\"title\":\"Step\"},\"event_type\":{\"$ref\":\"#/components/schemas/EventType\"},\"role\":{\"$ref\":\"#/components/schemas/Role\"},\"message\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Message\"},\"tool_calls\":{\"anyOf\":[{\"items\":{\"additionalProperties\":true,\"type\":\"object\"},\"type\":\"array\"},{\"type\":\"null\"}],\"title\":\"Tool Calls\"},\"tool_results\":{\"anyOf\":[{\"items\":{\"additionalProperties\":true,\"type\":\"object\"},\"type\":\"array\"},{\"type\":\"null\"}],\"title\":\"Tool Results\"},\"final_decision\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/Decision\"},{\"type\":\"null\"}]},\"timestamp\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Timestamp\"}},\"type\":\"object\",\"required\":[\"event_id\",\"step\",\"event_type\",\"role\",\"timestamp\"],\"title\":\"EventContextItem\",\"description\":\"Event summary for context display\"},\"EventType\":{\"type\":\"string\",\"enum\":[\"user_message\",\"assistant_message\",\"tool_call\",\"tool_result\",\"system_message\"],\"title\":\"EventType\",\"description\":\"Types of agent events\"},\"FunctionCall\":{\"properties\":{\"name\":{\"type\":\"string\",\"title\":\"Name\"},\"arguments\":{\"type\":\"string\",\"title\":\"Arguments\"}},\"type\":\"object\",\"required\":[\"name\",\"arguments\"],\"title\":\"FunctionCall\",\"description\":\"Function call in tool_calls\"},\"FunctionDefinition\":{\"properties\":{\"name\":{\"type\":\"string\",\"title\":\"Name\"},\"description\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Description\"},\"parameters\":{\"anyOf\":[{\"additionalProperties\":true,\"type\":\"object\"},{\"type\":\"null\"}],\"title\":\"Parameters\"}},\"type\":\"object\",\"required\":[\"name\"],\"title\":\"FunctionDefinition\",\"description\":\"Function definition in tools\"},\"HTTPValidationError\":{\"properties\":{\"detail\":{\"items\":{\"$ref\":\"#/components/schemas/ValidationError\"},\"type\":\"array\",\"title\":\"Detail\"}},\"type\":\"object\",\"title\":\"HTTPValidationError\"},\"IncidentListResponse\":{\"properties\":{\"items\":{\"items\":{\"$ref\":\"#/components/schemas/IncidentResponse\"},\"type\":\"array\",\"title\":\"Items\"},\"total\":{\"type\":\"integer\",\"title\":\"Total\"},\"page\":{\"type\":\"integer\",\"title\":\"Page\"},\"page_size\":{\"type\":\"integer\",\"title\":\"Page Size\"},\"pages\":{\"type\":\"integer\",\"title\":\"Pages\"}},\"type\":\"object\",\"required\":[\"items\",\"total\",\"page\",\"page_size\",\"pages\"],\"title\":\"IncidentListResponse\",\"description\":\"Paginated list of incidents\"},\"IncidentMatchOriginalResponse\":{\"properties\":{\"incident_id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Incident Id\"},\"match_id\":{\"type\":\"integer\",\"title\":\"Match Id\"},\"original_value\":{\"type\":\"string\",\"title\":\"Original Value\"}},\"type\":\"object\",\"required\":[\"incident_id\",\"match_id\",\"original_value\"],\"title\":\"IncidentMatchOriginalResponse\"},\"IncidentResponse\":{\"properties\":{\"session_id\":{\"type\":\"string\",\"title\":\"Session Id\"},\"step\":{\"type\":\"integer\",\"title\":\"Step\"},\"agent_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Agent Id\"},\"project_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Project Id\"},\"scenario_id\":{\"type\":\"string\",\"title\":\"Scenario Id\"},\"rule_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Rule Id\"},\"decision\":{\"$ref\":\"#/components/schemas/Decision\"},\"severity\":{\"$ref\":\"#/components/schemas/Severity\"},\"summary\":{\"type\":\"string\",\"title\":\"Summary\"},\"details\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Details\"},\"matched_content\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Matched Content\"},\"decision_source\":{\"type\":\"string\",\"title\":\"Decision Source\",\"default\":\"static\"},\"review_status\":{\"$ref\":\"#/components/schemas/ReviewStatus\",\"default\":\"no_review\"},\"review_reasons\":{\"items\":{\"type\":\"string\"},\"type\":\"array\",\"title\":\"Review Reasons\"},\"extra\":{\"additionalProperties\":true,\"type\":\"object\",\"title\":\"Extra\"},\"id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Id\"},\"event_id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Event Id\"},\"event_type\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/EventType\"},{\"type\":\"null\"}]},\"role\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/Role\"},{\"type\":\"null\"}]},\"status\":{\"$ref\":\"#/components/schemas/IncidentStatus\",\"default\":\"open\"},\"created_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Created At\"},\"updated_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Updated At\"},\"resolved_at\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"date-time\"},{\"type\":\"null\"}],\"title\":\"Resolved At\"},\"resolved_by\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Resolved By\"},\"resolution_notes\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Resolution Notes\"},\"false_alert_type\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"False Alert Type\"}},\"type\":\"object\",\"required\":[\"session_id\",\"step\",\"scenario_id\",\"decision\",\"severity\",\"summary\",\"id\",\"event_id\",\"created_at\",\"updated_at\"],\"title\":\"IncidentResponse\",\"description\":\"Response schema for incident\"},\"IncidentReviewDetailResponse\":{\"properties\":{\"id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Id\"},\"event_id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Event Id\"},\"session_id\":{\"type\":\"string\",\"title\":\"Session Id\"},\"step\":{\"type\":\"integer\",\"title\":\"Step\"},\"review_status\":{\"$ref\":\"#/components/schemas/ReviewStatus\"},\"human_label\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Human Label\"},\"review_notes\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Review Notes\"},\"reviewed_by\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Reviewed By\"},\"reviewed_at\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"date-time\"},{\"type\":\"null\"}],\"title\":\"Reviewed At\"},\"review_reasons\":{\"items\":{\"type\":\"string\"},\"type\":\"array\",\"title\":\"Review Reasons\",\"default\":[]},\"scenario_id\":{\"type\":\"string\",\"title\":\"Scenario Id\"},\"rule_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Rule Id\"},\"decision\":{\"$ref\":\"#/components/schemas/Decision\"},\"decision_source\":{\"type\":\"string\",\"title\":\"Decision Source\"},\"severity\":{\"$ref\":\"#/components/schemas/Severity\"},\"summary\":{\"type\":\"string\",\"title\":\"Summary\"},\"static_rule_info\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/StaticRuleInfo\"},{\"type\":\"null\"}]},\"llm_results\":{\"items\":{\"$ref\":\"#/components/schemas/LLMResultInfo\"},\"type\":\"array\",\"title\":\"Llm Results\",\"default\":[]},\"trigger_event\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/EventContextItem\"},{\"type\":\"null\"}]},\"created_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Created At\"},\"updated_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Updated At\"},\"false_alert_type\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"False Alert Type\"}},\"type\":\"object\",\"required\":[\"id\",\"event_id\",\"session_id\",\"step\",\"review_status\",\"scenario_id\",\"decision\",\"decision_source\",\"severity\",\"summary\",\"created_at\",\"updated_at\"],\"title\":\"IncidentReviewDetailResponse\",\"description\":\"Detailed incident review response\"},\"IncidentReviewRequest\":{\"properties\":{\"human_label\":{\"type\":\"string\",\"title\":\"Human Label\"},\"notes\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Notes\"}},\"type\":\"object\",\"required\":[\"human_label\"],\"title\":\"IncidentReviewRequest\",\"description\":\"Request schema for submitting incident review\"},\"IncidentSeverityStats\":{\"properties\":{\"critical\":{\"type\":\"integer\",\"title\":\"Critical\",\"default\":0},\"high\":{\"type\":\"integer\",\"title\":\"High\",\"default\":0},\"medium\":{\"type\":\"integer\",\"title\":\"Medium\",\"default\":0},\"low\":{\"type\":\"integer\",\"title\":\"Low\",\"default\":0}},\"type\":\"object\",\"title\":\"IncidentSeverityStats\",\"description\":\"Incident counts by severity\"},\"IncidentStatsResponse\":{\"properties\":{\"total\":{\"type\":\"integer\",\"title\":\"Total\"},\"severity\":{\"$ref\":\"#/components/schemas/IncidentSeverityStats\"}},\"type\":\"object\",\"required\":[\"total\",\"severity\"],\"title\":\"IncidentStatsResponse\",\"description\":\"Incident stats for current filters\"},\"IncidentStatus\":{\"type\":\"string\",\"enum\":[\"open\",\"investigating\",\"resolved\",\"false_positive\",\"canceled\",\"closed\"],\"title\":\"IncidentStatus\",\"description\":\"Incident status\"},\"IncidentUpdate\":{\"properties\":{\"status\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/IncidentStatus\"},{\"type\":\"null\"}]},\"resolution_notes\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Resolution Notes\"},\"resolved_by\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Resolved By\"},\"false_alert_type\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"False Alert Type\"}},\"type\":\"object\",\"title\":\"IncidentUpdate\",\"description\":\"Schema for updating incident\"},\"LLMDetectorConfigCreate\":{\"properties\":{\"name\":{\"type\":\"string\",\"maxLength\":255,\"minLength\":1,\"title\":\"Name\",\"description\":\"Unique detector name\"},\"description\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Description\",\"description\":\"Detector description\"},\"provider\":{\"$ref\":\"#/components/schemas/LLMProvider\",\"description\":\"LLM provider\"},\"model\":{\"type\":\"string\",\"maxLength\":255,\"minLength\":1,\"title\":\"Model\",\"description\":\"Model name\"},\"base_url\":{\"anyOf\":[{\"type\":\"string\",\"maxLength\":500},{\"type\":\"null\"}],\"title\":\"Base Url\",\"description\":\"Custom base URL for provider\"},\"system_prompt\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"System Prompt\",\"description\":\"System prompt for detector\"},\"temperature\":{\"type\":\"number\",\"maximum\":2.0,\"minimum\":0.0,\"title\":\"Temperature\",\"description\":\"Model temperature\",\"default\":0.0},\"max_tokens\":{\"type\":\"integer\",\"maximum\":8192.0,\"minimum\":1.0,\"title\":\"Max Tokens\",\"description\":\"Max tokens for response\",\"default\":500},\"timeout_ms\":{\"type\":\"integer\",\"maximum\":300000.0,\"minimum\":1000.0,\"title\":\"Timeout Ms\",\"description\":\"Request timeout in ms\",\"default\":30000},\"model_params\":{\"anyOf\":[{\"additionalProperties\":true,\"type\":\"object\"},{\"type\":\"null\"}],\"title\":\"Model Params\",\"description\":\"Additional model parameters\"},\"project_id\":{\"anyOf\":[{\"type\":\"string\",\"maxLength\":255},{\"type\":\"null\"}],\"title\":\"Project Id\",\"description\":\"Project ID (null = global)\"},\"enabled\":{\"type\":\"boolean\",\"title\":\"Enabled\",\"description\":\"Is detector enabled\",\"default\":true},\"priority\":{\"type\":\"integer\",\"minimum\":0.0,\"title\":\"Priority\",\"description\":\"Detector priority (higher = more important)\",\"default\":0},\"api_key\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Api Key\",\"description\":\"API key (will be encrypted)\"}},\"additionalProperties\":false,\"type\":\"object\",\"required\":[\"name\",\"provider\",\"model\"],\"title\":\"LLMDetectorConfigCreate\",\"description\":\"Schema for creating detector config.\"},\"LLMDetectorConfigList\":{\"properties\":{\"items\":{\"items\":{\"$ref\":\"#/components/schemas/LLMDetectorConfigResponse\"},\"type\":\"array\",\"title\":\"Items\"},\"total\":{\"type\":\"integer\",\"title\":\"Total\"},\"page\":{\"type\":\"integer\",\"title\":\"Page\",\"default\":1},\"page_size\":{\"type\":\"integer\",\"title\":\"Page Size\",\"default\":20}},\"type\":\"object\",\"required\":[\"items\",\"total\"],\"title\":\"LLMDetectorConfigList\",\"description\":\"Schema for list of detector configs.\"},\"LLMDetectorConfigResponse\":{\"properties\":{\"name\":{\"type\":\"string\",\"maxLength\":255,\"minLength\":1,\"title\":\"Name\",\"description\":\"Unique detector name\"},\"description\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Description\",\"description\":\"Detector description\"},\"provider\":{\"$ref\":\"#/components/schemas/LLMProvider\",\"description\":\"LLM provider\"},\"model\":{\"type\":\"string\",\"maxLength\":255,\"minLength\":1,\"title\":\"Model\",\"description\":\"Model name\"},\"base_url\":{\"anyOf\":[{\"type\":\"string\",\"maxLength\":500},{\"type\":\"null\"}],\"title\":\"Base Url\",\"description\":\"Custom base URL for provider\"},\"system_prompt\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"System Prompt\",\"description\":\"System prompt for detector\"},\"temperature\":{\"type\":\"number\",\"maximum\":2.0,\"minimum\":0.0,\"title\":\"Temperature\",\"description\":\"Model temperature\",\"default\":0.0},\"max_tokens\":{\"type\":\"integer\",\"maximum\":8192.0,\"minimum\":1.0,\"title\":\"Max Tokens\",\"description\":\"Max tokens for response\",\"default\":500},\"timeout_ms\":{\"type\":\"integer\",\"maximum\":300000.0,\"minimum\":1000.0,\"title\":\"Timeout Ms\",\"description\":\"Request timeout in ms\",\"default\":30000},\"model_params\":{\"anyOf\":[{\"additionalProperties\":true,\"type\":\"object\"},{\"type\":\"null\"}],\"title\":\"Model Params\",\"description\":\"Additional model parameters\"},\"project_id\":{\"anyOf\":[{\"type\":\"string\",\"maxLength\":255},{\"type\":\"null\"}],\"title\":\"Project Id\",\"description\":\"Project ID (null = global)\"},\"enabled\":{\"type\":\"boolean\",\"title\":\"Enabled\",\"description\":\"Is detector enabled\",\"default\":true},\"priority\":{\"type\":\"integer\",\"minimum\":0.0,\"title\":\"Priority\",\"description\":\"Detector priority (higher = more important)\",\"default\":0},\"id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Id\"},\"has_api_key\":{\"type\":\"boolean\",\"title\":\"Has Api Key\",\"description\":\"Whether API key is configured\"},\"created_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Created At\"},\"updated_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Updated At\"}},\"additionalProperties\":false,\"type\":\"object\",\"required\":[\"name\",\"provider\",\"model\",\"id\",\"has_api_key\",\"created_at\",\"updated_at\"],\"title\":\"LLMDetectorConfigResponse\",\"description\":\"Schema for detector config response.\"},\"LLMDetectorConfigUpdate\":{\"properties\":{\"name\":{\"anyOf\":[{\"type\":\"string\",\"maxLength\":255,\"minLength\":1},{\"type\":\"null\"}],\"title\":\"Name\"},\"description\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Description\"},\"provider\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/LLMProvider\"},{\"type\":\"null\"}]},\"model\":{\"anyOf\":[{\"type\":\"string\",\"maxLength\":255,\"minLength\":1},{\"type\":\"null\"}],\"title\":\"Model\"},\"base_url\":{\"anyOf\":[{\"type\":\"string\",\"maxLength\":500},{\"type\":\"null\"}],\"title\":\"Base Url\"},\"api_key\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Api Key\",\"description\":\"New API key (will be encrypted)\"},\"system_prompt\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"System Prompt\"},\"temperature\":{\"anyOf\":[{\"type\":\"number\",\"maximum\":2.0,\"minimum\":0.0},{\"type\":\"null\"}],\"title\":\"Temperature\"},\"max_tokens\":{\"anyOf\":[{\"type\":\"integer\",\"maximum\":8192.0,\"minimum\":1.0},{\"type\":\"null\"}],\"title\":\"Max Tokens\"},\"timeout_ms\":{\"anyOf\":[{\"type\":\"integer\",\"maximum\":300000.0,\"minimum\":1000.0},{\"type\":\"null\"}],\"title\":\"Timeout Ms\"},\"model_params\":{\"anyOf\":[{\"additionalProperties\":true,\"type\":\"object\"},{\"type\":\"null\"}],\"title\":\"Model Params\"},\"enabled\":{\"anyOf\":[{\"type\":\"boolean\"},{\"type\":\"null\"}],\"title\":\"Enabled\"},\"priority\":{\"anyOf\":[{\"type\":\"integer\",\"minimum\":0.0},{\"type\":\"null\"}],\"title\":\"Priority\"}},\"additionalProperties\":false,\"type\":\"object\",\"title\":\"LLMDetectorConfigUpdate\",\"description\":\"Schema for updating detector config.\"},\"LLMLabel\":{\"type\":\"string\",\"enum\":[\"safe\",\"unsafe\"],\"title\":\"LLMLabel\",\"description\":\"LLM detector result labels\"},\"LLMMessageMode\":{\"type\":\"string\",\"enum\":[\"single\",\"from_user_message\"],\"title\":\"LLMMessageMode\",\"description\":\"Mode for selecting messages to send to LLM detector\"},\"LLMProvider\":{\"type\":\"string\",\"enum\":[\"openai\",\"anthropic\",\"gigachat\",\"yandexgpt\",\"local\",\"azure\"],\"title\":\"LLMProvider\",\"description\":\"Supported LLM providers for detectors\"},\"LLMResultInfo\":{\"properties\":{\"detector_name\":{\"type\":\"string\",\"title\":\"Detector Name\"},\"detector_model\":{\"type\":\"string\",\"title\":\"Detector Model\"},\"detector_provider\":{\"type\":\"string\",\"title\":\"Detector Provider\"},\"label\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Label\"},\"confidence\":{\"anyOf\":[{\"type\":\"number\"},{\"type\":\"null\"}],\"title\":\"Confidence\"},\"reason\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Reason\"},\"error\":{\"type\":\"boolean\",\"title\":\"Error\",\"default\":false},\"error_message\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Error Message\"}},\"type\":\"object\",\"required\":[\"detector_name\",\"detector_model\",\"detector_provider\"],\"title\":\"LLMResultInfo\",\"description\":\"LLM detector result information\"},\"LoginRequest\":{\"properties\":{\"login\":{\"type\":\"string\",\"title\":\"Login\",\"example\":\"operator\"},\"password\":{\"type\":\"string\",\"title\":\"Password\",\"example\":\"222\"}},\"type\":\"object\",\"required\":[\"login\",\"password\"],\"title\":\"LoginRequest\"},\"LoginResponse\":{\"properties\":{\"user\":{\"$ref\":\"#/components/schemas/UserRead\"}},\"type\":\"object\",\"required\":[\"user\"],\"title\":\"LoginResponse\"},\"PolicyRule\":{\"properties\":{\"id\":{\"type\":\"string\",\"title\":\"Id\"},\"enabled\":{\"type\":\"boolean\",\"title\":\"Enabled\",\"default\":true},\"category\":{\"type\":\"string\",\"title\":\"Category\",\"default\":\"general\"},\"pattern\":{\"type\":\"string\",\"title\":\"Pattern\"},\"flags\":{\"type\":\"string\",\"title\":\"Flags\",\"default\":\"\"},\"action\":{\"$ref\":\"#/components/schemas/Decision\",\"default\":\"log_only\"},\"severity\":{\"$ref\":\"#/components/schemas/Severity\",\"default\":\"medium\"},\"message\":{\"type\":\"string\",\"title\":\"Message\",\"default\":\"\"},\"redact_with\":{\"type\":\"string\",\"title\":\"Redact With\",\"default\":\"[REDACTED]\"},\"source_file\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Source File\"}},\"type\":\"object\",\"required\":[\"id\",\"pattern\"],\"title\":\"PolicyRule\",\"description\":\"Policy rule for leak detection\"},\"PolicyRuleCreate\":{\"properties\":{\"id\":{\"type\":\"string\",\"maxLength\":100,\"minLength\":1,\"pattern\":\"^[a-z0-9_]+$\",\"title\":\"Id\"},\"enabled\":{\"type\":\"boolean\",\"title\":\"Enabled\",\"default\":true},\"category\":{\"type\":\"string\",\"maxLength\":50,\"minLength\":1,\"title\":\"Category\"},\"pattern\":{\"type\":\"string\",\"minLength\":1,\"title\":\"Pattern\",\"description\":\"Regex pattern\"},\"flags\":{\"type\":\"string\",\"title\":\"Flags\",\"description\":\"Regex flags (i, m)\",\"default\":\"\"},\"action\":{\"$ref\":\"#/components/schemas/Decision\",\"default\":\"log_only\"},\"severity\":{\"$ref\":\"#/components/schemas/Severity\",\"default\":\"medium\"},\"message\":{\"type\":\"string\",\"title\":\"Message\",\"description\":\"Human-readable message\",\"default\":\"\"},\"redact_with\":{\"type\":\"string\",\"title\":\"Redact With\",\"description\":\"Replacement text for redaction\",\"default\":\"[REDACTED]\"}},\"additionalProperties\":false,\"type\":\"object\",\"required\":[\"id\",\"category\",\"pattern\"],\"title\":\"PolicyRuleCreate\",\"description\":\"Create a new policy rule\"},\"PolicyRuleListResponse\":{\"properties\":{\"items\":{\"items\":{\"$ref\":\"#/components/schemas/PolicyRule\"},\"type\":\"array\",\"title\":\"Items\"},\"total\":{\"type\":\"integer\",\"title\":\"Total\"},\"by_category\":{\"additionalProperties\":{\"type\":\"integer\"},\"type\":\"object\",\"title\":\"By Category\"}},\"type\":\"object\",\"required\":[\"items\",\"total\"],\"title\":\"PolicyRuleListResponse\",\"description\":\"List of policy rules\"},\"PolicyRuleUpdate\":{\"properties\":{\"enabled\":{\"anyOf\":[{\"type\":\"boolean\"},{\"type\":\"null\"}],\"title\":\"Enabled\"},\"action\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/Decision\"},{\"type\":\"null\"}]},\"severity\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/Severity\"},{\"type\":\"null\"}]},\"pattern\":{\"anyOf\":[{\"type\":\"string\",\"minLength\":1},{\"type\":\"null\"}],\"title\":\"Pattern\",\"description\":\"Regex pattern\"},\"flags\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Flags\",\"description\":\"Regex flags (i, m)\"},\"message\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Message\",\"description\":\"Human-readable message\"},\"redact_with\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Redact With\",\"description\":\"Replacement text for redaction\"}},\"additionalProperties\":false,\"type\":\"object\",\"title\":\"PolicyRuleUpdate\",\"description\":\"Fields that can be updated on a policy rule\"},\"ProcessingResult\":{\"properties\":{\"event_id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Event Id\"},\"session_id\":{\"type\":\"string\",\"title\":\"Session Id\"},\"processed_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Processed At\"},\"total_time_ms\":{\"type\":\"integer\",\"title\":\"Total Time Ms\",\"default\":0},\"final_decision\":{\"$ref\":\"#/components/schemas/Decision\",\"default\":\"allow\"},\"scenario_decisions\":{\"items\":{\"$ref\":\"#/components/schemas/ScenarioDecision\"},\"type\":\"array\",\"title\":\"Scenario Decisions\"},\"original_content\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Original Content\"},\"modified_content\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Modified Content\"},\"max_severity\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/Severity\"},{\"type\":\"null\"}]},\"all_matched_rules\":{\"items\":{\"type\":\"string\"},\"type\":\"array\",\"title\":\"All Matched Rules\"},\"has_violations\":{\"type\":\"boolean\",\"title\":\"Has Violations\",\"default\":false},\"incident_created\":{\"type\":\"boolean\",\"title\":\"Incident Created\",\"default\":false},\"incident_id\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"uuid\"},{\"type\":\"null\"}],\"title\":\"Incident Id\"},\"engine_conflicts\":{\"anyOf\":[{\"items\":{\"additionalProperties\":true,\"type\":\"object\"},\"type\":\"array\"},{\"type\":\"null\"}],\"title\":\"Engine Conflicts\"}},\"type\":\"object\",\"required\":[\"event_id\",\"session_id\"],\"title\":\"ProcessingResult\",\"description\":\"Combined result of all scenarios for an event\"},\"ReplayEventResult\":{\"properties\":{\"event_id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Event Id\"},\"step\":{\"type\":\"integer\",\"title\":\"Step\"},\"event_type\":{\"type\":\"string\",\"title\":\"Event Type\"},\"decision\":{\"$ref\":\"#/components/schemas/Decision\"},\"has_new_incidents\":{\"type\":\"boolean\",\"title\":\"Has New Incidents\"},\"incidents_created\":{\"type\":\"integer\",\"title\":\"Incidents Created\"},\"matched_rules\":{\"items\":{\"type\":\"string\"},\"type\":\"array\",\"title\":\"Matched Rules\"},\"max_severity\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/Severity\"},{\"type\":\"null\"}]}},\"type\":\"object\",\"required\":[\"event_id\",\"step\",\"event_type\",\"decision\",\"has_new_incidents\",\"incidents_created\"],\"title\":\"ReplayEventResult\",\"description\":\"Result of replaying a single event\"},\"ReplayListItem\":{\"properties\":{\"id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Id\"},\"replay_type\":{\"$ref\":\"#/components/schemas/ReplayType\"},\"batch_id\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"uuid\"},{\"type\":\"null\"}],\"title\":\"Batch Id\"},\"start_time\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"date-time\"},{\"type\":\"null\"}],\"title\":\"Start Time\"},\"end_time\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"date-time\"},{\"type\":\"null\"}],\"title\":\"End Time\"},\"batches_count\":{\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"null\"}],\"title\":\"Batches Count\"},\"events_count\":{\"type\":\"integer\",\"title\":\"Events Count\"},\"notes\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Notes\"},\"created_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Created At\"}},\"type\":\"object\",\"required\":[\"id\",\"replay_type\",\"events_count\",\"created_at\"],\"title\":\"ReplayListItem\",\"description\":\"Item in replay list\"},\"ReplayListResponse\":{\"properties\":{\"items\":{\"items\":{\"$ref\":\"#/components/schemas/ReplayListItem\"},\"type\":\"array\",\"title\":\"Items\"},\"total\":{\"type\":\"integer\",\"title\":\"Total\"}},\"type\":\"object\",\"required\":[\"items\",\"total\"],\"title\":\"ReplayListResponse\",\"description\":\"Response for replay list\"},\"ReplayMetrics\":{\"properties\":{\"replay_id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Replay Id\"},\"incidents_count\":{\"type\":\"integer\",\"title\":\"Incidents Count\",\"description\":\"Total number of incidents\"},\"review_required_count\":{\"type\":\"integer\",\"title\":\"Review Required Count\",\"description\":\"Incidents requiring review\"},\"conflicts_count\":{\"type\":\"integer\",\"title\":\"Conflicts Count\",\"description\":\"Incidents where human label conflicts with decision\"},\"precision_on_reviewed\":{\"anyOf\":[{\"type\":\"number\",\"maximum\":1.0,\"minimum\":0.0},{\"type\":\"null\"}],\"title\":\"Precision On Reviewed\",\"description\":\"Precision = TP / (TP + FP) on reviewed incidents. None if no reviewed incidents.\"}},\"type\":\"object\",\"required\":[\"replay_id\",\"incidents_count\",\"review_required_count\",\"conflicts_count\"],\"title\":\"ReplayMetrics\",\"description\":\"Metrics for a replay session\"},\"ReplayRequest\":{\"properties\":{\"notes\":{\"anyOf\":[{\"type\":\"string\",\"maxLength\":2000},{\"type\":\"null\"}],\"title\":\"Notes\",\"description\":\"Notes about this replay\"}},\"type\":\"object\",\"title\":\"ReplayRequest\",\"description\":\"Request to replay a batch\"},\"ReplayResult\":{\"properties\":{\"replay_id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Replay Id\"},\"batch_id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Batch Id\"},\"session_id\":{\"type\":\"string\",\"title\":\"Session Id\"},\"events_replayed\":{\"type\":\"integer\",\"title\":\"Events Replayed\"},\"total_incidents_created\":{\"type\":\"integer\",\"title\":\"Total Incidents Created\"},\"event_results\":{\"items\":{\"$ref\":\"#/components/schemas/ReplayEventResult\"},\"type\":\"array\",\"title\":\"Event Results\"},\"replay_started_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Replay Started At\"},\"replay_finished_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Replay Finished At\"},\"total_time_ms\":{\"type\":\"integer\",\"title\":\"Total Time Ms\"}},\"type\":\"object\",\"required\":[\"replay_id\",\"batch_id\",\"session_id\",\"events_replayed\",\"total_incidents_created\",\"event_results\",\"replay_started_at\",\"replay_finished_at\",\"total_time_ms\"],\"title\":\"ReplayResult\",\"description\":\"Result of batch replay\"},\"ReplayType\":{\"type\":\"string\",\"enum\":[\"batch\",\"time_interval\"],\"title\":\"ReplayType\",\"description\":\"Types of replay sessions\"},\"ReviewListItem\":{\"properties\":{\"id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Id\"},\"session_id\":{\"type\":\"string\",\"title\":\"Session Id\"},\"step\":{\"type\":\"integer\",\"title\":\"Step\"},\"scenario_id\":{\"type\":\"string\",\"title\":\"Scenario Id\"},\"rule_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Rule Id\"},\"decision\":{\"$ref\":\"#/components/schemas/Decision\"},\"decision_source\":{\"type\":\"string\",\"title\":\"Decision Source\"},\"severity\":{\"$ref\":\"#/components/schemas/Severity\"},\"summary\":{\"type\":\"string\",\"title\":\"Summary\"},\"review_status\":{\"$ref\":\"#/components/schemas/ReviewStatus\"},\"review_reasons\":{\"items\":{\"type\":\"string\"},\"type\":\"array\",\"title\":\"Review Reasons\",\"default\":[]},\"human_label\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Human Label\"},\"reviewed_at\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"date-time\"},{\"type\":\"null\"}],\"title\":\"Reviewed At\"},\"event_type\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/EventType\"},{\"type\":\"null\"}]},\"created_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Created At\"}},\"type\":\"object\",\"required\":[\"id\",\"session_id\",\"step\",\"scenario_id\",\"decision\",\"decision_source\",\"severity\",\"summary\",\"review_status\",\"created_at\"],\"title\":\"ReviewListItem\",\"description\":\"Item in the review list\"},\"ReviewListResponse\":{\"properties\":{\"pending_review\":{\"items\":{\"$ref\":\"#/components/schemas/ReviewListItem\"},\"type\":\"array\",\"title\":\"Pending Review\"},\"already_reviewed\":{\"items\":{\"$ref\":\"#/components/schemas/ReviewListItem\"},\"type\":\"array\",\"title\":\"Already Reviewed\"},\"total_pending\":{\"type\":\"integer\",\"title\":\"Total Pending\"},\"total_reviewed\":{\"type\":\"integer\",\"title\":\"Total Reviewed\"}},\"type\":\"object\",\"required\":[\"pending_review\",\"already_reviewed\",\"total_pending\",\"total_reviewed\"],\"title\":\"ReviewListResponse\",\"description\":\"Response for reviews list with categorization\"},\"ReviewStatus\":{\"type\":\"string\",\"enum\":[\"review_required\",\"already_reviewed\",\"no_review\"],\"title\":\"ReviewStatus\",\"description\":\"Incident review status\"},\"Role\":{\"type\":\"string\",\"enum\":[\"user\",\"assistant\",\"tool\",\"system\"],\"title\":\"Role\",\"description\":\"Roles in conversation\"},\"ScenarioBaseConfigResponse\":{\"properties\":{\"scenario_id\":{\"type\":\"string\",\"title\":\"Scenario Id\"},\"priority\":{\"type\":\"integer\",\"title\":\"Priority\"},\"supported_event_types\":{\"items\":{\"$ref\":\"#/components/schemas/EventType\"},\"type\":\"array\",\"title\":\"Supported Event Types\"},\"enabled\":{\"type\":\"boolean\",\"title\":\"Enabled\"}},\"type\":\"object\",\"required\":[\"scenario_id\",\"priority\",\"supported_event_types\",\"enabled\"],\"title\":\"ScenarioBaseConfigResponse\",\"description\":\"Response with scenario base configuration\"},\"ScenarioBaseConfigUpdate\":{\"properties\":{\"priority\":{\"anyOf\":[{\"type\":\"integer\",\"maximum\":1000.0,\"minimum\":1.0},{\"type\":\"null\"}],\"title\":\"Priority\",\"description\":\"Scenario priority (lower = higher priority)\"},\"supported_event_types\":{\"anyOf\":[{\"items\":{\"$ref\":\"#/components/schemas/EventType\"},\"type\":\"array\"},{\"type\":\"null\"}],\"title\":\"Supported Event Types\",\"description\":\"Event types this scenario should process\"}},\"additionalProperties\":false,\"type\":\"object\",\"title\":\"ScenarioBaseConfigUpdate\",\"description\":\"Update base configuration for a scenario\"},\"ScenarioDecision\":{\"properties\":{\"scenario_id\":{\"type\":\"string\",\"title\":\"Scenario Id\"},\"decision\":{\"$ref\":\"#/components/schemas/Decision\"},\"matched_rules\":{\"items\":{\"type\":\"string\"},\"type\":\"array\",\"title\":\"Matched Rules\"},\"severity\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/Severity\"},{\"type\":\"null\"}]},\"message\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Message\"},\"extra\":{\"additionalProperties\":true,\"type\":\"object\",\"title\":\"Extra\"},\"execution_time_ms\":{\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"null\"}],\"title\":\"Execution Time Ms\"},\"review_status\":{\"$ref\":\"#/components/schemas/ReviewStatus\",\"default\":\"no_review\"},\"review_reasons\":{\"items\":{\"type\":\"string\"},\"type\":\"array\",\"title\":\"Review Reasons\"}},\"type\":\"object\",\"required\":[\"scenario_id\",\"decision\"],\"title\":\"ScenarioDecision\",\"description\":\"Result of a single scenario execution\"},\"ScenarioDetail\":{\"properties\":{\"id\":{\"type\":\"string\",\"title\":\"Id\"},\"name\":{\"type\":\"string\",\"title\":\"Name\"},\"enabled\":{\"type\":\"boolean\",\"title\":\"Enabled\"},\"priority\":{\"type\":\"integer\",\"title\":\"Priority\"},\"supported_event_types\":{\"items\":{\"$ref\":\"#/components/schemas/EventType\"},\"type\":\"array\",\"title\":\"Supported Event Types\",\"default\":[]},\"static_rules_enabled\":{\"type\":\"boolean\",\"title\":\"Static Rules Enabled\",\"default\":true},\"llm_detector_enabled\":{\"type\":\"boolean\",\"title\":\"Llm Detector Enabled\",\"default\":true},\"config\":{\"additionalProperties\":true,\"type\":\"object\",\"title\":\"Config\"},\"policies_count\":{\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"null\"}],\"title\":\"Policies Count\"}},\"type\":\"object\",\"required\":[\"id\",\"name\",\"enabled\",\"priority\"],\"title\":\"ScenarioDetail\",\"description\":\"Full scenario details including config\"},\"ScenarioLLMConfigResponse\":{\"properties\":{\"scenario_id\":{\"type\":\"string\",\"title\":\"Scenario Id\"},\"llm_detector_enabled\":{\"type\":\"boolean\",\"title\":\"Llm Detector Enabled\"},\"llm_detector_name\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Llm Detector Name\"},\"llm_detector_threshold\":{\"type\":\"number\",\"title\":\"Llm Detector Threshold\",\"default\":0.8},\"llm_message_mode\":{\"type\":\"string\",\"title\":\"Llm Message Mode\",\"default\":\"single\"},\"llm_prompt\":{\"type\":\"string\",\"title\":\"Llm Prompt\",\"default\":\"\"}},\"type\":\"object\",\"required\":[\"scenario_id\",\"llm_detector_enabled\"],\"title\":\"ScenarioLLMConfigResponse\",\"description\":\"Response with scenario LLM configuration\"},\"ScenarioLLMConfigUpdate\":{\"properties\":{\"llm_detector_name\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Llm Detector Name\",\"description\":\"Name of the LLM detector to use (from llm_detector_configs)\"},\"llm_detector_threshold\":{\"anyOf\":[{\"type\":\"number\",\"maximum\":1.0,\"minimum\":0.0},{\"type\":\"null\"}],\"title\":\"Llm Detector Threshold\",\"description\":\"Threshold for considering detection as unsafe (0.0-1.0)\"},\"llm_message_mode\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/LLMMessageMode\"},{\"type\":\"null\"}],\"description\":\"Mode for selecting messages: 'single' or 'from_user_message'\"},\"llm_prompt\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Llm Prompt\",\"description\":\"Scenario-specific prompt for LLM detector\"}},\"additionalProperties\":false,\"type\":\"object\",\"title\":\"ScenarioLLMConfigUpdate\",\"description\":\"Update LLM detector configuration for a scenario\"},\"ScenarioListResponse\":{\"properties\":{\"items\":{\"items\":{\"$ref\":\"#/components/schemas/ScenarioSummary\"},\"type\":\"array\",\"title\":\"Items\"},\"total\":{\"type\":\"integer\",\"title\":\"Total\"}},\"type\":\"object\",\"required\":[\"items\",\"total\"],\"title\":\"ScenarioListResponse\",\"description\":\"List of scenarios\"},\"ScenarioSummary\":{\"properties\":{\"id\":{\"type\":\"string\",\"title\":\"Id\"},\"name\":{\"type\":\"string\",\"title\":\"Name\"},\"enabled\":{\"type\":\"boolean\",\"title\":\"Enabled\"},\"priority\":{\"type\":\"integer\",\"title\":\"Priority\"},\"supported_event_types\":{\"items\":{\"$ref\":\"#/components/schemas/EventType\"},\"type\":\"array\",\"title\":\"Supported Event Types\",\"default\":[]},\"static_rules_enabled\":{\"type\":\"boolean\",\"title\":\"Static Rules Enabled\",\"default\":true},\"llm_detector_enabled\":{\"type\":\"boolean\",\"title\":\"Llm Detector Enabled\",\"default\":true}},\"type\":\"object\",\"required\":[\"id\",\"name\",\"enabled\",\"priority\"],\"title\":\"ScenarioSummary\",\"description\":\"Summary of a scenario for list view\"},\"ScenarioToggleRequest\":{\"properties\":{\"enabled\":{\"type\":\"boolean\",\"title\":\"Enabled\"}},\"additionalProperties\":false,\"type\":\"object\",\"required\":[\"enabled\"],\"title\":\"ScenarioToggleRequest\",\"description\":\"Request to toggle static rules or LLM detector\"},\"ScenarioToggleResponse\":{\"properties\":{\"scenario_id\":{\"type\":\"string\",\"title\":\"Scenario Id\"},\"static_rules_enabled\":{\"type\":\"boolean\",\"title\":\"Static Rules Enabled\"},\"llm_detector_enabled\":{\"type\":\"boolean\",\"title\":\"Llm Detector Enabled\"},\"enabled\":{\"type\":\"boolean\",\"title\":\"Enabled\"}},\"type\":\"object\",\"required\":[\"scenario_id\",\"static_rules_enabled\",\"llm_detector_enabled\",\"enabled\"],\"title\":\"ScenarioToggleResponse\",\"description\":\"Response after toggling a scenario component\"},\"SessionContext\":{\"properties\":{\"session_id\":{\"type\":\"string\",\"title\":\"Session Id\"},\"agent_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Agent Id\"},\"project_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Project Id\"},\"total_steps\":{\"type\":\"integer\",\"title\":\"Total Steps\",\"default\":0},\"total_tool_calls\":{\"type\":\"integer\",\"title\":\"Total Tool Calls\",\"default\":0},\"tool_call_counts\":{\"additionalProperties\":{\"type\":\"integer\"},\"type\":\"object\",\"title\":\"Tool Call Counts\"},\"recent_tool_calls\":{\"items\":{\"additionalProperties\":true,\"type\":\"object\"},\"type\":\"array\",\"title\":\"Recent Tool Calls\"},\"recent_tool_results\":{\"items\":{\"additionalProperties\":true,\"type\":\"object\"},\"type\":\"array\",\"title\":\"Recent Tool Results\"},\"started_at\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"date-time\"},{\"type\":\"null\"}],\"title\":\"Started At\"},\"duration_seconds\":{\"type\":\"integer\",\"title\":\"Duration Seconds\",\"default\":0},\"is_blocked\":{\"type\":\"boolean\",\"title\":\"Is Blocked\",\"default\":false},\"block_reason\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Block Reason\"}},\"type\":\"object\",\"required\":[\"session_id\"],\"title\":\"SessionContext\",\"description\":\"Session context for scenario execution.\\nContains recent events and counters.\"},\"SessionDetail\":{\"properties\":{\"session_id\":{\"type\":\"string\",\"title\":\"Session Id\"},\"agent_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Agent Id\"},\"project_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Project Id\"},\"steps_count\":{\"type\":\"integer\",\"title\":\"Steps Count\",\"default\":0},\"incidents_count\":{\"type\":\"integer\",\"title\":\"Incidents Count\",\"default\":0},\"has_blocks\":{\"type\":\"boolean\",\"title\":\"Has Blocks\",\"default\":false},\"started_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Started At\"},\"last_activity_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Last Activity At\"},\"events\":{\"items\":{\"$ref\":\"#/components/schemas/SessionEventBrief\"},\"type\":\"array\",\"title\":\"Events\"}},\"type\":\"object\",\"required\":[\"session_id\",\"started_at\",\"last_activity_at\"],\"title\":\"SessionDetail\",\"description\":\"Detailed session info with events\"},\"SessionEventBrief\":{\"properties\":{\"step\":{\"type\":\"integer\",\"title\":\"Step\"},\"timestamp\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Timestamp\"},\"event_type\":{\"type\":\"string\",\"title\":\"Event Type\"},\"role\":{\"type\":\"string\",\"title\":\"Role\"},\"content_preview\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Content Preview\"},\"tool_names\":{\"items\":{\"type\":\"string\"},\"type\":\"array\",\"title\":\"Tool Names\",\"default\":[]},\"final_decision\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/Decision\"},{\"type\":\"null\"}]},\"has_incidents\":{\"type\":\"boolean\",\"title\":\"Has Incidents\",\"default\":false}},\"type\":\"object\",\"required\":[\"step\",\"timestamp\",\"event_type\",\"role\"],\"title\":\"SessionEventBrief\",\"description\":\"Brief event info for session view\"},\"SessionSummary\":{\"properties\":{\"session_id\":{\"type\":\"string\",\"title\":\"Session Id\"},\"agent_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Agent Id\"},\"project_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Project Id\"},\"steps_count\":{\"type\":\"integer\",\"title\":\"Steps Count\",\"default\":0},\"incidents_count\":{\"type\":\"integer\",\"title\":\"Incidents Count\",\"default\":0},\"has_blocks\":{\"type\":\"boolean\",\"title\":\"Has Blocks\",\"default\":false},\"started_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Started At\"},\"last_activity_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Last Activity At\"}},\"type\":\"object\",\"required\":[\"session_id\",\"started_at\",\"last_activity_at\"],\"title\":\"SessionSummary\",\"description\":\"Summary of agent session\"},\"Severity\":{\"type\":\"string\",\"enum\":[\"low\",\"medium\",\"high\",\"critical\"],\"title\":\"Severity\",\"description\":\"Incident severity levels\"},\"SimulateEventInput\":{\"properties\":{\"event_type\":{\"$ref\":\"#/components/schema +[2026-01-25T16:10:38.574Z] [INFO] s/EventType\"},\"role\":{\"$ref\":\"#/components/schemas/Role\",\"default\":\"user\"},\"message\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Message\"},\"tool_calls\":{\"items\":{\"$ref\":\"#/components/schemas/src__schemas__event__ToolCall\"},\"type\":\"array\",\"title\":\"Tool Calls\"},\"tool_results\":{\"items\":{\"$ref\":\"#/components/schemas/ToolResult\"},\"type\":\"array\",\"title\":\"Tool Results\"},\"meta\":{\"anyOf\":[{\"additionalProperties\":true,\"type\":\"object\"},{\"type\":\"null\"}],\"title\":\"Meta\"}},\"additionalProperties\":false,\"type\":\"object\",\"required\":[\"event_type\"],\"title\":\"SimulateEventInput\",\"description\":\"Single event in simulation batch\"},\"SimulateEventResult\":{\"properties\":{\"step\":{\"type\":\"integer\",\"title\":\"Step\"},\"event_type\":{\"$ref\":\"#/components/schemas/EventType\"},\"event_id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Event Id\"},\"content_preview\":{\"type\":\"string\",\"title\":\"Content Preview\"},\"decision\":{\"$ref\":\"#/components/schemas/Decision\"},\"incidents_created\":{\"type\":\"integer\",\"title\":\"Incidents Created\",\"default\":0},\"matched_rules\":{\"items\":{\"type\":\"string\"},\"type\":\"array\",\"title\":\"Matched Rules\"},\"block_reason\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Block Reason\"}},\"type\":\"object\",\"required\":[\"step\",\"event_type\",\"event_id\",\"content_preview\",\"decision\"],\"title\":\"SimulateEventResult\",\"description\":\"Result for single event in simulation\"},\"SimulateRequest\":{\"properties\":{\"session_id\":{\"type\":\"string\",\"maxLength\":255,\"minLength\":1,\"title\":\"Session Id\"},\"agent_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Agent Id\"},\"project_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Project Id\"},\"user_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"User Id\"},\"model\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Model\"},\"events\":{\"items\":{\"$ref\":\"#/components/schemas/SimulateEventInput\"},\"type\":\"array\",\"minItems\":1,\"title\":\"Events\"}},\"additionalProperties\":false,\"type\":\"object\",\"required\":[\"session_id\",\"events\"],\"title\":\"SimulateRequest\",\"description\":\"Request for batch simulation\"},\"SimulateResponse\":{\"properties\":{\"batch_id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Batch Id\"},\"session_id\":{\"type\":\"string\",\"title\":\"Session Id\"},\"total_events\":{\"type\":\"integer\",\"title\":\"Total Events\"},\"processed_count\":{\"type\":\"integer\",\"title\":\"Processed Count\",\"default\":0},\"skipped_count\":{\"type\":\"integer\",\"title\":\"Skipped Count\",\"default\":0},\"blocked_at_step\":{\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"null\"}],\"title\":\"Blocked At Step\"},\"incidents_count\":{\"type\":\"integer\",\"title\":\"Incidents Count\",\"default\":0},\"results\":{\"items\":{\"$ref\":\"#/components/schemas/SimulateEventResult\"},\"type\":\"array\",\"title\":\"Results\"},\"report\":{\"type\":\"string\",\"title\":\"Report\"}},\"type\":\"object\",\"required\":[\"batch_id\",\"session_id\",\"total_events\",\"results\",\"report\"],\"title\":\"SimulateResponse\",\"description\":\"Response from batch simulation\"},\"StaticRuleInfo\":{\"properties\":{\"scenario_id\":{\"type\":\"string\",\"title\":\"Scenario Id\"},\"rule_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Rule Id\"},\"matched_content\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Matched Content\"},\"details\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Details\"}},\"type\":\"object\",\"required\":[\"scenario_id\"],\"title\":\"StaticRuleInfo\",\"description\":\"Static rule trigger information\"},\"TimeIntervalReplayRequest\":{\"properties\":{\"start_time\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"date-time\"},{\"type\":\"null\"}],\"title\":\"Start Time\",\"description\":\"Start of interval. Default: 24 hours ago\"},\"end_time\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"date-time\"},{\"type\":\"null\"}],\"title\":\"End Time\",\"description\":\"End of interval. Default: now\"},\"notes\":{\"anyOf\":[{\"type\":\"string\",\"maxLength\":2000},{\"type\":\"null\"}],\"title\":\"Notes\",\"description\":\"Notes about this replay\"}},\"type\":\"object\",\"title\":\"TimeIntervalReplayRequest\",\"description\":\"Request to replay events in a time interval\"},\"TimeIntervalReplayResult\":{\"properties\":{\"replay_id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Replay Id\"},\"replay_type\":{\"$ref\":\"#/components/schemas/ReplayType\",\"default\":\"time_interval\"},\"start_time\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Start Time\"},\"end_time\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"End Time\"},\"total_batches\":{\"type\":\"integer\",\"title\":\"Total Batches\"},\"total_events_replayed\":{\"type\":\"integer\",\"title\":\"Total Events Replayed\"},\"total_incidents_created\":{\"type\":\"integer\",\"title\":\"Total Incidents Created\"},\"batch_results\":{\"items\":{\"$ref\":\"#/components/schemas/BatchReplayResult\"},\"type\":\"array\",\"title\":\"Batch Results\"},\"replay_started_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Replay Started At\"},\"replay_finished_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Replay Finished At\"},\"total_time_ms\":{\"type\":\"integer\",\"title\":\"Total Time Ms\"}},\"type\":\"object\",\"required\":[\"replay_id\",\"start_time\",\"end_time\",\"total_batches\",\"total_events_replayed\",\"total_incidents_created\",\"batch_results\",\"replay_started_at\",\"replay_finished_at\",\"total_time_ms\"],\"title\":\"TimeIntervalReplayResult\",\"description\":\"Result of time interval replay\"},\"ToolCheckRequest\":{\"properties\":{\"session_id\":{\"type\":\"string\",\"title\":\"Session Id\"},\"step\":{\"type\":\"integer\",\"minimum\":0.0,\"title\":\"Step\"},\"agent_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Agent Id\"},\"project_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Project Id\"},\"tool_name\":{\"type\":\"string\",\"title\":\"Tool Name\"},\"tool_args\":{\"additionalProperties\":true,\"type\":\"object\",\"title\":\"Tool Args\"},\"conversation_history\":{\"anyOf\":[{\"items\":{\"additionalProperties\":true,\"type\":\"object\"},\"type\":\"array\"},{\"type\":\"null\"}],\"title\":\"Conversation History\"},\"meta\":{\"additionalProperties\":true,\"type\":\"object\",\"title\":\"Meta\"}},\"type\":\"object\",\"required\":[\"session_id\",\"step\",\"tool_name\"],\"title\":\"ToolCheckRequest\",\"description\":\"Request to check tool call before execution\"},\"ToolCheckResponse\":{\"properties\":{\"decision\":{\"$ref\":\"#/components/schemas/Decision\"},\"matched_rules\":{\"items\":{\"type\":\"string\"},\"type\":\"array\",\"title\":\"Matched Rules\"},\"severity\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/Severity\"},{\"type\":\"null\"}]},\"message\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Message\"},\"modified_args\":{\"anyOf\":[{\"additionalProperties\":true,\"type\":\"object\"},{\"type\":\"null\"}],\"title\":\"Modified Args\"},\"execution_result\":{\"anyOf\":[{},{\"type\":\"null\"}],\"title\":\"Execution Result\"},\"execution_error\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Execution Error\"}},\"type\":\"object\",\"required\":[\"decision\"],\"title\":\"ToolCheckResponse\",\"description\":\"Response for tool check request\"},\"ToolDefinition\":{\"properties\":{\"type\":{\"type\":\"string\",\"const\":\"function\",\"title\":\"Type\",\"default\":\"function\"},\"function\":{\"$ref\":\"#/components/schemas/FunctionDefinition\"}},\"type\":\"object\",\"required\":[\"function\"],\"title\":\"ToolDefinition\",\"description\":\"Tool definition\"},\"ToolPolicyConfigResponse\":{\"properties\":{\"scenario_id\":{\"type\":\"string\",\"title\":\"Scenario Id\",\"default\":\"tool_policy\"},\"allowed_tools\":{\"items\":{\"type\":\"string\"},\"type\":\"array\",\"title\":\"Allowed Tools\",\"description\":\"Allowlist of tools (empty = all allowed)\"},\"blocked_tools\":{\"items\":{\"type\":\"string\"},\"type\":\"array\",\"title\":\"Blocked Tools\",\"description\":\"Blocklist of tools\"},\"max_steps\":{\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"null\"}],\"title\":\"Max Steps\",\"description\":\"Maximum steps limit\"},\"max_tool_calls\":{\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"null\"}],\"title\":\"Max Tool Calls\",\"description\":\"Maximum tool calls limit\"},\"max_consecutive_errors\":{\"type\":\"integer\",\"title\":\"Max Consecutive Errors\",\"description\":\"Max consecutive errors before blocking\",\"default\":3},\"argument_rules\":{\"additionalProperties\":{\"items\":{\"$ref\":\"#/components/schemas/ArgumentRule\"},\"type\":\"array\"},\"type\":\"object\",\"title\":\"Argument Rules\",\"description\":\"Argument validation rules per tool\"}},\"type\":\"object\",\"title\":\"ToolPolicyConfigResponse\",\"description\":\"Response with tool_policy specific configuration\"},\"ToolPolicyConfigUpdate\":{\"properties\":{\"allowed_tools\":{\"anyOf\":[{\"items\":{\"type\":\"string\"},\"type\":\"array\"},{\"type\":\"null\"}],\"title\":\"Allowed Tools\",\"description\":\"Allowlist of tools\"},\"blocked_tools\":{\"anyOf\":[{\"items\":{\"type\":\"string\"},\"type\":\"array\"},{\"type\":\"null\"}],\"title\":\"Blocked Tools\",\"description\":\"Blocklist of tools\"},\"max_steps\":{\"anyOf\":[{\"type\":\"integer\",\"maximum\":1000.0,\"minimum\":1.0},{\"type\":\"null\"}],\"title\":\"Max Steps\",\"description\":\"Maximum steps limit\"},\"max_tool_calls\":{\"anyOf\":[{\"type\":\"integer\",\"maximum\":1000.0,\"minimum\":1.0},{\"type\":\"null\"}],\"title\":\"Max Tool Calls\",\"description\":\"Maximum tool calls limit\"},\"max_consecutive_errors\":{\"anyOf\":[{\"type\":\"integer\",\"maximum\":100.0,\"minimum\":1.0},{\"type\":\"null\"}],\"title\":\"Max Consecutive Errors\",\"description\":\"Max consecutive errors\"}},\"additionalProperties\":false,\"type\":\"object\",\"title\":\"ToolPolicyConfigUpdate\",\"description\":\"Update tool_policy specific configuration\"},\"ToolResult\":{\"properties\":{\"tool_call_id\":{\"type\":\"string\",\"title\":\"Tool Call Id\"},\"tool_name\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Tool Name\"},\"tool_args\":{\"anyOf\":[{\"additionalProperties\":true,\"type\":\"object\"},{\"type\":\"null\"}],\"title\":\"Tool Args\"},\"success\":{\"type\":\"boolean\",\"title\":\"Success\",\"default\":true},\"output\":{\"anyOf\":[{},{\"type\":\"null\"}],\"title\":\"Output\"},\"error\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Error\"},\"execution_time_ms\":{\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"null\"}],\"title\":\"Execution Time Ms\"}},\"type\":\"object\",\"required\":[\"tool_call_id\"],\"title\":\"ToolResult\",\"description\":\"Tool execution result\"},\"ToolResultReport\":{\"properties\":{\"session_id\":{\"type\":\"string\",\"title\":\"Session Id\"},\"step\":{\"type\":\"integer\",\"minimum\":0.0,\"title\":\"Step\"},\"agent_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Agent Id\"},\"tool_call_id\":{\"type\":\"string\",\"title\":\"Tool Call Id\"},\"tool_name\":{\"type\":\"string\",\"title\":\"Tool Name\"},\"tool_args\":{\"additionalProperties\":true,\"type\":\"object\",\"title\":\"Tool Args\"},\"result\":{\"title\":\"Result\"},\"success\":{\"type\":\"boolean\",\"title\":\"Success\",\"default\":true},\"error\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Error\"},\"execution_time_ms\":{\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"null\"}],\"title\":\"Execution Time Ms\"}},\"type\":\"object\",\"required\":[\"session_id\",\"step\",\"tool_call_id\",\"tool_name\"],\"title\":\"ToolResultReport\",\"description\":\"Report of tool execution result\"},\"UserRead\":{\"properties\":{\"login\":{\"type\":\"string\",\"title\":\"Login\"},\"role\":{\"type\":\"string\",\"title\":\"Role\"},\"permissions\":{\"items\":{\"type\":\"string\"},\"type\":\"array\",\"title\":\"Permissions\"},\"id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Id\"},\"created_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Created At\"},\"updated_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Updated At\"}},\"type\":\"object\",\"required\":[\"login\",\"role\",\"id\",\"created_at\",\"updated_at\"],\"title\":\"UserRead\"},\"ValidationError\":{\"properties\":{\"loc\":{\"items\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"integer\"}]},\"type\":\"array\",\"title\":\"Location\"},\"msg\":{\"type\":\"string\",\"title\":\"Message\"},\"type\":{\"type\":\"string\",\"title\":\"Error Type\"}},\"type\":\"object\",\"required\":[\"loc\",\"msg\",\"type\"],\"title\":\"ValidationError\"},\"src__schemas__event__ToolCall\":{\"properties\":{\"id\":{\"type\":\"string\",\"title\":\"Id\"},\"name\":{\"type\":\"string\",\"title\":\"Name\"},\"arguments\":{\"additionalProperties\":true,\"type\":\"object\",\"title\":\"Arguments\"},\"server\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Server\"}},\"type\":\"object\",\"required\":[\"name\"],\"title\":\"ToolCall\",\"description\":\"Tool call structure\"},\"src__schemas__openai__ToolCall\":{\"properties\":{\"id\":{\"type\":\"string\",\"title\":\"Id\"},\"type\":{\"type\":\"string\",\"const\":\"function\",\"title\":\"Type\",\"default\":\"function\"},\"function\":{\"$ref\":\"#/components/schemas/FunctionCall\"}},\"type\":\"object\",\"required\":[\"id\",\"function\"],\"title\":\"ToolCall\",\"description\":\"Tool call from assistant\"}}}}","stderr":"","interrupted":false,"isImage":false}} +[2026-01-25T16:10:41.098Z] [INFO] { + "type": "assistant", + "message": { + "model": "claude-opus-4-5-20251101", + "id": "msg_01GjNsBgQiciM4ExDBFmCZkv", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "Let me read the key components mentioned in the issue and the openapi.json to find the batch actions endpoint." + } + ], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 0, + "cache_creation_input_tokens": 2248, + "cache_read_input_tokens": 26877, + "cache_creation": { + "ephemeral_5m_input_tokens": 2248, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 3, + "service_tier": "standard" + }, + "context_management": null + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "5e1ca879-b1cf-4a75-b378-a8f7787d9915" +} +[2026-01-25T16:10:41.695Z] [INFO] { + "type": "assistant", + "message": { + "model": "claude-opus-4-5-20251101", + "id": "msg_01GjNsBgQiciM4ExDBFmCZkv", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "tool_use", + "id": "toolu_01KEY4F5eE1wEY2fJFe5KBct", + "name": "Read", + "input": { + "file_path": "/tmp/gh-issue-solver-1769357403129/components/AlertList/ModalAlertDetails.vue" + } + } + ], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 0, + "cache_creation_input_tokens": 2248, + "cache_read_input_tokens": 26877, + "cache_creation": { + "ephemeral_5m_input_tokens": 2248, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 3, + "service_tier": "standard" + }, + "context_management": null + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "b891f3d0-e54d-403f-b8b5-fcaafcae460c" +} +[2026-01-25T16:10:42.224Z] [INFO] { + "type": "assistant", + "message": { + "model": "claude-opus-4-5-20251101", + "id": "msg_01GjNsBgQiciM4ExDBFmCZkv", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "tool_use", + "id": "toolu_016z5GPc3uTjWbSJdqyZghkj", + "name": "Read", + "input": { + "file_path": "/tmp/gh-issue-solver-1769357403129/components/TraceTree/TraceTree.vue" + } + } + ], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 0, + "cache_creation_input_tokens": 2248, + "cache_read_input_tokens": 26877, + "cache_creation": { + "ephemeral_5m_input_tokens": 2248, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 3, + "service_tier": "standard" + }, + "context_management": null + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "a228cb1c-fe4d-4cab-a222-603c351922b0" +} +[2026-01-25T16:10:42.665Z] [INFO] { + "type": "assistant", + "message": { + "model": "claude-opus-4-5-20251101", + "id": "msg_01GjNsBgQiciM4ExDBFmCZkv", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "tool_use", + "id": "toolu_01YcUjrrC42ZH39E8ECqAy5o", + "name": "Read", + "input": { + "file_path": "/tmp/gh-issue-solver-1769357403129/components/TraceTree/TraceTreeNode.vue" + } + } + ], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 0, + "cache_creation_input_tokens": 2248, + "cache_read_input_tokens": 26877, + "cache_creation": { + "ephemeral_5m_input_tokens": 2248, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 3, + "service_tier": "standard" + }, + "context_management": null + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "657bda72-40c6-4e02-9e73-56d23ea9bbd7" +} +[2026-01-25T16:10:43.092Z] [INFO] { + "type": "assistant", + "message": { + "model": "claude-opus-4-5-20251101", + "id": "msg_01GjNsBgQiciM4ExDBFmCZkv", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "tool_use", + "id": "toolu_01YAzqUWxDkPwTNqXPvSAbKV", + "name": "Read", + "input": { + "file_path": "/tmp/gh-issue-solver-1769357403129/components/DocumentViewer.vue" + } + } + ], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 0, + "cache_creation_input_tokens": 2248, + "cache_read_input_tokens": 26877, + "cache_creation": { + "ephemeral_5m_input_tokens": 2248, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 3, + "service_tier": "standard" + }, + "context_management": null + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "d4297bb8-17eb-416c-aca6-57a62f4c221c" +} +[2026-01-25T16:10:43.136Z] [INFO] { + "type": "user", + "message": { + "role": "user", + "content": [ + { + "tool_use_id": "toolu_01KEY4F5eE1wEY2fJFe5KBct", + "type": "tool_result", + "content": " 1→\n 26→\n 27→\n 35→\n 36→\n 41→\n\n\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n\n" + } + ] + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "4015b2e1-b5da-4e92-858b-a9be4a33a956", + "tool_use_result": { + "type": "text", + "file": { + "filePath": "/tmp/gh-issue-solver-1769357403129/components/AlertList/ModalAlertDetails.vue", + "content": "\n\n\n\n\n", + "numLines": 41, + "startLine": 1, + "totalLines": 41 + } + } +} +[2026-01-25T16:10:43.144Z] [INFO] {"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_016z5GPc3uTjWbSJdqyZghkj","type":"tool_result","content":" 1→\n 176→\n 177→\n 342→\n 343→\n 349→\n 350→\n 635→\n\n\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n\n"}]},"parent_tool_use_id":null,"session_id":"97387dbe-7909-417c-bea8-f62ff0bebdd6","uuid":"a945cdbc-e2f7-4957-8fce-be7704392dc8","tool_use_result":{"type":"text","file":{"filePath":"/tmp/gh-issue-solver-1769357403129/components/TraceTree/TraceTree.vue","content":"\n\n\n\n\n\n\n","numLines":635,"startLine":1,"totalLines":635}}} +[2026-01-25T16:10:43.163Z] [INFO] { + "type": "user", + "message": { + "role": "user", + "content": [ + { + "tool_use_id": "toolu_01YcUjrrC42ZH39E8ECqAy5o", + "type": "tool_result", + "content": " 1→\n 104→\n 105→\n 212→\n 213→\n 424→\n\n\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n\n" + } + ] + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "5a7f5849-f85e-4c03-9469-f5d28993e0f9", + "tool_use_result": { + "type": "text", + "file": { + "filePath": "/tmp/gh-issue-solver-1769357403129/components/TraceTree/TraceTreeNode.vue", + "content": "\n\n\n\n\n", + "numLines": 424, + "startLine": 1, + "totalLines": 424 + } + } +} +[2026-01-25T16:10:43.167Z] [INFO] { + "type": "user", + "message": { + "role": "user", + "content": [ + { + "tool_use_id": "toolu_01YAzqUWxDkPwTNqXPvSAbKV", + "type": "tool_result", + "content": " 1→\n 21→\n 22→\n 97→\n 98→\n\n\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n\n" + } + ] + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "fe594f60-6ff3-43fe-92f2-9793b2b9583e", + "tool_use_result": { + "type": "text", + "file": { + "filePath": "/tmp/gh-issue-solver-1769357403129/components/DocumentViewer.vue", + "content": "\n\n\n\n", + "numLines": 218, + "startLine": 1, + "totalLines": 218 + } + } +} +[2026-01-25T16:10:46.319Z] [INFO] { + "type": "assistant", + "message": { + "model": "claude-opus-4-5-20251101", + "id": "msg_01HhogXkppbhguTC3d3Czz5y", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "Now let me search for batch actions in the openapi.json file to understand the data structure for leak detection." + } + ], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 0, + "cache_creation_input_tokens": 15379, + "cache_read_input_tokens": 29125, + "cache_creation": { + "ephemeral_5m_input_tokens": 15379, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 1, + "service_tier": "standard" + }, + "context_management": null + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "a82358f7-af2a-4454-b65e-5d1e28da7d20" +} +[2026-01-25T16:10:47.734Z] [INFO] { + "type": "assistant", + "message": { + "model": "claude-opus-4-5-20251101", + "id": "msg_01HhogXkppbhguTC3d3Czz5y", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "tool_use", + "id": "toolu_01Lpr2TX7y6eRAA29YrRHjSY", + "name": "Grep", + "input": { + "pattern": "batch", + "path": "/tmp/gh-issue-solver-1769357403129/openapi.json", + "output_mode": "content", + "-i": true + } + } + ], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 0, + "cache_creation_input_tokens": 15379, + "cache_read_input_tokens": 29125, + "cache_creation": { + "ephemeral_5m_input_tokens": 15379, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 1, + "service_tier": "standard" + }, + "context_management": null + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "bff74e5f-1a2e-44c5-a0f0-8f77ea455193" +} +[2026-01-25T16:10:48.496Z] [INFO] { + "type": "assistant", + "message": { + "model": "claude-opus-4-5-20251101", + "id": "msg_01HhogXkppbhguTC3d3Czz5y", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "tool_use", + "id": "toolu_01Lg9stq7kyRJtbQjaFF2bEB", + "name": "Read", + "input": { + "file_path": "/tmp/gh-issue-solver-1769357403129/components/Modal/ModalAnimated.vue" + } + } + ], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 0, + "cache_creation_input_tokens": 15379, + "cache_read_input_tokens": 29125, + "cache_creation": { + "ephemeral_5m_input_tokens": 15379, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 1, + "service_tier": "standard" + }, + "context_management": null + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "ffbbc07c-cea0-4597-aa96-8a5a31649a13" +} +[2026-01-25T16:10:48.588Z] [INFO] { + "type": "user", + "message": { + "role": "user", + "content": [ + { + "tool_use_id": "toolu_01Lg9stq7kyRJtbQjaFF2bEB", + "type": "tool_result", + "content": " 1→\n 23→\n 24→\n 105→\n 106→\n 181→\n\n\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n\n" + } + ] + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "8ae12a32-708b-4699-b828-7dcfbd957b8c", + "tool_use_result": { + "type": "text", + "file": { + "filePath": "/tmp/gh-issue-solver-1769357403129/components/Modal/ModalAnimated.vue", + "content": "\n\n\n\n\n", + "numLines": 181, + "startLine": 1, + "totalLines": 181 + } + } +} +[2026-01-25T16:10:49.109Z] [INFO] { + "type": "user", + "message": { + "role": "user", + "content": [ + { + "tool_use_id": "toolu_01Lpr2TX7y6eRAA29YrRHjSY", + "type": "tool_result", + "content": "1:[Omitted long matching line]" + } + ] + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "668c3bb7-ab3c-493f-9728-5e641b3e13fd", + "tool_use_result": { + "mode": "content", + "numFiles": 0, + "filenames": [], + "content": "1:[Omitted long matching line]", + "numLines": 1 + } +} +[2026-01-25T16:10:51.443Z] [INFO] { + "type": "assistant", + "message": { + "model": "claude-opus-4-5-20251101", + "id": "msg_01Dq47rxpbvQhEkRE4s4TAiM", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "Let me search for the batch actions in the openapi.json more specifically." + } + ], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 1989, + "cache_creation_input_tokens": 248, + "cache_read_input_tokens": 44504, + "cache_creation": { + "ephemeral_5m_input_tokens": 248, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 1, + "service_tier": "standard" + }, + "context_management": null + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "c0286d27-2ecb-40fb-9a3d-fc5199b18ca1" +} +[2026-01-25T16:10:52.190Z] [INFO] { + "type": "assistant", + "message": { + "model": "claude-opus-4-5-20251101", + "id": "msg_01Dq47rxpbvQhEkRE4s4TAiM", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "tool_use", + "id": "toolu_01AuMY76oM1BV1PG6yVrzutJ", + "name": "Bash", + "input": { + "command": "grep -n -i \"batch\" /tmp/gh-issue-solver-1769357403129/openapi.json | head -20", + "description": "Search for batch in openapi" + } + } + ], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 1989, + "cache_creation_input_tokens": 248, + "cache_read_input_tokens": 44504, + "cache_creation": { + "ephemeral_5m_input_tokens": 248, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 1, + "service_tier": "standard" + }, + "context_management": null + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "0ad8ec72-3487-4d73-9a71-69271cf40fca" +} +[2026-01-25T16:10:52.783Z] [INFO] { + "type": "assistant", + "message": { + "model": "claude-opus-4-5-20251101", + "id": "msg_01Dq47rxpbvQhEkRE4s4TAiM", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "tool_use", + "id": "toolu_01MXXiNf4HoGhNRo4Gd1LsVL", + "name": "Bash", + "input": { + "command": "grep -n -i \"leak\" /tmp/gh-issue-solver-1769357403129/openapi.json | head -30", + "description": "Search for leak in openapi" + } + } + ], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 1989, + "cache_creation_input_tokens": 248, + "cache_read_input_tokens": 44504, + "cache_creation": { + "ephemeral_5m_input_tokens": 248, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 1, + "service_tier": "standard" + }, + "context_management": null + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "ac939f8a-9a7e-4b34-9571-e69edaa54ef0" +} +[2026-01-25T16:10:52.903Z] [INFO] {"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01AuMY76oM1BV1PG6yVrzutJ","type":"tool_result","content":"\nOutput too large (115KB). Full output saved to: /home/hive/.claude/projects/-tmp-gh-issue-solver-1769357403129/97387dbe-7909-417c-bea8-f62ff0bebdd6/tool-results/toolu_01AuMY76oM1BV1PG6yVrzutJ.txt\n\nPreview (first 2KB):\n1:{\"openapi\":\"3.1.0\",\"info\":{\"title\":\"Egida Platform\",\"description\":\"\\n## Egida Platform - Agent Security Firewall\\n\\n### API Endpoints\\n\\n**LLM Proxy (OpenAI-compatible):**\\n- `POST /v1/chat/completions` - Chat completions with security checks\\n- `GET /v1/models` - List available models\\n\\n**Management API:**\\n- `POST /api/v1/events` - Process agent events\\n- `POST /api/v1/tools/check` - Check tool call (SDK mode)\\n- `GET /api/v1/sessions` - List sessions\\n- `GET /api/v1/incidents` - List incidents\\n \",\"version\":\"0.1.0\"},\"paths\":{\"/v1/chat/completions\":{\"post\":{\"tags\":[\"Chat Completions\"],\"summary\":\"Chat Completions\",\"description\":\"OpenAI-compatible chat completions endpoint.\\n\\nThis endpoint:\\n1. Receives requests in OpenAI format\\n2. Checks messages against security scenarios (PRE)\\n3. Forwards to LLM provider\\n4. Checks response against scenarios (POST)\\n5. Returns response to client\\n\\nHeaders:\\n- Authorization: API key for LLM provider (not needed for GigaChat if configured)\\n- X-Provider: LLM provider (openai, anthropic, azure, gigachat, local)\\n- X-Session-ID: Session identifier for tracking\\n- X-Agent-ID: Agent identifier\\n- X-Project-ID: Project identifier\\n\\nGigaChat Usage:\\n- Set X-Provider: gigachat\\n- Configure GIGACHAT_CLIENT_ID and GIGACHAT_CLIENT_SECRET in .env\\n- Token is obtained automatically via OAuth2\",\"operationId\":\"chat_completions_v1_chat_completions_post\",\"parameters\":[{\"name\":\"authorization\",\"in\":\"header\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Authorization\"}},{\"name\":\"X-API-Key\",\"in\":\"header\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"X-Api-Key\"}},{\"name\":\"X-Provider\",\"in\":\"header\",\"required\":false,\"schema\":{\"type\":\"string\",\"default\":\"gigachat\",\"title\":\"X-Provider\"}},{\"name\":\"X-Session-ID\",\"in\":\"header\",\"required\":false,\"schema\":{\"type\":\"string\",\"default\":\"swagger-test\",\"title\":\"X-Session-Id\"}},{\"name\":\"X-Agent-ID\",\"in\":\"header\",\"required\":false,\"schema\":\n...\n","is_error":false}]},"parent_tool_use_id":null,"session_id":"97387dbe-7909-417c-bea8-f62ff0bebdd6","uuid":"a0b0efe3-8e34-4cf9-9981-887a8b2de03c","tool_use_result":{"stdout":"1:{\"openapi\":\"3.1.0\",\"info\":{\"title\":\"Egida Platform\",\"description\":\"\\n## Egida Platform - Agent Security Firewall\\n\\n### API Endpoints\\n\\n**LLM Proxy (OpenAI-compatible):**\\n- `POST /v1/chat/completions` - Chat completions with security checks\\n- `GET /v1/models` - List available models\\n\\n**Management API:**\\n- `POST /api/v1/events` - Process agent events\\n- `POST /api/v1/tools/check` - Check tool call (SDK mode)\\n- `GET /api/v1/sessions` - List sessions\\n- `GET /api/v1/incidents` - List incidents\\n \",\"version\":\"0.1.0\"},\"paths\":{\"/v1/chat/completions\":{\"post\":{\"tags\":[\"Chat Completions\"],\"summary\":\"Chat Completions\",\"description\":\"OpenAI-compatible chat completions endpoint.\\n\\nThis endpoint:\\n1. Receives requests in OpenAI format\\n2. Checks messages against security scenarios (PRE)\\n3. Forwards to LLM provider\\n4. Checks response against scenarios (POST)\\n5. Returns response to client\\n\\nHeaders:\\n- Authorization: API key for LLM provider (not needed for GigaChat if configured)\\n- X-Provider: LLM provider (openai, anthropic, azure, gigachat, local)\\n- X-Session-ID: Session identifier for tracking\\n- X-Agent-ID: Agent identifier\\n- X-Project-ID: Project identifier\\n\\nGigaChat Usage:\\n- Set X-Provider: gigachat\\n- Configure GIGACHAT_CLIENT_ID and GIGACHAT_CLIENT_SECRET in .env\\n- Token is obtained automatically via OAuth2\",\"operationId\":\"chat_completions_v1_chat_completions_post\",\"parameters\":[{\"name\":\"authorization\",\"in\":\"header\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Authorization\"}},{\"name\":\"X-API-Key\",\"in\":\"header\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"X-Api-Key\"}},{\"name\":\"X-Provider\",\"in\":\"header\",\"required\":false,\"schema\":{\"type\":\"string\",\"default\":\"gigachat\",\"title\":\"X-Provider\"}},{\"name\":\"X-Session-ID\",\"in\":\"header\",\"required\":false,\"schema\":{\"type\":\"string\",\"default\":\"swagger-test\",\"title\":\"X-Session-Id\"}},{\"name\":\"X-Agent-ID\",\"in\":\"header\",\"required\":false,\"schema\":{\"type\":\"string\",\"default\":\"test-agent\",\"title\":\"X-Agent-Id\"}},{\"name\":\"X-Project-ID\",\"in\":\"header\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"X-Project-Id\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ChatCompletionRequest\"}}}},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/v1/models\":{\"get\":{\"tags\":[\"Chat Completions\"],\"summary\":\"List Models\",\"description\":\"List available models.\\nReturns a simplified list - actual models depend on provider.\",\"operationId\":\"list_models_v1_models_get\",\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{}}}}}}},\"/api/v1/auth/login\":{\"post\":{\"tags\":[\"auth\"],\"summary\":\"Login\",\"operationId\":\"login_api_v1_auth_login_post\",\"requestBody\":{\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/LoginRequest\"}}},\"required\":true},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/LoginResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/health\":{\"get\":{\"tags\":[\"Health\"],\"summary\":\"Health Check\",\"description\":\"Basic health check\",\"operationId\":\"health_check_api_v1_health_get\",\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{}}}}}}},\"/api/v1/ready\":{\"get\":{\"tags\":[\"Health\"],\"summary\":\"Readiness Check\",\"description\":\"Readiness check with dependencies\",\"operationId\":\"readiness_check_api_v1_ready_get\",\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{}}}}}}},\"/api/v1/events\":{\"post\":{\"tags\":[\"Events\"],\"summary\":\"Process Event\",\"description\":\"Process an agent event.\\n\\nThis is the main endpoint for receiving events from agents.\\nEvents are validated, processed through scenarios, and stored.\",\"operationId\":\"process_event_api_v1_events_post\",\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AgentEventCreate\"}}}},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ProcessingResult\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}},\"get\":{\"tags\":[\"Events\"],\"summary\":\"List Events\",\"description\":\"List events with filters\",\"operationId\":\"list_events_api_v1_events_get\",\"parameters\":[{\"name\":\"session_id\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Session Id\"}},{\"name\":\"project_id\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Project Id\"}},{\"name\":\"agent_id\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Agent Id\"}},{\"name\":\"event_type\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/EventType\"},{\"type\":\"null\"}],\"title\":\"Event Type\"}},{\"name\":\"from_time\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"date-time\"},{\"type\":\"null\"}],\"title\":\"From Time\"}},{\"name\":\"to_time\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"date-time\"},{\"type\":\"null\"}],\"title\":\"To Time\"}},{\"name\":\"skip\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"integer\",\"minimum\":0,\"default\":0,\"title\":\"Skip\"}},{\"name\":\"limit\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"integer\",\"maximum\":1000,\"minimum\":1,\"default\":100,\"title\":\"Limit\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/AgentEventResponse\"},\"title\":\"Response List Events Api V1 Events Get\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/events/batch/{batch_id}\":{\"get\":{\"tags\":[\"Events\"],\"summary\":\"List Events By Batch\",\"description\":\"List events for a batch\",\"operationId\":\"list_events_by_batch_api_v1_events_batch__batch_id__get\",\"parameters\":[{\"name\":\"batch_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Batch Id\"}},{\"name\":\"skip\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"integer\",\"minimum\":0,\"default\":0,\"title\":\"Skip\"}},{\"name\":\"limit\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"integer\",\"maximum\":1000,\"minimum\":1,\"default\":1000,\"title\":\"Limit\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/AgentEventResponse\"},\"title\":\"Response List Events By Batch Api V1 Events Batch Batch Id Get\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/events/{event_id}\":{\"get\":{\"tags\":[\"Events\"],\"summary\":\"Get Event\",\"description\":\"Get event by ID\",\"operationId\":\"get_event_api_v1_events__event_id__get\",\"parameters\":[{\"name\":\"event_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Event Id\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AgentEventResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/tools/check\":{\"post\":{\"tags\":[\"Tools\"],\"summary\":\"Check Tool Call\",\"description\":\"Check tool call BEFORE execution (SDK mode).\\n\\nThis endpoint is called by the SDK before executing a tool.\\nIt validates the tool call against policies and returns a decision.\\n\\nIf decision is BLOCK, the tool should NOT be executed.\\nIf decision is MODIFY, use the modified_args for execution.\\nIf decision is ALLOW, proceed with execution.\",\"operationId\":\"check_tool_call_api_v1_tools_check_post\",\"requestBody\":{\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ToolCheckRequest\"}}},\"required\":true},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ToolCheckResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/tools/result\":{\"post\":{\"tags\":[\"Tools\"],\"summary\":\"Report Tool Result\",\"description\":\"Report tool execution result (SDK mode).\\n\\nThis endpoint is called by the SDK after tool execution.\\nIt checks the result for potential leaks and other issues.\",\"operationId\":\"report_tool_result_api_v1_tools_result_post\",\"requestBody\":{\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ToolResultReport\"}}},\"required\":true},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ProcessingResult\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/incidents\":{\"get\":{\"tags\":[\"Incidents\"],\"summary\":\"List Incidents\",\"description\":\"List incidents with filters and pagination\",\"operationId\":\"list_incidents_api_v1_incidents_get\",\"parameters\":[{\"name\":\"project_id\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Project Id\"}},{\"name\":\"agent_id\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Agent Id\"}},{\"name\":\"scenario_id\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Scenario Id\"}},{\"name\":\"rule_id\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Rule Id\"}},{\"name\":\"severity\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/Severity\"},{\"type\":\"null\"}],\"title\":\"Severity\"}},{\"name\":\"status\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/IncidentStatus\"},{\"type\":\"null\"}],\"title\":\"Status\"}},{\"name\":\"from\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"date-time\"},{\"type\":\"null\"}],\"title\":\"From\"}},{\"name\":\"to\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"date-time\"},{\"type\":\"null\"}],\"title\":\"To\"}},{\"name\":\"page\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"integer\",\"minimum\":1,\"default\":1,\"title\":\"Page\"}},{\"name\":\"page_size\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"integer\",\"maximum\":100,\"minimum\":1,\"default\":50,\"title\":\"Page Size\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/IncidentListResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/incidents/stats\":{\"get\":{\"tags\":[\"Incidents\"],\"summary\":\"Get Incident Stats\",\"description\":\"Get incident stats with filters\",\"operationId\":\"get_incident_stats_api_v1_incidents_stats_get\",\"parameters\":[{\"name\":\"project_id\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Project Id\"}},{\"name\":\"agent_id\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Agent Id\"}},{\"name\":\"scenario_id\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Scenario Id\"}},{\"name\":\"rule_id\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Rule Id\"}},{\"name\":\"severity\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/Severity\"},{\"type\":\"null\"}],\"title\":\"Severity\"}},{\"name\":\"status\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/IncidentStatus\"},{\"type\":\"null\"}],\"title\":\"Status\"}},{\"name\":\"from\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"date-time\"},{\"type\":\"null\"}],\"title\":\"From\"}},{\"name\":\"to\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"date-time\"},{\"type\":\"null\"}],\"title\":\"To\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/IncidentStatsResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/incidents/{incident_id}\":{\"get\":{\"tags\":[\"Incidents\"],\"summary\":\"Get Incident\",\"description\":\"Get incident by ID\",\"operationId\":\"get_incident_api_v1_incidents__incident_id__get\",\"parameters\":[{\"name\":\"incident_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Incident Id\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/IncidentResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}},\"patch\":{\"tags\":[\"Incidents\"],\"summary\":\"Update Incident\",\"description\":\"Update incident (status, resolution)\",\"operationId\":\"update_incident_api_v1_incidents__incident_id__patch\",\"parameters\":[{\"name\":\"incident_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Incident Id\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/IncidentUpdate\"}}}},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/IncidentResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/incidents/{incident_id}/batch-events\":{\"get\":{\"tags\":[\"Incidents\"],\"summary\":\"Get Incident Batch Events\",\"description\":\"Get all events for incident's batch\",\"operationId\":\"get_incident_batch_events_api_v1_incidents__incident_id__batch_events_get\",\"parameters\":[{\"name\":\"incident_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Incident Id\"}},{\"name\":\"skip\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"integer\",\"minimum\":0,\"default\":0,\"title\":\"Skip\"}},{\"name\":\"limit\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"integer\",\"maximum\":1000,\"minimum\":1,\"default\":1000,\"title\":\"Limit\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/AgentEventResponse\"},\"title\":\"Response Get Incident Batch Events Api V1 Incidents Incident Id Batch Events Get\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/incidents/{incident_id}/matches/{match_id}\":{\"get\":{\"tags\":[\"Incidents\"],\"summary\":\"Get Incident Match Original\",\"description\":\"Get original match value for incident/match.\",\"operationId\":\"get_incident_match_original_api_v1_incidents__incident_id__matches__match_id__get\",\"parameters\":[{\"name\":\"incident_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Incident Id\"}},{\"name\":\"match_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"integer\",\"title\":\"Match Id\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/IncidentMatchOriginalResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/incidents/session/{session_id}\":{\"get\":{\"tags\":[\"Incidents\"],\"summary\":\"Get Session Incidents\",\"description\":\"Get all incidents for a session\",\"operationId\":\"get_session_incidents_api_v1_incidents_session__session_id__get\",\"parameters\":[{\"name\":\"session_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Session Id\"}},{\"name\":\"skip\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"integer\",\"minimum\":0,\"default\":0,\"title\":\"Skip\"}},{\"name\":\"limit\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"integer\",\"maximum\":1000,\"minimum\":1,\"default\":100,\"title\":\"Limit\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/IncidentResponse\"},\"title\":\"Response Get Session Incidents Api V1 Incidents Session Session Id Get\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/incidents/{incident_id}/review\":{\"post\":{\"tags\":[\"Incidents\"],\"summary\":\"Submit Incident Review\",\"description\":\"Submit a human review for an incident.\\nSets human_label and optionally notes, marks as reviewed.\\n\\nCan only be called for incidents with review_status != NO_REVIEW.\",\"operationId\":\"submit_incident_review_api_v1_incidents__incident_id__review_post\",\"parameters\":[{\"name\":\"incident_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Incident Id\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/IncidentReviewRequest\"}}}},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/IncidentResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}},\"get\":{\"tags\":[\"Incidents\"],\"summary\":\"Get Incident Review Detail\",\"description\":\"Get detailed review information for an incident.\\nIncludes:\\n- Review status and labels\\n- Static rule trigger info\\n- LLM detector results\\n- Trigger event (the event that caused the incident)\",\"operationId\":\"get_incident_review_detail_api_v1_incidents__incident_id__review_get\",\"parameters\":[{\"name\":\"incident_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Incident Id\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/IncidentReviewDetailResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/sessions\":{\"get\":{\"tags\":[\"Sessions\"],\"summary\":\"List Sessions\",\"description\":\"List sessions with basic info\",\"operationId\":\"list_sessions_api_v1_sessions_get\",\"parameters\":[{\"name\":\"project_id\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Project Id\"}},{\"name\":\"agent_id\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Agent Id\"}},{\"name\":\"skip\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"integer\",\"minimum\":0,\"default\":0,\"title\":\"Skip\"}},{\"name\":\"limit\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"integer\",\"maximum\":100,\"minimum\":1,\"default\":50,\"title\":\"Limit\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/SessionSummary\"},\"title\":\"Response List Sessions Api V1 Sessions Get\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/sessions/{session_id}\":{\"get\":{\"tags\":[\"Sessions\"],\"summary\":\"Get Session\",\"description\":\"Get session details with events\",\"operationId\":\"get_session_api_v1_sessions__session_id__get\",\"parameters\":[{\"name\":\"session_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Session Id\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/SessionDetail\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/sessions/{session_id}/context\":{\"get\":{\"tags\":[\"Sessions\"],\"summary\":\"Get Session Context\",\"description\":\"Get session runtime context (from Redis)\",\"operationId\":\"get_session_context_api_v1_sessions__session_id__context_get\",\"parameters\":[{\"name\":\"session_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Session Id\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/SessionContext\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}},\"delete\":{\"tags\":[\"Sessions\"],\"summary\":\"Clear Session Context\",\"description\":\"Clear session context from Redis\",\"operationId\":\"clear_session_context_api_v1_sessions__session_id__context_delete\",\"parameters\":[{\"name\":\"session_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Session Id\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/scenarios\":{\"get\":{\"tags\":[\"Scenarios\"],\"summary\":\"List Scenarios\",\"description\":\"List all available scenarios\",\"operationId\":\"list_scenarios_api_v1_scenarios_get\",\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ScenarioListResponse\"}}}}}}},\"/api/v1/scenarios/leak_detection/policies\":{\"get\":{\"tags\":[\"Scenarios\"],\"summary\":\"List Leak Detection Policies\",\"description\":\"List all policy rules for leak_detection scenario\",\"operationId\":\"list_leak_detection_policies_api_v1_scenarios_leak_detection_policies_get\",\"parameters\":[{\"name\":\"category\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"description\":\"Filter by category: secret, pii\",\"title\":\"Category\"},\"description\":\"Filter by category: secret, pii\"},{\"name\":\"enabled\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"boolean\"},{\"type\":\"null\"}],\"description\":\"Filter by enabled status\",\"title\":\"Enabled\"},\"description\":\"Filter by enabled status\"}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PolicyRuleListResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}},\"post\":{\"tags\":[\"Scenarios\"],\"summary\":\"Create Leak Detection Policy\",\"description\":\"Create a new policy rule for leak_detection scenario.\\n\\nThe rule will be added to the appropriate policy file based on category.\",\"operationId\":\"create_leak_detection_policy_api_v1_scenarios_leak_detection_policies_post\",\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PolicyRuleCreate\"}}}},\"responses\":{\"201\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PolicyRule\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/scenarios/leak_detection/policies/{rule_id}\":{\"get\":{\"tags\":[\"Scenarios\"],\"summary\":\"Get Policy Rule\",\"description\":\"Get single policy rule by ID\",\"operationId\":\"get_policy_rule_api_v1_scenarios_leak_detection_policies__rule_id__get\",\"parameters\":[{\"name\":\"rule_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Rule Id\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PolicyRule\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}},\"patch\":{\"tags\":[\"Scenarios\"],\"summary\":\"Update Policy Rule\",\"description\":\"Update policy rule.\\n\\nEditable fields: enabled, action, severity, pattern, flags, message, redact_with.\\nChanges are persisted to YAML files and scenarios are reloaded.\",\"operationId\":\"update_policy_rule_api_v1_scenarios_leak_detection_policies__rule_id__patch\",\"parameters\":[{\"name\":\"rule_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Rule Id\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PolicyRuleUpdate\"}}}},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PolicyRule\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/scenarios/prompt_injection/policies\":{\"get\":{\"tags\":[\"Scenarios\"],\"summary\":\"List Prompt Injection Policies\",\"description\":\"List all policy rules for prompt_injection scenario\",\"operationId\":\"list_prompt_injection_policies_api_v1_scenarios_prompt_injection_policies_get\",\"parameters\":[{\"name\":\"category\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"description\":\"Filter by category\",\"title\":\"Category\"},\"description\":\"Filter by category\"},{\"name\":\"enabled\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"boolean\"},{\"type\":\"null\"}],\"description\":\"Filter by enabled status\",\"title\":\"Enabled\"},\"description\":\"Filter by enabled status\"}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PolicyRuleListResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}},\"post\":{\"tags\":[\"Scenarios\"],\"summary\":\"Create Prompt Injection Policy\",\"description\":\"Create a new policy rule for prompt_injection scenario.\\n\\nThe rule will be added to injection.yaml policy file.\",\"operationId\":\"create_prompt_injection_policy_api_v1_scenarios_prompt_injection_policies_post\",\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PolicyRuleCreate\"}}}},\"responses\":{\"201\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PolicyRule\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/scenarios/prompt_injection/policies/{rule_id}\":{\"get\":{\"tags\":[\"Scenarios\"],\"summary\":\"Get Prompt Injection Policy Rule\",\"description\":\"Get single prompt_injection policy rule by ID\",\"operationId\":\"get_prompt_injection_policy_rule_api_v1_scenarios_prompt_injection_policies__rule_id__get\",\"parameters\":[{\"name\":\"rule_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Rule Id\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PolicyRule\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}},\"patch\":{\"tags\":[\"Scenarios\"],\"summary\":\"Update Prompt Injection Policy Rule\",\"description\":\"Update prompt_injection policy rule.\\n\\nEditable fields: enabled, action, severity, pattern, flags, message, redact_with.\\nChanges are persisted to YAML files and scenarios are reloaded.\",\"operationId\":\"update_prompt_injection_policy_rule_api_v1_scenarios_prompt_injection_policies__rule_id__patch\",\"parameters\":[{\"name\":\"rule_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Rule Id\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PolicyRuleUpdate\"}}}},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PolicyRule\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/scenarios/tool_policy/tool-config\":{\"get\":{\"tags\":[\"Scenarios\"],\"summary\":\"Get Tool Policy Config\",\"description\":\"Get tool_policy specific configuration.\\n\\nReturns configuration for tool allowlists, blocklists, limits, and argument validation rules.\",\"operationId\":\"get_tool_policy_config_api_v1_scenarios_tool_policy_tool_config_get\",\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ToolPolicyConfigResponse\"}}}}}},\"patch\":{\"tags\":[\"Scenarios\"],\"summary\":\"Update Tool Policy Config\",\"description\":\"Update tool_policy specific configuration.\\n\\nEditable fields:\\n- allowed_tools: List of allowed tool names (empty = all allowed)\\n- blocked_tools: List of blocked tool names\\n- max_steps: Maximum steps limit\\n- max_tool_calls: Maximum tool calls limit\\n- max_consecutive_errors: Max consecutive errors before blocking\",\"operationId\":\"update_tool_policy_config_api_v1_scenarios_tool_policy_tool_config_patch\",\"requestBody\":{\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ToolPolicyConfigUpdate\"}}},\"required\":true},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ToolPolicyConfigResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/scenarios/tool_policy/argument-rules/{tool_name}\":{\"post\":{\"tags\":[\"Scenarios\"],\"summary\":\"Add Argument Rule\",\"description\":\"Add an argument validation rule for a specific tool.\\n\\nRules define regex patterns to validate tool arguments.\\nAction can be 'allow' (pattern must match) or 'block' (pattern triggers block).\",\"operationId\":\"add_argument_rule_api_v1_scenarios_tool_policy_argument_rules__tool_name__post\",\"parameters\":[{\"name\":\"tool_name\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Tool Name\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ArgumentRuleCreate\"}}}},\"responses\":{\"201\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ToolPolicyConfigResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/scenarios/tool_policy/argument-rules/{tool_name}/{rule_index}\":{\"delete\":{\"tags\":[\"Scenarios\"],\"summary\":\"Delete Argument Rule\",\"description\":\"Delete an argument validation rule by its index.\\n\\nRule indices start at 0.\",\"operationId\":\"delete_argument_rule_api_v1_scenarios_tool_policy_argument_rules__tool_name___rule_index__delete\",\"parameters\":[{\"name\":\"tool_name\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Tool Name\"}},{\"name\":\"rule_index\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"integer\",\"title\":\"Rule Index\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ToolPolicyConfigResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}},\"patch\":{\"tags\":[\"Scenarios\"],\"summary\":\"Update Argument Rule\",\"description\":\"Update an existing argument validation rule.\\n\\nEditable fields: field, pattern, action, message.\",\"operationId\":\"update_argument_rule_api_v1_scenarios_tool_policy_argument_rules__tool_name___rule_index__patch\",\"parameters\":[{\"name\":\"tool_name\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Tool Name\"}},{\"name\":\"rule_index\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"integer\",\"title\":\"Rule Index\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ArgumentRuleUpdate\"}}}},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ToolPolicyConfigResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/scenarios/tool_policy/argument-rules/{tool_name}/reorder\":{\"post\":{\"tags\":[\"Scenarios\"],\"summary\":\"Reorder Argument Rules\",\"description\":\"Reorder argument rules for a tool.\\n\\nProvide a list of indices representing the new order.\",\"operationId\":\"reorder_argument_rules_api_v1_scenarios_tool_policy_argument_rules__tool_name__reorder_post\",\"parameters\":[{\"name\":\"tool_name\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Tool Name\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ArgumentRulesReorder\"}}}},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ToolPolicyConfigResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/scenarios/tool_policy/argument-rules/{tool_name}/{rule_index}/move\":{\"post\":{\"tags\":[\"Scenarios\"],\"summary\":\"Move Argument Rule\",\"description\":\"Move an argument rule up or down in the list.\\n\\nDirection must be 'up' or 'down'.\",\"operationId\":\"move_argument_rule_api_v1_scenarios_tool_policy_argument_rules__tool_name___rule_index__move_post\",\"parameters\":[{\"name\":\"tool_name\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Tool Name\"}},{\"name\":\"rule_index\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"integer\",\"title\":\"Rule Index\"}},{\"name\":\"direction\",\"in\":\"query\",\"required\":true,\"schema\":{\"type\":\"string\",\"pattern\":\"^(up|down)$\",\"description\":\"Direction to move: 'up' or 'down'\",\"title\":\"Direction\"},\"description\":\"Direction to move: 'up' or 'down'\"}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ToolPolicyConfigResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/scenarios/{scenario_id}\":{\"get\":{\"tags\":[\"Scenarios\"],\"summary\":\"Get Scenario\",\"description\":\"Get scenario details by ID\",\"operationId\":\"get_scenario_api_v1_scenarios__scenario_id__get\",\"parameters\":[{\"name\":\"scenario_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Scenario Id\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ScenarioDetail\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/scenarios/{scenario_id}/static-rules\":{\"patch\":{\"tags\":[\"Scenarios\"],\"summary\":\"Toggle Static Rules\",\"description\":\"Toggle static rules for a scenario.\\n\\nStatic rules include regex patterns, blocklists, allowlists, limits, etc.\\nChanges are persisted to YAML config files and scenarios are reloaded.\",\"operationId\":\"toggle_static_rules_api_v1_scenarios__scenario_id__static_rules_patch\",\"parameters\":[{\"name\":\"scenario_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Scenario Id\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ScenarioToggleRequest\"}}}},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ScenarioToggleResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/scenarios/{scenario_id}/llm-detector\":{\"patch\":{\"tags\":[\"Scenarios\"],\"summary\":\"Toggle Llm Detector\",\"description\":\"Toggle LLM detector for a scenario.\\n\\nLLM detector uses language models to analyze events for security threats.\\nChanges are persisted to YAML config files and scenarios are reloaded.\",\"operationId\":\"toggle_llm_detector_api_v1_scenarios__scenario_id__llm_detector_patch\",\"parameters\":[{\"name\":\"scenario_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Scenario Id\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ScenarioToggleRequest\"}}}},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ScenarioToggleResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/scenarios/{scenario_id}/llm-config\":{\"get\":{\"tags\":[\"Scenarios\"],\"summary\":\"Get Llm Config\",\"description\":\"Get LLM detector configuration for a scenario.\\n\\nReturns configuration parameters for the LLM detector including:\\n- llm_detector_name: Name of the detector to use\\n- llm_detector_threshold: Confidence threshold (0.0-1.0)\\n- llm_message_mode: Message selection mode (single/from_user_message)\\n- llm_prompt: Scenario-specific prompt\",\"operationId\":\"get_llm_config_api_v1_scenarios__scenario_id__llm_config_get\",\"parameters\":[{\"name\":\"scenario_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Scenario Id\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ScenarioLLMConfigResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}},\"patch\":{\"tags\":[\"Scenarios\"],\"summary\":\"Update Llm Config\",\"description\":\"Update LLM detector configuration for a scenario.\\n\\nEditable fields:\\n- llm_detector_name: Name of the detector to use (from llm_detector_configs)\\n- llm_detector_threshold: Confidence threshold (0.0-1.0)\\n- llm_message_mode: Message selection mode (single/from_user_message)\\n- llm_prompt: Scenario-specific prompt\\n\\nChanges are persisted to YAML config files and scenarios are reloaded.\",\"operationId\":\"update_llm_config_api_v1_scenarios__scenario_id__llm_config_patch\",\"parameters\":[{\"name\":\"scenario_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Scenario Id\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ScenarioLLMConfigUpdate\"}}}},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ScenarioLLMConfigResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/scenarios/{scenario_id}/base-config\":{\"get\":{\"tags\":[\"Scenarios\"],\"summary\":\"Get Base Config\",\"description\":\"Get base configuration for a scenario.\\n\\nReturns base configuration parameters:\\n- priority: Scenario priority (lower = higher priority)\\n- supported_event_types: Event types this scenario processes\",\"operationId\":\"get_base_config_api_v1_scenarios__scenario_id__base_config_get\",\"parameters\":[{\"name\":\"scenario_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Scenario Id\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ScenarioBaseConfigResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}},\"patch\":{\"tags\":[\"Scenarios\"],\"summary\":\"Update Base Config\",\"description\":\"Update base configuration for a scenario.\\n\\nEditable fields:\\n- priority: Scenario priority (lower = higher priority, 1-1000)\\n- supported_event_types: Event types this scenario should process\\n\\nChanges are persisted to YAML config files and scenarios are reloaded.\",\"operationId\":\"update_base_config_api_v1_scenarios__scenario_id__base_config_patch\",\"parameters\":[{\"name\":\"scenario_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Scenario Id\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ScenarioBaseConfigUpdate\"}}}},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ScenarioBaseConfigResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/llm-detectors\":{\"get\":{\"tags\":[\"LLM Detectors\"],\"summary\":\"List Detectors\",\"description\":\"List LLM detector configurations.\\n\\n- **project_id**: Filter by project ID (optional)\\n- **include_global**: Include global detectors when filtering by project\\n- **enabled**: Filter by enabled status\\n- **provider**: Filter by LLM provider\",\"operationId\":\"list_detectors_api_v1_llm_detectors_get\",\"parameters\":[{\"name\":\"project_id\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"description\":\"Filter by project ID\",\"title\":\"Project Id\"},\"description\":\"Filter by project ID\"},{\"name\":\"include_global\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"Include global detectors\",\"default\":true,\"title\":\"Include Global\"},\"description\":\"Include global detectors\"},{\"name\":\"enabled\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"boolean\"},{\"type\":\"null\"}],\"description\":\"Filter by enabled status\",\"title\":\"Enabled\"},\"description\":\"Filter by enabled status\"},{\"name\":\"provider\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/LLMProvider\"},{\"type\":\"null\"}],\"description\":\"Filter by provider\",\"title\":\"Provider\"},\"description\":\"Filter by provider\"},{\"name\":\"page\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"integer\",\"minimum\":1,\"default\":1,\"title\":\"Page\"}},{\"name\":\"page_size\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"integer\",\"maximum\":100,\"minimum\":1,\"default\":20,\"title\":\"Page Size\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/LLMDetectorConfigList\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}},\"post\":{\"tags\":[\"LLM Detectors\"],\"summary\":\"Create Detector\",\"description\":\"Create a new LLM detector configuration.\\n\\nAPI key will be encrypted before storage.\",\"operationId\":\"create_detector_api_v1_llm_detectors_post\",\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/LLMDetectorConfigCreate\"}}}},\"responses\":{\"201\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/LLMDetectorConfigResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/llm-detectors/{detector_id}\":{\"get\":{\"tags\":[\"LLM Detectors\"],\"summary\":\"Get Detector\",\"description\":\"Get LLM detector configuration by ID.\",\"operationId\":\"get_detector_api_v1_llm_detectors__detector_id__get\",\"parameters\":[{\"name\":\"detector_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Detector Id\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/LLMDetectorConfigResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}},\"patch\":{\"tags\":[\"LLM Detectors\"],\"summary\":\"Update Detector\",\"description\":\"Update LLM detector configuration.\\n\\nIf api_key is provided, it will be re-encrypted.\",\"operationId\":\"update_detector_api_v1_llm_detectors__detector_id__patch\",\"parameters\":[{\"name\":\"detector_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Detector Id\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/LLMDetectorConfigUpdate\"}}}},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/LLMDetectorConfigResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}},\"delete\":{\"tags\":[\"LLM Detectors\"],\"summary\":\"Delete Detector\",\"description\":\"Delete LLM detector configuration.\",\"operationId\":\"delete_detector_api_v1_llm_detectors__detector_id__delete\",\"parameters\":[{\"name\":\"detector_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Detector Id\"}}],\"responses\":{\"204\":{\"description\":\"Successful Response\"},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/llm-detectors/by-name/{name}\":{\"get\":{\"tags\":[\"LLM Detectors\"],\"summary\":\"Get Detector By Name\",\"description\":\"Get LLM detector configuration by name.\\n\\nIf project_id is provided, tries project-specific first, then global.\",\"operationId\":\"get_detector_by_name_api_v1_llm_detectors_by_name__name__get\",\"parameters\":[{\"name\":\"name\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Name\"}},{\"name\":\"project_id\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Project Id\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/LLMDetectorConfigResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/llm-detectors/test\":{\"post\":{\"tags\":[\"LLM Detectors\"],\"summary\":\"Test Detection\",\"description\":\"Test LLM detection with specified detector.\\n\\nUseful for testing detector configurations before using in scenarios.\",\"operationId\":\"test_detection_api_v1_llm_detectors_test_post\",\"requestBody\":{\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/DetectionRequest\"}}},\"required\":true},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/DetectionResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/reviews/detectors\":{\"get\":{\"tags\":[\"Reviews\"],\"summary\":\"List Detector Names\",\"description\":\"Get list of distinct detector names available for filtering\",\"operationId\":\"list_detector_names_api_v1_reviews_detectors_get\",\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"items\":{\"type\":\"string\"},\"type\":\"array\",\"title\":\"Response List Detector Names Api V1 Reviews Detectors Get\"}}}}}}},\"/api/v1/reviews\":{\"get\":{\"tags\":[\"Reviews\"],\"summary\":\"List Reviews\",\"description\":\"Get all incidents that have review status.\\nReturns two lists:\\n- pending_review: incidents requiring human review (review_status = REVIEW_REQUIRED)\\n- already_reviewed: incidents that have been reviewed (review_status = ALREADY_REVIEWED)\\n\\nFilters:\\n- label_filter: 'correct' (tp/tn), 'incorrect' (fp/fn), or specific label (tp, tn, fp, fn)\\n- detector_name: filter by LLM detector name\",\"operationId\":\"list_reviews_api_v1_reviews_get\",\"parameters\":[{\"name\":\"pending_limit\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"integer\",\"maximum\":500,\"minimum\":1,\"description\":\"Max pending items\",\"default\":100,\"title\":\"Pending Limit\"},\"description\":\"Max pending items\"},{\"name\":\"reviewed_limit\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"integer\",\"maximum\":500,\"minimum\":1,\"description\":\"Max reviewed items\",\"default\":100,\"title\":\"Reviewed Limit\"},\"description\":\"Max reviewed items\"},{\"name\":\"label_filter\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"description\":\"Filter by label: 'correct' (tp/tn), 'incorrect' (fp/fn), or specific: tp, tn, fp, fn\",\"title\":\"Label Filter\"},\"description\":\"Filter by label: 'correct' (tp/tn), 'incorrect' (fp/fn), or specific: tp, tn, fp, fn\"},{\"name\":\"detector_name\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"description\":\"Filter by detector name\",\"title\":\"Detector Name\"},\"description\":\"Filter by detector name\"}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ReviewListResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/datasets/export\":{\"post\":{\"tags\":[\"Datasets\"],\"summary\":\"Export Dataset\",\"description\":\"Export reviewed incidents as JSONL dataset.\\n\\nFilters:\\n- scenario_id: Filter by scenario\\n- agent_name: Filter by agent name\\n\\nOutput format (JSONL):\\n- message_text: The text that was analyzed\\n- label: Human label (tp, fp, fn, tn)\\n- meta: {llm_label: safe/unsafe, created_at, reviewed_at}\",\"operationId\":\"export_dataset_api_v1_datasets_export_post\",\"requestBody\":{\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/DatasetExportRequest\"}}},\"required\":true},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/replay/time_interval\":{\"post\":{\"tags\":[\"Replay\"],\"summary\":\"Replay Time Interval\",\"description\":\"Replay all events in a time interval through security scenarios.\\n\\nThis will:\\n1. Find all events in the time range\\n2. Extract unique batch_ids\\n3. Process each batch with a COMMON replay_id\\n4. Create new incidents with from_replay: true marker\\n\\nDefault time range: last 24 hours.\",\"operationId\":\"replay_time_interval_api_v1_replay_time_interval_post\",\"requestBody\":{\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TimeIntervalReplayRequest\"}}},\"required\":true},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TimeIntervalReplayResult\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/replay/batch/{batch_id}\":{\"get\":{\"tags\":[\"Replay\"],\"summary\":\"Get Batch Info\",\"description\":\"Get information about an event batch.\\n\\nReturns batch metadata including event count and time range.\",\"operationId\":\"get_batch_info_api_v1_replay_batch__batch_id__get\",\"parameters\":[{\"name\":\"batch_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Batch Id\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BatchInfo\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/replay/{batch_id}\":{\"post\":{\"tags\":[\"Replay\"],\"summary\":\"Replay Batch\",\"description\":\"Replay a batch of events through security scenarios.\\n\\nThis will:\\n1. Get all events in the batch\\n2. Reconstruct session context for each event\\n3. Run all security scenarios\\n4. Create new incidents with from_replay: true marker\\n5. Create a Replay entity with optional notes\\n\\nDoes NOT:\\n- Modify original events\\n- Delete existing incidents\\n- Update Redis session context\\n\\nReturns:\\n ReplayResult with detailed results for each event and replay_id\",\"operationId\":\"replay_batch_api_v1_replay__batch_id__post\",\"parameters\":[{\"name\":\"batch_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Batch Id\"}}],\"requestBody\":{\"content\":{\"application/json\":{\"schema\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/ReplayRequest\"},{\"type\":\"null\"}],\"title\":\"Request\"}}}},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ReplayResult\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/replay/{replay_id}/metrics\":{\"get\":{\"tags\":[\"Replay\"],\"summary\":\"Get Replay Metrics\",\"description\":\"Get metrics for a replay session.\\n\\nReturns:\\n - incidents_count: Total number of incidents\\n - review_required_count: Incidents requiring review\\n - conflicts_count: Incidents where human label conflicts with decision\\n - precision_on_reviewed: TP / (TP + FP) on reviewed incidents\",\"operationId\":\"get_replay_metrics_api_v1_replay__replay_id__metrics_get\",\"parameters\":[{\"name\":\"replay_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Replay Id\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ReplayMetrics\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/replay\":{\"get\":{\"tags\":[\"Replay\"],\"summary\":\"List Replays\",\"description\":\"Get list of all replay sessions.\\n\\nReturns both BATCH and TIME_INTERVAL replays.\",\"operationId\":\"list_replays_api_v1_replay_get\",\"parameters\":[{\"name\":\"skip\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"integer\",\"minimum\":0,\"default\":0,\"title\":\"Skip\"}},{\"name\":\"limit\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"integer\",\"maximum\":200,\"minimum\":1,\"default\":50,\"title\":\"Limit\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ReplayListResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/simulate\":{\"post\":{\"tags\":[\"Simulate\"],\"summary\":\"Simulate Batch\",\"description\":\"Simulate a batch of events through security scenarios.\\n\\nThis endpoint allows static testing of security scenarios\\nwithout making actual LLM calls. Events are processed in order,\\nsaved to database, and incidents are created as usual.\\n\\nUse cases:\\n- Testing scenario configurations\\n- Regression testing with known event sequences\\n- Validating that specific patterns are blocked/allowed\\n\\nArgs:\\n request: Batch of events to simulate\\n\\nReturns:\\n SimulateResponse with results for each event and human-readable report\",\"operationId\":\"simulate_batch_api_v1_simulate_post\",\"requestBody\":{\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/SimulateRequest\"}}},\"required\":true},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/SimulateResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/admin/clear-database\":{\"post\":{\"tags\":[\"Admin\"],\"summary\":\"Clear Database\",\"description\":\"Clear all tables in database except alembic_version.\\nWARNING: This is a destructive operation!\",\"operationId\":\"clear_database_api_v1_admin_clear_database_post\",\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"additionalProperties\":true,\"type\":\"object\",\"title\":\"Response Clear Database Api V1 Admin Clear Database Post\"}}}}}}},\"/api/v1/audit\":{\"get\":{\"tags\":[\"Audit\"],\"summary\":\"List Audit Logs\",\"operationId\":\"list_audit_logs_api_v1_audit_get\",\"parameters\":[{\"name\":\"user_id\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"uuid\"},{\"type\":\"null\"}],\"title\":\"User Id\"}},{\"name\":\"action\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Action\"}},{\"name\":\"from\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"date-time\"},{\"type\":\"null\"}],\"title\":\"From\"}},{\"name\":\"to\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"date-time\"},{\"type\":\"null\"}],\"title\ +[2026-01-25T16:10:52.917Z] [INFO] ":\"To\"}},{\"name\":\"page\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"integer\",\"minimum\":1,\"default\":1,\"title\":\"Page\"}},{\"name\":\"page_size\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"integer\",\"maximum\":200,\"minimum\":1,\"default\":50,\"title\":\"Page Size\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AuditLogListResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}}},\"components\":{\"schemas\":{\"AgentEventCreate\":{\"properties\":{\"session_id\":{\"type\":\"string\",\"title\":\"Session Id\"},\"step\":{\"type\":\"integer\",\"minimum\":0.0,\"title\":\"Step\"},\"event_type\":{\"$ref\":\"#/components/schemas/EventType\"},\"role\":{\"$ref\":\"#/components/schemas/Role\"},\"batch_id\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"uuid\"},{\"type\":\"null\"}],\"title\":\"Batch Id\"},\"project_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Project Id\"},\"agent_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Agent Id\"},\"user_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"User Id\"},\"message\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Message\"},\"tool_calls\":{\"items\":{\"$ref\":\"#/components/schemas/src__schemas__event__ToolCall\"},\"type\":\"array\",\"title\":\"Tool Calls\"},\"tool_results\":{\"items\":{\"$ref\":\"#/components/schemas/ToolResult\"},\"type\":\"array\",\"title\":\"Tool Results\"},\"data_source\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/DataSource\"},{\"type\":\"null\"}]},\"meta\":{\"anyOf\":[{\"additionalProperties\":true,\"type\":\"object\"},{\"type\":\"null\"}],\"title\":\"Meta\"}},\"type\":\"object\",\"required\":[\"session_id\",\"step\",\"event_type\",\"role\"],\"title\":\"AgentEventCreate\",\"description\":\"Schema for creating agent event via API\"},\"AgentEventResponse\":{\"properties\":{\"event_id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Event Id\"},\"session_id\":{\"type\":\"string\",\"title\":\"Session Id\"},\"step\":{\"type\":\"integer\",\"minimum\":0.0,\"title\":\"Step\"},\"timestamp\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Timestamp\"},\"event_type\":{\"$ref\":\"#/components/schemas/EventType\"},\"role\":{\"$ref\":\"#/components/schemas/Role\"},\"batch_id\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"uuid\"},{\"type\":\"null\"}],\"title\":\"Batch Id\"},\"project_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Project Id\"},\"agent_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Agent Id\"},\"user_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"User Id\"},\"model\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Model\"},\"message\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Message\"},\"tool_calls\":{\"items\":{\"$ref\":\"#/components/schemas/src__schemas__event__ToolCall\"},\"type\":\"array\",\"title\":\"Tool Calls\"},\"tool_results\":{\"items\":{\"$ref\":\"#/components/schemas/ToolResult\"},\"type\":\"array\",\"title\":\"Tool Results\"},\"data_source\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/DataSource\"},{\"type\":\"null\"}]},\"data_sources\":{\"items\":{\"$ref\":\"#/components/schemas/DataSource\"},\"type\":\"array\",\"title\":\"Data Sources\"},\"meta\":{\"anyOf\":[{\"additionalProperties\":true,\"type\":\"object\"},{\"type\":\"null\"}],\"title\":\"Meta\"},\"final_decision\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/Decision\"},{\"type\":\"null\"}]},\"incidents_count\":{\"type\":\"integer\",\"title\":\"Incidents Count\",\"default\":0}},\"type\":\"object\",\"required\":[\"session_id\",\"step\",\"event_type\",\"role\"],\"title\":\"AgentEventResponse\",\"description\":\"Response schema with additional fields\",\"example\":{\"agent_id\":\"support_agent\",\"event_type\":\"tool_call\",\"role\":\"assistant\",\"session_id\":\"sess_abc123\",\"step\":1,\"tool_calls\":[{\"arguments\":{\"body\":\"Hello\",\"to\":\"user@example.com\"},\"id\":\"call_1\",\"name\":\"send_email\"}]}},\"ArgumentRule\":{\"properties\":{\"field\":{\"type\":\"string\",\"title\":\"Field\",\"description\":\"Argument field name to validate\"},\"pattern\":{\"type\":\"string\",\"title\":\"Pattern\",\"description\":\"Regex pattern for validation\"},\"action\":{\"$ref\":\"#/components/schemas/ArgumentRuleAction\",\"description\":\"Action when pattern matches (block) or doesn't match (allow)\",\"default\":\"block\"},\"message\":{\"type\":\"string\",\"title\":\"Message\",\"description\":\"Error message when rule triggers\",\"default\":\"\"}},\"type\":\"object\",\"required\":[\"field\",\"pattern\"],\"title\":\"ArgumentRule\",\"description\":\"Single argument validation rule\"},\"ArgumentRuleAction\":{\"type\":\"string\",\"enum\":[\"allow\",\"block\"],\"title\":\"ArgumentRuleAction\",\"description\":\"Action for argument validation rule\"},\"ArgumentRuleCreate\":{\"properties\":{\"field\":{\"type\":\"string\",\"maxLength\":100,\"minLength\":1,\"title\":\"Field\",\"description\":\"Argument field name\"},\"pattern\":{\"type\":\"string\",\"minLength\":1,\"title\":\"Pattern\",\"description\":\"Regex pattern\"},\"action\":{\"$ref\":\"#/components/schemas/ArgumentRuleAction\",\"default\":\"block\"},\"message\":{\"type\":\"string\",\"title\":\"Message\",\"description\":\"Error message\",\"default\":\"\"}},\"additionalProperties\":false,\"type\":\"object\",\"required\":[\"field\",\"pattern\"],\"title\":\"ArgumentRuleCreate\",\"description\":\"Create a new argument validation rule\"},\"ArgumentRuleUpdate\":{\"properties\":{\"field\":{\"anyOf\":[{\"type\":\"string\",\"maxLength\":100,\"minLength\":1},{\"type\":\"null\"}],\"title\":\"Field\",\"description\":\"Argument field name\"},\"pattern\":{\"anyOf\":[{\"type\":\"string\",\"minLength\":1},{\"type\":\"null\"}],\"title\":\"Pattern\",\"description\":\"Regex pattern\"},\"action\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/ArgumentRuleAction\"},{\"type\":\"null\"}],\"description\":\"Action type\"},\"message\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Message\",\"description\":\"Error message\"}},\"additionalProperties\":false,\"type\":\"object\",\"title\":\"ArgumentRuleUpdate\",\"description\":\"Update an existing argument validation rule\"},\"ArgumentRulesReorder\":{\"properties\":{\"rule_indices\":{\"items\":{\"type\":\"integer\"},\"type\":\"array\",\"title\":\"Rule Indices\",\"description\":\"New order of rule indices (0-based)\"}},\"additionalProperties\":false,\"type\":\"object\",\"required\":[\"rule_indices\"],\"title\":\"ArgumentRulesReorder\",\"description\":\"Reorder argument rules for a tool\"},\"AuditLogItem\":{\"properties\":{\"id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Id\"},\"timestamp\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Timestamp\"},\"user_id\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"uuid\"},{\"type\":\"null\"}],\"title\":\"User Id\"},\"action\":{\"type\":\"string\",\"title\":\"Action\"},\"method\":{\"type\":\"string\",\"title\":\"Method\"},\"endpoint\":{\"type\":\"string\",\"title\":\"Endpoint\"},\"status_code\":{\"type\":\"integer\",\"title\":\"Status Code\"},\"detail\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Detail\"},\"client_ip\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Client Ip\"}},\"type\":\"object\",\"required\":[\"id\",\"timestamp\",\"action\",\"method\",\"endpoint\",\"status_code\"],\"title\":\"AuditLogItem\"},\"AuditLogListResponse\":{\"properties\":{\"items\":{\"items\":{\"$ref\":\"#/components/schemas/AuditLogItem\"},\"type\":\"array\",\"title\":\"Items\"},\"total\":{\"type\":\"integer\",\"title\":\"Total\"},\"page\":{\"type\":\"integer\",\"title\":\"Page\"},\"page_size\":{\"type\":\"integer\",\"title\":\"Page Size\"},\"pages\":{\"type\":\"integer\",\"title\":\"Pages\"}},\"type\":\"object\",\"required\":[\"items\",\"total\",\"page\",\"page_size\",\"pages\"],\"title\":\"AuditLogListResponse\"},\"BatchInfo\":{\"properties\":{\"batch_id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Batch Id\"},\"session_id\":{\"type\":\"string\",\"title\":\"Session Id\"},\"events_count\":{\"type\":\"integer\",\"title\":\"Events Count\"},\"first_event_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"First Event At\"},\"last_event_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Last Event At\"},\"has_user_message\":{\"type\":\"boolean\",\"title\":\"Has User Message\"}},\"type\":\"object\",\"required\":[\"batch_id\",\"session_id\",\"events_count\",\"first_event_at\",\"last_event_at\",\"has_user_message\"],\"title\":\"BatchInfo\",\"description\":\"Information about an event batch\"},\"BatchReplayResult\":{\"properties\":{\"batch_id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Batch Id\"},\"session_id\":{\"type\":\"string\",\"title\":\"Session Id\"},\"events_count\":{\"type\":\"integer\",\"title\":\"Events Count\"},\"incidents_created\":{\"type\":\"integer\",\"title\":\"Incidents Created\"},\"event_results\":{\"items\":{\"$ref\":\"#/components/schemas/ReplayEventResult\"},\"type\":\"array\",\"title\":\"Event Results\"}},\"type\":\"object\",\"required\":[\"batch_id\",\"session_id\",\"events_count\",\"incidents_created\",\"event_results\"],\"title\":\"BatchReplayResult\",\"description\":\"Result of replaying a single batch within time interval\"},\"ChatCompletionRequest\":{\"properties\":{\"model\":{\"type\":\"string\",\"title\":\"Model\",\"description\":\"Model ID (GigaChat, GigaChat-Plus, GigaChat-Pro, gpt-4, etc.)\",\"default\":\"GigaChat\"},\"messages\":{\"items\":{\"$ref\":\"#/components/schemas/ChatMessage\"},\"type\":\"array\",\"title\":\"Messages\",\"description\":\"List of messages in conversation\",\"default\":[{\"role\":\"user\",\"content\":\"ĐŸŅ€Đ¸Đ˛ĐĩŅ‚! КаĐē Đ´ĐĩĐģа?\"}]},\"tools\":{\"anyOf\":[{\"items\":{\"$ref\":\"#/components/schemas/ToolDefinition\"},\"type\":\"array\"},{\"type\":\"null\"}],\"title\":\"Tools\"},\"tool_choice\":{\"anyOf\":[{\"type\":\"string\"},{\"additionalProperties\":true,\"type\":\"object\"},{\"type\":\"null\"}],\"title\":\"Tool Choice\"},\"temperature\":{\"anyOf\":[{\"type\":\"number\",\"maximum\":2.0,\"minimum\":0.0},{\"type\":\"null\"}],\"title\":\"Temperature\"},\"top_p\":{\"anyOf\":[{\"type\":\"number\",\"maximum\":1.0,\"minimum\":0.0},{\"type\":\"null\"}],\"title\":\"Top P\",\"default\":1.0},\"n\":{\"anyOf\":[{\"type\":\"integer\",\"maximum\":10.0,\"minimum\":1.0},{\"type\":\"null\"}],\"title\":\"N\",\"default\":1},\"max_tokens\":{\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"null\"}],\"title\":\"Max Tokens\",\"description\":\"Max tokens to generate\"},\"stop\":{\"anyOf\":[{\"type\":\"string\"},{\"items\":{\"type\":\"string\"},\"type\":\"array\"},{\"type\":\"null\"}],\"title\":\"Stop\"},\"presence_penalty\":{\"anyOf\":[{\"type\":\"number\",\"maximum\":2.0,\"minimum\":-2.0},{\"type\":\"null\"}],\"title\":\"Presence Penalty\",\"default\":0},\"frequency_penalty\":{\"anyOf\":[{\"type\":\"number\",\"maximum\":2.0,\"minimum\":-2.0},{\"type\":\"null\"}],\"title\":\"Frequency Penalty\",\"default\":0},\"stream\":{\"anyOf\":[{\"type\":\"boolean\"},{\"type\":\"null\"}],\"title\":\"Stream\",\"default\":false},\"user\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"User\"},\"seed\":{\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"null\"}],\"title\":\"Seed\"},\"response_format\":{\"anyOf\":[{\"additionalProperties\":true,\"type\":\"object\"},{\"type\":\"null\"}],\"title\":\"Response Format\"},\"session_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Session Id\"},\"agent_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Agent Id\"},\"project_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Project Id\"}},\"type\":\"object\",\"title\":\"ChatCompletionRequest\",\"description\":\"OpenAI-compatible chat completion request.\\nhttps://platform.openai.com/docs/api-reference/chat/create\",\"examples\":[{\"max_tokens\":1024,\"messages\":[{\"content\":\"ĐŸŅ€Đ¸Đ˛ĐĩŅ‚! Đ Đ°ŅŅĐēаĐļи Đž ҁĐĩĐąĐĩ.\",\"role\":\"user\"}],\"model\":\"GigaChat\",\"temperature\":0.7}]},\"ChatMessage\":{\"properties\":{\"role\":{\"type\":\"string\",\"enum\":[\"system\",\"user\",\"assistant\",\"tool\"],\"title\":\"Role\"},\"content\":{\"anyOf\":[{\"type\":\"string\"},{\"items\":{},\"type\":\"array\"},{\"type\":\"null\"}],\"title\":\"Content\"},\"name\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Name\"},\"tool_calls\":{\"anyOf\":[{\"items\":{\"$ref\":\"#/components/schemas/src__schemas__openai__ToolCall\"},\"type\":\"array\"},{\"type\":\"null\"}],\"title\":\"Tool Calls\"},\"tool_call_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Tool Call Id\"}},\"type\":\"object\",\"required\":[\"role\"],\"title\":\"ChatMessage\",\"description\":\"Single message in conversation\"},\"DataSource\":{\"properties\":{\"type\":{\"type\":\"string\",\"title\":\"Type\"},\"id\":{\"type\":\"string\",\"title\":\"Id\"},\"server\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Server\"},\"meta\":{\"anyOf\":[{\"additionalProperties\":true,\"type\":\"object\"},{\"type\":\"null\"}],\"title\":\"Meta\"}},\"type\":\"object\",\"required\":[\"type\",\"id\"],\"title\":\"DataSource\",\"description\":\"Data source for RAG/data poisoning tracking\"},\"DatasetExportRequest\":{\"properties\":{\"scenario_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Scenario Id\"},\"agent_name\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Agent Name\"}},\"type\":\"object\",\"title\":\"DatasetExportRequest\",\"description\":\"Request schema for exporting dataset\"},\"Decision\":{\"type\":\"string\",\"enum\":[\"allow\",\"block\",\"log_only\",\"modify\",\"redact\"],\"title\":\"Decision\",\"description\":\"Scenario decision types\"},\"DetectionRequest\":{\"properties\":{\"detector_name\":{\"type\":\"string\",\"title\":\"Detector Name\",\"description\":\"Name of detector to use\"},\"content\":{\"type\":\"string\",\"minLength\":1,\"title\":\"Content\",\"description\":\"Content to analyze\"},\"scenario_id\":{\"type\":\"string\",\"title\":\"Scenario Id\",\"description\":\"Scenario ID\",\"default\":\"manual\"},\"scenario_prompt\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Scenario Prompt\",\"description\":\"Additional prompt from scenario\"},\"project_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Project Id\",\"description\":\"Project ID for project-specific detectors\"},\"event_data\":{\"anyOf\":[{\"additionalProperties\":true,\"type\":\"object\"},{\"type\":\"null\"}],\"title\":\"Event Data\",\"description\":\"Additional event context\"}},\"additionalProperties\":false,\"type\":\"object\",\"required\":[\"detector_name\",\"content\"],\"title\":\"DetectionRequest\",\"description\":\"Schema for manual detection request.\"},\"DetectionResponse\":{\"properties\":{\"label\":{\"$ref\":\"#/components/schemas/LLMLabel\"},\"confidence\":{\"anyOf\":[{\"type\":\"number\"},{\"type\":\"null\"}],\"title\":\"Confidence\"},\"reason\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Reason\"},\"latency_ms\":{\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"null\"}],\"title\":\"Latency Ms\"},\"detector_name\":{\"type\":\"string\",\"title\":\"Detector Name\"},\"detector_model\":{\"type\":\"string\",\"title\":\"Detector Model\"},\"error\":{\"type\":\"boolean\",\"title\":\"Error\",\"default\":false},\"error_message\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Error Message\"}},\"type\":\"object\",\"required\":[\"label\",\"detector_name\",\"detector_model\"],\"title\":\"DetectionResponse\",\"description\":\"Schema for detection response.\"},\"EventContextItem\":{\"properties\":{\"event_id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Event Id\"},\"step\":{\"type\":\"integer\",\"title\":\"Step\"},\"event_type\":{\"$ref\":\"#/components/schemas/EventType\"},\"role\":{\"$ref\":\"#/components/schemas/Role\"},\"message\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Message\"},\"tool_calls\":{\"anyOf\":[{\"items\":{\"additionalProperties\":true,\"type\":\"object\"},\"type\":\"array\"},{\"type\":\"null\"}],\"title\":\"Tool Calls\"},\"tool_results\":{\"anyOf\":[{\"items\":{\"additionalProperties\":true,\"type\":\"object\"},\"type\":\"array\"},{\"type\":\"null\"}],\"title\":\"Tool Results\"},\"final_decision\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/Decision\"},{\"type\":\"null\"}]},\"timestamp\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Timestamp\"}},\"type\":\"object\",\"required\":[\"event_id\",\"step\",\"event_type\",\"role\",\"timestamp\"],\"title\":\"EventContextItem\",\"description\":\"Event summary for context display\"},\"EventType\":{\"type\":\"string\",\"enum\":[\"user_message\",\"assistant_message\",\"tool_call\",\"tool_result\",\"system_message\"],\"title\":\"EventType\",\"description\":\"Types of agent events\"},\"FunctionCall\":{\"properties\":{\"name\":{\"type\":\"string\",\"title\":\"Name\"},\"arguments\":{\"type\":\"string\",\"title\":\"Arguments\"}},\"type\":\"object\",\"required\":[\"name\",\"arguments\"],\"title\":\"FunctionCall\",\"description\":\"Function call in tool_calls\"},\"FunctionDefinition\":{\"properties\":{\"name\":{\"type\":\"string\",\"title\":\"Name\"},\"description\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Description\"},\"parameters\":{\"anyOf\":[{\"additionalProperties\":true,\"type\":\"object\"},{\"type\":\"null\"}],\"title\":\"Parameters\"}},\"type\":\"object\",\"required\":[\"name\"],\"title\":\"FunctionDefinition\",\"description\":\"Function definition in tools\"},\"HTTPValidationError\":{\"properties\":{\"detail\":{\"items\":{\"$ref\":\"#/components/schemas/ValidationError\"},\"type\":\"array\",\"title\":\"Detail\"}},\"type\":\"object\",\"title\":\"HTTPValidationError\"},\"IncidentListResponse\":{\"properties\":{\"items\":{\"items\":{\"$ref\":\"#/components/schemas/IncidentResponse\"},\"type\":\"array\",\"title\":\"Items\"},\"total\":{\"type\":\"integer\",\"title\":\"Total\"},\"page\":{\"type\":\"integer\",\"title\":\"Page\"},\"page_size\":{\"type\":\"integer\",\"title\":\"Page Size\"},\"pages\":{\"type\":\"integer\",\"title\":\"Pages\"}},\"type\":\"object\",\"required\":[\"items\",\"total\",\"page\",\"page_size\",\"pages\"],\"title\":\"IncidentListResponse\",\"description\":\"Paginated list of incidents\"},\"IncidentMatchOriginalResponse\":{\"properties\":{\"incident_id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Incident Id\"},\"match_id\":{\"type\":\"integer\",\"title\":\"Match Id\"},\"original_value\":{\"type\":\"string\",\"title\":\"Original Value\"}},\"type\":\"object\",\"required\":[\"incident_id\",\"match_id\",\"original_value\"],\"title\":\"IncidentMatchOriginalResponse\"},\"IncidentResponse\":{\"properties\":{\"session_id\":{\"type\":\"string\",\"title\":\"Session Id\"},\"step\":{\"type\":\"integer\",\"title\":\"Step\"},\"agent_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Agent Id\"},\"project_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Project Id\"},\"scenario_id\":{\"type\":\"string\",\"title\":\"Scenario Id\"},\"rule_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Rule Id\"},\"decision\":{\"$ref\":\"#/components/schemas/Decision\"},\"severity\":{\"$ref\":\"#/components/schemas/Severity\"},\"summary\":{\"type\":\"string\",\"title\":\"Summary\"},\"details\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Details\"},\"matched_content\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Matched Content\"},\"decision_source\":{\"type\":\"string\",\"title\":\"Decision Source\",\"default\":\"static\"},\"review_status\":{\"$ref\":\"#/components/schemas/ReviewStatus\",\"default\":\"no_review\"},\"review_reasons\":{\"items\":{\"type\":\"string\"},\"type\":\"array\",\"title\":\"Review Reasons\"},\"extra\":{\"additionalProperties\":true,\"type\":\"object\",\"title\":\"Extra\"},\"id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Id\"},\"event_id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Event Id\"},\"event_type\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/EventType\"},{\"type\":\"null\"}]},\"role\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/Role\"},{\"type\":\"null\"}]},\"status\":{\"$ref\":\"#/components/schemas/IncidentStatus\",\"default\":\"open\"},\"created_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Created At\"},\"updated_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Updated At\"},\"resolved_at\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"date-time\"},{\"type\":\"null\"}],\"title\":\"Resolved At\"},\"resolved_by\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Resolved By\"},\"resolution_notes\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Resolution Notes\"},\"false_alert_type\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"False Alert Type\"}},\"type\":\"object\",\"required\":[\"session_id\",\"step\",\"scenario_id\",\"decision\",\"severity\",\"summary\",\"id\",\"event_id\",\"created_at\",\"updated_at\"],\"title\":\"IncidentResponse\",\"description\":\"Response schema for incident\"},\"IncidentReviewDetailResponse\":{\"properties\":{\"id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Id\"},\"event_id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Event Id\"},\"session_id\":{\"type\":\"string\",\"title\":\"Session Id\"},\"step\":{\"type\":\"integer\",\"title\":\"Step\"},\"review_status\":{\"$ref\":\"#/components/schemas/ReviewStatus\"},\"human_label\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Human Label\"},\"review_notes\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Review Notes\"},\"reviewed_by\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Reviewed By\"},\"reviewed_at\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"date-time\"},{\"type\":\"null\"}],\"title\":\"Reviewed At\"},\"review_reasons\":{\"items\":{\"type\":\"string\"},\"type\":\"array\",\"title\":\"Review Reasons\",\"default\":[]},\"scenario_id\":{\"type\":\"string\",\"title\":\"Scenario Id\"},\"rule_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Rule Id\"},\"decision\":{\"$ref\":\"#/components/schemas/Decision\"},\"decision_source\":{\"type\":\"string\",\"title\":\"Decision Source\"},\"severity\":{\"$ref\":\"#/components/schemas/Severity\"},\"summary\":{\"type\":\"string\",\"title\":\"Summary\"},\"static_rule_info\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/StaticRuleInfo\"},{\"type\":\"null\"}]},\"llm_results\":{\"items\":{\"$ref\":\"#/components/schemas/LLMResultInfo\"},\"type\":\"array\",\"title\":\"Llm Results\",\"default\":[]},\"trigger_event\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/EventContextItem\"},{\"type\":\"null\"}]},\"created_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Created At\"},\"updated_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Updated At\"},\"false_alert_type\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"False Alert Type\"}},\"type\":\"object\",\"required\":[\"id\",\"event_id\",\"session_id\",\"step\",\"review_status\",\"scenario_id\",\"decision\",\"decision_source\",\"severity\",\"summary\",\"created_at\",\"updated_at\"],\"title\":\"IncidentReviewDetailResponse\",\"description\":\"Detailed incident review response\"},\"IncidentReviewRequest\":{\"properties\":{\"human_label\":{\"type\":\"string\",\"title\":\"Human Label\"},\"notes\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Notes\"}},\"type\":\"object\",\"required\":[\"human_label\"],\"title\":\"IncidentReviewRequest\",\"description\":\"Request schema for submitting incident review\"},\"IncidentSeverityStats\":{\"properties\":{\"critical\":{\"type\":\"integer\",\"title\":\"Critical\",\"default\":0},\"high\":{\"type\":\"integer\",\"title\":\"High\",\"default\":0},\"medium\":{\"type\":\"integer\",\"title\":\"Medium\",\"default\":0},\"low\":{\"type\":\"integer\",\"title\":\"Low\",\"default\":0}},\"type\":\"object\",\"title\":\"IncidentSeverityStats\",\"description\":\"Incident counts by severity\"},\"IncidentStatsResponse\":{\"properties\":{\"total\":{\"type\":\"integer\",\"title\":\"Total\"},\"severity\":{\"$ref\":\"#/components/schemas/IncidentSeverityStats\"}},\"type\":\"object\",\"required\":[\"total\",\"severity\"],\"title\":\"IncidentStatsResponse\",\"description\":\"Incident stats for current filters\"},\"IncidentStatus\":{\"type\":\"string\",\"enum\":[\"open\",\"investigating\",\"resolved\",\"false_positive\",\"canceled\",\"closed\"],\"title\":\"IncidentStatus\",\"description\":\"Incident status\"},\"IncidentUpdate\":{\"properties\":{\"status\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/IncidentStatus\"},{\"type\":\"null\"}]},\"resolution_notes\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Resolution Notes\"},\"resolved_by\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Resolved By\"},\"false_alert_type\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"False Alert Type\"}},\"type\":\"object\",\"title\":\"IncidentUpdate\",\"description\":\"Schema for updating incident\"},\"LLMDetectorConfigCreate\":{\"properties\":{\"name\":{\"type\":\"string\",\"maxLength\":255,\"minLength\":1,\"title\":\"Name\",\"description\":\"Unique detector name\"},\"description\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Description\",\"description\":\"Detector description\"},\"provider\":{\"$ref\":\"#/components/schemas/LLMProvider\",\"description\":\"LLM provider\"},\"model\":{\"type\":\"string\",\"maxLength\":255,\"minLength\":1,\"title\":\"Model\",\"description\":\"Model name\"},\"base_url\":{\"anyOf\":[{\"type\":\"string\",\"maxLength\":500},{\"type\":\"null\"}],\"title\":\"Base Url\",\"description\":\"Custom base URL for provider\"},\"system_prompt\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"System Prompt\",\"description\":\"System prompt for detector\"},\"temperature\":{\"type\":\"number\",\"maximum\":2.0,\"minimum\":0.0,\"title\":\"Temperature\",\"description\":\"Model temperature\",\"default\":0.0},\"max_tokens\":{\"type\":\"integer\",\"maximum\":8192.0,\"minimum\":1.0,\"title\":\"Max Tokens\",\"description\":\"Max tokens for response\",\"default\":500},\"timeout_ms\":{\"type\":\"integer\",\"maximum\":300000.0,\"minimum\":1000.0,\"title\":\"Timeout Ms\",\"description\":\"Request timeout in ms\",\"default\":30000},\"model_params\":{\"anyOf\":[{\"additionalProperties\":true,\"type\":\"object\"},{\"type\":\"null\"}],\"title\":\"Model Params\",\"description\":\"Additional model parameters\"},\"project_id\":{\"anyOf\":[{\"type\":\"string\",\"maxLength\":255},{\"type\":\"null\"}],\"title\":\"Project Id\",\"description\":\"Project ID (null = global)\"},\"enabled\":{\"type\":\"boolean\",\"title\":\"Enabled\",\"description\":\"Is detector enabled\",\"default\":true},\"priority\":{\"type\":\"integer\",\"minimum\":0.0,\"title\":\"Priority\",\"description\":\"Detector priority (higher = more important)\",\"default\":0},\"api_key\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Api Key\",\"description\":\"API key (will be encrypted)\"}},\"additionalProperties\":false,\"type\":\"object\",\"required\":[\"name\",\"provider\",\"model\"],\"title\":\"LLMDetectorConfigCreate\",\"description\":\"Schema for creating detector config.\"},\"LLMDetectorConfigList\":{\"properties\":{\"items\":{\"items\":{\"$ref\":\"#/components/schemas/LLMDetectorConfigResponse\"},\"type\":\"array\",\"title\":\"Items\"},\"total\":{\"type\":\"integer\",\"title\":\"Total\"},\"page\":{\"type\":\"integer\",\"title\":\"Page\",\"default\":1},\"page_size\":{\"type\":\"integer\",\"title\":\"Page Size\",\"default\":20}},\"type\":\"object\",\"required\":[\"items\",\"total\"],\"title\":\"LLMDetectorConfigList\",\"description\":\"Schema for list of detector configs.\"},\"LLMDetectorConfigResponse\":{\"properties\":{\"name\":{\"type\":\"string\",\"maxLength\":255,\"minLength\":1,\"title\":\"Name\",\"description\":\"Unique detector name\"},\"description\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Description\",\"description\":\"Detector description\"},\"provider\":{\"$ref\":\"#/components/schemas/LLMProvider\",\"description\":\"LLM provider\"},\"model\":{\"type\":\"string\",\"maxLength\":255,\"minLength\":1,\"title\":\"Model\",\"description\":\"Model name\"},\"base_url\":{\"anyOf\":[{\"type\":\"string\",\"maxLength\":500},{\"type\":\"null\"}],\"title\":\"Base Url\",\"description\":\"Custom base URL for provider\"},\"system_prompt\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"System Prompt\",\"description\":\"System prompt for detector\"},\"temperature\":{\"type\":\"number\",\"maximum\":2.0,\"minimum\":0.0,\"title\":\"Temperature\",\"description\":\"Model temperature\",\"default\":0.0},\"max_tokens\":{\"type\":\"integer\",\"maximum\":8192.0,\"minimum\":1.0,\"title\":\"Max Tokens\",\"description\":\"Max tokens for response\",\"default\":500},\"timeout_ms\":{\"type\":\"integer\",\"maximum\":300000.0,\"minimum\":1000.0,\"title\":\"Timeout Ms\",\"description\":\"Request timeout in ms\",\"default\":30000},\"model_params\":{\"anyOf\":[{\"additionalProperties\":true,\"type\":\"object\"},{\"type\":\"null\"}],\"title\":\"Model Params\",\"description\":\"Additional model parameters\"},\"project_id\":{\"anyOf\":[{\"type\":\"string\",\"maxLength\":255},{\"type\":\"null\"}],\"title\":\"Project Id\",\"description\":\"Project ID (null = global)\"},\"enabled\":{\"type\":\"boolean\",\"title\":\"Enabled\",\"description\":\"Is detector enabled\",\"default\":true},\"priority\":{\"type\":\"integer\",\"minimum\":0.0,\"title\":\"Priority\",\"description\":\"Detector priority (higher = more important)\",\"default\":0},\"id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Id\"},\"has_api_key\":{\"type\":\"boolean\",\"title\":\"Has Api Key\",\"description\":\"Whether API key is configured\"},\"created_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Created At\"},\"updated_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Updated At\"}},\"additionalProperties\":false,\"type\":\"object\",\"required\":[\"name\",\"provider\",\"model\",\"id\",\"has_api_key\",\"created_at\",\"updated_at\"],\"title\":\"LLMDetectorConfigResponse\",\"description\":\"Schema for detector config response.\"},\"LLMDetectorConfigUpdate\":{\"properties\":{\"name\":{\"anyOf\":[{\"type\":\"string\",\"maxLength\":255,\"minLength\":1},{\"type\":\"null\"}],\"title\":\"Name\"},\"description\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Description\"},\"provider\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/LLMProvider\"},{\"type\":\"null\"}]},\"model\":{\"anyOf\":[{\"type\":\"string\",\"maxLength\":255,\"minLength\":1},{\"type\":\"null\"}],\"title\":\"Model\"},\"base_url\":{\"anyOf\":[{\"type\":\"string\",\"maxLength\":500},{\"type\":\"null\"}],\"title\":\"Base Url\"},\"api_key\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Api Key\",\"description\":\"New API key (will be encrypted)\"},\"system_prompt\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"System Prompt\"},\"temperature\":{\"anyOf\":[{\"type\":\"number\",\"maximum\":2.0,\"minimum\":0.0},{\"type\":\"null\"}],\"title\":\"Temperature\"},\"max_tokens\":{\"anyOf\":[{\"type\":\"integer\",\"maximum\":8192.0,\"minimum\":1.0},{\"type\":\"null\"}],\"title\":\"Max Tokens\"},\"timeout_ms\":{\"anyOf\":[{\"type\":\"integer\",\"maximum\":300000.0,\"minimum\":1000.0},{\"type\":\"null\"}],\"title\":\"Timeout Ms\"},\"model_params\":{\"anyOf\":[{\"additionalProperties\":true,\"type\":\"object\"},{\"type\":\"null\"}],\"title\":\"Model Params\"},\"enabled\":{\"anyOf\":[{\"type\":\"boolean\"},{\"type\":\"null\"}],\"title\":\"Enabled\"},\"priority\":{\"anyOf\":[{\"type\":\"integer\",\"minimum\":0.0},{\"type\":\"null\"}],\"title\":\"Priority\"}},\"additionalProperties\":false,\"type\":\"object\",\"title\":\"LLMDetectorConfigUpdate\",\"description\":\"Schema for updating detector config.\"},\"LLMLabel\":{\"type\":\"string\",\"enum\":[\"safe\",\"unsafe\"],\"title\":\"LLMLabel\",\"description\":\"LLM detector result labels\"},\"LLMMessageMode\":{\"type\":\"string\",\"enum\":[\"single\",\"from_user_message\"],\"title\":\"LLMMessageMode\",\"description\":\"Mode for selecting messages to send to LLM detector\"},\"LLMProvider\":{\"type\":\"string\",\"enum\":[\"openai\",\"anthropic\",\"gigachat\",\"yandexgpt\",\"local\",\"azure\"],\"title\":\"LLMProvider\",\"description\":\"Supported LLM providers for detectors\"},\"LLMResultInfo\":{\"properties\":{\"detector_name\":{\"type\":\"string\",\"title\":\"Detector Name\"},\"detector_model\":{\"type\":\"string\",\"title\":\"Detector Model\"},\"detector_provider\":{\"type\":\"string\",\"title\":\"Detector Provider\"},\"label\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Label\"},\"confidence\":{\"anyOf\":[{\"type\":\"number\"},{\"type\":\"null\"}],\"title\":\"Confidence\"},\"reason\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Reason\"},\"error\":{\"type\":\"boolean\",\"title\":\"Error\",\"default\":false},\"error_message\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Error Message\"}},\"type\":\"object\",\"required\":[\"detector_name\",\"detector_model\",\"detector_provider\"],\"title\":\"LLMResultInfo\",\"description\":\"LLM detector result information\"},\"LoginRequest\":{\"properties\":{\"login\":{\"type\":\"string\",\"title\":\"Login\",\"example\":\"operator\"},\"password\":{\"type\":\"string\",\"title\":\"Password\",\"example\":\"222\"}},\"type\":\"object\",\"required\":[\"login\",\"password\"],\"title\":\"LoginRequest\"},\"LoginResponse\":{\"properties\":{\"user\":{\"$ref\":\"#/components/schemas/UserRead\"}},\"type\":\"object\",\"required\":[\"user\"],\"title\":\"LoginResponse\"},\"PolicyRule\":{\"properties\":{\"id\":{\"type\":\"string\",\"title\":\"Id\"},\"enabled\":{\"type\":\"boolean\",\"title\":\"Enabled\",\"default\":true},\"category\":{\"type\":\"string\",\"title\":\"Category\",\"default\":\"general\"},\"pattern\":{\"type\":\"string\",\"title\":\"Pattern\"},\"flags\":{\"type\":\"string\",\"title\":\"Flags\",\"default\":\"\"},\"action\":{\"$ref\":\"#/components/schemas/Decision\",\"default\":\"log_only\"},\"severity\":{\"$ref\":\"#/components/schemas/Severity\",\"default\":\"medium\"},\"message\":{\"type\":\"string\",\"title\":\"Message\",\"default\":\"\"},\"redact_with\":{\"type\":\"string\",\"title\":\"Redact With\",\"default\":\"[REDACTED]\"},\"source_file\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Source File\"}},\"type\":\"object\",\"required\":[\"id\",\"pattern\"],\"title\":\"PolicyRule\",\"description\":\"Policy rule for leak detection\"},\"PolicyRuleCreate\":{\"properties\":{\"id\":{\"type\":\"string\",\"maxLength\":100,\"minLength\":1,\"pattern\":\"^[a-z0-9_]+$\",\"title\":\"Id\"},\"enabled\":{\"type\":\"boolean\",\"title\":\"Enabled\",\"default\":true},\"category\":{\"type\":\"string\",\"maxLength\":50,\"minLength\":1,\"title\":\"Category\"},\"pattern\":{\"type\":\"string\",\"minLength\":1,\"title\":\"Pattern\",\"description\":\"Regex pattern\"},\"flags\":{\"type\":\"string\",\"title\":\"Flags\",\"description\":\"Regex flags (i, m)\",\"default\":\"\"},\"action\":{\"$ref\":\"#/components/schemas/Decision\",\"default\":\"log_only\"},\"severity\":{\"$ref\":\"#/components/schemas/Severity\",\"default\":\"medium\"},\"message\":{\"type\":\"string\",\"title\":\"Message\",\"description\":\"Human-readable message\",\"default\":\"\"},\"redact_with\":{\"type\":\"string\",\"title\":\"Redact With\",\"description\":\"Replacement text for redaction\",\"default\":\"[REDACTED]\"}},\"additionalProperties\":false,\"type\":\"object\",\"required\":[\"id\",\"category\",\"pattern\"],\"title\":\"PolicyRuleCreate\",\"description\":\"Create a new policy rule\"},\"PolicyRuleListResponse\":{\"properties\":{\"items\":{\"items\":{\"$ref\":\"#/components/schemas/PolicyRule\"},\"type\":\"array\",\"title\":\"Items\"},\"total\":{\"type\":\"integer\",\"title\":\"Total\"},\"by_category\":{\"additionalProperties\":{\"type\":\"integer\"},\"type\":\"object\",\"title\":\"By Category\"}},\"type\":\"object\",\"required\":[\"items\",\"total\"],\"title\":\"PolicyRuleListResponse\",\"description\":\"List of policy rules\"},\"PolicyRuleUpdate\":{\"properties\":{\"enabled\":{\"anyOf\":[{\"type\":\"boolean\"},{\"type\":\"null\"}],\"title\":\"Enabled\"},\"action\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/Decision\"},{\"type\":\"null\"}]},\"severity\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/Severity\"},{\"type\":\"null\"}]},\"pattern\":{\"anyOf\":[{\"type\":\"string\",\"minLength\":1},{\"type\":\"null\"}],\"title\":\"Pattern\",\"description\":\"Regex pattern\"},\"flags\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Flags\",\"description\":\"Regex flags (i, m)\"},\"message\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Message\",\"description\":\"Human-readable message\"},\"redact_with\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Redact With\",\"description\":\"Replacement text for redaction\"}},\"additionalProperties\":false,\"type\":\"object\",\"title\":\"PolicyRuleUpdate\",\"description\":\"Fields that can be updated on a policy rule\"},\"ProcessingResult\":{\"properties\":{\"event_id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Event Id\"},\"session_id\":{\"type\":\"string\",\"title\":\"Session Id\"},\"processed_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Processed At\"},\"total_time_ms\":{\"type\":\"integer\",\"title\":\"Total Time Ms\",\"default\":0},\"final_decision\":{\"$ref\":\"#/components/schemas/Decision\",\"default\":\"allow\"},\"scenario_decisions\":{\"items\":{\"$ref\":\"#/components/schemas/ScenarioDecision\"},\"type\":\"array\",\"title\":\"Scenario Decisions\"},\"original_content\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Original Content\"},\"modified_content\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Modified Content\"},\"max_severity\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/Severity\"},{\"type\":\"null\"}]},\"all_matched_rules\":{\"items\":{\"type\":\"string\"},\"type\":\"array\",\"title\":\"All Matched Rules\"},\"has_violations\":{\"type\":\"boolean\",\"title\":\"Has Violations\",\"default\":false},\"incident_created\":{\"type\":\"boolean\",\"title\":\"Incident Created\",\"default\":false},\"incident_id\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"uuid\"},{\"type\":\"null\"}],\"title\":\"Incident Id\"},\"engine_conflicts\":{\"anyOf\":[{\"items\":{\"additionalProperties\":true,\"type\":\"object\"},\"type\":\"array\"},{\"type\":\"null\"}],\"title\":\"Engine Conflicts\"}},\"type\":\"object\",\"required\":[\"event_id\",\"session_id\"],\"title\":\"ProcessingResult\",\"description\":\"Combined result of all scenarios for an event\"},\"ReplayEventResult\":{\"properties\":{\"event_id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Event Id\"},\"step\":{\"type\":\"integer\",\"title\":\"Step\"},\"event_type\":{\"type\":\"string\",\"title\":\"Event Type\"},\"decision\":{\"$ref\":\"#/components/schemas/Decision\"},\"has_new_incidents\":{\"type\":\"boolean\",\"title\":\"Has New Incidents\"},\"incidents_created\":{\"type\":\"integer\",\"title\":\"Incidents Created\"},\"matched_rules\":{\"items\":{\"type\":\"string\"},\"type\":\"array\",\"title\":\"Matched Rules\"},\"max_severity\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/Severity\"},{\"type\":\"null\"}]}},\"type\":\"object\",\"required\":[\"event_id\",\"step\",\"event_type\",\"decision\",\"has_new_incidents\",\"incidents_created\"],\"title\":\"ReplayEventResult\",\"description\":\"Result of replaying a single event\"},\"ReplayListItem\":{\"properties\":{\"id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Id\"},\"replay_type\":{\"$ref\":\"#/components/schemas/ReplayType\"},\"batch_id\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"uuid\"},{\"type\":\"null\"}],\"title\":\"Batch Id\"},\"start_time\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"date-time\"},{\"type\":\"null\"}],\"title\":\"Start Time\"},\"end_time\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"date-time\"},{\"type\":\"null\"}],\"title\":\"End Time\"},\"batches_count\":{\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"null\"}],\"title\":\"Batches Count\"},\"events_count\":{\"type\":\"integer\",\"title\":\"Events Count\"},\"notes\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Notes\"},\"created_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Created At\"}},\"type\":\"object\",\"required\":[\"id\",\"replay_type\",\"events_count\",\"created_at\"],\"title\":\"ReplayListItem\",\"description\":\"Item in replay list\"},\"ReplayListResponse\":{\"properties\":{\"items\":{\"items\":{\"$ref\":\"#/components/schemas/ReplayListItem\"},\"type\":\"array\",\"title\":\"Items\"},\"total\":{\"type\":\"integer\",\"title\":\"Total\"}},\"type\":\"object\",\"required\":[\"items\",\"total\"],\"title\":\"ReplayListResponse\",\"description\":\"Response for replay list\"},\"ReplayMetrics\":{\"properties\":{\"replay_id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Replay Id\"},\"incidents_count\":{\"type\":\"integer\",\"title\":\"Incidents Count\",\"description\":\"Total number of incidents\"},\"review_required_count\":{\"type\":\"integer\",\"title\":\"Review Required Count\",\"description\":\"Incidents requiring review\"},\"conflicts_count\":{\"type\":\"integer\",\"title\":\"Conflicts Count\",\"description\":\"Incidents where human label conflicts with decision\"},\"precision_on_reviewed\":{\"anyOf\":[{\"type\":\"number\",\"maximum\":1.0,\"minimum\":0.0},{\"type\":\"null\"}],\"title\":\"Precision On Reviewed\",\"description\":\"Precision = TP / (TP + FP) on reviewed incidents. None if no reviewed incidents.\"}},\"type\":\"object\",\"required\":[\"replay_id\",\"incidents_count\",\"review_required_count\",\"conflicts_count\"],\"title\":\"ReplayMetrics\",\"description\":\"Metrics for a replay session\"},\"ReplayRequest\":{\"properties\":{\"notes\":{\"anyOf\":[{\"type\":\"string\",\"maxLength\":2000},{\"type\":\"null\"}],\"title\":\"Notes\",\"description\":\"Notes about this replay\"}},\"type\":\"object\",\"title\":\"ReplayRequest\",\"description\":\"Request to replay a batch\"},\"ReplayResult\":{\"properties\":{\"replay_id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Replay Id\"},\"batch_id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Batch Id\"},\"session_id\":{\"type\":\"string\",\"title\":\"Session Id\"},\"events_replayed\":{\"type\":\"integer\",\"title\":\"Events Replayed\"},\"total_incidents_created\":{\"type\":\"integer\",\"title\":\"Total Incidents Created\"},\"event_results\":{\"items\":{\"$ref\":\"#/components/schemas/ReplayEventResult\"},\"type\":\"array\",\"title\":\"Event Results\"},\"replay_started_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Replay Started At\"},\"replay_finished_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Replay Finished At\"},\"total_time_ms\":{\"type\":\"integer\",\"title\":\"Total Time Ms\"}},\"type\":\"object\",\"required\":[\"replay_id\",\"batch_id\",\"session_id\",\"events_replayed\",\"total_incidents_created\",\"event_results\",\"replay_started_at\",\"replay_finished_at\",\"total_time_ms\"],\"title\":\"ReplayResult\",\"description\":\"Result of batch replay\"},\"ReplayType\":{\"type\":\"string\",\"enum\":[\"batch\",\"time_interval\"],\"title\":\"ReplayType\",\"description\":\"Types of replay sessions\"},\"ReviewListItem\":{\"properties\":{\"id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Id\"},\"session_id\":{\"type\":\"string\",\"title\":\"Session Id\"},\"step\":{\"type\":\"integer\",\"title\":\"Step\"},\"scenario_id\":{\"type\":\"string\",\"title\":\"Scenario Id\"},\"rule_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Rule Id\"},\"decision\":{\"$ref\":\"#/components/schemas/Decision\"},\"decision_source\":{\"type\":\"string\",\"title\":\"Decision Source\"},\"severity\":{\"$ref\":\"#/components/schemas/Severity\"},\"summary\":{\"type\":\"string\",\"title\":\"Summary\"},\"review_status\":{\"$ref\":\"#/components/schemas/ReviewStatus\"},\"review_reasons\":{\"items\":{\"type\":\"string\"},\"type\":\"array\",\"title\":\"Review Reasons\",\"default\":[]},\"human_label\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Human Label\"},\"reviewed_at\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"date-time\"},{\"type\":\"null\"}],\"title\":\"Reviewed At\"},\"event_type\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/EventType\"},{\"type\":\"null\"}]},\"created_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Created At\"}},\"type\":\"object\",\"required\":[\"id\",\"session_id\",\"step\",\"scenario_id\",\"decision\",\"decision_source\",\"severity\",\"summary\",\"review_status\",\"created_at\"],\"title\":\"ReviewListItem\",\"description\":\"Item in the review list\"},\"ReviewListResponse\":{\"properties\":{\"pending_review\":{\"items\":{\"$ref\":\"#/components/schemas/ReviewListItem\"},\"type\":\"array\",\"title\":\"Pending Review\"},\"already_reviewed\":{\"items\":{\"$ref\":\"#/components/schemas/ReviewListItem\"},\"type\":\"array\",\"title\":\"Already Reviewed\"},\"total_pending\":{\"type\":\"integer\",\"title\":\"Total Pending\"},\"total_reviewed\":{\"type\":\"integer\",\"title\":\"Total Reviewed\"}},\"type\":\"object\",\"required\":[\"pending_review\",\"already_reviewed\",\"total_pending\",\"total_reviewed\"],\"title\":\"ReviewListResponse\",\"description\":\"Response for reviews list with categorization\"},\"ReviewStatus\":{\"type\":\"string\",\"enum\":[\"review_required\",\"already_reviewed\",\"no_review\"],\"title\":\"ReviewStatus\",\"description\":\"Incident review status\"},\"Role\":{\"type\":\"string\",\"enum\":[\"user\",\"assistant\",\"tool\",\"system\"],\"title\":\"Role\",\"description\":\"Roles in conversation\"},\"ScenarioBaseConfigResponse\":{\"properties\":{\"scenario_id\":{\"type\":\"string\",\"title\":\"Scenario Id\"},\"priority\":{\"type\":\"integer\",\"title\":\"Priority\"},\"supported_event_types\":{\"items\":{\"$ref\":\"#/components/schemas/EventType\"},\"type\":\"array\",\"title\":\"Supported Event Types\"},\"enabled\":{\"type\":\"boolean\",\"title\":\"Enabled\"}},\"type\":\"object\",\"required\":[\"scenario_id\",\"priority\",\"supported_event_types\",\"enabled\"],\"title\":\"ScenarioBaseConfigResponse\",\"description\":\"Response with scenario base configuration\"},\"ScenarioBaseConfigUpdate\":{\"properties\":{\"priority\":{\"anyOf\":[{\"type\":\"integer\",\"maximum\":1000.0,\"minimum\":1.0},{\"type\":\"null\"}],\"title\":\"Priority\",\"description\":\"Scenario priority (lower = higher priority)\"},\"supported_event_types\":{\"anyOf\":[{\"items\":{\"$ref\":\"#/components/schemas/EventType\"},\"type\":\"array\"},{\"type\":\"null\"}],\"title\":\"Supported Event Types\",\"description\":\"Event types this scenario should process\"}},\"additionalProperties\":false,\"type\":\"object\",\"title\":\"ScenarioBaseConfigUpdate\",\"description\":\"Update base configuration for a scenario\"},\"ScenarioDecision\":{\"properties\":{\"scenario_id\":{\"type\":\"string\",\"title\":\"Scenario Id\"},\"decision\":{\"$ref\":\"#/components/schemas/Decision\"},\"matched_rules\":{\"items\":{\"type\":\"string\"},\"type\":\"array\",\"title\":\"Matched Rules\"},\"severity\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/Severity\"},{\"type\":\"null\"}]},\"message\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Message\"},\"extra\":{\"additionalProperties\":true,\"type\":\"object\",\"title\":\"Extra\"},\"execution_time_ms\":{\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"null\"}],\"title\":\"Execution Time Ms\"},\"review_status\":{\"$ref\":\"#/components/schemas/ReviewStatus\",\"default\":\"no_review\"},\"review_reasons\":{\"items\":{\"type\":\"string\"},\"type\":\"array\",\"title\":\"Review Reasons\"}},\"type\":\"object\",\"required\":[\"scenario_id\",\"decision\"],\"title\":\"ScenarioDecision\",\"description\":\"Result of a single scenario execution\"},\"ScenarioDetail\":{\"properties\":{\"id\":{\"type\":\"string\",\"title\":\"Id\"},\"name\":{\"type\":\"string\",\"title\":\"Name\"},\"enabled\":{\"type\":\"boolean\",\"title\":\"Enabled\"},\"priority\":{\"type\":\"integer\",\"title\":\"Priority\"},\"supported_event_types\":{\"items\":{\"$ref\":\"#/components/schemas/EventType\"},\"type\":\"array\",\"title\":\"Supported Event Types\",\"default\":[]},\"static_rules_enabled\":{\"type\":\"boolean\",\"title\":\"Static Rules Enabled\",\"default\":true},\"llm_detector_enabled\":{\"type\":\"boolean\",\"title\":\"Llm Detector Enabled\",\"default\":true},\"config\":{\"additionalProperties\":true,\"type\":\"object\",\"title\":\"Config\"},\"policies_count\":{\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"null\"}],\"title\":\"Policies Count\"}},\"type\":\"object\",\"required\":[\"id\",\"name\",\"enabled\",\"priority\"],\"title\":\"ScenarioDetail\",\"description\":\"Full scenario details including config\"},\"ScenarioLLMConfigResponse\":{\"properties\":{\"scenario_id\":{\"type\":\"string\",\"title\":\"Scenario Id\"},\"llm_detector_enabled\":{\"type\":\"boolean\",\"title\":\"Llm Detector Enabled\"},\"llm_detector_name\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Llm Detector Name\"},\"llm_detector_threshold\":{\"type\":\"number\",\"title\":\"Llm Detector Threshold\",\"default\":0.8},\"llm_message_mode\":{\"type\":\"string\",\"title\":\"Llm Message Mode\",\"default\":\"single\"},\"llm_prompt\":{\"type\":\"string\",\"title\":\"Llm Prompt\",\"default\":\"\"}},\"type\":\"object\",\"required\":[\"scenario_id\",\"llm_detector_enabled\"],\"title\":\"ScenarioLLMConfigResponse\",\"description\":\"Response with scenario LLM configuration\"},\"ScenarioLLMConfigUpdate\":{\"properties\":{\"llm_detector_name\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Llm Detector Name\",\"description\":\"Name of the LLM detector to use (from llm_detector_configs)\"},\"llm_detector_threshold\":{\"anyOf\":[{\"type\":\"number\",\"maximum\":1.0,\"minimum\":0.0},{\"type\":\"null\"}],\"title\":\"Llm Detector Threshold\",\"description\":\"Threshold for considering detection as unsafe (0.0-1.0)\"},\"llm_message_mode\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/LLMMessageMode\"},{\"type\":\"null\"}],\"description\":\"Mode for selecting messages: 'single' or 'from_user_message'\"},\"llm_prompt\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Llm Prompt\",\"description\":\"Scenario-specific prompt for LLM detector\"}},\"additionalProperties\":false,\"type\":\"object\",\"title\":\"ScenarioLLMConfigUpdate\",\"description\":\"Update LLM detector configuration for a scenario\"},\"ScenarioListResponse\":{\"properties\":{\"items\":{\"items\":{\"$ref\":\"#/components/schemas/ScenarioSummary\"},\"type\":\"array\",\"title\":\"Items\"},\"total\":{\"type\":\"integer\",\"title\":\"Total\"}},\"type\":\"object\",\"required\":[\"items\",\"total\"],\"title\":\"ScenarioListResponse\",\"description\":\"List of scenarios\"},\"ScenarioSummary\":{\"properties\":{\"id\":{\"type\":\"string\",\"title\":\"Id\"},\"name\":{\"type\":\"string\",\"title\":\"Name\"},\"enabled\":{\"type\":\"boolean\",\"title\":\"Enabled\"},\"priority\":{\"type\":\"integer\",\"title\":\"Priority\"},\"supported_event_types\":{\"items\":{\"$ref\":\"#/components/schemas/EventType\"},\"type\":\"array\",\"title\":\"Supported Event Types\",\"default\":[]},\"static_rules_enabled\":{\"type\":\"boolean\",\"title\":\"Static Rules Enabled\",\"default\":true},\"llm_detector_enabled\":{\"type\":\"boolean\",\"title\":\"Llm Detector Enabled\",\"default\":true}},\"type\":\"object\",\"required\":[\"id\",\"name\",\"enabled\",\"priority\"],\"title\":\"ScenarioSummary\",\"description\":\"Summary of a scenario for list view\"},\"ScenarioToggleRequest\":{\"properties\":{\"enabled\":{\"type\":\"boolean\",\"title\":\"Enabled\"}},\"additionalProperties\":false,\"type\":\"object\",\"required\":[\"enabled\"],\"title\":\"ScenarioToggleRequest\",\"description\":\"Request to toggle static rules or LLM detector\"},\"ScenarioToggleResponse\":{\"properties\":{\"scenario_id\":{\"type\":\"string\",\"title\":\"Scenario Id\"},\"static_rules_enabled\":{\"type\":\"boolean\",\"title\":\"Static Rules Enabled\"},\"llm_detector_enabled\":{\"type\":\"boolean\",\"title\":\"Llm Detector Enabled\"},\"enabled\":{\"type\":\"boolean\",\"title\":\"Enabled\"}},\"type\":\"object\",\"required\":[\"scenario_id\",\"static_rules_enabled\",\"llm_detector_enabled\",\"enabled\"],\"title\":\"ScenarioToggleResponse\",\"description\":\"Response after toggling a scenario component\"},\"SessionContext\":{\"properties\":{\"session_id\":{\"type\":\"string\",\"title\":\"Session Id\"},\"agent_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Agent Id\"},\"project_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Project Id\"},\"total_steps\":{\"type\":\"integer\",\"title\":\"Total Steps\",\"default\":0},\"total_tool_calls\":{\"type\":\"integer\",\"title\":\"Total Tool Calls\",\"default\":0},\"tool_call_counts\":{\"additionalProperties\":{\"type\":\"integer\"},\"type\":\"object\",\"title\":\"Tool Call Counts\"},\"recent_tool_calls\":{\"items\":{\"additionalProperties\":true,\"type\":\"object\"},\"type\":\"array\",\"title\":\"Recent Tool Calls\"},\"recent_tool_results\":{\"items\":{\"additionalProperties\":true,\"type\":\"object\"},\"type\":\"array\",\"title\":\"Recent Tool Results\"},\"started_at\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"date-time\"},{\"type\":\"null\"}],\"title\":\"Started At\"},\"duration_seconds\":{\"type\":\"integer\",\"title\":\"Duration Seconds\",\"default\":0},\"is_blocked\":{\"type\":\"boolean\",\"title\":\"Is Blocked\",\"default\":false},\"block_reason\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Block Reason\"}},\"type\":\"object\",\"required\":[\"session_id\"],\"title\":\"SessionContext\",\"description\":\"Session context for scenario execution.\\nContains recent events and counters.\"},\"SessionDetail\":{\"properties\":{\"session_id\":{\"type\":\"string\",\"title\":\"Session Id\"},\"agent_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Agent Id\"},\"project_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Project Id\"},\"steps_count\":{\"type\":\"integer\",\"title\":\"Steps Count\",\"default\":0},\"incidents_count\":{\"type\":\"integer\",\"title\":\"Incidents Count\",\"default\":0},\"has_blocks\":{\"type\":\"boolean\",\"title\":\"Has Blocks\",\"default\":false},\"started_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Started At\"},\"last_activity_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Last Activity At\"},\"events\":{\"items\":{\"$ref\":\"#/components/schemas/SessionEventBrief\"},\"type\":\"array\",\"title\":\"Events\"}},\"type\":\"object\",\"required\":[\"session_id\",\"started_at\",\"last_activity_at\"],\"title\":\"SessionDetail\",\"description\":\"Detailed session info with events\"},\"SessionEventBrief\":{\"properties\":{\"step\":{\"type\":\"integer\",\"title\":\"Step\"},\"timestamp\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Timestamp\"},\"event_type\":{\"type\":\"string\",\"title\":\"Event Type\"},\"role\":{\"type\":\"string\",\"title\":\"Role\"},\"content_preview\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Content Preview\"},\"tool_names\":{\"items\":{\"type\":\"string\"},\"type\":\"array\",\"title\":\"Tool Names\",\"default\":[]},\"final_decision\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/Decision\"},{\"type\":\"null\"}]},\"has_incidents\":{\"type\":\"boolean\",\"title\":\"Has Incidents\",\"default\":false}},\"type\":\"object\",\"required\":[\"step\",\"timestamp\",\"event_type\",\"role\"],\"title\":\"SessionEventBrief\",\"description\":\"Brief event info for session view\"},\"SessionSummary\":{\"properties\":{\"session_id\":{\"type\":\"string\",\"title\":\"Session Id\"},\"agent_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Agent Id\"},\"project_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Project Id\"},\"steps_count\":{\"type\":\"integer\",\"title\":\"Steps Count\",\"default\":0},\"incidents_count\":{\"type\":\"integer\",\"title\":\"Incidents Count\",\"default\":0},\"has_blocks\":{\"type\":\"boolean\",\"title\":\"Has Blocks\",\"default\":false},\"started_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Started At\"},\"last_activity_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Last Activity At\"}},\"type\":\"object\",\"required\":[\"session_id\",\"started_at\",\"last_activity_at\"],\"title\":\"SessionSummary\",\"description\":\"Summary of agent session\"},\"Severity\":{\"type\":\"string\",\"enum\":[\"low\",\"medium\",\"high\",\"critical\"],\"title\":\"Severity\",\"description\":\"Incident severity levels\"},\"SimulateEventInput\":{\"properties\":{\"event_type\":{\"$ref\":\"#/components/schemas/EventType\"},\"role\":{\"$ref\":\"#/components/schemas/Role\",\"default\":\"user\"},\"message\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Message\"},\"tool_calls\":{\"items\":{\"$ref\":\"#/components/schemas/src__schemas__event__ToolCall\"},\"type\":\"array\",\"title\":\"Tool Calls\"},\"tool_results\":{\"items\":{\"$ref\":\"#/components/schemas/ToolResult\"},\"type\":\"array\",\"title\":\"Tool Results\"},\"meta\":{\"anyOf\":[{\"additionalProperties\":true,\"type\":\"object\"},{\"type\":\"null\"}],\"title\":\"Meta\"}},\"additionalProperties\":false,\"type\":\"object\",\"required\":[\"event_type\"],\"title\":\"SimulateEventInput\",\"description\":\"Single event in simulation batch\"},\"SimulateEventResult\":{\"properties\":{\"step\":{\"type\":\"integer\",\"title\":\"Step\"},\"event_type\":{\"$ref\":\"#/components/schemas/EventType\"},\"event_id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Event Id\"},\"content_preview\":{\"type\":\"string\",\"title\":\"Content Preview\"},\"decision\":{\"$ref\":\"#/components/schemas/Decision\"},\"incidents_created\":{\"type\":\"integer\",\"title\":\"Incidents Created\",\"default\":0},\"matched_rules\":{\"items\":{\"type\":\"string\"},\"type\":\"array\",\"title\":\"Matched Rules\"},\"block_reason\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Block Reason\"}},\"type\":\"object\",\"required\":[\"step\",\"event_type\",\"event_id\",\"content_preview\",\"decision\"],\"title\":\"SimulateEventResult\",\"description\":\"Result for single event in simulation\"},\"SimulateRequest\":{\"properties\":{\"session_id\":{\"type\":\"string\",\"maxLength\":255,\"minLength\":1,\"title\":\"Session Id\"},\"agent_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Agent Id\"},\"project_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Project Id\"},\"user_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"User Id\"},\"model\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Model\"},\"events\":{\"items\":{\"$ref\":\"#/components/schemas/SimulateEventInput\"},\"type\":\"array\",\"minItems\":1,\"title\":\"Events\"}},\"additionalProperties\":false,\"type\":\"object\",\"required\":[\"session_id\",\"events\"],\"title\":\"SimulateRequest\",\"description\":\"Request for batch simulation\"},\"SimulateResponse\":{\"properties\":{\"batch_id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Batch Id\"},\"session_id\":{\"type\":\"string\",\"title\":\"Session Id\"},\"total_events\":{\"type\":\"integer\",\"title\":\"Total Events\"},\"processed_count\":{\"type\":\"integer\",\"title\":\"Processed Count\",\"default\":0},\"skipped_count\":{\"type\":\"integer\",\"title\":\"Skipped Count\",\"default\":0},\"blocked_at_step\":{\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"null\"}],\"title\":\"Blocked At Step\"},\"incidents_count\":{\"type\":\"integer\",\"title\":\"Incidents Count\",\"default\":0},\"results\":{\"items\":{\"$ref\":\"#/components/schemas/SimulateEventResult\"},\"type\":\"array\",\"title\":\"Results\"},\"report\":{\"type\":\"string\",\"title\":\"Report\"}},\"type\":\"object\",\"required\":[\"batch_id\",\"session_id\",\"total_events\",\"results\",\"report\"],\"title\":\"SimulateResponse\",\"description\":\"Response from batch simulation\"},\"StaticRuleInfo\":{\"properties\":{\"scenario_id\":{\"type\":\"string\",\"title\":\"Scenario Id\"},\"rule_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Rule Id\"},\"matched_content\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Matched Content\"},\"details\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Details\"}},\"type\":\"object\",\"required\":[\"scenario_id\"],\"title\":\"StaticRuleInfo\",\"description\":\"Static rule trigger information\"},\"TimeIntervalReplayRequest\":{\"properties\":{\"start_time\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"date-time\"},{\"type\":\"null\"}],\"title\":\"Start Time\",\"description\":\"Start of interval. Default: 24 hours ago\"},\"end_time\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"date-time\"},{\"type\":\"null\"}],\"title\":\"End Time\",\"description\":\"End of interval. Default: now\"},\"notes\":{\"anyOf\":[{\"type\":\"string\",\"maxLength\":2000},{\"type\":\"null\"}],\"title\":\"Notes\",\"description\":\"Notes about this replay\"}},\"type\":\"object\",\"title\":\"TimeIntervalReplayRequest\",\"description\":\"Request to replay events in a time interval\"},\"TimeIntervalReplayResult\":{\"properties\":{\"replay_id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Replay Id\"},\"replay_type\":{\"$ref\":\"#/components/schemas/ReplayType\",\"default\":\"time_interval\"},\"start_time\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Start Time\"},\"end_time\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"End Time\"},\"total_batches\":{\"type\":\"integer\",\"title\":\"Total Batches\"},\"total_events_replayed\":{\"type\":\"integer\",\"title\":\"Total Events Replayed\"},\"total_incidents_created\":{\"type\":\"integer\",\"title\":\"Total Incidents Created\"},\"batch_results\":{\"items\":{\"$ref\":\"#/components/schemas/BatchReplayResult\"},\"type\":\"array\",\"title\":\"Batch Results\"},\"replay_started_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Replay Started At\"},\"replay_finished_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Replay Finished At\"},\"total_time_ms\":{\"type\":\"integer\",\"title\":\"Total Time Ms\"}},\"type\":\"object\",\"required\":[\"replay_id\",\"start_time\",\"end_time\",\"total_batches\",\"total_events_replayed\",\"total_incidents_created\",\"batch_results\",\"replay_started_at\",\"replay_finished_at\",\"total_time_ms\"],\"title\":\"TimeIntervalReplayResult\",\"description\":\"Result of time interval replay\"},\"ToolCheckRequest\":{\"properties\":{\"session_id\":{\"type\":\"string\",\"title\":\"Session Id\"},\"step\":{\"type\":\"integer\",\"minimum\":0.0,\"title\":\"Step\"},\"agent_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Agent Id\"},\"project_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Project Id\"},\"tool_name\":{\"type\":\"string\",\"title\":\"Tool Name\"},\"tool_args\":{\"additionalProperties\":true,\"type\":\"object\",\"title\":\"Tool Args\"},\"conversation_history\":{\"anyOf\":[{\"items\":{\"additionalProperties\":true,\"type\":\"object\"},\"type\":\"array\"},{\"type\":\"null\"}],\"title\":\"Conversation History\"},\"meta\":{\"additionalProperties\":true,\"type\":\"object\",\"title\":\"Meta\"}},\"type\":\"object\",\"required\":[\"session_id\",\"step\",\"tool_name\"],\"title\":\"ToolCheckRequest\",\"description\":\"Request to check tool call before execution\"},\"ToolCheckResponse\":{\"properties\":{\"decision\":{\"$ref\":\"#/components/schemas/Decision\"},\"matched_rules\":{\"items\":{\"type\":\"string\"},\"type\":\"array\",\"title\":\"Matched Rules\"},\"severity\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/Severity\"},{\"type\":\"null\"}]},\"message\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Message\"},\"modified_args\":{\"anyOf\":[{\"additionalProperties\":true,\"type\":\"object\"},{\"type\":\"null\"}],\"title\":\"Modified Args\"},\"execution_result\":{\"anyOf\":[{},{\"type\":\"null\"}],\"title\":\"Execution Result\"},\"execution_error\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Execution Error\"}},\"type +[2026-01-25T16:10:52.927Z] [INFO] \":\"object\",\"required\":[\"decision\"],\"title\":\"ToolCheckResponse\",\"description\":\"Response for tool check request\"},\"ToolDefinition\":{\"properties\":{\"type\":{\"type\":\"string\",\"const\":\"function\",\"title\":\"Type\",\"default\":\"function\"},\"function\":{\"$ref\":\"#/components/schemas/FunctionDefinition\"}},\"type\":\"object\",\"required\":[\"function\"],\"title\":\"ToolDefinition\",\"description\":\"Tool definition\"},\"ToolPolicyConfigResponse\":{\"properties\":{\"scenario_id\":{\"type\":\"string\",\"title\":\"Scenario Id\",\"default\":\"tool_policy\"},\"allowed_tools\":{\"items\":{\"type\":\"string\"},\"type\":\"array\",\"title\":\"Allowed Tools\",\"description\":\"Allowlist of tools (empty = all allowed)\"},\"blocked_tools\":{\"items\":{\"type\":\"string\"},\"type\":\"array\",\"title\":\"Blocked Tools\",\"description\":\"Blocklist of tools\"},\"max_steps\":{\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"null\"}],\"title\":\"Max Steps\",\"description\":\"Maximum steps limit\"},\"max_tool_calls\":{\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"null\"}],\"title\":\"Max Tool Calls\",\"description\":\"Maximum tool calls limit\"},\"max_consecutive_errors\":{\"type\":\"integer\",\"title\":\"Max Consecutive Errors\",\"description\":\"Max consecutive errors before blocking\",\"default\":3},\"argument_rules\":{\"additionalProperties\":{\"items\":{\"$ref\":\"#/components/schemas/ArgumentRule\"},\"type\":\"array\"},\"type\":\"object\",\"title\":\"Argument Rules\",\"description\":\"Argument validation rules per tool\"}},\"type\":\"object\",\"title\":\"ToolPolicyConfigResponse\",\"description\":\"Response with tool_policy specific configuration\"},\"ToolPolicyConfigUpdate\":{\"properties\":{\"allowed_tools\":{\"anyOf\":[{\"items\":{\"type\":\"string\"},\"type\":\"array\"},{\"type\":\"null\"}],\"title\":\"Allowed Tools\",\"description\":\"Allowlist of tools\"},\"blocked_tools\":{\"anyOf\":[{\"items\":{\"type\":\"string\"},\"type\":\"array\"},{\"type\":\"null\"}],\"title\":\"Blocked Tools\",\"description\":\"Blocklist of tools\"},\"max_steps\":{\"anyOf\":[{\"type\":\"integer\",\"maximum\":1000.0,\"minimum\":1.0},{\"type\":\"null\"}],\"title\":\"Max Steps\",\"description\":\"Maximum steps limit\"},\"max_tool_calls\":{\"anyOf\":[{\"type\":\"integer\",\"maximum\":1000.0,\"minimum\":1.0},{\"type\":\"null\"}],\"title\":\"Max Tool Calls\",\"description\":\"Maximum tool calls limit\"},\"max_consecutive_errors\":{\"anyOf\":[{\"type\":\"integer\",\"maximum\":100.0,\"minimum\":1.0},{\"type\":\"null\"}],\"title\":\"Max Consecutive Errors\",\"description\":\"Max consecutive errors\"}},\"additionalProperties\":false,\"type\":\"object\",\"title\":\"ToolPolicyConfigUpdate\",\"description\":\"Update tool_policy specific configuration\"},\"ToolResult\":{\"properties\":{\"tool_call_id\":{\"type\":\"string\",\"title\":\"Tool Call Id\"},\"tool_name\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Tool Name\"},\"tool_args\":{\"anyOf\":[{\"additionalProperties\":true,\"type\":\"object\"},{\"type\":\"null\"}],\"title\":\"Tool Args\"},\"success\":{\"type\":\"boolean\",\"title\":\"Success\",\"default\":true},\"output\":{\"anyOf\":[{},{\"type\":\"null\"}],\"title\":\"Output\"},\"error\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Error\"},\"execution_time_ms\":{\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"null\"}],\"title\":\"Execution Time Ms\"}},\"type\":\"object\",\"required\":[\"tool_call_id\"],\"title\":\"ToolResult\",\"description\":\"Tool execution result\"},\"ToolResultReport\":{\"properties\":{\"session_id\":{\"type\":\"string\",\"title\":\"Session Id\"},\"step\":{\"type\":\"integer\",\"minimum\":0.0,\"title\":\"Step\"},\"agent_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Agent Id\"},\"tool_call_id\":{\"type\":\"string\",\"title\":\"Tool Call Id\"},\"tool_name\":{\"type\":\"string\",\"title\":\"Tool Name\"},\"tool_args\":{\"additionalProperties\":true,\"type\":\"object\",\"title\":\"Tool Args\"},\"result\":{\"title\":\"Result\"},\"success\":{\"type\":\"boolean\",\"title\":\"Success\",\"default\":true},\"error\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Error\"},\"execution_time_ms\":{\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"null\"}],\"title\":\"Execution Time Ms\"}},\"type\":\"object\",\"required\":[\"session_id\",\"step\",\"tool_call_id\",\"tool_name\"],\"title\":\"ToolResultReport\",\"description\":\"Report of tool execution result\"},\"UserRead\":{\"properties\":{\"login\":{\"type\":\"string\",\"title\":\"Login\"},\"role\":{\"type\":\"string\",\"title\":\"Role\"},\"permissions\":{\"items\":{\"type\":\"string\"},\"type\":\"array\",\"title\":\"Permissions\"},\"id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Id\"},\"created_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Created At\"},\"updated_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Updated At\"}},\"type\":\"object\",\"required\":[\"login\",\"role\",\"id\",\"created_at\",\"updated_at\"],\"title\":\"UserRead\"},\"ValidationError\":{\"properties\":{\"loc\":{\"items\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"integer\"}]},\"type\":\"array\",\"title\":\"Location\"},\"msg\":{\"type\":\"string\",\"title\":\"Message\"},\"type\":{\"type\":\"string\",\"title\":\"Error Type\"}},\"type\":\"object\",\"required\":[\"loc\",\"msg\",\"type\"],\"title\":\"ValidationError\"},\"src__schemas__event__ToolCall\":{\"properties\":{\"id\":{\"type\":\"string\",\"title\":\"Id\"},\"name\":{\"type\":\"string\",\"title\":\"Name\"},\"arguments\":{\"additionalProperties\":true,\"type\":\"object\",\"title\":\"Arguments\"},\"server\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Server\"}},\"type\":\"object\",\"required\":[\"name\"],\"title\":\"ToolCall\",\"description\":\"Tool call structure\"},\"src__schemas__openai__ToolCall\":{\"properties\":{\"id\":{\"type\":\"string\",\"title\":\"Id\"},\"type\":{\"type\":\"string\",\"const\":\"function\",\"title\":\"Type\",\"default\":\"function\"},\"function\":{\"$ref\":\"#/components/schemas/FunctionCall\"}},\"type\":\"object\",\"required\":[\"id\",\"function\"],\"title\":\"ToolCall\",\"description\":\"Tool call from assistant\"}}}}","stderr":"","interrupted":false,"isImage":false}} +[2026-01-25T16:10:52.939Z] [INFO] {"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01MXXiNf4HoGhNRo4Gd1LsVL","type":"tool_result","content":"\nOutput too large (115KB). Full output saved to: /home/hive/.claude/projects/-tmp-gh-issue-solver-1769357403129/97387dbe-7909-417c-bea8-f62ff0bebdd6/tool-results/toolu_01MXXiNf4HoGhNRo4Gd1LsVL.txt\n\nPreview (first 2KB):\n1:{\"openapi\":\"3.1.0\",\"info\":{\"title\":\"Egida Platform\",\"description\":\"\\n## Egida Platform - Agent Security Firewall\\n\\n### API Endpoints\\n\\n**LLM Proxy (OpenAI-compatible):**\\n- `POST /v1/chat/completions` - Chat completions with security checks\\n- `GET /v1/models` - List available models\\n\\n**Management API:**\\n- `POST /api/v1/events` - Process agent events\\n- `POST /api/v1/tools/check` - Check tool call (SDK mode)\\n- `GET /api/v1/sessions` - List sessions\\n- `GET /api/v1/incidents` - List incidents\\n \",\"version\":\"0.1.0\"},\"paths\":{\"/v1/chat/completions\":{\"post\":{\"tags\":[\"Chat Completions\"],\"summary\":\"Chat Completions\",\"description\":\"OpenAI-compatible chat completions endpoint.\\n\\nThis endpoint:\\n1. Receives requests in OpenAI format\\n2. Checks messages against security scenarios (PRE)\\n3. Forwards to LLM provider\\n4. Checks response against scenarios (POST)\\n5. Returns response to client\\n\\nHeaders:\\n- Authorization: API key for LLM provider (not needed for GigaChat if configured)\\n- X-Provider: LLM provider (openai, anthropic, azure, gigachat, local)\\n- X-Session-ID: Session identifier for tracking\\n- X-Agent-ID: Agent identifier\\n- X-Project-ID: Project identifier\\n\\nGigaChat Usage:\\n- Set X-Provider: gigachat\\n- Configure GIGACHAT_CLIENT_ID and GIGACHAT_CLIENT_SECRET in .env\\n- Token is obtained automatically via OAuth2\",\"operationId\":\"chat_completions_v1_chat_completions_post\",\"parameters\":[{\"name\":\"authorization\",\"in\":\"header\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Authorization\"}},{\"name\":\"X-API-Key\",\"in\":\"header\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"X-Api-Key\"}},{\"name\":\"X-Provider\",\"in\":\"header\",\"required\":false,\"schema\":{\"type\":\"string\",\"default\":\"gigachat\",\"title\":\"X-Provider\"}},{\"name\":\"X-Session-ID\",\"in\":\"header\",\"required\":false,\"schema\":{\"type\":\"string\",\"default\":\"swagger-test\",\"title\":\"X-Session-Id\"}},{\"name\":\"X-Agent-ID\",\"in\":\"header\",\"required\":false,\"schema\":\n...\n","is_error":false}]},"parent_tool_use_id":null,"session_id":"97387dbe-7909-417c-bea8-f62ff0bebdd6","uuid":"448508fb-fdd3-416c-bf87-5efbac50803b","tool_use_result":{"stdout":"1:{\"openapi\":\"3.1.0\",\"info\":{\"title\":\"Egida Platform\",\"description\":\"\\n## Egida Platform - Agent Security Firewall\\n\\n### API Endpoints\\n\\n**LLM Proxy (OpenAI-compatible):**\\n- `POST /v1/chat/completions` - Chat completions with security checks\\n- `GET /v1/models` - List available models\\n\\n**Management API:**\\n- `POST /api/v1/events` - Process agent events\\n- `POST /api/v1/tools/check` - Check tool call (SDK mode)\\n- `GET /api/v1/sessions` - List sessions\\n- `GET /api/v1/incidents` - List incidents\\n \",\"version\":\"0.1.0\"},\"paths\":{\"/v1/chat/completions\":{\"post\":{\"tags\":[\"Chat Completions\"],\"summary\":\"Chat Completions\",\"description\":\"OpenAI-compatible chat completions endpoint.\\n\\nThis endpoint:\\n1. Receives requests in OpenAI format\\n2. Checks messages against security scenarios (PRE)\\n3. Forwards to LLM provider\\n4. Checks response against scenarios (POST)\\n5. Returns response to client\\n\\nHeaders:\\n- Authorization: API key for LLM provider (not needed for GigaChat if configured)\\n- X-Provider: LLM provider (openai, anthropic, azure, gigachat, local)\\n- X-Session-ID: Session identifier for tracking\\n- X-Agent-ID: Agent identifier\\n- X-Project-ID: Project identifier\\n\\nGigaChat Usage:\\n- Set X-Provider: gigachat\\n- Configure GIGACHAT_CLIENT_ID and GIGACHAT_CLIENT_SECRET in .env\\n- Token is obtained automatically via OAuth2\",\"operationId\":\"chat_completions_v1_chat_completions_post\",\"parameters\":[{\"name\":\"authorization\",\"in\":\"header\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Authorization\"}},{\"name\":\"X-API-Key\",\"in\":\"header\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"X-Api-Key\"}},{\"name\":\"X-Provider\",\"in\":\"header\",\"required\":false,\"schema\":{\"type\":\"string\",\"default\":\"gigachat\",\"title\":\"X-Provider\"}},{\"name\":\"X-Session-ID\",\"in\":\"header\",\"required\":false,\"schema\":{\"type\":\"string\",\"default\":\"swagger-test\",\"title\":\"X-Session-Id\"}},{\"name\":\"X-Agent-ID\",\"in\":\"header\",\"required\":false,\"schema\":{\"type\":\"string\",\"default\":\"test-agent\",\"title\":\"X-Agent-Id\"}},{\"name\":\"X-Project-ID\",\"in\":\"header\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"X-Project-Id\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ChatCompletionRequest\"}}}},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/v1/models\":{\"get\":{\"tags\":[\"Chat Completions\"],\"summary\":\"List Models\",\"description\":\"List available models.\\nReturns a simplified list - actual models depend on provider.\",\"operationId\":\"list_models_v1_models_get\",\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{}}}}}}},\"/api/v1/auth/login\":{\"post\":{\"tags\":[\"auth\"],\"summary\":\"Login\",\"operationId\":\"login_api_v1_auth_login_post\",\"requestBody\":{\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/LoginRequest\"}}},\"required\":true},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/LoginResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/health\":{\"get\":{\"tags\":[\"Health\"],\"summary\":\"Health Check\",\"description\":\"Basic health check\",\"operationId\":\"health_check_api_v1_health_get\",\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{}}}}}}},\"/api/v1/ready\":{\"get\":{\"tags\":[\"Health\"],\"summary\":\"Readiness Check\",\"description\":\"Readiness check with dependencies\",\"operationId\":\"readiness_check_api_v1_ready_get\",\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{}}}}}}},\"/api/v1/events\":{\"post\":{\"tags\":[\"Events\"],\"summary\":\"Process Event\",\"description\":\"Process an agent event.\\n\\nThis is the main endpoint for receiving events from agents.\\nEvents are validated, processed through scenarios, and stored.\",\"operationId\":\"process_event_api_v1_events_post\",\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AgentEventCreate\"}}}},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ProcessingResult\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}},\"get\":{\"tags\":[\"Events\"],\"summary\":\"List Events\",\"description\":\"List events with filters\",\"operationId\":\"list_events_api_v1_events_get\",\"parameters\":[{\"name\":\"session_id\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Session Id\"}},{\"name\":\"project_id\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Project Id\"}},{\"name\":\"agent_id\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Agent Id\"}},{\"name\":\"event_type\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/EventType\"},{\"type\":\"null\"}],\"title\":\"Event Type\"}},{\"name\":\"from_time\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"date-time\"},{\"type\":\"null\"}],\"title\":\"From Time\"}},{\"name\":\"to_time\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"date-time\"},{\"type\":\"null\"}],\"title\":\"To Time\"}},{\"name\":\"skip\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"integer\",\"minimum\":0,\"default\":0,\"title\":\"Skip\"}},{\"name\":\"limit\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"integer\",\"maximum\":1000,\"minimum\":1,\"default\":100,\"title\":\"Limit\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/AgentEventResponse\"},\"title\":\"Response List Events Api V1 Events Get\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/events/batch/{batch_id}\":{\"get\":{\"tags\":[\"Events\"],\"summary\":\"List Events By Batch\",\"description\":\"List events for a batch\",\"operationId\":\"list_events_by_batch_api_v1_events_batch__batch_id__get\",\"parameters\":[{\"name\":\"batch_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Batch Id\"}},{\"name\":\"skip\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"integer\",\"minimum\":0,\"default\":0,\"title\":\"Skip\"}},{\"name\":\"limit\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"integer\",\"maximum\":1000,\"minimum\":1,\"default\":1000,\"title\":\"Limit\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/AgentEventResponse\"},\"title\":\"Response List Events By Batch Api V1 Events Batch Batch Id Get\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/events/{event_id}\":{\"get\":{\"tags\":[\"Events\"],\"summary\":\"Get Event\",\"description\":\"Get event by ID\",\"operationId\":\"get_event_api_v1_events__event_id__get\",\"parameters\":[{\"name\":\"event_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Event Id\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AgentEventResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/tools/check\":{\"post\":{\"tags\":[\"Tools\"],\"summary\":\"Check Tool Call\",\"description\":\"Check tool call BEFORE execution (SDK mode).\\n\\nThis endpoint is called by the SDK before executing a tool.\\nIt validates the tool call against policies and returns a decision.\\n\\nIf decision is BLOCK, the tool should NOT be executed.\\nIf decision is MODIFY, use the modified_args for execution.\\nIf decision is ALLOW, proceed with execution.\",\"operationId\":\"check_tool_call_api_v1_tools_check_post\",\"requestBody\":{\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ToolCheckRequest\"}}},\"required\":true},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ToolCheckResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/tools/result\":{\"post\":{\"tags\":[\"Tools\"],\"summary\":\"Report Tool Result\",\"description\":\"Report tool execution result (SDK mode).\\n\\nThis endpoint is called by the SDK after tool execution.\\nIt checks the result for potential leaks and other issues.\",\"operationId\":\"report_tool_result_api_v1_tools_result_post\",\"requestBody\":{\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ToolResultReport\"}}},\"required\":true},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ProcessingResult\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/incidents\":{\"get\":{\"tags\":[\"Incidents\"],\"summary\":\"List Incidents\",\"description\":\"List incidents with filters and pagination\",\"operationId\":\"list_incidents_api_v1_incidents_get\",\"parameters\":[{\"name\":\"project_id\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Project Id\"}},{\"name\":\"agent_id\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Agent Id\"}},{\"name\":\"scenario_id\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Scenario Id\"}},{\"name\":\"rule_id\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Rule Id\"}},{\"name\":\"severity\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/Severity\"},{\"type\":\"null\"}],\"title\":\"Severity\"}},{\"name\":\"status\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/IncidentStatus\"},{\"type\":\"null\"}],\"title\":\"Status\"}},{\"name\":\"from\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"date-time\"},{\"type\":\"null\"}],\"title\":\"From\"}},{\"name\":\"to\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"date-time\"},{\"type\":\"null\"}],\"title\":\"To\"}},{\"name\":\"page\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"integer\",\"minimum\":1,\"default\":1,\"title\":\"Page\"}},{\"name\":\"page_size\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"integer\",\"maximum\":100,\"minimum\":1,\"default\":50,\"title\":\"Page Size\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/IncidentListResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/incidents/stats\":{\"get\":{\"tags\":[\"Incidents\"],\"summary\":\"Get Incident Stats\",\"description\":\"Get incident stats with filters\",\"operationId\":\"get_incident_stats_api_v1_incidents_stats_get\",\"parameters\":[{\"name\":\"project_id\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Project Id\"}},{\"name\":\"agent_id\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Agent Id\"}},{\"name\":\"scenario_id\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Scenario Id\"}},{\"name\":\"rule_id\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Rule Id\"}},{\"name\":\"severity\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/Severity\"},{\"type\":\"null\"}],\"title\":\"Severity\"}},{\"name\":\"status\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/IncidentStatus\"},{\"type\":\"null\"}],\"title\":\"Status\"}},{\"name\":\"from\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"date-time\"},{\"type\":\"null\"}],\"title\":\"From\"}},{\"name\":\"to\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"date-time\"},{\"type\":\"null\"}],\"title\":\"To\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/IncidentStatsResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/incidents/{incident_id}\":{\"get\":{\"tags\":[\"Incidents\"],\"summary\":\"Get Incident\",\"description\":\"Get incident by ID\",\"operationId\":\"get_incident_api_v1_incidents__incident_id__get\",\"parameters\":[{\"name\":\"incident_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Incident Id\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/IncidentResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}},\"patch\":{\"tags\":[\"Incidents\"],\"summary\":\"Update Incident\",\"description\":\"Update incident (status, resolution)\",\"operationId\":\"update_incident_api_v1_incidents__incident_id__patch\",\"parameters\":[{\"name\":\"incident_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Incident Id\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/IncidentUpdate\"}}}},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/IncidentResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/incidents/{incident_id}/batch-events\":{\"get\":{\"tags\":[\"Incidents\"],\"summary\":\"Get Incident Batch Events\",\"description\":\"Get all events for incident's batch\",\"operationId\":\"get_incident_batch_events_api_v1_incidents__incident_id__batch_events_get\",\"parameters\":[{\"name\":\"incident_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Incident Id\"}},{\"name\":\"skip\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"integer\",\"minimum\":0,\"default\":0,\"title\":\"Skip\"}},{\"name\":\"limit\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"integer\",\"maximum\":1000,\"minimum\":1,\"default\":1000,\"title\":\"Limit\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/AgentEventResponse\"},\"title\":\"Response Get Incident Batch Events Api V1 Incidents Incident Id Batch Events Get\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/incidents/{incident_id}/matches/{match_id}\":{\"get\":{\"tags\":[\"Incidents\"],\"summary\":\"Get Incident Match Original\",\"description\":\"Get original match value for incident/match.\",\"operationId\":\"get_incident_match_original_api_v1_incidents__incident_id__matches__match_id__get\",\"parameters\":[{\"name\":\"incident_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Incident Id\"}},{\"name\":\"match_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"integer\",\"title\":\"Match Id\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/IncidentMatchOriginalResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/incidents/session/{session_id}\":{\"get\":{\"tags\":[\"Incidents\"],\"summary\":\"Get Session Incidents\",\"description\":\"Get all incidents for a session\",\"operationId\":\"get_session_incidents_api_v1_incidents_session__session_id__get\",\"parameters\":[{\"name\":\"session_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Session Id\"}},{\"name\":\"skip\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"integer\",\"minimum\":0,\"default\":0,\"title\":\"Skip\"}},{\"name\":\"limit\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"integer\",\"maximum\":1000,\"minimum\":1,\"default\":100,\"title\":\"Limit\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/IncidentResponse\"},\"title\":\"Response Get Session Incidents Api V1 Incidents Session Session Id Get\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/incidents/{incident_id}/review\":{\"post\":{\"tags\":[\"Incidents\"],\"summary\":\"Submit Incident Review\",\"description\":\"Submit a human review for an incident.\\nSets human_label and optionally notes, marks as reviewed.\\n\\nCan only be called for incidents with review_status != NO_REVIEW.\",\"operationId\":\"submit_incident_review_api_v1_incidents__incident_id__review_post\",\"parameters\":[{\"name\":\"incident_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Incident Id\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/IncidentReviewRequest\"}}}},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/IncidentResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}},\"get\":{\"tags\":[\"Incidents\"],\"summary\":\"Get Incident Review Detail\",\"description\":\"Get detailed review information for an incident.\\nIncludes:\\n- Review status and labels\\n- Static rule trigger info\\n- LLM detector results\\n- Trigger event (the event that caused the incident)\",\"operationId\":\"get_incident_review_detail_api_v1_incidents__incident_id__review_get\",\"parameters\":[{\"name\":\"incident_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Incident Id\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/IncidentReviewDetailResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/sessions\":{\"get\":{\"tags\":[\"Sessions\"],\"summary\":\"List Sessions\",\"description\":\"List sessions with basic info\",\"operationId\":\"list_sessions_api_v1_sessions_get\",\"parameters\":[{\"name\":\"project_id\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Project Id\"}},{\"name\":\"agent_id\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Agent Id\"}},{\"name\":\"skip\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"integer\",\"minimum\":0,\"default\":0,\"title\":\"Skip\"}},{\"name\":\"limit\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"integer\",\"maximum\":100,\"minimum\":1,\"default\":50,\"title\":\"Limit\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/SessionSummary\"},\"title\":\"Response List Sessions Api V1 Sessions Get\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/sessions/{session_id}\":{\"get\":{\"tags\":[\"Sessions\"],\"summary\":\"Get Session\",\"description\":\"Get session details with events\",\"operationId\":\"get_session_api_v1_sessions__session_id__get\",\"parameters\":[{\"name\":\"session_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Session Id\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/SessionDetail\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/sessions/{session_id}/context\":{\"get\":{\"tags\":[\"Sessions\"],\"summary\":\"Get Session Context\",\"description\":\"Get session runtime context (from Redis)\",\"operationId\":\"get_session_context_api_v1_sessions__session_id__context_get\",\"parameters\":[{\"name\":\"se +[2026-01-25T16:10:52.952Z] [INFO] ssion_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Session Id\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/SessionContext\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}},\"delete\":{\"tags\":[\"Sessions\"],\"summary\":\"Clear Session Context\",\"description\":\"Clear session context from Redis\",\"operationId\":\"clear_session_context_api_v1_sessions__session_id__context_delete\",\"parameters\":[{\"name\":\"session_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Session Id\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/scenarios\":{\"get\":{\"tags\":[\"Scenarios\"],\"summary\":\"List Scenarios\",\"description\":\"List all available scenarios\",\"operationId\":\"list_scenarios_api_v1_scenarios_get\",\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ScenarioListResponse\"}}}}}}},\"/api/v1/scenarios/leak_detection/policies\":{\"get\":{\"tags\":[\"Scenarios\"],\"summary\":\"List Leak Detection Policies\",\"description\":\"List all policy rules for leak_detection scenario\",\"operationId\":\"list_leak_detection_policies_api_v1_scenarios_leak_detection_policies_get\",\"parameters\":[{\"name\":\"category\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"description\":\"Filter by category: secret, pii\",\"title\":\"Category\"},\"description\":\"Filter by category: secret, pii\"},{\"name\":\"enabled\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"boolean\"},{\"type\":\"null\"}],\"description\":\"Filter by enabled status\",\"title\":\"Enabled\"},\"description\":\"Filter by enabled status\"}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PolicyRuleListResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}},\"post\":{\"tags\":[\"Scenarios\"],\"summary\":\"Create Leak Detection Policy\",\"description\":\"Create a new policy rule for leak_detection scenario.\\n\\nThe rule will be added to the appropriate policy file based on category.\",\"operationId\":\"create_leak_detection_policy_api_v1_scenarios_leak_detection_policies_post\",\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PolicyRuleCreate\"}}}},\"responses\":{\"201\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PolicyRule\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/scenarios/leak_detection/policies/{rule_id}\":{\"get\":{\"tags\":[\"Scenarios\"],\"summary\":\"Get Policy Rule\",\"description\":\"Get single policy rule by ID\",\"operationId\":\"get_policy_rule_api_v1_scenarios_leak_detection_policies__rule_id__get\",\"parameters\":[{\"name\":\"rule_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Rule Id\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PolicyRule\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}},\"patch\":{\"tags\":[\"Scenarios\"],\"summary\":\"Update Policy Rule\",\"description\":\"Update policy rule.\\n\\nEditable fields: enabled, action, severity, pattern, flags, message, redact_with.\\nChanges are persisted to YAML files and scenarios are reloaded.\",\"operationId\":\"update_policy_rule_api_v1_scenarios_leak_detection_policies__rule_id__patch\",\"parameters\":[{\"name\":\"rule_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Rule Id\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PolicyRuleUpdate\"}}}},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PolicyRule\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/scenarios/prompt_injection/policies\":{\"get\":{\"tags\":[\"Scenarios\"],\"summary\":\"List Prompt Injection Policies\",\"description\":\"List all policy rules for prompt_injection scenario\",\"operationId\":\"list_prompt_injection_policies_api_v1_scenarios_prompt_injection_policies_get\",\"parameters\":[{\"name\":\"category\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"description\":\"Filter by category\",\"title\":\"Category\"},\"description\":\"Filter by category\"},{\"name\":\"enabled\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"boolean\"},{\"type\":\"null\"}],\"description\":\"Filter by enabled status\",\"title\":\"Enabled\"},\"description\":\"Filter by enabled status\"}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PolicyRuleListResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}},\"post\":{\"tags\":[\"Scenarios\"],\"summary\":\"Create Prompt Injection Policy\",\"description\":\"Create a new policy rule for prompt_injection scenario.\\n\\nThe rule will be added to injection.yaml policy file.\",\"operationId\":\"create_prompt_injection_policy_api_v1_scenarios_prompt_injection_policies_post\",\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PolicyRuleCreate\"}}}},\"responses\":{\"201\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PolicyRule\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/scenarios/prompt_injection/policies/{rule_id}\":{\"get\":{\"tags\":[\"Scenarios\"],\"summary\":\"Get Prompt Injection Policy Rule\",\"description\":\"Get single prompt_injection policy rule by ID\",\"operationId\":\"get_prompt_injection_policy_rule_api_v1_scenarios_prompt_injection_policies__rule_id__get\",\"parameters\":[{\"name\":\"rule_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Rule Id\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PolicyRule\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}},\"patch\":{\"tags\":[\"Scenarios\"],\"summary\":\"Update Prompt Injection Policy Rule\",\"description\":\"Update prompt_injection policy rule.\\n\\nEditable fields: enabled, action, severity, pattern, flags, message, redact_with.\\nChanges are persisted to YAML files and scenarios are reloaded.\",\"operationId\":\"update_prompt_injection_policy_rule_api_v1_scenarios_prompt_injection_policies__rule_id__patch\",\"parameters\":[{\"name\":\"rule_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Rule Id\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PolicyRuleUpdate\"}}}},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PolicyRule\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/scenarios/tool_policy/tool-config\":{\"get\":{\"tags\":[\"Scenarios\"],\"summary\":\"Get Tool Policy Config\",\"description\":\"Get tool_policy specific configuration.\\n\\nReturns configuration for tool allowlists, blocklists, limits, and argument validation rules.\",\"operationId\":\"get_tool_policy_config_api_v1_scenarios_tool_policy_tool_config_get\",\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ToolPolicyConfigResponse\"}}}}}},\"patch\":{\"tags\":[\"Scenarios\"],\"summary\":\"Update Tool Policy Config\",\"description\":\"Update tool_policy specific configuration.\\n\\nEditable fields:\\n- allowed_tools: List of allowed tool names (empty = all allowed)\\n- blocked_tools: List of blocked tool names\\n- max_steps: Maximum steps limit\\n- max_tool_calls: Maximum tool calls limit\\n- max_consecutive_errors: Max consecutive errors before blocking\",\"operationId\":\"update_tool_policy_config_api_v1_scenarios_tool_policy_tool_config_patch\",\"requestBody\":{\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ToolPolicyConfigUpdate\"}}},\"required\":true},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ToolPolicyConfigResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/scenarios/tool_policy/argument-rules/{tool_name}\":{\"post\":{\"tags\":[\"Scenarios\"],\"summary\":\"Add Argument Rule\",\"description\":\"Add an argument validation rule for a specific tool.\\n\\nRules define regex patterns to validate tool arguments.\\nAction can be 'allow' (pattern must match) or 'block' (pattern triggers block).\",\"operationId\":\"add_argument_rule_api_v1_scenarios_tool_policy_argument_rules__tool_name__post\",\"parameters\":[{\"name\":\"tool_name\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Tool Name\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ArgumentRuleCreate\"}}}},\"responses\":{\"201\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ToolPolicyConfigResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/scenarios/tool_policy/argument-rules/{tool_name}/{rule_index}\":{\"delete\":{\"tags\":[\"Scenarios\"],\"summary\":\"Delete Argument Rule\",\"description\":\"Delete an argument validation rule by its index.\\n\\nRule indices start at 0.\",\"operationId\":\"delete_argument_rule_api_v1_scenarios_tool_policy_argument_rules__tool_name___rule_index__delete\",\"parameters\":[{\"name\":\"tool_name\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Tool Name\"}},{\"name\":\"rule_index\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"integer\",\"title\":\"Rule Index\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ToolPolicyConfigResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}},\"patch\":{\"tags\":[\"Scenarios\"],\"summary\":\"Update Argument Rule\",\"description\":\"Update an existing argument validation rule.\\n\\nEditable fields: field, pattern, action, message.\",\"operationId\":\"update_argument_rule_api_v1_scenarios_tool_policy_argument_rules__tool_name___rule_index__patch\",\"parameters\":[{\"name\":\"tool_name\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Tool Name\"}},{\"name\":\"rule_index\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"integer\",\"title\":\"Rule Index\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ArgumentRuleUpdate\"}}}},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ToolPolicyConfigResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/scenarios/tool_policy/argument-rules/{tool_name}/reorder\":{\"post\":{\"tags\":[\"Scenarios\"],\"summary\":\"Reorder Argument Rules\",\"description\":\"Reorder argument rules for a tool.\\n\\nProvide a list of indices representing the new order.\",\"operationId\":\"reorder_argument_rules_api_v1_scenarios_tool_policy_argument_rules__tool_name__reorder_post\",\"parameters\":[{\"name\":\"tool_name\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Tool Name\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ArgumentRulesReorder\"}}}},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ToolPolicyConfigResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/scenarios/tool_policy/argument-rules/{tool_name}/{rule_index}/move\":{\"post\":{\"tags\":[\"Scenarios\"],\"summary\":\"Move Argument Rule\",\"description\":\"Move an argument rule up or down in the list.\\n\\nDirection must be 'up' or 'down'.\",\"operationId\":\"move_argument_rule_api_v1_scenarios_tool_policy_argument_rules__tool_name___rule_index__move_post\",\"parameters\":[{\"name\":\"tool_name\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Tool Name\"}},{\"name\":\"rule_index\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"integer\",\"title\":\"Rule Index\"}},{\"name\":\"direction\",\"in\":\"query\",\"required\":true,\"schema\":{\"type\":\"string\",\"pattern\":\"^(up|down)$\",\"description\":\"Direction to move: 'up' or 'down'\",\"title\":\"Direction\"},\"description\":\"Direction to move: 'up' or 'down'\"}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ToolPolicyConfigResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/scenarios/{scenario_id}\":{\"get\":{\"tags\":[\"Scenarios\"],\"summary\":\"Get Scenario\",\"description\":\"Get scenario details by ID\",\"operationId\":\"get_scenario_api_v1_scenarios__scenario_id__get\",\"parameters\":[{\"name\":\"scenario_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Scenario Id\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ScenarioDetail\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/scenarios/{scenario_id}/static-rules\":{\"patch\":{\"tags\":[\"Scenarios\"],\"summary\":\"Toggle Static Rules\",\"description\":\"Toggle static rules for a scenario.\\n\\nStatic rules include regex patterns, blocklists, allowlists, limits, etc.\\nChanges are persisted to YAML config files and scenarios are reloaded.\",\"operationId\":\"toggle_static_rules_api_v1_scenarios__scenario_id__static_rules_patch\",\"parameters\":[{\"name\":\"scenario_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Scenario Id\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ScenarioToggleRequest\"}}}},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ScenarioToggleResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/scenarios/{scenario_id}/llm-detector\":{\"patch\":{\"tags\":[\"Scenarios\"],\"summary\":\"Toggle Llm Detector\",\"description\":\"Toggle LLM detector for a scenario.\\n\\nLLM detector uses language models to analyze events for security threats.\\nChanges are persisted to YAML config files and scenarios are reloaded.\",\"operationId\":\"toggle_llm_detector_api_v1_scenarios__scenario_id__llm_detector_patch\",\"parameters\":[{\"name\":\"scenario_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Scenario Id\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ScenarioToggleRequest\"}}}},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ScenarioToggleResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/scenarios/{scenario_id}/llm-config\":{\"get\":{\"tags\":[\"Scenarios\"],\"summary\":\"Get Llm Config\",\"description\":\"Get LLM detector configuration for a scenario.\\n\\nReturns configuration parameters for the LLM detector including:\\n- llm_detector_name: Name of the detector to use\\n- llm_detector_threshold: Confidence threshold (0.0-1.0)\\n- llm_message_mode: Message selection mode (single/from_user_message)\\n- llm_prompt: Scenario-specific prompt\",\"operationId\":\"get_llm_config_api_v1_scenarios__scenario_id__llm_config_get\",\"parameters\":[{\"name\":\"scenario_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Scenario Id\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ScenarioLLMConfigResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}},\"patch\":{\"tags\":[\"Scenarios\"],\"summary\":\"Update Llm Config\",\"description\":\"Update LLM detector configuration for a scenario.\\n\\nEditable fields:\\n- llm_detector_name: Name of the detector to use (from llm_detector_configs)\\n- llm_detector_threshold: Confidence threshold (0.0-1.0)\\n- llm_message_mode: Message selection mode (single/from_user_message)\\n- llm_prompt: Scenario-specific prompt\\n\\nChanges are persisted to YAML config files and scenarios are reloaded.\",\"operationId\":\"update_llm_config_api_v1_scenarios__scenario_id__llm_config_patch\",\"parameters\":[{\"name\":\"scenario_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Scenario Id\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ScenarioLLMConfigUpdate\"}}}},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ScenarioLLMConfigResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/scenarios/{scenario_id}/base-config\":{\"get\":{\"tags\":[\"Scenarios\"],\"summary\":\"Get Base Config\",\"description\":\"Get base configuration for a scenario.\\n\\nReturns base configuration parameters:\\n- priority: Scenario priority (lower = higher priority)\\n- supported_event_types: Event types this scenario processes\",\"operationId\":\"get_base_config_api_v1_scenarios__scenario_id__base_config_get\",\"parameters\":[{\"name\":\"scenario_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Scenario Id\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ScenarioBaseConfigResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}},\"patch\":{\"tags\":[\"Scenarios\"],\"summary\":\"Update Base Config\",\"description\":\"Update base configuration for a scenario.\\n\\nEditable fields:\\n- priority: Scenario priority (lower = higher priority, 1-1000)\\n- supported_event_types: Event types this scenario should process\\n\\nChanges are persisted to YAML config files and scenarios are reloaded.\",\"operationId\":\"update_base_config_api_v1_scenarios__scenario_id__base_config_patch\",\"parameters\":[{\"name\":\"scenario_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Scenario Id\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ScenarioBaseConfigUpdate\"}}}},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ScenarioBaseConfigResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/llm-detectors\":{\"get\":{\"tags\":[\"LLM Detectors\"],\"summary\":\"List Detectors\",\"description\":\"List LLM detector configurations.\\n\\n- **project_id**: Filter by project ID (optional)\\n- **include_global**: Include global detectors when filtering by project\\n- **enabled**: Filter by enabled status\\n- **provider**: Filter by LLM provider\",\"operationId\":\"list_detectors_api_v1_llm_detectors_get\",\"parameters\":[{\"name\":\"project_id\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"description\":\"Filter by project ID\",\"title\":\"Project Id\"},\"description\":\"Filter by project ID\"},{\"name\":\"include_global\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"Include global detectors\",\"default\":true,\"title\":\"Include Global\"},\"description\":\"Include global detectors\"},{\"name\":\"enabled\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"boolean\"},{\"type\":\"null\"}],\"description\":\"Filter by enabled status\",\"title\":\"Enabled\"},\"description\":\"Filter by enabled status\"},{\"name\":\"provider\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/LLMProvider\"},{\"type\":\"null\"}],\"description\":\"Filter by provider\",\"title\":\"Provider\"},\"description\":\"Filter by provider\"},{\"name\":\"page\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"integer\",\"minimum\":1,\"default\":1,\"title\":\"Page\"}},{\"name\":\"page_size\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"integer\",\"maximum\":100,\"minimum\":1,\"default\":20,\"title\":\"Page Size\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/LLMDetectorConfigList\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}},\"post\":{\"tags\":[\"LLM Detectors\"],\"summary\":\"Create Detector\",\"description\":\"Create a new LLM detector configuration.\\n\\nAPI key will be encrypted before storage.\",\"operationId\":\"create_detector_api_v1_llm_detectors_post\",\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/LLMDetectorConfigCreate\"}}}},\"responses\":{\"201\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/LLMDetectorConfigResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/llm-detectors/{detector_id}\":{\"get\":{\"tags\":[\"LLM Detectors\"],\"summary\":\"Get Detector\",\"description\":\"Get LLM detector configuration by ID.\",\"operationId\":\"get_detector_api_v1_llm_detectors__detector_id__get\",\"parameters\":[{\"name\":\"detector_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Detector Id\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/LLMDetectorConfigResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}},\"patch\":{\"tags\":[\"LLM Detectors\"],\"summary\":\"Update Detector\",\"description\":\"Update LLM detector configuration.\\n\\nIf api_key is provided, it will be re-encrypted.\",\"operationId\":\"update_detector_api_v1_llm_detectors__detector_id__patch\",\"parameters\":[{\"name\":\"detector_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Detector Id\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/LLMDetectorConfigUpdate\"}}}},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/LLMDetectorConfigResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}},\"delete\":{\"tags\":[\"LLM Detectors\"],\"summary\":\"Delete Detector\",\"description\":\"Delete LLM detector configuration.\",\"operationId\":\"delete_detector_api_v1_llm_detectors__detector_id__delete\",\"parameters\":[{\"name\":\"detector_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Detector Id\"}}],\"responses\":{\"204\":{\"description\":\"Successful Response\"},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/llm-detectors/by-name/{name}\":{\"get\":{\"tags\":[\"LLM Detectors\"],\"summary\":\"Get Detector By Name\",\"description\":\"Get LLM detector configuration by name.\\n\\nIf project_id is provided, tries project-specific first, then global.\",\"operationId\":\"get_detector_by_name_api_v1_llm_detectors_by_name__name__get\",\"parameters\":[{\"name\":\"name\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"title\":\"Name\"}},{\"name\":\"project_id\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Project Id\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/LLMDetectorConfigResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/llm-detectors/test\":{\"post\":{\"tags\":[\"LLM Detectors\"],\"summary\":\"Test Detection\",\"description\":\"Test LLM detection with specified detector.\\n\\nUseful for testing detector configurations before using in scenarios.\",\"operationId\":\"test_detection_api_v1_llm_detectors_test_post\",\"requestBody\":{\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/DetectionRequest\"}}},\"required\":true},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/DetectionResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/reviews/detectors\":{\"get\":{\"tags\":[\"Reviews\"],\"summary\":\"List Detector Names\",\"description\":\"Get list of distinct detector names available for filtering\",\"operationId\":\"list_detector_names_api_v1_reviews_detectors_get\",\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"items\":{\"type\":\"string\"},\"type\":\"array\",\"title\":\"Response List Detector Names Api V1 Reviews Detectors Get\"}}}}}}},\"/api/v1/reviews\":{\"get\":{\"tags\":[\"Reviews\"],\"summary\":\"List Reviews\",\"description\":\"Get all incidents that have review status.\\nReturns two lists:\\n- pending_review: incidents requiring human review (review_status = REVIEW_REQUIRED)\\n- already_reviewed: incidents that have been reviewed (review_status = ALREADY_REVIEWED)\\n\\nFilters:\\n- label_filter: 'correct' (tp/tn), 'incorrect' (fp/fn), or specific label (tp, tn, fp, fn)\\n- detector_name: filter by LLM detector name\",\"operationId\":\"list_reviews_api_v1_reviews_get\",\"parameters\":[{\"name\":\"pending_limit\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"integer\",\"maximum\":500,\"minimum\":1,\"description\":\"Max pending items\",\"default\":100,\"title\":\"Pending Limit\"},\"description\":\"Max pending items\"},{\"name\":\"reviewed_limit\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"integer\",\"maximum\":500,\"minimum\":1,\"description\":\"Max reviewed items\",\"default\":100,\"title\":\"Reviewed Limit\"},\"description\":\"Max reviewed items\"},{\"name\":\"label_filter\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"description\":\"Filter by label: 'correct' (tp/tn), 'incorrect' (fp/fn), or specific: tp, tn, fp, fn\",\"title\":\"Label Filter\"},\"description\":\"Filter by label: 'correct' (tp/tn), 'incorrect' (fp/fn), or specific: tp, tn, fp, fn\"},{\"name\":\"detector_name\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"description\":\"Filter by detector name\",\"title\":\"Detector Name\"},\"description\":\"Filter by detector name\"}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ReviewListResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/datasets/export\":{\"post\":{\"tags\":[\"Datasets\"],\"summary\":\"Export Dataset\",\"description\":\"Export reviewed incidents as JSONL dataset.\\n\\nFilters:\\n- scenario_id: Filter by scenario\\n- agent_name: Filter by agent name\\n\\nOutput format (JSONL):\\n- message_text: The text that was analyzed\\n- label: Human label (tp, fp, fn, tn)\\n- meta: {llm_label: safe/unsafe, created_at, reviewed_at}\",\"operationId\":\"export_dataset_api_v1_datasets_export_post\",\"requestBody\":{\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/DatasetExportRequest\"}}},\"required\":true},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/replay/time_interval\":{\"post\":{\"tags\":[\"Replay\"],\"summary\":\"Replay Time Interval\",\"description\":\"Replay all events in a time interval through security scenarios.\\n\\nThis will:\\n1. Find all events in the time range\\n2. Extract unique batch_ids\\n3. Process each batch with a COMMON replay_id\\n4. Create new incidents with from_replay: true marker\\n\\nDefault time range: last 24 hours.\",\"operationId\":\"replay_time_interval_api_v1_replay_time_interval_post\",\"requestBody\":{\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TimeIntervalReplayRequest\"}}},\"required\":true},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TimeIntervalReplayResult\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/replay/batch/{batch_id}\":{\"get\":{\"tags\":[\"Replay\"],\"summary\":\"Get Batch Info\",\"description\":\"Get information about an event batch.\\n\\nReturns batch metadata including event count and time range.\",\"operationId\":\"get_batch_info_api_v1_replay_batch__batch_id__get\",\"parameters\":[{\"name\":\"batch_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Batch Id\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BatchInfo\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/replay/{batch_id}\":{\"post\":{\"tags\":[\"Replay\"],\"summary\":\"Replay Batch\",\"description\":\"Replay a batch of events through security scenarios.\\n\\nThis will:\\n1. Get all events in the batch\\n2. Reconstruct session context for each event\\n3. Run all security scenarios\\n4. Create new incidents with from_replay: true marker\\n5. Create a Replay entity with optional notes\\n\\nDoes NOT:\\n- Modify original events\\n- Delete existing incidents\\n- Update Redis session context\\n\\nReturns:\\n ReplayResult with detailed results for each event and replay_id\",\"operationId\":\"replay_batch_api_v1_replay__batch_id__post\",\"parameters\":[{\"name\":\"batch_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Batch Id\"}}],\"requestBody\":{\"content\":{\"application/json\":{\"schema\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/ReplayRequest\"},{\"type\":\"null\"}],\"title\":\"Request\"}}}},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ReplayResult\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/replay/{replay_id}/metrics\":{\"get\":{\"tags\":[\"Replay\"],\"summary\":\"Get Replay Metrics\",\"description\":\"Get metrics for a replay session.\\n\\nReturns:\\n - incidents_count: Total number of incidents\\n - review_required_count: Incidents requiring review\\n - conflicts_count: Incidents where human label conflicts with decision\\n - precision_on_reviewed: TP / (TP + FP) on reviewed incidents\",\"operationId\":\"get_replay_metrics_api_v1_replay__replay_id__metrics_get\",\"parameters\":[{\"name\":\"replay_id\",\"in\":\"path\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Replay Id\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ReplayMetrics\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/replay\":{\"get\":{\"tags\":[\"Replay\"],\"summary\":\"List Replays\",\"description\":\"Get list of all replay sessions.\\n\\nReturns both BATCH and TIME_INTERVAL replays.\",\"operationId\":\"list_replays_api_v1_replay_get\",\"parameters\":[{\"name\":\"skip\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"integer\",\"minimum\":0,\"default\":0,\"title\":\"Skip\"}},{\"name\":\"limit\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"integer\",\"maximum\":200,\"minimum\":1,\"default\":50,\"title\":\"Limit\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ReplayListResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/simulate\":{\"post\":{\"tags\":[\"Simulate\"],\"summary\":\"Simulate Batch\",\"description\":\"Simulate a batch of events through security scenarios.\\n\\nThis endpoint allows static testing of security scenarios\\nwithout making actual LLM calls. Events are processed in order,\\nsaved to database, and incidents are created as usual.\\n\\nUse cases:\\n- Testing scenario configurations\\n- Regression testing with known event sequences\\n- Validating that specific patterns are blocked/allowed\\n\\nArgs:\\n request: Batch of events to simulate\\n\\nReturns:\\n SimulateResponse with results for each event and human-readable report\",\"operationId\":\"simulate_batch_api_v1_simulate_post\",\"requestBody\":{\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/SimulateRequest\"}}},\"required\":true},\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/SimulateResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}},\"/api/v1/admin/clear-database\":{\"post\":{\"tags\":[\"Admin\"],\"summary\":\"Clear Database\",\"description\":\"Clear all tables in database except alembic_version.\\nWARNING: This is a destructive operation!\",\"operationId\":\"clear_database_api_v1_admin_clear_database_post\",\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"additionalProperties\":true,\"type\":\"object\",\"title\":\"Response Clear Database Api V1 Admin Clear Database Post\"}}}}}}},\"/api/v1/audit\":{\"get\":{\"tags\":[\"Audit\"],\"summary\":\"List Audit Logs\",\"operationId\":\"list_audit_logs_api_v1_audit_get\",\"parameters\":[{\"name\":\"user_id\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"uuid\"},{\"type\":\"null\"}],\"title\":\"User Id\"}},{\"name\":\"action\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Action\"}},{\"name\":\"from\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"date-time\"},{\"type\":\"null\"}],\"title\":\"From\"}},{\"name\":\"to\",\"in\":\"query\",\"required\":false,\"schema\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"date-time\"},{\"type\":\"null\"}],\"title\":\"To\"}},{\"name\":\"page\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"integer\",\"minimum\":1,\"default\":1,\"title\":\"Page\"}},{\"name\":\"page_size\",\"in\":\"query\",\"required\":false,\"schema\":{\"type\":\"integer\",\"maximum\":200,\"minimum\":1,\"default\":50,\"title\":\"Page Size\"}}],\"responses\":{\"200\":{\"description\":\"Successful Response\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AuditLogListResponse\"}}}},\"422\":{\"description\":\"Validation Error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/HTTPValidationError\"}}}}}}}},\"components\":{\"schemas\":{\"AgentEventCreate\":{\"properties\":{\"session_id\":{\"type\":\"string\",\"title\":\"Session Id\"},\"step\":{\"type\":\"integer\",\"minimum\":0.0,\"title\":\"Step\"},\"event_type\":{\"$ref\":\"#/components/schemas/EventType\"},\"role\":{\"$ref\":\"#/components/schemas/Role\"},\"batch_id\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"uuid\"},{\"type\":\"null\"}],\"title\":\"Batch Id\"},\"project_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Project Id\"},\"agent_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Agent Id\"},\"user_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"User Id\"},\"message\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Message\"},\"tool_calls\":{\"items\":{\"$ref\":\"#/components/schemas/src__schemas__event__ToolCall\"},\"type\":\"array\",\"title\":\"Tool Calls\"},\"tool_results\":{\"items\":{\"$ref\":\"#/components/schemas/ToolResult\"},\"type\":\"array\",\"title\":\"Tool Results\"},\"data_source\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/DataSource\"},{\"type\":\"null\"}]},\"meta\":{\"anyOf\":[{\"additionalProperties\":true,\"type\":\"object\"},{\"type\":\"null\"}],\"title\":\"Meta\"}},\"type\":\"object\",\"required\":[\"session_id\",\"step\",\"event_type\",\"role\"],\"title\":\"AgentEventCreate\",\"description\":\"Schema for creating agent event via API\"},\"AgentEventResponse\":{\"properties\":{\"event_id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Event Id\"},\"session_id\":{\"type\":\"string\",\"title\":\"Session Id\"},\"step\":{\"type\":\"integer\",\"minimum\":0.0,\"title\":\"Step\"},\"timestamp\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Timestamp\"},\"event_type\":{\"$ref\":\"#/components/schemas/EventType\"},\"role\":{\"$ref\":\"#/components/schemas/Role\"},\"batch_id\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"uuid\"},{\"type\":\"null\"}],\"title\":\"Batch Id\"},\"project_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Project Id\"},\"agent_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Agent Id\"},\"user_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"User Id\"},\"model\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Model\"},\"message\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Message\"},\"tool_calls\":{\"items\":{\"$ref\":\"#/components/schemas/src__schemas__event__ToolCall\"},\"type\":\"array\",\"title\":\"Tool Calls\"},\"tool_results\":{\"items\":{\"$ref\":\"#/components/schemas/ToolResult\"},\"type\":\"array\",\"title\":\"Tool Results\"},\"data_source\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/DataSource\"},{\"type\":\"null\"}]},\"data_sources\":{\"items\":{\"$ref\":\"#/components/schemas/DataSource\"},\"type\":\"array\",\"title\":\"Data Sources\"},\"meta\":{\"anyOf\":[{\"additionalProperties\":true,\"type\":\"object\"},{\"type\":\"null\"}],\"title\":\"Meta\"},\"final_decision\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/Decision\"},{\"type\":\"null\"}]},\"incidents_count\":{\"type\":\"integer\",\"title\":\"Incidents Count\",\"default\":0}},\"type\":\"object\",\"required\":[\"session_id\",\"step\",\"event_type\",\"role\"],\"title\":\"AgentEventResponse\",\"description\":\"Response schema with additional fields\",\"example\":{\"agent_id\":\"support_agent\",\"event_type\":\"tool_call\",\"role\":\"assistant\",\"session_id\":\"sess_abc123\",\"step\":1,\"tool_calls\":[{\"arguments\":{\"body\":\"Hello\",\"to\":\"user@example.com\"},\"id\":\"call_1\",\"name\":\"send_email\"}]}},\"ArgumentRule\":{\"properties\":{\"field\":{\"type\":\"string\",\"title\":\"Field\",\"description\":\"Argument field name to validate\"},\"pattern\":{\"type\":\"string\",\"title\":\"Pattern\",\"description\":\"Regex pattern for validation\"},\"action\":{\"$ref\":\"#/components/schemas/ArgumentRuleAction\",\"description\":\"Action when pattern matches (block) or doesn't match (allow)\",\"default\":\"block\"},\"message\":{\"type\":\"string\",\"title\":\"Message\",\"description\":\"Error message when rule triggers\",\"default\":\"\"}},\"type\":\"object\",\"required\":[\"field\",\"pattern\"],\"title\":\"ArgumentRule\",\"description\":\"Single argument validation rule\"},\"ArgumentRuleAction\":{\"type\":\"string\",\"enum\":[\"allow\",\"block\"],\"title\":\"ArgumentRuleAction\",\"description\":\"Action for argument validation rule\"},\"ArgumentRuleCreate\":{\"properties\":{\"field\":{\"type\":\"string\",\"maxLength\":100,\"minLength\":1,\"title\":\"Field\",\"description\":\"Argument field name\"},\"pattern\":{\"type\":\"string\",\"minLength\":1,\"title\":\"Pattern\",\"description\":\"Regex pattern\"},\"action\":{\"$ref\":\"#/components/schemas/ArgumentRuleAction\",\"default\":\"block\"},\"message\":{\"type\":\"string\",\"title\":\"Message\",\"description\":\"Error message\",\"default\":\"\"}},\"additionalProperties\":false,\"type\":\"object\",\"required\":[\"field\",\"pattern\"],\"title\":\"ArgumentRuleCreate\",\"description\":\"Create a new argument validation rule\"},\"ArgumentRuleUpdate\":{\"properties\":{\"field\":{\"anyOf\":[{\"type\":\"string\",\"maxLength\":100,\"minLength\":1},{\"type\":\"null\"}],\"title\":\"Field\",\"description\":\"Argument field name\"},\"pattern\":{\"anyOf\":[{\"type\":\"string\",\"minLength\":1},{\"type\":\"null\"}],\"title\":\"Pattern\",\"description\":\"Regex pattern\"},\"action\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/ArgumentRuleAction\"},{\"type\":\"null\"}],\"description\":\"Action type\"},\"message\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Message\",\"description\":\"Error message\"}},\"additionalProperties\":false,\"type\":\"object\",\"title\":\"ArgumentRuleUpdate\",\"description\":\"Update an existing argument validation rule\"},\"ArgumentRulesReorder\":{\"properties\":{\"rule_indices\":{\"items\":{\"type\":\"integer\"},\"type\":\"array\",\"title\":\"Rule Indices\",\"description\":\"New order of rule indices (0-based)\"}},\"additionalProperties\":false,\"type\":\"object\",\"required\":[\"rule_indices\"],\"title\":\"ArgumentRulesReorder\",\"description\":\"Reorder argument rules for a tool\"},\"AuditLogItem\":{\"properties\":{\"id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Id\"},\"timestamp\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Timestamp\"},\"user_id\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"uuid\"},{\"type\":\"null\"}],\"title\":\"User Id\"},\"action\":{\"type\":\"string\",\"title\":\"Action\"},\"method\":{\"type\":\"string\",\"title\":\"Method\"},\"endpoint\":{\"type\":\"string\",\"title\":\"Endpoint\"},\"status_code\":{\"type\":\"integer\",\"title\":\"Status Code\"},\"detail\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Detail\"},\"client_ip\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Client Ip\"}},\"type\":\"object\",\"required\":[\"id\",\"timestamp\",\"action\",\"method\",\"endpoint\",\"status_code\"],\"title\":\"AuditLogItem\"},\"AuditLogListResponse\":{\"properties\":{\"items\":{\"items\":{\"$ref\":\"#/components/schemas/AuditLogItem\"},\"type\":\"array\",\"title\":\"Items\"},\"total\":{\"type\":\"integer\",\"title\":\"Total\"},\"page\":{\"type\":\"integer\",\"title\":\"Page\"},\"page_size\":{\"type\":\"integer\",\"title\":\"Page Size\"},\"pages\":{\"type\":\"integer\",\"title\":\"Pages\"}},\"type\":\"object\",\"required\":[\"items\",\"total\",\"page\",\"page_size\",\"pages\"],\"title\":\"AuditLogListResponse\"},\"BatchInfo\":{\"properties\":{\"batch_id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Batch Id\"},\"session_id\":{\"type\":\"string\",\"title\":\"Session Id\"},\"events_count\":{\"type\":\"integer\",\"title\":\"Events Count\"},\"first_event_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"First Event At\"},\"last_event_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Last Event At\"},\"has_user_message\":{\"type\":\"boolean\",\"title\":\"Has User Message\"}},\"type\":\"object\",\"required\":[\"batch_id\",\"session_id\",\"events_count\",\"first_event_at\",\"last_event_at\",\"has_user_message\"],\"title\":\"BatchInfo\",\"description\":\"Information about an event batch\"},\"BatchReplayResult\":{\"properties\":{\"batch_id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Batch Id\"},\"session_id\":{\"type\":\"string\",\"title\":\"Session Id\"},\"events_count\":{\"type\":\"integer\",\"title\":\"Events Count\"},\"incidents_created\":{\"type\":\"integer\",\"title\":\"Incidents Created\"},\"event_results\":{\"items\":{\"$ref\":\"#/components/schemas/ReplayEventResult\"},\"type\":\"array\",\"title\":\"Event Results\"}},\"type\":\"object\",\"required\":[\"batch_id\",\"session_id\",\"events_count\",\"incidents_created\",\"event_results\"],\"title\":\"BatchReplayResult\",\"description\":\"Result of replaying a single batch within time interval\"},\"ChatCompletionRequest\":{\"properties\":{\"model\":{\"type\":\"string\",\"title\":\"Model\",\"description\":\"Model ID (GigaChat, GigaChat-Plus, GigaChat-Pro, gpt-4, etc.)\",\"default\":\"GigaChat\"},\"messages\":{\"items\":{\"$ref\":\"#/components/schemas/ChatMessage\"},\"type\":\"array\",\"title\":\"Messages\",\"description\":\"List of messages in conversation\",\"default\":[{\"role\":\"user\",\"content\":\"ĐŸŅ€Đ¸Đ˛ĐĩŅ‚! КаĐē Đ´ĐĩĐģа?\"}]},\"tools\":{\"anyOf\":[{\"items\":{\"$ref\":\"#/components/schemas/ToolDefinition\"},\"type\":\"array\"},{\"type\":\"null\"}],\"title\":\"Tools\"},\"tool_choice\":{\"anyOf\":[{\"type\":\"string\"},{\"additionalProperties\":true,\"type\":\"object\"},{\"type\":\"null\"}],\"title\":\"Tool Choice\"},\"temperature\":{\"anyOf\":[{\"type\":\"number\",\"maximum\":2.0,\"minimum\":0.0},{\"type\":\"null\"}],\"title\":\"Temperature\"},\"top_p\":{\"anyOf\":[{\"type\":\"number\",\"maximum\":1.0,\"minimum\":0.0},{\"type\":\"null\"}],\"title\":\"Top P\",\"default\":1.0},\"n\":{\"anyOf\":[{\"type\":\"integer\",\"maximum\":10.0,\"minimum\":1.0},{\"type\":\"null\"}],\"title\":\"N\",\"default\":1},\"max_tokens\":{\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"null\"}],\"title\":\"Max Tokens\",\"description\":\"Max tokens to generate\"},\"stop\":{\"anyOf\":[{\"type\":\"string\"},{\"items\":{\"type\":\"string\"},\"type\":\"array\"},{\"type\":\"null\"}],\"title\":\"Stop\"},\"presence_penalty\":{\"anyOf\":[{\"type\":\"number\",\"maximum\":2.0,\"minimum\":-2.0},{\"type\":\"null\"}],\"title\":\"Presence Penalty\",\"default\":0},\"frequency_penalty\":{\"anyOf\":[{\"type\":\"number\",\"maximum\":2.0,\"minimum\":-2.0},{\"type\":\"null\"}],\"title\":\"Frequency Penalty\",\"default\":0},\"stream\":{\"anyOf\":[{\"type\":\"boolean\"},{\"type\":\"null\"}],\"title\":\"Stream\",\"default\":false},\"user\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"User\"},\"seed\":{\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"null\"}],\"title\":\"Seed\"},\"response_format\":{\"anyOf\":[{\"additionalProperties\":true,\"type\":\"object\"},{\"type\":\"null\"}],\"title\":\"Response Format\"},\"session_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Session Id\"},\"agent_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Agent Id\"},\"project_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Project Id\"}},\"type\":\"object\",\"title\":\"ChatCompletionRequest\",\"description\":\"OpenAI-compatible chat completion request.\\nhttps://platform.openai.com/docs/api-reference/chat/create\",\"examples\":[{\"max_tokens\":1024,\"messages\":[{\"content\":\"ĐŸŅ€Đ¸Đ˛ĐĩŅ‚! Đ Đ°ŅŅĐēаĐļи Đž ҁĐĩĐąĐĩ.\",\"role\":\"user\"}],\"model\":\"GigaChat\",\"temperature\":0.7}]},\"ChatMessage\":{\"properties\":{\"role\":{\"type\":\"string\",\"enum\":[\"system\",\"user\",\"assistant\",\"tool\"],\"title\":\"Role\"},\"content\":{\"anyOf\":[{\"type\":\"string\"},{\"items\":{},\"type\":\"array\"},{\"type\":\"null\"}],\"title\":\"Content\"},\"name\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Name\"},\"tool_calls\":{\"anyOf\":[{\"items\":{\"$ref\":\"#/components/schemas/src__schemas__openai__ToolCall\"},\"type\":\"array\"},{\"type\":\"null\"}],\"title\":\"Tool Calls\"},\"tool_call_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Tool Call Id\"}},\"type\":\"object\",\"required\":[\"role\"],\"title\":\"ChatMessage\",\"description\":\"Single message in conversation\"},\"DataSource\":{\"properties\":{\"type\":{\"type\":\"string\",\"title\":\"Type\"},\"id\":{\"type\":\"string\",\"title\":\"Id\"},\"server\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Server\"},\"meta\":{\"anyOf\":[{\"additionalProperties\":true,\"type\":\"object\"},{\"type\":\"null\"}],\"title\":\"Meta\"}},\"type\":\"object\",\"required\":[\"type\",\"id\"],\"title\":\"DataSource\",\"description\":\"Data source for RAG/data poisoning tracking\"},\"DatasetExportRequest\":{\"properties\":{\"scenario_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Scenario Id\"},\"agent_name\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Agent Name\"}},\"type\":\"object\",\"title\":\"DatasetExportRequest\",\"description\":\"Request schema for exporting dataset\"},\"Decision\":{\"type\":\"string\",\"enum\":[\"allow\",\"block\",\"log_only\",\"modify\",\"redact\"],\"title\":\"Decision\",\"description\":\"Scenario decision types\"},\"DetectionRequest\":{\"properties\":{\"detector_name\":{\"type\":\"string\",\"title\":\"Detector Name\",\"description\":\"Name of detector to use\"},\"content\":{\"type\":\"string\",\"minLength\":1,\"title\":\"Content\",\"description\":\"Content to analyze\"},\"scenario_id\":{\"type\":\"string\",\"title\":\"Scenario Id\",\"description\":\"Scenario ID\",\"default\":\"manual\"},\"scenario_prompt\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Scenario Prompt\",\"description\":\"Additional prompt from scenario\"},\"project_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Project Id\",\"description\":\"Project ID for project-specific detectors\"},\"event_data\":{\"anyOf\":[{\"additionalProperties\":true,\"type\":\"object\"},{\"type\":\"null\"}],\"title\":\"Event Data\",\"description\":\"Additional event context\"}},\"additionalProperties\":false,\"type\":\"object\",\"required\":[\"detector_name\",\"content\"],\"title\":\"DetectionRequest\",\"description\":\"Schema for manual detection request.\"},\"DetectionResponse\":{\"properties\":{\"label\":{\"$ref\":\"#/components/schemas/LLMLabel\"},\"confidence\":{\"anyOf\":[{\"type\":\"number\"},{\"type\":\"null\"}],\"title\":\"Confidence\"},\"reason\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Reason\"},\"latency_ms\":{\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"null\"}],\"title\":\"Latency Ms\"},\"detector_name\":{\"type\":\"string\",\"title\":\"Detector Name\"},\"detector_model\":{\"type\":\"string\",\"title\":\"Detector Model\"},\"error\":{\"type\":\"boolean\",\"title\":\"Error\",\"default\":false},\"error_message\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Error Message\"}},\"type\":\"object\",\"required\":[\"label\",\"detector_name\",\"detector_model\"],\"title\":\"DetectionResponse\",\"description\":\"Schema for detection response.\"},\"EventContextItem\":{\"properties\":{\"event_id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Event Id\"},\"step\":{\"type\":\"integer\",\"title\":\"Step\"},\"event_type\":{\"$ref\":\"#/components/schemas/EventType\"},\"role\":{\"$ref\":\"#/components/schemas/Role\"},\"message\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Message\"},\"tool_calls\":{\"anyOf\":[{\"items\":{\"additionalProperties\":true,\"type\":\"object\"},\"type\":\"array\"},{\"type\":\"null\"}],\"title\":\"Tool Calls\"},\"tool_results\":{\"anyOf\":[{\"items\":{\"additionalProperties\":true,\"type\":\"object\"},\"type\":\"array\"},{\"type\":\"null\"}],\"title\":\"Tool Results\"},\"final_decision\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/Decision\"},{\"type\":\"null\"}]},\"timestamp\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Timestamp\"}},\"type\":\"object\",\"required\":[\"event_id\",\"step\",\"event_type\",\"role\",\"timestamp\"],\"title\":\"EventContextItem\",\"description\":\"Event summary for context display\"},\"EventType\":{\"type\":\"string\",\"enum\":[\"user_message\",\"assistant_message\",\"tool_call\",\"tool_result\",\"system_message\"],\"title\":\"EventType\",\"description\":\"Types of agent events\"},\"FunctionCall\":{\"properties\":{\"name\":{\"type\":\"string\",\"title\":\"Name\"},\"arguments\":{\"type\":\"string\",\"title\":\"Arguments\"}},\"type\":\"object\",\"required\":[\"name\",\"arguments\"],\"title\":\"FunctionCall\",\"description\":\"Function call in tool_calls\"},\"FunctionDefinition\":{\"properties\":{\"name\":{\"type\":\"string\",\"title\":\"Name\"},\"description\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Description\"},\"parameters\":{\"anyOf\":[{\"additionalProperties\":true,\"type\":\"object\"},{\"type\":\"null\"}],\"title\":\"Parameters\"}},\"type\":\"object\",\"required\":[\"name\"],\"title\":\"FunctionDefinition\",\"description\":\"Function definition in tools\"},\"HTTPValidationError\":{\"properties\":{\"detail\":{\"items\":{\"$ref\":\"#/components/schemas/ValidationError\"},\"type\":\"array\",\"title\":\"Detail\"}},\"type\":\"object\",\"title\":\"HTTPValidationError\"},\"IncidentListResponse\":{\"properties\":{\"items\":{\"items\":{\"$ref\":\"#/components/schemas/IncidentResponse\"},\"type\":\"array\",\"title\":\"Items\"},\"total\":{\"type\":\"integer\",\"title\":\"Total\"},\"page\":{\"type\":\"integer\",\"title\":\"Page\"},\"page_size\":{\"type\":\"integer\",\"title\":\"Page Size\"},\"pages\":{\"type\":\"integer\",\"title\":\"Pages\"}},\"type\":\"object\",\"required\":[\"items\",\"total\",\"page\",\"page_size\",\"pages\"],\"title\":\"IncidentListResponse\",\"description\":\"Paginated list of incidents\"},\"IncidentMatchOriginalResponse\":{\"properties\":{\"incident_id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Incident Id\"},\"match_id\":{\"type\":\"integer\",\"title\":\"Match Id\"},\"original_value\":{\"type\":\"string\",\"title\":\"Original Value\"}},\"type\":\"object\",\"required\":[\"incident_id\",\"match_id\",\"original_value\"],\"title\":\"IncidentMatchOriginalResponse\"},\"IncidentResponse\":{\"properties\":{\"session_id\":{\"type\":\"string\",\"title\":\"Session Id\"},\"step\":{\"type\":\"integer\",\"title\":\"Step\"},\"agent_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Agent Id\"},\"project_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Project Id\"},\"scenario_id\":{\"type\":\"string\",\"title\":\"Scenario Id\"},\"rule_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Rule Id\"},\"decision\":{\"$ref\":\"#/components/schemas/Decision\"},\"severity\":{\"$ref\":\"#/components/schemas/Severity\"},\"summary\":{\"type\":\"string\",\"title\":\"Summary\"},\"details\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Details\"},\"matched_content\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Matched Content\"},\"decision_source\":{\"type\":\"string\",\"title\":\"Decision Source\",\"default\":\"static\"},\"review_status\":{\"$ref\":\"#/components/schemas/ReviewStatus\",\"default\":\"no_review\"},\"review_reasons\":{\"items\":{\"type\":\"string\"},\"type\":\"array\",\"title\":\"Review Reasons\"},\"extra\":{\"additionalProperties\":true,\"type\":\"object\",\"title\":\"Extra\"},\"id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Id\"},\"event_id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Event Id\"},\"event_type\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/EventType\"},{\"type\":\"null\"}]},\"role\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/Role\"},{\"type\":\"null\"}]},\"status\":{\"$ref\":\"#/components/schemas/IncidentStatus\",\"default\":\"open\"},\"created_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Created At\"},\"updated_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Updated At\"},\"resolved_at\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"date-time\"},{\"type\":\"null\"}],\"title\":\"Resolved At\"},\"resolved_by\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Resolved By\"},\"resolution_notes\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Resolution Notes\"},\"false_alert_type\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"False Alert Type\"}},\"type\":\"object\",\"required\":[\"session_id\",\"step\",\"scenario_id\",\"decision\",\"severity\",\"summary\",\"id\",\"event_id\",\"created_at\",\"updated_at\"],\"title\":\"IncidentResponse\",\"description\":\"Response schema for incident\"},\"IncidentReviewDetailResponse\":{\"properties\":{\"id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Id\"},\"event_id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Event Id\"},\"session_id\":{\"type\":\"string\",\"title\":\"Session Id\"},\"step\":{\"type\":\"integer\",\"title\":\"Step\"},\"review_status\":{\"$ref\":\"#/components/schemas/ReviewStatus\"},\"human_label\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Human Label\"},\"review_notes\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Review Notes\"},\"reviewed_by\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Reviewed By\"},\"reviewed_at\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"date-time\"},{\"type\":\"null\"}],\"title\":\"Reviewed At\"},\"review_reasons\":{\"items\":{\"type\":\"string\"},\"type\":\"array\",\"title\":\"Review Reasons\",\"default\":[]},\"scenario_id\":{\"type\":\"string\",\"title\":\"Scenario Id\"},\"rule_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Rule Id\"},\"decision\":{\"$ref\":\"#/components/schemas/Decision\"},\"decision_source\":{\"type\":\"string\",\"title\":\"Decision Source\"},\"severity\":{\"$ref\":\"#/components/schemas/Severity\"},\"summary\":{\"type\":\"string\",\"title\":\"Summary\"},\"static_rule_info\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/StaticRuleInfo\"},{\"type\":\"null\"}]},\"llm_results\":{\"items\":{\"$ref\":\"#/components/schemas/LLMResultInfo\"},\"type\":\"array\",\"title\":\"Llm Results\",\"default\":[]},\"trigger_event\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/EventContextItem\"},{\"type\":\"null\"}]},\"created_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Created At\"},\"updated_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Updated At\"},\"false_alert_type\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"False Alert Type\"}},\"type\":\"object\",\"required\":[\"id\",\"event_id\",\"session_id\",\"step\",\"review_status\",\"scenario_id\",\"decision\",\"decision_source\",\"severity\",\"summary\",\"created_at\",\"updated_at\"],\"title\":\"IncidentReviewDetailResponse\",\"description\":\"Detailed incident review response\"},\"IncidentReviewRequest\":{\"properties\":{\"human_label\":{\"type\":\"string\",\"title\":\"Human Label\"},\"notes\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Notes\"}},\"type\":\"object\",\"required\":[\"human_label\"],\"title\":\"IncidentReviewRequest\",\"description\":\"Request schema for submitting incident review\"},\"IncidentSeverityStats\":{\"properties\":{\"critical\":{\"type\":\"integer\",\"title\":\"Critical\",\"default\":0},\"high\":{\"type\":\"integer\",\"title\":\"High\",\"default\":0},\"medium\":{\"type\":\"integer\",\"title\":\"Medium\",\"default\":0},\"low\":{\"type\":\"integer\",\"title\":\"Low\",\"default\":0}},\"type\":\"object\",\"title\":\"IncidentSeverityStats\",\"description\":\"Incident counts by severity\"},\"IncidentStatsResponse\":{\"properties\":{\"total\":{\"type\":\"integer\",\"title\":\"Total\"},\"severity\":{\"$ref\":\"#/components/schemas/IncidentSeverityStats\"}},\"type\":\"object\",\"required\":[\"total\",\"severity\"],\"title\":\"IncidentStatsResponse\",\"description\":\"Incident stats for current filters\"},\"IncidentStatus\":{\"type\":\"string\",\"enum\":[\"open\",\"investigating\",\"resolved\",\"false_positive\",\"canceled\",\"closed\"],\"title\":\"IncidentStatus\",\"description\":\"Incident status\"},\"IncidentUpdate\":{\"properties\":{\"status\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/IncidentStatus\"},{\"type\":\"null\"}]},\"resolution_notes\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Resolution Notes\"},\"resolved_by\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Resolved By\"},\"false_alert_type\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"False Alert Type\"}},\"type\":\"object\",\"title\":\"IncidentUpdate\",\"description\":\"Schema for updating incident\"},\"LLMDetectorConfigCreate\":{\"properties\":{\"name\":{\"type\":\"string\",\"maxLength\":255,\"minLength\":1,\"title\":\"Name\",\"description\":\"Unique detector name\"},\"description\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"D +[2026-01-25T16:10:52.970Z] [INFO] escription\",\"description\":\"Detector description\"},\"provider\":{\"$ref\":\"#/components/schemas/LLMProvider\",\"description\":\"LLM provider\"},\"model\":{\"type\":\"string\",\"maxLength\":255,\"minLength\":1,\"title\":\"Model\",\"description\":\"Model name\"},\"base_url\":{\"anyOf\":[{\"type\":\"string\",\"maxLength\":500},{\"type\":\"null\"}],\"title\":\"Base Url\",\"description\":\"Custom base URL for provider\"},\"system_prompt\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"System Prompt\",\"description\":\"System prompt for detector\"},\"temperature\":{\"type\":\"number\",\"maximum\":2.0,\"minimum\":0.0,\"title\":\"Temperature\",\"description\":\"Model temperature\",\"default\":0.0},\"max_tokens\":{\"type\":\"integer\",\"maximum\":8192.0,\"minimum\":1.0,\"title\":\"Max Tokens\",\"description\":\"Max tokens for response\",\"default\":500},\"timeout_ms\":{\"type\":\"integer\",\"maximum\":300000.0,\"minimum\":1000.0,\"title\":\"Timeout Ms\",\"description\":\"Request timeout in ms\",\"default\":30000},\"model_params\":{\"anyOf\":[{\"additionalProperties\":true,\"type\":\"object\"},{\"type\":\"null\"}],\"title\":\"Model Params\",\"description\":\"Additional model parameters\"},\"project_id\":{\"anyOf\":[{\"type\":\"string\",\"maxLength\":255},{\"type\":\"null\"}],\"title\":\"Project Id\",\"description\":\"Project ID (null = global)\"},\"enabled\":{\"type\":\"boolean\",\"title\":\"Enabled\",\"description\":\"Is detector enabled\",\"default\":true},\"priority\":{\"type\":\"integer\",\"minimum\":0.0,\"title\":\"Priority\",\"description\":\"Detector priority (higher = more important)\",\"default\":0},\"api_key\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Api Key\",\"description\":\"API key (will be encrypted)\"}},\"additionalProperties\":false,\"type\":\"object\",\"required\":[\"name\",\"provider\",\"model\"],\"title\":\"LLMDetectorConfigCreate\",\"description\":\"Schema for creating detector config.\"},\"LLMDetectorConfigList\":{\"properties\":{\"items\":{\"items\":{\"$ref\":\"#/components/schemas/LLMDetectorConfigResponse\"},\"type\":\"array\",\"title\":\"Items\"},\"total\":{\"type\":\"integer\",\"title\":\"Total\"},\"page\":{\"type\":\"integer\",\"title\":\"Page\",\"default\":1},\"page_size\":{\"type\":\"integer\",\"title\":\"Page Size\",\"default\":20}},\"type\":\"object\",\"required\":[\"items\",\"total\"],\"title\":\"LLMDetectorConfigList\",\"description\":\"Schema for list of detector configs.\"},\"LLMDetectorConfigResponse\":{\"properties\":{\"name\":{\"type\":\"string\",\"maxLength\":255,\"minLength\":1,\"title\":\"Name\",\"description\":\"Unique detector name\"},\"description\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Description\",\"description\":\"Detector description\"},\"provider\":{\"$ref\":\"#/components/schemas/LLMProvider\",\"description\":\"LLM provider\"},\"model\":{\"type\":\"string\",\"maxLength\":255,\"minLength\":1,\"title\":\"Model\",\"description\":\"Model name\"},\"base_url\":{\"anyOf\":[{\"type\":\"string\",\"maxLength\":500},{\"type\":\"null\"}],\"title\":\"Base Url\",\"description\":\"Custom base URL for provider\"},\"system_prompt\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"System Prompt\",\"description\":\"System prompt for detector\"},\"temperature\":{\"type\":\"number\",\"maximum\":2.0,\"minimum\":0.0,\"title\":\"Temperature\",\"description\":\"Model temperature\",\"default\":0.0},\"max_tokens\":{\"type\":\"integer\",\"maximum\":8192.0,\"minimum\":1.0,\"title\":\"Max Tokens\",\"description\":\"Max tokens for response\",\"default\":500},\"timeout_ms\":{\"type\":\"integer\",\"maximum\":300000.0,\"minimum\":1000.0,\"title\":\"Timeout Ms\",\"description\":\"Request timeout in ms\",\"default\":30000},\"model_params\":{\"anyOf\":[{\"additionalProperties\":true,\"type\":\"object\"},{\"type\":\"null\"}],\"title\":\"Model Params\",\"description\":\"Additional model parameters\"},\"project_id\":{\"anyOf\":[{\"type\":\"string\",\"maxLength\":255},{\"type\":\"null\"}],\"title\":\"Project Id\",\"description\":\"Project ID (null = global)\"},\"enabled\":{\"type\":\"boolean\",\"title\":\"Enabled\",\"description\":\"Is detector enabled\",\"default\":true},\"priority\":{\"type\":\"integer\",\"minimum\":0.0,\"title\":\"Priority\",\"description\":\"Detector priority (higher = more important)\",\"default\":0},\"id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Id\"},\"has_api_key\":{\"type\":\"boolean\",\"title\":\"Has Api Key\",\"description\":\"Whether API key is configured\"},\"created_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Created At\"},\"updated_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Updated At\"}},\"additionalProperties\":false,\"type\":\"object\",\"required\":[\"name\",\"provider\",\"model\",\"id\",\"has_api_key\",\"created_at\",\"updated_at\"],\"title\":\"LLMDetectorConfigResponse\",\"description\":\"Schema for detector config response.\"},\"LLMDetectorConfigUpdate\":{\"properties\":{\"name\":{\"anyOf\":[{\"type\":\"string\",\"maxLength\":255,\"minLength\":1},{\"type\":\"null\"}],\"title\":\"Name\"},\"description\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Description\"},\"provider\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/LLMProvider\"},{\"type\":\"null\"}]},\"model\":{\"anyOf\":[{\"type\":\"string\",\"maxLength\":255,\"minLength\":1},{\"type\":\"null\"}],\"title\":\"Model\"},\"base_url\":{\"anyOf\":[{\"type\":\"string\",\"maxLength\":500},{\"type\":\"null\"}],\"title\":\"Base Url\"},\"api_key\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Api Key\",\"description\":\"New API key (will be encrypted)\"},\"system_prompt\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"System Prompt\"},\"temperature\":{\"anyOf\":[{\"type\":\"number\",\"maximum\":2.0,\"minimum\":0.0},{\"type\":\"null\"}],\"title\":\"Temperature\"},\"max_tokens\":{\"anyOf\":[{\"type\":\"integer\",\"maximum\":8192.0,\"minimum\":1.0},{\"type\":\"null\"}],\"title\":\"Max Tokens\"},\"timeout_ms\":{\"anyOf\":[{\"type\":\"integer\",\"maximum\":300000.0,\"minimum\":1000.0},{\"type\":\"null\"}],\"title\":\"Timeout Ms\"},\"model_params\":{\"anyOf\":[{\"additionalProperties\":true,\"type\":\"object\"},{\"type\":\"null\"}],\"title\":\"Model Params\"},\"enabled\":{\"anyOf\":[{\"type\":\"boolean\"},{\"type\":\"null\"}],\"title\":\"Enabled\"},\"priority\":{\"anyOf\":[{\"type\":\"integer\",\"minimum\":0.0},{\"type\":\"null\"}],\"title\":\"Priority\"}},\"additionalProperties\":false,\"type\":\"object\",\"title\":\"LLMDetectorConfigUpdate\",\"description\":\"Schema for updating detector config.\"},\"LLMLabel\":{\"type\":\"string\",\"enum\":[\"safe\",\"unsafe\"],\"title\":\"LLMLabel\",\"description\":\"LLM detector result labels\"},\"LLMMessageMode\":{\"type\":\"string\",\"enum\":[\"single\",\"from_user_message\"],\"title\":\"LLMMessageMode\",\"description\":\"Mode for selecting messages to send to LLM detector\"},\"LLMProvider\":{\"type\":\"string\",\"enum\":[\"openai\",\"anthropic\",\"gigachat\",\"yandexgpt\",\"local\",\"azure\"],\"title\":\"LLMProvider\",\"description\":\"Supported LLM providers for detectors\"},\"LLMResultInfo\":{\"properties\":{\"detector_name\":{\"type\":\"string\",\"title\":\"Detector Name\"},\"detector_model\":{\"type\":\"string\",\"title\":\"Detector Model\"},\"detector_provider\":{\"type\":\"string\",\"title\":\"Detector Provider\"},\"label\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Label\"},\"confidence\":{\"anyOf\":[{\"type\":\"number\"},{\"type\":\"null\"}],\"title\":\"Confidence\"},\"reason\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Reason\"},\"error\":{\"type\":\"boolean\",\"title\":\"Error\",\"default\":false},\"error_message\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Error Message\"}},\"type\":\"object\",\"required\":[\"detector_name\",\"detector_model\",\"detector_provider\"],\"title\":\"LLMResultInfo\",\"description\":\"LLM detector result information\"},\"LoginRequest\":{\"properties\":{\"login\":{\"type\":\"string\",\"title\":\"Login\",\"example\":\"operator\"},\"password\":{\"type\":\"string\",\"title\":\"Password\",\"example\":\"222\"}},\"type\":\"object\",\"required\":[\"login\",\"password\"],\"title\":\"LoginRequest\"},\"LoginResponse\":{\"properties\":{\"user\":{\"$ref\":\"#/components/schemas/UserRead\"}},\"type\":\"object\",\"required\":[\"user\"],\"title\":\"LoginResponse\"},\"PolicyRule\":{\"properties\":{\"id\":{\"type\":\"string\",\"title\":\"Id\"},\"enabled\":{\"type\":\"boolean\",\"title\":\"Enabled\",\"default\":true},\"category\":{\"type\":\"string\",\"title\":\"Category\",\"default\":\"general\"},\"pattern\":{\"type\":\"string\",\"title\":\"Pattern\"},\"flags\":{\"type\":\"string\",\"title\":\"Flags\",\"default\":\"\"},\"action\":{\"$ref\":\"#/components/schemas/Decision\",\"default\":\"log_only\"},\"severity\":{\"$ref\":\"#/components/schemas/Severity\",\"default\":\"medium\"},\"message\":{\"type\":\"string\",\"title\":\"Message\",\"default\":\"\"},\"redact_with\":{\"type\":\"string\",\"title\":\"Redact With\",\"default\":\"[REDACTED]\"},\"source_file\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Source File\"}},\"type\":\"object\",\"required\":[\"id\",\"pattern\"],\"title\":\"PolicyRule\",\"description\":\"Policy rule for leak detection\"},\"PolicyRuleCreate\":{\"properties\":{\"id\":{\"type\":\"string\",\"maxLength\":100,\"minLength\":1,\"pattern\":\"^[a-z0-9_]+$\",\"title\":\"Id\"},\"enabled\":{\"type\":\"boolean\",\"title\":\"Enabled\",\"default\":true},\"category\":{\"type\":\"string\",\"maxLength\":50,\"minLength\":1,\"title\":\"Category\"},\"pattern\":{\"type\":\"string\",\"minLength\":1,\"title\":\"Pattern\",\"description\":\"Regex pattern\"},\"flags\":{\"type\":\"string\",\"title\":\"Flags\",\"description\":\"Regex flags (i, m)\",\"default\":\"\"},\"action\":{\"$ref\":\"#/components/schemas/Decision\",\"default\":\"log_only\"},\"severity\":{\"$ref\":\"#/components/schemas/Severity\",\"default\":\"medium\"},\"message\":{\"type\":\"string\",\"title\":\"Message\",\"description\":\"Human-readable message\",\"default\":\"\"},\"redact_with\":{\"type\":\"string\",\"title\":\"Redact With\",\"description\":\"Replacement text for redaction\",\"default\":\"[REDACTED]\"}},\"additionalProperties\":false,\"type\":\"object\",\"required\":[\"id\",\"category\",\"pattern\"],\"title\":\"PolicyRuleCreate\",\"description\":\"Create a new policy rule\"},\"PolicyRuleListResponse\":{\"properties\":{\"items\":{\"items\":{\"$ref\":\"#/components/schemas/PolicyRule\"},\"type\":\"array\",\"title\":\"Items\"},\"total\":{\"type\":\"integer\",\"title\":\"Total\"},\"by_category\":{\"additionalProperties\":{\"type\":\"integer\"},\"type\":\"object\",\"title\":\"By Category\"}},\"type\":\"object\",\"required\":[\"items\",\"total\"],\"title\":\"PolicyRuleListResponse\",\"description\":\"List of policy rules\"},\"PolicyRuleUpdate\":{\"properties\":{\"enabled\":{\"anyOf\":[{\"type\":\"boolean\"},{\"type\":\"null\"}],\"title\":\"Enabled\"},\"action\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/Decision\"},{\"type\":\"null\"}]},\"severity\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/Severity\"},{\"type\":\"null\"}]},\"pattern\":{\"anyOf\":[{\"type\":\"string\",\"minLength\":1},{\"type\":\"null\"}],\"title\":\"Pattern\",\"description\":\"Regex pattern\"},\"flags\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Flags\",\"description\":\"Regex flags (i, m)\"},\"message\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Message\",\"description\":\"Human-readable message\"},\"redact_with\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Redact With\",\"description\":\"Replacement text for redaction\"}},\"additionalProperties\":false,\"type\":\"object\",\"title\":\"PolicyRuleUpdate\",\"description\":\"Fields that can be updated on a policy rule\"},\"ProcessingResult\":{\"properties\":{\"event_id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Event Id\"},\"session_id\":{\"type\":\"string\",\"title\":\"Session Id\"},\"processed_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Processed At\"},\"total_time_ms\":{\"type\":\"integer\",\"title\":\"Total Time Ms\",\"default\":0},\"final_decision\":{\"$ref\":\"#/components/schemas/Decision\",\"default\":\"allow\"},\"scenario_decisions\":{\"items\":{\"$ref\":\"#/components/schemas/ScenarioDecision\"},\"type\":\"array\",\"title\":\"Scenario Decisions\"},\"original_content\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Original Content\"},\"modified_content\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Modified Content\"},\"max_severity\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/Severity\"},{\"type\":\"null\"}]},\"all_matched_rules\":{\"items\":{\"type\":\"string\"},\"type\":\"array\",\"title\":\"All Matched Rules\"},\"has_violations\":{\"type\":\"boolean\",\"title\":\"Has Violations\",\"default\":false},\"incident_created\":{\"type\":\"boolean\",\"title\":\"Incident Created\",\"default\":false},\"incident_id\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"uuid\"},{\"type\":\"null\"}],\"title\":\"Incident Id\"},\"engine_conflicts\":{\"anyOf\":[{\"items\":{\"additionalProperties\":true,\"type\":\"object\"},\"type\":\"array\"},{\"type\":\"null\"}],\"title\":\"Engine Conflicts\"}},\"type\":\"object\",\"required\":[\"event_id\",\"session_id\"],\"title\":\"ProcessingResult\",\"description\":\"Combined result of all scenarios for an event\"},\"ReplayEventResult\":{\"properties\":{\"event_id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Event Id\"},\"step\":{\"type\":\"integer\",\"title\":\"Step\"},\"event_type\":{\"type\":\"string\",\"title\":\"Event Type\"},\"decision\":{\"$ref\":\"#/components/schemas/Decision\"},\"has_new_incidents\":{\"type\":\"boolean\",\"title\":\"Has New Incidents\"},\"incidents_created\":{\"type\":\"integer\",\"title\":\"Incidents Created\"},\"matched_rules\":{\"items\":{\"type\":\"string\"},\"type\":\"array\",\"title\":\"Matched Rules\"},\"max_severity\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/Severity\"},{\"type\":\"null\"}]}},\"type\":\"object\",\"required\":[\"event_id\",\"step\",\"event_type\",\"decision\",\"has_new_incidents\",\"incidents_created\"],\"title\":\"ReplayEventResult\",\"description\":\"Result of replaying a single event\"},\"ReplayListItem\":{\"properties\":{\"id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Id\"},\"replay_type\":{\"$ref\":\"#/components/schemas/ReplayType\"},\"batch_id\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"uuid\"},{\"type\":\"null\"}],\"title\":\"Batch Id\"},\"start_time\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"date-time\"},{\"type\":\"null\"}],\"title\":\"Start Time\"},\"end_time\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"date-time\"},{\"type\":\"null\"}],\"title\":\"End Time\"},\"batches_count\":{\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"null\"}],\"title\":\"Batches Count\"},\"events_count\":{\"type\":\"integer\",\"title\":\"Events Count\"},\"notes\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Notes\"},\"created_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Created At\"}},\"type\":\"object\",\"required\":[\"id\",\"replay_type\",\"events_count\",\"created_at\"],\"title\":\"ReplayListItem\",\"description\":\"Item in replay list\"},\"ReplayListResponse\":{\"properties\":{\"items\":{\"items\":{\"$ref\":\"#/components/schemas/ReplayListItem\"},\"type\":\"array\",\"title\":\"Items\"},\"total\":{\"type\":\"integer\",\"title\":\"Total\"}},\"type\":\"object\",\"required\":[\"items\",\"total\"],\"title\":\"ReplayListResponse\",\"description\":\"Response for replay list\"},\"ReplayMetrics\":{\"properties\":{\"replay_id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Replay Id\"},\"incidents_count\":{\"type\":\"integer\",\"title\":\"Incidents Count\",\"description\":\"Total number of incidents\"},\"review_required_count\":{\"type\":\"integer\",\"title\":\"Review Required Count\",\"description\":\"Incidents requiring review\"},\"conflicts_count\":{\"type\":\"integer\",\"title\":\"Conflicts Count\",\"description\":\"Incidents where human label conflicts with decision\"},\"precision_on_reviewed\":{\"anyOf\":[{\"type\":\"number\",\"maximum\":1.0,\"minimum\":0.0},{\"type\":\"null\"}],\"title\":\"Precision On Reviewed\",\"description\":\"Precision = TP / (TP + FP) on reviewed incidents. None if no reviewed incidents.\"}},\"type\":\"object\",\"required\":[\"replay_id\",\"incidents_count\",\"review_required_count\",\"conflicts_count\"],\"title\":\"ReplayMetrics\",\"description\":\"Metrics for a replay session\"},\"ReplayRequest\":{\"properties\":{\"notes\":{\"anyOf\":[{\"type\":\"string\",\"maxLength\":2000},{\"type\":\"null\"}],\"title\":\"Notes\",\"description\":\"Notes about this replay\"}},\"type\":\"object\",\"title\":\"ReplayRequest\",\"description\":\"Request to replay a batch\"},\"ReplayResult\":{\"properties\":{\"replay_id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Replay Id\"},\"batch_id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Batch Id\"},\"session_id\":{\"type\":\"string\",\"title\":\"Session Id\"},\"events_replayed\":{\"type\":\"integer\",\"title\":\"Events Replayed\"},\"total_incidents_created\":{\"type\":\"integer\",\"title\":\"Total Incidents Created\"},\"event_results\":{\"items\":{\"$ref\":\"#/components/schemas/ReplayEventResult\"},\"type\":\"array\",\"title\":\"Event Results\"},\"replay_started_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Replay Started At\"},\"replay_finished_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Replay Finished At\"},\"total_time_ms\":{\"type\":\"integer\",\"title\":\"Total Time Ms\"}},\"type\":\"object\",\"required\":[\"replay_id\",\"batch_id\",\"session_id\",\"events_replayed\",\"total_incidents_created\",\"event_results\",\"replay_started_at\",\"replay_finished_at\",\"total_time_ms\"],\"title\":\"ReplayResult\",\"description\":\"Result of batch replay\"},\"ReplayType\":{\"type\":\"string\",\"enum\":[\"batch\",\"time_interval\"],\"title\":\"ReplayType\",\"description\":\"Types of replay sessions\"},\"ReviewListItem\":{\"properties\":{\"id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Id\"},\"session_id\":{\"type\":\"string\",\"title\":\"Session Id\"},\"step\":{\"type\":\"integer\",\"title\":\"Step\"},\"scenario_id\":{\"type\":\"string\",\"title\":\"Scenario Id\"},\"rule_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Rule Id\"},\"decision\":{\"$ref\":\"#/components/schemas/Decision\"},\"decision_source\":{\"type\":\"string\",\"title\":\"Decision Source\"},\"severity\":{\"$ref\":\"#/components/schemas/Severity\"},\"summary\":{\"type\":\"string\",\"title\":\"Summary\"},\"review_status\":{\"$ref\":\"#/components/schemas/ReviewStatus\"},\"review_reasons\":{\"items\":{\"type\":\"string\"},\"type\":\"array\",\"title\":\"Review Reasons\",\"default\":[]},\"human_label\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Human Label\"},\"reviewed_at\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"date-time\"},{\"type\":\"null\"}],\"title\":\"Reviewed At\"},\"event_type\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/EventType\"},{\"type\":\"null\"}]},\"created_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Created At\"}},\"type\":\"object\",\"required\":[\"id\",\"session_id\",\"step\",\"scenario_id\",\"decision\",\"decision_source\",\"severity\",\"summary\",\"review_status\",\"created_at\"],\"title\":\"ReviewListItem\",\"description\":\"Item in the review list\"},\"ReviewListResponse\":{\"properties\":{\"pending_review\":{\"items\":{\"$ref\":\"#/components/schemas/ReviewListItem\"},\"type\":\"array\",\"title\":\"Pending Review\"},\"already_reviewed\":{\"items\":{\"$ref\":\"#/components/schemas/ReviewListItem\"},\"type\":\"array\",\"title\":\"Already Reviewed\"},\"total_pending\":{\"type\":\"integer\",\"title\":\"Total Pending\"},\"total_reviewed\":{\"type\":\"integer\",\"title\":\"Total Reviewed\"}},\"type\":\"object\",\"required\":[\"pending_review\",\"already_reviewed\",\"total_pending\",\"total_reviewed\"],\"title\":\"ReviewListResponse\",\"description\":\"Response for reviews list with categorization\"},\"ReviewStatus\":{\"type\":\"string\",\"enum\":[\"review_required\",\"already_reviewed\",\"no_review\"],\"title\":\"ReviewStatus\",\"description\":\"Incident review status\"},\"Role\":{\"type\":\"string\",\"enum\":[\"user\",\"assistant\",\"tool\",\"system\"],\"title\":\"Role\",\"description\":\"Roles in conversation\"},\"ScenarioBaseConfigResponse\":{\"properties\":{\"scenario_id\":{\"type\":\"string\",\"title\":\"Scenario Id\"},\"priority\":{\"type\":\"integer\",\"title\":\"Priority\"},\"supported_event_types\":{\"items\":{\"$ref\":\"#/components/schemas/EventType\"},\"type\":\"array\",\"title\":\"Supported Event Types\"},\"enabled\":{\"type\":\"boolean\",\"title\":\"Enabled\"}},\"type\":\"object\",\"required\":[\"scenario_id\",\"priority\",\"supported_event_types\",\"enabled\"],\"title\":\"ScenarioBaseConfigResponse\",\"description\":\"Response with scenario base configuration\"},\"ScenarioBaseConfigUpdate\":{\"properties\":{\"priority\":{\"anyOf\":[{\"type\":\"integer\",\"maximum\":1000.0,\"minimum\":1.0},{\"type\":\"null\"}],\"title\":\"Priority\",\"description\":\"Scenario priority (lower = higher priority)\"},\"supported_event_types\":{\"anyOf\":[{\"items\":{\"$ref\":\"#/components/schemas/EventType\"},\"type\":\"array\"},{\"type\":\"null\"}],\"title\":\"Supported Event Types\",\"description\":\"Event types this scenario should process\"}},\"additionalProperties\":false,\"type\":\"object\",\"title\":\"ScenarioBaseConfigUpdate\",\"description\":\"Update base configuration for a scenario\"},\"ScenarioDecision\":{\"properties\":{\"scenario_id\":{\"type\":\"string\",\"title\":\"Scenario Id\"},\"decision\":{\"$ref\":\"#/components/schemas/Decision\"},\"matched_rules\":{\"items\":{\"type\":\"string\"},\"type\":\"array\",\"title\":\"Matched Rules\"},\"severity\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/Severity\"},{\"type\":\"null\"}]},\"message\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Message\"},\"extra\":{\"additionalProperties\":true,\"type\":\"object\",\"title\":\"Extra\"},\"execution_time_ms\":{\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"null\"}],\"title\":\"Execution Time Ms\"},\"review_status\":{\"$ref\":\"#/components/schemas/ReviewStatus\",\"default\":\"no_review\"},\"review_reasons\":{\"items\":{\"type\":\"string\"},\"type\":\"array\",\"title\":\"Review Reasons\"}},\"type\":\"object\",\"required\":[\"scenario_id\",\"decision\"],\"title\":\"ScenarioDecision\",\"description\":\"Result of a single scenario execution\"},\"ScenarioDetail\":{\"properties\":{\"id\":{\"type\":\"string\",\"title\":\"Id\"},\"name\":{\"type\":\"string\",\"title\":\"Name\"},\"enabled\":{\"type\":\"boolean\",\"title\":\"Enabled\"},\"priority\":{\"type\":\"integer\",\"title\":\"Priority\"},\"supported_event_types\":{\"items\":{\"$ref\":\"#/components/schemas/EventType\"},\"type\":\"array\",\"title\":\"Supported Event Types\",\"default\":[]},\"static_rules_enabled\":{\"type\":\"boolean\",\"title\":\"Static Rules Enabled\",\"default\":true},\"llm_detector_enabled\":{\"type\":\"boolean\",\"title\":\"Llm Detector Enabled\",\"default\":true},\"config\":{\"additionalProperties\":true,\"type\":\"object\",\"title\":\"Config\"},\"policies_count\":{\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"null\"}],\"title\":\"Policies Count\"}},\"type\":\"object\",\"required\":[\"id\",\"name\",\"enabled\",\"priority\"],\"title\":\"ScenarioDetail\",\"description\":\"Full scenario details including config\"},\"ScenarioLLMConfigResponse\":{\"properties\":{\"scenario_id\":{\"type\":\"string\",\"title\":\"Scenario Id\"},\"llm_detector_enabled\":{\"type\":\"boolean\",\"title\":\"Llm Detector Enabled\"},\"llm_detector_name\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Llm Detector Name\"},\"llm_detector_threshold\":{\"type\":\"number\",\"title\":\"Llm Detector Threshold\",\"default\":0.8},\"llm_message_mode\":{\"type\":\"string\",\"title\":\"Llm Message Mode\",\"default\":\"single\"},\"llm_prompt\":{\"type\":\"string\",\"title\":\"Llm Prompt\",\"default\":\"\"}},\"type\":\"object\",\"required\":[\"scenario_id\",\"llm_detector_enabled\"],\"title\":\"ScenarioLLMConfigResponse\",\"description\":\"Response with scenario LLM configuration\"},\"ScenarioLLMConfigUpdate\":{\"properties\":{\"llm_detector_name\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Llm Detector Name\",\"description\":\"Name of the LLM detector to use (from llm_detector_configs)\"},\"llm_detector_threshold\":{\"anyOf\":[{\"type\":\"number\",\"maximum\":1.0,\"minimum\":0.0},{\"type\":\"null\"}],\"title\":\"Llm Detector Threshold\",\"description\":\"Threshold for considering detection as unsafe (0.0-1.0)\"},\"llm_message_mode\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/LLMMessageMode\"},{\"type\":\"null\"}],\"description\":\"Mode for selecting messages: 'single' or 'from_user_message'\"},\"llm_prompt\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Llm Prompt\",\"description\":\"Scenario-specific prompt for LLM detector\"}},\"additionalProperties\":false,\"type\":\"object\",\"title\":\"ScenarioLLMConfigUpdate\",\"description\":\"Update LLM detector configuration for a scenario\"},\"ScenarioListResponse\":{\"properties\":{\"items\":{\"items\":{\"$ref\":\"#/components/schemas/ScenarioSummary\"},\"type\":\"array\",\"title\":\"Items\"},\"total\":{\"type\":\"integer\",\"title\":\"Total\"}},\"type\":\"object\",\"required\":[\"items\",\"total\"],\"title\":\"ScenarioListResponse\",\"description\":\"List of scenarios\"},\"ScenarioSummary\":{\"properties\":{\"id\":{\"type\":\"string\",\"title\":\"Id\"},\"name\":{\"type\":\"string\",\"title\":\"Name\"},\"enabled\":{\"type\":\"boolean\",\"title\":\"Enabled\"},\"priority\":{\"type\":\"integer\",\"title\":\"Priority\"},\"supported_event_types\":{\"items\":{\"$ref\":\"#/components/schemas/EventType\"},\"type\":\"array\",\"title\":\"Supported Event Types\",\"default\":[]},\"static_rules_enabled\":{\"type\":\"boolean\",\"title\":\"Static Rules Enabled\",\"default\":true},\"llm_detector_enabled\":{\"type\":\"boolean\",\"title\":\"Llm Detector Enabled\",\"default\":true}},\"type\":\"object\",\"required\":[\"id\",\"name\",\"enabled\",\"priority\"],\"title\":\"ScenarioSummary\",\"description\":\"Summary of a scenario for list view\"},\"ScenarioToggleRequest\":{\"properties\":{\"enabled\":{\"type\":\"boolean\",\"title\":\"Enabled\"}},\"additionalProperties\":false,\"type\":\"object\",\"required\":[\"enabled\"],\"title\":\"ScenarioToggleRequest\",\"description\":\"Request to toggle static rules or LLM detector\"},\"ScenarioToggleResponse\":{\"properties\":{\"scenario_id\":{\"type\":\"string\",\"title\":\"Scenario Id\"},\"static_rules_enabled\":{\"type\":\"boolean\",\"title\":\"Static Rules Enabled\"},\"llm_detector_enabled\":{\"type\":\"boolean\",\"title\":\"Llm Detector Enabled\"},\"enabled\":{\"type\":\"boolean\",\"title\":\"Enabled\"}},\"type\":\"object\",\"required\":[\"scenario_id\",\"static_rules_enabled\",\"llm_detector_enabled\",\"enabled\"],\"title\":\"ScenarioToggleResponse\",\"description\":\"Response after toggling a scenario component\"},\"SessionContext\":{\"properties\":{\"session_id\":{\"type\":\"string\",\"title\":\"Session Id\"},\"agent_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Agent Id\"},\"project_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Project Id\"},\"total_steps\":{\"type\":\"integer\",\"title\":\"Total Steps\",\"default\":0},\"total_tool_calls\":{\"type\":\"integer\",\"title\":\"Total Tool Calls\",\"default\":0},\"tool_call_counts\":{\"additionalProperties\":{\"type\":\"integer\"},\"type\":\"object\",\"title\":\"Tool Call Counts\"},\"recent_tool_calls\":{\"items\":{\"additionalProperties\":true,\"type\":\"object\"},\"type\":\"array\",\"title\":\"Recent Tool Calls\"},\"recent_tool_results\":{\"items\":{\"additionalProperties\":true,\"type\":\"object\"},\"type\":\"array\",\"title\":\"Recent Tool Results\"},\"started_at\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"date-time\"},{\"type\":\"null\"}],\"title\":\"Started At\"},\"duration_seconds\":{\"type\":\"integer\",\"title\":\"Duration Seconds\",\"default\":0},\"is_blocked\":{\"type\":\"boolean\",\"title\":\"Is Blocked\",\"default\":false},\"block_reason\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Block Reason\"}},\"type\":\"object\",\"required\":[\"session_id\"],\"title\":\"SessionContext\",\"description\":\"Session context for scenario execution.\\nContains recent events and counters.\"},\"SessionDetail\":{\"properties\":{\"session_id\":{\"type\":\"string\",\"title\":\"Session Id\"},\"agent_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Agent Id\"},\"project_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Project Id\"},\"steps_count\":{\"type\":\"integer\",\"title\":\"Steps Count\",\"default\":0},\"incidents_count\":{\"type\":\"integer\",\"title\":\"Incidents Count\",\"default\":0},\"has_blocks\":{\"type\":\"boolean\",\"title\":\"Has Blocks\",\"default\":false},\"started_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Started At\"},\"last_activity_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Last Activity At\"},\"events\":{\"items\":{\"$ref\":\"#/components/schemas/SessionEventBrief\"},\"type\":\"array\",\"title\":\"Events\"}},\"type\":\"object\",\"required\":[\"session_id\",\"started_at\",\"last_activity_at\"],\"title\":\"SessionDetail\",\"description\":\"Detailed session info with events\"},\"SessionEventBrief\":{\"properties\":{\"step\":{\"type\":\"integer\",\"title\":\"Step\"},\"timestamp\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Timestamp\"},\"event_type\":{\"type\":\"string\",\"title\":\"Event Type\"},\"role\":{\"type\":\"string\",\"title\":\"Role\"},\"content_preview\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Content Preview\"},\"tool_names\":{\"items\":{\"type\":\"string\"},\"type\":\"array\",\"title\":\"Tool Names\",\"default\":[]},\"final_decision\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/Decision\"},{\"type\":\"null\"}]},\"has_incidents\":{\"type\":\"boolean\",\"title\":\"Has Incidents\",\"default\":false}},\"type\":\"object\",\"required\":[\"step\",\"timestamp\",\"event_type\",\"role\"],\"title\":\"SessionEventBrief\",\"description\":\"Brief event info for session view\"},\"SessionSummary\":{\"properties\":{\"session_id\":{\"type\":\"string\",\"title\":\"Session Id\"},\"agent_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Agent Id\"},\"project_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Project Id\"},\"steps_count\":{\"type\":\"integer\",\"title\":\"Steps Count\",\"default\":0},\"incidents_count\":{\"type\":\"integer\",\"title\":\"Incidents Count\",\"default\":0},\"has_blocks\":{\"type\":\"boolean\",\"title\":\"Has Blocks\",\"default\":false},\"started_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Started At\"},\"last_activity_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Last Activity At\"}},\"type\":\"object\",\"required\":[\"session_id\",\"started_at\",\"last_activity_at\"],\"title\":\"SessionSummary\",\"description\":\"Summary of agent session\"},\"Severity\":{\"type\":\"string\",\"enum\":[\"low\",\"medium\",\"high\",\"critical\"],\"title\":\"Severity\",\"description\":\"Incident severity levels\"},\"SimulateEventInput\":{\"properties\":{\"event_type\":{\"$ref\":\"#/components/schemas/EventType\"},\"role\":{\"$ref\":\"#/components/schemas/Role\",\"default\":\"user\"},\"message\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Message\"},\"tool_calls\":{\"items\":{\"$ref\":\"#/components/schemas/src__schemas__event__ToolCall\"},\"type\":\"array\",\"title\":\"Tool Calls\"},\"tool_results\":{\"items\":{\"$ref\":\"#/components/schemas/ToolResult\"},\"type\":\"array\",\"title\":\"Tool Results\"},\"meta\":{\"anyOf\":[{\"additionalProperties\":true,\"type\":\"object\"},{\"type\":\"null\"}],\"title\":\"Meta\"}},\"additionalProperties\":false,\"type\":\"object\",\"required\":[\"event_type\"],\"title\":\"SimulateEventInput\",\"description\":\"Single event in simulation batch\"},\"SimulateEventResult\":{\"properties\":{\"step\":{\"type\":\"integer\",\"title\":\"Step\"},\"event_type\":{\"$ref\":\"#/components/schemas/EventType\"},\"event_id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Event Id\"},\"content_preview\":{\"type\":\"string\",\"title\":\"Content Preview\"},\"decision\":{\"$ref\":\"#/components/schemas/Decision\"},\"incidents_created\":{\"type\":\"integer\",\"title\":\"Incidents Created\",\"default\":0},\"matched_rules\":{\"items\":{\"type\":\"string\"},\"type\":\"array\",\"title\":\"Matched Rules\"},\"block_reason\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Block Reason\"}},\"type\":\"object\",\"required\":[\"step\",\"event_type\",\"event_id\",\"content_preview\",\"decision\"],\"title\":\"SimulateEventResult\",\"description\":\"Result for single event in simulation\"},\"SimulateRequest\":{\"properties\":{\"session_id\":{\"type\":\"string\",\"maxLength\":255,\"minLength\":1,\"title\":\"Session Id\"},\"agent_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Agent Id\"},\"project_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Project Id\"},\"user_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"User Id\"},\"model\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Model\"},\"events\":{\"items\":{\"$ref\":\"#/components/schemas/SimulateEventInput\"},\"type\":\"array\",\"minItems\":1,\"title\":\"Events\"}},\"additionalProperties\":false,\"type\":\"object\",\"required\":[\"session_id\",\"events\"],\"title\":\"SimulateRequest\",\"description\":\"Request for batch simulation\"},\"SimulateResponse\":{\"properties\":{\"batch_id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Batch Id\"},\"session_id\":{\"type\":\"string\",\"title\":\"Session Id\"},\"total_events\":{\"type\":\"integer\",\"title\":\"Total Events\"},\"processed_count\":{\"type\":\"integer\",\"title\":\"Processed Count\",\"default\":0},\"skipped_count\":{\"type\":\"integer\",\"title\":\"Skipped Count\",\"default\":0},\"blocked_at_step\":{\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"null\"}],\"title\":\"Blocked At Step\"},\"incidents_count\":{\"type\":\"integer\",\"title\":\"Incidents Count\",\"default\":0},\"results\":{\"items\":{\"$ref\":\"#/components/schemas/SimulateEventResult\"},\"type\":\"array\",\"title\":\"Results\"},\"report\":{\"type\":\"string\",\"title\":\"Report\"}},\"type\":\"object\",\"required\":[\"batch_id\",\"session_id\",\"total_events\",\"results\",\"report\"],\"title\":\"SimulateResponse\",\"description\":\"Response from batch simulation\"},\"StaticRuleInfo\":{\"properties\":{\"scenario_id\":{\"type\":\"string\",\"title\":\"Scenario Id\"},\"rule_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Rule Id\"},\"matched_content\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Matched Content\"},\"details\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Details\"}},\"type\":\"object\",\"required\":[\"scenario_id\"],\"title\":\"StaticRuleInfo\",\"description\":\"Static rule trigger information\"},\"TimeIntervalReplayRequest\":{\"properties\":{\"start_time\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"date-time\"},{\"type\":\"null\"}],\"title\":\"Start Time\",\"description\":\"Start of interval. Default: 24 hours ago\"},\"end_time\":{\"anyOf\":[{\"type\":\"string\",\"format\":\"date-time\"},{\"type\":\"null\"}],\"title\":\"End Time\",\"description\":\"End of interval. Default: now\"},\"notes\":{\"anyOf\":[{\"type\":\"string\",\"maxLength\":2000},{\"type\":\"null\"}],\"title\":\"Notes\",\"description\":\"Notes about this replay\"}},\"type\":\"object\",\"title\":\"TimeIntervalReplayRequest\",\"description\":\"Request to replay events in a time interval\"},\"TimeIntervalReplayResult\":{\"properties\":{\"replay_id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Replay Id\"},\"replay_type\":{\"$ref\":\"#/components/schemas/ReplayType\",\"default\":\"time_interval\"},\"start_time\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Start Time\"},\"end_time\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"End Time\"},\"total_batches\":{\"type\":\"integer\",\"title\":\"Total Batches\"},\"total_events_replayed\":{\"type\":\"integer\",\"title\":\"Total Events Replayed\"},\"total_incidents_created\":{\"type\":\"integer\",\"title\":\"Total Incidents Created\"},\"batch_results\":{\"items\":{\"$ref\":\"#/components/schemas/BatchReplayResult\"},\"type\":\"array\",\"title\":\"Batch Results\"},\"replay_started_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Replay Started At\"},\"replay_finished_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Replay Finished At\"},\"total_time_ms\":{\"type\":\"integer\",\"title\":\"Total Time Ms\"}},\"type\":\"object\",\"required\":[\"replay_id\",\"start_time\",\"end_time\",\"total_batches\",\"total_events_replayed\",\"total_incidents_created\",\"batch_results\",\"replay_started_at\",\"replay_finished_at\",\"total_time_ms\"],\"title\":\"TimeIntervalReplayResult\",\"description\":\"Result of time interval replay\"},\"ToolCheckRequest\":{\"properties\":{\"session_id\":{\"type\":\"string\",\"title\":\"Session Id\"},\"step\":{\"type\":\"integer\",\"minimum\":0.0,\"title\":\"Step\"},\"agent_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Agent Id\"},\"project_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Project Id\"},\"tool_name\":{\"type\":\"string\",\"title\":\"Tool Name\"},\"tool_args\":{\"additionalProperties\":true,\"type\":\"object\",\"title\":\"Tool Args\"},\"conversation_history\":{\"anyOf\":[{\"items\":{\"additionalProperties\":true,\"type\":\"object\"},\"type\":\"array\"},{\"type\":\"null\"}],\"title\":\"Conversation History\"},\"meta\":{\"additionalProperties\":true,\"type\":\"object\",\"title\":\"Meta\"}},\"type\":\"object\",\"required\":[\"session_id\",\"step\",\"tool_name\"],\"title\":\"ToolCheckRequest\",\"description\":\"Request to check tool call before execution\"},\"ToolCheckResponse\":{\"properties\":{\"decision\":{\"$ref\":\"#/components/schemas/Decision\"},\"matched_rules\":{\"items\":{\"type\":\"string\"},\"type\":\"array\",\"title\":\"Matched Rules\"},\"severity\":{\"anyOf\":[{\"$ref\":\"#/components/schemas/Severity\"},{\"type\":\"null\"}]},\"message\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Message\"},\"modified_args\":{\"anyOf\":[{\"additionalProperties\":true,\"type\":\"object\"},{\"type\":\"null\"}],\"title\":\"Modified Args\"},\"execution_result\":{\"anyOf\":[{},{\"type\":\"null\"}],\"title\":\"Execution Result\"},\"execution_error\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Execution Error\"}},\"type\":\"object\",\"required\":[\"decision\"],\"title\":\"ToolCheckResponse\",\"description\":\"Response for tool check request\"},\"ToolDefinition\":{\"properties\":{\"type\":{\"type\":\"string\",\"const\":\"function\",\"title\":\"Type\",\"default\":\"function\"},\"function\":{\"$ref\":\"#/components/schemas/FunctionDefinition\"}},\"type\":\"object\",\"required\":[\"function\"],\"title\":\"ToolDefinition\",\"description\":\"Tool definition\"},\"ToolPolicyConfigResponse\":{\"properties\":{\"scenario_id\":{\"type\":\"string\",\"title\":\"Scenario Id\",\"default\":\"tool_policy\"},\"allowed_tools\":{\"items\":{\"type\":\"string\"},\"type\":\"array\",\"title\":\"Allowed Tools\",\"description\":\"Allowlist of tools (empty = all allowed)\"},\"blocked_tools\":{\"items\":{\"type\":\"string\"},\"type\":\"array\",\"title\":\"Blocked Tools\",\"description\":\"Blocklist of tools\"},\"max_steps\":{\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"null\"}],\"title\":\"Max Steps\",\"description\":\"Maximum steps limit\"},\"max_tool_calls\":{\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"null\"}],\"title\":\"Max Tool Calls\",\"description\":\"Maximum tool calls limit\"},\"max_consecutive_errors\":{\"type\":\"integer\",\"title\":\"Max Consecutive Errors\",\"description\":\"Max consecutive errors before blocking\",\"default\":3},\"argument_rules\":{\"additionalProperties\":{\"items\":{\"$ref\":\"#/components/schemas/ArgumentRule\"},\"type\":\"array\"},\"type\":\"object\",\"title\":\"Argument Rules\",\"description\":\"Argument validation rules per tool\"}},\"type\":\"object\",\"title\":\"ToolPolicyConfigResponse\",\"description\":\"Response with tool_policy specific configuration\"},\"ToolPolicyConfigUpdate\":{\"properties\":{\"allowed_tools\":{\"anyOf\":[{\"items\":{\"type\":\"string\"},\"type\":\"array\"},{\"type\":\"null\"}],\"title\":\"Allowed Tools\",\"description\":\"Allowlist of tools\"},\"blocked_tools\":{\"anyOf\":[{\"items\":{\"type\":\"string\"},\"type\":\"array\"},{\"type\":\"null\"}],\"title\":\"Blocked Tools\",\"description\":\"Blocklist of tools\"},\"max_steps\":{\"anyOf\":[{\"type\":\"integer\",\"maximum\":1000.0,\"minimum\":1.0},{\"type\":\"null\"}],\"title\":\"Max Steps\",\"description\":\"Maximum steps limit\"},\"max_tool_calls\":{\"anyOf\":[{\"type\":\"integer\",\"maximum\":1000.0,\"minimum\":1.0},{\"type\":\"null\"}],\"title\":\"Max Tool Calls\",\"description\":\"Maximum tool calls limit\"},\"max_consecutive_errors\":{\"anyOf\":[{\"type\":\"integer\",\"maximum\":100.0,\"minimum\":1.0},{\"type\":\"null\"}],\"title\":\"Max Consecutive Errors\",\"description\":\"Max consecutive errors\"}},\"additionalProperties\":false,\"type\":\"object\",\"title\":\"ToolPolicyConfigUpdate\",\"description\":\"Update tool_policy specific configuration\"},\"ToolResult\":{\"properties\":{\"tool_call_id\":{\"type\":\"string\",\"title\":\"Tool Call Id\"},\"tool_name\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Tool Name\"},\"tool_args\":{\"anyOf\":[{\"additionalProperties\":true,\"type\":\"object\"},{\"type\":\"null\"}],\"title\":\"Tool Args\"},\"success\":{\"type\":\"boolean\",\"title\":\"Success\",\"default\":true},\"output\":{\"anyOf\":[{},{\"type\":\"null\"}],\"title\":\"Output\"},\"error\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Error\"},\"execution_time_ms\":{\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"null\"}],\"title\":\"Execution Time Ms\"}},\"type\":\"object\",\"required\":[\"tool_call_id\"],\"title\":\"ToolResult\",\"description\":\"Tool execution result\"},\"ToolResultReport\":{\"properties\":{\"session_id\":{\"type\":\"string\",\"title\":\"Session Id\"},\"step\":{\"type\":\"integer\",\"minimum\":0.0,\"title\":\"Step\"},\"agent_id\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Agent Id\"},\"tool_call_id\":{\"type\":\"string\",\"title\":\"Tool Call Id\"},\"tool_name\":{\"type\":\"string\",\"title\":\"Tool Name\"},\"tool_args\":{\"additionalProperties\":true,\"type\":\"object\",\"title\":\"Tool Args\"},\"result\":{\"title\":\"Result\"},\"success\":{\"type\":\"boolean\",\"title\":\"Success\",\"default\":true},\"error\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Error\"},\"execution_time_ms\":{\"anyOf\":[{\"type\":\"integer\"},{\"type\":\"null\"}],\"title\":\"Execution Time Ms\"}},\"type\":\"object\",\"required\":[\"session_id\",\"step\",\"tool_call_id\",\"tool_name\"],\"title\":\"ToolResultReport\",\"description\":\"Report of tool execution result\"},\"UserRead\":{\"properties\":{\"login\":{\"type\":\"string\",\"title\":\"Login\"},\"role\":{\"type\":\"string\",\"title\":\"Role\"},\"permissions\":{\"items\":{\"type\":\"string\"},\"type\":\"array\",\"title\":\"Permissions\"},\"id\":{\"type\":\"string\",\"format\":\"uuid\",\"title\":\"Id\"},\"created_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Created At\"},\"updated_at\":{\"type\":\"string\",\"format\":\"date-time\",\"title\":\"Updated At\"}},\"type\":\"object\",\"required\":[\"login\",\"role\",\"id\",\"created_at\",\"updated_at\"],\"title\":\"UserRead\"},\"ValidationError\":{\"properties\":{\"loc\":{\"items\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"integer\"}]},\"type\":\"array\",\"title\":\"Location\"},\"msg\":{\"type\":\"string\",\"title\":\"Message\"},\"type\":{\"type\":\"string\",\"title\":\"Error Type\"}},\"type\":\"object\",\"required\":[\"loc\",\"msg\",\"type\"],\"title\":\"ValidationError\"},\"src__schemas__event__ToolCall\":{\"properties\":{\"id\":{\"type\":\"string\",\"title\":\"Id\"},\"name\":{\"type\":\"string\",\"title\":\"Name\"},\"arguments\":{\"additionalProperties\":true,\"type\":\"object\",\"title\":\"Arguments\"},\"server\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}],\"title\":\"Server\"}},\"type\":\"object\",\"required\":[\"name\"],\"title\":\"ToolCall\",\"description\":\"Tool call structure\"},\"src__schemas__openai__ToolCall\":{\"properties\":{\"id\":{\"type\":\"string\",\"title\":\"Id\"},\"type\":{\"type\":\"string\",\"const\":\"function\",\"title\":\"Type\",\"default\":\"function\"},\"function\":{\"$ref\":\"#/components/schemas/FunctionCall\"}},\"type\":\"object\",\"required\":[\"id\",\"function\"],\"title\":\"ToolCall\",\"description\":\"Tool call from assistant\"}}}}","stderr":"","interrupted":false,"isImage":false}} +[2026-01-25T16:10:55.346Z] [INFO] { + "type": "assistant", + "message": { + "model": "claude-opus-4-5-20251101", + "id": "msg_019QA2EhjXQWkVQPLVDJ854B", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "Let me parse the openapi.json file using jq to find related endpoints." + } + ], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 0, + "cache_creation_input_tokens": 3754, + "cache_read_input_tokens": 44752, + "cache_creation": { + "ephemeral_5m_input_tokens": 3754, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 3, + "service_tier": "standard" + }, + "context_management": null + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "8e58b1dc-801a-48ab-b111-a3c3b002ed8e" +} +[2026-01-25T16:10:56.305Z] [INFO] { + "type": "assistant", + "message": { + "model": "claude-opus-4-5-20251101", + "id": "msg_019QA2EhjXQWkVQPLVDJ854B", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "tool_use", + "id": "toolu_01VobA5iAwkrf1ofSUk7jhJu", + "name": "Bash", + "input": { + "command": "cat openapi.json | jq '.paths | keys' 2>/dev/null | head -50", + "description": "List all API paths from openapi.json" + } + } + ], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 0, + "cache_creation_input_tokens": 3754, + "cache_read_input_tokens": 44752, + "cache_creation": { + "ephemeral_5m_input_tokens": 3754, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 3, + "service_tier": "standard" + }, + "context_management": null + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "e580b0f0-4185-48c6-b433-734e54a89350" +} +[2026-01-25T16:10:56.427Z] [INFO] { + "type": "user", + "message": { + "role": "user", + "content": [ + { + "tool_use_id": "toolu_01VobA5iAwkrf1ofSUk7jhJu", + "type": "tool_result", + "content": "[\n \"/api/v1/admin/clear-database\",\n \"/api/v1/audit\",\n \"/api/v1/auth/login\",\n \"/api/v1/datasets/export\",\n \"/api/v1/events\",\n \"/api/v1/events/batch/{batch_id}\",\n \"/api/v1/events/{event_id}\",\n \"/api/v1/health\",\n \"/api/v1/incidents\",\n \"/api/v1/incidents/session/{session_id}\",\n \"/api/v1/incidents/stats\",\n \"/api/v1/incidents/{incident_id}\",\n \"/api/v1/incidents/{incident_id}/batch-events\",\n \"/api/v1/incidents/{incident_id}/matches/{match_id}\",\n \"/api/v1/incidents/{incident_id}/review\",\n \"/api/v1/llm-detectors\",\n \"/api/v1/llm-detectors/by-name/{name}\",\n \"/api/v1/llm-detectors/test\",\n \"/api/v1/llm-detectors/{detector_id}\",\n \"/api/v1/ready\",\n \"/api/v1/replay\",\n \"/api/v1/replay/batch/{batch_id}\",\n \"/api/v1/replay/time_interval\",\n \"/api/v1/replay/{batch_id}\",\n \"/api/v1/replay/{replay_id}/metrics\",\n \"/api/v1/reviews\",\n \"/api/v1/reviews/detectors\",\n \"/api/v1/scenarios\",\n \"/api/v1/scenarios/leak_detection/policies\",\n \"/api/v1/scenarios/leak_detection/policies/{rule_id}\",\n \"/api/v1/scenarios/prompt_injection/policies\",\n \"/api/v1/scenarios/prompt_injection/policies/{rule_id}\",\n \"/api/v1/scenarios/tool_policy/argument-rules/{tool_name}\",\n \"/api/v1/scenarios/tool_policy/argument-rules/{tool_name}/reorder\",\n \"/api/v1/scenarios/tool_policy/argument-rules/{tool_name}/{rule_index}\",\n \"/api/v1/scenarios/tool_policy/argument-rules/{tool_name}/{rule_index}/move\",\n \"/api/v1/scenarios/tool_policy/tool-config\",\n \"/api/v1/scenarios/{scenario_id}\",\n \"/api/v1/scenarios/{scenario_id}/base-config\",\n \"/api/v1/scenarios/{scenario_id}/llm-config\",\n \"/api/v1/scenarios/{scenario_id}/llm-detector\",\n \"/api/v1/scenarios/{scenario_id}/static-rules\",\n \"/api/v1/sessions\",\n \"/api/v1/sessions/{session_id}\",\n \"/api/v1/sessions/{session_id}/context\",\n \"/api/v1/simulate\",\n \"/api/v1/tools/check\",\n \"/api/v1/tools/result\",\n \"/v1/chat/completions\",", + "is_error": false + } + ] + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "8532e058-a3f9-4710-9806-d73ff47c3638", + "tool_use_result": { + "stdout": "[\n \"/api/v1/admin/clear-database\",\n \"/api/v1/audit\",\n \"/api/v1/auth/login\",\n \"/api/v1/datasets/export\",\n \"/api/v1/events\",\n \"/api/v1/events/batch/{batch_id}\",\n \"/api/v1/events/{event_id}\",\n \"/api/v1/health\",\n \"/api/v1/incidents\",\n \"/api/v1/incidents/session/{session_id}\",\n \"/api/v1/incidents/stats\",\n \"/api/v1/incidents/{incident_id}\",\n \"/api/v1/incidents/{incident_id}/batch-events\",\n \"/api/v1/incidents/{incident_id}/matches/{match_id}\",\n \"/api/v1/incidents/{incident_id}/review\",\n \"/api/v1/llm-detectors\",\n \"/api/v1/llm-detectors/by-name/{name}\",\n \"/api/v1/llm-detectors/test\",\n \"/api/v1/llm-detectors/{detector_id}\",\n \"/api/v1/ready\",\n \"/api/v1/replay\",\n \"/api/v1/replay/batch/{batch_id}\",\n \"/api/v1/replay/time_interval\",\n \"/api/v1/replay/{batch_id}\",\n \"/api/v1/replay/{replay_id}/metrics\",\n \"/api/v1/reviews\",\n \"/api/v1/reviews/detectors\",\n \"/api/v1/scenarios\",\n \"/api/v1/scenarios/leak_detection/policies\",\n \"/api/v1/scenarios/leak_detection/policies/{rule_id}\",\n \"/api/v1/scenarios/prompt_injection/policies\",\n \"/api/v1/scenarios/prompt_injection/policies/{rule_id}\",\n \"/api/v1/scenarios/tool_policy/argument-rules/{tool_name}\",\n \"/api/v1/scenarios/tool_policy/argument-rules/{tool_name}/reorder\",\n \"/api/v1/scenarios/tool_policy/argument-rules/{tool_name}/{rule_index}\",\n \"/api/v1/scenarios/tool_policy/argument-rules/{tool_name}/{rule_index}/move\",\n \"/api/v1/scenarios/tool_policy/tool-config\",\n \"/api/v1/scenarios/{scenario_id}\",\n \"/api/v1/scenarios/{scenario_id}/base-config\",\n \"/api/v1/scenarios/{scenario_id}/llm-config\",\n \"/api/v1/scenarios/{scenario_id}/llm-detector\",\n \"/api/v1/scenarios/{scenario_id}/static-rules\",\n \"/api/v1/sessions\",\n \"/api/v1/sessions/{session_id}\",\n \"/api/v1/sessions/{session_id}/context\",\n \"/api/v1/simulate\",\n \"/api/v1/tools/check\",\n \"/api/v1/tools/result\",\n \"/v1/chat/completions\",", + "stderr": "", + "interrupted": false, + "isImage": false + } +} +[2026-01-25T16:10:58.865Z] [INFO] { + "type": "assistant", + "message": { + "model": "claude-opus-4-5-20251101", + "id": "msg_01MY65M98zqdZxR7EWJks2tR", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "Now let me explore the batch-events endpoint and other relevant endpoints for leak detection." + } + ], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 0, + "cache_creation_input_tokens": 893, + "cache_read_input_tokens": 48506, + "cache_creation": { + "ephemeral_5m_input_tokens": 893, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 1, + "service_tier": "standard" + }, + "context_management": null + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "07a5bf49-11a8-4c82-aa42-c6b8b75593ad" +} +[2026-01-25T16:10:59.769Z] [INFO] { + "type": "assistant", + "message": { + "model": "claude-opus-4-5-20251101", + "id": "msg_01MY65M98zqdZxR7EWJks2tR", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "tool_use", + "id": "toolu_015QPTSRrUt4C4JxaomRZ59t", + "name": "Bash", + "input": { + "command": "cat openapi.json | jq '.paths[\"/api/v1/incidents/{incident_id}/batch-events\"]'", + "description": "Get batch-events endpoint details" + } + } + ], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 0, + "cache_creation_input_tokens": 893, + "cache_read_input_tokens": 48506, + "cache_creation": { + "ephemeral_5m_input_tokens": 893, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 1, + "service_tier": "standard" + }, + "context_management": null + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "03311a46-017d-4733-a304-7f0c2cd97bd1" +} +[2026-01-25T16:11:01.353Z] [INFO] { + "type": "assistant", + "message": { + "model": "claude-opus-4-5-20251101", + "id": "msg_01MY65M98zqdZxR7EWJks2tR", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "tool_use", + "id": "toolu_01ErJ89zG7qc771PScDRMvBs", + "name": "Bash", + "input": { + "command": "cat openapi.json | jq '.components.schemas.BatchEvent' 2>/dev/null || cat openapi.json | jq '.components.schemas | keys | map(select(test(\"batch|Batch|step|Step|trace|Trace\"; \"i\")))' 2>/dev/null", + "description": "Get batch event schema" + } + } + ], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 0, + "cache_creation_input_tokens": 893, + "cache_read_input_tokens": 48506, + "cache_creation": { + "ephemeral_5m_input_tokens": 893, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 1, + "service_tier": "standard" + }, + "context_management": null + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "bd94b30e-ee99-4dfe-a8f0-d153ca5daaed" +} +[2026-01-25T16:11:01.501Z] [INFO] { + "type": "user", + "message": { + "role": "user", + "content": [ + { + "tool_use_id": "toolu_015QPTSRrUt4C4JxaomRZ59t", + "type": "tool_result", + "content": "{\n \"get\": {\n \"tags\": [\n \"Incidents\"\n ],\n \"summary\": \"Get Incident Batch Events\",\n \"description\": \"Get all events for incident's batch\",\n \"operationId\": \"get_incident_batch_events_api_v1_incidents__incident_id__batch_events_get\",\n \"parameters\": [\n {\n \"name\": \"incident_id\",\n \"in\": \"path\",\n \"required\": true,\n \"schema\": {\n \"type\": \"string\",\n \"format\": \"uuid\",\n \"title\": \"Incident Id\"\n }\n },\n {\n \"name\": \"skip\",\n \"in\": \"query\",\n \"required\": false,\n \"schema\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"default\": 0,\n \"title\": \"Skip\"\n }\n },\n {\n \"name\": \"limit\",\n \"in\": \"query\",\n \"required\": false,\n \"schema\": {\n \"type\": \"integer\",\n \"maximum\": 1000,\n \"minimum\": 1,\n \"default\": 1000,\n \"title\": \"Limit\"\n }\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Successful Response\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/components/schemas/AgentEventResponse\"\n },\n \"title\": \"Response Get Incident Batch Events Api V1 Incidents Incident Id Batch Events Get\"\n }\n }\n }\n },\n \"422\": {\n \"description\": \"Validation Error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/HTTPValidationError\"\n }\n }\n }\n }\n }\n }\n}", + "is_error": false + } + ] + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "6c2df592-cb48-4ea0-957b-5f4f6eabf910", + "tool_use_result": { + "stdout": "{\n \"get\": {\n \"tags\": [\n \"Incidents\"\n ],\n \"summary\": \"Get Incident Batch Events\",\n \"description\": \"Get all events for incident's batch\",\n \"operationId\": \"get_incident_batch_events_api_v1_incidents__incident_id__batch_events_get\",\n \"parameters\": [\n {\n \"name\": \"incident_id\",\n \"in\": \"path\",\n \"required\": true,\n \"schema\": {\n \"type\": \"string\",\n \"format\": \"uuid\",\n \"title\": \"Incident Id\"\n }\n },\n {\n \"name\": \"skip\",\n \"in\": \"query\",\n \"required\": false,\n \"schema\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"default\": 0,\n \"title\": \"Skip\"\n }\n },\n {\n \"name\": \"limit\",\n \"in\": \"query\",\n \"required\": false,\n \"schema\": {\n \"type\": \"integer\",\n \"maximum\": 1000,\n \"minimum\": 1,\n \"default\": 1000,\n \"title\": \"Limit\"\n }\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Successful Response\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/components/schemas/AgentEventResponse\"\n },\n \"title\": \"Response Get Incident Batch Events Api V1 Incidents Incident Id Batch Events Get\"\n }\n }\n }\n },\n \"422\": {\n \"description\": \"Validation Error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/HTTPValidationError\"\n }\n }\n }\n }\n }\n }\n}", + "stderr": "", + "interrupted": false, + "isImage": false + } +} +[2026-01-25T16:11:01.510Z] [INFO] { + "type": "user", + "message": { + "role": "user", + "content": [ + { + "tool_use_id": "toolu_01ErJ89zG7qc771PScDRMvBs", + "type": "tool_result", + "content": "null", + "is_error": false + } + ] + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "01585548-e22c-477c-8b14-f42987e28de6", + "tool_use_result": { + "stdout": "null", + "stderr": "", + "interrupted": false, + "isImage": false + } +} +[2026-01-25T16:11:08.622Z] [INFO] { + "type": "assistant", + "message": { + "model": "claude-opus-4-5-20251101", + "id": "msg_01DbiHTQkZMVLT6mB1LJr95P", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "tool_use", + "id": "toolu_01H33PsnP7LQpQDA2uwahw4d", + "name": "TodoWrite", + "input": { + "todos": [ + { + "content": "Research existing codebase: understand ModalAlertDetails, TraceTree, and DocumentViewer components", + "status": "completed", + "activeForm": "Researching existing codebase" + }, + { + "content": "Study openapi.json for batch-events endpoint and data structures", + "status": "in_progress", + "activeForm": "Studying openapi.json for batch-events" + }, + { + "content": "Update ModalAlertDetails with two-panel layout: TraceTree (left) + DocumentViewer (right)", + "status": "pending", + "activeForm": "Implementing two-panel layout" + }, + { + "content": "Implement horizontal resizable splitter between panels", + "status": "pending", + "activeForm": "Implementing resizable splitter" + }, + { + "content": "Add synchronization between tree node selection and document display", + "status": "pending", + "activeForm": "Adding tree-document synchronization" + }, + { + "content": "Connect component to batch-events API for leak detection data", + "status": "pending", + "activeForm": "Connecting to batch-events API" + }, + { + "content": "Test and verify component responsiveness and functionality", + "status": "pending", + "activeForm": "Testing component functionality" + } + ] + } + } + ], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 0, + "cache_creation_input_tokens": 901, + "cache_read_input_tokens": 49399, + "cache_creation": { + "ephemeral_5m_input_tokens": 901, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 25, + "service_tier": "standard" + }, + "context_management": null + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "4cdea130-8b99-4051-9057-f91d15461d98" +} +[2026-01-25T16:11:08.636Z] [INFO] { + "type": "user", + "message": { + "role": "user", + "content": [ + { + "tool_use_id": "toolu_01H33PsnP7LQpQDA2uwahw4d", + "type": "tool_result", + "content": "Todos have been modified successfully. Ensure that you continue to use the todo list to track your progress. Please proceed with the current tasks if applicable" + } + ] + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "558a2567-6809-4db4-9dc4-2c7728e3d94a", + "tool_use_result": { + "oldTodos": [], + "newTodos": [ + { + "content": "Research existing codebase: understand ModalAlertDetails, TraceTree, and DocumentViewer components", + "status": "completed", + "activeForm": "Researching existing codebase" + }, + { + "content": "Study openapi.json for batch-events endpoint and data structures", + "status": "in_progress", + "activeForm": "Studying openapi.json for batch-events" + }, + { + "content": "Update ModalAlertDetails with two-panel layout: TraceTree (left) + DocumentViewer (right)", + "status": "pending", + "activeForm": "Implementing two-panel layout" + }, + { + "content": "Implement horizontal resizable splitter between panels", + "status": "pending", + "activeForm": "Implementing resizable splitter" + }, + { + "content": "Add synchronization between tree node selection and document display", + "status": "pending", + "activeForm": "Adding tree-document synchronization" + }, + { + "content": "Connect component to batch-events API for leak detection data", + "status": "pending", + "activeForm": "Connecting to batch-events API" + }, + { + "content": "Test and verify component responsiveness and functionality", + "status": "pending", + "activeForm": "Testing component functionality" + } + ] + } +} +[2026-01-25T16:11:11.223Z] [INFO] { + "type": "assistant", + "message": { + "model": "claude-opus-4-5-20251101", + "id": "msg_011mV39TZF1AUNMgCrgJs9tY", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "tool_use", + "id": "toolu_01RN1FaiLvS7BYRetpAAn52m", + "name": "Bash", + "input": { + "command": "cat openapi.json | jq '.components.schemas.AgentEventResponse'", + "description": "Get AgentEventResponse schema" + } + } + ], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 0, + "cache_creation_input_tokens": 364, + "cache_read_input_tokens": 50300, + "cache_creation": { + "ephemeral_5m_input_tokens": 364, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 25, + "service_tier": "standard" + }, + "context_management": null + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "a655ec9d-b8e9-4b92-b668-073a4686e6cf" +} +[2026-01-25T16:11:12.172Z] [INFO] { + "type": "assistant", + "message": { + "model": "claude-opus-4-5-20251101", + "id": "msg_011mV39TZF1AUNMgCrgJs9tY", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "tool_use", + "id": "toolu_01PR72DtB1niacqjEjfJrf3x", + "name": "Bash", + "input": { + "command": "cat openapi.json | jq '.components.schemas | keys | .[]' | grep -i -E \"event|step|batch\"", + "description": "Find event-related schemas" + } + } + ], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 0, + "cache_creation_input_tokens": 364, + "cache_read_input_tokens": 50300, + "cache_creation": { + "ephemeral_5m_input_tokens": 364, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 25, + "service_tier": "standard" + }, + "context_management": null + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "5806a557-90cd-4fc0-9adc-91a7dd13953d" +} +[2026-01-25T16:11:12.317Z] [INFO] { + "type": "user", + "message": { + "role": "user", + "content": [ + { + "tool_use_id": "toolu_01RN1FaiLvS7BYRetpAAn52m", + "type": "tool_result", + "content": "{\n \"properties\": {\n \"event_id\": {\n \"type\": \"string\",\n \"format\": \"uuid\",\n \"title\": \"Event Id\"\n },\n \"session_id\": {\n \"type\": \"string\",\n \"title\": \"Session Id\"\n },\n \"step\": {\n \"type\": \"integer\",\n \"minimum\": 0.0,\n \"title\": \"Step\"\n },\n \"timestamp\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"title\": \"Timestamp\"\n },\n \"event_type\": {\n \"$ref\": \"#/components/schemas/EventType\"\n },\n \"role\": {\n \"$ref\": \"#/components/schemas/Role\"\n },\n \"batch_id\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"format\": \"uuid\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Batch Id\"\n },\n \"project_id\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Project Id\"\n },\n \"agent_id\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Agent Id\"\n },\n \"user_id\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"User Id\"\n },\n \"model\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Model\"\n },\n \"message\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Message\"\n },\n \"tool_calls\": {\n \"items\": {\n \"$ref\": \"#/components/schemas/src__schemas__event__ToolCall\"\n },\n \"type\": \"array\",\n \"title\": \"Tool Calls\"\n },\n \"tool_results\": {\n \"items\": {\n \"$ref\": \"#/components/schemas/ToolResult\"\n },\n \"type\": \"array\",\n \"title\": \"Tool Results\"\n },\n \"data_source\": {\n \"anyOf\": [\n {\n \"$ref\": \"#/components/schemas/DataSource\"\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"data_sources\": {\n \"items\": {\n \"$ref\": \"#/components/schemas/DataSource\"\n },\n \"type\": \"array\",\n \"title\": \"Data Sources\"\n },\n \"meta\": {\n \"anyOf\": [\n {\n \"additionalProperties\": true,\n \"type\": \"object\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Meta\"\n },\n \"final_decision\": {\n \"anyOf\": [\n {\n \"$ref\": \"#/components/schemas/Decision\"\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"incidents_count\": {\n \"type\": \"integer\",\n \"title\": \"Incidents Count\",\n \"default\": 0\n }\n },\n \"type\": \"object\",\n \"required\": [\n \"session_id\",\n \"step\",\n \"event_type\",\n \"role\"\n ],\n \"title\": \"AgentEventResponse\",\n \"description\": \"Response schema with additional fields\",\n \"example\": {\n \"agent_id\": \"support_agent\",\n \"event_type\": \"tool_call\",\n \"role\": \"assistant\",\n \"session_id\": \"sess_abc123\",\n \"step\": 1,\n \"tool_calls\": [\n {\n \"arguments\": {\n \"body\": \"Hello\",\n \"to\": \"user@example.com\"\n },\n \"id\": \"call_1\",\n \"name\": \"send_email\"\n }\n ]\n }\n}", + "is_error": false + } + ] + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "6ec7cdf8-bcd9-4168-841b-6872b725f888", + "tool_use_result": { + "stdout": "{\n \"properties\": {\n \"event_id\": {\n \"type\": \"string\",\n \"format\": \"uuid\",\n \"title\": \"Event Id\"\n },\n \"session_id\": {\n \"type\": \"string\",\n \"title\": \"Session Id\"\n },\n \"step\": {\n \"type\": \"integer\",\n \"minimum\": 0.0,\n \"title\": \"Step\"\n },\n \"timestamp\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"title\": \"Timestamp\"\n },\n \"event_type\": {\n \"$ref\": \"#/components/schemas/EventType\"\n },\n \"role\": {\n \"$ref\": \"#/components/schemas/Role\"\n },\n \"batch_id\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"format\": \"uuid\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Batch Id\"\n },\n \"project_id\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Project Id\"\n },\n \"agent_id\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Agent Id\"\n },\n \"user_id\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"User Id\"\n },\n \"model\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Model\"\n },\n \"message\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Message\"\n },\n \"tool_calls\": {\n \"items\": {\n \"$ref\": \"#/components/schemas/src__schemas__event__ToolCall\"\n },\n \"type\": \"array\",\n \"title\": \"Tool Calls\"\n },\n \"tool_results\": {\n \"items\": {\n \"$ref\": \"#/components/schemas/ToolResult\"\n },\n \"type\": \"array\",\n \"title\": \"Tool Results\"\n },\n \"data_source\": {\n \"anyOf\": [\n {\n \"$ref\": \"#/components/schemas/DataSource\"\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"data_sources\": {\n \"items\": {\n \"$ref\": \"#/components/schemas/DataSource\"\n },\n \"type\": \"array\",\n \"title\": \"Data Sources\"\n },\n \"meta\": {\n \"anyOf\": [\n {\n \"additionalProperties\": true,\n \"type\": \"object\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Meta\"\n },\n \"final_decision\": {\n \"anyOf\": [\n {\n \"$ref\": \"#/components/schemas/Decision\"\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"incidents_count\": {\n \"type\": \"integer\",\n \"title\": \"Incidents Count\",\n \"default\": 0\n }\n },\n \"type\": \"object\",\n \"required\": [\n \"session_id\",\n \"step\",\n \"event_type\",\n \"role\"\n ],\n \"title\": \"AgentEventResponse\",\n \"description\": \"Response schema with additional fields\",\n \"example\": {\n \"agent_id\": \"support_agent\",\n \"event_type\": \"tool_call\",\n \"role\": \"assistant\",\n \"session_id\": \"sess_abc123\",\n \"step\": 1,\n \"tool_calls\": [\n {\n \"arguments\": {\n \"body\": \"Hello\",\n \"to\": \"user@example.com\"\n },\n \"id\": \"call_1\",\n \"name\": \"send_email\"\n }\n ]\n }\n}", + "stderr": "", + "interrupted": false, + "isImage": false + } +} +[2026-01-25T16:11:12.326Z] [INFO] { + "type": "user", + "message": { + "role": "user", + "content": [ + { + "tool_use_id": "toolu_01PR72DtB1niacqjEjfJrf3x", + "type": "tool_result", + "content": "\"AgentEventCreate\"\n\"AgentEventResponse\"\n\"BatchInfo\"\n\"BatchReplayResult\"\n\"EventContextItem\"\n\"EventType\"\n\"ReplayEventResult\"\n\"SessionEventBrief\"\n\"SimulateEventInput\"\n\"SimulateEventResult\"\n\"src__schemas__event__ToolCall\"", + "is_error": false + } + ] + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "6a653375-c928-47bb-a901-48c9d7d12ced", + "tool_use_result": { + "stdout": "\"AgentEventCreate\"\n\"AgentEventResponse\"\n\"BatchInfo\"\n\"BatchReplayResult\"\n\"EventContextItem\"\n\"EventType\"\n\"ReplayEventResult\"\n\"SessionEventBrief\"\n\"SimulateEventInput\"\n\"SimulateEventResult\"\n\"src__schemas__event__ToolCall\"", + "stderr": "", + "interrupted": false, + "isImage": false + } +} +[2026-01-25T16:11:15.590Z] [INFO] { + "type": "assistant", + "message": { + "model": "claude-opus-4-5-20251101", + "id": "msg_01AGQbS1taTenkJpGGeTsSSd", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "tool_use", + "id": "toolu_011qcUrAiBr5fMrZv4h6uAoz", + "name": "Bash", + "input": { + "command": "cat openapi.json | jq '.components.schemas.EventType'", + "description": "Get EventType schema" + } + } + ], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 0, + "cache_creation_input_tokens": 1422, + "cache_read_input_tokens": 50664, + "cache_creation": { + "ephemeral_5m_input_tokens": 1422, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 24, + "service_tier": "standard" + }, + "context_management": null + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "5af4f9ce-9393-4ade-a3e8-23a5e45a9943" +} +[2026-01-25T16:11:16.076Z] [INFO] { + "type": "assistant", + "message": { + "model": "claude-opus-4-5-20251101", + "id": "msg_01AGQbS1taTenkJpGGeTsSSd", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "tool_use", + "id": "toolu_01VzmukJfi5syrccs1GojEy6", + "name": "Bash", + "input": { + "command": "cat openapi.json | jq '.components.schemas[\"src__schemas__event__ToolCall\"]'", + "description": "Get ToolCall schema" + } + } + ], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 0, + "cache_creation_input_tokens": 1422, + "cache_read_input_tokens": 50664, + "cache_creation": { + "ephemeral_5m_input_tokens": 1422, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 24, + "service_tier": "standard" + }, + "context_management": null + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "394d9fbd-2e76-43cd-ad52-a3f58f7500f3" +} +[2026-01-25T16:11:16.303Z] [INFO] { + "type": "user", + "message": { + "role": "user", + "content": [ + { + "tool_use_id": "toolu_011qcUrAiBr5fMrZv4h6uAoz", + "type": "tool_result", + "content": "{\n \"type\": \"string\",\n \"enum\": [\n \"user_message\",\n \"assistant_message\",\n \"tool_call\",\n \"tool_result\",\n \"system_message\"\n ],\n \"title\": \"EventType\",\n \"description\": \"Types of agent events\"\n}", + "is_error": false + } + ] + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "2a46f186-d1b0-47fe-b50a-89fd6ea6075a", + "tool_use_result": { + "stdout": "{\n \"type\": \"string\",\n \"enum\": [\n \"user_message\",\n \"assistant_message\",\n \"tool_call\",\n \"tool_result\",\n \"system_message\"\n ],\n \"title\": \"EventType\",\n \"description\": \"Types of agent events\"\n}", + "stderr": "", + "interrupted": false, + "isImage": false + } +} +[2026-01-25T16:11:16.307Z] [INFO] { + "type": "user", + "message": { + "role": "user", + "content": [ + { + "tool_use_id": "toolu_01VzmukJfi5syrccs1GojEy6", + "type": "tool_result", + "content": "{\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"title\": \"Id\"\n },\n \"name\": {\n \"type\": \"string\",\n \"title\": \"Name\"\n },\n \"arguments\": {\n \"additionalProperties\": true,\n \"type\": \"object\",\n \"title\": \"Arguments\"\n },\n \"server\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Server\"\n }\n },\n \"type\": \"object\",\n \"required\": [\n \"name\"\n ],\n \"title\": \"ToolCall\",\n \"description\": \"Tool call structure\"\n}", + "is_error": false + } + ] + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "985a8caf-306f-4132-895a-afcabf8f2023", + "tool_use_result": { + "stdout": "{\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"title\": \"Id\"\n },\n \"name\": {\n \"type\": \"string\",\n \"title\": \"Name\"\n },\n \"arguments\": {\n \"additionalProperties\": true,\n \"type\": \"object\",\n \"title\": \"Arguments\"\n },\n \"server\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Server\"\n }\n },\n \"type\": \"object\",\n \"required\": [\n \"name\"\n ],\n \"title\": \"ToolCall\",\n \"description\": \"Tool call structure\"\n}", + "stderr": "", + "interrupted": false, + "isImage": false + } +} +[2026-01-25T16:11:18.936Z] [INFO] { + "type": "assistant", + "message": { + "model": "claude-opus-4-5-20251101", + "id": "msg_019B9rh28Sgxg2hetkL1vwNL", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "Now let me check the AlertDetails component to see how incidents are displayed and what data structure is used." + } + ], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 0, + "cache_creation_input_tokens": 491, + "cache_read_input_tokens": 52086, + "cache_creation": { + "ephemeral_5m_input_tokens": 491, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 1, + "service_tier": "standard" + }, + "context_management": null + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "b3c17979-cff0-4daa-971b-961153496224" +} +[2026-01-25T16:11:19.943Z] [INFO] { + "type": "assistant", + "message": { + "model": "claude-opus-4-5-20251101", + "id": "msg_019B9rh28Sgxg2hetkL1vwNL", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "tool_use", + "id": "toolu_01JnvrWPCkrdXj79mrXr6YAD", + "name": "Read", + "input": { + "file_path": "/tmp/gh-issue-solver-1769357403129/components/AlertList/AlertDetails.vue" + } + } + ], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 0, + "cache_creation_input_tokens": 491, + "cache_read_input_tokens": 52086, + "cache_creation": { + "ephemeral_5m_input_tokens": 491, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 1, + "service_tier": "standard" + }, + "context_management": null + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "203a6603-a656-4f86-a12e-bcf0ab8341af" +} +[2026-01-25T16:11:20.304Z] [INFO] { + "type": "assistant", + "message": { + "model": "claude-opus-4-5-20251101", + "id": "msg_019B9rh28Sgxg2hetkL1vwNL", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "tool_use", + "id": "toolu_01PhdZt53i4MKJndF8PMFHS7", + "name": "Read", + "input": { + "file_path": "/tmp/gh-issue-solver-1769357403129/components/Modal/Modal.vue" + } + } + ], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 0, + "cache_creation_input_tokens": 491, + "cache_read_input_tokens": 52086, + "cache_creation": { + "ephemeral_5m_input_tokens": 491, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 1, + "service_tier": "standard" + }, + "context_management": null + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "e451f260-e6d2-4d15-be5a-38d798d59449" +} +[2026-01-25T16:11:20.332Z] [INFO] {"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01JnvrWPCkrdXj79mrXr6YAD","type":"tool_result","content":" 1→\n 266→\n 267→\n 453→\n 454→\n 770→\n\n\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n\n"}]},"parent_tool_use_id":null,"session_id":"97387dbe-7909-417c-bea8-f62ff0bebdd6","uuid":"b5c2c179-fa2d-4882-85c0-26a9e04bb25e","tool_use_result":{"type":"text","file":{"filePath":"/tmp/gh-issue-solver-1769357403129/components/AlertList/AlertDetails.vue","content":"\n\n\n\n\n","numLines":770,"startLine":1,"totalLines":770}}} +[2026-01-25T16:11:20.360Z] [INFO] { + "type": "user", + "message": { + "role": "user", + "content": [ + { + "tool_use_id": "toolu_01PhdZt53i4MKJndF8PMFHS7", + "type": "tool_result", + "content": " 1→\n 13→\n 14→\n 159→\n 160→\n 227→\n\n\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n\n" + } + ] + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "91db6798-07c1-42ec-a5c5-d0dc2cbd1c7d", + "tool_use_result": { + "type": "text", + "file": { + "filePath": "/tmp/gh-issue-solver-1769357403129/components/Modal/Modal.vue", + "content": "\n\n\n\n\n", + "numLines": 227, + "startLine": 1, + "totalLines": 227 + } + } +} +[2026-01-25T16:11:22.992Z] [INFO] { + "type": "assistant", + "message": { + "model": "claude-opus-4-5-20251101", + "id": "msg_01Rsv8YHeiCtZSz7MVimzmPc", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "Now let me check the Modal interfaces to understand the props better." + } + ], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 0, + "cache_creation_input_tokens": 11703, + "cache_read_input_tokens": 52577, + "cache_creation": { + "ephemeral_5m_input_tokens": 11703, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 2, + "service_tier": "standard" + }, + "context_management": null + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "1bbfe2ea-1f1a-475c-8cf6-8f87278abcd7" +} +[2026-01-25T16:11:24.115Z] [INFO] { + "type": "assistant", + "message": { + "model": "claude-opus-4-5-20251101", + "id": "msg_01Rsv8YHeiCtZSz7MVimzmPc", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "tool_use", + "id": "toolu_0143WrY7kByYJ8JmQaWH3sA9", + "name": "Bash", + "input": { + "command": "find /tmp/gh-issue-solver-1769357403129/components/Modal -type f | head -10", + "description": "Find Modal component files" + } + } + ], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 0, + "cache_creation_input_tokens": 11703, + "cache_read_input_tokens": 52577, + "cache_creation": { + "ephemeral_5m_input_tokens": 11703, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 2, + "service_tier": "standard" + }, + "context_management": null + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "8b76272e-c1c4-411d-adb7-03cf65d697cb" +} +[2026-01-25T16:11:24.226Z] [INFO] { + "type": "user", + "message": { + "role": "user", + "content": [ + { + "tool_use_id": "toolu_0143WrY7kByYJ8JmQaWH3sA9", + "type": "tool_result", + "content": "/tmp/gh-issue-solver-1769357403129/components/Modal/enum/index.ts\n/tmp/gh-issue-solver-1769357403129/components/Modal/ModalAnimated.vue\n/tmp/gh-issue-solver-1769357403129/components/Modal/interface/interface.ts\n/tmp/gh-issue-solver-1769357403129/components/Modal/Modal.vue\n/tmp/gh-issue-solver-1769357403129/components/Modal/composables/useModal.ts\n/tmp/gh-issue-solver-1769357403129/components/Modal/composables/change-style-properties.ts", + "is_error": false + } + ] + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "57275478-3cb0-4590-8291-5b37218f3d5f", + "tool_use_result": { + "stdout": "/tmp/gh-issue-solver-1769357403129/components/Modal/enum/index.ts\n/tmp/gh-issue-solver-1769357403129/components/Modal/ModalAnimated.vue\n/tmp/gh-issue-solver-1769357403129/components/Modal/interface/interface.ts\n/tmp/gh-issue-solver-1769357403129/components/Modal/Modal.vue\n/tmp/gh-issue-solver-1769357403129/components/Modal/composables/useModal.ts\n/tmp/gh-issue-solver-1769357403129/components/Modal/composables/change-style-properties.ts", + "stderr": "", + "interrupted": false, + "isImage": false + } +} +[2026-01-25T16:11:26.606Z] [INFO] { + "type": "assistant", + "message": { + "model": "claude-opus-4-5-20251101", + "id": "msg_019rnNnjLxpRwSQyLAntwpep", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "tool_use", + "id": "toolu_017susSUWWLUMJ9CNiJxW83p", + "name": "Read", + "input": { + "file_path": "/tmp/gh-issue-solver-1769357403129/components/Modal/interface/interface.ts" + } + } + ], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 0, + "cache_creation_input_tokens": 277, + "cache_read_input_tokens": 64280, + "cache_creation": { + "ephemeral_5m_input_tokens": 277, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 25, + "service_tier": "standard" + }, + "context_management": null + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "68404d73-4189-4aa9-b20d-95e69abd3a86" +} +[2026-01-25T16:11:27.109Z] [INFO] { + "type": "assistant", + "message": { + "model": "claude-opus-4-5-20251101", + "id": "msg_019rnNnjLxpRwSQyLAntwpep", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "tool_use", + "id": "toolu_01WBx8khB2Sr2eQzTQynYgKE", + "name": "Read", + "input": { + "file_path": "/tmp/gh-issue-solver-1769357403129/assets/css/main.css" + } + } + ], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 0, + "cache_creation_input_tokens": 277, + "cache_read_input_tokens": 64280, + "cache_creation": { + "ephemeral_5m_input_tokens": 277, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 25, + "service_tier": "standard" + }, + "context_management": null + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "da009710-6a15-4b27-a8dc-8a7b7bd6e6a4" +} +[2026-01-25T16:11:27.163Z] [INFO] { + "type": "user", + "message": { + "role": "user", + "content": [ + { + "type": "tool_result", + "content": "File does not exist.", + "is_error": true, + "tool_use_id": "toolu_01WBx8khB2Sr2eQzTQynYgKE" + } + ] + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "103e7b10-8d52-415f-af7d-eda55b69b1d7", + "tool_use_result": "Error: File does not exist." +} +[2026-01-25T16:11:27.166Z] [INFO] { + "type": "user", + "message": { + "role": "user", + "content": [ + { + "tool_use_id": "toolu_017susSUWWLUMJ9CNiJxW83p", + "type": "tool_result", + "content": " 1→import { ModalAnimateEnum } from \"@/components/Modal/enum\";\n 2→\n 3→export interface IDialogProps {\n 4→ open: boolean;\n 5→ position?: \"right\" | \"center\" | \"bottom\";\n 6→ width?: string;\n 7→ height?: string;\n 8→}\n 9→\n 10→export interface IModalProps extends IDialogProps {\n 11→ animateType?: ModalAnimateEnum;\n 12→}\n 13→\n 14→export interface IModalEmit {\n 15→ (e: \"close\"): void;\n 16→ (e: \"unmounted\"): void;\n 17→ (e: \"end-animation\"): void;\n 18→}\n 19→\n\n\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n\n" + } + ] + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "bad29f34-5271-4140-a953-3dc0e4ea203c", + "tool_use_result": { + "type": "text", + "file": { + "filePath": "/tmp/gh-issue-solver-1769357403129/components/Modal/interface/interface.ts", + "content": "import { ModalAnimateEnum } from \"@/components/Modal/enum\";\n\nexport interface IDialogProps {\n open: boolean;\n position?: \"right\" | \"center\" | \"bottom\";\n width?: string;\n height?: string;\n}\n\nexport interface IModalProps extends IDialogProps {\n animateType?: ModalAnimateEnum;\n}\n\nexport interface IModalEmit {\n (e: \"close\"): void;\n (e: \"unmounted\"): void;\n (e: \"end-animation\"): void;\n}\n", + "numLines": 19, + "startLine": 1, + "totalLines": 19 + } + } +} +[2026-01-25T16:11:30.647Z] [INFO] { + "type": "assistant", + "message": { + "model": "claude-opus-4-5-20251101", + "id": "msg_01G7R9uWkwKaiq77KB27zy8F", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "tool_use", + "id": "toolu_01Sc17jLbGRqx6zHRKdPLCpP", + "name": "Glob", + "input": { + "pattern": "**/*.css", + "path": "/tmp/gh-issue-solver-1769357403129" + } + } + ], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 45, + "cache_creation_input_tokens": 692, + "cache_read_input_tokens": 64557, + "cache_creation": { + "ephemeral_5m_input_tokens": 692, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 26, + "service_tier": "standard" + }, + "context_management": null + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "5f7c801c-463a-46aa-9a50-375131c29bf4" +} +[2026-01-25T16:11:31.221Z] [INFO] { + "type": "user", + "message": { + "role": "user", + "content": [ + { + "tool_use_id": "toolu_01Sc17jLbGRqx6zHRKdPLCpP", + "type": "tool_result", + "content": "/tmp/gh-issue-solver-1769357403129/static/css/fonts.css\n/tmp/gh-issue-solver-1769357403129/static/css/animations.css\n/tmp/gh-issue-solver-1769357403129/static/css/variables.css\n/tmp/gh-issue-solver-1769357403129/static/css/global.css" + } + ] + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "002b34e1-44e6-490a-97bb-e4df5a98c174", + "tool_use_result": { + "filenames": [ + "/tmp/gh-issue-solver-1769357403129/static/css/fonts.css", + "/tmp/gh-issue-solver-1769357403129/static/css/animations.css", + "/tmp/gh-issue-solver-1769357403129/static/css/variables.css", + "/tmp/gh-issue-solver-1769357403129/static/css/global.css" + ], + "durationMs": 460, + "numFiles": 4, + "truncated": false + } +} +[2026-01-25T16:11:33.414Z] [INFO] { + "type": "assistant", + "message": { + "model": "claude-opus-4-5-20251101", + "id": "msg_016uBubmGcgEibuS3ahCLhMv", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "tool_use", + "id": "toolu_014fkZ7etdH9QQk8ECfXAGAi", + "name": "Read", + "input": { + "file_path": "/tmp/gh-issue-solver-1769357403129/static/css/variables.css" + } + } + ], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 0, + "cache_creation_input_tokens": 231, + "cache_read_input_tokens": 65249, + "cache_creation": { + "ephemeral_5m_input_tokens": 231, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 24, + "service_tier": "standard" + }, + "context_management": null + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "669cf20f-40b2-4b05-90ae-837933b15041" +} +[2026-01-25T16:11:33.433Z] [INFO] {"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_014fkZ7etdH9QQk8ECfXAGAi","type":"tool_result","content":" 1→:root {\n 2→ /* ============================================\n 3→ shadcn Vue Design System - Light Theme\n 4→ ============================================ */\n 5→\n 6→ /* Base colors - shadcn light mode */\n 7→ --background: hsl(0 0% 100%);\n 8→ --foreground: hsl(222.2 47.4% 11.2%);\n 9→\n 10→ /* Card colors */\n 11→ --card: hsl(0 0% 100%);\n 12→ --card-foreground: hsl(222.2 47.4% 11.2%);\n 13→\n 14→ /* Popover colors */\n 15→ --popover: hsl(0 0% 100%);\n 16→ --popover-foreground: hsl(222.2 47.4% 11.2%);\n 17→\n 18→ /* Primary colors */\n 19→ --primary: hsl(222.2 47.4% 11.2%);\n 20→ --primary-foreground: hsl(0 0% 98%);\n 21→\n 22→ /* Secondary colors */\n 23→ --secondary: hsl(210 40% 96.1%);\n 24→ --secondary-foreground: hsl(222.2 47.4% 11.2%);\n 25→\n 26→ /* Muted colors */\n 27→ --muted: hsl(210 40% 96.1%);\n 28→ --muted-foreground: hsl(215.4 16.3% 46.9%);\n 29→\n 30→ /* Accent colors */\n 31→ --accent: hsl(210 40% 96.1%);\n 32→ --accent-foreground: hsl(222.2 47.4% 11.2%);\n 33→\n 34→ /* Destructive colors */\n 35→ --destructive: hsl(0 84.2% 60.2%);\n 36→ --destructive-foreground: hsl(0 0% 98%);\n 37→\n 38→ /* Success colors - NEW */\n 39→ --success: hsl(142 71% 45%);\n 40→ --success-foreground: hsl(0 0% 98%);\n 41→ --success-muted: hsl(142 71% 45% / 0.15);\n 42→\n 43→ /* Warning colors - NEW */\n 44→ --warning: hsl(38 92% 50%);\n 45→ --warning-foreground: hsl(0 0% 98%);\n 46→ --warning-muted: hsl(38 92% 50% / 0.15);\n 47→\n 48→ /* Info colors - NEW */\n 49→ --info: hsl(230 100% 65%);\n 50→ --info-foreground: hsl(0 0% 98%);\n 51→ --info-muted: hsl(230 100% 65% / 0.15);\n 52→\n 53→ /* Border and input */\n 54→ --border: hsl(214.3 31.8% 91.4%);\n 55→ --input: hsl(214.3 31.8% 91.4%);\n 56→ --ring: hsl(222.2 47.4% 11.2%);\n 57→\n 58→ /* Radius - Square design system (minimal rounded corners) */\n 59→ --radius: 4px;\n 60→ --radius-sm: 1px;\n 61→ --radius-md: 2px;\n 62→ --radius-lg: 2px;\n 63→ --radius-xl: 2px;\n 64→ --radius-full: 2px;\n 65→\n 66→ /* ============================================\n 67→ Semantic Severity Colors\n 68→ For alerts, status indicators, and badges\n 69→ ============================================ */\n 70→\n 71→ /* Critical/Error - Red */\n 72→ --severity-critical: hsl(0 84.2% 60.2%);\n 73→ --severity-critical-foreground: hsl(0 0% 98%);\n 74→ --severity-critical-muted: hsl(0 84.2% 60.2% / 0.15);\n 75→ --severity-critical-border: hsl(0 84.2% 60.2% / 0.4);\n 76→\n 77→ /* High - Orange/Gold */\n 78→ --severity-high: hsl(38 92% 50%);\n 79→ --severity-high-foreground: hsl(0 0% 98%);\n 80→ --severity-high-muted: hsl(38 92% 50% / 0.15);\n 81→ --severity-high-border: hsl(38 92% 50% / 0.4);\n 82→\n 83→ /* Medium - Purple */\n 84→ --severity-medium: hsl(262 83% 58%);\n 85→ --severity-medium-foreground: hsl(0 0% 98%);\n 86→ --severity-medium-muted: hsl(262 83% 58% / 0.15);\n 87→ --severity-medium-border: hsl(262 83% 58% / 0.4);\n 88→\n 89→ /* Low - Green */\n 90→ --severity-low: hsl(142 71% 45%);\n 91→ --severity-low-foreground: hsl(0 0% 98%);\n 92→ --severity-low-muted: hsl(142 71% 45% / 0.15);\n 93→ --severity-low-border: hsl(142 71% 45% / 0.4);\n 94→\n 95→ /* ============================================\n 96→ Extended Color Palette\n 97→ For badges, tags, and categorization\n 98→ ============================================ */\n 99→\n 100→ /* Status Blue */\n 101→ --color-status: hsl(230 100% 65%);\n 102→ --color-status-foreground: hsl(230 100% 45%);\n 103→ --color-status-muted: hsl(230 100% 65% / 0.12);\n 104→\n 105→ /* Action Purple */\n 106→ --color-action: hsl(255 84% 60%);\n 107→ --color-action-foreground: hsl(255 84% 45%);\n 108→ --color-action-muted: hsl(255 84% 60% / 0.12);\n 109→\n 110→ /* Rule Orange */\n 111→ --color-rule: hsl(30 100% 90%);\n 112→ --color-rule-foreground: hsl(30 100% 30%);\n 113→ --color-rule-muted: hsl(30 100% 63% / 0.12);\n 114→\n 115→ /* Category Teal */\n 116→ --color-category: hsl(177 70% 70%);\n 117→ --color-category-foreground: hsl(177 70% 30%);\n 118→ --color-category-muted: hsl(177 70% 41% / 0.12);\n 119→\n 120→ /* ============================================\n 121→ Overlay and Shadow Colors\n 122→ For modals, tooltips, and dropdowns\n 123→ ============================================ */\n 124→\n 125→ --overlay: hsl(0 0% 0% / 0.5);\n 126→ --overlay-light: hsl(0 0% 0% / 0.2);\n 127→ --overlay-heavy: hsl(0 0% 0% / 0.8);\n 128→\n 129→ --shadow-sm: 0 1px 2px hsl(0 0% 0% / 0.05);\n 130→ --shadow-md: 0 4px 6px hsl(0 0% 0% / 0.1);\n 131→ --shadow-lg: 0 10px 15px hsl(0 0% 0% / 0.1);\n 132→ --shadow-xl: 0 20px 25px hsl(0 0% 0% / 0.15);\n 133→\n 134→ /* Tooltip */\n 135→ --tooltip-bg: hsl(222.2 47.4% 11.2%);\n 136→ --tooltip-foreground: hsl(0 0% 98%);\n 137→\n 138→ /* ============================================\n 139→ Legacy variable mappings (for backwards compatibility)\n 140→ These map old variable names to new shadcn values\n 141→ ============================================ */\n 142→\n 143→ /* Base colors - now using light theme */\n 144→ --local_page_color: hsl(0 0% 100%);\n 145→ --main_page_background_color: hsl(0 0% 98%);\n 146→\n 147→ /* Text colors - dark text for light backgrounds */\n 148→ --main_text_selected: hsl(222.2 47.4% 11.2%);\n 149→ --main_text_not_selected: hsl(215.4 16.3% 46.9%);\n 150→ --component_content_text: hsl(215.4 16.3% 46.9%);\n 151→ --filter_text: hsl(215.4 16.3% 46.9%);\n 152→\n 153→ /* Borders - light gray */\n 154→ --border_color: hsl(214.3 31.8% 91.4%);\n 155→ --border_color_light: hsl(214.3 31.8% 85%);\n 156→\n 157→ /* Navigation - light backgrounds */\n 158→ --background_nav_color: hsl(0 0% 100%);\n 159→ --background_nav_color_hover: hsl(210 40% 96.1%);\n 160→\n 161→ /* Input fields - light theme */\n 162→ --input_color: hsl(215.4 16.3% 46.9%);\n 163→ --input_bg: hsl(0 0% 100%);\n 164→ --input_bg_hover: hsl(210 40% 96.1%);\n 165→ --disabled_bg_color: hsl(210 40% 96.1%);\n 166→\n 167→ /* Severity colors - keeping semantic meaning (legacy aliases) */\n 168→ --stat_red: var(--severity-critical);\n 169→ --stat_red_light: hsl(0 84.2% 70%);\n 170→ --stat_gold: var(--severity-high);\n 171→ --stat_gold_light: hsl(45 93% 47%);\n 172→ --stat_purp: var(--severity-medium);\n 173→ --stat_purp_light: hsl(262 83% 68%);\n 174→ --stat_green: var(--severity-low);\n 175→ --stat_green_light: hsl(142 71% 55%);\n 176→\n 177→ /* Alternative severity naming (legacy aliases) */\n 178→ --stat_critical_color: var(--severity-critical);\n 179→ --stat_high_color: var(--severity-high);\n 180→ --stat_normal_color: var(--severity-medium);\n 181→ --stat_low_color: var(--severity-low);\n 182→\n 183→ /* Main page colors */\n 184→ --main_page_color: hsl(0 0% 100%);\n 185→ --main_page_text_color: hsl(222.2 47.4% 11.2%);\n 186→\n 187→ /* Chat colors - light theme */\n 188→ --chat_border_color: hsl(214.3 31.8% 91.4%);\n 189→ --chat_text_color: hsl(222.2 47.4% 11.2%);\n 190→ --chat_block_color: hsl(210 40% 96.1%);\n 191→ --request_block_color: hsl(222.2 47.4% 11.2%);\n 192→ --response_block_color: hsl(210 40% 96.1%);\n 193→\n 194→ /* Button colors - light theme */\n 195→ --simpe_button_color: hsl(210 40% 96.1%);\n 196→ --simpe_button_color_hover: hsl(214.3 31.8% 91.4%);\n 197→ --simpe_button_color_active: hsl(214.3 31.8% 85%);\n 198→\n 199→ /* Primary action color */\n 200→ --primary_color: hsl(222.2 47.4% 11.2%);\n 201→ --primary_color_hover: hsl(222.2 47.4% 20%);\n 202→ --primary_color_active: hsl(222.2 47.4% 30%);\n 203→\n 204→ /* Modal colors - light theme */\n 205→ --modal_background: hsl(0 0% 100%);\n 206→ --modal_inner_background: hsl(0 0% 98%);\n 207→\n 208→ /* Switcher gradient - light theme */\n 209→ --switcher_background_start: hsl(0 0% 98%);\n 210→ --switcher_background_end: hsl(210 40% 96.1%);\n 211→\n 212→ /* Gradient container - light theme */\n 213→ --gradiend_container_background: hsl(0 0% 100%);\n 214→ --gradiend_container_text: hsl(222.2 47.4% 11.2%);\n 215→\n 216→ /* Focus and active states */\n 217→ --focus_ring_color: hsla(222.2 47.4% 11.2% / 0.2);\n 218→ --active_bg_color: hsla(222.2 47.4% 11.2% / 0.1);\n 219→\n 220→ /* Component background (for cards, modals, etc.) */\n 221→ --component_bg: hsl(0 0% 100%);\n 222→\n 223→ /* ============================================\n 224→ Dense Layout System - Compact spacing\n 225→ ============================================ */\n 226→\n 227→ /* Spacing scale - reduced for dense layout */\n 228→ --spacing-xs: 2px;\n 229→ --spacing-sm: 4px;\n 230→ --spacing-md: 8px;\n 231→ --spacing-lg: 12px;\n 232→ --spacing-xl: 16px;\n 233→ --spacing-2xl: 20px;\n 234→\n 235→ /* Component heights - compact */\n 236→ --input-height: 32px;\n 237→ --button-height: 32px;\n 238→ --nav-item-height: 48px;\n 239→\n 240→ /* Gap values - tighter */\n 241→ --gap-xs: 2px;\n 242→ --gap-sm: 4px;\n 243→ --gap-md: 6px;\n 244→ --gap-lg: 8px;\n 245→ --gap-xl: 12px;\n 246→\n 247→ /* Line heights - tighter for dense text */\n 248→ --line-height-tight: 1.2;\n 249→ --line-height-normal: 1.4;\n 250→ --line-height-relaxed: 1.5;\n 251→}\n 252→\n 253→/* ============================================\n 254→ Dark Theme\n 255→ Apply by adding .dark class to html or body element\n 256→ ============================================ */\n 257→.dark {\n 258→ /* Base colors - dark mode */\n 259→ --background: hsl(224 71% 4%);\n 260→ --foreground: hsl(213 31% 91%);\n 261→\n 262→ /* Card colors */\n 263→ --card: hsl(224 71% 4%);\n 264→ --card-foreground: hsl(213 31% 91%);\n 265→\n 266→ /* Popover colors */\n 267→ --popover: hsl(224 71% 4%);\n 268→ --popover-foreground: hsl(213 31% 91%);\n 269→\n 270→ /* Primary colors */\n 271→ --primary: hsl(210 40% 98%);\n 272→ --primary-foreground: hsl(222.2 47.4% 11.2%);\n 273→\n 274→ /* Secondary colors */\n 275→ --secondary: hsl(222.2 47.4% 11.2%);\n 276→ --secondary-foreground: hsl(210 40% 98%);\n 277→\n 278→ /* Muted colors */\n 279→ --muted: hsl(223 47% 11%);\n 280→ --muted-foreground: hsl(215.4 16.3% 56.9%);\n 281→\n 282→ /* Accent colors */\n 283→ --accent: hsl(216 34% 17%);\n 284→ --accent-foreground: hsl(210 40% 98%);\n 285→\n 286→ /* Destructive colors */\n 287→ --destructive: hsl(0 63% 31%);\n 288→ --destructive-foreground: hsl(0 0% 98%);\n 289→\n 290→ /* Success colors */\n 291→ --success: hsl(142 71% 35%);\n 292→ --success-foreground: hsl(0 0% 98%);\n 293→ --success-muted: hsl(142 71% 35% / 0.2);\n 294→\n 295→ /* Warning colors */\n 296→ --warning: hsl(38 92% 40%);\n 297→ --warning-foreground: hsl(0 0% 98%);\n 298→ --warning-muted: hsl(38 92% 40% / 0.2);\n 299→\n 300→ /* Info colors */\n 301→ --info: hsl(230 100% 55%);\n 302→ --info-foreground: hsl(0 0% 98%);\n 303→ --info-muted: hsl(230 100% 55% / 0.2);\n 304→\n 305→ /* Border and input */\n 306→ --border: hsl(216 34% 17%);\n 307→ --input: hsl(216 34% 17%);\n 308→ --ring: hsl(216 34% 17%);\n 309→\n 310→ /* Severity Colors - Dark Mode */\n 311→ --severity-critical: hsl(0 84.2% 50%);\n 312→ --severity-critical-foreground: hsl(0 0% 98%);\n 313→ --severity-critical-muted: hsl(0 84.2% 50% / 0.2);\n 314→ --severity-critical-border: hsl(0 84.2% 50% / 0.5);\n 315→\n 316→ --severity-high: hsl(38 92% 45%);\n 317→ --severity-high-foreground: hsl(0 0% 98%);\n 318→ --severity-high-muted: hsl(38 92% 45% / 0.2);\n 319→ --severity-high-border: hsl(38 92% 45% / 0.5);\n 320→\n 321→ --severity-medium: hsl(262 83% 50%);\n 322→ --severity-medium-foreground: hsl(0 0% 98%);\n 323→ --severity-medium-muted: hsl(262 83% 50% / 0.2);\n 324→ --severity-medium-border: hsl(262 83% 50% / 0.5);\n 325→\n 326→ --severity-low: hsl(142 71% 40%);\n 327→ --severity-low-foreground: hsl(0 0% 98%);\n 328→ --severity-low-muted: hsl(142 71% 40% / 0.2);\n 329→ --severity-low-border: hsl(142 71% 40% / 0.5);\n 330→\n 331→ /* Extended Colors - Dark Mode */\n 332→ --color-status: hsl(230 100% 55%);\n 333→ --color-status-foreground: hsl(230 100% 75%);\n 334→ --color-status-muted: hsl(230 100% 55% / 0.15);\n 335→\n 336→ --color-action: hsl(255 84% 55%);\n 337→ --color-action-foreground: hsl(255 84% 75%);\n 338→ --color-action-muted: hsl(255 84% 55% / 0.15);\n 339→\n 340→ --color-rule: hsl(30 100% 55%);\n 341→ --color-rule-foreground: hsl(30 100% 70%);\n 342→ --color-rule-muted: hsl(30 100% 55% / 0.15);\n 343→\n 344→ --color-category: hsl(177 70% 38%);\n 345→ --color-category-foreground: hsl(177 70% 60%);\n 346→ --color-category-muted: hsl(177 70% 38% / 0.15);\n 347→\n 348→ /* Overlay and Shadow - Dark Mode */\n 349→ --overlay: hsl(0 0% 0% / 0.7);\n 350→ --overlay-light: hsl(0 0% 0% / 0.4);\n 351→ --overlay-heavy: hsl(0 0% 0% / 0.9);\n 352→\n 353→ --shadow-sm: 0 1px 2px hsl(0 0% 0% / 0.3);\n 354→ --shadow-md: 0 4px 6px hsl(0 0% 0% / 0.4);\n 355→ --shadow-lg: 0 10px 15px hsl(0 0% 0% / 0.4);\n 356→ --shadow-xl: 0 20px 25px hsl(0 0% 0% / 0.5);\n 357→\n 358→ /* Tooltip - Dark Mode */\n 359→ --tooltip-bg: hsl(210 40% 98%);\n 360→ --tooltip-foreground: hsl(222.2 47.4% 11.2%);\n 361→\n 362→ /* Legacy - Dark Mode */\n 363→ --local_page_color: hsl(224 71% 4%);\n 364→ --main_page_background_color: hsl(220 65% 3%);\n 365→\n 366→ --main_text_selected: hsl(213 31% 91%);\n 367→ --main_text_not_selected: hsl(215.4 16.3% 56.9%);\n 368→ --component_content_text: hsl(215.4 16.3% 56.9%);\n 369→ --filter_text: hsl(215.4 16.3% 56.9%);\n 370→\n 371→ --border_color: hsl(216 34% 17%);\n 372→ --border_color_light: hsl(216 34% 25%);\n 373→\n 374→ --background_nav_color: hsl(224 71% 4%);\n 375→ --background_nav_color_hover: hsl(216 34% 17%);\n 376→\n 377→ --input_color: hsl(215.4 16.3% 56.9%);\n 378→ --input_bg: hsl(224 71% 4%);\n 379→ --input_bg_hover: hsl(216 34% 17%);\n 380→ --disabled_bg_color: hsl(223 47% 11%);\n 381→\n 382→ --stat_red_light: hsl(0 84.2% 40%);\n 383→ --stat_gold_light: hsl(45 93% 35%);\n 384→ --stat_purp_light: hsl(262 83% 45%);\n 385→ --stat_green_light: hsl(142 71% 35%);\n 386→\n 387→ --main_page_color: hsl(224 71% 4%);\n 388→ --main_page_text_color: hsl(213 31% 91%);\n 389→\n 390→ --chat_border_color: hsl(216 34% 17%);\n 391→ --chat_text_color: hsl(213 31% 91%);\n 392→ --chat_block_color: hsl(223 47% 11%);\n 393→ --request_block_color: hsl(216 34% 17%);\n 394→ --response_block_color: hsl(223 47% 11%);\n 395→\n 396→ --simpe_button_color: hsl(223 47% 11%);\n 397→ --simpe_button_color_hover: hsl(216 34% 17%);\n 398→ --simpe_button_color_active: hsl(216 34% 25%);\n 399→\n 400→ --primary_color: hsl(210 40% 98%);\n 401→ --primary_color_hover: hsl(210 40% 88%);\n 402→ --primary_color_active: hsl(210 40% 78%);\n 403→\n 404→ --modal_background: hsl(224 71% 4%);\n 405→ --modal_inner_background: hsl(220 65% 3%);\n 406→\n 407→ --switcher_background_start: hsl(220 65% 3%);\n 408→ --switcher_background_end: hsl(223 47% 11%);\n 409→\n 410→ --gradiend_container_background: hsl(224 71% 4%);\n 411→ --gradiend_container_text: hsl(213 31% 91%);\n 412→\n 413→ --focus_ring_color: hsla(210 40% 98% / 0.3);\n 414→ --active_bg_color: hsla(210 40% 98% / 0.1);\n 415→\n 416→ --component_bg: hsl(224 71% 4%);\n 417→}\n 418→\n 419→/* ============================================\n 420→ Utility Classes\n 421→ Common color applications for quick styling\n 422→ ============================================ */\n 423→\n 424→/* Text Colors */\n 425→.text-foreground {\n 426→ color: var(--foreground);\n 427→}\n 428→.text-muted {\n 429→ color: var(--muted-foreground);\n 430→}\n 431→.text-primary {\n 432→ color: var(--primary);\n 433→}\n 434→.text-secondary {\n 435→ color: var(--secondary-foreground);\n 436→}\n 437→.text-destructive {\n 438→ color: var(--destructive);\n 439→}\n 440→.text-success {\n 441→ color: var(--success);\n 442→}\n 443→.text-warning {\n 444→ color: var(--warning);\n 445→}\n 446→.text-info {\n 447→ color: var(--info);\n 448→}\n 449→\n 450→/* Background Colors */\n 451→.bg-background {\n 452→ background-color: var(--background);\n 453→}\n 454→.bg-foreground {\n 455→ background-color: var(--foreground);\n 456→}\n 457→.bg-card {\n 458→ background-color: var(--card);\n 459→}\n 460→.bg-popover {\n 461→ background-color: var(--popover);\n 462→}\n 463→.bg-primary {\n 464→ background-color: var(--primary);\n 465→}\n 466→.bg-secondary {\n 467→ background-color: var(--secondary);\n 468→}\n 469→.bg-muted {\n 470→ background-color: var(--muted);\n 471→}\n 472→.bg-accent {\n 473→ background-color: var(--accent);\n 474→}\n 475→.bg-destructive {\n 476→ background-color: var(--destructive);\n 477→}\n 478→.bg-success {\n 479→ background-color: var(--success);\n 480→}\n 481→.bg-warning {\n 482→ background-color: var(--warning);\n 483→}\n 484→.bg-info {\n 485→ background-color: var(--info);\n 486→}\n 487→\n 488→/* Muted Backgrounds */\n 489→.bg-destructive-muted {\n 490→ background-color: var(--severity-critical-muted);\n 491→}\n 492→.bg-success-muted {\n 493→ background-color: var(--success-muted);\n 494→}\n 495→.bg-warning-muted {\n 496→ background-color: var(--warning-muted);\n 497→}\n 498→.bg-info-muted {\n 499→ background-color: var(--info-muted);\n 500→}\n 501→\n 502→/* Border Colors */\n 503→.border-border {\n 504→ border-color: var(--border);\n 505→}\n 506→.border-input {\n 507→ border-color: var(--input);\n 508→}\n 509→.border-primary {\n 510→ border-color: var(--primary);\n 511→}\n 512→.border-secondary {\n 513→ border-color: var(--secondary);\n 514→}\n 515→.border-destructive {\n 516→ border-color: var(--destructive);\n 517→}\n 518→.border-success {\n 519→ border-color: var(--success);\n 520→}\n 521→.border-warning {\n 522→ border-color: var(--warning);\n 523→}\n 524→.border-info {\n 525→ border-color: var(--info);\n 526→}\n 527→\n 528→/* Severity Classes */\n 529→.severity-critical {\n 530→ background-color: var(--severity-critical-muted);\n 531→ border-color: var(--severity-critical-border);\n 532→ color: var(--severity-critical);\n 533→}\n 534→\n 535→.severity-high {\n 536→ background-color: var(--severity-high-muted);\n 537→ border-color: var(--severity-high-border);\n 538→ color: var(--severity-high);\n 539→}\n 540→\n 541→.severity-medium {\n 542→ background-color: var(--severity-medium-muted);\n 543→ border-color: var(--severity-medium-border);\n 544→ color: var(--severity-medium);\n 545→}\n 546→\n 547→.severity-low {\n 548→ background-color: var(--severity-low-muted);\n 549→ border-color: var(--severity-low-border);\n 550→ color: var(--severity-low);\n 551→}\n 552→\n 553→/* Ring/Focus Classes */\n 554→.ring-ring {\n 555→ --tw-ring-color: var(--ring);\n 556→}\n 557→.ring-primary {\n 558→ --tw-ring-color: var(--primary);\n 559→}\n 560→.ring-destructive {\n 561→ --tw-ring-color: var(--destructive);\n 562→}\n 563→.ring-success {\n 564→ --tw-ring-color: var(--success);\n 565→}\n 566→\n 567→/* Status/Category Badge Classes */\n 568→.badge-status {\n 569→ background-color: var(--color-status-muted);\n 570→ border-color: var(--color-status);\n 571→ color: var(--color-status-foreground);\n 572→}\n 573→\n 574→.badge-action {\n 575→ background-color: var(--color-action-muted);\n 576→ border-color: var(--color-action);\n 577→ color: var(--color-action-foreground);\n 578→}\n 579→\n 580→.badge-rule {\n 581→ background-color: var(--color-rule-muted);\n 582→ border-color: var(--color-rule);\n 583→ color: var(--color-rule-foreground);\n 584→}\n 585→\n 586→.badge-category {\n 587→ background-color: var(--color-category-muted);\n 588→ border-color: var(--color-category);\n 589→ color: var(--color-category-foreground);\n 590→}\n 591→\n 592→/* Shadow Utilities */\n 593→.shadow-sm {\n 594→ box-shadow: var(--shadow-sm);\n 595→}\n 596→.shadow-md {\n 597→ box-shadow: var(--shadow-md);\n 598→}\n 599→.shadow-lg {\n 600→ box-shadow: var(--shadow-lg);\n 601→}\n 602→.shadow-xl {\n 603→ box-shadow: var(--shadow-xl);\n 604→}\n 605→\n 606→/* Overlay Utilities */\n 607→.overlay {\n 608→ background-color: var(--overlay);\n 609→}\n 610→.overlay-light {\n 611→ background-color: var(--overlay-light);\n 612→}\n 613→.overlay-heavy {\n 614→ background-color: var(--overlay-heavy);\n 615→}\n 616→\n\n\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n\n"}]},"parent_tool_use_id":null,"session_id":"97387dbe-7909-417c-bea8-f62ff0bebdd6","uuid":"316ba25c-5428-47d1-a385-248b87eec03a","tool_use_result":{"type":"text","file":{"filePath":"/tmp/gh-issue-solver-1769357403129/static/css/variables.css","content":":root {\n /* ============================================\n shadcn Vue Design System - Light Theme\n ============================================ */\n\n /* Base colors - shadcn light mode */\n --background: hsl(0 0% 100%);\n --foreground: hsl(222.2 47.4% 11.2%);\n\n /* Card colors */\n --card: hsl(0 0% 100%);\n --card-foreground: hsl(222.2 47.4% 11.2%);\n\n /* Popover colors */\n --popover: hsl(0 0% 100%);\n --popover-foreground: hsl(222.2 47.4% 11.2%);\n\n /* Primary colors */\n --primary: hsl(222.2 47.4% 11.2%);\n --primary-foreground: hsl(0 0% 98%);\n\n /* Secondary colors */\n --secondary: hsl(210 40% 96.1%);\n --secondary-foreground: hsl(222.2 47.4% 11.2%);\n\n /* Muted colors */\n --muted: hsl(210 40% 96.1%);\n --muted-foreground: hsl(215.4 16.3% 46.9%);\n\n /* Accent colors */\n --accent: hsl(210 40% 96.1%);\n --accent-foreground: hsl(222.2 47.4% 11.2%);\n\n /* Destructive colors */\n --destructive: hsl(0 84.2% 60.2%);\n --destructive-foreground: hsl(0 0% 98%);\n\n /* Success colors - NEW */\n --success: hsl(142 71% 45%);\n --success-foreground: hsl(0 0% 98%);\n --success-muted: hsl(142 71% 45% / 0.15);\n\n /* Warning colors - NEW */\n --warning: hsl(38 92% 50%);\n --warning-foreground: hsl(0 0% 98%);\n --warning-muted: hsl(38 92% 50% / 0.15);\n\n /* Info colors - NEW */\n --info: hsl(230 100% 65%);\n --info-foreground: hsl(0 0% 98%);\n --info-muted: hsl(230 100% 65% / 0.15);\n\n /* Border and input */\n --border: hsl(214.3 31.8% 91.4%);\n --input: hsl(214.3 31.8% 91.4%);\n --ring: hsl(222.2 47.4% 11.2%);\n\n /* Radius - Square design system (minimal rounded corners) */\n --radius: 4px;\n --radius-sm: 1px;\n --radius-md: 2px;\n --radius-lg: 2px;\n --radius-xl: 2px;\n --radius-full: 2px;\n\n /* ============================================\n Semantic Severity Colors\n For alerts, status indicators, and badges\n ============================================ */\n\n /* Critical/Error - Red */\n --severity-critical: hsl(0 84.2% 60.2%);\n --severity-critical-foreground: hsl(0 0% 98%);\n --severity-critical-muted: hsl(0 84.2% 60.2% / 0.15);\n --severity-critical-border: hsl(0 84.2% 60.2% / 0.4);\n\n /* High - Orange/Gold */\n --severity-high: hsl(38 92% 50%);\n --severity-high-foreground: hsl(0 0% 98%);\n --severity-high-muted: hsl(38 92% 50% / 0.15);\n --severity-high-border: hsl(38 92% 50% / 0.4);\n\n /* Medium - Purple */\n --severity-medium: hsl(262 83% 58%);\n --severity-medium-foreground: hsl(0 0% 98%);\n --severity-medium-muted: hsl(262 83% 58% / 0.15);\n --severity-medium-border: hsl(262 83% 58% / 0.4);\n\n /* Low - Green */\n --severity-low: hsl(142 71% 45%);\n --severity-low-foreground: hsl(0 0% 98%);\n --severity-low-muted: hsl(142 71% 45% / 0.15);\n --severity-low-border: hsl(142 71% 45% / 0.4);\n\n /* ============================================\n Extended Color Palette\n For badges, tags, and categorization\n ============================================ */\n\n /* Status Blue */\n --color-status: hsl(230 100% 65%);\n --color-status-foreground: hsl(230 100% 45%);\n --color-status-muted: hsl(230 100% 65% / 0.12);\n\n /* Action Purple */\n --color-action: hsl(255 84% 60%);\n --color-action-foreground: hsl(255 84% 45%);\n --color-action-muted: hsl(255 84% 60% / 0.12);\n\n /* Rule Orange */\n --color-rule: hsl(30 100% 90%);\n --color-rule-foreground: hsl(30 100% 30%);\n --color-rule-muted: hsl(30 100% 63% / 0.12);\n\n /* Category Teal */\n --color-category: hsl(177 70% 70%);\n --color-category-foreground: hsl(177 70% 30%);\n --color-category-muted: hsl(177 70% 41% / 0.12);\n\n /* ============================================\n Overlay and Shadow Colors\n For modals, tooltips, and dropdowns\n ============================================ */\n\n --overlay: hsl(0 0% 0% / 0.5);\n --overlay-light: hsl(0 0% 0% / 0.2);\n --overlay-heavy: hsl(0 0% 0% / 0.8);\n\n --shadow-sm: 0 1px 2px hsl(0 0% 0% / 0.05);\n --shadow-md: 0 4px 6px hsl(0 0% 0% / 0.1);\n --shadow-lg: 0 10px 15px hsl(0 0% 0% / 0.1);\n --shadow-xl: 0 20px 25px hsl(0 0% 0% / 0.15);\n\n /* Tooltip */\n --tooltip-bg: hsl(222.2 47.4% 11.2%);\n --tooltip-foreground: hsl(0 0% 98%);\n\n /* ============================================\n Legacy variable mappings (for backwards compatibility)\n These map old variable names to new shadcn values\n ============================================ */\n\n /* Base colors - now using light theme */\n --local_page_color: hsl(0 0% 100%);\n --main_page_background_color: hsl(0 0% 98%);\n\n /* Text colors - dark text for light backgrounds */\n --main_text_selected: hsl(222.2 47.4% 11.2%);\n --main_text_not_selected: hsl(215.4 16.3% 46.9%);\n --component_content_text: hsl(215.4 16.3% 46.9%);\n --filter_text: hsl(215.4 16.3% 46.9%);\n\n /* Borders - light gray */\n --border_color: hsl(214.3 31.8% 91.4%);\n --border_color_light: hsl(214.3 31.8% 85%);\n\n /* Navigation - light backgrounds */\n --background_nav_color: hsl(0 0% 100%);\n --background_nav_color_hover: hsl(210 40% 96.1%);\n\n /* Input fields - light theme */\n --input_color: hsl(215.4 16.3% 46.9%);\n --input_bg: hsl(0 0% 100%);\n --input_bg_hover: hsl(210 40% 96.1%);\n --disabled_bg_color: hsl(210 40% 96.1%);\n\n /* Severity colors - keeping semantic meaning (legacy aliases) */\n --stat_red: var(--severity-critical);\n --stat_red_light: hsl(0 84.2% 70%);\n --stat_gold: var(--severity-high);\n --stat_gold_light: hsl(45 93% 47%);\n --stat_purp: var(--severity-medium);\n --stat_purp_light: hsl(262 83% 68%);\n --stat_green: var(--severity-low);\n --stat_green_light: hsl(142 71% 55%);\n\n /* Alternative severity naming (legacy aliases) */\n --stat_critical_color: var(--severity-critical);\n --stat_high_color: var(--severity-high);\n --stat_normal_color: var(--severity-medium);\n --stat_low_color: var(--severity-low);\n\n /* Main page colors */\n --main_page_color: hsl(0 0% 100%);\n --main_page_text_color: hsl(222.2 47.4% 11.2%);\n\n /* Chat colors - light theme */\n --chat_border_color: hsl(214.3 31.8% 91.4%);\n --chat_text_color: hsl(222.2 47.4% 11.2%);\n --chat_block_color: hsl(210 40% 96.1%);\n --request_block_color: hsl(222.2 47.4% 11.2%);\n --response_block_color: hsl(210 40% 96.1%);\n\n /* Button colors - light theme */\n --simpe_button_color: hsl(210 40% 96.1%);\n --simpe_button_color_hover: hsl(214.3 31.8% 91.4%);\n --simpe_button_color_active: hsl(214.3 31.8% 85%);\n\n /* Primary action color */\n --primary_color: hsl(222.2 47.4% 11.2%);\n --primary_color_hover: hsl(222.2 47.4% 20%);\n --primary_color_active: hsl(222.2 47.4% 30%);\n\n /* Modal colors - light theme */\n --modal_background: hsl(0 0% 100%);\n --modal_inner_background: hsl(0 0% 98%);\n\n /* Switcher gradient - light theme */\n --switcher_background_start: hsl(0 0% 98%);\n --switcher_background_end: hsl(210 40% 96.1%);\n\n /* Gradient container - light theme */\n --gradiend_container_background: hsl(0 0% 100%);\n --gradiend_container_text: hsl(222.2 47.4% 11.2%);\n\n /* Focus and active states */\n --focus_ring_color: hsla(222.2 47.4% 11.2% / 0.2);\n --active_bg_color: hsla(222.2 47.4% 11.2% / 0.1);\n\n /* Component background (for cards, modals, etc.) */\n --component_bg: hsl(0 0% 100%);\n\n /* ============================================\n Dense Layout System - Compact spacing\n ============================================ */\n\n /* Spacing scale - reduced for dense layout */\n --spacing-xs: 2px;\n --spacing-sm: 4px;\n --spacing-md: 8px;\n --spacing-lg: 12px;\n --spacing-xl: 16px;\n --spacing-2xl: 20px;\n\n /* Component heights - compact */\n --input-height: 32px;\n --button-height: 32px;\n --nav-item-height: 48px;\n\n /* Gap values - tighter */\n --gap-xs: 2px;\n --gap-sm: 4px;\n --gap-md: 6px;\n --gap-lg: 8px;\n --gap-xl: 12px;\n\n /* Line heights - tighter for dense text */\n --line-height-tight: 1.2;\n --line-height-normal: 1.4;\n --line-height-relaxed: 1.5;\n}\n\n/* ============================================\n Dark Theme\n Apply by adding .dark class to html or body element\n ============================================ */\n.dark {\n /* Base colors - dark mode */\n --background: hsl(224 71% 4%);\n --foreground: hsl(213 31% 91%);\n\n /* Card colors */\n --card: hsl(224 71% 4%);\n --card-foreground: hsl(213 31% 91%);\n\n /* Popover colors */\n --popover: hsl(224 71% 4%);\n --popover-foreground: hsl(213 31% 91%);\n\n /* Primary colors */\n --primary: hsl(210 40% 98%);\n --primary-foreground: hsl(222.2 47.4% 11.2%);\n\n /* Secondary colors */\n --secondary: hsl(222.2 47.4% 11.2%);\n --secondary-foreground: hsl(210 40% 98%);\n\n /* Muted colors */\n --muted: hsl(223 47% 11%);\n --muted-foreground: hsl(215.4 16.3% 56.9%);\n\n /* Accent colors */\n --accent: hsl(216 34% 17%);\n --accent-foreground: hsl(210 40% 98%);\n\n /* Destructive colors */\n --destructive: hsl(0 63% 31%);\n --destructive-foreground: hsl(0 0% 98%);\n\n /* Success colors */\n --success: hsl(142 71% 35%);\n --success-foreground: hsl(0 0% 98%);\n --success-muted: hsl(142 71% 35% / 0.2);\n\n /* Warning colors */\n --warning: hsl(38 92% 40%);\n --warning-foreground: hsl(0 0% 98%);\n --warning-muted: hsl(38 92% 40% / 0.2);\n\n /* Info colors */\n --info: hsl(230 100% 55%);\n --info-foreground: hsl(0 0% 98%);\n --info-muted: hsl(230 100% 55% / 0.2);\n\n /* Border and input */\n --border: hsl(216 34% 17%);\n --input: hsl(216 34% 17%);\n --ring: hsl(216 34% 17%);\n\n /* Severity Colors - Dark Mode */\n --severity-critical: hsl(0 84.2% 50%);\n --severity-critical-foreground: hsl(0 0% 98%);\n --severity-critical-muted: hsl(0 84.2% 50% / 0.2);\n --severity-critical-border: hsl(0 84.2% 50% / 0.5);\n\n --severity-high: hsl(38 92% 45%);\n --severity-high-foreground: hsl(0 0% 98%);\n --severity-high-muted: hsl(38 92% 45% / 0.2);\n --severity-high-border: hsl(38 92% 45% / 0.5);\n\n --severity-medium: hsl(262 83% 50%);\n --severity-medium-foreground: hsl(0 0% 98%);\n --severity-medium-muted: hsl(262 83% 50% / 0.2);\n --severity-medium-border: hsl(262 83% 50% / 0.5);\n\n --severity-low: hsl(142 71% 40%);\n --severity-low-foreground: hsl(0 0% 98%);\n --severity-low-muted: hsl(142 71% 40% / 0.2);\n --severity-low-border: hsl(142 71% 40% / 0.5);\n\n /* Extended Colors - Dark Mode */\n --color-status: hsl(230 100% 55%);\n --color-status-foreground: hsl(230 100% 75%);\n --color-status-muted: hsl(230 100% 55% / 0.15);\n\n --color-action: hsl(255 84% 55%);\n --color-action-foreground: hsl(255 84% 75%);\n --color-action-muted: hsl(255 84% 55% / 0.15);\n\n --color-rule: hsl(30 100% 55%);\n --color-rule-foreground: hsl(30 100% 70%);\n --color-rule-muted: hsl(30 100% 55% / 0.15);\n\n --color-category: hsl(177 70% 38%);\n --color-category-foreground: hsl(177 70% 60%);\n --color-category-muted: hsl(177 70% 38% / 0.15);\n\n /* Overlay and Shadow - Dark Mode */\n --overlay: hsl(0 0% 0% / 0.7);\n --overlay-light: hsl(0 0% 0% / 0.4);\n --overlay-heavy: hsl(0 0% 0% / 0.9);\n\n --shadow-sm: 0 1px 2px hsl(0 0% 0% / 0.3);\n --shadow-md: 0 4px 6px hsl(0 0% 0% / 0.4);\n --shadow-lg: 0 10px 15px hsl(0 0% 0% / 0.4);\n --shadow-xl: 0 20px 25px hsl(0 0% 0% / 0.5);\n\n /* Tooltip - Dark Mode */\n --tooltip-bg: hsl(210 40% 98%);\n --tooltip-foreground: hsl(222.2 47.4% 11.2%);\n\n /* Legacy - Dark Mode */\n --local_page_color: hsl(224 71% 4%);\n --main_page_background_color: hsl(220 65% 3%);\n\n --main_text_selected: hsl(213 31% 91%);\n --main_text_not_selected: hsl(215.4 16.3% 56.9%);\n --component_content_text: hsl(215.4 16.3% 56.9%);\n --filter_text: hsl(215.4 16.3% 56.9%);\n\n --border_color: hsl(216 34% 17%);\n --border_color_light: hsl(216 34% 25%);\n\n --background_nav_color: hsl(224 71% 4%);\n --background_nav_color_hover: hsl(216 34% 17%);\n\n --input_color: hsl(215.4 16.3% 56.9%);\n --input_bg: hsl(224 71% 4%);\n --input_bg_hover: hsl(216 34% 17%);\n --disabled_bg_color: hsl(223 47% 11%);\n\n --stat_red_light: hsl(0 84.2% 40%);\n --stat_gold_light: hsl(45 93% 35%);\n --stat_purp_light: hsl(262 83% 45%);\n --stat_green_light: hsl(142 71% 35%);\n\n --main_page_color: hsl(224 71% 4%);\n --main_page_text_color: hsl(213 31% 91%);\n\n --chat_border_color: hsl(216 34% 17%);\n --chat_text_color: hsl(213 31% 91%);\n --chat_block_color: hsl(223 47% 11%);\n --request_block_color: hsl(216 34% 17%);\n --response_block_color: hsl(223 47% 11%);\n\n --simpe_button_color: hsl(223 47% 11%);\n --simpe_button_color_hover: hsl(216 34% 17%);\n --simpe_button_color_active: hsl(216 34% 25%);\n\n --primary_color: hsl(210 40% 98%);\n --primary_color_hover: hsl(210 40% 88%);\n --primary_color_active: hsl(210 40% 78%);\n\n --modal_background: hsl(224 71% 4%);\n --modal_inner_background: hsl(220 65% 3%);\n\n --switcher_background_start: hsl(220 65% 3%);\n --switcher_background_end: hsl(223 47% 11%);\n\n --gradiend_container_background: hsl(224 71% 4%);\n --gradiend_container_text: hsl(213 31% 91%);\n\n --focus_ring_color: hsla(210 40% 98% / 0.3);\n --active_bg_color: hsla(210 40% 98% / 0.1);\n\n --component_bg: hsl(224 71% 4%);\n}\n\n/* ============================================\n Utility Classes\n Common color applications for quick styling\n ============================================ */\n\n/* Text Colors */\n.text-foreground {\n color: var(--foreground);\n}\n.text-muted {\n color: var(--muted-foreground);\n}\n.text-primary {\n color: var(--primary);\n}\n.text-secondary {\n color: var(--secondary-foreground);\n}\n.text-destructive {\n color: var(--destructive);\n}\n.text-success {\n color: var(--success);\n}\n.text-warning {\n color: var(--warning);\n}\n.text-info {\n color: var(--info);\n}\n\n/* Background Colors */\n.bg-background {\n background-color: var(--background);\n}\n.bg-foreground {\n background-color: var(--foreground);\n}\n.bg-card {\n background-color: var(--card);\n}\n.bg-popover {\n background-color: var(--popover);\n}\n.bg-primary {\n background-color: var(--primary);\n}\n.bg-secondary {\n background-color: var(--secondary);\n}\n.bg-muted {\n background-color: var(--muted);\n}\n.bg-accent {\n background-color: var(--accent);\n}\n.bg-destructive {\n background-color: var(--destructive);\n}\n.bg-success {\n background-color: var(--success);\n}\n.bg-warning {\n background-color: var(--warning);\n}\n.bg-info {\n background-color: var(--info);\n}\n\n/* Muted Backgrounds */\n.bg-destructive-muted {\n background-color: var(--severity-critical-muted);\n}\n.bg-success-muted {\n background-color: var(--success-muted);\n}\n.bg-warning-muted {\n background-color: var(--warning-muted);\n}\n.bg-info-muted {\n background-color: var(--info-muted);\n}\n\n/* Border Colors */\n.border-border {\n border-color: var(--border);\n}\n.border-input {\n border-color: var(--input);\n}\n.border-primary {\n border-color: var(--primary);\n}\n.border-secondary {\n border-color: var(--secondary);\n}\n.border-destructive {\n border-color: var(--destructive);\n}\n.border-success {\n border-color: var(--success);\n}\n.border-warning {\n border-color: var(--warning);\n}\n.border-info {\n border-color: var(--info);\n}\n\n/* Severity Classes */\n.severity-critical {\n background-color: var(--severity-critical-muted);\n border-color: var(--severity-critical-border);\n color: var(--severity-critical);\n}\n\n.severity-high {\n background-color: var(--severity-high-muted);\n border-color: var(--severity-high-border);\n color: var(--severity-high);\n}\n\n.severity-medi +[2026-01-25T16:11:33.446Z] [INFO] um {\n background-color: var(--severity-medium-muted);\n border-color: var(--severity-medium-border);\n color: var(--severity-medium);\n}\n\n.severity-low {\n background-color: var(--severity-low-muted);\n border-color: var(--severity-low-border);\n color: var(--severity-low);\n}\n\n/* Ring/Focus Classes */\n.ring-ring {\n --tw-ring-color: var(--ring);\n}\n.ring-primary {\n --tw-ring-color: var(--primary);\n}\n.ring-destructive {\n --tw-ring-color: var(--destructive);\n}\n.ring-success {\n --tw-ring-color: var(--success);\n}\n\n/* Status/Category Badge Classes */\n.badge-status {\n background-color: var(--color-status-muted);\n border-color: var(--color-status);\n color: var(--color-status-foreground);\n}\n\n.badge-action {\n background-color: var(--color-action-muted);\n border-color: var(--color-action);\n color: var(--color-action-foreground);\n}\n\n.badge-rule {\n background-color: var(--color-rule-muted);\n border-color: var(--color-rule);\n color: var(--color-rule-foreground);\n}\n\n.badge-category {\n background-color: var(--color-category-muted);\n border-color: var(--color-category);\n color: var(--color-category-foreground);\n}\n\n/* Shadow Utilities */\n.shadow-sm {\n box-shadow: var(--shadow-sm);\n}\n.shadow-md {\n box-shadow: var(--shadow-md);\n}\n.shadow-lg {\n box-shadow: var(--shadow-lg);\n}\n.shadow-xl {\n box-shadow: var(--shadow-xl);\n}\n\n/* Overlay Utilities */\n.overlay {\n background-color: var(--overlay);\n}\n.overlay-light {\n background-color: var(--overlay-light);\n}\n.overlay-heavy {\n background-color: var(--overlay-heavy);\n}\n","numLines":616,"startLine":1,"totalLines":616}}} +[2026-01-25T16:11:36.341Z] [INFO] { + "type": "assistant", + "message": { + "model": "claude-opus-4-5-20251101", + "id": "msg_011FGn9F6u2F7QtReax3rnij", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "Now I have a good understanding of the codebase. Let me update my todo list and start implementing the ModalAlertDetails component." + } + ], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 0, + "cache_creation_input_tokens": 9195, + "cache_read_input_tokens": 65480, + "cache_creation": { + "ephemeral_5m_input_tokens": 9195, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 2, + "service_tier": "standard" + }, + "context_management": null + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "217e78d8-93e1-4b09-b59d-19ae375eeca8" +} +[2026-01-25T16:11:41.828Z] [INFO] { + "type": "assistant", + "message": { + "model": "claude-opus-4-5-20251101", + "id": "msg_011FGn9F6u2F7QtReax3rnij", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "tool_use", + "id": "toolu_01AqCizda3B1yyx4qXZmjnjQ", + "name": "TodoWrite", + "input": { + "todos": [ + { + "content": "Research existing codebase: understand ModalAlertDetails, TraceTree, and DocumentViewer components", + "status": "completed", + "activeForm": "Researching existing codebase" + }, + { + "content": "Study openapi.json for batch-events endpoint and data structures", + "status": "completed", + "activeForm": "Studying openapi.json for batch-events" + }, + { + "content": "Update ModalAlertDetails with two-panel layout: TraceTree (left) + DocumentViewer (right)", + "status": "in_progress", + "activeForm": "Implementing two-panel layout" + }, + { + "content": "Implement horizontal resizable splitter between panels", + "status": "pending", + "activeForm": "Implementing resizable splitter" + }, + { + "content": "Add synchronization between tree node selection and document display", + "status": "pending", + "activeForm": "Adding tree-document synchronization" + }, + { + "content": "Connect component to batch-events API for leak detection data", + "status": "pending", + "activeForm": "Connecting to batch-events API" + }, + { + "content": "Test and verify component responsiveness and functionality", + "status": "pending", + "activeForm": "Testing component functionality" + } + ] + } + } + ], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 0, + "cache_creation_input_tokens": 9195, + "cache_read_input_tokens": 65480, + "cache_creation": { + "ephemeral_5m_input_tokens": 9195, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 2, + "service_tier": "standard" + }, + "context_management": null + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "35a08575-8333-4042-ab06-174ea32cdc3d" +} +[2026-01-25T16:11:41.843Z] [INFO] { + "type": "user", + "message": { + "role": "user", + "content": [ + { + "tool_use_id": "toolu_01AqCizda3B1yyx4qXZmjnjQ", + "type": "tool_result", + "content": "Todos have been modified successfully. Ensure that you continue to use the todo list to track your progress. Please proceed with the current tasks if applicable" + } + ] + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "567bc2f9-567d-4488-b193-c7df2d976071", + "tool_use_result": { + "oldTodos": [ + { + "content": "Research existing codebase: understand ModalAlertDetails, TraceTree, and DocumentViewer components", + "status": "completed", + "activeForm": "Researching existing codebase" + }, + { + "content": "Study openapi.json for batch-events endpoint and data structures", + "status": "in_progress", + "activeForm": "Studying openapi.json for batch-events" + }, + { + "content": "Update ModalAlertDetails with two-panel layout: TraceTree (left) + DocumentViewer (right)", + "status": "pending", + "activeForm": "Implementing two-panel layout" + }, + { + "content": "Implement horizontal resizable splitter between panels", + "status": "pending", + "activeForm": "Implementing resizable splitter" + }, + { + "content": "Add synchronization between tree node selection and document display", + "status": "pending", + "activeForm": "Adding tree-document synchronization" + }, + { + "content": "Connect component to batch-events API for leak detection data", + "status": "pending", + "activeForm": "Connecting to batch-events API" + }, + { + "content": "Test and verify component responsiveness and functionality", + "status": "pending", + "activeForm": "Testing component functionality" + } + ], + "newTodos": [ + { + "content": "Research existing codebase: understand ModalAlertDetails, TraceTree, and DocumentViewer components", + "status": "completed", + "activeForm": "Researching existing codebase" + }, + { + "content": "Study openapi.json for batch-events endpoint and data structures", + "status": "completed", + "activeForm": "Studying openapi.json for batch-events" + }, + { + "content": "Update ModalAlertDetails with two-panel layout: TraceTree (left) + DocumentViewer (right)", + "status": "in_progress", + "activeForm": "Implementing two-panel layout" + }, + { + "content": "Implement horizontal resizable splitter between panels", + "status": "pending", + "activeForm": "Implementing resizable splitter" + }, + { + "content": "Add synchronization between tree node selection and document display", + "status": "pending", + "activeForm": "Adding tree-document synchronization" + }, + { + "content": "Connect component to batch-events API for leak detection data", + "status": "pending", + "activeForm": "Connecting to batch-events API" + }, + { + "content": "Test and verify component responsiveness and functionality", + "status": "pending", + "activeForm": "Testing component functionality" + } + ] + } +} +[2026-01-25T16:11:44.228Z] [INFO] { + "type": "assistant", + "message": { + "model": "claude-opus-4-5-20251101", + "id": "msg_01RLSKfm6wiMU8yvdNCUcNAR", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "Now let me implement the updated ModalAlertDetails component with the two-panel layout." + } + ], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 0, + "cache_creation_input_tokens": 394, + "cache_read_input_tokens": 74675, + "cache_creation": { + "ephemeral_5m_input_tokens": 394, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 4, + "service_tier": "standard" + }, + "context_management": null + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "4549f632-b092-436c-b5d4-1053272de575" +} +[2026-01-25T16:12:33.386Z] [INFO] { + "type": "assistant", + "message": { + "model": "claude-opus-4-5-20251101", + "id": "msg_01RLSKfm6wiMU8yvdNCUcNAR", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "tool_use", + "id": "toolu_01Prfk3bh1ChfyWD1pQjvVqu", + "name": "Write", + "input": { + "file_path": "/tmp/gh-issue-solver-1769357403129/components/AlertList/ModalAlertDetails.vue", + "content": "\n\n\n\n\n" + } + } + ], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 0, + "cache_creation_input_tokens": 394, + "cache_read_input_tokens": 74675, + "cache_creation": { + "ephemeral_5m_input_tokens": 394, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 4, + "service_tier": "standard" + }, + "context_management": null + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "fa39af20-fda1-447a-8fa0-901942ac885e" +} +[2026-01-25T16:12:33.429Z] [INFO] {"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01Prfk3bh1ChfyWD1pQjvVqu","type":"tool_result","content":"The file /tmp/gh-issue-solver-1769357403129/components/AlertList/ModalAlertDetails.vue has been updated. Here's the result of running `cat -n` on a snippet of the edited file:\n 1→\n 277→\n 278→\n 368→\n 369→\n 601→"}]},"parent_tool_use_id":null,"session_id":"97387dbe-7909-417c-bea8-f62ff0bebdd6","uuid":"0b91e7b8-df26-489b-b42f-5c342b2eacc4","tool_use_result":{"type":"update","filePath":"/tmp/gh-issue-solver-1769357403129/components/AlertList/ModalAlertDetails.vue","content":"\n\n\n\n\n","structuredPatch":[{"oldStart":1,"oldLines":40,"newStart":1,"newLines":600,"lines":[" "," "," "," "," "]}],"originalFile":"\n\n\n\n\n"}} +[2026-01-25T16:12:36.406Z] [INFO] { + "type": "assistant", + "message": { + "model": "claude-opus-4-5-20251101", + "id": "msg_018KYUy4sLCpH6mYT5NUKZ8m", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "Now let me update the todo list and commit this change." + } + ], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 0, + "cache_creation_input_tokens": 11038, + "cache_read_input_tokens": 75069, + "cache_creation": { + "ephemeral_5m_input_tokens": 11038, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 2, + "service_tier": "standard" + }, + "context_management": null + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "77fd93b7-fde2-4167-ae10-28a54a931f28" +} +[2026-01-25T16:12:42.527Z] [INFO] { + "type": "assistant", + "message": { + "model": "claude-opus-4-5-20251101", + "id": "msg_018KYUy4sLCpH6mYT5NUKZ8m", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "tool_use", + "id": "toolu_01RGdo7xYAsW6VkavGq2iiQy", + "name": "TodoWrite", + "input": { + "todos": [ + { + "content": "Research existing codebase: understand ModalAlertDetails, TraceTree, and DocumentViewer components", + "status": "completed", + "activeForm": "Researching existing codebase" + }, + { + "content": "Study openapi.json for batch-events endpoint and data structures", + "status": "completed", + "activeForm": "Studying openapi.json for batch-events" + }, + { + "content": "Update ModalAlertDetails with two-panel layout: TraceTree (left) + DocumentViewer (right)", + "status": "completed", + "activeForm": "Implementing two-panel layout" + }, + { + "content": "Implement horizontal resizable splitter between panels", + "status": "completed", + "activeForm": "Implementing resizable splitter" + }, + { + "content": "Add synchronization between tree node selection and document display", + "status": "completed", + "activeForm": "Adding tree-document synchronization" + }, + { + "content": "Connect component to batch-events API for leak detection data", + "status": "completed", + "activeForm": "Connecting to batch-events API" + }, + { + "content": "Test and verify component responsiveness and functionality", + "status": "in_progress", + "activeForm": "Testing component functionality" + } + ] + } + } + ], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 0, + "cache_creation_input_tokens": 11038, + "cache_read_input_tokens": 75069, + "cache_creation": { + "ephemeral_5m_input_tokens": 11038, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 2, + "service_tier": "standard" + }, + "context_management": null + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "291f6832-6231-403a-b37b-211a1b071eb3" +} +[2026-01-25T16:12:42.540Z] [INFO] { + "type": "user", + "message": { + "role": "user", + "content": [ + { + "tool_use_id": "toolu_01RGdo7xYAsW6VkavGq2iiQy", + "type": "tool_result", + "content": "Todos have been modified successfully. Ensure that you continue to use the todo list to track your progress. Please proceed with the current tasks if applicable" + } + ] + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "5a760e76-0a39-4613-94dc-9518974cd534", + "tool_use_result": { + "oldTodos": [ + { + "content": "Research existing codebase: understand ModalAlertDetails, TraceTree, and DocumentViewer components", + "status": "completed", + "activeForm": "Researching existing codebase" + }, + { + "content": "Study openapi.json for batch-events endpoint and data structures", + "status": "completed", + "activeForm": "Studying openapi.json for batch-events" + }, + { + "content": "Update ModalAlertDetails with two-panel layout: TraceTree (left) + DocumentViewer (right)", + "status": "in_progress", + "activeForm": "Implementing two-panel layout" + }, + { + "content": "Implement horizontal resizable splitter between panels", + "status": "pending", + "activeForm": "Implementing resizable splitter" + }, + { + "content": "Add synchronization between tree node selection and document display", + "status": "pending", + "activeForm": "Adding tree-document synchronization" + }, + { + "content": "Connect component to batch-events API for leak detection data", + "status": "pending", + "activeForm": "Connecting to batch-events API" + }, + { + "content": "Test and verify component responsiveness and functionality", + "status": "pending", + "activeForm": "Testing component functionality" + } + ], + "newTodos": [ + { + "content": "Research existing codebase: understand ModalAlertDetails, TraceTree, and DocumentViewer components", + "status": "completed", + "activeForm": "Researching existing codebase" + }, + { + "content": "Study openapi.json for batch-events endpoint and data structures", + "status": "completed", + "activeForm": "Studying openapi.json for batch-events" + }, + { + "content": "Update ModalAlertDetails with two-panel layout: TraceTree (left) + DocumentViewer (right)", + "status": "completed", + "activeForm": "Implementing two-panel layout" + }, + { + "content": "Implement horizontal resizable splitter between panels", + "status": "completed", + "activeForm": "Implementing resizable splitter" + }, + { + "content": "Add synchronization between tree node selection and document display", + "status": "completed", + "activeForm": "Adding tree-document synchronization" + }, + { + "content": "Connect component to batch-events API for leak detection data", + "status": "completed", + "activeForm": "Connecting to batch-events API" + }, + { + "content": "Test and verify component responsiveness and functionality", + "status": "in_progress", + "activeForm": "Testing component functionality" + } + ] + } +} +[2026-01-25T16:12:45.227Z] [INFO] { + "type": "assistant", + "message": { + "model": "claude-opus-4-5-20251101", + "id": "msg_01TTaEhRFwKLviC6VJZR6nMU", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "Let me check if there are any TypeScript or linting configurations in the project that I should run." + } + ], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 0, + "cache_creation_input_tokens": 377, + "cache_read_input_tokens": 86107, + "cache_creation": { + "ephemeral_5m_input_tokens": 377, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 3, + "service_tier": "standard" + }, + "context_management": null + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "9142c65b-a40b-4efc-a811-d6ac78fe4fd8" +} +[2026-01-25T16:12:46.286Z] [INFO] { + "type": "assistant", + "message": { + "model": "claude-opus-4-5-20251101", + "id": "msg_01TTaEhRFwKLviC6VJZR6nMU", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "tool_use", + "id": "toolu_01LMHyHySTxa4S8Rjpw9MNzp", + "name": "Read", + "input": { + "file_path": "/tmp/gh-issue-solver-1769357403129/package.json" + } + } + ], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 0, + "cache_creation_input_tokens": 377, + "cache_read_input_tokens": 86107, + "cache_creation": { + "ephemeral_5m_input_tokens": 377, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 3, + "service_tier": "standard" + }, + "context_management": null + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "ef2e561a-acf0-4fee-ac15-a37accde044f" +} +[2026-01-25T16:12:46.330Z] [INFO] { + "type": "user", + "message": { + "role": "user", + "content": [ + { + "tool_use_id": "toolu_01LMHyHySTxa4S8Rjpw9MNzp", + "type": "tool_result", + "content": " 1→{\n 2→ \"name\": \"nuxt-app\",\n 3→ \"private\": true,\n 4→ \"type\": \"module\",\n 5→ \"scripts\": {\n 6→ \"build\": \"nuxt build\",\n 7→ \"dev\": \"nuxt dev\",\n 8→ \"generate\": \"nuxt generate\",\n 9→ \"preview\": \"nuxt preview\",\n 10→ \"postinstall\": \"nuxt prepare\",\n 11→ \"test:e2e\": \"playwright test\",\n 12→ \"test:e2e:chromium\": \"playwright test --project=chromium\",\n 13→ \"test:e2e:firefox\": \"playwright test --project=firefox\"\n 14→ },\n 15→ \"dependencies\": {\n 16→ \"@pinia/nuxt\": \"^0.11.3\",\n 17→ \"marked\": \"^17.0.1\",\n 18→ \"nuxt\": \"^3.15.4\",\n 19→ \"pinia\": \"^3.0.4\",\n 20→ \"typescript\": \"^5.9.3\"\n 21→ },\n 22→ \"devDependencies\": {\n 23→ \"@playwright/test\": \"^1.58.0\",\n 24→ \"prettier\": \"^3.5.2\"\n 25→ }\n 26→}\n 27→\n\n\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n\n" + } + ] + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "a1347bd3-57ad-4faf-93c4-3a69371c7967", + "tool_use_result": { + "type": "text", + "file": { + "filePath": "/tmp/gh-issue-solver-1769357403129/package.json", + "content": "{\n \"name\": \"nuxt-app\",\n \"private\": true,\n \"type\": \"module\",\n \"scripts\": {\n \"build\": \"nuxt build\",\n \"dev\": \"nuxt dev\",\n \"generate\": \"nuxt generate\",\n \"preview\": \"nuxt preview\",\n \"postinstall\": \"nuxt prepare\",\n \"test:e2e\": \"playwright test\",\n \"test:e2e:chromium\": \"playwright test --project=chromium\",\n \"test:e2e:firefox\": \"playwright test --project=firefox\"\n },\n \"dependencies\": {\n \"@pinia/nuxt\": \"^0.11.3\",\n \"marked\": \"^17.0.1\",\n \"nuxt\": \"^3.15.4\",\n \"pinia\": \"^3.0.4\",\n \"typescript\": \"^5.9.3\"\n },\n \"devDependencies\": {\n \"@playwright/test\": \"^1.58.0\",\n \"prettier\": \"^3.5.2\"\n }\n}\n", + "numLines": 27, + "startLine": 1, + "totalLines": 27 + } + } +} +[2026-01-25T16:12:48.695Z] [INFO] { + "type": "assistant", + "message": { + "model": "claude-opus-4-5-20251101", + "id": "msg_0111obVKnkGR4GnxpV8DHpMn", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "Let me install dependencies and verify the build passes." + } + ], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 0, + "cache_creation_input_tokens": 529, + "cache_read_input_tokens": 86484, + "cache_creation": { + "ephemeral_5m_input_tokens": 529, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 3, + "service_tier": "standard" + }, + "context_management": null + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "0daf3d91-181d-4c7c-96b2-f51906177b3d" +} +[2026-01-25T16:12:49.602Z] [INFO] { + "type": "assistant", + "message": { + "model": "claude-opus-4-5-20251101", + "id": "msg_0111obVKnkGR4GnxpV8DHpMn", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "tool_use", + "id": "toolu_01S8dXo6fFZrapSA6BdZayzU", + "name": "Bash", + "input": { + "command": "npm install 2>&1 | tail -20 &", + "description": "Install npm dependencies in background", + "run_in_background": true + } + } + ], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 0, + "cache_creation_input_tokens": 529, + "cache_read_input_tokens": 86484, + "cache_creation": { + "ephemeral_5m_input_tokens": 529, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 3, + "service_tier": "standard" + }, + "context_management": null + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "f4e66689-5ccc-4c88-a2c3-c724eb48a914" +} +[2026-01-25T16:12:49.671Z] [INFO] { + "type": "user", + "message": { + "role": "user", + "content": [ + { + "tool_use_id": "toolu_01S8dXo6fFZrapSA6BdZayzU", + "type": "tool_result", + "content": "Command running in background with ID: b737658. Output is being written to: /tmp/claude/-tmp-gh-issue-solver-1769357403129/tasks/b737658.output", + "is_error": false + } + ] + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "70973ee0-d970-4499-ab37-1ca09f23bdef", + "tool_use_result": { + "stdout": "", + "stderr": "", + "interrupted": false, + "isImage": false, + "backgroundTaskId": "b737658" + } +} +[2026-01-25T16:12:52.430Z] [INFO] { + "type": "assistant", + "message": { + "model": "claude-opus-4-5-20251101", + "id": "msg_01Q8zLD3huVAFFYZXvunjivb", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "tool_use", + "id": "toolu_01LPYpPNySed9rYjKMCrv4Kd", + "name": "TaskOutput", + "input": { + "task_id": "b737658", + "block": true, + "timeout": 120000 + } + } + ], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 0, + "cache_creation_input_tokens": 172, + "cache_read_input_tokens": 87013, + "cache_creation": { + "ephemeral_5m_input_tokens": 172, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 26, + "service_tier": "standard" + }, + "context_management": null + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "e63b3a14-2491-485e-9122-cd69d89e1eb9" +} +[2026-01-25T16:12:52.549Z] [INFO] { + "type": "user", + "message": { + "role": "user", + "content": [ + { + "tool_use_id": "toolu_01LPYpPNySed9rYjKMCrv4Kd", + "type": "tool_result", + "content": "success\n\nb737658\n\nlocal_bash\n\ncompleted\n\n0" + } + ] + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "c4a23de0-4b9e-4205-bb24-0aa67d68353c", + "tool_use_result": { + "retrieval_status": "success", + "task": { + "task_id": "b737658", + "task_type": "local_bash", + "status": "completed", + "description": "Install npm dependencies in background", + "output": "", + "exitCode": 0 + } + } +} +[2026-01-25T16:12:56.999Z] [INFO] { + "type": "assistant", + "message": { + "model": "claude-opus-4-5-20251101", + "id": "msg_014Qcm1qLQsE7jxCN9dtJJBY", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "tool_use", + "id": "toolu_01ECauZ8n4cHhPBF5mpHNRHT", + "name": "Bash", + "input": { + "command": "npm run build 2>&1 | tee build.log | tail -50", + "description": "Build the Nuxt application to verify no errors", + "timeout": 300000 + } + } + ], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 0, + "cache_creation_input_tokens": 162, + "cache_read_input_tokens": 87185, + "cache_creation": { + "ephemeral_5m_input_tokens": 162, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 25, + "service_tier": "standard" + }, + "context_management": null + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "2c891f62-3eaf-446a-be8c-ea6a10ba7713" +} +[2026-01-25T16:13:11.598Z] [INFO] { + "type": "user", + "message": { + "role": "user", + "content": [ + { + "tool_use_id": "toolu_01ECauZ8n4cHhPBF5mpHNRHT", + "type": "tool_result", + "content": " ├─ .output/server/chunks/build/navlayout-styles.DSfpObLI.mjs (600 B) (316 B gzip)\n ├─ .output/server/chunks/build/navlayout-styles.DSfpObLI.mjs.map (321 B) (213 B gzip)\n ├─ .output/server/chunks/build/navlayoutColorless-styles.BTrCrVeu.mjs (540 B) (298 B gzip)\n ├─ .output/server/chunks/build/navlayoutColorless-styles.BTrCrVeu.mjs.map (348 B) (217 B gzip)\n ├─ .output/server/chunks/build/navlayoutColorless-Vlw9pDxj.mjs (1.7 kB) (690 B gzip)\n ├─ .output/server/chunks/build/navlayoutColorless-Vlw9pDxj.mjs.map (1.11 kB) (451 B gzip)\n ├─ .output/server/chunks/build/nuxt-link-DBBKtryy.mjs (9.76 kB) (2.55 kB gzip)\n ├─ .output/server/chunks/build/nuxt-link-DBBKtryy.mjs.map (8.85 kB) (2.09 kB gzip)\n ├─ .output/server/chunks/build/replay-CX8J0mXD.mjs (30.4 kB) (4.98 kB gzip)\n ├─ .output/server/chunks/build/replay-CX8J0mXD.mjs.map (20.6 kB) (3.87 kB gzip)\n ├─ .output/server/chunks/build/replay-styles.DX2mwOEC.mjs (7.6 kB) (1.69 kB gzip)\n ├─ .output/server/chunks/build/replay-styles.DX2mwOEC.mjs.map (313 B) (210 B gzip)\n ├─ .output/server/chunks/build/reviews-DUNKJi26.mjs (39 kB) (6.23 kB gzip)\n ├─ .output/server/chunks/build/reviews-DUNKJi26.mjs.map (24.1 kB) (4.54 kB gzip)\n ├─ .output/server/chunks/build/reviews-styles.DOUZ41mI.mjs (12.5 kB) (2.61 kB gzip)\n ├─ .output/server/chunks/build/reviews-styles.DOUZ41mI.mjs.map (326 B) (216 B gzip)\n ├─ .output/server/chunks/build/roundedContainer-styles.CzuZDCpZ.mjs (444 B) (260 B gzip)\n ├─ .output/server/chunks/build/roundedContainer-styles.CzuZDCpZ.mjs.map (342 B) (214 B gzip)\n ├─ .output/server/chunks/build/SearchableSelect-styles.Q32eVxhf.mjs (2.09 kB) (753 B gzip)\n ├─ .output/server/chunks/build/SearchableSelect-styles.Q32eVxhf.mjs.map (343 B) (219 B gzip)\n ├─ .output/server/chunks/build/server.mjs (40.1 kB) (10.3 kB gzip)\n ├─ .output/server/chunks/build/server.mjs.map (42.3 kB) (7.13 kB gzip)\n ├─ .output/server/chunks/build/styles.mjs (8.77 kB) (1.38 kB gzip)\n ├─ .output/server/chunks/build/styles.mjs.map (4.76 kB) (722 B gzip)\n ├─ .output/server/chunks/build/ThemeSwitcher-styles.Cap2B0yb.mjs (1.7 kB) (645 B gzip)\n ├─ .output/server/chunks/build/ThemeSwitcher-styles.Cap2B0yb.mjs.map (334 B) (218 B gzip)\n ├─ .output/server/chunks/build/trace-demo-6T4JwO3e.mjs (24.7 kB) (4.58 kB gzip)\n ├─ .output/server/chunks/build/trace-demo-6T4JwO3e.mjs.map (16 kB) (2.79 kB gzip)\n ├─ .output/server/chunks/build/trace-demo-styles.BcU8d3IF.mjs (3.65 kB) (1.01 kB gzip)\n ├─ .output/server/chunks/build/trace-demo-styles.BcU8d3IF.mjs.map (325 B) (215 B gzip)\n ├─ .output/server/chunks/build/TraceTree-styles.BLh2c8io.mjs (4.82 kB) (1.28 kB gzip)\n ├─ .output/server/chunks/build/TraceTree-styles.BLh2c8io.mjs.map (322 B) (213 B gzip)\n ├─ .output/server/chunks/build/TraceTreeNode-styles.CBBRAzbQ.mjs (3.82 kB) (1.06 kB gzip)\n ├─ .output/server/chunks/build/TraceTreeNode-styles.CBBRAzbQ.mjs.map (334 B) (218 B gzip)\n ├─ .output/server/chunks/build/useApiUrl-AkmomoOn.mjs (1.11 kB) (561 B gzip)\n ├─ .output/server/chunks/build/useApiUrl-AkmomoOn.mjs.map (1.04 kB) (445 B gzip)\n ├─ .output/server/chunks/build/v3-BbmooW7r.mjs (702 B) (371 B gzip)\n ├─ .output/server/chunks/build/v3-BbmooW7r.mjs.map (684 B) (342 B gzip)\n ├─ .output/server/chunks/nitro/nitro.mjs (169 kB) (41.9 kB gzip)\n ├─ .output/server/chunks/nitro/nitro.mjs.map (2.98 kB) (759 B gzip)\n ├─ .output/server/chunks/routes/renderer.mjs (14.3 kB) (4.46 kB gzip)\n ├─ .output/server/chunks/routes/renderer.mjs.map (861 B) (284 B gzip)\n ├─ .output/server/chunks/virtual/_virtual_spa-template.mjs (94 B) (100 B gzip)\n ├─ .output/server/chunks/virtual/_virtual_spa-template.mjs.map (112 B) (111 B gzip)\n ├─ .output/server/index.mjs (353 B) (204 B gzip)\n └─ .output/server/package.json (888 B) (370 B gzip)\nÎŖ Total size: 3.2 MB (718 kB gzip)\n[nitro] ✔ You can preview this build using node .output/server/index.mjs\n│\n└ ✨ Build complete!", + "is_error": false + } + ] + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "a4bbe5a0-b8c1-45d1-a089-f336e795dc40", + "tool_use_result": { + "stdout": " ├─ .output/server/chunks/build/navlayout-styles.DSfpObLI.mjs (600 B) (316 B gzip)\n ├─ .output/server/chunks/build/navlayout-styles.DSfpObLI.mjs.map (321 B) (213 B gzip)\n ├─ .output/server/chunks/build/navlayoutColorless-styles.BTrCrVeu.mjs (540 B) (298 B gzip)\n ├─ .output/server/chunks/build/navlayoutColorless-styles.BTrCrVeu.mjs.map (348 B) (217 B gzip)\n ├─ .output/server/chunks/build/navlayoutColorless-Vlw9pDxj.mjs (1.7 kB) (690 B gzip)\n ├─ .output/server/chunks/build/navlayoutColorless-Vlw9pDxj.mjs.map (1.11 kB) (451 B gzip)\n ├─ .output/server/chunks/build/nuxt-link-DBBKtryy.mjs (9.76 kB) (2.55 kB gzip)\n ├─ .output/server/chunks/build/nuxt-link-DBBKtryy.mjs.map (8.85 kB) (2.09 kB gzip)\n ├─ .output/server/chunks/build/replay-CX8J0mXD.mjs (30.4 kB) (4.98 kB gzip)\n ├─ .output/server/chunks/build/replay-CX8J0mXD.mjs.map (20.6 kB) (3.87 kB gzip)\n ├─ .output/server/chunks/build/replay-styles.DX2mwOEC.mjs (7.6 kB) (1.69 kB gzip)\n ├─ .output/server/chunks/build/replay-styles.DX2mwOEC.mjs.map (313 B) (210 B gzip)\n ├─ .output/server/chunks/build/reviews-DUNKJi26.mjs (39 kB) (6.23 kB gzip)\n ├─ .output/server/chunks/build/reviews-DUNKJi26.mjs.map (24.1 kB) (4.54 kB gzip)\n ├─ .output/server/chunks/build/reviews-styles.DOUZ41mI.mjs (12.5 kB) (2.61 kB gzip)\n ├─ .output/server/chunks/build/reviews-styles.DOUZ41mI.mjs.map (326 B) (216 B gzip)\n ├─ .output/server/chunks/build/roundedContainer-styles.CzuZDCpZ.mjs (444 B) (260 B gzip)\n ├─ .output/server/chunks/build/roundedContainer-styles.CzuZDCpZ.mjs.map (342 B) (214 B gzip)\n ├─ .output/server/chunks/build/SearchableSelect-styles.Q32eVxhf.mjs (2.09 kB) (753 B gzip)\n ├─ .output/server/chunks/build/SearchableSelect-styles.Q32eVxhf.mjs.map (343 B) (219 B gzip)\n ├─ .output/server/chunks/build/server.mjs (40.1 kB) (10.3 kB gzip)\n ├─ .output/server/chunks/build/server.mjs.map (42.3 kB) (7.13 kB gzip)\n ├─ .output/server/chunks/build/styles.mjs (8.77 kB) (1.38 kB gzip)\n ├─ .output/server/chunks/build/styles.mjs.map (4.76 kB) (722 B gzip)\n ├─ .output/server/chunks/build/ThemeSwitcher-styles.Cap2B0yb.mjs (1.7 kB) (645 B gzip)\n ├─ .output/server/chunks/build/ThemeSwitcher-styles.Cap2B0yb.mjs.map (334 B) (218 B gzip)\n ├─ .output/server/chunks/build/trace-demo-6T4JwO3e.mjs (24.7 kB) (4.58 kB gzip)\n ├─ .output/server/chunks/build/trace-demo-6T4JwO3e.mjs.map (16 kB) (2.79 kB gzip)\n ├─ .output/server/chunks/build/trace-demo-styles.BcU8d3IF.mjs (3.65 kB) (1.01 kB gzip)\n ├─ .output/server/chunks/build/trace-demo-styles.BcU8d3IF.mjs.map (325 B) (215 B gzip)\n ├─ .output/server/chunks/build/TraceTree-styles.BLh2c8io.mjs (4.82 kB) (1.28 kB gzip)\n ├─ .output/server/chunks/build/TraceTree-styles.BLh2c8io.mjs.map (322 B) (213 B gzip)\n ├─ .output/server/chunks/build/TraceTreeNode-styles.CBBRAzbQ.mjs (3.82 kB) (1.06 kB gzip)\n ├─ .output/server/chunks/build/TraceTreeNode-styles.CBBRAzbQ.mjs.map (334 B) (218 B gzip)\n ├─ .output/server/chunks/build/useApiUrl-AkmomoOn.mjs (1.11 kB) (561 B gzip)\n ├─ .output/server/chunks/build/useApiUrl-AkmomoOn.mjs.map (1.04 kB) (445 B gzip)\n ├─ .output/server/chunks/build/v3-BbmooW7r.mjs (702 B) (371 B gzip)\n ├─ .output/server/chunks/build/v3-BbmooW7r.mjs.map (684 B) (342 B gzip)\n ├─ .output/server/chunks/nitro/nitro.mjs (169 kB) (41.9 kB gzip)\n ├─ .output/server/chunks/nitro/nitro.mjs.map (2.98 kB) (759 B gzip)\n ├─ .output/server/chunks/routes/renderer.mjs (14.3 kB) (4.46 kB gzip)\n ├─ .output/server/chunks/routes/renderer.mjs.map (861 B) (284 B gzip)\n ├─ .output/server/chunks/virtual/_virtual_spa-template.mjs (94 B) (100 B gzip)\n ├─ .output/server/chunks/virtual/_virtual_spa-template.mjs.map (112 B) (111 B gzip)\n ├─ .output/server/index.mjs (353 B) (204 B gzip)\n └─ .output/server/package.json (888 B) (370 B gzip)\nÎŖ Total size: 3.2 MB (718 kB gzip)\n[nitro] ✔ You can preview this build using node .output/server/index.mjs\n│\n└ ✨ Build complete!", + "stderr": "", + "interrupted": false, + "isImage": false + } +} +[2026-01-25T16:13:13.840Z] [INFO] { + "type": "assistant", + "message": { + "model": "claude-opus-4-5-20251101", + "id": "msg_017HzAYHd8LXszG13VMjVd6a", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "The build succeeded. Let me commit this change." + } + ], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 0, + "cache_creation_input_tokens": 2151, + "cache_read_input_tokens": 87347, + "cache_creation": { + "ephemeral_5m_input_tokens": 2151, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 1, + "service_tier": "standard" + }, + "context_management": null + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "d2a2e28a-ceb9-4d05-81f2-a10011a1a3c1" +} +[2026-01-25T16:13:14.537Z] [INFO] { + "type": "assistant", + "message": { + "model": "claude-opus-4-5-20251101", + "id": "msg_017HzAYHd8LXszG13VMjVd6a", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "tool_use", + "id": "toolu_01Bs4aVKNr8LvtPUtZFv4axr", + "name": "Bash", + "input": { + "command": "git status", + "description": "Check git status" + } + } + ], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 0, + "cache_creation_input_tokens": 2151, + "cache_read_input_tokens": 87347, + "cache_creation": { + "ephemeral_5m_input_tokens": 2151, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 1, + "service_tier": "standard" + }, + "context_management": null + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "2d853cf1-4d58-4044-8577-535ccd9a3a64" +} +[2026-01-25T16:13:14.664Z] [INFO] { + "type": "user", + "message": { + "role": "user", + "content": [ + { + "tool_use_id": "toolu_01Bs4aVKNr8LvtPUtZFv4axr", + "type": "tool_result", + "content": "On branch issue-37-eb7bb03ec86d\nYour branch is up to date with 'origin/issue-37-eb7bb03ec86d'.\n\nChanges not staged for commit:\n (use \"git add ...\" to update what will be committed)\n (use \"git restore ...\" to discard changes in working directory)\n\tmodified: components/AlertList/ModalAlertDetails.vue\n\tmodified: package-lock.json\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")", + "is_error": false + } + ] + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "9d2bdcc6-19b8-4872-a677-ea5e40549829", + "tool_use_result": { + "stdout": "On branch issue-37-eb7bb03ec86d\nYour branch is up to date with 'origin/issue-37-eb7bb03ec86d'.\n\nChanges not staged for commit:\n (use \"git add ...\" to update what will be committed)\n (use \"git restore ...\" to discard changes in working directory)\n\tmodified: components/AlertList/ModalAlertDetails.vue\n\tmodified: package-lock.json\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")", + "stderr": "", + "interrupted": false, + "isImage": false + } +} +[2026-01-25T16:13:17.334Z] [INFO] { + "type": "assistant", + "message": { + "model": "claude-opus-4-5-20251101", + "id": "msg_01DpUxCrkzqcDumHNrsxqCjh", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "tool_use", + "id": "toolu_01KQUTvZ2TMy53rHQvqxyEpy", + "name": "Bash", + "input": { + "command": "git diff components/AlertList/ModalAlertDetails.vue | head -100", + "description": "Check diff of main component change" + } + } + ], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 0, + "cache_creation_input_tokens": 224, + "cache_read_input_tokens": 89498, + "cache_creation": { + "ephemeral_5m_input_tokens": 224, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 25, + "service_tier": "standard" + }, + "context_management": null + }, + "parent_tool_use_id": null, + "session_id": "97387dbe-7909-417c-bea8-f62ff0bebdd6", + "uuid": "e5d896a0-6dd4-4aa5-8022-e3c93e6753bf" +} +[2026-01-25T16:13:17.434Z] [INFO] { + "type": "user", + "message": { + "role": "user", + "content": [ + { + "tool_use_id": "toolu_01KQUTvZ2TMy53rHQvqxyEpy", + "type": "tool_result", + "content": "diff --git a/components/AlertList/ModalAlertDetails.vue b/components/AlertList/ModalAlertDetails.vue\nindex dda22c3..7ea6142 100644\n--- a/components/AlertList/ModalAlertDetails.vue\n+++ b/components/AlertList/ModalAlertDetails.vue\n@@ -1,40 +1,600 @@\n