@skyramp/mcp 0.4.1 → 0.4.2-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (543) hide show
  1. package/build/adapters/jestAdapter.js +23 -5
  2. package/build/adapters/mochaAdapter.js +7 -1
  3. package/build/adapters/playwrightAdapter.js +3 -1
  4. package/build/adapters/pytestAdapter.js +14 -3
  5. package/build/commands/localDevTestChangesCommand.js +1 -0
  6. package/build/commands/recommendTestsAndExecuteCommand.js +5 -6
  7. package/build/commands/testThisEndpointCommand.js +16 -4
  8. package/build/index.js +34 -4
  9. package/build/playwright/blueprintDigest.js +28 -7
  10. package/build/playwright/registerPlaywrightTools.js +33 -28
  11. package/build/playwright/traceRecordingPrompt.js +9 -2
  12. package/build/prompts/code-reuse.js +95 -29
  13. package/build/prompts/fix-error-prompt.d.ts +9 -1
  14. package/build/prompts/fix-error-prompt.js +31 -28
  15. package/build/prompts/local-dev/local-dev-plan.d.ts +3 -0
  16. package/build/prompts/local-dev/local-dev-plan.js +3 -1
  17. package/build/prompts/local-dev/local-dev-prompts.d.ts +1 -1
  18. package/build/prompts/local-dev/local-dev-prompts.js +30 -3
  19. package/build/prompts/modularization/integration-test-modularization.js +13 -6
  20. package/build/prompts/modularization/ui-test-modularization.js +1 -1
  21. package/build/prompts/personas.js +1 -1
  22. package/build/prompts/pom-aware-code-reuse.js +7 -9
  23. package/build/prompts/reuse-hand-off.d.ts +64 -0
  24. package/build/prompts/reuse-hand-off.js +130 -0
  25. package/build/prompts/shared-helper-policy.d.ts +88 -2
  26. package/build/prompts/shared-helper-policy.js +145 -11
  27. package/build/prompts/sut-setup/modes/adaptWorkflowPrompt.js +1 -1
  28. package/build/prompts/sut-setup/modes/dockerComposePrompt.js +1 -1
  29. package/build/prompts/sut-setup/shared.d.ts +4 -1
  30. package/build/prompts/sut-setup/shared.js +2 -2
  31. package/build/prompts/test-maintenance/actionsInstructions.d.ts +19 -11
  32. package/build/prompts/test-maintenance/actionsInstructions.js +47 -26
  33. package/build/prompts/test-maintenance/drift-analysis-prompt.js +3 -2
  34. package/build/prompts/test-maintenance/driftAnalysisSections.js +5 -3
  35. package/build/prompts/test-maintenance/driftAnalysisShared.js +4 -2
  36. package/build/prompts/test-maintenance/uiDriftAnalysisSections.js +7 -4
  37. package/build/prompts/test-recommendation/recommendationSections.js +19 -8
  38. package/build/prompts/test-recommendation/registerRecommendTestsPrompt.js +5 -2
  39. package/build/prompts/test-recommendation/test-recommendation-prompt.js +10 -7
  40. package/build/prompts/testbot/testbot-prompts.js +123 -55
  41. package/build/recommendation/answers.js +18 -9
  42. package/build/recommendation/pullRequestText.js +1 -1
  43. package/build/recommendation/registerPlan.js +31 -17
  44. package/build/recommendation/subjectStep.d.ts +8 -10
  45. package/build/recommendation/subjectStep.js +17 -16
  46. package/build/recommendation/types.d.ts +71 -17
  47. package/build/recommendation/types.js +9 -15
  48. package/build/recommendation/verifierContracts.d.ts +7 -3
  49. package/build/recommendation/verifierContracts.js +8 -4
  50. package/build/recommendation/verifiers/changedFile.js +11 -13
  51. package/build/recommendation/verifiers/citedPath.d.ts +8 -0
  52. package/build/recommendation/verifiers/citedPath.js +16 -2
  53. package/build/recommendation/verifiers/coverage.d.ts +2 -2
  54. package/build/recommendation/verifiers/coverage.js +190 -134
  55. package/build/recommendation/verifiers/defects.js +56 -16
  56. package/build/recommendation/verifiers/deliveredMatchesPlan.d.ts +7 -1
  57. package/build/recommendation/verifiers/deliveredMatchesPlan.js +28 -14
  58. package/build/recommendation/verifiers/endpointGrounded.js +14 -8
  59. package/build/recommendation/verifiers/existingCoverage.d.ts +6 -0
  60. package/build/recommendation/verifiers/existingCoverage.js +30 -21
  61. package/build/recommendation/verifiers/expectedOutcome.js +17 -8
  62. package/build/recommendation/verifiers/expectedValueSourced.js +54 -43
  63. package/build/recommendation/verifiers/issueTraceability.d.ts +5 -0
  64. package/build/recommendation/verifiers/issueTraceability.js +64 -7
  65. package/build/recommendation/verifiers/removedElementGuarded.js +19 -11
  66. package/build/recommendation/verifiers/reportedCategory.js +9 -4
  67. package/build/recommendation/verifiers/requirementSourced.js +34 -21
  68. package/build/recommendation/verifiers/screenRoute.js +15 -10
  69. package/build/recommendation/verifiers/statedDifference.js +15 -8
  70. package/build/recommendation/verifiers/uiElementGrounded.js +50 -16
  71. package/build/resources/analysisResources.js +7 -3
  72. package/build/resources/progressResource.js +4 -2
  73. package/build/resources/sutSetupResource.js +20 -2
  74. package/build/resources/testbotResource.js +19 -1
  75. package/build/services/AnalyticsService.js +3 -1
  76. package/build/services/ScenarioGenerationService.js +5 -5
  77. package/build/services/TestDiscoveryService.js +21 -5
  78. package/build/services/TestExecutionService.js +63 -21
  79. package/build/services/TestGenerationService.d.ts +1 -1
  80. package/build/services/TestGenerationService.js +43 -24
  81. package/build/skills/enhanceAssertionsSkill.d.ts +45 -0
  82. package/build/skills/enhanceAssertionsSkill.js +103 -0
  83. package/build/skills/fixTestImportErrorsSkill.d.ts +2 -2
  84. package/build/skills/fixTestImportErrorsSkill.js +2 -2
  85. package/build/skills/skillFiles.d.ts +38 -0
  86. package/build/skills/skillFiles.js +94 -0
  87. package/build/skills/validateAssertionAlignmentSkill.d.ts +34 -0
  88. package/build/skills/validateAssertionAlignmentSkill.js +59 -0
  89. package/build/tool-phases.js +4 -0
  90. package/build/tools/auth/loginTool.js +3 -1
  91. package/build/tools/auth/logoutTool.js +3 -1
  92. package/build/tools/code-refactor/alignAssertionsTool.d.ts +2 -0
  93. package/build/tools/code-refactor/alignAssertionsTool.js +51 -0
  94. package/build/tools/code-refactor/assertion-state.d.ts +1 -1
  95. package/build/tools/code-refactor/assertion-state.js +1 -1
  96. package/build/tools/code-refactor/assertionOperations.d.ts +44 -0
  97. package/build/tools/code-refactor/assertionOperations.js +82 -0
  98. package/build/tools/code-refactor/assertionSkillTools.d.ts +3 -0
  99. package/build/tools/code-refactor/assertionSkillTools.js +86 -0
  100. package/build/tools/code-refactor/codeReuseTool.js +27 -3
  101. package/build/tools/code-refactor/enhanceAssertionsTool.js +19 -83
  102. package/build/tools/code-refactor/gate-markers.d.ts +51 -0
  103. package/build/tools/code-refactor/gate-markers.js +95 -0
  104. package/build/tools/code-refactor/retrofit-state.d.ts +3 -1
  105. package/build/tools/code-refactor/retrofit-state.js +44 -2
  106. package/build/tools/code-refactor/reuse-outcome.d.ts +23 -1
  107. package/build/tools/code-refactor/reuse-outcome.js +36 -13
  108. package/build/tools/code-refactor/reuse-state.d.ts +90 -16
  109. package/build/tools/code-refactor/reuse-state.js +191 -61
  110. package/build/tools/code-refactor/utils-verify-gates.d.ts +4 -0
  111. package/build/tools/code-refactor/utils-verify-gates.js +252 -27
  112. package/build/tools/code-refactor/verify-gates.d.ts +15 -1
  113. package/build/tools/code-refactor/verify-gates.js +36 -4
  114. package/build/tools/enrichTestWithMocksTool.d.ts +1 -1
  115. package/build/tools/enrichTestWithMocksTool.js +9 -5
  116. package/build/tools/executeSkyrampTestTool.d.ts +22 -1
  117. package/build/tools/executeSkyrampTestTool.js +571 -271
  118. package/build/tools/execution-video-state.js +1 -1
  119. package/build/tools/fixErrorTool.js +5 -6
  120. package/build/tools/generate-tests/batchMockGenerationTool.js +1 -1
  121. package/build/tools/generate-tests/generateBatchScenarioRestTool.js +114 -73
  122. package/build/tools/generate-tests/generateContractRestTool.js +34 -16
  123. package/build/tools/generate-tests/generateE2ERestTool.d.ts +1 -0
  124. package/build/tools/generate-tests/generateE2ERestTool.js +9 -1
  125. package/build/tools/generate-tests/generateIntegrationRestTool.js +22 -7
  126. package/build/tools/generate-tests/generateMockRestTool.js +3 -1
  127. package/build/tools/generate-tests/generateUIRestTool.d.ts +2 -0
  128. package/build/tools/generate-tests/generateUIRestTool.js +11 -2
  129. package/build/tools/generate-tests/loadTestSchema.js +1 -3
  130. package/build/tools/generate-tests/planGuard.js +6 -3
  131. package/build/tools/generate-tests/scenarioFileIdentity.js +4 -1
  132. package/build/tools/generate-tests/scenarioLint.js +17 -5
  133. package/build/tools/generate-tests/trace-reuse-guard.js +5 -2
  134. package/build/tools/generateEnrichedIntegrationTestTool.js +9 -3
  135. package/build/tools/one-click/oneClickTool.js +3 -1
  136. package/build/tools/preflightMockCheckTool.js +23 -7
  137. package/build/tools/runExistingTestsTool.d.ts +1 -1
  138. package/build/tools/runExistingTestsTool.js +43 -21
  139. package/build/tools/submitReportTool.d.ts +51 -12
  140. package/build/tools/submitReportTool.js +860 -161
  141. package/build/tools/test-management/actionsTool.js +210 -51
  142. package/build/tools/test-management/analyzeChangesTool.d.ts +4 -5
  143. package/build/tools/test-management/analyzeChangesTool.js +127 -68
  144. package/build/tools/test-management/analyzeTestHealthTool.js +35 -13
  145. package/build/tools/test-management/registerTestPlanTool.d.ts +44 -34
  146. package/build/tools/test-management/registerTestPlanTool.js +255 -111
  147. package/build/tools/test-management/resolveScreenTool.js +33 -9
  148. package/build/tools/trace/startTraceCollectionTool.js +3 -1
  149. package/build/tools/trace/stopTraceCollectionTool.js +41 -5
  150. package/build/tools/verifyTestDependenciesTool.d.ts +3 -0
  151. package/build/tools/verifyTestDependenciesTool.js +54 -0
  152. package/build/tools/workspace/initScanWorkspaceTool.js +9 -3
  153. package/build/tools/workspace/initializeWorkspaceTool.js +3 -1
  154. package/build/types/AssertionOutcome.d.ts +1 -1
  155. package/build/types/EnhanceType.d.ts +6 -0
  156. package/build/types/EnhanceType.js +1 -0
  157. package/build/types/ExternalTestExecution.d.ts +2 -2
  158. package/build/types/RepositoryAnalysis.d.ts +0 -40
  159. package/build/types/ReuseOutcome.d.ts +96 -4
  160. package/build/types/ReuseOutcome.js +16 -0
  161. package/build/types/StepMethod.js +20 -6
  162. package/build/types/TestAnalysis.d.ts +10 -2
  163. package/build/types/TestExecution.d.ts +45 -0
  164. package/build/types/TestRecommendation.d.ts +1 -1
  165. package/build/types/TestRecommendation.js +4 -1
  166. package/build/types/TestTypes.d.ts +13 -0
  167. package/build/types/TestTypes.js +34 -3
  168. package/build/types/TestbotPromptOptions.d.ts +9 -1
  169. package/build/types/TestbotReport.d.ts +45 -9
  170. package/build/utils/AnalysisStateManager.d.ts +137 -27
  171. package/build/utils/AnalysisStateManager.js +227 -43
  172. package/build/utils/assertion-verify/api-shared-lints.js +34 -16
  173. package/build/utils/assertion-verify/metrics.js +39 -6
  174. package/build/utils/assertion-verify/ui-lints.js +4 -2
  175. package/build/utils/branchDiff.js +47 -12
  176. package/build/utils/canonicalJson.js +3 -1
  177. package/build/utils/dartRouteExtractor.js +36 -7
  178. package/build/utils/fixAttempts.d.ts +26 -0
  179. package/build/utils/fixAttempts.js +109 -0
  180. package/build/utils/frontendSelectors.js +23 -4
  181. package/build/utils/generatedTestRecord.d.ts +19 -0
  182. package/build/utils/generatedTestRecord.js +61 -0
  183. package/build/utils/gitStaging.js +7 -2
  184. package/build/utils/initAgent.js +26 -6
  185. package/build/utils/language-helper.js +39 -45
  186. package/build/utils/pathMatching.js +2 -1
  187. package/build/utils/pathSignatures.js +6 -2
  188. package/build/utils/planMatchKeys.d.ts +2 -2
  189. package/build/utils/planMatchKeys.js +20 -14
  190. package/build/utils/pom-catalog-parse.js +7 -2
  191. package/build/utils/pom-scope/import-expansion.js +6 -1
  192. package/build/utils/pom-scope/index.js +50 -12
  193. package/build/utils/pom-scope/scoring.js +13 -3
  194. package/build/utils/pom-scope/selector-extractor.js +16 -3
  195. package/build/utils/pom-scope/strip.d.ts +8 -0
  196. package/build/utils/pom-scope/strip.js +238 -0
  197. package/build/utils/pom-scope/testIdDiscovery.js +14 -2
  198. package/build/utils/pom-verify/__fixtures__/af-style/asset-list.page.d.ts +1 -1
  199. package/build/utils/pom-verify/__fixtures__/af-style/asset-list.page.js +4 -2
  200. package/build/utils/pom-verify/__fixtures__/af-style/report.iframe.page.js +3 -1
  201. package/build/utils/pom-verify/__fixtures__/af-style/workflow-footer.page.js +3 -1
  202. package/build/utils/pom-verify/bindings.js +5 -1
  203. package/build/utils/pom-verify/calls.js +9 -2
  204. package/build/utils/pom-verify/verify.js +27 -5
  205. package/build/utils/pr-comment-parser.js +20 -7
  206. package/build/utils/proxy-terminal.d.ts +19 -1
  207. package/build/utils/proxy-terminal.js +346 -21
  208. package/build/utils/removedUiElements.js +1 -1
  209. package/build/utils/reportLanguage.js +35 -7
  210. package/build/utils/reportVerification.d.ts +14 -8
  211. package/build/utils/reportVerification.js +19 -19
  212. package/build/utils/repositorySlug.d.ts +32 -0
  213. package/build/utils/repositorySlug.js +77 -0
  214. package/build/utils/reuseRouting.js +6 -2
  215. package/build/utils/runSerialized.d.ts +3 -0
  216. package/build/utils/runSerialized.js +39 -0
  217. package/build/utils/screenRoutes.js +74 -18
  218. package/build/utils/sourceRouteExtractor.js +13 -6
  219. package/build/utils/telemetry.d.ts +1 -0
  220. package/build/utils/telemetry.js +8 -5
  221. package/build/utils/testDependencyPolicy.d.ts +9 -0
  222. package/build/utils/testDependencyPolicy.js +788 -0
  223. package/build/utils/testExecutionRecord.d.ts +90 -0
  224. package/build/utils/testExecutionRecord.js +267 -0
  225. package/build/utils/testFileClassification.js +3 -1
  226. package/build/utils/trace-parser.js +62 -14
  227. package/build/utils/urlPath.js +3 -1
  228. package/build/utils/utils-verify/action-key.d.ts +4 -0
  229. package/build/utils/utils-verify/action-key.js +2 -2
  230. package/build/utils/utils-verify/allow.d.ts +122 -3
  231. package/build/utils/utils-verify/allow.js +146 -21
  232. package/build/utils/utils-verify/body-reach.d.ts +120 -0
  233. package/build/utils/utils-verify/body-reach.js +335 -0
  234. package/build/utils/utils-verify/call-sites.d.ts +6 -1
  235. package/build/utils/utils-verify/call-sites.js +72 -8
  236. package/build/utils/utils-verify/delivered-imports.d.ts +43 -0
  237. package/build/utils/utils-verify/delivered-imports.js +84 -0
  238. package/build/utils/utils-verify/fixed-sleep.d.ts +96 -0
  239. package/build/utils/utils-verify/fixed-sleep.js +461 -0
  240. package/build/utils/utils-verify/in-house.d.ts +93 -0
  241. package/build/utils/utils-verify/in-house.js +719 -0
  242. package/build/utils/utils-verify/incumbent.d.ts +3 -0
  243. package/build/utils/utils-verify/incumbent.js +75 -0
  244. package/build/utils/utils-verify/index.d.ts +1 -0
  245. package/build/utils/utils-verify/index.js +1 -0
  246. package/build/utils/utils-verify/language-spec.d.ts +26 -10
  247. package/build/utils/utils-verify/language-spec.js +217 -20
  248. package/build/utils/utils-verify/locate.d.ts +26 -0
  249. package/build/utils/utils-verify/locate.js +125 -23
  250. package/build/utils/utils-verify/module-name.d.ts +40 -0
  251. package/build/utils/utils-verify/module-name.js +98 -0
  252. package/build/utils/utils-verify/parse.d.ts +46 -6
  253. package/build/utils/utils-verify/parse.js +176 -38
  254. package/build/utils/utils-verify/retrofit-equivalence.d.ts +5 -0
  255. package/build/utils/utils-verify/retrofit-equivalence.js +4 -2
  256. package/build/utils/utils-verify/stage.d.ts +5 -0
  257. package/build/utils/utils-verify/stage.js +47 -2
  258. package/build/utils/utils-verify/status-once.d.ts +62 -0
  259. package/build/utils/utils-verify/status-once.js +207 -0
  260. package/build/utils/utils-verify/typecheck.d.ts +61 -0
  261. package/build/utils/utils-verify/typecheck.js +338 -0
  262. package/build/utils/utils-verify/verify.d.ts +76 -1
  263. package/build/utils/utils-verify/verify.js +516 -44
  264. package/build/utils/versions.d.ts +3 -3
  265. package/build/utils/versions.js +1 -1
  266. package/build/utils/workspaceAuth.js +107 -37
  267. package/build/workspace/queryParamResolution.js +11 -4
  268. package/build/workspace/workspace.js +7 -7
  269. package/node_modules/playwright/ThirdPartyNotices.txt +19 -19
  270. package/node_modules/playwright/lib/mcp/skyramp/assertTool.js +8 -2
  271. package/node_modules/playwright/lib/mcp/skyramp/common/cssValue.js +87 -0
  272. package/node_modules/playwright/lib/mcp/skyramp/loadTraceTool.js +31 -0
  273. package/node_modules/playwright/lib/mcp/skyramp/skyRampImport.js +3 -0
  274. package/node_modules/playwright/lib/mcp/skyramp/traceRecordingBackend.js +181 -15
  275. package/node_modules/playwright/lib/mcp/test/skyRampExport.js +24 -0
  276. package/node_modules/playwright/lib/transform/babelBundleImpl.js +2353 -190
  277. package/node_modules/playwright/node_modules/playwright-core/ThirdPartyNotices.txt +62 -34
  278. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/.package-lock.json +72 -41
  279. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/@hono/node-server/dist/serve-static.js +1 -1
  280. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/@hono/node-server/dist/serve-static.mjs +1 -1
  281. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/@hono/node-server/package.json +2 -2
  282. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/README.md +16 -1
  283. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/index.js +4 -20
  284. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/lib/read.js +17 -17
  285. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/lib/types/json.js +60 -32
  286. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/lib/types/raw.js +3 -3
  287. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/lib/types/text.js +3 -3
  288. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/lib/types/urlencoded.js +16 -20
  289. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/lib/utils.js +18 -16
  290. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/node_modules/content-type/LICENSE +22 -0
  291. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/node_modules/content-type/README.md +71 -0
  292. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/node_modules/content-type/dist/index.d.ts +46 -0
  293. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/node_modules/content-type/dist/index.js +176 -0
  294. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/node_modules/content-type/dist/index.js.map +1 -0
  295. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/node_modules/content-type/package.json +52 -0
  296. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/package.json +23 -10
  297. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/es-object-atoms/CHANGELOG.md +21 -14
  298. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/es-object-atoms/isObject.d.ts +1 -1
  299. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/es-object-atoms/package.json +6 -7
  300. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/es-object-atoms/tsconfig.json +1 -0
  301. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/index.js +266 -45
  302. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/lib/schemes.js +9 -4
  303. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/lib/utils.js +396 -92
  304. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/package.json +1 -1
  305. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/component-safe-serialization.test.js +163 -0
  306. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/equal.test.js +31 -3
  307. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/fixtures/uri-js-parse.json +2 -0
  308. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/ipv6-canonical.test.js +34 -0
  309. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/ipv6-validation.test.js +124 -0
  310. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/malformed-percent.test.js +77 -0
  311. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/malformed-urn.test.js +61 -0
  312. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/parse.test.js +7 -3
  313. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/query-fragment-normalization.test.js +33 -0
  314. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/reserved-path-normalization.test.js +109 -0
  315. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/scheme-validation.test.js +124 -0
  316. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/security-normalization.test.js +101 -0
  317. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/security.test.js +301 -3
  318. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/urn-full-input.test.js +29 -0
  319. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/websocket-query-preservation.test.js +24 -0
  320. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hasown/CHANGELOG.md +7 -0
  321. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hasown/index.d.ts +0 -1
  322. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hasown/package.json +4 -5
  323. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/client/client.js +30 -16
  324. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/client/utils.js +4 -1
  325. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/context.js +32 -13
  326. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/helper/accepts/accepts.js +36 -2
  327. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/helper/proxy/index.js +4 -0
  328. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/helper/ssg/ssg.js +1 -1
  329. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/helper/ssg/utils.js +30 -10
  330. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/helper/streaming/sse.js +5 -4
  331. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/hono-base.js +10 -8
  332. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/jsx/base.js +44 -23
  333. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/jsx/components.js +25 -26
  334. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/jsx/context.js +5 -5
  335. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/jsx/dom/render.js +2 -0
  336. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/jsx/dom/server.js +5 -1
  337. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/jsx/hooks/index.js +16 -13
  338. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/jsx/intrinsic-element/components.js +3 -3
  339. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/jsx/streaming.js +4 -5
  340. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/cache/index.js +103 -8
  341. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/compress/index.js +5 -0
  342. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/cors/index.js +17 -14
  343. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/csrf/index.js +1 -1
  344. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/etag/digest.js +47 -1
  345. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/etag/index.js +7 -4
  346. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/jwk/jwk.js +9 -4
  347. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/jwt/jwt.js +9 -4
  348. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/language/language.js +10 -6
  349. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/method-not-allowed/index.js +90 -0
  350. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/pretty-json/index.js +3 -1
  351. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/secure-headers/secure-headers.js +16 -7
  352. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/request.js +20 -13
  353. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/router/linear-router/router.js +7 -2
  354. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/router/pattern-router/router.js +3 -9
  355. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/router/reg-exp-router/node.js +65 -59
  356. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/router/reg-exp-router/router.js +71 -128
  357. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/router/reg-exp-router/trie.js +14 -5
  358. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/router/trie-router/node.js +47 -70
  359. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/router/trie-router/router.js +3 -11
  360. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/router/utils.js +27 -0
  361. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/router.js +1 -1
  362. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/utils/accept.js +1 -1
  363. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/utils/body.js +21 -3
  364. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/utils/cookie.js +4 -3
  365. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/utils/ipaddr.js +5 -3
  366. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/utils/stream.js +12 -3
  367. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/utils/url.js +19 -11
  368. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/client/client.js +30 -16
  369. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/client/utils.js +4 -1
  370. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/context.js +32 -13
  371. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/helper/accepts/accepts.js +36 -2
  372. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/helper/proxy/index.js +4 -0
  373. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/helper/ssg/ssg.js +1 -1
  374. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/helper/ssg/utils.js +30 -10
  375. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/helper/streaming/sse.js +5 -4
  376. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/hono-base.js +10 -8
  377. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/jsx/base.js +41 -23
  378. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/jsx/components.js +26 -27
  379. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/jsx/context.js +6 -6
  380. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/jsx/dom/render.js +2 -0
  381. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/jsx/dom/server.js +5 -1
  382. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/jsx/hooks/index.js +16 -13
  383. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/jsx/intrinsic-element/components.js +4 -4
  384. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/jsx/streaming.js +5 -6
  385. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/cache/index.js +103 -8
  386. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/compress/index.js +5 -0
  387. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/cors/index.js +17 -14
  388. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/csrf/index.js +1 -1
  389. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/etag/digest.js +47 -1
  390. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/etag/index.js +7 -4
  391. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/jwk/jwk.js +9 -4
  392. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/jwt/jwt.js +9 -4
  393. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/language/language.js +10 -6
  394. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/method-not-allowed/index.js +68 -0
  395. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/pretty-json/index.js +3 -1
  396. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/secure-headers/secure-headers.js +16 -7
  397. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/request.js +21 -14
  398. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/router/linear-router/router.js +7 -2
  399. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/router/pattern-router/router.js +3 -9
  400. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/router/reg-exp-router/node.js +61 -58
  401. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/router/reg-exp-router/router.js +77 -129
  402. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/router/reg-exp-router/trie.js +14 -5
  403. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/router/trie-router/node.js +47 -70
  404. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/router/trie-router/router.js +3 -11
  405. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/router/utils.js +5 -0
  406. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/router.js +1 -1
  407. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/adapter/aws-lambda/types.d.ts +9 -0
  408. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/client/types.d.ts +1 -1
  409. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/context.d.ts +6 -2
  410. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/hono-base.d.ts +4 -3
  411. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/jsx/base.d.ts +7 -2
  412. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/jsx/dom/index.d.ts +5 -5
  413. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/jsx/dom/intrinsic-element/components.d.ts +2 -2
  414. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/jsx/dom/server.d.ts +5 -5
  415. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/jsx/hooks/index.d.ts +8 -6
  416. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/jsx/index.d.ts +5 -5
  417. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/middleware/cache/index.d.ts +6 -4
  418. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/middleware/combine/index.d.ts +1 -1
  419. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/middleware/cors/index.d.ts +1 -1
  420. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/middleware/jsx-renderer/index.d.ts +2 -2
  421. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/middleware/jwk/jwk.d.ts +2 -0
  422. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/middleware/jwt/jwt.d.ts +2 -0
  423. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/middleware/method-not-allowed/index.d.ts +49 -0
  424. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/middleware/secure-headers/permissions-policy.d.ts +3 -3
  425. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/router/reg-exp-router/node.d.ts +4 -1
  426. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/router/reg-exp-router/trie.d.ts +2 -1
  427. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/router/trie-router/node.d.ts +1 -2
  428. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/router/trie-router/router.d.ts +0 -1
  429. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/router/utils.d.ts +1 -0
  430. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/router.d.ts +1 -1
  431. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/utils/headers.d.ts +2 -2
  432. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/utils/url.d.ts +5 -0
  433. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/utils/accept.js +1 -1
  434. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/utils/body.js +21 -3
  435. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/utils/cookie.js +5 -4
  436. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/utils/ipaddr.js +5 -3
  437. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/utils/stream.js +12 -3
  438. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/utils/url.js +17 -10
  439. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/package.json +11 -4
  440. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/README.md +173 -143
  441. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/address-error.d.ts +11 -0
  442. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/address-error.js.map +1 -1
  443. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/common.d.ts +49 -0
  444. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/common.js +79 -4
  445. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/common.js.map +1 -1
  446. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/ipv4.d.ts +78 -5
  447. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/ipv4.js +119 -24
  448. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/ipv4.js.map +1 -1
  449. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/ipv6.d.ts +151 -10
  450. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/ipv6.js +316 -90
  451. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/ipv6.js.map +1 -1
  452. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/v4/constants.d.ts +12 -0
  453. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/v4/constants.js +45 -2
  454. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/v4/constants.js.map +1 -1
  455. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/v6/constants.d.ts +14 -0
  456. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/v6/constants.js +50 -3
  457. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/v6/constants.js.map +1 -1
  458. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/package.json +6 -4
  459. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/.github/THREAT_MODEL.md +3 -3
  460. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/CHANGELOG.md +26 -0
  461. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/README.md +19 -1
  462. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/dist/qs.js +25 -25
  463. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/eslint.config.mjs +1 -1
  464. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/lib/parse.js +16 -6
  465. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/lib/stringify.js +23 -8
  466. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/lib/utils.js +57 -11
  467. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/package.json +8 -7
  468. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/test/parse.js +419 -0
  469. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/test/stringify.js +317 -0
  470. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/test/utils.js +206 -0
  471. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/side-channel/CHANGELOG.md +10 -0
  472. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/side-channel/README.md +1 -1
  473. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/side-channel/index.js +5 -2
  474. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/side-channel/package.json +10 -10
  475. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/side-channel/test/index.js +16 -0
  476. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/type-is/index.js +8 -18
  477. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/type-is/node_modules/content-type/LICENSE +22 -0
  478. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/type-is/node_modules/content-type/README.md +71 -0
  479. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/type-is/node_modules/content-type/dist/index.d.ts +46 -0
  480. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/type-is/node_modules/content-type/dist/index.js +176 -0
  481. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/type-is/node_modules/content-type/dist/index.js.map +1 -0
  482. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/type-is/node_modules/content-type/package.json +52 -0
  483. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/type-is/package.json +9 -5
  484. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/package-lock.json +72 -41
  485. package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/.package-lock.json +6 -6
  486. package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/brace-expansion/README.md +23 -1
  487. package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/brace-expansion/index.js +265 -86
  488. package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/brace-expansion/package.json +1 -1
  489. package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/README.md +173 -143
  490. package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/address-error.d.ts +11 -0
  491. package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/address-error.js.map +1 -1
  492. package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/common.d.ts +49 -0
  493. package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/common.js +79 -4
  494. package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/common.js.map +1 -1
  495. package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/ipv4.d.ts +78 -5
  496. package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/ipv4.js +119 -24
  497. package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/ipv4.js.map +1 -1
  498. package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/ipv6.d.ts +151 -10
  499. package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/ipv6.js +316 -90
  500. package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/ipv6.js.map +1 -1
  501. package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/v4/constants.d.ts +12 -0
  502. package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/v4/constants.js +45 -2
  503. package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/v4/constants.js.map +1 -1
  504. package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/v6/constants.d.ts +14 -0
  505. package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/v6/constants.js +50 -3
  506. package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/v6/constants.js.map +1 -1
  507. package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/package.json +6 -4
  508. package/node_modules/playwright/node_modules/playwright-core/bundles/utils/package-lock.json +6 -6
  509. package/node_modules/playwright/node_modules/playwright-core/lib/cli/program.js +18 -9
  510. package/node_modules/playwright/node_modules/playwright-core/lib/mcpBundleImpl/index.js +47 -47
  511. package/node_modules/playwright/node_modules/playwright-core/lib/server/codegen/skyramp/jsonlReader.js +3 -0
  512. package/node_modules/playwright/node_modules/playwright-core/lib/server/recorder/recorderRunner.js +42 -0
  513. package/node_modules/playwright/node_modules/playwright-core/lib/utilsBundleImpl/index.js +121 -121
  514. package/node_modules/playwright/node_modules/playwright-core/lib/vite/traceViewer/{index.B7KbSQcC.js → index.BAkLd5DX.js} +1 -1
  515. package/node_modules/playwright/node_modules/playwright-core/lib/vite/traceViewer/index.html +1 -1
  516. package/node_modules/playwright/node_modules/playwright-core/package.json +1 -1
  517. package/node_modules/playwright/node_modules/playwright-core/src/cli/program.ts +31 -9
  518. package/node_modules/playwright/node_modules/playwright-core/src/server/codegen/skyramp/jsonlReader.ts +1 -0
  519. package/node_modules/playwright/node_modules/playwright-core/src/server/recorder/recorderRunner.ts +57 -1
  520. package/node_modules/playwright/package.json +2 -2
  521. package/package.json +7 -6
  522. package/plugin/prompts/code-reuse/hand-off.md +30 -0
  523. package/plugin/prompts/generate-tests/generation.md +1 -1
  524. package/plugin/prompts/plan-tests.md +14 -14
  525. package/plugin/prompts/testbot-task1.md +4 -2
  526. package/plugin/skills/enhance-assertions/SKILL.md +25 -0
  527. package/plugin/skills/enhance-assertions/reference/contract.md +51 -0
  528. package/plugin/skills/enhance-assertions/reference/integration.md +58 -0
  529. package/plugin/skills/enhance-assertions/reference/shared-rules.md +220 -0
  530. package/plugin/skills/enhance-assertions/reference/ui.md +373 -0
  531. package/plugin/skills/fix-test-import-errors/SKILL.md +44 -50
  532. package/plugin/skills/validate-assertion-alignment-post-execution/SKILL.md +32 -0
  533. package/plugin/skills/validate-assertion-alignment-post-execution/reference/checks.md +44 -0
  534. package/plugin/skills/validate-assertion-alignment-post-execution/reference/evidence.md +47 -0
  535. package/build/prompts/enhance-assertions/contractProviderAssertionsPrompt.d.ts +0 -2
  536. package/build/prompts/enhance-assertions/contractProviderAssertionsPrompt.js +0 -29
  537. package/build/prompts/enhance-assertions/integrationAssertionsPrompt.d.ts +0 -2
  538. package/build/prompts/enhance-assertions/integrationAssertionsPrompt.js +0 -36
  539. package/build/prompts/enhance-assertions/sharedAssertionRules.d.ts +0 -16
  540. package/build/prompts/enhance-assertions/sharedAssertionRules.js +0 -284
  541. package/build/prompts/enhance-assertions/uiAssertionsPrompt.d.ts +0 -2
  542. package/build/prompts/enhance-assertions/uiAssertionsPrompt.js +0 -388
  543. package/node_modules/playwright/node_modules/playwright-core/.DS_Store +0 -0
