khoj 1.42.8.dev4__py3-none-any.whl → 1.42.9.dev16__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 (58) hide show
  1. khoj/database/adapters/__init__.py +20 -0
  2. khoj/interface/compiled/404/index.html +2 -2
  3. khoj/interface/compiled/_next/static/chunks/app/agents/layout-2e626327abfbe612.js +1 -0
  4. khoj/interface/compiled/_next/static/chunks/app/chat/layout-d6acbba22ccac0ff.js +1 -0
  5. khoj/interface/compiled/_next/static/chunks/app/chat/{page-802dedbf1d9d5e1e.js → page-9967631715682f3c.js} +1 -1
  6. khoj/interface/compiled/_next/static/chunks/app/{page-85b9b416898738f7.js → page-6e91caf9bc0c8aba.js} +1 -1
  7. khoj/interface/compiled/_next/static/chunks/app/search/layout-94c76c3a41db42a2.js +1 -0
  8. khoj/interface/compiled/_next/static/chunks/app/share/chat/layout-95998f0bdc22bb13.js +1 -0
  9. khoj/interface/compiled/_next/static/chunks/app/share/chat/{page-c062269e6906ef22.js → page-8c8c175f7f212b03.js} +1 -1
  10. khoj/interface/compiled/_next/static/chunks/{webpack-88659b10d39e393f.js → webpack-4bf3eab7681a1206.js} +1 -1
  11. khoj/interface/compiled/_next/static/css/1e9b757ee2a2b34b.css +1 -0
  12. khoj/interface/compiled/_next/static/css/440ae0f0f650dc35.css +1 -0
  13. khoj/interface/compiled/_next/static/css/bd2071cad2ecf293.css +1 -0
  14. khoj/interface/compiled/agents/index.html +2 -2
  15. khoj/interface/compiled/agents/index.txt +1 -1
  16. khoj/interface/compiled/automations/index.html +2 -2
  17. khoj/interface/compiled/automations/index.txt +1 -1
  18. khoj/interface/compiled/chat/index.html +2 -2
  19. khoj/interface/compiled/chat/index.txt +2 -2
  20. khoj/interface/compiled/index.html +2 -2
  21. khoj/interface/compiled/index.txt +2 -2
  22. khoj/interface/compiled/search/index.html +2 -2
  23. khoj/interface/compiled/search/index.txt +1 -1
  24. khoj/interface/compiled/settings/index.html +2 -2
  25. khoj/interface/compiled/settings/index.txt +1 -1
  26. khoj/interface/compiled/share/chat/index.html +2 -2
  27. khoj/interface/compiled/share/chat/index.txt +2 -2
  28. khoj/processor/conversation/anthropic/anthropic_chat.py +11 -2
  29. khoj/processor/conversation/anthropic/utils.py +90 -103
  30. khoj/processor/conversation/google/gemini_chat.py +4 -1
  31. khoj/processor/conversation/google/utils.py +84 -19
  32. khoj/processor/conversation/offline/chat_model.py +3 -3
  33. khoj/processor/conversation/openai/gpt.py +13 -38
  34. khoj/processor/conversation/openai/utils.py +113 -12
  35. khoj/processor/conversation/prompts.py +17 -35
  36. khoj/processor/conversation/utils.py +128 -57
  37. khoj/processor/operator/grounding_agent.py +1 -1
  38. khoj/processor/operator/operator_agent_binary.py +4 -3
  39. khoj/processor/tools/online_search.py +18 -0
  40. khoj/processor/tools/run_code.py +1 -1
  41. khoj/routers/api_chat.py +1 -1
  42. khoj/routers/helpers.py +293 -26
  43. khoj/routers/research.py +169 -155
  44. khoj/utils/helpers.py +284 -8
  45. {khoj-1.42.8.dev4.dist-info → khoj-1.42.9.dev16.dist-info}/METADATA +1 -1
  46. {khoj-1.42.8.dev4.dist-info → khoj-1.42.9.dev16.dist-info}/RECORD +51 -51
  47. khoj/interface/compiled/_next/static/chunks/app/agents/layout-e00fb81dca656a10.js +0 -1
  48. khoj/interface/compiled/_next/static/chunks/app/chat/layout-d5ae861e1ade9d08.js +0 -1
  49. khoj/interface/compiled/_next/static/chunks/app/search/layout-f5881c7ae3ba0795.js +0 -1
  50. khoj/interface/compiled/_next/static/chunks/app/share/chat/layout-b3f7ae1ef8871d30.js +0 -1
  51. khoj/interface/compiled/_next/static/css/02f60900b0d89ec7.css +0 -1
  52. khoj/interface/compiled/_next/static/css/76c658ee459140a9.css +0 -1
  53. khoj/interface/compiled/_next/static/css/fbacbdfd5e7f3f0e.css +0 -1
  54. /khoj/interface/compiled/_next/static/{8Wx2kDD5oC-v77JDu6vKI → w19FJJa9p2AFJB6DEektd}/_buildManifest.js +0 -0
  55. /khoj/interface/compiled/_next/static/{8Wx2kDD5oC-v77JDu6vKI → w19FJJa9p2AFJB6DEektd}/_ssgManifest.js +0 -0
  56. {khoj-1.42.8.dev4.dist-info → khoj-1.42.9.dev16.dist-info}/WHEEL +0 -0
  57. {khoj-1.42.8.dev4.dist-info → khoj-1.42.9.dev16.dist-info}/entry_points.txt +0 -0
  58. {khoj-1.42.8.dev4.dist-info → khoj-1.42.9.dev16.dist-info}/licenses/LICENSE +0 -0
khoj/utils/helpers.py CHANGED
@@ -12,6 +12,7 @@ import random
12
12
  import urllib.parse
13
13
  import uuid
14
14
  from collections import OrderedDict
15
+ from copy import deepcopy
15
16
  from enum import Enum
16
17
  from functools import lru_cache
17
18
  from importlib import import_module
@@ -19,8 +20,9 @@ from importlib.metadata import version
19
20
  from itertools import islice
20
21
  from os import path
21
22
  from pathlib import Path
23
+ from textwrap import dedent
22
24
  from time import perf_counter
23
- from typing import TYPE_CHECKING, Any, NamedTuple, Optional, Tuple, Union
25
+ from typing import TYPE_CHECKING, Any, NamedTuple, Optional, Tuple, Type, Union
24
26
  from urllib.parse import ParseResult, urlparse
25
27
 
26
28
  import anthropic
@@ -36,6 +38,7 @@ from google.auth.credentials import Credentials
36
38
  from google.oauth2 import service_account
37
39
  from magika import Magika
38
40
  from PIL import Image
41
+ from pydantic import BaseModel
39
42
  from pytz import country_names, country_timezones
40
43
 
41
44
  from khoj.utils import constants
@@ -334,6 +337,85 @@ def is_e2b_code_sandbox_enabled():
334
337
  return not is_none_or_empty(os.getenv("E2B_API_KEY"))
335
338
 
336
339
 
