khoj 1.30.11.dev62__py3-none-any.whl → 1.30.11.dev73__py3-none-any.whl

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 (55) hide show
  1. khoj/database/adapters/__init__.py +1 -1
  2. khoj/interface/compiled/404/index.html +1 -1
  3. khoj/interface/compiled/_next/static/chunks/1603-f8ef9930c1f4eaef.js +1 -0
  4. khoj/interface/compiled/_next/static/chunks/4200-ea75740bb3c6ae60.js +1 -0
  5. khoj/interface/compiled/_next/static/chunks/app/agents/{page-8eead7920b0ff92a.js → page-2a0b821cf69bdf06.js} +1 -1
  6. khoj/interface/compiled/_next/static/chunks/app/automations/{page-b5800b5286306140.js → page-ffa30be1dda97643.js} +1 -1
  7. khoj/interface/compiled/_next/static/chunks/app/chat/layout-9219a85f3477e722.js +1 -0
  8. khoj/interface/compiled/_next/static/chunks/app/chat/{page-d7d2ab93e519f0b2.js → page-c2c62ae6f013443c.js} +1 -1
  9. khoj/interface/compiled/_next/static/chunks/app/{page-3c32ad5472f75965.js → page-083f798a7562cda5.js} +1 -1
  10. khoj/interface/compiled/_next/static/chunks/app/search/layout-2ca475462c0b2176.js +1 -0
  11. khoj/interface/compiled/_next/static/chunks/app/search/{page-faa998c71eb7ca8e.js → page-845fe099f1f4375e.js} +1 -1
  12. khoj/interface/compiled/_next/static/chunks/app/settings/{page-cbe7f56b1f87d77a.js → page-3257ef0146ab18da.js} +1 -1
  13. khoj/interface/compiled/_next/static/chunks/app/share/chat/layout-f662c9e5091603cf.js +1 -0
  14. khoj/interface/compiled/_next/static/chunks/app/share/chat/{page-cd5757199539bbf2.js → page-f625859c1a122441.js} +1 -1
  15. khoj/interface/compiled/_next/static/chunks/{webpack-e220e21d9a8c0d5e.js → webpack-a72e892f6afa93ae.js} +1 -1
  16. khoj/interface/compiled/_next/static/css/0dff1a59259ff945.css +1 -0
  17. khoj/interface/compiled/_next/static/css/4cae6c0e5c72fb2d.css +1 -0
  18. khoj/interface/compiled/_next/static/css/fd628f01a581ec3c.css +25 -0
  19. khoj/interface/compiled/agents/index.html +1 -1
  20. khoj/interface/compiled/agents/index.txt +2 -2
  21. khoj/interface/compiled/automations/index.html +1 -1
  22. khoj/interface/compiled/automations/index.txt +2 -2
  23. khoj/interface/compiled/chat/index.html +1 -1
  24. khoj/interface/compiled/chat/index.txt +2 -2
  25. khoj/interface/compiled/index.html +1 -1
  26. khoj/interface/compiled/index.txt +2 -2
  27. khoj/interface/compiled/search/index.html +1 -1
  28. khoj/interface/compiled/search/index.txt +2 -2
  29. khoj/interface/compiled/settings/index.html +1 -1
  30. khoj/interface/compiled/settings/index.txt +2 -2
  31. khoj/interface/compiled/share/chat/index.html +1 -1
  32. khoj/interface/compiled/share/chat/index.txt +2 -2
  33. khoj/processor/conversation/anthropic/anthropic_chat.py +2 -4
  34. khoj/processor/conversation/google/gemini_chat.py +2 -4
  35. khoj/processor/conversation/offline/chat_model.py +3 -1
  36. khoj/processor/conversation/openai/gpt.py +3 -5
  37. khoj/processor/conversation/prompts.py +33 -21
  38. khoj/processor/conversation/utils.py +35 -30
  39. khoj/routers/api_chat.py +14 -1
  40. khoj/routers/helpers.py +11 -9
  41. {khoj-1.30.11.dev62.dist-info → khoj-1.30.11.dev73.dist-info}/METADATA +2 -2
  42. {khoj-1.30.11.dev62.dist-info → khoj-1.30.11.dev73.dist-info}/RECORD +47 -47
  43. khoj/interface/compiled/_next/static/chunks/1603-e40aadd1e56ab030.js +0 -1
  44. khoj/interface/compiled/_next/static/chunks/4752-554a3db270186ce3.js +0 -1
  45. khoj/interface/compiled/_next/static/chunks/app/chat/layout-3435e55ef2f45d88.js +0 -1
  46. khoj/interface/compiled/_next/static/chunks/app/search/layout-2677a9f48ccd7b38.js +0 -1
  47. khoj/interface/compiled/_next/static/chunks/app/share/chat/layout-dc97434f0354a74e.js +0 -1
  48. khoj/interface/compiled/_next/static/css/33e9fb1e7a15c208.css +0 -1
  49. khoj/interface/compiled/_next/static/css/3c34171b174cc381.css +0 -25
  50. khoj/interface/compiled/_next/static/css/592ca99f5122e75a.css +0 -1
  51. /khoj/interface/compiled/_next/static/{FJZukpb_TPhFjZ5RC7rGN → ruEWgIV3qd6RPykTrcoyc}/_buildManifest.js +0 -0
  52. /khoj/interface/compiled/_next/static/{FJZukpb_TPhFjZ5RC7rGN → ruEWgIV3qd6RPykTrcoyc}/_ssgManifest.js +0 -0
  53. {khoj-1.30.11.dev62.dist-info → khoj-1.30.11.dev73.dist-info}/WHEEL +0 -0
  54. {khoj-1.30.11.dev62.dist-info → khoj-1.30.11.dev73.dist-info}/entry_points.txt +0 -0
  55. {khoj-1.30.11.dev62.dist-info → khoj-1.30.11.dev73.dist-info}/licenses/LICENSE +0 -0
