kash-shell 0.3.14__py3-none-any.whl → 0.3.16__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.
@@ -121,13 +121,17 @@ h1 {
121
121
 
122
122
  h2 {
123
123
  font-size: 1.4rem;
124
- margin-top: 1.5rem;
124
+ margin-top: 2rem;
125
125
  margin-bottom: 1rem;
126
126
  }
127
127
 
128
+ h1 + h2 {
129
+ margin-top: 2rem;
130
+ }
131
+
128
132
  h3 {
129
133
  font-size: 1.03rem;
130
- margin-top: 1.5rem;
134
+ margin-top: 1.6rem;
131
135
  margin-bottom: 0.5rem;
132
136
  }
133
137
 
@@ -172,11 +176,10 @@ ol > li {
172
176
  }
173
177
 
174
178
  blockquote {
175
- border-left: 4px solid var(--color-primary);
179
+ border-left: 2px solid var(--color-primary);
176
180
  padding-left: 1rem;
177
181
  margin-left: 0;
178
182
  margin-right: 0;
179
- color: var(--color-secondary);
180
183
  }
181
184
 
182
185
  /* Inline code styling */
@@ -184,6 +187,7 @@ code {
184
187
  font-family: var(--font-mono);
185
188
  font-size: var(--font-size-mono);
186
189
  letter-spacing: -0.025em;
190
+ transition: color 0.4s ease-in-out;
187
191
  }
188
192
 
189
193
  /* Code blocks (pre + code) */
@@ -197,6 +201,7 @@ pre {
197
201
  padding: 0.2rem 0.2rem 0.1rem 0.2rem;
198
202
  overflow-x: auto; /* Enable horizontal scrolling */
199
203
  position: relative; /* Create new stacking context */
204
+ transition: background-color 0.4s ease-in-out, border-color 0.4s ease-in-out;
200
205
  }
201
206
 
202
207
  /* Reset code styling when inside pre blocks */
@@ -205,6 +210,44 @@ pre > code {
205
210
  line-height: 1.5; /* Improve readability */
206
211
  }
207
212
 
213
+ /* Copy button for code blocks */
214
+ .code-copy-button {
215
+ position: absolute;
216
+ top: 0;
217
+ right: 0;
218
+ background: var(--color-bg-alt);
219
+ color: var(--color-hint);
220
+ border: none;
221
+ border-radius: 0.25rem;
222
+ padding: 0.25rem;
223
+ cursor: pointer;
224
+ font-size: 0.75rem;
225
+ z-index: 10;
226
+ transition: all 0.2s ease-in-out;
227
+ display: flex;
228
+ align-items: center;
229
+ justify-content: center;
230
+ width: 1.5rem;
231
+ height: 1.5rem;
232
+ opacity: 0.6;
233
+ }
234
+
235
+ .code-copy-button:hover {
236
+ background: var(--color-hover-bg);
237
+ color: var(--color-primary);
238
+ opacity: 1;
239
+ }
240
+
241
+ .code-copy-button.copied {
242
+ color: var(--color-success);
243
+ opacity: 1;
244
+ }
245
+
246
+ .code-copy-button svg {
247
+ width: 0.875rem;
248
+ height: 0.875rem;
249
+ }
250
+
208
251
  hr {
209
252
  border: none;
210
253
  height: 1.5rem;
@@ -340,7 +383,7 @@ tbody tr:nth-child(even) {
340
383
  left: 50%;
341
384
  transform: translateX(-50%);
342
385
  box-sizing: border-box;
343
- margin-bottom: 1rem;
386
+ margin: 2rem 0;
344
387
  background-color: var(--color-bg-solid);
345
388
  }
346
389
  {% endblock table_styles %}
@@ -5,10 +5,32 @@
5
5
  {% block meta %}
6
6
  <meta charset="UTF-8" />
7
7
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
8
+ <meta name="color-scheme" content="light dark">
8
9
  {% endblock meta %}
9
10
 
10
11
  {% block title %}<title>{{ title }}</title>{% endblock title %}
11
12
 
13
+ {% block dark_mode_script %}
14
+ <script>
15
+ // Set theme before body renders to prevent flash of unstyled content
16
+ function applyTheme(theme) {
17
+ document.documentElement.dataset.theme = theme;
18
+ localStorage.setItem('theme', theme);
19
+ }
20
+
21
+ // If theme toggle is enabled, respect stored preference or system preference.
22
+ // Otherwise default to light mode.
23
+ {% if enable_themes %}
24
+ const storedTheme = localStorage.getItem('theme');
25
+ const systemPrefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
26
+ const initialTheme = storedTheme || (systemPrefersDark ? 'dark' : 'light');
27
+ {% else %}
28
+ const initialTheme = 'light';
29
+ {% endif %}
30
+ applyTheme(initialTheme);
31
+ </script>
32
+ {% endblock dark_mode_script %}
33
+
12
34
  {% block head_basic %}
13
35
  <link rel="preconnect" href="https://fonts.googleapis.com" />
14
36
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
@@ -35,6 +57,52 @@
35
57
  {% block head_extra %}{% endblock head_extra %}
36
58
 
37
59
  <style>
60
+
61
+ body {
62
+ background: var(--color-bg);
63
+ color: var(--color-text);
64
+ transition: background 0.4s ease-in-out, color 0.4s ease-in-out;
65
+ }
66
+
67
+ .theme-toggle {
68
+ position: fixed;
69
+ top: 1rem;
70
+ right: 1rem;
71
+ background: transparent;
72
+ color: var(--color-hint);
73
+ border: none;
74
+ padding: 0;
75
+ border-radius: 0.3rem;
76
+ cursor: pointer;
77
+ font-size: 1rem;
78
+ z-index: 100;
79
+ transition: all 0.2s ease-in-out;
80
+ display: flex;
81
+ align-items: center;
82
+ justify-content: center;
83
+ width: 2.5rem;
84
+ height: 2.5rem;
85
+ }
86
+
87
+ .theme-toggle:hover {
88
+ background: var(--color-hover-bg);
89
+ color: var(--color-primary);
90
+ }
91
+
92
+ [data-theme="dark"] .theme-toggle {
93
+ color: var(--color-primary-light);
94
+ }
95
+
96
+ [data-theme="dark"] .theme-toggle:hover {
97
+ color: var(--color-bright);
98
+ background: var(--color-hover-bg);
99
+ }
100
+
101
+ .theme-toggle svg {
102
+ width: 1rem;
103
+ height: 1rem;
104
+ }
105
+
38
106
  {% block font_faces %}
39
107
  /* https://fontsource.org/fonts/pt-serif/cdn */
40
108
  /* pt-serif-latin-400-normal */
@@ -108,6 +176,14 @@
108
176
  </head>
109
177
 
110
178
  <body>
179
+ {% block theme_toggle %}
180
+ {% if show_theme_toggle %}
181
+ <button class="theme-toggle" aria-label="toggle dark mode">
182
+ <i data-feather="moon"></i>
183
+ </button>
184
+ {% endif %}
185
+ {% endblock theme_toggle %}
186
+
111
187
  {% block body_header %}{% endblock body_header %}
112
188
 
113
189
  {% block main_content %}
@@ -119,6 +195,53 @@
119
195
  {% block scripts %}
120
196
  <script>
121
197
  document.addEventListener('DOMContentLoaded', () => {
198
+ // Add copy buttons to code blocks
199
+ document.querySelectorAll('pre').forEach(pre => {
200
+ // Skip if already has a copy button
201
+ if (pre.querySelector('.code-copy-button')) {
202
+ return;
203
+ }
204
+
205
+ const copyButton = document.createElement('button');
206
+ copyButton.className = 'code-copy-button';
207
+ copyButton.setAttribute('aria-label', 'Copy code');
208
+
209
+ const copyIcon = typeof feather !== 'undefined' ? feather.icons.copy.toSvg() : '<i data-feather="copy"></i>';
210
+ const checkIcon = typeof feather !== 'undefined' ? feather.icons.check.toSvg() : '<i data-feather="check"></i>';
211
+
212
+ copyButton.innerHTML = copyIcon;
213
+ copyButton.addEventListener('click', async () => {
214
+ const codeElement = pre.querySelector('code') || pre;
215
+ const textToCopy = (codeElement.textContent || codeElement.innerText).trim();
216
+
217
+ // Works on modern browsers.
218
+ navigator.clipboard.writeText(textToCopy).then(() => {
219
+ copyButton.innerHTML = checkIcon;
220
+ copyButton.classList.add('copied');
221
+
222
+ // Reset after 2 seconds
223
+ setTimeout(() => {
224
+ copyButton.innerHTML = copyIcon;
225
+ copyButton.classList.remove('copied');
226
+ }, 2000);
227
+ }).catch(err => {
228
+ console.error('Failed to copy text: ', err);
229
+ });
230
+ });
231
+
232
+ pre.appendChild(copyButton);
233
+ });
234
+
235
+ // Theme toggle (if present on page)
236
+ const themeToggleButton = document.querySelector('.theme-toggle');
237
+ if (themeToggleButton) {
238
+ themeToggleButton.addEventListener('click', () => {
239
+ const currentTheme = document.documentElement.dataset.theme;
240
+ const newTheme = currentTheme === 'dark' ? 'light' : 'dark';
241
+ applyTheme(newTheme);
242
+ });
243
+ }
244
+
122
245
  // Send messages to the parent window, in case we are in a viewport where that matters
123
246
  // (e.g. an iframe tooltip).
124
247
  // Request a resize of the parent viewport. This iframe size message format isn't
@@ -159,6 +282,11 @@
159
282
  }
160
283
  });
161
284
  });
