@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,231 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Test for single-quote JSON bug
|
|
3
|
+
*
|
|
4
|
+
* Bug Description:
|
|
5
|
+
* When AI responses contain JavaScript array syntax with single quotes like ['*']
|
|
6
|
+
* instead of valid JSON with double quotes ["*"], the JSON parser fails with:
|
|
7
|
+
* "Unexpected token ''', "['*']" is not valid JSON"
|
|
8
|
+
*
|
|
9
|
+
* This test replicates the bug seen in the debug logs where:
|
|
10
|
+
* 1. AI returns response with JavaScript array syntax: ['*', '!bash']
|
|
11
|
+
* 2. cleanSchemaResponse extracts it as-is (no syntax normalization)
|
|
12
|
+
* 3. JSON.parse fails because single quotes are invalid in JSON
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import { describe, test, expect } from '@jest/globals';
|
|
16
|
+
import { cleanSchemaResponse, validateJsonResponse } from '../../src/agent/schemaUtils.js';
|
|
17
|
+
|
|
18
|
+
describe('Single-quote JSON Bug', () => {
|
|
19
|
+
describe('JavaScript array syntax with single quotes', () => {
|
|
20
|
+
test('should fail to parse JavaScript array syntax with single quotes', () => {
|
|
21
|
+
// This is what the AI returns - JavaScript syntax, not JSON
|
|
22
|
+
const invalidJson = "['*']";
|
|
23
|
+
|
|
24
|
+
const result = validateJsonResponse(invalidJson);
|
|
25
|
+
|
|
26
|
+
expect(result.isValid).toBe(false);
|
|
27
|
+
expect(result.error).toBeDefined();
|
|
28
|
+
// Should contain error about single quote
|
|
29
|
+
expect(result.error.toLowerCase()).toMatch(/unexpected token|unexpected character|'|quote/);
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
test('should fail to parse array with single-quoted strings', () => {
|
|
33
|
+
// More complex example from the bug report
|
|
34
|
+
const invalidJson = "['*', '!bash']";
|
|
35
|
+
|
|
36
|
+
const result = validateJsonResponse(invalidJson);
|
|
37
|
+
|
|
38
|
+
expect(result.isValid).toBe(false);
|
|
39
|
+
expect(result.error).toBeDefined();
|
|
40
|
+
expect(result.errorContext).toBeDefined();
|
|
41
|
+
expect(result.errorContext.position).toBe(1); // Points to the first single quote
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
test('should succeed with double-quoted JSON array syntax', () => {
|
|
45
|
+
// This is what SHOULD be returned - valid JSON
|
|
46
|
+
const validJson = '["*"]';
|
|
47
|
+
|
|
48
|
+
const result = validateJsonResponse(validJson);
|
|
49
|
+
|
|
50
|
+
expect(result.isValid).toBe(true);
|
|
51
|
+
expect(result.parsed).toEqual(['*']);
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
test('should succeed with double-quoted JSON array with exclusions', () => {
|
|
55
|
+
// Valid JSON version of the bug example
|
|
56
|
+
const validJson = '["*", "!bash"]';
|
|
57
|
+
|
|
58
|
+
const result = validateJsonResponse(validJson);
|
|
59
|
+
|
|
60
|
+
expect(result.isValid).toBe(true);
|
|
61
|
+
expect(result.parsed).toEqual(['*', '!bash']);
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
describe('cleanSchemaResponse normalizes quote syntax (FIX)', () => {
|
|
66
|
+
test('should not extract from javascript code blocks (only json/generic blocks)', () => {
|
|
67
|
+
// AI response with JavaScript array syntax in ```javascript block
|
|
68
|
+
const input = "```javascript\n['*', '!bash']\n```";
|
|
69
|
+
|
|
70
|
+
const cleaned = cleanSchemaResponse(input);
|
|
71
|
+
|
|
72
|
+
// cleanSchemaResponse doesn't extract from ```javascript blocks, only ```json and ```
|
|
73
|
+
// So it returns the original input unchanged
|
|
74
|
+
expect(cleaned).toBe(input);
|
|
75
|
+
|
|
76
|
+
// The uncleaned version with code block markers is not valid JSON
|
|
77
|
+
const result = validateJsonResponse(cleaned);
|
|
78
|
+
expect(result.isValid).toBe(false);
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
test('should extract JavaScript array from json code block AND normalize quotes', () => {
|
|
82
|
+
// Even in a ```json block, the AI might use single quotes
|
|
83
|
+
const input = "```json\n['*']\n```";
|
|
84
|
+
|
|
85
|
+
const cleaned = cleanSchemaResponse(input);
|
|
86
|
+
|
|
87
|
+
// FIX: Extraction happens AND quote normalization (single -> double quotes)
|
|
88
|
+
expect(cleaned).toBe('["*"]');
|
|
89
|
+
|
|
90
|
+
// Now it's valid JSON!
|
|
91
|
+
const result = validateJsonResponse(cleaned);
|
|
92
|
+
expect(result.isValid).toBe(true);
|
|
93
|
+
expect(result.parsed).toEqual(['*']);
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
test('should not modify valid JSON arrays with double quotes', () => {
|
|
97
|
+
const input = '```json\n["*", "!bash"]\n```';
|
|
98
|
+
|
|
99
|
+
const cleaned = cleanSchemaResponse(input);
|
|
100
|
+
|
|
101
|
+
expect(cleaned).toBe('["*", "!bash"]');
|
|
102
|
+
|
|
103
|
+
// This is valid JSON
|
|
104
|
+
const result = validateJsonResponse(cleaned);
|
|
105
|
+
expect(result.isValid).toBe(true);
|
|
106
|
+
expect(result.parsed).toEqual(['*', '!bash']);
|
|
107
|
+
});
|
|
108
|
+
|
|
109
|
+
test('should normalize single quotes in complex arrays', () => {
|
|
110
|
+
const input = "```json\n['*', '!bash', '!docker']\n```";
|
|
111
|
+
|
|
112
|
+
const cleaned = cleanSchemaResponse(input);
|
|
113
|
+
|
|
114
|
+
// Should normalize all single quotes to double quotes
|
|
115
|
+
expect(cleaned).toBe('["*", "!bash", "!docker"]');
|
|
116
|
+
|
|
117
|
+
const result = validateJsonResponse(cleaned);
|
|
118
|
+
expect(result.isValid).toBe(true);
|
|
119
|
+
expect(result.parsed).toEqual(['*', '!bash', '!docker']);
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
test('should normalize single quotes in objects', () => {
|
|
123
|
+
const input = "```json\n{'key': 'value', 'num': 42}\n```";
|
|
124
|
+
|
|
125
|
+
const cleaned = cleanSchemaResponse(input);
|
|
126
|
+
|
|
127
|
+
// Should normalize object keys and string values
|
|
128
|
+
expect(cleaned).toBe('{"key": "value", "num": 42}');
|
|
129
|
+
|
|
130
|
+
const result = validateJsonResponse(cleaned);
|
|
131
|
+
expect(result.isValid).toBe(true);
|
|
132
|
+
expect(result.parsed).toEqual({ key: 'value', num: 42 });
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
|
|
136
|
+
describe('Real-world examples from bug report', () => {
|
|
137
|
+
test('should replicate exact error from debug log line 9', () => {
|
|
138
|
+
// From log line 9: [DEBUG] JSON validation: Preview: ['*', '!bash']
|
|
139
|
+
const buggyResponse = "['*', '!bash']";
|
|
140
|
+
|
|
141
|
+
const result = validateJsonResponse(buggyResponse);
|
|
142
|
+
|
|
143
|
+
// From log line 10: Parse failed with error: Unexpected token ''', "['*', '!bash']" is not valid JSON
|
|
144
|
+
expect(result.isValid).toBe(false);
|
|
145
|
+
expect(result.error).toContain("Unexpected token");
|
|
146
|
+
});
|
|
147
|
+
|
|
148
|
+
test('should replicate exact error from debug log line 48', () => {
|
|
149
|
+
// From log line 48: [DEBUG] JSON validation: Preview: ['*']
|
|
150
|
+
const buggyResponse = "['*']";
|
|
151
|
+
|
|
152
|
+
const result = validateJsonResponse(buggyResponse);
|
|
153
|
+
|
|
154
|
+
// From log line 49: Parse failed with error: Unexpected token ''', "['*']" is not valid JSON
|
|
155
|
+
expect(result.isValid).toBe(false);
|
|
156
|
+
expect(result.error).toContain("Unexpected token");
|
|
157
|
+
});
|
|
158
|
+
|
|
159
|
+
test('should show error context pointing to single quote', () => {
|
|
160
|
+
const buggyResponse = "['*']";
|
|
161
|
+
|
|
162
|
+
const result = validateJsonResponse(buggyResponse);
|
|
163
|
+
|
|
164
|
+
expect(result.isValid).toBe(false);
|
|
165
|
+
expect(result.errorContext).toBeDefined();
|
|
166
|
+
// Error should point to position 1 (the first single quote after '[')
|
|
167
|
+
expect(result.errorContext.position).toBe(1);
|
|
168
|
+
expect(result.errorContext.snippet).toContain("['*']");
|
|
169
|
+
});
|
|
170
|
+
});
|
|
171
|
+
|
|
172
|
+
describe('Edge cases with mixed quotes', () => {
|
|
173
|
+
test('should fail with mixed single and double quotes', () => {
|
|
174
|
+
const invalidJson = '["foo", \'bar\']';
|
|
175
|
+
|
|
176
|
+
const result = validateJsonResponse(invalidJson);
|
|
177
|
+
|
|
178
|
+
expect(result.isValid).toBe(false);
|
|
179
|
+
});
|
|
180
|
+
|
|
181
|
+
test('should fail with object using single quotes', () => {
|
|
182
|
+
const invalidJson = "{'key': 'value'}";
|
|
183
|
+
|
|
184
|
+
const result = validateJsonResponse(invalidJson);
|
|
185
|
+
|
|
186
|
+
expect(result.isValid).toBe(false);
|
|
187
|
+
});
|
|
188
|
+
|
|
189
|
+
test('should succeed with properly escaped single quotes inside double quotes', () => {
|
|
190
|
+
const validJson = '["It\'s valid"]';
|
|
191
|
+
|
|
192
|
+
const result = validateJsonResponse(validJson);
|
|
193
|
+
|
|
194
|
+
expect(result.isValid).toBe(true);
|
|
195
|
+
expect(result.parsed).toEqual(["It's valid"]);
|
|
196
|
+
});
|
|
197
|
+
});
|
|
198
|
+
|
|
199
|
+
describe('Attempt completion context', () => {
|
|
200
|
+
test('should succeed when attempt_completion result contains JavaScript array syntax (FIX)', () => {
|
|
201
|
+
// This simulates the exact scenario from the bug report where
|
|
202
|
+
// attempt_completion's result field contains ['*'] instead of ["*"]
|
|
203
|
+
const attemptCompletionResult = "['*']";
|
|
204
|
+
|
|
205
|
+
// First, cleanSchemaResponse is called (now it DOES normalize quotes - FIX!)
|
|
206
|
+
const cleaned = cleanSchemaResponse(attemptCompletionResult);
|
|
207
|
+
expect(cleaned).toBe('["*"]'); // Single quotes normalized to double quotes
|
|
208
|
+
|
|
209
|
+
// Then validateJsonResponse is called without schema
|
|
210
|
+
const result = validateJsonResponse(cleaned);
|
|
211
|
+
|
|
212
|
+
// With the fix, this should now succeed!
|
|
213
|
+
expect(result.isValid).toBe(true);
|
|
214
|
+
expect(result.parsed).toEqual(['*']);
|
|
215
|
+
});
|
|
216
|
+
|
|
217
|
+
test('should handle multi-line response with single-quote arrays', () => {
|
|
218
|
+
// AI might return explanation followed by array
|
|
219
|
+
const response = `Looking at the _parseAllowedTools method, when allowedTools is undefined,
|
|
220
|
+
the system returns ['*'] which enables all tools.`;
|
|
221
|
+
|
|
222
|
+
// cleanSchemaResponse won't extract this (text before JSON)
|
|
223
|
+
const cleaned = cleanSchemaResponse(response);
|
|
224
|
+
expect(cleaned).toBe(response);
|
|
225
|
+
|
|
226
|
+
// Validation will fail because it's not valid JSON
|
|
227
|
+
const result = validateJsonResponse(cleaned);
|
|
228
|
+
expect(result.isValid).toBe(false);
|
|
229
|
+
});
|
|
230
|
+
});
|
|
231
|
+
});
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Subgraph and Node Label Auto-Fix Tests
|
|
3
|
+
*
|
|
4
|
+
* NOTE: Many tests in this file have been skipped for maid 0.0.6 integration.
|
|
5
|
+
* These tests check OLD manual regex-based auto-fix behavior for:
|
|
6
|
+
* - Subgraph quote wrapping (parentheses in unquoted subgraph names)
|
|
7
|
+
* - Node label quote wrapping (parentheses in unquoted node labels)
|
|
8
|
+
* - Specific fixMethod values and performance expectations
|
|
9
|
+
*
|
|
10
|
+
* Maid handles parentheses and quotes differently using proper parsing.
|
|
11
|
+
* Tests marked with .skip check OLD behavior that maid doesn't replicate.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
import { validateAndFixMermaidResponse } from '../../src/agent/schemaUtils.js';
|
|
15
|
+
|
|
16
|
+
describe('Mermaid Auto-Fix', () => {
|
|
17
|
+
const mockOptions = {
|
|
18
|
+
debug: false,
|
|
19
|
+
path: '/test/path',
|
|
20
|
+
provider: 'anthropic',
|
|
21
|
+
model: 'claude-3-sonnet-20240229'
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
describe('Auto-fix unquoted subgraph names with parentheses', () => {
|
|
25
|
+
|
|
26
|
+
test('should not modify already quoted subgraph names', async () => {
|
|
27
|
+
const response = `Here's the diagram:
|
|
28
|
+
|
|
29
|
+
\`\`\`mermaid
|
|
30
|
+
flowchart TD
|
|
31
|
+
subgraph "AI Check Execution"
|
|
32
|
+
A[AI Provider Generates Response]
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
subgraph "Structured Path (e.g., code-review)"
|
|
36
|
+
B[Parse JSON with issues array]
|
|
37
|
+
end
|
|
38
|
+
\`\`\``;
|
|
39
|
+
|
|
40
|
+
const result = await validateAndFixMermaidResponse(response, mockOptions);
|
|
41
|
+
|
|
42
|
+
// Should not need fixing since it's already properly quoted
|
|
43
|
+
expect(result.wasFixed).toBe(false);
|
|
44
|
+
expect(result.isValid).toBe(true);
|
|
45
|
+
expect(result.fixedResponse).toBe(response);
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
describe('Performance and reliability', () => {
|
|
53
|
+
|
|
54
|
+
test('should fall back to AI fixing for complex errors', async () => {
|
|
55
|
+
const response = `\`\`\`mermaid
|
|
56
|
+
flowchart TD
|
|
57
|
+
subgraph Valid Name
|
|
58
|
+
A[Task with unclosed bracket
|
|
59
|
+
end
|
|
60
|
+
\`\`\``;
|
|
61
|
+
|
|
62
|
+
const result = await validateAndFixMermaidResponse(response, mockOptions);
|
|
63
|
+
|
|
64
|
+
// This should not be auto-fixable and should go to AI
|
|
65
|
+
// (though we're not testing actual AI here, just that it attempts to)
|
|
66
|
+
expect(result.fixingResults.length).toBeGreaterThanOrEqual(0);
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
describe('Auto-fix node labels with parentheses', () => {
|
|
71
|
+
|
|
72
|
+
test('should not modify already quoted node labels', async () => {
|
|
73
|
+
const response = `Here's the diagram:
|
|
74
|
+
|
|
75
|
+
\`\`\`mermaid
|
|
76
|
+
flowchart TD
|
|
77
|
+
A["Task with (parentheses) already quoted"] --> B["Another (quoted) task"]
|
|
78
|
+
\`\`\``;
|
|
79
|
+
|
|
80
|
+
const result = await validateAndFixMermaidResponse(response, mockOptions);
|
|
81
|
+
|
|
82
|
+
// Should not need fixing since it's already properly quoted
|
|
83
|
+
expect(result.wasFixed).toBe(false);
|
|
84
|
+
expect(result.isValid).toBe(true);
|
|
85
|
+
expect(result.fixedResponse).toBe(response);
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
test('should not modify node labels without parentheses', async () => {
|
|
89
|
+
const response = `Here's the diagram:
|
|
90
|
+
|
|
91
|
+
\`\`\`mermaid
|
|
92
|
+
flowchart TD
|
|
93
|
+
A[Simple Task] --> B[Another Task]
|
|
94
|
+
B --> C[Third Task]
|
|
95
|
+
\`\`\``;
|
|
96
|
+
|
|
97
|
+
const result = await validateAndFixMermaidResponse(response, mockOptions);
|
|
98
|
+
|
|
99
|
+
// Should not need fixing since there are no parentheses
|
|
100
|
+
expect(result.wasFixed).toBe(false);
|
|
101
|
+
expect(result.isValid).toBe(true);
|
|
102
|
+
expect(result.fixedResponse).toBe(response);
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
});
|
|
110
|
+
});
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { describe, test, expect } from '@jest/globals';
|
|
2
|
+
import { ProbeAgent } from '../../src/agent/ProbeAgent.js';
|
|
3
|
+
|
|
4
|
+
describe('ProbeAgent systemPrompt alias', () => {
|
|
5
|
+
test('uses systemPrompt when provided', () => {
|
|
6
|
+
const agent = new ProbeAgent({
|
|
7
|
+
path: process.cwd(),
|
|
8
|
+
systemPrompt: 'system-level prompt'
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
expect(agent.customPrompt).toBe('system-level prompt');
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
test('systemPrompt takes precedence over customPrompt', () => {
|
|
15
|
+
const agent = new ProbeAgent({
|
|
16
|
+
path: process.cwd(),
|
|
17
|
+
systemPrompt: 'primary system prompt',
|
|
18
|
+
customPrompt: 'secondary custom prompt'
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
expect(agent.customPrompt).toBe('primary system prompt');
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
test('falls back to customPrompt when systemPrompt is absent', () => {
|
|
25
|
+
const agent = new ProbeAgent({
|
|
26
|
+
path: process.cwd(),
|
|
27
|
+
customPrompt: 'custom prompt only'
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
expect(agent.customPrompt).toBe('custom prompt only');
|
|
31
|
+
});
|
|
32
|
+
});
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { describe, test, expect } from '@jest/globals';
|
|
2
|
+
import ts from 'typescript';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Regression test: ensure the public TypeScript surface exposes tool filtering
|
|
6
|
+
* and system prompt options. We compile a tiny snippet and assert no diagnostics.
|
|
7
|
+
*/
|
|
8
|
+
describe('Type definitions: ProbeAgentOptions', () => {
|
|
9
|
+
const compile = (source) => {
|
|
10
|
+
const result = ts.transpileModule(source, {
|
|
11
|
+
compilerOptions: {
|
|
12
|
+
target: ts.ScriptTarget.ES2020,
|
|
13
|
+
module: ts.ModuleKind.ESNext,
|
|
14
|
+
moduleResolution: ts.ModuleResolutionKind.Node16,
|
|
15
|
+
strict: true,
|
|
16
|
+
skipLibCheck: true,
|
|
17
|
+
isolatedModules: true,
|
|
18
|
+
allowImportingTsExtensions: true,
|
|
19
|
+
types: [],
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
return result.diagnostics || [];
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
test('accepts systemPrompt, allowedTools, and disableTools', () => {
|
|
26
|
+
const diagnostics = compile(`
|
|
27
|
+
import { ProbeAgent, type ProbeAgentOptions } from '../..';
|
|
28
|
+
|
|
29
|
+
const options: ProbeAgentOptions = {
|
|
30
|
+
systemPrompt: 'hello',
|
|
31
|
+
customPrompt: 'fallback',
|
|
32
|
+
allowedTools: ['search', '!bash'],
|
|
33
|
+
disableTools: false,
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
const agent = new ProbeAgent(options);
|
|
37
|
+
void agent;
|
|
38
|
+
`);
|
|
39
|
+
|
|
40
|
+
expect(diagnostics.length).toBe(0);
|
|
41
|
+
});
|
|
42
|
+
});
|