@richhardry/codor 0.10.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 (388) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +293 -0
  3. package/bin/codor.mjs +7 -0
  4. package/node_modules/@codor/adapter-antigravity/dist/adapter.d.ts +41 -0
  5. package/node_modules/@codor/adapter-antigravity/dist/adapter.d.ts.map +1 -0
  6. package/node_modules/@codor/adapter-antigravity/dist/adapter.js +275 -0
  7. package/node_modules/@codor/adapter-antigravity/dist/adapter.js.map +1 -0
  8. package/node_modules/@codor/adapter-antigravity/dist/index.d.ts +2 -0
  9. package/node_modules/@codor/adapter-antigravity/dist/index.d.ts.map +1 -0
  10. package/node_modules/@codor/adapter-antigravity/dist/index.js +2 -0
  11. package/node_modules/@codor/adapter-antigravity/dist/index.js.map +1 -0
  12. package/node_modules/@codor/adapter-antigravity/package.json +18 -0
  13. package/node_modules/@codor/adapter-claude-code/dist/adapter.d.ts +94 -0
  14. package/node_modules/@codor/adapter-claude-code/dist/adapter.d.ts.map +1 -0
  15. package/node_modules/@codor/adapter-claude-code/dist/adapter.js +785 -0
  16. package/node_modules/@codor/adapter-claude-code/dist/adapter.js.map +1 -0
  17. package/node_modules/@codor/adapter-claude-code/dist/index.d.ts +8 -0
  18. package/node_modules/@codor/adapter-claude-code/dist/index.d.ts.map +1 -0
  19. package/node_modules/@codor/adapter-claude-code/dist/index.js +5 -0
  20. package/node_modules/@codor/adapter-claude-code/dist/index.js.map +1 -0
  21. package/node_modules/@codor/adapter-claude-code/dist/limits-probe.d.ts +18 -0
  22. package/node_modules/@codor/adapter-claude-code/dist/limits-probe.d.ts.map +1 -0
  23. package/node_modules/@codor/adapter-claude-code/dist/limits-probe.js +67 -0
  24. package/node_modules/@codor/adapter-claude-code/dist/limits-probe.js.map +1 -0
  25. package/node_modules/@codor/adapter-claude-code/dist/peek.d.ts +3 -0
  26. package/node_modules/@codor/adapter-claude-code/dist/peek.d.ts.map +1 -0
  27. package/node_modules/@codor/adapter-claude-code/dist/peek.js +128 -0
  28. package/node_modules/@codor/adapter-claude-code/dist/peek.js.map +1 -0
  29. package/node_modules/@codor/adapter-claude-code/dist/query.d.ts +9 -0
  30. package/node_modules/@codor/adapter-claude-code/dist/query.d.ts.map +1 -0
  31. package/node_modules/@codor/adapter-claude-code/dist/query.js +7 -0
  32. package/node_modules/@codor/adapter-claude-code/dist/query.js.map +1 -0
  33. package/node_modules/@codor/adapter-claude-code/dist/translate.d.ts +40 -0
  34. package/node_modules/@codor/adapter-claude-code/dist/translate.d.ts.map +1 -0
  35. package/node_modules/@codor/adapter-claude-code/dist/translate.js +505 -0
  36. package/node_modules/@codor/adapter-claude-code/dist/translate.js.map +1 -0
  37. package/node_modules/@codor/adapter-claude-code/package.json +18 -0
  38. package/node_modules/@codor/adapter-codex/dist/adapter.d.ts +105 -0
  39. package/node_modules/@codor/adapter-codex/dist/adapter.d.ts.map +1 -0
  40. package/node_modules/@codor/adapter-codex/dist/adapter.js +625 -0
  41. package/node_modules/@codor/adapter-codex/dist/adapter.js.map +1 -0
  42. package/node_modules/@codor/adapter-codex/dist/app-server-transport.d.ts +39 -0
  43. package/node_modules/@codor/adapter-codex/dist/app-server-transport.d.ts.map +1 -0
  44. package/node_modules/@codor/adapter-codex/dist/app-server-transport.js +186 -0
  45. package/node_modules/@codor/adapter-codex/dist/app-server-transport.js.map +1 -0
  46. package/node_modules/@codor/adapter-codex/dist/index.d.ts +8 -0
  47. package/node_modules/@codor/adapter-codex/dist/index.d.ts.map +1 -0
  48. package/node_modules/@codor/adapter-codex/dist/index.js +5 -0
  49. package/node_modules/@codor/adapter-codex/dist/index.js.map +1 -0
  50. package/node_modules/@codor/adapter-codex/dist/limits-probe.d.ts +18 -0
  51. package/node_modules/@codor/adapter-codex/dist/limits-probe.d.ts.map +1 -0
  52. package/node_modules/@codor/adapter-codex/dist/limits-probe.js +87 -0
  53. package/node_modules/@codor/adapter-codex/dist/limits-probe.js.map +1 -0
  54. package/node_modules/@codor/adapter-codex/dist/peek.d.ts +3 -0
  55. package/node_modules/@codor/adapter-codex/dist/peek.d.ts.map +1 -0
  56. package/node_modules/@codor/adapter-codex/dist/peek.js +98 -0
  57. package/node_modules/@codor/adapter-codex/dist/peek.js.map +1 -0
  58. package/node_modules/@codor/adapter-codex/dist/translate.d.ts +17 -0
  59. package/node_modules/@codor/adapter-codex/dist/translate.d.ts.map +1 -0
  60. package/node_modules/@codor/adapter-codex/dist/translate.js +286 -0
  61. package/node_modules/@codor/adapter-codex/dist/translate.js.map +1 -0
  62. package/node_modules/@codor/adapter-codex/package.json +17 -0
  63. package/node_modules/@codor/adapter-copilot/dist/adapter.d.ts +40 -0
  64. package/node_modules/@codor/adapter-copilot/dist/adapter.d.ts.map +1 -0
  65. package/node_modules/@codor/adapter-copilot/dist/adapter.js +190 -0
  66. package/node_modules/@codor/adapter-copilot/dist/adapter.js.map +1 -0
  67. package/node_modules/@codor/adapter-copilot/dist/index.d.ts +4 -0
  68. package/node_modules/@codor/adapter-copilot/dist/index.d.ts.map +1 -0
  69. package/node_modules/@codor/adapter-copilot/dist/index.js +3 -0
  70. package/node_modules/@codor/adapter-copilot/dist/index.js.map +1 -0
  71. package/node_modules/@codor/adapter-copilot/dist/translate.d.ts +11 -0
  72. package/node_modules/@codor/adapter-copilot/dist/translate.d.ts.map +1 -0
  73. package/node_modules/@codor/adapter-copilot/dist/translate.js +184 -0
  74. package/node_modules/@codor/adapter-copilot/dist/translate.js.map +1 -0
  75. package/node_modules/@codor/adapter-copilot/package.json +18 -0
  76. package/node_modules/@codor/adapter-cursor/dist/adapter.d.ts +32 -0
  77. package/node_modules/@codor/adapter-cursor/dist/adapter.d.ts.map +1 -0
  78. package/node_modules/@codor/adapter-cursor/dist/adapter.js +179 -0
  79. package/node_modules/@codor/adapter-cursor/dist/adapter.js.map +1 -0
  80. package/node_modules/@codor/adapter-cursor/dist/index.d.ts +9 -0
  81. package/node_modules/@codor/adapter-cursor/dist/index.d.ts.map +1 -0
  82. package/node_modules/@codor/adapter-cursor/dist/index.js +8 -0
  83. package/node_modules/@codor/adapter-cursor/dist/index.js.map +1 -0
  84. package/node_modules/@codor/adapter-cursor/dist/translate.d.ts +15 -0
  85. package/node_modules/@codor/adapter-cursor/dist/translate.d.ts.map +1 -0
  86. package/node_modules/@codor/adapter-cursor/dist/translate.js +164 -0
  87. package/node_modules/@codor/adapter-cursor/dist/translate.js.map +1 -0
  88. package/node_modules/@codor/adapter-cursor/package.json +17 -0
  89. package/node_modules/@codor/adapter-gemini/dist/adapter.d.ts +36 -0
  90. package/node_modules/@codor/adapter-gemini/dist/adapter.d.ts.map +1 -0
  91. package/node_modules/@codor/adapter-gemini/dist/adapter.js +245 -0
  92. package/node_modules/@codor/adapter-gemini/dist/adapter.js.map +1 -0
  93. package/node_modules/@codor/adapter-gemini/dist/index.d.ts +4 -0
  94. package/node_modules/@codor/adapter-gemini/dist/index.d.ts.map +1 -0
  95. package/node_modules/@codor/adapter-gemini/dist/index.js +3 -0
  96. package/node_modules/@codor/adapter-gemini/dist/index.js.map +1 -0
  97. package/node_modules/@codor/adapter-gemini/dist/translate.d.ts +12 -0
  98. package/node_modules/@codor/adapter-gemini/dist/translate.d.ts.map +1 -0
  99. package/node_modules/@codor/adapter-gemini/dist/translate.js +123 -0
  100. package/node_modules/@codor/adapter-gemini/dist/translate.js.map +1 -0
  101. package/node_modules/@codor/adapter-gemini/package.json +18 -0
  102. package/node_modules/@codor/adapter-opencode/dist/adapter.d.ts +42 -0
  103. package/node_modules/@codor/adapter-opencode/dist/adapter.d.ts.map +1 -0
  104. package/node_modules/@codor/adapter-opencode/dist/adapter.js +240 -0
  105. package/node_modules/@codor/adapter-opencode/dist/adapter.js.map +1 -0
  106. package/node_modules/@codor/adapter-opencode/dist/index.d.ts +4 -0
  107. package/node_modules/@codor/adapter-opencode/dist/index.d.ts.map +1 -0
  108. package/node_modules/@codor/adapter-opencode/dist/index.js +3 -0
  109. package/node_modules/@codor/adapter-opencode/dist/index.js.map +1 -0
  110. package/node_modules/@codor/adapter-opencode/dist/translate.d.ts +12 -0
  111. package/node_modules/@codor/adapter-opencode/dist/translate.d.ts.map +1 -0
  112. package/node_modules/@codor/adapter-opencode/dist/translate.js +144 -0
  113. package/node_modules/@codor/adapter-opencode/dist/translate.js.map +1 -0
  114. package/node_modules/@codor/adapter-opencode/package.json +18 -0
  115. package/node_modules/@codor/cli/dist/artifact.d.ts +33 -0
  116. package/node_modules/@codor/cli/dist/artifact.d.ts.map +1 -0
  117. package/node_modules/@codor/cli/dist/artifact.js +183 -0
  118. package/node_modules/@codor/cli/dist/artifact.js.map +1 -0
  119. package/node_modules/@codor/cli/dist/attach.d.ts +25 -0
  120. package/node_modules/@codor/cli/dist/attach.d.ts.map +1 -0
  121. package/node_modules/@codor/cli/dist/attach.js +133 -0
  122. package/node_modules/@codor/cli/dist/attach.js.map +1 -0
  123. package/node_modules/@codor/cli/dist/connection.d.ts +21 -0
  124. package/node_modules/@codor/cli/dist/connection.d.ts.map +1 -0
  125. package/node_modules/@codor/cli/dist/connection.js +130 -0
  126. package/node_modules/@codor/cli/dist/connection.js.map +1 -0
  127. package/node_modules/@codor/cli/dist/detect.d.ts +14 -0
  128. package/node_modules/@codor/cli/dist/detect.d.ts.map +1 -0
  129. package/node_modules/@codor/cli/dist/detect.js +99 -0
  130. package/node_modules/@codor/cli/dist/detect.js.map +1 -0
  131. package/node_modules/@codor/cli/dist/index.d.ts +17 -0
  132. package/node_modules/@codor/cli/dist/index.d.ts.map +1 -0
  133. package/node_modules/@codor/cli/dist/index.js +24 -0
  134. package/node_modules/@codor/cli/dist/index.js.map +1 -0
  135. package/node_modules/@codor/cli/dist/mirror.d.ts +4 -0
  136. package/node_modules/@codor/cli/dist/mirror.d.ts.map +1 -0
  137. package/node_modules/@codor/cli/dist/mirror.js +93 -0
  138. package/node_modules/@codor/cli/dist/mirror.js.map +1 -0
  139. package/node_modules/@codor/cli/dist/program.d.ts +17 -0
  140. package/node_modules/@codor/cli/dist/program.d.ts.map +1 -0
  141. package/node_modules/@codor/cli/dist/program.js +1068 -0
  142. package/node_modules/@codor/cli/dist/program.js.map +1 -0
  143. package/node_modules/@codor/cli/dist/runtime-install.d.ts +61 -0
  144. package/node_modules/@codor/cli/dist/runtime-install.d.ts.map +1 -0
  145. package/node_modules/@codor/cli/dist/runtime-install.js +122 -0
  146. package/node_modules/@codor/cli/dist/runtime-install.js.map +1 -0
  147. package/node_modules/@codor/cli/dist/runtime-paths.d.ts +24 -0
  148. package/node_modules/@codor/cli/dist/runtime-paths.d.ts.map +1 -0
  149. package/node_modules/@codor/cli/dist/runtime-paths.js +69 -0
  150. package/node_modules/@codor/cli/dist/runtime-paths.js.map +1 -0
  151. package/node_modules/@codor/cli/dist/setup-flow.d.ts +69 -0
  152. package/node_modules/@codor/cli/dist/setup-flow.d.ts.map +1 -0
  153. package/node_modules/@codor/cli/dist/setup-flow.js +110 -0
  154. package/node_modules/@codor/cli/dist/setup-flow.js.map +1 -0
  155. package/node_modules/@codor/cli/dist/setup-session.d.ts +105 -0
  156. package/node_modules/@codor/cli/dist/setup-session.d.ts.map +1 -0
  157. package/node_modules/@codor/cli/dist/setup-session.js +346 -0
  158. package/node_modules/@codor/cli/dist/setup-session.js.map +1 -0
  159. package/node_modules/@codor/cli/dist/setup-ui.d.ts +93 -0
  160. package/node_modules/@codor/cli/dist/setup-ui.d.ts.map +1 -0
  161. package/node_modules/@codor/cli/dist/setup-ui.js +249 -0
  162. package/node_modules/@codor/cli/dist/setup-ui.js.map +1 -0
  163. package/node_modules/@codor/cli/dist/setup.d.ts +108 -0
  164. package/node_modules/@codor/cli/dist/setup.d.ts.map +1 -0
  165. package/node_modules/@codor/cli/dist/setup.js +878 -0
  166. package/node_modules/@codor/cli/dist/setup.js.map +1 -0
  167. package/node_modules/@codor/cli/dist/terminal-keys.d.ts +26 -0
  168. package/node_modules/@codor/cli/dist/terminal-keys.d.ts.map +1 -0
  169. package/node_modules/@codor/cli/dist/terminal-keys.js +70 -0
  170. package/node_modules/@codor/cli/dist/terminal-keys.js.map +1 -0
  171. package/node_modules/@codor/cli/dist/terminal-qr.d.ts +2 -0
  172. package/node_modules/@codor/cli/dist/terminal-qr.d.ts.map +1 -0
  173. package/node_modules/@codor/cli/dist/terminal-qr.js +30 -0
  174. package/node_modules/@codor/cli/dist/terminal-qr.js.map +1 -0
  175. package/node_modules/@codor/cli/dist/up.d.ts +52 -0
  176. package/node_modules/@codor/cli/dist/up.d.ts.map +1 -0
  177. package/node_modules/@codor/cli/dist/up.js +178 -0
  178. package/node_modules/@codor/cli/dist/up.js.map +1 -0
  179. package/node_modules/@codor/cli/package.json +24 -0
  180. package/node_modules/@codor/cli/packaging/systemd/codor.service +21 -0
  181. package/node_modules/@codor/cli/runtime/web/assets/LandingPage-BOmG5kSw.js +31 -0
  182. package/node_modules/@codor/cli/runtime/web/assets/LedgerPage-CecuTS8-.js +1 -0
  183. package/node_modules/@codor/cli/runtime/web/assets/NoChannels-CYiBXGQd.js +11 -0
  184. package/node_modules/@codor/cli/runtime/web/assets/PairingCodeInput-Cr6XDWx-.js +1 -0
  185. package/node_modules/@codor/cli/runtime/web/assets/PairingPage-CQBWNA2L.js +6 -0
  186. package/node_modules/@codor/cli/runtime/web/assets/SettingsPage-DGLbSXE7.js +16 -0
  187. package/node_modules/@codor/cli/runtime/web/assets/StartupUnavailable-DdQBHip_.js +1 -0
  188. package/node_modules/@codor/cli/runtime/web/assets/arrow-left-BOpjMuRi.js +6 -0
  189. package/node_modules/@codor/cli/runtime/web/assets/browser-BWQYNOsD.js +6 -0
  190. package/node_modules/@codor/cli/runtime/web/assets/graph-toBZHlC0.js +1 -0
  191. package/node_modules/@codor/cli/runtime/web/assets/index-Cxi54Xim.js +408 -0
  192. package/node_modules/@codor/cli/runtime/web/assets/index-DjwJakJC.css +1 -0
  193. package/node_modules/@codor/cli/runtime/web/assets/qr-DpynCwP9.js +8 -0
  194. package/node_modules/@codor/cli/runtime/web/assets/react-C8w-UNLI.js +32 -0
  195. package/node_modules/@codor/cli/runtime/web/assets/sodium-DtsvMzX9.js +1 -0
  196. package/node_modules/@codor/cli/runtime/web/codor-192.png +0 -0
  197. package/node_modules/@codor/cli/runtime/web/codor-512.png +0 -0
  198. package/node_modules/@codor/cli/runtime/web/codor-apple-touch-180.png +0 -0
  199. package/node_modules/@codor/cli/runtime/web/codor-favicon.svg +86 -0
  200. package/node_modules/@codor/cli/runtime/web/codor-mark.svg +86 -0
  201. package/node_modules/@codor/cli/runtime/web/codor-maskable-512.png +0 -0
  202. package/node_modules/@codor/cli/runtime/web/codor-og.png +0 -0
  203. package/node_modules/@codor/cli/runtime/web/fonts/BitcountPropSingle-latin.woff2 +0 -0
  204. package/node_modules/@codor/cli/runtime/web/fonts/Geist-Variable.woff2 +0 -0
  205. package/node_modules/@codor/cli/runtime/web/fonts/GeistMono-Variable.woff2 +0 -0
  206. package/node_modules/@codor/cli/runtime/web/fonts/OFL.txt +93 -0
  207. package/node_modules/@codor/cli/runtime/web/index.html +53 -0
  208. package/node_modules/@codor/cli/runtime/web/manifest.webmanifest +1 -0
  209. package/node_modules/@codor/cli/runtime/web/sw.js +2 -0
  210. package/node_modules/@codor/protocol/dist/adapter.d.ts +118 -0
  211. package/node_modules/@codor/protocol/dist/adapter.d.ts.map +1 -0
  212. package/node_modules/@codor/protocol/dist/adapter.js +15 -0
  213. package/node_modules/@codor/protocol/dist/adapter.js.map +1 -0
  214. package/node_modules/@codor/protocol/dist/body.d.ts +14 -0
  215. package/node_modules/@codor/protocol/dist/body.d.ts.map +1 -0
  216. package/node_modules/@codor/protocol/dist/body.js +50 -0
  217. package/node_modules/@codor/protocol/dist/body.js.map +1 -0
  218. package/node_modules/@codor/protocol/dist/changelog.d.ts +30 -0
  219. package/node_modules/@codor/protocol/dist/changelog.d.ts.map +1 -0
  220. package/node_modules/@codor/protocol/dist/changelog.js +19 -0
  221. package/node_modules/@codor/protocol/dist/changelog.js.map +1 -0
  222. package/node_modules/@codor/protocol/dist/default-recipient.d.ts +8 -0
  223. package/node_modules/@codor/protocol/dist/default-recipient.d.ts.map +1 -0
  224. package/node_modules/@codor/protocol/dist/default-recipient.js +19 -0
  225. package/node_modules/@codor/protocol/dist/default-recipient.js.map +1 -0
  226. package/node_modules/@codor/protocol/dist/delivery.d.ts +42 -0
  227. package/node_modules/@codor/protocol/dist/delivery.d.ts.map +1 -0
  228. package/node_modules/@codor/protocol/dist/delivery.js +44 -0
  229. package/node_modules/@codor/protocol/dist/delivery.js.map +1 -0
  230. package/node_modules/@codor/protocol/dist/events.d.ts +284 -0
  231. package/node_modules/@codor/protocol/dist/events.d.ts.map +1 -0
  232. package/node_modules/@codor/protocol/dist/events.js +150 -0
  233. package/node_modules/@codor/protocol/dist/events.js.map +1 -0
  234. package/node_modules/@codor/protocol/dist/ids.d.ts +19 -0
  235. package/node_modules/@codor/protocol/dist/ids.d.ts.map +1 -0
  236. package/node_modules/@codor/protocol/dist/ids.js +27 -0
  237. package/node_modules/@codor/protocol/dist/ids.js.map +1 -0
  238. package/node_modules/@codor/protocol/dist/index.d.ts +14 -0
  239. package/node_modules/@codor/protocol/dist/index.d.ts.map +1 -0
  240. package/node_modules/@codor/protocol/dist/index.js +14 -0
  241. package/node_modules/@codor/protocol/dist/index.js.map +1 -0
  242. package/node_modules/@codor/protocol/dist/interaction.d.ts +45 -0
  243. package/node_modules/@codor/protocol/dist/interaction.d.ts.map +1 -0
  244. package/node_modules/@codor/protocol/dist/interaction.js +33 -0
  245. package/node_modules/@codor/protocol/dist/interaction.js.map +1 -0
  246. package/node_modules/@codor/protocol/dist/member.d.ts +146 -0
  247. package/node_modules/@codor/protocol/dist/member.d.ts.map +1 -0
  248. package/node_modules/@codor/protocol/dist/member.js +169 -0
  249. package/node_modules/@codor/protocol/dist/member.js.map +1 -0
  250. package/node_modules/@codor/protocol/dist/message.d.ts +166 -0
  251. package/node_modules/@codor/protocol/dist/message.d.ts.map +1 -0
  252. package/node_modules/@codor/protocol/dist/message.js +95 -0
  253. package/node_modules/@codor/protocol/dist/message.js.map +1 -0
  254. package/node_modules/@codor/protocol/dist/observability.d.ts +80 -0
  255. package/node_modules/@codor/protocol/dist/observability.d.ts.map +1 -0
  256. package/node_modules/@codor/protocol/dist/observability.js +41 -0
  257. package/node_modules/@codor/protocol/dist/observability.js.map +1 -0
  258. package/node_modules/@codor/protocol/dist/room.d.ts +430 -0
  259. package/node_modules/@codor/protocol/dist/room.d.ts.map +1 -0
  260. package/node_modules/@codor/protocol/dist/room.js +142 -0
  261. package/node_modules/@codor/protocol/dist/room.js.map +1 -0
  262. package/node_modules/@codor/protocol/dist/ws.d.ts +1348 -0
  263. package/node_modules/@codor/protocol/dist/ws.d.ts.map +1 -0
  264. package/node_modules/@codor/protocol/dist/ws.js +282 -0
  265. package/node_modules/@codor/protocol/dist/ws.js.map +1 -0
  266. package/node_modules/@codor/protocol/package.json +17 -0
  267. package/node_modules/@codor/switchboard/dist/adapter-registry.d.ts +14 -0
  268. package/node_modules/@codor/switchboard/dist/adapter-registry.d.ts.map +1 -0
  269. package/node_modules/@codor/switchboard/dist/adapter-registry.js +175 -0
  270. package/node_modules/@codor/switchboard/dist/adapter-registry.js.map +1 -0
  271. package/node_modules/@codor/switchboard/dist/authorization.d.ts +13 -0
  272. package/node_modules/@codor/switchboard/dist/authorization.d.ts.map +1 -0
  273. package/node_modules/@codor/switchboard/dist/authorization.js +96 -0
  274. package/node_modules/@codor/switchboard/dist/authorization.js.map +1 -0
  275. package/node_modules/@codor/switchboard/dist/blobs.d.ts +17 -0
  276. package/node_modules/@codor/switchboard/dist/blobs.d.ts.map +1 -0
  277. package/node_modules/@codor/switchboard/dist/blobs.js +54 -0
  278. package/node_modules/@codor/switchboard/dist/blobs.js.map +1 -0
  279. package/node_modules/@codor/switchboard/dist/collaboration.d.ts +115 -0
  280. package/node_modules/@codor/switchboard/dist/collaboration.d.ts.map +1 -0
  281. package/node_modules/@codor/switchboard/dist/collaboration.js +123 -0
  282. package/node_modules/@codor/switchboard/dist/collaboration.js.map +1 -0
  283. package/node_modules/@codor/switchboard/dist/continuation.d.ts +33 -0
  284. package/node_modules/@codor/switchboard/dist/continuation.d.ts.map +1 -0
  285. package/node_modules/@codor/switchboard/dist/continuation.js +177 -0
  286. package/node_modules/@codor/switchboard/dist/continuation.js.map +1 -0
  287. package/node_modules/@codor/switchboard/dist/crypto/browser-sessions.d.ts +22 -0
  288. package/node_modules/@codor/switchboard/dist/crypto/browser-sessions.d.ts.map +1 -0
  289. package/node_modules/@codor/switchboard/dist/crypto/browser-sessions.js +92 -0
  290. package/node_modules/@codor/switchboard/dist/crypto/browser-sessions.js.map +1 -0
  291. package/node_modules/@codor/switchboard/dist/crypto/challenge.d.ts +37 -0
  292. package/node_modules/@codor/switchboard/dist/crypto/challenge.d.ts.map +1 -0
  293. package/node_modules/@codor/switchboard/dist/crypto/challenge.js +132 -0
  294. package/node_modules/@codor/switchboard/dist/crypto/challenge.js.map +1 -0
  295. package/node_modules/@codor/switchboard/dist/crypto/keys.d.ts +41 -0
  296. package/node_modules/@codor/switchboard/dist/crypto/keys.d.ts.map +1 -0
  297. package/node_modules/@codor/switchboard/dist/crypto/keys.js +145 -0
  298. package/node_modules/@codor/switchboard/dist/crypto/keys.js.map +1 -0
  299. package/node_modules/@codor/switchboard/dist/crypto/pairing.d.ts +53 -0
  300. package/node_modules/@codor/switchboard/dist/crypto/pairing.d.ts.map +1 -0
  301. package/node_modules/@codor/switchboard/dist/crypto/pairing.js +182 -0
  302. package/node_modules/@codor/switchboard/dist/crypto/pairing.js.map +1 -0
  303. package/node_modules/@codor/switchboard/dist/crypto/roomkeys.d.ts +30 -0
  304. package/node_modules/@codor/switchboard/dist/crypto/roomkeys.d.ts.map +1 -0
  305. package/node_modules/@codor/switchboard/dist/crypto/roomkeys.js +101 -0
  306. package/node_modules/@codor/switchboard/dist/crypto/roomkeys.js.map +1 -0
  307. package/node_modules/@codor/switchboard/dist/daemon.d.ts +545 -0
  308. package/node_modules/@codor/switchboard/dist/daemon.d.ts.map +1 -0
  309. package/node_modules/@codor/switchboard/dist/daemon.js +3907 -0
  310. package/node_modules/@codor/switchboard/dist/daemon.js.map +1 -0
  311. package/node_modules/@codor/switchboard/dist/fake-adapter.d.ts +103 -0
  312. package/node_modules/@codor/switchboard/dist/fake-adapter.d.ts.map +1 -0
  313. package/node_modules/@codor/switchboard/dist/fake-adapter.js +228 -0
  314. package/node_modules/@codor/switchboard/dist/fake-adapter.js.map +1 -0
  315. package/node_modules/@codor/switchboard/dist/index.d.ts +44 -0
  316. package/node_modules/@codor/switchboard/dist/index.d.ts.map +1 -0
  317. package/node_modules/@codor/switchboard/dist/index.js +24 -0
  318. package/node_modules/@codor/switchboard/dist/index.js.map +1 -0
  319. package/node_modules/@codor/switchboard/dist/ledger/resolve.d.ts +12 -0
  320. package/node_modules/@codor/switchboard/dist/ledger/resolve.d.ts.map +1 -0
  321. package/node_modules/@codor/switchboard/dist/ledger/resolve.js +17 -0
  322. package/node_modules/@codor/switchboard/dist/ledger/resolve.js.map +1 -0
  323. package/node_modules/@codor/switchboard/dist/ledger/vault.d.ts +47 -0
  324. package/node_modules/@codor/switchboard/dist/ledger/vault.d.ts.map +1 -0
  325. package/node_modules/@codor/switchboard/dist/ledger/vault.js +175 -0
  326. package/node_modules/@codor/switchboard/dist/ledger/vault.js.map +1 -0
  327. package/node_modules/@codor/switchboard/dist/ledger/watch.d.ts +73 -0
  328. package/node_modules/@codor/switchboard/dist/ledger/watch.d.ts.map +1 -0
  329. package/node_modules/@codor/switchboard/dist/ledger/watch.js +232 -0
  330. package/node_modules/@codor/switchboard/dist/ledger/watch.js.map +1 -0
  331. package/node_modules/@codor/switchboard/dist/local-dirs.d.ts +14 -0
  332. package/node_modules/@codor/switchboard/dist/local-dirs.d.ts.map +1 -0
  333. package/node_modules/@codor/switchboard/dist/local-dirs.js +40 -0
  334. package/node_modules/@codor/switchboard/dist/local-dirs.js.map +1 -0
  335. package/node_modules/@codor/switchboard/dist/local-socket.d.ts +3 -0
  336. package/node_modules/@codor/switchboard/dist/local-socket.d.ts.map +1 -0
  337. package/node_modules/@codor/switchboard/dist/local-socket.js +16 -0
  338. package/node_modules/@codor/switchboard/dist/local-socket.js.map +1 -0
  339. package/node_modules/@codor/switchboard/dist/pricing.d.ts +32 -0
  340. package/node_modules/@codor/switchboard/dist/pricing.d.ts.map +1 -0
  341. package/node_modules/@codor/switchboard/dist/pricing.js +64 -0
  342. package/node_modules/@codor/switchboard/dist/pricing.js.map +1 -0
  343. package/node_modules/@codor/switchboard/dist/process-liveness.d.ts +2 -0
  344. package/node_modules/@codor/switchboard/dist/process-liveness.d.ts.map +1 -0
  345. package/node_modules/@codor/switchboard/dist/process-liveness.js +9 -0
  346. package/node_modules/@codor/switchboard/dist/process-liveness.js.map +1 -0
  347. package/node_modules/@codor/switchboard/dist/push/producer.d.ts +54 -0
  348. package/node_modules/@codor/switchboard/dist/push/producer.d.ts.map +1 -0
  349. package/node_modules/@codor/switchboard/dist/push/producer.js +168 -0
  350. package/node_modules/@codor/switchboard/dist/push/producer.js.map +1 -0
  351. package/node_modules/@codor/switchboard/dist/push/subscriptions.d.ts +29 -0
  352. package/node_modules/@codor/switchboard/dist/push/subscriptions.d.ts.map +1 -0
  353. package/node_modules/@codor/switchboard/dist/push/subscriptions.js +83 -0
  354. package/node_modules/@codor/switchboard/dist/push/subscriptions.js.map +1 -0
  355. package/node_modules/@codor/switchboard/dist/redact.d.ts +11 -0
  356. package/node_modules/@codor/switchboard/dist/redact.d.ts.map +1 -0
  357. package/node_modules/@codor/switchboard/dist/redact.js +65 -0
  358. package/node_modules/@codor/switchboard/dist/redact.js.map +1 -0
  359. package/node_modules/@codor/switchboard/dist/residency.d.ts +110 -0
  360. package/node_modules/@codor/switchboard/dist/residency.d.ts.map +1 -0
  361. package/node_modules/@codor/switchboard/dist/residency.js +587 -0
  362. package/node_modules/@codor/switchboard/dist/residency.js.map +1 -0
  363. package/node_modules/@codor/switchboard/dist/router.d.ts +120 -0
  364. package/node_modules/@codor/switchboard/dist/router.d.ts.map +1 -0
  365. package/node_modules/@codor/switchboard/dist/router.js +198 -0
  366. package/node_modules/@codor/switchboard/dist/router.js.map +1 -0
  367. package/node_modules/@codor/switchboard/dist/server.d.ts +50 -0
  368. package/node_modules/@codor/switchboard/dist/server.d.ts.map +1 -0
  369. package/node_modules/@codor/switchboard/dist/server.js +1425 -0
  370. package/node_modules/@codor/switchboard/dist/server.js.map +1 -0
  371. package/node_modules/@codor/switchboard/dist/store.d.ts +534 -0
  372. package/node_modules/@codor/switchboard/dist/store.d.ts.map +1 -0
  373. package/node_modules/@codor/switchboard/dist/store.js +2625 -0
  374. package/node_modules/@codor/switchboard/dist/store.js.map +1 -0
  375. package/node_modules/@codor/switchboard/dist/transport/hyperswarm.d.ts +59 -0
  376. package/node_modules/@codor/switchboard/dist/transport/hyperswarm.d.ts.map +1 -0
  377. package/node_modules/@codor/switchboard/dist/transport/hyperswarm.js +183 -0
  378. package/node_modules/@codor/switchboard/dist/transport/hyperswarm.js.map +1 -0
  379. package/node_modules/@codor/switchboard/dist/transport/peer.d.ts +87 -0
  380. package/node_modules/@codor/switchboard/dist/transport/peer.d.ts.map +1 -0
  381. package/node_modules/@codor/switchboard/dist/transport/peer.js +316 -0
  382. package/node_modules/@codor/switchboard/dist/transport/peer.js.map +1 -0
  383. package/node_modules/@codor/switchboard/dist/working-directory.d.ts +2 -0
  384. package/node_modules/@codor/switchboard/dist/working-directory.d.ts.map +1 -0
  385. package/node_modules/@codor/switchboard/dist/working-directory.js +26 -0
  386. package/node_modules/@codor/switchboard/dist/working-directory.js.map +1 -0
  387. package/node_modules/@codor/switchboard/package.json +33 -0
  388. package/package.json +58 -0
