cognova 0.2.9 → 0.2.11

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 (194) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_nuxt/{pHQcHl8n.js → 0NJ3PaRM.js} +1 -1
  3. package/.output/public/_nuxt/{CGgZuPnb.js → 0yk-pS3R.js} +2 -2
  4. package/.output/public/_nuxt/{C8gtQaKB.js → 10_wwHSz.js} +1 -1
  5. package/.output/public/_nuxt/{BaYtugUf.js → 1zUTf4AP.js} +1 -1
  6. package/.output/public/_nuxt/{B63LIwsW.js → 2dNDtTiv.js} +3 -3
  7. package/.output/public/_nuxt/{Gy6_ehml.js → 2nOqGUPr.js} +1 -1
  8. package/.output/public/_nuxt/{C6UTTaCP.js → 3jQMk_5H.js} +1 -1
  9. package/.output/public/_nuxt/{BX6vcvkp.js → 4K03TkGA.js} +1 -1
  10. package/.output/public/_nuxt/{DjmFlCHK.js → 6boMs_nF.js} +1 -1
  11. package/.output/public/_nuxt/{CybU4a95.js → 7oCGSglN.js} +1 -1
  12. package/.output/public/_nuxt/{CfO_d5gC.js → 8q5NepGW.js} +1 -1
  13. package/.output/public/_nuxt/{DdXVAzIg.js → B93pdGAW.js} +1 -1
  14. package/.output/public/_nuxt/{D1t0272g.js → BA_pRWwX.js} +1 -1
  15. package/.output/public/_nuxt/{Be5L93GM.js → BDyn4ApB.js} +3 -3
  16. package/.output/public/_nuxt/{DHScQdvh.js → BGgwYWjH.js} +1 -1
  17. package/.output/public/_nuxt/{FYOLNuMV.js → BH0QDWEm.js} +1 -1
  18. package/.output/public/_nuxt/{BVc_fOF1.js → BHtY0l0l.js} +1 -1
  19. package/.output/public/_nuxt/{C6HEirAm.js → BIXrSYwR.js} +1 -1
  20. package/.output/public/_nuxt/BK8S2ony.js +1 -0
  21. package/.output/public/_nuxt/{DTu0K_pX.js → BKXg-alD.js} +1 -1
  22. package/.output/public/_nuxt/{Pa936BQP.js → BLnYhy_t.js} +1 -1
  23. package/.output/public/_nuxt/{wgX1ldgZ.js → BR8bKz8h.js} +1 -1
  24. package/.output/public/_nuxt/{B-513wJW.js → BS2ZNXI1.js} +1 -1
  25. package/.output/public/_nuxt/{a9_LvIZ4.js → BUghTae1.js} +1 -1
  26. package/.output/public/_nuxt/{B8Ou5yh2.js → BXuWCWsJ.js} +1 -1
  27. package/.output/public/_nuxt/{D_tCgCFX.js → BYHCP8x7.js} +1 -1
  28. package/.output/public/_nuxt/{CY3x8iy3.js → BZrSPX0S.js} +1 -1
  29. package/.output/public/_nuxt/{BNBGEa-U.js → B_wilgcd.js} +1 -1
  30. package/.output/public/_nuxt/BaZwjF8o.js +1 -0
  31. package/.output/public/_nuxt/{BwdxQyyo.js → Bciqk4dX.js} +1 -1
  32. package/.output/public/_nuxt/{BhnONkIm.js → Beom-INj.js} +1 -1
  33. package/.output/public/_nuxt/{CzurfTnt.js → BfcLZ_fC.js} +1 -1
  34. package/.output/public/_nuxt/{DwAJIRGg.js → Bk6JUtIo.js} +1 -1
  35. package/.output/public/_nuxt/BkfI94R8.js +1 -0
  36. package/.output/public/_nuxt/{Cs_udj6A.js → BmOtR1wX.js} +1 -1
  37. package/.output/public/_nuxt/{D7iYVmH6.js → BmVLxnDU.js} +1 -1
  38. package/.output/public/_nuxt/{6lIxuL6n.js → BtHQ1T0f.js} +1 -1
  39. package/.output/public/_nuxt/{RRbnMIVe.js → ByYh0uRg.js} +1 -1
  40. package/.output/public/_nuxt/{DBuW01Fx.js → C27WoGNZ.js} +1 -1
  41. package/.output/public/_nuxt/{DJ4pqxg-.js → C2FxZbO_.js} +1 -1
  42. package/.output/public/_nuxt/{myNwwtfj.js → C2vq6Te8.js} +1 -1
  43. package/.output/public/_nuxt/{C3JOLqW1.js → C39dQ88F.js} +1 -1
  44. package/.output/public/_nuxt/{4nN41Tyd.js → C3NST0BU.js} +1 -1
  45. package/.output/public/_nuxt/{BltasKce.js → C4mwL7SE.js} +1 -1
  46. package/.output/public/_nuxt/{B1vDCixB.js → C5R5QaCA.js} +1 -1
  47. package/.output/public/_nuxt/{CwOUYOe5.js → C6qKcgOY.js} +1 -1
  48. package/.output/public/_nuxt/{DGJKfutb.js → C71_a1IX.js} +1 -1
  49. package/.output/public/_nuxt/{CrjNndEO.js → C9WIgRRL.js} +1 -1
  50. package/.output/public/_nuxt/{B5JDxHxC.js → CBTkrk2M.js} +1 -1
  51. package/.output/public/_nuxt/{UbZP7wjm.js → CEnSeCqn.js} +1 -1
  52. package/.output/public/_nuxt/{Cn83lLUb.js → CKxSHyww.js} +1 -1
  53. package/.output/public/_nuxt/{CbTu13wM.js → CLfF6dSn.js} +1 -1
  54. package/.output/public/_nuxt/{Bsdcw5gr.js → CPutXj8l.js} +1 -1
  55. package/.output/public/_nuxt/{CrW6y2-s.js → CQqCBrXj.js} +1 -1
  56. package/.output/public/_nuxt/{OrcbFmB1.js → CSKJ-Ahh.js} +1 -1
  57. package/.output/public/_nuxt/{XJYoLoTi.js → CTCcEJU3.js} +1 -1
  58. package/.output/public/_nuxt/{Bk9-HxOg.js → CVFwOzbl.js} +1 -1
  59. package/.output/public/_nuxt/{CqMgz85Z.js → CVdCqaby.js} +1 -1
  60. package/.output/public/_nuxt/{Cmj-BR0q.js → CVqlefTY.js} +1 -1
  61. package/.output/public/_nuxt/CWyMCJQH.js +1 -0
  62. package/.output/public/_nuxt/{xrh9hzzH.js → CY-QVcA5.js} +2 -2
  63. package/.output/public/_nuxt/{BQ1T6zWA.js → CY-cjAwJ.js} +1 -1
  64. package/.output/public/_nuxt/{CziltI1u.js → CYPO5o_C.js} +1 -1
  65. package/.output/public/_nuxt/{C1FhgWcI.js → CZRnNmU8.js} +1 -1
  66. package/.output/public/_nuxt/{BES6FzF5.js → CZVzFlpI.js} +1 -1
  67. package/.output/public/_nuxt/{CsbHYpNi.js → CZoEPC_Q.js} +3 -3
  68. package/.output/public/_nuxt/{DvATBMPl.js → Cc-2ziaZ.js} +1 -1
  69. package/.output/public/_nuxt/{D3RROe4s.js → ChcO9s3o.js} +1 -1
  70. package/.output/public/_nuxt/{CIUZAp6g.js → Cl-LOSDV.js} +1 -1
  71. package/.output/public/_nuxt/{BwJVN9k0.js → CobqYwkp.js} +1 -1
  72. package/.output/public/_nuxt/{Cmdr5BNz.js → CqNwHCpo.js} +1 -1
  73. package/.output/public/_nuxt/{HPOXd4gt.js → CuxrHsu-.js} +1 -1
  74. package/.output/public/_nuxt/{BYIq3eP8.js → CwPdIZ9J.js} +1 -1
  75. package/.output/public/_nuxt/{D-O8wAju.js → D0ifH682.js} +1 -1
  76. package/.output/public/_nuxt/{BwVt3BzR.js → D3AZaldL.js} +1 -1
  77. package/.output/public/_nuxt/{BE_OHTBv.js → D4UJwDQJ.js} +1 -1
  78. package/.output/public/_nuxt/{hm3ShyaF.js → D5jZq8b3.js} +1 -1
  79. package/.output/public/_nuxt/{pNqWPbXW.js → D5q8SnqE.js} +1 -1
  80. package/.output/public/_nuxt/{BgG2k-zy.js → D8M722pn.js} +1 -1
  81. package/.output/public/_nuxt/{B2MVZlI-.js → D8lwrAYS.js} +1 -1
  82. package/.output/public/_nuxt/{DYu_NYj3.js → D9nmzBAw.js} +1 -1
  83. package/.output/public/_nuxt/{DBKxzQ3U.js → DC4idAGt.js} +1 -1
  84. package/.output/public/_nuxt/{qWWnsfRV.js → DEd2xVbS.js} +1 -1
  85. package/.output/public/_nuxt/{nTCVPCKg.js → DH4YkDAi.js} +1 -1
  86. package/.output/public/_nuxt/{DmmQUhEb.js → DJTCT0bl.js} +1 -1
  87. package/.output/public/_nuxt/{rRYEvKFu.js → DNP5E1bC.js} +1 -1
  88. package/.output/public/_nuxt/{DI1FIvaM.js → DO9SFIh1.js} +1 -1
  89. package/.output/public/_nuxt/DPklr_tJ.js +2 -0
  90. package/.output/public/_nuxt/{-JdScH3W.js → DQM4eBdt.js} +1 -1
  91. package/.output/public/_nuxt/{5MZBbx-H.js → DQh6I9z9.js} +1 -1
  92. package/.output/public/_nuxt/{DLuRYg2p.js → DS2wStH1.js} +1 -1
  93. package/.output/public/_nuxt/{0EY9Msdx.js → DTAStixR.js} +1 -1
  94. package/.output/public/_nuxt/{fVkHtgGF.js → DTGenhcA.js} +1 -1
  95. package/.output/public/_nuxt/{4Qy4OdWt.js → DUAAXJ6Q.js} +1 -1
  96. package/.output/public/_nuxt/{DTrFhdRO.js → DUVzIl3o.js} +1 -1
  97. package/.output/public/_nuxt/{Dj2opPDu.js → DXdwpJ-I.js} +1 -1
  98. package/.output/public/_nuxt/{C8tXHRIo.js → DY3uK7wM.js} +1 -1
  99. package/.output/public/_nuxt/{D76Dw8rw.js → DYbZBZet.js} +1 -1
  100. package/.output/public/_nuxt/{DSgubznn.js → D_4LPm1U.js} +1 -1
  101. package/.output/public/_nuxt/{D8gh62A0.js → Db4KMnt8.js} +1 -1
  102. package/.output/public/_nuxt/{JQV21WEV.js → DcJbYLTp.js} +1 -1
  103. package/.output/public/_nuxt/{D5G5UL_g.js → DfF81NlA.js} +1 -1
  104. package/.output/public/_nuxt/{HlbU_z9a.js → DhI5cA_n.js} +1 -1
  105. package/.output/public/_nuxt/{CaLO8sre.js → DhuOKJda.js} +1 -1
  106. package/.output/public/_nuxt/{CDradKPE.js → Di-Nc75e.js} +1 -1
  107. package/.output/public/_nuxt/{C2DZeD9G.js → Djs0Tlpa.js} +1 -1
  108. package/.output/public/_nuxt/DmmdPt_5.js +1 -0
  109. package/.output/public/_nuxt/{DSynhNOO.js → Dn5a-guE.js} +1 -1
  110. package/.output/public/_nuxt/{k16puyWi.js → DtjjnHnt.js} +1 -1
  111. package/.output/public/_nuxt/{CEJh-OAl.js → DuvzM-P1.js} +1 -1
  112. package/.output/public/_nuxt/{D7WbsJsa.js → DwY7rCd_.js} +1 -1
  113. package/.output/public/_nuxt/{REP2-rzf.js → Dya5oK8u.js} +1 -1
  114. package/.output/public/_nuxt/{CIJ2MJdc.js → DzA58_Lm.js} +1 -1
  115. package/.output/public/_nuxt/{Bp9kHdw6.js → DzGy77Vr.js} +1 -1
  116. package/.output/public/_nuxt/{DfIqFkyp.js → E3rXPwU8.js} +1 -1
  117. package/.output/public/_nuxt/{NusIKwmA.js → EgKnQnf-.js} +1 -1
  118. package/.output/public/_nuxt/{Clr3MHUr.js → GtEM7xVU.js} +1 -1
  119. package/.output/public/_nuxt/{DQd-GXKJ.js → H6JbrRBU.js} +1 -1
  120. package/.output/public/_nuxt/{BzTjmQCD.js → ILEvizzp.js} +1 -1
  121. package/.output/public/_nuxt/{DUDbJONU.js → JX1oqJI9.js} +1 -1
  122. package/.output/public/_nuxt/{BsnhHCOa.js → JbHa4oXq.js} +1 -1
  123. package/.output/public/_nuxt/{BE4Ndhrq.js → Kw0zy3FG.js} +1 -1
  124. package/.output/public/_nuxt/{BOGXUgGg.js → N5XtbYVD.js} +1 -1
  125. package/.output/public/_nuxt/{Oy4_RPEZ.js → PP_4ebzl.js} +1 -1
  126. package/.output/public/_nuxt/{DkhxRAb3.js → SrncdpaW.js} +1 -1
  127. package/.output/public/_nuxt/{C8wa4Wh4.js → U1MWjQMi.js} +1 -1
  128. package/.output/public/_nuxt/{CGfVTQUF.js → Um1vPiAz.js} +1 -1
  129. package/.output/public/_nuxt/{CH8kNq6W.js → XCjS70z4.js} +1 -1
  130. package/.output/public/_nuxt/{BZqdzrSw.js → YX8avsvq.js} +2 -2
  131. package/.output/public/_nuxt/{1zIQX9mh.js → _cy8R3nk.js} +1 -1
  132. package/.output/public/_nuxt/{DJoRBCVm.js → apYB9dr5.js} +1 -1
  133. package/.output/public/_nuxt/builds/latest.json +1 -1
  134. package/.output/public/_nuxt/builds/meta/515be38f-7222-4e4b-80cb-cef7594b1834.json +1 -0
  135. package/.output/public/_nuxt/entry.NKPfH2kE.css +1 -0
  136. package/.output/public/_nuxt/{B6bnHNWY.js → fbyIeNkc.js} +1 -1
  137. package/.output/public/_nuxt/{BjI5wb_q.js → g5MjDvm5.js} +1 -1
  138. package/.output/public/_nuxt/{BfECQayu.js → gTrVszwd.js} +1 -1
  139. package/.output/public/_nuxt/{TGVM5w2K.js → ixlNW2So.js} +1 -1
  140. package/.output/public/_nuxt/{CXBOHJ2W.js → nnQqD5pb.js} +1 -1
  141. package/.output/public/_nuxt/{C4ScCUjy.js → rfGRTJJW.js} +1 -1
  142. package/.output/public/_nuxt/{DCL9gWFw.js → t8aDAkZ5.js} +1 -1
  143. package/.output/public/_nuxt/{BJ8jbKuq.js → vIOxcXKR.js} +1 -1
  144. package/.output/public/_nuxt/{DA2RowFe.js → vScW1Zgm.js} +1 -1
  145. package/.output/public/_nuxt/{B6wYZD_K.js → wO6z2ugJ.js} +1 -1
  146. package/.output/public/_nuxt/{CwKe2KkK.js → x6FRJ5ac.js} +1 -1
  147. package/.output/public/_nuxt/{D7DTZ0iS.js → zq-a1TeT.js} +1 -1
  148. package/.output/server/chunks/build/{chat-CZMiB68R.mjs → chat-CR3JIVEq.mjs} +65 -11
  149. package/.output/server/chunks/build/chat-CR3JIVEq.mjs.map +1 -0
  150. package/.output/server/chunks/build/client.precomputed.mjs +1 -1
  151. package/.output/server/chunks/build/server.mjs +2 -2
  152. package/.output/server/chunks/build/styles.mjs +2 -2
  153. package/.output/server/chunks/build/{usage-CSrBh4Or.mjs → usage-BHdQZbfI.mjs} +9 -5
  154. package/.output/server/chunks/build/{usage-CSrBh4Or.mjs.map → usage-BHdQZbfI.mjs.map} +1 -1
  155. package/.output/server/chunks/nitro/nitro.mjs +1094 -863
  156. package/.output/server/chunks/nitro/nitro.mjs.map +1 -1
  157. package/.output/server/chunks/routes/_ws/chat.mjs +2 -1
  158. package/.output/server/chunks/routes/_ws/chat.mjs.map +1 -1
  159. package/.output/server/chunks/routes/api/conversations/_id_.delete.mjs +4 -1
  160. package/.output/server/chunks/routes/api/conversations/_id_.delete.mjs.map +1 -1
  161. package/.output/server/chunks/routes/api/index.get3.mjs +1 -1
  162. package/.output/server/chunks/routes/api/index.get3.mjs.map +1 -1
  163. package/.output/server/chunks/routes/api/usage/stats.get.mjs +2 -0
  164. package/.output/server/chunks/routes/api/usage/stats.get.mjs.map +1 -1
  165. package/.output/server/package.json +1 -1
  166. package/Claude/hooks/session-start.py +23 -0
  167. package/app/components/chat/ConversationList.vue +7 -1
  168. package/app/components/chat/MessageBubble.vue +45 -1
  169. package/app/components/usage/UsageRecordsTable.vue +4 -2
  170. package/app/components/usage/UsageSourceDonut.client.vue +4 -2
  171. package/app/components/usage/UsageTopConsumers.vue +4 -2
  172. package/app/composables/useChat.ts +3 -0
  173. package/package.json +1 -1
  174. package/server/api/conversations/[id].delete.ts +9 -0
  175. package/server/api/conversations/index.get.ts +2 -1
  176. package/server/api/usage/stats.get.ts +2 -0
  177. package/server/bridge/responder.ts +276 -0
  178. package/server/bridge/router.ts +6 -4
  179. package/server/db/schema.ts +3 -1
  180. package/server/drizzle/migrations/0015_great_mephistopheles.sql +2 -0
  181. package/server/drizzle/migrations/meta/0015_snapshot.json +1972 -0
  182. package/server/drizzle/migrations/meta/_journal.json +7 -0
  183. package/server/routes/_ws/chat.ts +2 -1
  184. package/server/utils/log-token-usage.ts +1 -1
  185. package/shared/types/index.ts +6 -0
  186. package/.output/public/_nuxt/1lOC4Si0.js +0 -1
  187. package/.output/public/_nuxt/AUdD1uDD.js +0 -1
  188. package/.output/public/_nuxt/DMy2sxuC.js +0 -1
  189. package/.output/public/_nuxt/DlSJ4TF_.js +0 -1
  190. package/.output/public/_nuxt/PzQHm02e.js +0 -1
  191. package/.output/public/_nuxt/builds/meta/613faa5d-8ace-45e0-8274-b611cc4fd1ad.json +0 -1
  192. package/.output/public/_nuxt/entry.DkvuF_CR.css +0 -1
  193. package/.output/public/_nuxt/svWfwR0T.js +0 -2
  194. package/.output/server/chunks/build/chat-CZMiB68R.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"nitro.mjs","sources":["../../../../node_modules/.pnpm/uncrypto@0.1.3/node_modules/uncrypto/dist/crypto.node.mjs","../../../../node_modules/.pnpm/crossws@0.3.5/node_modules/crossws/dist/shared/crossws.DfCzGthR.mjs","../../../../node_modules/.pnpm/crossws@0.3.5/node_modules/crossws/dist/shared/crossws.D9ehKjSh.mjs","../../../../node_modules/.pnpm/crossws@0.3.5/node_modules/crossws/dist/shared/crossws.By9qWDAI.mjs","../../../../node_modules/.pnpm/crossws@0.3.5/node_modules/crossws/dist/shared/crossws.CipVM6lf.mjs","../../../../node_modules/.pnpm/crossws@0.3.5/node_modules/crossws/dist/adapters/node.mjs","../../../../node_modules/.pnpm/destr@2.0.5/node_modules/destr/dist/index.mjs","../../../../node_modules/.pnpm/ufo@1.6.1/node_modules/ufo/dist/index.mjs","../../../../node_modules/.pnpm/cookie-es@1.2.2/node_modules/cookie-es/dist/index.mjs","../../../../node_modules/.pnpm/radix3@1.1.2/node_modules/radix3/dist/index.mjs","../../../../node_modules/.pnpm/defu@6.1.4/node_modules/defu/dist/defu.mjs","../../../../node_modules/.pnpm/node-mock-http@1.0.4/node_modules/node-mock-http/dist/index.mjs","../../../../node_modules/.pnpm/h3@1.15.4/node_modules/h3/dist/index.mjs","../../../../node_modules/.pnpm/hookable@5.5.3/node_modules/hookable/dist/index.mjs","../../../../node_modules/.pnpm/node-fetch-native@1.6.7/node_modules/node-fetch-native/dist/native.mjs","../../../../node_modules/.pnpm/ofetch@1.5.1/node_modules/ofetch/dist/shared/ofetch.CWycOUEr.mjs","../../../../node_modules/.pnpm/ofetch@1.5.1/node_modules/ofetch/dist/node.mjs","../../../../node_modules/.pnpm/unstorage@1.17.3_db0@0.3.4_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8___ioredis@5.8.2/node_modules/unstorage/dist/shared/unstorage.zVDD2mZo.mjs","../../../../node_modules/.pnpm/unstorage@1.17.3_db0@0.3.4_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8___ioredis@5.8.2/node_modules/unstorage/dist/index.mjs","../../../../node_modules/.pnpm/unstorage@1.17.3_db0@0.3.4_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8___ioredis@5.8.2/node_modules/unstorage/drivers/utils/index.mjs","../../../../node_modules/.pnpm/unstorage@1.17.3_db0@0.3.4_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8___ioredis@5.8.2/node_modules/unstorage/drivers/utils/node-fs.mjs","../../../../node_modules/.pnpm/unstorage@1.17.3_db0@0.3.4_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8___ioredis@5.8.2/node_modules/unstorage/drivers/fs-lite.mjs","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/storage.mjs","../../../../node_modules/.pnpm/ohash@2.0.11/node_modules/ohash/dist/shared/ohash.D__AXeF1.mjs","../../../../node_modules/.pnpm/ohash@2.0.11/node_modules/ohash/dist/crypto/node/index.mjs","../../../../node_modules/.pnpm/ohash@2.0.11/node_modules/ohash/dist/index.mjs","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/hash.mjs","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/cache.mjs","../../../../node_modules/.pnpm/klona@2.0.6/node_modules/klona/dist/index.mjs","../../../../node_modules/.pnpm/@nuxt+nitro-server@4.2.2_db0@0.3.4_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8___d_a6b79d18884e342815abf8a85cd13f2d/node_modules/@nuxt/nitro-server/dist/runtime/utils/config.js","../../../../app/app.config.ts","../../../../node_modules/.pnpm/scule@1.3.0/node_modules/scule/dist/index.mjs","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/utils.env.mjs","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/config.mjs","../../../../node_modules/.pnpm/unctx@2.5.0/node_modules/unctx/dist/index.mjs","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/context.mjs","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/route-rules.mjs","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/utils.mjs","../../../../node_modules/.pnpm/@nuxt+nitro-server@4.2.2_db0@0.3.4_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8___d_a6b79d18884e342815abf8a85cd13f2d/node_modules/@nuxt/nitro-server/dist/runtime/utils/error.js","../../../../node_modules/.pnpm/@nuxt+nitro-server@4.2.2_db0@0.3.4_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8___d_a6b79d18884e342815abf8a85cd13f2d/node_modules/@nuxt/nitro-server/dist/runtime/handlers/error.js","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/error/utils.mjs","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/error/prod.mjs","../../../../node_modules/.pnpm/@nuxtjs+color-mode@3.5.2_magicast@0.5.1/node_modules/@nuxtjs/color-mode/dist/runtime/nitro-plugin.js","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/plugin.mjs","../../../../server/plugins/00.env-validate.ts","../../../../server/plugins/01.api-token.ts","../../../../server/db/schema.ts","../../../../server/utils/db-state.ts","../../../../server/db/index.ts","../../../../server/db/migrate.ts","../../../../server/utils/auth.ts","../../../../server/db/seed.ts","../../../../server/plugins/02.database.ts","../../../../server/utils/path-validator.ts","../../../../server/utils/frontmatter.ts","../../../../server/utils/document-sync.ts","../../../../server/plugins/03.file-watcher.ts","../../../../server/utils/agent-registry.ts","../../../../server/utils/notification-bus.ts","../../../../server/utils/notify-resource.ts","../../../../server/utils/log-token-usage.ts","../../../../server/services/agent-executor.ts","../../../../server/services/cron-scheduler.ts","../../../../server/utils/agent-cleanup.ts","../../../../server/plugins/04.cron-agents.ts","../../../../server/plugins/05.skills-catalog.ts","../../../../server/bridge/registry.ts","../../../../server/utils/crypto.ts","../../../../server/utils/get-secret.ts","../../../../server/bridge/router.ts","../../../../server/bridge/adapters/telegram.ts","../../../../server/bridge/adapters/discord.ts","../../../../server/bridge/adapters/imessage.ts","../../../../server/bridge/adapters/google.ts","../../../../server/bridge/adapters/email.ts","../../../../server/bridge/lifecycle.ts","../../../../server/plugins/06.message-bridge.ts","../../../../node_modules/.pnpm/pathe@2.0.3/node_modules/pathe/dist/shared/pathe.M-eThtNZ.mjs","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/static.mjs","../../../../server/middleware/auth.ts","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/renderer.mjs","../../../../node_modules/.pnpm/@nuxt+nitro-server@4.2.2_db0@0.3.4_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8___d_a6b79d18884e342815abf8a85cd13f2d/node_modules/@nuxt/nitro-server/dist/runtime/utils/paths.js","../../../../node_modules/.pnpm/ufo@1.6.3/node_modules/ufo/dist/index.mjs","../../../../shared/utils/language-detection.ts","../../../../shared/utils/notification-defaults.ts","../../../../server/utils/chat-session-manager.ts","../../../../server/utils/db-guard.ts","../../../../server/utils/pty-manager.ts","../../../../server/utils/skills-path.ts","../../../../node_modules/.cache/nuxt/.nuxt/nuxt-icon-server-bundle.mjs","../../../../node_modules/.pnpm/@nuxt+icon@2.1.1_magicast@0.5.1_vite@7.3.0_@types+node@25.0.8_jiti@2.6.1_lightningcss@1_01287b657f4a2f684624a151274b0e62/node_modules/@nuxt/icon/dist/runtime/server/api.js","../../../../node_modules/.pnpm/@nuxtjs+mdc@0.20.0_magicast@0.5.1/node_modules/@nuxtjs/mdc/dist/runtime/highlighter/event-handler.js","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/app.mjs","../../../../node_modules/.pnpm/cookie-es@2.0.0/node_modules/cookie-es/dist/index.mjs","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/lib/http-graceful-shutdown.mjs","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/shutdown.mjs","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/presets/node/runtime/node-server.mjs"],"names":["isPlainObject","decode","JOIN_LEADING_SLASH_RE","withTrailingSlash","hasLeadingSlash","withLeadingSlash","joinURL","getQuery","isNonEmptyURL","parse","tryDecode","serialize","createRouter","f","h","c","i","l","createError","process","parse$1","mergeHeaders","s","nodeFetch","fetch","Headers","Headers$1","AbortController","AbortController$1","$fetch","normalizeKey","defineDriver","DRIVER_NAME","dirname","fsPromises","resolve","fsp","hash","_inlineAppConfig","createRadixRouter","join","schema.user","schema.session","schema.account","schema.verification","existsSync","createHash","basename","readFile","schema.documents","writeFile","readdir","watch","__publicField","EventEmitter","schema.tokenUsage","schema.cronAgentRuns","schema.cronAgents","schema.skillsCatalog","schema.bridgeMessages","_a","_b","_c","_d","normalized","schema.bridges","session","pty","colonIdx","key","val","nitroApp","callNodeRequestHandler","fetchNodeRequestHandler","gracefulShutdown","HttpsServer","HttpServer","wsAdapter"],"mappings":"","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,31,32,33,34,35,36,37,38,39,40,41,42,43,77,78,80,81,82,89,90,91,92,93,94,95,96]}
