kash-shell 0.3.12__py3-none-any.whl → 0.3.13__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 (59) hide show
  1. kash/actions/core/markdownify.py +5 -4
  2. kash/actions/core/readability.py +4 -4
  3. kash/actions/core/render_as_html.py +6 -4
  4. kash/commands/base/basic_file_commands.py +3 -0
  5. kash/commands/base/diff_commands.py +38 -3
  6. kash/commands/base/reformat_command.py +1 -1
  7. kash/commands/base/show_command.py +1 -1
  8. kash/commands/workspace/selection_commands.py +1 -1
  9. kash/commands/workspace/workspace_commands.py +62 -16
  10. kash/docs/load_source_code.py +1 -1
  11. kash/exec/action_exec.py +4 -5
  12. kash/exec/fetch_url_metadata.py +8 -5
  13. kash/exec/importing.py +4 -4
  14. kash/exec/llm_transforms.py +1 -1
  15. kash/exec/preconditions.py +7 -7
  16. kash/file_storage/file_store.py +73 -32
  17. kash/file_storage/item_file_format.py +1 -1
  18. kash/file_storage/store_filenames.py +2 -1
  19. kash/help/help_embeddings.py +2 -2
  20. kash/llm_utils/clean_headings.py +1 -1
  21. kash/{text_handling → llm_utils}/custom_sliding_transforms.py +0 -3
  22. kash/llm_utils/llm_completion.py +1 -1
  23. kash/local_server/__init__.py +1 -1
  24. kash/local_server/local_server_commands.py +2 -1
  25. kash/mcp/__init__.py +1 -1
  26. kash/mcp/mcp_server_commands.py +8 -2
  27. kash/media_base/media_cache.py +10 -3
  28. kash/model/actions_model.py +3 -0
  29. kash/model/items_model.py +71 -42
  30. kash/shell/ui/shell_results.py +2 -1
  31. kash/utils/common/format_utils.py +0 -8
  32. kash/utils/common/import_utils.py +46 -18
  33. kash/utils/file_utils/file_formats_model.py +46 -26
  34. kash/utils/file_utils/filename_parsing.py +41 -16
  35. kash/{text_handling → utils/text_handling}/doc_normalization.py +10 -8
  36. kash/utils/text_handling/escape_html_tags.py +156 -0
  37. kash/{text_handling → utils/text_handling}/markdown_utils.py +0 -3
  38. kash/utils/text_handling/markdownify_utils.py +87 -0
  39. kash/{text_handling → utils/text_handling}/unified_diffs.py +1 -44
  40. kash/web_content/file_cache_utils.py +42 -34
  41. kash/web_content/local_file_cache.py +29 -12
  42. kash/web_content/web_extract.py +1 -1
  43. kash/web_content/web_extract_readabilipy.py +4 -2
  44. kash/web_content/web_fetch.py +42 -7
  45. kash/web_content/web_page_model.py +2 -1
  46. kash/web_gen/simple_webpage.py +1 -1
  47. kash/web_gen/templates/base_styles.css.jinja +134 -16
  48. kash/web_gen/templates/simple_webpage.html.jinja +1 -1
  49. kash/workspaces/selections.py +2 -2
  50. kash/workspaces/workspace_importing.py +1 -1
  51. kash/workspaces/workspace_output.py +2 -2
  52. kash/xonsh_custom/load_into_xonsh.py +4 -2
  53. {kash_shell-0.3.12.dist-info → kash_shell-0.3.13.dist-info}/METADATA +1 -1
  54. {kash_shell-0.3.12.dist-info → kash_shell-0.3.13.dist-info}/RECORD +58 -57
  55. kash/utils/common/inflection.py +0 -22
  56. /kash/{text_handling → utils/text_handling}/markdown_render.py +0 -0
  57. {kash_shell-0.3.12.dist-info → kash_shell-0.3.13.dist-info}/WHEEL +0 -0
  58. {kash_shell-0.3.12.dist-info → kash_shell-0.3.13.dist-info}/entry_points.txt +0 -0
  59. {kash_shell-0.3.12.dist-info → kash_shell-0.3.13.dist-info}/licenses/LICENSE +0 -0
@@ -4,14 +4,15 @@
4
4
  /* Adding Hack Nerd Font to all fonts for icon support, if it is installed. */
5
5
  --font-sans: "Source Sans 3 Variable", sans-serif, "Hack Nerd Font";
6
6
  --font-serif: "PT Serif", serif, "Hack Nerd Font";
7
- --font-weight-sans-bold: 625; /* Source Sans 3 Variable better at this weight. */
7
+ /* Source Sans 3 Variable better at these weights. */
8
+ --font-weight-sans-bold: 620;
8
9
  --font-mono: "Hack Nerd Font", "Menlo", "DejaVu Sans Mono", Consolas, "Lucida Console", monospace;
9
10
 
10
11
  --font-size-large: 1.2rem;
11
12
  --font-size-normal: 1rem;
12
13
  --font-size-small: 0.95rem;
13
14
  --font-size-smaller: 0.85rem;
14
- --font-size-mono: 0.8rem;
15
+ --font-size-mono: 0.82rem;
15
16
  --font-size-mono-small: 0.75rem;
16
17
  --font-size-mono-tiny: 0.7rem;
17
18
 
