@crownpeak/dqm-react-component-dev-mcp 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +138 -0
- package/data/.env.example +22 -0
- package/data/.gitattributes +47 -0
- package/data/.glfrc.json +7 -0
- package/data/.husky/pre-commit +5 -0
- package/data/.nvmrc +1 -0
- package/data/CHANGELOG.md +75 -0
- package/data/CODE_OF_CONDUCT.md +129 -0
- package/data/CONTRIBUTING.md +203 -0
- package/data/DOCS-STRUCTURE.md +307 -0
- package/data/I18N.md +292 -0
- package/data/LICENSE +22 -0
- package/data/README.md +315 -0
- package/data/SECURITY.md +125 -0
- package/data/WIKI-DEPLOYMENT.md +348 -0
- package/data/docs/AI-FEATURES.md +610 -0
- package/data/docs/API-REFERENCE.md +1022 -0
- package/data/docs/AUTHENTICATION.md +301 -0
- package/data/docs/BACKEND-API.md +468 -0
- package/data/docs/DEVELOPMENT.md +375 -0
- package/data/docs/EXAMPLES.md +622 -0
- package/data/docs/MCP-SERVER.md +307 -0
- package/data/docs/MIGRATION-GUIDE.md +367 -0
- package/data/docs/NPM-PUBLISH.md +193 -0
- package/data/docs/QUICKSTART.md +206 -0
- package/data/docs/REDIS-SETUP.md +162 -0
- package/data/docs/SERVER.md +228 -0
- package/data/docs/TROUBLESHOOTING.md +657 -0
- package/data/docs/WIDGET-GUIDE.md +638 -0
- package/data/docs/WIKI-HOME.md +58 -0
- package/data/docs/WIKI-SIDEBAR.md +39 -0
- package/data/package.json +171 -0
- package/data/playwright.config.ts +64 -0
- package/data/probe/.cargo/config.toml +10 -0
- package/data/probe/.claude/commands/performance-review.md +15 -0
- package/data/probe/.clinerules +288 -0
- package/data/probe/.dockerignore +57 -0
- package/data/probe/.githooks/post-commit +11 -0
- package/data/probe/.githooks/pre-commit +99 -0
- package/data/probe/.githooks/pre-commit-vow +9 -0
- package/data/probe/.prompts/engineer.md +41 -0
- package/data/probe/.roomodes +28 -0
- package/data/probe/.windsurfrules +0 -0
- package/data/probe/BASH_TOOL_SUMMARY.md +148 -0
- package/data/probe/BENCHMARKING.md +256 -0
- package/data/probe/CLAUDE.md +226 -0
- package/data/probe/CODE_OF_CONDUCT.md +128 -0
- package/data/probe/CONTRIBUTING.md +193 -0
- package/data/probe/Cargo.toml +120 -0
- package/data/probe/Cross.toml +10 -0
- package/data/probe/DOCKER-README.md +224 -0
- package/data/probe/Dockerfile +32 -0
- package/data/probe/ENHANCED_DEBUG_TELEMETRY.md +188 -0
- package/data/probe/LICENSE +201 -0
- package/data/probe/Makefile +210 -0
- package/data/probe/README.md +824 -0
- package/data/probe/SECURITY.md +67 -0
- package/data/probe/WINDOWS-GUIDE.md +294 -0
- package/data/probe/benches/parsing_benchmarks.rs +370 -0
- package/data/probe/benches/search_benchmarks.rs +599 -0
- package/data/probe/benches/simd_benchmarks.rs +372 -0
- package/data/probe/benches/timing_benchmarks.rs +287 -0
- package/data/probe/build-windows.bat +229 -0
- package/data/probe/codex-config/config.toml +6 -0
- package/data/probe/docs/PERFORMANCE_OPTIMIZATION.md +161 -0
- package/data/probe/examples/cache_demo.rs +46 -0
- package/data/probe/examples/chat/.dockerignore +37 -0
- package/data/probe/examples/chat/ChatSessionManager.js +295 -0
- package/data/probe/examples/chat/Dockerfile +98 -0
- package/data/probe/examples/chat/LICENSE +201 -0
- package/data/probe/examples/chat/LOCAL_IMAGE_SUPPORT.md +195 -0
- package/data/probe/examples/chat/MCP_INTEGRATION.md +400 -0
- package/data/probe/examples/chat/README.md +338 -0
- package/data/probe/examples/chat/TRACING.md +226 -0
- package/data/probe/examples/chat/appTracer.js +968 -0
- package/data/probe/examples/chat/auth.js +76 -0
- package/data/probe/examples/chat/bin/probe-chat.js +13 -0
- package/data/probe/examples/chat/build.js +104 -0
- package/data/probe/examples/chat/cancelRequest.js +84 -0
- package/data/probe/examples/chat/demo-agentic-image-flow.js +88 -0
- package/data/probe/examples/chat/demo-local-images.js +128 -0
- package/data/probe/examples/chat/fileSpanExporter.js +181 -0
- package/data/probe/examples/chat/implement/README.md +228 -0
- package/data/probe/examples/chat/implement/backends/AiderBackend.js +750 -0
- package/data/probe/examples/chat/implement/backends/BaseBackend.js +276 -0
- package/data/probe/examples/chat/implement/backends/ClaudeCodeBackend.js +767 -0
- package/data/probe/examples/chat/implement/backends/MockBackend.js +237 -0
- package/data/probe/examples/chat/implement/backends/registry.js +85 -0
- package/data/probe/examples/chat/implement/core/BackendManager.js +567 -0
- package/data/probe/examples/chat/implement/core/ImplementTool.js +354 -0
- package/data/probe/examples/chat/implement/core/config.js +428 -0
- package/data/probe/examples/chat/implement/core/timeouts.js +58 -0
- package/data/probe/examples/chat/implement/core/utils.js +496 -0
- package/data/probe/examples/chat/implement/types/BackendTypes.js +126 -0
- package/data/probe/examples/chat/index.js +669 -0
- package/data/probe/examples/chat/mcpServer.js +341 -0
- package/data/probe/examples/chat/npm/LICENSE +15 -0
- package/data/probe/examples/chat/npm/README.md +168 -0
- package/data/probe/examples/chat/npm/bin/probe-chat.js +156 -0
- package/data/probe/examples/chat/npm/index.js +259 -0
- package/data/probe/examples/chat/npm/package.json +54 -0
- package/data/probe/examples/chat/package.json +102 -0
- package/data/probe/examples/chat/probeChat.js +456 -0
- package/data/probe/examples/chat/probeTool.js +491 -0
- package/data/probe/examples/chat/storage/JsonChatStorage.js +476 -0
- package/data/probe/examples/chat/telemetry.js +281 -0
- package/data/probe/examples/chat/test/integration/chatFlows.test.js +320 -0
- package/data/probe/examples/chat/test/integration/toolCalling.test.js +471 -0
- package/data/probe/examples/chat/test/mocks/mockLLMProvider.js +269 -0
- package/data/probe/examples/chat/test/test-backends.js +90 -0
- package/data/probe/examples/chat/test/testUtils.js +530 -0
- package/data/probe/examples/chat/test/unit/backendTimeout.test.js +161 -0
- package/data/probe/examples/chat/test/unit/packageFiles.test.js +120 -0
- package/data/probe/examples/chat/test/verify-tests.js +118 -0
- package/data/probe/examples/chat/test-agentic-image-loading.js +294 -0
- package/data/probe/examples/chat/test-ai-sdk-telemetry.js +204 -0
- package/data/probe/examples/chat/test-chat-tracing.js +38 -0
- package/data/probe/examples/chat/test-direct-function.js +49 -0
- package/data/probe/examples/chat/test-file-size-validation.js +103 -0
- package/data/probe/examples/chat/test-full-mcp-integration.js +258 -0
- package/data/probe/examples/chat/test-github-context.txt +12 -0
- package/data/probe/examples/chat/test-hierarchy.js +203 -0
- package/data/probe/examples/chat/test-image-spans.js +37 -0
- package/data/probe/examples/chat/test-local-image-reading.js +176 -0
- package/data/probe/examples/chat/test-mcp-integration.js +136 -0
- package/data/probe/examples/chat/test-mcp-probe-server.js +161 -0
- package/data/probe/examples/chat/test-mcp-with-ai.js +279 -0
- package/data/probe/examples/chat/test-multiple-allowed-dirs.js +111 -0
- package/data/probe/examples/chat/test-probe-mcp-server.js +110 -0
- package/data/probe/examples/chat/test-security-validation.js +145 -0
- package/data/probe/examples/chat/test-simple-tracing.js +32 -0
- package/data/probe/examples/chat/test-trace-verification.js +235 -0
- package/data/probe/examples/chat/test-tracing.js +114 -0
- package/data/probe/examples/chat/tokenCounter.js +419 -0
- package/data/probe/examples/chat/tokenUsageDisplay.js +134 -0
- package/data/probe/examples/chat/webServer.js +1103 -0
- package/data/probe/examples/reranker/Cargo.toml +33 -0
- package/data/probe/examples/reranker/DEBUG_OUTPUT_ANALYSIS.md +71 -0
- package/data/probe/examples/reranker/MODELS.md +66 -0
- package/data/probe/examples/reranker/MODEL_COMPARISON.md +60 -0
- package/data/probe/examples/reranker/MULTI_MODEL_ANALYSIS.md +176 -0
- package/data/probe/examples/reranker/PERFORMANCE_SUMMARY.md +156 -0
- package/data/probe/examples/reranker/README.md +347 -0
- package/data/probe/examples/reranker/RUST_BERT_COMPARISON.md +82 -0
- package/data/probe/examples/reranker/TOKENIZATION_GUIDE.md +120 -0
- package/data/probe/examples/reranker/check_rust_tokenizer.py +108 -0
- package/data/probe/examples/reranker/convert_to_torchscript.py +109 -0
- package/data/probe/examples/reranker/debug_scoring.py +189 -0
- package/data/probe/examples/reranker/debug_tokenization.py +154 -0
- package/data/probe/examples/reranker/download_models.sh +73 -0
- package/data/probe/examples/reranker/requirements.txt +13 -0
- package/data/probe/examples/reranker/run_comprehensive_benchmark.sh +83 -0
- package/data/probe/examples/reranker/rust_bert_test/Cargo.toml +12 -0
- package/data/probe/examples/reranker/rust_bert_test/README.md +54 -0
- package/data/probe/examples/reranker/simple_test.py +50 -0
- package/data/probe/examples/reranker/test_all_models.sh +63 -0
- package/data/probe/examples/reranker/test_bert_results.sh +44 -0
- package/data/probe/examples/reranker/test_cross_encoder.py +334 -0
- package/data/probe/examples/reranker/test_cross_encoder.sh +80 -0
- package/data/probe/examples/reranker/test_exact_comparison.py +151 -0
- package/data/probe/examples/reranker/test_parallel_performance.sh +56 -0
- package/data/probe/examples/reranker/test_scores.py +132 -0
- package/data/probe/install.ps1 +508 -0
- package/data/probe/install.sh +460 -0
- package/data/probe/npm/CLONE_METHOD_EXAMPLES.md +596 -0
- package/data/probe/npm/CONTEXT_COMPACTION.md +303 -0
- package/data/probe/npm/DELEGATE_TOOL_README.md +166 -0
- package/data/probe/npm/MAID_INTEGRATION.md +313 -0
- package/data/probe/npm/MCP_INTEGRATION_SUMMARY.md +241 -0
- package/data/probe/npm/README.md +824 -0
- package/data/probe/npm/bin/.gitignore +7 -0
- package/data/probe/npm/bin/.gitkeep +0 -0
- package/data/probe/npm/bin/README.md +12 -0
- package/data/probe/npm/bin/probe +167 -0
- package/data/probe/npm/docs/CLAUDE_CODE_INTEGRATION.md +414 -0
- package/data/probe/npm/docs/CODEX_INTEGRATION.md +502 -0
- package/data/probe/npm/docs/EDIT_CREATE_TOOLS.md +233 -0
- package/data/probe/npm/docs/RETRY_AND_FALLBACK.md +674 -0
- package/data/probe/npm/example-usage.js +335 -0
- package/data/probe/npm/examples/multi-engine-demo.js +117 -0
- package/data/probe/npm/examples/probe-agent-cli.js +113 -0
- package/data/probe/npm/examples/test-agent-edit.js +114 -0
- package/data/probe/npm/examples/test-edit-create.js +120 -0
- package/data/probe/npm/examples/test-edit-direct.js +114 -0
- package/data/probe/npm/index.d.ts +744 -0
- package/data/probe/npm/jest.config.js +52 -0
- package/data/probe/npm/package.json +117 -0
- package/data/probe/npm/scripts/build-agent.cjs +75 -0
- package/data/probe/npm/scripts/build-cjs.js +124 -0
- package/data/probe/npm/scripts/build-mcp.cjs +36 -0
- package/data/probe/npm/scripts/postinstall.js +216 -0
- package/data/probe/npm/test-codex-e2e.js +78 -0
- package/data/probe/npm/test-download-lock.js +109 -0
- package/data/probe/npm/test-grep-security.js +94 -0
- package/data/probe/npm/test-grep-simplified.js +63 -0
- package/data/probe/npm/test-grep.js +51 -0
- package/data/probe/npm/tests/README.md +96 -0
- package/data/probe/npm/tests/agent-compact-history.test.js +174 -0
- package/data/probe/npm/tests/allow-tests-default.test.js +151 -0
- package/data/probe/npm/tests/contextCompactor.test.js +498 -0
- package/data/probe/npm/tests/delegate-config.test.js +353 -0
- package/data/probe/npm/tests/delegate-integration.test.js +348 -0
- package/data/probe/npm/tests/extractor-integration.test.js +162 -0
- package/data/probe/npm/tests/extractor.test.js +317 -0
- package/data/probe/npm/tests/fixtures/sampleDiagrams.js +267 -0
- package/data/probe/npm/tests/integration/claude-code-auto-fallback.spec.js +148 -0
- package/data/probe/npm/tests/integration/claude-code-multi-step.spec.js +127 -0
- package/data/probe/npm/tests/integration/claude-code-tool-events.spec.js +163 -0
- package/data/probe/npm/tests/integration/codex-auto-fallback.spec.js +191 -0
- package/data/probe/npm/tests/integration/codex-tool-events.spec.js +147 -0
- package/data/probe/npm/tests/integration/examplesChatMcp.test.js +402 -0
- package/data/probe/npm/tests/integration/mcpDotenvSupport.test.js +174 -0
- package/data/probe/npm/tests/integration/mcpErrorHandling.test.js +566 -0
- package/data/probe/npm/tests/integration/mcpRobustness.test.js +564 -0
- package/data/probe/npm/tests/integration/mcpStdoutPurity.test.js +355 -0
- package/data/probe/npm/tests/integration/probeAgentMcp.test.js +398 -0
- package/data/probe/npm/tests/integration/retryFallback.test.js +368 -0
- package/data/probe/npm/tests/integration/schema-in-initial-message.test.js +318 -0
- package/data/probe/npm/tests/integration/schema-validation-loop-prevention.test.js +244 -0
- package/data/probe/npm/tests/integration/schemaRetryLogic.test.js +94 -0
- package/data/probe/npm/tests/integration/validationFlow.test.js +329 -0
- package/data/probe/npm/tests/manual/test-codex-basic.js +110 -0
- package/data/probe/npm/tests/mcp/mcpClientManager.test.js +614 -0
- package/data/probe/npm/tests/mcp/mcpConfig.test.js +359 -0
- package/data/probe/npm/tests/mcp/mcpXmlBridge.test.js +436 -0
- package/data/probe/npm/tests/mcp/mockMcpServer.js +510 -0
- package/data/probe/npm/tests/mcp-strict-syntax.test.js +319 -0
- package/data/probe/npm/tests/mermaidQuoteEscaping.test.js +214 -0
- package/data/probe/npm/tests/nestedQuoteFix.test.js +40 -0
- package/data/probe/npm/tests/setup.js +46 -0
- package/data/probe/npm/tests/unit/allowed-tools.test.js +513 -0
- package/data/probe/npm/tests/unit/attempt-completion-closing-tag-in-content.test.js +188 -0
- package/data/probe/npm/tests/unit/attemptCompletionJsonFix.test.js +238 -0
- package/data/probe/npm/tests/unit/attemptCompletionJsonIssue.test.js +128 -0
- package/data/probe/npm/tests/unit/backtickAutoFix.test.js +35 -0
- package/data/probe/npm/tests/unit/bash-probe-agent-integration.test.js +389 -0
- package/data/probe/npm/tests/unit/bash-simple-commands.test.js +324 -0
- package/data/probe/npm/tests/unit/bash-tool-comprehensive.test.js +371 -0
- package/data/probe/npm/tests/unit/bash-tool-integration.test.js +310 -0
- package/data/probe/npm/tests/unit/bash-tool.test.js +341 -0
- package/data/probe/npm/tests/unit/completion-prompt.test.js +379 -0
- package/data/probe/npm/tests/unit/cwd-path-options.test.js +287 -0
- package/data/probe/npm/tests/unit/delegate-limits.test.js +422 -0
- package/data/probe/npm/tests/unit/direct-content-attempt-completion.test.js +235 -0
- package/data/probe/npm/tests/unit/edit-create-tools.test.js +609 -0
- package/data/probe/npm/tests/unit/enhancedMermaidValidation.test.js +577 -0
- package/data/probe/npm/tests/unit/extract-content.test.js +83 -0
- package/data/probe/npm/tests/unit/extract-multiple-targets.test.js +89 -0
- package/data/probe/npm/tests/unit/fallbackManager.test.js +442 -0
- package/data/probe/npm/tests/unit/githubCompatibilityValidation.test.js +258 -0
- package/data/probe/npm/tests/unit/imageConfig.test.js +149 -0
- package/data/probe/npm/tests/unit/imagePathResolution.test.js +345 -0
- package/data/probe/npm/tests/unit/json-fixing-agent.test.js +238 -0
- package/data/probe/npm/tests/unit/json-validation-enhanced-errors.test.js +199 -0
- package/data/probe/npm/tests/unit/jsonValidationInfiniteLoopFix.test.js +228 -0
- package/data/probe/npm/tests/unit/maidIntegration.test.js +139 -0
- package/data/probe/npm/tests/unit/maxIterationsWarning.test.js +195 -0
- package/data/probe/npm/tests/unit/mermaidEdgeLabelFix.test.js +161 -0
- package/data/probe/npm/tests/unit/mermaidHtmlEntities.test.js +76 -0
- package/data/probe/npm/tests/unit/mermaidInfiniteLoopFix.test.js +64 -0
- package/data/probe/npm/tests/unit/mermaidValidation.test.js +723 -0
- package/data/probe/npm/tests/unit/mermaidValidationVisorExample.test.js +309 -0
- package/data/probe/npm/tests/unit/probe-agent-clone-realistic.test.js +643 -0
- package/data/probe/npm/tests/unit/probe-agent-clone.test.js +476 -0
- package/data/probe/npm/tests/unit/probe-agent-delegate.test.js +400 -0
- package/data/probe/npm/tests/unit/probe-agent-model-option.test.js +118 -0
- package/data/probe/npm/tests/unit/probeTool-security.test.js +283 -0
- package/data/probe/npm/tests/unit/readImageTool.test.js +418 -0
- package/data/probe/npm/tests/unit/retryManager.test.js +317 -0
- package/data/probe/npm/tests/unit/schema-aware-reminders.test.js +288 -0
- package/data/probe/npm/tests/unit/schemaDefinitionDetection.test.js +115 -0
- package/data/probe/npm/tests/unit/schemaUtils.test.js +1268 -0
- package/data/probe/npm/tests/unit/simpleTelemetry.test.js +282 -0
- package/data/probe/npm/tests/unit/simplified-attempt-completion.test.js +274 -0
- package/data/probe/npm/tests/unit/single-quote-json-bug.test.js +231 -0
- package/data/probe/npm/tests/unit/subgraphAutoFix.test.js +110 -0
- package/data/probe/npm/tests/unit/system-prompt.test.js +32 -0
- package/data/probe/npm/tests/unit/types-probe-agent-options.test.js +42 -0
- package/data/probe/npm/tests/unit/xmlParsing.test.js +720 -0
- package/data/probe/npm/tsconfig.json +21 -0
- package/data/probe/result1.txt +19 -0
- package/data/probe/result2.txt +26 -0
- package/data/probe/scripts/benchmark.sh +270 -0
- package/data/probe/scripts/cache_memory_analysis.rs +844 -0
- package/data/probe/scripts/claude-hook-wrapper.sh +56 -0
- package/data/probe/site/.env.example +10 -0
- package/data/probe/site/DEPLOYMENT.md +86 -0
- package/data/probe/site/README.md +183 -0
- package/data/probe/site/adding-languages.md +135 -0
- package/data/probe/site/ai-chat.md +427 -0
- package/data/probe/site/ai-integration.md +1488 -0
- package/data/probe/site/blog/agentic-flow-custom-xml-protocol.md +407 -0
- package/data/probe/site/blog/index.md +118 -0
- package/data/probe/site/blog/v0.6.0-release.md +426 -0
- package/data/probe/site/blog.md +8 -0
- package/data/probe/site/changelog.md +200 -0
- package/data/probe/site/cli-mode.md +437 -0
- package/data/probe/site/code-extraction.md +436 -0
- package/data/probe/site/contributing/README.md +9 -0
- package/data/probe/site/contributing/documentation-cross-references.md +215 -0
- package/data/probe/site/contributing/documentation-maintenance.md +275 -0
- package/data/probe/site/contributing/documentation-structure.md +75 -0
- package/data/probe/site/documentation-cross-references.md +215 -0
- package/data/probe/site/documentation-guide.md +132 -0
- package/data/probe/site/documentation-maintenance.md +275 -0
- package/data/probe/site/features.md +147 -0
- package/data/probe/site/how-it-works.md +118 -0
- package/data/probe/site/index.md +175 -0
- package/data/probe/site/index.md.bak +133 -0
- package/data/probe/site/installation.md +235 -0
- package/data/probe/site/integrations/docker.md +248 -0
- package/data/probe/site/integrations/github-actions.md +413 -0
- package/data/probe/site/language-support-overview.md +168 -0
- package/data/probe/site/mcp-integration.md +587 -0
- package/data/probe/site/mcp-server.md +304 -0
- package/data/probe/site/navigation-structure.md +76 -0
- package/data/probe/site/nodejs-sdk.md +798 -0
- package/data/probe/site/output-formats.md +625 -0
- package/data/probe/site/package.json +21 -0
- package/data/probe/site/public/_headers +28 -0
- package/data/probe/site/public/_redirects +11 -0
- package/data/probe/site/quick-start.md +289 -0
- package/data/probe/site/search-functionality.md +291 -0
- package/data/probe/site/search-reference.md +291 -0
- package/data/probe/site/supported-languages.md +215 -0
- package/data/probe/site/use-cases/README.md +8 -0
- package/data/probe/site/use-cases/advanced-cli.md +253 -0
- package/data/probe/site/use-cases/ai-code-editors.md +239 -0
- package/data/probe/site/use-cases/building-ai-tools.md +529 -0
- package/data/probe/site/use-cases/cli-ai-workflows.md +285 -0
- package/data/probe/site/use-cases/deploying-probe-web-interface.md +255 -0
- package/data/probe/site/use-cases/integrating-probe-into-ai-code-editors.md +161 -0
- package/data/probe/site/use-cases/nodejs-sdk.md +596 -0
- package/data/probe/site/use-cases/team-chat.md +350 -0
- package/data/probe/site/web-interface.md +434 -0
- package/data/probe/site/wrangler.toml +9 -0
- package/data/probe/test-api-key.sh +1 -0
- package/data/probe/test-probe-implementation/hello.js +7 -0
- package/data/probe/test_cases/demonstrate_early_termination_issues.sh +176 -0
- package/data/probe/test_cases/early_termination_issues.rs +533 -0
- package/data/probe/test_data/test_nested_struct.go +26 -0
- package/data/probe/tests/README.md +286 -0
- package/data/probe/tests/README_search_determinism_tests.md +116 -0
- package/data/probe/tests/adjacent_comment_test.rs +152 -0
- package/data/probe/tests/apostrophe_handling_tests.rs +132 -0
- package/data/probe/tests/block_filtering_with_ast_tests.rs +669 -0
- package/data/probe/tests/block_merging_tests.rs +396 -0
- package/data/probe/tests/c_outline_format_tests.rs +2179 -0
- package/data/probe/tests/cache_invalidation_issues.rs.disabled +682 -0
- package/data/probe/tests/cache_order_tests.rs +147 -0
- package/data/probe/tests/cache_query_scoping_tests.rs +221 -0
- package/data/probe/tests/cli_tests.rs +680 -0
- package/data/probe/tests/comment_context_integration_test.rs +240 -0
- package/data/probe/tests/common.rs +33 -0
- package/data/probe/tests/complex_block_merging_tests.rs +599 -0
- package/data/probe/tests/complex_query_block_filtering_tests.rs +422 -0
- package/data/probe/tests/control_flow_closing_braces_test.rs +91 -0
- package/data/probe/tests/cpp_outline_format_tests.rs +1507 -0
- package/data/probe/tests/csharp_outline_format_tests.rs +941 -0
- package/data/probe/tests/elastic_query_integration_tests.rs +922 -0
- package/data/probe/tests/extract_command_tests.rs +1848 -0
- package/data/probe/tests/extract_deduplication_tests.rs +146 -0
- package/data/probe/tests/extract_input_file_tests.rs +84 -0
- package/data/probe/tests/extract_prompt_tests.rs +102 -0
- package/data/probe/tests/filename_search_tests.rs +96 -0
- package/data/probe/tests/fixtures/user/AssemblyInfo.cs +3 -0
- package/data/probe/tests/github_extract_tests.rs +234 -0
- package/data/probe/tests/go_comment_test.rs +253 -0
- package/data/probe/tests/go_outline_format_tests.rs +2587 -0
- package/data/probe/tests/go_path_resolver_tests.rs +96 -0
- package/data/probe/tests/html_outline_format_tests.rs +637 -0
- package/data/probe/tests/integration_tests.rs +837 -0
- package/data/probe/tests/ip_whitelist_test.rs +148 -0
- package/data/probe/tests/java_outline_format_tests.rs +1611 -0
- package/data/probe/tests/javascript_extract_tests.rs +315 -0
- package/data/probe/tests/javascript_outline_format_tests.rs +1464 -0
- package/data/probe/tests/json_format_tests.rs +436 -0
- package/data/probe/tests/json_schema_validation_tests.rs +450 -0
- package/data/probe/tests/lib_usage.rs +60 -0
- package/data/probe/tests/line_comment_context_extension_test.rs +459 -0
- package/data/probe/tests/line_map_cache_tests.rs +114 -0
- package/data/probe/tests/markdown_integration_tests.rs +190 -0
- package/data/probe/tests/mocks/test_ip_whitelist.go +11 -0
- package/data/probe/tests/mocks/test_object.js +27 -0
- package/data/probe/tests/mocks/test_struct.go +50 -0
- package/data/probe/tests/multi_keyword_pattern_tests.rs +464 -0
- package/data/probe/tests/multi_language_syntax_integration_tests.rs +218 -0
- package/data/probe/tests/multiple_capture_groups_tests.rs +169 -0
- package/data/probe/tests/negative_compound_word_tests.rs +246 -0
- package/data/probe/tests/nested_symbol_extraction_tests.rs +99 -0
- package/data/probe/tests/outline_cross_file_interference_test.rs +335 -0
- package/data/probe/tests/outline_keyword_preservation_test.rs +67 -0
- package/data/probe/tests/output_format_edge_cases_tests.rs +693 -0
- package/data/probe/tests/parallel_extraction_tests.rs +178 -0
- package/data/probe/tests/parallel_search_tests.rs +355 -0
- package/data/probe/tests/path_resolver_tests.rs +698 -0
- package/data/probe/tests/php_outline_format_extended_tests.rs +928 -0
- package/data/probe/tests/php_outline_format_tests.rs +768 -0
- package/data/probe/tests/property_tests.proptest-regressions +9 -0
- package/data/probe/tests/property_tests.rs +118 -0
- package/data/probe/tests/python_outline_format_tests.rs +1538 -0
- package/data/probe/tests/query_command_json_tests.rs +438 -0
- package/data/probe/tests/query_command_tests.rs +232 -0
- package/data/probe/tests/query_command_xml_tests.rs +569 -0
- package/data/probe/tests/quoted_term_with_negative_keyword_tests.rs +216 -0
- package/data/probe/tests/required_terms_filename_tests.rs +116 -0
- package/data/probe/tests/ruby_outline_format_tests.rs +1011 -0
- package/data/probe/tests/rust_line_comment_context_test.rs +151 -0
- package/data/probe/tests/rust_outline_format_enhanced_tests.rs +725 -0
- package/data/probe/tests/rust_outline_format_tests.rs +843 -0
- package/data/probe/tests/schemas/xml_output_schema.xsd +38 -0
- package/data/probe/tests/search_determinism_tests.rs +451 -0
- package/data/probe/tests/search_hints_tests.rs +253 -0
- package/data/probe/tests/special_character_escaping_tests.rs +417 -0
- package/data/probe/tests/stemming_compound_word_filtering_tests.rs +535 -0
- package/data/probe/tests/strict_elastic_syntax_tests.rs +404 -0
- package/data/probe/tests/swift_outline_format_tests.rs +3319 -0
- package/data/probe/tests/symbols_tests.rs +166 -0
- package/data/probe/tests/test_file.rs +45 -0
- package/data/probe/tests/test_tokenize.rs +28 -0
- package/data/probe/tests/timeout_tests.rs +82 -0
- package/data/probe/tests/tokenization_tests.rs +195 -0
- package/data/probe/tests/tokenized_block_filtering_tests.rs +174 -0
- package/data/probe/tests/typescript_extract_tests.rs +214 -0
- package/data/probe/tests/typescript_outline_format_tests.rs +2188 -0
- package/data/probe/tests/xml_format_tests.rs +568 -0
- package/data/probe/tests/xml_schema_validation_tests.rs +497 -0
- package/data/scripts/postinstall.mjs +9 -0
- package/data/scripts/set-version.js +0 -0
- package/data/scripts/wiki-build.sh +111 -0
- package/data/scripts/wiki-deploy.sh +73 -0
- package/data/serve.json +12 -0
- package/data/test/demo-dynamic.html +134 -0
- package/data/test/demo-esm.html +105 -0
- package/data/test/demo-iife.html +78 -0
- package/data/tsconfig.json +7 -0
- package/data/vite.server.ts +483 -0
- package/data/vitest.config.ts +40 -0
- package/data/wiki/Home.md +58 -0
- package/data/wiki/_Sidebar.md +39 -0
- package/docs-mcp.config.json +20 -0
- package/package.json +56 -0
- package/src/config.js +111 -0
- package/src/index.js +395 -0
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
# Context Window Compaction
|
|
2
|
+
|
|
3
|
+
ProbeAgent includes automatic context window compaction to handle scenarios where conversations exceed the AI model's token limits.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
When interacting with AI models through ProbeAgent, conversations can grow large over multiple turns. If the context window limit is exceeded, ProbeAgent automatically compacts the conversation history by intelligently removing intermediate reasoning steps while preserving essential information.
|
|
8
|
+
|
|
9
|
+
## How It Works
|
|
10
|
+
|
|
11
|
+
### Conversation Structure
|
|
12
|
+
|
|
13
|
+
ProbeAgent conversations follow this structure:
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
<user message>
|
|
17
|
+
↓
|
|
18
|
+
<internal agentic monologue> (thinking, tool planning)
|
|
19
|
+
↓
|
|
20
|
+
<tool execution> (search, extract, etc.)
|
|
21
|
+
↓
|
|
22
|
+
<tool result>
|
|
23
|
+
↓
|
|
24
|
+
<final agent answer>
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
A "segment" consists of:
|
|
28
|
+
- User message (starting point)
|
|
29
|
+
- 0+ assistant monologue messages (internal reasoning with `<thinking>` tags, tool calls)
|
|
30
|
+
- Final answer (tool results or `attempt_completion`)
|
|
31
|
+
|
|
32
|
+
### Compaction Strategy
|
|
33
|
+
|
|
34
|
+
When a context limit error is detected, ProbeAgent:
|
|
35
|
+
|
|
36
|
+
1. **Identifies segments** in the conversation history
|
|
37
|
+
2. **Keeps all user messages** - preserves original questions/requests
|
|
38
|
+
3. **Keeps all final answers** - preserves tool results and completions
|
|
39
|
+
4. **Removes intermediate monologues** from older segments (thinking, tool planning)
|
|
40
|
+
5. **Preserves recent segments** completely (configurable, defaults to last 2 segments)
|
|
41
|
+
6. **Retries the request** with compacted messages
|
|
42
|
+
|
|
43
|
+
This ensures:
|
|
44
|
+
- ✅ No loss of user intent
|
|
45
|
+
- ✅ No loss of completed work
|
|
46
|
+
- ✅ Continuation from current state
|
|
47
|
+
- ✅ Significant token reduction
|
|
48
|
+
|
|
49
|
+
## Error Detection
|
|
50
|
+
|
|
51
|
+
The compactor automatically detects context limit errors from various AI providers:
|
|
52
|
+
|
|
53
|
+
- **Anthropic**: "context_length_exceeded", "prompt is too long"
|
|
54
|
+
- **OpenAI**: "maximum context length is X tokens"
|
|
55
|
+
- **Google/Gemini**: "input token count exceeds limit"
|
|
56
|
+
- **Generic patterns**: "tokens exceed", "too long", "over limit", etc.
|
|
57
|
+
|
|
58
|
+
## Manual Compaction
|
|
59
|
+
|
|
60
|
+
You can manually compact conversation history at any time using the `compactHistory()` method:
|
|
61
|
+
|
|
62
|
+
```javascript
|
|
63
|
+
const agent = new ProbeAgent({
|
|
64
|
+
sessionId: 'my-session',
|
|
65
|
+
path: './my-project'
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
// ... have some conversations ...
|
|
69
|
+
|
|
70
|
+
// Manually compact history
|
|
71
|
+
const stats = await agent.compactHistory();
|
|
72
|
+
|
|
73
|
+
console.log(`Removed ${stats.removed} messages`);
|
|
74
|
+
console.log(`Token savings: ${stats.tokensSaved}`);
|
|
75
|
+
|
|
76
|
+
// Compact with custom options
|
|
77
|
+
const stats2 = await agent.compactHistory({
|
|
78
|
+
keepLastSegment: true,
|
|
79
|
+
minSegmentsToKeep: 2 // Keep last 2 segments fully
|
|
80
|
+
});
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
This is useful when:
|
|
84
|
+
- You want to proactively reduce context before hitting limits
|
|
85
|
+
- You're monitoring token usage and want to optimize
|
|
86
|
+
- You want to clean up history at specific checkpoints
|
|
87
|
+
- Testing or debugging compaction behavior
|
|
88
|
+
|
|
89
|
+
## Configuration
|
|
90
|
+
|
|
91
|
+
Context compaction is enabled **automatically** when context limits are exceeded. No configuration required!
|
|
92
|
+
|
|
93
|
+
For manual compaction or advanced use:
|
|
94
|
+
|
|
95
|
+
```javascript
|
|
96
|
+
// Manual compaction
|
|
97
|
+
await agent.compactHistory({
|
|
98
|
+
keepLastSegment: true, // Keep the most recent segment intact
|
|
99
|
+
minSegmentsToKeep: 1 // Number of recent segments to preserve fully
|
|
100
|
+
});
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### Options
|
|
104
|
+
|
|
105
|
+
| Option | Default | Description |
|
|
106
|
+
|--------|---------|-------------|
|
|
107
|
+
| `keepLastSegment` | `true` | Always preserve the active/most recent segment |
|
|
108
|
+
| `minSegmentsToKeep` | `1` | Number of recent segments to keep fully (including monologues) |
|
|
109
|
+
|
|
110
|
+
## Example
|
|
111
|
+
|
|
112
|
+
### Before Compaction (150+ messages)
|
|
113
|
+
|
|
114
|
+
```
|
|
115
|
+
[System message]
|
|
116
|
+
Turn 1: User → Assistant(thinking) → Assistant(search) → Tool result
|
|
117
|
+
Turn 2: User → Assistant(thinking) → Assistant(extract) → Tool result
|
|
118
|
+
Turn 3: User → Assistant(thinking) → Assistant(implement) → Tool result
|
|
119
|
+
Turn 4: User → Assistant(thinking) → Assistant(bash) → Tool result
|
|
120
|
+
Turn 5: User → Assistant(thinking) → Assistant(search) ← ACTIVE
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### After Compaction (~50 messages)
|
|
124
|
+
|
|
125
|
+
```
|
|
126
|
+
[System message]
|
|
127
|
+
Turn 1: User → Tool result (monologue removed)
|
|
128
|
+
Turn 2: User → Tool result (monologue removed)
|
|
129
|
+
Turn 3: User → Tool result (monologue removed)
|
|
130
|
+
Turn 4: User → Tool result (monologue removed)
|
|
131
|
+
Turn 5: User → Assistant(thinking) → Assistant(search) (preserved, active)
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
**Result**: ~66% reduction in messages, ~60% reduction in tokens
|
|
135
|
+
|
|
136
|
+
Only the **active segment** (Turn 5) retains its full internal monologue. All completed segments (Turns 1-4) are compressed to just User → Final Result.
|
|
137
|
+
|
|
138
|
+
## Statistics
|
|
139
|
+
|
|
140
|
+
When compaction occurs, ProbeAgent logs statistics:
|
|
141
|
+
|
|
142
|
+
```
|
|
143
|
+
[INFO] Context window limit exceeded. Compacting conversation...
|
|
144
|
+
[INFO] Removed 42 messages (66.7% reduction)
|
|
145
|
+
[INFO] Estimated token savings: 8450 tokens
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
With debug mode enabled:
|
|
149
|
+
|
|
150
|
+
```javascript
|
|
151
|
+
const agent = new ProbeAgent({
|
|
152
|
+
debug: true,
|
|
153
|
+
// ... other options
|
|
154
|
+
});
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
You'll see detailed compaction information:
|
|
158
|
+
|
|
159
|
+
```
|
|
160
|
+
[DEBUG] Compaction stats: {
|
|
161
|
+
originalCount: 63,
|
|
162
|
+
compactedCount: 21,
|
|
163
|
+
removed: 42,
|
|
164
|
+
reductionPercent: 66.7,
|
|
165
|
+
originalTokens: 12800,
|
|
166
|
+
compactedTokens: 4350,
|
|
167
|
+
tokensSaved: 8450
|
|
168
|
+
}
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
## API Reference
|
|
172
|
+
|
|
173
|
+
### `agent.compactHistory(options)`
|
|
174
|
+
|
|
175
|
+
Manually compact conversation history.
|
|
176
|
+
|
|
177
|
+
**Parameters:**
|
|
178
|
+
- `options` (Object, optional)
|
|
179
|
+
- `keepLastSegment` (boolean, default: `true`) - Preserve active segment
|
|
180
|
+
- `minSegmentsToKeep` (number, default: `1`) - Number of recent segments to keep fully
|
|
181
|
+
|
|
182
|
+
**Returns:** Promise<Object> - Compaction statistics
|
|
183
|
+
```javascript
|
|
184
|
+
{
|
|
185
|
+
originalCount: 63, // Original message count
|
|
186
|
+
compactedCount: 21, // Compacted message count
|
|
187
|
+
removed: 42, // Messages removed
|
|
188
|
+
reductionPercent: 66.7, // Percentage reduction
|
|
189
|
+
originalTokens: 12800, // Estimated original tokens
|
|
190
|
+
compactedTokens: 4350, // Estimated compacted tokens
|
|
191
|
+
tokensSaved: 8450 // Estimated tokens saved
|
|
192
|
+
}
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
**Example:**
|
|
196
|
+
```javascript
|
|
197
|
+
const stats = await agent.compactHistory();
|
|
198
|
+
console.log(`Saved ${stats.tokensSaved} tokens`);
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
## Testing
|
|
202
|
+
|
|
203
|
+
The context compaction functionality is fully tested. Run tests with:
|
|
204
|
+
|
|
205
|
+
```bash
|
|
206
|
+
npm test -- contextCompactor.test.js
|
|
207
|
+
npm test -- agent-compact-history.test.js
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
Test coverage includes:
|
|
211
|
+
- Error detection across multiple AI providers
|
|
212
|
+
- Message segment identification
|
|
213
|
+
- Compaction logic with various configurations
|
|
214
|
+
- Token estimation and statistics
|
|
215
|
+
- Real-world conversation scenarios
|
|
216
|
+
- Manual compaction API
|
|
217
|
+
|
|
218
|
+
## Technical Details
|
|
219
|
+
|
|
220
|
+
### Architecture
|
|
221
|
+
|
|
222
|
+
Context compaction uses a **two-layer error handling strategy**:
|
|
223
|
+
|
|
224
|
+
1. **Transient Errors** (handled by `RetryManager`/`FallbackManager`)
|
|
225
|
+
- Rate limits (429)
|
|
226
|
+
- Network issues (ECONNRESET, timeouts)
|
|
227
|
+
- Server errors (500, 502, 503, 504)
|
|
228
|
+
- Retries with exponential backoff
|
|
229
|
+
- Falls back to alternative providers
|
|
230
|
+
|
|
231
|
+
2. **Context Limit Errors** (handled by compaction)
|
|
232
|
+
- Context window exceeded
|
|
233
|
+
- Token limit reached
|
|
234
|
+
- Compacts once per iteration
|
|
235
|
+
- Retries with reduced message set
|
|
236
|
+
- Separate from transient retry loop
|
|
237
|
+
- Fails immediately if no messages can be removed
|
|
238
|
+
|
|
239
|
+
This separation ensures:
|
|
240
|
+
- Transient errors get multiple retries
|
|
241
|
+
- Context errors trigger structural changes (compaction)
|
|
242
|
+
- No interference between retry strategies
|
|
243
|
+
- No infinite loops (compaction attempted only once per iteration)
|
|
244
|
+
|
|
245
|
+
### Files
|
|
246
|
+
|
|
247
|
+
- **`src/agent/contextCompactor.js`** - Core compaction logic
|
|
248
|
+
- **`src/agent/ProbeAgent.js`** - Integration with error handling and API
|
|
249
|
+
- Lines 1453-1565: Automatic compaction retry loop with infinite loop protection
|
|
250
|
+
- Lines 2421-2482: Manual compaction method
|
|
251
|
+
- **`tests/contextCompactor.test.js`** - Core compaction test suite
|
|
252
|
+
- **`tests/agent-compact-history.test.js`** - Manual API test suite
|
|
253
|
+
|
|
254
|
+
### Functions
|
|
255
|
+
|
|
256
|
+
#### `isContextLimitError(error)`
|
|
257
|
+
Detects if an error indicates context window overflow.
|
|
258
|
+
|
|
259
|
+
#### `identifyMessageSegments(messages)`
|
|
260
|
+
Analyzes conversation history and identifies logical segments.
|
|
261
|
+
|
|
262
|
+
#### `compactMessages(messages, options)`
|
|
263
|
+
Performs intelligent compaction by removing intermediate monologues.
|
|
264
|
+
|
|
265
|
+
#### `calculateCompactionStats(originalMessages, compactedMessages)`
|
|
266
|
+
Computes reduction statistics and token savings.
|
|
267
|
+
|
|
268
|
+
#### `handleContextLimitError(error, messages, options)`
|
|
269
|
+
Main handler that orchestrates detection and compaction.
|
|
270
|
+
|
|
271
|
+
#### `agent.compactHistory(options)`
|
|
272
|
+
Public API method for manual history compaction.
|
|
273
|
+
|
|
274
|
+
## Limitations
|
|
275
|
+
|
|
276
|
+
1. **Minimum context**: Compaction cannot help if even the compacted history exceeds limits. The system will fail with a clear error message if no messages can be removed.
|
|
277
|
+
2. **System message**: System messages are never removed (contain critical instructions)
|
|
278
|
+
3. **Token estimation**: Token counts are approximations (1 token ≈ 4 characters)
|
|
279
|
+
4. **Recent segments**: Always preserves configured minimum segments to maintain context quality
|
|
280
|
+
5. **Single retry**: Compaction is attempted only once per iteration to prevent infinite loops
|
|
281
|
+
|
|
282
|
+
## Best Practices
|
|
283
|
+
|
|
284
|
+
1. **Use reasonable iteration limits**: Set `maxIterations` appropriately to avoid excessive history
|
|
285
|
+
2. **Monitor logs**: Check compaction logs to understand when/why it triggers
|
|
286
|
+
3. **Enable debug mode**: For development, use `debug: true` to see detailed statistics
|
|
287
|
+
4. **Test edge cases**: Ensure your application handles compaction gracefully
|
|
288
|
+
|
|
289
|
+
## Future Enhancements
|
|
290
|
+
|
|
291
|
+
Potential improvements being considered:
|
|
292
|
+
|
|
293
|
+
- Smarter segment importance scoring (keep more important monologues)
|
|
294
|
+
- Configurable compaction aggressiveness
|
|
295
|
+
- Semantic compression using embeddings
|
|
296
|
+
- Progressive compaction (multiple levels)
|
|
297
|
+
- Custom compaction strategies per use case
|
|
298
|
+
|
|
299
|
+
## Related Documentation
|
|
300
|
+
|
|
301
|
+
- [ProbeAgent README](./README.md) - Main ProbeAgent documentation
|
|
302
|
+
- [Retry and Fallback](./npm/src/agent/RetryManager.js) - Error handling and retry logic
|
|
303
|
+
- [MCP Integration](./MCP_INTEGRATION_SUMMARY.md) - Model Context Protocol support
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
# Delegate Tool
|
|
2
|
+
|
|
3
|
+
The delegate tool is used **automatically by AI agents** within the agentic loop to delegate big distinct tasks to specialized probe subagents. When an AI agent encounters complex multi-part requests, it should automatically identify opportunities for task separation and use delegation without explicit user instruction.
|
|
4
|
+
|
|
5
|
+
## Agentic Usage Pattern
|
|
6
|
+
|
|
7
|
+
The delegate tool is designed for **automatic use by AI agents**, not direct developer calls. The AI agent recognizes when a user's request involves multiple large, distinct components and automatically breaks them down into focused, parallel tasks.
|
|
8
|
+
|
|
9
|
+
### Automatic Task Recognition
|
|
10
|
+
|
|
11
|
+
When users make complex requests, the AI agent should automatically:
|
|
12
|
+
|
|
13
|
+
1. **Identify** multiple distinct components in the request
|
|
14
|
+
2. **Separate** them into self-contained tasks
|
|
15
|
+
3. **Delegate** each task to a specialized subagent
|
|
16
|
+
4. **Combine** results from all subagents
|
|
17
|
+
|
|
18
|
+
### XML Tool Format (AI Agent Usage)
|
|
19
|
+
|
|
20
|
+
```xml
|
|
21
|
+
<delegate>
|
|
22
|
+
<task>Analyze all authentication and authorization code in the codebase for security vulnerabilities and provide specific remediation recommendations</task>
|
|
23
|
+
</delegate>
|
|
24
|
+
|
|
25
|
+
<delegate>
|
|
26
|
+
<task>Review database queries and API endpoints for performance bottlenecks and suggest optimization strategies</task>
|
|
27
|
+
</delegate>
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## How It Works
|
|
31
|
+
|
|
32
|
+
1. **Task Definition**: You provide a complete, self-contained task description
|
|
33
|
+
2. **SDK-Based Agent Creation**: The delegate tool creates a new ProbeAgent instance in-process with:
|
|
34
|
+
- Default 'code-researcher' prompt (not inherited from parent)
|
|
35
|
+
- Schema validation disabled for simpler responses
|
|
36
|
+
- Mermaid validation disabled for faster processing
|
|
37
|
+
- Delegation explicitly disabled to prevent recursion
|
|
38
|
+
3. **Independent Execution**: The subagent processes your task in isolation within the same process
|
|
39
|
+
4. **Response Waiting**: The main agent awaits the subagent's completion (Promise-based)
|
|
40
|
+
5. **Result Return**: The delegate tool returns the subagent's clean response
|
|
41
|
+
|
|
42
|
+
## Subagent Environment
|
|
43
|
+
|
|
44
|
+
Each delegated task runs in a clean environment with automatic configuration:
|
|
45
|
+
- **Prompt**: Automatically uses the default `code-researcher` prompt, regardless of the parent agent's prompt
|
|
46
|
+
- **Validation**: Schema and Mermaid validation are automatically disabled for faster, simpler responses
|
|
47
|
+
- **Iterations**: Automatically limited to remaining parent iterations to respect global limits
|
|
48
|
+
- **Isolation**: Each subagent runs independently without inheriting parent context or history
|
|
49
|
+
- **No Recursion**: Delegation is explicitly disabled in subagents (`enableDelegate: false`) to prevent infinite delegation chains
|
|
50
|
+
- **Inherited Config**: Path, provider, and model are inherited from parent for consistency
|
|
51
|
+
- **In-Process**: Runs within the same Node.js process using the ProbeAgent SDK (no process spawning)
|
|
52
|
+
|
|
53
|
+
All these settings are applied automatically - no manual configuration needed.
|
|
54
|
+
|
|
55
|
+
## Security and Resource Management
|
|
56
|
+
|
|
57
|
+
The delegate tool includes built-in protection against resource exhaustion:
|
|
58
|
+
|
|
59
|
+
### Concurrent Delegation Limits
|
|
60
|
+
|
|
61
|
+
- **Global Limit**: Maximum of 3 concurrent delegations by default (configurable via `MAX_CONCURRENT_DELEGATIONS` environment variable)
|
|
62
|
+
- **Per-Session Limit**: Maximum of 10 delegations per parent session (configurable via `MAX_DELEGATIONS_PER_SESSION` environment variable)
|
|
63
|
+
- **Automatic Cleanup**: Counters are automatically decremented when delegations complete, fail, or timeout
|
|
64
|
+
|
|
65
|
+
### Recursion Prevention
|
|
66
|
+
|
|
67
|
+
- Subagents cannot spawn their own subagents - the `delegate` tool is explicitly disabled in delegated sessions
|
|
68
|
+
- This prevents infinite delegation chains and ensures bounded resource usage
|
|
69
|
+
|
|
70
|
+
### Rate Limiting
|
|
71
|
+
|
|
72
|
+
Delegation requests that exceed limits will fail immediately with clear error messages:
|
|
73
|
+
- `Maximum concurrent delegations (N) reached. Please wait for some delegations to complete.`
|
|
74
|
+
- `Maximum delegations per session (N) reached for session {id}`
|
|
75
|
+
|
|
76
|
+
### Environment Variables
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
# Set custom limits (optional)
|
|
80
|
+
export MAX_CONCURRENT_DELEGATIONS=5
|
|
81
|
+
export MAX_DELEGATIONS_PER_SESSION=20
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## Configuration Options
|
|
85
|
+
|
|
86
|
+
- `task` (required): The specific task to delegate. Should be a complete, self-contained task that can be executed independently.
|
|
87
|
+
- `timeout` (optional, default: 300): Maximum time to wait for the subagent in seconds
|
|
88
|
+
- `debug` (optional, default: false): Enable debug logging for troubleshooting
|
|
89
|
+
- `parentSessionId` (optional): Parent session ID for tracking per-session limits (automatically provided by ProbeAgent)
|
|
90
|
+
- `currentIteration` (optional): Current iteration count (automatically provided by ProbeAgent)
|
|
91
|
+
- `maxIterations` (optional): Maximum iterations allowed (automatically provided by ProbeAgent)
|
|
92
|
+
|
|
93
|
+
## Error Handling
|
|
94
|
+
|
|
95
|
+
The delegate tool includes comprehensive error handling:
|
|
96
|
+
- Process spawn failures
|
|
97
|
+
- Timeouts
|
|
98
|
+
- Agent execution errors
|
|
99
|
+
- Empty responses
|
|
100
|
+
|
|
101
|
+
## Agentic Use Cases
|
|
102
|
+
|
|
103
|
+
The AI agent automatically uses delegation for:
|
|
104
|
+
|
|
105
|
+
1. **Task Separation**: When user requests involve multiple distinct domains
|
|
106
|
+
2. **Complex Analysis**: Breaking comprehensive analysis into specialized areas
|
|
107
|
+
3. **Parallel Processing**: Distributing work across multiple focused subagents
|
|
108
|
+
4. **Domain Expertise**: Delegating to subagents optimized for specific areas
|
|
109
|
+
5. **Large Scope**: Decomposing overwhelming requests into manageable pieces
|
|
110
|
+
|
|
111
|
+
## Automatic Task Separation Examples
|
|
112
|
+
|
|
113
|
+
**User Request**: "Analyze my entire codebase for security, performance, and maintainability issues"
|
|
114
|
+
|
|
115
|
+
**AI Agent automatically separates into**:
|
|
116
|
+
```xml
|
|
117
|
+
<delegate>
|
|
118
|
+
<task>Analyze all authentication, authorization, input validation, and cryptographic code for security vulnerabilities and provide specific remediation recommendations with code examples</task>
|
|
119
|
+
</delegate>
|
|
120
|
+
|
|
121
|
+
<delegate>
|
|
122
|
+
<task>Review all database queries, API endpoints, algorithms, and resource usage patterns for performance bottlenecks and suggest concrete optimization strategies</task>
|
|
123
|
+
</delegate>
|
|
124
|
+
|
|
125
|
+
<delegate>
|
|
126
|
+
<task>Examine code structure, design patterns, documentation, and maintainability across all modules and provide refactoring recommendations</task>
|
|
127
|
+
</delegate>
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
**User Request**: "Help me understand how the payment system works"
|
|
131
|
+
|
|
132
|
+
**AI Agent automatically separates into**:
|
|
133
|
+
```xml
|
|
134
|
+
<delegate>
|
|
135
|
+
<task>Analyze the payment processing flow including transaction handling, validation, and error management to explain the complete payment workflow</task>
|
|
136
|
+
</delegate>
|
|
137
|
+
|
|
138
|
+
<delegate>
|
|
139
|
+
<task>Examine payment security measures including encryption, authentication, fraud detection, and compliance implementations</task>
|
|
140
|
+
</delegate>
|
|
141
|
+
|
|
142
|
+
<delegate>
|
|
143
|
+
<task>Review payment database schema, data models, and storage patterns to explain how payment data is structured and managed</task>
|
|
144
|
+
</delegate>
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
## Integration
|
|
148
|
+
|
|
149
|
+
The delegate tool is integrated into AI agent systems through:
|
|
150
|
+
- **ACP (Agent Communication Protocol)**: For advanced agent systems
|
|
151
|
+
- **XML Tool Parsing**: For AI agent tool call recognition
|
|
152
|
+
- **ProbeAgent Class**: For programmatic agent implementations
|
|
153
|
+
- **Vercel AI SDK**: For AI framework compatibility
|
|
154
|
+
- **LangChain Tools**: Via Vercel compatibility layer
|
|
155
|
+
|
|
156
|
+
## AI Agent Decision Making
|
|
157
|
+
|
|
158
|
+
The AI agent should automatically use delegation when it recognizes:
|
|
159
|
+
|
|
160
|
+
- **Multi-domain requests**: User asks about multiple technical areas
|
|
161
|
+
- **Large scope tasks**: Requests that would benefit from parallel processing
|
|
162
|
+
- **Specialized expertise**: Tasks requiring focused domain knowledge
|
|
163
|
+
- **Complex analysis**: Comprehensive reviews that can be divided
|
|
164
|
+
- **Performance optimization**: When parallel execution improves response time
|
|
165
|
+
|
|
166
|
+
The delegate tool operates transparently within the agentic loop - users don't need to know it's being used. They simply get faster, more focused responses to complex requests.
|