@xoxoai/checkmate 0.4.27 → 0.5.0

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 (397) hide show
  1. package/README.md +259 -224
  2. package/bin/checkmate.js +1 -1
  3. package/dist/ai/client.d.ts +45 -30
  4. package/dist/ai/client.d.ts.map +1 -1
  5. package/dist/ai/client.js +198 -129
  6. package/dist/ai/client.js.map +1 -1
  7. package/dist/ai/message-handler.d.ts +5 -7
  8. package/dist/ai/message-handler.d.ts.map +1 -1
  9. package/dist/ai/message-handler.js +38 -21
  10. package/dist/ai/message-handler.js.map +1 -1
  11. package/dist/ai/message-history.d.ts +4 -6
  12. package/dist/ai/message-history.d.ts.map +1 -1
  13. package/dist/ai/message-history.js +18 -21
  14. package/dist/ai/message-history.js.map +1 -1
  15. package/dist/ai/rate-limit-policy.d.ts +5 -3
  16. package/dist/ai/rate-limit-policy.d.ts.map +1 -1
  17. package/dist/ai/rate-limit-policy.js +24 -7
  18. package/dist/ai/rate-limit-policy.js.map +1 -1
  19. package/dist/ai/tool-response-handler.d.ts +11 -16
  20. package/dist/ai/tool-response-handler.d.ts.map +1 -1
  21. package/dist/ai/tool-response-handler.js +59 -28
  22. package/dist/ai/tool-response-handler.js.map +1 -1
  23. package/dist/ai/turn-processor.d.ts +34 -0
  24. package/dist/ai/turn-processor.d.ts.map +1 -0
  25. package/dist/ai/turn-processor.js +107 -0
  26. package/dist/ai/turn-processor.js.map +1 -0
  27. package/dist/api/allocate-run-identity.d.ts +8 -0
  28. package/dist/api/allocate-run-identity.d.ts.map +1 -0
  29. package/dist/api/allocate-run-identity.js +10 -0
  30. package/dist/api/allocate-run-identity.js.map +1 -0
  31. package/dist/api/execute-prepared-run.d.ts +22 -0
  32. package/dist/api/execute-prepared-run.d.ts.map +1 -0
  33. package/dist/api/execute-prepared-run.js +160 -0
  34. package/dist/api/execute-prepared-run.js.map +1 -0
  35. package/dist/api/index.d.ts +25 -0
  36. package/dist/api/index.d.ts.map +1 -0
  37. package/dist/api/index.js +69 -0
  38. package/dist/api/index.js.map +1 -0
  39. package/dist/api/prepare-run.d.ts +44 -0
  40. package/dist/api/prepare-run.d.ts.map +1 -0
  41. package/dist/api/prepare-run.js +261 -0
  42. package/dist/api/prepare-run.js.map +1 -0
  43. package/dist/cli/diagnostic-relay.d.ts +6 -0
  44. package/dist/cli/diagnostic-relay.d.ts.map +1 -0
  45. package/dist/cli/diagnostic-relay.js +6 -0
  46. package/dist/cli/diagnostic-relay.js.map +1 -0
  47. package/dist/cli/main.d.ts +21 -0
  48. package/dist/cli/main.d.ts.map +1 -0
  49. package/dist/cli/main.js +166 -0
  50. package/dist/cli/main.js.map +1 -0
  51. package/dist/cli/protocol.d.ts +57 -0
  52. package/dist/cli/protocol.d.ts.map +1 -0
  53. package/dist/cli/protocol.js +116 -0
  54. package/dist/cli/protocol.js.map +1 -0
  55. package/dist/cli/reconcile-result.d.ts +13 -0
  56. package/dist/cli/reconcile-result.d.ts.map +1 -0
  57. package/dist/cli/reconcile-result.js +300 -0
  58. package/dist/cli/reconcile-result.js.map +1 -0
  59. package/dist/cli/run-parent.d.ts +37 -0
  60. package/dist/cli/run-parent.d.ts.map +1 -0
  61. package/dist/cli/run-parent.js +491 -0
  62. package/dist/cli/run-parent.js.map +1 -0
  63. package/dist/cli/signals.d.ts +36 -0
  64. package/dist/cli/signals.d.ts.map +1 -0
  65. package/dist/cli/signals.js +85 -0
  66. package/dist/cli/signals.js.map +1 -0
  67. package/dist/cli/static-commands.d.ts +11 -0
  68. package/dist/cli/static-commands.d.ts.map +1 -0
  69. package/dist/cli/static-commands.js +83 -0
  70. package/dist/cli/static-commands.js.map +1 -0
  71. package/dist/cli/worker-stream-guard.d.ts +20 -0
  72. package/dist/cli/worker-stream-guard.d.ts.map +1 -0
  73. package/dist/cli/worker-stream-guard.js +41 -0
  74. package/dist/cli/worker-stream-guard.js.map +1 -0
  75. package/dist/cli/worker.d.ts +3 -0
  76. package/dist/cli/worker.d.ts.map +1 -0
  77. package/dist/cli/worker.js +111 -0
  78. package/dist/cli/worker.js.map +1 -0
  79. package/dist/config/ingestion.d.ts +58 -0
  80. package/dist/config/ingestion.d.ts.map +1 -0
  81. package/dist/config/ingestion.js +283 -0
  82. package/dist/config/ingestion.js.map +1 -0
  83. package/dist/config/manifest.d.ts +20 -0
  84. package/dist/config/manifest.d.ts.map +1 -0
  85. package/dist/config/manifest.js +91 -0
  86. package/dist/config/manifest.js.map +1 -0
  87. package/dist/config/model-egress.d.ts +10 -0
  88. package/dist/config/model-egress.d.ts.map +1 -0
  89. package/dist/config/model-egress.js +62 -0
  90. package/dist/config/model-egress.js.map +1 -0
  91. package/dist/config/package-resolution.d.ts +4 -0
  92. package/dist/config/package-resolution.d.ts.map +1 -0
  93. package/dist/config/package-resolution.js +24 -0
  94. package/dist/config/package-resolution.js.map +1 -0
  95. package/dist/config/policy.d.ts +44 -0
  96. package/dist/config/policy.d.ts.map +1 -0
  97. package/dist/config/policy.js +141 -0
  98. package/dist/config/policy.js.map +1 -0
  99. package/dist/config/record.d.ts +4 -0
  100. package/dist/config/record.d.ts.map +1 -0
  101. package/dist/config/record.js +10 -0
  102. package/dist/config/record.js.map +1 -0
  103. package/dist/config/secrets.d.ts +11 -0
  104. package/dist/config/secrets.d.ts.map +1 -0
  105. package/dist/config/secrets.js +42 -0
  106. package/dist/config/secrets.js.map +1 -0
  107. package/dist/contracts/diagnostics.d.ts +4 -0
  108. package/dist/contracts/diagnostics.d.ts.map +1 -0
  109. package/dist/contracts/diagnostics.js +31 -0
  110. package/dist/contracts/diagnostics.js.map +1 -0
  111. package/dist/contracts/serialize.d.ts +2 -0
  112. package/dist/contracts/serialize.d.ts.map +1 -0
  113. package/dist/contracts/serialize.js +90 -0
  114. package/dist/contracts/serialize.js.map +1 -0
  115. package/dist/contracts/types.d.ts +316 -0
  116. package/dist/contracts/types.d.ts.map +1 -0
  117. package/dist/contracts/types.js +74 -0
  118. package/dist/contracts/types.js.map +1 -0
  119. package/dist/contracts/validator.d.ts +8 -0
  120. package/dist/contracts/validator.d.ts.map +1 -0
  121. package/dist/contracts/validator.js +71 -0
  122. package/dist/contracts/validator.js.map +1 -0
  123. package/dist/driver.d.ts +97 -0
  124. package/dist/driver.d.ts.map +1 -0
  125. package/dist/driver.js +24 -0
  126. package/dist/driver.js.map +1 -0
  127. package/dist/drivers/descriptor.d.ts +15 -0
  128. package/dist/drivers/descriptor.d.ts.map +1 -0
  129. package/dist/drivers/descriptor.js +122 -0
  130. package/dist/drivers/descriptor.js.map +1 -0
  131. package/dist/drivers/loader.d.ts +18 -0
  132. package/dist/drivers/loader.d.ts.map +1 -0
  133. package/dist/drivers/loader.js +97 -0
  134. package/dist/drivers/loader.js.map +1 -0
  135. package/dist/drivers/web/checkmate-driver.json +44 -0
  136. package/dist/drivers/web/index.d.ts +6 -0
  137. package/dist/drivers/web/index.d.ts.map +1 -0
  138. package/dist/drivers/web/index.js +27 -0
  139. package/dist/drivers/web/index.js.map +1 -0
  140. package/dist/drivers/web/session.d.ts +22 -0
  141. package/dist/drivers/web/session.d.ts.map +1 -0
  142. package/dist/drivers/web/session.js +130 -0
  143. package/dist/drivers/web/session.js.map +1 -0
  144. package/dist/drivers/web/tools/network-request-recorder.d.ts +46 -0
  145. package/dist/drivers/web/tools/network-request-recorder.d.ts.map +1 -0
  146. package/dist/drivers/web/tools/network-request-recorder.js +164 -0
  147. package/dist/drivers/web/tools/network-request-recorder.js.map +1 -0
  148. package/dist/{tools/browser → drivers/web/tools}/screenshot-service.d.ts +1 -1
  149. package/dist/drivers/web/tools/screenshot-service.d.ts.map +1 -0
  150. package/dist/drivers/web/tools/screenshot-service.js.map +1 -0
  151. package/dist/drivers/web/tools/snapshot-filter/index.d.ts.map +1 -0
  152. package/dist/drivers/web/tools/snapshot-filter/index.js.map +1 -0
  153. package/dist/drivers/web/tools/snapshot-filter/semantic-scorer.d.ts.map +1 -0
  154. package/dist/drivers/web/tools/snapshot-filter/semantic-scorer.js.map +1 -0
  155. package/dist/drivers/web/tools/snapshot-filter/snapshot-filter.d.ts +5 -0
  156. package/dist/drivers/web/tools/snapshot-filter/snapshot-filter.d.ts.map +1 -0
  157. package/dist/drivers/web/tools/snapshot-filter/snapshot-filter.js +56 -0
  158. package/dist/drivers/web/tools/snapshot-filter/snapshot-filter.js.map +1 -0
  159. package/dist/drivers/web/tools/snapshot-filter/tree-reconstructor.d.ts.map +1 -0
  160. package/dist/drivers/web/tools/snapshot-filter/tree-reconstructor.js.map +1 -0
  161. package/dist/drivers/web/tools/snapshot-service.d.ts +31 -0
  162. package/dist/drivers/web/tools/snapshot-service.d.ts.map +1 -0
  163. package/dist/{tools/browser → drivers/web/tools}/snapshot-service.js +36 -7
  164. package/dist/drivers/web/tools/snapshot-service.js.map +1 -0
  165. package/dist/drivers/web/tools/tool.d.ts +76 -0
  166. package/dist/drivers/web/tools/tool.d.ts.map +1 -0
  167. package/dist/drivers/web/tools/tool.js +562 -0
  168. package/dist/drivers/web/tools/tool.js.map +1 -0
  169. package/dist/drivers/web/tools/transient-state-tracker.d.ts +26 -0
  170. package/dist/drivers/web/tools/transient-state-tracker.d.ts.map +1 -0
  171. package/dist/{tools/browser → drivers/web/tools}/transient-state-tracker.js +54 -19
  172. package/dist/drivers/web/tools/transient-state-tracker.js.map +1 -0
  173. package/dist/drivers/web/tools/types.d.ts +11 -0
  174. package/dist/drivers/web/tools/types.d.ts.map +1 -0
  175. package/dist/drivers/web/tools/types.js +2 -0
  176. package/dist/drivers/web/tools/types.js.map +1 -0
  177. package/dist/evidence/atomic-file.d.ts +23 -0
  178. package/dist/evidence/atomic-file.d.ts.map +1 -0
  179. package/dist/evidence/atomic-file.js +104 -0
  180. package/dist/evidence/atomic-file.js.map +1 -0
  181. package/dist/evidence/layout.d.ts +30 -0
  182. package/dist/evidence/layout.d.ts.map +1 -0
  183. package/dist/evidence/layout.js +152 -0
  184. package/dist/evidence/layout.js.map +1 -0
  185. package/dist/evidence/retention.d.ts +5 -0
  186. package/dist/evidence/retention.d.ts.map +1 -0
  187. package/dist/evidence/retention.js +10 -0
  188. package/dist/evidence/retention.js.map +1 -0
  189. package/dist/evidence/store.d.ts +101 -0
  190. package/dist/evidence/store.d.ts.map +1 -0
  191. package/dist/evidence/store.js +375 -0
  192. package/dist/evidence/store.js.map +1 -0
  193. package/dist/evidence/terminal-finalizer.d.ts +19 -0
  194. package/dist/evidence/terminal-finalizer.d.ts.map +1 -0
  195. package/dist/evidence/terminal-finalizer.js +56 -0
  196. package/dist/evidence/terminal-finalizer.js.map +1 -0
  197. package/dist/index.d.ts +8 -1
  198. package/dist/index.d.ts.map +1 -1
  199. package/dist/index.js +11 -1
  200. package/dist/index.js.map +1 -1
  201. package/dist/logging/invocation-logger.d.ts +4 -0
  202. package/dist/logging/invocation-logger.d.ts.map +1 -0
  203. package/dist/logging/invocation-logger.js +25 -0
  204. package/dist/logging/invocation-logger.js.map +1 -0
  205. package/dist/logging/types.d.ts +8 -0
  206. package/dist/logging/types.d.ts.map +1 -0
  207. package/dist/logging/types.js +7 -0
  208. package/dist/logging/types.js.map +1 -0
  209. package/dist/redaction/diagnostic-sanitizer.d.ts +7 -0
  210. package/dist/redaction/diagnostic-sanitizer.d.ts.map +1 -0
  211. package/dist/redaction/diagnostic-sanitizer.js +42 -0
  212. package/dist/redaction/diagnostic-sanitizer.js.map +1 -0
  213. package/dist/redaction/redactor.d.ts +40 -0
  214. package/dist/redaction/redactor.d.ts.map +1 -0
  215. package/dist/redaction/redactor.js +176 -0
  216. package/dist/redaction/redactor.js.map +1 -0
  217. package/dist/redaction/scrub.d.ts +29 -0
  218. package/dist/redaction/scrub.d.ts.map +1 -0
  219. package/dist/redaction/scrub.js +54 -0
  220. package/dist/redaction/scrub.js.map +1 -0
  221. package/dist/runtime/config.d.ts +15 -0
  222. package/dist/runtime/config.d.ts.map +1 -0
  223. package/dist/runtime/config.js +2 -0
  224. package/dist/runtime/config.js.map +1 -0
  225. package/dist/runtime/driver-boundary.d.ts +16 -0
  226. package/dist/runtime/driver-boundary.d.ts.map +1 -0
  227. package/dist/runtime/driver-boundary.js +71 -0
  228. package/dist/runtime/driver-boundary.js.map +1 -0
  229. package/dist/runtime/driver-session.d.ts +9 -0
  230. package/dist/runtime/driver-session.d.ts.map +1 -0
  231. package/dist/runtime/driver-session.js +64 -0
  232. package/dist/runtime/driver-session.js.map +1 -0
  233. package/dist/runtime/internal-step-evidence.d.ts +30 -0
  234. package/dist/runtime/internal-step-evidence.d.ts.map +1 -0
  235. package/dist/runtime/internal-step-evidence.js +82 -0
  236. package/dist/runtime/internal-step-evidence.js.map +1 -0
  237. package/dist/runtime/result-adapter.d.ts +9 -0
  238. package/dist/runtime/result-adapter.d.ts.map +1 -0
  239. package/dist/runtime/result-adapter.js +77 -0
  240. package/dist/runtime/result-adapter.js.map +1 -0
  241. package/dist/runtime/runner.d.ts +35 -88
  242. package/dist/runtime/runner.d.ts.map +1 -1
  243. package/dist/runtime/runner.js +60 -74
  244. package/dist/runtime/runner.js.map +1 -1
  245. package/dist/runtime/scenario-control.d.ts +40 -0
  246. package/dist/runtime/scenario-control.d.ts.map +1 -0
  247. package/dist/runtime/scenario-control.js +94 -0
  248. package/dist/runtime/scenario-control.js.map +1 -0
  249. package/dist/runtime/scenario-runner.d.ts +39 -0
  250. package/dist/runtime/scenario-runner.d.ts.map +1 -0
  251. package/dist/runtime/scenario-runner.js +273 -0
  252. package/dist/runtime/scenario-runner.js.map +1 -0
  253. package/dist/runtime/scenario-state.d.ts +55 -0
  254. package/dist/runtime/scenario-state.d.ts.map +1 -0
  255. package/dist/runtime/scenario-state.js +128 -0
  256. package/dist/runtime/scenario-state.js.map +1 -0
  257. package/dist/runtime/step-execution.d.ts +24 -14
  258. package/dist/runtime/step-execution.d.ts.map +1 -1
  259. package/dist/runtime/step-execution.js +130 -36
  260. package/dist/runtime/step-execution.js.map +1 -1
  261. package/dist/runtime/text.d.ts +10 -0
  262. package/dist/runtime/text.d.ts.map +1 -0
  263. package/dist/runtime/text.js +25 -0
  264. package/dist/runtime/text.js.map +1 -0
  265. package/dist/runtime/types.d.ts +50 -76
  266. package/dist/runtime/types.d.ts.map +1 -1
  267. package/dist/runtime/usage-tracker.d.ts +37 -0
  268. package/dist/runtime/usage-tracker.d.ts.map +1 -0
  269. package/dist/runtime/usage-tracker.js +110 -0
  270. package/dist/runtime/usage-tracker.js.map +1 -0
  271. package/dist/tools/define-agent-tool.d.ts +3 -28
  272. package/dist/tools/define-agent-tool.d.ts.map +1 -1
  273. package/dist/tools/define-agent-tool.js +3 -28
  274. package/dist/tools/define-agent-tool.js.map +1 -1
  275. package/dist/tools/dispatcher.d.ts +11 -3
  276. package/dist/tools/dispatcher.d.ts.map +1 -1
  277. package/dist/tools/dispatcher.js +50 -8
  278. package/dist/tools/dispatcher.js.map +1 -1
  279. package/dist/tools/registry.d.ts +8 -10
  280. package/dist/tools/registry.d.ts.map +1 -1
  281. package/dist/tools/registry.js +19 -11
  282. package/dist/tools/registry.js.map +1 -1
  283. package/dist/tools/step/result-tool.d.ts.map +1 -1
  284. package/dist/tools/step/result-tool.js +8 -6
  285. package/dist/tools/step/result-tool.js.map +1 -1
  286. package/dist/tools/tool-contract.d.ts +1 -1
  287. package/dist/tools/tool-contract.d.ts.map +1 -1
  288. package/dist/tools/tool-contract.js.map +1 -1
  289. package/dist/tools/types.d.ts +77 -6
  290. package/dist/tools/types.d.ts.map +1 -1
  291. package/dist/tools/types.js.map +1 -1
  292. package/docs/CLI.md +59 -0
  293. package/docs/CONFIGURATION.md +91 -0
  294. package/docs/DRIVERS.md +75 -0
  295. package/docs/EVIDENCE.md +62 -0
  296. package/package.json +51 -59
  297. package/schemas/checkmate-config.v1.json +176 -0
  298. package/schemas/describe-result.v1.json +414 -0
  299. package/schemas/driver-descriptor.v1.json +66 -0
  300. package/schemas/run-request.v1.json +67 -0
  301. package/schemas/run-result.v1.json +333 -0
  302. package/schemas/validation-result.v1.json +86 -0
  303. package/dist/ai/response-processor.d.ts +0 -20
  304. package/dist/ai/response-processor.d.ts.map +0 -1
  305. package/dist/ai/response-processor.js +0 -62
  306. package/dist/ai/response-processor.js.map +0 -1
  307. package/dist/ai/token-pricing.d.ts +0 -13
  308. package/dist/ai/token-pricing.d.ts.map +0 -1
  309. package/dist/ai/token-pricing.js +0 -348
  310. package/dist/ai/token-pricing.js.map +0 -1
  311. package/dist/ai/token-tracker.d.ts +0 -33
  312. package/dist/ai/token-tracker.d.ts.map +0 -1
  313. package/dist/ai/token-tracker.js +0 -138
  314. package/dist/ai/token-tracker.js.map +0 -1
  315. package/dist/cli/create-examples.d.ts +0 -21
  316. package/dist/cli/create-examples.d.ts.map +0 -1
  317. package/dist/cli/create-examples.js +0 -116
  318. package/dist/cli/create-examples.js.map +0 -1
  319. package/dist/cli.d.ts +0 -15
  320. package/dist/cli.d.ts.map +0 -1
  321. package/dist/cli.js +0 -69
  322. package/dist/cli.js.map +0 -1
  323. package/dist/config/runtime-config.d.ts +0 -21
  324. package/dist/config/runtime-config.d.ts.map +0 -1
  325. package/dist/config/runtime-config.js +0 -98
  326. package/dist/config/runtime-config.js.map +0 -1
  327. package/dist/core.d.ts +0 -8
  328. package/dist/core.d.ts.map +0 -1
  329. package/dist/core.js +0 -4
  330. package/dist/core.js.map +0 -1
  331. package/dist/integrations/salesforce/authenticator.d.ts +0 -27
  332. package/dist/integrations/salesforce/authenticator.d.ts.map +0 -1
  333. package/dist/integrations/salesforce/authenticator.js +0 -27
  334. package/dist/integrations/salesforce/authenticator.js.map +0 -1
  335. package/dist/integrations/salesforce/cli-handler.d.ts +0 -14
  336. package/dist/integrations/salesforce/cli-handler.d.ts.map +0 -1
  337. package/dist/integrations/salesforce/cli-handler.js +0 -50
  338. package/dist/integrations/salesforce/cli-handler.js.map +0 -1
  339. package/dist/logging/index.d.ts +0 -2
  340. package/dist/logging/index.d.ts.map +0 -1
  341. package/dist/logging/index.js +0 -4
  342. package/dist/logging/index.js.map +0 -1
  343. package/dist/logging/logger.d.ts +0 -5
  344. package/dist/logging/logger.d.ts.map +0 -1
  345. package/dist/logging/logger.js +0 -15
  346. package/dist/logging/logger.js.map +0 -1
  347. package/dist/playwright.d.ts +0 -102
  348. package/dist/playwright.d.ts.map +0 -1
  349. package/dist/playwright.js +0 -116
  350. package/dist/playwright.js.map +0 -1
  351. package/dist/runtime/extension.d.ts +0 -274
  352. package/dist/runtime/extension.d.ts.map +0 -1
  353. package/dist/runtime/extension.js +0 -171
  354. package/dist/runtime/extension.js.map +0 -1
  355. package/dist/salesforce.d.ts +0 -71
  356. package/dist/salesforce.d.ts.map +0 -1
  357. package/dist/salesforce.js +0 -73
  358. package/dist/salesforce.js.map +0 -1
  359. package/dist/tools/browser/screenshot-service.d.ts.map +0 -1
  360. package/dist/tools/browser/screenshot-service.js.map +0 -1
  361. package/dist/tools/browser/snapshot-filter/index.d.ts.map +0 -1
  362. package/dist/tools/browser/snapshot-filter/index.js.map +0 -1
  363. package/dist/tools/browser/snapshot-filter/semantic-scorer.d.ts.map +0 -1
  364. package/dist/tools/browser/snapshot-filter/semantic-scorer.js.map +0 -1
  365. package/dist/tools/browser/snapshot-filter/snapshot-filter.d.ts +0 -4
  366. package/dist/tools/browser/snapshot-filter/snapshot-filter.d.ts.map +0 -1
  367. package/dist/tools/browser/snapshot-filter/snapshot-filter.js +0 -57
  368. package/dist/tools/browser/snapshot-filter/snapshot-filter.js.map +0 -1
  369. package/dist/tools/browser/snapshot-filter/tree-reconstructor.d.ts.map +0 -1
  370. package/dist/tools/browser/snapshot-filter/tree-reconstructor.js.map +0 -1
  371. package/dist/tools/browser/snapshot-service.d.ts +0 -19
  372. package/dist/tools/browser/snapshot-service.d.ts.map +0 -1
  373. package/dist/tools/browser/snapshot-service.js.map +0 -1
  374. package/dist/tools/browser/tool.d.ts +0 -34
  375. package/dist/tools/browser/tool.d.ts.map +0 -1
  376. package/dist/tools/browser/tool.js +0 -226
  377. package/dist/tools/browser/tool.js.map +0 -1
  378. package/dist/tools/browser/transient-state-tracker.d.ts +0 -16
  379. package/dist/tools/browser/transient-state-tracker.d.ts.map +0 -1
  380. package/dist/tools/browser/transient-state-tracker.js.map +0 -1
  381. package/dist/tools/salesforce/login-tool.d.ts +0 -7
  382. package/dist/tools/salesforce/login-tool.d.ts.map +0 -1
  383. package/dist/tools/salesforce/login-tool.js +0 -25
  384. package/dist/tools/salesforce/login-tool.js.map +0 -1
  385. package/docs/EXTENSIONS.md +0 -232
  386. package/docs/GUIDE.md +0 -465
  387. package/docs/ROADMAP.md +0 -47
  388. package/playwright.config.ts +0 -39
  389. package/test/examples/salesforce/trial-dev-org.spec.ts +0 -82
  390. package/test/examples/web/website-testing.spec.ts +0 -281
  391. /package/dist/{tools/browser → drivers/web/tools}/screenshot-service.js +0 -0
  392. /package/dist/{tools/browser → drivers/web/tools}/snapshot-filter/index.d.ts +0 -0
  393. /package/dist/{tools/browser → drivers/web/tools}/snapshot-filter/index.js +0 -0
  394. /package/dist/{tools/browser → drivers/web/tools}/snapshot-filter/semantic-scorer.d.ts +0 -0
  395. /package/dist/{tools/browser → drivers/web/tools}/snapshot-filter/semantic-scorer.js +0 -0
  396. /package/dist/{tools/browser → drivers/web/tools}/snapshot-filter/tree-reconstructor.d.ts +0 -0
  397. /package/dist/{tools/browser → drivers/web/tools}/snapshot-filter/tree-reconstructor.js +0 -0
