openryoko 0.9.4-ryoko.2

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 (514) hide show
  1. package/dist/bin/jimmy.d.ts +3 -0
  2. package/dist/bin/jimmy.d.ts.map +1 -0
  3. package/dist/bin/jimmy.js +149 -0
  4. package/dist/bin/jimmy.js.map +1 -0
  5. package/dist/package.json +54 -0
  6. package/dist/src/cli/__tests__/migrate.test.d.ts +2 -0
  7. package/dist/src/cli/__tests__/migrate.test.d.ts.map +1 -0
  8. package/dist/src/cli/__tests__/migrate.test.js +79 -0
  9. package/dist/src/cli/__tests__/migrate.test.js.map +1 -0
  10. package/dist/src/cli/chrome-allow.d.ts +5 -0
  11. package/dist/src/cli/chrome-allow.d.ts.map +1 -0
  12. package/dist/src/cli/chrome-allow.js +250 -0
  13. package/dist/src/cli/chrome-allow.js.map +1 -0
  14. package/dist/src/cli/create.d.ts +2 -0
  15. package/dist/src/cli/create.d.ts.map +1 -0
  16. package/dist/src/cli/create.js +72 -0
  17. package/dist/src/cli/create.js.map +1 -0
  18. package/dist/src/cli/instances.d.ts +14 -0
  19. package/dist/src/cli/instances.d.ts.map +1 -0
  20. package/dist/src/cli/instances.js +43 -0
  21. package/dist/src/cli/instances.js.map +1 -0
  22. package/dist/src/cli/list.d.ts +2 -0
  23. package/dist/src/cli/list.d.ts.map +1 -0
  24. package/dist/src/cli/list.js +38 -0
  25. package/dist/src/cli/list.js.map +1 -0
  26. package/dist/src/cli/migrate.d.ts +5 -0
  27. package/dist/src/cli/migrate.d.ts.map +1 -0
  28. package/dist/src/cli/migrate.js +222 -0
  29. package/dist/src/cli/migrate.js.map +1 -0
  30. package/dist/src/cli/nuke.d.ts +2 -0
  31. package/dist/src/cli/nuke.d.ts.map +1 -0
  32. package/dist/src/cli/nuke.js +91 -0
  33. package/dist/src/cli/nuke.js.map +1 -0
  34. package/dist/src/cli/remove.d.ts +4 -0
  35. package/dist/src/cli/remove.d.ts.map +1 -0
  36. package/dist/src/cli/remove.js +47 -0
  37. package/dist/src/cli/remove.js.map +1 -0
  38. package/dist/src/cli/setup.d.ts +4 -0
  39. package/dist/src/cli/setup.d.ts.map +1 -0
  40. package/dist/src/cli/setup.js +491 -0
  41. package/dist/src/cli/setup.js.map +1 -0
  42. package/dist/src/cli/skills.d.ts +28 -0
  43. package/dist/src/cli/skills.d.ts.map +1 -0
  44. package/dist/src/cli/skills.js +284 -0
  45. package/dist/src/cli/skills.js.map +1 -0
  46. package/dist/src/cli/start.d.ts +5 -0
  47. package/dist/src/cli/start.d.ts.map +1 -0
  48. package/dist/src/cli/start.js +34 -0
  49. package/dist/src/cli/start.js.map +1 -0
  50. package/dist/src/cli/status.d.ts +2 -0
  51. package/dist/src/cli/status.d.ts.map +1 -0
  52. package/dist/src/cli/status.js +69 -0
  53. package/dist/src/cli/status.js.map +1 -0
  54. package/dist/src/cli/stop.d.ts +2 -0
  55. package/dist/src/cli/stop.d.ts.map +1 -0
  56. package/dist/src/cli/stop.js +11 -0
  57. package/dist/src/cli/stop.js.map +1 -0
  58. package/dist/src/connectors/cron/index.d.ts +21 -0
  59. package/dist/src/connectors/cron/index.d.ts.map +1 -0
  60. package/dist/src/connectors/cron/index.js +75 -0
  61. package/dist/src/connectors/cron/index.js.map +1 -0
  62. package/dist/src/connectors/discord/format.d.ts +3 -0
  63. package/dist/src/connectors/discord/format.d.ts.map +1 -0
  64. package/dist/src/connectors/discord/format.js +33 -0
  65. package/dist/src/connectors/discord/format.js.map +1 -0
  66. package/dist/src/connectors/discord/index.d.ts +47 -0
  67. package/dist/src/connectors/discord/index.d.ts.map +1 -0
  68. package/dist/src/connectors/discord/index.js +308 -0
  69. package/dist/src/connectors/discord/index.js.map +1 -0
  70. package/dist/src/connectors/discord/remote.d.ts +33 -0
  71. package/dist/src/connectors/discord/remote.d.ts.map +1 -0
  72. package/dist/src/connectors/discord/remote.js +89 -0
  73. package/dist/src/connectors/discord/remote.js.map +1 -0
  74. package/dist/src/connectors/discord/threads.d.ts +5 -0
  75. package/dist/src/connectors/discord/threads.d.ts.map +1 -0
  76. package/dist/src/connectors/discord/threads.js +22 -0
  77. package/dist/src/connectors/discord/threads.js.map +1 -0
  78. package/dist/src/connectors/slack/__tests__/active-threads.test.d.ts +2 -0
  79. package/dist/src/connectors/slack/__tests__/active-threads.test.d.ts.map +1 -0
  80. package/dist/src/connectors/slack/__tests__/active-threads.test.js +57 -0
  81. package/dist/src/connectors/slack/__tests__/active-threads.test.js.map +1 -0
  82. package/dist/src/connectors/slack/__tests__/format.test.d.ts +2 -0
  83. package/dist/src/connectors/slack/__tests__/format.test.d.ts.map +1 -0
  84. package/dist/src/connectors/slack/__tests__/format.test.js +115 -0
  85. package/dist/src/connectors/slack/__tests__/format.test.js.map +1 -0
  86. package/dist/src/connectors/slack/__tests__/speaker.test.d.ts +2 -0
  87. package/dist/src/connectors/slack/__tests__/speaker.test.d.ts.map +1 -0
  88. package/dist/src/connectors/slack/__tests__/speaker.test.js +59 -0
  89. package/dist/src/connectors/slack/__tests__/speaker.test.js.map +1 -0
  90. package/dist/src/connectors/slack/__tests__/triage-prompt.test.d.ts +2 -0
  91. package/dist/src/connectors/slack/__tests__/triage-prompt.test.d.ts.map +1 -0
  92. package/dist/src/connectors/slack/__tests__/triage-prompt.test.js +102 -0
  93. package/dist/src/connectors/slack/__tests__/triage-prompt.test.js.map +1 -0
  94. package/dist/src/connectors/slack/__tests__/triage.test.d.ts +2 -0
  95. package/dist/src/connectors/slack/__tests__/triage.test.d.ts.map +1 -0
  96. package/dist/src/connectors/slack/__tests__/triage.test.js +88 -0
  97. package/dist/src/connectors/slack/__tests__/triage.test.js.map +1 -0
  98. package/dist/src/connectors/slack/active-threads.d.ts +39 -0
  99. package/dist/src/connectors/slack/active-threads.d.ts.map +1 -0
  100. package/dist/src/connectors/slack/active-threads.js +71 -0
  101. package/dist/src/connectors/slack/active-threads.js.map +1 -0
  102. package/dist/src/connectors/slack/format.d.ts +17 -0
  103. package/dist/src/connectors/slack/format.d.ts.map +1 -0
  104. package/dist/src/connectors/slack/format.js +85 -0
  105. package/dist/src/connectors/slack/format.js.map +1 -0
  106. package/dist/src/connectors/slack/index.d.ts +51 -0
  107. package/dist/src/connectors/slack/index.d.ts.map +1 -0
  108. package/dist/src/connectors/slack/index.js +562 -0
  109. package/dist/src/connectors/slack/index.js.map +1 -0
  110. package/dist/src/connectors/slack/speaker.d.ts +39 -0
  111. package/dist/src/connectors/slack/speaker.d.ts.map +1 -0
  112. package/dist/src/connectors/slack/speaker.js +30 -0
  113. package/dist/src/connectors/slack/speaker.js.map +1 -0
  114. package/dist/src/connectors/slack/threads.d.ts +12 -0
  115. package/dist/src/connectors/slack/threads.d.ts.map +1 -0
  116. package/dist/src/connectors/slack/threads.js +41 -0
  117. package/dist/src/connectors/slack/threads.js.map +1 -0
  118. package/dist/src/connectors/slack/threads.test.d.ts +2 -0
  119. package/dist/src/connectors/slack/threads.test.d.ts.map +1 -0
  120. package/dist/src/connectors/slack/threads.test.js +79 -0
  121. package/dist/src/connectors/slack/threads.test.js.map +1 -0
  122. package/dist/src/connectors/slack/triage-prompt.d.ts +50 -0
  123. package/dist/src/connectors/slack/triage-prompt.d.ts.map +1 -0
  124. package/dist/src/connectors/slack/triage-prompt.js +127 -0
  125. package/dist/src/connectors/slack/triage-prompt.js.map +1 -0
  126. package/dist/src/connectors/slack/triage.d.ts +41 -0
  127. package/dist/src/connectors/slack/triage.d.ts.map +1 -0
  128. package/dist/src/connectors/slack/triage.js +120 -0
  129. package/dist/src/connectors/slack/triage.js.map +1 -0
  130. package/dist/src/connectors/telegram/__tests__/connector.test.d.ts +2 -0
  131. package/dist/src/connectors/telegram/__tests__/connector.test.d.ts.map +1 -0
  132. package/dist/src/connectors/telegram/__tests__/connector.test.js +257 -0
  133. package/dist/src/connectors/telegram/__tests__/connector.test.js.map +1 -0
  134. package/dist/src/connectors/telegram/__tests__/format.test.d.ts +2 -0
  135. package/dist/src/connectors/telegram/__tests__/format.test.d.ts.map +1 -0
  136. package/dist/src/connectors/telegram/__tests__/format.test.js +79 -0
  137. package/dist/src/connectors/telegram/__tests__/format.test.js.map +1 -0
  138. package/dist/src/connectors/telegram/__tests__/threads.test.d.ts +2 -0
  139. package/dist/src/connectors/telegram/__tests__/threads.test.d.ts.map +1 -0
  140. package/dist/src/connectors/telegram/__tests__/threads.test.js +51 -0
  141. package/dist/src/connectors/telegram/__tests__/threads.test.js.map +1 -0
  142. package/dist/src/connectors/telegram/format.d.ts +12 -0
  143. package/dist/src/connectors/telegram/format.d.ts.map +1 -0
  144. package/dist/src/connectors/telegram/format.js +61 -0
  145. package/dist/src/connectors/telegram/format.js.map +1 -0
  146. package/dist/src/connectors/telegram/index.d.ts +28 -0
  147. package/dist/src/connectors/telegram/index.d.ts.map +1 -0
  148. package/dist/src/connectors/telegram/index.js +213 -0
  149. package/dist/src/connectors/telegram/index.js.map +1 -0
  150. package/dist/src/connectors/telegram/threads.d.ts +29 -0
  151. package/dist/src/connectors/telegram/threads.d.ts.map +1 -0
  152. package/dist/src/connectors/telegram/threads.js +26 -0
  153. package/dist/src/connectors/telegram/threads.js.map +1 -0
  154. package/dist/src/connectors/whatsapp/__tests__/format.test.d.ts +2 -0
  155. package/dist/src/connectors/whatsapp/__tests__/format.test.d.ts.map +1 -0
  156. package/dist/src/connectors/whatsapp/__tests__/format.test.js +70 -0
  157. package/dist/src/connectors/whatsapp/__tests__/format.test.js.map +1 -0
  158. package/dist/src/connectors/whatsapp/format.d.ts +12 -0
  159. package/dist/src/connectors/whatsapp/format.d.ts.map +1 -0
  160. package/dist/src/connectors/whatsapp/format.js +53 -0
  161. package/dist/src/connectors/whatsapp/format.js.map +1 -0
  162. package/dist/src/connectors/whatsapp/index.d.ts +42 -0
  163. package/dist/src/connectors/whatsapp/index.d.ts.map +1 -0
  164. package/dist/src/connectors/whatsapp/index.js +279 -0
  165. package/dist/src/connectors/whatsapp/index.js.map +1 -0
  166. package/dist/src/cron/jobs.d.ts +5 -0
  167. package/dist/src/cron/jobs.d.ts.map +1 -0
  168. package/dist/src/cron/jobs.js +23 -0
  169. package/dist/src/cron/jobs.js.map +1 -0
  170. package/dist/src/cron/runner.d.ts +4 -0
  171. package/dist/src/cron/runner.d.ts.map +1 -0
  172. package/dist/src/cron/runner.js +88 -0
  173. package/dist/src/cron/runner.js.map +1 -0
  174. package/dist/src/cron/scheduler.d.ts +8 -0
  175. package/dist/src/cron/scheduler.d.ts.map +1 -0
  176. package/dist/src/cron/scheduler.js +64 -0
  177. package/dist/src/cron/scheduler.js.map +1 -0
  178. package/dist/src/engines/__tests__/gemini.test.d.ts +2 -0
  179. package/dist/src/engines/__tests__/gemini.test.d.ts.map +1 -0
  180. package/dist/src/engines/__tests__/gemini.test.js +404 -0
  181. package/dist/src/engines/__tests__/gemini.test.js.map +1 -0
  182. package/dist/src/engines/claude.d.ts +20 -0
  183. package/dist/src/engines/claude.d.ts.map +1 -0
  184. package/dist/src/engines/claude.js +520 -0
  185. package/dist/src/engines/claude.js.map +1 -0
  186. package/dist/src/engines/codex.d.ts +15 -0
  187. package/dist/src/engines/codex.d.ts.map +1 -0
  188. package/dist/src/engines/codex.js +351 -0
  189. package/dist/src/engines/codex.js.map +1 -0
  190. package/dist/src/engines/gemini.d.ts +32 -0
  191. package/dist/src/engines/gemini.d.ts.map +1 -0
  192. package/dist/src/engines/gemini.js +328 -0
  193. package/dist/src/engines/gemini.js.map +1 -0
  194. package/dist/src/engines/mock.d.ts +16 -0
  195. package/dist/src/engines/mock.d.ts.map +1 -0
  196. package/dist/src/engines/mock.js +47 -0
  197. package/dist/src/engines/mock.js.map +1 -0
  198. package/dist/src/gateway/__tests__/api-last-n.test.d.ts +2 -0
  199. package/dist/src/gateway/__tests__/api-last-n.test.d.ts.map +1 -0
  200. package/dist/src/gateway/__tests__/api-last-n.test.js +32 -0
  201. package/dist/src/gateway/__tests__/api-last-n.test.js.map +1 -0
  202. package/dist/src/gateway/__tests__/costs.test.d.ts +2 -0
  203. package/dist/src/gateway/__tests__/costs.test.d.ts.map +1 -0
  204. package/dist/src/gateway/__tests__/costs.test.js +32 -0
  205. package/dist/src/gateway/__tests__/costs.test.js.map +1 -0
  206. package/dist/src/gateway/__tests__/org-hierarchy.test.d.ts +2 -0
  207. package/dist/src/gateway/__tests__/org-hierarchy.test.d.ts.map +1 -0
  208. package/dist/src/gateway/__tests__/org-hierarchy.test.js +161 -0
  209. package/dist/src/gateway/__tests__/org-hierarchy.test.js.map +1 -0
  210. package/dist/src/gateway/__tests__/org-update.test.d.ts +2 -0
  211. package/dist/src/gateway/__tests__/org-update.test.d.ts.map +1 -0
  212. package/dist/src/gateway/__tests__/org-update.test.js +99 -0
  213. package/dist/src/gateway/__tests__/org-update.test.js.map +1 -0
  214. package/dist/src/gateway/__tests__/org.test.d.ts +2 -0
  215. package/dist/src/gateway/__tests__/org.test.d.ts.map +1 -0
  216. package/dist/src/gateway/__tests__/org.test.js +77 -0
  217. package/dist/src/gateway/__tests__/org.test.js.map +1 -0
  218. package/dist/src/gateway/__tests__/services.test.d.ts +2 -0
  219. package/dist/src/gateway/__tests__/services.test.d.ts.map +1 -0
  220. package/dist/src/gateway/__tests__/services.test.js +153 -0
  221. package/dist/src/gateway/__tests__/services.test.js.map +1 -0
  222. package/dist/src/gateway/api.d.ts +19 -0
  223. package/dist/src/gateway/api.d.ts.map +1 -0
  224. package/dist/src/gateway/api.js +2261 -0
  225. package/dist/src/gateway/api.js.map +1 -0
  226. package/dist/src/gateway/budgets.d.ts +16 -0
  227. package/dist/src/gateway/budgets.d.ts.map +1 -0
  228. package/dist/src/gateway/budgets.js +39 -0
  229. package/dist/src/gateway/budgets.js.map +1 -0
  230. package/dist/src/gateway/costs.d.ts +19 -0
  231. package/dist/src/gateway/costs.d.ts.map +1 -0
  232. package/dist/src/gateway/costs.js +39 -0
  233. package/dist/src/gateway/costs.js.map +1 -0
  234. package/dist/src/gateway/daemon-entry.d.ts +2 -0
  235. package/dist/src/gateway/daemon-entry.d.ts.map +1 -0
  236. package/dist/src/gateway/daemon-entry.js +12 -0
  237. package/dist/src/gateway/daemon-entry.js.map +1 -0
  238. package/dist/src/gateway/files.d.ts +6 -0
  239. package/dist/src/gateway/files.d.ts.map +1 -0
  240. package/dist/src/gateway/files.js +442 -0
  241. package/dist/src/gateway/files.js.map +1 -0
  242. package/dist/src/gateway/goals.d.ts +11 -0
  243. package/dist/src/gateway/goals.d.ts.map +1 -0
  244. package/dist/src/gateway/goals.js +72 -0
  245. package/dist/src/gateway/goals.js.map +1 -0
  246. package/dist/src/gateway/lifecycle.d.ts +10 -0
  247. package/dist/src/gateway/lifecycle.d.ts.map +1 -0
  248. package/dist/src/gateway/lifecycle.js +152 -0
  249. package/dist/src/gateway/lifecycle.js.map +1 -0
  250. package/dist/src/gateway/org-hierarchy.d.ts +5 -0
  251. package/dist/src/gateway/org-hierarchy.d.ts.map +1 -0
  252. package/dist/src/gateway/org-hierarchy.js +174 -0
  253. package/dist/src/gateway/org-hierarchy.js.map +1 -0
  254. package/dist/src/gateway/org.d.ts +17 -0
  255. package/dist/src/gateway/org.d.ts.map +1 -0
  256. package/dist/src/gateway/org.js +136 -0
  257. package/dist/src/gateway/org.js.map +1 -0
  258. package/dist/src/gateway/server.d.ts +4 -0
  259. package/dist/src/gateway/server.d.ts.map +1 -0
  260. package/dist/src/gateway/server.js +764 -0
  261. package/dist/src/gateway/server.js.map +1 -0
  262. package/dist/src/gateway/services.d.ts +28 -0
  263. package/dist/src/gateway/services.d.ts.map +1 -0
  264. package/dist/src/gateway/services.js +112 -0
  265. package/dist/src/gateway/services.js.map +1 -0
  266. package/dist/src/gateway/watcher.d.ts +14 -0
  267. package/dist/src/gateway/watcher.d.ts.map +1 -0
  268. package/dist/src/gateway/watcher.js +111 -0
  269. package/dist/src/gateway/watcher.js.map +1 -0
  270. package/dist/src/index.d.ts +5 -0
  271. package/dist/src/index.d.ts.map +1 -0
  272. package/dist/src/index.js +4 -0
  273. package/dist/src/index.js.map +1 -0
  274. package/dist/src/mcp/gateway-server.d.ts +13 -0
  275. package/dist/src/mcp/gateway-server.d.ts.map +1 -0
  276. package/dist/src/mcp/gateway-server.js +376 -0
  277. package/dist/src/mcp/gateway-server.js.map +1 -0
  278. package/dist/src/mcp/resolver.d.ts +19 -0
  279. package/dist/src/mcp/resolver.d.ts.map +1 -0
  280. package/dist/src/mcp/resolver.js +159 -0
  281. package/dist/src/mcp/resolver.js.map +1 -0
  282. package/dist/src/sessions/__tests__/callbacks.test.d.ts +2 -0
  283. package/dist/src/sessions/__tests__/callbacks.test.d.ts.map +1 -0
  284. package/dist/src/sessions/__tests__/callbacks.test.js +154 -0
  285. package/dist/src/sessions/__tests__/callbacks.test.js.map +1 -0
  286. package/dist/src/sessions/callbacks.d.ts +31 -0
  287. package/dist/src/sessions/callbacks.d.ts.map +1 -0
  288. package/dist/src/sessions/callbacks.js +112 -0
  289. package/dist/src/sessions/callbacks.js.map +1 -0
  290. package/dist/src/sessions/context.d.ts +36 -0
  291. package/dist/src/sessions/context.d.ts.map +1 -0
  292. package/dist/src/sessions/context.js +741 -0
  293. package/dist/src/sessions/context.js.map +1 -0
  294. package/dist/src/sessions/fork.d.ts +30 -0
  295. package/dist/src/sessions/fork.d.ts.map +1 -0
  296. package/dist/src/sessions/fork.js +178 -0
  297. package/dist/src/sessions/fork.js.map +1 -0
  298. package/dist/src/sessions/manager.d.ts +27 -0
  299. package/dist/src/sessions/manager.d.ts.map +1 -0
  300. package/dist/src/sessions/manager.js +751 -0
  301. package/dist/src/sessions/manager.js.map +1 -0
  302. package/dist/src/sessions/queue.d.ts +36 -0
  303. package/dist/src/sessions/queue.d.ts.map +1 -0
  304. package/dist/src/sessions/queue.js +101 -0
  305. package/dist/src/sessions/queue.js.map +1 -0
  306. package/dist/src/sessions/queue.test.d.ts +2 -0
  307. package/dist/src/sessions/queue.test.d.ts.map +1 -0
  308. package/dist/src/sessions/queue.test.js +28 -0
  309. package/dist/src/sessions/queue.test.js.map +1 -0
  310. package/dist/src/sessions/registry.d.ts +116 -0
  311. package/dist/src/sessions/registry.d.ts.map +1 -0
  312. package/dist/src/sessions/registry.js +480 -0
  313. package/dist/src/sessions/registry.js.map +1 -0
  314. package/dist/src/sessions/registry.test.d.ts +2 -0
  315. package/dist/src/sessions/registry.test.d.ts.map +1 -0
  316. package/dist/src/sessions/registry.test.js +41 -0
  317. package/dist/src/sessions/registry.test.js.map +1 -0
  318. package/dist/src/shared/__tests__/rateLimit.test.d.ts +2 -0
  319. package/dist/src/shared/__tests__/rateLimit.test.d.ts.map +1 -0
  320. package/dist/src/shared/__tests__/rateLimit.test.js +108 -0
  321. package/dist/src/shared/__tests__/rateLimit.test.js.map +1 -0
  322. package/dist/src/shared/__tests__/usageAwareness.test.d.ts +2 -0
  323. package/dist/src/shared/__tests__/usageAwareness.test.d.ts.map +1 -0
  324. package/dist/src/shared/__tests__/usageAwareness.test.js +58 -0
  325. package/dist/src/shared/__tests__/usageAwareness.test.js.map +1 -0
  326. package/dist/src/shared/config.d.ts +3 -0
  327. package/dist/src/shared/config.d.ts.map +1 -0
  328. package/dist/src/shared/config.js +11 -0
  329. package/dist/src/shared/config.js.map +1 -0
  330. package/dist/src/shared/effort.d.ts +17 -0
  331. package/dist/src/shared/effort.d.ts.map +1 -0
  332. package/dist/src/shared/effort.js +44 -0
  333. package/dist/src/shared/effort.js.map +1 -0
  334. package/dist/src/shared/logger.d.ts +12 -0
  335. package/dist/src/shared/logger.d.ts.map +1 -0
  336. package/dist/src/shared/logger.js +35 -0
  337. package/dist/src/shared/logger.js.map +1 -0
  338. package/dist/src/shared/paths.d.ts +31 -0
  339. package/dist/src/shared/paths.d.ts.map +1 -0
  340. package/dist/src/shared/paths.js +92 -0
  341. package/dist/src/shared/paths.js.map +1 -0
  342. package/dist/src/shared/rateLimit.d.ts +20 -0
  343. package/dist/src/shared/rateLimit.d.ts.map +1 -0
  344. package/dist/src/shared/rateLimit.js +61 -0
  345. package/dist/src/shared/rateLimit.js.map +1 -0
  346. package/dist/src/shared/types.d.ts +448 -0
  347. package/dist/src/shared/types.d.ts.map +1 -0
  348. package/dist/src/shared/types.js +4 -0
  349. package/dist/src/shared/types.js.map +1 -0
  350. package/dist/src/shared/usageAwareness.d.ts +10 -0
  351. package/dist/src/shared/usageAwareness.d.ts.map +1 -0
  352. package/dist/src/shared/usageAwareness.js +69 -0
  353. package/dist/src/shared/usageAwareness.js.map +1 -0
  354. package/dist/src/shared/version.d.ts +15 -0
  355. package/dist/src/shared/version.d.ts.map +1 -0
  356. package/dist/src/shared/version.js +56 -0
  357. package/dist/src/shared/version.js.map +1 -0
  358. package/dist/src/stt/stt.d.ts +24 -0
  359. package/dist/src/stt/stt.d.ts.map +1 -0
  360. package/dist/src/stt/stt.js +203 -0
  361. package/dist/src/stt/stt.js.map +1 -0
  362. package/dist/web/404.html +1 -0
  363. package/dist/web/__next.__PAGE__.txt +9 -0
  364. package/dist/web/__next._full.txt +19 -0
  365. package/dist/web/__next._head.txt +6 -0
  366. package/dist/web/__next._index.txt +6 -0
  367. package/dist/web/__next._tree.txt +2 -0
  368. package/dist/web/_next/static/chunks/00yn.jp4tr9l6.js +62 -0
  369. package/dist/web/_next/static/chunks/0398g9fy2i2l..js +5 -0
  370. package/dist/web/_next/static/chunks/03~yq9q893hmn.js +1 -0
  371. package/dist/web/_next/static/chunks/07t-qdutaizlf.js +5 -0
  372. package/dist/web/_next/static/chunks/0_pxvi.u4tzw1.js +5 -0
  373. package/dist/web/_next/static/chunks/0dtbl8648b3u9.js +7 -0
  374. package/dist/web/_next/static/chunks/0e3pdjkorr5zl.js +2 -0
  375. package/dist/web/_next/static/chunks/0ewpxy-mzj3j3.js +1 -0
  376. package/dist/web/_next/static/chunks/0ihbb7~gq42g~.js +5 -0
  377. package/dist/web/_next/static/chunks/0j4uz-g9x1_~s.js +1 -0
  378. package/dist/web/_next/static/chunks/0mlo32yrc7ziu.css +1 -0
  379. package/dist/web/_next/static/chunks/0ru56x83x4rkk.js +1 -0
  380. package/dist/web/_next/static/chunks/0svvev77pb2gu.js +1 -0
  381. package/dist/web/_next/static/chunks/0tf9kpygstdls.js +1 -0
  382. package/dist/web/_next/static/chunks/0wzpea61sn2-k.js +5 -0
  383. package/dist/web/_next/static/chunks/0y3dnnq~kxyz_.js +1 -0
  384. package/dist/web/_next/static/chunks/0y~qqhmf2o7pt.js +1 -0
  385. package/dist/web/_next/static/chunks/0~6m1p5hnsx2f.js +1 -0
  386. package/dist/web/_next/static/chunks/10-liamt-ipcu.js +1 -0
  387. package/dist/web/_next/static/chunks/10l08hq.acixl.js +5 -0
  388. package/dist/web/_next/static/chunks/11rbefjn.e-3-.js +1 -0
  389. package/dist/web/_next/static/chunks/11rodb4s1x4of.js +1 -0
  390. package/dist/web/_next/static/chunks/12_uxtnrqhoo1.js +1 -0
  391. package/dist/web/_next/static/chunks/12h4dws.tz7yb.js +5 -0
  392. package/dist/web/_next/static/chunks/13juizw904g.e.js +1 -0
  393. package/dist/web/_next/static/chunks/14ge_q22f0n.f.js +1 -0
  394. package/dist/web/_next/static/chunks/16b0jvgccyt2i.js +5 -0
  395. package/dist/web/_next/static/chunks/17-u9c_weg12-.js +31 -0
  396. package/dist/web/_next/static/chunks/turbopack-0dt987bw_1nyf.js +1 -0
  397. package/dist/web/_next/static/media/apple-icon.0.wpl4.d-5bkf.jpg +0 -0
  398. package/dist/web/_next/static/media/icon.0.wpl4.d-5bkf.jpg +0 -0
  399. package/dist/web/_next/static/uwjABwQIFELOHhVlstvOe/_buildManifest.js +11 -0
  400. package/dist/web/_next/static/uwjABwQIFELOHhVlstvOe/_clientMiddlewareManifest.js +1 -0
  401. package/dist/web/_next/static/uwjABwQIFELOHhVlstvOe/_ssgManifest.js +1 -0
  402. package/dist/web/_not-found/__next._full.txt +17 -0
  403. package/dist/web/_not-found/__next._head.txt +6 -0
  404. package/dist/web/_not-found/__next._index.txt +6 -0
  405. package/dist/web/_not-found/__next._not-found.__PAGE__.txt +5 -0
  406. package/dist/web/_not-found/__next._not-found.txt +5 -0
  407. package/dist/web/_not-found/__next._tree.txt +2 -0
  408. package/dist/web/_not-found.html +1 -0
  409. package/dist/web/_not-found.txt +17 -0
  410. package/dist/web/apple-icon.jpg +0 -0
  411. package/dist/web/chat/__next._full.txt +21 -0
  412. package/dist/web/chat/__next._head.txt +6 -0
  413. package/dist/web/chat/__next._index.txt +6 -0
  414. package/dist/web/chat/__next._tree.txt +2 -0
  415. package/dist/web/chat/__next.chat.__PAGE__.txt +9 -0
  416. package/dist/web/chat/__next.chat.txt +5 -0
  417. package/dist/web/chat.html +1 -0
  418. package/dist/web/chat.txt +21 -0
  419. package/dist/web/cron/__next._full.txt +21 -0
  420. package/dist/web/cron/__next._head.txt +6 -0
  421. package/dist/web/cron/__next._index.txt +6 -0
  422. package/dist/web/cron/__next._tree.txt +2 -0
  423. package/dist/web/cron/__next.cron.__PAGE__.txt +9 -0
  424. package/dist/web/cron/__next.cron.txt +5 -0
  425. package/dist/web/cron.html +1 -0
  426. package/dist/web/cron.txt +21 -0
  427. package/dist/web/icon.jpg +0 -0
  428. package/dist/web/index.html +1 -0
  429. package/dist/web/index.txt +19 -0
  430. package/dist/web/kanban/__next._full.txt +21 -0
  431. package/dist/web/kanban/__next._head.txt +6 -0
  432. package/dist/web/kanban/__next._index.txt +6 -0
  433. package/dist/web/kanban/__next._tree.txt +2 -0
  434. package/dist/web/kanban/__next.kanban.__PAGE__.txt +9 -0
  435. package/dist/web/kanban/__next.kanban.txt +5 -0
  436. package/dist/web/kanban.html +1 -0
  437. package/dist/web/kanban.txt +21 -0
  438. package/dist/web/logs/__next._full.txt +21 -0
  439. package/dist/web/logs/__next._head.txt +6 -0
  440. package/dist/web/logs/__next._index.txt +6 -0
  441. package/dist/web/logs/__next._tree.txt +2 -0
  442. package/dist/web/logs/__next.logs.__PAGE__.txt +9 -0
  443. package/dist/web/logs/__next.logs.txt +5 -0
  444. package/dist/web/logs.html +7 -0
  445. package/dist/web/logs.txt +21 -0
  446. package/dist/web/org/__next._full.txt +21 -0
  447. package/dist/web/org/__next._head.txt +6 -0
  448. package/dist/web/org/__next._index.txt +6 -0
  449. package/dist/web/org/__next._tree.txt +2 -0
  450. package/dist/web/org/__next.org.__PAGE__.txt +9 -0
  451. package/dist/web/org/__next.org.txt +5 -0
  452. package/dist/web/org.html +1 -0
  453. package/dist/web/org.txt +21 -0
  454. package/dist/web/sessions/__next._full.txt +18 -0
  455. package/dist/web/sessions/__next._head.txt +6 -0
  456. package/dist/web/sessions/__next._index.txt +6 -0
  457. package/dist/web/sessions/__next._tree.txt +2 -0
  458. package/dist/web/sessions/__next.sessions.__PAGE__.txt +6 -0
  459. package/dist/web/sessions/__next.sessions.txt +5 -0
  460. package/dist/web/sessions.html +1 -0
  461. package/dist/web/sessions.txt +18 -0
  462. package/dist/web/settings/__next._full.txt +21 -0
  463. package/dist/web/settings/__next._head.txt +6 -0
  464. package/dist/web/settings/__next._index.txt +6 -0
  465. package/dist/web/settings/__next._tree.txt +2 -0
  466. package/dist/web/settings/__next.settings.__PAGE__.txt +9 -0
  467. package/dist/web/settings/__next.settings.txt +5 -0
  468. package/dist/web/settings.html +1 -0
  469. package/dist/web/settings.txt +21 -0
  470. package/dist/web/skills/__next._full.txt +21 -0
  471. package/dist/web/skills/__next._head.txt +6 -0
  472. package/dist/web/skills/__next._index.txt +6 -0
  473. package/dist/web/skills/__next._tree.txt +2 -0
  474. package/dist/web/skills/__next.skills.__PAGE__.txt +9 -0
  475. package/dist/web/skills/__next.skills.txt +5 -0
  476. package/dist/web/skills.html +1 -0
  477. package/dist/web/skills.txt +21 -0
  478. package/package.json +54 -0
  479. package/template/AGENTS.md +285 -0
  480. package/template/CLAUDE.md +285 -0
  481. package/template/config.default.yaml +71 -0
  482. package/template/docs/architecture.md +74 -0
  483. package/template/docs/connectors.md +72 -0
  484. package/template/docs/cron.md +137 -0
  485. package/template/docs/mcp.md +108 -0
  486. package/template/docs/org.md +105 -0
  487. package/template/docs/overview.md +39 -0
  488. package/template/docs/self-modification.md +65 -0
  489. package/template/docs/skills.md +58 -0
  490. package/template/knowledge/.gitkeep +0 -0
  491. package/template/migrations/.gitkeep +0 -0
  492. package/template/migrations/0.1.0/MIGRATION.md +25 -0
  493. package/template/migrations/0.2.0/MIGRATION.md +41 -0
  494. package/template/migrations/0.2.0/files/config.default.yaml +30 -0
  495. package/template/migrations/0.3.0/MIGRATION.md +57 -0
  496. package/template/migrations/0.3.0/files/config.default.yaml +62 -0
  497. package/template/migrations/0.3.0/files/docs/mcp.md +108 -0
  498. package/template/migrations/0.7.3/MIGRATION.md +63 -0
  499. package/template/migrations/0.7.3/files/AGENTS.md +188 -0
  500. package/template/migrations/0.7.3/files/CLAUDE.md +127 -0
  501. package/template/migrations/0.7.5/MIGRATION.md +78 -0
  502. package/template/migrations/0.8.0/MIGRATION.md +73 -0
  503. package/template/migrations/0.9.0/MIGRATION.md +82 -0
  504. package/template/skills/cron-manager/SKILL.md +127 -0
  505. package/template/skills/find-and-install/SKILL.md +92 -0
  506. package/template/skills/management/SKILL.md +226 -0
  507. package/template/skills/migrate/SKILL.md +154 -0
  508. package/template/skills/new/SKILL.md +19 -0
  509. package/template/skills/onboarding/SKILL.md +106 -0
  510. package/template/skills/self-heal/SKILL.md +114 -0
  511. package/template/skills/skill-creator/SKILL.md +112 -0
  512. package/template/skills/status/SKILL.md +19 -0
  513. package/template/skills/sync/SKILL.md +67 -0
  514. package/template/skills.json +3 -0