@@ -1 +1 @@
1
- <!DOCTYPE html><html lang="en" class="__variable_f36179 __variable_702545"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/1d8a05b60287ae6c-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/77c207b095007c34-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/82ef96de0e8f4d8c-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/a6ecd16fa044d500-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/bd82c78e5b7b3fe9-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/c4250770ab8708b6-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/e098aaaecc9cfbb2-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/089de1d8526b96e9.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/3c34171b174cc381.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/3cf13271869a4aeb.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/33e9fb1e7a15c208.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/1f293605f2871853.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-e220e21d9a8c0d5e.js"/><script src="/_next/static/chunks/fd9d1056-2e6c8140e79afc3b.js" async=""></script><script src="/_next/static/chunks/7023-e8de2bded4df6539.js" async=""></script><script src="/_next/static/chunks/main-app-6d6ee3495efe03d4.js" async=""></script><script src="/_next/static/chunks/d3ac728e-a9e3522eef9b6b28.js" async=""></script><script src="/_next/static/chunks/3072-be830e4f8412b9d2.js" async=""></script><script src="/_next/static/chunks/4752-554a3db270186ce3.js" async=""></script><script src="/_next/static/chunks/7592-a09c39a38e60634b.js" async=""></script><script src="/_next/static/chunks/3690-51312931ba1eae30.js" async=""></script><script src="/_next/static/chunks/3463-081c031e873b7966.js" async=""></script><script src="/_next/static/chunks/1603-e40aadd1e56ab030.js" async=""></script><script src="/_next/static/chunks/8423-1dda16bc56236523.js" async=""></script><script src="/_next/static/chunks/5538-0ea2d3944ca051e1.js" async=""></script><script src="/_next/static/chunks/app/share/chat/page-cd5757199539bbf2.js" async=""></script><meta http-equiv="Content-Security-Policy" content="default-src &#x27;self&#x27; https://assets.khoj.dev; media-src * blob:; script-src &#x27;self&#x27; https://assets.khoj.dev https://app.chatwoot.com &#x27;unsafe-inline&#x27; &#x27;unsafe-eval&#x27;; connect-src &#x27;self&#x27; blob: https://ipapi.co/json ws://localhost:42110; style-src &#x27;self&#x27; https://assets.khoj.dev &#x27;unsafe-inline&#x27; https://fonts.googleapis.com; img-src &#x27;self&#x27; data: blob: https://*.khoj.dev https://*.googleusercontent.com https://*.google.com/ https://*.gstatic.com; font-src &#x27;self&#x27; https://assets.khoj.dev https://fonts.gstatic.com; child-src &#x27;self&#x27; https://app.chatwoot.com; object-src &#x27;none&#x27;;"/><meta http-equiv="Content-Security-Policy" content="default-src &#x27;self&#x27; https://assets.khoj.dev; media-src * blob:; script-src &#x27;self&#x27; https://assets.khoj.dev https://app.chatwoot.com &#x27;unsafe-inline&#x27; &#x27;unsafe-eval&#x27;; connect-src &#x27;self&#x27; blob: https://ipapi.co/json ws://localhost:42110; style-src &#x27;self&#x27; https://assets.khoj.dev &#x27;unsafe-inline&#x27; https://fonts.googleapis.com; img-src &#x27;self&#x27; data: blob: https://*.khoj.dev https://*.googleusercontent.com https://*.google.com/ https://*.gstatic.com; font-src &#x27;self&#x27; https://assets.khoj.dev https://fonts.gstatic.com; child-src &#x27;self&#x27; https://app.chatwoot.com; object-src &#x27;none&#x27;;"/><title>Khoj AI - Chat</title><meta name="description" content="Use this page to view a chat with Khoj AI."/><link rel="manifest" href="/static/khoj.webmanifest" crossorigin="use-credentials"/><meta property="og:title" content="Khoj AI"/><meta property="og:description" content="Your Second Brain."/><meta property="og:url" content="https://app.khoj.dev/"/><meta property="og:site_name" content="Khoj AI"/><meta property="og:image" content="https://assets.khoj.dev/khoj_lantern_256x256.png"/><meta property="og:image:width" content="256"/><meta property="og:image:height" content="256"/><meta property="og:image" content="https://assets.khoj.dev/khoj_lantern_logomarktype_1200x630.png"/><meta property="og:image:width" content="1200"/><meta property="og:image:height" content="630"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:title" content="Khoj AI"/><meta name="twitter:description" content="Your Second Brain."/><meta name="twitter:image" content="https://assets.khoj.dev/khoj_lantern_256x256.png"/><meta name="twitter:image:width" content="256"/><meta name="twitter:image:height" content="256"/><meta name="twitter:image" content="https://assets.khoj.dev/khoj_lantern_logomarktype_1200x630.png"/><meta name="twitter:image:width" content="1200"/><meta name="twitter:image:height" content="630"/><link rel="icon" href="/static/assets/icons/khoj_lantern.ico"/><link rel="apple-touch-icon" href="/static/assets/icons/khoj_lantern_256x256.png"/><meta name="next-size-adjust"/><script src="/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js" noModule=""></script></head><body><html lang="en" class="__variable_f36179 __variable_702545"><body><div class="bg-background opacity-50 flex items-center justify-center h-screen"><div>Loading<!-- --> <span><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" viewBox="0 0 256 256" class="inline animate-spin h-5 w-5"><path d="M232,128a104,104,0,0,1-208,0c0-41,23.81-78.36,60.66-95.27a8,8,0,0,1,6.68,14.54C60.15,61.59,40,93.27,40,128a88,88,0,0,0,176,0c0-34.73-20.15-66.41-51.34-80.73a8,8,0,0,1,6.68-14.54C208.19,49.64,232,87,232,128Z"></path></svg></span></div></div><script>window.EXCALIDRAW_ASSET_PATH = 'https://assets.khoj.dev/@excalidraw/excalidraw/dist/';</script><script src="/_next/static/chunks/webpack-e220e21d9a8c0d5e.js" async=""></script></body></html><script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script><script>self.__next_f.push([1,"1:HL[\"/_next/static/media/1d8a05b60287ae6c-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n2:HL[\"/_next/static/media/77c207b095007c34-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n3:HL[\"/_next/static/media/82ef96de0e8f4d8c-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n4:HL[\"/_next/static/media/a6ecd16fa044d500-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n5:HL[\"/_next/static/media/bd82c78e5b7b3fe9-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n6:HL[\"/_next/static/media/c4250770ab8708b6-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n7:HL[\"/_next/static/media/e098aaaecc9cfbb2-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n8:HL[\"/_next/static/css/089de1d8526b96e9.css\",\"style\"]\n9:HL[\"/_next/static/css/3c34171b174cc381.css\",\"style\"]\na:HL[\"/_next/static/css/3cf13271869a4aeb.css\",\"style\"]\nb:HL[\"/_next/static/css/33e9fb1e7a15c208.css\",\"style\"]\nc:HL[\"/_next/static/css/1f293605f2871853.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"d:I[95751,[],\"\"]\nf:I[66513,[],\"ClientPageRoot\"]\n10:I[5506,[\"3954\",\"static/chunks/d3ac728e-a9e3522eef9b6b28.js\",\"3072\",\"static/chunks/3072-be830e4f8412b9d2.js\",\"4752\",\"static/chunks/4752-554a3db270186ce3.js\",\"7592\",\"static/chunks/7592-a09c39a38e60634b.js\",\"3690\",\"static/chunks/3690-51312931ba1eae30.js\",\"3463\",\"static/chunks/3463-081c031e873b7966.js\",\"1603\",\"static/chunks/1603-e40aadd1e56ab030.js\",\"8423\",\"static/chunks/8423-1dda16bc56236523.js\",\"5538\",\"static/chunks/5538-0ea2d3944ca051e1.js\",\"3111\",\"static/chunks/app/share/chat/page-cd5757199539bbf2.js\"],\"default\",1]\n11:I[39275,[],\"\"]\n12:I[61343,[],\"\"]\n14:I[76130,[],\"\"]\n15:[]\n"])</script><script>self.__next_f.push([1,"0:[\"$\",\"$Ld\",null,{\"buildId\":\"FJZukpb_TPhFjZ5RC7rGN\",\"assetPrefix\":\"\",\"urlParts\":[\"\",\"share\",\"chat\",\"\"],\"initialTree\":[\"\",{\"children\":[\"share\",{\"children\":[\"chat\",{\"children\":[\"__PAGE__\",{}]}]}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[\"share\",{\"children\":[\"chat\",{\"children\":[\"__PAGE__\",{},[[\"$Le\",[\"$\",\"$Lf\",null,{\"props\":{\"params\":{},\"searchParams\":{}},\"Component\":\"$10\"}],[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/3cf13271869a4aeb.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/33e9fb1e7a15c208.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"2\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/1f293605f2871853.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]]],null],null]},[[null,[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"__variable_f36179 __variable_702545\",\"children\":[[\"$\",\"meta\",null,{\"httpEquiv\":\"Content-Security-Policy\",\"content\":\"default-src 'self' https://assets.khoj.dev; media-src * blob:; script-src 'self' https://assets.khoj.dev https://app.chatwoot.com 'unsafe-inline' 'unsafe-eval'; connect-src 'self' blob: https://ipapi.co/json ws://localhost:42110; style-src 'self' https://assets.khoj.dev 'unsafe-inline' https://fonts.googleapis.com; img-src 'self' data: blob: https://*.khoj.dev https://*.googleusercontent.com https://*.google.com/ https://*.gstatic.com; font-src 'self' https://assets.khoj.dev https://fonts.gstatic.com; child-src 'self' https://app.chatwoot.com; object-src 'none';\"}],[\"$\",\"body\",null,{\"children\":[[\"$\",\"$L11\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"share\",\"children\",\"chat\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L12\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\"}],[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"window.EXCALIDRAW_ASSET_PATH = 'https://assets.khoj.dev/@excalidraw/excalidraw/dist/';\"}}]]}]]}]],null],null]},[null,[\"$\",\"$L11\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"share\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L12\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\"}]],null]},[[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/089de1d8526b96e9.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/3c34171b174cc381.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"__variable_f36179 __variable_702545\",\"children\":[[\"$\",\"meta\",null,{\"httpEquiv\":\"Content-Security-Policy\",\"content\":\"default-src 'self' https://assets.khoj.dev; media-src * blob:; script-src 'self' https://assets.khoj.dev https://app.chatwoot.com 'unsafe-inline' 'unsafe-eval'; connect-src 'self' blob: https://ipapi.co/json ws://localhost:42110; style-src 'self' https://assets.khoj.dev 'unsafe-inline' https://fonts.googleapis.com; img-src 'self' data: blob: https://*.khoj.dev https://*.googleusercontent.com https://*.google.com/ https://*.gstatic.com; font-src 'self' https://assets.khoj.dev https://fonts.gstatic.com; child-src 'self' https://app.chatwoot.com; object-src 'none';\"}],[\"$\",\"body\",null,{\"children\":[\"$\",\"$L11\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L12\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],\"notFoundStyles\":[]}]}]]}]],null],null],\"couldBeIntercepted\":false,\"initialHead\":[null,\"$L13\"],\"globalErrorComponent\":\"$14\",\"missingSlots\":\"$W15\"}]\n"])</script><script>self.__next_f.push([1,"13:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"1\",{\"charSet\":\"utf-8\"}],[\"$\",\"title\",\"2\",{\"children\":\"Khoj AI - Chat\"}],[\"$\",\"meta\",\"3\",{\"name\":\"description\",\"content\":\"Use this page to view a chat with Khoj AI.\"}],[\"$\",\"link\",\"4\",{\"rel\":\"manifest\",\"href\":\"/static/khoj.webmanifest\",\"crossOrigin\":\"use-credentials\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:title\",\"content\":\"Khoj AI\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:description\",\"content\":\"Your Second Brain.\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:url\",\"content\":\"https://app.khoj.dev/\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:site_name\",\"content\":\"Khoj AI\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:image\",\"content\":\"https://assets.khoj.dev/khoj_lantern_256x256.png\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:image:width\",\"content\":\"256\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:image:height\",\"content\":\"256\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:image\",\"content\":\"https://assets.khoj.dev/khoj_lantern_logomarktype_1200x630.png\"}],[\"$\",\"meta\",\"13\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"14\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"15\",{\"property\":\"og:type\",\"content\":\"website\"}],[\"$\",\"meta\",\"16\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"17\",{\"name\":\"twitter:title\",\"content\":\"Khoj AI\"}],[\"$\",\"meta\",\"18\",{\"name\":\"twitter:description\",\"content\":\"Your Second Brain.\"}],[\"$\",\"meta\",\"19\",{\"name\":\"twitter:image\",\"content\":\"https://assets.khoj.dev/khoj_lantern_256x256.png\"}],[\"$\",\"meta\",\"20\",{\"name\":\"twitter:image:width\",\"content\":\"256\"}],[\"$\",\"meta\",\"21\",{\"name\":\"twitter:image:height\",\"content\":\"256\"}],[\"$\",\"meta\",\"22\",{\"name\":\"twitter:image\",\"content\":\"https://assets.khoj.dev/khoj_lantern_logomarktype_1200x630.png\"}],[\"$\",\"meta\",\"23\",{\"name\":\"twitter:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"24\",{\"name\":\"twitter:image:height\",\"content\":\"630\"}],[\"$\",\"link\",\"25\",{\"rel\":\"icon\",\"href\":\"/static/assets/icons/khoj_lantern.ico\"}],[\"$\",\"link\",\"26\",{\"rel\":\"apple-touch-icon\",\"href\":\"/static/assets/icons/khoj_lantern_256x256.png\"}],[\"$\",\"meta\",\"27\",{\"name\":\"next-size-adjust\"}]]\n"])</script><script>self.__next_f.push([1,"e:null\n"])</script></body></html>
1
+ <!DOCTYPE html><html lang="en" class="__variable_f36179 __variable_702545"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/1d8a05b60287ae6c-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/77c207b095007c34-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/82ef96de0e8f4d8c-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/a6ecd16fa044d500-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/bd82c78e5b7b3fe9-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/c4250770ab8708b6-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/e098aaaecc9cfbb2-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/089de1d8526b96e9.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/fd628f01a581ec3c.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/3cf13271869a4aeb.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/0dff1a59259ff945.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/1f293605f2871853.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-a72e892f6afa93ae.js"/><script src="/_next/static/chunks/fd9d1056-2e6c8140e79afc3b.js" async=""></script><script src="/_next/static/chunks/7023-e8de2bded4df6539.js" async=""></script><script src="/_next/static/chunks/main-app-6d6ee3495efe03d4.js" async=""></script><script src="/_next/static/chunks/d3ac728e-a9e3522eef9b6b28.js" async=""></script><script src="/_next/static/chunks/3072-be830e4f8412b9d2.js" async=""></script><script src="/_next/static/chunks/4200-ea75740bb3c6ae60.js" async=""></script><script src="/_next/static/chunks/7592-a09c39a38e60634b.js" async=""></script><script src="/_next/static/chunks/3690-51312931ba1eae30.js" async=""></script><script src="/_next/static/chunks/3463-081c031e873b7966.js" async=""></script><script src="/_next/static/chunks/1603-f8ef9930c1f4eaef.js" async=""></script><script src="/_next/static/chunks/8423-1dda16bc56236523.js" async=""></script><script src="/_next/static/chunks/5538-0ea2d3944ca051e1.js" async=""></script><script src="/_next/static/chunks/app/share/chat/page-f625859c1a122441.js" async=""></script><meta http-equiv="Content-Security-Policy" content="default-src &#x27;self&#x27; https://assets.khoj.dev; media-src * blob:; script-src &#x27;self&#x27; https://assets.khoj.dev https://app.chatwoot.com &#x27;unsafe-inline&#x27; &#x27;unsafe-eval&#x27;; connect-src &#x27;self&#x27; blob: https://ipapi.co/json ws://localhost:42110; style-src &#x27;self&#x27; https://assets.khoj.dev &#x27;unsafe-inline&#x27; https://fonts.googleapis.com; img-src &#x27;self&#x27; data: blob: https://*.khoj.dev https://*.googleusercontent.com https://*.google.com/ https://*.gstatic.com; font-src &#x27;self&#x27; https://assets.khoj.dev https://fonts.gstatic.com; child-src &#x27;self&#x27; https://app.chatwoot.com; object-src &#x27;none&#x27;;"/><meta http-equiv="Content-Security-Policy" content="default-src &#x27;self&#x27; https://assets.khoj.dev; media-src * blob:; script-src &#x27;self&#x27; https://assets.khoj.dev https://app.chatwoot.com &#x27;unsafe-inline&#x27; &#x27;unsafe-eval&#x27;; connect-src &#x27;self&#x27; blob: https://ipapi.co/json ws://localhost:42110; style-src &#x27;self&#x27; https://assets.khoj.dev &#x27;unsafe-inline&#x27; https://fonts.googleapis.com; img-src &#x27;self&#x27; data: blob: https://*.khoj.dev https://*.googleusercontent.com https://*.google.com/ https://*.gstatic.com; font-src &#x27;self&#x27; https://assets.khoj.dev https://fonts.gstatic.com; child-src &#x27;self&#x27; https://app.chatwoot.com; object-src &#x27;none&#x27;;"/><title>Khoj AI - Chat</title><meta name="description" content="Use this page to view a chat with Khoj AI."/><link rel="manifest" href="/static/khoj.webmanifest" crossorigin="use-credentials"/><meta property="og:title" content="Khoj AI"/><meta property="og:description" content="Your Second Brain."/><meta property="og:url" content="https://app.khoj.dev/"/><meta property="og:site_name" content="Khoj AI"/><meta property="og:image" content="https://assets.khoj.dev/khoj_lantern_256x256.png"/><meta property="og:image:width" content="256"/><meta property="og:image:height" content="256"/><meta property="og:image" content="https://assets.khoj.dev/khoj_lantern_logomarktype_1200x630.png"/><meta property="og:image:width" content="1200"/><meta property="og:image:height" content="630"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:title" content="Khoj AI"/><meta name="twitter:description" content="Your Second Brain."/><meta name="twitter:image" content="https://assets.khoj.dev/khoj_lantern_256x256.png"/><meta name="twitter:image:width" content="256"/><meta name="twitter:image:height" content="256"/><meta name="twitter:image" content="https://assets.khoj.dev/khoj_lantern_logomarktype_1200x630.png"/><meta name="twitter:image:width" content="1200"/><meta name="twitter:image:height" content="630"/><link rel="icon" href="/static/assets/icons/khoj_lantern.ico"/><link rel="apple-touch-icon" href="/static/assets/icons/khoj_lantern_256x256.png"/><meta name="next-size-adjust"/><script src="/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js" noModule=""></script></head><body><html lang="en" class="__variable_f36179 __variable_702545"><body><div class="bg-background opacity-50 flex items-center justify-center h-screen"><div>Loading<!-- --> <span><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" viewBox="0 0 256 256" class="inline animate-spin h-5 w-5"><path d="M232,128a104,104,0,0,1-208,0c0-41,23.81-78.36,60.66-95.27a8,8,0,0,1,6.68,14.54C60.15,61.59,40,93.27,40,128a88,88,0,0,0,176,0c0-34.73-20.15-66.41-51.34-80.73a8,8,0,0,1,6.68-14.54C208.19,49.64,232,87,232,128Z"></path></svg></span></div></div><script>window.EXCALIDRAW_ASSET_PATH = 'https://assets.khoj.dev/@excalidraw/excalidraw/dist/';</script><script src="/_next/static/chunks/webpack-a72e892f6afa93ae.js" async=""></script></body></html><script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script><script>self.__next_f.push([1,"1:HL[\"/_next/static/media/1d8a05b60287ae6c-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n2:HL[\"/_next/static/media/77c207b095007c34-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n3:HL[\"/_next/static/media/82ef96de0e8f4d8c-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n4:HL[\"/_next/static/media/a6ecd16fa044d500-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n5:HL[\"/_next/static/media/bd82c78e5b7b3fe9-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n6:HL[\"/_next/static/media/c4250770ab8708b6-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n7:HL[\"/_next/static/media/e098aaaecc9cfbb2-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n8:HL[\"/_next/static/css/089de1d8526b96e9.css\",\"style\"]\n9:HL[\"/_next/static/css/fd628f01a581ec3c.css\",\"style\"]\na:HL[\"/_next/static/css/3cf13271869a4aeb.css\",\"style\"]\nb:HL[\"/_next/static/css/0dff1a59259ff945.css\",\"style\"]\nc:HL[\"/_next/static/css/1f293605f2871853.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"d:I[95751,[],\"\"]\nf:I[66513,[],\"ClientPageRoot\"]\n10:I[5506,[\"3954\",\"static/chunks/d3ac728e-a9e3522eef9b6b28.js\",\"3072\",\"static/chunks/3072-be830e4f8412b9d2.js\",\"4200\",\"static/chunks/4200-ea75740bb3c6ae60.js\",\"7592\",\"static/chunks/7592-a09c39a38e60634b.js\",\"3690\",\"static/chunks/3690-51312931ba1eae30.js\",\"3463\",\"static/chunks/3463-081c031e873b7966.js\",\"1603\",\"static/chunks/1603-f8ef9930c1f4eaef.js\",\"8423\",\"static/chunks/8423-1dda16bc56236523.js\",\"5538\",\"static/chunks/5538-0ea2d3944ca051e1.js\",\"3111\",\"static/chunks/app/share/chat/page-f625859c1a122441.js\"],\"default\",1]\n11:I[39275,[],\"\"]\n12:I[61343,[],\"\"]\n14:I[76130,[],\"\"]\n15:[]\n"])</script><script>self.__next_f.push([1,"0:[\"$\",\"$Ld\",null,{\"buildId\":\"ruEWgIV3qd6RPykTrcoyc\",\"assetPrefix\":\"\",\"urlParts\":[\"\",\"share\",\"chat\",\"\"],\"initialTree\":[\"\",{\"children\":[\"share\",{\"children\":[\"chat\",{\"children\":[\"__PAGE__\",{}]}]}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[\"share\",{\"children\":[\"chat\",{\"children\":[\"__PAGE__\",{},[[\"$Le\",[\"$\",\"$Lf\",null,{\"props\":{\"params\":{},\"searchParams\":{}},\"Component\":\"$10\"}],[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/3cf13271869a4aeb.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/0dff1a59259ff945.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"2\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/1f293605f2871853.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]]],null],null]},[[null,[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"__variable_f36179 __variable_702545\",\"children\":[[\"$\",\"meta\",null,{\"httpEquiv\":\"Content-Security-Policy\",\"content\":\"default-src 'self' https://assets.khoj.dev; media-src * blob:; script-src 'self' https://assets.khoj.dev https://app.chatwoot.com 'unsafe-inline' 'unsafe-eval'; connect-src 'self' blob: https://ipapi.co/json ws://localhost:42110; style-src 'self' https://assets.khoj.dev 'unsafe-inline' https://fonts.googleapis.com; img-src 'self' data: blob: https://*.khoj.dev https://*.googleusercontent.com https://*.google.com/ https://*.gstatic.com; font-src 'self' https://assets.khoj.dev https://fonts.gstatic.com; child-src 'self' https://app.chatwoot.com; object-src 'none';\"}],[\"$\",\"body\",null,{\"children\":[[\"$\",\"$L11\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"share\",\"children\",\"chat\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L12\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\"}],[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"window.EXCALIDRAW_ASSET_PATH = 'https://assets.khoj.dev/@excalidraw/excalidraw/dist/';\"}}]]}]]}]],null],null]},[null,[\"$\",\"$L11\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"share\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L12\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\"}]],null]},[[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/089de1d8526b96e9.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/fd628f01a581ec3c.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"__variable_f36179 __variable_702545\",\"children\":[[\"$\",\"meta\",null,{\"httpEquiv\":\"Content-Security-Policy\",\"content\":\"default-src 'self' https://assets.khoj.dev; media-src * blob:; script-src 'self' https://assets.khoj.dev https://app.chatwoot.com 'unsafe-inline' 'unsafe-eval'; connect-src 'self' blob: https://ipapi.co/json ws://localhost:42110; style-src 'self' https://assets.khoj.dev 'unsafe-inline' https://fonts.googleapis.com; img-src 'self' data: blob: https://*.khoj.dev https://*.googleusercontent.com https://*.google.com/ https://*.gstatic.com; font-src 'self' https://assets.khoj.dev https://fonts.gstatic.com; child-src 'self' https://app.chatwoot.com; object-src 'none';\"}],[\"$\",\"body\",null,{\"children\":[\"$\",\"$L11\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L12\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],\"notFoundStyles\":[]}]}]]}]],null],null],\"couldBeIntercepted\":false,\"initialHead\":[null,\"$L13\"],\"globalErrorComponent\":\"$14\",\"missingSlots\":\"$W15\"}]\n"])</script><script>self.__next_f.push([1,"13:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"1\",{\"charSet\":\"utf-8\"}],[\"$\",\"title\",\"2\",{\"children\":\"Khoj AI - Chat\"}],[\"$\",\"meta\",\"3\",{\"name\":\"description\",\"content\":\"Use this page to view a chat with Khoj AI.\"}],[\"$\",\"link\",\"4\",{\"rel\":\"manifest\",\"href\":\"/static/khoj.webmanifest\",\"crossOrigin\":\"use-credentials\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:title\",\"content\":\"Khoj AI\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:description\",\"content\":\"Your Second Brain.\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:url\",\"content\":\"https://app.khoj.dev/\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:site_name\",\"content\":\"Khoj AI\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:image\",\"content\":\"https://assets.khoj.dev/khoj_lantern_256x256.png\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:image:width\",\"content\":\"256\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:image:height\",\"content\":\"256\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:image\",\"content\":\"https://assets.khoj.dev/khoj_lantern_logomarktype_1200x630.png\"}],[\"$\",\"meta\",\"13\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"14\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"15\",{\"property\":\"og:type\",\"content\":\"website\"}],[\"$\",\"meta\",\"16\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"17\",{\"name\":\"twitter:title\",\"content\":\"Khoj AI\"}],[\"$\",\"meta\",\"18\",{\"name\":\"twitter:description\",\"content\":\"Your Second Brain.\"}],[\"$\",\"meta\",\"19\",{\"name\":\"twitter:image\",\"content\":\"https://assets.khoj.dev/khoj_lantern_256x256.png\"}],[\"$\",\"meta\",\"20\",{\"name\":\"twitter:image:width\",\"content\":\"256\"}],[\"$\",\"meta\",\"21\",{\"name\":\"twitter:image:height\",\"content\":\"256\"}],[\"$\",\"meta\",\"22\",{\"name\":\"twitter:image\",\"content\":\"https://assets.khoj.dev/khoj_lantern_logomarktype_1200x630.png\"}],[\"$\",\"meta\",\"23\",{\"name\":\"twitter:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"24\",{\"name\":\"twitter:image:height\",\"content\":\"630\"}],[\"$\",\"link\",\"25\",{\"rel\":\"icon\",\"href\":\"/static/assets/icons/khoj_lantern.ico\"}],[\"$\",\"link\",\"26\",{\"rel\":\"apple-touch-icon\",\"href\":\"/static/assets/icons/khoj_lantern_256x256.png\"}],[\"$\",\"meta\",\"27\",{\"name\":\"next-size-adjust\"}]]\n"])</script><script>self.__next_f.push([1,"e:null\n"])</script></body></html>
@@ -1,7 +1,7 @@
1
1
  2:I[66513,[],"ClientPageRoot"]
