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,209 @@
1
+ /**
2
+ * The rows and sentences of the always-on context feature, worded ONCE for the phone and the
3
+ * VS Code extension: what a repo and this desktop put in every turn (`alwaysOnRows`,
4
+ * `alwaysOnTotalsWords`) and what one conversation's first request carried (`carriedRows`,
5
+ * `carriedWords`, `carriedRemainder`).
6
+ *
7
+ * Rules (CLAUDE.md, skill `web-numbers`): a total is never said without its split; chars are the
8
+ * fact and tokens per part are an estimate, always worded `~`/"about"; an unsized row is NAMED,
9
+ * never counted as 0; nothing here refuses or applies anything.
10
+ */
11
+ import { countedByThreshold, claudeWeightInput, MCP_UNSIZED } from "./agentfiles.js";
12
+ import { CHARS_PER_TOKEN, weighContext } from "./contextweight.js";
13
+ import { fmtCount } from "./tokens.js";
14
+ import { CARRIED_KINDS } from "./wire/alwayson.js";
15
+ const tokOf = (chars) => Math.round(chars / CHARS_PER_TOKEN);
16
+ const plural = (n, one, many = `${one}s`) => `${n} ${n === 1 ? one : many}`;
17
+ /** One row per inventory row, in the inventory's order. */
18
+ export function alwaysOnRows(files) {
19
+ return files.map((f) => {
20
+ const readers = [...new Set(f.parts.flatMap((p) => p.readers))];
21
+ const sum = (k) => (f.unsized ? null : f.parts.filter((p) => p.when.kind === k).reduce((n, p) => n + p.chars, 0));
22
+ const row = {
23
+ path: f.path, kind: f.kind, scope: f.scope ?? "repo", readers,
24
+ always: sum("always"), scoped: sum("scoped"), onDemand: sum("on-demand"),
25
+ counted: countedByThreshold(f) && readers.includes("claude"),
26
+ };
27
+ if (f.unsized)
28
+ row.unsized = f.unsized;
29
+ if (f.off)
30
+ row.off = f.off;
31
+ return row;
32
+ });
33
+ }
34
+ /**
35
+ * Claude Code's every-turn chars over a set of rows, how many sized files that is, how many MCP
36
+ * servers send schemas nobody can size, and how many other rows have no number (a plugin pack not
37
+ * on disk, a source that could not be read, a server declined here) — never called servers.
38
+ */
39
+ function claudeAlways(files) {
40
+ let chars = 0, n = 0, servers = 0, other = 0;
41
+ for (const f of files) {
42
+ if (f.unsized) {
43
+ if (f.unsized === MCP_UNSIZED)
44
+ servers++;
45
+ else
46
+ other++;
47
+ continue;
48
+ }
49
+ const mine = f.parts.filter((p) => p.readers.includes("claude") && p.when.kind === "always");
50
+ if (!mine.length)
51
+ continue;
52
+ n++;
53
+ chars += mine.reduce((s, p) => s + p.chars, 0);
54
+ }
55
+ return { chars, files: n, servers, other };
56
+ }
57
+ const unsizedWords = (c, where) => (c.servers ? ` ${plural(c.servers, "MCP server")} ${where}add tool schemas nobody can size from here.` : "")
58
+ + (c.other ? ` ${plural(c.other, "more row")} ${c.other === 1 ? "has" : "have"} no size here; each says why.` : "");
59
+ /**
60
+ * The list's lead: what Claude Code carries every turn from the repo's files, how much of that
61
+ * the threshold row counts (and which families), then this desktop's rows the same way. The total
62
+ * never stands without the split; unsized rows are counted by name, never as 0.
63
+ */
64
+ export function alwaysOnTotalsWords(files, fmt = fmtCount) {
65
+ const repo = files.filter((f) => f.scope !== "desktop");
66
+ const desk = files.filter((f) => f.scope === "desktop");
67
+ const out = [];
68
+ const r = claudeAlways(repo);
69
+ if (r.files) {
70
+ const counted = weighContext(claudeWeightInput(repo)).alwaysOnChars;
71
+ const listed = r.chars - counted;
72
+ const split = listed > 0
73
+ ? `; the threshold row counts ${fmt(counted)} of those (CLAUDE.md, its imports, rules, skill descriptions), the other ${fmt(listed)} are listed beside it (CLAUDE.local.md, subagent descriptions)`
74
+ : "; the threshold row counts all of them (CLAUDE.md, its imports, rules, skill descriptions)";
75
+ out.push(`Claude Code carries ~${fmt(tokOf(r.chars))} tokens (${fmt(r.chars)} chars) from ${plural(r.files, "repo file")} on every turn${split}.${unsizedWords(r, "")}`);
76
+ }
77
+ else if (repo.length) {
78
+ out.push(`Claude Code carries nothing from this repo's files on every turn.${unsizedWords(r, "")}`);
79
+ }
80
+ const d = claudeAlways(desk);
81
+ if (d.files) {
82
+ out.push(`This desktop adds ~${fmt(tokOf(d.chars))} tokens (${fmt(d.chars)} chars) from ${plural(d.files, "file")} to every session, whatever the repo; the threshold row counts none of it.${unsizedWords(d, "of this desktop's ")}`);
83
+ }
84
+ else if (desk.length && (d.servers || d.other)) {
85
+ out.push(unsizedWords(d, "of this desktop's ").trim());
86
+ }
87
+ return out.join(" ");
88
+ }
89
+ /** The CLI config dir as words when the reader did not say (`RepoInstructionsDoc.configDir` absent: an older host). */
90
+ export const DEFAULT_CONFIG_DIR_WORDS = "~/.claude";
91
+ /**
92
+ * A desktop row's path as words, ONE rule for the phone and VS Code: a config-dir-relative path gets
93
+ * the config dir in front; a `~` or absolute path (`~/.claude.json`, a plugin installed elsewhere)
94
+ * is already words; the managed-plugins row has no path at all.
95
+ */
96
+ export function desktopPathWords(p, configDirWords = DEFAULT_CONFIG_DIR_WORDS) {
97
+ if (!p)
98
+ return "not on disk";
99
+ if (p.startsWith("~") || p.startsWith("/") || /^[A-Za-z]:[\\/]/.test(p) || p.startsWith("\\\\"))
100
+ return p;
101
+ return `${configDirWords.replace(/[\\/]+$/, "")}/${p}`;
102
+ }
103
+ /** Whether an unsized row is an MCP server whose schemas arrive at connect time (the When column says "every request" only for those). */
104
+ export const isUnsizedServer = (f) => f.unsized === MCP_UNSIZED;
105
+ export const CARRIED_REMAINDER_LABEL = "everything else in the first request: your prompt, and whatever the harness sent that the log does not record (≈)";
106
+ const UNDOC = "(undocumented record)";
107
+ function carriedLabel(p) {
108
+ const n = p.count;
109
+ switch (p.kind) {
110
+ case "instructions": return "instruction files";
111
+ case "skill_listing": return n != null ? `skill listing (${plural(n, "skill")})` : "skill listing";
112
+ case "mcp_instructions": return n != null ? `MCP instructions (${plural(n, "server")})` : "MCP instructions";
113
+ case "deferred_tools": return n != null ? `deferred tool names (${n})` : "deferred tool names";
114
+ case "agent_listing": return n != null ? `subagent listing (${n})` : "subagent listing";
115
+ case "hook_context": return n != null && n > 1 ? `hook context (${n})` : "hook context";
116
+ case "system_prompt": return `system prompt ${UNDOC}`;
117
+ case "tool_schemas": return `tool schemas ${UNDOC}`;
118
+ }
119
+ }
120
+ const charsWords = (chars, fmt) => `~${fmt(tokOf(chars))} tokens · ${fmt(chars)} chars`;
121
+ const partsTok = (c) => Math.round(c.parts.reduce((n, p) => n + p.chars, 0) / CHARS_PER_TOKEN);
122
+ /**
123
+ * `firstRequestTok` minus the parts' estimated tokens; null without the anchor, and null — never 0 —
124
+ * when the estimate already exceeds the request (JSON schemas tokenise denser than ~4 chars a token,
125
+ * so a tool-heavy request can overshoot): the remainder then cannot be placed, and `carriedWords`
126
+ * says so. An estimate by construction (the parts are chars), so it is always worded `≈`.
127
+ */
128
+ export function carriedRemainder(c) {
129
+ if (c.firstRequestTok == null)
130
+ return null;
131
+ const rest = c.firstRequestTok - partsTok(c);
132
+ return rest >= 0 ? rest : null;
133
+ }
134
+ /** The sentence beside a remainder that could not be placed. */
135
+ export const CARRIED_REMAINDER_UNPLACED = "The parts' estimate already exceeds the request, so the rest (your prompt among it) cannot be placed.";
136
+ /** The parts in `CarriedKind` order, then the remainder row when the first request has been answered and the remainder could be placed (`carriedRemainder`). */
137
+ export function carriedRows(c, fmt = fmtCount) {
138
+ const order = (k) => CARRIED_KINDS.indexOf(k);
139
+ const rows = [...c.parts].sort((a, b) => order(a.kind) - order(b.kind)).map((p) => {
140
+ const row = { key: p.kind, label: carriedLabel(p), chars: p.chars, tok: tokOf(p.chars), words: charsWords(p.chars, fmt) };
141
+ if (p.files)
142
+ row.files = p.files.map((f) => ({ label: `${f.path} · ${f.type}`, path: f.path, type: f.type, chars: f.chars, words: charsWords(f.chars, fmt) }));
143
+ if (p.names)
144
+ row.names = p.names;
145
+ if (p.undocumented)
146
+ row.undocumented = true;
147
+ return row;
148
+ });
149
+ const rest = carriedRemainder(c);
150
+ if (rest != null)
151
+ rows.push({ key: "remainder", label: CARRIED_REMAINDER_LABEL, chars: null, tok: rest, words: `≈${fmt(rest)} tokens` });
152
+ return rows;
153
+ }
154
+ const PART_NOUN = {
155
+ instructions: "the instruction files",
156
+ skill_listing: "the skill listing",
157
+ mcp_instructions: "MCP instructions",
158
+ deferred_tools: "deferred tool names",
159
+ agent_listing: "the subagent listing",
160
+ hook_context: "hook context",
161
+ system_prompt: "the system prompt",
162
+ tool_schemas: "tool schemas",
163
+ };
164
+ const capital = (s) => s.charAt(0).toUpperCase() + s.slice(1);
165
+ const andList = (xs) => (xs.length <= 1 ? xs.join("") : `${xs.slice(0, -1).join(", ")} and ${xs[xs.length - 1]}`);
166
+ /**
167
+ * The section's lead: the whole first request, then how much of it the documented attachments
168
+ * explain (chars, and tokens as "about"), what the undocumented snapshot adds where it was seen,
169
+ * and what the rest is. Later deltas are counted in one sentence, never folded in.
170
+ * `unplacedShown`: the caller draws `CARRIED_REMAINDER_UNPLACED`'s fact itself (the phone's strip
171
+ * caption), so the lead leaves it out rather than saying it twice.
172
+ */
173
+ export function carriedWords(c, fmt = fmtCount, opts = {}) {
174
+ const kinds = new Set(c.parts.map((p) => p.kind));
175
+ const documented = CARRIED_KINDS.filter((k) => kinds.has(k) && k !== "system_prompt" && k !== "tool_schemas");
176
+ const docChars = c.parts.filter((p) => !p.undocumented && p.kind !== "system_prompt" && p.kind !== "tool_schemas").reduce((n, p) => n + p.chars, 0);
177
+ const named = (c.laterKinds ?? []).filter((k) => k in PART_NOUN);
178
+ const later = named.length
179
+ ? ` ${capital(andList(named.map((k) => PART_NOUN[k])))} changed later in the conversation; the change is not folded in.`
180
+ : c.laterDeltas > 0
181
+ ? ` ${c.laterDeltas === 1 ? "One kind" : `${c.laterDeltas} kinds`} of these changed later in the conversation; the change is not folded in.`
182
+ : "";
183
+ if (c.firstRequestTok == null) {
184
+ return `No request has been answered yet; these are the attachments the CLI has written so far (chars).${later}`;
185
+ }
186
+ const out = [`The first request carried ${fmt(c.firstRequestTok)} tokens.`];
187
+ if (documented.length)
188
+ out.push(`About ${fmt(tokOf(docChars))} of them (${fmt(docChars)} chars) are ${andList(documented.map((k) => PART_NOUN[k]))} the CLI attached;`);
189
+ const snap = ["system_prompt", "tool_schemas"].filter((k) => kinds.has(k));
190
+ const unknown = ["system_prompt", "tool_schemas"].filter((k) => !kinds.has(k)).map((k) => PART_NOUN[k]);
191
+ if (snap.length) {
192
+ const said = snap.map((k) => {
193
+ const chars = c.parts.filter((p) => p.kind === k).reduce((n, p) => n + p.chars, 0);
194
+ return `${PART_NOUN[k]} at about ${fmt(tokOf(chars))} tokens (${fmt(chars)} chars)`;
195
+ });
196
+ out.push(`${documented.length ? "an" : "An"} undocumented record puts ${andList(said)};`);
197
+ }
198
+ const lead = out[out.length - 1].endsWith(";");
199
+ if (carriedRemainder(c) == null) {
200
+ if (!opts.unplacedShown)
201
+ out.push(lead ? CARRIED_REMAINDER_UNPLACED.replace(/^The/, "the") : CARRIED_REMAINDER_UNPLACED);
202
+ else if (lead)
203
+ out[out.length - 1] = out[out.length - 1].replace(/;$/, ".");
204
+ }
205
+ else
206
+ out.push(`${lead ? "the" : "The"} rest is ${andList([...unknown, "your prompt with what the harness added to it"])}.`);
207
+ return out.join(" ") + later;
208
+ }
209
+ //# sourceMappingURL=alwaysonwords.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alwaysonwords.js","sourceRoot":"","sources":["../src/alwaysonwords.ts"],"names":[],"mappings":"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"}
@@ -52,7 +52,7 @@ export function cleanAutoCompactDefault(raw) {
52
52
  * They are never in "Fix all", never counted as "one-tap fixable", and the
53
53
  * phone draws them behind a two-tap confirm. One list, read by both ends.
54
54
  */
55
- export const CONFIRM_GATED_FIXES = ["auto-compact", "android-toolchain", "signing-key"];
55
+ export const CONFIRM_GATED_FIXES = ["auto-compact", "android-toolchain", "signing-key", "protect-main", "era-seen", "local-ci-status"];
56
56
  /**
57
57
  * The `android-toolchain` fix installs a JDK and the Android SDK and accepts the SDK licence on
58
58
  * the person's behalf, so its confirm text IS the consent text: what, how big, where, and the
@@ -1 +1 @@
1
- {"version":3,"file":"autocompact.js","sourceRoot":"","sources":["../src/autocompact.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"autocompact.js","sourceRoot":"","sources":["../src/autocompact.ts"],"names":[],"mappings":"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"}
@@ -141,6 +141,13 @@ export interface DeliverySource {
141
141
  export interface TranscriptSource {
142
142
  /** The CLI's own change stamp; drives the 204 poll. Null = unknown (read anyway). */
143
143
  updatedAt(s: SourceSession): number | null;
144
+ /**
145
+ * Served verbatim, so a turn's subagent fields (`agentTypes`, `agentsRunning`, `agentModels`,
146
+ * `agentCostUsd`, `agentUnpricedTok`) are the plugin's to fill — only off a record that links the
147
+ * agent to that turn's own tool call, and the token/cost ones only beside the turn's OWN
148
+ * `tokens`/`models` (the phone folds `agentModels` into the turn's model mix, so agents alone
149
+ * read as the whole turn). An agent that cannot be placed withholds the turn's agent figures.
150
+ */
144
151
  read(s: SourceSession, detail: "lite" | "full"): Omit<TranscriptDoc, "sessionId" | "source"> | null;
145
152
  }
