khoj 1.42.9.dev17__py3-none-any.whl → 1.42.9.dev26__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. khoj/database/models/__init__.py +1 -0
  2. khoj/interface/compiled/404/index.html +2 -2
  3. khoj/interface/compiled/_next/static/chunks/app/chat/layout-ad4d1792ab1a4108.js +1 -0
  4. khoj/interface/compiled/_next/static/chunks/app/search/layout-f5881c7ae3ba0795.js +1 -0
  5. khoj/interface/compiled/agents/index.html +2 -2
  6. khoj/interface/compiled/agents/index.txt +2 -2
  7. khoj/interface/compiled/automations/index.html +2 -2
  8. khoj/interface/compiled/automations/index.txt +3 -3
  9. khoj/interface/compiled/chat/index.html +2 -2
  10. khoj/interface/compiled/chat/index.txt +2 -2
  11. khoj/interface/compiled/index.html +2 -2
  12. khoj/interface/compiled/index.txt +2 -2
  13. khoj/interface/compiled/search/index.html +2 -2
  14. khoj/interface/compiled/search/index.txt +2 -2
  15. khoj/interface/compiled/settings/index.html +2 -2
  16. khoj/interface/compiled/settings/index.txt +4 -4
  17. khoj/interface/compiled/share/chat/index.html +2 -2
  18. khoj/interface/compiled/share/chat/index.txt +2 -2
  19. khoj/processor/content/markdown/markdown_to_entries.py +38 -9
  20. khoj/processor/content/org_mode/org_to_entries.py +18 -2
  21. khoj/processor/content/org_mode/orgnode.py +18 -16
  22. khoj/processor/content/text_to_entries.py +30 -0
  23. khoj/processor/conversation/google/utils.py +5 -1
  24. khoj/processor/conversation/utils.py +1 -1
  25. khoj/routers/helpers.py +11 -8
  26. khoj/search_type/text_search.py +2 -0
  27. khoj/utils/rawconfig.py +11 -0
  28. {khoj-1.42.9.dev17.dist-info → khoj-1.42.9.dev26.dist-info}/METADATA +1 -1
  29. {khoj-1.42.9.dev17.dist-info → khoj-1.42.9.dev26.dist-info}/RECORD +41 -41
  30. khoj/interface/compiled/_next/static/chunks/app/chat/layout-ad68326d2f849cec.js +0 -1
  31. khoj/interface/compiled/_next/static/chunks/app/search/layout-484d34239ed0f2b1.js +0 -1
  32. /khoj/interface/compiled/_next/static/{rRy7eX2lAtmXdtQuJoVrw → IYGyer2N7GdUJ7QHFghtY}/_buildManifest.js +0 -0
  33. /khoj/interface/compiled/_next/static/{rRy7eX2lAtmXdtQuJoVrw → IYGyer2N7GdUJ7QHFghtY}/_ssgManifest.js +0 -0
  34. /khoj/interface/compiled/_next/static/chunks/{1327-1a9107b9a2a04a98.js → 1327-3b1a41af530fa8ee.js} +0 -0
  35. /khoj/interface/compiled/_next/static/chunks/{1915-5c6508f6ebb62a30.js → 1915-fbfe167c84ad60c5.js} +0 -0
  36. /khoj/interface/compiled/_next/static/chunks/{2117-080746c8e170c81a.js → 2117-e78b6902ad6f75ec.js} +0 -0
  37. /khoj/interface/compiled/_next/static/chunks/{2939-4af3fd24b8ffc9ad.js → 2939-4d4084c5b888b960.js} +0 -0
  38. /khoj/interface/compiled/_next/static/chunks/{4447-cd95608f8e93e711.js → 4447-d6cf93724d57e34b.js} +0 -0
  39. /khoj/interface/compiled/_next/static/chunks/{8667-50b03a89e82e0ba7.js → 8667-4b7790573b08c50d.js} +0 -0
  40. /khoj/interface/compiled/_next/static/chunks/{webpack-92ce8aaf95718ec4.js → webpack-70e0762712341826.js} +0 -0
  41. {khoj-1.42.9.dev17.dist-info → khoj-1.42.9.dev26.dist-info}/WHEEL +0 -0
  42. {khoj-1.42.9.dev17.dist-info → khoj-1.42.9.dev26.dist-info}/entry_points.txt +0 -0
  43. {khoj-1.42.9.dev17.dist-info → khoj-1.42.9.dev26.dist-info}/licenses/LICENSE +0 -0
@@ -58,7 +58,7 @@ def makelist_with_filepath(filename):
58
58
  return makelist(f, filename)
59
59
 
60
60
 