@@ -0,0 +1,97 @@
1
+ import { z } from 'zod/v4';
2
+ import type { RuntimeLogger } from './logging/types.js';
3
+ export type DriverLogger = RuntimeLogger;
4
+ export type StepIntent = Readonly<{
5
+ id: string;
6
+ action: string;
7
+ expect: string;
8
+ }>;
9
+ export type DriverSecretReader = Readonly<{
10
+ read(slot: string): string;
11
+ }>;
12
+ export type DriverEvidenceSink = Readonly<{
13
+ capture(input: {
14
+ kind: string;
15
+ mediaType: string;
16
+ content: string | Uint8Array;
17
+ stepId?: string;
18
+ }): Promise<{
19
+ status: 'accepted' | 'discarded';
20
+ }>;
21
+ }>;
22
+ export type DriverStartInput = Readonly<{
23
+ target: unknown;
24
+ settings: unknown;
25
+ secrets: DriverSecretReader;
26
+ evidence: DriverEvidenceSink;
27
+ logger: DriverLogger;
28
+ signal: AbortSignal;
29
+ }>;
30
+ export type DriverStepContext = Readonly<{
31
+ step: StepIntent;
32
+ signal: AbortSignal;
33
+ }>;
34
+ export type DriverToolContext = Readonly<{
35
+ step: StepIntent;
36
+ turn: number;
37
+ signal: AbortSignal;
38
+ }>;
39
+ export type DriverToolResult = string | void | {
40
+ response: string;
41
+ status?: 'success' | 'error';
42
+ };
43
+ export type DriverToolDefinition = Readonly<{
44
+ name: string;
45
+ description: string;
46
+ parameters: Record<string, unknown>;
47
+ strict: boolean;
48
+ }>;
49
+ export type DriverTool = Readonly<{
50
+ definition: DriverToolDefinition;
51
+ execute(args: unknown, context: DriverToolContext): Promise<DriverToolResult> | DriverToolResult;
52
+ }>;
53
+ export type DriverToolExecution = Readonly<{
54
+ toolCallId: string;
55
+ name: string;
56
+ arguments: unknown;
57
+ response: string;
58
+ status: 'success' | 'error';
59
+ }>;
60
+ export type ToolResponseContext = DriverStepContext & Readonly<{
61
+ turn: number;
62
+ toolResponses: readonly DriverToolExecution[];
63
+ }>;
64
+ export type DriverCloseContext = Readonly<{
65
+ signal: AbortSignal;
66
+ }>;
67
+ export type DriverContextMessage = Readonly<{
68
+ content: string | ReadonlyArray<Readonly<{
69
+ type: 'text';
70
+ text: string;
71
+ }> | Readonly<{
72
+ type: 'image';
73
+ mediaType: string;
74
+ data: string;
75
+ }>>;
76
+ ephemeral: boolean;
77
+ }>;
78
+ export type DriverSession = Readonly<{
79
+ tools: readonly DriverTool[];
80
+ instructions: readonly string[];
81
+ buildInitialContext(input: DriverStepContext): Promise<DriverContextMessage[]>;
82
+ handleToolResponses(input: ToolResponseContext): Promise<DriverContextMessage[]>;
83
+ close(input: DriverCloseContext): Promise<void>;
84
+ }>;
85
+ export type CheckmateDriverV1 = Readonly<{
86
+ id: string;
87
+ driverContractVersion: 1;
88
+ start(input: DriverStartInput): Promise<DriverSession>;
89
+ }>;
90
+ export declare function defineDriverTool<TSchema extends z.ZodType>(input: {
91
+ name: string;
92
+ description: string;
93
+ schema: TSchema;
94
+ strict?: boolean;
95
+ handler: (args: z.infer<TSchema>, context: DriverToolContext) => Promise<DriverToolResult> | DriverToolResult;
96
+ }): DriverTool;
97
+ //# sourceMappingURL=driver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"driver.d.ts","sourceRoot":"","sources":["../src/driver.ts"],"names":[],"mappings":"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"}
package/dist/driver.js ADDED
@@ -0,0 +1,24 @@
1
+ import { z } from 'zod/v4';
2
+ export function defineDriverTool(input) {
3
+ const parameters = z.toJSONSchema(input.schema);
4
+ delete parameters.$schema;
5
+ return {
6
+ definition: {
7
+ name: input.name,
8
+ description: input.description,
9
+ parameters,
10
+ strict: input.strict ?? true,
11
+ },
12
+ execute: async (args, context) => {
13
+ const parsed = input.schema.safeParse(args);
14
+ if (!parsed.success) {
15
+ return {
16
+ response: JSON.stringify({ error: `Invalid args for '${input.name}': ${parsed.error.message}` }),
17
+ status: 'error',
18
+ };
19
+ }
20
+ return input.handler(parsed.data, context);
21
+ },
22
+ };
23
+ }
24
+ //# sourceMappingURL=driver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"driver.js","sourceRoot":"","sources":["../src/driver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAA;AAmG1B,MAAM,UAAU,gBAAgB,CAA4B,KAM3D;IACA,MAAM,UAAU,GAAG,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAA4B,CAAA;IAC1E,OAAO,UAAU,CAAC,OAAO,CAAA;IAEzB,OAAO;QACN,UAAU,EAAE;YACX,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,UAAU;YACV,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI;SAC5B;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;YAChC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;YAC3C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACrB,OAAO;oBACN,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,qBAAqB,KAAK,CAAC,IAAI,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;oBAChG,MAAM,EAAE,OAAO;iBACf,CAAA;YACF,CAAC;YACD,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAC3C,CAAC;KACD,CAAA;AACF,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { Diagnostic, DriverDescriptorV1, JsonObject, Validation } from '../contracts/types.js';
2
+ import { resolveDriverDescriptorPath } from '../config/package-resolution.js';
3
+ export type DescriptorResolver = typeof resolveDriverDescriptorPath;
4
+ export declare function loadDriverDescriptor(input: {
5
+ invocationRoot: string;
6
+ driverId: string;
7
+ packageName: string;
8
+ registrationPath: string;
9
+ resolveDescriptorPath?: DescriptorResolver;
10
+ }): Promise<Validation<DriverDescriptorV1> & {
11
+ status?: 'invalid' | 'error';
12
+ }>;
13
+ export declare function descriptorDiagnostics(descriptor: DriverDescriptorV1, registeredId: string, registrationPath: string): Diagnostic[];
14
+ export declare function validateDriverValue(schema: JsonObject, value: unknown, path: string): Diagnostic[];
15
+ //# sourceMappingURL=descriptor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"descriptor.d.ts","sourceRoot":"","sources":["../../src/drivers/descriptor.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAEnG,OAAO,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAA;AAO7E,MAAM,MAAM,kBAAkB,GAAG,OAAO,2BAA2B,CAAA;AAEnE,wBAAsB,oBAAoB,CAAC,KAAK,EAAE;IACjD,cAAc,EAAE,MAAM,CAAA;IACtB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,gBAAgB,EAAE,MAAM,CAAA;IACxB,qBAAqB,CAAC,EAAE,kBAAkB,CAAA;CAC1C,GAAG,OAAO,CAAC,UAAU,CAAC,kBAAkB,CAAC,GAAG;IAAE,MAAM,CAAC,EAAE,SAAS,GAAG,OAAO,CAAA;CAAE,CAAC,CAc7E;AAED,wBAAgB,qBAAqB,CACpC,UAAU,EAAE,kBAAkB,EAC9B,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,MAAM,GACtB,UAAU,EAAE,CAad;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,EAAE,CAUlG"}
@@ -0,0 +1,122 @@
1
+ import { createRequire } from 'node:module';
2
+ import { schemaDiagnostics } from '../contracts/diagnostics.js';
3
+ import { appendPointer, inspectJsonStructure, readJsonDocument } from '../config/ingestion.js';
4
+ import { resolveDriverDescriptorPath } from '../config/package-resolution.js';
5
+ import { hasOwn, ownValue } from '../config/record.js';
6
+ const require = createRequire(import.meta.url);
7
+ const Ajv2020Constructor = require('ajv/dist/2020.js');
8
+ const addFormats = require('ajv-formats');
9
+ export async function loadDriverDescriptor(input) {
10
+ const resolveDescriptor = input.resolveDescriptorPath ?? resolveDriverDescriptorPath;
11
+ const resolved = resolveDescriptor(input.invocationRoot, input.packageName, `${input.registrationPath}/package`);
12
+ if (resolved.ok === false)
13
+ return { ok: false, diagnostics: resolved.diagnostics };
14
+ const document = await readJsonDocument(resolved.value, input.registrationPath);
15
+ if (document.ok === false)
16
+ return { ok: false, status: document.status, diagnostics: document.diagnostics };
17
+ const { validateDescriptor } = await import('../contracts/validator.js');
18
+ const validation = validateDescriptor(document.value);
19
+ if (validation.ok === false)
20
+ return prefixDiagnostics(validation, input.registrationPath);
21
+ const diagnostics = descriptorDiagnostics(validation.value, input.driverId, input.registrationPath);
22
+ return diagnostics.length === 0 ? validation : { ok: false, diagnostics };
23
+ }
24
+ export function descriptorDiagnostics(descriptor, registeredId, registrationPath) {
25
+ const diagnostics = [];
26
+ if (descriptor.id !== registeredId) {
27
+ diagnostics.push({
28
+ code: 'driver.id-mismatch',
29
+ path: `${registrationPath}/package`,
30
+ message: `descriptor id '${descriptor.id}' does not match registered driver '${registeredId}'`,
31
+ });
32
+ }
33
+ diagnostics.push(...driverSchemaDiagnostics(descriptor.targetSchema, `${registrationPath}/targetSchema`));
34
+ diagnostics.push(...driverSchemaDiagnostics(descriptor.settingsSchema, `${registrationPath}/settingsSchema`));
35
+ return diagnostics;
36
+ }
37
+ export function validateDriverValue(schema, value, path) {
38
+ const schemaProblems = driverSchemaDiagnostics(schema, path);
39
+ if (schemaProblems.length > 0)
40
+ return schemaProblems;
41
+ try {
42
+ const validate = createAjv().compile(schema);
43
+ return prefixedAjvDiagnostics(validate, value, path);
44
+ }
45
+ catch {
46
+ return [{ code: 'driver.schema-invalid', path, message: 'driver schema could not be compiled' }];
47
+ }
48
+ }
49
+ function driverSchemaDiagnostics(schema, path) {
50
+ const structure = inspectJsonStructure(schema, path);
51
+ if (structure.ok === false)
52
+ return structure.diagnostics;
53
+ const diagnostics = [];
54
+ const pending = [{ value: schema, path }];
55
+ while (pending.length > 0) {
56
+ const current = pending.pop();
57
+ if (!current.value || typeof current.value !== 'object')
58
+ continue;
59
+ if (!Array.isArray(current.value)) {
60
+ const object = current.value;
61
+ if (hasOwn(object, '$id')) {
62
+ diagnostics.push({
63
+ code: 'driver.schema-unsupported',
64
+ path: appendPointer(current.path, '$id'),
65
+ message: 'driver-owned schemas must not declare $id',
66
+ });
67
+ }
68
+ const reference = ownValue(object, '$ref');
69
+ if (typeof reference === 'string' && !reference.startsWith('#')) {
70
+ diagnostics.push({
71
+ code: 'driver.schema-unsupported',
72
+ path: appendPointer(current.path, '$ref'),
73
+ message: 'driver-owned schemas may use only local # references',
74
+ });
75
+ }
76
+ }
77
+ for (const [key, value] of Object.entries(current.value)) {
78
+ pending.push({ value, path: appendPointer(current.path, key) });
79
+ }
80
+ }
81
+ if (diagnostics.length > 0)
82
+ return diagnostics;
83
+ try {
84
+ createAjv().compile(schema);
85
+ return [];
86
+ }
87
+ catch {
88
+ return [{ code: 'driver.schema-invalid', path, message: 'must be a valid strict JSON Schema' }];
89
+ }
90
+ }
91
+ function prefixedAjvDiagnostics(validate, value, path) {
92
+ if (validate(value))
93
+ return [];
94
+ return schemaDiagnostics(validate.errors).map((diagnostic) => ({
95
+ ...diagnostic,
96
+ path: `${path}${diagnostic.path}`,
97
+ }));
98
+ }
99
+ function prefixDiagnostics(validation, path) {
100
+ if (validation.ok === true)
101
+ return validation;
102
+ return {
103
+ ok: false,
104
+ diagnostics: validation.diagnostics.map((diagnostic) => ({
105
+ ...diagnostic,
106
+ path: `${path}${diagnostic.path}`,
107
+ })),
108
+ };
109
+ }
110
+ function createAjv() {
111
+ const ajv = new Ajv2020Constructor({
112
+ allErrors: true,
113
+ strict: true,
114
+ coerceTypes: false,
115
+ removeAdditional: false,
116
+ useDefaults: false,
117
+ ownProperties: true,
118
+ });
119
+ addFormats(ajv);
120
+ return ajv;
121
+ }
122
+ //# sourceMappingURL=descriptor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"descriptor.js","sourceRoot":"","sources":["../../src/drivers/descriptor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { DriverDescriptorV1 } from '../contracts/types.js';
2
+ import type { CheckmateDriverV1, DriverSession, DriverTool } from '../driver.js';
3
+ export declare const RESERVED_TOOL_NAMES: Set<string>;
4
+ export declare class DriverContractError extends Error {
5
+ constructor(message: string);
6
+ }
7
+ export declare class DriverLoadError extends Error {
8
+ constructor(message: string, options?: ErrorOptions);
9
+ }
10
+ export type DriverModuleImporter = (specifier: string) => Promise<unknown>;
11
+ export declare function loadValidatedDriver(input: {
12
+ invocationRoot: string;
13
+ packageName: string;
14
+ descriptor: DriverDescriptorV1;
15
+ importModule?: DriverModuleImporter;
16
+ }): Promise<CheckmateDriverV1>;
17
+ export declare function validateDriverSession(session: DriverSession, descriptor: DriverDescriptorV1, allowedTools: '*' | readonly string[]): readonly DriverTool[];
18
+ //# sourceMappingURL=loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/drivers/loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAC/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAGhF,eAAO,MAAM,mBAAmB,aAG9B,CAAA;AAEF,qBAAa,mBAAoB,SAAQ,KAAK;gBACjC,OAAO,EAAE,MAAM;CAI3B;AAED,qBAAa,eAAgB,SAAQ,KAAK;gBAC7B,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY;CAInD;AAED,MAAM,MAAM,oBAAoB,GAAG,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;AAE1E,wBAAsB,mBAAmB,CAAC,KAAK,EAAE;IAChD,cAAc,EAAE,MAAM,CAAA;IACtB,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,kBAAkB,CAAA;IAC9B,YAAY,CAAC,EAAE,oBAAoB,CAAA;CACnC,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA0B7B;AAED,wBAAgB,qBAAqB,CACpC,OAAO,EAAE,aAAa,EACtB,UAAU,EAAE,kBAAkB,EAC9B,YAAY,EAAE,GAAG,GAAG,SAAS,MAAM,EAAE,GACnC,SAAS,UAAU,EAAE,CAsCvB"}
@@ -0,0 +1,97 @@
1
+ import { createRequire } from 'node:module';
2
+ import { resolve } from 'node:path';
3
+ import { pathToFileURL } from 'node:url';
4
+ import { StepResultTool } from '../tools/step/result-tool.js';
5
+ export const RESERVED_TOOL_NAMES = new Set([
6
+ StepResultTool.TOOL_FAIL_TEST_STEP,
7
+ StepResultTool.TOOL_PASS_TEST_STEP,
8
+ ]);
9
+ export class DriverContractError extends Error {
10
+ constructor(message) {
11
+ super(message);
12
+ this.name = 'DriverContractError';
13
+ }
14
+ }
15
+ export class DriverLoadError extends Error {
16
+ constructor(message, options) {
17
+ super(message, options);
18
+ this.name = 'DriverLoadError';
19
+ }
20
+ }
21
+ export async function loadValidatedDriver(input) {
22
+ let module;
23
+ try {
24
+ const specifier = resolveDriverModule(input.invocationRoot, input.packageName);
25
+ module = await (input.importModule ?? importDriverModule)(specifier);
26
+ }
27
+ catch (error) {
28
+ throw new DriverLoadError(`Could not load registered driver package '${input.packageName}'`, { cause: error });
29
+ }
30
+ const driver = readDriverExport(module);
31
+ if (!driver) {
32
+ throw new DriverLoadError(`Registered driver package '${input.packageName}' must export a 'checkmateDriver' object`);
33
+ }
34
+ if (driver.id !== input.descriptor.id) {
35
+ throw new DriverLoadError(`Runtime driver id '${driver.id}' does not match descriptor id '${input.descriptor.id}'`);
36
+ }
37
+ if (driver.driverContractVersion !== input.descriptor.driverContractVersion) {
38
+ throw new DriverLoadError(`Runtime driver contract version '${driver.driverContractVersion}' does not match descriptor version '${input.descriptor.driverContractVersion}'`);
39
+ }
40
+ return driver;
41
+ }
42
+ export function validateDriverSession(session, descriptor, allowedTools) {
43
+ if (!session || !Array.isArray(session.tools))
44
+ throw new DriverContractError('Driver session must provide a tools array');
45
+ const runtimeNames = session.tools.map((tool) => tool.definition?.name);
46
+ if (runtimeNames.some((name) => typeof name !== 'string' || name.length === 0)) {
47
+ throw new DriverContractError('Every runtime driver tool must have a non-empty name');
48
+ }
49
+ const duplicate = runtimeNames.find((name, index) => runtimeNames.indexOf(name) !== index);
50
+ if (duplicate)
51
+ throw new DriverContractError(`Duplicate runtime driver tool '${duplicate}'`);
52
+ const reserved = runtimeNames.find((name) => RESERVED_TOOL_NAMES.has(name));
53
+ if (reserved)
54
+ throw new DriverContractError(`Driver tool '${reserved}' collides with a reserved harness tool`);
55
+ const descriptorNames = descriptor.tools.map((tool) => tool.name);
56
+ const declaredDuplicates = descriptorNames.find((name, index) => descriptorNames.indexOf(name) !== index);
57
+ if (declaredDuplicates) {
58
+ throw new DriverContractError(`Descriptor declares duplicate driver tool '${declaredDuplicates}'`);
59
+ }
60
+ const missing = descriptorNames.filter((name) => !runtimeNames.includes(name));
61
+ const additional = runtimeNames.filter((name) => !descriptorNames.includes(name));
62
+ if (missing.length > 0 || additional.length > 0) {
63
+ throw new DriverContractError([
64
+ missing.length > 0 ? `missing runtime tools: ${missing.join(', ')}` : '',
65
+ additional.length > 0 ? `undeclared runtime tools: ${additional.join(', ')}` : '',
66
+ ]
67
+ .filter(Boolean)
68
+ .join('\n'));
69
+ }
70
+ if (allowedTools === '*')
71
+ return [...session.tools];
72
+ const allowed = new Set(allowedTools);
73
+ const unknown = allowedTools.filter((name) => !descriptorNames.includes(name));
74
+ if (unknown.length > 0)
75
+ throw new DriverContractError(`Policy allows undeclared tools: ${unknown.join(', ')}`);
76
+ return session.tools.filter((tool) => allowed.has(tool.definition.name));
77
+ }
78
+ function resolveDriverModule(invocationRoot, packageName) {
79
+ const require = createRequire(resolve(invocationRoot, 'package.json'));
80
+ return pathToFileURL(require.resolve(packageName)).href;
81
+ }
82
+ function importDriverModule(specifier) {
83
+ return import(specifier);
84
+ }
85
+ function readDriverExport(module) {
86
+ if (!module || typeof module !== 'object' || !('checkmateDriver' in module))
87
+ return undefined;
88
+ const driver = module.checkmateDriver;
89
+ if (!driver || typeof driver !== 'object')
90
+ return undefined;
91
+ const candidate = driver;
92
+ if (typeof candidate.id !== 'string' || typeof candidate.start !== 'function') {
93
+ return undefined;
94
+ }
95
+ return candidate;
96
+ }
97
+ //# sourceMappingURL=loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/drivers/loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "id": "web",
4
+ "driverContractVersion": 1,
5
+ "targetSchema": {
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": ["baseUrl"],
9
+ "properties": {
10
+ "baseUrl": { "type": "string", "format": "uri" }
11
+ }
12
+ },
13
+ "settingsSchema": {
14
+ "type": "object",
15
+ "additionalProperties": false,
16
+ "properties": {
17
+ "headless": { "type": "boolean" },
18
+ "snapshotFilter": { "type": "boolean" },
19
+ "snapshotTopPercent": { "type": "number", "exclusiveMinimum": 0, "maximum": 100 },
20
+ "screenshotsInModelContext": { "type": "boolean" }
21
+ }
22
+ },
23
+ "requiredSecretSlots": [],
24
+ "tools": [
25
+ { "name": "browser_navigate" },
26
+ { "name": "browser_click_or_hover" },
27
+ { "name": "browser_set_dialog_response" },
28
+ { "name": "browser_drag" },
29
+ { "name": "browser_upload" },
30
+ { "name": "browser_type_or_select" },
31
+ { "name": "browser_press_key" },
32
+ { "name": "browser_snapshot" },
33
+ { "name": "browser_wait" },
34
+ { "name": "browser_list_tabs" },
35
+ { "name": "browser_select_tab" },
36
+ { "name": "browser_close_tab" },
37
+ { "name": "browser_network_requests" },
38
+ { "name": "browser_network_request" }
39
+ ],
40
+ "evidenceKinds": [
41
+ { "kind": "aria-snapshot", "mediaType": "application/yaml", "content": "text" },
42
+ { "kind": "screenshot", "mediaType": "image/png", "content": "opaque" }
43
+ ]
44
+ }
@@ -0,0 +1,6 @@
1
+ import type { CheckmateDriverV1 } from '../../driver.js';
2
+ import { createWebDriverSession, webSettings, webTarget } from './session.js';
3
+ export declare const checkmateDriver: CheckmateDriverV1;
4
+ export { createWebDriverSession, webSettings, webTarget };
5
+ export type { WebDriverSettings, WebDriverTarget } from './session.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/drivers/web/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACxD,OAAO,EAAE,sBAAsB,EAAwB,WAAW,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAEnG,eAAO,MAAM,eAAe,EAAE,iBA6B7B,CAAA;AAED,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,SAAS,EAAE,CAAA;AACzD,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA"}
@@ -0,0 +1,27 @@
1
+ import { chromium } from 'playwright';
2
+ import { createWebDriverSession, rollbackWebResources, webSettings, webTarget } from './session.js';
3
+ export const checkmateDriver = {
4
+ id: 'web',
5
+ driverContractVersion: 1,
6
+ start: async (input) => {
7
+ const target = webTarget(input.target);
8
+ const settings = webSettings(input.settings);
9
+ const resources = {};
10
+ try {
11
+ input.signal.throwIfAborted();
12
+ resources.browser = await chromium.launch({ headless: settings.headless });
13
+ input.signal.throwIfAborted();
14
+ resources.context = await resources.browser.newContext();
15
+ const page = await resources.context.newPage();
16
+ await page.goto(target.baseUrl);
17
+ input.signal.throwIfAborted();
18
+ return createWebDriverSession({ browser: resources.browser, context: resources.context, page }, settings, input.evidence, input.logger);
19
+ }
20
+ catch (error) {
21
+ await rollbackWebResources(resources);
22
+ throw new Error(`Web driver failed to start for '${target.baseUrl}'`, { cause: error });
23
+ }
24
+ },
25
+ };
26
+ export { createWebDriverSession, webSettings, webTarget };
27
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/drivers/web/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAEnG,MAAM,CAAC,MAAM,eAAe,GAAsB;IACjD,EAAE,EAAE,KAAK;IACT,qBAAqB,EAAE,CAAC;IACxB,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;QACtB,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QACtC,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QAC5C,MAAM,SAAS,GAGX,EAAE,CAAA;QACN,IAAI,CAAC;YACJ,KAAK,CAAC,MAAM,CAAC,cAAc,EAAE,CAAA;YAC7B,SAAS,CAAC,OAAO,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAA;YAC1E,KAAK,CAAC,MAAM,CAAC,cAAc,EAAE,CAAA;YAC7B,SAAS,CAAC,OAAO,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,CAAA;YACxD,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,CAAA;YAC9C,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;YAC/B,KAAK,CAAC,MAAM,CAAC,cAAc,EAAE,CAAA;YAC7B,OAAO,sBAAsB,CAC5B,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,EAChE,QAAQ,EACR,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,MAAM,CACZ,CAAA;QACF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,oBAAoB,CAAC,SAAS,CAAC,CAAA;YACrC,MAAM,IAAI,KAAK,CAAC,mCAAmC,MAAM,CAAC,OAAO,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;QACxF,CAAC;IACF,CAAC;CACD,CAAA;AAED,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,SAAS,EAAE,CAAA"}
@@ -0,0 +1,22 @@
1
+ import type { Browser, BrowserContext, Page } from 'playwright';
2
+ import type { DriverEvidenceSink, DriverLogger, DriverSession } from '../../driver.js';
3
+ export type WebDriverTarget = {
4
+ baseUrl: string;
5
+ };
6
+ export type WebDriverSettings = {
7
+ headless: boolean;
8
+ snapshotFilter: boolean;
9
+ snapshotTopPercent: number;
10
+ screenshotsInModelContext: boolean;
11
+ };
12
+ type WebResources = {
13
+ browser: Browser;
14
+ context: BrowserContext;
15
+ page: Page;
16
+ };
17
+ export declare function createWebDriverSession(resources: WebResources, settings: WebDriverSettings, evidence: DriverEvidenceSink | undefined, logger: DriverLogger): Promise<DriverSession>;
18
+ export declare function webTarget(input: unknown): WebDriverTarget;
19
+ export declare function webSettings(input: unknown): WebDriverSettings;
20
+ export declare function rollbackWebResources(resources: Partial<WebResources>): Promise<void>;
21
+ export {};
22
+ //# sourceMappingURL=session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/drivers/web/session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAC/D,OAAO,KAAK,EAEX,kBAAkB,EAClB,YAAY,EACZ,aAAa,EAIb,MAAM,iBAAiB,CAAA;AAMxB,MAAM,MAAM,eAAe,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAA;AAEjD,MAAM,MAAM,iBAAiB,GAAG;IAC/B,QAAQ,EAAE,OAAO,CAAA;IACjB,cAAc,EAAE,OAAO,CAAA;IACvB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,yBAAyB,EAAE,OAAO,CAAA;CAClC,CAAA;AAED,KAAK,YAAY,GAAG;IACnB,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,cAAc,CAAA;IACvB,IAAI,EAAE,IAAI,CAAA;CACV,CAAA;AAUD,wBAAsB,sBAAsB,CAC3C,SAAS,EAAE,YAAY,EACvB,QAAQ,EAAE,iBAAiB,EAC3B,QAAQ,EAAE,kBAAkB,GAAG,SAAS,EACxC,MAAM,EAAE,YAAY,GAClB,OAAO,CAAC,aAAa,CAAC,CAsFxB;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,CAKzD;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,iBAAiB,CAQ7D;AAED,wBAAsB,oBAAoB,CAAC,SAAS,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAE1F"}