@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
@@ -15,13 +15,68 @@ export type UtilsViolationKind = "duplicate-helper" | "body-assertion" | "scenar
15
15
  /** Python only: the spec imports the shared module in a form that cannot resolve
16
16
  * in the customer's repo. Not marker-eligible — a broken import has no reason to
17
17
  * stay. */
18
- | "import-form";
18
+ | "import-form"
19
+ /** A `reuse-verify: allow` marker that no finding of this pass consumes. The
20
+ * decline it documents is not in the delivered files: either it never was, or the
21
+ * agent went on to fix the fault and left the marker behind, so the file states a
22
+ * reason its own code contradicts. Not marker-eligible — a marker that documents
23
+ * nothing is deleted, and documenting it would only add a second one. */
24
+ | "stale-allow"
25
+ /** A shared helper whose request body no parameter of its signature reaches, beside
26
+ * a spec that defines its OWN helper for the same route. The pair is the fault: a
27
+ * body the helper holds is the right default while one caller exists, and becomes
28
+ * wrong the moment a second caller needs another. Marker-eligible — a caller that
29
+ * genuinely needs a different REQUEST, not a different body, is a decline worth
30
+ * documenting rather than a shape to force. */
31
+ | "frozen-body"
32
+ /** A shared helper's expected-status parameter — the one its status assertion
33
+ * reads — carries a default (or is optional). A call site may then omit the
34
+ * status it expects, and the spec states its expectation nowhere a reader can
35
+ * see it; a helper named for the happy path defaulting to a rejection reads as
36
+ * a bug on sight. Keyed on what the assertion READS, not on the parameter's
37
+ * name, which diverges between runs. Marker-eligible. Routed to `advisories`
38
+ * for now — see the classification pass in verify.ts. */
39
+ | "status-default"
40
+ /** The spec asserts the status of a response returned by a helper that already
41
+ * asserted it — the same literal stated twice, and the two can disagree. The
42
+ * expectation is stated once, as the call's status argument. Marker-eligible. */
43
+ | "status-restated"
44
+ /** A helper defined at HEAD whose parameter list this run narrowed — a default
45
+ * removed, a parameter renamed, removed or reordered, or a required one added.
46
+ * Callers this run cannot see depend on the signature at HEAD. Not
47
+ * marker-eligible: an incumbent is restored, not documented away. See incumbent.ts. */
48
+ | "incumbent-signature"
49
+ /** TypeScript only: the delivered module or spec fails the compiler under its most
50
+ * permissive settings — an error under EVERY configuration, so the customer's own
51
+ * `tsc` is the next thing to report it (the executor transpiles without checking
52
+ * types). Not marker-eligible: a file that cannot compile has no reason to stay
53
+ * as it is. An error that exists only under the repository's tsconfig is the
54
+ * `tsconfig-type-error` ADVISORY instead. */
55
+ | "type-error"
56
+ /** The spec imports a name from one of the repository's own modules that the
57
+ * module does not define. Not marker-eligible: the marker grammar lives in a
58
+ * Skyramp module, and nothing of ours is written into the customer's file. */
59
+ | "in-house-unresolved"
60
+ /** A call to an in-house helper passes an argument count outside the range its
61
+ * definition accepts (required count to total count). Not marker-eligible. */
62
+ | "in-house-arity"
63
+ /** This run changed an in-house module in a way that is not additive: a helper
64
+ * removed, renamed or rewritten, a parameter added without a default, a line
65
+ * outside every helper deleted. Not marker-eligible — the change is undone. */
66
+ | "in-house-modified"
67
+ /** The spec imports a sibling module this pass cannot recognise: a file with no
68
+ * Skyramp header that is not the repository's own (not at HEAD) — this run's
69
+ * module written without its header — or an import that resolves to no file.
70
+ * The pass cannot verify or stage what it cannot see, and a PASSED here was a
71
+ * gate failing open (fixture 12, run 9). Not marker-eligible: the remedy is the
72
+ * header line, or the path, both named in the finding. */
73
+ | "unresolved-module";
19
74
  /** Kinds that only ever advise. Kept OUT of UtilsViolationKind so that type keeps
20
75
  * meaning "a kind the allow grammar and the gate know about" — an advisory can
21
76
  * never fail a verify and never needs (or accepts) an allow marker. */