146
153
  /** Named `Source…` because wire/session.ts already exports a `ContextSample`. */
@@ -312,7 +319,10 @@ export interface SourceAgent {
312
319
  endedAt?: number;
313
320
  lastWriteAt?: number;
314
321
  }
315
- /** Polled on `agents.ts`'s cadence. */
322
+ /**
323
+ * Polled on `agents.ts`'s cadence. Background SHELLS have no slot: no plugin CLI writes down which
324
+ * of its shells is still running (docs/analysis/backend-parity-v3/c11.md), so they stay ABSENT.
325
+ */
316
326
  export interface AgentSource {
317
327
  list(s: SourceSession): SourceAgent[] | null;
318
328
  }
@@ -1 +1 @@
1
- {"version":3,"file":"backendsources.js","sourceRoot":"","sources":["../src/backendsources.ts"],"names":[],"mappings":"AAoGA,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC;AA0IjC,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC"}
1
+ {"version":3,"file":"backendsources.js","sourceRoot":"","sources":["../src/backendsources.ts"],"names":[],"mappings":"AAoGA,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC;AAiJjC,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * What a remote's own rules demand of a push to the default branch — read from
3
+ * GitHub's rules, never chosen by waterplane. `direct` is today's behaviour and
4
+ * the owner's: no rules, or only force-push/deletion blocked. Only a
5
+ * `pull_request`, `required_status_checks` or required-review rule makes it
6
+ * anything else. Unparseable input is ABSENT (undefined), never a guess.
7
+ */
8
+ export type BranchMode = "direct" | "pr" | "pr-checks";
9
+ export type MergeMethod = "merge" | "squash" | "rebase";
10
+ export interface BranchRules {
11
+ mode: BranchMode;
12
+ /** Status-check contexts the rules require (empty unless `pr-checks`). */
13
+ requiredChecks: string[];
14
+ /** Required checks pinned to one GitHub App (integration_id / app_id): only that app's status
15
+ * satisfies them, so a `local-ci` status from the user's token would not. Omitted when none. */
16
+ pinnedChecks?: string[];
17
+ requiredApprovals: number;
18
+ /** Merge methods the repo allows; empty = the repo JSON did not say. */
19
+ allowedMerge: MergeMethod[];
20
+ autoMerge: boolean;
21
+ }
22
+ /**
23
+ * @param rules parsed `repos/{slug}/rules/branches/{branch}` (array of {type, parameters})
24
+ * @param classic parsed classic `branches/{b}/protection`, or null/undefined when none (404)
25
+ * @param repo parsed `repos/{slug}` (allow_*_merge, allow_auto_merge)
26
+ */
27
+ export declare function classifyBranchRules(rules: unknown, classic?: unknown, repo?: unknown): BranchRules | undefined;
@@ -0,0 +1,80 @@
1
+ const isObj = (v) => !!v && typeof v === "object" && !Array.isArray(v);
2
+ /**
3
+ * @param rules parsed `repos/{slug}/rules/branches/{branch}` (array of {type, parameters})
4
+ * @param classic parsed classic `branches/{b}/protection`, or null/undefined when none (404)
5
+ * @param repo parsed `repos/{slug}` (allow_*_merge, allow_auto_merge)
6
+ */
7
+ export function classifyBranchRules(rules, classic, repo) {
8
+ if (!Array.isArray(rules))
9
+ return undefined;
10
+ if (classic !== undefined && classic !== null && !isObj(classic))
11
+ return undefined;
12
+ let pr = false;
13
+ let approvals = 0;
14
+ const checks = new Set();
15
+ const pinned = new Set();
16
+ let statusChecks = false;
17
+ for (const r of rules) {
18
+ if (!isObj(r) || typeof r.type !== "string")
19
+ return undefined;
20
+ const p = isObj(r.parameters) ? r.parameters : {};
21
+ if (r.type === "pull_request") {
22
+ pr = true;
23
+ const n = p.required_approving_review_count;
24
+ if (typeof n === "number" && n > 0)
25
+ approvals = Math.max(approvals, Math.floor(n));
26
+ }
27
+ else if (r.type === "required_status_checks") {
28
+ statusChecks = true;
29
+ const list = p.required_status_checks;
30
+ if (Array.isArray(list))
31
+ for (const c of list)
32
+ if (isObj(c) && typeof c.context === "string") {
33
+ checks.add(c.context);
34
+ if (typeof c.integration_id === "number")
35
+ pinned.add(c.context);
36
+ }
37
+ }
38
+ }
39
+ if (isObj(classic)) {
40
+ const rev = classic.required_pull_request_reviews;
41
+ if (isObj(rev)) {
42
+ pr = true;
43
+ const n = rev.required_approving_review_count;
44
+ if (typeof n === "number" && n > 0)
45
+ approvals = Math.max(approvals, Math.floor(n));
46
+ }
47
+ const sc = classic.required_status_checks;
48
+ if (isObj(sc)) {
49
+ statusChecks = true;
50
+ if (Array.isArray(sc.contexts))
51
+ for (const c of sc.contexts)
52
+ if (typeof c === "string")
53
+ checks.add(c);
54
+ if (Array.isArray(sc.checks))
55
+ for (const c of sc.checks)
56
+ if (isObj(c) && typeof c.context === "string") {
57
+ checks.add(c.context);
58
+ if (typeof c.app_id === "number" && c.app_id !== -1)
59
+ pinned.add(c.context);
60
+ }
61
+ }
62
+ }
63
+ const mode = statusChecks ? "pr-checks" : pr ? "pr" : "direct";
64
+ const allowedMerge = [];
65
+ let autoMerge = false;
66
+ if (isObj(repo)) {
67
+ if (repo.allow_merge_commit === true)
68
+ allowedMerge.push("merge");
69
+ if (repo.allow_squash_merge === true)
70
+ allowedMerge.push("squash");
71
+ if (repo.allow_rebase_merge === true)
72
+ allowedMerge.push("rebase");
73
+ autoMerge = repo.allow_auto_merge === true;
74
+ }
75
+ const out = { mode, requiredChecks: [...checks], requiredApprovals: approvals, allowedMerge, autoMerge };
76
+ if (pinned.size)
77
+ out.pinnedChecks = [...pinned];
78
+ return out;
79
+ }
80
+ //# sourceMappingURL=branchmode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"branchmode.js","sourceRoot":"","sources":["../src/branchmode.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /** What a build knows about itself. */
2
+ export interface BuildStamp {
3
+ /** The project's own version (`0.7.0`, `1.4.0+344`). */
4
+ version?: string;
5
+ /** The commit it was built from, short form. */
6
+ sha?: string;
7
+ /** Built with uncommitted edits in the sources it bundles: the sha alone does not say which. */
8
+ dirty?: boolean;
9
+ /** When it was built, epoch ms. */
10
+ at: number;
11
+ }
12
+ /** One line of `<state dir>/versions.jsonl`: a stamp plus WHICH artifact and where it went. */
13
+ export interface BuildRecord extends BuildStamp {
14
+ /** The artifact's stable name (`vscode-extension`, `apk-dev`, `web-bundle`). A build entry in
15
+ * `builds.json` names the one it produces with its `artifact` field. */
16
+ name: string;
17
+ /** Where it went: `dev`, `beta`, `store`, `local install`… free words, one line. */
18
+ channel?: string;
19
+ /** The file it produced, repo-relative, when there is one. */
20
+ file?: string;
21
+ }
22
+ /** The per-repo file builds append to, relative to the repo root (gitignored desktop state). */
23
+ export declare const BUILD_RECORDS_FILE: string;
24
+ /** `27 Oct 08:42` in the reader's local time — a clock read beside other local clocks. */
25
+ export declare function buildTimeText(at: number): string;
26
+ /** `0.7.0 · a1b2c3d · 27 Oct 08:42`, with `+ edits` after the sha when it was built dirty.
27
+ * A missing part is not said. */
28
+ export declare function buildStampText(s: BuildStamp): string;
29
+ /** A stamp from untrusted JSON; null when it has no usable time. */
30
+ export declare function cleanBuildStamp(v: unknown): BuildStamp | null;
31
+ /** A record from untrusted JSON; null without a name or a time. */
32
+ export declare function cleanBuildRecord(v: unknown): BuildRecord | null;
33
+ /** Every readable line of a `versions.jsonl`, oldest first as written. A line that does not
34
+ * parse is skipped, never fatal: one bad append must not hide every build after it. */
35
+ export declare function parseBuildRecords(text: string): BuildRecord[];
36
+ /** The newest record per name, newest first per name's history (capped at `keep` each). */
37
+ export declare function recordsByName(records: BuildRecord[], keep?: number): Record<string, BuildRecord[]>;
@@ -0,0 +1,95 @@
1
+ /**
2
+ * Which build is this — one identifier, said the same way in the artifact and on the phone.
3
+ *
4
+ * The failure this exists for: the VS Code "install latest" button reinstalled 0.2.0 for ten days
5
+ * (2026-10-16..26) while the package script built 0.3.0 through 0.7.0, and nothing anywhere said
6
+ * which build was running. A version alone would not have caught a rebuild of the same version
7
+ * either, so the identifier is the version AND the commit AND the time it was built.
8
+ *
9
+ * Two halves, one vocabulary:
10
+ * - `BuildStamp` is baked into an artifact at build time and shown INSIDE it (a tooltip, an About
11
+ * line), worded by `buildStampText`.
12
+ * - `BuildRecord` is one line a build appends to `<repo>/<state dir>/versions.jsonl` — whether a
13
+ * build button ran it or an agent did — and the build list shows the newest per `name`.
14
+ * The same `buildStampText` words both, so a person can match them by eye.
15
+ *
16
+ * Every field but `at` is optional and absent means nobody said — never "unknown", never 0.
17
+ */
18
+ import { BRAND } from "./brand.js";
19
+ /** The per-repo file builds append to, relative to the repo root (gitignored desktop state). */
20
+ export const BUILD_RECORDS_FILE = `${BRAND.stateDirName}/versions.jsonl`;
21
+ const MONTHS = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
22
+ /** `27 Oct 08:42` in the reader's local time — a clock read beside other local clocks. */
23
+ export function buildTimeText(at) {
24
+ const d = new Date(at);
25
+ const p = (n) => String(n).padStart(2, "0");
26
+ return `${d.getDate()} ${MONTHS[d.getMonth()]} ${p(d.getHours())}:${p(d.getMinutes())}`;
27
+ }
28
+ /** `0.7.0 · a1b2c3d · 27 Oct 08:42`, with `+ edits` after the sha when it was built dirty.
29
+ * A missing part is not said. */
30
+ export function buildStampText(s) {
31
+ const sha = s.sha ? `${s.sha}${s.dirty ? " + edits" : ""}` : s.dirty ? "uncommitted edits" : "";
32
+ return [s.version ?? "", sha, buildTimeText(s.at)].filter(Boolean).join(" · ");
33
+ }
34
+ const ONE_LINE = /^[^\r\n]{1,200}$/;
35
+ const str = (v) => (typeof v === "string" && ONE_LINE.test(v.trim()) ? v.trim() : undefined);
36
+ /** A stamp from untrusted JSON; null when it has no usable time. */
37
+ export function cleanBuildStamp(v) {
38
+ if (!v || typeof v !== "object")
39
+ return null;
40
+ const o = v;
41
+ if (typeof o.at !== "number" || !Number.isFinite(o.at) || o.at <= 0)
42
+ return null;
43
+ const out = { at: o.at };
44
+ const version = str(o.version);
45
+ const sha = str(o.sha);
46
+ if (version)
47
+ out.version = version;
48
+ if (sha && /^[0-9a-f]{4,40}$/i.test(sha))
49
+ out.sha = sha;
50
+ if (o.dirty === true)
51
+ out.dirty = true;
52
+ return out;
53
+ }
54
+ /** A record from untrusted JSON; null without a name or a time. */
55
+ export function cleanBuildRecord(v) {
56
+ const stamp = cleanBuildStamp(v);
57
+ const o = v;
58
+ const name = o ? str(o.name) : undefined;
59
+ if (!stamp || !name)
60
+ return null;
61
+ const out = { ...stamp, name };
62
+ const channel = str(o.channel);
63
+ const file = str(o.file);
64
+ if (channel)
65
+ out.channel = channel;
66
+ if (file)
67
+ out.file = file;
68
+ return out;
69
+ }
70
+ /** Every readable line of a `versions.jsonl`, oldest first as written. A line that does not
71
+ * parse is skipped, never fatal: one bad append must not hide every build after it. */
72
+ export function parseBuildRecords(text) {
73
+ const out = [];
74
+ for (const line of text.split("\n")) {
75
+ if (!line.trim())
76
+ continue;
77
+ try {
78
+ const r = cleanBuildRecord(JSON.parse(line));
79
+ if (r)
80
+ out.push(r);
81
+ }
82
+ catch { /* a torn or hand-edited line */ }
83
+ }
84
+ return out;
85
+ }
86
+ /** The newest record per name, newest first per name's history (capped at `keep` each). */
87
+ export function recordsByName(records, keep = 10) {
88
+ const by = {};
89
+ for (const r of records)
90
+ (by[r.name] ??= []).push(r);
91
+ for (const k of Object.keys(by))
92
+ by[k] = by[k].sort((a, b) => b.at - a.at).slice(0, keep);
93
+ return by;
94
+ }
95
+ //# sourceMappingURL=buildstamp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildstamp.js","sourceRoot":"","sources":["../src/buildstamp.ts"],"names":[],"mappings":"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"}
@@ -13,7 +13,7 @@
13
13
  * climb is NULL — never a rate somebody would plan around that was made up.
14
14
  * And the push is words only. Nothing here pauses, holds or refuses anything.
15
15
  */
16
- import type { UsageSample } from "./wire/telemetry.js";
16
+ import type { UsageSample, UsageSourceSample } from "./wire/telemetry.js";
17
17
  export interface UsagePoint {
18
18
  t: number;
19
19
  v: number;
@@ -135,3 +135,18 @@ export declare function burnPushText(s: BurnStretch, top: {
135
135
  title: string;
136
136
  body: string;
137
137
  };
138
+ /** The source windows worth a burn push: the LONG ones (claude's push is the week's, never the
139
+ * 5-hour's — a short window refilling fast is the normal case). Matched on `UsageWindow.unit`. */
140
+ export declare const SOURCE_BURN_UNITS: readonly string[];
141
+ /**
142
+ * One window of a non-claude source's kept readings as the `UsageSample` series the burn rule
143
+ * reads (`w` = that window's pct, `wr` = its reset; the 5-hour pair null). A reading where the
144
+ * window had no percentage keeps `w: null`, which the segment rule DROPS — never a zero.
145
+ */
146
+ export declare function sourceBurnSamples(samples: readonly UsageSourceSample[], windowId: string): UsageSample[];
147
+ /** The push for a source's window. No "dearest in it": the cost window is claude's conversations,
148
+ * and another backend has no per-conversation dollars to name. Words only. */
149
+ export declare function sourceBurnPushText(label: string, unit: string, s: BurnStretch): {
150
+ title: string;
151
+ body: string;
152
+ };
@@ -173,4 +173,34 @@ export function burnPushText(s, top, pts) {
173
173
  parts.push("Nothing was paused.");
174
174
  return { title, body: parts.join(" ") };
175
175
  }
176
+ // ── the same push for another backend's own window (c2 §3) ───────────────
177
+ /** The source windows worth a burn push: the LONG ones (claude's push is the week's, never the
178
+ * 5-hour's — a short window refilling fast is the normal case). Matched on `UsageWindow.unit`. */
179
+ export const SOURCE_BURN_UNITS = ["wk", "mo"];
180
+ /**
181
+ * One window of a non-claude source's kept readings as the `UsageSample` series the burn rule
182
+ * reads (`w` = that window's pct, `wr` = its reset; the 5-hour pair null). A reading where the
183
+ * window had no percentage keeps `w: null`, which the segment rule DROPS — never a zero.
184
+ */
185
+ export function sourceBurnSamples(samples, windowId) {
186
+ const out = [];
187
+ for (const r of samples) {
188
+ const w = r.w.find((x) => x.id === windowId);
189
+ if (!w)
190
+ continue;
191
+ out.push({ t: r.t, s: null, w: w.pct, sr: null, wr: w.resetAt });
192
+ }
193
+ return out;
194
+ }
195
+ /** The push for a source's window. No "dearest in it": the cost window is claude's conversations,
196
+ * and another backend has no per-conversation dollars to name. Words only. */
197
+ export function sourceBurnPushText(label, unit, s) {
198
+ const pts1 = fmtPts(s.dPts);
199
+ const pts = s.dPts === 1 ? "point" : "points";
200
+ const what = unit === "mo" ? "monthly" : unit === "wk" ? "weekly" : `${unit}`;
201
+ return {
202
+ title: `${label} ${what} limit climbing fast: +${pts1} ${pts} in ${fmtSpan(s.to - s.from)}`,
203
+ body: `${label}'s ${what} figure rose ${pts1} ${pts} in ${fmtSpan(s.to - s.from)}, about ${fmtPts(s.ptsPerHour)} an hour. That is ${label}'s own account, not claude's. Nothing was paused.`,
204
+ };
205
+ }
176
206
  //# sourceMappingURL=burn.js.map