waterplane 0.0.1 → 0.1.11

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 (1835) hide show
  1. package/CHANGELOG.md +1263 -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 +396 -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 +135 -0
  11. package/node_modules/@waterplane/shared/dist/agentfiles.js +399 -0
  12. package/node_modules/@waterplane/shared/dist/agentfiles.js.map +1 -0
  13. package/node_modules/@waterplane/shared/dist/alwaysonwords.d.ts +83 -0
  14. package/node_modules/@waterplane/shared/dist/alwaysonwords.js +209 -0
  15. package/node_modules/@waterplane/shared/dist/alwaysonwords.js.map +1 -0
  16. package/node_modules/@waterplane/shared/dist/artifacts.d.ts +213 -0
  17. package/node_modules/@waterplane/shared/dist/artifacts.js +295 -0
  18. package/node_modules/@waterplane/shared/dist/artifacts.js.map +1 -0
  19. package/node_modules/@waterplane/shared/dist/askrules.d.ts +95 -0
  20. package/node_modules/@waterplane/shared/dist/askrules.js +133 -0
  21. package/node_modules/@waterplane/shared/dist/askrules.js.map +1 -0
  22. package/node_modules/@waterplane/shared/dist/assess/sassapply.d.ts +191 -0
  23. package/node_modules/@waterplane/shared/dist/assess/sassapply.js +152 -0
  24. package/node_modules/@waterplane/shared/dist/assess/sassapply.js.map +1 -0
  25. package/node_modules/@waterplane/shared/dist/assess/sassclean.d.ts +21 -0
  26. package/node_modules/@waterplane/shared/dist/assess/sassclean.js +453 -0
  27. package/node_modules/@waterplane/shared/dist/assess/sassclean.js.map +1 -0
  28. package/node_modules/@waterplane/shared/dist/assess/sassio.d.ts +257 -0
  29. package/node_modules/@waterplane/shared/dist/assess/sassio.js +2 -0
  30. package/node_modules/@waterplane/shared/dist/assess/sassio.js.map +1 -0
  31. package/node_modules/@waterplane/shared/dist/assess/sassslot.d.ts +19 -0
  32. package/node_modules/@waterplane/shared/dist/assess/sassslot.js +136 -0
  33. package/node_modules/@waterplane/shared/dist/assess/sassslot.js.map +1 -0
  34. package/node_modules/@waterplane/shared/dist/assess/sassvocab.d.ts +115 -0
  35. package/node_modules/@waterplane/shared/dist/assess/sassvocab.js +98 -0
  36. package/node_modules/@waterplane/shared/dist/assess/sassvocab.js.map +1 -0
  37. package/node_modules/@waterplane/shared/dist/assess/sasswords.d.ts +140 -0
  38. package/node_modules/@waterplane/shared/dist/assess/sasswords.js +155 -0
  39. package/node_modules/@waterplane/shared/dist/assess/sasswords.js.map +1 -0
  40. package/node_modules/@waterplane/shared/dist/assess.d.ts +58 -0
  41. package/node_modules/@waterplane/shared/dist/assess.js +55 -0
  42. package/node_modules/@waterplane/shared/dist/assess.js.map +1 -0
  43. package/node_modules/@waterplane/shared/dist/attach.d.ts +118 -0
  44. package/node_modules/@waterplane/shared/dist/attach.js +85 -0
  45. package/node_modules/@waterplane/shared/dist/attach.js.map +1 -0
  46. package/node_modules/@waterplane/shared/dist/autocompact.d.ts +125 -0
  47. package/node_modules/@waterplane/shared/dist/autocompact.js +226 -0
  48. package/node_modules/@waterplane/shared/dist/autocompact.js.map +1 -0
  49. package/node_modules/@waterplane/shared/dist/backendsources.d.ts +409 -0
  50. package/node_modules/@waterplane/shared/dist/backendsources.js +3 -0
  51. package/node_modules/@waterplane/shared/dist/backendsources.js.map +1 -0
  52. package/node_modules/@waterplane/shared/dist/billing.d.ts +48 -0
  53. package/node_modules/@waterplane/shared/dist/billing.js +64 -0
  54. package/node_modules/@waterplane/shared/dist/billing.js.map +1 -0
  55. package/node_modules/@waterplane/shared/dist/bindconv.d.ts +47 -0
  56. package/node_modules/@waterplane/shared/dist/bindconv.js +35 -0
  57. package/node_modules/@waterplane/shared/dist/bindconv.js.map +1 -0
  58. package/node_modules/@waterplane/shared/dist/bookmark.d.ts +26 -0
  59. package/node_modules/@waterplane/shared/dist/bookmark.js +40 -0
  60. package/node_modules/@waterplane/shared/dist/bookmark.js.map +1 -0
  61. package/node_modules/@waterplane/shared/dist/branchmode.d.ts +27 -0
  62. package/node_modules/@waterplane/shared/dist/branchmode.js +80 -0
  63. package/node_modules/@waterplane/shared/dist/branchmode.js.map +1 -0
  64. package/node_modules/@waterplane/shared/dist/brand.d.ts +94 -0
  65. package/node_modules/@waterplane/shared/dist/brand.js +88 -0
  66. package/node_modules/@waterplane/shared/dist/brand.js.map +1 -0
  67. package/node_modules/@waterplane/shared/dist/brandmigrate.d.ts +30 -0
  68. package/node_modules/@waterplane/shared/dist/brandmigrate.js +67 -0
  69. package/node_modules/@waterplane/shared/dist/brandmigrate.js.map +1 -0
  70. package/node_modules/@waterplane/shared/dist/budget.d.ts +247 -0
  71. package/node_modules/@waterplane/shared/dist/budget.js +295 -0
  72. package/node_modules/@waterplane/shared/dist/budget.js.map +1 -0
  73. package/node_modules/@waterplane/shared/dist/buildparams.d.ts +146 -0
  74. package/node_modules/@waterplane/shared/dist/buildparams.js +260 -0
  75. package/node_modules/@waterplane/shared/dist/buildparams.js.map +1 -0
  76. package/node_modules/@waterplane/shared/dist/buildscan.d.ts +99 -0
  77. package/node_modules/@waterplane/shared/dist/buildscan.js +334 -0
  78. package/node_modules/@waterplane/shared/dist/buildscan.js.map +1 -0
  79. package/node_modules/@waterplane/shared/dist/buildstamp.d.ts +37 -0
  80. package/node_modules/@waterplane/shared/dist/buildstamp.js +95 -0
  81. package/node_modules/@waterplane/shared/dist/buildstamp.js.map +1 -0
  82. package/node_modules/@waterplane/shared/dist/burn.d.ts +152 -0
  83. package/node_modules/@waterplane/shared/dist/burn.js +206 -0
  84. package/node_modules/@waterplane/shared/dist/burn.js.map +1 -0
  85. package/node_modules/@waterplane/shared/dist/changebrief.d.ts +61 -0
  86. package/node_modules/@waterplane/shared/dist/changebrief.js +70 -0
  87. package/node_modules/@waterplane/shared/dist/changebrief.js.map +1 -0
  88. package/node_modules/@waterplane/shared/dist/chord.d.ts +39 -0
  89. package/node_modules/@waterplane/shared/dist/chord.js +102 -0
  90. package/node_modules/@waterplane/shared/dist/chord.js.map +1 -0
  91. package/node_modules/@waterplane/shared/dist/claudeconfig.d.ts +18 -0
  92. package/node_modules/@waterplane/shared/dist/claudeconfig.js +44 -0
  93. package/node_modules/@waterplane/shared/dist/claudeconfig.js.map +1 -0
  94. package/node_modules/@waterplane/shared/dist/claudeversion.d.ts +17 -0
  95. package/node_modules/@waterplane/shared/dist/claudeversion.js +31 -0
  96. package/node_modules/@waterplane/shared/dist/claudeversion.js.map +1 -0
  97. package/node_modules/@waterplane/shared/dist/clientframe.d.ts +12 -0
  98. package/node_modules/@waterplane/shared/dist/clientframe.js +15 -0
  99. package/node_modules/@waterplane/shared/dist/clientframe.js.map +1 -0
  100. package/node_modules/@waterplane/shared/dist/clihealth/healthcatalog.d.ts +52 -0
  101. package/node_modules/@waterplane/shared/dist/clihealth/healthcatalog.js +137 -0
  102. package/node_modules/@waterplane/shared/dist/clihealth/healthcatalog.js.map +1 -0
  103. package/node_modules/@waterplane/shared/dist/clihealth/healthfixture.d.ts +58 -0
  104. package/node_modules/@waterplane/shared/dist/clihealth/healthfixture.js +189 -0
  105. package/node_modules/@waterplane/shared/dist/clihealth/healthfixture.js.map +1 -0
  106. package/node_modules/@waterplane/shared/dist/clihealth/healthrecord.d.ts +254 -0
  107. package/node_modules/@waterplane/shared/dist/clihealth/healthrecord.js +367 -0
  108. package/node_modules/@waterplane/shared/dist/clihealth/healthrecord.js.map +1 -0
  109. package/node_modules/@waterplane/shared/dist/clihealth/healthrollup.d.ts +36 -0
  110. package/node_modules/@waterplane/shared/dist/clihealth/healthrollup.js +123 -0
  111. package/node_modules/@waterplane/shared/dist/clihealth/healthrollup.js.map +1 -0
  112. package/node_modules/@waterplane/shared/dist/clihealth/healththresholds.d.ts +101 -0
  113. package/node_modules/@waterplane/shared/dist/clihealth/healththresholds.js +103 -0
  114. package/node_modules/@waterplane/shared/dist/clihealth/healththresholds.js.map +1 -0
  115. package/node_modules/@waterplane/shared/dist/clihealth.d.ts +64 -0
  116. package/node_modules/@waterplane/shared/dist/clihealth.js +69 -0
  117. package/node_modules/@waterplane/shared/dist/clihealth.js.map +1 -0
  118. package/node_modules/@waterplane/shared/dist/clirestart.d.ts +66 -0
  119. package/node_modules/@waterplane/shared/dist/clirestart.js +82 -0
  120. package/node_modules/@waterplane/shared/dist/clirestart.js.map +1 -0
  121. package/node_modules/@waterplane/shared/dist/closed.d.ts +41 -0
  122. package/node_modules/@waterplane/shared/dist/closed.js +102 -0
  123. package/node_modules/@waterplane/shared/dist/closed.js.map +1 -0
  124. package/node_modules/@waterplane/shared/dist/collage.d.ts +132 -0
  125. package/node_modules/@waterplane/shared/dist/collage.js +198 -0
  126. package/node_modules/@waterplane/shared/dist/collage.js.map +1 -0
  127. package/node_modules/@waterplane/shared/dist/contextweight.d.ts +169 -0
  128. package/node_modules/@waterplane/shared/dist/contextweight.js +247 -0
  129. package/node_modules/@waterplane/shared/dist/contextweight.js.map +1 -0
  130. package/node_modules/@waterplane/shared/dist/costwindow.d.ts +216 -0
  131. package/node_modules/@waterplane/shared/dist/costwindow.js +430 -0
  132. package/node_modules/@waterplane/shared/dist/costwindow.js.map +1 -0
  133. package/node_modules/@waterplane/shared/dist/ctxwindow.d.ts +92 -0
  134. package/node_modules/@waterplane/shared/dist/ctxwindow.js +107 -0
  135. package/node_modules/@waterplane/shared/dist/ctxwindow.js.map +1 -0
  136. package/node_modules/@waterplane/shared/dist/deskstorage.d.ts +170 -0
  137. package/node_modules/@waterplane/shared/dist/deskstorage.js +140 -0
  138. package/node_modules/@waterplane/shared/dist/deskstorage.js.map +1 -0
  139. package/node_modules/@waterplane/shared/dist/desktopfiles.d.ts +100 -0
  140. package/node_modules/@waterplane/shared/dist/desktopfiles.js +192 -0
  141. package/node_modules/@waterplane/shared/dist/desktopfiles.js.map +1 -0
  142. package/node_modules/@waterplane/shared/dist/devices.d.ts +52 -0
  143. package/node_modules/@waterplane/shared/dist/devices.js +53 -0
  144. package/node_modules/@waterplane/shared/dist/devices.js.map +1 -0
  145. package/node_modules/@waterplane/shared/dist/dictate.d.ts +178 -0
  146. package/node_modules/@waterplane/shared/dist/dictate.js +345 -0
  147. package/node_modules/@waterplane/shared/dist/dictate.js.map +1 -0
  148. package/node_modules/@waterplane/shared/dist/dictateterms.d.ts +91 -0
  149. package/node_modules/@waterplane/shared/dist/dictateterms.js +180 -0
  150. package/node_modules/@waterplane/shared/dist/dictateterms.js.map +1 -0
  151. package/node_modules/@waterplane/shared/dist/envresolve.d.ts +30 -0
  152. package/node_modules/@waterplane/shared/dist/envresolve.js +76 -0
  153. package/node_modules/@waterplane/shared/dist/envresolve.js.map +1 -0
  154. package/node_modules/@waterplane/shared/dist/exposure.d.ts +175 -0
  155. package/node_modules/@waterplane/shared/dist/exposure.js +357 -0
  156. package/node_modules/@waterplane/shared/dist/exposure.js.map +1 -0
  157. package/node_modules/@waterplane/shared/dist/exposurepush.d.ts +60 -0
  158. package/node_modules/@waterplane/shared/dist/exposurepush.js +103 -0
  159. package/node_modules/@waterplane/shared/dist/exposurepush.js.map +1 -0
  160. package/node_modules/@waterplane/shared/dist/fanoutruns.d.ts +25 -0
  161. package/node_modules/@waterplane/shared/dist/fanoutruns.js +88 -0
  162. package/node_modules/@waterplane/shared/dist/fanoutruns.js.map +1 -0
  163. package/node_modules/@waterplane/shared/dist/followup.d.ts +38 -0
  164. package/node_modules/@waterplane/shared/dist/followup.js +68 -0
  165. package/node_modules/@waterplane/shared/dist/followup.js.map +1 -0
  166. package/node_modules/@waterplane/shared/dist/gallery.d.ts +83 -0
  167. package/node_modules/@waterplane/shared/dist/gallery.js +94 -0
  168. package/node_modules/@waterplane/shared/dist/gallery.js.map +1 -0
  169. package/node_modules/@waterplane/shared/dist/halt.d.ts +46 -0
  170. package/node_modules/@waterplane/shared/dist/halt.js +34 -0
  171. package/node_modules/@waterplane/shared/dist/halt.js.map +1 -0
  172. package/node_modules/@waterplane/shared/dist/healthindex/commits.d.ts +26 -0
  173. package/node_modules/@waterplane/shared/dist/healthindex/commits.js +57 -0
  174. package/node_modules/@waterplane/shared/dist/healthindex/commits.js.map +1 -0
  175. package/node_modules/@waterplane/shared/dist/healthindex/move.d.ts +25 -0
  176. package/node_modules/@waterplane/shared/dist/healthindex/move.js +79 -0
  177. package/node_modules/@waterplane/shared/dist/healthindex/move.js.map +1 -0
  178. package/node_modules/@waterplane/shared/dist/healthindex/readings.d.ts +53 -0
  179. package/node_modules/@waterplane/shared/dist/healthindex/readings.js +154 -0
  180. package/node_modules/@waterplane/shared/dist/healthindex/readings.js.map +1 -0
  181. package/node_modules/@waterplane/shared/dist/healthindex/repoindex.d.ts +41 -0
  182. package/node_modules/@waterplane/shared/dist/healthindex/repoindex.js +19 -0
  183. package/node_modules/@waterplane/shared/dist/healthindex/repoindex.js.map +1 -0
  184. package/node_modules/@waterplane/shared/dist/healthindex/score.d.ts +26 -0
  185. package/node_modules/@waterplane/shared/dist/healthindex/score.js +154 -0
  186. package/node_modules/@waterplane/shared/dist/healthindex/score.js.map +1 -0
  187. package/node_modules/@waterplane/shared/dist/healthindex/types.d.ts +206 -0
  188. package/node_modules/@waterplane/shared/dist/healthindex/types.js +58 -0
  189. package/node_modules/@waterplane/shared/dist/healthindex/types.js.map +1 -0
  190. package/node_modules/@waterplane/shared/dist/healthindex/vs.d.ts +26 -0
  191. package/node_modules/@waterplane/shared/dist/healthindex/vs.js +38 -0
  192. package/node_modules/@waterplane/shared/dist/healthindex/vs.js.map +1 -0
  193. package/node_modules/@waterplane/shared/dist/healthindex/words.d.ts +28 -0
  194. package/node_modules/@waterplane/shared/dist/healthindex/words.js +69 -0
  195. package/node_modules/@waterplane/shared/dist/healthindex/words.js.map +1 -0
  196. package/node_modules/@waterplane/shared/dist/healthindex.d.ts +89 -0
  197. package/node_modules/@waterplane/shared/dist/healthindex.js +83 -0
  198. package/node_modules/@waterplane/shared/dist/healthindex.js.map +1 -0
  199. package/node_modules/@waterplane/shared/dist/healthindexresponse.d.ts +36 -0
  200. package/node_modules/@waterplane/shared/dist/healthindexresponse.js +84 -0
  201. package/node_modules/@waterplane/shared/dist/healthindexresponse.js.map +1 -0
  202. package/node_modules/@waterplane/shared/dist/healthspend.d.ts +23 -0
  203. package/node_modules/@waterplane/shared/dist/healthspend.js +41 -0
  204. package/node_modules/@waterplane/shared/dist/healthspend.js.map +1 -0
  205. package/node_modules/@waterplane/shared/dist/hints.d.ts +77 -0
  206. package/node_modules/@waterplane/shared/dist/hints.js +612 -0
  207. package/node_modules/@waterplane/shared/dist/hints.js.map +1 -0
  208. package/node_modules/@waterplane/shared/dist/hosts.d.ts +160 -0
  209. package/node_modules/@waterplane/shared/dist/hosts.js +316 -0
  210. package/node_modules/@waterplane/shared/dist/hosts.js.map +1 -0
  211. package/node_modules/@waterplane/shared/dist/hosturl.d.ts +73 -0
  212. package/node_modules/@waterplane/shared/dist/hosturl.js +129 -0
  213. package/node_modules/@waterplane/shared/dist/hosturl.js.map +1 -0
  214. package/node_modules/@waterplane/shared/dist/index.d.ts +312 -0
  215. package/node_modules/@waterplane/shared/dist/index.js +334 -0
  216. package/node_modules/@waterplane/shared/dist/index.js.map +1 -0
  217. package/node_modules/@waterplane/shared/dist/installlog.d.ts +137 -0
  218. package/node_modules/@waterplane/shared/dist/installlog.js +367 -0
  219. package/node_modules/@waterplane/shared/dist/installlog.js.map +1 -0
  220. package/node_modules/@waterplane/shared/dist/intent/budgetpass.d.ts +103 -0
  221. package/node_modules/@waterplane/shared/dist/intent/budgetpass.js +185 -0
  222. package/node_modules/@waterplane/shared/dist/intent/budgetpass.js.map +1 -0
  223. package/node_modules/@waterplane/shared/dist/intent/clean.d.ts +30 -0
  224. package/node_modules/@waterplane/shared/dist/intent/clean.js +492 -0
  225. package/node_modules/@waterplane/shared/dist/intent/clean.js.map +1 -0
  226. package/node_modules/@waterplane/shared/dist/intent/facts.d.ts +320 -0
  227. package/node_modules/@waterplane/shared/dist/intent/facts.js +52 -0
  228. package/node_modules/@waterplane/shared/dist/intent/facts.js.map +1 -0
  229. package/node_modules/@waterplane/shared/dist/intent/kind.d.ts +224 -0
  230. package/node_modules/@waterplane/shared/dist/intent/kind.js +254 -0
  231. package/node_modules/@waterplane/shared/dist/intent/kind.js.map +1 -0
  232. package/node_modules/@waterplane/shared/dist/intent/row.d.ts +433 -0
  233. package/node_modules/@waterplane/shared/dist/intent/row.js +75 -0
  234. package/node_modules/@waterplane/shared/dist/intent/row.js.map +1 -0
  235. package/node_modules/@waterplane/shared/dist/intent/slot.d.ts +137 -0
  236. package/node_modules/@waterplane/shared/dist/intent/slot.js +238 -0
  237. package/node_modules/@waterplane/shared/dist/intent/slot.js.map +1 -0
  238. package/node_modules/@waterplane/shared/dist/intent/target.d.ts +62 -0
  239. package/node_modules/@waterplane/shared/dist/intent/target.js +177 -0
  240. package/node_modules/@waterplane/shared/dist/intent/target.js.map +1 -0
  241. package/node_modules/@waterplane/shared/dist/intent/types.d.ts +455 -0
  242. package/node_modules/@waterplane/shared/dist/intent/types.js +27 -0
  243. package/node_modules/@waterplane/shared/dist/intent/types.js.map +1 -0
  244. package/node_modules/@waterplane/shared/dist/intent/verdict.d.ts +50 -0
  245. package/node_modules/@waterplane/shared/dist/intent/verdict.js +431 -0
  246. package/node_modules/@waterplane/shared/dist/intent/verdict.js.map +1 -0
  247. package/node_modules/@waterplane/shared/dist/intent/words.d.ts +236 -0
  248. package/node_modules/@waterplane/shared/dist/intent/words.js +329 -0
  249. package/node_modules/@waterplane/shared/dist/intent/words.js.map +1 -0
  250. package/node_modules/@waterplane/shared/dist/intent.d.ts +69 -0
  251. package/node_modules/@waterplane/shared/dist/intent.js +65 -0
  252. package/node_modules/@waterplane/shared/dist/intent.js.map +1 -0
  253. package/node_modules/@waterplane/shared/dist/itempaths.d.ts +35 -0
  254. package/node_modules/@waterplane/shared/dist/itempaths.js +55 -0
  255. package/node_modules/@waterplane/shared/dist/itempaths.js.map +1 -0
  256. package/node_modules/@waterplane/shared/dist/keyhint.d.ts +32 -0
  257. package/node_modules/@waterplane/shared/dist/keyhint.js +53 -0
  258. package/node_modules/@waterplane/shared/dist/keyhint.js.map +1 -0
  259. package/node_modules/@waterplane/shared/dist/lanroute.d.ts +86 -0
  260. package/node_modules/@waterplane/shared/dist/lanroute.js +84 -0
  261. package/node_modules/@waterplane/shared/dist/lanroute.js.map +1 -0
  262. package/node_modules/@waterplane/shared/dist/launch.d.ts +110 -0
  263. package/node_modules/@waterplane/shared/dist/launch.js +102 -0
  264. package/node_modules/@waterplane/shared/dist/launch.js.map +1 -0
  265. package/node_modules/@waterplane/shared/dist/launchmodes.d.ts +24 -0
  266. package/node_modules/@waterplane/shared/dist/launchmodes.js +50 -0
  267. package/node_modules/@waterplane/shared/dist/launchmodes.js.map +1 -0
  268. package/node_modules/@waterplane/shared/dist/ledgerspan.d.ts +59 -0
  269. package/node_modules/@waterplane/shared/dist/ledgerspan.js +99 -0
  270. package/node_modules/@waterplane/shared/dist/ledgerspan.js.map +1 -0
  271. package/node_modules/@waterplane/shared/dist/localrt.d.ts +53 -0
  272. package/node_modules/@waterplane/shared/dist/localrt.js +54 -0
  273. package/node_modules/@waterplane/shared/dist/localrt.js.map +1 -0
  274. package/node_modules/@waterplane/shared/dist/localusage.d.ts +35 -0
  275. package/node_modules/@waterplane/shared/dist/localusage.js +135 -0
  276. package/node_modules/@waterplane/shared/dist/localusage.js.map +1 -0
  277. package/node_modules/@waterplane/shared/dist/naming.d.ts +391 -0
  278. package/node_modules/@waterplane/shared/dist/naming.js +571 -0
  279. package/node_modules/@waterplane/shared/dist/naming.js.map +1 -0
  280. package/node_modules/@waterplane/shared/dist/netfuse.d.ts +60 -0
  281. package/node_modules/@waterplane/shared/dist/netfuse.js +99 -0
  282. package/node_modules/@waterplane/shared/dist/netfuse.js.map +1 -0
  283. package/node_modules/@waterplane/shared/dist/netretry.d.ts +38 -0
  284. package/node_modules/@waterplane/shared/dist/netretry.js +31 -0
  285. package/node_modules/@waterplane/shared/dist/netretry.js.map +1 -0
  286. package/node_modules/@waterplane/shared/dist/netretrycfg.d.ts +12 -0
  287. package/node_modules/@waterplane/shared/dist/netretrycfg.js +27 -0
  288. package/node_modules/@waterplane/shared/dist/netretrycfg.js.map +1 -0
  289. package/node_modules/@waterplane/shared/dist/netstall.d.ts +163 -0
  290. package/node_modules/@waterplane/shared/dist/netstall.js +241 -0
  291. package/node_modules/@waterplane/shared/dist/netstall.js.map +1 -0
  292. package/node_modules/@waterplane/shared/dist/nodemin.d.ts +20 -0
  293. package/node_modules/@waterplane/shared/dist/nodemin.js +37 -0
  294. package/node_modules/@waterplane/shared/dist/nodemin.js.map +1 -0
  295. package/node_modules/@waterplane/shared/dist/optins.d.ts +156 -0
  296. package/node_modules/@waterplane/shared/dist/optins.js +290 -0
  297. package/node_modules/@waterplane/shared/dist/optins.js.map +1 -0
  298. package/node_modules/@waterplane/shared/dist/pad.d.ts +263 -0
  299. package/node_modules/@waterplane/shared/dist/pad.js +373 -0
  300. package/node_modules/@waterplane/shared/dist/pad.js.map +1 -0
  301. package/node_modules/@waterplane/shared/dist/pairing.d.ts +120 -0
  302. package/node_modules/@waterplane/shared/dist/pairing.js +130 -0
  303. package/node_modules/@waterplane/shared/dist/pairing.js.map +1 -0
  304. package/node_modules/@waterplane/shared/dist/passive.d.ts +58 -0
  305. package/node_modules/@waterplane/shared/dist/passive.js +36 -0
  306. package/node_modules/@waterplane/shared/dist/passive.js.map +1 -0
  307. package/node_modules/@waterplane/shared/dist/peer.d.ts +311 -0
  308. package/node_modules/@waterplane/shared/dist/peer.js +390 -0
  309. package/node_modules/@waterplane/shared/dist/peer.js.map +1 -0
  310. package/node_modules/@waterplane/shared/dist/period.d.ts +108 -0
  311. package/node_modules/@waterplane/shared/dist/period.js +263 -0
  312. package/node_modules/@waterplane/shared/dist/period.js.map +1 -0
  313. package/node_modules/@waterplane/shared/dist/plugin/api.d.ts +364 -0
  314. package/node_modules/@waterplane/shared/dist/plugin/api.js +2 -0
  315. package/node_modules/@waterplane/shared/dist/plugin/api.js.map +1 -0
  316. package/node_modules/@waterplane/shared/dist/plugin/backend.d.ts +197 -0
  317. package/node_modules/@waterplane/shared/dist/plugin/backend.js +9 -0
  318. package/node_modules/@waterplane/shared/dist/plugin/backend.js.map +1 -0
  319. package/node_modules/@waterplane/shared/dist/plugin/manifest.d.ts +160 -0
  320. package/node_modules/@waterplane/shared/dist/plugin/manifest.js +98 -0
  321. package/node_modules/@waterplane/shared/dist/plugin/manifest.js.map +1 -0
  322. package/node_modules/@waterplane/shared/dist/plugin/module.d.ts +98 -0
  323. package/node_modules/@waterplane/shared/dist/plugin/module.js +13 -0
  324. package/node_modules/@waterplane/shared/dist/plugin/module.js.map +1 -0
  325. package/node_modules/@waterplane/shared/dist/plugin/version.d.ts +64 -0
  326. package/node_modules/@waterplane/shared/dist/plugin/version.js +84 -0
  327. package/node_modules/@waterplane/shared/dist/plugin/version.js.map +1 -0
  328. package/node_modules/@waterplane/shared/dist/plugin.d.ts +36 -0
  329. package/node_modules/@waterplane/shared/dist/plugin.js +37 -0
  330. package/node_modules/@waterplane/shared/dist/plugin.js.map +1 -0
  331. package/node_modules/@waterplane/shared/dist/pluginfile.d.ts +25 -0
  332. package/node_modules/@waterplane/shared/dist/pluginfile.js +8 -0
  333. package/node_modules/@waterplane/shared/dist/pluginfile.js.map +1 -0
  334. package/node_modules/@waterplane/shared/dist/pluginlaunch.d.ts +116 -0
  335. package/node_modules/@waterplane/shared/dist/pluginlaunch.js +3 -0
  336. package/node_modules/@waterplane/shared/dist/pluginlaunch.js.map +1 -0
  337. package/node_modules/@waterplane/shared/dist/pluginmaturity.d.ts +26 -0
  338. package/node_modules/@waterplane/shared/dist/pluginmaturity.js +32 -0
  339. package/node_modules/@waterplane/shared/dist/pluginmaturity.js.map +1 -0
  340. package/node_modules/@waterplane/shared/dist/pluginreadings.d.ts +43 -0
  341. package/node_modules/@waterplane/shared/dist/pluginreadings.js +5 -0
  342. package/node_modules/@waterplane/shared/dist/pluginreadings.js.map +1 -0
  343. package/node_modules/@waterplane/shared/dist/pricing.d.ts +249 -0
  344. package/node_modules/@waterplane/shared/dist/pricing.js +388 -0
  345. package/node_modules/@waterplane/shared/dist/pricing.js.map +1 -0
  346. package/node_modules/@waterplane/shared/dist/promptid.d.ts +48 -0
  347. package/node_modules/@waterplane/shared/dist/promptid.js +116 -0
  348. package/node_modules/@waterplane/shared/dist/promptid.js.map +1 -0
  349. package/node_modules/@waterplane/shared/dist/prview.d.ts +23 -0
  350. package/node_modules/@waterplane/shared/dist/prview.js +107 -0
  351. package/node_modules/@waterplane/shared/dist/prview.js.map +1 -0
  352. package/node_modules/@waterplane/shared/dist/ptysize.d.ts +74 -0
  353. package/node_modules/@waterplane/shared/dist/ptysize.js +77 -0
  354. package/node_modules/@waterplane/shared/dist/ptysize.js.map +1 -0
  355. package/node_modules/@waterplane/shared/dist/queue/queuebind.d.ts +40 -0
  356. package/node_modules/@waterplane/shared/dist/queue/queuebind.js +70 -0
  357. package/node_modules/@waterplane/shared/dist/queue/queuebind.js.map +1 -0
  358. package/node_modules/@waterplane/shared/dist/queue/queueentry.d.ts +175 -0
  359. package/node_modules/@waterplane/shared/dist/queue/queueentry.js +4 -0
  360. package/node_modules/@waterplane/shared/dist/queue/queueentry.js.map +1 -0
  361. package/node_modules/@waterplane/shared/dist/queue/queuelane.d.ts +65 -0
  362. package/node_modules/@waterplane/shared/dist/queue/queuelane.js +45 -0
  363. package/node_modules/@waterplane/shared/dist/queue/queuelane.js.map +1 -0
  364. package/node_modules/@waterplane/shared/dist/queue/queueplan.d.ts +180 -0
  365. package/node_modules/@waterplane/shared/dist/queue/queueplan.js +169 -0
  366. package/node_modules/@waterplane/shared/dist/queue/queueplan.js.map +1 -0
  367. package/node_modules/@waterplane/shared/dist/queue/queueretarget.d.ts +61 -0
  368. package/node_modules/@waterplane/shared/dist/queue/queueretarget.js +94 -0
  369. package/node_modules/@waterplane/shared/dist/queue/queueretarget.js.map +1 -0
  370. package/node_modules/@waterplane/shared/dist/queue/queueretry.d.ts +61 -0
  371. package/node_modules/@waterplane/shared/dist/queue/queueretry.js +66 -0
  372. package/node_modules/@waterplane/shared/dist/queue/queueretry.js.map +1 -0
  373. package/node_modules/@waterplane/shared/dist/queue/queueserial.d.ts +154 -0
  374. package/node_modules/@waterplane/shared/dist/queue/queueserial.js +169 -0
  375. package/node_modules/@waterplane/shared/dist/queue/queueserial.js.map +1 -0
  376. package/node_modules/@waterplane/shared/dist/queue/queueuploads.d.ts +65 -0
  377. package/node_modules/@waterplane/shared/dist/queue/queueuploads.js +79 -0
  378. package/node_modules/@waterplane/shared/dist/queue/queueuploads.js.map +1 -0
  379. package/node_modules/@waterplane/shared/dist/queue/queuewords.d.ts +22 -0
  380. package/node_modules/@waterplane/shared/dist/queue/queuewords.js +55 -0
  381. package/node_modules/@waterplane/shared/dist/queue/queuewords.js.map +1 -0
  382. package/node_modules/@waterplane/shared/dist/queue.d.ts +13 -0
  383. package/node_modules/@waterplane/shared/dist/queue.js +44 -0
  384. package/node_modules/@waterplane/shared/dist/queue.js.map +1 -0
  385. package/node_modules/@waterplane/shared/dist/repocolor.d.ts +159 -0
  386. package/node_modules/@waterplane/shared/dist/repocolor.js +261 -0
  387. package/node_modules/@waterplane/shared/dist/repocolor.js.map +1 -0
  388. package/node_modules/@waterplane/shared/dist/repohealth.d.ts +644 -0
  389. package/node_modules/@waterplane/shared/dist/repohealth.js +117 -0
  390. package/node_modules/@waterplane/shared/dist/repohealth.js.map +1 -0
  391. package/node_modules/@waterplane/shared/dist/repohealthread.d.ts +156 -0
  392. package/node_modules/@waterplane/shared/dist/repohealthread.js +680 -0
  393. package/node_modules/@waterplane/shared/dist/repohealthread.js.map +1 -0
  394. package/node_modules/@waterplane/shared/dist/requirements.d.ts +81 -0
  395. package/node_modules/@waterplane/shared/dist/requirements.js +191 -0
  396. package/node_modules/@waterplane/shared/dist/requirements.js.map +1 -0
  397. package/node_modules/@waterplane/shared/dist/rootchoice.d.ts +52 -0
  398. package/node_modules/@waterplane/shared/dist/rootchoice.js +18 -0
  399. package/node_modules/@waterplane/shared/dist/rootchoice.js.map +1 -0
  400. package/node_modules/@waterplane/shared/dist/schedule/schedaction.d.ts +135 -0
  401. package/node_modules/@waterplane/shared/dist/schedule/schedaction.js +36 -0
  402. package/node_modules/@waterplane/shared/dist/schedule/schedaction.js.map +1 -0
  403. package/node_modules/@waterplane/shared/dist/schedule/schedclean.d.ts +6 -0
  404. package/node_modules/@waterplane/shared/dist/schedule/schedclean.js +206 -0
  405. package/node_modules/@waterplane/shared/dist/schedule/schedclean.js.map +1 -0
  406. package/node_modules/@waterplane/shared/dist/schedule/schedfire.d.ts +76 -0
  407. package/node_modules/@waterplane/shared/dist/schedule/schedfire.js +122 -0
  408. package/node_modules/@waterplane/shared/dist/schedule/schedfire.js.map +1 -0
  409. package/node_modules/@waterplane/shared/dist/schedule/schedhorizon.d.ts +78 -0
  410. package/node_modules/@waterplane/shared/dist/schedule/schedhorizon.js +98 -0
  411. package/node_modules/@waterplane/shared/dist/schedule/schedhorizon.js.map +1 -0
  412. package/node_modules/@waterplane/shared/dist/schedule/schedrule.d.ts +219 -0
  413. package/node_modules/@waterplane/shared/dist/schedule/schedrule.js +162 -0
  414. package/node_modules/@waterplane/shared/dist/schedule/schedrule.js.map +1 -0
  415. package/node_modules/@waterplane/shared/dist/schedule/schedtext.d.ts +37 -0
  416. package/node_modules/@waterplane/shared/dist/schedule/schedtext.js +119 -0
  417. package/node_modules/@waterplane/shared/dist/schedule/schedtext.js.map +1 -0
  418. package/node_modules/@waterplane/shared/dist/schedule/schedwhen.d.ts +54 -0
  419. package/node_modules/@waterplane/shared/dist/schedule/schedwhen.js +70 -0
  420. package/node_modules/@waterplane/shared/dist/schedule/schedwhen.js.map +1 -0
  421. package/node_modules/@waterplane/shared/dist/schedule/schedzone.d.ts +76 -0
  422. package/node_modules/@waterplane/shared/dist/schedule/schedzone.js +159 -0
  423. package/node_modules/@waterplane/shared/dist/schedule/schedzone.js.map +1 -0
  424. package/node_modules/@waterplane/shared/dist/schedule.d.ts +44 -0
  425. package/node_modules/@waterplane/shared/dist/schedule.js +43 -0
  426. package/node_modules/@waterplane/shared/dist/schedule.js.map +1 -0
  427. package/node_modules/@waterplane/shared/dist/screenlog.d.ts +65 -0
  428. package/node_modules/@waterplane/shared/dist/screenlog.js +169 -0
  429. package/node_modules/@waterplane/shared/dist/screenlog.js.map +1 -0
  430. package/node_modules/@waterplane/shared/dist/sendstamp.d.ts +85 -0
  431. package/node_modules/@waterplane/shared/dist/sendstamp.js +96 -0
  432. package/node_modules/@waterplane/shared/dist/sendstamp.js.map +1 -0
  433. package/node_modules/@waterplane/shared/dist/sessionbudget.d.ts +177 -0
  434. package/node_modules/@waterplane/shared/dist/sessionbudget.js +239 -0
  435. package/node_modules/@waterplane/shared/dist/sessionbudget.js.map +1 -0
  436. package/node_modules/@waterplane/shared/dist/sessioncost/costcold.d.ts +99 -0
  437. package/node_modules/@waterplane/shared/dist/sessioncost/costcold.js +94 -0
  438. package/node_modules/@waterplane/shared/dist/sessioncost/costcold.js.map +1 -0
  439. package/node_modules/@waterplane/shared/dist/sessioncost/costcompact.d.ts +125 -0
  440. package/node_modules/@waterplane/shared/dist/sessioncost/costcompact.js +184 -0
  441. package/node_modules/@waterplane/shared/dist/sessioncost/costcompact.js.map +1 -0
  442. package/node_modules/@waterplane/shared/dist/sessioncost/costofseries.d.ts +21 -0
  443. package/node_modules/@waterplane/shared/dist/sessioncost/costofseries.js +31 -0
  444. package/node_modules/@waterplane/shared/dist/sessioncost/costofseries.js.map +1 -0
  445. package/node_modules/@waterplane/shared/dist/sessioncost/costreading.d.ts +174 -0
  446. package/node_modules/@waterplane/shared/dist/sessioncost/costreading.js +302 -0
  447. package/node_modules/@waterplane/shared/dist/sessioncost/costreading.js.map +1 -0
  448. package/node_modules/@waterplane/shared/dist/sessioncost/costtypes.d.ts +209 -0
  449. package/node_modules/@waterplane/shared/dist/sessioncost/costtypes.js +128 -0
  450. package/node_modules/@waterplane/shared/dist/sessioncost/costtypes.js.map +1 -0
  451. package/node_modules/@waterplane/shared/dist/sessioncost/costwords.d.ts +169 -0
  452. package/node_modules/@waterplane/shared/dist/sessioncost/costwords.js +262 -0
  453. package/node_modules/@waterplane/shared/dist/sessioncost/costwords.js.map +1 -0
  454. package/node_modules/@waterplane/shared/dist/sessioncost.d.ts +52 -0
  455. package/node_modules/@waterplane/shared/dist/sessioncost.js +51 -0
  456. package/node_modules/@waterplane/shared/dist/sessioncost.js.map +1 -0
  457. package/node_modules/@waterplane/shared/dist/settings.d.ts +136 -0
  458. package/node_modules/@waterplane/shared/dist/settings.js +303 -0
  459. package/node_modules/@waterplane/shared/dist/settings.js.map +1 -0
  460. package/node_modules/@waterplane/shared/dist/shells.d.ts +140 -0
  461. package/node_modules/@waterplane/shared/dist/shells.js +257 -0
  462. package/node_modules/@waterplane/shared/dist/shells.js.map +1 -0
  463. package/node_modules/@waterplane/shared/dist/slash.d.ts +47 -0
  464. package/node_modules/@waterplane/shared/dist/slash.js +166 -0
  465. package/node_modules/@waterplane/shared/dist/slash.js.map +1 -0
  466. package/node_modules/@waterplane/shared/dist/sourceshape.d.ts +27 -0
  467. package/node_modules/@waterplane/shared/dist/sourceshape.js +141 -0
  468. package/node_modules/@waterplane/shared/dist/sourceshape.js.map +1 -0
  469. package/node_modules/@waterplane/shared/dist/spendwarn.d.ts +37 -0
  470. package/node_modules/@waterplane/shared/dist/spendwarn.js +79 -0
  471. package/node_modules/@waterplane/shared/dist/spendwarn.js.map +1 -0
  472. package/node_modules/@waterplane/shared/dist/statedir.d.ts +11 -0
  473. package/node_modules/@waterplane/shared/dist/statedir.js +34 -0
  474. package/node_modules/@waterplane/shared/dist/statedir.js.map +1 -0
  475. package/node_modules/@waterplane/shared/dist/stream.d.ts +135 -0
  476. package/node_modules/@waterplane/shared/dist/stream.js +117 -0
  477. package/node_modules/@waterplane/shared/dist/stream.js.map +1 -0
  478. package/node_modules/@waterplane/shared/dist/sweep.d.ts +156 -0
  479. package/node_modules/@waterplane/shared/dist/sweep.js +193 -0
  480. package/node_modules/@waterplane/shared/dist/sweep.js.map +1 -0
  481. package/node_modules/@waterplane/shared/dist/sweepfamilies.d.ts +56 -0
  482. package/node_modules/@waterplane/shared/dist/sweepfamilies.js +140 -0
  483. package/node_modules/@waterplane/shared/dist/sweepfamilies.js.map +1 -0
  484. package/node_modules/@waterplane/shared/dist/termpalette.d.ts +17 -0
  485. package/node_modules/@waterplane/shared/dist/termpalette.js +5 -0
  486. package/node_modules/@waterplane/shared/dist/termpalette.js.map +1 -0
  487. package/node_modules/@waterplane/shared/dist/themeoverlay.d.ts +111 -0
  488. package/node_modules/@waterplane/shared/dist/themeoverlay.js +328 -0
  489. package/node_modules/@waterplane/shared/dist/themeoverlay.js.map +1 -0
  490. package/node_modules/@waterplane/shared/dist/tokens.d.ts +198 -0
  491. package/node_modules/@waterplane/shared/dist/tokens.js +320 -0
  492. package/node_modules/@waterplane/shared/dist/tokens.js.map +1 -0
  493. package/node_modules/@waterplane/shared/dist/transcriptfold.d.ts +50 -0
  494. package/node_modules/@waterplane/shared/dist/transcriptfold.js +87 -0
  495. package/node_modules/@waterplane/shared/dist/transcriptfold.js.map +1 -0
  496. package/node_modules/@waterplane/shared/dist/urls.d.ts +53 -0
  497. package/node_modules/@waterplane/shared/dist/urls.js +150 -0
  498. package/node_modules/@waterplane/shared/dist/urls.js.map +1 -0
  499. package/node_modules/@waterplane/shared/dist/usagesources.d.ts +88 -0
  500. package/node_modules/@waterplane/shared/dist/usagesources.js +198 -0
  501. package/node_modules/@waterplane/shared/dist/usagesources.js.map +1 -0
  502. package/node_modules/@waterplane/shared/dist/weekburn.d.ts +114 -0
  503. package/node_modules/@waterplane/shared/dist/weekburn.js +205 -0
  504. package/node_modules/@waterplane/shared/dist/weekburn.js.map +1 -0
  505. package/node_modules/@waterplane/shared/dist/windowadvice.d.ts +7 -0
  506. package/node_modules/@waterplane/shared/dist/windowadvice.js +50 -0
  507. package/node_modules/@waterplane/shared/dist/windowadvice.js.map +1 -0
  508. package/node_modules/@waterplane/shared/dist/wire/alwayson.d.ts +64 -0
  509. package/node_modules/@waterplane/shared/dist/wire/alwayson.js +7 -0
  510. package/node_modules/@waterplane/shared/dist/wire/alwayson.js.map +1 -0
  511. package/node_modules/@waterplane/shared/dist/wire/backend.d.ts +227 -0
  512. package/node_modules/@waterplane/shared/dist/wire/backend.js +18 -0
  513. package/node_modules/@waterplane/shared/dist/wire/backend.js.map +1 -0
  514. package/node_modules/@waterplane/shared/dist/wire/backendtokens.d.ts +105 -0
  515. package/node_modules/@waterplane/shared/dist/wire/backendtokens.js +2 -0
  516. package/node_modules/@waterplane/shared/dist/wire/backendtokens.js.map +1 -0
  517. package/node_modules/@waterplane/shared/dist/wire/capture.d.ts +380 -0
  518. package/node_modules/@waterplane/shared/dist/wire/capture.js +46 -0
  519. package/node_modules/@waterplane/shared/dist/wire/capture.js.map +1 -0
  520. package/node_modules/@waterplane/shared/dist/wire/costwindow.d.ts +163 -0
  521. package/node_modules/@waterplane/shared/dist/wire/costwindow.js +16 -0
  522. package/node_modules/@waterplane/shared/dist/wire/costwindow.js.map +1 -0
  523. package/node_modules/@waterplane/shared/dist/wire/install.d.ts +172 -0
  524. package/node_modules/@waterplane/shared/dist/wire/install.js +30 -0
  525. package/node_modules/@waterplane/shared/dist/wire/install.js.map +1 -0
  526. package/node_modules/@waterplane/shared/dist/wire/intent.d.ts +187 -0
  527. package/node_modules/@waterplane/shared/dist/wire/intent.js +2 -0
  528. package/node_modules/@waterplane/shared/dist/wire/intent.js.map +1 -0
  529. package/node_modules/@waterplane/shared/dist/wire/localrt.d.ts +78 -0
  530. package/node_modules/@waterplane/shared/dist/wire/localrt.js +21 -0
  531. package/node_modules/@waterplane/shared/dist/wire/localrt.js.map +1 -0
  532. package/node_modules/@waterplane/shared/dist/wire/localusage.d.ts +121 -0
  533. package/node_modules/@waterplane/shared/dist/wire/localusage.js +23 -0
  534. package/node_modules/@waterplane/shared/dist/wire/localusage.js.map +1 -0
  535. package/node_modules/@waterplane/shared/dist/wire/messages/clientbacklog.d.ts +177 -0
  536. package/node_modules/@waterplane/shared/dist/wire/messages/clientbacklog.js +3 -0
  537. package/node_modules/@waterplane/shared/dist/wire/messages/clientbacklog.js.map +1 -0
  538. package/node_modules/@waterplane/shared/dist/wire/messages/clienthost.d.ts +358 -0
  539. package/node_modules/@waterplane/shared/dist/wire/messages/clienthost.js +3 -0
  540. package/node_modules/@waterplane/shared/dist/wire/messages/clienthost.js.map +1 -0
  541. package/node_modules/@waterplane/shared/dist/wire/messages/clientsession.d.ts +317 -0
  542. package/node_modules/@waterplane/shared/dist/wire/messages/clientsession.js +3 -0
  543. package/node_modules/@waterplane/shared/dist/wire/messages/clientsession.js.map +1 -0
  544. package/node_modules/@waterplane/shared/dist/wire/messages/clientupdates.d.ts +18 -0
  545. package/node_modules/@waterplane/shared/dist/wire/messages/clientupdates.js +5 -0
  546. package/node_modules/@waterplane/shared/dist/wire/messages/clientupdates.js.map +1 -0
  547. package/node_modules/@waterplane/shared/dist/wire/messages/clientwork.d.ts +478 -0
  548. package/node_modules/@waterplane/shared/dist/wire/messages/clientwork.js +3 -0
  549. package/node_modules/@waterplane/shared/dist/wire/messages/clientwork.js.map +1 -0
  550. package/node_modules/@waterplane/shared/dist/wire/messages/hostcore.d.ts +488 -0
  551. package/node_modules/@waterplane/shared/dist/wire/messages/hostcore.js +3 -0
  552. package/node_modules/@waterplane/shared/dist/wire/messages/hostcore.js.map +1 -0
  553. package/node_modules/@waterplane/shared/dist/wire/messages/hosttools.d.ts +348 -0
  554. package/node_modules/@waterplane/shared/dist/wire/messages/hosttools.js +3 -0
  555. package/node_modules/@waterplane/shared/dist/wire/messages/hosttools.js.map +1 -0
  556. package/node_modules/@waterplane/shared/dist/wire/messages/hostupdates.d.ts +16 -0
  557. package/node_modules/@waterplane/shared/dist/wire/messages/hostupdates.js +3 -0
  558. package/node_modules/@waterplane/shared/dist/wire/messages/hostupdates.js.map +1 -0
  559. package/node_modules/@waterplane/shared/dist/wire/messages.d.ts +25 -0
  560. package/node_modules/@waterplane/shared/dist/wire/messages.js +18 -0
  561. package/node_modules/@waterplane/shared/dist/wire/messages.js.map +1 -0
  562. package/node_modules/@waterplane/shared/dist/wire/notify.d.ts +273 -0
  563. package/node_modules/@waterplane/shared/dist/wire/notify.js +174 -0
  564. package/node_modules/@waterplane/shared/dist/wire/notify.js.map +1 -0
  565. package/node_modules/@waterplane/shared/dist/wire/notifylink.d.ts +36 -0
  566. package/node_modules/@waterplane/shared/dist/wire/notifylink.js +44 -0
  567. package/node_modules/@waterplane/shared/dist/wire/notifylink.js.map +1 -0
  568. package/node_modules/@waterplane/shared/dist/wire/onboard.d.ts +121 -0
  569. package/node_modules/@waterplane/shared/dist/wire/onboard.js +11 -0
  570. package/node_modules/@waterplane/shared/dist/wire/onboard.js.map +1 -0
  571. package/node_modules/@waterplane/shared/dist/wire/pullrequest.d.ts +42 -0
  572. package/node_modules/@waterplane/shared/dist/wire/pullrequest.js +2 -0
  573. package/node_modules/@waterplane/shared/dist/wire/pullrequest.js.map +1 -0
  574. package/node_modules/@waterplane/shared/dist/wire/repo.d.ts +575 -0
  575. package/node_modules/@waterplane/shared/dist/wire/repo.js +35 -0
  576. package/node_modules/@waterplane/shared/dist/wire/repo.js.map +1 -0
  577. package/node_modules/@waterplane/shared/dist/wire/sent.d.ts +129 -0
  578. package/node_modules/@waterplane/shared/dist/wire/sent.js +2 -0
  579. package/node_modules/@waterplane/shared/dist/wire/sent.js.map +1 -0
  580. package/node_modules/@waterplane/shared/dist/wire/session/archive.d.ts +286 -0
  581. package/node_modules/@waterplane/shared/dist/wire/session/archive.js +2 -0
  582. package/node_modules/@waterplane/shared/dist/wire/session/archive.js.map +1 -0
  583. package/node_modules/@waterplane/shared/dist/wire/session/context.d.ts +298 -0
  584. package/node_modules/@waterplane/shared/dist/wire/session/context.js +6 -0
  585. package/node_modules/@waterplane/shared/dist/wire/session/context.js.map +1 -0
  586. package/node_modules/@waterplane/shared/dist/wire/session/contextspark.d.ts +409 -0
  587. package/node_modules/@waterplane/shared/dist/wire/session/contextspark.js +2 -0
  588. package/node_modules/@waterplane/shared/dist/wire/session/contextspark.js.map +1 -0
  589. package/node_modules/@waterplane/shared/dist/wire/session/delivery.d.ts +114 -0
  590. package/node_modules/@waterplane/shared/dist/wire/session/delivery.js +2 -0
  591. package/node_modules/@waterplane/shared/dist/wire/session/delivery.js.map +1 -0
  592. package/node_modules/@waterplane/shared/dist/wire/session/info.d.ts +430 -0
  593. package/node_modules/@waterplane/shared/dist/wire/session/info.js +2 -0
  594. package/node_modules/@waterplane/shared/dist/wire/session/info.js.map +1 -0
  595. package/node_modules/@waterplane/shared/dist/wire/session/launch.d.ts +357 -0
  596. package/node_modules/@waterplane/shared/dist/wire/session/launch.js +2 -0
  597. package/node_modules/@waterplane/shared/dist/wire/session/launch.js.map +1 -0
  598. package/node_modules/@waterplane/shared/dist/wire/session/promptbox.d.ts +181 -0
  599. package/node_modules/@waterplane/shared/dist/wire/session/promptbox.js +2 -0
  600. package/node_modules/@waterplane/shared/dist/wire/session/promptbox.js.map +1 -0
  601. package/node_modules/@waterplane/shared/dist/wire/session.d.ts +16 -0
  602. package/node_modules/@waterplane/shared/dist/wire/session.js +10 -0
  603. package/node_modules/@waterplane/shared/dist/wire/session.js.map +1 -0
  604. package/node_modules/@waterplane/shared/dist/wire/slash.d.ts +31 -0
  605. package/node_modules/@waterplane/shared/dist/wire/slash.js +9 -0
  606. package/node_modules/@waterplane/shared/dist/wire/slash.js.map +1 -0
  607. package/node_modules/@waterplane/shared/dist/wire/sysstat.d.ts +226 -0
  608. package/node_modules/@waterplane/shared/dist/wire/sysstat.js +47 -0
  609. package/node_modules/@waterplane/shared/dist/wire/sysstat.js.map +1 -0
  610. package/node_modules/@waterplane/shared/dist/wire/telemetry.d.ts +649 -0
  611. package/node_modules/@waterplane/shared/dist/wire/telemetry.js +3 -0
  612. package/node_modules/@waterplane/shared/dist/wire/telemetry.js.map +1 -0
  613. package/node_modules/@waterplane/shared/dist/wire/transcript.d.ts +327 -0
  614. package/node_modules/@waterplane/shared/dist/wire/transcript.js +60 -0
  615. package/node_modules/@waterplane/shared/dist/wire/transcript.js.map +1 -0
  616. package/node_modules/@waterplane/shared/dist/wire/updates.d.ts +130 -0
  617. package/node_modules/@waterplane/shared/dist/wire/updates.js +52 -0
  618. package/node_modules/@waterplane/shared/dist/wire/updates.js.map +1 -0
  619. package/node_modules/@waterplane/shared/dist/wire/work.d.ts +712 -0
  620. package/node_modules/@waterplane/shared/dist/wire/work.js +22 -0
  621. package/node_modules/@waterplane/shared/dist/wire/work.js.map +1 -0
  622. package/node_modules/@waterplane/shared/dist/working.d.ts +70 -0
  623. package/node_modules/@waterplane/shared/dist/working.js +208 -0
  624. package/node_modules/@waterplane/shared/dist/working.js.map +1 -0
  625. package/node_modules/@waterplane/shared/package.json +17 -0
  626. package/npm-shrinkwrap.json +250 -0
  627. package/package.json +33 -6
  628. package/packages/extensions/copilot-usage/waterplane-plugin.json +9 -0
  629. package/packages/extensions/ocr/assets/deu.traineddata.gz +0 -0
  630. package/packages/extensions/ocr/assets/eng.traineddata.gz +0 -0
  631. package/packages/extensions/ocr/assets/manifest.json +44 -0
  632. package/packages/extensions/ocr/assets/tesseract-core-lstm.wasm.js +191 -0
  633. package/packages/extensions/ocr/assets/tesseract-core-simd-lstm.wasm.js +191 -0
  634. package/packages/extensions/ocr/assets/worker.min.js +3 -0
  635. package/packages/extensions/ocr/waterplane-plugin.json +11 -0
  636. package/packages/extensions/requirements/waterplane-plugin.json +9 -0
  637. package/packages/extensions/scorecard/waterplane-plugin.json +10 -0
  638. package/packages/extensions/token-stats/waterplane-plugin.json +8 -0
  639. package/packages/host/dist/acks.d.ts +119 -0
  640. package/packages/host/dist/acks.js +268 -0
  641. package/packages/host/dist/acks.js.map +1 -0
  642. package/packages/host/dist/agentexposure.d.ts +13 -0
  643. package/packages/host/dist/agentexposure.js +90 -0
  644. package/packages/host/dist/agentexposure.js.map +1 -0
  645. package/packages/host/dist/agentfollowup.d.ts +45 -0
  646. package/packages/host/dist/agentfollowup.js +77 -0
  647. package/packages/host/dist/agentfollowup.js.map +1 -0
  648. package/packages/host/dist/agentintents.d.ts +278 -0
  649. package/packages/host/dist/agentintents.js +509 -0
  650. package/packages/host/dist/agentintents.js.map +1 -0
  651. package/packages/host/dist/agents.d.ts +112 -0
  652. package/packages/host/dist/agents.js +517 -0
  653. package/packages/host/dist/agents.js.map +1 -0
  654. package/packages/host/dist/agentwatch.d.ts +38 -0
  655. package/packages/host/dist/agentwatch.js +35 -0
  656. package/packages/host/dist/agentwatch.js.map +1 -0
  657. package/packages/host/dist/alwayson.d.ts +18 -0
  658. package/packages/host/dist/alwayson.js +159 -0
  659. package/packages/host/dist/alwayson.js.map +1 -0
  660. package/packages/host/dist/androidenv.d.ts +80 -0
  661. package/packages/host/dist/androidenv.js +344 -0
  662. package/packages/host/dist/androidenv.js.map +1 -0
  663. package/packages/host/dist/answergate.d.ts +187 -0
  664. package/packages/host/dist/answergate.js +321 -0
  665. package/packages/host/dist/answergate.js.map +1 -0
  666. package/packages/host/dist/api.d.ts +19 -0
  667. package/packages/host/dist/api.js +62 -0
  668. package/packages/host/dist/api.js.map +1 -0
  669. package/packages/host/dist/apkcheck.d.ts +36 -0
  670. package/packages/host/dist/apkcheck.js +290 -0
  671. package/packages/host/dist/apkcheck.js.map +1 -0
  672. package/packages/host/dist/appready.d.ts +8 -0
  673. package/packages/host/dist/appready.js +16 -0
  674. package/packages/host/dist/appready.js.map +1 -0
  675. package/packages/host/dist/archive.d.ts +95 -0
  676. package/packages/host/dist/archive.js +318 -0
  677. package/packages/host/dist/archive.js.map +1 -0
  678. package/packages/host/dist/artifacts.d.ts +38 -0
  679. package/packages/host/dist/artifacts.js +315 -0
  680. package/packages/host/dist/artifacts.js.map +1 -0
  681. package/packages/host/dist/askbox.d.ts +116 -0
  682. package/packages/host/dist/askbox.js +341 -0
  683. package/packages/host/dist/askbox.js.map +1 -0
  684. package/packages/host/dist/askrules.d.ts +38 -0
  685. package/packages/host/dist/askrules.js +139 -0
  686. package/packages/host/dist/askrules.js.map +1 -0
  687. package/packages/host/dist/assess/hassapply.d.ts +127 -0
  688. package/packages/host/dist/assess/hassapply.js +482 -0
  689. package/packages/host/dist/assess/hassapply.js.map +1 -0
  690. package/packages/host/dist/assess/hassexec.d.ts +160 -0
  691. package/packages/host/dist/assess/hassexec.js +178 -0
  692. package/packages/host/dist/assess/hassexec.js.map +1 -0
  693. package/packages/host/dist/assess/hassinput.d.ts +80 -0
  694. package/packages/host/dist/assess/hassinput.js +264 -0
  695. package/packages/host/dist/assess/hassinput.js.map +1 -0
  696. package/packages/host/dist/assess/hassknobs.d.ts +66 -0
  697. package/packages/host/dist/assess/hassknobs.js +69 -0
  698. package/packages/host/dist/assess/hassknobs.js.map +1 -0
  699. package/packages/host/dist/assess/hassprogress.d.ts +30 -0
  700. package/packages/host/dist/assess/hassprogress.js +165 -0
  701. package/packages/host/dist/assess/hassprogress.js.map +1 -0
  702. package/packages/host/dist/assess/hassrun.d.ts +39 -0
  703. package/packages/host/dist/assess/hassrun.js +269 -0
  704. package/packages/host/dist/assess/hassrun.js.map +1 -0
  705. package/packages/host/dist/assess/hassstore.d.ts +77 -0
  706. package/packages/host/dist/assess/hassstore.js +187 -0
  707. package/packages/host/dist/assess/hassstore.js.map +1 -0
  708. package/packages/host/dist/assess/hassutil.d.ts +28 -0
  709. package/packages/host/dist/assess/hassutil.js +53 -0
  710. package/packages/host/dist/assess/hassutil.js.map +1 -0
  711. package/packages/host/dist/assess.d.ts +60 -0
  712. package/packages/host/dist/assess.js +58 -0
  713. package/packages/host/dist/assess.js.map +1 -0
  714. package/packages/host/dist/attentionstore.d.ts +61 -0
  715. package/packages/host/dist/attentionstore.js +162 -0
  716. package/packages/host/dist/attentionstore.js.map +1 -0
  717. package/packages/host/dist/auth.d.ts +93 -0
  718. package/packages/host/dist/auth.js +276 -0
  719. package/packages/host/dist/auth.js.map +1 -0
  720. package/packages/host/dist/authroutes.d.ts +36 -0
  721. package/packages/host/dist/authroutes.js +108 -0
  722. package/packages/host/dist/authroutes.js.map +1 -0
  723. package/packages/host/dist/autopull.d.ts +107 -0
  724. package/packages/host/dist/autopull.js +248 -0
  725. package/packages/host/dist/autopull.js.map +1 -0
  726. package/packages/host/dist/backends/claude-endpoint.d.ts +98 -0
  727. package/packages/host/dist/backends/claude-endpoint.js +347 -0
  728. package/packages/host/dist/backends/claude-endpoint.js.map +1 -0
  729. package/packages/host/dist/backends/claude-local.d.ts +51 -0
  730. package/packages/host/dist/backends/claude-local.js +221 -0
  731. package/packages/host/dist/backends/claude-local.js.map +1 -0
  732. package/packages/host/dist/backends/claude-sources.d.ts +53 -0
  733. package/packages/host/dist/backends/claude-sources.js +68 -0
  734. package/packages/host/dist/backends/claude-sources.js.map +1 -0
  735. package/packages/host/dist/backends/claude.d.ts +45 -0
  736. package/packages/host/dist/backends/claude.js +248 -0
  737. package/packages/host/dist/backends/claude.js.map +1 -0
  738. package/packages/host/dist/backends/claudemodels.d.ts +19 -0
  739. package/packages/host/dist/backends/claudemodels.js +122 -0
  740. package/packages/host/dist/backends/claudemodels.js.map +1 -0
  741. package/packages/host/dist/backends/derive.d.ts +81 -0
  742. package/packages/host/dist/backends/derive.js +199 -0
  743. package/packages/host/dist/backends/derive.js.map +1 -0
  744. package/packages/host/dist/backends/index.d.ts +138 -0
  745. package/packages/host/dist/backends/index.js +328 -0
  746. package/packages/host/dist/backends/index.js.map +1 -0
  747. package/packages/host/dist/backends/overhead.d.ts +16 -0
  748. package/packages/host/dist/backends/overhead.js +124 -0
  749. package/packages/host/dist/backends/overhead.js.map +1 -0
  750. package/packages/host/dist/backends/readers.d.ts +57 -0
  751. package/packages/host/dist/backends/readers.js +74 -0
  752. package/packages/host/dist/backends/readers.js.map +1 -0
  753. package/packages/host/dist/backends/registry.d.ts +37 -0
  754. package/packages/host/dist/backends/registry.js +76 -0
  755. package/packages/host/dist/backends/registry.js.map +1 -0
  756. package/packages/host/dist/backends/shell.d.ts +31 -0
  757. package/packages/host/dist/backends/shell.js +127 -0
  758. package/packages/host/dist/backends/shell.js.map +1 -0
  759. package/packages/host/dist/backends/types.d.ts +459 -0
  760. package/packages/host/dist/backends/types.js +2 -0
  761. package/packages/host/dist/backends/types.js.map +1 -0
  762. package/packages/host/dist/backlog/backlogcore.d.ts +36 -0
  763. package/packages/host/dist/backlog/backlogcore.js +2 -0
  764. package/packages/host/dist/backlog/backlogcore.js.map +1 -0
  765. package/packages/host/dist/backlog/backlogedits.d.ts +96 -0
  766. package/packages/host/dist/backlog/backlogedits.js +229 -0
  767. package/packages/host/dist/backlog/backlogedits.js.map +1 -0
  768. package/packages/host/dist/backlog/backlogfollowup.d.ts +7 -0
  769. package/packages/host/dist/backlog/backlogfollowup.js +71 -0
  770. package/packages/host/dist/backlog/backlogfollowup.js.map +1 -0
  771. package/packages/host/dist/backlog/backlogknobs.d.ts +56 -0
  772. package/packages/host/dist/backlog/backlogknobs.js +62 -0
  773. package/packages/host/dist/backlog/backlogknobs.js.map +1 -0
  774. package/packages/host/dist/backlog/backlogsessions.d.ts +217 -0
  775. package/packages/host/dist/backlog/backlogsessions.js +421 -0
  776. package/packages/host/dist/backlog/backlogsessions.js.map +1 -0
  777. package/packages/host/dist/backlog/backlogstore.d.ts +31 -0
  778. package/packages/host/dist/backlog/backlogstore.js +101 -0
  779. package/packages/host/dist/backlog/backlogstore.js.map +1 -0
  780. package/packages/host/dist/backlog/backlogtitles.d.ts +40 -0
  781. package/packages/host/dist/backlog/backlogtitles.js +50 -0
  782. package/packages/host/dist/backlog/backlogtitles.js.map +1 -0
  783. package/packages/host/dist/backlog/backlogwording.d.ts +31 -0
  784. package/packages/host/dist/backlog/backlogwording.js +42 -0
  785. package/packages/host/dist/backlog/backlogwording.js.map +1 -0
  786. package/packages/host/dist/backlog.d.ts +142 -0
  787. package/packages/host/dist/backlog.js +96 -0
  788. package/packages/host/dist/backlog.js.map +1 -0
  789. package/packages/host/dist/besidespend.d.ts +22 -0
  790. package/packages/host/dist/besidespend.js +65 -0
  791. package/packages/host/dist/besidespend.js.map +1 -0
  792. package/packages/host/dist/billing.d.ts +53 -0
  793. package/packages/host/dist/billing.js +140 -0
  794. package/packages/host/dist/billing.js.map +1 -0
  795. package/packages/host/dist/binguard.d.ts +28 -0
  796. package/packages/host/dist/binguard.js +88 -0
  797. package/packages/host/dist/binguard.js.map +1 -0
  798. package/packages/host/dist/bookmarks.d.ts +24 -0
  799. package/packages/host/dist/bookmarks.js +118 -0
  800. package/packages/host/dist/bookmarks.js.map +1 -0
  801. package/packages/host/dist/boxkit.d.ts +19 -0
  802. package/packages/host/dist/boxkit.js +38 -0
  803. package/packages/host/dist/boxkit.js.map +1 -0
  804. package/packages/host/dist/branchrules.d.ts +14 -0
  805. package/packages/host/dist/branchrules.js +47 -0
  806. package/packages/host/dist/branchrules.js.map +1 -0
  807. package/packages/host/dist/branddirs.d.ts +223 -0
  808. package/packages/host/dist/branddirs.js +828 -0
  809. package/packages/host/dist/branddirs.js.map +1 -0
  810. package/packages/host/dist/budget.d.ts +57 -0
  811. package/packages/host/dist/budget.js +153 -0
  812. package/packages/host/dist/budget.js.map +1 -0
  813. package/packages/host/dist/builds.d.ts +208 -0
  814. package/packages/host/dist/builds.js +697 -0
  815. package/packages/host/dist/builds.js.map +1 -0
  816. package/packages/host/dist/buildscan.d.ts +16 -0
  817. package/packages/host/dist/buildscan.js +177 -0
  818. package/packages/host/dist/buildscan.js.map +1 -0
  819. package/packages/host/dist/buildversions.d.ts +2 -0
  820. package/packages/host/dist/buildversions.js +36 -0
  821. package/packages/host/dist/buildversions.js.map +1 -0
  822. package/packages/host/dist/burnwatch.d.ts +65 -0
  823. package/packages/host/dist/burnwatch.js +190 -0
  824. package/packages/host/dist/burnwatch.js.map +1 -0
  825. package/packages/host/dist/capture/android.d.ts +2 -0
  826. package/packages/host/dist/capture/android.js +144 -0
  827. package/packages/host/dist/capture/android.js.map +1 -0
  828. package/packages/host/dist/capture/captureconfig.d.ts +44 -0
  829. package/packages/host/dist/capture/captureconfig.js +169 -0
  830. package/packages/host/dist/capture/captureconfig.js.map +1 -0
  831. package/packages/host/dist/capture/capturehelpers.d.ts +34 -0
  832. package/packages/host/dist/capture/capturehelpers.js +156 -0
  833. package/packages/host/dist/capture/capturehelpers.js.map +1 -0
  834. package/packages/host/dist/capture/capturekit.d.ts +32 -0
  835. package/packages/host/dist/capture/capturekit.js +47 -0
  836. package/packages/host/dist/capture/capturekit.js.map +1 -0
  837. package/packages/host/dist/capture/capturepass.d.ts +17 -0
  838. package/packages/host/dist/capture/capturepass.js +262 -0
  839. package/packages/host/dist/capture/capturepass.js.map +1 -0
  840. package/packages/host/dist/capture/capturesettle.d.ts +35 -0
  841. package/packages/host/dist/capture/capturesettle.js +77 -0
  842. package/packages/host/dist/capture/capturesettle.js.map +1 -0
  843. package/packages/host/dist/capture/captureverdict.d.ts +132 -0
  844. package/packages/host/dist/capture/captureverdict.js +107 -0
  845. package/packages/host/dist/capture/captureverdict.js.map +1 -0
  846. package/packages/host/dist/capture/garmin.d.ts +2 -0
  847. package/packages/host/dist/capture/garmin.js +294 -0
  848. package/packages/host/dist/capture/garmin.js.map +1 -0
  849. package/packages/host/dist/capture/pixels.d.ts +60 -0
  850. package/packages/host/dist/capture/pixels.js +199 -0
  851. package/packages/host/dist/capture/pixels.js.map +1 -0
  852. package/packages/host/dist/capture/types.d.ts +195 -0
  853. package/packages/host/dist/capture/types.js +2 -0
  854. package/packages/host/dist/capture/types.js.map +1 -0
  855. package/packages/host/dist/capture/web.d.ts +2 -0
  856. package/packages/host/dist/capture/web.js +290 -0
  857. package/packages/host/dist/capture/web.js.map +1 -0
  858. package/packages/host/dist/capture/window.d.ts +2 -0
  859. package/packages/host/dist/capture/window.js +88 -0
  860. package/packages/host/dist/capture/window.js.map +1 -0
  861. package/packages/host/dist/capture.d.ts +116 -0
  862. package/packages/host/dist/capture.js +295 -0
  863. package/packages/host/dist/capture.js.map +1 -0
  864. package/packages/host/dist/changebrief.d.ts +37 -0
  865. package/packages/host/dist/changebrief.js +157 -0
  866. package/packages/host/dist/changebrief.js.map +1 -0
  867. package/packages/host/dist/claudebin.d.ts +32 -0
  868. package/packages/host/dist/claudebin.js +113 -0
  869. package/packages/host/dist/claudebin.js.map +1 -0
  870. package/packages/host/dist/claudeconfig.d.ts +23 -0
  871. package/packages/host/dist/claudeconfig.js +118 -0
  872. package/packages/host/dist/claudeconfig.js.map +1 -0
  873. package/packages/host/dist/cli/entry.d.ts +1 -0
  874. package/packages/host/dist/cli/entry.js +11 -0
  875. package/packages/host/dist/cli/entry.js.map +1 -0
  876. package/packages/host/dist/cli/index.d.ts +12 -0
  877. package/packages/host/dist/cli/index.js +122 -0
  878. package/packages/host/dist/cli/index.js.map +1 -0
  879. package/packages/host/dist/cli/pair.d.ts +28 -0
  880. package/packages/host/dist/cli/pair.js +94 -0
  881. package/packages/host/dist/cli/pair.js.map +1 -0
  882. package/packages/host/dist/cli/releasesig.d.ts +42 -0
  883. package/packages/host/dist/cli/releasesig.js +60 -0
  884. package/packages/host/dist/cli/releasesig.js.map +1 -0
  885. package/packages/host/dist/cli/selfupdate.d.ts +96 -0
  886. package/packages/host/dist/cli/selfupdate.js +842 -0
  887. package/packages/host/dist/cli/selfupdate.js.map +1 -0
  888. package/packages/host/dist/cli/service.d.ts +100 -0
  889. package/packages/host/dist/cli/service.js +645 -0
  890. package/packages/host/dist/cli/service.js.map +1 -0
  891. package/packages/host/dist/cli/statesnap.d.ts +34 -0
  892. package/packages/host/dist/cli/statesnap.js +135 -0
  893. package/packages/host/dist/cli/statesnap.js.map +1 -0
  894. package/packages/host/dist/cli/windows.d.ts +191 -0
  895. package/packages/host/dist/cli/windows.js +658 -0
  896. package/packages/host/dist/cli/windows.js.map +1 -0
  897. package/packages/host/dist/clifixtures.d.ts +28 -0
  898. package/packages/host/dist/clifixtures.js +193 -0
  899. package/packages/host/dist/clifixtures.js.map +1 -0
  900. package/packages/host/dist/clihealth.d.ts +123 -0
  901. package/packages/host/dist/clihealth.js +310 -0
  902. package/packages/host/dist/clihealth.js.map +1 -0
  903. package/packages/host/dist/clisuggest.d.ts +13 -0
  904. package/packages/host/dist/clisuggest.js +54 -0
  905. package/packages/host/dist/clisuggest.js.map +1 -0
  906. package/packages/host/dist/commitmsg.d.ts +17 -0
  907. package/packages/host/dist/commitmsg.js +98 -0
  908. package/packages/host/dist/commitmsg.js.map +1 -0
  909. package/packages/host/dist/compliance.d.ts +125 -0
  910. package/packages/host/dist/compliance.js +866 -0
  911. package/packages/host/dist/compliance.js.map +1 -0
  912. package/packages/host/dist/composer.d.ts +227 -0
  913. package/packages/host/dist/composer.js +455 -0
  914. package/packages/host/dist/composer.js.map +1 -0
  915. package/packages/host/dist/confirmgate.d.ts +34 -0
  916. package/packages/host/dist/confirmgate.js +114 -0
  917. package/packages/host/dist/confirmgate.js.map +1 -0
  918. package/packages/host/dist/context.d.ts +22 -0
  919. package/packages/host/dist/context.js +92 -0
  920. package/packages/host/dist/context.js.map +1 -0
  921. package/packages/host/dist/contextlimits.d.ts +31 -0
  922. package/packages/host/dist/contextlimits.js +128 -0
  923. package/packages/host/dist/contextlimits.js.map +1 -0
  924. package/packages/host/dist/convfork.d.ts +67 -0
  925. package/packages/host/dist/convfork.js +372 -0
  926. package/packages/host/dist/convfork.js.map +1 -0
  927. package/packages/host/dist/convlog.d.ts +40 -0
  928. package/packages/host/dist/convlog.js +52 -0
  929. package/packages/host/dist/convlog.js.map +1 -0
  930. package/packages/host/dist/costwindow.d.ts +77 -0
  931. package/packages/host/dist/costwindow.js +333 -0
  932. package/packages/host/dist/costwindow.js.map +1 -0
  933. package/packages/host/dist/ctxlog/ctxagents.d.ts +179 -0
  934. package/packages/host/dist/ctxlog/ctxagents.js +419 -0
  935. package/packages/host/dist/ctxlog/ctxagents.js.map +1 -0
  936. package/packages/host/dist/ctxlog/ctxcursor.d.ts +334 -0
  937. package/packages/host/dist/ctxlog/ctxcursor.js +257 -0
  938. package/packages/host/dist/ctxlog/ctxcursor.js.map +1 -0
  939. package/packages/host/dist/ctxlog/ctxproject.d.ts +49 -0
  940. package/packages/host/dist/ctxlog/ctxproject.js +199 -0
  941. package/packages/host/dist/ctxlog/ctxproject.js.map +1 -0
  942. package/packages/host/dist/ctxlog/ctxupdate.d.ts +11 -0
  943. package/packages/host/dist/ctxlog/ctxupdate.js +349 -0
  944. package/packages/host/dist/ctxlog/ctxupdate.js.map +1 -0
  945. package/packages/host/dist/ctxlog.d.ts +56 -0
  946. package/packages/host/dist/ctxlog.js +57 -0
  947. package/packages/host/dist/ctxlog.js.map +1 -0
  948. package/packages/host/dist/ctxwindow.d.ts +17 -0
  949. package/packages/host/dist/ctxwindow.js +106 -0
  950. package/packages/host/dist/ctxwindow.js.map +1 -0
  951. package/packages/host/dist/decisionlog.d.ts +29 -0
  952. package/packages/host/dist/decisionlog.js +167 -0
  953. package/packages/host/dist/decisionlog.js.map +1 -0
  954. package/packages/host/dist/deliver/deliverknobs.d.ts +84 -0
  955. package/packages/host/dist/deliver/deliverknobs.js +85 -0
  956. package/packages/host/dist/deliver/deliverknobs.js.map +1 -0
  957. package/packages/host/dist/deliver/deliverproof.d.ts +25 -0
  958. package/packages/host/dist/deliver/deliverproof.js +123 -0
  959. package/packages/host/dist/deliver/deliverproof.js.map +1 -0
  960. package/packages/host/dist/deliver/deliverreturn.d.ts +12 -0
  961. package/packages/host/dist/deliver/deliverreturn.js +365 -0
  962. package/packages/host/dist/deliver/deliverreturn.js.map +1 -0
  963. package/packages/host/dist/deliver/deliverrun.d.ts +20 -0
  964. package/packages/host/dist/deliver/deliverrun.js +495 -0
  965. package/packages/host/dist/deliver/deliverrun.js.map +1 -0
  966. package/packages/host/dist/deliver/deliverscreen.d.ts +67 -0
  967. package/packages/host/dist/deliver/deliverscreen.js +428 -0
  968. package/packages/host/dist/deliver/deliverscreen.js.map +1 -0
  969. package/packages/host/dist/deliver/delivertypes.d.ts +119 -0
  970. package/packages/host/dist/deliver/delivertypes.js +2 -0
  971. package/packages/host/dist/deliver/delivertypes.js.map +1 -0
  972. package/packages/host/dist/deliver.d.ts +50 -0
  973. package/packages/host/dist/deliver.js +142 -0
  974. package/packages/host/dist/deliver.js.map +1 -0
  975. package/packages/host/dist/deviceledger.d.ts +33 -0
  976. package/packages/host/dist/deviceledger.js +143 -0
  977. package/packages/host/dist/deviceledger.js.map +1 -0
  978. package/packages/host/dist/dictate.d.ts +142 -0
  979. package/packages/host/dist/dictate.js +419 -0
  980. package/packages/host/dist/dictate.js.map +1 -0
  981. package/packages/host/dist/discover.d.ts +20 -0
  982. package/packages/host/dist/discover.js +162 -0
  983. package/packages/host/dist/discover.js.map +1 -0
  984. package/packages/host/dist/diskwatch.d.ts +37 -0
  985. package/packages/host/dist/diskwatch.js +113 -0
  986. package/packages/host/dist/diskwatch.js.map +1 -0
  987. package/packages/host/dist/doctor.d.ts +153 -0
  988. package/packages/host/dist/doctor.js +748 -0
  989. package/packages/host/dist/doctor.js.map +1 -0
  990. package/packages/host/dist/doctorclaude.d.ts +33 -0
  991. package/packages/host/dist/doctorclaude.js +128 -0
  992. package/packages/host/dist/doctorclaude.js.map +1 -0
  993. package/packages/host/dist/doctormac.d.ts +47 -0
  994. package/packages/host/dist/doctormac.js +81 -0
  995. package/packages/host/dist/doctormac.js.map +1 -0
  996. package/packages/host/dist/doctorproc.d.ts +11 -0
  997. package/packages/host/dist/doctorproc.js +36 -0
  998. package/packages/host/dist/doctorproc.js.map +1 -0
  999. package/packages/host/dist/doctorwsl.d.ts +90 -0
  1000. package/packages/host/dist/doctorwsl.js +205 -0
  1001. package/packages/host/dist/doctorwsl.js.map +1 -0
  1002. package/packages/host/dist/echo.d.ts +331 -0
  1003. package/packages/host/dist/echo.js +439 -0
  1004. package/packages/host/dist/echo.js.map +1 -0
  1005. package/packages/host/dist/env.d.ts +16 -0
  1006. package/packages/host/dist/env.js +190 -0
  1007. package/packages/host/dist/env.js.map +1 -0
  1008. package/packages/host/dist/envfiles.d.ts +5 -0
  1009. package/packages/host/dist/envfiles.js +43 -0
  1010. package/packages/host/dist/envfiles.js.map +1 -0
  1011. package/packages/host/dist/eraseen.d.ts +6 -0
  1012. package/packages/host/dist/eraseen.js +100 -0
  1013. package/packages/host/dist/eraseen.js.map +1 -0
  1014. package/packages/host/dist/exposure.d.ts +56 -0
  1015. package/packages/host/dist/exposure.js +371 -0
  1016. package/packages/host/dist/exposure.js.map +1 -0
  1017. package/packages/host/dist/exposurepush.d.ts +28 -0
  1018. package/packages/host/dist/exposurepush.js +136 -0
  1019. package/packages/host/dist/exposurepush.js.map +1 -0
  1020. package/packages/host/dist/exposurerun.d.ts +18 -0
  1021. package/packages/host/dist/exposurerun.js +126 -0
  1022. package/packages/host/dist/exposurerun.js.map +1 -0
  1023. package/packages/host/dist/exposurewatch.d.ts +29 -0
  1024. package/packages/host/dist/exposurewatch.js +127 -0
  1025. package/packages/host/dist/exposurewatch.js.map +1 -0
  1026. package/packages/host/dist/extensions/copilot-usage/host/ghquota.d.mts +17 -0
  1027. package/packages/host/dist/extensions/copilot-usage/host/ghquota.mjs +96 -0
  1028. package/packages/host/dist/extensions/copilot-usage/host/ghquota.mjs.map +1 -0
  1029. package/packages/host/dist/extensions/copilot-usage/host/index.d.mts +17 -0
  1030. package/packages/host/dist/extensions/copilot-usage/host/index.mjs +102 -0
  1031. package/packages/host/dist/extensions/copilot-usage/host/index.mjs.map +1 -0
  1032. package/packages/host/dist/extensions/copilot-usage/host/vscodelocal.d.mts +90 -0
  1033. package/packages/host/dist/extensions/copilot-usage/host/vscodelocal.mjs +365 -0
  1034. package/packages/host/dist/extensions/copilot-usage/host/vscodelocal.mjs.map +1 -0
  1035. package/packages/host/dist/extensions/ocr/host/index.d.mts +10 -0
  1036. package/packages/host/dist/extensions/ocr/host/index.mjs +4 -0
  1037. package/packages/host/dist/extensions/ocr/host/index.mjs.map +1 -0
  1038. package/packages/host/dist/extensions/requirements/host/index.d.mts +2 -0
  1039. package/packages/host/dist/extensions/requirements/host/index.mjs +63 -0
  1040. package/packages/host/dist/extensions/requirements/host/index.mjs.map +1 -0
  1041. package/packages/host/dist/extensions/requirements/host/list.d.mts +17 -0
  1042. package/packages/host/dist/extensions/requirements/host/list.mjs +125 -0
  1043. package/packages/host/dist/extensions/requirements/host/list.mjs.map +1 -0
  1044. package/packages/host/dist/extensions/requirements/host/requirements.d.mts +31 -0
  1045. package/packages/host/dist/extensions/requirements/host/requirements.mjs +318 -0
  1046. package/packages/host/dist/extensions/requirements/host/requirements.mjs.map +1 -0
  1047. package/packages/host/dist/extensions/requirements/shared/methods.d.mts +88 -0
  1048. package/packages/host/dist/extensions/requirements/shared/methods.mjs +36 -0
  1049. package/packages/host/dist/extensions/requirements/shared/methods.mjs.map +1 -0
  1050. package/packages/host/dist/extensions/scorecard/host/engine.d.mts +54 -0
  1051. package/packages/host/dist/extensions/scorecard/host/engine.mjs +303 -0
  1052. package/packages/host/dist/extensions/scorecard/host/engine.mjs.map +1 -0
  1053. package/packages/host/dist/extensions/scorecard/host/gitslug.d.mts +5 -0
  1054. package/packages/host/dist/extensions/scorecard/host/gitslug.mjs +45 -0
  1055. package/packages/host/dist/extensions/scorecard/host/gitslug.mjs.map +1 -0
  1056. package/packages/host/dist/extensions/scorecard/host/index.d.mts +15 -0
  1057. package/packages/host/dist/extensions/scorecard/host/index.mjs +47 -0
  1058. package/packages/host/dist/extensions/scorecard/host/index.mjs.map +1 -0
  1059. package/packages/host/dist/extensions/scorecard/host/store.d.mts +12 -0
  1060. package/packages/host/dist/extensions/scorecard/host/store.mjs +91 -0
  1061. package/packages/host/dist/extensions/scorecard/host/store.mjs.map +1 -0
  1062. package/packages/host/dist/extensions/scorecard/shared/logic.d.mts +42 -0
  1063. package/packages/host/dist/extensions/scorecard/shared/logic.mjs +170 -0
  1064. package/packages/host/dist/extensions/scorecard/shared/logic.mjs.map +1 -0
  1065. package/packages/host/dist/extensions/scorecard/shared/wire.d.mts +140 -0
  1066. package/packages/host/dist/extensions/scorecard/shared/wire.mjs +29 -0
  1067. package/packages/host/dist/extensions/scorecard/shared/wire.mjs.map +1 -0
  1068. package/packages/host/dist/fanout.d.ts +89 -0
  1069. package/packages/host/dist/fanout.js +273 -0
  1070. package/packages/host/dist/fanout.js.map +1 -0
  1071. package/packages/host/dist/files.d.ts +211 -0
  1072. package/packages/host/dist/files.js +760 -0
  1073. package/packages/host/dist/files.js.map +1 -0
  1074. package/packages/host/dist/forge/github.d.ts +3 -0
  1075. package/packages/host/dist/forge/github.js +82 -0
  1076. package/packages/host/dist/forge/github.js.map +1 -0
  1077. package/packages/host/dist/forge/index.d.ts +14 -0
  1078. package/packages/host/dist/forge/index.js +32 -0
  1079. package/packages/host/dist/forge/index.js.map +1 -0
  1080. package/packages/host/dist/forge/types.d.ts +52 -0
  1081. package/packages/host/dist/forge/types.js +2 -0
  1082. package/packages/host/dist/forge/types.js.map +1 -0
  1083. package/packages/host/dist/git.d.ts +294 -0
  1084. package/packages/host/dist/git.js +865 -0
  1085. package/packages/host/dist/git.js.map +1 -0
  1086. package/packages/host/dist/gitlog.d.ts +14 -0
  1087. package/packages/host/dist/gitlog.js +93 -0
  1088. package/packages/host/dist/gitlog.js.map +1 -0
  1089. package/packages/host/dist/gitnotify.d.ts +24 -0
  1090. package/packages/host/dist/gitnotify.js +60 -0
  1091. package/packages/host/dist/gitnotify.js.map +1 -0
  1092. package/packages/host/dist/halt.d.ts +35 -0
  1093. package/packages/host/dist/halt.js +160 -0
  1094. package/packages/host/dist/halt.js.map +1 -0
  1095. package/packages/host/dist/healthwatch.d.ts +91 -0
  1096. package/packages/host/dist/healthwatch.js +336 -0
  1097. package/packages/host/dist/healthwatch.js.map +1 -0
  1098. package/packages/host/dist/host.d.ts +51 -0
  1099. package/packages/host/dist/host.js +153 -0
  1100. package/packages/host/dist/host.js.map +1 -0
  1101. package/packages/host/dist/hoststore.d.ts +24 -0
  1102. package/packages/host/dist/hoststore.js +350 -0
  1103. package/packages/host/dist/hoststore.js.map +1 -0
  1104. package/packages/host/dist/httpio.d.ts +64 -0
  1105. package/packages/host/dist/httpio.js +199 -0
  1106. package/packages/host/dist/httpio.js.map +1 -0
  1107. package/packages/host/dist/installlog.d.ts +25 -0
  1108. package/packages/host/dist/installlog.js +137 -0
  1109. package/packages/host/dist/installlog.js.map +1 -0
  1110. package/packages/host/dist/intents/adapters.d.ts +285 -0
  1111. package/packages/host/dist/intents/adapters.js +721 -0
  1112. package/packages/host/dist/intents/adapters.js.map +1 -0
  1113. package/packages/host/dist/intents/clock.d.ts +105 -0
  1114. package/packages/host/dist/intents/clock.js +190 -0
  1115. package/packages/host/dist/intents/clock.js.map +1 -0
  1116. package/packages/host/dist/intents/contract.d.ts +492 -0
  1117. package/packages/host/dist/intents/contract.js +155 -0
  1118. package/packages/host/dist/intents/contract.js.map +1 -0
  1119. package/packages/host/dist/intents/disk.d.ts +198 -0
  1120. package/packages/host/dist/intents/disk.js +588 -0
  1121. package/packages/host/dist/intents/disk.js.map +1 -0
  1122. package/packages/host/dist/intents/fire.d.ts +112 -0
  1123. package/packages/host/dist/intents/fire.js +551 -0
  1124. package/packages/host/dist/intents/fire.js.map +1 -0
  1125. package/packages/host/dist/intents/ladder.d.ts +7 -0
  1126. package/packages/host/dist/intents/ladder.js +408 -0
  1127. package/packages/host/dist/intents/ladder.js.map +1 -0
  1128. package/packages/host/dist/intents/manager.d.ts +239 -0
  1129. package/packages/host/dist/intents/manager.js +292 -0
  1130. package/packages/host/dist/intents/manager.js.map +1 -0
  1131. package/packages/host/dist/intents/requeue.d.ts +207 -0
  1132. package/packages/host/dist/intents/requeue.js +521 -0
  1133. package/packages/host/dist/intents/requeue.js.map +1 -0
  1134. package/packages/host/dist/intents/watch.d.ts +100 -0
  1135. package/packages/host/dist/intents/watch.js +489 -0
  1136. package/packages/host/dist/intents/watch.js.map +1 -0
  1137. package/packages/host/dist/intents/write.d.ts +238 -0
  1138. package/packages/host/dist/intents/write.js +651 -0
  1139. package/packages/host/dist/intents/write.js.map +1 -0
  1140. package/packages/host/dist/jsonstore.d.ts +50 -0
  1141. package/packages/host/dist/jsonstore.js +158 -0
  1142. package/packages/host/dist/jsonstore.js.map +1 -0
  1143. package/packages/host/dist/keyhints.d.ts +45 -0
  1144. package/packages/host/dist/keyhints.js +117 -0
  1145. package/packages/host/dist/keyhints.js.map +1 -0
  1146. package/packages/host/dist/lanid.d.ts +21 -0
  1147. package/packages/host/dist/lanid.js +78 -0
  1148. package/packages/host/dist/lanid.js.map +1 -0
  1149. package/packages/host/dist/launchfiles.d.ts +64 -0
  1150. package/packages/host/dist/launchfiles.js +212 -0
  1151. package/packages/host/dist/launchfiles.js.map +1 -0
  1152. package/packages/host/dist/limit.d.ts +82 -0
  1153. package/packages/host/dist/limit.js +251 -0
  1154. package/packages/host/dist/limit.js.map +1 -0
  1155. package/packages/host/dist/limitlog.d.ts +51 -0
  1156. package/packages/host/dist/limitlog.js +154 -0
  1157. package/packages/host/dist/limitlog.js.map +1 -0
  1158. package/packages/host/dist/limitretry.d.ts +135 -0
  1159. package/packages/host/dist/limitretry.js +115 -0
  1160. package/packages/host/dist/limitretry.js.map +1 -0
  1161. package/packages/host/dist/livesources.d.ts +38 -0
  1162. package/packages/host/dist/livesources.js +26 -0
  1163. package/packages/host/dist/livesources.js.map +1 -0
  1164. package/packages/host/dist/localcistatus.d.ts +22 -0
  1165. package/packages/host/dist/localcistatus.js +105 -0
  1166. package/packages/host/dist/localcistatus.js.map +1 -0
  1167. package/packages/host/dist/localledger.d.ts +69 -0
  1168. package/packages/host/dist/localledger.js +214 -0
  1169. package/packages/host/dist/localledger.js.map +1 -0
  1170. package/packages/host/dist/localrt.d.ts +164 -0
  1171. package/packages/host/dist/localrt.js +414 -0
  1172. package/packages/host/dist/localrt.js.map +1 -0
  1173. package/packages/host/dist/localslot.d.ts +152 -0
  1174. package/packages/host/dist/localslot.js +269 -0
  1175. package/packages/host/dist/localslot.js.map +1 -0
  1176. package/packages/host/dist/localusage.d.ts +153 -0
  1177. package/packages/host/dist/localusage.js +710 -0
  1178. package/packages/host/dist/localusage.js.map +1 -0
  1179. package/packages/host/dist/login.d.ts +34 -0
  1180. package/packages/host/dist/login.js +126 -0
  1181. package/packages/host/dist/login.js.map +1 -0
  1182. package/packages/host/dist/main.d.ts +1 -0
  1183. package/packages/host/dist/main.js +724 -0
  1184. package/packages/host/dist/main.js.map +1 -0
  1185. package/packages/host/dist/meter.d.ts +23 -0
  1186. package/packages/host/dist/meter.js +121 -0
  1187. package/packages/host/dist/meter.js.map +1 -0
  1188. package/packages/host/dist/naming.d.ts +257 -0
  1189. package/packages/host/dist/naming.js +387 -0
  1190. package/packages/host/dist/naming.js.map +1 -0
  1191. package/packages/host/dist/net.d.ts +80 -0
  1192. package/packages/host/dist/net.js +276 -0
  1193. package/packages/host/dist/net.js.map +1 -0
  1194. package/packages/host/dist/netlog.d.ts +40 -0
  1195. package/packages/host/dist/netlog.js +165 -0
  1196. package/packages/host/dist/netlog.js.map +1 -0
  1197. package/packages/host/dist/netretrycfg.d.ts +7 -0
  1198. package/packages/host/dist/netretrycfg.js +51 -0
  1199. package/packages/host/dist/netretrycfg.js.map +1 -0
  1200. package/packages/host/dist/netstats.d.ts +99 -0
  1201. package/packages/host/dist/netstats.js +223 -0
  1202. package/packages/host/dist/netstats.js.map +1 -0
  1203. package/packages/host/dist/notifyprefs.d.ts +16 -0
  1204. package/packages/host/dist/notifyprefs.js +75 -0
  1205. package/packages/host/dist/notifyprefs.js.map +1 -0
  1206. package/packages/host/dist/notifytypes.d.ts +58 -0
  1207. package/packages/host/dist/notifytypes.js +2 -0
  1208. package/packages/host/dist/notifytypes.js.map +1 -0
  1209. package/packages/host/dist/ocrlocal.d.ts +46 -0
  1210. package/packages/host/dist/ocrlocal.js +297 -0
  1211. package/packages/host/dist/ocrlocal.js.map +1 -0
  1212. package/packages/host/dist/onboard.d.ts +182 -0
  1213. package/packages/host/dist/onboard.js +590 -0
  1214. package/packages/host/dist/onboard.js.map +1 -0
  1215. package/packages/host/dist/onboardroutes.d.ts +31 -0
  1216. package/packages/host/dist/onboardroutes.js +78 -0
  1217. package/packages/host/dist/onboardroutes.js.map +1 -0
  1218. package/packages/host/dist/opendeliveries.d.ts +175 -0
  1219. package/packages/host/dist/opendeliveries.js +562 -0
  1220. package/packages/host/dist/opendeliveries.js.map +1 -0
  1221. package/packages/host/dist/optins.d.ts +41 -0
  1222. package/packages/host/dist/optins.js +344 -0
  1223. package/packages/host/dist/optins.js.map +1 -0
  1224. package/packages/host/dist/origin.d.ts +86 -0
  1225. package/packages/host/dist/origin.js +301 -0
  1226. package/packages/host/dist/origin.js.map +1 -0
  1227. package/packages/host/dist/pair.d.ts +149 -0
  1228. package/packages/host/dist/pair.js +505 -0
  1229. package/packages/host/dist/pair.js.map +1 -0
  1230. package/packages/host/dist/passive.d.ts +58 -0
  1231. package/packages/host/dist/passive.js +187 -0
  1232. package/packages/host/dist/passive.js.map +1 -0
  1233. package/packages/host/dist/paths.d.ts +67 -0
  1234. package/packages/host/dist/paths.js +135 -0
  1235. package/packages/host/dist/paths.js.map +1 -0
  1236. package/packages/host/dist/pathx.d.ts +6 -0
  1237. package/packages/host/dist/pathx.js +35 -0
  1238. package/packages/host/dist/pathx.js.map +1 -0
  1239. package/packages/host/dist/peers/agentpeer.d.ts +58 -0
  1240. package/packages/host/dist/peers/agentpeer.js +249 -0
  1241. package/packages/host/dist/peers/agentpeer.js.map +1 -0
  1242. package/packages/host/dist/peers/client.d.ts +60 -0
  1243. package/packages/host/dist/peers/client.js +96 -0
  1244. package/packages/host/dist/peers/client.js.map +1 -0
  1245. package/packages/host/dist/peers/jobs.d.ts +138 -0
  1246. package/packages/host/dist/peers/jobs.js +429 -0
  1247. package/packages/host/dist/peers/jobs.js.map +1 -0
  1248. package/packages/host/dist/peers/routes.d.ts +50 -0
  1249. package/packages/host/dist/peers/routes.js +191 -0
  1250. package/packages/host/dist/peers/routes.js.map +1 -0
  1251. package/packages/host/dist/peers/serve.d.ts +61 -0
  1252. package/packages/host/dist/peers/serve.js +532 -0
  1253. package/packages/host/dist/peers/serve.js.map +1 -0
  1254. package/packages/host/dist/peers/store.d.ts +64 -0
  1255. package/packages/host/dist/peers/store.js +128 -0
  1256. package/packages/host/dist/peers/store.js.map +1 -0
  1257. package/packages/host/dist/periodspend.d.ts +61 -0
  1258. package/packages/host/dist/periodspend.js +109 -0
  1259. package/packages/host/dist/periodspend.js.map +1 -0
  1260. package/packages/host/dist/permmode.d.ts +90 -0
  1261. package/packages/host/dist/permmode.js +157 -0
  1262. package/packages/host/dist/permmode.js.map +1 -0
  1263. package/packages/host/dist/planbox.d.ts +23 -0
  1264. package/packages/host/dist/planbox.js +123 -0
  1265. package/packages/host/dist/planbox.js.map +1 -0
  1266. package/packages/host/dist/plugins/builtin.d.ts +39 -0
  1267. package/packages/host/dist/plugins/builtin.js +200 -0
  1268. package/packages/host/dist/plugins/builtin.js.map +1 -0
  1269. package/packages/host/dist/plugins/pluginapi.d.ts +34 -0
  1270. package/packages/host/dist/plugins/pluginapi.js +651 -0
  1271. package/packages/host/dist/plugins/pluginapi.js.map +1 -0
  1272. package/packages/host/dist/plugins/pluginassets.d.ts +16 -0
  1273. package/packages/host/dist/plugins/pluginassets.js +44 -0
  1274. package/packages/host/dist/plugins/pluginassets.js.map +1 -0
  1275. package/packages/host/dist/plugins/pluginfiles.d.ts +30 -0
  1276. package/packages/host/dist/plugins/pluginfiles.js +130 -0
  1277. package/packages/host/dist/plugins/pluginfiles.js.map +1 -0
  1278. package/packages/host/dist/plugins/pluginloader.d.ts +59 -0
  1279. package/packages/host/dist/plugins/pluginloader.js +206 -0
  1280. package/packages/host/dist/plugins/pluginloader.js.map +1 -0
  1281. package/packages/host/dist/plugins/pluginregistry.d.ts +244 -0
  1282. package/packages/host/dist/plugins/pluginregistry.js +799 -0
  1283. package/packages/host/dist/plugins/pluginregistry.js.map +1 -0
  1284. package/packages/host/dist/plugins/pluginroutes.d.ts +29 -0
  1285. package/packages/host/dist/plugins/pluginroutes.js +50 -0
  1286. package/packages/host/dist/plugins/pluginroutes.js.map +1 -0
  1287. package/packages/host/dist/plugins/pluginrpc.d.ts +19 -0
  1288. package/packages/host/dist/plugins/pluginrpc.js +28 -0
  1289. package/packages/host/dist/plugins/pluginrpc.js.map +1 -0
  1290. package/packages/host/dist/plugins/pluginstreams.d.ts +109 -0
  1291. package/packages/host/dist/plugins/pluginstreams.js +418 -0
  1292. package/packages/host/dist/plugins/pluginstreams.js.map +1 -0
  1293. package/packages/host/dist/plugins/plugintoolkit/screen.d.ts +9 -0
  1294. package/packages/host/dist/plugins/plugintoolkit/screen.js +21 -0
  1295. package/packages/host/dist/plugins/plugintoolkit/screen.js.map +1 -0
  1296. package/packages/host/dist/plugins/plugintoolkit/sessionfiles.d.ts +6 -0
  1297. package/packages/host/dist/plugins/plugintoolkit/sessionfiles.js +24 -0
  1298. package/packages/host/dist/plugins/plugintoolkit/sessionfiles.js.map +1 -0
  1299. package/packages/host/dist/plugins/plugintoolkit/tail.d.ts +10 -0
  1300. package/packages/host/dist/plugins/plugintoolkit/tail.js +110 -0
  1301. package/packages/host/dist/plugins/plugintoolkit/tail.js.map +1 -0
  1302. package/packages/host/dist/plugins/setupcontrib.d.ts +64 -0
  1303. package/packages/host/dist/plugins/setupcontrib.js +94 -0
  1304. package/packages/host/dist/plugins/setupcontrib.js.map +1 -0
  1305. package/packages/host/dist/proc.d.ts +13 -0
  1306. package/packages/host/dist/proc.js +27 -0
  1307. package/packages/host/dist/proc.js.map +1 -0
  1308. package/packages/host/dist/prompt.d.ts +113 -0
  1309. package/packages/host/dist/prompt.js +565 -0
  1310. package/packages/host/dist/prompt.js.map +1 -0
  1311. package/packages/host/dist/promptbase.d.ts +28 -0
  1312. package/packages/host/dist/promptbase.js +42 -0
  1313. package/packages/host/dist/promptbase.js.map +1 -0
  1314. package/packages/host/dist/promptmerge.d.ts +63 -0
  1315. package/packages/host/dist/promptmerge.js +221 -0
  1316. package/packages/host/dist/promptmerge.js.map +1 -0
  1317. package/packages/host/dist/promptnav.d.ts +29 -0
  1318. package/packages/host/dist/promptnav.js +97 -0
  1319. package/packages/host/dist/promptnav.js.map +1 -0
  1320. package/packages/host/dist/prompts.d.ts +4 -0
  1321. package/packages/host/dist/prompts.js +78 -0
  1322. package/packages/host/dist/prompts.js.map +1 -0
  1323. package/packages/host/dist/protectmain.d.ts +35 -0
  1324. package/packages/host/dist/protectmain.js +73 -0
  1325. package/packages/host/dist/protectmain.js.map +1 -0
  1326. package/packages/host/dist/prpush.d.ts +30 -0
  1327. package/packages/host/dist/prpush.js +171 -0
  1328. package/packages/host/dist/prpush.js.map +1 -0
  1329. package/packages/host/dist/prs.d.ts +70 -0
  1330. package/packages/host/dist/prs.js +328 -0
  1331. package/packages/host/dist/prs.js.map +1 -0
  1332. package/packages/host/dist/ptycap.d.ts +41 -0
  1333. package/packages/host/dist/ptycap.js +192 -0
  1334. package/packages/host/dist/ptycap.js.map +1 -0
  1335. package/packages/host/dist/ptyenv.d.ts +3 -0
  1336. package/packages/host/dist/ptyenv.js +63 -0
  1337. package/packages/host/dist/ptyenv.js.map +1 -0
  1338. package/packages/host/dist/push.d.ts +61 -0
  1339. package/packages/host/dist/push.js +107 -0
  1340. package/packages/host/dist/push.js.map +1 -0
  1341. package/packages/host/dist/pushprogress.d.ts +27 -0
  1342. package/packages/host/dist/pushprogress.js +72 -0
  1343. package/packages/host/dist/pushprogress.js.map +1 -0
  1344. package/packages/host/dist/question.d.ts +60 -0
  1345. package/packages/host/dist/question.js +137 -0
  1346. package/packages/host/dist/question.js.map +1 -0
  1347. package/packages/host/dist/ratelimit.d.ts +44 -0
  1348. package/packages/host/dist/ratelimit.js +68 -0
  1349. package/packages/host/dist/ratelimit.js.map +1 -0
  1350. package/packages/host/dist/render.d.ts +107 -0
  1351. package/packages/host/dist/render.js +156 -0
  1352. package/packages/host/dist/render.js.map +1 -0
  1353. package/packages/host/dist/repohealth.d.ts +113 -0
  1354. package/packages/host/dist/repohealth.js +755 -0
  1355. package/packages/host/dist/repohealth.js.map +1 -0
  1356. package/packages/host/dist/repohealthapproval.d.ts +91 -0
  1357. package/packages/host/dist/repohealthapproval.js +799 -0
  1358. package/packages/host/dist/repohealthapproval.js.map +1 -0
  1359. package/packages/host/dist/repohealthscopes.d.ts +23 -0
  1360. package/packages/host/dist/repohealthscopes.js +124 -0
  1361. package/packages/host/dist/repohealthscopes.js.map +1 -0
  1362. package/packages/host/dist/repos.d.ts +25 -0
  1363. package/packages/host/dist/repos.js +187 -0
  1364. package/packages/host/dist/repos.js.map +1 -0
  1365. package/packages/host/dist/reposkill.d.ts +20 -0
  1366. package/packages/host/dist/reposkill.js +97 -0
  1367. package/packages/host/dist/reposkill.js.map +1 -0
  1368. package/packages/host/dist/reposkilltext.d.ts +23 -0
  1369. package/packages/host/dist/reposkilltext.js +389 -0
  1370. package/packages/host/dist/reposkilltext.js.map +1 -0
  1371. package/packages/host/dist/restartnote.d.ts +17 -0
  1372. package/packages/host/dist/restartnote.js +36 -0
  1373. package/packages/host/dist/restartnote.js.map +1 -0
  1374. package/packages/host/dist/review.d.ts +83 -0
  1375. package/packages/host/dist/review.js +513 -0
  1376. package/packages/host/dist/review.js.map +1 -0
  1377. package/packages/host/dist/rootchoice.d.ts +26 -0
  1378. package/packages/host/dist/rootchoice.js +101 -0
  1379. package/packages/host/dist/rootchoice.js.map +1 -0
  1380. package/packages/host/dist/routes/apihost.d.ts +2 -0
  1381. package/packages/host/dist/routes/apihost.js +556 -0
  1382. package/packages/host/dist/routes/apihost.js.map +1 -0
  1383. package/packages/host/dist/routes/apiio.d.ts +86 -0
  1384. package/packages/host/dist/routes/apiio.js +354 -0
  1385. package/packages/host/dist/routes/apiio.js.map +1 -0
  1386. package/packages/host/dist/routes/apiprs.d.ts +2 -0
  1387. package/packages/host/dist/routes/apiprs.js +45 -0
  1388. package/packages/host/dist/routes/apiprs.js.map +1 -0
  1389. package/packages/host/dist/routes/apirepofiles.d.ts +7 -0
  1390. package/packages/host/dist/routes/apirepofiles.js +393 -0
  1391. package/packages/host/dist/routes/apirepofiles.js.map +1 -0
  1392. package/packages/host/dist/routes/apirepowork.d.ts +2 -0
  1393. package/packages/host/dist/routes/apirepowork.js +524 -0
  1394. package/packages/host/dist/routes/apirepowork.js.map +1 -0
  1395. package/packages/host/dist/routes/apiroutes.d.ts +14 -0
  1396. package/packages/host/dist/routes/apiroutes.js +21 -0
  1397. package/packages/host/dist/routes/apiroutes.js.map +1 -0
  1398. package/packages/host/dist/routes/apisession.d.ts +2 -0
  1399. package/packages/host/dist/routes/apisession.js +221 -0
  1400. package/packages/host/dist/routes/apisession.js.map +1 -0
  1401. package/packages/host/dist/routes/apistats.d.ts +2 -0
  1402. package/packages/host/dist/routes/apistats.js +225 -0
  1403. package/packages/host/dist/routes/apistats.js.map +1 -0
  1404. package/packages/host/dist/routes/apisystem.d.ts +2 -0
  1405. package/packages/host/dist/routes/apisystem.js +411 -0
  1406. package/packages/host/dist/routes/apisystem.js.map +1 -0
  1407. package/packages/host/dist/routes/apitable.d.ts +190 -0
  1408. package/packages/host/dist/routes/apitable.js +71 -0
  1409. package/packages/host/dist/routes/apitable.js.map +1 -0
  1410. package/packages/host/dist/routes/apiweekburn.d.ts +2 -0
  1411. package/packages/host/dist/routes/apiweekburn.js +30 -0
  1412. package/packages/host/dist/routes/apiweekburn.js.map +1 -0
  1413. package/packages/host/dist/routes/index.d.ts +19 -0
  1414. package/packages/host/dist/routes/index.js +65 -0
  1415. package/packages/host/dist/routes/index.js.map +1 -0
  1416. package/packages/host/dist/routes/session.d.ts +2 -0
  1417. package/packages/host/dist/routes/session.js +775 -0
  1418. package/packages/host/dist/routes/session.js.map +1 -0
  1419. package/packages/host/dist/routes/system.d.ts +24 -0
  1420. package/packages/host/dist/routes/system.js +557 -0
  1421. package/packages/host/dist/routes/system.js.map +1 -0
  1422. package/packages/host/dist/routes/types.d.ts +291 -0
  1423. package/packages/host/dist/routes/types.js +2 -0
  1424. package/packages/host/dist/routes/types.js.map +1 -0
  1425. package/packages/host/dist/routes/work/workassess.d.ts +2 -0
  1426. package/packages/host/dist/routes/work/workassess.js +182 -0
  1427. package/packages/host/dist/routes/work/workassess.js.map +1 -0
  1428. package/packages/host/dist/routes/work/workbacklog.d.ts +2 -0
  1429. package/packages/host/dist/routes/work/workbacklog.js +329 -0
  1430. package/packages/host/dist/routes/work/workbacklog.js.map +1 -0
  1431. package/packages/host/dist/routes/work/workbuild.d.ts +2 -0
  1432. package/packages/host/dist/routes/work/workbuild.js +251 -0
  1433. package/packages/host/dist/routes/work/workbuild.js.map +1 -0
  1434. package/packages/host/dist/routes/work/workintent.d.ts +2 -0
  1435. package/packages/host/dist/routes/work/workintent.js +167 -0
  1436. package/packages/host/dist/routes/work/workintent.js.map +1 -0
  1437. package/packages/host/dist/routes/work/workschedule.d.ts +2 -0
  1438. package/packages/host/dist/routes/work/workschedule.js +161 -0
  1439. package/packages/host/dist/routes/work/workschedule.js.map +1 -0
  1440. package/packages/host/dist/routes/work.d.ts +10 -0
  1441. package/packages/host/dist/routes/work.js +13 -0
  1442. package/packages/host/dist/routes/work.js.map +1 -0
  1443. package/packages/host/dist/scaffold.d.ts +104 -0
  1444. package/packages/host/dist/scaffold.js +417 -0
  1445. package/packages/host/dist/scaffold.js.map +1 -0
  1446. package/packages/host/dist/screenlog.d.ts +63 -0
  1447. package/packages/host/dist/screenlog.js +249 -0
  1448. package/packages/host/dist/screenlog.js.map +1 -0
  1449. package/packages/host/dist/secrets.d.ts +72 -0
  1450. package/packages/host/dist/secrets.js +258 -0
  1451. package/packages/host/dist/secrets.js.map +1 -0
  1452. package/packages/host/dist/sentlog.d.ts +82 -0
  1453. package/packages/host/dist/sentlog.js +186 -0
  1454. package/packages/host/dist/sentlog.js.map +1 -0
  1455. package/packages/host/dist/server/billingwire.d.ts +24 -0
  1456. package/packages/host/dist/server/billingwire.js +73 -0
  1457. package/packages/host/dist/server/billingwire.js.map +1 -0
  1458. package/packages/host/dist/server/clients.d.ts +42 -0
  1459. package/packages/host/dist/server/clients.js +244 -0
  1460. package/packages/host/dist/server/clients.js.map +1 -0
  1461. package/packages/host/dist/server/ctx.d.ts +120 -0
  1462. package/packages/host/dist/server/ctx.js +2 -0
  1463. package/packages/host/dist/server/ctx.js.map +1 -0
  1464. package/packages/host/dist/server/ctxseal.d.ts +21 -0
  1465. package/packages/host/dist/server/ctxseal.js +24 -0
  1466. package/packages/host/dist/server/ctxseal.js.map +1 -0
  1467. package/packages/host/dist/server/deliveries.d.ts +20 -0
  1468. package/packages/host/dist/server/deliveries.js +278 -0
  1469. package/packages/host/dist/server/deliveries.js.map +1 -0
  1470. package/packages/host/dist/server/firstapp.d.ts +12 -0
  1471. package/packages/host/dist/server/firstapp.js +37 -0
  1472. package/packages/host/dist/server/firstapp.js.map +1 -0
  1473. package/packages/host/dist/server/http.d.ts +34 -0
  1474. package/packages/host/dist/server/http.js +475 -0
  1475. package/packages/host/dist/server/http.js.map +1 -0
  1476. package/packages/host/dist/server/intentDeps.d.ts +36 -0
  1477. package/packages/host/dist/server/intentDeps.js +421 -0
  1478. package/packages/host/dist/server/intentDeps.js.map +1 -0
  1479. package/packages/host/dist/server/intentEvents.d.ts +13 -0
  1480. package/packages/host/dist/server/intentEvents.js +239 -0
  1481. package/packages/host/dist/server/intentEvents.js.map +1 -0
  1482. package/packages/host/dist/server/liveness.d.ts +64 -0
  1483. package/packages/host/dist/server/liveness.js +74 -0
  1484. package/packages/host/dist/server/liveness.js.map +1 -0
  1485. package/packages/host/dist/server/scan.d.ts +41 -0
  1486. package/packages/host/dist/server/scan.js +249 -0
  1487. package/packages/host/dist/server/scan.js.map +1 -0
  1488. package/packages/host/dist/server/sessionEvents.d.ts +40 -0
  1489. package/packages/host/dist/server/sessionEvents.js +536 -0
  1490. package/packages/host/dist/server/sessionEvents.js.map +1 -0
  1491. package/packages/host/dist/server/shutdown.d.ts +11 -0
  1492. package/packages/host/dist/server/shutdown.js +135 -0
  1493. package/packages/host/dist/server/shutdown.js.map +1 -0
  1494. package/packages/host/dist/server/wsops.d.ts +44 -0
  1495. package/packages/host/dist/server/wsops.js +313 -0
  1496. package/packages/host/dist/server/wsops.js.map +1 -0
  1497. package/packages/host/dist/sessionSearch.d.ts +46 -0
  1498. package/packages/host/dist/sessionSearch.js +93 -0
  1499. package/packages/host/dist/sessionSearch.js.map +1 -0
  1500. package/packages/host/dist/sessionbudget.d.ts +61 -0
  1501. package/packages/host/dist/sessionbudget.js +84 -0
  1502. package/packages/host/dist/sessionbudget.js.map +1 -0
  1503. package/packages/host/dist/sessions/agentpoll.d.ts +31 -0
  1504. package/packages/host/dist/sessions/agentpoll.js +176 -0
  1505. package/packages/host/dist/sessions/agentpoll.js.map +1 -0
  1506. package/packages/host/dist/sessions/apiretry.d.ts +59 -0
  1507. package/packages/host/dist/sessions/apiretry.js +240 -0
  1508. package/packages/host/dist/sessions/apiretry.js.map +1 -0
  1509. package/packages/host/dist/sessions/askwatch.d.ts +62 -0
  1510. package/packages/host/dist/sessions/askwatch.js +169 -0
  1511. package/packages/host/dist/sessions/askwatch.js.map +1 -0
  1512. package/packages/host/dist/sessions/boxes.d.ts +91 -0
  1513. package/packages/host/dist/sessions/boxes.js +314 -0
  1514. package/packages/host/dist/sessions/boxes.js.map +1 -0
  1515. package/packages/host/dist/sessions/boxread.d.ts +47 -0
  1516. package/packages/host/dist/sessions/boxread.js +628 -0
  1517. package/packages/host/dist/sessions/boxread.js.map +1 -0
  1518. package/packages/host/dist/sessions/budgetwatch.d.ts +95 -0
  1519. package/packages/host/dist/sessions/budgetwatch.js +171 -0
  1520. package/packages/host/dist/sessions/budgetwatch.js.map +1 -0
  1521. package/packages/host/dist/sessions/convid.d.ts +72 -0
  1522. package/packages/host/dist/sessions/convid.js +305 -0
  1523. package/packages/host/dist/sessions/convid.js.map +1 -0
  1524. package/packages/host/dist/sessions/core.d.ts +764 -0
  1525. package/packages/host/dist/sessions/core.js +2 -0
  1526. package/packages/host/dist/sessions/core.js.map +1 -0
  1527. package/packages/host/dist/sessions/ctxseries.d.ts +184 -0
  1528. package/packages/host/dist/sessions/ctxseries.js +769 -0
  1529. package/packages/host/dist/sessions/ctxseries.js.map +1 -0
  1530. package/packages/host/dist/sessions/drive.d.ts +221 -0
  1531. package/packages/host/dist/sessions/drive.js +814 -0
  1532. package/packages/host/dist/sessions/drive.js.map +1 -0
  1533. package/packages/host/dist/sessions/haltall.d.ts +36 -0
  1534. package/packages/host/dist/sessions/haltall.js +95 -0
  1535. package/packages/host/dist/sessions/haltall.js.map +1 -0
  1536. package/packages/host/dist/sessions/health.d.ts +88 -0
  1537. package/packages/host/dist/sessions/health.js +108 -0
  1538. package/packages/host/dist/sessions/health.js.map +1 -0
  1539. package/packages/host/dist/sessions/idlewatch.d.ts +34 -0
  1540. package/packages/host/dist/sessions/idlewatch.js +74 -0
  1541. package/packages/host/dist/sessions/idlewatch.js.map +1 -0
  1542. package/packages/host/dist/sessions/knobs.d.ts +323 -0
  1543. package/packages/host/dist/sessions/knobs.js +420 -0
  1544. package/packages/host/dist/sessions/knobs.js.map +1 -0
  1545. package/packages/host/dist/sessions/links.d.ts +53 -0
  1546. package/packages/host/dist/sessions/links.js +209 -0
  1547. package/packages/host/dist/sessions/links.js.map +1 -0
  1548. package/packages/host/dist/sessions/livemode.d.ts +56 -0
  1549. package/packages/host/dist/sessions/livemode.js +300 -0
  1550. package/packages/host/dist/sessions/livemode.js.map +1 -0
  1551. package/packages/host/dist/sessions/record.d.ts +196 -0
  1552. package/packages/host/dist/sessions/record.js +724 -0
  1553. package/packages/host/dist/sessions/record.js.map +1 -0
  1554. package/packages/host/dist/sessions/resume.d.ts +181 -0
  1555. package/packages/host/dist/sessions/resume.js +683 -0
  1556. package/packages/host/dist/sessions/resume.js.map +1 -0
  1557. package/packages/host/dist/sessions/roster.d.ts +164 -0
  1558. package/packages/host/dist/sessions/roster.js +569 -0
  1559. package/packages/host/dist/sessions/roster.js.map +1 -0
  1560. package/packages/host/dist/sessions/sidechannel.d.ts +96 -0
  1561. package/packages/host/dist/sessions/sidechannel.js +726 -0
  1562. package/packages/host/dist/sessions/sidechannel.js.map +1 -0
  1563. package/packages/host/dist/sessions/tmux.d.ts +247 -0
  1564. package/packages/host/dist/sessions/tmux.js +731 -0
  1565. package/packages/host/dist/sessions/tmux.js.map +1 -0
  1566. package/packages/host/dist/sessions/turn.d.ts +194 -0
  1567. package/packages/host/dist/sessions/turn.js +664 -0
  1568. package/packages/host/dist/sessions/turn.js.map +1 -0
  1569. package/packages/host/dist/sessions/wall.d.ts +117 -0
  1570. package/packages/host/dist/sessions/wall.js +658 -0
  1571. package/packages/host/dist/sessions/wall.js.map +1 -0
  1572. package/packages/host/dist/sessions.d.ts +261 -0
  1573. package/packages/host/dist/sessions.js +767 -0
  1574. package/packages/host/dist/sessions.js.map +1 -0
  1575. package/packages/host/dist/settings.d.ts +40 -0
  1576. package/packages/host/dist/settings.js +171 -0
  1577. package/packages/host/dist/settings.js.map +1 -0
  1578. package/packages/host/dist/settle.d.ts +177 -0
  1579. package/packages/host/dist/settle.js +414 -0
  1580. package/packages/host/dist/settle.js.map +1 -0
  1581. package/packages/host/dist/setupprefs.d.ts +76 -0
  1582. package/packages/host/dist/setupprefs.js +226 -0
  1583. package/packages/host/dist/setupprefs.js.map +1 -0
  1584. package/packages/host/dist/setupwatch.d.ts +39 -0
  1585. package/packages/host/dist/setupwatch.js +249 -0
  1586. package/packages/host/dist/setupwatch.js.map +1 -0
  1587. package/packages/host/dist/shelllinks.d.ts +39 -0
  1588. package/packages/host/dist/shelllinks.js +292 -0
  1589. package/packages/host/dist/shelllinks.js.map +1 -0
  1590. package/packages/host/dist/shells.d.ts +190 -0
  1591. package/packages/host/dist/shells.js +633 -0
  1592. package/packages/host/dist/shells.js.map +1 -0
  1593. package/packages/host/dist/sidecar/sidecarclaude.d.ts +120 -0
  1594. package/packages/host/dist/sidecar/sidecarclaude.js +213 -0
  1595. package/packages/host/dist/sidecar/sidecarclaude.js.map +1 -0
  1596. package/packages/host/dist/sidecar/sidecarname.d.ts +101 -0
  1597. package/packages/host/dist/sidecar/sidecarname.js +167 -0
  1598. package/packages/host/dist/sidecar/sidecarname.js.map +1 -0
  1599. package/packages/host/dist/sidecar/sidecaropenai.d.ts +24 -0
  1600. package/packages/host/dist/sidecar/sidecaropenai.js +129 -0
  1601. package/packages/host/dist/sidecar/sidecaropenai.js.map +1 -0
  1602. package/packages/host/dist/sidecar/sidecarroute.d.ts +65 -0
  1603. package/packages/host/dist/sidecar/sidecarroute.js +163 -0
  1604. package/packages/host/dist/sidecar/sidecarroute.js.map +1 -0
  1605. package/packages/host/dist/sidecar/sidecartasks.d.ts +20 -0
  1606. package/packages/host/dist/sidecar/sidecartasks.js +63 -0
  1607. package/packages/host/dist/sidecar/sidecartasks.js.map +1 -0
  1608. package/packages/host/dist/sidecar/sidecartrust.d.ts +32 -0
  1609. package/packages/host/dist/sidecar/sidecartrust.js +74 -0
  1610. package/packages/host/dist/sidecar/sidecartrust.js.map +1 -0
  1611. package/packages/host/dist/sidecar.d.ts +82 -0
  1612. package/packages/host/dist/sidecar.js +78 -0
  1613. package/packages/host/dist/sidecar.js.map +1 -0
  1614. package/packages/host/dist/signkey.d.ts +57 -0
  1615. package/packages/host/dist/signkey.js +159 -0
  1616. package/packages/host/dist/signkey.js.map +1 -0
  1617. package/packages/host/dist/slash.d.ts +43 -0
  1618. package/packages/host/dist/slash.js +236 -0
  1619. package/packages/host/dist/slash.js.map +1 -0
  1620. package/packages/host/dist/sourceanswer.d.ts +103 -0
  1621. package/packages/host/dist/sourceanswer.js +193 -0
  1622. package/packages/host/dist/sourceanswer.js.map +1 -0
  1623. package/packages/host/dist/speedtest.d.ts +57 -0
  1624. package/packages/host/dist/speedtest.js +137 -0
  1625. package/packages/host/dist/speedtest.js.map +1 -0
  1626. package/packages/host/dist/spendwall.d.ts +33 -0
  1627. package/packages/host/dist/spendwall.js +45 -0
  1628. package/packages/host/dist/spendwall.js.map +1 -0
  1629. package/packages/host/dist/sysstat.d.ts +134 -0
  1630. package/packages/host/dist/sysstat.js +630 -0
  1631. package/packages/host/dist/sysstat.js.map +1 -0
  1632. package/packages/host/dist/tailnetpeers.d.ts +34 -0
  1633. package/packages/host/dist/tailnetpeers.js +116 -0
  1634. package/packages/host/dist/tailnetpeers.js.map +1 -0
  1635. package/packages/host/dist/tailscaleguard.d.ts +11 -0
  1636. package/packages/host/dist/tailscaleguard.js +133 -0
  1637. package/packages/host/dist/tailscaleguard.js.map +1 -0
  1638. package/packages/host/dist/termqueries.d.ts +124 -0
  1639. package/packages/host/dist/termqueries.js +207 -0
  1640. package/packages/host/dist/termqueries.js.map +1 -0
  1641. package/packages/host/dist/themeoverlay.d.ts +74 -0
  1642. package/packages/host/dist/themeoverlay.js +262 -0
  1643. package/packages/host/dist/themeoverlay.js.map +1 -0
  1644. package/packages/host/dist/thumbs.d.ts +69 -0
  1645. package/packages/host/dist/thumbs.js +359 -0
  1646. package/packages/host/dist/thumbs.js.map +1 -0
  1647. package/packages/host/dist/tmuxreq.d.ts +91 -0
  1648. package/packages/host/dist/tmuxreq.js +207 -0
  1649. package/packages/host/dist/tmuxreq.js.map +1 -0
  1650. package/packages/host/dist/tmuxscroll.d.ts +70 -0
  1651. package/packages/host/dist/tmuxscroll.js +206 -0
  1652. package/packages/host/dist/tmuxscroll.js.map +1 -0
  1653. package/packages/host/dist/tokenscan.d.ts +67 -0
  1654. package/packages/host/dist/tokenscan.js +225 -0
  1655. package/packages/host/dist/tokenscan.js.map +1 -0
  1656. package/packages/host/dist/tokenstats.d.ts +115 -0
  1657. package/packages/host/dist/tokenstats.js +765 -0
  1658. package/packages/host/dist/tokenstats.js.map +1 -0
  1659. package/packages/host/dist/toolchain.d.ts +147 -0
  1660. package/packages/host/dist/toolchain.js +468 -0
  1661. package/packages/host/dist/toolchain.js.map +1 -0
  1662. package/packages/host/dist/transcript/transcriptlog.d.ts +134 -0
  1663. package/packages/host/dist/transcript/transcriptlog.js +300 -0
  1664. package/packages/host/dist/transcript/transcriptlog.js.map +1 -0
  1665. package/packages/host/dist/transcript/transcriptparse.d.ts +28 -0
  1666. package/packages/host/dist/transcript/transcriptparse.js +382 -0
  1667. package/packages/host/dist/transcript/transcriptparse.js.map +1 -0
  1668. package/packages/host/dist/transcript/transcriptscreen.d.ts +71 -0
  1669. package/packages/host/dist/transcript/transcriptscreen.js +120 -0
  1670. package/packages/host/dist/transcript/transcriptscreen.js.map +1 -0
  1671. package/packages/host/dist/transcript/transcriptturns.d.ts +168 -0
  1672. package/packages/host/dist/transcript/transcriptturns.js +297 -0
  1673. package/packages/host/dist/transcript/transcriptturns.js.map +1 -0
  1674. package/packages/host/dist/transcript.d.ts +28 -0
  1675. package/packages/host/dist/transcript.js +34 -0
  1676. package/packages/host/dist/transcript.js.map +1 -0
  1677. package/packages/host/dist/transportsurvey.d.ts +10 -0
  1678. package/packages/host/dist/transportsurvey.js +109 -0
  1679. package/packages/host/dist/transportsurvey.js.map +1 -0
  1680. package/packages/host/dist/tree.d.ts +80 -0
  1681. package/packages/host/dist/tree.js +372 -0
  1682. package/packages/host/dist/tree.js.map +1 -0
  1683. package/packages/host/dist/turnagents.d.ts +17 -0
  1684. package/packages/host/dist/turnagents.js +205 -0
  1685. package/packages/host/dist/turnagents.js.map +1 -0
  1686. package/packages/host/dist/uistats.d.ts +18 -0
  1687. package/packages/host/dist/uistats.js +105 -0
  1688. package/packages/host/dist/uistats.js.map +1 -0
  1689. package/packages/host/dist/update.d.ts +100 -0
  1690. package/packages/host/dist/update.js +536 -0
  1691. package/packages/host/dist/update.js.map +1 -0
  1692. package/packages/host/dist/updates/apply.d.ts +45 -0
  1693. package/packages/host/dist/updates/apply.js +362 -0
  1694. package/packages/host/dist/updates/apply.js.map +1 -0
  1695. package/packages/host/dist/updates/catalog.d.ts +11 -0
  1696. package/packages/host/dist/updates/catalog.js +123 -0
  1697. package/packages/host/dist/updates/catalog.js.map +1 -0
  1698. package/packages/host/dist/updates/checker.d.ts +73 -0
  1699. package/packages/host/dist/updates/checker.js +189 -0
  1700. package/packages/host/dist/updates/checker.js.map +1 -0
  1701. package/packages/host/dist/updates/github.d.ts +13 -0
  1702. package/packages/host/dist/updates/github.js +63 -0
  1703. package/packages/host/dist/updates/github.js.map +1 -0
  1704. package/packages/host/dist/updates/gitops.d.ts +16 -0
  1705. package/packages/host/dist/updates/gitops.js +61 -0
  1706. package/packages/host/dist/updates/gitops.js.map +1 -0
  1707. package/packages/host/dist/updates/installrecord.d.ts +26 -0
  1708. package/packages/host/dist/updates/installrecord.js +42 -0
  1709. package/packages/host/dist/updates/installrecord.js.map +1 -0
  1710. package/packages/host/dist/updates/remote.d.ts +10 -0
  1711. package/packages/host/dist/updates/remote.js +54 -0
  1712. package/packages/host/dist/updates/remote.js.map +1 -0
  1713. package/packages/host/dist/updates/restart.d.ts +5 -0
  1714. package/packages/host/dist/updates/restart.js +20 -0
  1715. package/packages/host/dist/updates/restart.js.map +1 -0
  1716. package/packages/host/dist/updates/self.d.ts +19 -0
  1717. package/packages/host/dist/updates/self.js +51 -0
  1718. package/packages/host/dist/updates/self.js.map +1 -0
  1719. package/packages/host/dist/updates/wire.d.ts +18 -0
  1720. package/packages/host/dist/updates/wire.js +21 -0
  1721. package/packages/host/dist/updates/wire.js.map +1 -0
  1722. package/packages/host/dist/usage.d.ts +124 -0
  1723. package/packages/host/dist/usage.js +411 -0
  1724. package/packages/host/dist/usage.js.map +1 -0
  1725. package/packages/host/dist/usagelog.d.ts +53 -0
  1726. package/packages/host/dist/usagelog.js +223 -0
  1727. package/packages/host/dist/usagelog.js.map +1 -0
  1728. package/packages/host/dist/usagesourcelog.d.ts +59 -0
  1729. package/packages/host/dist/usagesourcelog.js +208 -0
  1730. package/packages/host/dist/usagesourcelog.js.map +1 -0
  1731. package/packages/host/dist/usagesources.d.ts +175 -0
  1732. package/packages/host/dist/usagesources.js +467 -0
  1733. package/packages/host/dist/usagesources.js.map +1 -0
  1734. package/packages/host/dist/visualskill.d.ts +36 -0
  1735. package/packages/host/dist/visualskill.js +230 -0
  1736. package/packages/host/dist/visualskill.js.map +1 -0
  1737. package/packages/host/dist/webbundle.d.ts +47 -0
  1738. package/packages/host/dist/webbundle.js +155 -0
  1739. package/packages/host/dist/webbundle.js.map +1 -0
  1740. package/packages/host/dist/weekburn.d.ts +75 -0
  1741. package/packages/host/dist/weekburn.js +251 -0
  1742. package/packages/host/dist/weekburn.js.map +1 -0
  1743. package/packages/host/dist/wirerecord.d.ts +5 -0
  1744. package/packages/host/dist/wirerecord.js +128 -0
  1745. package/packages/host/dist/wirerecord.js.map +1 -0
  1746. package/packages/host/dist/worktreeleftover.d.ts +36 -0
  1747. package/packages/host/dist/worktreeleftover.js +169 -0
  1748. package/packages/host/dist/worktreeleftover.js.map +1 -0
  1749. package/packages/host/dist/worktreeowner.d.ts +17 -0
  1750. package/packages/host/dist/worktreeowner.js +45 -0
  1751. package/packages/host/dist/worktreeowner.js.map +1 -0
  1752. package/packages/host/package.json +26 -0
  1753. package/packages/web/dist/assets/apple-touch-icon.png +0 -0
  1754. package/packages/web/dist/assets/badge-96.png +0 -0
  1755. package/packages/web/dist/assets/demo-C1GHaeTv.js +23 -0
  1756. package/packages/web/dist/assets/hero.png +0 -0
  1757. package/packages/web/dist/assets/icon-192.png +0 -0
  1758. package/packages/web/dist/assets/icon-32.png +0 -0
  1759. package/packages/web/dist/assets/icon-48.png +0 -0
  1760. package/packages/web/dist/assets/icon-512-maskable.png +0 -0
  1761. package/packages/web/dist/assets/icon-512.png +0 -0
  1762. package/packages/web/dist/assets/icon-dark.svg +43 -0
  1763. package/packages/web/dist/assets/icon-light.svg +42 -0
  1764. package/packages/web/dist/assets/icon.svg +11 -0
  1765. package/packages/web/dist/assets/icons-DlcvcZoo.js +1 -0
  1766. package/packages/web/dist/assets/index-BBc6xwDA.css +1 -0
  1767. package/packages/web/dist/assets/index-DzQKnksZ.js +169 -0
  1768. package/packages/web/dist/assets/react-CoSyT_xY.js +8 -0
  1769. package/packages/web/dist/assets/rolldown-runtime-BpQH8Ho1.js +1 -0
  1770. package/packages/web/dist/assets/shared-Cl34umPA.js +47 -0
  1771. package/packages/web/dist/assets/sheets-DoUhPGK0.css +1 -0
  1772. package/packages/web/dist/assets/sheets-_3_SvXAx.js +220 -0
  1773. package/packages/web/dist/assets/vendor-BPwPmufs.js +3 -0
  1774. package/packages/web/dist/assets/xterm-BrP-ENHg.css +1 -0
  1775. package/packages/web/dist/assets/xterm-C8zLTNGk.js +16 -0
  1776. package/packages/web/dist/build-id.txt +1 -0
  1777. package/packages/web/dist/buildstamp.json +1 -0
  1778. package/packages/web/dist/demo/media/r1/dot-claude/inbox/swipe-sketch.png +0 -0
  1779. package/packages/web/dist/demo/media/r1/dot-claude/outbox/todo-garden-android-fixed.png +0 -0
  1780. package/packages/web/dist/demo/media/r1/dot-claude/outbox/todo-garden-android.png +0 -0
  1781. package/packages/web/dist/demo/media/r1/dot-claude/outbox/todo-garden-before.png +0 -0
  1782. package/packages/web/dist/demo/media/r1/dot-claude/outbox/todo-garden-date-picker.png +0 -0
  1783. package/packages/web/dist/demo/media/r1/dot-claude/outbox/todo-garden-empty-state.png +0 -0
  1784. package/packages/web/dist/demo/media/r1/dot-claude/outbox/todo-garden-grouped.png +0 -0
  1785. package/packages/web/dist/demo/media/r1/dot-claude/outbox/todo-garden-ios.png +0 -0
  1786. package/packages/web/dist/demo/media/r1/dot-claude/outbox/todo-garden-preview.html +18 -0
  1787. package/packages/web/dist/demo/media/r1/dot-claude/outbox/todo-garden-release-notes.md +21 -0
  1788. package/packages/web/dist/demo/media/r1/dot-claude/outbox/todo-garden-sorted.png +0 -0
  1789. package/packages/web/dist/demo/media/r3/dot-claude/outbox/trail-log-ridge-loop.png +0 -0
  1790. package/packages/web/dist/index.html +84 -0
  1791. package/packages/web/dist/manifest.webmanifest +16 -0
  1792. package/packages/web/dist/sw.js +431 -0
  1793. package/release.json +25 -0
  1794. package/scripts/windows/keeper.ps1 +60 -0
  1795. package/scripts/windows/wsl-setup.sh +173 -0
  1796. package/tools/repohealth/census.mjs +353 -0
  1797. package/tools/repohealth/central.mjs +234 -0
  1798. package/tools/repohealth/constants.mjs +420 -0
  1799. package/tools/repohealth/events.mjs +563 -0
  1800. package/tools/repohealth/fixture.json +17976 -0
  1801. package/tools/repohealth/git.mjs +471 -0
  1802. package/tools/repohealth/html.mjs +601 -0
  1803. package/tools/repohealth/judge.mjs +546 -0
  1804. package/tools/repohealth/lang/typescript-ast.mjs +538 -0
  1805. package/tools/repohealth/metrics/classics.mjs +239 -0
  1806. package/tools/repohealth/metrics/cochange.mjs +234 -0
  1807. package/tools/repohealth/metrics/context.mjs +411 -0
  1808. package/tools/repohealth/metrics/deadexports.mjs +122 -0
  1809. package/tools/repohealth/metrics/dups.mjs +261 -0
  1810. package/tools/repohealth/metrics/hatches.mjs +164 -0
  1811. package/tools/repohealth/metrics/retouch.mjs +326 -0
  1812. package/tools/repohealth/metrics/route.mjs +159 -0
  1813. package/tools/repohealth/metrics/size.mjs +120 -0
  1814. package/tools/repohealth/metrics/tripwires.mjs +258 -0
  1815. package/tools/repohealth/metrics/untested.mjs +308 -0
  1816. package/tools/repohealth/narrate.mjs +342 -0
  1817. package/tools/repohealth/own.mjs +238 -0
  1818. package/tools/repohealth/packs/c.mjs +124 -0
  1819. package/tools/repohealth/packs/common.mjs +205 -0
  1820. package/tools/repohealth/packs/dart.mjs +118 -0
  1821. package/tools/repohealth/packs/index.mjs +83 -0
  1822. package/tools/repohealth/packs/kotlin.mjs +320 -0
  1823. package/tools/repohealth/packs/python.mjs +488 -0
  1824. package/tools/repohealth/packs/shell.mjs +88 -0
  1825. package/tools/repohealth/packs/typescript.mjs +604 -0
  1826. package/tools/repohealth/plot.mjs +462 -0
  1827. package/tools/repohealth/readings.mjs +427 -0
  1828. package/tools/repohealth/scope.mjs +184 -0
  1829. package/tools/repohealth/series.mjs +360 -0
  1830. package/tools/repohealth/snapshot.mjs +431 -0
  1831. package/tools/repohealth/source.mjs +266 -0
  1832. package/tools/repohealth/statefile.mjs +31 -0
  1833. package/tools/repohealth/types.mjs +316 -0
  1834. package/tools/repohealth.mjs +767 -0
  1835. package/tools/skillmap.mjs +109 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,1263 @@
