@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
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { logger } from "../../utils/logger.js";
|
|
3
3
|
import { StateManager, } from "../../utils/AnalysisStateManager.js";
|
|
4
|
-
import { TestSource, DriftAction, RecommendationPriority, EstimatedWork } from "../../types/TestAnalysis.js";
|
|
4
|
+
import { TestSource, DriftAction, RecommendationPriority, EstimatedWork, } from "../../types/TestAnalysis.js";
|
|
5
5
|
import { TestExecutionStatus } from "../../types/TestExecution.js";
|
|
6
6
|
import { TestType } from "../../types/TestTypes.js";
|
|
7
7
|
import * as fs from "fs";
|
|
@@ -9,8 +9,13 @@ import * as path from "path";
|
|
|
9
9
|
import { AnalyticsService } from "../../services/AnalyticsService.js";
|
|
10
10
|
import { dualChannelResult, toolError } from "../../utils/utils.js";
|
|
11
11
|
import { isTestFile } from "../../utils/testFileClassification.js";
|
|
12
|
-
import { REBASELINE_SNAPSHOT_NAME_RE, looksLikeOnDiskBaselineName } from "../../utils/rebaselineSnapshots.js";
|
|
12
|
+
import { REBASELINE_SNAPSHOT_NAME_RE, looksLikeOnDiskBaselineName, } from "../../utils/rebaselineSnapshots.js";
|
|
13
13
|
import { buildRenameStrategy, buildFileRenameStrategy, buildUpdateStrategy, buildRebaselineStrategy, buildRegenerateStrategy, buildDeleteStrategy, buildUpdateFileInstruction, buildRegenerateFileInstruction, } from "../../prompts/test-maintenance/actionsInstructions.js";
|
|
14
|
+
import { buildModularizeFirstNextSteps, isMaintenanceRegenerable, isModularizeFirstHandOffTarget, regenerateCodeReuse, } from "../../prompts/reuse-hand-off.js";
|
|
15
|
+
import { recordReuseHandOff } from "../code-refactor/reuse-state.js";
|
|
16
|
+
import { isPlanOnlyMode } from "../../utils/planOnlyMode.js";
|
|
17
|
+
import { runTestCall } from "../../skills/runTestSkill.js";
|
|
18
|
+
import { formatOwedFiles, testsOwedBeforeRun } from "./testsOwedBeforeRun.js";
|
|
14
19
|
/**
|
|
15
20
|
* Compute a suggested new filename when an endpoint is renamed.
|
|
16
21
|
*/
|
|
@@ -51,12 +56,16 @@ export function computeRenamedTestFile(testFile, renames) {
|
|
|
51
56
|
const recommendationSchema = z.object({
|
|
52
57
|
testFilePath: z
|
|
53
58
|
.string()
|
|
54
|
-
.refine((p) => path.isAbsolute(p), {
|
|
59
|
+
.refine((p) => path.isAbsolute(p), {
|
|
60
|
+
message: "testFilePath must be an absolute path",
|
|
61
|
+
})
|
|
55
62
|
.describe("Absolute path to the test spec file — use the path as reported by skyramp_analyze_changes or skyramp_analyze_test_health. For POM-based tests, this is the spec file (shown in the report); set pomFile to the page object path to edit."),
|
|
56
63
|
pomFile: z
|
|
57
64
|
.string()
|
|
58
65
|
.optional()
|
|
59
|
-
.refine((p) => p === undefined || path.isAbsolute(p), {
|
|
66
|
+
.refine((p) => p === undefined || path.isAbsolute(p), {
|
|
67
|
+
message: "pomFile must be an absolute path",
|
|
68
|
+
})
|
|
60
69
|
.describe("Absolute path to the page object (POM) file to edit, when the spec delegates selectors to a page object. When set, skyramp_actions edits this file instead of testFilePath. testFilePath (the spec) is still used for catalog validation and the maintenance report."),
|
|
61
70
|
action: z
|
|
62
71
|
.nativeEnum(DriftAction)
|
|
@@ -94,12 +103,19 @@ const recommendationSchema = z.object({
|
|
|
94
103
|
"Test hits GET /products — assert stock_count is present and non-negative.'"),
|
|
95
104
|
editSites: z
|
|
96
105
|
.array(z.object({
|
|
97
|
-
line: z
|
|
106
|
+
line: z
|
|
107
|
+
.number()
|
|
108
|
+
.int()
|
|
109
|
+
.min(1)
|
|
110
|
+
.describe("1-based line number of the edit site in the current file."),
|
|
98
111
|
anchor: z
|
|
99
112
|
.string()
|
|
100
113
|
.min(1)
|
|
101
114
|
.describe("A short verbatim snippet from that line (copied exactly from the file you read) so the edit can be located without re-scanning."),
|
|
102
|
-
change: z
|
|
115
|
+
change: z
|
|
116
|
+
.string()
|
|
117
|
+
.optional()
|
|
118
|
+
.describe("What to change at this site (e.g. 'add work_pool_name to this payload')."),
|
|
103
119
|
}))
|
|
104
120
|
.optional()
|
|
105
121
|
.describe("For a large UPDATE file, the concrete per-site edits you already located while reading it — one entry per place that must change, with a verbatim anchor. " +
|
|
@@ -110,7 +126,7 @@ const recommendationSchema = z.object({
|
|
|
110
126
|
// are dropped and surfaced in the response.
|
|
111
127
|
.array(z.string())
|
|
112
128
|
.optional()
|
|
113
|
-
.describe(
|
|
129
|
+
.describe('UPDATE only — the toHaveScreenshot() baseline filenames (e.g. ["page-001.png"]) whose captured page/element/region the diff visibly changed, so the committed PNG is stale (SKYR-4298). ' +
|
|
114
130
|
"List only the baselines the change reaches; leave unaffected ones out. These are refreshed at the final skyramp_execute_test run via its rebaselineSnapshots parameter, never by editing the assertion, its maxDiffPixelRatio, or the PNG. " +
|
|
115
131
|
"Omit when the diff does not explain a screenshot mismatch — that failure stays red."),
|
|
116
132
|
renamedEndpoints: z
|
|
@@ -125,12 +141,15 @@ const recommendationSchema = z.object({
|
|
|
125
141
|
const actionsSchema = {
|
|
126
142
|
stateFile: z
|
|
127
143
|
.string()
|
|
128
|
-
.refine((p) => path.isAbsolute(p), {
|
|
144
|
+
.refine((p) => path.isAbsolute(p), {
|
|
145
|
+
message: "stateFile must be an absolute path",
|
|
146
|
+
})
|
|
129
147
|
.describe("Path to state file from skyramp_analyze_changes"),
|
|
130
148
|
repository: z
|
|
131
149
|
.string()
|
|
132
|
-
.
|
|
133
|
-
.
|
|
150
|
+
.trim()
|
|
151
|
+
.min(1)
|
|
152
|
+
.describe("The owner/repo whose analysis section to act on (e.g. 'letsramp/api-insight'). Set it on every call — the primary's owner/repo for the primary repo's tests, or a related repo's owner/repo for that repo's section — within the run-scoped stateFile."),
|
|
134
153
|
recommendations: z
|
|
135
154
|
.array(recommendationSchema)
|
|
136
155
|
.default([])
|
|
@@ -180,7 +199,7 @@ export function registerActionsTool(server) {
|
|
|
180
199
|
// Allowlist: Skyramp-generated tests + relevant external tests.
|
|
181
200
|
// Using an allowlist (not a blocklist) catches hallucinated paths the LLM
|
|
182
201
|
// may supply that are not in the scanned catalog at all.
|
|
183
|
-
const testAnalysisResults =
|
|
202
|
+
const testAnalysisResults = stateData.existingTests || [];
|
|
184
203
|
const skyrampTestFiles = new Set(testAnalysisResults
|
|
185
204
|
.filter((t) => t.source !== TestSource.External)
|
|
186
205
|
.map((t) => t.testFile));
|
|
@@ -209,9 +228,14 @@ export function registerActionsTool(server) {
|
|
|
209
228
|
// Exception: files already in the scanned test catalog (externalTestFiles / skyrampTestFiles)
|
|
210
229
|
// may legitimately live in a separate testsRepoDir outside repositoryPath — catalog
|
|
211
230
|
// membership is a sufficient provenance check for those paths.
|
|
212
|
-
const isInCatalog = skyrampTestFiles.has(resolvedFile) ||
|
|
213
|
-
|
|
214
|
-
|
|
231
|
+
const isInCatalog = skyrampTestFiles.has(resolvedFile) ||
|
|
232
|
+
skyrampTestFiles.has(rec.testFilePath) ||
|
|
233
|
+
externalTestFiles.has(resolvedFile) ||
|
|
234
|
+
externalTestFiles.has(rec.testFilePath);
|
|
235
|
+
if (repoRoot &&
|
|
236
|
+
!isInCatalog &&
|
|
237
|
+
!resolvedFile.startsWith(repoRoot + path.sep) &&
|
|
238
|
+
resolvedFile !== repoRoot) {
|
|
215
239
|
logger.warning(`Skipping recommendation for path outside repo root: ${rec.testFilePath}`);
|
|
216
240
|
return;
|
|
217
241
|
}
|
|
@@ -219,9 +243,11 @@ export function registerActionsTool(server) {
|
|
|
219
243
|
// recommendation. Hallucinated paths (not in either set) are rejected for
|
|
220
244
|
// all actions, including VERIFY and IGNORE, to keep the report consistent
|
|
221
245
|
// with what was actually discovered.
|
|
222
|
-
const isSkyramp = skyrampTestFiles.has(resolvedFile) ||
|
|
246
|
+
const isSkyramp = skyrampTestFiles.has(resolvedFile) ||
|
|
247
|
+
skyrampTestFiles.has(rec.testFilePath);
|
|
223
248
|
// Catalog membership is the safety boundary — prevents editing non-test files.
|
|
224
|
-
const isRelevantExternal =
|
|
249
|
+
const isRelevantExternal = externalTestFiles.has(resolvedFile) ||
|
|
250
|
+
externalTestFiles.has(rec.testFilePath);
|
|
225
251
|
const isInAnyKnownCatalog = isSkyramp || isRelevantExternal;
|
|
226
252
|
// Discovery is relevance-scoped, not exhaustive — it can miss a real test file the
|
|
227
253
|
// agent correctly identifies from the diff (e.g. an e2e Playwright spec/POM under a
|
|
@@ -234,7 +260,9 @@ export function registerActionsTool(server) {
|
|
|
234
260
|
// this preserves the anti-hallucination guarantee (an invented path fails existsSync).
|
|
235
261
|
const isRealUncatalogedTest = !isInAnyKnownCatalog &&
|
|
236
262
|
isTestFile(resolvedFile) &&
|
|
237
|
-
(!repoRoot ||
|
|
263
|
+
(!repoRoot ||
|
|
264
|
+
resolvedFile.startsWith(repoRoot + path.sep) ||
|
|
265
|
+
resolvedFile === repoRoot) &&
|
|
238
266
|
fs.existsSync(resolvedFile);
|
|
239
267
|
if (!isInAnyKnownCatalog && !isRealUncatalogedTest) {
|
|
240
268
|
logger.warning(`Skipping ${rec.action} for unknown test (not in scanned catalog, not a real test file): ${rec.testFilePath}`);
|
|
@@ -243,7 +271,11 @@ export function registerActionsTool(server) {
|
|
|
243
271
|
if (isRealUncatalogedTest) {
|
|
244
272
|
logger.info(`Accepting uncataloged but real test file discovery missed: ${rec.testFilePath}`);
|
|
245
273
|
}
|
|
246
|
-
const isActionable = [
|
|
274
|
+
const isActionable = [
|
|
275
|
+
DriftAction.Update,
|
|
276
|
+
DriftAction.Regenerate,
|
|
277
|
+
DriftAction.Delete,
|
|
278
|
+
].includes(rec.action);
|
|
247
279
|
// No write access to a related repo's checkout — convert any edit-requiring
|
|
248
280
|
// action to VERIFY so the finding still surfaces without attempting a write that
|
|
249
281
|
// would fail (or land in a checkout that shouldn't be touched at all).
|
|
@@ -261,7 +293,10 @@ export function registerActionsTool(server) {
|
|
|
261
293
|
});
|
|
262
294
|
return;
|
|
263
295
|
}
|
|
264
|
-
if (isActionable &&
|
|
296
|
+
if (isActionable &&
|
|
297
|
+
!isSkyramp &&
|
|
298
|
+
!isRelevantExternal &&
|
|
299
|
+
!isRealUncatalogedTest) {
|
|
265
300
|
logger.warning(`Skipping ${rec.action} for irrelevant external test: ${rec.testFilePath}`);
|
|
266
301
|
return;
|
|
267
302
|
}
|
|
@@ -272,8 +307,10 @@ export function registerActionsTool(server) {
|
|
|
272
307
|
// report renders it as a deletion/regeneration RECOMMENDATION the developer applies
|
|
273
308
|
// manually. `reportOnly: true` makes the apply loops below skip it (B2 — a flattened
|
|
274
309
|
// VERIFY read to the D2 judge as "uncertain", hiding a correct DELETE call).
|
|
275
|
-
if (isExternalTarget &&
|
|
276
|
-
|
|
310
|
+
if (isExternalTarget &&
|
|
311
|
+
!isSkyramp &&
|
|
312
|
+
(rec.action === DriftAction.Regenerate ||
|
|
313
|
+
rec.action === DriftAction.Delete)) {
|
|
277
314
|
recommendations.push({
|
|
278
315
|
testFilePath: resolvedFile,
|
|
279
316
|
action: rec.action,
|
|
@@ -306,7 +343,8 @@ export function registerActionsTool(server) {
|
|
|
306
343
|
resolvedPomFile = undefined;
|
|
307
344
|
}
|
|
308
345
|
}
|
|
309
|
-
if (rec.action !== DriftAction.Update &&
|
|
346
|
+
if (rec.action !== DriftAction.Update &&
|
|
347
|
+
rec.rebaselineSnapshots?.length) {
|
|
310
348
|
droppedRebaselineNotes.push(`${rec.testFilePath}: rebaselineSnapshots [${rec.rebaselineSnapshots.join(", ")}] ignored on ${rec.action} — a baseline refresh is only meaningful on UPDATE.`);
|
|
311
349
|
}
|
|
312
350
|
// Per-entry validation (the schema is deliberately loose, see above).
|
|
@@ -350,7 +388,12 @@ export function registerActionsTool(server) {
|
|
|
350
388
|
testFilePath: resolvedFile,
|
|
351
389
|
pomFile: resolvedPomFile,
|
|
352
390
|
action: actionForVerdict,
|
|
353
|
-
|
|
391
|
+
// The catalog's type wins over the caller's claim, and it wins ONCE, here:
|
|
392
|
+
// the verdict the report row is built from, the reuse hand-off, the steps
|
|
393
|
+
// and the regenerate context all read this one value. Letting the row keep
|
|
394
|
+
// a mislabeled type while the hand-off carried the cataloged one made the
|
|
395
|
+
// report drop the row's reuse on the mismatch.
|
|
396
|
+
testType: catalogByFile.get(resolvedFile)?.testType ?? rec.testType,
|
|
354
397
|
endpoint: rec.endpoint,
|
|
355
398
|
priority: rec.priority ?? RecommendationPriority.Medium,
|
|
356
399
|
rationale: rationaleForVerdict,
|
|
@@ -384,6 +427,52 @@ export function registerActionsTool(server) {
|
|
|
384
427
|
// `maintenanceVerdicts` (the validated recommendations), persisted below at
|
|
385
428
|
// decision-time — that persistence is what prevents a decided-upon entry from silently
|
|
386
429
|
// vanishing at report time; the ignored set is a complete, accurate record for free.
|
|
430
|
+
// The renamed path has to be known BEFORE the verdicts are persisted.
|
|
431
|
+
// The rename itself happens further down, and the report looks for the
|
|
432
|
+
// file's run under the name the file ends up with; persisted with the
|
|
433
|
+
// old name, a moved spec is not found on disk and drops out of
|
|
434
|
+
// execution coverage without a word.
|
|
435
|
+
//
|
|
436
|
+
// Always derived from the spec (testFilePath), never the POM
|
|
437
|
+
// (editTarget): fileRenames keys off testFilePath, so the spec is what
|
|
438
|
+
// moves, and deriving from editTarget when pomFile is set would produce
|
|
439
|
+
// a name built from the page-object path.
|
|
440
|
+
for (const r of recommendations) {
|
|
441
|
+
if (!r.renamedEndpoints?.length)
|
|
442
|
+
continue;
|
|
443
|
+
const renamed = computeRenamedTestFile(r.testFilePath, r.renamedEndpoints) ??
|
|
444
|
+
undefined;
|
|
445
|
+
if (renamed)
|
|
446
|
+
r._suggestedNewFile = renamed;
|
|
447
|
+
}
|
|
448
|
+
// ── Before-run gate on the tests this call will edit ──────────────
|
|
449
|
+
// Drift on the repository's own test must rest on a run, not on a
|
|
450
|
+
// reading of its source: without the pre-edit result the report cannot
|
|
451
|
+
// say what the edit changed, and the test lands at afterStatus=Unknown.
|
|
452
|
+
// The subject is what this call edits, and nothing wider: the gate used
|
|
453
|
+
// to sit in skyramp_analyze_test_health and demand a run for every
|
|
454
|
+
// external test in state, which is the first hundred files discovery
|
|
455
|
+
// found in glob order.
|
|
456
|
+
//
|
|
457
|
+
// A DELETE or a REGENERATE on an external test is report-only (the run
|
|
458
|
+
// edits nothing), and a related repo's entry is already a VERIFY by
|
|
459
|
+
// here, so neither owes a run.
|
|
460
|
+
const { owed, exemptLanguage } = testsOwedBeforeRun(recommendations, catalogByFile);
|
|
461
|
+
if (exemptLanguage > 0) {
|
|
462
|
+
logger.info(`Before-run gate: ${exemptLanguage} recommended external test(s) owe no run — skyramp_execute_test cannot run their language.`);
|
|
463
|
+
}
|
|
464
|
+
// A plan-only run has no application to run the tests against.
|
|
465
|
+
if (owed.length > 0 && !isPlanOnlyMode()) {
|
|
466
|
+
const filesList = formatOwedFiles(owed);
|
|
467
|
+
errorResult = toolError(`${owed.length} test${owed.length === 1 ? "" : "s"} you recommend editing ${owed.length === 1 ? "has" : "have"} no phase: "before" result recorded — never run, or a run was started and recorded no result: ${filesList}. ` +
|
|
468
|
+
`Run each file through skyramp_execute_test with phase: "before", stateFile: "${args.stateFile}"${args.repository ? `, repository: "${args.repository}"` : ""}: ${runTestCall()}. Then call ${TOOL_NAME} again. Nothing was recorded by this call.`);
|
|
469
|
+
return errorResult;
|
|
470
|
+
}
|
|
471
|
+
else if (owed.length > 0) {
|
|
472
|
+
// planOnlyMode is process-global and captured at prompt-render time, so
|
|
473
|
+
// a skip must be visible: no run means no evidence behind these edits.
|
|
474
|
+
logger.warning(`Before-run gate skipped in a plan-only run: ${owed.length} test(s) you recommend editing have no phase: "before" result recorded.`);
|
|
475
|
+
}
|
|
387
476
|
const recommendedPaths = new Set(recommendations.map((r) => r.testFilePath));
|
|
388
477
|
const ignoredTestFiles = testAnalysisResults
|
|
389
478
|
.map((t) => t.testFile)
|
|
@@ -392,7 +481,7 @@ export function registerActionsTool(server) {
|
|
|
392
481
|
// Must fail loud — edits below apply regardless, so a swallowed failure here
|
|
393
482
|
// would let edits ship with no testMaintenance in the final report.
|
|
394
483
|
try {
|
|
395
|
-
await stateManager.
|
|
484
|
+
await stateManager.updateRepoData({
|
|
396
485
|
...stateData,
|
|
397
486
|
ignoredTestFiles,
|
|
398
487
|
maintenanceVerdicts: recommendations.map((r) => ({
|
|
@@ -408,13 +497,22 @@ export function registerActionsTool(server) {
|
|
|
408
497
|
// Persisted so the report-time working-tree check knows this UPDATE's
|
|
409
498
|
// change is the refreshed PNG, not the spec (SKYR-4298).
|
|
410
499
|
...(r.rebaselineSnapshots?.length
|
|
411
|
-
? {
|
|
500
|
+
? {
|
|
501
|
+
rebaselineSnapshots: r.rebaselineSnapshots,
|
|
502
|
+
rebaselineOnly: r.rebaselineOnly === true,
|
|
503
|
+
}
|
|
412
504
|
: {}),
|
|
413
505
|
// Persisted so maintenance coverage can tell a REGENERATE that rewrote a
|
|
414
506
|
// file from one that only advised the developer to: an external test's
|
|
415
507
|
// REGENERATE/DELETE keeps its real action and touches nothing, so without
|
|
416
508
|
// this the report credits a `maintains` claim no edit backs.
|
|
417
509
|
...(r.reportOnly ? { reportOnly: true } : {}),
|
|
510
|
+
// Persisted so the report stage can find the renamed file's run: the
|
|
511
|
+
// rename lands before execution, so the run is recorded under this
|
|
512
|
+
// path while testFilePath still holds the name it had before.
|
|
513
|
+
...(r._suggestedNewFile
|
|
514
|
+
? { _suggestedNewFile: r._suggestedNewFile }
|
|
515
|
+
: {}),
|
|
418
516
|
})),
|
|
419
517
|
}, { repo: args.repository, repositoryPath, step: "actions" });
|
|
420
518
|
}
|
|
@@ -445,13 +543,15 @@ export function registerActionsTool(server) {
|
|
|
445
543
|
continue;
|
|
446
544
|
if (rec.action === DriftAction.Delete) {
|
|
447
545
|
const existing = deleteByFile.get(rec.testFilePath);
|
|
448
|
-
if (!existing ||
|
|
546
|
+
if (!existing ||
|
|
547
|
+
priorityRank[rec.priority] > priorityRank[existing.priority]) {
|
|
449
548
|
deleteByFile.set(rec.testFilePath, rec);
|
|
450
549
|
}
|
|
451
550
|
}
|
|
452
551
|
else if (rec.action === DriftAction.Regenerate) {
|
|
453
552
|
const existing = regenerateByFile.get(rec.testFilePath);
|
|
454
|
-
if (!existing ||
|
|
553
|
+
if (!existing ||
|
|
554
|
+
priorityRank[rec.priority] > priorityRank[existing.priority]) {
|
|
455
555
|
regenerateByFile.set(rec.testFilePath, rec);
|
|
456
556
|
}
|
|
457
557
|
}
|
|
@@ -460,7 +560,8 @@ export function registerActionsTool(server) {
|
|
|
460
560
|
if (!regenerateByFile.has(rec.testFilePath)) {
|
|
461
561
|
const key = `${rec.testFilePath}::${rec.pomFile ?? ""}`;
|
|
462
562
|
const existing = updateByKey.get(key);
|
|
463
|
-
if (!existing ||
|
|
563
|
+
if (!existing ||
|
|
564
|
+
priorityRank[rec.priority] > priorityRank[existing.priority]) {
|
|
464
565
|
updateByKey.set(key, rec);
|
|
465
566
|
}
|
|
466
567
|
}
|
|
@@ -489,6 +590,36 @@ export function registerActionsTool(server) {
|
|
|
489
590
|
const testFilesToDelete = deleteRecommendations.map((rec) => rec.testFilePath);
|
|
490
591
|
const fileInstructions = [];
|
|
491
592
|
const testFilesToUpdate = [];
|
|
593
|
+
// A Skyramp test rewritten in place — updated or regenerated — owes the same
|
|
594
|
+
// modularize → reuse pair a generated one does, under the same predicate. The
|
|
595
|
+
// hand-off is recorded here, at the site that emits the instruction, as a
|
|
596
|
+
// maintenance hand-off: the file is at HEAD by definition, so the chain gate
|
|
597
|
+
// must not read that as "not this run's". An external test is the customer's
|
|
598
|
+
// code and is never modularized into the shared module. Returns the
|
|
599
|
+
// next-steps block for the file, or undefined when nothing was armed.
|
|
600
|
+
const armReuseChain = async (rec) => {
|
|
601
|
+
if (!skyrampTestFiles.has(rec.testFilePath))
|
|
602
|
+
return undefined;
|
|
603
|
+
const cataloged = catalogByFile.get(rec.testFilePath);
|
|
604
|
+
const language = cataloged?.language;
|
|
605
|
+
// Already the cataloged type — normalized once where the recommendation
|
|
606
|
+
// was built, so the verdict, the hand-off and the steps cannot disagree.
|
|
607
|
+
const testType = rec.testType;
|
|
608
|
+
if (!language) {
|
|
609
|
+
logger.info(`No language cataloged for ${rec.testFilePath} — not arming the modularize → reuse chain for this ${rec.action}`);
|
|
610
|
+
return undefined;
|
|
611
|
+
}
|
|
612
|
+
if (!isModularizeFirstHandOffTarget(testType, language))
|
|
613
|
+
return undefined;
|
|
614
|
+
const framework = cataloged?.framework ?? "";
|
|
615
|
+
await recordReuseHandOff([rec.testFilePath], testType, language, framework, args.stateFile, "maintenance");
|
|
616
|
+
return buildModularizeFirstNextSteps({
|
|
617
|
+
testType,
|
|
618
|
+
language,
|
|
619
|
+
framework,
|
|
620
|
+
enhanceFirst: false,
|
|
621
|
+
});
|
|
622
|
+
};
|
|
492
623
|
// ── UPDATE: emit targeted edit instructions ──
|
|
493
624
|
for (const rec of updateRecommendations) {
|
|
494
625
|
if (!rec.testFilePath) {
|
|
@@ -508,16 +639,33 @@ export function registerActionsTool(server) {
|
|
|
508
639
|
continue;
|
|
509
640
|
}
|
|
510
641
|
const renames = rec.renamedEndpoints || [];
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
//
|
|
514
|
-
//
|
|
515
|
-
//
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
642
|
+
// Computed above, before the verdicts were persisted.
|
|
643
|
+
const suggestedNewFile = rec._suggestedNewFile;
|
|
644
|
+
// Armed only when this UPDATE rewrites the SPEC BODY, because that is the
|
|
645
|
+
// only edit the modularize → reuse pair has anything to act on.
|
|
646
|
+
//
|
|
647
|
+
// `pomFile` set means the edit lands somewhere the spec delegates its
|
|
648
|
+
// selectors to, and the spec body is left alone. That is a page object in
|
|
649
|
+
// the case the field was named for, but agents also use it for the SHARED
|
|
650
|
+
// MODULE when a stale selector lives in a helper — observed twice on the
|
|
651
|
+
// repo20-SR02 fixture, and correct by the field's own description. Either
|
|
652
|
+
// way the spec is not rewritten, so it owes nothing. Consequence worth
|
|
653
|
+
// knowing: a fixture cannot assume a maintained spec gets armed, since the
|
|
654
|
+
// agent may route the whole edit through this field (SKYR-4412).
|
|
655
|
+
//
|
|
656
|
+
// A rename UPDATE is a URL-path substitution and moves the file; the hand-off
|
|
657
|
+
// is keyed by the path the file has now, so after the move the gate and the
|
|
658
|
+
// report would look there and find nothing — a debt recorded where no one
|
|
659
|
+
// reads it. A rebaseline-only UPDATE edits no spec at all; its maintenance is
|
|
660
|
+
// the PNG refresh. A rationale-only UPDATE (no updateInstructions) has no
|
|
661
|
+
// update_context entry to carry post_edit_steps, so the structured plan could
|
|
662
|
+
// not pay the debt.
|
|
663
|
+
if (!rec.pomFile &&
|
|
664
|
+
!suggestedNewFile &&
|
|
665
|
+
!rec.rebaselineOnly &&
|
|
666
|
+
rec.updateInstructions) {
|
|
667
|
+
rec._postEditSteps = await armReuseChain(rec);
|
|
668
|
+
}
|
|
521
669
|
fileInstructions.push(buildUpdateFileInstruction({
|
|
522
670
|
testFile: editTarget,
|
|
523
671
|
renames,
|
|
@@ -525,6 +673,7 @@ export function registerActionsTool(server) {
|
|
|
525
673
|
updateInstructions: rec.updateInstructions,
|
|
526
674
|
rationale: rec.rationale,
|
|
527
675
|
rebaselineSnapshots: rec.rebaselineSnapshots,
|
|
676
|
+
postEditSteps: rec._postEditSteps,
|
|
528
677
|
}));
|
|
529
678
|
}
|
|
530
679
|
// ── REGENERATE: emit overwrite instructions ──
|
|
@@ -536,11 +685,21 @@ export function registerActionsTool(server) {
|
|
|
536
685
|
continue;
|
|
537
686
|
}
|
|
538
687
|
testFilesToRegenerate.push(rec.testFilePath);
|
|
688
|
+
const cataloged = catalogByFile.get(rec.testFilePath);
|
|
689
|
+
// The generation call the instruction prescribes records its own hand-off for
|
|
690
|
+
// the file it writes; this maintenance mark is what that hand-off inherits its
|
|
691
|
+
// origin from, so the rewrite of a file at HEAD still owes the chain. Only for
|
|
692
|
+
// a type this step can actually regenerate (see isMaintenanceRegenerable).
|
|
693
|
+
if (isMaintenanceRegenerable(rec.testType)) {
|
|
694
|
+
await armReuseChain(rec);
|
|
695
|
+
}
|
|
539
696
|
regenerateInstructions.push(buildRegenerateFileInstruction({
|
|
540
697
|
testFile: rec.testFilePath,
|
|
541
698
|
updateInstructions: rec.updateInstructions,
|
|
542
699
|
outputDir: path.dirname(rec.testFilePath),
|
|
543
700
|
outputFile: path.basename(rec.testFilePath),
|
|
701
|
+
testType: rec.testType,
|
|
702
|
+
language: cataloged?.language,
|
|
544
703
|
}));
|
|
545
704
|
}
|
|
546
705
|
// ── Build response text ──
|
|
@@ -556,7 +715,9 @@ export function registerActionsTool(server) {
|
|
|
556
715
|
}
|
|
557
716
|
if (regenerateRecommendations.length > 0) {
|
|
558
717
|
sections.push(`## Tests Requiring Regeneration (${regenerateRecommendations.length})\n\n` +
|
|
559
|
-
testFilesToRegenerate
|
|
718
|
+
testFilesToRegenerate
|
|
719
|
+
.map((f, i) => `${i + 1}. \`${f}\``)
|
|
720
|
+
.join("\n") +
|
|
560
721
|
`\n\n---\n` +
|
|
561
722
|
regenerateInstructions.join("\n---\n"));
|
|
562
723
|
}
|
|
@@ -564,12 +725,16 @@ export function registerActionsTool(server) {
|
|
|
564
725
|
sections.push(`## Tests To Delete (${deleteRecommendations.length})\n\n` +
|
|
565
726
|
testFilesToDelete.map((f, i) => `${i + 1}. \`${f}\``).join("\n") +
|
|
566
727
|
`\n\n---\n` +
|
|
567
|
-
deleteRecommendations
|
|
728
|
+
deleteRecommendations
|
|
729
|
+
.map((rec) => `- **${rec.testFilePath}**${rec.rationale ? ` — ${rec.rationale}` : ""}`)
|
|
730
|
+
.join("\n"));
|
|
568
731
|
}
|
|
569
732
|
if (otherRecs.length > 0) {
|
|
570
733
|
sections.push(`## Other Findings (${otherRecs.length})\n\n` +
|
|
571
|
-
otherRecs
|
|
572
|
-
(rec
|
|
734
|
+
otherRecs
|
|
735
|
+
.map((rec) => `- **${rec.testFilePath}** — Action: ${rec.action}, Priority: ${rec.priority}` +
|
|
736
|
+
(rec.rationale ? ` — ${rec.rationale}` : ""))
|
|
737
|
+
.join("\n"));
|
|
573
738
|
}
|
|
574
739
|
else if (updateRecommendations.length === 0 &&
|
|
575
740
|
regenerateRecommendations.length === 0 &&
|
|
@@ -585,7 +750,9 @@ export function registerActionsTool(server) {
|
|
|
585
750
|
// ── Build LLM instructions ──
|
|
586
751
|
const uniqueRenames = updateRecommendations
|
|
587
752
|
.flatMap((rec) => rec.renamedEndpoints ?? [])
|
|
588
|
-
.filter((r, i, arr) => arr.findIndex((x) => x.oldPath === r.oldPath &&
|
|
753
|
+
.filter((r, i, arr) => arr.findIndex((x) => x.oldPath === r.oldPath &&
|
|
754
|
+
x.newPath === r.newPath &&
|
|
755
|
+
x.method === r.method) === i);
|
|
589
756
|
const llmInstructionsObj = {
|
|
590
757
|
workflow: "test_maintenance",
|
|
591
758
|
action: "execute_updates",
|
|
@@ -603,7 +770,10 @@ export function registerActionsTool(server) {
|
|
|
603
770
|
const fileRenames = [];
|
|
604
771
|
for (const rec of updateRecommendations) {
|
|
605
772
|
if (rec._suggestedNewFile) {
|
|
606
|
-
fileRenames.push({
|
|
773
|
+
fileRenames.push({
|
|
774
|
+
from: rec.testFilePath,
|
|
775
|
+
to: rec._suggestedNewFile,
|
|
776
|
+
});
|
|
607
777
|
}
|
|
608
778
|
}
|
|
609
779
|
if (fileRenames.length > 0) {
|
|
@@ -624,19 +794,29 @@ export function registerActionsTool(server) {
|
|
|
624
794
|
// explicit edit_required: false so the strategy's "make the changes
|
|
625
795
|
// described in context" cannot apply to it (rationale is always set,
|
|
626
796
|
// so it must not stand in for edit instructions here).
|
|
627
|
-
...(hasEdit
|
|
797
|
+
...(hasEdit
|
|
798
|
+
? { context: rec.updateInstructions }
|
|
799
|
+
: { edit_required: false }),
|
|
628
800
|
...(rec.editSites?.length ? { edit_sites: rec.editSites } : {}),
|
|
629
801
|
// The baselines to pass as skyramp_execute_test's rebaselineSnapshots for
|
|
630
802
|
// the SPEC (testFilePath, which is what runs) — never `file`, which is
|
|
631
803
|
// the page object for a POM-backed UPDATE.
|
|
632
804
|
...(rec.rebaselineSnapshots?.length
|
|
633
|
-
? {
|
|
805
|
+
? {
|
|
806
|
+
spec_file: rec.testFilePath,
|
|
807
|
+
rebaseline_snapshots: rec.rebaselineSnapshots,
|
|
808
|
+
}
|
|
809
|
+
: {}),
|
|
810
|
+
// The modularize → reuse steps the file owes, on the entry the agent
|
|
811
|
+
// follows (the summary block above is the same text for a reader).
|
|
812
|
+
...(rec._postEditSteps
|
|
813
|
+
? { post_edit_steps: rec._postEditSteps }
|
|
634
814
|
: {}),
|
|
635
815
|
};
|
|
636
816
|
});
|
|
637
817
|
if (updateContext.length > 0) {
|
|
638
818
|
llmInstructionsObj.update_context = updateContext;
|
|
639
|
-
llmInstructionsObj.update_strategy = buildUpdateStrategy();
|
|
819
|
+
llmInstructionsObj.update_strategy = buildUpdateStrategy(updateContext.some((u) => "post_edit_steps" in u));
|
|
640
820
|
if (updateContext.some((u) => "rebaseline_snapshots" in u)) {
|
|
641
821
|
llmInstructionsObj.rebaseline_strategy = buildRebaselineStrategy();
|
|
642
822
|
}
|
|
@@ -649,6 +829,7 @@ export function registerActionsTool(server) {
|
|
|
649
829
|
// replicate the file. Those come from the discovery catalog, so the file
|
|
650
830
|
// text is not needed to carry them.
|
|
651
831
|
const cataloged = catalogByFile.get(rec.testFilePath);
|
|
832
|
+
const generationArgs = regenerateCodeReuse(rec.testType, cataloged?.language)?.args;
|
|
652
833
|
return {
|
|
653
834
|
file: rec.testFilePath,
|
|
654
835
|
rationale: rec.updateInstructions || rec.rationale,
|
|
@@ -656,13 +837,17 @@ export function registerActionsTool(server) {
|
|
|
656
837
|
// use them instead of reading the file, so an absent one leaves the generation
|
|
657
838
|
// call without a target. The catalog's apiEndpoint is optional and can be an
|
|
658
839
|
// empty string; both fields are required on the recommendation itself.
|
|
659
|
-
test_type:
|
|
840
|
+
test_type: rec.testType,
|
|
660
841
|
endpoint: cataloged?.apiEndpoint || rec.endpoint,
|
|
661
842
|
...(cataloged?.language && { language: cataloged.language }),
|
|
662
843
|
...(cataloged?.framework && { framework: cataloged.framework }),
|
|
844
|
+
// The codeReuse options the per-file instruction asks for, on the entry
|
|
845
|
+
// the agent follows, so a client that reads only the structured plan
|
|
846
|
+
// still arms the chain the maintenance hand-off recorded.
|
|
847
|
+
...(generationArgs && { generation_args: generationArgs }),
|
|
663
848
|
};
|
|
664
849
|
});
|
|
665
|
-
llmInstructionsObj.regenerate_strategy = buildRegenerateStrategy();
|
|
850
|
+
llmInstructionsObj.regenerate_strategy = buildRegenerateStrategy(llmInstructionsObj.regenerate_context.some((e) => !!e.generation_args));
|
|
666
851
|
}
|
|
667
852
|
if (deleteRecommendations.length > 0) {
|
|
668
853
|
llmInstructionsObj.delete_strategy = buildDeleteStrategy();
|
|
@@ -671,7 +856,10 @@ export function registerActionsTool(server) {
|
|
|
671
856
|
// The two payloads were previously separate content[] blocks annotated
|
|
672
857
|
// audience: ["user"] and ["assistant"]. Nothing in this repo read those
|
|
673
858
|
// annotations, and the field names carry the same distinction.
|
|
674
|
-
return dualChannelResult({
|
|
859
|
+
return dualChannelResult({
|
|
860
|
+
summary: responseText,
|
|
861
|
+
instructions: llmInstructions,
|
|
862
|
+
});
|
|
675
863
|
}
|
|
676
864
|
catch (error) {
|
|
677
865
|
logger.error(`Actions tool failed: ${error.message}`, error);
|
|
@@ -689,7 +877,9 @@ export function registerActionsTool(server) {
|
|
|
689
877
|
}
|
|
690
878
|
AnalyticsService.pushMCPToolEvent(TOOL_NAME, errorResult, {
|
|
691
879
|
repositoryPath,
|
|
692
|
-
}).catch((err) => {
|
|
880
|
+
}).catch((err) => {
|
|
881
|
+
logger.warning("Analytics event failed", { error: String(err) });
|
|
882
|
+
});
|
|
693
883
|
}
|
|
694
884
|
});
|
|
695
885
|
}
|
|
@@ -11,12 +11,11 @@ export declare function buildTraceFileEntry(tracePath: string, result: TracePars
|
|
|
11
11
|
export declare function isGraphQLFile(filePath: string, repositoryPath: string): Promise<boolean>;
|
|
12
12
|
export declare const analyzeChangesInputSchema: {
|
|
13
13
|
repositoryPath: z.ZodString;
|
|
14
|
+
repository: z.ZodString;
|
|
14
15
|
scope: z.ZodOptional<z.ZodDefault<z.ZodEnum<["full_repo", "branch_diff"]>>>;
|
|
15
16
|
baseBranch: z.ZodOptional<z.ZodString>;
|
|
16
17
|
testDirectory: z.ZodOptional<z.ZodString>;
|
|
17
18
|
prNumber: z.ZodOptional<z.ZodNumber>;
|
|
18
|
-
repository: z.ZodOptional<z.ZodString>;
|
|
19
|
-
primaryRepository: z.ZodOptional<z.ZodString>;
|
|
20
19
|
testsRepoDir: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
|
|
21
20
|
includeUncommitted: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
22
21
|
};
|
|
@@ -31,8 +30,8 @@ export interface AnalyzeChangesData {
|
|
|
31
30
|
stateFile?: string;
|
|
32
31
|
repositoryPath: string;
|
|
33
32
|
repositoryName: string;
|
|
34
|
-
/** owner/repo
|
|
35
|
-
repository
|
|
33
|
+
/** owner/repo of the analyzed repository. Always supplied. */
|
|
34
|
+
repository: string;
|
|
36
35
|
/** Other repositories already analyzed into this run's state file. */
|
|
37
36
|
relatedRepositories?: string[];
|
|
38
37
|
analysisScope: string;
|
|
@@ -86,7 +85,7 @@ export declare const analyzeChangesOutputSchema: {
|
|
|
86
85
|
stateFile: z.ZodOptional<z.ZodString>;
|
|
87
86
|
repositoryPath: z.ZodString;
|
|
88
87
|
repositoryName: z.ZodString;
|
|
89
|
-
repository: z.
|
|
88
|
+
repository: z.ZodString;
|
|
90
89
|
relatedRepositories: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
91
90
|
analysisScope: z.ZodString;
|
|
92
91
|
planOnly: z.ZodBoolean;
|
|
@@ -132,8 +131,8 @@ export declare const analyzeChangesOutputSchema: {
|
|
|
132
131
|
analysedWorkspaceFile: z.ZodString;
|
|
133
132
|
}, "strip", z.ZodTypeAny, {
|
|
134
133
|
message: string;
|
|
135
|
-
kind: "workspace-disagreement";
|
|
136
134
|
serviceName: string;
|
|
135
|
+
kind: "workspace-disagreement";
|
|
137
136
|
field: "authHeader" | "authScheme" | "authType";
|
|
138
137
|
primaryWorkspaceFile: string;
|
|
139
138
|
analysedWorkspaceFile: string;
|
|
@@ -141,8 +140,8 @@ export declare const analyzeChangesOutputSchema: {
|
|
|
141
140
|
analysed: string;
|
|
142
141
|
}, {
|
|
143
142
|
message: string;
|
|
144
|
-
kind: "workspace-disagreement";
|
|
145
143
|
serviceName: string;
|
|
144
|
+
kind: "workspace-disagreement";
|
|
146
145
|
field: "authHeader" | "authScheme" | "authType";
|
|
147
146
|
primaryWorkspaceFile: string;
|
|
148
147
|
analysedWorkspaceFile: string;
|
|
@@ -157,8 +156,8 @@ export declare const analyzeChangesOutputSchema: {
|
|
|
157
156
|
openApiSpecPath?: string | undefined;
|
|
158
157
|
authFindings?: {
|
|
159
158
|
message: string;
|
|
160
|
-
kind: "workspace-disagreement";
|
|
161
159
|
serviceName: string;
|
|
160
|
+
kind: "workspace-disagreement";
|
|
162
161
|
field: "authHeader" | "authScheme" | "authType";
|
|
163
162
|
primaryWorkspaceFile: string;
|
|
164
163
|
analysedWorkspaceFile: string;
|
|
@@ -173,8 +172,8 @@ export declare const analyzeChangesOutputSchema: {
|
|
|
173
172
|
openApiSpecPath?: string | undefined;
|
|
174
173
|
authFindings?: {
|
|
175
174
|
message: string;
|
|
176
|
-
kind: "workspace-disagreement";
|
|
177
175
|
serviceName: string;
|
|
176
|
+
kind: "workspace-disagreement";
|
|
178
177
|
field: "authHeader" | "authScheme" | "authType";
|
|
179
178
|
primaryWorkspaceFile: string;
|
|
180
179
|
analysedWorkspaceFile: string;
|