@wenathlan/devthink 2.0.13 → 2.0.15

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 (444) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/accounts.ts +2087 -0
  3. package/agent.ts +2331 -0
  4. package/antigravity.ts +2139 -0
  5. package/apifreeze.ts +4146 -0
  6. package/auth.ts +642 -0
  7. package/background.ts +16837 -0
  8. package/bridge.ts +2080 -0
  9. package/build.ts +54 -0
  10. package/bun.ts +26 -0
  11. package/capture.ts +1614 -0
  12. package/checksecrets.ts +72 -0
  13. package/cjs.ts +9 -0
  14. package/cli.ts +3500 -0
  15. package/commands.ts +1101 -0
  16. package/companion.ts +450 -0
  17. package/compatibility.ts +37 -0
  18. package/config.ts +3137 -0
  19. package/constants.ts +943 -0
  20. package/core.ts +1473 -0
  21. package/crossbrowser.ts +1359 -0
  22. package/dashdone.ts +605 -0
  23. package/data.ts +943 -0
  24. package/database.ts +133 -0
  25. package/debug.ts +850 -0
  26. package/deno.ts +27 -0
  27. package/devthink.ts +707 -0
  28. package/dist/accounts.d.ts +409 -0
  29. package/dist/agent.d.ts +837 -0
  30. package/dist/antigravity.d.ts +380 -0
  31. package/dist/apifreeze.d.ts +113 -0
  32. package/dist/auth.d.ts +224 -0
  33. package/{bridge.d.ts → dist/bridge.d.ts} +1 -1
  34. package/dist/capture.d.ts +595 -0
  35. package/dist/cjs.d.ts +6 -0
  36. package/{cli.js → dist/cli.js} +2 -2
  37. package/dist/commands.d.ts +310 -0
  38. package/dist/compatibility.d.ts +17 -0
  39. package/dist/config.d.ts +1853 -0
  40. package/dist/constants.d.ts +637 -0
  41. package/dist/core.d.ts +361 -0
  42. package/dist/data.d.ts +330 -0
  43. package/dist/database.d.ts +24 -0
  44. package/dist/debug.d.ts +270 -0
  45. package/dist/engine.d.ts +74 -0
  46. package/dist/environments.d.ts +244 -0
  47. package/dist/evidence.d.ts +277 -0
  48. package/dist/export.d.ts +311 -0
  49. package/dist/fingerprint.d.ts +594 -0
  50. package/dist/flow.d.ts +300 -0
  51. package/dist/gates.d.ts +103 -0
  52. package/dist/identity.d.ts +51 -0
  53. package/dist/ids.d.ts +7 -0
  54. package/dist/llm.d.ts +652 -0
  55. package/dist/models.d.ts +1807 -0
  56. package/dist/net.d.ts +325 -0
  57. package/dist/neutral.d.ts +41 -0
  58. package/dist/oauth.d.ts +703 -0
  59. package/dist/page.d.ts +1166 -0
  60. package/dist/perf.d.ts +481 -0
  61. package/dist/plan.d.ts +134 -0
  62. package/dist/project.d.ts +395 -0
  63. package/dist/providers.d.ts +37 -0
  64. package/dist/quota.d.ts +453 -0
  65. package/dist/recovery.d.ts +621 -0
  66. package/dist/request.d.ts +1492 -0
  67. package/dist/run.d.ts +779 -0
  68. package/dist/runtime.d.ts +212 -0
  69. package/dist/search.d.ts +375 -0
  70. package/dist/security.d.ts +534 -0
  71. package/dist/serve.d.ts +136 -0
  72. package/dist/session.d.ts +296 -0
  73. package/dist/storage.d.ts +53 -0
  74. package/dist/streaming.d.ts +1119 -0
  75. package/dist/swarm.d.ts +328 -0
  76. package/dist/tools.d.ts +170 -0
  77. package/dist/types.d.ts +8357 -0
  78. package/dist/utils.d.ts +82 -0
  79. package/dist/version.d.ts +7 -0
  80. package/dist/versionregistry.d.ts +406 -0
  81. package/dist/views.d.ts +579 -0
  82. package/dist/workbenchsession.d.ts +69 -0
  83. package/dist/workflow.d.ts +649 -0
  84. package/docs/readme.md +92 -0
  85. package/docs/schemas/antigravity.json +192 -0
  86. package/engine.ts +1524 -0
  87. package/environments.ts +1005 -0
  88. package/evidence.ts +643 -0
  89. package/export.ts +889 -0
  90. package/fingerprint.ts +1458 -0
  91. package/flow.ts +1190 -0
  92. package/gates.ts +307 -0
  93. package/gateway.ts +34 -0
  94. package/hardening.ts +191 -0
  95. package/headless.ts +369 -0
  96. package/http.ts +2110 -0
  97. package/identity.ts +246 -0
  98. package/ids.ts +26 -0
  99. package/index.ts +369 -0
  100. package/llm.ts +2682 -0
  101. package/mcp.ts +1835 -0
  102. package/{memory.js → memory.ts} +3834 -2310
  103. package/models.ts +3805 -0
  104. package/modes.ts +43 -0
  105. package/net.ts +1214 -0
  106. package/neutral.ts +362 -0
  107. package/node.ts +26 -0
  108. package/oauth.ts +2216 -0
  109. package/offscreen.ts +170 -0
  110. package/pack.ts +956 -0
  111. package/package.json +175 -82
  112. package/page.ts +7824 -0
  113. package/pagebridge.ts +1116 -0
  114. package/perf.ts +957 -0
  115. package/plan.ts +672 -0
  116. package/plugin.ts +76 -0
  117. package/{policy.js → policy.ts} +5073 -4679
  118. package/prisma.config.ts +27 -0
  119. package/progress.ts +1308 -0
  120. package/project.ts +1291 -0
  121. package/protocol.ts +4187 -0
  122. package/providers.ts +246 -0
  123. package/quota.ts +1887 -0
  124. package/recovery.ts +2433 -0
  125. package/request.ts +4482 -0
  126. package/run.ts +2135 -0
  127. package/runtime.ts +526 -0
  128. package/search.ts +1760 -0
  129. package/security.ts +1673 -0
  130. package/serve.ts +419 -0
  131. package/server.ts +5538 -0
  132. package/session.ts +1162 -0
  133. package/storage.ts +182 -0
  134. package/streaming.ts +4101 -0
  135. package/swarm.ts +884 -0
  136. package/sync.ts +56 -0
  137. package/tests/agentcert.test.ts +128 -0
  138. package/tests/agentfleet.test.ts +214 -0
  139. package/tests/agentreview.test.ts +241 -0
  140. package/tests/agentstream.test.ts +335 -0
  141. package/tests/agentwork.test.ts +356 -0
  142. package/tests/apifreeze.test.ts +290 -0
  143. package/tests/apimap.test.ts +112 -0
  144. package/tests/approvalgate.test.ts +175 -0
  145. package/tests/artifactmanifest.test.ts +204 -0
  146. package/tests/attentionfeed.test.ts +163 -0
  147. package/tests/backgroundruns.test.ts +100 -0
  148. package/tests/batchscheduling.test.ts +131 -0
  149. package/tests/blackboard.test.ts +238 -0
  150. package/tests/bridge.test.ts +1088 -0
  151. package/tests/browsercoverage.test.ts +134 -0
  152. package/tests/browserpolyfills.test.ts +124 -0
  153. package/tests/build.mjs +1260 -0
  154. package/tests/clientauth.test.ts +223 -0
  155. package/tests/clitools.test.ts +578 -0
  156. package/tests/confirmgates.test.ts +190 -0
  157. package/tests/containerpack.test.ts +143 -0
  158. package/tests/controlflow.test.ts +2120 -0
  159. package/tests/coordination.test.ts +345 -0
  160. package/tests/copyscreen.test.ts +139 -0
  161. package/tests/core.test.ts +417 -0
  162. package/tests/costcert.test.ts +95 -0
  163. package/tests/crossbrowser.test.ts +115 -0
  164. package/tests/cspaudit.test.ts +79 -0
  165. package/tests/dashdone.test.ts +615 -0
  166. package/tests/datagrid.test.ts +137 -0
  167. package/tests/doccheck.test.ts +107 -0
  168. package/tests/dombatch.test.ts +109 -0
  169. package/tests/emulation.test.ts +282 -0
  170. package/tests/environments.test.ts +259 -0
  171. package/tests/evidenceviews.test.ts +88 -0
  172. package/tests/exporttools.test.ts +185 -0
  173. package/tests/firefoxprep.test.ts +134 -0
  174. package/tests/flowlibrary.test.ts +242 -0
  175. package/tests/flowrun.test.ts +303 -0
  176. package/tests/forensics.test.ts +439 -0
  177. package/tests/gateway.test.ts +939 -0
  178. package/tests/headlesslib.test.ts +171 -0
  179. package/tests/httpstream.test.ts +277 -0
  180. package/tests/immutablelog.test.ts +157 -0
  181. package/tests/inboundguard.test.ts +177 -0
  182. package/tests/lazyload.test.ts +72 -0
  183. package/tests/librarymodes.test.ts +623 -0
  184. package/tests/llm.test.ts +696 -0
  185. package/tests/manifest.test.ts +226 -0
  186. package/tests/maskinputs.test.ts +150 -0
  187. package/tests/matrixverify.test.ts +111 -0
  188. package/tests/mavenpack.test.ts +75 -0
  189. package/tests/mcpserver.test.ts +704 -0
  190. package/tests/memory.test.ts +4155 -0
  191. package/tests/memorycare.test.ts +230 -0
  192. package/tests/migrateplan.test.ts +349 -0
  193. package/tests/minimization.test.ts +414 -0
  194. package/tests/modelroute.test.ts +112 -0
  195. package/tests/multiagent.test.ts +440 -0
  196. package/tests/nativebridge.test.ts +807 -0
  197. package/tests/navigation.test.ts +284 -0
  198. package/tests/nugetpack.test.ts +83 -0
  199. package/tests/orchestration.test.ts +449 -0
  200. package/tests/originpolicy.test.ts +405 -0
  201. package/tests/outputcompare.test.ts +97 -0
  202. package/tests/package.test.ts +91 -0
  203. package/tests/pagebridge.test.ts +5909 -0
  204. package/tests/pentest.test.ts +75 -0
  205. package/tests/perfrecords.test.ts +257 -0
  206. package/tests/permdiff.test.ts +85 -0
  207. package/tests/phishguard.test.ts +128 -0
  208. package/tests/pickerviews.test.ts +155 -0
  209. package/tests/pipelines.test.ts +381 -0
  210. package/tests/planlint.test.ts +240 -0
  211. package/tests/planreview.test.ts +383 -0
  212. package/tests/platformtargets.test.ts +56 -0
  213. package/tests/policy.test.ts +8284 -0
  214. package/tests/portability.test.ts +96 -0
  215. package/tests/progress.test.ts +1036 -0
  216. package/tests/promptlibrary.test.ts +116 -0
  217. package/tests/protocol.test.ts +4793 -0
  218. package/tests/publishingpipeline.test.ts +314 -0
  219. package/tests/quickactions.test.ts +164 -0
  220. package/tests/readiness.test.ts +78 -0
  221. package/tests/recipes.test.ts +163 -0
  222. package/tests/redactshots.test.ts +216 -0
  223. package/tests/registernvidiakeys.ts +51 -0
  224. package/tests/relayserve.test.ts +304 -0
  225. package/tests/releasenotes.test.ts +276 -0
  226. package/tests/resilience.test.ts +467 -0
  227. package/tests/resourceaware.test.ts +187 -0
  228. package/tests/runbudget.test.ts +125 -0
  229. package/tests/runhistory.test.ts +299 -0
  230. package/tests/runreplay.test.ts +113 -0
  231. package/tests/runresume.test.ts +184 -0
  232. package/tests/runstate.test.ts +288 -0
  233. package/tests/runtimeadapters.test.ts +251 -0
  234. package/tests/safariskeleton.test.ts +115 -0
  235. package/tests/sandboxframe.test.ts +196 -0
  236. package/tests/sbom.test.ts +105 -0
  237. package/tests/secretvault.test.ts +188 -0
  238. package/tests/selcache.test.ts +111 -0
  239. package/tests/sessioninterface.test.ts +791 -0
  240. package/tests/sessions.test.ts +591 -0
  241. package/tests/siteprefs.test.ts +228 -0
  242. package/tests/snapshotdelta.test.ts +165 -0
  243. package/tests/statusviews.test.ts +237 -0
  244. package/tests/stepmeter.test.ts +200 -0
  245. package/tests/streamparse.test.ts +163 -0
  246. package/tests/stylepruning.test.ts +90 -0
  247. package/tests/surfaces.test.ts +282 -0
  248. package/tests/sweep.test.ts +78 -0
  249. package/tests/syncbridge.test.ts +164 -0
  250. package/tests/taskqueue.test.ts +206 -0
  251. package/tests/toolcalls.test.ts +336 -0
  252. package/tests/toolcatalog.test.ts +201 -0
  253. package/tests/torture-agent.test.ts +706 -0
  254. package/tests/torture-auth.test.ts +461 -0
  255. package/tests/torture-commands.test.ts +895 -0
  256. package/tests/torture-data.test.ts +923 -0
  257. package/tests/torture-environments.test.ts +285 -0
  258. package/tests/torture-export.test.ts +263 -0
  259. package/tests/torture-http.test.ts +1379 -0
  260. package/tests/torture-llm.test.ts +808 -0
  261. package/tests/torture-memory.test.ts +1084 -0
  262. package/tests/torture-plan.test.ts +829 -0
  263. package/tests/torture-run.test.ts +626 -0
  264. package/tests/torture-session.test.ts +928 -0
  265. package/tests/torture-swarm.test.ts +1245 -0
  266. package/tests/torture-tools.test.ts +964 -0
  267. package/tests/torture-workflow.test.ts +2354 -0
  268. package/tests/tourviews.test.ts +52 -0
  269. package/tests/transparency.test.ts +147 -0
  270. package/tests/trigger.test.ts +941 -0
  271. package/tests/v1sunset.test.ts +428 -0
  272. package/tests/virtlist.test.ts +94 -0
  273. package/tests/vision.test.ts +540 -0
  274. package/tests/vsixpack.test.ts +145 -0
  275. package/tests/webapi.test.ts +523 -0
  276. package/tests/workflow.test.ts +1785 -0
  277. package/tests/workfloweditor.test.ts +759 -0
  278. package/tests/xpipack.test.ts +128 -0
  279. package/tools.ts +734 -0
  280. package/types.ts +9908 -0
  281. package/umd.ts +9 -0
  282. package/utils.ts +249 -0
  283. package/version.ts +8 -0
  284. package/versionregistry.ts +1310 -0
  285. package/views.ts +2153 -0
  286. package/vitest.config.ts +12 -0
  287. package/web/App.tsx +78 -0
  288. package/web/README.md +47 -0
  289. package/web/capacitor.config.ts +46 -0
  290. package/web/const.ts +19 -0
  291. package/web/control.shell.tsx +66 -0
  292. package/web/dashboardpage.ts +554 -0
  293. package/web/db.ts +493 -0
  294. package/web/design.html +541 -0
  295. package/web/gatewayview/Gateway.tsx +345 -0
  296. package/web/gatewayview/config.ts +1042 -0
  297. package/web/gatewayview/definition.ts +174 -0
  298. package/web/icons.ts +15 -0
  299. package/{manifest.json → web/manifest.json} +1 -1
  300. package/web/optionspage.ts +691 -0
  301. package/web/popup.ts +1651 -0
  302. package/web/schema.prisma +176 -0
  303. package/web/sidepanel.ts +7941 -0
  304. package/web/sitemanifest.json +13 -0
  305. package/web/terminal-ui.tsx +622 -0
  306. package/web/transparencypage.ts +541 -0
  307. package/web/vite.config.ts +39 -0
  308. package/web/workspace.ts +23 -0
  309. package/workbenchmemory.ts +104 -0
  310. package/workbenchsession.ts +304 -0
  311. package/workflow.ts +4495 -0
  312. package/bridge.d.ts.map +0 -1
  313. package/bridge.js +0 -1877
  314. package/bun.d.ts.map +0 -1
  315. package/bun.js +0 -52329
  316. package/caps/background.json +0 -712
  317. package/caps/cli.json +0 -360
  318. package/caps/library.json +0 -3611
  319. package/caps/mcp.json +0 -126
  320. package/caps/pagebridge.json +0 -377
  321. package/caps/popup.json +0 -51
  322. package/caps/sidepanel.json +0 -522
  323. package/checksums.txt +0 -142
  324. package/cli.d.ts.map +0 -1
  325. package/companion.d.ts.map +0 -1
  326. package/companion.js +0 -389
  327. package/crossbrowser.d.ts.map +0 -1
  328. package/crossbrowser.js +0 -1191
  329. package/dashdone.d.ts.map +0 -1
  330. package/dashdone.js +0 -368
  331. package/deno.d.ts.map +0 -1
  332. package/deno.js +0 -52325
  333. package/devthink.umd.js +0 -52346
  334. package/fixtures/bun.ts +0 -7
  335. package/fixtures/cjs.js +0 -6
  336. package/fixtures/deno.ts +0 -6
  337. package/fixtures/example-org-pagestate.json +0 -22
  338. package/fixtures/importers/automa-workflow.json +0 -18
  339. package/fixtures/importers/selenium-side.json +0 -20
  340. package/fixtures/importers/tabular-plan.csv +0 -7
  341. package/fixtures/importers/uivision-macro.json +0 -10
  342. package/fixtures/importers/v1-plan.json +0 -13
  343. package/fixtures/mcp-client.mjs +0 -14
  344. package/fixtures/pages/checkout.html +0 -192
  345. package/fixtures/pages/dashboard.html +0 -110
  346. package/fixtures/pages/feed.html +0 -113
  347. package/fixtures/pages/product-grid.html +0 -150
  348. package/fixtures/plans/form-inventory-plan.json +0 -11
  349. package/fixtures/plans/release-notes-plan.json +0 -11
  350. package/fixtures/recipes/agentscompete.json +0 -11
  351. package/fixtures/recipes/agentsforms.json +0 -11
  352. package/fixtures/recipes/agentsmonitor.json +0 -11
  353. package/fixtures/recipes/agentsreview.json +0 -29
  354. package/fixtures/recipes/agentswarm.json +0 -11
  355. package/fixtures/recipes/fillcalendar.json +0 -12
  356. package/fixtures/recipes/fillcheckout.json +0 -13
  357. package/fixtures/recipes/filldependentdropdowns.json +0 -12
  358. package/fixtures/recipes/fillfromcsv.json +0 -13
  359. package/fixtures/recipes/fillloginform.json +0 -12
  360. package/fixtures/recipes/fillmultistepwizard.json +0 -13
  361. package/fixtures/recipes/fillregistration.json +0 -12
  362. package/fixtures/recipes/fillsearchfilters.json +0 -12
  363. package/fixtures/recipes/filltypeahead.json +0 -11
  364. package/fixtures/recipes/monitoralerts.json +0 -12
  365. package/fixtures/recipes/monitoravailability.json +0 -11
  366. package/fixtures/recipes/monitornetworkquiet.json +0 -12
  367. package/fixtures/recipes/monitorpagechanges.json +0 -11
  368. package/fixtures/recipes/monitorpricechange.json +0 -11
  369. package/fixtures/recipes/monitorschedule.json +0 -12
  370. package/fixtures/recipes/scrapedynamicprices.json +0 -13
  371. package/fixtures/recipes/scrapeimagegallery.json +0 -12
  372. package/fixtures/recipes/scrapeinfinitefeed.json +0 -13
  373. package/fixtures/recipes/scrapenestedlists.json +0 -12
  374. package/fixtures/recipes/scrapeproductgrid.json +0 -12
  375. package/fixtures/recipes/scrapereviews.json +0 -12
  376. package/fixtures/recipes/scrapesearchresults.json +0 -12
  377. package/fixtures/recipes/scrapetablepagination.json +0 -12
  378. package/fixtures/recipes/testaccessibility.json +0 -34
  379. package/fixtures/recipes/testconsoleerrors.json +0 -12
  380. package/fixtures/recipes/testdeeplinks.json +0 -12
  381. package/fixtures/recipes/testformvalidation.json +0 -13
  382. package/fixtures/recipes/testlayoutshift.json +0 -12
  383. package/fixtures/recipes/testlinkcheck.json +0 -12
  384. package/fixtures/recipes/testloadtiming.json +0 -12
  385. package/fixtures/recipes/testvisualdiff.json +0 -12
  386. package/fixtures/workflows/changelog-digest-workflow.json +0 -13
  387. package/fixtures/workflows/form-survey-workflow.json +0 -13
  388. package/gallery.json +0 -706
  389. package/hardening.d.ts.map +0 -1
  390. package/hardening.js +0 -188
  391. package/headless.d.ts.map +0 -1
  392. package/headless.js +0 -11522
  393. package/http.d.ts.map +0 -1
  394. package/http.js +0 -2165
  395. package/index.cjs +0 -54682
  396. package/index.d.ts.map +0 -1
  397. package/index.js +0 -52310
  398. package/index.neutral.js +0 -46343
  399. package/mcp.d.ts.map +0 -1
  400. package/mcp.js +0 -20515
  401. package/memory.d.ts.map +0 -1
  402. package/nativehost.template.json +0 -10
  403. package/node.cjs +0 -54686
  404. package/node.d.ts.map +0 -1
  405. package/pack.d.ts.map +0 -1
  406. package/pack.js +0 -805
  407. package/policy.d.ts.map +0 -1
  408. package/progress.d.ts.map +0 -1
  409. package/progress.js +0 -645
  410. package/protocol.d.ts.map +0 -1
  411. package/protocol.js +0 -8334
  412. package/schemas/audit.schema.json +0 -226
  413. package/schemas/capability.schema.json +0 -113
  414. package/schemas/envelope.schema.json +0 -162
  415. package/schemas/memory.schema.json +0 -51
  416. package/schemas/observation.schema.json +0 -113
  417. package/schemas/plan.schema.json +0 -208
  418. package/schemas/progress.schema.json +0 -126
  419. package/schemas/proposal.schema.json +0 -68
  420. package/schemas/session.schema.json +0 -82
  421. package/schemas/tool.schema.json +0 -94
  422. package/server.d.ts.map +0 -1
  423. package/server.js +0 -28877
  424. package/umd-example.html +0 -18
  425. package/umd.d.ts.map +0 -1
  426. /package/{bun.d.ts → dist/bun.d.ts} +0 -0
  427. /package/{cli.d.ts → dist/cli.d.ts} +0 -0
  428. /package/{companion.d.ts → dist/companion.d.ts} +0 -0
  429. /package/{crossbrowser.d.ts → dist/crossbrowser.d.ts} +0 -0
  430. /package/{dashdone.d.ts → dist/dashdone.d.ts} +0 -0
  431. /package/{deno.d.ts → dist/deno.d.ts} +0 -0
  432. /package/{hardening.d.ts → dist/hardening.d.ts} +0 -0
  433. /package/{headless.d.ts → dist/headless.d.ts} +0 -0
  434. /package/{http.d.ts → dist/http.d.ts} +0 -0
  435. /package/{index.d.ts → dist/index.d.ts} +0 -0
  436. /package/{mcp.d.ts → dist/mcp.d.ts} +0 -0
  437. /package/{memory.d.ts → dist/memory.d.ts} +0 -0
  438. /package/{node.d.ts → dist/node.d.ts} +0 -0
  439. /package/{pack.d.ts → dist/pack.d.ts} +0 -0
  440. /package/{policy.d.ts → dist/policy.d.ts} +0 -0
  441. /package/{progress.d.ts → dist/progress.d.ts} +0 -0
  442. /package/{protocol.d.ts → dist/protocol.d.ts} +0 -0
  443. /package/{server.d.ts → dist/server.d.ts} +0 -0
  444. /package/{umd.d.ts → dist/umd.d.ts} +0 -0