@@ -0,0 +1,120 @@
1
+ import { type Member, type Message, type ParsedBody, type RoomConfig } from '@codor/protocol';
2
+ export { isAddressable, parseBody } from '@codor/protocol';
3
+ export type { ParsedBody } from '@codor/protocol';
4
+ /**
5
+ * The pure router — PROTOCOL §3 as functions over (message, room state).
6
+ * No IO, no store: the daemon feeds it context and materializes its output.
7
+ */
8
+ export interface EligibilityContext {
9
+ /** The room member row for the message author. */
10
+ author: Member | undefined;
11
+ /** The message this one replies to, when reply_to is set. */
12
+ repliedTo?: Message;
13
+ }
14
+ /**
15
+ * Routing eligibility comes FIRST. Routed: `chat` authored by a human,
16
+ * agent, or bridge member, and FINALIZED `run` messages. Never routed:
17
+ * `system` messages, `ask`/`approval` cards, anything authored by the
18
+ * system member, and chat replies to a card (audit replies) — none of
19
+ * these may ever trigger an agent turn. A finalized run with an EMPTY body
20
+ * (interrupted turn, or a model deliberately replying with nothing) is not
21
+ * routable either: an empty body can mention nobody, so routing it could
22
+ * only fire the untagged default — which live-looped two agents through
23
+ * endless empty acknowledgment turns (found in M0 acceptance).
24
+ */
25
+ export declare function isRoutable(message: Message, ctx: EligibilityContext): boolean;
26
+ export interface RoutingContext extends EligibilityContext {
27
+ /** Full room roster. */
28
+ members: Member[];
29
+ /** Current channel metadata used by the fresh-channel default chain. */
30
+ roomConfig: RoomConfig;
31
+ /** Author id of the latest FINALIZED agent message, if any ever finished. */
32
+ latestFinalizedAgentAuthor?: string;
33
+ /**
34
+ * For agent-authored messages: author of the delivery that triggered the
35
+ * run (for a batched turn, the author of the LAST delivery in the batch).
36
+ */
37
+ triggerAuthor?: string;
38
+ }
39
+ export interface RouteResult {
40
+ routable: boolean;
41
+ parsed: ParsedBody;
42
+ /** Agent recipients — each becomes a queued delivery feeding a turn. */
43
+ agents: Member[];
44
+ /** Human recipients — inbox records only, never turns. */
45
+ humans: Member[];
46
+ /** True when nothing resolves: room commentary, delivered to nobody. */
47
+ commentary: boolean;
48
+ /** Finalized agent message contained unresolvable handle-shaped tokens. */
49
+ misaddressed: boolean;
50
+ }
51
+ /**
52
+ * Mentions select recipients; content is never split. The recipient set is
53
+ * the union of valid mentions (duplicates collapse, self-mentions ignored);
54
+ * a mentionless message falls back to the default recipient rule.
55
+ */
56
+ export declare function resolveRecipients(message: Message, ctx: RoutingContext): RouteResult;
57
+ export interface ResolvedRef {
58
+ id: number;
59
+ author_handle: string;
60
+ ts: string;
61
+ body: string;
62
+ }
63
+ export interface DeliveryBriefingContext {
64
+ /** Omitted for grouped rounds, where unmentioned final results close the group. */
65
+ conventions?: {
66
+ untaggedGoesTo?: string;
67
+ ledger?: boolean;
68
+ liveInbox?: boolean;
69
+ };
70
+ roster?: {
71
+ handle: string;
72
+ kind: Member['kind'];
73
+ purpose?: string;
74
+ }[];
75
+ }
76
+ export interface PayloadContext extends DeliveryBriefingContext {
77
+ room: string;
78
+ message: Message;
79
+ authorHandle: string;
80
+ authorKind: Member['kind'];
81
+ /** All recipient handles, mention order — identical on every delivery. */
82
+ toHandles: string[];
83
+ refs: ResolvedRef[];
84
+ ledgerRefs?: {
85
+ name: string;
86
+ body: string;
87
+ }[];
88
+ awaitingReply?: boolean;
89
+ }
90
+ export declare function composeDeliveryBriefing(ctx: DeliveryBriefingContext): string;
91
+ /**
92
+ * The exact bytes a recipient session receives — pinned by goldens in
93
+ * router.spec.ts. Keep payloads lean: sessions pay tokens for every byte.
94
+ */
95
+ export declare function composePayload(ctx: PayloadContext, you: string): string;
96
+ /**
97
+ * Fan-out: one payload per recipient, byte-identical except the `you=`
98
+ * field — the whole body plus all resolved refs, never per-mention slices.
99
+ */
100
+ export declare function composeDeliveryPayloads(ctx: PayloadContext, recipients: Member[]): Map<string, string>;
101
+ export interface BrakeStats {
102
+ /** Consecutive agent→agent deliveries since the last human message. */
103
+ consecutiveAgentDeliveries: number;
104
+ /** Cost accumulated today from cost-reporting members. */
105
+ spendTodayUsd: number;
106
+ }
107
+ export type BrakeVerdict = {
108
+ hold: false;
109
+ } | {
110
+ hold: true;
111
+ reason: 'turn_brake' | 'spend_brake';
112
+ };
113
+ /**
114
+ * Opt-in brakes (PROTOCOL §3): with the default null config NOTHING holds —
115
+ * chains run until the work is done. A configured turn brake holds the next
116
+ * delivery once the agent→agent chain reaches the limit; a spend brake
117
+ * holds once today's cost reaches the threshold.
118
+ */
119
+ export declare function evaluateBrakes(config: RoomConfig, stats: BrakeStats): BrakeVerdict;
120
+ //# sourceMappingURL=router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,198 @@
1
+ import { effectiveDefaultAgent, isAddressable, parseBody, } from '@codor/protocol';
2
+ export { isAddressable, parseBody } from '@codor/protocol';
3
+ // harn:assume substantive-routing-excludes-acknowledgements ref=substantive-run-eligibility
4
+ /**
5
+ * Routing eligibility comes FIRST. Routed: `chat` authored by a human,
6
+ * agent, or bridge member, and FINALIZED `run` messages. Never routed:
7
+ * `system` messages, `ask`/`approval` cards, anything authored by the
8
+ * system member, and chat replies to a card (audit replies) — none of
9
+ * these may ever trigger an agent turn. A finalized run with an EMPTY body
10
+ * (interrupted turn, or a model deliberately replying with nothing) is not
11
+ * routable either: an empty body can mention nobody, so routing it could
12
+ * only fire the untagged default — which live-looped two agents through
13
+ * endless empty acknowledgment turns (found in M0 acceptance).
14
+ */
15
+ export function isRoutable(message, ctx) {
16
+ if (!ctx.author)
17
+ return false;
18
+ if (ctx.author.kind === 'system' || ctx.author.kind === 'extension')
19
+ return false;
20
+ if (message.kind === 'system' || message.kind === 'ask' || message.kind === 'approval') {
21
+ return false;
22
+ }
23
+ if (message.kind === 'run') {
24
+ return (message.ack !== true &&
25
+ message.run !== undefined &&
26
+ message.run.status !== 'running' &&
27
+ message.body.trim() !== '');
28
+ }
29
+ // chat: audit replies on cards never route
30
+ if (message.reply_to !== undefined &&
31
+ ctx.repliedTo !== undefined &&
32
+ (ctx.repliedTo.kind === 'ask' || ctx.repliedTo.kind === 'approval')) {
33
+ return false;
34
+ }
35
+ return true;
36
+ }
37
+ const NO_ROUTE = {
38
+ routable: false,
39
+ agents: [],
40
+ humans: [],
41
+ commentary: false,
42
+ misaddressed: false,
43
+ };
44
+ /**
45
+ * Mentions select recipients; content is never split. The recipient set is
46
+ * the union of valid mentions (duplicates collapse, self-mentions ignored);
47
+ * a mentionless message falls back to the default recipient rule.
48
+ */
49
+ export function resolveRecipients(message, ctx) {
50
+ const parsed = message.ack === true
51
+ ? { mentions: [], refs: [], ledger_refs: [], unresolved: [] }
52
+ : parseBody(message.body, ctx.members);
53
+ if (!isRoutable(message, ctx))
54
+ return { ...NO_ROUTE, parsed };
55
+ const byId = new Map(ctx.members.map((m) => [m.id, m]));
56
+ const recipients = [];
57
+ for (const span of parsed.mentions) {
58
+ if (span.member_id === message.author)
59
+ continue; // self-mentions ignored
60
+ const member = byId.get(span.member_id);
61
+ if (member && !recipients.some((r) => r.id === member.id))
62
+ recipients.push(member);
63
+ }
64
+ // harn:assume default-recipient-fallback-chain ref=substantive-default-recipient
65
+ // Zero valid mentions → human/bridge messages default to the author of the
66
+ // latest FINALIZED agent message, then the live configured starting agent,
67
+ // then a sole live agent (running placeholders never become "latest");
68
+ // agent messages default to whoever triggered the run (last delivery of a
69
+ // batch). No candidate → room commentary, delivered to nobody.
70
+ if (recipients.length === 0) {
71
+ const authorKind = ctx.author.kind;
72
+ const fallback = authorKind === 'agent'
73
+ ? (ctx.triggerAuthor === undefined ? undefined : byId.get(ctx.triggerAuthor))
74
+ : effectiveDefaultAgent({
75
+ members: ctx.members,
76
+ latestFinalizedAgentId: ctx.latestFinalizedAgentAuthor,
77
+ startingAgentHandle: ctx.roomConfig.starting_agent_handle,
78
+ });
79
+ if (fallback && fallback.id !== message.author && isAddressable(fallback)) {
80
+ recipients.push(fallback);
81
+ }
82
+ }
83
+ // harn:end default-recipient-fallback-chain
84
+ // harn:assume human-deliveries-are-inbox-records ref=recipient-split
85
+ // Humans never get turns: the daemon materializes the humans list as inbox
86
+ // records (read_ts lifecycle, WS inbox frames); only agents produce
87
+ // queued deliveries that feed adapter turns.
88
+ const agents = recipients.filter((r) => r.kind === 'agent');
89
+ const humans = recipients.filter((r) => r.kind === 'human');
90
+ // harn:end human-deliveries-are-inbox-records
91
+ const misaddressed = ctx.author.kind === 'agent' &&
92
+ (message.kind !== 'run' || message.run?.status !== 'running') &&
93
+ parsed.unresolved.length > 0;
94
+ return {
95
+ routable: true,
96
+ parsed,
97
+ agents,
98
+ humans,
99
+ commentary: recipients.length === 0,
100
+ misaddressed,
101
+ };
102
+ }
103
+ const minuteUtc = (ts) => `${ts.slice(0, 16)}Z`;
104
+ // harn:assume roster-briefing-refreshes-on-membership ref=roster-payload-block
105
+ export function composeDeliveryBriefing(ctx) {
106
+ let payload = '';
107
+ if (ctx.roster) {
108
+ payload += '\n[roster:\n';
109
+ for (const member of ctx.roster) {
110
+ payload += `@${member.handle} (${member.kind}${member.purpose ? `, ${member.purpose}` : ''})\n`;
111
+ }
112
+ payload += ']\n';
113
+ }
114
+ if (ctx.conventions) {
115
+ // harn:assume collaboration-briefing-is-capability-aware ref=collaboration-conventions
116
+ // harn:assume agent-briefings-distinguish-invocation-from-discussion ref=explicit-invocation-conventions
117
+ const untagged = ctx.conventions.untaggedGoesTo === undefined
118
+ ? ''
119
+ : ` An untagged reply goes to @${ctx.conventions.untaggedGoesTo}.`;
120
+ payload +=
121
+ `\n[conventions: your normal final reply posts to the channel automatically. ` +
122
+ `An @mention invokes that member and auto-sends your message; write the member's ` +
123
+ `plain name without @ when merely discussing them.${untagged} ` +
124
+ `Reference messages as #N.${ctx.conventions.ledger ? ' Cite ledger notes as [[name]].' : ''} ` +
125
+ `Use codor post only for interim updates and --wait when a direct reply is required; ` +
126
+ `on timeout, check codor status and renew while the peer is active. ` +
127
+ `${ctx.conventions.liveInbox ? '' : 'During long tasks, check codor inbox --new. '}` +
128
+ `Use codor search --runs before asking about unseen referenced context. ` +
129
+ `Use <ACK_OK> as your entire reply only when a message needs no action and no answer; ` +
130
+ `never append it after doing work or as a sign-off.]\n`;
131
+ // harn:end agent-briefings-distinguish-invocation-from-discussion
132
+ // harn:end collaboration-briefing-is-capability-aware
133
+ }
134
+ return payload;
135
+ }
136
+ // harn:end roster-briefing-refreshes-on-membership
137
+ // harn:assume ledger-home-only-refs-travel ref=ledger-aware-payload
138
+ /**
139
+ * The exact bytes a recipient session receives — pinned by goldens in
140
+ * router.spec.ts. Keep payloads lean: sessions pay tokens for every byte.
141
+ */
142
+ export function composePayload(ctx, you) {
143
+ const to = ctx.toHandles.map((h) => `@${h}`).join(' ');
144
+ // harn:assume codor-delivery-header-identifies-channel ref=delivery-header-template
145
+ // harn:assume awaiting-reply-marker-is-delivery-context ref=awaiting-reply-header
146
+ const headerKind = ctx.awaitingReply ? 'chat, awaiting reply' : ctx.authorKind;
147
+ let payload = `[codor channel=${ctx.room} msg=#${ctx.message.id} from=@${ctx.authorHandle} (${headerKind})\n` +
148
+ ` to=${to} · you=@${you}]\n` +
149
+ `\n` +
150
+ `${ctx.message.body}\n`;
151
+ // harn:end awaiting-reply-marker-is-delivery-context
152
+ // harn:end codor-delivery-header-identifies-channel
153
+ for (const ref of ctx.refs) {
154
+ payload +=
155
+ `\n--- referenced #${ref.id} · @${ref.author_handle} · ${minuteUtc(ref.ts)} ---\n` +
156
+ `${ref.body}\n` +
157
+ `--- end reference ---\n`;
158
+ }
159
+ for (const ref of ctx.ledgerRefs ?? []) {
160
+ payload +=
161
+ `\n--- ledger [[${ref.name}]] ---\n` +
162
+ `${ref.body}\n` +
163
+ `--- end ledger note ---\n`;
164
+ }
165
+ payload += composeDeliveryBriefing(ctx);
166
+ return payload;
167
+ }
168
+ // harn:end ledger-home-only-refs-travel
169
+ // harn:assume whole-message-delivery ref=payload-fanout
170
+ /**
171
+ * Fan-out: one payload per recipient, byte-identical except the `you=`
172
+ * field — the whole body plus all resolved refs, never per-mention slices.
173
+ */
174
+ export function composeDeliveryPayloads(ctx, recipients) {
175
+ const payloads = new Map();
176
+ for (const recipient of recipients) {
177
+ payloads.set(recipient.id, composePayload(ctx, recipient.handle));
178
+ }
179
+ return payloads;
180
+ }
181
+ // harn:assume brakes-opt-in-hold ref=brake-evaluation
182
+ /**
183
+ * Opt-in brakes (PROTOCOL §3): with the default null config NOTHING holds —
184
+ * chains run until the work is done. A configured turn brake holds the next
185
+ * delivery once the agent→agent chain reaches the limit; a spend brake
186
+ * holds once today's cost reaches the threshold.
187
+ */
188
+ export function evaluateBrakes(config, stats) {
189
+ if (config.turn_brake !== null && stats.consecutiveAgentDeliveries >= config.turn_brake) {
190
+ return { hold: true, reason: 'turn_brake' };
191
+ }
192
+ if (config.spend_brake_usd !== null && stats.spendTodayUsd >= config.spend_brake_usd) {
193
+ return { hold: true, reason: 'spend_brake' };
194
+ }
195
+ return { hold: false };
196
+ }
197
+ // harn:end brakes-opt-in-hold
198
+ //# sourceMappingURL=router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ import { type FastifyInstance } from 'fastify';
2
+ import type { CryptoVault } from './crypto/pairing.js';
3
+ import { type Daemon } from './daemon.js';
4
+ import type { PushSubscriptionStore } from './push/subscriptions.js';
5
+ export interface ServerOptions {
6
+ daemon: Daemon;
7
+ /** Single pairing token — the authenticated principal IS the room owner. */
8
+ token: string;
9
+ /** Optional pre-enrolled local principals; enrollment/directory service is out of scope. */
10
+ principals?: readonly {
11
+ token: string;
12
+ member_id: string;
13
+ }[];
14
+ host?: string;
15
+ port?: number;
16
+ /** Serve the built web SPA from this directory (the switchboard IS the web host). */
17
+ staticRoot?: string;
18
+ /** Local CLI transport; filesystem mode is 0600 and no bearer token crosses it. */
19
+ socketPath?: string;
20
+ /** Device enrollment and room-key authority for this switchboard. */
21
+ crypto?: CryptoVault;
22
+ /** Paired browser Web Push destinations; content remains on the switchboard. */
23
+ pushSubscriptions?: PushSubscriptionStore;
24
+ /** Public VAPID application-server key used by browser PushManager.subscribe. */
25
+ pushVapidPublicKey?: string;
26
+ /** True only when the producer has a validated relay destination. */
27
+ pushRelayEnabled?: boolean;
28
+ /** Trust Tailscale Serve's injected identity header for browser enrollment. */
29
+ trustTailscaleServe?: boolean;
30
+ /** Testable operator-home boundary; defaults to the process home. */
31
+ homeDir?: string;
32
+ /** Observe-only when omitted/zero; a positive value gates browser UI hydration. */
33
+ minimumBrowserProtocol?: number;
34
+ /** Test/operations hook fired when a browser reports a positive protocol epoch. */
35
+ onBrowserProtocolObserved?: (protocol: number) => void;
36
+ }
37
+ export interface RunningServer {
38
+ app: FastifyInstance;
39
+ port: number;
40
+ socketPath?: string;
41
+ observedBrowserProtocols(): number[];
42
+ close(): Promise<void>;
43
+ }
44
+ /**
45
+ * The API surface: one WebSocket (subscribe/post/act) + small REST (sync,
46
+ * blob fetch, room + member management). Everything served here has already
47
+ * passed the daemon's redaction projection.
48
+ */
49
+ export declare function startServer(options: ServerOptions): Promise<RunningServer>;
50
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAQA,OAAgB,EAAE,KAAK,eAAe,EAA0C,MAAM,SAAS,CAAC;AAqBhG,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,KAAK,MAAM,EAAwB,MAAM,aAAa,CAAC;AAGhE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAErE,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,KAAK,EAAE,MAAM,CAAC;IACd,4FAA4F;IAC5F,UAAU,CAAC,EAAE,SAAS;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC7D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qFAAqF;IACrF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mFAAmF;IACnF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qEAAqE;IACrE,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,gFAAgF;IAChF,iBAAiB,CAAC,EAAE,qBAAqB,CAAC;IAC1C,iFAAiF;IACjF,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,qEAAqE;IACrE,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,+EAA+E;IAC/E,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mFAAmF;IACnF,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,mFAAmF;IACnF,yBAAyB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CACxD;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,eAAe,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wBAAwB,IAAI,MAAM,EAAE,CAAC;IACrC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AA0ED;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAmzChF"}