@skyramp/mcp 0.4.1 → 0.4.2-rc.2
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/commands/localDevTestChangesCommand.js +2 -1
- package/build/commands/recommendTestsAndExecuteCommand.js +15 -7
- package/build/commands/testThisEndpointCommand.js +35 -6
- package/build/execution/wrapperConfig.d.ts +56 -0
- package/build/execution/wrapperConfig.js +155 -0
- package/build/index.js +40 -10
- package/build/playwright/blueprintDigest.js +28 -7
- package/build/playwright/registerPlaywrightTools.js +47 -28
- package/build/playwright/traceExportStore.d.ts +22 -0
- package/build/playwright/traceExportStore.js +81 -0
- package/build/playwright/traceRecordingPrompt.js +11 -3
- package/build/prompts/code-reuse.js +118 -49
- 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 +8 -23
- package/build/prompts/local-dev/local-dev-prompts.d.ts +1 -1
- package/build/prompts/local-dev/local-dev-prompts.js +31 -4
- 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 +124 -2
- package/build/prompts/shared-helper-policy.js +178 -12
- package/build/prompts/startTraceCollectionPrompts.js +1 -1
- package/build/prompts/sut-setup/modes/adaptWorkflowPrompt.js +7 -8
- 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 +6 -4
- 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.d.ts +16 -8
- package/build/prompts/test-maintenance/drift-analysis-prompt.js +93 -38
- 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 +8 -5
- package/build/prompts/test-recommendation/recommendationSections.js +19 -8
- package/build/prompts/test-recommendation/recommendationShared.d.ts +1 -1
- package/build/prompts/test-recommendation/recommendationShared.js +0 -1
- 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 +133 -63
- 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 +53 -9
- 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/runTestSkill.d.ts +6 -0
- package/build/skills/runTestSkill.js +17 -0
- 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 -1
- package/build/tools/auth/loginTool.js +3 -1
- package/build/tools/auth/logoutTool.js +3 -1
- package/build/tools/budgetExcuse.d.ts +15 -0
- package/build/tools/budgetExcuse.js +113 -0
- 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 +269 -30
- 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 +118 -48
- package/build/tools/executeSkyrampTestTool.js +998 -372
- 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/submitReportTool.d.ts +51 -12
- package/build/tools/submitReportTool.js +988 -161
- package/build/tools/test-management/actionsTool.js +241 -51
- package/build/tools/test-management/analyzeChangesTool.d.ts +8 -9
- package/build/tools/test-management/analyzeChangesTool.js +127 -68
- package/build/tools/test-management/analyzeTestHealthTool.d.ts +0 -11
- package/build/tools/test-management/analyzeTestHealthTool.js +42 -76
- 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/test-management/testsOwedBeforeRun.d.ts +28 -0
- package/build/tools/test-management/testsOwedBeforeRun.js +53 -0
- package/build/tools/trace/startTraceCollectionTool.js +3 -1
- package/build/tools/trace/stopTraceCollectionTool.js +42 -6
- 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/RepositoryAnalysis.d.ts +32 -72
- package/build/types/ReuseOutcome.d.ts +100 -7
- 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 +16 -0
- package/build/types/TestTypes.js +40 -3
- package/build/types/TestbotPromptOptions.d.ts +9 -1
- package/build/types/TestbotReport.d.ts +45 -9
- package/build/utils/AnalysisStateManager.d.ts +137 -34
- package/build/utils/AnalysisStateManager.js +228 -44
- 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/connectionErrors.d.ts +10 -0
- package/build/utils/connectionErrors.js +10 -0
- 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 +60 -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/progress.d.ts +1 -1
- package/build/utils/progress.js +1 -1
- package/build/utils/proxy-terminal.d.ts +19 -1
- package/build/utils/proxy-terminal.js +346 -21
- package/build/utils/rebaselineSnapshots.d.ts +1 -1
- package/build/utils/rebaselineSnapshots.js +6 -16
- 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.d.ts +10 -0
- package/build/utils/reuseRouting.js +21 -2
- package/build/utils/runContextGauge.d.ts +27 -0
- package/build/utils/runContextGauge.js +181 -0
- 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/skyrampMdContent.d.ts +1 -1
- package/build/utils/skyrampMdContent.js +1 -1
- package/build/utils/skyrampSdkVersion.d.ts +9 -0
- package/build/utils/skyrampSdkVersion.js +16 -0
- 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 +809 -0
- package/build/utils/testExecutionRecord.d.ts +94 -0
- package/build/utils/testExecutionRecord.js +269 -0
- package/build/utils/testFileClassification.d.ts +8 -0
- package/build/utils/testFileClassification.js +39 -4
- package/build/utils/trace-parser.js +62 -14
- package/build/utils/urlPath.js +3 -1
- package/build/utils/utils-verify/action-key.d.ts +46 -0
- package/build/utils/utils-verify/action-key.js +120 -38
- package/build/utils/utils-verify/action-sites.d.ts +32 -0
- package/build/utils/utils-verify/action-sites.js +202 -0
- 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 +333 -0
- package/build/utils/utils-verify/call-sites.d.ts +31 -7
- package/build/utils/utils-verify/call-sites.js +80 -13
- 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 +2 -0
- package/build/utils/utils-verify/index.js +2 -0
- package/build/utils/utils-verify/language-spec.d.ts +51 -10
- package/build/utils/utils-verify/language-spec.js +232 -21
- 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 +56 -7
- package/build/utils/utils-verify/parse.js +195 -40
- 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 +79 -3
- package/build/utils/utils-verify/verify.js +531 -61
- 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.d.ts +72 -52
- package/build/workspace/workspace.js +19 -15
- 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 +2 -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 +45 -50
- package/plugin/skills/run-test/SKILL.md +16 -0
- 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/adapters/jestAdapter.d.ts +0 -14
- package/build/adapters/jestAdapter.js +0 -113
- package/build/adapters/mochaAdapter.d.ts +0 -13
- package/build/adapters/mochaAdapter.js +0 -87
- package/build/adapters/playwrightAdapter.d.ts +0 -17
- package/build/adapters/playwrightAdapter.js +0 -182
- package/build/adapters/pytestAdapter.d.ts +0 -15
- package/build/adapters/pytestAdapter.js +0 -108
- 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/build/tools/runExistingTestsTool.d.ts +0 -138
- package/build/tools/runExistingTestsTool.js +0 -644
- package/build/types/ExternalTestExecution.d.ts +0 -67
- package/build/types/ExternalTestExecution.js +0 -8
- package/build/workspace/testSuites.d.ts +0 -20
- package/build/workspace/testSuites.js +0 -17
- 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
|
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one place a connection-level failure is spelled. Three callers match these
|
|
3
|
+
* and each reads them for its own purpose — a transient MCP error, an executor
|
|
4
|
+
* retry, and the drift prompt's "the application was unreachable" verdict — so
|
|
5
|
+
* they are kept here rather than written out three times and drifting apart.
|
|
6
|
+
*/
|
|
7
|
+
/** Refused, reset, or the socket dropped mid-request. */
|
|
8
|
+
export declare const CONNECTION_DROPPED: RegExp;
|
|
9
|
+
/** The application never answered in time. */
|
|
10
|
+
export declare const CONNECTION_TIMED_OUT: RegExp;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one place a connection-level failure is spelled. Three callers match these
|
|
3
|
+
* and each reads them for its own purpose — a transient MCP error, an executor
|
|
4
|
+
* retry, and the drift prompt's "the application was unreachable" verdict — so
|
|
5
|
+
* they are kept here rather than written out three times and drifting apart.
|
|
6
|
+
*/
|
|
7
|
+
/** Refused, reset, or the socket dropped mid-request. */
|
|
8
|
+
export const CONNECTION_DROPPED = /\bECONNREFUSED\b|\bECONNRESET\b|\bconnection refused\b|\bconnection reset\b|\bsocket hang up\b/i;
|
|
9
|
+
/** The application never answered in time. */
|
|
10
|
+
export const CONNECTION_TIMED_OUT = /\bETIMEDOUT\b|\bDEADLINE_EXCEEDED\b|\bconnect(?:ion)? timed? ?out\b/i;
|
|
@@ -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) {
|