340
+ class ToolDefinition:
341
+ def __init__(self, name: str, description: str, schema: dict):
342
+ self.name = name
343
+ self.description = description
344
+ self.schema = schema
345
+
346
+
347
+ def create_tool_definition(
348
+ schema: Type[BaseModel],
349
+ name: str = None,
350
+ description: Optional[str] = None,
351
+ ) -> ToolDefinition:
352
+ """
353
+ Converts a response schema BaseModel class into a normalized tool definition.
354
+
355
+ A standard AI provider agnostic tool format to specify tools the model can use.
356
+ Common logic used across models is kept here. AI provider specific adaptations
357
+ should be handled in provider code.
358
+
359
+ Args:
360
+ response_schema: The Pydantic BaseModel class to convert.
361
+ This class defines the response schema for the tool.
362
+ tool_name: The name for the AI model tool (e.g., "get_weather", "plan_next_step").
363
+ tool_description: Optional description for the AI model tool.
364
+ If None, it attempts to use the Pydantic model's docstring.
365
+ If that's also missing, a fallback description is generated.
366
+
367
+ Returns:
368
+ A normalized tool definition for AI model APIs.
369
+ """
370
+ raw_schema_dict = schema.model_json_schema()
371
+
372
+ name = name or schema.__name__.lower()
373
+ description = description
374
+ if description is None:
375
+ docstring = schema.__doc__
376
+ if docstring:
377
+ description = dedent(docstring).strip()
378
+ else:
379
+ # Fallback description if no explicit one or docstring is provided
380
+ description = f"Tool named '{name}' accepts specified parameters."
381
+
382
+ # Process properties to inline enums and remove $defs dependency
383
+ processed_properties = {}
384
+ original_properties = raw_schema_dict.get("properties", {})
385
+ defs = raw_schema_dict.get("$defs", {})
386
+
387
+ for prop_name, prop_schema in original_properties.items():
388
+ current_prop_schema = deepcopy(prop_schema) # Work on a copy
389
+ # Check for enums defined directly in the property for simpler direct enum definitions.
390
+ if "$ref" in current_prop_schema:
391
+ ref_path = current_prop_schema["$ref"]
392
+ if ref_path.startswith("#/$defs/"):
393
+ def_name = ref_path.split("/")[-1]
394
+ if def_name in defs and "enum" in defs[def_name]:
395
+ enum_def = defs[def_name]
396
+ current_prop_schema["enum"] = enum_def["enum"]
397
+ current_prop_schema["type"] = enum_def.get("type", "string")
398
+ if "description" not in current_prop_schema and "description" in enum_def:
399
+ current_prop_schema["description"] = enum_def["description"]
400
+ del current_prop_schema["$ref"] # Remove the $ref as it's been inlined
401
+
402
+ processed_properties[prop_name] = current_prop_schema
403
+
404
+ # Generate the compiled schema dictionary for the tool definition.
405
+ compiled_schema = {
406
+ "type": "object",
407
+ "properties": processed_properties,
408
+ # Generate content in the order in which the schema properties were defined
409
+ "property_ordering": list(schema.model_fields.keys()),
410
+ }
411
+
412
+ # Include 'required' fields if specified in the Pydantic model
413
+ if "required" in raw_schema_dict and raw_schema_dict["required"]:
414
+ compiled_schema["required"] = raw_schema_dict["required"]
415
+
416
+ return ToolDefinition(name=name, description=description, schema=compiled_schema)
417
+
418
+
337
419
  class ConversationCommand(str, Enum):
338
420
  Default = "default"
339
421
  General = "general"
@@ -347,6 +429,14 @@ class ConversationCommand(str, Enum):
347
429
  Diagram = "diagram"
348
430
  Research = "research"
349
431
  Operator = "operator"
432
+ ViewFile = "view_file"
433
+ ListFiles = "list_files"
434
+ RegexSearchFiles = "regex_search_files"
435
+ SemanticSearchFiles = "semantic_search_files"
436
+ SearchWeb = "search_web"
437
+ ReadWebpage = "read_webpage"
438
+ RunCode = "run_code"
439
+ OperateComputer = "operate_computer"
350
440
 
351
441
 