1
+ # Changelog
2
+
3
+ Notable changes. This project has no release branches — `main` is the supported
4
+ version — so entries are grouped by the release they shipped in. A fixed security
5
+ vulnerability in what ships is listed under a **Security:** bullet of the release that
6
+ fixed it, with its CVE or GHSA id when one exists.
7
+
8
+ ## 0.1.11
9
+
10
+ The first public release since 0.1.6. 0.1.10 was tagged but never released; its changes, and those of 0.1.7 to 0.1.9, ship here.
11
+
12
+ ### New
13
+
14
+ - **The backlog lists the newest rows first.** A sort switch above the list picks *newest first* (the default) or *run order*, and the phone remembers the choice. The number on each row is still its place in the run order. Dragging and the move arrows appear only in run order, and the *on a clock* filter always shows run order.
15
+ - **Repos that take changes only through a pull request.** The desktop reads each repo's own branch rules on GitHub. Where they require a pull request, the git view's push becomes *Push & open PR*: your commits go to a `wp/` branch with a PR, and main moves back. Open PRs show above the history with merge, auto-merge, close and the failing check's log, and a PR's checks notify you. A repo without such rules pushes as before, and the desktop never calls GitHub for it.
16
+ - **A turn the CLI gave up on a network error is retried.** When claude ends a turn on a transient API error (no connection, DNS, 5xx, overloaded), the desktop types `continue` again on a widening ladder (20 s up to 10 min) and shows the countdown with *turn off*. Settings › Sessions › *retry on network errors* (on by default).
17
+ - **Re-check on the watch runs the exposure watch.** On Repo readings › watch, *re-check* now runs the watch for that repo on the desktop and says what it found, instead of re-reading the last daily run.
18
+ - **Other backends beside your spend.** Where the month and week went also lists every other backend over the same span in its own unit, never summed with claude's; a budget can be set in a backend's own unit. An opencode turn shows its subagents' tokens and cost, and an opencode session stopped at a dated limit is reopened at the reset.
19
+ - **Trend proposals ask first.** *Assess and propose improvements* lists its proposals and posts only the ones you pick as backlog rows.
20
+
21
+ ### Fixes
22
+
23
+ - **Security:** CodeQL fixes: complete regex escaping in the VS Code extension's git reader and the release tooling, and a backslash escaped before a pipe in generated tables. No shipped path was exploitable.
24
+ - The phone no longer sits on "connecting" when a WebSocket handshake never completes: each dial has a timeout and dials again.
25
+ - Back from a session started from a backlog cut returns to that cut, not the bare launcher.
26
+ - A backlog row called off (by you, an assessment or its own agent) reads *withdrawn* or *called off*, not *failed*, and offers no action the desktop would refuse.
27
+ - The git view: a running pull or push hides the stored failure, and *done* says what it clears.
28
+ - A long build failure scrolls inside the build sheet instead of pushing *done* off screen; a failed build reads *failed* beside the hammer.
29
+ - The Scorecard sheet's refresh says whether Scorecard has a newer scan, and the date is the scan's.
30
+ - VS Code extension (0.8.0): the tree highlights the session only while the panel shows one.
31
+
32
+ ## 0.1.10
33
+
34
+ Tagged but never released; it ships in 0.1.11.
35
+
36
+ ### New
37
+
38
+ - **A `! cmd` line in the reader opens the session's shell.** A code span or shell fence starting with `!` gets a shell button: it opens the session's companion shell and puts the command there, on its own line, without running it. With no shell on the desktop it copies the command instead.
39
+ - **Mark a crash or finding.** Exposure findings carry a mark — seen, investigating, or fixed in a version — set from the phone or by an agent; a crash fixed in a version that comes back there or later alerts as a regression.
40
+ - **Which build is running.** The app-update screen names the shell and the web bundle builds, and each build entry's row says which build it last produced. The VS Code extension (0.8.0) shows the same line.
41
+ - **Capture: set up with AI.** The capture sheet can seed a new session that writes and verifies the capture targets.
42
+
43
+ ### Fixes
44
+
45
+ - **Security:** the installer pins Node 24.22.1, the 2026-10-20 security release.
46
+ - A session's agent reaches its own desktop's API (`$WATERPLANE_API`), not whichever host wrote the shared plugin file last.
47
+ - The VS Code build entry's *install latest* installs the vsix it just packaged.
48
+ - A document tile in the new-files strip shows its name and folder.
49
+
50
+ ## 0.1.9
51
+
52
+ ### Breaking
53
+
54
+ - **Node 22.12 or newer.** Node 20 reached end of life on 2026-04-30; the host, the doctor and `engines` now refuse anything older than 22.12. The release installer already pins a current Node.
55
+
56
+ ### New
57
+
58
+ - **What's new.** One place that opens every new thing, with its state.
59
+ - **What every turn carries.** The context sheet, Repo readings and token stats show the always-on part of each request — CLAUDE.md, skills, subagents, MCP servers and this desktop's files — measured on a session's first request and drawn as a strip, with doors between the three views. The VS Code extension (0.7.0) draws the same views.
60
+ - **Exposure watch.** A daily, model-free reading of a repo's dependencies, runtimes, settings and store listings. Findings show as Repo readings rows you can accept with a reason, a new finding pushes once, and an unprotected default branch can be fixed with one tap. An optional OpenSSF Scorecard reading sits beside it, scored locally for private repos.
61
+ - **Offline terminals.** Every session's terminal screen is cached for offline, not only the one you had open, and the offline card points at the cached transcript.
62
+ - **Git Explain.** The desktop explains what a push sends and what a pull brings. It says it is an AI call, and what it cost.
63
+ - **A push a branch rule refused says so in words**, with the remote's rules and a link to their page. A failed push clears once its commits are upstream, however they got there.
64
+ - **Tabs list from anywhere.** Ctrl+E opens it, with type-to-filter and arrow/Return navigation, even with the tab strip switched off.
65
+ - A build rule's card opens its last run. The menu's activity badge counts desktop rows that wait on a person, and Activity lands on what is open.
66
+
67
+ ### Fixes
68
+
69
+ - **Security:** the iOS shell pins Capacitor 8.5.2 (GHSA-rvm3-566m-v7fv). The Android APK already shipped with the fix in 0.1.8.
70
+ - **Security:** the VS Code extension's publish tooling resolves `@azure/msal-node` 7.1.0 (GHSA-xcx6-jx8p-x3h5). It was never part of the shipped extension.
71
+ - Filters and bulk actions sit above their lists: backlog, commit form, sweep, Week-end burn.
72
+ - Week-end burn (was *This week's burn*): the sheet scrolls, has one start line, hides agent worktrees unless picked and tells twin clone names apart by path.
73
+ - New settings are findable: *Push information too*, Automation and the Downloads switches.
74
+
75
+ ## 0.1.8
76
+
77
+ 0.1.7 was tagged but never released; its changes ship here.
78
+
79
+ ### New
80
+
81
+ - **Notifications split into *needs you* and *information*.** Only what needs you counts on the bell and buzzes the phone; a tap on the bell opens exactly those, and each one has *done*. Information stays readable in the feed and is pushed only when Settings › Notifications › *Push information too* is on. What needs you is the same on every device and survives a desktop restart.
82
+ - **Failed pulls, pushes and builds show on the repo.** A git pull or push the desktop ran that failed raises *Push failed · repo* and a red *push failed* / *pull failed* / *build failed* chip on that repo's buttons; the git view and build sheet show the stored failure until it is fixed or marked done.
83
+ - **A schedule can run a build.** *Run on a clock…* in a build entry's editor sets when it runs; the entry then shows its clock (*every weekday 07:00 · next in 3h*). The Schedules sheet is now **Automation**, and its foot lists what runs on its own without a clock.
84
+ - **Downloads are kept once.** A file saved to the phone's Downloads no longer keeps a second copy inside the app (a per-phone switch, on by default). APKs still install from the Downloads copy. Needs this release's APK.
85
+ - **This week's burn.** Settings → Sessions → *This week's burn* lets you pick repos to spend leftover weekly budget on before the reset: a stop line, a start time, and one backlog row per picked repo. Picking is the approval — nothing starts on its own, and *Same as last week* is one tap. A once-a-week nudge says when you are on pace to leave budget unused.
86
+ - **Every notification tap lands somewhere.** An alert with no session or file behind it used to open the bare launcher; now it opens the screen it is about (a health move opens that repo's health chart, a burn alert opens token stats), or its own row in the feed. Needs this release's APK.
87
+
88
+ ### Fixes
89
+
90
+ - **Sends no longer stick at "the desktop hasn't answered yet".** After the phone's keyboard had opened and closed a few times, the desktop could misread an empty input box as holding text (`──⏵⏵ auto mode on …`) and refuse every send to that session, retrying forever. It now reads the screen at the pane's real size. Affected every release since 0.1.0.
91
+ - A prompt claude is holding in its own queue is no longer reported as lost.
92
+ - The composer's backlog button counts waiting and failed rows as two numbers, and a tap opens exactly those rows.
93
+ - The fan-out prompt has a clear button (two taps, with *put it back* until you type).
94
+ - The LAN address chips skip VM bridges and tunnels.
95
+ - Combined screenshots keep each panel at the chosen upload width, instead of the whole collage, so four phone screens side by side stay readable.
96
+
97
+ ## 0.1.6
98
+
99
+ ### New
100
+
101
+ - **Sync every repo at once.** A sync button in the launcher header pulls, pushes or syncs every repo that has an origin and an upstream, the git view's three buttons over the whole list. Pulls run three at a time and pushes one at a time, each with its pre-push checks on the desktop. The run continues if you close the sheet, and Stop drops what is still waiting.
102
+
103
+ ### Fixes
104
+
105
+ - **waterplane is on npm.** 0.1.5's npm publish was refused because the package did not name its repository, which npm needs to check the provenance. `npm i -g waterplane` now installs this release, with a provenance attestation.
106
+
107
+ ## 0.1.5
108
+
109
+ ### New
110
+
111
+ - **A plugin manager on the phone.** Settings › Tools › plugins lists the plugins published in the waterplane-dev GitHub organisation, each with a maturity label. Install one, update one, or add a plugin by its repository URL. Only plugins with no dependencies of their own can be installed this way, and nothing installs or updates by itself: every change waits for your tap and ends in a receipt.
112
+ - **Update waterplane from the phone.** For installs made with `install.sh`, Settings › Tools › updates has an update button and a roll-back to the previous version, and says when the restart is done. The desktop checks once a day for a new version; that check can be switched off. Installs from npm or a git checkout show the exact command to run instead of a button.
113
+ - **The GitHub Copilot CLI plugin is available as a preview.** Install it from the plugin manager to drive Copilot sessions from the same phone: its launch modes, slash commands, plan box, context window and usage show up where they do for `claude`, and the conversation archive lists its conversations too. What a backend cannot do is said in words next to the control instead of the control being greyed out.
114
+ - **"When idle" on the CLI restart banner.** Arm a restart of the CLI and it fires once the session has nothing running.
115
+ - **The words in a marked area, read on the phone.** A new optional extension, text in marks (off until you switch it on), reads the text inside a highlight, box or circle you draw in the annotator (English and German) and writes it into that mark's note, unless you have already typed one. Switching it on downloads its engine (about 8 MB) from your desktop once; the reading runs on the phone.
116
+ - **Send offers to restart onto the newer `claude` first.** When a session still runs an older `claude` than the one installed, a plain Send asks: "Restart, then send" reopens the same conversation on the new version with your words as its first prompt; "Send on <old>" sends as before and is not asked again for that version.
117
+ - **The context sheet has a Skills chart.** It shows which skills entered a window, when, and what brought them in.
118
+ - **Closed sessions look like open ones.** "Recently closed" in the launcher and the conversation archive draw each row as the session's own card, including the context spark it ended with.
119
+ - **Small things.** A day axis on a chart names days (one dated tick per day, not 12:00 / 00:00). The files viewer shows the token and character count of instruction files. The annotator toolbar picks the top or the left edge, whichever leaves the picture larger, and wraps instead of scrolling. The floating terminal toolbar has uniform 36 px buttons. The Android app follows the phone's light or dark setting. Back from the annotator on a desktop, the caret is at the end of the compose box. A skill's description is read the way a YAML loader reads it, so the context weight no longer counts a skill with a byte-order mark or a quoted key as all body.
120
+ - **VS Code extension 0.6.0 and 0.6.1.** All sessions shows the same token stats as the phone, with live limits from a local desktop, and token stats work on a machine with Copilot and no Claude Code. In 0.6.1 the Copilot row opens Copilot Chat's token use without asking to sign in to GitHub.
121
+
122
+ ### Fixes
123
+
124
+ - **Repo readings work on an installed release.** 0.1.4's release left out a file the health engine imports, so every reading on an `install.sh` or npm install failed with `ERR_MODULE_NOT_FOUND`. The release build now refuses to ship an engine with a missing import.
125
+ - **Re-running `install.sh` says what it did.** It names the run up front and at the end: a first install, an update from the version you had ("updated 0.1.4 -> 0.1.5"), or the same version again because there is nothing newer.
126
+ - **Starting a session on a desktop without Claude Code now says so.** You get "Claude Code isn't installed" and how to install it, instead of a bare "[exited]".
127
+ - **A session started while its CLI is being updated says so.** A package-manager upgrade removes the command for a few minutes; a session opened then (Claude Code, opencode or any other backend) is refused with "being updated, start it again once it is done" instead of `[exited]`, and the update button will not start a second install over one already running.
128
+ - **Security hardening (third pass).** Repo files that are links pointing out of the repo are refused rather than followed (inbox, outbox, `.env`, screenshots). A repo's own committed health engine, and the build listings a repo supplies, run only after a one-time approval you give. Thumbnails run under a deny policy. Origin and Host checks, the login rate limit and device-token minting are tighter, the release APK is no longer remote-debuggable or backed up, and several commands no longer pass values through a shell.
129
+ - **Answers and queue rows say what happened.** An answer is shown as queued only when the link is down, a failed queue row says it needs trying again, and a question cut at the host's length cap is marked as cut.
130
+ - **Unavailable controls say why in text** instead of being greyed out.
131
+ - **Idle and agent state is steadier.** A redraw over an idle prompt no longer clears "idle", an agent that woke after its notification ends when the CLI marks it finished, and a dynamic workflow's agents are read so the reader stops saying idle over one.
132
+ - **Dictation comes back after a dropped link.** The desktop's speech recogniser is asked again when the link returns.
133
+ - **A `tmux kill-server` typed inside a session can no longer kill the host's own tmux server.**
134
+ - **Repo readings:** the worktree toggle is gone (a worktree's readings are its repo's history again), and a pending health approval holds both verbs in one box.
135
+ - **A gated desktop's refusal to a tokenless probe counts as an answer** on the LAN route, so the host is no longer shown as unreachable.
136
+ - **A header pin for a plugin is one icon that opens its menu**, not the whole panel. The setup button for the build list reads "write build list", with what it writes said in text under the finding.
137
+
138
+ ## 0.1.4
139
+
140
+ 0.1.3 was tagged but never published; its notes below ship with this release.
141
+
142
+ ### New
143
+
144
+ - **Every device can show your tabs in the same order.** On by default: the tab order and which sessions you opened most recently are shared between your devices, so a tab sits in the same place on the phone and on the desktop. The switch is per device, in Settings › Appearance › "same tab order on every device"; a device that turns it off keeps its own order.
145
+ - **A data saver or battery saver offers, once, to stop sharing the tab order.** When this app's data saver, the phone's data saver or Android's battery saver comes on, you are asked once per saver spell whether to stop sharing; nothing changes unless you say yes. Detecting Android's battery saver needs this release's APK.
146
+ - **A list button at the left edge of the tab strip shows every open tab as a vertical list.** It carries the number of open tabs. Names wrap in full, the repo and state are in words under each, rows wear their repo's tint, and tapping a row opens it.
147
+ - **Bookmark a conversation and find it again.** A session's menu has a bookmark line with a one-line note. The archive has a "Bookmarks (n)" filter, a toggle and note on each row, and a "read" button that opens the conversation read-only without starting `claude`.
148
+ - **The key row sends any key combination.** Ctrl, Alt and Shift stay held for the next key (tap once to hold, twice to lock, three times to let go). A new Keys list has `claude`'s own shortcuts, one tap each. The row also offers the shortcuts the CLI names on screen, such as "shift+tab to cycle".
149
+ - **The session header can be shortened by dragging.** A grip under the header clips it from the bottom (status line first, title last) and a tap shows it all again. It is remembered per device. The star and follow-up flag moved to the title row.
150
+ - **The context sheet names the dearest subagents and warns when one grows large.** It lists the five costliest agents with requests, peak window, tokens and cost. You get one push when a running agent passes a line you set (200k to 500k), and an "interrupt and re-plan" button on the large-agent card. It only warns; it never stops an agent.
151
+ - **The launcher lists repos with the most open sessions first.** Alphabetical order is still a choice in Settings; a device that already chose it keeps it.
152
+ - **"Assess and propose improvements" on the health index posts its proposals as held backlog rows.** Each proposal is a row you can fire, edit or delete. The session itself changes no file.
153
+ - **Repo health quotes git's refusal and handles committed bundles.** A repo git refuses to read is no longer called "not a git repository"; git's own words and suggested fix are shown, and a failed read is said once. Files marked `linguist-generated` or `linguist-vendored` in `.gitattributes` no longer count as your longest file. A repo with no `CLAUDE.md` now scores instead of showing no score. When a repo's own copy of the health engine fails, the readings offer a prompt to switch to the desktop's engine.
154
+ - **The desktop view (experimental) goes fully fullscreen.** Fullscreen covers the status strips too. The controls sit behind one draggable round handle, and Android hides its status and navigation bars (older APKs keep theirs). The desktop typing box no longer auto-capitalises or autocorrects. The extension's settings row now carries an "experimental" tag.
155
+ - **`claude` update checks work for the native install.** The host asks npm for new versions, on the channel `claude` itself follows, so the update banner no longer depends on the CLI printing its own nag.
156
+
157
+ ### Fixes
158
+
159
+ - **A restart says why.** The restart toast and strip name the reason and the new build, for example "desktop restarting (npm run restart · new build ad1f6b9) · 12 s · usually ~30 s".
160
+ - **Pasting a picture next to the annotator asks instead of replacing your marks.** One paste handler now decides, so a screenshot pasted while another is being marked can no longer wipe that one's marks.
161
+ - **Ctrl/Cmd+Return in the annotator sends the picture first, then the prompt.**
162
+ - **A stopped download can be removed from the strip itself.** A file the desktop no longer has reads "no longer on the desktop" instead of "tap retry".
163
+ - **A finished fan-out target whose session has closed no longer reads "starting…".**
164
+ - **Repo headers in the launcher scroll away with their rows.** A tall header (two chip rows) no longer peeks out under the next one.
165
+ - **Connection health is clearer.** The unconfirmed-prompts banner can be cleared where it stands, and the median-ping note counts only the replies that came back.
166
+ - **The Send sheet's option groups have visible headings** ("What it waits for", "How many at once", and so on).
167
+ - **The installer explains a missing `claude`, then carries on.** It also says why `npm i -g` can fail and what to use instead.
168
+ - **The context-weight row no longer mentions Copilot in a Claude-only repo.** Copilot is weighed only where the repo has its own Copilot instruction file.
169
+
170
+ ### Docs
171
+
172
+ - The Impressum page and footer links, a GDPR paragraph and a controller address are on the site's privacy pages. The site header and footer say waterplane is open source and link the repo.
173
+ - The comparison docs now say iOS uses the web app rather than "No".
174
+
175
+ ## 0.1.3
176
+
177
+ ### Fixes
178
+
179
+ - **The installer names everything missing at once.** Before downloading
180
+ anything it lists what this machine lacks (claude, tmux, git, Tailscale), so
181
+ one round of fixes is enough instead of one re-run per missing piece.
182
+ - **A Mac account without admin rights is told what to ask for.** The installer
183
+ and `doctor` say which of tmux, the Xcode Command Line Tools and Tailscale an
184
+ administrator has to install, and never offer a `brew install` that would fail
185
+ because Homebrew belongs to another account.
186
+ - **`doctor` no longer calls Apple's git stand-in "git present".** Without the
187
+ Xcode Command Line Tools, `/usr/bin/git` only offers to install them; the row
188
+ now fails and names `xcode-select --install`.
189
+ - **The npm package is published.** 0.1.2's publish job failed after building
190
+ the package, so 0.1.2 never reached npm despite its note above; 0.1.4 is the
191
+ first version there, published by this repository's CI with provenance.
192
+
193
+ ### Docs
194
+
195
+ - `docs/install.md`: installing on a Mac without admin rights, and the `EACCES`
196
+ fix for `npm i -g`.
197
+
198
+ ## 0.1.2
199
+
200
+ ### New
201
+
202
+ - **Edit or cancel a waiting prompt from the next-prompt strip.** A pencil opens
203
+ the prompt composer over the row's full words; cancel puts the words back on
204
+ the pad, so nothing typed is lost.
205
+ - **Clear the health board's warnings you have read.** A two-tap "clear N
206
+ warnings" hides what you saw; the next new miss brings its row back.
207
+
208
+ ### Fixes
209
+
210
+ - **Switching a session's model or effort no longer changes the defaults for
211
+ new sessions.** The model wheel, the model sheet and a relaunch only change
212
+ the session they act on; defaults are set in Settings. A launch with no model
213
+ set now starts on the account's default, not on whatever the CLI's own
214
+ `/model` last saved.
215
+ - **One tap on the CLI-restart banner is one relaunch.** A double tap no longer
216
+ opens a second `claude` on the same conversation, a relaunch keeps the
217
+ session's own model, effort and mode, and the phone says when the desktop
218
+ restarts.
219
+ - **Pasting a screenshot that is already open for marking no longer uploads it
220
+ twice.**
221
+ - **A shell's link card stays folded** instead of flipping open and shut.
222
+ - **The installer explains a missing `claude`.** It prints the install command,
223
+ says what `claude` needs (a paid plan, an API key, or a local Ollama model),
224
+ and offers to continue without it; a local-only setup is no longer reported
225
+ as broken.
226
+ - **The npm package can be built on Linux.** The release build used a
227
+ macOS-only `tar` option, so 0.1.1 never reached npm; 0.1.2 is the first
228
+ version published there, by this repository's CI with provenance.
229
+
230
+ ## 0.1.1
231
+
232
+ ### Fixes
233
+
234
+ - **The release tarball carried an extension that is not part of the open-source
235
+ project.** 0.1.0 was built with a private extension switched on; 0.1.1 ships
236
+ only what this repository contains. A release build now refuses an extension
237
+ the public tree leaves out, and the installer no longer names one.
238
+ - **No more `tar: Ignoring unknown extended header keyword` lines on Linux.**
239
+ The tarball is built without macOS extended attributes.
240
+ - **`waterplane doctor` sees a port taken on the Tailscale address.** It said
241
+ "port 8770 is free" while another host held it there, and the service then
242
+ restarted in a loop.
243
+ - **The port-in-use exit no longer tells an installed user to run
244
+ `npm run restart`**, which only exists in a checkout.
245
+
246
+ ## 0.1.0 — first public release
247
+
248
+ Everything below already existed privately; this is what the first public
249
+ version contains, plus the work done to make it fit to publish.
250
+
251
+ ### Features
252
+
253
+ - **Sessions** — spawn and attach real `claude` CLI sessions per repo, worktree
254
+ or branch over one WebSocket; model / effort / permission mode per session;
255
+ fork a session; adopt sessions started in your own terminal; survive a host
256
+ restart via `--continue`, or live inside tmux with `USMC_TMUX=1`.
257
+ - **Reader view** — a plain-DOM alternative to the terminal for the same
258
+ session, parsed from Claude's own conversation log, with an outline, find bar
259
+ and an unread watermark.
260
+ - **Backlog** — queued instructions that fire into fresh worktrees (parallel) or
261
+ one session (queue), with turn boundaries taken from Claude's hooks.
262
+ - **Usage-limit auto-continue** — detect the limit, resume at the reset time,
263
+ and reopen the conversation with `--continue` when the CLI exited outright.
264
+ - **Builds** — saved shell build commands runnable from the phone with no Claude
265
+ session, so a rate limit doesn't stop you shipping an APK.
266
+ - **Git** — diffs, stage/unstage, commit, branch create/switch/delete, push.
267
+ - **Images and files** both directions, with annotation, zoom and swipe.
268
+ - **Prompt detection and one-tap approve**, Web Push notifications, voice
269
+ dictation, slash palette, search, speed test, usage meter, LAN password gate,
270
+ write-only secret entry.
271
+ - **Decision oracle** (optional, off by default) — a second model suggests an
272
+ answer to routine prompts; never for permission, destructive or plan prompts.
273
+
274
+ ### Security
275
+
276
+ - **Same-origin guard on `/api/*` and the WebSocket.** Previously the WS had no
277
+ `Origin` check and the API answered `access-control-allow-origin: *`. Since
278
+ loopback and Tailscale peers are trusted without a password, any web page open
279
+ in a browser on the host — or on any tailnet device — could open a socket,
280
+ spawn a session and execute code, without ever being on the tailnet. Both
281
+ `Origin` and `Host` (DNS rebinding) are now checked, with `Sec-Fetch-Site` as
282
+ the backstop for cross-origin GETs, and no `/api` GET mutates state.
283
+ - **Worktree containment.** `newWorktree` accepted a `basePath` off the request
284
+ body with no guard; it is now confined to the scan root, and the containment
285
+ check compares realpath-resolved paths.
286
+ - LAN password minimum raised from 4 to 8 characters.
287
+ - The file viewer no longer renders dotenv files, so the secret sheet's "never
288
+ shown back" promise holds for the app's own surfaces.
289
+
290
+ ### Safety
291
+
292
+ - `bypassPermissions` and `dontAsk` require an explicit confirmation, mark the
293
+ control as dangerous, and show a standing indicator while armed.
294
+ - `install-service.sh` warns before baking an inherited `USMC_ALLOW_PUBLIC=1`
295
+ into a service that then runs on every login, and ships an uninstaller.
296
+
297
+ ### First run
298
+
299
+ - **`npm run doctor`** — preflight for the failures that are otherwise silent:
300
+ logged-out `claude`, missing `node-pty`, no Tailscale IP, no secure context,
301
+ busy port. Also runs at boot; `USMC_PREFLIGHT=0` opts out.
302
+
303
+ ### Project
304
+
305
+ - `npm test` runs every `e2e-*.mjs` via `scripts/run-e2e.mjs`; the previous
306
+ hand-maintained list had drifted to a third of the suite. CI runs the full
307
+ suite on Linux and macOS.
308
+ - README rewritten against the code, `.env.example` completed, and SECURITY.md,
309
+ NOTICES.md, CONTRIBUTING.md, issue/PR templates added.
310
+ - Public name is **UNSUCK AMC**. `usmc` remains only as an internal identifier
311
+ (`USMC_*` env vars, the `.usmc/` state directory, npm workspace names).
312
+
313
+ ### Since the first private snapshot (2026-10-07)
314
+
315
+ - **Windows from a Windows checkout.** Build in PowerShell, and `npm run
316
+ restart` / `stop` / `start` / `doctor` / `dev` run the host inside WSL2 from
317
+ the same checkout (`scripts/windows/host.mjs`): `setup` turns on mirrored
318
+ networking and installs the pinned Node and a Linux `claude` in the distro
319
+ without sudo; a hidden PowerShell keeper restarts a crashed host;
320
+ `autostart` starts it at every logon. Under WSL a Windows-style
321
+ `WATERPLANE_ROOT` (`c:/dev`) is its `/mnt/c` mount, and the Windows
322
+ `tailscale.exe` is found through interop (MagicDNS name, `tailscale serve`).
323
+ `npm run restart` run inside WSL (a session on the phone) hands off to
324
+ Windows, and a restart never leaves two keepers starting two daemons.
325
+ See `docs/notes/distribution.md`.
326
+
327
+ - **The host no longer freezes for minutes on a slow disk.** On WSL reading a
328
+ Windows drive, three paths held the event loop on synchronous file and git
329
+ calls: the setup sweep's git probes and folder walks (Android, APK, build
330
+ scan — and every restart re-checking every repo), the artifact walk behind the gallery search and each turn end's
331
+ new-image scan, and a `git status` per repo on every listing. All three now
332
+ run in the background or are reused while fresh. The boot doctor no longer
333
+ reports a slow `claude`/`git`/`curl` lookup as "not found".
334
+
335
+ - **The usage gauge reads again in an untrusted folder.** claude 2.1.293's
336
+ unnumbered trust box made the usage probe press "No, exit", so the phone
337
+ showed `? / ? wk`. The probe now walks to "Yes". The phone's answer card no
338
+ longer highlights "No, exit" as the primary button on that box.
339
+
340
+ - **`WATERPLANE_ROOT` and `WATERPLANE_STATE_DIR` in `.env` are honoured.** They
341
+ were read from the process environment only — a root set in the repo `.env`,
342
+ as `.env.example` said to, was silently ignored. The repo and per-user `.env`
343
+ now count for both.
344
+
345
+ - **Installable without a checkout.** `npm run release:build` makes one
346
+ platform-independent tarball (production deps, all node-pty prebuilds) plus an
347
+ npm package; `deploy/install.sh.tmpl` renders the `curl | sh` installer, which
348
+ downloads a pinned Node (`deploy/node-version`) and the tarball, verifies both
349
+ checksums, and stops with a sentence when `claude` is missing (this drives
350
+ Claude Code first; opencode is experimental). The new `waterplane` command
351
+ runs `start`, `doctor`, `version`, `service install|uninstall|status` (launchd,
352
+ systemd user unit, WSL guidance) and `update [--check|--rollback]`, an
353
+ explicit, checksum-verified self-update that never runs on its own. `doctor`
354
+ gains WSL checks and now exits 1 when a check fails. Windows is supported
355
+ through WSL only. See `docs/notes/distribution.md`.
356
+
357
+ - **Two Android builds with two keys.** `dev` (`<appId>.dev`, the owner's
358
+ build: self-update, quiet installs) and `play` (the canonical app id: never
359
+ installs itself, every install asks, and the page says so in words). The
360
+ location prompt now follows an in-app explanation. The owner's app moves to a
361
+ new id once; `packages/app/README.md` has the migration.
362
+
363
+ - **Open source, not open contribution.** Features arrive as intent requests,
364
+ drafted and checked by the contributor-side `feature-request` skill; code PRs
365
+ are merged only for a failing test or a docs fix (CONTRIBUTING.md).
366
+ `npm run release:public` builds the public repo's snapshot from an allow-list
367
+ and refuses to write while its secret and personal-data scan has hits.
368
+
369
+ - **USMC is now waterplane.** Every brand-bearing value — env
370
+ prefix, config and state dirs, storage keys, cookie, WS subprotocol, pairing
371
+ scheme, launchd label, app id — now has one source,
372
+ `packages/shared/src/brand.ts`, with the old USMC names kept in its `LEGACY`
373
+ table and read as fallbacks: an existing install keeps working unchanged, and
374
+ a knob set under its old `USMC_*` name is reported once at boot with the name
375
+ to use instead. The docs, the skills and the visible strings follow the new
376
+ name; history in this file keeps the name it was written under.
377
+
378
+ - **The model picker was a typed field, offering nothing, over a list that had
379
+ gone stale.** Two separate faults, visible as one blank box. The host's
380
+ `claude` descriptor names no models on purpose — the catalogue belongs on the
381
+ side where a person picks from it, so that there are not two tables that must
382
+ agree — but `modelChoices` could not tell that deliberate empty from
383
+ opencode's "nobody asked ollama", so the day a desktop described two backends
384
+ the new-session model control silently became a free-text box: the list was
385
+ still correct, still shipped, and unreachable from the only control that shows
386
+ it. Claude's empty catalogue now falls back to that list; a non-empty one from
387
+ the host still wins wholesale, and every other backend keeps the free-text
388
+ rule. Meanwhile the control offered `aliases || ids` and never both, so the
389
+ version list was unreachable by construction too, and the ids themselves had
390
+ drifted far enough to be missing the model the app was running on while still
391
+ offering a `[1m]` variant the installed binary does not name. The ids are now
392
+ read off that binary's own strings (the re-derivation is a one-liner in the
393
+ file, and the shape is pinned by a test), and `ModelField.tsx` is one
394
+ drop-down with *Aliases* and *Versions* as groups — with a stored id the
395
+ catalogue does not name shown as ITSELF, because a `<select>` whose value
396
+ matches no option renders as the first one and would have read back "default"
397
+ for a model that is set.
398
+
399
+ - **New sessions can ask which backend and model to run, instead of applying
400
+ the defaults silently.** The defaults are a good answer for the session you
401
+ are not thinking about, and the wrong shape for running a cheap model for a
402
+ quick question and an expensive one for the work after it: doing that against
403
+ a default is three screens, and forgetting the last one is silent — the
404
+ session starts, looks right, and is on the wrong binary until the output feels
405
+ off. `usmc.launchAsk` (synced, off by default) puts the same two controls
406
+ where the decision is. The answer applies to **that launch only** — it never
407
+ writes the defaults back, or the next session would inherit a choice made for
408
+ this one. It is never asked on a **resume** (a resumed conversation carries
409
+ the launch it was recorded with; asking there offers to continue it under a
410
+ different binary) and never over a caller that already decided; both refusals
411
+ are one pure, tested predicate rather than a condition inline. Nothing is
412
+ queued while the question is up, so closing it starts nothing. The gate is
413
+ every fresh start's, not `openCwd`'s: the launcher's repo row and the Start
414
+ sheet each build their own create, so gating the one function whose name says
415
+ "open a session" left the switch doing nothing for the tap people actually
416
+ use. `createOp.test.mjs` now reads the source for that too — a fourth way to
417
+ start a session, or an existing one that stops asking, fails by name.
418
+
419
+ - **The context curve is drawn while the session is working, not only after
420
+ it stops.** The launcher row's miniature was rebuilt on the turn boundary and
421
+ on a sweep that skipped anything younger than `IDLE_PING_MS` — two callers,
422
+ one condition: the session went quiet. A session mid-turn, spinner repainting
423
+ every frame, was therefore never refreshed, so a new session's row carried no
424
+ curve for the whole of its first turn — blank on exactly the session whose
425
+ context was climbing fastest — and a restored session that had printed nothing
426
+ to this host process carried none either. The sweep's gates belong to the
427
+ limit scan, which reads the SCREEN and must not read a half-drawn repaint; the
428
+ miniature reads the CLI's log, which does not care. It now refreshes ahead of
429
+ both, for one `statSync` per live session per sweep. `e2e-ctxgraph.mjs` pins
430
+ it with a session poked often enough that it is never quiet.
431
+
432
+ - **A name nobody typed no longer survives an edit.** The card only titles
433
+ itself when somebody actually named the schedule (`typedName`) — but the
434
+ editor seeded itself with the stored `name`, which is the host's
435
+ `text.slice(0, 120)` when nobody did. Edit the prompt, save, and the old
436
+ fragment no longer prefixed the new words, so it came back wearing the
437
+ authority of a chosen name: a mid-word slice of a prompt that no longer
438
+ existed, crowning the row on both surfaces. Both seeds now re-derive through
439
+ the same predicate, and the round trip is pinned by a test.
440
+
441
+ - **Three more places said a wall clock in the desktop's locale.** The skip
442
+ verdict stored on the row (`skipped the 9/17/2026, 4:00:00 PM run`) printed
443
+ beside the phone's own rendering of that same instant, which the card appends
444
+ from `occurrence`; the save and skip toasts did the same. The verdict drops the
445
+ date (the instant already travels as a number) and the toasts say a duration —
446
+ `saved · next run in 2h 10m` — which reads the same in every locale.
447
+
448
+ - **Smaller ones from the same review:** the *see them in Activity* hand-off
449
+ labelled its filter "that have already run" over rows whose own verdict says
450
+ they never did (a one-off the desktop slept through is missed, not run) — it
451
+ says *been and gone*, like the sentence it is tapped from; the schedules chip
452
+ called its pool "armed rules" and then printed the unarmed count twice when
453
+ nothing was armed at all; and the four schedule verbs that leave the sheet
454
+ (*now*'s siblings — skip next, session, repo session, the spent hand-off) are
455
+ in the feature catalogue, so "which button does nobody press" can see them.
456
+
457
+ - **A schedule card no longer prints the same sentence three times, in three
458
+ lengths.** Its header showed `name` and its body showed the first 110
459
+ characters of the prompt — and `name` is not a name: when nobody types one the
460
+ host fills it with the prompt's own first line cut at 120. So one string was cut
461
+ twice and ellipsised again by CSS at whatever width the phone was, and a card
462
+ ended on *"already fi"*. `typedName` in `@usmc/shared` is the single test for
463
+ "did somebody type this, or is it a slice of the text underneath it" — the
464
+ backlog's `realLabel` is now a delegate to it, the card asks it of `name`, and
465
+ Activity asks it of `Intent.title` (a schedule row there was a 120-character
466
+ fragment of its own prompt). A derived name is simply not rendered; the prose is
467
+ the title, which is what it had all along. The prompt itself is now clamped by
468
+ LINES and not by characters, in the app's ONE three-line clamp with a tap to
469
+ open it, in the UI font rather than mono — monospace says *this is a command*,
470
+ and a scheduled prompt is a sentence.
471
+
472
+ The card also answered one question in two vocabularies. The `SyncChip` says
473
+ WHERE the rule is stored, the tag beside it says WHEN it fires, the rule line
474
+ says WHAT it is — so *no next run* became `not armed`, the word the launcher
475
+ chip and this sheet's own filter bar already use for that bucket, and the
476
+ `one-off`/`repeats` chip went away because `describeRule` now leads with the
477
+ kind (*every Thu · 16:00*, matching *once · …*). That matters more than it
478
+ sounds: the section headings are not sticky, so a card scrolled past one has
479
+ only its own lines to say which kind it is.
480
+
481
+ Offline, the verbs that need the host are still absent rather than dimmed — but
482
+ the reason is one fact about the link, and printing it under every card in the
483
+ list buried the per-row facts that actually differ (this save is queued, that
484
+ one gave up). It is said once now, in the sheet's banner, naming every verb the
485
+ dead link takes away and naming *edit* as the one that still works because a
486
+ save is a durable op. Two dead branches went with it: `spent` was constantly
487
+ false on every card that renders (the list is cut by the negation of the same
488
+ function, against the same clock, with no timer to change it), and the foot's
489
+ sentence stopped claiming the spent one-offs *ran* — `isSpentOnce` reads the
490
+ clock and nothing else, so one the desktop slept through never fired and
491
+ Activity buckets it as failed. It now says they have *been and gone — run or
492
+ missed, Activity's row says which*, under a `History` icon: a green tick over a
493
+ missed run is the same lie in an icon.
494
+
495
+ - **A one-off that has been and gone is no longer a schedule.** Schedules listed
496
+ every prompt that had already fired, and the launcher's chip counted them: ten
497
+ spent one-offs put a permanent *10 not armed* on a desktop holding nothing
498
+ pending, and tapping it opened *showing the not armed · 10 of 10* — a filter
499
+ naming a state with no way out. A one-off cannot be re-armed (`nextFireAt`
500
+ answers null for ever), so it is not a thing that is going to happen; it is an
501
+ account of a thing that did, which is Activity's row, for its whole life, with
502
+ what it produced and where it ran. `isStandingSchedule` is the cut, and it is
503
+ the SAME function on both sides — the chip counts with it and the sheet lists
504
+ with it, so the badge and the list cannot disagree. The sheet names the spent
505
+ ones in a sentence at its foot with a tap that opens exactly those rows in
506
+ Activity, and the empty state says so rather than reading as *your schedules
507
+ are gone*. A one-off still in the FUTURE with nothing armed is unaffected: that
508
+ one really was switched off and the switch really does undo it.
509
+
510
+ - **The same row now gets the same answer on both screens.** Activity refused
511
+ *run it now* on a spent one-off while the schedule sheet offered it, for the
512
+ same row and the same tap — and the sheet was right: the host revives the row
513
+ in place and fires it, which is exactly what you want for a schedule missed
514
+ while the desktop slept. Both surfaces now take their verdict, and their
515
+ sentence, from one string in `@usmc/shared`; Activity also reads *spent* off
516
+ the shared edge rather than its own, which called a one-off spent while the
517
+ host still had it armed inside its grace window.
518
+
519
+ - **No wall clock is written into a wire string any more.** `missed — the host
520
+ was not running at 9/10/2026, 9:52:00 PM` was formatted on the desktop, in the
521
+ desktop's locale, and read on a phone two lines under `Do., 10. Sept., 21:52`
522
+ — one instant, two formats, one card. The instant travels as a number and the
523
+ phone prints it (the schedule row now shows the occurrence it missed); the
524
+ sentences keep the grace window, which is a duration somebody configured and
525
+ reads the same everywhere.
526
+
527
+ - **"At this rate" now has an answer in both halves of the usage screen, and a
528
+ 96% cache share has a verdict on it.** The two live windows projected a *full
529
+ around HH:MM* only when the window filled before its reset, and said nothing
530
+ at all otherwise — which is the ordinary case for the five-hour one, and reads
531
+ as a projection that could not be made rather than as the good news it is. A
532
+ window that sees itself out now says so in the unit it has an answer in: *on
533
+ track for ~13% by the reset at that rate*. The instant, where there is one, is
534
+ written like every other on that screen — the weekly projection lands days out
535
+ and a bare `15:25` for it was the wrong-day reading the parse refuses to make
536
+ upstream — and it carries the distance ("in 26h") beside it, because a date is
537
+ only an answer after you have done the subtraction. Same arithmetic for both
538
+ branches, still absent from a flat rate, a rate falling, fewer than two
539
+ readings twenty minutes apart in the current window, or a reading whose reset
540
+ has already passed.
541
+
542
+ The other question that screen provoked and could not answer: whether being
543
+ 96% cache reads is the cache working or the same bloated conversation being
544
+ re-read for ever. The SHARE cannot tell those apart and is no longer asked to
545
+ — a cache read bills at a tenth of the input rate, so a high share is the
546
+ cheap shape of the same traffic and the only way to lower it is to re-send
547
+ that context at full price. Two ratios under it can: reads per written token
548
+ against what a write has to earn back (derived from the tier mix actually
549
+ written, ~1.4 reads at the 5-minute rate and ~2.2 at the 1-hour one — below it
550
+ the caching is losing against sending the tokens fresh, which is sessions
551
+ dying before their prefix is re-read and not a context that is too big), and
552
+ the context an average turn carried against the ~200k where this desktop's own
553
+ logs found the spend concentrating. Sentences, never a gate, and the mean is
554
+ always stated as a mean: the distribution behind it was 1.4% of conversations
555
+ holding 76% of every token.
556
+
557
+ - **A `Stop` hook is the CLI asking to end the turn — and a hook may answer no.**
558
+ A session was spinning `✻ Crafting… (9m 35s · ↓ 34.5k tokens)` while the
559
+ reader two taps away said "idle — nothing running", and the queue typed a
560
+ prompt into it that was never confirmed and was retried four times. Nothing
561
+ was wrong with the hook pipe: every keep-going loop (a `/goal` hook, a
562
+ checklist driver) works by blocking the `Stop` and sending the next step back
563
+ in, and when that happens no `UserPromptSubmit` follows — the continuation
564
+ arrives in the conversation as a meta message, so nothing on the wire says the
565
+ turn resumed. A Stop is now settled against the screen before it is believed:
566
+ the CLI's own working line still printing after it means the turn is carrying
567
+ on, and the hold is re-earned every pass, so a continuation that stops without
568
+ a second Stop cannot leave a session wrongly busy either. One matcher for that
569
+ line, shared with the phone's reader, because the interlock that keeps a
570
+ queued prompt out of a live turn hangs off the answer. The same watch covers
571
+ the other half of the complaint, reported an hour later: `/compact` announces
572
+ nothing whatsoever — no hook of any kind — and grinds for minutes, so the
573
+ screen is the only witness there is. Work the CLI is visibly doing is now
574
+ published as work, whoever failed to mention it.
575
+
576
+ - **A highlighter that sends the words, not a picture of them.** Marking a
577
+ screenshot on a phone has always had one hole in it: the marked copy is
578
+ re-encoded down to the link's width on the way up, so the band drawn round an
579
+ error message survives and the eight-pixel text inside it does not — the agent
580
+ receives a picture of a sentence it cannot read, plus a note saying only where
581
+ the sentence is. The new marker tool swipes translucent ink along a line of
582
+ text (multiplied into the image, so the words underneath stay legible) and the
583
+ band is then READ on the host, from the clean image at the resolution the
584
+ phone still holds, so the prompt carries
585
+ `highlight over "TypeError: cannot read x of undefined"` verbatim. Fewer
586
+ tokens than an image to squint at, and the one part of a screenshot that
587
+ cannot be misread. It uses the same Gemini key the decision oracle does and
588
+ none of its machinery — it decides nothing, is asked for by hand once per
589
+ mark, and what it read is shown on the bar and is editable before anything is
590
+ sent, because a transcription nobody checked is a sentence the prompt
591
+ asserts. No key, no network or no legible words are four different sentences
592
+ and the mark still says where to look (`USMC_OCR=0` turns it off with a key
593
+ set).
594
+ - **A marked image now names its marks.** The note beside an uploaded picture
595
+ was a list of sentences with no handle on it — the prompt log has a message
596
+ whose six marks arrived as six identical copies of `red circle at left`, so
597
+ "this one is wrong" pointed at one of six and a reply could not point back.
598
+ Marks are numbered now, in the words and on the image, from one list, so the
599
+ `#2` in the prompt and the 2 painted next to the mark cannot drift; an exact
600
+ twin (a double tap) collapses to one; the colour is stated only when marks
601
+ differ in colour, since six "red"s on six numbered marks is six tokens buying
602
+ nothing; and the pixel grid the agent ACTUALLY receives is appended, which is
603
+ what makes the percentages convertible at all — absent, never guessed, when
604
+ the final size is not a fact. A collage also says what it is
605
+ (`collage of 3 panels in one row, left to right, numbered 1-3`): the panel
606
+ numbers used to exist as pixels and nowhere else.
607
+
608
+ - **A queued backlog item now says why it is still queued.** The row looked
609
+ identical whether the backlog was waiting exactly as designed or was stuck on
610
+ something only the daemon could see: auto-fire switched off, no session open
611
+ for the repo, the session it was queued for gone, another item holding that
612
+ session, the agent mid-turn, the agent parked on a question. From the phone
613
+ those six are indistinguishable, which made "is this thing working?" a trip to
614
+ the desktop — the same gap the download queue's "why is nothing moving" line
615
+ already closed. Each queued row carries the reason now, computed by the host
616
+ from the very ladder that decides whether to fire (and the per-session half is
617
+ the function `readyForAutoFire` itself delegates to, so the explanation cannot
618
+ drift from the behaviour). It is deliberately live-only: the offline snapshot
619
+ does not carry it, because "the session is working" read from a cache
620
+ describes a session that may have ended an hour ago. The reason also keeps
621
+ itself current — it describes a session, and a session moves without the
622
+ backlog moving — and where one tap fixes it (no session open for the repo, or
623
+ only a session you opened by hand, which auto-fire will never type into) the
624
+ line IS that tap.
625
+
626
+ - **"Hold until idle" waits for a session that can actually run the prompt.** It
627
+ waited for the turn to end and nothing else, so a session parked on a question,
628
+ showing a dialog it could not parse, or blocked on a usage limit counted as
629
+ idle — and the parked text was typed INTO the dialog, where it neither ran nor
630
+ answered. On sessions that report turn boundaries the hold happened to hold;
631
+ on the ones that do not, "no output" is the guess used for "not working", and a
632
+ session waiting for an answer is perfectly silent — so exactly the sessions
633
+ with no hook pipe were the ones this hit. The park now clears on the same three
634
+ facts the backlog has always gated auto-fire on, which is the point: "queue for
635
+ this session" and "hold until idle" are one intent said two ways.
636
+
637
+ - **Your settings follow you, instead of following one browser.** Prompt
638
+ templates, fan-out presets, header commands, the prompt pad, the toolbar
639
+ layout and the new-session defaults all lived in localStorage, so they existed
640
+ on exactly one device: written on the phone, absent on the desktop, and gone
641
+ entirely if the PWA was reinstalled — while a host that already persists the
642
+ backlog, the ack ledger and the audit log sat on the other end of the socket.
643
+ They are kept there now and reconciled on every connect (which is also what
644
+ pushes edits made while the tunnel was down — there is no separate queue). The
645
+ host stores opaque strings and never parses them, so a UI change does not need
646
+ a daemon upgrade; conflicts are last-write-wins on the writing client's
647
+ timestamp, with the loser told the winning value rather than left holding a
648
+ version nobody else has. Only an allow-list of keys travels: the send queue,
649
+ the paired host address and everything describing this device's link stay
650
+ local, because a second device replaying another device's queue is a prompt
651
+ typed twice. Settings → "Synced with the host" says what is covered and can
652
+ force this device's copy onto the others.
653
+
654
+ - **A delivered prompt is no longer reported as lost because the screen was
655
+ slow.** Typing into a session checks that the text echoed in the composer, and
656
+ that check looked exactly once, 500 ms after writing. A session that is WORKING
657
+ redraws its composer on the TUI's own schedule, so the text was frequently
658
+ there and simply not painted yet — and the verdict for "written but never
659
+ seen" is `unconfirmed`, the one result that is deliberately never retried. The
660
+ prompt sat in the composer of a healthy session while the queue showed "not
661
+ delivered · typed, but never appeared on screen". The check now re-reads the
662
+ screen for up to 4 s; looking again is free, it is retyping that stacks copies,
663
+ and nothing about the at-most-once guarantee changes. Alongside it, a backlog
664
+ item can no longer be marked done DURING its own delivery: it flips to
665
+ `running` before the text is typed, and the silence fallback read the quiet of
666
+ a session waiting to be typed into as a finished turn.
667
+
668
+ - **The queued-messages rows are readable on a phone again.** Seven icon buttons
669
+ claimed the whole width of a 360 px screen, leaving the message itself a column
670
+ about one word wide — so a queued prompt rendered as a vertical stack of single
671
+ words, exactly when reading it is the point (deciding whether it is still worth
672
+ sending). The row wraps now: the text keeps a floor of 240 px and the buttons
673
+ drop onto their own line below it.
674
+
675
+ - **Auto-download survives a bad link, and says what it is doing.** A queued
676
+ APK sat at "Tiptoi · 24.0 MB" with a retry button that did nothing, and the
677
+ row could not say whether it had 0 or 18 of those megabytes. Both halves are
678
+ fixed. A `fetch` against a dead Tailscale path does not error, it HANGS, and a
679
+ hung fetch pinned the one active-download slot — so the queue stopped and every
680
+ retry tap returned immediately without starting anything. There are now two
681
+ fuses (no response headers, then no bytes mid-stream, both re-armed per chunk)
682
+ plus a watchdog for the case the fuses were frozen with the page by the phone
683
+ backgrounding the app; a record left `downloading` by a killed page is revived
684
+ on boot instead of spinning forever; `navigator.onLine` gates only the
685
+ automatic path, because it stays true the whole time a tunnel is dead, so a tap
686
+ always gets a real attempt; and the queue is re-tried on a timer, on wake, and
687
+ when the socket comes back. An attempt that moved bytes resets the attempt
688
+ count, so a link handing over 40 KB per try is never given up on — only one
689
+ that delivers nothing, or an HTTP verdict that will not change (403/404/410).
690
+ Pause is its own state (it used to be re-queued and restarted instantly), and a
691
+ download aged out after a week stays `done` with its bytes cleared rather than
692
+ quietly re-downloading itself. On the host, `if-range` is honoured: a resume
693
+ against a REBUILT file at the same path now gets the whole body back instead of
694
+ a 206 the client would append to the old prefix, which produced a corrupt
695
+ artifact that looked complete. Every row carries a status sentence —
696
+ `12.3 of 24.0 MB · 41% · 380 KB/s · 31s left`, `retrying in 12s · resumes at
697
+ 12.3 MB`, `paused · 12.3 MB kept`, `stopped at 63% · tap to retry` — with a bar
698
+ that only animates while bytes actually move, a `resume all` button, and a line
699
+ saying in words why nothing is downloading when nothing is.
700
+
701
+ - **Questions can be answered with no connection, and the answer sends itself
702
+ when there is one.** A session parking on a choice was the one thing the
703
+ offline queue did not cover: the question reached the phone in whatever
704
+ seconds of tunnel there were, and then every route to answering it was gone —
705
+ the approve bar's buttons wrote straight to the socket, so a tap on a dead
706
+ link went into an in-memory queue and died at the next reload, leaving the bar
707
+ on screen, still tappable, still doing nothing, and the session blocked. Taps
708
+ now go through the same durable send queue as everything else, and a new
709
+ **Questions** sheet (the "N waiting" chip on the launcher, which is a button
710
+ now) lists every pending question across sessions and answers them from the
711
+ snapshot, offline, with the age of what you are reading stated out loud.
712
+ What makes a late answer safe is that it names the question it answers: an
713
+ answer is a KEYSTROKE, and "2" means the option you read only while that exact
714
+ box is up — four minutes later it answers something else, or drops a stray
715
+ digit into the composer that the next Return submits. Each queued answer
716
+ therefore carries a fingerprint of the question, and the host refuses to type
717
+ it once that box is gone (`input.ack` state `stale`, naming the question so
718
+ the refusal is actionable) instead of aiming the keystroke at whatever
719
+ replaced it. Because the refusal is exact, an answer is deliberately NOT
720
+ bounded by the queue's 30-minute TTL — a question answered in a tunnel with
721
+ the link back an hour later is the case this exists for, and the session is
722
+ still sitting on it. Answers also jump their lane: prose queued behind one
723
+ would otherwise be typed into the open dialog rather than run.
724
+
725
+ - **A log of every command the app typed into a session, and a link into the
726
+ session to check it.** Automation drives a session through the same PTY a
727
+ person does — a backlog item firing, a fan-out target, an oracle auto-answer,
728
+ a usage-limit `continue` — so all of it lands in the scrollback looking exactly
729
+ like something you wrote, and afterwards there was nothing to consult but the
730
+ scrollback itself, which is the evidence under suspicion. Settings-free: the
731
+ launcher's `sent` button lists everything, the `sent` toolbar item narrows it
732
+ to the session you are in. Each row names the source, whether the app or you
733
+ decided it, the exact text, and how the delivery ENDED — `unsubmitted` (the
734
+ text is sitting in the composer, un-run) stays distinct from `ok`, because a
735
+ log that called both "sent" would state the one thing that is untrue. Tapping
736
+ a row opens the session, so the claim can be checked rather than believed.
737
+ One entry per command, not per PTY write (a delivery types the text and the
738
+ Return separately and re-presses Return up to five times); persisted to
739
+ `<root>/.usmc/sent.json`, so it still answers the question after the restart
740
+ that made you ask it.
741
+
742
+ - **The gallery says what is already on the phone, and the download queue says
743
+ when a file was made.** An outbox tile looked identical whether its bytes were
744
+ still on the host, in flight, or long since downloaded — so the way to find out
745
+ was to tap "to phone" again and spend the 90 MB a second time. Each tile now
746
+ carries an auto-download badge next to the read mark, deliberately in a
747
+ different vocabulary (a phone icon for "on this phone", a spinner and percent
748
+ while it arrives, "queued"/"stalled" otherwise) because "did I read this" and
749
+ "do I have this" are different questions and the eye mark answering both is how
750
+ the double download happened. The viewer's "to phone" button follows the same
751
+ state: already downloaded turns into "on phone · save", in-flight is disabled
752
+ with its percent, a stalled one offers a retry. In the Auto-download sheet each
753
+ queued file now shows when it was produced (with the exact timestamp on hold),
754
+ which is the only way to tell this build's APK from this morning's when both
755
+ carry the same name.
756
+
757
+ - **An annotated image no longer dies with the page.** Marking up a screenshot,
758
+ typing a prompt and tapping "send & run" used to start a plain HTTP upload
759
+ from the tab's memory — and the bytes existed nowhere else, because the marked
760
+ copy had just been drawn on a canvas. A tunnel blip in that window is exactly
761
+ what makes the reconnect watchdog reload the page, so the prompt came back
762
+ (drafts are persisted per keystroke) pointing at an image that had never
763
+ reached the host, and the annotation had to be redone from scratch. Every
764
+ attached file now goes into the send queue first — bytes to IndexedDB, intent
765
+ to the outbox, the path it will land at handed back immediately — and the
766
+ upload is retried from there across a reload, a killed tab or a dead link,
767
+ with the prompt naming it queued behind it. Same rule for picked files and the
768
+ gallery/backlog annotate flow. On top of that, the last-resort reload is now
769
+ vetoed while the annotator is open: everything else the app holds survives a
770
+ reload, and markup in progress does not.
771
+
772
+ - **Prompts no longer disappear between "sent" and the composer.** The submitting
773
+ Return used to be the client's job: the host wrote the text, answered "ok", the
774
+ phone dropped the message from its queue, and 50 ms later fired the Return as a
775
+ separate, unacknowledged message. Everything about that gap is hostile on a
776
+ phone — an undeliverable send is parked in memory, and the reconnect watchdog
777
+ *reloads the page*, which is exactly when the tunnel is flapping — so a link
778
+ that died in it left the prompt sitting typed-but-unsent in the session with
779
+ nothing left to retry and the app saying "sent". The Return now happens on the
780
+ host, which can see whether it worked: the same delivery path the backlog and
781
+ fan-out use types the prompt, checks it echoed on screen, presses Return and
782
+ re-presses until the turn provably starts. A receipt now means *the prompt is
783
+ running*. When it can't be confirmed the app says which of the two it was —
784
+ "in the composer, Return didn't take" (open the session and press Return) or
785
+ "typed but never appeared on screen" (check before re-sending) — and the text
786
+ stays in the recovery bar either way. Typing at a session that is already
787
+ working still goes straight in; it does not wait for the agent to finish.
788
+
789
+ - **The send queue stops giving up on a slow link.** A receipt deadline that
790
+ passes now widens the next one, and an op's deadline is sized from the measured
791
+ round trip instead of a fixed 20 seconds — eight missed windows used to go by
792
+ in under a minute on a relayed Tailscale path and permanently fail a message
793
+ the host had already delivered. A socket that drops mid-send puts its messages
794
+ back immediately rather than holding the session's queue for the full window.
795
+ And the queue's size limit no longer silently drops the oldest message: settled
796
+ entries go first, and anything that has to be pushed out lands in the recovery
797
+ bar with a reason.
798
+
799
+ - **New: Settings → Tools → connection health.** The speed test says how fast the
800
+ link is now; this says what it has been doing to your prompts. Round trip,
801
+ time spent with no connection, forced reloads, how long messages actually wait
802
+ before they run, and — from the host — socket close codes, receipts the tunnel
803
+ ate, and the outcome of every delivery it attempted. It opens with a one-line
804
+ verdict, because "prompts go missing sometimes" has four different causes and
805
+ the numbers underneath are what tell them apart. Everything is local: the
806
+ device half in the browser, the host half in `.usmc/netstats.json`.
807
+
808
+ - **Auto-download keeps only the newest version of an artifact.** An APK named
809
+ with its build hash is a new path every rebuild, so an afternoon of builds
810
+ queued five 23 MB files that were all the same thing — and the phone, which
811
+ downloads one at a time, spent 115 MB of a roaming link to reach the one it
812
+ actually wanted, sitting last in the queue. Every queued item now carries a
813
+ `family` (directory + extension + the name with the variable tokens — hashes,
814
+ build numbers, timestamps, `v2`-style versions — folded out), and a new file
815
+ drops the older queue entries that share it, cancelling a download already in
816
+ flight for them: those bytes are a build that has been replaced. Only strictly
817
+ older entries go, so two files written in the same second both survive; only
818
+ the variable tokens are folded out, so `app-release.apk` never eats
819
+ `app-debug.apk`; and a file already downloaded to the phone is never touched.
820
+ Off per repo with `newest only: off` in Auto-download → Rules.
821
+
822
+ - **The Android app updates its own UI — no more pushing APKs for web changes.**
823
+ Carrying the UI inside the APK is what makes it survive a dead tunnel, but on
824
+ its own it also froze the UI at APK build time, which is the wrong half of that
825
+ trade: the shell is what must be local, not the *version* of it. The daemon now
826
+ publishes what it is serving (`/api/webbundle`: a build id plus per-file size
827
+ and sha256, from the same directory it already serves at `/`), and the app
828
+ checks on launch and every 30 minutes, downloads, verifies every file and hands
829
+ the result to a small native plugin that points Capacitor's WebView at it. A
830
+ new APK is only needed when `packages/app` itself changes — the Java, the
831
+ manifest, the icons.
832
+
833
+ **The build id is a content hash, not a timestamp.** `npm run restart` rebuilds
834
+ constantly, and an id that moved on every build would have the phone
835
+ re-downloading ~1 MB over a roaming link to arrive at a byte-identical bundle.
836
+ Identical sources now produce an identical id and no download at all. It ships
837
+ as `build-id.txt` INSIDE the bundle, so "which build am I running?" is answered
838
+ by reading a file out of whatever bundle is being served — APK or download —
839
+ rather than by bookkeeping that can drift.
840
+
841
+ **A downloaded bundle cannot brick the app.** Every file is sha256-checked and
842
+ a mismatch aborts the whole update (a bundle mixed from two builds is worse
843
+ than no update); a finished download is *staged* for the next launch rather
844
+ than applied under a live session; and every launch increments a counter that
845
+ the web app zeroes only once it has actually rendered — three launches that
846
+ never get there and the native side falls back to the bundle inside the APK,
847
+ which is never deleted and needs no network. Settings → App version has the
848
+ same revert as a button. Installing a new APK also wins by itself: Capacitor
849
+ drops the stored path when the binary version changes, so a sideloaded build is
850
+ never shadowed by an older download. The origin is `http://localhost` either
851
+ way, so the send queue, drafts, the paired host and cached transcripts all
852
+ survive an update. The sha256s are protection against a truncated transfer, not
853
+ against a hostile host — the daemon already runs `claude` on your machine, and
854
+ the bundle only ever comes from the host you paired with.
855
+
856
+ - **An Android APK, so a dead tunnel can no longer take the whole app away.**
857
+ The PWA is served by the daemon, which means the *application itself* is on
858
+ the far side of the tunnel: a reload, the reconnect watchdog, or Chrome
859
+ restoring a discarded tab re-fetches `index.html` from a host that isn't
860
+ answering, and the entire app is replaced by the browser's
861
+ `ERR_CONNECTION_TIMED_OUT` page — send queue, drafts, prompt pad and cached
862
+ transcripts all still sitting in localStorage, all unreachable, because the
863
+ code that reads them is gone. Over plain `http://100.x` there isn't even a
864
+ service worker to cache a shell against it. `packages/app` is a Capacitor
865
+ wrapper that ships the *existing* web bundle inside an APK, so the shell is a
866
+ local asset: there is no navigation left that can fail, `http://localhost` is
867
+ a secure context whether or not `tailscale serve` was ever run, and a cold
868
+ start with the network fully off lands in the working app. Verified on an
869
+ emulator against the live daemon — paired, connected (15 live sessions over
870
+ the WebSocket), then force-stopped and cold-started in airplane mode into the
871
+ full UI, then reconnected on its own when the network came back
872
+ (`.claude/outbox/android-apk/`).
873
+
874
+ **Capacitor, explicitly not Ionic Framework** — they are different products
875
+ and the difference decides everything: Ionic Framework is a UI component
876
+ library, so adopting it would mean rewriting ~30 sheets, the xterm.js terminal
877
+ host, the gallery and the annotator (a reimplementation by another name),
878
+ while Capacitor is the native runtime from the same team and ships
879
+ `packages/web/dist` verbatim, with zero UI changes. A Bubblewrap/TWA wrap was
880
+ rejected because a TWA *is* Chrome — same secure-context rules, same
881
+ navigation, so the shell still arrives over the tunnel and nothing is fixed.
882
+
883
+ In the shell the page origin is the APK's own asset server, so `/api` and
884
+ `/ws` are re-aimed at the paired host: the rules are pure functions in
885
+ `shared/hosturl.ts` (pinned by `e2e-hosturl.mjs`) and the client patches
886
+ `fetch`/`XHR`/`sendBeacon` once at boot rather than editing ~60 call sites, so
887
+ a `fetch("/api/…")` written next month is correct in the APK the day it is
888
+ written. **Only** `/api` and `/ws` are ever re-aimed — the shell's own assets
889
+ stay local by construction, since serving them off the host is the exact
890
+ failure the APK removes. **No host-side change:** the shell's
891
+ `http://localhost` origin already passed the same-origin guard, which was not
892
+ widened. In the browser every one of these functions is a no-op and the PWA
893
+ behaves precisely as before. Known limits (LAN password gate, Web Push,
894
+ background downloads) are listed in `packages/app/README.md`.
895
+
896
+ - **A queued "open a session" now carries the work it was queued for.** Tapping
897
+ a repo with the tunnel down queued a bare `session.create` — an empty terminal
898
+ scheduled for later, with no way to say what should run in it and no way to
899
+ add one afterwards (the queue sheet refused to edit an action). The offline
900
+ tap now opens the start sheet instead, which takes a CHAIN of prompts: the
901
+ first rides inside the create op (typed host-side by `deliverToNewSession`),
902
+ and each further one waits in the same `create:<cwd>` lane until `op.ack`
903
+ names the session, then is delivered only after the previous turn has ended —
904
+ so "read the failing test" → "fix it" → "commit" written on a train arrives as
905
+ three turns, not one glued composer line. A queued create can also be tapped
906
+ to write/rewrite its first prompt, and `+` appends more. If the create is
907
+ discarded, refused or ages out, the prompts behind it fail with a reason
908
+ (text kept, re-aimable) instead of parking their lane on a session that will
909
+ never exist. No wire change — `PROTOCOL_VERSION` stays 1.
910
+
911
+ - **Queued work no longer gives up because the tunnel was down.** Every delivery
912
+ attempt arms a receipt window; when it expired the entry went back in the
913
+ queue with the attempt COUNTED, so eight six-second windows — under a minute
914
+ of a bad link — burned the whole give-up budget and left "open a session here"
915
+ permanently `not delivered · delivery kept failing · 8 attempts`. An attempt
916
+ is now rolled back when the socket wasn't open (nothing reached a host that
917
+ could answer it), durable ACTIONS get a 20 s window instead of a keystroke's
918
+ 6 s (the host answers on accept, so it is pure round-trip budget and a DERP
919
+ relay eats more than 6 s), and a `failed` entry can be retried by hand from
920
+ the queue sheet — same ackId, so the host's ledger still guarantees it runs at
921
+ most once. Before, a failed action could only be deleted: an action has no
922
+ text to restore into a compose box.
923
+
924
+ - **Text typed in a sheet survives the page dying.** The compose bar persisted
925
+ every keystroke per session, but the two places you write text BEFORE a
926
+ session exists — the prompt pad's editor and "start a session with this
927
+ prompt" — kept theirs in React state only. Those are exactly the screens used
928
+ with no tunnel, on a phone that kills backgrounded tabs and reloads itself
929
+ when a reconnect goes nowhere, so a paragraph was lost with nothing to
930
+ restore. Both now write through to `usmc.compose.sheets` on every keystroke;
931
+ an interrupted pad note reopens its editor with the text still in it.
932
+
933
+ - **The plain-HTTP door no longer strands you on the browser's error page.**
934
+ Symptom: the app is replaced by `ERR_CONNECTION_TIMED_OUT` and there is no way
935
+ back. Cause: `http://100.x:8770` is not a secure context, so there is no
936
+ service worker, so there is no cached app shell — any navigation while the
937
+ tunnel is down (a reload, or Chrome discarding and restoring the tab) has
938
+ nothing to fall back on. Three fixes: the same-origin guard now trusts our OWN
939
+ discovered `tailscale serve` front door on whatever port it landed on
940
+ (`--https=443` claims one slot per machine, so a busy host gets fronted
941
+ elsewhere — and the guard refusing it made the app advertise an HTTPS address
942
+ it then 403'd, which is exactly how you end up staying on plain HTTP); the
943
+ "switch to HTTPS" banner now snoozes for a week instead of being dismissible
944
+ forever; and `ws.ts`'s last-resort reload probes `/api/health` twice when no
945
+ service worker controls the page, so a link that answered once but died in the
946
+ next 200 ms can't navigate the app into oblivion.
947
+
948
+ - **The inbox takes every kind of file, not just images.** The whole upload path
949
+ was image-shaped: the phone's picker said `accept="image/*"`, every attach flow
950
+ ran the file through the annotator, and the host's serve gate only handed back
951
+ a short list of extensions — so a PDF, a spreadsheet, a zip or a voice memo
952
+ either couldn't be picked at all or could be written into `.claude/inbox` and
953
+ then never fetched back. Now: a **paperclip button** next to the camera in the
954
+ compose bar (and in the backlog add sheet, the start-a-session sheet, and the
955
+ toolbar as `file`) opens an any-type picker whose files skip the annotator (a
956
+ PDF has nothing to draw on) and go straight up, with their paths in the prompt;
957
+ the host serves them back with a real content-type (office formats, audio,
958
+ archives, fonts, source files), and the gallery viewer PLAYS audio and shows a
959
+ PDF inline instead of offering a dead "Open …" link. Two details that were
960
+ quietly broken: an umlaut in a document name **threw at `setRequestHeader`**
961
+ (an HTTP header is Latin-1) and killed the upload before it started — the name
962
+ is percent-encoded now and decoded host-side; and the upload ceiling moved to
963
+ 64 MB, since a scanned PDF clears 32 MB routinely. Serving widened, **discovery
964
+ did not**: `DISCOVERABLE` (what the gallery walks the tree for) stays
965
+ deliverables-only, because putting source and config extensions in it floods
966
+ the "this repo" tab and the per-turn new-file notifications with every
967
+ `src/*.ts` in the repo — while the curated outbox scope lists whatever an agent
968
+ drops there. `.env` files stay refused on every transport route.
969
+ (`host/files.ts`, `host/api.ts`, `web/App.tsx`, `web/Gallery.tsx`,
970
+ `web/StartSheet.tsx`, `web/Backlog.tsx`, `e2e-docs.mjs`.)
971
+
972
+ - **Auto-download: repos push files to the phone, resumably.** The inbox worked
973
+ in one direction — the phone could send images into a repo, but a 90 MB APK
974
+ coming back was a manual tap that restarted from zero every time the tunnel
975
+ blinked. A repo can now carry a rule (`<repoDir>/.usmc/autopull.json`: scope,
976
+ glob-ish patterns, a size cap, build outputs on/off) saying what is worth
977
+ fetching, and the host queues every match to a persisted, host-wide queue
978
+ (`<root>/.usmc/pulls.json`) — persisted because the file almost always lands
979
+ while nothing is connected, and a restart that emptied the queue would drop
980
+ exactly the pull you were waiting for. The phone downloads it two ways:
981
+ **Background Fetch** where it exists (Android Chrome, installed PWA), which
982
+ keeps running with the app CLOSED and is started from the push handler, so an
983
+ overnight build is simply already there; and a **resumable Range loop**
984
+ everywhere else (iOS included), which persists the accumulated bytes plus the
985
+ offset to IndexedDB as it goes and resumes with `Range: bytes=<n>-` after a
986
+ dead spot, a reload, or the OS killing the tab. The gallery grew a "to phone"
987
+ button for the manual case. Settings → Data usage → auto-download, or the
988
+ download strip next to the send-queue bars. (`host/autopull.ts`,
989
+ `web/pull.ts`, `web/PullSheet.tsx`, `public/sw.js`, `e2e-autopull.mjs`.)
990
+
991
+ - **Big artifacts stream instead of being buffered.** The artifact endpoint read
992
+ the WHOLE file into a Buffer, so a 300 MB APK was 300 MB of host RAM per
993
+ request — and worse, every resumed range re-read all of it to hand back the
994
+ last few MB. Anything over 2 MB is now piped off disk with real range support
995
+ (`accept-ranges`, 206 with a correct `content-range`, and **416** for an
996
+ unsatisfiable range — a 200 there would make a resuming client append a full
997
+ copy to what it already had and call the result complete). Small text
998
+ artifacts keep the buffered path so they still get br/gzip.
999
+
1000
+ - **Start a session with its first prompt — and queue the whole thing offline.**
1001
+ Tapping a repo with no tunnel queued a `session.create` and nothing else: a
1002
+ prompt for that session could not be queued at all, because there is no
1003
+ session id to address until the create lands. The prompt now travels INSIDE
1004
+ the create (`session.create.prompt`), so "open a session in this repo and do
1005
+ this" is one durable op — de-duped by the same persisted ackId ledger, and
1006
+ typed by the same at-most-once `deliverPrompt()` path the fan-out uses (a
1007
+ retry can never produce two sessions or two copies of the instruction). The
1008
+ new sheet is the repo row's notebook button, and the prompt pad grew a fourth
1009
+ target for it (`web/StartSheet.tsx`, `host/deliver.ts` `deliverToNewSession`).
1010
+
1011
+ - **Images queue offline too.** The compose box survived a dead tunnel; the
1012
+ picture attached to it did not — `api.uploadInbox` is a plain POST, so an
1013
+ image picked while offline died at the fetch and the prompt naming it pointed
1014
+ at a file that never arrived. Uploads are now a queue mode of their own: the
1015
+ bytes go to IndexedDB (a photo is megabytes, and localStorage is where the
1016
+ send queue itself lives), the entry sits in the SAME lane as the prompt that
1017
+ references it, and the flusher does the POST when the link is back — so the
1018
+ file is in `.claude/inbox` before the agent is told to look at it. The path is
1019
+ minted client-side so the prompt can name it immediately; if the host renames
1020
+ the file anyway, every queued message that mentioned the prediction is
1021
+ rewritten to follow it. A re-sent upload carries `x-dedupe`, so a tunnel that
1022
+ dropped mid-POST can't leave two copies of the same screenshot.
1023
+
1024
+ - **Auto-send is a button on the queue bar.** "Will send when the connection is
1025
+ back" still needed a tap on *Send now*, because the two switches that decide
1026
+ it (auto-send, ask-on-reconnect) were three screens away in Settings. The bar
1027
+ now carries an `auto on/off` toggle that drives both, so queued work really
1028
+ does go out the moment the link returns. Same state as the Settings pair, not
1029
+ a third setting.
1030
+
1031
+ - **Inbox/outbox paths in the conversation are the file now.** A prompt or an
1032
+ agent reply that names `.claude/inbox/1000073847.png` used to be dead text in
1033
+ the reader view — the file was one tap away in the gallery, but you had to go
1034
+ find it. Those paths (`.claude/inbox/`, `.claude/outbox/`, a top-level
1035
+ `.outbox/`, bare, in backticks, or as a markdown link target) now render as
1036
+ the file itself: a server-made thumbnail for an image, a chip for anything
1037
+ else, tapping through to the full-screen viewer (annotate / ref path from
1038
+ there) or a tab for a document. Matching is narrow on purpose — only paths
1039
+ containing a transport dir, so an ordinary source path in a diff stays text.
1040
+ The gallery's document preview gets the same treatment, so an outbox report
1041
+ that points at the screenshots next to it shows them inline
1042
+ (`web/fileRefs.ts`, `Markdown.tsx` `FileRefCtx`).
1043
+
1044
+ - **Uploads report bytes, and shrink themselves on a slow link.** The compose
1045
+ bar blocks on image uploads ("Send waits for uploads") and all it showed was a
1046
+ spinner and a file count — indistinguishable from a hang while a 4 MB phone
1047
+ screenshot crawled up a roaming uplink. Uploads now go through XHR for
1048
+ `upload.onprogress`, so the strip shows percent, bytes, rate and an ETA over a
1049
+ determinate bar. And before the bytes go out, the image is re-encoded to a
1050
+ width picked from the link: an EWMA of the *measured* upload rate when there
1051
+ is one (the only number that reflects the real Tailscale path, DERP relay and
1052
+ all), else `navigator.connection`. A picker sits right above the annotator's
1053
+ send buttons — and in Settings → Data usage — because auto can't know the
1054
+ content: a 4K UI screenshot with 10px text needs full size, a photo never
1055
+ does. Per device, sticky (`web/uploadScale.ts`).
1056
+
1057
+ - **The offline queue is now per-session, manageable, and asks before it
1058
+ fires.** Three fixes to the same feature:
1059
+ - *One message per session at a time.* The reconnect flush wrote every queued
1060
+ entry to the socket at once. For two messages typed for the SAME session
1061
+ while offline that is a corruption: the PTY composer concatenates the writes
1062
+ into one line ("fix the testsadd a changelog") and the Returns that follow
1063
+ submit the mush plus a stray blank. Delivery is now serialized per session
1064
+ (`shared/queue.ts` `selectSendable`) — the next entry is released only once
1065
+ the previous one is acked and its Return has gone out. Different sessions
1066
+ still drain concurrently, and a stale head no longer holds its lane hostage.
1067
+ - *"Queue for this session" survives being offline.* The compose bar's queue
1068
+ modes wrote `backlog.add` straight to the socket, which the ws layer drops
1069
+ when it can't connect — the one send path that skipped the durable outbox,
1070
+ so a work item queued on a dead tunnel was simply gone. Those items now go
1071
+ through the same store and the same receipts; `backlog.add` takes an `ackId`
1072
+ and the host de-dupes it (`backlog.ack`), so a reconnect re-send can't add
1073
+ the item twice.
1074
+ - *A reconnect asks before it sends.* Text typed offline was written against
1075
+ what the session looked like then — by the time the link is back the agent
1076
+ may have finished, asked something else, or moved on. "Back online — send N
1077
+ messages you queued while offline?" offers Send / Review / Hold. A message
1078
+ sent with the link UP is never held by this, and the prompt can be turned
1079
+ off (Settings → Install & offline → "ask on reconnect").
1080
+
1081
+ New **Queued messages** sheet ("Manage" on the queue bar, also in Settings):
1082
+ the whole queue grouped by session in delivery order, each entry editable,
1083
+ reorderable within its session, sendable on its own, restorable into the
1084
+ compose box, or discardable. The queue bar now renders on the launcher too —
1085
+ a queue built while offline is global, so "did that go?" shouldn't require
1086
+ finding the right session first.
1087
+
1088
+ - **The HTTPS front door is discovered, not assumed to be 443.** `tailscale
1089
+ serve --https=443` claims one slot on the whole machine, and a host may
1090
+ already serve something else there. The doctor's secure-context check and the
1091
+ phone's Connection shortcut both hardcoded `https://<tailscale name>` — which,
1092
+ on such a host, opens a different app entirely. Both now use
1093
+ `net.ts serveHttpsUrl()`, which parses `tailscale serve status --json` and
1094
+ matches on the **proxy target**, returning that listener's URL with its real
1095
+ port (`welcome.httpsUrl`). The old check matched a substring of the status
1096
+ text, which the proxy target itself contains — so any serve config at all read
1097
+ as "we are fronted".
1098
+
1099
+ - **Offline command queuing, with automatic submission.** Send a prompt while
1100
+ the tunnel is down and it is kept — in localStorage, so a reload or the phone
1101
+ killing the tab doesn't lose it — then delivered and *submitted* by itself the
1102
+ moment the host is reachable again. The compose bar shows "N queued — will
1103
+ send when the connection is back", with "Send now" and "Manage" escapes, and a
1104
+ toast confirms the flush. Auto-send is a switch (Settings → Install & offline)
1105
+ for when you'd rather review before it fires.
1106
+
1107
+ Two invariants made this safe rather than a duplicate-prompt generator:
1108
+ - *The host de-duplicates delivery receipts.* `session.input` keeps a bounded,
1109
+ expiring ledger of ackIds; a re-send of one it already handled is re-ACKed
1110
+ with the original verdict and NOT typed again. Retrying without this would
1111
+ have re-run the prompt — the client-side twin of the at-most-once rule
1112
+ `deliver.ts` enforces for the backlog.
1113
+ - *The submitting Return waits for the receipt.* It used to fire 50 ms after
1114
+ the text and hope; if the socket died in between, the prompt sat unsent in
1115
+ the composer while the UI said "sent". It is now written only once the host
1116
+ confirms the text landed, exactly once per message.
1117
+
1118
+ The outbox is now the single send path — nothing reaches the socket that isn't
1119
+ in it — so there is exactly one thing to retry. A message the previous tab left
1120
+ in flight is re-queued on load instead of being surfaced as "not delivered".
1121
+ Verified by `scripts/e2e-queue.mjs`, which drives the whole offline → reconnect
1122
+ → deliver → submit path against a real PTY.
1123
+
1124
+ - **Install as an app.** Settings → Install & offline captures the browser's
1125
+ install offer and gives it a button, instead of leaving it to Chrome's
1126
+ easily-missed mini-infobar. iOS gets the Share → Add to Home Screen wording
1127
+ (Safari fires no install event). Over plain HTTP it explains that a service
1128
+ worker — hence installing and the offline shell — needs a secure context, and
1129
+ points at the `tailscale serve` fix.
1130
+
1131
+ - **Bandwidth: the phone now moves a fraction of the bytes.** Four independent
1132
+ cuts, aimed at a roaming/hotel link:
1133
+ - *Image thumbnails.* The gallery grid, the new-image strip and the backlog
1134
+ attachment row pointed an `<img>` at the ORIGINAL artifact. Across this
1135
+ machine's outbox dirs that is 1170 images averaging 607 KB (worst case
1136
+ 14 MB), so one scroll of a 300-row grid was well over 100 MB. `?thumb=<w>`
1137
+ on the artifact/inbox routes now returns a screen-sized JPEG — a real
1138
+ 3.25 MB screenshot is 18 KB at 320 px and 63 KB at 640 px. No image library
1139
+ was added: it shells out to `sips` (macOS, built in), ImageMagick or ffmpeg,
1140
+ caches by path+mtime+size+width under `<root>/.usmc/thumbs`, and falls back
1141
+ to serving the original whenever it can't produce one. `download=1` and the
1142
+ annotator always get the real file, and the full-screen viewers load a
1143
+ screen-width copy with an explicit "full res" tap.
1144
+ - *WebSocket compression.* permessage-deflate on `/ws`. The PTY stream is the
1145
+ largest continuous byte source in the app — tens of KB of repetitive ANSI
1146
+ per TUI repaint, inflated another ~33% by the base64 framing — and the
1147
+ deflate window carries across frames, so a repeat repaint costs almost
1148
+ nothing. Browsers offer the extension by default; no client change.
1149
+ - *HTTP compression + caching.* br/gzip on JSON and the app bundle (722 KB →
1150
+ ~165 KB brotli), ETag/304 on artifacts and the shell, `immutable` on
1151
+ versioned thumbnails and Vite's content-hashed assets. A revisited gallery
1152
+ now costs nothing instead of re-downloading images the phone already had.
1153
+ - *Pagination.* The gallery asked for 300 rows at once; it now pages 60 at a
1154
+ time with a "load more" button.
1155
+ Disable any of it with `USMC_THUMBS=0` / `USMC_COMPRESS=0` /
1156
+ `USMC_WS_COMPRESS=0`. Verified by `scripts/e2e-thumbs.mjs`.
1157
+
1158
+ - **Data saver (Settings → Data usage).** A per-device toggle that asks the host
1159
+ for smaller image copies and multiplies the reader view's background poll
1160
+ interval by 4. "Full res" stays one tap away everywhere.
1161
+
1162
+ - **Outbox files say whether you already looked at them.** The gallery grid
1163
+ badges every artifact `new` / opened (eye) / downloaded (arrow): a per-device
1164
+ mark in localStorage (`usmc.artMarks`, same shape as the reader view's unread
1165
+ watermark — no host round trip, no wire change), set when a file is rendered
1166
+ in the viewer and upgraded when the download button is tapped. Marks are
1167
+ validated against the file's mtime, so an agent that regenerates `report.md`
1168
+ in place makes it `new` again. The `new` badge only shows in the outbox tab —
1169
+ the repo/all-repos tabs list arbitrary existing files, where "never opened in
1170
+ USMC" is the boring default; there only a positive opened/downloaded mark
1171
+ shows.
1172
+
1173
+ - **The mark-&-send sheet closes on the tap, not after the encode.** "Send to
1174
+ repo" / "Send & run" used to sit on `Sending…` while `canvas.toBlob` encoded a
1175
+ phone-sized screenshot to PNG — seconds of a blocked screen before the sheet
1176
+ handed off to the (already backgrounded) upload. The annotator now derives the
1177
+ file name/note synchronously and passes the still-encoding blob as a promise,
1178
+ which the upload buffer awaits inside its slot, so the sheet closes (or
1179
+ advances to the next image in a batch) immediately and the compose box is
1180
+ typeable while the image uploads. `canvas.toBlob` snapshots the bitmap at call
1181
+ time, so the encode is unaffected by the sheet going away.
1182
+
1183
+ - **Build buttons wired up for the repos that actually ship something.** The
1184
+ Garmin monorepo gets beta ship (all nine beta apps, plus one-tap per app for
1185
+ the three that also have store listings), PROD ship per app for those three,
1186
+ and build-only/compile-check buttons; a new `ship-prod.sh` in that repo is the
1187
+ non-interactive prod counterpart of its existing `ship-betas.sh`, and it
1188
+ refuses to start when the app's declared `LATEST_WATCH_VERSION` doesn't match
1189
+ the version the run would build — the store submit would have rejected it
1190
+ anyway, but only after bumping the version. Android/Flutter/Ionic repos get
1191
+ APK buttons; a release button is only wired where the artifact is actually
1192
+ signed. Connect IQ `.iq`/`.prg` packages are now recognised as build
1193
+ deliverables, so a Garmin build's output is downloadable from the phone.
1194
+
1195
+ - **Fixed: a successful build could report no artifact at all.** The
1196
+ post-build scan `stat`ed every entry it walked against a flat 40k budget, so
1197
+ in a repo with a large data tree (47k entries, 41k of them under one asset
1198
+ dir) whether the APK was found came down to directory read order. The walk now
1199
+ reads dirents and only `stat`s candidate files, visits output-looking dirs
1200
+ first, and has a much higher bound — and it no longer follows symlinks, which
1201
+ could previously send it round a cycle until the budget ran out.
1202
+
1203
+ - **Fan-out: run one prompt in several repos at once.** "Repos & worktrees →
1204
+ fan out" takes a prompt or slash command, a set of repos, and starts a FRESH
1205
+ `claude` session in each — the maintenance sweep (`/init` everywhere, "what did
1206
+ this project cost this month?") that used to be one repo tap and one retyping
1207
+ per project. Delivery reuses the backlog's echo-confirmed, at-most-once path,
1208
+ each target reports starting / running / done / failed, and tapping a target
1209
+ opens its session like any other. Repos are started a few at a time
1210
+ (`USMC_FANOUT_CONCURRENCY`, default 6) so a big sweep can't stampede the host.
1211
+ A run stays drivable afterwards: "follow up in N sessions" types a second
1212
+ instruction ("now commit that") into the sessions it already spawned — all of
1213
+ them or a ticked subset — with the same at-most-once delivery. It never spawns
1214
+ anything, so a target whose session you closed is reported rather than quietly
1215
+ restarted from scratch.
1216
+
1217
+ - **Fixed: a fanned-out prompt could land in every session without ever being
1218
+ run.** Delivery pressed Return once and treated "the terminal produced more
1219
+ output" as proof it had been submitted — but the CLI repaints constantly, so
1220
+ that test passes whether or not the keystroke landed. A 12-repo sweep came back
1221
+ with every repo marked *running* while every session sat holding an un-run
1222
+ prompt. Sessions that report turn boundaries (the normal case) now prove the
1223
+ turn actually started before delivery is called done, re-pressing Return until
1224
+ it does; if it never takes, the target says the prompt is sitting in the
1225
+ composer waiting for a Return instead of claiming work is under way. Retyping
1226
+ is still never attempted — that's what used to send the same prompt ten times.
1227
+
1228
+ - **Fixed: a fan-out could skip repos entirely.** Readiness waited for the
1229
+ terminal to fall silent for over a second, which a booting `claude` on a
1230
+ machine starting six of them at once may never do — those repos timed out
1231
+ un-fed. It now uses the same exact "no turn in flight" signal the backlog uses,
1232
+ and waits longer before giving up.
1233
+
1234
+ - **Documents in the gallery now render, and download.** Opening a `.md` or text
1235
+ artifact used to show a single "Open …" link — on a phone that meant a browser
1236
+ tab or a save-as dialog, for a file the agent wrote to be read. Markdown is now
1237
+ formatted in place (with a source toggle), other text shows as monospace
1238
+ source, and every open file has a download button.
1239
+
1240
+ - **Fixed: a backlog item could be typed into a session over and over.** The
1241
+ check that confirmed an instruction had echoed in the composer ANSI-stripped a
1242
+ fixed byte window off the tail of the terminal capture, but a single claude-TUI
1243
+ repaint is tens of kilobytes — so text plainly visible on screen read as "not
1244
+ echoed" and got retyped on top of itself, three times per attempt and once per
1245
+ retry, up to ~15 copies of the same prompt. Delivery now reads the rendered
1246
+ screen (the capture replayed through a headless terminal) and writes the
1247
+ instruction at most once: if it can't be confirmed, the item is flagged for you
1248
+ to check instead of being re-sent automatically.
1249
+
1250
+ - **Fixed: phantom approve bars, and garbled one-tap option labels.** Prompt
1251
+ detection scanned an ANSI-stripped byte window, so repaint fragments were
1252
+ surfaced verbatim as option labels ("My recommendation(B") and a numbered list
1253
+ in Claude's own prose ("1. Now: … 2. Then: …") flickered an approve bar in and
1254
+ out mid-answer. A candidate is now re-checked against the rendered screen
1255
+ before anything is published, and a real choice box must carry a selection
1256
+ cursor or the "Enter to confirm · Esc to cancel" footer.
1257
+
1258
+ - **New project scaffold** — "New → repo" now creates a project that is ready
1259
+ for phone use: `git init` on `main` with an initial commit, `.gitignore`,
1260
+ `README.md`, a `CLAUDE.md` documenting the outbox convention, and the
1261
+ `.claude/inbox` / `.claude/outbox` / `.usmc` dirs. An optional one-line
1262
+ description seeds the README/CLAUDE.md; a "set up for phone use" toggle falls
1263
+ back to the old bare `git init`.