thursday-agent 0.15.0 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (660) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +3 -3
  3. package/.next/prerender-manifest.json +4 -4
  4. package/.next/server/app/_global-error/page.js.nft.json +1 -1
  5. package/.next/server/app/_global-error.html +1 -1
  6. package/.next/server/app/_global-error.rsc +1 -1
  7. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  8. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  9. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  10. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  11. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  12. package/.next/server/app/_not-found.html +1 -1
  13. package/.next/server/app/_not-found.rsc +13 -13
  14. package/.next/server/app/_not-found.segments/_full.segment.rsc +13 -13
  15. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +11 -11
  16. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  17. package/.next/server/app/api/artifact/route.js +8 -8
  18. package/.next/server/app/api/artifact/route.js.nft.json +1 -1
  19. package/.next/server/app/api/bot/memory/files/route.js.nft.json +1 -1
  20. package/.next/server/app/api/bot/memory/route.js +3 -3
  21. package/.next/server/app/api/bot/memory/route.js.nft.json +1 -1
  22. package/.next/server/app/api/bot/route.js +3 -3
  23. package/.next/server/app/api/bot/route.js.nft.json +1 -1
  24. package/.next/server/app/api/bot/thread/[id]/route.js +7 -7
  25. package/.next/server/app/api/bot/thread/[id]/route.js.nft.json +1 -1
  26. package/.next/server/app/api/bot/thread/route.js +6 -6
  27. package/.next/server/app/api/bot/thread/route.js.nft.json +1 -1
  28. package/.next/server/app/api/config/route.js +5 -5
  29. package/.next/server/app/api/config/route.js.nft.json +1 -1
  30. package/.next/server/app/api/events/route.js +1 -1
  31. package/.next/server/app/api/events/route.js.nft.json +1 -1
  32. package/.next/server/app/api/favicon/[host]/route.js +1 -1
  33. package/.next/server/app/api/favicon/[host]/route.js.nft.json +1 -1
  34. package/.next/server/app/api/file/[...path]/route.js.nft.json +1 -1
  35. package/.next/server/app/api/llm-model/catalog/route.js +7 -7
  36. package/.next/server/app/api/llm-model/catalog/route.js.nft.json +1 -1
  37. package/.next/server/app/api/llm-model/credits/route.js +7 -7
  38. package/.next/server/app/api/llm-model/credits/route.js.nft.json +1 -1
  39. package/.next/server/app/api/llm-model/route.js +4 -4
  40. package/.next/server/app/api/llm-model/route.js.nft.json +1 -1
  41. package/.next/server/app/api/llm-model/subscription/route.js +4 -4
  42. package/.next/server/app/api/llm-model/subscription/route.js.nft.json +1 -1
  43. package/.next/server/app/api/mcp/[name]/route.js.nft.json +1 -1
  44. package/.next/server/app/api/mcp/oauth/callback/route.js +2 -2
  45. package/.next/server/app/api/mcp/oauth/callback/route.js.nft.json +1 -1
  46. package/.next/server/app/api/mcp/route.js.nft.json +1 -1
  47. package/.next/server/app/api/mcp/tools/route.js.nft.json +1 -1
  48. package/.next/server/app/api/memory/edit/route.js +14 -15
  49. package/.next/server/app/api/memory/edit/route.js.nft.json +1 -1
  50. package/.next/server/app/api/memory/route.js.nft.json +1 -1
  51. package/.next/server/app/api/reach/route.js +18 -19
  52. package/.next/server/app/api/reach/route.js.nft.json +1 -1
  53. package/.next/server/app/api/routine/route.js +3 -3
  54. package/.next/server/app/api/routine/route.js.nft.json +1 -1
  55. package/.next/server/app/api/signins/route.js +1 -1
  56. package/.next/server/app/api/signins/route.js.nft.json +1 -1
  57. package/.next/server/app/api/skills/[source]/[name]/route.js +8 -5
  58. package/.next/server/app/api/skills/[source]/[name]/route.js.nft.json +1 -1
  59. package/.next/server/app/api/skills/route.js +8 -5
  60. package/.next/server/app/api/skills/route.js.nft.json +1 -1
  61. package/.next/server/app/api/thursday/call/route.js +7 -7
  62. package/.next/server/app/api/thursday/call/route.js.nft.json +1 -1
  63. package/.next/server/app/api/thursday/settings/route.js +7 -7
  64. package/.next/server/app/api/thursday/settings/route.js.nft.json +1 -1
  65. package/.next/server/app/api/thursday/text/route.js +15 -16
  66. package/.next/server/app/api/thursday/text/route.js.nft.json +1 -1
  67. package/.next/server/app/api/thursday/tool-call/route.js +12 -13
  68. package/.next/server/app/api/thursday/tool-call/route.js.nft.json +1 -1
  69. package/.next/server/app/api/workspace/files/route.js +7 -7
  70. package/.next/server/app/api/workspace/files/route.js.nft.json +1 -1
  71. package/.next/server/app/api/workspace/route.js +7 -7
  72. package/.next/server/app/api/workspace/route.js.nft.json +1 -1
  73. package/.next/server/app/artifact/[...path]/page/server-reference-manifest.json +3 -3
  74. package/.next/server/app/artifact/[...path]/page.js +4 -4
  75. package/.next/server/app/artifact/[...path]/page.js.nft.json +1 -1
  76. package/.next/server/app/artifact/[...path]/page_client-reference-manifest.js +1 -1
  77. package/.next/server/app/favicon.ico/route.js.nft.json +1 -1
  78. package/.next/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  79. package/.next/server/app/page/server-reference-manifest.json +60 -60
  80. package/.next/server/app/page.js +9 -9
  81. package/.next/server/app/page.js.nft.json +1 -1
  82. package/.next/server/app/page_client-reference-manifest.js +1 -1
  83. package/.next/server/chunks/[root-of-the-server]__00qyw01._.js +3 -0
  84. package/.next/server/chunks/[root-of-the-server]__03b09q0._.js +5 -0
  85. package/.next/server/chunks/[root-of-the-server]__03vunn6._.js +1 -1
  86. package/.next/server/chunks/{[root-of-the-server]__0adz-25._.js → [root-of-the-server]__05dp5tr._.js} +2 -2
  87. package/.next/server/chunks/[root-of-the-server]__05n-hql._.js +5 -0
  88. package/.next/server/chunks/[root-of-the-server]__06nspyt._.js +3 -0
  89. package/.next/server/chunks/[root-of-the-server]__0aijj66._.js +1 -1
  90. package/.next/server/chunks/[root-of-the-server]__0g38-aj._.js +5 -0
  91. package/.next/server/chunks/[root-of-the-server]__0h656y-._.js +11 -0
  92. package/.next/server/chunks/{[root-of-the-server]__0g67-oo._.js → [root-of-the-server]__0j_nz36._.js} +1 -1
  93. package/.next/server/chunks/[root-of-the-server]__0ljizgj._.js +1 -1
  94. package/.next/server/chunks/[root-of-the-server]__0mrk2it._.js +1 -1
  95. package/.next/server/chunks/[root-of-the-server]__0sm5xvm._.js +1 -1
  96. package/.next/server/chunks/[root-of-the-server]__0tsded0._.js +5 -0
  97. package/.next/server/chunks/[root-of-the-server]__0tvoct-._.js +1 -1
  98. package/.next/server/chunks/[root-of-the-server]__1-tdj60._.js +3 -0
  99. package/.next/server/chunks/{[root-of-the-server]__0132c27._.js → [root-of-the-server]__10_7vqz._.js} +2 -2
  100. package/.next/server/chunks/[root-of-the-server]__10xnb7e._.js +3 -0
  101. package/.next/server/chunks/[root-of-the-server]__118qjk_._.js +3 -3
  102. package/.next/server/chunks/[root-of-the-server]__11g20j-._.js +3 -0
  103. package/.next/server/chunks/[root-of-the-server]__13hng6h._.js +1 -1
  104. package/.next/server/chunks/{[root-of-the-server]__0o-w4t4._.js → [root-of-the-server]__16yw3mb._.js} +2 -2
  105. package/.next/server/chunks/[root-of-the-server]__18e65_-._.js +3 -0
  106. package/.next/server/chunks/[root-of-the-server]__18k8s-z._.js +3 -0
  107. package/.next/server/chunks/[root-of-the-server]__1_04mcf._.js +1 -1
  108. package/.next/server/chunks/[root-of-the-server]__1b8tp42._.js +5 -0
  109. package/.next/server/chunks/[root-of-the-server]__1c2kwku._.js +12 -0
  110. package/.next/server/chunks/[root-of-the-server]__1ceammd._.js +1 -1
  111. package/.next/server/chunks/[root-of-the-server]__1ep-pao._.js +7 -0
  112. package/.next/server/chunks/[root-of-the-server]__1gamvcz._.js +3 -0
  113. package/.next/server/chunks/[root-of-the-server]__1gzcbda._.js +1 -1
  114. package/.next/server/chunks/{[root-of-the-server]__20tvhdf._.js → [root-of-the-server]__1mbd2w_._.js} +2 -2
  115. package/.next/server/chunks/[root-of-the-server]__1ndi14y._.js +1 -1
  116. package/.next/server/chunks/[root-of-the-server]__1p47fbb._.js +1 -1
  117. package/.next/server/chunks/[root-of-the-server]__1qcn1ti._.js +3 -3
  118. package/.next/server/chunks/[root-of-the-server]__1t0jj1j._.js +5 -0
  119. package/.next/server/chunks/[root-of-the-server]__1v7x5ym._.js +3 -0
  120. package/.next/server/chunks/[root-of-the-server]__1vlxv19._.js +1 -1
  121. package/.next/server/chunks/{[root-of-the-server]__0ei2xnb._.js → [root-of-the-server]__1voqqyc._.js} +1 -1
  122. package/.next/server/chunks/[root-of-the-server]__1ygplx1._.js +1 -1
  123. package/.next/server/chunks/[root-of-the-server]__1zn039k._.js +3 -0
  124. package/.next/server/chunks/[root-of-the-server]__1zrwxis._.js +3 -0
  125. package/.next/server/chunks/_01t8da9._.js +1 -1
  126. package/.next/server/chunks/_02fn1o3._.js +3 -0
  127. package/.next/server/chunks/_05sa7xl._.js +1 -1
  128. package/.next/server/chunks/_06u9yo-._.js +1 -1
  129. package/.next/server/chunks/_07nxi75._.js +250 -0
  130. package/.next/server/chunks/_08354bn._.js +107 -0
  131. package/.next/server/chunks/_0caua_s._.js +1 -1
  132. package/.next/server/chunks/_0j0-gq6._.js +5 -0
  133. package/.next/server/chunks/_0nn99o2._.js +1 -1
  134. package/.next/server/chunks/_0p-h6xe._.js +5 -0
  135. package/.next/server/chunks/_0p6v1fr._.js +5 -0
  136. package/.next/server/chunks/_0qoush_._.js +3 -0
  137. package/.next/server/chunks/_0srlnvd._.js +1 -1
  138. package/.next/server/chunks/_0t_7gji._.js +1 -1
  139. package/.next/server/chunks/_0uir6hb._.js +9 -9
  140. package/.next/server/chunks/_0uzj57i._.js +1 -1
  141. package/.next/server/chunks/_0xm040x._.js +1 -1
  142. package/.next/server/chunks/_0xx3ryc._.js +2 -2
  143. package/.next/server/chunks/_0xygcxs._.js +250 -0
  144. package/.next/server/chunks/{_0ol42w-._.js → _1-sk_q4._.js} +2 -2
  145. package/.next/server/chunks/_146mcip._.js +1 -1
  146. package/.next/server/chunks/_19kea1l._.js +8 -8
  147. package/.next/server/chunks/_1d5zmy8._.js +1 -1
  148. package/.next/server/chunks/_1dxq827._.js +5 -0
  149. package/.next/server/chunks/{_0ejoy4d._.js → _1e54wxa._.js} +2 -2
  150. package/.next/server/chunks/_1gn2r2q._.js +12 -12
  151. package/.next/server/chunks/_1gxankq._.js +2 -2
  152. package/.next/server/chunks/_1hyvcgk._.js +5 -0
  153. package/.next/server/chunks/_1m88lkh._.js +9 -9
  154. package/.next/server/chunks/_1mfu9a3._.js +5 -0
  155. package/.next/server/chunks/_1mx9sfo._.js +1 -1
  156. package/.next/server/chunks/_1ozcb6o._.js +27 -0
  157. package/.next/server/chunks/_1q6e56i._.js +12 -12
  158. package/.next/server/chunks/_1qgix-j._.js +1 -1
  159. package/.next/server/chunks/_1w6uf9k._.js +3 -0
  160. package/.next/server/chunks/_1wl2g8_._.js +2 -2
  161. package/.next/server/chunks/_1wwl_7o._.js +1 -1
  162. package/.next/server/chunks/_1xcnogc._.js +6 -0
  163. package/.next/server/chunks/_1zfxb7j._.js +1 -1
  164. package/.next/server/chunks/_20oecmn._.js +6 -0
  165. package/.next/server/chunks/_211dn2c._.js +1 -1
  166. package/.next/server/chunks/config_ts_1g4sz5o._.js +1 -1
  167. package/.next/server/chunks/features_0wm-ujw._.js +6 -0
  168. package/.next/server/chunks/features_workspace_workspace_ts_13h82gv._.js +4 -4
  169. package/.next/server/chunks/features_workspace_workspace_ts_1iyjroj._.js +3 -3
  170. package/.next/server/chunks/{node_modules_1osf6vs._.js → node_modules_0dctjy-._.js} +1 -1
  171. package/.next/server/chunks/{node_modules_1821h5r._.js → node_modules_0mquap1._.js} +1 -1
  172. package/.next/server/chunks/{node_modules_1bfhxob._.js → node_modules_1er1u8w._.js} +1 -1
  173. package/.next/server/chunks/{node_modules_1i11kg5._.js → node_modules_1rosz79._.js} +1 -1
  174. package/.next/server/chunks/{node_modules_consola_dist_chunks_prompt_mjs_035jiu9._.js → node_modules_consola_dist_chunks_prompt_mjs_0_nz09c._.js} +1 -1
  175. package/.next/server/chunks/{node_modules_consola_dist_chunks_prompt_mjs_0736s17._.js → node_modules_consola_dist_chunks_prompt_mjs_0rx6rvb._.js} +1 -1
  176. package/.next/server/chunks/{node_modules_consola_dist_chunks_prompt_mjs_07szfwb._.js → node_modules_consola_dist_chunks_prompt_mjs_128pb4i._.js} +1 -1
  177. package/.next/server/chunks/{node_modules_consola_dist_chunks_prompt_mjs_0rzuf5j._.js → node_modules_consola_dist_chunks_prompt_mjs_1x3bsmx._.js} +1 -1
  178. package/.next/server/chunks/node_modules_consola_dist_chunks_prompt_mjs_20s275p._.js +3 -0
  179. package/.next/server/chunks/ssr/{[root-of-the-server]__0670az2._.js → [root-of-the-server]__02jdtqa._.js} +3 -2
  180. package/.next/server/chunks/ssr/[root-of-the-server]__0rnjkw2._.js +3 -0
  181. package/.next/server/chunks/ssr/[root-of-the-server]__10eb-1x._.js +3 -0
  182. package/.next/server/chunks/ssr/[root-of-the-server]__17h1ggo._.js +1 -1
  183. package/.next/server/chunks/ssr/[root-of-the-server]__1867koj._.js +1 -1
  184. package/.next/server/chunks/ssr/[root-of-the-server]__1d7usu0._.js +2 -2
  185. package/.next/server/chunks/ssr/{[root-of-the-server]__00ro8qe._.js → [root-of-the-server]__1jyeu61._.js} +2 -2
  186. package/.next/server/chunks/ssr/[root-of-the-server]__1y5_1cv._.js +3 -0
  187. package/.next/server/chunks/ssr/[root-of-the-server]__1y8_-v1._.js +3 -0
  188. package/.next/server/chunks/ssr/{_1zdizo8._.js → _0-ou1b0._.js} +2 -2
  189. package/.next/server/chunks/ssr/{_02u485c._.js → _0afrpci._.js} +2 -2
  190. package/.next/server/chunks/ssr/_0cd6g3l._.js +5 -5
  191. package/.next/server/chunks/ssr/{_0trt3zp._.js → _0fo4552._.js} +17 -19
  192. package/.next/server/chunks/ssr/{_168tvri._.js → _0l1-xc6._.js} +2 -2
  193. package/.next/server/chunks/ssr/{_1rxpx-u._.js → _0ncuqct._.js} +2 -2
  194. package/.next/server/chunks/ssr/_0qsmpcu._.js +1 -1
  195. package/.next/server/chunks/ssr/{_0c1h0l9._.js → _0r0g9ki._.js} +3 -3
  196. package/.next/server/chunks/ssr/_0rvbegp._.js +7 -0
  197. package/.next/server/chunks/ssr/{_1_n8qpv._.js → _0w8r7o7._.js} +2 -2
  198. package/.next/server/chunks/ssr/{_074hv3s._.js → _0wupyvd._.js} +2 -2
  199. package/.next/server/chunks/ssr/_0x8ophf._.js +1 -1
  200. package/.next/server/chunks/ssr/{_0z0scn4._.js → _0y28gl3._.js} +3 -3
  201. package/.next/server/chunks/ssr/{node_modules_0vi73_6._.js → _10-_awu._.js} +2 -2
  202. package/.next/server/chunks/ssr/{_06m66w8._.js → _10fwcz_._.js} +2 -2
  203. package/.next/server/chunks/ssr/{_0ze-0vs._.js → _11pnnvd._.js} +4 -4
  204. package/.next/server/chunks/ssr/_17ble8k._.js +162 -0
  205. package/.next/server/chunks/ssr/_17qtuv7._.js +3 -0
  206. package/.next/server/chunks/ssr/{_1xq-4on._.js → _1dqaksc._.js} +2 -2
  207. package/.next/server/chunks/ssr/{_20lwjif._.js → _1f6s34p._.js} +2 -2
  208. package/.next/server/chunks/ssr/_1g48r6t._.js +3 -0
  209. package/.next/server/chunks/ssr/_1k0efi3._.js +3 -0
  210. package/.next/server/chunks/ssr/_1neoj22._.js +1 -1
  211. package/.next/server/chunks/ssr/_1u5vsy-._.js +3 -0
  212. package/.next/server/chunks/ssr/_1uij_rj._.js +3 -0
  213. package/.next/server/chunks/ssr/{_1r0tx3q._.js → _1umbr78._.js} +3 -3
  214. package/.next/server/chunks/ssr/_1w9w1ok._.js +3 -0
  215. package/.next/server/chunks/ssr/_1z586yw._.js +3 -0
  216. package/.next/server/chunks/ssr/features_0796o8r._.js +3 -0
  217. package/.next/server/chunks/ssr/features_133mpna._.js +6 -0
  218. package/.next/server/chunks/ssr/features_bot_1k25jdg._.js +3 -0
  219. package/.next/server/chunks/ssr/{features_config_13cg2cx._.js → features_config_11dpa7r._.js} +3 -3
  220. package/.next/server/chunks/ssr/features_connectors_components_mcp-setting_tsx_0jmbgvp._.js +3 -3
  221. package/.next/server/chunks/ssr/features_memory_components_memory-setting_tsx_0oa43sw._.js +1 -1
  222. package/.next/server/chunks/ssr/features_routine_components_routine-setting_tsx_055fknz._.js +1 -1
  223. package/.next/server/chunks/ssr/features_workspace_workspace_ts_1wc7_u_._.js +4 -3
  224. package/.next/server/chunks/ssr/{node_modules_1lmv1ux._.js → node_modules_0-8r9yw._.js} +1 -1
  225. package/.next/server/chunks/ssr/{node_modules_1-20i0r._.js → node_modules_0-ew8f8._.js} +1 -1
  226. package/.next/server/chunks/ssr/{node_modules_1us2bdc._.js → node_modules_02uwbwp._.js} +1 -1
  227. package/.next/server/chunks/ssr/{node_modules_1vx7yq2._.js → node_modules_097cl9f._.js} +1 -1
  228. package/.next/server/chunks/ssr/{node_modules_16oefzh._.js → node_modules_0bas34k._.js} +1 -1
  229. package/.next/server/chunks/ssr/{node_modules_0v6s4c8._.js → node_modules_0bbwe-u._.js} +1 -1
  230. package/.next/server/chunks/ssr/{node_modules_1ngj__4._.js → node_modules_0etz1i0._.js} +1 -1
  231. package/.next/server/chunks/ssr/{node_modules_0den7sw._.js → node_modules_0ka8te1._.js} +1 -1
  232. package/.next/server/chunks/ssr/{node_modules_10t4pbm._.js → node_modules_0ld7p-1._.js} +1 -1
  233. package/.next/server/chunks/ssr/{node_modules_09eqoqr._.js → node_modules_0mark4f._.js} +1 -1
  234. package/.next/server/chunks/ssr/{node_modules_01uutx9._.js → node_modules_0n1js5k._.js} +1 -1
  235. package/.next/server/chunks/ssr/{node_modules_0t93862._.js → node_modules_0sdjzae._.js} +1 -1
  236. package/.next/server/chunks/ssr/{node_modules_1x2-bh1._.js → node_modules_0u24mg0._.js} +1 -1
  237. package/.next/server/chunks/ssr/{node_modules_15ksxpk._.js → node_modules_0uibk9z._.js} +1 -1
  238. package/.next/server/chunks/ssr/{node_modules_0r6leyg._.js → node_modules_0x_2io2._.js} +1 -1
  239. package/.next/server/chunks/ssr/{node_modules_1_gizvz._.js → node_modules_0y5uubt._.js} +1 -1
  240. package/.next/server/chunks/ssr/{node_modules_1j59xrt._.js → node_modules_138kcrz._.js} +1 -1
  241. package/.next/server/chunks/ssr/{node_modules_20d3gsv._.js → node_modules_156m1qh._.js} +1 -1
  242. package/.next/server/chunks/ssr/{node_modules_19d6gup._.js → node_modules_18yn_bs._.js} +1 -1
  243. package/.next/server/chunks/ssr/{node_modules_218nu70._.js → node_modules_1dzye0n._.js} +1 -1
  244. package/.next/server/chunks/ssr/{node_modules_1gdff1c._.js → node_modules_1o9n7_n._.js} +1 -1
  245. package/.next/server/chunks/ssr/{node_modules_0yslr-j._.js → node_modules_1ozyial._.js} +1 -1
  246. package/.next/server/chunks/ssr/{node_modules_16op-wf._.js → node_modules_1r5o-bo._.js} +1 -1
  247. package/.next/server/chunks/ssr/{node_modules_1uil5qp._.js → node_modules_1tj7_9z._.js} +1 -1
  248. package/.next/server/chunks/ssr/{node_modules_0h3dnyw._.js → node_modules_1xua-g1._.js} +1 -1
  249. package/.next/server/chunks/ssr/{node_modules_03hfcze._.js → node_modules_1zkzksd._.js} +1 -1
  250. package/.next/server/chunks/ssr/{node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_0wbgrv5._.js → node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_133hjui._.js} +1 -1
  251. package/.next/server/chunks/ssr/{node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_15680yt._.js → node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_1b3vwd3._.js} +1 -1
  252. package/.next/server/middleware-build-manifest.js +3 -3
  253. package/.next/server/pages/404.html +1 -1
  254. package/.next/server/pages/500.html +1 -1
  255. package/.next/server/server-reference-manifest.js +1 -1
  256. package/.next/server/server-reference-manifest.json +61 -61
  257. package/.next/static/chunks/00d54fcfm-lko.js +1 -0
  258. package/.next/static/chunks/05scfrgo_a_5_.js +58 -0
  259. package/.next/static/chunks/{1rjn_x_ty28qc.js → 0609ejkwuy4sf.js} +2 -2
  260. package/.next/static/chunks/{3w3v100tg-tun.js → 07vcuxousbmy1.js} +1 -1
  261. package/.next/static/chunks/{3r1p-za3kwq6b.js → 0cl_fgkphk1oz.js} +1 -1
  262. package/.next/static/chunks/0gjlsu6vrfzod.js +1 -0
  263. package/.next/static/chunks/0npvak0wpgagb.js +1 -0
  264. package/.next/static/chunks/{1wkrzv0y4qx48.js → 0o7o0eb7ihxi6.js} +1 -1
  265. package/.next/static/chunks/0q4ws7qd21chx.js +35 -0
  266. package/.next/static/chunks/{2q33y6q5_4yxf.js → 0unonxbajyknw.js} +1 -1
  267. package/.next/static/chunks/17yqt1p_svv13.js +1 -0
  268. package/.next/static/chunks/19l81deo_pyoc.js +1 -0
  269. package/.next/static/chunks/1ub9obhgfm4jl.js +1 -0
  270. package/.next/static/chunks/203pbwecfs3tm.js +1 -0
  271. package/.next/static/chunks/{30_2pay06oou4.js → 23tx-2paw9qa6.js} +3 -3
  272. package/.next/static/chunks/{22djpz2dakws5.js → 245_cp14iz637.js} +1 -1
  273. package/.next/static/chunks/2jbjyazqfqyoh.js +1 -0
  274. package/.next/static/chunks/2oa4gpkzjtpni.js +1 -0
  275. package/.next/static/chunks/2uraofiaoy32s.js +1 -0
  276. package/.next/static/chunks/{1ln0zczby868j.js → 2xjr5b-yk_h3o.js} +2 -2
  277. package/.next/static/chunks/314szf8yer-3n.js +2 -0
  278. package/.next/static/chunks/{38srd01ofppmn.css → 31kn4_h2rvf6k.css} +1 -1
  279. package/.next/static/chunks/39miwvg4k-b2d.js +1 -0
  280. package/.next/static/chunks/3ghvoe_mlljzs.js +15 -0
  281. package/.next/static/chunks/{2-9ybn1k9el1e.js → 3gn7dubb4-pwy.js} +1 -1
  282. package/.next/static/chunks/3j-l8un0d77v7.js +18 -0
  283. package/.next/static/chunks/{1iezy4u4v9kl7.js → 3ro66d9dc70bc.js} +1 -1
  284. package/.next/static/chunks/3vwjs5kq11417.js +1 -0
  285. package/.next/static/chunks/42m371fn687r5.js +1 -0
  286. package/README.md +3 -1
  287. package/guide/bots.md +3 -2
  288. package/guide/calls.md +16 -15
  289. package/guide/index.md +1 -1
  290. package/guide/setup.md +19 -10
  291. package/guide/trouble.md +12 -2
  292. package/package.json +2 -2
  293. package/public/sounds/NOTICE +213 -0
  294. package/public/sounds/end_voice.ogg +0 -0
  295. package/public/sounds/ring.ogg +0 -0
  296. package/public/sounds/start_voice.ogg +0 -0
  297. package/seed-skills/concierge/travel/SKILL.md +4 -4
  298. package/seed-skills/marketer/marketing/references/copywriting-copy-frameworks.md +3 -10
  299. package/seed-skills/marketer/marketing/references/copywriting.md +2 -2
  300. package/seed-skills/marketer/marketing/references/social-platforms.md +5 -5
  301. package/skills/artifact/SKILL.md +2 -1
  302. package/skills/artifact/references/book.md +2 -3
  303. package/skills/artifact/references/deck.md +4 -0
  304. package/skills/artifact/runtime/app/kit/vite.config.ts +6 -3
  305. package/skills/artifact/runtime/app/page/index.html +1 -1
  306. package/skills/artifact/runtime/book/book.html +1 -1
  307. package/skills/artifact/runtime/canvas/canvas.html +1 -1
  308. package/skills/artifact/runtime/deck/deck.html +1 -1
  309. package/skills/artifact/runtime/document/quick.html +1 -1
  310. package/skills/artifact/scripts/chart.mjs +122 -14
  311. package/skills/artifact/scripts/document.mjs +3 -2
  312. package/skills/daily-brief/scripts/story.mjs +13 -1
  313. package/skills/media-digest/SKILL.md +4 -2
  314. package/skills/media-digest/references/no-captions.md +2 -1
  315. package/skills/media-digest/scripts/audio.mjs +7 -2
  316. package/.next/server/chunks/[root-of-the-server]__0876r42._.js +0 -3
  317. package/.next/server/chunks/[root-of-the-server]__0brcw76._.js +0 -3
  318. package/.next/server/chunks/[root-of-the-server]__0c_j_qe._.js +0 -3
  319. package/.next/server/chunks/[root-of-the-server]__0grmfwp._.js +0 -5
  320. package/.next/server/chunks/[root-of-the-server]__0kv916d._.js +0 -3
  321. package/.next/server/chunks/[root-of-the-server]__0tkqhnc._.js +0 -3
  322. package/.next/server/chunks/[root-of-the-server]__0vffrja._.js +0 -5
  323. package/.next/server/chunks/[root-of-the-server]__0vn91fr._.js +0 -5
  324. package/.next/server/chunks/[root-of-the-server]__0vxvcj4._.js +0 -3
  325. package/.next/server/chunks/[root-of-the-server]__0zbo906._.js +0 -5
  326. package/.next/server/chunks/[root-of-the-server]__10ep3hy._.js +0 -3
  327. package/.next/server/chunks/[root-of-the-server]__10iry08._.js +0 -3
  328. package/.next/server/chunks/[root-of-the-server]__11d0tvc._.js +0 -5
  329. package/.next/server/chunks/[root-of-the-server]__19sv9or._.js +0 -5
  330. package/.next/server/chunks/[root-of-the-server]__1_1zysn._.js +0 -3
  331. package/.next/server/chunks/[root-of-the-server]__1e0f7he._.js +0 -7
  332. package/.next/server/chunks/[root-of-the-server]__1fdpwcm._.js +0 -3
  333. package/.next/server/chunks/[root-of-the-server]__1hgdkzg._.js +0 -11
  334. package/.next/server/chunks/[root-of-the-server]__1ksm9m-._.js +0 -12
  335. package/.next/server/chunks/[root-of-the-server]__1l_nubj._.js +0 -3
  336. package/.next/server/chunks/[root-of-the-server]__1pmsv_6._.js +0 -3
  337. package/.next/server/chunks/[root-of-the-server]__1tdudkf._.js +0 -5
  338. package/.next/server/chunks/_02lipqs._.js +0 -5
  339. package/.next/server/chunks/_034lk-r._.js +0 -3
  340. package/.next/server/chunks/_04ynt0z._.js +0 -252
  341. package/.next/server/chunks/_171rt-v._.js +0 -109
  342. package/.next/server/chunks/_17esum5._.js +0 -5
  343. package/.next/server/chunks/_1p8rzg_._.js +0 -252
  344. package/.next/server/chunks/_1v5g4kx._.js +0 -3
  345. package/.next/server/chunks/_1vxrw1q._.js +0 -5
  346. package/.next/server/chunks/features_0-cnt0l._.js +0 -4
  347. package/.next/server/chunks/features_0hdaci0._.js +0 -4
  348. package/.next/server/chunks/features_0p85gv6._.js +0 -3
  349. package/.next/server/chunks/node_modules_consola_dist_chunks_prompt_mjs_0ta6hsy._.js +0 -3
  350. package/.next/server/chunks/node_modules_consola_dist_chunks_prompt_mjs_0tok7g7._.js +0 -3
  351. package/.next/server/chunks/node_modules_consola_dist_chunks_prompt_mjs_187uwe9._.js +0 -3
  352. package/.next/server/chunks/node_modules_consola_dist_chunks_prompt_mjs_1cu9mam._.js +0 -3
  353. package/.next/server/chunks/node_modules_consola_dist_chunks_prompt_mjs_1g1et-d._.js +0 -3
  354. package/.next/server/chunks/ssr/[root-of-the-server]__099tvf0._.js +0 -3
  355. package/.next/server/chunks/ssr/[root-of-the-server]__0dxszdt._.js +0 -3
  356. package/.next/server/chunks/ssr/[root-of-the-server]__0ihvne0._.js +0 -3
  357. package/.next/server/chunks/ssr/[root-of-the-server]__11hcjwx._.js +0 -3
  358. package/.next/server/chunks/ssr/_018vrx-._.js +0 -3
  359. package/.next/server/chunks/ssr/_0afqubz._.js +0 -162
  360. package/.next/server/chunks/ssr/_0ayihi5._.js +0 -3
  361. package/.next/server/chunks/ssr/_0gv5wzb._.js +0 -3
  362. package/.next/server/chunks/ssr/_0kkdx7t._.js +0 -3
  363. package/.next/server/chunks/ssr/_0yjztzi._.js +0 -3
  364. package/.next/server/chunks/ssr/_14fdswx._.js +0 -3
  365. package/.next/server/chunks/ssr/_1ajl6hf._.js +0 -5
  366. package/.next/server/chunks/ssr/_1o_i8-d._.js +0 -7
  367. package/.next/server/chunks/ssr/_1ri-y7z._.js +0 -4
  368. package/.next/server/chunks/ssr/features_0ctqq63._.js +0 -4
  369. package/.next/server/chunks/ssr/features_bot_0v6r-lh._.js +0 -3
  370. package/.next/static/chunks/0j8_qql4enu93.js +0 -1
  371. package/.next/static/chunks/0mr03ivl4_fxd.js +0 -1
  372. package/.next/static/chunks/13qwyo9-jd5kw.js +0 -1
  373. package/.next/static/chunks/17_b97pj_av_t.js +0 -1
  374. package/.next/static/chunks/18id2dgl_39_1.js +0 -18
  375. package/.next/static/chunks/1lp02y2nmddxg.js +0 -1
  376. package/.next/static/chunks/249i2g6ele3t2.js +0 -1
  377. package/.next/static/chunks/249wisxmxrwa9.js +0 -1
  378. package/.next/static/chunks/27dovttmtqjhi.js +0 -15
  379. package/.next/static/chunks/2k1rwhz_x2lej.js +0 -1
  380. package/.next/static/chunks/2p2pqpub-48me.js +0 -58
  381. package/.next/static/chunks/34-6gj9kheq74.js +0 -2
  382. package/.next/static/chunks/3a29oqdmvp25o.js +0 -35
  383. package/.next/static/chunks/3c_bgfr_z4peu.js +0 -1
  384. package/.next/static/chunks/3gyqds2iodotb.js +0 -1
  385. package/.next/static/chunks/3hxors_gsfsut.js +0 -1
  386. package/.next/static/chunks/3q-3lu8gpr4-h.js +0 -1
  387. package/.next/static/chunks/3qkm3p4g4ajku.js +0 -3
  388. package/.next/static/chunks/3w3mgbz8nuug2.js +0 -1
  389. package/app/api/bot/memory/files/route.ts +0 -14
  390. package/app/api/bot/memory/route.ts +0 -5
  391. package/app/api/events/app-event.client.ts +0 -30
  392. package/app/api/events/app-event.server.ts +0 -47
  393. package/app/api/events/app-event.ts +0 -78
  394. package/app/api/llm-model/catalog/route.ts +0 -12
  395. package/app/api/llm-model/credits/route.ts +0 -11
  396. package/app/api/llm-model/route.ts +0 -26
  397. package/app/api/llm-model/subscription/route.ts +0 -11
  398. package/app/api/memory/edit/route.ts +0 -7
  399. package/app/api/memory/route.ts +0 -8
  400. package/app/api/query-key.ts +0 -192
  401. package/app/api/thursday/tool-call/route.ts +0 -76
  402. package/biome.json +0 -72
  403. package/components/ui/button-group.tsx +0 -45
  404. package/components/ui/custom-icon.tsx +0 -199
  405. package/components/ui/dropdown-menu.tsx +0 -271
  406. package/components/ui/folded-text.tsx +0 -68
  407. package/components/ui/input-group.tsx +0 -157
  408. package/components/ui/json-view.tsx +0 -240
  409. package/components/ui/radio-group.tsx +0 -37
  410. package/components/ui/shiny-text.tsx +0 -68
  411. package/components/ui/site-icon.tsx +0 -45
  412. package/components/ui/source-chips.tsx +0 -54
  413. package/components/ui/theme-sync.tsx +0 -9
  414. package/components.json +0 -25
  415. package/docs/how-it-works.md +0 -76
  416. package/docs/images/errands-dark.png +0 -0
  417. package/docs/images/errands-light.png +0 -0
  418. package/docs/images/hero-dark.png +0 -0
  419. package/docs/images/hero-light.png +0 -0
  420. package/docs/images/keeps-going.png +0 -0
  421. package/docs/images/more-dark.png +0 -0
  422. package/docs/images/more-light.png +0 -0
  423. package/docs/images/results-dark.png +0 -0
  424. package/docs/images/results-light.png +0 -0
  425. package/docs/images/talk-dark.png +0 -0
  426. package/docs/images/talk-light.png +0 -0
  427. package/docs/images/team-dark.png +0 -0
  428. package/docs/images/team-light.png +0 -0
  429. package/docs/images/two-minds.png +0 -0
  430. package/features/ai/chatgpt.ts +0 -638
  431. package/features/ai/components/chatgpt-sign-in.tsx +0 -66
  432. package/features/ai/components/effort-switch.tsx +0 -112
  433. package/features/ai/components/gateway-mark.tsx +0 -188
  434. package/features/ai/components/model-browser.tsx +0 -324
  435. package/features/ai/components/model-picker.tsx +0 -336
  436. package/features/ai/components/provider-icon.tsx +0 -162
  437. package/features/ai/guide.ts +0 -44
  438. package/features/ai/live.schema.ts +0 -150
  439. package/features/ai/load-tools.ts +0 -495
  440. package/features/ai/model.schema.ts +0 -985
  441. package/features/ai/model.ts +0 -662
  442. package/features/ai/prompts/bot.prompt.ts +0 -418
  443. package/features/ai/prompts/call-standing.ts +0 -43
  444. package/features/ai/prompts/live.prompt.ts +0 -197
  445. package/features/ai/prompts/memory-edit.prompt.ts +0 -33
  446. package/features/ai/prompts/persona.ts +0 -114
  447. package/features/ai/prompts/prompt-helper.ts +0 -287
  448. package/features/ai/prompts/thursday.prompt.ts +0 -281
  449. package/features/ai/tools/bot.tool.ts +0 -183
  450. package/features/ai/tools/call.tool.ts +0 -50
  451. package/features/ai/tools/connected.ts +0 -199
  452. package/features/ai/tools/deck.tool.ts +0 -518
  453. package/features/ai/tools/look.tool.ts +0 -65
  454. package/features/ai/tools/mcp.tool.ts +0 -187
  455. package/features/ai/tools/memory.tool.ts +0 -296
  456. package/features/ai/tools/routine.tool.ts +0 -214
  457. package/features/ai/tools/search.tool.ts +0 -248
  458. package/features/ai/tools/self.tool.ts +0 -58
  459. package/features/ai/tools/signin.tool.ts +0 -138
  460. package/features/ai/tools/skills.tool.ts +0 -109
  461. package/features/ai/tools/studio.tool.ts +0 -360
  462. package/features/ai/tools/tool-name.ts +0 -56
  463. package/features/ai/tools/workspace.tool.ts +0 -126
  464. package/features/ai/words.ts +0 -60
  465. package/features/artifact/artifact.action.ts +0 -12
  466. package/features/artifact/artifact.query.ts +0 -218
  467. package/features/artifact/artifact.schema.ts +0 -58
  468. package/features/artifact/components/artifact-setting.tsx +0 -513
  469. package/features/bot/bot.action.ts +0 -195
  470. package/features/bot/bot.memory.ts +0 -206
  471. package/features/bot/bot.query.ts +0 -293
  472. package/features/bot/bot.run.ts +0 -909
  473. package/features/bot/bot.runner.ts +0 -595
  474. package/features/bot/bot.schema.ts +0 -501
  475. package/features/bot/bot.seed.ts +0 -160
  476. package/features/bot/components/attachments.tsx +0 -225
  477. package/features/bot/components/bot-badge.tsx +0 -21
  478. package/features/bot/components/bot-mark.tsx +0 -1678
  479. package/features/bot/components/bot-room.tsx +0 -439
  480. package/features/bot/components/bot-roster.tsx +0 -43
  481. package/features/bot/components/bot-setting.tsx +0 -1698
  482. package/features/bot/components/bot-tip.tsx +0 -48
  483. package/features/bot/components/bot-tool.tsx +0 -644
  484. package/features/bot/components/crew-motion.ts +0 -168
  485. package/features/bot/components/mark-palette.tsx +0 -57
  486. package/features/bot/components/room-conversation.tsx +0 -1208
  487. package/features/bot/components/room-list.tsx +0 -539
  488. package/features/bot/components/room-pill.tsx +0 -1045
  489. package/features/bot/components/thread-badge.tsx +0 -37
  490. package/features/bot/components/thread-reply.tsx +0 -780
  491. package/features/bot/components/thread-setting.tsx +0 -718
  492. package/features/bot/components/write-orb.tsx +0 -298
  493. package/features/bot/mark.const.ts +0 -164
  494. package/features/bot/room.query.ts +0 -922
  495. package/features/bot/room.schema.ts +0 -78
  496. package/features/bot/seed-bots.ts +0 -44
  497. package/features/bot/thread.query.ts +0 -1175
  498. package/features/bot/thread.store.ts +0 -726
  499. package/features/config/components/config-badge.tsx +0 -28
  500. package/features/config/components/config-setting.tsx +0 -881
  501. package/features/config/components/models-badge.tsx +0 -42
  502. package/features/config/components/voice-key.tsx +0 -321
  503. package/features/config/config.action.ts +0 -67
  504. package/features/config/config.const.ts +0 -356
  505. package/features/config/config.query.ts +0 -43
  506. package/features/connectors/components/mcp-badge.tsx +0 -17
  507. package/features/connectors/components/mcp-mark.tsx +0 -4
  508. package/features/connectors/components/mcp-setting.tsx +0 -1028
  509. package/features/connectors/mcp.action.ts +0 -93
  510. package/features/connectors/mcp.const.ts +0 -336
  511. package/features/connectors/mcp.manager.ts +0 -497
  512. package/features/connectors/mcp.query.ts +0 -256
  513. package/features/connectors/mcp.schema.ts +0 -122
  514. package/features/intro/components/echoes.tsx +0 -563
  515. package/features/intro/components/intro.tsx +0 -964
  516. package/features/intro/intro-voice.ts +0 -174
  517. package/features/memory/components/memory-edit.tsx +0 -333
  518. package/features/memory/components/memory-mark.tsx +0 -4
  519. package/features/memory/components/memory-setting.tsx +0 -662
  520. package/features/memory/memory.action.ts +0 -75
  521. package/features/memory/memory.edit.ts +0 -79
  522. package/features/memory/memory.query.ts +0 -513
  523. package/features/memory/memory.schema.ts +0 -196
  524. package/features/reach/channel.ts +0 -127
  525. package/features/reach/chat-text.ts +0 -364
  526. package/features/reach/components/reach-ask.tsx +0 -94
  527. package/features/reach/components/reach-badge.tsx +0 -22
  528. package/features/reach/components/reach-guide.tsx +0 -777
  529. package/features/reach/discord.ts +0 -308
  530. package/features/reach/pictures.ts +0 -88
  531. package/features/reach/reach.action.ts +0 -30
  532. package/features/reach/reach.schema.ts +0 -80
  533. package/features/reach/reach.ts +0 -946
  534. package/features/reach/slack.ts +0 -319
  535. package/features/reach/socket.ts +0 -63
  536. package/features/reach/telegram.ts +0 -323
  537. package/features/routine/components/routine-mark.tsx +0 -7
  538. package/features/routine/components/routine-setting.tsx +0 -1078
  539. package/features/routine/routine.action.ts +0 -31
  540. package/features/routine/routine.clock.ts +0 -102
  541. package/features/routine/routine.query.ts +0 -207
  542. package/features/routine/routine.schema.ts +0 -157
  543. package/features/settings/components/install-app.tsx +0 -153
  544. package/features/settings/components/setting-ui.tsx +0 -482
  545. package/features/settings/components/settings.tsx +0 -464
  546. package/features/settings/settings.alert.ts +0 -42
  547. package/features/settings/settings.store.ts +0 -44
  548. package/features/signins/components/signin-ask.tsx +0 -51
  549. package/features/signins/components/signins-setting.tsx +0 -261
  550. package/features/signins/signins.action.ts +0 -22
  551. package/features/signins/signins.query.ts +0 -261
  552. package/features/signins/signins.schema.ts +0 -26
  553. package/features/skills/components/skills-mark.tsx +0 -4
  554. package/features/skills/components/skills-setting.tsx +0 -736
  555. package/features/skills/skills.action.ts +0 -118
  556. package/features/skills/skills.discover.ts +0 -146
  557. package/features/skills/skills.query.ts +0 -363
  558. package/features/skills/skills.schema.ts +0 -105
  559. package/features/thursday/ascii.const.ts +0 -218
  560. package/features/thursday/call-signal.ts +0 -41
  561. package/features/thursday/components/ascii-orb.tsx +0 -1523
  562. package/features/thursday/components/boot.tsx +0 -24
  563. package/features/thursday/components/call-log.tsx +0 -503
  564. package/features/thursday/components/caption-words.tsx +0 -117
  565. package/features/thursday/components/connect-wave.tsx +0 -266
  566. package/features/thursday/components/face.tsx +0 -137
  567. package/features/thursday/components/side-captions.tsx +0 -347
  568. package/features/thursday/components/tab-state.tsx +0 -108
  569. package/features/thursday/components/thursday-mark.tsx +0 -168
  570. package/features/thursday/components/thursday-setting.tsx +0 -1084
  571. package/features/thursday/components/thursday.tsx +0 -1823
  572. package/features/thursday/components/voice-picker.tsx +0 -254
  573. package/features/thursday/components/write-line.tsx +0 -714
  574. package/features/thursday/expressions.ts +0 -1278
  575. package/features/thursday/eyes.ts +0 -274
  576. package/features/thursday/face-words.ts +0 -44
  577. package/features/thursday/face.const.ts +0 -6
  578. package/features/thursday/face.store.ts +0 -62
  579. package/features/thursday/field.ts +0 -93
  580. package/features/thursday/open-work.ts +0 -180
  581. package/features/thursday/screen-act.ts +0 -15
  582. package/features/thursday/silent-voice.ts +0 -14
  583. package/features/thursday/smoke.ts +0 -510
  584. package/features/thursday/thursday.action.ts +0 -266
  585. package/features/thursday/thursday.query.ts +0 -382
  586. package/features/thursday/thursday.schema.ts +0 -251
  587. package/features/thursday/thursday.store.ts +0 -129
  588. package/features/thursday/thursday.text.ts +0 -567
  589. package/features/thursday/tool-call.ts +0 -42
  590. package/features/thursday/tool-line.ts +0 -333
  591. package/features/thursday/use-call-ring.ts +0 -194
  592. package/features/thursday/use-live-settings.ts +0 -66
  593. package/features/thursday/use-text-call.ts +0 -551
  594. package/features/thursday/use-thursday.ts +0 -1231
  595. package/features/thursday/wash.ts +0 -116
  596. package/features/thursday/work-chip.tsx +0 -64
  597. package/features/workspace/components/artifact-view.tsx +0 -510
  598. package/features/workspace/components/file-thumb.tsx +0 -253
  599. package/features/workspace/components/file-view.tsx +0 -875
  600. package/features/workspace/components/given-files.tsx +0 -195
  601. package/features/workspace/components/workspace-mark.tsx +0 -4
  602. package/features/workspace/components/workspace-setting.tsx +0 -454
  603. package/features/workspace/file-kind.ts +0 -190
  604. package/features/workspace/workspace.action.ts +0 -88
  605. package/features/workspace/workspace.query.ts +0 -220
  606. package/features/workspace/workspace.schema.ts +0 -58
  607. package/features/workspace/workspace.ts +0 -553
  608. package/hooks/use-draft.ts +0 -38
  609. package/hooks/use-hotkey.ts +0 -171
  610. package/hooks/use-object-state.ts +0 -22
  611. package/hooks/use-on-visible.ts +0 -72
  612. package/hooks/use-theme.ts +0 -120
  613. package/hooks/use-wake-word.ts +0 -262
  614. package/knip.json +0 -7
  615. package/lib/date-like.ts +0 -37
  616. package/lib/desktop-notify.ts +0 -81
  617. package/lib/favicon.ts +0 -88
  618. package/lib/json-schema.ts +0 -42
  619. package/lib/live/live.schema.ts +0 -36
  620. package/lib/live/live.server.ts +0 -188
  621. package/lib/live/live.session.ts +0 -712
  622. package/lib/live/live.tap.ts +0 -288
  623. package/lib/live/live.transport.ts +0 -152
  624. package/lib/live/ring.ts +0 -62
  625. package/lib/logger.ts +0 -14
  626. package/lib/oauth-page.ts +0 -27
  627. package/lib/protocol/events.client.ts +0 -89
  628. package/lib/protocol/events.server.ts +0 -158
  629. package/lib/protocol/events.ts +0 -53
  630. package/lib/protocol/presence.ts +0 -65
  631. package/lib/protocol/result.ts +0 -63
  632. package/lib/protocol/server-action.ts +0 -13
  633. package/lib/protocol/server-route.ts +0 -20
  634. package/lib/protocol/to-result.ts +0 -46
  635. package/lib/protocol/use-server-action.ts +0 -105
  636. package/lib/protocol/use-server-pages.ts +0 -117
  637. package/lib/protocol/use-server-route.ts +0 -165
  638. package/lib/public-error.ts +0 -19
  639. package/lib/queue.ts +0 -79
  640. package/lib/reveal-path.ts +0 -46
  641. package/lib/sandbox.ts +0 -269
  642. package/lib/theme.ts +0 -9
  643. package/lib/tokens.ts +0 -35
  644. package/lib/utils.ts +0 -163
  645. package/release-please-config.json +0 -21
  646. package/scripts/artifact-paths.test.mts +0 -56
  647. package/scripts/bot-context.test.mts +0 -2122
  648. package/scripts/intro-voice.mts +0 -65
  649. package/scripts/live-history.test.mts +0 -115
  650. package/scripts/live-session.test.mts +0 -1286
  651. package/scripts/memory-tools.test.mts +0 -177
  652. package/scripts/page-edits.test.mts +0 -319
  653. package/scripts/reach-channels.test.mts +0 -524
  654. package/scripts/skill-files.test.mts +0 -225
  655. package/scripts/text-call.test.mts +0 -540
  656. package/skills-lock.json +0 -23
  657. package/tsconfig.json +0 -44
  658. /package/.next/static/{0yrnAMu4F_o69_DY3W-ho → RtLRT9EEaGn-OqwpMFdYg}/_buildManifest.js +0 -0
  659. /package/.next/static/{0yrnAMu4F_o69_DY3W-ho → RtLRT9EEaGn-OqwpMFdYg}/_clientMiddlewareManifest.js +0 -0
  660. /package/.next/static/{0yrnAMu4F_o69_DY3W-ho → RtLRT9EEaGn-OqwpMFdYg}/_ssgManifest.js +0 -0
