waterplane 0.1.6 → 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 (496) hide show
  1. package/CHANGELOG.md +92 -1
  2. package/README.md +1 -1
  3. package/SECURITY.md +11 -3
  4. package/deploy/node-version +1 -1
  5. package/node_modules/@waterplane/shared/dist/agentfiles.d.ts +17 -0
  6. package/node_modules/@waterplane/shared/dist/agentfiles.js +58 -4
  7. package/node_modules/@waterplane/shared/dist/agentfiles.js.map +1 -1
  8. package/node_modules/@waterplane/shared/dist/alwaysonwords.d.ts +83 -0
  9. package/node_modules/@waterplane/shared/dist/alwaysonwords.js +209 -0
  10. package/node_modules/@waterplane/shared/dist/alwaysonwords.js.map +1 -0
  11. package/node_modules/@waterplane/shared/dist/autocompact.js +1 -1
  12. package/node_modules/@waterplane/shared/dist/autocompact.js.map +1 -1
  13. package/node_modules/@waterplane/shared/dist/backendsources.d.ts +11 -1
  14. package/node_modules/@waterplane/shared/dist/backendsources.js.map +1 -1
  15. package/node_modules/@waterplane/shared/dist/branchmode.d.ts +27 -0
  16. package/node_modules/@waterplane/shared/dist/branchmode.js +80 -0
  17. package/node_modules/@waterplane/shared/dist/branchmode.js.map +1 -0
  18. package/node_modules/@waterplane/shared/dist/buildstamp.d.ts +37 -0
  19. package/node_modules/@waterplane/shared/dist/buildstamp.js +95 -0
  20. package/node_modules/@waterplane/shared/dist/buildstamp.js.map +1 -0
  21. package/node_modules/@waterplane/shared/dist/burn.d.ts +16 -1
  22. package/node_modules/@waterplane/shared/dist/burn.js +30 -0
  23. package/node_modules/@waterplane/shared/dist/burn.js.map +1 -1
  24. package/node_modules/@waterplane/shared/dist/changebrief.d.ts +61 -0
  25. package/node_modules/@waterplane/shared/dist/changebrief.js +70 -0
  26. package/node_modules/@waterplane/shared/dist/changebrief.js.map +1 -0
  27. package/node_modules/@waterplane/shared/dist/desktopfiles.d.ts +100 -0
  28. package/node_modules/@waterplane/shared/dist/desktopfiles.js +192 -0
  29. package/node_modules/@waterplane/shared/dist/desktopfiles.js.map +1 -0
  30. package/node_modules/@waterplane/shared/dist/exposure.d.ts +175 -0
  31. package/node_modules/@waterplane/shared/dist/exposure.js +357 -0
  32. package/node_modules/@waterplane/shared/dist/exposure.js.map +1 -0
  33. package/node_modules/@waterplane/shared/dist/exposurepush.d.ts +60 -0
  34. package/node_modules/@waterplane/shared/dist/exposurepush.js +103 -0
  35. package/node_modules/@waterplane/shared/dist/exposurepush.js.map +1 -0
  36. package/node_modules/@waterplane/shared/dist/healthindex/commits.d.ts +26 -0
  37. package/node_modules/@waterplane/shared/dist/healthindex/commits.js +57 -0
  38. package/node_modules/@waterplane/shared/dist/healthindex/commits.js.map +1 -0
  39. package/node_modules/@waterplane/shared/dist/healthindex/move.d.ts +25 -0
  40. package/node_modules/@waterplane/shared/dist/healthindex/move.js +79 -0
  41. package/node_modules/@waterplane/shared/dist/healthindex/move.js.map +1 -0
  42. package/node_modules/@waterplane/shared/dist/healthindex/readings.d.ts +53 -0
  43. package/node_modules/@waterplane/shared/dist/healthindex/readings.js +154 -0
  44. package/node_modules/@waterplane/shared/dist/healthindex/readings.js.map +1 -0
  45. package/node_modules/@waterplane/shared/dist/healthindex/repoindex.d.ts +41 -0
  46. package/node_modules/@waterplane/shared/dist/healthindex/repoindex.js +19 -0
  47. package/node_modules/@waterplane/shared/dist/healthindex/repoindex.js.map +1 -0
  48. package/node_modules/@waterplane/shared/dist/healthindex/score.d.ts +26 -0
  49. package/node_modules/@waterplane/shared/dist/healthindex/score.js +154 -0
  50. package/node_modules/@waterplane/shared/dist/healthindex/score.js.map +1 -0
  51. package/node_modules/@waterplane/shared/dist/healthindex/types.d.ts +206 -0
  52. package/node_modules/@waterplane/shared/dist/healthindex/types.js +58 -0
  53. package/node_modules/@waterplane/shared/dist/healthindex/types.js.map +1 -0
  54. package/node_modules/@waterplane/shared/dist/healthindex/vs.d.ts +26 -0
  55. package/node_modules/@waterplane/shared/dist/healthindex/vs.js +38 -0
  56. package/node_modules/@waterplane/shared/dist/healthindex/vs.js.map +1 -0
  57. package/node_modules/@waterplane/shared/dist/healthindex/words.d.ts +28 -0
  58. package/node_modules/@waterplane/shared/dist/healthindex/words.js +69 -0
  59. package/node_modules/@waterplane/shared/dist/healthindex/words.js.map +1 -0
  60. package/node_modules/@waterplane/shared/dist/healthindex.d.ts +15 -411
  61. package/node_modules/@waterplane/shared/dist/healthindex.js +8 -602
  62. package/node_modules/@waterplane/shared/dist/healthindex.js.map +1 -1
  63. package/node_modules/@waterplane/shared/dist/hints.js +5 -0
  64. package/node_modules/@waterplane/shared/dist/hints.js.map +1 -1
  65. package/node_modules/@waterplane/shared/dist/index.d.ts +29 -0
  66. package/node_modules/@waterplane/shared/dist/index.js +29 -0
  67. package/node_modules/@waterplane/shared/dist/index.js.map +1 -1
  68. package/node_modules/@waterplane/shared/dist/intent/kind.d.ts +31 -1
  69. package/node_modules/@waterplane/shared/dist/intent/kind.js +27 -3
  70. package/node_modules/@waterplane/shared/dist/intent/kind.js.map +1 -1
  71. package/node_modules/@waterplane/shared/dist/intent.d.ts +1 -1
  72. package/node_modules/@waterplane/shared/dist/intent.js +1 -1
  73. package/node_modules/@waterplane/shared/dist/intent.js.map +1 -1
  74. package/node_modules/@waterplane/shared/dist/launchmodes.d.ts +2 -0
  75. package/node_modules/@waterplane/shared/dist/launchmodes.js +12 -0
  76. package/node_modules/@waterplane/shared/dist/launchmodes.js.map +1 -1
  77. package/node_modules/@waterplane/shared/dist/ledgerspan.d.ts +59 -0
  78. package/node_modules/@waterplane/shared/dist/ledgerspan.js +99 -0
  79. package/node_modules/@waterplane/shared/dist/ledgerspan.js.map +1 -0
  80. package/node_modules/@waterplane/shared/dist/netretry.d.ts +38 -0
  81. package/node_modules/@waterplane/shared/dist/netretry.js +31 -0
  82. package/node_modules/@waterplane/shared/dist/netretry.js.map +1 -0
  83. package/node_modules/@waterplane/shared/dist/netretrycfg.d.ts +12 -0
  84. package/node_modules/@waterplane/shared/dist/netretrycfg.js +27 -0
  85. package/node_modules/@waterplane/shared/dist/netretrycfg.js.map +1 -0
  86. package/node_modules/@waterplane/shared/dist/nodemin.d.ts +6 -4
  87. package/node_modules/@waterplane/shared/dist/nodemin.js +6 -4
  88. package/node_modules/@waterplane/shared/dist/nodemin.js.map +1 -1
  89. package/node_modules/@waterplane/shared/dist/optins.d.ts +35 -1
  90. package/node_modules/@waterplane/shared/dist/optins.js +39 -1
  91. package/node_modules/@waterplane/shared/dist/optins.js.map +1 -1
  92. package/node_modules/@waterplane/shared/dist/plugin/api.d.ts +364 -0
  93. package/node_modules/@waterplane/shared/dist/plugin/api.js +2 -0
  94. package/node_modules/@waterplane/shared/dist/plugin/api.js.map +1 -0
  95. package/node_modules/@waterplane/shared/dist/plugin/backend.d.ts +197 -0
  96. package/node_modules/@waterplane/shared/dist/plugin/backend.js +9 -0
  97. package/node_modules/@waterplane/shared/dist/plugin/backend.js.map +1 -0
  98. package/node_modules/@waterplane/shared/dist/plugin/manifest.d.ts +160 -0
  99. package/node_modules/@waterplane/shared/dist/plugin/manifest.js +98 -0
  100. package/node_modules/@waterplane/shared/dist/plugin/manifest.js.map +1 -0
  101. package/node_modules/@waterplane/shared/dist/plugin/module.d.ts +98 -0
  102. package/node_modules/@waterplane/shared/dist/plugin/module.js +13 -0
  103. package/node_modules/@waterplane/shared/dist/plugin/module.js.map +1 -0
  104. package/node_modules/@waterplane/shared/dist/plugin/version.d.ts +64 -0
  105. package/node_modules/@waterplane/shared/dist/plugin/version.js +84 -0
  106. package/node_modules/@waterplane/shared/dist/plugin/version.js.map +1 -0
  107. package/node_modules/@waterplane/shared/dist/plugin.d.ts +5 -867
  108. package/node_modules/@waterplane/shared/dist/plugin.js +27 -186
  109. package/node_modules/@waterplane/shared/dist/plugin.js.map +1 -1
  110. package/node_modules/@waterplane/shared/dist/pluginlaunch.d.ts +7 -0
  111. package/node_modules/@waterplane/shared/dist/prview.d.ts +23 -0
  112. package/node_modules/@waterplane/shared/dist/prview.js +107 -0
  113. package/node_modules/@waterplane/shared/dist/prview.js.map +1 -0
  114. package/node_modules/@waterplane/shared/dist/repohealth.d.ts +4 -0
  115. package/node_modules/@waterplane/shared/dist/repohealth.js.map +1 -1
  116. package/node_modules/@waterplane/shared/dist/schedule/schedaction.d.ts +29 -0
  117. package/node_modules/@waterplane/shared/dist/schedule/schedaction.js +22 -0
  118. package/node_modules/@waterplane/shared/dist/schedule/schedaction.js.map +1 -1
  119. package/node_modules/@waterplane/shared/dist/schedule/schedclean.js +26 -0
  120. package/node_modules/@waterplane/shared/dist/schedule/schedclean.js.map +1 -1
  121. package/node_modules/@waterplane/shared/dist/schedule.d.ts +1 -1
  122. package/node_modules/@waterplane/shared/dist/schedule.js +1 -1
  123. package/node_modules/@waterplane/shared/dist/schedule.js.map +1 -1
  124. package/node_modules/@waterplane/shared/dist/sessionbudget.d.ts +20 -5
  125. package/node_modules/@waterplane/shared/dist/sessionbudget.js +42 -16
  126. package/node_modules/@waterplane/shared/dist/sessionbudget.js.map +1 -1
  127. package/node_modules/@waterplane/shared/dist/weekburn.d.ts +114 -0
  128. package/node_modules/@waterplane/shared/dist/weekburn.js +205 -0
  129. package/node_modules/@waterplane/shared/dist/weekburn.js.map +1 -0
  130. package/node_modules/@waterplane/shared/dist/wire/alwayson.d.ts +64 -0
  131. package/node_modules/@waterplane/shared/dist/wire/alwayson.js +7 -0
  132. package/node_modules/@waterplane/shared/dist/wire/alwayson.js.map +1 -0
  133. package/node_modules/@waterplane/shared/dist/wire/backend.d.ts +4 -0
  134. package/node_modules/@waterplane/shared/dist/wire/backendtokens.d.ts +6 -0
  135. package/node_modules/@waterplane/shared/dist/wire/backendtokens.js +0 -9
  136. package/node_modules/@waterplane/shared/dist/wire/backendtokens.js.map +1 -1
  137. package/node_modules/@waterplane/shared/dist/wire/costwindow.d.ts +20 -0
  138. package/node_modules/@waterplane/shared/dist/wire/messages/clienthost.d.ts +15 -1
  139. package/node_modules/@waterplane/shared/dist/wire/messages/clientsession.d.ts +10 -0
  140. package/node_modules/@waterplane/shared/dist/wire/messages/hosttools.d.ts +12 -2
  141. package/node_modules/@waterplane/shared/dist/wire/notify.d.ts +129 -1
  142. package/node_modules/@waterplane/shared/dist/wire/notify.js +79 -1
  143. package/node_modules/@waterplane/shared/dist/wire/notify.js.map +1 -1
  144. package/node_modules/@waterplane/shared/dist/wire/pullrequest.d.ts +42 -0
  145. package/node_modules/@waterplane/shared/dist/wire/pullrequest.js +2 -0
  146. package/node_modules/@waterplane/shared/dist/wire/pullrequest.js.map +1 -0
  147. package/node_modules/@waterplane/shared/dist/wire/repo.d.ts +119 -0
  148. package/node_modules/@waterplane/shared/dist/wire/repo.js +8 -3
  149. package/node_modules/@waterplane/shared/dist/wire/repo.js.map +1 -1
  150. package/node_modules/@waterplane/shared/dist/wire/sent.d.ts +3 -1
  151. package/node_modules/@waterplane/shared/dist/wire/session/contextspark.d.ts +7 -0
  152. package/node_modules/@waterplane/shared/dist/wire/session/info.d.ts +4 -1
  153. package/node_modules/@waterplane/shared/dist/wire/session/launch.d.ts +25 -0
  154. package/node_modules/@waterplane/shared/dist/wire/session.d.ts +1 -1
  155. package/node_modules/@waterplane/shared/dist/wire/telemetry.d.ts +4 -0
  156. package/node_modules/@waterplane/shared/dist/wire/work.d.ts +13 -0
  157. package/node_modules/@waterplane/shared/dist/wire/work.js.map +1 -1
  158. package/npm-shrinkwrap.json +3 -3
  159. package/package.json +2 -2
  160. package/packages/extensions/scorecard/waterplane-plugin.json +10 -0
  161. package/packages/host/dist/agentexposure.d.ts +13 -0
  162. package/packages/host/dist/agentexposure.js +90 -0
  163. package/packages/host/dist/agentexposure.js.map +1 -0
  164. package/packages/host/dist/agentintents.js +2 -2
  165. package/packages/host/dist/agentintents.js.map +1 -1
  166. package/packages/host/dist/agentwatch.d.ts +3 -7
  167. package/packages/host/dist/agentwatch.js.map +1 -1
  168. package/packages/host/dist/alwayson.d.ts +18 -0
  169. package/packages/host/dist/alwayson.js +159 -0
  170. package/packages/host/dist/alwayson.js.map +1 -0
  171. package/packages/host/dist/answergate.d.ts +3 -7
  172. package/packages/host/dist/answergate.js.map +1 -1
  173. package/packages/host/dist/attentionstore.d.ts +61 -0
  174. package/packages/host/dist/attentionstore.js +162 -0
  175. package/packages/host/dist/attentionstore.js.map +1 -0
  176. package/packages/host/dist/backends/claude.js +1 -1
  177. package/packages/host/dist/backends/claude.js.map +1 -1
  178. package/packages/host/dist/backends/derive.js +1 -0
  179. package/packages/host/dist/backends/derive.js.map +1 -1
  180. package/packages/host/dist/backends/registry.js +4 -1
  181. package/packages/host/dist/backends/registry.js.map +1 -1
  182. package/packages/host/dist/backends/types.d.ts +2 -0
  183. package/packages/host/dist/besidespend.d.ts +22 -0
  184. package/packages/host/dist/besidespend.js +65 -0
  185. package/packages/host/dist/besidespend.js.map +1 -0
  186. package/packages/host/dist/boxkit.d.ts +19 -0
  187. package/packages/host/dist/boxkit.js +38 -0
  188. package/packages/host/dist/boxkit.js.map +1 -0
  189. package/packages/host/dist/branchrules.d.ts +14 -0
  190. package/packages/host/dist/branchrules.js +47 -0
  191. package/packages/host/dist/branchrules.js.map +1 -0
  192. package/packages/host/dist/builds.d.ts +31 -1
  193. package/packages/host/dist/builds.js +55 -3
  194. package/packages/host/dist/builds.js.map +1 -1
  195. package/packages/host/dist/buildversions.d.ts +2 -0
  196. package/packages/host/dist/buildversions.js +36 -0
  197. package/packages/host/dist/buildversions.js.map +1 -0
  198. package/packages/host/dist/burnwatch.d.ts +23 -11
  199. package/packages/host/dist/burnwatch.js +51 -2
  200. package/packages/host/dist/burnwatch.js.map +1 -1
  201. package/packages/host/dist/changebrief.d.ts +37 -0
  202. package/packages/host/dist/changebrief.js +157 -0
  203. package/packages/host/dist/changebrief.js.map +1 -0
  204. package/packages/host/dist/cli/index.js +1 -1
  205. package/packages/host/dist/cli/index.js.map +1 -1
  206. package/packages/host/dist/clihealth.d.ts +2 -0
  207. package/packages/host/dist/clihealth.js +11 -2
  208. package/packages/host/dist/clihealth.js.map +1 -1
  209. package/packages/host/dist/compliance.d.ts +5 -1
  210. package/packages/host/dist/compliance.js +70 -31
  211. package/packages/host/dist/compliance.js.map +1 -1
  212. package/packages/host/dist/composer.d.ts +3 -1
  213. package/packages/host/dist/composer.js +3 -1
  214. package/packages/host/dist/composer.js.map +1 -1
  215. package/packages/host/dist/ctxlog/ctxcursor.d.ts +36 -1
  216. package/packages/host/dist/ctxlog/ctxcursor.js +96 -2
  217. package/packages/host/dist/ctxlog/ctxcursor.js.map +1 -1
  218. package/packages/host/dist/ctxlog/ctxproject.js +2 -1
  219. package/packages/host/dist/ctxlog/ctxproject.js.map +1 -1
  220. package/packages/host/dist/ctxlog/ctxupdate.js +13 -2
  221. package/packages/host/dist/ctxlog/ctxupdate.js.map +1 -1
  222. package/packages/host/dist/diskwatch.d.ts +4 -6
  223. package/packages/host/dist/diskwatch.js +3 -1
  224. package/packages/host/dist/diskwatch.js.map +1 -1
  225. package/packages/host/dist/eraseen.d.ts +6 -0
  226. package/packages/host/dist/eraseen.js +100 -0
  227. package/packages/host/dist/eraseen.js.map +1 -0
  228. package/packages/host/dist/exposure.d.ts +56 -0
  229. package/packages/host/dist/exposure.js +371 -0
  230. package/packages/host/dist/exposure.js.map +1 -0
  231. package/packages/host/dist/exposurepush.d.ts +28 -0
  232. package/packages/host/dist/exposurepush.js +136 -0
  233. package/packages/host/dist/exposurepush.js.map +1 -0
  234. package/packages/host/dist/exposurerun.d.ts +18 -0
  235. package/packages/host/dist/exposurerun.js +126 -0
  236. package/packages/host/dist/exposurerun.js.map +1 -0
  237. package/packages/host/dist/exposurewatch.d.ts +29 -0
  238. package/packages/host/dist/exposurewatch.js +127 -0
  239. package/packages/host/dist/exposurewatch.js.map +1 -0
  240. package/packages/host/dist/extensions/scorecard/host/engine.d.mts +54 -0
  241. package/packages/host/dist/extensions/scorecard/host/engine.mjs +303 -0
  242. package/packages/host/dist/extensions/scorecard/host/engine.mjs.map +1 -0
  243. package/packages/host/dist/extensions/scorecard/host/gitslug.d.mts +5 -0
  244. package/packages/host/dist/extensions/scorecard/host/gitslug.mjs +45 -0
  245. package/packages/host/dist/extensions/scorecard/host/gitslug.mjs.map +1 -0
  246. package/packages/host/dist/extensions/scorecard/host/index.d.mts +15 -0
  247. package/packages/host/dist/extensions/scorecard/host/index.mjs +47 -0
  248. package/packages/host/dist/extensions/scorecard/host/index.mjs.map +1 -0
  249. package/packages/host/dist/extensions/scorecard/host/store.d.mts +12 -0
  250. package/packages/host/dist/extensions/scorecard/host/store.mjs +91 -0
  251. package/packages/host/dist/extensions/scorecard/host/store.mjs.map +1 -0
  252. package/packages/host/dist/extensions/scorecard/shared/logic.d.mts +42 -0
  253. package/packages/host/dist/extensions/scorecard/shared/logic.mjs +170 -0
  254. package/packages/host/dist/extensions/scorecard/shared/logic.mjs.map +1 -0
  255. package/packages/host/dist/extensions/scorecard/shared/wire.d.mts +140 -0
  256. package/packages/host/dist/extensions/scorecard/shared/wire.mjs +29 -0
  257. package/packages/host/dist/extensions/scorecard/shared/wire.mjs.map +1 -0
  258. package/packages/host/dist/forge/github.d.ts +3 -0
  259. package/packages/host/dist/forge/github.js +82 -0
  260. package/packages/host/dist/forge/github.js.map +1 -0
  261. package/packages/host/dist/forge/index.d.ts +14 -0
  262. package/packages/host/dist/forge/index.js +32 -0
  263. package/packages/host/dist/forge/index.js.map +1 -0
  264. package/packages/host/dist/forge/types.d.ts +52 -0
  265. package/packages/host/dist/forge/types.js +2 -0
  266. package/packages/host/dist/forge/types.js.map +1 -0
  267. package/packages/host/dist/git.d.ts +36 -3
  268. package/packages/host/dist/git.js +119 -41
  269. package/packages/host/dist/git.js.map +1 -1
  270. package/packages/host/dist/gitnotify.d.ts +24 -0
  271. package/packages/host/dist/gitnotify.js +60 -0
  272. package/packages/host/dist/gitnotify.js.map +1 -0
  273. package/packages/host/dist/healthwatch.d.ts +2 -1
  274. package/packages/host/dist/healthwatch.js +4 -2
  275. package/packages/host/dist/healthwatch.js.map +1 -1
  276. package/packages/host/dist/intents/adapters.js +45 -14
  277. package/packages/host/dist/intents/adapters.js.map +1 -1
  278. package/packages/host/dist/intents/contract.d.ts +4 -0
  279. package/packages/host/dist/intents/contract.js.map +1 -1
  280. package/packages/host/dist/intents/fire.js +7 -1
  281. package/packages/host/dist/intents/fire.js.map +1 -1
  282. package/packages/host/dist/intents/manager.d.ts +3 -3
  283. package/packages/host/dist/intents/manager.js +2 -2
  284. package/packages/host/dist/intents/manager.js.map +1 -1
  285. package/packages/host/dist/intents/watch.d.ts +10 -2
  286. package/packages/host/dist/intents/watch.js +27 -2
  287. package/packages/host/dist/intents/watch.js.map +1 -1
  288. package/packages/host/dist/localcistatus.d.ts +22 -0
  289. package/packages/host/dist/localcistatus.js +105 -0
  290. package/packages/host/dist/localcistatus.js.map +1 -0
  291. package/packages/host/dist/main.js +40 -10
  292. package/packages/host/dist/main.js.map +1 -1
  293. package/packages/host/dist/net.d.ts +2 -0
  294. package/packages/host/dist/net.js +11 -2
  295. package/packages/host/dist/net.js.map +1 -1
  296. package/packages/host/dist/netlog.d.ts +40 -0
  297. package/packages/host/dist/netlog.js +165 -0
  298. package/packages/host/dist/netlog.js.map +1 -0
  299. package/packages/host/dist/netretrycfg.d.ts +7 -0
  300. package/packages/host/dist/netretrycfg.js +51 -0
  301. package/packages/host/dist/netretrycfg.js.map +1 -0
  302. package/packages/host/dist/notifyprefs.d.ts +6 -2
  303. package/packages/host/dist/notifyprefs.js +20 -5
  304. package/packages/host/dist/notifyprefs.js.map +1 -1
  305. package/packages/host/dist/notifytypes.d.ts +58 -0
  306. package/packages/host/dist/notifytypes.js +2 -0
  307. package/packages/host/dist/notifytypes.js.map +1 -0
  308. package/packages/host/dist/opendeliveries.js +24 -0
  309. package/packages/host/dist/opendeliveries.js.map +1 -1
  310. package/packages/host/dist/optins.d.ts +28 -1
  311. package/packages/host/dist/optins.js +96 -4
  312. package/packages/host/dist/optins.js.map +1 -1
  313. package/packages/host/dist/peers/agentpeer.js +1 -1
  314. package/packages/host/dist/peers/agentpeer.js.map +1 -1
  315. package/packages/host/dist/peers/jobs.d.ts +2 -4
  316. package/packages/host/dist/peers/jobs.js +6 -1
  317. package/packages/host/dist/peers/jobs.js.map +1 -1
  318. package/packages/host/dist/plugins/pluginapi.js +2 -0
  319. package/packages/host/dist/plugins/pluginapi.js.map +1 -1
  320. package/packages/host/dist/plugins/pluginregistry.d.ts +3 -8
  321. package/packages/host/dist/plugins/pluginregistry.js +1 -1
  322. package/packages/host/dist/plugins/pluginregistry.js.map +1 -1
  323. package/packages/host/dist/protectmain.d.ts +35 -0
  324. package/packages/host/dist/protectmain.js +73 -0
  325. package/packages/host/dist/protectmain.js.map +1 -0
  326. package/packages/host/dist/prpush.d.ts +30 -0
  327. package/packages/host/dist/prpush.js +171 -0
  328. package/packages/host/dist/prpush.js.map +1 -0
  329. package/packages/host/dist/prs.d.ts +70 -0
  330. package/packages/host/dist/prs.js +328 -0
  331. package/packages/host/dist/prs.js.map +1 -0
  332. package/packages/host/dist/push.d.ts +19 -0
  333. package/packages/host/dist/push.js.map +1 -1
  334. package/packages/host/dist/render.d.ts +57 -0
  335. package/packages/host/dist/render.js +57 -39
  336. package/packages/host/dist/render.js.map +1 -1
  337. package/packages/host/dist/repohealth.js +5 -2
  338. package/packages/host/dist/repohealth.js.map +1 -1
  339. package/packages/host/dist/repohealthapproval.d.ts +3 -0
  340. package/packages/host/dist/repohealthapproval.js +92 -2
  341. package/packages/host/dist/repohealthapproval.js.map +1 -1
  342. package/packages/host/dist/repos.js +7 -1
  343. package/packages/host/dist/repos.js.map +1 -1
  344. package/packages/host/dist/reposkill.d.ts +8 -5
  345. package/packages/host/dist/reposkill.js +16 -11
  346. package/packages/host/dist/reposkill.js.map +1 -1
  347. package/packages/host/dist/reposkilltext.d.ts +8 -1
  348. package/packages/host/dist/reposkilltext.js +72 -3
  349. package/packages/host/dist/reposkilltext.js.map +1 -1
  350. package/packages/host/dist/routes/apihost.js +26 -2
  351. package/packages/host/dist/routes/apihost.js.map +1 -1
  352. package/packages/host/dist/routes/apiprs.d.ts +2 -0
  353. package/packages/host/dist/routes/apiprs.js +45 -0
  354. package/packages/host/dist/routes/apiprs.js.map +1 -0
  355. package/packages/host/dist/routes/apirepofiles.js +12 -1
  356. package/packages/host/dist/routes/apirepofiles.js.map +1 -1
  357. package/packages/host/dist/routes/apirepowork.js +48 -24
  358. package/packages/host/dist/routes/apirepowork.js.map +1 -1
  359. package/packages/host/dist/routes/apiroutes.js +2 -1
  360. package/packages/host/dist/routes/apiroutes.js.map +1 -1
  361. package/packages/host/dist/routes/apisession.js +24 -0
  362. package/packages/host/dist/routes/apisession.js.map +1 -1
  363. package/packages/host/dist/routes/apistats.js +12 -7
  364. package/packages/host/dist/routes/apistats.js.map +1 -1
  365. package/packages/host/dist/routes/apisystem.js +23 -1
  366. package/packages/host/dist/routes/apisystem.js.map +1 -1
  367. package/packages/host/dist/routes/apitable.d.ts +10 -0
  368. package/packages/host/dist/routes/apitable.js.map +1 -1
  369. package/packages/host/dist/routes/apiweekburn.d.ts +2 -0
  370. package/packages/host/dist/routes/apiweekburn.js +30 -0
  371. package/packages/host/dist/routes/apiweekburn.js.map +1 -0
  372. package/packages/host/dist/routes/session.js +4 -0
  373. package/packages/host/dist/routes/session.js.map +1 -1
  374. package/packages/host/dist/routes/system.js +33 -6
  375. package/packages/host/dist/routes/system.js.map +1 -1
  376. package/packages/host/dist/routes/types.d.ts +29 -21
  377. package/packages/host/dist/routes/work/workbuild.js +3 -2
  378. package/packages/host/dist/routes/work/workbuild.js.map +1 -1
  379. package/packages/host/dist/routes/work/workschedule.js +33 -3
  380. package/packages/host/dist/routes/work/workschedule.js.map +1 -1
  381. package/packages/host/dist/screenlog.d.ts +20 -0
  382. package/packages/host/dist/screenlog.js +40 -0
  383. package/packages/host/dist/screenlog.js.map +1 -1
  384. package/packages/host/dist/server/clients.d.ts +14 -24
  385. package/packages/host/dist/server/clients.js +77 -11
  386. package/packages/host/dist/server/clients.js.map +1 -1
  387. package/packages/host/dist/server/ctx.d.ts +2 -0
  388. package/packages/host/dist/server/ctxseal.d.ts +1 -1
  389. package/packages/host/dist/server/ctxseal.js +6 -6
  390. package/packages/host/dist/server/ctxseal.js.map +1 -1
  391. package/packages/host/dist/server/deliveries.js +4 -2
  392. package/packages/host/dist/server/deliveries.js.map +1 -1
  393. package/packages/host/dist/server/http.js +2 -2
  394. package/packages/host/dist/server/http.js.map +1 -1
  395. package/packages/host/dist/server/intentDeps.js +4 -1
  396. package/packages/host/dist/server/intentDeps.js.map +1 -1
  397. package/packages/host/dist/server/intentEvents.js +9 -4
  398. package/packages/host/dist/server/intentEvents.js.map +1 -1
  399. package/packages/host/dist/server/scan.js +23 -1
  400. package/packages/host/dist/server/scan.js.map +1 -1
  401. package/packages/host/dist/server/sessionEvents.js +37 -10
  402. package/packages/host/dist/server/sessionEvents.js.map +1 -1
  403. package/packages/host/dist/sessions/agentpoll.d.ts +31 -0
  404. package/packages/host/dist/sessions/agentpoll.js +176 -0
  405. package/packages/host/dist/sessions/agentpoll.js.map +1 -0
  406. package/packages/host/dist/sessions/apiretry.d.ts +59 -0
  407. package/packages/host/dist/sessions/apiretry.js +240 -0
  408. package/packages/host/dist/sessions/apiretry.js.map +1 -0
  409. package/packages/host/dist/sessions/askwatch.d.ts +62 -0
  410. package/packages/host/dist/sessions/askwatch.js +169 -0
  411. package/packages/host/dist/sessions/askwatch.js.map +1 -0
  412. package/packages/host/dist/sessions/boxes.d.ts +2 -23
  413. package/packages/host/dist/sessions/boxes.js +10 -664
  414. package/packages/host/dist/sessions/boxes.js.map +1 -1
  415. package/packages/host/dist/sessions/boxread.d.ts +47 -0
  416. package/packages/host/dist/sessions/boxread.js +628 -0
  417. package/packages/host/dist/sessions/boxread.js.map +1 -0
  418. package/packages/host/dist/sessions/core.d.ts +16 -1
  419. package/packages/host/dist/sessions/ctxseries.js +3 -0
  420. package/packages/host/dist/sessions/ctxseries.js.map +1 -1
  421. package/packages/host/dist/sessions/drive.d.ts +20 -6
  422. package/packages/host/dist/sessions/drive.js +43 -8
  423. package/packages/host/dist/sessions/drive.js.map +1 -1
  424. package/packages/host/dist/sessions/knobs.d.ts +8 -0
  425. package/packages/host/dist/sessions/knobs.js +9 -0
  426. package/packages/host/dist/sessions/knobs.js.map +1 -1
  427. package/packages/host/dist/sessions/record.js +7 -2
  428. package/packages/host/dist/sessions/record.js.map +1 -1
  429. package/packages/host/dist/sessions/resume.d.ts +17 -0
  430. package/packages/host/dist/sessions/resume.js +65 -11
  431. package/packages/host/dist/sessions/resume.js.map +1 -1
  432. package/packages/host/dist/sessions/roster.js +3 -0
  433. package/packages/host/dist/sessions/roster.js.map +1 -1
  434. package/packages/host/dist/sessions/sidechannel.d.ts +1 -1
  435. package/packages/host/dist/sessions/sidechannel.js +2 -2
  436. package/packages/host/dist/sessions/turn.d.ts +15 -58
  437. package/packages/host/dist/sessions/turn.js +17 -356
  438. package/packages/host/dist/sessions/turn.js.map +1 -1
  439. package/packages/host/dist/sessions.d.ts +7 -1
  440. package/packages/host/dist/sessions.js +22 -13
  441. package/packages/host/dist/sessions.js.map +1 -1
  442. package/packages/host/dist/settle.d.ts +6 -0
  443. package/packages/host/dist/settle.js +26 -21
  444. package/packages/host/dist/settle.js.map +1 -1
  445. package/packages/host/dist/setupprefs.d.ts +26 -1
  446. package/packages/host/dist/setupprefs.js +49 -1
  447. package/packages/host/dist/setupprefs.js.map +1 -1
  448. package/packages/host/dist/sidecar/sidecarname.d.ts +2 -0
  449. package/packages/host/dist/sidecar/sidecarname.js +5 -1
  450. package/packages/host/dist/sidecar/sidecarname.js.map +1 -1
  451. package/packages/host/dist/sidecar/sidecarroute.d.ts +1 -1
  452. package/packages/host/dist/sidecar/sidecarroute.js +5 -0
  453. package/packages/host/dist/sidecar/sidecarroute.js.map +1 -1
  454. package/packages/host/dist/sidecar.d.ts +1 -1
  455. package/packages/host/dist/sidecar.js +1 -1
  456. package/packages/host/dist/sidecar.js.map +1 -1
  457. package/packages/host/dist/tokenscan.d.ts +4 -0
  458. package/packages/host/dist/tokenscan.js +6 -1
  459. package/packages/host/dist/tokenscan.js.map +1 -1
  460. package/packages/host/dist/tokenstats.js +3 -1
  461. package/packages/host/dist/tokenstats.js.map +1 -1
  462. package/packages/host/dist/transcript/transcriptparse.js +6 -1
  463. package/packages/host/dist/transcript/transcriptparse.js.map +1 -1
  464. package/packages/host/dist/transcript/transcriptturns.d.ts +29 -0
  465. package/packages/host/dist/transcript/transcriptturns.js +27 -0
  466. package/packages/host/dist/transcript/transcriptturns.js.map +1 -1
  467. package/packages/host/dist/transcript.d.ts +1 -1
  468. package/packages/host/dist/transcript.js +1 -1
  469. package/packages/host/dist/transcript.js.map +1 -1
  470. package/packages/host/dist/usagesources.d.ts +1 -1
  471. package/packages/host/dist/usagesources.js +7 -2
  472. package/packages/host/dist/usagesources.js.map +1 -1
  473. package/packages/host/dist/weekburn.d.ts +75 -0
  474. package/packages/host/dist/weekburn.js +251 -0
  475. package/packages/host/dist/weekburn.js.map +1 -0
  476. package/packages/host/dist/worktreeleftover.d.ts +9 -0
  477. package/packages/host/dist/worktreeleftover.js +17 -1
  478. package/packages/host/dist/worktreeleftover.js.map +1 -1
  479. package/packages/web/dist/assets/demo-C1GHaeTv.js +23 -0
  480. package/packages/web/dist/assets/icons-DlcvcZoo.js +1 -0
  481. package/packages/web/dist/assets/index-BBc6xwDA.css +1 -0
  482. package/packages/web/dist/assets/index-DzQKnksZ.js +169 -0
  483. package/packages/web/dist/assets/shared-Cl34umPA.js +47 -0
  484. package/packages/web/dist/assets/{sheets-Bjv2L-cG.css → sheets-DoUhPGK0.css} +1 -1
  485. package/packages/web/dist/assets/sheets-_3_SvXAx.js +220 -0
  486. package/packages/web/dist/build-id.txt +1 -1
  487. package/packages/web/dist/buildstamp.json +1 -0
  488. package/packages/web/dist/index.html +7 -7
  489. package/packages/web/dist/sw.js +14 -3
  490. package/release.json +7 -4
  491. package/packages/web/dist/assets/demo-CXlqlYE4.js +0 -23
  492. package/packages/web/dist/assets/icons-BbqDBVjw.js +0 -1
  493. package/packages/web/dist/assets/index-CgPoyb3Y.css +0 -1
  494. package/packages/web/dist/assets/index-D5JKj8DK.js +0 -169
  495. package/packages/web/dist/assets/shared-eyaskl5l.js +0 -47
  496. package/packages/web/dist/assets/sheets-BzzL2re1.js +0 -204
