@readymadeit/mcp 0.0.0-stage → 0.1.0

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 (916) hide show
  1. package/README.md +114 -2
  2. package/bundle/LICENSE +201 -0
  3. package/bundle/boards/aggregator-demo-board.json +54 -0
  4. package/bundle/boards/alpaca-board.json +316 -0
  5. package/bundle/boards/animate-board.json +159 -0
  6. package/bundle/boards/ascii-art-demo-board.json +33 -0
  7. package/bundle/boards/ascii-cam-board.json +184 -0
  8. package/bundle/boards/asset-demo-board.json +54 -0
  9. package/bundle/boards/audio-encode-demo-board.json +153 -0
  10. package/bundle/boards/audiolize-board.json +152 -0
  11. package/bundle/boards/batcher-demo-board.json +43 -0
  12. package/bundle/boards/buffer-demo-board.json +53 -0
  13. package/bundle/boards/cache-demo-board.json +59 -0
  14. package/bundle/boards/camera-demo-board.json +28 -0
  15. package/bundle/boards/canvas-demo-board.json +55 -0
  16. package/bundle/boards/changes-demo-board.json +60 -0
  17. package/bundle/boards/court-booking-browser-demo-board.json +221 -0
  18. package/bundle/boards/court-booking-demo-board.json +218 -0
  19. package/bundle/boards/current-time-board.json +32 -0
  20. package/bundle/boards/debounce-demo-board.json +43 -0
  21. package/bundle/boards/decrypt-demo-board.json +47 -0
  22. package/bundle/boards/delay-demo-board.json +28 -0
  23. package/bundle/boards/detect-demo-board.json +64 -0
  24. package/bundle/boards/document-extract-demo-board.json +55 -0
  25. package/bundle/boards/dropitapp-board.json +138 -0
  26. package/bundle/boards/encode-demo-board.json +39 -0
  27. package/bundle/boards/encrypt-board.json +185 -0
  28. package/bundle/boards/encrypt-demo-board.json +39 -0
  29. package/bundle/boards/face-alert-board.json +181 -0
  30. package/bundle/boards/fetcher-demo-board.json +40 -0
  31. package/bundle/boards/fft-demo-board.json +28 -0
  32. package/bundle/boards/filter-demo-board.json +55 -0
  33. package/bundle/boards/flat-map-demo-board.json +42 -0
  34. package/bundle/boards/frame-limit-test-board.json +130 -0
  35. package/bundle/boards/game-board.json +413 -0
  36. package/bundle/boards/game-of-life-board.json +139 -0
  37. package/bundle/boards/game-of-life-demo-board.json +34 -0
  38. package/bundle/boards/gather-demo-board.json +62 -0
  39. package/bundle/boards/group-by-demo-board.json +62 -0
  40. package/bundle/boards/hacker-demo-board.json +45 -0
  41. package/bundle/boards/hacker-news-board.json +741 -0
  42. package/bundle/boards/hash-demo-board.json +40 -0
  43. package/bundle/boards/health-log-browser-demo-board.json +537 -0
  44. package/bundle/boards/health-log-demo-board.json +498 -0
  45. package/bundle/boards/helloworld-board.json +57 -0
  46. package/bundle/boards/hold-demo-board.json +67 -0
  47. package/bundle/boards/hold-scopes-demo-board.json +141 -0
  48. package/bundle/boards/http-client-browser-demo-board.json +379 -0
  49. package/bundle/boards/http-client-demo-board.json +380 -0
  50. package/bundle/boards/image-picker-demo-board.json +22 -0
  51. package/bundle/boards/imap-email-demo-board.json +35 -0
  52. package/bundle/boards/injector-demo-board.json +55 -0
  53. package/bundle/boards/iterator-demo-board.json +55 -0
  54. package/bundle/boards/limit-demo-board.json +66 -0
  55. package/bundle/boards/link-debugger.json +32 -0
  56. package/bundle/boards/live-location-demo-board.json +93 -0
  57. package/bundle/boards/live-radio-cloud-demo-board.json +216 -0
  58. package/bundle/boards/live-radio-cloud-direct-demo-board.json +311 -0
  59. package/bundle/boards/live-radio-demo-board.json +211 -0
  60. package/bundle/boards/live-radio-members-demo-board.json +314 -0
  61. package/bundle/boards/local-storage-demo-board.json +30 -0
  62. package/bundle/boards/lz-compress-demo-board.json +52 -0
  63. package/bundle/boards/map-demo-board.json +46 -0
  64. package/bundle/boards/match-filter-demo-board.json +43 -0
  65. package/bundle/boards/meeting-poll-browser-demo-board.json +649 -0
  66. package/bundle/boards/meeting-poll-demo-board.json +650 -0
  67. package/bundle/boards/microphone-monitor-demo-board.json +28 -0
  68. package/bundle/boards/microphone-speaker-demo-board.json +86 -0
  69. package/bundle/boards/monitor-demo-board.json +52 -0
  70. package/bundle/boards/mounted-endpoint-demo-board-hkp-rt.json +84 -0
  71. package/bundle/boards/mounted-endpoint-demo-board.json +84 -0
  72. package/bundle/boards/nested-rhythm-demo-board.json +1160 -0
  73. package/bundle/boards/next-bus-board.json +52 -0
  74. package/bundle/boards/next-bus-switch-board.json +79 -0
  75. package/bundle/boards/night-groove-demo-board.json +742 -0
  76. package/bundle/boards/noise-alert-board.json +146 -0
  77. package/bundle/boards/offer-followup-demo-board.json +291 -0
  78. package/bundle/boards/offer-intake-demo-board.json +289 -0
  79. package/bundle/boards/offer-intake-hetzner-demo-board.json +286 -0
  80. package/bundle/boards/offer-intake-imap-demo-board.json +289 -0
  81. package/bundle/boards/offer-intake-imap-hetzner-demo-board.json +354 -0
  82. package/bundle/boards/p2p-receiver-demo-board.json +65 -0
  83. package/bundle/boards/p2p-sender-demo-board.json +94 -0
  84. package/bundle/boards/pad-groove-demo-board.json +644 -0
  85. package/bundle/boards/peer-chat-board.json +109 -0
  86. package/bundle/boards/peer-chat-node-board.json +97 -0
  87. package/bundle/boards/qr-code-demo-board.json +22 -0
  88. package/bundle/boards/queue-demo-board.json +239 -0
  89. package/bundle/boards/reduce-demo-board.json +54 -0
  90. package/bundle/boards/remote-named-demo-board-hkp-rt.json +61 -0
  91. package/bundle/boards/remote-named-demo-board.json +61 -0
  92. package/bundle/boards/rss-demo-board.json +530 -0
  93. package/bundle/boards/rss-radio-board.json +515 -0
  94. package/bundle/boards/rss-radio-brief-one-board.json +237 -0
  95. package/bundle/boards/rss-radio-editor-unit-board.json +555 -0
  96. package/bundle/boards/rss-radio-library-unit-board.json +293 -0
  97. package/bundle/boards/rss-radio-unit-board.json +809 -0
  98. package/bundle/boards/rss-radio-voice-unit-board.json +146 -0
  99. package/bundle/boards/runtime-configs/hold-example.json +41 -0
  100. package/bundle/boards/runtime-configs/injector-example.json +23 -0
  101. package/bundle/boards/runtime-configs/speech-to-text-example.json +35 -0
  102. package/bundle/boards/runtime-configs/text-generation-example.json +31 -0
  103. package/bundle/boards/runtime-configs/text-to-speech-example.json +28 -0
  104. package/bundle/boards/runtime-configs/text-to-speech-inflect-example.json +28 -0
  105. package/bundle/boards/runtime-configs/ws-audio-playback-example.json +23 -0
  106. package/bundle/boards/select-demo-board.json +32 -0
  107. package/bundle/boards/send-ntfy-board.json +52 -0
  108. package/bundle/boards/shared-costs-demo-board.json +361 -0
  109. package/bundle/boards/sign-demo-board.json +41 -0
  110. package/bundle/boards/skill-router-demo-board.json +210 -0
  111. package/bundle/boards/smooth-demo-board.json +91 -0
  112. package/bundle/boards/smtp-email-demo-board.json +34 -0
  113. package/bundle/boards/sort-demo-board.json +55 -0
  114. package/bundle/boards/sound-demo-board.json +65 -0
  115. package/bundle/boards/spectral-modifier-board.json +98 -0
  116. package/bundle/boards/speech-synth-demo-board.json +37 -0
  117. package/bundle/boards/speech-to-text-demo-board.json +146 -0
  118. package/bundle/boards/spotify-board.json +75 -0
  119. package/bundle/boards/spread-demo-board.json +35 -0
  120. package/bundle/boards/sql-demo-board.json +56 -0
  121. package/bundle/boards/sql-explorer-board.json +447 -0
  122. package/bundle/boards/sql-explorer-node-board.json +474 -0
  123. package/bundle/boards/sql-import-board.json +156 -0
  124. package/bundle/boards/state-demo-board.json +65 -0
  125. package/bundle/boards/stopper-demo-board.json +40 -0
  126. package/bundle/boards/storage-demo-board.json +193 -0
  127. package/bundle/boards/store-demo-board.json +63 -0
  128. package/bundle/boards/swimlanes-demo-board.json +197 -0
  129. package/bundle/boards/switch-demo-board.json +51 -0
  130. package/bundle/boards/syn-board.json +19 -0
  131. package/bundle/boards/syn-booking-unit-board.json +998 -0
  132. package/bundle/boards/syn-conversations-anthropic-demo-board.json +925 -0
  133. package/bundle/boards/syn-conversations-demo-board.json +925 -0
  134. package/bundle/boards/syn-hotels-unit-board.json +287 -0
  135. package/bundle/boards/syn-mail-desk-board.json +25 -0
  136. package/bundle/boards/syn-mail-desk-unit-board.json +254 -0
  137. package/bundle/boards/telegram-listener-demo-board.json +31 -0
  138. package/bundle/boards/text-generation-anthropic-demo-board.json +66 -0
  139. package/bundle/boards/text-generation-demo-board.json +51 -0
  140. package/bundle/boards/text-generation-local-demo-board.json +80 -0
  141. package/bundle/boards/text-to-speech-demo-board.json +58 -0
  142. package/bundle/boards/timeline-demo-board.json +477 -0
  143. package/bundle/boards/timer-demo-board.json +35 -0
  144. package/bundle/boards/tracks-demo-board.json +95 -0
  145. package/bundle/boards/trigger-pad-demo-board.json +47 -0
  146. package/bundle/boards/triggerpad-board.json +31 -0
  147. package/bundle/boards/triggerpad-recorder-board.json +56 -0
  148. package/bundle/boards/uuid-generator-demo-board.json +166 -0
  149. package/bundle/boards/voice-assistant-demo-board.json +230 -0
  150. package/bundle/boards/voice-assistant-hkp-rt-demo-board.json +239 -0
  151. package/bundle/boards/voice-assistant-local-demo-board.json +232 -0
  152. package/bundle/boards/voice-assistant-skills-demo-board.json +316 -0
  153. package/bundle/boards/voice-assistant-skills-local-demo-board.json +316 -0
  154. package/bundle/boards/xy-pad-demo-board.json +36 -0
  155. package/bundle/docs/content/board-json.md +277 -0
  156. package/bundle/docs/content/boards/alpaca-board.md +56 -0
  157. package/bundle/docs/content/boards/animate-board.md +40 -0
  158. package/bundle/docs/content/boards/ascii-cam-board.md +37 -0
  159. package/bundle/docs/content/boards/audiolize-board.md +47 -0
  160. package/bundle/docs/content/boards/court-booking-browser-demo-board.md +43 -0
  161. package/bundle/docs/content/boards/court-booking-demo-board.md +120 -0
  162. package/bundle/docs/content/boards/current-time-board.md +32 -0
  163. package/bundle/docs/content/boards/dropitapp-board.md +57 -0
  164. package/bundle/docs/content/boards/encrypt-board.md +36 -0
  165. package/bundle/docs/content/boards/face-alert-board.md +50 -0
  166. package/bundle/docs/content/boards/game-board.md +69 -0
  167. package/bundle/docs/content/boards/game-of-life-board.md +47 -0
  168. package/bundle/docs/content/boards/hacker-news-board.md +76 -0
  169. package/bundle/docs/content/boards/health-log-browser-demo-board.md +56 -0
  170. package/bundle/docs/content/boards/health-log-demo-board.md +138 -0
  171. package/bundle/docs/content/boards/helloworld-board.md +40 -0
  172. package/bundle/docs/content/boards/link-debugger.md +31 -0
  173. package/bundle/docs/content/boards/live-radio-cloud-demo-board.md +70 -0
  174. package/bundle/docs/content/boards/live-radio-cloud-direct-demo-board.md +89 -0
  175. package/bundle/docs/content/boards/live-radio-demo-board.md +102 -0
  176. package/bundle/docs/content/boards/live-radio-members-demo-board.md +91 -0
  177. package/bundle/docs/content/boards/meeting-poll-browser-demo-board.md +45 -0
  178. package/bundle/docs/content/boards/meeting-poll-demo-board.md +121 -0
  179. package/bundle/docs/content/boards/mounted-endpoint-demo-board-hkp-rt.md +50 -0
  180. package/bundle/docs/content/boards/nested-rhythm-demo-board.md +165 -0
  181. package/bundle/docs/content/boards/next-bus-board.md +38 -0
  182. package/bundle/docs/content/boards/next-bus-switch-board.md +44 -0
  183. package/bundle/docs/content/boards/night-groove-demo-board.md +110 -0
  184. package/bundle/docs/content/boards/noise-alert-board.md +44 -0
  185. package/bundle/docs/content/boards/pad-groove-demo-board.md +93 -0
  186. package/bundle/docs/content/boards/peer-chat-board.md +49 -0
  187. package/bundle/docs/content/boards/peer-chat-node-board.md +47 -0
  188. package/bundle/docs/content/boards/rss-radio-board.md +221 -0
  189. package/bundle/docs/content/boards/send-ntfy-board.md +33 -0
  190. package/bundle/docs/content/boards/shared-costs-demo-board.md +65 -0
  191. package/bundle/docs/content/boards/spectral-modifier-board.md +55 -0
  192. package/bundle/docs/content/boards/spotify-board.md +46 -0
  193. package/bundle/docs/content/boards/sql-explorer-board.md +70 -0
  194. package/bundle/docs/content/boards/sql-explorer-node-board.md +76 -0
  195. package/bundle/docs/content/boards/sql-import-board.md +37 -0
  196. package/bundle/docs/content/boards/swimlanes-demo-board.md +148 -0
  197. package/bundle/docs/content/boards/syn-mail-desk-board.md +52 -0
  198. package/bundle/docs/content/boards/timeline-demo-board.md +115 -0
  199. package/bundle/docs/content/boards/triggerpad-board.md +32 -0
  200. package/bundle/docs/content/boards/triggerpad-recorder-board.md +52 -0
  201. package/bundle/docs/content/boards/voice-assistant-demo-board.md +51 -0
  202. package/bundle/docs/content/concepts/assets.md +245 -0
  203. package/bundle/docs/content/concepts/blocks.md +300 -0
  204. package/bundle/docs/content/concepts/board-assistant.md +307 -0
  205. package/bundle/docs/content/concepts/board.md +265 -0
  206. package/bundle/docs/content/concepts/cloud-boards.md +803 -0
  207. package/bundle/docs/content/concepts/coordinator.md +297 -0
  208. package/bundle/docs/content/concepts/logging.md +293 -0
  209. package/bundle/docs/content/concepts/mounts.md +314 -0
  210. package/bundle/docs/content/concepts/presets.md +360 -0
  211. package/bundle/docs/content/concepts/remotes.md +423 -0
  212. package/bundle/docs/content/concepts/runtime.md +664 -0
  213. package/bundle/docs/content/concepts/scopes.md +256 -0
  214. package/bundle/docs/content/concepts/service.md +227 -0
  215. package/bundle/docs/content/concepts/units.md +321 -0
  216. package/bundle/docs/content/introduction.md +163 -0
  217. package/bundle/docs/content/llm/circle-text-board.json +55 -0
  218. package/bundle/docs/content/llm/howto-workflow.md +369 -0
  219. package/bundle/docs/content/repository.md +161 -0
  220. package/bundle/docs/content/services/aggregator.md +76 -0
  221. package/bundle/docs/content/services/analyzer.md +44 -0
  222. package/bundle/docs/content/services/ascii-art.md +58 -0
  223. package/bundle/docs/content/services/asset.md +88 -0
  224. package/bundle/docs/content/services/audio-editor.md +57 -0
  225. package/bundle/docs/content/services/audio-encode.md +115 -0
  226. package/bundle/docs/content/services/audio-io.md +173 -0
  227. package/bundle/docs/content/services/batcher.md +49 -0
  228. package/bundle/docs/content/services/board-service.md +48 -0
  229. package/bundle/docs/content/services/browser-sub-service.md +75 -0
  230. package/bundle/docs/content/services/buffer.md +70 -0
  231. package/bundle/docs/content/services/cache.md +92 -0
  232. package/bundle/docs/content/services/camera.md +85 -0
  233. package/bundle/docs/content/services/canvas.md +196 -0
  234. package/bundle/docs/content/services/changes.md +87 -0
  235. package/bundle/docs/content/services/chunked-file-provider.md +63 -0
  236. package/bundle/docs/content/services/communication-dispatcher.md +190 -0
  237. package/bundle/docs/content/services/configurator.md +66 -0
  238. package/bundle/docs/content/services/conversations.md +244 -0
  239. package/bundle/docs/content/services/debounce.md +45 -0
  240. package/bundle/docs/content/services/decrypt.md +53 -0
  241. package/bundle/docs/content/services/delay.md +55 -0
  242. package/bundle/docs/content/services/detect.md +101 -0
  243. package/bundle/docs/content/services/document-extract.md +174 -0
  244. package/bundle/docs/content/services/download.md +67 -0
  245. package/bundle/docs/content/services/encode.md +63 -0
  246. package/bundle/docs/content/services/encrypt.md +53 -0
  247. package/bundle/docs/content/services/fetcher.md +122 -0
  248. package/bundle/docs/content/services/fft.md +96 -0
  249. package/bundle/docs/content/services/file-source.md +67 -0
  250. package/bundle/docs/content/services/filesystem.md +157 -0
  251. package/bundle/docs/content/services/filter.md +133 -0
  252. package/bundle/docs/content/services/flat-map.md +62 -0
  253. package/bundle/docs/content/services/game-of-life.md +93 -0
  254. package/bundle/docs/content/services/gather.md +135 -0
  255. package/bundle/docs/content/services/gif-encoder.md +56 -0
  256. package/bundle/docs/content/services/github.md +85 -0
  257. package/bundle/docs/content/services/group-by.md +54 -0
  258. package/bundle/docs/content/services/hacker.md +79 -0
  259. package/bundle/docs/content/services/hash.md +59 -0
  260. package/bundle/docs/content/services/hold.md +182 -0
  261. package/bundle/docs/content/services/http-relay-client.md +48 -0
  262. package/bundle/docs/content/services/http-uploader.md +62 -0
  263. package/bundle/docs/content/services/http.md +424 -0
  264. package/bundle/docs/content/services/if.md +79 -0
  265. package/bundle/docs/content/services/ifft.md +46 -0
  266. package/bundle/docs/content/services/image-picker.md +50 -0
  267. package/bundle/docs/content/services/imap-email.md +104 -0
  268. package/bundle/docs/content/services/injector.md +129 -0
  269. package/bundle/docs/content/services/input.md +90 -0
  270. package/bundle/docs/content/services/iterator.md +186 -0
  271. package/bundle/docs/content/services/join.md +153 -0
  272. package/bundle/docs/content/services/limit.md +47 -0
  273. package/bundle/docs/content/services/local-storage.md +47 -0
  274. package/bundle/docs/content/services/looper.md +62 -0
  275. package/bundle/docs/content/services/lz-compress.md +52 -0
  276. package/bundle/docs/content/services/map.md +257 -0
  277. package/bundle/docs/content/services/match-filter.md +38 -0
  278. package/bundle/docs/content/services/microphone-monitor.md +66 -0
  279. package/bundle/docs/content/services/monitor.md +67 -0
  280. package/bundle/docs/content/services/ollama.md +116 -0
  281. package/bundle/docs/content/services/openai-prompt.md +74 -0
  282. package/bundle/docs/content/services/output.md +107 -0
  283. package/bundle/docs/content/services/peer-socket.md +61 -0
  284. package/bundle/docs/content/services/qr-code.md +48 -0
  285. package/bundle/docs/content/services/queue.md +201 -0
  286. package/bundle/docs/content/services/reduce.md +51 -0
  287. package/bundle/docs/content/services/rss.md +232 -0
  288. package/bundle/docs/content/services/select.md +47 -0
  289. package/bundle/docs/content/services/sign.md +53 -0
  290. package/bundle/docs/content/services/skill-router.md +154 -0
  291. package/bundle/docs/content/services/smooth.md +59 -0
  292. package/bundle/docs/content/services/smtp-email.md +129 -0
  293. package/bundle/docs/content/services/sort.md +48 -0
  294. package/bundle/docs/content/services/sound.md +87 -0
  295. package/bundle/docs/content/services/speech-synth.md +46 -0
  296. package/bundle/docs/content/services/speech-to-text.md +172 -0
  297. package/bundle/docs/content/services/spotify.md +77 -0
  298. package/bundle/docs/content/services/spread.md +111 -0
  299. package/bundle/docs/content/services/sql.md +491 -0
  300. package/bundle/docs/content/services/state.md +57 -0
  301. package/bundle/docs/content/services/static.md +47 -0
  302. package/bundle/docs/content/services/stopper.md +55 -0
  303. package/bundle/docs/content/services/storage.md +155 -0
  304. package/bundle/docs/content/services/store.md +255 -0
  305. package/bundle/docs/content/services/sub-service.md +152 -0
  306. package/bundle/docs/content/services/switch.md +67 -0
  307. package/bundle/docs/content/services/telegram-listener.md +76 -0
  308. package/bundle/docs/content/services/text-generation.md +390 -0
  309. package/bundle/docs/content/services/text-to-speech.md +130 -0
  310. package/bundle/docs/content/services/timeline.md +333 -0
  311. package/bundle/docs/content/services/timer.md +113 -0
  312. package/bundle/docs/content/services/tracks.md +207 -0
  313. package/bundle/docs/content/services/trigger-pad.md +68 -0
  314. package/bundle/docs/content/services/uuid-generator.md +48 -0
  315. package/bundle/docs/content/services/wav-reader.md +66 -0
  316. package/bundle/docs/content/services/websocket.md +189 -0
  317. package/bundle/docs/content/services/workflow-board-builder.md +65 -0
  318. package/bundle/docs/content/services/xy-pad.md +60 -0
  319. package/bundle/docs/content/targets.md +434 -0
  320. package/bundle/docs/content/testing.md +263 -0
  321. package/bundle/docs/content/vocabulary.md +171 -0
  322. package/bundle/hkp-frontend/src/runtime/browser/BrowserRegistry.tsx +141 -0
  323. package/bundle/hkp-frontend/src/runtime/browser/BrowserRuntime.tsx +202 -0
  324. package/bundle/hkp-frontend/src/runtime/browser/BrowserRuntimeApi.ts +306 -0
  325. package/bundle/hkp-frontend/src/runtime/browser/BrowserRuntimeApp.ts +310 -0
  326. package/bundle/hkp-frontend/src/runtime/browser/BrowserRuntimeScope.ts +500 -0
  327. package/bundle/hkp-frontend/src/runtime/browser/UIRegistry.ts +150 -0
  328. package/bundle/hkp-frontend/src/runtime/browser/assetResolver.ts +123 -0
  329. package/bundle/hkp-frontend/src/runtime/browser/pipelineNames.ts +65 -0
  330. package/bundle/hkp-frontend/src/runtime/browser/registry/Default.ts +237 -0
  331. package/bundle/hkp-frontend/src/runtime/browser/services/Aggregator.ts +127 -0
  332. package/bundle/hkp-frontend/src/runtime/browser/services/AggregatorUI.tsx +83 -0
  333. package/bundle/hkp-frontend/src/runtime/browser/services/Analyzer.tsx +43 -0
  334. package/bundle/hkp-frontend/src/runtime/browser/services/AnalyzerUI/Bars.tsx +33 -0
  335. package/bundle/hkp-frontend/src/runtime/browser/services/AnalyzerUI/HorizontalSpectrogram.tsx +53 -0
  336. package/bundle/hkp-frontend/src/runtime/browser/services/AnalyzerUI/VerticalSpectogram.tsx +56 -0
  337. package/bundle/hkp-frontend/src/runtime/browser/services/AnalyzerUI/Waveform.tsx +109 -0
  338. package/bundle/hkp-frontend/src/runtime/browser/services/AnalyzerUI/index.tsx +99 -0
  339. package/bundle/hkp-frontend/src/runtime/browser/services/AsciiArt.ts +119 -0
  340. package/bundle/hkp-frontend/src/runtime/browser/services/AsciiArtUI.tsx +131 -0
  341. package/bundle/hkp-frontend/src/runtime/browser/services/Asset.ts +125 -0
  342. package/bundle/hkp-frontend/src/runtime/browser/services/AssetUI.tsx +37 -0
  343. package/bundle/hkp-frontend/src/runtime/browser/services/AudioDeviceSettings.tsx +56 -0
  344. package/bundle/hkp-frontend/src/runtime/browser/services/AudioEditor.ts +129 -0
  345. package/bundle/hkp-frontend/src/runtime/browser/services/AudioEditorUI.tsx +549 -0
  346. package/bundle/hkp-frontend/src/runtime/browser/services/AudioInput.ts +298 -0
  347. package/bundle/hkp-frontend/src/runtime/browser/services/AudioInputUI.tsx +257 -0
  348. package/bundle/hkp-frontend/src/runtime/browser/services/AudioOutput.ts +189 -0
  349. package/bundle/hkp-frontend/src/runtime/browser/services/AudioOutputUI.tsx +63 -0
  350. package/bundle/hkp-frontend/src/runtime/browser/services/Batcher.ts +11 -0
  351. package/bundle/hkp-frontend/src/runtime/browser/services/BoardService.tsx +86 -0
  352. package/bundle/hkp-frontend/src/runtime/browser/services/BoardServiceUI.tsx +410 -0
  353. package/bundle/hkp-frontend/src/runtime/browser/services/BrowserGather.ts +311 -0
  354. package/bundle/hkp-frontend/src/runtime/browser/services/BrowserIterator.ts +167 -0
  355. package/bundle/hkp-frontend/src/runtime/browser/services/BrowserSubService.tsx +583 -0
  356. package/bundle/hkp-frontend/src/runtime/browser/services/BrowserSubServiceUI.tsx +187 -0
  357. package/bundle/hkp-frontend/src/runtime/browser/services/BrowserTracks.tsx +477 -0
  358. package/bundle/hkp-frontend/src/runtime/browser/services/Buffer.ts +11 -0
  359. package/bundle/hkp-frontend/src/runtime/browser/services/Cache.ts +134 -0
  360. package/bundle/hkp-frontend/src/runtime/browser/services/CacheUI.tsx +125 -0
  361. package/bundle/hkp-frontend/src/runtime/browser/services/Camera.ts +90 -0
  362. package/bundle/hkp-frontend/src/runtime/browser/services/CameraUI.tsx +321 -0
  363. package/bundle/hkp-frontend/src/runtime/browser/services/Canvas.ts +139 -0
  364. package/bundle/hkp-frontend/src/runtime/browser/services/CanvasUI/canvasDraw.ts +543 -0
  365. package/bundle/hkp-frontend/src/runtime/browser/services/CanvasUI/canvasUtils.ts +39 -0
  366. package/bundle/hkp-frontend/src/runtime/browser/services/CanvasUI/index.tsx +287 -0
  367. package/bundle/hkp-frontend/src/runtime/browser/services/CanvasUI/tests/canvasDraw.test.ts +355 -0
  368. package/bundle/hkp-frontend/src/runtime/browser/services/CanvasUI/tests/canvasUtils.test.ts +89 -0
  369. package/bundle/hkp-frontend/src/runtime/browser/services/CanvasUI/tests/fullscreen.test.tsx +26 -0
  370. package/bundle/hkp-frontend/src/runtime/browser/services/Changes.ts +201 -0
  371. package/bundle/hkp-frontend/src/runtime/browser/services/ChangesUI.tsx +85 -0
  372. package/bundle/hkp-frontend/src/runtime/browser/services/ChunkedFileProvider.tsx +183 -0
  373. package/bundle/hkp-frontend/src/runtime/browser/services/Configurator.ts +258 -0
  374. package/bundle/hkp-frontend/src/runtime/browser/services/ConfiguratorUI.tsx +83 -0
  375. package/bundle/hkp-frontend/src/runtime/browser/services/ConsideredHacker.tsx +28 -0
  376. package/bundle/hkp-frontend/src/runtime/browser/services/Debounce.ts +75 -0
  377. package/bundle/hkp-frontend/src/runtime/browser/services/DebounceUI.tsx +70 -0
  378. package/bundle/hkp-frontend/src/runtime/browser/services/Decrypt.ts +127 -0
  379. package/bundle/hkp-frontend/src/runtime/browser/services/DecryptUI.tsx +39 -0
  380. package/bundle/hkp-frontend/src/runtime/browser/services/Delay.tsx +110 -0
  381. package/bundle/hkp-frontend/src/runtime/browser/services/Detect.ts +214 -0
  382. package/bundle/hkp-frontend/src/runtime/browser/services/DetectUI.tsx +86 -0
  383. package/bundle/hkp-frontend/src/runtime/browser/services/Download.ts +120 -0
  384. package/bundle/hkp-frontend/src/runtime/browser/services/DownloadUI.tsx +61 -0
  385. package/bundle/hkp-frontend/src/runtime/browser/services/Encode.ts +138 -0
  386. package/bundle/hkp-frontend/src/runtime/browser/services/EncodeUI.tsx +52 -0
  387. package/bundle/hkp-frontend/src/runtime/browser/services/Encrypt.ts +125 -0
  388. package/bundle/hkp-frontend/src/runtime/browser/services/EncryptUI.tsx +39 -0
  389. package/bundle/hkp-frontend/src/runtime/browser/services/FFT.tsx +238 -0
  390. package/bundle/hkp-frontend/src/runtime/browser/services/FFTUI.tsx +112 -0
  391. package/bundle/hkp-frontend/src/runtime/browser/services/FeedbackService.ts +247 -0
  392. package/bundle/hkp-frontend/src/runtime/browser/services/FeedbackServiceUI.tsx +35 -0
  393. package/bundle/hkp-frontend/src/runtime/browser/services/Fetcher.tsx +232 -0
  394. package/bundle/hkp-frontend/src/runtime/browser/services/FetcherUI.tsx +154 -0
  395. package/bundle/hkp-frontend/src/runtime/browser/services/FileSource.tsx +171 -0
  396. package/bundle/hkp-frontend/src/runtime/browser/services/Filter.tsx +18 -0
  397. package/bundle/hkp-frontend/src/runtime/browser/services/FilterUI.tsx +89 -0
  398. package/bundle/hkp-frontend/src/runtime/browser/services/FlatMap.ts +68 -0
  399. package/bundle/hkp-frontend/src/runtime/browser/services/FlatMapUI.tsx +38 -0
  400. package/bundle/hkp-frontend/src/runtime/browser/services/GameOfLife.ts +210 -0
  401. package/bundle/hkp-frontend/src/runtime/browser/services/GameOfLifeRenderer.ts +182 -0
  402. package/bundle/hkp-frontend/src/runtime/browser/services/GameOfLifeRendererUI.tsx +48 -0
  403. package/bundle/hkp-frontend/src/runtime/browser/services/GameOfLifeUI.tsx +58 -0
  404. package/bundle/hkp-frontend/src/runtime/browser/services/GatherUI.tsx +84 -0
  405. package/bundle/hkp-frontend/src/runtime/browser/services/GifEncoder.tsx +651 -0
  406. package/bundle/hkp-frontend/src/runtime/browser/services/GithubAPI.ts +294 -0
  407. package/bundle/hkp-frontend/src/runtime/browser/services/GithubComponents.tsx +389 -0
  408. package/bundle/hkp-frontend/src/runtime/browser/services/GithubSink.tsx +109 -0
  409. package/bundle/hkp-frontend/src/runtime/browser/services/GithubSinkUI.tsx +143 -0
  410. package/bundle/hkp-frontend/src/runtime/browser/services/GithubSource.tsx +86 -0
  411. package/bundle/hkp-frontend/src/runtime/browser/services/GithubSourceUI.tsx +162 -0
  412. package/bundle/hkp-frontend/src/runtime/browser/services/GroupBy.ts +11 -0
  413. package/bundle/hkp-frontend/src/runtime/browser/services/HTTPUploader.ts +102 -0
  414. package/bundle/hkp-frontend/src/runtime/browser/services/Hacker.ts +73 -0
  415. package/bundle/hkp-frontend/src/runtime/browser/services/HackerUI.tsx +134 -0
  416. package/bundle/hkp-frontend/src/runtime/browser/services/Hash.ts +134 -0
  417. package/bundle/hkp-frontend/src/runtime/browser/services/HashUI.tsx +45 -0
  418. package/bundle/hkp-frontend/src/runtime/browser/services/Hold.ts +288 -0
  419. package/bundle/hkp-frontend/src/runtime/browser/services/HoldUI.tsx +43 -0
  420. package/bundle/hkp-frontend/src/runtime/browser/services/HttpClient.ts +558 -0
  421. package/bundle/hkp-frontend/src/runtime/browser/services/HttpClientUI.tsx +212 -0
  422. package/bundle/hkp-frontend/src/runtime/browser/services/HttpUploaderTokenInjector.ts +149 -0
  423. package/bundle/hkp-frontend/src/runtime/browser/services/IfService.ts +231 -0
  424. package/bundle/hkp-frontend/src/runtime/browser/services/IfServiceUI.tsx +50 -0
  425. package/bundle/hkp-frontend/src/runtime/browser/services/ImagePicker.tsx +118 -0
  426. package/bundle/hkp-frontend/src/runtime/browser/services/Injector.ts +61 -0
  427. package/bundle/hkp-frontend/src/runtime/browser/services/InjectorUI.tsx +389 -0
  428. package/bundle/hkp-frontend/src/runtime/browser/services/Input.ts +214 -0
  429. package/bundle/hkp-frontend/src/runtime/browser/services/InputUI.tsx +71 -0
  430. package/bundle/hkp-frontend/src/runtime/browser/services/IteratorUI.tsx +59 -0
  431. package/bundle/hkp-frontend/src/runtime/browser/services/LZCompress.ts +63 -0
  432. package/bundle/hkp-frontend/src/runtime/browser/services/Limit.ts +39 -0
  433. package/bundle/hkp-frontend/src/runtime/browser/services/LimitUI.tsx +41 -0
  434. package/bundle/hkp-frontend/src/runtime/browser/services/LocalStorage.ts +65 -0
  435. package/bundle/hkp-frontend/src/runtime/browser/services/LocalStorageUI.tsx +72 -0
  436. package/bundle/hkp-frontend/src/runtime/browser/services/Map.ts +14 -0
  437. package/bundle/hkp-frontend/src/runtime/browser/services/MapUI.tsx +334 -0
  438. package/bundle/hkp-frontend/src/runtime/browser/services/MapUIModeAssist.tsx +61 -0
  439. package/bundle/hkp-frontend/src/runtime/browser/services/MatchFilter.ts +11 -0
  440. package/bundle/hkp-frontend/src/runtime/browser/services/MicrophoneMonitor.ts +190 -0
  441. package/bundle/hkp-frontend/src/runtime/browser/services/MicrophoneMonitorUI.tsx +94 -0
  442. package/bundle/hkp-frontend/src/runtime/browser/services/Monitor.tsx +15 -0
  443. package/bundle/hkp-frontend/src/runtime/browser/services/MonitorUI.tsx +281 -0
  444. package/bundle/hkp-frontend/src/runtime/browser/services/OllamaPrompt.ts +237 -0
  445. package/bundle/hkp-frontend/src/runtime/browser/services/OllamaPromptUI/BusyIndicator.tsx +18 -0
  446. package/bundle/hkp-frontend/src/runtime/browser/services/OllamaPromptUI/PromptInput.tsx +71 -0
  447. package/bundle/hkp-frontend/src/runtime/browser/services/OllamaPromptUI/StreamingPreview.tsx +24 -0
  448. package/bundle/hkp-frontend/src/runtime/browser/services/OllamaPromptUI/index.tsx +156 -0
  449. package/bundle/hkp-frontend/src/runtime/browser/services/OpenAIPrompt.ts +254 -0
  450. package/bundle/hkp-frontend/src/runtime/browser/services/OpenAIPromptUI.tsx +189 -0
  451. package/bundle/hkp-frontend/src/runtime/browser/services/Output.tsx +145 -0
  452. package/bundle/hkp-frontend/src/runtime/browser/services/OutputUI.tsx +118 -0
  453. package/bundle/hkp-frontend/src/runtime/browser/services/PeerChatTemplate.json +43 -0
  454. package/bundle/hkp-frontend/src/runtime/browser/services/PeerConnection.ts +260 -0
  455. package/bundle/hkp-frontend/src/runtime/browser/services/PeerSocket.tsx +268 -0
  456. package/bundle/hkp-frontend/src/runtime/browser/services/PeerSocketReceiverTemplate.json +29 -0
  457. package/bundle/hkp-frontend/src/runtime/browser/services/PeerSocketUI.tsx +341 -0
  458. package/bundle/hkp-frontend/src/runtime/browser/services/PlaceholderUI.tsx +72 -0
  459. package/bundle/hkp-frontend/src/runtime/browser/services/QrCode.ts +63 -0
  460. package/bundle/hkp-frontend/src/runtime/browser/services/QrCodeUI.tsx +197 -0
  461. package/bundle/hkp-frontend/src/runtime/browser/services/Select.ts +40 -0
  462. package/bundle/hkp-frontend/src/runtime/browser/services/SelectUI.tsx +41 -0
  463. package/bundle/hkp-frontend/src/runtime/browser/services/ServiceBase.ts +50 -0
  464. package/bundle/hkp-frontend/src/runtime/browser/services/SetRuntimeVariable.ts +65 -0
  465. package/bundle/hkp-frontend/src/runtime/browser/services/SetRuntimeVariableUI.tsx +50 -0
  466. package/bundle/hkp-frontend/src/runtime/browser/services/Sign.ts +182 -0
  467. package/bundle/hkp-frontend/src/runtime/browser/services/SignUI.tsx +55 -0
  468. package/bundle/hkp-frontend/src/runtime/browser/services/Smooth.ts +101 -0
  469. package/bundle/hkp-frontend/src/runtime/browser/services/SmoothUI.tsx +50 -0
  470. package/bundle/hkp-frontend/src/runtime/browser/services/Sort.ts +59 -0
  471. package/bundle/hkp-frontend/src/runtime/browser/services/SortUI.tsx +61 -0
  472. package/bundle/hkp-frontend/src/runtime/browser/services/Sound.ts +541 -0
  473. package/bundle/hkp-frontend/src/runtime/browser/services/SoundUI.tsx +183 -0
  474. package/bundle/hkp-frontend/src/runtime/browser/services/SpeechSynth.ts +56 -0
  475. package/bundle/hkp-frontend/src/runtime/browser/services/SpeechSynthUI.tsx +108 -0
  476. package/bundle/hkp-frontend/src/runtime/browser/services/Spotify.tsx +111 -0
  477. package/bundle/hkp-frontend/src/runtime/browser/services/SpotifyAPI.ts +113 -0
  478. package/bundle/hkp-frontend/src/runtime/browser/services/SpotifyComponents.tsx +104 -0
  479. package/bundle/hkp-frontend/src/runtime/browser/services/SpotifyUI.tsx +186 -0
  480. package/bundle/hkp-frontend/src/runtime/browser/services/Spread.ts +117 -0
  481. package/bundle/hkp-frontend/src/runtime/browser/services/SpreadUI.tsx +38 -0
  482. package/bundle/hkp-frontend/src/runtime/browser/services/Sql.ts +448 -0
  483. package/bundle/hkp-frontend/src/runtime/browser/services/SqlInspector.tsx +332 -0
  484. package/bundle/hkp-frontend/src/runtime/browser/services/SqlUI.tsx +226 -0
  485. package/bundle/hkp-frontend/src/runtime/browser/services/State.ts +149 -0
  486. package/bundle/hkp-frontend/src/runtime/browser/services/Stopper.ts +29 -0
  487. package/bundle/hkp-frontend/src/runtime/browser/services/Switch.tsx +419 -0
  488. package/bundle/hkp-frontend/src/runtime/browser/services/SwitchUI.tsx +171 -0
  489. package/bundle/hkp-frontend/src/runtime/browser/services/TickRuleDelta.ts +101 -0
  490. package/bundle/hkp-frontend/src/runtime/browser/services/TickRuleDeltaUI.tsx +56 -0
  491. package/bundle/hkp-frontend/src/runtime/browser/services/Timeline.ts +709 -0
  492. package/bundle/hkp-frontend/src/runtime/browser/services/TimelineUI/TimelinePanel.tsx +79 -0
  493. package/bundle/hkp-frontend/src/runtime/browser/services/TimelineUI/TimelineRows.tsx +574 -0
  494. package/bundle/hkp-frontend/src/runtime/browser/services/TimelineUI/Transport.tsx +141 -0
  495. package/bundle/hkp-frontend/src/runtime/browser/services/TimelineUI/index.tsx +119 -0
  496. package/bundle/hkp-frontend/src/runtime/browser/services/TimelineUI/model.ts +425 -0
  497. package/bundle/hkp-frontend/src/runtime/browser/services/TimelineUI/parts.tsx +708 -0
  498. package/bundle/hkp-frontend/src/runtime/browser/services/Timer.ts +15 -0
  499. package/bundle/hkp-frontend/src/runtime/browser/services/TimerUI.tsx +213 -0
  500. package/bundle/hkp-frontend/src/runtime/browser/services/TracksUI.tsx +81 -0
  501. package/bundle/hkp-frontend/src/runtime/browser/services/TriggerPad.ts +108 -0
  502. package/bundle/hkp-frontend/src/runtime/browser/services/TriggerPadUI.tsx +160 -0
  503. package/bundle/hkp-frontend/src/runtime/browser/services/UuidGenerator.ts +74 -0
  504. package/bundle/hkp-frontend/src/runtime/browser/services/UuidGeneratorUI.tsx +59 -0
  505. package/bundle/hkp-frontend/src/runtime/browser/services/WaveformDisplay.tsx +104 -0
  506. package/bundle/hkp-frontend/src/runtime/browser/services/WebsocketClient.ts +114 -0
  507. package/bundle/hkp-frontend/src/runtime/browser/services/WebsocketClientUI.tsx +42 -0
  508. package/bundle/hkp-frontend/src/runtime/browser/services/WorkflowBoardBuilder.ts +499 -0
  509. package/bundle/hkp-frontend/src/runtime/browser/services/WorkflowBoardBuilderUI.tsx +521 -0
  510. package/bundle/hkp-frontend/src/runtime/browser/services/XYPad.ts +68 -0
  511. package/bundle/hkp-frontend/src/runtime/browser/services/XYPadUI.tsx +274 -0
  512. package/bundle/hkp-frontend/src/runtime/browser/services/audio/audioHelper.ts +36 -0
  513. package/bundle/hkp-frontend/src/runtime/browser/services/base/Batcher.ts +76 -0
  514. package/bundle/hkp-frontend/src/runtime/browser/services/base/Buffer.ts +142 -0
  515. package/bundle/hkp-frontend/src/runtime/browser/services/base/Filter.ts +125 -0
  516. package/bundle/hkp-frontend/src/runtime/browser/services/base/GroupBy.ts +101 -0
  517. package/bundle/hkp-frontend/src/runtime/browser/services/base/Map.ts +543 -0
  518. package/bundle/hkp-frontend/src/runtime/browser/services/base/MatchFilter.ts +49 -0
  519. package/bundle/hkp-frontend/src/runtime/browser/services/base/Monitor.ts +75 -0
  520. package/bundle/hkp-frontend/src/runtime/browser/services/base/Reduce.ts +74 -0
  521. package/bundle/hkp-frontend/src/runtime/browser/services/base/Timer.ts +342 -0
  522. package/bundle/hkp-frontend/src/runtime/browser/services/base/bundle.js +7375 -0
  523. package/bundle/hkp-frontend/src/runtime/browser/services/base/eval.ts +208 -0
  524. package/bundle/hkp-frontend/src/runtime/browser/services/base/expressionEval.ts +223 -0
  525. package/bundle/hkp-frontend/src/runtime/browser/services/base/helpers.ts +10 -0
  526. package/bundle/hkp-frontend/src/runtime/browser/services/base/index.ts +37 -0
  527. package/bundle/hkp-frontend/src/runtime/browser/services/camera/videoCapture.ts +78 -0
  528. package/bundle/hkp-frontend/src/runtime/browser/services/changes-modes.ts +9 -0
  529. package/bundle/hkp-frontend/src/runtime/browser/services/colorpalette.ts +26 -0
  530. package/bundle/hkp-frontend/src/runtime/browser/services/detect/DetectionPreview.tsx +76 -0
  531. package/bundle/hkp-frontend/src/runtime/browser/services/detect/mediapipe.ts +34 -0
  532. package/bundle/hkp-frontend/src/runtime/browser/services/detect/models/README.md +14 -0
  533. package/bundle/hkp-frontend/src/runtime/browser/services/detect/models/blaze_face_short_range.tflite +0 -0
  534. package/bundle/hkp-frontend/src/runtime/browser/services/detect-modes.ts +7 -0
  535. package/bundle/hkp-frontend/src/runtime/browser/services/encode-modes.ts +10 -0
  536. package/bundle/hkp-frontend/src/runtime/browser/services/helpers.ts +300 -0
  537. package/bundle/hkp-frontend/src/runtime/browser/services/http-client-methods.ts +10 -0
  538. package/bundle/hkp-frontend/src/runtime/browser/services/sql-database.ts +594 -0
  539. package/bundle/hkp-frontend/src/runtime/browser/services/sql-dump.ts +192 -0
  540. package/bundle/hkp-frontend/src/runtime/browser/services/sql-inspect.ts +130 -0
  541. package/bundle/hkp-frontend/src/runtime/browser/services/sql-inspector.css +155 -0
  542. package/bundle/hkp-frontend/src/runtime/browser/services/sql-modes.ts +27 -0
  543. package/bundle/hkp-frontend/src/runtime/browser/services/tests/TESTING_APPROACH.md +169 -0
  544. package/bundle/hkp-frontend/src/runtime/browser/services/tests/__snapshots__/service-ui.future-enhancements.test.tsx.snap +5 -0
  545. package/bundle/hkp-frontend/src/runtime/browser/services/tests/audio-input-permissions.test.ts +42 -0
  546. package/bundle/hkp-frontend/src/runtime/browser/services/tests/audiolizeLanes.test.ts +70 -0
  547. package/bundle/hkp-frontend/src/runtime/browser/services/tests/browser-scopes.test.ts +305 -0
  548. package/bundle/hkp-frontend/src/runtime/browser/services/tests/cache-service.test.ts +53 -0
  549. package/bundle/hkp-frontend/src/runtime/browser/services/tests/camera-video-capture.test.ts +24 -0
  550. package/bundle/hkp-frontend/src/runtime/browser/services/tests/changes-service.test.ts +133 -0
  551. package/bundle/hkp-frontend/src/runtime/browser/services/tests/crypto-secrets.test.ts +196 -0
  552. package/bundle/hkp-frontend/src/runtime/browser/services/tests/detect-service.test.ts +119 -0
  553. package/bundle/hkp-frontend/src/runtime/browser/services/tests/download.test.ts +100 -0
  554. package/bundle/hkp-frontend/src/runtime/browser/services/tests/expressionEval.test.ts +117 -0
  555. package/bundle/hkp-frontend/src/runtime/browser/services/tests/fetcher-panel.test.tsx +35 -0
  556. package/bundle/hkp-frontend/src/runtime/browser/services/tests/fetcher-service.test.ts +80 -0
  557. package/bundle/hkp-frontend/src/runtime/browser/services/tests/filter-service.test.ts +37 -0
  558. package/bundle/hkp-frontend/src/runtime/browser/services/tests/github-secrets.test.ts +108 -0
  559. package/bundle/hkp-frontend/src/runtime/browser/services/tests/group-by-board.test.ts +42 -0
  560. package/bundle/hkp-frontend/src/runtime/browser/services/tests/hold-service.test.ts +199 -0
  561. package/bundle/hkp-frontend/src/runtime/browser/services/tests/http-client-service.test.ts +474 -0
  562. package/bundle/hkp-frontend/src/runtime/browser/services/tests/http-uploader-token-injector.test.ts +152 -0
  563. package/bundle/hkp-frontend/src/runtime/browser/services/tests/iterator-gather-service.test.ts +277 -0
  564. package/bundle/hkp-frontend/src/runtime/browser/services/tests/map-service.test.ts +1047 -0
  565. package/bundle/hkp-frontend/src/runtime/browser/services/tests/map-ui.test.tsx +70 -0
  566. package/bundle/hkp-frontend/src/runtime/browser/services/tests/nested-rhythm-board.test.ts +311 -0
  567. package/bundle/hkp-frontend/src/runtime/browser/services/tests/night-groove-board.test.ts +290 -0
  568. package/bundle/hkp-frontend/src/runtime/browser/services/tests/pad-groove-board.test.ts +230 -0
  569. package/bundle/hkp-frontend/src/runtime/browser/services/tests/peer-host-discovery.test.ts +77 -0
  570. package/bundle/hkp-frontend/src/runtime/browser/services/tests/peer-socket-discovery.test.ts +69 -0
  571. package/bundle/hkp-frontend/src/runtime/browser/services/tests/pipeline-names.test.ts +63 -0
  572. package/bundle/hkp-frontend/src/runtime/browser/services/tests/secret-canary.test.ts +121 -0
  573. package/bundle/hkp-frontend/src/runtime/browser/services/tests/service-modules.contract.test.ts +229 -0
  574. package/bundle/hkp-frontend/src/runtime/browser/services/tests/service-ui.advanced.test.tsx +670 -0
  575. package/bundle/hkp-frontend/src/runtime/browser/services/tests/service-ui.future-enhancements.test.tsx +219 -0
  576. package/bundle/hkp-frontend/src/runtime/browser/services/tests/service-ui.integration.test.tsx +432 -0
  577. package/bundle/hkp-frontend/src/runtime/browser/services/tests/service-ui.smoke.test.tsx +140 -0
  578. package/bundle/hkp-frontend/src/runtime/browser/services/tests/sound-service.test.ts +293 -0
  579. package/bundle/hkp-frontend/src/runtime/browser/services/tests/spread-service.test.ts +137 -0
  580. package/bundle/hkp-frontend/src/runtime/browser/services/tests/sql-dump.test.ts +172 -0
  581. package/bundle/hkp-frontend/src/runtime/browser/services/tests/sql-inspect.test.ts +163 -0
  582. package/bundle/hkp-frontend/src/runtime/browser/services/tests/sql-inspector.test.tsx +121 -0
  583. package/bundle/hkp-frontend/src/runtime/browser/services/tests/sql.test.ts +702 -0
  584. package/bundle/hkp-frontend/src/runtime/browser/services/tests/sub-service-in-block.test.tsx +84 -0
  585. package/bundle/hkp-frontend/src/runtime/browser/services/tests/switch-service.test.ts +254 -0
  586. package/bundle/hkp-frontend/src/runtime/browser/services/tests/timeline-board.test.ts +218 -0
  587. package/bundle/hkp-frontend/src/runtime/browser/services/tests/timeline-service.test.ts +1002 -0
  588. package/bundle/hkp-frontend/src/runtime/browser/services/tests/timeline-ui-model.test.ts +230 -0
  589. package/bundle/hkp-frontend/src/runtime/browser/services/tests/timeline-ui.test.tsx +371 -0
  590. package/bundle/hkp-frontend/src/runtime/browser/services/tests/timer-service.test.ts +902 -0
  591. package/bundle/hkp-frontend/src/runtime/browser/services/tests/tracks-service.test.ts +275 -0
  592. package/bundle/hkp-frontend/src/runtime/browser/services/tests/tracks-ui.test.tsx +126 -0
  593. package/bundle/hkp-frontend/src/runtime/browser/services/tests/triggerpad-recorder-board.test.ts +100 -0
  594. package/bundle/hkp-frontend/src/runtime/browser/services/tests/uuid-generator-service.test.ts +214 -0
  595. package/bundle/hkp-frontend/src/runtime/browser/services/timeline-core.ts +410 -0
  596. package/bundle/hkp-frontend/src/runtime/browser/services/workflow-prompt/DefaultWorkflowBoard.ts +90 -0
  597. package/bundle/hkp-frontend/src/runtime/browser/services/workflow-prompt/RefinementSession.ts +121 -0
  598. package/bundle/hkp-frontend/src/runtime/browser/services/workflow-prompt/SystemPromptCatalog.ts +245 -0
  599. package/bundle/hkp-frontend/src/runtime/browser/services/workflow-prompt/catalog/browser-service-specs.json +110 -0
  600. package/bundle/hkp-frontend/src/runtime/browser/services/workflow-prompt/catalog/runtime-capabilities.json +37 -0
  601. package/bundle/hkp-frontend/src/runtime/browser/tests/asset-service.test.ts +73 -0
  602. package/bundle/hkp-frontend/src/runtime/browser/tests/board-persistence.integration.test.tsx +391 -0
  603. package/bundle/hkp-frontend/src/runtime/browser/tests/browser-runtime.identity-binding.test.tsx +81 -0
  604. package/bundle/hkp-frontend/src/runtime/browser/tests/demo-boards.regression.test.tsx +386 -0
  605. package/bundle/hkp-frontend/src/runtime/browser/tests/failed-call-lifecycle.test.ts +56 -0
  606. package/bundle/hkp-frontend/src/runtime/browser/tests/http-client.integration.test.ts +146 -0
  607. package/bundle/hkp-frontend/src/runtime/browser/tests/nested-run.integration.test.ts +415 -0
  608. package/bundle/hkp-frontend/src/runtime/browser/tests/replay-next.test.ts +391 -0
  609. package/bundle/hkp-frontend/src/runtime/browser/tests/rerun.test.ts +71 -0
  610. package/bundle/hkp-frontend/src/runtime/browser/tests/run-no-input.test.ts +72 -0
  611. package/bundle/hkp-frontend/src/runtime/browser/tests/runtime-add.integration.test.tsx +256 -0
  612. package/bundle/hkp-frontend/src/runtime/browser/tests/runtime-operations.integration.test.tsx +310 -0
  613. package/bundle/hkp-frontend/src/runtime/browser/tests/runtime-processing.integration.test.ts +311 -0
  614. package/bundle/hkp-frontend/src/runtime/browser/tests/runtime-removal.integration.test.tsx +454 -0
  615. package/bundle/hkp-frontend/src/runtime/browser/tests/runtime-update.identity.integration.test.tsx +145 -0
  616. package/bundle/hkp-frontend/src/runtime/browser/tests/service-operations.integration.test.tsx +511 -0
  617. package/bundle/hkp-node/src/address.ts +72 -0
  618. package/bundle/hkp-node/src/assets.ts +582 -0
  619. package/bundle/hkp-node/src/auth.ts +369 -0
  620. package/bundle/hkp-node/src/callReport.ts +281 -0
  621. package/bundle/hkp-node/src/coordinator/auth.ts +85 -0
  622. package/bundle/hkp-node/src/coordinator/binaryFrame.ts +189 -0
  623. package/bundle/hkp-node/src/coordinator/boardStore.ts +0 -0
  624. package/bundle/hkp-node/src/coordinator/bridge.ts +242 -0
  625. package/bundle/hkp-node/src/coordinator/bridgeProtocol.ts +200 -0
  626. package/bundle/hkp-node/src/coordinator/coordinator.ts +594 -0
  627. package/bundle/hkp-node/src/coordinator/facadeAccess.ts +426 -0
  628. package/bundle/hkp-node/src/coordinator/fileBoardStore.ts +159 -0
  629. package/bundle/hkp-node/src/coordinator/frameLimits.ts +41 -0
  630. package/bundle/hkp-node/src/coordinator/index.ts +12 -0
  631. package/bundle/hkp-node/src/coordinator/join.ts +62 -0
  632. package/bundle/hkp-node/src/coordinator/logStore.ts +335 -0
  633. package/bundle/hkp-node/src/coordinator/members.ts +133 -0
  634. package/bundle/hkp-node/src/coordinator/mount.ts +124 -0
  635. package/bundle/hkp-node/src/coordinator/participantProtocol.ts +169 -0
  636. package/bundle/hkp-node/src/coordinator/participants.ts +666 -0
  637. package/bundle/hkp-node/src/coordinator/router.ts +416 -0
  638. package/bundle/hkp-node/src/coordinator/session.ts +1610 -0
  639. package/bundle/hkp-node/src/coordinator/types.ts +95 -0
  640. package/bundle/hkp-node/src/coordinatorLinks.ts +712 -0
  641. package/bundle/hkp-node/src/credentialedFetch.ts +122 -0
  642. package/bundle/hkp-node/src/egress.ts +344 -0
  643. package/bundle/hkp-node/src/expressionEval.ts +223 -0
  644. package/bundle/hkp-node/src/index.ts +470 -0
  645. package/bundle/hkp-node/src/instance.ts +172 -0
  646. package/bundle/hkp-node/src/mounts.ts +296 -0
  647. package/bundle/hkp-node/src/origins.ts +201 -0
  648. package/bundle/hkp-node/src/reset.ts +187 -0
  649. package/bundle/hkp-node/src/runtime.ts +1345 -0
  650. package/bundle/hkp-node/src/secrets.ts +292 -0
  651. package/bundle/hkp-node/src/server.ts +2120 -0
  652. package/bundle/hkp-node/src/services/asset.ts +150 -0
  653. package/bundle/hkp-node/src/services/claudeModels.ts +370 -0
  654. package/bundle/hkp-node/src/services/communication-dispatcher.ts +735 -0
  655. package/bundle/hkp-node/src/services/conversations.ts +914 -0
  656. package/bundle/hkp-node/src/services/database.ts +386 -0
  657. package/bundle/hkp-node/src/services/document-extract.ts +575 -0
  658. package/bundle/hkp-node/src/services/expression.ts +417 -0
  659. package/bundle/hkp-node/src/services/fileStore.ts +369 -0
  660. package/bundle/hkp-node/src/services/filesystem.ts +280 -0
  661. package/bundle/hkp-node/src/services/gather.ts +335 -0
  662. package/bundle/hkp-node/src/services/hold.ts +275 -0
  663. package/bundle/hkp-node/src/services/http-client.ts +525 -0
  664. package/bundle/hkp-node/src/services/http-server.ts +1222 -0
  665. package/bundle/hkp-node/src/services/imap-email.ts +627 -0
  666. package/bundle/hkp-node/src/services/injector.ts +135 -0
  667. package/bundle/hkp-node/src/services/iterator.ts +203 -0
  668. package/bundle/hkp-node/src/services/join.ts +226 -0
  669. package/bundle/hkp-node/src/services/map.ts +632 -0
  670. package/bundle/hkp-node/src/services/monitor.ts +128 -0
  671. package/bundle/hkp-node/src/services/nested-pipeline.ts +405 -0
  672. package/bundle/hkp-node/src/services/peer-server.ts +268 -0
  673. package/bundle/hkp-node/src/services/queue-store.ts +301 -0
  674. package/bundle/hkp-node/src/services/queue.ts +316 -0
  675. package/bundle/hkp-node/src/services/recordStore.ts +341 -0
  676. package/bundle/hkp-node/src/services/rss-parse.ts +281 -0
  677. package/bundle/hkp-node/src/services/rss.ts +392 -0
  678. package/bundle/hkp-node/src/services/smtp-email.ts +398 -0
  679. package/bundle/hkp-node/src/services/spread.ts +153 -0
  680. package/bundle/hkp-node/src/services/sql-dump.ts +192 -0
  681. package/bundle/hkp-node/src/services/sql.ts +429 -0
  682. package/bundle/hkp-node/src/services/stopper.ts +69 -0
  683. package/bundle/hkp-node/src/services/storage.ts +332 -0
  684. package/bundle/hkp-node/src/services/store.ts +609 -0
  685. package/bundle/hkp-node/src/services/stream.ts +367 -0
  686. package/bundle/hkp-node/src/services/sub-service.ts +600 -0
  687. package/bundle/hkp-node/src/services/telegram-listener.ts +263 -0
  688. package/bundle/hkp-node/src/services/telegram-sender.ts +136 -0
  689. package/bundle/hkp-node/src/services/text-generation.ts +1249 -0
  690. package/bundle/hkp-node/src/services/timer.ts +273 -0
  691. package/bundle/hkp-node/src/services/tracks.ts +381 -0
  692. package/bundle/hkp-node/src/services/websocket-reader.ts +364 -0
  693. package/bundle/hkp-node/src/types.ts +465 -0
  694. package/bundle/hkp-node/src/wsTickets.ts +77 -0
  695. package/bundle/hkp-node/src/yas.ts +95 -0
  696. package/bundle/hkp-python/src/hkp/__init__.py +1 -0
  697. package/bundle/hkp-python/src/hkp/__main__.py +241 -0
  698. package/bundle/hkp-python/src/hkp/address.py +56 -0
  699. package/bundle/hkp-python/src/hkp/assets.py +439 -0
  700. package/bundle/hkp-python/src/hkp/auth.py +252 -0
  701. package/bundle/hkp-python/src/hkp/binary_frame.py +100 -0
  702. package/bundle/hkp-python/src/hkp/call_report.py +201 -0
  703. package/bundle/hkp-python/src/hkp/coordinator_links.py +667 -0
  704. package/bundle/hkp-python/src/hkp/data.py +118 -0
  705. package/bundle/hkp-python/src/hkp/egress.py +310 -0
  706. package/bundle/hkp-python/src/hkp/mount.py +46 -0
  707. package/bundle/hkp-python/src/hkp/mounts.py +288 -0
  708. package/bundle/hkp-python/src/hkp/origins.py +169 -0
  709. package/bundle/hkp-python/src/hkp/runtime.py +1131 -0
  710. package/bundle/hkp-python/src/hkp/secrets.py +261 -0
  711. package/bundle/hkp-python/src/hkp/server.py +1714 -0
  712. package/bundle/hkp-python/src/hkp/services/__init__.py +0 -0
  713. package/bundle/hkp-python/src/hkp/services/asset.py +123 -0
  714. package/bundle/hkp-python/src/hkp/services/audio_encode.py +190 -0
  715. package/bundle/hkp-python/src/hkp/services/expression.py +942 -0
  716. package/bundle/hkp-python/src/hkp/services/gather.py +266 -0
  717. package/bundle/hkp-python/src/hkp/services/hold.py +246 -0
  718. package/bundle/hkp-python/src/hkp/services/http_client.py +444 -0
  719. package/bundle/hkp-python/src/hkp/services/http_server.py +790 -0
  720. package/bundle/hkp-python/src/hkp/services/iterator.py +141 -0
  721. package/bundle/hkp-python/src/hkp/services/join.py +173 -0
  722. package/bundle/hkp-python/src/hkp/services/map_service.py +452 -0
  723. package/bundle/hkp-python/src/hkp/services/monitor.py +99 -0
  724. package/bundle/hkp-python/src/hkp/services/nested_pipeline.py +278 -0
  725. package/bundle/hkp-python/src/hkp/services/skill_router.py +388 -0
  726. package/bundle/hkp-python/src/hkp/services/speech_to_text.py +186 -0
  727. package/bundle/hkp-python/src/hkp/services/spread.py +114 -0
  728. package/bundle/hkp-python/src/hkp/services/stopper.py +59 -0
  729. package/bundle/hkp-python/src/hkp/services/sub_service.py +417 -0
  730. package/bundle/hkp-python/src/hkp/services/text_generation.py +498 -0
  731. package/bundle/hkp-python/src/hkp/services/text_to_speech.py +237 -0
  732. package/bundle/hkp-python/src/hkp/services/timer.py +267 -0
  733. package/bundle/hkp-python/src/hkp/services/tracks.py +251 -0
  734. package/bundle/hkp-python/src/hkp/types.py +412 -0
  735. package/bundle/hkp-python/src/hkp/ws_tickets.py +54 -0
  736. package/bundle/hkp-python/src/hkp/yas.py +192 -0
  737. package/bundle/hkp-rt/lib/CMakeLists.txt +193 -0
  738. package/bundle/hkp-rt/lib/hkp-bundles/CMakeLists.txt +55 -0
  739. package/bundle/hkp-rt/lib/hkp-bundles/plugin_register.cpp +14 -0
  740. package/bundle/hkp-rt/lib/include/app.h +201 -0
  741. package/bundle/hkp-rt/lib/include/assets.h +239 -0
  742. package/bundle/hkp-rt/lib/include/auth.h +167 -0
  743. package/bundle/hkp-rt/lib/include/call_report.h +197 -0
  744. package/bundle/hkp-rt/lib/include/coordinator_links.h +127 -0
  745. package/bundle/hkp-rt/lib/include/discovery_hooks.h +29 -0
  746. package/bundle/hkp-rt/lib/include/egress.h +379 -0
  747. package/bundle/hkp-rt/lib/include/files.h +275 -0
  748. package/bundle/hkp-rt/lib/include/log_entry.h +131 -0
  749. package/bundle/hkp-rt/lib/include/mounts.h +139 -0
  750. package/bundle/hkp-rt/lib/include/origins.h +363 -0
  751. package/bundle/hkp-rt/lib/include/registry.h +119 -0
  752. package/bundle/hkp-rt/lib/include/secrets.h +414 -0
  753. package/bundle/hkp-rt/lib/include/server.h +122 -0
  754. package/bundle/hkp-rt/lib/include/service.h +190 -0
  755. package/bundle/hkp-rt/lib/include/slot_store.h +41 -0
  756. package/bundle/hkp-rt/lib/include/standalone_config.h +253 -0
  757. package/bundle/hkp-rt/lib/include/types/audio.h +3 -0
  758. package/bundle/hkp-rt/lib/include/types/data.h +152 -0
  759. package/bundle/hkp-rt/lib/include/types/message.h +56 -0
  760. package/bundle/hkp-rt/lib/include/types/models.h +154 -0
  761. package/bundle/hkp-rt/lib/include/types/owns_me.h +19 -0
  762. package/bundle/hkp-rt/lib/include/types/ringbuffer.h +86 -0
  763. package/bundle/hkp-rt/lib/include/types/types.h +33 -0
  764. package/bundle/hkp-rt/lib/include/types/validation.h +205 -0
  765. package/bundle/hkp-rt/lib/src/address.h +88 -0
  766. package/bundle/hkp-rt/lib/src/app.cpp +591 -0
  767. package/bundle/hkp-rt/lib/src/assets.cpp +686 -0
  768. package/bundle/hkp-rt/lib/src/binary_frame.h +154 -0
  769. package/bundle/hkp-rt/lib/src/common/expression.h +1481 -0
  770. package/bundle/hkp-rt/lib/src/common/inja.h +36 -0
  771. package/bundle/hkp-rt/lib/src/common/link_socket.cpp +437 -0
  772. package/bundle/hkp-rt/lib/src/common/link_socket.h +97 -0
  773. package/bundle/hkp-rt/lib/src/common/realtime_wakeup.h +120 -0
  774. package/bundle/hkp-rt/lib/src/common/stream_broadcast.h +250 -0
  775. package/bundle/hkp-rt/lib/src/common/string_util.h +31 -0
  776. package/bundle/hkp-rt/lib/src/common/websocket_client_session.cpp +217 -0
  777. package/bundle/hkp-rt/lib/src/common/websocket_client_session.h +37 -0
  778. package/bundle/hkp-rt/lib/src/common/websocket_config.h +119 -0
  779. package/bundle/hkp-rt/lib/src/common/websocket_protocol.h +32 -0
  780. package/bundle/hkp-rt/lib/src/common/websocket_server.cpp +82 -0
  781. package/bundle/hkp-rt/lib/src/common/websocket_server.h +57 -0
  782. package/bundle/hkp-rt/lib/src/common/websocket_server_listener.cpp +115 -0
  783. package/bundle/hkp-rt/lib/src/common/websocket_server_listener.h +35 -0
  784. package/bundle/hkp-rt/lib/src/common/websocket_server_session.cpp +172 -0
  785. package/bundle/hkp-rt/lib/src/common/websocket_server_session.h +53 -0
  786. package/bundle/hkp-rt/lib/src/common.h +13 -0
  787. package/bundle/hkp-rt/lib/src/coordinator_links.cpp +1142 -0
  788. package/bundle/hkp-rt/lib/src/discovery/discovery.cpp +707 -0
  789. package/bundle/hkp-rt/lib/src/discovery/discovery.h +89 -0
  790. package/bundle/hkp-rt/lib/src/http/auth.cpp +569 -0
  791. package/bundle/hkp-rt/lib/src/http/front_door.cpp +518 -0
  792. package/bundle/hkp-rt/lib/src/http/front_door.h +131 -0
  793. package/bundle/hkp-rt/lib/src/http/server.cpp +1539 -0
  794. package/bundle/hkp-rt/lib/src/http/ws_tickets.h +125 -0
  795. package/bundle/hkp-rt/lib/src/mount.h +63 -0
  796. package/bundle/hkp-rt/lib/src/process_context.h +335 -0
  797. package/bundle/hkp-rt/lib/src/process_depth.h +20 -0
  798. package/bundle/hkp-rt/lib/src/registry.cpp +233 -0
  799. package/bundle/hkp-rt/lib/src/runtime.cpp +986 -0
  800. package/bundle/hkp-rt/lib/src/runtime.h +225 -0
  801. package/bundle/hkp-rt/lib/src/runtime_host.h +180 -0
  802. package/bundle/hkp-rt/lib/src/service.cpp +315 -0
  803. package/bundle/hkp-rt/lib/src/services/asset.h +185 -0
  804. package/bundle/hkp-rt/lib/src/services/audio_encode.cpp +372 -0
  805. package/bundle/hkp-rt/lib/src/services/audio_encode.h +97 -0
  806. package/bundle/hkp-rt/lib/src/services/cache.h +362 -0
  807. package/bundle/hkp-rt/lib/src/services/cache_subservices.h +463 -0
  808. package/bundle/hkp-rt/lib/src/services/core_audio.cpp +384 -0
  809. package/bundle/hkp-rt/lib/src/services/core_audio.h +22 -0
  810. package/bundle/hkp-rt/lib/src/services/core_input.h +337 -0
  811. package/bundle/hkp-rt/lib/src/services/core_output.h +370 -0
  812. package/bundle/hkp-rt/lib/src/services/ffmpeg/detail.cpp +749 -0
  813. package/bundle/hkp-rt/lib/src/services/ffmpeg/detail.h +29 -0
  814. package/bundle/hkp-rt/lib/src/services/ffmpeg/ffmpeg.cpp +193 -0
  815. package/bundle/hkp-rt/lib/src/services/ffmpeg/ffmpeg.h +40 -0
  816. package/bundle/hkp-rt/lib/src/services/ffmpeg/types.h +120 -0
  817. package/bundle/hkp-rt/lib/src/services/fft_service.h +190 -0
  818. package/bundle/hkp-rt/lib/src/services/filesystem.h +309 -0
  819. package/bundle/hkp-rt/lib/src/services/filter.h +208 -0
  820. package/bundle/hkp-rt/lib/src/services/gather.h +272 -0
  821. package/bundle/hkp-rt/lib/src/services/hold.h +304 -0
  822. package/bundle/hkp-rt/lib/src/services/http_client.cpp +347 -0
  823. package/bundle/hkp-rt/lib/src/services/http_client.h +67 -0
  824. package/bundle/hkp-rt/lib/src/services/http_client_impl.h +45 -0
  825. package/bundle/hkp-rt/lib/src/services/http_client_template_examples.md +202 -0
  826. package/bundle/hkp-rt/lib/src/services/http_server/http_listener.cpp +130 -0
  827. package/bundle/hkp-rt/lib/src/services/http_server/http_listener.h +33 -0
  828. package/bundle/hkp-rt/lib/src/services/http_server/http_server.cpp +351 -0
  829. package/bundle/hkp-rt/lib/src/services/http_server/http_server.h +79 -0
  830. package/bundle/hkp-rt/lib/src/services/http_server/http_server_impl.cpp +230 -0
  831. package/bundle/hkp-rt/lib/src/services/http_server/http_server_impl.h +64 -0
  832. package/bundle/hkp-rt/lib/src/services/http_server/http_server_subservices.cpp +950 -0
  833. package/bundle/hkp-rt/lib/src/services/http_server/http_server_subservices.h +253 -0
  834. package/bundle/hkp-rt/lib/src/services/http_server/http_session.cpp +495 -0
  835. package/bundle/hkp-rt/lib/src/services/http_server/http_session.h +169 -0
  836. package/bundle/hkp-rt/lib/src/services/http_server/http_stream_listener.cpp +270 -0
  837. package/bundle/hkp-rt/lib/src/services/http_server/http_stream_listener.h +104 -0
  838. package/bundle/hkp-rt/lib/src/services/http_server/request_decode.h +164 -0
  839. package/bundle/hkp-rt/lib/src/services/if_service.h +210 -0
  840. package/bundle/hkp-rt/lib/src/services/ifft_service.h +198 -0
  841. package/bundle/hkp-rt/lib/src/services/injector.h +162 -0
  842. package/bundle/hkp-rt/lib/src/services/iterator.h +201 -0
  843. package/bundle/hkp-rt/lib/src/services/map.h +641 -0
  844. package/bundle/hkp-rt/lib/src/services/monitor.h +161 -0
  845. package/bundle/hkp-rt/lib/src/services/mp3_frames.h +119 -0
  846. package/bundle/hkp-rt/lib/src/services/mp4_to_wav.cpp +281 -0
  847. package/bundle/hkp-rt/lib/src/services/mp4_to_wav.h +263 -0
  848. package/bundle/hkp-rt/lib/src/services/peer_server/peer_registry.cpp +88 -0
  849. package/bundle/hkp-rt/lib/src/services/peer_server/peer_registry.h +43 -0
  850. package/bundle/hkp-rt/lib/src/services/peer_server/peer_server.h +163 -0
  851. package/bundle/hkp-rt/lib/src/services/peer_server/peer_server_listener.cpp +133 -0
  852. package/bundle/hkp-rt/lib/src/services/peer_server/peer_server_listener.h +46 -0
  853. package/bundle/hkp-rt/lib/src/services/peer_server/peer_server_session.cpp +165 -0
  854. package/bundle/hkp-rt/lib/src/services/peer_server/peer_server_session.h +44 -0
  855. package/bundle/hkp-rt/lib/src/services/peer_server/peer_ws_session.cpp +184 -0
  856. package/bundle/hkp-rt/lib/src/services/peer_server/peer_ws_session.h +55 -0
  857. package/bundle/hkp-rt/lib/src/services/receiver_session.h +172 -0
  858. package/bundle/hkp-rt/lib/src/services/root_certificates.h +3959 -0
  859. package/bundle/hkp-rt/lib/src/services/sha256_openssl.h +49 -0
  860. package/bundle/hkp-rt/lib/src/services/speech_http.h +306 -0
  861. package/bundle/hkp-rt/lib/src/services/speech_to_text.cpp +595 -0
  862. package/bundle/hkp-rt/lib/src/services/speech_to_text.h +69 -0
  863. package/bundle/hkp-rt/lib/src/services/static.cpp +45 -0
  864. package/bundle/hkp-rt/lib/src/services/static.h +41 -0
  865. package/bundle/hkp-rt/lib/src/services/stopper.h +72 -0
  866. package/bundle/hkp-rt/lib/src/services/sub_service.h +286 -0
  867. package/bundle/hkp-rt/lib/src/services/text_generation.cpp +1132 -0
  868. package/bundle/hkp-rt/lib/src/services/text_generation.h +71 -0
  869. package/bundle/hkp-rt/lib/src/services/text_to_speech.cpp +853 -0
  870. package/bundle/hkp-rt/lib/src/services/text_to_speech.h +97 -0
  871. package/bundle/hkp-rt/lib/src/services/timer.h +300 -0
  872. package/bundle/hkp-rt/lib/src/services/tracks.h +397 -0
  873. package/bundle/hkp-rt/lib/src/services/tts_inflect.cpp +149 -0
  874. package/bundle/hkp-rt/lib/src/services/tts_inflect.h +82 -0
  875. package/bundle/hkp-rt/lib/src/services/wav_reader.h +213 -0
  876. package/bundle/hkp-rt/lib/src/services/websocket_client_service.h +182 -0
  877. package/bundle/hkp-rt/lib/src/services/websocket_reader.h +148 -0
  878. package/bundle/hkp-rt/lib/src/services/websocket_server_service.h +196 -0
  879. package/bundle/hkp-rt/lib/src/services/websocket_writer.cpp +641 -0
  880. package/bundle/hkp-rt/lib/src/services/websocket_writer.h +117 -0
  881. package/bundle/hkp-rt/lib/src/sub_runtime.cpp +234 -0
  882. package/bundle/hkp-rt/lib/src/sub_runtime.h +160 -0
  883. package/bundle/hkp-rt/lib/src/types/data.cpp +237 -0
  884. package/bundle/hkp-rt/lib/src/types/message.cpp +148 -0
  885. package/bundle/hkp-rt/lib/src/types/models.cpp +83 -0
  886. package/bundle/hkp-rt/lib/src/types/ringbuffer.cpp +336 -0
  887. package/bundle/hkp-rt/lib/src/uuid.h +12 -0
  888. package/bundle/readymade-mcp-commits.json +5 -0
  889. package/dist/cli.d.ts +3 -0
  890. package/dist/cli.d.ts.map +1 -0
  891. package/dist/cli.js +79 -0
  892. package/dist/git.d.ts +8 -0
  893. package/dist/git.d.ts.map +1 -0
  894. package/dist/git.js +53 -0
  895. package/dist/http.d.ts +17 -0
  896. package/dist/http.d.ts.map +1 -0
  897. package/dist/http.js +130 -0
  898. package/dist/index.d.ts +7 -0
  899. package/dist/index.d.ts.map +1 -0
  900. package/dist/index.js +6 -0
  901. package/dist/repository.d.ts +49 -0
  902. package/dist/repository.d.ts.map +1 -0
  903. package/dist/repository.js +452 -0
  904. package/dist/schemas.d.ts +156 -0
  905. package/dist/schemas.d.ts.map +1 -0
  906. package/dist/schemas.js +43 -0
  907. package/dist/server.d.ts +4 -0
  908. package/dist/server.d.ts.map +1 -0
  909. package/dist/server.js +83 -0
  910. package/dist/types.d.ts +63 -0
  911. package/dist/types.d.ts.map +1 -0
  912. package/dist/types.js +20 -0
  913. package/dist/validation.d.ts +9 -0
  914. package/dist/validation.d.ts.map +1 -0
  915. package/dist/validation.js +101 -0
  916. package/package.json +52 -4
