@vibesdotdev/hq 0.0.0-stage → 1.0.0-rc.1

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 (615) hide show
  1. package/LICENSE +18 -0
  2. package/README.md +49 -2
  3. package/dist/agent-events/descriptors.d.ts +33 -0
  4. package/dist/agent-events/descriptors.d.ts.map +1 -0
  5. package/dist/agent-events/descriptors.js +34 -0
  6. package/dist/agent-events/descriptors.js.map +1 -0
  7. package/dist/app/auth/cloud-sync.consumer.d.ts +12 -0
  8. package/dist/app/auth/cloud-sync.consumer.d.ts.map +1 -0
  9. package/dist/app/auth/cloud-sync.consumer.js +31 -0
  10. package/dist/app/auth/cloud-sync.consumer.js.map +1 -0
  11. package/dist/app/auth/hq.app-auth-machine.record.descriptor.d.ts +5 -0
  12. package/dist/app/auth/hq.app-auth-machine.record.descriptor.d.ts.map +1 -0
  13. package/dist/app/auth/hq.app-auth-machine.record.descriptor.js +39 -0
  14. package/dist/app/auth/hq.app-auth-machine.record.descriptor.js.map +1 -0
  15. package/dist/app/auth/hq.app-auth-pairings.record.descriptor.d.ts +5 -0
  16. package/dist/app/auth/hq.app-auth-pairings.record.descriptor.d.ts.map +1 -0
  17. package/dist/app/auth/hq.app-auth-pairings.record.descriptor.js +43 -0
  18. package/dist/app/auth/hq.app-auth-pairings.record.descriptor.js.map +1 -0
  19. package/dist/app/auth/hq.app-auth-tokens.record.descriptor.d.ts +5 -0
  20. package/dist/app/auth/hq.app-auth-tokens.record.descriptor.d.ts.map +1 -0
  21. package/dist/app/auth/hq.app-auth-tokens.record.descriptor.js +42 -0
  22. package/dist/app/auth/hq.app-auth-tokens.record.descriptor.js.map +1 -0
  23. package/dist/app/auth/schemas/auth.d.ts +146 -0
  24. package/dist/app/auth/schemas/auth.d.ts.map +1 -0
  25. package/dist/app/auth/schemas/auth.js +53 -0
  26. package/dist/app/auth/schemas/auth.js.map +1 -0
  27. package/dist/app/auth/service.consumer.d.ts +17 -0
  28. package/dist/app/auth/service.consumer.d.ts.map +1 -0
  29. package/dist/app/auth/service.consumer.js +79 -0
  30. package/dist/app/auth/service.consumer.js.map +1 -0
  31. package/dist/app/auth/sync.consumer.d.ts +2 -0
  32. package/dist/app/auth/sync.consumer.d.ts.map +1 -0
  33. package/dist/app/auth/sync.consumer.js +2 -0
  34. package/dist/app/auth/sync.consumer.js.map +1 -0
  35. package/dist/app/auth/sync.d.ts +23 -0
  36. package/dist/app/auth/sync.d.ts.map +1 -0
  37. package/dist/app/auth/sync.js +290 -0
  38. package/dist/app/auth/sync.js.map +1 -0
  39. package/dist/app/auth/types.d.ts +20 -0
  40. package/dist/app/auth/types.d.ts.map +1 -0
  41. package/dist/app/auth/types.js +7 -0
  42. package/dist/app/auth/types.js.map +1 -0
  43. package/dist/app/sync/hq.app-auth.sync-bridge.descriptor.d.ts +9 -0
  44. package/dist/app/sync/hq.app-auth.sync-bridge.descriptor.d.ts.map +1 -0
  45. package/dist/app/sync/hq.app-auth.sync-bridge.descriptor.js +45 -0
  46. package/dist/app/sync/hq.app-auth.sync-bridge.descriptor.js.map +1 -0
  47. package/dist/applets/component-ref.d.ts +6 -0
  48. package/dist/applets/component-ref.d.ts.map +1 -0
  49. package/dist/applets/component-ref.js +6 -0
  50. package/dist/applets/component-ref.js.map +1 -0
  51. package/dist/applets/index.d.ts +3 -0
  52. package/dist/applets/index.d.ts.map +1 -0
  53. package/dist/applets/index.js +3 -0
  54. package/dist/applets/index.js.map +1 -0
  55. package/dist/approval/approval-resolved.event.descriptor.d.ts +11 -0
  56. package/dist/approval/approval-resolved.event.descriptor.d.ts.map +1 -0
  57. package/dist/approval/approval-resolved.event.descriptor.js +11 -0
  58. package/dist/approval/approval-resolved.event.descriptor.js.map +1 -0
  59. package/dist/approval/approval-resolved.job.descriptor.d.ts +36 -0
  60. package/dist/approval/approval-resolved.job.descriptor.d.ts.map +1 -0
  61. package/dist/approval/approval-resolved.job.descriptor.js +24 -0
  62. package/dist/approval/approval-resolved.job.descriptor.js.map +1 -0
  63. package/dist/approval/approval-resolved.job.impl.d.ts +19 -0
  64. package/dist/approval/approval-resolved.job.impl.d.ts.map +1 -0
  65. package/dist/approval/approval-resolved.job.impl.js +26 -0
  66. package/dist/approval/approval-resolved.job.impl.js.map +1 -0
  67. package/dist/approval/approval-resolved.subscription.descriptor.d.ts +21 -0
  68. package/dist/approval/approval-resolved.subscription.descriptor.d.ts.map +1 -0
  69. package/dist/approval/approval-resolved.subscription.descriptor.js +20 -0
  70. package/dist/approval/approval-resolved.subscription.descriptor.js.map +1 -0
  71. package/dist/approval/schemas.d.ts +45 -0
  72. package/dist/approval/schemas.d.ts.map +1 -0
  73. package/dist/approval/schemas.js +27 -0
  74. package/dist/approval/schemas.js.map +1 -0
  75. package/dist/approval/surface-approval-channel.descriptor.d.ts +14 -0
  76. package/dist/approval/surface-approval-channel.descriptor.d.ts.map +1 -0
  77. package/dist/approval/surface-approval-channel.descriptor.js +16 -0
  78. package/dist/approval/surface-approval-channel.descriptor.js.map +1 -0
  79. package/dist/approval/surface-approval-channel.impl.d.ts +19 -0
  80. package/dist/approval/surface-approval-channel.impl.d.ts.map +1 -0
  81. package/dist/approval/surface-approval-channel.impl.js +101 -0
  82. package/dist/approval/surface-approval-channel.impl.js.map +1 -0
  83. package/dist/cli/app/handoff/hq.app.handoff.descriptor.d.ts +40 -0
  84. package/dist/cli/app/handoff/hq.app.handoff.descriptor.d.ts.map +1 -0
  85. package/dist/cli/app/handoff/hq.app.handoff.descriptor.js +23 -0
  86. package/dist/cli/app/handoff/hq.app.handoff.descriptor.js.map +1 -0
  87. package/dist/cli/app/handoff/hq.app.handoff.impl.consumer.d.ts +7 -0
  88. package/dist/cli/app/handoff/hq.app.handoff.impl.consumer.d.ts.map +1 -0
  89. package/dist/cli/app/handoff/hq.app.handoff.impl.consumer.js +107 -0
  90. package/dist/cli/app/handoff/hq.app.handoff.impl.consumer.js.map +1 -0
  91. package/dist/cli/app/hq.app.cli-group.descriptor.d.ts +12 -0
  92. package/dist/cli/app/hq.app.cli-group.descriptor.d.ts.map +1 -0
  93. package/dist/cli/app/hq.app.cli-group.descriptor.js +12 -0
  94. package/dist/cli/app/hq.app.cli-group.descriptor.js.map +1 -0
  95. package/dist/cli/app/pair/hq.app.pair.descriptor.d.ts +43 -0
  96. package/dist/cli/app/pair/hq.app.pair.descriptor.d.ts.map +1 -0
  97. package/dist/cli/app/pair/hq.app.pair.descriptor.js +27 -0
  98. package/dist/cli/app/pair/hq.app.pair.descriptor.js.map +1 -0
  99. package/dist/cli/app/pair/hq.app.pair.impl.consumer.d.ts +7 -0
  100. package/dist/cli/app/pair/hq.app.pair.impl.consumer.d.ts.map +1 -0
  101. package/dist/cli/app/pair/hq.app.pair.impl.consumer.js +89 -0
  102. package/dist/cli/app/pair/hq.app.pair.impl.consumer.js.map +1 -0
  103. package/dist/cli/app/shared/options.d.ts +68 -0
  104. package/dist/cli/app/shared/options.d.ts.map +1 -0
  105. package/dist/cli/app/shared/options.js +7 -0
  106. package/dist/cli/app/shared/options.js.map +1 -0
  107. package/dist/cli/app/token/hq.app.token.descriptor.d.ts +40 -0
  108. package/dist/cli/app/token/hq.app.token.descriptor.d.ts.map +1 -0
  109. package/dist/cli/app/token/hq.app.token.descriptor.js +23 -0
  110. package/dist/cli/app/token/hq.app.token.descriptor.js.map +1 -0
  111. package/dist/cli/app/token/hq.app.token.impl.consumer.d.ts +7 -0
  112. package/dist/cli/app/token/hq.app.token.impl.consumer.d.ts.map +1 -0
  113. package/dist/cli/app/token/hq.app.token.impl.consumer.js +89 -0
  114. package/dist/cli/app/token/hq.app.token.impl.consumer.js.map +1 -0
  115. package/dist/cli/channel/hq.channel.cli-group.descriptor.d.ts +12 -0
  116. package/dist/cli/channel/hq.channel.cli-group.descriptor.d.ts.map +1 -0
  117. package/dist/cli/channel/hq.channel.cli-group.descriptor.js +12 -0
  118. package/dist/cli/channel/hq.channel.cli-group.descriptor.js.map +1 -0
  119. package/dist/cli/channel/hq.channel.enable.descriptor.d.ts +21 -0
  120. package/dist/cli/channel/hq.channel.enable.descriptor.d.ts.map +1 -0
  121. package/dist/cli/channel/hq.channel.enable.descriptor.js +16 -0
  122. package/dist/cli/channel/hq.channel.enable.descriptor.js.map +1 -0
  123. package/dist/cli/channel/hq.channel.enable.impl.d.ts +7 -0
  124. package/dist/cli/channel/hq.channel.enable.impl.d.ts.map +1 -0
  125. package/dist/cli/channel/hq.channel.enable.impl.js +23 -0
  126. package/dist/cli/channel/hq.channel.enable.impl.js.map +1 -0
  127. package/dist/cli/channel/hq.channel.fire.descriptor.d.ts +17 -0
  128. package/dist/cli/channel/hq.channel.fire.descriptor.d.ts.map +1 -0
  129. package/dist/cli/channel/hq.channel.fire.descriptor.js +13 -0
  130. package/dist/cli/channel/hq.channel.fire.descriptor.js.map +1 -0
  131. package/dist/cli/channel/hq.channel.fire.impl.d.ts +7 -0
  132. package/dist/cli/channel/hq.channel.fire.impl.d.ts.map +1 -0
  133. package/dist/cli/channel/hq.channel.fire.impl.js +26 -0
  134. package/dist/cli/channel/hq.channel.fire.impl.js.map +1 -0
  135. package/dist/cli/channel/hq.channel.list.descriptor.d.ts +16 -0
  136. package/dist/cli/channel/hq.channel.list.descriptor.d.ts.map +1 -0
  137. package/dist/cli/channel/hq.channel.list.descriptor.js +13 -0
  138. package/dist/cli/channel/hq.channel.list.descriptor.js.map +1 -0
  139. package/dist/cli/channel/hq.channel.list.impl.d.ts +7 -0
  140. package/dist/cli/channel/hq.channel.list.impl.d.ts.map +1 -0
  141. package/dist/cli/channel/hq.channel.list.impl.js +30 -0
  142. package/dist/cli/channel/hq.channel.list.impl.js.map +1 -0
  143. package/dist/cli/channel/hq.channel.logs.descriptor.d.ts +24 -0
  144. package/dist/cli/channel/hq.channel.logs.descriptor.d.ts.map +1 -0
  145. package/dist/cli/channel/hq.channel.logs.descriptor.js +17 -0
  146. package/dist/cli/channel/hq.channel.logs.descriptor.js.map +1 -0
  147. package/dist/cli/channel/hq.channel.logs.impl.d.ts +9 -0
  148. package/dist/cli/channel/hq.channel.logs.impl.d.ts.map +1 -0
  149. package/dist/cli/channel/hq.channel.logs.impl.js +74 -0
  150. package/dist/cli/channel/hq.channel.logs.impl.js.map +1 -0
  151. package/dist/cli/friction/_store-hint.d.ts +7 -0
  152. package/dist/cli/friction/_store-hint.d.ts.map +1 -0
  153. package/dist/cli/friction/_store-hint.js +13 -0
  154. package/dist/cli/friction/_store-hint.js.map +1 -0
  155. package/dist/cli/friction/hq.friction.cli-group.descriptor.d.ts +11 -0
  156. package/dist/cli/friction/hq.friction.cli-group.descriptor.d.ts.map +1 -0
  157. package/dist/cli/friction/hq.friction.cli-group.descriptor.js +15 -0
  158. package/dist/cli/friction/hq.friction.cli-group.descriptor.js.map +1 -0
  159. package/dist/cli/friction/hq.friction.disposition.d.ts +5 -0
  160. package/dist/cli/friction/hq.friction.disposition.d.ts.map +1 -0
  161. package/dist/cli/friction/hq.friction.disposition.js +64 -0
  162. package/dist/cli/friction/hq.friction.disposition.js.map +1 -0
  163. package/dist/cli/friction/hq.friction.emit.descriptor.d.ts +65 -0
  164. package/dist/cli/friction/hq.friction.emit.descriptor.d.ts.map +1 -0
  165. package/dist/cli/friction/hq.friction.emit.descriptor.js +70 -0
  166. package/dist/cli/friction/hq.friction.emit.descriptor.js.map +1 -0
  167. package/dist/cli/friction/hq.friction.emit.impl.d.ts +7 -0
  168. package/dist/cli/friction/hq.friction.emit.impl.d.ts.map +1 -0
  169. package/dist/cli/friction/hq.friction.emit.impl.js +85 -0
  170. package/dist/cli/friction/hq.friction.emit.impl.js.map +1 -0
  171. package/dist/cli/friction/hq.friction.list.descriptor.d.ts +37 -0
  172. package/dist/cli/friction/hq.friction.list.descriptor.d.ts.map +1 -0
  173. package/dist/cli/friction/hq.friction.list.descriptor.js +22 -0
  174. package/dist/cli/friction/hq.friction.list.descriptor.js.map +1 -0
  175. package/dist/cli/friction/hq.friction.list.impl.d.ts +7 -0
  176. package/dist/cli/friction/hq.friction.list.impl.d.ts.map +1 -0
  177. package/dist/cli/friction/hq.friction.list.impl.js +73 -0
  178. package/dist/cli/friction/hq.friction.list.impl.js.map +1 -0
  179. package/dist/cli/friction/hq.friction.promote.descriptor.d.ts +21 -0
  180. package/dist/cli/friction/hq.friction.promote.descriptor.d.ts.map +1 -0
  181. package/dist/cli/friction/hq.friction.promote.descriptor.js +14 -0
  182. package/dist/cli/friction/hq.friction.promote.descriptor.js.map +1 -0
  183. package/dist/cli/friction/hq.friction.promote.impl.d.ts +7 -0
  184. package/dist/cli/friction/hq.friction.promote.impl.d.ts.map +1 -0
  185. package/dist/cli/friction/hq.friction.promote.impl.js +47 -0
  186. package/dist/cli/friction/hq.friction.promote.impl.js.map +1 -0
  187. package/dist/cli/friction/hq.friction.reject.descriptor.d.ts +24 -0
  188. package/dist/cli/friction/hq.friction.reject.descriptor.d.ts.map +1 -0
  189. package/dist/cli/friction/hq.friction.reject.descriptor.js +17 -0
  190. package/dist/cli/friction/hq.friction.reject.descriptor.js.map +1 -0
  191. package/dist/cli/friction/hq.friction.reject.impl.d.ts +6 -0
  192. package/dist/cli/friction/hq.friction.reject.impl.d.ts.map +1 -0
  193. package/dist/cli/friction/hq.friction.reject.impl.js +7 -0
  194. package/dist/cli/friction/hq.friction.reject.impl.js.map +1 -0
  195. package/dist/cli/friction/hq.friction.resolve.descriptor.d.ts +27 -0
  196. package/dist/cli/friction/hq.friction.resolve.descriptor.d.ts.map +1 -0
  197. package/dist/cli/friction/hq.friction.resolve.descriptor.js +18 -0
  198. package/dist/cli/friction/hq.friction.resolve.descriptor.js.map +1 -0
  199. package/dist/cli/friction/hq.friction.resolve.impl.d.ts +6 -0
  200. package/dist/cli/friction/hq.friction.resolve.impl.d.ts.map +1 -0
  201. package/dist/cli/friction/hq.friction.resolve.impl.js +7 -0
  202. package/dist/cli/friction/hq.friction.resolve.impl.js.map +1 -0
  203. package/dist/cli/friction/hq.friction.show.descriptor.d.ts +24 -0
  204. package/dist/cli/friction/hq.friction.show.descriptor.d.ts.map +1 -0
  205. package/dist/cli/friction/hq.friction.show.descriptor.js +17 -0
  206. package/dist/cli/friction/hq.friction.show.descriptor.js.map +1 -0
  207. package/dist/cli/friction/hq.friction.show.impl.d.ts +7 -0
  208. package/dist/cli/friction/hq.friction.show.impl.d.ts.map +1 -0
  209. package/dist/cli/friction/hq.friction.show.impl.js +64 -0
  210. package/dist/cli/friction/hq.friction.show.impl.js.map +1 -0
  211. package/dist/cli/friction/hq.friction.sync.descriptor.d.ts +16 -0
  212. package/dist/cli/friction/hq.friction.sync.descriptor.d.ts.map +1 -0
  213. package/dist/cli/friction/hq.friction.sync.descriptor.js +13 -0
  214. package/dist/cli/friction/hq.friction.sync.descriptor.js.map +1 -0
  215. package/dist/cli/friction/hq.friction.sync.impl.d.ts +7 -0
  216. package/dist/cli/friction/hq.friction.sync.impl.d.ts.map +1 -0
  217. package/dist/cli/friction/hq.friction.sync.impl.js +29 -0
  218. package/dist/cli/friction/hq.friction.sync.impl.js.map +1 -0
  219. package/dist/cli/friction/hq.friction.triage.descriptor.d.ts +27 -0
  220. package/dist/cli/friction/hq.friction.triage.descriptor.d.ts.map +1 -0
  221. package/dist/cli/friction/hq.friction.triage.descriptor.js +18 -0
  222. package/dist/cli/friction/hq.friction.triage.descriptor.js.map +1 -0
  223. package/dist/cli/friction/hq.friction.triage.impl.d.ts +6 -0
  224. package/dist/cli/friction/hq.friction.triage.impl.d.ts.map +1 -0
  225. package/dist/cli/friction/hq.friction.triage.impl.js +7 -0
  226. package/dist/cli/friction/hq.friction.triage.impl.js.map +1 -0
  227. package/dist/cli/friction/invocation.d.ts +12 -0
  228. package/dist/cli/friction/invocation.d.ts.map +1 -0
  229. package/dist/cli/friction/invocation.js +28 -0
  230. package/dist/cli/friction/invocation.js.map +1 -0
  231. package/dist/cli/health/hq.health.descriptor.d.ts +19 -0
  232. package/dist/cli/health/hq.health.descriptor.d.ts.map +1 -0
  233. package/dist/cli/health/hq.health.descriptor.js +16 -0
  234. package/dist/cli/health/hq.health.descriptor.js.map +1 -0
  235. package/dist/cli/health/hq.health.impl.d.ts +3 -0
  236. package/dist/cli/health/hq.health.impl.d.ts.map +1 -0
  237. package/dist/cli/health/hq.health.impl.js +151 -0
  238. package/dist/cli/health/hq.health.impl.js.map +1 -0
  239. package/dist/cli/host-platform.d.ts +14 -0
  240. package/dist/cli/host-platform.d.ts.map +1 -0
  241. package/dist/cli/host-platform.js +30 -0
  242. package/dist/cli/host-platform.js.map +1 -0
  243. package/dist/cli/hq.cli-group.descriptor.d.ts +11 -0
  244. package/dist/cli/hq.cli-group.descriptor.d.ts.map +1 -0
  245. package/dist/cli/hq.cli-group.descriptor.js +11 -0
  246. package/dist/cli/hq.cli-group.descriptor.js.map +1 -0
  247. package/dist/cli/init/hq.init.descriptor.d.ts +7 -0
  248. package/dist/cli/init/hq.init.descriptor.d.ts.map +1 -0
  249. package/dist/cli/init/hq.init.descriptor.js +36 -0
  250. package/dist/cli/init/hq.init.descriptor.js.map +1 -0
  251. package/dist/cli/init/hq.init.impl.d.ts +7 -0
  252. package/dist/cli/init/hq.init.impl.d.ts.map +1 -0
  253. package/dist/cli/init/hq.init.impl.js +163 -0
  254. package/dist/cli/init/hq.init.impl.js.map +1 -0
  255. package/dist/cli/install/hq.install.descriptor.d.ts +9 -0
  256. package/dist/cli/install/hq.install.descriptor.d.ts.map +1 -0
  257. package/dist/cli/install/hq.install.descriptor.js +34 -0
  258. package/dist/cli/install/hq.install.descriptor.js.map +1 -0
  259. package/dist/cli/install/hq.install.impl.d.ts +6 -0
  260. package/dist/cli/install/hq.install.impl.d.ts.map +1 -0
  261. package/dist/cli/install/hq.install.impl.js +110 -0
  262. package/dist/cli/install/hq.install.impl.js.map +1 -0
  263. package/dist/cli/permissions/hq.permissions.descriptor.d.ts +9 -0
  264. package/dist/cli/permissions/hq.permissions.descriptor.d.ts.map +1 -0
  265. package/dist/cli/permissions/hq.permissions.descriptor.js +25 -0
  266. package/dist/cli/permissions/hq.permissions.descriptor.js.map +1 -0
  267. package/dist/cli/permissions/hq.permissions.impl.d.ts +3 -0
  268. package/dist/cli/permissions/hq.permissions.impl.d.ts.map +1 -0
  269. package/dist/cli/permissions/hq.permissions.impl.js +113 -0
  270. package/dist/cli/permissions/hq.permissions.impl.js.map +1 -0
  271. package/dist/cli/plugin.d.ts +3 -0
  272. package/dist/cli/plugin.d.ts.map +1 -0
  273. package/dist/cli/plugin.js +77 -0
  274. package/dist/cli/plugin.js.map +1 -0
  275. package/dist/cli/schemas/input.d.ts +117 -0
  276. package/dist/cli/schemas/input.d.ts.map +1 -0
  277. package/dist/cli/schemas/input.js +66 -0
  278. package/dist/cli/schemas/input.js.map +1 -0
  279. package/dist/cli/service/hq.service.cli-group.descriptor.d.ts +12 -0
  280. package/dist/cli/service/hq.service.cli-group.descriptor.d.ts.map +1 -0
  281. package/dist/cli/service/hq.service.cli-group.descriptor.js +12 -0
  282. package/dist/cli/service/hq.service.cli-group.descriptor.js.map +1 -0
  283. package/dist/cli/service/hq.service.list.descriptor.d.ts +16 -0
  284. package/dist/cli/service/hq.service.list.descriptor.d.ts.map +1 -0
  285. package/dist/cli/service/hq.service.list.descriptor.js +13 -0
  286. package/dist/cli/service/hq.service.list.descriptor.js.map +1 -0
  287. package/dist/cli/service/hq.service.list.impl.d.ts +7 -0
  288. package/dist/cli/service/hq.service.list.impl.d.ts.map +1 -0
  289. package/dist/cli/service/hq.service.list.impl.js +31 -0
  290. package/dist/cli/service/hq.service.list.impl.js.map +1 -0
  291. package/dist/cli/service/hq.service.manage.descriptor.d.ts +25 -0
  292. package/dist/cli/service/hq.service.manage.descriptor.d.ts.map +1 -0
  293. package/dist/cli/service/hq.service.manage.descriptor.js +23 -0
  294. package/dist/cli/service/hq.service.manage.descriptor.js.map +1 -0
  295. package/dist/cli/service/hq.service.manage.impl.d.ts +7 -0
  296. package/dist/cli/service/hq.service.manage.impl.d.ts.map +1 -0
  297. package/dist/cli/service/hq.service.manage.impl.js +64 -0
  298. package/dist/cli/service/hq.service.manage.impl.js.map +1 -0
  299. package/dist/cli/service/hq.service.register.descriptor.d.ts +21 -0
  300. package/dist/cli/service/hq.service.register.descriptor.d.ts.map +1 -0
  301. package/dist/cli/service/hq.service.register.descriptor.js +20 -0
  302. package/dist/cli/service/hq.service.register.descriptor.js.map +1 -0
  303. package/dist/cli/service/hq.service.register.impl.d.ts +7 -0
  304. package/dist/cli/service/hq.service.register.impl.d.ts.map +1 -0
  305. package/dist/cli/service/hq.service.register.impl.js +35 -0
  306. package/dist/cli/service/hq.service.register.impl.js.map +1 -0
  307. package/dist/cli/setup/hq.setup.descriptor.d.ts +9 -0
  308. package/dist/cli/setup/hq.setup.descriptor.d.ts.map +1 -0
  309. package/dist/cli/setup/hq.setup.descriptor.js +22 -0
  310. package/dist/cli/setup/hq.setup.descriptor.js.map +1 -0
  311. package/dist/cli/setup/hq.setup.impl.d.ts +7 -0
  312. package/dist/cli/setup/hq.setup.impl.d.ts.map +1 -0
  313. package/dist/cli/setup/hq.setup.impl.js +57 -0
  314. package/dist/cli/setup/hq.setup.impl.js.map +1 -0
  315. package/dist/cli/setup/index.d.ts +2 -0
  316. package/dist/cli/setup/index.d.ts.map +1 -0
  317. package/dist/cli/setup/index.js +2 -0
  318. package/dist/cli/setup/index.js.map +1 -0
  319. package/dist/cli/surface/hq.surface.cli-group.descriptor.d.ts +12 -0
  320. package/dist/cli/surface/hq.surface.cli-group.descriptor.d.ts.map +1 -0
  321. package/dist/cli/surface/hq.surface.cli-group.descriptor.js +12 -0
  322. package/dist/cli/surface/hq.surface.cli-group.descriptor.js.map +1 -0
  323. package/dist/cli/surface/hq.surface.list.descriptor.d.ts +20 -0
  324. package/dist/cli/surface/hq.surface.list.descriptor.d.ts.map +1 -0
  325. package/dist/cli/surface/hq.surface.list.descriptor.js +20 -0
  326. package/dist/cli/surface/hq.surface.list.descriptor.js.map +1 -0
  327. package/dist/cli/surface/hq.surface.list.impl.d.ts +7 -0
  328. package/dist/cli/surface/hq.surface.list.impl.d.ts.map +1 -0
  329. package/dist/cli/surface/hq.surface.list.impl.js +35 -0
  330. package/dist/cli/surface/hq.surface.list.impl.js.map +1 -0
  331. package/dist/cli/surface/hq.surface.resolve.descriptor.d.ts +22 -0
  332. package/dist/cli/surface/hq.surface.resolve.descriptor.d.ts.map +1 -0
  333. package/dist/cli/surface/hq.surface.resolve.descriptor.js +20 -0
  334. package/dist/cli/surface/hq.surface.resolve.descriptor.js.map +1 -0
  335. package/dist/cli/surface/hq.surface.resolve.impl.d.ts +7 -0
  336. package/dist/cli/surface/hq.surface.resolve.impl.d.ts.map +1 -0
  337. package/dist/cli/surface/hq.surface.resolve.impl.js +29 -0
  338. package/dist/cli/surface/hq.surface.resolve.impl.js.map +1 -0
  339. package/dist/client/friction/index.d.ts +58 -0
  340. package/dist/client/friction/index.d.ts.map +1 -0
  341. package/dist/client/friction/index.js +146 -0
  342. package/dist/client/friction/index.js.map +1 -0
  343. package/dist/client/friction.client.descriptor.d.ts +14 -0
  344. package/dist/client/friction.client.descriptor.d.ts.map +1 -0
  345. package/dist/client/friction.client.descriptor.js +14 -0
  346. package/dist/client/friction.client.descriptor.js.map +1 -0
  347. package/dist/client/hq.client.descriptor.d.ts +14 -0
  348. package/dist/client/hq.client.descriptor.d.ts.map +1 -0
  349. package/dist/client/hq.client.descriptor.js +14 -0
  350. package/dist/client/hq.client.descriptor.js.map +1 -0
  351. package/dist/client/index.d.ts +95 -0
  352. package/dist/client/index.d.ts.map +1 -0
  353. package/dist/client/index.js +144 -0
  354. package/dist/client/index.js.map +1 -0
  355. package/dist/config/hq-friction.config.descriptor.d.ts +227 -0
  356. package/dist/config/hq-friction.config.descriptor.d.ts.map +1 -0
  357. package/dist/config/hq-friction.config.descriptor.js +116 -0
  358. package/dist/config/hq-friction.config.descriptor.js.map +1 -0
  359. package/dist/dashboard.d.ts +133 -0
  360. package/dist/dashboard.d.ts.map +1 -0
  361. package/dist/dashboard.js +371 -0
  362. package/dist/dashboard.js.map +1 -0
  363. package/dist/docs/hq.machines.docs.descriptor.d.ts +22 -0
  364. package/dist/docs/hq.machines.docs.descriptor.d.ts.map +1 -0
  365. package/dist/docs/hq.machines.docs.descriptor.js +65 -0
  366. package/dist/docs/hq.machines.docs.descriptor.js.map +1 -0
  367. package/dist/docs/hq.sessions.docs.descriptor.d.ts +22 -0
  368. package/dist/docs/hq.sessions.docs.descriptor.d.ts.map +1 -0
  369. package/dist/docs/hq.sessions.docs.descriptor.js +74 -0
  370. package/dist/docs/hq.sessions.docs.descriptor.js.map +1 -0
  371. package/dist/docs/hq.surfaces.docs.descriptor.d.ts +38 -0
  372. package/dist/docs/hq.surfaces.docs.descriptor.d.ts.map +1 -0
  373. package/dist/docs/hq.surfaces.docs.descriptor.js +161 -0
  374. package/dist/docs/hq.surfaces.docs.descriptor.js.map +1 -0
  375. package/dist/docs/hq.terminal.docs.descriptor.d.ts +22 -0
  376. package/dist/docs/hq.terminal.docs.descriptor.d.ts.map +1 -0
  377. package/dist/docs/hq.terminal.docs.descriptor.js +86 -0
  378. package/dist/docs/hq.terminal.docs.descriptor.js.map +1 -0
  379. package/dist/friction/clusters.d.ts +23 -0
  380. package/dist/friction/clusters.d.ts.map +1 -0
  381. package/dist/friction/clusters.js +56 -0
  382. package/dist/friction/clusters.js.map +1 -0
  383. package/dist/friction/fingerprint.d.ts +56 -0
  384. package/dist/friction/fingerprint.d.ts.map +1 -0
  385. package/dist/friction/fingerprint.js +113 -0
  386. package/dist/friction/fingerprint.js.map +1 -0
  387. package/dist/friction/friction-dispositions.record.descriptor.d.ts +4 -0
  388. package/dist/friction/friction-dispositions.record.descriptor.d.ts.map +1 -0
  389. package/dist/friction/friction-dispositions.record.descriptor.js +36 -0
  390. package/dist/friction/friction-dispositions.record.descriptor.js.map +1 -0
  391. package/dist/friction/friction-signals.record.descriptor.d.ts +12 -0
  392. package/dist/friction/friction-signals.record.descriptor.d.ts.map +1 -0
  393. package/dist/friction/friction-signals.record.descriptor.js +52 -0
  394. package/dist/friction/friction-signals.record.descriptor.js.map +1 -0
  395. package/dist/friction/intake.d.ts +79 -0
  396. package/dist/friction/intake.d.ts.map +1 -0
  397. package/dist/friction/intake.js +459 -0
  398. package/dist/friction/intake.js.map +1 -0
  399. package/dist/friction/jobs/friction-clusters.job.descriptor.d.ts +71 -0
  400. package/dist/friction/jobs/friction-clusters.job.descriptor.d.ts.map +1 -0
  401. package/dist/friction/jobs/friction-clusters.job.descriptor.js +34 -0
  402. package/dist/friction/jobs/friction-clusters.job.descriptor.js.map +1 -0
  403. package/dist/friction/jobs/friction-clusters.job.impl.d.ts +22 -0
  404. package/dist/friction/jobs/friction-clusters.job.impl.d.ts.map +1 -0
  405. package/dist/friction/jobs/friction-clusters.job.impl.js +33 -0
  406. package/dist/friction/jobs/friction-clusters.job.impl.js.map +1 -0
  407. package/dist/friction/promote-input.d.ts +37 -0
  408. package/dist/friction/promote-input.d.ts.map +1 -0
  409. package/dist/friction/promote-input.js +58 -0
  410. package/dist/friction/promote-input.js.map +1 -0
  411. package/dist/friction/promotion-visibility.d.ts +34 -0
  412. package/dist/friction/promotion-visibility.d.ts.map +1 -0
  413. package/dist/friction/promotion-visibility.js +57 -0
  414. package/dist/friction/promotion-visibility.js.map +1 -0
  415. package/dist/friction/read.d.ts +21 -0
  416. package/dist/friction/read.d.ts.map +1 -0
  417. package/dist/friction/read.js +23 -0
  418. package/dist/friction/read.js.map +1 -0
  419. package/dist/friction/schemas/disposition.d.ts +42 -0
  420. package/dist/friction/schemas/disposition.d.ts.map +1 -0
  421. package/dist/friction/schemas/disposition.js +22 -0
  422. package/dist/friction/schemas/disposition.js.map +1 -0
  423. package/dist/friction/schemas/intake.d.ts +167 -0
  424. package/dist/friction/schemas/intake.d.ts.map +1 -0
  425. package/dist/friction/schemas/intake.js +69 -0
  426. package/dist/friction/schemas/intake.js.map +1 -0
  427. package/dist/friction/schemas/report.d.ts +138 -0
  428. package/dist/friction/schemas/report.d.ts.map +1 -0
  429. package/dist/friction/schemas/report.js +63 -0
  430. package/dist/friction/schemas/report.js.map +1 -0
  431. package/dist/friction/schemas/signal.d.ts +170 -0
  432. package/dist/friction/schemas/signal.d.ts.map +1 -0
  433. package/dist/friction/schemas/signal.js +77 -0
  434. package/dist/friction/schemas/signal.js.map +1 -0
  435. package/dist/friction/signal-recorded.event.descriptor.d.ts +53 -0
  436. package/dist/friction/signal-recorded.event.descriptor.d.ts.map +1 -0
  437. package/dist/friction/signal-recorded.event.descriptor.js +38 -0
  438. package/dist/friction/signal-recorded.event.descriptor.js.map +1 -0
  439. package/dist/friction/store.d.ts +108 -0
  440. package/dist/friction/store.d.ts.map +1 -0
  441. package/dist/friction/store.js +461 -0
  442. package/dist/friction/store.js.map +1 -0
  443. package/dist/host-guidance/descriptors/accessibility.host-permission-guidance.descriptor.d.ts +8 -0
  444. package/dist/host-guidance/descriptors/accessibility.host-permission-guidance.descriptor.d.ts.map +1 -0
  445. package/dist/host-guidance/descriptors/accessibility.host-permission-guidance.descriptor.js +18 -0
  446. package/dist/host-guidance/descriptors/accessibility.host-permission-guidance.descriptor.js.map +1 -0
  447. package/dist/host-guidance/descriptors/disk.host-permission-guidance.descriptor.d.ts +8 -0
  448. package/dist/host-guidance/descriptors/disk.host-permission-guidance.descriptor.d.ts.map +1 -0
  449. package/dist/host-guidance/descriptors/disk.host-permission-guidance.descriptor.js +18 -0
  450. package/dist/host-guidance/descriptors/disk.host-permission-guidance.descriptor.js.map +1 -0
  451. package/dist/host-guidance/descriptors/homebrew.host-health-check.descriptor.d.ts +8 -0
  452. package/dist/host-guidance/descriptors/homebrew.host-health-check.descriptor.d.ts.map +1 -0
  453. package/dist/host-guidance/descriptors/homebrew.host-health-check.descriptor.js +14 -0
  454. package/dist/host-guidance/descriptors/homebrew.host-health-check.descriptor.js.map +1 -0
  455. package/dist/host-guidance/descriptors/microphone.host-permission-guidance.descriptor.d.ts +8 -0
  456. package/dist/host-guidance/descriptors/microphone.host-permission-guidance.descriptor.d.ts.map +1 -0
  457. package/dist/host-guidance/descriptors/microphone.host-permission-guidance.descriptor.js +18 -0
  458. package/dist/host-guidance/descriptors/microphone.host-permission-guidance.descriptor.js.map +1 -0
  459. package/dist/host-guidance/kinds/host-health-check.kind.d.ts +17 -0
  460. package/dist/host-guidance/kinds/host-health-check.kind.d.ts.map +1 -0
  461. package/dist/host-guidance/kinds/host-health-check.kind.js +22 -0
  462. package/dist/host-guidance/kinds/host-health-check.kind.js.map +1 -0
  463. package/dist/host-guidance/kinds/host-permission-guidance.kind.d.ts +17 -0
  464. package/dist/host-guidance/kinds/host-permission-guidance.kind.d.ts.map +1 -0
  465. package/dist/host-guidance/kinds/host-permission-guidance.kind.js +22 -0
  466. package/dist/host-guidance/kinds/host-permission-guidance.kind.js.map +1 -0
  467. package/dist/host-guidance/registry.d.ts +16 -0
  468. package/dist/host-guidance/registry.d.ts.map +1 -0
  469. package/dist/host-guidance/registry.js +24 -0
  470. package/dist/host-guidance/registry.js.map +1 -0
  471. package/dist/hq.cloud.plugin.d.ts +3 -0
  472. package/dist/hq.cloud.plugin.d.ts.map +1 -0
  473. package/dist/hq.cloud.plugin.js +40 -0
  474. package/dist/hq.cloud.plugin.js.map +1 -0
  475. package/dist/hq.consumer.plugin.d.ts +3 -0
  476. package/dist/hq.consumer.plugin.d.ts.map +1 -0
  477. package/dist/hq.consumer.plugin.js +15 -0
  478. package/dist/hq.consumer.plugin.js.map +1 -0
  479. package/dist/hq.plugin.d.ts +9 -0
  480. package/dist/hq.plugin.d.ts.map +1 -0
  481. package/dist/hq.plugin.js +99 -0
  482. package/dist/hq.plugin.js.map +1 -0
  483. package/dist/installers/builtin/ai-runtimes/installer.d.ts +21 -0
  484. package/dist/installers/builtin/ai-runtimes/installer.d.ts.map +1 -0
  485. package/dist/installers/builtin/ai-runtimes/installer.js +244 -0
  486. package/dist/installers/builtin/ai-runtimes/installer.js.map +1 -0
  487. package/dist/installers/builtin/index.d.ts +9 -0
  488. package/dist/installers/builtin/index.d.ts.map +1 -0
  489. package/dist/installers/builtin/index.js +15 -0
  490. package/dist/installers/builtin/index.js.map +1 -0
  491. package/dist/installers/builtin/language-servers/installer.d.ts +18 -0
  492. package/dist/installers/builtin/language-servers/installer.d.ts.map +1 -0
  493. package/dist/installers/builtin/language-servers/installer.js +139 -0
  494. package/dist/installers/builtin/language-servers/installer.js.map +1 -0
  495. package/dist/installers/builtin/system-deps/installer.d.ts +8 -0
  496. package/dist/installers/builtin/system-deps/installer.d.ts.map +1 -0
  497. package/dist/installers/builtin/system-deps/installer.js +78 -0
  498. package/dist/installers/builtin/system-deps/installer.js.map +1 -0
  499. package/dist/installers/compatibility.consumer.plugin.d.ts +3 -0
  500. package/dist/installers/compatibility.consumer.plugin.d.ts.map +1 -0
  501. package/dist/installers/compatibility.consumer.plugin.js +26 -0
  502. package/dist/installers/compatibility.consumer.plugin.js.map +1 -0
  503. package/dist/installers/core/index.d.ts +3 -0
  504. package/dist/installers/core/index.d.ts.map +1 -0
  505. package/dist/installers/core/index.js +3 -0
  506. package/dist/installers/core/index.js.map +1 -0
  507. package/dist/installers/core/installer-result.d.ts +10 -0
  508. package/dist/installers/core/installer-result.d.ts.map +1 -0
  509. package/dist/installers/core/installer-result.js +14 -0
  510. package/dist/installers/core/installer-result.js.map +1 -0
  511. package/dist/installers/core/installer-runtime.d.ts +18 -0
  512. package/dist/installers/core/installer-runtime.d.ts.map +1 -0
  513. package/dist/installers/core/installer-runtime.js +5 -0
  514. package/dist/installers/core/installer-runtime.js.map +1 -0
  515. package/dist/installers/core/platform.d.ts +6 -0
  516. package/dist/installers/core/platform.d.ts.map +1 -0
  517. package/dist/installers/core/platform.js +19 -0
  518. package/dist/installers/core/platform.js.map +1 -0
  519. package/dist/installers/core/workspace.d.ts +4 -0
  520. package/dist/installers/core/workspace.d.ts.map +1 -0
  521. package/dist/installers/core/workspace.js +11 -0
  522. package/dist/installers/core/workspace.js.map +1 -0
  523. package/dist/installers/index.d.ts +6 -0
  524. package/dist/installers/index.d.ts.map +1 -0
  525. package/dist/installers/index.js +6 -0
  526. package/dist/installers/index.js.map +1 -0
  527. package/dist/installers/schemas/index.d.ts +2 -0
  528. package/dist/installers/schemas/index.d.ts.map +1 -0
  529. package/dist/installers/schemas/index.js +2 -0
  530. package/dist/installers/schemas/index.js.map +1 -0
  531. package/dist/installers/schemas/platform.d.ts +10 -0
  532. package/dist/installers/schemas/platform.d.ts.map +1 -0
  533. package/dist/installers/schemas/platform.js +9 -0
  534. package/dist/installers/schemas/platform.js.map +1 -0
  535. package/dist/installers/schemas/types.d.ts +4 -0
  536. package/dist/installers/schemas/types.d.ts.map +1 -0
  537. package/dist/installers/schemas/types.js +4 -0
  538. package/dist/installers/schemas/types.js.map +1 -0
  539. package/dist/os-wall/channels.wall.d.ts +9 -0
  540. package/dist/os-wall/channels.wall.d.ts.map +1 -0
  541. package/dist/os-wall/channels.wall.js +9 -0
  542. package/dist/os-wall/channels.wall.js.map +1 -0
  543. package/dist/os-wall/surface-store.wall.d.ts +3 -0
  544. package/dist/os-wall/surface-store.wall.d.ts.map +1 -0
  545. package/dist/os-wall/surface-store.wall.js +3 -0
  546. package/dist/os-wall/surface-store.wall.js.map +1 -0
  547. package/dist/runtime-path.d.ts +7 -0
  548. package/dist/runtime-path.d.ts.map +1 -0
  549. package/dist/runtime-path.js +7 -0
  550. package/dist/runtime-path.js.map +1 -0
  551. package/dist/schemas/host-guidance.d.ts +48 -0
  552. package/dist/schemas/host-guidance.d.ts.map +1 -0
  553. package/dist/schemas/host-guidance.js +48 -0
  554. package/dist/schemas/host-guidance.js.map +1 -0
  555. package/dist/services/backends/index.d.ts +24 -0
  556. package/dist/services/backends/index.d.ts.map +1 -0
  557. package/dist/services/backends/index.js +17 -0
  558. package/dist/services/backends/index.js.map +1 -0
  559. package/dist/services/builtin/index.d.ts +78 -0
  560. package/dist/services/builtin/index.d.ts.map +1 -0
  561. package/dist/services/builtin/index.js +44 -0
  562. package/dist/services/builtin/index.js.map +1 -0
  563. package/dist/services/descriptors/vibes-bridge.os-service.descriptor.d.ts +8 -0
  564. package/dist/services/descriptors/vibes-bridge.os-service.descriptor.d.ts.map +1 -0
  565. package/dist/services/descriptors/vibes-bridge.os-service.descriptor.js +21 -0
  566. package/dist/services/descriptors/vibes-bridge.os-service.descriptor.js.map +1 -0
  567. package/dist/services/descriptors/vibes-mcp.os-service.descriptor.d.ts +8 -0
  568. package/dist/services/descriptors/vibes-mcp.os-service.descriptor.d.ts.map +1 -0
  569. package/dist/services/descriptors/vibes-mcp.os-service.descriptor.js +20 -0
  570. package/dist/services/descriptors/vibes-mcp.os-service.descriptor.js.map +1 -0
  571. package/dist/services/descriptors/vibes-pm.os-service.descriptor.d.ts +8 -0
  572. package/dist/services/descriptors/vibes-pm.os-service.descriptor.d.ts.map +1 -0
  573. package/dist/services/descriptors/vibes-pm.os-service.descriptor.js +20 -0
  574. package/dist/services/descriptors/vibes-pm.os-service.descriptor.js.map +1 -0
  575. package/dist/services/index.d.ts +14 -0
  576. package/dist/services/index.d.ts.map +1 -0
  577. package/dist/services/index.js +12 -0
  578. package/dist/services/index.js.map +1 -0
  579. package/dist/services/kinds/os-service.kind.d.ts +19 -0
  580. package/dist/services/kinds/os-service.kind.d.ts.map +1 -0
  581. package/dist/services/kinds/os-service.kind.js +24 -0
  582. package/dist/services/kinds/os-service.kind.js.map +1 -0
  583. package/dist/services/registry.d.ts +45 -0
  584. package/dist/services/registry.d.ts.map +1 -0
  585. package/dist/services/registry.js +141 -0
  586. package/dist/services/registry.js.map +1 -0
  587. package/dist/services/schemas/service.d.ts +79 -0
  588. package/dist/services/schemas/service.d.ts.map +1 -0
  589. package/dist/services/schemas/service.js +82 -0
  590. package/dist/services/schemas/service.js.map +1 -0
  591. package/dist/svelte/report/ReportProblemDialog.svelte +205 -0
  592. package/dist/svelte/report/ReportProblemDialog.svelte.d.ts +5 -0
  593. package/dist/svelte/report/ReportProblemDialog.svelte.d.ts.map +1 -0
  594. package/dist/svelte/report/capture-context.d.ts +61 -0
  595. package/dist/svelte/report/capture-context.d.ts.map +1 -0
  596. package/dist/svelte/report/capture-context.js +100 -0
  597. package/dist/svelte/report/report.plugin.d.ts +68 -0
  598. package/dist/svelte/report/report.plugin.d.ts.map +1 -0
  599. package/dist/svelte/report/report.plugin.js +109 -0
  600. package/dist/svelte/report/severity.d.ts +32 -0
  601. package/dist/svelte/report/severity.d.ts.map +1 -0
  602. package/dist/svelte/report/severity.js +13 -0
  603. package/dist/tools/applet/applet.schemas.d.ts +6 -0
  604. package/dist/tools/applet/applet.schemas.d.ts.map +1 -0
  605. package/dist/tools/applet/applet.schemas.js +6 -0
  606. package/dist/tools/applet/applet.schemas.js.map +1 -0
  607. package/dist/utils/exec.d.ts +22 -0
  608. package/dist/utils/exec.d.ts.map +1 -0
  609. package/dist/utils/exec.js +38 -0
  610. package/dist/utils/exec.js.map +1 -0
  611. package/dist/utils/fs.d.ts +10 -0
  612. package/dist/utils/fs.d.ts.map +1 -0
  613. package/dist/utils/fs.js +25 -0
  614. package/dist/utils/fs.js.map +1 -0
  615. package/package.json +268 -4
