kash-shell 0.3.8__py3-none-any.whl → 0.3.10__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 (154) hide show
  1. kash/actions/__init__.py +4 -4
  2. kash/actions/core/markdownify.py +5 -2
  3. kash/actions/core/readability.py +5 -2
  4. kash/actions/core/render_as_html.py +18 -0
  5. kash/actions/core/webpage_config.py +12 -4
  6. kash/commands/__init__.py +8 -20
  7. kash/commands/base/basic_file_commands.py +15 -0
  8. kash/commands/base/debug_commands.py +15 -2
  9. kash/commands/base/general_commands.py +27 -18
  10. kash/commands/base/logs_commands.py +1 -4
  11. kash/commands/base/model_commands.py +8 -8
  12. kash/commands/base/search_command.py +3 -2
  13. kash/commands/base/show_command.py +5 -3
  14. kash/commands/extras/parse_uv_lock.py +186 -0
  15. kash/commands/help/doc_commands.py +2 -31
  16. kash/commands/help/welcome.py +33 -0
  17. kash/commands/workspace/selection_commands.py +11 -6
  18. kash/commands/workspace/workspace_commands.py +19 -16
  19. kash/config/colors.py +2 -0
  20. kash/config/env_settings.py +72 -0
  21. kash/config/init.py +2 -2
  22. kash/config/logger.py +61 -59
  23. kash/config/logger_basic.py +12 -5
  24. kash/config/server_config.py +6 -6
  25. kash/config/settings.py +117 -67
  26. kash/config/setup.py +35 -9
  27. kash/config/suppress_warnings.py +30 -12
  28. kash/config/text_styles.py +3 -13
  29. kash/docs/load_api_docs.py +2 -1
  30. kash/docs/markdown/topics/a2_installation.md +7 -3
  31. kash/docs/markdown/topics/a3_getting_started.md +3 -2
  32. kash/docs/markdown/warning.md +3 -8
  33. kash/docs/markdown/welcome.md +4 -0
  34. kash/docs_base/load_recipe_snippets.py +1 -1
  35. kash/docs_base/recipes/{general_system_commands.ksh → general_system_commands.sh} +1 -1
  36. kash/{concepts → embeddings}/cosine.py +2 -1
  37. kash/embeddings/text_similarity.py +57 -0
  38. kash/exec/__init__.py +20 -3
  39. kash/exec/action_decorators.py +18 -4
  40. kash/exec/action_exec.py +41 -23
  41. kash/exec/action_registry.py +13 -48
  42. kash/exec/command_registry.py +2 -1
  43. kash/exec/fetch_url_metadata.py +4 -6
  44. kash/exec/importing.py +56 -0
  45. kash/exec/llm_transforms.py +6 -6
  46. kash/exec/precondition_registry.py +2 -1
  47. kash/exec/preconditions.py +16 -1
  48. kash/exec/shell_callable_action.py +33 -19
  49. kash/file_storage/file_store.py +23 -14
  50. kash/file_storage/item_file_format.py +13 -3
  51. kash/file_storage/metadata_dirs.py +11 -2
  52. kash/help/assistant.py +2 -2
  53. kash/help/assistant_instructions.py +2 -1
  54. kash/help/help_embeddings.py +2 -2
  55. kash/help/help_printing.py +14 -10
  56. kash/help/tldr_help.py +5 -3
  57. kash/llm_utils/clean_headings.py +1 -1
  58. kash/llm_utils/llm_api_keys.py +4 -4
  59. kash/llm_utils/llm_completion.py +2 -2
  60. kash/llm_utils/llm_features.py +68 -0
  61. kash/llm_utils/llm_messages.py +1 -2
  62. kash/llm_utils/llm_names.py +1 -1
  63. kash/llm_utils/llms.py +17 -12
  64. kash/local_server/__init__.py +5 -2
  65. kash/local_server/local_server.py +56 -46
  66. kash/local_server/local_server_commands.py +15 -15
  67. kash/local_server/local_server_routes.py +2 -2
  68. kash/local_server/local_url_formatters.py +1 -1
  69. kash/mcp/__init__.py +5 -2
  70. kash/mcp/mcp_cli.py +54 -17
  71. kash/mcp/mcp_server_commands.py +5 -6
  72. kash/mcp/mcp_server_routes.py +14 -11
  73. kash/mcp/mcp_server_sse.py +61 -34
  74. kash/mcp/mcp_server_stdio.py +0 -8
  75. kash/media_base/audio_processing.py +81 -7
  76. kash/media_base/media_cache.py +18 -18
  77. kash/media_base/media_services.py +1 -1
  78. kash/media_base/media_tools.py +6 -6
  79. kash/media_base/services/local_file_media.py +2 -2
  80. kash/media_base/{speech_transcription.py → transcription_deepgram.py} +25 -109
  81. kash/media_base/transcription_format.py +73 -0
  82. kash/media_base/transcription_whisper.py +38 -0
  83. kash/model/__init__.py +73 -5
  84. kash/model/actions_model.py +38 -4
  85. kash/model/concept_model.py +30 -0
  86. kash/model/items_model.py +56 -13
  87. kash/model/params_model.py +24 -0
  88. kash/shell/completions/completion_scoring.py +37 -5
  89. kash/shell/output/kerm_codes.py +1 -2
  90. kash/shell/output/shell_formatting.py +14 -4
  91. kash/shell/shell_main.py +2 -2
  92. kash/shell/utils/exception_printing.py +6 -0
  93. kash/shell/utils/native_utils.py +26 -20
  94. kash/text_handling/custom_sliding_transforms.py +12 -4
  95. kash/text_handling/doc_normalization.py +6 -2
  96. kash/text_handling/markdown_render.py +117 -0
  97. kash/text_handling/markdown_utils.py +204 -0
  98. kash/utils/common/import_utils.py +12 -3
  99. kash/utils/common/type_utils.py +0 -29
  100. kash/utils/common/url.py +80 -28
  101. kash/utils/errors.py +6 -0
  102. kash/utils/file_utils/{dir_size.py → dir_info.py} +25 -4
  103. kash/utils/file_utils/file_ext.py +2 -3
  104. kash/utils/file_utils/file_formats.py +28 -2
  105. kash/utils/file_utils/file_formats_model.py +50 -19
  106. kash/utils/file_utils/filename_parsing.py +10 -4
  107. kash/web_content/dir_store.py +1 -2
  108. kash/web_content/file_cache_utils.py +37 -10
  109. kash/web_content/file_processing.py +68 -0
  110. kash/web_content/local_file_cache.py +12 -9
  111. kash/web_content/web_extract.py +8 -3
  112. kash/web_content/web_fetch.py +12 -4
  113. kash/web_gen/tabbed_webpage.py +5 -2
  114. kash/web_gen/templates/base_styles.css.jinja +120 -14
  115. kash/web_gen/templates/base_webpage.html.jinja +60 -13
  116. kash/web_gen/templates/content_styles.css.jinja +4 -2
  117. kash/web_gen/templates/item_view.html.jinja +2 -2
  118. kash/web_gen/templates/tabbed_webpage.html.jinja +1 -2
  119. kash/workspaces/__init__.py +15 -2
  120. kash/workspaces/selections.py +18 -3
  121. kash/workspaces/source_items.py +4 -2
  122. kash/workspaces/workspace_output.py +11 -4
  123. kash/workspaces/workspaces.py +5 -11
  124. kash/xonsh_custom/command_nl_utils.py +40 -19
  125. kash/xonsh_custom/custom_shell.py +44 -12
  126. kash/xonsh_custom/customize_prompt.py +39 -21
  127. kash/xonsh_custom/load_into_xonsh.py +26 -27
  128. kash/xonsh_custom/shell_load_commands.py +2 -2
  129. kash/xonsh_custom/xonsh_completers.py +2 -249
  130. kash/xonsh_custom/xonsh_keybindings.py +282 -0
  131. kash/xonsh_custom/xonsh_modern_tools.py +3 -3
  132. kash/xontrib/kash_extension.py +5 -6
  133. {kash_shell-0.3.8.dist-info → kash_shell-0.3.10.dist-info}/METADATA +26 -12
  134. {kash_shell-0.3.8.dist-info → kash_shell-0.3.10.dist-info}/RECORD +140 -140
  135. {kash_shell-0.3.8.dist-info → kash_shell-0.3.10.dist-info}/entry_points.txt +1 -1
  136. kash/concepts/concept_formats.py +0 -23
  137. kash/concepts/text_similarity.py +0 -112
  138. kash/shell/clideps/api_keys.py +0 -99
  139. kash/shell/clideps/dotenv_setup.py +0 -114
  140. kash/shell/clideps/dotenv_utils.py +0 -89
  141. kash/shell/clideps/pkg_deps.py +0 -232
  142. kash/shell/clideps/platforms.py +0 -11
  143. kash/shell/clideps/terminal_features.py +0 -56
  144. kash/shell/utils/osc_utils.py +0 -95
  145. kash/shell/utils/terminal_images.py +0 -133
  146. kash/text_handling/markdown_util.py +0 -167
  147. kash/utils/common/atomic_var.py +0 -158
  148. kash/utils/common/string_replace.py +0 -93
  149. kash/utils/common/string_template.py +0 -101
  150. /kash/docs_base/recipes/{python_dev_commands.ksh → python_dev_commands.sh} +0 -0
  151. /kash/docs_base/recipes/{tldr_standard_commands.ksh → tldr_standard_commands.sh} +0 -0
  152. /kash/{concepts → embeddings}/embeddings.py +0 -0
  153. {kash_shell-0.3.8.dist-info → kash_shell-0.3.10.dist-info}/WHEEL +0 -0
  154. {kash_shell-0.3.8.dist-info → kash_shell-0.3.10.dist-info}/licenses/LICENSE +0 -0
@@ -1,68 +1,68 @@
1
1
  kash/__init__.py,sha256=hplHtnRqt1MpGIgKv3WZb9YoCoMPGtnNGtu8Eb9G6zI,110
2
2
  kash/__main__.py,sha256=83JiHvCNK7BAwEkaTD0kVekj7PEMucvCyquSl4p-1QA,78