285
+
286
+ // Initialize Feather icons once at the end, after all DOM manipulation.
287
+ if (typeof feather !== 'undefined') {
288
+ feather.replace();
289
+ }
162
290
  });
163
291
 
164
292
  // Double-click to expand (e.g. expand tooltip to popover).
@@ -10,7 +10,7 @@
10
10
  }
11
11
 
12
12
  .item-header {
13
- padding: 0.5rem 1rem 0rem 1rem;
13
+ padding: 0 1rem 0rem 1rem;
14
14
  border-bottom: 1px solid var(--color-border-hint);
15
15
  }
16
16
 
@@ -109,7 +109,7 @@ h1.item-title {
109
109
 
110
110
  .item-file-info {
111
111
  {# font-family: var(--font-sans); #}
112
- padding: 0.5rem 0;
112
+ padding: 0;
113
113
  {# font-size: var(--font-size-mono-small); #}
114
114
  word-break: break-word;
115
115
  }
@@ -118,6 +118,8 @@ h1.item-title {
118
118
  font-family: var(--font-sans);
119
119
  font-size: var(--font-size-small);
120
120
  letter-spacing: 0;
121
+ border: none;
122
+ background-color: transparent;
121
123
  }
122
124
 
123
125
  .item-url {
@@ -1,5 +1,29 @@
1
1
  {% extends "base_webpage.html.jinja" %}
2
2
 
3
+ {% block custom_styles %}
4
+ {{ super() }}
5
+ <style>
6
+ /* Override Tailwind's bg-white in dark mode */
7
+ [data-theme="dark"] .bg-white {
8
+ background-color: var(--color-bg-alt-solid) !important;
9
+ }
10
+ .long-text {
11
+ transition: background 0.4s ease-in-out, color 0.4s ease-in-out;
12
+ }
13
+
14
+ /* Ensure long-text containers respect theme */
15
+ [data-theme="dark"] .long-text {
16
+ background-color: var(--color-bg-alt-solid);
17
+ color: var(--color-text);
18
+ }
19
+
20
+ /* Adjust shadow for dark mode */
21
+ [data-theme="dark"] .long-text {
22
+ box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.3), 0 -2px 6px -1px rgba(0, 0, 0, 0.2);
23
+ }
24
+ </style>
25
+ {% endblock custom_styles %}
26
+
3
27
  <!-- simple_webpage begin main_content block -->
4
28
  {% block main_content %}
5
29
  <div class="long-text container max-w-3xl mx-auto bg-white py-4 px-6 md:px-16">
@@ -12,7 +12,6 @@ Can run from the custom kash shell (main.py) or from a regular xonsh shell.
12
12
  import kash.exec.command_registry
13
13
  import kash.xonsh_custom.load_into_xonsh
14
14
  import kash.xonsh_custom.xonsh_env
15
- from kash.config.logger import get_logger
16
15
 
17
16
 
18
17
  # We add action loading here directly in the xontrib so we expose `load` and
@@ -55,6 +54,8 @@ kash.xonsh_custom.xonsh_env.set_alias("load", load)
55
54
  try:
56
55
  kash.xonsh_custom.load_into_xonsh.load_into_xonsh()
57
56
  except Exception as e:
57
+ from kash.config.logger import get_logger
58
+
58
59
  log = get_logger(__name__)
59
- log.error("Could not initialize kash: %s", e)
60
+ log.error("Could not initialize kash: %s", e, exc_info=True)
60
61
  raise
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kash-shell
3
- Version: 0.3.14
3
+ Version: 0.3.16
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>
@@ -6,12 +6,12 @@ kash/actions/core/chat.py,sha256=yCannBFa0cSpR_in-XSSuMm1x2ZZQUCKmlqzhsUfpOo,269
6
6
  kash/actions/core/format_markdown_template.py,sha256=ZJbtyTSypPo2ewLiGRSyIpVf711vQMhI_-Ng-FgCs80,2991
7
7
  kash/actions/core/markdownify.py,sha256=KjdUeY4c9EhZ5geQrn22IoBv0P_p62q4zyyOYE0NRHM,1270
8
8
  kash/actions/core/readability.py,sha256=ljdB2rOpzfKU2FpEJ2UELIzcdOAWvdUjFsxoHRTE3xo,989
9
- kash/actions/core/render_as_html.py,sha256=bSyZdX9nZnP33QBdGSzWhInRREWXWayMG2oyiKn4rxw,1824
9
+ kash/actions/core/render_as_html.py,sha256=CIPGKCjUEVNsnXmpqHCUnjGwTfEfOyCXxlYFUN8mahY,1870
10
10
  kash/actions/core/show_webpage.py,sha256=Ggba9jkx9U-FZOcuL0lkS-SwtPNUyxVsGdeQrqwWs1s,887
11
11
  kash/actions/core/strip_html.py,sha256=FDLN_4CKB11q5cU4NixTf7PGrAq92AjQNbKAdvQDwCY,849
12
12
  kash/actions/core/summarize_as_bullets.py,sha256=Zwr8lNzL77pwpnW_289LQjNBijNDpTPANfFdOJA-PZ4,2070
13
13
  kash/actions/core/tabbed_webpage_config.py,sha256=rIbzEhBTmnkbSiRZC-Rj46T1J6c0jOztiKE9Usa4nsc,980
14
- kash/actions/core/tabbed_webpage_generate.py,sha256=_w_4LsgDqNnVvtX6Y4Txq56HAwEVMAY7RooWB29Okdk,954
14
+ kash/actions/core/tabbed_webpage_generate.py,sha256=oYx9fdgY8NndFekXsZbil0luGa2OFDi2e0s5l7Toh7E,992
15
15
  kash/actions/meta/write_instructions.py,sha256=zeKKX-Yi8jSyjvZ4Ii_4MNBRtM2MENuHyrD0Vxsaos8,1277
16
16
  kash/actions/meta/write_new_action.py,sha256=w7SJZ2FjzRbKwqKX9PeozUrh8cNJAumX7F80wW7dQts,6356
17
17
  kash/commands/__init__.py,sha256=MhdPSluWGE3XVQ7LSv2L8_aAxaey8CLjQBjGC9B4nRM,191
@@ -33,11 +33,11 @@ kash/commands/help/doc_commands.py,sha256=7lKR7mzue2N7pSkNqblpFJy892fS5N6jWVOHqe
33
33
  kash/commands/help/help_commands.py,sha256=eJTpIhXck123PAUq2k-D3Q6UL6IQ8atOVYurLi2GD0A,4229
34
34
  kash/commands/help/logo.py,sha256=W8SUach9FjoTqpHZwTGS582ry4ZluxbBp86ZCiAtDkY,3505
35
35
  kash/commands/help/welcome.py,sha256=F4QBgj3e1dM9Pf0H4TSzCrkVfXQVKUIl0b6Qmofbdo4,905
36
- kash/commands/workspace/selection_commands.py,sha256=yr0fFPlFIJUPHyFni1byXz8UDvYstIw4oRpOMa8iOBo,7428
37
- kash/commands/workspace/workspace_commands.py,sha256=smPNGmY8y7gcmh0hAFOf4GYYMuNAoqkf3kRMJamYcMQ,24768
36
+ kash/commands/workspace/selection_commands.py,sha256=nZzA-H7Pk8kqSJVRlX7j1m6cZX-e0X8isOryDU41vqU,8156
37
+ kash/commands/workspace/workspace_commands.py,sha256=ZJ3aPsnQ0FOkaA6stpV4YPEOQRCOKTazbMCIQkk9Cmk,25119
38
38
  kash/config/__init__.py,sha256=ytly9Typ1mWV4CXfV9G3CIPtPQ02u2rpZ304L3GlFro,148
39
39
  kash/config/capture_output.py,sha256=ud3uUVNuDicHj3mI_nBUBO-VmOrxtBdA3z-I3D1lSCU,2398
40
- kash/config/colors.py,sha256=6lqrB2RQYF2OLw-njfOqVHO9Bwiq7bW6K1ROCOAd1EM,9949
40
+ kash/config/colors.py,sha256=XrvSpEMJ345e0oCpsr-mASgjROvct9a3JyYkhkaP0Ww,12831
41
41
  kash/config/env_settings.py,sha256=uhCdfs9-TzJ15SzbuIQP1yIORaLUqYXCxh9qq_Z8cJc,996
42
42
  kash/config/init.py,sha256=aE4sZ6DggBmmoZEx9C5mQKrEbcDiswX--HF7pfCFKzc,526
43
43
  kash/config/lazy_imports.py,sha256=MCZXLnKvNyfHi0k7MU5rNwcdJtUF28naCixuogsAOAA,805
@@ -82,7 +82,7 @@ kash/embeddings/embeddings.py,sha256=v6RmrEHsx5PuE3fPrY15RK4fgW0K_VlNWDTjCVr11zY
82
82
  kash/embeddings/text_similarity.py,sha256=BOo9Vcs5oi2Zs5La56uTkPMHo65XSd4qz_yr6GTfUA4,1924
83
83
  kash/exec/__init__.py,sha256=rdSsKzTaXfSZmD5JvmUSSwmpfvl-moNv9PUgtE_WUpQ,1148
84
84
  kash/exec/action_decorators.py,sha256=VOSCnFiev2_DuFoSk0i_moejwM4wJ1j6QfsQd93uetI,16480
85
- kash/exec/action_exec.py,sha256=wndn9WsH9dGIzRjbiNCLfHHKZPlTzlFp-eogDvqkfbI,18500
85
+ kash/exec/action_exec.py,sha256=UHs-gKbu63d313MwfKsbVoRoTq7LbY8Vs0u_R4QZMh8,19025
86
86
  kash/exec/action_registry.py,sha256=numU9pH_W5RgIrYmfi0iYMYy_kLJl6vup8PMrhxAfdc,2627
87
87
  kash/exec/combiners.py,sha256=AJ6wgPUHsmwanObsUw64B83XzU26yuh5t4l7igLn82I,4291
88
88
  kash/exec/command_exec.py,sha256=zc-gWm7kyB5J5Kp8xhULQ9Jj9AL927KkDPXXk-Yr1Bw,1292
@@ -92,9 +92,9 @@ kash/exec/history.py,sha256=l2XwHGBR1UgTGSFPSBE9mltmxvjR_5qFFO6d-Z008nc,1208
92
92
  kash/exec/importing.py,sha256=xunmBapeUMNc6Zox7y6e_DZkidyWeouiFZpphajwSzc,1843
93
93
  kash/exec/llm_transforms.py,sha256=p_aLp70VoIgheW4v8uoweeuEVWj06AzQekvn_jM3B-g,4378
94
94
  kash/exec/precondition_checks.py,sha256=HymxL7qm4Yz8V76Um5pKdIRnQ2N-p9rpQQi1fI38bNA,2139
95
- kash/exec/precondition_registry.py,sha256=cmp0mUfLS42AbAByDhwGx8GWz9PuZNR7z5rPZW9WQE4,1244
96
- kash/exec/preconditions.py,sha256=kJXJQwqwsGBmzbrYy8s-soJeY8-gXx5ahbBPSqo7UvY,4965
97
- kash/exec/resolve_args.py,sha256=yGU6Jjzn5yyAN9pNZx8Qfc9oBrosFEdazIs5g9pjWTs,4410
95
+ kash/exec/precondition_registry.py,sha256=-vYWN2wduq-hau2aDShQ5tglTF-cHC1vaZqU-peir9A,1384
96
+ kash/exec/preconditions.py,sha256=6bJ76AVFo0TLoykrGBNB0rrpIDWD0umfb3F5sMcmoKo,5131
97
+ kash/exec/resolve_args.py,sha256=gu65epzVrwWHdHA-KwAwYssncJIB84oHOJeoXXrQ2mM,4428
98
98
  kash/exec/runtime_settings.py,sha256=aK6nGbZhKSIDVmV6AqV68hQkiaIGWnCiNzHtwwZ5V0w,3960
99
99
  kash/exec/shell_callable_action.py,sha256=x-Hs4EqpsZfKEcwhWkhc27HCIfoI91b-DrbG40BLxRY,4350
100
100
  kash/exec_model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -103,8 +103,8 @@ kash/exec_model/commands_model.py,sha256=iM8QhzA0tAas5OwF5liUfHtm45XIH1LcvCviuh3
103
103
  kash/exec_model/script_model.py,sha256=1VG3LhkTmlKzHOYouZ92ZpOSKSCcsz3-tHNcFMQF788,5031
104
104
  kash/exec_model/shell_model.py,sha256=LUhQivbpXlerM-DUzNY7BtctNBbn08Wto8CSSxQDxRU,568
105
105
  kash/file_storage/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
106
- kash/file_storage/file_store.py,sha256=sqhNFZtWDgaJbR8ah-yCYuaVbLKzs7XpAcYRfU9rtss,29425
107
- kash/file_storage/item_file_format.py,sha256=YAz7VqyfIoiSLQOoFdWsp-FI_2tTLXAPi8V8QXbo5ag,5475
106
+ kash/file_storage/file_store.py,sha256=7KUOtEKuwSyz8uP61I8hcgB5TC8yd9oSeU9wzt_dLo4,30093
107
+ kash/file_storage/item_file_format.py,sha256=_o2CjWstk_Z__qMr-Inct9wJm2VEUK0GZvF-fDZ8bcc,5377
108
108
  kash/file_storage/metadata_dirs.py,sha256=9AqO3S3SSY1dtvP2iLX--E4ui0VIzXttG8R040otfyg,3820
109
109
  kash/file_storage/persisted_yaml.py,sha256=4-4RkFqdlBUkTOwkdA4vRKUywEE9TaDo13OGaDUyU9M,1309
110
110
  kash/file_storage/store_cache_warmer.py,sha256=cQ_KwxkBPWT3lMmYOCTkXgo7CKaGINns2YzIH32ExSU,1013
@@ -136,7 +136,7 @@ kash/llm_utils/llms.py,sha256=Zz45v7qrmBNGnmyF-Mn5Q4F1dZGFT2xf_kmWGUMSUUw,3518
136
136
  kash/local_server/__init__.py,sha256=AyNpvCOJlQF6A4DnlYKRMbbfRNzdizEA-ytp-F2SLZU,162
137
137
  kash/local_server/local_server.py,sha256=EugjL30VM0pWdZDsiQxU-o6EdEa082qlGd_7RHvI5tk,5863
138
138
  kash/local_server/local_server_commands.py,sha256=ZMp1DpYgg-MJ0iqH0DHfhWKDpFqNRG_txkRdODIr9mU,1661
139
- kash/local_server/local_server_routes.py,sha256=SgYB_BQ8SRED_4Wtba6iwl_5y3Yjrn-5s9q3zEPsgC8,10533
139
+ kash/local_server/local_server_routes.py,sha256=JlIVsrbsU0yiwv7vAoD9BctqiBI0w6u8Ld3BYY4jmo8,10530
140
140
  kash/local_server/local_url_formatters.py,sha256=SqHjGMEufvm43n34SCa_8Asdwm7utx91Wwymj15TuSY,5327
141
141
  kash/local_server/port_tools.py,sha256=oFfOvO6keqS5GowTpVg2FTu5KqkPHBq-dWAEomUIgGo,2008
142
142
  kash/local_server/rich_html_template.py,sha256=O9CnkMYkWuMvKJkqD0P8jaZqfUe6hMP4LXFvcLpwN8Q,196
@@ -158,13 +158,13 @@ kash/media_base/transcription_format.py,sha256=rOVPTpwvW22c27BRwYF-Tc_xzqK_wOtUZ
158
158
  kash/media_base/transcription_whisper.py,sha256=GqvroW9kBAH4-gcbYkMgNCfs2MpMIgm1ip3NMWtJ0IE,1169
159
159
  kash/media_base/services/local_file_media.py,sha256=-A-tK6XP7XDCqXQIAoohesFZ3OIvpXWsDoktYBvBuNA,5399
160
160
  kash/model/__init__.py,sha256=kFfBKb5N70NWYUfpRRxn_Sb9p_vXlB6BBaTCqWmSReo,2978
161
- kash/model/actions_model.py,sha256=7HbcEjm_-wckFE2hhec6oh7n8sqZ58G14yKahSEiOG8,21859
161
+ kash/model/actions_model.py,sha256=nOo-xbPp_J0aVKul2zBvG7zRaqvz6F-wFUH4oBYU2q0,22085
162
162
  kash/model/assistant_response_model.py,sha256=6eDfC27nyuBDFjv5nCYMa_Qb2mPbKwDzZy7uLOIyskI,2653
163
163
  kash/model/compound_actions_model.py,sha256=HiDK5wwCu3WwZYHATZoLEguiqwR9V6V296wiKtGIX8s,6926
164
164
  kash/model/concept_model.py,sha256=we2qOcy9Mv1q7XPfkDLp_CyO_-8DwAUfUYlpgy_jrFs,1011
165
165
  kash/model/exec_model.py,sha256=IlfvtQyoFRRWhWju7vdXp9J-w_NGcGtL5DhDLy9gRd8,2250
166
166
  kash/model/graph_model.py,sha256=jnctrPiBZ0xwAR8D54JMAJPanA1yZdaxSFQoIpe8anA,2662
167
- kash/model/items_model.py,sha256=429FXlEsKxUFCqT_Z5t2zAFcfVEpjOGMdvz7q4hMEtw,34891
167
+ kash/model/items_model.py,sha256=oH6qsexLTrjYwE_wS_pLalYRV8bX1avHXha4klBK8UI,35237
168
168
  kash/model/language_list.py,sha256=I3RIbxTseVmPdhExQimimEv18Gmy2ImMbpXe0-_t1Qw,450
169
169
  kash/model/llm_actions_model.py,sha256=a29uXVNfS2CiqvM7HPdC6H9A23rSQQihAideuBLMH8g,2110
170
170
  kash/model/media_model.py,sha256=64Zic4cRjQpgf_-tOuZlZZe59mz_qu0s6OQSU0YlDUI,3357
@@ -177,7 +177,7 @@ kash/shell/shell_main.py,sha256=nqbP8NyxtxAwh787YWhpbWelt_ObfIRZzCMK1aaQcmg,2094
177
177
  kash/shell/version.py,sha256=FRGs_jmzk6QiRPZfZv36SPzeyJCsVWZ_E2CKRkExazw,835
178
178
  kash/shell/completions/completion_scoring.py,sha256=-svesm2cR1AA86jYcxlynXCBZON26eUJce93FlL2nQo,10209
179
179
  kash/shell/completions/completion_types.py,sha256=FocRXd6Df3Df0nL2Y1GevMx3FsljJwbQdVgWsIngpaQ,4793
180
- kash/shell/completions/shell_completions.py,sha256=yHCFs-XRNjReuEsmhEUi-iTE2MoZrUa3RDSKhVe5EfQ,8846
180
+ kash/shell/completions/shell_completions.py,sha256=A0WWrm2lEwguasDMnDuaI8xGny9MhwGfNvCY3rHNUnw,8844
181
181
  kash/shell/file_icons/color_for_format.py,sha256=bFuE1lwiyUkgWB3Gk3jrch-9EIQz9thILQiX_a5dGb8,2034
182
182
  kash/shell/file_icons/nerd_icons.py,sha256=qF1Awc5cWIwaOWo7k_nmG9_A6XXwdNNcaluUUlde3KM,36046
183
183
  kash/shell/input/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -217,7 +217,7 @@ kash/utils/file_utils/__init__.py,sha256=loL_iW0oOZs0mJ5GelBPptBcqzYKSWdsGcHrpRy
217
217
  kash/utils/file_utils/dir_info.py,sha256=HamMr58k_DanTLifj7A2JDxTGWXEZZx2pQuE6Hjcm8g,1856
218
218
  kash/utils/file_utils/file_ext.py,sha256=-H63vlrVI3pfE2Cn_9qF7-QLDaUIu_njc4TieNgAHSY,1860
219
219
  kash/utils/file_utils/file_formats.py,sha256=vnihRFLl85G1uzpqDc_uiGH9SIvbFTYVszz3srdSSz0,4949
220
- kash/utils/file_utils/file_formats_model.py,sha256=0rwWlkgMaZu5Ap7IFPt3poA1owdwFCfgGGtvu__15GY,15099
220
+ kash/utils/file_utils/file_formats_model.py,sha256=KA697MPW-V0Xw82eeNATW1UrnUMnzldFKA1XWM3Obq0,15628
221
221
  kash/utils/file_utils/file_sort_filter.py,sha256=_k1chT3dJl5lSmKA2PW90KaoG4k4zftGdtwWoNEljP4,7136
222
222
  kash/utils/file_utils/file_walk.py,sha256=cpwVDPuaVm95_ZwFJiAdIuZAGhASI3gJ3ZUsCGP75b8,5527
223
223
  kash/utils/file_utils/filename_parsing.py,sha256=drHrH2B9W_5yAbXURNGJxNqj9GmTe8FayH6Gjw9e4-U,4194
@@ -231,7 +231,7 @@ kash/utils/rich_custom/ansi_cell_len.py,sha256=oQlNrqWB0f6pmigkbRRyeK6oWlGHMPbV_
231
231
  kash/utils/rich_custom/rich_char_transform.py,sha256=3M89tViKM0y31VHsDoHi5eHFWlv5ME7F4p35IdDxnrw,2616
232
232
  kash/utils/rich_custom/rich_indent.py,sha256=nz72yNpUuYjOsaPNVmxM81oEQm-GKEfQkNsuWmv16G0,2286
233
233
  kash/utils/rich_custom/rich_markdown_fork.py,sha256=M_JRaSAyHrSg-wuLv9C9P7SkehSim3lwkqQPuMIFkVw,26551
234
- kash/utils/text_handling/doc_normalization.py,sha256=Lz2wiSXCFGT15S9siNksiiND08uQIj3sgFCYYWkamT8,2786
234
+ kash/utils/text_handling/doc_normalization.py,sha256=C211eSof8PUDVCqQtShuC4AMJpTZeBK8GHlGATp3c9E,2976
235
235
  kash/utils/text_handling/escape_html_tags.py,sha256=7ZNQw3wfGzATVBBKmJMWmBTuznEPGzS6utjrH9HmmlQ,6361
236
236
  kash/utils/text_handling/markdown_render.py,sha256=Ea-QiBND0kp4Dc9rYr8Z3dB_CRpAxneGHBOlTDWsDo0,3751
237
237
  kash/utils/text_handling/markdown_utils.py,sha256=ndEd5ai80ZjSeMR104KLmAj0LOCPZln0ntd9tP5mf-E,9783
@@ -248,15 +248,15 @@ kash/web_content/web_extract_readabilipy.py,sha256=IT7ET5IoU2-Nf37-Neh6CkKMvLL3W
248
248
  kash/web_content/web_fetch.py,sha256=J8DLFP1vzp7aScanFq0Bd7xCP6AVL4JgMMBqyRPtZjQ,4720
249
249
  kash/web_content/web_page_model.py,sha256=9bPuqZxXo6hSUB_llEcz8bs3W1lW0r-Y3Q7pZgknlQU,693
250
250
  kash/web_gen/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
251
- kash/web_gen/simple_webpage.py,sha256=c_kLXAsjP9wB9-ppF7MMJMw5VHXzVwkcHymfo5YOfS0,1402
252
- kash/web_gen/tabbed_webpage.py,sha256=Q_Htw2QO0O9H3A9OFrWw9GBD73cbwB6hOKF-W6mO6YE,4807
251
+ kash/web_gen/simple_webpage.py,sha256=ks_0ljxCeS2-gAAEaUc1JEnzY3JY0nzqGFiyyqyRuZs,1537
252
+ kash/web_gen/tabbed_webpage.py,sha256=DiZV48TVvcjOf31g3nzTAtGKpH5Cek1Unksr7Cwcwog,4949
253
253
  kash/web_gen/template_render.py,sha256=aypo6UanouftV4RpxgNm6JdquelI52fV0IlihdA3yjE,1908
254
- kash/web_gen/templates/base_styles.css.jinja,sha256=sPYXVMtK1f-Ndf6zbHv71gdq_lkkOwjf8JNqDc_37go,9176
255
- kash/web_gen/templates/base_webpage.html.jinja,sha256=Nvdd8pLSG2OdbrDQRvYcexYIZoMdr1G_7MdUVHNDoA8,7945
254
+ kash/web_gen/templates/base_styles.css.jinja,sha256=xSC0eACITRz1IcIizanhmzjH0aLB28fKdkSmvTEAJUY,9975
255
+ kash/web_gen/templates/base_webpage.html.jinja,sha256=xQ2p4Kv42VPfGUnGLedEjPn6WOnq8G8Fly5XjJUdnXc,12043
256
256
  kash/web_gen/templates/content_styles.css.jinja,sha256=3qcIwIt3DipCDJa9z6oIM_BMxmwoT7E_loTK0F3L9Vo,3629
257
257
  kash/web_gen/templates/explain_view.html.jinja,sha256=DNw5Iw5SrhIUFRGB4qNvfcKXsBHVbEJVURGdhvyC75Q,949
258
- kash/web_gen/templates/item_view.html.jinja,sha256=-Rqf2qS9KNbcJp9q1OOtl1aBGgPuwG7jc2Bgw_6YfBg,6791
259
- kash/web_gen/templates/simple_webpage.html.jinja,sha256=_59sVXjRUdrArz_l9S4SYJQubxMJg61XDhYs-lE1Qoo,708
258
+ kash/web_gen/templates/item_view.html.jinja,sha256=cYGyGKFcX8-5L2SM7-BC5oK6GLuH6blrzcxw2DxX-Q8,6828
259
+ kash/web_gen/templates/simple_webpage.html.jinja,sha256=MVXbs0359TTMAqY_A_T8-fP4mrkH5GalwwRBbAzWPeE,1333
260
260
  kash/web_gen/templates/tabbed_webpage.html.jinja,sha256=u7gabDsCs3neQQlH1y1rIaqT8UumPKVPPZG4VKg5R_g,1823
261
261
  kash/workspaces/__init__.py,sha256=q1gFERRZLJMA9-XSUKvB1ulauHDKqyzzc86GFLbxAuk,700
262
262
  kash/workspaces/param_state.py,sha256=vT_eGWqg2SRviIM5jqEAauznX2B5Xt2nHHu2oRxTcIU,746
@@ -278,9 +278,9 @@ kash/xonsh_custom/xonsh_keybindings.py,sha256=pSnYoZdJmyvC32U1JeqSADV-wReXEHC_Le
278
278
  kash/xonsh_custom/xonsh_modern_tools.py,sha256=mj_b34LZXfE8MJe9EpDmp5JZ0tDM1biYNPAS8jdcURo,1467
279
279
  kash/xonsh_custom/xonsh_ranking_completer.py,sha256=ZRGiAfoEgqgnlq2-ReUVEaX5oOgW1DQ9WxIv2OJLuTo,5620
280
280
  kash/xontrib/fnm.py,sha256=V2tsOdmIDgbFbZSfMLpsvDIwwJJqiYnOkOySD1cXNXw,3700
281
- kash/xontrib/kash_extension.py,sha256=JRRJC3cZSMOl4sSWEdKAQ_dVRMubWaOltKr8G0dWt6Y,1876
282
- kash_shell-0.3.14.dist-info/METADATA,sha256=w_L4jxifwPdsDvYqMRJZSbhc3u9bV5mYORRcbXHDj9k,31258
283
- kash_shell-0.3.14.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
284
- kash_shell-0.3.14.dist-info/entry_points.txt,sha256=SQraWDAo8SqYpthLXThei0mf_hGGyhYBUO-Er_0HcwI,85
285
- kash_shell-0.3.14.dist-info/licenses/LICENSE,sha256=rCh2PsfYeiU6FK_0wb58kHGm_Fj5c43fdcHEexiVzIo,34562
286
- kash_shell-0.3.14.dist-info/RECORD,,
281
+ kash/xontrib/kash_extension.py,sha256=FLIMlgR3C_6A1fwKE-Ul0nmmpJSszVPbAriinUyQ8Zg,1896
282
+ kash_shell-0.3.16.dist-info/METADATA,sha256=4nG6g2qUrGSvUHNGVQe389ak5Kv20uV5JBM_ByIkqKk,31258
283
+ kash_shell-0.3.16.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
284
+ kash_shell-0.3.16.dist-info/entry_points.txt,sha256=SQraWDAo8SqYpthLXThei0mf_hGGyhYBUO-Er_0HcwI,85
285
+ kash_shell-0.3.16.dist-info/licenses/LICENSE,sha256=rCh2PsfYeiU6FK_0wb58kHGm_Fj5c43fdcHEexiVzIo,34562
286
+ kash_shell-0.3.16.dist-info/RECORD,,