352
442
  command_descriptions = {
@@ -360,6 +450,9 @@ command_descriptions = {
360
450
  ConversationCommand.Diagram: "Draw a flowchart, diagram, or any other visual representation best expressed with primitives like lines, rectangles, and text.",
361
451
  ConversationCommand.Research: "Do deep research on a topic. This will take longer than usual, but give a more detailed, comprehensive answer.",
362
452
  ConversationCommand.Operator: "Operate and perform tasks using a computer.",
453
+ ConversationCommand.ViewFile: "View the contents of a file with optional line range specification.",
454
+ ConversationCommand.ListFiles: "List files under a given path with optional glob pattern.",
455
+ ConversationCommand.RegexSearchFiles: "Search for lines in files matching regex pattern with an optional path prefix.",
363
456
  }
364
457
 
365
458
  command_descriptions_for_agent = {
@@ -385,13 +478,186 @@ tool_descriptions_for_llm = {
385
478
  ConversationCommand.Operator: "To use when you need to operate a computer to complete the task.",
386
479
  }
387
480
 
388
- tool_description_for_research_llm = {
389
- ConversationCommand.Notes: "To search the user's personal knowledge base. Especially helpful if the question expects context from the user's notes or documents. Max {max_search_queries} search queries allowed per iteration.",
390
- ConversationCommand.Online: "To search the internet for information. Useful to get a quick, broad overview from the internet. Provide all relevant context to ensure new searches, not in previous iterations, are performed. Max {max_search_queries} search queries allowed per iteration.",
391
- ConversationCommand.Webpage: "To extract information from webpages. Useful for more detailed research from the internet. Usually used when you know the webpage links to refer to. Share upto {max_webpages_to_read} webpage links and what information to extract from them in your query.",
392
- ConversationCommand.Code: e2b_tool_description if is_e2b_code_sandbox_enabled() else terrarium_tool_description,
393
- ConversationCommand.Text: "To respond to the user once you've completed your research and have the required information.",
394
- ConversationCommand.Operator: "To operate a computer to complete the task.",
481
+ tools_for_research_llm = {
482
+ ConversationCommand.SearchWeb: ToolDefinition(
483
+ name="search_web",
484
+ description="To search the internet for information. Useful to get a quick, broad overview from the internet. Provide all relevant context to ensure new searches, not in previous iterations, are performed. Max {max_search_queries} search queries allowed per iteration.",
485
+ schema={
486
+ "type": "object",
487
+ "properties": {
488
+ "query": {
489
+ "type": "string",
490
+ "description": "The query to search on the internet.",
491
+ },
492
+ },
493
+ "required": ["query"],
494
+ },
495
+ ),
496
+ ConversationCommand.ReadWebpage: ToolDefinition(
497
+ name="read_webpage",
498
+ description="To extract information from webpages. Useful for more detailed research from the internet. Usually used when you know the webpage links to refer to. Share upto {max_webpages_to_read} webpage links and what information to extract from them in your query.",
499
+ schema={
500
+ "type": "object",
501
+ "properties": {
502
+ "urls": {
503
+ "type": "array",
504
+ "items": {
505
+ "type": "string",
506
+ },
507
+ "description": "The webpage URLs to extract information from.",
508
+ },
509
+ "query": {
510
+ "type": "string",
511
+ "description": "The query to extract information from the webpages.",
512
+ },
513
+ },
514
+ "required": ["urls", "query"],
515
+ },
516
+ ),
517
+ ConversationCommand.RunCode: ToolDefinition(
518
+ name="run_code",
519
+ description=e2b_tool_description if is_e2b_code_sandbox_enabled() else terrarium_tool_description,
520
+ schema={
521
+ "type": "object",
522
+ "properties": {
523
+ "query": {
524
+ "type": "string",
525
+ "description": "Detailed query and all input data required to generate, execute code in the sandbox.",
526
+ },
527
+ },
528
+ "required": ["query"],
529
+ },
530
+ ),
531
+ ConversationCommand.OperateComputer: ToolDefinition(
532
+ name="operate_computer",
533
+ description="To operate a computer to complete the task.",
534
+ schema={
535
+ "type": "object",
536
+ "properties": {
537
+ "query": {
538
+ "type": "string",
539
+ "description": "The task to perform on the computer.",
540
+ },
541
+ },
542
+ "required": ["query"],
543
+ },
544
+ ),
545
+ ConversationCommand.ViewFile: ToolDefinition(
546
+ name="view_file",
547
+ description=dedent(
548
+ """
549
+ To view the contents of specific note or document in the user's personal knowledge base.
550
+ Especially helpful if the question expects context from the user's notes or documents.
551
+ It can be used after finding the document path with the document search tool.
552
+ Optionally specify a line range to view only specific sections of large files.
553
+ """
554
+ ).strip(),
555
+ schema={
556
+ "type": "object",
557
+ "properties": {
558
+ "path": {
559
+ "type": "string",
560
+ "description": "The file path to view (can be absolute or relative).",
561
+ },
562
+ "start_line": {
563
+ "type": "integer",
564
+ "description": "Optional starting line number for viewing a specific range (1-indexed).",
565
+ },
566
+ "end_line": {
567
+ "type": "integer",
568
+ "description": "Optional ending line number for viewing a specific range (1-indexed).",
569
+ },
570
+ },
571
+ "required": ["path"],
572
+ },
573
+ ),
574
+ ConversationCommand.ListFiles: ToolDefinition(
575
+ name="list_files",
576
+ description=dedent(
577
+ """
578
+ To list files in the user's knowledge base.
579
+
580
+ Use the path parameter to only show files under the specified path.
581
+ """
582
+ ).strip(),
583
+ schema={
584
+ "type": "object",
585
+ "properties": {
586
+ "path": {
587
+ "type": "string",
588
+ "description": "The directory path to list files from.",
589
+ },
590
+ "pattern": {
591
+ "type": "string",
592
+ "description": "Optional glob pattern to filter files (e.g., '*.md').",
593
+ },
594
+ },
595
+ },
596
+ ),
597
+ ConversationCommand.SemanticSearchFiles: ToolDefinition(
598
+ name="semantic_search_files",
599
+ description=dedent(
600
+ """
601
+ To have the tool AI semantic search through the user's knowledge base.
602
+ Helpful to answer questions for which finding some relevant notes or documents can complete the search. Example: "When was Tom born?"
603
+ This tool AI cannot find all relevant notes or documents, only a subset of them.
604
+ It is a good starting point to find keywords, discover similar topics or related concepts and some relevant notes or documents.
605
+ The tool AI can perform a maximum of {max_search_queries} semantic search queries per iteration.
606
+ """
607
+ ).strip(),
608
+ schema={
609
+ "type": "object",
610
+ "properties": {
611
+ "q": {
612
+ "type": "string",
613
+ "description": "Your natural language query for the tool to search in the user's knowledge base.",
614
+ },
615
+ },
616
+ "required": ["q"],
617
+ },
618
+ ),
619
+ ConversationCommand.RegexSearchFiles: ToolDefinition(
620
+ name="regex_search_files",
621
+ description=dedent(
622
+ """
623
+ To search through the user's knowledge base using regex patterns. Returns all lines matching the pattern.
624
+ Helpful to answer questions for which all relevant notes or documents are needed to complete the search. Example: "Notes that mention Tom".
625
+ You need to know all the correct keywords or regex patterns for this tool to be useful.
626
+
627
+ REMEMBER:
628
+ - The regex pattern will ONLY match content on a single line. Multi-line matches are NOT supported (even if you use \\n).
629
+
630
+ An optional path prefix can restrict search to specific files/directories.
631
+ Use lines_before, lines_after to show context around matches.
632
+ """
633
+ ).strip(),
634
+ schema={
635
+ "type": "object",
636
+ "properties": {
637
+ "regex_pattern": {
638
+ "type": "string",
639
+ "description": "The regex pattern to search for content in the user's files.",
640
+ },
641
+ "path_prefix": {
642
+ "type": "string",
643
+ "description": "Optional path prefix to limit the search to files under a specified path.",
644
+ },
645
+ "lines_before": {
646
+ "type": "integer",
647
+ "description": "Optional number of lines to show before each line match for context.",
648
+ "minimum": 0,
649
+ "maximum": 20,
650
+ },
651
+ "lines_after": {
652
+ "type": "integer",
653
+ "description": "Optional number of lines to show after each line match for context.",
654
+ "minimum": 0,
655
+ "maximum": 20,
656
+ },
657
+ },
658
+ "required": ["regex_pattern"],
659
+ },
660
+ ),
395
661
  }
396
662
 
397
663
  mode_descriptions_for_llm = {
@@ -850,3 +1116,13 @@ def clean_object_for_db(data):
850
1116
  return [clean_object_for_db(item) for item in data]
851
1117
  else:
852
1118
  return data
1119
+
1120
+
1121
+ def dict_to_tuple(d):
1122
+ # Recursively convert dicts to sorted tuples for hashability
1123
+ if isinstance(d, dict):
1124
+ return tuple(sorted((k, dict_to_tuple(v)) for k, v in d.items()))
1125
+ elif isinstance(d, list):
1126
+ return tuple(dict_to_tuple(i) for i in d)
1127
+ else:
1128
+ return d
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: khoj
3
- Version: 1.42.8.dev4
3
+ Version: 1.42.9.dev16
4
4
  Summary: Your Second Brain
5
5
  Project-URL: Homepage, https://khoj.dev
6
6
  Project-URL: Documentation, https://docs.khoj.dev
@@ -11,7 +11,7 @@ khoj/database/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
11
  khoj/database/admin.py,sha256=CfIAnwxV_HfbnhyjVqk9wtrz8hHnStFu-7ap82x6lYU,13256
12
12
  khoj/database/apps.py,sha256=pM4tkX5Odw4YW_hLLKK8Nd5kqGddf1en0oMCea44RZw,153
13
13
  khoj/database/tests.py,sha256=mrbGGRNg5jwbTJtWWa7zSKdDyeB4vmgZCRc2nk6VY-g,60
14
- khoj/database/adapters/__init__.py,sha256=-Gc69dY8D2XNzEWm3subPl093sbJKv2QMRAlsBURT-c,82117
14
+ khoj/database/adapters/__init__.py,sha256=XeI7QD33KAoZ165b4jpepKxhEG6QCaZ4_UEH52zJdX4,83025
15
15
  khoj/database/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
16
  khoj/database/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
17
  khoj/database/management/commands/change_default_model.py,sha256=6QXJttG58gpU7vZApQEeEPVNAuhjU2xa6_BwJsfz320,4877
@@ -131,17 +131,15 @@ khoj/interface/compiled/chat.svg,sha256=l2JoYRRgk201adTTdvJ-buKUrc0WGfsudix5xEvt
131
131
  khoj/interface/compiled/close.svg,sha256=hQ2iFLkNzHk0_iyTrSbwnWAeXYlgA-c2Eof2Iqh76n4,417
132
132
  khoj/interface/compiled/copy-button-success.svg,sha256=byqWAYD3Pn9IOXRjOKudJ-TJbP2UESbQGvtLWazNGjY,829
133
133
  khoj/interface/compiled/copy-button.svg,sha256=05bKM2eRxksfBlAPT7yMaoNJEk85bZCxQg67EVrPeHo,669
134
- khoj/interface/compiled/index.html,sha256=CLvttP5JEw7s2RZF_JTzObZrffr-IIktRxMCJUXiztE,53350
135
- khoj/interface/compiled/index.txt,sha256=yKs5exW1dsrgCgycR2hop3QFJYT12hyoBBW1EgRE7IU,7747
134
+ khoj/interface/compiled/index.html,sha256=tGEcjBVELDDlJzzBbNAMknCqZQaEUXXqqJG42b5uPLg,53350
135
+ khoj/interface/compiled/index.txt,sha256=K6ueCFGWnVvD1EbnueU2yvzG0Od8zhhv0lyiHbryB04,7747
136
136
  khoj/interface/compiled/khoj.webmanifest,sha256=9wOK2BMS6xH5NKd2eaUgTLg9WepIxB2K2U33KU89LD8,2543
137
137
  khoj/interface/compiled/logo.svg,sha256=_QCKVYM4WT2Qhcf7aVFImjq_s5CwjynGXYAOgI7yf8w,8059
138
138
  khoj/interface/compiled/send.svg,sha256=VdavOWkVddcwcGcld6pdfmwfz7S91M-9O28cfeiKJkM,635
139
139
  khoj/interface/compiled/share.svg,sha256=91lwo75PvMDrgocuZQab6EQ62CxRbubh9Bhw7CWMKbg,1221
140
140
  khoj/interface/compiled/thumbs-down.svg,sha256=JGNl-DwoRmH2XFMPWwFFklmoYtKxaQbkLE3nuYKe8ZY,1019
141
141
  khoj/interface/compiled/thumbs-up.svg,sha256=yS1wxTRtiztkN-6nZciLoYQUB_KTYNPV8xFRwH2TQFw,1036
142
- khoj/interface/compiled/404/index.html,sha256=Yc53CQ4BAwpsE63C3ZNK0Eq9MA84fRwyZQaPXMTU7js,17097
143
- khoj/interface/compiled/_next/static/8Wx2kDD5oC-v77JDu6vKI/_buildManifest.js,sha256=f2_nYnw25hHWQJ-39Lf5OH1u6kgdbOInyfplqgjvAV4,224
144
- khoj/interface/compiled/_next/static/8Wx2kDD5oC-v77JDu6vKI/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
142
+ khoj/interface/compiled/404/index.html,sha256=8bxDVePcQsamPOt3j9swr7VqTXRBoweL0iBq3KXFjLk,17097
145
143
  khoj/interface/compiled/_next/static/chunks/1191.b547ec13349b4aed.js,sha256=3qtdOft2SSaGT0qhyPunEraJEZUxIqDV4q3ULnFantg,10913
146
144
  khoj/interface/compiled/_next/static/chunks/1327-3b1a41af530fa8ee.js,sha256=7NmSOycXRGHpTN98sMAirnWN8ZUL971FsQpWmOs4Fxs,442974
147
145
  khoj/interface/compiled/_next/static/chunks/1588.f0558a0bdffc4761.js,sha256=ZSpLe7ui7FG7AvK00JHPg1YjYz8R9l1Obzu1mYHpzjo,89845
@@ -209,32 +207,32 @@ khoj/interface/compiled/_next/static/chunks/framework-8e0e0f4a6b83a956.js,sha256
209
207
  khoj/interface/compiled/_next/static/chunks/main-app-de1f09df97a3cfc7.js,sha256=bqnztujKItXfFBzQlaBmDZyfJpQt_M93CXOuchJfpD0,471
210
208
  khoj/interface/compiled/_next/static/chunks/main-fc8e0fefa2ef3d8c.js,sha256=t9FZIByh6V52m41LQ2yyAReF1CAuY7gLMBuWBeKCX2g,116793
211
209
  khoj/interface/compiled/_next/static/chunks/polyfills-42372ed130431b0a.js,sha256=CXPB1kyIrcjjyVBBDLWLKI9yEY1ZZbeASUON648vloM,112594
212
- khoj/interface/compiled/_next/static/chunks/webpack-88659b10d39e393f.js,sha256=bDJibeeo1Agwm0X5slcE0HDUGF6QvhslA8ANcnTh8xU,4939
210
+ khoj/interface/compiled/_next/static/chunks/webpack-4bf3eab7681a1206.js,sha256=OoW3j_z9crouwe0EL6izM89JV4xzzbS7JTe-dBuF95E,4939
213
211
  khoj/interface/compiled/_next/static/chunks/app/layout-a0c5495d6c582cea.js,sha256=7JZS2Pr995Lwu3FeQpAvheLS1Bn5w5HOFsecV2_kyQA,3880
214
- khoj/interface/compiled/_next/static/chunks/app/page-85b9b416898738f7.js,sha256=nmB2Y8B2kX88X2yiH6Un8L0REBEn3Ar2iOoe3TK7dJw,29935
212
+ khoj/interface/compiled/_next/static/chunks/app/page-6e91caf9bc0c8aba.js,sha256=zXHvQ3IpAsPr8cLzKvcxzE2Y0SWnjJ3IKv22d2-eXJo,29935
215
213
  khoj/interface/compiled/_next/static/chunks/app/_not-found/page-84f94d15b2da4eac.js,sha256=zElhiTkdu2JqrEvJ8Lrxh4HCyfLmPllBHHWOuDtrVlw,1755
216
- khoj/interface/compiled/_next/static/chunks/app/agents/layout-e00fb81dca656a10.js,sha256=Prg_1BSPDnJDTXEx-Ai9RtlK0nesPWDFIVFFCMuVUiw,180
214
+ khoj/interface/compiled/_next/static/chunks/app/agents/layout-2e626327abfbe612.js,sha256=MRpYohoLXBuN_YiOs8yao6iYHhsEApC_TlJl1mWMgR0,180
217
215
  khoj/interface/compiled/_next/static/chunks/app/agents/page-0006674668eb5a4d.js,sha256=JZZS6jOjzfVYE6E76Fl0iou8Jc_1T_-PzPh6rCAYOjY,17488
218
216
  khoj/interface/compiled/_next/static/chunks/app/automations/layout-63603d2cb33279f7.js,sha256=4OX_fcTQdNVs6HxDdJVWdadMVC_gM86Tkqo2TjBA4gw,5143
219
217
  khoj/interface/compiled/_next/static/chunks/app/automations/page-4c465cde2d14cb52.js,sha256=X--w9ZCke8H6d-oGLF97ihEA3E5_lIusQlwDeb80CMI,34834
220
- khoj/interface/compiled/_next/static/chunks/app/chat/layout-d5ae861e1ade9d08.js,sha256=oe6TgLOEOch5Nr3Z-DEdMIp3MD5vd0rH7dTp-mdEXYg,180
221
- khoj/interface/compiled/_next/static/chunks/app/chat/page-802dedbf1d9d5e1e.js,sha256=kPyaAzUA3C_T_DNrjaRVSIlFqnIVTiLL4RCdfcj_LMM,29138
222
- khoj/interface/compiled/_next/static/chunks/app/search/layout-f5881c7ae3ba0795.js,sha256=Bm4Y73ylR-j9_LdKXVUjgLppZJ6JRdLTUgYAsZCOBkQ,180
218
+ khoj/interface/compiled/_next/static/chunks/app/chat/layout-d6acbba22ccac0ff.js,sha256=mqE48lzQOL2jdwqhCf_GMnt6gEt2nX8VxbwF4WFD2TI,180
219
+ khoj/interface/compiled/_next/static/chunks/app/chat/page-9967631715682f3c.js,sha256=xTya1p5cjckexWU46WRz40_d4LIUbISgXpm1YVKwDw0,29143
220
+ khoj/interface/compiled/_next/static/chunks/app/search/layout-94c76c3a41db42a2.js,sha256=3762QDJdZ63bzWVhi-5f_p3GpDwBiPPXxCrUrC_6MrA,180
223
221
  khoj/interface/compiled/_next/static/chunks/app/search/page-883b7d8d2e3abe3e.js,sha256=GCSw4fBzRPRnj9YKz1lwEpVbwwOfWmp8p3n-jDeTGGk,30929
224
222
  khoj/interface/compiled/_next/static/chunks/app/settings/layout-f88cedfe9ad4df7c.js,sha256=aFBEgUCsKnoeyULmh7g-DmaznQ0ztcq6y2pj4bSMCIY,6132
225
223
  khoj/interface/compiled/_next/static/chunks/app/settings/page-95e994ddac31473f.js,sha256=bUMhd4ALsGVOaMrH-n0wxsDNtAmaZvMaQbK_K9C-Osk,27897
226
- khoj/interface/compiled/_next/static/chunks/app/share/chat/layout-b3f7ae1ef8871d30.js,sha256=JsEyiIoEsN1WLgEjun_x908uUc85ve2k3cNY4YF2yyw,180
227
- khoj/interface/compiled/_next/static/chunks/app/share/chat/page-c062269e6906ef22.js,sha256=LPSBHopvAhYz9BXWDq0H8Tw927QYMQQNQ9NSPV3dZ64,5568
224
+ khoj/interface/compiled/_next/static/chunks/app/share/chat/layout-95998f0bdc22bb13.js,sha256=DAKpITdwEGwTobUWKg2Fr8rYolYq2xNt9eUppTXkcsI,180
225
+ khoj/interface/compiled/_next/static/chunks/app/share/chat/page-8c8c175f7f212b03.js,sha256=4zHoETDoZ7mw0K3yLPcoMAoWvc6WRa0G2naxUA6QEZE,5563
228
226
  khoj/interface/compiled/_next/static/chunks/pages/_app-3c9ca398d360b709.js,sha256=UqtikLsCsOWtDUJOW6Tuk9P-bV1V3MhYd3ghrQuEmfs,286
229
227
  khoj/interface/compiled/_next/static/chunks/pages/_error-cf5ca766ac8f493f.js,sha256=w_It3VzKT8O1M3CrJ_hZHsaU7M7dq3EAaVG8KvJ-fhU,253
230
- khoj/interface/compiled/_next/static/css/02f60900b0d89ec7.css,sha256=yILirEJty7snfk1e521b4ehZn8tc1cW-XGkr7ZZz1Qw,30589
228
+ khoj/interface/compiled/_next/static/css/1e9b757ee2a2b34b.css,sha256=9TB4U1wbKtOA-SphUhahi-6WeepK7lOWRKvX3bJW2C0,6795
231
229
  khoj/interface/compiled/_next/static/css/3090706713c12a32.css,sha256=lHBNcr2SPiAMdZQONh2MMlVM_huteuNSM9jCqGkS2d0,3075782
232
- khoj/interface/compiled/_next/static/css/76c658ee459140a9.css,sha256=7tI24VB66ZUsAPUxRdQhboopun0AXLUnF64uv9RkC08,1833
230
+ khoj/interface/compiled/_next/static/css/440ae0f0f650dc35.css,sha256=FlGtVO8aI0FrkVFsPQdk1PO5ECGYJrF1tEmLXVuAIvk,1674
233
231
  khoj/interface/compiled/_next/static/css/7889a30fe9c83846.css,sha256=IUkZhkx4GpYOIhN-EJw9T1DqGMO3Wa3mNpUwaOBuZoY,7204
232
+ khoj/interface/compiled/_next/static/css/bd2071cad2ecf293.css,sha256=hESfG2z56bV9Sy4nGe0OeqEOv0i4-QrRSiw2R9NllO0,30748
234
233
  khoj/interface/compiled/_next/static/css/db7d90554f3ab82b.css,sha256=A3ZAf0StEG3sr_LxAIizczSTYRe1NbtNUpfslvmkqgk,17713
235
234
  khoj/interface/compiled/_next/static/css/ea5485b3f3859a5a.css,sha256=tn6qi2xSLTWhtzDUE8UlC8iipH9QGV6A9oGj1ap-Sk4,1659
236
235
  khoj/interface/compiled/_next/static/css/ee66643a6a5bf71c.css,sha256=3JbJLrnwlX_IHdvjmS3l9y3Vgp5_V0XbfFI44ekLh9E,3106
237
- khoj/interface/compiled/_next/static/css/fbacbdfd5e7f3f0e.css,sha256=83EGhzX5xQHd-qC-hAcrRUaUAHJJBowDdzi-7Lp81v8,6795
238
236
  khoj/interface/compiled/_next/static/media/1d8a05b60287ae6c-s.p.woff2,sha256=IzKBwB_bpSGvO7C9aRv29Js-jAbZPRDI-D-P4H2P918,14508
239
237
  khoj/interface/compiled/_next/static/media/2aa11a72f7f24b58-s.woff2,sha256=QjuuSKmViymmy-itXLB1UbSARxFNHWuMiPpCrYqClFI,22728
240
238
  khoj/interface/compiled/_next/static/media/383a65b63658737d-s.woff2,sha256=VH1XkI87HdFVhsurH5D5ekEjG_ZORTVBVg6xz7p87C8,16704
@@ -312,8 +310,10 @@ khoj/interface/compiled/_next/static/media/flags.3afdda2f.webp,sha256=M2AW_HLpBn
312
310
  khoj/interface/compiled/_next/static/media/flags@2x.5fbe9fc1.webp,sha256=BBeRPBZkxY3-aKkMnYv5TSkxmbeMbyUH4VRIPfrWg1E,137406
313
311
  khoj/interface/compiled/_next/static/media/globe.98e105ca.webp,sha256=g3ofb8-W9GM75zIhlvQhaS8I2py9TtrovOKR3_7Jf04,514
314
312
  khoj/interface/compiled/_next/static/media/globe@2x.974df6f8.webp,sha256=I_N7Yke3IOoS-0CC6XD8o0IUWG8PdPbrHmf6lpgWlZY,1380
315
- khoj/interface/compiled/agents/index.html,sha256=h5k2gDou63Qesx-QZx83VNOYUkO5EQz98rBOqfxbJeg,16532
316
- khoj/interface/compiled/agents/index.txt,sha256=8yN2bXLTAKqzphVDWc7RxKJJQd4AJRzgzQZAZCFusOs,7351
313
+ khoj/interface/compiled/_next/static/w19FJJa9p2AFJB6DEektd/_buildManifest.js,sha256=f2_nYnw25hHWQJ-39Lf5OH1u6kgdbOInyfplqgjvAV4,224
314
+ khoj/interface/compiled/_next/static/w19FJJa9p2AFJB6DEektd/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
315
+ khoj/interface/compiled/agents/index.html,sha256=SbZZfkSfxBUJ_72dR-k9Ypkkspc-e_qAax0DfPCqWFc,16532
316
+ khoj/interface/compiled/agents/index.txt,sha256=dGyX9e3IA6uIk0EOvY4eQAltcGgb4V45COmk-rz5k_0,7351
317
317
  khoj/interface/compiled/assets/icons/khoj_lantern.ico,sha256=eggu-B_v3z1R53EjOFhIqqPnICBGdoaw1xnc0NrzHck,174144
318
318
  khoj/interface/compiled/assets/icons/khoj_lantern.svg,sha256=I_8XP5X84gEOoCRhCRKOQn_GKZrz3SUBXct7WxHvY7c,8767
319
319
  khoj/interface/compiled/assets/icons/khoj_lantern_1200x1200.png,sha256=xDx0bbD-WMflgg8zck9oPIIuTIvywtuED2k7CjSQS4w,66194
@@ -328,16 +328,16 @@ khoj/interface/compiled/assets/samples/desktop-remember-plan-sample.png,sha256=i
328
328
  khoj/interface/compiled/assets/samples/phone-browse-draw-sample.png,sha256=Dd4fPwtFl6BWqnHjeb1mCK_ND0hhHsWtx8sNE7EiMuE,406179
329
329
  khoj/interface/compiled/assets/samples/phone-plain-chat-sample.png,sha256=DEDaNRCkfEWUeh3kYZWIQDTVK1a6KKnYdwj5ZWisN_Q,82985
330
330
  khoj/interface/compiled/assets/samples/phone-remember-plan-sample.png,sha256=Ma3blirRmq3X4oYSsDbbT7MDn29rymDrjwmUfA9BMuM,236285
331
- khoj/interface/compiled/automations/index.html,sha256=B8DrNBQPKj69LoHtcrqij2iR3JeJ2WwYDcjUdaFU9ME,54402
332
- khoj/interface/compiled/automations/index.txt,sha256=zEnDi5E-Gk9d0yIu9Hv2-OdyMhwq6ON-KZ66xCFckW4,7580
333
- khoj/interface/compiled/chat/index.html,sha256=XEK8GOFhqIsUcc6cDN5DnDMm-7brf-fsI_6D_lFB49A,53532
334
- khoj/interface/compiled/chat/index.txt,sha256=LpBtl8_ozsobqciAQbRQqFWIjHpR7uLi_kd5-ydwA7I,7991
335
- khoj/interface/compiled/search/index.html,sha256=pUQsORwWMUk1rZ-gGzdzTgj4q-TJMAhUnvT3gvN10Es,55301
336
- khoj/interface/compiled/search/index.txt,sha256=JFChXH8XkfgsF3ACegAPq2-f9jLAKqfEdfEWAGEDPCY,6565
337
- khoj/interface/compiled/settings/index.html,sha256=zXRwhSoFoU-o_QOysCSN9I9hKA84mVqnF0F8cuEiUa0,53050
338
- khoj/interface/compiled/settings/index.txt,sha256=M3vglKgV4Kz-JEoP4Own151VIcl_WS8Ib2Hh2ldBuvw,7834
339
- khoj/interface/compiled/share/chat/index.html,sha256=XV2_ybxbk8-QEUnB_MYxdvBg0Er2nxOo8lrQonDMOlk,54112
340
- khoj/interface/compiled/share/chat/index.txt,sha256=KfFYJ0QTagsFzLnK9gr7NZY4pViLP88-GjXx0p_SNig,8453
331
+ khoj/interface/compiled/automations/index.html,sha256=M-Fm4FKw4FF5bjq-1XbgCm-uqptaoJv3OEdzYTCIQqo,54402
332
+ khoj/interface/compiled/automations/index.txt,sha256=DmJMiP2B780cmXcohMuApG0QaIiUVoLp6asNTPLCdW0,7580
333
+ khoj/interface/compiled/chat/index.html,sha256=gxGzH0mCQB5QJVB6ObOKgSli5un2VWKfJgSt8NGavi8,53842
334
+ khoj/interface/compiled/chat/index.txt,sha256=3rRq6bSDy1_CmnlR_v97b3itc_KmUfstXc_vPbS6mkw,8124
335
+ khoj/interface/compiled/search/index.html,sha256=RxV_No7GWCvgVmINzucGQ6ZFD9rcHpsiTMiDP2-n7iA,55301
336
+ khoj/interface/compiled/search/index.txt,sha256=0BlSUM9tJU8crNMUzDPWC8iNSOES9xDvTIFyI9mJEYg,6565
337
+ khoj/interface/compiled/settings/index.html,sha256=OwULMDcpTZ1OJAW3Bf89KcbQZBe6zTvirjWhqcxrd4Q,53050
338
+ khoj/interface/compiled/settings/index.txt,sha256=9eD_yZSgHbcLdMkpyZTD0VXUO_kFhS3b6bF8PeoWfA8,7834
339
+ khoj/interface/compiled/share/chat/index.html,sha256=E7qzenVct2-r4S61RmeZ9eaIHWg_QU5TCnp-N-6DwAQ,53802
340
+ khoj/interface/compiled/share/chat/index.txt,sha256=Y5lteufxtsnJkWPy936lsLuth3ydLC_lRCA6ymiNRGA,8320
341
341
  khoj/interface/email/feedback.html,sha256=xksuPFamx4hGWyTTxZKRgX_eiYQQEuv-eK9Xmkt-nwU,1216
342
342
  khoj/interface/email/magic_link.html,sha256=372ESbTPKM9acekuZcOIKOw6kBl-KikFg_L9MOHqJkg,2094
343
343
  khoj/interface/email/task.html,sha256=tY7a0gzVeQ2lSQNu7WyXR_s7VYeWTrxWEj1iHVuoVE4,2813
@@ -389,31 +389,31 @@ khoj/processor/content/pdf/pdf_to_entries.py,sha256=GQUvab61okhV9_DK0g2MCrMq8wKp
389
389
  khoj/processor/content/plaintext/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
390
390
  khoj/processor/content/plaintext/plaintext_to_entries.py,sha256=wFZwK_zIc7gWbRtO9sOHo9KvfhGAzL9psX_nKWYFduo,4975
391
391
  khoj/processor/conversation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
392
- khoj/processor/conversation/prompts.py,sha256=XkLuA8npw4gdfXQqBJqn-13uJd1xoGtnzOsnobFrw5g,54523
393
- khoj/processor/conversation/utils.py,sha256=niMWTIjnoeGejnndNf8Mv0P4WyYtW5MlILUXdjA7gbQ,44613
392
+ khoj/processor/conversation/prompts.py,sha256=F0MVg81Tr7L4W7ubx_UJ-D4PqgGCElTg8KLpQjdPuIk,54207
393
+ khoj/processor/conversation/utils.py,sha256=t_Q-EhaXdfqvefpFsB4F2C-_scAneG9OLEyqMYcXjyQ,48443
394
394
  khoj/processor/conversation/anthropic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
395
- khoj/processor/conversation/anthropic/anthropic_chat.py,sha256=7QnT5no46slRahe3UlCEmPMVb7LrIcth0pkjVneaq0g,5290
396
- khoj/processor/conversation/anthropic/utils.py,sha256=1-hwqMSVgQ5295LhcjKxMmDjDsAKLJC8YCh-D03wEMA,16765
395
+ khoj/processor/conversation/anthropic/anthropic_chat.py,sha256=6IG-YlpFx86EgW3PdGuv4xGMRzvHx4xVUcQMqkKn4vs,5358
396
+ khoj/processor/conversation/anthropic/utils.py,sha256=kka2nAhqUBn9BNz25x_RbpkiqznWw_u26UdEASgF6BY,16210
397
397
  khoj/processor/conversation/google/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
398
- khoj/processor/conversation/google/gemini_chat.py,sha256=L8a4NYstCGQlax_HHaeaqlu_qs6pITeCX7sD5BDeEC0,5659
399
- khoj/processor/conversation/google/utils.py,sha256=7aXQ1SAtF1B1PXmn_nj_FuLEba21uRYm_eaL7xKtRdg,16835
398
+ khoj/processor/conversation/google/gemini_chat.py,sha256=L0zKFsU9KwedugmSHRmkD9ZPmzRdQIXHH2o7d-NsWYU,5729
399
+ khoj/processor/conversation/google/utils.py,sha256=_uVtttGIEajXarBawCwb1R4MwQiKaCtRaQdpg-NR_wI,19482
400
400
  khoj/processor/conversation/offline/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
401
- khoj/processor/conversation/offline/chat_model.py,sha256=lD2sIGEKBuF9AZSyU2UUHAZHeTyE6v1B2-qUoVoSiXg,8579
401
+ khoj/processor/conversation/offline/chat_model.py,sha256=zsb6HJhfHJ5l6cegq0A6k7YAeYIo3CTLhjaD-jW556g,8597
402
402
  khoj/processor/conversation/offline/utils.py,sha256=51McImxl6u1qgRYvMt7uzsgLGSLq5SMFy74ymlNjIcc,3033
403
403
  khoj/processor/conversation/offline/whisper.py,sha256=DJI-8y8DULO2cQ49m2VOvRyIZ2TxBypc15gM8O3HuMI,470
404
404
  khoj/processor/conversation/openai/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
405
- khoj/processor/conversation/openai/gpt.py,sha256=_i0greQTSxLL5wOCqBot6cIPtdhtBL_y8fZsn8lRmYc,7174
406
- khoj/processor/conversation/openai/utils.py,sha256=S1dexjFSA1-Pf8-_F1UvBJi7M7GyyIsShDZQf6qwvOI,29409
405
+ khoj/processor/conversation/openai/gpt.py,sha256=w-VeVoI8xTyS1n36y0sbI2TPP6v-LFriFx9xyfgnt7g,6096
406
+ khoj/processor/conversation/openai/utils.py,sha256=JWRg0P59DfS8QYhKY0U4WGEuEcLVLzzLdBQsnVhOWtI,33718
407
407
  khoj/processor/conversation/openai/whisper.py,sha256=zoEeK1LNCg_tzP4xzYi5vRPzNPGuDGzpkrkG7d1LUn4,447
408
408
  khoj/processor/image/generate.py,sha256=bF80fjsHKkU2f2ADiXJei8-ViqcT0EHaM0wH78KPUC8,12199
409
409
  khoj/processor/operator/README.md,sha256=QaV00W1IB7i8ZrvhNkpjmFMVDtORFt-OASieRQGE_UE,2308
410
410
  khoj/processor/operator/__init__.py,sha256=ZdB1LfYBGiKC7Zrd97jRkMuGfCDJpyb2uwHY9zk8ap4,10198
411
- khoj/processor/operator/grounding_agent.py,sha256=uxLFpLQH63g5_jhuI8HFsIl6roxh0VseiT-46n5vbLQ,18911
411
+ khoj/processor/operator/grounding_agent.py,sha256=eyWCaIHg12Ak2SbCl7aiiFSoDZ88-AlrqQElRDdDXDE,18917
412
412
  khoj/processor/operator/grounding_agent_uitars.py,sha256=Ujdug_Z2_r1tZmy5kBtHbZcqOp0jSH-7ZnYo1fVdcDQ,42261
413
413
  khoj/processor/operator/operator_actions.py,sha256=eJHxs6idstIbGzzRPHsveuJxl5jH9dHvBhOxuAqjg7M,4268
414
414
  khoj/processor/operator/operator_agent_anthropic.py,sha256=qLxT53pGIdCH8xzkxhSmnSMT5LTOlm68MFnQSGMkdm4,31556
415
415
  khoj/processor/operator/operator_agent_base.py,sha256=k2iq2VyJ59bNqRd_PKuFaxO3Q09nTdi4_TutNs2VtRo,4490
416
- khoj/processor/operator/operator_agent_binary.py,sha256=u8uRgsr5XGpj1IXomZX3t7iAKGmKxXBnNAFYCF-J0co,19901
416
+ khoj/processor/operator/operator_agent_binary.py,sha256=3Qv2xdKUFcymqGhCajYDtjezBfGPdSnT3FNJN-cCGI8,19956
417
417
  khoj/processor/operator/operator_agent_openai.py,sha256=lGBX5MTLO1WpDFBSivIqb71Hpdhrbc5orwBdttJDk3A,23687
418
418
  khoj/processor/operator/operator_environment_base.py,sha256=nHvn8lB-h6bY-v7rOEp_VZcn3aooy_v9YJbVas2CfXg,1045
419
419
  khoj/processor/operator/operator_environment_browser.py,sha256=4SmLIRVECI53hplGEqBLrkwQJfNtESum637vnS3tGeA,17896
@@ -421,22 +421,22 @@ khoj/processor/operator/operator_environment_computer.py,sha256=bqpnSqQEElRjqzzx
421
421
  khoj/processor/speech/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
422
422
  khoj/processor/speech/text_to_speech.py,sha256=Q7sapi5Hv6woXOumtrGqR0t6izZrFBkWXFOGrHM6dJ4,1929
423
423
  khoj/processor/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
424
- khoj/processor/tools/online_search.py,sha256=Sl6lsYUZ68xAWwJ6ZwqP_nhJFCkyz9Ku1aLY33RtHTE,25023
425
- khoj/processor/tools/run_code.py,sha256=flVlRT1AMCg8xnAEY03nzoU9pjrKzm_gmkJe228bIoE,12513
424
+ khoj/processor/tools/online_search.py,sha256=5NyV1FzZmlXx_-cz0_samN7tKOnTcbFp-lALvcfQArA,25419
425
+ khoj/processor/tools/run_code.py,sha256=cyuCz61FYPWChuDwxoZHih-kAuC3J4GbL92dV4pOh6Q,12518
426
426
  khoj/routers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
427
427
  khoj/routers/api.py,sha256=BFiKwdYjkR-4aHBumM7Hu4XdN2RvQ0Z9V4_2Wd8aPiM,8633
428
428
  khoj/routers/api_agents.py,sha256=QcognyY9FwClgOZw21BF9K7IX16i2070kRoM7c_bKn8,17264
429
429
  khoj/routers/api_automation.py,sha256=SwQGsVcZmtf8g3w8Xz220YhTIT6D4mLwUp_YCYLpbCY,9389
430
- khoj/routers/api_chat.py,sha256=8W7WcuDNduQh9Qs-OYvsK2a-XTrUy-C7RQj0FnjimXc,58906
430
+ khoj/routers/api_chat.py,sha256=sR1c4rQt0WTxbhqn5vlWb4vc4tIxMEHLKSV344VtbmU,58902
431
431
  khoj/routers/api_content.py,sha256=uLO3eir36rERkhhKU1HOdEv8KTi_z_edT9cHMCZP1W8,24578
432
432
  khoj/routers/api_model.py,sha256=hjIgOQqva4YVv1osQK8p-317_oSKsv1mHbAYFQICxnM,5273
433
433
  khoj/routers/api_phone.py,sha256=p9yfc4WeMHDC0hg3aQk60a2VBy8rZPdEnz9wdJ7DzkU,2208
434
434
  khoj/routers/api_subscription.py,sha256=qnbKwA6N1TWK8Aiu1FFLka_JhbPOuwqT262NSHGZDiQ,5569
435
435
  khoj/routers/auth.py,sha256=jk2lqAS_650lQsoaOFTlZd9W_LL8HbN5zhHTZza_lqs,11258
436
436
  khoj/routers/email.py,sha256=wvr6_fpk0RuKcTPC6suI8JDZPLYzJ9hAhz_G41yZytc,3923
437
- khoj/routers/helpers.py,sha256=lyWH6M6X3OxorGaAU6t7YRph0iiwg1dH4qiX9SfbuhM,106138
437
+ khoj/routers/helpers.py,sha256=oU9AAK7p4uNdz-4u88dtYW17DdV-HOyZt88uGfOfRqU,116049
438
438
  khoj/routers/notion.py,sha256=g53xyYFmjr2JnuIrTW2vytbfkiK_UkoRTxqnnLSmD5o,2802
439
- khoj/routers/research.py,sha256=r01gvB-vwEe-q1bNalTdj0oTo5GI-1KG8HtFlTWODls,22873
439
+ khoj/routers/research.py,sha256=GPQJhqpAdmPtcN2gtxzVbDPVQqPg9DqeWPIYF8CZf3s,24197
440
440
  khoj/routers/storage.py,sha256=lao0DvsF49QleZvOdjKM98RU2cGfCJDBb7WeoI7Rr3I,2172
441
441
  khoj/routers/twilio.py,sha256=MLsuCm4--ETvr3sLxbF0CL_ehlg_l2rKBSLR2Qh2Xls,1081
442
442
  khoj/routers/web_client.py,sha256=_vyfDaHZZjNoI2LwGNQFRiFmGLkNcgYJe7dOr3mrxH8,4386
@@ -452,15 +452,15 @@ khoj/utils/cli.py,sha256=fI1XQYMtJzLGOKQZQ5XxFOrC8sGjK3Alnteg5U62rWI,3882
452
452
  khoj/utils/config.py,sha256=aiOkH0je8A30DAGYTHMRePrgJonFv_i07_7CdhhhcdA,1805
453
453
  khoj/utils/constants.py,sha256=4pIq5yimBR-uFwqrukwjlFvfr8Ir190x4rCkysn-sbE,4244
454
454
  khoj/utils/fs_syncer.py,sha256=5nqwAZqRk3Nwhkwd8y4IomTPZQmW32GwAqyMzal5KyY,9996
455
- khoj/utils/helpers.py,sha256=h-H3ioGB5PIYLBr-SmUjmNBIkN5-YDXsoK5B1DvI3i4,32005
455
+ khoj/utils/helpers.py,sha256=uDTZPZLAUrkdwImHb5HqP0JgC1vOk3T5-XXrciCpgMw,42918
456
456
  khoj/utils/initialization.py,sha256=5eULsvGQv_Kp9bMfrHP8T_QFPjurIFyfq3-rVMWiGa4,15066
457
457
  khoj/utils/jsonl.py,sha256=0Ac_COqr8sLCXntzZtquxuCEVRM2c3yKeDRGhgOBRpQ,1192
458
458
  khoj/utils/models.py,sha256=Q5tcC9-z25sCiub048fLnvZ6_IIO1bcPNxt5payekk0,2009
459
459
  khoj/utils/rawconfig.py,sha256=ASl_h3Ivaa_4lD4kCA0uZsMRgSYCjrgGUPm-Hw1jkLk,5083
460
460
  khoj/utils/state.py,sha256=s_GFWOqRzpEDx0eCPStuzBTK2VEw-qgRpH0aiEdGnDo,1791
461
461
  khoj/utils/yaml.py,sha256=qy1Tkc61rDMesBw_Cyx2vOR6H-Hngcsm5kYfjwQBwkE,1543
462
- khoj-1.42.8.dev4.dist-info/METADATA,sha256=VIEeTBOMfs_o0jK88_a7uBcQBn_SAt5xcvOdslwFpU0,8973
463
- khoj-1.42.8.dev4.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
464
- khoj-1.42.8.dev4.dist-info/entry_points.txt,sha256=KBIcez5N_jCgq_ER4Uxf-e1lxTBMTE_BBjMwwfeZyAg,39
465
- khoj-1.42.8.dev4.dist-info/licenses/LICENSE,sha256=hIahDEOTzuHCU5J2nd07LWwkLW7Hko4UFO__ffsvB-8,34523
466
- khoj-1.42.8.dev4.dist-info/RECORD,,
462
+ khoj-1.42.9.dev16.dist-info/METADATA,sha256=bLxMhzLc2UiIuKpYh4xGhrDBF5wj5yrrWn68Z2Fq1_c,8974
463
+ khoj-1.42.9.dev16.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
464
+ khoj-1.42.9.dev16.dist-info/entry_points.txt,sha256=KBIcez5N_jCgq_ER4Uxf-e1lxTBMTE_BBjMwwfeZyAg,39
465
+ khoj-1.42.9.dev16.dist-info/licenses/LICENSE,sha256=hIahDEOTzuHCU5J2nd07LWwkLW7Hko4UFO__ffsvB-8,34523
466
+ khoj-1.42.9.dev16.dist-info/RECORD,,
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8459,3317,244,7138],{63521:function(){}},function(n){n.O(0,[2971,2117,1744],function(){return n(n.s=63521)}),_N_E=n.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3317,244,8459,7138],{63521:function(){}},function(n){n.O(0,[2971,2117,1744],function(){return n(n.s=63521)}),_N_E=n.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[244,3317,8459,7138],{63521:function(){}},function(n){n.O(0,[2971,2117,1744],function(){return n(n.s=63521)}),_N_E=n.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7138,3317,244,8459],{63521:function(){}},function(n){n.O(0,[2971,2117,1744],function(){return n(n.s=63521)}),_N_E=n.O()}]);