3
- kash/actions/__init__.py,sha256=xggv_dShKVAKBXWuDuajetenLKcjOB02_gGQO8P37O0,1453
3
+ 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=5P3ZDMKmOqnfiSn4dchtodh9StpnMWkUM5acIguIkmw,3043
7
- kash/actions/core/markdownify.py,sha256=lTNNKIcOpxrwx3Ham7r_qpIbKmyFBHVLJJXssD5QdFo,998
8
- kash/actions/core/readability.py,sha256=tRs18Z-2rTdmG51n_7Ug-8D35ATCkRGg8IXnWsIit-Y,827
7
+ kash/actions/core/markdownify.py,sha256=WTA1FP7h6eCr1mebrm0QqyT5D288SnMkYax8ECKX5kE,1183
8
+ kash/actions/core/readability.py,sha256=TWgBn00aglIWwp_g2hFodyWmJVSDsqn-S18d5uKXZyE,1012
9
+ kash/actions/core/render_as_html.py,sha256=jZVCqx4Z3zAEZ5HBHtENFJN3ywOuurUPTp4cMx38yqU,632
9
10
  kash/actions/core/show_webpage.py,sha256=hMhPTTwpZb7q1w2ZNjmuVkxlG-O4WE_Dw3GKrQkX5UA,987
10
11
  kash/actions/core/strip_html.py,sha256=VeTsTzoR0GKAvwpdr8-nFplYF50V3urfYZmGOhlwuZo,895
11
12
  kash/actions/core/summarize_as_bullets.py,sha256=Zwr8lNzL77pwpnW_289LQjNBijNDpTPANfFdOJA-PZ4,2070
12
- kash/actions/core/webpage_config.py,sha256=gRcx-MK3KVnxrpWBfgq0u7wToMTfycBz7XkMk2hukII,656
13
+ kash/actions/core/webpage_config.py,sha256=uJtJwHxel7xgWg9WjkR2snEBXMj9lmieYI3YKhpuff8,873
13
14
  kash/actions/core/webpage_generate.py,sha256=FHRmwWWWzSoC2Cd0d4oy249Za0A03HD-nFL6SL9SUBw,788
14
15
  kash/actions/meta/write_instructions.py,sha256=zeKKX-Yi8jSyjvZ4Ii_4MNBRtM2MENuHyrD0Vxsaos8,1277
15
16
  kash/actions/meta/write_new_action.py,sha256=w7SJZ2FjzRbKwqKX9PeozUrh8cNJAumX7F80wW7dQts,6356
16
- kash/commands/__init__.py,sha256=k8JtFpQbbTIrnA1O3iQvCEgiIzrQ_WhG2x6GdJP22vI,1152
17
- kash/commands/base/basic_file_commands.py,sha256=5Z3s7PpsDZw4YL53h0DW8B5CNPPxZm_ZxK8KV6o1OKE,5906
17
+ kash/commands/__init__.py,sha256=MhdPSluWGE3XVQ7LSv2L8_aAxaey8CLjQBjGC9B4nRM,191
18
+ kash/commands/base/basic_file_commands.py,sha256=7aZ5ZuSTCZE8jilDxD_41C7Ie88nmx9aGgiJCQLasCA,6359
18
19
  kash/commands/base/browser_commands.py,sha256=iYvpW4D_tlhW_p0cq3A6YO9UGCdHtvzIQiNMDwCY07A,1574
19
- kash/commands/base/debug_commands.py,sha256=YUCEAsOwwZw5ByujiniTi87AG-alQQnBHZAFKyq78qE,7343
20
+ kash/commands/base/debug_commands.py,sha256=9I5W3SMQvsnpcs-b6CJCYu1Ydl6gIoTUcDZxvn1dN3g,7643
20
21
  kash/commands/base/diff_commands.py,sha256=U2geK6TLji9hnSfKW1DDGICaawm9p6Ht_Way6W_34AY,3446
21
22
  kash/commands/base/files_command.py,sha256=mGvFNHadG3c9tmOxCFJm-TjiK8e7mDb7kS0o75N2Clc,15947
22
- kash/commands/base/general_commands.py,sha256=oA_7f3-ZFdoNyFqYQ4IYonY60Vse5JWdsUdTIP66dCc,6451
23
- kash/commands/base/logs_commands.py,sha256=76y7gXDeQtT1yVqvKhSjHTCCLtxvfjypuYqVHuhHZ08,3024
24
- kash/commands/base/model_commands.py,sha256=nnkZtx_fSQNnEcvRUcbyDTvwQX75j7Ay23HXWpnWdag,1766
23
+ kash/commands/base/general_commands.py,sha256=KaCbzk7o-ejwXE_H3PB3MrN00uTinP3T8uHKYrGPrIw,6946
24
+ kash/commands/base/logs_commands.py,sha256=IyNgxaAoa5LlS-VxD_x8bXTVbD04pT8qEHlIJNM09UU,2963
25
+ kash/commands/base/model_commands.py,sha256=d17a2NvfDbwV1y8gyZVsOtX-j5H5we5OEXM9TxTqvBs,1790
25
26
  kash/commands/base/reformat_command.py,sha256=C4EJz4DRrNon8TLgzlUeR64iLIdorGwx2nRGviI8zxs,1863
26
- kash/commands/base/search_command.py,sha256=L1z894CRR5kmAsfN6HpHhMHR_ZwI0XKPyXAKe74jcP4,2212
27
- kash/commands/base/show_command.py,sha256=VgwrOfoBSm072XICriN7HFU-8X305zKBQPKfzK0R3bQ,2754
27
+ kash/commands/base/search_command.py,sha256=FXtP09HmmfHRrjenvmU4j0Lcw34piIzdI3UFGbUQ1tg,2201
28
+ kash/commands/base/show_command.py,sha256=J0zw8gBcDQJ0nI47EkrGY9VfNFb_thQXcxNCele9av8,2895
29
+ kash/commands/extras/parse_uv_lock.py,sha256=Uwu6uq5mmHEKdQMTyiYxiLQ5FJSI5rGtVn6JQtzyufU,5542
28
30
  kash/commands/extras/utils_commands.py,sha256=rz3N7VxoUHvCxksRt-sLubkvyW-VH9OTltLEMEnjRfU,769
29
31
  kash/commands/help/assistant_commands.py,sha256=BhGhtyoiEbu6xYfi-r47g_U4pxptUkucyNmiv5_kg34,3042
30
- kash/commands/help/doc_commands.py,sha256=V8nbYl2VNiIS3sZvNjn6vxoDO743dSz_schWY4up2Fo,3207
32
+ kash/commands/help/doc_commands.py,sha256=7lKR7mzue2N7pSkNqblpFJy892fS5N6jWVOHqeXziHw,2466
31
33
  kash/commands/help/help_commands.py,sha256=eJTpIhXck123PAUq2k-D3Q6UL6IQ8atOVYurLi2GD0A,4229
32
34
  kash/commands/help/logo.py,sha256=W8SUach9FjoTqpHZwTGS582ry4ZluxbBp86ZCiAtDkY,3505
33
- kash/commands/workspace/selection_commands.py,sha256=qSR2_2IZ6A4hHF70FpWI2sIQj_IAKGy-RlEoy7vCfi0,7196
34
- kash/commands/workspace/workspace_commands.py,sha256=rK4bRyuSYd0dCN36vv3j_LCyYeqZbVJWbBm6N0psQV4,22544
35
- kash/concepts/concept_formats.py,sha256=701gEnqWLrK_ElrKhwlzXuwqRYUZ7OATyy0k2EUBjoA,807
36
- kash/concepts/cosine.py,sha256=5BAc7WahpbfUvuVMDIWJY1cM4MHSn1EQ7ugSF9xhSjM,1367
37
- kash/concepts/embeddings.py,sha256=vx8klwgPc6D7oswWD5MfA3xGCke8zEwS1cGGln7P388,4249
38
- kash/concepts/text_similarity.py,sha256=c0dZdDXFsL56r-bMBb17t7arK-qkwbXnQ6Kemzzk12k,3635
35
+ kash/commands/help/welcome.py,sha256=F4QBgj3e1dM9Pf0H4TSzCrkVfXQVKUIl0b6Qmofbdo4,905
36
+ kash/commands/workspace/selection_commands.py,sha256=nWWIN-8EnEgjgWIbQevqz5_3iDbcIJT3ffQg-_WAlHU,7451
37
+ kash/commands/workspace/workspace_commands.py,sha256=DkcDVynFSjuC8_S96g0DBWg-AgPzY3JtTBfnDlREceA,22694
39
38
  kash/config/__init__.py,sha256=ytly9Typ1mWV4CXfV9G3CIPtPQ02u2rpZ304L3GlFro,148
40
39
  kash/config/capture_output.py,sha256=ud3uUVNuDicHj3mI_nBUBO-VmOrxtBdA3z-I3D1lSCU,2398
41
- kash/config/colors.py,sha256=fAO7heiAq3wUVw-ezZEdFI0PFDoSJAZUD8YOq7oL_uk,9845
42
- kash/config/init.py,sha256=O3wLzjeRH6jRdQJyLcLCsu5zi94xRNIBjdbnOnz7lLM,532
40
+ kash/config/colors.py,sha256=gnbK5YnPH9fhtyOzCy5vGgQXRLhOzAxc441xMscvfkc,9949
41
+ kash/config/env_settings.py,sha256=DXp9Q9u-EC7cK0nyXIcKvPV9DuChvoVw7QCe7ZGe3Rw,2225
42
+ kash/config/init.py,sha256=aE4sZ6DggBmmoZEx9C5mQKrEbcDiswX--HF7pfCFKzc,526
43
43
  kash/config/lazy_imports.py,sha256=MCZXLnKvNyfHi0k7MU5rNwcdJtUF28naCixuogsAOAA,805
44
- kash/config/logger.py,sha256=aOkyND82vSDo6CfSWB73y-5pnxTFq5U6oCzB7LQD1Ic,11122
45
- kash/config/logger_basic.py,sha256=KlgoCc34ppfGR98Vy1RdKP7ZhicezfOrGW_iI0txMWs,1262
44
+ kash/config/logger.py,sha256=uy6KXsCjvr_-6IB45wmNNDgkkTcFLxH56QPxx8-0MT0,11537
45
+ kash/config/logger_basic.py,sha256=yLZtDqIETBvZTilLDI-yJahmhVVW4twCNyKlsREEq0g,1511
46
46
  kash/config/logo.txt,sha256=P4RO1cJ9HRF1BavTp3Kae9iByDNhzhEC-qLAa6ww1RA,217
