mirror of
https://github.com/langbot-app/LangBot.git
synced 2026-06-20 20:44:21 +00:00
e9dd584792
* feat(api): support global API key from config.yaml (api.global_api_key) Accept a config-defined global API key anywhere a web-UI key is accepted (X-API-Key / Bearer), with no login session and no DB record. Useful for automated deployments and AI agents (HTTP API + MCP). Defaults to empty (disabled); does not require the lbk_ prefix. - templates/config.yaml: add api.global_api_key with security notes - service/apikey.py: verify_api_key checks global key first (constant-time) - docs/API_KEY_AUTH.md: document the global key + security guidance - tests: cover global-key match, prefix-free, fallback-to-db, disabled * feat(mcp): expose LangBot management as an MCP server at /mcp Add an MCP (Model Context Protocol) server so external AI agents can manage a LangBot instance. Reuses the same API-key auth as the HTTP API (including the config.yaml global API key). - pkg/api/mcp/server.py: FastMCP server wrapping the service layer; 21 curated tools across system/bots/pipelines/models/knowledge/mcp-servers/skills - pkg/api/mcp/mount.py: ASGI dispatcher fronting Quart; authenticates /mcp requests with an API key, runs the streamable-HTTP session manager lifespan - controller/main.py: serve the wrapped ASGI app via hypercorn (was run_task) - web: new 'MCP' tab in the API integration dialog showing endpoint, auth, and client config; i18n for 8 locales - tests/manual/mcp_smoke.py: e2e check (401 unauth, list tools, call tools) Tool surface is intentionally curated (not all ~25 route groups) to keep the agent surface small, safe, and maintainable. Extend deliberately. * feat(skills): add in-repo skills/ as the single source of truth Migrate the agent skills + QA/e2e test harness from the (now archived) langbot-app/langbot-skills repo into LangBot/skills/, and add four new skills. Migrated: - langbot-plugin-dev, langbot-testing (e2e), langbot-env-setup, langbot-skills-maintenance, langbot-eba-adapter-dev - the bin/lbs CLI (src/, test/, scripts/, schemas/, qa-agent-docs/) New: - langbot-dev core backend + web development - langbot-deploy Docker/K8s deployment + config.yaml + global API key - langbot-mcp-ops operating the LangBot MCP server (/mcp) - langbot-space-ops operating the Space marketplace MCP server - src/cli.ts repoRoot(): recognize the skills assets root (skills.index.json + bin/lbs) so the CLI works when nested inside the LangBot repo - README.md: unified skill catalog; skills.index.json regenerated Parity with source verified: bin/lbs validate + node test suite match the source repo (only the uncommitted .lbpkg build-artifact fixture differs). * docs(agents): document agent-facing surfaces + API/MCP/skills sync rule * docs(readme): add 'Built for AI Agents' section across all locales Highlight MCP server, in-repo skills (single source of truth), AGENTS.md sync rule, and llms.txt. Cross-link LangBot Space MCP marketplace. * style(mcp): fix ruff format + prettier lint in MCP server and API panel * style(web): prettier format MCP i18n locale entries * docs(skills): note MCP instance control in dev/testing skills All development-guidance skills now point to the LangBot instance MCP server (/mcp) and the Space marketplace MCP server, reusing API keys.
1473 lines
49 KiB
JSON
1473 lines
49 KiB
JSON
{
|
|
"generated_by": "lbs",
|
|
"skills": [
|
|
{
|
|
"directory": "langbot-deploy",
|
|
"name": "langbot-deploy",
|
|
"description": "Deploy and configure a LangBot instance — Docker / Docker Compose, Kubernetes, the config.yaml model, the Box sandbox runtime, the plugin runtime, and the global API key. Use when installing, deploying, upgrading, or configuring LangBot in production or self-hosted environments. Triggers on \"deploy langbot\", \"langbot docker\", \"langbot compose\", \"langbot kubernetes\", \"langbot config.yaml\", \"langbot box runtime\", \"langbot global api key\".",
|
|
"references": [],
|
|
"cases": [],
|
|
"case_summaries": [],
|
|
"suites": [],
|
|
"suite_summaries": [],
|
|
"fixtures": [],
|
|
"troubleshooting": [],
|
|
"troubleshooting_summaries": []
|
|
},
|
|
{
|
|
"directory": "langbot-dev",
|
|
"name": "langbot-dev",
|
|
"description": "Develop, build, and debug the LangBot core backend and web frontend. Use when working inside the LangBot repository — backend (Python/Quart, src/langbot/pkg), the Vite/React web UI, HTTP API controllers/services, Alembic migrations, or the MCP server. Covers the dev environment (uv, pnpm), repo layout, the API auth model (user token / API key / global key), adding API endpoints, and the rule that API changes must update the MCP server and skills. Triggers on \"langbot backend\", \"langbot dev\", \"langbot api\", \"add langbot endpoint\", \"langbot migration\".",
|
|
"references": [],
|
|
"cases": [],
|
|
"case_summaries": [],
|
|
"suites": [],
|
|
"suite_summaries": [],
|
|
"fixtures": [],
|
|
"troubleshooting": [],
|
|
"troubleshooting_summaries": []
|
|
},
|
|
{
|
|
"directory": "langbot-eba-adapter-dev",
|
|
"name": "langbot-eba-adapter-dev",
|
|
"description": "Build, refactor, and test LangBot platform adapters for the Event-Based Agents architecture. Use when adding or migrating Telegram, Discord, or other messaging platform adapters to the EBA adapter layout, validating unified event/message conversion, writing live adapter probes, or using standalone plugin runtime plus Computer Use for end-to-end platform testing.",
|
|
"references": [],
|
|
"cases": [],
|
|
"case_summaries": [],
|
|
"suites": [],
|
|
"suite_summaries": [],
|
|
"fixtures": [],
|
|
"troubleshooting": [],
|
|
"troubleshooting_summaries": []
|
|
},
|
|
{
|
|
"directory": "langbot-env-setup",
|
|
"name": "langbot-env-setup",
|
|
"description": "Prepare a local LangBot development and testing environment for an AI agent. Use when setting up WSL or Linux development, shared local URL variables, proxy variables, backend/frontend startup, Playwright MCP browser access, GitHub OAuth browser login, persisted Chrome profiles, or future Codex computer-use environment paths.",
|
|
"references": [
|
|
"references/browser-access-selection.md",
|
|
"references/computer-use.md",
|
|
"references/oauth-browser-profile.md",
|
|
"references/playwright-mcp.md",
|
|
"references/proxy.md",
|
|
"references/service-startup.md",
|
|
"references/wsl-notes.md"
|
|
],
|
|
"cases": [],
|
|
"case_summaries": [],
|
|
"suites": [],
|
|
"suite_summaries": [],
|
|
"fixtures": [],
|
|
"troubleshooting": [],
|
|
"troubleshooting_summaries": []
|
|
},
|
|
{
|
|
"directory": "langbot-mcp-ops",
|
|
"name": "langbot-mcp-ops",
|
|
"description": "Operate a LangBot instance through its built-in MCP (Model Context Protocol) server. Use when an AI agent needs to manage LangBot — list/create/update/delete bots, pipelines, models, knowledge bases, MCP servers, and skills — over MCP instead of raw HTTP. Covers the /mcp endpoint, API-key auth (web-UI lbk_ keys and the config.yaml global key), the tool surface, and client configuration. Triggers on \"langbot mcp\", \"manage langbot via mcp\", \"langbot /mcp\", \"langbot mcp server\".",
|
|
"references": [],
|
|
"cases": [],
|
|
"case_summaries": [],
|
|
"suites": [],
|
|
"suite_summaries": [],
|
|
"fixtures": [],
|
|
"troubleshooting": [],
|
|
"troubleshooting_summaries": []
|
|
},
|
|
{
|
|
"directory": "langbot-plugin-dev",
|
|
"name": "langbot-plugin-dev",
|
|
"description": "Develop, debug, and test LangBot plugins. Use when creating new LangBot plugins, fixing plugin bugs, setting up a LangBot test environment, or testing plugins via WebSocket. Covers plugin component architecture (EventListener, Command, Tool), the plugin SDK API (invoke_llm, get_llm_models, send_message, plugin storage), common pitfalls, and automated WebSocket-based testing. Triggers on \"langbot plugin\", \"lbp\", \"GroupChatSummary\", \"plugin debug\", \"langbot test\".",
|
|
"references": [
|
|
"references/test-env-setup.md"
|
|
],
|
|
"cases": [],
|
|
"case_summaries": [],
|
|
"suites": [],
|
|
"suite_summaries": [],
|
|
"fixtures": [],
|
|
"troubleshooting": [],
|
|
"troubleshooting_summaries": []
|
|
},
|
|
{
|
|
"directory": "langbot-skills-maintenance",
|
|
"name": "langbot-skills-maintenance",
|
|
"description": "Maintain the langbot-skills repository with low duplication. Use when adding, editing, or auditing LangBot skills, references, cases, troubleshooting entries, indexes, or periodic entropy-control checks for this skills repository.",
|
|
"references": [
|
|
"references/curation-workflow.md"
|
|
],
|
|
"cases": [],
|
|
"case_summaries": [],
|
|
"suites": [],
|
|
"suite_summaries": [],
|
|
"fixtures": [],
|
|
"troubleshooting": [],
|
|
"troubleshooting_summaries": []
|
|
},
|
|
{
|
|
"directory": "langbot-space-ops",
|
|
"name": "langbot-space-ops",
|
|
"description": "Browse and search the LangBot Space marketplaces (plugins, MCP servers, skills) through the Space MCP server. Use when an AI agent needs to discover LangBot extensions on space.langbot.app over MCP. Covers the /mcp endpoint, Personal Access Token (PAT) auth, the tool surface, and client configuration. Triggers on \"langbot space mcp\", \"search langbot plugins\", \"langbot marketplace mcp\", \"space.langbot.app mcp\".",
|
|
"references": [],
|
|
"cases": [],
|
|
"case_summaries": [],
|
|
"suites": [],
|
|
"suite_summaries": [],
|
|
"fixtures": [],
|
|
"troubleshooting": [],
|
|
"troubleshooting_summaries": []
|
|
},
|
|
{
|
|
"directory": "langbot-testing",
|
|
"name": "langbot-testing",
|
|
"description": "Test LangBot WebUI and core product flows with an automated browser and backend logs. Use when validating the configured LangBot frontend, pipeline Debug Chat, model provider setup and test buttons, bot and knowledge-base UI flows, or troubleshooting failed LangBot end-to-end tests.",
|
|
"references": [
|
|
"references/agent-runner-qa-workflow.md",
|
|
"references/agent-runner-release-gate.md",
|
|
"references/dify-agent-runner.md",
|
|
"references/langrag-knowledge-base.md",
|
|
"references/local-agent-runner-coverage.md",
|
|
"references/local-agent-runner.md",
|
|
"references/mcp-stdio-testing.md",
|
|
"references/model-provider-testing.md",
|
|
"references/pipeline-debug-chat.md",
|
|
"references/plugin-e2e-smoke.md",
|
|
"references/sandbox-skill-authoring.md",
|
|
"references/troubleshooting.md",
|
|
"references/web-ui-testing.md"
|
|
],
|
|
"cases": [
|
|
"acp-agent-runner-debug-chat",
|
|
"agent-runner-async-db-readiness",
|
|
"agent-runner-behavior-matrix",
|
|
"agent-runner-fixture-contract",
|
|
"agent-runner-ledger-concurrency",
|
|
"agent-runner-ledger-contention",
|
|
"agent-runner-ledger-invariants",
|
|
"agent-runner-ledger-stress",
|
|
"agent-runner-live-install",
|
|
"agent-runner-qa-debug-chat",
|
|
"agent-runner-release-preflight",
|
|
"agent-runner-runtime-chaos",
|
|
"dify-agent-debug-chat",
|
|
"langrag-kb-retrieve",
|
|
"langrag-parser-golden-e2e",
|
|
"langrag-sentinel-kb-discover",
|
|
"local-agent-basic-debug-chat",
|
|
"local-agent-context-compaction-debug-chat",
|
|
"local-agent-effective-prompt-debug-chat",
|
|
"local-agent-multimodal-debug-chat",
|
|
"local-agent-nonstreaming-debug-chat",
|
|
"local-agent-plugin-tool-call-debug-chat",
|
|
"local-agent-rag-debug-chat",
|
|
"local-agent-rag-multimodal-debug-chat",
|
|
"local-agent-steering-debug-chat",
|
|
"mcp-stdio-register",
|
|
"mcp-stdio-tool-call",
|
|
"pipeline-debug-chat",
|
|
"plugin-e2e-smoke",
|
|
"provider-deepseek",
|
|
"qa-plugin-smoke-live-install",
|
|
"sandbox-skill-authoring-e2e",
|
|
"sandbox-skill-authoring-edit-existing-e2e",
|
|
"webui-login-state"
|
|
],
|
|
"case_summaries": [
|
|
{
|
|
"id": "acp-agent-runner-debug-chat",
|
|
"title": "ACP AgentRunner can answer through Debug Chat using real remote Claude",
|
|
"mode": "agent-browser",
|
|
"area": "pipeline",
|
|
"type": "regression",
|
|
"priority": "p2",
|
|
"risk": "high",
|
|
"ci_eligible": false,
|
|
"tags": [
|
|
"agent-runner",
|
|
"acp",
|
|
"claude",
|
|
"external-runner",
|
|
"pipeline"
|
|
],
|
|
"automation": "scripts/e2e/pipeline-debug-chat.mjs",
|
|
"setup_automation": [
|
|
"node:scripts/e2e/ensure-acp-agent-runner-pipeline.mjs --write-env"
|
|
],
|
|
"setup_provides_env": [
|
|
"LANGBOT_ACP_AGENT_RUNNER_PIPELINE_URL",
|
|
"LANGBOT_ACP_AGENT_RUNNER_PIPELINE_NAME"
|
|
],
|
|
"evidence_required": [
|
|
"ui",
|
|
"console",
|
|
"backend_log"
|
|
]
|
|
},
|
|
{
|
|
"id": "agent-runner-async-db-readiness",
|
|
"title": "AgentRunner async DB readiness probe",
|
|
"mode": "probe",
|
|
"area": "release",
|
|
"type": "smoke",
|
|
"priority": "p0",
|
|
"risk": "high",
|
|
"ci_eligible": true,
|
|
"tags": [
|
|
"agent-runner",
|
|
"probe",
|
|
"async-db",
|
|
"aiosqlite"
|
|
],
|
|
"automation": "skills/langbot-testing/probes/agent-runner-async-db-readiness.mjs",
|
|
"setup_automation": [],
|
|
"setup_provides_env": [],
|
|
"evidence_required": [
|
|
"filesystem"
|
|
]
|
|
},
|
|
{
|
|
"id": "agent-runner-behavior-matrix",
|
|
"title": "AgentRunner deterministic behavior matrix probe",
|
|
"mode": "probe",
|
|
"area": "release",
|
|
"type": "regression",
|
|
"priority": "p0",
|
|
"risk": "high",
|
|
"ci_eligible": true,
|
|
"tags": [
|
|
"agent-runner",
|
|
"probe",
|
|
"deterministic-runner",
|
|
"protocol"
|
|
],
|
|
"automation": "skills/langbot-testing/probes/agent-runner-behavior-matrix.mjs",
|
|
"setup_automation": [],
|
|
"setup_provides_env": [],
|
|
"evidence_required": [
|
|
"filesystem"
|
|
]
|
|
},
|
|
{
|
|
"id": "agent-runner-fixture-contract",
|
|
"title": "QA AgentRunner fixture contract probe",
|
|
"mode": "probe",
|
|
"area": "release",
|
|
"type": "regression",
|
|
"priority": "p0",
|
|
"risk": "high",
|
|
"ci_eligible": true,
|
|
"tags": [
|
|
"agent-runner",
|
|
"probe",
|
|
"fixture",
|
|
"deterministic-runner"
|
|
],
|
|
"automation": "skills/langbot-testing/probes/agent-runner-fixture-contract.mjs",
|
|
"setup_automation": [],
|
|
"setup_provides_env": [],
|
|
"evidence_required": [
|
|
"filesystem"
|
|
]
|
|
},
|
|
{
|
|
"id": "agent-runner-ledger-concurrency",
|
|
"title": "AgentRunner run ledger concurrency and auth pytest probe",
|
|
"mode": "probe",
|
|
"area": "release",
|
|
"type": "regression",
|
|
"priority": "p0",
|
|
"risk": "high",
|
|
"ci_eligible": true,
|
|
"tags": [
|
|
"agent-runner",
|
|
"probe",
|
|
"pytest",
|
|
"run-ledger",
|
|
"concurrency"
|
|
],
|
|
"automation": "skills/langbot-testing/probes/agent-runner-ledger-concurrency.mjs",
|
|
"setup_automation": [],
|
|
"setup_provides_env": [],
|
|
"evidence_required": [
|
|
"filesystem"
|
|
]
|
|
},
|
|
{
|
|
"id": "agent-runner-ledger-contention",
|
|
"title": "AgentRunner ledger SQLite contention probe",
|
|
"mode": "probe",
|
|
"area": "release",
|
|
"type": "regression",
|
|
"priority": "p1",
|
|
"risk": "high",
|
|
"ci_eligible": true,
|
|
"tags": [
|
|
"agent-runner",
|
|
"probe",
|
|
"stress",
|
|
"ledger",
|
|
"concurrency"
|
|
],
|
|
"automation": "skills/langbot-testing/probes/agent-runner-ledger-contention.mjs",
|
|
"setup_automation": [],
|
|
"setup_provides_env": [],
|
|
"evidence_required": [
|
|
"filesystem"
|
|
]
|
|
},
|
|
{
|
|
"id": "agent-runner-ledger-invariants",
|
|
"title": "AgentRunner ledger schema and status invariants probe",
|
|
"mode": "probe",
|
|
"area": "release",
|
|
"type": "regression",
|
|
"priority": "p0",
|
|
"risk": "high",
|
|
"ci_eligible": true,
|
|
"tags": [
|
|
"agent-runner",
|
|
"probe",
|
|
"ledger",
|
|
"invariant"
|
|
],
|
|
"automation": "skills/langbot-testing/probes/agent-runner-ledger-invariants.mjs",
|
|
"setup_automation": [],
|
|
"setup_provides_env": [],
|
|
"evidence_required": [
|
|
"filesystem"
|
|
]
|
|
},
|
|
{
|
|
"id": "agent-runner-ledger-stress",
|
|
"title": "AgentRunner ledger lightweight stress probe",
|
|
"mode": "probe",
|
|
"area": "release",
|
|
"type": "regression",
|
|
"priority": "p1",
|
|
"risk": "high",
|
|
"ci_eligible": true,
|
|
"tags": [
|
|
"agent-runner",
|
|
"probe",
|
|
"stress",
|
|
"ledger"
|
|
],
|
|
"automation": "skills/langbot-testing/probes/agent-runner-ledger-stress.mjs",
|
|
"setup_automation": [],
|
|
"setup_provides_env": [],
|
|
"evidence_required": [
|
|
"filesystem"
|
|
]
|
|
},
|
|
{
|
|
"id": "agent-runner-live-install",
|
|
"title": "QA AgentRunner package installs and registers in LangBot",
|
|
"mode": "probe",
|
|
"area": "release",
|
|
"type": "regression",
|
|
"priority": "p0",
|
|
"risk": "high",
|
|
"ci_eligible": false,
|
|
"tags": [
|
|
"agent-runner",
|
|
"plugin",
|
|
"local-install",
|
|
"fixture"
|
|
],
|
|
"automation": "scripts/e2e/install-qa-plugin-smoke.mjs",
|
|
"setup_automation": [],
|
|
"setup_provides_env": [],
|
|
"evidence_required": [
|
|
"api_diagnostic",
|
|
"filesystem"
|
|
]
|
|
},
|
|
{
|
|
"id": "agent-runner-qa-debug-chat",
|
|
"title": "QA AgentRunner returns deterministic output through Debug Chat",
|
|
"mode": "agent-browser",
|
|
"area": "pipeline",
|
|
"type": "regression",
|
|
"priority": "p0",
|
|
"risk": "high",
|
|
"ci_eligible": false,
|
|
"tags": [
|
|
"agent-runner",
|
|
"pipeline",
|
|
"debug-chat",
|
|
"fixture"
|
|
],
|
|
"automation": "scripts/e2e/pipeline-debug-chat.mjs",
|
|
"setup_automation": [
|
|
"case:agent-runner-live-install",
|
|
"node:scripts/e2e/ensure-qa-agent-runner-pipeline.mjs --write-env"
|
|
],
|
|
"setup_provides_env": [
|
|
"LANGBOT_QA_AGENT_RUNNER_PIPELINE_URL",
|
|
"LANGBOT_QA_AGENT_RUNNER_PIPELINE_NAME"
|
|
],
|
|
"evidence_required": [
|
|
"ui",
|
|
"screenshot",
|
|
"console",
|
|
"network",
|
|
"api_diagnostic"
|
|
]
|
|
},
|
|
{
|
|
"id": "agent-runner-release-preflight",
|
|
"title": "Agent runner release gate preflight validates environment readiness",
|
|
"mode": "agent-browser",
|
|
"area": "release",
|
|
"type": "smoke",
|
|
"priority": "p0",
|
|
"risk": "high",
|
|
"ci_eligible": false,
|
|
"tags": [
|
|
"agent-runner",
|
|
"release-gate",
|
|
"preflight",
|
|
"environment"
|
|
],
|
|
"automation": "scripts/e2e/agent-runner-release-preflight.mjs",
|
|
"setup_automation": [],
|
|
"setup_provides_env": [],
|
|
"evidence_required": [
|
|
"ui",
|
|
"screenshot",
|
|
"console",
|
|
"network",
|
|
"api_diagnostic"
|
|
]
|
|
},
|
|
{
|
|
"id": "agent-runner-runtime-chaos",
|
|
"title": "AgentRunner SDK runtime chaos pytest probe",
|
|
"mode": "probe",
|
|
"area": "release",
|
|
"type": "regression",
|
|
"priority": "p0",
|
|
"risk": "high",
|
|
"ci_eligible": true,
|
|
"tags": [
|
|
"agent-runner",
|
|
"probe",
|
|
"pytest",
|
|
"runtime",
|
|
"sdk"
|
|
],
|
|
"automation": "skills/langbot-testing/probes/agent-runner-runtime-chaos.mjs",
|
|
"setup_automation": [],
|
|
"setup_provides_env": [],
|
|
"evidence_required": [
|
|
"filesystem"
|
|
]
|
|
},
|
|
{
|
|
"id": "dify-agent-debug-chat",
|
|
"title": "Dify AgentRunner returns a response through Pipeline Debug Chat",
|
|
"mode": "agent-browser",
|
|
"area": "pipeline",
|
|
"type": "provider",
|
|
"priority": "p2",
|
|
"risk": "medium",
|
|
"ci_eligible": false,
|
|
"tags": [
|
|
"dify",
|
|
"agent-runner",
|
|
"pipeline"
|
|
],
|
|
"automation": "",
|
|
"setup_automation": [],
|
|
"setup_provides_env": [],
|
|
"evidence_required": [
|
|
"ui",
|
|
"console",
|
|
"backend_log"
|
|
]
|
|
},
|
|
{
|
|
"id": "langrag-kb-retrieve",
|
|
"title": "LangRAG knowledge base ingests and retrieves a sentinel document",
|
|
"mode": "agent-browser",
|
|
"area": "knowledge",
|
|
"type": "feature",
|
|
"priority": "p1",
|
|
"risk": "medium",
|
|
"ci_eligible": false,
|
|
"tags": [
|
|
"langrag",
|
|
"knowledge",
|
|
"rag"
|
|
],
|
|
"automation": "scripts/e2e/langrag-kb-retrieve.mjs",
|
|
"setup_automation": [],
|
|
"setup_provides_env": [],
|
|
"evidence_required": [
|
|
"ui",
|
|
"screenshot",
|
|
"console",
|
|
"backend_log"
|
|
]
|
|
},
|
|
{
|
|
"id": "langrag-parser-golden-e2e",
|
|
"title": "LangRAG and GeneralParsers retrieve a structured golden document",
|
|
"mode": "agent-browser",
|
|
"area": "knowledge",
|
|
"type": "regression",
|
|
"priority": "p1",
|
|
"risk": "high",
|
|
"ci_eligible": false,
|
|
"tags": [
|
|
"golden",
|
|
"e2e",
|
|
"langrag",
|
|
"parser",
|
|
"knowledge"
|
|
],
|
|
"automation": "",
|
|
"setup_automation": [],
|
|
"setup_provides_env": [],
|
|
"evidence_required": [
|
|
"ui",
|
|
"screenshot",
|
|
"console",
|
|
"backend_log"
|
|
]
|
|
},
|
|
{
|
|
"id": "langrag-sentinel-kb-discover",
|
|
"title": "Existing LangRAG sentinel knowledge base is discoverable",
|
|
"mode": "probe",
|
|
"area": "knowledge",
|
|
"type": "regression",
|
|
"priority": "p1",
|
|
"risk": "medium",
|
|
"ci_eligible": false,
|
|
"tags": [
|
|
"langrag",
|
|
"knowledge",
|
|
"rag",
|
|
"fixture"
|
|
],
|
|
"automation": "scripts/e2e/ensure-langrag-sentinel-kb.mjs",
|
|
"setup_automation": [],
|
|
"setup_provides_env": [],
|
|
"evidence_required": [
|
|
"api_diagnostic"
|
|
]
|
|
},
|
|
{
|
|
"id": "local-agent-basic-debug-chat",
|
|
"title": "Local Agent Debug Chat returns a deterministic streaming response",
|
|
"mode": "agent-browser",
|
|
"area": "pipeline",
|
|
"type": "smoke",
|
|
"priority": "p0",
|
|
"risk": "medium",
|
|
"ci_eligible": false,
|
|
"tags": [
|
|
"local-agent",
|
|
"pipeline",
|
|
"streaming"
|
|
],
|
|
"automation": "scripts/e2e/pipeline-debug-chat.mjs",
|
|
"setup_automation": [
|
|
"node:scripts/e2e/ensure-local-agent-pipeline.mjs --write-env"
|
|
],
|
|
"setup_provides_env": [
|
|
"LANGBOT_LOCAL_AGENT_PIPELINE_URL",
|
|
"LANGBOT_LOCAL_AGENT_PIPELINE_NAME"
|
|
],
|
|
"evidence_required": [
|
|
"ui",
|
|
"screenshot",
|
|
"console",
|
|
"backend_log"
|
|
]
|
|
},
|
|
{
|
|
"id": "local-agent-context-compaction-debug-chat",
|
|
"title": "Local Agent compacts long Debug Chat history and preserves older facts",
|
|
"mode": "agent-browser",
|
|
"area": "pipeline",
|
|
"type": "regression",
|
|
"priority": "p1",
|
|
"risk": "high",
|
|
"ci_eligible": false,
|
|
"tags": [
|
|
"local-agent",
|
|
"pipeline",
|
|
"context",
|
|
"compaction"
|
|
],
|
|
"automation": "scripts/e2e/pipeline-debug-chat.mjs",
|
|
"setup_automation": [
|
|
"node:scripts/e2e/ensure-local-agent-pipeline.mjs --write-env"
|
|
],
|
|
"setup_provides_env": [
|
|
"LANGBOT_LOCAL_AGENT_PIPELINE_URL",
|
|
"LANGBOT_LOCAL_AGENT_PIPELINE_NAME"
|
|
],
|
|
"evidence_required": [
|
|
"ui",
|
|
"screenshot",
|
|
"console",
|
|
"backend_log",
|
|
"api_diagnostic"
|
|
]
|
|
},
|
|
{
|
|
"id": "local-agent-effective-prompt-debug-chat",
|
|
"title": "Local Agent consumes host effective prompt after PromptPreProcessing",
|
|
"mode": "agent-browser",
|
|
"area": "pipeline",
|
|
"type": "regression",
|
|
"priority": "p1",
|
|
"risk": "high",
|
|
"ci_eligible": false,
|
|
"tags": [
|
|
"local-agent",
|
|
"prompt",
|
|
"plugin",
|
|
"pipeline"
|
|
],
|
|
"automation": "scripts/e2e/pipeline-debug-chat.mjs",
|
|
"setup_automation": [
|
|
"node:scripts/e2e/ensure-local-agent-pipeline.mjs --write-env",
|
|
"case:qa-plugin-smoke-live-install"
|
|
],
|
|
"setup_provides_env": [
|
|
"LANGBOT_LOCAL_AGENT_PIPELINE_URL",
|
|
"LANGBOT_LOCAL_AGENT_PIPELINE_NAME"
|
|
],
|
|
"evidence_required": [
|
|
"ui",
|
|
"console",
|
|
"backend_log"
|
|
]
|
|
},
|
|
{
|
|
"id": "local-agent-multimodal-debug-chat",
|
|
"title": "Local Agent Debug Chat preserves uploaded image input",
|
|
"mode": "agent-browser",
|
|
"area": "pipeline",
|
|
"type": "regression",
|
|
"priority": "p2",
|
|
"risk": "medium",
|
|
"ci_eligible": false,
|
|
"tags": [
|
|
"local-agent",
|
|
"multimodal",
|
|
"pipeline"
|
|
],
|
|
"automation": "scripts/e2e/pipeline-debug-chat.mjs",
|
|
"setup_automation": [
|
|
"node:scripts/e2e/ensure-local-agent-pipeline.mjs --write-env"
|
|
],
|
|
"setup_provides_env": [
|
|
"LANGBOT_LOCAL_AGENT_PIPELINE_URL",
|
|
"LANGBOT_LOCAL_AGENT_PIPELINE_NAME"
|
|
],
|
|
"evidence_required": [
|
|
"ui",
|
|
"screenshot",
|
|
"console",
|
|
"network",
|
|
"backend_log"
|
|
]
|
|
},
|
|
{
|
|
"id": "local-agent-nonstreaming-debug-chat",
|
|
"title": "Local Agent Debug Chat returns a deterministic non-streaming response",
|
|
"mode": "agent-browser",
|
|
"area": "pipeline",
|
|
"type": "regression",
|
|
"priority": "p1",
|
|
"risk": "medium",
|
|
"ci_eligible": false,
|
|
"tags": [
|
|
"local-agent",
|
|
"pipeline",
|
|
"non-streaming"
|
|
],
|
|
"automation": "scripts/e2e/pipeline-debug-chat.mjs",
|
|
"setup_automation": [
|
|
"node:scripts/e2e/ensure-local-agent-pipeline.mjs --write-env"
|
|
],
|
|
"setup_provides_env": [
|
|
"LANGBOT_LOCAL_AGENT_PIPELINE_URL",
|
|
"LANGBOT_LOCAL_AGENT_PIPELINE_NAME"
|
|
],
|
|
"evidence_required": [
|
|
"ui",
|
|
"console",
|
|
"backend_log"
|
|
]
|
|
},
|
|
{
|
|
"id": "local-agent-plugin-tool-call-debug-chat",
|
|
"title": "Local Agent can call a plugin-provided tool",
|
|
"mode": "agent-browser",
|
|
"area": "pipeline",
|
|
"type": "regression",
|
|
"priority": "p1",
|
|
"risk": "high",
|
|
"ci_eligible": false,
|
|
"tags": [
|
|
"local-agent",
|
|
"plugin",
|
|
"tools",
|
|
"pipeline"
|
|
],
|
|
"automation": "scripts/e2e/pipeline-debug-chat.mjs",
|
|
"setup_automation": [
|
|
"node:scripts/e2e/ensure-local-agent-pipeline.mjs --write-env",
|
|
"case:qa-plugin-smoke-live-install"
|
|
],
|
|
"setup_provides_env": [
|
|
"LANGBOT_LOCAL_AGENT_PIPELINE_URL",
|
|
"LANGBOT_LOCAL_AGENT_PIPELINE_NAME"
|
|
],
|
|
"evidence_required": [
|
|
"ui",
|
|
"console",
|
|
"backend_log",
|
|
"api_diagnostic"
|
|
]
|
|
},
|
|
{
|
|
"id": "local-agent-rag-debug-chat",
|
|
"title": "Local Agent Debug Chat answers from a LangRAG knowledge base",
|
|
"mode": "agent-browser",
|
|
"area": "pipeline",
|
|
"type": "regression",
|
|
"priority": "p1",
|
|
"risk": "high",
|
|
"ci_eligible": false,
|
|
"tags": [
|
|
"local-agent",
|
|
"langrag",
|
|
"pipeline"
|
|
],
|
|
"automation": "scripts/e2e/pipeline-debug-chat.mjs",
|
|
"setup_automation": [
|
|
"node:scripts/e2e/ensure-local-agent-pipeline.mjs --write-env",
|
|
"node:scripts/e2e/ensure-langrag-sentinel-kb.mjs --write-env"
|
|
],
|
|
"setup_provides_env": [
|
|
"LANGBOT_LOCAL_AGENT_PIPELINE_URL",
|
|
"LANGBOT_LOCAL_AGENT_PIPELINE_NAME",
|
|
"LANGBOT_LOCAL_AGENT_RAG_KB_UUID"
|
|
],
|
|
"evidence_required": [
|
|
"ui",
|
|
"screenshot",
|
|
"console",
|
|
"backend_log",
|
|
"api_diagnostic"
|
|
]
|
|
},
|
|
{
|
|
"id": "local-agent-rag-multimodal-debug-chat",
|
|
"title": "Local Agent preserves image input while using RAG context",
|
|
"mode": "agent-browser",
|
|
"area": "pipeline",
|
|
"type": "regression",
|
|
"priority": "p2",
|
|
"risk": "high",
|
|
"ci_eligible": false,
|
|
"tags": [
|
|
"local-agent",
|
|
"rag",
|
|
"multimodal",
|
|
"pipeline"
|
|
],
|
|
"automation": "scripts/e2e/pipeline-debug-chat.mjs",
|
|
"setup_automation": [
|
|
"node:scripts/e2e/ensure-local-agent-pipeline.mjs --write-env",
|
|
"node:scripts/e2e/ensure-langrag-sentinel-kb.mjs --write-env"
|
|
],
|
|
"setup_provides_env": [
|
|
"LANGBOT_LOCAL_AGENT_PIPELINE_URL",
|
|
"LANGBOT_LOCAL_AGENT_PIPELINE_NAME",
|
|
"LANGBOT_LOCAL_AGENT_RAG_KB_UUID"
|
|
],
|
|
"evidence_required": [
|
|
"ui",
|
|
"screenshot",
|
|
"console",
|
|
"backend_log"
|
|
]
|
|
},
|
|
{
|
|
"id": "local-agent-steering-debug-chat",
|
|
"title": "Local Agent injects a follow-up into an active run",
|
|
"mode": "agent-browser",
|
|
"area": "pipeline",
|
|
"type": "regression",
|
|
"priority": "p1",
|
|
"risk": "high",
|
|
"ci_eligible": false,
|
|
"tags": [
|
|
"local-agent",
|
|
"pipeline",
|
|
"steering",
|
|
"tools"
|
|
],
|
|
"automation": "scripts/e2e/local-agent-steering-debug-chat.mjs",
|
|
"setup_automation": [
|
|
"node:scripts/e2e/ensure-local-agent-pipeline.mjs --write-env",
|
|
"case:qa-plugin-smoke-live-install"
|
|
],
|
|
"setup_provides_env": [
|
|
"LANGBOT_LOCAL_AGENT_PIPELINE_URL",
|
|
"LANGBOT_LOCAL_AGENT_PIPELINE_NAME"
|
|
],
|
|
"evidence_required": [
|
|
"ui",
|
|
"screenshot",
|
|
"console",
|
|
"backend_log",
|
|
"api_diagnostic"
|
|
]
|
|
},
|
|
{
|
|
"id": "mcp-stdio-register",
|
|
"title": "MCP stdio fixture is registered and exposes qa_mcp_echo",
|
|
"mode": "agent-browser",
|
|
"area": "mcp",
|
|
"type": "smoke",
|
|
"priority": "p1",
|
|
"risk": "medium",
|
|
"ci_eligible": false,
|
|
"tags": [
|
|
"mcp",
|
|
"tools",
|
|
"fixture",
|
|
"preflight"
|
|
],
|
|
"automation": "scripts/e2e/mcp-stdio-register.mjs",
|
|
"setup_automation": [],
|
|
"setup_provides_env": [],
|
|
"evidence_required": [
|
|
"screenshot",
|
|
"console",
|
|
"network",
|
|
"api_diagnostic"
|
|
]
|
|
},
|
|
{
|
|
"id": "mcp-stdio-tool-call",
|
|
"title": "MCP stdio server exposes a tool that Local Agent can call",
|
|
"mode": "agent-browser",
|
|
"area": "mcp",
|
|
"type": "feature",
|
|
"priority": "p1",
|
|
"risk": "high",
|
|
"ci_eligible": false,
|
|
"tags": [
|
|
"mcp",
|
|
"tools",
|
|
"local-agent"
|
|
],
|
|
"automation": "scripts/e2e/pipeline-debug-chat.mjs",
|
|
"setup_automation": [
|
|
"node:scripts/e2e/ensure-local-agent-pipeline.mjs --write-env",
|
|
"case:mcp-stdio-register"
|
|
],
|
|
"setup_provides_env": [
|
|
"LANGBOT_LOCAL_AGENT_PIPELINE_URL",
|
|
"LANGBOT_LOCAL_AGENT_PIPELINE_NAME"
|
|
],
|
|
"evidence_required": [
|
|
"ui",
|
|
"console",
|
|
"backend_log",
|
|
"api_diagnostic"
|
|
]
|
|
},
|
|
{
|
|
"id": "pipeline-debug-chat",
|
|
"title": "Pipeline Debug Chat returns a bot response",
|
|
"mode": "agent-browser",
|
|
"area": "pipeline",
|
|
"type": "smoke",
|
|
"priority": "p0",
|
|
"risk": "medium",
|
|
"ci_eligible": false,
|
|
"tags": [
|
|
"smoke",
|
|
"pipeline"
|
|
],
|
|
"automation": "scripts/e2e/pipeline-debug-chat.mjs",
|
|
"setup_automation": [],
|
|
"setup_provides_env": [],
|
|
"evidence_required": [
|
|
"ui",
|
|
"screenshot",
|
|
"console",
|
|
"backend_log"
|
|
]
|
|
},
|
|
{
|
|
"id": "plugin-e2e-smoke",
|
|
"title": "Plugin system installs a local plugin and exposes tool/page APIs",
|
|
"mode": "agent-browser",
|
|
"area": "plugin",
|
|
"type": "smoke",
|
|
"priority": "p1",
|
|
"risk": "medium",
|
|
"ci_eligible": false,
|
|
"tags": [
|
|
"plugin",
|
|
"runtime",
|
|
"local-install",
|
|
"e2e"
|
|
],
|
|
"automation": "",
|
|
"setup_automation": [],
|
|
"setup_provides_env": [],
|
|
"evidence_required": [
|
|
"ui",
|
|
"console",
|
|
"backend_log",
|
|
"api_diagnostic"
|
|
]
|
|
},
|
|
{
|
|
"id": "provider-deepseek",
|
|
"title": "DeepSeek provider can be configured and used",
|
|
"mode": "agent-browser",
|
|
"area": "provider",
|
|
"type": "provider",
|
|
"priority": "p2",
|
|
"risk": "medium",
|
|
"ci_eligible": false,
|
|
"tags": [
|
|
"provider",
|
|
"model"
|
|
],
|
|
"automation": "",
|
|
"setup_automation": [],
|
|
"setup_provides_env": [],
|
|
"evidence_required": [
|
|
"ui",
|
|
"console",
|
|
"backend_log"
|
|
]
|
|
},
|
|
{
|
|
"id": "qa-plugin-smoke-live-install",
|
|
"title": "QA plugin smoke package installs and exposes tools",
|
|
"mode": "probe",
|
|
"area": "plugin",
|
|
"type": "regression",
|
|
"priority": "p1",
|
|
"risk": "medium",
|
|
"ci_eligible": false,
|
|
"tags": [
|
|
"plugin",
|
|
"local-install",
|
|
"fixture"
|
|
],
|
|
"automation": "scripts/e2e/install-qa-plugin-smoke.mjs",
|
|
"setup_automation": [],
|
|
"setup_provides_env": [],
|
|
"evidence_required": [
|
|
"api_diagnostic",
|
|
"filesystem"
|
|
]
|
|
},
|
|
{
|
|
"id": "sandbox-skill-authoring-e2e",
|
|
"title": "Local Agent creates, registers, activates, and uses a sandbox skill",
|
|
"mode": "agent-browser",
|
|
"area": "sandbox",
|
|
"type": "regression",
|
|
"priority": "p2",
|
|
"risk": "high",
|
|
"ci_eligible": false,
|
|
"tags": [
|
|
"sandbox",
|
|
"skills",
|
|
"local-agent",
|
|
"tools",
|
|
"e2b",
|
|
"nsjail"
|
|
],
|
|
"automation": "",
|
|
"setup_automation": [],
|
|
"setup_provides_env": [],
|
|
"evidence_required": [
|
|
"ui",
|
|
"backend_log",
|
|
"api_diagnostic",
|
|
"filesystem"
|
|
]
|
|
},
|
|
{
|
|
"id": "sandbox-skill-authoring-edit-existing-e2e",
|
|
"title": "Local Agent modifies an activated sandbox skill package",
|
|
"mode": "agent-browser",
|
|
"area": "sandbox",
|
|
"type": "regression",
|
|
"priority": "p2",
|
|
"risk": "high",
|
|
"ci_eligible": false,
|
|
"tags": [
|
|
"sandbox",
|
|
"skills",
|
|
"local-agent",
|
|
"tools",
|
|
"edit"
|
|
],
|
|
"automation": "scripts/e2e/pipeline-debug-chat.mjs",
|
|
"setup_automation": [],
|
|
"setup_provides_env": [],
|
|
"evidence_required": [
|
|
"ui",
|
|
"backend_log",
|
|
"api_diagnostic",
|
|
"filesystem"
|
|
]
|
|
},
|
|
{
|
|
"id": "webui-login-state",
|
|
"title": "Configured frontend opens with authenticated LangBot WebUI state",
|
|
"mode": "agent-browser",
|
|
"area": "auth",
|
|
"type": "smoke",
|
|
"priority": "p0",
|
|
"risk": "low",
|
|
"ci_eligible": false,
|
|
"tags": [
|
|
"smoke",
|
|
"auth"
|
|
],
|
|
"automation": "scripts/e2e/webui-login-state.mjs",
|
|
"setup_automation": [],
|
|
"setup_provides_env": [],
|
|
"evidence_required": [
|
|
"ui",
|
|
"screenshot",
|
|
"console"
|
|
]
|
|
}
|
|
],
|
|
"suites": [
|
|
"agent-runner-release-gate",
|
|
"core-smoke",
|
|
"local-agent-gate"
|
|
],
|
|
"suite_summaries": [
|
|
{
|
|
"id": "agent-runner-release-gate",
|
|
"title": "Agent runner externalization release gate",
|
|
"description": "Release gate for runner externalization: pytest probes, environment preflight, fixture registration, local-agent capability paths, and ACP external harness execution.",
|
|
"type": "release_gate",
|
|
"priority": "p0",
|
|
"tags": [
|
|
"agent-runner",
|
|
"release-gate",
|
|
"local-agent",
|
|
"external-runner"
|
|
],
|
|
"cases": [
|
|
"agent-runner-fixture-contract",
|
|
"agent-runner-behavior-matrix",
|
|
"agent-runner-ledger-invariants",
|
|
"agent-runner-async-db-readiness",
|
|
"agent-runner-ledger-stress",
|
|
"agent-runner-ledger-contention",
|
|
"agent-runner-ledger-concurrency",
|
|
"agent-runner-runtime-chaos",
|
|
"agent-runner-live-install",
|
|
"agent-runner-qa-debug-chat",
|
|
"agent-runner-release-preflight",
|
|
"webui-login-state",
|
|
"pipeline-debug-chat",
|
|
"qa-plugin-smoke-live-install",
|
|
"plugin-e2e-smoke",
|
|
"langrag-kb-retrieve",
|
|
"local-agent-basic-debug-chat",
|
|
"local-agent-effective-prompt-debug-chat",
|
|
"local-agent-context-compaction-debug-chat",
|
|
"local-agent-rag-debug-chat",
|
|
"local-agent-plugin-tool-call-debug-chat",
|
|
"mcp-stdio-register",
|
|
"mcp-stdio-tool-call",
|
|
"local-agent-nonstreaming-debug-chat",
|
|
"local-agent-multimodal-debug-chat",
|
|
"local-agent-rag-multimodal-debug-chat",
|
|
"acp-agent-runner-debug-chat"
|
|
]
|
|
},
|
|
{
|
|
"id": "core-smoke",
|
|
"title": "Core browser smoke suite",
|
|
"description": "Fast browser-first checks for login state, Pipeline Debug Chat, and the basic local-agent runner path.",
|
|
"type": "smoke",
|
|
"priority": "p0",
|
|
"tags": [
|
|
"smoke",
|
|
"browser",
|
|
"p0"
|
|
],
|
|
"cases": [
|
|
"webui-login-state",
|
|
"pipeline-debug-chat",
|
|
"local-agent-basic-debug-chat"
|
|
]
|
|
},
|
|
{
|
|
"id": "local-agent-gate",
|
|
"title": "Local Agent runner regression gate",
|
|
"description": "High-signal local-agent runner checks covering prompt bridge, RAG, context compaction, plugin tools, MCP tools, non-streaming, and multimodal paths.",
|
|
"type": "regression",
|
|
"priority": "p1",
|
|
"tags": [
|
|
"local-agent",
|
|
"agent-runner",
|
|
"regression"
|
|
],
|
|
"cases": [
|
|
"local-agent-basic-debug-chat",
|
|
"qa-plugin-smoke-live-install",
|
|
"local-agent-effective-prompt-debug-chat",
|
|
"local-agent-context-compaction-debug-chat",
|
|
"local-agent-rag-debug-chat",
|
|
"local-agent-plugin-tool-call-debug-chat",
|
|
"local-agent-steering-debug-chat",
|
|
"mcp-stdio-tool-call",
|
|
"local-agent-nonstreaming-debug-chat",
|
|
"local-agent-multimodal-debug-chat",
|
|
"local-agent-rag-multimodal-debug-chat"
|
|
]
|
|
}
|
|
],
|
|
"fixtures": [
|
|
{
|
|
"id": "qa-agent-runner-behaviors",
|
|
"title": "Deterministic AgentRunner behavior matrix",
|
|
"kind": "json",
|
|
"path": "fixtures/agent-runner/qa-runner-behaviors.json",
|
|
"related_cases": [
|
|
"agent-runner-behavior-matrix",
|
|
"agent-runner-ledger-invariants",
|
|
"agent-runner-runtime-chaos"
|
|
]
|
|
},
|
|
{
|
|
"id": "qa-agent-runner-source",
|
|
"title": "QA deterministic AgentRunner fixture source",
|
|
"kind": "plugin_source",
|
|
"path": "fixtures/plugins/qa-agent-runner/manifest.yaml",
|
|
"related_cases": [
|
|
"agent-runner-fixture-contract",
|
|
"agent-runner-behavior-matrix",
|
|
"agent-runner-live-install",
|
|
"agent-runner-qa-debug-chat"
|
|
]
|
|
},
|
|
{
|
|
"id": "qa-agent-runner-package",
|
|
"title": "QA deterministic AgentRunner prebuilt package",
|
|
"kind": "plugin_package",
|
|
"path": "fixtures/plugins/qa-agent-runner/dist/qa-agent-runner-0.1.0.lbpkg",
|
|
"related_cases": [
|
|
"agent-runner-fixture-contract",
|
|
"agent-runner-live-install",
|
|
"agent-runner-qa-debug-chat"
|
|
]
|
|
},
|
|
{
|
|
"id": "mcp-stdio-echo-server",
|
|
"title": "MCP stdio qa_mcp_echo server",
|
|
"kind": "python",
|
|
"path": "fixtures/mcp/qa_mcp_echo_server.py",
|
|
"related_cases": [
|
|
"mcp-stdio-tool-call"
|
|
]
|
|
},
|
|
{
|
|
"id": "rag-sentinel-doc",
|
|
"title": "LangRAG sentinel text document",
|
|
"kind": "text",
|
|
"path": "fixtures/rag/sentinel-doc.txt",
|
|
"related_cases": [
|
|
"langrag-kb-retrieve",
|
|
"local-agent-rag-debug-chat"
|
|
]
|
|
},
|
|
{
|
|
"id": "rag-parser-golden-html",
|
|
"title": "LangRAG parser golden HTML document",
|
|
"kind": "html",
|
|
"path": "fixtures/rag/parser-golden.html",
|
|
"related_cases": [
|
|
"langrag-parser-golden-e2e"
|
|
]
|
|
},
|
|
{
|
|
"id": "multimodal-red-square",
|
|
"title": "64x64 red-square image fixture",
|
|
"kind": "base64_png",
|
|
"path": "fixtures/multimodal/red-square.png.base64",
|
|
"related_cases": [
|
|
"local-agent-multimodal-debug-chat",
|
|
"local-agent-rag-multimodal-debug-chat"
|
|
]
|
|
},
|
|
{
|
|
"id": "qa-plugin-smoke-source",
|
|
"title": "QA plugin smoke fixture source",
|
|
"kind": "plugin_source",
|
|
"path": "fixtures/plugins/qa-plugin-smoke/manifest.yaml",
|
|
"related_cases": [
|
|
"qa-plugin-smoke-live-install",
|
|
"plugin-e2e-smoke",
|
|
"local-agent-effective-prompt-debug-chat",
|
|
"local-agent-plugin-tool-call-debug-chat",
|
|
"local-agent-steering-debug-chat"
|
|
]
|
|
},
|
|
{
|
|
"id": "qa-plugin-smoke-package",
|
|
"title": "QA plugin smoke prebuilt package",
|
|
"kind": "plugin_package",
|
|
"path": "fixtures/plugins/qa-plugin-smoke/dist/qa-plugin-smoke-0.1.0.lbpkg",
|
|
"related_cases": [
|
|
"qa-plugin-smoke-live-install",
|
|
"plugin-e2e-smoke"
|
|
]
|
|
}
|
|
],
|
|
"troubleshooting": [
|
|
"agent-runner-actor-context-fields",
|
|
"aiosqlite-connect-hangs",
|
|
"ambiguous-runner-default-label",
|
|
"backend-not-listening",
|
|
"box-session-conflict-logical-metadata",
|
|
"debug-chat-history-contaminates-automation",
|
|
"dynamic-form-missing-config-id",
|
|
"e2b-extra-mount-sync-missing",
|
|
"local-agent-model-route-unavailable",
|
|
"marketplace-network-flaky",
|
|
"mcp-stdio-args-not-applied",
|
|
"nsjail-cli-compatibility",
|
|
"pipeline-form-controlled-warning",
|
|
"plugin-dependency-install-offline",
|
|
"plugin-runtime-timeout",
|
|
"provider-image-parse-error",
|
|
"proxy-env-mismatch",
|
|
"sandbox-native-tools-unavailable",
|
|
"socks-proxy-without-socksio",
|
|
"survey-widget-blocks-debug-chat",
|
|
"tool-name-collision-between-mcp-and-plugin",
|
|
"uv-run-resyncs-local-sdk"
|
|
],
|
|
"troubleshooting_summaries": [
|
|
{
|
|
"id": "agent-runner-actor-context-fields",
|
|
"title": "AgentRunner reads old actor.type and actor.id fields",
|
|
"category": "product",
|
|
"related_cases": [
|
|
"dify-agent-debug-chat",
|
|
"pipeline-debug-chat"
|
|
]
|
|
},
|
|
{
|
|
"id": "aiosqlite-connect-hangs",
|
|
"title": "aiosqlite connect hangs before ledger pytest starts",
|
|
"category": "env_issue",
|
|
"related_cases": [
|
|
"agent-runner-ledger-concurrency",
|
|
"agent-runner-ledger-invariants"
|
|
]
|
|
},
|
|
{
|
|
"id": "ambiguous-runner-default-label",
|
|
"title": "AgentRunner selector shows multiple Default or 默认 options",
|
|
"category": "product",
|
|
"related_cases": [
|
|
"dify-agent-debug-chat",
|
|
"local-agent-rag-debug-chat"
|
|
]
|
|
},
|
|
{
|
|
"id": "backend-not-listening",
|
|
"title": "LangBot backend URL has no listening service",
|
|
"category": "product",
|
|
"related_cases": [
|
|
"pipeline-debug-chat",
|
|
"webui-login-state",
|
|
"local-agent-basic-debug-chat"
|
|
]
|
|
},
|
|
{
|
|
"id": "box-session-conflict-logical-metadata",
|
|
"title": "BoxSessionConflictError after a successful first exec",
|
|
"category": "product",
|
|
"related_cases": [
|
|
"sandbox-skill-authoring-e2e"
|
|
]
|
|
},
|
|
{
|
|
"id": "debug-chat-history-contaminates-automation",
|
|
"title": "Old Debug Chat messages contaminate automation assertions",
|
|
"category": "product",
|
|
"related_cases": [
|
|
"pipeline-debug-chat",
|
|
"local-agent-plugin-tool-call-debug-chat",
|
|
"mcp-stdio-tool-call"
|
|
]
|
|
},
|
|
{
|
|
"id": "dynamic-form-missing-config-id",
|
|
"title": "Dynamic form fields have no stable key",
|
|
"category": "product",
|
|
"related_cases": [
|
|
"langrag-kb-retrieve",
|
|
"local-agent-rag-debug-chat"
|
|
]
|
|
},
|
|
{
|
|
"id": "e2b-extra-mount-sync-missing",
|
|
"title": "Activated skill files are missing or not written back on E2B",
|
|
"category": "product",
|
|
"related_cases": [
|
|
"sandbox-skill-authoring-e2e"
|
|
]
|
|
},
|
|
{
|
|
"id": "local-agent-model-route-unavailable",
|
|
"title": "Local Agent model route is unavailable for the requested run shape",
|
|
"category": "env_issue",
|
|
"related_cases": [
|
|
"local-agent-basic-debug-chat",
|
|
"local-agent-plugin-tool-call-debug-chat",
|
|
"mcp-stdio-tool-call",
|
|
"local-agent-multimodal-debug-chat",
|
|
"local-agent-nonstreaming-debug-chat"
|
|
]
|
|
},
|
|
{
|
|
"id": "marketplace-network-flaky",
|
|
"title": "Marketplace requests are flaky but plugin data may still load",
|
|
"category": "product",
|
|
"related_cases": [
|
|
"langrag-kb-retrieve"
|
|
]
|
|
},
|
|
{
|
|
"id": "mcp-stdio-args-not-applied",
|
|
"title": "MCP Stdio test runs only the command without arguments",
|
|
"category": "product",
|
|
"related_cases": [
|
|
"mcp-stdio-tool-call"
|
|
]
|
|
},
|
|
{
|
|
"id": "nsjail-cli-compatibility",
|
|
"title": "Installed nsjail CLI rejects generated sandbox arguments",
|
|
"category": "product",
|
|
"related_cases": [
|
|
"sandbox-skill-authoring-e2e"
|
|
]
|
|
},
|
|
{
|
|
"id": "pipeline-form-controlled-warning",
|
|
"title": "Pipeline form input switches from uncontrolled to controlled",
|
|
"category": "product",
|
|
"related_cases": [
|
|
"pipeline-debug-chat",
|
|
"local-agent-rag-debug-chat"
|
|
]
|
|
},
|
|
{
|
|
"id": "plugin-dependency-install-offline",
|
|
"title": "Local plugin dependency install fails in an offline or proxy-limited runtime",
|
|
"category": "product",
|
|
"related_cases": [
|
|
"langrag-parser-golden-e2e"
|
|
]
|
|
},
|
|
{
|
|
"id": "plugin-runtime-timeout",
|
|
"title": "Plugin runtime actions time out",
|
|
"category": "product",
|
|
"related_cases": [
|
|
"pipeline-debug-chat",
|
|
"provider-deepseek",
|
|
"langrag-parser-golden-e2e"
|
|
]
|
|
},
|
|
{
|
|
"id": "provider-image-parse-error",
|
|
"title": "Model provider rejects the uploaded image before runner behavior is exercised",
|
|
"category": "product",
|
|
"related_cases": [
|
|
"local-agent-multimodal-debug-chat"
|
|
]
|
|
},
|
|
{
|
|
"id": "proxy-env-mismatch",
|
|
"title": "Uppercase and lowercase proxy variables differ",
|
|
"category": "product",
|
|
"related_cases": [
|
|
"pipeline-debug-chat",
|
|
"provider-deepseek",
|
|
"webui-login-state"
|
|
]
|
|
},
|
|
{
|
|
"id": "sandbox-native-tools-unavailable",
|
|
"title": "Native sandbox tools are unavailable even though a backend is configured",
|
|
"category": "product",
|
|
"related_cases": [
|
|
"sandbox-skill-authoring-e2e"
|
|
]
|
|
},
|
|
{
|
|
"id": "socks-proxy-without-socksio",
|
|
"title": "Python HTTP clients fail when ALL_PROXY uses SOCKS without socksio",
|
|
"category": "product",
|
|
"related_cases": [
|
|
"sandbox-skill-authoring-e2e",
|
|
"provider-deepseek"
|
|
]
|
|
},
|
|
{
|
|
"id": "survey-widget-blocks-debug-chat",
|
|
"title": "Survey widget blocks Debug Chat controls",
|
|
"category": "product",
|
|
"related_cases": [
|
|
"pipeline-debug-chat",
|
|
"local-agent-rag-debug-chat",
|
|
"mcp-stdio-tool-call"
|
|
]
|
|
},
|
|
{
|
|
"id": "tool-name-collision-between-mcp-and-plugin",
|
|
"title": "MCP and plugin expose the same tool name",
|
|
"category": "product",
|
|
"related_cases": [
|
|
"mcp-stdio-tool-call",
|
|
"local-agent-plugin-tool-call-debug-chat"
|
|
]
|
|
},
|
|
{
|
|
"id": "uv-run-resyncs-local-sdk",
|
|
"title": "uv run resyncs the locked SDK instead of the local editable SDK",
|
|
"category": "product",
|
|
"related_cases": [
|
|
"plugin-e2e-smoke"
|
|
]
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|