@@ -1,174 +0,0 @@
1
- import { useCallback, useEffect, useRef, useState } from "react";
2
- import { createClipTap, SPECTRUM_BANDS } from "@/lib/live/live.tap";
3
-
4
- /**
5
- * Her recorded voice on the first run: each of her lines there is also a clip, so she can
6
- * be heard before any key exists. Everything about it is here — what she says aloud, where
7
- * a clip lives, and the hook that plays one — and `scripts/intro-voice.mts` records the
8
- * clips from this script. What she says aloud is its own text, not the caption's: a line
9
- * on screen can be rewritten freely, and she opens by saying this is a recording, which a
10
- * caption has no need to. A clip is named by a hash of its words, so a line rewritten here
11
- * is silent until it is recorded again, never a clip saying the old words.
12
- */
13
-
14
- /** How the clips are made (scripts/intro-voice.mts): the default call voice, asked to sound like a call. */
15
- export const INTRO_VOICE = {
16
- model: "gpt-4o-mini-tts",
17
- voice: "marin",
18
- instructions:
19
- "Warm, relaxed and conversational, like a friend on the phone who is glad you called. Natural pace, a light smile in the voice. American English.",
20
- dir: "voices/intro",
21
- } as const;
22
-
23
- /** What she says aloud, by the line it goes with. Plain words: whoever hears this may never have seen an API key. */
24
- export const INTRO_SPOKEN = {
25
- /** Said once, ahead of whichever line comes first: she says what this is before anything else. */
26
- hello:
27
- "Hi, I'm Thursday. One thing first: this is a recording. You'll hear my real voice on our first call.",
28
- key: "My real voice comes from OpenAI, and it needs a key — think of it as a password. Paste one in, and I wake up. Don't have one yet? No problem, skip ahead. I'll ask again later.",
29
- awake:
30
- "There we go — I'm awake. That key is all a call needs. The rest is quick: your microphone, who does the work for you, and what they think with.",
31
- mic: "Now let me hear you. Your browser will ask before it turns the microphone on. Say yes, then say anything — and watch the line under me move. It's only on during a call, unless you ask for more.",
32
- heard:
33
- "I hear you — that line is your voice. If you'd rather wake me by saying my name instead of tapping, switch that on here and give it a try.",
34
- bots: "Big jobs go to my helper bots, so you and I can keep talking while they work. They work right here on your computer, with a browser and your files. Signing in and paying always stay with you.",
35
- models:
36
- "Every bot runs on an A.I. model that you pick. Start small: a small one is fast and cheap, and you can move any bot up later. Your OpenAI key already covers it. A GPT subscription, or a Vercel key, opens up a lot more.",
37
- style:
38
- "One more, and it's the fun one: who I am to you. There are ten of me, and the only difference is how I talk. Pick whoever sounds like someone you'd call — you can change your mind anytime.",
39
- call: "That's everything. Call me, tell me what to call you, and ask for one thing — anything you'd ask someone sitting next to you. From here on, it's my real voice. I'll show you the rest as we go.",
40
- asleep:
41
- "I still don't have a voice of my own, so no calls yet — but everything else works. Have a look around. When you have a key, tap me, and I'll take it from there.",
42
- } as const;
43
-
44
- export type IntroLine = keyof typeof INTRO_SPOKEN;
45
-
46
- /** FNV-1a over the voice and the words: the same eight characters in the browser and in the script. */
47
- function stamp(words: string): string {
48
- let hash = 0x811c9dc5;
49
- for (const char of `${INTRO_VOICE.voice}|${words}`) {
50
- hash ^= char.codePointAt(0) ?? 0;
51
- hash = Math.imul(hash, 0x01000193);
52
- }
53
- return (hash >>> 0).toString(16).padStart(8, "0");
54
- }
55
-
56
- /** The clip's file name: the line, and the stamp of what it says. */
57
- export const introClipName = (line: IntroLine) =>
58
- `${line}-${stamp(INTRO_SPOKEN[line])}.ogg`;
59
-
60
- const SILENT = new Array<number>(SPECTRUM_BANDS).fill(0);
61
-
62
- /** Where the choice is kept: someone who muted her once is not spoken to again. */
63
- const MUTED_KEY = "thursday.intro.muted";
64
-
65
- /**
66
- * Plays her clips. The first one has to start inside a click (`say` from the handler): a
67
- * browser lets a page make sound only from there, and an element that has played once may
68
- * play again by itself, which is how the later lines follow their step. Each line is said
69
- * once a visit, several in a row when asked for together, and a new ask cuts in. A clip
70
- * that is missing or refused is silence, never an error.
71
- */
72
- export function useIntroVoice(line: IntroLine | null) {
73
- const held = useRef<{
74
- audio: HTMLAudioElement;
75
- clip: ReturnType<typeof createClipTap>;
76
- } | null>(null);
77
- const said = useRef(new Set<IntroLine>());
78
- /** What follows the clip now playing. */
79
- const next = useRef<IntroLine[]>([]);
80
- const sounding = useRef(false);
81
- const [speaking, setSpeaking] = useState(false);
82
- const [muted, setMuted] = useState(false);
83
- const mutedNow = useRef(false);
84
-
85
- useEffect(() => {
86
- try {
87
- const was = window.localStorage.getItem(MUTED_KEY) === "1";
88
- mutedNow.current = was;
89
- setMuted(was);
90
- } catch {
91
- // storage may be blocked; she speaks
92
- }
93
- }, []);
94
-
95
- const hush = useCallback(() => {
96
- next.current = [];
97
- held.current?.audio.pause();
98
- }, []);
99
-
100
- const play = useCallback(() => {
101
- const one = next.current.shift();
102
- if (!one || !held.current) return;
103
- const { audio, clip } = held.current;
104
- void clip.resume();
105
- audio.src = `/${INTRO_VOICE.dir}/${introClipName(one)}`;
106
- void audio.play().catch(() => {});
107
- }, []);
108
-
109
- const say = useCallback(
110
- (...lines: IntroLine[]) => {
111
- const fresh = lines.filter((one) => !said.current.has(one));
112
- if (mutedNow.current || !fresh.length) return;
113
- if (!held.current) {
114
- const audio = new Audio();
115
- const heard = (on: boolean) => () => {
116
- sounding.current = on;
117
- setSpeaking(on);
118
- };
119
- audio.addEventListener("playing", heard(true));
120
- for (const over of ["pause", "ended", "error"])
121
- audio.addEventListener(over, heard(false));
122
- // one clip over, the next begins; a clip that will not load is skipped
123
- audio.addEventListener("ended", play);
124
- audio.addEventListener("error", play);
125
- // An element is routed once, so the tap lasts as long as the element does
126
- held.current = { audio, clip: createClipTap(audio) };
127
- }
128
- for (const one of fresh) said.current.add(one);
129
- next.current = fresh;
130
- play();
131
- },
132
- [play],
133
- );
134
-
135
- // The lines after the first follow their step by themselves
136
- useEffect(() => {
137
- if (line && held.current) say(line);
138
- }, [line, say]);
139
-
140
- // Gone with the intro: she must not talk over the call it ends on
141
- useEffect(
142
- () => () => {
143
- held.current?.audio.pause();
144
- void held.current?.clip.close();
145
- held.current = null;
146
- },
147
- [],
148
- );
149
-
150
- const toggle = useCallback(() => {
151
- const next = !mutedNow.current;
152
- mutedNow.current = next;
153
- setMuted(next);
154
- try {
155
- window.localStorage.setItem(MUTED_KEY, next ? "1" : "0");
156
- } catch {
157
- // kept for this visit only
158
- }
159
- if (next) return hush();
160
- // Switched back on inside this click: the line on screen is said again
161
- if (line) {
162
- said.current.delete(line);
163
- say(line);
164
- }
165
- }, [hush, line, say]);
166
-
167
- const spectrum = useCallback(
168
- () =>
169
- held.current && sounding.current ? held.current.clip.read() : SILENT,
170
- [],
171
- );
172
-
173
- return { say, hush, speaking, muted, toggle, spectrum };
174
- }
@@ -1,333 +0,0 @@
1
- "use client";
2
-
3
- import { useChat } from "@ai-sdk/react";
4
- import { DefaultChatTransport, getToolName, isToolUIPart } from "ai";
5
- import {
6
- ArrowUp,
7
- BookOpen,
8
- Check,
9
- ChevronDown,
10
- Loader2,
11
- Minus,
12
- Pencil,
13
- Plus,
14
- X,
15
- } from "lucide-react";
16
- import { type SubmitEvent, useEffect, useRef, useState } from "react";
17
- import { queryKey } from "@/app/api/query-key";
18
- import { Button } from "@/components/ui/button";
19
- import { ShinyText } from "@/components/ui/shiny-text";
20
- import { ModelPicker } from "@/features/ai/components/model-picker";
21
- import { ProviderIcon } from "@/features/ai/components/provider-icon";
22
- import type { TextModelProviderId } from "@/features/ai/model.schema";
23
- import { TOOL_NAMES } from "@/features/ai/tools/tool-name";
24
- import type { MemoryNote } from "@/features/memory/memory.schema";
25
- import { cn } from "@/lib/utils";
26
-
27
- type KnownFact = { text: string; path: string };
28
-
29
- /** How long a finished edit's lines stay up before they clear. */
30
- const LINGER_MS = 4000;
31
-
32
- /** One transport for every edit: the model rides on each request, not on the hook. */
33
- const transport = new DefaultChatTransport({ api: queryKey.memoryEdit });
34
-
35
- /**
36
- * Editing memory in a line, floating over the list above the rail while its rail
37
- * button holds it open; closing it stops a run like leaving would. One send is
38
- * one streamed run (memory.edit): the model writes with memory's own tools as it
39
- * goes and each call is drawn as it arrives. Nothing about the exchange is kept —
40
- * the next send starts clean — and the model is picked here, never saved.
41
- */
42
- export function MemoryEdit({ notes }: { notes: MemoryNote[] }) {
43
- const [draft, setDraft] = useState("");
44
- const [model, setModel] = useState<{
45
- provider: TextModelProviderId | null;
46
- model: string;
47
- }>({ provider: null, model: "" });
48
- const [picking, setPicking] = useState(false);
49
- const {
50
- messages,
51
- sendMessage,
52
- setMessages,
53
- status,
54
- stop,
55
- error,
56
- clearError,
57
- } = useChat({ transport });
58
-
59
- // A run nobody is looking at has nobody to show its lines to
60
- const stopRef = useRef(stop);
61
- stopRef.current = stop;
62
- useEffect(
63
- () => () => {
64
- void stopRef.current();
65
- },
66
- [],
67
- );
68
-
69
- // Facts seen on screen, kept after they go so a finished change still reads as what it replaced
70
- const seen = useRef(new Map<number, KnownFact>());
71
- for (const note of notes) {
72
- for (const fact of note.facts) {
73
- seen.current.set(fact.id, { text: fact.text, path: note.path });
74
- }
75
- }
76
-
77
- const running = status === "submitted" || status === "streaming";
78
- const ready = Boolean(model.provider && model.model.trim());
79
- const reply = [...messages]
80
- .reverse()
81
- .find((message) => message.role === "assistant");
82
- const parts = reply?.parts ?? [];
83
- const calls = parts.filter(isToolUIPart);
84
- const words = parts
85
- .flatMap((part) => (part.type === "text" ? [part.text] : []))
86
- .join(" ")
87
- .trim();
88
- const failed =
89
- Boolean(error) || calls.some((call) => call.state === "output-error");
90
- const written = calls.filter(
91
- (call) =>
92
- call.state === "output-available" &&
93
- getToolName(call) !== TOOL_NAMES.memory_recall,
94
- ).length;
95
-
96
- useEffect(() => {
97
- if (status !== "ready" || failed || messages.length === 0) return;
98
- const clear = setTimeout(() => setMessages([]), LINGER_MS);
99
- return () => clearTimeout(clear);
100
- }, [status, failed, messages.length, setMessages]);
101
-
102
- const submit = (event: SubmitEvent) => {
103
- event.preventDefault();
104
- const said = draft.trim();
105
- if (!said || !ready || running) return;
106
- setDraft("");
107
- setPicking(false);
108
- clearError();
109
- // One send is one run: nothing from the last one rides along
110
- setMessages([]);
111
- void sendMessage({ text: said }, { body: { model } });
112
- };
113
-
114
- const line = running ? (
115
- <ShinyText text="Working on memory" className="text-xs" />
116
- ) : error ? (
117
- <span className="text-xs text-destructive">{error.message}</span>
118
- ) : reply ? (
119
- <span className="text-xs text-muted-foreground">
120
- {words ||
121
- (written === 0
122
- ? "Nothing to change"
123
- : written === 1
124
- ? "1 change saved"
125
- : `${written} changes saved`)}
126
- </span>
127
- ) : null;
128
-
129
- return (
130
- <div className="pointer-events-none absolute inset-x-0 bottom-18 z-10 flex justify-center px-8">
131
- <div className="pointer-events-auto flex w-full max-w-120 flex-col items-center gap-2">
132
- {picking && (
133
- <div className="w-full rounded-xl bg-popover p-2 shadow-lg ring-1 ring-foreground/10">
134
- <ModelPicker
135
- provider={model.provider}
136
- model={model.model}
137
- unset="Provider"
138
- onChange={setModel}
139
- />
140
- </div>
141
- )}
142
-
143
- {calls.length > 0 && (
144
- <ul className="w-full divide-y divide-border/60 overflow-hidden rounded-xl bg-popover shadow-lg ring-1 ring-foreground/10">
145
- {calls.map((call) => (
146
- <ChangeRow
147
- key={call.toolCallId}
148
- name={getToolName(call)}
149
- input={call.input}
150
- state={call.state}
151
- errorText={
152
- call.state === "output-error" ? call.errorText : undefined
153
- }
154
- known={seen.current}
155
- />
156
- ))}
157
- </ul>
158
- )}
159
-
160
- {line && <p className="max-w-full truncate px-1">{line}</p>}
161
-
162
- <form
163
- onSubmit={submit}
164
- className="flex h-10 w-full items-center gap-1.5 rounded-xl bg-popover pr-1.5 pl-3.5 shadow-lg ring-1 ring-foreground/10"
165
- >
166
- <input
167
- autoFocus
168
- value={draft}
169
- onChange={(event) => setDraft(event.target.value)}
170
- disabled={running}
171
- aria-label="Edit memory"
172
- placeholder="Tell memory what changed"
173
- className="min-w-0 flex-1 bg-transparent text-sm outline-none placeholder:text-muted-foreground disabled:opacity-60"
174
- />
175
- <Button
176
- type="button"
177
- size="xs"
178
- variant="ghost"
179
- onClick={() => setPicking(!picking)}
180
- className={cn("max-w-44", !ready && "text-muted-foreground")}
181
- >
182
- {ready && model.provider ? (
183
- <>
184
- <ProviderIcon provider={model.provider} className="size-3" />
185
- <span className="truncate">{model.model}</span>
186
- </>
187
- ) : (
188
- "Model"
189
- )}
190
- <ChevronDown className="text-muted-foreground" />
191
- </Button>
192
- <Button
193
- type="submit"
194
- size="icon-sm"
195
- loading={running}
196
- disabled={!draft.trim() || !ready || running}
197
- aria-label="Send"
198
- >
199
- {!running && <ArrowUp />}
200
- </Button>
201
- </form>
202
- </div>
203
- </div>
204
- );
205
- }
206
-
207
- type Change = {
208
- kind: "Remember" | "Replace" | "Forget" | "Rename" | "Opened";
209
- path: string;
210
- lines: { before?: string; after?: string }[];
211
- };
212
-
213
- /** What a call does, read off its arguments — still arriving while it streams — and the facts the screen has shown. */
214
- function describe(
215
- name: string,
216
- input: unknown,
217
- known: Map<number, KnownFact>,
218
- ): Change {
219
- const args = (input ?? {}) as {
220
- path?: string;
221
- factIds?: (number | null | undefined)[] | null;
222
- description?: string | null;
223
- facts?: ({ text?: string; replaces?: number | null } | null)[] | null;
224
- };
225
- const path = args.path ?? "";
226
-
227
- if (name === TOOL_NAMES.memory_recall) {
228
- return { kind: "Opened", path, lines: [] };
229
- }
230
-
231
- if (name === TOOL_NAMES.memory_describe) {
232
- return {
233
- kind: "Rename",
234
- path,
235
- lines: args.description ? [{ after: `“${args.description}”` }] : [],
236
- };
237
- }
238
-
239
- if (name === TOOL_NAMES.memory_forget) {
240
- const ids = (args.factIds ?? []).filter((id) => id != null);
241
- const facts = ids.map((id) => known.get(id));
242
- return {
243
- kind: "Forget",
244
- path: facts.find((fact) => fact)?.path ?? "",
245
- lines: ids.map((id, index) => ({
246
- before: facts[index]?.text ?? `Fact #${id}`,
247
- })),
248
- };
249
- }
250
-
251
- // A new note's line leads its first facts; a fact replacing one the screen has shown reads as the change
252
- const facts = (args.facts ?? []).filter((fact) => fact != null);
253
- const lines: Change["lines"] = facts.map((fact) =>
254
- fact.replaces != null
255
- ? {
256
- before: known.get(fact.replaces)?.text ?? `Fact #${fact.replaces}`,
257
- after: fact.text,
258
- }
259
- : { after: fact.text },
260
- );
261
- if (name === TOOL_NAMES.memory_create && args.description) {
262
- lines.unshift({ after: `“${args.description}”` });
263
- }
264
- return {
265
- kind: facts.some((fact) => fact.replaces != null) ? "Replace" : "Remember",
266
- path,
267
- lines,
268
- };
269
- }
270
-
271
- const GLYPHS = {
272
- Remember: Plus,
273
- Replace: Pencil,
274
- Forget: Minus,
275
- Rename: Pencil,
276
- Opened: BookOpen,
277
- } as const;
278
-
279
- function ChangeRow({
280
- name,
281
- input,
282
- state,
283
- errorText,
284
- known,
285
- }: {
286
- name: string;
287
- input: unknown;
288
- state: string;
289
- errorText?: string;
290
- known: Map<number, KnownFact>;
291
- }) {
292
- const change = describe(name, input, known);
293
- const Glyph = GLYPHS[change.kind];
294
- const broke = state === "output-error";
295
- const done = state === "output-available";
296
- return (
297
- <li className="flex animate-in items-start gap-2.5 px-3 py-2.5 duration-200 fade-in slide-in-from-bottom-1">
298
- <Glyph className="mt-1 size-3.5 shrink-0 text-muted-foreground" />
299
- <div className="min-w-0 flex-1 space-y-0.5">
300
- {change.lines.map((line, at) => (
301
- <div key={`${change.kind}-${at}`}>
302
- {line.before && (
303
- <p className="text-[13px] leading-5 text-muted-foreground/60 line-through">
304
- {line.before}
305
- </p>
306
- )}
307
- {line.after && (
308
- <p className="text-sm leading-5 text-foreground/90">
309
- {line.after}
310
- </p>
311
- )}
312
- </div>
313
- ))}
314
- <p className="pt-0.5 font-mono text-[11px] text-muted-foreground">
315
- {change.kind}
316
- {change.path && ` · ${change.path}`}
317
- </p>
318
- {broke && errorText && (
319
- <p className="text-xs text-destructive">{errorText}</p>
320
- )}
321
- </div>
322
- <span className="mt-0.5 flex size-5 shrink-0 items-center justify-center text-muted-foreground">
323
- {broke ? (
324
- <X className="size-3.5 text-destructive" />
325
- ) : done ? (
326
- <Check className="size-3.5" />
327
- ) : (
328
- <Loader2 className="size-3.5 animate-spin" />
329
- )}
330
- </span>
331
- </li>
332
- );
333
- }
@@ -1,4 +0,0 @@
1
- import { Cpu, type LucideIcon } from "lucide-react";
2
-
3
- /** The app's mark for memory. The settings nav and the call screen's tool line draw the same one. */
4
- export const MemoryMark: LucideIcon = Cpu;