47
- kash/config/server_config.py,sha256=7q8D32yHu60ZNlTZEiYJGqrzJ0HBqiuMxtQ_yNvH2N0,1779
48
- kash/config/settings.py,sha256=wcmQ8OFWYwSA7Kpt1EIzprMUsdG6D2l7lfLYpVVgdew,7188
49
- kash/config/setup.py,sha256=KQm8Qr4tme1Mua0IPio5bKbJfG4LP8e_cQ1FBoHm7iQ,1500
50
- kash/config/suppress_warnings.py,sha256=E2baESsok5MJDi3d_eGbYIRWw00Htgt7iy7_bboPBSU,1099
51
- kash/config/text_styles.py,sha256=y9z-4b8fCijcb46O0OGeF03WTV9DyvZKDtSjKmuhIWI,13827
47
+ kash/config/server_config.py,sha256=eQ1yxDk031QI0Efp0I1VetqQd9wG7MrLVBCHFm4gp2g,1790
48
+ kash/config/settings.py,sha256=SwCe1ttV0vKA4Koin1I6RqHplMBlixlHhf5N2bOLjWo,8425
49
+ kash/config/setup.py,sha256=AgeLPGM01C5H5z1_WK-zoWb_HqryJsQ7sU1yN5qca9E,2531
50
+ kash/config/suppress_warnings.py,sha256=yty5ZodMLIpmjphRtcVmRamXfiWbyfga9annve6qxb0,1475
51
+ kash/config/text_styles.py,sha256=3k0iar_hDW0iv7JKi5bKHyQZFOGzDjA8x0IaFi69mj8,13498
52
52
  kash/docs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
53
53
  kash/docs/all_docs.py,sha256=NutfgU8VOA7_K2HX18FoOHVvvLL14dALoCxK9qDbQ04,3157
54
54
  kash/docs/load_actions_info.py,sha256=D9uv8gdBtkBmdbFZeyIigsupPF9_WfidHVwWQrlggI0,937
55
- kash/docs/load_api_docs.py,sha256=lBxJSqa--epCvxnC7_tXKdaCtrub0pvUMK_0QU6UO88,511
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
57
  kash/docs/load_source_code.py,sha256=ysVZKUnLOrnRAIo_M25tPcYO64_fBdssD3-2XUx-4hg,4123
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
61
- kash/docs/markdown/warning.md,sha256=KSbBfT2P8CZ86xyksIhUfgENxcF1vhVj3u53ftH6bno,350
62
- kash/docs/markdown/welcome.md,sha256=fY3sqSc4BJCP7Y2m3nvL1cUS5mcQsC3MBYa8nl0avdY,460
61
+ kash/docs/markdown/warning.md,sha256=bG0T3UFqAkzF8217J8AbIbQ7ftJ_GKMRilIGq9eLdYc,162
62
+ kash/docs/markdown/welcome.md,sha256=yp_tmGXGIb8043ZDIL97Q1uaKVys7-ArHCprgDlon7w,611
63
63
  kash/docs/markdown/topics/a1_what_is_kash.md,sha256=EE1ImWkkXHImmpe24QEau30suUMBRllHa0e6e99MUGQ,4983
64
- kash/docs/markdown/topics/a2_installation.md,sha256=NWmKkVOL5j2Ldy3yrHaQEIlKg9Om3gAmqjDsdOtpnoM,5849
65
- kash/docs/markdown/topics/a3_getting_started.md,sha256=XfDx-qgKHcQ1SBVTtY4aOiOzXWW6i69j-1fTWhyzZLk,9535
64
+ kash/docs/markdown/topics/a2_installation.md,sha256=fzx2rkMK-hJh9XlFqHutGVFZS5OkweZYizJO5_FCqHw,6019
65
+ kash/docs/markdown/topics/a3_getting_started.md,sha256=qUeFYAn18DkZn0JkkpIkoHh8LFRipeQBaoYa9U8mDK8,9577
66
66
  kash/docs/markdown/topics/a4_elements.md,sha256=XNJRw-iqnytiIHOAshp1YnUpHM5KBgFAhuOdp_fekxQ,4615
67
67
  kash/docs/markdown/topics/a5_tips_for_use_with_other_tools.md,sha256=VGUdq8dm78E8PFbNR9BmV8Gj-r8zP-vOQz8TibQmGw0,3259
68
68
  kash/docs/markdown/topics/b0_philosophy_of_kash.md,sha256=ADtgbvv756vKrJPhdvNGVzJVedOgo6ak7_vGEEFi8Sc,8749
@@ -73,103 +73,105 @@ kash/docs/markdown/topics/b4_faq.md,sha256=ofLMC1JxdWAMZkiUzyhJTewBhEti8ULEF8yOT
73
73
  kash/docs_base/docs_base.py,sha256=jSJGBto3KIElXZcBsnyg8kvWHYtdUeCDXPHhW_7tJfs,3015
74
74
  kash/docs_base/load_custom_command_info.py,sha256=IyCNoidwRBQY5WsD5TTS-nIfBL_RV62Ml5lW7JcBDIw,945
75
75
  kash/docs_base/load_faqs.py,sha256=EG2E_7wFDlixHtBGps1kQM1HVDRKMYe1RhzRKIVlbZQ,1449
76
- kash/docs_base/load_recipe_snippets.py,sha256=eJ5bm6HoAj3a2ej95T4drpyExz0pEW2J-T3O27kUXDc,1504
77
- kash/docs_base/recipes/general_system_commands.ksh,sha256=Pyiu_FVabdBWYWli_OvQ_2BMkv6IVYU_lfuvqIBLues,209
78
- kash/docs_base/recipes/python_dev_commands.ksh,sha256=9vJsQiDZKJ7ShokFnzc2Jsto6n87MNRkbgcc2Ee9Kro,179
79
- kash/docs_base/recipes/tldr_standard_commands.ksh,sha256=7nPES55aT45HF3eDhQRrEUiWRpPdvvp40Sg88uADa80,60491
80
- kash/exec/__init__.py,sha256=VJCPszxT2AUZuaE2GQROgg3RDqVdCoK0gmfsGAT1olQ,625
81
- kash/exec/action_decorators.py,sha256=xb_0l-_IpgFkapVsWRZS848bVeSFJHGG5nZnNZnl63A,16422
82
- kash/exec/action_exec.py,sha256=9Wl4XxfxU6q6B-WcKCPou5V4SpTPUkimUwxhs6rWjEE,17294
83
- kash/exec/action_registry.py,sha256=PPS_eB3FjOhtOpPV6VWG5lbbk1nKjjWVG_T_hdKjFVc,3786
76
+ kash/docs_base/load_recipe_snippets.py,sha256=nGw4xlbfsKdR6ZngBBGBeRHBwfSPpI_gnJ9BqSvDjZI,1503
77
+ kash/docs_base/recipes/general_system_commands.sh,sha256=rFNPuLj3Md09L5yzWx6ILjaR-mFROSlL1cmpWiyJ9WQ,208
78
+ kash/docs_base/recipes/python_dev_commands.sh,sha256=9vJsQiDZKJ7ShokFnzc2Jsto6n87MNRkbgcc2Ee9Kro,179
79
+ kash/docs_base/recipes/tldr_standard_commands.sh,sha256=7nPES55aT45HF3eDhQRrEUiWRpPdvvp40Sg88uADa80,60491
80
+ kash/embeddings/cosine.py,sha256=Nke3WF9XB305dWYCzko7vmIwxOWgBu_RlpR-tnMq0ik,1422
81
+ kash/embeddings/embeddings.py,sha256=vx8klwgPc6D7oswWD5MfA3xGCke8zEwS1cGGln7P388,4249
82
+ kash/embeddings/text_similarity.py,sha256=t5I1s5pW9WKBej5h9msg6J4rFzRRY17oJCCa8UFxd28,1787
83
+ kash/exec/__init__.py,sha256=m9UFokJm7EXCMPETXf1hE63zIZDiAfVGRAHb6SmaHbs,1018
84
+ kash/exec/action_decorators.py,sha256=8e055Z0HqKwK1Aif5UqM5TheYLB6LtWbTmGr1-QU8aU,16917
85
+ kash/exec/action_exec.py,sha256=Fo5HK7H87xw2G2FUr8PPgt-eFev2y4caTU9tW15ip4A,17942
86
+ kash/exec/action_registry.py,sha256=numU9pH_W5RgIrYmfi0iYMYy_kLJl6vup8PMrhxAfdc,2627
84
87
  kash/exec/combiners.py,sha256=AJ6wgPUHsmwanObsUw64B83XzU26yuh5t4l7igLn82I,4291
85
88
  kash/exec/command_exec.py,sha256=zc-gWm7kyB5J5Kp8xhULQ9Jj9AL927KkDPXXk-Yr1Bw,1292
86
- kash/exec/command_registry.py,sha256=5YHOVk0GPvafbizgukpXuHdESkZgvTC4vUCuS4E6iAk,2049
87
- kash/exec/fetch_url_metadata.py,sha256=NcQrDncWiA_TJpQ-B3IR6FgM5bAW4lAQg-Oso4azmck,2735
89
+ kash/exec/command_registry.py,sha256=1s2ogU8b8nqK_AEtslbr1eYrXCGDkeT30UrB7L0BRoM,2027
90
+ kash/exec/fetch_url_metadata.py,sha256=mgS4zwPw0HAVYIroTeKN_whMyoVE2DUDN_W6ylO3gVw,2656
88
91
  kash/exec/history.py,sha256=l2XwHGBR1UgTGSFPSBE9mltmxvjR_5qFFO6d-Z008nc,1208
89
- kash/exec/llm_transforms.py,sha256=5fqkBnNzng24-q6kqlnQjSkbEihyoUw3fTnCgDJFrL0,4170
92
+ kash/exec/importing.py,sha256=i1utrbqpn8MKfCQ06vavka_cjNaYRHaWnsy0ygNRbxI,1825
93
+ kash/exec/llm_transforms.py,sha256=cHbvtPdNNA3Pi8yY9-y2tZNYdsVUaJ8RA4RKfW1cCj0,4230
90
94
  kash/exec/precondition_checks.py,sha256=HymxL7qm4Yz8V76Um5pKdIRnQ2N-p9rpQQi1fI38bNA,2139
