kash-shell 0.3.28__py3-none-any.whl → 0.3.33__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 (74) hide show
  1. kash/actions/core/chat.py +1 -0
  2. kash/actions/core/markdownify_html.py +4 -5
  3. kash/actions/core/minify_html.py +4 -5
  4. kash/actions/core/readability.py +1 -4
  5. kash/actions/core/render_as_html.py +10 -7
  6. kash/actions/core/save_sidematter_meta.py +47 -0
  7. kash/actions/core/show_webpage.py +2 -0
  8. kash/actions/core/zip_sidematter.py +47 -0
  9. kash/commands/base/basic_file_commands.py +7 -4
  10. kash/commands/base/diff_commands.py +6 -4
  11. kash/commands/base/files_command.py +31 -30
  12. kash/commands/base/general_commands.py +3 -2
  13. kash/commands/base/logs_commands.py +6 -4
  14. kash/commands/base/reformat_command.py +3 -2
  15. kash/commands/base/search_command.py +4 -3
  16. kash/commands/base/show_command.py +9 -7
  17. kash/commands/help/assistant_commands.py +6 -4
  18. kash/commands/help/help_commands.py +7 -4
  19. kash/commands/workspace/selection_commands.py +18 -16
  20. kash/commands/workspace/workspace_commands.py +39 -26
  21. kash/config/logger.py +1 -1
  22. kash/config/setup.py +2 -27
  23. kash/config/text_styles.py +1 -1
  24. kash/docs/markdown/topics/a1_what_is_kash.md +26 -18
  25. kash/docs/markdown/topics/a2_installation.md +3 -2
  26. kash/exec/action_decorators.py +7 -5
  27. kash/exec/action_exec.py +104 -53
  28. kash/exec/fetch_url_items.py +40 -11
  29. kash/exec/llm_transforms.py +14 -5
  30. kash/exec/preconditions.py +2 -2
  31. kash/exec/resolve_args.py +4 -1
  32. kash/exec/runtime_settings.py +3 -0
  33. kash/file_storage/file_store.py +108 -114
  34. kash/file_storage/item_file_format.py +91 -26
  35. kash/file_storage/item_id_index.py +128 -0
  36. kash/help/help_types.py +1 -1
  37. kash/llm_utils/llms.py +6 -1
  38. kash/local_server/local_server_commands.py +2 -1
  39. kash/mcp/mcp_server_commands.py +3 -2
  40. kash/mcp/mcp_server_routes.py +42 -12
  41. kash/model/actions_model.py +44 -32
  42. kash/model/compound_actions_model.py +4 -3
  43. kash/model/exec_model.py +33 -3
  44. kash/model/items_model.py +150 -60
  45. kash/model/params_model.py +4 -4
  46. kash/shell/output/shell_output.py +1 -2
  47. kash/utils/api_utils/gather_limited.py +2 -0
  48. kash/utils/api_utils/multitask_gather.py +74 -0
  49. kash/utils/common/s3_utils.py +108 -0
  50. kash/utils/common/url.py +16 -4
  51. kash/utils/file_formats/chat_format.py +7 -4
  52. kash/utils/file_utils/file_ext.py +1 -0
  53. kash/utils/file_utils/file_formats.py +4 -2
  54. kash/utils/file_utils/file_formats_model.py +12 -0
  55. kash/utils/text_handling/doc_normalization.py +1 -1
  56. kash/utils/text_handling/markdown_footnotes.py +224 -0
  57. kash/utils/text_handling/markdown_utils.py +532 -41
  58. kash/utils/text_handling/markdownify_utils.py +2 -1
  59. kash/web_content/web_fetch.py +2 -1
  60. kash/web_gen/templates/components/tooltip_scripts.js.jinja +186 -1
  61. kash/web_gen/templates/components/youtube_popover_scripts.js.jinja +223 -0
  62. kash/web_gen/templates/components/youtube_popover_styles.css.jinja +150 -0
  63. kash/web_gen/templates/content_styles.css.jinja +53 -1
  64. kash/web_gen/templates/youtube_webpage.html.jinja +47 -0
  65. kash/web_gen/webpage_render.py +103 -0
  66. kash/workspaces/workspaces.py +0 -5
  67. kash/xonsh_custom/custom_shell.py +4 -3
  68. {kash_shell-0.3.28.dist-info → kash_shell-0.3.33.dist-info}/METADATA +35 -26
  69. {kash_shell-0.3.28.dist-info → kash_shell-0.3.33.dist-info}/RECORD +72 -64
  70. kash/llm_utils/llm_features.py +0 -72
  71. kash/web_gen/simple_webpage.py +0 -55
  72. {kash_shell-0.3.28.dist-info → kash_shell-0.3.33.dist-info}/WHEEL +0 -0
  73. {kash_shell-0.3.28.dist-info → kash_shell-0.3.33.dist-info}/entry_points.txt +0 -0
  74. {kash_shell-0.3.28.dist-info → kash_shell-0.3.33.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,47 @@
1
+ {% extends "simple_webpage.html.jinja" %}
2
+
3
+ {#
4
+ Extends the simple page with a right-side YouTube popover player.
5
+ Usage: pass page_template="youtube_webpage.html.jinja" to simple_webpage_render.
6
+ #}
7
+
8
+ {% block custom_styles %}
9
+ {{ super() }}
10
+ <style>
11
+ {% include "components/youtube_popover_styles.css.jinja" %}
12
+ </style>
13
+ {% endblock custom_styles %}
14
+
15
+ {% block body_footer %}
16
+ {{ super() }}
17
+ {# Backdrop for mobile, mirrors TOC backdrop behavior #}
18
+ <div class="yt-backdrop" id="yt-backdrop"></div>
19
+ <div id="yt-popover" class="yt-popover" aria-hidden="true">
20
+ <div class="yt-popover-header">
21
+ <div class="yt-title" id="yt-title"></div>
22
+ <div class="yt-controls">
23
+ <button class="button yt-maximize" aria-label="maximize video"><i data-feather="maximize"></i></button>
24
+ <button class="button yt-close" aria-label="close video"><i data-feather="x"></i></button>
25
+ </div>
26
+ </div>
27
+ <div class="yt-player-wrap">
28
+ <iframe
29
+ id="yt-iframe"
30
+ class="yt-iframe"
31
+ title="YouTube video player"
32
+ frameborder="0"
33
+ allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
34
+ allowfullscreen
35
+ ></iframe>
36
+ </div>
37
+ </div>
38
+ {% endblock body_footer %}
39
+
40
+ {% block scripts_extra %}
41
+ {{ super() }}
42
+ <script>
43
+ {% include "components/youtube_popover_scripts.js.jinja" %}
44
+ </script>
45
+ {% endblock scripts_extra %}
46
+
47
+
@@ -0,0 +1,103 @@
1
+ from chopdiff.html import rewrite_html_img_urls
2
+ from sidematter_format import Sidematter, copy_sidematter
3
+
4
+ from kash.config.logger import get_logger
5
+ from kash.model.items_model import Item
6
+ from kash.utils.file_utils.file_formats_model import Format
7
+ from kash.utils.text_handling.markdown_utils import rewrite_image_urls
8
+ from kash.web_gen.template_render import render_web_template
9
+ from kash.workspaces.workspaces import current_ws
10
+
11
+ log = get_logger(__name__)
12
+
13
+
14
+ def copy_item_sidematter(
15
+ input_item: Item,
16
+ result_item: Item,
17
+ ) -> tuple[str, str]:
18
+ """
19
+ Copy the sidematter of an item to a new item. Useful for copying assets, especially images.
20
+ """
21
+ ws = current_ws()
22
+
23
+ # Manually copy over metadata and assets. This makes image assets work.
24
+ assert input_item.store_path
25
+ src_path = ws.base_dir / input_item.store_path
26
+ dest_path = ws.assign_store_path(result_item)
27
+
28
+ log.message(
29
+ "Copying sidematter and assets: %s -> %s",
30
+ input_item.store_path,
31
+ result_item.store_path,
32
+ )
33
+ copy_sidematter(
34
+ src_path=src_path,
35
+ dest_path=dest_path,
36
+ make_parents=True,
37
+ copy_original=False,
38
+ )
39
+
40
+ old_prefix = Sidematter(src_path).assets_dir.name
41
+ new_prefix = Sidematter(dest_path).assets_dir.name
42
+
43
+ return old_prefix, new_prefix
44
+
45
+
46
+ def rewrite_item_image_urls(
47
+ input_item: Item,
48
+ old_prefix: str,
49
+ new_prefix: str,
50
+ ) -> Item:
51
+ """
52
+ Rewrite image path prefixes. Useful when we are rendering an item with sidematter
53
+ asset paths.
54
+ """
55
+
56
+ # Rewrite image paths to be relative to the workspace.
57
+ assert input_item.body
58
+ if input_item.format in (Format.markdown, Format.md_html):
59
+ rewritten_body = rewrite_image_urls(input_item.body, old_prefix, new_prefix)
60
+ elif input_item.format == Format.html:
61
+ rewritten_body = rewrite_html_img_urls(
62
+ input_item.body, from_prefix=old_prefix, to_prefix=new_prefix
63
+ )
64
+ else:
65
+ rewritten_body = input_item.body
66
+
67
+ change_str = "found" if rewritten_body != input_item.body else "none found"
68
+ log.message("Rewrote doc image paths (%s): `%s` -> `%s`", change_str, old_prefix, new_prefix)
69
+ rewritten_item = input_item.derived_copy(body=rewritten_body)
70
+
71
+ return rewritten_item
72
+
73
+
74
+ def render_item_as_html(
75
+ input_item: Item,
76
+ result_item: Item,
77
+ *,
78
+ add_title_h1: bool,
79
+ template_filename: str = "youtube_webpage.html.jinja",
80
+ ) -> Item:
81
+ """
82
+ Render an item as HTML, including copying sidematter and assets.
83
+ Also rewrites image paths to be relative to the workspace.
84
+ The partly filled-in result item is needed to be able to assign a store path.
85
+ If `add_title_h1` is True, the title will be inserted as an h1 heading above the body.
86
+ """
87
+
88
+ old_prefix, new_prefix = copy_item_sidematter(input_item, result_item)
89
+
90
+ rewritten_item = rewrite_item_image_urls(input_item, old_prefix, new_prefix)
91
+
92
+ result_item.body = render_web_template(
93
+ template_filename=template_filename,
94
+ data={
95
+ "title": input_item.pick_title(),
96
+ "add_title_h1": add_title_h1,
97
+ "content_html": rewritten_item.body_as_html(),
98
+ "thumbnail_url": input_item.thumbnail_url,
99
+ "enable_themes": True,
100
+ "show_theme_toggle": True,
101
+ },
102
+ )
103
+ return result_item
@@ -53,11 +53,6 @@ class Workspace(ABC):
53
53
  def base_dir(self) -> Path:
54
54
  """The base directory for this workspace."""
55
55
 
56
- @property
57
- @abstractmethod
58
- def assets_dir(self) -> Path:
59
- """The directory for this workspace's assets."""
60
-
61
56
 
62
57
  def resolve_ws(name: str | Path) -> WorkspaceInfo:
63
58
  """
@@ -100,7 +100,7 @@ class CustomPTKPromptFormatter(PTKPromptFormatter):
100
100
  if isinstance(result, FormattedText):
101
101
  return result
102
102
  except Exception as e:
103
- log.error("Error formatting prompt: evaluating %s: %s", template, e)
103
+ log.error("Error formatting prompt: evaluating %s: %s", template, e, exc_info=True)
104
104
  # On any error, return a simple fallback prompt.
105
105
  return FormattedText([("", "$ ")])
106
106
  # If it's not FormattedText, use it as the template for parent formatter
@@ -431,8 +431,9 @@ def start_shell(single_command: str | None = None, ready_event: threading.Event
431
431
  other customizations but then the rest of the customization is via the `kash_extension`
432
432
  xontrib.
433
433
 
434
- :param single_command: Optional command to run in non-interactive mode
435
- :param shell_ready_event: Optional event to signal when shell is ready
434
+ Args:
435
+ single_command: Optional command to run in non-interactive mode
436
+ shell_ready_event: Optional event to signal when shell is ready
436
437
  """
437
438
  import builtins
438
439
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kash-shell
3
- Version: 0.3.28
3
+ Version: 0.3.33
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>
@@ -20,7 +20,7 @@ Requires-Dist: aiolimiter>=1.2.1
20
20
  Requires-Dist: anyio>=4.8.0
21
21
  Requires-Dist: audioop-lts>=0.2.1; python_version >= '3.13'
22
22
  Requires-Dist: cachetools>=5.5.2
23
- Requires-Dist: chopdiff>=0.2.3
23
+ Requires-Dist: chopdiff>=0.2.5
24
24
  Requires-Dist: clideps>=0.1.4
25
25
  Requires-Dist: colour>=0.1.5
26
26
  Requires-Dist: cssselect>=1.2.0
@@ -28,8 +28,8 @@ Requires-Dist: curl-cffi>=0.11.4
28
28
  Requires-Dist: deepgram-sdk>=3.10.1
29
29
  Requires-Dist: dunamai>=1.23.0
30
30
  Requires-Dist: fastapi>=0.115.11
31
- Requires-Dist: flowmark>=0.5.2
32
- Requires-Dist: frontmatter-format>=0.2.2
31
+ Requires-Dist: flowmark>=0.5.3
32
+ Requires-Dist: frontmatter-format>=0.2.3
33
33
  Requires-Dist: funlog>=0.2.0
34
34
  Requires-Dist: httpx[brotli]>=0.28.1
35
35
  Requires-Dist: humanfriendly>=10.0
@@ -46,7 +46,7 @@ Requires-Dist: pandas>=2.2.3
46
46
  Requires-Dist: patch-ng>=1.18.1
47
47
  Requires-Dist: pathspec>=0.12.1
48
48
  Requires-Dist: pluralizer>=1.2.0
49
- Requires-Dist: prettyfmt>=0.3.1
49
+ Requires-Dist: prettyfmt>=0.4.1
50
50
  Requires-Dist: prompt-toolkit>=3.0.50
51
51
  Requires-Dist: pydantic>=2.10.6
52
52
  Requires-Dist: pydub>=0.25.1
@@ -62,9 +62,10 @@ Requires-Dist: regex>=2024.11.6
62
62
  Requires-Dist: rich-argparse>=1.7.0
63
63
  Requires-Dist: rich>=14.0.0
64
64
  Requires-Dist: ripgrepy>=2.1.0
65
+ Requires-Dist: selectolax>=0.3.32
65
66
  Requires-Dist: send2trash>=1.8.3
66
67
  Requires-Dist: setproctitle>=1.3.5
67
- Requires-Dist: sidematter-format>=0.0.1
68
+ Requires-Dist: sidematter-format>=0.0.5
68
69
  Requires-Dist: strif>=3.0.1
69
70
  Requires-Dist: tenacity>=9.0.0
70
71
  Requires-Dist: thefuzz>=0.22.1
@@ -85,6 +86,19 @@ src="https://github.com/user-attachments/assets/a5d62ae4-17e6-46bb-a9cb-3b6ec8d8
85
86
 
86
87
  </div>
87
88
 
89
+ ## Hello!
90
+
91
+ If you’re seeing this, you there’s a good chance I shared it with you for feedback.
92
+ Thank you for checking out Kash.
93
+
94
+ It’s new, the result of some experimentation over the past few months.
95
+ I like a lot of things about it but it isn’t mature and I’d love your help to make it
96
+ more usable. If you try it please **let me know** what works and what doesn’t work.
97
+ Or if you just don’t get it, where you lost interest or got stuck.
98
+ My contact info is at [github.com/jlevy](https://github.com/jlevy) or [follow or DM
99
+ me](https://x.com/ojoshe) (I’m fastest on Twitter DMs).
100
+ Thank you. :)
101
+
88
102
  ## What is Kash?
89
103
 
90
104
  > “*Simple should be simple.
@@ -99,9 +113,15 @@ It operates on “items” such as URLs, files, or Markdown notes within a works
99
113
  directory.
100
114
 
101
115
  You can use Kash as an **interactive, AI-native command-line** shell for practical
102
- knowledge tasks. It’s also **a Python library** that lets you convert a simple Python
103
- function into a command and an MCP tool, so it integrates with other tools like
104
- Anthropic Desktop or Cursor.
116
+ knowledge tasks.
117
+
118
+ But it’s actually not just a shell, and you can skip the shell entirely.
119
+ It’s really simply **a Python library** that lets you convert a simple Python function
120
+ into “actions” that work in a clean way on plain files in a workspace.
121
+ An action is also an MCP tool, so it integrates with other tools like Anthropic Desktop
122
+ or Cursor.
123
+
124
+ So basically, it gives a unified way to use the shell, Python functions, and MCP tools.
105
125
 
106
126
  It’s new and still has some rough edges, but it’s now working well enough it is feeling
107
127
  quite powerful. It now serves as a replacement for my usual shell (previously bash or
@@ -160,10 +180,10 @@ quick to install via uv.
160
180
  - **Support for any API:** Kash is tool agnostic and runs locally, on file inputs in
161
181
  simple formats, so you own and manage your data and workspaces however you like.
162
182
  You can use it with any models or APIs you like, and is already set up to use the APIs
163
- of **OpenAI GPT-4o and o1**, **Anthropic Claude 3.7**, **Google Gemini**, **xAI
164
- Grok**, **Mistral**, **Groq (Llama, Qwen, Deepseek)** (via **LiteLLM**), **Deepgram**,
165
- **Perplexity**, **Firecrawl**, **Exa**, and any Python libraries.
166
- There is also some experimental support for **LlamaIndex** and **ChromaDB**.
183
+ of **OpenAI** (GPT-5 is now the default model), **Anthropic Claude**, **Google
184
+ Gemini**, **xAI Grok**, **Mistral**, **Groq (Llama, Qwen, Deepseek)** (via
185
+ **LiteLLM**), **Deepgram**, **Perplexity**, **Firecrawl**, **Exa**, and any Python
186
+ libraries. There is also some experimental support for **LlamaIndex** and **ChromaDB**.
167
187
 
168
188
  - **MCP support:** Finally, an action is also an **MCP tool server** so you can use it
169
189
  in any MCP client, like Anthropic Desktop or Cursor.
@@ -198,17 +218,6 @@ I’ve separately built a new desktop terminal app, Kerm, which adds support for
198
218
  the terminal. Because Kash supports these codes, as this develops you will get the
199
219
  visuals of a web app layered on the flexibility of a text-based terminal.
200
220
 
201
- ### Is Kash Mature?
202
-
203
- It’s the result of a couple months of coding and experimentation, and it’s still in
204
- progress and has rough edges.
205
- Please help me make it better by sharing your ideas and feedback!
206
- It’s easiest to DM me at [twitter.com/ojoshe](https://x.com/ojoshe).
207
- My contact info is at [github.com/jlevy](https://github.com/jlevy).
208
-
209
- [**Please follow or DM me**](https://x.com/ojoshe) for future updates or if you have
210
- ideas, feedback, or use cases for Kash!
211
-
212
221
  ## Installation
213
222
 
214
223
  ### Running the Kash Shell
@@ -271,8 +280,8 @@ These are for `kash-media` but you can use a `kash-shell` for a more basic setup
271
280
 
272
281
  ```shell
273
282
  sudo apt-get update
274
- sudo apt-get install -y libgl1 ffmpeg libmagic-dev
275
- # For the additional command-line tools, pixi is better on Ubuntu:
283
+ sudo apt-get install -y libgl1 ffmpeg libmagic-dev imagemagick bat ripgrep hexyl
284
+ # Or for more additional command-line tools, pixi is better on Ubuntu:
276
285
  curl -fsSL https://pixi.sh/install.sh | sh
277
286
  . ~/.bashrc
278
287
  pixi global install ripgrep bat eza hexyl imagemagick zoxide
@@ -2,56 +2,58 @@ kash/__init__.py,sha256=hplHtnRqt1MpGIgKv3WZb9YoCoMPGtnNGtu8Eb9G6zI,110
2
2
  kash/__main__.py,sha256=83JiHvCNK7BAwEkaTD0kVekj7PEMucvCyquSl4p-1QA,78
3
3
  kash/actions/__init__.py,sha256=t3navovxzBkHxx0tQv7-97mXKl_kZmmXAIWszEeU77U,2725
4
4
  kash/actions/core/assistant_chat.py,sha256=28G20cSr7Z94cltouTPve5TXY3km0lACrRvpLE27fK8,1837
5
- kash/actions/core/chat.py,sha256=yCannBFa0cSpR_in-XSSuMm1x2ZZQUCKmlqzhsUfpOo,2696
5
+ kash/actions/core/chat.py,sha256=9_xh9cWwXjkC_SYme-ScOg6Miqeydv15ccrwHqQvgq8,2727
6
6
  kash/actions/core/combine_docs.py,sha256=5bTU7n_ICavvTXfC7fs5BDMeZYn7Xh5FkU7DVQqDHAQ,1536
7
7
  kash/actions/core/concat_docs.py,sha256=Umx3VzFiHJGY-76AEs4ju_1HnB9SbQsBux03Mkeig24,1345
8
8
  kash/actions/core/format_markdown_template.py,sha256=ZJbtyTSypPo2ewLiGRSyIpVf711vQMhI_-Ng-FgCs80,2991
9
- kash/actions/core/markdownify_html.py,sha256=luMXwwaY6E8oidgdrwV6KSgzdG0iX2JKS5aTNYDdZpA,1810
10
- kash/actions/core/minify_html.py,sha256=F8TOn9DGSa6fLy27ABzDgOMN-BMZ386N0MzvGe1sU8k,1349
11
- kash/actions/core/readability.py,sha256=ljdB2rOpzfKU2FpEJ2UELIzcdOAWvdUjFsxoHRTE3xo,989
12
- kash/actions/core/render_as_html.py,sha256=CIPGKCjUEVNsnXmpqHCUnjGwTfEfOyCXxlYFUN8mahY,1870
13
- kash/actions/core/show_webpage.py,sha256=Ggba9jkx9U-FZOcuL0lkS-SwtPNUyxVsGdeQrqwWs1s,887
9
+ kash/actions/core/markdownify_html.py,sha256=0ZPH4b7IUWbMGi1mi0RzDPQKlqpLIsOy6ax_Gn7SSyA,1770
10
+ kash/actions/core/minify_html.py,sha256=TRhyn7Gvcowou8pzq9vzDTtcCFOA4eC5217pJ9rPuOw,1386
11
+ kash/actions/core/readability.py,sha256=P1whiDanaAKTPw2KwHG15QNcjHzwpuTWne0s4LyUfuQ,990
12
+ kash/actions/core/render_as_html.py,sha256=i0WgtDgEJAeTTpVLS_CxDloDCb1Mhkzrcvv0VmoOyQ8,1901
13
+ kash/actions/core/save_sidematter_meta.py,sha256=fKLE5eWIorOdw_FW46AUivXACQ6cxWvKWllcEjT6mz8,1440
14
+ kash/actions/core/show_webpage.py,sha256=2A8u29Wf-iWNbPRfnz7u6MUhcXk_b8B8ruUT825d_mA,978
14
15
  kash/actions/core/strip_html.py,sha256=FDLN_4CKB11q5cU4NixTf7PGrAq92AjQNbKAdvQDwCY,849
15
16
  kash/actions/core/summarize_as_bullets.py,sha256=Zwr8lNzL77pwpnW_289LQjNBijNDpTPANfFdOJA-PZ4,2070
16
17
  kash/actions/core/tabbed_webpage_config.py,sha256=rIbzEhBTmnkbSiRZC-Rj46T1J6c0jOztiKE9Usa4nsc,980
17
18
  kash/actions/core/tabbed_webpage_generate.py,sha256=935HkDSuP4eZ1e0xf-LhjPOdicU3wI5Kuh79r61QCl8,988
19
+ kash/actions/core/zip_sidematter.py,sha256=E7ae0g9Bz7uXApYdNY-a8GvSIIPoqXcD95mjMaKQlsM,1557
18
20
  kash/actions/meta/write_instructions.py,sha256=zeKKX-Yi8jSyjvZ4Ii_4MNBRtM2MENuHyrD0Vxsaos8,1277
19
21
  kash/actions/meta/write_new_action.py,sha256=w7SJZ2FjzRbKwqKX9PeozUrh8cNJAumX7F80wW7dQts,6356
20
22
  kash/commands/__init__.py,sha256=MhdPSluWGE3XVQ7LSv2L8_aAxaey8CLjQBjGC9B4nRM,191
21
- kash/commands/base/basic_file_commands.py,sha256=7xQreY3oewiJKYZYqcMZtClhqyKirg1WTXf95tXAPtc,7061
23
+ kash/commands/base/basic_file_commands.py,sha256=y13xxPWldXp03ndqVKxz6MrLwSV9DjuKKg4rMTIyb0U,7079
22
24
  kash/commands/base/browser_commands.py,sha256=iYvpW4D_tlhW_p0cq3A6YO9UGCdHtvzIQiNMDwCY07A,1574
23
25
  kash/commands/base/debug_commands.py,sha256=9I5W3SMQvsnpcs-b6CJCYu1Ydl6gIoTUcDZxvn1dN3g,7643
24
- kash/commands/base/diff_commands.py,sha256=gOeSyCPg95LBnL6JobCR7lQHNS_c-29bDo1aIJkfyGw,4913
25
- kash/commands/base/files_command.py,sha256=fBuZ8sLqmfH8QekGe-P11mZ4jPxRLi3rLKhZqpdwQ5g,16759
26
- kash/commands/base/general_commands.py,sha256=Y0Vdn5jIWHFWVFGPXZA9XkoTu5uBFiH0-2LNFbslM0w,7011
27
- kash/commands/base/logs_commands.py,sha256=IyNgxaAoa5LlS-VxD_x8bXTVbD04pT8qEHlIJNM09UU,2963
26
+ kash/commands/base/diff_commands.py,sha256=5FypsOGiSvZAiis0bahlgR1vfmcxBpLwnkF8oZQD3eY,4921
27
+ kash/commands/base/files_command.py,sha256=e4yLfb4_hsKQEvVdeBQSl7TNr8v4FDSUsYk9iOUR6hk,16756
28
+ kash/commands/base/general_commands.py,sha256=V18XZv5fu-Wi3T41pLVx8BKe_6VkS8FRehMsnuo5ikE,7015
29
+ kash/commands/base/logs_commands.py,sha256=9w11XLKbZ_ZKMF9SasaKGM6lZNXRjJrQy8LE-2xkV8Q,2971
28
30
  kash/commands/base/model_commands.py,sha256=d17a2NvfDbwV1y8gyZVsOtX-j5H5we5OEXM9TxTqvBs,1790
29
- kash/commands/base/reformat_command.py,sha256=fhGSfC8KyPsEcKWq6lXXlXSIPRw1CweLIFsS3AmYGYU,1869
30
- kash/commands/base/search_command.py,sha256=FXtP09HmmfHRrjenvmU4j0Lcw34piIzdI3UFGbUQ1tg,2201
31
- kash/commands/base/show_command.py,sha256=rFyIW_5oZArRSTpe71PaX87Hq30WE-t6RAJKeCwJ3lM,3299
31
+ kash/commands/base/reformat_command.py,sha256=G1u4FVjGMx4FxzfsqQkLn7420ABi8GW_nJzYle7wwBI,1884
32
+ kash/commands/base/search_command.py,sha256=K3_N1po1CUPRw6PQVeyQvEVtUoVRCfOgHEaTngZ1x3A,2202
33
+ kash/commands/base/show_command.py,sha256=o8wAYAulwNhwhPwGMS_0wjwYsTqBjcLYcN5UumsOyuE,3345
32
34
  kash/commands/extras/parse_uv_lock.py,sha256=HVqmGhJAd3ZCTTTaXe_nzzTMFKhwjLLP7hx4NTM224U,5696
33
35
  kash/commands/extras/utils_commands.py,sha256=rz3N7VxoUHvCxksRt-sLubkvyW-VH9OTltLEMEnjRfU,769
34
- kash/commands/help/assistant_commands.py,sha256=YYIiTxFju4ZF11HXztDe4McaAuPrIkfBwVfj1sNTv0A,3045
36
+ kash/commands/help/assistant_commands.py,sha256=tZXmMqCrlDHI1KWmKpQEz5kTxYViPWxATF5hSupbeWM,3060
35
37
  kash/commands/help/doc_commands.py,sha256=7lKR7mzue2N7pSkNqblpFJy892fS5N6jWVOHqeXziHw,2466
36
- kash/commands/help/help_commands.py,sha256=eJTpIhXck123PAUq2k-D3Q6UL6IQ8atOVYurLi2GD0A,4229
38
+ kash/commands/help/help_commands.py,sha256=5exWU4SpnI20GD-zhLchSaL0664jA2t41xh6trPLnC4,4255
37
39
  kash/commands/help/logo.py,sha256=4K3pPIiNlPIgdNeOgdIGbJQCKmqCEsDOhuWPH51msWo,3377
38
40
  kash/commands/help/welcome.py,sha256=16pAASjc4UNbm-eKC482Co6VB8i-fSwII8XYrW9JbHA,934
39
- kash/commands/workspace/selection_commands.py,sha256=nZzA-H7Pk8kqSJVRlX7j1m6cZX-e0X8isOryDU41vqU,8156
40
- kash/commands/workspace/workspace_commands.py,sha256=xJ3Agg_tzGvH55705ovoZDYiTEO4FejWclwcsMWKitY,21965
41
+ kash/commands/workspace/selection_commands.py,sha256=cMB6O1ejDb2s_u3o2Zaq-iytykhQzWYtDGd0j4jkGLo,8142
42
+ kash/commands/workspace/workspace_commands.py,sha256=GE_wHdeYFJ1ruRi4spZtyyTjYXJWCYEQ1Vmc52fIpSQ,22296
41
43
  kash/config/__init__.py,sha256=ytly9Typ1mWV4CXfV9G3CIPtPQ02u2rpZ304L3GlFro,148
42
44
  kash/config/capture_output.py,sha256=ud3uUVNuDicHj3mI_nBUBO-VmOrxtBdA3z-I3D1lSCU,2398
43
45
  kash/config/colors.py,sha256=cV3LRBegDZxZXjV-XEjc3fystFY_defhz1LN8QPdaKc,13727
44
46
  kash/config/env_settings.py,sha256=uhCdfs9-TzJ15SzbuIQP1yIORaLUqYXCxh9qq_Z8cJc,996
45
47
  kash/config/init.py,sha256=aE4sZ6DggBmmoZEx9C5mQKrEbcDiswX--HF7pfCFKzc,526
46
48
  kash/config/lazy_imports.py,sha256=MCZXLnKvNyfHi0k7MU5rNwcdJtUF28naCixuogsAOAA,805
47
- kash/config/logger.py,sha256=5_1ePJwfwIifoYQ_OWYIxTe2AM0XdmDUe4JXkH52bpg,12190
49
+ kash/config/logger.py,sha256=Wrhau5gPYwGSmA1V2IbMhyApTRgB8p4Pyk8JL7OCTaE,12189
48
50
  kash/config/logger_basic.py,sha256=Gsxitz7xeMGCUr5qjWK6y72qeMsIz4mcDZP5xyzK0WU,1598
49
51
  kash/config/logo.txt,sha256=P4RO1cJ9HRF1BavTp3Kae9iByDNhzhEC-qLAa6ww1RA,217
50
52
  kash/config/server_config.py,sha256=eQ1yxDk031QI0Efp0I1VetqQd9wG7MrLVBCHFm4gp2g,1790
51
53
  kash/config/settings.py,sha256=Tja5MNZJDjo5SRaCngfQQFTTjmVGUlmkCZ7UEAhvXqw,9087
52
- kash/config/setup.py,sha256=zFxfTPG1cbsozuwUkIyAYebxuHhpYCiaexHnYnYJG1c,3524
54
+ kash/config/setup.py,sha256=SepMs7CvWdIXCjs03_noA16PETW_YOxH33F8cdP8kYc,2643
53
55
  kash/config/suppress_warnings.py,sha256=yty5ZodMLIpmjphRtcVmRamXfiWbyfga9annve6qxb0,1475
54
- kash/config/text_styles.py,sha256=1qIrMgDYYuBoVj9kFCaEEOca_Ibz5VnPVNI-xTSQnlk,13840
56
+ kash/config/text_styles.py,sha256=pQ0FKJW7eSXU6ol5LhyaGZewxF40L6Q0o92mfsNNCYQ,13843
55
57
  kash/config/unified_live.py,sha256=tUEnTWMSYKYSJkEoAPbaJET-bJ1HnfU2Ar-XeyBOtlo,8420
56
58
  kash/docs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
57
59
  kash/docs/all_docs.py,sha256=NutfgU8VOA7_K2HX18FoOHVvvLL14dALoCxK9qDbQ04,3157
@@ -64,8 +66,8 @@ kash/docs/markdown/assistant_instructions_template.md,sha256=oLZbr8DPbl1x8pfouqt
64
66
  kash/docs/markdown/readme_template.md,sha256=iGx9IjSni1t_9BuYD5d2GgkxkNIkqvE3k78IufHF6Yg,409
65
67
  kash/docs/markdown/warning.md,sha256=ipTFWQc1F0cPGrIG0epX5RqQH6PmshyZOoCQDz0zDos,88
66
68
  kash/docs/markdown/welcome.md,sha256=wdvPehSgQWFPXJFRfBcA1GqA_WsS7C2rrpPuAnVVens,613
67
- kash/docs/markdown/topics/a1_what_is_kash.md,sha256=aQOx3EDVmGTbeEbt80jbTu5cCVRDY2qt8IfplmTNgWQ,6941
68
- kash/docs/markdown/topics/a2_installation.md,sha256=J9dqn9Cen9FgUIdBJm9hWdNihj2RW5X9CvgzN2FUnVA,5762
69
+ kash/docs/markdown/topics/a1_what_is_kash.md,sha256=3zDbkF7IAS4sLz1bASturGUZBI65tJbQrRBJOXPa4Os,7341
70
+ kash/docs/markdown/topics/a2_installation.md,sha256=EFIVGu9epbRMLzdu4LMnQEfJLOddbsXPaMDUYSsdGig,5791
69
71
  kash/docs/markdown/topics/a3_getting_started.md,sha256=8V95mk9MKH7fTWb0YoyOkRpeFHL2J9oaf5Lo7Ci-WXI,9396
70
72
  kash/docs/markdown/topics/a4_elements.md,sha256=GSu6vEEiNA9b87FGmJcL-VsCuaL3T9sbhFKMe0sI834,4623
71
73
  kash/docs/markdown/topics/a5_tips_for_use_with_other_tools.md,sha256=rd7EIqqQJH-gVDwFFUYnJKamZMyeJi7P8svFdDTNXyQ,3303
@@ -85,21 +87,21 @@ kash/embeddings/cosine.py,sha256=QTWPWUHivXjxCM6APSqij_-4mywM2BVVm0xb0hu7FHA,158
85
87
  kash/embeddings/embeddings.py,sha256=DirB5DjowEQADfxtp1BTROINyIxU2QEUj79_tXipRfo,6664
86
88
  kash/embeddings/text_similarity.py,sha256=2jp0A27dOto6kItzqe95-f-lx6Mop68d-MJevyCHj9o,1817
87
89
  kash/exec/__init__.py,sha256=Najls8No143yoj_KAaOQgo8ufC2LWCB_DwwEQ-8nDM0,1277
88
- kash/exec/action_decorators.py,sha256=kCEqQFN1MIhRbFeIEGux956LzsiwonhyIIrJ8Pq9zPk,16765
89
- kash/exec/action_exec.py,sha256=tLL3ESIuxqS_gSOD4eGRYLuTzesRMTyKb_Uy3i_28VU,19022
90
+ kash/exec/action_decorators.py,sha256=omCr3oxB7LRBWksRrB8nif1bSgFv2ZBKhfMGQuTBp2k,16956
91
+ kash/exec/action_exec.py,sha256=HZ7ZtWhpkRxjzai_ZIeTf33Ak_4HmmLujjvSud8yGsw,20943
90
92
  kash/exec/action_registry.py,sha256=numU9pH_W5RgIrYmfi0iYMYy_kLJl6vup8PMrhxAfdc,2627
91
93
  kash/exec/combiners.py,sha256=AJ6wgPUHsmwanObsUw64B83XzU26yuh5t4l7igLn82I,4291
92
94
  kash/exec/command_exec.py,sha256=zc-gWm7kyB5J5Kp8xhULQ9Jj9AL927KkDPXXk-Yr1Bw,1292
93
95
  kash/exec/command_registry.py,sha256=1s2ogU8b8nqK_AEtslbr1eYrXCGDkeT30UrB7L0BRoM,2027
94
- kash/exec/fetch_url_items.py,sha256=onKoAOg747r5T9fAIO8sTjJcllxKh3XLzh59FU5EFE8,5466
96
+ kash/exec/fetch_url_items.py,sha256=BNqAPL4VaXUGZ_q3pNt5QLNKMfU0PMLDrdw8f6xQRo8,6211
95
97
  kash/exec/history.py,sha256=l2XwHGBR1UgTGSFPSBE9mltmxvjR_5qFFO6d-Z008nc,1208
96
98
  kash/exec/importing.py,sha256=xunmBapeUMNc6Zox7y6e_DZkidyWeouiFZpphajwSzc,1843
97
- kash/exec/llm_transforms.py,sha256=n7S-Dew8z_BoAwp-14lY4LueFeUtG117eK_8msbn02c,4375
99
+ kash/exec/llm_transforms.py,sha256=jQAnxHhcvF3oILjpSHx0YRw8Qw-ZnioukXaJuaqjNVk,4626
98
100
  kash/exec/precondition_checks.py,sha256=HymxL7qm4Yz8V76Um5pKdIRnQ2N-p9rpQQi1fI38bNA,2139
99
101
  kash/exec/precondition_registry.py,sha256=9O-01d2OrsYLuhqodVuWjouLR2ABJbUotAmfJNBCRzs,1439
100
- kash/exec/preconditions.py,sha256=fuK_tfI7FiJ5F36MXOgopFtD5O_gf8yLvQ-xjowNKSw,5221
101
- kash/exec/resolve_args.py,sha256=gu65epzVrwWHdHA-KwAwYssncJIB84oHOJeoXXrQ2mM,4428
102
- kash/exec/runtime_settings.py,sha256=aK6nGbZhKSIDVmV6AqV68hQkiaIGWnCiNzHtwwZ5V0w,3960
102
+ kash/exec/preconditions.py,sha256=bwNuuPEnkymj24ySPTl8K5DEgTtB2NPGAm9cWaomhAk,5262
103
+ kash/exec/resolve_args.py,sha256=jxuur3ZjnbXiMa_dvp-faeAkA8k43CJ7xX4NYbpQwP0,4510
104
+ kash/exec/runtime_settings.py,sha256=6wKjms4uacmwtnH4hZTB3tncCi38bzPfVO_smmjyNno,4022
103
105
  kash/exec/shell_callable_action.py,sha256=IN50c_Xsbn5Pv_ZKrel-UlrNDyIKh2BdeAkMmJ88Uis,4397
104
106
  kash/exec_model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
105
107
  kash/exec_model/args_model.py,sha256=gquOD0msFA-5xhNU-3R5l8wlwyAMefpMHltpxrDlYGQ,2662
@@ -107,8 +109,9 @@ kash/exec_model/commands_model.py,sha256=iM8QhzA0tAas5OwF5liUfHtm45XIH1LcvCviuh3
107
109
  kash/exec_model/script_model.py,sha256=1VG3LhkTmlKzHOYouZ92ZpOSKSCcsz3-tHNcFMQF788,5031
108
110
  kash/exec_model/shell_model.py,sha256=LUhQivbpXlerM-DUzNY7BtctNBbn08Wto8CSSxQDxRU,568
109
111
  kash/file_storage/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
110
- kash/file_storage/file_store.py,sha256=GeAHIvAFcIj_cKssqzHajmpJmZQ8sFNDbFDvy4fETys,30877
111
- kash/file_storage/item_file_format.py,sha256=_o2CjWstk_Z__qMr-Inct9wJm2VEUK0GZvF-fDZ8bcc,5377
112
+ kash/file_storage/file_store.py,sha256=rWFJD_PVzNgBtFBUD8Ltj9GK-am5zFj9vrMdyIy9pjQ,31442
113
+ kash/file_storage/item_file_format.py,sha256=QNNpvMDDNyBLLrIwy3yhNgN0Ktsvjh-_Uzkf2XQpI98,7531
114
+ kash/file_storage/item_id_index.py,sha256=aiDHomizFLO_Ui2i6n-YIF4RUosIsxRIQca35yCdIIk,4589
112
115
  kash/file_storage/metadata_dirs.py,sha256=9AqO3S3SSY1dtvP2iLX--E4ui0VIzXttG8R040otfyg,3820
113
116
  kash/file_storage/persisted_yaml.py,sha256=4-4RkFqdlBUkTOwkdA4vRKUywEE9TaDo13OGaDUyU9M,1309
114
117
  kash/file_storage/store_cache_warmer.py,sha256=cQ_KwxkBPWT3lMmYOCTkXgo7CKaGINns2YzIH32ExSU,1013
@@ -122,7 +125,7 @@ kash/help/help_embeddings.py,sha256=EERozW4CriUv1L9blox5eK3OYm31ypoNicxzaUBrYtU,
122
125
  kash/help/help_lookups.py,sha256=0dtuLWEXncqhJCijC98IA9stBDNNcJewt1JYqMLkTx4,2029
123
126
  kash/help/help_pages.py,sha256=TaKsE26R-pZTrK4Pa593DK5osdJodFHaVm5pZpjqgaI,3894
124
127
  kash/help/help_printing.py,sha256=eZbZdyJC158JiXcEk2zvUmqYbYzbYOpHvxEhC1kIN-Q,6086
125
- kash/help/help_types.py,sha256=xo0AXfaNjlMrWp6dkGixo6P61n1tIhFhlvv9sWhNBrI,7909
128
+ kash/help/help_types.py,sha256=pZDxisdqH6_VaS1EOzYMgAfRcy0KauQNW_DdVCUGfD0,7888
126
129
  kash/help/recommended_commands.py,sha256=jqc3TjWFBqDJ-iSzXn8vTOplb4uHndwvdAGJfcUV_qs,2486
127
130
  kash/help/tldr_help.py,sha256=bcu__MIF4vYlZEeqQqieGIBcRhNCTK5u8jPV08ObzCI,9654
128
131
  kash/llm_utils/__init__.py,sha256=3yjign7KD-kM3ZBBcgtrZz-zjJ2Yx2Q-9bzknBx5vbU,401
@@ -132,13 +135,12 @@ kash/llm_utils/fuzzy_parsing.py,sha256=bbG2Y7i5w6kxAVPAixyluv3MDS2hW_pkhnJpVOLHZ
132
135
  kash/llm_utils/init_litellm.py,sha256=5Fn9uW4P7lfEO8Rk1EJJUzDEGNjw-PDvxFgHlKDf-Ok,409
133
136
  kash/llm_utils/llm_api_keys.py,sha256=nTB9wSFfHTOXvqshSQCQGCPxUwOW1U7oslngya8nHkw,1168
134
137
  kash/llm_utils/llm_completion.py,sha256=SzeWGRrsjuN1TXdPwscYG6whLQkHclITtwTvQK19GE0,5436
135
- kash/llm_utils/llm_features.py,sha256=ZpQhHiRDtF1BY8HGxTQH0dIeM3rux7a9CvJ0JO2KAlI,1847
136
138
  kash/llm_utils/llm_messages.py,sha256=70QwIIvdwo-h4Jfn_6MbEHb3LTUjUmzg_v_dU_Ey__g,1174
137
139
  kash/llm_utils/llm_names.py,sha256=VZbdKnoeBx_luB5YQ-Rz37gMt3_FcueJdp40ZaQbpUA,3620
138
- kash/llm_utils/llms.py,sha256=Sm7SdNVE0pVIOpAggIgGp9s_Waw8vq6hNOCu-GTc6GI,3788
140
+ kash/llm_utils/llms.py,sha256=S4hBDeOraKOp9e99M8Ga61u6xAkocxs02jXgJRdFNSA,3983
139
141
  kash/local_server/__init__.py,sha256=AyNpvCOJlQF6A4DnlYKRMbbfRNzdizEA-ytp-F2SLZU,162
140
142
  kash/local_server/local_server.py,sha256=EugjL30VM0pWdZDsiQxU-o6EdEa082qlGd_7RHvI5tk,5863
141
- kash/local_server/local_server_commands.py,sha256=ZMp1DpYgg-MJ0iqH0DHfhWKDpFqNRG_txkRdODIr9mU,1661
143
+ kash/local_server/local_server_commands.py,sha256=T5wN-Xty3IbwbyeJxTULPB2NqssWLJcuV8IoqMu9bus,1668
142
144
  kash/local_server/local_server_routes.py,sha256=JlIVsrbsU0yiwv7vAoD9BctqiBI0w6u8Ld3BYY4jmo8,10530
143
145
  kash/local_server/local_url_formatters.py,sha256=SqHjGMEufvm43n34SCa_8Asdwm7utx91Wwymj15TuSY,5327
144
146
  kash/local_server/port_tools.py,sha256=oFfOvO6keqS5GowTpVg2FTu5KqkPHBq-dWAEomUIgGo,2008
@@ -146,8 +148,8 @@ kash/local_server/rich_html_template.py,sha256=O9CnkMYkWuMvKJkqD0P8jaZqfUe6hMP4L
146
148
  kash/mcp/__init__.py,sha256=HA_aFskEchpAwA0wOKi5nasytx2JZfH8z9oCVXUI7MQ,160
147
149
  kash/mcp/mcp_cli.py,sha256=UC0Jwd7DLxx2zEFj0hK1UWPkXXXGntV1te33CensyHM,3849
148
150
  kash/mcp/mcp_main.py,sha256=6PhjKwp631mezDTUAd-pL8lUZx9Gl7yCrCQFW61pqJU,3167
149
- kash/mcp/mcp_server_commands.py,sha256=C-gKLbUVEpF76SmW3NgjlEWoM3YaA3ARrCos5UH1Zh8,4345
150
- kash/mcp/mcp_server_routes.py,sha256=radxy5cc0yBmcbqAbB1LpZ0qcNtfDbtS5RTGwvgliDM,10617
151
+ kash/mcp/mcp_server_commands.py,sha256=sKPBD4DptUArxo833eJRRYYRt32E5Dwpr0k8Qe6U8ec,4349
152
+ kash/mcp/mcp_server_routes.py,sha256=gWsr9WkEVzSslF-XaiO7wMUD9bJeabXj4xNy6WwqHaM,11757
151
153
  kash/mcp/mcp_server_sse.py,sha256=7zAOJodrCVfLtChUTRxzgxWGymQnmj1e9fRG7H_yqXg,5678
152
154
  kash/mcp/mcp_server_stdio.py,sha256=u-oeIZKwzIAGlKmBpipC-hfNQKx36Md9hST11y3AZUY,1174
153
155
  kash/media_base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -161,18 +163,18 @@ kash/media_base/transcription_format.py,sha256=rOVPTpwvW22c27BRwYF-Tc_xzqK_wOtUZ
161
163
  kash/media_base/transcription_whisper.py,sha256=GqvroW9kBAH4-gcbYkMgNCfs2MpMIgm1ip3NMWtJ0IE,1169
162
164
  kash/media_base/services/local_file_media.py,sha256=_NV-T90rShJ8ucUjQXMPCKKJ50GSFE9PyyVzhXp5z9w,5624
163
165
  kash/model/__init__.py,sha256=kFfBKb5N70NWYUfpRRxn_Sb9p_vXlB6BBaTCqWmSReo,2978
164
- kash/model/actions_model.py,sha256=nYvQNr2M8ooFRL2YZ3_yPxFuqYdxO__6fFTgx5mxwbQ,22269
166
+ kash/model/actions_model.py,sha256=-41qz76Z9NZZhRQcPDRopyHAGxHCrTvbMRDv8fnb7CQ,23185
165
167
  kash/model/assistant_response_model.py,sha256=6eDfC27nyuBDFjv5nCYMa_Qb2mPbKwDzZy7uLOIyskI,2653
166
- kash/model/compound_actions_model.py,sha256=HiDK5wwCu3WwZYHATZoLEguiqwR9V6V296wiKtGIX8s,6926
168
+ kash/model/compound_actions_model.py,sha256=oYEtVKtQv-mA1abZkK7PvaM9xazVBUuk1z0geKBulak,6965
167
169
  kash/model/concept_model.py,sha256=we2qOcy9Mv1q7XPfkDLp_CyO_-8DwAUfUYlpgy_jrFs,1011
168
- kash/model/exec_model.py,sha256=IlfvtQyoFRRWhWju7vdXp9J-w_NGcGtL5DhDLy9gRd8,2250
170
+ kash/model/exec_model.py,sha256=3Su3NEmEtDoSuQSxvg75FYY_EdClSM5pwQK1i7_S88A,3131
169
171
  kash/model/graph_model.py,sha256=T034y0E9OJtITd1g9zp9vll5pLscdatq6JoT08KvPZE,2724
170
- kash/model/items_model.py,sha256=UMPA4-rmkX6XXuB1bFWP7KwUE4thOEp-tnfvwJCBols,35844
172
+ kash/model/items_model.py,sha256=V7so_AWc7skRZGlByIK5m3ETUaHEw8IYx9OB9pmzNEA,39545
171
173
  kash/model/language_list.py,sha256=I3RIbxTseVmPdhExQimimEv18Gmy2ImMbpXe0-_t1Qw,450
172
174
  kash/model/llm_actions_model.py,sha256=a29uXVNfS2CiqvM7HPdC6H9A23rSQQihAideuBLMH8g,2110
173
175
  kash/model/media_model.py,sha256=ZnlZ-FkswbAIGpUAuNqLce1WDZK-WbnwHn2ipg8x7-0,3511
174
176
  kash/model/operations_model.py,sha256=WmU-xeWGsqMLVN369dQEyVGU8T7G_KyLLsj6YFc5sVw,6517
175
- kash/model/params_model.py,sha256=vSFMjWfksysEhAOQ2Ge2ZEvRqgUmIL7febxcI3-7Smg,15083
177
+ kash/model/params_model.py,sha256=NHW-74_sFCY58spf9bzU1EaVxLDpdbqmiw8SCSKASCw,15079
176
178
  kash/model/paths_model.py,sha256=KDFm7wan7hjObHbnV2rR8-jsyLTVqbKcwFdKeLFRtdM,15889
177
179
  kash/model/preconditions_model.py,sha256=-IfsVR0NkQhq_3hUTXzK2bFYAd--3YjSwUiDKHVQQqk,2887
178
180
  kash/shell/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -193,7 +195,7 @@ kash/shell/output/kerm_code_utils.py,sha256=92A4AV-IFKKZMWLNZnd_zksNFMBgE_VNXySy
193
195
  kash/shell/output/kerm_codes.py,sha256=KLVdTM_dL_NeYmGbllzsQoW4IHXJjEsgqqIp1s7P1yI,18877
194
196
  kash/shell/output/kmarkdown.py,sha256=RRB5b0Ip0KZ71vnJKFfvxerYkeDFTCVTlHqHfmMy80Y,3675
195
197
  kash/shell/output/shell_formatting.py,sha256=oxmAeJ2j0ANYSUsL15CUv--KcGlQ6Wa_rywXSDlsZM4,3331
196
- kash/shell/output/shell_output.py,sha256=JfE3kHqAaeJmy_PUzdEuZsUNL4LwmNoarnpL3lXLYWI,11869
198
+ kash/shell/output/shell_output.py,sha256=yG-4YjQUkPQZASMRGcfVRUadOcRO6hm-eaAC74jms6c,11812
197
199
  kash/shell/ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
198
200
  kash/shell/ui/shell_results.py,sha256=mvFHxK_oz3bNfF5_Twt6VqDO44TA1b256Bjf5oco804,4130
199
201
  kash/shell/ui/shell_syntax.py,sha256=1fuDqcCV16AAWwWS4w4iT-tlSnl-Ywdrf68Ge8XIfmQ,751
@@ -204,8 +206,9 @@ kash/utils/__init__.py,sha256=4Jl_AtgRADdGORimWhYZwbSfQSpQ6SiexNIZzmbcngI,111
204
206
  kash/utils/errors.py,sha256=2lPL0fxI8pPOiDvjl0j-rvwY8uhmWetsrYYIc2-x1WY,3906
205
207
  kash/utils/api_utils/api_retries.py,sha256=TtgxLxoMnXIzYMKbMUzsnVcPf-aKFm3cJ95zOcSeae8,21844
206
208
  kash/utils/api_utils/cache_requests_limited.py,sha256=TA5buZ9Dgbj4I1zHhwerTXre018i0TCACGsezsjX9Uc,3140
207
- kash/utils/api_utils/gather_limited.py,sha256=CV-9YjZakbKZ5AN3xIZSOyHwGvtvMljpl5Dq_SuDfNs,32945
209
+ kash/utils/api_utils/gather_limited.py,sha256=6K0Z3u_NeX9wBfFFk21wUQeSimaDIm53AHlGYRLD6LQ,33018
208
210
  kash/utils/api_utils/http_utils.py,sha256=Ou6QNiba5w7n71cgNmV168OFTLmMDNxWW5MM-XkFEME,1461
211
+ kash/utils/api_utils/multitask_gather.py,sha256=iC1UlZXZV7YMevDD--mCi1eR0Rmd7wAWrOy-C_l0ACw,2594
209
212
  kash/utils/api_utils/progress_protocol.py,sha256=6cT5URY6cScHYd6UZoTT_rHI0mbsE52joBf88regEN8,8816
210
213
  kash/utils/common/__init__.py,sha256=ggeWw1xmbl1mgCQD3c4CNN2h5WXFCsN2wXlCWurEUEI,161
211
214
  kash/utils/common/format_utils.py,sha256=83FhAwbMnOQIFudpnOGMuCqCiyoAlWGS6cc8q6xgZus,2072
@@ -216,20 +219,21 @@ kash/utils/common/obj_replace.py,sha256=AuiXptUOnuDNcWDgAJ3jEHkLh89XIqCP_SOkgaVy
216
219
  kash/utils/common/parse_docstring.py,sha256=oM1ecGGySRA3L_poddjReJ_qPY5506Le7E8_CDUrU8k,10922
217
220
  kash/utils/common/parse_key_vals.py,sha256=yZRZIa5GD9SlnBSn2YNZm8PRVKoSJMY8DCmdGujQj_I,2418
218
221
  kash/utils/common/parse_shell_args.py,sha256=UZXTZDbV5m5Jy39jdAQ6W8uilr1TNa0__RqnE8UmQ_M,10604
222
+ kash/utils/common/s3_utils.py,sha256=YZ_qTKtuUtb_oJd8Ke0PgVdg8sYa47PwUkTZVsJ0rWM,3311
219
223
  kash/utils/common/stack_traces.py,sha256=a2NwlK_0xxnjMCDC4LrQu7ueFylF-OImFG3bAAHpPwY,1392
220
224
  kash/utils/common/task_stack.py,sha256=XkeBz3BwYY1HxxTqd3f7CulV0s61PePAKw1Irrtvf5o,4536
221
225
  kash/utils/common/testing.py,sha256=9at6m_2YwRYitQoo-KeGsd2aoA59YUPs-x7cKcmy1C4,1802
222
226
  kash/utils/common/type_utils.py,sha256=SJirXhPilQom_-OKkFToDLm_82ZwpjcNjRy8U1HaQ0Q,3829
223
227
  kash/utils/common/uniquifier.py,sha256=75OY4KIVF8u1eoO0FCPbEGTyVpPOtM-0ctoG_s_jahM,3082
224
- kash/utils/common/url.py,sha256=R_P-CkOUiFxVdo9COcaL7YFvFIoAULj5-XxvmlFLvzo,9416
228
+ kash/utils/common/url.py,sha256=u4qT0sWYsuEYazFCr3IIpmrR6nXyATH-_6GHM2xF5E0,9689
225
229
  kash/utils/common/url_slice.py,sha256=QJb_qJp-hd5lFrxpw7P009yeMTJWDMfF11KRKEo7mIA,10963
226
- kash/utils/file_formats/chat_format.py,sha256=Onby7Zany1UQSUo_JzLs6MIfmoXViZeOAacRTMVe92M,11818
230
+ kash/utils/file_formats/chat_format.py,sha256=XQpyUyq3jBKqM1f1eRZmg5hPBWZIobHNusQPFctFbRQ,11901
227
231
  kash/utils/file_utils/__init__.py,sha256=loL_iW0oOZs0mJ5GelBPptBcqzYKSWdsGcHrpRyxitQ,43
228
232
  kash/utils/file_utils/csv_utils.py,sha256=ZqchXD4y0buWtgnEsR_UeHyWBHM1wEJl5u-IxQvFa3s,4064
229
233
  kash/utils/file_utils/dir_info.py,sha256=HamMr58k_DanTLifj7A2JDxTGWXEZZx2pQuE6Hjcm8g,1856
230
- kash/utils/file_utils/file_ext.py,sha256=-H63vlrVI3pfE2Cn_9qF7-QLDaUIu_njc4TieNgAHSY,1860
231
- kash/utils/file_utils/file_formats.py,sha256=fANAe5Dq5y_Vw_LaWvvy9hH6rXqaW7u-7Z2sbQhgeE4,4942
232
- kash/utils/file_utils/file_formats_model.py,sha256=KA697MPW-V0Xw82eeNATW1UrnUMnzldFKA1XWM3Obq0,15628
234
+ kash/utils/file_utils/file_ext.py,sha256=U0fG3rowgtc56fNhhCK8P1UCYFbCNoa87pv7mGiEQgA,1876
235
+ kash/utils/file_utils/file_formats.py,sha256=4bq0-ZomFidL2GJBFyszGPurNQeTMOdLaXlGgrXznhA,4973
236
+ kash/utils/file_utils/file_formats_model.py,sha256=WqtAb10_vBuWeP2cUHzUHNjNmLx5GdqPjsnuqziB6Zg,15970
233
237
  kash/utils/file_utils/file_sort_filter.py,sha256=_k1chT3dJl5lSmKA2PW90KaoG4k4zftGdtwWoNEljP4,7136
234
238
  kash/utils/file_utils/file_walk.py,sha256=cpwVDPuaVm95_ZwFJiAdIuZAGhASI3gJ3ZUsCGP75b8,5527
235
239
  kash/utils/file_utils/filename_parsing.py,sha256=drHrH2B9W_5yAbXURNGJxNqj9GmTe8FayH6Gjw9e4-U,4194
@@ -244,11 +248,12 @@ kash/utils/rich_custom/multitask_status.py,sha256=eOON62evEAOmmNyVBSjfYkh5y9OTej
244
248
  kash/utils/rich_custom/rich_char_transform.py,sha256=3M89tViKM0y31VHsDoHi5eHFWlv5ME7F4p35IdDxnrw,2616
245
249
  kash/utils/rich_custom/rich_indent.py,sha256=nz72yNpUuYjOsaPNVmxM81oEQm-GKEfQkNsuWmv16G0,2286
246
250
  kash/utils/rich_custom/rich_markdown_fork.py,sha256=M_JRaSAyHrSg-wuLv9C9P7SkehSim3lwkqQPuMIFkVw,26551
247
- kash/utils/text_handling/doc_normalization.py,sha256=UtVfaSHE5k_n7BzTbOkc5FUJtXiTbaw9QUl03AnCvLs,3043
251
+ kash/utils/text_handling/doc_normalization.py,sha256=GsK8J8HSVINYYIeO2XQvWYK1ZSiQ6mX34mVb9UOjgG8,3029
248
252
  kash/utils/text_handling/escape_html_tags.py,sha256=8pC3JgoKRtdnbnOu8DiWrlvNR6GAqjwhGbQgl3jiFG4,6441
253
+ kash/utils/text_handling/markdown_footnotes.py,sha256=4_ZOez-xHjiSn_XHyqXPk9MNbjts1hiHOh1ARs9vVZA,7494
249
254
  kash/utils/text_handling/markdown_render.py,sha256=LHPdJc__2ejBx7iwkp_P9wIePNmiVSgwu4-uhamVjms,3791
250
- kash/utils/text_handling/markdown_utils.py,sha256=tAPMZulEcJOmWQHnZVKRqstThmsLB0mm7Fey5DHMFvc,31985
251
- kash/utils/text_handling/markdownify_utils.py,sha256=xNMlBX36BJ5VK5kxY2Ofo-Q84R2kBSM91u1grkQ-5As,2925
255
+ kash/utils/text_handling/markdown_utils.py,sha256=Yf57dVljpbg8vuHbtcOSHZqz1PafOSBal6R8ESJz1Bs,49220
256
+ kash/utils/text_handling/markdownify_utils.py,sha256=fXl3uSUk9aHXL0PDqxdlvWvIvBXUQTOfQxnK9uicQcg,2964
252
257
  kash/utils/text_handling/unified_diffs.py,sha256=JfHSakISkT_GuBPBI4fTooHrp2aenWzDKiVvDewVfMk,2655
253
258
  kash/web_content/canon_url.py,sha256=Zv2q7xQdIHBFkxxwyJn3_ME-qqMFRi_fKxE_IgV2Z50,742
254
259
  kash/web_content/dir_store.py,sha256=BJc-s-RL5CC-GwhFTC_lhLXSMWluPPnLVmVBx-66DiM,3425
@@ -258,23 +263,26 @@ kash/web_content/local_file_cache.py,sha256=PEDKU5VIwhCnSC-HXG4EkO2OzrOUDuuDBMuo
258
263
  kash/web_content/web_extract.py,sha256=TrGOohn99LF1F0zbycgXqYiIR-V3leefFFEVk3tnW6Y,2979
259
264
  kash/web_content/web_extract_justext.py,sha256=74HLJBKDGKatwxyRDX6za70bZG9LrVmtj9jLX7UJzg4,2540
260
265
  kash/web_content/web_extract_readabilipy.py,sha256=IT7ET5IoU2-Nf37-Neh6CkKMvLL3WTNVJjq7ZMOx6OM,808
261
- kash/web_content/web_fetch.py,sha256=hC4kijKVez4_QtfwdE0OPrEkfEGT2hVcB1vVZko8o78,12129
266
+ kash/web_content/web_fetch.py,sha256=TGzGRyG9KW26V8WhQJkK-MwFN2MJBtMX-j4iY72tVtg,12217
262
267
  kash/web_content/web_page_model.py,sha256=TWgWreGOoOvl7lUkjMSd0rxoDf2VuaKOq7WijwydW0Q,1387
263
268
  kash/web_gen/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
264
- kash/web_gen/simple_webpage.py,sha256=ks_0ljxCeS2-gAAEaUc1JEnzY3JY0nzqGFiyyqyRuZs,1537
265
269
  kash/web_gen/tabbed_webpage.py,sha256=e0GGG1bQ4CQegpJgOIT2KpyM6cmwN_BQ9eJSsi4BjgY,4945
266
270
  kash/web_gen/template_render.py,sha256=aypo6UanouftV4RpxgNm6JdquelI52fV0IlihdA3yjE,1908
271
+ kash/web_gen/webpage_render.py,sha256=C3xFdmTROh_cWcuh1q2ZXnbeJfgK8wEZ7b1PBAB5i2g,3352
267
272
  kash/web_gen/templates/base_styles.css.jinja,sha256=9ftNuhUrTpS8TcxP239AqWsIhPl_i0wS0J4rhsvQkrM,24962
268
273
  kash/web_gen/templates/base_webpage.html.jinja,sha256=ZP9p1S29yXNZ6CU0DYYAXUA-v6YhnUv9NLX4aYupvBE,14723
269
- kash/web_gen/templates/content_styles.css.jinja,sha256=1gHukwjv6PR5APX9KwNqMOBIKUjFenuudVZ8fjtavYY,4672
274
+ kash/web_gen/templates/content_styles.css.jinja,sha256=NyZRUNIrqf7RuJ0_bVuvwiQmimcWNh067bFvtb2xp-Q,6002
270
275
  kash/web_gen/templates/explain_view.html.jinja,sha256=DNw5Iw5SrhIUFRGB4qNvfcKXsBHVbEJVURGdhvyC75Q,949
271
276
  kash/web_gen/templates/item_view.html.jinja,sha256=_b51RuoBmYu7nxVq-S_zw_tv8mfQXHICGqfDWNIB9Xg,7304
272
277
  kash/web_gen/templates/simple_webpage.html.jinja,sha256=_RVu0AvrN5fK_Kz-tEi4AlPQ_wuu8-S9oFIYg_sdcec,2556
273
278
  kash/web_gen/templates/tabbed_webpage.html.jinja,sha256=umkipUXW-lDGnbV-tlDroCfCx_385PFnpbzsvwmityo,1843
279
+ kash/web_gen/templates/youtube_webpage.html.jinja,sha256=uUdu3HWv0lwwgEh094QbzzesxAdYv9rCxCkiuuIr1MY,1380
274
280
  kash/web_gen/templates/components/toc_scripts.js.jinja,sha256=9AanLJaVormGi52h-k2tKJTRT4BiBGGNnw3Kmrnr40Q,10481
275
281
  kash/web_gen/templates/components/toc_styles.css.jinja,sha256=SM99C9bOu11qdZ1U6hN7lLe2w_Hk6u9qNZcx2knSkgg,7553
276
- kash/web_gen/templates/components/tooltip_scripts.js.jinja,sha256=iz_5L5X4D4D1guotJjGVxMh5LcyOpjepw1R3nQd1NLE,32084
282
+ kash/web_gen/templates/components/tooltip_scripts.js.jinja,sha256=63HUSXtT07Vh2ndp90ViuPHTdzslrkGO5it4s-5EheM,40181
277
283
  kash/web_gen/templates/components/tooltip_styles.css.jinja,sha256=tD-GBEFNIeVPAbbeB88bsOWzEFoThcSP5FfH9LmSAeM,14216
284
+ kash/web_gen/templates/components/youtube_popover_scripts.js.jinja,sha256=txlltrlP-xDvkFDd_ZOKNKA1Kr5aS3VSFQ51TqeKCpU,7383
285
+ kash/web_gen/templates/components/youtube_popover_styles.css.jinja,sha256=00hVUdGXpJSxKevid4DPTpxxrEc6ejJUurzRjUpnUDI,4113
278
286
  kash/workspaces/__init__.py,sha256=q1gFERRZLJMA9-XSUKvB1ulauHDKqyzzc86GFLbxAuk,700
279
287
  kash/workspaces/param_state.py,sha256=vT_eGWqg2SRviIM5jqEAauznX2B5Xt2nHHu2oRxTcIU,746
280
288
  kash/workspaces/selections.py,sha256=rEUuQlrQ3C_54bzBSKDTTptgX8oZPqN0Ao4uaXSWA-Q,12003
@@ -282,9 +290,9 @@ kash/workspaces/source_items.py,sha256=Pwnw3OhjR2IJEMEeHf6hpKloj-ellM5vsY7LgkGev
282
290
  kash/workspaces/workspace_dirs.py,sha256=kjuY4t7mSSXq00fZmln7p9TWq4kAZoPTCDM0DG7uEaI,1545
283
291
  kash/workspaces/workspace_output.py,sha256=MMg_KumkHKFGc0DOUFaW5ImpgqIfdlsLtvXbLEt1hwI,5692
284
292
  kash/workspaces/workspace_registry.py,sha256=SQt2DZgBEu95Zj9fpy67XdJPgJyKFDCU2laSuiZswNo,2200
285
- kash/workspaces/workspaces.py,sha256=ypxlX2K64QOhNsta69arlvKbiVpUW_4CDeX_sEcIQbg,6907
293
+ kash/workspaces/workspaces.py,sha256=H-VpigO2zvWvWCZIT2G-cqEqcZATiwCLFX2jwFW08bw,6781
286
294
  kash/xonsh_custom/command_nl_utils.py,sha256=6Xcx98HXL5HywziHi0XskwFx6kfvz7oCmMX-siJib1A,3392
287
- kash/xonsh_custom/custom_shell.py,sha256=xthM_CAHw6FNlXx-vicLXfRgMHK2f7MpLprhc8PCD84,19005
295
+ kash/xonsh_custom/custom_shell.py,sha256=wTYwDt6zJzVtljcDh1j__cJXkoMy9w687vhgDk6nlqU,19024
288
296
  kash/xonsh_custom/customize_prompt.py,sha256=u-jRY-ftXYflBkbJVetEg6GYelPUvqZEpjrPRUTfy8w,6896
289
297
  kash/xonsh_custom/load_into_xonsh.py,sha256=Z_PAaW_Uv-PDRKdw9E_7dC1eMe6FbwwIUioxyS1Sp_g,3596
290
298
  kash/xonsh_custom/shell_load_commands.py,sha256=2SzigO-IDK5QTBhAkv7bL4hPuRLWIT0r5D9t4mrXANY,4673
@@ -296,8 +304,8 @@ kash/xonsh_custom/xonsh_modern_tools.py,sha256=mj_b34LZXfE8MJe9EpDmp5JZ0tDM1biYN
296
304
  kash/xonsh_custom/xonsh_ranking_completer.py,sha256=ZRGiAfoEgqgnlq2-ReUVEaX5oOgW1DQ9WxIv2OJLuTo,5620
297
305
  kash/xontrib/fnm.py,sha256=V2tsOdmIDgbFbZSfMLpsvDIwwJJqiYnOkOySD1cXNXw,3700
298
306
  kash/xontrib/kash_extension.py,sha256=FLIMlgR3C_6A1fwKE-Ul0nmmpJSszVPbAriinUyQ8Zg,1896
299
- kash_shell-0.3.28.dist-info/METADATA,sha256=IM3U_GjrsZruEj5jtyFT3grUb6TGe-kRzzwO2MdLIxY,33080
300
- kash_shell-0.3.28.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
301
- kash_shell-0.3.28.dist-info/entry_points.txt,sha256=SQraWDAo8SqYpthLXThei0mf_hGGyhYBUO-Er_0HcwI,85
302
- kash_shell-0.3.28.dist-info/licenses/LICENSE,sha256=rCh2PsfYeiU6FK_0wb58kHGm_Fj5c43fdcHEexiVzIo,34562
303
- kash_shell-0.3.28.dist-info/RECORD,,
307
+ kash_shell-0.3.33.dist-info/METADATA,sha256=rEXEktz-jYfIDY2XI0fmEQbBVnLYoo1omDU6B0LQLhw,33547
308
+ kash_shell-0.3.33.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
309
+ kash_shell-0.3.33.dist-info/entry_points.txt,sha256=SQraWDAo8SqYpthLXThei0mf_hGGyhYBUO-Er_0HcwI,85
310
+ kash_shell-0.3.33.dist-info/licenses/LICENSE,sha256=rCh2PsfYeiU6FK_0wb58kHGm_Fj5c43fdcHEexiVzIo,34562
311
+ kash_shell-0.3.33.dist-info/RECORD,,