@@ -25,7 +25,7 @@ import { TOOL_RESOLVE_SCREEN } from "../../toolNames.js";
25
25
  import { logger } from "../../utils/logger.js";
26
26
  import { lastKnownBrowserUrl } from "../../playwright/blueprintDigestStore.js";
27
27
  import { readWorkspaceServices } from "../../prompts/prompt-utils.js";
28
- import { createScreenRouteLookup } from "../../utils/screenRoutes.js";
28
+ import { createScreenRouteLookup, } from "../../utils/screenRoutes.js";
29
29
  // ── Route patterns ──────────────────────────────────────────────────────────
30
30
  /** A pattern segment, in the four spellings the frameworks this run meets use:
31
31
  * TanStack `$id`, React/Vue `:id`, Next `[id]`, OpenAPI-ish `{id}`. Mirrors the
@@ -55,7 +55,9 @@ export function urlPath(raw) {
55
55
  return new URL(value).pathname.replace(/\/+$/, "") || "/";
56
56
  }
57
57
  catch {
58
- return value.startsWith("/") ? value.split(/[?#]/)[0].replace(/\/+$/, "") || "/" : "";
58
+ return value.startsWith("/")
59
+ ? value.split(/[?#]/)[0].replace(/\/+$/, "") || "/"
60
+ : "";
59
61
  }
60
62
  }
61
63
  function origin(raw) {
@@ -112,7 +114,9 @@ export function bindFromLocation(location, patterns) {
112
114
  if (!best || literals > best.literals)
113
115
  best = { pattern, values, literals };
114
116
  }
115
- return best ? { pattern: best.pattern, values: best.values, source: location.source } : undefined;
117
+ return best
118
+ ? { pattern: best.pattern, values: best.values, source: location.source }
119
+ : undefined;
116
120
  }
117
121
  /** The pattern with its bound parameters substituted, prefixed by the origin when
118
122
  * one is known. An unbound parameter is left in its own spelling rather than
@@ -198,7 +202,13 @@ export function buildResolveScreenResult(input) {
198
202
  "and do not invent one — a plausible wrong id renders an empty page that looks real.");
199
203
  }
200
204
  lines.push("`mountChain` is the import path from the route file to the changed file: check it rather than trust it.");
201
- return { status: "resolved", candidates: resolved, notOn, needs: [...needs], summary: lines.join(" ") };
205
+ return {
206
+ status: "resolved",
207
+ candidates: resolved,
208
+ notOn,
209
+ needs: [...needs],
210
+ summary: lines.join(" "),
211
+ };
202
212
  }
203
213
  // ── Workspace default for baseUrl ───────────────────────────────────────────
204
214
  /**
@@ -215,7 +225,11 @@ export async function workspaceUiBaseUrl(repositoryPath) {
215
225
  const services = (await readWorkspaceServices(repositoryPath));
216
226
  const withUrl = services.filter((service) => typeof service?.api?.baseUrl === "string" && service.api.baseUrl);
217
227
  const playwright = withUrl.filter((service) => service.framework === "playwright");
218
- const chosen = playwright.length === 1 ? playwright[0] : withUrl.length === 1 ? withUrl[0] : undefined;
228
+ const chosen = playwright.length === 1
229
+ ? playwright[0]
230
+ : withUrl.length === 1
231
+ ? withUrl[0]
232
+ : undefined;
219
233
  return chosen ? origin(chosen.api?.baseUrl) : undefined;
220
234
  }
221
235
  catch {
@@ -224,7 +238,9 @@ export async function workspaceUiBaseUrl(repositoryPath) {
224
238
  }
225
239
  // ── Registration ────────────────────────────────────────────────────────────
226
240
  const inputSchema = {
227
- repositoryPath: z.string().describe("Absolute path to the repository checkout that holds the frontend file."),
241
+ repositoryPath: z
242
+ .string()
243
+ .describe("Absolute path to the repository checkout that holds the frontend file."),
228
244
  changedFile: z
229
245
  .string()
230
246
  .describe("Repository-relative path of the frontend file the test is about — the file the diff changed, " +
@@ -244,14 +260,19 @@ const outputSchema = {
244
260
  .array(z.object({
245
261
  url: z.string(),
246
262
  routePattern: z.string(),
247
- params: z.record(z.object({ value: z.string(), from: z.enum(["currentUrl", "blueprint", "unresolved"]) })),
263
+ params: z.record(z.object({
264
+ value: z.string(),
265
+ from: z.enum(["currentUrl", "blueprint", "unresolved"]),
266
+ })),
248
267
  mountChain: z.array(z.string()),
249
268
  }))
250
269
  .describe("Each route that renders the file, with the import chain from its route file down to the file."),
251
270
  notOn: z
252
271
  .array(z.string())
253
272
  .describe("The route the browser is currently on, when it is not one that renders the file."),
254
- needs: z.array(z.string()).describe("Route parameters no known value fills. Read them off the app; never invent one."),
273
+ needs: z
274
+ .array(z.string())
275
+ .describe("Route parameters no known value fills. Read them off the app; never invent one."),
255
276
  summary: z.string().describe("The same answer in one paragraph."),
256
277
  };
257
278
  const DESCRIPTION = "Answer which page of the running app renders a changed frontend file, and give the url to open. " +
@@ -284,6 +305,9 @@ export function registerResolveScreenTool(server) {
284
305
  routes: result.candidates.length,
285
306
  needs: result.needs.length,
286
307
  });
287
- return { structuredContent: { ...result }, content: [{ type: "text", text: result.summary }] };
308
+ return {
309
+ structuredContent: { ...result },
310
+ content: [{ type: "text", text: result.summary }],
311
+ };
288
312
  });
289
313
  }
@@ -251,7 +251,9 @@ For detailed documentation visit: https://www.skyramp.dev/docs/load-test/advance
251
251
  prompt: params.prompt,
252
252
  playwright: params.playwright.toString(),
253
253
  };
254
- AnalyticsService.pushMCPToolEvent(TOOL_NAME, errorResult, recordParams).catch((err) => { logger.warning("Analytics event failed", { error: String(err) }); });
254
+ AnalyticsService.pushMCPToolEvent(TOOL_NAME, errorResult, recordParams).catch((err) => {
255
+ logger.warning("Analytics event failed", { error: String(err) });
256
+ });
255
257
  }
256
258
  });
257
259
  }
@@ -51,6 +51,10 @@ For detailed documentation visit: https://www.skyramp.dev/docs/load-test/advance
51
51
  prompt: params.prompt,
52
52
  });
53
53
  const client = new SkyrampClient();
54
+ // Declared outside the try so the catch below can report a leftover window
55
+ // too: traceCollect can throw after the terminal close already failed, and
56
+ // the user is still the only one who can close it.
57
+ let terminalAppendix = "";
54
58
  try {
55
59
  const stopTraceOptions = {
56
60
  output: params.traceOutputFile,
@@ -90,14 +94,44 @@ For detailed documentation visit: https://www.skyramp.dev/docs/load-test/advance
90
94
  if (errList.content.length > 0) {
91
95
  return errList;
92
96
  }
93
- await closeProxyTerminal();
97
+ // Never throws: this sits inside the try that wraps traceCollect, so a
98
+ // throw here would lose the trace over a leftover window.
99
+ const terminalClose = await closeProxyTerminal();
100
+ // Built before traceCollect so the failure response below carries it
101
+ // too: an orphaned window outlives a failed trace just as it does a
102
+ // successful one, and the user is the only one who can close it.
103
+ //
104
+ // Named titles are the trigger, not `closed`. A stop that opened no
105
+ // terminal also reports closed: false, and telling the user to close a
106
+ // window that was never opened is worse than saying nothing.
107
+ const strandedTitles = [
108
+ ...(terminalClose.orphanedTitles ?? []),
109
+ ...(terminalClose.closed || !terminalClose.title
110
+ ? []
111
+ : [terminalClose.title]),
112
+ ];
113
+ if (strandedTitles.length) {
114
+ // Windows can name the exact windows, so it does.
115
+ terminalAppendix =
116
+ `\n\nNote: ${strandedTitles.length === 1 ? "a trace collection terminal window" : `${strandedTitles.length} trace collection terminal windows`} could not be closed automatically and must be closed by hand: ` +
117
+ strandedTitles.map((t) => `"${t}"`).join(", ") +
118
+ `.${terminalClose.reason ? ` (${terminalClose.reason})` : ""}`;
119
+ }
120
+ else if (!terminalClose.closed) {
121
+ // macOS and Linux close by PID and have no title to quote, so the
122
+ // reason carries it. Without this arm a failed close on those
123
+ // platforms is invisible to the user, which is the whole bug.
124
+ terminalAppendix =
125
+ `\n\nNote: the trace collection terminal could not be closed automatically and may still be open` +
126
+ `${terminalClose.reason ? ` (${terminalClose.reason})` : ""}.`;
127
+ }
94
128
  const result = await client.traceCollect(stopTraceOptions);
95
129
  if (result.toLowerCase().includes("failed")) {
96
130
  errorResult = {
97
131
  content: [
98
132
  {
99
133
  type: "text",
100
- text: `Trace collection failed: ${result}`,
134
+ text: `Trace collection failed: ${result}${terminalAppendix}`,
101
135
  },
102
136
  ],
103
137
  isError: true,
@@ -117,7 +151,7 @@ For detailed documentation visit: https://www.skyramp.dev/docs/load-test/advance
117
151
  text: `Trace collection is stopped: ${result}. Trace is generated to given output file
118
152
 
119
153
  **IMPORTANT: GO THROUGH THE TRACE AND LET THE USER KNOW THE ENDPOINT DOMAINS CAPTURED AND MAKE SURE USER WANTS TO INCLUDE THEN FOR INTEGRATION/E2E/LOAD TEST GENERATION.
120
- UI TESTS CAN BE GENERATED USING PLAYWRIGHT FILES ONLY.**${sessionAppendix}`,
154
+ UI TESTS CAN BE GENERATED USING PLAYWRIGHT FILES ONLY.**${sessionAppendix}${terminalAppendix}`,
121
155
  },
122
156
  ],
123
157
  };
@@ -128,7 +162,7 @@ For detailed documentation visit: https://www.skyramp.dev/docs/load-test/advance
128
162
  content: [
129
163
  {
130
164
  type: "text",
131
- text: `Trace generation result: ${error.message}`,
165
+ text: `Trace generation result: ${error.message}${terminalAppendix}`,
132
166
  },
133
167
  ],
134
168
  isError: true,
@@ -140,7 +174,9 @@ For detailed documentation visit: https://www.skyramp.dev/docs/load-test/advance
140
174
  prompt: params.prompt,
141
175
  playwright: params.playwrightEnabled.toString(),
142
176
  };
143
- AnalyticsService.pushMCPToolEvent(TOOL_NAME, errorResult, recordParams).catch((err) => { logger.warning("Analytics event failed", { error: String(err) }); });
177
+ AnalyticsService.pushMCPToolEvent(TOOL_NAME, errorResult, recordParams).catch((err) => {
178
+ logger.warning("Analytics event failed", { error: String(err) });
179
+ });
144
180
  }
145
181
  });
146
182
  }
@@ -0,0 +1,3 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare const VERIFY_TEST_DEPENDENCIES_TOOL = "skyramp_verify_test_dependencies";
3
+ export declare function registerVerifyTestDependenciesTool(server: McpServer): void;
@@ -0,0 +1,54 @@
1
+ import * as path from "path";
2
+ import { z } from "zod";
3
+ import { AnalyticsService } from "../services/AnalyticsService.js";
4
+ import { logger } from "../utils/logger.js";
5
+ import { verifyTestDependencyChanges } from "../utils/testDependencyPolicy.js";
6
+ import { toolError } from "../utils/utils.js";
7
+ export const VERIFY_TEST_DEPENDENCIES_TOOL = "skyramp_verify_test_dependencies";
8
+ const schema = z.object({
9
+ repositoryPath: z
10
+ .string()
11
+ .refine((value) => path.isAbsolute(value), "repositoryPath must be an absolute path")
12
+ .describe("Absolute path to the repository whose working-tree dependency changes should be verified."),
13
+ });
14
+ export function registerVerifyTestDependenciesTool(server) {
15
+ server.registerTool(VERIFY_TEST_DEPENDENCIES_TOOL, {
16
+ description: "Verify that dependency changes made while fixing tests use only approved testing packages and development/test-only manifest scopes.",
17
+ inputSchema: schema.shape,
18
+ _meta: {
19
+ keywords: [
20
+ "dependencies",
21
+ "devDependencies",
22
+ "test dependencies",
23
+ "verification",
24
+ ],
25
+ },
26
+ }, async (params) => {
27
+ let result;
28
+ try {
29
+ const verification = await verifyTestDependencyChanges(params.repositoryPath);
30
+ result = verification.ok
31
+ ? {
32
+ content: [
33
+ {
34
+ type: "text",
35
+ text: `VERIFICATION PASSED — ${verification.checkedFiles.length} dependency file${verification.checkedFiles.length === 1 ? "" : "s"} checked.`,
36
+ },
37
+ ],
38
+ isError: false,
39
+ }
40
+ : toolError("VERIFICATION FAILED — dependency changes are outside the safe test-only policy:\n" +
41
+ verification.violations
42
+ .map((violation) => `- ${violation}`)
43
+ .join("\n") +
44
+ "\nMove approved packages to the required development/test scope, remove unapproved or unrelated manifest edits, then run this verifier again.");
45
+ }
46
+ catch (error) {
47
+ result = toolError(`Test dependency verification failed: ${error.message}`);
48
+ }
49
+ AnalyticsService.pushMCPToolEvent(VERIFY_TEST_DEPENDENCIES_TOOL, result, {
50
+ repositoryPath: params.repositoryPath,
51
+ }).catch((error) => logger.warning("Analytics event failed", { error: String(error) }));
52
+ return result;
53
+ });
54
+ }
@@ -29,13 +29,17 @@ const initScanWorkspaceSchema = z.object({
29
29
  });
30
30
  export function registerInitScanWorkspaceTool(server) {
31
31
  server.registerTool(TOOL_NAME, {
32
- description: "PREREQUISITE for skyramp_init_workspace. " +
32
+ description: "Call this FIRST, before any other Skyramp tool (test generation, execution, analysis), whenever workspacePath is a git repository and .skyramp/workspace.yml does not exist at its root. " +
33
+ "PREREQUISITE for skyramp_init_workspace. " +
33
34
  "Scans a repository and returns instructions for discovering all services, along with a scanToken. " +
34
35
  "Follow the instructions to build the services array, then pass both to skyramp_init_workspace to create the workspace config.",
35
36
  inputSchema: initScanWorkspaceSchema.shape,
36
37
  }, async (params) => {
37
38
  let errorResult;
38
- const recordParams = { workspacePath: params.workspacePath, force: String(params.force || false) };
39
+ const recordParams = {
40
+ workspacePath: params.workspacePath,
41
+ force: String(params.force || false),
42
+ };
39
43
  try {
40
44
  const manager = new WorkspaceConfigManager(params.workspacePath);
41
45
  if ((await manager.exists()) && !params.force) {
@@ -70,7 +74,9 @@ export function registerInitScanWorkspaceTool(server) {
70
74
  return errorResult;
71
75
  }
72
76
  finally {
73
- AnalyticsService.pushMCPToolEvent(TOOL_NAME, errorResult, recordParams).catch((err) => { logger.warning("Analytics event failed", { error: String(err) }); });
77
+ AnalyticsService.pushMCPToolEvent(TOOL_NAME, errorResult, recordParams).catch((err) => {
78
+ logger.warning("Analytics event failed", { error: String(err) });
79
+ });
74
80
  }
75
81
  });
76
82
  }
@@ -273,7 +273,9 @@ export function registerInitializeWorkspaceTool(server) {
273
273
  return errorResult;
274
274
  }
275
275
  finally {
276
- AnalyticsService.pushMCPToolEvent(TOOL_NAME, errorResult, recordParams).catch((err) => { logger.warning("Analytics event failed", { error: String(err) }); });
276
+ AnalyticsService.pushMCPToolEvent(TOOL_NAME, errorResult, recordParams).catch((err) => {
277
+ logger.warning("Analytics event failed", { error: String(err) });
278
+ });
277
279
  }
278
280
  });
279
281
  }
@@ -1,5 +1,5 @@
1
1
  import type { TestType } from "./TestTypes.js";
2
- import type { EnhanceType } from "../prompts/enhance-assertions/sharedAssertionRules.js";
2
+ import type { EnhanceType } from "./EnhanceType.js";
3
3
  /**
4
4
  * Server-derived assertion-enhancement state. Lives in types/ (not beside
5
5
  * assertion-state.ts) because AnalysisStateManager embeds AssertionRecord in
@@ -0,0 +1,6 @@
1
+ /**
2
+ * The context an assertion enhancement runs in. Kept in its own leaf module so
3
+ * the run-state types, the verify layer, and the skill layer can all share the
4
+ * union without importing each other.
5
+ */
6
+ export type EnhanceType = "generation" | "maintenance";
@@ -0,0 +1 @@
1
+ export {};
@@ -62,6 +62,6 @@ export interface ExternalTestRunRecord extends ParsedExternalRun {
62
62
  mode: "confirm" | "verify";
63
63
  /** ISO timestamp when the run completed. */
64
64
  ranAt: string;
65
- /** owner/repo this run targeted (multi-repo runs); absent → primary. */
66
- repository?: string;
65
+ /** owner/repo this run targeted. */
66
+ repository: string;
67
67
  }