91
- kash/exec/precondition_registry.py,sha256=-RlMI5N4lx5_Tm6cB9Vjd2KnVBfgqKedlouxIy7pOW0,1266
92
- kash/exec/preconditions.py,sha256=fO7jhDiFy9FrGgBBCsbRg7IlzMQfR6AkPzN6uzvDIOw,3922
95
+ kash/exec/precondition_registry.py,sha256=cmp0mUfLS42AbAByDhwGx8GWz9PuZNR7z5rPZW9WQE4,1244
96
+ kash/exec/preconditions.py,sha256=NbkhTG_ga3KjIGGLrjOifNDx8Ea5VyzSW1Ku54dwIew,4349
93
97
  kash/exec/resolve_args.py,sha256=2sNk3dYmTfl8z3OBVrcgnaG0FonhKE_08MjlEap6qdc,4300
94
- kash/exec/shell_callable_action.py,sha256=rOsArl_GLmBVipa8-YK5hncmK4jqd7iDhxAs5ZzAxAk,3548
98
+ kash/exec/shell_callable_action.py,sha256=HsufAc4fWNWOZvciwzujs4CABKOgB5emWP4Ux1LbQZ4,4302
95
99
  kash/exec_model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
96
100
  kash/exec_model/args_model.py,sha256=gquOD0msFA-5xhNU-3R5l8wlwyAMefpMHltpxrDlYGQ,2662
97
101
  kash/exec_model/commands_model.py,sha256=iM8QhzA0tAas5OwF5liUfHtm45XIH1LcvCviuh3As7s,4923
98
102
  kash/exec_model/script_model.py,sha256=1VG3LhkTmlKzHOYouZ92ZpOSKSCcsz3-tHNcFMQF788,5031
99
103
  kash/exec_model/shell_model.py,sha256=LUhQivbpXlerM-DUzNY7BtctNBbn08Wto8CSSxQDxRU,568
100
104
  kash/file_storage/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
101
- kash/file_storage/file_store.py,sha256=6C85xxjGgGVptNl98RihhcNaRwsPNQC1UgzA4mmUdOY,26206
102
- kash/file_storage/item_file_format.py,sha256=enRjD7IVMUlAcVSRzPYBklkTBwYmRxM_zjAjqdAcW3U,5211
103
- kash/file_storage/metadata_dirs.py,sha256=VU5lgj3C_0t5JxMy4kE6B5AalLjuE0QfcvPuYiEexgQ,3744
105
+ kash/file_storage/file_store.py,sha256=GqgU6htX6mNZfqZuNACLXzFlOdjw53fJOqvUCOjcTcU,26578
106
+ kash/file_storage/item_file_format.py,sha256=oe71pB7hK6tkU0tBuUEjiuba0NuO7ovkJ1oUqd0UaRo,5368
107
+ kash/file_storage/metadata_dirs.py,sha256=9AqO3S3SSY1dtvP2iLX--E4ui0VIzXttG8R040otfyg,3820
104
108
  kash/file_storage/persisted_yaml.py,sha256=4-4RkFqdlBUkTOwkdA4vRKUywEE9TaDo13OGaDUyU9M,1309
105
109
  kash/file_storage/store_cache_warmer.py,sha256=cQ_KwxkBPWT3lMmYOCTkXgo7CKaGINns2YzIH32ExSU,1013
106
110
  kash/file_storage/store_filenames.py,sha256=95TVIrG0C36Rf77-uhqqfSrt-Xq6DTD0jZDoKnIODD4,1663
107
111
  kash/help/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
108
- kash/help/assistant.py,sha256=CkJ23mNECzLIu_y7--69nARxeE4W9ugmBh0XdeKc0JM,11529
109
- kash/help/assistant_instructions.py,sha256=9CU7saqsJeP6UBmwGuHEdQ8IXd3s60ViNECbvCOYvQE,2576
112
+ kash/help/assistant.py,sha256=R0XHNi-h51QoQ7rGouD2chrDPGomYaPQUqJdvpjlCs8,11535
113
+ kash/help/assistant_instructions.py,sha256=jW5XAsmLx8YZMKSDJgWnqo9Vwe7VuiTURQHjKBqr_L8,2549
110
114
  kash/help/assistant_output.py,sha256=9sM-OVLc6eMSOkxyovB88dNlsknFpf8Wz89Zp5PuEA8,1668
111
115
  kash/help/docstring_utils.py,sha256=80vcEGR05G1wwIfzaKhX5QzU38mkKna-gN6_wTNHjXg,3208
112
116
  kash/help/function_param_info.py,sha256=DHhd3eXI47IjrOOsWSwOC1Xal4X4h9qtZfXS67d-mqU,1682
113
- kash/help/help_embeddings.py,sha256=yTSd4C11QU_K6l2gkeeFCFMkHO0pu9wNjfGQQzCrDV0,2773
117
+ kash/help/help_embeddings.py,sha256=_ca7hPo_2UPwSGnB2k3KbcNU1b_I9OMI4RH2Z2E1PCU,2777
114
118
  kash/help/help_lookups.py,sha256=0dtuLWEXncqhJCijC98IA9stBDNNcJewt1JYqMLkTx4,2029
115
119
  kash/help/help_pages.py,sha256=XyV3SN1cvGjpS8xAbZ_X_6Z9hTIH7vXdgK8DCX2cwNg,3886
116
- kash/help/help_printing.py,sha256=P7hpfV_RH1vNZAhRmMqcZHsjVF97Nn00JsCiPvFAafw,6002
120
+ kash/help/help_printing.py,sha256=NAJa8qfaZGce5NKtUqdyDE8Ey0ag2ywjL2LP8ACT060,6078
117
121
  kash/help/help_types.py,sha256=xo0AXfaNjlMrWp6dkGixo6P61n1tIhFhlvv9sWhNBrI,7909
118
122
  kash/help/recommended_commands.py,sha256=jqc3TjWFBqDJ-iSzXn8vTOplb4uHndwvdAGJfcUV_qs,2486
119
- kash/help/tldr_help.py,sha256=OLdabcPMYS1R_xNoskOHwVIDzFwsVJd9OKNH8QdwVMQ,9603
123
+ kash/help/tldr_help.py,sha256=bcu__MIF4vYlZEeqQqieGIBcRhNCTK5u8jPV08ObzCI,9654
120
124
  kash/llm_utils/__init__.py,sha256=3yjign7KD-kM3ZBBcgtrZz-zjJ2Yx2Q-9bzknBx5vbU,401
121
- kash/llm_utils/clean_headings.py,sha256=97tpXPFXHh4vGC5s4fztPG3vAJcx44doaYYTRaKwCl0,2329
125
+ kash/llm_utils/clean_headings.py,sha256=TGUcPSmUMepTPF5st8b4Jbe9TzZ6HD0Jf_9Nh1SoilA,2330
122
126
  kash/llm_utils/fuzzy_parsing.py,sha256=bbG2Y7i5w6kxAVPAixyluv3MDS2hW_pkhnJpVOLHZQc,3278
123
- kash/llm_utils/llm_api_keys.py,sha256=QA_VwKmgiuT6rT3HNo8_Y_ITWmIsQf8fXwHLl4TO3H8,1095
124
- kash/llm_utils/llm_completion.py,sha256=3mVK2OwTqHpQkzd7MczCRx858uyFc7n7ETGgmNi91lw,5297
125
- kash/llm_utils/llm_messages.py,sha256=_4VoyCSjCtUuYcaFAXyQtrv-UPZEN7L1DJojDR_ZkQY,1203
126
- kash/llm_utils/llm_names.py,sha256=M_5uGfWfd0M1ZimDXqalIhANPcwcyul-cdjJE6rS3-E,3609
127
- kash/llm_utils/llms.py,sha256=T4eoc0L999a2eusIACbQUrKbauRf73BPBGVrI-IqzF8,3282
128
- kash/local_server/__init__.py,sha256=VKqWymz0rvWXSymDmurOaJP2iKGQ60LSu5keUjqkaqs,95
129
- kash/local_server/local_server.py,sha256=JhC6-XPlSXLm35p3Kqt_WZjluIuEqFSLRzVD4FD7a_E,5486
130
- kash/local_server/local_server_commands.py,sha256=e_s9QFVGVZKevMpJogWU3ICXkY8-FrtNB7MuDky2nSo,1710
131
- kash/local_server/local_server_routes.py,sha256=mGmF_TTMxeLcg-KIjpVaeCWIFgVNegrWpF5GCwHCAYg,10756
132
- kash/local_server/local_url_formatters.py,sha256=u5sRVTIaoibIMC4PwSDDuQWYho7SQd64Z2PwQZQDxig,5350
127
+ kash/llm_utils/llm_api_keys.py,sha256=Vy2LdX3-3czlQSrHn1Iq7_GXfeu7vETZWKGfCOFAWrg,1086
128
+ kash/llm_utils/llm_completion.py,sha256=ig_rZCHjaOZbt5D-3sOPsSFLpO8AMDXDi40jzdGeOk8,5296
129
+ kash/llm_utils/llm_features.py,sha256=NXZ3nvwcsVe0RLj3TtlK9gUu-UWoxdCU6Uw2X2IChrk,1773
130
+ kash/llm_utils/llm_messages.py,sha256=70QwIIvdwo-h4Jfn_6MbEHb3LTUjUmzg_v_dU_Ey__g,1174
131
+ kash/llm_utils/llm_names.py,sha256=VZbdKnoeBx_luB5YQ-Rz37gMt3_FcueJdp40ZaQbpUA,3620
132
+ kash/llm_utils/llms.py,sha256=Zz45v7qrmBNGnmyF-Mn5Q4F1dZGFT2xf_kmWGUMSUUw,3518
133
+ kash/local_server/__init__.py,sha256=kLah74GG0msEARgH6CrilY3OUPuivvx_fXVCqDzDMrc,142
134
+ kash/local_server/local_server.py,sha256=EugjL30VM0pWdZDsiQxU-o6EdEa082qlGd_7RHvI5tk,5863
135
+ kash/local_server/local_server_commands.py,sha256=xJQ1vHVWqkbPwRMw9LwHE8CnKrb8uWeXItI1ruQPx2Y,1584
136
+ kash/local_server/local_server_routes.py,sha256=o6yMhugVaJCDHJsEQf8vjb6EbhTyqx1cikBoODZSdIY,10750
137
+ kash/local_server/local_url_formatters.py,sha256=SqHjGMEufvm43n34SCa_8Asdwm7utx91Wwymj15TuSY,5327
133
138
  kash/local_server/port_tools.py,sha256=oFfOvO6keqS5GowTpVg2FTu5KqkPHBq-dWAEomUIgGo,2008