1
+ {"version":3,"file":"nitro.mjs","sources":["../../../../node_modules/.pnpm/uncrypto@0.1.3/node_modules/uncrypto/dist/crypto.node.mjs","../../../../node_modules/.pnpm/crossws@0.3.5/node_modules/crossws/dist/shared/crossws.DfCzGthR.mjs","../../../../node_modules/.pnpm/crossws@0.3.5/node_modules/crossws/dist/shared/crossws.D9ehKjSh.mjs","../../../../node_modules/.pnpm/crossws@0.3.5/node_modules/crossws/dist/shared/crossws.By9qWDAI.mjs","../../../../node_modules/.pnpm/crossws@0.3.5/node_modules/crossws/dist/shared/crossws.CipVM6lf.mjs","../../../../node_modules/.pnpm/crossws@0.3.5/node_modules/crossws/dist/adapters/node.mjs","../../../../node_modules/.pnpm/destr@2.0.5/node_modules/destr/dist/index.mjs","../../../../node_modules/.pnpm/ufo@1.6.1/node_modules/ufo/dist/index.mjs","../../../../node_modules/.pnpm/cookie-es@1.2.2/node_modules/cookie-es/dist/index.mjs","../../../../node_modules/.pnpm/radix3@1.1.2/node_modules/radix3/dist/index.mjs","../../../../node_modules/.pnpm/defu@6.1.4/node_modules/defu/dist/defu.mjs","../../../../node_modules/.pnpm/node-mock-http@1.0.4/node_modules/node-mock-http/dist/index.mjs","../../../../node_modules/.pnpm/h3@1.15.4/node_modules/h3/dist/index.mjs","../../../../node_modules/.pnpm/hookable@5.5.3/node_modules/hookable/dist/index.mjs","../../../../node_modules/.pnpm/node-fetch-native@1.6.7/node_modules/node-fetch-native/dist/native.mjs","../../../../node_modules/.pnpm/ofetch@1.5.1/node_modules/ofetch/dist/shared/ofetch.CWycOUEr.mjs","../../../../node_modules/.pnpm/ofetch@1.5.1/node_modules/ofetch/dist/node.mjs","../../../../node_modules/.pnpm/unstorage@1.17.3_db0@0.3.4_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8___ioredis@5.8.2/node_modules/unstorage/dist/shared/unstorage.zVDD2mZo.mjs","../../../../node_modules/.pnpm/unstorage@1.17.3_db0@0.3.4_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8___ioredis@5.8.2/node_modules/unstorage/dist/index.mjs","../../../../node_modules/.pnpm/unstorage@1.17.3_db0@0.3.4_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8___ioredis@5.8.2/node_modules/unstorage/drivers/utils/index.mjs","../../../../node_modules/.pnpm/unstorage@1.17.3_db0@0.3.4_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8___ioredis@5.8.2/node_modules/unstorage/drivers/utils/node-fs.mjs","../../../../node_modules/.pnpm/unstorage@1.17.3_db0@0.3.4_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8___ioredis@5.8.2/node_modules/unstorage/drivers/fs-lite.mjs","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/storage.mjs","../../../../node_modules/.pnpm/ohash@2.0.11/node_modules/ohash/dist/shared/ohash.D__AXeF1.mjs","../../../../node_modules/.pnpm/ohash@2.0.11/node_modules/ohash/dist/crypto/node/index.mjs","../../../../node_modules/.pnpm/ohash@2.0.11/node_modules/ohash/dist/index.mjs","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/hash.mjs","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/cache.mjs","../../../../node_modules/.pnpm/klona@2.0.6/node_modules/klona/dist/index.mjs","../../../../node_modules/.pnpm/@nuxt+nitro-server@4.2.2_db0@0.3.4_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8___d_a6b79d18884e342815abf8a85cd13f2d/node_modules/@nuxt/nitro-server/dist/runtime/utils/config.js","../../../../app/app.config.ts","../../../../node_modules/.pnpm/scule@1.3.0/node_modules/scule/dist/index.mjs","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/utils.env.mjs","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/config.mjs","../../../../node_modules/.pnpm/unctx@2.5.0/node_modules/unctx/dist/index.mjs","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/context.mjs","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/route-rules.mjs","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/utils.mjs","../../../../node_modules/.pnpm/@nuxt+nitro-server@4.2.2_db0@0.3.4_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8___d_a6b79d18884e342815abf8a85cd13f2d/node_modules/@nuxt/nitro-server/dist/runtime/utils/error.js","../../../../node_modules/.pnpm/@nuxt+nitro-server@4.2.2_db0@0.3.4_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8___d_a6b79d18884e342815abf8a85cd13f2d/node_modules/@nuxt/nitro-server/dist/runtime/handlers/error.js","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/error/utils.mjs","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/error/prod.mjs","../../../../node_modules/.pnpm/@nuxtjs+color-mode@3.5.2_magicast@0.5.1/node_modules/@nuxtjs/color-mode/dist/runtime/nitro-plugin.js","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/plugin.mjs","../../../../server/plugins/00.env-validate.ts","../../../../server/plugins/01.api-token.ts","../../../../server/db/schema.ts","../../../../server/utils/db-state.ts","../../../../server/db/index.ts","../../../../server/db/migrate.ts","../../../../server/utils/auth.ts","../../../../server/db/seed.ts","../../../../server/plugins/02.database.ts","../../../../server/utils/path-validator.ts","../../../../server/utils/frontmatter.ts","../../../../server/utils/document-sync.ts","../../../../server/plugins/03.file-watcher.ts","../../../../server/utils/agent-registry.ts","../../../../server/utils/notification-bus.ts","../../../../server/utils/notify-resource.ts","../../../../server/utils/log-token-usage.ts","../../../../server/services/agent-executor.ts","../../../../server/services/cron-scheduler.ts","../../../../server/utils/agent-cleanup.ts","../../../../server/plugins/04.cron-agents.ts","../../../../server/plugins/05.skills-catalog.ts","../../../../server/bridge/registry.ts","../../../../server/utils/crypto.ts","../../../../server/utils/get-secret.ts","../../../../server/bridge/responder.ts","../../../../server/bridge/router.ts","../../../../server/bridge/adapters/telegram.ts","../../../../server/bridge/adapters/discord.ts","../../../../server/bridge/adapters/imessage.ts","../../../../server/bridge/adapters/google.ts","../../../../server/bridge/adapters/email.ts","../../../../server/bridge/lifecycle.ts","../../../../server/plugins/06.message-bridge.ts","../../../../node_modules/.pnpm/pathe@2.0.3/node_modules/pathe/dist/shared/pathe.M-eThtNZ.mjs","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/static.mjs","../../../../server/middleware/auth.ts","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/renderer.mjs","../../../../node_modules/.pnpm/@nuxt+nitro-server@4.2.2_db0@0.3.4_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8___d_a6b79d18884e342815abf8a85cd13f2d/node_modules/@nuxt/nitro-server/dist/runtime/utils/paths.js","../../../../node_modules/.pnpm/ufo@1.6.3/node_modules/ufo/dist/index.mjs","../../../../shared/utils/language-detection.ts","../../../../shared/utils/notification-defaults.ts","../../../../server/utils/chat-session-manager.ts","../../../../server/utils/db-guard.ts","../../../../server/utils/pty-manager.ts","../../../../server/utils/skills-path.ts","../../../../node_modules/.cache/nuxt/.nuxt/nuxt-icon-server-bundle.mjs","../../../../node_modules/.pnpm/@nuxt+icon@2.1.1_magicast@0.5.1_vite@7.3.0_@types+node@25.0.8_jiti@2.6.1_lightningcss@1_01287b657f4a2f684624a151274b0e62/node_modules/@nuxt/icon/dist/runtime/server/api.js","../../../../node_modules/.pnpm/@nuxtjs+mdc@0.20.0_magicast@0.5.1/node_modules/@nuxtjs/mdc/dist/runtime/highlighter/event-handler.js","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/app.mjs","../../../../node_modules/.pnpm/cookie-es@2.0.0/node_modules/cookie-es/dist/index.mjs","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/lib/http-graceful-shutdown.mjs","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/runtime/internal/shutdown.mjs","../../../../node_modules/.pnpm/nitropack@2.12.9_drizzle-orm@0.45.1_kysely@0.28.10_postgres@3.4.8_/node_modules/nitropack/dist/presets/node/runtime/node-server.mjs"],"names":["isPlainObject","decode","JOIN_LEADING_SLASH_RE","withTrailingSlash","hasLeadingSlash","withLeadingSlash","joinURL","getQuery","isNonEmptyURL","parse","tryDecode","serialize","createRouter","f","h","c","i","l","createError","process","parse$1","mergeHeaders","s","nodeFetch","fetch","Headers","Headers$1","AbortController","AbortController$1","$fetch","normalizeKey","defineDriver","DRIVER_NAME","dirname","fsPromises","resolve","fsp","hash","_inlineAppConfig","createRadixRouter","join","schema.user","schema.session","schema.account","schema.verification","existsSync","createHash","basename","readFile","schema.documents","writeFile","readdir","watch","__publicField","EventEmitter","schema.tokenUsage","schema.cronAgentRuns","schema.cronAgents","schema.skillsCatalog","schema.conversations","randomUUID","schema.memoryChunks","schema.bridgeMessages","schema.conversationMessages","_a","_b","_c","_d","normalized","schema.bridges","session","pty","colonIdx","key","val","nitroApp","callNodeRequestHandler","fetchNodeRequestHandler","gracefulShutdown","HttpsServer","HttpServer","wsAdapter"],"mappings":"","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,31,32,33,34,35,36,37,38,39,40,41,42,43,78,79,81,82,83,90,91,92,93,94,95,96,97]}
@@ -104,7 +104,8 @@ async function handleSend(peer, message, conversationId) {
104
104
  await db.insert(conversationMessages).values({
105
105
  conversationId: convId,
106
106
  role: "user",
107
- content: JSON.stringify([{ type: "text", text: message }])
107
+ content: JSON.stringify([{ type: "text", text: message }]),
108
+ source: "web"
108
109
  });
109
110
  const session = chatSessionManager.startSession(convId, message, resumeSessionId);
110
111
  send(peer, { type: "chat:stream_start", conversationId: convId });
@@ -1 +1 @@
1
- {"version":3,"file":"chat.mjs","sources":["../../../../../server/routes/_ws/chat.ts"],"names":["schema.conversations","schema.conversationMessages"],"mappings":"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"}
1
+ {"version":3,"file":"chat.mjs","sources":["../../../../../server/routes/_ws/chat.ts"],"names":["schema.conversations","schema.conversationMessages"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { d as defineEventHandler, r as requireDb, g as getRouterParam, a as getDb, v as conversations, n as notifyResourceChange } from '../../../nitro/nitro.mjs';
1
+ import { d as defineEventHandler, r as requireDb, g as getRouterParam, a as getDb, v as conversations, c as createError, n as notifyResourceChange } from '../../../nitro/nitro.mjs';
2
2
  import { eq } from 'drizzle-orm';
3
3
  import '@anthropic-ai/claude-agent-sdk';
4
4
  import 'module';
@@ -42,6 +42,9 @@ const _id__delete = defineEventHandler(async (event) => {
42
42
  requireDb();
43
43
  const id = getRouterParam(event, "id");
44
44
  const db = getDb();
45
+ const [conv] = await db.select({ isMain: conversations.isMain }).from(conversations).where(eq(conversations.id, id)).limit(1);
46
+ if (conv == null ? void 0 : conv.isMain)
47
+ throw createError({ statusCode: 403, message: "Cannot delete Main Chat" });
45
48
  await db.delete(conversations).where(eq(conversations.id, id));
46
49
  notifyResourceChange({ resource: "conversation", action: "delete", resourceId: id });
47
50
  return { data: { success: true } };
@@ -1 +1 @@
1
- {"version":3,"file":"_id_.delete.mjs","sources":["../../../../../../server/api/conversations/[id].delete.ts"],"names":["schema.conversations"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,oBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;AACA,EAAA,SAAA,CAAA,CAAA;AAEA,EAAA,MAAA,EAAA,GAAA,cAAA,CAAA,KAAA,EAAA,IAAA,CAAA;AACA,EAAA,MAAA,KAAA,KAAA,EAAA;AAEA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAAA,aAAA,CAAA,CACA,KAAA,CAAA,EAAA,CAAAA,aAAA,CAAA,EAAA,EAAA,EAAA,CAAA,CAAA;AAEA,EAAA,oBAAA,CAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,QAAA,EAAA,UAAA,EAAA,IAAA,CAAA;AAEA,EAAA,OAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,MAAA,EAAA;AACA,CAAA,CAAA;;;;"}
1
+ {"version":3,"file":"_id_.delete.mjs","sources":["../../../../../../server/api/conversations/[id].delete.ts"],"names":["schema.conversations"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,oBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;AACA,EAAA,SAAA,CAAA,CAAA;AAEA,EAAA,MAAA,EAAA,GAAA,cAAA,CAAA,KAAA,EAAA,IAAA,CAAA;AACA,EAAA,MAAA,KAAA,KAAA,EAAA;AAGA,EAAA,MAAA,CAAA,IAAA,CAAA,GAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,MAAA,EAAAA,aAAA,CAAA,MAAA,EAAA,CAAA,CACA,KAAAA,aAAA,CAAA,CACA,KAAA,CAAA,EAAA,CAAAA,aAAA,CAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CACA,KAAA,CAAA,CAAA,CAAA;AAEA,EAAA,IAAA,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAA,MAAA;AACA,IAAA,MAAA,YAAA,EAAA,UAAA,EAAA,GAAA,EAAA,OAAA,EAAA,2BAAA,CAAA;AAEA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAAA,aAAA,CAAA,CACA,KAAA,CAAA,EAAA,CAAAA,aAAA,CAAA,EAAA,EAAA,EAAA,CAAA,CAAA;AAEA,EAAA,oBAAA,CAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,QAAA,EAAA,UAAA,EAAA,IAAA,CAAA;AAEA,EAAA,OAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,MAAA,EAAA;AACA,CAAA,CAAA;;;;"}
@@ -41,7 +41,7 @@ import 'consola';
41
41
  const index_get = defineEventHandler(async (event) => {
42
42
  requireDb();
43
43
  const db = getDb();
44
- const conversations$1 = await db.select().from(conversations).orderBy(desc(conversations.startedAt)).limit(50);
44
+ const conversations$1 = await db.select().from(conversations).orderBy(desc(conversations.isMain), desc(conversations.startedAt)).limit(50);
45
45
  return { data: conversations$1 };
46
46
  });
47
47
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.get3.mjs","sources":["../../../../../server/api/conversations/index.get.ts"],"names":["conversations","schema.conversations"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,kBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;AACA,EAAA,SAAA,CAAA,CAAA;AAEA,EAAA,MAAA,KAAA,KAAA,EAAA;AAEA,EAAA,MAAAA,kBAAA,MAAA,EAAA,CAAA,MAAA,EAAA,CACA,KAAAC,aAAA,CAAA,CACA,OAAA,CAAA,KAAAA,aAAA,CAAA,SAAA,CAAA,CAAA,CACA,MAAA,EAAA,CAAA;AAEA,EAAA,OAAA,EAAA,MAAAD,eAAA,EAAA;AACA,CAAA,CAAA;;;;"}
1
+ {"version":3,"file":"index.get3.mjs","sources":["../../../../../server/api/conversations/index.get.ts"],"names":["conversations","schema.conversations"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,kBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;AACA,EAAA,SAAA,CAAA,CAAA;AAEA,EAAA,MAAA,KAAA,KAAA,EAAA;AAGA,EAAA,MAAAA,eAAA,GAAA,MAAA,EAAA,CAAA,MAAA,GACA,IAAA,CAAAC,aAAA,CAAA,CACA,OAAA,CAAA,IAAA,CAAAA,aAAA,CAAA,MAAA,GAAA,IAAA,CAAAA,cAAA,SAAA,CAAA,CAAA,CACA,KAAA,CAAA,EAAA,CAAA;AAEA,EAAA,OAAA,EAAA,MAAAD,eAAA,EAAA;AACA,CAAA,CAAA;;;;"}
@@ -83,6 +83,7 @@ const stats_get = defineEventHandler(async (event) => {
83
83
  chat: 0,
84
84
  agent: 0,
85
85
  memory: 0,
86
+ bridge: 0,
86
87
  totalCost: 0,
87
88
  inputTokens: 0,
88
89
  outputTokens: 0,
@@ -95,6 +96,7 @@ const stats_get = defineEventHandler(async (event) => {
95
96
  if (r.source === "chat") existing.chat += r.costUsd;
96
97
  else if (r.source === "agent") existing.agent += r.costUsd;
97
98
  else if (r.source === "memory_extraction") existing.memory += r.costUsd;
99
+ else if (r.source === "bridge") existing.bridge += r.costUsd;
98
100
  bucketMap.set(bucket, existing);
99
101
  const source = r.source;
100
102
  const srcEntry = sourceMap.get(source) || { cost: 0, calls: 0, tokens: 0 };
@@ -1 +1 @@
1
- {"version":3,"file":"stats.get.mjs","sources":["../../../../../../server/api/usage/stats.get.ts"],"names":["schema.tokenUsage"],"mappings":"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"}
1
+ {"version":3,"file":"stats.get.mjs","sources":["../../../../../../server/api/usage/stats.get.ts"],"names":["schema.tokenUsage"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cognova-prod",
3
- "version": "0.2.9",
3
+ "version": "0.2.11",
4
4
  "type": "module",
5
5
  "private": true,
6
6
  "dependencies": {
@@ -7,6 +7,7 @@ Memory context from previous conversations is printed to stdout,
7
7
  which Claude receives as additional context.
8
8
  """
9
9
 
10
+ import os
10
11
  import sys
11
12
  from pathlib import Path
12
13
 
@@ -16,6 +17,21 @@ sys.path.insert(0, str(Path(__file__).parent / 'lib'))
16
17
  from hook_client import log_event, read_stdin_json, get_memory_context, get_bridge_context
17
18
 
18
19
 
20
+ def is_onboarded() -> bool:
21
+ """Check if CLAUDE.md already has a User Profile section (onboarding completed)."""
22
+ possible_paths = [
23
+ Path(os.environ.get('COGNOVA_PROJECT_DIR', '')) / 'CLAUDE.md',
24
+ Path.cwd() / 'CLAUDE.md',
25
+ ]
26
+ for p in possible_paths:
27
+ try:
28
+ if p.exists() and '## User Profile' in p.read_text():
29
+ return True
30
+ except Exception:
31
+ pass
32
+ return False
33
+
34
+
19
35
  def main():
20
36
  hook_input = read_stdin_json()
21
37
 
@@ -43,6 +59,13 @@ def main():
43
59
  print("If the user tells you something about themselves, store it IMMEDIATELY.")
44
60
  print("")
45
61
  print(context)
62
+ elif is_onboarded():
63
+ # Onboarding already completed but memories couldn't be loaded (API unreachable, etc.)
64
+ print("## Session Memory")
65
+ print("")
66
+ print("No memories were loaded this session (API may be unreachable).")
67
+ print("User profile is available in CLAUDE.md. Proceed normally.")
68
+ print("As you work, store new insights with `/memory store` when the API is available.")
46
69
  else:
47
70
  print("## Session Memory — ONBOARDING REQUIRED")
48
71
  print("")
@@ -55,10 +55,16 @@ function formatDate(date: Date | string) {
55
55
  @click="emit('select', conv.id)"
56
56
  >
57
57
  <div class="flex items-start justify-between gap-2">
58
- <div class="truncate text-sm font-medium">
58
+ <div class="flex items-center gap-1.5 truncate text-sm font-medium">
59
+ <UIcon
60
+ v-if="conv.isMain"
61
+ name="i-lucide-pin"
62
+ class="size-3.5 text-primary shrink-0"
63
+ />
59
64
  {{ conv.title || 'Untitled' }}
60
65
  </div>
61
66
  <UButton
67
+ v-if="!conv.isMain"
62
68
  icon="i-lucide-trash-2"
63
69
  variant="ghost"
64
70
  color="error"
@@ -1,5 +1,5 @@
1
1
  <script setup lang="ts">
2
- import type { ChatMessage, ChatContentBlock } from '~~/shared/types'
2
+ import type { ChatMessage, ChatContentBlock, MessageSource } from '~~/shared/types'
3
3
 
4
4
  defineProps<{
5
5
  message: ChatMessage
@@ -27,6 +27,34 @@ function getToolPairs(blocks: ChatContentBlock[]) {
27
27
  }
28
28
  return tools
29
29
  }
30
+
31
+ const sourceIconMap: Record<string, string> = {
32
+ telegram: 'i-simple-icons-telegram',
33
+ discord: 'i-simple-icons-discord',
34
+ imessage: 'i-lucide-message-circle',
35
+ email: 'i-lucide-mail',
36
+ google: 'i-simple-icons-google'
37
+ }
38
+
39
+ function getSourceIcon(source?: MessageSource): string | null {
40
+ if (!source || source === 'web') return null
41
+ return sourceIconMap[source] || null
42
+ }
43
+
44
+ function formatTime(date: Date | string | undefined): string {
45
+ if (!date) return ''
46
+ const d = date instanceof Date ? date : new Date(date)
47
+ const now = new Date()
48
+ const diffMs = now.getTime() - d.getTime()
49
+ const diffMin = Math.floor(diffMs / 60000)
50
+ const diffHr = Math.floor(diffMs / 3600000)
51
+
52
+ if (diffMin < 1) return 'just now'
53
+ if (diffMin < 60) return `${diffMin}m ago`
54
+ if (diffHr < 24) return `${diffHr}h ago`
55
+
56
+ return d.toLocaleDateString(undefined, { month: 'short', day: 'numeric', hour: 'numeric', minute: '2-digit' })
57
+ }
30
58
  </script>
31
59
 
32
60
  <template>
@@ -34,6 +62,13 @@ function getToolPairs(blocks: ChatContentBlock[]) {
34
62
  class="flex"
35
63
  :class="message.role === 'user' ? 'justify-end' : 'justify-start'"
36
64
  >
65
+ <!-- Platform icon for bridge user messages (left of bubble) -->
66
+ <UIcon
67
+ v-if="message.role === 'user' && getSourceIcon(message.source)"
68
+ :name="getSourceIcon(message.source)!"
69
+ class="size-4 text-dimmed self-end mb-1 mr-1.5 shrink-0"
70
+ />
71
+
37
72
  <div
38
73
  class="max-w-[85%] rounded-xl px-4 py-3"
39
74
  :class="message.role === 'user'
@@ -76,6 +111,15 @@ function getToolPairs(blocks: ChatContentBlock[]) {
76
111
  <span v-if="message.durationMs">{{ (message.durationMs / 1000).toFixed(1) }}s</span>
77
112
  </div>
78
113
  </template>
114
+
115
+ <!-- Timestamp -->
116
+ <div
117
+ v-if="message.createdAt"
118
+ class="mt-1 text-xs text-dimmed"
119
+ :class="message.role === 'user' ? 'text-right' : ''"
120
+ >
121
+ {{ formatTime(message.createdAt) }}
122
+ </div>
79
123
  </div>
80
124
  </div>
81
125
  </template>
@@ -10,13 +10,15 @@ const props = defineProps<{
10
10
  const sourceLabels: Record<TokenUsageSource, string> = {
11
11
  chat: 'Chat',
12
12
  agent: 'Agent',
13
- memory_extraction: 'Memory'
13
+ memory_extraction: 'Memory',
14
+ bridge: 'Bridge'
14
15
  }
15
16
 
16
17
  const sourceColors = {
17
18
  chat: 'primary',
18
19
  agent: 'warning',
19
- memory_extraction: 'info'
20
+ memory_extraction: 'info',
21
+ bridge: 'success'
20
22
  } as const
21
23
 
22
24
  // Filter state
@@ -18,13 +18,15 @@ const props = defineProps<{
18
18
  const sourceLabels: Record<TokenUsageSource, string> = {
19
19
  chat: 'Chat',
20
20
  agent: 'Agents',
21
- memory_extraction: 'Memory'
21
+ memory_extraction: 'Memory',
22
+ bridge: 'Bridge'
22
23
  }
23
24
 
24
25
  const sourceColors: Record<TokenUsageSource, string> = {
25
26
  chat: 'var(--ui-primary)',
26
27
  agent: 'var(--ui-warning)',
27
- memory_extraction: 'var(--ui-info)'
28
+ memory_extraction: 'var(--ui-info)',
29
+ bridge: 'var(--ui-success)'
28
30
  }
29
31
 
30
32
  const isTokens = computed(() => props.displayMode === 'tokens')
@@ -18,13 +18,15 @@ const props = defineProps<{
18
18
  const sourceLabels: Record<TokenUsageSource, string> = {
19
19
  chat: 'Chat',
20
20
  agent: 'Agent',
21
- memory_extraction: 'Memory'
21
+ memory_extraction: 'Memory',
22
+ bridge: 'Bridge'
22
23
  }
23
24
 
24
25
  const sourceColors = {
25
26
  chat: 'primary',
26
27
  agent: 'warning',
27
- memory_extraction: 'info'
28
+ memory_extraction: 'info',
29
+ bridge: 'success'
28
30
  } as const
29
31
 
30
32
  const isTokens = computed(() => props.displayMode === 'tokens')
@@ -263,6 +263,9 @@ export function useChat() {
263
263
  }
264
264
 
265
265
  async function deleteConversation(conversationId: string) {
266
+ const conv = conversations.value.find(c => c.id === conversationId)
267
+ if (conv?.isMain) return
268
+
266
269
  try {
267
270
  await $fetch(`/api/conversations/${conversationId}`, { method: 'DELETE' })
268
271
  conversations.value = conversations.value.filter(c => c.id !== conversationId)
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "cognova",
3
3
  "type": "module",
4
- "version": "0.2.9",
4
+ "version": "0.2.11",
5
5
  "description": "Personal knowledge management system with Claude Code integration",
6
6
  "repository": {
7
7
  "type": "git",
@@ -10,6 +10,15 @@ export default defineEventHandler(async (event) => {
10
10
  const id = getRouterParam(event, 'id')!
11
11
  const db = getDb()
12
12
 
13
+ // Prevent deletion of Main Chat
14
+ const [conv] = await db.select({ isMain: schema.conversations.isMain })
15
+ .from(schema.conversations)
16
+ .where(eq(schema.conversations.id, id))
17
+ .limit(1)
18
+
19
+ if (conv?.isMain)
20
+ throw createError({ statusCode: 403, message: 'Cannot delete Main Chat' })
21
+
13
22
  await db.delete(schema.conversations)
14
23
  .where(eq(schema.conversations.id, id))
15
24
 
@@ -8,9 +8,10 @@ export default defineEventHandler(async (event) => {
8
8
 
9
9
  const db = getDb()
10
10
 
11
+ // Main Chat always first, then by most recent
11
12
  const conversations = await db.select()
12
13
  .from(schema.conversations)
13
- .orderBy(desc(schema.conversations.startedAt))
14
+ .orderBy(desc(schema.conversations.isMain), desc(schema.conversations.startedAt))
14
15
  .limit(50)
15
16
 
16
17
  return { data: conversations }
@@ -71,6 +71,7 @@ export default defineEventHandler(async (event) => {
71
71
  chat: 0,
72
72
  agent: 0,
73
73
  memory: 0,
74
+ bridge: 0,
74
75
  totalCost: 0,
75
76
  inputTokens: 0,
76
77
  outputTokens: 0,
@@ -83,6 +84,7 @@ export default defineEventHandler(async (event) => {
83
84
  if (r.source === 'chat') existing.chat += r.costUsd
84
85
  else if (r.source === 'agent') existing.agent += r.costUsd
85
86
  else if (r.source === 'memory_extraction') existing.memory += r.costUsd
87
+ else if (r.source === 'bridge') existing.bridge += r.costUsd
86
88
  bucketMap.set(bucket, existing)
87
89
 
88
90
  // By source