kimaki 1.4.0 → 1.5.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 (335) hide show
  1. package/assets/fonts/Geist-Bold.ttf +0 -0
  2. package/assets/fonts/Geist-Regular.ttf +0 -0
  3. package/assets/fonts/GeistMono-Regular.ttf +0 -0
  4. package/assets/fonts/OFL.txt +92 -0
  5. package/dist/agent-ui.e2e.test.js +27 -13
  6. package/dist/agent-ui.e2e.test.js.map +1 -1
  7. package/dist/agent-ui.js +2 -1
  8. package/dist/agent-ui.js.map +1 -1
  9. package/dist/analytics.e2e.test.js +1 -1
  10. package/dist/analytics.e2e.test.js.map +1 -1
  11. package/dist/autostart.d.ts +4 -0
  12. package/dist/autostart.js +55 -10
  13. package/dist/autostart.js.map +1 -1
  14. package/dist/bot.d.ts +10 -1
  15. package/dist/bot.js +14 -6
  16. package/dist/bot.js.map +1 -1
  17. package/dist/btw.e2e.test.js +3 -3
  18. package/dist/builtin-skills.d.ts +1 -1
  19. package/dist/builtin-skills.js +1 -1
  20. package/dist/builtin-skills.js.map +1 -1
  21. package/dist/builtin-skills.test.js +3 -4
  22. package/dist/builtin-skills.test.js.map +1 -1
  23. package/dist/catalog-refresh.e2e.test.js +2 -2
  24. package/dist/cli/bot.js +25 -14
  25. package/dist/cli/bot.js.map +1 -1
  26. package/dist/cli/discord.js +32 -6
  27. package/dist/cli/discord.js.map +1 -1
  28. package/dist/cli/schedule.js +23 -9
  29. package/dist/cli/schedule.js.map +1 -1
  30. package/dist/cli/session.js +37 -12
  31. package/dist/cli/session.js.map +1 -1
  32. package/dist/cli/shared.d.ts +5 -3
  33. package/dist/cli/shared.js +45 -10
  34. package/dist/cli/shared.js.map +1 -1
  35. package/dist/cli-discord.e2e.test.js +13 -8
  36. package/dist/cli-discord.e2e.test.js.map +1 -1
  37. package/dist/cli-lock.e2e.test.js +87 -20
  38. package/dist/cli-lock.e2e.test.js.map +1 -1
  39. package/dist/cli-read.e2e.test.js +18 -9
  40. package/dist/cli-read.e2e.test.js.map +1 -1
  41. package/dist/cli-sessions.e2e.test.js +4 -3
  42. package/dist/cli-sessions.e2e.test.js.map +1 -1
  43. package/dist/cli.js +2 -0
  44. package/dist/cli.js.map +1 -1
  45. package/dist/commands/preference-commands.d.ts +4 -0
  46. package/dist/commands/preference-commands.js +38 -4
  47. package/dist/commands/preference-commands.js.map +1 -1
  48. package/dist/commands/session-commands.js +11 -8
  49. package/dist/commands/session-commands.js.map +1 -1
  50. package/dist/commands/thread-commands.js +94 -24
  51. package/dist/commands/thread-commands.js.map +1 -1
  52. package/dist/commands/worktree-commands.d.ts +5 -6
  53. package/dist/commands/worktree-commands.js +8 -7
  54. package/dist/commands/worktree-commands.js.map +1 -1
  55. package/dist/commands.e2e.test.js +25 -21
  56. package/dist/commands.e2e.test.js.map +1 -1
  57. package/dist/coordinator-agents.e2e.test.d.ts +1 -0
  58. package/dist/coordinator-agents.e2e.test.js +113 -0
  59. package/dist/coordinator-agents.e2e.test.js.map +1 -0
  60. package/dist/coordinator-idle.e2e.test.d.ts +1 -0
  61. package/dist/coordinator-idle.e2e.test.js +100 -0
  62. package/dist/coordinator-idle.e2e.test.js.map +1 -0
  63. package/dist/coordinator-queue.e2e.test.d.ts +1 -0
  64. package/dist/coordinator-queue.e2e.test.js +244 -0
  65. package/dist/coordinator-queue.e2e.test.js.map +1 -0
  66. package/dist/coordinator-warmup.e2e.test.d.ts +1 -0
  67. package/dist/coordinator-warmup.e2e.test.js +131 -0
  68. package/dist/coordinator-warmup.e2e.test.js.map +1 -0
  69. package/dist/coordinator.d.ts +6 -0
  70. package/dist/coordinator.e2e.test.d.ts +1 -0
  71. package/dist/coordinator.e2e.test.js +505 -0
  72. package/dist/coordinator.e2e.test.js.map +1 -0
  73. package/dist/coordinator.js +164 -0
  74. package/dist/coordinator.js.map +1 -0
  75. package/dist/db.d.ts +78 -3
  76. package/dist/db.test.js +1 -0
  77. package/dist/db.test.js.map +1 -1
  78. package/dist/diagram.d.ts +11 -0
  79. package/dist/diagram.js +232 -0
  80. package/dist/diagram.js.map +1 -0
  81. package/dist/diagram.test.d.ts +1 -0
  82. package/dist/diagram.test.js +52 -0
  83. package/dist/diagram.test.js.map +1 -0
  84. package/dist/duration.js +13 -5
  85. package/dist/duration.js.map +1 -1
  86. package/dist/effects.d.ts +6 -1
  87. package/dist/effects.js +97 -26
  88. package/dist/effects.js.map +1 -1
  89. package/dist/event-loop.d.ts +1 -1
  90. package/dist/event-loop.js +73 -43
  91. package/dist/event-loop.js.map +1 -1
  92. package/dist/format-parts.d.ts +21 -4
  93. package/dist/format-parts.js +40 -23
  94. package/dist/format-parts.js.map +1 -1
  95. package/dist/gateway-replay.e2e.test.js +4 -4
  96. package/dist/harness.e2e.test.js +2 -2
  97. package/dist/harness.e2e.test.js.map +1 -1
  98. package/dist/hello-thread.e2e.test.js +56 -5
  99. package/dist/hello-thread.e2e.test.js.map +1 -1
  100. package/dist/ingress.js +47 -12
  101. package/dist/ingress.js.map +1 -1
  102. package/dist/interaction-context.d.ts +4 -4
  103. package/dist/interaction-context.js +9 -7
  104. package/dist/interaction-context.js.map +1 -1
  105. package/dist/interrupt.e2e.test.js +8 -5
  106. package/dist/interrupt.e2e.test.js.map +1 -1
  107. package/dist/legacy.e2e.test.js +1 -1
  108. package/dist/lock-routes.d.ts +83 -31
  109. package/dist/lock-routes.js +68 -8
  110. package/dist/lock-routes.js.map +1 -1
  111. package/dist/lock-server.d.ts +3 -2
  112. package/dist/lock-server.js +23 -7
  113. package/dist/lock-server.js.map +1 -1
  114. package/dist/main.d.ts +4 -2
  115. package/dist/main.js +13 -3
  116. package/dist/main.js.map +1 -1
  117. package/dist/mainmast-idle.e2e.test.d.ts +1 -0
  118. package/dist/mainmast-idle.e2e.test.js +99 -0
  119. package/dist/mainmast-idle.e2e.test.js.map +1 -0
  120. package/dist/mainmast-queue.e2e.test.d.ts +1 -0
  121. package/dist/mainmast-queue.e2e.test.js +244 -0
  122. package/dist/mainmast-queue.e2e.test.js.map +1 -0
  123. package/dist/mainmast-warmup.e2e.test.d.ts +1 -0
  124. package/dist/mainmast-warmup.e2e.test.js +130 -0
  125. package/dist/mainmast-warmup.e2e.test.js.map +1 -0
  126. package/dist/mainmast.d.ts +6 -0
  127. package/dist/mainmast.e2e.test.d.ts +1 -0
  128. package/dist/mainmast.e2e.test.js +428 -0
  129. package/dist/mainmast.e2e.test.js.map +1 -0
  130. package/dist/mainmast.js +156 -0
  131. package/dist/mainmast.js.map +1 -0
  132. package/dist/markdown/markdown.test.js +4 -4
  133. package/dist/markdown/render-markdown.js +6 -5
  134. package/dist/markdown/render-markdown.js.map +1 -1
  135. package/dist/onboarding-cli.e2e.test.js +7 -6
  136. package/dist/onboarding-cli.e2e.test.js.map +1 -1
  137. package/dist/onboarding.d.ts +3 -10
  138. package/dist/onboarding.e2e.test.js +8 -10
  139. package/dist/onboarding.e2e.test.js.map +1 -1
  140. package/dist/onboarding.js +14 -24
  141. package/dist/onboarding.js.map +1 -1
  142. package/dist/permissions.e2e.test.js +3 -3
  143. package/dist/plugin/coordinator.d.ts +4 -0
  144. package/dist/plugin/coordinator.js +389 -0
  145. package/dist/plugin/coordinator.js.map +1 -0
  146. package/dist/plugin/index.js +76 -17
  147. package/dist/plugin/index.js.map +1 -1
  148. package/dist/plugin/mainmast.d.ts +4 -0
  149. package/dist/plugin/mainmast.js +379 -0
  150. package/dist/plugin/mainmast.js.map +1 -0
  151. package/dist/plugin.e2e.test.js +1 -1
  152. package/dist/preference-commands.e2e.test.js +103 -24
  153. package/dist/preference-commands.e2e.test.js.map +1 -1
  154. package/dist/project.d.ts +1 -1
  155. package/dist/prompt.d.ts +22 -9
  156. package/dist/prompt.js +64 -48
  157. package/dist/prompt.js.map +1 -1
  158. package/dist/questions.e2e.test.js +13 -13
  159. package/dist/queue-sources.e2e.test.d.ts +1 -0
  160. package/dist/queue-sources.e2e.test.js +168 -0
  161. package/dist/queue-sources.e2e.test.js.map +1 -0
  162. package/dist/queue.d.ts +9 -1
  163. package/dist/queue.e2e.test.js +48 -30
  164. package/dist/queue.e2e.test.js.map +1 -1
  165. package/dist/queue.js +97 -24
  166. package/dist/queue.js.map +1 -1
  167. package/dist/queue.test.d.ts +1 -0
  168. package/dist/queue.test.js +57 -0
  169. package/dist/queue.test.js.map +1 -0
  170. package/dist/remote-send.e2e.test.js +6 -6
  171. package/dist/remote-send.js +2 -1
  172. package/dist/remote-send.js.map +1 -1
  173. package/dist/renderer.e2e.test.js +7 -7
  174. package/dist/restart.e2e.test.js +2 -2
  175. package/dist/routines.e2e.test.js +2 -2
  176. package/dist/scheduler.d.ts +3 -3
  177. package/dist/scheduler.e2e.test.js +43 -20
  178. package/dist/scheduler.e2e.test.js.map +1 -1
  179. package/dist/scheduler.js +4 -2
  180. package/dist/scheduler.js.map +1 -1
  181. package/dist/schema-sql.d.ts +1 -1
  182. package/dist/schema-sql.js +1 -1
  183. package/dist/schema-sql.js.map +1 -1
  184. package/dist/schema.d.ts +152 -6
  185. package/dist/schema.js +12 -0
  186. package/dist/schema.js.map +1 -1
  187. package/dist/session-commands.e2e.test.js +36 -11
  188. package/dist/session-commands.e2e.test.js.map +1 -1
  189. package/dist/session-events.d.ts +18 -6
  190. package/dist/session-events.js +166 -22
  191. package/dist/session-events.js.map +1 -1
  192. package/dist/session-ops.e2e.test.js +63 -12
  193. package/dist/session-ops.e2e.test.js.map +1 -1
  194. package/dist/sessions.d.ts +44 -21
  195. package/dist/sessions.js +174 -63
  196. package/dist/sessions.js.map +1 -1
  197. package/dist/shell.e2e.test.js +4 -4
  198. package/dist/slash-commands.js +6 -4
  199. package/dist/slash-commands.js.map +1 -1
  200. package/dist/slash-commands.test.js +2 -0
  201. package/dist/slash-commands.test.js.map +1 -1
  202. package/dist/sleep.e2e.test.js +29 -14
  203. package/dist/sleep.e2e.test.js.map +1 -1
  204. package/dist/sleeps.d.ts +2 -1
  205. package/dist/sleeps.js +21 -3
  206. package/dist/sleeps.js.map +1 -1
  207. package/dist/store.d.ts +1 -0
  208. package/dist/store.js +3 -2
  209. package/dist/store.js.map +1 -1
  210. package/dist/system-prompt.d.ts +3 -1
  211. package/dist/system-prompt.js +138 -64
  212. package/dist/system-prompt.js.map +1 -1
  213. package/dist/test/generate-log-plugin/index.d.ts +3 -0
  214. package/dist/test/generate-log-plugin/index.js +15 -0
  215. package/dist/test/generate-log-plugin/index.js.map +1 -0
  216. package/dist/test/harness.d.ts +20 -1
  217. package/dist/test/harness.js +51 -10
  218. package/dist/test/harness.js.map +1 -1
  219. package/dist/test/replay.js +11 -7
  220. package/dist/test/replay.js.map +1 -1
  221. package/dist/thread-reducer.d.ts +29 -3
  222. package/dist/thread-reducer.fixtures.test.js +58 -51
  223. package/dist/thread-reducer.fixtures.test.js.map +1 -1
  224. package/dist/thread-reducer.js +112 -25
  225. package/dist/thread-reducer.js.map +1 -1
  226. package/dist/thread-reducer.test.js +197 -24
  227. package/dist/thread-reducer.test.js.map +1 -1
  228. package/dist/voice-attachments.e2e.test.js +108 -18
  229. package/dist/voice-attachments.e2e.test.js.map +1 -1
  230. package/dist/voice-call.e2e.test.js +9 -9
  231. package/dist/voice-call.js +6 -6
  232. package/dist/voice-call.js.map +1 -1
  233. package/dist/voice-openai.e2e.test.js +59 -23
  234. package/dist/voice-openai.e2e.test.js.map +1 -1
  235. package/dist/voice.d.ts +1 -1
  236. package/dist/voice.js +72 -24
  237. package/dist/voice.js.map +1 -1
  238. package/dist/working-directory.e2e.test.js +11 -11
  239. package/dist/working-directory.e2e.test.js.map +1 -1
  240. package/package.json +12 -6
  241. package/src/agent-ui.e2e.test.ts +27 -13
  242. package/src/agent-ui.ts +2 -1
  243. package/src/analytics.e2e.test.ts +1 -1
  244. package/src/autostart.ts +55 -10
  245. package/src/bot.ts +29 -5
  246. package/src/btw.e2e.test.ts +3 -3
  247. package/src/builtin-skills.test.ts +3 -4
  248. package/src/builtin-skills.ts +1 -1
  249. package/src/catalog-refresh.e2e.test.ts +2 -2
  250. package/src/cli/bot.ts +23 -14
  251. package/src/cli/discord.ts +30 -6
  252. package/src/cli/schedule.ts +23 -9
  253. package/src/cli/session.ts +35 -12
  254. package/src/cli/shared.ts +43 -8
  255. package/src/cli-discord.e2e.test.ts +13 -8
  256. package/src/cli-lock.e2e.test.ts +88 -20
  257. package/src/cli-read.e2e.test.ts +17 -8
  258. package/src/cli-sessions.e2e.test.ts +4 -3
  259. package/src/cli.ts +2 -0
  260. package/src/commands/preference-commands.ts +38 -4
  261. package/src/commands/session-commands.ts +12 -7
  262. package/src/commands/thread-commands.ts +92 -24
  263. package/src/commands/worktree-commands.ts +10 -9
  264. package/src/commands.e2e.test.ts +25 -21
  265. package/src/coordinator-agents.e2e.test.ts +145 -0
  266. package/src/coordinator-idle.e2e.test.ts +122 -0
  267. package/src/coordinator-queue.e2e.test.ts +279 -0
  268. package/src/coordinator-warmup.e2e.test.ts +158 -0
  269. package/src/coordinator.e2e.test.ts +545 -0
  270. package/src/coordinator.ts +168 -0
  271. package/src/db.test.ts +1 -0
  272. package/src/diagram.test.ts +56 -0
  273. package/src/diagram.ts +243 -0
  274. package/src/duration.ts +13 -5
  275. package/src/effects.ts +99 -27
  276. package/src/event-loop.ts +71 -42
  277. package/src/format-parts.ts +53 -22
  278. package/src/gateway-replay.e2e.test.ts +4 -4
  279. package/src/harness.e2e.test.ts +2 -2
  280. package/src/hello-thread.e2e.test.ts +59 -5
  281. package/src/ingress.ts +44 -11
  282. package/src/interaction-context.ts +12 -11
  283. package/src/interrupt.e2e.test.ts +8 -5
  284. package/src/legacy.e2e.test.ts +1 -1
  285. package/src/lock-routes.ts +62 -8
  286. package/src/lock-server.ts +23 -7
  287. package/src/main.ts +22 -7
  288. package/src/markdown/markdown.test.ts +4 -4
  289. package/src/markdown/render-markdown.ts +6 -5
  290. package/src/onboarding-cli.e2e.test.ts +7 -6
  291. package/src/onboarding.e2e.test.ts +8 -10
  292. package/src/onboarding.ts +13 -29
  293. package/src/permissions.e2e.test.ts +3 -3
  294. package/src/plugin/coordinator.ts +401 -0
  295. package/src/plugin/index.ts +68 -15
  296. package/src/plugin.e2e.test.ts +1 -1
  297. package/src/preference-commands.e2e.test.ts +103 -23
  298. package/src/prompt.ts +87 -43
  299. package/src/questions.e2e.test.ts +13 -13
  300. package/src/queue-sources.e2e.test.ts +197 -0
  301. package/src/queue.e2e.test.ts +48 -30
  302. package/src/queue.test.ts +59 -0
  303. package/src/queue.ts +104 -24
  304. package/src/remote-send.e2e.test.ts +6 -6
  305. package/src/remote-send.ts +2 -1
  306. package/src/renderer.e2e.test.ts +7 -7
  307. package/src/restart.e2e.test.ts +2 -2
  308. package/src/routines.e2e.test.ts +2 -2
  309. package/src/scheduler.e2e.test.ts +45 -19
  310. package/src/scheduler.ts +4 -2
  311. package/src/schema-sql.ts +1 -1
  312. package/src/schema.ts +13 -0
  313. package/src/session-commands.e2e.test.ts +38 -11
  314. package/src/session-events.ts +160 -21
  315. package/src/session-ops.e2e.test.ts +64 -11
  316. package/src/sessions.ts +214 -64
  317. package/src/shell.e2e.test.ts +4 -4
  318. package/src/slash-commands.test.ts +2 -0
  319. package/src/slash-commands.ts +6 -4
  320. package/src/sleep.e2e.test.ts +30 -13
  321. package/src/sleeps.ts +20 -3
  322. package/src/store.ts +5 -2
  323. package/src/system-prompt.ts +143 -63
  324. package/src/test/generate-log-plugin/index.ts +16 -0
  325. package/src/test/harness.ts +77 -14
  326. package/src/test/replay.ts +12 -6
  327. package/src/thread-reducer.fixtures.test.ts +58 -51
  328. package/src/thread-reducer.test.ts +207 -26
  329. package/src/thread-reducer.ts +138 -37
  330. package/src/voice-attachments.e2e.test.ts +110 -18
  331. package/src/voice-call.e2e.test.ts +9 -9
  332. package/src/voice-call.ts +6 -6
  333. package/src/voice-openai.e2e.test.ts +64 -24
  334. package/src/voice.ts +93 -26
  335. package/src/working-directory.e2e.test.ts +11 -11