134
139
  kash/local_server/rich_html_template.py,sha256=O9CnkMYkWuMvKJkqD0P8jaZqfUe6hMP4LXFvcLpwN8Q,196
135
- kash/mcp/__init__.py,sha256=-MWyjlY2MLlcZ0NdBd5JFN2SlKfnlfvZ4SY02wpNnck,84
136
- kash/mcp/mcp_cli.py,sha256=TJCwIHMQhqgX9fbn1AgagFZCVmYHtCxHG1inssKDI6Y,2719
140
+ kash/mcp/__init__.py,sha256=kLah74GG0msEARgH6CrilY3OUPuivvx_fXVCqDzDMrc,142
141
+ kash/mcp/mcp_cli.py,sha256=jeNmqYTlYpDeFoOsZqtixIQ5ywoIB1LJZaK28opn4p8,3838
137
142
  kash/mcp/mcp_main.py,sha256=6PhjKwp631mezDTUAd-pL8lUZx9Gl7yCrCQFW61pqJU,3167
138
- kash/mcp/mcp_server_commands.py,sha256=6Ua4I2uhGjWXegnZNSKHJ-6WrJ1nQXydCsr3v_WbJe8,4201
139
- kash/mcp/mcp_server_routes.py,sha256=Et1HBI0ReejzDQCUt2K6biEaiX9UmiLwFIC-okXMhfQ,10495
140
- kash/mcp/mcp_server_sse.py,sha256=FsFhngAoZAt2l1ep_I3m7HzSFydzBIW1tCrKRjPab24,5122
141
- kash/mcp/mcp_server_stdio.py,sha256=AqwJqjhAI8dLkKa1aYatQgBQViW1XAhgStSR5OqqgZc,1411
143
+ kash/mcp/mcp_server_commands.py,sha256=dPvW6fE5FRQuaK5Gurg9_Mjk-U-sdoQ17tXOm3_Wh6Q,4163
144
+ kash/mcp/mcp_server_routes.py,sha256=_7KMZM-iNvySXZcPxRMrOsJKcr7L_OtVHujAqHkPJV0,10674
145
+ kash/mcp/mcp_server_sse.py,sha256=_D61cRWMuxgMrk-KxhkRLaaXXpgzJJa0sOB3uRxR0XM,5886
146
+ kash/mcp/mcp_server_stdio.py,sha256=u-oeIZKwzIAGlKmBpipC-hfNQKx36Md9hST11y3AZUY,1174
142
147
  kash/media_base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
143
- kash/media_base/audio_processing.py,sha256=tvUXidoFIKTKB923PUTBiTnv8MQ9gd_lC6JS7Bo4YWA,794
144
- kash/media_base/media_cache.py,sha256=CdLgKtTpeBpbxDGEAnC197Zx47qTrCmDYJzHYO7sdTU,7431
145
- kash/media_base/media_services.py,sha256=l4bbIMCGbUIrkf6vhoe5Y6zzEBC0efXrKqHtuvWPwPo,3429
146
- kash/media_base/media_tools.py,sha256=VjP6ulRLy5Ch-YX4A_YXRcADfbqEHMlWXFBDcPpOK-w,1471
147
- kash/media_base/speech_transcription.py,sha256=zKjZfM7_MvPJzIzG8wTaH3mpgPt8B2Lz8mS7eat7Fi4,7726
148
+ kash/media_base/audio_processing.py,sha256=k8V3SpQrSzdxHiInei4z6LycoAnfpQ2dttOfWhWLTX8,2874
149
+ kash/media_base/media_cache.py,sha256=0YnZBCPbi12TG0eZoa-02XBoRVZAEmmR6XT8PS-avBI,7453
150
+ kash/media_base/media_services.py,sha256=7H7Y-WDjvZCidoLCsWi01xfuJoP7uiUklviwN_78crE,3406
151
+ kash/media_base/media_tools.py,sha256=enzSebW41vDBGWUwkEn5udhRHmSBvH01MAt5rY1s388,1466
148
152
  kash/media_base/timestamp_citations.py,sha256=IHTvlZD3lIfe8T2uHFitgom82WahdHBeKqyc2OjUi9g,2368
149
- kash/media_base/services/local_file_media.py,sha256=2_qlhWpg377vqb4BALmN5zCraNR05HMDIRdTaybGf7k,5411
150
- kash/model/__init__.py,sha256=bX2mdMhshK79ljNtD0Su8CQchRwtmXuNcP-c6UxEZjs,1703
151
- kash/model/actions_model.py,sha256=mUBXB4ijn5c3JTGJZcDrZioEGvna4ytqsjCGi3mL-4Y,22191
153
+ kash/media_base/transcription_deepgram.py,sha256=AENcjBMyzf01yx-OrsQ5tqOg0-xJigvuMrm0IJgFRF8,5108
154
+ kash/media_base/transcription_format.py,sha256=rOVPTpwvW22c27BRwYF-Tc_xzqK_wOtUZpOPlvkHiDY,2344
155
+ kash/media_base/transcription_whisper.py,sha256=GqvroW9kBAH4-gcbYkMgNCfs2MpMIgm1ip3NMWtJ0IE,1169
156
+ kash/media_base/services/local_file_media.py,sha256=-A-tK6XP7XDCqXQIAoohesFZ3OIvpXWsDoktYBvBuNA,5399
157
+ kash/model/__init__.py,sha256=3cF2ExBzLfMsHul5IAjOywyBjdMthWFtbvLkjqc_BjU,2949
158
+ kash/model/actions_model.py,sha256=RSPGAdrBYkSerUPalYMx3Z1xm570Edoz-5buWX7WFG8,23289
152
159
  kash/model/assistant_response_model.py,sha256=6eDfC27nyuBDFjv5nCYMa_Qb2mPbKwDzZy7uLOIyskI,2653
153
160
  kash/model/compound_actions_model.py,sha256=HiDK5wwCu3WwZYHATZoLEguiqwR9V6V296wiKtGIX8s,6926
161
+ kash/model/concept_model.py,sha256=we2qOcy9Mv1q7XPfkDLp_CyO_-8DwAUfUYlpgy_jrFs,1011
154
162
  kash/model/graph_model.py,sha256=jnctrPiBZ0xwAR8D54JMAJPanA1yZdaxSFQoIpe8anA,2662
155
- kash/model/items_model.py,sha256=1_qYsqM3TmtEp3EM3324AYYUhQWlLgG4VA1nOSi0EzE,29800
163
+ kash/model/items_model.py,sha256=6siBGrChZIrr8lk1XFsME-zzz7Sz7ButAtSRPtUqL8w,31060
156
164
  kash/model/language_list.py,sha256=I3RIbxTseVmPdhExQimimEv18Gmy2ImMbpXe0-_t1Qw,450
157
165
  kash/model/llm_actions_model.py,sha256=a29uXVNfS2CiqvM7HPdC6H9A23rSQQihAideuBLMH8g,2110
158
166
  kash/model/media_model.py,sha256=64Zic4cRjQpgf_-tOuZlZZe59mz_qu0s6OQSU0YlDUI,3357
159
167
  kash/model/operations_model.py,sha256=OGNtCY0QDqHtRNL5ueVpmOASYrwg-ysoUKMvBsQTMWk,5194
160
- kash/model/params_model.py,sha256=YZO1TvnZ714CEG2Si7Vq6zEQOBdzfIC1Zkbk5bbAWsk,14292
168
+ kash/model/params_model.py,sha256=qGhsGvtDQoSqWkrKk9QZZfEh-jO1q2V-s-p6X-F37_M,14939
161
169
  kash/model/paths_model.py,sha256=H2CZNieTPF2ceW6QQDiwuZwpLddoo6ysazBi3THeNvM,15807
162
170
  kash/model/preconditions_model.py,sha256=-IfsVR0NkQhq_3hUTXzK2bFYAd--3YjSwUiDKHVQQqk,2887
163
171
  kash/shell/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
164
- kash/shell/shell_main.py,sha256=f7_cph3Tf8ZanfXdyuGR6uRUzU4fs8r5y1vyUk5eRqk,2082
172
+ kash/shell/shell_main.py,sha256=pR2a0Y0kXwXJBa6X7FayiM4SGtSs7fclDADUjMI3YEU,2092
165
173
  kash/shell/version.py,sha256=FRGs_jmzk6QiRPZfZv36SPzeyJCsVWZ_E2CKRkExazw,835
166
- kash/shell/clideps/api_keys.py,sha256=1WFqCrRE-HNP4glBdf57GmfBmXi4-lEsK4cNfE9NCtQ,3008
167
- kash/shell/clideps/dotenv_setup.py,sha256=RCGqQnr-53sSjysA2Sn684sk6KeHhgq2XqRlhaB0YYE,3730
168
- kash/shell/clideps/dotenv_utils.py,sha256=rwYxYJBPtMpN_OJrb8so1pN3LGnIbL_qDZrKS2iiSNc,3100
169
- kash/shell/clideps/pkg_deps.py,sha256=rvGs8oDoeUFCXvnIJ9ZNfgUrK92W2lQod5iCSvV7Dy4,7010
170
- kash/shell/clideps/platforms.py,sha256=TA2Ji-QQNtsaGJ5owZPJxfFE82LfaaHfwaBRPjlT1Q8,175
171
- kash/shell/clideps/terminal_features.py,sha256=bGrjaNb1NoWJApAL9vYcQs8IXn6MyzY8yyIG0wkQOlg,1692
172
- kash/shell/completions/completion_scoring.py,sha256=MAWqcDJKDeWk1LzBIex-1MaG7G4QoRsXflJBlM0JgAQ,9053
174
+ kash/shell/completions/completion_scoring.py,sha256=-svesm2cR1AA86jYcxlynXCBZON26eUJce93FlL2nQo,10209
173
175
  kash/shell/completions/completion_types.py,sha256=FocRXd6Df3Df0nL2Y1GevMx3FsljJwbQdVgWsIngpaQ,4793
