waterplane 0.1.24 → 0.1.26

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 (429) hide show
  1. package/CHANGELOG.md +49 -0
  2. package/SECURITY.md +25 -5
  3. package/node_modules/@waterplane/shared/dist/agentseries/compare.d.ts +8 -0
  4. package/node_modules/@waterplane/shared/dist/agentseries/compare.js +103 -0
  5. package/node_modules/@waterplane/shared/dist/agentseries/compare.js.map +1 -0
  6. package/node_modules/@waterplane/shared/dist/agentseries/markers.d.ts +17 -0
  7. package/node_modules/@waterplane/shared/dist/agentseries/markers.js +125 -0
  8. package/node_modules/@waterplane/shared/dist/agentseries/markers.js.map +1 -0
  9. package/node_modules/@waterplane/shared/dist/agentseries/series.d.ts +16 -0
  10. package/node_modules/@waterplane/shared/dist/agentseries/series.js +93 -0
  11. package/node_modules/@waterplane/shared/dist/agentseries/series.js.map +1 -0
  12. package/node_modules/@waterplane/shared/dist/agentseries/stats.d.ts +8 -0
  13. package/node_modules/@waterplane/shared/dist/agentseries/stats.js +33 -0
  14. package/node_modules/@waterplane/shared/dist/agentseries/stats.js.map +1 -0
  15. package/node_modules/@waterplane/shared/dist/agentseries/types.d.ts +103 -0
  16. package/node_modules/@waterplane/shared/dist/agentseries/types.js +11 -0
  17. package/node_modules/@waterplane/shared/dist/agentseries/types.js.map +1 -0
  18. package/node_modules/@waterplane/shared/dist/agentseries.d.ts +10 -0
  19. package/node_modules/@waterplane/shared/dist/agentseries.js +11 -0
  20. package/node_modules/@waterplane/shared/dist/agentseries.js.map +1 -0
  21. package/node_modules/@waterplane/shared/dist/calday.d.ts +5 -0
  22. package/node_modules/@waterplane/shared/dist/calday.js +10 -0
  23. package/node_modules/@waterplane/shared/dist/calday.js.map +1 -1
  24. package/node_modules/@waterplane/shared/dist/clihealth/healthfixture.d.ts +13 -1
  25. package/node_modules/@waterplane/shared/dist/clihealth/healthfixture.js +22 -4
  26. package/node_modules/@waterplane/shared/dist/clihealth/healthfixture.js.map +1 -1
  27. package/node_modules/@waterplane/shared/dist/clihealth.d.ts +1 -1
  28. package/node_modules/@waterplane/shared/dist/clihealth.js +1 -1
  29. package/node_modules/@waterplane/shared/dist/clihealth.js.map +1 -1
  30. package/node_modules/@waterplane/shared/dist/dictate.d.ts +6 -0
  31. package/node_modules/@waterplane/shared/dist/dictate.js.map +1 -1
  32. package/node_modules/@waterplane/shared/dist/dictatemodels.d.ts +23 -0
  33. package/node_modules/@waterplane/shared/dist/dictatemodels.js +31 -0
  34. package/node_modules/@waterplane/shared/dist/dictatemodels.js.map +1 -0
  35. package/node_modules/@waterplane/shared/dist/healthindex/commits.d.ts +1 -1
  36. package/node_modules/@waterplane/shared/dist/healthindex/commits.js +2 -2
  37. package/node_modules/@waterplane/shared/dist/healthindex/commits.js.map +1 -1
  38. package/node_modules/@waterplane/shared/dist/healthindex/coverage.d.ts +128 -0
  39. package/node_modules/@waterplane/shared/dist/healthindex/coverage.js +343 -0
  40. package/node_modules/@waterplane/shared/dist/healthindex/coverage.js.map +1 -0
  41. package/node_modules/@waterplane/shared/dist/healthindex/readings.d.ts +9 -1
  42. package/node_modules/@waterplane/shared/dist/healthindex/readings.js +122 -4
  43. package/node_modules/@waterplane/shared/dist/healthindex/readings.js.map +1 -1
  44. package/node_modules/@waterplane/shared/dist/healthindex/repoindex.d.ts +5 -0
  45. package/node_modules/@waterplane/shared/dist/healthindex/repoindex.js +2 -0
  46. package/node_modules/@waterplane/shared/dist/healthindex/repoindex.js.map +1 -1
  47. package/node_modules/@waterplane/shared/dist/healthindex/score.d.ts +3 -0
  48. package/node_modules/@waterplane/shared/dist/healthindex/score.js +52 -16
  49. package/node_modules/@waterplane/shared/dist/healthindex/score.js.map +1 -1
  50. package/node_modules/@waterplane/shared/dist/healthindex/types.d.ts +82 -6
  51. package/node_modules/@waterplane/shared/dist/healthindex/types.js +35 -2
  52. package/node_modules/@waterplane/shared/dist/healthindex/types.js.map +1 -1
  53. package/node_modules/@waterplane/shared/dist/healthindex/words.js +65 -6
  54. package/node_modules/@waterplane/shared/dist/healthindex/words.js.map +1 -1
  55. package/node_modules/@waterplane/shared/dist/healthindex.d.ts +21 -7
  56. package/node_modules/@waterplane/shared/dist/healthindex.js +20 -7
  57. package/node_modules/@waterplane/shared/dist/healthindex.js.map +1 -1
  58. package/node_modules/@waterplane/shared/dist/healthindexresponse.js +3 -2
  59. package/node_modules/@waterplane/shared/dist/healthindexresponse.js.map +1 -1
  60. package/node_modules/@waterplane/shared/dist/healthspend.d.ts +23 -0
  61. package/node_modules/@waterplane/shared/dist/healthspend.js +32 -1
  62. package/node_modules/@waterplane/shared/dist/healthspend.js.map +1 -1
  63. package/node_modules/@waterplane/shared/dist/hints.js +9 -0
  64. package/node_modules/@waterplane/shared/dist/hints.js.map +1 -1
  65. package/node_modules/@waterplane/shared/dist/index.d.ts +9 -0
  66. package/node_modules/@waterplane/shared/dist/index.js +9 -0
  67. package/node_modules/@waterplane/shared/dist/index.js.map +1 -1
  68. package/node_modules/@waterplane/shared/dist/installrow.js +10 -0
  69. package/node_modules/@waterplane/shared/dist/installrow.js.map +1 -1
  70. package/node_modules/@waterplane/shared/dist/intent/kind.d.ts +45 -1
  71. package/node_modules/@waterplane/shared/dist/intent/kind.js +60 -2
  72. package/node_modules/@waterplane/shared/dist/intent/kind.js.map +1 -1
  73. package/node_modules/@waterplane/shared/dist/intent.d.ts +1 -1
  74. package/node_modules/@waterplane/shared/dist/intent.js +1 -1
  75. package/node_modules/@waterplane/shared/dist/intent.js.map +1 -1
  76. package/node_modules/@waterplane/shared/dist/itempaths.d.ts +23 -0
  77. package/node_modules/@waterplane/shared/dist/itempaths.js +38 -0
  78. package/node_modules/@waterplane/shared/dist/itempaths.js.map +1 -1
  79. package/node_modules/@waterplane/shared/dist/pluginlaunch.d.ts +3 -2
  80. package/node_modules/@waterplane/shared/dist/pluginlaunch.js +1 -1
  81. package/node_modules/@waterplane/shared/dist/pluginlaunch.js.map +1 -1
  82. package/node_modules/@waterplane/shared/dist/pricelist.d.ts +57 -0
  83. package/node_modules/@waterplane/shared/dist/pricelist.js +128 -0
  84. package/node_modules/@waterplane/shared/dist/pricelist.js.map +1 -0
  85. package/node_modules/@waterplane/shared/dist/pricing.d.ts +86 -9
  86. package/node_modules/@waterplane/shared/dist/pricing.js +140 -20
  87. package/node_modules/@waterplane/shared/dist/pricing.js.map +1 -1
  88. package/node_modules/@waterplane/shared/dist/queue/queuelanestate.d.ts +14 -0
  89. package/node_modules/@waterplane/shared/dist/queue/queuelanestate.js +25 -0
  90. package/node_modules/@waterplane/shared/dist/queue/queuelanestate.js.map +1 -0
  91. package/node_modules/@waterplane/shared/dist/queue/queueplan.d.ts +4 -0
  92. package/node_modules/@waterplane/shared/dist/queue/queueplan.js +21 -0
  93. package/node_modules/@waterplane/shared/dist/queue/queueplan.js.map +1 -1
  94. package/node_modules/@waterplane/shared/dist/queue/queuewords.js +2 -1
  95. package/node_modules/@waterplane/shared/dist/queue/queuewords.js.map +1 -1
  96. package/node_modules/@waterplane/shared/dist/queue.d.ts +2 -0
  97. package/node_modules/@waterplane/shared/dist/queue.js +1 -0
  98. package/node_modules/@waterplane/shared/dist/queue.js.map +1 -1
  99. package/node_modules/@waterplane/shared/dist/repohealth.d.ts +178 -0
  100. package/node_modules/@waterplane/shared/dist/repohealth.js.map +1 -1
  101. package/node_modules/@waterplane/shared/dist/repohealthhabits.d.ts +15 -0
  102. package/node_modules/@waterplane/shared/dist/repohealthhabits.js +117 -0
  103. package/node_modules/@waterplane/shared/dist/repohealthhabits.js.map +1 -0
  104. package/node_modules/@waterplane/shared/dist/repohealthnative.d.ts +10 -0
  105. package/node_modules/@waterplane/shared/dist/repohealthnative.js +94 -0
  106. package/node_modules/@waterplane/shared/dist/repohealthnative.js.map +1 -0
  107. package/node_modules/@waterplane/shared/dist/repohealthread.js +23 -1
  108. package/node_modules/@waterplane/shared/dist/repohealthread.js.map +1 -1
  109. package/node_modules/@waterplane/shared/dist/skillstate.d.ts +51 -0
  110. package/node_modules/@waterplane/shared/dist/skillstate.js +176 -0
  111. package/node_modules/@waterplane/shared/dist/skillstate.js.map +1 -0
  112. package/node_modules/@waterplane/shared/dist/skillwords.d.ts +10 -0
  113. package/node_modules/@waterplane/shared/dist/skillwords.js +18 -0
  114. package/node_modules/@waterplane/shared/dist/skillwords.js.map +1 -0
  115. package/node_modules/@waterplane/shared/dist/wire/agentreadings.d.ts +248 -0
  116. package/node_modules/@waterplane/shared/dist/wire/agentreadings.js +36 -0
  117. package/node_modules/@waterplane/shared/dist/wire/agentreadings.js.map +1 -0
  118. package/node_modules/@waterplane/shared/dist/wire/backend.d.ts +2 -0
  119. package/node_modules/@waterplane/shared/dist/wire/costwindow.d.ts +4 -0
  120. package/node_modules/@waterplane/shared/dist/wire/dictatesetup.d.ts +42 -0
  121. package/node_modules/@waterplane/shared/dist/wire/dictatesetup.js +9 -0
  122. package/node_modules/@waterplane/shared/dist/wire/dictatesetup.js.map +1 -0
  123. package/node_modules/@waterplane/shared/dist/wire/messages/hostcore.d.ts +22 -1
  124. package/node_modules/@waterplane/shared/dist/wire/notify.d.ts +6 -1
  125. package/node_modules/@waterplane/shared/dist/wire/notify.js +6 -1
  126. package/node_modules/@waterplane/shared/dist/wire/notify.js.map +1 -1
  127. package/node_modules/@waterplane/shared/dist/wire/repo.d.ts +1 -1
  128. package/node_modules/@waterplane/shared/dist/wire/skills.d.ts +142 -0
  129. package/node_modules/@waterplane/shared/dist/wire/skills.js +6 -0
  130. package/node_modules/@waterplane/shared/dist/wire/skills.js.map +1 -0
  131. package/node_modules/@waterplane/shared/dist/wire/sysstat.d.ts +17 -0
  132. package/node_modules/@waterplane/shared/dist/wire/telemetry.d.ts +4 -0
  133. package/npm-shrinkwrap.json +2 -2
  134. package/package.json +1 -1
  135. package/packages/extensions/diskspace/waterplane-plugin.json +16 -0
  136. package/packages/extensions/links/waterplane-plugin.json +18 -0
  137. package/packages/host/dist/agentclass.d.ts +116 -0
  138. package/packages/host/dist/agentclass.js +339 -0
  139. package/packages/host/dist/agentclass.js.map +1 -0
  140. package/packages/host/dist/agentintents.d.ts +18 -0
  141. package/packages/host/dist/agentintents.js +40 -7
  142. package/packages/host/dist/agentintents.js.map +1 -1
  143. package/packages/host/dist/agentmarkers.d.ts +49 -0
  144. package/packages/host/dist/agentmarkers.js +255 -0
  145. package/packages/host/dist/agentmarkers.js.map +1 -0
  146. package/packages/host/dist/agentreadings.d.ts +68 -0
  147. package/packages/host/dist/agentreadings.js +336 -0
  148. package/packages/host/dist/agentreadings.js.map +1 -0
  149. package/packages/host/dist/agentscan.d.ts +8 -0
  150. package/packages/host/dist/agentscan.js +427 -0
  151. package/packages/host/dist/agentscan.js.map +1 -0
  152. package/packages/host/dist/archive.js +9 -3
  153. package/packages/host/dist/archive.js.map +1 -1
  154. package/packages/host/dist/artifacts.js +4 -7
  155. package/packages/host/dist/artifacts.js.map +1 -1
  156. package/packages/host/dist/askrules.js +12 -4
  157. package/packages/host/dist/askrules.js.map +1 -1
  158. package/packages/host/dist/auth.d.ts +1 -0
  159. package/packages/host/dist/auth.js +5 -3
  160. package/packages/host/dist/auth.js.map +1 -1
  161. package/packages/host/dist/autopull.js +4 -8
  162. package/packages/host/dist/autopull.js.map +1 -1
  163. package/packages/host/dist/backends/claude.js +1 -0
  164. package/packages/host/dist/backends/claude.js.map +1 -1
  165. package/packages/host/dist/backends/derive.js +3 -1
  166. package/packages/host/dist/backends/derive.js.map +1 -1
  167. package/packages/host/dist/binguard.js +19 -2
  168. package/packages/host/dist/binguard.js.map +1 -1
  169. package/packages/host/dist/capture.js +7 -10
  170. package/packages/host/dist/capture.js.map +1 -1
  171. package/packages/host/dist/clifixtures.d.ts +24 -4
  172. package/packages/host/dist/clifixtures.js +50 -10
  173. package/packages/host/dist/clifixtures.js.map +1 -1
  174. package/packages/host/dist/clihealth.d.ts +8 -2
  175. package/packages/host/dist/clihealth.js +11 -3
  176. package/packages/host/dist/clihealth.js.map +1 -1
  177. package/packages/host/dist/costwindow.js +4 -2
  178. package/packages/host/dist/costwindow.js.map +1 -1
  179. package/packages/host/dist/ctxlog/ctxagents.d.ts +2 -0
  180. package/packages/host/dist/ctxlog/ctxagents.js +5 -5
  181. package/packages/host/dist/ctxlog/ctxagents.js.map +1 -1
  182. package/packages/host/dist/ctxlog/ctxcursor.d.ts +2 -0
  183. package/packages/host/dist/ctxlog/ctxcursor.js +2 -2
  184. package/packages/host/dist/ctxlog/ctxcursor.js.map +1 -1
  185. package/packages/host/dist/ctxlog/ctxupdate.js +11 -6
  186. package/packages/host/dist/ctxlog/ctxupdate.js.map +1 -1
  187. package/packages/host/dist/deliver/deliverknobs.d.ts +0 -2
  188. package/packages/host/dist/deliver/deliverknobs.js +0 -2
  189. package/packages/host/dist/deliver/deliverknobs.js.map +1 -1
  190. package/packages/host/dist/deliver/deliverproof.d.ts +3 -2
  191. package/packages/host/dist/deliver/deliverproof.js +9 -8
  192. package/packages/host/dist/deliver/deliverproof.js.map +1 -1
  193. package/packages/host/dist/deliver/deliverreturn.d.ts +3 -2
  194. package/packages/host/dist/deliver/deliverreturn.js +13 -12
  195. package/packages/host/dist/deliver/deliverreturn.js.map +1 -1
  196. package/packages/host/dist/deliver/deliverrun.js +20 -18
  197. package/packages/host/dist/deliver/deliverrun.js.map +1 -1
  198. package/packages/host/dist/deliver/deliverscreen.d.ts +2 -1
  199. package/packages/host/dist/deliver/deliverscreen.js +9 -8
  200. package/packages/host/dist/deliver/deliverscreen.js.map +1 -1
  201. package/packages/host/dist/deliver/delivertypes.d.ts +4 -0
  202. package/packages/host/dist/deliver.js +2 -1
  203. package/packages/host/dist/deliver.js.map +1 -1
  204. package/packages/host/dist/dictate.d.ts +11 -0
  205. package/packages/host/dist/dictate.js +20 -10
  206. package/packages/host/dist/dictate.js.map +1 -1
  207. package/packages/host/dist/dictatesetup.d.ts +54 -0
  208. package/packages/host/dist/dictatesetup.js +261 -0
  209. package/packages/host/dist/dictatesetup.js.map +1 -0
  210. package/packages/host/dist/doctor.js +1 -1
  211. package/packages/host/dist/doctor.js.map +1 -1
  212. package/packages/host/dist/exposure.d.ts +10 -0
  213. package/packages/host/dist/exposure.js +25 -0
  214. package/packages/host/dist/exposure.js.map +1 -1
  215. package/packages/host/dist/exposurepush.js +2 -2
  216. package/packages/host/dist/exposurepush.js.map +1 -1
  217. package/packages/host/dist/extensions/diskspace/host/candidates.d.mts +180 -0
  218. package/packages/host/dist/extensions/diskspace/host/candidates.mjs +716 -0
  219. package/packages/host/dist/extensions/diskspace/host/candidates.mjs.map +1 -0
  220. package/packages/host/dist/extensions/diskspace/host/engine.d.mts +21 -0
  221. package/packages/host/dist/extensions/diskspace/host/engine.mjs +498 -0
  222. package/packages/host/dist/extensions/diskspace/host/engine.mjs.map +1 -0
  223. package/packages/host/dist/extensions/diskspace/host/index.d.mts +25 -0
  224. package/packages/host/dist/extensions/diskspace/host/index.mjs +135 -0
  225. package/packages/host/dist/extensions/diskspace/host/index.mjs.map +1 -0
  226. package/packages/host/dist/extensions/diskspace/host/large.d.mts +11 -0
  227. package/packages/host/dist/extensions/diskspace/host/large.mjs +56 -0
  228. package/packages/host/dist/extensions/diskspace/host/large.mjs.map +1 -0
  229. package/packages/host/dist/extensions/diskspace/host/run.d.mts +94 -0
  230. package/packages/host/dist/extensions/diskspace/host/run.mjs +200 -0
  231. package/packages/host/dist/extensions/diskspace/host/run.mjs.map +1 -0
  232. package/packages/host/dist/extensions/diskspace/shared/wire.d.mts +197 -0
  233. package/packages/host/dist/extensions/diskspace/shared/wire.mjs +23 -0
  234. package/packages/host/dist/extensions/diskspace/shared/wire.mjs.map +1 -0
  235. package/packages/host/dist/extensions/links/host/engine.d.mts +39 -0
  236. package/packages/host/dist/extensions/links/host/engine.mjs +285 -0
  237. package/packages/host/dist/extensions/links/host/engine.mjs.map +1 -0
  238. package/packages/host/dist/extensions/links/host/index.d.mts +10 -0
  239. package/packages/host/dist/extensions/links/host/index.mjs +72 -0
  240. package/packages/host/dist/extensions/links/host/index.mjs.map +1 -0
  241. package/packages/host/dist/extensions/links/host/parse.d.mts +61 -0
  242. package/packages/host/dist/extensions/links/host/parse.mjs +225 -0
  243. package/packages/host/dist/extensions/links/host/parse.mjs.map +1 -0
  244. package/packages/host/dist/extensions/links/host/run.d.mts +15 -0
  245. package/packages/host/dist/extensions/links/host/run.mjs +32 -0
  246. package/packages/host/dist/extensions/links/host/run.mjs.map +1 -0
  247. package/packages/host/dist/extensions/links/host/store.d.mts +11 -0
  248. package/packages/host/dist/extensions/links/host/store.mjs +76 -0
  249. package/packages/host/dist/extensions/links/host/store.mjs.map +1 -0
  250. package/packages/host/dist/extensions/links/shared/wire.d.mts +141 -0
  251. package/packages/host/dist/extensions/links/shared/wire.mjs +20 -0
  252. package/packages/host/dist/extensions/links/shared/wire.mjs.map +1 -0
  253. package/packages/host/dist/git.d.ts +5 -3
  254. package/packages/host/dist/git.js +16 -28
  255. package/packages/host/dist/git.js.map +1 -1
  256. package/packages/host/dist/halt.js +16 -3
  257. package/packages/host/dist/halt.js.map +1 -1
  258. package/packages/host/dist/jsonstore.d.ts +16 -4
  259. package/packages/host/dist/jsonstore.js +32 -8
  260. package/packages/host/dist/jsonstore.js.map +1 -1
  261. package/packages/host/dist/landedbase.d.ts +41 -0
  262. package/packages/host/dist/landedbase.js +59 -0
  263. package/packages/host/dist/landedbase.js.map +1 -0
  264. package/packages/host/dist/lantls.js +2 -2
  265. package/packages/host/dist/lantls.js.map +1 -1
  266. package/packages/host/dist/limitretry.js +2 -3
  267. package/packages/host/dist/limitretry.js.map +1 -1
  268. package/packages/host/dist/localledger.js +9 -12
  269. package/packages/host/dist/localledger.js.map +1 -1
  270. package/packages/host/dist/main.js +2 -0
  271. package/packages/host/dist/main.js.map +1 -1
  272. package/packages/host/dist/opendeliveries.d.ts +4 -0
  273. package/packages/host/dist/opendeliveries.js +27 -1
  274. package/packages/host/dist/opendeliveries.js.map +1 -1
  275. package/packages/host/dist/plugins/setupcontrib.js +3 -2
  276. package/packages/host/dist/plugins/setupcontrib.js.map +1 -1
  277. package/packages/host/dist/pricefetch.d.ts +80 -0
  278. package/packages/host/dist/pricefetch.js +289 -0
  279. package/packages/host/dist/pricefetch.js.map +1 -0
  280. package/packages/host/dist/pricegap.d.ts +11 -0
  281. package/packages/host/dist/pricegap.js +30 -0
  282. package/packages/host/dist/pricegap.js.map +1 -0
  283. package/packages/host/dist/repohealthscopes.js +16 -24
  284. package/packages/host/dist/repohealthscopes.js.map +1 -1
  285. package/packages/host/dist/repos.d.ts +4 -0
  286. package/packages/host/dist/repos.js +1 -1
  287. package/packages/host/dist/repos.js.map +1 -1
  288. package/packages/host/dist/reposkilltext.d.ts +2 -0
  289. package/packages/host/dist/reposkilltext.js +8 -2
  290. package/packages/host/dist/reposkilltext.js.map +1 -1
  291. package/packages/host/dist/routes/apiagentpoints.d.ts +5 -0
  292. package/packages/host/dist/routes/apiagentpoints.js +48 -0
  293. package/packages/host/dist/routes/apiagentpoints.js.map +1 -0
  294. package/packages/host/dist/routes/apidictate.d.ts +2 -0
  295. package/packages/host/dist/routes/apidictate.js +27 -0
  296. package/packages/host/dist/routes/apidictate.js.map +1 -0
  297. package/packages/host/dist/routes/apihost.js +3 -2
  298. package/packages/host/dist/routes/apihost.js.map +1 -1
  299. package/packages/host/dist/routes/apirepofiles.js +3 -1
  300. package/packages/host/dist/routes/apirepofiles.js.map +1 -1
  301. package/packages/host/dist/routes/apirepowork.js +14 -0
  302. package/packages/host/dist/routes/apirepowork.js.map +1 -1
  303. package/packages/host/dist/routes/apiroutes.js +4 -1
  304. package/packages/host/dist/routes/apiroutes.js.map +1 -1
  305. package/packages/host/dist/routes/apiskills.d.ts +3 -0
  306. package/packages/host/dist/routes/apiskills.js +81 -0
  307. package/packages/host/dist/routes/apiskills.js.map +1 -0
  308. package/packages/host/dist/routes/apistats.js +2 -2
  309. package/packages/host/dist/routes/apistats.js.map +1 -1
  310. package/packages/host/dist/routes/apisystem.js +3 -1
  311. package/packages/host/dist/routes/apisystem.js.map +1 -1
  312. package/packages/host/dist/routes/apitable.d.ts +2 -0
  313. package/packages/host/dist/routes/apitable.js.map +1 -1
  314. package/packages/host/dist/server/billingwire.js +5 -0
  315. package/packages/host/dist/server/billingwire.js.map +1 -1
  316. package/packages/host/dist/server/deliveries.d.ts +4 -1
  317. package/packages/host/dist/server/deliveries.js +38 -6
  318. package/packages/host/dist/server/deliveries.js.map +1 -1
  319. package/packages/host/dist/server/http.js +1 -1
  320. package/packages/host/dist/server/http.js.map +1 -1
  321. package/packages/host/dist/server/intentDeps.js +20 -6
  322. package/packages/host/dist/server/intentDeps.js.map +1 -1
  323. package/packages/host/dist/server/wsops.js +2 -1
  324. package/packages/host/dist/server/wsops.js.map +1 -1
  325. package/packages/host/dist/sessions/core.d.ts +1 -0
  326. package/packages/host/dist/sessions/ctxseries.js +7 -5
  327. package/packages/host/dist/sessions/ctxseries.js.map +1 -1
  328. package/packages/host/dist/sessions/drive.d.ts +6 -1
  329. package/packages/host/dist/sessions/drive.js +13 -10
  330. package/packages/host/dist/sessions/drive.js.map +1 -1
  331. package/packages/host/dist/sessions/record.js +16 -17
  332. package/packages/host/dist/sessions/record.js.map +1 -1
  333. package/packages/host/dist/sessions/sidechannel.js +1 -1
  334. package/packages/host/dist/sessions/sidechannel.js.map +1 -1
  335. package/packages/host/dist/sessions/tmux.js +6 -1
  336. package/packages/host/dist/sessions/tmux.js.map +1 -1
  337. package/packages/host/dist/sessions/turn.js +5 -0
  338. package/packages/host/dist/sessions/turn.js.map +1 -1
  339. package/packages/host/dist/sessions.d.ts +2 -1
  340. package/packages/host/dist/sessions.js +1 -1
  341. package/packages/host/dist/sessions.js.map +1 -1
  342. package/packages/host/dist/settle.d.ts +3 -2
  343. package/packages/host/dist/settle.js +13 -13
  344. package/packages/host/dist/settle.js.map +1 -1
  345. package/packages/host/dist/sidecar/sidecarname.d.ts +2 -0
  346. package/packages/host/dist/sidecar/sidecarname.js +5 -1
  347. package/packages/host/dist/sidecar/sidecarname.js.map +1 -1
  348. package/packages/host/dist/sidecar/sidecarroute.d.ts +1 -1
  349. package/packages/host/dist/sidecar/sidecarroute.js +5 -0
  350. package/packages/host/dist/sidecar/sidecarroute.js.map +1 -1
  351. package/packages/host/dist/sidecar.d.ts +1 -1
  352. package/packages/host/dist/sidecar.js +1 -1
  353. package/packages/host/dist/sidecar.js.map +1 -1
  354. package/packages/host/dist/skills/skillinventory.d.ts +23 -0
  355. package/packages/host/dist/skills/skillinventory.js +275 -0
  356. package/packages/host/dist/skills/skillinventory.js.map +1 -0
  357. package/packages/host/dist/skills/skilllayers.d.ts +28 -0
  358. package/packages/host/dist/skills/skilllayers.js +73 -0
  359. package/packages/host/dist/skills/skilllayers.js.map +1 -0
  360. package/packages/host/dist/skills/skillrecommend.d.ts +42 -0
  361. package/packages/host/dist/skills/skillrecommend.js +171 -0
  362. package/packages/host/dist/skills/skillrecommend.js.map +1 -0
  363. package/packages/host/dist/skills/skillrefs.d.ts +2 -0
  364. package/packages/host/dist/skills/skillrefs.js +50 -0
  365. package/packages/host/dist/skills/skillrefs.js.map +1 -0
  366. package/packages/host/dist/skills/skilluse.d.ts +57 -0
  367. package/packages/host/dist/skills/skilluse.js +242 -0
  368. package/packages/host/dist/skills/skilluse.js.map +1 -0
  369. package/packages/host/dist/skills/skillweight.d.ts +18 -0
  370. package/packages/host/dist/skills/skillweight.js +69 -0
  371. package/packages/host/dist/skills/skillweight.js.map +1 -0
  372. package/packages/host/dist/skills/skillwrite.d.ts +56 -0
  373. package/packages/host/dist/skills/skillwrite.js +183 -0
  374. package/packages/host/dist/skills/skillwrite.js.map +1 -0
  375. package/packages/host/dist/sysstat.d.ts +34 -1
  376. package/packages/host/dist/sysstat.js +82 -14
  377. package/packages/host/dist/sysstat.js.map +1 -1
  378. package/packages/host/dist/tokenscan.js +5 -2
  379. package/packages/host/dist/tokenscan.js.map +1 -1
  380. package/packages/host/dist/tokenstats.js +7 -4
  381. package/packages/host/dist/tokenstats.js.map +1 -1
  382. package/packages/host/dist/transcript/transcriptparse.js +2 -2
  383. package/packages/host/dist/transcript/transcriptparse.js.map +1 -1
  384. package/packages/host/dist/waitclock.d.ts +12 -0
  385. package/packages/host/dist/waitclock.js +23 -0
  386. package/packages/host/dist/waitclock.js.map +1 -0
  387. package/packages/host/dist/weekburn.js +7 -5
  388. package/packages/host/dist/weekburn.js.map +1 -1
  389. package/packages/host/dist/worktreeleftover.js +13 -15
  390. package/packages/host/dist/worktreeleftover.js.map +1 -1
  391. package/packages/web/dist/assets/demo-DHkwSmU5.js +26 -0
  392. package/packages/web/dist/assets/{icons-D8RlmSLR.js → icons-5lVTFNUU.js} +1 -1
  393. package/packages/web/dist/assets/index-Bh4cH6X8.js +170 -0
  394. package/packages/web/dist/assets/index-F7VHtsLI.css +1 -0
  395. package/packages/web/dist/assets/shared-BvQMg9ra.js +51 -0
  396. package/packages/web/dist/assets/sheets-Cwi72V02.js +257 -0
  397. package/packages/web/dist/assets/sheets-DjU2XiUd.css +1 -0
  398. package/packages/web/dist/build-id.txt +1 -1
  399. package/packages/web/dist/buildstamp.json +1 -1
  400. package/packages/web/dist/index.html +7 -7
  401. package/packages/web/dist/sw.js +2 -2
  402. package/release.json +11 -3
  403. package/tools/repohealth/constants.mjs +34 -1
  404. package/tools/repohealth/fixture.json +5374 -38
  405. package/tools/repohealth/git.mjs +77 -0
  406. package/tools/repohealth/lang/dart-analyze.mjs +181 -0
  407. package/tools/repohealth/lang/dart-lex.mjs +494 -0
  408. package/tools/repohealth/lang/dart-resolve.mjs +95 -0
  409. package/tools/repohealth/lang/python-ast.mjs +602 -0
  410. package/tools/repohealth/lang/python-resolve.mjs +228 -0
  411. package/tools/repohealth/metrics/habits.mjs +286 -0
  412. package/tools/repohealth/metrics/native.mjs +542 -0
  413. package/tools/repohealth/metrics/untested.mjs +20 -8
  414. package/tools/repohealth/metrics/workspace.mjs +256 -0
  415. package/tools/repohealth/own.mjs +67 -5
  416. package/tools/repohealth/packs/dart.mjs +153 -85
  417. package/tools/repohealth/packs/python.mjs +51 -14
  418. package/tools/repohealth/plot.mjs +143 -1
  419. package/tools/repohealth/reach.mjs +98 -0
  420. package/tools/repohealth/scope.mjs +14 -1
  421. package/tools/repohealth/series.mjs +5 -0
  422. package/tools/repohealth/types.mjs +4 -0
  423. package/tools/repohealth.mjs +39 -5
  424. package/packages/web/dist/assets/demo-ad3g3HDa.js +0 -26
  425. package/packages/web/dist/assets/index-Csb7jynu.js +0 -170
  426. package/packages/web/dist/assets/index-Cz9Haocy.css +0 -1
  427. package/packages/web/dist/assets/shared-DBaaGttP.js +0 -51
  428. package/packages/web/dist/assets/sheets-CqsP9w1V.js +0 -256
  429. package/packages/web/dist/assets/sheets-DoUhPGK0.css +0 -1
