kimaki 0.31.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1001) hide show
  1. package/dist/agent-ui.d.ts +33 -0
  2. package/dist/agent-ui.e2e.test.d.ts +1 -0
  3. package/dist/agent-ui.e2e.test.js +140 -0
  4. package/dist/agent-ui.e2e.test.js.map +1 -0
  5. package/dist/agent-ui.js +199 -0
  6. package/dist/agent-ui.js.map +1 -0
  7. package/dist/analytics.d.ts +42 -0
  8. package/dist/analytics.e2e.test.d.ts +1 -0
  9. package/dist/analytics.e2e.test.js +112 -0
  10. package/dist/analytics.e2e.test.js.map +1 -0
  11. package/dist/analytics.js +162 -223
  12. package/dist/analytics.js.map +1 -0
  13. package/dist/analytics.test.d.ts +1 -0
  14. package/dist/analytics.test.js +121 -157
  15. package/dist/analytics.test.js.map +1 -0
  16. package/dist/autostart.d.ts +7 -0
  17. package/dist/autostart.js +87 -0
  18. package/dist/autostart.js.map +1 -0
  19. package/dist/bot.d.ts +91 -0
  20. package/dist/bot.js +120 -0
  21. package/dist/bot.js.map +1 -0
  22. package/dist/btw.e2e.test.d.ts +1 -0
  23. package/dist/btw.e2e.test.js +102 -0
  24. package/dist/btw.e2e.test.js.map +1 -0
  25. package/dist/builtin-skills.d.ts +18 -0
  26. package/dist/builtin-skills.js +51 -0
  27. package/dist/builtin-skills.js.map +1 -0
  28. package/dist/builtin-skills.test.d.ts +1 -0
  29. package/dist/builtin-skills.test.js +28 -0
  30. package/dist/builtin-skills.test.js.map +1 -0
  31. package/dist/catalog-refresh.e2e.test.d.ts +1 -0
  32. package/dist/catalog-refresh.e2e.test.js +90 -0
  33. package/dist/catalog-refresh.e2e.test.js.map +1 -0
  34. package/dist/cli/bot.d.ts +5 -0
  35. package/dist/cli/bot.js +434 -0
  36. package/dist/cli/bot.js.map +1 -0
  37. package/dist/cli/discord.d.ts +3 -0
  38. package/dist/cli/discord.js +118 -0
  39. package/dist/cli/discord.js.map +1 -0
  40. package/dist/cli/project.d.ts +5 -0
  41. package/dist/cli/project.js +143 -0
  42. package/dist/cli/project.js.map +1 -0
  43. package/dist/cli/schedule.d.ts +3 -0
  44. package/dist/cli/schedule.js +156 -0
  45. package/dist/cli/schedule.js.map +1 -0
  46. package/dist/cli/session.d.ts +4 -0
  47. package/dist/cli/session.js +245 -0
  48. package/dist/cli/session.js.map +1 -0
  49. package/dist/cli/shared.d.ts +55 -0
  50. package/dist/cli/shared.js +138 -0
  51. package/dist/cli/shared.js.map +1 -0
  52. package/dist/cli-discord.e2e.test.d.ts +1 -0
  53. package/dist/cli-discord.e2e.test.js +82 -0
  54. package/dist/cli-discord.e2e.test.js.map +1 -0
  55. package/dist/cli-lock.e2e.test.d.ts +1 -0
  56. package/dist/cli-lock.e2e.test.js +520 -0
  57. package/dist/cli-lock.e2e.test.js.map +1 -0
  58. package/dist/cli-read.e2e.test.d.ts +1 -0
  59. package/dist/cli-read.e2e.test.js +86 -0
  60. package/dist/cli-read.e2e.test.js.map +1 -0
  61. package/dist/cli-sessions.e2e.test.d.ts +1 -0
  62. package/dist/cli-sessions.e2e.test.js +116 -0
  63. package/dist/cli-sessions.e2e.test.js.map +1 -0
  64. package/dist/cli.d.ts +2 -0
  65. package/dist/cli.js +34 -263
  66. package/dist/cli.js.map +1 -0
  67. package/dist/commands/login-commands.d.ts +59 -0
  68. package/dist/commands/login-commands.js +341 -0
  69. package/dist/commands/login-commands.js.map +1 -0
  70. package/dist/commands/preference-commands.d.ts +44 -0
  71. package/dist/commands/preference-commands.js +565 -0
  72. package/dist/commands/preference-commands.js.map +1 -0
  73. package/dist/commands/session-commands.d.ts +8 -0
  74. package/dist/commands/session-commands.js +267 -0
  75. package/dist/commands/session-commands.js.map +1 -0
  76. package/dist/commands/thread-commands.d.ts +16 -0
  77. package/dist/commands/thread-commands.js +285 -0
  78. package/dist/commands/thread-commands.js.map +1 -0
  79. package/dist/commands/worktree-commands.d.ts +41 -0
  80. package/dist/commands/worktree-commands.js +279 -0
  81. package/dist/commands/worktree-commands.js.map +1 -0
  82. package/dist/commands.e2e.test.d.ts +1 -0
  83. package/dist/commands.e2e.test.js +255 -0
  84. package/dist/commands.e2e.test.js.map +1 -0
  85. package/dist/credentials.d.ts +84 -0
  86. package/dist/credentials.js +320 -0
  87. package/dist/credentials.js.map +1 -0
  88. package/dist/db.d.ts +1532 -0
  89. package/dist/db.js +57 -245
  90. package/dist/db.js.map +1 -0
  91. package/dist/db.test.d.ts +1 -0
  92. package/dist/db.test.js +351 -682
  93. package/dist/db.test.js.map +1 -0
  94. package/dist/duration.d.ts +2 -0
  95. package/dist/duration.js +18 -0
  96. package/dist/duration.js.map +1 -0
  97. package/dist/effects.d.ts +15 -0
  98. package/dist/effects.js +315 -0
  99. package/dist/effects.js.map +1 -0
  100. package/dist/errors.d.ts +38 -0
  101. package/dist/errors.js +40 -175
  102. package/dist/errors.js.map +1 -0
  103. package/dist/event-loop.d.ts +41 -0
  104. package/dist/event-loop.js +418 -0
  105. package/dist/event-loop.js.map +1 -0
  106. package/dist/file-edit-log.d.ts +41 -0
  107. package/dist/file-edit-log.js +122 -164
  108. package/dist/file-edit-log.js.map +1 -0
  109. package/dist/file-edit-log.test.d.ts +1 -0
  110. package/dist/file-edit-log.test.js +68 -244
  111. package/dist/file-edit-log.test.js.map +1 -0
  112. package/dist/format-parts.d.ts +137 -0
  113. package/dist/format-parts.js +300 -0
  114. package/dist/format-parts.js.map +1 -0
  115. package/dist/format-parts.test.d.ts +1 -0
  116. package/dist/format-parts.test.js +144 -0
  117. package/dist/format-parts.test.js.map +1 -0
  118. package/dist/gateway-replay.e2e.test.d.ts +1 -0
  119. package/dist/gateway-replay.e2e.test.js +95 -0
  120. package/dist/gateway-replay.e2e.test.js.map +1 -0
  121. package/dist/harness.e2e.test.d.ts +1 -0
  122. package/dist/harness.e2e.test.js +107 -0
  123. package/dist/harness.e2e.test.js.map +1 -0
  124. package/dist/hello-thread.e2e.test.d.ts +1 -0
  125. package/dist/hello-thread.e2e.test.js +194 -0
  126. package/dist/hello-thread.e2e.test.js.map +1 -0
  127. package/dist/ingress.d.ts +7 -0
  128. package/dist/ingress.js +337 -0
  129. package/dist/ingress.js.map +1 -0
  130. package/dist/interaction-context.d.ts +45 -0
  131. package/dist/interaction-context.js +77 -0
  132. package/dist/interaction-context.js.map +1 -0
  133. package/dist/interrupt.e2e.test.d.ts +1 -0
  134. package/dist/interrupt.e2e.test.js +124 -0
  135. package/dist/interrupt.e2e.test.js.map +1 -0
  136. package/dist/legacy.e2e.test.d.ts +1 -0
  137. package/dist/legacy.e2e.test.js +85 -0
  138. package/dist/legacy.e2e.test.js.map +1 -0
  139. package/dist/live-call.d.ts +51 -0
  140. package/dist/live-call.js +207 -0
  141. package/dist/live-call.js.map +1 -0
  142. package/dist/lock-routes.d.ts +812 -0
  143. package/dist/lock-routes.js +635 -0
  144. package/dist/lock-routes.js.map +1 -0
  145. package/dist/lock-server.d.ts +36 -0
  146. package/dist/lock-server.js +223 -0
  147. package/dist/lock-server.js.map +1 -0
  148. package/dist/logger.d.ts +13 -0
  149. package/dist/logger.js +112 -162
  150. package/dist/logger.js.map +1 -0
  151. package/dist/login.e2e.test.d.ts +1 -0
  152. package/dist/login.e2e.test.js +83 -0
  153. package/dist/login.e2e.test.js.map +1 -0
  154. package/dist/main.d.ts +33 -0
  155. package/dist/main.js +261 -0
  156. package/dist/main.js.map +1 -0
  157. package/dist/markdown/components.d.ts +10 -0
  158. package/dist/markdown/components.js +77 -0
  159. package/dist/markdown/components.js.map +1 -0
  160. package/dist/markdown/markdown.test.d.ts +1 -0
  161. package/dist/markdown/markdown.test.js +393 -0
  162. package/dist/markdown/markdown.test.js.map +1 -0
  163. package/dist/markdown/render-markdown.d.ts +30 -0
  164. package/dist/markdown/render-markdown.js +265 -0
  165. package/dist/markdown/render-markdown.js.map +1 -0
  166. package/dist/message-tool.e2e.test.d.ts +1 -0
  167. package/dist/message-tool.e2e.test.js +39 -0
  168. package/dist/message-tool.e2e.test.js.map +1 -0
  169. package/dist/migrations.d.ts +8 -0
  170. package/dist/migrations.js +187 -0
  171. package/dist/migrations.js.map +1 -0
  172. package/dist/onboarding-cli.e2e.test.d.ts +1 -0
  173. package/dist/onboarding-cli.e2e.test.js +178 -0
  174. package/dist/onboarding-cli.e2e.test.js.map +1 -0
  175. package/dist/onboarding.d.ts +36 -0
  176. package/dist/onboarding.e2e.test.d.ts +1 -0
  177. package/dist/onboarding.e2e.test.js +148 -0
  178. package/dist/onboarding.e2e.test.js.map +1 -0
  179. package/dist/onboarding.js +261 -0
  180. package/dist/onboarding.js.map +1 -0
  181. package/dist/opencode-server.d.ts +54 -0
  182. package/dist/opencode-server.js +417 -0
  183. package/dist/opencode-server.js.map +1 -0
  184. package/dist/opencode-server.test.d.ts +1 -0
  185. package/dist/opencode-server.test.js +21 -0
  186. package/dist/opencode-server.test.js.map +1 -0
  187. package/dist/permissions.d.ts +31 -0
  188. package/dist/permissions.e2e.test.d.ts +1 -0
  189. package/dist/permissions.e2e.test.js +166 -0
  190. package/dist/permissions.e2e.test.js.map +1 -0
  191. package/dist/permissions.js +95 -0
  192. package/dist/permissions.js.map +1 -0
  193. package/dist/plugin/anthropic/index.d.ts +13 -0
  194. package/dist/plugin/anthropic/index.js +201 -0
  195. package/dist/plugin/anthropic/index.js.map +1 -0
  196. package/dist/plugin/anthropic/index.test.d.ts +1 -0
  197. package/dist/plugin/anthropic/index.test.js +39 -0
  198. package/dist/plugin/anthropic/index.test.js.map +1 -0
  199. package/dist/plugin/index.d.ts +3 -0
  200. package/dist/plugin/index.js +124 -0
  201. package/dist/plugin/index.js.map +1 -0
  202. package/dist/plugin/read-media.d.ts +23 -0
  203. package/dist/plugin/read-media.js +72 -0
  204. package/dist/plugin/read-media.js.map +1 -0
  205. package/dist/plugin/session-id/index.d.ts +3 -0
  206. package/dist/plugin/session-id/index.js +18 -0
  207. package/dist/plugin/session-id/index.js.map +1 -0
  208. package/dist/plugin.e2e.test.d.ts +1 -0
  209. package/dist/plugin.e2e.test.js +92 -0
  210. package/dist/plugin.e2e.test.js.map +1 -0
  211. package/dist/preference-commands.e2e.test.d.ts +1 -0
  212. package/dist/preference-commands.e2e.test.js +555 -0
  213. package/dist/preference-commands.e2e.test.js.map +1 -0
  214. package/dist/probe-live.tmp.d.ts +1 -0
  215. package/dist/probe-live.tmp.js +82 -0
  216. package/dist/probe-live.tmp.js.map +1 -0
  217. package/dist/project.d.ts +58 -0
  218. package/dist/project.js +169 -0
  219. package/dist/project.js.map +1 -0
  220. package/dist/prompt.d.ts +112 -0
  221. package/dist/prompt.js +577 -0
  222. package/dist/prompt.js.map +1 -0
  223. package/dist/questions.d.ts +59 -0
  224. package/dist/questions.e2e.test.d.ts +1 -0
  225. package/dist/questions.e2e.test.js +290 -0
  226. package/dist/questions.e2e.test.js.map +1 -0
  227. package/dist/questions.js +231 -0
  228. package/dist/questions.js.map +1 -0
  229. package/dist/queue.d.ts +45 -0
  230. package/dist/queue.e2e.test.d.ts +1 -0
  231. package/dist/queue.e2e.test.js +220 -0
  232. package/dist/queue.e2e.test.js.map +1 -0
  233. package/dist/queue.js +132 -0
  234. package/dist/queue.js.map +1 -0
  235. package/dist/remote-send.d.ts +32 -0
  236. package/dist/remote-send.e2e.test.d.ts +1 -0
  237. package/dist/remote-send.e2e.test.js +89 -0
  238. package/dist/remote-send.e2e.test.js.map +1 -0
  239. package/dist/remote-send.js +105 -0
  240. package/dist/remote-send.js.map +1 -0
  241. package/dist/renderer.e2e.test.d.ts +1 -0
  242. package/dist/renderer.e2e.test.js +357 -0
  243. package/dist/renderer.e2e.test.js.map +1 -0
  244. package/dist/restart.e2e.test.d.ts +1 -0
  245. package/dist/restart.e2e.test.js +68 -0
  246. package/dist/restart.e2e.test.js.map +1 -0
  247. package/dist/routes.d.ts +24 -0
  248. package/dist/routes.js +42 -0
  249. package/dist/routes.js.map +1 -0
  250. package/dist/routes.test.d.ts +1 -0
  251. package/dist/routes.test.js +79 -0
  252. package/dist/routes.test.js.map +1 -0
  253. package/dist/routines.e2e.test.d.ts +1 -0
  254. package/dist/routines.e2e.test.js +188 -0
  255. package/dist/routines.e2e.test.js.map +1 -0
  256. package/dist/scheduler.d.ts +116 -0
  257. package/dist/scheduler.e2e.test.d.ts +1 -0
  258. package/dist/scheduler.e2e.test.js +163 -0
  259. package/dist/scheduler.e2e.test.js.map +1 -0
  260. package/dist/scheduler.js +602 -0
  261. package/dist/scheduler.js.map +1 -0
  262. package/dist/scheduler.test.d.ts +1 -0
  263. package/dist/scheduler.test.js +180 -0
  264. package/dist/scheduler.test.js.map +1 -0
  265. package/dist/schema-sql.d.ts +1 -0
  266. package/dist/schema-sql.js +3 -0
  267. package/dist/schema-sql.js.map +1 -0
  268. package/dist/schema.d.ts +2968 -0
  269. package/dist/schema.js +95 -252
  270. package/dist/schema.js.map +1 -0
  271. package/dist/session-commands.e2e.test.d.ts +1 -0
  272. package/dist/session-commands.e2e.test.js +285 -0
  273. package/dist/session-commands.e2e.test.js.map +1 -0
  274. package/dist/session-events.d.ts +83 -0
  275. package/dist/session-events.js +260 -0
  276. package/dist/session-events.js.map +1 -0
  277. package/dist/session-ops.e2e.test.d.ts +1 -0
  278. package/dist/session-ops.e2e.test.js +114 -0
  279. package/dist/session-ops.e2e.test.js.map +1 -0
  280. package/dist/sessions.d.ts +121 -0
  281. package/dist/sessions.js +663 -0
  282. package/dist/sessions.js.map +1 -0
  283. package/dist/shell.e2e.test.d.ts +1 -0
  284. package/dist/shell.e2e.test.js +147 -0
  285. package/dist/shell.e2e.test.js.map +1 -0
  286. package/dist/slash-commands.d.ts +62 -0
  287. package/dist/slash-commands.js +476 -0
  288. package/dist/slash-commands.js.map +1 -0
  289. package/dist/slash-commands.test.d.ts +1 -0
  290. package/dist/slash-commands.test.js +87 -0
  291. package/dist/slash-commands.test.js.map +1 -0
  292. package/dist/sleep.e2e.test.d.ts +1 -0
  293. package/dist/sleep.e2e.test.js +115 -487
  294. package/dist/sleep.e2e.test.js.map +1 -0
  295. package/dist/sleeps.d.ts +37 -0
  296. package/dist/sleeps.js +220 -0
  297. package/dist/sleeps.js.map +1 -0
  298. package/dist/store.d.ts +10 -0
  299. package/dist/store.js +8 -28
  300. package/dist/store.js.map +1 -0
  301. package/dist/system-prompt.d.ts +76 -0
  302. package/dist/system-prompt.js +852 -0
  303. package/dist/system-prompt.js.map +1 -0
  304. package/dist/tasks.e2e.test.d.ts +1 -0
  305. package/dist/tasks.e2e.test.js +173 -0
  306. package/dist/tasks.e2e.test.js.map +1 -0
  307. package/dist/test/auth-plugin/index.d.ts +3 -0
  308. package/dist/test/auth-plugin/index.js +18 -0
  309. package/dist/test/auth-plugin/index.js.map +1 -0
  310. package/dist/test/fake-mcp-server.d.ts +1 -0
  311. package/dist/test/fake-mcp-server.js +45 -0
  312. package/dist/test/fake-mcp-server.js.map +1 -0
  313. package/dist/test/harness.d.ts +246 -0
  314. package/dist/test/harness.js +704 -0
  315. package/dist/test/harness.js.map +1 -0
  316. package/dist/test/replay.d.ts +14 -0
  317. package/dist/test/replay.js +75 -0
  318. package/dist/test/replay.js.map +1 -0
  319. package/dist/thread-reducer.d.ts +172 -0
  320. package/dist/thread-reducer.fixtures.test.d.ts +1 -0
  321. package/dist/thread-reducer.fixtures.test.js +360 -0
  322. package/dist/thread-reducer.fixtures.test.js.map +1 -0
  323. package/dist/thread-reducer.js +497 -0
  324. package/dist/thread-reducer.js.map +1 -0
  325. package/dist/thread-reducer.test.d.ts +1 -0
  326. package/dist/thread-reducer.test.js +369 -0
  327. package/dist/thread-reducer.test.js.map +1 -0
  328. package/dist/tts.test.d.ts +1 -0
  329. package/dist/tts.test.js +147 -0
  330. package/dist/tts.test.js.map +1 -0
  331. package/dist/voice-agent.d.ts +33 -0
  332. package/dist/voice-agent.js +159 -0
  333. package/dist/voice-agent.js.map +1 -0
  334. package/dist/voice-attachments.e2e.test.d.ts +1 -0
  335. package/dist/voice-attachments.e2e.test.js +256 -0
  336. package/dist/voice-attachments.e2e.test.js.map +1 -0
  337. package/dist/voice-call.d.ts +59 -0
  338. package/dist/voice-call.e2e.test.d.ts +1 -0
  339. package/dist/voice-call.e2e.test.js +259 -0
  340. package/dist/voice-call.e2e.test.js.map +1 -0
  341. package/dist/voice-call.js +760 -0
  342. package/dist/voice-call.js.map +1 -0
  343. package/dist/voice-openai.e2e.test.d.ts +1 -0
  344. package/dist/voice-openai.e2e.test.js +161 -0
  345. package/dist/voice-openai.e2e.test.js.map +1 -0
  346. package/dist/voice.d.ts +116 -0
  347. package/dist/voice.js +619 -717
  348. package/dist/voice.js.map +1 -0
  349. package/dist/working-directory.e2e.test.d.ts +1 -0
  350. package/dist/working-directory.e2e.test.js +231 -0
  351. package/dist/working-directory.e2e.test.js.map +1 -0
  352. package/dist/worktrees.d.ts +54 -0
  353. package/dist/worktrees.js +247 -709
  354. package/dist/worktrees.js.map +1 -0
  355. package/dist/worktrees.test.d.ts +1 -0
  356. package/dist/worktrees.test.js +97 -952
  357. package/dist/worktrees.test.js.map +1 -0
  358. package/package.json +38 -73
  359. package/skills/kimaki-debug/SKILL.md +44 -0
  360. package/skills/kimaki-tunnel/SKILL.md +34 -0
  361. package/src/agent-ui.e2e.test.ts +134 -0
  362. package/src/agent-ui.ts +216 -0
  363. package/src/analytics.e2e.test.ts +138 -0
  364. package/src/analytics.test.ts +122 -182
  365. package/src/analytics.ts +206 -258
  366. package/src/autostart.ts +90 -0
  367. package/src/bot.ts +196 -0
  368. package/src/btw.e2e.test.ts +130 -0
  369. package/src/builtin-skills.test.ts +29 -0
  370. package/src/builtin-skills.ts +59 -0
  371. package/src/catalog-refresh.e2e.test.ts +112 -0
  372. package/src/cli/bot.ts +425 -0
  373. package/src/cli/discord.ts +116 -0
  374. package/src/cli/project.ts +147 -0
  375. package/src/cli/schedule.ts +151 -0
  376. package/src/cli/session.ts +252 -0
  377. package/src/cli/shared.ts +139 -0
  378. package/src/cli-discord.e2e.test.ts +79 -0
  379. package/src/cli-lock.e2e.test.ts +530 -0
  380. package/src/cli-read.e2e.test.ts +83 -0
  381. package/src/cli-sessions.e2e.test.ts +120 -0
  382. package/src/cli.ts +35 -418
  383. package/src/commands/login-commands.ts +360 -0
  384. package/src/commands/preference-commands.ts +599 -0
  385. package/src/commands/session-commands.ts +289 -0
  386. package/src/commands/thread-commands.ts +324 -0
  387. package/src/commands/worktree-commands.ts +288 -0
  388. package/src/commands.e2e.test.ts +290 -0
  389. package/src/credentials.ts +425 -0
  390. package/src/db.test.ts +344 -759
  391. package/src/db.ts +66 -284
  392. package/src/duration.ts +18 -0
  393. package/src/effects.ts +337 -0
  394. package/src/errors.ts +39 -228
  395. package/src/event-loop.ts +471 -0
  396. package/src/file-edit-log.test.ts +68 -272
  397. package/src/file-edit-log.ts +108 -231
  398. package/src/fixtures/v1-schema.sql +241 -0
  399. package/src/fixtures/voice.ogg +0 -0
  400. package/src/format-parts.test.ts +150 -0
  401. package/src/format-parts.ts +405 -0
  402. package/src/gateway-replay.e2e.test.ts +116 -0
  403. package/src/harness.e2e.test.ts +124 -0
  404. package/src/hello-thread.e2e.test.ts +223 -0
  405. package/src/ingress.ts +334 -0
  406. package/src/interaction-context.ts +131 -0
  407. package/src/interrupt.e2e.test.ts +151 -0
  408. package/src/legacy.e2e.test.ts +105 -0
  409. package/src/live-call.ts +249 -0
  410. package/src/lock-routes.ts +625 -0
  411. package/src/lock-server.ts +233 -0
  412. package/src/logger.ts +120 -207
  413. package/src/login.e2e.test.ts +86 -0
  414. package/src/main.ts +238 -0
  415. package/src/markdown/components.ts +102 -0
  416. package/src/markdown/markdown.test.ts +414 -0
  417. package/src/markdown/render-markdown.ts +288 -0
  418. package/src/migrations.ts +198 -0
  419. package/src/onboarding-cli.e2e.test.ts +215 -0
  420. package/src/onboarding.e2e.test.ts +171 -0
  421. package/src/onboarding.ts +297 -0
  422. package/src/opencode-server.test.ts +24 -0
  423. package/src/opencode-server.ts +464 -0
  424. package/src/permissions.e2e.test.ts +191 -0
  425. package/src/permissions.ts +121 -0
  426. package/src/plugin/anthropic/index.test.ts +39 -0
  427. package/src/plugin/anthropic/index.ts +213 -0
  428. package/src/plugin/index.ts +112 -0
  429. package/src/plugin.e2e.test.ts +117 -0
  430. package/src/preference-commands.e2e.test.ts +597 -0
  431. package/src/project.ts +216 -0
  432. package/src/prompt.ts +664 -0
  433. package/src/questions.e2e.test.ts +328 -0
  434. package/src/questions.ts +322 -0
  435. package/src/queue.e2e.test.ts +253 -0
  436. package/src/queue.ts +158 -0
  437. package/src/remote-send.e2e.test.ts +91 -0
  438. package/src/remote-send.ts +110 -0
  439. package/src/renderer.e2e.test.ts +390 -0
  440. package/src/restart.e2e.test.ts +90 -0
  441. package/src/routes.test.ts +81 -0
  442. package/src/routes.ts +48 -0
  443. package/src/routines.e2e.test.ts +210 -0
  444. package/src/scheduler.e2e.test.ts +182 -0
  445. package/src/scheduler.test.ts +183 -0
  446. package/src/scheduler.ts +648 -0
  447. package/src/schema-sql.ts +3 -0
  448. package/src/schema.ts +95 -271
  449. package/src/session-commands.e2e.test.ts +326 -0
  450. package/src/session-events.ts +301 -0
  451. package/src/session-ops.e2e.test.ts +141 -0
  452. package/src/sessions.ts +804 -0
  453. package/src/shell.e2e.test.ts +173 -0
  454. package/src/slash-commands.test.ts +89 -0
  455. package/src/slash-commands.ts +540 -0
  456. package/src/sleep.e2e.test.ts +135 -552
  457. package/src/sleeps.ts +230 -0
  458. package/src/store.ts +19 -217
  459. package/src/system-prompt.ts +923 -0
  460. package/src/test/auth-plugin/index.ts +17 -0
  461. package/src/test/fake-mcp-server.ts +49 -0
  462. package/src/test/harness.ts +957 -0
  463. package/src/test/replay.ts +90 -0
  464. package/src/thread-reducer.fixtures.test.ts +374 -0
  465. package/src/thread-reducer.test.ts +380 -0
  466. package/src/thread-reducer.ts +671 -0
  467. package/src/tts.test.ts +150 -0
  468. package/src/voice-agent.ts +196 -0
  469. package/src/voice-attachments.e2e.test.ts +301 -0
  470. package/src/voice-call.e2e.test.ts +293 -0
  471. package/src/voice-call.ts +764 -0
  472. package/src/voice-openai.e2e.test.ts +191 -0
  473. package/src/voice.ts +668 -988
  474. package/src/working-directory.e2e.test.ts +226 -0
  475. package/src/worktrees.test.ts +89 -1115
  476. package/src/worktrees.ts +195 -957
  477. package/bin.js +0 -2
  478. package/dist/agent-model.e2e.test.js +0 -1223
  479. package/dist/ai-tool-to-genai.js +0 -233
  480. package/dist/ai-tool-to-genai.test.js +0 -267
  481. package/dist/ai-tool.js +0 -6
  482. package/dist/anthropic-account-identity.js +0 -70
  483. package/dist/anthropic-account-identity.test.js +0 -38
  484. package/dist/anthropic-auth-plugin.js +0 -958
  485. package/dist/anthropic-auth-plugin.test.js +0 -115
  486. package/dist/anthropic-auth-state.js +0 -186
  487. package/dist/anthropic-auth-state.test.js +0 -203
  488. package/dist/bash-tool-schema-plugin.js +0 -50
  489. package/dist/bash-tool-schema-plugin.test.js +0 -68
  490. package/dist/bin.js +0 -151
  491. package/dist/bot-lifecycle.test.js +0 -206
  492. package/dist/btw-prefix-detection.js +0 -24
  493. package/dist/btw-prefix-detection.test.js +0 -130
  494. package/dist/cache-drift-plugin.js +0 -183
  495. package/dist/cache-rewrite.js +0 -39
  496. package/dist/cache-rewrite.test.js +0 -41
  497. package/dist/channel-management.js +0 -347
  498. package/dist/cli-commands/bot.js +0 -254
  499. package/dist/cli-commands/maintenance.js +0 -171
  500. package/dist/cli-commands/misc.js +0 -153
  501. package/dist/cli-commands/project.js +0 -510
  502. package/dist/cli-commands/send.js +0 -659
  503. package/dist/cli-commands/session.js +0 -889
  504. package/dist/cli-commands/task.js +0 -277
  505. package/dist/cli-commands/thread.js +0 -63
  506. package/dist/cli-commands/user.js +0 -145
  507. package/dist/cli-parsing.test.js +0 -226
  508. package/dist/cli-runner.js +0 -1591
  509. package/dist/cli-runner.test.js +0 -119
  510. package/dist/cli-send-thread.e2e.test.js +0 -470
  511. package/dist/cloudflare-transcription.js +0 -56
  512. package/dist/commands/abort.js +0 -84
  513. package/dist/commands/action-buttons.js +0 -248
  514. package/dist/commands/add-project.js +0 -111
  515. package/dist/commands/agent.js +0 -658
  516. package/dist/commands/ask-question.js +0 -371
  517. package/dist/commands/ask-question.test.js +0 -150
  518. package/dist/commands/btw.js +0 -275
  519. package/dist/commands/compact.js +0 -117
  520. package/dist/commands/context-usage.js +0 -194
  521. package/dist/commands/context-usage.test.js +0 -49
  522. package/dist/commands/create-new-project.js +0 -138
  523. package/dist/commands/diff.js +0 -63
  524. package/dist/commands/file-upload.js +0 -280
  525. package/dist/commands/fork-subagent.js +0 -175
  526. package/dist/commands/fork.js +0 -291
  527. package/dist/commands/gemini-apikey.js +0 -123
  528. package/dist/commands/last-sessions.js +0 -129
  529. package/dist/commands/login.js +0 -893
  530. package/dist/commands/mcp.js +0 -239
  531. package/dist/commands/memory-snapshot.js +0 -24
  532. package/dist/commands/mention-mode.js +0 -42
  533. package/dist/commands/merge-worktree.js +0 -205
  534. package/dist/commands/model-variant.js +0 -390
  535. package/dist/commands/model.js +0 -1012
  536. package/dist/commands/multioauth.js +0 -425
  537. package/dist/commands/new-worktree.js +0 -625
  538. package/dist/commands/paginated-select.js +0 -57
  539. package/dist/commands/permissions.js +0 -327
  540. package/dist/commands/queue.js +0 -347
  541. package/dist/commands/queue.test.js +0 -15
  542. package/dist/commands/remove-project.js +0 -111
  543. package/dist/commands/restart-opencode-server.js +0 -133
  544. package/dist/commands/resume.js +0 -148
  545. package/dist/commands/run-command.js +0 -79
  546. package/dist/commands/screenshare.js +0 -307
  547. package/dist/commands/screenshare.test.js +0 -20
  548. package/dist/commands/session-id.js +0 -78
  549. package/dist/commands/session.js +0 -248
  550. package/dist/commands/share.js +0 -80
  551. package/dist/commands/tasks.js +0 -296
  552. package/dist/commands/types.js +0 -2
  553. package/dist/commands/undo-redo.js +0 -313
  554. package/dist/commands/unset-model.js +0 -116
  555. package/dist/commands/upgrade.js +0 -41
  556. package/dist/commands/user-command.js +0 -196
  557. package/dist/commands/verbosity.js +0 -124
  558. package/dist/commands/vscode.js +0 -295
  559. package/dist/commands/worktrees.js +0 -548
  560. package/dist/condense-memory.js +0 -33
  561. package/dist/config.js +0 -126
  562. package/dist/context-awareness-plugin.js +0 -357
  563. package/dist/context-awareness-plugin.test.js +0 -126
  564. package/dist/cpu-profiler.js +0 -211
  565. package/dist/cpu-profiler.test.js +0 -160
  566. package/dist/critique-utils.js +0 -95
  567. package/dist/database.js +0 -1074
  568. package/dist/debounce-timeout.js +0 -28
  569. package/dist/debounced-process-flush.js +0 -77
  570. package/dist/default-channel-provisioning.test.js +0 -149
  571. package/dist/discord-bot.js +0 -1432
  572. package/dist/discord-command-registration.js +0 -519
  573. package/dist/discord-command-registration.test.js +0 -17
  574. package/dist/discord-urls.js +0 -81
  575. package/dist/discord-utils.js +0 -789
  576. package/dist/discord-utils.test.js +0 -400
  577. package/dist/escape-backticks.test.js +0 -429
  578. package/dist/event-stream-real-capture.e2e.test.js +0 -533
  579. package/dist/eventsource-parser.test.js +0 -327
  580. package/dist/exec-async.js +0 -38
  581. package/dist/external-directory-permissions.e2e.test.js +0 -86
  582. package/dist/external-directory-project-deny.e2e.test.js +0 -70
  583. package/dist/external-opencode-sync.js +0 -620
  584. package/dist/external-opencode-sync.test.js +0 -206
  585. package/dist/extract-sdk-error-message.test.js +0 -13
  586. package/dist/format-tables.js +0 -728
  587. package/dist/format-tables.test.js +0 -915
  588. package/dist/forum-sync/config.js +0 -79
  589. package/dist/forum-sync/discord-operations.js +0 -157
  590. package/dist/forum-sync/index.js +0 -5
  591. package/dist/forum-sync/markdown.js +0 -110
  592. package/dist/forum-sync/sync-to-discord.js +0 -417
  593. package/dist/forum-sync/sync-to-files.js +0 -190
  594. package/dist/forum-sync/types.js +0 -53
  595. package/dist/forum-sync/watchers.js +0 -322
  596. package/dist/gateway-proxy-reconnect.e2e.test.js +0 -414
  597. package/dist/gateway-proxy.e2e.test.js +0 -488
  598. package/dist/genai-worker-wrapper.js +0 -111
  599. package/dist/genai-worker.js +0 -309
  600. package/dist/genai.js +0 -232
  601. package/dist/git-worktree-core.js +0 -461
  602. package/dist/guild-categories.test.js +0 -225
  603. package/dist/heap-monitor.js +0 -122
  604. package/dist/hrana-server.js +0 -322
  605. package/dist/hrana-server.test.js +0 -99
  606. package/dist/html-actions.js +0 -123
  607. package/dist/html-actions.test.js +0 -70
  608. package/dist/html-components.js +0 -115
  609. package/dist/html-components.test.js +0 -34
  610. package/dist/image-optimizer-plugin.js +0 -153
  611. package/dist/image-utils.js +0 -112
  612. package/dist/interaction-handler.js +0 -578
  613. package/dist/ipc-polling.js +0 -245
  614. package/dist/ipc-tools-plugin.js +0 -251
  615. package/dist/kimaki-digital-twin.e2e.test.js +0 -161
  616. package/dist/kimaki-opencode-plugin-loading.e2e.test.js +0 -158
  617. package/dist/kimaki-opencode-plugin.js +0 -33
  618. package/dist/kimaki-opencode-plugin.test.js +0 -126
  619. package/dist/kimaki-workspace-adaptor.js +0 -118
  620. package/dist/limit-heading-depth.js +0 -25
  621. package/dist/limit-heading-depth.test.js +0 -105
  622. package/dist/list-channel-threads.js +0 -163
  623. package/dist/list-channel-threads.test.js +0 -80
  624. package/dist/markdown.js +0 -455
  625. package/dist/markdown.test.js +0 -411
  626. package/dist/memory-overview-plugin.js +0 -123
  627. package/dist/message-formatting.js +0 -788
  628. package/dist/message-formatting.test.js +0 -1132
  629. package/dist/message-preprocessing.js +0 -419
  630. package/dist/oauth-rotation-shared.js +0 -253
  631. package/dist/onboarding-tutorial.js +0 -163
  632. package/dist/onboarding-welcome.js +0 -37
  633. package/dist/openai-auth-plugin.js +0 -125
  634. package/dist/openai-auth-state.js +0 -237
  635. package/dist/openai-realtime.js +0 -224
  636. package/dist/opencode-command-detection.js +0 -65
  637. package/dist/opencode-command-detection.test.js +0 -240
  638. package/dist/opencode-command.js +0 -181
  639. package/dist/opencode-command.test.js +0 -218
  640. package/dist/opencode-interrupt-plugin.js +0 -253
  641. package/dist/opencode-interrupt-plugin.test.js +0 -293
  642. package/dist/opencode.js +0 -1217
  643. package/dist/parse-permission-rules.test.js +0 -117
  644. package/dist/patch-text-parser.js +0 -97
  645. package/dist/plugin-logger.js +0 -105
  646. package/dist/plugin-opencode-client.js +0 -54
  647. package/dist/privacy-sanitizer.js +0 -105
  648. package/dist/project-add.test.js +0 -62
  649. package/dist/question-abort-clears-dropdown.e2e.test.js +0 -89
  650. package/dist/question-abort-resume.e2e.test.js +0 -100
  651. package/dist/question-abort-retry-text-before-dropdown.e2e.test.js +0 -150
  652. package/dist/question-text-before-dropdown.e2e.test.js +0 -52
  653. package/dist/queue-advanced-abort.e2e.test.js +0 -348
  654. package/dist/queue-advanced-action-buttons.e2e.test.js +0 -209
  655. package/dist/queue-advanced-e2e-setup.js +0 -1043
  656. package/dist/queue-advanced-footer.e2e.test.js +0 -286
  657. package/dist/queue-advanced-model-switch.e2e.test.js +0 -297
  658. package/dist/queue-advanced-permissions-typing.e2e.test.js +0 -189
  659. package/dist/queue-advanced-question.e2e.test.js +0 -266
  660. package/dist/queue-advanced-typing-interrupt.e2e.test.js +0 -113
  661. package/dist/queue-advanced-typing.e2e.test.js +0 -151
  662. package/dist/queue-delete-message.e2e.test.js +0 -216
  663. package/dist/queue-drain-after-interactive-ui.e2e.test.js +0 -120
  664. package/dist/queue-interrupt-drain.e2e.test.js +0 -256
  665. package/dist/queue-question-select-drain.e2e.test.js +0 -162
  666. package/dist/runtime-idle-sweeper.js +0 -52
  667. package/dist/runtime-lifecycle.e2e.test.js +0 -570
  668. package/dist/sentry.js +0 -23
  669. package/dist/session-handler/agent-utils.js +0 -65
  670. package/dist/session-handler/event-stream-state.js +0 -1225
  671. package/dist/session-handler/event-stream-state.test.js +0 -3160
  672. package/dist/session-handler/global-event-listener.js +0 -212
  673. package/dist/session-handler/model-utils.js +0 -311
  674. package/dist/session-handler/model-utils.test.js +0 -445
  675. package/dist/session-handler/opencode-session-event-log.js +0 -121
  676. package/dist/session-handler/thread-ingress.test.js +0 -41
  677. package/dist/session-handler/thread-runtime-state.js +0 -209
  678. package/dist/session-handler/thread-session-runtime-summary.test.js +0 -121
  679. package/dist/session-handler/thread-session-runtime.js +0 -4320
  680. package/dist/session-handler.js +0 -9
  681. package/dist/session-search.js +0 -219
  682. package/dist/session-search.test.js +0 -287
  683. package/dist/session-sleep.test.js +0 -224
  684. package/dist/session-title-rename.test.js +0 -128
  685. package/dist/skill-filter.js +0 -43
  686. package/dist/skill-filter.test.js +0 -86
  687. package/dist/startup-service.js +0 -153
  688. package/dist/startup-time.e2e.test.js +0 -297
  689. package/dist/system-message.js +0 -806
  690. package/dist/system-message.test.js +0 -917
  691. package/dist/task-id-plugin.js +0 -16
  692. package/dist/task-runner.js +0 -554
  693. package/dist/task-schedule.js +0 -298
  694. package/dist/task-schedule.test.js +0 -366
  695. package/dist/test-utils.js +0 -385
  696. package/dist/thinking-utils.js +0 -45
  697. package/dist/thinking-utils.test.js +0 -35
  698. package/dist/thread-message-queue.e2e.test.js +0 -1227
  699. package/dist/tools.js +0 -357
  700. package/dist/undo-redo.e2e.test.js +0 -171
  701. package/dist/unnest-code-blocks.js +0 -146
  702. package/dist/unnest-code-blocks.test.js +0 -673
  703. package/dist/upgrade.js +0 -114
  704. package/dist/utils.js +0 -148
  705. package/dist/voice-attachment.js +0 -56
  706. package/dist/voice-handler.js +0 -727
  707. package/dist/voice-message.e2e.test.js +0 -1254
  708. package/dist/voice-routing-input.e2e.test.js +0 -195
  709. package/dist/voice-routing-question.e2e.test.js +0 -182
  710. package/dist/voice.test.js +0 -500
  711. package/dist/wait-session.js +0 -193
  712. package/dist/websockify.js +0 -69
  713. package/dist/worker-types.js +0 -4
  714. package/dist/worktree-clone-isolation.e2e.test.js +0 -188
  715. package/dist/worktree-lifecycle.e2e.test.js +0 -735
  716. package/dist/worktree-utils.js +0 -3
  717. package/dist/xai-auth-plugin.js +0 -238
  718. package/dist/xai-auth-state.js +0 -234
  719. package/dist/xai-auth-state.test.js +0 -183
  720. package/dist/xml.js +0 -92
  721. package/dist/xml.test.js +0 -32
  722. package/skills/bump-holocron-consumers/SKILL.md +0 -137
  723. package/skills/critique/SKILL.md +0 -116
  724. package/skills/egaki/SKILL.md +0 -86
  725. package/skills/errore/SKILL.md +0 -501
  726. package/skills/goke/SKILL.md +0 -695
  727. package/skills/holocron/SKILL.md +0 -942
  728. package/skills/lintcn/SKILL.md +0 -873
  729. package/skills/new-skill/SKILL.md +0 -339
  730. package/skills/npm-package/SKILL.md +0 -692
  731. package/skills/opensrc/SKILL.md +0 -102
  732. package/skills/playwriter/SKILL.md +0 -35
  733. package/skills/profano/SKILL.md +0 -33
  734. package/skills/readme.md +0 -20
  735. package/skills/sigillo/SKILL.md +0 -370
  736. package/skills/spiceflow/SKILL.md +0 -80
  737. package/skills/strada/SKILL.md +0 -104
  738. package/skills/termcast/SKILL.md +0 -133
  739. package/skills/tuistory/SKILL.md +0 -237
  740. package/skills/usecomputer/SKILL.md +0 -264
  741. package/skills/zele/SKILL.md +0 -81
  742. package/src/agent-model.e2e.test.ts +0 -1557
  743. package/src/ai-tool-to-genai.test.ts +0 -296
  744. package/src/ai-tool-to-genai.ts +0 -283
  745. package/src/ai-tool.ts +0 -39
  746. package/src/anthropic-account-identity.test.ts +0 -52
  747. package/src/anthropic-account-identity.ts +0 -96
  748. package/src/anthropic-auth-plugin.test.ts +0 -135
  749. package/src/anthropic-auth-plugin.ts +0 -1180
  750. package/src/anthropic-auth-state.test.ts +0 -259
  751. package/src/anthropic-auth-state.ts +0 -272
  752. package/src/bash-tool-schema-plugin.test.ts +0 -84
  753. package/src/bash-tool-schema-plugin.ts +0 -77
  754. package/src/bin.ts +0 -173
  755. package/src/bot-lifecycle.test.ts +0 -252
  756. package/src/btw-prefix-detection.test.ts +0 -142
  757. package/src/btw-prefix-detection.ts +0 -30
  758. package/src/cache-drift-plugin.ts +0 -249
  759. package/src/cache-rewrite.test.ts +0 -49
  760. package/src/cache-rewrite.ts +0 -96
  761. package/src/channel-management.ts +0 -494
  762. package/src/cli-commands/bot.ts +0 -374
  763. package/src/cli-commands/maintenance.ts +0 -237
  764. package/src/cli-commands/misc.ts +0 -208
  765. package/src/cli-commands/project.ts +0 -680
  766. package/src/cli-commands/send.ts +0 -885
  767. package/src/cli-commands/session.ts +0 -1181
  768. package/src/cli-commands/task.ts +0 -358
  769. package/src/cli-commands/thread.ts +0 -86
  770. package/src/cli-commands/user.ts +0 -195
  771. package/src/cli-parsing.test.ts +0 -305
  772. package/src/cli-runner.test.ts +0 -166
  773. package/src/cli-runner.ts +0 -2157
  774. package/src/cli-send-thread.e2e.test.ts +0 -609
  775. package/src/cloudflare-transcription.ts +0 -76
  776. package/src/commands/abort.ts +0 -113
  777. package/src/commands/action-buttons.ts +0 -371
  778. package/src/commands/add-project.ts +0 -146
  779. package/src/commands/agent.ts +0 -911
  780. package/src/commands/ask-question.test.ts +0 -177
  781. package/src/commands/ask-question.ts +0 -532
  782. package/src/commands/btw.ts +0 -356
  783. package/src/commands/compact.ts +0 -154
  784. package/src/commands/context-usage.test.ts +0 -57
  785. package/src/commands/context-usage.ts +0 -267
  786. package/src/commands/create-new-project.ts +0 -203
  787. package/src/commands/diff.ts +0 -91
  788. package/src/commands/file-upload.ts +0 -398
  789. package/src/commands/fork-subagent.ts +0 -262
  790. package/src/commands/fork.ts +0 -421
  791. package/src/commands/gemini-apikey.ts +0 -205
  792. package/src/commands/last-sessions.ts +0 -176
  793. package/src/commands/login.ts +0 -1182
  794. package/src/commands/mcp.ts +0 -307
  795. package/src/commands/memory-snapshot.ts +0 -30
  796. package/src/commands/mention-mode.ts +0 -66
  797. package/src/commands/merge-worktree.ts +0 -282
  798. package/src/commands/model-variant.ts +0 -522
  799. package/src/commands/model.ts +0 -1377
  800. package/src/commands/multioauth.ts +0 -508
  801. package/src/commands/new-worktree.ts +0 -835
  802. package/src/commands/paginated-select.ts +0 -81
  803. package/src/commands/permissions.ts +0 -458
  804. package/src/commands/queue.test.ts +0 -19
  805. package/src/commands/queue.ts +0 -471
  806. package/src/commands/remove-project.ts +0 -152
  807. package/src/commands/restart-opencode-server.ts +0 -173
  808. package/src/commands/resume.ts +0 -229
  809. package/src/commands/run-command.ts +0 -123
  810. package/src/commands/screenshare.test.ts +0 -30
  811. package/src/commands/screenshare.ts +0 -388
  812. package/src/commands/session-id.ts +0 -109
  813. package/src/commands/session.ts +0 -319
  814. package/src/commands/share.ts +0 -106
  815. package/src/commands/tasks.ts +0 -399
  816. package/src/commands/types.ts +0 -25
  817. package/src/commands/undo-redo.ts +0 -394
  818. package/src/commands/unset-model.ts +0 -152
  819. package/src/commands/upgrade.ts +0 -51
  820. package/src/commands/user-command.ts +0 -260
  821. package/src/commands/verbosity.ts +0 -172
  822. package/src/commands/vscode.ts +0 -378
  823. package/src/commands/worktrees.ts +0 -762
  824. package/src/condense-memory.ts +0 -36
  825. package/src/config.ts +0 -147
  826. package/src/context-awareness-plugin.test.ts +0 -144
  827. package/src/context-awareness-plugin.ts +0 -508
  828. package/src/cpu-profiler.test.ts +0 -183
  829. package/src/cpu-profiler.ts +0 -293
  830. package/src/critique-utils.ts +0 -139
  831. package/src/database.ts +0 -1484
  832. package/src/debounce-timeout.ts +0 -43
  833. package/src/debounced-process-flush.ts +0 -104
  834. package/src/default-channel-provisioning.test.ts +0 -156
  835. package/src/discord-bot.ts +0 -1852
  836. package/src/discord-command-registration.test.ts +0 -20
  837. package/src/discord-command-registration.ts +0 -704
  838. package/src/discord-urls.ts +0 -88
  839. package/src/discord-utils.test.ts +0 -470
  840. package/src/discord-utils.ts +0 -1079
  841. package/src/escape-backticks.test.ts +0 -469
  842. package/src/event-stream-real-capture.e2e.test.ts +0 -692
  843. package/src/eventsource-parser.test.ts +0 -351
  844. package/src/exec-async.ts +0 -44
  845. package/src/external-directory-permissions.e2e.test.ts +0 -103
  846. package/src/external-directory-project-deny.e2e.test.ts +0 -84
  847. package/src/external-opencode-sync.test.ts +0 -248
  848. package/src/external-opencode-sync.ts +0 -867
  849. package/src/extract-sdk-error-message.test.ts +0 -18
  850. package/src/format-tables.test.ts +0 -988
  851. package/src/format-tables.ts +0 -1031
  852. package/src/forum-sync/config.ts +0 -92
  853. package/src/forum-sync/discord-operations.ts +0 -245
  854. package/src/forum-sync/index.ts +0 -9
  855. package/src/forum-sync/markdown.ts +0 -172
  856. package/src/forum-sync/sync-to-discord.ts +0 -595
  857. package/src/forum-sync/sync-to-files.ts +0 -294
  858. package/src/forum-sync/types.ts +0 -175
  859. package/src/forum-sync/watchers.ts +0 -474
  860. package/src/gateway-proxy-reconnect.e2e.test.ts +0 -553
  861. package/src/gateway-proxy.e2e.test.ts +0 -648
  862. package/src/genai-worker-wrapper.ts +0 -164
  863. package/src/genai-worker.ts +0 -385
  864. package/src/genai.ts +0 -318
  865. package/src/git-worktree-core.ts +0 -616
  866. package/src/guild-categories.test.ts +0 -260
  867. package/src/heap-monitor.ts +0 -152
  868. package/src/hrana-server.test.ts +0 -130
  869. package/src/hrana-server.ts +0 -399
  870. package/src/html-actions.test.ts +0 -87
  871. package/src/html-actions.ts +0 -174
  872. package/src/html-components.test.ts +0 -38
  873. package/src/html-components.ts +0 -177
  874. package/src/image-optimizer-plugin.ts +0 -194
  875. package/src/image-utils.ts +0 -150
  876. package/src/interaction-handler.ts +0 -775
  877. package/src/ipc-polling.ts +0 -325
  878. package/src/ipc-tools-plugin.ts +0 -306
  879. package/src/kimaki-digital-twin.e2e.test.ts +0 -199
  880. package/src/kimaki-opencode-plugin-loading.e2e.test.ts +0 -208
  881. package/src/kimaki-opencode-plugin.test.ts +0 -142
  882. package/src/kimaki-opencode-plugin.ts +0 -34
  883. package/src/kimaki-workspace-adaptor.ts +0 -144
  884. package/src/limit-heading-depth.test.ts +0 -116
  885. package/src/limit-heading-depth.ts +0 -26
  886. package/src/list-channel-threads.test.ts +0 -90
  887. package/src/list-channel-threads.ts +0 -252
  888. package/src/markdown.test.ts +0 -498
  889. package/src/markdown.ts +0 -577
  890. package/src/memory-overview-plugin.ts +0 -159
  891. package/src/message-formatting.test.ts +0 -1401
  892. package/src/message-formatting.ts +0 -999
  893. package/src/message-preprocessing.ts +0 -557
  894. package/src/oauth-rotation-shared.ts +0 -332
  895. package/src/onboarding-tutorial.ts +0 -167
  896. package/src/onboarding-welcome.ts +0 -49
  897. package/src/openai-auth-plugin.ts +0 -158
  898. package/src/openai-auth-state.ts +0 -297
  899. package/src/openai-realtime.ts +0 -358
  900. package/src/opencode-command-detection.test.ts +0 -307
  901. package/src/opencode-command-detection.ts +0 -76
  902. package/src/opencode-command.test.ts +0 -290
  903. package/src/opencode-command.ts +0 -251
  904. package/src/opencode-interrupt-plugin.test.ts +0 -419
  905. package/src/opencode-interrupt-plugin.ts +0 -306
  906. package/src/opencode.ts +0 -1590
  907. package/src/parse-permission-rules.test.ts +0 -127
  908. package/src/patch-text-parser.ts +0 -107
  909. package/src/plugin-logger.ts +0 -139
  910. package/src/plugin-opencode-client.ts +0 -71
  911. package/src/privacy-sanitizer.ts +0 -142
  912. package/src/project-add.test.ts +0 -80
  913. package/src/question-abort-clears-dropdown.e2e.test.ts +0 -109
  914. package/src/question-abort-resume.e2e.test.ts +0 -121
  915. package/src/question-abort-retry-text-before-dropdown.e2e.test.ts +0 -172
  916. package/src/question-text-before-dropdown.e2e.test.ts +0 -67
  917. package/src/queue-advanced-abort.e2e.test.ts +0 -449
  918. package/src/queue-advanced-action-buttons.e2e.test.ts +0 -271
  919. package/src/queue-advanced-e2e-setup.ts +0 -1164
  920. package/src/queue-advanced-footer.e2e.test.ts +0 -357
  921. package/src/queue-advanced-model-switch.e2e.test.ts +0 -382
  922. package/src/queue-advanced-permissions-typing.e2e.test.ts +0 -256
  923. package/src/queue-advanced-question.e2e.test.ts +0 -322
  924. package/src/queue-advanced-typing-interrupt.e2e.test.ts +0 -147
  925. package/src/queue-advanced-typing.e2e.test.ts +0 -199
  926. package/src/queue-delete-message.e2e.test.ts +0 -262
  927. package/src/queue-drain-after-interactive-ui.e2e.test.ts +0 -152
  928. package/src/queue-interrupt-drain.e2e.test.ts +0 -299
  929. package/src/queue-question-select-drain.e2e.test.ts +0 -209
  930. package/src/runtime-idle-sweeper.ts +0 -76
  931. package/src/runtime-lifecycle.e2e.test.ts +0 -714
  932. package/src/schema.sql +0 -251
  933. package/src/sentry.ts +0 -26
  934. package/src/session-handler/agent-utils.ts +0 -104
  935. package/src/session-handler/event-stream-fixtures/real-session-action-buttons.jsonl +0 -45
  936. package/src/session-handler/event-stream-fixtures/real-session-footer-suppressed-on-pre-idle-interrupt.jsonl +0 -40
  937. package/src/session-handler/event-stream-fixtures/real-session-permission-external-file.jsonl +0 -23
  938. package/src/session-handler/event-stream-fixtures/real-session-task-normal.jsonl +0 -22
  939. package/src/session-handler/event-stream-fixtures/real-session-task-three-parallel-sleeps.jsonl +0 -277
  940. package/src/session-handler/event-stream-fixtures/real-session-task-user-interruption.jsonl +0 -46
  941. package/src/session-handler/event-stream-fixtures/session-abort-after-idle-race.jsonl +0 -21
  942. package/src/session-handler/event-stream-fixtures/session-concurrent-messages-serialized.jsonl +0 -56
  943. package/src/session-handler/event-stream-fixtures/session-explicit-abort.jsonl +0 -44
  944. package/src/session-handler/event-stream-fixtures/session-normal-completion.jsonl +0 -29
  945. package/src/session-handler/event-stream-fixtures/session-tool-call-noisy-stream.jsonl +0 -29
  946. package/src/session-handler/event-stream-fixtures/session-two-completions-same-session.jsonl +0 -50
  947. package/src/session-handler/event-stream-fixtures/session-user-interruption.jsonl +0 -59
  948. package/src/session-handler/event-stream-fixtures/session-voice-queued-followup.jsonl +0 -52
  949. package/src/session-handler/event-stream-state.test.ts +0 -3431
  950. package/src/session-handler/event-stream-state.ts +0 -1792
  951. package/src/session-handler/global-event-listener.ts +0 -258
  952. package/src/session-handler/model-utils.test.ts +0 -537
  953. package/src/session-handler/model-utils.ts +0 -489
  954. package/src/session-handler/opencode-session-event-log.ts +0 -159
  955. package/src/session-handler/thread-ingress.test.ts +0 -54
  956. package/src/session-handler/thread-runtime-state.ts +0 -358
  957. package/src/session-handler/thread-session-runtime-summary.test.ts +0 -169
  958. package/src/session-handler/thread-session-runtime.ts +0 -5696
  959. package/src/session-handler.ts +0 -15
  960. package/src/session-search.test.ts +0 -331
  961. package/src/session-search.ts +0 -382
  962. package/src/session-sleep.test.ts +0 -294
  963. package/src/session-title-rename.test.ts +0 -186
  964. package/src/skill-filter.test.ts +0 -110
  965. package/src/skill-filter.ts +0 -63
  966. package/src/startup-service.ts +0 -200
  967. package/src/startup-time.e2e.test.ts +0 -377
  968. package/src/system-message.test.ts +0 -1013
  969. package/src/system-message.ts +0 -1043
  970. package/src/task-id-plugin.ts +0 -17
  971. package/src/task-runner.ts +0 -768
  972. package/src/task-schedule.test.ts +0 -424
  973. package/src/task-schedule.ts +0 -470
  974. package/src/test-utils.ts +0 -549
  975. package/src/thinking-utils.test.ts +0 -46
  976. package/src/thinking-utils.ts +0 -82
  977. package/src/thread-message-queue.e2e.test.ts +0 -1468
  978. package/src/tools.ts +0 -430
  979. package/src/undici.d.ts +0 -12
  980. package/src/undo-redo.e2e.test.ts +0 -219
  981. package/src/unnest-code-blocks.test.ts +0 -713
  982. package/src/unnest-code-blocks.ts +0 -185
  983. package/src/upgrade.ts +0 -127
  984. package/src/utils.ts +0 -216
  985. package/src/voice-attachment.ts +0 -79
  986. package/src/voice-handler.ts +0 -1000
  987. package/src/voice-message.e2e.test.ts +0 -1513
  988. package/src/voice-routing-input.e2e.test.ts +0 -203
  989. package/src/voice-routing-question.e2e.test.ts +0 -188
  990. package/src/voice.test.ts +0 -565
  991. package/src/wait-session.ts +0 -291
  992. package/src/websockify.ts +0 -101
  993. package/src/worker-types.ts +0 -64
  994. package/src/worktree-clone-isolation.e2e.test.ts +0 -213
  995. package/src/worktree-lifecycle.e2e.test.ts +0 -900
  996. package/src/worktree-utils.ts +0 -4
  997. package/src/xai-auth-plugin.ts +0 -303
  998. package/src/xai-auth-state.test.ts +0 -224
  999. package/src/xai-auth-state.ts +0 -294
  1000. package/src/xml.test.ts +0 -38
  1001. package/src/xml.ts +0 -121