174
176
  kash/shell/completions/shell_completions.py,sha256=yHCFs-XRNjReuEsmhEUi-iTE2MoZrUa3RDSKhVe5EfQ,8846
175
177
  kash/shell/file_icons/color_for_format.py,sha256=bFuE1lwiyUkgWB3Gk3jrch-9EIQz9thILQiX_a5dGb8,2034
@@ -181,50 +183,46 @@ kash/shell/input/param_inputs.py,sha256=FiGClMtMe0pv0y_45qJ9PKF61vn8SOPiNeh5yvH0
181
183
  kash/shell/input/shell_confirm.py,sha256=A17HTxx_DPnis2503Q_LOEW8P9yIWvaj1zHVz4LSz_Q,1070
182
184
  kash/shell/output/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
183
185
  kash/shell/output/kerm_code_utils.py,sha256=92A4AV-IFKKZMWLNZnd_zksNFMBgE_VNXySyn0Kn6Zk,1673
184
- kash/shell/output/kerm_codes.py,sha256=9RDvl03sYnR4mQ9suzO2OWeAiNhlOU8pXb8Qj12flwU,18878
186
+ kash/shell/output/kerm_codes.py,sha256=KLVdTM_dL_NeYmGbllzsQoW4IHXJjEsgqqIp1s7P1yI,18877
185
187
  kash/shell/output/kmarkdown.py,sha256=RRB5b0Ip0KZ71vnJKFfvxerYkeDFTCVTlHqHfmMy80Y,3675
186
- kash/shell/output/shell_formatting.py,sha256=wPAP3maoIUB5kWGysMdedAEd5dWzfWZB1749SubRloU,2971
188
+ kash/shell/output/shell_formatting.py,sha256=oxmAeJ2j0ANYSUsL15CUv--KcGlQ6Wa_rywXSDlsZM4,3331
187
189
  kash/shell/output/shell_output.py,sha256=-Y0BUh4DOlhyVdawBXvUa6UUYkv38iaKAay-57yBb7Y,11067
188
190
  kash/shell/ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
189
191
  kash/shell/ui/shell_results.py,sha256=vO_9UUnI_cr1ZJqCSFgeVwGFy7JLsrEpIAobKvTdkmo,4109
190
192
  kash/shell/ui/shell_syntax.py,sha256=1fuDqcCV16AAWwWS4w4iT-tlSnl-Ywdrf68Ge8XIfmQ,751
191
193
  kash/shell/utils/argparse_utils.py,sha256=UD2NZXyOlziWf-fPtGCmcmHNmFbNTcFX1UDtx67bJeE,649
192
- kash/shell/utils/exception_printing.py,sha256=8XxY22cM0dZeyNW0B8mesiS3LIK8w0Y-AeiLqq2r_PA,1570
193
- kash/shell/utils/native_utils.py,sha256=4PLTRrFxzdFlUjqfD8lKjL07wIcP2Zi2yTQt1I-9U8U,8870
194
- kash/shell/utils/osc_utils.py,sha256=pa1v4SRRWw7EZVZ-cQDjhxaeXpd5N-mr2MQQ1UdYLSQ,2768
194
+ kash/shell/utils/exception_printing.py,sha256=jkSbEZLQmMjLPMRIBolZSkrACYMHJJ_lh6yZQ7Gv-9g,1898
195
+ kash/shell/utils/native_utils.py,sha256=FtIjjB1sOgNifTx1u7nKSAwg9A8wc9-fkACw2_xWnNg,9153
195
196
  kash/shell/utils/shell_function_wrapper.py,sha256=8ogOb3Crl06KovlxMs0mOyB7uKzoz2ru_hUSVzxr83c,7439
196
- kash/shell/utils/terminal_images.py,sha256=h1JPwfI7XMwPu1HMDolK6zCETt-lYvt_hKDBsZMvKxU,4190
197
- kash/text_handling/custom_sliding_transforms.py,sha256=5LO-tDdlW5xE9sFPVyUfbihdp1Xxf8UuRGjpj3_jYpY,9665
198
- kash/text_handling/doc_normalization.py,sha256=Fh5T6ESmN2NsHd76tyjYidTvS1DLvG1-18-SMdcqkSc,2427
199
- kash/text_handling/markdown_util.py,sha256=4E4fkOgw0YTNt1IToS1mb-dvtmAKQjIoWpnMPD60Pl4,4494
197
+ kash/text_handling/custom_sliding_transforms.py,sha256=stbvN8McdHqC8oOs7QYK0J-Rh3kBLxxxbw7kjlOLKfM,9764
198
+ kash/text_handling/doc_normalization.py,sha256=ghB5m8X1jrV350WsdcXt9-4jFHx1Jq-IuF8F4B1P8Ok,2538
199
+ kash/text_handling/markdown_render.py,sha256=ij_OL7Te6IQbf8mOQZReN_RpPU84TzplqmLzxVHY-mk,3656
200
+ kash/text_handling/markdown_utils.py,sha256=I011g0K6bWy9Sh3mttJFiMCokGtvCmqsBi9XP0WOaLE,6250
200
201
  kash/text_handling/unified_diffs.py,sha256=AS5el-uPkXwpRA9bD46dyMo-YBDXb7zRF_MH3c47shA,4335
201
202
  kash/utils/__init__.py,sha256=4Jl_AtgRADdGORimWhYZwbSfQSpQ6SiexNIZzmbcngI,111
202
- kash/utils/errors.py,sha256=IQqh2Xq2XFatjMROJ43cwnWaxMKeOw2RTwGWSGWVcug,3705
203
+ kash/utils/errors.py,sha256=tTosrR8Z2bJGoBDxBbmEJ4GPQhS6_P6ENeDUNdLDyRg,3815
203
204
  kash/utils/common/__init__.py,sha256=ggeWw1xmbl1mgCQD3c4CNN2h5WXFCsN2wXlCWurEUEI,161
204
- kash/utils/common/atomic_var.py,sha256=AgXJJPQq2ZzgLG_At9L0X4JGQ0U3fMjNgSjxjc8x25c,4912
205
205
  kash/utils/common/format_utils.py,sha256=IPMKhx-S_SyqiN1cwUKFLJhpt1hT9P4cKZYrfKd1mYk,2431
206
206
  kash/utils/common/function_inspect.py,sha256=kZfsRbVL4FIZniyAUy_U5HJ3G80_U0xns8jEM9p8dzI,6540
207
- kash/utils/common/import_utils.py,sha256=ErK7OqpymdVpsapE4zrbChoLG3zsMFRkr1aksfXBhwQ,3075
207
+ kash/utils/common/import_utils.py,sha256=FUsasP-PgxOtRIutm3SnCGH_MBPK6pxUb-oc6dXT0aA,3428
208
208
  kash/utils/common/lazyobject.py,sha256=9dmOfSheblOXgo2RRakMwgfPIKdTgtyrlm6dCKAze04,5157
209
209
  kash/utils/common/obj_replace.py,sha256=AuiXptUOnuDNcWDgAJ3jEHkLh89XIqCP_SOkgaVyFIQ,2075
210
210
  kash/utils/common/parse_key_vals.py,sha256=yZRZIa5GD9SlnBSn2YNZm8PRVKoSJMY8DCmdGujQj_I,2418
211
211
  kash/utils/common/parse_shell_args.py,sha256=UZXTZDbV5m5Jy39jdAQ6W8uilr1TNa0__RqnE8UmQ_M,10604
212
212
  kash/utils/common/stack_traces.py,sha256=a2NwlK_0xxnjMCDC4LrQu7ueFylF-OImFG3bAAHpPwY,1392
213
- kash/utils/common/string_replace.py,sha256=KX1IftQPYfIm_4CqpMeS8uRrRiSwx9LfyIajjw3Qfo0,2981
214
- kash/utils/common/string_template.py,sha256=PmmkcUpSxM2JzAzzbvrs6MEOlolD_-Qkuq3VeLPwo4Y,3758
215
213
  kash/utils/common/task_stack.py,sha256=C8tJ4liA9__04EBf75o16FhaBWyyHqSdYKFcZRPOXn8,4800
216
- kash/utils/common/type_utils.py,sha256=B4eUglfrxPd9Kx0r0n4P_Tz1RfCd7X6v6Vd5EehMKz4,4712
214
+ kash/utils/common/type_utils.py,sha256=SJirXhPilQom_-OKkFToDLm_82ZwpjcNjRy8U1HaQ0Q,3829
217
215
  kash/utils/common/uniquifier.py,sha256=75OY4KIVF8u1eoO0FCPbEGTyVpPOtM-0ctoG_s_jahM,3082
218
- kash/utils/common/url.py,sha256=UtonF8E_W5OVWvZUP2YPmf50P7a-g9O_wY8YgadhYKE,4722
216
+ kash/utils/common/url.py,sha256=hEDC0ImO3DLvaPRflcmiUZ1wK_Ilsm6_9fLaG23sUfo,6515
219
217
  kash/utils/file_formats/chat_format.py,sha256=Onby7Zany1UQSUo_JzLs6MIfmoXViZeOAacRTMVe92M,11818
220
218
  kash/utils/file_utils/__init__.py,sha256=loL_iW0oOZs0mJ5GelBPptBcqzYKSWdsGcHrpRyxitQ,43
221
- kash/utils/file_utils/dir_size.py,sha256=aHtDPv2paU9KNOAr71QNewcrSkMkXJhEQBzkLYQ6rRo,1241
222
- kash/utils/file_utils/file_ext.py,sha256=9yKseuv1ll9AzUOwrvyPHcqnmRmwrhDzV8AtPoARpNI,1785
223
- kash/utils/file_utils/file_formats.py,sha256=ArNQe-jomXP2ZfWFzBxHv5yuppVzZGiyz1HuQGQ0uJU,4152
224
- kash/utils/file_utils/file_formats_model.py,sha256=LRicHyhel9ADvEyg5c6YFregEEzEkRnS_qWO8dV07vk,12693
219
+ kash/utils/file_utils/dir_info.py,sha256=HamMr58k_DanTLifj7A2JDxTGWXEZZx2pQuE6Hjcm8g,1856
220
+ kash/utils/file_utils/file_ext.py,sha256=HqUnCojgEuA4JSJwIK5ILPJU4TS4cXYNJmTNwC2tiwA,1783
221
+ kash/utils/file_utils/file_formats.py,sha256=tmrmqM5YTxfvlpvqmeOVz0yVRuPxxIAkVZf1-D0fp5Y,4902
222
+ kash/utils/file_utils/file_formats_model.py,sha256=9Vp9vP7ECsnQIcJOpqYZymhcyw7vREvPrP6ovKpuLp0,13930
225
223
  kash/utils/file_utils/file_sort_filter.py,sha256=-hjNV0AvDTU64zTag9vOlZ7Bg5y04I8Bn61J43si7hw,7003