@@ -68,13 +68,17 @@
68
68
  * them fell back to a token total beside priced siblings; Haiku 5.5 added
69
69
  * 2026-10-09 from the same skill's table and its migration notes — $0.10/
70
70
  * $0.50 at a prompt of 100K tokens or fewer, cache at the multipliers —
71
- * after 1.1M of its tokens sat unpriced in one week).
71
+ * after 1.1M of its tokens sat unpriced in one week; Fable 5.2 added and
72
+ * Sonnet 5.5's cache read corrected 2026-11-12 from the same table —
73
+ * Fable 5.2 $8/$40, cache read $0.20, after 3,241 of its log records sat
74
+ * unpriced; Sonnet 5.5 reads the cache at $0.10, not the rule's $0.20, so
75
+ * every Sonnet 5.5 session had been charged twice that line).
72
76
  * `PRICES_AS_OF` is carried to the UI so the screen can say how old the
73
77
  * table is rather than implying it is current.
74
78
  */
75
79
  /** When this table was taken. Shown, so a stale rate is visible rather than
76
80
  * silently authoritative. */
77
- export declare const PRICES_AS_OF = "2026-10-09";
81
+ export declare const PRICES_AS_OF = "2026-11-12";
78
82
  /** Multipliers on a model's INPUT rate. */
