@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,184 @@
1
+ function stringField(data, key) {
2
+ const value = data[key];
3
+ return typeof value === 'string' ? value : undefined;
4
+ }
5
+ function numberField(data, key) {
6
+ const value = data[key];
7
+ return typeof value === 'number' && Number.isFinite(value) ? value : undefined;
8
+ }
9
+ const MAX_OUTPUT = 256 * 1024;
10
+ function outputText(value) {
11
+ const text = typeof value === 'string' ? value : value === undefined ? undefined : JSON.stringify(value);
12
+ if (text === undefined || Buffer.byteLength(text) <= MAX_OUTPUT)
13
+ return text;
14
+ const marker = '\n[output truncated at 256 KiB]';
15
+ const markerBytes = Buffer.byteLength(marker);
16
+ let prefix = Buffer.from(text).subarray(0, MAX_OUTPUT - markerBytes).toString('utf8');
17
+ while (Buffer.byteLength(prefix) + markerBytes > MAX_OUTPUT)
18
+ prefix = prefix.slice(0, -1);
19
+ return `${prefix}${marker}`;
20
+ }
21
+ // harn:assume copilot-capability-truth ref=copilot-event-translation
22
+ /** Translate first-party documented Copilot session event envelopes. */
23
+ export function createTurnTranslator(sessionId) {
24
+ const streamedMessages = new Map();
25
+ let finalText = '';
26
+ let streamError;
27
+ let inputTokens = 0;
28
+ let outputTokens = 0;
29
+ let hasUsage = false;
30
+ let terminal = false;
31
+ return {
32
+ push(line) {
33
+ if (line.trim() === '')
34
+ return [];
35
+ let event;
36
+ try {
37
+ event = JSON.parse(line);
38
+ }
39
+ catch {
40
+ return [];
41
+ }
42
+ const data = event.data ?? {};
43
+ // harn:assume first-party-run-items-normalized ref=copilot-normalized-run-items
44
+ switch (event.type) {
45
+ case 'assistant.message_delta': {
46
+ if (stringField(data, 'parentToolCallId') !== undefined)
47
+ return [];
48
+ const messageId = stringField(data, 'messageId');
49
+ const delta = stringField(data, 'deltaContent') ?? '';
50
+ if (messageId === undefined)
51
+ return [];
52
+ const text = `${streamedMessages.get(messageId) ?? ''}${delta}`;
53
+ streamedMessages.set(messageId, text);
54
+ finalText = text;
55
+ return [{ type: 'run.item', item_type: 'text_delta', payload: { text: delta } }];
56
+ }
57
+ case 'assistant.message': {
58
+ if (stringField(data, 'parentToolCallId') !== undefined)
59
+ return [];
60
+ const messageId = stringField(data, 'messageId');
61
+ const content = stringField(data, 'content') ?? '';
62
+ finalText = content;
63
+ if (messageId !== undefined && streamedMessages.has(messageId))
64
+ return [];
65
+ return content === ''
66
+ ? []
67
+ : [{ type: 'run.item', item_type: 'text_delta', payload: { text: content } }];
68
+ }
69
+ case 'assistant.reasoning':
70
+ if (stringField(data, 'parentToolCallId') !== undefined)
71
+ return [];
72
+ return [
73
+ {
74
+ type: 'run.item',
75
+ item_type: 'reasoning_summary',
76
+ payload: { text: stringField(data, 'content') ?? '' },
77
+ },
78
+ ];
79
+ case 'tool.execution_start':
80
+ return [
81
+ {
82
+ type: 'run.item',
83
+ item_type: 'tool_call',
84
+ payload: {
85
+ call_id: stringField(data, 'toolCallId') ?? 'copilot-tool',
86
+ tool: stringField(data, 'toolName') ?? 'tool',
87
+ title: stringField(data, 'toolName') ?? 'Tool call',
88
+ input: data.arguments ?? {},
89
+ },
90
+ },
91
+ ];
92
+ case 'tool.execution_complete':
93
+ return [
94
+ {
95
+ type: 'run.item',
96
+ item_type: 'tool_result',
97
+ payload: {
98
+ call_id: stringField(data, 'toolCallId') ?? 'copilot-tool',
99
+ status: data.success === false ? 'error' : 'ok',
100
+ output_text: outputText(data.success === false ? data.error : data.result),
101
+ raw: data,
102
+ },
103
+ },
104
+ ];
105
+ case 'assistant.usage':
106
+ hasUsage = true;
107
+ inputTokens += numberField(data, 'inputTokens') ?? 0;
108
+ outputTokens += numberField(data, 'outputTokens') ?? 0;
109
+ return [];
110
+ case 'session.error':
111
+ streamError = stringField(data, 'message') ?? stringField(data, 'errorType');
112
+ return [
113
+ {
114
+ type: 'run.item',
115
+ item_type: 'tool_result',
116
+ payload: {
117
+ call_id: 'copilot-error',
118
+ status: 'error',
119
+ output_text: outputText(streamError),
120
+ raw: data,
121
+ },
122
+ },
123
+ ];
124
+ case 'subagent.started': {
125
+ const toolCallId = stringField(data, 'toolCallId');
126
+ if (toolCallId === undefined)
127
+ return [];
128
+ return [
129
+ {
130
+ type: 'extension.started',
131
+ parent: sessionId,
132
+ ext_member: toolCallId,
133
+ ...(stringField(data, 'agentDisplayName') !== undefined && {
134
+ description: stringField(data, 'agentDisplayName'),
135
+ }),
136
+ ...(stringField(data, 'agentName') !== undefined && {
137
+ agent_type: stringField(data, 'agentName'),
138
+ }),
139
+ },
140
+ ];
141
+ }
142
+ case 'subagent.completed':
143
+ case 'subagent.failed': {
144
+ const toolCallId = stringField(data, 'toolCallId');
145
+ if (toolCallId === undefined)
146
+ return [];
147
+ return [
148
+ {
149
+ type: 'extension.ended',
150
+ ext_member: toolCallId,
151
+ ...(event.type === 'subagent.failed' && stringField(data, 'error') !== undefined && {
152
+ summary: stringField(data, 'error'),
153
+ }),
154
+ },
155
+ ];
156
+ }
157
+ default:
158
+ return [];
159
+ }
160
+ // harn:end first-party-run-items-normalized
161
+ },
162
+ end(outcome) {
163
+ if (terminal)
164
+ return [];
165
+ terminal = true;
166
+ const resolvedText = outcome.final_text ?? (finalText || streamError);
167
+ const status = outcome.status === 'completed' && streamError !== undefined
168
+ ? 'failed'
169
+ : outcome.status;
170
+ return [
171
+ {
172
+ type: 'run.completed',
173
+ status,
174
+ ...(resolvedText !== undefined && resolvedText !== '' && { final_text: resolvedText }),
175
+ ...(hasUsage && {
176
+ usage: { input_tokens: inputTokens, output_tokens: outputTokens },
177
+ }),
178
+ },
179
+ ];
180
+ },
181
+ };
182
+ }
183
+ // harn:end copilot-capability-truth
184
+ //# sourceMappingURL=translate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"translate.js","sourceRoot":"","sources":["../src/translate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ {
2
+ "name": "@codor/adapter-copilot",
3
+ "version": "0.10.0",
4
+ "license": "MIT",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "default": "./dist/index.js"
12
+ }
13
+ },
14
+ "dependencies": {
15
+ "@codor/protocol": "0.10.0",
16
+ "cross-spawn": "^7.0.6"
17
+ }
18
+ }
@@ -0,0 +1,32 @@
1
+ import type { AdapterTurnHooks, HarnessAdapter, Session, SessionRef, SpawnOpts, WireEvent } from '@codor/protocol';
2
+ export declare function cursorArgs(session: Session, payload: string): string[];
3
+ /** Direct `cursor-agent` headless CLI driver. Mirrors the gemini adapter. */
4
+ export declare class CursorAdapter implements HarnessAdapter {
5
+ private readonly command;
6
+ readonly id = "cursor";
7
+ readonly capabilities: {
8
+ readonly resume: true;
9
+ readonly discover: false;
10
+ readonly interactiveAttach: false;
11
+ readonly ask: false;
12
+ readonly approvals: "spawn-time";
13
+ readonly extensions: false;
14
+ readonly thinking: false;
15
+ readonly live_inbox: false;
16
+ readonly policies: {
17
+ readonly 'read-only': "--mode plan";
18
+ readonly 'workspace-write': "--force --sandbox enabled";
19
+ readonly 'full-access': "--force --sandbox disabled";
20
+ };
21
+ };
22
+ private readonly children;
23
+ constructor(command?: string);
24
+ spawn(opts: SpawnOpts): Session;
25
+ attach(session_ref: SessionRef): Session;
26
+ deliver(session: Session, payload: string, hooks?: AdapterTurnHooks): AsyncIterable<WireEvent>;
27
+ interrupt(session: Session): void;
28
+ private signal;
29
+ respondInteraction(): Promise<void>;
30
+ discoverSessions(): SessionRef[];
31
+ }
32
+ //# sourceMappingURL=adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,gBAAgB,EAChB,cAAc,EACd,OAAO,EACP,UAAU,EACV,SAAS,EACT,SAAS,EACV,MAAM,iBAAiB,CAAC;AAwCzB,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAWtE;AAED,6EAA6E;AAC7E,qBAAa,aAAc,YAAW,cAAc;IAkBtC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAjBpC,QAAQ,CAAC,EAAE,YAAY;IACvB,QAAQ,CAAC,YAAY;;;;;;;;;;;;;;MAYV;IAEX,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwC;gBAEpC,OAAO,SAAiB;IAErD,KAAK,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO;IAc/B,MAAM,CAAC,WAAW,EAAE,UAAU,GAAG,OAAO;IAIjC,OAAO,CACZ,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,MAAM,EACf,KAAK,GAAE,gBAAqB,GAC3B,aAAa,CAAC,SAAS,CAAC;IAsE3B,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAKjC,OAAO,CAAC,MAAM;IASd,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAMnC,gBAAgB,IAAI,UAAU,EAAE;CAGjC"}
@@ -0,0 +1,179 @@
1
+ import { spawn } from 'node:child_process';
2
+ import { createInterface } from 'node:readline';
3
+ import { PolicySchema } from '@codor/protocol';
4
+ // harn:assume harness-declares-what-a-policy-becomes ref=cursor-policy-native-mapping
5
+ /**
6
+ * What each canonical policy becomes for `cursor-agent` in headless mode.
7
+ * read-only -> plan mode (no edits); workspace-write -> auto-run with the OS
8
+ * sandbox confining shell/filesystem to the workspace; full-access -> auto-run
9
+ * with the sandbox off. All three are distinct here.
10
+ */
11
+ const POLICY_NATIVE = {
12
+ 'read-only': '--mode plan',
13
+ 'workspace-write': '--force --sandbox enabled',
14
+ 'full-access': '--force --sandbox disabled',
15
+ };
16
+ // harn:end harness-declares-what-a-policy-becomes
17
+ function assertPolicy(policy) {
18
+ if (policy === undefined)
19
+ return;
20
+ if (!PolicySchema.safeParse(policy).success) {
21
+ throw new Error(`unknown policy '${policy}'; valid policies: ${PolicySchema.options.join(', ')}`);
22
+ }
23
+ }
24
+ function policyArgs(policy) {
25
+ if (policy === undefined)
26
+ return [];
27
+ assertPolicy(policy);
28
+ switch (policy) {
29
+ case 'read-only':
30
+ return ['--mode', 'plan'];
31
+ case 'workspace-write':
32
+ return ['--force', '--sandbox', 'enabled'];
33
+ case 'full-access':
34
+ return ['--force', '--sandbox', 'disabled'];
35
+ default:
36
+ return [];
37
+ }
38
+ }
39
+ // harn:assume canonical-spawn-controls-enforced ref=cursor-spawn-control-mapping
40
+ export function cursorArgs(session, payload) {
41
+ if (session.thinking !== undefined) {
42
+ throw new Error("adapter 'cursor' does not support thinking levels");
43
+ }
44
+ const args = ['-p', '--output-format', 'stream-json', '--stream-partial-output', '--trust'];
45
+ if (session.model !== undefined)
46
+ args.push('--model', session.model);
47
+ args.push(...policyArgs(session.policy));
48
+ if (session.session_ref !== undefined)
49
+ args.push('--resume', session.session_ref);
50
+ // `--` guards payloads that begin with a dash from being parsed as flags.
51
+ args.push('--', payload);
52
+ return args;
53
+ }
54
+ /** Direct `cursor-agent` headless CLI driver. Mirrors the gemini adapter. */
55
+ export class CursorAdapter {
56
+ command;
57
+ id = 'cursor';
58
+ capabilities = {
59
+ resume: true,
60
+ // `cursor-agent ls` requires a TTY (Ink raw mode), so sessions cannot be
61
+ // enumerated headlessly. Codor still resumes via the session_ref it persists.
62
+ discover: false,
63
+ interactiveAttach: false,
64
+ ask: false,
65
+ approvals: 'spawn-time',
66
+ extensions: false,
67
+ thinking: false,
68
+ live_inbox: false,
69
+ policies: POLICY_NATIVE,
70
+ };
71
+ children = new WeakMap();
72
+ constructor(command = 'cursor-agent') {
73
+ this.command = command;
74
+ }
75
+ spawn(opts) {
76
+ assertPolicy(opts.policy);
77
+ if (opts.thinking !== undefined) {
78
+ throw new Error("adapter 'cursor' does not support thinking levels");
79
+ }
80
+ return {
81
+ harness: this.id,
82
+ cwd: opts.cwd,
83
+ model: opts.model,
84
+ policy: opts.policy,
85
+ };
86
+ }
87
+ // harn:end canonical-spawn-controls-enforced
88
+ attach(session_ref) {
89
+ return { harness: this.id, session_ref, cwd: process.cwd() };
90
+ }
91
+ async *deliver(session, payload, hooks = {}) {
92
+ const { createTurnTranslator } = await import('./translate.js');
93
+ const args = cursorArgs(session, payload);
94
+ const child = spawn(this.command, args, {
95
+ cwd: session.cwd,
96
+ stdio: ['ignore', 'pipe', 'pipe'],
97
+ detached: true,
98
+ env: { ...process.env, ...session.env },
99
+ });
100
+ this.children.set(session, child);
101
+ let stderr = '';
102
+ child.stderr.setEncoding('utf8');
103
+ child.stderr.on('data', (chunk) => {
104
+ stderr = `${stderr}${chunk}`.slice(-8192);
105
+ });
106
+ let childError;
107
+ const spawned = new Promise((resolve, reject) => {
108
+ child.once('spawn', resolve);
109
+ child.once('error', (error) => {
110
+ childError = error;
111
+ reject(error);
112
+ });
113
+ });
114
+ const closed = new Promise((resolve) => child.once('close', (code, signal) => resolve({ code, signal })));
115
+ const translator = createTurnTranslator();
116
+ let reportedSessionRef;
117
+ const reportSessionRef = () => {
118
+ const discovered = translator.sessionId();
119
+ if (discovered === undefined || discovered === reportedSessionRef)
120
+ return;
121
+ session.session_ref = discovered;
122
+ reportedSessionRef = discovered;
123
+ hooks.onSessionRef?.(discovered);
124
+ };
125
+ try {
126
+ try {
127
+ await spawned;
128
+ }
129
+ catch (error) {
130
+ const detail = error instanceof Error ? error.message : String(error);
131
+ yield* translator.end({ status: 'failed', final_text: detail });
132
+ return;
133
+ }
134
+ hooks.onStarted?.({ pid: child.pid, process_group_id: child.pid });
135
+ const lines = createInterface({ input: child.stdout });
136
+ for await (const line of lines) {
137
+ for (const event of translator.push(line)) {
138
+ reportSessionRef();
139
+ yield event;
140
+ }
141
+ reportSessionRef();
142
+ }
143
+ const exit = await closed;
144
+ const failed = childError !== undefined || (exit.code !== null && exit.code !== 0);
145
+ const detail = stderr.trim() || childError?.message;
146
+ yield* translator.end({
147
+ status: failed ? 'failed' : 'interrupted',
148
+ ...(detail !== undefined && detail !== '' && { final_text: detail }),
149
+ });
150
+ }
151
+ finally {
152
+ this.children.delete(session);
153
+ if (child.exitCode === null && child.signalCode === null)
154
+ this.signal(child, 'SIGKILL');
155
+ }
156
+ }
157
+ interrupt(session) {
158
+ const child = this.children.get(session);
159
+ if (child)
160
+ this.signal(child, 'SIGINT');
161
+ }
162
+ signal(child, signal) {
163
+ if (child.pid === undefined)
164
+ return;
165
+ try {
166
+ process.kill(-child.pid, signal);
167
+ }
168
+ catch {
169
+ child.kill(signal);
170
+ }
171
+ }
172
+ respondInteraction() {
173
+ return Promise.reject(new Error('cursor headless stream-json exposes no interaction response channel'));
174
+ }
175
+ discoverSessions() {
176
+ return [];
177
+ }
178
+ }
179
+ //# sourceMappingURL=adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { CursorAdapter } from './adapter.js';
2
+ export { CursorAdapter, cursorArgs } from './adapter.js';
3
+ export { createTurnTranslator } from './translate.js';
4
+ export type { TurnTranslator } from './translate.js';
5
+ /** Factory for the `--adapter cursor=<module>` external-registration path. */
6
+ export declare function createAdapter(_config: {
7
+ id: string;
8
+ }): CursorAdapter;
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,8EAA8E;AAC9E,wBAAgB,aAAa,CAAC,OAAO,EAAE;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,aAAa,CAEpE"}
@@ -0,0 +1,8 @@
1
+ import { CursorAdapter } from './adapter.js';
2
+ export { CursorAdapter, cursorArgs } from './adapter.js';
3
+ export { createTurnTranslator } from './translate.js';
4
+ /** Factory for the `--adapter cursor=<module>` external-registration path. */
5
+ export function createAdapter(_config) {
6
+ return new CursorAdapter();
7
+ }
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAGtD,8EAA8E;AAC9E,MAAM,UAAU,aAAa,CAAC,OAAuB;IACnD,OAAO,IAAI,aAAa,EAAE,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { WireEvent } from '@codor/protocol';
2
+ export interface TurnTranslator {
3
+ push(line: string): WireEvent[];
4
+ end(fallback?: {
5
+ status: 'failed' | 'interrupted';
6
+ final_text?: string;
7
+ }): WireEvent[];
8
+ sessionId(): string | undefined;
9
+ }
10
+ /**
11
+ * Translate the `cursor-agent` stream-json event vocabulary into WireEvents.
12
+ * Event shapes are documented in NOTES.md (captured from the live CLI).
13
+ */
14
+ export declare function createTurnTranslator(): TurnTranslator;
15
+ //# sourceMappingURL=translate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"translate.d.ts","sourceRoot":"","sources":["../src/translate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAsBjD,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,CAAC;IAChC,GAAG,CAAC,QAAQ,CAAC,EAAE;QAAE,MAAM,EAAE,QAAQ,GAAG,aAAa,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,EAAE,CAAC;IACvF,SAAS,IAAI,MAAM,GAAG,SAAS,CAAC;CACjC;AAoCD;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,cAAc,CA+HrD"}
@@ -0,0 +1,164 @@
1
+ const MAX_OUTPUT = 256 * 1024;
2
+ function boundedOutput(value) {
3
+ if (value === undefined || Buffer.byteLength(value) <= MAX_OUTPUT)
4
+ return value;
5
+ const marker = '\n[output truncated at 256 KiB]';
6
+ const markerBytes = Buffer.byteLength(marker);
7
+ let prefix = Buffer.from(value).subarray(0, MAX_OUTPUT - markerBytes).toString('utf8');
8
+ while (Buffer.byteLength(prefix) + markerBytes > MAX_OUTPUT)
9
+ prefix = prefix.slice(0, -1);
10
+ return `${prefix}${marker}`;
11
+ }
12
+ function assistantText(event) {
13
+ return (event.message?.content ?? [])
14
+ .filter((part) => part.type === 'text' || part.type === undefined)
15
+ .map((part) => part.text ?? '')
16
+ .join('');
17
+ }
18
+ /** `{ shellToolCall: {...} }` -> ['shell', innerObject]. */
19
+ function toolEntry(event) {
20
+ const map = event.tool_call ?? {};
21
+ const key = Object.keys(map)[0];
22
+ if (key === undefined)
23
+ return { name: 'tool', inner: {} };
24
+ return { name: key.replace(/ToolCall$/, '') || 'tool', inner: map[key] ?? {} };
25
+ }
26
+ /** A short, human-facing detail line for a tool call, best-effort per tool shape. */
27
+ function toolDetail(name, args) {
28
+ if (typeof args !== 'object' || args === null)
29
+ return undefined;
30
+ const a = args;
31
+ const pick = (v) => (typeof v === 'string' && v !== '' ? v : undefined);
32
+ return pick(a['command']) ?? pick(a['path']) ?? pick(a['description']) ?? pick(a['query']);
33
+ }
34
+ /**
35
+ * Translate the `cursor-agent` stream-json event vocabulary into WireEvents.
36
+ * Event shapes are documented in NOTES.md (captured from the live CLI).
37
+ */
38
+ export function createTurnTranslator() {
39
+ let sessionId;
40
+ let finalText = '';
41
+ let terminal = false;
42
+ return {
43
+ sessionId: () => sessionId,
44
+ push(line) {
45
+ if (line.trim() === '')
46
+ return [];
47
+ let event;
48
+ try {
49
+ event = JSON.parse(line);
50
+ }
51
+ catch {
52
+ return [];
53
+ }
54
+ switch (event.type) {
55
+ case 'system':
56
+ if (event.subtype === 'init' && typeof event.session_id === 'string') {
57
+ sessionId = event.session_id;
58
+ }
59
+ return [];
60
+ case 'thinking':
61
+ if (event.subtype !== 'delta' || !event.text)
62
+ return [];
63
+ return [{ type: 'run.item', item_type: 'reasoning_summary', payload: { text: event.text } }];
64
+ case 'assistant': {
65
+ // Streaming deltas carry timestamp_ms; the final cumulative echo does not.
66
+ // Emit only the deltas so text is not counted twice.
67
+ if (event.timestamp_ms === undefined)
68
+ return [];
69
+ const text = assistantText(event);
70
+ if (text === '')
71
+ return [];
72
+ finalText += text;
73
+ return [{ type: 'run.item', item_type: 'text_delta', payload: { text } }];
74
+ }
75
+ case 'tool_call': {
76
+ const { name, inner } = toolEntry(event);
77
+ const callId = event.call_id ?? `cursor-${name}`;
78
+ if (event.subtype === 'started') {
79
+ const detail = toolDetail(name, inner.args);
80
+ return [
81
+ {
82
+ type: 'run.item',
83
+ item_type: 'tool_call',
84
+ payload: {
85
+ call_id: callId,
86
+ tool: name,
87
+ title: detail ?? name,
88
+ ...(detail !== undefined && { detail }),
89
+ input: inner.args ?? {},
90
+ },
91
+ },
92
+ ];
93
+ }
94
+ if (event.subtype === 'completed') {
95
+ const result = inner.result;
96
+ const ok = result === undefined || 'success' in result;
97
+ return [
98
+ {
99
+ type: 'run.item',
100
+ item_type: 'tool_result',
101
+ payload: {
102
+ call_id: callId,
103
+ status: ok ? 'ok' : 'error',
104
+ output_text: boundedOutput(result === undefined ? undefined : JSON.stringify(result)),
105
+ raw: event,
106
+ },
107
+ },
108
+ ];
109
+ }
110
+ return [];
111
+ }
112
+ case 'result': {
113
+ // A stream can carry more than one result event. The daemon finalizes
114
+ // on the first `run.completed`, so a second one arrives against an
115
+ // already-settled turn — the flag below was set here but never read,
116
+ // which is exactly how that second frame escaped.
117
+ if (terminal)
118
+ return [];
119
+ terminal = true;
120
+ const completed = event.subtype === 'success' && event.is_error !== true;
121
+ // Prefer the text assembled from streamed `text_delta`s so `final_text`
122
+ // matches codor's journaled prose byte-for-byte. cursor's `result` is a
123
+ // whitespace-normalized echo (e.g. it can gain a leading newline); when it
124
+ // diverges from the streamed text, codor's residual de-dupe fails to match
125
+ // and re-appends the whole reply, doubling it. Fall back to `result` only
126
+ // when nothing was streamed.
127
+ const resultText = typeof event.result === 'string' ? event.result : '';
128
+ const text = finalText !== '' ? finalText : resultText;
129
+ const usage = event.usage === undefined
130
+ ? undefined
131
+ : {
132
+ input_tokens: event.usage.inputTokens ?? 0,
133
+ output_tokens: event.usage.outputTokens ?? 0,
134
+ };
135
+ return [
136
+ {
137
+ type: 'run.completed',
138
+ status: completed ? 'completed' : 'failed',
139
+ ...(text !== '' && { final_text: text }),
140
+ ...(usage !== undefined && { usage }),
141
+ },
142
+ ];
143
+ }
144
+ default:
145
+ return [];
146
+ }
147
+ },
148
+ end(fallback = { status: 'interrupted' }) {
149
+ if (terminal)
150
+ return [];
151
+ terminal = true;
152
+ return [
153
+ {
154
+ type: 'run.completed',
155
+ status: fallback.status,
156
+ ...(fallback.final_text !== undefined || finalText !== ''
157
+ ? { final_text: fallback.final_text ?? finalText }
158
+ : {}),
159
+ },
160
+ ];
161
+ },
162
+ };
163
+ }
164
+ //# sourceMappingURL=translate.js.map