khoj 2.0.0b14.dev7__py3-none-any.whl → 2.0.0b14.dev32__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/interface/compiled/404/index.html +2 -2
- khoj/interface/compiled/_next/static/chunks/app/agents/{page-f04757fab73908a4.js → page-e291b49977f43880.js} +1 -1
- khoj/interface/compiled/_next/static/chunks/app/automations/{page-fb0e9353e86acd25.js → page-1047097af99d31c7.js} +1 -1
- khoj/interface/compiled/_next/static/chunks/app/chat/{page-fd693f65831a2f97.js → page-6297545f8e9ee5f9.js} +1 -1
- khoj/interface/compiled/_next/static/chunks/app/{page-89f5654035b07c00.js → page-1567cac7b79a7c59.js} +1 -1
- khoj/interface/compiled/_next/static/chunks/app/search/{page-6ca71d3d56fc6935.js → page-3639e50ec3e9acfd.js} +1 -1
- khoj/interface/compiled/_next/static/chunks/app/settings/{page-a798de3944f59629.js → page-6081362437c82470.js} +1 -1
- khoj/interface/compiled/_next/static/chunks/app/share/chat/layout-8addeb8079c3215b.js +1 -0
- khoj/interface/compiled/_next/static/chunks/app/share/chat/{page-07d7ff92aee0bb69.js → page-e0dcb1762f8c8f88.js} +1 -1
- khoj/interface/compiled/_next/static/chunks/{webpack-8087292aa01e8e55.js → webpack-5393aad3d824e0cb.js} +1 -1
- khoj/interface/compiled/_next/static/css/37a73b87f02df402.css +1 -0
- khoj/interface/compiled/_next/static/css/579820a104ee7d1d.css +1 -0
- khoj/interface/compiled/_next/static/css/821d0d60b0b6871d.css +1 -0
- khoj/interface/compiled/agents/index.html +2 -2
- khoj/interface/compiled/agents/index.txt +2 -2
- khoj/interface/compiled/automations/index.html +2 -2
- khoj/interface/compiled/automations/index.txt +3 -3
- khoj/interface/compiled/chat/index.html +2 -2
- khoj/interface/compiled/chat/index.txt +3 -3
- 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 +2 -2
- khoj/interface/compiled/settings/index.html +2 -2
- khoj/interface/compiled/settings/index.txt +4 -4
- khoj/interface/compiled/share/chat/index.html +2 -2
- khoj/interface/compiled/share/chat/index.txt +2 -2
- khoj/processor/conversation/google/utils.py +1 -1
- khoj/processor/conversation/openai/utils.py +37 -3
- khoj/processor/conversation/prompts.py +32 -21
- khoj/processor/tools/run_code.py +15 -22
- khoj/routers/api_chat.py +3 -1
- khoj/routers/helpers.py +34 -32
- khoj/utils/helpers.py +50 -10
- {khoj-2.0.0b14.dev7.dist-info → khoj-2.0.0b14.dev32.dist-info}/METADATA +1 -1
- {khoj-2.0.0b14.dev7.dist-info → khoj-2.0.0b14.dev32.dist-info}/RECORD +48 -48
- khoj/interface/compiled/_next/static/chunks/app/share/chat/layout-9781b62e39ca7785.js +0 -1
- khoj/interface/compiled/_next/static/css/a0c2fd63bb396f04.css +0 -1
- khoj/interface/compiled/_next/static/css/ee66643a6a5bf71c.css +0 -1
- khoj/interface/compiled/_next/static/css/fbacbdfd5e7f3f0e.css +0 -1
- /khoj/interface/compiled/_next/static/{suayGPC1Ee3s2bFUreGaV → X5-FmIFHozaGjC6_c98DL}/_buildManifest.js +0 -0
- /khoj/interface/compiled/_next/static/{suayGPC1Ee3s2bFUreGaV → X5-FmIFHozaGjC6_c98DL}/_ssgManifest.js +0 -0
- /khoj/interface/compiled/_next/static/chunks/{1327-511bb0a862efce80.js → 1327-e254819a9172cfa7.js} +0 -0
- /khoj/interface/compiled/_next/static/chunks/{1915-fbfe167c84ad60c5.js → 1915-5c6508f6ebb62a30.js} +0 -0
- /khoj/interface/compiled/_next/static/chunks/{2117-e78b6902ad6f75ec.js → 2117-080746c8e170c81a.js} +0 -0
- /khoj/interface/compiled/_next/static/chunks/{2939-4d4084c5b888b960.js → 2939-4af3fd24b8ffc9ad.js} +0 -0
- /khoj/interface/compiled/_next/static/chunks/{4447-d6cf93724d57e34b.js → 4447-cd95608f8e93e711.js} +0 -0
- /khoj/interface/compiled/_next/static/chunks/{8667-4b7790573b08c50d.js → 8667-50b03a89e82e0ba7.js} +0 -0
- /khoj/interface/compiled/_next/static/chunks/{9139-ce1ae935dac9c871.js → 9139-8ac4d9feb10f8869.js} +0 -0
- {khoj-2.0.0b14.dev7.dist-info → khoj-2.0.0b14.dev32.dist-info}/WHEEL +0 -0
- {khoj-2.0.0b14.dev7.dist-info → khoj-2.0.0b14.dev32.dist-info}/entry_points.txt +0 -0
- {khoj-2.0.0b14.dev7.dist-info → khoj-2.0.0b14.dev32.dist-info}/licenses/LICENSE +0 -0
khoj/processor/tools/run_code.py
CHANGED
@@ -49,7 +49,7 @@ class GeneratedCode(NamedTuple):
|
|
49
49
|
|
50
50
|
|
51
51
|
async def run_code(
|
52
|
-
|
52
|
+
instructions: str,
|
53
53
|
conversation_history: List[ChatMessageModel],
|
54
54
|
context: str,
|
55
55
|
location_data: LocationData,
|
@@ -63,12 +63,12 @@ async def run_code(
|
|
63
63
|
):
|
64
64
|
# Generate Code
|
65
65
|
if send_status_func:
|
66
|
-
async for event in send_status_func(f"**Generate code snippet** for {
|
66
|
+
async for event in send_status_func(f"**Generate code snippet** for {instructions}"):
|
67
67
|
yield {ChatEvent.STATUS: event}
|
68
68
|
try:
|
69
69
|
with timer("Chat actor: Generate programs to execute", logger):
|
70
70
|
generated_code = await generate_python_code(
|
71
|
-
|
71
|
+
instructions,
|
72
72
|
conversation_history,
|
73
73
|
context,
|
74
74
|
location_data,
|
@@ -79,7 +79,7 @@ async def run_code(
|
|
79
79
|
query_files,
|
80
80
|
)
|
81
81
|
except Exception as e:
|
82
|
-
raise ValueError(f"Failed to generate code for {
|
82
|
+
raise ValueError(f"Failed to generate code for {instructions} with error: {e}")
|
83
83
|
|
84
84
|
# Prepare Input Data
|
85
85
|
input_data = []
|
@@ -101,21 +101,21 @@ async def run_code(
|
|
101
101
|
code = result.pop("code")
|
102
102
|
cleaned_result = truncate_code_context({"cleaned": {"results": result}})["cleaned"]["results"]
|
103
103
|
logger.info(f"Executed Code\n----\n{code}\n----\nResult\n----\n{cleaned_result}\n----")
|
104
|
-
yield {
|
104
|
+
yield {instructions: {"code": code, "results": result}}
|
105
105
|
except asyncio.TimeoutError as e:
|
106
106
|
# Call the sandbox_url/stop GET API endpoint to stop the code sandbox
|
107
|
-
error = f"Failed to run code for {
|
107
|
+
error = f"Failed to run code for {instructions} with Timeout error: {e}"
|
108
108
|
try:
|
109
109
|
await aiohttp.ClientSession().get(f"{sandbox_url}/stop", timeout=5)
|
110
110
|
except Exception as e:
|
111
111
|
error += f"\n\nFailed to stop code sandbox with error: {e}"
|
112
112
|
raise ValueError(error)
|
113
113
|
except Exception as e:
|
114
|
-
raise ValueError(f"Failed to run code for {
|
114
|
+
raise ValueError(f"Failed to run code for {instructions} with error: {e}")
|
115
115
|
|
116
116
|
|
117
117
|
async def generate_python_code(
|
118
|
-
|
118
|
+
instructions: str,
|
119
119
|
chat_history: List[ChatMessageModel],
|
120
120
|
context: str,
|
121
121
|
location_data: LocationData,
|
@@ -142,7 +142,7 @@ async def generate_python_code(
|
|
142
142
|
network_access_context = "**NO** " if not is_e2b_code_sandbox_enabled() else ""
|
143
143
|
|
144
144
|
code_generation_prompt = prompts.python_code_generation_prompt.format(
|
145
|
-
|
145
|
+
instructions=instructions,
|
146
146
|
chat_history=chat_history_str,
|
147
147
|
context=context,
|
148
148
|
has_network_access=network_access_context,
|
@@ -252,8 +252,12 @@ async def execute_e2b(code: str, input_files: list[dict]) -> dict[str, Any]:
|
|
252
252
|
|
253
253
|
# Identify new files created during execution
|
254
254
|
new_files = set(E2bFile(f.name, f.path) for f in await sandbox.files.list("~")) - original_files
|
255
|
+
|
255
256
|
# Read newly created files in parallel
|
256
|
-
|
257
|
+
def read_format(f):
|
258
|
+
return "bytes" if Path(f.name).suffix in image_file_ext else "text"
|
259
|
+
|
260
|
+
download_tasks = [sandbox.files.read(f.path, format=read_format(f), request_timeout=30) for f in new_files]
|
257
261
|
downloaded_files = await asyncio.gather(*download_tasks)
|
258
262
|
for f, content in zip(new_files, downloaded_files):
|
259
263
|
if isinstance(content, bytes):
|
@@ -261,23 +265,12 @@ async def execute_e2b(code: str, input_files: list[dict]) -> dict[str, Any]:
|
|
261
265
|
b64_data = base64.b64encode(content).decode("utf-8")
|
262
266
|
elif Path(f.name).suffix in image_file_ext:
|
263
267
|
# Ignore image files as they are extracted from execution results below for inline display
|
264
|
-
|
268
|
+
b64_data = base64.b64encode(content).decode("utf-8")
|
265
269
|
else:
|
266
270
|
# Text files - encode utf-8 string as base64
|
267
271
|
b64_data = content
|
268
272
|
output_files.append({"filename": f.name, "b64_data": b64_data})
|
269
273
|
|
270
|
-
# Collect output files from execution results
|
271
|
-
# Repect ordering of output result types to disregard text output associated with images
|
272
|
-
output_result_types = ["png", "jpeg", "svg", "text", "markdown", "json"]
|
273
|
-
for idx, result in enumerate(execution.results):
|
274
|
-
if getattr(result, "chart", None):
|
275
|
-
continue
|
276
|
-
for result_type in output_result_types:
|
277
|
-
if b64_data := getattr(result, result_type, None):
|
278
|
-
output_files.append({"filename": f"{idx}.{result_type}", "b64_data": b64_data})
|
279
|
-
break
|
280
|
-
|
281
274
|
# collect logs
|
282
275
|
success = not execution.error and not execution.logs.stderr
|
283
276
|
stdout = "\n".join(execution.logs.stdout)
|
khoj/routers/api_chat.py
CHANGED
@@ -1526,6 +1526,8 @@ async def chat_ws(
|
|
1526
1526
|
ack_type = "interrupt_acknowledged"
|
1527
1527
|
await websocket.send_text(json.dumps({"type": ack_type}))
|
1528
1528
|
else:
|
1529
|
+
ack_type = "interrupt_acknowledged"
|
1530
|
+
await websocket.send_text(json.dumps({"type": ack_type}))
|
1529
1531
|
logger.info(f"No ongoing task to interrupt for user {websocket.scope['user'].object.id}")
|
1530
1532
|
continue
|
1531
1533
|
|
@@ -1704,8 +1706,8 @@ async def process_chat_request(
|
|
1704
1706
|
logger.debug(f"Chat request cancelled for user {websocket.scope['user'].object.id}")
|
1705
1707
|
raise
|
1706
1708
|
except Exception as e:
|
1707
|
-
logger.error(f"Error processing chat request: {e}", exc_info=True)
|
1708
1709
|
await websocket.send_text(json.dumps({"error": "Internal server error"}))
|
1710
|
+
logger.error(f"Error processing chat request: {e}", exc_info=True)
|
1709
1711
|
raise
|
1710
1712
|
|
1711
1713
|
|
khoj/routers/helpers.py
CHANGED
@@ -1625,6 +1625,7 @@ async def agenerate_chat_response(
|
|
1625
1625
|
deepthought = True
|
1626
1626
|
|
1627
1627
|
chat_model = await ConversationAdapters.aget_valid_chat_model(user, conversation, is_subscribed)
|
1628
|
+
max_prompt_size = await ConversationAdapters.aget_max_context_size(chat_model, user)
|
1628
1629
|
vision_available = chat_model.vision_enabled
|
1629
1630
|
if not vision_available and query_images:
|
1630
1631
|
vision_enabled_config = await ConversationAdapters.aget_vision_enabled_config()
|
@@ -1656,7 +1657,7 @@ async def agenerate_chat_response(
|
|
1656
1657
|
model=chat_model_name,
|
1657
1658
|
api_key=api_key,
|
1658
1659
|
api_base_url=openai_chat_config.api_base_url,
|
1659
|
-
max_prompt_size=
|
1660
|
+
max_prompt_size=max_prompt_size,
|
1660
1661
|
tokenizer_name=chat_model.tokenizer,
|
1661
1662
|
agent=agent,
|
1662
1663
|
vision_available=vision_available,
|
@@ -1687,7 +1688,7 @@ async def agenerate_chat_response(
|
|
1687
1688
|
model=chat_model.name,
|
1688
1689
|
api_key=api_key,
|
1689
1690
|
api_base_url=api_base_url,
|
1690
|
-
max_prompt_size=
|
1691
|
+
max_prompt_size=max_prompt_size,
|
1691
1692
|
tokenizer_name=chat_model.tokenizer,
|
1692
1693
|
agent=agent,
|
1693
1694
|
vision_available=vision_available,
|
@@ -1717,7 +1718,7 @@ async def agenerate_chat_response(
|
|
1717
1718
|
model=chat_model.name,
|
1718
1719
|
api_key=api_key,
|
1719
1720
|
api_base_url=api_base_url,
|
1720
|
-
max_prompt_size=
|
1721
|
+
max_prompt_size=max_prompt_size,
|
1721
1722
|
tokenizer_name=chat_model.tokenizer,
|
1722
1723
|
agent=agent,
|
1723
1724
|
vision_available=vision_available,
|
@@ -2915,35 +2916,34 @@ async def view_file_content(
|
|
2915
2916
|
raw_text = file_object.raw_text
|
2916
2917
|
|
2917
2918
|
# Apply line range filtering if specified
|
2918
|
-
|
2919
|
-
|
2920
|
-
|
2921
|
-
|
2922
|
-
|
2923
|
-
|
2924
|
-
|
2925
|
-
|
2926
|
-
|
2927
|
-
|
2928
|
-
|
2929
|
-
|
2930
|
-
|
2931
|
-
|
2932
|
-
|
2933
|
-
logger.warning(error_msg)
|
2934
|
-
yield [{"query": query, "file": path, "compiled": error_msg}]
|
2935
|
-
return
|
2919
|
+
lines = raw_text.split("\n")
|
2920
|
+
start_line = start_line or 1
|
2921
|
+
end_line = end_line or len(lines)
|
2922
|
+
|
2923
|
+
# Validate line range
|
2924
|
+
if start_line < 1 or end_line < 1 or start_line > end_line:
|
2925
|
+
error_msg = f"Invalid line range: {start_line}-{end_line}"
|
2926
|
+
logger.warning(error_msg)
|
2927
|
+
yield [{"query": query, "file": path, "compiled": error_msg}]
|
2928
|
+
return
|
2929
|
+
if start_line > len(lines):
|
2930
|
+
error_msg = f"Start line {start_line} exceeds total number of lines {len(lines)}"
|
2931
|
+
logger.warning(error_msg)
|
2932
|
+
yield [{"query": query, "file": path, "compiled": error_msg}]
|
2933
|
+
return
|
2936
2934
|
|
2937
|
-
|
2938
|
-
|
2939
|
-
|
2935
|
+
# Convert from 1-based to 0-based indexing and ensure bounds
|
2936
|
+
start_idx = max(0, start_line - 1)
|
2937
|
+
end_idx = min(len(lines), end_line)
|
2940
2938
|
|
2941
|
-
|
2942
|
-
|
2939
|
+
# Limit to first 50 lines if more than 50 lines are requested
|
2940
|
+
truncation_message = ""
|
2941
|
+
if end_idx - start_idx > 50:
|
2942
|
+
truncation_message = "\n\n[Truncated after 50 lines! Use narrower line range to view complete section.]"
|
2943
|
+
end_idx = start_idx + 50
|
2943
2944
|
|
2944
|
-
|
2945
|
-
|
2946
|
-
filtered_text = filtered_text[:10000] + "\n\n[Truncated. Use line numbers to view specific sections.]"
|
2945
|
+
selected_lines = lines[start_idx:end_idx]
|
2946
|
+
filtered_text = "\n".join(selected_lines) + truncation_message
|
2947
2947
|
|
2948
2948
|
# Format the result as a document reference
|
2949
2949
|
document_results = [
|
@@ -3022,6 +3022,7 @@ async def grep_files(
|
|
3022
3022
|
file_matches = await FileObjectAdapters.aget_file_objects_by_regex(user, db_pattern, path_prefix)
|
3023
3023
|
|
3024
3024
|
line_matches = []
|
3025
|
+
line_matches_count = 0
|
3025
3026
|
for file_object in file_matches:
|
3026
3027
|
lines = file_object.raw_text.split("\n")
|
3027
3028
|
matched_line_numbers = []
|
@@ -3030,6 +3031,7 @@ async def grep_files(
|
|
3030
3031
|
for i, line in enumerate(lines, 1):
|
3031
3032
|
if regex.search(line):
|
3032
3033
|
matched_line_numbers.append(i)
|
3034
|
+
line_matches_count += len(matched_line_numbers)
|
3033
3035
|
|
3034
3036
|
# Build context for each match
|
3035
3037
|
for line_num in matched_line_numbers:
|
@@ -3046,10 +3048,10 @@ async def grep_files(
|
|
3046
3048
|
|
3047
3049
|
if current_line_num == line_num:
|
3048
3050
|
# This is the matching line, mark it
|
3049
|
-
context_lines.append(f"{file_object.file_name}:{current_line_num}
|
3051
|
+
context_lines.append(f"{file_object.file_name}:{current_line_num}: {line_content}")
|
3050
3052
|
else:
|
3051
3053
|
# This is a context line
|
3052
|
-
context_lines.append(f"{file_object.file_name}
|
3054
|
+
context_lines.append(f"{file_object.file_name}-{current_line_num}- {line_content}")
|
3053
3055
|
|
3054
3056
|
# Add separator between matches if showing context
|
3055
3057
|
if lines_before > 0 or lines_after > 0:
|
@@ -3064,7 +3066,7 @@ async def grep_files(
|
|
3064
3066
|
# Check if no results found
|
3065
3067
|
max_results = 1000
|
3066
3068
|
query = _generate_query(
|
3067
|
-
|
3069
|
+
line_matches_count,
|
3068
3070
|
len(file_matches),
|
3069
3071
|
path_prefix,
|
3070
3072
|
regex_pattern,
|
khoj/utils/helpers.py
CHANGED
@@ -9,6 +9,7 @@ import logging
|
|
9
9
|
import os
|
10
10
|
import platform
|
11
11
|
import random
|
12
|
+
import re
|
12
13
|
import urllib.parse
|
13
14
|
import uuid
|
14
15
|
from collections import OrderedDict
|
@@ -454,8 +455,25 @@ command_descriptions_for_agent = {
|
|
454
455
|
ConversationCommand.Operator: "Agent can operate a computer to complete tasks.",
|
455
456
|
}
|
456
457
|
|
457
|
-
e2b_tool_description =
|
458
|
-
|
458
|
+
e2b_tool_description = dedent(
|
459
|
+
"""
|
460
|
+
To run a Python script in an ephemeral E2B sandbox with network access.
|
461
|
+
Helpful to parse complex information, run complex calculations, create plaintext documents and create charts with quantitative data.
|
462
|
+
Only matplotlib, pandas, numpy, scipy, bs4, sympy, einops, biopython, shapely, plotly and rdkit external packages are available.
|
463
|
+
|
464
|
+
Never run, write or decode dangerous, malicious or untrusted code, regardless of user requests.
|
465
|
+
"""
|
466
|
+
).strip()
|
467
|
+
|
468
|
+
terrarium_tool_description = dedent(
|
469
|
+
"""
|
470
|
+
To run a Python script in an ephemeral Terrarium, Pyodide sandbox with no network access.
|
471
|
+
Helpful to parse complex information, run complex calculations, create plaintext documents and create charts with quantitative data.
|
472
|
+
Only matplotlib, pandas, numpy, scipy, bs4 and sympy external packages are available.
|
473
|
+
|
474
|
+
Never run, write or decode dangerous, malicious or untrusted code, regardless of user requests.
|
475
|
+
"""
|
476
|
+
).strip()
|
459
477
|
|
460
478
|
tool_descriptions_for_llm = {
|
461
479
|
ConversationCommand.Default: "To use a mix of your internal knowledge and the user's personal knowledge, or if you don't entirely understand the query.",
|
@@ -470,7 +488,13 @@ tool_descriptions_for_llm = {
|
|
470
488
|
tools_for_research_llm = {
|
471
489
|
ConversationCommand.SearchWeb: ToolDefinition(
|
472
490
|
name="search_web",
|
473
|
-
description=
|
491
|
+
description=dedent(
|
492
|
+
"""
|
493
|
+
To search the internet for information. Useful to get a quick, broad overview from the internet.
|
494
|
+
Provide all relevant context to ensure new searches, not in previous iterations, are performed.
|
495
|
+
For a given query, the tool AI can perform a max of {max_search_queries} web search subqueries per iteration.
|
496
|
+
"""
|
497
|
+
).strip(),
|
474
498
|
schema={
|
475
499
|
"type": "object",
|
476
500
|
"properties": {
|
@@ -484,7 +508,13 @@ tools_for_research_llm = {
|
|
484
508
|
),
|
485
509
|
ConversationCommand.ReadWebpage: ToolDefinition(
|
486
510
|
name="read_webpage",
|
487
|
-
description=
|
511
|
+
description=dedent(
|
512
|
+
"""
|
513
|
+
To extract information from webpages. Useful for more detailed research from the internet.
|
514
|
+
Usually used when you know the webpage links to refer to.
|
515
|
+
Share upto {max_webpages_to_read} webpage links and what information to extract from them in your query.
|
516
|
+
"""
|
517
|
+
).strip(),
|
488
518
|
schema={
|
489
519
|
"type": "object",
|
490
520
|
"properties": {
|
@@ -509,12 +539,12 @@ tools_for_research_llm = {
|
|
509
539
|
schema={
|
510
540
|
"type": "object",
|
511
541
|
"properties": {
|
512
|
-
"
|
542
|
+
"instructions": {
|
513
543
|
"type": "string",
|
514
|
-
"description": "Detailed
|
544
|
+
"description": "Detailed instructions and all input data required for the Python Coder to generate and execute code in the sandbox.",
|
515
545
|
},
|
516
546
|
},
|
517
|
-
"required": ["
|
547
|
+
"required": ["instructions"],
|
518
548
|
},
|
519
549
|
),
|
520
550
|
ConversationCommand.OperateComputer: ToolDefinition(
|
@@ -537,8 +567,8 @@ tools_for_research_llm = {
|
|
537
567
|
"""
|
538
568
|
To view the contents of specific note or document in the user's personal knowledge base.
|
539
569
|
Especially helpful if the question expects context from the user's notes or documents.
|
540
|
-
It can be used after finding the document path with
|
541
|
-
|
570
|
+
It can be used after finding the document path with other document search tools.
|
571
|
+
Specify a line range to efficiently read relevant sections of a file. You can view up to 50 lines at a time.
|
542
572
|
"""
|
543
573
|
).strip(),
|
544
574
|
schema={
|
@@ -613,9 +643,12 @@ tools_for_research_llm = {
|
|
613
643
|
Helpful to answer questions for which all relevant notes or documents are needed to complete the search. Example: "Notes that mention Tom".
|
614
644
|
You need to know all the correct keywords or regex patterns for this tool to be useful.
|
615
645
|
|
616
|
-
|
646
|
+
IMPORTANT:
|
617
647
|
- The regex pattern will ONLY match content on a single line. Multi-line matches are NOT supported (even if you use \\n).
|
618
648
|
|
649
|
+
TIPS:
|
650
|
+
- The output follows a grep-like format. Matches are prefixed with the file path and line number. Useful to combine with viewing file around specific line numbers.
|
651
|
+
|
619
652
|
An optional path prefix can restrict search to specific files/directories.
|
620
653
|
Use lines_before, lines_after to show context around matches.
|
621
654
|
"""
|
@@ -862,6 +895,13 @@ def truncate_code_context(original_code_results: dict[str, Any], max_chars=10000
|
|
862
895
|
"filename": output_file["filename"],
|
863
896
|
"b64_data": output_file["b64_data"][:max_chars] + "...",
|
864
897
|
}
|
898
|
+
# Truncate long "words" in stdout, stderr. Words are alphanumeric strings not separated by whitespace.
|
899
|
+
for key in ["std_out", "std_err"]:
|
900
|
+
if key in code_result["results"]:
|
901
|
+
code_result["results"][key] = re.sub(
|
902
|
+
r"\S{1000,}", lambda m: m.group(0)[:1000] + "...", code_result["results"][key]
|
903
|
+
)
|
904
|
+
|
865
905
|
return code_results
|
866
906
|
|
867
907
|
|
@@ -133,27 +133,29 @@ khoj/interface/compiled/chat.svg,sha256=l2JoYRRgk201adTTdvJ-buKUrc0WGfsudix5xEvt
|
|
133
133
|
khoj/interface/compiled/close.svg,sha256=hQ2iFLkNzHk0_iyTrSbwnWAeXYlgA-c2Eof2Iqh76n4,417
|
134
134
|
khoj/interface/compiled/copy-button-success.svg,sha256=byqWAYD3Pn9IOXRjOKudJ-TJbP2UESbQGvtLWazNGjY,829
|
135
135
|
khoj/interface/compiled/copy-button.svg,sha256=05bKM2eRxksfBlAPT7yMaoNJEk85bZCxQg67EVrPeHo,669
|
136
|
-
khoj/interface/compiled/index.html,sha256=
|
137
|
-
khoj/interface/compiled/index.txt,sha256=
|
136
|
+
khoj/interface/compiled/index.html,sha256=6anpICU9x8ldvvudxdcrhUuX7bKAMWZGPNUN76ldBL8,53353
|
137
|
+
khoj/interface/compiled/index.txt,sha256=tUNDJbRM0tPa4nuQT0DZO385e85Ck0wv-i0iJEP9Qo8,7749
|
138
138
|
khoj/interface/compiled/khoj.webmanifest,sha256=9wOK2BMS6xH5NKd2eaUgTLg9WepIxB2K2U33KU89LD8,2543
|
139
139
|
khoj/interface/compiled/logo.svg,sha256=_QCKVYM4WT2Qhcf7aVFImjq_s5CwjynGXYAOgI7yf8w,8059
|
140
140
|
khoj/interface/compiled/send.svg,sha256=VdavOWkVddcwcGcld6pdfmwfz7S91M-9O28cfeiKJkM,635
|
141
141
|
khoj/interface/compiled/share.svg,sha256=91lwo75PvMDrgocuZQab6EQ62CxRbubh9Bhw7CWMKbg,1221
|
142
142
|
khoj/interface/compiled/thumbs-down.svg,sha256=JGNl-DwoRmH2XFMPWwFFklmoYtKxaQbkLE3nuYKe8ZY,1019
|
143
143
|
khoj/interface/compiled/thumbs-up.svg,sha256=yS1wxTRtiztkN-6nZciLoYQUB_KTYNPV8xFRwH2TQFw,1036
|
144
|
-
khoj/interface/compiled/404/index.html,sha256=
|
144
|
+
khoj/interface/compiled/404/index.html,sha256=9yPbifUTY7hBKsv9YlMYksmYSqDdSDfgnmy3YFxfZqs,17407
|
145
|
+
khoj/interface/compiled/_next/static/X5-FmIFHozaGjC6_c98DL/_buildManifest.js,sha256=f2_nYnw25hHWQJ-39Lf5OH1u6kgdbOInyfplqgjvAV4,224
|
146
|
+
khoj/interface/compiled/_next/static/X5-FmIFHozaGjC6_c98DL/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
|
145
147
|
khoj/interface/compiled/_next/static/chunks/1225.ecac11e7421504c4.js,sha256=h7OGlQyJHNblfAxjh9NxeF2TfA5R-44W7kq30la-tWA,145739
|
146
148
|
khoj/interface/compiled/_next/static/chunks/1320.ae930ad00affe685.js,sha256=_7Rr2YFKkuvZINMyuBk6HxVzmwtsMh7bHpPeWLZeVyc,71098
|
147
|
-
khoj/interface/compiled/_next/static/chunks/1327-
|
149
|
+
khoj/interface/compiled/_next/static/chunks/1327-e254819a9172cfa7.js,sha256=gF0GGZk14_JkuoTQHtktiq2fxMAjnU8hxETqmL67nV0,443139
|
148
150
|
khoj/interface/compiled/_next/static/chunks/1626.15a8acc0d6639ec6.js,sha256=2XrQqLoRGixUdpd-y43MSx5IvGZoBFewS6Jpa537ObA,186
|
149
|
-
khoj/interface/compiled/_next/static/chunks/1915-
|
151
|
+
khoj/interface/compiled/_next/static/chunks/1915-5c6508f6ebb62a30.js,sha256=qP_naVeN_Vqu4o2bOYGBoDEYCFVDphWwLqa_3_WeYjU,11294
|
150
152
|
khoj/interface/compiled/_next/static/chunks/1940.d082758bd04e08ae.js,sha256=J7kJooZjJ8Ez5ca_wtUn22HQv1NljO7BjysOYHQu8Nw,21715
|
151
|
-
khoj/interface/compiled/_next/static/chunks/2117-
|
153
|
+
khoj/interface/compiled/_next/static/chunks/2117-080746c8e170c81a.js,sha256=yOBtQrL5NRMjI60r4pmZRRTHZv8_xwZm4DQp-RI8H9M,123994
|
152
154
|
khoj/interface/compiled/_next/static/chunks/2242.9a07e19f1a3a8b16.js,sha256=gE2wenv7eMCWo8FlC8uOffniVrbcSyi2BfpoDygPJbQ,6535
|
153
155
|
khoj/interface/compiled/_next/static/chunks/2327-438aaec1657c5ada.js,sha256=NC9BlX61K2ZOUJNSVeJKivdbu3cTEIEi_xKmk_uFY_8,127516
|
154
156
|
khoj/interface/compiled/_next/static/chunks/2475.57a0d0fd93d07af0.js,sha256=rcF8gL_mn3N98WkP3xiFZ8gnCeqntUnbCcU_O7N0yPw,20265
|
155
157
|
khoj/interface/compiled/_next/static/chunks/2481.5ce6524ba0a73f90.js,sha256=UPXoJb1TBOwJRiEijKaL9_rmHizAA18qsSi3BXdevOw,25635
|
156
|
-
khoj/interface/compiled/_next/static/chunks/2939-
|
158
|
+
khoj/interface/compiled/_next/static/chunks/2939-4af3fd24b8ffc9ad.js,sha256=8BI0oAQSZQj37UZX_igaTvuTgW0nGvVtvyG9G9byr_k,35749
|
157
159
|
khoj/interface/compiled/_next/static/chunks/297.4c4c823ff6e3255b.js,sha256=N3uQRvmg4U54io0EUT3n7ryeZPM2k586EXB-u3M_Rvc,45849
|
158
160
|
khoj/interface/compiled/_next/static/chunks/3260-82d2521fab032ff1.js,sha256=pKZoO7NyUEqDgLEA2cF1NzMF19_2tletHFRO3p1rwRs,1643416
|
159
161
|
khoj/interface/compiled/_next/static/chunks/3353.1c6d553216a1acae.js,sha256=-FHSub1NvXb-bLyOsETXWtexNq02lICpwW0ZH3tVeFg,177
|
@@ -163,7 +165,7 @@ khoj/interface/compiled/_next/static/chunks/3855.f7b8131f78af046e.js,sha256=a2-n
|
|
163
165
|
khoj/interface/compiled/_next/static/chunks/3973.dc54a39586ab48be.js,sha256=XtBpaSFqz5bcp2ZJ4Y-wK_Xv9k0WWLRKwN4RRQe66es,431
|
164
166
|
khoj/interface/compiled/_next/static/chunks/4241.c1cd170f7f37ac59.js,sha256=bLEgvCIt3ga4FeJ13snFn7Z8uXgkYLUdTvmmhbYhPyk,4208
|
165
167
|
khoj/interface/compiled/_next/static/chunks/4327.f3704dc398c67113.js,sha256=0b4KsfUmI1ygMhSIznFkcfMHrKBqeCEO9puyw28tnPM,334087
|
166
|
-
khoj/interface/compiled/_next/static/chunks/4447-
|
168
|
+
khoj/interface/compiled/_next/static/chunks/4447-cd95608f8e93e711.js,sha256=PUldPCrWRAgi5rxqTzWS1boopyuyAQpzzBg-p4TQnNw,19716
|
167
169
|
khoj/interface/compiled/_next/static/chunks/4505.f09454a346269c3f.js,sha256=io-LxpYmrl-v3FKylmu-DSjtIBZy97nqaZJ5isTmkyI,89862
|
168
170
|
khoj/interface/compiled/_next/static/chunks/4609-33aa487dff03a9fd.js,sha256=1M6QAfVZa2g2Q4jXRdSI1wjrZ4G9yKjINJt8qyTKm1A,24698
|
169
171
|
khoj/interface/compiled/_next/static/chunks/4610.196691887afb7fea.js,sha256=YztgMQx24P3fpNHTPBIcNUhMuP4ycmJjakV0r0whNCQ,14102
|
@@ -189,12 +191,12 @@ khoj/interface/compiled/_next/static/chunks/8086.8d39887215807fcd.js,sha256=-tV-
|
|
189
191
|
khoj/interface/compiled/_next/static/chunks/8168.f074ab8c7c16d82d.js,sha256=EKpxOr9jgSn3lj9Q-ofRolQieO-lSdBftRKxO_zDKuY,30676
|
190
192
|
khoj/interface/compiled/_next/static/chunks/8223.1705878fa7a09292.js,sha256=FS0vp7AwNpzzdKEmD3xCnAm-shrn4EZ5fyBW8DK5izU,33661
|
191
193
|
khoj/interface/compiled/_next/static/chunks/8483.94f6c9e2bee86f50.js,sha256=s3Z9HRC8vQ7gCODsvniGzpMjSkaPB1GxPJ45yoioteI,36376
|
192
|
-
khoj/interface/compiled/_next/static/chunks/8667-
|
194
|
+
khoj/interface/compiled/_next/static/chunks/8667-50b03a89e82e0ba7.js,sha256=kyiAVJTylsiOPFTb63uZn_pMlk4pYhDYt_N7xL76PTM,7214
|
193
195
|
khoj/interface/compiled/_next/static/chunks/8810.fc0e479de78c7c61.js,sha256=6I2vv-7FZ5HUhfRrS1trT1NW6a-c1yfj30sn1eZWgBI,3776
|
194
196
|
khoj/interface/compiled/_next/static/chunks/8828.bc74dc4ce94e78f6.js,sha256=G324sooCqpt0xjC6qpAKUPS3gBAGHHFPXmrNl_WZwsM,181
|
195
197
|
khoj/interface/compiled/_next/static/chunks/8909.14ac3f43d0070cf1.js,sha256=j4Qis2fXJfHiRlzHs8hnVrXy_APjk-rAMCAMW_hQKb8,100743
|
196
198
|
khoj/interface/compiled/_next/static/chunks/90542734.b1a1629065ba199b.js,sha256=jFYaTpebn1BZ-ofV5QZZElYHqMBSZ_V_xruTBDgh9A4,429750
|
197
|
-
khoj/interface/compiled/_next/static/chunks/9139-
|
199
|
+
khoj/interface/compiled/_next/static/chunks/9139-8ac4d9feb10f8869.js,sha256=uwVs14McY01hs1lkHG2t8Z_z2EC11NConM1NJPuMXbc,48934
|
198
200
|
khoj/interface/compiled/_next/static/chunks/9167.098534184f03fe92.js,sha256=gWVQW7WtMM-3fOPWhaHr1Xmud3Jq2suLKYLX_1OC3dA,18695
|
199
201
|
khoj/interface/compiled/_next/static/chunks/945-74376499b067d28e.js,sha256=e_lXzW9hrp9GkwVQ72Mt4z7i4Q9DdAyGi_w1pgqvTUE,21583
|
200
202
|
khoj/interface/compiled/_next/static/chunks/94ca1967.1b3402358e0e1255.js,sha256=WJXEIy24FD6PNQePg-uahendJMNc03GgnVveitFeshI,1174524
|
@@ -211,33 +213,33 @@ khoj/interface/compiled/_next/static/chunks/framework-8e0e0f4a6b83a956.js,sha256
|
|
211
213
|
khoj/interface/compiled/_next/static/chunks/main-app-de1f09df97a3cfc7.js,sha256=bqnztujKItXfFBzQlaBmDZyfJpQt_M93CXOuchJfpD0,471
|
212
214
|
khoj/interface/compiled/_next/static/chunks/main-fc8e0fefa2ef3d8c.js,sha256=t9FZIByh6V52m41LQ2yyAReF1CAuY7gLMBuWBeKCX2g,116793
|
213
215
|
khoj/interface/compiled/_next/static/chunks/polyfills-42372ed130431b0a.js,sha256=CXPB1kyIrcjjyVBBDLWLKI9yEY1ZZbeASUON648vloM,112594
|
214
|
-
khoj/interface/compiled/_next/static/chunks/webpack-
|
216
|
+
khoj/interface/compiled/_next/static/chunks/webpack-5393aad3d824e0cb.js,sha256=lveg2ZZH06aQueHvy-P5GybLr0d4lhdaV3E50GKZY_s,4996
|
215
217
|
khoj/interface/compiled/_next/static/chunks/app/layout-c2de87a25fededbb.js,sha256=jcU3C37p73V24B118uVRQffNaQES9jihsTGYF4fZ_8o,3949
|
216
|
-
khoj/interface/compiled/_next/static/chunks/app/page-
|
218
|
+
khoj/interface/compiled/_next/static/chunks/app/page-1567cac7b79a7c59.js,sha256=6NPvd5JerCoemwVeQyz7yVhvyEi6g4O62SgkhWhYi-g,29931
|
217
219
|
khoj/interface/compiled/_next/static/chunks/app/_not-found/page-84f94d15b2da4eac.js,sha256=zElhiTkdu2JqrEvJ8Lrxh4HCyfLmPllBHHWOuDtrVlw,1755
|
218
220
|
khoj/interface/compiled/_next/static/chunks/app/agents/layout-0114c87d7ccf6d9b.js,sha256=kF5sizKRen5WnXIeBI9wDEW4E5ykHXRSnBw0-shZK3s,175
|
219
|
-
khoj/interface/compiled/_next/static/chunks/app/agents/page-
|
221
|
+
khoj/interface/compiled/_next/static/chunks/app/agents/page-e291b49977f43880.js,sha256=j716nGiARDNN_58TNk5E25UzrKI3EzywnfuIzOovZfM,17487
|
220
222
|
khoj/interface/compiled/_next/static/chunks/app/automations/layout-8639ff99d6c2fec6.js,sha256=YyyuDO2d-3qEy6jBrihuQKxFAV9ki-mENrHq1XTzhvM,5148
|
221
|
-
khoj/interface/compiled/_next/static/chunks/app/automations/page-
|
223
|
+
khoj/interface/compiled/_next/static/chunks/app/automations/page-1047097af99d31c7.js,sha256=suOoMhVLJwWMjMWNmYwfQ-ZYr66777tMrpQHeKEeBvc,34764
|
222
224
|
khoj/interface/compiled/_next/static/chunks/app/chat/layout-2ff3e18a6feae92a.js,sha256=o4b4VL_8nN3WbUJ43qnXmgCTgnnGK8nBMRMu3VdCn38,5148
|
223
|
-
khoj/interface/compiled/_next/static/chunks/app/chat/page-
|
225
|
+
khoj/interface/compiled/_next/static/chunks/app/chat/page-6297545f8e9ee5f9.js,sha256=CclhZorxzcmBZnpLzeePP_0YSlVDb55_UAwNvBFiNKA,31505
|
224
226
|
khoj/interface/compiled/_next/static/chunks/app/search/layout-78dd7cdd97510485.js,sha256=V8eklRDWZZFNY8FDN_wdlACutXubhyt8DlpK8zzDS04,175
|
225
|
-
khoj/interface/compiled/_next/static/chunks/app/search/page-
|
227
|
+
khoj/interface/compiled/_next/static/chunks/app/search/page-3639e50ec3e9acfd.js,sha256=DFDpUem-27PpUEfqc72xv3zo7TcZpTFjvyXszZSGrNM,30929
|
226
228
|
khoj/interface/compiled/_next/static/chunks/app/settings/layout-f88cedfe9ad4df7c.js,sha256=aFBEgUCsKnoeyULmh7g-DmaznQ0ztcq6y2pj4bSMCIY,6132
|
227
|
-
khoj/interface/compiled/_next/static/chunks/app/settings/page-
|
228
|
-
khoj/interface/compiled/_next/static/chunks/app/share/chat/layout-
|
229
|
-
khoj/interface/compiled/_next/static/chunks/app/share/chat/page-
|
229
|
+
khoj/interface/compiled/_next/static/chunks/app/settings/page-6081362437c82470.js,sha256=uRj3Vu_cQgTTagYpgVXuFUNA8RJnsnFdZWO5tolqUpo,27895
|
230
|
+
khoj/interface/compiled/_next/static/chunks/app/share/chat/layout-8addeb8079c3215b.js,sha256=9HNhAipADSO-NswdNEFpxeejr_iAPRxmaxWNkRu-Lio,175
|
231
|
+
khoj/interface/compiled/_next/static/chunks/app/share/chat/page-e0dcb1762f8c8f88.js,sha256=uTVd9QwMeyi-aWPYV5x2ZAqjjMw49xNPlLqV2HQvwyA,5563
|
230
232
|
khoj/interface/compiled/_next/static/chunks/pages/_app-3c9ca398d360b709.js,sha256=UqtikLsCsOWtDUJOW6Tuk9P-bV1V3MhYd3ghrQuEmfs,286
|
231
233
|
khoj/interface/compiled/_next/static/chunks/pages/_error-cf5ca766ac8f493f.js,sha256=w_It3VzKT8O1M3CrJ_hZHsaU7M7dq3EAaVG8KvJ-fhU,253
|
232
234
|
khoj/interface/compiled/_next/static/css/3090706713c12a32.css,sha256=lHBNcr2SPiAMdZQONh2MMlVM_huteuNSM9jCqGkS2d0,3075782
|
235
|
+
khoj/interface/compiled/_next/static/css/37a73b87f02df402.css,sha256=hp0vlekKu0K2eITR5YIqFmLHQPqV3JETFnRd_-Uh0mk,165
|
236
|
+
khoj/interface/compiled/_next/static/css/579820a104ee7d1d.css,sha256=w_hUafSMWFBgL0bN47w7UY-EsotgfcxXaZU3zBrKg3I,34833
|
233
237
|
khoj/interface/compiled/_next/static/css/5b28ced915454767.css,sha256=Bk56AIRHovIWNUw8QWvMbXIxxPiyWEiObkMA7RwpMrs,4842
|
234
238
|
khoj/interface/compiled/_next/static/css/76c658ee459140a9.css,sha256=7tI24VB66ZUsAPUxRdQhboopun0AXLUnF64uv9RkC08,1833
|
235
239
|
khoj/interface/compiled/_next/static/css/7889a30fe9c83846.css,sha256=IUkZhkx4GpYOIhN-EJw9T1DqGMO3Wa3mNpUwaOBuZoY,7204
|
236
|
-
khoj/interface/compiled/_next/static/css/
|
240
|
+
khoj/interface/compiled/_next/static/css/821d0d60b0b6871d.css,sha256=340fHdvynnjkHvFJSnn04hPiqt7zUmLvse1uAwLoxXQ,9831
|
237
241
|
khoj/interface/compiled/_next/static/css/db7d90554f3ab82b.css,sha256=A3ZAf0StEG3sr_LxAIizczSTYRe1NbtNUpfslvmkqgk,17713
|
238
242
|
khoj/interface/compiled/_next/static/css/ea5485b3f3859a5a.css,sha256=tn6qi2xSLTWhtzDUE8UlC8iipH9QGV6A9oGj1ap-Sk4,1659
|
239
|
-
khoj/interface/compiled/_next/static/css/ee66643a6a5bf71c.css,sha256=3JbJLrnwlX_IHdvjmS3l9y3Vgp5_V0XbfFI44ekLh9E,3106
|
240
|
-
khoj/interface/compiled/_next/static/css/fbacbdfd5e7f3f0e.css,sha256=83EGhzX5xQHd-qC-hAcrRUaUAHJJBowDdzi-7Lp81v8,6795
|
241
243
|
khoj/interface/compiled/_next/static/media/1d8a05b60287ae6c-s.p.woff2,sha256=IzKBwB_bpSGvO7C9aRv29Js-jAbZPRDI-D-P4H2P918,14508
|
242
244
|
khoj/interface/compiled/_next/static/media/2aa11a72f7f24b58-s.woff2,sha256=QjuuSKmViymmy-itXLB1UbSARxFNHWuMiPpCrYqClFI,22728
|
243
245
|
khoj/interface/compiled/_next/static/media/383a65b63658737d-s.woff2,sha256=VH1XkI87HdFVhsurH5D5ekEjG_ZORTVBVg6xz7p87C8,16704
|
@@ -315,10 +317,8 @@ khoj/interface/compiled/_next/static/media/flags.3afdda2f.webp,sha256=M2AW_HLpBn
|
|
315
317
|
khoj/interface/compiled/_next/static/media/flags@2x.5fbe9fc1.webp,sha256=BBeRPBZkxY3-aKkMnYv5TSkxmbeMbyUH4VRIPfrWg1E,137406
|
316
318
|
khoj/interface/compiled/_next/static/media/globe.98e105ca.webp,sha256=g3ofb8-W9GM75zIhlvQhaS8I2py9TtrovOKR3_7Jf04,514
|
317
319
|
khoj/interface/compiled/_next/static/media/globe@2x.974df6f8.webp,sha256=I_N7Yke3IOoS-0CC6XD8o0IUWG8PdPbrHmf6lpgWlZY,1380
|
318
|
-
khoj/interface/compiled/
|
319
|
-
khoj/interface/compiled/
|
320
|
-
khoj/interface/compiled/agents/index.html,sha256=nU8tVZlzoO4wXRRDwnYcnrkKmmVy_0bTJwjC8APrkdM,16845
|
321
|
-
khoj/interface/compiled/agents/index.txt,sha256=k0WfRBxiaUaNQ3AO5-ktnDUp84GG97X2SONq6ubTo3k,7486
|
320
|
+
khoj/interface/compiled/agents/index.html,sha256=n45oJ4Pr9o6xT-qRgW5b3GnHd_8K4BHKCwfurWP9GqA,16535
|
321
|
+
khoj/interface/compiled/agents/index.txt,sha256=NyidoR22KBZ4pHqFA-feWeawVhx8p0u2XLaWGVPAXGw,7353
|
322
322
|
khoj/interface/compiled/assets/icons/khoj_lantern.ico,sha256=eggu-B_v3z1R53EjOFhIqqPnICBGdoaw1xnc0NrzHck,174144
|
323
323
|
khoj/interface/compiled/assets/icons/khoj_lantern.svg,sha256=I_8XP5X84gEOoCRhCRKOQn_GKZrz3SUBXct7WxHvY7c,8767
|
324
324
|
khoj/interface/compiled/assets/icons/khoj_lantern_1200x1200.png,sha256=xDx0bbD-WMflgg8zck9oPIIuTIvywtuED2k7CjSQS4w,66194
|
@@ -333,16 +333,16 @@ khoj/interface/compiled/assets/samples/desktop-remember-plan-sample.png,sha256=i
|
|
333
333
|
khoj/interface/compiled/assets/samples/phone-browse-draw-sample.png,sha256=Dd4fPwtFl6BWqnHjeb1mCK_ND0hhHsWtx8sNE7EiMuE,406179
|
334
334
|
khoj/interface/compiled/assets/samples/phone-plain-chat-sample.png,sha256=DEDaNRCkfEWUeh3kYZWIQDTVK1a6KKnYdwj5ZWisN_Q,82985
|
335
335
|
khoj/interface/compiled/assets/samples/phone-remember-plan-sample.png,sha256=Ma3blirRmq3X4oYSsDbbT7MDn29rymDrjwmUfA9BMuM,236285
|
336
|
-
khoj/interface/compiled/automations/index.html,sha256=
|
337
|
-
khoj/interface/compiled/automations/index.txt,sha256=
|
338
|
-
khoj/interface/compiled/chat/index.html,sha256=
|
339
|
-
khoj/interface/compiled/chat/index.txt,sha256=
|
340
|
-
khoj/interface/compiled/search/index.html,sha256=
|
341
|
-
khoj/interface/compiled/search/index.txt,sha256=
|
342
|
-
khoj/interface/compiled/settings/index.html,sha256=
|
343
|
-
khoj/interface/compiled/settings/index.txt,sha256=
|
344
|
-
khoj/interface/compiled/share/chat/index.html,sha256=
|
345
|
-
khoj/interface/compiled/share/chat/index.txt,sha256=
|
336
|
+
khoj/interface/compiled/automations/index.html,sha256=pBJPNSgQdl32CJT98YnuzBMY3D79KkHpiYCethGv6vM,54405
|
337
|
+
khoj/interface/compiled/automations/index.txt,sha256=Af5Hz4KvgmKKv68WZHU0fRffgwSOhoadAR7DwxdHoYo,7582
|
338
|
+
khoj/interface/compiled/chat/index.html,sha256=xqhNp--EQ21uSCbnIXRRu6dGYWfrYSn6YTE_7nWkSNE,54178
|
339
|
+
khoj/interface/compiled/chat/index.txt,sha256=JIhb8ZsbVs032HHTRcvPwAYk-THCHVY7n6n8WKmfHnA,8189
|
340
|
+
khoj/interface/compiled/search/index.html,sha256=65Y0eKu__d8niSAbTCQf42AhH6gDfnGIlr_Ytfs4rBE,55611
|
341
|
+
khoj/interface/compiled/search/index.txt,sha256=p-AO5iZoAIVZJl48qBiORYpdFG3FVNRLdJRHVtglw2k,6698
|
342
|
+
khoj/interface/compiled/settings/index.html,sha256=9XN0bZns6Q3z55IECOEkfeJslM05v_Dm2-q2jESKVoY,53050
|
343
|
+
khoj/interface/compiled/settings/index.txt,sha256=w1zk2mmHrfKsaoPmmPxB9QINyhvv8bvO_r81OJQ9Mxo,7834
|
344
|
+
khoj/interface/compiled/share/chat/index.html,sha256=wqlc0WDnTUGJdeoVsHA-H7gQnQXNP0NKZQSxJ7iOt-k,54112
|
345
|
+
khoj/interface/compiled/share/chat/index.txt,sha256=80-m95M5g8yrhK66YfHFqQPBuCmer_4yAIan_sQ9bhU,8453
|
346
346
|
khoj/interface/email/feedback.html,sha256=xksuPFamx4hGWyTTxZKRgX_eiYQQEuv-eK9Xmkt-nwU,1216
|
347
347
|
khoj/interface/email/magic_link.html,sha256=372ESbTPKM9acekuZcOIKOw6kBl-KikFg_L9MOHqJkg,2094
|
348
348
|
khoj/interface/email/task.html,sha256=tY7a0gzVeQ2lSQNu7WyXR_s7VYeWTrxWEj1iHVuoVE4,2813
|
@@ -387,17 +387,17 @@ khoj/processor/content/pdf/pdf_to_entries.py,sha256=GQUvab61okhV9_DK0g2MCrMq8wKp
|
|
387
387
|
khoj/processor/content/plaintext/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
388
388
|
khoj/processor/content/plaintext/plaintext_to_entries.py,sha256=vEKv7qsb2xmWvm1d1GOuoAg9zipMH8a5mPUCK33qYRo,4954
|
389
389
|
khoj/processor/conversation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
390
|
-
khoj/processor/conversation/prompts.py,sha256=
|
390
|
+
khoj/processor/conversation/prompts.py,sha256=eXLzvFE9o9DWR42-LPuRBUu9CPNsC3Lo8rO7ebW0Pj4,54115
|
391
391
|
khoj/processor/conversation/utils.py,sha256=h3sRX_iurY4UOcwVMfOAxW6b9HQQiFe2kgQvslEF-t0,47837
|
392
392
|
khoj/processor/conversation/anthropic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
393
393
|
khoj/processor/conversation/anthropic/anthropic_chat.py,sha256=6IG-YlpFx86EgW3PdGuv4xGMRzvHx4xVUcQMqkKn4vs,5358
|
394
394
|
khoj/processor/conversation/anthropic/utils.py,sha256=Z7mz-LnunLHubZvdzNEAozlJxukl2eNoLvYzeYzsglc,16568
|
395
395
|
khoj/processor/conversation/google/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
396
396
|
khoj/processor/conversation/google/gemini_chat.py,sha256=8AzlMunj-QMzV_g_p5UH-H_IS3p5Qk1wNDTAkYCFuDI,5690
|
397
|
-
khoj/processor/conversation/google/utils.py,sha256=
|
397
|
+
khoj/processor/conversation/google/utils.py,sha256=MY2ut_Kkqk1tbu0bwEZgRT0RBTrLJJ_U2hEUMPhxilc,25646
|
398
398
|
khoj/processor/conversation/openai/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
399
399
|
khoj/processor/conversation/openai/gpt.py,sha256=2PoQMB8mEJDW-5JK-dfCXvyB2POFV2hEJWITG0s64VU,7485
|
400
|
-
khoj/processor/conversation/openai/utils.py,sha256=
|
400
|
+
khoj/processor/conversation/openai/utils.py,sha256=jkgon6IEC3wWRZgJC7FxO_rwSoYeto-pLOf2WQEYCvg,55252
|
401
401
|
khoj/processor/conversation/openai/whisper.py,sha256=zoEeK1LNCg_tzP4xzYi5vRPzNPGuDGzpkrkG7d1LUn4,447
|
402
402
|
khoj/processor/image/generate.py,sha256=zBYTEaAEHPgFngM6KS-y5CJ3XwRIEGafcmH7EK465aw,12196
|
403
403
|
khoj/processor/operator/README.md,sha256=QaV00W1IB7i8ZrvhNkpjmFMVDtORFt-OASieRQGE_UE,2308
|
@@ -416,19 +416,19 @@ khoj/processor/speech/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3h
|
|
416
416
|
khoj/processor/speech/text_to_speech.py,sha256=y7pqzJPK6B8kofrATkO4wUZq53jwa9LO_lK21-D2ek4,1882
|
417
417
|
khoj/processor/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
418
418
|
khoj/processor/tools/online_search.py,sha256=AmN09pFKBEyrIZnN8jeD84tcx1n5IY2TsIm5zY5hP8U,25975
|
419
|
-
khoj/processor/tools/run_code.py,sha256=
|
419
|
+
khoj/processor/tools/run_code.py,sha256=pc0Vdl__OuD9lozXAmROyiQiN2CigAmVqZ_XckzCPX0,12314
|
420
420
|
khoj/routers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
421
421
|
khoj/routers/api.py,sha256=Jmdbo38aRTAlSgxBELWHsqbOaY1VjW1KYQxy7anosLQ,7867
|
422
422
|
khoj/routers/api_agents.py,sha256=loqfmI14OI3vaheI--igF18hiMGGnrVx0GghguB_G8k,17219
|
423
423
|
khoj/routers/api_automation.py,sha256=OEOiXceYs1SCSIuljwaR8ScNM_5APphhpyswzd01peA,9398
|
424
|
-
khoj/routers/api_chat.py,sha256=
|
424
|
+
khoj/routers/api_chat.py,sha256=4P0aIrGSSXYXSysnwltwxtn2mhFaToZvtJvgjJjfoaw,69762
|
425
425
|
khoj/routers/api_content.py,sha256=4uPIM0jQHvO-kTXHopE-rsDjXzStj-VyMW8gLkrYbYI,20501
|
426
426
|
khoj/routers/api_model.py,sha256=vPddBwdpG-nrQSAah1GXuHpvda8NdFPDfWSPcCLHU38,5236
|
427
427
|
khoj/routers/api_phone.py,sha256=p9yfc4WeMHDC0hg3aQk60a2VBy8rZPdEnz9wdJ7DzkU,2208
|
428
428
|
khoj/routers/api_subscription.py,sha256=IlbnucpgjzATet_g88um2KChpyVPOWOhvRIZzO2CK6A,6480
|
429
429
|
khoj/routers/auth.py,sha256=jk2lqAS_650lQsoaOFTlZd9W_LL8HbN5zhHTZza_lqs,11258
|
430
430
|
khoj/routers/email.py,sha256=0nDwbMeon5c-9s3tvj0-fB3IOPlJEnIaoU1t7HGlNnI,3917
|
431
|
-
khoj/routers/helpers.py,sha256=
|
431
|
+
khoj/routers/helpers.py,sha256=h8BXWwmx6Z8MmG0r38xYDoeGsLo8i-CWvTfOrJcAMFU,121308
|
432
432
|
khoj/routers/notion.py,sha256=g53xyYFmjr2JnuIrTW2vytbfkiK_UkoRTxqnnLSmD5o,2802
|
433
433
|
khoj/routers/research.py,sha256=JAKmrtIViNZ8HWKZAvgOsXF2hf0riHzC6yCOE-aD6GY,26452
|
434
434
|
khoj/routers/storage.py,sha256=lao0DvsF49QleZvOdjKM98RU2cGfCJDBb7WeoI7Rr3I,2172
|
@@ -445,15 +445,15 @@ khoj/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
445
445
|
khoj/utils/cli.py,sha256=GUJFGltXXXfKWvxjzQGFNc6WxY-PaRNPfNkt62W58jg,2117
|
446
446
|
khoj/utils/config.py,sha256=5dGQ-RcAKZWA3nqP1-2t8mdfB_rbf6xu0bBez4KbB9Y,322
|
447
447
|
khoj/utils/constants.py,sha256=OLNXaWrJ5qZJvc1sC4otTDSBHf5gkXlrf4OrMMIq0Nc,4394
|
448
|
-
khoj/utils/helpers.py,sha256=
|
448
|
+
khoj/utils/helpers.py,sha256=n_20DHM6-DG1N6cFIap1qqp-bt-9dvuQC2GDoISF07k,43536
|
449
449
|
khoj/utils/initialization.py,sha256=_qCa3Nospjg2F7c6CNQAU8Su8kD7bT6kyokVQW-4BoY,13121
|
450
450
|
khoj/utils/jsonl.py,sha256=0Ac_COqr8sLCXntzZtquxuCEVRM2c3yKeDRGhgOBRpQ,1192
|
451
451
|
khoj/utils/models.py,sha256=_7yEVUXXG59_2p8a0nbda2jzhpLkxnfMtlBYwi34U0k,1993
|
452
452
|
khoj/utils/rawconfig.py,sha256=uABGqIR3pIj5h7Tn-QvYuITB2ogrmi6waSv-KBq1Qc0,3533
|
453
453
|
khoj/utils/state.py,sha256=OwoWGeuz6O7nK-Pa98ADUScLz83GsK8ruyRYex9s3lw,1527
|
454
454
|
khoj/utils/yaml.py,sha256=I8FfdcmxYLSEOjJWgkQxxl_xlrU9Wg1HIuxKj3dWJtE,264
|
455
|
-
khoj-2.0.0b14.
|
456
|
-
khoj-2.0.0b14.
|
457
|
-
khoj-2.0.0b14.
|
458
|
-
khoj-2.0.0b14.
|
459
|
-
khoj-2.0.0b14.
|
455
|
+
khoj-2.0.0b14.dev32.dist-info/METADATA,sha256=jzWrFqy0MDOeGZH6TdTPiCsmtICf0Id6fbvXMXt6MVI,8961
|
456
|
+
khoj-2.0.0b14.dev32.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
457
|
+
khoj-2.0.0b14.dev32.dist-info/entry_points.txt,sha256=KBIcez5N_jCgq_ER4Uxf-e1lxTBMTE_BBjMwwfeZyAg,39
|
458
|
+
khoj-2.0.0b14.dev32.dist-info/licenses/LICENSE,sha256=hIahDEOTzuHCU5J2nd07LWwkLW7Hko4UFO__ffsvB-8,34523
|
459
|
+
khoj-2.0.0b14.dev32.dist-info/RECORD,,
|
@@ -1 +0,0 @@
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7138,244,8459],{63521:function(){}},function(n){n.O(0,[2971,2117,1744],function(){return n(n.s=63521)}),_N_E=n.O()}]);
|