@@ -0,0 +1,161 @@
1
+ /**
2
+ * User-flow docs for HQ's fleet and terminal surfaces (Machines, Terminal, Sessions).
3
+ *
4
+ * Structurally typed, like the three sibling topics in this directory: this
5
+ * package does not depend on `@vibesdotdev/docs-contracts`, and the shape is
6
+ * validated for real against `DocsTopicDescriptorSchema` when the docs build
7
+ * reads it out of the registry.
8
+ */
9
+ const hqSurfacesMarkdown = `---
10
+ title: HQ Fleet & Terminal Surfaces
11
+ summary: User flows for Machines, Terminal, and Sessions in HQ
12
+ tags: [hq, fleet, terminal, sessions, machines]
13
+ parent: hq
14
+ order: 10
15
+ id: hq.surfaces
16
+ ---
17
+
18
+ # HQ Fleet & Terminal Surfaces
19
+
20
+ HQ is the cloud operations layer for always-on AI agents, connected machines,
21
+ and code sessions. The three core operational surfaces are:
22
+
23
+ - **Machines** (\`/fleet\`) — register and manage the machines HQ can reach
24
+ - **Terminal** (\`/terminal\`) — open a live terminal session on any online machine
25
+ - **Sessions** (\`/sessions\`) — manage cloud and fleet code workspaces
26
+
27
+ ## Machines
28
+
29
+ ### Navigating to Machines
30
+
31
+ From the sidebar, click **Machines** under Operations. The nav item maps to
32
+ \`/fleet\`.
33
+
34
+ ### Adding your first machine
35
+
36
+ On the empty state, click **Add your first machine**. This opens a dialog with
37
+ two paths:
38
+
39
+ 1. **Install on a machine you own** — give the machine a name and get a
40
+ one-line install command. Paste it into a terminal on that machine. HQ polls
41
+ every 4 seconds and automatically closes the dialog once the machine comes
42
+ online.
43
+ 2. **Connect by address** — for machines that already have the fleet service
44
+ running, enter the host and port directly. Note: direct-address connections
45
+ require the local desktop app; use the install flow for cloud-persistent
46
+ registration.
47
+
48
+ ### Machine status indicators
49
+
50
+ | Status | Meaning |
51
+ |--------|---------|
52
+ | Online | Machine is reachable and ready |
53
+ | Enrolled, not reachable | Registered but currently unreachable (check your network or restart the fleet service) |
54
+ | Connecting | Awaiting the first connection after enrollment |
55
+ | Unknown | Reachability check pending |
56
+
57
+ ### Removing a machine
58
+
59
+ Click the trash icon on a machine card, or open the details panel and click
60
+ **Remove**. A confirmation dialog explains what will happen: open terminal
61
+ sessions close, the machine leaves your fleet, and the service on that machine
62
+ stops receiving connections. You can re-add it at any time.
63
+
64
+ ## Terminal
65
+
66
+ ### Navigating to Terminal
67
+
68
+ Click **Terminal** in the sidebar, or click **Open terminal** on any online
69
+ machine card in Machines.
70
+
71
+ ### Starting a session
72
+
73
+ The host picker shows all online and enrolled machines. Select a machine,
74
+ optionally set a custom command (default: \`bash\`), and click **Open**. The
75
+ terminal connects over the HQ relay.
76
+
77
+ ### Multi-tab sessions
78
+
79
+ Once a session is open, click **+** in the tab strip to open another session
80
+ (on the same or a different machine). Each tab is an independent PTY; switching
81
+ tabs detaches and re-attaches the underlying session automatically.
82
+
83
+ ### Reconnect behavior
84
+
85
+ If the connection drops, a reconnect banner appears. HQ retries up to 8 times
86
+ with exponential back-off. If all retries fail, click **Start a new session**
87
+ to open a fresh connection.
88
+
89
+ ### Session end
90
+
91
+ When a process exits, the pane shows "Session ended" with the exit code and a
92
+ **Start a new session** button. The other tabs remain live.
93
+
94
+ ## Sessions
95
+
96
+ ### Navigating to Sessions
97
+
98
+ Click **Sessions** in the sidebar. Sessions lists cloud sandbox workspaces and
99
+ fleet-backed code environments.
100
+
101
+ ### Creating a session
102
+
103
+ Click **New session**. The dialog lets you choose a host target (cloud sandbox
104
+ or a fleet machine) and optionally bind a repository. Ephemeral sessions are
105
+ cleaned up automatically when you navigate away.
106
+
107
+ ### Session capabilities
108
+
109
+ - **Snapshot execution** — cloud sandbox sessions. Each command runs
110
+ independently; no persistent shell between runs. Shown in the transcript view.
111
+ - **Interactive** — fleet-backed sessions with a full PTY. Use the **Open in
112
+ terminal** button to reach the Terminal view for that session.
113
+
114
+ ### Deleting a session
115
+
116
+ Click **Delete** in the session detail header. A confirmation dialog warns that
117
+ the workspace and all files inside it will be permanently removed.
118
+
119
+ ## Related
120
+
121
+ :::card{title="See also"}
122
+ - [\`agents\`](agents) — agent management and execution contracts
123
+ - [\`fleet-pairing\`](fleet-pairing) — local fleet pairing and daemon setup
124
+ :::
125
+ `;
126
+ const descriptor = {
127
+ kind: 'docs/topic',
128
+ id: 'hq.surfaces',
129
+ title: 'HQ Fleet & Terminal Surfaces',
130
+ summary: 'User flows for Machines, Terminal, and Sessions in HQ',
131
+ body: {
132
+ type: 'markdown',
133
+ sourceType: 'raw',
134
+ source: hqSurfacesMarkdown
135
+ },
136
+ parent: 'hq',
137
+ order: 10,
138
+ tags: ['hq', 'fleet', 'terminal', 'sessions', 'machines'],
139
+ surfaces: ['web'],
140
+ hardware: ['cloud', 'consumer'],
141
+ enabled: true,
142
+ man: {
143
+ name: 'hq.surfaces — Machines, Terminal, and Sessions in HQ',
144
+ section: 1,
145
+ synopsis: 'vibes man hq.surfaces',
146
+ options: [],
147
+ examples: [
148
+ {
149
+ description: 'Open a terminal on a registered machine',
150
+ command: 'navigate to /terminal?host=<machine-id>'
151
+ },
152
+ {
153
+ description: 'Add a new machine via install command',
154
+ command: 'navigate to /fleet → Add machine → Install'
155
+ }
156
+ ],
157
+ seeAlso: ['agents', 'fleet-pairing']
158
+ }
159
+ };
160
+ export default descriptor;
161
+ //# sourceMappingURL=hq.surfaces.docs.descriptor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hq.surfaces.docs.descriptor.js","sourceRoot":"","sources":["../../src/docs/hq.surfaces.docs.descriptor.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoH1B,CAAC;AAEF,MAAM,UAAU,GAAG;IAClB,IAAI,EAAE,YAAqB;IAC3B,EAAE,EAAE,aAAa;IACjB,KAAK,EAAE,8BAA8B;IACrC,OAAO,EAAE,uDAAuD;IAChE,IAAI,EAAE;QACL,IAAI,EAAE,UAAmB;QACzB,UAAU,EAAE,KAAc;QAC1B,MAAM,EAAE,kBAAkB;KAC1B;IACD,MAAM,EAAE,IAAI;IACZ,KAAK,EAAE,EAAE;IACT,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC;IACzD,QAAQ,EAAE,CAAC,KAAK,CAAU;IAC1B,QAAQ,EAAE,CAAC,OAAO,EAAE,UAAU,CAAU;IACxC,OAAO,EAAE,IAAI;IACb,GAAG,EAAE;QACJ,IAAI,EAAE,sDAAsD;QAC5D,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE,uBAAuB;QACjC,OAAO,EAAE,EAAE;QACX,QAAQ,EAAE;YACT;gBACC,WAAW,EAAE,yCAAyC;gBACtD,OAAO,EAAE,yCAAyC;aAClD;YACD;gBACC,WAAW,EAAE,uCAAuC;gBACpD,OAAO,EAAE,4CAA4C;aACrD;SACD;QACD,OAAO,EAAE,CAAC,QAAQ,EAAE,eAAe,CAAC;KACpC;CACD,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * User-flow docs for the HQ Terminal surface.
3
+ */
4
+ declare const descriptor: {
5
+ kind: "docs/topic";
6
+ id: string;
7
+ title: string;
8
+ summary: string;
9
+ body: {
10
+ type: "markdown";
11
+ sourceType: "raw";
12
+ source: string;
13
+ };
14
+ parent: string;
15
+ order: number;
16
+ tags: string[];
17
+ surfaces: readonly ["in-app", "web"];
18
+ hardware: readonly ["consumer"];
19
+ enabled: boolean;
20
+ };
21
+ export default descriptor;
22
+ //# sourceMappingURL=hq.terminal.docs.descriptor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hq.terminal.docs.descriptor.d.ts","sourceRoot":"","sources":["../../src/docs/hq.terminal.docs.descriptor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAmEH,QAAA,MAAM,UAAU;;;;;;;;;;;;;;;;CAgBf,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * User-flow docs for the HQ Terminal surface.
3
+ */
4
+ const markdown = `---
5
+ title: Terminal
6
+ summary: Open interactive terminal sessions on this machine or any connected machine
7
+ tags: [hq, terminal, sessions, pty]
8
+ parent: hq
9
+ order: 20
10
+ ---
11
+
12
+ # Terminal
13
+
14
+ The Terminal page gives you a full interactive shell — on this Mac, or on any machine you've
15
+ connected through [Machines](hq.machines).
16
+
17
+ ## Opening a session
18
+
19
+ 1. Go to **Terminal** in the sidebar.
20
+ 2. Pick a machine from the host picker (defaults to This machine).
21
+ 3. Choose or type the shell or command to run.
22
+ 4. Click **Open** — the terminal opens immediately.
23
+
24
+ ## Switching between sessions (tabs)
25
+
26
+ Each open session appears as a tab at the top. Click a tab to switch. The previous session
27
+ keeps running in the background and reattaches when you switch back.
28
+
29
+ Click **+** to open a new session while keeping the current one running.
30
+
31
+ ## Closing a session
32
+
33
+ Click the × on a tab to close it. This kills the running shell. If the session has unsaved work
34
+ you'll be prompted to confirm.
35
+
36
+ ## Reconnecting after a network drop
37
+
38
+ If the connection drops, a yellow banner appears. HQ retries automatically up to 8 times with
39
+ increasing delays. You'll see the attempt count and estimated time until the next retry.
40
+
41
+ If reconnection fails permanently, click **Start a new session** to open a fresh one.
42
+
43
+ ## Denied commands
44
+
45
+ Some commands are blocked by safety policies. When a command is denied, the terminal shows a
46
+ readable message explaining which rule fired and where to change it. Contact your administrator
47
+ to adjust the policy if you need access.
48
+
49
+ ## Keyboard shortcuts
50
+
51
+ Standard terminal shortcuts work as expected: Ctrl-C, Ctrl-D, Ctrl-Z, arrow history, Tab
52
+ completion. The terminal is a full PTY — interactive programs like \`vim\`, \`htop\`, and \`less\`
53
+ all work.
54
+
55
+ ## Remote machines
56
+
57
+ Select any online machine from the host picker to open a shell there. If no machines are
58
+ connected, the picker shows a link to [Machines](hq.machines) where you can add one.
59
+
60
+ If a remote machine goes offline mid-session, the reconnect banner appears and the same retry
61
+ logic applies.
62
+
63
+ ## Related topics
64
+
65
+ - [hq.machines](hq.machines) — connect a machine so it appears in the host picker
66
+ - [hq.sessions](hq.sessions) — longer-lived sessions with workspace browsing
67
+ `;
68
+ const descriptor = {
69
+ kind: 'docs/topic',
70
+ id: 'hq.terminal',
71
+ title: 'Terminal',
72
+ summary: 'Open interactive terminal sessions on this machine or any connected machine',
73
+ body: {
74
+ type: 'markdown',
75
+ sourceType: 'raw',
76
+ source: markdown
77
+ },
78
+ parent: 'hq',
79
+ order: 20,
80
+ tags: ['hq', 'terminal', 'sessions', 'pty'],
81
+ surfaces: ['in-app', 'web'],
82
+ hardware: ['consumer'],
83
+ enabled: true
84
+ };
85
+ export default descriptor;
86
+ //# sourceMappingURL=hq.terminal.docs.descriptor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hq.terminal.docs.descriptor.js","sourceRoot":"","sources":["../../src/docs/hq.terminal.docs.descriptor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+DhB,CAAC;AAEF,MAAM,UAAU,GAAG;IACjB,IAAI,EAAE,YAAqB;IAC3B,EAAE,EAAE,aAAa;IACjB,KAAK,EAAE,UAAU;IACjB,OAAO,EAAE,6EAA6E;IACtF,IAAI,EAAE;QACJ,IAAI,EAAE,UAAmB;QACzB,UAAU,EAAE,KAAc;QAC1B,MAAM,EAAE,QAAQ;KACjB;IACD,MAAM,EAAE,IAAI;IACZ,KAAK,EAAE,EAAE;IACT,IAAI,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,CAAC;IAC3C,QAAQ,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAU;IACpC,QAAQ,EAAE,CAAC,UAAU,CAAU;IAC/B,OAAO,EAAE,IAAI;CACd,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { type FrictionSignalWithBackend, type ListFrictionSignalsFilter, type FrictionRuntime } from './store.ts';
2
+ import type { FrictionDisposition } from './schemas/disposition.ts';
3
+ export type FrictionClusterBackend = FrictionSignalWithBackend['backend'] | 'mixed';
4
+ export interface FrictionCluster {
5
+ signatureHash: string;
6
+ representative: FrictionSignalWithBackend;
7
+ count: number;
8
+ firstSeen: string;
9
+ lastSeen: string;
10
+ backend: FrictionClusterBackend;
11
+ latestDisposition?: FrictionDisposition;
12
+ }
13
+ export type LatestDispositionsResolver = (signalIds: readonly string[]) => Promise<Map<string, FrictionDisposition>>;
14
+ /**
15
+ * Materialize the read-only signature projection on demand. New friction emits
16
+ * are aggregate rows with occurrence-aware counts; legacy rows remain readable
17
+ * through the same projection. This combines the projection with the latest
18
+ * lifecycle disposition without writing a second cluster store.
19
+ */
20
+ export declare function materializeFrictionClusters(signals: readonly FrictionSignalWithBackend[], resolveLatestDispositions: LatestDispositionsResolver): Promise<FrictionCluster[]>;
21
+ /** Read clusters through the canonical friction store. */
22
+ export declare function listFrictionClusters(runtime: FrictionRuntime, filter?: ListFrictionSignalsFilter): Promise<FrictionCluster[]>;
23
+ //# sourceMappingURL=clusters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clusters.d.ts","sourceRoot":"","sources":["../../src/friction/clusters.ts"],"names":[],"mappings":"AAAA,OAAO,EAGN,KAAK,yBAAyB,EAC9B,KAAK,yBAAyB,EAC9B,KAAK,eAAe,EACpB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,MAAM,MAAM,sBAAsB,GAAG,yBAAyB,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC;AAEpF,MAAM,WAAW,eAAe;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,yBAAyB,CAAC;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,sBAAsB,CAAC;IAChC,iBAAiB,CAAC,EAAE,mBAAmB,CAAC;CACxC;AAED,MAAM,MAAM,0BAA0B,GAAG,CACxC,SAAS,EAAE,SAAS,MAAM,EAAE,KACxB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAAC;AAS/C;;;;;GAKG;AACH,wBAAsB,2BAA2B,CAChD,OAAO,EAAE,SAAS,yBAAyB,EAAE,EAC7C,yBAAyB,EAAE,0BAA0B,GACnD,OAAO,CAAC,eAAe,EAAE,CAAC,CAuD5B;AAED,0DAA0D;AAC1D,wBAAsB,oBAAoB,CACzC,OAAO,EAAE,eAAe,EACxB,MAAM,GAAE,yBAA8B,GACpC,OAAO,CAAC,eAAe,EAAE,CAAC,CAI5B"}
@@ -0,0 +1,56 @@
1
+ import { latestDispositionsBySignal, listFrictionSignalsWithBackend } from "./store.js";
2
+ function newestSignal(current, candidate) {
3
+ return candidate.createdAt > current.createdAt ? candidate : current;
4
+ }
5
+ /**
6
+ * Materialize the read-only signature projection on demand. New friction emits
7
+ * are aggregate rows with occurrence-aware counts; legacy rows remain readable
8
+ * through the same projection. This combines the projection with the latest
9
+ * lifecycle disposition without writing a second cluster store.
10
+ */
11
+ export async function materializeFrictionClusters(signals, resolveLatestDispositions) {
12
+ const grouped = new Map();
13
+ for (const signal of signals) {
14
+ const existing = grouped.get(signal.signatureHash);
15
+ if (existing) {
16
+ existing.representative = newestSignal(existing.representative, signal);
17
+ existing.count += 1;
18
+ existing.firstSeen = signal.createdAt < existing.firstSeen ? signal.createdAt : existing.firstSeen;
19
+ existing.lastSeen = signal.createdAt > existing.lastSeen ? signal.createdAt : existing.lastSeen;
20
+ existing.backends.add(signal.backend);
21
+ existing.signalIds.push(signal.id);
22
+ continue;
23
+ }
24
+ grouped.set(signal.signatureHash, {
25
+ representative: signal,
26
+ count: 1,
27
+ firstSeen: signal.createdAt,
28
+ lastSeen: signal.createdAt,
29
+ backends: new Set([signal.backend]),
30
+ signalIds: [signal.id]
31
+ });
32
+ }
33
+ const latestBySignal = await resolveLatestDispositions(signals.map((signal) => signal.id));
34
+ return [...grouped.entries()]
35
+ .map(([signatureHash, cluster]) => {
36
+ const latestDisposition = cluster.signalIds.reduce((latest, signalId) => {
37
+ const candidate = latestBySignal.get(signalId);
38
+ return !candidate || (latest && latest.createdAt >= candidate.createdAt) ? latest : candidate;
39
+ }, undefined);
40
+ return {
41
+ signatureHash,
42
+ representative: cluster.representative,
43
+ count: cluster.count,
44
+ firstSeen: cluster.firstSeen,
45
+ lastSeen: cluster.lastSeen,
46
+ backend: cluster.backends.size === 1 ? [...cluster.backends][0] : 'mixed',
47
+ latestDisposition
48
+ };
49
+ })
50
+ .sort((a, b) => b.lastSeen.localeCompare(a.lastSeen));
51
+ }
52
+ /** Read clusters through the canonical friction store. */
53
+ export async function listFrictionClusters(runtime, filter = {}) {
54
+ return materializeFrictionClusters(await listFrictionSignalsWithBackend(runtime, filter), (signalIds) => latestDispositionsBySignal(runtime, signalIds));
55
+ }
56
+ //# sourceMappingURL=clusters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clusters.js","sourceRoot":"","sources":["../../src/friction/clusters.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ import type { FrictionSignal } from './schemas/signal.ts';
2
+ /**
3
+ * Fingerprint version 2 deliberately excludes projection/body version and
4
+ * volatile occurrence provenance. It identifies the causal report, not the
5
+ * way a host happened to serialize or replay it.
6
+ */
7
+ export declare const FRICTION_FINGERPRINT_VERSION: 2;
8
+ export interface FrictionFingerprintInput {
9
+ orgId: string;
10
+ source: FrictionSignal['source'];
11
+ surface: string;
12
+ observed: string;
13
+ expected?: string;
14
+ repro?: string;
15
+ }
16
+ /**
17
+ * Compute the stable, tenant-scoped causal identity for a friction report.
18
+ * Web Crypto keeps this helper safe for both Bun consumers and workerd.
19
+ */
20
+ export declare function computeFrictionFingerprint(input: FrictionFingerprintInput): Promise<string>;
21
+ /**
22
+ * Fingerprint version 3 identifies a reported problem by its typed context
23
+ * instead of its free text (defect 2: a human report hashed its description,
24
+ * so two reports of one crash never merged, while the hash still pretended to
25
+ * dedupe).
26
+ *
27
+ * - A report that carries errors is keyed by the crash: org, app, route
28
+ * template, and the latest error's normalized message and top stack frame.
29
+ * Repeated crashes merge whatever the reporters wrote.
30
+ * - A report without errors is a distinct human report: it is keyed by its
31
+ * first occurrence id, so a retried submit is idempotent but two people's
32
+ * reports never merge.
33
+ *
34
+ * Signals without report context keep version 2 unchanged, so existing rows
35
+ * and other emitters keep merging under the `(orgId, fingerprintVersion,
36
+ * fingerprint)` index.
37
+ */
38
+ export declare const FRICTION_REPORT_FINGERPRINT_VERSION: 3;
39
+ export type FrictionSignalFingerprintInput = Pick<FrictionSignal, 'id' | 'orgId' | 'source' | 'surface' | 'observed' | 'expected' | 'repro' | 'context' | 'occurrenceId' | 'occurrenceIds'>;
40
+ export interface FrictionSignalFingerprint {
41
+ version: number;
42
+ /** The bare digest, also stored as `signatureHash`. */
43
+ hash: string;
44
+ /** `v<version>:<hash>`, the stored `fingerprint`. */
45
+ fingerprint: string;
46
+ }
47
+ /** Volatile tokens (ids, hashes, numbers, quoted values) collapse so one crash has one message. */
48
+ export declare function normalizeErrorMessage(message: string): string;
49
+ /**
50
+ * The first stack frame, without line/column, query, or content-hashed chunk
51
+ * names, so one crash keeps one frame across builds of the same source.
52
+ */
53
+ export declare function topStackFrame(stack: string | undefined): string;
54
+ /** The versioned causal fingerprint of one signal; the one owner every writer uses. */
55
+ export declare function computeFrictionSignalFingerprint(signal: FrictionSignalFingerprintInput): Promise<FrictionSignalFingerprint>;
56
+ //# sourceMappingURL=fingerprint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fingerprint.d.ts","sourceRoot":"","sources":["../../src/friction/fingerprint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,EAAG,CAAU,CAAC;AAMvD,MAAM,WAAW,wBAAwB;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,wBAAsB,0BAA0B,CAAC,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAAC,MAAM,CAAC,CAYjG;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,mCAAmC,EAAG,CAAU,CAAC;AAE9D,MAAM,MAAM,8BAA8B,GAAG,IAAI,CAChD,cAAc,EACd,IAAI,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,OAAO,GAAG,SAAS,GAAG,cAAc,GAAG,eAAe,CACxH,CAAC;AAEF,MAAM,WAAW,yBAAyB;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,qDAAqD;IACrD,WAAW,EAAE,MAAM,CAAC;CACpB;AAED,mGAAmG;AACnG,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAM7D;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAc/D;AAaD,uFAAuF;AACvF,wBAAsB,gCAAgC,CAAC,MAAM,EAAE,8BAA8B,GAAG,OAAO,CAAC,yBAAyB,CAAC,CA0BjI"}
@@ -0,0 +1,113 @@
1
+ /**
2
+ * Fingerprint version 2 deliberately excludes projection/body version and
3
+ * volatile occurrence provenance. It identifies the causal report, not the
4
+ * way a host happened to serialize or replay it.
5
+ */
6
+ export const FRICTION_FINGERPRINT_VERSION = 2;
7
+ function normalize(value) {
8
+ return (value ?? '').toLowerCase().trim().replace(/\s+/g, ' ');
9
+ }
10
+ /**
11
+ * Compute the stable, tenant-scoped causal identity for a friction report.
12
+ * Web Crypto keeps this helper safe for both Bun consumers and workerd.
13
+ */
14
+ export async function computeFrictionFingerprint(input) {
15
+ const payload = JSON.stringify({
16
+ version: FRICTION_FINGERPRINT_VERSION,
17
+ orgId: input.orgId.trim(),
18
+ source: normalize(input.source),
19
+ surface: normalize(input.surface),
20
+ observed: normalize(input.observed),
21
+ expected: normalize(input.expected),
22
+ repro: normalize(input.repro)
23
+ });
24
+ const digest = await crypto.subtle.digest('SHA-256', new TextEncoder().encode(payload));
25
+ return [...new Uint8Array(digest)].map((byte) => byte.toString(16).padStart(2, '0')).join('');
26
+ }
27
+ /**
28
+ * Fingerprint version 3 identifies a reported problem by its typed context
29
+ * instead of its free text (defect 2: a human report hashed its description,
30
+ * so two reports of one crash never merged, while the hash still pretended to
31
+ * dedupe).
32
+ *
33
+ * - A report that carries errors is keyed by the crash: org, app, route
34
+ * template, and the latest error's normalized message and top stack frame.
35
+ * Repeated crashes merge whatever the reporters wrote.
36
+ * - A report without errors is a distinct human report: it is keyed by its
37
+ * first occurrence id, so a retried submit is idempotent but two people's
38
+ * reports never merge.
39
+ *
40
+ * Signals without report context keep version 2 unchanged, so existing rows
41
+ * and other emitters keep merging under the `(orgId, fingerprintVersion,
42
+ * fingerprint)` index.
43
+ */
44
+ export const FRICTION_REPORT_FINGERPRINT_VERSION = 3;
45
+ /** Volatile tokens (ids, hashes, numbers, quoted values) collapse so one crash has one message. */
46
+ export function normalizeErrorMessage(message) {
47
+ return normalize(message)
48
+ .replace(/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/g, '<id>')
49
+ .replace(/\b[0-9a-f]{8,}\b/g, '<hex>')
50
+ .replace(/(["'`]).*?\1/g, '<value>')
51
+ .replace(/\d+/g, '<n>');
52
+ }
53
+ /**
54
+ * The first stack frame, without line/column, query, or content-hashed chunk
55
+ * names, so one crash keeps one frame across builds of the same source.
56
+ */
57
+ export function topStackFrame(stack) {
58
+ if (!stack)
59
+ return '';
60
+ // V8 opens with `Name: message`, which may itself contain `@`; frames start
61
+ // with `at ` (V8) or hold `fn@url` (Firefox, Safari), which never has a space before `@`.
62
+ const frame = stack
63
+ .split('\n')
64
+ .map((line) => line.trim())
65
+ .find((line) => line.startsWith('at ') || /^[^\s@]*@\S/.test(line));
66
+ if (!frame)
67
+ return '';
68
+ return frame
69
+ .replace(/\?[^\s):]*/g, '')
70
+ .replace(/(:\d+)+(?=\)?$)/, '')
71
+ .replace(/\.[A-Za-z0-9_-]{6,}(?=\.(?:m?js|ts)\b)/g, '')
72
+ .toLowerCase();
73
+ }
74
+ function latestError(errors) {
75
+ let latest = errors[0];
76
+ for (const error of errors)
77
+ if (latest && error.at >= latest.at)
78
+ latest = error;
79
+ return latest;
80
+ }
81
+ async function sha256(payload) {
82
+ const digest = await crypto.subtle.digest('SHA-256', new TextEncoder().encode(payload));
83
+ return [...new Uint8Array(digest)].map((byte) => byte.toString(16).padStart(2, '0')).join('');
84
+ }
85
+ /** The versioned causal fingerprint of one signal; the one owner every writer uses. */
86
+ export async function computeFrictionSignalFingerprint(signal) {
87
+ const context = signal.context;
88
+ if (!context) {
89
+ const hash = await computeFrictionFingerprint(signal);
90
+ return { version: FRICTION_FINGERPRINT_VERSION, hash, fingerprint: `v${FRICTION_FINGERPRINT_VERSION}:${hash}` };
91
+ }
92
+ const error = latestError(context.errors);
93
+ const payload = error
94
+ ? {
95
+ version: FRICTION_REPORT_FINGERPRINT_VERSION,
96
+ kind: 'crash',
97
+ orgId: signal.orgId.trim(),
98
+ source: normalize(signal.source),
99
+ app: context.appClientId ?? '',
100
+ route: normalize(context.route),
101
+ message: normalizeErrorMessage(error.message),
102
+ frame: topStackFrame(error.stack)
103
+ }
104
+ : {
105
+ version: FRICTION_REPORT_FINGERPRINT_VERSION,
106
+ kind: 'report',
107
+ orgId: signal.orgId.trim(),
108
+ occurrence: signal.occurrenceIds?.find((id) => id.trim()) ?? (signal.occurrenceId?.trim() || signal.id)
109
+ };
110
+ const hash = await sha256(JSON.stringify(payload));
111
+ return { version: FRICTION_REPORT_FINGERPRINT_VERSION, hash, fingerprint: `v${FRICTION_REPORT_FINGERPRINT_VERSION}:${hash}` };
112
+ }
113
+ //# sourceMappingURL=fingerprint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fingerprint.js","sourceRoot":"","sources":["../../src/friction/fingerprint.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { StorageRecordDescriptorInput } from '@vibesdotdev/storage/schemas/record';
2
+ export declare const osFrictionDispositionsRecordDescriptor: StorageRecordDescriptorInput;
3
+ export default osFrictionDispositionsRecordDescriptor;
4
+ //# sourceMappingURL=friction-dispositions.record.descriptor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"friction-dispositions.record.descriptor.d.ts","sourceRoot":"","sources":["../../src/friction/friction-dispositions.record.descriptor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,qCAAqC,CAAC;AAGxF,eAAO,MAAM,sCAAsC,EAAE,4BAgCpD,CAAC;AAEF,eAAe,sCAAsC,CAAC"}
@@ -0,0 +1,36 @@
1
+ import { FrictionDispositionSchema } from "./schemas/disposition.js";
2
+ export const osFrictionDispositionsRecordDescriptor = {
3
+ kind: 'storage/record',
4
+ id: 'os.friction-dispositions',
5
+ name: 'OS Friction Dispositions',
6
+ description: 'Append-only triage and outcome history for OS friction signals',
7
+ schema: FrictionDispositionSchema,
8
+ tableName: 'os_friction_dispositions',
9
+ primaryKey: 'id',
10
+ relations: {},
11
+ indexes: [
12
+ { fields: ['signalId'], unique: false },
13
+ { fields: ['disposition'], unique: false },
14
+ { fields: ['createdAt'], unique: false }
15
+ ],
16
+ version: 1,
17
+ timestamps: false,
18
+ autoId: false,
19
+ allowedAdapters: ['storage.localdb'],
20
+ defaultAdapter: 'storage.localdb',
21
+ adapterConfig: {
22
+ 'storage.localdb': { dbName: 'os.db', scope: 'global' }
23
+ },
24
+ scope: 'global',
25
+ validateOnWrite: false,
26
+ validateOnRead: false,
27
+ versioning: false,
28
+ audit: false,
29
+ changeTracking: false,
30
+ internal: false,
31
+ softDelete: false,
32
+ namespace: 'os.friction-dispositions',
33
+ tags: ['os', 'friction', 'dispositions']
34
+ };
35
+ export default osFrictionDispositionsRecordDescriptor;
36
+ //# sourceMappingURL=friction-dispositions.record.descriptor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"friction-dispositions.record.descriptor.js","sourceRoot":"","sources":["../../src/friction/friction-dispositions.record.descriptor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAErE,MAAM,CAAC,MAAM,sCAAsC,GAAiC;IACnF,IAAI,EAAE,gBAAgB;IACtB,EAAE,EAAE,0BAA0B;IAC9B,IAAI,EAAE,0BAA0B;IAChC,WAAW,EAAE,gEAAgE;IAC7E,MAAM,EAAE,yBAAyB;IACjC,SAAS,EAAE,0BAA0B;IACrC,UAAU,EAAE,IAAI;IAChB,SAAS,EAAE,EAAE;IACb,OAAO,EAAE;QACR,EAAE,MAAM,EAAE,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE;QACvC,EAAE,MAAM,EAAE,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE;QAC1C,EAAE,MAAM,EAAE,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE;KACxC;IACD,OAAO,EAAE,CAAC;IACV,UAAU,EAAE,KAAK;IACjB,MAAM,EAAE,KAAK;IACb,eAAe,EAAE,CAAC,iBAAiB,CAAC;IACpC,cAAc,EAAE,iBAAiB;IACjC,aAAa,EAAE;QACd,iBAAiB,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE;KACvD;IACD,KAAK,EAAE,QAAQ;IACf,eAAe,EAAE,KAAK;IACtB,cAAc,EAAE,KAAK;IACrB,UAAU,EAAE,KAAK;IACjB,KAAK,EAAE,KAAK;IACZ,cAAc,EAAE,KAAK;IACrB,QAAQ,EAAE,KAAK;IACf,UAAU,EAAE,KAAK;IACjB,SAAS,EAAE,0BAA0B;IACrC,IAAI,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,cAAc,CAAC;CACxC,CAAC;AAEF,eAAe,sCAAsC,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * `os.friction-signals` v2 adds the optional typed `context` (a reported
3
+ * problem's page facts, `schemas/report.ts`). Migration path: the field is
4
+ * additive and optional, so v1 rows read unchanged under v2. Local rows are
5
+ * JSON documents (no SQL change); a cloud adapter with explicit columns adds
6
+ * a nullable `context` JSON column (hq-web D1, P1-5) before writing v2 rows.
7
+ * Report rows fingerprint as v3 (`fingerprint.ts`); others stay v2.
8
+ */
9
+ import type { StorageRecordDescriptorInput } from '@vibesdotdev/storage/schemas/record';
10
+ export declare const osFrictionSignalsRecordDescriptor: StorageRecordDescriptorInput;
11
+ export default osFrictionSignalsRecordDescriptor;
12
+ //# sourceMappingURL=friction-signals.record.descriptor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"friction-signals.record.descriptor.d.ts","sourceRoot":"","sources":["../../src/friction/friction-signals.record.descriptor.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,qCAAqC,CAAC;AAGxF,eAAO,MAAM,iCAAiC,EAAE,4BAiD/C,CAAC;AAEF,eAAe,iCAAiC,CAAC"}