waterplane 0.0.1 → 0.1.6

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 (1641) hide show
  1. package/CHANGELOG.md +1172 -0
  2. package/DISCLAIMER.md +113 -0
  3. package/LICENSE +21 -0
  4. package/NOTICES.md +78 -0
  5. package/README.md +392 -4
  6. package/SECURITY.md +388 -0
  7. package/bin/waterplane.mjs +5 -0
  8. package/deploy/gh-version +1 -0
  9. package/deploy/node-version +1 -0
  10. package/node_modules/@waterplane/shared/dist/agentfiles.d.ts +118 -0
  11. package/node_modules/@waterplane/shared/dist/agentfiles.js +345 -0
  12. package/node_modules/@waterplane/shared/dist/agentfiles.js.map +1 -0
  13. package/node_modules/@waterplane/shared/dist/artifacts.d.ts +213 -0
  14. package/node_modules/@waterplane/shared/dist/artifacts.js +295 -0
  15. package/node_modules/@waterplane/shared/dist/artifacts.js.map +1 -0
  16. package/node_modules/@waterplane/shared/dist/askrules.d.ts +95 -0
  17. package/node_modules/@waterplane/shared/dist/askrules.js +133 -0
  18. package/node_modules/@waterplane/shared/dist/askrules.js.map +1 -0
  19. package/node_modules/@waterplane/shared/dist/assess/sassapply.d.ts +191 -0
  20. package/node_modules/@waterplane/shared/dist/assess/sassapply.js +152 -0
  21. package/node_modules/@waterplane/shared/dist/assess/sassapply.js.map +1 -0
  22. package/node_modules/@waterplane/shared/dist/assess/sassclean.d.ts +21 -0
  23. package/node_modules/@waterplane/shared/dist/assess/sassclean.js +453 -0
  24. package/node_modules/@waterplane/shared/dist/assess/sassclean.js.map +1 -0
  25. package/node_modules/@waterplane/shared/dist/assess/sassio.d.ts +257 -0
  26. package/node_modules/@waterplane/shared/dist/assess/sassio.js +2 -0
  27. package/node_modules/@waterplane/shared/dist/assess/sassio.js.map +1 -0
  28. package/node_modules/@waterplane/shared/dist/assess/sassslot.d.ts +19 -0
  29. package/node_modules/@waterplane/shared/dist/assess/sassslot.js +136 -0
  30. package/node_modules/@waterplane/shared/dist/assess/sassslot.js.map +1 -0
  31. package/node_modules/@waterplane/shared/dist/assess/sassvocab.d.ts +115 -0
  32. package/node_modules/@waterplane/shared/dist/assess/sassvocab.js +98 -0
  33. package/node_modules/@waterplane/shared/dist/assess/sassvocab.js.map +1 -0
  34. package/node_modules/@waterplane/shared/dist/assess/sasswords.d.ts +140 -0
  35. package/node_modules/@waterplane/shared/dist/assess/sasswords.js +155 -0
  36. package/node_modules/@waterplane/shared/dist/assess/sasswords.js.map +1 -0
  37. package/node_modules/@waterplane/shared/dist/assess.d.ts +58 -0
  38. package/node_modules/@waterplane/shared/dist/assess.js +55 -0
  39. package/node_modules/@waterplane/shared/dist/assess.js.map +1 -0
  40. package/node_modules/@waterplane/shared/dist/attach.d.ts +118 -0
  41. package/node_modules/@waterplane/shared/dist/attach.js +85 -0
  42. package/node_modules/@waterplane/shared/dist/attach.js.map +1 -0
  43. package/node_modules/@waterplane/shared/dist/autocompact.d.ts +125 -0
  44. package/node_modules/@waterplane/shared/dist/autocompact.js +226 -0
  45. package/node_modules/@waterplane/shared/dist/autocompact.js.map +1 -0
  46. package/node_modules/@waterplane/shared/dist/backendsources.d.ts +399 -0
  47. package/node_modules/@waterplane/shared/dist/backendsources.js +3 -0
  48. package/node_modules/@waterplane/shared/dist/backendsources.js.map +1 -0
  49. package/node_modules/@waterplane/shared/dist/billing.d.ts +48 -0
  50. package/node_modules/@waterplane/shared/dist/billing.js +64 -0
  51. package/node_modules/@waterplane/shared/dist/billing.js.map +1 -0
  52. package/node_modules/@waterplane/shared/dist/bindconv.d.ts +47 -0
  53. package/node_modules/@waterplane/shared/dist/bindconv.js +35 -0
  54. package/node_modules/@waterplane/shared/dist/bindconv.js.map +1 -0
  55. package/node_modules/@waterplane/shared/dist/bookmark.d.ts +26 -0
  56. package/node_modules/@waterplane/shared/dist/bookmark.js +40 -0
  57. package/node_modules/@waterplane/shared/dist/bookmark.js.map +1 -0
  58. package/node_modules/@waterplane/shared/dist/brand.d.ts +94 -0
  59. package/node_modules/@waterplane/shared/dist/brand.js +88 -0
  60. package/node_modules/@waterplane/shared/dist/brand.js.map +1 -0
  61. package/node_modules/@waterplane/shared/dist/brandmigrate.d.ts +30 -0
  62. package/node_modules/@waterplane/shared/dist/brandmigrate.js +67 -0
  63. package/node_modules/@waterplane/shared/dist/brandmigrate.js.map +1 -0
  64. package/node_modules/@waterplane/shared/dist/budget.d.ts +247 -0
  65. package/node_modules/@waterplane/shared/dist/budget.js +295 -0
  66. package/node_modules/@waterplane/shared/dist/budget.js.map +1 -0
  67. package/node_modules/@waterplane/shared/dist/buildparams.d.ts +146 -0
  68. package/node_modules/@waterplane/shared/dist/buildparams.js +260 -0
  69. package/node_modules/@waterplane/shared/dist/buildparams.js.map +1 -0
  70. package/node_modules/@waterplane/shared/dist/buildscan.d.ts +99 -0
  71. package/node_modules/@waterplane/shared/dist/buildscan.js +334 -0
  72. package/node_modules/@waterplane/shared/dist/buildscan.js.map +1 -0
  73. package/node_modules/@waterplane/shared/dist/burn.d.ts +137 -0
  74. package/node_modules/@waterplane/shared/dist/burn.js +176 -0
  75. package/node_modules/@waterplane/shared/dist/burn.js.map +1 -0
  76. package/node_modules/@waterplane/shared/dist/chord.d.ts +39 -0
  77. package/node_modules/@waterplane/shared/dist/chord.js +102 -0
  78. package/node_modules/@waterplane/shared/dist/chord.js.map +1 -0
  79. package/node_modules/@waterplane/shared/dist/claudeconfig.d.ts +18 -0
  80. package/node_modules/@waterplane/shared/dist/claudeconfig.js +44 -0
  81. package/node_modules/@waterplane/shared/dist/claudeconfig.js.map +1 -0
  82. package/node_modules/@waterplane/shared/dist/claudeversion.d.ts +17 -0
  83. package/node_modules/@waterplane/shared/dist/claudeversion.js +31 -0
  84. package/node_modules/@waterplane/shared/dist/claudeversion.js.map +1 -0
  85. package/node_modules/@waterplane/shared/dist/clientframe.d.ts +12 -0
  86. package/node_modules/@waterplane/shared/dist/clientframe.js +15 -0
  87. package/node_modules/@waterplane/shared/dist/clientframe.js.map +1 -0
  88. package/node_modules/@waterplane/shared/dist/clihealth/healthcatalog.d.ts +52 -0
  89. package/node_modules/@waterplane/shared/dist/clihealth/healthcatalog.js +137 -0
  90. package/node_modules/@waterplane/shared/dist/clihealth/healthcatalog.js.map +1 -0
  91. package/node_modules/@waterplane/shared/dist/clihealth/healthfixture.d.ts +58 -0
  92. package/node_modules/@waterplane/shared/dist/clihealth/healthfixture.js +189 -0
  93. package/node_modules/@waterplane/shared/dist/clihealth/healthfixture.js.map +1 -0
  94. package/node_modules/@waterplane/shared/dist/clihealth/healthrecord.d.ts +254 -0
  95. package/node_modules/@waterplane/shared/dist/clihealth/healthrecord.js +367 -0
  96. package/node_modules/@waterplane/shared/dist/clihealth/healthrecord.js.map +1 -0
  97. package/node_modules/@waterplane/shared/dist/clihealth/healthrollup.d.ts +36 -0
  98. package/node_modules/@waterplane/shared/dist/clihealth/healthrollup.js +123 -0
  99. package/node_modules/@waterplane/shared/dist/clihealth/healthrollup.js.map +1 -0
  100. package/node_modules/@waterplane/shared/dist/clihealth/healththresholds.d.ts +101 -0
  101. package/node_modules/@waterplane/shared/dist/clihealth/healththresholds.js +103 -0
  102. package/node_modules/@waterplane/shared/dist/clihealth/healththresholds.js.map +1 -0
  103. package/node_modules/@waterplane/shared/dist/clihealth.d.ts +64 -0
  104. package/node_modules/@waterplane/shared/dist/clihealth.js +69 -0
  105. package/node_modules/@waterplane/shared/dist/clihealth.js.map +1 -0
  106. package/node_modules/@waterplane/shared/dist/clirestart.d.ts +66 -0
  107. package/node_modules/@waterplane/shared/dist/clirestart.js +82 -0
  108. package/node_modules/@waterplane/shared/dist/clirestart.js.map +1 -0
  109. package/node_modules/@waterplane/shared/dist/closed.d.ts +41 -0
  110. package/node_modules/@waterplane/shared/dist/closed.js +102 -0
  111. package/node_modules/@waterplane/shared/dist/closed.js.map +1 -0
  112. package/node_modules/@waterplane/shared/dist/collage.d.ts +132 -0
  113. package/node_modules/@waterplane/shared/dist/collage.js +198 -0
  114. package/node_modules/@waterplane/shared/dist/collage.js.map +1 -0
  115. package/node_modules/@waterplane/shared/dist/contextweight.d.ts +169 -0
  116. package/node_modules/@waterplane/shared/dist/contextweight.js +247 -0
  117. package/node_modules/@waterplane/shared/dist/contextweight.js.map +1 -0
  118. package/node_modules/@waterplane/shared/dist/costwindow.d.ts +216 -0
  119. package/node_modules/@waterplane/shared/dist/costwindow.js +430 -0
  120. package/node_modules/@waterplane/shared/dist/costwindow.js.map +1 -0
  121. package/node_modules/@waterplane/shared/dist/ctxwindow.d.ts +92 -0
  122. package/node_modules/@waterplane/shared/dist/ctxwindow.js +107 -0
  123. package/node_modules/@waterplane/shared/dist/ctxwindow.js.map +1 -0
  124. package/node_modules/@waterplane/shared/dist/deskstorage.d.ts +170 -0
  125. package/node_modules/@waterplane/shared/dist/deskstorage.js +140 -0
  126. package/node_modules/@waterplane/shared/dist/deskstorage.js.map +1 -0
  127. package/node_modules/@waterplane/shared/dist/devices.d.ts +52 -0
  128. package/node_modules/@waterplane/shared/dist/devices.js +53 -0
  129. package/node_modules/@waterplane/shared/dist/devices.js.map +1 -0
  130. package/node_modules/@waterplane/shared/dist/dictate.d.ts +178 -0
  131. package/node_modules/@waterplane/shared/dist/dictate.js +345 -0
  132. package/node_modules/@waterplane/shared/dist/dictate.js.map +1 -0
  133. package/node_modules/@waterplane/shared/dist/dictateterms.d.ts +91 -0
  134. package/node_modules/@waterplane/shared/dist/dictateterms.js +180 -0
  135. package/node_modules/@waterplane/shared/dist/dictateterms.js.map +1 -0
  136. package/node_modules/@waterplane/shared/dist/envresolve.d.ts +30 -0
  137. package/node_modules/@waterplane/shared/dist/envresolve.js +76 -0
  138. package/node_modules/@waterplane/shared/dist/envresolve.js.map +1 -0
  139. package/node_modules/@waterplane/shared/dist/fanoutruns.d.ts +25 -0
  140. package/node_modules/@waterplane/shared/dist/fanoutruns.js +88 -0
  141. package/node_modules/@waterplane/shared/dist/fanoutruns.js.map +1 -0
  142. package/node_modules/@waterplane/shared/dist/followup.d.ts +38 -0
  143. package/node_modules/@waterplane/shared/dist/followup.js +68 -0
  144. package/node_modules/@waterplane/shared/dist/followup.js.map +1 -0
  145. package/node_modules/@waterplane/shared/dist/gallery.d.ts +83 -0
  146. package/node_modules/@waterplane/shared/dist/gallery.js +94 -0
  147. package/node_modules/@waterplane/shared/dist/gallery.js.map +1 -0
  148. package/node_modules/@waterplane/shared/dist/halt.d.ts +46 -0
  149. package/node_modules/@waterplane/shared/dist/halt.js +34 -0
  150. package/node_modules/@waterplane/shared/dist/halt.js.map +1 -0
  151. package/node_modules/@waterplane/shared/dist/healthindex.d.ts +485 -0
  152. package/node_modules/@waterplane/shared/dist/healthindex.js +677 -0
  153. package/node_modules/@waterplane/shared/dist/healthindex.js.map +1 -0
  154. package/node_modules/@waterplane/shared/dist/healthindexresponse.d.ts +36 -0
  155. package/node_modules/@waterplane/shared/dist/healthindexresponse.js +84 -0
  156. package/node_modules/@waterplane/shared/dist/healthindexresponse.js.map +1 -0
  157. package/node_modules/@waterplane/shared/dist/healthspend.d.ts +23 -0
  158. package/node_modules/@waterplane/shared/dist/healthspend.js +41 -0
  159. package/node_modules/@waterplane/shared/dist/healthspend.js.map +1 -0
  160. package/node_modules/@waterplane/shared/dist/hints.d.ts +77 -0
  161. package/node_modules/@waterplane/shared/dist/hints.js +607 -0
  162. package/node_modules/@waterplane/shared/dist/hints.js.map +1 -0
  163. package/node_modules/@waterplane/shared/dist/hosts.d.ts +160 -0
  164. package/node_modules/@waterplane/shared/dist/hosts.js +316 -0
  165. package/node_modules/@waterplane/shared/dist/hosts.js.map +1 -0
  166. package/node_modules/@waterplane/shared/dist/hosturl.d.ts +73 -0
  167. package/node_modules/@waterplane/shared/dist/hosturl.js +129 -0
  168. package/node_modules/@waterplane/shared/dist/hosturl.js.map +1 -0
  169. package/node_modules/@waterplane/shared/dist/index.d.ts +283 -0
  170. package/node_modules/@waterplane/shared/dist/index.js +305 -0
  171. package/node_modules/@waterplane/shared/dist/index.js.map +1 -0
  172. package/node_modules/@waterplane/shared/dist/installlog.d.ts +137 -0
  173. package/node_modules/@waterplane/shared/dist/installlog.js +367 -0
  174. package/node_modules/@waterplane/shared/dist/installlog.js.map +1 -0
  175. package/node_modules/@waterplane/shared/dist/intent/budgetpass.d.ts +103 -0
  176. package/node_modules/@waterplane/shared/dist/intent/budgetpass.js +185 -0
  177. package/node_modules/@waterplane/shared/dist/intent/budgetpass.js.map +1 -0
  178. package/node_modules/@waterplane/shared/dist/intent/clean.d.ts +30 -0
  179. package/node_modules/@waterplane/shared/dist/intent/clean.js +492 -0
  180. package/node_modules/@waterplane/shared/dist/intent/clean.js.map +1 -0
  181. package/node_modules/@waterplane/shared/dist/intent/facts.d.ts +320 -0
  182. package/node_modules/@waterplane/shared/dist/intent/facts.js +52 -0
  183. package/node_modules/@waterplane/shared/dist/intent/facts.js.map +1 -0
  184. package/node_modules/@waterplane/shared/dist/intent/kind.d.ts +194 -0
  185. package/node_modules/@waterplane/shared/dist/intent/kind.js +230 -0
  186. package/node_modules/@waterplane/shared/dist/intent/kind.js.map +1 -0
  187. package/node_modules/@waterplane/shared/dist/intent/row.d.ts +433 -0
  188. package/node_modules/@waterplane/shared/dist/intent/row.js +75 -0
  189. package/node_modules/@waterplane/shared/dist/intent/row.js.map +1 -0
  190. package/node_modules/@waterplane/shared/dist/intent/slot.d.ts +137 -0
  191. package/node_modules/@waterplane/shared/dist/intent/slot.js +238 -0
  192. package/node_modules/@waterplane/shared/dist/intent/slot.js.map +1 -0
  193. package/node_modules/@waterplane/shared/dist/intent/target.d.ts +62 -0
  194. package/node_modules/@waterplane/shared/dist/intent/target.js +177 -0
  195. package/node_modules/@waterplane/shared/dist/intent/target.js.map +1 -0
  196. package/node_modules/@waterplane/shared/dist/intent/types.d.ts +455 -0
  197. package/node_modules/@waterplane/shared/dist/intent/types.js +27 -0
  198. package/node_modules/@waterplane/shared/dist/intent/types.js.map +1 -0
  199. package/node_modules/@waterplane/shared/dist/intent/verdict.d.ts +50 -0
  200. package/node_modules/@waterplane/shared/dist/intent/verdict.js +431 -0
  201. package/node_modules/@waterplane/shared/dist/intent/verdict.js.map +1 -0
  202. package/node_modules/@waterplane/shared/dist/intent/words.d.ts +236 -0
  203. package/node_modules/@waterplane/shared/dist/intent/words.js +329 -0
  204. package/node_modules/@waterplane/shared/dist/intent/words.js.map +1 -0
  205. package/node_modules/@waterplane/shared/dist/intent.d.ts +69 -0
  206. package/node_modules/@waterplane/shared/dist/intent.js +65 -0
  207. package/node_modules/@waterplane/shared/dist/intent.js.map +1 -0
  208. package/node_modules/@waterplane/shared/dist/itempaths.d.ts +35 -0
  209. package/node_modules/@waterplane/shared/dist/itempaths.js +55 -0
  210. package/node_modules/@waterplane/shared/dist/itempaths.js.map +1 -0
  211. package/node_modules/@waterplane/shared/dist/keyhint.d.ts +32 -0
  212. package/node_modules/@waterplane/shared/dist/keyhint.js +53 -0
  213. package/node_modules/@waterplane/shared/dist/keyhint.js.map +1 -0
  214. package/node_modules/@waterplane/shared/dist/lanroute.d.ts +86 -0
  215. package/node_modules/@waterplane/shared/dist/lanroute.js +84 -0
  216. package/node_modules/@waterplane/shared/dist/lanroute.js.map +1 -0
  217. package/node_modules/@waterplane/shared/dist/launch.d.ts +110 -0
  218. package/node_modules/@waterplane/shared/dist/launch.js +102 -0
  219. package/node_modules/@waterplane/shared/dist/launch.js.map +1 -0
  220. package/node_modules/@waterplane/shared/dist/launchmodes.d.ts +22 -0
  221. package/node_modules/@waterplane/shared/dist/launchmodes.js +38 -0
  222. package/node_modules/@waterplane/shared/dist/launchmodes.js.map +1 -0
  223. package/node_modules/@waterplane/shared/dist/localrt.d.ts +53 -0
  224. package/node_modules/@waterplane/shared/dist/localrt.js +54 -0
  225. package/node_modules/@waterplane/shared/dist/localrt.js.map +1 -0
  226. package/node_modules/@waterplane/shared/dist/localusage.d.ts +35 -0
  227. package/node_modules/@waterplane/shared/dist/localusage.js +135 -0
  228. package/node_modules/@waterplane/shared/dist/localusage.js.map +1 -0
  229. package/node_modules/@waterplane/shared/dist/naming.d.ts +391 -0
  230. package/node_modules/@waterplane/shared/dist/naming.js +571 -0
  231. package/node_modules/@waterplane/shared/dist/naming.js.map +1 -0
  232. package/node_modules/@waterplane/shared/dist/netfuse.d.ts +60 -0
  233. package/node_modules/@waterplane/shared/dist/netfuse.js +99 -0
  234. package/node_modules/@waterplane/shared/dist/netfuse.js.map +1 -0
  235. package/node_modules/@waterplane/shared/dist/netstall.d.ts +163 -0
  236. package/node_modules/@waterplane/shared/dist/netstall.js +241 -0
  237. package/node_modules/@waterplane/shared/dist/netstall.js.map +1 -0
  238. package/node_modules/@waterplane/shared/dist/nodemin.d.ts +18 -0
  239. package/node_modules/@waterplane/shared/dist/nodemin.js +35 -0
  240. package/node_modules/@waterplane/shared/dist/nodemin.js.map +1 -0
  241. package/node_modules/@waterplane/shared/dist/optins.d.ts +122 -0
  242. package/node_modules/@waterplane/shared/dist/optins.js +252 -0
  243. package/node_modules/@waterplane/shared/dist/optins.js.map +1 -0
  244. package/node_modules/@waterplane/shared/dist/pad.d.ts +263 -0
  245. package/node_modules/@waterplane/shared/dist/pad.js +373 -0
  246. package/node_modules/@waterplane/shared/dist/pad.js.map +1 -0
  247. package/node_modules/@waterplane/shared/dist/pairing.d.ts +120 -0
  248. package/node_modules/@waterplane/shared/dist/pairing.js +130 -0
  249. package/node_modules/@waterplane/shared/dist/pairing.js.map +1 -0
  250. package/node_modules/@waterplane/shared/dist/passive.d.ts +58 -0
  251. package/node_modules/@waterplane/shared/dist/passive.js +36 -0
  252. package/node_modules/@waterplane/shared/dist/passive.js.map +1 -0
  253. package/node_modules/@waterplane/shared/dist/peer.d.ts +311 -0
  254. package/node_modules/@waterplane/shared/dist/peer.js +390 -0
  255. package/node_modules/@waterplane/shared/dist/peer.js.map +1 -0
  256. package/node_modules/@waterplane/shared/dist/period.d.ts +108 -0
  257. package/node_modules/@waterplane/shared/dist/period.js +263 -0
  258. package/node_modules/@waterplane/shared/dist/period.js.map +1 -0
  259. package/node_modules/@waterplane/shared/dist/plugin.d.ts +898 -0
  260. package/node_modules/@waterplane/shared/dist/plugin.js +196 -0
  261. package/node_modules/@waterplane/shared/dist/plugin.js.map +1 -0
  262. package/node_modules/@waterplane/shared/dist/pluginfile.d.ts +25 -0
  263. package/node_modules/@waterplane/shared/dist/pluginfile.js +8 -0
  264. package/node_modules/@waterplane/shared/dist/pluginfile.js.map +1 -0
  265. package/node_modules/@waterplane/shared/dist/pluginlaunch.d.ts +109 -0
  266. package/node_modules/@waterplane/shared/dist/pluginlaunch.js +3 -0
  267. package/node_modules/@waterplane/shared/dist/pluginlaunch.js.map +1 -0
  268. package/node_modules/@waterplane/shared/dist/pluginmaturity.d.ts +26 -0
  269. package/node_modules/@waterplane/shared/dist/pluginmaturity.js +32 -0
  270. package/node_modules/@waterplane/shared/dist/pluginmaturity.js.map +1 -0
  271. package/node_modules/@waterplane/shared/dist/pluginreadings.d.ts +43 -0
  272. package/node_modules/@waterplane/shared/dist/pluginreadings.js +5 -0
  273. package/node_modules/@waterplane/shared/dist/pluginreadings.js.map +1 -0
  274. package/node_modules/@waterplane/shared/dist/pricing.d.ts +249 -0
  275. package/node_modules/@waterplane/shared/dist/pricing.js +388 -0
  276. package/node_modules/@waterplane/shared/dist/pricing.js.map +1 -0
  277. package/node_modules/@waterplane/shared/dist/promptid.d.ts +48 -0
  278. package/node_modules/@waterplane/shared/dist/promptid.js +116 -0
  279. package/node_modules/@waterplane/shared/dist/promptid.js.map +1 -0
  280. package/node_modules/@waterplane/shared/dist/ptysize.d.ts +74 -0
  281. package/node_modules/@waterplane/shared/dist/ptysize.js +77 -0
  282. package/node_modules/@waterplane/shared/dist/ptysize.js.map +1 -0
  283. package/node_modules/@waterplane/shared/dist/queue/queuebind.d.ts +40 -0
  284. package/node_modules/@waterplane/shared/dist/queue/queuebind.js +70 -0
  285. package/node_modules/@waterplane/shared/dist/queue/queuebind.js.map +1 -0
  286. package/node_modules/@waterplane/shared/dist/queue/queueentry.d.ts +175 -0
  287. package/node_modules/@waterplane/shared/dist/queue/queueentry.js +4 -0
  288. package/node_modules/@waterplane/shared/dist/queue/queueentry.js.map +1 -0
  289. package/node_modules/@waterplane/shared/dist/queue/queuelane.d.ts +65 -0
  290. package/node_modules/@waterplane/shared/dist/queue/queuelane.js +45 -0
  291. package/node_modules/@waterplane/shared/dist/queue/queuelane.js.map +1 -0
  292. package/node_modules/@waterplane/shared/dist/queue/queueplan.d.ts +180 -0
  293. package/node_modules/@waterplane/shared/dist/queue/queueplan.js +169 -0
  294. package/node_modules/@waterplane/shared/dist/queue/queueplan.js.map +1 -0
  295. package/node_modules/@waterplane/shared/dist/queue/queueretarget.d.ts +61 -0
  296. package/node_modules/@waterplane/shared/dist/queue/queueretarget.js +94 -0
  297. package/node_modules/@waterplane/shared/dist/queue/queueretarget.js.map +1 -0
  298. package/node_modules/@waterplane/shared/dist/queue/queueretry.d.ts +61 -0
  299. package/node_modules/@waterplane/shared/dist/queue/queueretry.js +66 -0
  300. package/node_modules/@waterplane/shared/dist/queue/queueretry.js.map +1 -0
  301. package/node_modules/@waterplane/shared/dist/queue/queueserial.d.ts +154 -0
  302. package/node_modules/@waterplane/shared/dist/queue/queueserial.js +169 -0
  303. package/node_modules/@waterplane/shared/dist/queue/queueserial.js.map +1 -0
  304. package/node_modules/@waterplane/shared/dist/queue/queueuploads.d.ts +65 -0
  305. package/node_modules/@waterplane/shared/dist/queue/queueuploads.js +79 -0
  306. package/node_modules/@waterplane/shared/dist/queue/queueuploads.js.map +1 -0
  307. package/node_modules/@waterplane/shared/dist/queue/queuewords.d.ts +22 -0
  308. package/node_modules/@waterplane/shared/dist/queue/queuewords.js +55 -0
  309. package/node_modules/@waterplane/shared/dist/queue/queuewords.js.map +1 -0
  310. package/node_modules/@waterplane/shared/dist/queue.d.ts +13 -0
  311. package/node_modules/@waterplane/shared/dist/queue.js +44 -0
  312. package/node_modules/@waterplane/shared/dist/queue.js.map +1 -0
  313. package/node_modules/@waterplane/shared/dist/repocolor.d.ts +159 -0
  314. package/node_modules/@waterplane/shared/dist/repocolor.js +261 -0
  315. package/node_modules/@waterplane/shared/dist/repocolor.js.map +1 -0
  316. package/node_modules/@waterplane/shared/dist/repohealth.d.ts +640 -0
  317. package/node_modules/@waterplane/shared/dist/repohealth.js +117 -0
  318. package/node_modules/@waterplane/shared/dist/repohealth.js.map +1 -0
  319. package/node_modules/@waterplane/shared/dist/repohealthread.d.ts +156 -0
  320. package/node_modules/@waterplane/shared/dist/repohealthread.js +680 -0
  321. package/node_modules/@waterplane/shared/dist/repohealthread.js.map +1 -0
  322. package/node_modules/@waterplane/shared/dist/requirements.d.ts +81 -0
  323. package/node_modules/@waterplane/shared/dist/requirements.js +191 -0
  324. package/node_modules/@waterplane/shared/dist/requirements.js.map +1 -0
  325. package/node_modules/@waterplane/shared/dist/rootchoice.d.ts +52 -0
  326. package/node_modules/@waterplane/shared/dist/rootchoice.js +18 -0
  327. package/node_modules/@waterplane/shared/dist/rootchoice.js.map +1 -0
  328. package/node_modules/@waterplane/shared/dist/schedule/schedaction.d.ts +106 -0
  329. package/node_modules/@waterplane/shared/dist/schedule/schedaction.js +14 -0
  330. package/node_modules/@waterplane/shared/dist/schedule/schedaction.js.map +1 -0
  331. package/node_modules/@waterplane/shared/dist/schedule/schedclean.d.ts +6 -0
  332. package/node_modules/@waterplane/shared/dist/schedule/schedclean.js +180 -0
  333. package/node_modules/@waterplane/shared/dist/schedule/schedclean.js.map +1 -0
  334. package/node_modules/@waterplane/shared/dist/schedule/schedfire.d.ts +76 -0
  335. package/node_modules/@waterplane/shared/dist/schedule/schedfire.js +122 -0
  336. package/node_modules/@waterplane/shared/dist/schedule/schedfire.js.map +1 -0
  337. package/node_modules/@waterplane/shared/dist/schedule/schedhorizon.d.ts +78 -0
  338. package/node_modules/@waterplane/shared/dist/schedule/schedhorizon.js +98 -0
  339. package/node_modules/@waterplane/shared/dist/schedule/schedhorizon.js.map +1 -0
  340. package/node_modules/@waterplane/shared/dist/schedule/schedrule.d.ts +219 -0
  341. package/node_modules/@waterplane/shared/dist/schedule/schedrule.js +162 -0
  342. package/node_modules/@waterplane/shared/dist/schedule/schedrule.js.map +1 -0
  343. package/node_modules/@waterplane/shared/dist/schedule/schedtext.d.ts +37 -0
  344. package/node_modules/@waterplane/shared/dist/schedule/schedtext.js +119 -0
  345. package/node_modules/@waterplane/shared/dist/schedule/schedtext.js.map +1 -0
  346. package/node_modules/@waterplane/shared/dist/schedule/schedwhen.d.ts +54 -0
  347. package/node_modules/@waterplane/shared/dist/schedule/schedwhen.js +70 -0
  348. package/node_modules/@waterplane/shared/dist/schedule/schedwhen.js.map +1 -0
  349. package/node_modules/@waterplane/shared/dist/schedule/schedzone.d.ts +76 -0
  350. package/node_modules/@waterplane/shared/dist/schedule/schedzone.js +159 -0
  351. package/node_modules/@waterplane/shared/dist/schedule/schedzone.js.map +1 -0
  352. package/node_modules/@waterplane/shared/dist/schedule.d.ts +44 -0
  353. package/node_modules/@waterplane/shared/dist/schedule.js +43 -0
  354. package/node_modules/@waterplane/shared/dist/schedule.js.map +1 -0
  355. package/node_modules/@waterplane/shared/dist/screenlog.d.ts +65 -0
  356. package/node_modules/@waterplane/shared/dist/screenlog.js +169 -0
  357. package/node_modules/@waterplane/shared/dist/screenlog.js.map +1 -0
  358. package/node_modules/@waterplane/shared/dist/sendstamp.d.ts +85 -0
  359. package/node_modules/@waterplane/shared/dist/sendstamp.js +96 -0
  360. package/node_modules/@waterplane/shared/dist/sendstamp.js.map +1 -0
  361. package/node_modules/@waterplane/shared/dist/sessionbudget.d.ts +162 -0
  362. package/node_modules/@waterplane/shared/dist/sessionbudget.js +213 -0
  363. package/node_modules/@waterplane/shared/dist/sessionbudget.js.map +1 -0
  364. package/node_modules/@waterplane/shared/dist/sessioncost/costcold.d.ts +99 -0
  365. package/node_modules/@waterplane/shared/dist/sessioncost/costcold.js +94 -0
  366. package/node_modules/@waterplane/shared/dist/sessioncost/costcold.js.map +1 -0
  367. package/node_modules/@waterplane/shared/dist/sessioncost/costcompact.d.ts +125 -0
  368. package/node_modules/@waterplane/shared/dist/sessioncost/costcompact.js +184 -0
  369. package/node_modules/@waterplane/shared/dist/sessioncost/costcompact.js.map +1 -0
  370. package/node_modules/@waterplane/shared/dist/sessioncost/costofseries.d.ts +21 -0
  371. package/node_modules/@waterplane/shared/dist/sessioncost/costofseries.js +31 -0
  372. package/node_modules/@waterplane/shared/dist/sessioncost/costofseries.js.map +1 -0
  373. package/node_modules/@waterplane/shared/dist/sessioncost/costreading.d.ts +174 -0
  374. package/node_modules/@waterplane/shared/dist/sessioncost/costreading.js +302 -0
  375. package/node_modules/@waterplane/shared/dist/sessioncost/costreading.js.map +1 -0
  376. package/node_modules/@waterplane/shared/dist/sessioncost/costtypes.d.ts +209 -0
  377. package/node_modules/@waterplane/shared/dist/sessioncost/costtypes.js +128 -0
  378. package/node_modules/@waterplane/shared/dist/sessioncost/costtypes.js.map +1 -0
  379. package/node_modules/@waterplane/shared/dist/sessioncost/costwords.d.ts +169 -0
  380. package/node_modules/@waterplane/shared/dist/sessioncost/costwords.js +262 -0
  381. package/node_modules/@waterplane/shared/dist/sessioncost/costwords.js.map +1 -0
  382. package/node_modules/@waterplane/shared/dist/sessioncost.d.ts +52 -0
  383. package/node_modules/@waterplane/shared/dist/sessioncost.js +51 -0
  384. package/node_modules/@waterplane/shared/dist/sessioncost.js.map +1 -0
  385. package/node_modules/@waterplane/shared/dist/settings.d.ts +136 -0
  386. package/node_modules/@waterplane/shared/dist/settings.js +303 -0
  387. package/node_modules/@waterplane/shared/dist/settings.js.map +1 -0
  388. package/node_modules/@waterplane/shared/dist/shells.d.ts +140 -0
  389. package/node_modules/@waterplane/shared/dist/shells.js +257 -0
  390. package/node_modules/@waterplane/shared/dist/shells.js.map +1 -0
  391. package/node_modules/@waterplane/shared/dist/slash.d.ts +47 -0
  392. package/node_modules/@waterplane/shared/dist/slash.js +166 -0
  393. package/node_modules/@waterplane/shared/dist/slash.js.map +1 -0
  394. package/node_modules/@waterplane/shared/dist/sourceshape.d.ts +27 -0
  395. package/node_modules/@waterplane/shared/dist/sourceshape.js +141 -0
  396. package/node_modules/@waterplane/shared/dist/sourceshape.js.map +1 -0
  397. package/node_modules/@waterplane/shared/dist/spendwarn.d.ts +37 -0
  398. package/node_modules/@waterplane/shared/dist/spendwarn.js +79 -0
  399. package/node_modules/@waterplane/shared/dist/spendwarn.js.map +1 -0
  400. package/node_modules/@waterplane/shared/dist/statedir.d.ts +11 -0
  401. package/node_modules/@waterplane/shared/dist/statedir.js +34 -0
  402. package/node_modules/@waterplane/shared/dist/statedir.js.map +1 -0
  403. package/node_modules/@waterplane/shared/dist/stream.d.ts +135 -0
  404. package/node_modules/@waterplane/shared/dist/stream.js +117 -0
  405. package/node_modules/@waterplane/shared/dist/stream.js.map +1 -0
  406. package/node_modules/@waterplane/shared/dist/sweep.d.ts +156 -0
  407. package/node_modules/@waterplane/shared/dist/sweep.js +193 -0
  408. package/node_modules/@waterplane/shared/dist/sweep.js.map +1 -0
  409. package/node_modules/@waterplane/shared/dist/sweepfamilies.d.ts +56 -0
  410. package/node_modules/@waterplane/shared/dist/sweepfamilies.js +140 -0
  411. package/node_modules/@waterplane/shared/dist/sweepfamilies.js.map +1 -0
  412. package/node_modules/@waterplane/shared/dist/termpalette.d.ts +17 -0
  413. package/node_modules/@waterplane/shared/dist/termpalette.js +5 -0
  414. package/node_modules/@waterplane/shared/dist/termpalette.js.map +1 -0
  415. package/node_modules/@waterplane/shared/dist/themeoverlay.d.ts +111 -0
  416. package/node_modules/@waterplane/shared/dist/themeoverlay.js +328 -0
  417. package/node_modules/@waterplane/shared/dist/themeoverlay.js.map +1 -0
  418. package/node_modules/@waterplane/shared/dist/tokens.d.ts +198 -0
  419. package/node_modules/@waterplane/shared/dist/tokens.js +320 -0
  420. package/node_modules/@waterplane/shared/dist/tokens.js.map +1 -0
  421. package/node_modules/@waterplane/shared/dist/transcriptfold.d.ts +50 -0
  422. package/node_modules/@waterplane/shared/dist/transcriptfold.js +87 -0
  423. package/node_modules/@waterplane/shared/dist/transcriptfold.js.map +1 -0
  424. package/node_modules/@waterplane/shared/dist/urls.d.ts +53 -0
  425. package/node_modules/@waterplane/shared/dist/urls.js +150 -0
  426. package/node_modules/@waterplane/shared/dist/urls.js.map +1 -0
  427. package/node_modules/@waterplane/shared/dist/usagesources.d.ts +88 -0
  428. package/node_modules/@waterplane/shared/dist/usagesources.js +198 -0
  429. package/node_modules/@waterplane/shared/dist/usagesources.js.map +1 -0
  430. package/node_modules/@waterplane/shared/dist/windowadvice.d.ts +7 -0
  431. package/node_modules/@waterplane/shared/dist/windowadvice.js +50 -0
  432. package/node_modules/@waterplane/shared/dist/windowadvice.js.map +1 -0
  433. package/node_modules/@waterplane/shared/dist/wire/backend.d.ts +223 -0
  434. package/node_modules/@waterplane/shared/dist/wire/backend.js +18 -0
  435. package/node_modules/@waterplane/shared/dist/wire/backend.js.map +1 -0
  436. package/node_modules/@waterplane/shared/dist/wire/backendtokens.d.ts +99 -0
  437. package/node_modules/@waterplane/shared/dist/wire/backendtokens.js +11 -0
  438. package/node_modules/@waterplane/shared/dist/wire/backendtokens.js.map +1 -0
  439. package/node_modules/@waterplane/shared/dist/wire/capture.d.ts +380 -0
  440. package/node_modules/@waterplane/shared/dist/wire/capture.js +46 -0
  441. package/node_modules/@waterplane/shared/dist/wire/capture.js.map +1 -0
  442. package/node_modules/@waterplane/shared/dist/wire/costwindow.d.ts +143 -0
  443. package/node_modules/@waterplane/shared/dist/wire/costwindow.js +16 -0
  444. package/node_modules/@waterplane/shared/dist/wire/costwindow.js.map +1 -0
  445. package/node_modules/@waterplane/shared/dist/wire/install.d.ts +172 -0
  446. package/node_modules/@waterplane/shared/dist/wire/install.js +30 -0
  447. package/node_modules/@waterplane/shared/dist/wire/install.js.map +1 -0
  448. package/node_modules/@waterplane/shared/dist/wire/intent.d.ts +187 -0
  449. package/node_modules/@waterplane/shared/dist/wire/intent.js +2 -0
  450. package/node_modules/@waterplane/shared/dist/wire/intent.js.map +1 -0
  451. package/node_modules/@waterplane/shared/dist/wire/localrt.d.ts +78 -0
  452. package/node_modules/@waterplane/shared/dist/wire/localrt.js +21 -0
  453. package/node_modules/@waterplane/shared/dist/wire/localrt.js.map +1 -0
  454. package/node_modules/@waterplane/shared/dist/wire/localusage.d.ts +121 -0
  455. package/node_modules/@waterplane/shared/dist/wire/localusage.js +23 -0
  456. package/node_modules/@waterplane/shared/dist/wire/localusage.js.map +1 -0
  457. package/node_modules/@waterplane/shared/dist/wire/messages/clientbacklog.d.ts +177 -0
  458. package/node_modules/@waterplane/shared/dist/wire/messages/clientbacklog.js +3 -0
  459. package/node_modules/@waterplane/shared/dist/wire/messages/clientbacklog.js.map +1 -0
  460. package/node_modules/@waterplane/shared/dist/wire/messages/clienthost.d.ts +344 -0
  461. package/node_modules/@waterplane/shared/dist/wire/messages/clienthost.js +3 -0
  462. package/node_modules/@waterplane/shared/dist/wire/messages/clienthost.js.map +1 -0
  463. package/node_modules/@waterplane/shared/dist/wire/messages/clientsession.d.ts +307 -0
  464. package/node_modules/@waterplane/shared/dist/wire/messages/clientsession.js +3 -0
  465. package/node_modules/@waterplane/shared/dist/wire/messages/clientsession.js.map +1 -0
  466. package/node_modules/@waterplane/shared/dist/wire/messages/clientupdates.d.ts +18 -0
  467. package/node_modules/@waterplane/shared/dist/wire/messages/clientupdates.js +5 -0
  468. package/node_modules/@waterplane/shared/dist/wire/messages/clientupdates.js.map +1 -0
  469. package/node_modules/@waterplane/shared/dist/wire/messages/clientwork.d.ts +478 -0
  470. package/node_modules/@waterplane/shared/dist/wire/messages/clientwork.js +3 -0
  471. package/node_modules/@waterplane/shared/dist/wire/messages/clientwork.js.map +1 -0
  472. package/node_modules/@waterplane/shared/dist/wire/messages/hostcore.d.ts +488 -0
  473. package/node_modules/@waterplane/shared/dist/wire/messages/hostcore.js +3 -0
  474. package/node_modules/@waterplane/shared/dist/wire/messages/hostcore.js.map +1 -0
  475. package/node_modules/@waterplane/shared/dist/wire/messages/hosttools.d.ts +338 -0
  476. package/node_modules/@waterplane/shared/dist/wire/messages/hosttools.js +3 -0
  477. package/node_modules/@waterplane/shared/dist/wire/messages/hosttools.js.map +1 -0
  478. package/node_modules/@waterplane/shared/dist/wire/messages/hostupdates.d.ts +16 -0
  479. package/node_modules/@waterplane/shared/dist/wire/messages/hostupdates.js +3 -0
  480. package/node_modules/@waterplane/shared/dist/wire/messages/hostupdates.js.map +1 -0
  481. package/node_modules/@waterplane/shared/dist/wire/messages.d.ts +25 -0
  482. package/node_modules/@waterplane/shared/dist/wire/messages.js +18 -0
  483. package/node_modules/@waterplane/shared/dist/wire/messages.js.map +1 -0
  484. package/node_modules/@waterplane/shared/dist/wire/notify.d.ts +145 -0
  485. package/node_modules/@waterplane/shared/dist/wire/notify.js +96 -0
  486. package/node_modules/@waterplane/shared/dist/wire/notify.js.map +1 -0
  487. package/node_modules/@waterplane/shared/dist/wire/notifylink.d.ts +36 -0
  488. package/node_modules/@waterplane/shared/dist/wire/notifylink.js +44 -0
  489. package/node_modules/@waterplane/shared/dist/wire/notifylink.js.map +1 -0
  490. package/node_modules/@waterplane/shared/dist/wire/onboard.d.ts +121 -0
  491. package/node_modules/@waterplane/shared/dist/wire/onboard.js +11 -0
  492. package/node_modules/@waterplane/shared/dist/wire/onboard.js.map +1 -0
  493. package/node_modules/@waterplane/shared/dist/wire/repo.d.ts +456 -0
  494. package/node_modules/@waterplane/shared/dist/wire/repo.js +30 -0
  495. package/node_modules/@waterplane/shared/dist/wire/repo.js.map +1 -0
  496. package/node_modules/@waterplane/shared/dist/wire/sent.d.ts +127 -0
  497. package/node_modules/@waterplane/shared/dist/wire/sent.js +2 -0
  498. package/node_modules/@waterplane/shared/dist/wire/sent.js.map +1 -0
  499. package/node_modules/@waterplane/shared/dist/wire/session/archive.d.ts +286 -0
  500. package/node_modules/@waterplane/shared/dist/wire/session/archive.js +2 -0
  501. package/node_modules/@waterplane/shared/dist/wire/session/archive.js.map +1 -0
  502. package/node_modules/@waterplane/shared/dist/wire/session/context.d.ts +298 -0
  503. package/node_modules/@waterplane/shared/dist/wire/session/context.js +6 -0
  504. package/node_modules/@waterplane/shared/dist/wire/session/context.js.map +1 -0
  505. package/node_modules/@waterplane/shared/dist/wire/session/contextspark.d.ts +402 -0
  506. package/node_modules/@waterplane/shared/dist/wire/session/contextspark.js +2 -0
  507. package/node_modules/@waterplane/shared/dist/wire/session/contextspark.js.map +1 -0
  508. package/node_modules/@waterplane/shared/dist/wire/session/delivery.d.ts +114 -0
  509. package/node_modules/@waterplane/shared/dist/wire/session/delivery.js +2 -0
  510. package/node_modules/@waterplane/shared/dist/wire/session/delivery.js.map +1 -0
  511. package/node_modules/@waterplane/shared/dist/wire/session/info.d.ts +427 -0
  512. package/node_modules/@waterplane/shared/dist/wire/session/info.js +2 -0
  513. package/node_modules/@waterplane/shared/dist/wire/session/info.js.map +1 -0
  514. package/node_modules/@waterplane/shared/dist/wire/session/launch.d.ts +332 -0
  515. package/node_modules/@waterplane/shared/dist/wire/session/launch.js +2 -0
  516. package/node_modules/@waterplane/shared/dist/wire/session/launch.js.map +1 -0
  517. package/node_modules/@waterplane/shared/dist/wire/session/promptbox.d.ts +181 -0
  518. package/node_modules/@waterplane/shared/dist/wire/session/promptbox.js +2 -0
  519. package/node_modules/@waterplane/shared/dist/wire/session/promptbox.js.map +1 -0
  520. package/node_modules/@waterplane/shared/dist/wire/session.d.ts +16 -0
  521. package/node_modules/@waterplane/shared/dist/wire/session.js +10 -0
  522. package/node_modules/@waterplane/shared/dist/wire/session.js.map +1 -0
  523. package/node_modules/@waterplane/shared/dist/wire/slash.d.ts +31 -0
  524. package/node_modules/@waterplane/shared/dist/wire/slash.js +9 -0
  525. package/node_modules/@waterplane/shared/dist/wire/slash.js.map +1 -0
  526. package/node_modules/@waterplane/shared/dist/wire/sysstat.d.ts +226 -0
  527. package/node_modules/@waterplane/shared/dist/wire/sysstat.js +47 -0
  528. package/node_modules/@waterplane/shared/dist/wire/sysstat.js.map +1 -0
  529. package/node_modules/@waterplane/shared/dist/wire/telemetry.d.ts +645 -0
  530. package/node_modules/@waterplane/shared/dist/wire/telemetry.js +3 -0
  531. package/node_modules/@waterplane/shared/dist/wire/telemetry.js.map +1 -0
  532. package/node_modules/@waterplane/shared/dist/wire/transcript.d.ts +327 -0
  533. package/node_modules/@waterplane/shared/dist/wire/transcript.js +60 -0
  534. package/node_modules/@waterplane/shared/dist/wire/transcript.js.map +1 -0
  535. package/node_modules/@waterplane/shared/dist/wire/updates.d.ts +130 -0
  536. package/node_modules/@waterplane/shared/dist/wire/updates.js +52 -0
  537. package/node_modules/@waterplane/shared/dist/wire/updates.js.map +1 -0
  538. package/node_modules/@waterplane/shared/dist/wire/work.d.ts +699 -0
  539. package/node_modules/@waterplane/shared/dist/wire/work.js +22 -0
  540. package/node_modules/@waterplane/shared/dist/wire/work.js.map +1 -0
  541. package/node_modules/@waterplane/shared/dist/working.d.ts +70 -0
  542. package/node_modules/@waterplane/shared/dist/working.js +208 -0
  543. package/node_modules/@waterplane/shared/dist/working.js.map +1 -0
  544. package/node_modules/@waterplane/shared/package.json +17 -0
  545. package/npm-shrinkwrap.json +250 -0
  546. package/package.json +33 -6
  547. package/packages/extensions/copilot-usage/waterplane-plugin.json +9 -0
  548. package/packages/extensions/ocr/assets/deu.traineddata.gz +0 -0
  549. package/packages/extensions/ocr/assets/eng.traineddata.gz +0 -0
  550. package/packages/extensions/ocr/assets/manifest.json +44 -0
  551. package/packages/extensions/ocr/assets/tesseract-core-lstm.wasm.js +191 -0
  552. package/packages/extensions/ocr/assets/tesseract-core-simd-lstm.wasm.js +191 -0
  553. package/packages/extensions/ocr/assets/worker.min.js +3 -0
  554. package/packages/extensions/ocr/waterplane-plugin.json +11 -0
  555. package/packages/extensions/requirements/waterplane-plugin.json +9 -0
  556. package/packages/extensions/token-stats/waterplane-plugin.json +8 -0
  557. package/packages/host/dist/acks.d.ts +119 -0
  558. package/packages/host/dist/acks.js +268 -0
  559. package/packages/host/dist/acks.js.map +1 -0
  560. package/packages/host/dist/agentfollowup.d.ts +45 -0
  561. package/packages/host/dist/agentfollowup.js +77 -0
  562. package/packages/host/dist/agentfollowup.js.map +1 -0
  563. package/packages/host/dist/agentintents.d.ts +278 -0
  564. package/packages/host/dist/agentintents.js +509 -0
  565. package/packages/host/dist/agentintents.js.map +1 -0
  566. package/packages/host/dist/agents.d.ts +112 -0
  567. package/packages/host/dist/agents.js +517 -0
  568. package/packages/host/dist/agents.js.map +1 -0
  569. package/packages/host/dist/agentwatch.d.ts +42 -0
  570. package/packages/host/dist/agentwatch.js +35 -0
  571. package/packages/host/dist/agentwatch.js.map +1 -0
  572. package/packages/host/dist/androidenv.d.ts +80 -0
  573. package/packages/host/dist/androidenv.js +344 -0
  574. package/packages/host/dist/androidenv.js.map +1 -0
  575. package/packages/host/dist/answergate.d.ts +191 -0
  576. package/packages/host/dist/answergate.js +321 -0
  577. package/packages/host/dist/answergate.js.map +1 -0
  578. package/packages/host/dist/api.d.ts +19 -0
  579. package/packages/host/dist/api.js +62 -0
  580. package/packages/host/dist/api.js.map +1 -0
  581. package/packages/host/dist/apkcheck.d.ts +36 -0
  582. package/packages/host/dist/apkcheck.js +290 -0
  583. package/packages/host/dist/apkcheck.js.map +1 -0
  584. package/packages/host/dist/appready.d.ts +8 -0
  585. package/packages/host/dist/appready.js +16 -0
  586. package/packages/host/dist/appready.js.map +1 -0
  587. package/packages/host/dist/archive.d.ts +95 -0
  588. package/packages/host/dist/archive.js +318 -0
  589. package/packages/host/dist/archive.js.map +1 -0
  590. package/packages/host/dist/artifacts.d.ts +38 -0
  591. package/packages/host/dist/artifacts.js +315 -0
  592. package/packages/host/dist/artifacts.js.map +1 -0
  593. package/packages/host/dist/askbox.d.ts +116 -0
  594. package/packages/host/dist/askbox.js +341 -0
  595. package/packages/host/dist/askbox.js.map +1 -0
  596. package/packages/host/dist/askrules.d.ts +38 -0
  597. package/packages/host/dist/askrules.js +139 -0
  598. package/packages/host/dist/askrules.js.map +1 -0
  599. package/packages/host/dist/assess/hassapply.d.ts +127 -0
  600. package/packages/host/dist/assess/hassapply.js +482 -0
  601. package/packages/host/dist/assess/hassapply.js.map +1 -0
  602. package/packages/host/dist/assess/hassexec.d.ts +160 -0
  603. package/packages/host/dist/assess/hassexec.js +178 -0
  604. package/packages/host/dist/assess/hassexec.js.map +1 -0
  605. package/packages/host/dist/assess/hassinput.d.ts +80 -0
  606. package/packages/host/dist/assess/hassinput.js +264 -0
  607. package/packages/host/dist/assess/hassinput.js.map +1 -0
  608. package/packages/host/dist/assess/hassknobs.d.ts +66 -0
  609. package/packages/host/dist/assess/hassknobs.js +69 -0
  610. package/packages/host/dist/assess/hassknobs.js.map +1 -0
  611. package/packages/host/dist/assess/hassprogress.d.ts +30 -0
  612. package/packages/host/dist/assess/hassprogress.js +165 -0
  613. package/packages/host/dist/assess/hassprogress.js.map +1 -0
  614. package/packages/host/dist/assess/hassrun.d.ts +39 -0
  615. package/packages/host/dist/assess/hassrun.js +269 -0
  616. package/packages/host/dist/assess/hassrun.js.map +1 -0
  617. package/packages/host/dist/assess/hassstore.d.ts +77 -0
  618. package/packages/host/dist/assess/hassstore.js +187 -0
  619. package/packages/host/dist/assess/hassstore.js.map +1 -0
  620. package/packages/host/dist/assess/hassutil.d.ts +28 -0
  621. package/packages/host/dist/assess/hassutil.js +53 -0
  622. package/packages/host/dist/assess/hassutil.js.map +1 -0
  623. package/packages/host/dist/assess.d.ts +60 -0
  624. package/packages/host/dist/assess.js +58 -0
  625. package/packages/host/dist/assess.js.map +1 -0
  626. package/packages/host/dist/auth.d.ts +93 -0
  627. package/packages/host/dist/auth.js +276 -0
  628. package/packages/host/dist/auth.js.map +1 -0
  629. package/packages/host/dist/authroutes.d.ts +36 -0
  630. package/packages/host/dist/authroutes.js +108 -0
  631. package/packages/host/dist/authroutes.js.map +1 -0
  632. package/packages/host/dist/autopull.d.ts +107 -0
  633. package/packages/host/dist/autopull.js +248 -0
  634. package/packages/host/dist/autopull.js.map +1 -0
  635. package/packages/host/dist/backends/claude-endpoint.d.ts +98 -0
  636. package/packages/host/dist/backends/claude-endpoint.js +347 -0
  637. package/packages/host/dist/backends/claude-endpoint.js.map +1 -0
  638. package/packages/host/dist/backends/claude-local.d.ts +51 -0
  639. package/packages/host/dist/backends/claude-local.js +221 -0
  640. package/packages/host/dist/backends/claude-local.js.map +1 -0
  641. package/packages/host/dist/backends/claude-sources.d.ts +53 -0
  642. package/packages/host/dist/backends/claude-sources.js +68 -0
  643. package/packages/host/dist/backends/claude-sources.js.map +1 -0
  644. package/packages/host/dist/backends/claude.d.ts +45 -0
  645. package/packages/host/dist/backends/claude.js +248 -0
  646. package/packages/host/dist/backends/claude.js.map +1 -0
  647. package/packages/host/dist/backends/claudemodels.d.ts +19 -0
  648. package/packages/host/dist/backends/claudemodels.js +122 -0
  649. package/packages/host/dist/backends/claudemodels.js.map +1 -0
  650. package/packages/host/dist/backends/derive.d.ts +81 -0
  651. package/packages/host/dist/backends/derive.js +198 -0
  652. package/packages/host/dist/backends/derive.js.map +1 -0
  653. package/packages/host/dist/backends/index.d.ts +138 -0
  654. package/packages/host/dist/backends/index.js +328 -0
  655. package/packages/host/dist/backends/index.js.map +1 -0
  656. package/packages/host/dist/backends/overhead.d.ts +16 -0
  657. package/packages/host/dist/backends/overhead.js +124 -0
  658. package/packages/host/dist/backends/overhead.js.map +1 -0
  659. package/packages/host/dist/backends/readers.d.ts +57 -0
  660. package/packages/host/dist/backends/readers.js +74 -0
  661. package/packages/host/dist/backends/readers.js.map +1 -0
  662. package/packages/host/dist/backends/registry.d.ts +37 -0
  663. package/packages/host/dist/backends/registry.js +73 -0
  664. package/packages/host/dist/backends/registry.js.map +1 -0
  665. package/packages/host/dist/backends/shell.d.ts +31 -0
  666. package/packages/host/dist/backends/shell.js +127 -0
  667. package/packages/host/dist/backends/shell.js.map +1 -0
  668. package/packages/host/dist/backends/types.d.ts +457 -0
  669. package/packages/host/dist/backends/types.js +2 -0
  670. package/packages/host/dist/backends/types.js.map +1 -0
  671. package/packages/host/dist/backlog/backlogcore.d.ts +36 -0
  672. package/packages/host/dist/backlog/backlogcore.js +2 -0
  673. package/packages/host/dist/backlog/backlogcore.js.map +1 -0
  674. package/packages/host/dist/backlog/backlogedits.d.ts +96 -0
  675. package/packages/host/dist/backlog/backlogedits.js +229 -0
  676. package/packages/host/dist/backlog/backlogedits.js.map +1 -0
  677. package/packages/host/dist/backlog/backlogfollowup.d.ts +7 -0
  678. package/packages/host/dist/backlog/backlogfollowup.js +71 -0
  679. package/packages/host/dist/backlog/backlogfollowup.js.map +1 -0
  680. package/packages/host/dist/backlog/backlogknobs.d.ts +56 -0
  681. package/packages/host/dist/backlog/backlogknobs.js +62 -0
  682. package/packages/host/dist/backlog/backlogknobs.js.map +1 -0
  683. package/packages/host/dist/backlog/backlogsessions.d.ts +217 -0
  684. package/packages/host/dist/backlog/backlogsessions.js +421 -0
  685. package/packages/host/dist/backlog/backlogsessions.js.map +1 -0
  686. package/packages/host/dist/backlog/backlogstore.d.ts +31 -0
  687. package/packages/host/dist/backlog/backlogstore.js +101 -0
  688. package/packages/host/dist/backlog/backlogstore.js.map +1 -0
  689. package/packages/host/dist/backlog/backlogtitles.d.ts +40 -0
  690. package/packages/host/dist/backlog/backlogtitles.js +50 -0
  691. package/packages/host/dist/backlog/backlogtitles.js.map +1 -0
  692. package/packages/host/dist/backlog/backlogwording.d.ts +31 -0
  693. package/packages/host/dist/backlog/backlogwording.js +42 -0
  694. package/packages/host/dist/backlog/backlogwording.js.map +1 -0
  695. package/packages/host/dist/backlog.d.ts +142 -0
  696. package/packages/host/dist/backlog.js +96 -0
  697. package/packages/host/dist/backlog.js.map +1 -0
  698. package/packages/host/dist/billing.d.ts +53 -0
  699. package/packages/host/dist/billing.js +140 -0
  700. package/packages/host/dist/billing.js.map +1 -0
  701. package/packages/host/dist/binguard.d.ts +28 -0
  702. package/packages/host/dist/binguard.js +88 -0
  703. package/packages/host/dist/binguard.js.map +1 -0
  704. package/packages/host/dist/bookmarks.d.ts +24 -0
  705. package/packages/host/dist/bookmarks.js +118 -0
  706. package/packages/host/dist/bookmarks.js.map +1 -0
  707. package/packages/host/dist/branddirs.d.ts +223 -0
  708. package/packages/host/dist/branddirs.js +828 -0
  709. package/packages/host/dist/branddirs.js.map +1 -0
  710. package/packages/host/dist/budget.d.ts +57 -0
  711. package/packages/host/dist/budget.js +153 -0
  712. package/packages/host/dist/budget.js.map +1 -0
  713. package/packages/host/dist/builds.d.ts +178 -0
  714. package/packages/host/dist/builds.js +645 -0
  715. package/packages/host/dist/builds.js.map +1 -0
  716. package/packages/host/dist/buildscan.d.ts +16 -0
  717. package/packages/host/dist/buildscan.js +177 -0
  718. package/packages/host/dist/buildscan.js.map +1 -0
  719. package/packages/host/dist/burnwatch.d.ts +53 -0
  720. package/packages/host/dist/burnwatch.js +141 -0
  721. package/packages/host/dist/burnwatch.js.map +1 -0
  722. package/packages/host/dist/capture/android.d.ts +2 -0
  723. package/packages/host/dist/capture/android.js +144 -0
  724. package/packages/host/dist/capture/android.js.map +1 -0
  725. package/packages/host/dist/capture/captureconfig.d.ts +44 -0
  726. package/packages/host/dist/capture/captureconfig.js +169 -0
  727. package/packages/host/dist/capture/captureconfig.js.map +1 -0
  728. package/packages/host/dist/capture/capturehelpers.d.ts +34 -0
  729. package/packages/host/dist/capture/capturehelpers.js +156 -0
  730. package/packages/host/dist/capture/capturehelpers.js.map +1 -0
  731. package/packages/host/dist/capture/capturekit.d.ts +32 -0
  732. package/packages/host/dist/capture/capturekit.js +47 -0
  733. package/packages/host/dist/capture/capturekit.js.map +1 -0
  734. package/packages/host/dist/capture/capturepass.d.ts +17 -0
  735. package/packages/host/dist/capture/capturepass.js +262 -0
  736. package/packages/host/dist/capture/capturepass.js.map +1 -0
  737. package/packages/host/dist/capture/capturesettle.d.ts +35 -0
  738. package/packages/host/dist/capture/capturesettle.js +77 -0
  739. package/packages/host/dist/capture/capturesettle.js.map +1 -0
  740. package/packages/host/dist/capture/captureverdict.d.ts +132 -0
  741. package/packages/host/dist/capture/captureverdict.js +107 -0
  742. package/packages/host/dist/capture/captureverdict.js.map +1 -0
  743. package/packages/host/dist/capture/garmin.d.ts +2 -0
  744. package/packages/host/dist/capture/garmin.js +294 -0
  745. package/packages/host/dist/capture/garmin.js.map +1 -0
  746. package/packages/host/dist/capture/pixels.d.ts +60 -0
  747. package/packages/host/dist/capture/pixels.js +199 -0
  748. package/packages/host/dist/capture/pixels.js.map +1 -0
  749. package/packages/host/dist/capture/types.d.ts +195 -0
  750. package/packages/host/dist/capture/types.js +2 -0
  751. package/packages/host/dist/capture/types.js.map +1 -0
  752. package/packages/host/dist/capture/web.d.ts +2 -0
  753. package/packages/host/dist/capture/web.js +290 -0
  754. package/packages/host/dist/capture/web.js.map +1 -0
  755. package/packages/host/dist/capture/window.d.ts +2 -0
  756. package/packages/host/dist/capture/window.js +88 -0
  757. package/packages/host/dist/capture/window.js.map +1 -0
  758. package/packages/host/dist/capture.d.ts +116 -0
  759. package/packages/host/dist/capture.js +295 -0
  760. package/packages/host/dist/capture.js.map +1 -0
  761. package/packages/host/dist/claudebin.d.ts +32 -0
  762. package/packages/host/dist/claudebin.js +113 -0
  763. package/packages/host/dist/claudebin.js.map +1 -0
  764. package/packages/host/dist/claudeconfig.d.ts +23 -0
  765. package/packages/host/dist/claudeconfig.js +118 -0
  766. package/packages/host/dist/claudeconfig.js.map +1 -0
  767. package/packages/host/dist/cli/entry.d.ts +1 -0
  768. package/packages/host/dist/cli/entry.js +11 -0
  769. package/packages/host/dist/cli/entry.js.map +1 -0
  770. package/packages/host/dist/cli/index.d.ts +12 -0
  771. package/packages/host/dist/cli/index.js +122 -0
  772. package/packages/host/dist/cli/index.js.map +1 -0
  773. package/packages/host/dist/cli/pair.d.ts +28 -0
  774. package/packages/host/dist/cli/pair.js +94 -0
  775. package/packages/host/dist/cli/pair.js.map +1 -0
  776. package/packages/host/dist/cli/releasesig.d.ts +42 -0
  777. package/packages/host/dist/cli/releasesig.js +60 -0
  778. package/packages/host/dist/cli/releasesig.js.map +1 -0
  779. package/packages/host/dist/cli/selfupdate.d.ts +96 -0
  780. package/packages/host/dist/cli/selfupdate.js +842 -0
  781. package/packages/host/dist/cli/selfupdate.js.map +1 -0
  782. package/packages/host/dist/cli/service.d.ts +100 -0
  783. package/packages/host/dist/cli/service.js +645 -0
  784. package/packages/host/dist/cli/service.js.map +1 -0
  785. package/packages/host/dist/cli/statesnap.d.ts +34 -0
  786. package/packages/host/dist/cli/statesnap.js +135 -0
  787. package/packages/host/dist/cli/statesnap.js.map +1 -0
  788. package/packages/host/dist/cli/windows.d.ts +191 -0
  789. package/packages/host/dist/cli/windows.js +658 -0
  790. package/packages/host/dist/cli/windows.js.map +1 -0
  791. package/packages/host/dist/clifixtures.d.ts +28 -0
  792. package/packages/host/dist/clifixtures.js +193 -0
  793. package/packages/host/dist/clifixtures.js.map +1 -0
  794. package/packages/host/dist/clihealth.d.ts +121 -0
  795. package/packages/host/dist/clihealth.js +301 -0
  796. package/packages/host/dist/clihealth.js.map +1 -0
  797. package/packages/host/dist/clisuggest.d.ts +13 -0
  798. package/packages/host/dist/clisuggest.js +54 -0
  799. package/packages/host/dist/clisuggest.js.map +1 -0
  800. package/packages/host/dist/commitmsg.d.ts +17 -0
  801. package/packages/host/dist/commitmsg.js +98 -0
  802. package/packages/host/dist/commitmsg.js.map +1 -0
  803. package/packages/host/dist/compliance.d.ts +121 -0
  804. package/packages/host/dist/compliance.js +827 -0
  805. package/packages/host/dist/compliance.js.map +1 -0
  806. package/packages/host/dist/composer.d.ts +225 -0
  807. package/packages/host/dist/composer.js +453 -0
  808. package/packages/host/dist/composer.js.map +1 -0
  809. package/packages/host/dist/confirmgate.d.ts +34 -0
  810. package/packages/host/dist/confirmgate.js +114 -0
  811. package/packages/host/dist/confirmgate.js.map +1 -0
  812. package/packages/host/dist/context.d.ts +22 -0
  813. package/packages/host/dist/context.js +92 -0
  814. package/packages/host/dist/context.js.map +1 -0
  815. package/packages/host/dist/contextlimits.d.ts +31 -0
  816. package/packages/host/dist/contextlimits.js +128 -0
  817. package/packages/host/dist/contextlimits.js.map +1 -0
  818. package/packages/host/dist/convfork.d.ts +67 -0
  819. package/packages/host/dist/convfork.js +372 -0
  820. package/packages/host/dist/convfork.js.map +1 -0
  821. package/packages/host/dist/convlog.d.ts +40 -0
  822. package/packages/host/dist/convlog.js +52 -0
  823. package/packages/host/dist/convlog.js.map +1 -0
  824. package/packages/host/dist/costwindow.d.ts +77 -0
  825. package/packages/host/dist/costwindow.js +333 -0
  826. package/packages/host/dist/costwindow.js.map +1 -0
  827. package/packages/host/dist/ctxlog/ctxagents.d.ts +179 -0
  828. package/packages/host/dist/ctxlog/ctxagents.js +419 -0
  829. package/packages/host/dist/ctxlog/ctxagents.js.map +1 -0
  830. package/packages/host/dist/ctxlog/ctxcursor.d.ts +299 -0
  831. package/packages/host/dist/ctxlog/ctxcursor.js +163 -0
  832. package/packages/host/dist/ctxlog/ctxcursor.js.map +1 -0
  833. package/packages/host/dist/ctxlog/ctxproject.d.ts +49 -0
  834. package/packages/host/dist/ctxlog/ctxproject.js +198 -0
  835. package/packages/host/dist/ctxlog/ctxproject.js.map +1 -0
  836. package/packages/host/dist/ctxlog/ctxupdate.d.ts +11 -0
  837. package/packages/host/dist/ctxlog/ctxupdate.js +338 -0
  838. package/packages/host/dist/ctxlog/ctxupdate.js.map +1 -0
  839. package/packages/host/dist/ctxlog.d.ts +56 -0
  840. package/packages/host/dist/ctxlog.js +57 -0
  841. package/packages/host/dist/ctxlog.js.map +1 -0
  842. package/packages/host/dist/ctxwindow.d.ts +17 -0
  843. package/packages/host/dist/ctxwindow.js +106 -0
  844. package/packages/host/dist/ctxwindow.js.map +1 -0
  845. package/packages/host/dist/decisionlog.d.ts +29 -0
  846. package/packages/host/dist/decisionlog.js +167 -0
  847. package/packages/host/dist/decisionlog.js.map +1 -0
  848. package/packages/host/dist/deliver/deliverknobs.d.ts +84 -0
  849. package/packages/host/dist/deliver/deliverknobs.js +85 -0
  850. package/packages/host/dist/deliver/deliverknobs.js.map +1 -0
  851. package/packages/host/dist/deliver/deliverproof.d.ts +25 -0
  852. package/packages/host/dist/deliver/deliverproof.js +123 -0
  853. package/packages/host/dist/deliver/deliverproof.js.map +1 -0
  854. package/packages/host/dist/deliver/deliverreturn.d.ts +12 -0
  855. package/packages/host/dist/deliver/deliverreturn.js +365 -0
  856. package/packages/host/dist/deliver/deliverreturn.js.map +1 -0
  857. package/packages/host/dist/deliver/deliverrun.d.ts +20 -0
  858. package/packages/host/dist/deliver/deliverrun.js +495 -0
  859. package/packages/host/dist/deliver/deliverrun.js.map +1 -0
  860. package/packages/host/dist/deliver/deliverscreen.d.ts +67 -0
  861. package/packages/host/dist/deliver/deliverscreen.js +428 -0
  862. package/packages/host/dist/deliver/deliverscreen.js.map +1 -0
  863. package/packages/host/dist/deliver/delivertypes.d.ts +119 -0
  864. package/packages/host/dist/deliver/delivertypes.js +2 -0
  865. package/packages/host/dist/deliver/delivertypes.js.map +1 -0
  866. package/packages/host/dist/deliver.d.ts +50 -0
  867. package/packages/host/dist/deliver.js +142 -0
  868. package/packages/host/dist/deliver.js.map +1 -0
  869. package/packages/host/dist/deviceledger.d.ts +33 -0
  870. package/packages/host/dist/deviceledger.js +143 -0
  871. package/packages/host/dist/deviceledger.js.map +1 -0
  872. package/packages/host/dist/dictate.d.ts +142 -0
  873. package/packages/host/dist/dictate.js +419 -0
  874. package/packages/host/dist/dictate.js.map +1 -0
  875. package/packages/host/dist/discover.d.ts +20 -0
  876. package/packages/host/dist/discover.js +162 -0
  877. package/packages/host/dist/discover.js.map +1 -0
  878. package/packages/host/dist/diskwatch.d.ts +39 -0
  879. package/packages/host/dist/diskwatch.js +111 -0
  880. package/packages/host/dist/diskwatch.js.map +1 -0
  881. package/packages/host/dist/doctor.d.ts +153 -0
  882. package/packages/host/dist/doctor.js +748 -0
  883. package/packages/host/dist/doctor.js.map +1 -0
  884. package/packages/host/dist/doctorclaude.d.ts +33 -0
  885. package/packages/host/dist/doctorclaude.js +128 -0
  886. package/packages/host/dist/doctorclaude.js.map +1 -0
  887. package/packages/host/dist/doctormac.d.ts +47 -0
  888. package/packages/host/dist/doctormac.js +81 -0
  889. package/packages/host/dist/doctormac.js.map +1 -0
  890. package/packages/host/dist/doctorproc.d.ts +11 -0
  891. package/packages/host/dist/doctorproc.js +36 -0
  892. package/packages/host/dist/doctorproc.js.map +1 -0
  893. package/packages/host/dist/doctorwsl.d.ts +90 -0
  894. package/packages/host/dist/doctorwsl.js +205 -0
  895. package/packages/host/dist/doctorwsl.js.map +1 -0
  896. package/packages/host/dist/echo.d.ts +331 -0
  897. package/packages/host/dist/echo.js +439 -0
  898. package/packages/host/dist/echo.js.map +1 -0
  899. package/packages/host/dist/env.d.ts +16 -0
  900. package/packages/host/dist/env.js +190 -0
  901. package/packages/host/dist/env.js.map +1 -0
  902. package/packages/host/dist/envfiles.d.ts +5 -0
  903. package/packages/host/dist/envfiles.js +43 -0
  904. package/packages/host/dist/envfiles.js.map +1 -0
  905. package/packages/host/dist/extensions/copilot-usage/host/ghquota.d.mts +17 -0
  906. package/packages/host/dist/extensions/copilot-usage/host/ghquota.mjs +96 -0
  907. package/packages/host/dist/extensions/copilot-usage/host/ghquota.mjs.map +1 -0
  908. package/packages/host/dist/extensions/copilot-usage/host/index.d.mts +17 -0
  909. package/packages/host/dist/extensions/copilot-usage/host/index.mjs +102 -0
  910. package/packages/host/dist/extensions/copilot-usage/host/index.mjs.map +1 -0
  911. package/packages/host/dist/extensions/copilot-usage/host/vscodelocal.d.mts +90 -0
  912. package/packages/host/dist/extensions/copilot-usage/host/vscodelocal.mjs +365 -0
  913. package/packages/host/dist/extensions/copilot-usage/host/vscodelocal.mjs.map +1 -0
  914. package/packages/host/dist/extensions/ocr/host/index.d.mts +10 -0
  915. package/packages/host/dist/extensions/ocr/host/index.mjs +4 -0
  916. package/packages/host/dist/extensions/ocr/host/index.mjs.map +1 -0
  917. package/packages/host/dist/extensions/requirements/host/index.d.mts +2 -0
  918. package/packages/host/dist/extensions/requirements/host/index.mjs +63 -0
  919. package/packages/host/dist/extensions/requirements/host/index.mjs.map +1 -0
  920. package/packages/host/dist/extensions/requirements/host/list.d.mts +17 -0
  921. package/packages/host/dist/extensions/requirements/host/list.mjs +125 -0
  922. package/packages/host/dist/extensions/requirements/host/list.mjs.map +1 -0
  923. package/packages/host/dist/extensions/requirements/host/requirements.d.mts +31 -0
  924. package/packages/host/dist/extensions/requirements/host/requirements.mjs +318 -0
  925. package/packages/host/dist/extensions/requirements/host/requirements.mjs.map +1 -0
  926. package/packages/host/dist/extensions/requirements/shared/methods.d.mts +88 -0
  927. package/packages/host/dist/extensions/requirements/shared/methods.mjs +36 -0
  928. package/packages/host/dist/extensions/requirements/shared/methods.mjs.map +1 -0
  929. package/packages/host/dist/fanout.d.ts +89 -0
  930. package/packages/host/dist/fanout.js +273 -0
  931. package/packages/host/dist/fanout.js.map +1 -0
  932. package/packages/host/dist/files.d.ts +211 -0
  933. package/packages/host/dist/files.js +760 -0
  934. package/packages/host/dist/files.js.map +1 -0
  935. package/packages/host/dist/git.d.ts +261 -0
  936. package/packages/host/dist/git.js +787 -0
  937. package/packages/host/dist/git.js.map +1 -0
  938. package/packages/host/dist/gitlog.d.ts +14 -0
  939. package/packages/host/dist/gitlog.js +93 -0
  940. package/packages/host/dist/gitlog.js.map +1 -0
  941. package/packages/host/dist/halt.d.ts +35 -0
  942. package/packages/host/dist/halt.js +160 -0
  943. package/packages/host/dist/halt.js.map +1 -0
  944. package/packages/host/dist/healthwatch.d.ts +90 -0
  945. package/packages/host/dist/healthwatch.js +334 -0
  946. package/packages/host/dist/healthwatch.js.map +1 -0
  947. package/packages/host/dist/host.d.ts +51 -0
  948. package/packages/host/dist/host.js +153 -0
  949. package/packages/host/dist/host.js.map +1 -0
  950. package/packages/host/dist/hoststore.d.ts +24 -0
  951. package/packages/host/dist/hoststore.js +350 -0
  952. package/packages/host/dist/hoststore.js.map +1 -0
  953. package/packages/host/dist/httpio.d.ts +64 -0
  954. package/packages/host/dist/httpio.js +199 -0
  955. package/packages/host/dist/httpio.js.map +1 -0
  956. package/packages/host/dist/installlog.d.ts +25 -0
  957. package/packages/host/dist/installlog.js +137 -0
  958. package/packages/host/dist/installlog.js.map +1 -0
  959. package/packages/host/dist/intents/adapters.d.ts +285 -0
  960. package/packages/host/dist/intents/adapters.js +690 -0
  961. package/packages/host/dist/intents/adapters.js.map +1 -0
  962. package/packages/host/dist/intents/clock.d.ts +105 -0
  963. package/packages/host/dist/intents/clock.js +190 -0
  964. package/packages/host/dist/intents/clock.js.map +1 -0
  965. package/packages/host/dist/intents/contract.d.ts +488 -0
  966. package/packages/host/dist/intents/contract.js +155 -0
  967. package/packages/host/dist/intents/contract.js.map +1 -0
  968. package/packages/host/dist/intents/disk.d.ts +198 -0
  969. package/packages/host/dist/intents/disk.js +588 -0
  970. package/packages/host/dist/intents/disk.js.map +1 -0
  971. package/packages/host/dist/intents/fire.d.ts +112 -0
  972. package/packages/host/dist/intents/fire.js +545 -0
  973. package/packages/host/dist/intents/fire.js.map +1 -0
  974. package/packages/host/dist/intents/ladder.d.ts +7 -0
  975. package/packages/host/dist/intents/ladder.js +408 -0
  976. package/packages/host/dist/intents/ladder.js.map +1 -0
  977. package/packages/host/dist/intents/manager.d.ts +239 -0
  978. package/packages/host/dist/intents/manager.js +292 -0
  979. package/packages/host/dist/intents/manager.js.map +1 -0
  980. package/packages/host/dist/intents/requeue.d.ts +207 -0
  981. package/packages/host/dist/intents/requeue.js +521 -0
  982. package/packages/host/dist/intents/requeue.js.map +1 -0
  983. package/packages/host/dist/intents/watch.d.ts +92 -0
  984. package/packages/host/dist/intents/watch.js +464 -0
  985. package/packages/host/dist/intents/watch.js.map +1 -0
  986. package/packages/host/dist/intents/write.d.ts +238 -0
  987. package/packages/host/dist/intents/write.js +651 -0
  988. package/packages/host/dist/intents/write.js.map +1 -0
  989. package/packages/host/dist/jsonstore.d.ts +50 -0
  990. package/packages/host/dist/jsonstore.js +158 -0
  991. package/packages/host/dist/jsonstore.js.map +1 -0
  992. package/packages/host/dist/keyhints.d.ts +45 -0
  993. package/packages/host/dist/keyhints.js +117 -0
  994. package/packages/host/dist/keyhints.js.map +1 -0
  995. package/packages/host/dist/lanid.d.ts +21 -0
  996. package/packages/host/dist/lanid.js +78 -0
  997. package/packages/host/dist/lanid.js.map +1 -0
  998. package/packages/host/dist/launchfiles.d.ts +64 -0
  999. package/packages/host/dist/launchfiles.js +212 -0
  1000. package/packages/host/dist/launchfiles.js.map +1 -0
  1001. package/packages/host/dist/limit.d.ts +82 -0
  1002. package/packages/host/dist/limit.js +251 -0
  1003. package/packages/host/dist/limit.js.map +1 -0
  1004. package/packages/host/dist/limitlog.d.ts +51 -0
  1005. package/packages/host/dist/limitlog.js +154 -0
  1006. package/packages/host/dist/limitlog.js.map +1 -0
  1007. package/packages/host/dist/limitretry.d.ts +135 -0
  1008. package/packages/host/dist/limitretry.js +115 -0
  1009. package/packages/host/dist/limitretry.js.map +1 -0
  1010. package/packages/host/dist/livesources.d.ts +38 -0
  1011. package/packages/host/dist/livesources.js +26 -0
  1012. package/packages/host/dist/livesources.js.map +1 -0
  1013. package/packages/host/dist/localledger.d.ts +69 -0
  1014. package/packages/host/dist/localledger.js +214 -0
  1015. package/packages/host/dist/localledger.js.map +1 -0
  1016. package/packages/host/dist/localrt.d.ts +164 -0
  1017. package/packages/host/dist/localrt.js +414 -0
  1018. package/packages/host/dist/localrt.js.map +1 -0
  1019. package/packages/host/dist/localslot.d.ts +152 -0
  1020. package/packages/host/dist/localslot.js +269 -0
  1021. package/packages/host/dist/localslot.js.map +1 -0
  1022. package/packages/host/dist/localusage.d.ts +153 -0
  1023. package/packages/host/dist/localusage.js +710 -0
  1024. package/packages/host/dist/localusage.js.map +1 -0
  1025. package/packages/host/dist/login.d.ts +34 -0
  1026. package/packages/host/dist/login.js +126 -0
  1027. package/packages/host/dist/login.js.map +1 -0
  1028. package/packages/host/dist/main.d.ts +1 -0
  1029. package/packages/host/dist/main.js +694 -0
  1030. package/packages/host/dist/main.js.map +1 -0
  1031. package/packages/host/dist/meter.d.ts +23 -0
  1032. package/packages/host/dist/meter.js +121 -0
  1033. package/packages/host/dist/meter.js.map +1 -0
  1034. package/packages/host/dist/naming.d.ts +257 -0
  1035. package/packages/host/dist/naming.js +387 -0
  1036. package/packages/host/dist/naming.js.map +1 -0
  1037. package/packages/host/dist/net.d.ts +78 -0
  1038. package/packages/host/dist/net.js +267 -0
  1039. package/packages/host/dist/net.js.map +1 -0
  1040. package/packages/host/dist/netstats.d.ts +99 -0
  1041. package/packages/host/dist/netstats.js +223 -0
  1042. package/packages/host/dist/netstats.js.map +1 -0
  1043. package/packages/host/dist/notifyprefs.d.ts +12 -0
  1044. package/packages/host/dist/notifyprefs.js +60 -0
  1045. package/packages/host/dist/notifyprefs.js.map +1 -0
  1046. package/packages/host/dist/ocrlocal.d.ts +46 -0
  1047. package/packages/host/dist/ocrlocal.js +297 -0
  1048. package/packages/host/dist/ocrlocal.js.map +1 -0
  1049. package/packages/host/dist/onboard.d.ts +182 -0
  1050. package/packages/host/dist/onboard.js +590 -0
  1051. package/packages/host/dist/onboard.js.map +1 -0
  1052. package/packages/host/dist/onboardroutes.d.ts +31 -0
  1053. package/packages/host/dist/onboardroutes.js +78 -0
  1054. package/packages/host/dist/onboardroutes.js.map +1 -0
  1055. package/packages/host/dist/opendeliveries.d.ts +175 -0
  1056. package/packages/host/dist/opendeliveries.js +538 -0
  1057. package/packages/host/dist/opendeliveries.js.map +1 -0
  1058. package/packages/host/dist/optins.d.ts +14 -0
  1059. package/packages/host/dist/optins.js +252 -0
  1060. package/packages/host/dist/optins.js.map +1 -0
  1061. package/packages/host/dist/origin.d.ts +86 -0
  1062. package/packages/host/dist/origin.js +301 -0
  1063. package/packages/host/dist/origin.js.map +1 -0
  1064. package/packages/host/dist/pair.d.ts +149 -0
  1065. package/packages/host/dist/pair.js +505 -0
  1066. package/packages/host/dist/pair.js.map +1 -0
  1067. package/packages/host/dist/passive.d.ts +58 -0
  1068. package/packages/host/dist/passive.js +187 -0
  1069. package/packages/host/dist/passive.js.map +1 -0
  1070. package/packages/host/dist/paths.d.ts +67 -0
  1071. package/packages/host/dist/paths.js +135 -0
  1072. package/packages/host/dist/paths.js.map +1 -0
  1073. package/packages/host/dist/pathx.d.ts +6 -0
  1074. package/packages/host/dist/pathx.js +35 -0
  1075. package/packages/host/dist/pathx.js.map +1 -0
  1076. package/packages/host/dist/peers/agentpeer.d.ts +58 -0
  1077. package/packages/host/dist/peers/agentpeer.js +249 -0
  1078. package/packages/host/dist/peers/agentpeer.js.map +1 -0
  1079. package/packages/host/dist/peers/client.d.ts +60 -0
  1080. package/packages/host/dist/peers/client.js +96 -0
  1081. package/packages/host/dist/peers/client.js.map +1 -0
  1082. package/packages/host/dist/peers/jobs.d.ts +140 -0
  1083. package/packages/host/dist/peers/jobs.js +424 -0
  1084. package/packages/host/dist/peers/jobs.js.map +1 -0
  1085. package/packages/host/dist/peers/routes.d.ts +50 -0
  1086. package/packages/host/dist/peers/routes.js +191 -0
  1087. package/packages/host/dist/peers/routes.js.map +1 -0
  1088. package/packages/host/dist/peers/serve.d.ts +61 -0
  1089. package/packages/host/dist/peers/serve.js +532 -0
  1090. package/packages/host/dist/peers/serve.js.map +1 -0
  1091. package/packages/host/dist/peers/store.d.ts +64 -0
  1092. package/packages/host/dist/peers/store.js +128 -0
  1093. package/packages/host/dist/peers/store.js.map +1 -0
  1094. package/packages/host/dist/periodspend.d.ts +61 -0
  1095. package/packages/host/dist/periodspend.js +109 -0
  1096. package/packages/host/dist/periodspend.js.map +1 -0
  1097. package/packages/host/dist/permmode.d.ts +90 -0
  1098. package/packages/host/dist/permmode.js +157 -0
  1099. package/packages/host/dist/permmode.js.map +1 -0
  1100. package/packages/host/dist/planbox.d.ts +23 -0
  1101. package/packages/host/dist/planbox.js +123 -0
  1102. package/packages/host/dist/planbox.js.map +1 -0
  1103. package/packages/host/dist/plugins/builtin.d.ts +39 -0
  1104. package/packages/host/dist/plugins/builtin.js +200 -0
  1105. package/packages/host/dist/plugins/builtin.js.map +1 -0
  1106. package/packages/host/dist/plugins/pluginapi.d.ts +34 -0
  1107. package/packages/host/dist/plugins/pluginapi.js +649 -0
  1108. package/packages/host/dist/plugins/pluginapi.js.map +1 -0
  1109. package/packages/host/dist/plugins/pluginassets.d.ts +16 -0
  1110. package/packages/host/dist/plugins/pluginassets.js +44 -0
  1111. package/packages/host/dist/plugins/pluginassets.js.map +1 -0
  1112. package/packages/host/dist/plugins/pluginfiles.d.ts +30 -0
  1113. package/packages/host/dist/plugins/pluginfiles.js +130 -0
  1114. package/packages/host/dist/plugins/pluginfiles.js.map +1 -0
  1115. package/packages/host/dist/plugins/pluginloader.d.ts +59 -0
  1116. package/packages/host/dist/plugins/pluginloader.js +206 -0
  1117. package/packages/host/dist/plugins/pluginloader.js.map +1 -0
  1118. package/packages/host/dist/plugins/pluginregistry.d.ts +249 -0
  1119. package/packages/host/dist/plugins/pluginregistry.js +799 -0
  1120. package/packages/host/dist/plugins/pluginregistry.js.map +1 -0
  1121. package/packages/host/dist/plugins/pluginroutes.d.ts +29 -0
  1122. package/packages/host/dist/plugins/pluginroutes.js +50 -0
  1123. package/packages/host/dist/plugins/pluginroutes.js.map +1 -0
  1124. package/packages/host/dist/plugins/pluginrpc.d.ts +19 -0
  1125. package/packages/host/dist/plugins/pluginrpc.js +28 -0
  1126. package/packages/host/dist/plugins/pluginrpc.js.map +1 -0
  1127. package/packages/host/dist/plugins/pluginstreams.d.ts +109 -0
  1128. package/packages/host/dist/plugins/pluginstreams.js +418 -0
  1129. package/packages/host/dist/plugins/pluginstreams.js.map +1 -0
  1130. package/packages/host/dist/plugins/plugintoolkit/screen.d.ts +9 -0
  1131. package/packages/host/dist/plugins/plugintoolkit/screen.js +21 -0
  1132. package/packages/host/dist/plugins/plugintoolkit/screen.js.map +1 -0
  1133. package/packages/host/dist/plugins/plugintoolkit/sessionfiles.d.ts +6 -0
  1134. package/packages/host/dist/plugins/plugintoolkit/sessionfiles.js +24 -0
  1135. package/packages/host/dist/plugins/plugintoolkit/sessionfiles.js.map +1 -0
  1136. package/packages/host/dist/plugins/plugintoolkit/tail.d.ts +10 -0
  1137. package/packages/host/dist/plugins/plugintoolkit/tail.js +110 -0
  1138. package/packages/host/dist/plugins/plugintoolkit/tail.js.map +1 -0
  1139. package/packages/host/dist/plugins/setupcontrib.d.ts +64 -0
  1140. package/packages/host/dist/plugins/setupcontrib.js +94 -0
  1141. package/packages/host/dist/plugins/setupcontrib.js.map +1 -0
  1142. package/packages/host/dist/proc.d.ts +13 -0
  1143. package/packages/host/dist/proc.js +27 -0
  1144. package/packages/host/dist/proc.js.map +1 -0
  1145. package/packages/host/dist/prompt.d.ts +113 -0
  1146. package/packages/host/dist/prompt.js +565 -0
  1147. package/packages/host/dist/prompt.js.map +1 -0
  1148. package/packages/host/dist/promptbase.d.ts +28 -0
  1149. package/packages/host/dist/promptbase.js +42 -0
  1150. package/packages/host/dist/promptbase.js.map +1 -0
  1151. package/packages/host/dist/promptmerge.d.ts +63 -0
  1152. package/packages/host/dist/promptmerge.js +221 -0
  1153. package/packages/host/dist/promptmerge.js.map +1 -0
  1154. package/packages/host/dist/promptnav.d.ts +29 -0
  1155. package/packages/host/dist/promptnav.js +97 -0
  1156. package/packages/host/dist/promptnav.js.map +1 -0
  1157. package/packages/host/dist/prompts.d.ts +4 -0
  1158. package/packages/host/dist/prompts.js +78 -0
  1159. package/packages/host/dist/prompts.js.map +1 -0
  1160. package/packages/host/dist/ptycap.d.ts +41 -0
  1161. package/packages/host/dist/ptycap.js +192 -0
  1162. package/packages/host/dist/ptycap.js.map +1 -0
  1163. package/packages/host/dist/ptyenv.d.ts +3 -0
  1164. package/packages/host/dist/ptyenv.js +63 -0
  1165. package/packages/host/dist/ptyenv.js.map +1 -0
  1166. package/packages/host/dist/push.d.ts +42 -0
  1167. package/packages/host/dist/push.js +107 -0
  1168. package/packages/host/dist/push.js.map +1 -0
  1169. package/packages/host/dist/pushprogress.d.ts +27 -0
  1170. package/packages/host/dist/pushprogress.js +72 -0
  1171. package/packages/host/dist/pushprogress.js.map +1 -0
  1172. package/packages/host/dist/question.d.ts +60 -0
  1173. package/packages/host/dist/question.js +137 -0
  1174. package/packages/host/dist/question.js.map +1 -0
  1175. package/packages/host/dist/ratelimit.d.ts +44 -0
  1176. package/packages/host/dist/ratelimit.js +68 -0
  1177. package/packages/host/dist/ratelimit.js.map +1 -0
  1178. package/packages/host/dist/render.d.ts +50 -0
  1179. package/packages/host/dist/render.js +138 -0
  1180. package/packages/host/dist/render.js.map +1 -0
  1181. package/packages/host/dist/repohealth.d.ts +113 -0
  1182. package/packages/host/dist/repohealth.js +752 -0
  1183. package/packages/host/dist/repohealth.js.map +1 -0
  1184. package/packages/host/dist/repohealthapproval.d.ts +88 -0
  1185. package/packages/host/dist/repohealthapproval.js +709 -0
  1186. package/packages/host/dist/repohealthapproval.js.map +1 -0
  1187. package/packages/host/dist/repohealthscopes.d.ts +23 -0
  1188. package/packages/host/dist/repohealthscopes.js +124 -0
  1189. package/packages/host/dist/repohealthscopes.js.map +1 -0
  1190. package/packages/host/dist/repos.d.ts +25 -0
  1191. package/packages/host/dist/repos.js +181 -0
  1192. package/packages/host/dist/repos.js.map +1 -0
  1193. package/packages/host/dist/reposkill.d.ts +17 -0
  1194. package/packages/host/dist/reposkill.js +92 -0
  1195. package/packages/host/dist/reposkill.js.map +1 -0
  1196. package/packages/host/dist/reposkilltext.d.ts +16 -0
  1197. package/packages/host/dist/reposkilltext.js +320 -0
  1198. package/packages/host/dist/reposkilltext.js.map +1 -0
  1199. package/packages/host/dist/restartnote.d.ts +17 -0
  1200. package/packages/host/dist/restartnote.js +36 -0
  1201. package/packages/host/dist/restartnote.js.map +1 -0
  1202. package/packages/host/dist/review.d.ts +83 -0
  1203. package/packages/host/dist/review.js +513 -0
  1204. package/packages/host/dist/review.js.map +1 -0
  1205. package/packages/host/dist/rootchoice.d.ts +26 -0
  1206. package/packages/host/dist/rootchoice.js +101 -0
  1207. package/packages/host/dist/rootchoice.js.map +1 -0
  1208. package/packages/host/dist/routes/apihost.d.ts +2 -0
  1209. package/packages/host/dist/routes/apihost.js +532 -0
  1210. package/packages/host/dist/routes/apihost.js.map +1 -0
  1211. package/packages/host/dist/routes/apiio.d.ts +86 -0
  1212. package/packages/host/dist/routes/apiio.js +354 -0
  1213. package/packages/host/dist/routes/apiio.js.map +1 -0
  1214. package/packages/host/dist/routes/apirepofiles.d.ts +7 -0
  1215. package/packages/host/dist/routes/apirepofiles.js +382 -0
  1216. package/packages/host/dist/routes/apirepofiles.js.map +1 -0
  1217. package/packages/host/dist/routes/apirepowork.d.ts +2 -0
  1218. package/packages/host/dist/routes/apirepowork.js +500 -0
  1219. package/packages/host/dist/routes/apirepowork.js.map +1 -0
  1220. package/packages/host/dist/routes/apiroutes.d.ts +14 -0
  1221. package/packages/host/dist/routes/apiroutes.js +20 -0
  1222. package/packages/host/dist/routes/apiroutes.js.map +1 -0
  1223. package/packages/host/dist/routes/apisession.d.ts +2 -0
  1224. package/packages/host/dist/routes/apisession.js +197 -0
  1225. package/packages/host/dist/routes/apisession.js.map +1 -0
  1226. package/packages/host/dist/routes/apistats.d.ts +2 -0
  1227. package/packages/host/dist/routes/apistats.js +220 -0
  1228. package/packages/host/dist/routes/apistats.js.map +1 -0
  1229. package/packages/host/dist/routes/apisystem.d.ts +2 -0
  1230. package/packages/host/dist/routes/apisystem.js +389 -0
  1231. package/packages/host/dist/routes/apisystem.js.map +1 -0
  1232. package/packages/host/dist/routes/apitable.d.ts +180 -0
  1233. package/packages/host/dist/routes/apitable.js +71 -0
  1234. package/packages/host/dist/routes/apitable.js.map +1 -0
  1235. package/packages/host/dist/routes/index.d.ts +19 -0
  1236. package/packages/host/dist/routes/index.js +65 -0
  1237. package/packages/host/dist/routes/index.js.map +1 -0
  1238. package/packages/host/dist/routes/session.d.ts +2 -0
  1239. package/packages/host/dist/routes/session.js +771 -0
  1240. package/packages/host/dist/routes/session.js.map +1 -0
  1241. package/packages/host/dist/routes/system.d.ts +24 -0
  1242. package/packages/host/dist/routes/system.js +530 -0
  1243. package/packages/host/dist/routes/system.js.map +1 -0
  1244. package/packages/host/dist/routes/types.d.ts +283 -0
  1245. package/packages/host/dist/routes/types.js +2 -0
  1246. package/packages/host/dist/routes/types.js.map +1 -0
  1247. package/packages/host/dist/routes/work/workassess.d.ts +2 -0
  1248. package/packages/host/dist/routes/work/workassess.js +182 -0
  1249. package/packages/host/dist/routes/work/workassess.js.map +1 -0
  1250. package/packages/host/dist/routes/work/workbacklog.d.ts +2 -0
  1251. package/packages/host/dist/routes/work/workbacklog.js +329 -0
  1252. package/packages/host/dist/routes/work/workbacklog.js.map +1 -0
  1253. package/packages/host/dist/routes/work/workbuild.d.ts +2 -0
  1254. package/packages/host/dist/routes/work/workbuild.js +250 -0
  1255. package/packages/host/dist/routes/work/workbuild.js.map +1 -0
  1256. package/packages/host/dist/routes/work/workintent.d.ts +2 -0
  1257. package/packages/host/dist/routes/work/workintent.js +167 -0
  1258. package/packages/host/dist/routes/work/workintent.js.map +1 -0
  1259. package/packages/host/dist/routes/work/workschedule.d.ts +2 -0
  1260. package/packages/host/dist/routes/work/workschedule.js +131 -0
  1261. package/packages/host/dist/routes/work/workschedule.js.map +1 -0
  1262. package/packages/host/dist/routes/work.d.ts +10 -0
  1263. package/packages/host/dist/routes/work.js +13 -0
  1264. package/packages/host/dist/routes/work.js.map +1 -0
  1265. package/packages/host/dist/scaffold.d.ts +104 -0
  1266. package/packages/host/dist/scaffold.js +417 -0
  1267. package/packages/host/dist/scaffold.js.map +1 -0
  1268. package/packages/host/dist/screenlog.d.ts +43 -0
  1269. package/packages/host/dist/screenlog.js +209 -0
  1270. package/packages/host/dist/screenlog.js.map +1 -0
  1271. package/packages/host/dist/secrets.d.ts +72 -0
  1272. package/packages/host/dist/secrets.js +258 -0
  1273. package/packages/host/dist/secrets.js.map +1 -0
  1274. package/packages/host/dist/sentlog.d.ts +82 -0
  1275. package/packages/host/dist/sentlog.js +186 -0
  1276. package/packages/host/dist/sentlog.js.map +1 -0
  1277. package/packages/host/dist/server/billingwire.d.ts +24 -0
  1278. package/packages/host/dist/server/billingwire.js +73 -0
  1279. package/packages/host/dist/server/billingwire.js.map +1 -0
  1280. package/packages/host/dist/server/clients.d.ts +52 -0
  1281. package/packages/host/dist/server/clients.js +178 -0
  1282. package/packages/host/dist/server/clients.js.map +1 -0
  1283. package/packages/host/dist/server/ctx.d.ts +118 -0
  1284. package/packages/host/dist/server/ctx.js +2 -0
  1285. package/packages/host/dist/server/ctx.js.map +1 -0
  1286. package/packages/host/dist/server/ctxseal.d.ts +21 -0
  1287. package/packages/host/dist/server/ctxseal.js +24 -0
  1288. package/packages/host/dist/server/ctxseal.js.map +1 -0
  1289. package/packages/host/dist/server/deliveries.d.ts +20 -0
  1290. package/packages/host/dist/server/deliveries.js +276 -0
  1291. package/packages/host/dist/server/deliveries.js.map +1 -0
  1292. package/packages/host/dist/server/firstapp.d.ts +12 -0
  1293. package/packages/host/dist/server/firstapp.js +37 -0
  1294. package/packages/host/dist/server/firstapp.js.map +1 -0
  1295. package/packages/host/dist/server/http.d.ts +34 -0
  1296. package/packages/host/dist/server/http.js +475 -0
  1297. package/packages/host/dist/server/http.js.map +1 -0
  1298. package/packages/host/dist/server/intentDeps.d.ts +36 -0
  1299. package/packages/host/dist/server/intentDeps.js +418 -0
  1300. package/packages/host/dist/server/intentDeps.js.map +1 -0
  1301. package/packages/host/dist/server/intentEvents.d.ts +13 -0
  1302. package/packages/host/dist/server/intentEvents.js +234 -0
  1303. package/packages/host/dist/server/intentEvents.js.map +1 -0
  1304. package/packages/host/dist/server/liveness.d.ts +64 -0
  1305. package/packages/host/dist/server/liveness.js +74 -0
  1306. package/packages/host/dist/server/liveness.js.map +1 -0
  1307. package/packages/host/dist/server/scan.d.ts +41 -0
  1308. package/packages/host/dist/server/scan.js +227 -0
  1309. package/packages/host/dist/server/scan.js.map +1 -0
  1310. package/packages/host/dist/server/sessionEvents.d.ts +40 -0
  1311. package/packages/host/dist/server/sessionEvents.js +509 -0
  1312. package/packages/host/dist/server/sessionEvents.js.map +1 -0
  1313. package/packages/host/dist/server/shutdown.d.ts +11 -0
  1314. package/packages/host/dist/server/shutdown.js +135 -0
  1315. package/packages/host/dist/server/shutdown.js.map +1 -0
  1316. package/packages/host/dist/server/wsops.d.ts +44 -0
  1317. package/packages/host/dist/server/wsops.js +313 -0
  1318. package/packages/host/dist/server/wsops.js.map +1 -0
  1319. package/packages/host/dist/sessionSearch.d.ts +46 -0
  1320. package/packages/host/dist/sessionSearch.js +93 -0
  1321. package/packages/host/dist/sessionSearch.js.map +1 -0
  1322. package/packages/host/dist/sessionbudget.d.ts +61 -0
  1323. package/packages/host/dist/sessionbudget.js +84 -0
  1324. package/packages/host/dist/sessionbudget.js.map +1 -0
  1325. package/packages/host/dist/sessions/boxes.d.ts +112 -0
  1326. package/packages/host/dist/sessions/boxes.js +968 -0
  1327. package/packages/host/dist/sessions/boxes.js.map +1 -0
  1328. package/packages/host/dist/sessions/budgetwatch.d.ts +95 -0
  1329. package/packages/host/dist/sessions/budgetwatch.js +171 -0
  1330. package/packages/host/dist/sessions/budgetwatch.js.map +1 -0
  1331. package/packages/host/dist/sessions/convid.d.ts +72 -0
  1332. package/packages/host/dist/sessions/convid.js +305 -0
  1333. package/packages/host/dist/sessions/convid.js.map +1 -0
  1334. package/packages/host/dist/sessions/core.d.ts +749 -0
  1335. package/packages/host/dist/sessions/core.js +2 -0
  1336. package/packages/host/dist/sessions/core.js.map +1 -0
  1337. package/packages/host/dist/sessions/ctxseries.d.ts +184 -0
  1338. package/packages/host/dist/sessions/ctxseries.js +766 -0
  1339. package/packages/host/dist/sessions/ctxseries.js.map +1 -0
  1340. package/packages/host/dist/sessions/drive.d.ts +207 -0
  1341. package/packages/host/dist/sessions/drive.js +779 -0
  1342. package/packages/host/dist/sessions/drive.js.map +1 -0
  1343. package/packages/host/dist/sessions/haltall.d.ts +36 -0
  1344. package/packages/host/dist/sessions/haltall.js +95 -0
  1345. package/packages/host/dist/sessions/haltall.js.map +1 -0
  1346. package/packages/host/dist/sessions/health.d.ts +88 -0
  1347. package/packages/host/dist/sessions/health.js +108 -0
  1348. package/packages/host/dist/sessions/health.js.map +1 -0
  1349. package/packages/host/dist/sessions/idlewatch.d.ts +34 -0
  1350. package/packages/host/dist/sessions/idlewatch.js +74 -0
  1351. package/packages/host/dist/sessions/idlewatch.js.map +1 -0
  1352. package/packages/host/dist/sessions/knobs.d.ts +315 -0
  1353. package/packages/host/dist/sessions/knobs.js +411 -0
  1354. package/packages/host/dist/sessions/knobs.js.map +1 -0
  1355. package/packages/host/dist/sessions/links.d.ts +53 -0
  1356. package/packages/host/dist/sessions/links.js +209 -0
  1357. package/packages/host/dist/sessions/links.js.map +1 -0
  1358. package/packages/host/dist/sessions/livemode.d.ts +56 -0
  1359. package/packages/host/dist/sessions/livemode.js +300 -0
  1360. package/packages/host/dist/sessions/livemode.js.map +1 -0
  1361. package/packages/host/dist/sessions/record.d.ts +196 -0
  1362. package/packages/host/dist/sessions/record.js +719 -0
  1363. package/packages/host/dist/sessions/record.js.map +1 -0
  1364. package/packages/host/dist/sessions/resume.d.ts +164 -0
  1365. package/packages/host/dist/sessions/resume.js +629 -0
  1366. package/packages/host/dist/sessions/resume.js.map +1 -0
  1367. package/packages/host/dist/sessions/roster.d.ts +164 -0
  1368. package/packages/host/dist/sessions/roster.js +566 -0
  1369. package/packages/host/dist/sessions/roster.js.map +1 -0
  1370. package/packages/host/dist/sessions/sidechannel.d.ts +96 -0
  1371. package/packages/host/dist/sessions/sidechannel.js +726 -0
  1372. package/packages/host/dist/sessions/sidechannel.js.map +1 -0
  1373. package/packages/host/dist/sessions/tmux.d.ts +247 -0
  1374. package/packages/host/dist/sessions/tmux.js +731 -0
  1375. package/packages/host/dist/sessions/tmux.js.map +1 -0
  1376. package/packages/host/dist/sessions/turn.d.ts +237 -0
  1377. package/packages/host/dist/sessions/turn.js +1003 -0
  1378. package/packages/host/dist/sessions/turn.js.map +1 -0
  1379. package/packages/host/dist/sessions/wall.d.ts +117 -0
  1380. package/packages/host/dist/sessions/wall.js +658 -0
  1381. package/packages/host/dist/sessions/wall.js.map +1 -0
  1382. package/packages/host/dist/sessions.d.ts +255 -0
  1383. package/packages/host/dist/sessions.js +758 -0
  1384. package/packages/host/dist/sessions.js.map +1 -0
  1385. package/packages/host/dist/settings.d.ts +40 -0
  1386. package/packages/host/dist/settings.js +171 -0
  1387. package/packages/host/dist/settings.js.map +1 -0
  1388. package/packages/host/dist/settle.d.ts +171 -0
  1389. package/packages/host/dist/settle.js +409 -0
  1390. package/packages/host/dist/settle.js.map +1 -0
  1391. package/packages/host/dist/setupprefs.d.ts +51 -0
  1392. package/packages/host/dist/setupprefs.js +178 -0
  1393. package/packages/host/dist/setupprefs.js.map +1 -0
  1394. package/packages/host/dist/setupwatch.d.ts +39 -0
  1395. package/packages/host/dist/setupwatch.js +249 -0
  1396. package/packages/host/dist/setupwatch.js.map +1 -0
  1397. package/packages/host/dist/shelllinks.d.ts +39 -0
  1398. package/packages/host/dist/shelllinks.js +292 -0
  1399. package/packages/host/dist/shelllinks.js.map +1 -0
  1400. package/packages/host/dist/shells.d.ts +190 -0
  1401. package/packages/host/dist/shells.js +633 -0
  1402. package/packages/host/dist/shells.js.map +1 -0
  1403. package/packages/host/dist/sidecar/sidecarclaude.d.ts +120 -0
  1404. package/packages/host/dist/sidecar/sidecarclaude.js +213 -0
  1405. package/packages/host/dist/sidecar/sidecarclaude.js.map +1 -0
  1406. package/packages/host/dist/sidecar/sidecarname.d.ts +99 -0
  1407. package/packages/host/dist/sidecar/sidecarname.js +163 -0
  1408. package/packages/host/dist/sidecar/sidecarname.js.map +1 -0
  1409. package/packages/host/dist/sidecar/sidecaropenai.d.ts +24 -0
  1410. package/packages/host/dist/sidecar/sidecaropenai.js +129 -0
  1411. package/packages/host/dist/sidecar/sidecaropenai.js.map +1 -0
  1412. package/packages/host/dist/sidecar/sidecarroute.d.ts +65 -0
  1413. package/packages/host/dist/sidecar/sidecarroute.js +158 -0
  1414. package/packages/host/dist/sidecar/sidecarroute.js.map +1 -0
  1415. package/packages/host/dist/sidecar/sidecartasks.d.ts +20 -0
  1416. package/packages/host/dist/sidecar/sidecartasks.js +63 -0
  1417. package/packages/host/dist/sidecar/sidecartasks.js.map +1 -0
  1418. package/packages/host/dist/sidecar/sidecartrust.d.ts +32 -0
  1419. package/packages/host/dist/sidecar/sidecartrust.js +74 -0
  1420. package/packages/host/dist/sidecar/sidecartrust.js.map +1 -0
  1421. package/packages/host/dist/sidecar.d.ts +82 -0
  1422. package/packages/host/dist/sidecar.js +78 -0
  1423. package/packages/host/dist/sidecar.js.map +1 -0
  1424. package/packages/host/dist/signkey.d.ts +57 -0
  1425. package/packages/host/dist/signkey.js +159 -0
  1426. package/packages/host/dist/signkey.js.map +1 -0
  1427. package/packages/host/dist/slash.d.ts +43 -0
  1428. package/packages/host/dist/slash.js +236 -0
  1429. package/packages/host/dist/slash.js.map +1 -0
  1430. package/packages/host/dist/sourceanswer.d.ts +103 -0
  1431. package/packages/host/dist/sourceanswer.js +193 -0
  1432. package/packages/host/dist/sourceanswer.js.map +1 -0
  1433. package/packages/host/dist/speedtest.d.ts +57 -0
  1434. package/packages/host/dist/speedtest.js +137 -0
  1435. package/packages/host/dist/speedtest.js.map +1 -0
  1436. package/packages/host/dist/spendwall.d.ts +33 -0
  1437. package/packages/host/dist/spendwall.js +45 -0
  1438. package/packages/host/dist/spendwall.js.map +1 -0
  1439. package/packages/host/dist/sysstat.d.ts +134 -0
  1440. package/packages/host/dist/sysstat.js +630 -0
  1441. package/packages/host/dist/sysstat.js.map +1 -0
  1442. package/packages/host/dist/tailnetpeers.d.ts +34 -0
  1443. package/packages/host/dist/tailnetpeers.js +116 -0
  1444. package/packages/host/dist/tailnetpeers.js.map +1 -0
  1445. package/packages/host/dist/tailscaleguard.d.ts +11 -0
  1446. package/packages/host/dist/tailscaleguard.js +133 -0
  1447. package/packages/host/dist/tailscaleguard.js.map +1 -0
  1448. package/packages/host/dist/termqueries.d.ts +124 -0
  1449. package/packages/host/dist/termqueries.js +207 -0
  1450. package/packages/host/dist/termqueries.js.map +1 -0
  1451. package/packages/host/dist/themeoverlay.d.ts +74 -0
  1452. package/packages/host/dist/themeoverlay.js +262 -0
  1453. package/packages/host/dist/themeoverlay.js.map +1 -0
  1454. package/packages/host/dist/thumbs.d.ts +69 -0
  1455. package/packages/host/dist/thumbs.js +359 -0
  1456. package/packages/host/dist/thumbs.js.map +1 -0
  1457. package/packages/host/dist/tmuxreq.d.ts +91 -0
  1458. package/packages/host/dist/tmuxreq.js +207 -0
  1459. package/packages/host/dist/tmuxreq.js.map +1 -0
  1460. package/packages/host/dist/tmuxscroll.d.ts +70 -0
  1461. package/packages/host/dist/tmuxscroll.js +206 -0
  1462. package/packages/host/dist/tmuxscroll.js.map +1 -0
  1463. package/packages/host/dist/tokenscan.d.ts +63 -0
  1464. package/packages/host/dist/tokenscan.js +220 -0
  1465. package/packages/host/dist/tokenscan.js.map +1 -0
  1466. package/packages/host/dist/tokenstats.d.ts +115 -0
  1467. package/packages/host/dist/tokenstats.js +763 -0
  1468. package/packages/host/dist/tokenstats.js.map +1 -0
  1469. package/packages/host/dist/toolchain.d.ts +147 -0
  1470. package/packages/host/dist/toolchain.js +468 -0
  1471. package/packages/host/dist/toolchain.js.map +1 -0
  1472. package/packages/host/dist/transcript/transcriptlog.d.ts +134 -0
  1473. package/packages/host/dist/transcript/transcriptlog.js +300 -0
  1474. package/packages/host/dist/transcript/transcriptlog.js.map +1 -0
  1475. package/packages/host/dist/transcript/transcriptparse.d.ts +28 -0
  1476. package/packages/host/dist/transcript/transcriptparse.js +377 -0
  1477. package/packages/host/dist/transcript/transcriptparse.js.map +1 -0
  1478. package/packages/host/dist/transcript/transcriptscreen.d.ts +71 -0
  1479. package/packages/host/dist/transcript/transcriptscreen.js +120 -0
  1480. package/packages/host/dist/transcript/transcriptscreen.js.map +1 -0
  1481. package/packages/host/dist/transcript/transcriptturns.d.ts +139 -0
  1482. package/packages/host/dist/transcript/transcriptturns.js +270 -0
  1483. package/packages/host/dist/transcript/transcriptturns.js.map +1 -0
  1484. package/packages/host/dist/transcript.d.ts +28 -0
  1485. package/packages/host/dist/transcript.js +34 -0
  1486. package/packages/host/dist/transcript.js.map +1 -0
  1487. package/packages/host/dist/transportsurvey.d.ts +10 -0
  1488. package/packages/host/dist/transportsurvey.js +109 -0
  1489. package/packages/host/dist/transportsurvey.js.map +1 -0
  1490. package/packages/host/dist/tree.d.ts +80 -0
  1491. package/packages/host/dist/tree.js +372 -0
  1492. package/packages/host/dist/tree.js.map +1 -0
  1493. package/packages/host/dist/turnagents.d.ts +17 -0
  1494. package/packages/host/dist/turnagents.js +205 -0
  1495. package/packages/host/dist/turnagents.js.map +1 -0
  1496. package/packages/host/dist/uistats.d.ts +18 -0
  1497. package/packages/host/dist/uistats.js +105 -0
  1498. package/packages/host/dist/uistats.js.map +1 -0
  1499. package/packages/host/dist/update.d.ts +100 -0
  1500. package/packages/host/dist/update.js +536 -0
  1501. package/packages/host/dist/update.js.map +1 -0
  1502. package/packages/host/dist/updates/apply.d.ts +45 -0
  1503. package/packages/host/dist/updates/apply.js +362 -0
  1504. package/packages/host/dist/updates/apply.js.map +1 -0
  1505. package/packages/host/dist/updates/catalog.d.ts +11 -0
  1506. package/packages/host/dist/updates/catalog.js +123 -0
  1507. package/packages/host/dist/updates/catalog.js.map +1 -0
  1508. package/packages/host/dist/updates/checker.d.ts +73 -0
  1509. package/packages/host/dist/updates/checker.js +189 -0
  1510. package/packages/host/dist/updates/checker.js.map +1 -0
  1511. package/packages/host/dist/updates/github.d.ts +13 -0
  1512. package/packages/host/dist/updates/github.js +63 -0
  1513. package/packages/host/dist/updates/github.js.map +1 -0
  1514. package/packages/host/dist/updates/gitops.d.ts +16 -0
  1515. package/packages/host/dist/updates/gitops.js +61 -0
  1516. package/packages/host/dist/updates/gitops.js.map +1 -0
  1517. package/packages/host/dist/updates/installrecord.d.ts +26 -0
  1518. package/packages/host/dist/updates/installrecord.js +42 -0
  1519. package/packages/host/dist/updates/installrecord.js.map +1 -0
  1520. package/packages/host/dist/updates/remote.d.ts +10 -0
  1521. package/packages/host/dist/updates/remote.js +54 -0
  1522. package/packages/host/dist/updates/remote.js.map +1 -0
  1523. package/packages/host/dist/updates/restart.d.ts +5 -0
  1524. package/packages/host/dist/updates/restart.js +20 -0
  1525. package/packages/host/dist/updates/restart.js.map +1 -0
  1526. package/packages/host/dist/updates/self.d.ts +19 -0
  1527. package/packages/host/dist/updates/self.js +51 -0
  1528. package/packages/host/dist/updates/self.js.map +1 -0
  1529. package/packages/host/dist/updates/wire.d.ts +18 -0
  1530. package/packages/host/dist/updates/wire.js +21 -0
  1531. package/packages/host/dist/updates/wire.js.map +1 -0
  1532. package/packages/host/dist/usage.d.ts +124 -0
  1533. package/packages/host/dist/usage.js +411 -0
  1534. package/packages/host/dist/usage.js.map +1 -0
  1535. package/packages/host/dist/usagelog.d.ts +53 -0
  1536. package/packages/host/dist/usagelog.js +223 -0
  1537. package/packages/host/dist/usagelog.js.map +1 -0
  1538. package/packages/host/dist/usagesourcelog.d.ts +59 -0
  1539. package/packages/host/dist/usagesourcelog.js +208 -0
  1540. package/packages/host/dist/usagesourcelog.js.map +1 -0
  1541. package/packages/host/dist/usagesources.d.ts +175 -0
  1542. package/packages/host/dist/usagesources.js +462 -0
  1543. package/packages/host/dist/usagesources.js.map +1 -0
  1544. package/packages/host/dist/visualskill.d.ts +36 -0
  1545. package/packages/host/dist/visualskill.js +230 -0
  1546. package/packages/host/dist/visualskill.js.map +1 -0
  1547. package/packages/host/dist/webbundle.d.ts +47 -0
  1548. package/packages/host/dist/webbundle.js +155 -0
  1549. package/packages/host/dist/webbundle.js.map +1 -0
  1550. package/packages/host/dist/wirerecord.d.ts +5 -0
  1551. package/packages/host/dist/wirerecord.js +128 -0
  1552. package/packages/host/dist/wirerecord.js.map +1 -0
  1553. package/packages/host/dist/worktreeleftover.d.ts +27 -0
  1554. package/packages/host/dist/worktreeleftover.js +153 -0
  1555. package/packages/host/dist/worktreeleftover.js.map +1 -0
  1556. package/packages/host/dist/worktreeowner.d.ts +17 -0
  1557. package/packages/host/dist/worktreeowner.js +45 -0
  1558. package/packages/host/dist/worktreeowner.js.map +1 -0
  1559. package/packages/host/package.json +26 -0
  1560. package/packages/web/dist/assets/apple-touch-icon.png +0 -0
  1561. package/packages/web/dist/assets/badge-96.png +0 -0
  1562. package/packages/web/dist/assets/demo-CXlqlYE4.js +23 -0
  1563. package/packages/web/dist/assets/hero.png +0 -0
  1564. package/packages/web/dist/assets/icon-192.png +0 -0
  1565. package/packages/web/dist/assets/icon-32.png +0 -0
  1566. package/packages/web/dist/assets/icon-48.png +0 -0
  1567. package/packages/web/dist/assets/icon-512-maskable.png +0 -0
  1568. package/packages/web/dist/assets/icon-512.png +0 -0
  1569. package/packages/web/dist/assets/icon-dark.svg +43 -0
  1570. package/packages/web/dist/assets/icon-light.svg +42 -0
  1571. package/packages/web/dist/assets/icon.svg +11 -0
  1572. package/packages/web/dist/assets/icons-BbqDBVjw.js +1 -0
  1573. package/packages/web/dist/assets/index-CgPoyb3Y.css +1 -0
  1574. package/packages/web/dist/assets/index-D5JKj8DK.js +169 -0
  1575. package/packages/web/dist/assets/react-CoSyT_xY.js +8 -0
  1576. package/packages/web/dist/assets/rolldown-runtime-BpQH8Ho1.js +1 -0
  1577. package/packages/web/dist/assets/shared-eyaskl5l.js +47 -0
  1578. package/packages/web/dist/assets/sheets-Bjv2L-cG.css +1 -0
  1579. package/packages/web/dist/assets/sheets-BzzL2re1.js +204 -0
  1580. package/packages/web/dist/assets/vendor-BPwPmufs.js +3 -0
  1581. package/packages/web/dist/assets/xterm-BrP-ENHg.css +1 -0
  1582. package/packages/web/dist/assets/xterm-C8zLTNGk.js +16 -0
  1583. package/packages/web/dist/build-id.txt +1 -0
  1584. package/packages/web/dist/demo/media/r1/dot-claude/inbox/swipe-sketch.png +0 -0
  1585. package/packages/web/dist/demo/media/r1/dot-claude/outbox/todo-garden-android-fixed.png +0 -0
  1586. package/packages/web/dist/demo/media/r1/dot-claude/outbox/todo-garden-android.png +0 -0
  1587. package/packages/web/dist/demo/media/r1/dot-claude/outbox/todo-garden-before.png +0 -0
  1588. package/packages/web/dist/demo/media/r1/dot-claude/outbox/todo-garden-date-picker.png +0 -0
  1589. package/packages/web/dist/demo/media/r1/dot-claude/outbox/todo-garden-empty-state.png +0 -0
  1590. package/packages/web/dist/demo/media/r1/dot-claude/outbox/todo-garden-grouped.png +0 -0
  1591. package/packages/web/dist/demo/media/r1/dot-claude/outbox/todo-garden-ios.png +0 -0
  1592. package/packages/web/dist/demo/media/r1/dot-claude/outbox/todo-garden-preview.html +18 -0
  1593. package/packages/web/dist/demo/media/r1/dot-claude/outbox/todo-garden-release-notes.md +21 -0
  1594. package/packages/web/dist/demo/media/r1/dot-claude/outbox/todo-garden-sorted.png +0 -0
  1595. package/packages/web/dist/demo/media/r3/dot-claude/outbox/trail-log-ridge-loop.png +0 -0
  1596. package/packages/web/dist/index.html +84 -0
  1597. package/packages/web/dist/manifest.webmanifest +16 -0
  1598. package/packages/web/dist/sw.js +420 -0
  1599. package/release.json +22 -0
  1600. package/scripts/windows/keeper.ps1 +60 -0
  1601. package/scripts/windows/wsl-setup.sh +173 -0
  1602. package/tools/repohealth/census.mjs +353 -0
  1603. package/tools/repohealth/central.mjs +234 -0
  1604. package/tools/repohealth/constants.mjs +420 -0
  1605. package/tools/repohealth/events.mjs +563 -0
  1606. package/tools/repohealth/fixture.json +17976 -0
  1607. package/tools/repohealth/git.mjs +471 -0
  1608. package/tools/repohealth/html.mjs +601 -0
  1609. package/tools/repohealth/judge.mjs +546 -0
  1610. package/tools/repohealth/lang/typescript-ast.mjs +538 -0
  1611. package/tools/repohealth/metrics/classics.mjs +239 -0
  1612. package/tools/repohealth/metrics/cochange.mjs +234 -0
  1613. package/tools/repohealth/metrics/context.mjs +411 -0
  1614. package/tools/repohealth/metrics/deadexports.mjs +122 -0
  1615. package/tools/repohealth/metrics/dups.mjs +261 -0
  1616. package/tools/repohealth/metrics/hatches.mjs +164 -0
  1617. package/tools/repohealth/metrics/retouch.mjs +326 -0
  1618. package/tools/repohealth/metrics/route.mjs +159 -0
  1619. package/tools/repohealth/metrics/size.mjs +120 -0
  1620. package/tools/repohealth/metrics/tripwires.mjs +258 -0
  1621. package/tools/repohealth/metrics/untested.mjs +308 -0
  1622. package/tools/repohealth/narrate.mjs +342 -0
  1623. package/tools/repohealth/own.mjs +238 -0
  1624. package/tools/repohealth/packs/c.mjs +124 -0
  1625. package/tools/repohealth/packs/common.mjs +205 -0
  1626. package/tools/repohealth/packs/dart.mjs +118 -0
  1627. package/tools/repohealth/packs/index.mjs +83 -0
  1628. package/tools/repohealth/packs/kotlin.mjs +320 -0
  1629. package/tools/repohealth/packs/python.mjs +488 -0
  1630. package/tools/repohealth/packs/shell.mjs +88 -0
  1631. package/tools/repohealth/packs/typescript.mjs +604 -0
  1632. package/tools/repohealth/plot.mjs +462 -0
  1633. package/tools/repohealth/readings.mjs +427 -0
  1634. package/tools/repohealth/scope.mjs +184 -0
  1635. package/tools/repohealth/series.mjs +360 -0
  1636. package/tools/repohealth/snapshot.mjs +431 -0
  1637. package/tools/repohealth/source.mjs +266 -0
  1638. package/tools/repohealth/statefile.mjs +31 -0
  1639. package/tools/repohealth/types.mjs +316 -0
  1640. package/tools/repohealth.mjs +767 -0
  1641. package/tools/skillmap.mjs +109 -0
@@ -0,0 +1,153 @@
1
+ import { readdirSync, statSync } from "node:fs";
2
+ import { join, sep } from "node:path";
3
+ import { execFileP as pexec } from "./proc.js";
4
+ /**
5
+ * A worktree nobody is using, and whether it can go.
6
+ *
7
+ * They pile up because the thing that made one is not around to remove it: an
8
+ * orchestrating session runs `git worktree add` for a wave of agents and then
9
+ * dies (a limit, a closed tab) before its cleanup step — measured here, five
10
+ * `fix-*` worktrees at main's own commit, made a minute before their session's
11
+ * last record. The launcher showed them as bare rows with no word on why.
12
+ *
13
+ * Removing one is only ever offered when NOTHING lives only there — see
14
+ * `WorktreeLeftover`. The remove re-derives the whole check rather than trusting
15
+ * the reading the phone looked at, and uses `git worktree remove` WITHOUT
16
+ * `--force` and `git branch -d` where it can, so git refuses too if this check
17
+ * is ever wrong.
18
+ */
19
+ const TIMEOUT = 15_000;
20
+ async function git(cwd, args) {
21
+ const { stdout } = await pexec("git", args, { cwd, timeout: TIMEOUT, maxBuffer: 8 * 1024 * 1024 });
22
+ return stdout;
23
+ }
24
+ /** The primary checkout's path and branch: `git worktree list`'s first entry. */
25
+ async function primaryOf(wt) {
26
+ const out = await git(wt, ["worktree", "list", "--porcelain"]);
27
+ const first = out.split("\n\n")[0] ?? "";
28
+ const path = /^worktree (.+)$/m.exec(first)?.[1]?.trim() ?? "";
29
+ const branch = /^branch refs\/heads\/(.+)$/m.exec(first)?.[1]?.trim() ?? null;
30
+ return { path, branch };
31
+ }
32
+ /** Files under the gitignored transport dirs — nothing in git would save them. */
33
+ function countTransport(wt) {
34
+ let n = 0;
35
+ const walk = (dir, depth) => {
36
+ if (depth > 6)
37
+ return;
38
+ let ents;
39
+ try {
40
+ ents = readdirSync(dir, { withFileTypes: true });
41
+ }
42
+ catch {
43
+ return;
44
+ }
45
+ for (const e of ents) {
46
+ if (e.isDirectory())
47
+ walk(join(dir, e.name), depth + 1);
48
+ // The read markers are bookkeeping, not anybody's file.
49
+ else if (!e.name.startsWith(".seen"))
50
+ n++;
51
+ }
52
+ };
53
+ walk(join(wt, ".claude", "outbox"), 0);
54
+ walk(join(wt, ".claude", "inbox"), 0);
55
+ return n;
56
+ }
57
+ /**
58
+ * How long a worktree must have sat untouched before it is offered for removal.
59
+ * A wave of agents gets its worktrees a moment before the agents start, and a
60
+ * fresh one is clean by definition — every other check passes on it. An hour of
61
+ * no git activity is what separates "about to be used" from "left behind".
62
+ */
63
+ export const LEFTOVER_IDLE_MIN = 60;
64
+ /** Minutes since git last wrote this worktree's HEAD, index or reflog. */
65
+ async function idleMinutes(wt) {
66
+ try {
67
+ const admin = (await git(wt, ["rev-parse", "--absolute-git-dir"])).trim();
68
+ let newest = 0;
69
+ for (const f of ["HEAD", "index", join("logs", "HEAD")]) {
70
+ try {
71
+ newest = Math.max(newest, statSync(join(admin, f)).mtimeMs);
72
+ }
73
+ catch { /* absent is fine */ }
74
+ }
75
+ return newest ? Math.floor((Date.now() - newest) / 60_000) : null;
76
+ }
77
+ catch {
78
+ return null;
79
+ }
80
+ }
81
+ const plural = (n, one, many = `${one}s`) => `${n} ${n === 1 ? one : many}`;
82
+ export async function worktreeLeftover({ wt, branch, sessions, ownerLive }) {
83
+ const blockers = [];
84
+ const primary = await primaryOf(wt);
85
+ const base = primary.branch ?? "";
86
+ if (!primary.path || primary.path === wt)
87
+ blockers.push("This is the repo's main checkout, not a worktree.");
88
+ if (!base)
89
+ blockers.push("The main checkout is on no branch, so there is nothing to check this worktree's commits against.");
90
+ let ahead = 0;
91
+ let unlanded = 0;
92
+ if (base) {
93
+ ahead = Number((await git(wt, ["rev-list", "--count", "HEAD", "--not", `refs/heads/${base}`])).trim()) || 0;
94
+ // `+` = a commit whose patch is not on base. A cherry-picked agent commit
95
+ // has a new SHA on main but the same patch, so it is `-` and counts as landed.
96
+ if (ahead > 0)
97
+ unlanded = (await git(wt, ["cherry", `refs/heads/${base}`, "HEAD"])).split("\n").filter((l) => l.startsWith("+")).length;
98
+ }
99
+ if (unlanded > 0)
100
+ blockers.push(`${plural(unlanded, "commit")} on ${branch} ${unlanded === 1 ? "is" : "are"} not on ${base}.`);
101
+ // --no-optional-locks: a read must not refresh the index, which would reset
102
+ // the idle clock below to "just now".
103
+ const uncommitted = (await git(wt, ["--no-optional-locks", "status", "--porcelain"])).split("\n").filter(Boolean).length;
104
+ if (uncommitted > 0)
105
+ blockers.push(`${plural(uncommitted, "file")} changed or new and not committed.`);
106
+ const transport = countTransport(wt);
107
+ if (transport > 0)
108
+ blockers.push(`${plural(transport, "file")} in its .claude/outbox or .claude/inbox, which git does not keep.`);
109
+ const inside = (cwd) => cwd === wt || cwd.startsWith(wt + sep);
110
+ const live = sessions.filter((s) => s.cwd && inside(s.cwd)).length;
111
+ if (live > 0)
112
+ blockers.push(`${plural(live, "session")} running in it.`);
113
+ if (ownerLive)
114
+ blockers.push("The session whose agent made it is still open.");
115
+ const idle = await idleMinutes(wt);
116
+ if (idle === null)
117
+ blockers.push("Could not tell when it was last used.");
118
+ else if (idle < LEFTOVER_IDLE_MIN)
119
+ blockers.push(`Used ${idle === 0 ? "just now" : `${plural(idle, "minute")} ago`} — something may be about to work in it. Ask again after ${LEFTOVER_IDLE_MIN} minutes untouched.`);
120
+ return { branch, base, ahead, unlanded, uncommitted, transport, sessions: live, ownerLive, idleMinutes: idle, blockers };
121
+ }
122
+ export async function removeLeftover(input) {
123
+ const { wt, branch } = input;
124
+ let leftover;
125
+ try {
126
+ leftover = await worktreeLeftover(input);
127
+ }
128
+ catch (err) {
129
+ return { ok: false, error: `Could not check the worktree: ${err.message}` };
130
+ }
131
+ if (leftover.blockers.length)
132
+ return { ok: false, leftover, error: leftover.blockers.join(" ") };
133
+ const primary = await primaryOf(wt);
134
+ try {
135
+ // No --force: git refuses a dirty or locked worktree on its own.
136
+ await git(primary.path, ["worktree", "remove", wt]);
137
+ }
138
+ catch (err) {
139
+ return { ok: false, leftover, error: `git refused: ${err.message.split("\n").slice(-3).join(" ").trim()}` };
140
+ }
141
+ if (branch === "(detached)" || !branch)
142
+ return { ok: true, leftover, branchDeleted: false };
143
+ try {
144
+ // -d when git can see it is merged; -D only when every commit was
145
+ // just shown to be on base by patch (cherry-picked).
146
+ await git(primary.path, ["branch", leftover.ahead > 0 ? "-D" : "-d", branch]);
147
+ return { ok: true, leftover, branchDeleted: true };
148
+ }
149
+ catch (err) {
150
+ return { ok: true, leftover, branchDeleted: false, note: `The worktree is gone; its branch ${branch} stayed: ${err.message.trim().split("\n")[0]}` };
151
+ }
152
+ }
153
+ //# sourceMappingURL=worktreeleftover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worktreeleftover.js","sourceRoot":"","sources":["../src/worktreeleftover.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,SAAS,IAAI,KAAK,EAAE,MAAM,WAAW,CAAC;AAE/C;;;;;;;;;;;;;;GAcG;AAEH,MAAM,OAAO,GAAG,MAAM,CAAC;AAEvB,KAAK,UAAU,GAAG,CAAC,GAAW,EAAE,IAAc;IAC5C,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC,CAAC;IACnG,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,iFAAiF;AACjF,KAAK,UAAU,SAAS,CAAC,EAAU;IACjC,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,EAAE,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;IAC/D,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACzC,MAAM,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC/D,MAAM,MAAM,GAAG,6BAA6B,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;IAC9E,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC1B,CAAC;AAED,kFAAkF;AAClF,SAAS,cAAc,CAAC,EAAU;IAChC,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,MAAM,IAAI,GAAG,CAAC,GAAW,EAAE,KAAa,EAAE,EAAE;QAC1C,IAAI,KAAK,GAAG,CAAC;YAAE,OAAO;QACtB,IAAI,IAAI,CAAC;QACT,IAAI,CAAC;YAAC,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO;QAAC,CAAC;QAC3E,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACrB,IAAI,CAAC,CAAC,WAAW,EAAE;gBAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;YACxD,wDAAwD;iBACnD,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;gBAAE,CAAC,EAAE,CAAC;QAC5C,CAAC;IACH,CAAC,CAAC;IACF,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IACvC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IACtC,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAEpC,0EAA0E;AAC1E,KAAK,UAAU,WAAW,CAAC,EAAU;IACnC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,CAAC,WAAW,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC1E,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,KAAK,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;YACxD,IAAI,CAAC;gBAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC,CAAC;QACrG,CAAC;QACD,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACpE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,MAAM,GAAG,CAAC,CAAS,EAAE,GAAW,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAU5F,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAiB;IACvF,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,EAAE,CAAC,CAAC;IACpC,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;IAClC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,KAAK,EAAE;QAAE,QAAQ,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;IAC7G,IAAI,CAAC,IAAI;QAAE,QAAQ,CAAC,IAAI,CAAC,kGAAkG,CAAC,CAAC;IAE7H,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,IAAI,EAAE,CAAC;QACT,KAAK,GAAG,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;QAC5G,0EAA0E;QAC1E,+EAA+E;QAC/E,IAAI,KAAK,GAAG,CAAC;YAAE,QAAQ,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,CAAC,QAAQ,EAAE,cAAc,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;IAC1I,CAAC;IACD,IAAI,QAAQ,GAAG,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,OAAO,MAAM,IAAI,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,WAAW,IAAI,GAAG,CAAC,CAAC;IAE/H,4EAA4E;IAC5E,sCAAsC;IACtC,MAAM,WAAW,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,CAAC,qBAAqB,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;IACzH,IAAI,WAAW,GAAG,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,oCAAoC,CAAC,CAAC;IAEvG,MAAM,SAAS,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;IACrC,IAAI,SAAS,GAAG,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,mEAAmE,CAAC,CAAC;IAElI,MAAM,MAAM,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,KAAK,EAAE,IAAI,GAAG,CAAC,UAAU,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;IACvE,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;IACnE,IAAI,IAAI,GAAG,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,iBAAiB,CAAC,CAAC;IAEzE,IAAI,SAAS;QAAE,QAAQ,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;IAE/E,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,EAAE,CAAC,CAAC;IACnC,IAAI,IAAI,KAAK,IAAI;QAAE,QAAQ,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;SACrE,IAAI,IAAI,GAAG,iBAAiB;QAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,4DAA4D,iBAAiB,qBAAqB,CAAC,CAAC;IAEtN,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAC3H,CAAC;AAMD,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAAoB;IACvD,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAC7B,IAAI,QAA0B,CAAC;IAC/B,IAAI,CAAC;QAAC,QAAQ,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAAC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QAC7D,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,iCAAkC,GAAa,CAAC,OAAO,EAAE,EAAE,CAAC;IACzF,CAAC;IACD,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IACjG,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,EAAE,CAAC,CAAC;IACpC,IAAI,CAAC;QACH,iEAAiE;QACjE,MAAM,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;IACtD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,gBAAiB,GAAa,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC;IACzH,CAAC;IACD,IAAI,MAAM,KAAK,YAAY,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;IAC5F,IAAI,CAAC;QACH,kEAAkE;QAClE,qDAAqD;QACrD,MAAM,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QAC9E,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;IACrD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,oCAAoC,MAAM,YAAa,GAAa,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAClK,CAAC;AACH,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { SessionInfo } from "@waterplane/shared";
2
+ /**
3
+ * Which live session made each agent worktree — so the launcher can draw a
4
+ * worktree under the session it belongs to instead of in a pile above them all.
5
+ *
6
+ * The CLI records it for us: an Agent spawned with `isolation: "worktree"`
7
+ * leaves `<project dir>/<conversation>/subagents/agent-<id>.meta.json` holding
8
+ * the `worktreePath` it was given. So the answer is a directory listing per
9
+ * live conversation, read off the CLI's own files — no guessing from branch
10
+ * names or mtimes.
11
+ *
12
+ * The worktree's git lock names a pid too, but under tmux the session's own
13
+ * pid is the tmux server's child, not `claude`, so that would be a second,
14
+ * weaker join. A worktree whose conversation is gone (a `/clear`, a closed
15
+ * session) simply has no owner and stays where it was drawn before.
16
+ */
17
+ export declare function worktreeOwners(sessions: Pick<SessionInfo, "id" | "cwd" | "claudeSessionId">[]): Map<string, string>;
@@ -0,0 +1,45 @@
1
+ import { readdirSync, readFileSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { claudeProjectDir } from "./transcript.js";
4
+ /**
5
+ * Which live session made each agent worktree — so the launcher can draw a
6
+ * worktree under the session it belongs to instead of in a pile above them all.
7
+ *
8
+ * The CLI records it for us: an Agent spawned with `isolation: "worktree"`
9
+ * leaves `<project dir>/<conversation>/subagents/agent-<id>.meta.json` holding
10
+ * the `worktreePath` it was given. So the answer is a directory listing per
11
+ * live conversation, read off the CLI's own files — no guessing from branch
12
+ * names or mtimes.
13
+ *
14
+ * The worktree's git lock names a pid too, but under tmux the session's own
15
+ * pid is the tmux server's child, not `claude`, so that would be a second,
16
+ * weaker join. A worktree whose conversation is gone (a `/clear`, a closed
17
+ * session) simply has no owner and stays where it was drawn before.
18
+ */
19
+ export function worktreeOwners(sessions) {
20
+ const out = new Map();
21
+ for (const s of sessions) {
22
+ if (!s.claudeSessionId)
23
+ continue;
24
+ const dir = join(claudeProjectDir(s.cwd), s.claudeSessionId, "subagents");
25
+ let names;
26
+ try {
27
+ names = readdirSync(dir);
28
+ }
29
+ catch {
30
+ continue;
31
+ }
32
+ for (const n of names) {
33
+ if (!n.endsWith(".meta.json"))
34
+ continue;
35
+ try {
36
+ const meta = JSON.parse(readFileSync(join(dir, n), "utf8"));
37
+ if (typeof meta.worktreePath === "string" && !out.has(meta.worktreePath))
38
+ out.set(meta.worktreePath, s.id);
39
+ }
40
+ catch { /* a half-written meta is not an owner */ }
41
+ }
42
+ }
43
+ return out;
44
+ }
45
+ //# sourceMappingURL=worktreeowner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worktreeowner.js","sourceRoot":"","sources":["../src/worktreeowner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,cAAc,CAAC,QAA+D;IAC5F,MAAM,GAAG,GAAG,IAAI,GAAG,EAAkB,CAAC;IACtC,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,CAAC,CAAC,CAAC,eAAe;YAAE,SAAS;QACjC,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;QAC1E,IAAI,KAAe,CAAC;QACpB,IAAI,CAAC;YAAC,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,SAAS;QAAC,CAAC;QACrD,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC;gBAAE,SAAS;YACxC,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAA+B,CAAC;gBAC1F,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC;oBAAE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YAC7G,CAAC;YAAC,MAAM,CAAC,CAAC,yCAAyC,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,26 @@
1
+ {
2
+ "name": "@waterplane/host",
3
+ "version": "0.1.4",
4
+ "type": "module",
5
+ "bin": {
6
+ "waterplane-host": "./dist/main.js"
7
+ },
8
+ "scripts": {
9
+ "dev": "WATERPLANE_DEV=1 tsx watch src/main.ts",
10
+ "build": "tsc -p tsconfig.json && tsc -p tsconfig.extensions.json",
11
+ "start": "node dist/main.js"
12
+ },
13
+ "dependencies": {
14
+ "@waterplane/shared": "*",
15
+ "@xterm/headless": "^5.5.0",
16
+ "node-pty": "1.2.0-beta.15",
17
+ "web-push": "^3.6.7",
18
+ "ws": "^8.22.0"
19
+ },
20
+ "devDependencies": {
21
+ "@types/node": "^22.10.0",
22
+ "@types/web-push": "^3.6.4",
23
+ "@types/ws": "^8.18.2",
24
+ "tsx": "^4.23.15"
25
+ }
26
+ }
@@ -0,0 +1,23 @@
1
+ import{Ac as e,As as t,B as n,Bs as r,Ds as i,Eo as a,Fa as o,H as s,I as c,Ic as l,Is as u,K as d,Kt as f,Lc as p,Mo as m,Mr as h,Ms as g,Ts as _,U as v,W as ee,Ws as y,Ys as b,_n as te,aa as ne,b as re,br as ie,fi as ae,hn as x,ia as oe,jc as se,kc as ce,ko as le,mi as S,pi as C,qs as w,si as T,tl as ue,xn as de,z as fe,zc as E}from"./shared-eyaskl5l.js";var pe={snippets:a(`snippets`),headerCmds:a(`headerCmds`),fanoutPresets:a(`fanout.presets`),toolbar:a(`toolbar`),launch:a(`launch`),launchAsk:a(`launchAsk`),spendWarn:a(`spendWarn`),pad:a(`pad`),hiddenRepos:a(`hiddenRepos`),enterSends:a(`enterSends`),dictateTerms:a(`dictate.terms`),autoSend:a(`autoSend`),updatesAutoCheck:a(`updates.autoCheck`),serialSessions:a(`serialSessions`),confirmQueue:a(`confirmQueue`),confirmClose:a(`confirmClose`),readerTools:a(`readerTools`),annKnobs:a(`annKnobs`),annTools:a(`annTools`),annPrompt:a(`annPrompt`),hints:a(`hints`),repoColors:a(`repoColors`),installAllow:a(`installAllow`),closeWhenDone:a(`backlog.closeWhenDone`),localSessions:a(`local.maxSessions`),agentWindowWarn:a(`agentWindowWarn`),agentWarn:a(`agentWarn`),deviceId:a(`deviceId`),deviceName:a(`deviceName`),installLog:a(`installLog`),hostBase:a(`hostBase`),hosts:a(`hosts`),hostActive:a(`hostActive`),hostSwitch:a(`hostSwitch`),hostsGone:a(`hostsGone`),deviceToken:a(`deviceToken`),passive:a(`passive`),lanIdentity:a(`lanIdentity`),dataSaver:a(`dataSaver`),bgFresh:a(`bgFresh`),uploadScale:a(`uploadScale`),upKbps:a(`upKbps`),netlog:a(`netlog`),netTraffic:a(`nettraffic`),netSync:a(`netsync`),netPulse:a(`netPulse`),localRtBar:a(`localRtBar`),unfoldToEnd:a(`unfoldToEnd`),repoSort:a(`repoSort`),sessionTabs:a(`sessionTabs`),sessionTabsCount:a(`sessionTabs.count`),sessionTabsOrder:a(`sessionTabs.order`),sessionTabsLimit:a(`sessionTabs.limit`),tabOpens:a(`sessionTabs.opens`),tabFiles:a(`sessionTabs.files`),sessionTabsSync:a(`sessionTabs.sync`),tabsSaverAsked:a(`sessionTabs.saverAsked`),tabOrderShared:a(`tabsShared.order`),tabOpensShared:a(`tabsShared.opens`),localRt:a(`localrt`)},me={sessionOrder:a(`sessionOrder`),collapsedRepos:a(`collapsedRepos`),toolbarOpen:a(`toolbarOpen`),hostBoots:a(`hostBoots`),readMode:a(`readMode`),cliMode:a(`cliMode`),termCostOpen:a(`termCostOpen`),sendMemory:a(`sendMemory`),slotAskOff:a(`slotAskOff`),launchLast:a(`launchLast`),wheelHidden:a(`wheelHidden`),typingRoom:a(`typingRoom`),hintChip:a(`hintChip`),termCornerPos:a(`termCornerPos`),wideSideW:a(`wideSideW`),wideBesideW:a(`wideBesideW`),widePanelW:a(`widePanelW`),sessChromeH:a(`sessChromeH`),closeKbOnSend:a(`closeKbOnSend`),shortcutCard:a(`shortcutCard`),busySend:a(`busySend`),btwToCli:a(`btwToCli`),theme:a(`theme`),themeOverlay:a(`themeOverlay`),themeOverlayCss:a(`themeOverlayCss`),textScale:a(`textScale`),iconScale:a(`iconScale`),termZoom:a(`termZoom`),readerZoom:a(`readerZoom`),scrollZoom:a(`scrollZoom`),gitZoom:a(`gitZoom`),textDumpWrap:a(`textDumpWrap`),closeCustomH:a(`closeCustomH`),schedPctLeft:a(`schedPctLeft`),schedLeadMin:a(`schedLeadMin`),closeBy:a(`closeBy`),closeKeepStar:a(`closeKeepStar`),backlogRepo:a(`backlogRepo`),backlogDraft:a(`backlogDraft`),backlogShowArchived:a(`backlogShowArchived`),fanoutText:a(`fanout.text`),fanoutSel:a(`fanout.sel`),fanoutModel:a(`fanout.model`),collageGap:a(`collageGap`),collageLabels:a(`collageLabels`),usage:a(`usage`),notifSeen:a(`notifSeen`),toastLog:a(`toastLog`),hostedAck:a(`hostedAck`),costNoticed:a(`costNoticed`),agentNoticed:a(`agentNoticed`),spendNoticed:a(`spendNoticed`),dismissInsecure:a(`dismissInsecure`),dismissPhoneSetup:a(`dismissPhoneSetup`),codeFolderLater:a(`codeFolderLater`),dismissedSelfUpdate:a(`dismissedSelfUpdate`),updatesReceiptSeen:a(`updatesReceiptSeen`),dismissedUpdate:a(`dismissedUpdate`),annHintHidden:a(`annHintHidden`),stowed:a(`stowed`),stowTold:a(`stowTold`),toldNoticed:a(`toldNoticed`),lastForcedReload:a(`lastForcedReload`),webUpdateStaged:a(`webUpdate.staged`),webUpdateAuto:a(`webUpdate.auto`),webUpdateApply:a(`webUpdate.apply`),webUpdateApplyTries:a(`webUpdate.applyTries`),webUpdateRecoverySeen:a(`webUpdate.recoverySeen`),webUpdateSnooze:a(`webUpdate.snooze`),routeLast:a(`route.last`),routeResume:a(`route.resume`),headerViews:a(`headerViews`),brandMigrated:re,brandStores:a(`brand.stores`),demo:a(`demo`),demoReturn:a(`demo.return`),demoTour:a(`demo.tour`)},he={outbox:a(`outbox`),compose:a(`compose`),composeDrafts:a(`compose.drafts`),composeOutbox:a(`compose.outbox`),composeSheets:a(`compose.sheets`),deadUploads:a(`deadUploads`),dictations:a(`dictations`),dictateLang:a(`dictate.lang`),dictateLangs:a(`dictate.langs`),giveups:a(`giveups`),giveupsMigrated:a(`giveups.migrated`),activityDismissed:a(`activity.dismissed`),activityConfirmedDone:a(`activity.confirmedDone`),padRescue:a(`padRescue`),padRescueMigrated:a(`padRescue.migrated`),pendingStars:a(`pendingStars`),pendingFollowUps:a(`pendingFollowUps`),pullState:a(`pull.state`),pullAuto:a(`pull.auto`),pullBrowserAsk:a(`pull.browserask`),pullAutoSave:a(`pull.autosave`),snapSessions:a(`snap.sessions`),snapRepos:a(`snap.repos`),snapReposAt:a(`snapReposAt`),snapRecent:a(`snap.recent`),snapClosed:a(`snap.closed`),snapBacklog:a(`snap.backlog`),snapHistory:a(`snap.history`),snapBuilds:a(`snap.builds`),snapCapture:a(`snap.capture`),snapSchedules:a(`snap.schedules`),snapCliHealth:a(`snap.clihealth`),snapAt:a(`snap.at`),slashCache:a(`slashCache`),fileMtimes:a(`fileMtimes`),artMarks:a(`artMarks`),fileRemarks:a(`fileRemarks`),newImages:a(`newimg`),syncTs:a(`syncTs`),cmdHistory:a(`cmdHistory`)},D={healthAxis:a(`healthAxis`),...pe,...he,...me},ge=a(`demoworld.`),_e=a(`trSeen.`),ve=e=>`${_e}${e}`,ye=a(`ext.`),be=(e,t)=>`${ye}${e}.${t}`,xe=a(`demo.snap.`),Se=e=>`${xe}${e}`,Ce={snippets:`host`,headerCmds:`host`,fanoutPresets:`host`,toolbar:`host`,launch:`host`,launchAsk:`host`,spendWarn:`host`,pad:`host`,hiddenRepos:`host`,enterSends:`host`,dictateTerms:`host`,autoSend:`host`,updatesAutoCheck:`host`,serialSessions:`host`,confirmQueue:`host`,confirmClose:`host`,readerTools:`host`,annKnobs:`host`,annTools:`host`,annPrompt:`device`,hints:`host`,repoColors:`host`,installAllow:`host`,closeWhenDone:`host`,localSessions:`host`,agentWarn:`host`,agentWindowWarn:`host`,syncTs:`host`,healthAxis:`device`,deviceId:`device`,deviceName:`device`,hostBase:`device`,hosts:`device`,hostActive:`device`,hostSwitch:`device`,hostsGone:`device`,deviceToken:`host`,lanIdentity:`host`,passive:`host`,installLog:`host`,dataSaver:`device`,bgFresh:`device`,uploadScale:`device`,netPulse:`device`,localRtBar:`device`,unfoldToEnd:`device`,repoSort:`device`,upKbps:`host`,netlog:`host`,netTraffic:`host`,netSync:`host`,localRt:`host`,sessionTabs:`device`,sessionTabsCount:`device`,sessionTabsOrder:`device`,sessionTabsLimit:`device`,tabOpens:`host`,tabFiles:`host`,sessionTabsSync:`device`,tabsSaverAsked:`device`,tabOrderShared:`host`,tabOpensShared:`host`,outbox:`host`,compose:`host`,composeDrafts:`host`,composeOutbox:`host`,composeSheets:`host`,deadUploads:`host`,dictations:`host`,pendingStars:`host`,pendingFollowUps:`host`,backlogDraft:`host`,dictateLang:`device`,dictateLangs:`device`,fanoutText:`host`,fanoutSel:`host`,fanoutModel:`host`,backlogRepo:`host`,backlogShowArchived:`host`,giveups:`device`,giveupsMigrated:`device`,padRescue:`device`,padRescueMigrated:`device`,activityDismissed:`host`,activityConfirmedDone:`host`,pullState:`host`,pullAuto:`host`,pullBrowserAsk:`host`,pullAutoSave:`host`,snapSessions:`host`,snapRepos:`host`,snapReposAt:`host`,snapRecent:`host`,snapClosed:`host`,snapBacklog:`host`,snapHistory:`host`,snapBuilds:`host`,snapCapture:`host`,snapSchedules:`host`,snapCliHealth:`host`,snapAt:`host`,themeOverlay:`host`,themeOverlayCss:`host`,slashCache:`host`,fileMtimes:`host`,artMarks:`host`,fileRemarks:`host`,newImages:`host`,cmdHistory:`host`,usage:`host`,notifSeen:`host`,costNoticed:`host`,agentNoticed:`host`,spendNoticed:`host`,sessionOrder:`host`,collapsedRepos:`host`,sendMemory:`host`,slotAskOff:`host`,launchLast:`host`,wheelHidden:`host`,toolbarOpen:`device`,readMode:`device`,cliMode:`device`,termCostOpen:`device`,typingRoom:`device`,hintChip:`device`,termCornerPos:`device`,wideSideW:`device`,wideBesideW:`device`,widePanelW:`device`,sessChromeH:`device`,closeKbOnSend:`device`,shortcutCard:`device`,busySend:`device`,btwToCli:`device`,theme:`device`,textScale:`device`,iconScale:`device`,termZoom:`device`,readerZoom:`device`,scrollZoom:`device`,gitZoom:`device`,textDumpWrap:`device`,closeCustomH:`device`,schedPctLeft:`device`,schedLeadMin:`device`,closeBy:`device`,closeKeepStar:`device`,collageGap:`device`,collageLabels:`device`,toastLog:`device`,hostedAck:`device`,dismissInsecure:`device`,dismissPhoneSetup:`device`,codeFolderLater:`device`,dismissedUpdate:`device`,dismissedSelfUpdate:`host`,updatesReceiptSeen:`host`,annHintHidden:`device`,stowed:`device`,stowTold:`device`,toldNoticed:`device`,hostBoots:`device`,lastForcedReload:`device`,webUpdateRecoverySeen:`device`,webUpdateStaged:`host`,webUpdateAuto:`host`,webUpdateApply:`host`,webUpdateApplyTries:`host`,webUpdateSnooze:`host`,routeLast:`host`,routeResume:`host`,headerViews:`host`,brandMigrated:`device`,brandStores:`device`,demo:`device`,demoReturn:`device`,demoTour:`device`},we=new Set(Object.keys(Ce).filter(e=>Ce[e]===`device`).map(e=>D[e]));function Te(e){return we.has(e)}new Set(T);function Ee(e){try{return localStorage.getItem(e)}catch{return null}}function De(e,t){try{localStorage.setItem(e,t)}catch{}}function Oe(e){try{localStorage.removeItem(e)}catch{}}function ke(e,t){try{let n=localStorage.getItem(e);if(n===null||n===``)return t;let r=JSON.parse(n);return r===null?t:r}catch{return t}}function Ae(e,t){try{localStorage.setItem(e,JSON.stringify(t))}catch{}}function je(e,t=!1){let n=Ee(e);return n===null?t:n===`1`||n===`true`}function Me(e,t){De(e,t?`1`:`0`)}function Ne(e,t){let n=Ee(e);if(n===null||n===``)return t;let r=Number(n);return Number.isFinite(r)?r:t}var Pe=()=>Ee(D.healthAxis)===`commits`?`commits`:`weeks`,Fe=e=>De(D.healthAxis,e===`commits`?`commits`:`weeks`),Ie=`demo`,Le=`ws://demo.invalid/ws`,Re=/^[a-z0-9][a-z0-9-]{0,39}$/;function ze(){let e=null;try{e=new URLSearchParams(globalThis.location?.search??``).get(Ie)}catch{}return e||=Ee(D.demo),e&&Re.test(e)?e:null}var Be=null,Ve=null;function He(){return Be!==null}function Ue(){return Be}function We(){return Ve}function Ge(e,t=null){Be=e,Ve=e?null:t}function Ke(e){if(!Re.test(e))throw Error(`not a demo scenario id: ${e}`);try{globalThis.sessionStorage?.removeItem(Se(e))}catch{}Oe(D.demoTour),De(D.demo,e),Je(Ye(location.href,e))}function qe(){let e=Be??ze();try{e&&globalThis.sessionStorage?.removeItem(Se(e))}catch{}Oe(D.demoTour),Oe(D.demo),Je(Ye(location.href,null))}function Je(e,t=location){e===t.href?t.reload():t.replace(e)}function Ye(e,t){let n=new URL(e);return t?n.searchParams.set(Ie,t):n.searchParams.delete(Ie),n.toString()}var Xe=`${`/`.replace(/\/$/,``)}/demo/media`,Ze=/^\/api\/repos\/([^/?#]+)\/artifact$/,Qe=/^\/api\/repos\/([^/?#]+)\/inbox\/([^/?#]+)$/,$e=new Map;function et(e,t,n){$e.set(`${e}/${t}`,n)}var tt=`.claude/inbox/`;function nt(e){return e.startsWith(`.`)?`dot-${e.slice(1)}`:e}function rt(e){return e.split(`/`).map(nt).join(`/`)}function it(e){let t=e.split(`/`).filter(e=>e!==``&&e!==`.`);return!t.length||t.some(e=>e===`..`)?null:t.map(e=>encodeURIComponent(nt(e))).join(`/`)}function at(e){if(!e.startsWith(`/api/`))return e;let t;try{t=new URL(e,`http://demo.invalid`)}catch{return e}if(t.searchParams.has(`stat`))return e;let n=Ze.exec(t.pathname);if(n){let r=t.searchParams.get(`path`)??``,i=r.startsWith(tt)?$e.get(`${n[1]}/${r.slice(14)}`):void 0;if(i)return i;let a=it(r);return a?`${Xe}/${n[1]}/${a}`:e}let r=Qe.exec(t.pathname);if(r){let t=$e.get(`${r[1]}/${decodeURIComponent(r[2])}`);if(t)return t;let n=it(decodeURIComponent(r[2]));return n?`${Xe}/${r[1]}/${rt(`.claude/inbox`)}/${n}`:e}return e}function ot(e,t,n){let r=e=>n.has(e)?e:t+e,i=()=>{let n=[];for(let r=0;r<e.length;r++){let i=e.key(r);i!==null&&i.startsWith(t)&&n.push(i.slice(t.length))}return n};return{get length(){return i().length},key:e=>i()[e]??null,getItem:t=>e.getItem(r(String(t))),setItem:(t,n)=>e.setItem(r(String(t)),String(n)),removeItem:t=>e.removeItem(r(String(t))),clear:()=>{for(let n of i())e.removeItem(t+n)}}}function st(e){if(e||typeof window>`u`||!ze())return!1;try{let e=window.localStorage,t=ot(e,ge,new Set([D.demo]));return Object.defineProperty(window,"localStorage",{configurable:!0,get:()=>t}),!0}catch{return!1}}var ct=new Map;function lt(e=globalThis.location?.href??``){if(ut===null)try{ut=new URL(e).searchParams.has(`demoPlugins`)}catch{ut=!1}return ut}var ut=null;function dt(){return[...ct].flatMap(([e,t])=>t.pushes().map(([t,n])=>({plugin:e,event:t,data:n})))}function ft(e,t,n){if(!He()||!lt())return;let r=ct.get(e)?.calls[t];return r?r(n):void 0}var pt=e=>e.model;function mt(e,t){return e.minted=(e.minted??0)+1,`${t}-${e.minted}`}function ht(e,t){if(typeof t!=`string`||!t)return!1;let n=(e.repos??[]).map(e=>e&&typeof e==`object`?e.worktreePath:void 0).filter(e=>typeof e==`string`&&!!e);return!n.length||n.some(e=>t===e||t.startsWith(e.endsWith(`/`)?e:`${e}/`))}var gt=`That folder is not one of the demo's repos — pick one from the list.`;function _t(e){let t=[];for(let n of e){let e=n.codePointAt(0)??0;e<128?t.push(e):e<2048?t.push(192|e>>6,128|e&63):e<65536?t.push(224|e>>12,128|e>>6&63,128|e&63):t.push(240|e>>18,128|e>>12&63,128|e>>6&63,128|e&63)}return t}var vt=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/`;function yt(e){let t=``;for(let n=0;n<e.length;n+=3){let r=e[n],i=e[n+1],a=e[n+2];t+=vt[r>>2]+vt[(r&3)<<4|(i??0)>>4],t+=i===void 0?`=`:vt[(i&15)<<2|(a??0)>>6],t+=a===void 0?`=`:vt[a&63]}return t}var bt=`budget not set: it needs a unit and an amount above zero (a percent at most 100)`,xt=`budget not set: that session is not open`;function St(e,t){let n=t.budget;if(!n)return!1;let r=g(n.cfg,t.contextSpark,n.cal??null,e.now(),t.running);t.budget={cfg:n.cfg,verdict:r,...n.cal?{cal:n.cal}:{}};let i=e.m.budgetTripped??={};return r.state===`over`&&!i[t.id]?(i[t.id]=!0,wt(e,t),!0):(r.state===`ok`&&delete i[t.id],!1)}function Ct(e,t,n){let r=n===null?null:_(n);if(n!==null&&!r)return bt;let i=(e.m.sessions??[]).find(e=>e.id===t);if(!i)return xt;let a=i.budget?.cfg??null;if(JSON.stringify(a)!==JSON.stringify(r)){let n=!a||!r||a.unit!==r.unit||a.max!==r.max;r?i.budget={cfg:r,verdict:g(r,null,null,e.now())}:delete i.budget,n&&e.m.budgetTripped&&delete e.m.budgetTripped[t]}return St(e,i),e.broadcast({t:`session.updated`,session:i}),null}function wt(e,n){let r=n.budget;if(!r)return;let i=r.cfg.interrupt?`No Esc was sent: the demo has no running claude to interrupt.`:`No Esc was sent: this budget is set not to interrupt.`,a=e.m.notifications??=[];a.unshift({id:mt(e.m,`n`),ts:e.now(),kind:`limit`,title:`Session budget hit · ${n.title}`,body:`${t(r.verdict)}. Further sends to it are held until you raise or clear the budget. ${i}`,sessionId:n.id}),e.broadcast({t:`notification.list`,items:a})}var Tt=e=>new Date(e).toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`}),Et=e=>{let t=Math.max(0,Math.round(e/6e4));return t>=60?`${Math.floor(t/60)}h ${t%60}m`:`${t}m`},Dt=e=>({blocked:!1,blockedSince:0,resetAt:null,nextAttemptAt:null,attempts:0,weekly:!1,autoContinue:e,autoContinueOverride:null,queuePos:null,resuming:!1,first:!1}),Ot=e=>e.m.limitConfig?.enabled??!1;function kt(e,t,n,r,i){let a=e.m.decisions??=[];a.unshift({id:mt(e.m,`d`),ts:e.now(),sessionId:t.id,sessionTitle:t.title,source:`limit`,phase:n,question:r,options:[],choice:null,rationale:i,outcome:`limit`}),e.broadcast({t:`decisions.log`,entries:a.slice(0,200)})}function At(e,t,n,r){let i=e.m.notifications??=[];i.unshift({id:mt(e.m,`n`),ts:e.now(),kind:`limit`,title:n,body:r,sessionId:t.id}),e.broadcast({t:`notification.list`,items:i})}function jt(e,t,n){let r=e.now(),i=Ot(e);t.limit={blocked:!0,blockedSince:r,resetAt:n,nextAttemptAt:i?n:null,attempts:0,weekly:!1,autoContinue:i,autoContinueOverride:null,queuePos:i?1:null,resuming:!1,first:!1},t.turnActive=!1,t.idle=!0,t.idleSince=r,delete t.turnStartedAt,e.broadcast({t:`session.updated`,session:t});let a=i?`auto-continue after the reset (~${Tt(n)})`:`auto-continue is off — resume manually`;return kt(e,t,`blocked`,`Session stopped at the Claude usage limit.`,a.charAt(0).toUpperCase()+a.slice(1)+`.`),At(e,t,`Usage limit · ${t.title}`,a),i}function Mt(e,t){let n=t.limit;if(!n?.blocked)return`notBlocked`;let r=e.now();kt(e,t,`attempt`,`Auto-continue attempt 1 — typing "continue" into the session.`,``);let i=n.blockedSince?r-n.blockedSince:0;t.limit=Dt(n.autoContinue),Object.assign(t,{turnActive:!0,turnStartedAt:r,idle:!1,lastTurnAt:r}),delete t.idleSince,e.broadcast({t:`session.updated`,session:t});let a=i?` · blocked ${Et(i)}`:``;return kt(e,t,`resumed`,`Usage limit lifted — session resumed.`,`1 attempt${a}`),At(e,t,`Session resumed · ${t.title}`,`usage limit lifted after 1 attempt${a} — work continues`),`continued`}var Nt=`\x1B[38;2;215;119;87m`,Pt=`\x1B[0m`,Ft=`\x1B[1m`,It=`\x1B[38;5;246m`,O=(e,t=`Opus 5.5`)=>`\r
2
+ \r
3
+ \r
4
+ ${Nt} ▐▛███▛█${Pt} ${Ft}Claude Code${Pt} ${It}v2.1.292${Pt}\r\n${Nt}▝▜██████▀${Pt} ${It}${t} · Claude Max${Pt}\r\n${Nt} ▝▝ ▝▝ ${Pt} ${It}${e}${Pt}\r\n\r\n`,Lt=O(`{cwd}`),k=`\x1B[`,Rt=/\x1b\[[0-9;?]*[A-Za-z]/g,A=`${k}0m`,zt=`${k}38;5;246m`,Bt=`${k}38;5;244m`,Vt=`${k}38;2;215;119;87m`,Ht=`${k}38;5;114m`,Ut=`${k}48;5;237m`,Wt=e=>[...e.replace(Rt,``)].length;function Gt(e,t,n){if(!Number.isFinite(t)||Wt(e)<=t)return[e];let r=e.match(/\x1b\[[0-9;?]*[A-Za-z]|\s+|[^\s\x1b]+/g)??[],i=[],a=``,o=0,s=``,c=` `.repeat(n),l=()=>{i.push(a+A),a=c+s,o=n};for(let e of r){if(e.startsWith(`\x1B`)){a+=e,s=e===A||e===`${k}m`?``:s+e;continue}if(/^\s+$/.test(e)){if(o+e.length>t){l();continue}(o>n||i.length===0)&&(a+=e,o+=e.length);continue}let r=[...e];for(o+r.length>t&&o>n&&(a=a.replace(/\s+$/,``),l());o+r.length>t;){let e=Math.max(1,t-o);a+=r.slice(0,e).join(``),r=r.slice(e),l()}a+=r.join(``),o+=r.length}return a.trim()&&i.push(a),i}function Kt(e){let t=e.replace(Rt,``),n=/^(?:\x1b\[[0-9;]*m)*>(?:\x1b\[[0-9;]*m)* (.*)$/.exec(e);if(n)return{text:`${Ut}${zt}❯ ${k}38;5;255m${n[1]}${A}`,hang:2,block:!0};if(t.startsWith(`● `)){let t=/^(?:\x1b\[[0-9;]*m)*● ([A-Z][A-Za-z]*)(?:\x1b\[[0-9;]*m)*\((.*)$/.exec(e);return t?{text:`${Ht}⏺${A} ${k}1m${t[1]}${A}(${t[2]}`,hang:2,block:!0}:{text:e.replace(`● `,`⏺ `),hang:2,block:!0}}return t.startsWith(` ⎿`)?{text:e.replace(/\x1b\[2m/g,zt),hang:5,block:!1}:{text:e,hang:0,block:!1}}function qt(e,t,n){let r=e.replace(/\r\n?/g,`
5
+ `).replace(/\n$/,``).split(`
6
+ `),i=[],a=n;for(let e of r){if(!e.replace(Rt,``).trim()){i.push(``),a=!0;continue}let n=Kt(e);n.block&&!a&&i.push(``),i.push(...Gt(n.text,t,n.hang)),a=!1}return{lines:i,endsBlank:a}}function Jt(e,t,n,r=!0){let i=Math.max(10,Math.min(Number.isFinite(t)?t:80,200)),a=`${Bt}${`─`.repeat(i)}${A}`,o=r?[]:[``];if(e?.turnActive&&!e.awaitingInput){let t=e.turnStartedAt?Math.max(1,Math.round((n-e.turnStartedAt)/1e3)):1;o.push(`${Vt}✻ Cooking…${A} ${zt}(${t}s · esc to interrupt)${A}`,``)}return o.push(a,`${zt}❯${A} `,a,`${zt} ? for shortcuts${A}`),o}var Yt=e=>e>0?`\r${e>1?`${k}${e-1}A`:``}${k}J`:``,Xt=e=>e.join(`\r
7
+ `),Zt=32e3,Qt=`\r
8
+ ● \x1B[2mThis demo has no scripted answer to that prompt. On your own desktop, claude would answer here.\x1B[0m\r
9
+ `,$t=`That session is closed — open a new one from the repo list.`,en=Lt,tn=e=>e.sessions??=[],j=(e,t)=>tn(e).find(e=>e.id===t),nn=e=>e.split(`/`).filter(Boolean).pop()??e;function rn(e,t,n,r=!1){if(!n)return;let i=ln(e,t);i.log=(i.log??``)+n,i.log.length>Zt&&(i.log=i.log.slice(i.log.length-Zt));let a=qt(n,i.cols??80,i.endsBlank??!0);i.endsBlank=a.endsBlank,on(e,t,i,a.lines.length?Xt(a.lines)+`\r
10
+ `:``,r)}function an(e,t){let n=e.m.screens?.[t];n?.log!=null&&on(e,t,n,``,!1)}function on(e,t,n,r,i){let a=Jt(j(e.m,t),n.cols??80,e.now(),n.endsBlank??!0),o=Yt(n.foot??0)+r+Xt(a);n.foot=a.length,sn(e,t,n,o,i)}function sn(e,t,n,r,i,a=!1){let o=_t(r);n.data=a?r:n.data+r,n.seq+=o.length,n.data.length>Zt*2&&(n.data=n.data.slice(n.data.length-Zt*2)),i||e.toSession(t,{t:`pty`,id:t,dataB64:yt(o),seq:n.seq})}function cn(e,t,n=!1){let r=e.m.screens?.[t];if(!r)return;let i=qt(r.log??``,r.cols??80,!0);r.endsBlank=i.endsBlank;let a=Jt(j(e.m,t),r.cols??80,e.now(),i.endsBlank);r.foot=a.length,sn(e,t,r,`\x1b[?25l\x1b[2J\x1b[3J\x1b[H${Xt([...i.lines,...a])}`,n,!0)}function ln(e,t){let n=e.m.screens??={},r=n[t]??={data:``,seq:0};return r.log??(r.log=r.data,r.data=``,cn(e,t,!0)),r}function un(e,t,n,r){if(!e.m.screens?.[t])return null;let i=ln(e,t),a=_t(i.data),o=i.seq-a.length;return n!=null&&(!r||r===e.bootId)&&n>=o&&n<=i.seq?n===i.seq?null:{dataB64:yt(a.slice(n-o)),seq:i.seq}:{dataB64:yt(a),seq:i.seq,full:!0}}function dn(e,t){let n=e.screens?.[t];return qt(n?n.log??n.data:``,1/0,!0).lines.map(e=>e.replace(/\x1b\[[0-9;?]*[A-Za-z]/g,``))}function fn(e,t,n,r=[]){let i=j(e.m,t);if(i){Object.assign(i,n);for(let e of r)delete i[e];(`contextSpark`in n||`running`in n)&&St(e,i),e.broadcast({t:`session.updated`,session:i}),(`turnActive`in n||`awaitingInput`in n||r.includes(`turnActive`))&&an(e,t)}}function pn(e,t){let n=e.now(),r={id:mt(e.m,`demo`),cwd:t.cwd,title:t.title||nn(t.cwd),remoteControl:!1,running:!0,createdAt:n,idle:!0,idleSince:n,liveMode:`default`};return tn(e.m).push(r),(e.m.screens??={})[r.id]={data:``,seq:0,cols:t.cols,rows:t.rows,log:(e.m.banner??en).replaceAll(`{repo}`,nn(t.cwd)).replaceAll(`{cwd}`,t.cwd)},cn(e,r.id,!0),e.broadcast({t:`session.created`,session:r}),r}function mn(e,t){let n=j(e.m,t);return n?(n.running&&(n.running=!1,delete n.prompt,delete n.turnActive,e.m.boxes&&delete e.m.boxes[t],e.m.timeline=(e.m.timeline??[]).filter(e=>e.sessionId!==t),e.broadcast({t:`session.exit`,id:t,code:null}),e.broadcast({t:`session.updated`,session:n})),!0):!1}function hn(e,t){let n=j(e.m,t);mn(e,t),e.m.sessions=tn(e.m).filter(e=>e.id!==t),e.m.screens&&delete e.m.screens[t],e.m.composer&&delete e.m.composer[t],n&&((e.m.closed??=[]).unshift({id:t,cwd:n.cwd,title:n.title,closedAt:e.now(),closedBy:`you`,firstPrompt:n.firstPrompt,lastPrompt:n.lastPrompt,...n.followUp?{followUp:n.followUp}:{}}),e.broadcast({t:`session.closed`,id:t,shellsStopped:0,shellsLeft:0}),e.broadcast({t:`closed.list`,closed:e.m.closed})),e.broadcast({t:`session.list`,sessions:tn(e.m)})}function gn(e,t,n,r){let i=(e.m.history??={})[t]??=[],a=mt(e.m,`h`);for(;i.some(e=>e.id===a);)a=mt(e.m,`h`);i.push({id:a,kind:r,text:n,sentAt:e.now()})}function _n(e,t,n,r=!0){let i=j(e.m,t);if(!i)return;let a=n.replace(/\r+$/,``);r&&rn(e,t,`\x1b[1m>\x1b[0m ${a}\r\n`),gn(e,t,a,`prompt`);let o=e.now();if(vn(e,t,a))return;fn(e,t,{lastPrompt:a,firstPrompt:i.firstPrompt??a,turnActive:!0,turnStartedAt:o,idle:!1,lastTurnAt:o},[`idleSince`]);let s=a.toLowerCase(),c=(e.m.replies??[]).find(e=>(!e.match||s.includes(e.match.toLowerCase()))&&(!e.cwd||i.cwd===e.cwd||i.cwd.startsWith(`${e.cwd}/`))),l=c?[...c.steps]:[{kind:`output`,text:Qt,afterMs:400}];l.push({kind:`turnEnd`}),bn(e,t,l)}function vn(e,t,n){let r=/^\/effort\s+(?:ultracode\s+(on|off)|(low|medium|high|xhigh|max))\s*$/i.exec(n.trim());if(!r)return!1;if(r[1]){let n=r[1].toLowerCase()===`on`;rn(e,t,n?`Ultracode on for this session\r
11
+ `:`Ultracode off\r
12
+ `),fn(e,t,{ultracode:n})}else{let n=r[2].toLowerCase();rn(e,t,`Set effort level to ${n}\r\n`),fn(e,t,{effort:n})}return!0}function yn(e,t,n){let r=j(e.m,t);if(!r||!r.running)return{ok:!1,reason:$t};let i=r.liveMode??r.permissionMode??`default`,a=[`default`,`acceptEdits`,`plan`,`auto`];return r.permissionMode===`bypassPermissions`&&a.push(`bypassPermissions`),a.includes(n)?(fn(e,t,{liveMode:n}),{ok:!0,mode:n}):{ok:!1,mode:i,reason:`${n} is not in this session’s shift+tab cycle — it exists only in a session launched with it.`}}function bn(e,t,n,r=e.now()){let i=e.m.timeline??=[],a=r;for(let r=0;r<n.length;r++){let{afterMs:o,...s}=n[r];a+=Math.max(0,o??0);let c=e.m.minted=(e.m.minted??0)+1;if(s.kind===`prompt`||s.kind===`clock`||s.kind===`autoContinue`||s.kind===`wall`){i.push({at:a,n:c,sessionId:t,step:s,rest:n.slice(r+1)});return}i.push({at:a,n:c,sessionId:t,step:s})}}function xn(e){let t=!1;for(;;){let n=e.m.timeline??[],r=e.now(),i=-1;if(n.forEach((e,t)=>{e.at<=r&&(i<0||e.at<n[i].at||e.at===n[i].at&&e.n<n[i].n)&&(i=t)}),i<0)return t;let[a]=n.splice(i,1);Tn(e,a.step,a.sessionId,a.rest),t=!0}}function Sn(e,t){let n=t-e.now();n>0&&(e.m.clockShift=(e.m.clockShift??0)+n)}function Cn(e,t){switch(t.t){case`usage.status`:(e.numbers??={}).usage=t.usage;return;case`decisions.log`:e.decisions=t.entries;return;case`notification.list`:e.notifications=t.items;return;case`limit.config`:e.limitConfig={enabled:t.enabled,...t.mode?{mode:t.mode}:{}};return;case`intent.list`:e.intents=t.intents;return;default:return}}var wn=e=>(e.timeline??[]).reduce((e,t)=>e==null||t.at<e?t.at:e,null);function Tn(e,t,n,r=[]){if(t.kind===`frame`){t.keep&&Cn(e.m,t.msg),e.broadcast(t.msg);return}if(t.kind===`clock`){Sn(e,t.to),bn(e,n,r);return}if(t.kind===`usage`){let n={...t.usage,checkedAt:e.now()};(e.m.numbers??={}).usage=n,e.broadcast({t:`usage.status`,usage:n});return}let i=t.sessionId??n;if(i&&j(e.m,i)?.running)switch(t.kind){case`output`:rn(e,i,t.text);return;case`session`:fn(e,i,t.patch,t.unset);return;case`prompt`:(e.m.boxes??={})[i]={answers:t.answers??{},rest:r},fn(e,i,{prompt:t.prompt,awaitingInput:!0});return;case`turnEnd`:On(e,i);return;case`facts`:{let n=(e.m.history?.[i]??[]).filter(e=>e.kind===`prompt`).at(-1);if(!n)return;((e.m.turnFacts??={})[i]??={})[n.id]=t.facts,n.outputAt??=e.now();let r=e.m.numbers?.context?.[i];r&&Array.isArray(r.samples)&&t.facts.ctxTok&&(r.samples.push({t:e.now(),tok:t.facts.ctxTok}),typeof r.turns==`number`&&(r.turns+=1),r.updatedAt=e.now());return}case`artifact`:En(e,i,t.repoId,t.relPath,t.size);return;case`deliverable`:Dn(e,i,t.repoId,t.relPath,t.size);return;case`wall`:{let n=j(e.m,i);if(!n)return;jt(e,n,t.resetAt)&&bn(e,i,[{kind:`autoContinue`},...t.resumed??[],...r],Math.max(e.now(),t.resetAt)),bn(e,i,t.meanwhile??[]);return}case`autoContinue`:{let t=j(e.m,i);if(!t||Mt(e,t)!==`continued`)return;rn(e,i,`\x1B[1m>\x1B[0m continue\r
13
+ `),gn(e,i,`continue (auto, usage limit reset)`,`backlog`),bn(e,i,r);return}}}function En(e,t,n,r,i){let a=e.now(),o=r.slice(r.lastIndexOf(`/`)+1),s=(e.m.gallery??={})[n]??=[];s.some(e=>e?.relPath===r)||s.unshift({name:o,relPath:r,size:i,mtime:a,ctime:a});let c=(e.m.repos??[]).find(e=>!!e&&typeof e==`object`&&e.id===n);c&&(c.outboxCount=(c.outboxCount??0)+1),e.broadcast({t:`session.images`,id:t,repoId:n,images:[{name:o,relPath:r,mtime:a}]});let l={id:mt(e.m,`n`),ts:a,kind:`image`,title:`New screenshot in ${c?.repoName??`the repo`}`,body:o,sessionId:t,image:{repoId:n,relPath:r}};(e.m.notifications??=[]).unshift(l),e.broadcast({t:`notification`,item:l})}function Dn(e,t,n,r,i){let a=e.now(),o=r.slice(r.lastIndexOf(`/`)+1),s=(e.m.gallery??={})[n]??=[];s.some(e=>e?.relPath===r)||s.unshift({name:o,relPath:r,size:i,mtime:a,ctime:a});let c=(e.m.repos??[]).find(e=>!!e&&typeof e==`object`&&e.id===n);c&&(c.outboxCount=(c.outboxCount??0)+1);let l=`${(i/1048576).toFixed(1)} MB`,u={id:mt(e.m,`n`),ts:a,kind:`artifact`,title:`Outbox: ${o}`,body:`${l} · ${j(e.m,t)?.title??`this session`} — tap to download`,sessionId:t,file:{repoId:n,relPath:r,name:o,size:i,mtime:a}};(e.m.notifications??=[]).unshift(u),e.broadcast({t:`notification`,item:u})}function On(e,t){let n=e.now();fn(e,t,{turnActive:!1,idle:!0,idleSince:n,awaitingInput:!1},[`turnStartedAt`]);let r=e.m.backlog?.items??[],i=!1;for(let e of r)e.status===`running`&&e.sessionId===t&&(e.status=`done`,e.finishedAt=n,i=!0);i&&e.broadcast(kn(e.m))}function kn(e){return{t:`backlog.list`,items:e.backlog?.items??[],auto:e.backlog?.auto??!1,idleMs:e.backlog?.idleMs??6e4}}function An(e,t,n){let r=j(e.m,t),i=e.m.boxes?.[t]??{answers:{},rest:[]},a=r?.prompt?.options.find(e=>String(e.index)===n)?.label;e.m.boxes&&delete e.m.boxes[t],fn(e,t,{awaitingInput:!1},[`prompt`]),a&&rn(e,t,`\x1b[2m ⎿ ${a}\x1b[0m\r\n`),bn(e,t,[...i.answers[n]??i.answers[`*`]??[],...i.rest])}function jn(e,t){Tn(e,{kind:`prompt`,sessionId:t,prompt:{kind:`tool`,question:`Do you want to make this edit to src/todo.ts?`,options:[{index:1,label:`Yes`},{index:2,label:`No, and tell Claude what to do differently`}]}})}function Mn(e,t){let n=j(e.m,t.id);if(!n||!n.running)return{ok:!1,reason:$t};if(t.expectPrompt){if(!ae(n.prompt,t.expectPrompt))return{ok:!1,state:`stale`,reason:n.prompt?`that question was replaced by a different one`:`that question is no longer open`};let r=/^(\d{1,2})\r?$/.exec(t.data??``),i=t.promptSubmit?`submit`:t.promptChoice==null?r?r[1]:t.data===`\x1B`?`esc`:`*`:String(t.promptChoice);return An(e,t.id,i),{ok:!0}}return t.submit?(_n(e,t.id,t.data),{ok:!0,state:`ok`}):(Nn(e,t.id,t.data??``),{ok:!0})}function Nn(e,t,n){let r=e.m.composer??={},i=j(e.m,t);if(i?.prompt){let r=/^(\d{1,2})\r?$/.exec(n);if(r&&!i.prompt.multi){An(e,t,r[1]);return}if(n===`\x1B`){An(e,t,`esc`);return}}for(let i of n.match(/\x1b\[[0-9;?]*[A-Za-z~]|\x1b.?|[\s\S]/g)??[])if(i===`\r`||i===`
14
+ `){let n=r[t]??``;r[t]=``,n.trim()&&(rn(e,t,`\r
15
+ `),_n(e,t,n,!1))}else i===``||i===`\b`?r[t]&&(r[t]=r[t].slice(0,-1),rn(e,t,`\b \b`)):i>=` `&&!i.startsWith(`\x1B`)&&(r[t]=(r[t]??``)+i,rn(e,t,i))}function Pn(e,t,n){let r=(e.m.sessions??[]).find(e=>e.id===t||e.claudeSessionId===t);if(r){n?r.followUp||={by:`hand`,at:e.now()}:delete r.followUp,e.broadcast({t:`session.updated`,session:r});return}let i=(e.m.closed??[]).find(e=>(e.claudeSessionId??e.id)===t||e.id===t);i&&(n?i.followUp||={by:`hand`,at:e.now()}:delete i.followUp,e.broadcast({t:`closed.list`,closed:e.m.closed??[]}))}function Fn(e,t){if(!t.targetSessionId)return;let n=o({id:t.id,cwd:t.repoDir,payload:{kind:`prompt`,steps:[t.text]},target:{kind:`session`,sessionId:t.targetSessionId},trigger:{kind:`idle`},auto:!0,pinned:t.autoFire||void 0,label:t.label,order:t.order,state:`queued`,createdAt:e.now()},e.now());n&&((e.m.intents??=[]).push(n),(e.m.runs??=[]).push(n.id),e.broadcast({t:`intent.changed`,intent:n}),Rn(e))}function In(e){let t=tn(e.m),n=(e.m.repos??[]).map(e=>e.worktreePath).filter(e=>!!e);return{present:new Set,sessions:t.map(e=>({id:e.id,cwd:e.cwd,running:e.running,turnStartedAt:e.turnStartedAt,turnActive:e.turnActive,limitBlocked:e.limit?.blocked,promptKind:e.prompt?.kind,awaitingInput:e.awaitingInput,convId:e.claudeSessionId})),busyCwds:new Set,busySessions:new Set((e.m.intents??[]).filter(e=>e.state===`running`||e.state===`starting`).map(e=>e.sessionId).filter(e=>!!e)),budgetHeldSessions:new Set(t.filter(i).map(e=>e.id)),budgetBlocked:!1,autoFire:e.m.backlog?.auto??!1,knownDirs:new Set(n),hostBusy:!1,autoSlotsFree:1}}var Ln=(e,t)=>(e.m.backlog?.items??[]).find(e=>e.id===t);function Rn(e){let t=new Set(e.m.runs??[]);if(t.size)for(let n of e.m.intents??[]){if(!t.has(n.id))continue;if(n.state===`running`){zn(e,n);continue}if(n.state!==`queued`&&n.state!==`blocked`)continue;let r=le(n,In(e),e.now());if(r.kind===`wait`){if(n.state===`blocked`&&n.blockReason===r.reason&&n.blockDetail===r.detail)continue;Object.assign(n,{state:`blocked`,blockReason:r.reason,blockDetail:r.detail}),e.broadcast({t:`intent.changed`,intent:n});continue}if(r.kind===`fail`)continue;let i=r.sessionId??(n.target.kind===`session`?n.target.sessionId:void 0),a=i?j(e.m,i):void 0;if(!a||n.payload.kind!==`prompt`)continue;let o=e.now();Object.assign(n,{state:`running`,startedAt:o,sessionId:a.id}),delete n.blockReason,delete n.blockDetail,e.broadcast({t:`intent.changed`,intent:n});let s=Ln(e,n.id);s&&(Object.assign(s,{status:`running`,sessionId:a.id,startedAt:o}),e.broadcast(kn(e.m))),_n(e,a.id,n.payload.steps[0])}}function zn(e,t){let n=t.sessionId?j(e.m,t.sessionId):void 0;if(n&&(n.turnActive||n.limit?.blocked))return;let r=e.now();Object.assign(t,{state:`done`,settledAt:r,result:{at:r,ok:!0,detail:`ran in ${n?.tabTitle??n?.title??`the session`}`}}),e.broadcast({t:`intent.changed`,intent:t})}var Bn={tier:`B`},M=e=>({tier:`B`,reason:e}),Vn=M(`Builds run commands on your desktop — the demo has no desktop to run them on. Connect your own to build.`),Hn=M(`Screenshots are taken on your desktop's screen — connect your own desktop to capture one.`),Un=M(`An assessment spends model calls on your desktop — connect your own to run one.`),Wn=M(`Fanning out opens sessions in several repos on your desktop — connect your own to try it.`),Gn=M(`The password gate guards a real desktop — the demo has nothing to lock.`),Kn=M(`Plugins run on your desktop, and the demo has none installed.`),qn=M(`Local models run on your desktop — the demo has none loaded.`),Jn=M(`Updating claude happens on your desktop — the demo's claude is not a real install.`),Yn=M(`Usage-limit resumes need a real claude session — the demo never hits a limit of its own.`),Xn=M(`This reads the real conversation log on your desktop — the demo keeps no logs.`),N=M(`The demo keeps your waiting work but does not start it — on your own desktop it would run here.`),Zn=M(`A live desktop streams your own screen, and the demo has no desktop to show.`),P=M(`The demo keeps no records on disk to change — this needs your own desktop.`),F=e=>e.desk.m,Qn=e=>(e.backlog??={}).items??=[],$n=e=>e.intents??=[];function er(e,t){let n=e.desk,r=Qn(n.m).find(e=>e.id===t);if(!r||r.status!==`queued`)return;let i=r.targetSessionId?j(n.m,r.targetSessionId):void 0,a=i?.running?i.id:pn(n,{cwd:r.repoDir,title:`backlog · ${r.label??r.text.slice(0,40)}`}).id;Object.assign(r,{status:`running`,sessionId:a,startedAt:n.now()}),n.broadcast(kn(n.m)),_n(n,a,r.text)}var tr=[{id:`claude`,label:`Claude Code`,caps:{contextMeter:!0,usageLimits:!0,transcript:!0,slash:!0,promptBoxes:!0,hooks:!0,effort:!0,remoteControl:!0,permissionModes:[`default`,`plan`,`acceptEdits`,`auto`,`dontAsk`,`bypassPermissions`]},models:{aliases:[`opus`,`sonnet`,`haiku`],ids:[`claude-opus-5-5`,`claude-sonnet-5`,`claude-haiku-4-5`]}}],nr=e=>({ok:!0,sessionPct:42,weeklyPct:61,checkedAt:e-12e4,sessionResetAt:e+78e5,weeklyResetAt:e+2772e5});function rr(e){let t=e.numbers??{};return[{t:`backends`,list:tr},{t:`session.list`,sessions:tn(e)},{t:`recent.list`,recent:e.recent??[]},{t:`closed.list`,closed:e.closed??[]},kn(e),t.update?{t:`update.status`,info:t.update}:null,{t:`plugin.list`,plugins:e.plugins??[]},{t:`decisions.log`,entries:(e.decisions??[]).slice(0,100)},t.usage?{t:`usage.status`,usage:t.usage}:null,t.meter?{t:`meter.status`,summary:t.meter}:null,{t:`notification.list`,items:e.notifications??[]},t.notifyPrefs?{t:`notify.prefs`,prefs:t.notifyPrefs}:null,t.budget?{t:`budget.state`,budget:t.budget.budget,verdict:t.budget.verdict}:null,{t:`limit.config`,enabled:e.limitConfig?.enabled??!1,resumingId:null,holdUntil:null,...e.limitConfig?.mode?{mode:e.limitConfig.mode}:{}},{t:`fanout.list`,runs:[]},{t:`pull.list`,items:e.pulls??[]},{t:`schedule.list`,entries:e.schedules??[]},{t:`launch.list`,launches:e.launches??[]},{t:`intent.list`,intents:e.intents??[]},{t:`delivery.list`,items:e.deliveries??[]},{t:`settings.all`,doc:e.settings??{}},e.install?{t:`install.log`,doc:e.install}:null,t.clihealth?{t:`clihealth`,health:t.clihealth.health,rollup:t.clihealth.rollup}:null].filter(e=>!!e)}var ir={ping:{tier:`A`,run:e=>{e.reply({t:`pong`})}},hello:{tier:`A`,run:()=>{}},"session.list":{tier:`A`,run:e=>{e.reply({t:`session.list`,sessions:tn(F(e))})}},"session.create":{tier:`A`,run:e=>{let{msg:t,desk:n}=e;if(!ht(n.m,t.cwd))return{ok:!1,reason:gt};if(t.forkAtTurn)return{ok:!1,reason:`Forking cuts the real conversation log on your desktop — the demo keeps none.`};t.replaceSessionId&&mn(n,t.replaceSessionId);let r=pn(n,{cwd:t.cwd,title:t.title,cols:t.cols,rows:t.rows});e.attach(r.id),t.budget&&Ct(n,r.id,t.budget);let i=t.prompt?.trim();return i&&_n(n,r.id,i),{ok:!0,sessionId:r.id}}},"session.attach":{tier:`A`,run:e=>{e.attach(e.msg.id);let t=un(e.desk,e.msg.id,e.msg.resumeSeq,e.msg.resumeBoot);t&&e.reply({t:`pty`,id:e.msg.id,...t}),e.reply({t:`session.history`,id:e.msg.id,entries:F(e).history?.[e.msg.id]??[]})}},"session.detach":{tier:`A`,run:e=>{e.detach(e.msg.id)}},"session.resize":{tier:`A`,run:e=>{let t=F(e).screens?.[e.msg.id];if(!t)return;let n=t.cols!==e.msg.cols;t.cols=e.msg.cols,t.rows=e.msg.rows,n&&t.log!=null&&cn(e.desk,e.msg.id)}},"session.kill":{tier:`A`,run:e=>{mn(e.desk,e.msg.id)}},"session.remove":{tier:`A`,run:e=>{hn(e.desk,e.msg.id)}},"session.input":{tier:`A`,run:e=>Mn(e.desk,e.msg)},"session.history":{tier:`A`,run:e=>{e.reply({t:`session.history`,id:e.msg.id,entries:F(e).history?.[e.msg.id]??[]})}},"session.record":{tier:`A`,run:e=>{j(F(e),e.msg.id)&&gn(e.desk,e.msg.id,e.msg.text,e.msg.kind)}},"recent.list":{tier:`A`,run:e=>{e.reply({t:`recent.list`,recent:F(e).recent??[]})}},"delivery.list":{tier:`A`,run:e=>{e.reply({t:`delivery.list`,items:F(e).deliveries??[]})}},"backlog.list":{tier:`A`,run:e=>{e.reply(kn(F(e)))}},"backlog.add":{tier:`A`,run:e=>{let{msg:t,desk:n}=e;if(!ht(n.m,t.repoDir))return{ok:!1,reason:gt};if(!t.text?.trim())return{ok:!1,reason:`There is nothing to queue — the text is empty.`};let r=Qn(n.m),i=mt(n.m,`b`);if(r.push({id:i,text:t.text,status:`queued`,repoDir:t.repoDir,createdAt:n.now(),order:r.reduce((e,t)=>Math.max(e,t.order),0)+1,...t.label?{label:t.label}:{},...t.targetSessionId?{targetSessionId:t.targetSessionId}:{},...t.autoFire==null?{}:{autoFire:t.autoFire},...t.resume==null?{}:{resume:t.resume},...t.closeWhenDone==null?{}:{closeWhenDone:t.closeWhenDone}}),n.broadcast(kn(n.m)),t.fire)er(e,i);else if(t.targetSessionId&&t.autoFire){let e=r.find(e=>e.id===i);e&&Fn(n,e)}return{ok:!0,itemId:i}}},"backlog.remove":{tier:`A`,run:e=>{let t=F(e);t.backlog={...t.backlog,items:Qn(t).filter(t=>t.id!==e.msg.id)},e.broadcast(kn(t))}},"backlog.fire":{tier:`A`,run:e=>{er(e,e.msg.id)}},"backlog.update":{tier:`A`,run:e=>{let{msg:t}=e,n=Qn(F(e)).find(e=>e.id===t.id);if(!n){e.reply({t:`toast`,text:`backlog: that item is gone`});return}if(t.repoDir!==void 0&&!ht(F(e),t.repoDir)){e.reply({t:`toast`,text:gt});return}let r={text:t.text,label:t.label,repoDir:t.repoDir,targetSessionId:t.targetSessionId,autoFire:t.autoFire,resume:t.resume,headline:t.headline,category:t.category};for(let[e,t]of Object.entries(r))t!==void 0&&(n[e]=t);t.closeWhenDone===null?delete n.closeWhenDone:typeof t.closeWhenDone==`boolean`&&(n.closeWhenDone=t.closeWhenDone),e.broadcast(kn(F(e)))}},"schedule.list":{tier:`A`,run:e=>{e.reply({t:`schedule.list`,entries:F(e).schedules??[]})}},"schedule.save":{tier:`A`,run:e=>{let t=e.msg.entry;if(!t||typeof t.id!=`string`||!t.id)return{ok:!1,reason:`nothing to run (pick repos and write a prompt)`};let n=null;try{n=t.enabled?ue(t.rule,e.now):null}catch{n=null}let r=F(e),i=r.schedules??=[],a={...t,nextAt:n},o=i.findIndex(e=>e.id===t.id);return o>=0?i[o]=a:i.push(a),e.broadcast({t:`schedule.list`,entries:i}),{ok:!0,intentId:t.id}}},"schedule.remove":{tier:`A`,run:e=>{let t=F(e);t.schedules=(t.schedules??[]).filter(t=>t.id!==e.msg.id),e.broadcast({t:`schedule.list`,entries:t.schedules})}},"intent.list":{tier:`A`,run:e=>{e.reply({t:`intent.list`,intents:F(e).intents??[]})}},"intent.post":{tier:`A`,run:e=>{let t=e.msg.intent;if(!ht(F(e),t?.cwd))return{ok:!1,reason:gt};let n=$n(F(e)),r=n.find(e=>e.id===t.id),i=r??o({...t,state:`queued`,createdAt:e.now},e.now);return i?(r||n.push(i),e.broadcast({t:`intent.changed`,intent:i}),{ok:!0,intentId:i.id,launchId:i.trigger.kind===`files`?i.id:void 0}):{ok:!1,reason:`That request could not be read, so nothing was written down.`}}},"intent.dismiss":{tier:`A`,run:e=>{let t=$n(F(e)).find(t=>t.id===e.msg.id);t&&t.dismissedAt==null&&[`done`,`failed`,`canceled`].includes(t.state)&&(t.dismissedAt=e.now,e.broadcast({t:`intent.changed`,intent:t}))}},"settings.get":{tier:`A`,run:e=>{e.reply({t:`settings.all`,doc:F(e).settings??{}})}},"settings.set":{tier:`A`,run:e=>{let{key:t,value:n,ts:r,device:i}=e.msg,a=F(e).settings??={},o=a[t];o&&o.ts>r?e.reply({t:`settings.update`,key:t,value:o.value,ts:o.ts,...o.device?{device:o.device}:{}}):(a[t]={value:n,ts:r,...i?{device:i}:{}},e.broadcast({t:`settings.update`,key:t,value:n,ts:r,...i?{device:i}:{}}))}},"usage.get":{tier:`A`,run:e=>{let t=F(e).numbers?.usage;t&&e.reply({t:`usage.status`,usage:t})}},"update.status":{tier:`A`,run:e=>{let t=F(e).numbers?.update;t&&e.reply({t:`update.status`,info:t})}},"notification.get":{tier:`A`,run:e=>{e.reply({t:`notification.list`,items:F(e).notifications??[]})}},"budget.get":{tier:`A`,run:e=>{let t=F(e).numbers?.budget;t&&e.reply({t:`budget.state`,budget:t.budget,verdict:t.verdict})}},"billing.get":{tier:`A`,run:()=>{}},"clihealth.get":{tier:`A`,run:e=>{let t=F(e).numbers?.clihealth;t&&e.reply({t:`clihealth`,health:t.health,rollup:t.rollup})}},"clihealth.clear":{tier:`A`,run:e=>{let t=F(e).numbers?.clihealth;t&&e.reply({t:`clihealth`,health:t.health,rollup:t.rollup})}},"meter.get":{tier:`A`,run:e=>{let t=F(e).numbers?.meter;t&&e.reply({t:`meter.status`,summary:t})}},"artifacts.get":{tier:`A`,run:e=>{ht(F(e),e.msg.repoDir)&&e.reply({t:`artifacts.config`,repoDir:e.msg.repoDir,policy:F(e).artifactPolicies?.[e.msg.repoDir]??ie})}},"pull.list":{tier:`A`,run:e=>{e.reply({t:`pull.list`,items:F(e).pulls??[]})}},"plugin.list":{tier:`A`,run:e=>{e.reply({t:`plugin.list`,plugins:F(e).plugins??[]})}},"auth.get":{tier:`A`,run:e=>{e.reply({t:`auth.state`,auth:{enabled:!1,gateTailscale:!1,canManage:!1}})}},"install.get":{tier:`A`,run:e=>{let t=F(e).install;t&&e.reply({t:`install.log`,doc:t})}},"decisions.get":{tier:`A`,run:e=>{let t=e.msg.sessionId,n=(F(e).decisions??[]).filter(e=>!t||e.sessionId===t).slice(0,200);e.reply({t:`decisions.log`,entries:n,sessionId:t})}},"sent.get":{tier:`A`,run:e=>{let t=e.msg.sessionId;e.reply({t:`sent.log`,entries:(F(e).sent??[]).filter(e=>!t||e.sessionId===t),sessionId:t})}},"build.list":{tier:`A`,run:e=>{e.reply({t:`build.list`,repoDir:e.msg.repoDir,builds:[],runs:[]})}},"capture.list":{tier:`A`,run:e=>{e.reply({t:`capture.list`,repoDir:e.msg.repoDir,targets:[],runs:[],backends:[]})}},"fanout.list":{tier:`A`,run:e=>{e.reply({t:`fanout.list`,runs:[]})}},"launch.list":{tier:`A`,run:e=>{e.reply({t:`launch.list`,launches:F(e).launches??[]})}},"assess.state":{tier:`A`,run:e=>{e.reply({t:`assess.state`,repoDir:e.msg.repoDir??``,run:null})}},"session.name":Xn,"session.fork":Xn,"session.reopen":M(`Reopening resumes a conversation from your desktop's log — open a new session in the demo instead.`),"session.mode":{tier:`A`,run:e=>yn(e.desk,e.msg.id,e.msg.mode)},"session.budget.set":{tier:`A`,run:e=>{let t=Ct(e.desk,e.msg.id,e.msg.budget);t&&e.reply({t:`toast`,text:t})}},"session.rename":P,"session.star":P,"session.followup":{tier:`A`,run:e=>Pn(e.desk,e.msg.id,e.msg.on)},"session.pin":P,"session.background":Bn,"session.closecheck":M(`The close check reads git on your desktop — the demo has no working tree.`),"session.search":Xn,"session.remoteControl":Bn,"session.ackAsking":Bn,"input.settle":Bn,"shell.kill":M(`The demo runs no background shells to stop.`),"backlog.archive":P,"backlog.check":Un,"backlog.continue":N,"backlog.done":P,"backlog.name":Un,"backlog.nextStep":N,"backlog.openRepoSession":N,"backlog.reorder":P,"backlog.setAuto":N,"backlog.swap":P,"backlog.validate":Un,"build.cancel":Vn,"build.options":Vn,"build.run":Vn,"build.save":Vn,"build.scan":{tier:`A`,run:e=>{e.reply({t:`build.candidates`,repoDir:e.msg.repoDir,candidates:[],total:0})}},"capture.cancel":Hn,"capture.run":Hn,"capture.save":Hn,"assess.apply":Un,"assess.discard":Un,"assess.run":Un,"fanout.followup":Wn,"fanout.run":Wn,"artifacts.save":P,"auth.clear":Gn,"auth.gateTailscale":Gn,"auth.set":Gn,"budget.set":P,"billing.set":P,"closed.clear":P,"decisions.archive":P,"decisions.archiveAll":P,"decisions.delete":P,"install.report":{tier:`A`,run:()=>{}},"net.stalls":{tier:`A`,run:()=>{}},"intent.cancel":N,"intent.requeue":N,"intent.retarget":N,"intent.run":N,"intent.update":N,"intent.waive":N,"launch.cancel":N,"launch.run":N,"limit.first":Yn,"limit.resume":Yn,"limit.session":Yn,"host.halt":M(`The demo has no AI processes to stop — on a real desktop this halts every agent session and holds automatic work until lifted.`),"limit.setAuto":Yn,"limit.setMode":Yn,"backends.recheck":Bn,"localrt.evict":qn,"localrt.watch":{tier:`A`,run:e=>{e.reply({t:`localrt.sample`,disabled:!0,sample:{at:e.now,models:[],reachable:!1,cpuPct:0,memTotal:0,memFree:0}})}},"notification.clear":P,"notify.prefs.set":P,"plugin.action":Kn,"plugin.call":Kn,"plugin.enable":Kn,"plugin.sessionAnswer":Kn,"plugin.sessionToggle":Kn,"plugin.set":Kn,"pull.add":P,"pull.dismiss":P,"pull.get":P,"pull.save":P,"recent.clear":P,"schedule.run":N,"schedule.setEnabled":P,"schedule.skipNext":P,"sent.clear":P,"stream.ack":Zn,"stream.close":Zn,"stream.input":Zn,"stream.keyframe":Zn,"stream.open":Zn,"stream.params":Zn,"update.apply":Jn,"updates.apply":Jn,"updates.check":Jn,"updates.get":Jn,"update.check":Jn,"usage.refresh":{tier:`A`,run:e=>{let t=F(e).numbers?.usage;t&&e.reply({t:`usage.status`,usage:t})}}},ar=`~/dev/todo-garden`,or=`~/dev/pocket-notes`,sr=`~/dev/trail-log`,I=`claude-opus-5`,cr=`claude-opus-5-5`,lr=`claude-fable-5`,ur=`claude-fable-5-1`,dr=`claude-sonnet-5`,fr=`claude-sonnet-5-5`,pr=`claude-haiku-4-5`,L=36e5,mr=20261002,hr=3,gr=12,_r=56e3,vr=24e3,yr=120,br=1.6,xr={[ar]:[`make overdue tasks show a red edge`,`group the tasks by day`,`add a swipe to complete`,`persist the filter between launches`,`tidy the empty state`,`speed up the list on 2,000 tasks`,`recurring tasks every second Tuesday`,`undo for a deleted task`,`drag to reorder within a day`],[or]:[`the markdown export drops the title`,`search should ignore accents`,`pin a note to the top`,`autosave loses the last word`,`dark theme for the editor`,`tags with a colour each`],[sr]:[`import a GPX file and draw the route`,`elevation profile under the map`,`show distance per hour`,`merge two hikes into one`,`offline map tiles`,`photos pinned to the route`]},Sr=[{repo:ar,title:`rewrite the sync engine for offline edits`,back:9,at:9,spanH:25,sittings:4,model:I,turns:361,peak:43e4,agents:28,agentTurns:120,agentPeak:42e4},{repo:ar,title:`move every screen to the new design tokens`,back:4,at:8,spanH:14,sittings:3,model:I,turns:198,peak:36e4,agents:33,agentTurns:107,agentPeak:4e5},{repo:or,title:`end-to-end encryption for shared notebooks`,back:13,at:10,spanH:93,sittings:26,model:I,turns:319,peak:64e4,agents:18,agentTurns:132,agentPeak:46e4},{repo:ar,title:`split the 3,000-line store into modules`,back:2,at:9,spanH:10,sittings:2,model:I,turns:324,peak:3e5,agents:34,agentTurns:74,agentPeak:3e5},{repo:sr,title:`find why the route drifts on long hikes`,back:7,at:13,spanH:26,sittings:5,model:I,turns:626,peak:82e4,agents:0,agentTurns:0,agentPeak:0},{repo:or,title:`a plugin API for custom note types`,back:12,at:15,spanH:82,sittings:9,model:I,turns:380,peak:42e4,agents:6,agentTurns:112,agentPeak:38e4}];function Cr(e){let t=e>>>0;return()=>{t=t+1831565813>>>0;let e=t;return e=Math.imul(e^e>>>15,e|1),e^=e+Math.imul(e^e>>>7,e|61),((e^e>>>14)>>>0)/4294967296}}var wr=e=>String(e).padStart(2,`0`);function Tr(e){let t=new Date(e);return`${t.getFullYear()}-${wr(t.getMonth()+1)}-${wr(t.getDate())}T${wr(t.getHours())}`}function Er(e){let t=new Date(e);return t.setMinutes(0,0,0),t.getTime()}var Dr=[1.5,.9,.3,.15,.1,.1,1.4,2,4.1,6.2,11.8,11.5,10.1,8.5,9.3,10.3,11.8,10.3,6,7.2,15.3,15.5,13.6,3.3];function Or(e){let t=Cr(mr),n=(e,n)=>{let r=t()*n.reduce((e,t)=>e+t,0);for(let t=0;t<e.length;t++)if(r-=n[t],r<0)return e[t];return e[e.length-1]},r=(e,n)=>e+t()*(n-e),i=[],a=new Date(e);a.setHours(0,0,0,0);let o=(e,t=0)=>new Date(a.getFullYear(),a.getMonth(),a.getDate()-e,t).getTime(),s=0,c=new Map,l=e=>{let t=c.get(e)??0;return c.set(e,t+1),xr[e][t%xr[e].length]},d=()=>n([I,dr,lr,ur,pr],[.5,.33,.06,.06,.05]),f=n=>{let a=`demo-tok-${s++}`,o=new Map,c=[],l=(t,n,r,i)=>{let a=Tr(Math.min(n,e)),o=`${a}\u0000${r}`,s=t.get(o)??t.set(o,{hour:a,model:r,t:b()}).get(o);u(s.t,i)},d=Math.max(1,n.sittings),f=d===1?n.spanH:n.spanH*r(.45,.6),p=Array.from({length:d},()=>r(.6,1.4)),m=Array.from({length:d-1},()=>r(.4,1.6)),h=p.reduce((e,t)=>e+t,0),g=m.reduce((e,t)=>e+t,0)||1,_=[],v=n.start;for(let e=0;e<d;e++){let t=p[e]/h*f;_.push({from:v,hours:t,turns:Math.max(1,Math.round(p[e]/h*n.turns))}),v+=t*L,e<d-1&&(v+=Math.max(br,m[e]/g*(n.spanH-f))*L)}let ee=0,y=0;for(let i of _)for(let a=0;a<i.turns&&y<n.turns;a++,y++){let s=i.from+a/i.turns*i.hours*L,u=Math.round(n.base+(n.peak-n.base)*(y/Math.max(1,n.turns-1))**.85*r(.97,1)),d=Math.round(r(100,n.model===`claude-haiku-4-5`?300:520)),f=1+Math.floor(t()*30);if(a===0)l(o,s,n.model,{input:f,output:d,cacheRead:0,cacheWrite:u,cacheWrite1h:n.oneHour?u:0,turns:1}),y>0&&c.push({hour:Tr(Math.min(s,e)),model:n.model,count:1,tok:u,tok1h:n.oneHour?u:0});else{let e=Math.max(300,u-ee)+Math.round(t()*3200);l(o,s,n.model,{input:f,output:d,cacheRead:ee,cacheWrite:e,cacheWrite1h:n.oneHour?e:0,turns:1})}ee=u}i.push({convo:a,title:n.title,sub:!1,repo:n.repo,cells:[...o.values()],cold:c});for(let e of n.agents){let o=_[Math.floor(t()*_.length)],s=o.from+t()*o.hours*L,c=new Map,u=0;for(let n=0;n<e.turns;n++){let i=s+n/yr*L,a=Math.round(vr+(e.peak-vr)*(n/Math.max(1,e.turns-1))**.8),o=Math.round(r(40,260));if(n===0)l(c,i,e.model,{input:3,output:o,cacheRead:0,cacheWrite:a,cacheWrite1h:0,turns:1});else{let n=Math.max(200,a-u)+Math.round(t()*900);l(c,i,e.model,{input:1+Math.floor(t()*8),output:o,cacheRead:u,cacheWrite:n,cacheWrite1h:0,turns:1})}u=a}i.push({convo:a,title:n.title,sub:!0,repo:n.repo,cells:[...c.values()],cold:[]})}};for(let e of Sr)f({repo:e.repo,title:e.title,start:o(e.back,e.at)+42e4,spanH:e.spanH,sittings:e.sittings,model:e.model,turns:e.turns,base:_r,peak:e.peak,oneHour:!0,agents:Array.from({length:e.agents},()=>({model:n([I,lr,dr],[.76,.06,.18]),turns:Math.round(e.agentTurns*r(.5,1.5)),peak:Math.round(e.agentPeak*r(.5,1.1))}))});for(let i=13;i>=0;i--){let a=new Date(o(i)).getDay(),s=Math.round((a===0?.35:a===6?.5:1)*22+t()*6),c=i===0?new Date(e).getHours():23,u=Array.from({length:c+1},(e,t)=>t);for(let e=0;e<s;e++){let e=n([ar,or,sr],[.55,.28,.17]),a=o(i,n(u,u.map(e=>Dr[e])))+Math.floor(t()*50)*6e4,s=n([`tiny`,`ordinary`,`long`],[.55,.36,.09]);if(s===`tiny`){let i=n([pr,fr,dr],[.5,.33,.17]),o=Math.round(r(14e3,4e4));f({repo:e,title:l(e),start:a,spanH:.2,sittings:1,model:i,turns:1+Math.floor(t()*6),base:o,peak:o+Math.round(t()*12e3),oneHour:!1,agents:[]})}else if(s===`ordinary`){let i=n([I,cr,lr,dr],[.66,.22,.05,.07]),o=t()<.35?1+Math.floor(t()*4):0,s=n([1,2,3],[.45,.35,.2]);f({repo:e,title:l(e),start:a,spanH:s===1?r(.5,2.5):r(4,9),sittings:s,model:i,turns:Math.round(r(20,170)),base:_r,peak:Math.round(r(11e4,26e4)),oneHour:!0,agents:Array.from({length:o},()=>({model:d(),turns:Math.round(r(10,60)),peak:Math.round(r(6e4,22e4))}))})}else{let i=n([I,cr],[.75,.25]),o=2+Math.floor(t()*9),s=2+Math.floor(t()*3);f({repo:e,title:l(e),start:a,spanH:r(5,14),sittings:s,model:i,turns:Math.round(r(180,520)),base:_r,peak:Math.round(r(26e4,48e4)),oneHour:!0,agents:Array.from({length:o},()=>({model:d(),turns:Math.round(r(25,110)),peak:Math.round(r(12e4,36e4))}))})}}}return i}var kr=e=>y(e),Ar=(e,t,n,r)=>{let i=e.get(t)??e.set(t,new Map).get(t);return i.get(n)??i.set(n,r()).get(n)};function jr(t,n){let i=b(),a=b(),o=new Map,s=new Map,c=Array.from({length:24},b),d=new Map,f=new Map,m=E(),h=E(),g=new Map,_=new Map,v=Array.from({length:24},E),ee=new Map,y=new Map,te=b(),ne=new Map,re=new Map,ie=new Map,ae=new Map,x=new Map,oe=new Map,le=new Map,S=new Map,C={count:0,tok:0,usd:0,premiumUsd:0},T=new Map,ue=new Map,de=new Map,fe=0,pe=0;for(let n of t){n.sub?pe++:fe++,ue.set(n.convo,n.title);let t=T.get(n.convo)??T.set(n.convo,{id:n.convo,repo:n.repo,label:n.repo.split(`/`).pop()??n.repo,firstAt:null,lastAt:null,totals:b(),cost:E(),agentTotals:b(),agentCost:E(),agents:0,first:``,last:``}).get(n.convo);if(n.sub){t.agents++;let e=``,r=``;for(let t of n.cells)(!e||t.hour<e)&&(e=t.hour,r=t.model);if(e){let t=x.get(e.slice(0,10))??x.set(e.slice(0,10),new Map).get(e.slice(0,10));t.set(r,(t.get(r)??0)+1)}}for(let e of n.cold){let n=e.hour.slice(0,10);C.count+=e.count,C.tok+=e.tok;let r=se({input:0,output:0,cacheRead:0,cacheWrite:e.tok,cacheWrite1h:e.tok1h},e.model,n),i=se({input:0,output:0,cacheRead:e.tok,cacheWrite:0,cacheWrite1h:0},e.model,n);if(r&&(C.usd+=r.total,i)){let e=Math.max(0,r.total-i.total);C.premiumUsd+=e,e>0&&(t.coldUsd=(t.coldUsd??0)+e)}}for(let{hour:r,model:l,t:p}of n.cells){let x=r.slice(0,10),ce=Number(r.slice(11,13));u(o.get(x)??o.set(x,b()).get(x),p),u(s.get(r)??s.set(r,b()).get(r),p),u(c[ce],p),u(d.get(l)??d.set(l,b()).get(l),p),u(f.get(n.repo)??f.set(n.repo,b()).get(n.repo),p),u(i,p),n.sub&&u(a,p),u(Ar(ne,x,l,b),p),u(Ar(ie,r,l,b),p);let C=Ar(oe,x,n.repo,()=>({turns:0,pricedTurns:0,usd:0}));C.turns+=p.turns,u(Ar(le,n.repo,l,b),p),u(t.totals,p),n.sub&&u(t.agentTotals,p),(!t.first||r<t.first)&&(t.first=r),(!t.last||r>t.last)&&(t.last=r);let w=Ar(de,r,l,()=>({t:b(),c:E()}));u(w.t,p);let T=se(p,l,x);T?(C.pricedTurns+=p.turns,C.usd+=T.total,e(w.c,T),e(t.cost,T),n.sub&&e(t.agentCost,T),e(Ar(re,x,l,E),T),e(Ar(ae,r,l,E),T),e(Ar(S,n.repo,l,E),T),e(m,T),n.sub&&e(h,T),e(g.get(x)??g.set(x,E()).get(x),T),e(_.get(r)??_.set(r,E()).get(r),T),e(v[ce],T),e(ee.get(l)??ee.set(l,E()).get(l),T),e(y.get(n.repo)??y.set(n.repo,E()).get(n.repo),T)):u(te,p)}}let me=(e,t)=>[...(e??new Map).entries()].map(([e,n])=>({model:e,totals:n,cost:t?.get(e)??E()})).sort((e,t)=>w(t.totals)-w(e.totals)),he=[...T.values()].filter(e=>w(e.totals)>0).sort((e,t)=>t.cost.total-e.cost.total||w(t.totals)-w(e.totals)).slice(0,gr).map(({first:e,last:t,...n})=>({...n,firstAt:e?kr(e):null,lastAt:t?kr(t):null})),D=[...o.entries()].map(([e,t])=>({day:e,...t,cost:g.get(e)??E(),byModel:me(ne.get(e),re.get(e)),agents:[...(x.get(e)??new Map).entries()].map(([e,t])=>({model:e,count:t})).sort((e,t)=>t.count-e.count),byRepo:[...(oe.get(e)??new Map).entries()].map(([e,t])=>({repo:e,...t})).sort((e,t)=>t.usd-e.usd)})).sort((e,t)=>e.day<t.day?-1:+(e.day>t.day)),ge=[...s.entries()].map(([e,t])=>({hour:e,...t,cost:_.get(e)??E(),byModel:me(ie.get(e),ae.get(e))})).sort((e,t)=>e.hour<t.hour?-1:+(e.hour>t.hour)),_e=c.map((e,t)=>({hour:t,...e,cost:v[t]})),ve=(e,t,n,r,i)=>[...e.entries()].map(([e,a])=>({key:e,label:n(e),...a,cost:t.get(e)??E(),priced:l(e),...r?{byModel:me(r.get(e),i?.get(e))}:{}})).sort((e,t)=>w(t)-w(e)),ye=D[0]?.day??null,be=D[D.length-1]?.day??null;return{doc:{totals:i,days:D,hours:ge,hoursFrom:ge.length?r(ge[0].hour.slice(0,10)):null,hourOfDay:_e,models:ve(d,ee,e=>p(e)??e),repos:ve(f,y,e=>e.split(`/`).pop()??e,le,S),conversations:fe,subagents:a,subagentLogs:pe,cost:m,subagentCost:h,unpriced:te,fastTurns:Math.min(hr,i.turns),coldStarts:{count:C.count,tok:C.tok,...C.usd>0?{usd:C.usd}:{},...C.premiumUsd>0?{premiumUsd:C.premiumUsd}:{}},top:he,pricesAsOf:ce,firstAt:ye?r(ye):null,lastAt:be?r(be):null,scannedAt:n,logs:t.length,reread:0},cells:de,titles:ue,files:t}}var Mr=null;function Nr(e){let t=Er(e);return(!Mr||Mr.anchor!==t)&&(Mr={anchor:t,ledger:jr(Or(t),e)}),{...Mr.ledger,doc:{...Mr.ledger.doc,scannedAt:e}}}function Pr(e){let{doc:t,titles:n}=Nr(e);return(t.top??[]).map(e=>({convo:e,title:n.get(e.id)??e.label}))}function Fr(e){return Nr(e).doc}function Ir(e,t,n){if(!Number.isFinite(e)||!Number.isFinite(t)||!(n>0))return[];let r=Math.ceil((t-e)/n)-1,i=[];for(let a of[r-1,r]){if(a<0)continue;let r=t-(a+1)*n,o=t-a*n;e>=f(r)&&e<f(o)&&i.push(a)}return i}function Lr(e){return(e??``).split(`,`).map(e=>{let[t,n,r]=e.split(`:`);return{id:t||``,anchor:Number(n),lenMs:Number(r)}}).filter(e=>e.id&&Number.isFinite(e.anchor)&&e.lenMs>0)}function Rr(t,n){let{cells:r,doc:i}=Nr(t),a=[...r.keys()].sort(),o=a[0],s=a[a.length-1];return{series:n.map(t=>{let n=new Map;for(let[i,a]of r)for(let r of Ir(kr(i),t.anchor,t.lenMs)){let t=n.get(r)??n.set(r,new Map).get(r);for(let[n,r]of a){let i=t.get(n)??t.set(n,{t:b(),c:E()}).get(n);u(i.t,r.t),e(i.c,r.c)}}let i=[...n.entries()].map(([t,n])=>{let r=b(),i=E(),a=[];for(let[t,o]of n)u(r,o.t),e(i,o.c),a.push({model:t,totals:o.t,cost:o.c});return{back:t,...r,cost:i,byModel:a.sort((e,t)=>w(t.totals)-w(e.totals))}}).sort((e,t)=>e.back-t.back);return{id:t.id,anchor:t.anchor,lenMs:t.lenMs,windows:i,oldestHour:o?kr(o):null,newestHour:s?kr(s):null}}),scannedAt:i.scannedAt}}var zr=()=>({totals:b(),cost:E()}),Br=(e,t,n)=>e.get(t)??e.set(t,n()).get(t),Vr=e=>[...e].map(([e,t])=>({model:e,...t})).sort((e,t)=>w(t.totals)-w(e.totals)),Hr=(e,t)=>t.cost.total-e.cost.total||w(t.totals)-w(e.totals),Ur=([e],[t])=>e<t?-1:+(e>t),Wr=e=>e.split(`/`).pop()??e;function Gr(t,n,r,i=!0){let{files:a,titles:o,doc:s}=Nr(t),c=Er(n),l=zr(),d=zr(),f=b(),p=new Map,m=new Map;for(let t of i?a:[]){let n;for(let{hour:i,model:a,t:o}of t.cells){let s=kr(i);if(s<c||s>=r||w(o)<=0)continue;n||(n=Br(m,t.convo,()=>({repo:t.repo,...zr(),agent:zr(),agents:0,byModel:new Map,agentByModel:new Map,byHour:new Map})),t.sub&&n.agents++);let h=Br(p,i,()=>({...zr(),byRepo:new Map,byModel:new Map})),g=Br(n.byHour,i,()=>({hour:i,usd:0,tok:0})),_=se(o,a,i.slice(0,10));g.tok+=w(o),g.usd+=_?.total??0,_||u(f,o);let v=[l,n,h,Br(n.byModel,a,zr),Br(h.byModel,a,zr),Br(h.byRepo,t.repo,zr),...t.sub?[d,n.agent,Br(n.agentByModel,a,zr)]:[]];for(let t of v)u(t.totals,o),_&&e(t.cost,_)}}let h=[...m].sort(([,e],[,t])=>Hr(e,t)).map(([e,t])=>{let n=[...t.byHour].sort(Ur).map(([,e])=>e);return{id:e,repo:t.repo,label:Wr(t.repo),firstAt:kr(n[0].hour),lastAt:kr(n[n.length-1].hour),totals:t.totals,cost:t.cost,agentTotals:t.agent.totals,agentCost:t.agent.cost,agents:t.agents,byModel:Vr(t.byModel),agentByModel:Vr(t.agentByModel),byHour:n,live:!1,...o.get(e)?{title:o.get(e)}:{}}});return{from:n,to:r,fromHour:c,hours:[...p].sort(Ur).map(([e,t])=>({hour:e,t:kr(e),totals:t.totals,cost:t.cost,byModel:Vr(t.byModel),byRepo:[...t.byRepo].map(([e,t])=>({repo:e,label:Wr(e),...t})).sort(Hr)})),convos:h,totals:l.totals,cost:l.cost,agentTotals:d.totals,agentCost:d.cost,unpriced:f,pricesAsOf:ce,scannedAt:s.scannedAt}}var Kr=5*L,qr=168*L,Jr=9e5,Yr=336*L;function Xr(e,t,n){let{cells:r}=Nr(e),i=new Map;for(let[e,t]of r){let n=0;for(let e of t.values())n+=e.c.total;i.set(kr(e),n)}let a=(e,t)=>{if(t<=e)return 0;let n=0;for(let r=Er(e);r<t;r+=L){let a=i.get(r);if(!a)continue;let o=Math.max(e,r),s=Math.min(t,r+L);s>o&&(n+=a*((s-o)/L))}return n},o=e-Yr,s=(e,n,r)=>{if(e==null||r==null)return{end:e=>null,pct:e=>null};let i=t=>e-Math.floor((e-t-1)/n)*n,s=0;for(let t=e-n;t>o;t-=n)s=Math.max(s,a(t-n,t));let c=a(e-n,t.checkedAt),l=s>0?80/s:0,u=c>0?r/c:0;return{end:i,pct:o=>{let s=i(o),c=s===e?u?u*a(s-n,o):r*Math.min(1,(o-(s-n))/Math.max(1,t.checkedAt-(s-n))):l*a(s-n,o);return Math.max(0,Math.min(100,Math.round(c)))}}},c=s(t.sessionResetAt,Kr,t.sessionPct),l=s(t.weeklyResetAt,qr,t.weeklyPct),u=[];for(let e=t.checkedAt-Jr;e>o;e-=Jr)new Date(e).getHours()<7||u.push({t:e,s:c.pct(e),w:l.pct(e),sr:c.end(e),wr:l.end(e)});u.reverse(),u.push({t:t.checkedAt,s:t.sessionPct,w:t.weeklyPct,sr:t.sessionResetAt,wr:t.weeklyResetAt});let d=n!=null&&Number.isFinite(n)&&n>0?e-n*L:null,f=d==null?u:u.filter(e=>e.t>=d);return{samples:f,keptFrom:f.length?f[0].t:null,cap:2e3,retainMs:Yr,everyMs:Jr}}var Zr=864e5,Qr=60,$r=14,ei=14,ti=27,ni=[{name:`todo-garden`,groups:[{pkg:`app`,start:24e3,end:24900},{pkg:`lib`,start:9e3,end:9300},{pkg:`src`,start:4800,end:5800},{pkg:`.`,start:64,end:72}],types:[{ext:`.tsx`,pack:`TypeScript`,share:.46},{ext:`.ts`,pack:`TypeScript`,share:.44},{ext:`.mjs`,pack:`JavaScript`,share:.1}],files:[114,120],deps:[6,8],hatches:[80,96],claudeMd:[7350,7800],desc:[1150,1200],skills:[2,4],untested:[26,29],retouch:[.19,.22],touches:[38,52],commits:211,top:[{path:`src/garden/planner.ts`,start:3900,end:5200},{path:`app/GardenView.tsx`,start:900,end:1140},{path:`app/store.ts`,start:820,end:880},{path:`app/PlantSheet.tsx`,start:700,end:760},{path:`lib/watering.ts`,start:610,end:650},{path:`app/App.tsx`,start:560,end:600},{path:`lib/schedule.ts`,start:520,end:545},{path:`app/Reminders.tsx`,start:480,end:505},{path:`app/sync.ts`,start:450,end:470},{path:`lib/seasons.ts`,start:420,end:430},{path:`app/theme.ts`,start:390,end:400},{path:`app/Settings.tsx`,start:360,end:372}],offenders:[{path:`src/garden/planner.ts`,n:7},{path:`app/GardenView.tsx`,n:4},{path:`app/store.ts`,n:3}]},{name:`photo-shelf`,groups:[{pkg:`lib`,start:70500,end:74200},{pkg:`functions`,start:3600,end:4e3},{pkg:`tool`,start:1700,end:1800}],types:[{ext:`.dart`,pack:`Dart`,share:.93},{ext:`.ts`,pack:`TypeScript`,share:.05},{ext:`.sh`,pack:null,share:.02}],files:[142,146],deps:[28,31],hatches:[30,32],claudeMd:[8600,9e3],desc:[1180,1200],skills:[5,6],untested:[23,25],retouch:[.08,.07],touches:[70,84],commits:1140,top:[{path:`lib/services/sync_backend.dart`,start:7750,end:8397},{path:`lib/screens/library_screen.dart`,start:5050,end:5400},{path:`lib/services/album_store.dart`,start:3300,end:3560},{path:`lib/screens/editor_screen.dart`,start:2900,end:3120},{path:`lib/widgets/photo_grid.dart`,start:2600,end:2780},{path:`lib/services/upload_queue.dart`,start:2350,end:2510},{path:`lib/screens/settings_screen.dart`,start:2150,end:2270},{path:`lib/models/photo.dart`,start:1950,end:2089},{path:`lib/services/exif_reader.dart`,start:1700,end:1820},{path:`lib/widgets/share_sheet.dart`,start:1500,end:1640},{path:`functions/src/index.ts`,start:1250,end:1390},{path:`lib/main.dart`,start:1100,end:1210}],offenders:[{path:`lib/services/sync_backend.dart`,n:4},{path:`lib/screens/library_screen.dart`,n:2},{path:`lib/services/album_store.dart`,n:2}]},{name:`pocket-notes`,groups:[{pkg:`src`,start:4620,end:6240},{pkg:`server`,start:1380,end:2110},{pkg:`shared`,start:360,end:520}],types:[{ext:`.tsx`,pack:`TypeScript`,share:.38},{ext:`.ts`,pack:`TypeScript`,share:.55},{ext:`.css`,pack:null,share:.07}],files:[52,71],deps:[11,14],hatches:[18,17],claudeMd:[3050,3960],desc:[1120,1480],skills:[4,6],untested:[19,15],retouch:[.27,.19],touches:[51,66],commits:342,top:[{path:`src/Editor.tsx`,start:310,end:402},{path:`server/search.ts`,start:228,end:361},{path:`src/NoteList.tsx`,start:204,end:296},{path:`server/sync.ts`,start:180,end:274},{path:`src/markdown.ts`,start:166,end:232},{path:`src/App.tsx`,start:150,end:211},{path:`server/db.ts`,start:122,end:198},{path:`src/Tags.tsx`,start:90,end:177},{path:`shared/types.ts`,start:118,end:160},{path:`src/offline.ts`,start:80,end:148},{path:`src/Toolbar.tsx`,start:76,end:126},{path:`server/auth.ts`,start:60,end:109}],offenders:[{path:`src/Editor.tsx`,n:7},{path:`server/search.ts`,n:5},{path:`src/NoteList.tsx`,n:3}]},{name:`trail-log`,groups:[{pkg:`app`,start:1840,end:2760},{pkg:`tools`,start:240,end:310}],types:[{ext:`.ts`,pack:`TypeScript`,share:.58},{ext:`.tsx`,pack:`TypeScript`,share:.34},{ext:`.mjs`,pack:`JavaScript`,share:.08}],files:[22,29],deps:[4,5],hatches:[5,4],claudeMd:[1480,2020],desc:[380,520],skills:[1,2],untested:[6,4],retouch:[.36,.28],touches:[25,33],commits:118,top:[{path:`app/MapScreen.tsx`,start:176,end:262},{path:`app/gpx.ts`,start:188,end:241},{path:`app/TrackStore.ts`,start:130,end:205},{path:`app/elevation.ts`,start:92,end:166},{path:`app/App.tsx`,start:84,end:138},{path:`app/Stats.tsx`,start:40,end:124},{path:`tools/export.mjs`,start:70,end:98},{path:`app/units.ts`,start:58,end:82},{path:`app/Photos.tsx`,start:30,end:77},{path:`app/theme.ts`,start:44,end:61},{path:`app/Settings.tsx`,start:26,end:54},{path:`app/format.ts`,start:30,end:41}],offenders:[{path:`app/MapScreen.tsx`,n:5},{path:`app/gpx.ts`,n:4},{path:`app/TrackStore.ts`,n:2}]}];function ri(e){let t=2166136261;for(let n=0;n<e.length;n++)t=Math.imul(t^e.charCodeAt(n),16777619);return t^=t>>>15,t=Math.imul(t,2246822519),t^=t>>>13,(t>>>0)/4294967296}var ii=e=>Array.from({length:7},(t,n)=>`0123456789abcdef`[Math.floor(ri(`${e}:${n}`)*16)]).join(``),ai=e=>String(e).padStart(2,`0`),oi=e=>{let t=new Date(e);return`${t.getFullYear()}-${ai(t.getMonth()+1)}-${ai(t.getDate())}`},si=(e,t,n)=>e+(t-e)*n;function ci(e,t){let n=e.slice(-60);if(t)return{rank:null,slope:null,n:n.length,from:null,reason:`a count whose direction carries no claim, so it is drawn and not ranked`};if(n.length<$r)return{rank:null,slope:null,n:n.length,from:null,reason:`only ${n.length} readings; a rank needs ${$r}`};let r=n[n.length-1],i=n.filter(e=>e<=r).length/n.length,a=r-n[0],o=Math.max(Math.abs(n[0]),Math.abs(r),1e-9),s=Math.abs(a)/o<.02?`flat`:a>0?`rising`:`falling`;return{rank:Math.round(i*100)/100,slope:s,n:n.length,from:null}}var li=(e,t,n)=>`${e.toLocaleString(`en-US`)} ${e===1?t:n}`;function ui(e,t){let n=ni.find(t=>t.name===e);if(!n)return null;let r=new Date(t);r.setHours(12,0,0,0);let i=[];for(let e=ti;e>=0;e--)(e===0||(e*5+n.name.length)%7!=2)&&i.push(e);let a=i.length,o=i.map(e=>oi(r.getTime()-e*Zr)),s=o.map(e=>ii(`${n.name}:${e}`)),c=i.map((e,t)=>a===1?1:t/(a-1)),l=e=>c[e]**.85,u=(e,t,r)=>(ri(`${n.name}:${t}:${e}`)-.5)*2*r*(e===a-1?0:1),f=(e,t,n,r,i=0)=>si(e,t,l(n))+u(n,r,i),p=e=>o.map((t,n)=>({day:t,sha7:s[n],v:e(n)})),m=n.groups.map(e=>i.map((t,n)=>Math.round(f(e.start,e.end,n,`g:${e.pkg}`,e.end*.004)))),h=i.map((e,t)=>m.reduce((e,n)=>e+n[t],0)),g=i.map((e,t)=>Math.round(si(n.files[0],n.files[1],l(t)))),_=n.types.length-1,v=n.types.map((e,t)=>i.map((n,r)=>t===_?0:Math.round(h[r]*e.share)));for(let e=0;e<a;e++)v[_][e]=h[e]-v.reduce((t,n,r)=>r===_?t:t+n[e],0);let ee=n.types.map((e,t)=>t===_?0:Math.round(g[a-1]*e.share));ee[_]=g[a-1]-ee.reduce((e,t,n)=>n===_?e:e+t,0);let y=e=>n.top.map(t=>({path:t.path,len:Math.round(si(t.start,t.end,c[e]**.8))})).sort((e,t)=>t.len-e.len||(e.path<t.path?-1:1)),b=e=>y(e)[Math.max(0,Math.ceil(.05*g[e])-1)].len,te=y(a-1),ne=i.map((e,t)=>Math.round(f(n.touches[0],n.touches[1],t,`touch`,3))),re=ne.map((e,t)=>Math.round(e*f(n.retouch[0],n.retouch[1],t,`rt`,.025))),ie=ne.map((e,t)=>Math.round(re[t]/e*100)/100),ae=i.map((e,t)=>Math.max(1,Math.round(f(n.hatches[0],n.hatches[1],t,`hatch`,.8)))),x=ae.map((e,t)=>Math.round(e/(h[t]/1e3)*10)/10),oe=i.map((e,t)=>Math.min(g[t],Math.max(0,Math.round(f(n.untested[0],n.untested[1],t,`unt`,.7))))),se=i.map((e,t)=>Math.round(f(n.claudeMd[0],n.claudeMd[1],t,`cmd`,40))),ce=i.map((e,t)=>Math.round(f(n.desc[0],n.desc[1],t,`desc`,8))),le=i.map((e,t)=>Math.round(si(n.skills[0],n.skills[1],c[t]<.5?c[t]*.6:.3+(c[t]-.5)*1.4))),S=a-1,C=(e,t,n,r,i,a=!1)=>({key:e,source:`central`,label:t,unit:n,points:p(e=>r[e]),last:r[S],reading:ci(r,a),detail:i}),w=n.offenders.map(e=>`${e.path} at ${li(e.n,`re-touch`,`re-touches`)}`).join(`, `),T=[C(`size.p95`,`p95 file length`,`lines`,i.map((e,t)=>b(t)),``),C(`retouch.rate`,`the re-touch rate`,``,ie,` ${li(re[S],`re-touch`,`re-touches`)} out of ${li(ne[S],`touch`,`touches`)} over ${ei} days. The ${n.offenders.length} most re-touched: ${w}.`),C(`hatches.perKloc`,`escape hatches per kLOC`,``,x,` ${li(ae[S],`occurrence`,`occurrences`)} over ${li(h[S],`line`,`lines`)}.`),C(`context.claudeMdChars`,`CLAUDE.md`,`chars`,se,``),C(`context.descChars`,`the always-on skill descriptions`,`chars`,ce,``),C(`context.skillCount`,`the count of skills`,``,le,``,!0),C(`untested.count`,`the count of modules no test reaches`,``,oe,` ${oe[S].toLocaleString(`en-US`)} of ${li(g[S],`module`,`modules`)} in the tree.`)],ue=i.map((e,t)=>y(t)[0]),de=(e,t)=>e.name<t.name?-1:1,fe=n.groups.map((e,t)=>({name:e.pkg,loc:m[t][S],points:p(e=>m[t][e])})),E=[...fe].sort((e,t)=>t.loc-e.loc||de(e,t)),pe=n.types.map((e,t)=>({name:e.ext,pack:e.pack,files:ee[t],loc:v[t][S],points:p(e=>v[t][e])})),me=[...pe].sort((e,t)=>t.loc-e.loc||de(e,t)),he={scope:null,preregVersion:`3`,windowReadings:Qr,minReadings:$r,days:a,series:T,context:{areas:{},areasAbsent:`No skill in this repo routes to another, so there are no areas to split the always-on weight by; the repo-wide weight above still stands.`},classics:{loc:p(e=>h[e]),files:p(e=>g[e]),deps:p(e=>Math.round(si(n.deps[0],n.deps[1],c[e]<.6?0:(c[e]-.6)/.4))),packages:[...fe].sort(de).map(e=>({pkg:e.name,rank:E.findIndex(t=>t.name===e.name),points:e.points})),types:[...pe].sort(de).map(e=>({ext:e.name,pack:e.pack,rank:me.findIndex(t=>t.name===e.name),files:e.files,points:e.points})),tape:te.map(e=>e.len),tapePaths:te.map(e=>e.path)},longest:{points:p(e=>ue[e].len),paths:ue.map(e=>e.path),path:ue[S].path,day:o[S]},own:{file:d,declared:!1,series:[]}},D=r.getTime()-24e5,ge=Math.max(a,Math.round(n.commits*.4));return{scope:null,scopes:[],tool:!0,engine:{kind:`bundled`},head:{sha:`${s[S]}${ii(`${n.name}:head`).slice(0,5)}`,ts:D},series:{preregVersion:`3`,rows:ge,days:a,lastSha:s[S],lastDay:o[S],lastTs:D,versions:[{version:`3`,rows:ge}],staleRows:0},measure:{commits:n.commits,packs:[...new Set(pe.map(e=>e.pack).filter(e=>!!e))].map(e=>({name:e,version:`2`,files:pe.reduce((t,n)=>n.pack===e?t+n.files:t,0)})),groups:n.groups.map(e=>e.pkg),engineVersion:`3`,recut:null,scope:null},readError:null,stepTimeoutMs:12e4,behind:0,narrative:null,page:null,run:null,last:null,plot:he,plotError:null,readAt:t}}var di=864e5,fi=4,pi=e=>(e*2654435761>>>0).toString(16).padStart(8,`0`).repeat(5),mi=10,hi={"todo-garden":{lineMean:[420,900],max:[1300,5200],maxPath:`src/garden/planner.ts`,retouch:[.14,.22],hatches:[1.2,2.4],md:[6500,7800],untested:[20,29]},"pocket-notes":{lineMean:[640,430],max:[1700,980],maxPath:`src/notes/sync.ts`,retouch:[.3,.16],hatches:[4,1.8],md:[11e3,7e3],untested:[30,22]},"photo-shelf":{lineMean:[420,2235],max:[1020,8397],maxPath:`lib/services/sync_backend.dart`,retouch:[.06,.07],hatches:[.3,.4],md:[3800,9e3],desc:1200,untested:[5,25],files:[38,146],loc:[13e3,8e4],weeks:35}};function gi(e){let t=new Date(e),n=Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate());return n-(new Date(n).getUTCDay()+6)%7*di}function _i(e,t){let n=hi[e];if(!n)return null;let r=gi(t),i=n.weeks??mi,a=[];for(let e=0;e<i;e++){let t=e/(i-1),o=e=>e[0]+(e[1]-e[0])*t,s=r-(i-1-e)*7*di+2*di,c=Math.round(n.loc?o(n.loc):4e4),l=Math.round(n.files?o(n.files):120);for(let t=3;t>=0;t--){let r=t===0?1:1+.06*Math.sin(e*7+t*3);a.push({sha:pi(e*fi+(3-t)),day:new Date(s-t*di/2).toISOString().slice(0,10),ts:s-t*di/2,prereg:`demo-1`,size:{value:{lineMean:o(n.lineMean)*r,max:o(n.max),maxPath:n.maxPath}},retouch:{value:{rate:o(n.retouch)*r}},hatches:{value:{a:Math.round(o(n.hatches)*(c/1e3))}},context:{value:{claudeMdChars:o(n.md),descChars:n.desc??1200}},untested:{value:Array(Math.round(o(n.untested))).fill(`x`)},classics:{value:{loc:c,files:l}}})}}return a}function vi(e,t){let r=_i(e,t);if(!r)return null;let i=fe(r,null);if(!i)return null;let a=c(i.points,{minWeeks:4,minMonthWindows:99});return{series:i,move:a,words:s(i.points,a,v(new Date(t).toISOString().slice(0,10))),lastRefresh:null,commits:n(r,null)}}function yi(e,t){let n=vi(e,t);return n?.series&&ee(n.series,n.move)||void 0}var bi=`Not in the demo — this needs your own desktop running the host.`,xi=[`session.create`,`fanout.run`,`fanout.followup`,`backlog.name`,`build.run`,`capture.run`,`assess.run`,`assess.apply`,`schedule.run`,`schedule.save`,`intent.post`,`intent.run`,`intent.requeue`,`intent.update`,`intent.waive`,`intent.retarget`,`updates.apply`],Si=(e,t)=>e.ackId?{t:`op.ack`,ackId:e.ackId,ok:t.ok,reason:t.reason,sessionId:t.sessionId,runId:t.runId,launchId:t.launchId,intentId:t.intentId,filed:t.filed}:null,Ci={...Object.fromEntries(xi.map(e=>[e,Si])),"session.input":(e,t)=>e.ackId?{t:`input.ack`,id:e.id,ackId:e.ackId,ok:t.ok,reason:t.reason,state:t.state}:null,"backlog.add":(e,t)=>e.ackId?{t:`backlog.ack`,ackId:e.ackId,ok:t.ok,itemId:t.itemId,reason:t.reason}:null,"plugin.call":(e,t)=>({t:`plugin.reply`,ackId:e.ackId,plugin:e.plugin,method:e.method,ok:t.ok,result:t.result,error:t.ok?void 0:t.reason}),"session.name":(e,t)=>({t:`session.named`,id:e.id,name:t.name,reason:t.reason}),"session.mode":(e,t)=>({t:`session.moded`,id:e.id,mode:t.mode,reason:t.ok?void 0:t.reason??`the mode did not change`}),"localrt.evict":(e,t)=>({t:`localrt.evict`,name:e.name,ok:t.ok,error:t.ok?void 0:t.reason}),"shell.kill":(e,t)=>({t:`shell.killed`,id:e.id,pid:e.pid,ok:t.ok,reason:t.reason}),"stream.open":(e,t)=>t.ok?null:{t:`stream.refused`,reqId:e.reqId,reason:t.reason??`Not in the demo — this needs your own desktop running the host.`}};function wi(e,t){let n=Ci[e.t];return n?n(e,t):null}function Ti(e){if(!(e.t in Ci))return;let t=e.ackId;return typeof t==`string`&&t?t:void 0}function Ei(e,t=bi){return wi(e,{ok:!1,reason:t})??{t:`toast`,text:t}}var Di=`Not in the demo — this builds a real app on your desktop.`,R=(e,t=200)=>({status:t,contentType:`application/json`,body:JSON.stringify(e)}),Oi=e=>(e.repos??[]).filter(e=>!!e&&typeof e==`object`),ki=new Set([`.png`,`.jpg`,`.jpeg`,`.gif`,`.webp`,`.bmp`,`.heic`,`.heif`,`.svg`,`.avif`,`.tif`,`.tiff`,`.ico`,`.jfif`,`.mp4`,`.webm`,`.mov`,`.m4v`,`.ogv`,`.mkv`]);function Ai(e){let t=()=>b(),n=()=>E();return{totals:t(),days:[],hours:[],hoursFrom:null,hourOfDay:Array.from({length:24},(e,r)=>({hour:r,...t(),cost:n()})),models:[],repos:[],conversations:0,subagents:t(),subagentLogs:0,cost:n(),subagentCost:n(),unpriced:t(),fastTurns:0,coldStarts:{count:0,tok:0},top:[],pricesAsOf:ce,firstAt:null,lastAt:null,scannedAt:e,logs:0,reread:0}}function ji(e){if(!e)return null;let t=e;try{t=decodeURIComponent(e)}catch{}return t=t.split(/[\\/]/).pop()?.trim()??``,t&&t!==`.`&&t!==`..`?t:null}var Mi=e=>/\.(png|jpe?g|gif|webp|svg|avif|bmp|mp4|webm|mov)$/i.test(e);function Ni(e,t,n){let{method:r,path:i}=n,a=n.query??{};if(i===`/api/repos`&&r===`GET`)return R({targets:e.repos??[]});let o=/^\/api\/repos\/([^/]+)\/(artifacts|inbox)(?:\/(seen))?$/.exec(i);if(o){let[,i,s,c]=o,l=decodeURIComponent(i),u=Oi(e).find(e=>e.id===l);if(!u)return R({error:`That is not one of the demo's repos.`},404);if(c&&r===`POST`)return s===`artifacts`&&(u.outboxSeenAt=t,u.outboxCount=(e.gallery?.[l]??[]).filter(e=>Number(e?.mtime)>t).length),R({ok:!0});if(!c&&r===`GET`){if(s===`artifacts`){let n=Number(a.since)||void 0,r={kind:a.kind===`image`||a.kind===`doc`?a.kind:`all`,since:n,query:a.q};return R({files:h(e.gallery?.[l]??[],r,Mi,t),truncated:!1})}return R({files:e.inbox?.[l]??[]})}if(!c&&s===`inbox`&&r===`POST`){let r=ji(n.headers?.[`x-file-name`]),i=(e.inbox??={})[l]??=[],a=r??`upload-${i.length+1}.png`,o={name:a,relPath:`.claude/inbox/${a}`,size:n.bodyBytes??0,mtime:t,ctime:t},s=i.findIndex(e=>e.name===a);return s>=0&&i.splice(s,1),i.unshift(o),R({saved:[o],skipped:[]})}}if(i===`/api/search`&&r===`GET`){let n=(a.q??``).trim().toLowerCase(),r=a.kind??``,i=a.repos?new Set(a.repos.split(`,`).map(e=>e.trim()).filter(Boolean)):null,o=Math.min(Number(a.limit||0)||300,1e3),s=Number(a.since||0)?t-Number(a.since)*1e3:0,c=[];for(let t of Oi(e))if(!(typeof t.id!=`string`||i&&!i.has(t.id)))for(let i of e.gallery?.[t.id]??[]){let e=/\.[^.]+$/.exec(i.name)?.[0].toLowerCase()??``;i.mtime<s||(!n||i.name.toLowerCase().includes(n))&&(r!==`image`||ki.has(e))&&(r===`doc`&&ki.has(e)||c.push({repoId:t.id,repoName:t.repoName??t.id,branch:t.branch??`main`,...i}))}return c.sort((e,t)=>Number(t.mtime)-Number(e.mtime)),R({hits:c.slice(0,o),truncated:c.length>o})}if(i===`/api/tokenstats`&&r===`GET`)return R(e.numbers?.ledger?Fr(t):Ai(t));if(i===`/api/tokenwindows`&&r===`GET`&&e.numbers?.ledger)return R(Rr(t,Lr(a.w)));if(i===`/api/costwindow`&&r===`GET`){let n=Number(a.from),r=Number(a.to),i=r>n&&r-n<=3024e6;return R(Gr(t,i?n:0,i?r:0,i&&!!e.numbers?.ledger))}if(i===`/api/usagelog`&&r===`GET`&&e.numbers?.ledger&&e.numbers.usage)return R(Xr(t,e.numbers.usage,Number(a.hours||0)||void 0));if(i===`/api/transcript`&&r===`GET`){let n=a.id??``;if(!n||!j(e,n))return R({error:`no such session`},404);let r=Pi(e,n,t);return Number(a.since||0)>=r.updatedAt?{status:204,contentType:`text/plain`,body:``}:R(r)}if(i===`/api/scrollback`&&r===`GET`){let n=a.id??``;if(!n||!j(e,n))return R({error:`no such session`},404);let r=e.screens?.[n]?.cols??80;return R({sessionId:n,lines:dn(e,n),cols:r,history:!1,bounded:!1,at:t})}if(i===`/api/context`&&r===`GET`){let t=e.numbers?.context?.[a.id??``];return t?Number(a.since||0)>=t.updatedAt?{status:204,contentType:`text/plain`,body:``}:R(t):R({error:`no context series`},404)}let s=/^\/api\/repos\/([^/]+)\/repohealth$/.exec(i);if(s&&r===`GET`&&e.numbers?.repoHealth){let n=decodeURIComponent(s[1]),r=Oi(e).find(e=>e.id===n),i=typeof r?.repoName==`string`?ui(r.repoName,t):null;return i?R(i):R({error:`no repo-health series for that repo`},404)}let c=/^\/api\/repos\/([^/]+)\/healthindex$/.exec(i);if(c&&r===`GET`&&e.numbers?.repoHealth){let n=decodeURIComponent(c[1]),r=Oi(e).find(e=>e.id===n),i=typeof r?.repoName==`string`?vi(r.repoName,t):null;return i?R(i):R({error:`no health index for that repo`},404)}return i===`/api/external`&&r===`GET`?R({sessions:[]}):i===`/api/theme`&&r===`GET`?R({overlay:{}}):i===`/api/peerjobs`&&r===`GET`?R({ok:!0,jobs:[]}):i===`/api/apps/readiness`&&r===`GET`?R({at:t,apps:[]}):i===`/api/storage/transport`&&r===`GET`?R(e.storage?.transport??{at:t,repos:[],total:{count:0,bytes:0},partial:!1}):i===`/api/storage/host`&&r===`GET`?R(e.storage?.host??{at:t,dir:`demo`,rows:[],total:0,partial:!1}):i===`/api/storage/host/clear`&&r===`POST`?R({deleted:0,bytes:0,failed:0,refused:`The demo's desktop keeps no files, so there is nothing to clear.`}):i===`/api/askrules`&&r===`GET`?R({ok:!0,doc:{rules:[]},suggested:S,honouredBy:C,rev:`demo`}):i===`/api/askrules`&&r===`PUT`?R({ok:!1,error:`The demo's desktop launches no claude, so it keeps no ask rules — nothing was changed.`},400):i===`/api/onboard/plan`&&r===`GET`?R({ok:!1,error:Di,path:a.path===`android`?`android`:`web`,name:a.name??``,folder:``,steps:[],consent:[],suggestedPrompt:``}):i===`/api/onboard`&&r===`GET`?R({ok:!0,job:null}):(i===`/api/onboard`||i===`/api/onboard/resume`)&&r===`POST`?R({ok:!1,error:Di},400):{status:404,contentType:`text/plain`,body:`${bi} (${r} ${i})`}}function Pi(e,t,n){let r=(e.history?.[t]??[]).filter(e=>e.kind===`prompt`),i=dn(e,t);return{sessionId:t,source:`history`,turns:r.map((n,a)=>{let o=[];if(n.output)o=[{kind:`text`,text:n.output}];else if(a===r.length-1){let e=i.lastIndexOf(`❯ ${n.text}`);if(e>=0){let t=[];for(let n of i.slice(e+1)){if(/^❯ (?!\d+\. )/.test(n))break;t.push(n)}let n=t.join(`
16
+ `).trim();n&&(o=[{kind:`screen`,text:n}])}}return{id:n.id,n:a+1,prompt:n.text,promptLabel:n.text.replace(/\s+/g,` `).slice(0,80),sentAt:n.sentAt,endedAt:n.outputAt??n.sentAt,blocks:o,toolCount:0,files:[],sidechains:0,...e.turnFacts?.[t]?.[n.id]}}),truncated:!1,bytes:0,updatedAt:r.length>0&&!r[r.length-1].output||!r.length?n:Math.max(...r.map(e=>e.outputAt??e.sentAt)),detail:`lite`}}var Fi=e=>({ptys:null,sessions:tn(e).length});function Ii(e,t){if(!e||typeof e!=`object`)return null;let n=e;return n.v!==1||n.protocol!==t.protocol||n.scenario!==t.scenario||n.stamp!==t.stamp||typeof n.startedAt!=`number`||typeof n.scriptPos!=`number`||!n.state||typeof n.state.bootId!=`string`||!n.state.model||typeof n.state.model!=`object`||!n.acks||typeof n.acks!=`object`||!Array.isArray(n.faults)||!Array.isArray(n.faultHits)?null:n}function Li(e){if(e.faults&&e.faults.length>0)throw Error(`demo scenario "${e.meta.id}" carries ${e.faults.length} fault rule(s); faults are for tests only`)}var Ri=e=>JSON.parse(JSON.stringify(e));function zi(e,t){return Vi(e,t,{v:1,protocol:2,scenario:e.meta.id,stamp:e.meta.stamp,startedAt:t.now(),scriptPos:0,state:Ri(e.state),acks:{},faults:Ri(e.faults??[]),faultHits:(e.faults??[]).map(()=>0)})}function Bi(e,t,n){let r=Ii(n,{scenario:e.meta.id,stamp:e.meta.stamp,protocol:2});return r?Vi(e,t,Ri(r)):zi(e,t)}function Vi(e,t,n){if(e.meta.protocol!==2)throw Error(`demo scenario "${e.meta.id}" was recorded at protocol ${e.meta.protocol}, this build speaks 2`);let r=pt(n.state);r&&!r.numbers?.usage&&((r.numbers??={}).usage=nr(n.startedAt));let i=new Set,a=new Map,o=new Set,s=!1,c=()=>{for(let e of o)e()},l=()=>n.faults.some(e=>e.kind===`offline`),u=()=>n.faults.some(e=>e.kind===`offline`&&!e.http);function d(e,t,r){if(t.t&&t.t!==r)return!1;let i=n.faultHits[e]++,a=t.from??0;return i>=a&&(t.times==null||i<a+t.times)}function f(e,t){let r=1,i;n.faults.forEach((e,n)=>{e.kind===`drop`&&d(n,e.match,t.t)?r=0:e.kind===`duplicate`&&d(n,e.match,t.t)?r&&=2:e.kind===`latency`&&d(n,e.match,t.t)&&(i=(i??0)+e.ms)});let a=i==null?{kind:`frame`,msg:t}:{kind:`frame`,msg:t,afterMs:i};for(let t=0;t<r;t++)e(a)}let p=()=>pt(n.state).clockShift??0,m=()=>t.now()+p(),h={get m(){return pt(n.state)},now:m,get bootId(){return n.state.bootId},broadcast:e=>{for(let t of i)f(t,e)},toSession:(e,t)=>{for(let n of i)a.get(n)?.has(e)&&f(n,t)}};function g(){return{t:`welcome`,protocol:2+n.faults.reduce((e,t)=>t.kind===`protocol`?e+t.delta:e,0),bootId:n.state.bootId,tailscaleIp:null,tailscaleBin:null,tailscaleDns:null,httpsUrl:null,lanIps:[],port:0,root:`demo`,tmux:!1,clientKind:`loopback`,auth:{enabled:!1,gateTailscale:!1,canManage:!1},hostName:`Demo`}}function _(e,t){if(t.t===`hello`){f(e,g());for(let t of rr(h.m))f(e,t);return}let r=ir[t.t];if(!r)return;let i=Ti(t),o=i?n.acks[i]:void 0;if(o){f(e,o);return}let s;if(r.tier===`A`){let i={msg:t,now:m(),state:n.state,desk:h,reply:t=>f(e,t),broadcast:h.broadcast,attach:t=>{a.get(e)?.add(t)},detach:t=>{a.get(e)?.delete(t)}};s=wi(t,r.run(i)??{ok:!0})}else if(s=Ei(t,r.tier===`B`?r.reason??`Not in the demo — this needs your own desktop running the host.`:bi),s.t===`toast`){f(e,s);return}s&&(s=Ri(s),i&&(n.acks[i]=s),f(e,s)),xn(h),Rn(h),c()}function v(e,t){n.faults.forEach((r,o)=>{if(r.kind===`disconnect`&&d(o,r.match,t.t))r.health===!1&&(s=!0),r.stayDown&&(n.faults.push({kind:`offline`,http:!0}),n.faultHits.push(0)),i.delete(e),a.delete(e),e({kind:`close`,code:1006,reason:`demo fault: disconnect`});else if(r.kind===`limit`&&d(o,r.match,t.t)){let e=m(),t=e+r.resetsInMs;fn(h,r.sessionId,{limit:{blocked:!0,blockedSince:e,resetAt:t,nextAttemptAt:t,attempts:0,weekly:!1,autoContinue:!0,autoContinueOverride:null,queuePos:null,resuming:!1,first:!1}}),bn(h,r.sessionId,[{kind:`session`,patch:{},unset:[`limit`],afterMs:r.resetsInMs}]),c()}else r.kind===`prompt`&&d(o,r.match,t.t)&&(jn(h,r.sessionId),c())})}return{scenario:e.meta.id,connect(e){return l()?(e({kind:`close`,code:1006,reason:`demo fault: offline`}),{receive(){},close(){}}):(s=!1,i.add(e),a.set(e,new Set),{receive(t){i.has(e)&&(_(e,t),v(e,t))},close(){i.delete(e),a.delete(e)}})},request(e){if(u())return{status:503,contentType:`text/plain`,body:`offline`};if(e.path===`/api/health`)return s?{status:503,contentType:`text/plain`,body:`unreachable`}:{status:200,contentType:`application/json`,body:JSON.stringify({ok:!0,protocol:2,root:`demo`,...Fi(h.m)})};let t=Ni(h.m,m(),e);return e.method!==`GET`&&t.status<300&&c(),t},advance(){let t=m()-n.startedAt,r=!1;for(;n.scriptPos<e.script.length&&e.script[n.scriptPos].at<=t;)Tn(h,e.script[n.scriptPos++].event),r=!0;xn(h)&&(r=!0),r&&(Rn(h),c())},nextAt(){let t=n.scriptPos<e.script.length?n.startedAt+e.script[n.scriptPos].at:null,r=wn(h.m),i=t==null?r:r==null?t:Math.min(t,r);return i==null?null:i-p()},clockShift:p,snapshot:()=>Ri(n),onChange(e){return o.add(e),()=>{o.delete(e)}},faults:{set(e){if(n.faults=Ri(e),n.faultHits=e.map(()=>0),l())for(let e of[...i])i.delete(e),a.delete(e),e({kind:`close`,code:1006,reason:`demo fault: offline`});c()},fired:()=>n.faults.map((e,t)=>{let r=`match`in e?e.match:{},i=Math.max(0,n.faultHits[t]-(r.from??0));return{rule:t,count:r.times==null?i:Math.min(i,r.times)}})}}}var z=6e4,B=60*z,V=24*B,H=`~/dev/todo-garden`,U=`~/dev/pocket-notes`,W=`~/dev/trail-log`,Hi=new TextEncoder,Ui=(e,t=80,n=24)=>({data:e,seq:Hi.encode(e).length,cols:t,rows:n}),Wi=`\x1B[1m`,Gi=`\x1B[2m`,Ki=`\x1B[32m`,qi=`\x1B[0m`,G=e=>`● ${e}\r\n`,K=(e,t,n)=>`${Wi}● ${e}${qi}(${t})\r\n${Gi} ⎿ ${n}${qi}\r\n`;function Ji(e={}){let t=t=>e.outbox?.[t]??0,n=t=>e.healthIndex?{healthIndex:yi(t,e.healthIndex)}:{};return[{id:`r1`,repoName:`todo-garden`,branch:`main`,isPrimary:!0,worktreePath:H,outboxCount:t(`r1`),changedCount:2,hasRepoHealth:!0,...n(`todo-garden`)},{id:`r2`,repoName:`pocket-notes`,branch:`main`,isPrimary:!0,worktreePath:U,outboxCount:t(`r2`),changedCount:0,hasRepoHealth:!0,...n(`pocket-notes`)},{id:`r3`,repoName:`trail-log`,branch:`main`,isPrimary:!0,worktreePath:W,outboxCount:t(`r3`),changedCount:1,hasRepoHealth:!0}]}var Yi=2e5,Xi=1e6,Zi=282e3,Qi=38e3,$i=[56e3,71e3,88e3,104e3,126e3,148e3,167e3,189e3,208e3,231e3,249e3,264e3,276e3,Zi];function ea(e){let t=`2.1.0`,n={};return de.forEach((r,i)=>{let a=te(r.id,t),o=12+i%4;a.window=Array.from({length:o},(t,n)=>({at:e-(o-n)*17*z-i*z,ok:!0})),a.totalGood=o+40+i*3,a.lastGoodAt=e-(3+i*2)*z,n[r.id]=a}),{version:t,versionSeenAt:e-5*z,versionChangedAt:e-4*V,signals:n}}function ta(e){let t=t=>e-t,n=ea(e),r=t(95*z),i=$i,a=i.map((e,t)=>({t:r+Math.round(t*73*z/(i.length-1)),tok:e})),o=t(178*z),s=[2e4,34e3,51e3,72e3,98e3,127e3,148e3,161e3],c=[31e3,34e3,36e3,Qi],l=[...s.map((e,t)=>({t:o+t*5*z,tok:e})),...c.map((e,t)=>({t:o+(s.length+1+t)*5*z,tok:e}))],u=o+(s.length-1)*5*z+3*z;return{ledger:!0,repoHealth:!0,usage:{ok:!0,sessionPct:42,weeklyPct:61,checkedAt:t(2*z),sessionResetAt:e+2*B+10*z,weeklyResetAt:e+3*V+5*B},budget:{budget:{enabled:!0,sessionMax:80,weeklyMax:90,leftoverMax:20},verdict:{blocked:!1,state:`ok`,which:`weekly`,pct:61,max:90}},meter:{calls:14,inTok:41200,outTok:3100,costUsd:.07,today:{calls:6,inTok:17800,outTok:1300,costUsd:.03},byModel:[{model:`haiku`,calls:11,inTok:30400,outTok:2300,costUsd:.04},{model:`sonnet`,calls:3,inTok:10800,outTok:800,costUsd:.03}],lastAt:t(9*z)},clihealth:{health:n,rollup:x(n,e)},context:{"demo-g1":{sessionId:`demo-g1`,claudeSessionId:`c-garden-1`,updatedAt:e,samples:a,events:[],windowTok:Xi,windowFrom:`model`,model:`opus`,autoCompactTok:null,truncated:!1,turns:a.length},"demo-n1":{sessionId:`demo-n1`,claudeSessionId:`c-notes-1`,updatedAt:e,samples:l,events:[{t:u,kind:`compact`,trigger:`auto`,preTok:161e3,postTok:31e3}],windowTok:Yi,windowFrom:`model`,model:`sonnet`,autoCompactTok:161e3,truncated:!1,turns:l.length}}}}function na(e,t){let n=t=>e-t,r=`demo-t0`,i=`trail-log · main`,a=`The session window was used up; waiting for it to reset.`,o=[{id:`d3`,ts:n(1*V+5*z),sessionId:r,sessionTitle:i,source:`limit`,phase:`resumed`,question:a,options:[],outcome:`limit`,choice:null,answer:`continue`,rationale:`The window reset; the session was continued where it stopped.`},{id:`d2`,ts:n(1*V+8*z),sessionId:r,sessionTitle:i,source:`limit`,phase:`attempt`,question:a,options:[],outcome:`limit`,choice:null,rationale:`Reset time reached; trying to continue.`},{id:`d1`,ts:n(1*V+16*z),sessionId:r,sessionTitle:i,source:`limit`,phase:`blocked`,question:a,options:[],outcome:`limit`,choice:null,rationale:`Parked until the window resets; nothing was lost.`}],s=[{id:`s4`,ts:n(95*z),sessionId:`demo-g1`,sessionTitle:`todo-garden · main`,repoDir:H,actor:`user`,source:`compose`,kind:`prompt`,text:`make overdue tasks show a red edge`,result:`ok`},{id:`s3`,ts:n(3*B-2*z),sessionId:`demo-n1`,sessionTitle:`pocket-notes · main`,repoDir:U,actor:`user`,source:`compose`,kind:`prompt`,text:`the markdown export drops the title`,result:`unconfirmed`,detail:`The echo window closed first; the conversation log later showed it ran.`},{id:`s2`,ts:n(2*V-60*z),sessionId:`demo-b4`,sessionTitle:`todo-garden · main`,repoDir:H,actor:`auto`,source:`backlog`,kind:`prompt`,text:`Rename 'Tasks' to 'Beds' in the settings screen`,result:`ok`,detail:`Backlog item, opened in a new session`},{id:`s1`,ts:n(1*V+8*z),sessionId:r,sessionTitle:i,repoDir:W,actor:`auto`,source:`limit`,kind:`command`,text:`continue`,result:`ok`,detail:`Window reset, session continued`}],c=(e,t,r,i)=>({id:e,cwd:t,payload:{kind:`prompt`,steps:[r]},target:{kind:`repo`,fresh:!0},trigger:{kind:`now`},state:`done`,createdAt:n(1*V),...i}),l=[c(`b4`,H,`Rename 'Tasks' to 'Beds' in the settings screen`,{label:`Rename in settings`,createdAt:n(2*V),startedAt:n(2*V-B),settledAt:n(2*V-90*z),result:{at:n(2*V-90*z),ok:!0,detail:`ran in a new todo-garden session`}}),c(`i-dep`,H,`Check for outdated dependencies and list what is safe to update`,{label:`Dependency check`,createdAt:n(3*V+2*B),startedAt:n(3*V+2*B-z),settledAt:n(3*V+2*B-6*z),result:{at:n(3*V+2*B-6*z),ok:!0,detail:`3 packages are safe to update; listed in the session`}})],u=[{id:`l1`,cwd:W,repoName:`trail-log`,prompt:`Draw the route in the attached map on the hike page`,needs:[`.claude/inbox/trail-map.png`],createdAt:n(8*z),deadlineAt:e+6*B-8*z,state:`waiting`,missing:[`.claude/inbox/trail-map.png`],title:`Trail map`},{id:`l2`,cwd:U,repoName:`pocket-notes`,prompt:`Import the sample notes and check the markdown export on them`,needs:[`.claude/inbox/sample-notes.zip`],createdAt:n(25*z),deadlineAt:e+6*B-25*z,state:`waiting`,missing:[`.claude/inbox/sample-notes.zip`],title:`Sample import`}],d=(e,t,n,r)=>({id:e,repoId:`r1`,repoDir:H,repoName:`todo-garden`,name:t.slice(t.lastIndexOf(`/`)+1),relPath:t,size:n,mtime:r,ts:r+2e3,source:`outbox`});return{notifications:[{id:`n1`,ts:n(18*z),kind:`image`,title:`New screenshot in todo-garden`,body:`todo-garden-sorted.png`,sessionId:`demo-g1`,image:{repoId:`r1`,relPath:t.sorted}},{id:`n2`,ts:n(5*B),kind:`artifact`,title:`todo-garden-before.png is ready`,body:`A file landed in the outbox of todo-garden.`,file:{repoId:`r1`,relPath:t.before,name:`todo-garden-before.png`,size:31174,mtime:n(5*B)}},{id:`n3`,ts:n(20*B),kind:`backlog`,title:`Backlog groomed`,body:`3 items in todo-garden were ordered and given names.`,backlog:{cwd:H,ids:[`b1`,`b2`,`b3`]}},{id:`n4`,ts:n(3*V+2*B-6*z),kind:`autofire`,title:`Dependency check ran in todo-garden`,body:`3 packages are safe to update.`}],decisions:o,sent:s,intents:l,launches:u,deliveries:[{id:`dl1`,sessionId:`demo-n1`,sessionTitle:`pocket-notes · main`,cwd:U,repoName:`pocket-notes`,text:`the markdown export drops the title`,head:`the markdown export drops the title`,kind:`prompt`,source:`compose`,reported:`unconfirmed`,startedAt:n(3*B-2*z),verdict:`landed`,alive:!0,asks:1,nextAskAt:n(3*B-4*z),deadlineAt:n(3*B-2*z)+20*z,resolvedAt:n(3*B-3*z),reason:`The conversation log shows the prompt ran, so nothing needs sending again.`}],pulls:[d(`pu1`,t.sorted,31628,n(4*B)),d(`pu2`,t.before,31174,n(5*B))],install:{entries:[{key:`dev-pixel:pu-apk3:1`,deviceId:`dev-pixel`,deviceName:`Pixel 8`,deviceModel:`Pixel 8`,reportedAt:n(26*B)+4e3,pullId:`pu-apk3`,pkg:`app.todogarden.debug`,label:`todo-garden`,version:`0.4.1`,code:42,file:`todo-garden-debug.apk`,repo:`todo-garden`,outcome:`installed`,auto:!0,at:n(26*B)},{key:`dev-pixel:pu-apk2:1`,deviceId:`dev-pixel`,deviceName:`Pixel 8`,deviceModel:`Pixel 8`,reportedAt:n(3*V)+4e3,pullId:`pu-apk2`,pkg:`app.todogarden.debug`,label:`todo-garden`,version:`0.4.0`,code:41,file:`todo-garden-debug.apk`,repo:`todo-garden`,outcome:`failed`,error:`Not enough storage on the device`,auto:!1,at:n(3*V)},{key:`dev-pixel:pu-apk1:1`,deviceId:`dev-pixel`,deviceName:`Pixel 8`,deviceModel:`Pixel 8`,reportedAt:n(3*V-10*z)+4e3,pullId:`pu-apk1`,pkg:`app.todogarden.debug`,label:`todo-garden`,version:`0.4.0`,code:41,file:`todo-garden-debug.apk`,repo:`todo-garden`,outcome:`installed`,auto:!1,at:n(3*V-10*z)}],devices:[{id:`dev-pixel`,name:`Pixel 8`,model:`Pixel 8`,lastAt:n(26*B),installs:2,failures:1}],total:3},inbox:{r1:[{name:`swipe-sketch.png`,relPath:t.sketch,size:t.sketchSize,mtime:n(2*B),ctime:n(2*B)}]}}}function ra(e){let t={kind:`window`,window:`weekly`,edge:`before`,offsetMin:-180,minPctLeft:20};return[{id:`sch-week`,name:`Spend what is left of the week`,enabled:!0,createdAt:e-4*V,graceMin:120,nextAt:ue(t,e,ta(e).usage??void 0),rule:t,action:{kind:`backlog`,repoDir:H,text:`Work through the queued backlog items while this week's allowance is still there`,label:`Use the week`,autoFire:!0}}]}var ia=Zi,aa=56e3,oa=128e3,sa=151e3,ca=6e4,q=60*ca,la=24*q,J=`~/dev/todo-garden`,ua=`~/dev/pocket-notes`,da=`~/dev/trail-log`,fa=`.claude/outbox/todo-garden-sorted.png`,pa=`.claude/outbox/todo-garden-ios.png`,ma=`.claude/outbox/todo-garden-android.png`,ha=`.claude/outbox/todo-garden-android-fixed.png`,ga=`.claude/outbox/todo-garden-debug.apk`,_a=8812544,va=`make + Add bigger, check iOS sim and Android emulator`,ya=`look like`,ba=`.claude/outbox/todo-garden-before.png`,xa=`.claude/inbox/swipe-sketch.png`,Sa=`.claude/outbox/trail-log-ridge-loop.png`,Ca={[fa]:31628,[ba]:31174,[xa]:2169,[Sa]:4174,[pa]:32068,[ma]:28428,[ha]:31187},wa=`claude-opus-5-5`,Ta=e=>e.input+e.output+e.cacheRead+e.cacheWrite;function Ea(e,t,n,r=[]){let i=(e,t,n)=>{let r=se({...e,cacheWrite1h:n?e.cacheWrite:0},t);if(!r)throw Error(`${t} has no published rate`);return r.total},a=i(e,wa,!0),o={costUsd:a,cumCostUsd:n.main+a,ctxTok:t,tokens:e,models:[{id:wa,tok:Ta(e),costUsd:a}],cumAgentCostUsd:n.agents};if(!r.length)return o;let s=new Map,c=new Map,l=0;for(let e of r){let t=i(e.bag,e.model,!1);l+=t;let n=s.get(e.model)??s.set(e.model,{tok:0,costUsd:0}).get(e.model);n.tok+=Ta(e.bag),n.costUsd+=t,c.set(e.type,(c.get(e.type)??0)+1)}return{...o,agentCostUsd:l,cumAgentCostUsd:n.agents+l,agentModels:[...s.entries()].map(([e,t])=>({id:e,...t})),agentTypes:[...c.entries()].map(([e,t])=>({type:e,n:t}))}}var Da=e=>({main:e.cumCostUsd??0,agents:e.cumAgentCostUsd??0}),Oa=e=>Math.round((1-e/Xi)*100),ka=new TextEncoder,Aa=(e,t=80,n=24)=>({data:e,seq:ka.encode(e).length,cols:t,rows:n}),ja=`\x1B[1m`,Ma=`\x1B[2m`,Na=`\x1B[32m`,Pa=`\x1B[0m`,Y=e=>`● ${e}\r\n`,X=(e,t,n)=>`${ja}● ${e}${Pa}(${t})\r\n${Ma} ⎿ ${n}${Pa}\r\n`;function Fa(e){let t=new Date(e),n=(8-t.getUTCDay())%7||7;return Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate()+n,7,0,0)}function Ia(e){let t=t=>e-t,n=[{kind:`output`,text:`${Ma}You chose: 1. Yes, sort by due date${Pa}\r\n`,afterMs:300},{kind:`output`,text:Y(`Sorting by due date, overdue tasks first.`),afterMs:500},{kind:`output`,text:X(`Update`,`src/store/tasks.ts`,`Added 12 lines, removed 2 lines`),afterMs:700},{kind:`output`,text:X(`Bash`,`npm test -- tasks`,`${Na}PASS${Pa} src/store/tasks.test.ts (7 tests)`),afterMs:900},{kind:`output`,text:X(`Bash`,`npx playwright screenshot`,`saved ${fa}`),afterMs:900},{kind:`output`,text:Y(`Done. Tasks now sort by due date, overdue ones on top (src/store/tasks.ts). Screenshot: ${fa}`),afterMs:500},{kind:`session`,patch:{contextLeft:66},afterMs:100}],r=[{kind:`output`,text:`${Ma}You chose: 2. No, keep creation order${Pa}\r\n`,afterMs:300},{kind:`output`,text:Y(`Understood, the order stays as created. No changes made.`),afterMs:600}],i=[{kind:`output`,text:Y(`I'll look at how the task list is rendered first.`),afterMs:500},{kind:`output`,text:X(`Read`,`src/components/TaskList.tsx`,`Read 84 lines`),afterMs:700},{kind:`output`,text:X(`Read`,`src/store/tasks.ts`,`Read 61 lines`),afterMs:700},{kind:`output`,text:`\r\n${ja}Should the task list be sorted by due date?${Pa}\r\n${Na}❯ 1. Yes, sort by due date${Pa}\r\n 2. No, keep creation order\r\n`,afterMs:600},{kind:`prompt`,afterMs:0,prompt:{kind:`select`,question:`Should the task list be sorted by due date?`,options:[{index:1,label:`Yes, sort by due date`},{index:2,label:`No, keep creation order`}]},answers:{1:n,2:r}}],a=`demo-g1`,o=(...e)=>{let t=[...$i,...e];return{pts:t,marks:[],peak:Math.max(...t),windowTok:Xi,windowFrom:`model`,autoCompactTok:null,baseTok:$i[0],turns:1+e.length,spentTok:t.reduce((e,t)=>e+t,0)}},s=(...e)=>({pts:[aa,...e],marks:[],peak:Math.max(aa,...e),windowTok:Xi,windowFrom:`model`,autoCompactTok:null,baseTok:aa,turns:e.length,spentTok:e.reduce((e,t)=>e+t,aa)}),c=(e,...t)=>({kind:`session`,patch:{contextLeft:Oa(e),contextSpark:s(...t,e)}}),l=Ea({input:3100,output:41e3,cacheRead:98e5,cacheWrite:29e4},ia,{main:0,agents:0},[{type:`Explore`,model:wa,bag:{input:1200,output:64e3,cacheRead:88e6,cacheWrite:105e4}},{type:`Explore`,model:wa,bag:{input:900,output:51e3,cacheRead:76e6,cacheWrite:82e4}}]),u=Ea({input:1400,output:33e3,cacheRead:62e5,cacheWrite:24e4},oa,{main:0,agents:0}),d=Ea({input:700,output:46e3,cacheRead:14e6,cacheWrite:6e4},sa,Da(u),[{type:`Explore`,model:wa,bag:{input:800,output:45e3,cacheRead:48e6,cacheWrite:5e5}},{type:`code-reviewer`,model:`claude-fable-5-1`,bag:{input:300,output:7e3,cacheRead:32e5,cacheWrite:14e4}},{type:`Explore`,model:`claude-sonnet-5-5`,bag:{input:200,output:6e3,cacheRead:22e5,cacheWrite:7e4}}]),f=[{kind:`output`,text:Y(`I'll make + Add 44px, then build and check it on both platforms.`),afterMs:150},{kind:`output`,text:X(`Update`,`src/components/QuickAdd.tsx`,`Added 4 lines, removed 2 lines`),afterMs:100},{...c(74e3),afterMs:0},{kind:`output`,text:X(`Bash`,`npm run build && npx cap sync`,`Built the web bundle · synced ios and android`),afterMs:100},{...c(88e3,74e3),afterMs:0},{kind:`output`,text:X(`Bash`,`xcrun simctl io booted screenshot ${pa}`,`Wrote screenshot to: ${pa}`)+X(`Bash`,`adb exec-out screencap -p > ${ma}`,`(No output)`),afterMs:1200},{kind:`output`,text:X(`Read`,pa,`Read image (31KB)`)+X(`Read`,ma,`Read image (28KB)`),afterMs:150},{...c(104e3,74e3,88e3),afterMs:0},{kind:`artifact`,repoId:`r1`,relPath:pa,size:Ca[pa],afterMs:300},{kind:`artifact`,repoId:`r1`,relPath:ma,size:Ca[ma],afterMs:150},{kind:`output`,text:Y(`Done. + Add is 44px on iOS and Android (src/components/QuickAdd.tsx). Screenshots: ${pa}, ${ma}`),afterMs:150},{kind:`facts`,facts:u,afterMs:100},{...c(oa,74e3,88e3,104e3),afterMs:0}],p=[{kind:`output`,text:Y(`I see your circle in ②: on Android the keyboard covers the bar, because the window does not resize for it. ① on iOS keeps it above.`),afterMs:150},{kind:`output`,text:X(`Update`,`android/app/src/main/AndroidManifest.xml`,`Added 1 line, removed 1 line`)+X(`Update`,`src/components/QuickAdd.tsx`,`Added 3 lines`),afterMs:150},{...c(132e3,oa),afterMs:0},{kind:`output`,text:Y(`Three agents look for other inputs the keyboard can cover while I check both devices again.`)+X(`Agent`,`Explore: text inputs in src/screens`,`Done · 2 sit low on the screen, both scroll`)+X(`Agent`,`Explore: windowSoftInputMode across activities`,`Done · 1 activity`)+X(`Agent`,`code-reviewer: the QuickAdd change`,`Done · no findings`)+X(`Bash`,`xcrun simctl io booted screenshot ${pa}`,`Wrote screenshot to: ${pa}`)+X(`Bash`,`adb exec-out screencap -p > ${ha}`,`(No output)`)+X(`Read`,ha,`Read image (30KB)`),afterMs:150},{kind:`artifact`,repoId:`r1`,relPath:ha,size:Ca[ha],afterMs:150},{kind:`output`,text:Y(`Fixed on both: the bar now sits on the keyboard on Android too, + Add whole. After: ${ha}`),afterMs:150},{...c(146e3,oa,132e3),afterMs:0},{kind:`output`,text:X(`Bash`,`cd android && ./gradlew assembleDebug`,`${Na}BUILD SUCCESSFUL${Pa} in 41s`),afterMs:1600},{kind:`deliverable`,repoId:`r1`,relPath:ga,size:_a,afterMs:900},{kind:`output`,text:Y(`Built the debug APK into the outbox: ${ga} — install it on your phone to try it for real.`),afterMs:150},{kind:`facts`,facts:d,afterMs:2e3},{...c(sa,oa,132e3),afterMs:0}],m=`${O(`~/dev/todo-garden`)}> make overdue tasks show a red edge\r\n`+Y(`Done. Overdue tasks get a red left edge.`)+`\r
17
+ `,h=`${O(`~/dev/pocket-notes`)}> the markdown export drops the title\r\n`+Y(`Found it: the exporter skips the first heading.`)+X(`Update`,`src/export/markdown.ts`,`Added 3 lines, removed 1 line`)+X(`Bash`,`npm test -- export`,`${Na}PASS${Pa} src/export/markdown.test.ts (9 tests)`)+Y(`Fixed. The title is now the first line of the exported file.`)+`\r
18
+ `,g={repos:[{id:`r1`,repoName:`todo-garden`,branch:`main`,isPrimary:!0,worktreePath:J,outboxCount:2,changedCount:2,hasRepoHealth:!0},{id:`r2`,repoName:`pocket-notes`,branch:`main`,isPrimary:!0,worktreePath:ua,outboxCount:0,changedCount:0,hasRepoHealth:!0},{id:`r3`,repoName:`trail-log`,branch:`main`,isPrimary:!0,worktreePath:da,outboxCount:1,changedCount:1,hasRepoHealth:!0}],sessions:[{id:a,cwd:J,title:`todo-garden · main`,tabTitle:`Red edge for overdue`,remoteControl:!0,running:!0,idle:!0,idleSince:t(18*ca),lastTurnAt:t(22*ca),createdAt:t(100*ca),claudeSessionId:`c-garden-1`,contextLeft:Oa(ia),contextSpark:o(),starred:!1,firstPrompt:`make overdue tasks show a red edge`,lastPrompt:`make overdue tasks show a red edge`},{id:`demo-n1`,cwd:ua,title:`pocket-notes · main`,tabTitle:`Markdown export title`,remoteControl:!0,running:!0,idle:!0,idleSince:t(2*q),createdAt:t(3*q),claudeSessionId:`c-notes-1`,contextLeft:81,starred:!1,firstPrompt:`the markdown export drops the title`,lastPrompt:`the markdown export drops the title`}],screens:{"demo-g1":Aa(m),"demo-n1":Aa(h)},history:{"demo-g1":[{id:`h-1`,kind:`prompt`,text:`make overdue tasks show a red edge`,sentAt:t(95*ca),outputAt:t(22*ca),output:`Done. An overdue task now has a red left edge and a bold due date. I changed src/components/TaskRow.tsx and added a test; all 4 pass.`}],"demo-n1":[{id:`h-2`,kind:`prompt`,text:`the markdown export drops the title`,sentAt:t(3*q-2*ca),outputAt:t(102e5),output:`Fixed. The exporter skipped the first heading; the title is now the first line of the file. 9 tests pass.`}]},turnFacts:{[a]:{"h-1":l}},recent:[{cwd:J,title:`todo-garden`,lastActive:t(18*ca),claudeSessionId:`c-garden-1`,launch:{}},{cwd:ua,title:`pocket-notes`,lastActive:t(2*q),claudeSessionId:`c-notes-1`,launch:{}},{cwd:da,title:`trail-log`,lastActive:t(1*la),claudeSessionId:`c-trail-1`,launch:{}},...Pr(e).map(({convo:e,title:n})=>({cwd:e.repo,title:n,lastActive:e.lastAt??t(la),claudeSessionId:e.id,launch:{}}))],closed:[{id:`demo-t0`,cwd:da,title:`trail-log · main`,closedAt:t(1*la),closedBy:`you`,claudeSessionId:`c-trail-1`,openedAt:t(888e5),lastActiveAt:t(1*la),turns:3,tabTitle:`GPX import`,firstPrompt:`import a GPX file and list the hikes by distance`,lastPrompt:`show the total distance on the list`}],backlog:{auto:!1,items:[{id:`b1`,text:`Add a due-date picker to the new-task sheet`,status:`queued`,repoDir:J,createdAt:t(1*la),order:1,label:`Due-date picker`},{id:`b2`,text:`Group tasks by day in the list`,status:`queued`,repoDir:J,createdAt:t(1*la),order:2,label:`Group by day`},{id:`b3`,text:`Make the empty state friendlier`,status:`queued`,repoDir:J,createdAt:t(20*q),order:3,label:`Empty state`},{id:`b4`,text:`Rename 'Tasks' to 'Beds' in the settings screen`,status:`done`,repoDir:J,createdAt:t(2*la),order:0,label:`Rename in settings`,startedAt:t(2*la-q),finishedAt:t(2*la-90*ca)},{id:`b5`,text:`Sync notes in the background every 15 minutes`,status:`queued`,repoDir:ua,createdAt:t(5*q),order:1,label:`Background sync`}]},schedules:[{id:`sch1`,name:`Weekly dependency check`,enabled:!0,createdAt:t(6*la),graceMin:120,nextAt:Fa(e),rule:{kind:`weekly`,days:[1],hour:9,minute:0,tz:`Europe/Berlin`},action:{kind:`backlog`,repoDir:J,text:`Check for outdated dependencies and list what is safe to update`,label:`Dependency check`,autoFire:!0}},...ra(e)],gallery:{r1:[{name:`todo-garden-sorted.png`,relPath:fa,size:Ca[fa],mtime:t(4*q),ctime:t(4*q)},{name:`todo-garden-before.png`,relPath:ba,size:Ca[ba],mtime:t(5*q),ctime:t(5*q)}],r3:[{name:`trail-log-ridge-loop.png`,relPath:Sa,size:Ca[Sa],mtime:t(882e5),ctime:t(882e5)}]},...na(e,{sorted:fa,before:ba,sketch:xa,sketchSize:Ca[xa]}),numbers:ta(e),replies:[{match:va,cwd:J,steps:f},{match:`sort`,cwd:J,steps:i},{match:ya,cwd:J,steps:p},{steps:[{kind:`output`,text:Y(`I'll start by looking at how the project is laid out.`),afterMs:500},{kind:`output`,text:X(`Read`,`package.json`,`Read 38 lines`),afterMs:700},{kind:`output`,text:Y(`This is the demo desktop, so I stop here. On your own desktop I would carry on and make the change.`),afterMs:600}]}],banner:Lt};return{meta:{id:`first-look`,protocol:2,stamp:`first-look-7`},clock:{start:e},state:{bootId:`boot`,model:g},script:[]}}var La=`.claude/outbox/`,Z={empty:`${La}todo-garden-empty-state.png`,picker:`${La}todo-garden-date-picker.png`,grouped:`${La}todo-garden-grouped.png`,sorted:`${La}todo-garden-sorted.png`,html:`${La}todo-garden-preview.html`,md:`${La}todo-garden-release-notes.md`,ridge:`${La}trail-log-ridge-loop.png`,sketch:`.claude/inbox/swipe-sketch.png`},Ra={[Z.empty]:4324,[Z.picker]:6080,[Z.grouped]:6142,[Z.sorted]:31628,[Z.html]:852,[Z.md]:430,[Z.ridge]:4174,[Z.sketch]:2169};function za(e){let t=t=>e-t,n=(e,t)=>({name:e.slice(e.lastIndexOf(`/`)+1),relPath:e,size:Ra[e],mtime:t,ctime:t}),r=`${O(`~/dev/todo-garden`)}> show me the new screens and write release notes for 0.4\r\n`+G(`I'll render the three screens and collect them in the outbox.`)+K(`Bash`,`npx playwright screenshot`,`saved ${Z.empty}`)+K(`Bash`,`npx playwright screenshot`,`saved ${Z.picker}`)+K(`Bash`,`npx playwright screenshot`,`saved ${Z.grouped}`)+K(`Write`,Z.md,`Wrote 19 lines`)+K(`Write`,Z.html,`Wrote 18 lines`)+G(`Done. Screens: ${Z.empty}, ${Z.picker}, ${Z.grouped}. Notes: ${Z.md}. Preview page: ${Z.html}`)+`\r
19
+ `,i={repos:Ji({outbox:{r1:6,r3:1}}),sessions:[{id:`demo-g1`,cwd:H,title:`todo-garden · main`,tabTitle:`Screens and release notes`,remoteControl:!0,running:!0,idle:!0,idleSince:t(25*z),createdAt:t(70*z),claudeSessionId:`c-garden-3`,contextLeft:68,starred:!1,firstPrompt:`show me the new screens and write release notes for 0.4`,lastPrompt:`show me the new screens and write release notes for 0.4`}],screens:{"demo-g1":Ui(r)},history:{"demo-g1":[{id:`h-1`,kind:`prompt`,text:`show me the new screens and write release notes for 0.4`,sentAt:t(68*z),outputAt:t(25*z),output:`Done. Screens: ${Z.empty}, ${Z.picker}, ${Z.grouped}. Notes: ${Z.md}. Preview page: ${Z.html}`}]},recent:[{cwd:H,title:`todo-garden`,lastActive:t(25*z),claudeSessionId:`c-garden-3`,launch:{}},{cwd:U,title:`pocket-notes`,lastActive:t(1*V),claudeSessionId:`c-notes-1`,launch:{}},{cwd:W,title:`trail-log`,lastActive:t(3*B),claudeSessionId:`c-trail-1`,launch:{}}],closed:[],gallery:{r1:[n(Z.md,t(26*z)),n(Z.html,t(27*z)),n(Z.grouped,t(29*z)),n(Z.picker,t(31*z)),n(Z.empty,t(33*z)),n(Z.sorted,t(4*B))],r3:[n(Z.ridge,t(3*B))]},inbox:{r1:[n(Z.sketch,t(2*B))]},replies:[],banner:Lt};return{meta:{id:`gallery-and-files`,protocol:2,stamp:`gallery-and-files-1`},clock:{start:e},state:{bootId:`boot`,model:i},script:[]}}var Ba=`add a week view to the calendar screen`,Va=12e5,Ha=2e5,Ua=2e3,Wa=[22e3,31e3,46e3,52e3,58e3,63e3,69e3,74e3,8e4,86e3,91e3,97e3,104e3],Ga=[112e3,121e3,133e3,141e3],Ka=[149e3,156e3],qa=[163e3,171e3],Ja=`\x1B[38;2;255;107;128m`,Ya=e=>new Date(e).toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`}),Xa=e=>`${Ja}● 5-hour window used up · back at ${Ya(e)} (demo)${qi}\r\n`,Za=`Demo: the clock skips ahead to the 5-hour reset.`,Qa=5640,$a={think:2400,toastAfterWall:6600,jumpAfterToast:2400,firstLineAfterJump:1e3},eo=[$a.firstLineAfterJump,1e3],to=e=>e*3e-7+4e3*375e-8+Ua*15e-6,no=e=>Math.round(e*100)/100;function ro(e,t){let n=e.slice(0,t);return{pts:n,marks:[],peak:Math.max(...n),baseTok:n[0],usageTok:n.reduce((e,t)=>e+t+Ua,0),costUsd:no(n.reduce((e,t)=>e+to(t),0)),windowTok:Ha,windowFrom:`model`,autoCompactTok:18e4}}var io=e=>Math.round(100*(1-e/Ha)),ao=[...Wa,...Ga,...Ka,...qa],oo=e=>ro(ao,e).usageTok??0;function so(e){let t=t=>e-t,n=`demo-g1`,r=e+1*B+47*z,i=r+3e4,a=e+3*V+4*B,o=(e,t,n=r)=>({ok:!0,sessionPct:e,weeklyPct:t,sessionResetAt:n,weeklyResetAt:a}),s=(e,t,n,r,i)=>[{kind:`session`,patch:{contextSpark:ro(ao,e),contextLeft:io(ao[e-1])},...r?{afterMs:r}:{}},{kind:`usage`,usage:o(t,n,i)}],c=Wa.length,l=c+Ga.length,u=l+Ka.length,d=(e,t)=>t.map(({afterMs:t,...r})=>({at:e,event:r.kind===`session`?{...r,sessionId:n}:r})),f=[{at:800,event:{kind:`output`,sessionId:n,text:K(`Read`,`src/screens/CalendarScreen.tsx`,`Read 118 lines`)}},...d(1600,s(c+1,88,38)),{at:2400,event:{kind:`output`,sessionId:n,text:G(`A week is seven day columns; each column lists that day's tasks.`)}},...d(3200,s(c+2,90,38)),{at:4200,event:{kind:`output`,sessionId:n,text:K(`Write`,`src/screens/WeekView.tsx`,`Wrote 96 lines`)}},...d(5e3,s(c+3,92,39)),{at:5800,event:{kind:`output`,sessionId:n,text:K(`Bash`,`npm test -- WeekView`,`${Ki}PASS${qi} src/screens/WeekView.test.tsx (5 tests)`)}},...d(6400,s(l,94,39)),{at:7200,event:{kind:`output`,sessionId:n,text:G(`Done. The calendar has a week view (src/screens/WeekView.tsx); a tab switches between day and week.`)}},{at:7300,event:{kind:`turnEnd`,sessionId:n}}],p=[{kind:`output`,text:G(`A task row becomes draggable; dropping it on a day column sets its due date.`),afterMs:$a.think},{kind:`output`,text:K(`Read`,`src/components/TaskRow.tsx`,`Read 64 lines`),afterMs:1e3},...s(l+1,97,40),{kind:`output`,text:K(`Update`,`src/components/TaskRow.tsx`,`Added 21 lines, removed 2 lines`),afterMs:200},...s(u,100,40),{kind:`wall`,resetAt:r,afterMs:200,meanwhile:[{kind:`output`,text:Xa(r)},{kind:`frame`,msg:{t:`toast`,text:Za},afterMs:$a.toastAfterWall},{kind:`clock`,to:i,afterMs:$a.jumpAfterToast},{kind:`usage`,usage:o(0,40,i+5*B)}],resumed:[{kind:`output`,text:G(`Picking up where it stopped: each day column takes the drop.`),afterMs:eo[0]},{kind:`output`,afterMs:eo[1],text:K(`Update`,`src/screens/WeekView.tsx`,`Added 34 lines, removed 5 lines`)+K(`Bash`,`npm test -- TaskRow WeekView`,`${Ki}PASS${qi} 2 files (11 tests)`)},...s(u+1,3,41,void 0,i+5*B),...s(u+2,5,41,void 0,i+5*B),{kind:`output`,text:G(`Done. Drag a task onto another day and its due date moves with it (src/components/TaskRow.tsx).`),afterMs:Qa-$a.jumpAfterToast-eo.reduce((e,t)=>e+t,0)-200}]}],m={id:n,cwd:H,title:`todo-garden · main`,tabTitle:`Week view`,remoteControl:!0,running:!0,turnActive:!0,turnStartedAt:t(2e4),lastTurnAt:t(2e4),idle:!1,createdAt:t(80*z),claudeSessionId:`c-garden-5`,contextLeft:io(Wa[c-1]),starred:!1,hooked:!0,firstPrompt:`group the tasks by day, today first`,lastPrompt:Ba,contextSpark:ro(ao,c),budget:{cfg:{unit:`tok`,max:Va,interrupt:!1},verdict:{state:`ok`,unit:`tok`,max:Va,spent:oo(c),agentShare:null}}},h={repos:Ji(),sessions:[m,{id:`demo-n1`,cwd:U,title:`pocket-notes · main`,tabTitle:`Background sync`,remoteControl:!0,running:!0,idle:!0,idleSince:t(55*z),createdAt:t(3*B),claudeSessionId:`c-notes-2`,contextLeft:83,starred:!1,firstPrompt:`sketch a background sync that runs every 15 minutes`,lastPrompt:`sketch a background sync that runs every 15 minutes`}],screens:{[n]:Ui(`${O(`~/dev/todo-garden`)}\x1b[1m>\x1b[0m ${Ba}\r\n`+G(`I'll start with how the calendar screen lays out a day.`)),"demo-n1":Ui(`${O(`~/dev/pocket-notes`)}> sketch a background sync that runs every 15 minutes\r\n`+G(`Sketched: a timer in src/sync/scheduler.ts calls the existing push, skipping when offline.`)+`\r
20
+ `)},history:{[n]:[{id:`h-1`,kind:`prompt`,text:`group the tasks by day, today first`,sentAt:t(78*z),outputAt:t(70*z),output:`Done. The list is grouped by day, today first (src/store/tasks.ts).`},{id:`h-2`,kind:`prompt`,text:Ba,sentAt:t(2e4)}],"demo-n1":[]},recent:[{cwd:H,title:`todo-garden`,lastActive:t(1*z),claudeSessionId:`c-garden-5`,launch:{}},{cwd:U,title:`pocket-notes`,lastActive:t(55*z),claudeSessionId:`c-notes-2`,launch:{}},{cwd:W,title:`trail-log`,lastActive:t(1*V),claudeSessionId:`c-trail-1`,launch:{}}],closed:[],decisions:[],notifications:[],limitConfig:{enabled:!0,mode:`one`},numbers:{usage:{...o(86,38),checkedAt:t(1*z)}},replies:[{match:`dragged to another day`,cwd:H,steps:p}],banner:Lt};return{meta:{id:`limit-and-budget`,protocol:2,stamp:`limit-and-budget-1`},clock:{start:e},state:{bootId:`boot`,model:h},script:f}}var co=2e5,lo=78e3;function uo(e){let t=t=>e-t,n=`demo-g1`,r=[18e3,26e3,35e3,44e3,55e3,67e3,81e3,96e3,112e3,124e3],i=[34e3,41e3,52e3,lo],a=t(95*z),o=[...r,...i].map((e,t)=>({t:a+t*6*z+(t>=r.length?4*z:0),tok:e})),s=a+(r.length-1)*6*z+3*z,c={repos:Ji({healthIndex:e}),sessions:[{id:n,cwd:H,title:`todo-garden · main`,tabTitle:`Group by day`,remoteControl:!0,running:!0,idle:!0,idleSince:t(6*z),createdAt:t(100*z),claudeSessionId:`c-garden-4`,contextLeft:61,starred:!1,firstPrompt:`group the tasks by day, today first`,lastPrompt:`add a test for the empty day`}],screens:{[n]:Ui(`${O(`~/dev/todo-garden`,`Sonnet 5.5`)}> add a test for the empty day\r\n`+G(`A day with no tasks should not draw a heading.`)+K(`Update`,`src/store/tasks.test.ts`,`Added 14 lines`)+K(`Bash`,`npm test -- tasks`,`PASS src/store/tasks.test.ts (10 tests)`)+G(`Done. An empty day draws nothing; the test pins it.`)+`\r
21
+ `)},history:{[n]:[{id:`h-1`,kind:`prompt`,text:`add a test for the empty day`,sentAt:t(12*z),outputAt:t(6*z),output:`Done. An empty day draws nothing; the test pins it. 10 tests pass.`}]},recent:[{cwd:H,title:`todo-garden`,lastActive:t(6*z),claudeSessionId:`c-garden-4`,launch:{}},{cwd:U,title:`pocket-notes`,lastActive:t(1*V),claudeSessionId:`c-notes-1`,launch:{}},{cwd:W,title:`trail-log`,lastActive:t(2*V),claudeSessionId:`c-trail-1`,launch:{}},...Pr(e).map(({convo:e,title:n})=>({cwd:e.repo,title:n,lastActive:e.lastAt??t(864e5),claudeSessionId:e.id,launch:{}}))],closed:[],replies:[],numbers:{ledger:!0,repoHealth:!0,usage:{ok:!0,sessionPct:42,weeklyPct:61,checkedAt:t(2*z),sessionResetAt:e+2*B+10*z,weeklyResetAt:e+3*V+5*B},budget:{budget:{enabled:!0,sessionMax:80,weeklyMax:90,leftoverMax:20},verdict:{blocked:!1,state:`ok`,which:`weekly`,pct:61,max:90}},meter:{calls:14,inTok:41200,outTok:3100,costUsd:.07,today:{calls:6,inTok:17800,outTok:1300,costUsd:.03},byModel:[{model:`haiku`,calls:11,inTok:30400,outTok:2300,costUsd:.04},{model:`sonnet`,calls:3,inTok:10800,outTok:800,costUsd:.03}],lastAt:t(9*z)},context:{[n]:{sessionId:n,claudeSessionId:`c-garden-4`,updatedAt:e,samples:o,events:[{t:s,kind:`compact`,trigger:`auto`,preTok:13e4,postTok:3e4}],windowTok:co,windowFrom:`model`,model:`sonnet`,autoCompactTok:16e4,truncated:!1,turns:14}}},banner:Lt};return{meta:{id:`numbers`,protocol:2,stamp:`numbers-1`},clock:{start:e},state:{bootId:`boot`,model:c},script:[]}}var fo=`group the tasks by day, today first`,po=4500,mo=e=>[{id:`b1`,text:`Make the empty state friendlier`,status:`queued`,repoDir:H,createdAt:e(20*B),order:1,label:`Empty state`},{id:`b2`,text:`Add a swipe-to-complete gesture on a task row`,status:`queued`,repoDir:H,createdAt:e(1*V),order:2,label:`Swipe to complete`},{id:`b3`,text:`Rename 'Tasks' to 'Beds' in the settings screen`,status:`done`,repoDir:H,createdAt:e(2*V),order:0,label:`Rename in settings`,startedAt:e(2*V-B),finishedAt:e(2*V-90*z)},{id:`b4`,text:`Wire the background sync into app start`,status:`queued`,repoDir:U,createdAt:e(40*z),order:1,label:`Wire the sync`},{id:`b5`,text:`Show the total distance on the hike list`,status:`queued`,repoDir:W,createdAt:e(1*V),order:1,label:`Total distance`}];function ho(e,t){let n={kind:`weekly`,days:[],hour:2,minute:0,tz:`Europe/Berlin`},r={kind:`window`,window:`weekly`,edge:`before`,offsetMin:-120,minPctLeft:20},i={kind:`window`,window:`weekly`,edge:`after`,offsetMin:0},a=n=>ue(n,e,t);return[{id:`sch1`,name:`Nightly: run the full test suite`,enabled:!0,createdAt:e-6*V,graceMin:120,nextAt:a(n),rule:n,action:{kind:`backlog`,repoDir:U,text:`Run the full test suite and summarise anything that fails`,label:`Full test run`,autoFire:!0}},{id:`sch2`,name:`Before the weekly reset: spend what is left`,enabled:!0,createdAt:e-4*V,graceMin:120,nextAt:a(r),rule:r,action:{kind:`backlog`,repoDir:H,text:`Work through the queued backlog items while this week's allowance is still there`,label:`Use the week`,autoFire:!0}},{id:`sch3`,name:`When the week is back: dependency check`,enabled:!0,createdAt:e-5*V,graceMin:120,nextAt:a(i),rule:i,action:{kind:`backlog`,repoDir:W,text:`Check for outdated dependencies and list what is safe to update`,label:`Dependency check`,autoFire:!0}}]}function go(e,t){let n=e.action,r={id:e.id,cwd:n.repoDir,payload:{kind:`prompt`,steps:[n.text]},target:{kind:`repo`,fresh:!0},trigger:{kind:`at`,rule:e.rule,graceMin:e.graceMin},title:e.name,label:n.label,auto:n.autoFire!==!1,origin:m,state:`blocked`,createdAt:e.createdAt,nextAt:e.nextAt},i=le(r,{present:new Set,sessions:[],busyCwds:new Set,budgetBlocked:!1,autoFire:!0,knownDirs:new Set([H,U,W]),hostBusy:!1,autoSlotsFree:1},t);return i.kind===`wait`?{...r,blockReason:i.reason,blockDetail:i.detail}:r}function _o(e){let t=t=>e-t,n=t=>e+t,r=`demo-g1`,i=po,a=nr(e),o=ho(e,a),s=o.map(t=>go(t,e)),c=`${O(`~/dev/todo-garden`)}> add a due-date picker to the new-task sheet\r\n`+G(`I'll start with how the new-task sheet is built.`)+K(`Read`,`src/components/NewTaskSheet.tsx`,`Read 96 lines`)+K(`Read`,`src/components/DatePicker.tsx`,`Read 41 lines`),l=e=>({id:`i1`,cwd:H,payload:{kind:`prompt`,steps:[fo]},target:{kind:`session`,sessionId:r,resumeConvId:`c-garden-2`},trigger:{kind:`idle`},state:`queued`,createdAt:t(3e4),label:`Group by day`,...e}),u=e=>({t:`intent.list`,intents:[e,...s]}),d=e=>({id:`i1`,text:fo,status:`queued`,repoDir:H,targetSessionId:r,autoFire:!0,label:`Group by day`,createdAt:t(3e4),order:0,...e}),f=e=>({t:`backlog.list`,items:[...e,...mo(t)],auto:!0,idleMs:6e4}),p=5e3,m=7e3,h=[{at:-1500,event:{kind:`output`,sessionId:r,text:K(`Update`,`src/components/NewTaskSheet.tsx`,`Added 18 lines, removed 3 lines`)}},{at:1500,event:{kind:`output`,sessionId:r,text:K(`Bash`,`npm test -- NewTaskSheet`,`${Ki}PASS${qi} src/components/NewTaskSheet.test.tsx (6 tests)`)}},{at:4400,event:{kind:`output`,sessionId:r,text:G(`Done. The new-task sheet now has a due-date picker (src/components/NewTaskSheet.tsx).`)}},{at:i,event:{kind:`turnEnd`,sessionId:r}},{at:p,event:{kind:`frame`,msg:u(l({state:`running`,startedAt:n(p),sessionId:r}))}},{at:p,event:{kind:`frame`,msg:f([d({status:`running`,startedAt:n(p),sessionId:r})])}},{at:p,event:{kind:`output`,sessionId:r,text:`\r\n> ${fo}\r\n`}},{at:p,event:{kind:`session`,sessionId:r,patch:{turnActive:!0,turnStartedAt:n(p),idle:!1,lastPrompt:fo,lastTurnAt:n(p)},unset:[`idleSince`]}},{at:5300,event:{kind:`output`,sessionId:r,text:G(`Grouping by day: today, tomorrow, later this week.`)}},{at:5800,event:{kind:`output`,sessionId:r,text:K(`Update`,`src/store/tasks.ts`,`Added 22 lines, removed 4 lines`)}},{at:6300,event:{kind:`output`,sessionId:r,text:K(`Bash`,`npm test -- tasks`,`${Ki}PASS${qi} src/store/tasks.test.ts (9 tests)`)}},{at:6800,event:{kind:`output`,sessionId:r,text:G(`Done. The list is grouped by day, today first (src/store/tasks.ts).`)}},{at:6900,event:{kind:`turnEnd`,sessionId:r}},{at:m,event:{kind:`frame`,msg:u(l({state:`done`,startedAt:n(p),settledAt:n(m),sessionId:r,result:{at:n(m),ok:!0,detail:`ran in Due-date picker`}}))}},{at:m,event:{kind:`frame`,msg:f([d({status:`done`,startedAt:n(p),finishedAt:n(m),sessionId:r})])}}],g={repos:Ji(),sessions:[{id:r,cwd:H,title:`todo-garden · main`,tabTitle:`Due-date picker`,remoteControl:!0,running:!0,turnActive:!0,turnStartedAt:t(4e4),lastTurnAt:t(4e4),idle:!1,createdAt:t(25*z),claudeSessionId:`c-garden-2`,contextLeft:71,starred:!1,firstPrompt:`add a due-date picker to the new-task sheet`,lastPrompt:`add a due-date picker to the new-task sheet`},{id:`demo-n1`,cwd:U,title:`pocket-notes · main`,tabTitle:`Background sync`,remoteControl:!0,running:!0,idle:!0,idleSince:t(50*z),createdAt:t(2*B),claudeSessionId:`c-notes-2`,contextLeft:83,starred:!1,followUp:{by:`agent`,at:t(50*z),reason:`two ways to schedule the sync — pick one before I build it`},firstPrompt:`sketch a background sync that runs every 15 minutes`,lastPrompt:`sketch a background sync that runs every 15 minutes`}],screens:{[r]:Ui(c),"demo-n1":Ui(`${O(`~/dev/pocket-notes`)}> sketch a background sync that runs every 15 minutes\r\n`+G(`Sketched: a timer in src/sync/scheduler.ts calls the existing push, skipping when offline.`)+`\r
22
+ `)},history:{[r]:[],"demo-n1":[{id:`h-1`,kind:`prompt`,text:`sketch a background sync that runs every 15 minutes`,sentAt:t(2*B-2*z),outputAt:t(50*z),output:`Sketched: a timer in src/sync/scheduler.ts calls the existing push, skipping when offline. Not wired in yet.`}]},recent:[{cwd:H,title:`todo-garden`,lastActive:t(1*z),claudeSessionId:`c-garden-2`,launch:{}},{cwd:U,title:`pocket-notes`,lastActive:t(50*z),claudeSessionId:`c-notes-2`,launch:{}},{cwd:W,title:`trail-log`,lastActive:t(1*V),claudeSessionId:`c-trail-1`,launch:{}}],closed:[],backlog:{auto:!0,items:[d({}),...mo(t)]},schedules:o,intents:[l({state:`blocked`,blockReason:`sessionBusy`,blockDetail:`the session is working on its current turn`}),...s],numbers:{usage:a},replies:[{match:`day`,cwd:H,steps:[{kind:`output`,text:G(`Grouping by day.`),afterMs:600}]}],banner:Lt};return{meta:{id:`queue-and-schedule`,protocol:2,stamp:`queue-and-schedule-1`},clock:{start:e},state:{bootId:`boot`,model:g},script:h}}var vo=`~/dev/photo-shelf`;function yo(e){let t=t=>e-t,n=`demo-p1`,r={repos:[...Ji({healthIndex:e}),{id:`r4`,repoName:`photo-shelf`,branch:`main`,isPrimary:!0,worktreePath:vo,outboxCount:0,changedCount:3,hasRepoHealth:!0,healthIndex:yi(`photo-shelf`,e)}],sessions:[{id:n,cwd:vo,title:`photo-shelf · main`,tabTitle:`Retry big album uploads`,remoteControl:!0,running:!0,idle:!0,idleSince:t(18*z),createdAt:t(80*z),claudeSessionId:`c-shelf-1`,contextLeft:44,starred:!1,firstPrompt:`uploads of big albums stall at 80%, make them retry`,lastPrompt:`uploads of big albums stall at 80%, make them retry`}],screens:{[n]:Ui(`${O(vo)}> uploads of big albums stall at 80%, make them retry\r\n`+G(`The stall is in the upload loop of the sync backend.`)+K(`Update`,`lib/services/sync_backend.dart`,`Added 212 lines`)+K(`Bash`,`flutter test test/sync_test.dart`,`All tests passed!`)+G(`Done. A chunk that times out is retried three times before the album is marked failed.`)+`\r
23
+ `)},history:{[n]:[{id:`h-1`,kind:`prompt`,text:`uploads of big albums stall at 80%, make them retry`,sentAt:t(30*z),outputAt:t(18*z),output:`Done. A chunk that times out is retried three times before the album is marked failed.`}]},recent:[{cwd:vo,title:`photo-shelf`,lastActive:t(18*z),claudeSessionId:`c-shelf-1`,launch:{}},{cwd:H,title:`todo-garden`,lastActive:t(5*B),claudeSessionId:`c-garden-4`,launch:{}},{cwd:U,title:`pocket-notes`,lastActive:t(1*V),claudeSessionId:`c-notes-1`,launch:{}},{cwd:W,title:`trail-log`,lastActive:t(2*V),claudeSessionId:`c-trail-1`,launch:{}}],closed:[],replies:[],numbers:{repoHealth:!0},banner:Lt};return{meta:{id:`repo-health`,protocol:2,stamp:`repo-health-1`},clock:{start:e},state:{bootId:`boot`,model:r},script:[]}}var bo={"first-look":Ia(Date.now()),"queue-and-schedule":_o(Date.now()),"gallery-and-files":za(Date.now()),numbers:uo(Date.now()),"limit-and-budget":so(Date.now()),"repo-health":yo(Date.now())},xo=200,So=`Not in the demo — the demo makes no request off this device`;function Co(e,t){let n;try{n=new URL(e,t)}catch{return{route:`refuse`,u:null}}if(n.protocol===`data:`||n.protocol===`blob:`)return{route:`local`,u:n};let r;try{r=new URL(t).origin}catch{return{route:`refuse`,u:n}}return n.origin===r?n.pathname===`/api`||n.pathname.startsWith(`/api/`)||n.pathname===`/ws`?{route:`host`,u:n}:{route:`local`,u:n}:{route:`refuse`,u:n}}function wo(e){if(e!=null){if(typeof e==`string`)return new TextEncoder().encode(e).length;if(typeof Blob<`u`&&e instanceof Blob)return e.size;if(e instanceof ArrayBuffer||ArrayBuffer.isView(e))return e.byteLength}}function To(e,t){if(/json/i.test(t??``)||/^\s*[[{]/.test(e))try{return JSON.parse(e)}catch{}return e}function Eo(e,t,n,r){let i={method:e.toUpperCase(),path:t.pathname},a={},o=!1;if(t.searchParams.forEach((e,t)=>{a[t]=t in a?`${a[t]},${e}`:e,o=!0}),o&&(i.query=a),typeof n==`string`)i.body=To(n,r),i.bodyBytes=wo(n);else if(n instanceof URLSearchParams)i.body=n.toString();else if(n!=null){let e=wo(n);e!=null&&(i.bodyBytes=e)}return i}function Do(e,t){try{return e.request(t)}catch(e){return{status:500,contentType:`text/plain`,body:`demo host failed on ${t.method} ${t.path}: ${String(e)}`}}}var Oo=new Set([101,204,205,304]),ko=0,Ao=1,jo=2,Mo=3,No=class{static CONNECTING=ko;static OPEN=Ao;static CLOSING=jo;static CLOSED=Mo;CONNECTING=ko;OPEN=Ao;CLOSING=jo;CLOSED=Mo;readyState=ko;url;protocol=``;extensions=``;binaryType=`blob`;bufferedAmount=0;onopen=null;onmessage=null;onclose=null;onerror=null;host;conn=null;timers=new Set;attaching=!1;ptyQueued=0;replay;constructor(e,t,n=()=>[]){this.host=e,this.url=t,this.replay=n,this.later(0,()=>this.open())}later(e,t){let n=setTimeout(()=>{this.timers.delete(n),t()},Math.max(0,e));this.timers.add(n)}open(){if(this.readyState!==ko)return;let e=null,t=this.host.connect(t=>{if(this.readyState===ko){t.kind===`close`&&(e=t);return}let n=t.kind===`frame`&&t.msg.t===`pty`?t.msg:null;n?.full&&this.attaching&&t.kind===`frame`&&t.afterMs==null&&this.ptyQueued===0?this.deliver(t):(n&&this.ptyQueued++,this.later(t.afterMs??0,()=>{n&&this.ptyQueued--,this.deliver(t)}))}),n=e;if(n?.kind===`close`)this.finish(n.code,n.reason);else{this.conn=t,this.readyState=Ao,this.onopen?.(new Event(`open`));for(let e of this.replay())this.later(0,()=>this.onmessage?.(new MessageEvent(`message`,{data:ne({t:`plugin.push`,...e})})))}}deliver(e){this.readyState===Ao&&(e.kind===`close`?(this.conn=null,this.finish(e.code,e.reason)):this.onmessage?.(new MessageEvent(`message`,{data:ne(e.msg)})))}finish(e,t){if(this.readyState===Mo)return;this.readyState=Mo;for(let e of this.timers)clearTimeout(e);this.timers.clear();let n=Object.assign(new Event(`close`),{code:e,reason:t,wasClean:e===1e3});this.onclose?.(n)}send(e){if(this.readyState===ko)throw new DOMException(`still connecting`,`InvalidStateError`);if(this.readyState!==Ao||!this.conn)return;let t;try{t=oe(e)}catch{return}this.attaching=t.t===`session.attach`;try{this.conn.receive(t)}finally{this.attaching=!1}}close(e=1e3,t=``){this.readyState!==jo&&this.readyState!==Mo&&(this.readyState=jo,this.conn?.close(),this.conn=null,setTimeout(()=>this.finish(e,t),0))}addEventListener(){}removeEventListener(){}};function Po(e,t){if(e)try{let n=e.getItem(Se(t));return n?JSON.parse(n):void 0}catch{return}}function Fo(e,t){function n(...n){let r=e.now()+t();return new.target?Reflect.construct(e,n.length?n:[r],new.target):new e(r).toString()}return n.prototype=e.prototype,Object.setPrototypeOf(n,e),Object.defineProperty(n,"now",{value:()=>e.now()+t(),configurable:!0,writable:!0}),n}function Io(e){let{scenario:t,target:n,store:r}=e,i=n.Date??Date,a=e.clock??{now:()=>i.now()},o=()=>e.href,s=t.meta.id,c=Po(r,s),l=c===void 0?zi(t,a):Bi(t,a,c),u=!1,d=()=>{!u&&n.Date&&l.clockShift()!==0&&(n.Date=Fo(n.Date,()=>l.clockShift()),u=!0)};l.onChange(d),d();let f=()=>{if(r)try{r.setItem(Se(s),JSON.stringify(l.snapshot()))}catch{}};l.onChange(f),f();let p=(t,n)=>{try{e.onRefused?.(t,n)}catch{}},m=n.fetch;n.fetch=(async(e,t)=>{let n=typeof e!=`string`&&!(e instanceof URL),r=n?e.url:String(e),{route:i,u:a}=Co(r,o());if(i===`local`)return m(e,t);if(i===`refuse`||!a)throw p(r,`fetch`),TypeError(`${So}: ${r}`);let s=t?.method??(n?e.method:`GET`),c=new Headers(t?.headers??(n?e.headers:void 0)),u=t?.body;if(u==null&&n&&s!==`GET`&&s!==`HEAD`)try{u=await e.text()}catch{u=void 0}let d=t?.signal??(n?e.signal:void 0);if(d?.aborted)throw new DOMException(`aborted`,`AbortError`);let f=Do(l,Eo(s,a,u,c.get(`content-type`)));f.afterMs&&await new Promise((e,t)=>{let n=setTimeout(e,f.afterMs);d?.addEventListener(`abort`,()=>{clearTimeout(n),t(new DOMException(`aborted`,`AbortError`))},{once:!0})});let h=new TextEncoder().encode(f.body).length,g=Oo.has(f.status)||s.toUpperCase()===`HEAD`;return new Response(g?null:f.body,{status:f.status,headers:{"content-type":f.contentType,"content-length":String(g?0:h)}})});let h=n.XMLHttpRequest;h&&Ro(h,l,o,p);let g=n.navigator;if(g){let e=typeof g.sendBeacon==`function`?g.sendBeacon.bind(g):null;g.sendBeacon=(t,n)=>{let r=String(t),{route:i,u:a}=Co(r,o());if(i===`local`)return e?e(t,n):!1;if(i===`refuse`||!a)return p(r,`sendBeacon`),!1;let s=typeof Blob<`u`&&n instanceof Blob?n.type:null;return Do(l,Eo(`POST`,a,n,s)),!0}}let _=null;return e.tick!==!1&&(_=setInterval(()=>l.advance(),xo)),{host:l,dial:t=>new No(l,t,lt(e.href)?dt:void 0),stop(){_!==null&&(clearInterval(_),_=null)}}}function Q(e,t,n){let r={lengthComputable:n>0,loaded:t,total:n};return typeof ProgressEvent==`function`?new ProgressEvent(e,r):Object.assign(new Event(e),r)}function Lo(e,t,n){let r=/^\/api\/repos\/([^/]+)\/inbox$/.exec(e.pathname);if(r&&n.status===200&&typeof Blob<`u`&&t instanceof Blob)try{let e=JSON.parse(n.body).saved?.[0]?.name;e&&et(decodeURIComponent(r[1]),e,URL.createObjectURL(t))}catch{}}function $(e,t,n){Object.defineProperty(e,t,{value:n,configurable:!0,writable:!0})}function Ro(e,t,n,r){let i=e.prototype,a=new WeakMap,o=i.open,s=i.send,c=i.abort,l=i.setRequestHeader;i.setRequestHeader=function(e,t){let n=a.get(this);return n&&((n.headers??={})[e.toLowerCase()]=t),l.call(this,e,t)},i.open=function(e,t,...n){return a.set(this,{method:e,url:String(t)}),o.call(this,e,t,...n)},i.send=function(e){let i=a.get(this);if(!i)return s.call(this,e);let{route:o,u:c}=Co(i.url,n());if(o===`local`)return s.call(this,e);i.demo=!0;let l=(e,t)=>{try{e?.dispatchEvent(t)}catch{}};if(o===`refuse`||!c){r(i.url,`XMLHttpRequest`),i.timer=setTimeout(()=>{$(this,`readyState`,4),$(this,`status`,0),l(this,new Event(`readystatechange`)),l(this,Q(`error`,0,0)),l(this,Q(`loadend`,0,0))},0);return}let u=wo(e),d=typeof Blob<`u`&&e instanceof Blob?e.type:null,f=Eo(i.method,c,typeof e==`string`?e:e??void 0,d);i.headers&&(f.headers=i.headers);let p=Do(t,f);Lo(c,e,p);let m=this;i.timer=setTimeout(()=>{i.timer=void 0,u!=null&&u>0&&m.upload&&(l(m.upload,Q(`loadstart`,0,u)),l(m.upload,Q(`progress`,u,u)),l(m.upload,Q(`load`,u,u)),l(m.upload,Q(`loadend`,u,u)));let e=new TextEncoder().encode(p.body).length;$(m,`readyState`,2),l(m,new Event(`readystatechange`)),$(m,`readyState`,3),l(m,new Event(`readystatechange`)),$(m,`status`,p.status),$(m,`statusText`,String(p.status)),$(m,`responseURL`,c.toString()),$(m,`responseText`,p.body);let t=p.body;if(m.responseType===`json`)try{t=JSON.parse(p.body)}catch{t=null}$(m,`response`,t);let n={"content-type":p.contentType,"content-length":String(e)};$(m,`getResponseHeader`,e=>n[e.toLowerCase()]??null),$(m,`getAllResponseHeaders`,()=>Object.entries(n).map(([e,t])=>`${e}: ${t}\r\n`).join(``)),$(m,`readyState`,4),l(m,new Event(`readystatechange`)),l(m,Q(`progress`,e,e)),l(m,Q(`load`,e,e)),l(m,Q(`loadend`,e,e))},p.afterMs??0)},i.abort=function(){let e=a.get(this);if(!e?.demo)return c.call(this);if(e.timer!==void 0){clearTimeout(e.timer),e.timer=void 0,$(this,`readyState`,4),$(this,`status`,0);try{this.dispatchEvent(new Event(`readystatechange`)),this.dispatchEvent(Q(`abort`,0,0)),this.dispatchEvent(Q(`loadend`,0,0))}catch{}$(this,`readyState`,0)}}}var zo=null;function Bo(){return zo}function Vo(){if(zo)return!0;let e=ze();if(!e)return!1;let t=bo[e];if(!t)return Ge(null,`There is no demo called "${e}" in this build.`),!1;let n=null;try{n=globalThis.sessionStorage??null}catch{n=null}try{Li(t),zo=Io({scenario:t,href:location.href,target:globalThis,store:n,onRefused:(e,t)=>{}})}catch(t){return zo=null,Ge(null,`The demo "${e}" could not start in this build: ${String(t?.message??t)}`),!1}return Ge(e),!0}export{Me as C,Fe as D,ve as E,De as S,Pe as T,je as _,at as a,ke as b,We as c,He as d,Ge as f,Te as g,be as h,st as i,Ke as l,Se as m,Vo as n,Le as o,D as p,ft as r,Ue as s,Bo as t,qe as u,Oe as v,Ae as w,Ne as x,Ee as y};