22
- export declare const UTILS_ADVISORY_KINDS: readonly ["untyped-parameter", "duplicate-action"];
77
+ export declare const UTILS_ADVISORY_KINDS: readonly ["unusable-parameter-type", "fixed-sleep", "module-name", "duplicate-body-reach", "duplicate-action", "tsconfig-type-error", "ambient-type-error", "in-house-duplicate"];
23
78
  export type UtilsAdvisoryKind = (typeof UTILS_ADVISORY_KINDS)[number];
24
- export declare const MARKERABLE_UTILS_KINDS: readonly ["duplicate-helper", "body-assertion", "scenario-name", "assertion-loss"];
79
+ export declare const MARKERABLE_UTILS_KINDS: readonly ["frozen-body", "duplicate-helper", "body-assertion", "scenario-name", "assertion-loss", "status-default", "status-restated"];
25
80
  /** A kind the allow grammar accepts. `guard-removed` is a gate kind but never
26
81
  * markerable — a guard is restored, not documented away — so the grammar itself
27
82
  * cannot spell it; the regex below is built from this list. */
@@ -30,9 +85,73 @@ export interface UtilsAllow {
30
85
  kind: MarkerableUtilsKind;
31
86
  helper: string;
32
87
  reason: string;
88
+ /** 1-based line the marker sits on — where a finding about the marker points. */
89
+ line: number;
33
90
  }
91
+ /**
92
+ * The documented-decline marker for a utils-file invariant, written in the utils file:
93
+ *
94
+ * # reuse-verify: allow <kind> <helper> — <reason> (Python)
95
+ * // reuse-verify: allow <kind> <helper> — <reason> (TS/JS)
96
+ *
97
+ * ONE grammar, used by both the gate and the report. The POM path's `// kept inline:`
98
+ * marker had two — the gate's regex and the report parser disagreed on the separator
99
+ * and on the file extension — and the gap was a run where the gate blocked execution
100
+ * on declines the report listed correctly (mcp#716, run 30965653402). Here the gate
101
+ * and the report call this one function.
102
+ *
103
+ * The separator is an em/en dash or a hyphen with whitespace on BOTH sides, so a
104
+ * hyphen inside a helper name cannot be mistaken for it. `(?!<reason)` rejects the
105
+ * paste-ready line from the failure text when it was pasted unedited: publishing the
106
+ * placeholder as the stated reason is worse than no marker.
107
+ */
108
+ export declare const ALLOW_RE: RegExp;
109
+ /** Anything that announces a decline in this grammar, well-formed or not. Exported
110
+ * so the delivery-time strip recognises the grammar from its one declaration here
111
+ * rather than re-spelling it. */
112
+ export declare const ALLOW_LOOSE_RE: RegExp;
113
+ /** THIS grammar at the start of what a comment says. `reuse-verify: allow` is not a
114
+ * phrase a customer writes, so an own-line comment opening with it is gate-addressed
115
+ * whatever follows — the delivery strip removes it without being able to READ it.
116
+ * `kept inline:` cannot claim that: it opens ordinary English too. */
117
+ export declare const ALLOW_START_RE: RegExp;
118
+ /** A marker's SHAPE, whatever kind it names: the announcement, then a subject, then
119
+ * the separator and a reason. Ordinary prose that merely opens with the phrase — `//
120
+ * kept inline: this loop is kept inline for performance` — carries no separator and
121
+ * is not matched. Used where a line must be recognised as gate-addressed without the
122
+ * grammar being able to READ it: an advisory kind is inert by design, so the verify
123
+ * pass passes it and the comment would otherwise ship. */
124
+ export declare const MARKER_SHAPE_RE: RegExp;
34
125
  /** The exact line to paste for a violation — what the failure text hands the agent. */
35
126
  export declare function allowMarkerLine(spec: UtilsLanguageSpec, kind: MarkerableUtilsKind, helper: string): string;