@@ -0,0 +1,328 @@
1
+ /**
2
+ * The person's open pull requests, and the actions on them (the PR card, P3).
3
+ *
4
+ * EVERY forge call of this module goes through `forge/` (`forgeOrGh`), never `gh`
5
+ * directly. Git calls are `git()`.
6
+ *
7
+ * The list is polled ONLY while a client holds a LEASE on the repo
8
+ * (`localrt.ts`'s model: no socket-close hook here, so a watcher that stops
9
+ * renewing lapses by itself — the phone renews every ~30 s, a lease lasts 60 s,
10
+ * the poll stops with the last watcher). A request never runs `gh pr list`: it is
11
+ * answered from the cache the poll keeps. The actions (merge, auto-merge, close,
12
+ * failing log) are one explicit POST each, from a tap, and run `gh` once.
13
+ *
14
+ * Notifications (checks failed / changes requested / merged or closed off the
15
+ * phone) are raised from the poll, so they exist ONLY while somebody is looking
16
+ * at the card — by design: a background poller per repo is a cost nobody asked for.
17
+ * They go through the same `notify("git", …)` path, so the push prefs gate them.
18
+ */
19
+ import { actionsRunId, prChanges, prViewsFrom } from "@waterplane/shared";
20
+ import { branchRules, cachedBranchRules } from "./branchrules.js";
21
+ import { env } from "./env.js";
22
+ import { gitDeleteBranch, gitPull } from "./git.js";
23
+ import { dueWatchers } from "./localrt.js";
24
+ import { execFileP } from "./proc.js";
25
+ import { forgeOrGh } from "./forge/index.js";
26
+ const NO_PROMPT = { ...process.env, GIT_TERMINAL_PROMPT: "0", GH_PROMPT_DISABLED: "1" };
27
+ const git = (wt, args) => execFileP("git", args, { cwd: wt, timeout: 60_000, env: NO_PROMPT, maxBuffer: 4 * 1024 * 1024 });
28
+ const msg = (e) => String(e.stderr || e?.message || e).trim().split("\n").slice(-3).join(" ");
29
+ // ── timing ───────────────────────────────────────────────────────────────
30
+ export let LEASE_MS = 60_000;
31
+ let pollMs = (() => { const n = Number(env("PRS_POLL_MS")); return Number.isFinite(n) && n > 0 ? Math.max(5_000, n) : 20_000; })();
32
+ /** Test seam: shorten the lease / poll period (no floor). */
33
+ export function setPrTiming(t) {
34
+ if (t.leaseMs !== undefined)
35
+ LEASE_MS = t.leaseMs;
36
+ if (t.pollMs !== undefined)
37
+ pollMs = t.pollMs;
38
+ }
39
+ let rulesLookup = null;
40
+ export function setPrRules(fn) { rulesLookup = fn; }
41
+ const rulesOf = (wt) => (rulesLookup ? rulesLookup(wt) : branchRules(wt));
42
+ let deps = null;
43
+ export function setPrNotify(d) { deps = d; }
44
+ const prKey = (repoId, n) => `pr:${repoId}:${n}`;
45
+ const watches = new Map();
46
+ const watchOf = (wt) => {
47
+ let w = watches.get(wt);
48
+ if (!w) {
49
+ w = { holders: new Map(), doc: {}, ours: new Set() };
50
+ watches.set(wt, w);
51
+ }
52
+ return w;
53
+ };
54
+ /** Is anything polling this worktree right now? (tests, diagnostics) */
55
+ export function prsPolling(wt) { return !!watches.get(wt)?.timer; }
56
+ /** The cached reading: never runs `gh`. */
57
+ export function cachedPrs(wt) { return watches.get(wt)?.doc ?? {}; }
58
+ /** One `gh pr list`. Failure of any kind is ABSENT (undefined) with a sentence. */
59
+ export async function listPrs(wt, rules) {
60
+ try {
61
+ const raw = await (await forgeOrGh(wt)).listPrs();
62
+ return { prs: prViewsFrom(raw, rules ?? (rulesLookup ? await rulesLookup(wt) : cachedBranchRules(wt))) };
63
+ }
64
+ catch (e) {
65
+ const t = msg(e);
66
+ return { why: /ENOENT/.test(t) ? "gh is not installed on this desktop" : `gh could not list pull requests: ${t.slice(0, 160)}` };
67
+ }
68
+ }
69
+ async function pollOnce(wt, w) {
70
+ // Direct or unread rules: no `gh` call at all — a direct repo's git view costs nothing new.
71
+ const rules = rulesLookup ? await rulesLookup(wt) : cachedBranchRules(wt);
72
+ if (!rules || rules.mode === "direct") {
73
+ w.doc = {};
74
+ w.prev = undefined;
75
+ return;
76
+ }
77
+ const r = await listPrs(wt, rules);
78
+ if (!r.prs) {
79
+ // Keep the last good list (it says when it is from); say why the refresh failed.
80
+ w.doc = w.doc.prs ? { ...w.doc, why: r.why } : { why: r.why };
81
+ return;
82
+ }
83
+ const changes = prChanges(w.prev, r.prs);
84
+ w.prev = r.prs;
85
+ w.doc = { prs: r.prs, at: Date.now() };
86
+ for (const c of changes) {
87
+ if (c.kind === "gone") {
88
+ if (w.ours.delete(c.number))
89
+ continue;
90
+ await goneNews(wt, w, c.number, c.title);
91
+ continue;
92
+ }
93
+ if (!deps || !w.ref)
94
+ continue;
95
+ const key = prKey(w.ref.id, c.number);
96
+ deps.notify("git", {
97
+ title: `${c.kind === "checks-failed" ? "Check failed" : "Changes requested"} · PR #${c.number}`,
98
+ body: c.kind === "checks-failed" ? `${c.detail ?? "A check"} failed on ${c.title}` : `A reviewer asked for changes on ${c.title}`,
99
+ outcome: "failed", key, tag: `pr-${w.ref.id}-${c.number}`, open: { to: "git", repoId: w.ref.id },
100
+ });
101
+ }
102
+ }
103
+ async function goneNews(wt, w, number, title) {
104
+ if (!deps || !w.ref)
105
+ return;
106
+ let state = "";
107
+ try {
108
+ state = await (await forgeOrGh(wt)).prState(number);
109
+ }
110
+ catch { /* worded below */ }
111
+ const word = state === "MERGED" ? "merged" : state === "CLOSED" ? "closed" : "no longer open";
112
+ const key = prKey(w.ref.id, number);
113
+ deps.resolveAttention(key, `PR #${number} was ${word}`);
114
+ deps.notify("git", {
115
+ title: `PR #${number} ${word} · ${w.ref.name}`, body: title,
116
+ outcome: "ok", tag: `pr-${w.ref.id}-${number}`, open: { to: "git", repoId: w.ref.id },
117
+ });
118
+ }
119
+ function tick(wt) {
120
+ const w = watches.get(wt);
121
+ if (!w)
122
+ return;
123
+ w.timer = undefined;
124
+ const { live, lapsed } = dueWatchers([...w.holders].map(([h, until]) => [h, { until, open: true }]), Date.now());
125
+ for (const h of lapsed)
126
+ w.holders.delete(h);
127
+ if (live.length === 0) {
128
+ w.prev = undefined;
129
+ return;
130
+ } // stops with its last watcher
131
+ w.running = pollOnce(wt, w).catch(() => undefined).finally(() => {
132
+ w.running = undefined;
133
+ if (w.holders.size > 0 && !w.timer) {
134
+ w.timer = setTimeout(() => tick(wt), pollMs);
135
+ w.timer.unref?.();
136
+ }
137
+ });
138
+ }
139
+ /**
140
+ * Take (or renew) a lease. The first lease of a worktree polls at once; the
141
+ * answer is whatever is cached NOW (the phone asks again, or the next frame of
142
+ * its renewal carries the fresh list) — a request never waits on `gh`.
143
+ */
144
+ export function leasePrs(wt, holder, ref) {
145
+ const w = watchOf(wt);
146
+ if (ref)
147
+ w.ref = ref;
148
+ w.holders.set(holder, Date.now() + LEASE_MS);
149
+ if (!w.timer && !w.running)
150
+ tick(wt);
151
+ return w.doc;
152
+ }
153
+ /** Drop everything (tests). */
154
+ export function stopAllPrs() {
155
+ for (const w of watches.values())
156
+ if (w.timer)
157
+ clearTimeout(w.timer);
158
+ watches.clear();
159
+ }
160
+ // ── actions ──────────────────────────────────────────────────────────────
161
+ const isNum = (n) => typeof n === "number" && Number.isInteger(n) && n > 0;
162
+ const METHOD_FLAG = { merge: 1, squash: 1, rebase: 1 };
163
+ const bad = (error) => ({ ok: false, error });
164
+ const afterAction = (wt, n, ours) => {
165
+ const w = watches.get(wt);
166
+ if (w && ours && w.holders.size > 0)
167
+ w.ours.add(n);
168
+ // Refresh now so the card is not a poll behind the tap (only while somebody watches).
169
+ if (w && w.holders.size > 0 && !w.running) {
170
+ w.running = pollOnce(wt, w).catch(() => undefined).finally(() => { w.running = undefined; });
171
+ }
172
+ };
173
+ export async function mergePr(wt, body) {
174
+ if (!isNum(body.number))
175
+ return bad("Which pull request? (number missing)");
176
+ const n = body.number;
177
+ const rules = await rulesOf(wt);
178
+ let method;
179
+ if (body.method !== undefined) {
180
+ if (typeof body.method !== "string" || !Object.hasOwn(METHOD_FLAG, body.method))
181
+ return bad("Merge method must be merge, squash or rebase.");
182
+ method = body.method;
183
+ if (rules?.allowedMerge.length && !rules.allowedMerge.includes(method))
184
+ return bad(`This repo does not allow a ${method} merge — it allows ${rules.allowedMerge.join(", ")}.`);
185
+ }
186
+ else
187
+ method = rules?.allowedMerge[0];
188
+ let head = "", base = "";
189
+ try {
190
+ const v = await (await forgeOrGh(wt)).prInfo(n);
191
+ head = String(v?.headRefName ?? "");
192
+ base = String(v?.baseRefName ?? "");
193
+ if (v?.state && v.state !== "OPEN")
194
+ return bad(`PR #${n} is ${String(v.state).toLowerCase()}, not open.`);
195
+ }
196
+ catch (e) {
197
+ return bad(`Could not read PR #${n}: ${msg(e)}`);
198
+ }
199
+ try {
200
+ await (await forgeOrGh(wt)).merge(n, method);
201
+ }
202
+ catch (e) {
203
+ return bad(`GitHub did not merge PR #${n}: ${msg(e)}`);
204
+ }
205
+ afterAction(wt, n, true);
206
+ return { ok: true, output: await tidyAfterMerge(wt, n, method ?? "merge", head, base) };
207
+ }
208
+ /** Pull the base branch if checked out, delete the head branch locally and on origin; say what was and was not done. */
209
+ async function tidyAfterMerge(wt, n, method, head, base) {
210
+ const did = [`Merged PR #${n} (${method}).`];
211
+ const not = [];
212
+ let cur = "";
213
+ try {
214
+ cur = (await git(wt, ["rev-parse", "--abbrev-ref", "HEAD"])).stdout.trim();
215
+ }
216
+ catch { /* unknown */ }
217
+ if (!base)
218
+ not.push("did not pull (the base branch is unknown)");
219
+ else if (cur !== base)
220
+ not.push(`did not pull ${base} (this checkout is on ${cur || "no branch"})`);
221
+ else {
222
+ const p = await gitPull(wt);
223
+ if (p.ok)
224
+ did.push(`Pulled ${base}.`);
225
+ else
226
+ not.push(`did not pull ${base}: ${(p.error ?? "").split("\n")[0]}`);
227
+ }
228
+ const safeRef = head && head !== base && /^[A-Za-z0-9._][A-Za-z0-9._/-]*$/.test(head) && !head.includes("..");
229
+ if (!safeRef) {
230
+ not.push(head ? `kept branch ${head}` : "did not delete the branch (its name is unknown)");
231
+ }
232
+ else {
233
+ if (cur === head)
234
+ not.push(`kept local branch ${head} (it is checked out)`);
235
+ else {
236
+ const d = await gitDeleteBranch(wt, head);
237
+ if (d.ok)
238
+ did.push(`Deleted local branch ${head}.`);
239
+ else if (/not found|did not match/i.test(d.error ?? ""))
240
+ did.push(`Local branch ${head} was already gone.`);
241
+ else
242
+ not.push(`kept local branch ${head} (git says it is not fully merged here — a squash merge looks like that; delete it yourself if you are sure)`);
243
+ }
244
+ try {
245
+ await git(wt, ["push", "origin", "--delete", `refs/heads/${head}`]);
246
+ did.push(`Deleted ${head} on origin.`);
247
+ }
248
+ catch (e) {
249
+ if (/remote ref does not exist|unable to delete|already|not found/i.test(msg(e)))
250
+ did.push(`${head} was already gone on origin.`);
251
+ else
252
+ not.push(`kept ${head} on origin: ${msg(e).slice(0, 120)}`);
253
+ }
254
+ }
255
+ return not.length ? `${did.join(" ")} Not done: ${not.join("; ")}.` : did.join(" ");
256
+ }
257
+ export async function autoMergePr(wt, body) {
258
+ if (!isNum(body.number))
259
+ return bad("Which pull request? (number missing)");
260
+ if (typeof body.on !== "boolean")
261
+ return bad("Say whether auto-merge goes on or off.");
262
+ const n = body.number;
263
+ if (!body.on) {
264
+ try {
265
+ await (await forgeOrGh(wt)).autoMerge(n, false);
266
+ }
267
+ catch (e) {
268
+ return bad(`Could not switch auto-merge off for PR #${n}: ${msg(e)}`);
269
+ }
270
+ afterAction(wt, n, false);
271
+ return { ok: true, output: `Auto-merge is off for PR #${n}.` };
272
+ }
273
+ const rules = await rulesOf(wt);
274
+ if (rules && !rules.autoMerge)
275
+ return bad("This repo does not allow auto-merge. Turn on \"Allow auto-merge\" in the repo's GitHub settings, or merge by hand when the checks are green.");
276
+ const method = typeof body.method === "string" && body.method in METHOD_FLAG ? body.method : rules?.allowedMerge[0];
277
+ try {
278
+ await (await forgeOrGh(wt)).autoMerge(n, true, method);
279
+ }
280
+ catch (e) {
281
+ return bad(`Could not switch auto-merge on for PR #${n}: ${msg(e)}`);
282
+ }
283
+ afterAction(wt, n, false);
284
+ return { ok: true, output: `Auto-merge is on for PR #${n}: it merges once its checks and reviews allow. Nothing else changes until then.` };
285
+ }
286
+ export async function closePr(wt, body) {
287
+ if (!isNum(body.number))
288
+ return bad("Which pull request? (number missing)");
289
+ try {
290
+ await (await forgeOrGh(wt)).close(body.number);
291
+ }
292
+ catch (e) {
293
+ return bad(`Could not close PR #${body.number}: ${msg(e)}`);
294
+ }
295
+ afterAction(wt, body.number, true);
296
+ return { ok: true, output: `Closed PR #${body.number}. Its branch was left alone.` };
297
+ }
298
+ const TAIL_LINES = 80;
299
+ const ANSI = /\u001b\[[0-9;?]*[ -/]*[@-~]/g;
300
+ /** The tail of the failing check's Actions log, or the check's own page when it is not an Actions run. */
301
+ export async function failingLog(wt, body) {
302
+ if (!isNum(body.number))
303
+ return bad("Which pull request? (number missing)");
304
+ const n = body.number;
305
+ let pr = (watches.get(wt)?.doc.prs ?? []).find((p) => p.number === n);
306
+ if (!pr)
307
+ pr = (await listPrs(wt)).prs?.find((p) => p.number === n);
308
+ if (!pr)
309
+ return bad(`PR #${n} is not in your open list.`);
310
+ const failed = pr.checks.filter((c) => c.state === "failed");
311
+ const check = (typeof body.check === "string" ? failed.find((c) => c.name === body.check) : undefined) ?? failed[0];
312
+ if (!check)
313
+ return bad(`No check has failed on PR #${n}.`);
314
+ const runId = actionsRunId(check.url);
315
+ if (!runId)
316
+ return { ok: true, url: check.url, output: `${check.name} is not a GitHub Actions run, so there is no log to show here.${check.url ? " Open its page." : ""}` };
317
+ try {
318
+ const stdout = await (await forgeOrGh(wt)).checksLog(runId);
319
+ const lines = stdout.replace(ANSI, "").split("\n").filter((l, i, a) => l.trim() || i < a.length - 1);
320
+ if (!lines.length)
321
+ return { ok: true, url: check.url, output: `${check.name}: the run has no failed-step log yet.` };
322
+ return { ok: true, url: check.url, output: lines.slice(-TAIL_LINES).join("\n") };
323
+ }
324
+ catch (e) {
325
+ return { ok: true, url: check.url, output: `${check.name}: gh could not fetch the log (${msg(e).slice(0, 120)}).${check.url ? " Open its page." : ""}` };
326
+ }
327
+ }
328
+ //# sourceMappingURL=prs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prs.js","sourceRoot":"","sources":["../src/prs.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { type PushSubscription } from "web-push";
2
+ import { type NotifyLevel, type NotifyOpen } from "@waterplane/shared";
2
3
  export interface PushPayload {
3
4
  title: string;
4
5
  body: string;
@@ -27,6 +28,24 @@ export interface PushPayload {
27
28
  pull?: string;
28
29
  /** Id of the plugin that posted this; a tap opens that plugin's screen. */
29
30
  plugin?: string;
31
+ /** The feed item's own id, kind and stamp, so the service worker can hand a
32
+ * tapped alert back to the page whole (`openNotif`). */
33
+ id?: string;
34
+ kind?: string;
35
+ ts?: number;
36
+ /** A backlog cut to open (`NotificationItem.backlog`). */
37
+ backlog?: {
38
+ cwd: string;
39
+ ids: string[];
40
+ };
41
+ /** The screen a tap opens (`NotificationItem.open`). */
42
+ open?: NotifyOpen;
43
+ /** `attention` or `info` (`notifyLevel`), so the service worker can word or
44
+ * channel the two apart. Only attention is pushed unless the person asked for
45
+ * information too (`notify.prefs`' `pushInfo`) or the payload carries `pull`. */
46
+ level?: NotifyLevel;
47
+ /** The attention item's cause key (`NotificationItem.key`). */
48
+ key?: string;
30
49
  }
31
50
  export declare class PushManager {
32
51
  private subs;
@@ -1 +1 @@
1
- {"version":3,"file":"push.js","sourceRoot":"","sources":["../src/push.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"push.js","sourceRoot":"","sources":["../src/push.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,53 @@
1
+ /**
2
+ * The ONE headless VT replay: raw PTY bytes → the text that was on screen.
3
+ *
4
+ * The claude TUI positions characters with absolute cursor moves and full-screen
5
+ * repaints rather than printing linearly, so simply stripping ANSI leaves
6
+ * shuffled fragments ("· ← ···") — and, worse, fragments with the spaces GONE,
7
+ * because a gap drawn by a cursor jump is not a space in the byte stream.
8
+ * `Current session` arrives as `Currentsession`. Feeding the bytes to a real VT
9
+ * and reading back the buffer yields what a user would see. The width must match
10
+ * the live PTY or lines wrap wrong. Best-effort — a usable record of what the
11
+ * turn printed, not a true chat transcript.
12
+ *
13
+ * It lives here rather than in `sessions.ts` because it has two callers with no
14
+ * session between them: `screenText()` (a live PTY's scrollback, outside the
15
+ * alternate screen) and `usage.ts`
16
+ * (a short-lived probe's capture). The second one is why the extraction happened
17
+ * — `/usage` prints each window's reset instant as WORDS under its heading
18
+ * ("Resets Sep 10 at 7pm (Europe/Berlin)"), and a scraper reading stripped bytes
19
+ * could match neither the heading nor the sentence, so both resets were null on
20
+ * a screen that named them both.
21
+ *
22
+ * Cost is a full VT replay, so this is for rare paths, not per-frame checks.
23
+ *
24
+ * ## Two readbacks, one replay
25
+ *
26
+ * `renderCapture()` answers "what did it say"; `renderCells()` answers "what did
27
+ * it say, and how was it painted". They share `replay()` and differ only in what
28
+ * they read out of the same buffer, because the alternative was a second VT — a
29
+ * second opinion about what is on a screen, which is exactly the thing CLAUDE.md
30
+ * names this file to prevent.
31
+ *
32
+ * The attributed readback exists because of a measured fact about a second
33
+ * backend: opencode's permission dialog marks the ARMED option with a background
34
+ * colour and nothing else — no number, no `❯`, no bold. Flattening to text
35
+ * throws away the one bit that says which option a Return would press, so the
36
+ * dialog was unanswerable from the phone and `caps.promptBoxes` was false. See
37
+ * `ocprompt.ts` for the reader and `docs/notes/host.md` for the byte-level
38
+ * measurement. The colours themselves are never named here: this file reports
39
+ * what the VT holds, and every judgement about it is the reader's.
40
+ */
41
+ import xtermHeadless from "@xterm/headless";
42
+ declare const Terminal: typeof xtermHeadless.Terminal;
1
43
  export declare function renderCapture(raw: string, cols: number): Promise<string>;
44
+ /**
45
+ * Rendered rows as `renderCapture()` hands them out: trailing spaces trimmed and
46
+ * 3+ blank lines squeezed to one gap. Shared with the recorder's grid read
47
+ * (`drive.ts`'s `screenText`), whose callers measure distance from the LAST
48
+ * row — an untrimmed grid's blank tail would push every echo out of reach.
49
+ */
50
+ export declare function screenTextOf(lines: readonly string[]): string;
2
51
  /**
3
52
  * A run of adjacent cells that agree on every attribute this app reads back.
4
53
  *
@@ -48,3 +97,11 @@ export interface RenderRow {
48
97
  * bottom of a live screen. 0 means the whole buffer.
49
98
  */
50
99
  export declare function renderCells(raw: string, cols: number, tailRows?: number): Promise<RenderRow[]>;
100
+ /**
101
+ * Rows `start` (inclusive) to `end` (exclusive) of a terminal's ACTIVE buffer,
102
+ * read as `RenderRow`s. The cell walk behind `renderCells()`, shared with
103
+ * `screenlog.ts`'s `gridCells()` so a replay and the recorder's live grid can
104
+ * never disagree about what a row's text, runs or dim cells are.
105
+ */
106
+ export declare function cellRows(term: InstanceType<typeof Terminal>, start: number, end: number): RenderRow[];
107
+ export {};
@@ -11,7 +11,8 @@
11
11
  * turn printed, not a true chat transcript.
12
12
  *
13
13
  * It lives here rather than in `sessions.ts` because it has two callers with no
14
- * session between them: `screenText()` (a live PTY's scrollback) and `usage.ts`
14
+ * session between them: `screenText()` (a live PTY's scrollback, outside the
15
+ * alternate screen) and `usage.ts`
15
16
  * (a short-lived probe's capture). The second one is why the extraction happened
16
17
  * — `/usage` prints each window's reset instant as WORDS under its heading
17
18
  * ("Resets Sep 10 at 7pm (Europe/Berlin)"), and a scraper reading stripped bytes
@@ -71,10 +72,18 @@ export function renderCapture(raw, cols) {
71
72
  const line = buf.getLine(i);
72
73
  lines.push(line ? line.translateToString(true) : "");
73
74
  }
74
- // Trim trailing spaces and squeeze 3+ blank lines down to one gap.
75
- return lines.join("\n").replace(/[ \t]+$/gm, "").replace(/\n{3,}/g, "\n\n").trim();
75
+ return screenTextOf(lines);
76
76
  });
77
77
  }
78
+ /**
79
+ * Rendered rows as `renderCapture()` hands them out: trailing spaces trimmed and
80
+ * 3+ blank lines squeezed to one gap. Shared with the recorder's grid read
81
+ * (`drive.ts`'s `screenText`), whose callers measure distance from the LAST
82
+ * row — an untrimmed grid's blank tail would push every echo out of reach.
83
+ */
84
+ export function screenTextOf(lines) {
85
+ return lines.join("\n").replace(/[ \t]+$/gm, "").replace(/\n{3,}/g, "\n\n").trim();
86
+ }
78
87
  /** The attribute key for one cell, in the shape `RenderSpan` documents. */
79
88
  function bgKey(c) {
80
89
  return c.isBgRGB() ? `rgb:${c.getBgColor()}` : c.isBgPalette() ? `pal:${c.getBgColor()}` : "def";
@@ -95,44 +104,53 @@ export function renderCells(raw, cols, tailRows = 0) {
95
104
  if (!raw)
96
105
  return Promise.resolve([]);
97
106
  return replay(raw, cols, (term) => {
98
- const buf = term.buffer.active;
99
- const width = term.cols;
100
- const start = tailRows > 0 ? Math.max(0, buf.length - tailRows) : 0;
101
- const rows = [];
102
- // One reusable cell for the whole walk: `getCell(x)` allocates a fresh
103
- // object per call, and this loop makes one call per cell on screen.
104
- const scratch = buf.getNullCell?.();
105
- for (let i = start; i < buf.length; i++) {
106
- const line = buf.getLine(i);
107
- if (!line) {
108
- rows.push({ text: "", spans: [], undimmed: "" });
107
+ const len = term.buffer.active.length;
108
+ return cellRows(term, tailRows > 0 ? Math.max(0, len - tailRows) : 0, len);
109
+ });
110
+ }
111
+ /**
112
+ * Rows `start` (inclusive) to `end` (exclusive) of a terminal's ACTIVE buffer,
113
+ * read as `RenderRow`s. The cell walk behind `renderCells()`, shared with
114
+ * `screenlog.ts`'s `gridCells()` so a replay and the recorder's live grid can
115
+ * never disagree about what a row's text, runs or dim cells are.
116
+ */
117
+ export function cellRows(term, start, end) {
118
+ const buf = term.buffer.active;
119
+ const width = term.cols;
120
+ const rows = [];
121
+ // One reusable cell for the whole walk: `getCell(x)` allocates a fresh
122
+ // object per call, and this loop makes one call per cell on screen.
123
+ const scratch = buf.getNullCell?.();
124
+ for (let i = start; i < end; i++) {
125
+ const line = buf.getLine(i);
126
+ if (!line) {
127
+ rows.push({ text: "", spans: [], undimmed: "" });
128
+ continue;
129
+ }
130
+ const spans = [];
131
+ let lit = "";
132
+ let cur = null;
133
+ for (let x = 0; x < width; x++) {
134
+ const cell = line.getCell(x, scratch);
135
+ if (!cell)
109
136
  continue;
137
+ const bg = bgKey(cell);
138
+ const fg = fgKey(cell);
139
+ if (!cur || cur.bg !== bg || cur.fg !== fg) {
140
+ cur = { from: x, to: x, text: "", bg, fg };
141
+ spans.push(cur);
110
142
  }
111
- const spans = [];
112
- let lit = "";
113
- let cur = null;
114
- for (let x = 0; x < width; x++) {
115
- const cell = line.getCell(x, scratch);
116
- if (!cell)
117
- continue;
118
- const bg = bgKey(cell);
119
- const fg = fgKey(cell);
120
- if (!cur || cur.bg !== bg || cur.fg !== fg) {
121
- cur = { from: x, to: x, text: "", bg, fg };
122
- spans.push(cur);
123
- }
124
- cur.to = x;
125
- // A cell the VT left empty reads as "", and a row of those must still
126
- // occupy its columns — a span's text is one character per cell or the
127
- // column arithmetic every reader does on top of it is wrong.
128
- cur.text += cell.getChars() || " ";
129
- // The second cell of a wide character has width 0 and no text of its own.
130
- if (cell.getWidth() > 0)
131
- lit += cell.isDim() ? " " : cell.getChars() || " ";
132
- }
133
- rows.push({ text: line.translateToString(true), spans, undimmed: lit.trimEnd() });
143
+ cur.to = x;
144
+ // A cell the VT left empty reads as "", and a row of those must still
145
+ // occupy its columns — a span's text is one character per cell or the
146
+ // column arithmetic every reader does on top of it is wrong.
147
+ cur.text += cell.getChars() || " ";
148
+ // The second cell of a wide character has width 0 and no text of its own.
149
+ if (cell.getWidth() > 0)
150
+ lit += cell.isDim() ? " " : cell.getChars() || " ";
134
151
  }
135
- return rows;
136
- });
152
+ rows.push({ text: line.translateToString(true), spans, undimmed: lit.trimEnd() });
153
+ }
154
+ return rows;
137
155
  }
138
156
  //# sourceMappingURL=render.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"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"}
@@ -98,7 +98,10 @@
98
98
  * is also what keeps waterplane self-hosting and every test written against that
99
99
  * shape green. (The flag was designed as ONE argv token precisely so an
100
100
  * old parser ignores it rather than reading it as a subcommand, so the
101
- * omission is not a compatibility crutch — it is who decides.)
101
+ * omission is not a compatibility crutch — it is who decides.) **Unless it
102
+ * cannot load**: a bare package it imports is not installed or not built
103
+ * (a fresh clone) ⇒ the bundled engine reads instead, with `ownSkipped`
104
+ * saying why; the copy wins again the moment the clone is installed.
102
105
  * 2. **The bundled engine** — `WATERPLANE_REPOHEALTH_ENGINE` when set, else this
103
106
  * checkout's own `tools/repohealth.mjs`, three hops up from this module
104
107
  * (the rule `main.ts` uses for `.env` and `webbundle.ts` for the web
@@ -594,7 +597,7 @@ scope = null) {
594
597
  // the one where nothing ran: a phone saying how long a backfill may take
595
598
  // must not hold its own copy of a number this desktop can change.
596
599
  stepTimeoutMs: REPOHEALTH_TIMEOUT_MS,
597
- engine: engine ? { kind: engine.kind, bundled: bundledEngine() } : null,
600
+ engine: engine ? { kind: engine.kind, bundled: bundledEngine(), ...(engine.ownSkipped ? { ownSkipped: engine.ownSkipped } : {}) } : null,
598
601
  // WHICH reading this is, and which others exist. Both ride on every answer
599
602
  // including the one where nothing ran: a client that cannot see the list
600
603
  // cannot offer the subtrees, and one that cannot see which it is holding