79
83
  export declare const CACHE_READ_MULT = 0.1;
80
84
  export declare const CACHE_WRITE_5M_MULT = 1.25;
@@ -87,7 +91,8 @@ export interface Rate {
87
91
  * The published cache-READ rate, USD per million, where the list states one
88
92
  * that is not `input × CACHE_READ_MULT`.
89
93
  *
90
- * Absent means the multiplier — every model but Fable 5.1 and Opus 5.5. Carried
94
+ * Absent means the multiplier — every model but Fable/Mythos 5.1 and 5.2,
95
+ * Opus 5.5 and Sonnet 5.5. Carried
91
96
  * as an absolute rate rather than as a per-model multiplier because that is
92
97
  * how the price list states it, and a second derivation is a second place to
93
98
  * get it wrong.
@@ -108,14 +113,43 @@ interface PriceEntry extends Rate {
108
113
  * one of those would be priced wrongly here, which is why the screen calls this
109
114
  * a list-price estimate rather than a cost.
110
115
  *
111
- * The Mythos ids are the two the list does NOT price (they are not on the
112
- * public page at all). They are kept at their Fable twins' input/output rates,
113
- * which is what the model documentation states — but Fable 5.1's cache-read
114
- * discount is deliberately NOT extended to `claude-mythos-5-1`: that number is
115
- * unstated for it, and the 0.1× rule is the one that errs dear rather than
116
- * cheap.
116
+ * This is the BUILT-IN floor. A running host overlays the rates it reads off
117
+ * Anthropic's own price page (`pricelist.ts`, `installPriceList`), so a new
118
+ * model or a changed rate reaches an installation without a release; this
119
+ * table is what prices a desktop that has never read the page or is told not
120
+ * to (`WATERPLANE_PRICE_FETCH=0`). Every row here was checked against that
121
+ * page on 2026-11-12, Mythos and the retired models included.
117
122
  */
118
123
  export declare const PRICES: Record<string, PriceEntry>;
124
+ /**
125
+ * A model's dearer card for LONG prompts, keyed by the canonical alias. The
126
+ * page prices Haiku 5.5 by prompt length: a request whose prompt (input plus
127
+ * cache reads plus cache writes) is over `overTokens` pays this card for ALL of
128
+ * its tokens, cache hits included, and each request is judged on its own.
129
+ *
130
+ * Built-in floor, like `PRICES`; the host overlays the page's own long cards
131
+ * (`LivePrices.longPrompt`). Checked against the page on 2026-11-12.
132
+ */
133
+ export declare const LONG_PROMPT: Record<string, Rate & {
134
+ overTokens: number;
135
+ }>;
136
+ /** The mark a price key carries when its requests were over the long-prompt line. */
137
+ export declare const LONG_PROMPT_MARK = "@long";
138
+ /**
139
+ * The key ONE request prices under: its own model, or `<alias>@long` when the
140
+ * model has a long-prompt card and this request's prompt is past its line.
141
+ * Asked per request, never of a bucket — a bucket's sum says nothing about
142
+ * any one prompt's length. A model without a long card keeps its raw id.
143
+ */
144
+ export declare function priceKeyOf(model: string | null | undefined, t: {
145
+ input: number;
146
+ cacheRead: number;
147
+ cacheWrite: number;
148
+ }): string | null;
149
+ /** `claude-haiku-5-5@long` → ` (prompts over 100K)`; anything else → "". For labels. */
150
+ export declare function longPromptNote(id: string): string;
151
+ /** A tallied model key as a row names it: the alias, plus the long-prompt note when it has the mark. */
152
+ export declare function priceKeyLabel(key: string): string;
119
153
  /**
120
154
  * The alias a logged model id prices under, or null when it is not one of ours.
121
155
  *
@@ -129,6 +163,43 @@ export declare function normalizeModel(model: string | null | undefined): string
129
163
  /** The rate for a model on a given day, or null when we have no list price.
130
164
  * `day` is `YYYY-MM-DD`; omit it to get the current (non-intro) rate. */
131
165
  export declare function rateFor(model: string | null | undefined, day?: string): Rate | null;
166
+ /** Rates read off Anthropic's own price page, overlaid on `PRICES`. */
167
+ export interface LivePrices {
168
+ /** Keyed by the canonical alias, like `PRICES`. Every rate carries `cacheRead`. */
169
+ rates: Record<string, Rate>;
170
+ /** Long-prompt cards the page states (Haiku 5.5 past 100K), overlaid on `LONG_PROMPT`. */
171
+ longPrompt?: Record<string, Rate & {
172
+ overTokens: number;
173
+ }>;
174
+ /** When the page was read, epoch ms. */
175
+ fetchedAt: number;
176
+ }
177
+ /**
178
+ * Put a parsed price list in front of the built-in table — or take it away
179
+ * (`null`). The HOST calls this (from its cached copy at boot, and after every
180
+ * good read); nothing in shared fetches. A model the page lists is priced by
181
+ * the page; one it does not list falls back to `PRICES`, then to null.
182
+ */
183
+ export declare function installPriceList(p: LivePrices | null): void;
184
+ /** Changes whenever the rates in force change — a cache key for priced money. */
185
+ export declare function priceGeneration(): number;
186
+ /** When the rates in force last changed, epoch ms; 0 when never this process. */
187
+ export declare function priceListChangedAt(): number;
188
+ /** The list installed now, or null — what the host hands the phone in `welcome`. */
189
+ export declare function installedPriceList(): LivePrices | null;
190
+ /** Where the rates in force came from — the two wire fields every cost document carries. */
191
+ export declare function priceListSource(): {
192
+ pricesAsOf: string;
193
+ pricesFrom: "list" | "builtin";
194
+ };
195
+ /**
196
+ * Where a dollar figure's rates came from, as one phrase every screen shares. `pricesFrom`
197
+ * absent (an older host) reads as the built-in table.
198
+ */
199
+ export declare function priceSourceText(doc: {
200
+ pricesAsOf: string;
201
+ pricesFrom?: "list" | "builtin";
202
+ }): string;
132
203
  /** Whether a model has a published list price at all. */
133
204
  export declare function isPriced(model: string | null | undefined): boolean;
134
205
  /** The counts one cost calculation needs. A subset of `TokenTotals`, spelled
@@ -163,6 +234,12 @@ export declare function addCost(a: CostBreakdown, b: CostBreakdown): CostBreakdo
163
234
  * usage it could not price and say so on screen.
164
235
  */
165
236
  export declare function costOf(t: Priceable, model: string | null | undefined, day?: string): CostBreakdown | null;
237
+ /**
238
+ * Price ONE request: `costOf` under `priceKeyOf`, so a Haiku 5.5 request with a
239
+ * prompt past 100K tokens pays the long card. Only for a single request's
240
+ * counts — a bucket goes through `costOf` with the key it was tallied under.
241
+ */
242
+ export declare function costOfRequest(t: Priceable, model: string | null | undefined, day?: string): CostBreakdown | null;
166
243
  /**
167
244
  * `$1,284.40` / `$4.21` / `$0.0031` / `$0`.
168
245
  *
@@ -68,13 +68,17 @@
68
68
  * them fell back to a token total beside priced siblings; Haiku 5.5 added
69
69
  * 2026-10-09 from the same skill's table and its migration notes — $0.10/
70
70
  * $0.50 at a prompt of 100K tokens or fewer, cache at the multipliers —
71
- * after 1.1M of its tokens sat unpriced in one week).
71
+ * after 1.1M of its tokens sat unpriced in one week; Fable 5.2 added and
72
+ * Sonnet 5.5's cache read corrected 2026-11-12 from the same table —
73
+ * Fable 5.2 $8/$40, cache read $0.20, after 3,241 of its log records sat
74
+ * unpriced; Sonnet 5.5 reads the cache at $0.10, not the rule's $0.20, so
75
+ * every Sonnet 5.5 session had been charged twice that line).
72
76
  * `PRICES_AS_OF` is carried to the UI so the screen can say how old the
73
77
  * table is rather than implying it is current.
74
78
  */
75
79
  /** When this table was taken. Shown, so a stale rate is visible rather than
76
80
  * silently authoritative. */
77
- export const PRICES_AS_OF = "2026-10-09";
81
+ export const PRICES_AS_OF = "2026-11-12";
78
82
  /** Multipliers on a model's INPUT rate. */
79
83
  export const CACHE_READ_MULT = 0.1;
80
84
  export const CACHE_WRITE_5M_MULT = 1.25;
@@ -87,16 +91,18 @@ export const CACHE_WRITE_1H_MULT = 2;
87
91
  * one of those would be priced wrongly here, which is why the screen calls this
88
92
  * a list-price estimate rather than a cost.
89
93
  *
90
- * The Mythos ids are the two the list does NOT price (they are not on the
91
- * public page at all). They are kept at their Fable twins' input/output rates,
92
- * which is what the model documentation states — but Fable 5.1's cache-read
93
- * discount is deliberately NOT extended to `claude-mythos-5-1`: that number is
94
- * unstated for it, and the 0.1× rule is the one that errs dear rather than
95
- * cheap.
94
+ * This is the BUILT-IN floor. A running host overlays the rates it reads off
95
+ * Anthropic's own price page (`pricelist.ts`, `installPriceList`), so a new
96
+ * model or a changed rate reaches an installation without a release; this
97
+ * table is what prices a desktop that has never read the page or is told not
98
+ * to (`WATERPLANE_PRICE_FETCH=0`). Every row here was checked against that
99
+ * page on 2026-11-12, Mythos and the retired models included.
96
100
  */
97
101
  export const PRICES = {
102
+ "claude-fable-5-2": { input: 8, output: 40, cacheRead: 0.2 },
103
+ "claude-mythos-5-2": { input: 8, output: 40, cacheRead: 0.2 },
98
104
  "claude-fable-5-1": { input: 10, output: 50, cacheRead: 0.25 },
99
- "claude-mythos-5-1": { input: 10, output: 50 },
105
+ "claude-mythos-5-1": { input: 10, output: 50, cacheRead: 0.25 },
100
106
  "claude-fable-5": { input: 10, output: 50 },
101
107
  "claude-mythos-5": { input: 10, output: 50 },
102
108
  "claude-opus-5-5": { input: 4, output: 20, cacheRead: 0.2 },
@@ -105,19 +111,62 @@ export const PRICES = {
105
111
  "claude-opus-4-7": { input: 5, output: 25 },
106
112
  "claude-opus-4-6": { input: 5, output: 25 },
107
113
  "claude-opus-4-5": { input: 5, output: 25 },
108
- "claude-sonnet-5-5": { input: 2, output: 10 },
114
+ // Retired on the Claude API, still in older logs.
115
+ "claude-opus-4-1": { input: 15, output: 75 },
116
+ "claude-opus-4": { input: 15, output: 75 },
117
+ "claude-sonnet-5-5": { input: 2, output: 10, cacheRead: 0.1 },
109
118
  "claude-sonnet-5": { input: 2, output: 10 },
110
119
  "claude-sonnet-4-6": { input: 3, output: 15 },
111
120
  "claude-sonnet-4-5": { input: 3, output: 15 },
112
- // Two published cards, chosen by PROMPT length: $0.10/$0.50 up to a 100K-token
113
- // prompt, $0.50/$2.50 above it. This table prices buckets, not requests, so
114
- // it carries the short card and a longer prompt is UNDER-priced (5×) — the
115
- // fast-mode stance, and measured 0 of 106 haiku-5-5 requests here past 100K
116
- // (2026-10-09). Splitting the long card out needs the scan to tally those
117
- // requests under their own key; until then this is the one known floor.
121
+ "claude-sonnet-4": { input: 3, output: 15 },
122
+ // Two published cards, chosen by PROMPT length: this is the card up to a
123
+ // 100K-token prompt; the dearer one is `LONG_PROMPT` below, charged to a
124
+ // request whose own prompt is past the line (`priceKeyOf`).
118
125
  "claude-haiku-5-5": { input: 0.1, output: 0.5 },
119
126
  "claude-haiku-4-5": { input: 1, output: 5 },
120
127
  };
128
+ /**
129
+ * A model's dearer card for LONG prompts, keyed by the canonical alias. The
130
+ * page prices Haiku 5.5 by prompt length: a request whose prompt (input plus
131
+ * cache reads plus cache writes) is over `overTokens` pays this card for ALL of
132
+ * its tokens, cache hits included, and each request is judged on its own.
133
+ *
134
+ * Built-in floor, like `PRICES`; the host overlays the page's own long cards
135
+ * (`LivePrices.longPrompt`). Checked against the page on 2026-11-12.
136
+ */
137
+ export const LONG_PROMPT = {
138
+ "claude-haiku-5-5": { input: 0.5, output: 2.5, cacheRead: 0.05, overTokens: 100_000 },
139
+ };
140
+ /** The mark a price key carries when its requests were over the long-prompt line. */
141
+ export const LONG_PROMPT_MARK = "@long";
142
+ const longCardOf = (base) => LIVE?.longPrompt?.[base] ?? LONG_PROMPT[base] ?? null;
143
+ /**
144
+ * The key ONE request prices under: its own model, or `<alias>@long` when the
145
+ * model has a long-prompt card and this request's prompt is past its line.
146
+ * Asked per request, never of a bucket — a bucket's sum says nothing about
147
+ * any one prompt's length. A model without a long card keeps its raw id.
148
+ */
149
+ export function priceKeyOf(model, t) {
150
+ if (!model)
151
+ return model ?? null;
152
+ const id = normalizeModel(model);
153
+ if (!id || id.endsWith(LONG_PROMPT_MARK))
154
+ return model;
155
+ const card = longCardOf(id);
156
+ return card && t.input + t.cacheRead + t.cacheWrite > card.overTokens ? id + LONG_PROMPT_MARK : model;
157
+ }
158
+ /** `claude-haiku-5-5@long` → ` (prompts over 100K)`; anything else → "". For labels. */
159
+ export function longPromptNote(id) {
160
+ if (!id.endsWith(LONG_PROMPT_MARK))
161
+ return "";
162
+ const card = longCardOf(id.slice(0, -LONG_PROMPT_MARK.length));
163
+ return card ? ` (prompts over ${Math.round(card.overTokens / 1000)}K)` : " (long prompts)";
164
+ }
165
+ /** A tallied model key as a row names it: the alias, plus the long-prompt note when it has the mark. */
166
+ export function priceKeyLabel(key) {
167
+ const id = normalizeModel(key) ?? key;
168
+ return id.endsWith(LONG_PROMPT_MARK) ? id.slice(0, -LONG_PROMPT_MARK.length) + longPromptNote(id) : id;
169
+ }
121
170
  /**
122
171
  * The alias a logged model id prices under, or null when it is not one of ours.
123
172
  *
@@ -133,9 +182,13 @@ export function normalizeModel(model) {
133
182
  let id = model.trim().toLowerCase();
134
183
  if (!id || !id.startsWith("claude-"))
135
184
  return null;
185
+ // A price key for long-prompt requests (`priceKeyOf`) keeps its mark.
186
+ const long = id.endsWith(LONG_PROMPT_MARK);
187
+ if (long)
188
+ id = id.slice(0, -LONG_PROMPT_MARK.length);
136
189
  id = id.replace(/(\[1m\]|-1m)$/, ""); // context variant, same price
137
190
  id = id.replace(/-\d{8}$/, ""); // dated snapshot → alias
138
- return id;
191
+ return long ? id + LONG_PROMPT_MARK : id;
139
192
  }
140
193
  /** The rate for a model on a given day, or null when we have no list price.
141
194
  * `day` is `YYYY-MM-DD`; omit it to get the current (non-intro) rate. */
@@ -143,12 +196,22 @@ export function rateFor(model, day) {
143
196
  const id = normalizeModel(model);
144
197
  if (!id)
145
198
  return null;
199
+ if (id.endsWith(LONG_PROMPT_MARK)) {
200
+ // A long-prompt request: the long card, or — when no list states one any
201
+ // more — the model's own rate (the page dropping the card means one price).
202
+ const base = id.slice(0, -LONG_PROMPT_MARK.length);
203
+ const card = longCardOf(base);
204
+ return card ? { input: card.input, output: card.output, cacheRead: card.cacheRead ?? card.input * CACHE_READ_MULT } : rateFor(base, day);
205
+ }
146
206
  const p = PRICES[id];
147
- if (!p)
148
- return null;
207
+ const live = LIVE?.rates[id];
149
208
  // Lexicographic compare is correct for `YYYY-MM-DD` and needs no parsing —
150
209
  // and no zone, which matters because the day buckets are already local.
151
- const r = p.intro && day && day <= p.intro.until ? p.intro : p;
210
+ // A built-in introductory rate still wins on its own days: the page states
211
+ // TODAY's price, and an intro is a statement about earlier ones.
212
+ const r = p?.intro && day && day <= p.intro.until ? p.intro : live ?? p;
213
+ if (!r)
214
+ return null;
152
215
  // Spread out by hand rather than returned whole: `intro` must not ride along
153
216
  // on a rate, and an absent `cacheRead` has to stay ABSENT (the multiplier),
154
217
  // never an explicit `undefined` a caller's `??` would read past and a
@@ -157,6 +220,55 @@ export function rateFor(model, day) {
157
220
  ? { input: r.input, output: r.output, cacheRead: r.cacheRead }
158
221
  : { input: r.input, output: r.output };
159
222
  }
223
+ let LIVE = null;
224
+ /** Bumped whenever the rates in force CHANGE (not on a re-read that found the
225
+ * same rates), so a host cache holding money priced at the old rates can tell
226
+ * it is stale and re-price from its tokens. */
227
+ let GEN = 0;
228
+ let GEN_AT = 0;
229
+ const sorted = (o) => Object.entries(o ?? {}).sort(([a], [b]) => (a < b ? -1 : 1));
230
+ const ratesKey = (p) => (p ? JSON.stringify([sorted(p.rates), sorted(p.longPrompt)]) : "");
231
+ /**
232
+ * Put a parsed price list in front of the built-in table — or take it away
233
+ * (`null`). The HOST calls this (from its cached copy at boot, and after every
234
+ * good read); nothing in shared fetches. A model the page lists is priced by
235
+ * the page; one it does not list falls back to `PRICES`, then to null.
236
+ */
237
+ export function installPriceList(p) {
238
+ const next = p && Object.keys(p.rates).length ? p : null;
239
+ if (ratesKey(next) !== ratesKey(LIVE)) {
240
+ GEN++;
241
+ GEN_AT = Date.now();
242
+ }
243
+ LIVE = next;
244
+ }
245
+ /** Changes whenever the rates in force change — a cache key for priced money. */
246
+ export function priceGeneration() {
247
+ return GEN;
248
+ }
249
+ /** When the rates in force last changed, epoch ms; 0 when never this process. */
250
+ export function priceListChangedAt() {
251
+ return GEN_AT;
252
+ }
253
+ /** The list installed now, or null — what the host hands the phone in `welcome`. */
254
+ export function installedPriceList() {
255
+ return LIVE;
256
+ }
257
+ /** Where the rates in force came from — the two wire fields every cost document carries. */
258
+ export function priceListSource() {
259
+ if (!LIVE)
260
+ return { pricesAsOf: PRICES_AS_OF, pricesFrom: "builtin" };
261
+ return { pricesAsOf: new Date(LIVE.fetchedAt).toISOString().slice(0, 10), pricesFrom: "list" };
262
+ }
263
+ /**
264
+ * Where a dollar figure's rates came from, as one phrase every screen shares. `pricesFrom`
265
+ * absent (an older host) reads as the built-in table.
266
+ */
267
+ export function priceSourceText(doc) {
268
+ return doc.pricesFrom === "list"
269
+ ? `Anthropic's price list, read ${doc.pricesAsOf}`
270
+ : `built-in price table from ${doc.pricesAsOf}`;
271
+ }
160
272
  /** Whether a model has a published list price at all. */
161
273
  export function isPriced(model) {
162
274
  return rateFor(model) != null;
@@ -203,6 +315,14 @@ export function costOf(t, model, day) {
203
315
  cost.total = cost.input + cost.output + cost.cacheRead + cost.cacheWrite;
204
316
  return cost;
205
317
  }
318
+ /**
319
+ * Price ONE request: `costOf` under `priceKeyOf`, so a Haiku 5.5 request with a
320
+ * prompt past 100K tokens pays the long card. Only for a single request's
321
+ * counts — a bucket goes through `costOf` with the key it was tallied under.
322
+ */
323
+ export function costOfRequest(t, model, day) {
324
+ return costOf(t, priceKeyOf(model, t), day);
325
+ }
206
326
  /**
207
327
  * `$1,284.40` / `$4.21` / `$0.0031` / `$0`.
208
328
  *
@@ -1 +1 @@
1
- {"version":3,"file":"pricing.js","sourceRoot":"","sources":["../src/pricing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pricing.js","sourceRoot":"","sources":["../src/pricing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { BlockFacts } from "../block.js";
2
+ import type { SessionInfo } from "../wire/session.js";
3
+ import type { LaneSessionState } from "./queuelane.js";
4
+ /** The `SessionInfo` fields the lane reads — a `SessionInfo`, or anything shaped like its slice. */
5
+ export type LaneSource = BlockFacts & Pick<SessionInfo, "turnActive" | "awaitingInput" | "prompt">;
6
+ export interface LaneStateOpts {
7
+ /**
8
+ * Does delivery answer this session's backend's folder-trust box itself? `false` makes a trust
9
+ * box a wall; `true` or absent leaves it auto-accepted (today's behaviour — a phone whose
10
+ * backend list has not arrived says nothing). It only ever matters while a trust box is up.
11
+ */
12
+ autoAcceptsTrust?: boolean;
13
+ }
14
+ export declare function laneStateOf(s: LaneSource, opts?: LaneStateOpts): LaneSessionState;
@@ -0,0 +1,25 @@
1
+ // The ONE mapping from a session's wire record onto `LaneSessionState`.
2
+ //
3
+ // It was written twice — the phone's `laneStateOf` and an object literal in the host's
4
+ // `intentDeps.sessions` — each warning that handing `sessionWall` a raw `SessionInfo`
5
+ // "type-checks and quietly answers not busy". Every field is optional there and ABSENT reads as
6
+ // free, so a field one side forgot was a prompt typed into a question box (62fbb382 trust,
7
+ // 0b84920e auth/net, 181980cb). Both sides now call this; a `LaneSessionState` object literal
8
+ // anywhere else is refused by `tools/lanestate.test.mjs`.
9
+ //
10
+ // What only ONE side knows stays with that side: the host layers its unhooked-session silence
11
+ // guess over `turnActive` and its own serial facts (`automatic`, `asking`, `netStalled`, name)
12
+ // on top of this result; the phone and the host each decide `autoAcceptsTrust` from their own
13
+ // backend knowledge (`BackendInfo.caps` / the descriptor) and say it in `opts`.
14
+ import { blockWallOf } from "../block.js";
15
+ export function laneStateOf(s, opts = {}) {
16
+ return {
17
+ turnActive: s.turnActive, limitBlocked: s.limit?.blocked, promptKind: s.prompt?.kind,
18
+ awaitingInput: s.awaitingInput,
19
+ // Signed out, or the host's net retry holds it — `blockWallOf`, never `blockOf`'s kind: a
20
+ // net give-up with nothing more scheduled and first-launch setup alone are badges, not walls.
21
+ block: blockWallOf(s),
22
+ ...(s.prompt?.kind === "trust" && opts.autoAcceptsTrust === false ? { trustAutoAccepted: false } : {}),
23
+ };
24
+ }
25
+ //# sourceMappingURL=queuelanestate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queuelanestate.js","sourceRoot":"","sources":["../../src/queue/queuelanestate.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,EAAE;AACF,uFAAuF;AACvF,sFAAsF;AACtF,gGAAgG;AAChG,2FAA2F;AAC3F,8FAA8F;AAC9F,0DAA0D;AAC1D,EAAE;AACF,8FAA8F;AAC9F,+FAA+F;AAC/F,8FAA8F;AAC9F,gFAAgF;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAiB1C,MAAM,UAAU,WAAW,CAAC,CAAa,EAAE,OAAsB,EAAE;IACjE,OAAO;QACL,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI;QACpF,aAAa,EAAE,CAAC,CAAC,aAAa;QAC9B,0FAA0F;QAC1F,8FAA8F;QAC9F,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC;QACrB,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,gBAAgB,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACvG,CAAC;AACJ,CAAC"}
@@ -112,6 +112,10 @@ export type SendBlockReason =
112
112
  /** The session this lane names no longer exists. Terminal: nothing but a
113
113
  * re-aim (or a rewrite) will ever get this delivered. */
114
114
  | "sessionGone"
115
+ /** The text names an inbox file whose upload FAILED, so the path will never
116
+ * resolve. Held, not sent: retrying that upload (or re-attaching the
117
+ * picture and rewriting the row) is what lets it go. */
118
+ | "uploadFailed"
115
119
  /** The user's own switches (auto-send off / reconnect hold). Not decided here
116
120
  * — `sendEligible` answers it, and the caller appends these. */
117
121
  | "gate";
@@ -21,6 +21,10 @@ export function selectSendable(entries, opts) {
21
21
  // Lanes held by an entry that is already on the wire (a `pending` one whose
22
22
  // receipt hasn't landed, or one this pass has just picked).
23
23
  const busy = new Set();
24
+ // Inbox paths whose upload is `failed` — see the `uploadFailed` block below.
25
+ const deadUploads = entries
26
+ .filter((e) => e.mode === "upload" && e.status === "failed" && e.upload)
27
+ .map((e) => e.upload.relPath);
24
28
  for (const e of entries) {
25
29
  if (e.status === "pending" || inflight.has(e.ackId)) {
26
30
  busy.add(e.sessionId);
@@ -41,6 +45,15 @@ export function selectSendable(entries, opts) {
41
45
  block(e, "inflight");
42
46
  continue;
43
47
  } // already out; its lane is marked busy
48
+ // A prompt naming a picture whose upload has FAILED. Sending it hands the
49
+ // agent a path that will never resolve while the phone reports success —
50
+ // and a failed upload no longer holds the lane, so nothing else stops it.
51
+ // It holds its lane in turn: what was queued after it was written after it.
52
+ if (e.mode !== "upload" && deadUploads.length && deadUploads.some((p) => e.text?.includes(p))) {
53
+ busy.add(e.sessionId);
54
+ block(e, "uploadFailed");
55
+ continue;
56
+ }
44
57
  // Parked until the agent finishes this turn. Two consequences while it
45
58
  // waits, both deliberate: the entry HOLDS its lane (anything queued behind
46
59
  // it is meant to arrive after it, not overtake it), and it is exempt from
@@ -117,6 +130,14 @@ export function selectSendable(entries, opts) {
117
130
  const tryingFor = e.firstTryAt == null ? Infinity : opts.now - e.firstTryAt;
118
131
  if ((e.attempts ?? 0) >= opts.maxAttempts && tryingFor >= (opts.minTryMs ?? 0)) {
119
132
  expire.push({ ackId: e.ackId, reason: "delivery kept failing" });
133
+ // It HOLDS its lane on this pass too. An expired entry is not dropped: the
134
+ // caller parks it on a round backoff (`nextRound`), which holds the lane
135
+ // from the next pass on — but on THIS pass it fell through with the lane
136
+ // free, and whatever was queued behind it went out. Behind an upload
137
+ // that is the prompt naming the picture: Send & run typed a path whose
138
+ // bytes were still on their way (2026-11-11, the collage landed 53 s
139
+ // after the agent had been told to read it).
140
+ busy.add(e.sessionId);
120
141
  continue;
121
142
  }
122
143
  // Past the usage ceiling the account is under, and one at a time in this
@@ -1 +1 @@
1
- {"version":3,"file":"queueplan.js","sourceRoot":"","sources":["../../src/queue/queueplan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"queueplan.js","sourceRoot":"","sources":["../../src/queue/queueplan.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,7 @@ export function blockedReasonText(r) {
13
13
  // two chances for one of them to keep saying the old thing.
14
14
  case "sessionBudget": return "held — this session is over its own budget; raise or clear it to send";
15
15
  case "sessionGone": return "that session is gone — aim it at another session or at the repo's backlog";
16
+ case "uploadFailed": return "the picture it names never uploaded — retry that upload, or re-attach it and rewrite this message";
16
17
  case "gate": return "queued — auto-send is off, tap Send now";
17
18
  case "backoff": return "a send just failed — retrying in a moment";
18
19
  case "held": return "held until the agent finishes this turn";
@@ -45,7 +46,7 @@ export function queueIdleReason(blocked, opts) {
45
46
  // so when it is true it is the answer for every row at once.
46
47
  // `sessionGone` sits above the three self-resolving waits: it is the only
47
48
  // reason here that never clears on its own.
48
- const order = ["gate", "budget", "sessionBudget", "sessionGone", "backoff", "serial", "held", "pendingCreate", "lane", "inflight"];
49
+ const order = ["gate", "budget", "sessionBudget", "sessionGone", "uploadFailed", "backoff", "serial", "held", "pendingCreate", "lane", "inflight"];
49
50
  // `serialText` is the caller's NAMED serial sentence (`serialWaitText`), when
50
51
  // it could say who holds the repo; the generic line otherwise.
51
52
  for (const r of order)
@@ -1 +1 @@
1
- {"version":3,"file":"queuewords.js","sourceRoot":"","sources":["../../src/queue/queuewords.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,+FAA+F;AAG/F,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD;kDACkD;AAClD,MAAM,UAAU,iBAAiB,CAAC,CAAkB;IAClD,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,CAAC;QACV,KAAK,QAAQ,CAAC,CAAC,OAAO,mFAAmF,CAAC;QAC1G,sEAAsE;QACtE,0EAA0E;QAC1E,0EAA0E;QAC1E,4DAA4D;QAC5D,KAAK,eAAe,CAAC,CAAC,OAAO,uEAAuE,CAAC;QACrG,KAAK,aAAa,CAAC,CAAC,OAAO,2EAA2E,CAAC;QACvG,KAAK,MAAM,CAAC,CAAC,OAAO,yCAAyC,CAAC;QAC9D,KAAK,SAAS,CAAC,CAAC,OAAO,2CAA2C,CAAC;QACnE,KAAK,MAAM,CAAC,CAAC,OAAO,yCAAyC,CAAC;QAC9D,KAAK,QAAQ,CAAC,CAAC,OAAO,gBAAgB,CAAC;QACvC,KAAK,eAAe,CAAC,CAAC,OAAO,iCAAiC,CAAC;QAC/D,KAAK,MAAM,CAAC,CAAC,OAAO,qDAAqD,CAAC;QAC1E,KAAK,UAAU,CAAC,CAAC,OAAO,kDAAkD,CAAC;IAC7E,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,eAAe,CAC7B,OAAgC,EAChC,IAA8D;IAE9D,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,OAAO,gCAAgC,CAAC;IAC1D,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACjD,yEAAyE;IACzE,+EAA+E;IAC/E,6DAA6D;IAC7D,0EAA0E;IAC1E,4CAA4C;IAC5C,MAAM,KAAK,GAAsB,CAAC,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IACtJ,8EAA8E;IAC9E,+DAA+D;IAC/D,KAAK,MAAM,CAAC,IAAI,KAAK;QAAE,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;YAAE,OAAO,CAAC,KAAK,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAClJ,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"queuewords.js","sourceRoot":"","sources":["../../src/queue/queuewords.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,+FAA+F;AAG/F,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD;kDACkD;AAClD,MAAM,UAAU,iBAAiB,CAAC,CAAkB;IAClD,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,CAAC;QACV,KAAK,QAAQ,CAAC,CAAC,OAAO,mFAAmF,CAAC;QAC1G,sEAAsE;QACtE,0EAA0E;QAC1E,0EAA0E;QAC1E,4DAA4D;QAC5D,KAAK,eAAe,CAAC,CAAC,OAAO,uEAAuE,CAAC;QACrG,KAAK,aAAa,CAAC,CAAC,OAAO,2EAA2E,CAAC;QACvG,KAAK,cAAc,CAAC,CAAC,OAAO,mGAAmG,CAAC;QAChI,KAAK,MAAM,CAAC,CAAC,OAAO,yCAAyC,CAAC;QAC9D,KAAK,SAAS,CAAC,CAAC,OAAO,2CAA2C,CAAC;QACnE,KAAK,MAAM,CAAC,CAAC,OAAO,yCAAyC,CAAC;QAC9D,KAAK,QAAQ,CAAC,CAAC,OAAO,gBAAgB,CAAC;QACvC,KAAK,eAAe,CAAC,CAAC,OAAO,iCAAiC,CAAC;QAC/D,KAAK,MAAM,CAAC,CAAC,OAAO,qDAAqD,CAAC;QAC1E,KAAK,UAAU,CAAC,CAAC,OAAO,kDAAkD,CAAC;IAC7E,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,eAAe,CAC7B,OAAgC,EAChC,IAA8D;IAE9D,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,OAAO,gCAAgC,CAAC;IAC1D,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACjD,yEAAyE;IACzE,+EAA+E;IAC/E,6DAA6D;IAC7D,0EAA0E;IAC1E,4CAA4C;IAC5C,MAAM,KAAK,GAAsB,CAAC,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IACtK,8EAA8E;IAC9E,+DAA+D;IAC/D,KAAK,MAAM,CAAC,IAAI,KAAK;QAAE,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;YAAE,OAAO,CAAC,KAAK,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAClJ,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -3,6 +3,8 @@ export { RETRY_BACKOFF_MS, RETRY_BACKOFF_MAX_MS, retryDelay, MIN_TRY_MS, RETRY_R
3
3
  export { adoptReferencedUploads, danglingUploadRefs, answerInsertAt, } from "./queue/queueuploads.js";
4
4
  export { laneBusy, sessionWall, } from "./queue/queuelane.js";
5
5
  export type { LaneSessionState, SessionWall, } from "./queue/queuelane.js";
6
+ export { laneStateOf } from "./queue/queuelanestate.js";
7
+ export type { LaneSource, LaneStateOpts } from "./queue/queuelanestate.js";
6
8
  export { selectSendable, } from "./queue/queueplan.js";
7
9
  export type { SelectSendableOpts, SendBlockReason, BlockedEntry, SendPlan, } from "./queue/queueplan.js";
8
10
  export { bindPendingSession, ownedPendingCreates, applyRelease, } from "./queue/queuebind.js";
@@ -36,6 +36,7 @@
36
36
  export { RETRY_BACKOFF_MS, RETRY_BACKOFF_MAX_MS, retryDelay, MIN_TRY_MS, RETRY_ROUND_MS, RETRY_ROUND_MAX_MS, roundDelay, uploadAttemptWasted, } from "./queue/queueretry.js";
37
37
  export { adoptReferencedUploads, danglingUploadRefs, answerInsertAt, } from "./queue/queueuploads.js";
38
38
  export { laneBusy, sessionWall, } from "./queue/queuelane.js";
39
+ export { laneStateOf } from "./queue/queuelanestate.js";
39
40
  export { selectSendable, } from "./queue/queueplan.js";
40
41
  export { bindPendingSession, ownedPendingCreates, applyRelease, } from "./queue/queuebind.js";
41
42
  export { serialGroup, SERIAL_STARTUP_MS, busySerialGroups, sendEligible, serialHolders, serialLead, serialWaitText, SERIAL_WAIT_TEXT, } from "./queue/queueserial.js";
@@ -1 +1 @@
1
- {"version":3,"file":"queue.js","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,EAAE;AACF,6EAA6E;AAC7E,gFAAgF;AAChF,6EAA6E;AAC7E,4EAA4E;AAC5E,EAAE;AACF,0EAA0E;AAC1E,6EAA6E;AAC7E,gFAAgF;AAChF,+EAA+E;AAC/E,8EAA8E;AAC9E,2EAA2E;AAC3E,8EAA8E;AAC9E,2EAA2E;AAC3E,iDAAiD;AACjD,EAAE;AACF,4EAA4E;AAC5E,kDAAkD;AAClD,EAAE;AACF,4CAA4C;AAC5C,2EAA2E;AAC3E,+EAA+E;AAC/E,yEAAyE;AACzE,2EAA2E;AAC3E,gFAAgF;AAChF,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,4EAA4E;AAC5E,4EAA4E;AAC5E,+EAA+E;AAC/E,4EAA4E;AAC5E,yEAAyE;AACzE,4CAA4C;AAU5C,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,UAAU,EACV,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,UAAU,EACV,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,cAAc,GACf,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,QAAQ,EACR,WAAW,GACZ,MAAM,sBAAsB,CAAC;AAK9B,OAAO,EACL,cAAc,GACf,MAAM,sBAAsB,CAAC;AAO9B,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,GACb,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB,GAC1E,MAAM,wBAAwB,CAAC;AAKhC,OAAO,EACL,iBAAiB,EACjB,eAAe,GAChB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,WAAW,EACX,WAAW,EACX,aAAa,EACb,UAAU,GACX,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"queue.js","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,EAAE;AACF,6EAA6E;AAC7E,gFAAgF;AAChF,6EAA6E;AAC7E,4EAA4E;AAC5E,EAAE;AACF,0EAA0E;AAC1E,6EAA6E;AAC7E,gFAAgF;AAChF,+EAA+E;AAC/E,8EAA8E;AAC9E,2EAA2E;AAC3E,8EAA8E;AAC9E,2EAA2E;AAC3E,iDAAiD;AACjD,EAAE;AACF,4EAA4E;AAC5E,kDAAkD;AAClD,EAAE;AACF,4CAA4C;AAC5C,2EAA2E;AAC3E,+EAA+E;AAC/E,yEAAyE;AACzE,2EAA2E;AAC3E,gFAAgF;AAChF,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,4EAA4E;AAC5E,4EAA4E;AAC5E,+EAA+E;AAC/E,4EAA4E;AAC5E,yEAAyE;AACzE,4CAA4C;AAU5C,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,UAAU,EACV,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,UAAU,EACV,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,cAAc,GACf,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,QAAQ,EACR,WAAW,GACZ,MAAM,sBAAsB,CAAC;AAK9B,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,OAAO,EACL,cAAc,GACf,MAAM,sBAAsB,CAAC;AAO9B,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,GACb,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB,GAC1E,MAAM,wBAAwB,CAAC;AAKhC,OAAO,EACL,iBAAiB,EACjB,eAAe,GAChB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,WAAW,EACX,WAAW,EACX,aAAa,EACb,UAAU,GACX,MAAM,0BAA0B,CAAC"}