khoj 1.37.1.dev6__py3-none-any.whl → 1.37.1.dev12__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/migrations/0087_alter_aimodelapi_api_key.py +17 -0
- khoj/database/models/__init__.py +1 -1
- khoj/interface/compiled/404/index.html +2 -2
- khoj/interface/compiled/_next/static/chunks/{2327-0bbe3ee35f80659f.js → 2327-b21ecded25471e6c.js} +1 -1
- khoj/interface/compiled/_next/static/chunks/{8515-f305779d95dd5780.js → 8515-010dd769c584b672.js} +1 -1
- khoj/interface/compiled/_next/static/chunks/app/agents/{layout-5961c3717e1d8813.js → layout-948ca256650845ce.js} +1 -1
- khoj/interface/compiled/_next/static/chunks/app/agents/{page-0d31f76257d6ec11.js → page-df5446aa4fb82e1a.js} +1 -1
- khoj/interface/compiled/_next/static/chunks/app/automations/{page-c6180af69fc9c766.js → page-0a44416f9183aec0.js} +1 -1
- khoj/interface/compiled/_next/static/chunks/app/chat/{layout-3e25af7224d678a0.js → layout-603285e3b1400e74.js} +1 -1
- khoj/interface/compiled/_next/static/chunks/app/chat/{page-926ee054e844236a.js → page-50cb9b62b10b5f3d.js} +1 -1
- khoj/interface/compiled/_next/static/chunks/app/{page-df51e61295c4a9b5.js → page-aad371f66ac52191.js} +1 -1
- khoj/interface/compiled/_next/static/chunks/app/search/{layout-9ccd090dcc2aa58a.js → layout-d7f7528ff387fba5.js} +1 -1
- khoj/interface/compiled/_next/static/chunks/app/search/{page-098017fa7f6ba0bf.js → page-1df7b236b30620f7.js} +1 -1
- khoj/interface/compiled/_next/static/chunks/app/settings/{page-1ff027f4e0a5c468.js → page-3473bab693ef81b2.js} +1 -1
- khoj/interface/compiled/_next/static/chunks/app/share/chat/{layout-9cc742afcea0b421.js → layout-246d0e8125219fff.js} +1 -1
- khoj/interface/compiled/_next/static/chunks/app/share/chat/{page-ea29a4633737cb59.js → page-6f26fe7f2f7edc56.js} +1 -1
- khoj/interface/compiled/_next/static/chunks/{webpack-449ea2835ec65e75.js → webpack-1169ca6e9e7e6247.js} +1 -1
- khoj/interface/compiled/_next/static/css/37a73b87f02df402.css +1 -0
- khoj/interface/compiled/_next/static/css/f29752d6e1be7624.css +1 -0
- khoj/interface/compiled/_next/static/css/{0db53bacf81896f5.css → fca983d49c3dd1a3.css} +1 -1
- khoj/interface/compiled/agents/index.html +2 -2
- khoj/interface/compiled/agents/index.txt +3 -3
- 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 +3 -3
- khoj/interface/compiled/settings/index.html +2 -2
- khoj/interface/compiled/settings/index.txt +5 -5
- khoj/interface/compiled/share/chat/index.html +2 -2
- khoj/interface/compiled/share/chat/index.txt +3 -3
- khoj/processor/conversation/anthropic/anthropic_chat.py +8 -1
- khoj/processor/conversation/anthropic/utils.py +25 -10
- khoj/processor/conversation/google/gemini_chat.py +12 -1
- khoj/processor/conversation/google/utils.py +36 -5
- khoj/processor/conversation/openai/utils.py +3 -4
- khoj/routers/api.py +4 -0
- khoj/routers/helpers.py +13 -3
- khoj/utils/constants.py +2 -0
- khoj/utils/helpers.py +58 -2
- {khoj-1.37.1.dev6.dist-info → khoj-1.37.1.dev12.dist-info}/METADATA +1 -1
- {khoj-1.37.1.dev6.dist-info → khoj-1.37.1.dev12.dist-info}/RECORD +56 -55
- khoj/interface/compiled/_next/static/css/bb7ea98028b368f3.css +0 -1
- khoj/interface/compiled/_next/static/css/ee66643a6a5bf71c.css +0 -1
- /khoj/interface/compiled/_next/static/chunks/{1915-1943ee8a628b893c.js → 1915-ab4353eaca76f690.js} +0 -0
- /khoj/interface/compiled/_next/static/chunks/{2117-ce1f0a4598f5e4fe.js → 2117-f99825f0a867a42d.js} +0 -0
- /khoj/interface/compiled/_next/static/chunks/{4363-e6ac2203564d1a3b.js → 4363-4efaf12abe696251.js} +0 -0
- /khoj/interface/compiled/_next/static/chunks/{4447-e038b251d626c340.js → 4447-5d44807c40355b1a.js} +0 -0
- /khoj/interface/compiled/_next/static/chunks/{8667-8136f74e9a086fca.js → 8667-adbe6017a66cef10.js} +0 -0
- /khoj/interface/compiled/_next/static/chunks/{9259-640fdd77408475df.js → 9259-d8bcd9da9e80c81e.js} +0 -0
- /khoj/interface/compiled/_next/static/{dWV1ok4ndbQQtpEVqLZAh → mnJxv49O8dzkwTygquq43}/_buildManifest.js +0 -0
- /khoj/interface/compiled/_next/static/{dWV1ok4ndbQQtpEVqLZAh → mnJxv49O8dzkwTygquq43}/_ssgManifest.js +0 -0
- {khoj-1.37.1.dev6.dist-info → khoj-1.37.1.dev12.dist-info}/WHEEL +0 -0
- {khoj-1.37.1.dev6.dist-info → khoj-1.37.1.dev12.dist-info}/entry_points.txt +0 -0
- {khoj-1.37.1.dev6.dist-info → khoj-1.37.1.dev12.dist-info}/licenses/LICENSE +0 -0
@@ -3,6 +3,7 @@ import os
|
|
3
3
|
import random
|
4
4
|
from copy import deepcopy
|
5
5
|
from threading import Thread
|
6
|
+
from typing import Dict
|
6
7
|
|
7
8
|
from google import genai
|
8
9
|
from google.genai import errors as gerrors
|
@@ -23,6 +24,7 @@ from khoj.processor.conversation.utils import (
|
|
23
24
|
get_image_from_url,
|
24
25
|
)
|
25
26
|
from khoj.utils.helpers import (
|
27
|
+
get_ai_api_info,
|
26
28
|
get_chat_usage_metrics,
|
27
29
|
is_none_or_empty,
|
28
30
|
is_promptrace_enabled,
|
@@ -30,6 +32,7 @@ from khoj.utils.helpers import (
|
|
30
32
|
|
31
33
|
logger = logging.getLogger(__name__)
|
32
34
|
|
35
|
+
gemini_clients: Dict[str, genai.Client] = {}
|
33
36
|
|
34
37
|
MAX_OUTPUT_TOKENS_GEMINI = 8192
|
35
38
|
SAFETY_SETTINGS = [
|
@@ -52,6 +55,17 @@ SAFETY_SETTINGS = [
|
|
52
55
|
]
|
53
56
|
|
54
57
|
|
58
|
+
def get_gemini_client(api_key, api_base_url=None) -> genai.Client:
|
59
|
+
api_info = get_ai_api_info(api_key, api_base_url)
|
60
|
+
return genai.Client(
|
61
|
+
location=api_info.region,
|
62
|
+
project=api_info.project,
|
63
|
+
credentials=api_info.credentials,
|
64
|
+
api_key=api_info.api_key,
|
65
|
+
vertexai=api_info.api_key is None,
|
66
|
+
)
|
67
|
+
|
68
|
+
|
55
69
|
@retry(
|
56
70
|
wait=wait_random_exponential(min=1, max=10),
|
57
71
|
stop=stop_after_attempt(2),
|
@@ -59,9 +73,13 @@ SAFETY_SETTINGS = [
|
|
59
73
|
reraise=True,
|
60
74
|
)
|
61
75
|
def gemini_completion_with_backoff(
|
62
|
-
messages, system_prompt, model_name, temperature=0, api_key=None, model_kwargs=None, tracer={}
|
76
|
+
messages, system_prompt, model_name, temperature=0, api_key=None, api_base_url=None, model_kwargs=None, tracer={}
|
63
77
|
) -> str:
|
64
|
-
client =
|
78
|
+
client = gemini_clients.get(api_key)
|
79
|
+
if not client:
|
80
|
+
client = get_gemini_client(api_key, api_base_url)
|
81
|
+
gemini_clients[api_key] = client
|
82
|
+
|
65
83
|
seed = int(os.getenv("KHOJ_LLM_SEED")) if os.getenv("KHOJ_LLM_SEED") else None
|
66
84
|
config = gtypes.GenerateContentConfig(
|
67
85
|
system_instruction=system_prompt,
|
@@ -115,6 +133,7 @@ def gemini_chat_completion_with_backoff(
|
|
115
133
|
model_name,
|
116
134
|
temperature,
|
117
135
|
api_key,
|
136
|
+
api_base_url,
|
118
137
|
system_prompt,
|
119
138
|
completion_func=None,
|
120
139
|
model_kwargs=None,
|
@@ -123,17 +142,29 @@ def gemini_chat_completion_with_backoff(
|
|
123
142
|
g = ThreadedGenerator(compiled_references, online_results, completion_func=completion_func)
|
124
143
|
t = Thread(
|
125
144
|
target=gemini_llm_thread,
|
126
|
-
args=(g, messages, system_prompt, model_name, temperature, api_key, model_kwargs, tracer),
|
145
|
+
args=(g, messages, system_prompt, model_name, temperature, api_key, api_base_url, model_kwargs, tracer),
|
127
146
|
)
|
128
147
|
t.start()
|
129
148
|
return g
|
130
149
|
|
131
150
|
|
132
151
|
def gemini_llm_thread(
|
133
|
-
g,
|
152
|
+
g,
|
153
|
+
messages,
|
154
|
+
system_prompt,
|
155
|
+
model_name,
|
156
|
+
temperature,
|
157
|
+
api_key,
|
158
|
+
api_base_url=None,
|
159
|
+
model_kwargs=None,
|
160
|
+
tracer: dict = {},
|
134
161
|
):
|
135
162
|
try:
|
136
|
-
client =
|
163
|
+
client = gemini_clients.get(api_key)
|
164
|
+
if not client:
|
165
|
+
client = get_gemini_client(api_key, api_base_url)
|
166
|
+
gemini_clients[api_key] = client
|
167
|
+
|
137
168
|
seed = int(os.getenv("KHOJ_LLM_SEED")) if os.getenv("KHOJ_LLM_SEED") else None
|
138
169
|
config = gtypes.GenerateContentConfig(
|
139
170
|
system_instruction=system_prompt,
|
@@ -55,7 +55,7 @@ def completion_with_backoff(
|
|
55
55
|
tracer: dict = {},
|
56
56
|
) -> str:
|
57
57
|
client_key = f"{openai_api_key}--{api_base_url}"
|
58
|
-
client
|
58
|
+
client = openai_clients.get(client_key)
|
59
59
|
if not client:
|
60
60
|
client = get_openai_client(openai_api_key, api_base_url)
|
61
61
|
openai_clients[client_key] = client
|
@@ -150,9 +150,8 @@ def llm_thread(
|
|
150
150
|
):
|
151
151
|
try:
|
152
152
|
client_key = f"{openai_api_key}--{api_base_url}"
|
153
|
-
|
154
|
-
|
155
|
-
else:
|
153
|
+
client = openai_clients.get(client_key)
|
154
|
+
if not client:
|
156
155
|
client = get_openai_client(openai_api_key, api_base_url)
|
157
156
|
openai_clients[client_key] = client
|
158
157
|
|
khoj/routers/api.py
CHANGED
@@ -463,12 +463,14 @@ async def extract_references_and_questions(
|
|
463
463
|
)
|
464
464
|
elif chat_model.model_type == ChatModel.ModelType.ANTHROPIC:
|
465
465
|
api_key = chat_model.ai_model_api.api_key
|
466
|
+
api_base_url = chat_model.ai_model_api.api_base_url
|
466
467
|
chat_model_name = chat_model.name
|
467
468
|
inferred_queries = extract_questions_anthropic(
|
468
469
|
defiltered_query,
|
469
470
|
query_images=query_images,
|
470
471
|
model=chat_model_name,
|
471
472
|
api_key=api_key,
|
473
|
+
api_base_url=api_base_url,
|
472
474
|
conversation_log=meta_log,
|
473
475
|
location_data=location_data,
|
474
476
|
user=user,
|
@@ -479,12 +481,14 @@ async def extract_references_and_questions(
|
|
479
481
|
)
|
480
482
|
elif chat_model.model_type == ChatModel.ModelType.GOOGLE:
|
481
483
|
api_key = chat_model.ai_model_api.api_key
|
484
|
+
api_base_url = chat_model.ai_model_api.api_base_url
|
482
485
|
chat_model_name = chat_model.name
|
483
486
|
inferred_queries = extract_questions_gemini(
|
484
487
|
defiltered_query,
|
485
488
|
query_images=query_images,
|
486
489
|
model=chat_model_name,
|
487
490
|
api_key=api_key,
|
491
|
+
api_base_url=api_base_url,
|
488
492
|
conversation_log=meta_log,
|
489
493
|
location_data=location_data,
|
490
494
|
max_tokens=chat_model.max_prompt_size,
|
khoj/routers/helpers.py
CHANGED
@@ -1220,6 +1220,7 @@ async def send_message_to_model_wrapper(
|
|
1220
1220
|
)
|
1221
1221
|
elif model_type == ChatModel.ModelType.ANTHROPIC:
|
1222
1222
|
api_key = chat_model.ai_model_api.api_key
|
1223
|
+
api_base_url = chat_model.ai_model_api.api_base_url
|
1223
1224
|
truncated_messages = generate_chatml_messages_with_context(
|
1224
1225
|
user_message=query,
|
1225
1226
|
context_message=context,
|
@@ -1239,10 +1240,12 @@ async def send_message_to_model_wrapper(
|
|
1239
1240
|
model=chat_model_name,
|
1240
1241
|
response_type=response_type,
|
1241
1242
|
deepthought=deepthought,
|
1243
|
+
api_base_url=api_base_url,
|
1242
1244
|
tracer=tracer,
|
1243
1245
|
)
|
1244
1246
|
elif model_type == ChatModel.ModelType.GOOGLE:
|
1245
1247
|
api_key = chat_model.ai_model_api.api_key
|
1248
|
+
api_base_url = chat_model.ai_model_api.api_base_url
|
1246
1249
|
truncated_messages = generate_chatml_messages_with_context(
|
1247
1250
|
user_message=query,
|
1248
1251
|
context_message=context,
|
@@ -1262,6 +1265,7 @@ async def send_message_to_model_wrapper(
|
|
1262
1265
|
model=chat_model_name,
|
1263
1266
|
response_type=response_type,
|
1264
1267
|
response_schema=response_schema,
|
1268
|
+
api_base_url=api_base_url,
|
1265
1269
|
tracer=tracer,
|
1266
1270
|
)
|
1267
1271
|
else:
|
@@ -1328,7 +1332,7 @@ def send_message_to_model_wrapper_sync(
|
|
1328
1332
|
query_files=query_files,
|
1329
1333
|
)
|
1330
1334
|
|
1331
|
-
|
1335
|
+
return send_message_to_model(
|
1332
1336
|
messages=truncated_messages,
|
1333
1337
|
api_key=api_key,
|
1334
1338
|
api_base_url=api_base_url,
|
@@ -1338,10 +1342,9 @@ def send_message_to_model_wrapper_sync(
|
|
1338
1342
|
tracer=tracer,
|
1339
1343
|
)
|
1340
1344
|
|
1341
|
-
return openai_response
|
1342
|
-
|
1343
1345
|
elif chat_model.model_type == ChatModel.ModelType.ANTHROPIC:
|
1344
1346
|
api_key = chat_model.ai_model_api.api_key
|
1347
|
+
api_base_url = chat_model.ai_model_api.api_base_url
|
1345
1348
|
truncated_messages = generate_chatml_messages_with_context(
|
1346
1349
|
user_message=message,
|
1347
1350
|
system_message=system_message,
|
@@ -1356,6 +1359,7 @@ def send_message_to_model_wrapper_sync(
|
|
1356
1359
|
return anthropic_send_message_to_model(
|
1357
1360
|
messages=truncated_messages,
|
1358
1361
|
api_key=api_key,
|
1362
|
+
api_base_url=api_base_url,
|
1359
1363
|
model=chat_model_name,
|
1360
1364
|
response_type=response_type,
|
1361
1365
|
tracer=tracer,
|
@@ -1363,6 +1367,7 @@ def send_message_to_model_wrapper_sync(
|
|
1363
1367
|
|
1364
1368
|
elif chat_model.model_type == ChatModel.ModelType.GOOGLE:
|
1365
1369
|
api_key = chat_model.ai_model_api.api_key
|
1370
|
+
api_base_url = chat_model.ai_model_api.api_base_url
|
1366
1371
|
truncated_messages = generate_chatml_messages_with_context(
|
1367
1372
|
user_message=message,
|
1368
1373
|
system_message=system_message,
|
@@ -1377,6 +1382,7 @@ def send_message_to_model_wrapper_sync(
|
|
1377
1382
|
return gemini_send_message_to_model(
|
1378
1383
|
messages=truncated_messages,
|
1379
1384
|
api_key=api_key,
|
1385
|
+
api_base_url=api_base_url,
|
1380
1386
|
model=chat_model_name,
|
1381
1387
|
response_type=response_type,
|
1382
1388
|
response_schema=response_schema,
|
@@ -1510,6 +1516,7 @@ def generate_chat_response(
|
|
1510
1516
|
|
1511
1517
|
elif chat_model.model_type == ChatModel.ModelType.ANTHROPIC:
|
1512
1518
|
api_key = chat_model.ai_model_api.api_key
|
1519
|
+
api_base_url = chat_model.ai_model_api.api_base_url
|
1513
1520
|
chat_response = converse_anthropic(
|
1514
1521
|
compiled_references,
|
1515
1522
|
query_to_run,
|
@@ -1519,6 +1526,7 @@ def generate_chat_response(
|
|
1519
1526
|
conversation_log=meta_log,
|
1520
1527
|
model=chat_model.name,
|
1521
1528
|
api_key=api_key,
|
1529
|
+
api_base_url=api_base_url,
|
1522
1530
|
completion_func=partial_completion,
|
1523
1531
|
conversation_commands=conversation_commands,
|
1524
1532
|
max_prompt_size=chat_model.max_prompt_size,
|
@@ -1536,6 +1544,7 @@ def generate_chat_response(
|
|
1536
1544
|
)
|
1537
1545
|
elif chat_model.model_type == ChatModel.ModelType.GOOGLE:
|
1538
1546
|
api_key = chat_model.ai_model_api.api_key
|
1547
|
+
api_base_url = chat_model.ai_model_api.api_base_url
|
1539
1548
|
chat_response = converse_gemini(
|
1540
1549
|
compiled_references,
|
1541
1550
|
query_to_run,
|
@@ -1544,6 +1553,7 @@ def generate_chat_response(
|
|
1544
1553
|
meta_log,
|
1545
1554
|
model=chat_model.name,
|
1546
1555
|
api_key=api_key,
|
1556
|
+
api_base_url=api_base_url,
|
1547
1557
|
completion_func=partial_completion,
|
1548
1558
|
conversation_commands=conversation_commands,
|
1549
1559
|
max_prompt_size=chat_model.max_prompt_size,
|
khoj/utils/constants.py
CHANGED
@@ -49,8 +49,10 @@ model_to_cost: Dict[str, Dict[str, float]] = {
|
|
49
49
|
"gemini-2.0-flash": {"input": 0.10, "output": 0.40},
|
50
50
|
# Anthropic Pricing: https://www.anthropic.com/pricing#anthropic-api_
|
51
51
|
"claude-3-5-haiku-20241022": {"input": 1.0, "output": 5.0},
|
52
|
+
"claude-3-5-haiku@20241022": {"input": 1.0, "output": 5.0},
|
52
53
|
"claude-3-5-sonnet-20241022": {"input": 3.0, "output": 15.0},
|
53
54
|
"claude-3-5-sonnet-latest": {"input": 3.0, "output": 15.0},
|
54
55
|
"claude-3-7-sonnet-20250219": {"input": 3.0, "output": 15.0},
|
56
|
+
"claude-3-7-sonnet@20250219": {"input": 3.0, "output": 15.0},
|
55
57
|
"claude-3-7-sonnet-latest": {"input": 3.0, "output": 15.0},
|
56
58
|
}
|
khoj/utils/helpers.py
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
from __future__ import annotations # to avoid quoting type hints
|
2
2
|
|
3
|
+
import base64
|
3
4
|
import copy
|
4
5
|
import datetime
|
5
6
|
import io
|
@@ -19,15 +20,18 @@ from itertools import islice
|
|
19
20
|
from os import path
|
20
21
|
from pathlib import Path
|
21
22
|
from time import perf_counter
|
22
|
-
from typing import TYPE_CHECKING, Any, Optional, Union
|
23
|
-
from urllib.parse import urlparse
|
23
|
+
from typing import TYPE_CHECKING, Any, NamedTuple, Optional, Tuple, Union
|
24
|
+
from urllib.parse import ParseResult, urlparse
|
24
25
|
|
25
26
|
import openai
|
26
27
|
import psutil
|
28
|
+
import pyjson5
|
27
29
|
import requests
|
28
30
|
import torch
|
29
31
|
from asgiref.sync import sync_to_async
|
30
32
|
from email_validator import EmailNotValidError, EmailUndeliverableError, validate_email
|
33
|
+
from google.auth.credentials import Credentials
|
34
|
+
from google.oauth2 import service_account
|
31
35
|
from magika import Magika
|
32
36
|
from PIL import Image
|
33
37
|
from pytz import country_names, country_timezones
|
@@ -618,6 +622,58 @@ def get_chat_usage_metrics(
|
|
618
622
|
}
|
619
623
|
|
620
624
|
|
625
|
+
class AiApiInfo(NamedTuple):
|
626
|
+
region: str
|
627
|
+
project: str
|
628
|
+
credentials: Credentials
|
629
|
+
api_key: str
|
630
|
+
|
631
|
+
|
632
|
+
def get_gcp_credentials(credentials_b64: str) -> Optional[Credentials]:
|
633
|
+
"""
|
634
|
+
Get GCP credentials from base64 encoded service account credentials json keyfile
|
635
|
+
"""
|
636
|
+
credentials_json = base64.b64decode(credentials_b64).decode("utf-8")
|
637
|
+
credentials_dict = pyjson5.loads(credentials_json)
|
638
|
+
credentials = service_account.Credentials.from_service_account_info(credentials_dict)
|
639
|
+
return credentials.with_scopes(scopes=["https://www.googleapis.com/auth/cloud-platform"])
|
640
|
+
|
641
|
+
|
642
|
+
def get_gcp_project_info(parsed_api_url: ParseResult) -> Tuple[str, str]:
|
643
|
+
"""
|
644
|
+
Extract region, project id from GCP API url
|
645
|
+
API url is of form https://{REGION}-aiplatform.googleapis.com/v1/projects/{PROJECT_ID}...
|
646
|
+
"""
|
647
|
+
# Extract region from hostname
|
648
|
+
hostname = parsed_api_url.netloc
|
649
|
+
region = hostname.split("-aiplatform")[0] if "-aiplatform" in hostname else ""
|
650
|
+
|
651
|
+
# Extract project ID from path (e.g., "/v1/projects/my-project/...")
|
652
|
+
path_parts = parsed_api_url.path.split("/")
|
653
|
+
project_id = ""
|
654
|
+
for i, part in enumerate(path_parts):
|
655
|
+
if part == "projects" and i + 1 < len(path_parts):
|
656
|
+
project_id = path_parts[i + 1]
|
657
|
+
break
|
658
|
+
|
659
|
+
return region, project_id
|
660
|
+
|
661
|
+
|
662
|
+
def get_ai_api_info(api_key, api_base_url: str = None) -> AiApiInfo:
|
663
|
+
"""
|
664
|
+
Get the GCP Vertex or default AI API client info based on the API key and URL.
|
665
|
+
"""
|
666
|
+
region, project_id, credentials = None, None, None
|
667
|
+
# Check if AI model to be used via GCP Vertex API
|
668
|
+
parsed_api_url = urlparse(api_base_url)
|
669
|
+
if parsed_api_url.hostname and parsed_api_url.hostname.endswith(".googleapis.com"):
|
670
|
+
region, project_id = get_gcp_project_info(parsed_api_url)
|
671
|
+
credentials = get_gcp_credentials(api_key)
|
672
|
+
if credentials:
|
673
|
+
api_key = None
|
674
|
+
return AiApiInfo(region=region, project=project_id, credentials=credentials, api_key=api_key)
|
675
|
+
|
676
|
+
|
621
677
|
def get_openai_client(api_key: str, api_base_url: str) -> Union[openai.OpenAI, openai.AzureOpenAI]:
|
622
678
|
"""Get OpenAI or AzureOpenAI client based on the API Base URL"""
|
623
679
|
parsed_url = urlparse(api_base_url)
|
@@ -118,32 +118,33 @@ khoj/database/migrations/0083_alter_agent_output_modes_alter_agent_personality_a
|
|
118
118
|
khoj/database/migrations/0084_alter_agent_input_tools.py,sha256=rXFC7fXSjV8n_x7HZnF-Jr8vCiE9NLSd6q2UevIdVuU,986
|
119
119
|
khoj/database/migrations/0085_alter_agent_output_modes.py,sha256=qgW7jbPhJkU37iZ-yzgI46-fker3zLeoBTuijS5_gro,687
|
120
120
|
khoj/database/migrations/0086_alter_texttoimagemodelconfig_model_type.py,sha256=OGbA88CObHsSTXS78_3igKqE9dtCkZ2Hb5W4qBabYwk,709
|
121
|
+
khoj/database/migrations/0087_alter_aimodelapi_api_key.py,sha256=CqZ3iqt3CwiCwkD7oAEhdYYgM8Diyz2WW0hEJeaHGjg,415
|
121
122
|
khoj/database/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
122
|
-
khoj/database/models/__init__.py,sha256=
|
123
|
+
khoj/database/models/__init__.py,sha256=hOh7gbEj-VqKdO5HE9gEXnWQ_kFJjIhQeJP150RsTC4,29502
|
123
124
|
khoj/interface/compiled/agents.svg,sha256=yFCRwIM-Qawa0C5ggAo3ekb-Q1ElmotBOKIGhtfIQqM,1722
|
124
125
|
khoj/interface/compiled/automation.svg,sha256=o7L2XYwJWRSMvl8h6TBv6Pt28RTRVMHqF04EPY0AFj0,1467
|
125
126
|
khoj/interface/compiled/chat.svg,sha256=l2JoYRRgk201adTTdvJ-buKUrc0WGfsudix5xEvtM3A,2424
|
126
127
|
khoj/interface/compiled/close.svg,sha256=hQ2iFLkNzHk0_iyTrSbwnWAeXYlgA-c2Eof2Iqh76n4,417
|
127
128
|
khoj/interface/compiled/copy-button-success.svg,sha256=byqWAYD3Pn9IOXRjOKudJ-TJbP2UESbQGvtLWazNGjY,829
|
128
129
|
khoj/interface/compiled/copy-button.svg,sha256=05bKM2eRxksfBlAPT7yMaoNJEk85bZCxQg67EVrPeHo,669
|
129
|
-
khoj/interface/compiled/index.html,sha256=
|
130
|
-
khoj/interface/compiled/index.txt,sha256
|
130
|
+
khoj/interface/compiled/index.html,sha256=qr5moCZxjxhbs-jI8X4s-VTTpzhH4fr4Hb7bTGHJ0ko,53009
|
131
|
+
khoj/interface/compiled/index.txt,sha256=-UPCDzuG8K_G1AGIT9WsJZUfJaP3l5-NyJJXCN3xJOY,7584
|
131
132
|
khoj/interface/compiled/khoj.webmanifest,sha256=9wOK2BMS6xH5NKd2eaUgTLg9WepIxB2K2U33KU89LD8,2543
|
132
133
|
khoj/interface/compiled/logo.svg,sha256=_QCKVYM4WT2Qhcf7aVFImjq_s5CwjynGXYAOgI7yf8w,8059
|
133
134
|
khoj/interface/compiled/send.svg,sha256=VdavOWkVddcwcGcld6pdfmwfz7S91M-9O28cfeiKJkM,635
|
134
135
|
khoj/interface/compiled/share.svg,sha256=91lwo75PvMDrgocuZQab6EQ62CxRbubh9Bhw7CWMKbg,1221
|
135
136
|
khoj/interface/compiled/thumbs-down.svg,sha256=JGNl-DwoRmH2XFMPWwFFklmoYtKxaQbkLE3nuYKe8ZY,1019
|
136
137
|
khoj/interface/compiled/thumbs-up.svg,sha256=yS1wxTRtiztkN-6nZciLoYQUB_KTYNPV8xFRwH2TQFw,1036
|
137
|
-
khoj/interface/compiled/404/index.html,sha256=
|
138
|
+
khoj/interface/compiled/404/index.html,sha256=siufMhBBPaipuOT6bgRhc-yUuzE8lRs_JCYMMCOZrVo,17063
|
138
139
|
khoj/interface/compiled/_next/static/chunks/1160-8e7e42e77145b712.js,sha256=-QFyQbKtlBEXOxl_xK246z8WERbIc88SU1RehiTjcaI,317731
|
139
140
|
khoj/interface/compiled/_next/static/chunks/1243.ea2826fb35adb15a.js,sha256=Y6ceAwyTH4HSGDvBRoBB-RVXRCzGGr8NSPcspYF5OM8,182
|
140
141
|
khoj/interface/compiled/_next/static/chunks/133.392ae90c3b2a67f2.js,sha256=IK-mb9ZlF6uJUdU8AuXsppc99tFL8svJvZtKNZGNtcY,411
|
141
142
|
khoj/interface/compiled/_next/static/chunks/1592.b069bdb7aaddd2eb.js,sha256=VUaP2gjX3W9tA9pOH_VIPG_2BIg7Wk1AICrfU5iHgrk,71096
|
142
|
-
khoj/interface/compiled/_next/static/chunks/1915-
|
143
|
+
khoj/interface/compiled/_next/static/chunks/1915-ab4353eaca76f690.js,sha256=qArqL3leavWRcZkX4ZuWgemtKnmV6c-_yrNtMu_8SeY,11277
|
143
144
|
khoj/interface/compiled/_next/static/chunks/2069.f060659791c0c484.js,sha256=C_oat_BkZcLOHsyJlNN_5I55fB7ee1zkkZ9FT5zOzn4,186
|
144
|
-
khoj/interface/compiled/_next/static/chunks/2117-
|
145
|
+
khoj/interface/compiled/_next/static/chunks/2117-f99825f0a867a42d.js,sha256=vLJikd2wJoZNWopR64Y4ccsOU2TNfdkBxVyfrgTHk10,123994
|
145
146
|
khoj/interface/compiled/_next/static/chunks/2170.45431769330fa5b7.js,sha256=C7Puu9x18DhdR5Sh8XXvTzPdP_HTK6WhsJDNW-NoB7o,24019
|
146
|
-
khoj/interface/compiled/_next/static/chunks/2327-
|
147
|
+
khoj/interface/compiled/_next/static/chunks/2327-b21ecded25471e6c.js,sha256=BFM9odS4wSUfVJSBaqUqhE0D79Dxe9fDRyg-H50WNdY,127377
|
147
148
|
khoj/interface/compiled/_next/static/chunks/3237.c4754f02f1a388cb.js,sha256=Z5iOEX0mPj-5tuoU4Bq_IjpAlyc4MURKlBoaExsULTk,177
|
148
149
|
khoj/interface/compiled/_next/static/chunks/3305.1fc7297ba154ee95.js,sha256=mfrpv-asuYmBmbqIh1p3UnPMAxg2pKlxE3Rzmth8O6s,37266
|
149
150
|
khoj/interface/compiled/_next/static/chunks/3332.6313db5217bb1b67.js,sha256=4lNF9JhPQdTX2xDojGOvvanM0Y0VScwM3kmF4p0RHFg,3776
|
@@ -152,9 +153,9 @@ khoj/interface/compiled/_next/static/chunks/3460.39c2b9b6a3898384.js,sha256=gehY
|
|
152
153
|
khoj/interface/compiled/_next/static/chunks/4299.2aaa569416cfc208.js,sha256=3HJ8OvB9BDJW0-qCBd1eUmChoBAxaCX6R81ftWZ1CHw,21659
|
153
154
|
khoj/interface/compiled/_next/static/chunks/4327.238d15c09a039b8b.js,sha256=mZa4Oyltc9JrokqnalRTjzcvWgX4S3i3REXiHzRYH1o,296536
|
154
155
|
khoj/interface/compiled/_next/static/chunks/4357-d86d3401f6f6f802.js,sha256=KDM1m01Fz-vcAMfxQfYPO6SEZJVK7z4241JOCEvou6Y,45442
|
155
|
-
khoj/interface/compiled/_next/static/chunks/4363-
|
156
|
+
khoj/interface/compiled/_next/static/chunks/4363-4efaf12abe696251.js,sha256=YFO-i3X2LrX9c4MgYY1kPsoRBaqVUkmfAKI62Rz2BVI,468054
|
156
157
|
khoj/interface/compiled/_next/static/chunks/4415.e0c0da5eedae4dd7.js,sha256=DEf8HPEstDFvBflOU0j0ilYHlVJilGcGsLgUx524FZQ,25544
|
157
|
-
khoj/interface/compiled/_next/static/chunks/4447-
|
158
|
+
khoj/interface/compiled/_next/static/chunks/4447-5d44807c40355b1a.js,sha256=Uw8IrcKmVR3wba-FB9maP9i9l_kAYg59r8PN1T_ipQE,19621
|
158
159
|
khoj/interface/compiled/_next/static/chunks/4609-33aa487dff03a9fd.js,sha256=1M6QAfVZa2g2Q4jXRdSI1wjrZ4G9yKjINJt8qyTKm1A,24698
|
159
160
|
khoj/interface/compiled/_next/static/chunks/4610.a1e7f40a759ed2aa.js,sha256=b5JDRPyQv2MsibYoK2TDT76LMAoDTRzFM-fa81mJxow,14102
|
160
161
|
khoj/interface/compiled/_next/static/chunks/4650.41f041da0ad365ad.js,sha256=EZeckNrMc3ZUX_LexPgaeusEq-dGBNEPm7nc5nvb4OM,33902
|
@@ -181,13 +182,13 @@ khoj/interface/compiled/_next/static/chunks/7890.f681eb1d1f83bea2.js,sha256=xd1q
|
|
181
182
|
khoj/interface/compiled/_next/static/chunks/7953.f6fc335a23efb959.js,sha256=8XInVs3uzJAMGBndN2k4BeJNHmgZOembNuoyPe9Z7Oo,412
|
182
183
|
khoj/interface/compiled/_next/static/chunks/8254.3145a4fbdcfdca46.js,sha256=sur8InabGfvh1HqNQhwBssc1tCPae_WKQ-efoYU1Q8A,412
|
183
184
|
khoj/interface/compiled/_next/static/chunks/8400.c95e4e79bcd79a56.js,sha256=3SlFozKtF4DYQYPT3hB5M7VEm3e_W71kC19JgADz-3k,19864
|
184
|
-
khoj/interface/compiled/_next/static/chunks/8515-
|
185
|
-
khoj/interface/compiled/_next/static/chunks/8667-
|
185
|
+
khoj/interface/compiled/_next/static/chunks/8515-010dd769c584b672.js,sha256=ZVTZ8aIgkQ-S2wAYrBKYmRhkzJzLqRMgzeGpfkOknDs,1619194
|
186
|
+
khoj/interface/compiled/_next/static/chunks/8667-adbe6017a66cef10.js,sha256=kyiAVJTylsiOPFTb63uZn_pMlk4pYhDYt_N7xL76PTM,7214
|
186
187
|
khoj/interface/compiled/_next/static/chunks/8673.be44c4d9e4f1d084.js,sha256=jiE4xU-TbkVC4R60SIgxwdo31T9mbdVBVuhP4H60i94,18629
|
187
188
|
khoj/interface/compiled/_next/static/chunks/8698.a088118fef40d302.js,sha256=mrK-3ZahVSF7sZij3l-PyXKxp-ccXU9orykXDc7YzsM,180
|
188
189
|
khoj/interface/compiled/_next/static/chunks/9022.33974a513a281fd2.js,sha256=6NmDzRbI0NyTisUT04sq9M0czUqvlwZoV4E7Onp-55Q,57192
|
189
190
|
khoj/interface/compiled/_next/static/chunks/90542734.9e6e44b1b45b30fe.js,sha256=5Ivye3p3HC-Ekf-bIPdnvmg_JtYLkCqyRPWtciOmuuo,413716
|
190
|
-
khoj/interface/compiled/_next/static/chunks/9259-
|
191
|
+
khoj/interface/compiled/_next/static/chunks/9259-d8bcd9da9e80c81e.js,sha256=lZJF9qq4_MeSRsHeNPNcxkqh2vhBfag5iAxg6krHA9g,34848
|
191
192
|
khoj/interface/compiled/_next/static/chunks/9334-b22127fe2d39bc60.js,sha256=_TPWqSCbf86Ig1vIEDRLXzloZujDoxpoEWhRPUf6b5U,29065
|
192
193
|
khoj/interface/compiled/_next/static/chunks/9433.b1b5f5d050c43e3c.js,sha256=kMVC0Gg95UqjfQXpGvi-WUSg_kYp0SN7CTPTHxHxDBk,144858
|
193
194
|
khoj/interface/compiled/_next/static/chunks/94ca1967.1b3402358e0e1255.js,sha256=WJXEIy24FD6PNQePg-uahendJMNc03GgnVveitFeshI,1174524
|
@@ -200,34 +201,32 @@ khoj/interface/compiled/_next/static/chunks/framework-8e0e0f4a6b83a956.js,sha256
|
|
200
201
|
khoj/interface/compiled/_next/static/chunks/main-98eb5932d6b2e3fa.js,sha256=AawaSgw7Q3CVsGFBX7BuL4bBqqXkJ4DJdGs-2cif97I,111273
|
201
202
|
khoj/interface/compiled/_next/static/chunks/main-app-de1f09df97a3cfc7.js,sha256=bqnztujKItXfFBzQlaBmDZyfJpQt_M93CXOuchJfpD0,471
|
202
203
|
khoj/interface/compiled/_next/static/chunks/polyfills-42372ed130431b0a.js,sha256=CXPB1kyIrcjjyVBBDLWLKI9yEY1ZZbeASUON648vloM,112594
|
203
|
-
khoj/interface/compiled/_next/static/chunks/webpack-
|
204
|
+
khoj/interface/compiled/_next/static/chunks/webpack-1169ca6e9e7e6247.js,sha256=eK6LuYVr9XwNIkuaEpEyigJUhcXcx_iOdEnQzpvgG6c,4891
|
204
205
|
khoj/interface/compiled/_next/static/chunks/app/layout-bd8210ff1de491d7.js,sha256=8gTcL8-sV5oa7vJRTxlgOpZvhNrsKomsu75DpVpqfE0,3983
|
205
|
-
khoj/interface/compiled/_next/static/chunks/app/page-
|
206
|
+
khoj/interface/compiled/_next/static/chunks/app/page-aad371f66ac52191.js,sha256=WYybaSmeeef9dlJmJZNPM0FYBKrtKu0cNT8ZO9sWYnc,31218
|
206
207
|
khoj/interface/compiled/_next/static/chunks/app/_not-found/page-0ec97c4970898f2d.js,sha256=zElhiTkdu2JqrEvJ8Lrxh4HCyfLmPllBHHWOuDtrVlw,1755
|
207
|
-
khoj/interface/compiled/_next/static/chunks/app/agents/layout-
|
208
|
-
khoj/interface/compiled/_next/static/chunks/app/agents/page-
|
208
|
+
khoj/interface/compiled/_next/static/chunks/app/agents/layout-948ca256650845ce.js,sha256=90UW-xl1JYse_51fviRzfAE7LpAwkMxCymL-V2vJ6v4,3455
|
209
|
+
khoj/interface/compiled/_next/static/chunks/app/agents/page-df5446aa4fb82e1a.js,sha256=I_L7ZSMnaB2S_8G4GqkbnjSZH8IPvZV6j9b-3Afr8e8,18314
|
209
210
|
khoj/interface/compiled/_next/static/chunks/app/automations/layout-7f5c33a70e46b3af.js,sha256=s2wHeQ-ai9rKyU9EjOGY1Yo51L4ZEkjLtML85BqN3Zc,5143
|
210
|
-
khoj/interface/compiled/_next/static/chunks/app/automations/page-
|
211
|
-
khoj/interface/compiled/_next/static/chunks/app/chat/layout-
|
212
|
-
khoj/interface/compiled/_next/static/chunks/app/chat/page-
|
213
|
-
khoj/interface/compiled/_next/static/chunks/app/search/layout-
|
214
|
-
khoj/interface/compiled/_next/static/chunks/app/search/page-
|
211
|
+
khoj/interface/compiled/_next/static/chunks/app/automations/page-0a44416f9183aec0.js,sha256=kNkQ123aqeoAe5yTaHWdSUMGaK_JJYHYASI3tYTiNbI,34831
|
212
|
+
khoj/interface/compiled/_next/static/chunks/app/chat/layout-603285e3b1400e74.js,sha256=jbpQcSbkDmThEkwRrkjoPtYprnltiMeVRA4Mr5XXz6g,3455
|
213
|
+
khoj/interface/compiled/_next/static/chunks/app/chat/page-50cb9b62b10b5f3d.js,sha256=DSJfNfKSKDk9hf_RKBJdqOW_Mqu9NnL6DD1nGAxFbkQ,28289
|
214
|
+
khoj/interface/compiled/_next/static/chunks/app/search/layout-d7f7528ff387fba5.js,sha256=gqFAh3XbMePX_EKoABr5uOnxwNLGa-cl5G84h0cGcnM,3455
|
215
|
+
khoj/interface/compiled/_next/static/chunks/app/search/page-1df7b236b30620f7.js,sha256=pMegRbrl32l9jxn1EvT9u-o877tSZ9jzOq7keoNxeDQ,32714
|
215
216
|
khoj/interface/compiled/_next/static/chunks/app/settings/layout-a7262b2bb8c7ae64.js,sha256=lvyfWVLYyJsxhQvh5UWUVUBM71nmq9DdsmmnVfFXCgk,9401
|
216
|
-
khoj/interface/compiled/_next/static/chunks/app/settings/page-
|
217
|
-
khoj/interface/compiled/_next/static/chunks/app/share/chat/layout-
|
218
|
-
khoj/interface/compiled/_next/static/chunks/app/share/chat/page-
|
217
|
+
khoj/interface/compiled/_next/static/chunks/app/settings/page-3473bab693ef81b2.js,sha256=NJ-y_h09m915fni0dLftBeDlzkWKP50XbtXbFU-tJZM,30570
|
218
|
+
khoj/interface/compiled/_next/static/chunks/app/share/chat/layout-246d0e8125219fff.js,sha256=T-U3NCxwKqNYQ0Y40U0zFgL-fHEZu30sQbK4lalDNrE,3455
|
219
|
+
khoj/interface/compiled/_next/static/chunks/app/share/chat/page-6f26fe7f2f7edc56.js,sha256=e6wQT-yRzXBuJXjT7CobubWPIVed2NbvP1VxTC186HU,4826
|
219
220
|
khoj/interface/compiled/_next/static/chunks/pages/_app-3c9ca398d360b709.js,sha256=UqtikLsCsOWtDUJOW6Tuk9P-bV1V3MhYd3ghrQuEmfs,286
|
220
221
|
khoj/interface/compiled/_next/static/chunks/pages/_error-cf5ca766ac8f493f.js,sha256=w_It3VzKT8O1M3CrJ_hZHsaU7M7dq3EAaVG8KvJ-fhU,253
|
221
|
-
khoj/interface/compiled/_next/static/css/
|
222
|
+
khoj/interface/compiled/_next/static/css/37a73b87f02df402.css,sha256=hp0vlekKu0K2eITR5YIqFmLHQPqV3JETFnRd_-Uh0mk,165
|
222
223
|
khoj/interface/compiled/_next/static/css/7889a30fe9c83846.css,sha256=IUkZhkx4GpYOIhN-EJw9T1DqGMO3Wa3mNpUwaOBuZoY,7204
|
223
224
|
khoj/interface/compiled/_next/static/css/b061a6aedf367349.css,sha256=TBw0S55aM8UbisYpvbVjM9Ch7bUG16L5WlNXd6KTs1g,3075676
|
224
225
|
khoj/interface/compiled/_next/static/css/b15666ef52060cd0.css,sha256=JMH_WAG7ZoebkDxeKdDq1L4liB_nAh3ayim8JT6r1Js,1737
|
225
|
-
khoj/interface/compiled/_next/static/css/bb7ea98028b368f3.css,sha256=PBwues3rUFWl02xEnWqKbRFK59SkQUCqYuV45ZedG4U,3318
|
226
226
|
khoj/interface/compiled/_next/static/css/e4eb883b5265d372.css,sha256=6LaW-lQ_ZpgOJNWYwU1Q1egXZ1aqJDEuRj66oRCIU_E,17748
|
227
227
|
khoj/interface/compiled/_next/static/css/ea5485b3f3859a5a.css,sha256=tn6qi2xSLTWhtzDUE8UlC8iipH9QGV6A9oGj1ap-Sk4,1659
|
228
|
-
khoj/interface/compiled/_next/static/css/
|
229
|
-
khoj/interface/compiled/_next/static/
|
230
|
-
khoj/interface/compiled/_next/static/dWV1ok4ndbQQtpEVqLZAh/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
|
228
|
+
khoj/interface/compiled/_next/static/css/f29752d6e1be7624.css,sha256=mLPRnYpBFaVhTMJ3CFou5_lrwLJs2mhBlAjNY2lrRYs,6354
|
229
|
+
khoj/interface/compiled/_next/static/css/fca983d49c3dd1a3.css,sha256=3F1qPtz6PQG-gIpo8h3rAfxreAc2Uvxy8F_G2e78EsM,30452
|
231
230
|
khoj/interface/compiled/_next/static/media/1d8a05b60287ae6c-s.p.woff2,sha256=IzKBwB_bpSGvO7C9aRv29Js-jAbZPRDI-D-P4H2P918,14508
|
232
231
|
khoj/interface/compiled/_next/static/media/2aa11a72f7f24b58-s.woff2,sha256=QjuuSKmViymmy-itXLB1UbSARxFNHWuMiPpCrYqClFI,22728
|
233
232
|
khoj/interface/compiled/_next/static/media/383a65b63658737d-s.woff2,sha256=VH1XkI87HdFVhsurH5D5ekEjG_ZORTVBVg6xz7p87C8,16704
|
@@ -305,8 +304,10 @@ khoj/interface/compiled/_next/static/media/flags.3afdda2f.webp,sha256=M2AW_HLpBn
|
|
305
304
|
khoj/interface/compiled/_next/static/media/flags@2x.5fbe9fc1.webp,sha256=BBeRPBZkxY3-aKkMnYv5TSkxmbeMbyUH4VRIPfrWg1E,137406
|
306
305
|
khoj/interface/compiled/_next/static/media/globe.98e105ca.webp,sha256=g3ofb8-W9GM75zIhlvQhaS8I2py9TtrovOKR3_7Jf04,514
|
307
306
|
khoj/interface/compiled/_next/static/media/globe@2x.974df6f8.webp,sha256=I_N7Yke3IOoS-0CC6XD8o0IUWG8PdPbrHmf6lpgWlZY,1380
|
308
|
-
khoj/interface/compiled/
|
309
|
-
khoj/interface/compiled/
|
307
|
+
khoj/interface/compiled/_next/static/mnJxv49O8dzkwTygquq43/_buildManifest.js,sha256=f2_nYnw25hHWQJ-39Lf5OH1u6kgdbOInyfplqgjvAV4,224
|
308
|
+
khoj/interface/compiled/_next/static/mnJxv49O8dzkwTygquq43/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
|
309
|
+
khoj/interface/compiled/agents/index.html,sha256=NhVdm6O0ZXvUuXzJ5Q01_AZ-ODjuk66VGCoVnCFUMN8,19256
|
310
|
+
khoj/interface/compiled/agents/index.txt,sha256=HOdjjjC5-EsFwvjG1KDnrj2cYzuej0vwu6d8Shex4Qw,8706
|
310
311
|
khoj/interface/compiled/assets/icons/khoj_lantern.ico,sha256=eggu-B_v3z1R53EjOFhIqqPnICBGdoaw1xnc0NrzHck,174144
|
311
312
|
khoj/interface/compiled/assets/icons/khoj_lantern.svg,sha256=I_8XP5X84gEOoCRhCRKOQn_GKZrz3SUBXct7WxHvY7c,8767
|
312
313
|
khoj/interface/compiled/assets/icons/khoj_lantern_1200x1200.png,sha256=xDx0bbD-WMflgg8zck9oPIIuTIvywtuED2k7CjSQS4w,66194
|
@@ -321,16 +322,16 @@ khoj/interface/compiled/assets/samples/desktop-remember-plan-sample.png,sha256=i
|
|
321
322
|
khoj/interface/compiled/assets/samples/phone-browse-draw-sample.png,sha256=Dd4fPwtFl6BWqnHjeb1mCK_ND0hhHsWtx8sNE7EiMuE,406179
|
322
323
|
khoj/interface/compiled/assets/samples/phone-plain-chat-sample.png,sha256=DEDaNRCkfEWUeh3kYZWIQDTVK1a6KKnYdwj5ZWisN_Q,82985
|
323
324
|
khoj/interface/compiled/assets/samples/phone-remember-plan-sample.png,sha256=Ma3blirRmq3X4oYSsDbbT7MDn29rymDrjwmUfA9BMuM,236285
|
324
|
-
khoj/interface/compiled/automations/index.html,sha256=
|
325
|
-
khoj/interface/compiled/automations/index.txt,sha256=
|
326
|
-
khoj/interface/compiled/chat/index.html,sha256=
|
327
|
-
khoj/interface/compiled/chat/index.txt,sha256=
|
328
|
-
khoj/interface/compiled/search/index.html,sha256=
|
329
|
-
khoj/interface/compiled/search/index.txt,sha256=
|
330
|
-
khoj/interface/compiled/settings/index.html,sha256=
|
331
|
-
khoj/interface/compiled/settings/index.txt,sha256=
|
332
|
-
khoj/interface/compiled/share/chat/index.html,sha256=
|
333
|
-
khoj/interface/compiled/share/chat/index.txt,sha256=
|
325
|
+
khoj/interface/compiled/automations/index.html,sha256=_ffrFDgLtTZsHxYOyjAXj9M1nwUFz58JNummEwJazQY,55923
|
326
|
+
khoj/interface/compiled/automations/index.txt,sha256=STd3XT6L7Gl0G-YPsBv-Ky8UxkflhYM_S8nqNLaiue4,8303
|
327
|
+
khoj/interface/compiled/chat/index.html,sha256=4lOH3-ypIz-L6I3ULDQZBHGNF06OnitwJZ_EFMR_CTE,56251
|
328
|
+
khoj/interface/compiled/chat/index.txt,sha256=ndIX57RL5FJ2VYGwXXD9dtLzFfXY4_3YeEiBN2p_LuE,9342
|
329
|
+
khoj/interface/compiled/search/index.html,sha256=UnqDztMpAS8oLPWzaKI05ayUeQlpasgdBFkYdAKHdc4,58213
|
330
|
+
khoj/interface/compiled/search/index.txt,sha256=4ClHkC4SB48xfvG8hdw0oDdy6TFzDNF3dTRu80vhpUE,7990
|
331
|
+
khoj/interface/compiled/settings/index.html,sha256=4sdx6nwf1Zc-LQNJyHVJCD79jZak1R2_YTBSRZnUYsY,55947
|
332
|
+
khoj/interface/compiled/settings/index.txt,sha256=mrBYQlJJsRCqfkYSRLdJeIr6hmod-rpq5sjtBpGlVrs,9431
|
333
|
+
khoj/interface/compiled/share/chat/index.html,sha256=DQJbZmA0Vnp9UjmS6yYz7biuARGz2Yf5vYHXmQUrSJM,56843
|
334
|
+
khoj/interface/compiled/share/chat/index.txt,sha256=_1IHSgSwd70zUnyEOlWd3o7GxwTdKFvUhLzeVnVXL8o,9810
|
334
335
|
khoj/interface/email/feedback.html,sha256=xksuPFamx4hGWyTTxZKRgX_eiYQQEuv-eK9Xmkt-nwU,1216
|
335
336
|
khoj/interface/email/magic_link.html,sha256=372ESbTPKM9acekuZcOIKOw6kBl-KikFg_L9MOHqJkg,2094
|
336
337
|
khoj/interface/email/task.html,sha256=tY7a0gzVeQ2lSQNu7WyXR_s7VYeWTrxWEj1iHVuoVE4,2813
|
@@ -385,18 +386,18 @@ khoj/processor/conversation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMp
|
|
385
386
|
khoj/processor/conversation/prompts.py,sha256=wM7XmOztzFdHN4xXe340bahVt9rb96SSE4WtYdJDr98,57159
|
386
387
|
khoj/processor/conversation/utils.py,sha256=TYASt3HV3Rm0s2oc9yBZu7H52O7D2kpPiRJhBpouiJE,33942
|
387
388
|
khoj/processor/conversation/anthropic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
388
|
-
khoj/processor/conversation/anthropic/anthropic_chat.py,sha256=
|
389
|
-
khoj/processor/conversation/anthropic/utils.py,sha256=
|
389
|
+
khoj/processor/conversation/anthropic/anthropic_chat.py,sha256=Nag3NECOfpREPPdjJ7adqYzboE2-ialdq0YsGdfoSnI,9280
|
390
|
+
khoj/processor/conversation/anthropic/utils.py,sha256=oSDJl2cNW1_QdyPo_yUKI_wgIhrQ15NsjEQCVwdVags,9054
|
390
391
|
khoj/processor/conversation/google/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
391
|
-
khoj/processor/conversation/google/gemini_chat.py,sha256=
|
392
|
-
khoj/processor/conversation/google/utils.py,sha256=
|
392
|
+
khoj/processor/conversation/google/gemini_chat.py,sha256=3Chruq2qiPmorr4seXJ3nwLkfyakHMCt9PFPMOAXAyI,9563
|
393
|
+
khoj/processor/conversation/google/utils.py,sha256=NZf1FwvWjMdln6pRSjZsL_isdWxpzkNUMV74yB8s83E,11861
|
393
394
|
khoj/processor/conversation/offline/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
394
395
|
khoj/processor/conversation/offline/chat_model.py,sha256=Sr0VpCipeWdEnuOQjgBo89uPZzQkQRSdTo5fm0EZTpI,11326
|
395
396
|
khoj/processor/conversation/offline/utils.py,sha256=51McImxl6u1qgRYvMt7uzsgLGSLq5SMFy74ymlNjIcc,3033
|
396
397
|
khoj/processor/conversation/offline/whisper.py,sha256=DJI-8y8DULO2cQ49m2VOvRyIZ2TxBypc15gM8O3HuMI,470
|
397
398
|
khoj/processor/conversation/openai/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
398
399
|
khoj/processor/conversation/openai/gpt.py,sha256=rGumVo0kuNWe9TwNcvwCaOGr6YMNo12eFl1Ipu--TYw,8942
|
399
|
-
khoj/processor/conversation/openai/utils.py,sha256=
|
400
|
+
khoj/processor/conversation/openai/utils.py,sha256=8dVvaZ-JVMFnDOjuqu0s9Q8_4x_61jitrnlBD2L5MUM,9314
|
400
401
|
khoj/processor/conversation/openai/whisper.py,sha256=zoEeK1LNCg_tzP4xzYi5vRPzNPGuDGzpkrkG7d1LUn4,447
|
401
402
|
khoj/processor/image/generate.py,sha256=FAIIsr8TIHxWxK-INNK4jJOOswBxQFyi_G4tI8NNEI8,10571
|
402
403
|
khoj/processor/speech/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -405,7 +406,7 @@ khoj/processor/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hS
|
|
405
406
|
khoj/processor/tools/online_search.py,sha256=2cK6e-AlHyrxDzXwEkEMOfe9BwdHf6FoB19O_uX59bA,21458
|
406
407
|
khoj/processor/tools/run_code.py,sha256=KkC22mMDW14RMLSniR1SAiBuANqQXXAP_8IyhDuNeXY,12024
|
407
408
|
khoj/routers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
408
|
-
khoj/routers/api.py,sha256=
|
409
|
+
khoj/routers/api.py,sha256=1sAJN5KvssFph7AcoFSJmQDlveOgyy530E9Bb-rJUTk,29491
|
409
410
|
khoj/routers/api_agents.py,sha256=Z0Ska8_KaE1N5Qx8L-Hdp-LctCl7e_yxkadF1d-BYKI,15291
|
410
411
|
khoj/routers/api_chat.py,sha256=UcXWuX_JBGz038WXH29T1erf0fl541kdIg8Y9gUuXF4,51496
|
411
412
|
khoj/routers/api_content.py,sha256=uLO3eir36rERkhhKU1HOdEv8KTi_z_edT9cHMCZP1W8,24578
|
@@ -414,7 +415,7 @@ khoj/routers/api_phone.py,sha256=p9yfc4WeMHDC0hg3aQk60a2VBy8rZPdEnz9wdJ7DzkU,220
|
|
414
415
|
khoj/routers/api_subscription.py,sha256=qnbKwA6N1TWK8Aiu1FFLka_JhbPOuwqT262NSHGZDiQ,5569
|
415
416
|
khoj/routers/auth.py,sha256=W6iKUDdZ4rUwl-LAjiunTjvKJtEupVRIOSKXBseMXMY,10659
|
416
417
|
khoj/routers/email.py,sha256=wvr6_fpk0RuKcTPC6suI8JDZPLYzJ9hAhz_G41yZytc,3923
|
417
|
-
khoj/routers/helpers.py,sha256=
|
418
|
+
khoj/routers/helpers.py,sha256=dK-aXWkzzBBdsywDYj8umMRturEzQSQG-A4Qvqj59mU,96653
|
418
419
|
khoj/routers/notion.py,sha256=g53xyYFmjr2JnuIrTW2vytbfkiK_UkoRTxqnnLSmD5o,2802
|
419
420
|
khoj/routers/research.py,sha256=3v4obl7RHJaSz6Sv1ZXEZreHvlPG8-VyFYT9Qlnsy14,17976
|
420
421
|
khoj/routers/storage.py,sha256=lao0DvsF49QleZvOdjKM98RU2cGfCJDBb7WeoI7Rr3I,2172
|
@@ -430,17 +431,17 @@ khoj/search_type/text_search.py,sha256=PZzJVCXpeBM795SIqiAKXAxgnCp1NIRiVikm040r1
|
|
430
431
|
khoj/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
431
432
|
khoj/utils/cli.py,sha256=IIZ2qH0v7Jmqw3JRH1K5EMp9TRze6en3GYsASnglMEM,3916
|
432
433
|
khoj/utils/config.py,sha256=aiOkH0je8A30DAGYTHMRePrgJonFv_i07_7CdhhhcdA,1805
|
433
|
-
khoj/utils/constants.py,sha256=
|
434
|
+
khoj/utils/constants.py,sha256=AyvaB18DPuMHP1jx4xbE51l-mHaWduWVFzGLMs-1-to,2569
|
434
435
|
khoj/utils/fs_syncer.py,sha256=5nqwAZqRk3Nwhkwd8y4IomTPZQmW32GwAqyMzal5KyY,9996
|
435
|
-
khoj/utils/helpers.py,sha256=
|
436
|
+
khoj/utils/helpers.py,sha256=IZAcGkNu_HVxO0dv04Tf6gAqRdqb_R4LvsvsW6lCRH4,26508
|
436
437
|
khoj/utils/initialization.py,sha256=wDBlLAmKWKYEpZKEyxbOo0Cos9_CrUoVLkiy9SwqzfY,14723
|
437
438
|
khoj/utils/jsonl.py,sha256=0Ac_COqr8sLCXntzZtquxuCEVRM2c3yKeDRGhgOBRpQ,1192
|
438
439
|
khoj/utils/models.py,sha256=Q5tcC9-z25sCiub048fLnvZ6_IIO1bcPNxt5payekk0,2009
|
439
440
|
khoj/utils/rawconfig.py,sha256=wfZTk-Aifb-_q9Yh-NPfh9LlLTioYG-yBqrasgvo4pc,5045
|
440
441
|
khoj/utils/state.py,sha256=axjZhnby8L3bY-N1VVoWgBH1RpFGK6U3_ZeNo1Kt7hs,1679
|
441
442
|
khoj/utils/yaml.py,sha256=qy1Tkc61rDMesBw_Cyx2vOR6H-Hngcsm5kYfjwQBwkE,1543
|
442
|
-
khoj-1.37.1.
|
443
|
-
khoj-1.37.1.
|
444
|
-
khoj-1.37.1.
|
445
|
-
khoj-1.37.1.
|
446
|
-
khoj-1.37.1.
|
443
|
+
khoj-1.37.1.dev12.dist-info/METADATA,sha256=15nqc7DpV3icMafK1mNA6YyoHOv2mw9Dv8xX4OYDxyI,7721
|
444
|
+
khoj-1.37.1.dev12.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
445
|
+
khoj-1.37.1.dev12.dist-info/entry_points.txt,sha256=KBIcez5N_jCgq_ER4Uxf-e1lxTBMTE_BBjMwwfeZyAg,39
|
446
|
+
khoj-1.37.1.dev12.dist-info/licenses/LICENSE,sha256=hIahDEOTzuHCU5J2nd07LWwkLW7Hko4UFO__ffsvB-8,34523
|
447
|
+
khoj-1.37.1.dev12.dist-info/RECORD,,
|
@@ -1 +0,0 @@
|
|
1
|
-
div.agents_titleBar__FzYbY{padding:16px 0;text-align:left}.agents_agentPersonality__o0Ysz p{white-space:inherit;overflow:hidden;height:77px;line-height:1.5}div.agents_agentPersonality__o0Ysz{text-align:left;grid-column:span 3;overflow:hidden}div.agents_pageLayout__gR3S3{max-width:60vw;margin:auto auto 2rem}button.agents_infoButton__NqI7E{border:none;background-color:transparent!important;text-align:left;font-family:inherit;font-size:medium}div.agents_agentList__XVx4A{display:grid;gap:20px;padding-top:30px;margin-right:auto;grid-auto-flow:row;grid-template-columns:1fr 1fr;margin-left:auto}@media only screen and (max-width:768px){div.agents_agentList__XVx4A{width:100%;padding:0;margin-right:auto;margin-left:auto;grid-template-columns:1fr}div.agents_pageLayout__gR3S3{max-width:90vw}}.loginPrompt_gsiMaterialButton__8QVFH{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;-webkit-appearance:none;background-image:none;border-radius:20px;box-sizing:border-box;color:#1f1f1f;cursor:pointer;font-family:Roboto,arial,sans-serif;font-size:14px;height:40px;letter-spacing:.25px;outline:none;overflow:hidden;padding:0;position:relative;text-align:center;transition:background-color .218s,border-color .218s,box-shadow .218s;vertical-align:middle;white-space:nowrap;width:40px;max-width:400px;min-width:-moz-min-content;min-width:min-content}.loginPrompt_gsiMaterialButton__8QVFH .loginPrompt_gsiMaterialButtonIcon__6TSC5{height:100%;min-width:20px;width:100%;margin:0;padding:9px}.loginPrompt_gsiMaterialButton__8QVFH .loginPrompt_gsiMaterialButtonContentWrapper__9tahB{align-items:center;display:flex;flex-direction:row;flex-wrap:nowrap;height:100%;justify-content:space-between;position:relative;width:100%}.loginPrompt_gsiMaterialButton__8QVFH .loginPrompt_gsiMaterialButtonContents__3_YcB{flex-grow:1;font-family:Roboto,arial,sans-serif;font-weight:500;overflow:hidden;text-overflow:ellipsis;vertical-align:top}.loginPrompt_gsiMaterialButton__8QVFH .loginPrompt_gsiMaterialButtonState__CDGQm{transition:opacity .218s;bottom:0;left:0;opacity:0;position:absolute;right:0;top:0}.loginPrompt_gsiMaterialButton__8QVFH:disabled{cursor:default;background-color:#ffffff61;border-color:#1f1f1f1f}.loginPrompt_gsiMaterialButton__8QVFH:disabled .loginPrompt_gsiMaterialButtonContents__3_YcB,.loginPrompt_gsiMaterialButton__8QVFH:disabled .loginPrompt_gsiMaterialButtonIcon__6TSC5{opacity:38%}.loginPrompt_gsiMaterialButton__8QVFH:not(:disabled):active .loginPrompt_gsiMaterialButton-State__mAfCZ,.loginPrompt_gsiMaterialButton__8QVFH:not(:disabled):focus .loginPrompt_gsiMaterialButtonState__CDGQm{background-color:#303030;opacity:12%}.loginPrompt_gsiMaterialButton__8QVFH:not(:disabled):hover{box-shadow:0 1px 2px 0 rgba(60,64,67,.3),0 1px 3px 1px rgba(60,64,67,.15)}.loginPrompt_gsiMaterialButton__8QVFH:not(:disabled):hover .loginPrompt_gsiMaterialButtonState__CDGQm{background-color:#303030;opacity:8%}div.automations_automationsLayout__Atoh_{display:grid;grid-template-columns:1fr 1fr;gap:1rem}div.automations_automationCard__BKidA{display:grid;grid-template-rows:auto 1fr auto}div.automations_pageLayout__OaoYA{max-width:60vw;margin:auto auto 2rem}@media screen and (max-width:768px){div.automations_automationsLayout__Atoh_{grid-template-columns:1fr}div.automations_pageLayout__OaoYA{max-width:90vw}}
|
@@ -1 +0,0 @@
|
|
1
|
-
div.search_searchLayout__fP3m0{display:grid;grid-template-columns:1fr;gap:1rem;height:100%}@media screen and (max-width:768px){div.search_searchLayout__fP3m0{gap:0}}div.sidePanel_session__EeNjH{padding:.5rem;margin-bottom:.25rem;border-radius:.5rem;cursor:pointer;max-width:14rem;font-size:medium;display:grid;grid-template-columns:minmax(auto,400px) 1fr;gap:0}div.sidePanel_compressed__CUgIn{grid-template-columns:minmax(12rem,100%) 1fr 1fr}div.sidePanel_sessionHover__cf_VO,div.sidePanel_session__EeNjH:hover{background-color:hsla(var(--popover))}div.sidePanel_session__EeNjH:hover{color:hsla(var(--popover-foreground))}div.sidePanel_session__EeNjH a{text-decoration:none}button.sidePanel_button__NzdN_{border:none;outline:none;background-color:transparent;cursor:pointer;color:var(--main-text-color);width:24px}button.sidePanel_showMoreButton__nDt4Z{border-radius:.5rem;padding:8px}div.sidePanel_panel__9offQ{display:flex;flex-direction:column;padding:1rem;overflow-y:auto;max-width:auto;transition:background-color .5s}div.sidePanel_expanded__aHnYV{gap:1rem;background-color:hsla(var(--muted));height:100%}div.sidePanel_collapsed__ewO3e{display:grid;grid-template-columns:1fr;height:-moz-fit-content;height:fit-content;padding:1rem 0 0 1rem}p.sidePanel_session__EeNjH{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;text-align:left;font-size:small}p.sidePanel_compressed__CUgIn{width:11rem}p.sidePanel_expanded__aHnYV{max-width:20rem}div.sidePanel_header__NCT_v{display:grid;grid-template-columns:1fr auto}div.sidePanel_profile__pfAJU{display:grid;grid-template-columns:auto 1fr;gap:1rem;align-items:center;margin-top:auto}div.sidePanel_panelWrapper__cDMvb{display:grid;grid-template-rows:1fr auto auto;height:100%}div.sidePanel_modalSessionsList___u3aa{position:fixed;top:0;left:0;width:100%;height:100%;background-color:hsla(var(--frosted-background-color));z-index:1;display:flex;justify-content:center;align-items:center;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}div.sidePanel_modalSessionsList___u3aa div.sidePanel_content__z60YO{max-width:80%;max-height:80%;background-color:hsla(var(--frosted-background-color));overflow:auto;padding:20px;border-radius:10px}div.sidePanel_modalSessionsList___u3aa div.sidePanel_session__EeNjH{max-width:100%;text-overflow:ellipsis}@media screen and (max-width:768px){div.sidePanel_panel__9offQ{padding:.25rem;width:100%}div.sidePanel_expanded__aHnYV{z-index:1}div.sidePanel_singleReference__vmXZr{padding:4px}div.sidePanel_panelWrapper__cDMvb{width:100%;padding:0 1rem}div.sidePanel_session__EeNjH.sidePanel_compressed__CUgIn{max-width:100%;display:grid;grid-template-columns:70vw auto;justify-content:space-between}div.sidePanel_session__EeNjH{max-width:100%;grid-template-columns:minmax(auto,70vw) 1fr}}.agentCard_agentPersonality__MmRlN p{white-space:inherit;overflow:hidden;height:77px;line-height:1.5}div.agentCard_agentPersonality__MmRlN{text-align:left;grid-column:span 3;overflow:hidden}button.agentCard_infoButton__heh_w{border:none;background-color:transparent!important;text-align:left;font-family:inherit;font-size:medium}
|
/khoj/interface/compiled/_next/static/chunks/{1915-1943ee8a628b893c.js → 1915-ab4353eaca76f690.js}
RENAMED
File without changes
|
/khoj/interface/compiled/_next/static/chunks/{2117-ce1f0a4598f5e4fe.js → 2117-f99825f0a867a42d.js}
RENAMED
File without changes
|
/khoj/interface/compiled/_next/static/chunks/{4363-e6ac2203564d1a3b.js → 4363-4efaf12abe696251.js}
RENAMED
File without changes
|
/khoj/interface/compiled/_next/static/chunks/{4447-e038b251d626c340.js → 4447-5d44807c40355b1a.js}
RENAMED
File without changes
|