@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
|
@@ -25,7 +25,7 @@ import { TOOL_RESOLVE_SCREEN } from "../../toolNames.js";
|
|
|
25
25
|
import { logger } from "../../utils/logger.js";
|
|
26
26
|
import { lastKnownBrowserUrl } from "../../playwright/blueprintDigestStore.js";
|
|
27
27
|
import { readWorkspaceServices } from "../../prompts/prompt-utils.js";
|
|
28
|
-
import { createScreenRouteLookup } from "../../utils/screenRoutes.js";
|
|
28
|
+
import { createScreenRouteLookup, } from "../../utils/screenRoutes.js";
|
|
29
29
|
// ── Route patterns ──────────────────────────────────────────────────────────
|
|
30
30
|
/** A pattern segment, in the four spellings the frameworks this run meets use:
|
|
31
31
|
* TanStack `$id`, React/Vue `:id`, Next `[id]`, OpenAPI-ish `{id}`. Mirrors the
|
|
@@ -55,7 +55,9 @@ export function urlPath(raw) {
|
|
|
55
55
|
return new URL(value).pathname.replace(/\/+$/, "") || "/";
|
|
56
56
|
}
|
|
57
57
|
catch {
|
|
58
|
-
return value.startsWith("/")
|
|
58
|
+
return value.startsWith("/")
|
|
59
|
+
? value.split(/[?#]/)[0].replace(/\/+$/, "") || "/"
|
|
60
|
+
: "";
|
|
59
61
|
}
|
|
60
62
|
}
|
|
61
63
|
function origin(raw) {
|
|
@@ -112,7 +114,9 @@ export function bindFromLocation(location, patterns) {
|
|
|
112
114
|
if (!best || literals > best.literals)
|
|
113
115
|
best = { pattern, values, literals };
|
|
114
116
|
}
|
|
115
|
-
return best
|
|
117
|
+
return best
|
|
118
|
+
? { pattern: best.pattern, values: best.values, source: location.source }
|
|
119
|
+
: undefined;
|
|
116
120
|
}
|
|
117
121
|
/** The pattern with its bound parameters substituted, prefixed by the origin when
|
|
118
122
|
* one is known. An unbound parameter is left in its own spelling rather than
|
|
@@ -198,7 +202,13 @@ export function buildResolveScreenResult(input) {
|
|
|
198
202
|
"and do not invent one — a plausible wrong id renders an empty page that looks real.");
|
|
199
203
|
}
|
|
200
204
|
lines.push("`mountChain` is the import path from the route file to the changed file: check it rather than trust it.");
|
|
201
|
-
return {
|
|
205
|
+
return {
|
|
206
|
+
status: "resolved",
|
|
207
|
+
candidates: resolved,
|
|
208
|
+
notOn,
|
|
209
|
+
needs: [...needs],
|
|
210
|
+
summary: lines.join(" "),
|
|
211
|
+
};
|
|
202
212
|
}
|
|
203
213
|
// ── Workspace default for baseUrl ───────────────────────────────────────────
|
|
204
214
|
/**
|
|
@@ -215,7 +225,11 @@ export async function workspaceUiBaseUrl(repositoryPath) {
|
|
|
215
225
|
const services = (await readWorkspaceServices(repositoryPath));
|
|
216
226
|
const withUrl = services.filter((service) => typeof service?.api?.baseUrl === "string" && service.api.baseUrl);
|
|
217
227
|
const playwright = withUrl.filter((service) => service.framework === "playwright");
|
|
218
|
-
const chosen = playwright.length === 1
|
|
228
|
+
const chosen = playwright.length === 1
|
|
229
|
+
? playwright[0]
|
|
230
|
+
: withUrl.length === 1
|
|
231
|
+
? withUrl[0]
|
|
232
|
+
: undefined;
|
|
219
233
|
return chosen ? origin(chosen.api?.baseUrl) : undefined;
|
|
220
234
|
}
|
|
221
235
|
catch {
|
|
@@ -224,7 +238,9 @@ export async function workspaceUiBaseUrl(repositoryPath) {
|
|
|
224
238
|
}
|
|
225
239
|
// ── Registration ────────────────────────────────────────────────────────────
|
|
226
240
|
const inputSchema = {
|
|
227
|
-
repositoryPath: z
|
|
241
|
+
repositoryPath: z
|
|
242
|
+
.string()
|
|
243
|
+
.describe("Absolute path to the repository checkout that holds the frontend file."),
|
|
228
244
|
changedFile: z
|
|
229
245
|
.string()
|
|
230
246
|
.describe("Repository-relative path of the frontend file the test is about — the file the diff changed, " +
|
|
@@ -244,14 +260,19 @@ const outputSchema = {
|
|
|
244
260
|
.array(z.object({
|
|
245
261
|
url: z.string(),
|
|
246
262
|
routePattern: z.string(),
|
|
247
|
-
params: z.record(z.object({
|
|
263
|
+
params: z.record(z.object({
|
|
264
|
+
value: z.string(),
|
|
265
|
+
from: z.enum(["currentUrl", "blueprint", "unresolved"]),
|
|
266
|
+
})),
|
|
248
267
|
mountChain: z.array(z.string()),
|
|
249
268
|
}))
|
|
250
269
|
.describe("Each route that renders the file, with the import chain from its route file down to the file."),
|
|
251
270
|
notOn: z
|
|
252
271
|
.array(z.string())
|
|
253
272
|
.describe("The route the browser is currently on, when it is not one that renders the file."),
|
|
254
|
-
needs: z
|
|
273
|
+
needs: z
|
|
274
|
+
.array(z.string())
|
|
275
|
+
.describe("Route parameters no known value fills. Read them off the app; never invent one."),
|
|
255
276
|
summary: z.string().describe("The same answer in one paragraph."),
|
|
256
277
|
};
|
|
257
278
|
const DESCRIPTION = "Answer which page of the running app renders a changed frontend file, and give the url to open. " +
|
|
@@ -284,6 +305,9 @@ export function registerResolveScreenTool(server) {
|
|
|
284
305
|
routes: result.candidates.length,
|
|
285
306
|
needs: result.needs.length,
|
|
286
307
|
});
|
|
287
|
-
return {
|
|
308
|
+
return {
|
|
309
|
+
structuredContent: { ...result },
|
|
310
|
+
content: [{ type: "text", text: result.summary }],
|
|
311
|
+
};
|
|
288
312
|
});
|
|
289
313
|
}
|
|
@@ -251,7 +251,9 @@ For detailed documentation visit: https://www.skyramp.dev/docs/load-test/advance
|
|
|
251
251
|
prompt: params.prompt,
|
|
252
252
|
playwright: params.playwright.toString(),
|
|
253
253
|
};
|
|
254
|
-
AnalyticsService.pushMCPToolEvent(TOOL_NAME, errorResult, recordParams).catch((err) => {
|
|
254
|
+
AnalyticsService.pushMCPToolEvent(TOOL_NAME, errorResult, recordParams).catch((err) => {
|
|
255
|
+
logger.warning("Analytics event failed", { error: String(err) });
|
|
256
|
+
});
|
|
255
257
|
}
|
|
256
258
|
});
|
|
257
259
|
}
|
|
@@ -51,6 +51,10 @@ For detailed documentation visit: https://www.skyramp.dev/docs/load-test/advance
|
|
|
51
51
|
prompt: params.prompt,
|
|
52
52
|
});
|
|
53
53
|
const client = new SkyrampClient();
|
|
54
|
+
// Declared outside the try so the catch below can report a leftover window
|
|
55
|
+
// too: traceCollect can throw after the terminal close already failed, and
|
|
56
|
+
// the user is still the only one who can close it.
|
|
57
|
+
let terminalAppendix = "";
|
|
54
58
|
try {
|
|
55
59
|
const stopTraceOptions = {
|
|
56
60
|
output: params.traceOutputFile,
|
|
@@ -90,14 +94,44 @@ For detailed documentation visit: https://www.skyramp.dev/docs/load-test/advance
|
|
|
90
94
|
if (errList.content.length > 0) {
|
|
91
95
|
return errList;
|
|
92
96
|
}
|
|
93
|
-
|
|
97
|
+
// Never throws: this sits inside the try that wraps traceCollect, so a
|
|
98
|
+
// throw here would lose the trace over a leftover window.
|
|
99
|
+
const terminalClose = await closeProxyTerminal();
|
|
100
|
+
// Built before traceCollect so the failure response below carries it
|
|
101
|
+
// too: an orphaned window outlives a failed trace just as it does a
|
|
102
|
+
// successful one, and the user is the only one who can close it.
|
|
103
|
+
//
|
|
104
|
+
// Named titles are the trigger, not `closed`. A stop that opened no
|
|
105
|
+
// terminal also reports closed: false, and telling the user to close a
|
|
106
|
+
// window that was never opened is worse than saying nothing.
|
|
107
|
+
const strandedTitles = [
|
|
108
|
+
...(terminalClose.orphanedTitles ?? []),
|
|
109
|
+
...(terminalClose.closed || !terminalClose.title
|
|
110
|
+
? []
|
|
111
|
+
: [terminalClose.title]),
|
|
112
|
+
];
|
|
113
|
+
if (strandedTitles.length) {
|
|
114
|
+
// Windows can name the exact windows, so it does.
|
|
115
|
+
terminalAppendix =
|
|
116
|
+
`\n\nNote: ${strandedTitles.length === 1 ? "a trace collection terminal window" : `${strandedTitles.length} trace collection terminal windows`} could not be closed automatically and must be closed by hand: ` +
|
|
117
|
+
strandedTitles.map((t) => `"${t}"`).join(", ") +
|
|
118
|
+
`.${terminalClose.reason ? ` (${terminalClose.reason})` : ""}`;
|
|
119
|
+
}
|
|
120
|
+
else if (!terminalClose.closed) {
|
|
121
|
+
// macOS and Linux close by PID and have no title to quote, so the
|
|
122
|
+
// reason carries it. Without this arm a failed close on those
|
|
123
|
+
// platforms is invisible to the user, which is the whole bug.
|
|
124
|
+
terminalAppendix =
|
|
125
|
+
`\n\nNote: the trace collection terminal could not be closed automatically and may still be open` +
|
|
126
|
+
`${terminalClose.reason ? ` (${terminalClose.reason})` : ""}.`;
|
|
127
|
+
}
|
|
94
128
|
const result = await client.traceCollect(stopTraceOptions);
|
|
95
129
|
if (result.toLowerCase().includes("failed")) {
|
|
96
130
|
errorResult = {
|
|
97
131
|
content: [
|
|
98
132
|
{
|
|
99
133
|
type: "text",
|
|
100
|
-
text: `Trace collection failed: ${result}`,
|
|
134
|
+
text: `Trace collection failed: ${result}${terminalAppendix}`,
|
|
101
135
|
},
|
|
102
136
|
],
|
|
103
137
|
isError: true,
|
|
@@ -117,7 +151,7 @@ For detailed documentation visit: https://www.skyramp.dev/docs/load-test/advance
|
|
|
117
151
|
text: `Trace collection is stopped: ${result}. Trace is generated to given output file
|
|
118
152
|
|
|
119
153
|
**IMPORTANT: GO THROUGH THE TRACE AND LET THE USER KNOW THE ENDPOINT DOMAINS CAPTURED AND MAKE SURE USER WANTS TO INCLUDE THEN FOR INTEGRATION/E2E/LOAD TEST GENERATION.
|
|
120
|
-
UI TESTS CAN BE GENERATED USING PLAYWRIGHT FILES ONLY.**${sessionAppendix}`,
|
|
154
|
+
UI TESTS CAN BE GENERATED USING PLAYWRIGHT FILES ONLY.**${sessionAppendix}${terminalAppendix}`,
|
|
121
155
|
},
|
|
122
156
|
],
|
|
123
157
|
};
|
|
@@ -128,7 +162,7 @@ For detailed documentation visit: https://www.skyramp.dev/docs/load-test/advance
|
|
|
128
162
|
content: [
|
|
129
163
|
{
|
|
130
164
|
type: "text",
|
|
131
|
-
text: `Trace generation result: ${error.message}`,
|
|
165
|
+
text: `Trace generation result: ${error.message}${terminalAppendix}`,
|
|
132
166
|
},
|
|
133
167
|
],
|
|
134
168
|
isError: true,
|
|
@@ -140,7 +174,9 @@ For detailed documentation visit: https://www.skyramp.dev/docs/load-test/advance
|
|
|
140
174
|
prompt: params.prompt,
|
|
141
175
|
playwright: params.playwrightEnabled.toString(),
|
|
142
176
|
};
|
|
143
|
-
AnalyticsService.pushMCPToolEvent(TOOL_NAME, errorResult, recordParams).catch((err) => {
|
|
177
|
+
AnalyticsService.pushMCPToolEvent(TOOL_NAME, errorResult, recordParams).catch((err) => {
|
|
178
|
+
logger.warning("Analytics event failed", { error: String(err) });
|
|
179
|
+
});
|
|
144
180
|
}
|
|
145
181
|
});
|
|
146
182
|
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import * as path from "path";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { AnalyticsService } from "../services/AnalyticsService.js";
|
|
4
|
+
import { logger } from "../utils/logger.js";
|
|
5
|
+
import { verifyTestDependencyChanges } from "../utils/testDependencyPolicy.js";
|
|
6
|
+
import { toolError } from "../utils/utils.js";
|
|
7
|
+
export const VERIFY_TEST_DEPENDENCIES_TOOL = "skyramp_verify_test_dependencies";
|
|
8
|
+
const schema = z.object({
|
|
9
|
+
repositoryPath: z
|
|
10
|
+
.string()
|
|
11
|
+
.refine((value) => path.isAbsolute(value), "repositoryPath must be an absolute path")
|
|
12
|
+
.describe("Absolute path to the repository whose working-tree dependency changes should be verified."),
|
|
13
|
+
});
|
|
14
|
+
export function registerVerifyTestDependenciesTool(server) {
|
|
15
|
+
server.registerTool(VERIFY_TEST_DEPENDENCIES_TOOL, {
|
|
16
|
+
description: "Verify that dependency changes made while fixing tests use only approved testing packages and development/test-only manifest scopes.",
|
|
17
|
+
inputSchema: schema.shape,
|
|
18
|
+
_meta: {
|
|
19
|
+
keywords: [
|
|
20
|
+
"dependencies",
|
|
21
|
+
"devDependencies",
|
|
22
|
+
"test dependencies",
|
|
23
|
+
"verification",
|
|
24
|
+
],
|
|
25
|
+
},
|
|
26
|
+
}, async (params) => {
|
|
27
|
+
let result;
|
|
28
|
+
try {
|
|
29
|
+
const verification = await verifyTestDependencyChanges(params.repositoryPath);
|
|
30
|
+
result = verification.ok
|
|
31
|
+
? {
|
|
32
|
+
content: [
|
|
33
|
+
{
|
|
34
|
+
type: "text",
|
|
35
|
+
text: `VERIFICATION PASSED — ${verification.checkedFiles.length} dependency file${verification.checkedFiles.length === 1 ? "" : "s"} checked.`,
|
|
36
|
+
},
|
|
37
|
+
],
|
|
38
|
+
isError: false,
|
|
39
|
+
}
|
|
40
|
+
: toolError("VERIFICATION FAILED — dependency changes are outside the safe test-only policy:\n" +
|
|
41
|
+
verification.violations
|
|
42
|
+
.map((violation) => `- ${violation}`)
|
|
43
|
+
.join("\n") +
|
|
44
|
+
"\nMove approved packages to the required development/test scope, remove unapproved or unrelated manifest edits, then run this verifier again.");
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
result = toolError(`Test dependency verification failed: ${error.message}`);
|
|
48
|
+
}
|
|
49
|
+
AnalyticsService.pushMCPToolEvent(VERIFY_TEST_DEPENDENCIES_TOOL, result, {
|
|
50
|
+
repositoryPath: params.repositoryPath,
|
|
51
|
+
}).catch((error) => logger.warning("Analytics event failed", { error: String(error) }));
|
|
52
|
+
return result;
|
|
53
|
+
});
|
|
54
|
+
}
|
|
@@ -29,13 +29,17 @@ const initScanWorkspaceSchema = z.object({
|
|
|
29
29
|
});
|
|
30
30
|
export function registerInitScanWorkspaceTool(server) {
|
|
31
31
|
server.registerTool(TOOL_NAME, {
|
|
32
|
-
description: "
|
|
32
|
+
description: "Call this FIRST, before any other Skyramp tool (test generation, execution, analysis), whenever workspacePath is a git repository and .skyramp/workspace.yml does not exist at its root. " +
|
|
33
|
+
"PREREQUISITE for skyramp_init_workspace. " +
|
|
33
34
|
"Scans a repository and returns instructions for discovering all services, along with a scanToken. " +
|
|
34
35
|
"Follow the instructions to build the services array, then pass both to skyramp_init_workspace to create the workspace config.",
|
|
35
36
|
inputSchema: initScanWorkspaceSchema.shape,
|
|
36
37
|
}, async (params) => {
|
|
37
38
|
let errorResult;
|
|
38
|
-
const recordParams = {
|
|
39
|
+
const recordParams = {
|
|
40
|
+
workspacePath: params.workspacePath,
|
|
41
|
+
force: String(params.force || false),
|
|
42
|
+
};
|
|
39
43
|
try {
|
|
40
44
|
const manager = new WorkspaceConfigManager(params.workspacePath);
|
|
41
45
|
if ((await manager.exists()) && !params.force) {
|
|
@@ -70,7 +74,9 @@ export function registerInitScanWorkspaceTool(server) {
|
|
|
70
74
|
return errorResult;
|
|
71
75
|
}
|
|
72
76
|
finally {
|
|
73
|
-
AnalyticsService.pushMCPToolEvent(TOOL_NAME, errorResult, recordParams).catch((err) => {
|
|
77
|
+
AnalyticsService.pushMCPToolEvent(TOOL_NAME, errorResult, recordParams).catch((err) => {
|
|
78
|
+
logger.warning("Analytics event failed", { error: String(err) });
|
|
79
|
+
});
|
|
74
80
|
}
|
|
75
81
|
});
|
|
76
82
|
}
|
|
@@ -273,7 +273,9 @@ export function registerInitializeWorkspaceTool(server) {
|
|
|
273
273
|
return errorResult;
|
|
274
274
|
}
|
|
275
275
|
finally {
|
|
276
|
-
AnalyticsService.pushMCPToolEvent(TOOL_NAME, errorResult, recordParams).catch((err) => {
|
|
276
|
+
AnalyticsService.pushMCPToolEvent(TOOL_NAME, errorResult, recordParams).catch((err) => {
|
|
277
|
+
logger.warning("Analytics event failed", { error: String(err) });
|
|
278
|
+
});
|
|
277
279
|
}
|
|
278
280
|
});
|
|
279
281
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { TestType } from "./TestTypes.js";
|
|
2
|
-
import type { EnhanceType } from "
|
|
2
|
+
import type { EnhanceType } from "./EnhanceType.js";
|
|
3
3
|
/**
|
|
4
4
|
* Server-derived assertion-enhancement state. Lives in types/ (not beside
|
|
5
5
|
* assertion-state.ts) because AnalysisStateManager embeds AssertionRecord in
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -62,6 +62,6 @@ export interface ExternalTestRunRecord extends ParsedExternalRun {
|
|
|
62
62
|
mode: "confirm" | "verify";
|
|
63
63
|
/** ISO timestamp when the run completed. */
|
|
64
64
|
ranAt: string;
|
|
65
|
-
/** owner/repo this run targeted
|
|
66
|
-
repository
|
|
65
|
+
/** owner/repo this run targeted. */
|
|
66
|
+
repository: string;
|
|
67
67
|
}
|
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { ScenarioCategory } from "./TestRecommendation.js";
|
|
3
|
-
import { TestType } from "./TestTypes.js";
|
|
4
2
|
import type { ProjectType, DeploymentPattern } from "../utils/projectMetadata.js";
|
|
5
3
|
/**
|
|
6
4
|
* Repository Analysis Types
|
|
@@ -98,44 +96,6 @@ export declare enum ScenarioSource {
|
|
|
98
96
|
Documentation = "documentation",
|
|
99
97
|
AgentEnriched = "agent-enriched"
|
|
100
98
|
}
|
|
101
|
-
export interface PlanScenario {
|
|
102
|
-
scenarioName: string;
|
|
103
|
-
description: string;
|
|
104
|
-
category: ScenarioCategory;
|
|
105
|
-
priority: "high" | "medium" | "low";
|
|
106
|
-
steps: ScenarioStep[];
|
|
107
|
-
chainingKeys: string[];
|
|
108
|
-
requiresAuth: boolean;
|
|
109
|
-
estimatedComplexity: "simple" | "moderate" | "complex";
|
|
110
|
-
source?: ScenarioSource;
|
|
111
|
-
/** Only integration, contract, e2e, and ui are valid for drafted scenarios. */
|
|
112
|
-
testType?: TestType;
|
|
113
|
-
/** Internal marker for destructive sibling auth-boundary scenarios. */
|
|
114
|
-
isAttackSurfaceSecurityBoundary?: boolean;
|
|
115
|
-
/**
|
|
116
|
-
* The specific bug or formula this test is designed to catch.
|
|
117
|
-
* Written during scenario drafting when source code is read.
|
|
118
|
-
* Examples:
|
|
119
|
-
* "discount formula: total_amount = subtotal * (1 - discount_value / 100)"
|
|
120
|
-
* "items not recalculated after PATCH — total_amount stays at old value"
|
|
121
|
-
* "missing 404 guard on non-existent order_id"
|
|
122
|
-
* Used by the testbot to compute exact assertion values instead of null-checks.
|
|
123
|
-
*/
|
|
124
|
-
bugCatchingTarget?: string;
|
|
125
|
-
/**
|
|
126
|
-
* The endpoints this test is about, resolved one time by
|
|
127
|
-
* `resolveSubjectEndpoints` where the PR diff is available. Every dedup
|
|
128
|
-
* reader keys off this list rather than deriving a subject again from
|
|
129
|
-
* `steps[]` — SKYR-4214: two stages derived different subjects for one
|
|
130
|
-
* candidate, so whether a candidate deduped depended on whether the model
|
|
131
|
-
* happened to append a cleanup step.
|
|
132
|
-
*
|
|
133
|
-
* Absent on a scenario from an older state file; readers then fall back to
|
|
134
|
-
* the last-mutating-step rule. An EMPTY list means "no information" and must
|
|
135
|
-
* never be read as "covered".
|
|
136
|
-
*/
|
|
137
|
-
subjectEndpoints?: SubjectEndpoint[];
|
|
138
|
-
}
|
|
139
99
|
export interface BranchDiffContext {
|
|
140
100
|
currentBranch: string;
|
|
141
101
|
baseBranch: string;
|
|
@@ -17,6 +17,22 @@ import type { UtilsViolationKind } from "../utils/utils-verify/allow.js";
|
|
|
17
17
|
* The internal record that run state keeps between the verify pass and the report
|
|
18
18
|
* step (`ReuseRecord`) deliberately stays private to the derivation module — it is
|
|
19
19
|
* not part of this contract and must never reach a report.
|
|
20
|
+
*
|
|
21
|
+
* ABSENCE MEANS NOT MEASURED — the one invariant every member here obeys, and the
|
|
22
|
+
* one a producer is most likely to break. An optional member is omitted when this
|
|
23
|
+
* run did not establish its value, NEVER to mean `false`, `0` or "no": a `boolean?`
|
|
24
|
+
* left off says the check did not run, not that it failed, and a count left off says
|
|
25
|
+
* nothing was counted, not that the count was zero. So a producer that cannot
|
|
26
|
+
* measure something omits it rather than defaulting it, and a consumer renders an
|
|
27
|
+
* absent member as unknown rather than as a negative result.
|
|
28
|
+
*
|
|
29
|
+
* It is what lets a field be added without re-reading every row ever written, and
|
|
30
|
+
* what keeps a row from asserting more than the run established — the failure this
|
|
31
|
+
* whole shape exists to prevent, and the one that has recurred: a `reuse` of `null`
|
|
32
|
+
* over a test that demonstrably reused was read as "did not reuse" for four cohorts
|
|
33
|
+
* (see {@link ReuseOutcome.notDerived}). Where the distinction has to be visible in
|
|
34
|
+
* the report rather than inferred, the shape says so explicitly instead of relying
|
|
35
|
+
* on an omission.
|
|
20
36
|
*/
|
|
21
37
|
/** Which gate declined a POM member. */
|
|
22
38
|
export declare enum ReuseDeclinedBy {
|
|
@@ -158,8 +174,17 @@ export interface HelperReuseOutcome {
|
|
|
158
174
|
* row ships with this field set, so the fault is disclosed rather than delivered
|
|
159
175
|
* in silence — or not delivered at all. */
|
|
160
176
|
verificationFailures?: ReuseVerificationFailure[];
|
|
161
|
-
/** Pre-existing generated tests
|
|
162
|
-
*
|
|
177
|
+
/** Pre-existing generated tests rewired onto the utils file by this run, each with
|
|
178
|
+
* its recorded execution. Omitted when none.
|
|
179
|
+
*
|
|
180
|
+
* Normally these are the siblings THIS spec's reuse pass reached. A row may also
|
|
181
|
+
* name its OWN file: where two specs on one module were each edited by their own
|
|
182
|
+
* chain, each claimed the other as its retrofit, and a claim that cannot be true
|
|
183
|
+
* in both directions is reported against neither. The rewiring is still disclosed,
|
|
184
|
+
* on the row for the file it happened to.
|
|
185
|
+
*
|
|
186
|
+
* Across the rows of one report every file appears at most once, so the lists stay
|
|
187
|
+
* disjoint and summable. */
|
|
163
188
|
retrofits?: RetrofitOutcome[];
|
|
164
189
|
/** Whether the delivered test plus the helpers it imports and calls still hold at
|
|
165
190
|
* least as many assertions as when modularization was handed out. A measured
|
|
@@ -172,10 +197,58 @@ export interface HelperReuseOutcome {
|
|
|
172
197
|
/** Whether the `page.on('pageerror', …)` guard present at the modularization
|
|
173
198
|
* hand-out is still registered, in the test or in a shared helper it imports and
|
|
174
199
|
* calls. `true` when the hand-out had no guard to lose. Present whenever the
|
|
175
|
-
* baseline exists, absent otherwise —
|
|
176
|
-
* means "not measured", never "false". */
|
|
200
|
+
* baseline exists, absent otherwise — by the absence rule in this file's header. */
|
|
177
201
|
pageErrorGuardPreserved?: boolean;
|
|
178
202
|
}
|
|
203
|
+
/** One of the repository's own helpers, and the module it lives in. */
|
|
204
|
+
export interface InHouseHelperRef {
|
|
205
|
+
/** REPOSITORY-RELATIVE PATH (posix) of the customer's module. */
|
|
206
|
+
module: string;
|
|
207
|
+
helper: string;
|
|
208
|
+
}
|
|
209
|
+
/** A helper the run read in an in-house module and did not use. DECLARED by the
|
|
210
|
+
* agent — recorded, never measured. */
|
|
211
|
+
export interface InHouseDeclinedEntry {
|
|
212
|
+
file: string;
|
|
213
|
+
helper: string;
|
|
214
|
+
reason: string;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Reuse of the repository's OWN helper modules — files the customer wrote — by a
|
|
218
|
+
* browser test. Two kinds of field, and the report must label them apart:
|
|
219
|
+
*
|
|
220
|
+
* - MEASURED, re-derived from the delivered files at report time: which of the
|
|
221
|
+
* customer's modules the spec imports, which helpers resolve, what this run added
|
|
222
|
+
* to or widened in those modules (against HEAD), whether the additive gate ran.
|
|
223
|
+
* - DECLARED by the agent, recorded as testimony: the files its search read, and
|
|
224
|
+
* the helpers it read and declined with the reason. A file list the agent produced
|
|
225
|
+
* is not evidence the agent read everything, and the report says so.
|
|
226
|
+
*
|
|
227
|
+
* Absent when the spec imports no in-house module.
|
|
228
|
+
*/
|
|
229
|
+
export interface InHouseReuseOutcome {
|
|
230
|
+
/** MEASURED. Repository-relative paths of the customer's modules the spec imports. */
|
|
231
|
+
modules: string[];
|
|
232
|
+
/** MEASURED. Helpers the spec imports from those modules that resolve there. */
|
|
233
|
+
helpersUsed: string[];
|
|
234
|
+
/** MEASURED. Helpers this run added to a customer's module. */
|
|
235
|
+
helpersAdded: InHouseHelperRef[];
|
|
236
|
+
/** MEASURED. Existing helpers this run gave a defaulted parameter, and nothing else. */
|
|
237
|
+
helpersWidened: InHouseHelperRef[];
|
|
238
|
+
/** MEASURED. Whether every module was compared against HEAD. `false` is a gate
|
|
239
|
+
* that could not run, never one that found nothing. */
|
|
240
|
+
additiveGateRan: boolean;
|
|
241
|
+
/** DECLARED. The files the agent's search read. Omitted when nothing was declared. */
|
|
242
|
+
filesRead?: string[];
|
|
243
|
+
/** DECLARED. Helpers the agent read and did not use, with its reason for each. */
|
|
244
|
+
declined?: InHouseDeclinedEntry[];
|
|
245
|
+
/** The in-house verdict, present only when no `helpers` row carries one — a spec
|
|
246
|
+
* calling only in-house helpers has no Skyramp utils file, and "no utils file"
|
|
247
|
+
* must not read as "nothing verified". */
|
|
248
|
+
verification?: HelperVerificationOutcome;
|
|
249
|
+
/** See {@link HelperReuseOutcome.verificationFailures}; present only on `failed`. */
|
|
250
|
+
verificationFailures?: ReuseVerificationFailure[];
|
|
251
|
+
}
|
|
179
252
|
/**
|
|
180
253
|
* What lands in a report's `reuse` field for a generated test. Every member is
|
|
181
254
|
* optional: consumers must render from whatever subset is present, and omit the
|
|
@@ -231,6 +304,25 @@ export interface ReuseOutcome {
|
|
|
231
304
|
skipped?: ReuseSkippedEntry[];
|
|
232
305
|
/** Shared-helper (SkyrampUtils) reuse. See {@link HelperReuseOutcome}. */
|
|
233
306
|
helpers?: HelperReuseOutcome;
|
|
307
|
+
/** Reuse of the repository's own helper modules. See {@link InHouseReuseOutcome}. */
|
|
308
|
+
inHouse?: InHouseReuseOutcome;
|
|
309
|
+
/** Why no reuse record could be derived for this row, in a reader's words.
|
|
310
|
+
*
|
|
311
|
+
* Present only when nothing else here is: no `helpers`, no `inHouse`, no POM
|
|
312
|
+
* fields. It exists because their absence alone is ambiguous — a row with no
|
|
313
|
+
* reuse summary reads identically to a row whose test reused nothing, and
|
|
314
|
+
* consumers and reviewers have read it as the latter. A stated reason ("the
|
|
315
|
+
* delivered file could not be read", "no shared helper module was located for
|
|
316
|
+
* this test") separates the two.
|
|
317
|
+
*
|
|
318
|
+
* The one place the absence rule above is not enough, and so the one member that
|
|
319
|
+
* states what an omission cannot: every other member is absent when unmeasured,
|
|
320
|
+
* and this says WHY the whole row is.
|
|
321
|
+
*
|
|
322
|
+
* Never a verdict and never a fault: a run that legitimately had nothing to reuse
|
|
323
|
+
* says so here. Additive and optional like every other member, so a consumer that
|
|
324
|
+
* does not know it renders exactly what it rendered before. */
|
|
325
|
+
notDerived?: string;
|
|
234
326
|
/** Present — and only ever `true` — when generation handed off a modularize→reuse
|
|
235
327
|
* step for this test and no reuse pass was recorded for it. Since the execution
|
|
236
328
|
* checkpoint refuses to run such a test until reuse is called, this can only
|
|
@@ -15,6 +15,22 @@
|
|
|
15
15
|
* The internal record that run state keeps between the verify pass and the report
|
|
16
16
|
* step (`ReuseRecord`) deliberately stays private to the derivation module — it is
|
|
17
17
|
* not part of this contract and must never reach a report.
|
|
18
|
+
*
|
|
19
|
+
* ABSENCE MEANS NOT MEASURED — the one invariant every member here obeys, and the
|
|
20
|
+
* one a producer is most likely to break. An optional member is omitted when this
|
|
21
|
+
* run did not establish its value, NEVER to mean `false`, `0` or "no": a `boolean?`
|
|
22
|
+
* left off says the check did not run, not that it failed, and a count left off says
|
|
23
|
+
* nothing was counted, not that the count was zero. So a producer that cannot
|
|
24
|
+
* measure something omits it rather than defaulting it, and a consumer renders an
|
|
25
|
+
* absent member as unknown rather than as a negative result.
|
|
26
|
+
*
|
|
27
|
+
* It is what lets a field be added without re-reading every row ever written, and
|
|
28
|
+
* what keeps a row from asserting more than the run established — the failure this
|
|
29
|
+
* whole shape exists to prevent, and the one that has recurred: a `reuse` of `null`
|
|
30
|
+
* over a test that demonstrably reused was read as "did not reuse" for four cohorts
|
|
31
|
+
* (see {@link ReuseOutcome.notDerived}). Where the distinction has to be visible in
|
|
32
|
+
* the report rather than inferred, the shape says so explicitly instead of relying
|
|
33
|
+
* on an omission.
|
|
18
34
|
*/
|
|
19
35
|
/** Which gate declined a POM member. */
|
|
20
36
|
export var ReuseDeclinedBy;
|
|
@@ -37,7 +37,11 @@ export const UI_STEP_VERBS = [
|
|
|
37
37
|
/** A call to something with no HTTP verb — a GraphQL operation, a Thrift or gRPC
|
|
38
38
|
* method. The operation's own name goes in `path`, and in `routes.operation`. */
|
|
39
39
|
export const OPERATION_STEP_METHOD = "OPERATION";
|
|
40
|
-
export const STEP_METHODS = [
|
|
40
|
+
export const STEP_METHODS = [
|
|
41
|
+
...HTTP_STEP_METHODS,
|
|
42
|
+
...UI_STEP_VERBS,
|
|
43
|
+
OPERATION_STEP_METHOD,
|
|
44
|
+
];
|
|
41
45
|
const HTTP_BY_SPELLING = new Map(HTTP_STEP_METHODS.map((m) => [m.toLowerCase(), m]));
|
|
42
46
|
const UI_BY_SPELLING = new Map(UI_STEP_VERBS.map((v) => [v, v]));
|
|
43
47
|
/** One spelling of a method reduced to the canonical one, or `undefined` when it is
|
|
@@ -45,21 +49,27 @@ const UI_BY_SPELLING = new Map(UI_STEP_VERBS.map((v) => [v, v]));
|
|
|
45
49
|
* fixed on store, so `" post"` and `"Click"` are the same step as `POST` and
|
|
46
50
|
* `click`. Without the trim, one trailing space decided which checks ran. */
|
|
47
51
|
export function normalizeStepMethod(raw) {
|
|
48
|
-
const spelling = String(raw ?? "")
|
|
52
|
+
const spelling = String(raw ?? "")
|
|
53
|
+
.trim()
|
|
54
|
+
.toLowerCase();
|
|
49
55
|
if (!spelling)
|
|
50
56
|
return undefined;
|
|
51
|
-
return HTTP_BY_SPELLING.get(spelling) ??
|
|
57
|
+
return (HTTP_BY_SPELLING.get(spelling) ??
|
|
58
|
+
UI_BY_SPELLING.get(spelling) ??
|
|
59
|
+
(spelling === "operation" ? OPERATION_STEP_METHOD : undefined));
|
|
52
60
|
}
|
|
53
61
|
/** Whether a method names a page interaction. Read off the canonical spelling,
|
|
54
62
|
* so a step that never went through the schema is judged the same way. */
|
|
55
63
|
export function isUiStepVerb(raw) {
|
|
56
64
|
const method = normalizeStepMethod(raw);
|
|
57
|
-
return method !== undefined &&
|
|
65
|
+
return (method !== undefined &&
|
|
66
|
+
UI_STEP_VERBS.includes(method));
|
|
58
67
|
}
|
|
59
68
|
/** Whether a method names an HTTP request. */
|
|
60
69
|
export function isHttpStepMethod(raw) {
|
|
61
70
|
const method = normalizeStepMethod(raw);
|
|
62
|
-
return method !== undefined &&
|
|
71
|
+
return (method !== undefined &&
|
|
72
|
+
HTTP_STEP_METHODS.includes(method));
|
|
63
73
|
}
|
|
64
74
|
const STEP_METHOD_HELP = `must be an HTTP method (${HTTP_STEP_METHODS.join(", ")}), a page interaction ` +
|
|
65
75
|
`(${UI_STEP_VERBS.join(", ")}), or "${OPERATION_STEP_METHOD}" for a call with no HTTP verb — ` +
|
|
@@ -74,4 +84,8 @@ export const STEP_METHOD_DESCRIPTION = "What this step does to the system: an HT
|
|
|
74
84
|
* The field itself: normalised first, then checked, so a rejection is about the
|
|
75
85
|
* verb and never about its capitalisation.
|
|
76
86
|
*/
|
|
77
|
-
export const stepMethodSchema = z.preprocess((value) =>
|
|
87
|
+
export const stepMethodSchema = z.preprocess((value) => typeof value === "string"
|
|
88
|
+
? (normalizeStepMethod(value) ?? value.trim())
|
|
89
|
+
: value, z.enum(STEP_METHODS, {
|
|
90
|
+
errorMap: () => ({ message: `method ${STEP_METHOD_HELP}` }),
|
|
91
|
+
}));
|
|
@@ -59,6 +59,13 @@ export interface MaintenanceActionCore {
|
|
|
59
59
|
* without this a downstream stage cannot tell a regeneration that rewrote a file from
|
|
60
60
|
* one that only advised it — and maintenance coverage would credit the advice. */
|
|
61
61
|
reportOnly?: boolean;
|
|
62
|
+
/** Computed during instruction building — the path this UPDATE renames the spec TO,
|
|
63
|
+
* when the endpoint rename implies one. Part of the core shape because the report
|
|
64
|
+
* stage needs it: the rename lands before the test is executed, so the run is
|
|
65
|
+
* recorded under THIS path while `testFilePath` still holds the old name, and a
|
|
66
|
+
* stage that joins runs to files by `testFilePath` alone looks for a file that is
|
|
67
|
+
* no longer there. */
|
|
68
|
+
_suggestedNewFile?: string;
|
|
62
69
|
}
|
|
63
70
|
/** Normalized internal recommendation built from LLM-supplied args.recommendations. */
|
|
64
71
|
export interface DriftRecommendation extends MaintenanceActionCore {
|
|
@@ -78,8 +85,9 @@ export interface DriftRecommendation extends MaintenanceActionCore {
|
|
|
78
85
|
anchor: string;
|
|
79
86
|
change?: string;
|
|
80
87
|
}>;
|
|
81
|
-
/** Computed during instruction building —
|
|
82
|
-
|
|
88
|
+
/** Computed during instruction building — the modularize → reuse steps this UPDATE's
|
|
89
|
+
* file owes, when its language and test type are a modularize-first target. */
|
|
90
|
+
_postEditSteps?: string;
|
|
83
91
|
/** REGENERATE/DELETE on an external (user-authored) test is report-only: the verdict is
|
|
84
92
|
* recorded and rendered in the report so the developer sees the recommendation, but the
|
|
85
93
|
* file is never touched (the apply loops skip reportOnly entries). Lets the report keep
|