61
- def makelist(file, filename) -> List["Orgnode"]:
61
+ def makelist(file, filename, start_line: int = 1, ancestry_lines: int = 0) -> List["Orgnode"]:
62
62
  """
63
63
  Read an org-mode file and return a list of Orgnode objects
64
64
  created from this file.
@@ -66,7 +66,7 @@ def makelist(file, filename) -> List["Orgnode"]:
66
66
  ctr = 0
67
67
 
68
68
  if type(file) == str:
69
- f = file.split("\n")
69
+ f = file.splitlines()
70
70
  else:
71
71
  f = file
72
72
 
@@ -114,14 +114,23 @@ def makelist(file, filename) -> List["Orgnode"]:
114
114
  logbook = list()
115
115
  thisNode.properties = property_map
116
116
  nodelist.append(thisNode)
117
- property_map = {"LINE": f"file:{normalize_filename(filename)}::{ctr}"}
117
+ # Account for ancestry lines that were prepended when calculating line numbers
118
+ if ancestry_lines > 0:
119
+ calculated_line = start_line + ctr - 1 - ancestry_lines
120
+ if calculated_line <= 0:
121
+ calculated_line = 1 # Fallback to line 1 if calculation results in invalid line number
122
+ else:
123
+ calculated_line = start_line + ctr - 1
124
+ if calculated_line <= 0:
125
+ calculated_line = ctr # Use the original behavior if start_line calculation fails
126
+ property_map = {"LINE": f"file://{normalize_filename(filename)}#line={calculated_line}"}
118
127
  previous_level = level
119
128
  previous_heading: str = heading
120
129
  level = heading_search.group(1)
121
130
  heading = heading_search.group(2)
122
131
  bodytext = ""
123
132
  tags = list() # set of all tags in headline
124
- tag_search = re.search(r"(.*?)\s*:([a-zA-Z0-9].*?):$", heading)
133
+ tag_search = re.search(r"(.*?)\s+:([a-zA-Z0-9@_].*?):\s*$", heading)
125
134
  if tag_search:
126
135
  heading = tag_search.group(1)
127
136
  parsedtags = tag_search.group(2)
@@ -260,14 +269,6 @@ def makelist(file, filename) -> List["Orgnode"]:
260
269
  # Prefix filepath/title to ancestors
261
270
  n.ancestors = [file_title] + n.ancestors
262
271
 
263
- # Set SOURCE property to a file+heading based org-mode link to the entry
264
- if n.level == 0:
265
- n.properties["LINE"] = f"file:{normalize_filename(filename)}::0"
266
- n.properties["SOURCE"] = f"[[file:{normalize_filename(filename)}]]"
267
- else:
268
- escaped_heading = n.heading.replace("[", "\\[").replace("]", "\\]")
269
- n.properties["SOURCE"] = f"[[file:{normalize_filename(filename)}::*{escaped_heading}]]"
270
-
271
272
  return nodelist
272
273
 
273
274
 
@@ -520,10 +521,11 @@ class Orgnode(object):
520
521
  n = n + "\n"
521
522
 
522
523
  # Output Property Drawer
523
- n = n + indent + ":PROPERTIES:\n"
524
- for key, value in self._properties.items():
525
- n = n + indent + f":{key}: {value}\n"
526
- n = n + indent + ":END:\n"
524
+ if self._properties:
525
+ n = n + indent + ":PROPERTIES:\n"
526
+ for key, value in self._properties.items():
527
+ n = n + indent + f":{key}: {value}\n"
528
+ n = n + indent + ":END:\n"
527
529
 
528
530
  # Output Body
529
531
  if self.hasBody:
@@ -81,8 +81,35 @@ class TextToEntries(ABC):
81
81
  chunked_entry_chunks = text_splitter.split_text(entry.compiled)
82
82
  corpus_id = uuid.uuid4()
83
83
 
84
+ line_start = None
85
+ last_offset = 0
86
+ if entry.uri and entry.uri.startswith("file://"):
87
+ if "#line=" in entry.uri:
88
+ line_start = int(entry.uri.split("#line=", 1)[-1].split("&", 1)[0])
89
+ else:
90
+ line_start = 0
91
+
84
92
  # Create heading prefixed entry from each chunk
85
93
  for chunk_index, compiled_entry_chunk in enumerate(chunked_entry_chunks):
94
+ # set line start in uri of chunked entries
95
+ entry_uri = entry.uri
96
+ if line_start is not None:
97
+ # Find the chunk in the raw text to get an accurate line number.
98
+ # Search for the unmodified chunk from the last offset.
99
+ searchable_chunk = compiled_entry_chunk.strip()
100
+ if searchable_chunk:
101
+ chunk_start_pos_in_raw = entry.raw.find(searchable_chunk, last_offset)
102
+ if chunk_start_pos_in_raw != -1:
103
+ # Found the chunk. Calculate its line offset from the start of the raw text.
104
+ line_offset_in_raw = entry.raw[:chunk_start_pos_in_raw].count("\n")
105
+ new_line_num = line_start + line_offset_in_raw
106
+ entry_uri = re.sub(r"#line=\d+", f"#line={new_line_num}", entry.uri)
107
+ # Update search position for the next chunk to start after the current one.
108
+ last_offset = chunk_start_pos_in_raw + len(searchable_chunk)
109
+ else:
110
+ # Chunk not found in raw text, likely from a heading. Use original line_start.
111
+ entry_uri = re.sub(r"#line=\d+", f"#line={line_start}", entry.uri)
112
+
86
113
  # Prepend heading to all other chunks, the first chunk already has heading from original entry
87
114
  if chunk_index > 0 and entry.heading:
88
115
  # Snip heading to avoid crossing max_tokens limit
@@ -99,6 +126,7 @@ class TextToEntries(ABC):
99
126
  entry.raw = compiled_entry_chunk if raw_is_compiled else TextToEntries.clean_field(entry.raw)
100
127
  entry.heading = TextToEntries.clean_field(entry.heading)
101
128
  entry.file = TextToEntries.clean_field(entry.file)
129
+ entry_uri = TextToEntries.clean_field(entry_uri)
102
130
 
103
131
  chunked_entries.append(
104
132
  Entry(
@@ -107,6 +135,7 @@ class TextToEntries(ABC):
107
135
  heading=entry.heading,
108
136
  file=entry.file,
109
137
  corpus_id=corpus_id,
138
+ uri=entry_uri,
110
139
  )
111
140
  )
112
141
 
@@ -192,6 +221,7 @@ class TextToEntries(ABC):
192
221
  file_type=file_type,
193
222
  hashed_value=entry_hash,
194
223
  corpus_id=entry.corpus_id,
224
+ url=entry.uri,
195
225
  search_model=model,
196
226
  file_object=file_object,
197
227
  )
@@ -76,7 +76,11 @@ def _is_retryable_error(exception: BaseException) -> bool:
76
76
  if isinstance(exception, gerrors.APIError):
77
77
  return exception.code in [429, 502, 503, 504]
78
78
  # client errors
79
- if isinstance(exception, httpx.TimeoutException) or isinstance(exception, httpx.NetworkError):
79
+ if (
80
+ isinstance(exception, httpx.TimeoutException)
81
+ or isinstance(exception, httpx.NetworkError)
82
+ or isinstance(exception, httpx.ReadError)
83
+ ):
80
84
  return True
81
85
  # validation errors
82
86
  if isinstance(exception, ValueError):
@@ -646,7 +646,7 @@ def generate_chatml_messages_with_context(
646
646
 
647
647
  if not is_none_or_empty(chat.context):
648
648
  references = "\n\n".join(
649
- {f"# File: {item.file}\n## {item.compiled}\n" for item in chat.context or [] if isinstance(item, dict)}
649
+ {f"# URI: {item.uri}\n## {item.compiled}\n" for item in chat.context or [] if isinstance(item, dict)}
650
650
  )
651
651
  message_context += [{"type": "text", "text": f"{prompts.notes_conversation.format(references=references)}"}]
652
652
 
khoj/routers/helpers.py CHANGED
@@ -1263,8 +1263,9 @@ async def search_documents(
1263
1263
  compiled_references = [
1264
1264
  {
1265
1265
  "query": item.additional["query"],
1266
- "compiled": item.additional["compiled"],
1266
+ "compiled": item["entry"],
1267
1267
  "file": item.additional["file"],
1268
+ "uri": item.additional["uri"],
1268
1269
  }
1269
1270
  for item in search_results
1270
1271
  ]
@@ -2867,6 +2868,7 @@ async def view_file_content(
2867
2868
  {
2868
2869
  "query": query,
2869
2870
  "file": path,
2871
+ "uri": path,
2870
2872
  "compiled": filtered_text,
2871
2873
  }
2872
2874
  ]
@@ -2878,7 +2880,7 @@ async def view_file_content(
2878
2880
  logger.error(error_msg, exc_info=True)
2879
2881
 
2880
2882
  # Return an error result in the expected format
2881
- yield [{"query": query, "file": path, "compiled": error_msg}]
2883
+ yield [{"query": query, "file": path, "uri": path, "compiled": error_msg}]
2882
2884
 
2883
2885
 
2884
2886
  async def grep_files(
@@ -2982,7 +2984,7 @@ async def grep_files(
2982
2984
  max_results,
2983
2985
  )
2984
2986
  if not line_matches:
2985
- yield {"query": query, "file": path_prefix, "compiled": "No matches found."}
2987
+ yield {"query": query, "file": path_prefix, "uri": path_prefix, "compiled": "No matches found."}
2986
2988
  return
2987
2989
 
2988
2990
  # Truncate matched lines list if too long
@@ -2991,7 +2993,7 @@ async def grep_files(
2991
2993
  f"... {len(line_matches) - max_results} more results found. Use stricter regex or path to narrow down results."
2992
2994
  ]
2993
2995
 
2994
- yield {"query": query, "file": path_prefix or "", "compiled": "\n".join(line_matches)}
2996
+ yield {"query": query, "file": path_prefix, "uri": path_prefix, "compiled": "\n".join(line_matches)}
2995
2997
 
2996
2998
  except Exception as e:
2997
2999
  error_msg = f"Error using grep files tool: {str(e)}"
@@ -3000,6 +3002,7 @@ async def grep_files(
3000
3002
  {
3001
3003
  "query": _generate_query(0, 0, path_prefix or "", regex_pattern, lines_before, lines_after),
3002
3004
  "file": path_prefix,
3005
+ "uri": path_prefix,
3003
3006
  "compiled": error_msg,
3004
3007
  }
3005
3008
  ]
@@ -3032,7 +3035,7 @@ async def list_files(
3032
3035
  file_objects = await FileObjectAdapters.aget_file_objects_by_path_prefix(user, path)
3033
3036
 
3034
3037
  if not file_objects:
3035
- yield {"query": _generate_query(0, path, pattern), "file": path, "compiled": "No files found."}
3038
+ yield {"query": _generate_query(0, path, pattern), "file": path, "uri": path, "compiled": "No files found."}
3036
3039
  return
3037
3040
 
3038
3041
  # Extract file names from file objects
@@ -3047,7 +3050,7 @@ async def list_files(
3047
3050
 
3048
3051
  query = _generate_query(len(files), path, pattern)
3049
3052
  if not files:
3050
- yield {"query": query, "file": path, "compiled": "No files found."}
3053
+ yield {"query": query, "file": path, "uri": path, "compiled": "No files found."}
3051
3054
  return
3052
3055
 
3053
3056
  # Truncate the list if it's too long
@@ -3057,9 +3060,9 @@ async def list_files(
3057
3060
  f"... {len(files) - max_files} more files found. Use glob pattern to narrow down results."
3058
3061
  ]
3059
3062
 
3060
- yield {"query": query, "file": path, "compiled": "\n- ".join(files)}
3063
+ yield {"query": query, "file": path, "uri": path, "compiled": "\n- ".join(files)}
3061
3064
 
3062
3065
  except Exception as e:
3063
3066
  error_msg = f"Error listing files in {path}: {str(e)}"
3064
3067
  logger.error(error_msg, exc_info=True)
3065
- yield {"query": query, "file": path, "compiled": error_msg}
3068
+ yield {"query": query, "file": path, "uri": path, "compiled": error_msg}
@@ -157,6 +157,7 @@ def collate_results(hits, dedupe=True):
157
157
  "additional": {
158
158
  "source": hit.file_source,
159
159
  "file": hit.file_path,
160
+ "uri": hit.url,
160
161
  "compiled": hit.compiled,
161
162
  "heading": hit.heading,
162
163
  },
@@ -180,6 +181,7 @@ def deduplicated_search_responses(hits: List[SearchResponse]):
180
181
  "additional": {
181
182
  "source": hit.additional["source"],
182
183
  "file": hit.additional["file"],
184
+ "uri": hit.additional["uri"],
183
185
  "query": hit.additional["query"],
184
186
  "compiled": hit.additional["compiled"],
185
187
  "heading": hit.additional["heading"],
khoj/utils/rawconfig.py CHANGED
@@ -176,6 +176,7 @@ class Entry:
176
176
  compiled: str
177
177
  heading: Optional[str]
178
178
  file: Optional[str]
179
+ uri: Optional[str] = None
179
180
  corpus_id: str
180
181
 
181
182
  def __init__(
@@ -184,6 +185,7 @@ class Entry:
184
185
  compiled: str = None,
185
186
  heading: Optional[str] = None,
186
187
  file: Optional[str] = None,
188
+ uri: Optional[str] = None,
187
189
  corpus_id: uuid.UUID = None,
188
190
  ):
189
191
  self.raw = raw
@@ -191,6 +193,14 @@ class Entry:
191
193
  self.heading = heading
192
194
  self.file = file
193
195
  self.corpus_id = str(corpus_id)
196
+ if uri:
197
+ self.uri = uri
198
+ elif file and (file.startswith("http") or file.startswith("file://")):
199
+ self.uri = file
200
+ elif file:
201
+ self.uri = f"file://{file}"
202
+ else:
203
+ self.uri = None
194
204
 
195
205
  def to_json(self) -> str:
196
206
  return json.dumps(self.__dict__, ensure_ascii=False)
@@ -206,4 +216,5 @@ class Entry:
206
216
  file=dictionary.get("file", None),
207
217
  heading=dictionary.get("heading", None),
208
218
  corpus_id=dictionary.get("corpus_id", None),
219
+ uri=dictionary.get("uri", None),
209
220
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: khoj
3
- Version: 1.42.9.dev17
3
+ Version: 1.42.9.dev26
4
4
  Summary: Your Second Brain
5
5
  Project-URL: Homepage, https://khoj.dev
6
6
  Project-URL: Documentation, https://docs.khoj.dev
@@ -124,40 +124,42 @@ khoj/database/migrations/0089_chatmodel_price_tier_and_more.py,sha256=EJ1Yf6MMzh
124
124
  khoj/database/migrations/0090_alter_khojuser_uuid.py,sha256=2h9v-DiuqFuZKpAyWYwueqZkBHvxZbm-_guRjNaZzxg,3802
125
125
  khoj/database/migrations/0091_chatmodel_friendly_name_and_more.py,sha256=e-2DQhyW9kMxMg7ItGSyCKE5GQFI0ZSuyfD8CdfVa0k,1758
126
126
  khoj/database/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
127
- khoj/database/models/__init__.py,sha256=9XxpiKZFPgJFM0DCqUgAq30r-2fj0I5al6fyNRtY6V4,31280
127
+ khoj/database/models/__init__.py,sha256=euYYDcpdGKtZhU99BSlGNiyzdKWaFWJaAw-GeKvO5r8,31293
128
128
  khoj/interface/compiled/agents.svg,sha256=yFCRwIM-Qawa0C5ggAo3ekb-Q1ElmotBOKIGhtfIQqM,1722
129
129
  khoj/interface/compiled/automation.svg,sha256=o7L2XYwJWRSMvl8h6TBv6Pt28RTRVMHqF04EPY0AFj0,1467
130
130
  khoj/interface/compiled/chat.svg,sha256=l2JoYRRgk201adTTdvJ-buKUrc0WGfsudix5xEvtM3A,2424
131
131
  khoj/interface/compiled/close.svg,sha256=hQ2iFLkNzHk0_iyTrSbwnWAeXYlgA-c2Eof2Iqh76n4,417
132
132
  khoj/interface/compiled/copy-button-success.svg,sha256=byqWAYD3Pn9IOXRjOKudJ-TJbP2UESbQGvtLWazNGjY,829
133
133
  khoj/interface/compiled/copy-button.svg,sha256=05bKM2eRxksfBlAPT7yMaoNJEk85bZCxQg67EVrPeHo,669
134
- khoj/interface/compiled/index.html,sha256=XC1geJ26uWJa_T65iXWfdZlBb5ohOjUCFrMBj1dMIIg,53040
135
- khoj/interface/compiled/index.txt,sha256=4VQHx4b7WNNShYvSnkQbNkzCcxUU9ubbIEubvIQbE1w,7614
134
+ khoj/interface/compiled/index.html,sha256=llwju23GPl4Uak3_R_Dh-Qy4KbzWXYyGAyJlnc60h04,53040
135
+ khoj/interface/compiled/index.txt,sha256=0apXc-6wYWMVpVi0PGB9ygnMKzyQ09HUJcne9YznNEM,7614
136
136
  khoj/interface/compiled/khoj.webmanifest,sha256=9wOK2BMS6xH5NKd2eaUgTLg9WepIxB2K2U33KU89LD8,2543
137
137
  khoj/interface/compiled/logo.svg,sha256=_QCKVYM4WT2Qhcf7aVFImjq_s5CwjynGXYAOgI7yf8w,8059
138
138
  khoj/interface/compiled/send.svg,sha256=VdavOWkVddcwcGcld6pdfmwfz7S91M-9O28cfeiKJkM,635
139
139
  khoj/interface/compiled/share.svg,sha256=91lwo75PvMDrgocuZQab6EQ62CxRbubh9Bhw7CWMKbg,1221
140
140
  khoj/interface/compiled/thumbs-down.svg,sha256=JGNl-DwoRmH2XFMPWwFFklmoYtKxaQbkLE3nuYKe8ZY,1019
141
141
  khoj/interface/compiled/thumbs-up.svg,sha256=yS1wxTRtiztkN-6nZciLoYQUB_KTYNPV8xFRwH2TQFw,1036
142
- khoj/interface/compiled/404/index.html,sha256=j2kmwgT9vN5i-S2ZyggM18nsFiD7B3BJC3f_djdifH0,17097
142
+ khoj/interface/compiled/404/index.html,sha256=NwwpjBbzNIV37RrT7frRTdF1yo-r9ogo1eLzonbmGJc,17097
143
+ khoj/interface/compiled/_next/static/IYGyer2N7GdUJ7QHFghtY/_buildManifest.js,sha256=f2_nYnw25hHWQJ-39Lf5OH1u6kgdbOInyfplqgjvAV4,224
144
+ khoj/interface/compiled/_next/static/IYGyer2N7GdUJ7QHFghtY/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
143
145
  khoj/interface/compiled/_next/static/chunks/1191.b547ec13349b4aed.js,sha256=3qtdOft2SSaGT0qhyPunEraJEZUxIqDV4q3ULnFantg,10913
144
- khoj/interface/compiled/_next/static/chunks/1327-1a9107b9a2a04a98.js,sha256=7NmSOycXRGHpTN98sMAirnWN8ZUL971FsQpWmOs4Fxs,442974
146
+ khoj/interface/compiled/_next/static/chunks/1327-3b1a41af530fa8ee.js,sha256=7NmSOycXRGHpTN98sMAirnWN8ZUL971FsQpWmOs4Fxs,442974
145
147
  khoj/interface/compiled/_next/static/chunks/1588.f0558a0bdffc4761.js,sha256=ZSpLe7ui7FG7AvK00JHPg1YjYz8R9l1Obzu1mYHpzjo,89845
146
- khoj/interface/compiled/_next/static/chunks/1915-5c6508f6ebb62a30.js,sha256=qP_naVeN_Vqu4o2bOYGBoDEYCFVDphWwLqa_3_WeYjU,11294
148
+ khoj/interface/compiled/_next/static/chunks/1915-fbfe167c84ad60c5.js,sha256=qP_naVeN_Vqu4o2bOYGBoDEYCFVDphWwLqa_3_WeYjU,11294
147
149
  khoj/interface/compiled/_next/static/chunks/1918.925cb4a35518d258.js,sha256=WWqQcBDm9KEZUpj0P9p-iiVxoVjnM4PGtAyQXGAZ4yo,6088
148
- khoj/interface/compiled/_next/static/chunks/2117-080746c8e170c81a.js,sha256=yOBtQrL5NRMjI60r4pmZRRTHZv8_xwZm4DQp-RI8H9M,123994
150
+ khoj/interface/compiled/_next/static/chunks/2117-e78b6902ad6f75ec.js,sha256=yOBtQrL5NRMjI60r4pmZRRTHZv8_xwZm4DQp-RI8H9M,123994
149
151
  khoj/interface/compiled/_next/static/chunks/2242.9a07e19f1a3a8b16.js,sha256=gE2wenv7eMCWo8FlC8uOffniVrbcSyi2BfpoDygPJbQ,6535
150
152
  khoj/interface/compiled/_next/static/chunks/2327-ea623ca2d22f78e9.js,sha256=Cwaj5_kmqMRmZH2CdtZG5T5dvdyBL8fL2HrpY4jfLCI,127516
151
153
  khoj/interface/compiled/_next/static/chunks/2612.bcf5a623b3da209e.js,sha256=_odabGQTNjtpFLdU6FmDdC9zZQkYKJOs8_8QVgMJmEI,76988
152
154
  khoj/interface/compiled/_next/static/chunks/2849.dc00ae5ba7219cfc.js,sha256=cVUiYRj2GweNQ4unKpJIhdr_xO5s2hRy3UWK-81rZW8,182
153
- khoj/interface/compiled/_next/static/chunks/2939-4af3fd24b8ffc9ad.js,sha256=8BI0oAQSZQj37UZX_igaTvuTgW0nGvVtvyG9G9byr_k,35749
155
+ khoj/interface/compiled/_next/static/chunks/2939-4d4084c5b888b960.js,sha256=8BI0oAQSZQj37UZX_igaTvuTgW0nGvVtvyG9G9byr_k,35749
154
156
  khoj/interface/compiled/_next/static/chunks/303.fe76de943e930fbd.js,sha256=gvkmkEYSLe4Iy-8Ti4Ty_OYjkHyrIpgUnfuoQSX577g,178
155
157
  khoj/interface/compiled/_next/static/chunks/3265.924139c4146ee344.js,sha256=O0nwy9HzDY8Df66o72--Lw9RguS5Mh4ExT-uBxdRUbA,636
156
158
  khoj/interface/compiled/_next/static/chunks/3489.c523fe96a2eee74f.js,sha256=s2F6I_29rsqcu-8229-nssfws7vZO7cuQJYqehK7tbk,21715
157
159
  khoj/interface/compiled/_next/static/chunks/3592-b2a2444b0ec7b119.js,sha256=ADfFNp0QHqmz0sHmTSpE-hWnh09AxVVzZb6zcx_ATmg,42200
158
160
  khoj/interface/compiled/_next/static/chunks/3595-ac8e81e04ecb89cb.js,sha256=43eYa6m0ZuFnnBOPTa6S-T0WeLftHEZDlkMe4b7fmIA,21564
159
161
  khoj/interface/compiled/_next/static/chunks/4327.8d2a1b8f1ea78208.js,sha256=VKeC1Y6778Nlt-spX9W9dL8Ex-d2N5AEj53AOVUXGWE,322147
160
- khoj/interface/compiled/_next/static/chunks/4447-cd95608f8e93e711.js,sha256=PUldPCrWRAgi5rxqTzWS1boopyuyAQpzzBg-p4TQnNw,19716
162
+ khoj/interface/compiled/_next/static/chunks/4447-d6cf93724d57e34b.js,sha256=PUldPCrWRAgi5rxqTzWS1boopyuyAQpzzBg-p4TQnNw,19716
161
163
  khoj/interface/compiled/_next/static/chunks/4533.586e74b45a2bde25.js,sha256=eDHOyGa-CuCVeyXtnx3YWmjvlpWveAj6Mu-bMlm3OJg,25567
162
164
  khoj/interface/compiled/_next/static/chunks/4551.82ce1476b5516bc2.js,sha256=G1EoTZRkMLtwYqsLCyQ9iA_9nvi8oj7_t3qboNWtdfY,71097
163
165
  khoj/interface/compiled/_next/static/chunks/4609-33aa487dff03a9fd.js,sha256=1M6QAfVZa2g2Q4jXRdSI1wjrZ4G9yKjINJt8qyTKm1A,24698
@@ -183,7 +185,7 @@ khoj/interface/compiled/_next/static/chunks/7760.35649cc21d9585bd.js,sha256=MJ9q
183
185
  khoj/interface/compiled/_next/static/chunks/83.48e2db193a940052.js,sha256=j8X0kemaNExxw4lDZCgkev1HeK37NM_kE6p73WuHjs8,175
184
186
  khoj/interface/compiled/_next/static/chunks/8427.844694e06133fb51.js,sha256=U388feyx6dj6PZblInnwOgAKlPg1f2Vp-oCFhh2SiXY,186
185
187
  khoj/interface/compiled/_next/static/chunks/8665.4db7e6b2e8933497.js,sha256=HovLNJSM0SJRkjLNg0cim_NDnGiVPbUrEQG8YQkGA2Y,45791
186
- khoj/interface/compiled/_next/static/chunks/8667-50b03a89e82e0ba7.js,sha256=kyiAVJTylsiOPFTb63uZn_pMlk4pYhDYt_N7xL76PTM,7214
188
+ khoj/interface/compiled/_next/static/chunks/8667-4b7790573b08c50d.js,sha256=kyiAVJTylsiOPFTb63uZn_pMlk4pYhDYt_N7xL76PTM,7214
187
189
  khoj/interface/compiled/_next/static/chunks/8694.2bd9c2f65d8c5847.js,sha256=JKqMqrtPf1LK-SmVgLk_F8EjAC6IGKl4lnfWU6q4JXA,33661
188
190
  khoj/interface/compiled/_next/static/chunks/872.caf84cc1a39ae59f.js,sha256=xdPZDnCGiugQ4JwV1FzzYyBEvuXQLOqSw_cMbOJKjtw,11253
189
191
  khoj/interface/compiled/_next/static/chunks/8888.ebe0e552b59e7fed.js,sha256=c5icsYFTx7epn588gtjfP9lKKMdINc07w1P7t56ac8E,3775
@@ -207,7 +209,7 @@ khoj/interface/compiled/_next/static/chunks/framework-8e0e0f4a6b83a956.js,sha256
207
209
  khoj/interface/compiled/_next/static/chunks/main-app-de1f09df97a3cfc7.js,sha256=bqnztujKItXfFBzQlaBmDZyfJpQt_M93CXOuchJfpD0,471
208
210
  khoj/interface/compiled/_next/static/chunks/main-fc8e0fefa2ef3d8c.js,sha256=t9FZIByh6V52m41LQ2yyAReF1CAuY7gLMBuWBeKCX2g,116793
209
211
  khoj/interface/compiled/_next/static/chunks/polyfills-42372ed130431b0a.js,sha256=CXPB1kyIrcjjyVBBDLWLKI9yEY1ZZbeASUON648vloM,112594
210
- khoj/interface/compiled/_next/static/chunks/webpack-92ce8aaf95718ec4.js,sha256=OR5QpxV2GcJopVw_IAqTpdrNoeLdfTDIcCbLAhWuvwk,4939
212
+ khoj/interface/compiled/_next/static/chunks/webpack-70e0762712341826.js,sha256=OR5QpxV2GcJopVw_IAqTpdrNoeLdfTDIcCbLAhWuvwk,4939
211
213
  khoj/interface/compiled/_next/static/chunks/app/layout-a0c5495d6c582cea.js,sha256=7JZS2Pr995Lwu3FeQpAvheLS1Bn5w5HOFsecV2_kyQA,3880
212
214
  khoj/interface/compiled/_next/static/chunks/app/page-a19a597629e87fb8.js,sha256=lfXNkiSiwMKG1q3y0S3MUUsvQNznDHtfpwVKtx38gLk,29930
213
215
  khoj/interface/compiled/_next/static/chunks/app/_not-found/page-84f94d15b2da4eac.js,sha256=zElhiTkdu2JqrEvJ8Lrxh4HCyfLmPllBHHWOuDtrVlw,1755
@@ -215,9 +217,9 @@ khoj/interface/compiled/_next/static/chunks/app/agents/layout-4e2a134ec26aa606.j
215
217
  khoj/interface/compiled/_next/static/chunks/app/agents/page-5db6ad18da10d353.js,sha256=zUXTmNbpn0tA_IWn0vSzHWn6GLRW8AAGS6Fa-07bdwY,17483
216
218
  khoj/interface/compiled/_next/static/chunks/app/automations/layout-63603d2cb33279f7.js,sha256=4OX_fcTQdNVs6HxDdJVWdadMVC_gM86Tkqo2TjBA4gw,5143
217
219
  khoj/interface/compiled/_next/static/chunks/app/automations/page-6271e2e31c7571d1.js,sha256=vOD3YLeKBh_M6ZLtlW4m4fbi2YJf5qyo60251kIMtX8,34829
218
- khoj/interface/compiled/_next/static/chunks/app/chat/layout-ad68326d2f849cec.js,sha256=D8LkyLbmfGZmXSddbVSGdFXH6ZW1B6zSSF-3cHsT4yg,180
220
+ khoj/interface/compiled/_next/static/chunks/app/chat/layout-ad4d1792ab1a4108.js,sha256=g815zvSZenVssWcOYjyqAOPDjTCa359nqspXeIsXQ5A,180
219
221
  khoj/interface/compiled/_next/static/chunks/app/chat/page-76fc915800aa90f4.js,sha256=Zdn9ZvCk7vA1eaSnNAAAtvix-KjXJWggDv5VDJrpxsE,29133
220
- khoj/interface/compiled/_next/static/chunks/app/search/layout-484d34239ed0f2b1.js,sha256=L7gJxQXczJP6c7e8t24p_RirmegDRuyJRiGQg364TM4,180
222
+ khoj/interface/compiled/_next/static/chunks/app/search/layout-f5881c7ae3ba0795.js,sha256=Bm4Y73ylR-j9_LdKXVUjgLppZJ6JRdLTUgYAsZCOBkQ,180
221
223
  khoj/interface/compiled/_next/static/chunks/app/search/page-fa366ac14b228688.js,sha256=vdwyjWiRZD2Q6pe2-5K0nZzK7JCGf9tSK1JqbL73X6w,30929
222
224
  khoj/interface/compiled/_next/static/chunks/app/settings/layout-f88cedfe9ad4df7c.js,sha256=aFBEgUCsKnoeyULmh7g-DmaznQ0ztcq6y2pj4bSMCIY,6132
223
225
  khoj/interface/compiled/_next/static/chunks/app/settings/page-8f9a85f96088c18b.js,sha256=g0S5cRFSD0mkplsB5LuU6bi3pe-CEVwmhNuHB14mx3s,27892
@@ -310,10 +312,8 @@ khoj/interface/compiled/_next/static/media/flags.3afdda2f.webp,sha256=M2AW_HLpBn
310
312
  khoj/interface/compiled/_next/static/media/flags@2x.5fbe9fc1.webp,sha256=BBeRPBZkxY3-aKkMnYv5TSkxmbeMbyUH4VRIPfrWg1E,137406
311
313
  khoj/interface/compiled/_next/static/media/globe.98e105ca.webp,sha256=g3ofb8-W9GM75zIhlvQhaS8I2py9TtrovOKR3_7Jf04,514
312
314
  khoj/interface/compiled/_next/static/media/globe@2x.974df6f8.webp,sha256=I_N7Yke3IOoS-0CC6XD8o0IUWG8PdPbrHmf6lpgWlZY,1380
313
- khoj/interface/compiled/_next/static/rRy7eX2lAtmXdtQuJoVrw/_buildManifest.js,sha256=f2_nYnw25hHWQJ-39Lf5OH1u6kgdbOInyfplqgjvAV4,224
314
- khoj/interface/compiled/_next/static/rRy7eX2lAtmXdtQuJoVrw/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
315
- khoj/interface/compiled/agents/index.html,sha256=KbPuzi_SyBwz449wmAE1laZhk8-0vtE_uVLPHlYaDhw,16221
316
- khoj/interface/compiled/agents/index.txt,sha256=fbAAo9Sa5QPouaMkPi7Ur9llgLcRkkCNT90a6ZvCNNU,7218
315
+ khoj/interface/compiled/agents/index.html,sha256=V0ORh6qW2DDfsI1bJSR0SRGzAhzu-_4uHcyJC0EMSEg,16221
316
+ khoj/interface/compiled/agents/index.txt,sha256=2Fj5KumiNL_Jk_H_I5roAFGmYlkdjCyxDSzggfdnPsY,7218
317
317
  khoj/interface/compiled/assets/icons/khoj_lantern.ico,sha256=eggu-B_v3z1R53EjOFhIqqPnICBGdoaw1xnc0NrzHck,174144
318
318
  khoj/interface/compiled/assets/icons/khoj_lantern.svg,sha256=I_8XP5X84gEOoCRhCRKOQn_GKZrz3SUBXct7WxHvY7c,8767
319
319
  khoj/interface/compiled/assets/icons/khoj_lantern_1200x1200.png,sha256=xDx0bbD-WMflgg8zck9oPIIuTIvywtuED2k7CjSQS4w,66194
@@ -328,16 +328,16 @@ khoj/interface/compiled/assets/samples/desktop-remember-plan-sample.png,sha256=i
328
328
  khoj/interface/compiled/assets/samples/phone-browse-draw-sample.png,sha256=Dd4fPwtFl6BWqnHjeb1mCK_ND0hhHsWtx8sNE7EiMuE,406179
329
329
  khoj/interface/compiled/assets/samples/phone-plain-chat-sample.png,sha256=DEDaNRCkfEWUeh3kYZWIQDTVK1a6KKnYdwj5ZWisN_Q,82985
330
330
  khoj/interface/compiled/assets/samples/phone-remember-plan-sample.png,sha256=Ma3blirRmq3X4oYSsDbbT7MDn29rymDrjwmUfA9BMuM,236285
331
- khoj/interface/compiled/automations/index.html,sha256=vU7l6Of0zacaQN0izIHXJYdOtlLy1vUyzpPoDOH-Cg0,54091
332
- khoj/interface/compiled/automations/index.txt,sha256=aKJZT3c_wEf36lzITfIMq_3DtspW4mLJwjO3eKrF3VM,7447
333
- khoj/interface/compiled/chat/index.html,sha256=IMRaNP8pNYOgdzDPiHMj978aW1LAAbvNa6rF1WosHSA,53222
334
- khoj/interface/compiled/chat/index.txt,sha256=U-K2V4LDd8FU4mqza7Bvr0wkLB01eOjZP4nQiaFLzfI,7858
335
- khoj/interface/compiled/search/index.html,sha256=eLgjY24BFopGjtWIspufYUXK7OO-IJgj6zwUyOHbhNU,55301
336
- khoj/interface/compiled/search/index.txt,sha256=0KY8qoQiGTf8dlSqtejS80CkyzAj4bsd7iPI3Y4dS4g,6565
337
- khoj/interface/compiled/settings/index.html,sha256=yVASX7Km9q5qdaGgcSRMxTQHLWIL89wm0rW1tEYMu7Y,52740
338
- khoj/interface/compiled/settings/index.txt,sha256=ZKBrDmQWZOCgmHZovr6DRAerO-Lebr2o09iUgfixGnk,7701
339
- khoj/interface/compiled/share/chat/index.html,sha256=yGXHCfAPw_yE2s5Rx4SkPbMeRngxVMiKprdc6e6oKhE,53802
340
- khoj/interface/compiled/share/chat/index.txt,sha256=ste1sNfy21CK8j6wm5uK1XW8bWGQ5JAgFL_e0xvllW0,8320
331
+ khoj/interface/compiled/automations/index.html,sha256=DJ3t6X5cqZA_hQ4WeRHc4hmIHoBzTJYWzM11GDNN2A0,54091
332
+ khoj/interface/compiled/automations/index.txt,sha256=JOpaPqgL7VK2FAaSn2o2Njt66PHVqsDYTvZHTBfKUSg,7447
333
+ khoj/interface/compiled/chat/index.html,sha256=izvLMhlRMuPRGW1hdnwh2EEti8SXl4HZl8RHj9ASUGA,53222
334
+ khoj/interface/compiled/chat/index.txt,sha256=C889jPfIay6GqWSJLaoJ6_vPjYrFr9nQhn0kD_04X1g,7858
335
+ khoj/interface/compiled/search/index.html,sha256=p1A0DjrbLStWoG7yTJuxC-8MmeTaUjwpSt-qHc7cWqI,55301
336
+ khoj/interface/compiled/search/index.txt,sha256=GO032banF_xMVaO2qk6AM9UEJ30ddP4REkkDRu3cM6c,6565
337
+ khoj/interface/compiled/settings/index.html,sha256=a6pO1TqQ3H6G9lKZv6XnRcZBEI-HmfBQG8WydTFqnYs,52740
338
+ khoj/interface/compiled/settings/index.txt,sha256=6hs0n3ok1aM1bpPOWeZl98oEMxVZNrSDCJ7htnughGU,7701
339
+ khoj/interface/compiled/share/chat/index.html,sha256=-TXttN7uZFBps7pnAuu6uiPvOKeUCJwr2XtgGgjIDkM,53802
340
+ khoj/interface/compiled/share/chat/index.txt,sha256=5s2zBgvPwwE9ROEGbyD9n5G3OZctjM6i1OoZKOiUqa0,8320
341
341
  khoj/interface/email/feedback.html,sha256=xksuPFamx4hGWyTTxZKRgX_eiYQQEuv-eK9Xmkt-nwU,1216
342
342
  khoj/interface/email/magic_link.html,sha256=372ESbTPKM9acekuZcOIKOw6kBl-KikFg_L9MOHqJkg,2094
343
343
  khoj/interface/email/task.html,sha256=tY7a0gzVeQ2lSQNu7WyXR_s7VYeWTrxWEj1iHVuoVE4,2813
@@ -371,7 +371,7 @@ khoj/migrations/migrate_version.py,sha256=6CTsLuxiLnFVF8A7CjsIz3PcnJd8fAOZeIx6tT
371
371
  khoj/processor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
372
372
  khoj/processor/embeddings.py,sha256=-znB8-oL9mGGQLAJdOL9OPNs4Zq9HnMIAQbAMRi38lo,6636
373
373
  khoj/processor/content/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
374
- khoj/processor/content/text_to_entries.py,sha256=bCaKyFkXVqOZAsNytzL81bArrmPyRnircl3uJ3q4svs,14746
374
+ khoj/processor/content/text_to_entries.py,sha256=6kt0AdVe6h371uHAKMgxTBil4nooi5qf1yo9N-0ZvwU,16562
375
375
  khoj/processor/content/docx/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
376
376
  khoj/processor/content/docx/docx_to_entries.py,sha256=OiO_Q1EudlOGqUpWCV9BseSjWZjrR4plk63a6ZPeC-4,4566
377
377
  khoj/processor/content/github/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -379,24 +379,24 @@ khoj/processor/content/github/github_to_entries.py,sha256=UhYiS9H66Hnuj-OBmV3n05
379
379
  khoj/processor/content/images/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
380
380
  khoj/processor/content/images/image_to_entries.py,sha256=4CrS5cXRlMQ87N4lZC3q85VIh57afpGjvlvwBHqtEQs,5125
381
381
  khoj/processor/content/markdown/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
382
- khoj/processor/content/markdown/markdown_to_entries.py,sha256=nyTc_Wehi5U65H_gWkq4NpMm4fjdIprjNrX4tKVpRxU,7109
382
+ khoj/processor/content/markdown/markdown_to_entries.py,sha256=IM7vBoYf_LZ2xcZZ0LvLJ9e9K7ioHCqhfWijAnQfQRc,8592
383
383
  khoj/processor/content/notion/notion_to_entries.py,sha256=hC8u826szKgrtsc2ibdr7EqmBo7OQQ1a2oCKGsejVVk,9839
384
384
  khoj/processor/content/org_mode/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
385
- khoj/processor/content/org_mode/org_to_entries.py,sha256=ASjGlUDpLpdcV00Yi_UiET3WLekuFTO6hWQY9ZQ6mw8,10222
386
- khoj/processor/content/org_mode/orgnode.py,sha256=DlHZICxbCRxqGxA_osYf1faxslxpSuIqbHco8oxAKKM,18478
385
+ khoj/processor/content/org_mode/org_to_entries.py,sha256=Wfx5sBIMsiub8SMj9BkZYzoVKInfU7A0zrn0ArsR5Nc,11013
386
+ khoj/processor/content/org_mode/orgnode.py,sha256=xZ8L3YFLWEidhnyOgaPbsYboaL86BHiSSGy5BWIeNcc,18699
387
387
  khoj/processor/content/pdf/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
388
388
  khoj/processor/content/pdf/pdf_to_entries.py,sha256=GQUvab61okhV9_DK0g2MCrMq8wKpM208EbXvsaTAkzs,4995
389
389
  khoj/processor/content/plaintext/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
390
390
  khoj/processor/content/plaintext/plaintext_to_entries.py,sha256=wFZwK_zIc7gWbRtO9sOHo9KvfhGAzL9psX_nKWYFduo,4975
391
391
  khoj/processor/conversation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
392
392
  khoj/processor/conversation/prompts.py,sha256=F0MVg81Tr7L4W7ubx_UJ-D4PqgGCElTg8KLpQjdPuIk,54207
393
- khoj/processor/conversation/utils.py,sha256=t_Q-EhaXdfqvefpFsB4F2C-_scAneG9OLEyqMYcXjyQ,48443
393
+ khoj/processor/conversation/utils.py,sha256=F8w1I6YGmlXIvOXrTy3-Hp1vDTBdeFG9orAh7ZGFnL0,48441
394
394
  khoj/processor/conversation/anthropic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
395
395
  khoj/processor/conversation/anthropic/anthropic_chat.py,sha256=6IG-YlpFx86EgW3PdGuv4xGMRzvHx4xVUcQMqkKn4vs,5358
396
396
  khoj/processor/conversation/anthropic/utils.py,sha256=kka2nAhqUBn9BNz25x_RbpkiqznWw_u26UdEASgF6BY,16210
397
397
  khoj/processor/conversation/google/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
398
398
  khoj/processor/conversation/google/gemini_chat.py,sha256=L0zKFsU9KwedugmSHRmkD9ZPmzRdQIXHH2o7d-NsWYU,5729
399
- khoj/processor/conversation/google/utils.py,sha256=_uVtttGIEajXarBawCwb1R4MwQiKaCtRaQdpg-NR_wI,19482
399
+ khoj/processor/conversation/google/utils.py,sha256=gjHwcww_eu_v-6v_fo9UtIyfjgFL37bHno_oBYQfGRo,19556
400
400
  khoj/processor/conversation/offline/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
401
401
  khoj/processor/conversation/offline/chat_model.py,sha256=zsb6HJhfHJ5l6cegq0A6k7YAeYIo3CTLhjaD-jW556g,8597
402
402
  khoj/processor/conversation/offline/utils.py,sha256=51McImxl6u1qgRYvMt7uzsgLGSLq5SMFy74ymlNjIcc,3033
@@ -434,7 +434,7 @@ khoj/routers/api_phone.py,sha256=p9yfc4WeMHDC0hg3aQk60a2VBy8rZPdEnz9wdJ7DzkU,220
434
434
  khoj/routers/api_subscription.py,sha256=_Z3gwW5348qrF7sF9rqwkeG291KX5olr9Fd_-ri9faE,6480
435
435
  khoj/routers/auth.py,sha256=jk2lqAS_650lQsoaOFTlZd9W_LL8HbN5zhHTZza_lqs,11258
436
436
  khoj/routers/email.py,sha256=wvr6_fpk0RuKcTPC6suI8JDZPLYzJ9hAhz_G41yZytc,3923
437
- khoj/routers/helpers.py,sha256=oU9AAK7p4uNdz-4u88dtYW17DdV-HOyZt88uGfOfRqU,116049
437
+ khoj/routers/helpers.py,sha256=Sr22Bb9EF93yVoraXE7cWLzXBvLQ6a86DVdIoL5Dx4s,116246
438
438
  khoj/routers/notion.py,sha256=g53xyYFmjr2JnuIrTW2vytbfkiK_UkoRTxqnnLSmD5o,2802
439
439
  khoj/routers/research.py,sha256=GPQJhqpAdmPtcN2gtxzVbDPVQqPg9DqeWPIYF8CZf3s,24197
440
440
  khoj/routers/storage.py,sha256=lao0DvsF49QleZvOdjKM98RU2cGfCJDBb7WeoI7Rr3I,2172
@@ -446,7 +446,7 @@ khoj/search_filter/date_filter.py,sha256=7MCXyeDy9TGG81IesLrgV7vnTUDXWe8xj8NeeES
446
446
  khoj/search_filter/file_filter.py,sha256=H47C8yoVMiSub8VWu8wHerlIq-PffFnB08Nm2OJyBE8,1146
447
447
  khoj/search_filter/word_filter.py,sha256=5Yx95aSiqGke9kEIbp8T-Ak4dS9cTd3VxI1SaJoK1wY,1005
448
448
  khoj/search_type/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
449
- khoj/search_type/text_search.py,sha256=UEzT_NsHDrtVvbPthNtoCECawKMt68S891QYvVoM63c,9527
449
+ khoj/search_type/text_search.py,sha256=CNfKD2grjD9BU2qoA82YVQXC1CTit32tc7_Q8vrYC1M,9621
450
450
  khoj/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
451
451
  khoj/utils/cli.py,sha256=fI1XQYMtJzLGOKQZQ5XxFOrC8sGjK3Alnteg5U62rWI,3882
452
452
  khoj/utils/config.py,sha256=aiOkH0je8A30DAGYTHMRePrgJonFv_i07_7CdhhhcdA,1805
@@ -456,11 +456,11 @@ khoj/utils/helpers.py,sha256=uDTZPZLAUrkdwImHb5HqP0JgC1vOk3T5-XXrciCpgMw,42918
456
456
  khoj/utils/initialization.py,sha256=5eULsvGQv_Kp9bMfrHP8T_QFPjurIFyfq3-rVMWiGa4,15066
457
457
  khoj/utils/jsonl.py,sha256=0Ac_COqr8sLCXntzZtquxuCEVRM2c3yKeDRGhgOBRpQ,1192
458
458
  khoj/utils/models.py,sha256=Q5tcC9-z25sCiub048fLnvZ6_IIO1bcPNxt5payekk0,2009
459
- khoj/utils/rawconfig.py,sha256=ASl_h3Ivaa_4lD4kCA0uZsMRgSYCjrgGUPm-Hw1jkLk,5083
459
+ khoj/utils/rawconfig.py,sha256=U8tOr7FPPzn0h-oyK_8Wqlp2ZrnxpFp44iifcTbltqs,5444
460
460
  khoj/utils/state.py,sha256=s_GFWOqRzpEDx0eCPStuzBTK2VEw-qgRpH0aiEdGnDo,1791
461
461
  khoj/utils/yaml.py,sha256=qy1Tkc61rDMesBw_Cyx2vOR6H-Hngcsm5kYfjwQBwkE,1543
462
- khoj-1.42.9.dev17.dist-info/METADATA,sha256=IgfGvHbRH-GbgUzr3KXArwVWJ7OUwPrYEdjsA9v2YuU,8974
463
- khoj-1.42.9.dev17.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
464
- khoj-1.42.9.dev17.dist-info/entry_points.txt,sha256=KBIcez5N_jCgq_ER4Uxf-e1lxTBMTE_BBjMwwfeZyAg,39
465
- khoj-1.42.9.dev17.dist-info/licenses/LICENSE,sha256=hIahDEOTzuHCU5J2nd07LWwkLW7Hko4UFO__ffsvB-8,34523
466
- khoj-1.42.9.dev17.dist-info/RECORD,,
462
+ khoj-1.42.9.dev26.dist-info/METADATA,sha256=N6INUqQwUvoZp8VvBOxdx3tX8swHsHjxxx6PRmtNLE8,8974
463
+ khoj-1.42.9.dev26.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
464
+ khoj-1.42.9.dev26.dist-info/entry_points.txt,sha256=KBIcez5N_jCgq_ER4Uxf-e1lxTBMTE_BBjMwwfeZyAg,39
465
+ khoj-1.42.9.dev26.dist-info/licenses/LICENSE,sha256=hIahDEOTzuHCU5J2nd07LWwkLW7Hko4UFO__ffsvB-8,34523
466
+ khoj-1.42.9.dev26.dist-info/RECORD,,
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3317,7138,8459,244],{63521:function(){}},function(n){n.O(0,[2971,2117,1744],function(){return n(n.s=63521)}),_N_E=n.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[244,3317,7138,8459],{63521:function(){}},function(n){n.O(0,[2971,2117,1744],function(){return n(n.s=63521)}),_N_E=n.O()}]);