2
- 3:I[5506,["3954","static/chunks/d3ac728e-a9e3522eef9b6b28.js","3072","static/chunks/3072-be830e4f8412b9d2.js","4752","static/chunks/4752-554a3db270186ce3.js","7592","static/chunks/7592-a09c39a38e60634b.js","3690","static/chunks/3690-51312931ba1eae30.js","3463","static/chunks/3463-081c031e873b7966.js","1603","static/chunks/1603-e40aadd1e56ab030.js","8423","static/chunks/8423-1dda16bc56236523.js","5538","static/chunks/5538-0ea2d3944ca051e1.js","3111","static/chunks/app/share/chat/page-cd5757199539bbf2.js"],"default",1]
2
+ 3:I[5506,["3954","static/chunks/d3ac728e-a9e3522eef9b6b28.js","3072","static/chunks/3072-be830e4f8412b9d2.js","4200","static/chunks/4200-ea75740bb3c6ae60.js","7592","static/chunks/7592-a09c39a38e60634b.js","3690","static/chunks/3690-51312931ba1eae30.js","3463","static/chunks/3463-081c031e873b7966.js","1603","static/chunks/1603-f8ef9930c1f4eaef.js","8423","static/chunks/8423-1dda16bc56236523.js","5538","static/chunks/5538-0ea2d3944ca051e1.js","3111","static/chunks/app/share/chat/page-f625859c1a122441.js"],"default",1]
3
3
  4:I[39275,[],""]