package/progress.js DELETED
@@ -1,645 +0,0 @@
1
- /*! devthink 2.0.13 — consent-first browser agent library — GPL-3.0-only — https://github.com/wenathlan/devthink */
2
-
3
- // version.ts
4
- var packageversion = "2.0.13";
5
- var protocolmajor = 2;
6
-
7
- // progress.ts
8
- function provenancestampof() {
9
- return { release: packageversion, protocolmajor };
10
- }
11
- function progressnow(clock) {
12
- return clock.now();
13
- }
14
- function recordoutcomewithclock(progress, planid, outcome, clock) {
15
- return recordoutcome(progress, planid, outcome, clock.now());
16
- }
17
- function emptyprogress(planid, now) {
18
- return { planid, completedsteps: [], provenance: provenancestampof(), updatedat: now };
19
- }
20
- function recordstep(progress, planid, stepid, now) {
21
- const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
22
- if (base.completedsteps.includes(stepid)) return { ...base, updatedat: now };
23
- return { planid, completedsteps: [...base.completedsteps, stepid], provenance: provenancestampof(), updatedat: now };
24
- }
25
- function recordoutcome(progress, planid, outcome, now) {
26
- const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
27
- return {
28
- ...base,
29
- outcomes: [...base.outcomes ?? [], { ...outcome, provenance: provenancestampof() }],
30
- updatedat: now
31
- };
32
- }
33
- function recordenvironment(progress, planid, stepid, environment, now) {
34
- const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
35
- return { ...base, environments: { ...base.environments ?? {}, [stepid]: environment }, updatedat: now };
36
- }
37
- function environmentof(progress, planid, stepid) {
38
- if (!progress || progress.planid !== planid) return void 0;
39
- return (progress.environments ?? {})[stepid];
40
- }
41
- function recordturnaround(progress, planid, stepid, milliseconds, now) {
42
- const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
43
- return { ...base, turnarounds: { ...base.turnarounds ?? {}, [stepid]: milliseconds }, updatedat: now };
44
- }
45
- function turnaroundof(progress, planid, stepid) {
46
- if (!progress || progress.planid !== planid) return void 0;
47
- return (progress.turnarounds ?? {})[stepid];
48
- }
49
- function recordgatewait(progress, planid, stepid, entry, now) {
50
- const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
51
- return { ...base, gatewaits: { ...base.gatewaits ?? {}, [stepid]: entry }, updatedat: now };
52
- }
53
- function gatewaitof(progress, planid, stepid) {
54
- if (!progress || progress.planid !== planid) return void 0;
55
- return (progress.gatewaits ?? {})[stepid];
56
- }
57
- function recordperf(progress, planid, stepid, record, now) {
58
- const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
59
- return { ...base, perf: { ...base.perf ?? {}, [stepid]: record }, updatedat: now };
60
- }
61
- function perfof(progress, planid, stepid) {
62
- if (!progress || progress.planid !== planid) return void 0;
63
- return (progress.perf ?? {})[stepid];
64
- }
65
- function recorddeltas(progress, planid, stepid, changes, now) {
66
- const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
67
- return { ...base, deltas: { ...base.deltas ?? {}, [stepid]: changes }, updatedat: now };
68
- }
69
- function deltasof(progress, planid, stepid) {
70
- if (!progress || progress.planid !== planid) return [];
71
- return (progress.deltas ?? {})[stepid] ?? [];
72
- }
73
- function iscomplete(progress, plan) {
74
- if (!progress || progress.planid !== plan.id) return false;
75
- const required = plan.steps.map((step) => step.id);
76
- return required.length > 0 && required.every((id) => progress.completedsteps.includes(id));
77
- }
78
- function resetforplan(progress, plan, now) {
79
- if (progress && progress.planid === plan.id) return progress;
80
- if (!progress) return emptyprogress(plan.id, now);
81
- const snapshot = {
82
- planid: progress.planid,
83
- completedsteps: progress.completedsteps,
84
- ...progress.outcomes ? { outcomes: progress.outcomes } : {},
85
- updatedat: progress.updatedat
86
- };
87
- return {
88
- planid: plan.id,
89
- completedsteps: [],
90
- outcomes: [],
91
- prior: [...progress.prior ?? [], snapshot],
92
- provenance: provenancestampof(),
93
- updatedat: now
94
- };
95
- }
96
- function watchclosed(startedat, lifetime, now) {
97
- return now >= startedat + lifetime;
98
- }
99
- function recordwatchcompletion(progress, planid, stepid, startedat, lifetime, now) {
100
- const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
101
- if (!watchclosed(startedat, lifetime, now)) return base;
102
- return recordstep(base, planid, stepid, now);
103
- }
104
- function recordnaventry(progress, planid, stepid, entry, now) {
105
- const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
106
- const outcome = {
107
- stepid,
108
- ok: entry.ok,
109
- summary: `Navigation list entry ${entry.index + 1} of ${entry.url} ${entry.ok ? "completed" : "failed"}.`,
110
- details: { naventry: entry },
111
- at: now
112
- };
113
- return recordoutcome(base, planid, outcome, now);
114
- }
115
- function naventries(progress, planid, stepid) {
116
- if (!progress || progress.planid !== planid) return [];
117
- return (progress.outcomes ?? []).filter((outcome) => outcome.stepid === stepid && outcome.details?.naventry !== void 0).map((outcome) => outcome.details?.naventry);
118
- }
119
- function assigntasktab(progress, planid, tabid, now) {
120
- const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
121
- if ((base.tasktabs ?? []).includes(tabid)) return { ...base, updatedat: now };
122
- return { ...base, tasktabs: [...base.tasktabs ?? [], tabid], updatedat: now };
123
- }
124
- function releasetasktab(progress, planid, tabid, now) {
125
- const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
126
- const remaining = (base.tasktabs ?? []).filter((id) => id !== tabid);
127
- const { tasktabs: released, ...rest } = base;
128
- void released;
129
- return { ...rest, ...remaining.length > 0 ? { tasktabs: remaining } : {}, updatedat: now };
130
- }
131
- function tasktabs(progress, planid) {
132
- if (!progress || progress.planid !== planid) return [];
133
- return progress.tasktabs ?? [];
134
- }
135
- function wizardcompletion(state) {
136
- if (state.steps <= 0) return 0;
137
- return Math.min(1, state.completed.filter(Boolean).length / state.steps);
138
- }
139
- function extractionshare(rowscollected, estimatedtotal) {
140
- if (!Number.isFinite(estimatedtotal) || estimatedtotal <= 0) return 0;
141
- return Math.min(1, Math.max(0, rowscollected) / estimatedtotal);
142
- }
143
- function recordextraction(progress, planid, stepid, entry, now) {
144
- const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
145
- const outcome = {
146
- stepid,
147
- ok: true,
148
- summary: `Extraction page ${entry.page} collected ${entry.rows} row${entry.rows === 1 ? "" : "s"} at cursor ${entry.cursor}.`,
149
- details: { extraction: entry },
150
- at: now
151
- };
152
- return recordoutcome(base, planid, outcome, now);
153
- }
154
- function extractionentries(progress, planid, stepid) {
155
- if (!progress || progress.planid !== planid) return [];
156
- return (progress.outcomes ?? []).filter((outcome) => outcome.stepid === stepid && outcome.details?.extraction !== void 0).map((outcome) => outcome.details?.extraction);
157
- }
158
- function recordwizardstep(progress, planid, stepid, state, now) {
159
- const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
160
- const executed = Math.min(state.index, state.steps);
161
- const done = executed >= state.steps;
162
- const outcome = {
163
- stepid,
164
- ok: done,
165
- summary: `Wizard step ${executed} of ${state.steps} ${done ? "completed the wizard" : "executed"}.`,
166
- details: { wizard: { index: state.index, steps: state.steps, completed: [...state.completed] } },
167
- at: now
168
- };
169
- return recordoutcome(base, planid, outcome, now);
170
- }
171
- function downloadshare(completed, total) {
172
- if (!Number.isFinite(total) || total <= 0) return 0;
173
- return Math.min(1, Math.max(0, completed) / total);
174
- }
175
- function recorddownload(progress, planid, stepid, entry, now) {
176
- const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
177
- const outcome = {
178
- stepid,
179
- ok: entry.state === "complete",
180
- summary: `Download ${entry.index + 1} of ${entry.url} ended in the ${entry.state} state.`,
181
- details: { download: entry },
182
- at: now
183
- };
184
- return recordoutcome(base, planid, outcome, now);
185
- }
186
- function downloadentries(progress, planid, stepid) {
187
- if (!progress || progress.planid !== planid) return [];
188
- return (progress.outcomes ?? []).filter((outcome) => outcome.stepid === stepid && outcome.details?.download !== void 0).map((outcome) => outcome.details?.download);
189
- }
190
- function recordcapture(progress, planid, stepid, capture, now) {
191
- const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
192
- const bytes = capture.bytes?.length ?? 0;
193
- const outcome = {
194
- stepid,
195
- ok: true,
196
- summary: `Captured a ${capture.format} ${capture.kind} shot of ${capture.width} by ${capture.height} pixels with ${bytes} character${bytes === 1 ? "" : "s"} of image data.`,
197
- details: {
198
- capture: {
199
- id: capture.id,
200
- kind: capture.kind,
201
- format: capture.format,
202
- width: capture.width,
203
- height: capture.height,
204
- bytes
205
- }
206
- },
207
- at: now
208
- };
209
- return recordoutcome(base, planid, outcome, now);
210
- }
211
- function recordpair(progress, planid, stepid, pair, now) {
212
- const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
213
- const outcome = {
214
- stepid,
215
- ok: true,
216
- summary: `Paired the before shot ${pair.beforeid} with the after shot ${pair.afterid} around the ${pair.actionkind} action.`,
217
- details: {
218
- shotpair: {
219
- id: pair.id,
220
- beforeid: pair.beforeid,
221
- afterid: pair.afterid,
222
- actionkind: pair.actionkind,
223
- ...pair.target !== void 0 ? { target: pair.target } : {},
224
- ...pair.domsnapshotid !== void 0 ? { domsnapshotid: pair.domsnapshotid } : {}
225
- }
226
- },
227
- at: now
228
- };
229
- return recordoutcome(base, planid, outcome, now);
230
- }
231
- function captureentries(progress, planid, stepid) {
232
- if (!progress || progress.planid !== planid) return [];
233
- return (progress.outcomes ?? []).filter((outcome) => outcome.stepid === stepid && outcome.details?.capture !== void 0).map(
234
- (outcome) => outcome.details?.capture
235
- );
236
- }
237
- function pairentries(progress, planid, stepid) {
238
- if (!progress || progress.planid !== planid) return [];
239
- return (progress.outcomes ?? []).filter((outcome) => outcome.stepid === stepid && outcome.details?.shotpair !== void 0).map(
240
- (outcome) => outcome.details?.shotpair
241
- );
242
- }
243
- function recordmedia(progress, planid, stepid, media, now) {
244
- const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
245
- const outcome = {
246
- stepid,
247
- ok: true,
248
- summary: `Captured a ${media.kind} media record of ${media.scope} scope with ${media.bytes} character${media.bytes === 1 ? "" : "s"} of media data.`,
249
- details: { media },
250
- at: now
251
- };
252
- return recordoutcome(base, planid, outcome, now);
253
- }
254
- function mediaentries(progress, planid, stepid) {
255
- if (!progress || progress.planid !== planid) return [];
256
- return (progress.outcomes ?? []).filter((outcome) => outcome.stepid === stepid && outcome.details?.media !== void 0).map((outcome) => outcome.details?.media);
257
- }
258
- function recordcall(progress, planid, stepid, entry, now) {
259
- const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
260
- const outcome = {
261
- stepid,
262
- ok: entry.statusclass === "success",
263
- summary: `Outbound ${entry.method} ${entry.kind} call to ${entry.origin} ended in the ${entry.status} ${entry.statusclass} class after ${entry.retries} retr${entry.retries === 1 ? "y" : "ies"} and ${entry.bytes} byte${entry.bytes === 1 ? "" : "s"}.`,
264
- details: { call: entry },
265
- at: now
266
- };
267
- return recordoutcome(base, planid, outcome, now);
268
- }
269
- function callentries(progress, planid, stepid) {
270
- if (!progress || progress.planid !== planid) return [];
271
- return (progress.outcomes ?? []).filter((outcome) => outcome.stepid === stepid && outcome.details?.call !== void 0).map((outcome) => outcome.details?.call);
272
- }
273
- function recordfetchretry(progress, planid, stepid, retry, now) {
274
- const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
275
- const outcome = {
276
- stepid,
277
- ok: false,
278
- summary: `Fetch attempt ${retry.attempt} of ${retry.url} failed (${retry.reason}); retrying after a ${retry.wait} millisecond backoff.`,
279
- details: { fetchretry: retry },
280
- at: now
281
- };
282
- return recordoutcome(base, planid, outcome, now);
283
- }
284
- function fetchretryentries(progress, planid, stepid) {
285
- if (!progress || progress.planid !== planid) return [];
286
- return (progress.outcomes ?? []).filter((outcome) => outcome.stepid === stepid && outcome.details?.fetchretry !== void 0).map((outcome) => outcome.details?.fetchretry);
287
- }
288
- function recordchannel(progress, planid, stepid, entry, now) {
289
- const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
290
- const outcome = {
291
- stepid,
292
- ok: entry.state !== "failed",
293
- summary: `The ${entry.kind} channel of ${entry.url} is ${entry.state} after ${entry.sent} sent and ${entry.received} received message${entry.received === 1 ? "" : "s"}.`,
294
- details: { channel: entry },
295
- at: now
296
- };
297
- return recordoutcome(base, planid, outcome, now);
298
- }
299
- function channelentries(progress, planid, stepid) {
300
- if (!progress || progress.planid !== planid) return [];
301
- return (progress.outcomes ?? []).filter((outcome) => outcome.stepid === stepid && outcome.details?.channel !== void 0).map((outcome) => outcome.details?.channel);
302
- }
303
- function recordexchange(progress, planid, stepid, entry, now) {
304
- const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
305
- const outcome = {
306
- stepid,
307
- ok: entry.errorclass === void 0 && entry.statusclass === "success",
308
- summary: `Observed the ${entry.method} request of ${entry.url} as exchange ${entry.correlationid} in the ${entry.status} ${entry.statusclass} class over ${entry.duration} millisecond${entry.duration === 1 ? "" : "s"}${entry.errorclass !== void 0 ? ` failing with the ${entry.errorclass} class` : ""}.`,
309
- details: { exchange: entry },
310
- at: now
311
- };
312
- return recordoutcome(base, planid, outcome, now);
313
- }
314
- function exchangeentries(progress, planid, stepid) {
315
- if (!progress || progress.planid !== planid) return [];
316
- return (progress.outcomes ?? []).filter((outcome) => outcome.stepid === stepid && outcome.details?.exchange !== void 0).map((outcome) => outcome.details?.exchange);
317
- }
318
- function recordevent(progress, planid, stepid, entry, now) {
319
- const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
320
- const outcome = {
321
- stepid,
322
- ok: true,
323
- summary: `The event stream of ${entry.url} observed ${entry.events} ${entry.name || "message"} event${entry.events === 1 ? "" : "s"}${entry.lasteventid !== void 0 ? ` resuming from ${entry.lasteventid}` : ""}.`,
324
- details: { event: entry },
325
- at: now
326
- };
327
- return recordoutcome(base, planid, outcome, now);
328
- }
329
- function evententries(progress, planid, stepid) {
330
- if (!progress || progress.planid !== planid) return [];
331
- return (progress.outcomes ?? []).filter((outcome) => outcome.stepid === stepid && outcome.details?.event !== void 0).map((outcome) => outcome.details?.event);
332
- }
333
- function recordpoll(progress, planid, stepid, entry, now) {
334
- const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
335
- const outcome = {
336
- stepid,
337
- ok: true,
338
- summary: `Long poll ${entry.poll} returned the ${entry.status} status${entry.cursor !== void 0 ? ` at cursor ${entry.cursor}` : ""} and ${entry.stopped ? `stopped: ${entry.reason}` : "continues"}.`,
339
- details: { poll: entry },
340
- at: now
341
- };
342
- return recordoutcome(base, planid, outcome, now);
343
- }
344
- function pollentries(progress, planid, stepid) {
345
- if (!progress || progress.planid !== planid) return [];
346
- return (progress.outcomes ?? []).filter((outcome) => outcome.stepid === stepid && outcome.details?.poll !== void 0).map((outcome) => outcome.details?.poll);
347
- }
348
- function recordcontrol(progress, planid, stepid, entry, now) {
349
- const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
350
- const outcome = {
351
- stepid,
352
- ok: true,
353
- summary: `${entry.reason}: ${entry.applied} applied rule${entry.applied === 1 ? "" : "s"}, ${entry.blocked} blocked request${entry.blocked === 1 ? "" : "s"}, ${entry.mocked} mocked response${entry.mocked === 1 ? "" : "s"} and ${entry.reverts} reverted rule${entry.reverts === 1 ? "" : "s"}.`,
354
- details: { control: entry },
355
- at: now
356
- };
357
- return recordoutcome(base, planid, outcome, now);
358
- }
359
- function controlentries(progress, planid, stepid) {
360
- if (!progress || progress.planid !== planid) return [];
361
- return (progress.outcomes ?? []).filter((outcome) => outcome.stepid === stepid && outcome.details?.control !== void 0).map((outcome) => outcome.details?.control);
362
- }
363
- function recordupload(progress, planid, stepid, entry, now) {
364
- const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
365
- const outcome = {
366
- stepid,
367
- ok: true,
368
- summary: `The multipart upload moved chunk ${entry.chunk} of ${entry.chunks} with ${entry.uploaded} of ${entry.bytes} bytes sent.`,
369
- details: { upload: entry },
370
- at: now
371
- };
372
- return recordoutcome(base, planid, outcome, now);
373
- }
374
- function uploadentries(progress, planid, stepid) {
375
- if (!progress || progress.planid !== planid) return [];
376
- return (progress.outcomes ?? []).filter((outcome) => outcome.stepid === stepid && outcome.details?.upload !== void 0).map((outcome) => outcome.details?.upload);
377
- }
378
- function recordtimeline(progress, planid, stepid, entry, now) {
379
- const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
380
- const outcome = {
381
- stepid,
382
- ok: true,
383
- summary: `Captured ${entry.entries} timeline entr${entry.entries === 1 ? "y" : "ies"} with ${entry.collapsed} collapsed repeat${entry.collapsed === 1 ? "" : "s"}, ${entry.errors} error${entry.errors === 1 ? "" : "s"}, ${entry.rejections} rejection${entry.rejections === 1 ? "" : "s"} and ${entry.longtasks} long task${entry.longtasks === 1 ? "" : "s"}.`,
384
- details: { timeline: entry },
385
- at: now
386
- };
387
- return recordoutcome(base, planid, outcome, now);
388
- }
389
- function timelineevidences(progress, planid, stepid) {
390
- if (!progress || progress.planid !== planid) return [];
391
- return (progress.outcomes ?? []).filter((outcome) => outcome.stepid === stepid && outcome.details?.timeline !== void 0).map((outcome) => outcome.details?.timeline);
392
- }
393
- function recordcdp(progress, planid, stepid, entry, now) {
394
- const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
395
- const summary = entry.family === "command" ? `The reviewed ${entry.method ?? "raw"} command of the ${entry.domain ?? "unknown"} domain returned in ${entry.duration ?? 0} millisecond${(entry.duration ?? 0) === 1 ? "" : "s"}${entry.errorclass !== void 0 ? ` with the ${entry.errorclass} error class` : ""}.` : `The devtools ${entry.family} step ran${entry.domain !== void 0 ? ` on the ${entry.domain} domain` : ""}${entry.events !== void 0 ? ` and matched ${entry.events} event${entry.events === 1 ? "" : "s"}` : ""}${entry.hits !== void 0 ? ` with ${entry.hits} hit${entry.hits === 1 ? "" : "s"}` : ""}${entry.frames !== void 0 ? ` capturing ${entry.frames} call frame${entry.frames === 1 ? "" : "s"}` : ""}.`;
396
- const outcome = {
397
- stepid,
398
- ok: entry.errorclass === void 0,
399
- summary,
400
- details: { cdp: entry },
401
- at: now
402
- };
403
- return recordoutcome(base, planid, outcome, now);
404
- }
405
- function cdpevidences(progress, planid, stepid) {
406
- if (!progress || progress.planid !== planid) return [];
407
- return (progress.outcomes ?? []).filter((outcome) => outcome.stepid === stepid && outcome.details?.cdp !== void 0).map((outcome) => outcome.details?.cdp);
408
- }
409
- function recordprofile(progress, planid, stepid, entry, now) {
410
- const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
411
- const counts = `${entry.metrics !== void 0 ? `${entry.metrics} metric${entry.metrics === 1 ? "" : "s"}, ` : ""}${entry.samples !== void 0 ? `${entry.samples} sample${entry.samples === 1 ? "" : "s"}, ` : ""}${entry.nodes !== void 0 ? `${entry.nodes} node${entry.nodes === 1 ? "" : "s"}, ` : ""}${entry.events !== void 0 ? `${entry.events} event${entry.events === 1 ? "" : "s"}, ` : ""}${entry.bytes !== void 0 ? `${entry.bytes} byte${entry.bytes === 1 ? "" : "s"}, ` : ""}${entry.flagged !== void 0 ? `${entry.flagged} flagged step${entry.flagged === 1 ? "" : "s"}, ` : ""}`.replace(
412
- /, $/,
413
- ""
414
- );
415
- const outcome = {
416
- stepid,
417
- ok: true,
418
- summary: `The profiling ${entry.family} capture ran${counts.length > 0 ? ` with ${counts}` : ""}.`,
419
- details: { profile: entry },
420
- at: now
421
- };
422
- return recordoutcome(base, planid, outcome, now);
423
- }
424
- function profileevidences(progress, planid, stepid) {
425
- if (!progress || progress.planid !== planid) return [];
426
- return (progress.outcomes ?? []).filter((outcome) => outcome.stepid === stepid && outcome.details?.profile !== void 0).map((outcome) => outcome.details?.profile);
427
- }
428
- function recordemulation(progress, planid, stepid, entry, now) {
429
- const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
430
- const outcome = {
431
- stepid,
432
- ok: true,
433
- summary: `${entry.reason}: ${entry.applied.length} applied layer${entry.applied.length === 1 ? "" : "s"}${entry.applied.length > 0 ? ` (${entry.applied.join(", ")})` : ""} and ${entry.reverted.length} reverted layer${entry.reverted.length === 1 ? "" : "s"}${entry.reverted.length > 0 ? ` (${entry.reverted.join(", ")})` : ""}.`,
434
- details: { emulation: entry },
435
- at: now
436
- };
437
- return recordoutcome(base, planid, outcome, now);
438
- }
439
- function emulationevidences(progress, planid, stepid) {
440
- if (!progress || progress.planid !== planid) return [];
441
- return (progress.outcomes ?? []).filter((outcome) => outcome.stepid === stepid && outcome.details?.emulation !== void 0).map((outcome) => outcome.details?.emulation);
442
- }
443
- function recordsession(progress, planid, stepid, entry, now) {
444
- const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
445
- const counts = `${entry.sections !== void 0 ? `${entry.sections} section${entry.sections === 1 ? "" : "s"}, ` : ""}${entry.matches !== void 0 ? `${entry.matches} match${entry.matches === 1 ? "" : "es"}, ` : ""}${entry.restored !== void 0 ? `${entry.restored} restored tab${entry.restored === 1 ? "" : "s"}, ` : ""}${entry.skipped !== void 0 ? `${entry.skipped} skipped origin${entry.skipped === 1 ? "" : "s"}, ` : ""}${entry.cursor !== void 0 ? `cursor ${entry.cursor}, ` : ""}${entry.bytes !== void 0 ? `${entry.bytes} byte${entry.bytes === 1 ? "" : "s"}, ` : ""}`.replace(
446
- /, $/,
447
- ""
448
- );
449
- const outcome = {
450
- stepid,
451
- ok: true,
452
- summary: `${entry.detail}${counts.length > 0 ? ` with ${counts}` : ""}.`,
453
- details: { session: entry },
454
- at: now
455
- };
456
- return recordoutcome(base, planid, outcome, now);
457
- }
458
- function sessionevidences(progress, planid, stepid) {
459
- if (!progress || progress.planid !== planid) return [];
460
- return (progress.outcomes ?? []).filter((outcome) => outcome.stepid === stepid && outcome.details?.session !== void 0).map((outcome) => outcome.details?.session);
461
- }
462
- function recordworkflow(progress, planid, stepid, entry, now) {
463
- const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
464
- const counts = `${entry.executed !== void 0 ? `${entry.executed} executed step${entry.executed === 1 ? "" : "s"}, ` : ""}${entry.refused !== void 0 ? `${entry.refused} refused step${entry.refused === 1 ? "" : "s"}, ` : ""}${entry.total !== void 0 ? `${entry.total} total step${entry.total === 1 ? "" : "s"}, ` : ""}${entry.iterations !== void 0 ? `${entry.iterations} iteration${entry.iterations === 1 ? "" : "s"}, ` : ""}${entry.denominator !== void 0 ? `denominator ${entry.denominator}, ` : ""}`.replace(
465
- /, $/,
466
- ""
467
- );
468
- const outcome = {
469
- stepid,
470
- ok: true,
471
- summary: `${entry.detail}${counts.length > 0 ? ` with ${counts}` : ""}.`,
472
- details: { workflow: entry },
473
- at: now
474
- };
475
- return recordoutcome(base, planid, outcome, now);
476
- }
477
- function workflowevidences(progress, planid, stepid) {
478
- if (!progress || progress.planid !== planid) return [];
479
- return (progress.outcomes ?? []).filter((outcome) => outcome.stepid === stepid && outcome.details?.workflow !== void 0).map((outcome) => outcome.details?.workflow);
480
- }
481
- function workflowshare(executed, total) {
482
- if (total <= 0) return 0;
483
- return Math.min(1, Math.max(0, executed / total));
484
- }
485
- function loopshare(iterations, denominator) {
486
- if (denominator <= 0) return 0;
487
- return Math.min(1, Math.max(0, iterations / denominator));
488
- }
489
- function recordtrigger(progress, planid, stepid, entry, now) {
490
- const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
491
- const counts = `${entry.fires !== void 0 ? `${entry.fires} fire${entry.fires === 1 ? "" : "s"}, ` : ""}${entry.launches !== void 0 ? `${entry.launches} launch${entry.launches === 1 ? "" : "es"}, ` : ""}${entry.suppressions !== void 0 ? `${entry.suppressions} suppression${entry.suppressions === 1 ? "" : "s"}, ` : ""}${entry.queued !== void 0 ? `${entry.queued} queued fire${entry.queued === 1 ? "" : "s"}, ` : ""}`.replace(
492
- /, $/,
493
- ""
494
- );
495
- const outcome = {
496
- stepid,
497
- ok: true,
498
- summary: `${entry.detail}${counts.length > 0 ? ` with ${counts}` : ""}.`,
499
- details: { trigger: entry },
500
- at: now
501
- };
502
- return recordoutcome(base, planid, outcome, now);
503
- }
504
- function triggerevidences(progress, planid, stepid) {
505
- if (!progress || progress.planid !== planid) return [];
506
- return (progress.outcomes ?? []).filter((outcome) => outcome.stepid === stepid && outcome.details?.trigger !== void 0).map((outcome) => outcome.details?.trigger);
507
- }
508
- function recordtoolcall(progress, planid, stepid, entry, now) {
509
- const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
510
- const outcome = {
511
- stepid,
512
- ok: entry.ok,
513
- summary: `The ${entry.tool} tool call of the client ${entry.clientid} ${entry.ok ? "ran behind the consent gates" : `was refused${entry.code !== void 0 ? ` with the ${entry.code} error` : ""}`}.`,
514
- details: { tool: entry },
515
- at: now
516
- };
517
- return recordoutcome(base, planid, outcome, now);
518
- }
519
- function toolcallevidences(progress, planid, stepid) {
520
- if (!progress || progress.planid !== planid) return [];
521
- return (progress.outcomes ?? []).filter((outcome) => outcome.stepid === stepid && outcome.details?.tool !== void 0).map((outcome) => outcome.details?.tool);
522
- }
523
- function recorddenied(progress, planid, stepid, entry, now) {
524
- const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
525
- const outcome = {
526
- stepid,
527
- ok: false,
528
- summary: `The ${entry.kind} step on ${entry.origin} was denied: ${entry.reason}`,
529
- details: { denied: entry },
530
- at: now
531
- };
532
- return recordoutcome(base, planid, outcome, now);
533
- }
534
- function deniedevidences(progress, planid, stepid) {
535
- if (!progress || progress.planid !== planid) return [];
536
- return (progress.outcomes ?? []).filter((outcome) => outcome.stepid === stepid && outcome.details?.denied !== void 0).map((outcome) => outcome.details?.denied);
537
- }
538
- function recordrevocation(progress, planid, stepid, entry, now) {
539
- const base = progress && progress.planid === planid ? progress : emptyprogress(planid, now);
540
- const outcome = {
541
- stepid,
542
- ok: false,
543
- summary: `The run halted at the step ${stepid}${entry.haltedstepids.length > 1 ? ` with ${entry.haltedstepids.length - 1} queued step${entry.haltedstepids.length === 2 ? "" : "s"} rolled back` : ""}: ${entry.reason}`,
544
- details: { revoked: entry },
545
- at: now
546
- };
547
- return recordoutcome(base, planid, outcome, now);
548
- }
549
- function revocationevidences(progress, planid, stepid) {
550
- if (!progress || progress.planid !== planid) return [];
551
- return (progress.outcomes ?? []).filter((outcome) => outcome.stepid === stepid && outcome.details?.revoked !== void 0).map((outcome) => outcome.details?.revoked);
552
- }
553
- function replayprogress(progress, planid) {
554
- if (!progress || progress.planid !== planid) return { planid, entries: [] };
555
- const entries = (progress.outcomes ?? []).map((outcome, index) => ({
556
- index,
557
- stepid: outcome.stepid,
558
- ok: outcome.ok,
559
- summary: outcome.summary,
560
- at: outcome.at,
561
- ...outcome.provenance !== void 0 ? { provenance: outcome.provenance } : {}
562
- }));
563
- return { planid, entries, ...progress.provenance !== void 0 ? { provenance: progress.provenance } : {} };
564
- }
565
- export {
566
- assigntasktab,
567
- callentries,
568
- captureentries,
569
- cdpevidences,
570
- channelentries,
571
- controlentries,
572
- deltasof,
573
- deniedevidences,
574
- downloadentries,
575
- downloadshare,
576
- emptyprogress,
577
- emulationevidences,
578
- environmentof,
579
- evententries,
580
- exchangeentries,
581
- extractionentries,
582
- extractionshare,
583
- fetchretryentries,
584
- gatewaitof,
585
- iscomplete,
586
- loopshare,
587
- mediaentries,
588
- naventries,
589
- pairentries,
590
- perfof,
591
- pollentries,
592
- profileevidences,
593
- progressnow,
594
- provenancestampof,
595
- recordcall,
596
- recordcapture,
597
- recordcdp,
598
- recordchannel,
599
- recordcontrol,
600
- recorddeltas,
601
- recorddenied,
602
- recorddownload,
603
- recordemulation,
604
- recordenvironment,
605
- recordevent,
606
- recordexchange,
607
- recordextraction,
608
- recordfetchretry,
609
- recordgatewait,
610
- recordmedia,
611
- recordnaventry,
612
- recordoutcome,
613
- recordoutcomewithclock,
614
- recordpair,
615
- recordperf,
616
- recordpoll,
617
- recordprofile,
618
- recordrevocation,
619
- recordsession,
620
- recordstep,
621
- recordtimeline,
622
- recordtoolcall,
623
- recordtrigger,
624
- recordturnaround,
625
- recordupload,
626
- recordwatchcompletion,
627
- recordwizardstep,
628
- recordworkflow,
629
- releasetasktab,
630
- replayprogress,
631
- resetforplan,
632
- revocationevidences,
633
- sessionevidences,
634
- tasktabs,
635
- timelineevidences,
636
- toolcallevidences,
637
- triggerevidences,
638
- turnaroundof,
639
- uploadentries,
640
- watchclosed,
641
- wizardcompletion,
642
- workflowevidences,
643
- workflowshare
644
- };
645
- //# sourceMappingURL=progress.js.map