@@ -1,6 +1,4 @@
1
1
  import { z } from "zod";
2
- import { ScenarioCategory } from "./TestRecommendation.js";
3
- import { TestType } from "./TestTypes.js";
4
2
  import type { ProjectType, DeploymentPattern } from "../utils/projectMetadata.js";
5
3
  /**
6
4
  * Repository Analysis Types
@@ -98,44 +96,6 @@ export declare enum ScenarioSource {
98
96
  Documentation = "documentation",
99
97
  AgentEnriched = "agent-enriched"
100
98
  }
101
- export interface PlanScenario {
102
- scenarioName: string;
103
- description: string;
104
- category: ScenarioCategory;
105
- priority: "high" | "medium" | "low";
106
- steps: ScenarioStep[];
107
- chainingKeys: string[];
108
- requiresAuth: boolean;
109
- estimatedComplexity: "simple" | "moderate" | "complex";
110
- source?: ScenarioSource;
111
- /** Only integration, contract, e2e, and ui are valid for drafted scenarios. */
112
- testType?: TestType;
113
- /** Internal marker for destructive sibling auth-boundary scenarios. */
114
- isAttackSurfaceSecurityBoundary?: boolean;
115
- /**
116
- * The specific bug or formula this test is designed to catch.
117
- * Written during scenario drafting when source code is read.
118
- * Examples:
119
- * "discount formula: total_amount = subtotal * (1 - discount_value / 100)"
120
- * "items not recalculated after PATCH — total_amount stays at old value"
121
- * "missing 404 guard on non-existent order_id"
122
- * Used by the testbot to compute exact assertion values instead of null-checks.
123
- */
124
- bugCatchingTarget?: string;
125
- /**
126
- * The endpoints this test is about, resolved one time by
127
- * `resolveSubjectEndpoints` where the PR diff is available. Every dedup
128
- * reader keys off this list rather than deriving a subject again from
129
- * `steps[]` — SKYR-4214: two stages derived different subjects for one
130
- * candidate, so whether a candidate deduped depended on whether the model
131
- * happened to append a cleanup step.
132
- *
133
- * Absent on a scenario from an older state file; readers then fall back to
134
- * the last-mutating-step rule. An EMPTY list means "no information" and must
135
- * never be read as "covered".
136
- */
137
- subjectEndpoints?: SubjectEndpoint[];
138
- }
139
99
  export interface BranchDiffContext {
140
100
  currentBranch: string;
141
101
  baseBranch: string;
@@ -17,6 +17,22 @@ import type { UtilsViolationKind } from "../utils/utils-verify/allow.js";
17
17
  * The internal record that run state keeps between the verify pass and the report
18
18
  * step (`ReuseRecord`) deliberately stays private to the derivation module — it is
19
19
  * not part of this contract and must never reach a report.
20
+ *
21
+ * ABSENCE MEANS NOT MEASURED — the one invariant every member here obeys, and the
22
+ * one a producer is most likely to break. An optional member is omitted when this
23
+ * run did not establish its value, NEVER to mean `false`, `0` or "no": a `boolean?`
24
+ * left off says the check did not run, not that it failed, and a count left off says
25
+ * nothing was counted, not that the count was zero. So a producer that cannot
26
+ * measure something omits it rather than defaulting it, and a consumer renders an
27
+ * absent member as unknown rather than as a negative result.
28
+ *
29
+ * It is what lets a field be added without re-reading every row ever written, and
30
+ * what keeps a row from asserting more than the run established — the failure this
31
+ * whole shape exists to prevent, and the one that has recurred: a `reuse` of `null`
32
+ * over a test that demonstrably reused was read as "did not reuse" for four cohorts
33
+ * (see {@link ReuseOutcome.notDerived}). Where the distinction has to be visible in
34
+ * the report rather than inferred, the shape says so explicitly instead of relying
35
+ * on an omission.
20
36
  */
21
37
  /** Which gate declined a POM member. */
22
38
  export declare enum ReuseDeclinedBy {
@@ -158,8 +174,17 @@ export interface HelperReuseOutcome {
158
174
  * row ships with this field set, so the fault is disclosed rather than delivered
159
175
  * in silence — or not delivered at all. */
160
176
  verificationFailures?: ReuseVerificationFailure[];
161
- /** Pre-existing generated tests this spec's reuse pass rewired onto the utils
162
- * file, each with its recorded execution. Omitted when none. */
177
+ /** Pre-existing generated tests rewired onto the utils file by this run, each with
178
+ * its recorded execution. Omitted when none.
179
+ *
180
+ * Normally these are the siblings THIS spec's reuse pass reached. A row may also
181
+ * name its OWN file: where two specs on one module were each edited by their own
182
+ * chain, each claimed the other as its retrofit, and a claim that cannot be true
183
+ * in both directions is reported against neither. The rewiring is still disclosed,
184
+ * on the row for the file it happened to.
185
+ *
186
+ * Across the rows of one report every file appears at most once, so the lists stay
187
+ * disjoint and summable. */
163
188
  retrofits?: RetrofitOutcome[];
164
189
  /** Whether the delivered test plus the helpers it imports and calls still hold at
165
190
  * least as many assertions as when modularization was handed out. A measured
@@ -172,10 +197,58 @@ export interface HelperReuseOutcome {
172
197
  /** Whether the `page.on('pageerror', …)` guard present at the modularization
173
198
  * hand-out is still registered, in the test or in a shared helper it imports and
174
199
  * calls. `true` when the hand-out had no guard to lose. Present whenever the
175
- * baseline exists, absent otherwise — like every optional member here, absent
176
- * means "not measured", never "false". */
200
+ * baseline exists, absent otherwise — by the absence rule in this file's header. */
177
201
  pageErrorGuardPreserved?: boolean;
178
202
  }
203
+ /** One of the repository's own helpers, and the module it lives in. */
204
+ export interface InHouseHelperRef {
205
+ /** REPOSITORY-RELATIVE PATH (posix) of the customer's module. */
206
+ module: string;
207
+ helper: string;
208
+ }
209
+ /** A helper the run read in an in-house module and did not use. DECLARED by the
210
+ * agent — recorded, never measured. */
211
+ export interface InHouseDeclinedEntry {
212
+ file: string;
213
+ helper: string;
214
+ reason: string;
215
+ }
216
+ /**
217
+ * Reuse of the repository's OWN helper modules — files the customer wrote — by a
218
+ * browser test. Two kinds of field, and the report must label them apart:
219
+ *
220
+ * - MEASURED, re-derived from the delivered files at report time: which of the
221
+ * customer's modules the spec imports, which helpers resolve, what this run added
222
+ * to or widened in those modules (against HEAD), whether the additive gate ran.
223
+ * - DECLARED by the agent, recorded as testimony: the files its search read, and
224
+ * the helpers it read and declined with the reason. A file list the agent produced
225
+ * is not evidence the agent read everything, and the report says so.
226
+ *
227
+ * Absent when the spec imports no in-house module.
228
+ */
229
+ export interface InHouseReuseOutcome {
230
+ /** MEASURED. Repository-relative paths of the customer's modules the spec imports. */
231
+ modules: string[];
232
+ /** MEASURED. Helpers the spec imports from those modules that resolve there. */
233
+ helpersUsed: string[];
234
+ /** MEASURED. Helpers this run added to a customer's module. */
235
+ helpersAdded: InHouseHelperRef[];
236
+ /** MEASURED. Existing helpers this run gave a defaulted parameter, and nothing else. */
237
+ helpersWidened: InHouseHelperRef[];
238
+ /** MEASURED. Whether every module was compared against HEAD. `false` is a gate
239
+ * that could not run, never one that found nothing. */
240
+ additiveGateRan: boolean;
241
+ /** DECLARED. The files the agent's search read. Omitted when nothing was declared. */
242
+ filesRead?: string[];
243
+ /** DECLARED. Helpers the agent read and did not use, with its reason for each. */
244
+ declined?: InHouseDeclinedEntry[];
245
+ /** The in-house verdict, present only when no `helpers` row carries one — a spec
246
+ * calling only in-house helpers has no Skyramp utils file, and "no utils file"
247
+ * must not read as "nothing verified". */
248
+ verification?: HelperVerificationOutcome;
249
+ /** See {@link HelperReuseOutcome.verificationFailures}; present only on `failed`. */
250
+ verificationFailures?: ReuseVerificationFailure[];
251
+ }
179
252
  /**
180
253
  * What lands in a report's `reuse` field for a generated test. Every member is
181
254
  * optional: consumers must render from whatever subset is present, and omit the
@@ -231,6 +304,25 @@ export interface ReuseOutcome {
231
304
  skipped?: ReuseSkippedEntry[];
232
305
  /** Shared-helper (SkyrampUtils) reuse. See {@link HelperReuseOutcome}. */
233
306
  helpers?: HelperReuseOutcome;
307
+ /** Reuse of the repository's own helper modules. See {@link InHouseReuseOutcome}. */
308
+ inHouse?: InHouseReuseOutcome;
309
+ /** Why no reuse record could be derived for this row, in a reader's words.
310
+ *
311
+ * Present only when nothing else here is: no `helpers`, no `inHouse`, no POM
312
+ * fields. It exists because their absence alone is ambiguous — a row with no
313
+ * reuse summary reads identically to a row whose test reused nothing, and
314
+ * consumers and reviewers have read it as the latter. A stated reason ("the
315
+ * delivered file could not be read", "no shared helper module was located for
316
+ * this test") separates the two.
317
+ *
318
+ * The one place the absence rule above is not enough, and so the one member that
319
+ * states what an omission cannot: every other member is absent when unmeasured,
320
+ * and this says WHY the whole row is.
321
+ *
322
+ * Never a verdict and never a fault: a run that legitimately had nothing to reuse
323
+ * says so here. Additive and optional like every other member, so a consumer that
324
+ * does not know it renders exactly what it rendered before. */
325
+ notDerived?: string;
234
326
  /** Present — and only ever `true` — when generation handed off a modularize→reuse
235
327
  * step for this test and no reuse pass was recorded for it. Since the execution
236
328
  * checkpoint refuses to run such a test until reuse is called, this can only
@@ -15,6 +15,22 @@
15
15
  * The internal record that run state keeps between the verify pass and the report
16
16
  * step (`ReuseRecord`) deliberately stays private to the derivation module — it is
17
17
  * not part of this contract and must never reach a report.
18
+ *
19
+ * ABSENCE MEANS NOT MEASURED — the one invariant every member here obeys, and the
20
+ * one a producer is most likely to break. An optional member is omitted when this
21
+ * run did not establish its value, NEVER to mean `false`, `0` or "no": a `boolean?`
22
+ * left off says the check did not run, not that it failed, and a count left off says
23
+ * nothing was counted, not that the count was zero. So a producer that cannot
24
+ * measure something omits it rather than defaulting it, and a consumer renders an
25
+ * absent member as unknown rather than as a negative result.
26
+ *
27
+ * It is what lets a field be added without re-reading every row ever written, and
28
+ * what keeps a row from asserting more than the run established — the failure this
29
+ * whole shape exists to prevent, and the one that has recurred: a `reuse` of `null`
30
+ * over a test that demonstrably reused was read as "did not reuse" for four cohorts
31
+ * (see {@link ReuseOutcome.notDerived}). Where the distinction has to be visible in
32
+ * the report rather than inferred, the shape says so explicitly instead of relying
33
+ * on an omission.
18
34
  */
19
35
  /** Which gate declined a POM member. */
20
36
  export var ReuseDeclinedBy;
@@ -37,7 +37,11 @@ export const UI_STEP_VERBS = [
37
37
  /** A call to something with no HTTP verb — a GraphQL operation, a Thrift or gRPC
38
38
  * method. The operation's own name goes in `path`, and in `routes.operation`. */
39
39
  export const OPERATION_STEP_METHOD = "OPERATION";
40
- export const STEP_METHODS = [...HTTP_STEP_METHODS, ...UI_STEP_VERBS, OPERATION_STEP_METHOD];
40
+ export const STEP_METHODS = [
41
+ ...HTTP_STEP_METHODS,
42
+ ...UI_STEP_VERBS,
43
+ OPERATION_STEP_METHOD,
44
+ ];
41
45
  const HTTP_BY_SPELLING = new Map(HTTP_STEP_METHODS.map((m) => [m.toLowerCase(), m]));
42
46
  const UI_BY_SPELLING = new Map(UI_STEP_VERBS.map((v) => [v, v]));
43
47
  /** One spelling of a method reduced to the canonical one, or `undefined` when it is
@@ -45,21 +49,27 @@ const UI_BY_SPELLING = new Map(UI_STEP_VERBS.map((v) => [v, v]));
45
49
  * fixed on store, so `" post"` and `"Click"` are the same step as `POST` and
46
50
  * `click`. Without the trim, one trailing space decided which checks ran. */
47
51
  export function normalizeStepMethod(raw) {
48
- const spelling = String(raw ?? "").trim().toLowerCase();
52
+ const spelling = String(raw ?? "")
53
+ .trim()
54
+ .toLowerCase();
49
55
  if (!spelling)
50
56
  return undefined;
51
- return HTTP_BY_SPELLING.get(spelling) ?? UI_BY_SPELLING.get(spelling) ?? (spelling === "operation" ? OPERATION_STEP_METHOD : undefined);
57
+ return (HTTP_BY_SPELLING.get(spelling) ??
58
+ UI_BY_SPELLING.get(spelling) ??
59
+ (spelling === "operation" ? OPERATION_STEP_METHOD : undefined));
52
60
  }
53
61
  /** Whether a method names a page interaction. Read off the canonical spelling,
54
62
  * so a step that never went through the schema is judged the same way. */
55
63
  export function isUiStepVerb(raw) {
56
64
  const method = normalizeStepMethod(raw);
57
- return method !== undefined && UI_STEP_VERBS.includes(method);
65
+ return (method !== undefined &&
66
+ UI_STEP_VERBS.includes(method));
58
67
  }
59
68
  /** Whether a method names an HTTP request. */
60
69
  export function isHttpStepMethod(raw) {
61
70
  const method = normalizeStepMethod(raw);
62
- return method !== undefined && HTTP_STEP_METHODS.includes(method);
71
+ return (method !== undefined &&
72
+ HTTP_STEP_METHODS.includes(method));
63
73
  }
64
74
  const STEP_METHOD_HELP = `must be an HTTP method (${HTTP_STEP_METHODS.join(", ")}), a page interaction ` +
65
75
  `(${UI_STEP_VERBS.join(", ")}), or "${OPERATION_STEP_METHOD}" for a call with no HTTP verb — ` +
@@ -74,4 +84,8 @@ export const STEP_METHOD_DESCRIPTION = "What this step does to the system: an HT
74
84
  * The field itself: normalised first, then checked, so a rejection is about the
75
85
  * verb and never about its capitalisation.
76
86
  */
77
- export const stepMethodSchema = z.preprocess((value) => (typeof value === "string" ? (normalizeStepMethod(value) ?? value.trim()) : value), z.enum(STEP_METHODS, { errorMap: () => ({ message: `method ${STEP_METHOD_HELP}` }) }));
87
+ export const stepMethodSchema = z.preprocess((value) => typeof value === "string"
88
+ ? (normalizeStepMethod(value) ?? value.trim())
89
+ : value, z.enum(STEP_METHODS, {
90
+ errorMap: () => ({ message: `method ${STEP_METHOD_HELP}` }),
91
+ }));
@@ -59,6 +59,13 @@ export interface MaintenanceActionCore {
59
59
  * without this a downstream stage cannot tell a regeneration that rewrote a file from
60
60
  * one that only advised it — and maintenance coverage would credit the advice. */
61
61
  reportOnly?: boolean;
62
+ /** Computed during instruction building — the path this UPDATE renames the spec TO,
63
+ * when the endpoint rename implies one. Part of the core shape because the report
64
+ * stage needs it: the rename lands before the test is executed, so the run is
65
+ * recorded under THIS path while `testFilePath` still holds the old name, and a
66
+ * stage that joins runs to files by `testFilePath` alone looks for a file that is
67
+ * no longer there. */
68
+ _suggestedNewFile?: string;
62
69
  }
63
70
  /** Normalized internal recommendation built from LLM-supplied args.recommendations. */
64
71
  export interface DriftRecommendation extends MaintenanceActionCore {
@@ -78,8 +85,9 @@ export interface DriftRecommendation extends MaintenanceActionCore {
78
85
  anchor: string;
79
86
  change?: string;
80
87
  }>;
81
- /** Computed during instruction building — suggested renamed file path if applicable. */
82
- _suggestedNewFile?: string;
88
+ /** Computed during instruction building — the modularize → reuse steps this UPDATE's
89
+ * file owes, when its language and test type are a modularize-first target. */
90
+ _postEditSteps?: string;
83
91
  /** REGENERATE/DELETE on an external (user-authored) test is report-only: the verdict is
84
92
  * recorded and rendered in the report so the developer sees the recommendation, but the
85
93
  * file is never touched (the apply loops skip reportOnly entries). Lets the report keep