@@ -0,0 +1,127 @@
1
+ # {{portalName}} — Operating Instructions
2
+
3
+ You are {{portalName}}, the COO of the user's AI organization.
4
+ <!-- NOTE: The COO name above is personalized during onboarding via POST /api/onboarding -->
5
+
6
+ ## Core Principles
7
+ - Be proactive — suggest next steps, flag issues, take initiative
8
+ - Be concise — lead with the answer, not the reasoning
9
+ - Be capable — use the filesystem, run commands, call APIs, manage the system
10
+ - Be honest — say clearly when you don't know something
11
+ - Evolve — learn the user's preferences and update your knowledge files
12
+
13
+ ## Home Directory (~/.jinn/)
14
+ - `config.yaml` — gateway configuration (hot-reloads)
15
+ - `org/` — employee personas (YAML files)
16
+ - `skills/` — reusable skill prompts (subdirectories with SKILL.md)
17
+ - `docs/` — documentation and architecture
18
+ - `knowledge/` — persistent knowledge about the user, their projects, preferences
19
+ - `cron/` — scheduled job definitions
20
+ - `sessions/` — session database
21
+ - `CLAUDE.md` — these instructions (update when the user gives persistent feedback)
22
+
23
+ ## Self-Evolution
24
+ When you learn something new about the user, write it to the appropriate knowledge file:
25
+ - `knowledge/user-profile.md` — who the user is, their business, goals
26
+ - `knowledge/preferences.md` — communication style, emoji usage, verbosity, tech preferences
27
+ - `knowledge/projects.md` — active projects, tech stacks, status
28
+
29
+ When the user corrects you or gives persistent feedback (e.g. "always do X", "never do Y"), update this file.
30
+ You should become more useful with every interaction.
31
+
32
+ ## Skills
33
+ Skills are markdown playbooks in `~/.jinn/skills/<skill-name>/SKILL.md`. Read and follow them step by step.
34
+
35
+ Every SKILL.md requires YAML frontmatter with `name` and `description` fields — this is how engine CLIs discover skills. The gateway auto-syncs symlinks in `.claude/skills/` and `.agents/skills/` so engines find them as project-local skills.
36
+
37
+ ## Proactive Skill Discovery
38
+
39
+ When you encounter a task that requires specialized domain knowledge or tooling you don't currently have:
40
+
41
+ 1. **Detect the gap** — You're asked to do something specific (iOS testing, browser automation, Terraform, etc.) and no installed skill covers it
42
+ 2. **Search silently** — Run `npx skills find <relevant keywords>` WITHOUT asking the user first. This is read-only, zero risk.
43
+ 3. **Evaluate results** — Filter by install count and relevance:
44
+ - 🟢 1000+ installs or known sources (vercel-labs, anthropics, microsoft) → suggest confidently
45
+ - 🟡 50-999 installs → suggest with install count context
46
+ - 🔴 <50 installs → mention but note low adoption
47
+ 4. **Suggest concisely** — Present top 1-3 results:
48
+ "🔍 Found a skill that could help: **skill-name** (N installs) — description. Install it?"
49
+ 5. **Install on approval** — Follow the find-and-install skill's instructions
50
+ 6. **Apply immediately** — Read the new SKILL.md and use it for the current task
51
+
52
+ Do NOT ask permission to search. Searching is free and silent. Only ask before installing.
53
+
54
+ ## The Org System
55
+ You manage AI employees defined in `~/.jinn/org/`. Each has a persona, rank, department, and engine.
56
+ - Delegate tasks that fit an employee's role
57
+ - Use boards (`board.json`) to track work: `todo` → `in_progress` → `done`
58
+ - As executive, you have full visibility over all boards
59
+ - Apply oversight levels when reviewing employee work: TRUST (relay directly), VERIFY (spot-check), THOROUGH (full review + multi-turn follow-ups)
60
+ - When a department grows (3+ employees), promote a reliable senior to manager — managers handle their own delegation
61
+
62
+ ### Automatic employee coordination
63
+ When you receive a task, **always assess whether it requires multiple employees** before starting. Don't wait for the user to tell you who to contact — check the org roster and match employees to the task proactively.
64
+
65
+ - **Analyze first**: Break the task into sub-tasks and identify which employee(s) are needed
66
+ - **Parallel when independent**: Spawn multiple child sessions simultaneously when sub-tasks don't depend on each other
67
+ - **Serialize when dependent**: If employee A's output feeds into employee B's task, wait for A before spawning B
68
+ - **Cross-reference**: Compare results from multiple employees before responding — look for contradictions, gaps, and insights that connect
69
+ - **Follow up**: If results are incomplete or need revision, send corrections to the same child session
70
+ - **Synthesize**: Give the user a unified answer, not a dump of each employee's raw output
71
+
72
+ ### Agent teams for multi-phase tasks
73
+ When delegating a task with multiple independent phases or sub-tasks to an employee, instruct them in the prompt to use **agent teams** — parallel sub-agents that handle different parts of the work concurrently. Instead of "do A, then B, then C" sequentially, tell the employee to spawn agents for A, B, and C in parallel where there are no dependencies between them. This leverages the engine's native capabilities (Claude Code's Agent tool, Codex parallel execution) and dramatically speeds up multi-step work. Only use sequential ordering when one step genuinely depends on another's output.
74
+
75
+ ### Child Session Protocol (Async Notifications)
76
+
77
+ When you delegate to an employee via a child session:
78
+
79
+ 1. **Spawn** the child session (`POST /api/sessions` with `parentSessionId`)
80
+ 2. **Tell the user** what you delegated and to whom
81
+ 3. **End your turn.** Do NOT poll, wait, sleep, or block.
82
+ 4. The gateway automatically notifies you when the employee replies.
83
+ You will receive a notification message like:
84
+ > 📩 Employee "name" replied in session {id}.
85
+ > Read the latest messages: GET /api/sessions/{id}?last=N
86
+ 5. When notified, **read only the latest messages** via the API (use `?last=N`
87
+ to avoid context pollution). Then decide:
88
+ - Send a follow-up (`POST /api/sessions/{id}/message`) → go to step 3
89
+ - Or do nothing — the conversation is complete
90
+ 6. **Never read the full conversation history** on every notification. Only read
91
+ the latest messages relevant to the current round.
92
+
93
+ This protocol applies to ALL employee child sessions, not just specific ones.
94
+ The gateway handles the notification plumbing — you just reply and stop.
95
+
96
+ ## Cron Jobs
97
+ Defined in `~/.jinn/cron/jobs.json`. The gateway watches and auto-reloads on changes.
98
+
99
+ ### Delegation rule for cron jobs
100
+ **NEVER** set an employee directly as the cron job target when the output needs COO review/filtering before reaching the user. The correct pattern:
101
+ - Cron triggers **{{portalSlug}}** (COO)
102
+ - {{portalName}} spawns a child session with the employee
103
+ - {{portalName}} reviews the output, filters noise, and produces the final deliverable
104
+ - Only the filtered result reaches the user
105
+
106
+ Direct employee → user delivery is only acceptable for simple, no-review-needed tasks (e.g. a health check ping). Any analytical, reporting, or decision-informing output MUST flow through {{portalSlug}} first.
107
+
108
+ ## Self-Modification
109
+ You can edit any file in `~/.jinn/`. The gateway watches for changes:
110
+ - `config.yaml` changes → gateway reloads
111
+ - `cron/jobs.json` changes → scheduler reloads
112
+ - `org/` changes → employee registry rebuilds
113
+ - `skills/` changes → symlinks in `.claude/skills/` and `.agents/skills/` re-synced
114
+
115
+ ## Slash Commands
116
+
117
+ Users can type slash commands in chat. Each command has a skill playbook in `~/.jinn/skills/<command>/SKILL.md` that teaches you how to handle it.
118
+
119
+ | Command | Usage | What happens |
120
+ |---------|-------|-------------|
121
+ | `/sync` | `/sync @employee-name` | You fetch the employee's recent conversation via the gateway API (`GET /api/sessions`), read through it, and respond with full awareness. See the sync skill for details. |
122
+ | `/new` | `/new` | Starts a fresh chat session. |
123
+ | `/status` | `/status` | Shows current session info. |
124
+
125
+ ## Conventions
126
+ - YAML for personas/config, JSON for boards/cron, Markdown for skills/docs
127
+ - kebab-case for all file and directory names
@@ -0,0 +1,78 @@
1
+ # Migration: 0.7.5 (File Attachments, Mobile Sidebar, Connector Improvements)
2
+
3
+ ## Summary
4
+
5
+ Releases v0.3.1 through v0.7.5 include significant gateway and dashboard improvements but **no template file changes** beyond what was covered in migrations 0.3.0 and 0.7.3. This migration exists to bump the version stamp and document the feature additions.
6
+
7
+ ## Template files changed
8
+
9
+ None. All changes in this range are gateway code, web dashboard, and runtime improvements.
10
+
11
+ ## Version bump
12
+
13
+ Update `jinn.version` in `config.yaml` from the previous migration version to `"0.7.5"`.
14
+
15
+ ## Notable features added (no migration action needed)
16
+
17
+ ### v0.3.1 — macOS Sleep Prevention
18
+ - Gateway runs `caffeinate` to prevent macOS from sleeping while active
19
+
20
+ ### v0.4.0 — Gateway-to-Gateway File Transfer
21
+ - `POST /api/files/transfer` endpoint for remote file sharing between Jinn instances
22
+ - Claude crash recovery with retry and session resume on restart
23
+
24
+ ### v0.5.0–v0.5.2 — Stability & Notifications
25
+ - Kanban board wired to gateway API
26
+ - System prompt token usage reduced ~70%
27
+ - Browser push notifications and notification history
28
+ - Agent interrupt on new message (v0.5.2)
29
+ - 12+ bug fixes
30
+
31
+ ### v0.6.0 — New Connectors & Queue Management
32
+ - Discord connector with channel routing
33
+ - WhatsApp connector via Baileys with QR pairing
34
+ - Persistent queue management with pause/resume
35
+ - Portal UI redesign (chat sidebar, settings, session management)
36
+
37
+ ### v0.7.0 — Project Phoenix Dashboard
38
+ - Complete dashboard overhaul with new layout and navigation
39
+
40
+ ### v0.7.2 — Session Delete Fix
41
+ - Fixed crash when deleting sessions from the web UI
42
+
43
+ ### v0.7.3 — Stale Session Recovery
44
+ - Fixed infinite retry loop from stale engine session IDs
45
+ - Added `?last=N` message filtering to sessions API
46
+ - (Template changes covered in 0.7.3 migration)
47
+
48
+ ### v0.7.4 — Onboarding Persistence
49
+ - Onboarding wizard state persisted server-side (survives new browsers)
50
+
51
+ ### v0.7.5 — File Attachments & Polish
52
+ - Drag & drop file attachments in chat
53
+ - Collapsible sidebar toggle
54
+ - Markdown-to-mrkdwn conversion for Slack and WhatsApp connectors
55
+ - Mobile sidebar improvements
56
+
57
+ ## Optional config additions
58
+
59
+ These config keys are supported but **not required** — the gateway uses sensible defaults:
60
+
61
+ | Key | Type | Default | Description |
62
+ |-----|------|---------|-------------|
63
+ | `connectors.discord.token` | string | _(unset)_ | Discord bot token (enable Discord connector) |
64
+ | `connectors.discord.channels` | object | _(unset)_ | Channel ID → name mapping for Discord routing |
65
+ | `connectors.whatsapp.enabled` | boolean | `false` | Enable WhatsApp connector |
66
+ | `portal.onboarded` | boolean | `false` | Whether onboarding wizard has been completed |
67
+
68
+ These are opt-in features. Only add them if you want to use Discord or WhatsApp connectors.
69
+
70
+ ## Merge instructions
71
+
72
+ 1. **Config**: Update `jinn.version` to `"0.7.5"`. No other config changes required.
73
+ 2. **No template file changes** — nothing to copy or merge.
74
+ 3. **Database**: Schema changes are handled automatically on gateway start.
75
+
76
+ ## Files
77
+
78
+ No files directory — this migration is version-stamp only.
@@ -0,0 +1,73 @@
1
+ # Migration: 0.8.0 (Gemini CLI, Telegram, Keyboard Shortcuts, Session Rename)
2
+
3
+ ## Summary
4
+
5
+ Major release adding a third AI engine (Gemini CLI), Telegram connector, keyboard shortcuts, inline session rename, employee picker, and numerous web dashboard improvements.
6
+
7
+ ## Template files changed
8
+
9
+ None. All changes are gateway code, web dashboard, and runtime improvements.
10
+
11
+ ## Version bump
12
+
13
+ Update `jinn.version` in `config.yaml` from `"0.7.8"` to `"0.8.0"`.
14
+
15
+ ## New features
16
+
17
+ ### Gemini CLI Engine
18
+ - Third engine alongside Claude Code and Codex
19
+ - Full streaming support, session resume, process management
20
+ - Configure via `engines.gemini.enabled: true` in `config.yaml`
21
+ - Requires `gemini` CLI installed (`npm install -g @anthropic-ai/gemini-cli` or equivalent)
22
+
23
+ ### Telegram Connector
24
+ - Polling-based bot using `node-telegram-bot-api`
25
+ - User allowlist (`allowFrom` config)
26
+ - Markdown-to-Telegram format conversion
27
+ - Configure via `connectors.telegram` in `config.yaml`
28
+
29
+ ### Keyboard Shortcuts (web)
30
+ - Linear-style shortcut overlay (press `?` to see all)
31
+ - `J`/`K` to navigate sessions, `/` to focus search, `N` for new chat
32
+ - Shortcut hints displayed inline in the UI
33
+
34
+ ### Employee Picker (web)
35
+ - Grouped, searchable employee picker when starting new chats
36
+ - Vertical layout organized by department
37
+
38
+ ### Session Rename (web)
39
+ - Inline rename via right-click context menu or hover menu
40
+ - Cross-tab sync via WebSocket `session:updated` event
41
+ - Backend validation (type check, trim, non-empty, 200-char max)
42
+
43
+ ### alwaysNotify Per-Employee
44
+ - `alwaysNotify` field in employee YAML
45
+ - `PATCH /api/org/employees/:name` endpoint to toggle from dashboard
46
+ - Suppresses notification for quiet employees
47
+
48
+ ### Other improvements
49
+ - Auto-focus chat input on new chat
50
+ - Chat auto-scroll fix — no longer interrupts history reading
51
+ - `jinn --version` reads from package.json (no more stale version)
52
+ - `jinn migrate` fix for `--cwd` flag on Node.js
53
+ - Mobile zoom prevention on input focus
54
+ - Sidebar delete navigation and tab switching fixes
55
+
56
+ ## Optional config additions
57
+
58
+ | Key | Type | Default | Description |
59
+ |-----|------|---------|-------------|
60
+ | `engines.gemini.enabled` | boolean | `false` | Enable Gemini CLI engine |
61
+ | `engines.gemini.model` | string | `"gemini-2.5-pro"` | Default Gemini model |
62
+ | `connectors.telegram.botToken` | string | _(unset)_ | Telegram bot token |
63
+ | `connectors.telegram.allowFrom` | string[] | _(unset)_ | Allowed Telegram usernames |
64
+
65
+ ## Merge instructions
66
+
67
+ 1. **Config**: Update `jinn.version` to `"0.8.0"`. Optionally add Gemini/Telegram config.
68
+ 2. **No template file changes** — nothing to copy or merge.
69
+ 3. **Database**: Schema changes are handled automatically on gateway start.
70
+
71
+ ## Files
72
+
73
+ No files directory — this migration is version-stamp only.
@@ -0,0 +1,82 @@
1
+ # Migration: 0.9.0 (Hierarchical Org, Service Routing, Multi-Instance Connectors)
2
+
3
+ ## Summary
4
+
5
+ Major release adding infinite-depth hierarchical org tree via `reportsTo` field, cross-department service routing with LCA-based path resolution, chain-of-command context injection, multi-instance connector support, and Homebrew formula.
6
+
7
+ ## Template files changed
8
+
9
+ - `CLAUDE.md` — added hierarchy documentation (reportsTo, chain of command), cross-department service routing API docs
10
+ - `AGENTS.md` — same hierarchy and service routing updates as CLAUDE.md
11
+ - `skills/management/SKILL.md` — updated hiring (auto-detect reportsTo), firing (reassign direct reports), promotion (report reassignment)
12
+
13
+ ## Version bump
14
+
15
+ Update `jinn.version` in `config.yaml` to `"0.9.0"`.
16
+
17
+ ## New features
18
+
19
+ ### Hierarchical Org Tree
20
+ - Employees can declare `reportsTo: <employee-name>` in their YAML
21
+ - Gateway resolves full tree automatically with smart defaults (infers hierarchy from rank when `reportsTo` is absent)
22
+ - Supports infinite depth, cross-department reporting, cycle detection
23
+ - Advisory delegation — hierarchy informs context prompts but never blocks direct access
24
+ - Same-rank rule: employees of equal rank never implicitly report to each other
25
+
26
+ ### Cross-Department Service Routing
27
+ - Employees can declare `provides` services in their YAML:
28
+ ```yaml
29
+ provides:
30
+ - name: code-review
31
+ description: "Review PRs and provide feedback"
32
+ ```
33
+ - `GET /api/org/services` — list all available services across the org
34
+ - `POST /api/org/cross-request` — route a service request to the provider, creating a session with a formatted brief
35
+ - LCA (Lowest Common Ancestor) algorithm for routing path resolution
36
+ - Manager chain tracking for audit/tracing
37
+ - Collision handling: higher-ranked employee wins, alphabetical tiebreak
38
+
39
+ ### Chain-of-Command Context
40
+ - Employee prompts now include rich chain-of-command section: department, manager (with rank), direct reports (with ranks), escalation path
41
+ - Available services from other departments listed with API usage instructions
42
+ - Replaces the old simple `reportsTo` / `directReports` lines
43
+
44
+ ### Multi-Instance Connectors (PR #23)
45
+ - Connectors (Slack, Discord, etc.) can now run multiple instances with different configurations
46
+ - Each instance gets its own channel mapping and credentials
47
+
48
+ ### Homebrew Formula (PR #33)
49
+ - `brew install hristo2612/tap/jinn` now works
50
+ - Includes Node.js dependency management
51
+
52
+ ## Employee YAML changes
53
+
54
+ New optional fields:
55
+
56
+ | Field | Type | Description |
57
+ |-------|------|-------------|
58
+ | `reportsTo` | `string \| string[]` | Who this employee reports to (primary parent used for hierarchy) |
59
+ | `provides` | `ServiceDeclaration[]` | Services this employee provides to the org |
60
+
61
+ Example:
62
+ ```yaml
63
+ name: jimmy-dev
64
+ displayName: Jimmy Dev
65
+ rank: senior
66
+ department: platform
67
+ reportsTo: jimbo
68
+ provides:
69
+ - name: code-review
70
+ description: "Review PRs and provide feedback"
71
+ ```
72
+
73
+ ## Merge instructions
74
+
75
+ 1. **Config**: Update `jinn.version` to `"0.9.0"`.
76
+ 2. **Template files**: Merge the updated `CLAUDE.md`, `AGENTS.md`, and `skills/management/SKILL.md` from the template. These contain new documentation sections — merge carefully with any user customizations.
77
+ 3. **Employee YAMLs**: Optionally add `reportsTo` and `provides` fields to employee definitions. The system works without them (smart defaults infer hierarchy from rank).
78
+ 4. **Database**: No schema changes — handled automatically on gateway start.
79
+
80
+ ## Files
81
+
82
+ No files directory — template file updates should be merged manually or via AI.
@@ -0,0 +1,127 @@
1
+ ---
2
+ name: cron-manager
3
+ description: Create, edit, delete, enable, disable, and list scheduled cron jobs
4
+ ---
5
+
6
+ # Cron Manager Skill
7
+
8
+ ## Trigger
9
+
10
+ This skill activates when the user wants to create, edit, delete, enable, disable, or list scheduled cron jobs.
11
+
12
+ ## Data File
13
+
14
+ All cron jobs are stored in `~/.jinn/cron/jobs.json` as a JSON array of job objects. If the file does not exist, create it with an empty array `[]`.
15
+
16
+ ## CronJob Schema
17
+
18
+ ```json
19
+ {
20
+ "id": "uuid-v4",
21
+ "name": "daily-standup-summary",
22
+ "enabled": true,
23
+ "schedule": "0 9 * * 1-5",
24
+ "timezone": "America/New_York",
25
+ "engine": "claude",
26
+ "model": "sonnet",
27
+ "employee": "project-manager",
28
+ "prompt": "Review all department boards and summarize progress since yesterday. Highlight blockers and upcoming deadlines.",
29
+ "delivery": {
30
+ "connector": "slack",
31
+ "channel": "#engineering-standup"
32
+ }
33
+ }
34
+ ```
35
+
36
+ Field details:
37
+ - `id` — UUID v4, generated when creating the job
38
+ - `name` — kebab-case human-readable identifier, must be unique across all jobs
39
+ - `enabled` — boolean, whether the job is active
40
+ - `schedule` — standard cron expression (minute hour day month weekday)
41
+ - `timezone` — IANA timezone string (e.g., `America/New_York`, `Europe/London`, `UTC`)
42
+ - `engine` — AI engine to run the job: `claude` or `codex`
43
+ - `model` — model identifier (e.g., `sonnet`, `opus`, `o3`)
44
+ - `employee` — optional, the employee persona to use (must match an employee name in the org)
45
+ - `prompt` — the instruction to execute when the job fires
46
+ - `delivery` — optional object specifying where to send output
47
+ - `connector` — the connector to use (e.g., `slack`, `discord`)
48
+ - `channel` — the target channel or destination
49
+
50
+ ## Operations
51
+
52
+ ### Creating a Job
53
+
54
+ 1. Read the current `~/.jinn/cron/jobs.json` (or initialize as `[]` if missing).
55
+ 2. Ask the user for the required fields: name, schedule, engine, model, and prompt.
56
+ 3. Ask about the timezone. Default to `UTC` if not specified.
57
+ 4. Ask about the employee persona to use. This is optional.
58
+ 5. **Always ask the user about the delivery channel** if they did not specify one. Explain that without delivery, the output will only be logged.
59
+ 6. **Delegation check**: If the job has delivery configured AND targets a non-{{portalSlug}} employee, warn the user. The correct pattern for reporting/analytical jobs is: target `{{portalSlug}}`, and include delegation instructions in the prompt (e.g. "Delegate to @employee-name: ..."). {{portalName}} reviews and filters the output before it reaches the delivery channel. Only simple, no-review tasks (e.g. health checks) should target employees directly with delivery.
60
+ 7. Generate a UUID for the `id` field.
61
+ 8. Set `enabled` to `true` by default.
62
+ 9. Append the new job object to the array.
63
+ 10. Write the updated array back to `~/.jinn/cron/jobs.json`.
64
+ 11. Confirm the creation and summarize the schedule in plain English.
65
+
66
+ ### Editing a Job
67
+
68
+ 1. Read `~/.jinn/cron/jobs.json`.
69
+ 2. Find the job by name or id.
70
+ 3. Show the current values to the user.
71
+ 4. Apply the requested changes.
72
+ 5. Write the updated array back.
73
+ 6. Confirm the changes.
74
+
75
+ ### Deleting a Job
76
+
77
+ 1. Read `~/.jinn/cron/jobs.json`.
78
+ 2. Find the job by name or id.
79
+ 3. Confirm deletion with the user (show job details).
80
+ 4. Remove the job from the array.
81
+ 5. Write the updated array back.
82
+ 6. Confirm deletion.
83
+
84
+ ### Enabling / Disabling a Job
85
+
86
+ 1. Read `~/.jinn/cron/jobs.json`.
87
+ 2. Find the job by name or id.
88
+ 3. Set `enabled` to `true` (enable) or `false` (disable).
89
+ 4. Write the updated array back.
90
+ 5. Confirm the status change.
91
+
92
+ ### Listing Jobs
93
+
94
+ 1. Read `~/.jinn/cron/jobs.json`.
95
+ 2. Display jobs in a readable format, grouped by enabled/disabled.
96
+ 3. Include name, schedule (with plain-English interpretation), timezone, engine, and delivery info.
97
+
98
+ ## Cron Schedule Reference
99
+
100
+ The schedule field uses standard 5-field cron syntax:
101
+
102
+ ```
103
+ ┌───────────── minute (0-59)
104
+ │ ┌───────────── hour (0-23)
105
+ │ │ ┌───────────── day of month (1-31)
106
+ │ │ │ ┌───────────── month (1-12)
107
+ │ │ │ │ ┌───────────── day of week (0-7, 0 and 7 = Sunday)
108
+ │ │ │ │ │
109
+ * * * * *
110
+ ```
111
+
112
+ Common examples:
113
+ - `0 9 * * 1-5` — Every weekday at 9:00 AM
114
+ - `0 0 * * *` — Every day at midnight
115
+ - `*/15 * * * *` — Every 15 minutes
116
+ - `0 9 * * 1` — Every Monday at 9:00 AM
117
+ - `0 8,17 * * *` — Every day at 8:00 AM and 5:00 PM
118
+ - `0 0 1 * *` — First day of every month at midnight
119
+ - `30 14 * * 5` — Every Friday at 2:30 PM
120
+
121
+ ## Error Handling
122
+
123
+ - If `jobs.json` is malformed, attempt to fix it. If unrecoverable, back it up as `jobs.json.bak` and start fresh with `[]`.
124
+ - If a job name already exists when creating, warn the user and ask for a different name.
125
+ - Validate the cron expression format before saving. Warn if the expression looks incorrect.
126
+ - Validate that the timezone is a valid IANA timezone string.
127
+ - If an employee is specified, verify it exists in the org directory.
@@ -0,0 +1,92 @@
1
+ ---
2
+ name: find-and-install
3
+ description: Find and install skills from skills.sh when a capability gap is detected
4
+ ---
5
+
6
+ # Find & Install Skills
7
+
8
+ ## Trigger
9
+
10
+ This skill activates when you detect a capability gap that a community skill might fill, the user explicitly asks to find or install a skill and a task would benefit from a specialized skill you don't currently have
11
+
12
+ ## Searching for Skills
13
+
14
+ Run a search using the skills CLI:
15
+
16
+ ```bash
17
+ npx skills find [query]
18
+ ```
19
+
20
+ Review the results and assess trust level before suggesting:
21
+
22
+ - 🟢 **VERIFIED** (1000+ installs or known orgs like `vercel-labs`, `anthropics`, `microsoft`): Suggest confidently
23
+ - 🟡 **COMMUNITY** (50–999 installs): Suggest with a note about the install count
24
+ - 🔴 **UNKNOWN** (<50 installs): Show but warn the user — offer to preview the SKILL.md before installing
25
+
26
+ ## Installing a Skill
27
+
28
+ Once the user approves (or for 🟢 VERIFIED skills when you're confident it fits):
29
+
30
+ ### Step 1: Install globally
31
+
32
+ ```bash
33
+ npx skills add <owner/repo@skill> -g -y
34
+ ```
35
+
36
+ This places files into `~/.claude/skills/<name>/` or `~/.agents/skills/<name>/`.
37
+
38
+ ### Step 2: Copy into {{portalSlug}} skills directory
39
+
40
+ ```bash
41
+ cp -r ~/.claude/skills/<name>/ ~/.{{portalSlug}}/skills/<name>/
42
+ ```
43
+
44
+ The {{portalName}} file watcher will detect the new directory and create the appropriate symlinks automatically.
45
+
46
+ ### Step 3: Update the skills manifest
47
+
48
+ Read `~/.{{portalSlug}}/skills.json`, add the new skill entry, and write it back.
49
+
50
+ The manifest format:
51
+
52
+ ```json
53
+ {
54
+ "installed": {
55
+ "<name>": {
56
+ "source": "<owner/repo@skill>",
57
+ "installedAt": "<ISO 8601 timestamp>"
58
+ }
59
+ }
60
+ }
61
+ ```
62
+
63
+ ### Step 4: Apply the skill immediately
64
+
65
+ Read the newly installed `~/.{{portalSlug}}/skills/<name>/SKILL.md` and follow its instructions to complete the current task.
66
+
67
+ ## When No Skills Are Found
68
+
69
+ If `npx skills find` returns no results:
70
+
71
+ 1. Offer to help the user directly with the task using your built-in capabilities
72
+ 2. Suggest creating a custom skill if this is a recurring need (use the `skill-creator` skill)
73
+
74
+ ## Examples
75
+
76
+ **User asks to deploy to Vercel:**
77
+
78
+ ```bash
79
+ npx skills find "vercel deploy"
80
+ # → vercel-labs/ai-skills@vercel-deploy (🟢 VERIFIED, 5200 installs)
81
+ npx skills add vercel-labs/ai-skills@vercel-deploy -g -y
82
+ cp -r ~/.claude/skills/vercel-deploy/ ~/.{{portalSlug}}/skills/vercel-deploy/
83
+ # → update skills.json → read SKILL.md → follow deploy instructions
84
+ ```
85
+
86
+ **User asks for an obscure skill:**
87
+
88
+ ```bash
89
+ npx skills find "arduino serial monitor"
90
+ # → random-user/arduino-tools@serial-monitor (🔴 UNKNOWN, 12 installs)
91
+ # → Warn user, offer to preview SKILL.md before installing
92
+ ```