khoj 1.29.0__py3-none-any.whl → 1.29.2.dev11__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 (49) hide show
  1. khoj/database/migrations/0074_alter_conversation_title.py +17 -0
  2. khoj/database/models/__init__.py +1 -1
  3. khoj/interface/compiled/404/index.html +1 -1
  4. khoj/interface/compiled/_next/static/chunks/{8423-ebfa9bb9e2424ca3.js → 8423-ffdc2b835629c7f8.js} +1 -1
  5. khoj/interface/compiled/_next/static/chunks/app/agents/{page-4353b1a532795ad1.js → page-ee4f0da14df15091.js} +1 -1
  6. khoj/interface/compiled/_next/static/chunks/app/automations/{page-c9f13c865e739607.js → page-da59a2b9ec07da16.js} +1 -1
  7. khoj/interface/compiled/_next/static/chunks/app/chat/page-e95e87da53d725a7.js +1 -0
  8. khoj/interface/compiled/_next/static/chunks/app/page-fcf7411ff80b6bf5.js +1 -0
  9. khoj/interface/compiled/_next/static/chunks/app/search/{page-8e28deacb61f75aa.js → page-4f44549ba3807021.js} +1 -1
  10. khoj/interface/compiled/_next/static/chunks/app/settings/{page-610d33158b233b34.js → page-5591490850437232.js} +1 -1
  11. khoj/interface/compiled/_next/static/chunks/app/share/chat/page-3a752baa5fb62e20.js +1 -0
  12. khoj/interface/compiled/_next/static/chunks/{webpack-6e43825796b7dfa6.js → webpack-333038bdf3041c6f.js} +1 -1
  13. khoj/interface/compiled/_next/static/css/2ff098d0815fdbc1.css +1 -0
  14. khoj/interface/compiled/_next/static/css/4cae6c0e5c72fb2d.css +1 -0
  15. khoj/interface/compiled/agents/index.html +1 -1
  16. khoj/interface/compiled/agents/index.txt +2 -2
  17. khoj/interface/compiled/automations/index.html +1 -1
  18. khoj/interface/compiled/automations/index.txt +2 -2
  19. khoj/interface/compiled/chat/index.html +1 -1
  20. khoj/interface/compiled/chat/index.txt +2 -2
  21. khoj/interface/compiled/index.html +1 -1
  22. khoj/interface/compiled/index.txt +2 -2
  23. khoj/interface/compiled/search/index.html +1 -1
  24. khoj/interface/compiled/search/index.txt +2 -2
  25. khoj/interface/compiled/settings/index.html +1 -1
  26. khoj/interface/compiled/settings/index.txt +2 -2
  27. khoj/interface/compiled/share/chat/index.html +1 -1
  28. khoj/interface/compiled/share/chat/index.txt +2 -2
  29. khoj/main.py +7 -3
  30. khoj/processor/conversation/anthropic/anthropic_chat.py +2 -3
  31. khoj/processor/conversation/google/gemini_chat.py +2 -3
  32. khoj/processor/conversation/offline/chat_model.py +2 -2
  33. khoj/processor/conversation/openai/gpt.py +2 -2
  34. khoj/processor/conversation/utils.py +7 -0
  35. khoj/processor/tools/run_code.py +29 -2
  36. khoj/routers/api_content.py +12 -2
  37. khoj/routers/research.py +35 -32
  38. {khoj-1.29.0.dist-info → khoj-1.29.2.dev11.dist-info}/METADATA +2 -1
  39. {khoj-1.29.0.dist-info → khoj-1.29.2.dev11.dist-info}/RECORD +44 -43
  40. {khoj-1.29.0.dist-info → khoj-1.29.2.dev11.dist-info}/WHEEL +1 -1
  41. khoj/interface/compiled/_next/static/chunks/app/chat/page-45720e1ed71e3ef5.js +0 -1
  42. khoj/interface/compiled/_next/static/chunks/app/page-ecb8e1c192aa8834.js +0 -1
  43. khoj/interface/compiled/_next/static/chunks/app/share/chat/page-30376aa7e9cfa342.js +0 -1
  44. khoj/interface/compiled/_next/static/css/2d097a35da6bfe8d.css +0 -1
  45. khoj/interface/compiled/_next/static/css/592ca99f5122e75a.css +0 -1
  46. /khoj/interface/compiled/_next/static/{bM0HVaqXqBW3iL4kXivLq → 5mAH5bo-h_J4eyL7tXj2i}/_buildManifest.js +0 -0
  47. /khoj/interface/compiled/_next/static/{bM0HVaqXqBW3iL4kXivLq → 5mAH5bo-h_J4eyL7tXj2i}/_ssgManifest.js +0 -0
  48. {khoj-1.29.0.dist-info → khoj-1.29.2.dev11.dist-info}/entry_points.txt +0 -0
  49. {khoj-1.29.0.dist-info → khoj-1.29.2.dev11.dist-info}/licenses/LICENSE +0 -0
@@ -17,6 +17,7 @@ from khoj.processor.conversation.utils import (
17
17
  clean_json,
18
18
  construct_structured_message,
19
19
  generate_chatml_messages_with_context,
20
+ messages_to_print,
20
21
  )
21
22
  from khoj.utils.helpers import ConversationCommand, is_none_or_empty
22
23
  from khoj.utils.rawconfig import LocationData
@@ -225,9 +226,7 @@ def converse_gemini(
225
226
  )
226
227
 
227
228
  messages, system_prompt = format_messages_for_gemini(messages, system_prompt)
228
-
229
- truncated_messages = "\n".join({f"{message.content[:40]}..." for message in messages})
230
- logger.debug(f"Conversation Context for Gemini: {truncated_messages}")
229
+ logger.debug(f"Conversation Context for Gemini: {messages_to_print(messages)}")
231
230
 
232
231
  # Get Response from Google AI