226
224
  kash/utils/file_utils/file_walk.py,sha256=cpwVDPuaVm95_ZwFJiAdIuZAGhASI3gJ3ZUsCGP75b8,5527
227
- kash/utils/file_utils/filename_parsing.py,sha256=CXuAVicCgI_s00N-zqoIux17mXuunjubL5LZPtw9H28,3171
225
+ kash/utils/file_utils/filename_parsing.py,sha256=sxrZGOv1d4YOCRRtLlpkpYdB-7fIQJqIzUDGH2_S9EA,3350
228
226
  kash/utils/file_utils/ignore_files.py,sha256=QJ0SFeGdxSCaf4v45qQE_BMsMT5nOgomma0TuJRibp8,3546
229
227
  kash/utils/file_utils/mtime_cache.py,sha256=1QvAPdBSvKZL3j2cxm4lgZYTik4QdeIIC8Tz_pcOoAU,3360
230
228
  kash/utils/file_utils/path_utils.py,sha256=x0__A1-5Cjsit_RZr-wnNNQEzgVJ93Es5zSdJk7Ycz0,1069
@@ -237,45 +235,47 @@ kash/utils/rich_custom/rich_char_transform.py,sha256=3M89tViKM0y31VHsDoHi5eHFWlv
237
235
  kash/utils/rich_custom/rich_indent.py,sha256=nz72yNpUuYjOsaPNVmxM81oEQm-GKEfQkNsuWmv16G0,2286
238
236
  kash/utils/rich_custom/rich_markdown_fork.py,sha256=M_JRaSAyHrSg-wuLv9C9P7SkehSim3lwkqQPuMIFkVw,26551
239
237
  kash/web_content/canon_url.py,sha256=Zv2q7xQdIHBFkxxwyJn3_ME-qqMFRi_fKxE_IgV2Z50,742
240
- kash/web_content/dir_store.py,sha256=k7_BQyqxApfayww8qtNICvPc3v-bsq89baDKOkdTm1c,3497
241
- kash/web_content/file_cache_utils.py,sha256=_6qKAzN9OGFEphVCvQfZvfb8m_Pxt7qEsTar1gncGAM,4055
242
- kash/web_content/local_file_cache.py,sha256=GnjxFxRl4nusx1rw9Pr3iMJRjUUp0n6rmhqBEEbMwLM,8374
243
- kash/web_content/web_extract.py,sha256=PviDL49S-up_5tR1mDRdaEn-Z7C5I6wb6fuJh8CwpzE,2054
238
+ kash/web_content/dir_store.py,sha256=BJc-s-RL5CC-GwhFTC_lhLXSMWluPPnLVmVBx-66DiM,3425
239
+ kash/web_content/file_cache_utils.py,sha256=VZfN6AD_yQT4Q-G3w5QRoCSFeynq0BSOUxcRmltQa0c,5070
240
+ kash/web_content/file_processing.py,sha256=cQC-MnJMM5qG9-y0S4yobkmRi6A75qhHjV6xTwbtYDY,1904
241
+ kash/web_content/local_file_cache.py,sha256=pkGrFF32idDjY0IL0NkzBKWKvVS_tzy0yy3c0mOdcZA,8431
242
+ kash/web_content/web_extract.py,sha256=TjfVyVN7bAtKjGRpgeuV-Mr3VBAZuJE0hZ63rSlJ1gU,2296
244
243
  kash/web_content/web_extract_justext.py,sha256=74HLJBKDGKatwxyRDX6za70bZG9LrVmtj9jLX7UJzg4,2540
245
244
  kash/web_content/web_extract_readabilipy.py,sha256=yxwO-bVtRGepOobqa3AWSVe7WYCOBvWJV9Sktp60_UI,763
246
- kash/web_content/web_fetch.py,sha256=3dBAxRhi8HI4vmkQKRJDGFPCAiPadMbLHYI1FjwiWzs,3374
245
+ kash/web_content/web_fetch.py,sha256=dy3p-jrZY2szSgMUgLYWzEbMPsuFopPWKS0C8WIYgMM,3737
247
246
  kash/web_content/web_page_model.py,sha256=g9GUJpPJOd3-3mwajVodA3dcapDg1CMHxnPczXKEWUk,657
248
247
  kash/web_gen/__init__.py,sha256=mAa0ZNUbazETGHlM8OwxBC35LFvWDUvg15IpbZ-_TU4,121
249
- kash/web_gen/tabbed_webpage.py,sha256=DAaEIsoxuhtfPTZLZRRKGnHLJzic2IqJnE0rztmYEPk,4387
248
+ kash/web_gen/tabbed_webpage.py,sha256=M1ohHmpjWpF-FXSo3vYcXQR9jhK77b6RPvx96vJ_AFg,4511
250
249
  kash/web_gen/template_render.py,sha256=r5oS7RarPnGfZqS5G-pHnNin6SZRVactRO-c-QX6fcM,763
251
- kash/web_gen/templates/base_styles.css.jinja,sha256=UfGFbGPFlByYbKAWwRX7Pb-44y1kRogE7woE1xynOi4,3828
252
- kash/web_gen/templates/base_webpage.html.jinja,sha256=yK63pU6wRZDRTKG0SaXgGA8-2x88tGi2qy0YmHqEEr8,5137
253
- kash/web_gen/templates/content_styles.css.jinja,sha256=kOiZwtOCZ_6qf78nxWRm3jKGjg4H_TFBmI45ryhgTKc,3577
250
+ kash/web_gen/templates/base_styles.css.jinja,sha256=mBBV54STFOghEO3lYsFbJc9qgW4b_ta-tzhIF3HcTv8,5967
251
+ kash/web_gen/templates/base_webpage.html.jinja,sha256=OiZzV1aiaCDMBOYo3_dZunX6FyJmoAFQCMboW_ohphA,7044
252
+ kash/web_gen/templates/content_styles.css.jinja,sha256=3qcIwIt3DipCDJa9z6oIM_BMxmwoT7E_loTK0F3L9Vo,3629
254
253
  kash/web_gen/templates/explain_view.html.jinja,sha256=DNw5Iw5SrhIUFRGB4qNvfcKXsBHVbEJVURGdhvyC75Q,949
255
- kash/web_gen/templates/item_view.html.jinja,sha256=gnDc8a-qrFKkLUg3b497pdTg5hmnvOcHWpd5xtES7J0,6526
256
- kash/web_gen/templates/tabbed_webpage.html.jinja,sha256=zsUjtUJsMNyTCaKbC6rDwgaIFkygo8lGDlOG1uM5aTI,1581
257
- kash/workspaces/__init__.py,sha256=4sxy8PDcyJKM1SeWuz_tBF1QBsBMKG_5UT93wWhpjgc,269
254
+ kash/web_gen/templates/item_view.html.jinja,sha256=YoTPeHcDwFg2ST3E_TBzzf2OfuIpxlvItdf0M1UrwL0,6551
255
+ kash/web_gen/templates/tabbed_webpage.html.jinja,sha256=P_7I0gvgIHbyt1er13IcN55k0IKoPrkc-d8d-o0KdoI,1539
256
+ kash/workspaces/__init__.py,sha256=prLkBWLn7QkyAjG-bV8Z5ORJ5o0qSiKmRoP63jf0heY,494
258
257
  kash/workspaces/param_state.py,sha256=vT_eGWqg2SRviIM5jqEAauznX2B5Xt2nHHu2oRxTcIU,746
259
- kash/workspaces/selections.py,sha256=7HjHrRX5ld3PpnVDK6SCe-X4qfLecTjH5QX79xUIIR0,11506
260
- kash/workspaces/source_items.py,sha256=OQ45SMBiweS7KWJjvHiyiHBlrmWL3qCKvpVXshFxs-8,2800
258
+ kash/workspaces/selections.py,sha256=bles1G_XueDIP9-kjuTmb1BfI1KK9mBTuHZ2GxJLrEM,12003
259
+ kash/workspaces/source_items.py,sha256=Pwnw3OhjR2IJEMEeHf6hpKloj-ellM5vsY7LgkGevRY,2861
261
260
  kash/workspaces/workspace_importing.py,sha256=9LTzPdEFZ8BaliWplPHc87YePL8tJpjtMsICjDQwwD8,1933
262
- kash/workspaces/workspace_output.py,sha256=9XLdACVwrDSdzbeZkk0-jxNMbVyQzvGVPU8jn0Qd7Sk,5362
261
+ kash/workspaces/workspace_output.py,sha256=dEtXBCdGufupiG2hzB1xZQpS3E-vbVfqHlpRfPWTBRE,5692
263
262
  kash/workspaces/workspace_registry.py,sha256=SQt2DZgBEu95Zj9fpy67XdJPgJyKFDCU2laSuiZswNo,2200
