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 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,15857,e=>{"use strict";var a=e.i(98181),t=e.i(25007),r=e.i(90922);let n=(0,r.default)("rotate-ccw",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]]);var l=e.i(38524),s=e.i(40765);let o=(0,r.default)("save",[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]]),i=(0,r.default)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);var c=e.i(58843),d=e.i(36668),p=e.i(11322),x=e.i(13765),v=e.i(65390),h=e.i(93716),u=e.i(52053);let m=[{label:"Red",value:"#EF4444"},{label:"Orange",value:"#F97316"},{label:"Amber",value:"#F59E0B"},{label:"Yellow",value:"#EAB308"},{label:"Lime",value:"#84CC16"},{label:"Green",value:"#22C55E"},{label:"Emerald",value:"#10B981"},{label:"Cyan",value:"#06B6D4"},{label:"Blue",value:"#3B82F6"},{label:"Indigo",value:"#6366F1"},{label:"Violet",value:"#8B5CF6"},{label:"Pink",value:"#EC4899"}];function g({title:e,children:t}){return(0,a.jsxs)("section",{className:"mb-[var(--space-6)]",children:[(0,a.jsx)("div",{className:"text-[length:var(--text-caption1)] font-[var(--weight-semibold)] tracking-[var(--tracking-wide)] uppercase text-[var(--text-tertiary)] px-[var(--space-2)] pb-[var(--space-2)]",children:e}),(0,a.jsx)("div",{className:"bg-[var(--material-regular)] rounded-[var(--radius-md)] border border-[var(--separator)] p-[var(--space-4)]",children:t})]})}function b({label:e,children:t}){return(0,a.jsxs)("div",{className:"flex items-center justify-between py-[var(--space-2)] gap-[var(--space-4)]",children:[(0,a.jsx)("label",{className:"text-[length:var(--text-subheadline)] text-[var(--text-secondary)] shrink-0",children:e}),(0,a.jsx)("div",{className:"w-[240px] shrink-0",children:t})]})}function j({value:e,onChange:t,type:r="text",placeholder:n}){return(0,a.jsx)("input",{type:r,value:e,onChange:e=>t(e.target.value),placeholder:n,className:"apple-input w-full bg-[var(--bg-secondary)] border border-[var(--separator)] rounded-[var(--radius-sm)] px-[10px] py-[6px] text-[length:var(--text-footnote)] text-[var(--text-primary)]"})}function f({value:e,onChange:t,options:r}){return(0,a.jsx)("select",{value:e,onChange:e=>t(e.target.value),className:"w-full bg-[var(--bg-secondary)] border border-[var(--separator)] rounded-[var(--radius-sm)] px-[10px] py-[6px] text-[length:var(--text-footnote)] text-[var(--text-primary)] cursor-pointer",children:r.map(e=>(0,a.jsx)("option",{value:e.value,children:e.label},e.value))})}function y({checked:e,onChange:t}){return(0,a.jsx)("button",{role:"switch","aria-checked":e,onClick:()=>t(!e),className:"w-[44px] h-[24px] rounded-[12px] border-none cursor-pointer relative shrink-0 transition-[background] duration-200 ease-[var(--ease-smooth)]",style:{background:e?"var(--system-green)":"var(--fill-primary)"},children:(0,a.jsx)("span",{className:"absolute top-[2px] w-[20px] h-[20px] rounded-full bg-white shadow-[0_1px_3px_rgba(0,0,0,0.2)] transition-[left] duration-200 ease-[var(--ease-spring)]",style:{left:e?22:2}})})}let w={en:"English",bg:"Bulgarian",de:"German",fr:"French",es:"Spanish",it:"Italian",pt:"Portuguese",ru:"Russian",zh:"Chinese",ja:"Japanese",ko:"Korean",ar:"Arabic",hi:"Hindi",tr:"Turkish",pl:"Polish",nl:"Dutch",sv:"Swedish",cs:"Czech",el:"Greek",ro:"Romanian",uk:"Ukrainian",he:"Hebrew",da:"Danish",fi:"Finnish",hu:"Hungarian",no:"Norwegian",sk:"Slovak",hr:"Croatian",ca:"Catalan",th:"Thai",vi:"Vietnamese",id:"Indonesian",ms:"Malay",tl:"Filipino",sr:"Serbian",lt:"Lithuanian",lv:"Latvian",sl:"Slovenian",et:"Estonian"};function C(){let[e,r]=(0,t.useState)(null),[n,l]=(0,t.useState)(!1),[s,o]=(0,t.useState)("");if((0,t.useEffect)(()=>{h.api.sttStatus().then(r).catch(()=>{})},[]),(0,t.useEffect)(()=>{if(!e?.downloading)return;let a=setInterval(()=>{h.api.sttStatus().then(r).catch(()=>{})},1500);return()=>clearInterval(a)},[e?.downloading]),!e)return null;let i=Object.entries(w).filter(([a])=>!e.languages.includes(a)).sort((e,a)=>e[1].localeCompare(a[1]));return(0,a.jsxs)(g,{title:"音声入力",children:[(0,a.jsxs)("div",{className:"flex items-center gap-[var(--space-3)] mb-[var(--space-4)]",children:[(0,a.jsx)("div",{className:"w-[8px] h-[8px] rounded-full shrink-0",style:{background:e.available?"var(--system-green)":"var(--system-red)"}}),(0,a.jsxs)("div",{className:"flex-1",children:[(0,a.jsx)("div",{className:"text-[length:var(--text-subheadline)] font-[var(--weight-medium)] text-[var(--text-primary)]",children:e.available?`Whisper ${(e.model||"small").charAt(0).toUpperCase()+(e.model||"small").slice(1)}`:"No model installed"}),(0,a.jsx)("div",{className:"text-[length:var(--text-caption1)] text-[var(--text-tertiary)]",children:e.available?"Offline speech recognition ready":"Download a model to enable voice input"})]})]}),!e.available&&!e.downloading&&(0,a.jsx)("button",{onClick:function(){h.api.sttDownload().then(()=>r(e=>e?{...e,downloading:!0,progress:0}:e)).catch(()=>{})},className:"w-full p-[var(--space-3)] rounded-[var(--radius-md)] bg-[var(--accent)] text-[var(--accent-contrast)] border-none cursor-pointer text-[length:var(--text-footnote)] font-[var(--weight-semibold)] mb-[var(--space-4)]",children:"Download Whisper Small (~500MB)"}),e.downloading&&(0,a.jsxs)("div",{className:"mb-[var(--space-4)]",children:[(0,a.jsxs)("div",{className:"flex justify-between mb-[var(--space-2)] text-[length:var(--text-caption1)] text-[var(--text-tertiary)]",children:[(0,a.jsx)("span",{children:"Downloading model…"}),(0,a.jsxs)("span",{children:[e.progress,"%"]})]}),(0,a.jsx)("div",{className:"h-[6px] rounded-[3px] bg-[var(--fill-tertiary)] overflow-hidden",children:(0,a.jsx)("div",{className:"h-full rounded-[3px] bg-[var(--accent)] transition-[width] duration-300 ease-out",style:{width:`${e.progress}%`}})})]}),e.available&&(0,a.jsx)(a.Fragment,{children:(0,a.jsxs)("div",{className:"border-t border-[var(--separator)] mt-[var(--space-2)] pt-[var(--space-3)]",children:[(0,a.jsx)("div",{className:"text-[length:var(--text-caption1)] font-[var(--weight-semibold)] text-[var(--text-tertiary)] mb-[var(--space-2)]",children:"Transcription Languages"}),(0,a.jsx)("div",{className:"text-[length:var(--text-caption2)] text-[var(--text-tertiary)] mb-[var(--space-3)]",children:"First language is the default. Add multiple to show a language picker in chat."}),(0,a.jsx)("div",{className:"flex flex-wrap gap-[var(--space-2)] mb-[var(--space-3)]",children:e.languages.map(t=>(0,a.jsxs)("div",{className:"inline-flex items-center gap-[var(--space-1)] px-[8px] py-[3px] rounded-[var(--radius-sm)] bg-[var(--fill-secondary)] text-[length:var(--text-caption1)] font-[var(--weight-medium)] text-[var(--text-primary)]",children:[(0,a.jsx)("span",{className:"font-[family-name:var(--font-mono)] uppercase text-[length:var(--text-caption2)] font-[var(--weight-semibold)] text-[var(--accent)] mr-[2px]",children:t}),w[t]||t,e.languages.length>1&&(0,a.jsx)("button",{onClick:()=>(function(a){if(!e||e.languages.length<=1)return;let t=e.languages.filter(e=>e!==a);l(!0),h.api.sttUpdateConfig(t).then(()=>r(e=>e?{...e,languages:t}:e)).catch(()=>{}).finally(()=>l(!1))})(t),disabled:n,"aria-label":`Remove ${w[t]||t}`,className:"bg-none border-none cursor-pointer p-0 ml-[2px] text-[var(--text-quaternary)] text-[14px] leading-none flex items-center",children:"×"})]},t))}),(0,a.jsxs)("div",{className:"flex gap-[var(--space-2)]",children:[(0,a.jsxs)("select",{value:s,onChange:e=>o(e.target.value),className:"flex-1 bg-[var(--bg-secondary)] border border-[var(--separator)] rounded-[var(--radius-sm)] px-[10px] py-[6px] text-[length:var(--text-footnote)] cursor-pointer",style:{color:s?"var(--text-primary)":"var(--text-tertiary)"},children:[(0,a.jsx)("option",{value:"",children:"Add a language…"}),i.map(([e,t])=>(0,a.jsxs)("option",{value:e,children:[e.toUpperCase()," — ",t]},e))]}),(0,a.jsx)("button",{onClick:function(){if(!s||!e||e.languages.includes(s))return;let a=[...e.languages,s];l(!0),o(""),h.api.sttUpdateConfig(a).then(()=>r(e=>e?{...e,languages:a}:e)).catch(()=>{}).finally(()=>l(!1))},disabled:!s||n,className:"px-[14px] py-[6px] rounded-[var(--radius-sm)] border-none text-[length:var(--text-footnote)] font-[var(--weight-semibold)] shrink-0",style:{background:s?"var(--accent)":"var(--fill-tertiary)",color:s?"var(--accent-contrast)":"var(--text-quaternary)",cursor:s?"pointer":"default"},children:"Add"})]})]})})]})}e.s(["default",0,function(){(0,p.useBreadcrumbs)([{label:"Settings"}]);let{settings:e,setAccentColor:r,setPortalName:w,setPortalSubtitle:N,setOperatorName:k,setPortalEmoji:S,setLanguage:F,resetAll:D}=(0,d.useSettings)(),{theme:A,setTheme:T}=(0,x.useTheme)(),[I,B]=(0,t.useState)(e.portalName??""),[E,O]=(0,t.useState)(e.portalSubtitle??""),[L,M]=(0,t.useState)(e.operatorName??""),[P,W]=(0,t.useState)(e.portalEmoji??""),[R,G]=(0,t.useState)(e.language??"English"),[z,H]=(0,t.useState)(e.accentColor??""),[U,$]=(0,t.useState)(!1),[q,J]=(0,t.useState)({}),[K,V]=(0,t.useState)(!0),[_,Q]=(0,t.useState)(null),[Y,X]=(0,t.useState)(!1),[Z,ee]=(0,t.useState)(null),[ea,et]=(0,t.useState)(null),[er,en]=(0,t.useState)("unknown"),[el,es]=(0,t.useState)([]);function eo(){V(!0),h.api.getConfig().then(e=>{J(e),Q(null)}).catch(e=>Q(e.message)).finally(()=>V(!1))}function ei(e,a){J(t=>{let r=structuredClone(t),n=r;for(let a=0;a<e.length-1;a++)n[e[a]]&&"object"==typeof n[e[a]]||(n[e[a]]={}),n=n[e[a]];return n[e[e.length-1]]=a,r})}return(0,t.useEffect)(()=>{h.api.getOrg().then(e=>{e?.employees&&es(e.employees.map(e=>"string"==typeof e?{name:e,displayName:e}:{name:e.name,displayName:e.displayName||e.name}))}).catch(()=>{})},[]),(0,t.useEffect)(()=>{B(e.portalName??""),O(e.portalSubtitle??""),M(e.operatorName??""),W(e.portalEmoji??""),G(e.language??"English"),H(e.accentColor??"")},[e.portalName,e.portalSubtitle,e.operatorName,e.portalEmoji,e.language,e.accentColor]),(0,t.useEffect)(()=>{eo()},[]),(0,t.useEffect)(()=>{if(!q.connectors?.whatsapp)return;let e=!1;async function a(){try{let a=await fetch("/api/status"),t=await a.json(),r=t?.connectors?.whatsapp?.status;if(e||en(r??"unknown"),"qr_pending"===r){let a=await fetch("/api/connectors/whatsapp/qr"),t=await a.json();e||et(t.qr)}else e||et(null)}catch{}}a();let t=setInterval(()=>{a()},1e4);return()=>{e=!0,clearInterval(t)}},[q.connectors?.whatsapp]),(0,a.jsx)(c.PageLayout,{children:(0,a.jsx)("div",{className:"h-full overflow-y-auto bg-[var(--bg)]",children:(0,a.jsxs)("div",{className:"max-w-[640px] mx-auto px-[var(--space-4)] py-[var(--space-6)] pb-[var(--space-12)]",children:[(0,a.jsx)("h1",{className:"text-[length:var(--text-title1)] font-[var(--weight-bold)] tracking-[var(--tracking-tight)] text-[var(--text-primary)] mb-[var(--space-6)]",children:"Settings"}),(0,a.jsxs)(g,{title:"外観",children:[(0,a.jsx)("div",{className:"text-[length:var(--text-footnote)] font-[var(--weight-medium)] text-[var(--text-secondary)] mb-[var(--space-2)]",children:"Theme"}),(0,a.jsx)("div",{className:"grid grid-cols-5 gap-[var(--space-2)] mb-[var(--space-4)]",children:v.THEMES.map(e=>{let t=A===e.id;return(0,a.jsxs)("button",{onClick:()=>T(e.id),className:"flex flex-col items-center gap-[var(--space-1)] px-[var(--space-2)] py-[var(--space-3)] rounded-[var(--radius-md)] bg-[var(--fill-quaternary)] cursor-pointer transition-all duration-150 ease-[var(--ease-smooth)]",style:{border:t?"2px solid var(--accent)":"2px solid var(--separator)"},children:[(0,a.jsx)("span",{className:"text-[24px]",children:e.emoji}),(0,a.jsx)("span",{className:"text-[length:var(--text-caption2)]",style:{fontWeight:t?"var(--weight-semibold)":"var(--weight-medium)",color:t?"var(--accent)":"var(--text-secondary)"},children:e.label})]},e.id)})}),(0,a.jsx)("div",{className:"text-[length:var(--text-footnote)] font-[var(--weight-medium)] text-[var(--text-secondary)] mb-[var(--space-2)]",children:"Accent Color"}),(0,a.jsx)("div",{className:"flex flex-wrap gap-[var(--space-2)] mb-[var(--space-3)]",children:m.map(t=>{let n=e.accentColor===t.value;return(0,a.jsx)("button",{onClick:()=>r(t.value),"aria-label":t.label,title:t.label,className:"w-[32px] h-[32px] rounded-full cursor-pointer transition-all duration-100 ease-[var(--ease-smooth)] flex items-center justify-center",style:{background:t.value,border:n?"2px solid var(--text-primary)":"2px solid transparent",outline:n?`2px solid ${t.value}`:"none",outlineOffset:2},children:n&&(0,a.jsx)(s.Check,{size:14,color:"#fff",strokeWidth:3})},t.value)})}),(0,a.jsxs)("div",{className:"flex items-center gap-[var(--space-3)]",children:[(0,a.jsxs)("label",{className:"flex items-center gap-[var(--space-2)] text-[length:var(--text-footnote)] text-[var(--text-secondary)] cursor-pointer",children:["Custom:",(0,a.jsx)("input",{type:"color",value:e.accentColor??"#3B82F6",onChange:e=>r(e.target.value),className:"w-[28px] h-[28px] border-none rounded-full cursor-pointer bg-transparent p-0"})]}),(0,a.jsx)("input",{type:"text",placeholder:"#3B82F6",value:z,onChange:e=>{H(e.target.value),/^#[0-9a-fA-F]{6}$/.test(e.target.value)&&r(e.target.value)},className:"apple-input w-[90px] px-[8px] py-[4px] text-[length:var(--text-caption1)] bg-[var(--bg-secondary)] border border-[var(--separator)] rounded-[var(--radius-sm)] text-[var(--text-primary)] font-mono"}),e.accentColor&&(0,a.jsxs)("button",{onClick:()=>r(null),className:"text-[length:var(--text-footnote)] text-[var(--system-blue)] bg-none border-none cursor-pointer p-0 inline-flex items-center gap-[4px]",children:[(0,a.jsx)(n,{size:12}),"Reset"]})]})]}),(0,a.jsx)(g,{title:"COO絵文字",children:(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-[length:var(--text-caption1)] text-[var(--text-tertiary)] mb-[var(--space-3)]",children:"Choose an emoji for the COO shown in the sidebar."}),(0,a.jsxs)("div",{className:"relative flex items-center gap-[var(--space-4)]",children:[(0,a.jsx)("button",{onClick:()=>$(!U),className:"text-4xl cursor-pointer bg-transparent border-none p-0",children:e.portalEmoji??"🧞"}),(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-[length:var(--text-body)] font-[var(--weight-semibold)] text-[var(--text-primary)]",children:e.operatorName||"Jimbo"}),(0,a.jsx)("div",{className:"text-[length:var(--text-caption1)] text-[var(--text-tertiary)]",children:"Click emoji to change"})]}),U&&(0,a.jsx)(u.EmojiPicker,{current:e.portalEmoji??"🧞",onSelect:e=>{S(e),$(!1)},onClose:()=>$(!1)})]})]})}),(0,a.jsx)(g,{title:"ブランディング",children:(0,a.jsxs)("div",{className:"flex flex-col gap-[var(--space-3)]",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-[length:var(--text-caption1)] text-[var(--text-tertiary)] mb-[var(--space-1)]",children:"Portal Name"}),(0,a.jsx)("input",{type:"text",className:"apple-input w-full bg-[var(--bg-secondary)] border border-[var(--separator)] rounded-[var(--radius-sm)] px-[10px] py-[6px] text-[length:var(--text-footnote)] text-[var(--text-primary)]",placeholder:"Jinn",value:I,onChange:e=>B(e.target.value),onBlur:()=>{w(I||null),h.api.completeOnboarding({portalName:I||void 0}).catch(()=>{})}})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-[length:var(--text-caption1)] text-[var(--text-tertiary)] mb-[var(--space-1)]",children:"Portal Subtitle"}),(0,a.jsx)("input",{type:"text",className:"apple-input w-full bg-[var(--bg-secondary)] border border-[var(--separator)] rounded-[var(--radius-sm)] px-[10px] py-[6px] text-[length:var(--text-footnote)] text-[var(--text-primary)]",placeholder:"Command Centre",value:E,onChange:e=>O(e.target.value),onBlur:()=>N(E||null)})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-[length:var(--text-caption1)] text-[var(--text-tertiary)] mb-[var(--space-1)]",children:"Operator Name"}),(0,a.jsx)("input",{type:"text",className:"apple-input w-full bg-[var(--bg-secondary)] border border-[var(--separator)] rounded-[var(--radius-sm)] px-[10px] py-[6px] text-[length:var(--text-footnote)] text-[var(--text-primary)]",placeholder:"Your Name",value:L,onChange:e=>M(e.target.value),onBlur:()=>{k(L||null),h.api.completeOnboarding({operatorName:L||void 0}).catch(()=>{})}})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-[length:var(--text-caption1)] text-[var(--text-tertiary)] mb-[var(--space-1)]",children:"Portal Emoji"}),(0,a.jsx)("input",{type:"text",className:"apple-input w-[80px] text-center text-[length:var(--text-title2)] px-[8px] py-[6px] bg-[var(--bg-secondary)] border border-[var(--separator)] rounded-[var(--radius-sm)]",placeholder:"\\ud83e\\uddde",value:P,onChange:e=>W(e.target.value),onBlur:()=>S(P||null)})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-[length:var(--text-caption1)] text-[var(--text-tertiary)] mb-[var(--space-1)]",children:"Language"}),(0,a.jsxs)("select",{value:R,onChange:e=>G(e.target.value),onBlur:()=>{F(R||"English"),h.api.completeOnboarding({language:R||void 0}).catch(()=>{})},className:"w-full bg-[var(--bg-secondary)] border border-[var(--separator)] rounded-[var(--radius-sm)] px-[10px] py-[6px] text-[length:var(--text-footnote)] text-[var(--text-primary)] cursor-pointer",children:[(0,a.jsx)("option",{value:"English",children:"English"}),(0,a.jsx)("option",{value:"Spanish",children:"Spanish"}),(0,a.jsx)("option",{value:"French",children:"French"}),(0,a.jsx)("option",{value:"German",children:"German"}),(0,a.jsx)("option",{value:"Portuguese",children:"Portuguese"}),(0,a.jsx)("option",{value:"Italian",children:"Italian"}),(0,a.jsx)("option",{value:"Dutch",children:"Dutch"}),(0,a.jsx)("option",{value:"Russian",children:"Russian"}),(0,a.jsx)("option",{value:"Chinese",children:"Chinese"}),(0,a.jsx)("option",{value:"Japanese",children:"Japanese"}),(0,a.jsx)("option",{value:"Korean",children:"Korean"}),(0,a.jsx)("option",{value:"Arabic",children:"Arabic"}),(0,a.jsx)("option",{value:"Hindi",children:"Hindi"}),(0,a.jsx)("option",{value:"Bulgarian",children:"Bulgarian"})]})]})]})}),Z&&(0,a.jsx)("div",{className:"mb-[var(--space-4)] px-[var(--space-4)] py-[var(--space-3)] rounded-[var(--radius-md)] text-[length:var(--text-footnote)]",style:{background:"success"===Z.type?"rgba(34,197,94,0.1)":"rgba(239,68,68,0.1)",border:`1px solid ${"success"===Z.type?"rgba(34,197,94,0.3)":"rgba(239,68,68,0.3)"}`,color:"success"===Z.type?"var(--system-green)":"var(--system-red)"},children:Z.message}),K?(0,a.jsxs)("div",{className:"text-center p-[var(--space-8)] text-[var(--text-tertiary)] text-[length:var(--text-footnote)]",children:[(0,a.jsx)(i,{size:20,className:"mx-auto mb-[var(--space-2)] animate-spin"}),"Loading gateway config..."]}):_?(0,a.jsxs)("div",{className:"mb-[var(--space-6)] px-[var(--space-4)] py-[var(--space-3)] rounded-[var(--radius-md)] text-[length:var(--text-footnote)] text-[var(--system-red)]",style:{background:"rgba(239,68,68,0.1)",border:"1px solid rgba(239,68,68,0.3)"},children:["Failed to load config: ",_]}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(g,{title:"ゲートウェイ設定",children:[(0,a.jsx)(b,{label:"Port",children:(0,a.jsx)(j,{type:"number",value:String(q.gateway?.port??""),onChange:e=>ei(["gateway","port"],Number(e)||0),placeholder:"7777"})}),(0,a.jsx)(b,{label:"Host",children:(0,a.jsx)(j,{value:q.gateway?.host??"",onChange:e=>ei(["gateway","host"],e),placeholder:"127.0.0.1"})}),(0,a.jsx)(b,{label:"Default Engine",children:(0,a.jsx)(f,{value:q.engines?.default??"claude",onChange:e=>ei(["engines","default"],e),options:[{value:"claude",label:"Claude"},{value:"codex",label:"Codex"}]})})]}),(0,a.jsxs)(g,{title:"エンジン設定",children:[(0,a.jsx)("div",{className:"text-[length:var(--text-caption1)] font-[var(--weight-semibold)] text-[var(--text-tertiary)] mb-[var(--space-2)]",children:"Claude"}),(0,a.jsx)(b,{label:"Binary Path",children:(0,a.jsx)(j,{value:q.engines?.claude?.bin??"",onChange:e=>ei(["engines","claude","bin"],e),placeholder:"claude"})}),(0,a.jsx)(b,{label:"Model",children:(0,a.jsx)(f,{value:q.engines?.claude?.model??"opus",onChange:e=>ei(["engines","claude","model"],e),options:[{value:"opus",label:"Opus (claude-opus-4-6)"},{value:"sonnet",label:"Sonnet (claude-sonnet-4-6)"},{value:"haiku",label:"Haiku (claude-haiku-4-5)"}]})}),(0,a.jsx)(b,{label:"Effort Level",children:(0,a.jsx)(f,{value:q.engines?.claude?.effortLevel??"default",onChange:e=>ei(["engines","claude","effortLevel"],e),options:[{value:"default",label:"Default"},{value:"low",label:"Low"},{value:"medium",label:"Medium"},{value:"high",label:"High"}]})}),(0,a.jsx)("div",{className:"border-t border-[var(--separator)] mt-[var(--space-3)] pt-[var(--space-3)]"}),(0,a.jsx)("div",{className:"text-[length:var(--text-caption1)] font-[var(--weight-semibold)] text-[var(--text-tertiary)] mb-[var(--space-2)]",children:"Codex"}),(0,a.jsx)(b,{label:"Binary Path",children:(0,a.jsx)(j,{value:q.engines?.codex?.bin??"",onChange:e=>ei(["engines","codex","bin"],e),placeholder:"codex"})}),(0,a.jsx)(b,{label:"Model",children:(0,a.jsx)(f,{value:q.engines?.codex?.model??"gpt-5.4",onChange:e=>ei(["engines","codex","model"],e),options:[{value:"gpt-5.4",label:"GPT-5.4"},{value:"gpt-5.3-codex",label:"GPT-5.3 Codex"},{value:"gpt-5.2-codex",label:"GPT-5.2 Codex"},{value:"gpt-5.2",label:"GPT-5.2"},{value:"gpt-5.1-codex-max",label:"GPT-5.1 Codex Max"},{value:"gpt-5.1-codex-mini",label:"GPT-5.1 Codex Mini"}]})}),(0,a.jsx)(b,{label:"Effort Level",children:(0,a.jsx)(f,{value:q.engines?.codex?.effortLevel??"default",onChange:e=>ei(["engines","codex","effortLevel"],e),options:[{value:"default",label:"Default"},{value:"low",label:"Low"},{value:"medium",label:"Medium"},{value:"high",label:"High"},{value:"xhigh",label:"Extra High"}]})})]}),(0,a.jsxs)(g,{title:"セッション",children:[(0,a.jsx)(b,{label:"Interrupt on New Message",children:(0,a.jsx)(y,{checked:q.sessions?.interruptOnNewMessage??!0,onChange:e=>ei(["sessions","interruptOnNewMessage"],e)})}),(0,a.jsx)("div",{className:"text-[length:var(--text-caption1)] text-[var(--label-secondary)] mt-[4px]",children:"When enabled, sending a new message to a running session will stop the current agent and start processing your new message immediately. When disabled, messages are queued."}),(0,a.jsx)("div",{className:"border-t border-[var(--separator)] mt-[var(--space-3)] pt-[var(--space-3)]"}),(0,a.jsx)(b,{label:"When Claude Hits Usage Limit",children:(0,a.jsx)(f,{value:q.sessions?.rateLimitStrategy??"fallback",onChange:e=>ei(["sessions","rateLimitStrategy"],e),options:[{value:"wait",label:"Wait & Auto-Resume"},{value:"fallback",label:"Switch to GPT (Codex)"}]})}),(0,a.jsx)("div",{className:"text-[length:var(--text-caption1)] text-[var(--label-secondary)] mt-[4px]",children:'"Wait" pauses the session and continues automatically when Claude resets. "Switch" answers immediately using GPT, then returns to Claude once the reset window passes.'})]}),(0,a.jsxs)(g,{title:"コネクタ",children:[(0,a.jsx)("div",{className:"text-[length:var(--text-caption1)] font-[var(--weight-semibold)] text-[var(--text-tertiary)] mb-[var(--space-2)]",children:"Slack"}),(0,a.jsx)(b,{label:"App Token",children:(0,a.jsx)(j,{type:"password",value:q.connectors?.slack?.appToken??"",onChange:e=>ei(["connectors","slack","appToken"],e),placeholder:"xapp-..."})}),(0,a.jsx)(b,{label:"Bot Token",children:(0,a.jsx)(j,{type:"password",value:q.connectors?.slack?.botToken??"",onChange:e=>ei(["connectors","slack","botToken"],e),placeholder:"xoxb-..."})}),(0,a.jsx)(b,{label:"チャンネルでセッションを共有",children:(0,a.jsx)(y,{checked:q.connectors?.slack?.shareSessionInChannel??!1,onChange:e=>ei(["connectors","slack","shareSessionInChannel"],e)})}),(0,a.jsx)(b,{label:"許可ユーザー",children:(0,a.jsx)(j,{value:Array.isArray(q.connectors?.slack?.allowFrom)?q.connectors?.slack?.allowFrom?.join(", "):q.connectors?.slack?.allowFrom??"",onChange:e=>ei(["connectors","slack","allowFrom"],e.trim()?e.split(",").map(e=>e.trim()).filter(Boolean):void 0),placeholder:"U123, U456"})}),(0,a.jsx)(b,{label:"起動時に古いメッセージを無視",children:(0,a.jsx)(y,{checked:q.connectors?.slack?.ignoreOldMessagesOnBoot??!0,onChange:e=>ei(["connectors","slack","ignoreOldMessagesOnBoot"],e)})}),(0,a.jsx)("div",{className:"text-[length:var(--text-caption1)] font-[var(--weight-semibold)] text-[var(--text-tertiary)] mt-[var(--space-3)] mb-[var(--space-2)]",children:"空気読みトリアージ"}),(0,a.jsx)(b,{label:"有効化",children:(0,a.jsx)(y,{checked:q.connectors?.slack?.triage?.enabled??!1,onChange:e=>ei(["connectors","slack","triage","enabled"],e)})}),(0,a.jsx)(b,{label:"Model",children:(0,a.jsx)(j,{value:q.connectors?.slack?.triage?.model??"",onChange:e=>ei(["connectors","slack","triage","model"],e.trim()||void 0),placeholder:"claude-haiku-4-5"})}),(0,a.jsx)(b,{label:"タイムアウト (ms)",children:(0,a.jsx)(j,{type:"number",value:q.connectors?.slack?.triage?.timeoutMs!==void 0?String(q.connectors.slack.triage.timeoutMs):"",onChange:e=>ei(["connectors","slack","triage","timeoutMs"],e.trim()?Number(e):void 0),placeholder:"20000"})}),(0,a.jsx)(b,{label:"スレッド文脈の取得件数",children:(0,a.jsx)(j,{type:"number",value:q.connectors?.slack?.triage?.threadContextLimit!==void 0?String(q.connectors.slack.triage.threadContextLimit):"",onChange:e=>ei(["connectors","slack","triage","threadContextLimit"],e.trim()?Number(e):void 0),placeholder:"10"})}),(0,a.jsx)(b,{label:"ペルソナ(任意)",children:(0,a.jsx)(j,{value:q.connectors?.slack?.triage?.persona??"",onChange:e=>ei(["connectors","slack","triage","persona"],e.trim()||void 0),placeholder:"Short description of what this bot is good at"})}),(0,a.jsx)(b,{label:"バイナリパス上書き(任意)",children:(0,a.jsx)(j,{value:q.connectors?.slack?.triage?.bin??"",onChange:e=>ei(["connectors","slack","triage","bin"],e.trim()||void 0),placeholder:"claude"})}),(0,a.jsx)("div",{className:"border-t border-[var(--separator)] mt-[var(--space-3)] pt-[var(--space-3)]"}),(0,a.jsx)("div",{className:"text-[length:var(--text-caption1)] font-[var(--weight-semibold)] text-[var(--text-tertiary)] mb-[var(--space-2)]",children:"Discord"}),(0,a.jsx)(b,{label:"Bot Token",children:(0,a.jsx)(j,{type:"password",value:q.connectors?.discord?.botToken??"",onChange:e=>ei(["connectors","discord","botToken"],e),placeholder:"Bot token..."})}),(0,a.jsx)(b,{label:"Allow From",children:(0,a.jsx)(j,{value:Array.isArray(q.connectors?.discord?.allowFrom)?q.connectors?.discord?.allowFrom?.join(", "):q.connectors?.discord?.allowFrom??"",onChange:e=>ei(["connectors","discord","allowFrom"],e.trim()?e.split(",").map(e=>e.trim()).filter(Boolean):void 0),placeholder:"User IDs, comma-separated (optional)"})}),(0,a.jsx)(b,{label:"Guild ID",children:(0,a.jsx)(j,{value:q.connectors?.discord?.guildId??"",onChange:e=>ei(["connectors","discord","guildId"],e.trim()||void 0),placeholder:"Server/Guild ID (optional)"})}),(0,a.jsx)(b,{label:"Channel ID",children:(0,a.jsx)(j,{value:q.connectors?.discord?.channelId??"",onChange:e=>ei(["connectors","discord","channelId"],e.trim()||void 0),placeholder:"Restrict to this channel (right-click → Copy Channel ID)"})}),(0,a.jsx)("div",{className:"border-t border-[var(--separator)] mt-[var(--space-3)] pt-[var(--space-3)]"}),(0,a.jsx)("div",{className:"text-[length:var(--text-caption1)] font-[var(--weight-semibold)] text-[var(--text-tertiary)] mb-[var(--space-2)]",children:"Telegram"}),(0,a.jsx)(b,{label:"Bot Token",children:(0,a.jsx)(j,{type:"password",value:q.connectors?.telegram?.botToken??"",onChange:e=>ei(["connectors","telegram","botToken"],e),placeholder:"123456:ABC-DEF..."})}),(0,a.jsx)(b,{label:"Allow From (User IDs)",children:(0,a.jsx)(j,{value:Array.isArray(q.connectors?.telegram?.allowFrom)?q.connectors?.telegram?.allowFrom?.join(", "):"",onChange:e=>ei(["connectors","telegram","allowFrom"],e.trim()?e.split(",").map(e=>Number(e.trim())).filter(e=>!isNaN(e)):void 0),placeholder:"Telegram user IDs, comma-separated (optional)"})}),(0,a.jsx)(b,{label:"起動時に古いメッセージを無視",children:(0,a.jsx)(y,{checked:q.connectors?.telegram?.ignoreOldMessagesOnBoot??!0,onChange:e=>ei(["connectors","telegram","ignoreOldMessagesOnBoot"],e)})}),(0,a.jsx)("div",{className:"text-[length:var(--text-caption1)] font-[var(--weight-semibold)] text-[var(--text-tertiary)] mt-[var(--space-4)] mb-[var(--space-2)]",children:"WhatsApp"}),(0,a.jsx)("div",{className:"text-[length:var(--text-caption2)] text-[var(--text-tertiary)] mb-[var(--space-3)]",children:"On first start, scan the QR code below with your WhatsApp app to connect. Credentials are cached for subsequent runs."}),(0,a.jsx)(b,{label:"Auth Directory",children:(0,a.jsx)(j,{value:q.connectors?.whatsapp?.authDir??"",onChange:e=>ei(["connectors","whatsapp","authDir"],e.trim()||void 0),placeholder:"Default: ~/.jinn/.whatsapp-auth"})}),(0,a.jsx)(b,{label:"Allow From",children:(0,a.jsx)(j,{value:Array.isArray(q.connectors?.whatsapp?.allowFrom)?q.connectors?.whatsapp?.allowFrom?.join(", "):"",onChange:e=>ei(["connectors","whatsapp","allowFrom"],e.trim()?e.split(",").map(e=>e.trim()).filter(Boolean):void 0),placeholder:"447700900000@s.whatsapp.net, ... (optional)"})}),ea&&(0,a.jsxs)("div",{className:"mt-[var(--space-3)] flex flex-col items-center gap-[var(--space-2)]",children:[(0,a.jsx)("div",{className:"text-[length:var(--text-caption1)] font-semibold text-[var(--text-secondary)]",children:"Scan with WhatsApp to connect"}),(0,a.jsx)("img",{src:ea,alt:"WhatsApp QR Code",className:"w-[200px] h-[200px] rounded-[var(--radius-md)] border border-[var(--separator)] bg-white p-[8px]"}),(0,a.jsx)("div",{className:"text-[length:var(--text-caption2)] text-[var(--text-tertiary)]",children:"Open WhatsApp → Linked Devices → Link a Device"})]}),q.connectors?.whatsapp&&"ok"===er&&(0,a.jsx)("div",{className:"mt-[var(--space-2)] text-[length:var(--text-caption1)] text-[var(--system-green)] font-semibold",children:"✓ Connected"}),(0,a.jsx)("div",{className:"border-t border-[var(--separator)] mt-[var(--space-3)] pt-[var(--space-3)]"}),(0,a.jsxs)("div",{className:"flex items-center justify-between mb-[var(--space-2)]",children:[(0,a.jsx)("div",{className:"text-[length:var(--text-caption1)] font-[var(--weight-semibold)] text-[var(--text-tertiary)]",children:"Connector Instances"}),(0,a.jsxs)("div",{className:"flex items-center gap-[var(--space-2)]",children:[(0,a.jsxs)("button",{className:"text-[length:var(--text-caption1)] font-[var(--weight-semibold)] text-[var(--text-secondary)] hover:text-[var(--accent)] transition-colors flex items-center gap-1",onClick:async()=>{try{let e=await h.api.reloadConnectors(),a=[];e.stopped.length&&a.push(`Stopped: ${e.stopped.join(", ")}`),e.started.length&&a.push(`Started: ${e.started.join(", ")}`),e.errors.length&&a.push(`Errors: ${e.errors.join(", ")}`),alert(a.length?a.join("\n"):"No connector instances to reload")}catch{alert("Failed to reload connectors")}},children:[(0,a.jsx)(n,{size:12}),"Reload"]}),(0,a.jsx)("button",{className:"text-[length:var(--text-caption1)] font-[var(--weight-semibold)] text-[var(--accent)] hover:opacity-80 transition-opacity",onClick:()=>{let e=[...q.connectors?.instances||[]],a=`discord-${e.length+1}`;e.push({id:a,type:"discord"}),ei(["connectors","instances"],e)},children:"+ Add Instance"})]})]}),(0,a.jsx)("div",{className:"text-[length:var(--text-caption2)] text-[var(--text-tertiary)] mb-[var(--space-3)]",children:"Add multiple connector instances of the same type, each bound to a specific employee."}),(q.connectors?.instances||[]).map((e,t)=>(0,a.jsxs)("div",{className:"mb-[var(--space-4)] p-[var(--space-3)] rounded-[var(--radius-md)] border border-[var(--separator)] bg-[var(--bg-secondary)]",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between mb-[var(--space-2)]",children:[(0,a.jsx)("div",{className:"text-[length:var(--text-subheadline)] font-[var(--weight-semibold)] text-[var(--text-primary)]",children:e.id||`Instance ${t+1}`}),(0,a.jsx)("button",{className:"text-[var(--system-red)] hover:opacity-80 transition-opacity p-[var(--space-1)]",onClick:()=>{let e=[...q.connectors?.instances||[]];e.splice(t,1),ei(["connectors","instances"],e.length>0?e:void 0)},children:(0,a.jsx)(l.Trash2,{size:14})})]}),(0,a.jsx)(b,{label:"Instance ID",children:(0,a.jsx)(j,{value:e.id??"",onChange:e=>{let a=[...q.connectors?.instances||[]];a[t]={...a[t],id:e},ei(["connectors","instances"],a)},placeholder:"e.g. discord-vox"})}),(0,a.jsx)(b,{label:"Type",children:(0,a.jsx)(f,{value:e.type??"discord",onChange:e=>{let a=[...q.connectors?.instances||[]];a[t]={...a[t],type:e},ei(["connectors","instances"],a)},options:[{value:"discord",label:"Discord"},{value:"slack",label:"Slack"},{value:"whatsapp",label:"WhatsApp"}]})}),(0,a.jsx)(b,{label:"Employee",children:(0,a.jsx)(f,{value:e.employee??"",onChange:e=>{let a=[...q.connectors?.instances||[]];a[t]={...a[t],employee:e||void 0},ei(["connectors","instances"],a)},options:[{value:"",label:"Default (COO)"},...el.map(e=>({value:e.name,label:e.displayName}))]})}),("discord"===e.type||!e.type)&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(b,{label:"Bot Token",children:(0,a.jsx)(j,{type:"password",value:e.botToken??"",onChange:e=>{let a=[...q.connectors?.instances||[]];a[t]={...a[t],botToken:e},ei(["connectors","instances"],a)},placeholder:"Bot token..."})}),(0,a.jsx)(b,{label:"Guild ID",children:(0,a.jsx)(j,{value:e.guildId??"",onChange:e=>{let a=[...q.connectors?.instances||[]];a[t]={...a[t],guildId:e.trim()||void 0},ei(["connectors","instances"],a)},placeholder:"Server/Guild ID"})}),(0,a.jsx)(b,{label:"Channel ID",children:(0,a.jsx)(j,{value:e.channelId??"",onChange:e=>{let a=[...q.connectors?.instances||[]];a[t]={...a[t],channelId:e.trim()||void 0},ei(["connectors","instances"],a)},placeholder:"Restrict to channel (optional)"})}),(0,a.jsx)(b,{label:"Allow From",children:(0,a.jsx)(j,{value:Array.isArray(e.allowFrom)?e.allowFrom.join(", "):e.allowFrom??"",onChange:e=>{let a=[...q.connectors?.instances||[]];a[t]={...a[t],allowFrom:e.trim()?e.split(",").map(e=>e.trim()).filter(Boolean):void 0},ei(["connectors","instances"],a)},placeholder:"User IDs, comma-separated (optional)"})})]}),"slack"===e.type&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(b,{label:"App Token",children:(0,a.jsx)(j,{type:"password",value:e.appToken??"",onChange:e=>{let a=[...q.connectors?.instances||[]];a[t]={...a[t],appToken:e},ei(["connectors","instances"],a)},placeholder:"xapp-..."})}),(0,a.jsx)(b,{label:"Bot Token",children:(0,a.jsx)(j,{type:"password",value:e.botToken??"",onChange:e=>{let a=[...q.connectors?.instances||[]];a[t]={...a[t],botToken:e},ei(["connectors","instances"],a)},placeholder:"xoxb-..."})})]}),"whatsapp"===e.type&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(b,{label:"Auth Directory",children:(0,a.jsx)(j,{value:e.authDir??"",onChange:e=>{let a=[...q.connectors?.instances||[]];a[t]={...a[t],authDir:e.trim()||void 0},ei(["connectors","instances"],a)},placeholder:"Default: ~/.jinn/.whatsapp-auth"})}),(0,a.jsx)(b,{label:"Allow From",children:(0,a.jsx)(j,{value:Array.isArray(e.allowFrom)?e.allowFrom.join(", "):"",onChange:e=>{let a=[...q.connectors?.instances||[]];a[t]={...a[t],allowFrom:e.trim()?e.split(",").map(e=>e.trim()).filter(Boolean):void 0},ei(["connectors","instances"],a)},placeholder:"Phone JIDs, comma-separated"})})]})]},e.id||t)),(0,a.jsx)("div",{className:"border-t border-[var(--separator)] mt-[var(--space-3)] pt-[var(--space-3)]"}),(0,a.jsx)("div",{className:"text-[length:var(--text-caption1)] font-[var(--weight-semibold)] text-[var(--text-tertiary)] mb-[var(--space-2)]",children:"Web UI"}),(0,a.jsx)("div",{className:"text-[length:var(--text-caption2)] text-[var(--text-tertiary)]",children:"Web conversations use queued one-shot resume flow for both engines."})]}),(0,a.jsxs)(g,{title:"Cron",children:[(0,a.jsx)("div",{className:"text-[length:var(--text-caption1)] font-[var(--weight-semibold)] text-[var(--text-tertiary)] mb-[var(--space-2)]",children:"Default Delivery"}),(0,a.jsx)("div",{className:"text-[length:var(--text-caption2)] text-[var(--text-tertiary)] mb-[var(--space-3)]",children:"When a cron job has no delivery configured, results will be sent here."}),(0,a.jsx)(b,{label:"Connector",children:(0,a.jsx)(f,{value:q.cron?.defaultDelivery?.connector??"",onChange:e=>ei(["cron","defaultDelivery","connector"],e||void 0),options:[{value:"",label:"None (fire & forget)"},{value:"web",label:"Web"},{value:"slack",label:"Slack"}]})}),q.cron?.defaultDelivery?.connector&&(0,a.jsx)(b,{label:"Channel",children:(0,a.jsx)(j,{value:q.cron?.defaultDelivery?.channel??"",onChange:e=>ei(["cron","defaultDelivery","channel"],e),placeholder:"#general"})})]}),(0,a.jsxs)(g,{title:"Logging",children:[(0,a.jsx)(b,{label:"Level",children:(0,a.jsx)(f,{value:q.logging?.level??"info",onChange:e=>ei(["logging","level"],e),options:[{value:"debug",label:"Debug"},{value:"info",label:"Info"},{value:"warn",label:"Warn"},{value:"error",label:"Error"}]})}),(0,a.jsx)(b,{label:"Stdout",children:(0,a.jsx)(y,{checked:q.logging?.stdout??!0,onChange:e=>ei(["logging","stdout"],e)})}),(0,a.jsx)(b,{label:"File Logging",children:(0,a.jsx)(y,{checked:q.logging?.file??!1,onChange:e=>ei(["logging","file"],e)})})]}),(0,a.jsx)(C,{}),(0,a.jsxs)("div",{className:"flex justify-end gap-[var(--space-3)] mb-[var(--space-6)]",children:[(0,a.jsxs)("button",{onClick:()=>eo(),className:"px-[var(--space-4)] py-[var(--space-2)] rounded-[var(--radius-md)] bg-[var(--fill-tertiary)] text-[var(--text-secondary)] border-none cursor-pointer text-[length:var(--text-footnote)] font-[var(--weight-medium)] inline-flex items-center gap-[6px]",children:[(0,a.jsx)(n,{size:14}),"Reload"]}),(0,a.jsxs)("button",{onClick:function(){X(!0),ee(null),h.api.updateConfig(q).then(()=>ee({type:"success",message:"Settings saved successfully"})).catch(e=>ee({type:"error",message:`Failed to save: ${e.message}`})).finally(()=>X(!1))},disabled:Y,className:"px-[var(--space-5)] py-[var(--space-2)] rounded-[var(--radius-md)] bg-[var(--accent)] text-[var(--accent-contrast)] border-none text-[length:var(--text-footnote)] font-[var(--weight-semibold)] inline-flex items-center gap-[6px] transition-all duration-150 ease-[var(--ease-smooth)]",style:{cursor:Y?"wait":"pointer",opacity:Y?.7:1},children:[(0,a.jsx)(o,{size:14}),Y?"Saving...":"Save Config"]})]})]}),(0,a.jsx)(g,{title:"Reset",children:(0,a.jsxs)("div",{className:"flex items-center justify-center gap-[var(--space-3)] flex-wrap",children:[(0,a.jsxs)("button",{onClick:()=>{localStorage.removeItem("jinn-onboarded"),window.location.reload()},className:"px-[var(--space-5)] py-[var(--space-2)] rounded-[var(--radius-md)] bg-[var(--accent)] text-[var(--accent-contrast)] border-none cursor-pointer text-[length:var(--text-footnote)] font-[var(--weight-semibold)] transition-all duration-150 ease-[var(--ease-spring)] inline-flex items-center gap-[var(--space-2)]",children:[(0,a.jsx)(n,{size:14}),"Re-run Onboarding Wizard"]}),(0,a.jsxs)("button",{onClick:()=>{window.confirm("Reset all settings to defaults?")&&(localStorage.removeItem("jinn-settings"),localStorage.removeItem("jinn-theme"),D(),window.location.reload())},className:"px-[var(--space-5)] py-[var(--space-2)] rounded-[var(--radius-md)] bg-[var(--system-red)] text-white border-none cursor-pointer text-[length:var(--text-footnote)] font-[var(--weight-semibold)] transition-all duration-150 ease-[var(--ease-spring)] inline-flex items-center gap-[var(--space-2)]",children:[(0,a.jsx)(l.Trash2,{size:14}),"Reset All Settings"]})]})})]})})})}],15857)}]);
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,51090,e=>{"use strict";var t=e.i(98181),a=e.i(25007),r=e.i(9156),s=e.i(93716);function n(e,t,a){let r=e[t];return r?{...e,[t]:{...r,...a,updatedAt:Date.now()}}:e}var i=e.i(58843),l=e.i(53104);let o=[{id:"backlog",title:"Backlog"},{id:"todo",title:"To Do"},{id:"in-progress",title:"In Progress"},{id:"review",title:"Review"},{id:"done",title:"Done"}],d={low:"var(--system-green)",medium:"var(--system-orange)",high:"var(--system-red)"};function c({column:e,tickets:s,onDrop:n,onCreateTicket:i,renderTicket:l}){let[o,d]=(0,a.useState)(!1);return(0,t.jsxs)("div",{onDragOver:function(e){e.preventDefault(),e.dataTransfer.dropEffect="move",d(!0)},onDragLeave:function(e){e.currentTarget.contains(e.relatedTarget)||d(!1)},onDrop:function(t){t.preventDefault(),d(!1);let a=t.dataTransfer.getData("text/plain");a&&n(a,e.id)},className:"flex flex-col min-w-[280px] max-w-[320px] flex-[1_0_280px] h-full rounded-[var(--radius-lg)] transition-[background,border-color] duration-200 ease-[var(--ease-smooth)]",style:{background:o?"var(--fill-secondary)":"var(--fill-tertiary)",border:o?"2px dashed var(--accent)":"2px dashed transparent"},children:[(0,t.jsxs)("div",{className:"flex items-center justify-between p-[var(--space-3)_var(--space-4)] shrink-0",children:[(0,t.jsxs)("div",{className:"flex items-center gap-[var(--space-2)]",children:[(0,t.jsx)("span",{className:"text-[length:var(--text-footnote)] font-[var(--weight-semibold)] text-[var(--text-primary)] tracking-[-0.01em]",children:e.title}),(0,t.jsx)("span",{className:"text-[length:var(--text-caption2)] font-[var(--weight-medium)] text-[var(--text-tertiary)] bg-[var(--fill-secondary)] rounded-[var(--radius-sm)] py-px px-1.5 min-w-[20px] text-center",children:s.length})]}),"backlog"===e.id&&i&&(0,t.jsx)("button",{onClick:i,"aria-label":"Create new ticket",className:"flex items-center justify-center w-6 h-6 rounded-[var(--radius-sm)] border-none bg-transparent text-[var(--text-secondary)] cursor-pointer p-0 transition-colors duration-150 ease-[var(--ease-smooth)]",children:(0,t.jsx)(r.Plus,{size:16})})]}),(0,t.jsxs)("div",{className:"flex-1 overflow-y-auto px-[var(--space-2)] pb-[var(--space-2)] flex flex-col gap-[var(--space-2)]",children:[s.map(e=>(0,t.jsx)("div",{children:l(e)},e.id)),0===s.length&&(0,t.jsx)("div",{className:"py-[var(--space-8)] px-[var(--space-4)] text-center text-[length:var(--text-caption1)] text-[var(--text-tertiary)]",children:"No tickets"})]})]})}var p=e.i(38524);let x={low:"Low",medium:"Med",high:"High"};function v({ticket:e,assigneeName:r,onClick:s,onDelete:n}){let[i,l]=(0,a.useState)(!1),[o,c]=(0,a.useState)(!1);return(0,t.jsxs)("div",{draggable:!0,onDragStart:function(t){t.dataTransfer.setData("text/plain",e.id),t.dataTransfer.effectAllowed="move",l(!0)},onDragEnd:function(){l(!1)},onClick:s,onMouseEnter:()=>c(!0),onMouseLeave:()=>c(!1),role:"button",tabIndex:0,onKeyDown:e=>{("Enter"===e.key||" "===e.key)&&(e.preventDefault(),s())},className:"relative bg-[var(--material-regular)] rounded-[var(--radius-md)] p-[var(--space-3)] border border-[var(--separator)] flex flex-col gap-[var(--space-2)] select-none transition-opacity duration-150 ease-[var(--ease-smooth)]",style:{cursor:i?"grabbing":"grab",opacity:i?.6:1,borderLeft:`3px solid ${d[e.priority]}`},children:[o&&n&&(0,t.jsx)("button",{onClick:e=>{e.stopPropagation(),n()},"aria-label":"Delete ticket",title:"Delete ticket",className:"absolute top-1.5 right-1.5 w-6 h-6 rounded-[var(--radius-sm)] flex items-center justify-center text-[var(--system-red)] border-none cursor-pointer p-0 z-[1]",style:{background:"color-mix(in srgb, var(--system-red) 12%, transparent)"},children:(0,t.jsx)(p.Trash2,{size:13})}),(0,t.jsxs)("div",{className:"flex items-start gap-[var(--space-2)]",children:[(0,t.jsxs)("span",{className:"inline-flex items-center gap-[3px] text-[length:var(--text-caption2)] font-semibold shrink-0 mt-0.5",style:{color:d[e.priority]},children:[(0,t.jsx)("span",{className:"w-1.5 h-1.5 rounded-full",style:{background:d[e.priority]}}),x[e.priority]]}),(0,t.jsx)("span",{className:"text-[length:var(--text-footnote)] font-[var(--weight-semibold)] text-[var(--text-primary)] leading-[1.3] line-clamp-2 overflow-hidden break-words",children:e.title})]}),e.description&&(0,t.jsx)("div",{className:"text-[length:var(--text-caption2)] text-[var(--text-tertiary)] leading-[1.4] line-clamp-2 overflow-hidden break-words",children:e.description}),(0,t.jsxs)("div",{className:"flex items-center gap-[var(--space-2)] flex-wrap",children:[r&&(0,t.jsx)("span",{className:"text-[length:var(--text-caption2)] font-[var(--weight-medium)] text-[var(--text-secondary)] bg-[var(--fill-tertiary)] rounded-[var(--radius-sm)] py-px px-[var(--space-2)] leading-[1.5]",children:r}),(0,t.jsx)("span",{className:"text-[length:var(--text-caption2)] text-[var(--text-quaternary)] ml-auto",title:new Date(e.createdAt).toLocaleString(),children:function(e){let t=Math.floor((Date.now()-e)/6e4);if(t<1)return"just now";if(t<60)return`${t}m ago`;let a=Math.floor(t/60);if(a<24)return`${a}h ago`;let r=Math.floor(a/24);return r<30?`${r}d ago`:`${Math.floor(r/30)}mo ago`}(e.createdAt)})]})]})}function u({tickets:e,employees:a,onTicketClick:r,onMoveTicket:s,onCreateTicket:n,onDeleteTicket:i,filterEmployeeId:l}){return(0,t.jsx)("div",{style:{display:"flex",gap:"var(--space-3)",height:"100%",overflowX:"auto",overflowY:"hidden",padding:"var(--space-2) 0",WebkitOverflowScrolling:"touch"},children:o.map(o=>{var d;let p=(d=o.id,Object.values(e).filter(e=>e.status===d).sort((e,t)=>t.updatedAt-e.updatedAt)),x=l?p.filter(e=>e.assigneeId===l):p;return(0,t.jsx)(c,{column:o,tickets:x,onDrop:s,onCreateTicket:"backlog"===o.id?n:void 0,renderTicket:e=>{let s=a.find(t=>t.name===e.assigneeId);return(0,t.jsx)(v,{ticket:e,assigneeName:s?.displayName??null,onClick:()=>r(e),onDelete:i?()=>i(e):void 0})}},o.id)})})}let m={executive:"Exec",manager:"Mgr",senior:"Sr",employee:""};function h({employees:e,value:r,onChange:s}){let[n,i]=(0,a.useState)(!1),[l,o]=(0,a.useState)(""),[d,c]=(0,a.useState)(0),p=(0,a.useRef)(null),x=(0,a.useRef)(null),v=(0,a.useRef)(null),u=e.find(e=>e.name===r)??null,g=l.trim()?e.filter(e=>{let t=l.toLowerCase();return e.name.toLowerCase().includes(t)||e.displayName.toLowerCase().includes(t)||e.department.toLowerCase().includes(t)}):e,f=!l.trim()||"unassigned".includes(l.toLowerCase());(0,a.useEffect)(()=>{c(0)},[l]),(0,a.useEffect)(()=>{n?setTimeout(()=>x.current?.focus(),0):o("")},[n]),(0,a.useEffect)(()=>{if(n)return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e);function e(e){p.current&&!p.current.contains(e.target)&&i(!1)}},[n]),(0,a.useEffect)(()=>{if(!n||!v.current)return;let e=v.current.querySelectorAll("[data-employee-option]")[d];e&&e.scrollIntoView({block:"nearest"})},[d,n]);let y=+!!f+g.length,b=(0,a.useCallback)(e=>{if(!n){("Enter"===e.key||" "===e.key||"ArrowDown"===e.key)&&(e.preventDefault(),i(!0));return}if("Escape"===e.key){e.preventDefault(),i(!1);return}if("ArrowDown"===e.key)e.preventDefault(),c(e=>Math.min(e+1,y-1));else if("ArrowUp"===e.key)e.preventDefault(),c(e=>Math.max(e-1,0));else if("Enter"===e.key){if(e.preventDefault(),f&&0===d)s("");else{let e=f?d-1:d;g[e]&&s(g[e].name)}i(!1)}},[n,d,y,f,g,s]);return(0,t.jsxs)("div",{ref:p,className:"relative",onKeyDown:b,children:[(0,t.jsx)("button",{type:"button",onClick:()=>i(!n),"aria-haspopup":"listbox","aria-expanded":n,className:`w-full flex items-center gap-[var(--space-2)] py-2 pl-3 pr-9 text-[length:var(--text-body)] cursor-pointer text-left border border-[var(--separator)] rounded-[var(--radius-md)] bg-[var(--fill-tertiary)] bg-[url("data:image/svg+xml,%3Csvg_xmlns='http://www.w3.org/2000/svg'_width='12'_height='12'_viewBox='0_0_24_24'_fill='none'_stroke='%23888'_stroke-width='2'_stroke-linecap='round'_stroke-linejoin='round'%3E%3Cpath_d='m6_9_6_6_6-6'/%3E%3C/svg%3E")] bg-no-repeat bg-[position:right_12px_center] min-h-[40px] font-[inherit] ${u?"text-[var(--text-primary)]":"text-[var(--text-tertiary)]"}`,children:u?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("span",{className:"font-[var(--weight-medium)]",children:u.displayName}),m[u.rank]&&(0,t.jsx)("span",{className:"text-[length:var(--text-caption2)] text-[var(--text-tertiary)] bg-[var(--fill-secondary)] rounded-[var(--radius-sm)] px-1.5 py-px",children:m[u.rank]})]}):(0,t.jsx)("span",{children:"Unassigned"})}),n&&(0,t.jsxs)("div",{className:"absolute top-full left-0 right-0 mt-1 z-50 bg-[var(--material-regular)] border border-[var(--separator)] rounded-[var(--radius-md)] shadow-[0_8px_32px_rgba(0,0,0,0.3)] overflow-hidden",children:[(0,t.jsx)("div",{className:"pt-2 px-2 pb-1",children:(0,t.jsx)("input",{ref:x,type:"text",placeholder:"Search employees...",value:l,onChange:e=>o(e.target.value),className:"w-full py-1.5 px-2.5 text-[length:var(--text-footnote)] border border-[var(--separator)] rounded-[var(--radius-sm)] bg-[var(--fill-tertiary)] text-[var(--text-primary)] outline-none font-[inherit]"})}),(0,t.jsxs)("div",{ref:v,role:"listbox",className:"max-h-[280px] overflow-y-auto p-1",children:[f&&(0,t.jsxs)("div",{"data-employee-option":!0,role:"option","aria-selected":""===r,onClick:()=>void(s(""),i(!1)),className:`flex items-center gap-[var(--space-2)] py-2 px-2.5 rounded-[var(--radius-sm)] cursor-pointer transition-[background] duration-100 ${0===d?"bg-[var(--fill-secondary)]":"bg-transparent"}`,onMouseEnter:()=>c(0),children:[(0,t.jsx)("div",{className:"w-8 h-8 rounded-lg bg-[var(--fill-tertiary)] flex items-center justify-center text-sm text-[var(--text-tertiary)] shrink-0",children:"—"}),(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"text-[length:var(--text-footnote)] font-[var(--weight-medium)] text-[var(--text-secondary)]",children:"Unassigned"}),(0,t.jsx)("div",{className:"text-[length:var(--text-caption2)] text-[var(--text-tertiary)]",children:"No employee assigned"})]}),""===r&&(0,t.jsx)("span",{className:"ml-auto text-[var(--accent)] text-[13px] shrink-0",children:"✓"})]}),g.map((e,a)=>{let n=f?a+1:a,l=d===n,o=r===e.name;return(0,t.jsxs)("div",{"data-employee-option":!0,role:"option","aria-selected":o,onClick:()=>{s(e.name),i(!1)},onMouseEnter:()=>c(n),className:`flex items-center gap-[var(--space-2)] py-2 px-2.5 rounded-[var(--radius-sm)] cursor-pointer transition-[background] duration-100 ${l?"bg-[var(--fill-secondary)]":"bg-transparent"}`,children:[(0,t.jsx)("div",{className:"w-8 h-8 rounded-lg bg-[var(--accent)] flex items-center justify-center text-sm text-white font-semibold shrink-0",children:e.displayName.charAt(0).toUpperCase()}),(0,t.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,t.jsxs)("div",{className:"flex items-center gap-[var(--space-1)]",children:[(0,t.jsx)("span",{className:"text-[length:var(--text-footnote)] font-[var(--weight-semibold)] text-[var(--text-primary)] overflow-hidden text-ellipsis whitespace-nowrap",children:e.displayName}),m[e.rank]&&(0,t.jsx)("span",{className:"text-[length:var(--text-caption2)] text-[var(--text-tertiary)] bg-[var(--fill-secondary)] rounded-[var(--radius-sm)] px-1 shrink-0",children:m[e.rank]})]}),(0,t.jsx)("div",{className:"text-[length:var(--text-caption2)] text-[var(--text-tertiary)] overflow-hidden text-ellipsis whitespace-nowrap",children:e.department||e.name})]}),o&&(0,t.jsx)("span",{className:"text-[var(--accent)] text-[13px] shrink-0",children:"✓"})]},e.name)}),0===g.length&&!f&&(0,t.jsxs)("div",{className:"p-[var(--space-4)] text-center text-[length:var(--text-footnote)] text-[var(--text-tertiary)]",children:["No employees match “",l,"”"]})]})]})]})}let g=["low","medium","high"],f={low:"Low",medium:"Medium",high:"High"},y={title:"",description:"",priority:"medium",assigneeId:""};function b({open:e,onOpenChange:s,employees:n,onSubmit:i}){let[o,c]=(0,a.useState)(y),p=(0,a.useCallback)(()=>{c(y)},[]);return(0,t.jsx)(l.Dialog,{open:e,onOpenChange:function(e){e||p(),s(e)},children:(0,t.jsxs)(l.DialogContent,{showCloseButton:!0,className:"bg-[var(--bg)] border border-[var(--separator)] rounded-[var(--radius-lg)] shadow-[var(--shadow-card)] max-w-[480px]",children:[(0,t.jsxs)(l.DialogHeader,{children:[(0,t.jsx)(l.DialogTitle,{className:"text-[length:var(--text-title3)] font-[var(--weight-bold)] text-[var(--text-primary)]",children:"Create Ticket"}),(0,t.jsx)(l.DialogDescription,{className:"text-[length:var(--text-caption1)] text-[var(--text-tertiary)]",children:"Add a new ticket to the backlog."})]}),(0,t.jsxs)("form",{onSubmit:function(e){e.preventDefault(),o.title.trim()&&(i({title:o.title.trim(),description:o.description.trim(),priority:o.priority,assigneeId:o.assigneeId||null}),p(),s(!1))},className:"flex flex-col gap-[var(--space-4)]",children:[(0,t.jsxs)("div",{className:"flex flex-col gap-[var(--space-1)]",children:[(0,t.jsx)("label",{htmlFor:"ticket-title",className:"text-[length:var(--text-caption1)] font-[var(--weight-medium)] text-[var(--text-secondary)]",children:"Title"}),(0,t.jsx)("input",{id:"ticket-title",type:"text",placeholder:"What needs to be done?",value:o.title,onChange:e=>c(t=>({...t,title:e.target.value})),required:!0,autoFocus:!0,className:"text-[length:var(--text-body)] text-[var(--text-primary)] py-2 px-3 border border-[var(--separator)] rounded-[var(--radius-md)] bg-[var(--fill-tertiary)] outline-none font-[inherit]"})]}),(0,t.jsxs)("div",{className:"flex flex-col gap-[var(--space-1)]",children:[(0,t.jsx)("label",{htmlFor:"ticket-description",className:"text-[length:var(--text-caption1)] font-[var(--weight-medium)] text-[var(--text-secondary)]",children:"Description"}),(0,t.jsx)("textarea",{id:"ticket-description",placeholder:"Add details...",rows:3,value:o.description,onChange:e=>c(t=>({...t,description:e.target.value})),className:"text-[length:var(--text-body)] text-[var(--text-primary)] resize-y min-h-[72px] py-2 px-3 border border-[var(--separator)] rounded-[var(--radius-md)] bg-[var(--fill-tertiary)] outline-none font-[inherit]"})]}),(0,t.jsxs)("div",{className:"flex flex-col gap-[var(--space-2)]",children:[(0,t.jsx)("span",{className:"text-[length:var(--text-caption1)] font-[var(--weight-medium)] text-[var(--text-secondary)]",children:"Priority"}),(0,t.jsx)("div",{className:"flex gap-[var(--space-2)]",children:g.map(e=>{let a=o.priority===e;return(0,t.jsxs)("button",{type:"button",onClick:()=>c(t=>({...t,priority:e})),className:"flex-1 flex items-center justify-center gap-[var(--space-1)] py-[var(--space-2)] px-[var(--space-3)] rounded-[var(--radius-md)] cursor-pointer text-[length:var(--text-caption1)] font-[var(--weight-medium)] transition-all duration-150 ease-[var(--ease-smooth)]",style:{border:a?`2px solid ${d[e]}`:"2px solid var(--separator)",background:a?"var(--fill-tertiary)":"transparent",color:a?"var(--text-primary)":"var(--text-tertiary)"},children:[(0,t.jsx)("span",{className:"w-2 h-2 rounded-full shrink-0",style:{background:d[e]}}),f[e]]},e)})})]}),(0,t.jsxs)("div",{className:"flex flex-col gap-[var(--space-1)]",children:[(0,t.jsx)("label",{className:"text-[length:var(--text-caption1)] font-[var(--weight-medium)] text-[var(--text-secondary)]",children:"Assignee"}),(0,t.jsx)(h,{employees:n,value:o.assigneeId,onChange:e=>c(t=>({...t,assigneeId:e}))})]}),(0,t.jsxs)("button",{type:"submit",disabled:!o.title.trim(),className:"rounded-[var(--radius-md)] py-3 px-5 w-full text-[length:var(--text-body)] font-[var(--weight-semibold)] border-none flex items-center justify-center gap-[var(--space-2)] mt-[var(--space-2)] bg-[var(--accent)] text-white transition-opacity duration-150 ease-linear",style:{cursor:o.title.trim()?"pointer":"default",opacity:o.title.trim()?1:.5},children:[(0,t.jsx)(r.Plus,{size:16}),"Create Ticket"]})]})]})})}function j({priority:e}){return(0,t.jsxs)("span",{className:"inline-flex items-center gap-[var(--space-1)] text-[length:var(--text-caption2)] font-semibold uppercase tracking-[0.5px]",style:{color:d[e]},children:[(0,t.jsx)("span",{className:"w-1.5 h-1.5 rounded-full",style:{background:d[e]}}),e]})}function w({status:e}){let a=o.find(t=>t.id===e)?.title??e;return(0,t.jsx)("span",{className:"text-[length:var(--text-caption2)] font-semibold text-[var(--text-secondary)] bg-[var(--fill-tertiary)] px-[var(--space-2)] py-[2px] rounded-[var(--radius-sm)] uppercase tracking-[0.3px]",children:a})}function k({ticket:e,employees:r,onClose:s,onStatusChange:n,onAssigneeChange:i,onDelete:l}){let d=(0,a.useRef)(null);(0,a.useEffect)(()=>{function e(e){"Escape"===e.key&&s()}return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[s]),(0,a.useEffect)(()=>{d.current?.focus()},[]);let c=r.find(t=>t.name===e.assigneeId)??null;return(0,t.jsx)("div",{className:"absolute top-0 right-0 bottom-0 z-30",children:(0,t.jsxs)("div",{className:"w-[420px] max-w-[100vw] h-full bg-[var(--material-regular)] shadow-[-4px_0_24px_rgba(0,0,0,0.25)] flex flex-col",children:[(0,t.jsx)("div",{className:"h-[3px] bg-[var(--accent)] shrink-0"}),(0,t.jsxs)("div",{className:"flex-1 overflow-y-auto",children:[(0,t.jsx)("div",{className:"pt-[var(--space-4)] px-[var(--space-5)] pb-0 flex justify-end gap-[var(--space-2)]",children:(0,t.jsx)("button",{ref:d,onClick:s,"aria-label":"Close detail panel",className:"w-7 h-7 rounded-full flex items-center justify-center bg-[var(--fill-secondary)] text-[var(--text-secondary)] border-none cursor-pointer text-[length:var(--text-footnote)] transition-all duration-150 ease-[var(--ease-spring)]",children:"✕"})}),(0,t.jsxs)("div",{className:"pt-[var(--space-2)] px-[var(--space-5)] pb-[var(--space-4)]",children:[(0,t.jsx)("h2",{className:"text-[length:var(--text-title3)] font-bold tracking-[-0.3px] text-[var(--text-primary)] m-0 leading-[1.25]",children:e.title}),(0,t.jsxs)("div",{className:"flex items-center gap-[var(--space-3)] mt-[var(--space-2)]",children:[(0,t.jsx)(w,{status:e.status}),(0,t.jsx)(j,{priority:e.priority})]}),c?(0,t.jsxs)("div",{className:"flex items-center gap-[var(--space-2)] mt-[var(--space-3)] text-[length:var(--text-footnote)] text-[var(--text-secondary)]",children:[(0,t.jsx)("span",{children:c.displayName}),(0,t.jsx)("span",{className:"text-[length:var(--text-caption2)] text-[var(--text-tertiary)] bg-[var(--fill-secondary)] rounded-[var(--radius-sm)] px-1",children:c.rank})]}):(0,t.jsx)("div",{className:"mt-[var(--space-3)] text-[length:var(--text-footnote)] text-[var(--text-tertiary)] italic",children:"Unassigned"})]}),(0,t.jsxs)("div",{className:"px-[var(--space-5)] pb-[var(--space-4)]",children:[(0,t.jsx)("div",{className:"text-[length:var(--text-caption1)] font-semibold text-[var(--text-tertiary)] uppercase tracking-[0.5px] mb-[var(--space-2)]",children:"Move to"}),(0,t.jsx)("div",{className:"flex gap-[var(--space-1)] flex-wrap",children:o.map(a=>{let r=a.id===e.status;return(0,t.jsx)("button",{onClick:()=>{r||n(a.id)},disabled:r,className:"text-[length:var(--text-caption2)] font-semibold py-[3px] px-[var(--space-2)] rounded-[var(--radius-sm)] border-none transition-all duration-[120ms] ease-linear",style:{cursor:r?"default":"pointer",background:r?"var(--accent)":"var(--fill-tertiary)",color:r?"#fff":"var(--text-secondary)",opacity:r?1:.8},children:a.title},a.id)})})]}),(0,t.jsxs)("div",{className:"px-[var(--space-5)] pb-[var(--space-4)]",children:[(0,t.jsx)("div",{className:"text-[length:var(--text-caption1)] font-semibold text-[var(--text-tertiary)] uppercase tracking-[0.5px] mb-[var(--space-2)]",children:"Assignee"}),(0,t.jsx)(h,{employees:r,value:e.assigneeId??"",onChange:e=>i(e||null)})]}),e.description&&(0,t.jsxs)("div",{className:"px-[var(--space-5)] pb-[var(--space-4)]",children:[(0,t.jsx)("div",{className:"h-px bg-[var(--separator)] mb-[var(--space-3)]"}),(0,t.jsx)("div",{className:"text-[length:var(--text-caption1)] font-semibold text-[var(--text-tertiary)] uppercase tracking-[0.5px] mb-[var(--space-2)]",children:"Description"}),(0,t.jsx)("div",{className:"text-[length:var(--text-footnote)] text-[var(--text-secondary)] leading-[1.5] whitespace-pre-wrap",children:e.description})]})]}),(0,t.jsx)("div",{className:"shrink-0 py-[var(--space-2)] px-[var(--space-5)] pb-[var(--space-4)] border-t border-[var(--separator)]",children:(0,t.jsx)("button",{onClick:function(){l()},className:"w-full py-[var(--space-2)] px-[var(--space-3)] rounded-[var(--radius-md)] border border-[var(--system-red)] bg-transparent text-[var(--system-red)] text-[length:var(--text-footnote)] font-semibold cursor-pointer transition-all duration-[120ms] ease-linear",children:"Delete Ticket"})})]})})}function N({ticket:e,onConfirm:a,onCancel:r}){return(0,t.jsx)(l.Dialog,{open:!0,onOpenChange:e=>{e||r()},children:(0,t.jsxs)(l.DialogContent,{showCloseButton:!1,className:"bg-[var(--bg)] border border-[var(--separator)] rounded-[var(--radius-lg)] shadow-[var(--shadow-card)] max-w-[400px]",children:[(0,t.jsxs)(l.DialogHeader,{children:[(0,t.jsx)(l.DialogTitle,{className:"text-[length:var(--text-title3)] font-[var(--weight-bold)] text-[var(--text-primary)]",children:"Delete Ticket"}),(0,t.jsxs)(l.DialogDescription,{className:"text-[length:var(--text-footnote)] text-[var(--text-secondary)] leading-[1.5]",children:["Are you sure you want to delete “",e.title,"”? This cannot be undone."]})]}),(0,t.jsxs)(l.DialogFooter,{children:[(0,t.jsx)("button",{onClick:r,className:"px-[var(--space-4)] py-[var(--space-2)] rounded-[var(--radius-md)] border border-[var(--separator)] bg-transparent text-[var(--text-secondary)] text-[length:var(--text-footnote)] font-semibold cursor-pointer",children:"Cancel"}),(0,t.jsx)("button",{onClick:a,autoFocus:!0,className:"px-[var(--space-4)] py-[var(--space-2)] rounded-[var(--radius-md)] border-none bg-[var(--system-red)] text-white text-[length:var(--text-footnote)] font-semibold cursor-pointer",children:"Delete"})]})]})})}e.s(["default",0,function(){let[e,l]=(0,a.useState)({}),[o,d]=(0,a.useState)([]),[c,p]=(0,a.useState)([]),[x,v]=(0,a.useState)(!0),[m,h]=(0,a.useState)(null),[g,f]=(0,a.useState)(!1),[y,j]=(0,a.useState)(null),[w,D]=(0,a.useState)(null),[C,A]=(0,a.useState)(null);(0,a.useCallback)(async e=>{let t={};for(let a of Object.values(e)){let e=a.department;e&&(t[e]||(t[e]=[]),t[e].push({id:a.id,title:a.title,description:a.description||void 0,status:a.status,priority:a.priority,assignee:a.assigneeId||void 0,createdAt:new Date(a.createdAt).toISOString(),updatedAt:new Date(a.updatedAt).toISOString()}))}let a=Array.from(new Set([...Object.keys(t),...c])).map(async e=>{try{await s.api.updateDepartmentBoard(e,t[e]||[])}catch{}});await Promise.all(a)},[c]);let S=(0,a.useCallback)(()=>{v(!0),h(null),s.api.getOrg().then(async e=>{d(e.employees),p(e.departments);let t={};for(let a of e.departments)try{let e=await s.api.getDepartmentBoard(a);if(Array.isArray(e))for(let r of e){let e={todo:"todo",in_progress:"in-progress","in-progress":"in-progress",done:"done",backlog:"backlog",review:"review"}[r.status]||"todo",s={low:"low",medium:"medium",high:"high"}[r.priority||"medium"]||"medium";t[r.id]={id:r.id,title:r.title,description:r.description||"",status:e,priority:s,assigneeId:r.assignee||null,department:a,workState:"idle",createdAt:r.createdAt?new Date(r.createdAt).getTime():Date.now(),updatedAt:r.updatedAt?new Date(r.updatedAt).getTime():Date.now(),departmentId:a}}}catch{}l(t)}).catch(e=>h(e.message)).finally(()=>v(!1))},[]);(0,a.useEffect)(()=>{S()},[S]),(0,a.useEffect)(()=>{x||function(e){try{localStorage.setItem("jinn-kanban",JSON.stringify(e))}catch{}}(e)},[e,x]);let I=(0,a.useCallback)(async e=>{let t={};for(let a of Object.values(e))a.departmentId&&(t[a.departmentId]||(t[a.departmentId]=[]),t[a.departmentId].push(a));for(let e of c)t[e]||(t[e]=[]);await Promise.all(Object.entries(t).map(([e,t])=>{let a=t.map(e=>({id:e.id,title:e.title,description:e.description,status:e.status,priority:e.priority,assignee:e.assigneeId??void 0,createdAt:new Date(e.createdAt).toISOString(),updatedAt:new Date(e.updatedAt).toISOString()}));return s.api.updateDepartmentBoard(e,a).catch(()=>{})}))},[c]);function _(e,t){l(a=>{let r=n(a,e,{status:t});return I(r),r})}if((0,a.useEffect)(()=>{if(y&&e[y.id]){let t=e[y.id];t.updatedAt!==y.updatedAt&&j(t)}},[e,y]),m)return(0,t.jsx)(i.PageLayout,{children:(0,t.jsxs)("div",{className:"flex flex-col items-center justify-center h-full gap-[var(--space-4)] text-[var(--text-tertiary)]",children:[(0,t.jsxs)("div",{className:"rounded-[var(--radius-md)] bg-[color-mix(in_srgb,var(--system-red)_10%,transparent)] border border-[color-mix(in_srgb,var(--system-red)_30%,transparent)] px-[var(--space-4)] py-[var(--space-3)] text-[length:var(--text-body)] text-[var(--system-red)]",children:["Failed to load employees: ",m]}),(0,t.jsx)("button",{onClick:S,className:"px-[var(--space-4)] py-[var(--space-2)] rounded-[var(--radius-md)] bg-[var(--accent)] text-[var(--accent-contrast)] border-none cursor-pointer text-[length:var(--text-body)] font-[var(--weight-semibold)]",children:"Retry"})]})});let T=Object.keys(e).length,E=new Set(Object.values(e).map(e=>e.assigneeId).filter(Boolean)),O=o.filter(e=>E.has(e.name));return(0,t.jsx)(i.PageLayout,{children:(0,t.jsxs)("div",{className:"flex h-full relative bg-[var(--bg)]",children:[(0,t.jsxs)("div",{className:"flex-1 h-full flex flex-col min-w-0",children:[(0,t.jsxs)("div",{className:"px-[var(--space-5)] py-[var(--space-4)] flex items-center justify-between shrink-0 border-b border-[var(--separator)]",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h1",{className:"text-[length:var(--text-title2)] font-[var(--weight-bold)] text-[var(--text-primary)] m-0 tracking-[-0.3px]",children:"Kanban Board"}),(0,t.jsxs)("p",{className:"text-[length:var(--text-caption1)] text-[var(--text-tertiary)] mt-[2px] mb-0",children:[T," ticket",1!==T?"s":""]})]}),(0,t.jsx)(i.ToolbarActions,{children:(0,t.jsxs)("button",{onClick:()=>f(!0),className:"rounded-[var(--radius-md)] px-4 py-2 text-[length:var(--text-footnote)] font-[var(--weight-semibold)] border-none flex items-center gap-[var(--space-2)] bg-[var(--accent)] text-white cursor-pointer",children:[(0,t.jsx)(r.Plus,{size:16}),"New Ticket"]})})]}),O.length>0&&(0,t.jsxs)("div",{className:"flex items-center gap-[var(--space-2)] px-[var(--space-5)] py-[var(--space-2)] overflow-x-auto shrink-0",children:[(0,t.jsx)("button",{onClick:()=>D(null),className:`flex items-center gap-[var(--space-1)] px-3 py-1 rounded-full border-none text-[length:var(--text-caption1)] font-semibold cursor-pointer shrink-0 ${null===w?"bg-[var(--accent)] text-white":"bg-[var(--fill-tertiary)] text-[var(--text-secondary)]"}`,children:"All"}),O.map(e=>(0,t.jsx)("button",{onClick:()=>D(w===e.name?null:e.name),className:`flex items-center gap-[var(--space-1)] px-3 py-1 rounded-full border-none text-[length:var(--text-caption1)] font-semibold cursor-pointer shrink-0 ${w===e.name?"bg-[var(--accent)] text-white":"bg-[var(--fill-tertiary)] text-[var(--text-secondary)]"}`,children:e.displayName},e.name))]}),(0,t.jsx)("div",{className:"flex-1 px-[var(--space-3)] min-h-0",children:x?(0,t.jsx)("div",{className:"flex items-center justify-center h-full text-[var(--text-tertiary)] text-[length:var(--text-caption1)]",children:"Loading..."}):(0,t.jsx)(u,{tickets:e,employees:o,onTicketClick:function(e){j(e)},onMoveTicket:_,onCreateTicket:()=>f(!0),onDeleteTicket:e=>A(e),filterEmployeeId:w})})]}),y&&(0,t.jsx)("div",{className:"fixed inset-0 z-30 lg:hidden bg-black/50",onClick:()=>j(null)}),y&&(0,t.jsx)(k,{ticket:y,employees:o,onClose:()=>j(null),onStatusChange:e=>_(y.id,e),onAssigneeChange:e=>{var t;let a,r;return t=y.id,a=e?o.find(t=>t.name===e):null,r={assigneeId:e},void(a?.department&&(r.department=a.department),l(e=>{let a=n(e,t,r);return I(a),a}))},onDelete:()=>A(y)}),C&&(0,t.jsx)(N,{ticket:C,onConfirm:()=>{var e;return e=C.id,void(l(t=>{let a,r=(a={...t},delete a[e],a);return I(r),r}),j(null),A(null))},onCancel:()=>A(null)}),(0,t.jsx)(b,{open:g,onOpenChange:f,employees:o,onSubmit:function(e){let t=e.assigneeId?o.find(t=>t.name===e.assigneeId):null,a=t?.department||c[0]||null;l(t=>{var r;let s,n,i=(r={...e,status:"backlog",department:a,departmentId:a},s=crypto.randomUUID(),n=Date.now(),{...t,[s]:{...r,id:s,workState:"idle",createdAt:n,updatedAt:n,departmentId:r.departmentId??null}});return I(i),i})}})]})})}],51090)}]);