@@ -0,0 +1,263 @@
1
+ # Testing
2
+
3
+ What runs where — the per-area suites that check the parts, and the end-to-end suite that checks the thing a person actually touches.
4
+
5
+ ---
6
+
7
+ ## Two layers, two different questions
8
+
9
+ The suites answer different questions, and knowing which is which saves writing
10
+ a test in the wrong place:
11
+
12
+ | | Asks | Runs in | Takes |
13
+ |---|---|---|---|
14
+ | **Per-area suites** | Does this part behave? | its own process — jsdom, pytest, ctest | seconds to a couple of minutes |
15
+ | **End-to-end** | Does the app a person opens work? | a real browser, on each host it ships inside | minutes |
16
+
17
+ A rule that follows: anything expressible without a browser belongs in a
18
+ per-area suite, because that is where a failure names the function that broke.
19
+ The end-to-end suite is for what only exists once everything is assembled — a
20
+ board opening, a shell mounting, a pipeline actually running.
21
+
22
+ ---
23
+
24
+ ## The per-area suites
25
+
26
+ `run-all-tests.sh` at the root runs all seven, in order:
27
+
28
+ | Area | Framework | Its own command | What it holds |
29
+ |---|---|---|---|
30
+ | hkp-python | pytest | `./run_tests.sh` | runtime, services, auth, mounts, the board log |
31
+ | hkp-node | vitest | `npm test` | the same ground, plus the coordinator and its stores |
32
+ | hkp-rt | Catch2 + ctest | `./run-tests.sh` | the C++ runtime and its services |
33
+ | Readymade app backend | Catch2 | `./run-tests.sh` | the desktop shell's rules — routing, settings, grants, the share inbox |
34
+ | hkp-frontend demo boards | vitest | `npm run test -- src/runtime/browser/tests/demo-boards.regression.test.tsx` | every board in `boards/`, checked against the registry |
35
+ | hkp-frontend | vitest | `npm run test -- --exclude …` | everything else in the frontend |
36
+ | readymade-mcp | tsc + vitest | `npm run typecheck && npm test` | the MCP knowledge server: its index of `docs/content` and `boards/`, path confinement, contracts — including that every service page is readable as one |
37
+
38
+ Two things about the runner are deliberate. It **does not stop at the first
39
+ failure** — it records a pass or fail per suite and prints the table at the end,
40
+ so one run tells you everything that is broken rather than the first thing. And
41
+ each suite is also runnable on its own, from its own directory, which is what
42
+ you want while working inside one.
43
+
44
+ The desktop backend's suite is built **without saucer, vcpkg or hkp-rt** on
45
+ purpose: it covers rules the backend keeps apart from its webview-facing code,
46
+ so it compiles in seconds instead of requiring a full app build. That separation
47
+ is the reason those rules have tests at all.
48
+
49
+ `run-all-cpp-tests.sh` is the C++ half on its own, against an existing `./build`.
50
+
51
+ ---
52
+
53
+ ## End-to-end
54
+
55
+ `e2e/` holds one Playwright suite that drives the **same webapp as each of the
56
+ hosts it ships inside**:
57
+
58
+ | Project | App | Engine | Platform host |
59
+ |---|---|---|---|
60
+ | `web` | `hkp-frontend` | Chromium | none — signed out, no capabilities |
61
+ | `desktop` | `meander/frontend` | Chromium | fake saucer + `hkp://` scheme |
62
+ | `mobile` | `meander/frontend` | WebKit, iPhone descriptor | the same fake, mounting `MobileApp` |
63
+
64
+ ```
65
+ cd e2e
66
+ npm install && npx playwright install chromium webkit
67
+ npm test # all three profiles
68
+ npm run test:desktop # one of them
69
+ npm run test:ui # pick, watch, time-travel
70
+ npm run report # the last run
71
+ ```
72
+
73
+ The dev servers start themselves (`webServer` in `e2e/playwright.config.ts`) and
74
+ an already-running one is reused, so a `vite` you already have is picked up
75
+ rather than fought over.
76
+
77
+ A profile is a **host**, not a screen size. `mobile` runs WebKit on an iPhone
78
+ device descriptor because that is what the iOS app is — a WKWebView with real
79
+ touch — and the shell has gesture code that a synthetic click would skip
80
+ entirely. Writing a spec once and telling it which host it is on is what keeps
81
+ three targets from becoming three suites.
82
+
83
+ ### Standing in for the native side
84
+
85
+ `e2e/support/fakeNativeHost.ts` implements both surfaces the Readymade shells
86
+ reach the platform through: `window.saucer.exposed.*` (file dialogs, the secret
87
+ store) and `fetch("hkp://…")` (boards, remotes, settings, the start-page tree).
88
+
89
+ Two consequences worth knowing before writing a spec:
90
+
91
+ - **It is installed as a page init script, and has to be.** The app decides what
92
+ host it is on *while its modules evaluate* — `isMeanderApp()` memoises a single
93
+ `hkp://boards/` probe, and `MeanderPlatformProvider` reads `saucer.exposed` at
94
+ module scope. Anything installed after the first navigation produces a
95
+ confusing half-native app rather than a clean failure.
96
+ - **`page.route` cannot serve any of it.** `hkp://` is not http, so it never
97
+ reaches Playwright's proxy; wrapping `window.fetch` is the only way in.
98
+
99
+ What the host was asked to store is mirrored on `window.__HKP_FAKE_HOST__` and
100
+ reachable through the `hostState()` fixture, so a spec can assert on what the app
101
+ handed the platform rather than only on what the UI shows.
102
+
103
+ **The blind spot is the boundary itself.** Rename a `saucer.exposed` function or
104
+ change an `hkp://` route and this suite stays green while the shipped app
105
+ breaks. The fake is written against `BackendAdapter`, so TypeScript catches a
106
+ changed *shape* — a changed *route* needs a manual pass, done by hand.
107
+
108
+ ### The shipped-board sweep
109
+
110
+ `e2e/tests/smoke/shipped-boards.spec.ts` opens every browser-only board in
111
+ `boards/` and asserts that each service it declares renders a frame,
112
+ with no uncaught exception. `web` profile only — it asks about board JSON, not
113
+ about a host.
114
+
115
+ The bug it exists for is **drift**: when a board names a `serviceId` the registry
116
+ no longer has, `createService` logs an error and returns null, so the board still
117
+ opens looking fine, minus a piece. Nobody notices, including a person opening it
118
+ casually. Hence an assertion per declared uuid rather than "the page rendered".
119
+
120
+ It deliberately does not claim those boards *work* — many want a camera, a key or
121
+ a network — only that every part they are made of still exists. Boards with a
122
+ `rest` runtime are excluded, since a sweep has no business starting an hkp-node.
123
+ Known-broken boards are listed with a reason and marked `test.fail()` rather than
124
+ skipped: a listed board is *expected* to fail, so fixing one turns the run red
125
+ until its entry is removed. That is the only way a known failure ever gets
126
+ cleaned up.
127
+
128
+ ### Two checks on the same anxiety
129
+
130
+ Board drift is covered twice, at different depths, and both are worth keeping:
131
+
132
+ | | `demo-boards.regression.test.tsx` (vitest) | `shipped-boards.spec.ts` (Playwright) |
133
+ |---|---|---|
134
+ | Where | jsdom, no browser | the real app in a real browser |
135
+ | Asserts | the JSON is a valid descriptor, ids and uuids are unique, every browser `serviceId` resolves in the registry — nested ones too, as the board's blocks expand to them — and the board restores through `BoardProvider` | every declared service actually renders, and nothing threw |
136
+ | Costs | seconds | about a minute |
137
+
138
+ The first fails with the name of the service that went missing; the second
139
+ catches what only appears once a board is really mounted.
140
+
141
+ ### Capability checks
142
+
143
+ `e2e/tests/capabilities/` holds environment probes rather than product tests —
144
+ things the real specs stand on, worth failing in isolation instead of inside a
145
+ board. `webrtc.spec.ts` establishes a data channel between two browser contexts
146
+ with no signalling server, and is why `CHROMIUM_ARGS` exists: without
147
+ `--disable-features=WebRtcHideLocalIpsWithMdns`, Chrome hands out `.local`
148
+ candidates that two isolated contexts cannot resolve for each other, and pairing
149
+ never completes — silently.
150
+
151
+ ### The cloud specs
152
+
153
+ `e2e/tests/cloud/` deploys boards for real: a playground, a runtime server and a
154
+ coordinator. They need a third process, so they have a config of their own —
155
+ the fast suite above starts nothing but the two dev servers, and ignores this
156
+ directory.
157
+
158
+ ```bash
159
+ cd e2e
160
+ npm run test:cloud # playwright.cloud.config.ts
161
+ ```
162
+
163
+ That config starts one hkp-node on loopback as both runtime server and
164
+ coordinator, with every directory it would write to pointed at nowhere, and
165
+ runs the desktop shell against it. The shell is signed in by seeding the session
166
+ it reads at boot, and knows the runtime server as a remote through the fake
167
+ native host (`hostConfig.remotes`).
168
+
169
+ What it covers is what no mock can: a board that names a remote is resolved,
170
+ checked, introduced and registered; the runtime server connects to the
171
+ coordinator, which is told no address; an attached browser is told when that
172
+ server leaves and when it returns.
173
+
174
+ Across runtime servers the same path is covered below the browser:
175
+ `hkp-node/tests/coordinator-python.test.ts` starts hkp-python as its own process
176
+ and runs one board over both — skipped where hkp-python has no virtualenv.
177
+ `coordinator-rt.test.ts` does the same with the hkp-rt binary
178
+ (`hkp-rt/build-tests/exe/hkp-rt`, which `hkp-rt/run-tests.sh` builds; skipped
179
+ where it is absent), and also calls an endpoint mounted on it. Both pass bytes,
180
+ bytes with JSON beside them and a ring buffer through the other server and
181
+ compare what comes back.
182
+
183
+ ### People who sign in
184
+
185
+ The cloud specs run hkp-node without authentication, so everybody is the one
186
+ anonymous tenant and there is nobody to share a board with. Journeys that need
187
+ two people use real verification instead: `e2e/support/jwks-server.mjs` makes a
188
+ key pair per start and serves its public half, hkp-node is pointed at it with
189
+ `HKP_TEST_JWKS_URI` (honoured only from a checkout and only on loopback), and
190
+ `e2e/support/identities.ts` signs id tokens for whoever a spec names —
191
+ signature, audience and verified email all checked as Auth0's are. A second
192
+ person gets a context of their own through `prepareContext`
193
+ (`support/test.ts`), held to the same network rules as the first.
194
+
195
+ `e2e/playwright.film.config.ts` is the first user: the golden-path shoot
196
+ (`npm run film`), which deploys the court booking board as one person, books on
197
+ a phone as another and races them for the same hour. It is a filmed rehearsal
198
+ rather than a suite — never part of `npm test` — and writes stills for the
199
+ explainer video (`plans/TODO-GOLDEN-PATH-VIDEO.md`).
200
+
201
+ ### After a failure
202
+
203
+ `trace: retain-on-failure` means the failing run was already recorded:
204
+ `npx playwright show-trace <path>` replays it step by step with DOM snapshots,
205
+ including for a run that failed elsewhere. There is no need to reproduce it
206
+ first. `e2e/README.md` covers the ways of watching a run live.
207
+
208
+ ---
209
+
210
+ ## What CI runs
211
+
212
+ `.github/workflows/run-all-tests.yml` checks out with `submodules: false` and
213
+ runs **hkp-rt, hkp-frontend and readymade-mcp only** — the in-tree parts. The
214
+ MCP suite's assertions about runtime source need the submodules it indexes and
215
+ are skipped there. That is the repository
216
+ split showing through: the submodules answer for themselves, and a superproject
217
+ workflow that cloned them would be testing whatever commit they happened to be
218
+ on. See [Repository](./repository.md).
219
+
220
+ The end-to-end suite runs in the same workflow as two jobs:
221
+
222
+ - **E2E Node cloud** — the cloud specs against the hkp-node the superproject
223
+ pins (its one submodule checkout), C++ left out;
224
+ - **E2E browser** — the default suite on all three profiles, about nine
225
+ minutes.
226
+
227
+ In CI a test that passes only on retry fails the run.
228
+
229
+ The workflow runs when a change lands on main, and when someone starts it by
230
+ hand (Actions → Run workflow, on any branch). Pushing to a working branch or a
231
+ pull request runs nothing, so two things are worth knowing before merging:
232
+
233
+ - **nothing in CI has checked a branch** unless someone started the workflow
234
+ on it — `run-all-tests.sh` locally is the check before a merge;
235
+ - **hkp-node and hkp-python** are not covered by this workflow at all: their
236
+ suites run in their own repositories and in `run-all-tests.sh` locally.
237
+
238
+ ---
239
+
240
+ ## Where it lives
241
+
242
+ | Concern | Where |
243
+ |---|---|
244
+ | Every suite in one run | `run-all-tests.sh` |
245
+ | The C++ suites alone | `run-all-cpp-tests.sh` |
246
+ | End-to-end suite, profiles, dev servers | `e2e/playwright.config.ts`, `e2e/README.md` |
247
+ | Fake platform host | `e2e/support/fakeNativeHost.ts`, `e2e/support/test.ts` |
248
+ | Board drift, without a browser | `hkp-frontend/src/runtime/browser/tests/demo-boards.regression.test.tsx` |
249
+ | Board drift, in a browser | `e2e/tests/smoke/shipped-boards.spec.ts` |
250
+ | Blocks on the running board: the lock, params, detach, editing, making one, wrapping picked services | `e2e/tests/blocks.spec.ts` |
251
+ | Deploying to a real coordinator, in a browser | `e2e/playwright.cloud.config.ts`, `e2e/tests/cloud/deploy.spec.ts` |
252
+ | Runtime sockets opened with a ticket, never the token, in a browser | `e2e/tests/cloud/ws-tickets.spec.ts` |
253
+ | Signed-in people: test signing keys and id tokens | `e2e/support/jwks-server.mjs`, `e2e/support/identities.ts` |
254
+ | Two people on one deployed board, filmed | `e2e/playwright.film.config.ts`, `e2e/film/` |
255
+ | A board across hkp-node and hkp-python | `hkp-node/tests/coordinator-python.test.ts` |
256
+ | A board across hkp-node and hkp-rt; endpoints mounted on hkp-rt | `hkp-node/tests/coordinator-rt.test.ts` |
257
+ | What CI covers | `.github/workflows/run-all-tests.yml` |
258
+ | Why CI covers only part of it | [Repository](./repository.md) |
259
+
260
+ ---
261
+
262
+ See also: [Repository](./repository.md) for why the split between in-tree and
263
+ submodule decides what CI covers.
@@ -0,0 +1,171 @@
1
+ # Vocabulary
2
+
3
+ The words this project uses about itself, and what each one is in the code.
4
+
5
+ ---
6
+
7
+ ## What this is for
8
+
9
+ Every project grows a private language. Somebody says "the board menu", "a
10
+ mount", "the consent dialog" — and everyone in the room knows what is meant and
11
+ nobody could point at the file. That gap costs an afternoon when a new person
12
+ joins, and it costs an AI assistant far more: given a term it cannot resolve, it
13
+ will search, guess, and edit something adjacent.
14
+
15
+ So this is a lookup, not a tutorial. One line per term, saying what it is and
16
+ where it lives. It is deliberately **finer-grained than the concepts**: a concept
17
+ is an idea worth a page (`concepts/board.md`), while a term here can be a single
18
+ dialog. Every concept appears below, so that entering by either door works.
19
+
20
+ **It is written by people, not generated.** Which words matter, and which files
21
+ are the ones worth naming, is a judgment no scan can make — a directory listing
22
+ would be complete and useless. What is automated is the opposite half: checking,
23
+ against a changeset, whether what an entry points at has moved. See *Keeping it
24
+ true* at the end.
25
+
26
+ A reference is a path, sometimes with the symbol that matters:
27
+ `path/to/file.ts` or `path/to/file.ts#exportedName`. The first reference in a row
28
+ is the one to open first.
29
+
30
+ ---
31
+
32
+ ## The interface
33
+
34
+ Two bars are called a toolbar and two menus sit in one of them, so this section
35
+ is the one worth being pedantic in.
36
+
37
+ | Term | What it is | Where it lives |
38
+ |---|---|---|
39
+ | **Toolbar** | The bar above an open board: board menu, board name, status, view controls, share, app menu. | `hkp-frontend/src/components/Toolbar/index.tsx` |
40
+ | **TopBar** | The *start page's* bar — title, version badge, logo. A different bar in a different view; not the Toolbar. | `hkp-frontend/src/views/start/TopBar.tsx` |
41
+ | **AppMenu** | The application-level dropdown in the toolbar: account, dashboard, settings, log out. About the app, not the board. | `hkp-frontend/src/ui-components/toolbar/AppMenu.tsx`, `hkp-frontend/src/ui-components/SettingsDialog.tsx` |
42
+ | **BoardMenu** | The board-level dropdown beside it: save, load, and whatever else the host contributes through a `BoardMenuItemFactory`. About this board. | `hkp-frontend/src/ui-components/toolbar/BoardMenu.tsx`, `hkp-frontend/src/types.ts#BoardMenuItemFactory` |
43
+ | **ShareMenu** | The third dropdown in the toolbar: the ways a board is handed to somebody else — a self-contained link, cloud access by email, a partner board QR. What distinguishes it from the BoardMenu beside it is direction: that one operates on the board you have open, this one gives it away. | `hkp-frontend/src/components/Toolbar/ShareMenu.tsx` |
44
+ | **SaveBoardDialog** | Name and description on save, offering a suggested name. | `hkp-frontend/src/components/SaveBoardDialog.tsx` |
45
+ | **Start page** | The Finder-style entry view: sources in columns, boards inside them, details on the right. | `hkp-frontend/src/views/start/StartPage.tsx`, `hkp-frontend/src/views/start/ColumnBrowser.tsx` |
46
+ | **Source** | One column root on the start page — saved boards, demos, remotes, cloud boards. | `hkp-frontend/src/views/start/demosSource.ts`, `hkp-frontend/src/views/start/useCloudBoardsFolder.ts` |
47
+ | **Service panel** | A service's own UI, or the generic panel when it has none. | `hkp-frontend/src/runtime/browser/UIRegistry.ts` |
48
+ | **Board assistant** | Board Assist: a conversation beside the runtime canvas that reads the repository docs (or the `readymade-mcp` knowledge server), proposes changes to the whole board or one runtime, and applies a reviewed proposal — asking first when it would contact new addresses — with a revert to the previous configuration. → `concepts/board-assistant.md` | `hkp-frontend/src/assist/BoardAssistPanel.tsx`, `hkp-frontend/src/assist/scope.ts`, `hkp-frontend/src/assist/addresses.ts`, `hkp-frontend/src/assist/anthropic.ts`, `hkp-frontend/src/assist/mcpKnowledge.ts` |
49
+ | **Nested navigation** | Drilling into a sub-pipeline as its own layered level, with breadcrumbs; levels stay mounted so panels keep running. | `hkp-frontend/src/runtime/ui/NestedNavigation.tsx` |
50
+ | **Density** | The compact/comfortable axis, independent of the colour theme (`data-density`). | `hkp-frontend/src/ui-components/ThemeContext.tsx` |
51
+
52
+ ---
53
+
54
+ ## The board
55
+
56
+ | Term | What it is | Where it lives |
57
+ |---|---|---|
58
+ | **Board** | The top-level container: a named JSON document holding runtimes, their services and an optional facade. → `concepts/board.md` | `hkp-frontend/src/types.ts#BoardDescriptor`, `hkp-frontend/src/core/boardPersistence.ts` |
59
+ | **Board context** | The live board while it is open — its runtimes, scopes, services, facade and linkage — and the actions that change them. Everything on screen reads from here. | `hkp-frontend/src/BoardContext.tsx` |
60
+ | **Facade** | The app-like surface of widgets drawn over a board, so somebody can use it without seeing services. → `concepts/board.md` | `hkp-frontend/src/facade/types.ts`, `hkp-frontend/src/facade/FacadeRenderer.tsx` |
61
+ | **Widget** | One control or display in a facade — a button, knob, level meter, data table — usually addressing a service by `serviceUuid`. | `hkp-frontend/src/facade/types.ts#LayoutItem`, `hkp-frontend/src/facade/panels/` |
62
+ | **View mode** | Which half of a facade board is on screen: facade, split, or board. One three-state mode rather than two switches, so "at least one half is visible" is structural. | `hkp-frontend/src/facade/FacadeViewContext.tsx`, `hkp-frontend/src/facade/FacadeViewControls.tsx` |
63
+ | **App mode** | The board being used rather than built: the facade has the whole window and the app's furniture steps back. Not a fourth view mode but a consequence of one — view mode `facade`, the facade editor closed, and a facade to show. The toolbar leaves the flow for a mark floating in the top right and returns *over* the facade rather than beside it, the copyright strip goes with it, and Escape works in both directions. Called app mode because the facade is all there is to see; the AppMenu's *app* is the application around the board, which is the part that retracts here. | `hkp-frontend/src/facade/FacadeChrome.tsx#useChromeRetracted`, `hkp-frontend/src/views/playground/PlaygroundInner.tsx` |
64
+ | **Overview** | The full-window 3D-ish view of a whole board — every runtime, service and nesting level at once, with live activity. | `hkp-frontend/src/overview/OverviewView.tsx`, `hkp-frontend/src/overview/OverviewContext.tsx` |
65
+ | **Board JSON** | The serialised form of a board. What is saved, shared by link, exported and deployed. | `hkp-frontend/src/core/boardPersistence.ts#serializeBoard` |
66
+ | **Partner board** | The board for the other side of a peer connection, derived from the open one: the same board with its `peer-socket` roles swapped and its machine-local runtimes dropped, handed over as a link or a QR code. Derived one way only, so the share menu and a facade's `partner-board-qr` button hand out the same board. | `hkp-frontend/src/core/partnerBoard.ts#createPartnerBoard`, `hkp-frontend/src/components/Toolbar/ShareMenu.tsx` |
67
+ | **Board action** | A facade widget action naming no service, because its subject is the board — what it does is the host's to decide, and a host that cannot do it leaves the button inert. | `hkp-frontend/src/facade/types.ts#BoardAction`, `hkp-frontend/src/facade/FacadeBoardActions.tsx` |
68
+
69
+ ---
70
+
71
+ ## Runtimes and services
72
+
73
+ | Term | What it is | Where it lives |
74
+ |---|---|---|
75
+ | **Runtime** | Where services run — a browser tab, a Node/Python/C++ process. Chained in board order. → `concepts/runtime.md` | `hkp-frontend/src/types.ts#RuntimeDescriptor`, `hkp-node/src/runtime.ts`, `hkp-python/src/hkp/runtime.py`, `hkp-rt/lib/src/runtime.cpp` |
76
+ | **Service** | The unit of work: configure, process, optional panel, a place in an ordered list. → `concepts/service.md` | `hkp-frontend/src/types.ts#ServiceDescriptor`, `hkp-frontend/src/runtime/browser/services/` |
77
+ | **Pipeline** | A runtime's ordered service list, which is the wiring — and the loop that walks it, one service at a time, stopping on `null`. Every runtime implements its own; these are the four. | `hkp-frontend/src/runtime/browser/BrowserRuntimeScope.ts#next`, `hkp-node/src/runtime.ts#processFromIndex`, `hkp-python/src/hkp/runtime.py#_process_from_index`, `hkp-rt/lib/src/runtime.cpp#processFrom` |
78
+ | **Chain** | The step *between* runtimes: when one finishes, which one runs next and how its result gets there. Decided by whoever owns the board — the board view in the browser, the coordinator's session for a deployed board, which also has to reach a browser runtime over the bridge. | `hkp-frontend/src/views/playground/Board/index.tsx#onRuntimeResult`, `hkp-node/src/coordinator/session.ts#routeResult` |
79
+ | **Sub-service / nested pipeline** | A service owning a pipeline of its own, run as one step of the outer one. | `hkp-node/src/services/sub-service.ts`, `hkp-rt/lib/src/sub_runtime.cpp` |
80
+ | **Runtime API / scope / app** | The three seams: verbs per runtime *type*, one live runtime, and what a service may do. | `hkp-frontend/src/types.ts#RuntimeApi`, `#RuntimeScope`, `hkp-frontend/src/runtime/browser/BrowserRuntimeApp.ts` |
81
+ | **Registry** | What services a runtime can create, sent back when it is provisioned. | `hkp-frontend/src/runtime/browser/BrowserRegistry.tsx`, `hkp-node/src/server.ts` |
82
+ | **YAS** | The binary wire format for non-textual data over REST — 7-byte header, type-prefixed payload. | `hkp-frontend/src/runtime/rest/Message.ts`, `hkp-python/src/hkp/yas.py`, `hkp-node/src/yas.ts` |
83
+ | **Remote** | A runtime server the host knows by name. A board may name one (`"remote": "Laptop"`) instead of giving a `url`; the client opening the board resolves it. `hkp://remotes/<name>` addresses the app's own embedded runtime. → `concepts/remotes.md` | `hkp-frontend/src/runtime/board/remote.ts#resolveRuntimeAddress`, `meander/backend/remoteRoute.h`, `meander/frontend/src/useBackendRemotes.ts` |
84
+ | **Move (a runtime)** | Putting a runtime on another runtime server with its current state, as much of it as travels: each service's live state is carried, the runtime is built on the new server before it leaves the old one, and it keeps its id. What the old server keeps for the board — tables, records, files — stays there. "Move to …" in the runtime menu. → `concepts/remotes.md` | `hkp-frontend/src/core/runtimeOperations.ts#moveRuntime`, `hkp-frontend/src/ui-components/runtime-ui/MoveRuntimeDialog.tsx` |
85
+
86
+ ---
87
+
88
+ ## Composition
89
+
90
+ | Term | What it is | Where it lives |
91
+ |---|---|---|
92
+ | **Unit** | An ordinary board that also declares what it imports and exports, so another board can be made of it. → `concepts/units.md` | `hkp-frontend/src/runtime/board/units.ts#UnitDeclaration` |
93
+ | **Composition** | An ordinary board that lists the units it is assembled from. | `hkp-frontend/src/runtime/board/units.ts#UnitEntry` |
94
+ | **Projection** | Assembling composition and units into one board, qualifying exactly one thing: the runtime id. | `hkp-frontend/src/runtime/board/units.ts#projectUnits` |
95
+ | **Linkage** | What linking produced, kept while the board is open: the units it was assembled from, the views they contribute, and where its blocks were expanded. | `hkp-frontend/src/runtime/board/units.ts#BoardLinkage` |
96
+ | **Unit origin** | Where a `uri` is looked up — a sibling URL, a file beside the composition, the files opened together, saved boards. There is no registry. | `hkp-frontend/src/core/linkUnits.ts#UnitOrigin` |
97
+ | **Unlink** | Splitting a running board back into the documents it came from, as a three-way merge rather than a copy. | `hkp-frontend/src/runtime/board/units.ts#unlinkProjection` |
98
+ | **Topic** | The named channel units talk over, since they are never chained to each other. | `docs/content/services/queue.md`, `hkp-node/src/services/queue.ts` |
99
+ | **Block** | A configured service — usually a sub-service and its pipeline — defined once in a board's `blocks` and used wherever a pipeline names it (`{ "block": "note", "params": {…} }`). Expanded on load, written back as the use on save; no runtime sees one. → `concepts/blocks.md` | `hkp-frontend/src/runtime/board/blocks.ts#BlockDefinition`, `hkp-frontend/src/core/linkBlocks.ts#linkBlocks` |
100
+
101
+ ---
102
+
103
+ ## Deployment and the cloud
104
+
105
+ | Term | What it is | Where it lives |
106
+ |---|---|---|
107
+ | **Coordinator** | The instance that owns a board and can see across all its runtimes. → `concepts/coordinator.md` | `hkp-frontend/src/core/coordinator.ts`, `hkp-node/src/coordinator/coordinator.ts` |
108
+ | **Cloud board** | A board a coordinator owns and keeps running with nobody watching. → `concepts/cloud-boards.md` | `hkp-node/src/coordinator/session.ts`, `hkp-frontend/src/views/cloud/index.tsx` |
109
+ | **Deploy** | Handing a board from the browser that built it to a coordinator. An introduction: the browser gets a ticket per remote runtime and tells each runtime server to connect with it; the board is registered only once they all have. | `hkp-frontend/src/core/deploy.ts#deployBoard` |
110
+ | **Preflight** | What deploying a board would find, per runtime, asked before anything is deployed: where it resolves to and whether it can run there. | `hkp-frontend/src/core/deployPreflight.ts#preflightBoard`, `hkp-frontend/src/components/Toolbar/DeployDialog.tsx` |
111
+ | **Ticket** | The credential a runtime server connects to a coordinator with — for one runtime of one board of one person. The server keeps it to reconnect; the coordinator keeps a hash. → `concepts/remotes.md` | `hkp-node/src/coordinator/participants.ts#ParticipantRegistry`, `hkp-node/src/coordinatorLinks.ts` |
112
+ | **Participant** | Whatever runs one of a deployed board's runtimes and connected to its coordinator to do so. *Required* (a runtime server: its absence is an error that names it) or *transient* (a browser: its absence is normal). | `hkp-node/src/coordinator/participantProtocol.ts`, `hkp-node/src/coordinator/session.ts` |
113
+ | **Bridge** | The WebSocket a browser attaches to a deployed board with — snapshots out, browser-runtime work in. | `hkp-node/src/coordinator/bridgeProtocol.ts`, `hkp-frontend/src/views/cloud/useCoordinatorBridge.ts` |
114
+ | **Session token** | An opaque credential a runtime server mints for one of a user's runtimes, to outlive their session. The coordinator used to hold one per runtime; it now reaches runtimes over the connection a *ticket* opened. | `hkp-node/src/server.ts` |
115
+ | **Fork** | Copying a deployed board back into something editable; the original keeps running. | `hkp-frontend/src/core/forkBoard.ts` |
116
+ | **Mount** | An endpoint a runtime assigns to a service that must be reachable from outside. → `concepts/mounts.md` | `hkp-frontend/src/runtime/board/mount.ts`, `hkp-node/src/mounts.ts` |
117
+ | **Mount reference** | `hkp-mount://<runtimeId>/<serviceUuid>` — what a person writes; `__hkpMount` is what machinery fills in. | `hkp-frontend/src/runtime/board/mount.ts#parseMountRef` |
118
+
119
+ ---
120
+
121
+ ## Logging
122
+
123
+ | Term | What it is | Where it lives |
124
+ |---|---|---|
125
+ | **Run** | One invocation of a board, followed across every service and runtime it reaches. → `concepts/logging.md` | `hkp-frontend/src/types.ts#ProcessContext`, `hkp-frontend/src/runtime/processContext.ts#startedRun` |
126
+ | **Log entry** | One thing worth recording about a run, shaped the same on every runtime. | `hkp-frontend/src/types.ts#LogEntry`, `hkp-rt/lib/include/log_entry.h` |
127
+ | **Log store** | Where a board's log lives: one JSONL file per board, kept by the coordinator because only it spans every runtime. | `hkp-node/src/coordinator/logStore.ts` |
128
+ | **Log target** | Where a runtime hands its entries — the server registers one per runtime to carry them out. | `hkp-node/src/runtime.ts#registerLogTarget`, `hkp-python/src/hkp/server.py#_send_log` |
129
+
130
+ ---
131
+
132
+ ## Secrets
133
+
134
+ | Term | What it is | Where it lives |
135
+ |---|---|---|
136
+ | **Secret reference** | `{{secret.<alias>}}` — stays inline in service state and is resolved at the point of use, so a resolved value never comes back out of `getState`. | `hkp-frontend/src/core/secrets.ts` |
137
+ | **Vault** | Where the values actually live, apart from every service's state and reachable only through `secrets()`. | `hkp-node/src/secrets.ts`, `meander/backend/vault.h` |
138
+ | **Consent / audience** | Asking before a secret is sent, and to whom it may go; the answer is remembered as a grant. | `hkp-frontend/src/core/secretConsent.ts`, `meander/backend/grants.h` |
139
+ | **SecretConsentDialog** | The dialog that does the asking in the desktop app. | `meander/frontend/src/SecretConsentDialog.tsx` |
140
+ | **SecretsTab** | Managing secrets in Settings — add, rename, delete. Values are write-only. | `meander/frontend/src/SecretsTab.tsx` |
141
+ | **SecretField** | The input a service panel uses for a credential, which shows a reference rather than a value. | `hkp-frontend/src/components/shared/SecretField.tsx` |
142
+
143
+ ---
144
+
145
+ ## The repository
146
+
147
+ | Term | What it is | Where it lives |
148
+ |---|---|---|
149
+ | **Superproject** | The outer repository, holding what is built and released together — the frontend, the C++ runtime, the desktop app, these docs. → `repository.md` | `CMakeLists.txt`, `run-all-tests.sh` |
150
+ | **Submodule** | One of the five directories with a history and a release of its own: hkp-node, hkp-python, hkp-website, meander-ios, meander-android. A change spanning one and the superproject is two commits. | `.gitmodules`, `scripts/vocabulary.mjs` |
151
+
152
+ ---
153
+
154
+ ## Keeping it true
155
+
156
+ The risk is not that this is incomplete — it is meant to grow — but that an entry
157
+ points somewhere that no longer exists. A wrong reference is worse than a missing
158
+ one: it is confidently wrong, and whoever follows it edits the wrong file.
159
+
160
+ The division of labour:
161
+
162
+ - **A person decides what belongs here**, what each term means, and which files
163
+ are worth naming. Nothing adds entries automatically.
164
+ - **The references are checked against a changeset.** `/vocabulary` (the command
165
+ in `.claude/commands/vocabulary.md`) takes the files a change touched, finds
166
+ every entry that names one of them, and reports which entries a reviewer
167
+ should look at — plus any reference that no longer resolves at all. It
168
+ proposes updated references; it does not invent terms.
169
+
170
+ Run it on a change big enough to move things around, which is exactly when this
171
+ document goes quietly stale.
@@ -0,0 +1,141 @@
1
+ import { Bundles, ServiceClass, ServiceModule, User } from "../../types";
2
+ import { loadBundle } from "../Bundles";
3
+ import { defaultRegistry } from "./registry/Default";
4
+
5
+ export const allowedServices = [
6
+ "hookup.to/service/timer",
7
+ "hookup.to/service/monitor",
8
+ "hookup.to/service/canvas",
9
+ "hookup.to/service/map",
10
+ "hookup.to/service/filter",
11
+ "hookup.to/shared/batcher",
12
+ "hookup.to/service/switch",
13
+ "hookup.to/service/camera",
14
+ "hookup.to/service/injector",
15
+ "hookup.to/service/trigger-pad",
16
+ "hookup.to/service/sound",
17
+ "hookup.to/service/audio-output",
18
+ "hookup.to/service/audio-input",
19
+ "hookup.to/service/audio-recorder",
20
+ "hookup.to/service/gif-encoder",
21
+ "hookup.to/service/input",
22
+ "hookup.to/service/output",
23
+ "hookup.to/service/thrower",
24
+ "hookup.to/service/receiver",
25
+ "hookup.to/service/downloader",
26
+ "hookup.to/service/mp3encoder",
27
+ "hookup.to/service/reduce",
28
+ "hookup.to/service/buffer",
29
+ "hookup.to/service/group-by",
30
+ "hookup.to/service/match-filter",
31
+ "hookup.to/service/chart",
32
+ "hookup.to/service/spotify",
33
+ "hookup.to/service/github-source",
34
+ "hookup.to/service/github-sink",
35
+ "hookup.to/service/cache",
36
+ "hookup.to/service/key-handler",
37
+ "hookup.to/service/reactor",
38
+ "hookup.to/service/html",
39
+ "hookup.to/service/array-transform",
40
+ "hookup.to/service/xy-pad",
41
+ "hookup.to/service/encrypt",
42
+ "hookup.to/service/decrypt",
43
+ "hookup.to/service/hash",
44
+ "hookup.to/service/sign",
45
+ "hookup.to/service/linear-regression",
46
+ "hookup.to/service/xlsl",
47
+ "hookup.to/service/select",
48
+ "hookup.to/service/hacker/considered",
49
+ "hookup.to/service/fetcher",
50
+ "hookup.to/service/cloud-source",
51
+ "hookup.to/service/cloud-sink",
52
+ "hookup.to/service/board-service",
53
+ "tracks",
54
+ "hookup.to/service/peer-socket",
55
+ "hookup.to/service/ollama-prompt",
56
+ "hookup.to/service/speech-synth",
57
+ "hookup.to/service/fft",
58
+ "sub-service",
59
+ "hookup.to/service/lz-compress",
60
+ "hookup.to/service/stopper",
61
+ "hookup.to/service/sort",
62
+ "hookup.to/service/limit",
63
+ "hookup.to/service/flat-map",
64
+ "hookup.to/service/smooth",
65
+ "hookup.to/service/set-runtime-variable",
66
+ "hookup.to/service/if",
67
+ "hookup.to/service/feedback",
68
+ ];
69
+
70
+ export default class BrowserRegistry {
71
+ availableServices: Array<ServiceModule> = [...defaultRegistry];
72
+
73
+ static async create(
74
+ bundles?: Bundles,
75
+ user?: User,
76
+ ): Promise<BrowserRegistry> {
77
+ const registry = new BrowserRegistry();
78
+ registry.availableServices = [...defaultRegistry];
79
+ if (bundles && bundles.length) {
80
+ await registry.loadBundles(bundles);
81
+ }
82
+ if (user) {
83
+ await registry.loadUserBundles(user);
84
+ }
85
+ return registry;
86
+ }
87
+
88
+ getServiceClasses(): Array<ServiceClass> {
89
+ return this.availableServices.map(({ serviceId, serviceName }) => ({
90
+ serviceId,
91
+ serviceName,
92
+ }));
93
+ }
94
+
95
+ findServiceModule(serviceId: string): ServiceModule | undefined {
96
+ return this.availableServices.find((elem) => elem.serviceId === serviceId);
97
+ }
98
+
99
+ loadUserBundles = async (user: User) => {
100
+ if (user && user.features && user.features.registry) {
101
+ const userBundles: Array<string> = JSON.parse(user.features.registry);
102
+ await this.loadBundles(userBundles);
103
+ }
104
+ };
105
+
106
+ async loadBundles(bundles: Bundles): Promise<BrowserRegistry> {
107
+ if (bundles) {
108
+ for (const bundleId of bundles) {
109
+ const bdl = await loadBundle(bundleId);
110
+ this.__appendBundleServices(bdl);
111
+ }
112
+ }
113
+ return this;
114
+ }
115
+
116
+ allowedServices() {
117
+ const allowAllServices = true;
118
+ return this.availableServices.filter(
119
+ (s) => allowAllServices || allowedServices.indexOf(s.serviceId) !== -1,
120
+ );
121
+ }
122
+
123
+ allServices() {
124
+ return this.availableServices;
125
+ }
126
+
127
+ __appendBundleServices = (arr: Array<ServiceModule>) => {
128
+ arr.forEach((x) => {
129
+ const exists =
130
+ this.availableServices &&
131
+ this.availableServices.find((s) => x && x.serviceId === s.serviceId);
132
+ if (!exists) {
133
+ if (this.availableServices) {
134
+ this.availableServices.push(x);
135
+ } else {
136
+ this.availableServices = [x];
137
+ }
138
+ }
139
+ });
140
+ };
141
+ }