127
+ /**
128
+ * The marker text, when the marker's comment OWNS its line: whitespace, the comment
129
+ * prefix, then the marker and nothing else.
130
+ *
131
+ * One placement, because it is the one both gates instruct and the only one that can
132
+ * be removed from a delivered file by deleting a line. A marker after code, inside a
133
+ * block comment or on a JSDoc continuation is reported as malformed instead — the
134
+ * decline is never dropped in silence, and the failure text gives back the line to
135
+ * paste in its place.
136
+ *
137
+ * A line whose first characters are the comment prefix cannot be a regex literal or a
138
+ * trailing comment, so this needs no lexer beyond the blanked strings. It cannot tell
139
+ * whether the prefix OPENS anything, though — inside `/* … *\/` a `//` opens nothing,
140
+ * the block does — so the caller settles that with `lineCommentOpeners` first. The
141
+ * parser asked the text while the strip asked the lexer, and a marker in a block
142
+ * comment was then read as a decline that the strip could not remove: the fault was
143
+ * authorised and the note shipped.
144
+ */
145
+ export declare function markerOnOwnLine(raw: string, code: string, prefix: "//" | "#"): string | undefined;
146
+ /**
147
+ * Line indices whose first non-space characters OPEN a line comment.
148
+ *
149
+ * `undefined` where the language has no block comment: every line with the prefix at
150
+ * its head opens one, and the caller needs no check. Stated ONCE, because the parser
151
+ * and the delivery strip must not disagree about which lines are comments — when they
152
+ * did, one authorised a decline the other refused to remove.
153
+ */
154
+ export declare function lineCommentOpeners(content: string, prefix: "//" | "#"): Set<number> | undefined;
36
155
  export declare function parseUtilsAllows(content: string, spec: UtilsLanguageSpec): {
37
156
  allows: UtilsAllow[];
38
157
  /** Marker lines the loose pattern recognises but the grammar cannot read — a decline
@@ -1,20 +1,69 @@
1
1
  import { blankStrings } from "./parse.js";
2
+ import { commentSpans } from "../pom-scope/strip.js";
2
3
  /** Kinds that only ever advise. Kept OUT of UtilsViolationKind so that type keeps
3
4
  * meaning "a kind the allow grammar and the gate know about" — an advisory can
4
5
  * never fail a verify and never needs (or accepts) an allow marker. */
5
6
  export const UTILS_ADVISORY_KINDS = [
6
- "untyped-parameter",
7
+ "unusable-parameter-type",
8
+ /** A shared helper waits for a DURATION rather than for a condition: a
9
+ * `waitForTimeout`, a `time.sleep`, a promise-wrapped `setTimeout` — or one of
10
+ * those as the backoff of a retry loop, where an iteration count hides the real
11
+ * cost. Every test that imports the helper inherits the wait, and the call site
12
+ * cannot see it. ADVISORY for its first cohort: the case for blocking rested on
13
+ * the predicate being narrow enough that a false hit was unlikely, and review
14
+ * falsified that three times — a helper NAMED `sleep`, a parameter shadowing the
15
+ * name, and a bare call no import binds. The convergence lever is the prompt,
16
+ * which states this rule in BROWSER_HELPERS' structuralNoise; the gate measures
17
+ * what the prompt leaves. Promote once a cohort has counted the false-hit rate
18
+ * instead of estimating it. See fixed-sleep.ts. */
19
+ "fixed-sleep",
20
+ /** A shared module this run CREATED under a name other than the one the reuse
21
+ * prompt prescribes for its language, while that name was free. Two runs on one
22
+ * repository then write two modules for one role and never meet. ADVISORY for its
23
+ * first cohort: the convergence lever is the prompt, which states the rule, and
24
+ * four of the six findings this rule's review produced were false BLOCKS — so the
25
+ * false-hit rate is measured here before it is argued. Promote once a cohort has
26
+ * counted it, on the same advisory-first policy as `fixed-sleep`. A module HEAD
27
+ * already holds is never judged either way: renaming it breaks callers this run
28
+ * cannot see. See module-name.ts. */
29
+ "module-name",
30
+ /** A shared API helper that reaches its own request body through TWO parameters at
31
+ * once: a whole-body parameter, and an override parameter passed straight through.
32
+ * The override can change nothing the body parameter cannot, so the second is a
33
+ * choice no rule makes — which is how two runs wrote the same helper with
34
+ * different arities. Advisory for the same reason as `module-name` and `fixed-sleep`,
35
+ * and it carried three of that review's four false blocks. See bodyReachedTwice. */
36
+ "duplicate-body-reach",
7
37
  /** Two browser helpers perform one action sequence (see actionKeyOf) — the
8
38
  * browser analogue of `duplicate-helper`. Advisory, not blocking: the key is a
9
39
  * heuristic over selector literals, and a false positive on a customer's first
10
40
  * run is the worse outcome. */
11
41
  "duplicate-action",
42
+ /** A compiler error present only under the repository's own tsconfig settings
43
+ * (`noImplicitAny`, `strictNullChecks`, …). Whether that tsconfig is the one the
44
+ * customer's build runs is their call, so this advises where `type-error` blocks. */
45
+ "tsconfig-type-error",
46
+ /** A name the compiler could not find (`process`, `describe`, `Promise`). Its
47
+ * declarations come from a package the repository installs or from its `lib`
48
+ * setting, neither of which the run can see — the testbot never installs the
49
+ * repository's dependencies — so the customer's own `tsc` may accept it. Advised,
50
+ * never blocked: a block here made an agent rewrite `process.env` into a
51
+ * `globalThis` cast to get past the gate. */
52
+ "ambient-type-error",
53
+ /** A helper this run added to one of the repository's own modules performs an
54
+ * action sequence a helper already in that module performs — the duplicate the
55
+ * extension exists to avoid, now inside the customer's file. Advisory for the
56
+ * same reason as `duplicate-action`: the key is read from selector literals. */
57
+ "in-house-duplicate",
12
58
  ];
13
59
  export const MARKERABLE_UTILS_KINDS = [
60
+ "frozen-body",
14
61
  "duplicate-helper",
15
62
  "body-assertion",
16
63
  "scenario-name",
17
64
  "assertion-loss",
65
+ "status-default",
66
+ "status-restated",
18
67
  ];
19
68
  /**
20
69
  * The documented-decline marker for a utils-file invariant, written in the utils file:
@@ -33,40 +82,115 @@ export const MARKERABLE_UTILS_KINDS = [
33
82
  * paste-ready line from the failure text when it was pasted unedited: publishing the
34
83
  * placeholder as the stated reason is worse than no marker.
35
84
  */
36
- const ALLOW_RE = new RegExp(`reuse-verify:\\s*allow\\s+(${MARKERABLE_UTILS_KINDS.join("|")})\\s+([A-Za-z_$][\\w$]*)\\s*(?:[—–]+|\\s+-+\\s+)\\s*(?!<reason)(\\S.*?)\\s*$`);
37
- const ALLOW_LOOSE_RE = /reuse-verify:\s*allow\b/;
38
- /** A marker naming an advisory kind — inert, never malformed (see parseUtilsAllows). */
39
- const ADVISORY_MARKER_RE = new RegExp(`allow\\s+(?:${UTILS_ADVISORY_KINDS.join("|")})\\b`);
85
+ export const ALLOW_RE = new RegExp(`reuse-verify:\\s*allow\\s+(${MARKERABLE_UTILS_KINDS.join("|")})\\s+([A-Za-z_$][\\w$]*)\\s*(?:[—–]+|\\s+-+\\s+)\\s*(?!<reason)(\\S.*?)\\s*$`);
86
+ /** Anything that announces a decline in this grammar, well-formed or not. Exported
87
+ * so the delivery-time strip recognises the grammar from its one declaration here
88
+ * rather than re-spelling it. */
89
+ export const ALLOW_LOOSE_RE = /reuse-verify:\s*allow\b/;
90
+ /** A marker at the START of what a comment says — either grammar. Anchored, because
91
+ * the own-line rule is about what the comment opens with, not what it contains. */
92
+ const MARKER_START_RE = /^(?:reuse-verify:\s*allow\b|kept inline:)/;
93
+ /** THIS grammar at the start of what a comment says. `reuse-verify: allow` is not a
94
+ * phrase a customer writes, so an own-line comment opening with it is gate-addressed
95
+ * whatever follows — the delivery strip removes it without being able to READ it.
96
+ * `kept inline:` cannot claim that: it opens ordinary English too. */
97
+ export const ALLOW_START_RE = /^reuse-verify:\s*allow\b/;
98
+ /** A marker's SHAPE, whatever kind it names: the announcement, then a subject, then
99
+ * the separator and a reason. Ordinary prose that merely opens with the phrase — `//
100
+ * kept inline: this loop is kept inline for performance` — carries no separator and
101
+ * is not matched. Used where a line must be recognised as gate-addressed without the
102
+ * grammar being able to READ it: an advisory kind is inert by design, so the verify
103
+ * pass passes it and the comment would otherwise ship. */
104
+ export const MARKER_SHAPE_RE = /^(?:reuse-verify:\s*allow\s+\S+\s+\S+|kept inline:\s*\S+)\s*(?:[—–]+|\s+-+\s+)\s*\S/;
105
+ /** Former spellings of an advisory kind. Nothing emits them, but a utils file
106
+ * delivered before the kind was renamed — and before the delivery strip of
107
+ * 2026-09-15 removed such lines — can still carry one, and a second run on that
108
+ * repository must not refuse over a line that was inert when it shipped. */
109
+ const LEGACY_ADVISORY_MARKER_KINDS = ["untyped-parameter"];
110
+ /** A marker naming an advisory kind, current or former — inert, never malformed
111
+ * (see parseUtilsAllows). */
112
+ const ADVISORY_MARKER_RE = new RegExp(`allow\\s+(?:${[...UTILS_ADVISORY_KINDS, ...LEGACY_ADVISORY_MARKER_KINDS].join("|")})\\b`);
40
113
  /** The exact line to paste for a violation — what the failure text hands the agent. */
41
114
  export function allowMarkerLine(spec, kind, helper) {
42
115
  return `${spec.commentPrefix} reuse-verify: allow ${kind} ${helper} — <reason this helper must stay as it is>`;
43
116
  }
117
+ /**
118
+ * The marker text, when the marker's comment OWNS its line: whitespace, the comment
119
+ * prefix, then the marker and nothing else.
120
+ *
121
+ * One placement, because it is the one both gates instruct and the only one that can
122
+ * be removed from a delivered file by deleting a line. A marker after code, inside a
123
+ * block comment or on a JSDoc continuation is reported as malformed instead — the
124
+ * decline is never dropped in silence, and the failure text gives back the line to
125
+ * paste in its place.
126
+ *
127
+ * A line whose first characters are the comment prefix cannot be a regex literal or a
128
+ * trailing comment, so this needs no lexer beyond the blanked strings. It cannot tell
129
+ * whether the prefix OPENS anything, though — inside `/* … *\/` a `//` opens nothing,
130
+ * the block does — so the caller settles that with `lineCommentOpeners` first. The
131
+ * parser asked the text while the strip asked the lexer, and a marker in a block
132
+ * comment was then read as a decline that the strip could not remove: the fault was
133
+ * authorised and the note shipped.
134
+ */
135
+ export function markerOnOwnLine(raw, code, prefix) {
136
+ // Judged on the RAW line, not on the blanked copy. A blanked string leaves its
137
+ // quotes but loses its contents, so `"use strict" // kept inline: …` read as a line
138
+ // that opens with a comment — and the strip deleted the directive with it.
139
+ const trimmed = raw.trimStart();
140
+ if (!trimmed.startsWith(prefix))
141
+ return undefined;
142
+ // The comment must open the line AND the marker must open the comment. Otherwise
143
+ // `// Customer note; // kept inline: …` is one comment whose line the strip would
144
+ // delete, prose and all.
145
+ const body = trimmed.slice(prefix.length).trimStart();
146
+ return MARKER_START_RE.test(body) ? trimmed : undefined;
147
+ }
148
+ /**
149
+ * Line indices whose first non-space characters OPEN a line comment.
150
+ *
151
+ * `undefined` where the language has no block comment: every line with the prefix at
152
+ * its head opens one, and the caller needs no check. Stated ONCE, because the parser
153
+ * and the delivery strip must not disagree about which lines are comments — when they
154
+ * did, one authorised a decline the other refused to remove.
155
+ */
156
+ export function lineCommentOpeners(content, prefix) {
157
+ if (prefix !== "//")
158
+ return undefined;
159
+ const starts = new Set(commentSpans(content).map((c) => c.start));
160
+ const opens = new Set();
161
+ let offset = 0;
162
+ content.split("\n").forEach((raw, n) => {
163
+ const indent = raw.length - raw.trimStart().length;
164
+ if (starts.has(offset + indent))
165
+ opens.add(n);
166
+ offset += raw.length + 1;
167
+ });
168
+ return opens;
169
+ }
44
170
  export function parseUtilsAllows(content, spec) {
45
171
  const allows = [];
46
172
  const malformed = [];
47
- // String contents are blanked first, so a marker (or a comment token) quoted in
48
- // code can neither be read as a decline nor make one look like a comment.
173
+ // String contents are blanked first, so a marker quoted in code — or inside a Python
174
+ // docstring — can neither be read as a decline nor look like a comment.
49
175
  const rawLines = content.split("\n");
50
176
  const codeLines = blankStrings(content, spec).split("\n");
177
+ const opens = lineCommentOpeners(content, spec.commentPrefix);
51
178
  for (let n = 0; n < rawLines.length; n++) {
52
179
  const raw = rawLines[n];
53
180
  const code = codeLines[n] ?? "";
54
- // The marker may sit in a trailing comment, a block comment or a JSDoc line — any
55
- // comment form. Match from the marker itself, so the comment syntax around it does
56
- // not decide whether a decline is read.
57
- const at = code.search(ALLOW_LOOSE_RE);
58
- if (at === -1)
181
+ if (!ALLOW_LOOSE_RE.test(code))
59
182
  continue;
60
- const before = code.slice(0, at);
61
- const inComment = spec.commentPrefix === "#"
62
- ? /#/.test(before)
63
- : /\/\/|\/\*|^\s*\*/.test(before);
64
- if (!inComment)
183
+ const line = opens && !opens.has(n)
184
+ ? undefined
185
+ : markerOnOwnLine(raw, code, spec.commentPrefix);
186
+ if (line === undefined) {
187
+ // PLACEMENT is reported for every kind, the advisory kinds included. The
188
+ // advisory exemption says a kind never blocks; it does not say a marker may sit
189
+ // anywhere. Exempting placement too left a trailing advisory that the verify
190
+ // passed and the delivery strip could not remove — so the comment shipped.
191
+ malformed.push(raw.trim());
65
192
  continue;
66
- const line = raw
67
- .slice(at)
68
- .replace(/\s*\*\/\s*$/, "")
69
- .trim();
193
+ }
70
194
  const m = ALLOW_RE.exec(line);
71
195
  if (!m) {
72
196
  // A marker naming an advisory kind is inert, not malformed: advisories never
@@ -81,6 +205,7 @@ export function parseUtilsAllows(content, spec) {
81
205
  kind: m[1],
82
206
  helper: m[2],
83
207
  reason: m[3],
208
+ line: n + 1,
84
209
  });
85
210
  }
86
211
  return { allows, malformed };
@@ -0,0 +1,120 @@
1
+ import type { UtilsLanguageSpec } from "./language-spec.js";
2
+ import { type SiblingFile } from "./call-sites.js";
3
+ /**
4
+ * A shared helper whose request body no parameter of its signature reaches, beside a
5
+ * spec that defines its OWN helper for the same route.
6
+ *
7
+ * The two halves together are the fault. A body the helper holds is not wrong on its
8
+ * own — on a first run there is one caller and its body is the right default. It
9
+ * becomes wrong the moment a second caller needs a different body, and the visible
10
+ * sign of that is a spec writing its own helper for a route the shared module already
11
+ * wraps. The advisory that names inline call sites cannot see this pair: it refuses a
12
+ * site whose payload the helper cannot send, which is exactly the site this looks for.
13
+ */
14
+ export interface UnreachableBody {
15
+ /** The shared helper whose body is out of reach. */
16
+ helper: string;
17
+ /** Absolute path of the utils file that defines `helper`. */
18
+ utilsFile: string;
19
+ method: string;
20
+ /** The path as the helper writes it. */
21
+ path: string;
22
+ /** Absolute path of the spec that defines its own helper for the same route. */
23
+ rivalFile: string;
24
+ /** That spec's own helper — the caller the shared helper could not carry. */
25
+ rivalHelper: string;
26
+ }
27
+ /**
28
+ * The TOP-LEVEL options of a request call, as `name -> value text`.
29
+ *
30
+ * Both SDK spellings: the keyword arguments of `send_request(url=…, body=…)`, and the
31
+ * properties of the single object `sendRequest({ url: …, body })` takes. A shorthand
32
+ * property's value is its own name, which is what makes it a shorthand.
33
+ *
34
+ * Top-level is the whole point, and a regex could not hold it. Reading `body` or
35
+ * `data_override` anywhere in the call text made an option's value run to the first
36
+ * `)` — so an argument written AFTER the override joined its value — and made a name
37
+ * of the same spelling nested inside ANOTHER option read as the SDK's own, which
38
+ * blocks a delivery over something that is not there.
39
+ *
40
+ * Not `signatureParams`: that reads a parameter list, does not unwrap the object the
41
+ * TypeScript SDK takes, and expects text whose strings its caller already blanked.
42
+ * Here the call is raw — a path literal can carry a comma or a brace — so the
43
+ * structure is walked on a blanked copy and each value is cut from the original.
44
+ */
45
+ export declare function requestOptions(call: string): Map<string, string>;
46
+ /**
47
+ * The request's `body` option, as the text of its value, or `undefined` when the call
48
+ * sends no body.
49
+ *
50
+ * `shared-helper-policy` prescribes the object SHORTHAND as the canonical TypeScript
51
+ * form of body-form 2 — `updateOrder(client, orderId, body = DEFAULT_ORDER_BODY)`
52
+ * calling `sendRequest({ ..., body })` — so a reader that saw only `body:` judged the
53
+ * helper the prompt TEACHES as sending no body at all.
54
+ */
55
+ export declare function bodyArgument(call: string): string | undefined;
56
+ /** The request's override option, as the text of its value. Either spelling. */
57
+ export declare function overrideArgument(call: string): string | undefined;
58
+ /**
59
+ * Whether a caller can change what this request sends, through the helper's signature.
60
+ *
61
+ * The question is whether the body DERIVES from a parameter, not which mechanism
62
+ * carried it there. Naming the mechanisms would answer the shapes already seen and
63
+ * mis-judge the next one: the body as the parameter, an override map, and a local
64
+ * template with the parameters interpolated into it are three ways to reach the same
65
+ * property, and there is no reason to think they are the last three.
66
+ *
67
+ * FAILS OPEN — this feeds a blocking gate, so every answer it cannot establish is
68
+ * `true`. A request with no body has nothing to reach; a signature it cannot read is
69
+ * not judged. Only a body it can see, built from no parameter at all, is false.
70
+ *
71
+ * `before` is the helper text that precedes the request call. A body passed by name
72
+ * is resolved there: generated code assigns the template immediately above the call,
73
+ * so a parameter that reaches the body appears between that assignment and the call.
74
+ */
75
+ export declare function bodyReachable(call: string, params: string[] | undefined, before?: string): boolean;
76
+ /**
77
+ * The override parameter of a helper that reaches its own request body TWICE: once
78
+ * through a body parameter, and again through an override argument passed straight
79
+ * from the signature. `undefined` when the helper reaches its body through at most
80
+ * one of them.
81
+ *
82
+ * The prompt already states the rule — two body forms are offered and the helper
83
+ * takes "the FIRST one that reaches everything the callers need" — and nothing
84
+ * checked it. A body parameter reaches every property of the request body, so an
85
+ * override beside it can change nothing it cannot; carrying both is the hedge a run
86
+ * writes when no rule decides, and it is what made demoshop's `create_order` arity 5
87
+ * in one run and 4 in the other (testplan-run-9).
88
+ *
89
+ * The body must BE a parameter — form 2 as the policy states it. A body built at the
90
+ * call out of a parameter reaches only the properties it names, so an override beside
91
+ * it carries what the parameter cannot and the two are not one mechanism twice.
92
+ *
93
+ * The override must be a BARE PASS-THROUGH — the parameter and nothing else, a
94
+ * `or {}` / `?? {}` fallback aside. An override that BUILDS a map carries values the
95
+ * body parameter's default does not, which is the prompt's form 1 working; that is
96
+ * the shape a unique-suffix helper delivers, and it is not this fault.
97
+ *
98
+ * Reads the request call alone, never a body resolved from an assignment above it:
99
+ * this feeds a blocking gate, and the direct form is the one that cannot be read two
100
+ * ways.
101
+ */
102
+ export declare function bodyReachedTwice(call: string, params: string[] | undefined): string | undefined;
103
+ /** A helper reaching its request body through two parameters. */
104
+ export interface DuplicateBodyReach {
105
+ helper: string;
106
+ /** Absolute path of the utils file that defines it. */
107
+ utilsFile: string;
108
+ /** 1-based line of the definition. */
109
+ line: number;
110
+ /** The override parameter the body parameter makes redundant. */
111
+ override: string;
112
+ }
113
+ /** Every helper in the located modules that reaches its request body twice. Never
114
+ * throws; a file it cannot read contributes nothing. */
115
+ export declare function findDuplicateBodyReach(utilsFiles: string[], spec: UtilsLanguageSpec): Promise<DuplicateBodyReach[]>;
116
+ /**
117
+ * Shared helpers whose body no parameter reaches, each paired with a sibling spec
118
+ * that defines its own helper for the same route. Never throws; fails open to [].
119
+ */
120
+ export declare function findUnreachableBodies(testFile: string, utilsFiles: string[], spec: UtilsLanguageSpec, preReadSiblings?: SiblingFile[]): Promise<UnreachableBody[]>;