@skyramp/mcp 0.4.1 → 0.4.2-rc.1
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/build/adapters/jestAdapter.js +23 -5
- package/build/adapters/mochaAdapter.js +7 -1
- package/build/adapters/playwrightAdapter.js +3 -1
- package/build/adapters/pytestAdapter.js +14 -3
- package/build/commands/localDevTestChangesCommand.js +1 -0
- package/build/commands/recommendTestsAndExecuteCommand.js +5 -6
- package/build/commands/testThisEndpointCommand.js +16 -4
- package/build/index.js +34 -4
- package/build/playwright/blueprintDigest.js +28 -7
- package/build/playwright/registerPlaywrightTools.js +33 -28
- package/build/playwright/traceRecordingPrompt.js +9 -2
- package/build/prompts/code-reuse.js +95 -29
- package/build/prompts/fix-error-prompt.d.ts +9 -1
- package/build/prompts/fix-error-prompt.js +31 -28
- package/build/prompts/local-dev/local-dev-plan.d.ts +3 -0
- package/build/prompts/local-dev/local-dev-plan.js +3 -1
- package/build/prompts/local-dev/local-dev-prompts.d.ts +1 -1
- package/build/prompts/local-dev/local-dev-prompts.js +30 -3
- package/build/prompts/modularization/integration-test-modularization.js +13 -6
- package/build/prompts/modularization/ui-test-modularization.js +1 -1
- package/build/prompts/personas.js +1 -1
- package/build/prompts/pom-aware-code-reuse.js +7 -9
- package/build/prompts/reuse-hand-off.d.ts +64 -0
- package/build/prompts/reuse-hand-off.js +130 -0
- package/build/prompts/shared-helper-policy.d.ts +88 -2
- package/build/prompts/shared-helper-policy.js +145 -11
- package/build/prompts/sut-setup/modes/adaptWorkflowPrompt.js +1 -1
- package/build/prompts/sut-setup/modes/dockerComposePrompt.js +1 -1
- package/build/prompts/sut-setup/shared.d.ts +4 -1
- package/build/prompts/sut-setup/shared.js +2 -2
- package/build/prompts/test-maintenance/actionsInstructions.d.ts +19 -11
- package/build/prompts/test-maintenance/actionsInstructions.js +47 -26
- package/build/prompts/test-maintenance/drift-analysis-prompt.js +3 -2
- package/build/prompts/test-maintenance/driftAnalysisSections.js +5 -3
- package/build/prompts/test-maintenance/driftAnalysisShared.js +4 -2
- package/build/prompts/test-maintenance/uiDriftAnalysisSections.js +7 -4
- package/build/prompts/test-recommendation/recommendationSections.js +19 -8
- package/build/prompts/test-recommendation/registerRecommendTestsPrompt.js +5 -2
- package/build/prompts/test-recommendation/test-recommendation-prompt.js +10 -7
- package/build/prompts/testbot/testbot-prompts.js +123 -55
- package/build/recommendation/answers.js +18 -9
- package/build/recommendation/pullRequestText.js +1 -1
- package/build/recommendation/registerPlan.js +31 -17
- package/build/recommendation/subjectStep.d.ts +8 -10
- package/build/recommendation/subjectStep.js +17 -16
- package/build/recommendation/types.d.ts +71 -17
- package/build/recommendation/types.js +9 -15
- package/build/recommendation/verifierContracts.d.ts +7 -3
- package/build/recommendation/verifierContracts.js +8 -4
- package/build/recommendation/verifiers/changedFile.js +11 -13
- package/build/recommendation/verifiers/citedPath.d.ts +8 -0
- package/build/recommendation/verifiers/citedPath.js +16 -2
- package/build/recommendation/verifiers/coverage.d.ts +2 -2
- package/build/recommendation/verifiers/coverage.js +190 -134
- package/build/recommendation/verifiers/defects.js +56 -16
- package/build/recommendation/verifiers/deliveredMatchesPlan.d.ts +7 -1
- package/build/recommendation/verifiers/deliveredMatchesPlan.js +28 -14
- package/build/recommendation/verifiers/endpointGrounded.js +14 -8
- package/build/recommendation/verifiers/existingCoverage.d.ts +6 -0
- package/build/recommendation/verifiers/existingCoverage.js +30 -21
- package/build/recommendation/verifiers/expectedOutcome.js +17 -8
- package/build/recommendation/verifiers/expectedValueSourced.js +54 -43
- package/build/recommendation/verifiers/issueTraceability.d.ts +5 -0
- package/build/recommendation/verifiers/issueTraceability.js +64 -7
- package/build/recommendation/verifiers/removedElementGuarded.js +19 -11
- package/build/recommendation/verifiers/reportedCategory.js +9 -4
- package/build/recommendation/verifiers/requirementSourced.js +34 -21
- package/build/recommendation/verifiers/screenRoute.js +15 -10
- package/build/recommendation/verifiers/statedDifference.js +15 -8
- package/build/recommendation/verifiers/uiElementGrounded.js +50 -16
- package/build/resources/analysisResources.js +7 -3
- package/build/resources/progressResource.js +4 -2
- package/build/resources/sutSetupResource.js +20 -2
- package/build/resources/testbotResource.js +19 -1
- package/build/services/AnalyticsService.js +3 -1
- package/build/services/ScenarioGenerationService.js +5 -5
- package/build/services/TestDiscoveryService.js +21 -5
- package/build/services/TestExecutionService.js +63 -21
- package/build/services/TestGenerationService.d.ts +1 -1
- package/build/services/TestGenerationService.js +43 -24
- package/build/skills/enhanceAssertionsSkill.d.ts +45 -0
- package/build/skills/enhanceAssertionsSkill.js +103 -0
- package/build/skills/fixTestImportErrorsSkill.d.ts +2 -2
- package/build/skills/fixTestImportErrorsSkill.js +2 -2
- package/build/skills/skillFiles.d.ts +38 -0
- package/build/skills/skillFiles.js +94 -0
- package/build/skills/validateAssertionAlignmentSkill.d.ts +34 -0
- package/build/skills/validateAssertionAlignmentSkill.js +59 -0
- package/build/tool-phases.js +4 -0
- package/build/tools/auth/loginTool.js +3 -1
- package/build/tools/auth/logoutTool.js +3 -1
- package/build/tools/code-refactor/alignAssertionsTool.d.ts +2 -0
- package/build/tools/code-refactor/alignAssertionsTool.js +51 -0
- package/build/tools/code-refactor/assertion-state.d.ts +1 -1
- package/build/tools/code-refactor/assertion-state.js +1 -1
- package/build/tools/code-refactor/assertionOperations.d.ts +44 -0
- package/build/tools/code-refactor/assertionOperations.js +82 -0
- package/build/tools/code-refactor/assertionSkillTools.d.ts +3 -0
- package/build/tools/code-refactor/assertionSkillTools.js +86 -0
- package/build/tools/code-refactor/codeReuseTool.js +27 -3
- package/build/tools/code-refactor/enhanceAssertionsTool.js +19 -83
- package/build/tools/code-refactor/gate-markers.d.ts +51 -0
- package/build/tools/code-refactor/gate-markers.js +95 -0
- package/build/tools/code-refactor/retrofit-state.d.ts +3 -1
- package/build/tools/code-refactor/retrofit-state.js +44 -2
- package/build/tools/code-refactor/reuse-outcome.d.ts +23 -1
- package/build/tools/code-refactor/reuse-outcome.js +36 -13
- package/build/tools/code-refactor/reuse-state.d.ts +90 -16
- package/build/tools/code-refactor/reuse-state.js +191 -61
- package/build/tools/code-refactor/utils-verify-gates.d.ts +4 -0
- package/build/tools/code-refactor/utils-verify-gates.js +252 -27
- package/build/tools/code-refactor/verify-gates.d.ts +15 -1
- package/build/tools/code-refactor/verify-gates.js +36 -4
- package/build/tools/enrichTestWithMocksTool.d.ts +1 -1
- package/build/tools/enrichTestWithMocksTool.js +9 -5
- package/build/tools/executeSkyrampTestTool.d.ts +22 -1
- package/build/tools/executeSkyrampTestTool.js +571 -271
- package/build/tools/execution-video-state.js +1 -1
- package/build/tools/fixErrorTool.js +5 -6
- package/build/tools/generate-tests/batchMockGenerationTool.js +1 -1
- package/build/tools/generate-tests/generateBatchScenarioRestTool.js +114 -73
- package/build/tools/generate-tests/generateContractRestTool.js +34 -16
- package/build/tools/generate-tests/generateE2ERestTool.d.ts +1 -0
- package/build/tools/generate-tests/generateE2ERestTool.js +9 -1
- package/build/tools/generate-tests/generateIntegrationRestTool.js +22 -7
- package/build/tools/generate-tests/generateMockRestTool.js +3 -1
- package/build/tools/generate-tests/generateUIRestTool.d.ts +2 -0
- package/build/tools/generate-tests/generateUIRestTool.js +11 -2
- package/build/tools/generate-tests/loadTestSchema.js +1 -3
- package/build/tools/generate-tests/planGuard.js +6 -3
- package/build/tools/generate-tests/scenarioFileIdentity.js +4 -1
- package/build/tools/generate-tests/scenarioLint.js +17 -5
- package/build/tools/generate-tests/trace-reuse-guard.js +5 -2
- package/build/tools/generateEnrichedIntegrationTestTool.js +9 -3
- package/build/tools/one-click/oneClickTool.js +3 -1
- package/build/tools/preflightMockCheckTool.js +23 -7
- package/build/tools/runExistingTestsTool.d.ts +1 -1
- package/build/tools/runExistingTestsTool.js +43 -21
- package/build/tools/submitReportTool.d.ts +51 -12
- package/build/tools/submitReportTool.js +860 -161
- package/build/tools/test-management/actionsTool.js +210 -51
- package/build/tools/test-management/analyzeChangesTool.d.ts +4 -5
- package/build/tools/test-management/analyzeChangesTool.js +127 -68
- package/build/tools/test-management/analyzeTestHealthTool.js +35 -13
- package/build/tools/test-management/registerTestPlanTool.d.ts +44 -34
- package/build/tools/test-management/registerTestPlanTool.js +255 -111
- package/build/tools/test-management/resolveScreenTool.js +33 -9
- package/build/tools/trace/startTraceCollectionTool.js +3 -1
- package/build/tools/trace/stopTraceCollectionTool.js +41 -5
- package/build/tools/verifyTestDependenciesTool.d.ts +3 -0
- package/build/tools/verifyTestDependenciesTool.js +54 -0
- package/build/tools/workspace/initScanWorkspaceTool.js +9 -3
- package/build/tools/workspace/initializeWorkspaceTool.js +3 -1
- package/build/types/AssertionOutcome.d.ts +1 -1
- package/build/types/EnhanceType.d.ts +6 -0
- package/build/types/EnhanceType.js +1 -0
- package/build/types/ExternalTestExecution.d.ts +2 -2
- package/build/types/RepositoryAnalysis.d.ts +0 -40
- package/build/types/ReuseOutcome.d.ts +96 -4
- package/build/types/ReuseOutcome.js +16 -0
- package/build/types/StepMethod.js +20 -6
- package/build/types/TestAnalysis.d.ts +10 -2
- package/build/types/TestExecution.d.ts +45 -0
- package/build/types/TestRecommendation.d.ts +1 -1
- package/build/types/TestRecommendation.js +4 -1
- package/build/types/TestTypes.d.ts +13 -0
- package/build/types/TestTypes.js +34 -3
- package/build/types/TestbotPromptOptions.d.ts +9 -1
- package/build/types/TestbotReport.d.ts +45 -9
- package/build/utils/AnalysisStateManager.d.ts +137 -27
- package/build/utils/AnalysisStateManager.js +227 -43
- package/build/utils/assertion-verify/api-shared-lints.js +34 -16
- package/build/utils/assertion-verify/metrics.js +39 -6
- package/build/utils/assertion-verify/ui-lints.js +4 -2
- package/build/utils/branchDiff.js +47 -12
- package/build/utils/canonicalJson.js +3 -1
- package/build/utils/dartRouteExtractor.js +36 -7
- package/build/utils/fixAttempts.d.ts +26 -0
- package/build/utils/fixAttempts.js +109 -0
- package/build/utils/frontendSelectors.js +23 -4
- package/build/utils/generatedTestRecord.d.ts +19 -0
- package/build/utils/generatedTestRecord.js +61 -0
- package/build/utils/gitStaging.js +7 -2
- package/build/utils/initAgent.js +26 -6
- package/build/utils/language-helper.js +39 -45
- package/build/utils/pathMatching.js +2 -1
- package/build/utils/pathSignatures.js +6 -2
- package/build/utils/planMatchKeys.d.ts +2 -2
- package/build/utils/planMatchKeys.js +20 -14
- package/build/utils/pom-catalog-parse.js +7 -2
- package/build/utils/pom-scope/import-expansion.js +6 -1
- package/build/utils/pom-scope/index.js +50 -12
- package/build/utils/pom-scope/scoring.js +13 -3
- package/build/utils/pom-scope/selector-extractor.js +16 -3
- package/build/utils/pom-scope/strip.d.ts +8 -0
- package/build/utils/pom-scope/strip.js +238 -0
- package/build/utils/pom-scope/testIdDiscovery.js +14 -2
- package/build/utils/pom-verify/__fixtures__/af-style/asset-list.page.d.ts +1 -1
- package/build/utils/pom-verify/__fixtures__/af-style/asset-list.page.js +4 -2
- package/build/utils/pom-verify/__fixtures__/af-style/report.iframe.page.js +3 -1
- package/build/utils/pom-verify/__fixtures__/af-style/workflow-footer.page.js +3 -1
- package/build/utils/pom-verify/bindings.js +5 -1
- package/build/utils/pom-verify/calls.js +9 -2
- package/build/utils/pom-verify/verify.js +27 -5
- package/build/utils/pr-comment-parser.js +20 -7
- package/build/utils/proxy-terminal.d.ts +19 -1
- package/build/utils/proxy-terminal.js +346 -21
- package/build/utils/removedUiElements.js +1 -1
- package/build/utils/reportLanguage.js +35 -7
- package/build/utils/reportVerification.d.ts +14 -8
- package/build/utils/reportVerification.js +19 -19
- package/build/utils/repositorySlug.d.ts +32 -0
- package/build/utils/repositorySlug.js +77 -0
- package/build/utils/reuseRouting.js +6 -2
- package/build/utils/runSerialized.d.ts +3 -0
- package/build/utils/runSerialized.js +39 -0
- package/build/utils/screenRoutes.js +74 -18
- package/build/utils/sourceRouteExtractor.js +13 -6
- package/build/utils/telemetry.d.ts +1 -0
- package/build/utils/telemetry.js +8 -5
- package/build/utils/testDependencyPolicy.d.ts +9 -0
- package/build/utils/testDependencyPolicy.js +788 -0
- package/build/utils/testExecutionRecord.d.ts +90 -0
- package/build/utils/testExecutionRecord.js +267 -0
- package/build/utils/testFileClassification.js +3 -1
- package/build/utils/trace-parser.js +62 -14
- package/build/utils/urlPath.js +3 -1
- package/build/utils/utils-verify/action-key.d.ts +4 -0
- package/build/utils/utils-verify/action-key.js +2 -2
- package/build/utils/utils-verify/allow.d.ts +122 -3
- package/build/utils/utils-verify/allow.js +146 -21
- package/build/utils/utils-verify/body-reach.d.ts +120 -0
- package/build/utils/utils-verify/body-reach.js +335 -0
- package/build/utils/utils-verify/call-sites.d.ts +6 -1
- package/build/utils/utils-verify/call-sites.js +72 -8
- package/build/utils/utils-verify/delivered-imports.d.ts +43 -0
- package/build/utils/utils-verify/delivered-imports.js +84 -0
- package/build/utils/utils-verify/fixed-sleep.d.ts +96 -0
- package/build/utils/utils-verify/fixed-sleep.js +461 -0
- package/build/utils/utils-verify/in-house.d.ts +93 -0
- package/build/utils/utils-verify/in-house.js +719 -0
- package/build/utils/utils-verify/incumbent.d.ts +3 -0
- package/build/utils/utils-verify/incumbent.js +75 -0
- package/build/utils/utils-verify/index.d.ts +1 -0
- package/build/utils/utils-verify/index.js +1 -0
- package/build/utils/utils-verify/language-spec.d.ts +26 -10
- package/build/utils/utils-verify/language-spec.js +217 -20
- package/build/utils/utils-verify/locate.d.ts +26 -0
- package/build/utils/utils-verify/locate.js +125 -23
- package/build/utils/utils-verify/module-name.d.ts +40 -0
- package/build/utils/utils-verify/module-name.js +98 -0
- package/build/utils/utils-verify/parse.d.ts +46 -6
- package/build/utils/utils-verify/parse.js +176 -38
- package/build/utils/utils-verify/retrofit-equivalence.d.ts +5 -0
- package/build/utils/utils-verify/retrofit-equivalence.js +4 -2
- package/build/utils/utils-verify/stage.d.ts +5 -0
- package/build/utils/utils-verify/stage.js +47 -2
- package/build/utils/utils-verify/status-once.d.ts +62 -0
- package/build/utils/utils-verify/status-once.js +207 -0
- package/build/utils/utils-verify/typecheck.d.ts +61 -0
- package/build/utils/utils-verify/typecheck.js +338 -0
- package/build/utils/utils-verify/verify.d.ts +76 -1
- package/build/utils/utils-verify/verify.js +516 -44
- package/build/utils/versions.d.ts +3 -3
- package/build/utils/versions.js +1 -1
- package/build/utils/workspaceAuth.js +107 -37
- package/build/workspace/queryParamResolution.js +11 -4
- package/build/workspace/workspace.js +7 -7
- package/node_modules/playwright/ThirdPartyNotices.txt +19 -19
- package/node_modules/playwright/lib/mcp/skyramp/assertTool.js +8 -2
- package/node_modules/playwright/lib/mcp/skyramp/common/cssValue.js +87 -0
- package/node_modules/playwright/lib/mcp/skyramp/loadTraceTool.js +31 -0
- package/node_modules/playwright/lib/mcp/skyramp/skyRampImport.js +3 -0
- package/node_modules/playwright/lib/mcp/skyramp/traceRecordingBackend.js +181 -15
- package/node_modules/playwright/lib/mcp/test/skyRampExport.js +24 -0
- package/node_modules/playwright/lib/transform/babelBundleImpl.js +2353 -190
- package/node_modules/playwright/node_modules/playwright-core/ThirdPartyNotices.txt +62 -34
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/.package-lock.json +72 -41
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/@hono/node-server/dist/serve-static.js +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/@hono/node-server/dist/serve-static.mjs +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/@hono/node-server/package.json +2 -2
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/README.md +16 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/index.js +4 -20
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/lib/read.js +17 -17
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/lib/types/json.js +60 -32
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/lib/types/raw.js +3 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/lib/types/text.js +3 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/lib/types/urlencoded.js +16 -20
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/lib/utils.js +18 -16
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/node_modules/content-type/LICENSE +22 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/node_modules/content-type/README.md +71 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/node_modules/content-type/dist/index.d.ts +46 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/node_modules/content-type/dist/index.js +176 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/node_modules/content-type/dist/index.js.map +1 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/node_modules/content-type/package.json +52 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/package.json +23 -10
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/es-object-atoms/CHANGELOG.md +21 -14
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/es-object-atoms/isObject.d.ts +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/es-object-atoms/package.json +6 -7
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/es-object-atoms/tsconfig.json +1 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/index.js +266 -45
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/lib/schemes.js +9 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/lib/utils.js +396 -92
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/package.json +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/component-safe-serialization.test.js +163 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/equal.test.js +31 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/fixtures/uri-js-parse.json +2 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/ipv6-canonical.test.js +34 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/ipv6-validation.test.js +124 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/malformed-percent.test.js +77 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/malformed-urn.test.js +61 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/parse.test.js +7 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/query-fragment-normalization.test.js +33 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/reserved-path-normalization.test.js +109 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/scheme-validation.test.js +124 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/security-normalization.test.js +101 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/security.test.js +301 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/urn-full-input.test.js +29 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/websocket-query-preservation.test.js +24 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hasown/CHANGELOG.md +7 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hasown/index.d.ts +0 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hasown/package.json +4 -5
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/client/client.js +30 -16
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/client/utils.js +4 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/context.js +32 -13
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/helper/accepts/accepts.js +36 -2
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/helper/proxy/index.js +4 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/helper/ssg/ssg.js +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/helper/ssg/utils.js +30 -10
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/helper/streaming/sse.js +5 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/hono-base.js +10 -8
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/jsx/base.js +44 -23
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/jsx/components.js +25 -26
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/jsx/context.js +5 -5
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/jsx/dom/render.js +2 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/jsx/dom/server.js +5 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/jsx/hooks/index.js +16 -13
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/jsx/intrinsic-element/components.js +3 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/jsx/streaming.js +4 -5
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/cache/index.js +103 -8
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/compress/index.js +5 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/cors/index.js +17 -14
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/csrf/index.js +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/etag/digest.js +47 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/etag/index.js +7 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/jwk/jwk.js +9 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/jwt/jwt.js +9 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/language/language.js +10 -6
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/method-not-allowed/index.js +90 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/pretty-json/index.js +3 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/secure-headers/secure-headers.js +16 -7
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/request.js +20 -13
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/router/linear-router/router.js +7 -2
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/router/pattern-router/router.js +3 -9
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/router/reg-exp-router/node.js +65 -59
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/router/reg-exp-router/router.js +71 -128
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/router/reg-exp-router/trie.js +14 -5
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/router/trie-router/node.js +47 -70
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/router/trie-router/router.js +3 -11
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/router/utils.js +27 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/router.js +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/utils/accept.js +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/utils/body.js +21 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/utils/cookie.js +4 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/utils/ipaddr.js +5 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/utils/stream.js +12 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/utils/url.js +19 -11
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/client/client.js +30 -16
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/client/utils.js +4 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/context.js +32 -13
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/helper/accepts/accepts.js +36 -2
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/helper/proxy/index.js +4 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/helper/ssg/ssg.js +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/helper/ssg/utils.js +30 -10
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/helper/streaming/sse.js +5 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/hono-base.js +10 -8
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/jsx/base.js +41 -23
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/jsx/components.js +26 -27
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/jsx/context.js +6 -6
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/jsx/dom/render.js +2 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/jsx/dom/server.js +5 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/jsx/hooks/index.js +16 -13
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/jsx/intrinsic-element/components.js +4 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/jsx/streaming.js +5 -6
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/cache/index.js +103 -8
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/compress/index.js +5 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/cors/index.js +17 -14
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/csrf/index.js +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/etag/digest.js +47 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/etag/index.js +7 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/jwk/jwk.js +9 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/jwt/jwt.js +9 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/language/language.js +10 -6
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/method-not-allowed/index.js +68 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/pretty-json/index.js +3 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/secure-headers/secure-headers.js +16 -7
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/request.js +21 -14
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/router/linear-router/router.js +7 -2
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/router/pattern-router/router.js +3 -9
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/router/reg-exp-router/node.js +61 -58
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/router/reg-exp-router/router.js +77 -129
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/router/reg-exp-router/trie.js +14 -5
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/router/trie-router/node.js +47 -70
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/router/trie-router/router.js +3 -11
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/router/utils.js +5 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/router.js +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/adapter/aws-lambda/types.d.ts +9 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/client/types.d.ts +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/context.d.ts +6 -2
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/hono-base.d.ts +4 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/jsx/base.d.ts +7 -2
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/jsx/dom/index.d.ts +5 -5
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/jsx/dom/intrinsic-element/components.d.ts +2 -2
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/jsx/dom/server.d.ts +5 -5
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/jsx/hooks/index.d.ts +8 -6
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/jsx/index.d.ts +5 -5
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/middleware/cache/index.d.ts +6 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/middleware/combine/index.d.ts +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/middleware/cors/index.d.ts +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/middleware/jsx-renderer/index.d.ts +2 -2
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/middleware/jwk/jwk.d.ts +2 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/middleware/jwt/jwt.d.ts +2 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/middleware/method-not-allowed/index.d.ts +49 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/middleware/secure-headers/permissions-policy.d.ts +3 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/router/reg-exp-router/node.d.ts +4 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/router/reg-exp-router/trie.d.ts +2 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/router/trie-router/node.d.ts +1 -2
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/router/trie-router/router.d.ts +0 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/router/utils.d.ts +1 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/router.d.ts +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/utils/headers.d.ts +2 -2
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/utils/url.d.ts +5 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/utils/accept.js +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/utils/body.js +21 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/utils/cookie.js +5 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/utils/ipaddr.js +5 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/utils/stream.js +12 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/utils/url.js +17 -10
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/package.json +11 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/README.md +173 -143
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/address-error.d.ts +11 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/address-error.js.map +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/common.d.ts +49 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/common.js +79 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/common.js.map +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/ipv4.d.ts +78 -5
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/ipv4.js +119 -24
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/ipv4.js.map +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/ipv6.d.ts +151 -10
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/ipv6.js +316 -90
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/ipv6.js.map +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/v4/constants.d.ts +12 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/v4/constants.js +45 -2
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/v4/constants.js.map +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/v6/constants.d.ts +14 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/v6/constants.js +50 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/v6/constants.js.map +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/package.json +6 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/.github/THREAT_MODEL.md +3 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/CHANGELOG.md +26 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/README.md +19 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/dist/qs.js +25 -25
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/eslint.config.mjs +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/lib/parse.js +16 -6
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/lib/stringify.js +23 -8
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/lib/utils.js +57 -11
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/package.json +8 -7
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/test/parse.js +419 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/test/stringify.js +317 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/test/utils.js +206 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/side-channel/CHANGELOG.md +10 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/side-channel/README.md +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/side-channel/index.js +5 -2
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/side-channel/package.json +10 -10
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/side-channel/test/index.js +16 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/type-is/index.js +8 -18
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/type-is/node_modules/content-type/LICENSE +22 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/type-is/node_modules/content-type/README.md +71 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/type-is/node_modules/content-type/dist/index.d.ts +46 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/type-is/node_modules/content-type/dist/index.js +176 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/type-is/node_modules/content-type/dist/index.js.map +1 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/type-is/node_modules/content-type/package.json +52 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/type-is/package.json +9 -5
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/package-lock.json +72 -41
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/.package-lock.json +6 -6
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/brace-expansion/README.md +23 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/brace-expansion/index.js +265 -86
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/brace-expansion/package.json +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/README.md +173 -143
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/address-error.d.ts +11 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/address-error.js.map +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/common.d.ts +49 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/common.js +79 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/common.js.map +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/ipv4.d.ts +78 -5
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/ipv4.js +119 -24
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/ipv4.js.map +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/ipv6.d.ts +151 -10
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/ipv6.js +316 -90
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/ipv6.js.map +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/v4/constants.d.ts +12 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/v4/constants.js +45 -2
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/v4/constants.js.map +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/v6/constants.d.ts +14 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/v6/constants.js +50 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/v6/constants.js.map +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/package.json +6 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/package-lock.json +6 -6
- package/node_modules/playwright/node_modules/playwright-core/lib/cli/program.js +18 -9
- package/node_modules/playwright/node_modules/playwright-core/lib/mcpBundleImpl/index.js +47 -47
- package/node_modules/playwright/node_modules/playwright-core/lib/server/codegen/skyramp/jsonlReader.js +3 -0
- package/node_modules/playwright/node_modules/playwright-core/lib/server/recorder/recorderRunner.js +42 -0
- package/node_modules/playwright/node_modules/playwright-core/lib/utilsBundleImpl/index.js +121 -121
- package/node_modules/playwright/node_modules/playwright-core/lib/vite/traceViewer/{index.B7KbSQcC.js → index.BAkLd5DX.js} +1 -1
- package/node_modules/playwright/node_modules/playwright-core/lib/vite/traceViewer/index.html +1 -1
- package/node_modules/playwright/node_modules/playwright-core/package.json +1 -1
- package/node_modules/playwright/node_modules/playwright-core/src/cli/program.ts +31 -9
- package/node_modules/playwright/node_modules/playwright-core/src/server/codegen/skyramp/jsonlReader.ts +1 -0
- package/node_modules/playwright/node_modules/playwright-core/src/server/recorder/recorderRunner.ts +57 -1
- package/node_modules/playwright/package.json +2 -2
- package/package.json +7 -6
- package/plugin/prompts/code-reuse/hand-off.md +30 -0
- package/plugin/prompts/generate-tests/generation.md +1 -1
- package/plugin/prompts/plan-tests.md +14 -14
- package/plugin/prompts/testbot-task1.md +4 -2
- package/plugin/skills/enhance-assertions/SKILL.md +25 -0
- package/plugin/skills/enhance-assertions/reference/contract.md +51 -0
- package/plugin/skills/enhance-assertions/reference/integration.md +58 -0
- package/plugin/skills/enhance-assertions/reference/shared-rules.md +220 -0
- package/plugin/skills/enhance-assertions/reference/ui.md +373 -0
- package/plugin/skills/fix-test-import-errors/SKILL.md +44 -50
- package/plugin/skills/validate-assertion-alignment-post-execution/SKILL.md +32 -0
- package/plugin/skills/validate-assertion-alignment-post-execution/reference/checks.md +44 -0
- package/plugin/skills/validate-assertion-alignment-post-execution/reference/evidence.md +47 -0
- package/build/prompts/enhance-assertions/contractProviderAssertionsPrompt.d.ts +0 -2
- package/build/prompts/enhance-assertions/contractProviderAssertionsPrompt.js +0 -29
- package/build/prompts/enhance-assertions/integrationAssertionsPrompt.d.ts +0 -2
- package/build/prompts/enhance-assertions/integrationAssertionsPrompt.js +0 -36
- package/build/prompts/enhance-assertions/sharedAssertionRules.d.ts +0 -16
- package/build/prompts/enhance-assertions/sharedAssertionRules.js +0 -284
- package/build/prompts/enhance-assertions/uiAssertionsPrompt.d.ts +0 -2
- package/build/prompts/enhance-assertions/uiAssertionsPrompt.js +0 -388
- package/node_modules/playwright/node_modules/playwright-core/.DS_Store +0 -0
|
@@ -4,18 +4,19 @@ import * as fs from "fs";
|
|
|
4
4
|
import * as path from "path";
|
|
5
5
|
import yaml from "js-yaml";
|
|
6
6
|
import { logger } from "../../utils/logger.js";
|
|
7
|
-
import { parseWorkspaceAuthType, getDefaultAuthHeader, WorkspaceAuthType, readWorkspaceConfigRaw, resolveWorkspaceApiService, findWorkspaceAuthDisagreement } from "../../utils/workspaceAuth.js";
|
|
7
|
+
import { parseWorkspaceAuthType, getDefaultAuthHeader, WorkspaceAuthType, readWorkspaceConfigRaw, resolveWorkspaceApiService, findWorkspaceAuthDisagreement, } from "../../utils/workspaceAuth.js";
|
|
8
8
|
import { AnalyticsService } from "../../services/AnalyticsService.js";
|
|
9
9
|
import { makeProgressReporter } from "../../utils/progress.js";
|
|
10
|
-
import { StateManager, registerSession, storeSessionData, rememberTestsRepoDir, getActiveRunStatePath, setActiveRunStatePath, } from "../../utils/AnalysisStateManager.js";
|
|
10
|
+
import { StateManager, registerSession, storeSessionData, rememberTestsRepoDir, rememberPrimaryRepository, getPrimaryRepository, getActiveRunStatePath, setActiveRunStatePath, } from "../../utils/AnalysisStateManager.js";
|
|
11
|
+
import { resolveRealPath } from "../../utils/repositorySlug.js";
|
|
11
12
|
import { isTestFile } from "../../utils/testFileClassification.js";
|
|
12
13
|
import { isPlanOnlyMode } from "../../utils/planOnlyMode.js";
|
|
13
14
|
import { TestDiscoveryService } from "../../services/TestDiscoveryService.js";
|
|
14
|
-
import { AnalysisScope } from "../../types/RepositoryAnalysis.js";
|
|
15
|
+
import { AnalysisScope, } from "../../types/RepositoryAnalysis.js";
|
|
15
16
|
import { computeBranchDiff, changedFileNames, } from "../../utils/branchDiff.js";
|
|
16
17
|
import { detectProjectMetadata } from "../../utils/projectMetadata.js";
|
|
17
18
|
import { diffBlocksByPath } from "../../utils/branchDiff.js";
|
|
18
|
-
import { collectUiIdentifierChanges } from "../../utils/removedUiElements.js";
|
|
19
|
+
import { collectUiIdentifierChanges, } from "../../utils/removedUiElements.js";
|
|
19
20
|
import { parseTraceFile, discoverTraceFiles, discoverPlaywrightZips, } from "../../utils/trace-parser.js";
|
|
20
21
|
import { TestSource } from "../../types/TestAnalysis.js";
|
|
21
22
|
/** Exported for testing: maps a parsed trace result to a TraceFile. */
|
|
@@ -50,8 +51,8 @@ export async function isGraphQLFile(filePath, repositoryPath) {
|
|
|
50
51
|
try {
|
|
51
52
|
const absPath = path.join(repositoryPath, filePath);
|
|
52
53
|
const fileContent = await fs.promises.readFile(absPath, "utf-8");
|
|
53
|
-
return GRAPHQL_SCHEMA_CONTENT_PATTERN.test(fileContent) ||
|
|
54
|
-
GRAPHQL_IMPLEMENTATION_CONTENT_PATTERN.test(fileContent);
|
|
54
|
+
return (GRAPHQL_SCHEMA_CONTENT_PATTERN.test(fileContent) ||
|
|
55
|
+
GRAPHQL_IMPLEMENTATION_CONTENT_PATTERN.test(fileContent));
|
|
55
56
|
}
|
|
56
57
|
catch {
|
|
57
58
|
return false;
|
|
@@ -59,9 +60,12 @@ export async function isGraphQLFile(filePath, repositoryPath) {
|
|
|
59
60
|
}
|
|
60
61
|
// ── Seed and fixture data ───────────────────────────────────────────────────
|
|
61
62
|
export const analyzeChangesInputSchema = {
|
|
62
|
-
repositoryPath: z
|
|
63
|
+
repositoryPath: z.string().describe("Absolute path to the repository root"),
|
|
64
|
+
repository: z
|
|
63
65
|
.string()
|
|
64
|
-
.
|
|
66
|
+
.trim()
|
|
67
|
+
.min(1)
|
|
68
|
+
.describe("The 'owner/repo' of the repository at repositoryPath (e.g. 'letsramp/api-insight'). For the primary repo it is the value the task instructions name; for a related repo it is that repo's own value from the <related_repositories> block. It keys this analysis' section of the run-scoped state file."),
|
|
65
69
|
scope: z
|
|
66
70
|
.enum(["full_repo", "branch_diff"])
|
|
67
71
|
.default("branch_diff")
|
|
@@ -82,17 +86,11 @@ export const analyzeChangesInputSchema = {
|
|
|
82
86
|
.number()
|
|
83
87
|
.optional()
|
|
84
88
|
.describe("GitHub PR number. Accepted and applied nowhere: nothing reads previous Testbot comments on the pull request any more. Pass it if the caller supplies it."),
|
|
85
|
-
repository: z
|
|
86
|
-
.string()
|
|
87
|
-
.optional()
|
|
88
|
-
.describe("The owner/repo this call analyzes (e.g. 'letsramp/api-insight'). In a multi-repo run, ALWAYS set it — for the primary AND every related repo. All calls in one Testbot run share ONE state file automatically (you do NOT pass a file path); each repo's analysis is stored as its own section within it. The primary's analysis is kept at the root and tagged with its owner/repo; related repos are stored as keyed sections. Omit only for a single-repo run."),
|
|
89
|
-
primaryRepository: z
|
|
90
|
-
.string()
|
|
91
|
-
.optional()
|
|
92
|
-
.describe("The owner/repo of the run's PRIMARY repository. In a multi-repo run set it on EVERY skyramp_analyze_changes call, for the primary and each related repo, so the state file's root is the primary whichever call comes first. Omit in a single-repo run."),
|
|
93
89
|
testsRepoDir: z
|
|
94
90
|
.string()
|
|
95
|
-
.refine((v) => path.isAbsolute(v), {
|
|
91
|
+
.refine((v) => path.isAbsolute(v), {
|
|
92
|
+
message: "testsRepoDir must be an absolute path",
|
|
93
|
+
})
|
|
96
94
|
.optional()
|
|
97
95
|
.describe("Absolute path to a separate test repository clone. When set, existing test discovery scans this directory instead of repositoryPath. Used in cross-repo test delivery mode where tests live in a separate repo."),
|
|
98
96
|
includeUncommitted: z
|
|
@@ -117,7 +115,11 @@ const _authFindingShapeMatchesType = {};
|
|
|
117
115
|
void _authFindingShapeMatchesType;
|
|
118
116
|
/** Both halves of `uiContext` carry the same record, so the shape is declared once.
|
|
119
117
|
* It mirrors `RemovedUiElement`; the assignment below fails to compile if either drifts. */
|
|
120
|
-
const uiIdentifierShape = z.object({
|
|
118
|
+
const uiIdentifierShape = z.object({
|
|
119
|
+
attribute: z.string(),
|
|
120
|
+
value: z.string(),
|
|
121
|
+
file: z.string(),
|
|
122
|
+
});
|
|
121
123
|
const _uiIdentifierShapeMatchesType = {};
|
|
122
124
|
void _uiIdentifierShapeMatchesType;
|
|
123
125
|
/** SKYR-4182: structuredContent needs a declared outputSchema, and the schema
|
|
@@ -128,7 +130,7 @@ export const analyzeChangesOutputSchema = {
|
|
|
128
130
|
stateFile: z.string().optional(),
|
|
129
131
|
repositoryPath: z.string(),
|
|
130
132
|
repositoryName: z.string(),
|
|
131
|
-
repository: z.string()
|
|
133
|
+
repository: z.string(),
|
|
132
134
|
relatedRepositories: z.array(z.string()).optional(),
|
|
133
135
|
analysisScope: z.string(),
|
|
134
136
|
planOnly: z.boolean(),
|
|
@@ -251,7 +253,9 @@ export function registerAnalyzeChangesTool(server) {
|
|
|
251
253
|
// changedSelectors derivation and the removed-element collection below,
|
|
252
254
|
// so a diff that reaches both is not sliced twice.
|
|
253
255
|
let _diffByFile = null;
|
|
254
|
-
const getDiffByFile = () => (_diffByFile ??= diffData?.diffContent
|
|
256
|
+
const getDiffByFile = () => (_diffByFile ??= diffData?.diffContent
|
|
257
|
+
? diffBlocksByPath(diffData.diffContent)
|
|
258
|
+
: new Map());
|
|
255
259
|
// No resource tokens are derived from the changed files. Deriving them
|
|
256
260
|
// guessed which existing tests were relevant from filenames and symbol
|
|
257
261
|
// names; `TestDiscoveryService` now takes the external tests uncut, up to
|
|
@@ -280,7 +284,8 @@ export function registerAnalyzeChangesTool(server) {
|
|
|
280
284
|
}));
|
|
281
285
|
// Use the authoritative list from discovery — includes relevant files even
|
|
282
286
|
// when regex endpoint extraction failed (e.g. helper-abstracted HTTP calls).
|
|
283
|
-
discoveredRelevantExternalPaths =
|
|
287
|
+
discoveredRelevantExternalPaths =
|
|
288
|
+
discoveryResult.relevantExternalTestPaths;
|
|
284
289
|
logger.info("Test discovery completed", {
|
|
285
290
|
totalTests: existingTests.length,
|
|
286
291
|
relevantExternal: discoveredRelevantExternalPaths.length,
|
|
@@ -348,11 +353,14 @@ export function registerAnalyzeChangesTool(server) {
|
|
|
348
353
|
let specFetchSucceeded = false;
|
|
349
354
|
if (wsSchemaPath) {
|
|
350
355
|
try {
|
|
351
|
-
const isUrl = wsSchemaPath.startsWith("http://") ||
|
|
356
|
+
const isUrl = wsSchemaPath.startsWith("http://") ||
|
|
357
|
+
wsSchemaPath.startsWith("https://");
|
|
352
358
|
const SPEC_FETCH_TIMEOUT_MS = 10_000;
|
|
353
359
|
let specText;
|
|
354
360
|
if (isUrl) {
|
|
355
|
-
const specRes = await fetch(wsSchemaPath, {
|
|
361
|
+
const specRes = await fetch(wsSchemaPath, {
|
|
362
|
+
signal: AbortSignal.timeout(SPEC_FETCH_TIMEOUT_MS),
|
|
363
|
+
});
|
|
356
364
|
if (!specRes.ok) {
|
|
357
365
|
throw new Error(`HTTP ${specRes.status} ${specRes.statusText} fetching spec at ${wsSchemaPath}`);
|
|
358
366
|
}
|
|
@@ -365,10 +373,16 @@ export function registerAnalyzeChangesTool(server) {
|
|
|
365
373
|
spec = yaml.load(specText);
|
|
366
374
|
specPaths = new Set(Object.keys((spec && typeof spec === "object" ? spec.paths : null) ?? {}));
|
|
367
375
|
// Only treat spec as authoritative when it actually has usable path entries
|
|
368
|
-
specFetchSucceeded =
|
|
369
|
-
spec
|
|
370
|
-
|
|
371
|
-
|
|
376
|
+
specFetchSucceeded =
|
|
377
|
+
spec &&
|
|
378
|
+
typeof spec === "object" &&
|
|
379
|
+
spec.paths !== null &&
|
|
380
|
+
typeof spec.paths === "object" &&
|
|
381
|
+
specPaths.size > 0;
|
|
382
|
+
logger.info("Loaded OpenAPI spec paths", {
|
|
383
|
+
count: specPaths.size,
|
|
384
|
+
source: wsSchemaPath,
|
|
385
|
+
});
|
|
372
386
|
}
|
|
373
387
|
catch (err) {
|
|
374
388
|
logger.warning("Could not load OpenAPI spec — continuing without path validation", {
|
|
@@ -462,7 +476,7 @@ export function registerAnalyzeChangesTool(server) {
|
|
|
462
476
|
// regex extraction failed but path/name scoring identified as PR-relevant.
|
|
463
477
|
// Relativize against repositoryPath to avoid leaking absolute machine paths
|
|
464
478
|
// into the prompt, state file, and PR reports.
|
|
465
|
-
const relevantExternalTestPaths = discoveredRelevantExternalPaths.map(p => path.relative(params.repositoryPath, p));
|
|
479
|
+
const relevantExternalTestPaths = discoveredRelevantExternalPaths.map((p) => path.relative(params.repositoryPath, p));
|
|
466
480
|
// Build the full RepositoryAnalysis object — same structure as
|
|
467
481
|
// analyzeRepositoryTool. It is stored in the in-process session store for
|
|
468
482
|
// the MCP resources and registerRecommendTestsPrompt; the tool result
|
|
@@ -472,11 +486,13 @@ export function registerAnalyzeChangesTool(server) {
|
|
|
472
486
|
// the diff, and the agent reads the diff directly instead.
|
|
473
487
|
// No `summary`: the server used to write a sentence about the diff here
|
|
474
488
|
// and it has written an empty string since. Nothing reads the field.
|
|
475
|
-
const diffContext = diffData
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
489
|
+
const diffContext = diffData
|
|
490
|
+
? {
|
|
491
|
+
currentBranch: diffData.currentBranch,
|
|
492
|
+
baseBranch: diffData.baseBranch,
|
|
493
|
+
changedFiles: diffData.changedFiles,
|
|
494
|
+
}
|
|
495
|
+
: undefined;
|
|
480
496
|
// No `routeDiscovery`. Its three parts — a candidate route-file list, a
|
|
481
497
|
// router entry-point grep and the OpenAPI path list — were the server's
|
|
482
498
|
// guess at the repository's surface. Nothing downstream read them.
|
|
@@ -506,9 +522,21 @@ export function registerAnalyzeChangesTool(server) {
|
|
|
506
522
|
integrationPatterns: [],
|
|
507
523
|
},
|
|
508
524
|
artifacts: {
|
|
509
|
-
openApiSpecs: wsSchemaPath
|
|
510
|
-
|
|
511
|
-
|
|
525
|
+
openApiSpecs: wsSchemaPath
|
|
526
|
+
? [
|
|
527
|
+
{
|
|
528
|
+
path: wsSchemaPath,
|
|
529
|
+
version: "from-workspace-config",
|
|
530
|
+
endpointCount: 0,
|
|
531
|
+
baseUrl: wsBaseUrl,
|
|
532
|
+
authType: wsAuthMethod,
|
|
533
|
+
},
|
|
534
|
+
]
|
|
535
|
+
: [],
|
|
536
|
+
playwrightRecordings: discoverPlaywrightZips(params.repositoryPath).map((p) => ({ path: p, description: "" })),
|
|
537
|
+
traceFiles: traceResult
|
|
538
|
+
? [buildTraceFileEntry(traceFiles[0], traceResult)]
|
|
539
|
+
: [],
|
|
512
540
|
notFound: [],
|
|
513
541
|
},
|
|
514
542
|
workspace: { baseUrl: wsBaseUrl },
|
|
@@ -525,8 +553,18 @@ export function registerAnalyzeChangesTool(server) {
|
|
|
525
553
|
hasCiCd: projectMeta.hasCiCd,
|
|
526
554
|
},
|
|
527
555
|
existingTests: {
|
|
528
|
-
frameworks: [
|
|
529
|
-
|
|
556
|
+
frameworks: [
|
|
557
|
+
...new Set(existingTests.map((t) => t.framework).filter(Boolean)),
|
|
558
|
+
],
|
|
559
|
+
coverage: {
|
|
560
|
+
unit: 0,
|
|
561
|
+
integration: 0,
|
|
562
|
+
e2e: 0,
|
|
563
|
+
ui: 0,
|
|
564
|
+
load: 0,
|
|
565
|
+
contract: 0,
|
|
566
|
+
smoke: 0,
|
|
567
|
+
},
|
|
530
568
|
testLocations: testLocationsByType,
|
|
531
569
|
hasCoverageReports: false,
|
|
532
570
|
relevantExternalTestPaths,
|
|
@@ -554,18 +592,19 @@ export function registerAnalyzeChangesTool(server) {
|
|
|
554
592
|
let retiredElements = [];
|
|
555
593
|
if (diffData?.diffContent) {
|
|
556
594
|
try {
|
|
557
|
-
({ removed: removedElements, retired: retiredElements } =
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
595
|
+
({ removed: removedElements, retired: retiredElements } =
|
|
596
|
+
collectUiIdentifierChanges({
|
|
597
|
+
// Every changed file that is not a test. A removed `data-testid`
|
|
598
|
+
// is found by reading the diff, not by the file's extension.
|
|
599
|
+
changedFrontendFiles: (diffData.changedFiles ?? []).filter((f) => !isTestFile(f)),
|
|
600
|
+
deletedFiles: diffData.deletedFiles ?? [],
|
|
601
|
+
diffByFile: getDiffByFile(),
|
|
602
|
+
existingTestFiles: [
|
|
603
|
+
...existingTests.map((t) => t.testFile),
|
|
604
|
+
...discoveredRelevantExternalPaths,
|
|
605
|
+
],
|
|
606
|
+
discoveryFailed: testDiscoveryFailed,
|
|
607
|
+
}));
|
|
569
608
|
}
|
|
570
609
|
catch (err) {
|
|
571
610
|
logger.warning("removedUiElements: collection failed, continuing without removal-guard grounding", {
|
|
@@ -606,7 +645,10 @@ export function registerAnalyzeChangesTool(server) {
|
|
|
606
645
|
// skyramp_register_test_plan still recomputes the listing at verify time
|
|
607
646
|
// from `baseBranch`, so the two cannot drift apart.
|
|
608
647
|
diff: diffData
|
|
609
|
-
? {
|
|
648
|
+
? {
|
|
649
|
+
baseBranch: diffData.baseBranch,
|
|
650
|
+
changedFiles: changedNames.map((file) => file.path),
|
|
651
|
+
}
|
|
610
652
|
: undefined,
|
|
611
653
|
sessionId,
|
|
612
654
|
},
|
|
@@ -618,14 +660,26 @@ export function registerAnalyzeChangesTool(server) {
|
|
|
618
660
|
catch (error) {
|
|
619
661
|
logger.warning(`Failed to cleanup old state files: ${error.message}`);
|
|
620
662
|
}
|
|
621
|
-
// Resolve the state file.
|
|
622
|
-
//
|
|
623
|
-
//
|
|
624
|
-
//
|
|
625
|
-
//
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
663
|
+
// Resolve the state file. All calls in one Testbot run share ONE state
|
|
664
|
+
// file — the first call creates it and records the run anchor; later
|
|
665
|
+
// calls reuse it (no agent-provided path, which previously caused
|
|
666
|
+
// filename hallucinations). Single-repo runs take the same path now
|
|
667
|
+
// that `repository` is required: one run, one state file.
|
|
668
|
+
// Real paths, because a symlinked or relative spelling of the primary
|
|
669
|
+
// checkout must not read as a different repository.
|
|
670
|
+
const ownPath = await resolveRealPath(params.repositoryPath);
|
|
671
|
+
const ownRepo = params.repository;
|
|
672
|
+
// The run declares its primary when the prompt renders. Entry without a
|
|
673
|
+
// prompt render — IDE use, a bare analyze call — has no declaration, so
|
|
674
|
+
// this first call declares its own checkout, which is a statement at the
|
|
675
|
+
// run's entry point rather than a write-order accident.
|
|
676
|
+
rememberPrimaryRepository(ownPath, ownRepo);
|
|
677
|
+
// Set-if-unset above, so this is the prompt's declaration when there was
|
|
678
|
+
// one and this call's own checkout when there was not.
|
|
679
|
+
const primary = getPrimaryRepository();
|
|
680
|
+
const primaryPath = await resolveRealPath(primary.repositoryPath);
|
|
681
|
+
const primaryRepo = primary.repo;
|
|
682
|
+
const activeRunPath = getActiveRunStatePath();
|
|
629
683
|
const stateManager = activeRunPath
|
|
630
684
|
? StateManager.fromStatePath(activeRunPath)
|
|
631
685
|
: new StateManager("analysis", sessionId);
|
|
@@ -634,15 +688,14 @@ export function registerAnalyzeChangesTool(server) {
|
|
|
634
688
|
// stored at the root; a related repo is stored as a keyed section within the
|
|
635
689
|
// same run-scoped stateFile.
|
|
636
690
|
await stateManager.writeRepoData(unifiedState, {
|
|
637
|
-
repo:
|
|
638
|
-
primaryRepo: params.primaryRepository,
|
|
691
|
+
repo: ownRepo,
|
|
639
692
|
repositoryPath: params.repositoryPath,
|
|
693
|
+
primary: { repositoryPath: primaryPath, repo: primaryRepo },
|
|
640
694
|
step: "analyze_changes",
|
|
641
695
|
});
|
|
642
696
|
const stateFile = stateManager.getStatePath();
|
|
643
|
-
// Anchor the run's state file so subsequent
|
|
644
|
-
|
|
645
|
-
setActiveRunStatePath(stateFile);
|
|
697
|
+
// Anchor the run's state file so subsequent calls reuse it.
|
|
698
|
+
setActiveRunStatePath(stateFile);
|
|
646
699
|
registerSession(sessionId, stateFile);
|
|
647
700
|
// A related repo reads its OWN .skyramp/workspace.yml, so it can disagree
|
|
648
701
|
// with the primary's unified entry for the same service and nothing would
|
|
@@ -694,7 +747,9 @@ export function registerAnalyzeChangesTool(server) {
|
|
|
694
747
|
const skyrampTestFiles = [];
|
|
695
748
|
const externalTestFiles = [];
|
|
696
749
|
for (const test of existingTests) {
|
|
697
|
-
const target = test.source === TestSource.External
|
|
750
|
+
const target = test.source === TestSource.External
|
|
751
|
+
? externalTestFiles
|
|
752
|
+
: skyrampTestFiles;
|
|
698
753
|
target.push(displayPath(test.testFile));
|
|
699
754
|
}
|
|
700
755
|
return buildAnalyzeChangesResult({
|
|
@@ -702,7 +757,7 @@ export function registerAnalyzeChangesTool(server) {
|
|
|
702
757
|
stateFile,
|
|
703
758
|
repositoryPath: params.repositoryPath,
|
|
704
759
|
repositoryName: path.basename(params.repositoryPath),
|
|
705
|
-
|
|
760
|
+
repository: ownRepo,
|
|
706
761
|
...(relatedRepositories.length ? { relatedRepositories } : {}),
|
|
707
762
|
analysisScope,
|
|
708
763
|
planOnly: isPlanOnlyMode(),
|
|
@@ -728,7 +783,9 @@ export function registerAnalyzeChangesTool(server) {
|
|
|
728
783
|
},
|
|
729
784
|
// Removed half only. No prompt describes `retiredElements`, and beside the guard
|
|
730
785
|
// list it reads as more guards to record; the plan checks read the state file.
|
|
731
|
-
...(uiContext?.removedElements.length
|
|
786
|
+
...(uiContext?.removedElements.length
|
|
787
|
+
? { uiContext: { removedElements: uiContext.removedElements } }
|
|
788
|
+
: {}),
|
|
732
789
|
nextStep: "skyramp_analyze_test_health, with this stateFile",
|
|
733
790
|
});
|
|
734
791
|
}
|
|
@@ -749,7 +806,9 @@ export function registerAnalyzeChangesTool(server) {
|
|
|
749
806
|
finally {
|
|
750
807
|
AnalyticsService.pushMCPToolEvent(TOOL_NAME, errorResult, {
|
|
751
808
|
repositoryPath: params.repositoryPath,
|
|
752
|
-
}).catch((err) => {
|
|
809
|
+
}).catch((err) => {
|
|
810
|
+
logger.warning("Analytics event failed", { error: String(err) });
|
|
811
|
+
});
|
|
753
812
|
}
|
|
754
813
|
});
|
|
755
814
|
}
|
|
@@ -13,13 +13,20 @@ const TOOL_NAME = "skyramp_analyze_test_health";
|
|
|
13
13
|
// variants detected when the file uses the page fixture (not just the request fixture).
|
|
14
14
|
// Plain "playwright"/"cypress" without the -ui suffix = REST API usage — excluded.
|
|
15
15
|
const UI_COMPONENT_FRAMEWORKS = new Set([
|
|
16
|
-
"rtl",
|
|
17
|
-
"
|
|
16
|
+
"rtl",
|
|
17
|
+
"react-testing-library",
|
|
18
|
+
"vue-test-utils",
|
|
19
|
+
"angular-testbed",
|
|
20
|
+
"svelte-testing-library",
|
|
18
21
|
"enzyme",
|
|
19
|
-
"flutter-widget",
|
|
20
|
-
"
|
|
22
|
+
"flutter-widget",
|
|
23
|
+
"flutter-test",
|
|
24
|
+
"xcuitest",
|
|
25
|
+
"espresso",
|
|
26
|
+
"appium",
|
|
21
27
|
"selenium",
|
|
22
|
-
"playwright-ui",
|
|
28
|
+
"playwright-ui",
|
|
29
|
+
"cypress-ui",
|
|
23
30
|
]);
|
|
24
31
|
// No REST API test is ever written in TSX/JSX — extension alone is sufficient.
|
|
25
32
|
const UI_TEST_EXTENSIONS = /\.(test|spec)\.(tsx|jsx)$/;
|
|
@@ -27,7 +34,9 @@ const UI_SNAPSHOT_EXT = /\.snap$/;
|
|
|
27
34
|
function isUiTest(t) {
|
|
28
35
|
const fw = t.framework?.toLowerCase() ?? "";
|
|
29
36
|
const isUiSnap = UI_SNAPSHOT_EXT.test(t.testFile);
|
|
30
|
-
return UI_COMPONENT_FRAMEWORKS.has(fw) ||
|
|
37
|
+
return (UI_COMPONENT_FRAMEWORKS.has(fw) ||
|
|
38
|
+
UI_TEST_EXTENSIONS.test(t.testFile) ||
|
|
39
|
+
isUiSnap);
|
|
31
40
|
}
|
|
32
41
|
/**
|
|
33
42
|
* Names of services whose workspace.yml records a runnable external-test suite
|
|
@@ -69,11 +78,14 @@ export function registerAnalyzeTestHealthTool(server) {
|
|
|
69
78
|
.describe("Set it to true only when you have already captured a blueprint: browser_navigate to the route the diff affects, then browser_blueprint to capture the current DOM, then call this tool with blueprintCaptured: true. If you captured nothing, call this tool directly and omit this parameter. Passing true activates blueprint-diff analysis for browser UI tests (Playwright, Cypress, Selenium). Component/widget tests always use source-only analysis regardless of this flag."),
|
|
70
79
|
repository: z
|
|
71
80
|
.string()
|
|
72
|
-
.
|
|
73
|
-
.
|
|
81
|
+
.trim()
|
|
82
|
+
.min(1)
|
|
83
|
+
.describe("The owner/repo whose analysis section to assess (e.g. 'letsramp/api-insight'). Set it on every call — the primary's owner/repo for the primary repo, or a related repo's owner/repo for that repo's section within the run-scoped stateFile."),
|
|
74
84
|
},
|
|
75
85
|
outputSchema: {
|
|
76
|
-
prompt: z
|
|
86
|
+
prompt: z
|
|
87
|
+
.string()
|
|
88
|
+
.describe("LLM drift analysis prompt and assessment instructions."),
|
|
77
89
|
},
|
|
78
90
|
}, async (args) => {
|
|
79
91
|
let errorResult;
|
|
@@ -157,7 +169,10 @@ export function registerAnalyzeTestHealthTool(server) {
|
|
|
157
169
|
// verdict about the diff is what this removes.
|
|
158
170
|
logger.info(`Including UI drift analysis for ${uiTests.length} UI test(s), ${apiTests.length} API test(s)`);
|
|
159
171
|
const uiDriftParams = {
|
|
160
|
-
tests: uiTests.map(t => ({
|
|
172
|
+
tests: uiTests.map((t) => ({
|
|
173
|
+
testFile: t.testFile,
|
|
174
|
+
source: t.source,
|
|
175
|
+
})),
|
|
161
176
|
blueprintCaptured: args.blueprintCaptured,
|
|
162
177
|
};
|
|
163
178
|
// Collect all checked-out repo paths so the grep instruction covers
|
|
@@ -169,12 +184,17 @@ export function registerAnalyzeTestHealthTool(server) {
|
|
|
169
184
|
// repo (SKYR-4246). Dedupe by root because a legacy untagged primary can also
|
|
170
185
|
// appear as a related section holding the same path.
|
|
171
186
|
const allRepoPaths = [
|
|
172
|
-
...new Set((await stateManager.listRepoCheckouts()).map(c => c.root)),
|
|
187
|
+
...new Set((await stateManager.listRepoCheckouts()).map((c) => c.root)),
|
|
173
188
|
];
|
|
174
189
|
const promptText = buildDriftAnalysisPrompt(stateManager.getStatePath(), apiTests.map((t) => ({ testFile: t.testFile, source: t.source })), uiDriftParams, allRepoPaths, stateData?.externalTestResults);
|
|
175
190
|
return {
|
|
176
191
|
structuredContent: { prompt: promptText },
|
|
177
|
-
content: [
|
|
192
|
+
content: [
|
|
193
|
+
{
|
|
194
|
+
type: "text",
|
|
195
|
+
text: "Drift analysis prompt generated. Follow the prompt field to assess each test.",
|
|
196
|
+
},
|
|
197
|
+
],
|
|
178
198
|
};
|
|
179
199
|
}
|
|
180
200
|
catch (error) {
|
|
@@ -183,7 +203,9 @@ export function registerAnalyzeTestHealthTool(server) {
|
|
|
183
203
|
return errorResult;
|
|
184
204
|
}
|
|
185
205
|
finally {
|
|
186
|
-
AnalyticsService.pushMCPToolEvent(TOOL_NAME, errorResult, {}).catch((err) => {
|
|
206
|
+
AnalyticsService.pushMCPToolEvent(TOOL_NAME, errorResult, {}).catch((err) => {
|
|
207
|
+
logger.warning("Analytics event failed", { error: String(err) });
|
|
208
|
+
});
|
|
187
209
|
}
|
|
188
210
|
});
|
|
189
211
|
}
|