@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
|
@@ -11,7 +11,12 @@ export function parseDiffEntries(rawDiff) {
|
|
|
11
11
|
// An unreadable header still ENDS the previous block, or its `/dev/null`
|
|
12
12
|
// and `@@` lines are credited to the entry before it.
|
|
13
13
|
if (path === undefined) {
|
|
14
|
-
entries.push({
|
|
14
|
+
entries.push({
|
|
15
|
+
path: "",
|
|
16
|
+
isNew: false,
|
|
17
|
+
isDeleted: false,
|
|
18
|
+
hasHunks: false,
|
|
19
|
+
});
|
|
15
20
|
continue;
|
|
16
21
|
}
|
|
17
22
|
entries.push({ path, isNew: false, isDeleted: false, hasHunks: false });
|
|
@@ -29,7 +34,8 @@ export function parseDiffEntries(rawDiff) {
|
|
|
29
34
|
// A binary block has no `--- `/`+++ ` lines; git folds both into this one.
|
|
30
35
|
else if (line.startsWith("Binary files /dev/null and "))
|
|
31
36
|
current.isNew = true;
|
|
32
|
-
else if (line.startsWith("Binary files ") &&
|
|
37
|
+
else if (line.startsWith("Binary files ") &&
|
|
38
|
+
line.endsWith(" and /dev/null differ"))
|
|
33
39
|
current.isDeleted = true;
|
|
34
40
|
// Unquoted like the new-path side, or one rename's two halves disagree.
|
|
35
41
|
else if (line.startsWith("rename from "))
|
|
@@ -47,7 +53,9 @@ export function diffBlocksByPath(rawDiff) {
|
|
|
47
53
|
// ANY `diff ` header ends a block, not just `diff --git`: a combined diff
|
|
48
54
|
// writes `diff --cc`, and its lines would otherwise append to the file before.
|
|
49
55
|
if (line.startsWith("diff ")) {
|
|
50
|
-
const path = line.startsWith("diff --git ")
|
|
56
|
+
const path = line.startsWith("diff --git ")
|
|
57
|
+
? parseDiffHeaderPath(line)
|
|
58
|
+
: undefined;
|
|
51
59
|
if (path === undefined) {
|
|
52
60
|
current = undefined;
|
|
53
61
|
continue;
|
|
@@ -91,13 +99,21 @@ function parseDiffHeaderPath(line) {
|
|
|
91
99
|
* really contains a backslash. */
|
|
92
100
|
export function unquoteIfQuoted(value) {
|
|
93
101
|
const trimmed = value.trim();
|
|
94
|
-
return trimmed.startsWith('"') && trimmed.endsWith('"')
|
|
102
|
+
return trimmed.startsWith('"') && trimmed.endsWith('"')
|
|
103
|
+
? unquoteGitPath(trimmed)
|
|
104
|
+
: trimmed;
|
|
95
105
|
}
|
|
96
106
|
/** Undo git's C-style quoting. A non-ASCII character arrives as one `\NNN` escape
|
|
97
107
|
* per UTF-8 BYTE, so the bytes are decoded once at the end. */
|
|
98
108
|
export function unquoteGitPath(value) {
|
|
99
109
|
const trimmed = value.startsWith('"') && value.endsWith('"') ? value.slice(1, -1) : value;
|
|
100
|
-
const simple = {
|
|
110
|
+
const simple = {
|
|
111
|
+
n: "\n",
|
|
112
|
+
t: "\t",
|
|
113
|
+
r: "\r",
|
|
114
|
+
'"': '"',
|
|
115
|
+
"\\": "\\",
|
|
116
|
+
};
|
|
101
117
|
const bytes = [];
|
|
102
118
|
for (let i = 0; i < trimmed.length; i++) {
|
|
103
119
|
if (trimmed[i] !== "\\") {
|
|
@@ -105,7 +121,9 @@ export function unquoteGitPath(value) {
|
|
|
105
121
|
continue;
|
|
106
122
|
}
|
|
107
123
|
const next = trimmed[++i];
|
|
108
|
-
if (next !== undefined &&
|
|
124
|
+
if (next !== undefined &&
|
|
125
|
+
/[0-7]/.test(next) &&
|
|
126
|
+
/^[0-7]{3}$/.test(trimmed.slice(i, i + 3))) {
|
|
109
127
|
bytes.push(parseInt(trimmed.slice(i, i + 3), 8));
|
|
110
128
|
i += 2;
|
|
111
129
|
continue;
|
|
@@ -126,10 +144,14 @@ export function parseNewAndDeletedFiles(rawDiff) {
|
|
|
126
144
|
.filter((path) => path !== undefined);
|
|
127
145
|
// An unreadable header yields `""`, which would read as a file nobody added.
|
|
128
146
|
return {
|
|
129
|
-
newFiles: entries
|
|
147
|
+
newFiles: entries
|
|
148
|
+
.filter((entry) => entry.isNew && entry.path)
|
|
149
|
+
.map((entry) => entry.path),
|
|
130
150
|
// Keyed by the NEW path, so the OLD one is added here: it moved, not died.
|
|
131
151
|
deletedFiles: [
|
|
132
|
-
...entries
|
|
152
|
+
...entries
|
|
153
|
+
.filter((entry) => entry.isDeleted && entry.path)
|
|
154
|
+
.map((entry) => entry.path),
|
|
133
155
|
...renamedFromPaths,
|
|
134
156
|
].filter(Boolean),
|
|
135
157
|
};
|
|
@@ -172,13 +194,20 @@ function addedPaths(raw) {
|
|
|
172
194
|
* failure. */
|
|
173
195
|
async function tryNameStatus(git, ref, includeUncommitted) {
|
|
174
196
|
try {
|
|
175
|
-
const raw = await git.diff([
|
|
197
|
+
const raw = await git.diff([
|
|
198
|
+
includeUncommitted ? ref : `${ref}...HEAD`,
|
|
199
|
+
"--name-status",
|
|
200
|
+
]);
|
|
176
201
|
const files = parseNameStatus(raw);
|
|
177
202
|
return {
|
|
178
|
-
changedFiles: files
|
|
203
|
+
changedFiles: files
|
|
204
|
+
.filter((file) => !file.deleted)
|
|
205
|
+
.map((file) => file.path),
|
|
179
206
|
// `--name-status` marks an added path `A`; the header parser never runs here.
|
|
180
207
|
newFiles: addedPaths(raw),
|
|
181
|
-
deletedFiles: files
|
|
208
|
+
deletedFiles: files
|
|
209
|
+
.filter((file) => file.deleted)
|
|
210
|
+
.map((file) => file.path),
|
|
182
211
|
};
|
|
183
212
|
}
|
|
184
213
|
catch {
|
|
@@ -342,7 +371,13 @@ namesOnly = false) {
|
|
|
342
371
|
baseBranch: ref,
|
|
343
372
|
changedFiles: result.changedFiles.length,
|
|
344
373
|
});
|
|
345
|
-
return {
|
|
374
|
+
return {
|
|
375
|
+
currentBranch,
|
|
376
|
+
baseBranch: ref,
|
|
377
|
+
diffContent: "",
|
|
378
|
+
diffStat: "",
|
|
379
|
+
...result,
|
|
380
|
+
};
|
|
346
381
|
}
|
|
347
382
|
logger.debug(`Name-status against ${ref} failed, trying next candidate`);
|
|
348
383
|
}
|
|
@@ -12,6 +12,8 @@ export function isPlainObject(value) {
|
|
|
12
12
|
* those reads as equal. */
|
|
13
13
|
export function canonicalJson(value) {
|
|
14
14
|
return JSON.stringify(value, (_key, entry) => isPlainObject(entry)
|
|
15
|
-
? Object.fromEntries(Object.keys(entry)
|
|
15
|
+
? Object.fromEntries(Object.keys(entry)
|
|
16
|
+
.sort()
|
|
17
|
+
.map((key) => [key, entry[key]]))
|
|
16
18
|
: entry);
|
|
17
19
|
}
|
|
@@ -20,8 +20,19 @@ import { collectFiles } from "./fileWalk.js";
|
|
|
20
20
|
const MAX_CANDIDATE_FILES = 200;
|
|
21
21
|
const MAX_WALK_DEPTH = 10;
|
|
22
22
|
const SKIP_DIRS = new Set([
|
|
23
|
-
"build",
|
|
24
|
-
"
|
|
23
|
+
"build",
|
|
24
|
+
".dart_tool",
|
|
25
|
+
".git",
|
|
26
|
+
".idea",
|
|
27
|
+
"android",
|
|
28
|
+
"ios",
|
|
29
|
+
"macos",
|
|
30
|
+
"linux",
|
|
31
|
+
"windows",
|
|
32
|
+
"web",
|
|
33
|
+
"node_modules",
|
|
34
|
+
"test",
|
|
35
|
+
".pub-cache",
|
|
25
36
|
]);
|
|
26
37
|
/**
|
|
27
38
|
* A `GoRoute(` through its `path:` string literal. The lazy `[\s\S]*?` scans
|
|
@@ -36,11 +47,29 @@ const SCREEN_WIDGET_REGEX = /\b([A-Z][A-Za-z0-9_]*)\s*\(/g;
|
|
|
36
47
|
const IMPORT_REGEX = /^\s*import\s+['"]([^'"]+)['"]/gm;
|
|
37
48
|
/** Identifiers that are never a screen: Flutter and go_router internals. */
|
|
38
49
|
const NON_SCREEN_IDENTIFIERS = new Set([
|
|
39
|
-
"BuildContext",
|
|
40
|
-
"
|
|
41
|
-
"
|
|
42
|
-
"
|
|
43
|
-
"
|
|
50
|
+
"BuildContext",
|
|
51
|
+
"GoRouterState",
|
|
52
|
+
"GoRoute",
|
|
53
|
+
"GoRouter",
|
|
54
|
+
"ShellRoute",
|
|
55
|
+
"StatefulShellRoute",
|
|
56
|
+
"ShellRouteBase",
|
|
57
|
+
"MaterialPage",
|
|
58
|
+
"CupertinoPage",
|
|
59
|
+
"CustomTransitionPage",
|
|
60
|
+
"FadeTransitionPage",
|
|
61
|
+
"Page",
|
|
62
|
+
"Widget",
|
|
63
|
+
"Key",
|
|
64
|
+
"ValueKey",
|
|
65
|
+
"LocalKey",
|
|
66
|
+
"Future",
|
|
67
|
+
"Animation",
|
|
68
|
+
"Duration",
|
|
69
|
+
"MaterialApp",
|
|
70
|
+
"CupertinoApp",
|
|
71
|
+
"Scaffold",
|
|
72
|
+
"AppBar",
|
|
44
73
|
]);
|
|
45
74
|
export function extractDartRoutes(repositoryPath) {
|
|
46
75
|
const routes = [];
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export declare const MAX_FIX_ATTEMPTS_ENV = "SKYRAMP_MAX_FIX_ATTEMPTS";
|
|
2
|
+
export declare const DEFAULT_MAX_FIX_ATTEMPTS = 3;
|
|
3
|
+
export declare const MIN_MAX_FIX_ATTEMPTS = 1;
|
|
4
|
+
export declare const MAX_MAX_FIX_ATTEMPTS = 10;
|
|
5
|
+
/**
|
|
6
|
+
* Parse a prompt or resource argument for the cap. A number, or a string that is
|
|
7
|
+
* a whole decimal integer, in range, is returned; anything else — another type,
|
|
8
|
+
* `8abc`, `1e1`, `0`, `12` — reads as unset, so both entry points fall through to
|
|
9
|
+
* the environment and the default the same way instead of one of them rejecting
|
|
10
|
+
* the call. Range is applied here too, so a zod `.min/.max` on the result never
|
|
11
|
+
* sees a value it would refuse.
|
|
12
|
+
*/
|
|
13
|
+
export declare function parseMaxFixAttemptsArg(raw: unknown, source?: string): number | undefined;
|
|
14
|
+
/**
|
|
15
|
+
* Resolve the cap from an explicit request, the environment, and the default.
|
|
16
|
+
* Pure apart from the warning log: `env` is injectable for tests and defaults
|
|
17
|
+
* to `process.env`.
|
|
18
|
+
*/
|
|
19
|
+
export declare function resolveMaxFixAttempts(requested?: number, env?: NodeJS.ProcessEnv): number;
|
|
20
|
+
export declare function setMaxFixAttempts(value: number): void;
|
|
21
|
+
/** The cap the current prompt render resolved, else the environment, else the
|
|
22
|
+
* default. Only a seed for the per-run pin: the execute tool reads the pinned
|
|
23
|
+
* value first and enforces nothing when there is no run state at all. */
|
|
24
|
+
export declare function getMaxFixAttempts(): number;
|
|
25
|
+
/** Test seam. */
|
|
26
|
+
export declare function resetMaxFixAttemptsForTests(): void;
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The per-file execution attempt cap for the testbot fix-and-rerun loop
|
|
3
|
+
* (SKYR-4460).
|
|
4
|
+
*
|
|
5
|
+
* One number, resolved in one place: how many final-phase ("after")
|
|
6
|
+
* `skyramp_execute_test` runs a single test file may receive — the first run
|
|
7
|
+
* plus the fix-and-rerun iterations that follow a fixable failure.
|
|
8
|
+
*
|
|
9
|
+
* How the number travels: the testbot prompt resolves it (URI/prompt argument,
|
|
10
|
+
* then `SKYRAMP_MAX_FIX_ATTEMPTS`, then the default), states it in the rendered
|
|
11
|
+
* text, and records it here for the process. The first `skyramp_execute_test`
|
|
12
|
+
* call of the run with run state (the `stateFile` argument, else the run's own
|
|
13
|
+
* file) pins the recorded value at the state ROOT (`maxFixAttempts`, run-wide
|
|
14
|
+
* across every repository section, carried through later root rewrites), and
|
|
15
|
+
* every later call enforces the pinned value — so a later prompt render cannot
|
|
16
|
+
* change a run's cap, and the tool always enforces the number its prompt
|
|
17
|
+
* stated. Only a call with no run at all has nothing to count against and
|
|
18
|
+
* enforces nothing.
|
|
19
|
+
*
|
|
20
|
+
* Precedence: the value the caller passed, then the environment, then the
|
|
21
|
+
* default. A value outside [MIN, MAX] or not a whole number is treated as unset
|
|
22
|
+
* at each step, and a non-empty rejected spelling is logged so an operator who
|
|
23
|
+
* set `0` or `20` can see it was not applied.
|
|
24
|
+
*/
|
|
25
|
+
import { logger } from "./logger.js";
|
|
26
|
+
export const MAX_FIX_ATTEMPTS_ENV = "SKYRAMP_MAX_FIX_ATTEMPTS";
|
|
27
|
+
export const DEFAULT_MAX_FIX_ATTEMPTS = 3;
|
|
28
|
+
export const MIN_MAX_FIX_ATTEMPTS = 1;
|
|
29
|
+
export const MAX_MAX_FIX_ATTEMPTS = 10;
|
|
30
|
+
function inRange(value) {
|
|
31
|
+
return (Number.isInteger(value) &&
|
|
32
|
+
value >= MIN_MAX_FIX_ATTEMPTS &&
|
|
33
|
+
value <= MAX_MAX_FIX_ATTEMPTS);
|
|
34
|
+
}
|
|
35
|
+
function warnIgnored(source, raw) {
|
|
36
|
+
logger.warning("Ignoring unusable maxFixAttempts value", {
|
|
37
|
+
source,
|
|
38
|
+
raw: String(raw),
|
|
39
|
+
accepted: `a whole number from ${MIN_MAX_FIX_ATTEMPTS} to ${MAX_MAX_FIX_ATTEMPTS}`,
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
/** Parse a string spelling: the whole string must be a plain decimal integer.
|
|
43
|
+
* `parseInt` would read `8abc` as 8 and `1e3` as 1, so it is not used. */
|
|
44
|
+
function parseSpelling(raw) {
|
|
45
|
+
const text = raw.trim();
|
|
46
|
+
if (!/^\+?(?:0|[1-9]\d*)$/.test(text))
|
|
47
|
+
return undefined;
|
|
48
|
+
const value = Number(text);
|
|
49
|
+
return inRange(value) ? value : undefined;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Parse a prompt or resource argument for the cap. A number, or a string that is
|
|
53
|
+
* a whole decimal integer, in range, is returned; anything else — another type,
|
|
54
|
+
* `8abc`, `1e1`, `0`, `12` — reads as unset, so both entry points fall through to
|
|
55
|
+
* the environment and the default the same way instead of one of them rejecting
|
|
56
|
+
* the call. Range is applied here too, so a zod `.min/.max` on the result never
|
|
57
|
+
* sees a value it would refuse.
|
|
58
|
+
*/
|
|
59
|
+
export function parseMaxFixAttemptsArg(raw, source = "argument") {
|
|
60
|
+
if (typeof raw === "number") {
|
|
61
|
+
if (inRange(raw))
|
|
62
|
+
return raw;
|
|
63
|
+
warnIgnored(source, raw);
|
|
64
|
+
return undefined;
|
|
65
|
+
}
|
|
66
|
+
if (typeof raw === "string") {
|
|
67
|
+
if (raw.trim() === "")
|
|
68
|
+
return undefined;
|
|
69
|
+
const value = parseSpelling(raw);
|
|
70
|
+
if (value === undefined)
|
|
71
|
+
warnIgnored(source, raw);
|
|
72
|
+
return value;
|
|
73
|
+
}
|
|
74
|
+
return undefined;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Resolve the cap from an explicit request, the environment, and the default.
|
|
78
|
+
* Pure apart from the warning log: `env` is injectable for tests and defaults
|
|
79
|
+
* to `process.env`.
|
|
80
|
+
*/
|
|
81
|
+
export function resolveMaxFixAttempts(requested, env = process.env) {
|
|
82
|
+
if (requested !== undefined) {
|
|
83
|
+
if (inRange(requested))
|
|
84
|
+
return requested;
|
|
85
|
+
warnIgnored("argument", requested);
|
|
86
|
+
}
|
|
87
|
+
const fromEnv = parseMaxFixAttemptsArg(env[MAX_FIX_ATTEMPTS_ENV], MAX_FIX_ATTEMPTS_ENV);
|
|
88
|
+
if (fromEnv !== undefined)
|
|
89
|
+
return fromEnv;
|
|
90
|
+
return DEFAULT_MAX_FIX_ATTEMPTS;
|
|
91
|
+
}
|
|
92
|
+
// Process-wide: what the most recent prompt render resolved. It seeds the pin a
|
|
93
|
+
// run's first execute call writes into the state file; after that the state
|
|
94
|
+
// wins (see the header). Set, not set-if-unset, for the same reason
|
|
95
|
+
// setPrimaryRepository is: one server can render a second run.
|
|
96
|
+
let _maxFixAttempts;
|
|
97
|
+
export function setMaxFixAttempts(value) {
|
|
98
|
+
_maxFixAttempts = resolveMaxFixAttempts(value);
|
|
99
|
+
}
|
|
100
|
+
/** The cap the current prompt render resolved, else the environment, else the
|
|
101
|
+
* default. Only a seed for the per-run pin: the execute tool reads the pinned
|
|
102
|
+
* value first and enforces nothing when there is no run state at all. */
|
|
103
|
+
export function getMaxFixAttempts() {
|
|
104
|
+
return _maxFixAttempts ?? resolveMaxFixAttempts();
|
|
105
|
+
}
|
|
106
|
+
/** Test seam. */
|
|
107
|
+
export function resetMaxFixAttemptsForTests() {
|
|
108
|
+
_maxFixAttempts = undefined;
|
|
109
|
+
}
|
|
@@ -55,10 +55,29 @@ const GET_BY_TEST_ID_RE = /getByTestId\(\s*[`'"]([A-Za-z][\w:-]{2,})[`'"]/gi;
|
|
|
55
55
|
*/
|
|
56
56
|
const GENERIC_DATA_ATTR_RE = /\b(data-[a-z][a-z0-9]*(?:-[a-z0-9]+)*)\s*=\s*\{?\s*[`'"]([A-Za-z][\w:-]{2,})[`'"]/gi;
|
|
57
57
|
const STATE_DATA_ATTRS = new Set([
|
|
58
|
-
"data-state",
|
|
59
|
-
"data-
|
|
60
|
-
"data-
|
|
61
|
-
"data-
|
|
58
|
+
"data-state",
|
|
59
|
+
"data-theme",
|
|
60
|
+
"data-orientation",
|
|
61
|
+
"data-side",
|
|
62
|
+
"data-align",
|
|
63
|
+
"data-value",
|
|
64
|
+
"data-index",
|
|
65
|
+
"data-slot",
|
|
66
|
+
"data-disabled",
|
|
67
|
+
"data-checked",
|
|
68
|
+
"data-active",
|
|
69
|
+
"data-open",
|
|
70
|
+
"data-loading",
|
|
71
|
+
"data-size",
|
|
72
|
+
"data-variant",
|
|
73
|
+
"data-selected",
|
|
74
|
+
"data-highlighted",
|
|
75
|
+
"data-focus",
|
|
76
|
+
"data-hover",
|
|
77
|
+
"data-pressed",
|
|
78
|
+
"data-expanded",
|
|
79
|
+
"data-placeholder",
|
|
80
|
+
"data-status",
|
|
62
81
|
]);
|
|
63
82
|
/**
|
|
64
83
|
* Identifying `data-*` attributes on one source line: the trusted test-facing set (any
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { TestType } from "../types/TestTypes.js";
|
|
2
|
+
/**
|
|
3
|
+
* Record a file a generation tool just wrote, keyed by canonical path.
|
|
4
|
+
*
|
|
5
|
+
* The generator is the only place the written paths are known. Without this the
|
|
6
|
+
* report has to fall back to the agent's own `fileName`, which is a BASENAME, so
|
|
7
|
+
* two specs of one name in different directories answer for each other. A path
|
|
8
|
+
* recorded here is the server's own, and it is the same key
|
|
9
|
+
* `persistTestExecutionResult` writes an execution under — so "was this file
|
|
10
|
+
* run" is a lookup rather than a match.
|
|
11
|
+
*
|
|
12
|
+
* Deliberately not `assertionOutcomes`, which also holds a per-file record: that
|
|
13
|
+
* one is written only when assertion enhancement is on for the test type, so it
|
|
14
|
+
* is not a list of what was generated.
|
|
15
|
+
*
|
|
16
|
+
* Best-effort, like the assertion baseline beside it: no run state means no
|
|
17
|
+
* record, and the report falls back to the checks that read the report itself.
|
|
18
|
+
*/
|
|
19
|
+
export declare function persistGeneratedTest(testFile: string, testType: TestType, explicitStateFile?: string): Promise<void>;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { StateManager, resolveRunStatePath } from "./AnalysisStateManager.js";
|
|
2
|
+
import { canonicalTestPath } from "../tools/code-refactor/assertion-state.js";
|
|
3
|
+
import { runSerialized } from "./runSerialized.js";
|
|
4
|
+
import { stateFileKey } from "./testExecutionRecord.js";
|
|
5
|
+
import { logger } from "./logger.js";
|
|
6
|
+
/**
|
|
7
|
+
* Record a file a generation tool just wrote, keyed by canonical path.
|
|
8
|
+
*
|
|
9
|
+
* The generator is the only place the written paths are known. Without this the
|
|
10
|
+
* report has to fall back to the agent's own `fileName`, which is a BASENAME, so
|
|
11
|
+
* two specs of one name in different directories answer for each other. A path
|
|
12
|
+
* recorded here is the server's own, and it is the same key
|
|
13
|
+
* `persistTestExecutionResult` writes an execution under — so "was this file
|
|
14
|
+
* run" is a lookup rather than a match.
|
|
15
|
+
*
|
|
16
|
+
* Deliberately not `assertionOutcomes`, which also holds a per-file record: that
|
|
17
|
+
* one is written only when assertion enhancement is on for the test type, so it
|
|
18
|
+
* is not a list of what was generated.
|
|
19
|
+
*
|
|
20
|
+
* Best-effort, like the assertion baseline beside it: no run state means no
|
|
21
|
+
* record, and the report falls back to the checks that read the report itself.
|
|
22
|
+
*/
|
|
23
|
+
export async function persistGeneratedTest(testFile, testType, explicitStateFile) {
|
|
24
|
+
const stateFile = resolveRunStatePath(explicitStateFile);
|
|
25
|
+
if (!stateFile)
|
|
26
|
+
return;
|
|
27
|
+
try {
|
|
28
|
+
const manager = StateManager.fromStatePath(stateFile);
|
|
29
|
+
// One queue per state FILE, shared with every other tool that writes it.
|
|
30
|
+
// The testbot prompt asks the independent generation tools to run in
|
|
31
|
+
// parallel, and each call reads the whole payload and writes it back:
|
|
32
|
+
// unserialized, two generators read the same `generatedTests` and the
|
|
33
|
+
// second write drops the first one's key, which loses a file the report is
|
|
34
|
+
// supposed to account for. Keyed on the file rather than on the spelling,
|
|
35
|
+
// so a run pointed at the state file by a different path still waits.
|
|
36
|
+
await runSerialized(stateFileKey(stateFile), async () => {
|
|
37
|
+
// Read INSIDE the critical section: a snapshot taken before the queue
|
|
38
|
+
// would be the stale one this serialization exists to prevent.
|
|
39
|
+
const data = await manager.readData();
|
|
40
|
+
if (!data)
|
|
41
|
+
return;
|
|
42
|
+
const key = canonicalTestPath(testFile);
|
|
43
|
+
const record = {
|
|
44
|
+
testType,
|
|
45
|
+
generatedAt: Date.now(),
|
|
46
|
+
};
|
|
47
|
+
// Last write wins for one path: a file written twice is still one file
|
|
48
|
+
// owing one run, and the later timestamp is the one a run has to beat.
|
|
49
|
+
await manager.appendData({
|
|
50
|
+
...data,
|
|
51
|
+
generatedTests: { ...data.generatedTests, [key]: record },
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
logger.warning("Could not record a generated test file in run state", {
|
|
57
|
+
testFile,
|
|
58
|
+
detail: error instanceof Error ? error.message : String(error),
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
}
|
|
@@ -37,8 +37,13 @@ export function detectGitRoot(filePath) {
|
|
|
37
37
|
if (!path.isAbsolute(filePath))
|
|
38
38
|
return undefined;
|
|
39
39
|
try {
|
|
40
|
-
const dir = fs.statSync(filePath).isDirectory()
|
|
41
|
-
|
|
40
|
+
const dir = fs.statSync(filePath).isDirectory()
|
|
41
|
+
? filePath
|
|
42
|
+
: path.dirname(filePath);
|
|
43
|
+
const stdout = execFileSync("git", ["rev-parse", "--show-toplevel"], {
|
|
44
|
+
cwd: dir,
|
|
45
|
+
encoding: "utf8",
|
|
46
|
+
});
|
|
42
47
|
return stdout.trim() || undefined;
|
|
43
48
|
}
|
|
44
49
|
catch {
|
package/build/utils/initAgent.js
CHANGED
|
@@ -7,9 +7,21 @@ import { EXECUTOR_DOCKER_IMAGE, WORKER_DOCKER_IMAGE } from "./versions.js";
|
|
|
7
7
|
import { dockerImageExistsLocally, pullDockerImage } from "./docker.js";
|
|
8
8
|
// Global skill discovery paths (resolved relative to os.homedir()).
|
|
9
9
|
const SKILL_INSTALL_PATHS = [
|
|
10
|
-
{
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
{
|
|
11
|
+
relPath: path.join(".claude", "skills", "skyramp", "SKILLS.md"),
|
|
12
|
+
description: "Claude Code native skill (~/.claude)",
|
|
13
|
+
userLevel: true,
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
relPath: path.join(".cursor", "skills", "skyramp", "SKILLS.md"),
|
|
17
|
+
description: "Cursor native skill (~/.cursor)",
|
|
18
|
+
userLevel: true,
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
relPath: path.join(".github", "skills", "skyramp.md"),
|
|
22
|
+
description: "Copilot global skill (~/.github/skills)",
|
|
23
|
+
userLevel: true,
|
|
24
|
+
},
|
|
13
25
|
];
|
|
14
26
|
async function pathExists(filePath) {
|
|
15
27
|
try {
|
|
@@ -46,10 +58,15 @@ export async function ensureSkyrampMdInstalled() {
|
|
|
46
58
|
if (existing === SKYRAMP_MD_CONTENT)
|
|
47
59
|
continue;
|
|
48
60
|
await fs.writeFile(targetPath, SKYRAMP_MD_CONTENT);
|
|
49
|
-
logger.info(existing
|
|
61
|
+
logger.info(existing
|
|
62
|
+
? `Refreshed Skyramp skill file (${description})`
|
|
63
|
+
: `Installed Skyramp skill file (${description})`, { targetPath });
|
|
50
64
|
}
|
|
51
65
|
catch (err) {
|
|
52
|
-
logger.error(`Failed to install Skyramp skill file (${description})`, {
|
|
66
|
+
logger.error(`Failed to install Skyramp skill file (${description})`, {
|
|
67
|
+
targetPath,
|
|
68
|
+
error: err,
|
|
69
|
+
});
|
|
53
70
|
}
|
|
54
71
|
}
|
|
55
72
|
}
|
|
@@ -89,7 +106,10 @@ export async function initCheck() {
|
|
|
89
106
|
]);
|
|
90
107
|
const pulls = [];
|
|
91
108
|
if (!hasExecutor) {
|
|
92
|
-
logger.info("Pulling missing executor image", {
|
|
109
|
+
logger.info("Pulling missing executor image", {
|
|
110
|
+
image: EXECUTOR_DOCKER_IMAGE,
|
|
111
|
+
platform: "linux/amd64",
|
|
112
|
+
});
|
|
93
113
|
pulls.push(pullDockerImage(EXECUTOR_DOCKER_IMAGE, "linux/amd64"));
|
|
94
114
|
}
|
|
95
115
|
if (!hasWorker) {
|
|
@@ -1,28 +1,45 @@
|
|
|
1
|
+
const pythonDependencyGuidance = `
|
|
2
|
+
Persist each missing approved package in the development manifest:
|
|
3
|
+
- Use \`uv add --dev <package>\` for a project using \`[dependency-groups].dev\`.
|
|
4
|
+
- Use \`poetry add --group dev <package>\` for a Poetry project.
|
|
5
|
+
- Add it to \`requirements-dev.txt\`, then run \`python3 -m pip install -r requirements-dev.txt\`.
|
|
6
|
+
If no Python manifest exists at the test project root, create requirements-dev.txt and seed it with the missing approved package. Do not create it alongside pyproject.toml.
|
|
7
|
+
`;
|
|
8
|
+
const javascriptDependencyGuidance = `
|
|
9
|
+
Inspect package.json before installing anything.
|
|
10
|
+
- If a required package is already declared, install from the existing manifest without changing its version.
|
|
11
|
+
- If no JavaScript/TypeScript manifest exists at the test project root, create package.json with only \`{ "devDependencies": {} }\` before adding the missing approved package.
|
|
12
|
+
- If an approved package is missing, add it as a devDependency with the repository's package manager. The npm equivalent is \`npm install --save-dev --legacy-peer-deps <package>\`.
|
|
13
|
+
- Never add, upgrade, or downgrade Playwright or @playwright/test when either is already declared.
|
|
14
|
+
`;
|
|
15
|
+
const javaDependencyGuidance = `
|
|
16
|
+
Inspect existing Java build signals before adding a dependency. Use an existing manifest when present.
|
|
17
|
+
- For Maven wrapper or settings signals, create a minimal pom.xml only when it is absent, and add approved dependencies with <scope>test</scope>.
|
|
18
|
+
- For Gradle wrapper or settings signals, create the matching build.gradle or build.gradle.kts only when it is absent, and use testImplementation or testRuntimeOnly.
|
|
19
|
+
- Do not introduce a competing build system. If neither build system is identified, keep the standalone runner instead of inventing one.
|
|
20
|
+
`;
|
|
21
|
+
function getJavascriptSteps(extension) {
|
|
22
|
+
return `${javascriptDependencyGuidance}
|
|
23
|
+
# Execute the test file
|
|
24
|
+
npx playwright test <test-file>.spec.${extension} --reporter=list
|
|
25
|
+
`;
|
|
26
|
+
}
|
|
1
27
|
export function getLanguageSteps(params) {
|
|
2
28
|
const { language, testType } = params;
|
|
3
29
|
if (testType === "mock") {
|
|
4
30
|
switch (language) {
|
|
5
31
|
case "python":
|
|
6
|
-
return
|
|
7
|
-
# Install skyramp dependency
|
|
8
|
-
pip3 install skyramp
|
|
9
|
-
|
|
32
|
+
return `${pythonDependencyGuidance}
|
|
10
33
|
# Run the mock server
|
|
11
34
|
python3 <mock-file>.py
|
|
12
35
|
`;
|
|
13
36
|
case "typescript":
|
|
14
|
-
return
|
|
15
|
-
# Install dependencies
|
|
16
|
-
npm install @skyramp/skyramp
|
|
17
|
-
|
|
37
|
+
return `${javascriptDependencyGuidance}
|
|
18
38
|
# Run the mock server
|
|
19
39
|
npx ts-node <mock-file>.ts
|
|
20
40
|
`;
|
|
21
41
|
case "javascript":
|
|
22
|
-
return
|
|
23
|
-
# Install dependencies
|
|
24
|
-
npm install @skyramp/skyramp
|
|
25
|
-
|
|
42
|
+
return `${javascriptDependencyGuidance}
|
|
26
43
|
# Run the mock server
|
|
27
44
|
node <mock-file>.js
|
|
28
45
|
`;
|
|
@@ -30,63 +47,40 @@ node <mock-file>.js
|
|
|
30
47
|
return "";
|
|
31
48
|
}
|
|
32
49
|
}
|
|
33
|
-
let
|
|
50
|
+
let steps = "";
|
|
34
51
|
switch (language) {
|
|
35
52
|
case "python":
|
|
36
|
-
|
|
37
|
-
# Install skyramp dependency
|
|
38
|
-
pip3 install skyramp
|
|
39
|
-
`;
|
|
53
|
+
steps = pythonDependencyGuidance;
|
|
40
54
|
// e2e and ui tests
|
|
41
55
|
if (testType === "e2e" || testType === "ui") {
|
|
42
|
-
|
|
43
|
-
# Install playwright dependencies
|
|
44
|
-
pip3 install pytest-playwright
|
|
56
|
+
steps += `
|
|
45
57
|
# Execute the test file
|
|
46
58
|
python3 -m pytest --browser chromium <test-file>.py
|
|
47
59
|
`;
|
|
48
60
|
}
|
|
49
61
|
// framework pytest
|
|
50
62
|
if (params.framework === "pytest") {
|
|
51
|
-
|
|
52
|
-
# Install pytest dependency
|
|
53
|
-
pip3 install pytest
|
|
54
|
-
|
|
63
|
+
steps += `
|
|
55
64
|
# Execute test file
|
|
56
65
|
python3 -m pytest <test-file>.py
|
|
57
66
|
`;
|
|
58
67
|
}
|
|
59
68
|
// robot framework
|
|
60
69
|
if (params.framework === "robot") {
|
|
61
|
-
|
|
62
|
-
# Install robotframework dependency
|
|
63
|
-
pip3 install robotframework
|
|
64
|
-
|
|
70
|
+
steps += `
|
|
65
71
|
# Execution of test file
|
|
66
72
|
python3 -m robot <robot-file>.robot
|
|
67
73
|
`;
|
|
68
74
|
}
|
|
69
75
|
break;
|
|
70
76
|
case "javascript":
|
|
71
|
-
|
|
72
|
-
# install dependencies for package.json
|
|
73
|
-
npm install @skyramp/skyramp @playwright/test
|
|
74
|
-
|
|
75
|
-
# Execution of test file
|
|
76
|
-
npx playwright test <test-file>.spec.js --reporter=list
|
|
77
|
-
`;
|
|
77
|
+
steps = getJavascriptSteps("js");
|
|
78
78
|
break;
|
|
79
79
|
case "typescript":
|
|
80
|
-
|
|
81
|
-
# install dependencies for package.json
|
|
82
|
-
npm install @skyramp/skyramp @playwright/test
|
|
83
|
-
|
|
84
|
-
# Execution of test file
|
|
85
|
-
npx playwright test <test-file>.spec.ts --reporter=list
|
|
86
|
-
`;
|
|
80
|
+
steps = getJavascriptSteps("ts");
|
|
87
81
|
break;
|
|
88
82
|
case "java":
|
|
89
|
-
|
|
83
|
+
steps = `${javaDependencyGuidance}
|
|
90
84
|
# Prerequisites
|
|
91
85
|
# Compile the test file
|
|
92
86
|
javac -cp "./lib/*" -d target <test-file>.java
|
|
@@ -104,11 +98,11 @@ java -jar "./lib/junit-platform-console-standalone-\${JUNIT_PLATFORM_VER}.jar" \
|
|
|
104
98
|
default:
|
|
105
99
|
return "";
|
|
106
100
|
}
|
|
107
|
-
return
|
|
101
|
+
return steps + appendExecutionInstruction();
|
|
108
102
|
}
|
|
109
103
|
function appendExecutionInstruction() {
|
|
110
104
|
return `
|
|
111
|
-
- Notify the user that they can also use
|
|
105
|
+
- Notify the user that they can also use the Execute with Skyramp tool to run the test.
|
|
112
106
|
- Before I can execute the test for you, I need to confirm the following information:
|
|
113
107
|
Authentication: Please provide me with your authentication token (by default we assume a Bearer Token). If you don't require any token for your service please just say: 'No token required'
|
|
114
108
|
`;
|