@@ -0,0 +1,82 @@
1
+ // Temporary probe: ChatGPT call in frameless (quicksilver=v2) mode. Does output audio come over the sideband WS?
2
+ import { execFile } from 'node:child_process';
3
+ import crypto from 'node:crypto';
4
+ import fs from 'node:fs';
5
+ import { promisify } from 'node:util';
6
+ import WebSocket from 'ws';
7
+ import { chatGPTCredential } from "./voice.js";
8
+ import { opencodeDbFile } from "./opencode-server.js";
9
+ const run = promisify(execFile);
10
+ const cred = await chatGPTCredential({ dbFile: opencodeDbFile() });
11
+ if (!cred || cred instanceof Error)
12
+ throw new Error('no credential');
13
+ const sessionId = crypto.randomUUID();
14
+ const auth = {
15
+ authorization: `Bearer ${cred.accessToken}`,
16
+ 'chatgpt-account-id': cred.accountId ?? '',
17
+ originator: 'codex_cli_rs',
18
+ 'openai-alpha': 'quicksilver=v1',
19
+ 'x-session-id': sessionId,
20
+ };
21
+ const fp = Array.from(crypto.randomBytes(32), (b) => b.toString(16).padStart(2, '0').toUpperCase()).join(':');
22
+ const sdp = [
23
+ 'v=0', 'o=- 4611731400430051336 2 IN IP4 127.0.0.1', 's=-', 't=0 0', 'a=group:BUNDLE 0 1', 'a=msid-semantic: WMS',
24
+ 'm=audio 9 UDP/TLS/RTP/SAVPF 111', 'c=IN IP4 0.0.0.0', 'a=rtcp:9 IN IP4 0.0.0.0',
25
+ 'a=ice-ufrag:abcd', 'a=ice-pwd:abcdefghijklmnopqrstuvwx', `a=fingerprint:sha-256 ${fp}`,
26
+ 'a=setup:actpass', 'a=mid:0', 'a=sendrecv', 'a=rtcp-mux', 'a=rtpmap:111 opus/48000/2', 'a=ssrc:1001 cname:probe',
27
+ 'm=application 9 UDP/DTLS/SCTP webrtc-datachannel', 'c=IN IP4 0.0.0.0', 'a=ice-ufrag:abcd', 'a=ice-pwd:abcdefghijklmnopqrstuvwx',
28
+ `a=fingerprint:sha-256 ${fp}`, 'a=setup:actpass', 'a=mid:1', 'a=sctp-port:5000', '',
29
+ ].join('\r\n');
30
+ const created = await fetch('https://chatgpt.com/backend-api/codex/realtime/calls?intent=quicksilver&architecture=avas', {
31
+ method: 'POST',
32
+ headers: { ...auth, 'content-type': 'application/json' },
33
+ body: JSON.stringify({ sdp, session: { type: 'quicksilver', instructions: 'Answer briefly.', audio: { input: { format: { type: 'audio/pcm', rate: 24000 } }, output: { voice: 'cove' } } } }),
34
+ });
35
+ const loc = created.headers.get('location');
36
+ console.log('create', created.status, 'loc', loc);
37
+ if (created.status !== 201)
38
+ console.log((await created.clone().text()).slice(0, 300));
39
+ if (!loc) {
40
+ console.log((await created.text()).slice(0, 400));
41
+ process.exit(0);
42
+ }
43
+ const callId = loc.split('/').pop();
44
+ await run('say', ['-o', '/tmp/kimaki-probe.aiff', 'What is two plus two?']);
45
+ await run('ffmpeg', ['-y', '-loglevel', 'error', '-i', '/tmp/kimaki-probe.aiff', '-f', 's16le', '-ac', '1', '-ar', '24000', '/tmp/kimaki-probe.pcm']);
46
+ const audio = Buffer.concat([fs.readFileSync('/tmp/kimaki-probe.pcm'), Buffer.alloc(24000 * 2 * 2)]);
47
+ for (const url of [`wss://api.openai.com/v1/realtime?intent=quicksilver&call_id=${callId}`]) {
48
+ await new Promise((resolve) => {
49
+ const socket = new WebSocket(url, { headers: auth });
50
+ const seen = new Map();
51
+ let audioBytes = 0;
52
+ const finish = (why) => {
53
+ console.log(`== ${url.replace(callId, 'rtc')}: ${why} audioBytes=${audioBytes}`, Object.fromEntries(seen));
54
+ socket.terminate();
55
+ resolve();
56
+ };
57
+ socket.on('unexpected-response', (_q, res) => {
58
+ let b = '';
59
+ res.on('data', (c) => (b += c));
60
+ res.on('end', () => finish(`HTTP ${res.statusCode} ${b.slice(0, 200)}`));
61
+ });
62
+ socket.on('error', (e) => finish(`error ${e.message}`));
63
+ socket.on('open', () => {
64
+ for (let i = 0; i < audio.length; i += 9600) {
65
+ const chunk = audio.subarray(i, i + 9600).toString('base64');
66
+ socket.send(JSON.stringify(url.includes('/live/') ? { type: 'input_audio.append', audio: chunk } : { type: 'input_audio_buffer.append', audio: chunk }));
67
+ }
68
+ });
69
+ socket.on('message', (data) => {
70
+ const event = JSON.parse(data.toString());
71
+ seen.set(event.type, (seen.get(event.type) ?? 0) + 1);
72
+ if (typeof event.audio === 'string')
73
+ audioBytes += Buffer.from(event.audio, 'base64').length;
74
+ if (typeof event.delta === 'string' && event.type.includes('audio.delta'))
75
+ audioBytes += Buffer.from(event.delta, 'base64').length;
76
+ if (event.type === 'error' || event.type.includes('transcript.done'))
77
+ console.log(JSON.stringify(event).slice(0, 300));
78
+ });
79
+ setTimeout(() => finish('timeout'), 15000);
80
+ });
81
+ }
82
+ //# sourceMappingURL=probe-live.tmp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"probe-live.tmp.js","sourceRoot":"","sources":["../src/probe-live.tmp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ import { API } from '@discordjs/core/http-only';
2
+ import type { KimakiDb } from './db.ts';
3
+ import { ConfigError, DbError, DiscordError } from './errors.ts';
4
+ export declare function createApi({ token, restUrl }: {
5
+ token: string;
6
+ restUrl?: string | null;
7
+ }): API;
8
+ export declare function channelNameFor(name: string): string;
9
+ export declare function defaultChannelName({ botName, gateway }: {
10
+ botName: string;
11
+ gateway: boolean;
12
+ }): string;
13
+ export declare function defaultMachineName(): string;
14
+ export declare function defaultProjectDirectory({ dataDir }: {
15
+ dataDir: string;
16
+ }): string;
17
+ export declare function resolveGuildId({ db, guildId, }: {
18
+ db: KimakiDb;
19
+ guildId?: string;
20
+ }): Promise<DbError | ConfigError | string>;
21
+ export type ProjectChannel = {
22
+ channelId: string;
23
+ name: string;
24
+ directory: string;
25
+ created: boolean;
26
+ };
27
+ export declare function addProjectChannel({ api, db, guildId, directory, name, topic, machine, }: {
28
+ api: API;
29
+ db: KimakiDb;
30
+ guildId: string;
31
+ directory: string;
32
+ name?: string;
33
+ topic?: string;
34
+ machine: string;
35
+ }): Promise<DbError | DiscordError | ProjectChannel>;
36
+ export declare function addVoiceChannel({ api, db, guildId, dataDir, machine, }: {
37
+ api: API;
38
+ db: KimakiDb;
39
+ guildId: string;
40
+ dataDir: string;
41
+ machine: string;
42
+ }): Promise<DbError | DiscordError | {
43
+ channelId: string;
44
+ created: boolean;
45
+ }>;
46
+ export declare function listProjects({ db }: {
47
+ db: KimakiDb;
48
+ }): Promise<DbError | {
49
+ directory: string;
50
+ created_at: Date | null;
51
+ channel_id: string;
52
+ channel_type: "text" | "voice";
53
+ guild_id: string | null;
54
+ }[]>;
55
+ export declare function countUserProjects({ db, dataDir }: {
56
+ db: KimakiDb;
57
+ dataDir: string;
58
+ }): Promise<DbError | number>;
@@ -0,0 +1,169 @@
1
+ // Project channels: one Discord text channel per directory, inside this
2
+ // machine's "Kimaki <machine>" category (spec 24), mapped in
3
+ // channel_directories. The category is found by stored ID first, so a V1
4
+ // "Kimaki" category or a rename in Discord keeps working. Uses only the
5
+ // Discord REST API (guild-scoped routes), so the same code runs in the bot
6
+ // (onboarding) and in `kimaki project add` while the bot keeps running: the
7
+ // bot reads channel_directories on every message and the Guilds intent
8
+ // delivers CHANNEL_CREATE, so a new channel works without a restart.
9
+ import os from 'node:os';
10
+ import path from 'node:path';
11
+ import { API } from '@discordjs/core/http-only';
12
+ import { ChannelType, REST } from 'discord.js';
13
+ import { ConfigError, DbError, DiscordError } from "./errors.js";
14
+ import * as schema from "./schema.js";
15
+ // Typed Discord REST calls (the discord.js REST client returns unknown).
16
+ export function createApi({ token, restUrl }) {
17
+ return new API(new REST({ version: '10', ...(restUrl && { api: restUrl }) }).setToken(token));
18
+ }
19
+ // Discord channel names: lowercase, [a-z0-9-], max 100 chars.
20
+ export function channelNameFor(name) {
21
+ const sanitized = name
22
+ .toLowerCase()
23
+ .replace(/[^a-z0-9-]/g, '-')
24
+ .replace(/-+/g, '-')
25
+ .replace(/^-|-$/g, '')
26
+ .slice(0, 100);
27
+ return sanitized || 'project';
28
+ }
29
+ // The default channel: "kimaki", with the bot name for self-hosted bots not
30
+ // called "kimaki" (V1 names). The category is per machine, see addProjectChannel.
31
+ export function defaultChannelName({ botName, gateway }) {
32
+ return gateway || botName.toLowerCase() === 'kimaki' ? 'kimaki' : channelNameFor(`kimaki-${botName}`);
33
+ }
34
+ // "Tommys-MacBook-Pro.local" -> "Tommys-MacBook-Pro". --machine-name overrides it.
35
+ export function defaultMachineName() {
36
+ return os.hostname().replace(/\.(local|lan|home)$/i, '') || 'machine';
37
+ }
38
+ export function defaultProjectDirectory({ dataDir }) {
39
+ return path.join(dataDir, 'projects', 'kimaki');
40
+ }
41
+ // The guild of this machine's channels. `project add` needs one: the flag, or
42
+ // the only guild that already has mapped channels.
43
+ export async function resolveGuildId({ db, guildId, }) {
44
+ if (guildId)
45
+ return guildId;
46
+ const rows = await db.query.channel_directories
47
+ .findMany()
48
+ .catch((e) => new DbError({ operation: 'read channel_directories', cause: e }));
49
+ if (rows instanceof Error)
50
+ return rows;
51
+ const guilds = [...new Set(rows.flatMap((row) => (row.guild_id ? [row.guild_id] : [])))];
52
+ if (guilds.length === 1)
53
+ return guilds[0];
54
+ if (guilds.length === 0)
55
+ return new ConfigError({ reason: 'No Kimaki channels yet. Start the bot once to onboard.' });
56
+ return new ConfigError({ reason: `Channels exist in several servers (${guilds.join(', ')}). Pass --guild <id>.` });
57
+ }
58
+ async function ensureCategory({ api, db, guildId, name, channels, }) {
59
+ const stored = await db.query.guild_categories
60
+ .findFirst({ where: { guild_id: guildId } })
61
+ .catch((e) => new DbError({ operation: 'read guild_categories', cause: e }));
62
+ if (stored instanceof Error)
63
+ return stored;
64
+ const categories = channels.filter((channel) => channel.type === ChannelType.GuildCategory);
65
+ const existing = categories.find((channel) => channel.id === stored?.category_id) ??
66
+ categories.find((channel) => channel.name === name);
67
+ const categoryId = await (async () => {
68
+ if (existing)
69
+ return existing.id;
70
+ const body = { name, type: ChannelType.GuildCategory };
71
+ const created = await api.guilds
72
+ .createChannel(guildId, body)
73
+ .catch((e) => new DiscordError({ operation: 'create category', cause: e }));
74
+ if (created instanceof Error)
75
+ return created;
76
+ return created.id;
77
+ })();
78
+ if (categoryId instanceof Error)
79
+ return categoryId;
80
+ if (stored?.category_id === categoryId)
81
+ return categoryId;
82
+ const saved = await db
83
+ .insert(schema.guild_categories)
84
+ .values({ guild_id: guildId, category_id: categoryId })
85
+ .onConflictDoUpdate({ target: schema.guild_categories.guild_id, set: { category_id: categoryId } })
86
+ .catch((e) => new DbError({ operation: 'save guild_categories', cause: e }));
87
+ if (saved instanceof Error)
88
+ return saved;
89
+ return categoryId;
90
+ }
91
+ // Idempotent: a directory already mapped in this guild returns its channel.
92
+ export async function addProjectChannel({ api, db, guildId, directory, name, topic, machine, }) {
93
+ const existing = await db.query.channel_directories
94
+ .findFirst({ where: { directory, guild_id: guildId, channel_type: 'text' } })
95
+ .catch((e) => new DbError({ operation: 'read channel_directories', cause: e }));
96
+ if (existing instanceof Error)
97
+ return existing;
98
+ if (existing)
99
+ return { channelId: existing.channel_id, name: '', directory, created: false };
100
+ const channels = await api.guilds
101
+ .getChannels(guildId)
102
+ .catch((e) => new DiscordError({ operation: 'list guild channels', cause: e }));
103
+ if (channels instanceof Error)
104
+ return channels;
105
+ const categoryId = await ensureCategory({ api, db, guildId, name: `Kimaki ${machine}`, channels });
106
+ if (categoryId instanceof Error)
107
+ return categoryId;
108
+ // The same project on another machine: "website" there, "website-<machine>" here.
109
+ const baseName = name ?? channelNameFor(path.basename(directory));
110
+ const taken = channels.some((channel) => channel.type === ChannelType.GuildText && channel.name === baseName && channel.parent_id !== categoryId);
111
+ const body = {
112
+ name: taken ? channelNameFor(`${baseName}-${machine}`) : baseName,
113
+ type: ChannelType.GuildText,
114
+ parent_id: categoryId,
115
+ ...(topic && { topic }),
116
+ };
117
+ const channel = await api.guilds
118
+ .createChannel(guildId, body)
119
+ .catch((e) => new DiscordError({ operation: 'create channel', cause: e }));
120
+ if (channel instanceof Error)
121
+ return channel;
122
+ const saved = await db
123
+ .insert(schema.channel_directories)
124
+ .values({ channel_id: channel.id, directory, channel_type: 'text', guild_id: guildId })
125
+ .catch((e) => new DbError({ operation: 'insert channel_directories', cause: e }));
126
+ if (saved instanceof Error)
127
+ return saved;
128
+ return { channelId: channel.id, name: channel.name ?? body.name, directory, created: true };
129
+ }
130
+ // This machine's voice channel in a guild: one per machine, with no category
131
+ // (users drag it where they want), named with the machine to tell machines apart.
132
+ // Mapped as channel_type 'voice' to the data dir (where voice call shells run).
133
+ // Created once: a voice channel the user deleted stays deleted.
134
+ export async function addVoiceChannel({ api, db, guildId, dataDir, machine, }) {
135
+ const existing = await db.query.channel_directories
136
+ .findFirst({ where: { guild_id: guildId, channel_type: 'voice' } })
137
+ .catch((e) => new DbError({ operation: 'read voice channel', cause: e }));
138
+ if (existing instanceof Error)
139
+ return existing;
140
+ if (existing)
141
+ return { channelId: existing.channel_id, created: false };
142
+ const channel = await api.guilds
143
+ .createChannel(guildId, { name: `Kimaki voice ${machine}`.slice(0, 100), type: ChannelType.GuildVoice })
144
+ .catch((e) => new DiscordError({ operation: 'create voice channel', cause: e }));
145
+ if (channel instanceof Error)
146
+ return channel;
147
+ const saved = await db
148
+ .insert(schema.channel_directories)
149
+ .values({ channel_id: channel.id, directory: dataDir, channel_type: 'voice', guild_id: guildId })
150
+ .catch((e) => new DbError({ operation: 'insert voice channel', cause: e }));
151
+ if (saved instanceof Error)
152
+ return saved;
153
+ return { channelId: channel.id, created: true };
154
+ }
155
+ export async function listProjects({ db }) {
156
+ return db.query.channel_directories
157
+ .findMany({ where: { channel_type: 'text' }, orderBy: { created_at: 'asc' } })
158
+ .catch((e) => new DbError({ operation: 'read channel_directories', cause: e }));
159
+ }
160
+ // Distinct project directories with a text channel, without the default
161
+ // kimaki channel (analytics user_project_count).
162
+ export async function countUserProjects({ db, dataDir }) {
163
+ const rows = await listProjects({ db });
164
+ if (rows instanceof Error)
165
+ return rows;
166
+ const defaultDirectory = path.resolve(defaultProjectDirectory({ dataDir }));
167
+ return new Set(rows.map((row) => path.resolve(row.directory)).filter((directory) => directory !== defaultDirectory)).size;
168
+ }
169
+ //# sourceMappingURL=project.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project.js","sourceRoot":"","sources":["../src/project.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,112 @@
1
+ import { type Message, type ThreadChannel } from 'discord.js';
2
+ import { type Author, type Bot, type ModelChoice, type PromptFile } from './bot.ts';
3
+ import { ConfigError, OpenCodeError, OpenCodeUnavailableError } from './errors.ts';
4
+ import type { SendInput } from './lock-routes.ts';
5
+ import { type RemoteResult } from './remote-send.ts';
6
+ import { type Route } from './routes.ts';
7
+ import type { ScheduledRun } from './system-prompt.ts';
8
+ export declare function promptIdForMessage(messageId: string): string;
9
+ export declare function prompt(bot: Bot, { sessionId, threadId, threadName, text, author, messageId, delivery, files, skills, id, echo, }: {
10
+ sessionId: string;
11
+ threadId: string;
12
+ threadName: string;
13
+ text: string;
14
+ author: Author;
15
+ messageId: string;
16
+ delivery: 'steer' | 'queue';
17
+ files?: readonly PromptFile[];
18
+ skills?: readonly string[];
19
+ id?: string;
20
+ echo?: string;
21
+ }): Promise<OpenCodeUnavailableError | OpenCodeError | void>;
22
+ export declare function cancelPendingUi(bot: Bot, threadId: string): Promise<OpenCodeUnavailableError | OpenCodeError | void>;
23
+ export declare function interrupt(bot: Bot, sessionId: string): Promise<OpenCodeUnavailableError | OpenCodeError | void>;
24
+ export declare function steer(bot: Bot, input: {
25
+ sessionId: string;
26
+ threadId: string;
27
+ threadName: string;
28
+ text: string;
29
+ author: Author;
30
+ messageId: string;
31
+ files?: readonly PromptFile[];
32
+ skills?: readonly string[];
33
+ echo?: string;
34
+ }): Promise<OpenCodeUnavailableError | OpenCodeError | void>;
35
+ export declare function cancelQueuedPrompt(bot: Bot, { threadId, inboxID }: {
36
+ threadId: string;
37
+ inboxID: string;
38
+ }): Promise<OpenCodeError | OpenCodeUnavailableError | undefined>;
39
+ export declare function clearQueue(bot: Bot, { threadId, position }: {
40
+ threadId: string;
41
+ position?: number | null;
42
+ }): Promise<OpenCodeUnavailableError | OpenCodeError | {
43
+ cleared: number;
44
+ }>;
45
+ export declare function abort(bot: Bot, { threadId }: {
46
+ threadId: string;
47
+ }): Promise<OpenCodeError | OpenCodeUnavailableError | {
48
+ cleared: number;
49
+ }>;
50
+ export declare function requeueEdited(bot: Bot, { message, inboxID, files }: {
51
+ message: Message;
52
+ inboxID: string;
53
+ files: readonly PromptFile[];
54
+ }): Promise<void | OpenCodeError | OpenCodeUnavailableError>;
55
+ export declare function shell(bot: Bot, { threadId, sessionId, command }: {
56
+ threadId: string;
57
+ sessionId: string;
58
+ command: string;
59
+ }): OpenCodeUnavailableError | undefined;
60
+ export declare function runInSession(bot: Bot, { sessionId, threadId, threadName, directory, route, author, messageId, files, echo, model, }: {
61
+ sessionId: string;
62
+ threadId: string;
63
+ threadName: string;
64
+ directory: string;
65
+ route: Exclude<Route, {
66
+ kind: 'btw' | 'new-session';
67
+ }>;
68
+ author: Author;
69
+ messageId: string;
70
+ files: readonly PromptFile[];
71
+ echo?: string;
72
+ model?: ModelChoice | null;
73
+ }): Promise<void | OpenCodeError | OpenCodeUnavailableError | ConfigError>;
74
+ export declare function dispatch(bot: Bot, { thread, route, author, messageId, files, echo, model, }: {
75
+ thread: ThreadChannel;
76
+ route: Route;
77
+ author: Author;
78
+ messageId: string;
79
+ files?: readonly PromptFile[];
80
+ echo?: string;
81
+ model?: ModelChoice | null;
82
+ }): Promise<void | Error | {
83
+ threadId: string;
84
+ sessionId: string;
85
+ }>;
86
+ export declare function undo(bot: Bot, { threadId }: {
87
+ threadId: string;
88
+ }): Promise<OpenCodeError | OpenCodeUnavailableError | {
89
+ reverted: boolean;
90
+ }>;
91
+ export declare function redo(bot: Bot, { threadId }: {
92
+ threadId: string;
93
+ }): Promise<OpenCodeError | OpenCodeUnavailableError | {
94
+ restored: "nothing";
95
+ } | {
96
+ restored: "all";
97
+ } | {
98
+ restored: "step";
99
+ }>;
100
+ export declare function send(bot: Bot, input: SendInput, { localOnly, task }?: {
101
+ localOnly?: boolean;
102
+ task?: ScheduledRun;
103
+ }): Promise<Error | RemoteResult>;
104
+ export declare function upload(bot: Bot, { id, files }: {
105
+ id: string;
106
+ files: Array<{
107
+ path: string;
108
+ name: string;
109
+ }>;
110
+ }): Promise<Error | {
111
+ uploaded: string[];
112
+ }>;