233
232
  return gemini_chat_completion_with_backoff(
@@ -15,6 +15,7 @@ from khoj.processor.conversation.utils import (
15
15
  ThreadedGenerator,
16
16
  commit_conversation_trace,
17
17
  generate_chatml_messages_with_context,
18
+ messages_to_print,
18
19
  )
19
20
  from khoj.utils import state
20
21
  from khoj.utils.constants import empty_escape_sequences
@@ -222,8 +223,7 @@ def converse_offline(
222
223
  query_files=query_files,
223
224
  )
224
225
 
225
- truncated_messages = "\n".join({f"{message.content[:70]}..." for message in messages})
226
- logger.debug(f"Conversation Context for {model}: {truncated_messages}")
226
+ logger.debug(f"Conversation Context for {model}: {messages_to_print(messages)}")
227
227
 
228
228
  g = ThreadedGenerator(references, online_results, completion_func=completion_func)
229
229
  t = Thread(target=llm_thread, args=(g, messages, offline_chat_model, max_prompt_size, tracer))
@@ -15,6 +15,7 @@ from khoj.processor.conversation.utils import (
15
15
  clean_json,
16
16
  construct_structured_message,
17
17
  generate_chatml_messages_with_context,
18
+ messages_to_print,
18
19
  )
19
20
  from khoj.utils.helpers import ConversationCommand, is_none_or_empty
20
21
  from khoj.utils.rawconfig import LocationData
@@ -212,8 +213,7 @@ def converse(
212
213
  model_type=ChatModelOptions.ModelType.OPENAI,
213
214
  query_files=query_files,
214
215
  )
215
- truncated_messages = "\n".join({f"{message.content[:70]}..." for message in messages})
216
- logger.debug(f"Conversation Context for GPT: {truncated_messages}")
216
+ logger.debug(f"Conversation Context for GPT: {messages_to_print(messages)}")
217
217
 
218
218
  # Get Response from GPT
219
219
  return chat_completion_with_backoff(
@@ -736,3 +736,10 @@ Metadata
736
736
  except Exception as e:
737
737
  logger.error(f"Failed to merge message {msg_branch} into conversation {conv_branch}: {str(e)}", exc_info=True)
738
738
  return False
739
+
740
+
741
+ def messages_to_print(messages: list[ChatMessage], max_length: int = 70) -> str:
742
+ """
743
+ Format, truncate messages to print
744
+ """
745
+ return "\n".join([f"{json.dumps(message.content)[:max_length]}..." for message in messages])
@@ -1,4 +1,5 @@
1
1
  import base64
2
+ import copy
2
3
  import datetime
3
4
  import json
4
5
  import logging
@@ -88,7 +89,8 @@ async def run_code(
88
89
  with timer("Chat actor: Execute generated program", logger, log_level=logging.INFO):
89
90
  result = await execute_sandboxed_python(generated_code.code, input_data, sandbox_url)
90
91
  code = result.pop("code")
91
- logger.info(f"Executed Code:\n--@@--\n{code}\n--@@--Result:\n--@@--\n{result}\n--@@--")
92
+ cleaned_result = truncate_code_context({"cleaned": {"results": result}})["cleaned"]["results"]
93
+ logger.info(f"Executed Code\n----\n{code}\n----\nResult\n----\n{cleaned_result}\n----")
92
94
  yield {query: {"code": code, "results": result}}
93
95
  except Exception as e:
94
96
  raise ValueError(f"Failed to run code for {query} with error: {e}")
@@ -163,7 +165,8 @@ async def execute_sandboxed_python(code: str, input_data: list[dict], sandbox_ur
163
165
  result: dict[str, Any] = await response.json()
164
166
  result["code"] = cleaned_code
165
167
  # Store decoded output files
166
- for output_file in result.get("output_files", []):
168
+ result["output_files"] = result.get("output_files", [])
169
+ for output_file in result["output_files"]:
167
170
  # Decode text files as UTF-8
168
171
  if mimetypes.guess_type(output_file["filename"])[0].startswith("text/") or Path(
169
172
  output_file["filename"]
@@ -175,4 +178,28 @@ async def execute_sandboxed_python(code: str, input_data: list[dict], sandbox_ur
175
178
  "code": cleaned_code,
176
179
  "success": False,
177
180
  "std_err": f"Failed to execute code with {response.status}",
181
+ "output_files": [],
178
182
  }
183
+
184
+
185
+ def truncate_code_context(original_code_results: dict[str, Any], max_chars=10000) -> dict[str, Any]:
186
+ """
187
+ Truncate large output files and drop image file data from code results.
188
+ """
189
+ # Create a deep copy of the code results to avoid modifying the original data
190
+ code_results = copy.deepcopy(original_code_results)
191
+ for code_result in code_results.values():
192
+ for idx, output_file in enumerate(code_result["results"]["output_files"]):
193
+ # Drop image files from code results
194
+ if Path(output_file["filename"]).suffix in {".png", ".jpg", ".jpeg", ".webp"}:
195
+ code_result["results"]["output_files"][idx] = {
196
+ "filename": output_file["filename"],
197
+ "b64_data": "[placeholder for generated image data for brevity]",
198
+ }
199
+ # Truncate large output files
200
+ elif len(output_file["b64_data"]) > max_chars:
201
+ code_result["results"]["output_files"][idx] = {
202
+ "filename": output_file["filename"],
203
+ "b64_data": output_file["b64_data"][:max_chars] + "...",
204
+ }
205
+ return code_results
@@ -422,8 +422,18 @@ async def convert_documents(
422
422
  f"Page {index} of {file_data.name}:\n\n{entry}" for index, entry in enumerate(entries_per_page)
423
423
  ]
424
424
  extracted_content = "\n".join(annotated_pages)
425
-
426
- size_in_bytes = len(extracted_content.encode("utf-8"))
425
+ else:
426
+ # Convert content to string
427
+ extracted_content = extracted_content.decode("utf-8")
428
+
429
+ # Calculate size in bytes. Some of the content might be in bytes, some in str.
430
+ if isinstance(extracted_content, str):
431
+ size_in_bytes = len(extracted_content.encode("utf-8"))
432
+ elif isinstance(extracted_content, bytes):
433
+ size_in_bytes = len(extracted_content)
434
+ else:
435
+ size_in_bytes = 0
436
+ logger.warning(f"Unexpected content type: {type(extracted_content)}")
427
437
 
428
438
  converted_files.append(
429
439
  {
khoj/routers/research.py CHANGED
@@ -16,7 +16,7 @@ from khoj.processor.conversation.utils import (
16
16
  construct_tool_chat_history,
17
17
  )
18
18
  from khoj.processor.tools.online_search import read_webpages, search_online
19
- from khoj.processor.tools.run_code import run_code
19
+ from khoj.processor.tools.run_code import run_code, truncate_code_context
20
20
  from khoj.routers.api import extract_references_and_questions
21
21
  from khoj.routers.helpers import (
22
22
  ChatEvent,
@@ -114,7 +114,7 @@ async def apick_next_tool(
114
114
  logger.info(f"Response for determining relevant tools: {response}")
115
115
 
116
116
  # Detect selection of previously used query, tool combination.
117
- previous_tool_query_combinations = {(i.tool, i.query) for i in previous_iterations}
117
+ previous_tool_query_combinations = {(i.tool, i.query) for i in previous_iterations if i.warning is None}
118
118
  if (selected_tool, generated_query) in previous_tool_query_combinations:
119
119
  warning = f"Repeated tool, query combination detected. Skipping iteration. Try something different."
120
120
  # Only send client status updates if we'll execute this iteration
@@ -226,7 +226,8 @@ async def execute_information_collection(
226
226
  ):
227
227
  yield result
228
228
  except Exception as e:
229
- logger.error(f"Error extracting document references: {e}", exc_info=True)
229
+ this_iteration.warning = f"Error extracting document references: {e}"
230
+ logger.error(this_iteration.warning, exc_info=True)
230
231
 
231
232
  elif this_iteration.tool == ConversationCommand.Online:
232
233
  previous_subqueries = {
@@ -235,28 +236,30 @@ async def execute_information_collection(
235
236
  if iteration.onlineContext
236
237
  for subquery in iteration.onlineContext.keys()
237
238
  }
238
- async for result in search_online(
239
- this_iteration.query,
240
- construct_tool_chat_history(previous_iterations, ConversationCommand.Online),
241
- location,
242
- user,
243
- send_status_func,
244
- [],
245
- max_webpages_to_read=0,
246
- query_images=query_images,
247
- previous_subqueries=previous_subqueries,
248
- agent=agent,
249
- tracer=tracer,
250
- ):
251
- if isinstance(result, dict) and ChatEvent.STATUS in result:
252
- yield result[ChatEvent.STATUS]
253
- elif is_none_or_empty(result):
254
- this_iteration.warning = (
255
- "Detected previously run online search queries. Skipping iteration. Try something different."
256
- )
257
- else:
258
- online_results: Dict[str, Dict] = result # type: ignore
259
- this_iteration.onlineContext = online_results
239
+ try:
240
+ async for result in search_online(
241
+ this_iteration.query,
242
+ construct_tool_chat_history(previous_iterations, ConversationCommand.Online),
243
+ location,
244
+ user,
245
+ send_status_func,
246
+ [],
247
+ max_webpages_to_read=0,
248
+ query_images=query_images,
249
+ previous_subqueries=previous_subqueries,
250
+ agent=agent,
251
+ tracer=tracer,
252
+ ):
253
+ if isinstance(result, dict) and ChatEvent.STATUS in result:
254
+ yield result[ChatEvent.STATUS]
255
+ elif is_none_or_empty(result):
256
+ this_iteration.warning = "Detected previously run online search queries. Skipping iteration. Try something different."
257
+ else:
258
+ online_results: Dict[str, Dict] = result # type: ignore
259
+ this_iteration.onlineContext = online_results
260
+ except Exception as e:
261
+ this_iteration.warning = f"Error searching online: {e}"
262
+ logger.error(this_iteration.warning, exc_info=True)
260
263
 
261
264
  elif this_iteration.tool == ConversationCommand.Webpage:
262
265
  try:
@@ -287,7 +290,8 @@ async def execute_information_collection(
287
290
  webpages.append(webpage["link"])
288
291
  this_iteration.onlineContext = online_results
289
292
  except Exception as e:
290
- logger.error(f"Error reading webpages: {e}", exc_info=True)
293
+ this_iteration.warning = f"Error reading webpages: {e}"
294
+ logger.error(this_iteration.warning, exc_info=True)
291
295
 
292
296
  elif this_iteration.tool == ConversationCommand.Code:
293
297
  try:
@@ -311,10 +315,8 @@ async def execute_information_collection(
311
315
  async for result in send_status_func(f"**Ran code snippets**: {len(this_iteration.codeContext)}"):
312
316
  yield result
313
317
  except ValueError as e:
314
- logger.warning(
315
- f"Failed to use code tool: {e}. Attempting to respond without code results",
316
- exc_info=True,
317
- )
318
+ this_iteration.warning = f"Error running code: {e}"
319
+ logger.warning(this_iteration.warning, exc_info=True)
318
320
 
319
321
  elif this_iteration.tool == ConversationCommand.Summarize:
320
322
  try:
@@ -333,7 +335,8 @@ async def execute_information_collection(
333
335
  else:
334
336
  summarize_files = result # type: ignore
335
337
  except Exception as e:
336
- logger.error(f"Error generating summary: {e}", exc_info=True)
338
+ this_iteration.warning = f"Error summarizing files: {e}"
339
+ logger.error(this_iteration.warning, exc_info=True)
337
340
 
338
341
  else:
339
342
  # No valid tools. This is our exit condition.
@@ -348,7 +351,7 @@ async def execute_information_collection(
348
351
  if online_results:
349
352
  results_data += f"\n<online_results>\n{yaml.dump(online_results, allow_unicode=True, sort_keys=False, default_flow_style=False)}\n</online_results>"
350
353
  if code_results:
351
- results_data += f"\n<code_results>\n{yaml.dump(code_results, allow_unicode=True, sort_keys=False, default_flow_style=False)}\n</code_results>"
354
+ results_data += f"\n<code_results>\n{yaml.dump(truncate_code_context(code_results), allow_unicode=True, sort_keys=False, default_flow_style=False)}\n</code_results>"
352
355
  if summarize_files:
353
356
  results_data += f"\n<summarized_files>\n{yaml.dump(summarize_files, allow_unicode=True, sort_keys=False, default_flow_style=False)}\n</summarized_files>"
354
357
  if this_iteration.warning:
@@ -1,11 +1,12 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: khoj
3
- Version: 1.29.0
3
+ Version: 1.29.2.dev11
4
4
  Summary: Your Second Brain
5
5
  Project-URL: Homepage, https://khoj.dev
6
6
  Project-URL: Documentation, https://docs.khoj.dev
7
7
  Project-URL: Code, https://github.com/khoj-ai/khoj
8
8
  Author: Debanjum Singh Solanky, Saba Imran
9
+ License: AGPL-3.0-or-later
9
10
  Keywords: AI,NLP,images,markdown,org-mode,pdf,productivity,search,semantic-search
10
11
  Classifier: Development Status :: 5 - Production/Stable
11
12
  Classifier: Intended Audience :: Information Technology
@@ -1,6 +1,6 @@
1
1
  khoj/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
2
  khoj/configure.py,sha256=JKqLxXFVe2Xm3MUWYA-3E45SJj_xo0THiLB2YKPb9dU,17312
3
- khoj/main.py,sha256=9YMJEaKlVin5hxU0TcVH5X1CP6wX9HE8Z7qWSxNGPd0,8161
3
+ khoj/main.py,sha256=WaV3muJXT-2MOBOm80kwvx76beUv2njJKRlbxs7jYvA,8300
4
4
  khoj/manage.py,sha256=njo6uLxGaMamTPesHjFEOIBJbpIUrz39e1V59zKj544,664
5
5
  khoj/app/README.md,sha256=PSQjKCdpU2hgszLVF8yEhV7TWhbEEb-1aYLTRuuAsKI,2832
6
6
  khoj/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -102,25 +102,26 @@ khoj/database/migrations/0070_alter_agent_input_tools_alter_agent_output_modes.p
102
102
  khoj/database/migrations/0071_subscription_enabled_trial_at_and_more.py,sha256=GX1ps5yrhLc1IxkPhmvzcoVSjCcZ-EAnicXSqz9TCtY,1026
103
103
  khoj/database/migrations/0072_entry_search_model.py,sha256=qamubOLbkRcbCeyhOWiRhrYT3WTD9ZG8WNaZEWS-a-0,639
104
104
  khoj/database/migrations/0073_delete_usersearchmodelconfig.py,sha256=hKkVZK7l61LI6-be9ZbATIeyKsVYL1nfYbUfKEdzvdE,310
105
+ khoj/database/migrations/0074_alter_conversation_title.py,sha256=dR_CLYOaZgkWyKGPgrDlUxm5UJfK2fwM7Tfl0Bi7D7k,439
105
106
  khoj/database/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
106
- khoj/database/models/__init__.py,sha256=ZF_gRA6pYR8yKZ0An39TxuDBVz7GLRaN6IMGyDThbtw,24169
107
+ khoj/database/models/__init__.py,sha256=KxpJ6a_t-1AVV4dYR2hw7YEzIGw37uCSGbMqLkUcUQs,24169
107
108
  khoj/interface/compiled/agents.svg,sha256=yFCRwIM-Qawa0C5ggAo3ekb-Q1ElmotBOKIGhtfIQqM,1722
108
109
  khoj/interface/compiled/automation.svg,sha256=o7L2XYwJWRSMvl8h6TBv6Pt28RTRVMHqF04EPY0AFj0,1467
109
110
  khoj/interface/compiled/chat.svg,sha256=l2JoYRRgk201adTTdvJ-buKUrc0WGfsudix5xEvtM3A,2424
110
111
  khoj/interface/compiled/close.svg,sha256=hQ2iFLkNzHk0_iyTrSbwnWAeXYlgA-c2Eof2Iqh76n4,417
111
112
  khoj/interface/compiled/copy-button-success.svg,sha256=byqWAYD3Pn9IOXRjOKudJ-TJbP2UESbQGvtLWazNGjY,829
112
113
  khoj/interface/compiled/copy-button.svg,sha256=05bKM2eRxksfBlAPT7yMaoNJEk85bZCxQg67EVrPeHo,669
113
- khoj/interface/compiled/index.html,sha256=RLQanO5sszJ_HAxLygr40LiT1YQGtS19rPyUxy8IGnA,12156
114
- khoj/interface/compiled/index.txt,sha256=2_2Z3JkLsDDtEnGrxdpSnEQWhLJEAVljuWMF2htYw1Q,5611
114
+ khoj/interface/compiled/index.html,sha256=BIHKPuIisH-RABm4q1cvIcgts_ysp7ho10ia3lLNaC8,12156
115
+ khoj/interface/compiled/index.txt,sha256=zFf4VKpy1buBTjrNDli6z2peWOcJ2vphLT3VVFLi97E,5611
115
116
  khoj/interface/compiled/khoj.webmanifest,sha256=lsknYkvEdMbRTOUYKXPM_8krN2gamJmM4u3qj8u9lrU,1682
116
117
  khoj/interface/compiled/logo.svg,sha256=_QCKVYM4WT2Qhcf7aVFImjq_s5CwjynGXYAOgI7yf8w,8059
117
118
  khoj/interface/compiled/send.svg,sha256=VdavOWkVddcwcGcld6pdfmwfz7S91M-9O28cfeiKJkM,635
118
119
  khoj/interface/compiled/share.svg,sha256=91lwo75PvMDrgocuZQab6EQ62CxRbubh9Bhw7CWMKbg,1221
119
120
  khoj/interface/compiled/thumbs-down.svg,sha256=JGNl-DwoRmH2XFMPWwFFklmoYtKxaQbkLE3nuYKe8ZY,1019
120
121
  khoj/interface/compiled/thumbs-up.svg,sha256=yS1wxTRtiztkN-6nZciLoYQUB_KTYNPV8xFRwH2TQFw,1036
121
- khoj/interface/compiled/404/index.html,sha256=aXfp_BqrEetYSV3Mdcdq4Fyr9zmypqC5bun_tm2mtJE,12023
122
- khoj/interface/compiled/_next/static/bM0HVaqXqBW3iL4kXivLq/_buildManifest.js,sha256=6I9QUstNpJnhe3leR2Daw0pSXwzcbBscv6h2jmmPpms,224
123
- khoj/interface/compiled/_next/static/bM0HVaqXqBW3iL4kXivLq/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
122
+ khoj/interface/compiled/404/index.html,sha256=y6MWo7H3VRSzwieEYur5ZJBVv_Z6Uy8qwMw4PU82Ll4,12023
123
+ khoj/interface/compiled/_next/static/5mAH5bo-h_J4eyL7tXj2i/_buildManifest.js,sha256=6I9QUstNpJnhe3leR2Daw0pSXwzcbBscv6h2jmmPpms,224
124
+ khoj/interface/compiled/_next/static/5mAH5bo-h_J4eyL7tXj2i/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
124
125
  khoj/interface/compiled/_next/static/chunks/1210.132a7e1910006bbb.js,sha256=2dJueIfOg5qlQdanOM9HrgwcfrUXCD57bfd8Iv7iJcU,2104
125
126
  khoj/interface/compiled/_next/static/chunks/1279-f37ee4a388ebf544.js,sha256=U_1WaocOdgJ4HZB8tRx_izzYGD1EZlCohC1uLCffCWc,45582
126
127
  khoj/interface/compiled/_next/static/chunks/1459.690bf20e7d7b7090.js,sha256=z-ruZPxF_Z3ef_WOThd9Ox36AMhxaW3znizVivNnA34,34239
@@ -138,7 +139,7 @@ khoj/interface/compiled/_next/static/chunks/5961-3c104d9736b7902b.js,sha256=qss4
138
139
  khoj/interface/compiled/_next/static/chunks/6297-d1c842ed3f714ab0.js,sha256=4nzZ2umR-q6wQ-8L4RSivWXKV_SE1dWoN9qA1I9lCRI,25675
139
140
  khoj/interface/compiled/_next/static/chunks/7023-a5bf5744d19b3bd3.js,sha256=TBJA7dTnI8nymtbljKuZzo2hbStXWR-P8Qkl57k2Tw8,123898
140
141
  khoj/interface/compiled/_next/static/chunks/7883-b1305ec254213afe.js,sha256=dDbERTNiKRIIdC7idybjZq03gnxQtudMawrekye0zH8,241134
141
- khoj/interface/compiled/_next/static/chunks/8423-ebfa9bb9e2424ca3.js,sha256=VwlClSlEVvw6VpjDyK5k8J7CegYcJ9VEMUajAyQo3PA,14909
142
+ khoj/interface/compiled/_next/static/chunks/8423-ffdc2b835629c7f8.js,sha256=e2jAWQ-jQxP-067cJlzMogEtg-UwLZxrg9DP4DHstng,15238
142
143
  khoj/interface/compiled/_next/static/chunks/9001-3b27af6d5f21df44.js,sha256=ran2mMGTO2kiAJebRGMyfyAu4Sdjw-WobS_m6g-qjz8,34223
143
144
  khoj/interface/compiled/_next/static/chunks/9417-32c4db52ca42e681.js,sha256=9r3lV-DxmhmQnYjroVbjAXPyX6rvSmhZKfUguE0dENw,15039
144
145
  khoj/interface/compiled/_next/static/chunks/94ca1967.5584df65931cfe83.js,sha256=lxdrZ8h3_IWkTuk6QlzM2Hd9Pvu9_p8h_EI4aveSOgE,1174519
@@ -149,29 +150,29 @@ khoj/interface/compiled/_next/static/chunks/framework-8e0e0f4a6b83a956.js,sha256
149
150
  khoj/interface/compiled/_next/static/chunks/main-1ea5c2e0fdef4626.js,sha256=8_u87PGI3PahFbDfGWGvpD-a18J7X7ChUqWIeqxVq7g,111061
150
151
  khoj/interface/compiled/_next/static/chunks/main-app-6d6ee3495efe03d4.js,sha256=i52E7sWOcSq1G8eYZL3mtTxbUbwRNxcAbSWQ6uWpMsY,475
151
152
  khoj/interface/compiled/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js,sha256=6QPOwdWeAVe8x-SsiDrm-Ga6u2DkqgG5SFqglrlyIgA,91381
152
- khoj/interface/compiled/_next/static/chunks/webpack-6e43825796b7dfa6.js,sha256=uvR23x0pYT9e9VnkjOHjAR1wPezsnDA3SoYFKFTtwm4,4054
153
+ khoj/interface/compiled/_next/static/chunks/webpack-333038bdf3041c6f.js,sha256=uBOqJymo1PEinYF-xI9Vh-8weLv8-kaxHNpPbXv8-8M,4054
153
154
  khoj/interface/compiled/_next/static/chunks/app/layout-86561d2fac35a91a.js,sha256=2EWsyKE2kcC5uDvsOtgG5OP0hHCX8sCph4NqhUU2rCg,442
154
- khoj/interface/compiled/_next/static/chunks/app/page-ecb8e1c192aa8834.js,sha256=37-5NzGAsEBxSfvd9BOxTWwAi6c-3Gv101QCqFYtMzo,29633
155
+ khoj/interface/compiled/_next/static/chunks/app/page-fcf7411ff80b6bf5.js,sha256=VlOR_tnA5EULQXzWNDUPbUDTbsKCTxJAGPmWz6iXXig,33220
155
156
  khoj/interface/compiled/_next/static/chunks/app/_not-found/page-07ff4ab42b07845e.js,sha256=3mCUnxfMxyK44eqk21TVBrC6u--WSbvx31fTmQuOvMQ,1755
156
157
  khoj/interface/compiled/_next/static/chunks/app/agents/layout-e9838b642913a071.js,sha256=w3vWDf7m2_VG7q98_KGAWbCO06RI7iqFYsb4nDqGUDw,372
157
- khoj/interface/compiled/_next/static/chunks/app/agents/page-4353b1a532795ad1.js,sha256=VYSOSTRUsJQxg-C2ntEbHW5Fwm_a5k1e79bUYlcZBa0,11755
158
+ khoj/interface/compiled/_next/static/chunks/app/agents/page-ee4f0da14df15091.js,sha256=uqFdU7KMW0ZqRQySoGhRNXTHvodXxMC34a1zhr47vVs,11750
158
159
  khoj/interface/compiled/_next/static/chunks/app/automations/layout-27c28e923c9b1ff0.js,sha256=d2vJ_lVB0pfeFXNUPzHAe1ca5NzdNowHPh___SPqugM,5143
159
- khoj/interface/compiled/_next/static/chunks/app/automations/page-c9f13c865e739607.js,sha256=hkZk61Vrde0LIL4KPqnm_u2pd_LPzvt-f6Z0hkq8FCs,35344
160
+ khoj/interface/compiled/_next/static/chunks/app/automations/page-da59a2b9ec07da16.js,sha256=R7auC6hEUsXt6aysFhuyAEcGGUaZ4QOnLxxc8XdDSbc,35349
160
161
  khoj/interface/compiled/_next/static/chunks/app/chat/layout-b0e7ff4baa3b5265.js,sha256=a-Qv2nHUrCa1gIs4Qo5txnOlhhQessAdcnAhhjaN3ag,374
161
- khoj/interface/compiled/_next/static/chunks/app/chat/page-45720e1ed71e3ef5.js,sha256=gPlxB-cSg3pd0yguoe8M44gHzLY4ET-Pbhsok7xtBQw,6632
162
+ khoj/interface/compiled/_next/static/chunks/app/chat/page-e95e87da53d725a7.js,sha256=-2zXrMu8g66gPw4jsGKbeplGd8rXMlkqfsG8qAOtGf4,7181
162
163
  khoj/interface/compiled/_next/static/chunks/app/search/layout-ea6b73fdaf9b24ca.js,sha256=mBgNUjaTBNgIKOpZj722mh1ojg1CNIYRBPiupStSS6s,165
163
- khoj/interface/compiled/_next/static/chunks/app/search/page-8e28deacb61f75aa.js,sha256=A3klMSdb4sxIAuHZ8NdbYgzc_WXhzIPFACF-D4CRino,6958
164
+ khoj/interface/compiled/_next/static/chunks/app/search/page-4f44549ba3807021.js,sha256=3O3gUM_ALtxAqNVAwQ9X_FDedXFYEcNWEqndayZeTBY,6958
164
165
  khoj/interface/compiled/_next/static/chunks/app/settings/layout-254eaaf916449a60.js,sha256=kHAKleDbNFfhNM3e1WLJm3OFw6PDtGcjyj5toO24vps,5347
165
- khoj/interface/compiled/_next/static/chunks/app/settings/page-610d33158b233b34.js,sha256=gvcwqYV9CrC5M3KBpyn0b88m8u34brimEEYC0Z8ExiI,32149
166
+ khoj/interface/compiled/_next/static/chunks/app/settings/page-5591490850437232.js,sha256=p0kRFoAYcSHSxG2y8JOaUBU-Xc__jwCIbYrUs_NEJu8,32149
166
167
  khoj/interface/compiled/_next/static/chunks/app/share/chat/layout-cf7445cf0326bda3.js,sha256=W3axh1K4y-pLSXcXogLl4qLKXr5BZLY1uA7JfSWp5TU,373
167
- khoj/interface/compiled/_next/static/chunks/app/share/chat/page-30376aa7e9cfa342.js,sha256=97knuZITimK5C-hRzxFUVwudgQ-jMVN1uNEaN9u75TU,4351
168
+ khoj/interface/compiled/_next/static/chunks/app/share/chat/page-3a752baa5fb62e20.js,sha256=gIcgm8Wtf38E8fP2jE58mPYm2GLOL5WU7HRxONXrK1g,4376
168
169
  khoj/interface/compiled/_next/static/chunks/pages/_app-f870474a17b7f2fd.js,sha256=eqdFPAN_XFyMUzZ9qwFk-_rhMWZrU7lgNVt1foVUANo,286
169
170
  khoj/interface/compiled/_next/static/chunks/pages/_error-c66a4e8afc46f17b.js,sha256=vjERjtMAbVk-19LyPf1Jc-H6TMcrSznSz6brzNqbqf8,253
170
171
  khoj/interface/compiled/_next/static/css/0e9d53dcd7f11342.css,sha256=52_LSJ59Vwm1p2UpcDXEvq99pTjz2sW4EjF5iKf-dzs,2622
171
172
  khoj/interface/compiled/_next/static/css/1f293605f2871853.css,sha256=G2b3Wx4e0DRBWSdNU20ivCChZI5HBzvPYUVVIdTRjLc,26590
172
- khoj/interface/compiled/_next/static/css/2d097a35da6bfe8d.css,sha256=Px3pPL_D-UjBJEghSLIchKux1WSch40GQHPv60qZEC8,8449
173
+ khoj/interface/compiled/_next/static/css/2ff098d0815fdbc1.css,sha256=F-uRnbKKlMZq5eMcvFZtUOCTgC6n_uNE6fuaHU4CBak,8829
173
174
  khoj/interface/compiled/_next/static/css/3cf13271869a4aeb.css,sha256=sGjJTeMeN6wbQF4OCPgWYgJmSLLSHyzIH2rSVstWx7k,1857
174
- khoj/interface/compiled/_next/static/css/592ca99f5122e75a.css,sha256=BSqRkeb9vBh0phx5GkAlZirTFZintbyggGaUkuOBfaU,914
175
+ khoj/interface/compiled/_next/static/css/4cae6c0e5c72fb2d.css,sha256=3CjTMmtMrm_MYt1ywtUh2MHEjSLSl356SQLl4hdBuYw,534
175
176
  khoj/interface/compiled/_next/static/css/5a400c87d295e68a.css,sha256=ojDUPJ9fJpEo9DzTAsEa-k1cg7Bef-nSTfpszMiqknQ,17711
176
177
  khoj/interface/compiled/_next/static/css/80bd6301fc657983.css,sha256=T7_aQHcWpQBQLKadauHNzjYGw713FtRNTlUqmJjsL6I,1634
177
178
  khoj/interface/compiled/_next/static/css/ed437164d77aa600.css,sha256=l7axYkpTLwbVjhTCUNh8BWdkBom06sG-JrpDX5vSPUU,3056024
@@ -247,8 +248,8 @@ khoj/interface/compiled/_next/static/media/flags.3afdda2f.webp,sha256=M2AW_HLpBn
247
248
  khoj/interface/compiled/_next/static/media/flags@2x.5fbe9fc1.webp,sha256=BBeRPBZkxY3-aKkMnYv5TSkxmbeMbyUH4VRIPfrWg1E,137406
248
249
  khoj/interface/compiled/_next/static/media/globe.98e105ca.webp,sha256=g3ofb8-W9GM75zIhlvQhaS8I2py9TtrovOKR3_7Jf04,514
249
250
  khoj/interface/compiled/_next/static/media/globe@2x.974df6f8.webp,sha256=I_N7Yke3IOoS-0CC6XD8o0IUWG8PdPbrHmf6lpgWlZY,1380
250
- khoj/interface/compiled/agents/index.html,sha256=XQXhd94G4nxDcTAAroETyx5Qql_07JQ-5ZMQ_uvHwxQ,12966
251
- khoj/interface/compiled/agents/index.txt,sha256=rysxI0HT38eiqeVqBfpin17AUBwJqwY0bDEb8IuS3hg,6178
251
+ khoj/interface/compiled/agents/index.html,sha256=1dHQCatobA09niFilxp5D1RSg_aZrs6s9ARnbzlTXk0,12658
252
+ khoj/interface/compiled/agents/index.txt,sha256=YfgoF5biMgnPtU1fNkyhmLFvvqZbQqCEU2h_QiC2I7U,6045
252
253
  khoj/interface/compiled/assets/icons/khoj_lantern.ico,sha256=eggu-B_v3z1R53EjOFhIqqPnICBGdoaw1xnc0NrzHck,174144
253
254
  khoj/interface/compiled/assets/icons/khoj_lantern_128x128.png,sha256=aTxivDb3CYyThkVZWz8A19xl_dNut5DbkXhODWF3A9Q,5640
254
255
  khoj/interface/compiled/assets/icons/khoj_lantern_256x256.png,sha256=xPCMLHiaL7lYOdQLZrKwWE-Qjn5ZaysSZB0ScYv4UZU,12312
@@ -259,16 +260,16 @@ khoj/interface/compiled/assets/samples/desktop-remember-plan-sample.png,sha256=i
259
260
  khoj/interface/compiled/assets/samples/phone-browse-draw-sample.png,sha256=Dd4fPwtFl6BWqnHjeb1mCK_ND0hhHsWtx8sNE7EiMuE,406179
260
261
  khoj/interface/compiled/assets/samples/phone-plain-chat-sample.png,sha256=DEDaNRCkfEWUeh3kYZWIQDTVK1a6KKnYdwj5ZWisN_Q,82985
261
262
  khoj/interface/compiled/assets/samples/phone-remember-plan-sample.png,sha256=Ma3blirRmq3X4oYSsDbbT7MDn29rymDrjwmUfA9BMuM,236285
262
- khoj/interface/compiled/automations/index.html,sha256=cICIG_acWx4rAK8Ossed9HtwxY1pzVgjxGl_t6BaDCQ,30633
263
- khoj/interface/compiled/automations/index.txt,sha256=4Erqs9ruvWtS8naP-7x8hYL6hPV2dukha5eT9_ZNPos,5500
264
- khoj/interface/compiled/chat/index.html,sha256=47dAp5sMuHBVb7qzuCVUOr8jou048XB5Y_D_99BGiac,13860
265
- khoj/interface/compiled/chat/index.txt,sha256=YGJhQW8wBOaUlp9K1OH4t9fhUdx1PrfAZiXftkVJ2zA,6590
266
- khoj/interface/compiled/search/index.html,sha256=HArR_L1XwpS6tN7CSbMY_xNco-cLZeFR3ZqxeGVNtuI,30161
267
- khoj/interface/compiled/search/index.txt,sha256=D-fFSz0zuVL-xOdBjYArzn9I54RftibNuJUtx0K97ok,5256
268
- khoj/interface/compiled/settings/index.html,sha256=dZKf1S4mZ1yIqSyEnfAnAV2k0K0xml8oaamYy7nilNg,12831
269
- khoj/interface/compiled/settings/index.txt,sha256=74s4GpZewUyxUW2HQ-mNJSJqxXCZTiNErloftgXF4Ow,6078
270
- khoj/interface/compiled/share/chat/index.html,sha256=P0Z1Lm5_ETIwuQtW6rXmF87X_dff-Q3U2fH-If3hH0w,15157
271
- khoj/interface/compiled/share/chat/index.txt,sha256=GE4srhFQVXdzz3srlKZadiU1dlDC_K8N8To0puwfnJk,7387
263
+ khoj/interface/compiled/automations/index.html,sha256=062NKdYGuLqU_tDrud-vI8MFlch1WXwlOgG2_duhSMk,30941
264
+ khoj/interface/compiled/automations/index.txt,sha256=rrZ3sYroGD4NWZl5aXn3PkcQ3IaO_KErXn6D6Uvt6qA,5633
265
+ khoj/interface/compiled/chat/index.html,sha256=PXgKBzdO2m4pk-_jsU--51Cn5k-26K9evT7bAtHfa14,13860
266
+ khoj/interface/compiled/chat/index.txt,sha256=-7vR2_NmosUVg_gSgq0hKiQ68mytWMKV_xYJ-L6OR3s,6590
267
+ khoj/interface/compiled/search/index.html,sha256=D0qq0IppE5b9tW_8OGZBC7g5p30EWxAAfF-08UIKM2M,30161
268
+ khoj/interface/compiled/search/index.txt,sha256=q5yYCZLZyAKxsAiYPFXwqa7NHzukT0NpHqgaO7-R5Dw,5256
269
+ khoj/interface/compiled/settings/index.html,sha256=rrEHlnFaWtK-kpzusMNZsS11pfaALCPpOczlRBvVcSA,12831
270
+ khoj/interface/compiled/settings/index.txt,sha256=UJDJuHfj3cc71-LcouoPJ7YwXHTahcX_Voj4qCwncP8,6078
271
+ khoj/interface/compiled/share/chat/index.html,sha256=OGH8Fx1Ot3TwdIsJE669UuWwo704x0IR4RsnLwMVwVE,15157
272
+ khoj/interface/compiled/share/chat/index.txt,sha256=HysG8IHwHBrlDzunH0IKRe5VhVd1G9i7HnJp0Nour9g,7387
272
273
  khoj/interface/email/feedback.html,sha256=xksuPFamx4hGWyTTxZKRgX_eiYQQEuv-eK9Xmkt-nwU,1216
273
274
  khoj/interface/email/magic_link.html,sha256=EoGKQucfPj3xQrWXhSZAzPFOYCHF_ZX94TWCd1XHl1M,941
274
275
  khoj/interface/email/task.html,sha256=tY7a0gzVeQ2lSQNu7WyXR_s7VYeWTrxWEj1iHVuoVE4,2813
@@ -321,19 +322,19 @@ khoj/processor/content/plaintext/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRk
321
322
  khoj/processor/content/plaintext/plaintext_to_entries.py,sha256=wFZwK_zIc7gWbRtO9sOHo9KvfhGAzL9psX_nKWYFduo,4975
322
323
  khoj/processor/conversation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
323
324
  khoj/processor/conversation/prompts.py,sha256=jXVxeFYHBP6LBSAmdykYH6in297VTgVdEJ5IDsYlQnI,50319
324
- khoj/processor/conversation/utils.py,sha256=sp9NjsP6dl1RMlcmX4GGZTD9bIUozXr9OD6gDvxxLV4,27635
325
+ khoj/processor/conversation/utils.py,sha256=2gbglhzKMEuldL0P9Y6miCF8BNooiEgFFNdgc8lvneQ,27870
325
326
  khoj/processor/conversation/anthropic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
326
- khoj/processor/conversation/anthropic/anthropic_chat.py,sha256=JjKiMY8CYv7kp2gHo7HcB-rMP5kokSutPw6w2OOURd4,8678
327
+ khoj/processor/conversation/anthropic/anthropic_chat.py,sha256=8w7oSTBIxcZa6y03Zo2nuQFa2WMiazwK_qfO2q_O-6c,8618
327
328
  khoj/processor/conversation/anthropic/utils.py,sha256=6_FnsfLRqjkubkfMVmPTEEBzvMUOAccIz5AHV6B9mU8,6623
328
329
  khoj/processor/conversation/google/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
329
- khoj/processor/conversation/google/gemini_chat.py,sha256=JoGmLZRic96ODnz0sMb8MGPQbBRPd2IOC2-Ak88jwtc,8879
330
+ khoj/processor/conversation/google/gemini_chat.py,sha256=MABG3OAqfz-DDp6sHbkHcyM3VTevPOUV6x3iCB__mcc,8819
330
331
  khoj/processor/conversation/google/utils.py,sha256=-Z5crXL6-xJraEX4qShbI3Y4PAqKi55PEWiEDPSi-LM,10205
331
332
  khoj/processor/conversation/offline/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
332
- khoj/processor/conversation/offline/chat_model.py,sha256=BiH-p6CigmZSXNzs6oNvjcYeiSEsVTRPdTPH0oTPPlM,11000
333
+ khoj/processor/conversation/offline/chat_model.py,sha256=SCkloMOcQlC01yE-mYOU_hF5efpq_sDpaOYK6aYxN_c,10941
333
334
  khoj/processor/conversation/offline/utils.py,sha256=51McImxl6u1qgRYvMt7uzsgLGSLq5SMFy74ymlNjIcc,3033
334
335
  khoj/processor/conversation/offline/whisper.py,sha256=DJI-8y8DULO2cQ49m2VOvRyIZ2TxBypc15gM8O3HuMI,470
335
336
  khoj/processor/conversation/openai/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
336
- khoj/processor/conversation/openai/gpt.py,sha256=szg-45KuDsUJXDg4CSMaeCEA3WZ8LDGA1ajOxW1Wc1U,8163
337
+ khoj/processor/conversation/openai/gpt.py,sha256=IYv1PAiO1KaD5hCxWKQfzfSBRYR7seMP_kfofuLrexQ,8104
337
338
  khoj/processor/conversation/openai/utils.py,sha256=n_lFlgNjsFbghF1gfNPRtPvR3GG2JjUwWTGbjvnxbLU,6448
338
339
  khoj/processor/conversation/openai/whisper.py,sha256=zoEeK1LNCg_tzP4xzYi5vRPzNPGuDGzpkrkG7d1LUn4,447
339
340
  khoj/processor/image/generate.py,sha256=i5J51AwlMZbdlHHov-_MAw9bYgdVYmGgFjCYWDfx02s,9120
@@ -341,12 +342,12 @@ khoj/processor/speech/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3h
341
342
  khoj/processor/speech/text_to_speech.py,sha256=Q7sapi5Hv6woXOumtrGqR0t6izZrFBkWXFOGrHM6dJ4,1929
342
343
  khoj/processor/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
343
344
  khoj/processor/tools/online_search.py,sha256=uxwtvKReGEW1XhkeToi7XB_oZ301DIcnD7Wr3xojuM4,16307
344
- khoj/processor/tools/run_code.py,sha256=f8_oXLjBLscnnE9BJorOdFQsegk9wVWb-yUuyPvd60A,6347
345
+ khoj/processor/tools/run_code.py,sha256=i9ce53dw0y5ZNhPorRNYJieIKw6eyrZQX0ABDrWiW8M,7738
345
346
  khoj/routers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
346
347
  khoj/routers/api.py,sha256=_AI1pnQMQM75L6WVZSAVfvrk04pLEdLbHA0fkyxnUbo,28489
347
348
  khoj/routers/api_agents.py,sha256=vHPruCjlQxGBdm0lcmymEb9-aAELqbOplqh21WwD0DQ,9699
348
349
  khoj/routers/api_chat.py,sha256=83jqlGex6K3bry9_Pq4Ti8pEGHhENsjtlW4EgWbL-88,48704
349
- khoj/routers/api_content.py,sha256=10dw55vesCsuci577OCYgYylWgmIDA45Iax1ZQ8dnGI,20544
350
+ khoj/routers/api_content.py,sha256=WNlB6lVwRW8hHDthO2HypbpPvqrqt9rTU5oMRNknpMU,21070
350
351
  khoj/routers/api_model.py,sha256=KDsxNwHspC94eTcv6l3ehr773EOvgc670UnZLE1WZ4o,3642
351
352
  khoj/routers/api_phone.py,sha256=p9yfc4WeMHDC0hg3aQk60a2VBy8rZPdEnz9wdJ7DzkU,2208
352
353
  khoj/routers/api_subscription.py,sha256=J6xZNZDdOA71vCfethlPfAyfvRBq4HGCBpbsOZ9CWj0,5333
@@ -354,7 +355,7 @@ khoj/routers/auth.py,sha256=HO54PR-BkWA_iJIktEobUrObcXVYG-00jpnIcEVdR5s,6564
354
355
  khoj/routers/email.py,sha256=SGYNPQvfcvYeHf70F0YqpY0FLMRElF2ZekROXdwGI18,3821
355
356
  khoj/routers/helpers.py,sha256=v-dnh2AwuXQNCWGHYLacGnq-8bNSluU2Ym8z7JG4ek0,82672
356
357
  khoj/routers/notion.py,sha256=g53xyYFmjr2JnuIrTW2vytbfkiK_UkoRTxqnnLSmD5o,2802
357
- khoj/routers/research.py,sha256=e_p2Rj9ypryCdgCb9fhNldzf57gWQN99eDy1aOTk1yU,15675
358
+ khoj/routers/research.py,sha256=SczFMS9a8_Wxhh3n_Zt9CJ-zZugBDAd_WmiZGFa6RR8,16117
358
359
  khoj/routers/storage.py,sha256=tJrwhFRVWv0MHv7V7huMc1Diwm-putZSwnZXJ3tqT_c,2338
359
360
  khoj/routers/twilio.py,sha256=MLsuCm4--ETvr3sLxbF0CL_ehlg_l2rKBSLR2Qh2Xls,1081
360
361
  khoj/routers/web_client.py,sha256=frH03Sh0AR7c2MvRyc5a3tOFyxyVak3d1pl1sLcLLD4,4212
@@ -377,8 +378,8 @@ khoj/utils/models.py,sha256=Q5tcC9-z25sCiub048fLnvZ6_IIO1bcPNxt5payekk0,2009
377
378
  khoj/utils/rawconfig.py,sha256=bQ_MGbBzYt6ZUIsHUwZjaHKDLh6GQ7h-sENkv3fyVbQ,5028
378
379
  khoj/utils/state.py,sha256=KtUEIKAZdGGN_Qr58RS1pgcywgSafun8YIXx-YEclAY,1645
379
380
  khoj/utils/yaml.py,sha256=qy1Tkc61rDMesBw_Cyx2vOR6H-Hngcsm5kYfjwQBwkE,1543
380
- khoj-1.29.0.dist-info/METADATA,sha256=zyvqvvGSSvaCKRfE1YENL9fYutntszn_HJYh6LKuqWA,7087
381
- khoj-1.29.0.dist-info/WHEEL,sha256=3U_NnUcV_1B1kPkYaPzN-irRckL5VW_lytn0ytO_kRY,87
382
- khoj-1.29.0.dist-info/entry_points.txt,sha256=KBIcez5N_jCgq_ER4Uxf-e1lxTBMTE_BBjMwwfeZyAg,39
383
- khoj-1.29.0.dist-info/licenses/LICENSE,sha256=hIahDEOTzuHCU5J2nd07LWwkLW7Hko4UFO__ffsvB-8,34523
384
- khoj-1.29.0.dist-info/RECORD,,
381
+ khoj-1.29.2.dev11.dist-info/METADATA,sha256=jc9xHYKWUisl9w_Mh0xL8ezccH-fvpZGfgYrMrlkhBw,7120
382
+ khoj-1.29.2.dev11.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
383
+ khoj-1.29.2.dev11.dist-info/entry_points.txt,sha256=KBIcez5N_jCgq_ER4Uxf-e1lxTBMTE_BBjMwwfeZyAg,39
384
+ khoj-1.29.2.dev11.dist-info/licenses/LICENSE,sha256=hIahDEOTzuHCU5J2nd07LWwkLW7Hko4UFO__ffsvB-8,34523
385
+ khoj-1.29.2.dev11.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: hatchling 1.26.1
2
+ Generator: hatchling 1.26.3
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1929],{39929:function(e,t,s){Promise.resolve().then(s.bind(s,38874))},38874:function(e,t,s){"use strict";s.r(t),s.d(t,{default:function(){return p}});var a=s(57437),o=s(65104),n=s.n(o),i=s(2265),r=s(48861),c=s(55538),l=s(16463),d=s(58485),u=s(9557);s(7395);var h=s(69591),m=s(38423),g=s(79306);function f(e){let t=(0,l.useSearchParams)().get("conversationId"),[s,o]=(0,i.useState)(""),[r,d]=(0,i.useState)([]),[u,h]=(0,i.useState)(!1),[g,f]=(0,i.useState)(null),[p,_]=(0,i.useState)(!1),x=(0,i.useRef)(null),y=e.setQueryToProcess,w=e.onConversationIdChange,S=e.isMobileWidth?"w-full":"w-4/6";if((0,i.useEffect)(()=>{if(r.length>0){let t=r.map(e=>encodeURIComponent(e));e.setImages(t)}},[r,e.setImages]),(0,i.useEffect)(()=>{let t=localStorage.getItem("images");if(t){let s=JSON.parse(t);d(s);let a=s.map(e=>encodeURIComponent(e));e.setImages(a),localStorage.removeItem("images")}let s=localStorage.getItem("message");s&&(h(!0),y(s),s.trim().startsWith("/research")&&_(!0));let a=localStorage.getItem("uploadedFiles");if(a){let t=a?JSON.parse(a):[],s=[];for(let e of t)s.push({name:e.name,file_type:e.file_type,content:e.content,size:e.size});localStorage.removeItem("uploadedFiles"),e.setUploadedFiles(s)}},[y,e.setImages,t]),(0,i.useEffect)(()=>{s&&(h(!0),y(s))},[s,y]),(0,i.useEffect)(()=>{t&&(null==w||w(t))},[t,w]),(0,i.useEffect)(()=>{e.streamedMessages&&e.streamedMessages.length>0&&e.streamedMessages[e.streamedMessages.length-1].completed?(h(!1),d([]),e.setUploadedFiles(void 0)):o("")},[e.streamedMessages]),!t){window.location.href="/";return}return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("div",{className:n().chatBodyFull,children:(0,a.jsx)(c.Z,{conversationId:t,setTitle:e.setTitle,setAgent:f,pendingMessage:u?s:"",incomingMessages:e.streamedMessages,setIncomingMessages:e.setStreamedMessages,customClassName:S})}),(0,a.jsx)("div",{className:"".concat(n().inputBox," p-1 md:px-2 shadow-md bg-background align-middle items-center justify-center dark:bg-neutral-700 dark:border-0 dark:shadow-sm rounded-t-2xl rounded-b-none md:rounded-xl h-fit ").concat(S," mr-auto ml-auto"),children:(0,a.jsx)(m.a,{agentColor:null==g?void 0:g.color,isLoggedIn:e.isLoggedIn,sendMessage:e=>o(e),sendImage:e=>d(t=>[...t,e]),sendDisabled:u,chatOptionsData:e.chatOptionsData,conversationId:t,isMobileWidth:e.isMobileWidth,setUploadedFiles:e.setUploadedFiles,ref:x,isResearchModeEnabled:p})})]})}function p(){let e="Khoj AI - Chat",[t,s]=(0,i.useState)(null),[o,c]=(0,i.useState)(!0),[l,m]=(0,i.useState)(e),[p,_]=(0,i.useState)(null),[x,y]=(0,i.useState)([]),[w,S]=(0,i.useState)(""),[I,v]=(0,i.useState)(!1),[b,j]=(0,i.useState)(void 0),[B,C]=(0,i.useState)([]),M=(0,h.k6)()||{timezone:Intl.DateTimeFormat().resolvedOptions().timeZone},E=(0,g.GW)(),F=(0,h.IC)();async function T(e){if(!e.ok)throw Error(e.statusText);if(!e.body)throw Error("Response body is null");let t=e.body.getReader(),s=new TextDecoder,a="␃\uD83D\uDD1A␗",o="",n=[],i={},r={};for(;;){let e;let{done:c,value:l}=await t.read();if(c){S(""),v(!1),C([]),p&&(0,u.tQ)(p,m);break}for(o+=s.decode(l,{stream:!0});-1!==(e=o.indexOf(a));){let t=o.slice(0,e);if(o=o.slice(e+a.length),t){let e=x.find(e=>!e.completed);if(!e){console.error("No current message found");return}({context:n,onlineContext:i,codeContext:r}=(0,u.VK)(t,e,n,i,r)),y([...x])}}}}async function k(){if(localStorage.removeItem("message"),!w||!p)return;let e={q:w,conversation_id:p,stream:!0,...M&&{city:M.city,region:M.region,country:M.country,country_code:M.countryCode,timezone:M.timezone},...B.length>0&&{images:B},...b&&{files:b}},t=await fetch("/api/chat?client=web",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});try{await T(t)}catch(o){let e=await t.json();console.error(e);let s=x.find(e=>!e.completed);if(!s)return;let a=o.message;a.includes("Error in input stream")?s.rawResponse="Woops! The connection broke while I was writing my thoughts down. Maybe try again in a bit or dislike this message if the issue persists?":429===t.status?"detail"in e?s.rawResponse="".concat(e.detail):s.rawResponse="I'm a bit overwhelmed at the moment. Could you try again in a bit or dislike this message if the issue persists?":s.rawResponse="Umm, not sure what just happened. I see this error message: ".concat(a,". Could you try again or dislike this message if the issue persists?"),s.completed=!0,y([...x]),S(""),v(!1)}}return((0,i.useEffect)(()=>{fetch("/api/chat/options").then(e=>e.json()).then(e=>{c(!1),e&&s(e)}).catch(e=>{console.error(e)}),(0,h.EK)()},[]),(0,i.useEffect)(()=>{if(w){let e={rawResponse:"",trainOfThought:[],context:[],onlineContext:{},codeContext:{},completed:!1,timestamp:new Date().toISOString(),rawQuery:w||"",images:B,queryFiles:b};y(t=>[...t,e]),v(!0)}},[w]),(0,i.useEffect)(()=>{I&&k()},[I]),o)?(0,a.jsx)(d.Z,{}):(0,a.jsxs)("div",{className:"".concat(n().main," ").concat(n().chatLayout),children:[(0,a.jsx)("title",{children:"".concat(e).concat(l&&l!==e?": ".concat(l):"")}),(0,a.jsx)("div",{children:(0,a.jsx)(r.ZP,{conversationId:p,uploadedFiles:[],isMobileWidth:F})}),(0,a.jsx)("div",{className:n().chatBox,children:(0,a.jsxs)("div",{className:n().chatBoxBody,children:[!F&&p&&(0,a.jsxs)("div",{className:"".concat(n().chatTitleWrapper," text-nowrap text-ellipsis overflow-hidden max-w-screen-md grid items-top font-bold mr-8 pt-6 col-auto h-fit"),children:[l&&(0,a.jsx)("h2",{className:"text-lg text-ellipsis whitespace-nowrap overflow-x-hidden",children:l}),(0,a.jsx)(r.En,{conversationId:p,setTitle:m,sizing:"md"})]}),(0,a.jsx)(i.Suspense,{fallback:(0,a.jsx)(d.Z,{}),children:(0,a.jsx)(f,{isLoggedIn:null!==E,streamedMessages:x,setStreamedMessages:y,chatOptionsData:t,setTitle:m,setQueryToProcess:S,setUploadedFiles:j,isMobileWidth:F,onConversationIdChange:e=>{_(e)},setImages:C})})]})})]})}},16463:function(e,t,s){"use strict";var a=s(71169);s.o(a,"useRouter")&&s.d(t,{useRouter:function(){return a.useRouter}}),s.o(a,"useSearchParams")&&s.d(t,{useSearchParams:function(){return a.useSearchParams}})},65104:function(e){e.exports={main:"chat_main__8xQu5",suggestions:"chat_suggestions__m8n2t",inputBox:"chat_inputBox__LOFws",chatBodyFull:"chat_chatBodyFull__FfKEK",chatBody:"chat_chatBody__sS1LX",chatLayout:"chat_chatLayout__pR203",chatBox:"chat_chatBox__FBct_",titleBar:"chat_titleBar__R5QlK",chatBoxBody:"chat_chatBoxBody__qT_SC",agentIndicator:"chat_agentIndicator__8V55w",chatTitleWrapper:"chat_chatTitleWrapper__6ChWq"}}},function(e){e.O(0,[7812,9448,4836,3954,9001,3062,3124,3803,2261,5961,1603,9417,8423,5538,2971,7023,1744],function(){return e(e.s=39929)}),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1931],{1507:function(e,t,n){Promise.resolve().then(n.bind(n,4515))},4515:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return U}});var i,o,a=n(57437);n(58877);var r=n(68518),s=n.n(r);n(7395);var l=n(2265),c=n(29039),d=n(52195);let p=new Map([["bold",l.createElement(l.Fragment,null,l.createElement("path",{d:"M228,128a100,100,0,0,1-98.66,100H128a99.39,99.39,0,0,1-68.62-27.29,12,12,0,0,1,16.48-17.45,76,76,0,1,0-1.57-109c-.13.13-.25.25-.39.37L54.89,92H72a12,12,0,0,1,0,24H24a12,12,0,0,1-12-12V56a12,12,0,0,1,24,0V76.72L57.48,57.06A100,100,0,0,1,228,128Z"}))],["duotone",l.createElement(l.Fragment,null,l.createElement("path",{d:"M216,128a88,88,0,1,1-88-88A88,88,0,0,1,216,128Z",opacity:"0.2"}),l.createElement("path",{d:"M224,128a96,96,0,0,1-94.71,96H128A95.38,95.38,0,0,1,62.1,197.8a8,8,0,0,1,11-11.63A80,80,0,1,0,71.43,71.39a3.07,3.07,0,0,1-.26.25L44.59,96H72a8,8,0,0,1,0,16H24a8,8,0,0,1-8-8V56a8,8,0,0,1,16,0V85.8L60.25,60A96,96,0,0,1,224,128Z"}))],["fill",l.createElement(l.Fragment,null,l.createElement("path",{d:"M224,128a96,96,0,0,1-94.71,96H128A95.38,95.38,0,0,1,62.1,197.8a8,8,0,0,1,11-11.63A80,80,0,1,0,71.43,71.39a3.07,3.07,0,0,1-.26.25L60.63,81.29l17,17A8,8,0,0,1,72,112H24a8,8,0,0,1-8-8V56A8,8,0,0,1,29.66,50.3L49.31,70,60.25,60A96,96,0,0,1,224,128Z"}))],["light",l.createElement(l.Fragment,null,l.createElement("path",{d:"M222,128a94,94,0,0,1-92.74,94H128a93.43,93.43,0,0,1-64.5-25.65,6,6,0,1,1,8.24-8.72A82,82,0,1,0,70,70l-.19.19L39.44,98H72a6,6,0,0,1,0,12H24a6,6,0,0,1-6-6V56a6,6,0,0,1,12,0V90.34L61.63,61.4A94,94,0,0,1,222,128Z"}))],["regular",l.createElement(l.Fragment,null,l.createElement("path",{d:"M224,128a96,96,0,0,1-94.71,96H128A95.38,95.38,0,0,1,62.1,197.8a8,8,0,0,1,11-11.63A80,80,0,1,0,71.43,71.39a3.07,3.07,0,0,1-.26.25L44.59,96H72a8,8,0,0,1,0,16H24a8,8,0,0,1-8-8V56a8,8,0,0,1,16,0V85.8L60.25,60A96,96,0,0,1,224,128Z"}))],["thin",l.createElement(l.Fragment,null,l.createElement("path",{d:"M220,128a92,92,0,0,1-90.77,92H128a91.47,91.47,0,0,1-63.13-25.1,4,4,0,1,1,5.5-5.82A84,84,0,1,0,68.6,68.57l-.13.12L34.3,100H72a4,4,0,0,1,0,8H24a4,4,0,0,1-4-4V56a4,4,0,0,1,8,0V94.89l35-32A92,92,0,0,1,220,128Z"}))]]);var u=Object.defineProperty,h=Object.defineProperties,g=Object.getOwnPropertyDescriptors,m=Object.getOwnPropertySymbols,f=Object.prototype.hasOwnProperty,y=Object.prototype.propertyIsEnumerable,k=(e,t,n)=>t in e?u(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,b=(e,t)=>{for(var n in t||(t={}))f.call(t,n)&&k(e,n,t[n]);if(m)for(var n of m(t))y.call(t,n)&&k(e,n,t[n]);return e},v=(e,t)=>h(e,g(t));let w=(0,l.forwardRef)((e,t)=>l.createElement(d.Z,v(b({ref:t},e),{weights:p})));w.displayName="ArrowCounterClockwise";var x=n(36013),P=n(31806),C=n.n(P),L=n(58575),j=n(89417);(i=o||(o={})).Automation="Automation",i.Paint="Paint",i.Travel="Travel",i.Health="Health",i.Learning="Learning",i.Language="Language",i.PopCulture="Pop Culture",i.Food="Food",i.Interviewing="Interviewing",i.Home="Home",i.Fun="Fun",i.Code="Code",i.Finance="Finance";let A={};A.Automation="blue",A.Paint="indigo",A.Travel="yellow",A.Health="teal",A.Learning="purple",A.Language="blue",A["Pop Culture"]="red",A.Food="yellow",A.Interviewing="orange",A.Home="green",A.Fun="fuchsia",A.Code="purple",A.Finance="green";let S="orange",E=[{type:"Automation",color:A.Automation||S,description:"Send me a summary of HackerNews every morning.",link:"/automations?subject=Summarizing%20Top%20Headlines%20from%20HackerNews&query=Summarize%20the%20top%20headlines%20on%20HackerNews&crontime=00%207%20*%20*%20*"},{type:"Automation",color:A.Automation||S,description:"Compose a bedtime story that a five-year-old might enjoy.",link:"/automations?subject=Daily%20Bedtime%20Story&query=Compose%20a%20bedtime%20story%20that%20a%20five-year-old%20might%20enjoy.%20It%20should%20not%20exceed%20five%20paragraphs.%20Appeal%20to%20the%20imagination%2C%20but%20weave%20in%20learnings.&crontime=0%2021%20*%20*%20*"},{type:"Paint",color:A.Paint||S,description:"Paint a picture of a sunset but it's made of stained glass tiles",link:""},{type:"Travel",color:A.Travel||S,description:"Search for the best attractions in Austria Hungary",link:""},{type:"Health",color:A.Health||S,description:"Generate a weekly meal plan with recipes.",link:"/automations?subject=Weekly Meal Plan&query=Create a weekly meal plan with 7 dinner recipes, including ingredients and brief instructions. Focus on balanced, healthy meals.&crontime=0 18 * * 0"},{type:"Paint",color:A.Paint||S,description:"Paint a futuristic cityscape with flying cars.",link:""},{type:"Travel",color:A.Travel||S,description:"Find the top-rated coffee shops in Seattle.",link:""},{type:"Automation",color:A.Automation||S,description:"Send daily motivational quotes.",link:"/automations?subject=Daily Motivation&query=Provide an inspiring quote for the day along with a brief explanation of its meaning.&crontime=0 7 * * *"},{type:"Paint",color:A.Paint||S,description:"Create an abstract representation of jazz music.",link:""},{type:"Learning",color:A.Learning||S,description:"Research the history of the Eiffel Tower.",link:""},{type:"Automation",color:A.Automation||S,description:"Compile a weekly news summary.",link:"/automations?subject=Weekly News Digest&query=Summarize the top 5 most important news stories of the week across various categories.&crontime=0 18 * * 5"},{type:"Paint",color:A.Paint||S,description:"Paint a portrait of a cat wearing a Victorian-era costume.",link:""},{type:"Travel",color:A.Travel||S,description:"Find beginner-friendly hiking trails near Los Angeles.",link:""},{type:"Automation",color:A.Automation||S,description:"Generate a daily writing prompt.",link:"/automations?subject=Daily Writing Prompt&query=Create an engaging writing prompt suitable for short story or journal writing.&crontime=0 9 * * *"},{type:"Paint",color:A.Paint||S,description:"Create a surrealist landscape inspired by Salvador Dali.",link:""},{type:"Learning",color:A.Learning||S,description:"Research the benefits and drawbacks of electric vehicles.",link:""},{type:"Automation",color:A.Automation||S,description:"Send weekly language learning tips for Spanish.",link:"/automations?subject=Spanish Learning Tips&query=Provide a useful Spanish language learning tip, including vocabulary, grammar, or cultural insight.&crontime=0 19 * * 2"},{type:"Paint",color:A.Paint||S,description:"Paint a scene from a fairy tale in the style of Studio Ghibli.",link:""},{type:"Pop Culture",color:"yellow",description:"Find the best-rated science fiction books of the last decade.",link:""},{type:"Paint",color:A.Paint||S,description:"Paint a still life of exotic fruits in a neon color palette.",link:""},{type:"Travel",color:A.Travel||S,description:"Research the most eco-friendly cities in Europe.",link:""},{type:"Automation",color:A.Automation||S,description:"Send daily reminders for habit tracking.",link:"/automations?subject=Habit Tracker&query=Generate a daily reminder to track habits, including a motivational message.&crontime=0 20 * * *"},{type:"Paint",color:A.Paint||S,description:"Create a digital painting of a cyberpunk street market.",link:""},{type:"Learning",color:A.Learning||S,description:"Summarize the biography of this figure: https://en.wikipedia.org/wiki/Jean_Baptiste_Point_du_Sable",link:""},{type:"Language",color:"blue",description:"Send daily Spanish phrases used in Latin America.",link:"/automations?subject=Daily Latin American Spanish&query=Provide a common Spanish phrase or slang term used in Latin America, its meaning, and an example of usage. Include which countries it's most common in.&crontime=0 8 * * *"},{type:"Paint",color:A.Paint||S,description:"Create a vibrant painting inspired by Frida Kahlo's style.",link:""},{type:"Food",color:A.Food||S,description:"Find the best empanada recipe from Colombia.",link:""},{type:"Automation",color:A.Automation||S,description:"Weekly update on the Brazilian startup ecosystems.",link:"/automations?subject=LatAm Startup News&query=Provide a summary of the most significant developments in Latin American startup ecosystems this week. Include notable funding rounds, expansions, or policy changes.&crontime=0 18 * * 5"},{type:"Paint",color:A.Paint||S,description:"Paint a colorful scene of a traditional Day of the Dead celebration in Mexico.",link:""},{type:"Language",color:A.Language||S,description:"Daily Swahili phrase with English translation.",link:"/automations?subject=Daily Swahili Lesson&query=Provide a common Swahili phrase or proverb, its English translation, and a brief explanation of its cultural significance in East Africa.&crontime=0 7 * * *"},{type:"Paint",color:A.Paint||S,description:"Create a digital painting of the Serengeti during wildebeest migration.",link:""},{type:"Learning",color:A.Learning||S,description:"Research the top M-Pesa alternatives in East Africa.",link:""},{type:"Automation",color:A.Automation||S,description:"Weekly update on East African tech startups and innovations.",link:"/automations?subject=East African Tech News&query=Summarize the most significant developments in East African tech startups and innovations this week. Include notable funding rounds, new product launches, or policy changes affecting the tech ecosystem.&crontime=0 18 * * 5"},{type:"Paint",color:A.Paint||S,description:"Paint a colorful scene inspired by Maasai traditional clothing and jewelry.",link:""},{type:"Automation",color:A.Automation||S,description:"Weekly summary of EU policy changes and their impact.",link:"/automations?subject=EU Policy Update&query=Summarize the most significant EU policy changes or proposals from this week. Explain their potential impact on European citizens and businesses.&crontime=0 17 * * 5"},{type:"Paint",color:A.Paint||S,description:"Paint a digital landscape of the Northern Lights over the Norwegian fjords.",link:""},{type:"Automation",color:A.Automation||S,description:"Daily East Asian proverb with explanation.",link:"/automations?subject=East Asian Wisdom&query=Provide a proverb from an East Asian language (rotating through Chinese, Japanese, Korean, etc.), its English translation, and a brief explanation of its cultural significance and practical application.&crontime=0 7 * * *"},{type:"Paint",color:A.Paint||S,description:"Create a digital painting in the style of traditional Chinese ink wash landscape.",link:""},{type:"Pop Culture",color:"yellow",description:"Research the latest trends in K-pop and its global influence.",link:""},{type:"Automation",color:A.Automation||S,description:"Weekly summary of technological innovations from East Asian tech giants.",link:"/automations?subject=East Asian Tech Update&query=Summarize the most significant technological innovations or product launches from major East Asian tech companies (e.g., Samsung, Sony, Alibaba, Tencent) this week. Explain their potential impact on global markets.&crontime=0 18 * * 5"},{type:"Paint",color:A.Paint||S,description:"Paint a vibrant scene of a Japanese cherry blossom festival.",link:""},{type:"Automation",color:A.Automation||S,description:"Daily South Asian recipe with cultural significance.",link:"/automations?subject=South Asian Culinary Journey&query=Provide a traditional South Asian recipe (rotating through Indian, Pakistani, Bangladeshi, Sri Lankan, etc. cuisines), including ingredients, brief instructions, and its cultural significance or origin story.&crontime=0 10 * * *"},{type:"Pop Culture",color:A["Pop Culture"]||S,description:"Research the impact of Bollywood on global cinema and fashion.",link:""},{type:"Automation",color:A.Automation||S,description:"Weekly update on South Asian startup ecosystems and innovations.",link:"/automations?subject=South Asian Startup Pulse&query=Summarize the most significant developments in South Asian startup ecosystems this week. Include notable funding rounds, innovative solutions to local challenges, and any policy changes affecting the tech landscape in countries like India, Bangladesh, Pakistan, and Sri Lanka.&crontime=0 18 * * 5"},{type:"Interviewing",color:A.Interviewing||S,description:"Create interview prep questions for a consulting job.",link:""},{type:"Interviewing",color:A.Interviewing||S,description:"What information should I include in a CV for a PhD application?",link:""},{type:"Home",color:A.Home||S,description:"Recommend plants that can grow well indoors.",link:""},{type:"Health",color:A.Health||S,description:"Suggest healthy meal prep ideas for a busy work week.",link:""},{type:"Learning",color:A.Learning||S,description:"List effective time management techniques for students.",link:""},{type:"Learning",color:A.Learning||S,description:"Provide tips for improving public speaking skills.",link:""},{type:"Learning",color:A.Learning||S,description:"Recommend books for learning about personal finance.",link:""},{type:"Home",color:A.Home||S,description:"Suggest ways to reduce plastic waste in daily life.",link:""},{type:"Health",color:A.Health||S,description:"Create a beginner's guide to meditation and mindfulness.",link:""},{type:"Health",color:A.Health||S,description:"Give me some tips for improving my sleep quality.",link:""},{type:"Health",color:A.Health||S,description:"What are weight loss strategies supported by clinical studies?",link:""},{type:"Fun",color:A.Fun||S,description:"List creative date ideas for couples on a budget.",link:""},{type:"Code",color:A.Interviewing||S,description:"Provide tips for writing an effective resume.",link:""},{type:"Code",color:A.Code||S,description:"Explain the concept of recursion with a simple coding example.",link:""},{type:"Code",color:A.Code||S,description:"Provide a coding challenge to reverse a string without using built-in functions.",link:""},{type:"Code",color:A.Code||S,description:"Explain the difference between 'let', 'const', and 'var' in JavaScript.",link:""},{type:"Code",color:A.Code||S,description:"Create a coding exercise to implement a basic sorting algorithm (e.g., bubble sort).",link:""},{type:"Code",color:A.Code||S,description:"Explain object-oriented programming principles with a simple class example.",link:""},{type:"Code",color:A.Code||S,description:"Provide a coding challenge to find the longest palindromic substring in a given string.",link:""},{type:"Code",color:A.Code||S,description:"Explain the concept of asynchronous programming with a JavaScript Promise example.",link:""},{type:"Code",color:A.Code||S,description:"Create a coding exercise to implement a basic data structure (e.g., linked list or stack).",link:""},{type:"Code",color:A.Code||S,description:"Explain the time and space complexity of common algorithms (e.g., binary search).",link:""},{type:"Code",color:A.Code||S,description:"Provide a coding challenge to implement a simple REST API using Node.js and Express.",link:""},{type:"Code",color:A.Code||S,description:"Compare popular web frameworks in Rust and Python",link:""},{type:"Travel",color:A.Travel||S,description:"Craft an off-beat itinerary for a weekend in Lagos, Nigeria.",link:""},{type:"Language",color:A.Language||S,description:"Teach me about declensions in Latin.",link:""},{type:"Learning",color:A.Learning||S,description:"Break down the concept of photosynthesis for a middle school student.",link:""},{type:"Learning",color:A.Learning||S,description:"Use the Socratic method to explore the causes of World War I.",link:""},{type:"Learning",color:A.Learning||S,description:"Explain the water cycle using an analogy suitable for elementary students.",link:""},{type:"Learning",color:A.Learning||S,description:"Guide a high school student through solving a quadratic equation step-by-step.",link:""},{type:"Learning",color:A.Learning||S,description:"Create a series of questions to help a student discover the principles of basic economics.",link:""},{type:"Learning",color:A.Learning||S,description:"Develop a hands-on experiment to demonstrate the concept of density to middle schoolers.",link:""},{type:"Learning",color:A.Learning||S,description:"Use guided discovery to help a student understand the structure of DNA.",link:""},{type:"Learning",color:A.Learning||S,description:"Create a personalized learning plan for a student struggling with grammar concepts.",link:""},{type:"Learning",color:A.Learning||S,description:"Design a series of questions to encourage critical thinking about climate change.",link:""},{type:"Learning",color:A.Learning||S,description:"Develop a step-by-step guide for conducting a basic science experiment on plant growth.",link:""},{type:"Health",color:A.Health||S,description:"Provide a detailed explanation about how to manage type 2 diabetes.",link:""},{type:"Health",color:A.Health||S,description:"Explain the effects a stroke might have on the body.",link:""},{type:"Health",color:A.Health||S,description:"Describe the recommended steps for preventing heart disease.",link:""},{type:"Health",color:A.Health||S,description:"Explain the differences between various types of headaches and their treatments.",link:""},{type:"Health",color:A.Health||S,description:"Provide an overview of the most effective stress management techniques.",link:""},{type:"Health",color:A.Health||S,description:"Explain the importance of vaccination and how vaccines work.",link:""},{type:"Health",color:A.Health||S,description:"Describe the symptoms and treatment options for depression.",link:""},{type:"Health",color:A.Health||S,description:"Explain the process of digestion and common digestive disorders.",link:""},{type:"Health",color:A.Health||S,description:"Provide an overview of the different types of cancer screenings and their importance.",link:""},{type:"Health",color:A.Health||S,description:"Explain the effects of sleep deprivation on physical and mental health.",link:""},{type:"Fun",color:A.Fun||S,description:"Create a list of fun activities for a family game night.",link:""},{type:"Finance",color:A.Finance||S,description:"Explain the concept of compound interest and its importance in long-term savings.",link:""},{type:"Finance",color:A.Finance||S,description:"Provide an overview of different types of retirement accounts (e.g., 401(k), IRA, Roth IRA).",link:""},{type:"Finance",color:A.Finance||S,description:"Describe strategies for creating and sticking to a personal budget.",link:""},{type:"Finance",color:A.Finance||S,description:"Explain the basics of stock market investing for beginners.",link:""},{type:"Finance",color:A.Finance||S,description:"Outline the pros and cons of renting vs. buying a home.",link:""},{type:"Finance",color:A.Finance||S,description:"Describe different methods for paying off debt, such as the snowball and avalanche methods.",link:""},{type:"Finance",color:A.Finance||S,description:"Explain the importance of an emergency fund and how to build one.",link:""},{type:"Finance",color:A.Finance||S,description:"Provide an overview of different types of insurance and their importance in financial planning.",link:""},{type:"Finance",color:A.Finance||S,description:"Explain the concept of diversification in investment portfolios.",link:""},{type:"Finance",color:A.Finance||S,description:"Describe strategies for minimizing tax liability legally.",link:""}];function H(e){var t,n;let i=(0,L.Zc)(e.color),o="".concat(C().card," ").concat(i," md:w-full md:h-fit sm:w-full h-fit md:w-[200px] md:h-[180px] cursor-pointer md:p-2"),r="".concat(C().text," dark:text-white"),s=(0,a.jsx)(x.Zb,{className:o,children:(0,a.jsx)("div",{className:"flex w-full",children:(0,a.jsxs)(x.aY,{className:"m-0 p-2 w-full",children:[(t=e.title,n=e.color.toLowerCase(),"Automation"===t?(0,j.TI)("Robot",n,"w-6","h-6"):"Paint"===t?(0,j.TI)("Palette",n,"w-6","h-6"):"Pop Culture"===t?(0,j.TI)("Confetti",n,"w-6","h-6"):"Travel"===t?(0,j.TI)("Jeep",n,"w-6","h-6"):"Learning"===t?(0,j.TI)("Book",n,"w-6","h-6"):"Health"===t?(0,j.TI)("Asclepius",n,"w-6","h-6"):"Fun"===t?(0,j.TI)("Island",n,"w-6","h-6"):"Home"===t?(0,j.TI)("House",n,"w-6","h-6"):"Language"===t?(0,j.TI)("Translate",n,"w-6","h-6"):"Code"===t?(0,j.TI)("Code",n,"w-6","h-6"):"Food"===t?(0,j.TI)("BowlFood",n,"w-6","h-6"):"Interviewing"===t?(0,j.TI)("Lectern",n,"w-6","h-6"):"Finance"===t?(0,j.TI)("Wallet",n,"w-6","h-6"):(0,j.TI)("Lightbulb",n,"w-6","h-6")),(0,a.jsx)(x.SZ,{className:"".concat(r," sm:line-clamp-2 md:line-clamp-4 pt-1 break-words whitespace-pre-wrap max-w-full"),children:e.body})]})})});return e.link?(0,a.jsx)("a",{href:e.link,className:"no-underline",children:s}):s}var I=n(48861),F=n(58485),_=n(38423),N=n(66820),T=n(79306),M=n(9557),D=n(69591),W=n(16463),B=n(94880),O=n(81970),q=n(19573);function R(e){var t,n;let[i,o]=(0,l.useState)(""),[r,d]=(0,l.useState)([]),[p,u]=(0,l.useState)(!1),[h,g]=(0,l.useState)(""),[m,f]=(0,l.useState)([]),[y,k]=(0,l.useState)(null),b=(0,D.Nr)(y,500),[v,P]=(0,l.useState)(!1),[C,A]=(0,l.useState)("khoj"),[S,I]=(0,l.useState)([]),[F,R]=(0,l.useState)([]),U=(0,l.useRef)(null),[Z,z]=(0,l.useState)(!1),V=(0,W.useRouter)(),J=(0,W.useSearchParams)().get("q");(0,l.useEffect)(()=>{J&&o(decodeURIComponent(J))},[J]),(0,l.useEffect)(()=>{b&&P(!0)},[b]);let G=e.onConversationIdChange,{data:K,error:Y}=(0,c.ZP)("agents",()=>window.fetch("/api/agents").then(e=>e.json()).catch(e=>console.log(e)),{revalidateOnFocus:!1}),Q=e=>{V.push("/agents?agent=".concat(e))};function X(){f((function(e){for(let t=e.length-1;t>0;t--){let n=Math.floor(Math.random()*(t+1));[e[t],e[n]]=[e[n],e[t]]}return e})(E).slice(0,3))}return(0,l.useEffect)(()=>{var t,n;if(e.isLoadingUserConfig)return;let i=new Date,o=i.getDay(),a=i.getHours()>=17||4>i.getHours()?"evening":i.getHours()>=12?"afternoon":"morning",r=(null===(t=e.userConfig)||void 0===t?void 0:t.given_name)?", ".concat(null===(n=e.userConfig)||void 0===n?void 0:n.given_name):"",s=["What would you like to get done".concat(r,"?"),"Hey".concat(r,"! How can I help?"),"Good ".concat(a).concat(r,"! What's on your mind?"),"Ready to breeze through ".concat(["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"][o],"?"),"Let's navigate your ".concat(["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"][o]," workload")];g(s[Math.floor(Math.random()*s.length)])},[e.isLoadingUserConfig,e.userConfig]),(0,l.useEffect)(()=>{e.chatOptionsData&&X()},[e.chatOptionsData]),(0,l.useEffect)(()=>{let e=(K||[]).filter(e=>null!=e);R(e),A(e.length>1?e[0].slug:"khoj"),I(e.map(e=>(0,j.TI)(e.icon,e.color)))},[K,e.isMobileWidth]),(0,l.useEffect)(()=>{(async()=>{if(i&&!p){u(!0);try{let e=await (0,M.A0)(C||"khoj");null==G||G(e),localStorage.setItem("message",i),r.length>0&&localStorage.setItem("images",JSON.stringify(r)),window.location.href="/chat?conversationId=".concat(e)}catch(e){console.error("Error creating new conversation:",e),u(!1)}o(""),d([])}})(),(i||r.length>0)&&u(!0)},[C,i,p,G]),(0,l.useEffect)(()=>{let e=document.querySelector("[data-radix-scroll-area-viewport]"),t=()=>{k(null),P(!1)};return null==e||e.addEventListener("scroll",t),()=>null==e?void 0:e.removeEventListener("scroll",t)},[]),(0,a.jsxs)("div",{className:"".concat(s().homeGreetings," w-full md:w-auto"),children:[Z&&(0,a.jsx)(N.Z,{onOpenChange:z,loginRedirectMessage:"Login to your second brain"}),(0,a.jsxs)("div",{className:"w-full text-center justify-end content-end",children:[(0,a.jsx)("div",{className:"items-center",children:(0,a.jsx)("h1",{className:"text-2xl md:text-3xl text-center w-fit pb-6 px-4 mx-auto",children:h})}),!e.isMobileWidth&&(0,a.jsxs)(B.x,{className:"w-full max-w-[600px] mx-auto",children:[(0,a.jsx)("div",{className:"flex pb-2 gap-2 items-center justify-center",children:F.map((t,n)=>(0,a.jsxs)(q.J2,{open:v&&b===t.slug,onOpenChange:e=>{e||(k(null),P(!1))},children:[(0,a.jsx)(q.xo,{asChild:!0,children:(0,a.jsx)(x.Zb,{className:"".concat(C===t.slug?(0,L.Iu)(t.color):"border-stone-100 dark:border-neutral-700 text-muted-foreground","\n hover:cursor-pointer rounded-lg px-2 py-2"),onDoubleClick:()=>Q(t.slug),onClick:()=>{var e;A(t.slug),null===(e=U.current)||void 0===e||e.focus(),k(null),P(!1)},onMouseEnter:()=>k(t.slug),onMouseLeave:()=>{k(null),P(!1)},children:(0,a.jsxs)(x.ll,{className:"text-center text-md font-medium flex justify-center items-center whitespace-nowrap",children:[S[n]," ",t.name]})})}),(0,a.jsx)(q.yk,{className:"w-80 p-0 border-none bg-transparent shadow-none",onMouseLeave:()=>{k(null),P(!1)},children:(0,a.jsx)(O.EY,{data:t,userProfile:null,isMobileWidth:e.isMobileWidth||!1,showChatButton:!1,editCard:!1,filesOptions:[],selectedChatModelOption:"",agentSlug:"",isSubscribed:(0,T.T8)(e.userConfig),setAgentChangeTriggered:()=>{},modelOptions:[],inputToolOptions:{},outputModeOptions:{}})})]},"".concat(n,"-").concat(t.slug)))}),(0,a.jsx)(B.B,{orientation:"horizontal"})]})]}),(0,a.jsxs)("div",{className:"mx-auto ".concat(e.isMobileWidth?"w-full":"w-fit max-w-screen-md"),children:[!e.isMobileWidth&&(0,a.jsx)("div",{className:"w-full ".concat(s().inputBox," shadow-lg bg-background align-middle items-center justify-center px-3 py-1 dark:bg-neutral-700 border-stone-100 dark:border-none dark:shadow-none rounded-2xl"),children:(0,a.jsx)(_.a,{isLoggedIn:e.isLoggedIn,sendMessage:e=>o(e),sendImage:e=>d(t=>[...t,e]),sendDisabled:p,chatOptionsData:e.chatOptionsData,conversationId:null,isMobileWidth:e.isMobileWidth,setUploadedFiles:e.setUploadedFiles,agentColor:null===(t=F.find(e=>e.slug===C))||void 0===t?void 0:t.color,ref:U})}),(0,a.jsx)("div",{className:"".concat(s().suggestions," w-full ").concat(e.isMobileWidth?"grid":"flex flex-row"," justify-center items-center"),children:m.map((t,n)=>(0,a.jsx)("div",{onClick:n=>{e.isLoggedIn?function(e,t,n){if(!e){let e="";n=n.charAt(0).toLowerCase()+n.slice(1),e="Online Search"===t?"/online "+n:"Paint"===t?"/image "+n:n;let i=document.getElementById("message");i&&(i.value=e,o(e))}}(t.link,t.type,t.description):(n.preventDefault(),n.stopPropagation(),z(!0))},children:(0,a.jsx)(H,{title:t.type,body:t.description,link:t.link,color:t.color},t.type+Math.random())},"".concat(t.type," ").concat(t.description)))}),(0,a.jsx)("div",{className:"flex items-center justify-center margin-auto",children:(0,a.jsxs)("button",{onClick:function(){X()},className:"m-2 p-1.5 rounded-lg dark:hover:bg-[var(--background-color)] hover:bg-stone-100 border border-stone-100 text-sm text-stone-500 dark:text-stone-300 dark:border-neutral-700",children:["More Ideas ",(0,a.jsx)(w,{className:"h-4 w-4 inline"})]})})]}),e.isMobileWidth&&(0,a.jsx)(a.Fragment,{children:(0,a.jsxs)("div",{className:"".concat(s().inputBox," pt-1 shadow-[0_-20px_25px_-5px_rgba(0,0,0,0.1)] dark:bg-neutral-700 bg-background align-middle items-center justify-center pb-3 mx-1 rounded-t-2xl rounded-b-none"),children:[(0,a.jsxs)(B.x,{className:"w-full max-w-[85vw]",children:[(0,a.jsx)("div",{className:"flex gap-2 items-center justify-left pt-1 pb-2 px-12",children:S.map((e,t)=>(0,a.jsx)(x.Zb,{className:"".concat(C===F[t].slug?(0,L.Iu)(F[t].color):"border-muted text-muted-foreground"," hover:cursor-pointer"),children:(0,a.jsxs)(x.ll,{className:"text-center text-xs font-medium flex justify-center items-center whitespace-nowrap px-1.5 py-1",onDoubleClick:()=>Q(F[t].slug),onClick:()=>{var e;A(F[t].slug),null===(e=U.current)||void 0===e||e.focus()},children:[e," ",F[t].name]})},"".concat(t,"-").concat(F[t].slug)))}),(0,a.jsx)(B.B,{orientation:"horizontal"})]}),(0,a.jsx)(_.a,{isLoggedIn:e.isLoggedIn,sendMessage:e=>o(e),sendImage:e=>d(t=>[...t,e]),sendDisabled:p,chatOptionsData:e.chatOptionsData,conversationId:null,isMobileWidth:e.isMobileWidth,setUploadedFiles:e.setUploadedFiles,agentColor:null===(n=F.find(e=>e.slug===C))||void 0===n?void 0:n.color,ref:U})]})})]})}function U(){let[e,t]=(0,l.useState)(null),[n,i]=(0,l.useState)(!0),[o,r]=(0,l.useState)(null),[c,d]=(0,l.useState)(null),p=(0,D.IC)(),{userConfig:u,isLoadingUserConfig:h}=(0,T.h2)(!0),[g,m]=(0,l.useState)(null),f=(0,T.GW)();return((0,l.useEffect)(()=>{m(u)},[u]),(0,l.useEffect)(()=>{c&&localStorage.setItem("uploadedFiles",JSON.stringify(c))},[c]),(0,l.useEffect)(()=>{fetch("/api/chat/options").then(e=>e.json()).then(e=>{i(!1),e&&t(e)}).catch(e=>{console.error(e)})},[]),n)?(0,a.jsx)(F.Z,{}):(0,a.jsxs)("div",{className:"".concat(s().main," ").concat(s().chatLayout),children:[(0,a.jsx)("title",{children:"Khoj AI - Your Second Brain"}),(0,a.jsx)("div",{className:"".concat(s().sidePanel),children:(0,a.jsx)(I.ZP,{conversationId:o,uploadedFiles:[],isMobileWidth:p})}),(0,a.jsx)("div",{className:"".concat(s().chatBox),children:(0,a.jsx)("div",{className:"".concat(s().chatBoxBody),children:(0,a.jsx)(R,{isLoggedIn:null!==f,chatOptionsData:e,setUploadedFiles:d,isMobileWidth:p,onConversationIdChange:e=>{r(e)},userConfig:g,isLoadingUserConfig:h})})})]})}},16463:function(e,t,n){"use strict";var i=n(71169);n.o(i,"useRouter")&&n.d(t,{useRouter:function(){return i.useRouter}}),n.o(i,"useSearchParams")&&n.d(t,{useSearchParams:function(){return i.useSearchParams}})},58877:function(){},31806:function(e){e.exports={card:"suggestions_card__fbiZo",title:"suggestions_title__vNozc",text:"suggestions_text__J_IfY"}},68518:function(e){e.exports={main:"page_main__nw1Wk",suggestions:"page_suggestions__Y8EqU",inputBox:"page_inputBox__LrcZ4",chatBodyFull:"page_chatBodyFull__Qu2T2",chatBody:"page_chatBody__IirQQ",chatLayout:"page_chatLayout__bJUjP",chatBox:"page_chatBox__gsR6V",titleBar:"page_titleBar__3btUI",chatBoxBody:"page_chatBoxBody__xORKr",homeGreetings:"page_homeGreetings__VjQhh",sidePanel:"page_sidePanel__mxpxa"}}},function(e){e.O(0,[404,4836,9448,9001,3062,3124,3803,5512,2261,4602,1603,9417,8423,1970,2971,7023,1744],function(){return e(e.s=1507)}),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3111],{91955:function(e,t,s){Promise.resolve().then(s.bind(s,5506))},5506:function(e,t,s){"use strict";s.r(t),s.d(t,{default:function(){return p}});var a=s(57437),o=s(11930),n=s.n(o),i=s(2265),l=s(48861),c=s(55538),d=s(58485);s(7395);var r=s(69591),h=s(79306),u=s(38423);function g(e){let[t,s]=(0,i.useState)(""),[o,l]=(0,i.useState)([]),[d,r]=(0,i.useState)(!1),[h,g]=(0,i.useState)(null),p=(0,i.useRef)(null),m=e.setQueryToProcess,f=e.streamedMessages,_=e.isMobileWidth?"w-full":"w-4/6";return((0,i.useEffect)(()=>{if(o.length>0){let t=o.map(e=>encodeURIComponent(e));e.setImages(t)}},[o,e.setImages]),(0,i.useEffect)(()=>{t&&(r(!0),m(t))},[t,m]),(0,i.useEffect)(()=>{f&&f.length>0&&f[f.length-1].completed?r(!1):s("")},[f]),e.publicConversationSlug||e.conversationId)?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("div",{className:n().chatBodyFull,children:(0,a.jsx)(c.Z,{publicConversationSlug:e.publicConversationSlug,conversationId:e.conversationId||"",setAgent:g,setTitle:e.setTitle,pendingMessage:d?t:"",incomingMessages:e.streamedMessages,customClassName:_})}),(0,a.jsx)("div",{className:"".concat(n().inputBox," p-1 md:px-2 shadow-md bg-background align-middle items-center justify-center dark:bg-neutral-700 dark:border-0 dark:shadow-sm rounded-t-2xl rounded-b-none md:rounded-xl h-fit ").concat(_," mr-auto ml-auto"),children:(0,a.jsx)(u.a,{isLoggedIn:e.isLoggedIn,sendMessage:e=>s(e),sendImage:e=>l(t=>[...t,e]),sendDisabled:d,chatOptionsData:e.chatOptionsData,conversationId:e.conversationId,agentColor:null==h?void 0:h.color,isMobileWidth:e.isMobileWidth,setUploadedFiles:e.setUploadedFiles,ref:p})})]}):(0,a.jsx)("div",{className:n().suggestions,children:"Whoops, nothing to see here!"})}function p(){let[e,t]=(0,i.useState)(null),[s,o]=(0,i.useState)(!0),[c,u]=(0,i.useState)("Khoj AI - Chat"),[p,m]=(0,i.useState)(void 0),[f,_]=(0,i.useState)([]),[x,v]=(0,i.useState)(""),[j,S]=(0,i.useState)(null),[C,I]=(0,i.useState)(void 0),[b,y]=(0,i.useState)([]),B=(0,h.GW)(),N=(0,r.IC)();return((0,i.useEffect)(()=>{fetch("/api/chat/options").then(e=>e.json()).then(e=>{o(!1),e&&t(e)}).catch(e=>{console.error(e)}),(0,r.EK)(),I(window.location.pathname.split("/").pop()||"")},[]),(0,i.useEffect)(()=>{j&&localStorage.setItem("uploadedFiles",JSON.stringify(j))},[j]),(0,i.useEffect)(()=>{if(x&&!p){fetch("/api/chat/share/fork?public_conversation_slug=".concat(C),{method:"POST",headers:{"Content-Type":"application/json"}}).then(e=>e.json()).then(e=>{m(e.conversation_id),localStorage.setItem("message",x),b.length>0&&localStorage.setItem("images",JSON.stringify(b)),window.location.href="/chat?conversationId=".concat(e.conversation_id)}).catch(e=>{console.error(e)});return}},[x,p,C]),s)?(0,a.jsx)(d.Z,{}):C?(0,a.jsxs)("div",{className:"".concat(n().main," ").concat(n().chatLayout),children:[(0,a.jsx)("title",{children:c}),(0,a.jsx)("div",{className:n().sidePanel,children:(0,a.jsx)(l.ZP,{conversationId:null!=p?p:null,uploadedFiles:[],isMobileWidth:N})}),(0,a.jsx)("div",{className:n().chatBox,children:(0,a.jsxs)("div",{className:n().chatBoxBody,children:[!N&&c&&(0,a.jsx)("div",{className:"".concat(n().chatTitleWrapper," text-nowrap text-ellipsis overflow-hidden max-w-screen-md grid items-top font-bold mr-8 pt-6 col-auto h-fit"),children:c&&(0,a.jsx)("h2",{className:"text-lg text-ellipsis whitespace-nowrap overflow-x-hidden",children:c})}),(0,a.jsx)(i.Suspense,{fallback:(0,a.jsx)(d.Z,{}),children:(0,a.jsx)(g,{conversationId:p,streamedMessages:f,setQueryToProcess:v,isLoggedIn:null!==B,publicConversationSlug:C,chatOptionsData:e,setTitle:u,setUploadedFiles:S,isMobileWidth:N,setImages:y})})]})})]}):(0,a.jsx)("div",{className:n().suggestions,children:"Whoops, nothing to see here!"})}},11930:function(e){e.exports={main:"sharedChat_main__7Nayy",suggestions:"sharedChat_suggestions__V8kr_",inputBox:"sharedChat_inputBox__wRW5A",chatBodyFull:"sharedChat_chatBodyFull__O1MOv",chatBody:"sharedChat_chatBody__OnHDL",chatLayout:"sharedChat_chatLayout__gutlc",chatBox:"sharedChat_chatBox__PmAPg",titleBar:"sharedChat_titleBar__vOHp_",chatBoxBody:"sharedChat_chatBoxBody__ef2Nl",agentIndicator:"sharedChat_agentIndicator__ORCl4"}}},function(e){e.O(0,[7849,9448,4836,3954,9001,3062,3124,3803,2261,5961,1603,9417,8423,5538,2971,7023,1744],function(){return e(e.s=91955)}),_N_E=e.O()}]);