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.
- khoj/database/adapters/__init__.py +20 -0
- khoj/interface/compiled/404/index.html +2 -2
- khoj/interface/compiled/_next/static/chunks/app/agents/layout-2e626327abfbe612.js +1 -0
- khoj/interface/compiled/_next/static/chunks/app/chat/layout-d6acbba22ccac0ff.js +1 -0
- khoj/interface/compiled/_next/static/chunks/app/chat/{page-802dedbf1d9d5e1e.js → page-9967631715682f3c.js} +1 -1
- khoj/interface/compiled/_next/static/chunks/app/{page-85b9b416898738f7.js → page-6e91caf9bc0c8aba.js} +1 -1
- khoj/interface/compiled/_next/static/chunks/app/search/layout-94c76c3a41db42a2.js +1 -0
- khoj/interface/compiled/_next/static/chunks/app/share/chat/layout-95998f0bdc22bb13.js +1 -0
- khoj/interface/compiled/_next/static/chunks/app/share/chat/{page-c062269e6906ef22.js → page-8c8c175f7f212b03.js} +1 -1
- khoj/interface/compiled/_next/static/chunks/{webpack-88659b10d39e393f.js → webpack-4bf3eab7681a1206.js} +1 -1
- khoj/interface/compiled/_next/static/css/1e9b757ee2a2b34b.css +1 -0
- khoj/interface/compiled/_next/static/css/440ae0f0f650dc35.css +1 -0
- khoj/interface/compiled/_next/static/css/bd2071cad2ecf293.css +1 -0
- khoj/interface/compiled/agents/index.html +2 -2
- khoj/interface/compiled/agents/index.txt +1 -1
- khoj/interface/compiled/automations/index.html +2 -2
- khoj/interface/compiled/automations/index.txt +1 -1
- khoj/interface/compiled/chat/index.html +2 -2
- khoj/interface/compiled/chat/index.txt +2 -2
- khoj/interface/compiled/index.html +2 -2
- khoj/interface/compiled/index.txt +2 -2
- khoj/interface/compiled/search/index.html +2 -2
- khoj/interface/compiled/search/index.txt +1 -1
- khoj/interface/compiled/settings/index.html +2 -2
- khoj/interface/compiled/settings/index.txt +1 -1
- khoj/interface/compiled/share/chat/index.html +2 -2
- khoj/interface/compiled/share/chat/index.txt +2 -2
- khoj/processor/conversation/anthropic/anthropic_chat.py +11 -2
- khoj/processor/conversation/anthropic/utils.py +90 -103
- khoj/processor/conversation/google/gemini_chat.py +4 -1
- khoj/processor/conversation/google/utils.py +84 -19
- khoj/processor/conversation/offline/chat_model.py +3 -3
- khoj/processor/conversation/openai/gpt.py +13 -38
- khoj/processor/conversation/openai/utils.py +113 -12
- khoj/processor/conversation/prompts.py +17 -35
- khoj/processor/conversation/utils.py +128 -57
- khoj/processor/operator/grounding_agent.py +1 -1
- khoj/processor/operator/operator_agent_binary.py +4 -3
- khoj/processor/tools/online_search.py +18 -0
- khoj/processor/tools/run_code.py +1 -1
- khoj/routers/api_chat.py +1 -1
- khoj/routers/helpers.py +293 -26
- khoj/routers/research.py +169 -155
- khoj/utils/helpers.py +284 -8
- {khoj-1.42.8.dev4.dist-info → khoj-1.42.9.dev16.dist-info}/METADATA +1 -1
- {khoj-1.42.8.dev4.dist-info → khoj-1.42.9.dev16.dist-info}/RECORD +51 -51
- khoj/interface/compiled/_next/static/chunks/app/agents/layout-e00fb81dca656a10.js +0 -1
- khoj/interface/compiled/_next/static/chunks/app/chat/layout-d5ae861e1ade9d08.js +0 -1
- khoj/interface/compiled/_next/static/chunks/app/search/layout-f5881c7ae3ba0795.js +0 -1
- khoj/interface/compiled/_next/static/chunks/app/share/chat/layout-b3f7ae1ef8871d30.js +0 -1
- khoj/interface/compiled/_next/static/css/02f60900b0d89ec7.css +0 -1
- khoj/interface/compiled/_next/static/css/76c658ee459140a9.css +0 -1
- khoj/interface/compiled/_next/static/css/fbacbdfd5e7f3f0e.css +0 -1
- /khoj/interface/compiled/_next/static/{8Wx2kDD5oC-v77JDu6vKI → w19FJJa9p2AFJB6DEektd}/_buildManifest.js +0 -0
- /khoj/interface/compiled/_next/static/{8Wx2kDD5oC-v77JDu6vKI → w19FJJa9p2AFJB6DEektd}/_ssgManifest.js +0 -0
- {khoj-1.42.8.dev4.dist-info → khoj-1.42.9.dev16.dist-info}/WHEEL +0 -0
- {khoj-1.42.8.dev4.dist-info → khoj-1.42.9.dev16.dist-info}/entry_points.txt +0 -0
- {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
|
-
|
389
|
-
ConversationCommand.
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
|
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
|
@@ -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
|
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=
|
135
|
-
khoj/interface/compiled/index.txt,sha256=
|
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=
|
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-
|
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-
|
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-
|
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-
|
221
|
-
khoj/interface/compiled/_next/static/chunks/app/chat/page-
|
222
|
-
khoj/interface/compiled/_next/static/chunks/app/search/layout-
|
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-
|
227
|
-
khoj/interface/compiled/_next/static/chunks/app/share/chat/page-
|
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/
|
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/
|
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/
|
316
|
-
khoj/interface/compiled/
|
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=
|
332
|
-
khoj/interface/compiled/automations/index.txt,sha256=
|
333
|
-
khoj/interface/compiled/chat/index.html,sha256=
|
334
|
-
khoj/interface/compiled/chat/index.txt,sha256=
|
335
|
-
khoj/interface/compiled/search/index.html,sha256=
|
336
|
-
khoj/interface/compiled/search/index.txt,sha256=
|
337
|
-
khoj/interface/compiled/settings/index.html,sha256=
|
338
|
-
khoj/interface/compiled/settings/index.txt,sha256=
|
339
|
-
khoj/interface/compiled/share/chat/index.html,sha256=
|
340
|
-
khoj/interface/compiled/share/chat/index.txt,sha256=
|
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=
|
393
|
-
khoj/processor/conversation/utils.py,sha256=
|
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=
|
396
|
-
khoj/processor/conversation/anthropic/utils.py,sha256=
|
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=
|
399
|
-
khoj/processor/conversation/google/utils.py,sha256=
|
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=
|
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=
|
406
|
-
khoj/processor/conversation/openai/utils.py,sha256=
|
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=
|
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=
|
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=
|
425
|
-
khoj/processor/tools/run_code.py,sha256=
|
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=
|
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=
|
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=
|
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=
|
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.
|
463
|
-
khoj-1.42.
|
464
|
-
khoj-1.42.
|
465
|
-
khoj-1.42.
|
466
|
-
khoj-1.42.
|
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()}]);
|