@@ -1 +1 @@
1
- {"version":3,"file":"sleeps.js","sourceRoot":"","sources":["../src/sleeps.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sleeps.js","sourceRoot":"","sources":["../src/sleeps.ts"],"names":[],"mappings":"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"}
package/dist/store.d.ts CHANGED
@@ -5,6 +5,7 @@ export type State = {
5
5
  sessionThreads: Readonly<Record<string, string>>;
6
6
  threads: Readonly<Record<string, ThreadView>>;
7
7
  verbosity: Readonly<Record<string, Verbosity>>;
8
+ coordinator: Readonly<Record<string, boolean>>;
8
9
  };
9
10
  export declare function createBotStore(): import("zustand/vanilla").StoreApi<State>;
10
11
  export type BotStore = ReturnType<typeof createBotStore>;
package/dist/store.js CHANGED
@@ -1,9 +1,10 @@
1
1
  // The only shared mutable in-memory state of the bot (spec 27.4). One zustand
2
- // atom. The event loop writes bindings and views; /verbosity writes verbosity.
2
+ // atom. The event loop writes bindings and views; /verbosity writes verbosity,
3
+ // /toggle-coordinator writes coordinator.
3
4
  // State private to one module (held events, wizard picks, upload waits) stays
4
5
  // in that module's closure.
5
6
  import { createStore } from 'zustand/vanilla';
6
7
  export function createBotStore() {
7
- return createStore(() => ({ roots: {}, sessionThreads: {}, threads: {}, verbosity: {} }));
8
+ return createStore(() => ({ roots: {}, sessionThreads: {}, threads: {}, verbosity: {}, coordinator: {} }));
8
9
  }
9
10
  //# sourceMappingURL=store.js.map
package/dist/store.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,+EAA+E;AAC/E,8EAA8E;AAC9E,4BAA4B;AAE5B,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAgB7C,MAAM,UAAU,cAAc;IAC5B,OAAO,WAAW,CAAQ,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;AAClG,CAAC"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,+EAA+E;AAC/E,0CAA0C;AAC1C,8EAA8E;AAC9E,4BAA4B;AAE5B,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAkB7C,MAAM,UAAU,cAAc;IAC5B,OAAO,WAAW,CAAQ,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;AACnH,CAAC"}
@@ -10,7 +10,7 @@ export type ScheduledRun = {
10
10
  cronExpr: string | null;
11
11
  timezone: string | null;
12
12
  };
