@vibecheckai/cli 2.5.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 (415) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +532 -0
  3. package/dist/autopatch/verified-autopatch.d.ts +111 -0
  4. package/dist/autopatch/verified-autopatch.d.ts.map +1 -0
  5. package/dist/autopatch/verified-autopatch.js +503 -0
  6. package/dist/autopatch/verified-autopatch.js.map +1 -0
  7. package/dist/bundles/guardrail-core.js +25799 -0
  8. package/dist/bundles/guardrail-security.js +208687 -0
  9. package/dist/bundles/guardrail-ship.js +2318 -0
  10. package/dist/bundles/index.js +8 -0
  11. package/dist/commands/autopilot-decision.d.ts +24 -0
  12. package/dist/commands/autopilot-decision.d.ts.map +1 -0
  13. package/dist/commands/autopilot-decision.js +304 -0
  14. package/dist/commands/autopilot-decision.js.map +1 -0
  15. package/dist/commands/autopilot.d.ts +33 -0
  16. package/dist/commands/autopilot.d.ts.map +1 -0
  17. package/dist/commands/autopilot.js +1539 -0
  18. package/dist/commands/autopilot.js.map +1 -0
  19. package/dist/commands/baseline.d.ts +7 -0
  20. package/dist/commands/baseline.d.ts.map +1 -0
  21. package/dist/commands/baseline.js +79 -0
  22. package/dist/commands/baseline.js.map +1 -0
  23. package/dist/commands/cache.d.ts +13 -0
  24. package/dist/commands/cache.d.ts.map +1 -0
  25. package/dist/commands/cache.js +165 -0
  26. package/dist/commands/cache.js.map +1 -0
  27. package/dist/commands/checkpoint.d.ts +8 -0
  28. package/dist/commands/checkpoint.d.ts.map +1 -0
  29. package/dist/commands/checkpoint.js +35 -0
  30. package/dist/commands/checkpoint.js.map +1 -0
  31. package/dist/commands/context.d.ts +8 -0
  32. package/dist/commands/context.d.ts.map +1 -0
  33. package/dist/commands/context.js +340 -0
  34. package/dist/commands/context.js.map +1 -0
  35. package/dist/commands/debug.d.ts +78 -0
  36. package/dist/commands/debug.d.ts.map +1 -0
  37. package/dist/commands/debug.js +381 -0
  38. package/dist/commands/debug.js.map +1 -0
  39. package/dist/commands/doctor.d.ts +17 -0
  40. package/dist/commands/doctor.d.ts.map +1 -0
  41. package/dist/commands/doctor.js +226 -0
  42. package/dist/commands/doctor.js.map +1 -0
  43. package/dist/commands/evidence.d.ts +45 -0
  44. package/dist/commands/evidence.d.ts.map +1 -0
  45. package/dist/commands/evidence.js +197 -0
  46. package/dist/commands/evidence.js.map +1 -0
  47. package/dist/commands/explain.d.ts +8 -0
  48. package/dist/commands/explain.d.ts.map +1 -0
  49. package/dist/commands/explain.js +52 -0
  50. package/dist/commands/explain.js.map +1 -0
  51. package/dist/commands/fix-consolidated.d.ts +19 -0
  52. package/dist/commands/fix-consolidated.d.ts.map +1 -0
  53. package/dist/commands/fix-consolidated.js +165 -0
  54. package/dist/commands/fix-consolidated.js.map +1 -0
  55. package/dist/commands/index.d.ts +8 -0
  56. package/dist/commands/index.d.ts.map +1 -0
  57. package/dist/commands/index.js +15 -0
  58. package/dist/commands/index.js.map +1 -0
  59. package/dist/commands/init.d.ts +8 -0
  60. package/dist/commands/init.d.ts.map +1 -0
  61. package/dist/commands/init.js +125 -0
  62. package/dist/commands/init.js.map +1 -0
  63. package/dist/commands/launcher.d.ts +10 -0
  64. package/dist/commands/launcher.d.ts.map +1 -0
  65. package/dist/commands/launcher.js +174 -0
  66. package/dist/commands/launcher.js.map +1 -0
  67. package/dist/commands/on.d.ts +8 -0
  68. package/dist/commands/on.d.ts.map +1 -0
  69. package/dist/commands/on.js +123 -0
  70. package/dist/commands/on.js.map +1 -0
  71. package/dist/commands/preview.d.ts +54 -0
  72. package/dist/commands/preview.d.ts.map +1 -0
  73. package/dist/commands/preview.js +352 -0
  74. package/dist/commands/preview.js.map +1 -0
  75. package/dist/commands/quality/check.d.ts +31 -0
  76. package/dist/commands/quality/check.d.ts.map +1 -0
  77. package/dist/commands/quality/check.js +242 -0
  78. package/dist/commands/quality/check.js.map +1 -0
  79. package/dist/commands/quality/index.d.ts +8 -0
  80. package/dist/commands/quality/index.d.ts.map +1 -0
  81. package/dist/commands/quality/index.js +14 -0
  82. package/dist/commands/quality/index.js.map +1 -0
  83. package/dist/commands/quality/setup-quality.d.ts +23 -0
  84. package/dist/commands/quality/setup-quality.d.ts.map +1 -0
  85. package/dist/commands/quality/setup-quality.js +452 -0
  86. package/dist/commands/quality/setup-quality.js.map +1 -0
  87. package/dist/commands/quality/tidy.d.ts +41 -0
  88. package/dist/commands/quality/tidy.d.ts.map +1 -0
  89. package/dist/commands/quality/tidy.js +466 -0
  90. package/dist/commands/quality/tidy.js.map +1 -0
  91. package/dist/commands/quality/utils.d.ts +73 -0
  92. package/dist/commands/quality/utils.d.ts.map +1 -0
  93. package/dist/commands/quality/utils.js +158 -0
  94. package/dist/commands/quality/utils.js.map +1 -0
  95. package/dist/commands/replay.d.ts +8 -0
  96. package/dist/commands/replay.d.ts.map +1 -0
  97. package/dist/commands/replay.js +52 -0
  98. package/dist/commands/replay.js.map +1 -0
  99. package/dist/commands/scan-consolidated.d.ts +61 -0
  100. package/dist/commands/scan-consolidated.d.ts.map +1 -0
  101. package/dist/commands/scan-consolidated.js +243 -0
  102. package/dist/commands/scan-consolidated.js.map +1 -0
  103. package/dist/commands/scan-secrets.d.ts +47 -0
  104. package/dist/commands/scan-secrets.d.ts.map +1 -0
  105. package/dist/commands/scan-secrets.js +225 -0
  106. package/dist/commands/scan-secrets.js.map +1 -0
  107. package/dist/commands/scan-vulnerabilities-enhanced.d.ts +41 -0
  108. package/dist/commands/scan-vulnerabilities-enhanced.d.ts.map +1 -0
  109. package/dist/commands/scan-vulnerabilities-enhanced.js +368 -0
  110. package/dist/commands/scan-vulnerabilities-enhanced.js.map +1 -0
  111. package/dist/commands/scan-vulnerabilities-osv.d.ts +58 -0
  112. package/dist/commands/scan-vulnerabilities-osv.d.ts.map +1 -0
  113. package/dist/commands/scan-vulnerabilities-osv.js +716 -0
  114. package/dist/commands/scan-vulnerabilities-osv.js.map +1 -0
  115. package/dist/commands/scan-vulnerabilities.d.ts +32 -0
  116. package/dist/commands/scan-vulnerabilities.d.ts.map +1 -0
  117. package/dist/commands/scan-vulnerabilities.js +283 -0
  118. package/dist/commands/scan-vulnerabilities.js.map +1 -0
  119. package/dist/commands/secrets-allowlist.d.ts +7 -0
  120. package/dist/commands/secrets-allowlist.d.ts.map +1 -0
  121. package/dist/commands/secrets-allowlist.js +85 -0
  122. package/dist/commands/secrets-allowlist.js.map +1 -0
  123. package/dist/commands/ship-consolidated.d.ts +58 -0
  124. package/dist/commands/ship-consolidated.d.ts.map +1 -0
  125. package/dist/commands/ship-consolidated.js +515 -0
  126. package/dist/commands/ship-consolidated.js.map +1 -0
  127. package/dist/commands/stats.d.ts +8 -0
  128. package/dist/commands/stats.d.ts.map +1 -0
  129. package/dist/commands/stats.js +134 -0
  130. package/dist/commands/stats.js.map +1 -0
  131. package/dist/commands/upgrade.d.ts +8 -0
  132. package/dist/commands/upgrade.d.ts.map +1 -0
  133. package/dist/commands/upgrade.js +30 -0
  134. package/dist/commands/upgrade.js.map +1 -0
  135. package/dist/fix/analytics.d.ts +121 -0
  136. package/dist/fix/analytics.d.ts.map +1 -0
  137. package/dist/fix/analytics.js +289 -0
  138. package/dist/fix/analytics.js.map +1 -0
  139. package/dist/fix/applicator.d.ts +44 -0
  140. package/dist/fix/applicator.d.ts.map +1 -0
  141. package/dist/fix/applicator.js +144 -0
  142. package/dist/fix/applicator.js.map +1 -0
  143. package/dist/fix/audit.d.ts +61 -0
  144. package/dist/fix/audit.d.ts.map +1 -0
  145. package/dist/fix/audit.js +149 -0
  146. package/dist/fix/audit.js.map +1 -0
  147. package/dist/fix/backup.d.ts +38 -0
  148. package/dist/fix/backup.d.ts.map +1 -0
  149. package/dist/fix/backup.js +154 -0
  150. package/dist/fix/backup.js.map +1 -0
  151. package/dist/fix/config.d.ts +78 -0
  152. package/dist/fix/config.d.ts.map +1 -0
  153. package/dist/fix/config.js +200 -0
  154. package/dist/fix/config.js.map +1 -0
  155. package/dist/fix/engine.d.ts +55 -0
  156. package/dist/fix/engine.d.ts.map +1 -0
  157. package/dist/fix/engine.js +285 -0
  158. package/dist/fix/engine.js.map +1 -0
  159. package/dist/fix/impact.d.ts +74 -0
  160. package/dist/fix/impact.d.ts.map +1 -0
  161. package/dist/fix/impact.js +281 -0
  162. package/dist/fix/impact.js.map +1 -0
  163. package/dist/fix/index.d.ts +5 -0
  164. package/dist/fix/index.d.ts.map +1 -0
  165. package/dist/fix/index.js +12 -0
  166. package/dist/fix/index.js.map +1 -0
  167. package/dist/fix/interactive.d.ts +22 -0
  168. package/dist/fix/interactive.d.ts.map +1 -0
  169. package/dist/fix/interactive.js +172 -0
  170. package/dist/fix/interactive.js.map +1 -0
  171. package/dist/fix/learning.d.ts +109 -0
  172. package/dist/fix/learning.d.ts.map +1 -0
  173. package/dist/fix/learning.js +296 -0
  174. package/dist/fix/learning.js.map +1 -0
  175. package/dist/fix/metrics.d.ts +106 -0
  176. package/dist/fix/metrics.d.ts.map +1 -0
  177. package/dist/fix/metrics.js +138 -0
  178. package/dist/fix/metrics.js.map +1 -0
  179. package/dist/fix/parallel.d.ts +69 -0
  180. package/dist/fix/parallel.d.ts.map +1 -0
  181. package/dist/fix/parallel.js +203 -0
  182. package/dist/fix/parallel.js.map +1 -0
  183. package/dist/fix/report.d.ts +40 -0
  184. package/dist/fix/report.d.ts.map +1 -0
  185. package/dist/fix/report.js +212 -0
  186. package/dist/fix/report.js.map +1 -0
  187. package/dist/fix/strategy.d.ts +53 -0
  188. package/dist/fix/strategy.d.ts.map +1 -0
  189. package/dist/fix/strategy.js +143 -0
  190. package/dist/fix/strategy.js.map +1 -0
  191. package/dist/fix/templates.d.ts +58 -0
  192. package/dist/fix/templates.d.ts.map +1 -0
  193. package/dist/fix/templates.js +259 -0
  194. package/dist/fix/templates.js.map +1 -0
  195. package/dist/fix/testing.d.ts +68 -0
  196. package/dist/fix/testing.d.ts.map +1 -0
  197. package/dist/fix/testing.js +245 -0
  198. package/dist/fix/testing.js.map +1 -0
  199. package/dist/fix/validation.d.ts +71 -0
  200. package/dist/fix/validation.d.ts.map +1 -0
  201. package/dist/fix/validation.js +267 -0
  202. package/dist/fix/validation.js.map +1 -0
  203. package/dist/fix/visualization.d.ts +73 -0
  204. package/dist/fix/visualization.d.ts.map +1 -0
  205. package/dist/fix/visualization.js +243 -0
  206. package/dist/fix/visualization.js.map +1 -0
  207. package/dist/formatters/index.d.ts +6 -0
  208. package/dist/formatters/index.d.ts.map +1 -0
  209. package/dist/formatters/index.js +11 -0
  210. package/dist/formatters/index.js.map +1 -0
  211. package/dist/formatters/sarif-enhanced.d.ts +78 -0
  212. package/dist/formatters/sarif-enhanced.d.ts.map +1 -0
  213. package/dist/formatters/sarif-enhanced.js +144 -0
  214. package/dist/formatters/sarif-enhanced.js.map +1 -0
  215. package/dist/formatters/sarif-v2.d.ts +121 -0
  216. package/dist/formatters/sarif-v2.d.ts.map +1 -0
  217. package/dist/formatters/sarif-v2.js +356 -0
  218. package/dist/formatters/sarif-v2.js.map +1 -0
  219. package/dist/formatters/sarif.d.ts +72 -0
  220. package/dist/formatters/sarif.d.ts.map +1 -0
  221. package/dist/formatters/sarif.js +146 -0
  222. package/dist/formatters/sarif.js.map +1 -0
  223. package/dist/index.d.ts +61 -0
  224. package/dist/index.d.ts.map +1 -0
  225. package/dist/index.js +4455 -0
  226. package/dist/index.js.map +1 -0
  227. package/dist/init/ci-generator.d.ts +18 -0
  228. package/dist/init/ci-generator.d.ts.map +1 -0
  229. package/dist/init/ci-generator.js +317 -0
  230. package/dist/init/ci-generator.js.map +1 -0
  231. package/dist/init/detect-framework.d.ts +15 -0
  232. package/dist/init/detect-framework.d.ts.map +1 -0
  233. package/dist/init/detect-framework.js +301 -0
  234. package/dist/init/detect-framework.js.map +1 -0
  235. package/dist/init/hooks-installer.d.ts +22 -0
  236. package/dist/init/hooks-installer.d.ts.map +1 -0
  237. package/dist/init/hooks-installer.js +310 -0
  238. package/dist/init/hooks-installer.js.map +1 -0
  239. package/dist/init/index.d.ts +8 -0
  240. package/dist/init/index.d.ts.map +1 -0
  241. package/dist/init/index.js +22 -0
  242. package/dist/init/index.js.map +1 -0
  243. package/dist/init/templates.d.ts +401 -0
  244. package/dist/init/templates.d.ts.map +1 -0
  245. package/dist/init/templates.js +240 -0
  246. package/dist/init/templates.js.map +1 -0
  247. package/dist/mcp/server.d.ts +12 -0
  248. package/dist/mcp/server.d.ts.map +1 -0
  249. package/dist/mcp/server.js +42 -0
  250. package/dist/mcp/server.js.map +1 -0
  251. package/dist/mcp/telemetry.d.ts +40 -0
  252. package/dist/mcp/telemetry.d.ts.map +1 -0
  253. package/dist/mcp/telemetry.js +98 -0
  254. package/dist/mcp/telemetry.js.map +1 -0
  255. package/dist/reality/no-dead-buttons/button-sweep-generator.d.ts +32 -0
  256. package/dist/reality/no-dead-buttons/button-sweep-generator.d.ts.map +1 -0
  257. package/dist/reality/no-dead-buttons/button-sweep-generator.js +236 -0
  258. package/dist/reality/no-dead-buttons/button-sweep-generator.js.map +1 -0
  259. package/dist/reality/no-dead-buttons/index.d.ts +11 -0
  260. package/dist/reality/no-dead-buttons/index.d.ts.map +1 -0
  261. package/dist/reality/no-dead-buttons/index.js +18 -0
  262. package/dist/reality/no-dead-buttons/index.js.map +1 -0
  263. package/dist/reality/no-dead-buttons/static-scanner.d.ts +34 -0
  264. package/dist/reality/no-dead-buttons/static-scanner.d.ts.map +1 -0
  265. package/dist/reality/no-dead-buttons/static-scanner.js +230 -0
  266. package/dist/reality/no-dead-buttons/static-scanner.js.map +1 -0
  267. package/dist/reality/reality-graph.d.ts +192 -0
  268. package/dist/reality/reality-graph.d.ts.map +1 -0
  269. package/dist/reality/reality-graph.js +600 -0
  270. package/dist/reality/reality-graph.js.map +1 -0
  271. package/dist/reality/reality-runner.d.ts +89 -0
  272. package/dist/reality/reality-runner.d.ts.map +1 -0
  273. package/dist/reality/reality-runner.js +540 -0
  274. package/dist/reality/reality-runner.js.map +1 -0
  275. package/dist/reality/receipt-generator.d.ts +152 -0
  276. package/dist/reality/receipt-generator.d.ts.map +1 -0
  277. package/dist/reality/receipt-generator.js +495 -0
  278. package/dist/reality/receipt-generator.js.map +1 -0
  279. package/dist/reality/runtime-tracer.d.ts +75 -0
  280. package/dist/reality/runtime-tracer.d.ts.map +1 -0
  281. package/dist/reality/runtime-tracer.js +109 -0
  282. package/dist/reality/runtime-tracer.js.map +1 -0
  283. package/dist/runtime/auth-utils.d.ts +43 -0
  284. package/dist/runtime/auth-utils.d.ts.map +1 -0
  285. package/dist/runtime/auth-utils.js +130 -0
  286. package/dist/runtime/auth-utils.js.map +1 -0
  287. package/dist/runtime/cli-errors.d.ts +38 -0
  288. package/dist/runtime/cli-errors.d.ts.map +1 -0
  289. package/dist/runtime/cli-errors.js +354 -0
  290. package/dist/runtime/cli-errors.js.map +1 -0
  291. package/dist/runtime/client.d.ts +74 -0
  292. package/dist/runtime/client.d.ts.map +1 -0
  293. package/dist/runtime/client.js +222 -0
  294. package/dist/runtime/client.js.map +1 -0
  295. package/dist/runtime/creds.d.ts +48 -0
  296. package/dist/runtime/creds.d.ts.map +1 -0
  297. package/dist/runtime/creds.js +245 -0
  298. package/dist/runtime/creds.js.map +1 -0
  299. package/dist/runtime/exit-codes.d.ts +49 -0
  300. package/dist/runtime/exit-codes.d.ts.map +1 -0
  301. package/dist/runtime/exit-codes.js +93 -0
  302. package/dist/runtime/exit-codes.js.map +1 -0
  303. package/dist/runtime/index.d.ts +9 -0
  304. package/dist/runtime/index.d.ts.map +1 -0
  305. package/dist/runtime/index.js +25 -0
  306. package/dist/runtime/index.js.map +1 -0
  307. package/dist/runtime/json-output.d.ts +42 -0
  308. package/dist/runtime/json-output.d.ts.map +1 -0
  309. package/dist/runtime/json-output.js +59 -0
  310. package/dist/runtime/json-output.js.map +1 -0
  311. package/dist/runtime/owner-mode.d.ts +48 -0
  312. package/dist/runtime/owner-mode.d.ts.map +1 -0
  313. package/dist/runtime/owner-mode.js +284 -0
  314. package/dist/runtime/owner-mode.js.map +1 -0
  315. package/dist/runtime/semver.d.ts +37 -0
  316. package/dist/runtime/semver.d.ts.map +1 -0
  317. package/dist/runtime/semver.js +110 -0
  318. package/dist/runtime/semver.js.map +1 -0
  319. package/dist/scan/dead-ui-detector.d.ts +48 -0
  320. package/dist/scan/dead-ui-detector.d.ts.map +1 -0
  321. package/dist/scan/dead-ui-detector.js +170 -0
  322. package/dist/scan/dead-ui-detector.js.map +1 -0
  323. package/dist/scan/playwright-sweep.d.ts +40 -0
  324. package/dist/scan/playwright-sweep.d.ts.map +1 -0
  325. package/dist/scan/playwright-sweep.js +216 -0
  326. package/dist/scan/playwright-sweep.js.map +1 -0
  327. package/dist/scan/proof-bundle.d.ts +25 -0
  328. package/dist/scan/proof-bundle.d.ts.map +1 -0
  329. package/dist/scan/proof-bundle.js +203 -0
  330. package/dist/scan/proof-bundle.js.map +1 -0
  331. package/dist/scan/proof-graph.d.ts +59 -0
  332. package/dist/scan/proof-graph.d.ts.map +1 -0
  333. package/dist/scan/proof-graph.js +64 -0
  334. package/dist/scan/proof-graph.js.map +1 -0
  335. package/dist/scan/reality-sniff.d.ts +56 -0
  336. package/dist/scan/reality-sniff.d.ts.map +1 -0
  337. package/dist/scan/reality-sniff.js +200 -0
  338. package/dist/scan/reality-sniff.js.map +1 -0
  339. package/dist/scan/structural-verifier.d.ts +20 -0
  340. package/dist/scan/structural-verifier.d.ts.map +1 -0
  341. package/dist/scan/structural-verifier.js +112 -0
  342. package/dist/scan/structural-verifier.js.map +1 -0
  343. package/dist/scan/verification-engine.d.ts +47 -0
  344. package/dist/scan/verification-engine.d.ts.map +1 -0
  345. package/dist/scan/verification-engine.js +141 -0
  346. package/dist/scan/verification-engine.js.map +1 -0
  347. package/dist/scanner/baseline.d.ts +52 -0
  348. package/dist/scanner/baseline.d.ts.map +1 -0
  349. package/dist/scanner/baseline.js +85 -0
  350. package/dist/scanner/baseline.js.map +1 -0
  351. package/dist/scanner/incremental.d.ts +30 -0
  352. package/dist/scanner/incremental.d.ts.map +1 -0
  353. package/dist/scanner/incremental.js +82 -0
  354. package/dist/scanner/incremental.js.map +1 -0
  355. package/dist/scanner/index.d.ts +8 -0
  356. package/dist/scanner/index.d.ts.map +1 -0
  357. package/dist/scanner/index.js +15 -0
  358. package/dist/scanner/index.js.map +1 -0
  359. package/dist/scanner/parallel.d.ts +43 -0
  360. package/dist/scanner/parallel.d.ts.map +1 -0
  361. package/dist/scanner/parallel.js +99 -0
  362. package/dist/scanner/parallel.js.map +1 -0
  363. package/dist/scanner/placeholder-detector.d.ts +56 -0
  364. package/dist/scanner/placeholder-detector.d.ts.map +1 -0
  365. package/dist/scanner/placeholder-detector.js +220 -0
  366. package/dist/scanner/placeholder-detector.js.map +1 -0
  367. package/dist/scanner/route-detector.d.ts +100 -0
  368. package/dist/scanner/route-detector.d.ts.map +1 -0
  369. package/dist/scanner/route-detector.js +455 -0
  370. package/dist/scanner/route-detector.js.map +1 -0
  371. package/dist/scanner/scoring.d.ts +67 -0
  372. package/dist/scanner/scoring.d.ts.map +1 -0
  373. package/dist/scanner/scoring.js +284 -0
  374. package/dist/scanner/scoring.js.map +1 -0
  375. package/dist/ship-baseline.d.ts +56 -0
  376. package/dist/ship-baseline.d.ts.map +1 -0
  377. package/dist/ship-baseline.js +194 -0
  378. package/dist/ship-baseline.js.map +1 -0
  379. package/dist/ship-config.d.ts +91 -0
  380. package/dist/ship-config.d.ts.map +1 -0
  381. package/dist/ship-config.js +133 -0
  382. package/dist/ship-config.js.map +1 -0
  383. package/dist/ship-data-loader.d.ts +70 -0
  384. package/dist/ship-data-loader.d.ts.map +1 -0
  385. package/dist/ship-data-loader.js +301 -0
  386. package/dist/ship-data-loader.js.map +1 -0
  387. package/dist/standalone.d.ts +1 -0
  388. package/dist/standalone.d.ts.map +1 -0
  389. package/dist/standalone.js +1 -0
  390. package/dist/standalone.js.map +1 -0
  391. package/dist/truth-pack/index.d.ts +102 -0
  392. package/dist/truth-pack/index.d.ts.map +1 -0
  393. package/dist/truth-pack/index.js +694 -0
  394. package/dist/truth-pack/index.js.map +1 -0
  395. package/dist/ui/frame.d.ts +68 -0
  396. package/dist/ui/frame.d.ts.map +1 -0
  397. package/dist/ui/frame.js +165 -0
  398. package/dist/ui/frame.js.map +1 -0
  399. package/dist/ui/index.d.ts +5 -0
  400. package/dist/ui/index.d.ts.map +1 -0
  401. package/dist/ui/index.js +16 -0
  402. package/dist/ui/index.js.map +1 -0
  403. package/dist/ui.d.ts +36 -0
  404. package/dist/ui.d.ts.map +1 -0
  405. package/dist/ui.js +45 -0
  406. package/dist/ui.js.map +1 -0
  407. package/dist/utils/ai-helpers.d.ts +72 -0
  408. package/dist/utils/ai-helpers.d.ts.map +1 -0
  409. package/dist/utils/ai-helpers.js +339 -0
  410. package/dist/utils/ai-helpers.js.map +1 -0
  411. package/dist/utils/validation.d.ts +34 -0
  412. package/dist/utils/validation.d.ts.map +1 -0
  413. package/dist/utils/validation.js +160 -0
  414. package/dist/utils/validation.js.map +1 -0
  415. package/package.json +66 -0
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Reality Mode - Playwright Test Execution
3
+ *
4
+ * Enterprise-grade execution of generated Playwright tests with:
5
+ * - Dependency detection (Playwright, browsers)
6
+ * - Artifact storage (.guardrail/reality/<runId>/)
7
+ * - Configurable execution (headless, timeout, workers, reporter)
8
+ * - Signal handling (Ctrl+C, timeout kill)
9
+ */
10
+ import { type RuntimeTrace } from './runtime-tracer';
11
+ export interface PlaywrightRunOptions {
12
+ testFile: string;
13
+ headless: boolean;
14
+ timeout: number;
15
+ workers: number;
16
+ reporter: string;
17
+ projectPath: string;
18
+ baseUrl: string;
19
+ flow: string;
20
+ trace?: 'on' | 'off' | 'retain-on-failure' | 'on-first-retry';
21
+ video?: 'on' | 'off' | 'retain-on-failure' | 'on-first-retry';
22
+ screenshot?: 'on' | 'off' | 'only-on-failure';
23
+ generateReceipt?: boolean;
24
+ orgKeyId?: string;
25
+ orgPrivateKey?: string;
26
+ criticalPaths?: Array<{
27
+ path: string;
28
+ description: string;
29
+ covered: boolean;
30
+ evidence: string[];
31
+ timestamp: string;
32
+ }>;
33
+ }
34
+ export interface DependencyCheckResult {
35
+ playwrightInstalled: boolean;
36
+ browsersInstalled: boolean;
37
+ playwrightPath: string | null;
38
+ errorMessage: string | null;
39
+ installCommands: string[];
40
+ }
41
+ export interface RunArtifacts {
42
+ runId: string;
43
+ artifactDir: string;
44
+ testFilePath: string;
45
+ reportPath: string | null;
46
+ screenshotsDir: string;
47
+ }
48
+ export interface PlaywrightRunResult {
49
+ success: boolean;
50
+ exitCode: number;
51
+ output: string;
52
+ artifacts: RunArtifacts;
53
+ duration: number;
54
+ receiptPath?: string;
55
+ runtimeTraces?: RuntimeTrace;
56
+ }
57
+ /**
58
+ * Check if Playwright is installed and browsers are available
59
+ */
60
+ export declare function checkPlaywrightDependencies(projectPath: string): DependencyCheckResult;
61
+ /**
62
+ * Build Playwright command arguments
63
+ */
64
+ export declare function buildPlaywrightArgs(options: PlaywrightRunOptions): string[];
65
+ /**
66
+ * Create artifact directory structure
67
+ */
68
+ export declare function createArtifactDirectory(projectPath: string, flow: string): RunArtifacts;
69
+ /**
70
+ * Copy test file to artifact directory
71
+ */
72
+ export declare function copyTestToArtifacts(sourceTestFile: string, artifacts: RunArtifacts): void;
73
+ /**
74
+ * Run Playwright tests with proper signal handling
75
+ */
76
+ export declare function runPlaywrightTests(options: PlaywrightRunOptions, artifacts: RunArtifacts, onOutput: (data: string) => void): Promise<PlaywrightRunResult>;
77
+ /**
78
+ * Format duration for display
79
+ */
80
+ export declare function formatDuration(ms: number): string;
81
+ /**
82
+ * Run Playwright codegen for recording mode
83
+ */
84
+ export declare function runPlaywrightCodegen(baseUrl: string, outputFile: string, projectPath: string, onOutput: (data: string) => void): Promise<{
85
+ success: boolean;
86
+ exitCode: number;
87
+ output: string;
88
+ }>;
89
+ //# sourceMappingURL=reality-runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reality-runner.d.ts","sourceRoot":"","sources":["../../src/reality/reality-runner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,540 @@
1
+ "use strict";
2
+ /**
3
+ * Reality Mode - Playwright Test Execution
4
+ *
5
+ * Enterprise-grade execution of generated Playwright tests with:
6
+ * - Dependency detection (Playwright, browsers)
7
+ * - Artifact storage (.guardrail/reality/<runId>/)
8
+ * - Configurable execution (headless, timeout, workers, reporter)
9
+ * - Signal handling (Ctrl+C, timeout kill)
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.checkPlaywrightDependencies = checkPlaywrightDependencies;
13
+ exports.buildPlaywrightArgs = buildPlaywrightArgs;
14
+ exports.createArtifactDirectory = createArtifactDirectory;
15
+ exports.copyTestToArtifacts = copyTestToArtifacts;
16
+ exports.runPlaywrightTests = runPlaywrightTests;
17
+ exports.formatDuration = formatDuration;
18
+ exports.runPlaywrightCodegen = runPlaywrightCodegen;
19
+ const child_process_1 = require("child_process");
20
+ const fs_1 = require("fs");
21
+ const path_1 = require("path");
22
+ const crypto_1 = require("crypto");
23
+ const receipt_generator_1 = require("./receipt-generator");
24
+ const runtime_tracer_1 = require("./runtime-tracer");
25
+ /**
26
+ * Check if Playwright is installed and browsers are available
27
+ */
28
+ function checkPlaywrightDependencies(projectPath) {
29
+ const result = {
30
+ playwrightInstalled: false,
31
+ browsersInstalled: false,
32
+ playwrightPath: null,
33
+ errorMessage: null,
34
+ installCommands: [],
35
+ };
36
+ // Check for Playwright in node_modules
37
+ const localPlaywright = (0, path_1.join)(projectPath, 'node_modules', '@playwright', 'test');
38
+ const localPlaywrightBin = (0, path_1.join)(projectPath, 'node_modules', '.bin', 'playwright');
39
+ if ((0, fs_1.existsSync)(localPlaywright)) {
40
+ result.playwrightInstalled = true;
41
+ result.playwrightPath = localPlaywrightBin;
42
+ }
43
+ else {
44
+ // Check for global Playwright
45
+ try {
46
+ const globalCheck = (0, child_process_1.execSync)('npx playwright --version', {
47
+ encoding: 'utf8',
48
+ stdio: ['pipe', 'pipe', 'pipe'],
49
+ timeout: 10000,
50
+ });
51
+ if (globalCheck && globalCheck.includes('.')) {
52
+ result.playwrightInstalled = true;
53
+ result.playwrightPath = 'npx playwright';
54
+ }
55
+ }
56
+ catch {
57
+ // Not installed globally either
58
+ }
59
+ }
60
+ if (!result.playwrightInstalled) {
61
+ result.errorMessage = 'Playwright is not installed.';
62
+ result.installCommands = [
63
+ 'npm install -D @playwright/test',
64
+ 'npx playwright install',
65
+ ];
66
+ return result;
67
+ }
68
+ // Check if browsers are installed
69
+ try {
70
+ const browserCheckCmd = result.playwrightPath === 'npx playwright'
71
+ ? 'npx playwright install --dry-run chromium 2>&1'
72
+ : `"${result.playwrightPath}" install --dry-run chromium 2>&1`;
73
+ // Try to detect browser installation by checking common paths
74
+ const homeDir = process.env.HOME || process.env.USERPROFILE || '';
75
+ const browserPaths = [
76
+ (0, path_1.join)(homeDir, '.cache', 'ms-playwright'),
77
+ (0, path_1.join)(homeDir, 'AppData', 'Local', 'ms-playwright'),
78
+ (0, path_1.join)(homeDir, 'Library', 'Caches', 'ms-playwright'),
79
+ ];
80
+ let browsersFound = false;
81
+ for (const browserPath of browserPaths) {
82
+ if ((0, fs_1.existsSync)(browserPath)) {
83
+ try {
84
+ const contents = (0, fs_1.readdirSync)(browserPath);
85
+ if (contents.some(f => f.startsWith('chromium'))) {
86
+ browsersFound = true;
87
+ break;
88
+ }
89
+ }
90
+ catch {
91
+ // Ignore read errors
92
+ }
93
+ }
94
+ }
95
+ if (browsersFound) {
96
+ result.browsersInstalled = true;
97
+ }
98
+ else {
99
+ // Try running a quick test to see if browsers work
100
+ try {
101
+ (0, child_process_1.execSync)('npx playwright test --list 2>&1', {
102
+ encoding: 'utf8',
103
+ stdio: ['pipe', 'pipe', 'pipe'],
104
+ timeout: 15000,
105
+ cwd: projectPath,
106
+ });
107
+ result.browsersInstalled = true;
108
+ }
109
+ catch (e) {
110
+ const errorOutput = e.stdout?.toString() || e.stderr?.toString() || '';
111
+ if (errorOutput.includes('Executable doesn\'t exist') ||
112
+ errorOutput.includes('browserType.launch') ||
113
+ errorOutput.includes('npx playwright install')) {
114
+ result.browsersInstalled = false;
115
+ result.errorMessage = 'Playwright browsers are not installed.';
116
+ result.installCommands = ['npx playwright install'];
117
+ }
118
+ else {
119
+ // Might just be no tests found, which is fine
120
+ result.browsersInstalled = true;
121
+ }
122
+ }
123
+ }
124
+ }
125
+ catch {
126
+ // Assume browsers might be installed if we can't check
127
+ result.browsersInstalled = true;
128
+ }
129
+ if (!result.browsersInstalled) {
130
+ result.errorMessage = 'Playwright browsers are not installed.';
131
+ result.installCommands = ['npx playwright install'];
132
+ }
133
+ return result;
134
+ }
135
+ /**
136
+ * Build Playwright command arguments
137
+ */
138
+ function buildPlaywrightArgs(options) {
139
+ const args = ['test', options.testFile];
140
+ // Headless mode (Playwright default is headless, --headed overrides)
141
+ if (!options.headless) {
142
+ args.push('--headed');
143
+ }
144
+ // Timeout (in milliseconds)
145
+ if (options.timeout > 0) {
146
+ args.push('--timeout', String(options.timeout * 1000));
147
+ }
148
+ // Workers
149
+ args.push('--workers', String(options.workers));
150
+ // Reporter
151
+ if (options.reporter) {
152
+ args.push('--reporter', options.reporter);
153
+ }
154
+ // Screenshot
155
+ if (options.screenshot) {
156
+ args.push('--screenshot', options.screenshot);
157
+ }
158
+ // Trace mode
159
+ if (options.trace) {
160
+ args.push('--trace', options.trace);
161
+ }
162
+ // Video
163
+ if (options.video) {
164
+ args.push('--video', options.video);
165
+ }
166
+ return args;
167
+ }
168
+ /**
169
+ * Create artifact directory structure
170
+ */
171
+ function createArtifactDirectory(projectPath, flow) {
172
+ const runId = `${flow}-${Date.now()}-${(0, crypto_1.randomUUID)().slice(0, 8)}`;
173
+ const artifactDir = (0, path_1.join)(projectPath, '.guardrail', 'reality', runId);
174
+ const screenshotsDir = (0, path_1.join)(artifactDir, 'screenshots');
175
+ const reportDir = (0, path_1.join)(artifactDir, 'report');
176
+ (0, fs_1.mkdirSync)(artifactDir, { recursive: true });
177
+ (0, fs_1.mkdirSync)(screenshotsDir, { recursive: true });
178
+ (0, fs_1.mkdirSync)(reportDir, { recursive: true });
179
+ return {
180
+ runId,
181
+ artifactDir,
182
+ testFilePath: (0, path_1.join)(artifactDir, `reality-${flow}.test.ts`),
183
+ reportPath: reportDir,
184
+ screenshotsDir,
185
+ };
186
+ }
187
+ /**
188
+ * Copy test file to artifact directory
189
+ */
190
+ function copyTestToArtifacts(sourceTestFile, artifacts) {
191
+ (0, fs_1.copyFileSync)(sourceTestFile, artifacts.testFilePath);
192
+ }
193
+ /**
194
+ * Run Playwright tests with proper signal handling
195
+ */
196
+ async function runPlaywrightTests(options, artifacts, onOutput) {
197
+ return new Promise((resolve) => {
198
+ const startTime = Date.now();
199
+ let output = '';
200
+ let childProcess = null;
201
+ let killed = false;
202
+ let timeoutHandle = null;
203
+ const depCheck = checkPlaywrightDependencies(options.projectPath);
204
+ if (!depCheck.playwrightInstalled || !depCheck.browsersInstalled) {
205
+ resolve({
206
+ success: false,
207
+ exitCode: 2,
208
+ output: depCheck.errorMessage || 'Dependency check failed',
209
+ artifacts,
210
+ duration: Date.now() - startTime,
211
+ });
212
+ return;
213
+ }
214
+ const args = buildPlaywrightArgs(options);
215
+ // Add output directory for artifacts
216
+ args.push('--output', artifacts.screenshotsDir);
217
+ // Determine if we should use npx or local binary
218
+ const useNpx = depCheck.playwrightPath === 'npx playwright';
219
+ const command = useNpx ? 'npx' : process.platform === 'win32' ? 'npx' : depCheck.playwrightPath;
220
+ const spawnArgs = useNpx ? ['playwright', ...args] : args;
221
+ // Write run metadata
222
+ const metadata = {
223
+ runId: artifacts.runId,
224
+ startTime: new Date().toISOString(),
225
+ options: {
226
+ testFile: options.testFile,
227
+ headless: options.headless,
228
+ timeout: options.timeout,
229
+ workers: options.workers,
230
+ reporter: options.reporter,
231
+ baseUrl: options.baseUrl,
232
+ flow: options.flow,
233
+ },
234
+ command: `${command} ${spawnArgs.join(' ')}`,
235
+ };
236
+ (0, fs_1.writeFileSync)((0, path_1.join)(artifacts.artifactDir, 'run-metadata.json'), JSON.stringify(metadata, null, 2));
237
+ childProcess = (0, child_process_1.spawn)(command, spawnArgs, {
238
+ cwd: (0, path_1.dirname)(options.testFile),
239
+ stdio: ['pipe', 'pipe', 'pipe'],
240
+ shell: process.platform === 'win32',
241
+ env: {
242
+ ...process.env,
243
+ PLAYWRIGHT_HTML_REPORT: artifacts.reportPath || undefined,
244
+ BASE_URL: options.baseUrl,
245
+ },
246
+ });
247
+ // Set up timeout
248
+ if (options.timeout > 0) {
249
+ const totalTimeout = options.timeout * 1000 * 2; // 2x timeout for safety
250
+ timeoutHandle = setTimeout(() => {
251
+ if (childProcess && !killed) {
252
+ killed = true;
253
+ output += '\n[TIMEOUT] Test execution exceeded timeout limit. Killing process.\n';
254
+ onOutput('\n[TIMEOUT] Test execution exceeded timeout limit. Killing process.\n');
255
+ childProcess.kill('SIGTERM');
256
+ setTimeout(() => {
257
+ if (childProcess && !childProcess.killed) {
258
+ childProcess.kill('SIGKILL');
259
+ }
260
+ }, 5000);
261
+ }
262
+ }, totalTimeout);
263
+ }
264
+ // Handle Ctrl+C
265
+ const sigintHandler = () => {
266
+ if (childProcess && !killed) {
267
+ killed = true;
268
+ output += '\n[INTERRUPTED] Received SIGINT. Stopping tests.\n';
269
+ onOutput('\n[INTERRUPTED] Received SIGINT. Stopping tests.\n');
270
+ childProcess.kill('SIGTERM');
271
+ }
272
+ };
273
+ process.on('SIGINT', sigintHandler);
274
+ childProcess.stdout?.on('data', (data) => {
275
+ const text = data.toString();
276
+ output += text;
277
+ onOutput(text);
278
+ });
279
+ childProcess.stderr?.on('data', (data) => {
280
+ const text = data.toString();
281
+ output += text;
282
+ onOutput(text);
283
+ });
284
+ childProcess.on('close', async (code) => {
285
+ if (timeoutHandle) {
286
+ clearTimeout(timeoutHandle);
287
+ }
288
+ process.removeListener('SIGINT', sigintHandler);
289
+ const duration = Date.now() - startTime;
290
+ const exitCode = code ?? 1;
291
+ const success = exitCode === 0;
292
+ // Write output log
293
+ (0, fs_1.writeFileSync)((0, path_1.join)(artifacts.artifactDir, 'output.log'), output);
294
+ // Write result summary
295
+ const summary = {
296
+ runId: artifacts.runId,
297
+ success,
298
+ exitCode,
299
+ duration,
300
+ endTime: new Date().toISOString(),
301
+ killed,
302
+ };
303
+ (0, fs_1.writeFileSync)((0, path_1.join)(artifacts.artifactDir, 'result.json'), JSON.stringify(summary, null, 2));
304
+ // Copy any HTML report if available
305
+ copyHtmlReportIfExists(options.projectPath, artifacts);
306
+ // Generate receipt if requested
307
+ let receiptPath;
308
+ let runtimeTraces;
309
+ if (options.generateReceipt) {
310
+ try {
311
+ // Try to load runtime traces from test output
312
+ const runtimeTracesPath = (0, path_1.join)(artifacts.artifactDir, 'runtime-traces.json');
313
+ if ((0, fs_1.existsSync)(runtimeTracesPath)) {
314
+ try {
315
+ const tracesData = JSON.parse((0, fs_1.readFileSync)(runtimeTracesPath, 'utf-8'));
316
+ runtimeTraces = {
317
+ requests: tracesData.requests || [],
318
+ routes: tracesData.routes || [],
319
+ dbQueries: [], // DB queries would need additional instrumentation
320
+ };
321
+ }
322
+ catch (e) {
323
+ // Fall back to runtime tracer
324
+ runtimeTraces = runtime_tracer_1.runtimeTracer.getTraces();
325
+ }
326
+ }
327
+ else {
328
+ // Fall back to runtime tracer
329
+ runtimeTraces = runtime_tracer_1.runtimeTracer.getTraces();
330
+ }
331
+ // Update critical paths coverage based on routes hit
332
+ if (runtimeTraces && options.criticalPaths) {
333
+ const routesHit = new Set(runtimeTraces.routes.map(r => r.path));
334
+ options.criticalPaths = options.criticalPaths.map(path => ({
335
+ ...path,
336
+ covered: routesHit.has(path.path),
337
+ evidence: path.covered ? [
338
+ ...path.evidence,
339
+ ...runtimeTraces.requests
340
+ .filter(r => r.url.includes(path.path))
341
+ .map(r => `request-${r.method}-${r.statusCode}.png`)
342
+ ] : path.evidence,
343
+ }));
344
+ }
345
+ // Extract routes from trace files if available
346
+ if (options.trace && options.trace !== 'off') {
347
+ const traceFiles = (0, fs_1.readdirSync)(artifacts.artifactDir).filter(f => f.includes('trace'));
348
+ for (const traceFile of traceFiles) {
349
+ // Routes would be extracted from trace files here
350
+ // For now, we rely on runtime traces from test
351
+ }
352
+ }
353
+ // Determine verdict
354
+ const verdict = success
355
+ ? (options.flow === 'checkout' || options.flow === 'auth' ? 'SHIP' : 'PASS')
356
+ : 'FAIL';
357
+ // Record command execution
358
+ const commands = [{
359
+ command: useNpx ? 'npx' : command,
360
+ args: spawnArgs,
361
+ exitCode,
362
+ stdout: output.slice(0, 10000), // Limit stdout size
363
+ duration,
364
+ timestamp: new Date(metadata.startTime).toISOString(),
365
+ }];
366
+ const receiptOptions = {
367
+ projectPath: options.projectPath,
368
+ runId: artifacts.runId,
369
+ verdict,
370
+ artifactDir: artifacts.artifactDir,
371
+ commands,
372
+ runtimeTraces,
373
+ criticalPaths: options.criticalPaths,
374
+ orgKeyId: options.orgKeyId,
375
+ orgPrivateKey: options.orgPrivateKey,
376
+ };
377
+ receiptPath = await (0, receipt_generator_1.generateReceipt)(receiptOptions);
378
+ // Write receipt summary
379
+ const receiptSummary = (0, receipt_generator_1.generateReceiptSummary)(receiptPath);
380
+ (0, fs_1.writeFileSync)((0, path_1.join)(artifacts.artifactDir, 'receipt-summary.txt'), receiptSummary);
381
+ }
382
+ catch (error) {
383
+ // Log receipt generation error but don't fail the run
384
+ (0, fs_1.writeFileSync)((0, path_1.join)(artifacts.artifactDir, 'receipt-error.log'), `Receipt generation failed: ${error.message}\n${error.stack}`);
385
+ }
386
+ }
387
+ resolve({
388
+ success,
389
+ exitCode,
390
+ output,
391
+ artifacts,
392
+ duration,
393
+ receiptPath,
394
+ runtimeTraces,
395
+ });
396
+ });
397
+ childProcess.on('error', (err) => {
398
+ if (timeoutHandle) {
399
+ clearTimeout(timeoutHandle);
400
+ }
401
+ process.removeListener('SIGINT', sigintHandler);
402
+ const duration = Date.now() - startTime;
403
+ output += `\n[ERROR] Failed to spawn Playwright: ${err.message}\n`;
404
+ (0, fs_1.writeFileSync)((0, path_1.join)(artifacts.artifactDir, 'output.log'), output);
405
+ resolve({
406
+ success: false,
407
+ exitCode: 1,
408
+ output,
409
+ artifacts,
410
+ duration,
411
+ });
412
+ });
413
+ });
414
+ }
415
+ /**
416
+ * Copy HTML report to artifacts if it exists
417
+ */
418
+ function copyHtmlReportIfExists(projectPath, artifacts) {
419
+ const possibleReportPaths = [
420
+ (0, path_1.join)(projectPath, 'playwright-report'),
421
+ (0, path_1.join)((0, path_1.dirname)(artifacts.testFilePath), 'playwright-report'),
422
+ (0, path_1.join)(projectPath, '.guardrail', 'reality-tests', 'playwright-report'),
423
+ ];
424
+ for (const reportPath of possibleReportPaths) {
425
+ if ((0, fs_1.existsSync)(reportPath) && (0, fs_1.existsSync)((0, path_1.join)(reportPath, 'index.html'))) {
426
+ try {
427
+ copyDirectoryRecursive(reportPath, artifacts.reportPath);
428
+ break;
429
+ }
430
+ catch {
431
+ // Ignore copy errors
432
+ }
433
+ }
434
+ }
435
+ }
436
+ /**
437
+ * Recursively copy directory
438
+ */
439
+ function copyDirectoryRecursive(src, dest) {
440
+ if (!(0, fs_1.existsSync)(dest)) {
441
+ (0, fs_1.mkdirSync)(dest, { recursive: true });
442
+ }
443
+ const entries = (0, fs_1.readdirSync)(src, { withFileTypes: true });
444
+ for (const entry of entries) {
445
+ const srcPath = (0, path_1.join)(src, entry.name);
446
+ const destPath = (0, path_1.join)(dest, entry.name);
447
+ if (entry.isDirectory()) {
448
+ copyDirectoryRecursive(srcPath, destPath);
449
+ }
450
+ else {
451
+ (0, fs_1.copyFileSync)(srcPath, destPath);
452
+ }
453
+ }
454
+ }
455
+ /**
456
+ * Format duration for display
457
+ */
458
+ function formatDuration(ms) {
459
+ if (ms < 1000) {
460
+ return `${ms}ms`;
461
+ }
462
+ const seconds = Math.floor(ms / 1000);
463
+ const minutes = Math.floor(seconds / 60);
464
+ const remainingSeconds = seconds % 60;
465
+ if (minutes > 0) {
466
+ return `${minutes}m ${remainingSeconds}s`;
467
+ }
468
+ return `${seconds}s`;
469
+ }
470
+ /**
471
+ * Run Playwright codegen for recording mode
472
+ */
473
+ async function runPlaywrightCodegen(baseUrl, outputFile, projectPath, onOutput) {
474
+ return new Promise((resolve) => {
475
+ const depCheck = checkPlaywrightDependencies(projectPath);
476
+ if (!depCheck.playwrightInstalled || !depCheck.browsersInstalled) {
477
+ const errorMsg = depCheck.errorMessage || 'Dependency check failed';
478
+ onOutput(errorMsg + '\n');
479
+ if (depCheck.installCommands.length > 0) {
480
+ onOutput('\nInstall commands:\n');
481
+ depCheck.installCommands.forEach(cmd => onOutput(` ${cmd}\n`));
482
+ }
483
+ resolve({
484
+ success: false,
485
+ exitCode: 2,
486
+ output: errorMsg,
487
+ });
488
+ return;
489
+ }
490
+ let output = '';
491
+ const args = ['codegen', baseUrl, '--target', 'playwright-test', '--output', outputFile];
492
+ const useNpx = depCheck.playwrightPath === 'npx playwright';
493
+ const command = useNpx ? 'npx' : process.platform === 'win32' ? 'npx' : depCheck.playwrightPath;
494
+ const spawnArgs = useNpx ? ['playwright', ...args] : args;
495
+ onOutput(`Starting Playwright codegen...\n`);
496
+ onOutput(`Command: ${command} ${spawnArgs.join(' ')}\n\n`);
497
+ onOutput('Instructions:\n');
498
+ onOutput(' 1. Browser will open - interact with your app\n');
499
+ onOutput(' 2. Click, type, navigate as needed\n');
500
+ onOutput(' 3. Close the browser when done\n');
501
+ onOutput(' 4. Generated test will be saved to: ' + outputFile + '\n\n');
502
+ const childProcess = (0, child_process_1.spawn)(command, spawnArgs, {
503
+ cwd: (0, path_1.dirname)(outputFile),
504
+ stdio: ['pipe', 'pipe', 'pipe'],
505
+ shell: process.platform === 'win32',
506
+ env: {
507
+ ...process.env,
508
+ },
509
+ });
510
+ childProcess.stdout?.on('data', (data) => {
511
+ const text = data.toString();
512
+ output += text;
513
+ onOutput(text);
514
+ });
515
+ childProcess.stderr?.on('data', (data) => {
516
+ const text = data.toString();
517
+ output += text;
518
+ onOutput(text);
519
+ });
520
+ childProcess.on('close', (code) => {
521
+ const exitCode = code ?? 0;
522
+ resolve({
523
+ success: exitCode === 0,
524
+ exitCode,
525
+ output,
526
+ });
527
+ });
528
+ childProcess.on('error', (err) => {
529
+ const errorMsg = `Failed to spawn Playwright codegen: ${err.message}`;
530
+ output += errorMsg;
531
+ onOutput(errorMsg + '\n');
532
+ resolve({
533
+ success: false,
534
+ exitCode: 1,
535
+ output,
536
+ });
537
+ });
538
+ });
539
+ }
540
+ //# sourceMappingURL=reality-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reality-runner.js","sourceRoot":"","sources":["../../src/reality/reality-runner.ts"],"names":[],"mappings":"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"}