4
4
  5:I[61343,[],""]
5
- 0:["FJZukpb_TPhFjZ5RC7rGN",[[["",{"children":["share",{"children":["chat",{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",{"children":["share",{"children":["chat",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/3cf13271869a4aeb.css","precedence":"next","crossOrigin":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/33e9fb1e7a15c208.css","precedence":"next","crossOrigin":"$undefined"}],["$","link","2",{"rel":"stylesheet","href":"/_next/static/css/1f293605f2871853.css","precedence":"next","crossOrigin":"$undefined"}]]],null],null]},[[null,["$","html",null,{"lang":"en","className":"__variable_f36179 __variable_702545","children":[["$","meta",null,{"httpEquiv":"Content-Security-Policy","content":"default-src 'self' https://assets.khoj.dev; media-src * blob:; script-src 'self' https://assets.khoj.dev https://app.chatwoot.com 'unsafe-inline' 'unsafe-eval'; connect-src 'self' blob: https://ipapi.co/json ws://localhost:42110; style-src 'self' https://assets.khoj.dev 'unsafe-inline' https://fonts.googleapis.com; img-src 'self' data: blob: https://*.khoj.dev https://*.googleusercontent.com https://*.google.com/ https://*.gstatic.com; font-src 'self' https://assets.khoj.dev https://fonts.gstatic.com; child-src 'self' https://app.chatwoot.com; object-src 'none';"}],["$","body",null,{"children":[["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","share","children","chat","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}],["$","script",null,{"dangerouslySetInnerHTML":{"__html":"window.EXCALIDRAW_ASSET_PATH = 'https://assets.khoj.dev/@excalidraw/excalidraw/dist/';"}}]]}]]}]],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","share","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/089de1d8526b96e9.css","precedence":"next","crossOrigin":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/3c34171b174cc381.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"en","className":"__variable_f36179 __variable_702545","children":[["$","meta",null,{"httpEquiv":"Content-Security-Policy","content":"default-src 'self' https://assets.khoj.dev; media-src * blob:; script-src 'self' https://assets.khoj.dev https://app.chatwoot.com 'unsafe-inline' 'unsafe-eval'; connect-src 'self' blob: https://ipapi.co/json ws://localhost:42110; style-src 'self' https://assets.khoj.dev 'unsafe-inline' https://fonts.googleapis.com; img-src 'self' data: blob: https://*.khoj.dev https://*.googleusercontent.com https://*.google.com/ https://*.gstatic.com; font-src 'self' https://assets.khoj.dev https://fonts.gstatic.com; child-src 'self' https://app.chatwoot.com; object-src 'none';"}],["$","body",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]]}]],null],null],["$L6",null]]]]
5
+ 0:["ruEWgIV3qd6RPykTrcoyc",[[["",{"children":["share",{"children":["chat",{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",{"children":["share",{"children":["chat",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/3cf13271869a4aeb.css","precedence":"next","crossOrigin":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/0dff1a59259ff945.css","precedence":"next","crossOrigin":"$undefined"}],["$","link","2",{"rel":"stylesheet","href":"/_next/static/css/1f293605f2871853.css","precedence":"next","crossOrigin":"$undefined"}]]],null],null]},[[null,["$","html",null,{"lang":"en","className":"__variable_f36179 __variable_702545","children":[["$","meta",null,{"httpEquiv":"Content-Security-Policy","content":"default-src 'self' https://assets.khoj.dev; media-src * blob:; script-src 'self' https://assets.khoj.dev https://app.chatwoot.com 'unsafe-inline' 'unsafe-eval'; connect-src 'self' blob: https://ipapi.co/json ws://localhost:42110; style-src 'self' https://assets.khoj.dev 'unsafe-inline' https://fonts.googleapis.com; img-src 'self' data: blob: https://*.khoj.dev https://*.googleusercontent.com https://*.google.com/ https://*.gstatic.com; font-src 'self' https://assets.khoj.dev https://fonts.gstatic.com; child-src 'self' https://app.chatwoot.com; object-src 'none';"}],["$","body",null,{"children":[["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","share","children","chat","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}],["$","script",null,{"dangerouslySetInnerHTML":{"__html":"window.EXCALIDRAW_ASSET_PATH = 'https://assets.khoj.dev/@excalidraw/excalidraw/dist/';"}}]]}]]}]],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","share","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/089de1d8526b96e9.css","precedence":"next","crossOrigin":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/fd628f01a581ec3c.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"en","className":"__variable_f36179 __variable_702545","children":[["$","meta",null,{"httpEquiv":"Content-Security-Policy","content":"default-src 'self' https://assets.khoj.dev; media-src * blob:; script-src 'self' https://assets.khoj.dev https://app.chatwoot.com 'unsafe-inline' 'unsafe-eval'; connect-src 'self' blob: https://ipapi.co/json ws://localhost:42110; style-src 'self' https://assets.khoj.dev 'unsafe-inline' https://fonts.googleapis.com; img-src 'self' data: blob: https://*.khoj.dev https://*.googleusercontent.com https://*.google.com/ https://*.gstatic.com; font-src 'self' https://assets.khoj.dev https://fonts.gstatic.com; child-src 'self' https://app.chatwoot.com; object-src 'none';"}],["$","body",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]]}]],null],null],["$L6",null]]]]
6
6
  6:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"Khoj AI - Chat"}],["$","meta","3",{"name":"description","content":"Use this page to view a chat with Khoj AI."}],["$","link","4",{"rel":"manifest","href":"/static/khoj.webmanifest","crossOrigin":"use-credentials"}],["$","meta","5",{"property":"og:title","content":"Khoj AI"}],["$","meta","6",{"property":"og:description","content":"Your Second Brain."}],["$","meta","7",{"property":"og:url","content":"https://app.khoj.dev/"}],["$","meta","8",{"property":"og:site_name","content":"Khoj AI"}],["$","meta","9",{"property":"og:image","content":"https://assets.khoj.dev/khoj_lantern_256x256.png"}],["$","meta","10",{"property":"og:image:width","content":"256"}],["$","meta","11",{"property":"og:image:height","content":"256"}],["$","meta","12",{"property":"og:image","content":"https://assets.khoj.dev/khoj_lantern_logomarktype_1200x630.png"}],["$","meta","13",{"property":"og:image:width","content":"1200"}],["$","meta","14",{"property":"og:image:height","content":"630"}],["$","meta","15",{"property":"og:type","content":"website"}],["$","meta","16",{"name":"twitter:card","content":"summary_large_image"}],["$","meta","17",{"name":"twitter:title","content":"Khoj AI"}],["$","meta","18",{"name":"twitter:description","content":"Your Second Brain."}],["$","meta","19",{"name":"twitter:image","content":"https://assets.khoj.dev/khoj_lantern_256x256.png"}],["$","meta","20",{"name":"twitter:image:width","content":"256"}],["$","meta","21",{"name":"twitter:image:height","content":"256"}],["$","meta","22",{"name":"twitter:image","content":"https://assets.khoj.dev/khoj_lantern_logomarktype_1200x630.png"}],["$","meta","23",{"name":"twitter:image:width","content":"1200"}],["$","meta","24",{"name":"twitter:image:height","content":"630"}],["$","link","25",{"rel":"icon","href":"/static/assets/icons/khoj_lantern.ico"}],["$","link","26",{"rel":"apple-touch-icon","href":"/static/assets/icons/khoj_lantern_256x256.png"}],["$","meta","27",{"name":"next-size-adjust"}]]
7
7
  1:null
@@ -157,10 +157,9 @@ def converse_anthropic(
157
157
  query_images: Optional[list[str]] = None,
158
158
  vision_available: bool = False,
159
159
  query_files: str = None,
160
- generated_images: Optional[list[str]] = None,
161
160
  generated_files: List[FileAttachment] = None,
162
- generated_excalidraw_diagram: Optional[str] = None,
163
161
  program_execution_context: Optional[List[str]] = None,
162
+ generated_asset_results: Dict[str, Dict] = {},
164
163
  tracer: dict = {},
165
164
  ):
166
165
  """
@@ -221,9 +220,8 @@ def converse_anthropic(
221
220
  vision_enabled=vision_available,
222
221
  model_type=ChatModelOptions.ModelType.ANTHROPIC,
223
222
  query_files=query_files,
224
- generated_excalidraw_diagram=generated_excalidraw_diagram,
225
223
  generated_files=generated_files,
226
- generated_images=generated_images,
224
+ generated_asset_results=generated_asset_results,
227
225
  program_execution_context=program_execution_context,
228
226
  )
229
227
 
@@ -167,9 +167,8 @@ def converse_gemini(
167
167
  query_images: Optional[list[str]] = None,
168
168
  vision_available: bool = False,
169
169
  query_files: str = None,
170
- generated_images: Optional[list[str]] = None,
171
170
  generated_files: List[FileAttachment] = None,
172
- generated_excalidraw_diagram: Optional[str] = None,
171
+ generated_asset_results: Dict[str, Dict] = {},
173
172
  program_execution_context: List[str] = None,
174
173
  tracer={},
175
174
  ):
@@ -232,9 +231,8 @@ def converse_gemini(
232
231
  vision_enabled=vision_available,
233
232
  model_type=ChatModelOptions.ModelType.GOOGLE,
234
233
  query_files=query_files,
235
- generated_excalidraw_diagram=generated_excalidraw_diagram,
236
234
  generated_files=generated_files,
237
- generated_images=generated_images,
235
+ generated_asset_results=generated_asset_results,
238
236
  program_execution_context=program_execution_context,
239
237
  )
240
238
 
@@ -3,7 +3,7 @@ import logging
3
3
  import os
4
4
  from datetime import datetime, timedelta
5
5
  from threading import Thread
6
- from typing import Any, Iterator, List, Optional, Union
6
+ from typing import Any, Dict, Iterator, List, Optional, Union
7
7
 
8
8
  import pyjson5
9
9
  from langchain.schema import ChatMessage
@@ -166,6 +166,7 @@ def converse_offline(
166
166
  query_files: str = None,
167
167
  generated_files: List[FileAttachment] = None,
168
168
  additional_context: List[str] = None,
169
+ generated_asset_results: Dict[str, Dict] = {},
169
170
  tracer: dict = {},
170
171
  ) -> Union[ThreadedGenerator, Iterator[str]]:
171
172
  """
@@ -234,6 +235,7 @@ def converse_offline(
234
235
  model_type=ChatModelOptions.ModelType.OFFLINE,
235
236
  query_files=query_files,
236
237
  generated_files=generated_files,
238
+ generated_asset_results=generated_asset_results,
237
239
  program_execution_context=additional_context,
238
240
  )
239
241
 
@@ -137,7 +137,7 @@ def send_message_to_model(
137
137
  )
138
138
 
139
139
 
140
- def converse(
140
+ def converse_openai(
141
141
  references,
142
142
  user_query,
143
143
  online_results: Optional[Dict[str, Dict]] = None,
@@ -157,9 +157,8 @@ def converse(
157
157
  query_images: Optional[list[str]] = None,
158
158
  vision_available: bool = False,
159
159
  query_files: str = None,
160
- generated_images: Optional[list[str]] = None,
161
160
  generated_files: List[FileAttachment] = None,
162
- generated_excalidraw_diagram: Optional[str] = None,
161
+ generated_asset_results: Dict[str, Dict] = {},
163
162
  program_execution_context: List[str] = None,
164
163
  tracer: dict = {},
165
164
  ):
@@ -223,9 +222,8 @@ def converse(
223
222
  vision_enabled=vision_available,
224
223
  model_type=ChatModelOptions.ModelType.OPENAI,
225
224
  query_files=query_files,
226
- generated_excalidraw_diagram=generated_excalidraw_diagram,
227
225
  generated_files=generated_files,
228
- generated_images=generated_images,
226
+ generated_asset_results=generated_asset_results,
229
227
  program_execution_context=program_execution_context,
230
228
  )
231
229
  logger.debug(f"Conversation Context for GPT: {messages_to_print(messages)}")
@@ -178,40 +178,41 @@ Improved Prompt:
178
178
  """.strip()
179
179
  )
180
180
 
181
- generated_image_attachment = PromptTemplate.from_template(
182
- f"""
183
- Here is the image you generated based on my query. You can follow-up with a general response to my query. Limit to 1-2 sentences.
184
- """.strip()
185
- )
181
+ generated_assets_context = PromptTemplate.from_template(
182
+ """
183
+ You have ALREADY created the assets described below. They will automatically be added to the final response.
184
+ You can provide a summary of your reasoning from the information below or use it to respond to my previous query.
186
185
 
187
- generated_diagram_attachment = PromptTemplate.from_template(
188
- f"""
189
- I've successfully created a diagram based on the user's query. The diagram will automatically be shared with the user. I can follow-up with a general response or summary. Limit to 1-2 sentences.
186
+ Generated Assets:
187
+ {generated_assets}
188
+
189
+ Limit your response to 3 sentences max. Be succinct, clear, and informative.
190
190
  """.strip()
191
191
  )
192
192
 
193
+
193
194
  ## Diagram Generation
194
195
  ## --
195
196
 
196
197
  improve_diagram_description_prompt = PromptTemplate.from_template(
197
198
  """
198
- you are an architect working with a novice digital artist using a diagramming software.
199
+ You are an architect working with a novice digital artist using a diagramming software.
199
200
  {personality_context}
200
201
 
201
- you need to convert the user's query to a description format that the novice artist can use very well. you are allowed to use primitives like
202
- - text
203
- - rectangle
204
- - ellipse
205
- - line
206
- - arrow
202
+ You need to convert the user's query to a description format that the novice artist can use very well. you are allowed to use primitives like
203
+ - Text
204
+ - Rectangle
205
+ - Ellipse
206
+ - Line
207
+ - Arrow
207
208
 
208
- use these primitives to describe what sort of diagram the drawer should create. the artist must recreate the diagram every time, so include all relevant prior information in your description.
209
+ Use these primitives to describe what sort of diagram the drawer should create. The artist must recreate the diagram every time, so include all relevant prior information in your description.
209
210
 
210
- - include the full, exact description. the artist does not have much experience, so be precise.
211
- - describe the layout.
212
- - you can only use straight lines.
213
- - use simple, concise language.
214
- - keep it simple and easy to understand. the artist is easily distracted.
211
+ - Include the full, exact description. the artist does not have much experience, so be precise.
212
+ - Describe the layout.
213
+ - You can only use straight lines.
214
+ - Use simple, concise language.
215
+ - Keep it simple and easy to understand. the artist is easily distracted.
215
216
 
216
217
  Today's Date: {current_date}
217
218
  User's Location: {location}
@@ -337,6 +338,17 @@ Diagram Description: {query}
337
338
  """.strip()
338
339
  )
339
340
 
341
+ failed_diagram_generation = PromptTemplate.from_template(
342
+ """
343
+ You attempted to programmatically generate a diagram but failed due to a system issue. You are normally able to generate diagrams, but you encountered a system issue this time.
344
+
345
+ You can create an ASCII image of the diagram in response instead.
346
+
347
+ This is the diagram you attempted to make:
348
+ {attempted_diagram}
349
+ """.strip()
350
+ )
351
+
340
352
  ## Online Search Conversation
341
353
  ## --
342
354
  online_search_conversation = PromptTemplate.from_template(
@@ -40,6 +40,7 @@ from khoj.utils.helpers import (
40
40
  merge_dicts,
41
41
  )
42
42
  from khoj.utils.rawconfig import FileAttachment
43
+ from khoj.utils.yaml import yaml_dump
43
44
 
44
45
  logger = logging.getLogger(__name__)
45
46
 
@@ -333,9 +334,10 @@ def construct_structured_message(
333
334
  ChatModelOptions.ModelType.GOOGLE,
334
335
  ChatModelOptions.ModelType.ANTHROPIC,
335
336
  ]:
336
- constructed_messages: List[Any] = [
337
- {"type": "text", "text": message},
338
- ]
337
+ if not attached_file_context and not (vision_enabled and images):
338
+ return message
339
+
340
+ constructed_messages: List[Any] = [{"type": "text", "text": message}]
339
341
 
340
342
  if not is_none_or_empty(attached_file_context):
341
343
  constructed_messages.append({"type": "text", "text": attached_file_context})
@@ -380,9 +382,8 @@ def generate_chatml_messages_with_context(
380
382
  model_type="",
381
383
  context_message="",
382
384
  query_files: str = None,
383
- generated_images: Optional[list[str]] = None,
384
385
  generated_files: List[FileAttachment] = None,
385
- generated_excalidraw_diagram: str = None,
386
+ generated_asset_results: Dict[str, Dict] = {},
386
387
  program_execution_context: List[str] = [],
387
388
  ):
388
389
  """Generate chat messages with appropriate context from previous conversation to send to the chat model"""
@@ -402,11 +403,15 @@ def generate_chatml_messages_with_context(
402
403
  message_context = ""
403
404
  message_attached_files = ""
404
405
 
406
+ generated_assets = {}
407
+
405
408
  chat_message = chat.get("message")
406
409
  role = "user" if chat["by"] == "you" else "assistant"
407
410
 
411
+ # Legacy code to handle excalidraw diagrams prior to Dec 2024
408
412
  if chat["by"] == "khoj" and "excalidraw" in chat["intent"].get("type", ""):
409
413
  chat_message = chat["intent"].get("inferred-queries")[0]
414
+
410
415
  if not is_none_or_empty(chat.get("context")):
411
416
  references = "\n\n".join(
412
417
  {
@@ -433,15 +438,23 @@ def generate_chatml_messages_with_context(
433
438
  reconstructed_context_message = ChatMessage(content=message_context, role="user")
434
439
  chatml_messages.insert(0, reconstructed_context_message)
435
440
 
436
- if chat.get("images") and role == "assistant":
437
- # Issue: the assistant role cannot accept an image as a message content, so send it in a separate user message.
438
- file_attachment_message = construct_structured_message(
439
- message=prompts.generated_image_attachment.format(),
440
- images=chat.get("images"),
441
- model_type=model_type,
442
- vision_enabled=vision_enabled,
441
+ if not is_none_or_empty(chat.get("images")) and role == "assistant":
442
+ generated_assets["image"] = {
443
+ "query": chat.get("intent", {}).get("inferred-queries", [user_message])[0],
444
+ }
445
+
446
+ if not is_none_or_empty(chat.get("excalidrawDiagram")) and role == "assistant":
447
+ generated_assets["diagram"] = {
448
+ "query": chat.get("intent", {}).get("inferred-queries", [user_message])[0],
449
+ }
450
+
451
+ if not is_none_or_empty(generated_assets):
452
+ chatml_messages.append(
453
+ ChatMessage(
454
+ content=f"{prompts.generated_assets_context.format(generated_assets=yaml_dump(generated_assets))}\n",
455
+ role="user",
456
+ )
443
457
  )
444
- chatml_messages.append(ChatMessage(content=file_attachment_message, role="user"))
445
458
 
446
459
  message_content = construct_structured_message(
447
460
  chat_message, chat.get("images") if role == "user" else [], model_type, vision_enabled
@@ -455,23 +468,19 @@ def generate_chatml_messages_with_context(
455
468
 
456
469
  messages = []
457
470
 
458
- if not is_none_or_empty(user_message):
471
+ if not is_none_or_empty(generated_asset_results):
459
472
  messages.append(
460
473
  ChatMessage(
461
- content=construct_structured_message(
462
- user_message, query_images, model_type, vision_enabled, query_files
463
- ),
474
+ content=f"{prompts.generated_assets_context.format(generated_assets=yaml_dump(generated_asset_results))}\n\n",
464
475
  role="user",
465
476
  )
466
477
  )
467
- if not is_none_or_empty(context_message):
468
- messages.append(ChatMessage(content=context_message, role="user"))
469
478
 
470
- if generated_images:
479
+ if not is_none_or_empty(user_message):
471
480
  messages.append(
472
481
  ChatMessage(
473
482
  content=construct_structured_message(
474
- prompts.generated_image_attachment.format(), generated_images, model_type, vision_enabled
483
+ user_message, query_images, model_type, vision_enabled, query_files
475
484
  ),
476
485
  role="user",
477
486
  )
@@ -481,16 +490,12 @@ def generate_chatml_messages_with_context(
481
490
  message_attached_files = gather_raw_query_files({file.name: file.content for file in generated_files})
482
491
  messages.append(ChatMessage(content=message_attached_files, role="assistant"))
483
492
 
484
- if generated_excalidraw_diagram:
485
- messages.append(ChatMessage(content=prompts.generated_diagram_attachment.format(), role="assistant"))
486
-
487
493
  if program_execution_context:
488
- messages.append(
489
- ChatMessage(
490
- content=prompts.additional_program_context.format(context="\n".join(program_execution_context)),
491
- role="assistant",
492
- )
493
- )
494
+ program_context_text = "\n".join(program_execution_context)
495
+ context_message += f"{prompts.additional_program_context.format(context=program_context_text)}\n"
496
+
497
+ if not is_none_or_empty(context_message):
498
+ messages.append(ChatMessage(content=context_message, role="user"))
494
499
 
495
500
  if len(chatml_messages) > 0:
496
501
  messages += chatml_messages
khoj/routers/api_chat.py CHANGED
@@ -23,6 +23,7 @@ from khoj.database.adapters import (
23
23
  aget_user_name,
24
24
  )
25
25
  from khoj.database.models import Agent, KhojUser
26
+ from khoj.processor.conversation import prompts
26
27
  from khoj.processor.conversation.prompts import help_message, no_entries_found
27
28
  from khoj.processor.conversation.utils import defilter_query, save_to_conversation_log
28
29
  from khoj.processor.image.generate import text_to_image
@@ -765,6 +766,7 @@ async def chat(
765
766
  researched_results = ""
766
767
  online_results: Dict = dict()
767
768
  code_results: Dict = dict()
769
+ generated_asset_results: Dict = dict()
768
770
  ## Extract Document References
769
771
  compiled_references: List[Any] = []
770
772
  inferred_queries: List[Any] = []
@@ -1128,6 +1130,10 @@ async def chat(
1128
1130
  else:
1129
1131
  generated_images.append(generated_image)
1130
1132
 
1133
+ generated_asset_results["images"] = {
1134
+ "query": improved_image_prompt,
1135
+ }
1136
+
1131
1137
  async for result in send_event(
1132
1138
  ChatEvent.GENERATED_ASSETS,
1133
1139
  {
@@ -1166,6 +1172,10 @@ async def chat(
1166
1172
 
1167
1173
  generated_excalidraw_diagram = diagram_description
1168
1174
 
1175
+ generated_asset_results["diagrams"] = {
1176
+ "query": better_diagram_description_prompt,
1177
+ }
1178
+
1169
1179
  async for result in send_event(
1170
1180
  ChatEvent.GENERATED_ASSETS,
1171
1181
  {
@@ -1176,7 +1186,9 @@ async def chat(
1176
1186
  else:
1177
1187
  error_message = "Failed to generate diagram. Please try again later."
1178
1188
  program_execution_context.append(
1179
- f"AI attempted to programmatically generate a diagram but failed due to a program issue. Generally, it is able to do so, but encountered a system issue this time. AI can suggest text description or rendering of the diagram or user can try again with a simpler prompt."
1189
+ prompts.failed_diagram_generation.format(
1190
+ attempted_diagram=better_diagram_description_prompt
1191
+ )
1180
1192
  )
1181
1193
 
1182
1194
  async for result in send_event(ChatEvent.STATUS, error_message):
@@ -1209,6 +1221,7 @@ async def chat(
1209
1221
  generated_files,
1210
1222
  generated_excalidraw_diagram,
1211
1223
  program_execution_context,
1224
+ generated_asset_results,
1212
1225
  tracer,
1213
1226
  )
1214
1227
 
khoj/routers/helpers.py CHANGED
@@ -88,7 +88,10 @@ from khoj.processor.conversation.offline.chat_model import (
88
88
  converse_offline,
89
89
  send_message_to_model_offline,
90
90
  )
91
- from khoj.processor.conversation.openai.gpt import converse, send_message_to_model
91
+ from khoj.processor.conversation.openai.gpt import (
92
+ converse_openai,
93
+ send_message_to_model,
94
+ )
92
95
  from khoj.processor.conversation.utils import (
93
96
  ChatEvent,
94
97
  ThreadedGenerator,
@@ -751,7 +754,7 @@ async def generate_excalidraw_diagram(
751
754
  )
752
755
  except Exception as e:
753
756
  logger.error(f"Error generating Excalidraw diagram for {user.email}: {e}", exc_info=True)
754
- yield None, None
757
+ yield better_diagram_description_prompt, None
755
758
  return
756
759
 
757
760
  scratchpad = excalidraw_diagram_description.get("scratchpad")
@@ -1189,6 +1192,7 @@ def generate_chat_response(
1189
1192
  raw_generated_files: List[FileAttachment] = [],
1190
1193
  generated_excalidraw_diagram: str = None,
1191
1194
  program_execution_context: List[str] = [],
1195
+ generated_asset_results: Dict[str, Dict] = {},
1192
1196
  tracer: dict = {},
1193
1197
  ) -> Tuple[Union[ThreadedGenerator, Iterator[str]], Dict[str, str]]:
1194
1198
  # Initialize Variables
@@ -1251,6 +1255,7 @@ def generate_chat_response(
1251
1255
  agent=agent,
1252
1256
  query_files=query_files,
1253
1257
  generated_files=raw_generated_files,
1258
+ generated_asset_results=generated_asset_results,
1254
1259
  tracer=tracer,
1255
1260
  )
1256
1261
 
@@ -1258,7 +1263,7 @@ def generate_chat_response(
1258
1263
  openai_chat_config = conversation_config.ai_model_api
1259
1264
  api_key = openai_chat_config.api_key
1260
1265
  chat_model = conversation_config.chat_model
1261
- chat_response = converse(
1266
+ chat_response = converse_openai(
1262
1267
  compiled_references,
1263
1268
  query_to_run,
1264
1269
  query_images=query_images,
@@ -1278,8 +1283,7 @@ def generate_chat_response(
1278
1283
  vision_available=vision_available,
1279
1284
  query_files=query_files,
1280
1285
  generated_files=raw_generated_files,
1281
- generated_images=generated_images,
1282
- generated_excalidraw_diagram=generated_excalidraw_diagram,
1286
+ generated_asset_results=generated_asset_results,
1283
1287
  program_execution_context=program_execution_context,
1284
1288
  tracer=tracer,
1285
1289
  )
@@ -1305,8 +1309,7 @@ def generate_chat_response(
1305
1309
  vision_available=vision_available,
1306
1310
  query_files=query_files,
1307
1311
  generated_files=raw_generated_files,
1308
- generated_images=generated_images,
1309
- generated_excalidraw_diagram=generated_excalidraw_diagram,
1312
+ generated_asset_results=generated_asset_results,
1310
1313
  program_execution_context=program_execution_context,
1311
1314
  tracer=tracer,
1312
1315
  )
@@ -1331,8 +1334,7 @@ def generate_chat_response(
1331
1334
  vision_available=vision_available,
1332
1335
  query_files=query_files,
1333
1336
  generated_files=raw_generated_files,
1334
- generated_images=generated_images,
1335
- generated_excalidraw_diagram=generated_excalidraw_diagram,
1337
+ generated_asset_results=generated_asset_results,
1336
1338
  program_execution_context=program_execution_context,
1337
1339
  tracer=tracer,
1338
1340
  )