13
- export declare function baseInstructions({ sessionId, threadId, channelId, guildId, userId, dataDir, channelTopic, agents, parentSessionId, scheduledTask, disabled, }: {
13
+ export declare function baseInstructions({ sessionId, threadId, channelId, guildId, userId, dataDir, channelTopic, agents, parentSessionId, scheduledTask, coordinator: isCoordinator, disabled, }: {
14
14
  sessionId: string;
15
15
  threadId: string;
16
16
  channelId: string;
@@ -21,8 +21,10 @@ export declare function baseInstructions({ sessionId, threadId, channelId, guild
21
21
  agents: readonly InstructionAgent[];
22
22
  parentSessionId: string | null;
23
23
  scheduledTask?: ScheduledRun | null;
24
+ coordinator?: boolean;
24
25
  disabled?: readonly PromptSection[];
25
26
  }): string;
27
+ export declare function escapeAttribute(value: string): string;
26
28
  export declare function stripTurnContext(text: string): string;
27
29
  declare const PromptAttachmentSchema: z.ZodObject<{
28
30
  name: z.ZodString;
@@ -5,11 +5,15 @@ import dedent from 'string-dedent';
5
5
  import { z } from 'zod';
6
6
  export const INSTRUCTION_KEY = 'kimaki';
7
7
  const PARENT_SESSION_LINE = 'Your parent OpenCode session ID is: ';
8
- // Every system-level instruction of Kimaki is built in this file. Parts are
8
+ // Every system-level instruction of Kimaki is built in this file, except the
9
+ // coordinator roles: the plugin adds them (plugin/coordinator.ts). Parts are
9
10
  // joined in order; a tagged part is static and `--disable-prompt <tag>` drops it.
10
- export function baseInstructions({ sessionId, threadId, channelId, guildId, userId, dataDir, channelTopic, agents, parentSessionId, scheduledTask = null, disabled = [], }) {
11
+ export function baseInstructions({ sessionId, threadId, channelId, guildId, userId, dataDir, channelTopic, agents, parentSessionId, scheduledTask = null, coordinator: isCoordinator = false, disabled = [], }) {
11
12
  const userArg = ` --user '${userId}'`;
12
13
  const parentArg = ` --parent-session ${sessionId}`;
14
+ // The coordinator lives in the channel itself: thread-only parts are left out.
15
+ // The coordinator adds the user to a worker thread only when needed (plugin/coordinator.ts).
16
+ const workerUserArg = isCoordinator ? '' : userArg;
13
17
  const topic = channelTopic?.trim();
14
18
  const agentList = agents.map((agent) => `- \`${agent.name}\`${agent.description ? `: ${agent.description}` : ''}`).join('\n');
15
19
  const parts = [
@@ -18,10 +22,29 @@ export function baseInstructions({ sessionId, threadId, channelId, guildId, user
18
22
 
19
23
  ## Discord output
20
24
 
21
- Be concise. Do not narrate between tool calls. Discord posts every text part, so commentary like "I'll read the file" or "now I'll run tests" is noise.
25
+ Be as concise as possible. The user does not read paragraphs longer than 2 lines and replies "expand" when they want more. Before writing any text, think how to say it in the fewest words and lines. Write like a sharp colleague replying in chat: plain words, complete sentences, friendly but not chatty.
26
+
27
+ - Lead with the answer: the result, the yes or no, the number, the recommendation. Do not restate the question, open with lines like "Here's the summary", or end with filler.
28
+ - Keep replies short by saying less, not by compressing words. No walls of text and no long reports. Go longer only when the user asks for detail or the task truly needs it.
29
+ - Never write telegraphic fragments, "label: value" lines, or arrows in place of sentences. Every sentence and every list item should read naturally out loud.
30
+ - Mention tools, flags and file paths only when the user needs them.
31
+ - Never invent numbers, results or facts. When you did not check something, say so.
32
+ - When a next step is obvious, offer it in one sentence instead of starting it unasked.
33
+ - Put failures, warnings and actions the user must take in a \`<callout>\`.
34
+
35
+ Examples:
36
+
37
+ User: why is the footer missing after some turns?
38
+ You: The reducer skipped turns with no text, so they never got a footer. I fixed it and the tests pass: https://critique.work/v/abc123
39
+
40
+ User: do failed uploads retry?
41
+ You: No, a failed Discord upload is lost. I can add a retry with backoff if you want.
42
+
43
+ ### text during a turn
44
+
45
+ Discord posts every text part, so do not narrate between tool calls: commentary like "I'll read the file" or "now I'll run tests" is noise. Write no text until you are ready to give the final answer for this turn; tool calls can run with no text before them. Text you only plan in your reasoning never reaches the user. Run \`kimaki sleep\` first and write your answer right after it: text planned for before a tool call is sometimes never written. The only command that needs visible text first is \`kimaki upload-request\`, because it waits for the upload: write that text, then call it.
46
+
22
47
  Do not restart the bot unless the user explicitly asks you to.
23
- Do not output text until you are ready to give the user the final answer for this turn. Tool calls can run with no preceding text.
24
- Exceptions: when a command or tool needs user-visible text first (\`kimaki buttons\`, \`kimaki upload-request\`, \`kimaki sleep\`), write that required text, then call it.
25
48
 
26
49
  ## shell tool
27
50
 
@@ -45,7 +68,7 @@ export function baseInstructions({ sessionId, threadId, channelId, guildId, user
45
68
  `],
46
69
  [null, dedent `
47
70
  Discord channel ID: ${channelId}
48
- Discord thread ID: ${threadId}
71
+ ${isCoordinator ? 'You run in this channel, not in a thread.' : `Discord thread ID: ${threadId}`}
49
72
  Discord guild ID: ${guildId}
50
73
  ${parentSessionId ? `${PARENT_SESSION_LINE}${parentSessionId}\nYou can send a message back to the parent session with:\nkimaki send --session ${parentSessionId} --prompt 'your update here' --agent <current_agent>\nDo NOT message the parent session unless the user explicitly asks you to.` : ''}
51
74
 
@@ -84,6 +107,8 @@ export function baseInstructions({ sessionId, threadId, channelId, guildId, user
84
107
 
85
108
  kimaki upload-to-discord --session ${sessionId} <file1> [file2] ...
86
109
 
110
+ Never pipe or redirect its output (no \`| tail\`, \`| jq\`, \`> /dev/null\`): Kimaki reads the uploaded file URLs from it for \`kimaki session read\` and transcripts.
111
+
87
112
  To send several images or files, pass them all to ONE command in the order you want them shown, not one command per file. Discord shows them in argument order with numbered labels (\`1. a.png\`, \`2. b.pdf\`), so you and the user can refer to them by number (for example "screenshot 2"). Name them in your text with the same numbers.
88
113
 
89
114
  Files the user attaches arrive in an \`<attachments>\` block, numbered in the order the user attached them. When the user says "the second image", use that numbering.
@@ -111,30 +136,32 @@ export function baseInstructions({ sessionId, threadId, channelId, guildId, user
111
136
 
112
137
  To ask the user to upload files from their device, write all visible text first, then run \`kimaki upload-request --prompt 'Send the files' --max-files 5\`. This shows a native file picker in Discord. Set the shell timeout to 600000 ms.
113
138
  The request waits at most 6 minutes and returns the local paths (in the session folder under \`uploads/\`) or cancelled. A new user prompt cancels the request. Do not keep waiting after cancellation.
114
- You MUST call it LAST, after ALL text.
139
+ You MUST call it LAST, after ALL text. Write that text as a real message, not only in your reasoning.
115
140
  `],
116
141
  ['action-buttons', dedent `
117
142
  ## action buttons
118
143
 
119
- To show 1 to 3 buttons, write all visible text first, then run \`kimaki buttons --button 'Label'\`. Repeat \`--button\` for more. Prefer a single button whenever possible. Colors are white, blue, green, red: \`--button 'Label:green'\`.
144
+ To show 1 to 3 buttons, run \`kimaki buttons --button 'Label'\`. Repeat \`--button\` for more. Prefer a single button whenever possible. Colors are white, blue, green, red: \`--button 'Label:green'\`.
120
145
  A click sends "User clicked: Label" to this session as a new prompt. Labels have at most 80 chars.
121
- You MUST call \`kimaki buttons\` LAST, after ALL text. Never call it in a turn that has no text before it. The text must explain the choice. Labels alone are not an explanation.
122
- The user does not see tool calls, command outputs, or subagent and task results. Before the buttons, concisely explain what was done in the session and any findings the choice depends on, then what each button does.
146
+ The same turn MUST explain the buttons in text. Labels alone are not an explanation.
147
+ The user does not see tool calls, command outputs, or subagent and task results. Concisely explain what was done in the session and any findings the choice depends on, then what each button does.
123
148
  `],
124
149
  ['session-sleep', dedent `
125
150
  ## sleeping the session
126
151
 
127
152
  Use \`kimaki sleep\` to pause this session for hours or days, then continue when the time is reached. The wake is stored in SQLite and survives bot restarts.
128
153
  Pass either \`--duration\` (\`30s\`, \`2h\`, \`1d\`) or \`--until\` (UTC ISO ending with \`Z\`, example \`2026-08-20T09:00:00Z\`), and optionally \`--reason 'text'\`.
129
- You MUST run \`kimaki sleep\` LAST, after ALL text. Do not run more commands after it.
154
+ Run \`kimaki sleep\` as the last command of the turn, before your final text. Do not run more commands after it.
130
155
  A new user message cancels the sleep. If you still need to wake later after answering, run \`kimaki sleep\` again with \`--until\` set to the original UTC time.
131
- The command output is not a wake. After it succeeds, write one short line that you are waiting, then stop. Do not continue the wait reason and do not pretend time has passed.
156
+ The command output is not a wake. After it succeeds, write your full answer if this turn has not given it yet, then one short line that you are waiting, then stop. Do not continue the wait reason and do not pretend time has passed.
132
157
  Wake is a later message that starts with \`Woke after sleeping until\`. Only then continue the wait reason.
133
158
  To monitor something slow (email replies, PR reviews, long CI), use long waits: 2h or more, up to 1d. Never poll every few minutes. Prefer \`--until\` at a natural check time, for example the next morning.
134
- On a wake where nothing changed, do not post a status report. Write one short line, then sleep again with a longer wait (double it, up to 1d).
159
+ On a wake where nothing changed, do not post a status report. Sleep again with a longer wait (double it, up to 1d), then write one short line.
160
+
161
+ **When you are blocked on the user, sleep instead of ending the turn.** If you need the user to do something outside the chat (accept a sudo or permission dialog, log in, plug in a device, approve something), ask for it, assume they will do it, and run \`kimaki sleep --duration 5m --reason '...'\`. On wake, check if you are unblocked and continue on your own. If not, sleep again. The user can still send a message while you sleep, so this costs nothing when they reply, and the work continues when they only did the action and forgot to write.
135
162
  `],
136
163
  [null, scheduledTask ? scheduledTaskSection(scheduledTask) : ''],
137
- [null, dedent `
164
+ [null, isCoordinator ? '' : dedent `
138
165
  ## archiving the current thread
139
166
 
140
167
  To archive the current Discord thread (hide it from sidebar) without stopping the session, run:
@@ -151,20 +178,23 @@ export function baseInstructions({ sessionId, threadId, channelId, guildId, user
151
178
  kimaki session abort <session_id>
152
179
 
153
180
  This stops the AI from processing but keeps the thread visible in Discord. Different from \`kimaki session archive\` which hides the thread.
181
+
182
+ To free context, \`kimaki session compact [session_id]\` summarizes a session's history after its current turn ends. With no ID it compacts this session.
154
183
  `],
155
- [null, dedent `
184
+ [null, isCoordinator ? '' : dedent `
156
185
  ## updating the session title
157
186
 
158
- Skip the first turn. OpenCode already auto-generates the title from the first message.
159
- Exception: a btw fork keeps the parent title, so rename it as its prompt asks.
160
- On later turns, if the scope or goal changed, run:
187
+ Kimaki names new threads after the first prompt. If the title is still \`Kimaki session\` (a thread started without a prompt), rename it on the first turn.
188
+ A btw fork keeps the parent title, so rename it as its prompt asks.
189
+ Otherwise rename only when the scope or goal changed, with:
161
190
 
162
191
  kimaki session title 'Short title' --session ${sessionId}
163
192
 
164
193
  Current Discord title is in \`<discord-user thread-name="..." />\`. Discord follows the OpenCode title.
165
194
  Do not retitle every turn. Discord rate-limits thread renames.
166
- Keep titles short. No emoji. No ⬦, btw:, or Fork: prefixes.
167
-
195
+ Keep titles short. No emoji. No btw: or Fork: prefixes.
196
+ `],
197
+ [null, dedent `
168
198
  ## discord user mentions
169
199
 
170
200
  Prefer Discord user IDs for mentions. Discord bots cannot ping by @name; use \`<@userId>\` in message text or pass the ID to \`--user\`.
@@ -181,14 +211,14 @@ export function baseInstructions({ sessionId, threadId, channelId, guildId, user
181
211
 
182
212
  Start a new thread/session in this channel with:
183
213
 
184
- kimaki send --channel ${channelId} --prompt 'your prompt here' --agent <current_agent>${parentArg}${userArg}
214
+ kimaki send --channel ${channelId} --prompt 'your prompt here' --agent <current_agent>${parentArg}${workerUserArg}
185
215
 
186
216
  Use this to spawn parallel helper sessions like teammates: start threads with focused prompts, then come back and collect the results. Rules for every new session:
187
217
  - ALWAYS pass \`--parent-session ${sessionId}\` (your current session ID). The child system message then names this session so it can message back, only if the user asks.
188
218
  - Pass \`--agent <current_agent>\` so spawned and scheduled sessions keep the same agent unless you are intentionally switching. Replace \`<current_agent>\` with your agent ID: the \`agent\` field of session \`${sessionId}\` in \`kimaki session list --all --json\`.
189
219
  - \`--user\` accepts a Discord user ID or raw mention only and adds that user to the thread. Repeat it to add several users. Resolve names to IDs with \`kimaki user list\` first.
190
220
  - Use single quotes around \`--prompt\`, \`--user\`, \`--send-at\`, and other literal arguments so backticks inside prompts are not executed by the shell.
191
- - The new session has no memory of this conversation. Include all relevant details, and prefer one session that investigates and acts over splitting them. Use **bold**, \`code\`, lists, and > quotes for readability.
221
+ - The new session has no memory of this conversation, but it loads AGENTS.md and the project instructions itself. Include the task details it cannot find on its own, and prefer one session that investigates and acts over splitting them. The user reads the prompt in the thread: keep it concise and use **bold**, \`code\`, lists, and > quotes for readability.
192
222
  - Prompts over 2000 chars for another machine's channel are sent as a file attachment automatically.
193
223
 
194
224
  Choose the destination:
@@ -203,11 +233,11 @@ export function baseInstructions({ sessionId, threadId, channelId, guildId, user
203
233
  kimaki send --channel ${channelId} --prompt 'User cancelled subscription' --notify-only --agent <current_agent>${userArg}
204
234
 
205
235
  # attach local files (images, text files, PDFs); --file is repeatable
206
- kimaki send --channel ${channelId} --prompt 'Review this screenshot' --file /path/to/screenshot.png --agent <current_agent>${parentArg}${userArg}
236
+ kimaki send --channel ${channelId} --prompt 'Review this screenshot' --file /path/to/screenshot.png --agent <current_agent>${parentArg}${workerUserArg}
207
237
  kimaki send --thread <thread_id> --prompt 'Here is the error log' --file ./error.log --file ./stack-trace.txt --agent <current_agent>
208
238
 
209
239
  # pick a different agent, only when the user names it
210
- kimaki send --channel ${channelId} --prompt 'Refactor the auth module' --agent <agent_name>${parentArg}${userArg}
240
+ kimaki send --channel ${channelId} --prompt 'Refactor the auth module' --agent <agent_name>${parentArg}${workerUserArg}
211
241
  \`\`\`
212
242
 
213
243
  ${agents.length > 0 ? `Available agents:\n${agentList}` : ''}
@@ -220,7 +250,7 @@ export function baseInstructions({ sessionId, threadId, channelId, guildId, user
220
250
 
221
251
  Only create a worktree when the user explicitly asks:
222
252
 
223
- \`kimaki send --channel ${channelId} --prompt 'Work in this checkout only' --worktree feature-name --agent <current_agent>${parentArg}${userArg}\`
253
+ \`kimaki send --channel ${channelId} --prompt 'Work in this checkout only' --worktree feature-name --agent <current_agent>${parentArg}${workerUserArg}\`
224
254
 
225
255
  \`--base-branch <ref>\` chooses the starting commit; default is the mapped project's committed HEAD. Uncommitted files are not copied. \`--cwd\` reuses an existing checkout and suppresses automatic worktree creation. Do not combine it with \`--worktree\`.
226
256
 
@@ -234,6 +264,8 @@ export function baseInstructions({ sessionId, threadId, channelId, guildId, user
234
264
 
235
265
  Every command that takes a session (\`--session\`, \`--thread\`, or a positional ID) accepts a session ID, a Discord thread ID, or a Discord thread URL. Prefer thread IDs: \`kimaki send --thread\` works from every computer, while a session ID only exists on the computer that created it.
236
266
 
267
+ **Cold long sessions:** the provider prompt cache expires a few minutes after a session's last request, so the next prompt writes its whole context to the cache again. When a session has more than 400k tokens of context and was last active more than 10 minutes ago, do not send it a follow-up. Start a new session instead and put the old thread's Discord URL in the prompt, so the new agent reads what it needs with \`kimaki session read <url> --thinking\` or from its transcript. \`kimaki session read\` and \`<session-finished>\` notes show the context size, the last run's duration and when it was last active.
268
+
237
269
  To continue a thread from another computer, find its Discord channel, list its threads, then send with \`--thread\`:
238
270
 
239
271
  \`\`\`bash
@@ -263,15 +295,13 @@ export function baseInstructions({ sessionId, threadId, channelId, guildId, user
263
295
  Start \`--prompt\` with \`/commandname\` to run an OpenCode command or MCP prompt by its exact name (\`/review\`, \`/server:prompt\`). If no command has that name, the prompt is sent as plain text. Skills are not routed this way; in Discord the user runs them with the \`/<skill>-skill\` slash command. This works for new threads (\`--channel\`) and existing threads (\`--thread\`/\`--session\`):
264
296
 
265
297
  kimaki send --thread <thread_id> --prompt '/review fix the auth module' --agent <current_agent>
266
- kimaki send --channel ${channelId} --prompt '/review the last commit' --agent <current_agent>${parentArg}${userArg}
298
+ kimaki send --channel ${channelId} --prompt '/review the last commit' --agent <current_agent>${parentArg}${workerUserArg}
267
299
 
268
300
  The user switches the agent mid-session with the Discord slash command \`/<agentname>-agent\`. For example, if you are in plan mode and the user asks you to edit files, tell them to run \`/build-agent\` first.
269
301
 
270
302
  ### session handoff
271
303
 
272
- When you are approaching the **context window limit**, or the user asks to "handoff", "continue in new thread", or "start fresh session", or a complex task would benefit from a clean slate, start a fresh session with a summary:
273
-
274
- kimaki send --channel ${channelId} --prompt 'Continuing from previous session: <summary of current task and state>' --agent <current_agent>${parentArg}${userArg}
304
+ ${isCoordinator ? handoffCoordinator : `${handoffThread}\n\nkimaki send --channel ${channelId} --prompt 'Continuing from previous session: <summary of current task and state>' --agent <current_agent>${parentArg}${userArg}`}
275
305
 
276
306
  ## scheduled sends and routines
277
307
 
@@ -311,6 +341,8 @@ export function baseInstructions({ sessionId, threadId, channelId, guildId, user
311
341
 
312
342
  For simple reminders and notifications (\`--notify-only\`), inline the prompt directly since there is no AI session to read files.
313
343
 
344
+ After creating or editing a routine, quote the exact prompt it uses in your reply with a \`>\` markdown quote, next to its schedule, agent and model, so the user can check it.
345
+
314
346
  Notification strategy:
315
347
  - For autonomous routines, do not pass \`--user\`. It adds the user to every run's thread before the result is known. Put the user's Discord ID in the routine md file instead, and tell the agent to mention it only after completing work worth reviewing, when reporting an issue, or when asking for a decision.
316
348
  - If a run found no work, made no changes, or has nothing actionable, do not mention the user. Archive that session instead with \`kimaki session archive\`.
@@ -368,17 +400,20 @@ export function baseInstructions({ sessionId, threadId, channelId, guildId, user
368
400
  To read a session as markdown, pipe to a file. Logs go to stderr:
369
401
 
370
402
  \`\`\`bash
371
- kimaki session read <sessionId> > ./tmp/session.md 2>/dev/null
403
+ kimaki session read <sessionId> > ./tmp/session.md 2>/dev/null # prompts and final answers only
404
+ kimaki session read <sessionId> --full > ./tmp/session.md 2>/dev/null # every tool call too
405
+ kimaki session read <sessionId> --thinking > ./tmp/session.md 2>/dev/null # tool calls and reasoning, like the transcripts
406
+ kimaki session read <sessionId> --verbose > ./tmp/session.md 2>/dev/null # also tool outputs
372
407
  \`\`\`
373
408
 
374
- The dump is already compressed (no thinking, truncated tool inputs). If it is under 100 KB, read the whole file. Do not grep first. Use \`--thinking\` / \`--verbose\` only when you need the full dump.
409
+ The header shows the context size, how long the last run took and when the session was last active. The default output is enough to check a result. To understand or continue a session's work, read it with \`--thinking\`: every tool call input and the reasoning, the same content as its transcript. Use \`--verbose\` only when you need tool outputs. If a file is under 100 KB, read the whole file. Do not grep first.
375
410
 
376
411
  ### discord links to sessions
377
412
 
378
- A Discord link the user shares like \`https://discord.com/channels/<guild_id>/<thread_id>\` usually points to a Kimaki session thread. \`session read\` also accepts the thread ID (last path segment):
413
+ A Discord link the user shares like \`https://discord.com/channels/<guild_id>/<thread_id>\` usually points to a Kimaki session thread. \`session read\` also accepts the link or the thread ID (last path segment). Read it with \`--thinking\`, so you see the tool calls and reasoning, not only the prompts and final answers:
379
414
 
380
415
  \`\`\`bash
381
- kimaki session read <thread_id> > ./tmp/session.md 2>/dev/null
416
+ kimaki session read <thread_id> --thinking > ./tmp/session.md 2>/dev/null
382
417
  \`\`\`
383
418
 
384
419
  When the user asks you to find a session, always show the Discord thread as a clickable link, not just the raw session ID or thread ID: \`https://discord.com/channels/<guild_id>/<thread_id>\`. Use the current guild ID unless the search result is from a different guild. \`kimaki session url <id>\` prints the link.
@@ -411,33 +446,43 @@ export function baseInstructions({ sessionId, threadId, channelId, guildId, user
411
446
  kimaki session read <sessionId> > ./tmp/session.md 2>/dev/null
412
447
  \`\`\`
413
448
 
414
- Send a task to another project only when the user explicitly asks, targeting the project, channel, or path they named. Ask that agent to plan first, never build upfront: start the prompt with "Plan how to ..." so the user can review before greenlighting implementation. Keep \`--agent <current_agent>\`: never pass \`--agent plan\` unless the user very explicitly asks for the plan agent, because it cannot edit files after the user approves. Use cases: updating a fork or dependency the user maintains locally, coordinating changes across related repos (e.g. SDK + docs), delegating subtasks to isolated sessions.
449
+ Do quick edits and fixes in another project directly from this session, in that project's directory. Do not spawn a new session for them.
450
+
451
+ Send a task to another project only when the user explicitly asks, targeting the project, channel, or path they named. Keep prompts concise: only what the other agent needs and cannot find in the repo. Keep \`--agent <current_agent>\`. Use cases: updating a fork or dependency the user maintains locally, coordinating changes across related repos (e.g. SDK + docs), delegating subtasks to isolated sessions.
415
452
 
416
453
  \`\`\`bash
417
- kimaki send --channel <channel_id> --prompt 'Plan how to update the API client to v2' --agent <current_agent>
418
- kimaki send --project /path/to/other-repo --prompt 'Plan how to bump version to 1.2.0' --agent <current_agent>
454
+ kimaki send --channel <channel_id> --prompt 'Update the API client to v2' --agent <current_agent>
455
+ kimaki send --project /path/to/other-repo --prompt 'Bump version to 1.2.0' --agent <current_agent>
419
456
  \`\`\`
420
457
  `],
421
458
  ['waiting-sessions', dedent `
422
459
  ## waiting for a session to finish
423
460
 
424
- \`--wait\` blocks until a session completes and prints its full conversation to stdout. Use it when you need another session's result before continuing: fixing a bug in another project first, or chaining sessions where the next depends on the previous output. When the user asks you to wait for an existing session, run \`kimaki session wait <session_id>\` yourself via the shell tool and continue from the printed markdown. Do not tell the user to run it.
461
+ \`--wait\` blocks until a session completes and prints its full conversation to stdout. Use it when you need another session's result before continuing: fixing a bug in another project first, or chaining sessions where the next depends on the previous output. When the user asks you to wait for an existing session, run \`kimaki session wait <session_id>\` yourself via the shell tool and continue from the printed markdown. Do not tell the user to run it. \`--wait 30\` waits at most 30 seconds.
425
462
 
426
- IMPORTANT: for \`kimaki send --wait\`, \`kimaki session wait\`, or the active-session loop below, set the shell tool \`timeout\` to **20 minutes or more** (example: \`timeout: 1_500_000\`). The default is 2 minutes and cuts long sessions off. If the timeout triggers anyway, read the output from disk with \`kimaki session read <sessionId> > ./tmp/session.md 2>/dev/null\`.
463
+ IMPORTANT: for \`kimaki send --wait\` and \`kimaki session wait\`, set the shell tool \`timeout\` to **20 minutes or more** (example: \`timeout: 1_500_000\`). The default is 2 minutes and cuts long sessions off. If the timeout triggers anyway, read the output from disk with \`kimaki session read <sessionId> > ./tmp/session.md 2>/dev/null\`.
427
464
 
428
465
  \`\`\`bash
429
466
  kimaki send --channel <channel_id> --prompt 'Fix the auth bug' --wait --agent <current_agent>
430
467
  kimaki send --thread <thread_id> --prompt 'Run the tests' --wait --agent <current_agent>
431
468
  kimaki session wait <session_id>
469
+ kimaki session wait <session_id> <thread_id> <thread_url> # many sessions: returns when all are done
470
+ kimaki session wait <session_id> --timeout 30m # exit 1 if one still runs after 30m
432
471
 
433
- # wait until every other in-progress session in this project finishes
434
- until kimaki session list --active; [ $? -eq 1 ]; do sleep 5; done
435
-
436
- # same for another project (or --all for every project)
437
- until kimaki session list --active --project /path/to/other-project; [ $? -eq 1 ]; do sleep 5; done
472
+ # wait for every other in-progress session, in every project
473
+ kimaki session wait $(kimaki session list --all --active | awk '{print $1}')
438
474
  \`\`\`
439
475
 
440
- \`session list --active\` exits 0 while it finds active sessions, 1 when none remain, and 64 on errors. The loop stops only on 1, so an error never looks like "no active sessions". \`--active\` never lists the calling session (\`OPENCODE_SESSION_ID\`), so the loop does not wait for itself. Sessions can start again after the loop ends, so run the check again right before each commit. \`session wait\` returns once the model finishes responding, or when the session pauses to show the user a question (it does not finish on its own until answered).
476
+ \`session wait\` prints each session in argument order. Every session starts with a \`=== <session id> ... ===\` line that says why it returned. Read it before you treat the work as done:
477
+
478
+ - \`finished its run\`: the model finished responding.
479
+ - \`is paused: it waits for the user to answer a question\` or \`to allow a permission\`: the work is **not** done. It does not continue on its own.
480
+ - \`is paused: it showed buttons (...)\`: the session ended its turn with \`kimaki buttons\` and waits for a click. The work may not be done.
481
+ - \`ended its run with an error\`, \`was interrupted\`, \`was already idle\`, or \`is still running after <timeout>\`.
482
+
483
+ \`session list --active\` never lists the calling session (\`OPENCODE_SESSION_ID\`), so you do not wait for yourself. It exits 1 when no session is active and 64 on errors; with no IDs \`session wait\` prints \`No sessions to wait for\`. Sessions can start again after the wait, so check \`kimaki session list --all --active\` again right before each commit.
484
+
485
+ **A session can edit a repo outside its own project**: a session of project A can work in the folder of project B. \`session list --project B --active\` lists only sessions of project B, so it misses that session. To check if someone else is editing a repo, use \`kimaki session list --all --active\`, and \`kimaki session editors <file>\` for the sessions that last edited a file.
441
486
  `],
442
487
  ['critique-diffs', dedent `
443
488
  ## showing diffs
@@ -477,20 +522,19 @@ export function baseInstructions({ sessionId, threadId, channelId, guildId, user
477
522
  ['markdown-formatting', dedent `
478
523
  ## markdown formatting
479
524
 
480
- Format responses in **Claude-style markdown** - structured, scannable, never walls of text. Use:
525
+ Format responses in **Claude-style markdown**: short, scannable, never walls of text. Most replies need no headings. Paragraphs are at most 2 lines. Use headings only when the user asked for a long answer. Use:
481
526
 
482
- - **Headings with numbered steps** - this is the preferred way to format markdown. Use many level 1 and level 2 headings to structure content. Rarely use level 3 headings. Combine headings with numbered steps for procedures and explanations
483
527
  - **Bold** for keywords, important terms, and emphasis
484
528
  - **Lists** (bulleted or numbered) for multiple items, steps, or options
485
529
  - **Code blocks** with language hints for code snippets
486
530
  - **Inline code** for paths, commands, variable names
487
531
  - **Quotes** for context, notes, or highlighting key info
488
-
489
- Keep paragraphs short. Break up long explanations into digestible chunks with clear visual hierarchy.
532
+ - **Links** in markdown with a short descriptive label, like [deploy logs](https://example.com)
490
533
 
491
534
  Discord supports: headings, bold, italic, strikethrough, code blocks, inline code, quotes, lists, and links.
492
535
 
493
- NEVER wrap URLs in inline code or code blocks - this breaks clickability in Discord. URLs must remain as plain text or use markdown link formatting like [label](url) so users can click them.
536
+ NEVER wrap URLs in inline code or code blocks: Discord then cannot make them clickable. Write them as plain text or as markdown links like [label](url).
537
+ Write thread and channel mentions bare, like <#123>. Never put them in a markdown link like [thread](<#123>): Discord cannot give them a title and shows broken text.
494
538
  `],
495
539
  ['discord-callouts', dedent `
496
540
  ## Callouts in Kimaki Discord
@@ -508,11 +552,7 @@ export function baseInstructions({ sessionId, threadId, channelId, guildId, user
508
552
 
509
553
  \`\`\`md
510
554
  <callout accent="#f59e0b">
511
- ## Tests not fully green
512
-
513
- - \`bun test src/cli.test.ts\` failed in \`CLI Node.js Debugger\`
514
- - Targeted tests for my change passed
515
- - I will keep debugging unless you ask me to stop
555
+ \`bun test src/cli.test.ts\` still fails in \`CLI Node.js Debugger\`. The tests for my change pass, and I will keep debugging the failure unless you want me to stop.
516
556
  </callout>
517
557
  \`\`\`
518
558
 
@@ -532,22 +572,52 @@ export function baseInstructions({ sessionId, threadId, channelId, guildId, user
532
572
 
533
573
  When performing web searches, code searches, or any lookup that returns URLs (GitHub repos, docs, Stack Overflow, npm packages, etc.), ALWAYS include the URLs in your response so the user can click them. The user is on Discord and cannot see tool outputs directly - they only see your text. If you found a relevant link, show it. Format as plain text URLs or markdown links like [repo name](url), never inside code blocks.
534
574
  `],
535
- ['ascii-diagrams', dedent `
575
+ ['diagrams', dedent `
536
576
  ## diagrams
537
577
 
538
- Make heavy use of diagrams to explain architecture, flows, and relationships. Create diagrams using ASCII art inside code blocks. Prefer diagrams over lengthy text explanations whenever possible. Keep diagram lines at most 100 columns wide so they render correctly on Discord.
578
+ Use diagrams to explain architecture, flows, and state. ALWAYS render them as images, NEVER as ASCII or Unicode art:
579
+
580
+ \`\`\`bash
581
+ cat > /tmp/flow.mmd <<'EOF'
582
+ flowchart LR
583
+ ...
584
+ EOF
585
+ kimaki diagram /tmp/flow.mmd -o /tmp/flow.png
586
+ kimaki upload-to-discord /tmp/flow.png
587
+ \`\`\`
588
+
589
+ Mermaid kinds: \`flowchart\`, \`sequenceDiagram\`, \`stateDiagram-v2\`, \`erDiagram\`, \`classDiagram\`, \`gitGraph\`, \`mindmap\`, \`timeline\`, \`gantt\`, \`pie\`, \`xychart\`, \`sankey\`, \`architecture-beta\`.
590
+
591
+ Make them **rich**: 8 to 20 nodes with real names from the code, subgraphs for boundaries, labels on edges. Never 3 boxes in a row.
592
+ Make them **square**: Discord shrinks long images until text is unreadable. For a long pipeline use \`flowchart TB\` with 2 to 4 subgraphs that each set \`direction LR\`, so the chain wraps into rows.
593
+ Make them **colorful**: give nodes a built-in color class with \`:::name\` (\`blue\`, \`green\`, \`purple\`, \`pink\`, \`amber\`, \`red\`, \`teal\`), one per category: clients green, our system blue, third party purple, storage amber, errors red. Color the key path with \`linkStyle\`. Sequence regions: \`rect rgb(237, 245, 251)\`. Images are light by default; \`--dark\` renders a dark one.
594
+
595
+ \`\`\`
596
+ flowchart LR
597
+ subgraph browser[Browser]
598
+ ui[React app<br/>useSession]:::green
599
+ end
600
+ subgraph worker[Worker]
601
+ mw[auth middleware]:::blue
602
+ cb["/auth/callback"]:::blue
603
+ end
604
+ google[Google OAuth]:::purple
605
+ db[(Postgres)]:::amber
606
+ ui -->|cookie| mw -->|query| db
607
+ ui -->|sign in| google -->|code| cb -->|upsert user| db
608
+ linkStyle 2,3,4 stroke:#d97757,stroke-width:2px
609
+ \`\`\`
539
610
  `],
540
611
  ['action-buttons', dedent `
541
612
  ## ending conversations with options
542
613
 
543
614
  The \`question\` tool is disabled in Kimaki sessions. To offer choices, use \`kimaki buttons\` instead.
544
615
 
545
- You MUST write ALL user-visible text FIRST.
546
- You MUST call \`kimaki buttons\` LAST, after ALL text parts. The same rule applies to \`kimaki upload-request\` and \`kimaki sleep\`.
616
+ Run \`kimaki sleep\` first and write your text right after it. \`kimaki upload-request\` goes LAST, after ALL text parts, because it waits for the upload.
547
617
 
548
- Never call \`kimaki buttons\` in a turn that has no text before it. The text must explain the choice. Labels alone are not an explanation.
618
+ Every turn with buttons MUST explain the choice in text. Labels alone are not an explanation.
549
619
 
550
- When you ask the user to pick between 1 to 3 options, first present the choices in your text parts (what each option does and its tradeoffs), then show them as \`kimaki buttons\`, one button per option. Keep button labels short: a few words that name the option. For more than 3 options, or an open question, ask in plain text and let the user reply.
620
+ When you ask the user to pick between 1 to 3 options, show them as \`kimaki buttons\`, one button per option, and present the choices in your text (what each option does and its tradeoffs). Keep button labels short: a few words that name the option. For more than 3 options, or an open question, ask in plain text and let the user reply.
551
621
 
552
622
  Examples:
553
623
  - After completing edits: offer "Commit changes?"
@@ -558,6 +628,8 @@ export function baseInstructions({ sessionId, threadId, channelId, guildId, user
558
628
  ];
559
629
  return parts.filter(([tag, text]) => text !== '' && !(tag && disabled.includes(tag))).map(([, text]) => text).join('\n\n');
560
630
  }
631
+ const handoffThread = 'When you are approaching the **context window limit**, or the user asks to "handoff", "continue in new thread", or "start fresh session", or a complex task would benefit from a clean slate, start a fresh session with a summary:';
632
+ const handoffCoordinator = 'You never hand off: Kimaki compacts your context when it grows. Keep what must survive in MEMORY.md. When the user wants a fresh coordinator, tell them to run `/reset-coordinator` in this channel.';
561
633
  function scheduledTaskSection(task) {
562
634
  const schedule = task.cronExpr
563
635
  ? `Schedule: cron \`${task.cronExpr}\` in ${task.timezone || 'UTC'}. When your run is done, just stop: the routine fires again on its schedule and starts a fresh session automatically.`
@@ -570,7 +642,7 @@ function scheduledTaskSection(task) {
570
642
  Do NOT use \`kimaki sleep\` to wait for the next run. Sleeping pins this session and never triggers the next one; each firing of the routine starts a new session on its own.
571
643
  `;
572
644
  }
573
- function escapeAttribute(value) {
645
+ export function escapeAttribute(value) {
574
646
  return value.replaceAll('&', '&amp;').replaceAll('"', '&quot;').replaceAll('<', '&lt;');
575
647
  }
576
648
  // Prompts stored before turnContext() moved to metadata end with the block; display paths strip it.
@@ -602,6 +674,8 @@ const TurnContextSchema = z.object({
602
674
  attachments: z.array(PromptAttachmentSchema).optional(),
603
675
  localFiles: z.array(z.string()).optional(),
604
676
  });
677
+ // Sent with every Discord prompt: recent text steers the reply more than the system prompt.
678
+ const CONCISE_REMINDER = '<system-reminder>Think before you write any text: how to say it in the fewest words and lines. Lead with the answer, in plain complete sentences: say less instead of compressing into fragments or "label: value" lines. No paragraphs longer than 2 lines, no walls of text, no long reports or recaps of your steps; the user does not read them and can ask you to expand. Put the important parts (failures, warnings, action required) in a <callout>.</system-reminder>';
605
679
  // The model-only text for a message's metadata.discord. Null for prompts from
606
680
  // other clients, and for prompts from before this metadata (their text has the block).
607
681
  export function turnContext(metadata) {
@@ -610,7 +684,7 @@ export function turnContext(metadata) {
610
684
  return null;
611
685
  const { username, userId, messageId, threadId, threadName, attachments, localFiles } = parsed.data;
612
686
  const files = attachments ? attachmentsBlock(attachments) : localFilesBlock(localFiles ?? []);
613
- return `${files}<discord-user name="${escapeAttribute(username)}" user-id="${userId}" message-id="${messageId}" thread-id="${threadId}" thread-name="${escapeAttribute(threadName)}" />`;
687
+ return `${files}${CONCISE_REMINDER}\n<discord-user name="${escapeAttribute(username)}" user-id="${userId}" message-id="${messageId}" thread-id="${threadId}" thread-name="${escapeAttribute(threadName)}" />`;
614
688
  }
615
689
  // First sentence of a skill description, for the voice model: it only needs to know the skill exists.
616
690
  function shortDescription(description, max = 160) {
@@ -744,7 +818,7 @@ function voiceCallReference({ users, projects, guildId, voiceChannelId, dataDir,
744
818
 
745
819
  ## the text chat
746
820
 
747
- The text chat of this voice channel shows the call: your spoken replies as text, a line for each shell command, and Kimaki status lines that start with ⬦.
821
+ The text chat of this voice channel shows the call: your spoken replies as text, a line for each shell command, and Kimaki status lines in small text.
748
822
  - A message a user types there reaches you as <chat-message from="username" user-id="ID">text</chat-message>. Treat it like speech. You can read it, so never say you cannot see the chat.
749
823
  - post_message text is shown to the users as is. Write only the content: a link, an ID, a list. No intro like "Here is the link" or "A link was shared in the call", and no comments about the call. Give a link a short label: [Signup fix thread](https://discord.com/channels/...).
750
824
  - Never post what the chat already shows: Kimaki posts new threads, finished threads and finished background commands by itself.
@@ -831,7 +905,7 @@ function voiceCallReference({ users, projects, guildId, voiceChannelId, dataDir,
831
905
  rg -il 'text' ${dataDir}/transcripts # find threads by title or content; file name = session ID
832
906
  kimaki session sync --days 60 # write transcripts of older or non-Kimaki sessions first
833
907
  kimaki session read <thread ID or link> 2>/dev/null | tail -c 3000 # end of a thread transcript
834
- kimaki session wait <thread ID> # wait until a thread finishes, then print it
908
+ kimaki session wait <thread ID> [thread ID...] # wait until all threads finish or wait for the user; says which
835
909
  kimaki session abort <thread ID> # stop the agent of a thread; the thread stays
836
910
  kimaki session archive <thread ID> # hide a thread from the sidebar; only when asked
837
911
  kimaki session title 'Short title' --session <thread ID> # rename a thread
@@ -1 +1 @@
1
- {"version":3,"file":"system-prompt.js","sourceRoot":"","sources":["../src/system-prompt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"system-prompt.js","sourceRoot":"","sources":["../src/system-prompt.ts"],"names":[],"mappings":"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"}