264
- kash/workspaces/workspaces.py,sha256=-4-k6UCuuRxzqPdtHNyfS_ki9YVrDjE-eVPB-Lv4Pck,8563
265
- kash/xonsh_custom/command_nl_utils.py,sha256=FGydvISgJEsWpHXY6CyRjm52tbycSjPd0BfzAkCVANY,2276
266
- kash/xonsh_custom/custom_shell.py,sha256=QMg0jYidiU8LrNdLp1KNDfTXAxuS0034jeFHC3fksVA,17658
267
- kash/xonsh_custom/customize_prompt.py,sha256=EOOuNB-q1UstdVR3RMLkeAi2Zx7y6xRHqUZ2fww_nqQ,6341
268
- kash/xonsh_custom/load_into_xonsh.py,sha256=gWYtp4LDzDPihss2h2dX_7GSZ6xGtmTqpqCE1Qz7ZjE,3486
269
- kash/xonsh_custom/shell_load_commands.py,sha256=3CBpMQjfaIhqi-FwIOJiXWl5RfOhitj5ldCroZqJKc0,4709
263
+ kash/workspaces/workspaces.py,sha256=Z0V_2czs7C_8EFeqlKzxn00CZ-V03_EUKQBDCCI4q5s,8356
264
+ kash/xonsh_custom/command_nl_utils.py,sha256=6Xcx98HXL5HywziHi0XskwFx6kfvz7oCmMX-siJib1A,3392
265
+ kash/xonsh_custom/custom_shell.py,sha256=jydWwHR0-RslioaHHY1sHnM6H6fG3cwOw1XO__sG_b0,19026
266
+ kash/xonsh_custom/customize_prompt.py,sha256=u-jRY-ftXYflBkbJVetEg6GYelPUvqZEpjrPRUTfy8w,6896
267
+ kash/xonsh_custom/load_into_xonsh.py,sha256=D7x6mgcz5XPho39GvbGO2MK81KpeCSNJNGvsajyKx-E,3620
268
+ kash/xonsh_custom/shell_load_commands.py,sha256=bndmVEecIhuzQBI3OUDpH4ac7DXGkAMUVqXXcbrmEqI,4719
270
269
  kash/xonsh_custom/shell_which.py,sha256=zRaLhFVg9HEDFXo4dqWKwX07YpfPh25kopeG_fgctOE,1926
271
- kash/xonsh_custom/xonsh_completers.py,sha256=29tRSqIMDzZblbRr-qe7JMbwXauhMiEgNI8YrcpS7uw,26153
270
+ kash/xonsh_custom/xonsh_completers.py,sha256=jxsc279DwZUHm0-iCnCtvbzqJBtq8zu0FUls5J1BA8o,17959
272
271
  kash/xonsh_custom/xonsh_env.py,sha256=KEob1vxlT4gBndYrLPP3deQtANA5Sx6PPE9Q08r4ua8,871
273
- kash/xonsh_custom/xonsh_modern_tools.py,sha256=9HXPTsYp8mN4V9Q9CxFCaB9kKZGxC5BQqyIpJkrO3ME,1471
272
+ kash/xonsh_custom/xonsh_keybindings.py,sha256=pSnYoZdJmyvC32U1JeqSADV-wReXEHC_LeYrw3g3NAc,9284
273
+ kash/xonsh_custom/xonsh_modern_tools.py,sha256=mj_b34LZXfE8MJe9EpDmp5JZ0tDM1biYNPAS8jdcURo,1467
274
274
  kash/xonsh_custom/xonsh_ranking_completer.py,sha256=ZRGiAfoEgqgnlq2-ReUVEaX5oOgW1DQ9WxIv2OJLuTo,5620
275
275
  kash/xontrib/fnm.py,sha256=V2tsOdmIDgbFbZSfMLpsvDIwwJJqiYnOkOySD1cXNXw,3700
276
- kash/xontrib/kash_extension.py,sha256=hLIrFgdPaa4yHXIjHT5xqLmCFrqY68ei_H_J2VhbG6A,1927
277
- kash_shell-0.3.8.dist-info/METADATA,sha256=LWUgIfNnRp18AclzkQ0h_c7SR4w5xOFvvPH3mG-q70o,30636
278
- kash_shell-0.3.8.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
279
- kash_shell-0.3.8.dist-info/entry_points.txt,sha256=fv2pu5RUuPVyOVkNhMkkdz4ijroBs088TYbDaIQv06M,85
280
- kash_shell-0.3.8.dist-info/licenses/LICENSE,sha256=rCh2PsfYeiU6FK_0wb58kHGm_Fj5c43fdcHEexiVzIo,34562
281
- kash_shell-0.3.8.dist-info/RECORD,,
276
+ kash/xontrib/kash_extension.py,sha256=JRRJC3cZSMOl4sSWEdKAQ_dVRMubWaOltKr8G0dWt6Y,1876
277
+ kash_shell-0.3.10.dist-info/METADATA,sha256=lsmYCD3ihVRJao2oHGiNMR_qYHJG_ayQIl3yBIX84OQ,31260
278
+ kash_shell-0.3.10.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
279
+ kash_shell-0.3.10.dist-info/entry_points.txt,sha256=SQraWDAo8SqYpthLXThei0mf_hGGyhYBUO-Er_0HcwI,85
280
+ kash_shell-0.3.10.dist-info/licenses/LICENSE,sha256=rCh2PsfYeiU6FK_0wb58kHGm_Fj5c43fdcHEexiVzIo,34562
281
+ kash_shell-0.3.10.dist-info/RECORD,,
@@ -1,3 +1,3 @@
1
1
  [console_scripts]
2
2
  kash = kash.shell.shell_main:main
3
- kash_mcp = kash.mcp.mcp_cli:main
3
+ kash-mcp = kash.mcp.mcp_cli:main
@@ -1,23 +0,0 @@
1
- from kash.text_handling.markdown_util import extract_bullet_points
2
- from kash.utils.lang_utils.capitalization import capitalize_cms
3
-
4
-
5
- def canonicalize_concept(concept: str) -> str:
6
- """
7
- Convert a concept string (general name, person, etc.) to a canonical form.
8
- Drop any extraneous Markdown bullets.
9
- """
10
- return capitalize_cms(concept.strip("-* "))
11
-
12
-
13
- def normalize_concepts(concepts: list[str]) -> list[str]:
14
- return sorted(set(canonicalize_concept(concept) for concept in concepts))
15
-
16
-
17
- def concepts_from_bullet_points(markdown_text: str) -> list[str]:
18
- """
19
- Parse, normalize, capitalize, sort, and then remove exact duplicates from a Markdown
20
- list of concepts as bullet points.
21
- """
22
- concepts = extract_bullet_points(markdown_text)
23
- return normalize_concepts(concepts)
@@ -1,112 +0,0 @@
1
- from typing import cast
2
-
3
- import litellm
4
- import pandas as pd
5
- from funlog import log_calls, tally_calls
6
- from litellm import embedding
7
- from litellm.types.utils import EmbeddingResponse
8
-
9
- from kash.concepts.cosine import cosine
10
- from kash.concepts.embeddings import Embeddings
11
- from kash.config.logger import get_logger
12
- from kash.llm_utils.llms import DEFAULT_EMBEDDING_MODEL, EmbeddingModel
13
- from kash.utils.errors import ApiResultError
14
-
15
- log = get_logger(__name__)
16
-
17
-
18
- def sort_by_length(values: list[str]) -> list[str]:
19
- return sorted(values, key=lambda x: (len(x), x))
20
-
21
-
22
- def cosine_relatedness(x, y):
23
- return 1 - cosine(x, y)
24
-
25
-
26
- @log_calls(level="info", show_return_value=False)
27
- def embed_query(model: EmbeddingModel, query: str) -> EmbeddingResponse:
28
- try:
29
- response: EmbeddingResponse = cast(
30
- EmbeddingResponse, embedding(model=model.litellm_name, input=[query])
31
- )
32
- except litellm.exceptions.APIError as e:
33
- log.info("API error embedding query: %s", e)
34
- raise ApiResultError(str(e))
35
- if not response.data:
36
- log.info("API error embedding query, got: %s", response)
37
- raise ApiResultError("No embedding response data")
38
- return response
39
-
40
-
41
- @log_calls(level="info", show_return_value=False)
42
- def rank_by_relatedness(
43
- query: str,
44
- embeddings: Embeddings,
45
- relatedness_fn=cosine_relatedness,
46
- model=DEFAULT_EMBEDDING_MODEL,
47
- top_n: int = -1,
48
- ) -> list[tuple[str, str, float]]:
49
- """
50
- Returns a list of strings and relatednesses, sorted from most related to least.
51
- """
52
- response = embed_query(model, query)
53
-
54
- query_embedding = response.data[0]["embedding"]
55
-
56
- scored_strings = [
57
- (key, text, relatedness_fn(query_embedding, emb))
58
- for key, text, emb in embeddings.as_iterable()
59
- ]
60
- scored_strings.sort(key=lambda x: x[2], reverse=True)
61
-
62
- return scored_strings[:top_n]
63
-
64
-
65
- @tally_calls(level="warning", min_total_runtime=5, if_slower_than=10)
66
- def relate_texts_by_embedding(
67
- embeddings: Embeddings, relatedness_fn=cosine_relatedness
68
- ) -> pd.DataFrame:
69
- log.message("Computing relatedness matrix of %d text embeddings…", len(embeddings.data))
70
-
71
- keys = [key for key, _, _ in embeddings.as_iterable()]
72
- relatedness_matrix = pd.DataFrame(index=keys, columns=keys) # pyright: ignore
73
-
74
- for i, (key1, _, emb1) in enumerate(embeddings.as_iterable()):
75
- for j, (key2, _, emb2) in enumerate(embeddings.as_iterable()):
76
- if i <= j:
77
- score = relatedness_fn(emb1, emb2)
78
- relatedness_matrix.at[key1, key2] = score
79
- relatedness_matrix.at[key2, key1] = score
80
-
81
- # Fill diagonal (self-relatedness).
82
- for key in keys:
83
- relatedness_matrix.at[key, key] = 1.0
84
-
85
- return relatedness_matrix
86
-
87
-
88
- def find_related_pairs(
89
- relatedness_matrix: pd.DataFrame, threshold: float = 0.9
90
- ) -> list[tuple[str, str, float]]:
91
- log.message(
92
- "Finding near duplicates among %s items (threshold %s)",
93
- relatedness_matrix.shape[0],
94
- threshold,
95
- )
96
-
97
- pairs: list[tuple[str, str, float]] = []
98
- keys = relatedness_matrix.index.tolist()
99
-
100
- for i, key1 in enumerate(keys):
101
- for j, key2 in enumerate(keys):
102
- if i < j:
103
- relatedness = relatedness_matrix.at[key1, key2]
104
- if relatedness >= threshold:
105
- # Put shortest one first.
106
- [short_key, long_key] = sort_by_length([key1, key2])
107
- pairs.append((short_key, long_key, relatedness))
108
-
109
- # Sort with highest relatedness first.
110
- pairs.sort(key=lambda x: x[2], reverse=True)
111
-
112
- return pairs