@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
|
@@ -5,7 +5,7 @@ import { execFile } from "child_process";
|
|
|
5
5
|
import { promisify } from "util";
|
|
6
6
|
import { testFileMatches } from "./utils.js";
|
|
7
7
|
import { DriftAction } from "../types/TestAnalysis.js";
|
|
8
|
-
import { baselineFileMatchesStem, baselineStem } from "./rebaselineSnapshots.js";
|
|
8
|
+
import { baselineFileMatchesStem, baselineStem, } from "./rebaselineSnapshots.js";
|
|
9
9
|
const execFileAsync = promisify(execFile);
|
|
10
10
|
/**
|
|
11
11
|
* Enumerate every path that differs from HEAD in the working tree — staged,
|
|
@@ -122,11 +122,13 @@ export async function listChangedFiles(repoRoot) {
|
|
|
122
122
|
* - DELETE verdicts — applied deterministically by the delivery step, not
|
|
123
123
|
* necessarily reflected in the tree at report time.
|
|
124
124
|
* - IGNORE / VERIFY verdicts — assert that NO edit was needed.
|
|
125
|
-
* - Claims for files outside this checkout (
|
|
126
|
-
*
|
|
125
|
+
* - Claims for files outside this checkout (a `repository` naming another
|
|
126
|
+
* checkout THIS RUN ANALYZED, or an absolute path resolving outside
|
|
127
|
+
* `repoRoot`) — a different checkout owns them. A name the run does not know
|
|
128
|
+
* owns nothing, so it is reported rather than exempted.
|
|
127
129
|
*/
|
|
128
130
|
export function findUnchangedFileClaims(input) {
|
|
129
|
-
const { repoRoot, changedFiles, newTests, verdicts, primaryRepository, planOnly, } = input;
|
|
131
|
+
const { repoRoot, changedFiles, newTests, verdicts, primaryRepository, knownRepositories, planOnly, } = input;
|
|
130
132
|
const unbacked = [];
|
|
131
133
|
const isBacked = (claimedPath) => {
|
|
132
134
|
let candidate = claimedPath;
|
|
@@ -182,12 +184,14 @@ export function findUnchangedFileClaims(input) {
|
|
|
182
184
|
if (!t.fileName)
|
|
183
185
|
continue;
|
|
184
186
|
// Cross-repo finding — its file lives in a different checkout, not this tree.
|
|
185
|
-
// Exempt
|
|
186
|
-
//
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
187
|
+
// Exempt it only when the run actually analyzed that checkout: any other name
|
|
188
|
+
// points at no tree, and waving it through is how an uncreated test ships.
|
|
189
|
+
if (t.repository !== primaryRepository) {
|
|
190
|
+
if (knownRepositories.includes(t.repository))
|
|
191
|
+
continue;
|
|
192
|
+
unbacked.push(`newTestsCreated "${t.testId ?? t.fileName}" names repository "${t.repository}", which this run did not analyze (it analyzed ${knownRepositories.join(", ")})`);
|
|
190
193
|
continue;
|
|
194
|
+
}
|
|
191
195
|
if (!isBacked(t.fileName)) {
|
|
192
196
|
unbacked.push(`newTestsCreated "${t.testId ?? t.fileName}" claims file "${t.fileName}", but no matching file was created or modified in the working tree`);
|
|
193
197
|
}
|
|
@@ -395,7 +399,7 @@ export async function findInvalidSourceCitations(input) {
|
|
|
395
399
|
entry: `issuesFound[${i}]`,
|
|
396
400
|
cited,
|
|
397
401
|
symbol,
|
|
398
|
-
declared: input.issues[i].repository
|
|
402
|
+
declared: input.issues[i].repository,
|
|
399
403
|
resolved: resolved.map((hit) => hit.checkout),
|
|
400
404
|
});
|
|
401
405
|
if (attribution.message)
|
|
@@ -408,9 +412,7 @@ export async function findInvalidSourceCitations(input) {
|
|
|
408
412
|
* A checkout the run could not name contributes nothing: it can be neither
|
|
409
413
|
* stamped nor offered as a candidate. */
|
|
410
414
|
function namesOf(resolved) {
|
|
411
|
-
return [
|
|
412
|
-
...new Set(resolved.map((c) => c.repository).filter((r) => !!r)),
|
|
413
|
-
];
|
|
415
|
+
return [...new Set(resolved.map((c) => c.repository))];
|
|
414
416
|
}
|
|
415
417
|
/**
|
|
416
418
|
* Reconcile where a citation resolved with what the entry says about it, giving
|
|
@@ -425,7 +427,7 @@ function attributeCitation(args) {
|
|
|
425
427
|
// owner/repo is case-insensitive on GitHub, so a differently-cased attribution
|
|
426
428
|
// is the same repo — accepted, and re-stamped in the run's own spelling rather
|
|
427
429
|
// than sent back for a rewrite that would change nothing.
|
|
428
|
-
const match = resolved.find((c) => c.repository
|
|
430
|
+
const match = resolved.find((c) => c.repository.toLowerCase() === declared.toLowerCase());
|
|
429
431
|
if (match)
|
|
430
432
|
return match.repository === declared
|
|
431
433
|
? {}
|
|
@@ -449,10 +451,8 @@ function attributeCitation(args) {
|
|
|
449
451
|
}
|
|
450
452
|
return {}; // Cannot name the alternatives — accept, and stamp nothing.
|
|
451
453
|
}
|
|
452
|
-
// Exactly one checkout. Stamp it
|
|
453
|
-
//
|
|
454
|
+
// Exactly one checkout. Stamp it, the primary included: an item names its repo
|
|
455
|
+
// whichever checkout it came from, so absence no longer means "the primary".
|
|
454
456
|
const [only] = resolved;
|
|
455
|
-
return
|
|
456
|
-
? {}
|
|
457
|
-
: { repository: only.repository };
|
|
457
|
+
return { repository: only.repository };
|
|
458
458
|
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `owner/repo` from a git remote URL. Accepts the two spellings a checkout's
|
|
3
|
+
* `origin` carries — ssh (`git@host:owner/repo.git`) and https
|
|
4
|
+
* (`https://host/owner/repo`) — with or without the `.git` suffix.
|
|
5
|
+
*
|
|
6
|
+
* Returns undefined when the URL yields no owner/repo pair, which the callers
|
|
7
|
+
* treat differently: see `repositorySlugOf` and `tryRepositorySlug` below.
|
|
8
|
+
*/
|
|
9
|
+
export declare function parseOwnerRepo(remoteUrl: string): string | undefined;
|
|
10
|
+
/**
|
|
11
|
+
* `owner/repo` of the checkout at `dir`, or undefined when it is not a git repo,
|
|
12
|
+
* has no `origin` remote, or the remote URL names no owner/repo pair.
|
|
13
|
+
*
|
|
14
|
+
* For a caller that cannot proceed without the name, use `repositorySlugOf`.
|
|
15
|
+
*/
|
|
16
|
+
export declare function tryRepositorySlug(dir: string): Promise<string | undefined>;
|
|
17
|
+
/**
|
|
18
|
+
* `owner/repo` of the checkout at `dir`. Throws, naming the path, when the
|
|
19
|
+
* directory cannot name one: every repository attribution in a run comes from
|
|
20
|
+
* here, so a missing name is a run that cannot attribute anything rather than
|
|
21
|
+
* one that attributes it to a guess.
|
|
22
|
+
*/
|
|
23
|
+
export declare function repositorySlugOf(dir: string): Promise<string>;
|
|
24
|
+
/** Test seam: drop the memoized lookups so a fixture can rebuild a checkout. */
|
|
25
|
+
export declare function clearRepositorySlugCache(): void;
|
|
26
|
+
/**
|
|
27
|
+
* A checkout path in the spelling two calls can be compared in: symlinks
|
|
28
|
+
* resolved, relative spellings absolute. Falls back to the absolute path when
|
|
29
|
+
* the directory does not exist, so a caller comparing paths still gets an
|
|
30
|
+
* answer rather than an error about a path it only means to name.
|
|
31
|
+
*/
|
|
32
|
+
export declare function resolveRealPath(dir: string): Promise<string>;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { execFile } from "child_process";
|
|
2
|
+
import { promisify } from "util";
|
|
3
|
+
import fs from "fs/promises";
|
|
4
|
+
import path from "path";
|
|
5
|
+
const execFileAsync = promisify(execFile);
|
|
6
|
+
/**
|
|
7
|
+
* `owner/repo` from a git remote URL. Accepts the two spellings a checkout's
|
|
8
|
+
* `origin` carries — ssh (`git@host:owner/repo.git`) and https
|
|
9
|
+
* (`https://host/owner/repo`) — with or without the `.git` suffix.
|
|
10
|
+
*
|
|
11
|
+
* Returns undefined when the URL yields no owner/repo pair, which the callers
|
|
12
|
+
* treat differently: see `repositorySlugOf` and `tryRepositorySlug` below.
|
|
13
|
+
*/
|
|
14
|
+
export function parseOwnerRepo(remoteUrl) {
|
|
15
|
+
const match = remoteUrl.trim().match(/[:/]([^/]+)\/([^/]+?)(?:\.git)?\/?$/);
|
|
16
|
+
if (!match)
|
|
17
|
+
return undefined;
|
|
18
|
+
const [, owner, repo] = match;
|
|
19
|
+
return `${owner}/${repo}`;
|
|
20
|
+
}
|
|
21
|
+
// One `git remote get-url` per directory for the life of the process. The
|
|
22
|
+
// value is the resolved slug, or undefined when the directory cannot name one.
|
|
23
|
+
const slugCache = new Map();
|
|
24
|
+
/**
|
|
25
|
+
* `owner/repo` of the checkout at `dir`, or undefined when it is not a git repo,
|
|
26
|
+
* has no `origin` remote, or the remote URL names no owner/repo pair.
|
|
27
|
+
*
|
|
28
|
+
* For a caller that cannot proceed without the name, use `repositorySlugOf`.
|
|
29
|
+
*/
|
|
30
|
+
export function tryRepositorySlug(dir) {
|
|
31
|
+
const cached = slugCache.get(dir);
|
|
32
|
+
if (cached)
|
|
33
|
+
return cached;
|
|
34
|
+
const lookup = (async () => {
|
|
35
|
+
try {
|
|
36
|
+
const { stdout } = await execFileAsync("git", ["-C", dir, "remote", "get-url", "origin"], { timeout: 5_000 });
|
|
37
|
+
return parseOwnerRepo(stdout);
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
return undefined;
|
|
41
|
+
}
|
|
42
|
+
})();
|
|
43
|
+
slugCache.set(dir, lookup);
|
|
44
|
+
return lookup;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* `owner/repo` of the checkout at `dir`. Throws, naming the path, when the
|
|
48
|
+
* directory cannot name one: every repository attribution in a run comes from
|
|
49
|
+
* here, so a missing name is a run that cannot attribute anything rather than
|
|
50
|
+
* one that attributes it to a guess.
|
|
51
|
+
*/
|
|
52
|
+
export async function repositorySlugOf(dir) {
|
|
53
|
+
const slug = await tryRepositorySlug(dir);
|
|
54
|
+
if (!slug) {
|
|
55
|
+
throw new Error(`cannot read owner/repo from the origin remote of ${dir}: the checkout has no origin, or its URL names no owner/repo`);
|
|
56
|
+
}
|
|
57
|
+
return slug;
|
|
58
|
+
}
|
|
59
|
+
/** Test seam: drop the memoized lookups so a fixture can rebuild a checkout. */
|
|
60
|
+
export function clearRepositorySlugCache() {
|
|
61
|
+
slugCache.clear();
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* A checkout path in the spelling two calls can be compared in: symlinks
|
|
65
|
+
* resolved, relative spellings absolute. Falls back to the absolute path when
|
|
66
|
+
* the directory does not exist, so a caller comparing paths still gets an
|
|
67
|
+
* answer rather than an error about a path it only means to name.
|
|
68
|
+
*/
|
|
69
|
+
export async function resolveRealPath(dir) {
|
|
70
|
+
const absolute = path.resolve(dir);
|
|
71
|
+
try {
|
|
72
|
+
return await fs.realpath(absolute);
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
return absolute;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
@@ -14,8 +14,12 @@ export function isBrowserTestType(testType) {
|
|
|
14
14
|
// skyramp_modularization runs BEFORE skyramp_reuse_code and the reuse pass seeds
|
|
15
15
|
// the shared utils file from the helpers it created. The utils flag is the
|
|
16
16
|
// single gate for every test type — the modularization prompts' per-step
|
|
17
|
-
// extraction reads
|
|
18
|
-
//
|
|
17
|
+
// extraction reads this predicate, so the extraction and the seeding step agree
|
|
18
|
+
// on every codeReuse flow. The two hand-off sites (generation and the
|
|
19
|
+
// maintenance step) read isModularizeFirstHandOffTarget in prompts/reuse-hand-off.ts,
|
|
20
|
+
// which is THIS predicate plus a utils spec for the language: a language the
|
|
21
|
+
// verifier does not cover has no payable reuse half, so no hand-off is owed for
|
|
22
|
+
// it. Integration qualifies whenever the flag is on;
|
|
19
23
|
// UI only while the POM path is off (POM refactoring supersedes modularization,
|
|
20
24
|
// and the testbot UI flow asks for codeReuse unconditionally, so the flag is what
|
|
21
25
|
// keeps the default-off behavior a no-op reuse pass). e2e and load are not
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Run async work one at a time per key, in arrival order, within this process.
|
|
3
|
+
*
|
|
4
|
+
* A caller that must read some state, act, and write the state back cannot be
|
|
5
|
+
* interleaved with another caller on the same key without both reading the
|
|
6
|
+
* same starting state. Callers on different keys never wait for each other.
|
|
7
|
+
* A rejected run releases the key like a resolved one.
|
|
8
|
+
*
|
|
9
|
+
* Re-entrant: work that already holds a key (it is running inside a
|
|
10
|
+
* runSerialized on that key, however deep) runs immediately instead of
|
|
11
|
+
* queueing behind itself — otherwise a helper that serializes on the state
|
|
12
|
+
* file, called from a handler that already serializes on it, would wait for
|
|
13
|
+
* its own caller to finish and deadlock.
|
|
14
|
+
*/
|
|
15
|
+
import { AsyncLocalStorage } from "async_hooks";
|
|
16
|
+
const tails = new Map();
|
|
17
|
+
const held = new AsyncLocalStorage();
|
|
18
|
+
export async function runSerialized(key, fn) {
|
|
19
|
+
const holding = held.getStore() ?? new Set();
|
|
20
|
+
if (holding.has(key))
|
|
21
|
+
return fn();
|
|
22
|
+
const previous = tails.get(key) ?? Promise.resolve();
|
|
23
|
+
const run = previous.then(() => held.run(new Set([...holding, key]), fn));
|
|
24
|
+
// What the next caller waits on: settled either way, so one failure does not
|
|
25
|
+
// wedge the key.
|
|
26
|
+
const tail = run.then(() => undefined, () => undefined);
|
|
27
|
+
tails.set(key, tail);
|
|
28
|
+
try {
|
|
29
|
+
return await run;
|
|
30
|
+
}
|
|
31
|
+
finally {
|
|
32
|
+
if (tails.get(key) === tail)
|
|
33
|
+
tails.delete(key);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/** Test seam: how many keys currently have work queued or running. */
|
|
37
|
+
export function pendingSerializedKeys() {
|
|
38
|
+
return tails.size;
|
|
39
|
+
}
|
|
@@ -39,7 +39,16 @@ import { extractSourceRoutes } from "./sourceRouteExtractor.js";
|
|
|
39
39
|
/** Files that can import, and therefore render, a frontend module. */
|
|
40
40
|
const FRONTEND_SOURCE_EXT = /\.(ts|tsx|js|jsx|mjs|cjs|vue|svelte|dart)$/i;
|
|
41
41
|
const SKIP_DIRS = new Set([
|
|
42
|
-
"node_modules",
|
|
42
|
+
"node_modules",
|
|
43
|
+
".git",
|
|
44
|
+
"dist",
|
|
45
|
+
"build",
|
|
46
|
+
"out",
|
|
47
|
+
".next",
|
|
48
|
+
".nuxt",
|
|
49
|
+
".svelte-kit",
|
|
50
|
+
"coverage",
|
|
51
|
+
"vendor",
|
|
43
52
|
]);
|
|
44
53
|
/** Walk cap. Hitting it means the index is incomplete, and an incomplete index
|
|
45
54
|
* cannot honestly say "nothing mounts this" — the whole repository answers
|
|
@@ -65,7 +74,9 @@ function toPosix(value) {
|
|
|
65
74
|
return value.replace(/\\/g, "/");
|
|
66
75
|
}
|
|
67
76
|
function stripExtension(file) {
|
|
68
|
-
return /\.d\.ts$/i.test(file)
|
|
77
|
+
return /\.d\.ts$/i.test(file)
|
|
78
|
+
? file.slice(0, -5)
|
|
79
|
+
: file.slice(0, file.length - path.posix.extname(file).length);
|
|
69
80
|
}
|
|
70
81
|
/** The strings an import specifier can use to name this file: the file itself, the
|
|
71
82
|
* file without its extension, and for an `index.*` module its directory. */
|
|
@@ -94,7 +105,9 @@ function normalizeRelative(relativePath) {
|
|
|
94
105
|
* and this index is keyed by the stem instead because the specifier is already
|
|
95
106
|
* isolated by the time we get here. */
|
|
96
107
|
function stemKeys(file) {
|
|
97
|
-
return [
|
|
108
|
+
return [
|
|
109
|
+
...new Set(buildPathSignatures(file).map((signature) => signature.slice(0, -1))),
|
|
110
|
+
];
|
|
98
111
|
}
|
|
99
112
|
/**
|
|
100
113
|
* The candidate repository paths an import specifier could name.
|
|
@@ -125,8 +138,11 @@ function specifierCandidates(spec) {
|
|
|
125
138
|
if (segments.length === 1)
|
|
126
139
|
return { relative: false, paths: [] };
|
|
127
140
|
const paths = [clean];
|
|
128
|
-
const scopedPackageShape = segments[0].length > 1 &&
|
|
129
|
-
|
|
141
|
+
const scopedPackageShape = segments[0].length > 1 &&
|
|
142
|
+
segments[0].startsWith("@") &&
|
|
143
|
+
segments.length < 3;
|
|
144
|
+
if (!scopedPackageShape &&
|
|
145
|
+
(/^[@~#]/.test(segments[0]) || segments[0] === "src")) {
|
|
130
146
|
paths.push(segments.slice(1).join("/"));
|
|
131
147
|
}
|
|
132
148
|
return { relative: false, paths };
|
|
@@ -217,7 +233,11 @@ function readTanStackRouteTree(repositoryPath, treeFile, filesByStem) {
|
|
|
217
233
|
}
|
|
218
234
|
const preLoader = /^\s*preLoaderRoute:\s*typeof\s+(\w+)/.exec(line);
|
|
219
235
|
if (preLoader && pendingId !== undefined && pendingFullPath !== undefined) {
|
|
220
|
-
blocks.push({
|
|
236
|
+
blocks.push({
|
|
237
|
+
id: pendingId,
|
|
238
|
+
fullPath: pendingFullPath,
|
|
239
|
+
ident: preLoader[1],
|
|
240
|
+
});
|
|
221
241
|
pendingId = undefined;
|
|
222
242
|
pendingFullPath = undefined;
|
|
223
243
|
}
|
|
@@ -316,7 +336,9 @@ function flutterPackages(repositoryPath) {
|
|
|
316
336
|
for (const parent of PUBSPEC_MONOREPO_PARENTS) {
|
|
317
337
|
let entries;
|
|
318
338
|
try {
|
|
319
|
-
entries = fs.readdirSync(path.join(repositoryPath, parent), {
|
|
339
|
+
entries = fs.readdirSync(path.join(repositoryPath, parent), {
|
|
340
|
+
withFileTypes: true,
|
|
341
|
+
});
|
|
320
342
|
}
|
|
321
343
|
catch {
|
|
322
344
|
continue;
|
|
@@ -360,7 +382,9 @@ function dartPackagePath(spec, packages) {
|
|
|
360
382
|
export function frameworkRouteFor(relativePath, framework) {
|
|
361
383
|
// Next.js and Nuxt accept their routing directory at the root or under `src/`,
|
|
362
384
|
// and neither spelling appears in the URL.
|
|
363
|
-
const below = relativePath.startsWith("src/")
|
|
385
|
+
const below = relativePath.startsWith("src/")
|
|
386
|
+
? relativePath.slice(4)
|
|
387
|
+
: relativePath;
|
|
364
388
|
switch (framework) {
|
|
365
389
|
case "next":
|
|
366
390
|
return nextRoute(below);
|
|
@@ -381,7 +405,9 @@ function bracketParam(segment) {
|
|
|
381
405
|
/** Segments the Next app router organises the tree with and leaves out of the
|
|
382
406
|
* URL: route groups `(shop)`, private folders `_internal`, slots `@modal`. */
|
|
383
407
|
function isNextAppOrganisingSegment(segment) {
|
|
384
|
-
return /^\(.+\)$/.test(segment) ||
|
|
408
|
+
return (/^\(.+\)$/.test(segment) ||
|
|
409
|
+
segment.startsWith("_") ||
|
|
410
|
+
segment.startsWith("@"));
|
|
385
411
|
}
|
|
386
412
|
function nextRoute(below) {
|
|
387
413
|
const app = /^app\/(.*)$/.exec(below);
|
|
@@ -394,7 +420,11 @@ function nextRoute(below) {
|
|
|
394
420
|
// `template`, `loading`, `error` and `not-found` wrap a page without being one.
|
|
395
421
|
if (segments.pop() !== "page")
|
|
396
422
|
return undefined;
|
|
397
|
-
return "/" +
|
|
423
|
+
return ("/" +
|
|
424
|
+
segments
|
|
425
|
+
.filter((s) => !isNextAppOrganisingSegment(s))
|
|
426
|
+
.map(bracketParam)
|
|
427
|
+
.join("/"));
|
|
398
428
|
}
|
|
399
429
|
const pages = /^pages\/(.*)$/.exec(below);
|
|
400
430
|
if (!pages)
|
|
@@ -411,14 +441,22 @@ function nextRoute(below) {
|
|
|
411
441
|
return undefined;
|
|
412
442
|
// No route groups in this router — `(shop)` is a literal directory name.
|
|
413
443
|
const segments = stem.replace(/(?:^|\/)index$/, "").split("/");
|
|
414
|
-
return "/" +
|
|
444
|
+
return ("/" +
|
|
445
|
+
segments
|
|
446
|
+
.filter((s) => s !== "")
|
|
447
|
+
.map(bracketParam)
|
|
448
|
+
.join("/"));
|
|
415
449
|
}
|
|
416
450
|
function nuxtRoute(below) {
|
|
417
451
|
const pages = /^pages\/(.*)\.vue$/.exec(below);
|
|
418
452
|
if (!pages)
|
|
419
453
|
return undefined;
|
|
420
454
|
const segments = pages[1].replace(/(?:^|\/)index$/, "").split("/");
|
|
421
|
-
return "/" +
|
|
455
|
+
return ("/" +
|
|
456
|
+
segments
|
|
457
|
+
.filter((s) => s !== "")
|
|
458
|
+
.map(nuxtParam)
|
|
459
|
+
.join("/"));
|
|
422
460
|
}
|
|
423
461
|
/** Nuxt 3 spells a parameter `[id]`, Nuxt 2 spells it `_id`. The underscore names
|
|
424
462
|
* one only as the WHOLE segment: a blanket rule made `order_total` `/order:total`. */
|
|
@@ -438,7 +476,11 @@ function svelteKitRoute(below) {
|
|
|
438
476
|
if (segments.pop() !== "+page.svelte")
|
|
439
477
|
return undefined;
|
|
440
478
|
// The one non-Next framework with route groups, spelled the same way.
|
|
441
|
-
return "/" +
|
|
479
|
+
return ("/" +
|
|
480
|
+
segments
|
|
481
|
+
.filter((s) => !/^\(.+\)$/.test(s))
|
|
482
|
+
.map(svelteParam)
|
|
483
|
+
.join("/"));
|
|
442
484
|
}
|
|
443
485
|
/** SvelteKit adds an optional parameter, `[[lang]]`, to the bracket spellings. */
|
|
444
486
|
function svelteParam(segment) {
|
|
@@ -476,7 +518,9 @@ function fileSystemRouteEntries(files) {
|
|
|
476
518
|
* through the stem index first: the route tree names hundreds of entry files, and
|
|
477
519
|
* comparing each against every file in the repository is quadratic. */
|
|
478
520
|
function resolveWithin(dir, spec, filesByStem) {
|
|
479
|
-
const base = spec.startsWith(".")
|
|
521
|
+
const base = spec.startsWith(".")
|
|
522
|
+
? path.posix.normalize(path.posix.join(dir, spec))
|
|
523
|
+
: spec;
|
|
480
524
|
const lastSegment = base.split("/").pop();
|
|
481
525
|
if (!lastSegment)
|
|
482
526
|
return undefined;
|
|
@@ -515,7 +559,9 @@ function collectRouteEntries(repositoryPath, files, fileSet, filesByStem, packag
|
|
|
515
559
|
}
|
|
516
560
|
if (packages.size > 0) {
|
|
517
561
|
for (const route of extractDartRoutes(repositoryPath)) {
|
|
518
|
-
const relative = route.componentFile
|
|
562
|
+
const relative = route.componentFile
|
|
563
|
+
? toPosix(path.relative(repositoryPath, route.componentFile))
|
|
564
|
+
: undefined;
|
|
519
565
|
// A widget this reader could not trace to a file leaves the table short of
|
|
520
566
|
// a route, the same way an unresolved web component does.
|
|
521
567
|
if (relative && fileSet.has(relative))
|
|
@@ -533,7 +579,9 @@ function collectRouteEntries(repositoryPath, files, fileSet, filesByStem, packag
|
|
|
533
579
|
for (const route of extractSourceRoutes(repositoryPath)) {
|
|
534
580
|
if (!route.path)
|
|
535
581
|
continue;
|
|
536
|
-
const relative = route.componentFile
|
|
582
|
+
const relative = route.componentFile
|
|
583
|
+
? toPosix(path.relative(repositoryPath, route.componentFile))
|
|
584
|
+
: undefined;
|
|
537
585
|
if (relative && fileSet.has(relative)) {
|
|
538
586
|
entries.push({ pattern: route.path, entryFile: relative });
|
|
539
587
|
continue;
|
|
@@ -601,7 +649,13 @@ function buildIndex(repositoryPath) {
|
|
|
601
649
|
}
|
|
602
650
|
}
|
|
603
651
|
}
|
|
604
|
-
return {
|
|
652
|
+
return {
|
|
653
|
+
fileSet,
|
|
654
|
+
importers,
|
|
655
|
+
patternsByEntry,
|
|
656
|
+
tableComplete: table.complete,
|
|
657
|
+
importsComplete,
|
|
658
|
+
};
|
|
605
659
|
}
|
|
606
660
|
// ── Query ───────────────────────────────────────────────────────────────────
|
|
607
661
|
function candidatesFor(index, file) {
|
|
@@ -708,7 +762,9 @@ export function createScreenRouteLookup(repositoryPath) {
|
|
|
708
762
|
/** The routes for a file, without the evidence. */
|
|
709
763
|
export function createScreenRouteResolver(repositoryPath) {
|
|
710
764
|
const lookup = createScreenRouteLookup(repositoryPath);
|
|
711
|
-
return (relativePath) => lookup
|
|
765
|
+
return (relativePath) => lookup
|
|
766
|
+
.candidatesFor(relativePath)
|
|
767
|
+
?.map((candidate) => candidate.routePattern);
|
|
712
768
|
}
|
|
713
769
|
/** The same answer with its evidence: every route, and the import chain that
|
|
714
770
|
* reaches the file from that route's entry file. */
|
|
@@ -135,7 +135,8 @@ function findRouterFiles(repoPath) {
|
|
|
135
135
|
// hosts a `defineModule({ routes: [...] })` call.
|
|
136
136
|
if (lower.startsWith("index.")) {
|
|
137
137
|
const ext = path.extname(lower);
|
|
138
|
-
return indexExtensions.has(ext) &&
|
|
138
|
+
return (indexExtensions.has(ext) &&
|
|
139
|
+
full.includes(`${path.sep}modules${path.sep}`));
|
|
139
140
|
}
|
|
140
141
|
return false;
|
|
141
142
|
},
|
|
@@ -529,8 +530,10 @@ function resolveExportedSymbolToString(filePath, exportedName, cache, depth) {
|
|
|
529
530
|
// `export default <expr>` — direct default export.
|
|
530
531
|
return resolveExpressionToString(stmt.expression, filePath, imports, localConsts, cache, depth + 1);
|
|
531
532
|
}
|
|
532
|
-
if (ts.isExportDeclaration(stmt) &&
|
|
533
|
-
|
|
533
|
+
if (ts.isExportDeclaration(stmt) &&
|
|
534
|
+
stmt.exportClause &&
|
|
535
|
+
ts.isNamedExports(stmt.exportClause) &&
|
|
536
|
+
!stmt.moduleSpecifier) {
|
|
534
537
|
// `export { X as default }` — local re-export aliased as default.
|
|
535
538
|
for (const elt of stmt.exportClause.elements) {
|
|
536
539
|
if (elt.name.text !== "default")
|
|
@@ -643,7 +646,9 @@ function resolveModuleSpecifier(spec, fromDir, cache) {
|
|
|
643
646
|
const viaPaths = resolveViaTsconfigPaths(spec, tsconfig);
|
|
644
647
|
if (viaPaths)
|
|
645
648
|
return viaPaths;
|
|
646
|
-
return tsconfig.baseUrl
|
|
649
|
+
return tsconfig.baseUrl
|
|
650
|
+
? resolveImportPath(tsconfig.baseUrl, spec)
|
|
651
|
+
: undefined;
|
|
647
652
|
}
|
|
648
653
|
/** The file a `paths` alias names, trying the most specific pattern first and,
|
|
649
654
|
* within one pattern, the first target that exists. */
|
|
@@ -1052,7 +1057,8 @@ function dataRouterRoutesFromArray(arr, prefix, filePath, imports, localConsts,
|
|
|
1052
1057
|
else if (name === "element" || name === "component") {
|
|
1053
1058
|
componentName = componentIdentifierOf(prop.initializer);
|
|
1054
1059
|
}
|
|
1055
|
-
else if (name === "children" &&
|
|
1060
|
+
else if (name === "children" &&
|
|
1061
|
+
ts.isArrayLiteralExpression(prop.initializer)) {
|
|
1056
1062
|
childrenArray = prop.initializer;
|
|
1057
1063
|
}
|
|
1058
1064
|
}
|
|
@@ -1141,7 +1147,8 @@ function defineModuleRoutesFromCall(call, filePath, imports, localConsts, cache)
|
|
|
1141
1147
|
if (idVal !== null)
|
|
1142
1148
|
moduleId = idVal;
|
|
1143
1149
|
}
|
|
1144
|
-
else if (propName === "routes" &&
|
|
1150
|
+
else if (propName === "routes" &&
|
|
1151
|
+
ts.isArrayLiteralExpression(prop.initializer)) {
|
|
1145
1152
|
routesArray = prop.initializer;
|
|
1146
1153
|
}
|
|
1147
1154
|
}
|
|
@@ -14,6 +14,7 @@ export interface RepositoryInfo {
|
|
|
14
14
|
* forms, with or without the trailing ".git". Returns undefined if no match.
|
|
15
15
|
*/
|
|
16
16
|
export declare function parseRepositoryFromRemoteUrl(remoteUrl: string): RepositoryInfo | undefined;
|
|
17
|
+
export declare function getLocalRepositoryInfo(cwd: string): Promise<RepositoryInfo>;
|
|
17
18
|
/**
|
|
18
19
|
* Resolves source-repository attribution for telemetry, segmenting usage per
|
|
19
20
|
* customer/repo.
|
package/build/utils/telemetry.js
CHANGED
|
@@ -7,6 +7,7 @@ import { execFile } from "child_process";
|
|
|
7
7
|
import { promisify } from "util";
|
|
8
8
|
import { isTestbotEnabled } from "./featureFlags.js";
|
|
9
9
|
import { logger } from "./logger.js";
|
|
10
|
+
import { parseOwnerRepo } from "./repositorySlug.js";
|
|
10
11
|
const execFileAsync = promisify(execFile);
|
|
11
12
|
export function getEntryPoint() {
|
|
12
13
|
return isTestbotEnabled() ? "testbot" : "mcp";
|
|
@@ -32,17 +33,19 @@ export function getCIPlatform() {
|
|
|
32
33
|
* forms, with or without the trailing ".git". Returns undefined if no match.
|
|
33
34
|
*/
|
|
34
35
|
export function parseRepositoryFromRemoteUrl(remoteUrl) {
|
|
35
|
-
const
|
|
36
|
-
if (!
|
|
36
|
+
const repository = parseOwnerRepo(remoteUrl);
|
|
37
|
+
if (!repository)
|
|
37
38
|
return undefined;
|
|
38
|
-
|
|
39
|
-
return { repository: `${owner}/${repo}`, repositoryOwner: owner };
|
|
39
|
+
return { repository, repositoryOwner: repository.split("/")[0] };
|
|
40
40
|
}
|
|
41
41
|
// Memoize the local git lookup per working directory so we shell out at most
|
|
42
42
|
// once per cwd for the lifetime of the MCP server process. The value is the
|
|
43
43
|
// resolved RepositoryInfo (possibly empty when not a git repo / no remote).
|
|
44
|
+
//
|
|
45
|
+
// Also read outside telemetry: the testbot and SUT resources name their
|
|
46
|
+
// repository from the checkout's own remote, the same way the action does.
|
|
44
47
|
const localRepoInfoCache = new Map();
|
|
45
|
-
async function getLocalRepositoryInfo(cwd) {
|
|
48
|
+
export async function getLocalRepositoryInfo(cwd) {
|
|
46
49
|
const cached = localRepoInfoCache.get(cwd);
|
|
47
50
|
if (cached)
|
|
48
51
|
return cached;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare const NPM_TEST_PACKAGES: ReadonlySet<string>;
|
|
2
|
+
export declare const PYTHON_TEST_PACKAGES: ReadonlySet<string>;
|
|
3
|
+
export declare const JAVA_TEST_PACKAGES: ReadonlySet<string>;
|
|
4
|
+
export interface TestDependencyVerification {
|
|
5
|
+
ok: boolean;
|
|
6
|
+
checkedFiles: string[];
|
|
7
|
+
violations: string[];
|
|
8
|
+
}
|
|
9
|
+
export declare function verifyTestDependencyChanges(repositoryPath: string): Promise<TestDependencyVerification>;
|