@@ -71,7 +72,7 @@
71
72
  body {
72
73
  font-family: var(--font-serif);
73
74
  color: var(--color-text);
74
- line-height: 1.4;
75
+ line-height: 1.5;
75
76
  padding: 0; /* No padding so we can have full width elements. */
76
77
  margin: auto;
77
78
  background-color: var(--color-bg);
@@ -81,10 +82,13 @@ body {
81
82
 
82
83
  {% block typography %}
83
84
  p {
84
- margin-bottom: 1rem;
85
+ margin-top: 0.75rem;
86
+ margin-bottom: 0.75rem;
85
87
  }
88
+
86
89
  pre {
87
- margin-bottom: 1rem;
90
+ margin-top: 0.75rem;
91
+ margin-bottom: 0.75rem;
88
92
  }
89
93
 
90
94
  b, strong {
@@ -117,12 +121,12 @@ h1 {
117
121
 
118
122
  h2 {
119
123
  font-size: 1.4rem;
120
- margin-top: 1.2rem;
124
+ margin-top: 1.5rem;
121
125
  margin-bottom: 1rem;
122
126
  }
123
127
 
124
128
  h3 {
125
- font-size: 1.09rem;
129
+ font-size: 1.03rem;
126
130
  margin-top: 1.5rem;
127
131
  margin-bottom: 0.5rem;
128
132
  }
@@ -134,7 +138,7 @@ h4 {
134
138
 
135
139
  ul {
136
140
  list-style-type: none;
137
- margin-left: 2rem;
141
+ margin-left: 1.8rem;
138
142
  margin-bottom: 1rem;
139
143
  padding-left: 0;
140
144
  }
@@ -158,9 +162,9 @@ ul > li::before {
158
162
  }
159
163
 
160
164
  ol {
161
- margin-bottom: 0.7rem;
162
165
  list-style-type: decimal;
163
- margin-left: 2rem;
166
+ margin-left: 1.8rem;
167
+ margin-bottom: 0.7rem;
164
168
  }
165
169
 
166
170
  ol > li {
@@ -175,24 +179,60 @@ blockquote {
175
179
  color: var(--color-secondary);
176
180
  }
177
181
 
182
+ /* Inline code styling */
178
183
  code {
179
184
  font-family: var(--font-mono);
180
185
  font-size: var(--font-size-mono);
181
186
  letter-spacing: -0.025em;
182
- padding: 0.2rem 0.4rem;
183
187
  }
184
188
 
189
+ /* Code blocks (pre + code) */
185
190
  pre {
186
191
  font-family: var(--font-mono);
187
192
  font-size: var(--font-size-mono);
188
193
  letter-spacing: -0.025em;
189
- {# overflow-x: auto; #}
194
+ background-color: var(--color-bg-alt);
195
+ border-radius: 4px;
196
+ border: 1px dotted var(--color-border-hint);
197
+ padding: 0.2rem 0.2rem 0.1rem 0.2rem;
198
+ overflow-x: auto; /* Enable horizontal scrolling */
199
+ position: relative; /* Create new stacking context */
200
+ }
201
+
202
+ /* Reset code styling when inside pre blocks */
203
+ pre > code {
204
+ display: block; /* Make code block take full width */
205
+ line-height: 1.5; /* Improve readability */
206
+ }
207
+
208
+ hr {
209
+ border: none;
210
+ height: 1.5rem;
211
+ position: relative;
212
+ text-align: center;
213
+ margin: 0.5rem auto;
214
+ overflow: visible;
190
215
  }
216
+
217
+ hr:before {
218
+ content: "";
219
+ display: block;
220
+ position: absolute;
221
+ top: 50%;
222
+ width: 4rem;
223
+ left: calc(50% - 2rem);
224
+ border-top: 1px solid var(--black-light);
225
+ }
226
+
191
227
  {% endblock typography %}
192
228
 
193
229
  {% block long_text_styles %}
194
230
  /* Long text stylings, for nicely formatting blog post length or longer texts. */
195
231
 
232
+ .long-text {
233
+ box-shadow: none;
234
+ }
235
+
196
236
  .long-text h1 {
197
237
  font-family: var(--font-serif);
198
238
  font-weight: 400;
@@ -207,8 +247,9 @@ pre {
207
247
  .long-text h3 {
208
248
  font-family: var(--font-sans);
209
249
  font-weight: var(--font-weight-sans-bold);
250
+ font-size: 1.05rem;
210
251
  text-transform: uppercase;
211
- letter-spacing: 0.02em;
252
+ letter-spacing: 0.025em;
212
253
  }
213
254
 
214
255
  .long-text h4 {
@@ -221,6 +262,41 @@ pre {
221
262
  font-style: italic;
222
263
  font-size: 1rem;
223
264
  }
265
+
266
+ .long-text .sans-text {
267
+ font-family: var(--font-sans);
268
+ }
269
+
270
+ .long-text .sans-text p {
271
+ margin-top: 0.8rem;
272
+ margin-bottom: 0.8rem;
273
+ }
274
+
275
+ .long-text .sans-text h1 {
276
+ font-family: var(--font-sans);
277
+ font-size: 1.75rem;
278
+ font-weight: 380;
279
+ margin-top: 1rem;
280
+ margin-bottom: 1.2rem;
281
+ }
282
+
283
+ .long-text .sans-text h2 {
284
+ font-family: var(--font-sans);
285
+ font-size: 1.25rem;
286
+ font-weight: 440;
287
+ margin-top: 1rem;
288
+ margin-bottom: 0.8rem;
289
+ }
290
+
291
+ .long-text .sans-text h3 {
292
+ font-family: var(--font-sans);
293
+ font-size: 1.03rem;
294
+ font-weight: var(--font-weight-sans-bold);
295
+ text-transform: uppercase;
296
+ letter-spacing: 0.03em;
297
+ margin-top: 1.1rem;
298
+ margin-bottom: 0.8rem;
299
+ }
224
300
  {% endblock long_text_styles %}
225
301
 
226
302
  {% block table_styles %}
@@ -233,12 +309,14 @@ table {
233
309
  border-collapse: collapse;
234
310
  word-break: break-word; /* long words/URLs wrap instead of inflating the column */
235
311
  border: 1px solid var(--color-border-hint);
312
+ line-height: 1.3; /* Tables tigher but not as tight as headers */
236
313
  }
237
314
 
238
315
  th {
239
316
  text-transform: uppercase;
240
- letter-spacing: 0.02em;
317
+ letter-spacing: 0.03em;
241
318
  border-bottom: 1px solid var(--color-border-hint);
319
+ line-height: 1.2;
242
320
  }
243
321
 
244
322
  th, td {
@@ -284,16 +362,17 @@ nav {
284
362
  {% block footnote_styles %}
285
363
  /* Footnotes. */
286
364
  sup {
287
- font-size: 80%;
365
+ font-size: 85%;
288
366
  }
289
367
 
290
368
  .footnote-ref a, .footnote {
369
+ font-family: var(--font-sans);
291
370
  text-decoration: none;
292
371
  padding: 0 0.15rem;
293
372
  border-radius: 4px;
294
373
  transition: all 0.15s ease-in-out;
295
374
  font-style: normal;
296
- font-weight: normal;
375
+ font-weight: 500;
297
376
  }
298
377
 
299
378
  .footnote-ref a:hover, .footnote:hover {
@@ -313,11 +392,50 @@ sup {
313
392
  .table-container {
314
393
  width: calc(100vw - 6rem);
315
394
  }
395
+
396
+ /* Apply shadow to long-text containers on larger screens */
397
+ .long-text {
398
+ box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 -2px 6px -1px rgba(0, 0, 0, 0.07);
399
+ }
400
+ /* But remove shadow when wrapped in no-shadow class */
401
+ .no-shadow .long-text {
402
+ box-shadow: none !important;
403
+ }
316
404
  }
317
405
 
406
+ /* Make narrower screens more usable for lists and tables. */
318
407
  @media (max-width: 768px) {
408
+ /* Prevent horizontal scrolling on the body */
409
+ body {
410
+ overflow-x: hidden;
411
+ }
412
+
413
+ /* Constrain the long-text container */
414
+ .long-text {
415
+ max-width: 100%;
416
+ overflow-x: hidden;
417
+ }
418
+
419
+ /* Make table containers scrollable without affecting page layout */
420
+ .table-container {
421
+ max-width: 100%;
422
+ overflow-x: auto;
423
+ transform: none;
424
+ left: 0;
425
+ position: relative;
426
+ margin-left: auto;
427
+ margin-right: auto;
428
+ }
429
+
319
430
  table {
320
431
  font-size: var(--font-size-smaller);
432
+ /* Tables can be wider than container */
433
+ width: auto;
434
+ min-width: 100%;
435
+ }
436
+
437
+ ul, ol {
438
+ margin-left: 1rem;
321
439
  }
322
440
  }
323
441
  {% endblock responsive_styles %}
@@ -2,7 +2,7 @@
2
2
 
3
3
  <!-- simple_webpage begin main_content block -->
4
4
  {% block main_content %}
5
- <div class="long-text container max-w-3xl mx-auto bg-white py-8 px-6 md:px-16 md:shadow-lg">
5
+ <div class="long-text container max-w-3xl mx-auto bg-white py-4 px-6 md:px-16">
6
6
  {% block page_title %}
7
7
  {% if title and add_title_h1 %}
8
8
  <h1 class="text-center text-4xl mt-6 mb-6">{{ title }}</h1>
@@ -6,13 +6,13 @@ from pathlib import Path
6
6
  from typing import TypeVar
7
7
 
8
8
  from frontmatter_format import new_yaml, yaml_util
9
- from prettyfmt import fmt_lines
9
+ from prettyfmt import fmt_count_items, fmt_lines
10
10
  from pydantic import BaseModel, Field, PrivateAttr, field_serializer, field_validator
11
11
 
12
12
  from kash.config.logger import get_logger
13
13
  from kash.model.paths_model import StorePath
14
14
  from kash.shell.utils.native_utils import native_trash
15
- from kash.utils.common.format_utils import fmt_count_items, fmt_loc
15
+ from kash.utils.common.format_utils import fmt_loc
16
16
  from kash.utils.errors import InvalidInput, InvalidOperation
17
17
 
18
18
  log = get_logger(__name__)
@@ -24,7 +24,7 @@ def import_url(ws: FileStore, url: Url) -> Item:
24
24
  )
25
25
  item = Item(ItemType.resource, url=canon_url, format=Format.url)
26
26
  # No need to overwrite any resource we already have for the identical URL.
27
- store_path = ws.save(item, overwrite=False)
27
+ store_path = ws.save(item, skip_dup_names=True)
28
28
  # Load to fill in any metadata we may already have.
29
29
  item = ws.load(store_path)
30
30
  return item
@@ -3,7 +3,7 @@ from pathlib import Path
3
3
  from chopdiff.divs.parse_divs import parse_divs
4
4
  from flowmark import Wrap
5
5
  from frontmatter_format import fmf_read, fmf_read_frontmatter_raw
6
- from prettyfmt import fmt_size_dual
6
+ from prettyfmt import fmt_count_items, fmt_size_dual
7
7
  from rich.box import SQUARE
8
8
  from rich.panel import Panel
9
9
  from rich.text import Text
@@ -15,7 +15,7 @@ from kash.model.items_model import ItemType
15
15
  from kash.shell.output.kerm_code_utils import click_to_paste
16
16
  from kash.shell.output.shell_formatting import format_name_and_value
17
17
  from kash.shell.output.shell_output import PrintHooks, cprint
18
- from kash.utils.common.format_utils import fmt_count_items, fmt_loc
18
+ from kash.utils.common.format_utils import fmt_loc
19
19
  from kash.utils.file_formats.chat_format import ChatHistory
20
20
  from kash.utils.file_utils.dir_info import get_dir_info
21
21
  from kash.utils.file_utils.file_formats_model import file_format_info
@@ -13,8 +13,6 @@ from kash.commands.help.welcome import welcome
13
13
  from kash.config.logger import get_logger
14
14
  from kash.config.settings import RECOMMENDED_PKGS, check_kerm_code_support
15
15
  from kash.config.text_styles import LOGO_NAME, STYLE_HINT
16
- from kash.local_server.local_server import start_ui_server
17
- from kash.local_server.local_url_formatters import enable_local_urls
18
16
  from kash.mcp.mcp_server_commands import start_mcp_server
19
17
  from kash.shell.output.shell_output import PrintHooks, cprint
20
18
  from kash.shell.version import get_version_tag
@@ -89,6 +87,10 @@ def load_into_xonsh():
89
87
  # Currently only Kerm supports our advanced UI with Kerm codes.
90
88
  supports_kerm_codes = check_kerm_code_support()
91
89
  if supports_kerm_codes:
90
+ # Don't pay for import until needed.
91
+ from kash.local_server.local_server import start_ui_server
92
+ from kash.local_server.local_url_formatters import enable_local_urls
93
+
92
94
  start_ui_server()
93
95
  enable_local_urls(True)
94
96
  else:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kash-shell
3
- Version: 0.3.12
3
+ Version: 0.3.13
4
4
  Summary: The knowledge agent shell (core)
5
5
  Project-URL: Repository, https://github.com/jlevy/kash-shell
6
6
  Author-email: Joshua Levy <joshua@cal.berkeley.edu>
@@ -4,9 +4,9 @@ kash/actions/__init__.py,sha256=a4pQw8O-Y3q5N4Qg2jUV0xEZLX6d164FQhZ6zizY9fE,1357
4
4
  kash/actions/core/assistant_chat.py,sha256=28G20cSr7Z94cltouTPve5TXY3km0lACrRvpLE27fK8,1837
5
5
  kash/actions/core/chat.py,sha256=yCannBFa0cSpR_in-XSSuMm1x2ZZQUCKmlqzhsUfpOo,2696
6
6
  kash/actions/core/format_markdown_template.py,sha256=ZJbtyTSypPo2ewLiGRSyIpVf711vQMhI_-Ng-FgCs80,2991
7
- kash/actions/core/markdownify.py,sha256=3WO940dQGr_5M_Z3QuJHhfPhqr1FyasMY8Vz8LJ3JVE,1140
8
- kash/actions/core/readability.py,sha256=6BoiQrlc8c4REGCOehmKyhhhf2M-pzGhl8VeUS4G0u0,969
9
- kash/actions/core/render_as_html.py,sha256=YbXZ9idT12fHoK5D-IXyECUB3-pwvODs65ljUTfA1VA,1794
7
+ kash/actions/core/markdownify.py,sha256=sCfPXQCylQjrVbZxeRR11kZ8CtFw-tMsUSrRT6gimVU,1190
8
+ kash/actions/core/readability.py,sha256=C71mHruXDoTn0Y6Q5v5FnUfUn1Q4WVuWQ5PbOGpZEuk,985
9
+ kash/actions/core/render_as_html.py,sha256=JdrVvMo3DC1xDQ1SXrTDCLzm3S-Z9V6SSrjG-_z5Stw,1826
10
10
  kash/actions/core/show_webpage.py,sha256=052HG80kSBP98qITp0gfKJ0G4PxGGS0o0N-L64JxWP0,889
11
11
  kash/actions/core/strip_html.py,sha256=FDLN_4CKB11q5cU4NixTf7PGrAq92AjQNbKAdvQDwCY,849
12
12
  kash/actions/core/summarize_as_bullets.py,sha256=Zwr8lNzL77pwpnW_289LQjNBijNDpTPANfFdOJA-PZ4,2070
@@ -15,17 +15,17 @@ kash/actions/core/tabbed_webpage_generate.py,sha256=_w_4LsgDqNnVvtX6Y4Txq56HAwEV
15
15
  kash/actions/meta/write_instructions.py,sha256=zeKKX-Yi8jSyjvZ4Ii_4MNBRtM2MENuHyrD0Vxsaos8,1277
16
16
  kash/actions/meta/write_new_action.py,sha256=w7SJZ2FjzRbKwqKX9PeozUrh8cNJAumX7F80wW7dQts,6356
17
17
  kash/commands/__init__.py,sha256=MhdPSluWGE3XVQ7LSv2L8_aAxaey8CLjQBjGC9B4nRM,191
18
- kash/commands/base/basic_file_commands.py,sha256=5jvyEVK6JruCXt3w0h1kF8BCjoKbaDt9psVtHngpOdA,6982
18
+ kash/commands/base/basic_file_commands.py,sha256=7xQreY3oewiJKYZYqcMZtClhqyKirg1WTXf95tXAPtc,7061
19
19
  kash/commands/base/browser_commands.py,sha256=iYvpW4D_tlhW_p0cq3A6YO9UGCdHtvzIQiNMDwCY07A,1574
20
20
  kash/commands/base/debug_commands.py,sha256=9I5W3SMQvsnpcs-b6CJCYu1Ydl6gIoTUcDZxvn1dN3g,7643
21
- kash/commands/base/diff_commands.py,sha256=U2geK6TLji9hnSfKW1DDGICaawm9p6Ht_Way6W_34AY,3446
21
+ kash/commands/base/diff_commands.py,sha256=gOeSyCPg95LBnL6JobCR7lQHNS_c-29bDo1aIJkfyGw,4913
22
22
  kash/commands/base/files_command.py,sha256=KZjlBSJ3_e2YazZFMGr2ybAdsp5bcf9JBj3_3CHaRyc,16768
23
23
  kash/commands/base/general_commands.py,sha256=KaCbzk7o-ejwXE_H3PB3MrN00uTinP3T8uHKYrGPrIw,6946
24
24
  kash/commands/base/logs_commands.py,sha256=IyNgxaAoa5LlS-VxD_x8bXTVbD04pT8qEHlIJNM09UU,2963
25
25
  kash/commands/base/model_commands.py,sha256=d17a2NvfDbwV1y8gyZVsOtX-j5H5we5OEXM9TxTqvBs,1790
26
- kash/commands/base/reformat_command.py,sha256=C4EJz4DRrNon8TLgzlUeR64iLIdorGwx2nRGviI8zxs,1863
26
+ kash/commands/base/reformat_command.py,sha256=fhGSfC8KyPsEcKWq6lXXlXSIPRw1CweLIFsS3AmYGYU,1869
27
27
  kash/commands/base/search_command.py,sha256=FXtP09HmmfHRrjenvmU4j0Lcw34piIzdI3UFGbUQ1tg,2201
28
- kash/commands/base/show_command.py,sha256=J0zw8gBcDQJ0nI47EkrGY9VfNFb_thQXcxNCele9av8,2895
28
+ kash/commands/base/show_command.py,sha256=YMTyIQhlva2HvMkoLxhBKDUeiSi7OHYCinW6oT-8lVE,2895
29
29
  kash/commands/extras/parse_uv_lock.py,sha256=HVqmGhJAd3ZCTTTaXe_nzzTMFKhwjLLP7hx4NTM224U,5696
30
30
  kash/commands/extras/utils_commands.py,sha256=rz3N7VxoUHvCxksRt-sLubkvyW-VH9OTltLEMEnjRfU,769
31
31
  kash/commands/help/assistant_commands.py,sha256=BhGhtyoiEbu6xYfi-r47g_U4pxptUkucyNmiv5_kg34,3042
@@ -33,8 +33,8 @@ kash/commands/help/doc_commands.py,sha256=7lKR7mzue2N7pSkNqblpFJy892fS5N6jWVOHqe
33
33
  kash/commands/help/help_commands.py,sha256=eJTpIhXck123PAUq2k-D3Q6UL6IQ8atOVYurLi2GD0A,4229
34
34
  kash/commands/help/logo.py,sha256=W8SUach9FjoTqpHZwTGS582ry4ZluxbBp86ZCiAtDkY,3505
35
35
  kash/commands/help/welcome.py,sha256=F4QBgj3e1dM9Pf0H4TSzCrkVfXQVKUIl0b6Qmofbdo4,905
36
- kash/commands/workspace/selection_commands.py,sha256=JyQMLXKydn_vvlNrltHNXfQtMjDEc_x3K96d12ZLt4s,7447
37
- kash/commands/workspace/workspace_commands.py,sha256=ktNDRbOD0ZIJVb3Zfj1KMQQvMXTxTaNRUylJ9hLk9nU,22646
36
+ kash/commands/workspace/selection_commands.py,sha256=yr0fFPlFIJUPHyFni1byXz8UDvYstIw4oRpOMa8iOBo,7428
37
+ kash/commands/workspace/workspace_commands.py,sha256=0dyZ2EkThWArW5MfSjGVottgXKtibKXAVfI41NGvsUM,24177
38
38
  kash/config/__init__.py,sha256=ytly9Typ1mWV4CXfV9G3CIPtPQ02u2rpZ304L3GlFro,148
39
39
  kash/config/capture_output.py,sha256=ud3uUVNuDicHj3mI_nBUBO-VmOrxtBdA3z-I3D1lSCU,2398
40
40
  kash/config/colors.py,sha256=6lqrB2RQYF2OLw-njfOqVHO9Bwiq7bW6K1ROCOAd1EM,9949
@@ -54,7 +54,7 @@ kash/docs/all_docs.py,sha256=NutfgU8VOA7_K2HX18FoOHVvvLL14dALoCxK9qDbQ04,3157
54
54
  kash/docs/load_actions_info.py,sha256=D9uv8gdBtkBmdbFZeyIigsupPF9_WfidHVwWQrlggI0,937
55
55
  kash/docs/load_api_docs.py,sha256=6fj2Y92JWE-edYWh5mvSFmZp8YVrIunXXq_CNbqgk5c,484
56
56
  kash/docs/load_help_topics.py,sha256=49RbwYS_Qn8JJI5q8Nlj-SpQ95xRDOSGuEKOWaDhUSM,1583
57
- kash/docs/load_source_code.py,sha256=ysVZKUnLOrnRAIo_M25tPcYO64_fBdssD3-2XUx-4hg,4123
57
+ kash/docs/load_source_code.py,sha256=CtMBUXrRetSO81HYW-DgJZ0bL_9Nn4GNidGKg-U11LU,4133
58
58
  kash/docs/markdown/api_docs_template.md,sha256=nUjrV5FhDql8odjjPiwOK8roCUiauy31G2ARiS_OGiQ,1457
59
59
  kash/docs/markdown/assistant_instructions_template.md,sha256=Fzeledd_nr3bKhvQ1qZfMqyNtA7-_e05J5Jx5ecerBA,4758
60
60
  kash/docs/markdown/readme_template.md,sha256=iGx9IjSni1t_9BuYD5d2GgkxkNIkqvE3k78IufHF6Yg,409
@@ -82,18 +82,18 @@ kash/embeddings/embeddings.py,sha256=v6RmrEHsx5PuE3fPrY15RK4fgW0K_VlNWDTjCVr11zY
82
82
  kash/embeddings/text_similarity.py,sha256=BOo9Vcs5oi2Zs5La56uTkPMHo65XSd4qz_yr6GTfUA4,1924
83
83
  kash/exec/__init__.py,sha256=rdSsKzTaXfSZmD5JvmUSSwmpfvl-moNv9PUgtE_WUpQ,1148
84
84
  kash/exec/action_decorators.py,sha256=VOSCnFiev2_DuFoSk0i_moejwM4wJ1j6QfsQd93uetI,16480
85
- kash/exec/action_exec.py,sha256=_NVf4Il_lntGtRosDmZdRHxLL0QPmlr3_x6MpuVID2Q,18567
85
+ kash/exec/action_exec.py,sha256=RXuTvsnkVqnE_PdbFqCWZ94morLUd06folT0lcmwCwk,18563
86
86
  kash/exec/action_registry.py,sha256=numU9pH_W5RgIrYmfi0iYMYy_kLJl6vup8PMrhxAfdc,2627
87
87
  kash/exec/combiners.py,sha256=AJ6wgPUHsmwanObsUw64B83XzU26yuh5t4l7igLn82I,4291
88
88
  kash/exec/command_exec.py,sha256=zc-gWm7kyB5J5Kp8xhULQ9Jj9AL927KkDPXXk-Yr1Bw,1292
89
89
  kash/exec/command_registry.py,sha256=1s2ogU8b8nqK_AEtslbr1eYrXCGDkeT30UrB7L0BRoM,2027
90
- kash/exec/fetch_url_metadata.py,sha256=mgS4zwPw0HAVYIroTeKN_whMyoVE2DUDN_W6ylO3gVw,2656
90
+ kash/exec/fetch_url_metadata.py,sha256=0mUE6mj47vEKUFuunOfGWcAmmlQ3HrhyTQtMzqzNJ0Y,2721
91
91
  kash/exec/history.py,sha256=l2XwHGBR1UgTGSFPSBE9mltmxvjR_5qFFO6d-Z008nc,1208
92
- kash/exec/importing.py,sha256=i1utrbqpn8MKfCQ06vavka_cjNaYRHaWnsy0ygNRbxI,1825
93
- kash/exec/llm_transforms.py,sha256=nr_9C0aW6-EL9LvZIr7nG040js9W1BOiR4FyTg94WSc,4372
92
+ kash/exec/importing.py,sha256=xunmBapeUMNc6Zox7y6e_DZkidyWeouiFZpphajwSzc,1843
93
+ kash/exec/llm_transforms.py,sha256=p_aLp70VoIgheW4v8uoweeuEVWj06AzQekvn_jM3B-g,4378
94
94
  kash/exec/precondition_checks.py,sha256=HymxL7qm4Yz8V76Um5pKdIRnQ2N-p9rpQQi1fI38bNA,2139
95
95
  kash/exec/precondition_registry.py,sha256=cmp0mUfLS42AbAByDhwGx8GWz9PuZNR7z5rPZW9WQE4,1244
96
- kash/exec/preconditions.py,sha256=Ar37VJgPRQR1nh5y_SRqDRa2dI0D4rJYcO92oWHeSzo,4333
96
+ kash/exec/preconditions.py,sha256=yJSQ1MWnejxQHPH4ULb6mEPPsMUK_ViLkUaFMW09z_w,4375
97
97
  kash/exec/resolve_args.py,sha256=yGU6Jjzn5yyAN9pNZx8Qfc9oBrosFEdazIs5g9pjWTs,4410
98
98
  kash/exec/runtime_settings.py,sha256=aK6nGbZhKSIDVmV6AqV68hQkiaIGWnCiNzHtwwZ5V0w,3960
99
99
  kash/exec/shell_callable_action.py,sha256=x-Hs4EqpsZfKEcwhWkhc27HCIfoI91b-DrbG40BLxRY,4350
@@ -103,19 +103,19 @@ kash/exec_model/commands_model.py,sha256=iM8QhzA0tAas5OwF5liUfHtm45XIH1LcvCviuh3
103
103
  kash/exec_model/script_model.py,sha256=1VG3LhkTmlKzHOYouZ92ZpOSKSCcsz3-tHNcFMQF788,5031
104
104
  kash/exec_model/shell_model.py,sha256=LUhQivbpXlerM-DUzNY7BtctNBbn08Wto8CSSxQDxRU,568
105
105
  kash/file_storage/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
106
- kash/file_storage/file_store.py,sha256=ibIqaNqimfGDH_xN-IBQ1ySAkdbGc5kUI-qZOt4cFsE,26669
107
- kash/file_storage/item_file_format.py,sha256=GIOAD95hxbhmbsbcClim1YOQUP4Qar1uHL6UtebuyAE,5469
106
+ kash/file_storage/file_store.py,sha256=_Up5TkgnIekVfPZ4mCyhjMUxLtGL_GsAhcpo1m3-Dj0,28428
107
+ kash/file_storage/item_file_format.py,sha256=YAz7VqyfIoiSLQOoFdWsp-FI_2tTLXAPi8V8QXbo5ag,5475
108
108
  kash/file_storage/metadata_dirs.py,sha256=9AqO3S3SSY1dtvP2iLX--E4ui0VIzXttG8R040otfyg,3820
109
109
  kash/file_storage/persisted_yaml.py,sha256=4-4RkFqdlBUkTOwkdA4vRKUywEE9TaDo13OGaDUyU9M,1309
110
110
  kash/file_storage/store_cache_warmer.py,sha256=cQ_KwxkBPWT3lMmYOCTkXgo7CKaGINns2YzIH32ExSU,1013
111
- kash/file_storage/store_filenames.py,sha256=YKpeuFEWgT4SgArhhU97NW13YK0TgfY3Ozp1Hm3F9Z8,1738
111
+ kash/file_storage/store_filenames.py,sha256=RmuZ3hHuo95bV9Jv5qtUqN8NdJU8qI_7SYqgc5B5UL4,1720
112
112
  kash/help/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
113
113
  kash/help/assistant.py,sha256=R0XHNi-h51QoQ7rGouD2chrDPGomYaPQUqJdvpjlCs8,11535
114
114
  kash/help/assistant_instructions.py,sha256=jW5XAsmLx8YZMKSDJgWnqo9Vwe7VuiTURQHjKBqr_L8,2549
115
115
  kash/help/assistant_output.py,sha256=9sM-OVLc6eMSOkxyovB88dNlsknFpf8Wz89Zp5PuEA8,1668
116
116
  kash/help/docstring_utils.py,sha256=80vcEGR05G1wwIfzaKhX5QzU38mkKna-gN6_wTNHjXg,3208
117
117
  kash/help/function_param_info.py,sha256=IVi6dtRjAWUCxpy9rZ1fRqKLCciK_kuMybTwCZ9XiYg,1692
118
- kash/help/help_embeddings.py,sha256=_ca7hPo_2UPwSGnB2k3KbcNU1b_I9OMI4RH2Z2E1PCU,2777
118
+ kash/help/help_embeddings.py,sha256=le7yqxGOtzIU_LUkl-Ef-7WQGuWa0wAOx9umZGva8zg,2787
119
119
  kash/help/help_lookups.py,sha256=0dtuLWEXncqhJCijC98IA9stBDNNcJewt1JYqMLkTx4,2029
120
120
  kash/help/help_pages.py,sha256=XyV3SN1cvGjpS8xAbZ_X_6Z9hTIH7vXdgK8DCX2cwNg,3886
121
121
  kash/help/help_printing.py,sha256=NAJa8qfaZGce5NKtUqdyDE8Ey0ag2ywjL2LP8ACT060,6078
@@ -123,32 +123,33 @@ kash/help/help_types.py,sha256=xo0AXfaNjlMrWp6dkGixo6P61n1tIhFhlvv9sWhNBrI,7909
123
123
  kash/help/recommended_commands.py,sha256=jqc3TjWFBqDJ-iSzXn8vTOplb4uHndwvdAGJfcUV_qs,2486
124
124
  kash/help/tldr_help.py,sha256=bcu__MIF4vYlZEeqQqieGIBcRhNCTK5u8jPV08ObzCI,9654
125
125
  kash/llm_utils/__init__.py,sha256=3yjign7KD-kM3ZBBcgtrZz-zjJ2Yx2Q-9bzknBx5vbU,401
126
- kash/llm_utils/clean_headings.py,sha256=TGUcPSmUMepTPF5st8b4Jbe9TzZ6HD0Jf_9Nh1SoilA,2330
126
+ kash/llm_utils/clean_headings.py,sha256=hxOnkqFjb34-SZp1sHnpOHJT1Is1mwadIQHJefWUJxA,2336
127
+ kash/llm_utils/custom_sliding_transforms.py,sha256=z07WCdBoiywBIGk2EXK3xY4t_6g8IBCHBmgi_9jQKKQ,9735
127
128
  kash/llm_utils/fuzzy_parsing.py,sha256=bbG2Y7i5w6kxAVPAixyluv3MDS2hW_pkhnJpVOLHZQc,3278
128
129
  kash/llm_utils/init_litellm.py,sha256=5Fn9uW4P7lfEO8Rk1EJJUzDEGNjw-PDvxFgHlKDf-Ok,409
129
130
  kash/llm_utils/llm_api_keys.py,sha256=nTB9wSFfHTOXvqshSQCQGCPxUwOW1U7oslngya8nHkw,1168
130
- kash/llm_utils/llm_completion.py,sha256=uIw6GEV17KXjOzZDshRO8LQ4faglyOAjY_Ny2D86EVg,5451
131
+ kash/llm_utils/llm_completion.py,sha256=qhDYRjiknAFrDm31atD8b22Rs_XwZELTft3eoiGgFp8,5442
131
132
  kash/llm_utils/llm_features.py,sha256=NXZ3nvwcsVe0RLj3TtlK9gUu-UWoxdCU6Uw2X2IChrk,1773
132
133
  kash/llm_utils/llm_messages.py,sha256=70QwIIvdwo-h4Jfn_6MbEHb3LTUjUmzg_v_dU_Ey__g,1174
133
134
  kash/llm_utils/llm_names.py,sha256=VZbdKnoeBx_luB5YQ-Rz37gMt3_FcueJdp40ZaQbpUA,3620
134
135
  kash/llm_utils/llms.py,sha256=Zz45v7qrmBNGnmyF-Mn5Q4F1dZGFT2xf_kmWGUMSUUw,3518
135
- kash/local_server/__init__.py,sha256=kLah74GG0msEARgH6CrilY3OUPuivvx_fXVCqDzDMrc,142
136
+ kash/local_server/__init__.py,sha256=AyNpvCOJlQF6A4DnlYKRMbbfRNzdizEA-ytp-F2SLZU,162
136
137
  kash/local_server/local_server.py,sha256=EugjL30VM0pWdZDsiQxU-o6EdEa082qlGd_7RHvI5tk,5863
137
- kash/local_server/local_server_commands.py,sha256=xJQ1vHVWqkbPwRMw9LwHE8CnKrb8uWeXItI1ruQPx2Y,1584
138
+ kash/local_server/local_server_commands.py,sha256=ZMp1DpYgg-MJ0iqH0DHfhWKDpFqNRG_txkRdODIr9mU,1661
138
139
  kash/local_server/local_server_routes.py,sha256=SgYB_BQ8SRED_4Wtba6iwl_5y3Yjrn-5s9q3zEPsgC8,10533
139
140
  kash/local_server/local_url_formatters.py,sha256=SqHjGMEufvm43n34SCa_8Asdwm7utx91Wwymj15TuSY,5327
140
141
  kash/local_server/port_tools.py,sha256=oFfOvO6keqS5GowTpVg2FTu5KqkPHBq-dWAEomUIgGo,2008
141
142
  kash/local_server/rich_html_template.py,sha256=O9CnkMYkWuMvKJkqD0P8jaZqfUe6hMP4LXFvcLpwN8Q,196
142
- kash/mcp/__init__.py,sha256=kLah74GG0msEARgH6CrilY3OUPuivvx_fXVCqDzDMrc,142
143
+ kash/mcp/__init__.py,sha256=HA_aFskEchpAwA0wOKi5nasytx2JZfH8z9oCVXUI7MQ,160
143
144
  kash/mcp/mcp_cli.py,sha256=po0BrdAYwrhmzX4X6ro1wT7XOYSZgK3XxgI7BCZRYtA,3841
144
145
  kash/mcp/mcp_main.py,sha256=6PhjKwp631mezDTUAd-pL8lUZx9Gl7yCrCQFW61pqJU,3167
145
- kash/mcp/mcp_server_commands.py,sha256=dPvW6fE5FRQuaK5Gurg9_Mjk-U-sdoQ17tXOm3_Wh6Q,4163
146
+ kash/mcp/mcp_server_commands.py,sha256=C-gKLbUVEpF76SmW3NgjlEWoM3YaA3ARrCos5UH1Zh8,4345
146
147
  kash/mcp/mcp_server_routes.py,sha256=radxy5cc0yBmcbqAbB1LpZ0qcNtfDbtS5RTGwvgliDM,10617
147
148
  kash/mcp/mcp_server_sse.py,sha256=_D61cRWMuxgMrk-KxhkRLaaXXpgzJJa0sOB3uRxR0XM,5886
148
149
  kash/mcp/mcp_server_stdio.py,sha256=u-oeIZKwzIAGlKmBpipC-hfNQKx36Md9hST11y3AZUY,1174
149
150
  kash/media_base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
150
151
  kash/media_base/audio_processing.py,sha256=k8V3SpQrSzdxHiInei4z6LycoAnfpQ2dttOfWhWLTX8,2874
151
- kash/media_base/media_cache.py,sha256=0YnZBCPbi12TG0eZoa-02XBoRVZAEmmR6XT8PS-avBI,7453
152
+ kash/media_base/media_cache.py,sha256=Exf3BoFmze9Kn4EuGZ0RYB8FeYB1beg_EAxoJfMjWK0,7551
152
153
  kash/media_base/media_services.py,sha256=7H7Y-WDjvZCidoLCsWi01xfuJoP7uiUklviwN_78crE,3406
153
154
  kash/media_base/media_tools.py,sha256=enzSebW41vDBGWUwkEn5udhRHmSBvH01MAt5rY1s388,1466
154
155
  kash/media_base/timestamp_citations.py,sha256=IHTvlZD3lIfe8T2uHFitgom82WahdHBeKqyc2OjUi9g,2368
@@ -157,13 +158,13 @@ kash/media_base/transcription_format.py,sha256=rOVPTpwvW22c27BRwYF-Tc_xzqK_wOtUZ
157
158
  kash/media_base/transcription_whisper.py,sha256=GqvroW9kBAH4-gcbYkMgNCfs2MpMIgm1ip3NMWtJ0IE,1169
158
159
  kash/media_base/services/local_file_media.py,sha256=-A-tK6XP7XDCqXQIAoohesFZ3OIvpXWsDoktYBvBuNA,5399
159
160
  kash/model/__init__.py,sha256=kFfBKb5N70NWYUfpRRxn_Sb9p_vXlB6BBaTCqWmSReo,2978
160
- kash/model/actions_model.py,sha256=f7CBBkhgpbqdRWVoC8VVn8KL-_dGBoiSTz219WKtMZk,21720
161
+ kash/model/actions_model.py,sha256=7HbcEjm_-wckFE2hhec6oh7n8sqZ58G14yKahSEiOG8,21859
161
162
  kash/model/assistant_response_model.py,sha256=6eDfC27nyuBDFjv5nCYMa_Qb2mPbKwDzZy7uLOIyskI,2653
162
163
  kash/model/compound_actions_model.py,sha256=HiDK5wwCu3WwZYHATZoLEguiqwR9V6V296wiKtGIX8s,6926
163
164
  kash/model/concept_model.py,sha256=we2qOcy9Mv1q7XPfkDLp_CyO_-8DwAUfUYlpgy_jrFs,1011
164
165
  kash/model/exec_model.py,sha256=IlfvtQyoFRRWhWju7vdXp9J-w_NGcGtL5DhDLy9gRd8,2250
165
166
  kash/model/graph_model.py,sha256=jnctrPiBZ0xwAR8D54JMAJPanA1yZdaxSFQoIpe8anA,2662
166
- kash/model/items_model.py,sha256=Qvo7yot4G4rXRtdiO91VIehJUtE488ilbGF_V-zXhWY,33489
167
+ kash/model/items_model.py,sha256=OZ88M15qp0m2OnUqu1pvrJrGrP-hANdXUVbCXdKKrqQ,34700
167
168
  kash/model/language_list.py,sha256=I3RIbxTseVmPdhExQimimEv18Gmy2ImMbpXe0-_t1Qw,450
168
169
  kash/model/llm_actions_model.py,sha256=a29uXVNfS2CiqvM7HPdC6H9A23rSQQihAideuBLMH8g,2110
169
170
  kash/model/media_model.py,sha256=64Zic4cRjQpgf_-tOuZlZZe59mz_qu0s6OQSU0YlDUI,3357
@@ -191,23 +192,17 @@ kash/shell/output/kmarkdown.py,sha256=RRB5b0Ip0KZ71vnJKFfvxerYkeDFTCVTlHqHfmMy80
191
192
  kash/shell/output/shell_formatting.py,sha256=oxmAeJ2j0ANYSUsL15CUv--KcGlQ6Wa_rywXSDlsZM4,3331
192
193
  kash/shell/output/shell_output.py,sha256=J3c6L_gkMgjwla4U0LkXsyzLODVAGbkVuLK0zKvf-JQ,11178
193
194
  kash/shell/ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
194
- kash/shell/ui/shell_results.py,sha256=vO_9UUnI_cr1ZJqCSFgeVwGFy7JLsrEpIAobKvTdkmo,4109
195
+ kash/shell/ui/shell_results.py,sha256=mvFHxK_oz3bNfF5_Twt6VqDO44TA1b256Bjf5oco804,4130
195
196
  kash/shell/ui/shell_syntax.py,sha256=1fuDqcCV16AAWwWS4w4iT-tlSnl-Ywdrf68Ge8XIfmQ,751
196
197
  kash/shell/utils/exception_printing.py,sha256=UizjOkBPhW6YbkiFP965BE5FrCwn04MXGDbxyTuyvOk,1908
197
198
  kash/shell/utils/native_utils.py,sha256=FtIjjB1sOgNifTx1u7nKSAwg9A8wc9-fkACw2_xWnNg,9153
198
199
  kash/shell/utils/shell_function_wrapper.py,sha256=fgUuVhocYMKLkGJJQJOER5nFMAvM0ZVpfGu7iJPJI9s,7385
199
- kash/text_handling/custom_sliding_transforms.py,sha256=stbvN8McdHqC8oOs7QYK0J-Rh3kBLxxxbw7kjlOLKfM,9764
200
- kash/text_handling/doc_normalization.py,sha256=LvAsdz-lkKI0NG5-Nn3XTM2bbMXSCO5Hw2dEQ8dzYqw,2755
201
- kash/text_handling/markdown_render.py,sha256=Ea-QiBND0kp4Dc9rYr8Z3dB_CRpAxneGHBOlTDWsDo0,3751
202
- kash/text_handling/markdown_utils.py,sha256=abrtwF1wMWxOIya0KB3tgO4y6Oj9kjU-RF8fjCR4wJA,9853
203
- kash/text_handling/unified_diffs.py,sha256=AS5el-uPkXwpRA9bD46dyMo-YBDXb7zRF_MH3c47shA,4335
204
200
  kash/utils/__init__.py,sha256=4Jl_AtgRADdGORimWhYZwbSfQSpQ6SiexNIZzmbcngI,111
205
201
  kash/utils/errors.py,sha256=2lPL0fxI8pPOiDvjl0j-rvwY8uhmWetsrYYIc2-x1WY,3906
206
202
  kash/utils/common/__init__.py,sha256=ggeWw1xmbl1mgCQD3c4CNN2h5WXFCsN2wXlCWurEUEI,161
207
- kash/utils/common/format_utils.py,sha256=6zDHYsFlDzNGaqMkxXyYcX806tXwn-9rv0mJDMT-pUo,2343
203
+ kash/utils/common/format_utils.py,sha256=83FhAwbMnOQIFudpnOGMuCqCiyoAlWGS6cc8q6xgZus,2072
208
204
  kash/utils/common/function_inspect.py,sha256=gJ7jzd14hpuhJW18kxj6MgC2Q60nhYccQK78tq_hf_M,14085
209
- kash/utils/common/import_utils.py,sha256=FUsasP-PgxOtRIutm3SnCGH_MBPK6pxUb-oc6dXT0aA,3428
210
- kash/utils/common/inflection.py,sha256=efufYj57MCGJeKv30BKVf0mfMX_MmJCT7PiiQKqVhw8,531
205
+ kash/utils/common/import_utils.py,sha256=zyCa5sG_vTxzgIgjOS98xAwqkSeCQzN-8UkM6k9ZZOI,4615
211
206
  kash/utils/common/lazyobject.py,sha256=9dmOfSheblOXgo2RRakMwgfPIKdTgtyrlm6dCKAze04,5157
212
207
  kash/utils/common/obj_replace.py,sha256=AuiXptUOnuDNcWDgAJ3jEHkLh89XIqCP_SOkgaVyFIQ,2075
213
208
  kash/utils/common/parse_key_vals.py,sha256=yZRZIa5GD9SlnBSn2YNZm8PRVKoSJMY8DCmdGujQj_I,2418
@@ -222,10 +217,10 @@ kash/utils/file_utils/__init__.py,sha256=loL_iW0oOZs0mJ5GelBPptBcqzYKSWdsGcHrpRy
222
217
  kash/utils/file_utils/dir_info.py,sha256=HamMr58k_DanTLifj7A2JDxTGWXEZZx2pQuE6Hjcm8g,1856
223
218
  kash/utils/file_utils/file_ext.py,sha256=-H63vlrVI3pfE2Cn_9qF7-QLDaUIu_njc4TieNgAHSY,1860
224
219
  kash/utils/file_utils/file_formats.py,sha256=tmrmqM5YTxfvlpvqmeOVz0yVRuPxxIAkVZf1-D0fp5Y,4902
225
- kash/utils/file_utils/file_formats_model.py,sha256=DQdwshgfKjzS8a8teDZA_PQrn1saxRlY-gvekxtFdPw,15039
220
+ kash/utils/file_utils/file_formats_model.py,sha256=pwCkt84xOmt2cvnPk4uB5lB6q9pKy_ARr-o4OE2t8A0,15801
226
221
  kash/utils/file_utils/file_sort_filter.py,sha256=_k1chT3dJl5lSmKA2PW90KaoG4k4zftGdtwWoNEljP4,7136
227
222
  kash/utils/file_utils/file_walk.py,sha256=cpwVDPuaVm95_ZwFJiAdIuZAGhASI3gJ3ZUsCGP75b8,5527
228
- kash/utils/file_utils/filename_parsing.py,sha256=sxrZGOv1d4YOCRRtLlpkpYdB-7fIQJqIzUDGH2_S9EA,3350
223
+ kash/utils/file_utils/filename_parsing.py,sha256=drHrH2B9W_5yAbXURNGJxNqj9GmTe8FayH6Gjw9e4-U,4194
229
224
  kash/utils/file_utils/ignore_files.py,sha256=QJ0SFeGdxSCaf4v45qQE_BMsMT5nOgomma0TuJRibp8,3546
230
225
  kash/utils/file_utils/mtime_cache.py,sha256=1QvAPdBSvKZL3j2cxm4lgZYTik4QdeIIC8Tz_pcOoAU,3360
231
226
  kash/utils/file_utils/path_utils.py,sha256=x0__A1-5Cjsit_RZr-wnNNQEzgVJ93Es5zSdJk7Ycz0,1069
@@ -236,40 +231,46 @@ kash/utils/rich_custom/ansi_cell_len.py,sha256=oQlNrqWB0f6pmigkbRRyeK6oWlGHMPbV_
236
231
  kash/utils/rich_custom/rich_char_transform.py,sha256=3M89tViKM0y31VHsDoHi5eHFWlv5ME7F4p35IdDxnrw,2616
237
232
  kash/utils/rich_custom/rich_indent.py,sha256=nz72yNpUuYjOsaPNVmxM81oEQm-GKEfQkNsuWmv16G0,2286
238
233
  kash/utils/rich_custom/rich_markdown_fork.py,sha256=M_JRaSAyHrSg-wuLv9C9P7SkehSim3lwkqQPuMIFkVw,26551
234
+ kash/utils/text_handling/doc_normalization.py,sha256=Lz2wiSXCFGT15S9siNksiiND08uQIj3sgFCYYWkamT8,2786
235
+ kash/utils/text_handling/escape_html_tags.py,sha256=7ZNQw3wfGzATVBBKmJMWmBTuznEPGzS6utjrH9HmmlQ,6361
236
+ kash/utils/text_handling/markdown_render.py,sha256=Ea-QiBND0kp4Dc9rYr8Z3dB_CRpAxneGHBOlTDWsDo0,3751
237
+ kash/utils/text_handling/markdown_utils.py,sha256=ndEd5ai80ZjSeMR104KLmAj0LOCPZln0ntd9tP5mf-E,9783
238
+ kash/utils/text_handling/markdownify_utils.py,sha256=xNMlBX36BJ5VK5kxY2Ofo-Q84R2kBSM91u1grkQ-5As,2925
239
+ kash/utils/text_handling/unified_diffs.py,sha256=JfHSakISkT_GuBPBI4fTooHrp2aenWzDKiVvDewVfMk,2655
239
240
  kash/web_content/canon_url.py,sha256=Zv2q7xQdIHBFkxxwyJn3_ME-qqMFRi_fKxE_IgV2Z50,742
240
241
  kash/web_content/dir_store.py,sha256=BJc-s-RL5CC-GwhFTC_lhLXSMWluPPnLVmVBx-66DiM,3425
241
- kash/web_content/file_cache_utils.py,sha256=VZfN6AD_yQT4Q-G3w5QRoCSFeynq0BSOUxcRmltQa0c,5070
242
+ kash/web_content/file_cache_utils.py,sha256=JRXUCAmrc83iAgdiICU2EYGWcoORflWNl6GAVq-O80I,5529
242
243
  kash/web_content/file_processing.py,sha256=cQC-MnJMM5qG9-y0S4yobkmRi6A75qhHjV6xTwbtYDY,1904
243
- kash/web_content/local_file_cache.py,sha256=pkGrFF32idDjY0IL0NkzBKWKvVS_tzy0yy3c0mOdcZA,8431
244
- kash/web_content/web_extract.py,sha256=TjfVyVN7bAtKjGRpgeuV-Mr3VBAZuJE0hZ63rSlJ1gU,2296
244
+ kash/web_content/local_file_cache.py,sha256=zajvWajDx-TYMGn3p8-K4KZOo2C2PQOomQRLbT3808o,8968
245
+ kash/web_content/web_extract.py,sha256=LbuG4AFEeIiXyUrN9CAxX0ret41Fqu_iTJSjIWyk3Bg,2296
245
246
  kash/web_content/web_extract_justext.py,sha256=74HLJBKDGKatwxyRDX6za70bZG9LrVmtj9jLX7UJzg4,2540
246
- kash/web_content/web_extract_readabilipy.py,sha256=yxwO-bVtRGepOobqa3AWSVe7WYCOBvWJV9Sktp60_UI,763
247
- kash/web_content/web_fetch.py,sha256=dy3p-jrZY2szSgMUgLYWzEbMPsuFopPWKS0C8WIYgMM,3737
248
- kash/web_content/web_page_model.py,sha256=g9GUJpPJOd3-3mwajVodA3dcapDg1CMHxnPczXKEWUk,657
247
+ kash/web_content/web_extract_readabilipy.py,sha256=IT7ET5IoU2-Nf37-Neh6CkKMvLL3WTNVJjq7ZMOx6OM,808
248
+ kash/web_content/web_fetch.py,sha256=J8DLFP1vzp7aScanFq0Bd7xCP6AVL4JgMMBqyRPtZjQ,4720
249
+ kash/web_content/web_page_model.py,sha256=9bPuqZxXo6hSUB_llEcz8bs3W1lW0r-Y3Q7pZgknlQU,693
249
250
  kash/web_gen/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
250
- kash/web_gen/simple_webpage.py,sha256=Lu99W277NT04lnFCrLEjea_RI0VcD56BDk8mUW1bRh4,1393
251
+ kash/web_gen/simple_webpage.py,sha256=c_kLXAsjP9wB9-ppF7MMJMw5VHXzVwkcHymfo5YOfS0,1402
251
252
  kash/web_gen/tabbed_webpage.py,sha256=Q_Htw2QO0O9H3A9OFrWw9GBD73cbwB6hOKF-W6mO6YE,4807
252
253
  kash/web_gen/template_render.py,sha256=aypo6UanouftV4RpxgNm6JdquelI52fV0IlihdA3yjE,1908
253
- kash/web_gen/templates/base_styles.css.jinja,sha256=4_-ipKCvne_WrzNZVEB7VwztXJgTrVAPlqIOfrjOVSM,6610
254
+ kash/web_gen/templates/base_styles.css.jinja,sha256=sPYXVMtK1f-Ndf6zbHv71gdq_lkkOwjf8JNqDc_37go,9176
254
255
  kash/web_gen/templates/base_webpage.html.jinja,sha256=Nvdd8pLSG2OdbrDQRvYcexYIZoMdr1G_7MdUVHNDoA8,7945
255
256
  kash/web_gen/templates/content_styles.css.jinja,sha256=3qcIwIt3DipCDJa9z6oIM_BMxmwoT7E_loTK0F3L9Vo,3629
256
257
  kash/web_gen/templates/explain_view.html.jinja,sha256=DNw5Iw5SrhIUFRGB4qNvfcKXsBHVbEJVURGdhvyC75Q,949
257
258
  kash/web_gen/templates/item_view.html.jinja,sha256=-Rqf2qS9KNbcJp9q1OOtl1aBGgPuwG7jc2Bgw_6YfBg,6791
258
- kash/web_gen/templates/simple_webpage.html.jinja,sha256=wUUOVhOjCRyHxjOhIl3dcRwppENOzgWaskiM0nX8TNU,721
259
+ kash/web_gen/templates/simple_webpage.html.jinja,sha256=_59sVXjRUdrArz_l9S4SYJQubxMJg61XDhYs-lE1Qoo,708
259
260
  kash/web_gen/templates/tabbed_webpage.html.jinja,sha256=u7gabDsCs3neQQlH1y1rIaqT8UumPKVPPZG4VKg5R_g,1823
260
261
  kash/workspaces/__init__.py,sha256=q1gFERRZLJMA9-XSUKvB1ulauHDKqyzzc86GFLbxAuk,700
261
262
  kash/workspaces/param_state.py,sha256=vT_eGWqg2SRviIM5jqEAauznX2B5Xt2nHHu2oRxTcIU,746
262
- kash/workspaces/selections.py,sha256=bles1G_XueDIP9-kjuTmb1BfI1KK9mBTuHZ2GxJLrEM,12003
263
+ kash/workspaces/selections.py,sha256=rEUuQlrQ3C_54bzBSKDTTptgX8oZPqN0Ao4uaXSWA-Q,12003
263
264
  kash/workspaces/source_items.py,sha256=Pwnw3OhjR2IJEMEeHf6hpKloj-ellM5vsY7LgkGevRY,2861
264
265
  kash/workspaces/workspace_dirs.py,sha256=kjuY4t7mSSXq00fZmln7p9TWq4kAZoPTCDM0DG7uEaI,1545
265
- kash/workspaces/workspace_importing.py,sha256=s7_OpRRLI-L58bjoOe4fo8czZsVFLBNgaB6VuzhUPUs,1930
266
- kash/workspaces/workspace_output.py,sha256=dEtXBCdGufupiG2hzB1xZQpS3E-vbVfqHlpRfPWTBRE,5692
266
+ kash/workspaces/workspace_importing.py,sha256=4IJo713Kuoynhd_lcZF9M_DZ0rrMK_IDfhTVgwKmVyQ,1934
267
+ kash/workspaces/workspace_output.py,sha256=MMg_KumkHKFGc0DOUFaW5ImpgqIfdlsLtvXbLEt1hwI,5692
267
268
  kash/workspaces/workspace_registry.py,sha256=SQt2DZgBEu95Zj9fpy67XdJPgJyKFDCU2laSuiZswNo,2200
268
269
  kash/workspaces/workspaces.py,sha256=kQyS3F57Y9A9xVT_Ss7HzJhDGlI-UXHKvRDnEVkBnik,6764
269
270
  kash/xonsh_custom/command_nl_utils.py,sha256=6Xcx98HXL5HywziHi0XskwFx6kfvz7oCmMX-siJib1A,3392
270
271
  kash/xonsh_custom/custom_shell.py,sha256=jydWwHR0-RslioaHHY1sHnM6H6fG3cwOw1XO__sG_b0,19026
271
272
  kash/xonsh_custom/customize_prompt.py,sha256=u-jRY-ftXYflBkbJVetEg6GYelPUvqZEpjrPRUTfy8w,6896
272
- kash/xonsh_custom/load_into_xonsh.py,sha256=D7x6mgcz5XPho39GvbGO2MK81KpeCSNJNGvsajyKx-E,3620
273
+ kash/xonsh_custom/load_into_xonsh.py,sha256=3EuSXUOLz8ZCWrTHQUoaDHPB8koMY14Hhfbeo6idPns,3694
273
274
  kash/xonsh_custom/shell_load_commands.py,sha256=bndmVEecIhuzQBI3OUDpH4ac7DXGkAMUVqXXcbrmEqI,4719
274
275
  kash/xonsh_custom/shell_which.py,sha256=zRaLhFVg9HEDFXo4dqWKwX07YpfPh25kopeG_fgctOE,1926
275
276
  kash/xonsh_custom/xonsh_completers.py,sha256=jxsc279DwZUHm0-iCnCtvbzqJBtq8zu0FUls5J1BA8o,17959
@@ -279,8 +280,8 @@ kash/xonsh_custom/xonsh_modern_tools.py,sha256=mj_b34LZXfE8MJe9EpDmp5JZ0tDM1biYN
279
280
  kash/xonsh_custom/xonsh_ranking_completer.py,sha256=ZRGiAfoEgqgnlq2-ReUVEaX5oOgW1DQ9WxIv2OJLuTo,5620
280
281
  kash/xontrib/fnm.py,sha256=V2tsOdmIDgbFbZSfMLpsvDIwwJJqiYnOkOySD1cXNXw,3700
281
282
  kash/xontrib/kash_extension.py,sha256=JRRJC3cZSMOl4sSWEdKAQ_dVRMubWaOltKr8G0dWt6Y,1876
282
- kash_shell-0.3.12.dist-info/METADATA,sha256=AziaMFV9B3BAhc_nn8N5gvS7d9O0_he_bBVhYc96LDM,31258
283
- kash_shell-0.3.12.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
284
- kash_shell-0.3.12.dist-info/entry_points.txt,sha256=SQraWDAo8SqYpthLXThei0mf_hGGyhYBUO-Er_0HcwI,85
285
- kash_shell-0.3.12.dist-info/licenses/LICENSE,sha256=rCh2PsfYeiU6FK_0wb58kHGm_Fj5c43fdcHEexiVzIo,34562
286
- kash_shell-0.3.12.dist-info/RECORD,,
283
+ kash_shell-0.3.13.dist-info/METADATA,sha256=X_tk6xWJni7Il0DKb_fAD8VCQR4D6y64XFyy5VZNap4,31258
284
+ kash_shell-0.3.13.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
285
+ kash_shell-0.3.13.dist-info/entry_points.txt,sha256=SQraWDAo8SqYpthLXThei0mf_hGGyhYBUO-Er_0HcwI,85
286
+ kash_shell-0.3.13.dist-info/licenses/LICENSE,sha256=rCh2PsfYeiU6FK_0wb58kHGm_Fj5c43fdcHEexiVzIo,34562
287
+ kash_shell-0.3.13.dist-info/RECORD,,