npcsh 1.0.30__py3-none-any.whl → 1.0.31__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 (33) hide show
  1. npcsh/guac.py +77 -62
  2. {npcsh-1.0.30.dist-info → npcsh-1.0.31.dist-info}/METADATA +1 -1
  3. {npcsh-1.0.30.dist-info → npcsh-1.0.31.dist-info}/RECORD +33 -33
  4. {npcsh-1.0.30.data → npcsh-1.0.31.data}/data/npcsh/npc_team/alicanto.npc +0 -0
  5. {npcsh-1.0.30.data → npcsh-1.0.31.data}/data/npcsh/npc_team/alicanto.png +0 -0
  6. {npcsh-1.0.30.data → npcsh-1.0.31.data}/data/npcsh/npc_team/bash_executer.jinx +0 -0
  7. {npcsh-1.0.30.data → npcsh-1.0.31.data}/data/npcsh/npc_team/corca.npc +0 -0
  8. {npcsh-1.0.30.data → npcsh-1.0.31.data}/data/npcsh/npc_team/corca.png +0 -0
  9. {npcsh-1.0.30.data → npcsh-1.0.31.data}/data/npcsh/npc_team/edit_file.jinx +0 -0
  10. {npcsh-1.0.30.data → npcsh-1.0.31.data}/data/npcsh/npc_team/foreman.npc +0 -0
  11. {npcsh-1.0.30.data → npcsh-1.0.31.data}/data/npcsh/npc_team/frederic.npc +0 -0
  12. {npcsh-1.0.30.data → npcsh-1.0.31.data}/data/npcsh/npc_team/frederic4.png +0 -0
  13. {npcsh-1.0.30.data → npcsh-1.0.31.data}/data/npcsh/npc_team/guac.png +0 -0
  14. {npcsh-1.0.30.data → npcsh-1.0.31.data}/data/npcsh/npc_team/image_generation.jinx +0 -0
  15. {npcsh-1.0.30.data → npcsh-1.0.31.data}/data/npcsh/npc_team/internet_search.jinx +0 -0
  16. {npcsh-1.0.30.data → npcsh-1.0.31.data}/data/npcsh/npc_team/kadiefa.npc +0 -0
  17. {npcsh-1.0.30.data → npcsh-1.0.31.data}/data/npcsh/npc_team/kadiefa.png +0 -0
  18. {npcsh-1.0.30.data → npcsh-1.0.31.data}/data/npcsh/npc_team/npcsh.ctx +0 -0
  19. {npcsh-1.0.30.data → npcsh-1.0.31.data}/data/npcsh/npc_team/npcsh_sibiji.png +0 -0
  20. {npcsh-1.0.30.data → npcsh-1.0.31.data}/data/npcsh/npc_team/plonk.npc +0 -0
  21. {npcsh-1.0.30.data → npcsh-1.0.31.data}/data/npcsh/npc_team/plonk.png +0 -0
  22. {npcsh-1.0.30.data → npcsh-1.0.31.data}/data/npcsh/npc_team/plonkjr.npc +0 -0
  23. {npcsh-1.0.30.data → npcsh-1.0.31.data}/data/npcsh/npc_team/plonkjr.png +0 -0
  24. {npcsh-1.0.30.data → npcsh-1.0.31.data}/data/npcsh/npc_team/python_executor.jinx +0 -0
  25. {npcsh-1.0.30.data → npcsh-1.0.31.data}/data/npcsh/npc_team/screen_cap.jinx +0 -0
  26. {npcsh-1.0.30.data → npcsh-1.0.31.data}/data/npcsh/npc_team/sibiji.npc +0 -0
  27. {npcsh-1.0.30.data → npcsh-1.0.31.data}/data/npcsh/npc_team/sibiji.png +0 -0
  28. {npcsh-1.0.30.data → npcsh-1.0.31.data}/data/npcsh/npc_team/spool.png +0 -0
  29. {npcsh-1.0.30.data → npcsh-1.0.31.data}/data/npcsh/npc_team/yap.png +0 -0
  30. {npcsh-1.0.30.dist-info → npcsh-1.0.31.dist-info}/WHEEL +0 -0
  31. {npcsh-1.0.30.dist-info → npcsh-1.0.31.dist-info}/entry_points.txt +0 -0
  32. {npcsh-1.0.30.dist-info → npcsh-1.0.31.dist-info}/licenses/LICENSE +0 -0
  33. {npcsh-1.0.30.dist-info → npcsh-1.0.31.dist-info}/top_level.txt +0 -0
npcsh/guac.py CHANGED
@@ -6,18 +6,9 @@ import pandas as pd
6
6
  import sys
7
7
  import argparse
8
8
  import importlib.metadata
9
- import matplotlib
10
- import platform
11
9
  import queue
12
10
  plot_queue = queue.Queue()
13
11
 
14
- if platform.system() == 'Darwin':
15
- try:
16
- matplotlib.use('TkAgg')
17
- except ImportError:
18
- matplotlib.use('Agg')
19
- else:
20
- matplotlib.use('TkAgg')
21
12
 
22
13
  import matplotlib.pyplot as plt
23
14
  from chroptiks.plotting_utils import *
@@ -155,17 +146,16 @@ def is_python_code(text: str) -> bool:
155
146
  text = text.strip()
156
147
  if not text:
157
148
  return False
149
+
158
150
  try:
159
- compile(text, "<input>", "eval")
151
+ compile(text, "<input>", "exec")
160
152
  return True
161
153
  except SyntaxError:
162
- try:
163
- compile(text, "<input>", "exec")
164
- return True
165
- except SyntaxError:
166
- return False
154
+ return False
167
155
  except (OverflowError, ValueError):
168
156
  return False
157
+ except IndentationError:
158
+ return True
169
159
  def execute_python_code(code_str: str, state: ShellState, locals_dict: Dict[str, Any]) -> Tuple[ShellState, Any]:
170
160
  import io
171
161
  output_capture = io.StringIO()
@@ -1168,24 +1158,7 @@ def _run_agentic_mode(command: str,
1168
1158
  compressed_state = state.npc.compress_planning_state(planning_state)
1169
1159
  state.messages = [{"role": "system", "content": f"Session context: {compressed_state}"}]
1170
1160
 
1171
- existing_vars_context = "EXISTING VARIABLES IN ENVIRONMENT:\n"
1172
- for var_name, var_value in locals_dict.items():
1173
- if not var_name.startswith('_') and var_name not in ['In', 'Out', 'exit', 'quit', 'get_ipython']:
1174
- try:
1175
- var_type = type(var_value).__name__
1176
- var_repr = repr(var_value)
1177
- if len(var_repr) > 100:
1178
- var_repr = var_repr[:97] + "..."
1179
- existing_vars_context += f"- {var_name} ({var_type}): {var_repr}\n"
1180
- except:
1181
- existing_vars_context += f"- {var_name} ({type(var_value).__name__}): <unrepresentable>\n"
1182
- previous_code = ''
1183
- next_step = ''
1184
- steps = []
1185
- while iteration < max_iterations and consecutive_failures < max_consecutive_failures:
1186
- iteration += 1
1187
- print(f"\n{_get_guac_agent_emoji(consecutive_failures, max_consecutive_failures)} Agentic iteration {iteration} ")
1188
-
1161
+
1189
1162
 
1190
1163
 
1191
1164
  existing_vars_context = "EXISTING VARIABLES IN ENVIRONMENT:\n"
@@ -1489,6 +1462,7 @@ def execute_guac_command(command: str, state: ShellState, locals_dict: Dict[str,
1489
1462
 
1490
1463
  if stripped_command.startswith('/') and stripped_command not in ["/refresh", "/agent", "/chat", "/cmd"]:
1491
1464
  return execute_command(stripped_command, state, review=True, router=router)
1465
+ print(is_python_code(stripped_command))
1492
1466
  if is_python_code(stripped_command):
1493
1467
  try:
1494
1468
  state, exec_output = execute_python_code(stripped_command, state, locals_dict)
@@ -1497,6 +1471,7 @@ def execute_guac_command(command: str, state: ShellState, locals_dict: Dict[str,
1497
1471
  print("\nExecution interrupted by user")
1498
1472
  return state, "Execution interrupted"
1499
1473
  if state.current_mode == "agent":
1474
+
1500
1475
  return _run_agentic_mode(stripped_command, state, locals_dict, npc_team_dir)
1501
1476
  if state.current_mode == "cmd":
1502
1477
 
@@ -1908,38 +1883,78 @@ def enter_guac_mode(npc=None,
1908
1883
  state.command_history = command_history
1909
1884
 
1910
1885
  if npc is None and default_npc is None:
1911
- guac_npc_path = Path(npc_team_dir) / "guac.npc"
1912
- if guac_npc_path.exists():
1913
- npc = NPC(file=str(guac_npc_path),
1914
- db_conn=command_history.engine)
1915
- print(guac_npc_path, npc)
1916
-
1917
- team_ctx_path = get_team_ctx_path(str(npc_team_dir))
1918
- team_ctx = {}
1919
- if team_ctx_path and Path(team_ctx_path).exists():
1920
- with open(team_ctx_path, "r") as f:
1921
- team_ctx = yaml.safe_load(f) or {}
1922
- print(team_ctx, team_ctx_path)
1923
- team = Team(team_path=str(npc_team_dir),
1924
- forenpc=npc,
1925
- jinxs={})
1926
- team.name = team_ctx.get("team_name", "guac_global_team")
1927
- team.team_ctx = team_ctx
1928
- print(team)
1929
- if npc.model is None:
1930
- npc.model = team_ctx.get("model", state.chat_model)
1931
- if npc.provider is None:
1932
- npc.provider = team_ctx.get("provider", state.chat_provider)
1886
+ guac_npc_path = Path(npc_team_dir) / "guac.npc"
1887
+ if guac_npc_path.exists():
1888
+ npc = NPC(file=str(guac_npc_path),
1889
+ db_conn=command_history.engine)
1890
+ print(guac_npc_path, npc)
1891
+
1892
+ team_ctx_path = get_team_ctx_path(str(npc_team_dir))
1893
+ team_ctx = {}
1894
+ if team_ctx_path and Path(team_ctx_path).exists():
1895
+ with open(team_ctx_path, "r") as f:
1896
+ team_ctx = yaml.safe_load(f) or {}
1897
+ print(team_ctx, team_ctx_path)
1898
+ team = Team(team_path=str(npc_team_dir),
1899
+ forenpc=npc,
1900
+ jinxs={})
1901
+ team.name = team_ctx.get("team_name", "guac_global_team")
1902
+ team.team_ctx = team_ctx
1903
+ print(team)
1904
+ if npc.model is None:
1905
+ npc.model = team_ctx.get("model", state.chat_model)
1906
+ if npc.provider is None:
1907
+ npc.provider = team_ctx.get("provider", state.chat_provider)
1908
+
1909
+ for npc_name, npc_obj in team.npcs.items():
1910
+ if not npc_obj.model:
1911
+ npc_obj.model = team_ctx.get("model", state.chat_model)
1912
+ if not npc_obj.provider:
1913
+ npc_obj.provider = team_ctx.get("provider", state.chat_provider)
1914
+ else:
1915
+ print("No local guac.npc found. Checking for global team...")
1916
+ global_team_dir = ensure_global_guac_team()
1917
+ global_guac_npc_path = global_team_dir / "guac.npc"
1933
1918
 
1934
- for npc_name, npc_obj in team.npcs.items():
1935
- if not npc_obj.model:
1936
- npc_obj.model = team_ctx.get("model", state.chat_model)
1937
- if not npc_obj.provider:
1938
- npc_obj.provider = team_ctx.get("provider", state.chat_provider)
1939
- else:
1940
- raise RuntimeError(f"No NPC loaded and {guac_npc_path} not found!")
1919
+ if global_guac_npc_path.exists():
1920
+ print("Using global guac team")
1921
+ npc = NPC(file=str(global_guac_npc_path),
1922
+ db_conn=command_history.engine)
1923
+ team_ctx_path = global_team_dir / "team.ctx"
1924
+ team_ctx = {}
1925
+ if team_ctx_path.exists():
1926
+ with open(team_ctx_path, "r") as f:
1927
+ team_ctx = yaml.safe_load(f) or {}
1928
+
1929
+ team = Team(team_path=str(global_team_dir),
1930
+ forenpc=npc,
1931
+ jinxs={})
1932
+ team.name = team_ctx.get("team_name", "guac_global_team")
1933
+ team.team_ctx = team_ctx
1934
+
1935
+ if npc.model is None:
1936
+ npc.model = team_ctx.get("model", state.chat_model)
1937
+ if npc.provider is None:
1938
+ npc.provider = team_ctx.get("provider", state.chat_provider)
1939
+ else:
1940
+ print("Could not find or create global guac team. Please run /init to set up guac properly.")
1941
+ try:
1942
+ user_choice = input("Would you like to initialize guac now? (y/n): ").strip().lower()
1943
+ if user_choice == 'y':
1944
+ setup_npc_team(Path(npc_team_dir), lang)
1945
+ npc = NPC(file=str(Path(npc_team_dir) / "guac.npc"),
1946
+ db_conn=command_history.engine)
1947
+ team = Team(team_path=str(npc_team_dir), forenpc=npc, jinxs={})
1948
+ else:
1949
+ print("Exiting guac mode.")
1950
+ return
1951
+ except (KeyboardInterrupt, EOFError):
1952
+ print("Initialization cancelled. Exiting guac mode.")
1953
+ return
1941
1954
  elif default_npc and npc is None:
1942
1955
  npc = default_npc
1956
+
1957
+
1943
1958
  state.npc = npc or default_npc
1944
1959
  state.team = team or default_team
1945
1960
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: npcsh
3
- Version: 1.0.30
3
+ Version: 1.0.31
4
4
  Summary: npcsh is a command-line toolkit for using AI agents in novel ways.
5
5
  Home-page: https://github.com/NPC-Worldwide/npcsh
6
6
  Author: Christopher Agostino
@@ -2,7 +2,7 @@ npcsh/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
2
  npcsh/_state.py,sha256=sntRSm9DKthandawaLCf-semAm_1CNx3AUh-066G248,86498
3
3
  npcsh/alicanto.py,sha256=S-_mFtEzE8CKWSctJawUtAKmVLgUz-loODTDtL0f6eo,41538
4
4
  npcsh/corca.py,sha256=XuaNVhZ1Yslx43AcdmApViUXMuWMoXncLaNT0wwiHmk,47737
5
- npcsh/guac.py,sha256=qzoylPid9PdttTZvbU4vSrG1yBNhrfIXqrmvNFAFguM,79334
5
+ npcsh/guac.py,sha256=sVdLYVkzkQw6TE7crtLUX0QJZFkzQthWZTe1p7IfAQE,80412
6
6
  npcsh/mcp_helpers.py,sha256=9TsCfcquGu_vX4WaKlY3J3P13-uxruQKrXng-jJ5YyY,11176
7
7
  npcsh/mcp_server.py,sha256=krc1rhiSU9gI76w99Ph3Mk7OyUVzfiEXKMvVid-7-Ik,5201
8
8
  npcsh/npc.py,sha256=OjCDu03hAcXyqPbzMeBBr1cBnmQsB1FBhd7kLNsWALc,8330
@@ -39,35 +39,35 @@ npcsh/npc_team/jinxs/image_generation.jinx,sha256=bQxZdEm0_eqvf_OJSHw3qarp8Klp3L
39
39
  npcsh/npc_team/jinxs/internet_search.jinx,sha256=s8zVxwKFUAof_VzQrwB5dpAQdeJ6hUBkbIdRsT-I5mo,1267
40
40
  npcsh/npc_team/jinxs/python_executor.jinx,sha256=vZz3pZaj1BnPFHMs_wpyjRc0b32JR4rLhZfulCMDF1s,398
41
41
  npcsh/npc_team/jinxs/screen_cap.jinx,sha256=-4DG0EiEe61N_kMhVqqHKhLVGOLuZQT9ax6IZk20NjI,960
42
- npcsh-1.0.30.data/data/npcsh/npc_team/alicanto.npc,sha256=y9yDY3lq8ZwxQxpnrgle8w5IJwZqvxDepZFU4OaZCtg,148
43
- npcsh-1.0.30.data/data/npcsh/npc_team/alicanto.png,sha256=A7xeMbcoKGjlkELxJEVifCEZLVWbOKZarTN5ZFJG-FM,3519858
44
- npcsh-1.0.30.data/data/npcsh/npc_team/bash_executer.jinx,sha256=C_oQccOY8cKevMMPLRdznlMOccQvLgyzyOIThXvmrD8,692
45
- npcsh-1.0.30.data/data/npcsh/npc_team/corca.npc,sha256=HI3Bs6KlUBPMz7icF1TRE8-V3f3EdU_VxvQxEpru3L4,662
46
- npcsh-1.0.30.data/data/npcsh/npc_team/corca.png,sha256=0lF70hKu6tY-37YmIPVF2cuaPzvnQ4-UtQOzuAbKEf4,1666776
47
- npcsh-1.0.30.data/data/npcsh/npc_team/edit_file.jinx,sha256=4PaJs8g_cdeDpbQwQSBycU5RDA0rczEC_NpLfLjo74Y,3490
48
- npcsh-1.0.30.data/data/npcsh/npc_team/foreman.npc,sha256=WqB8jLfBToGmr8c1vip1KOnTHxfXlGXwDUGnZoDMQr0,327
49
- npcsh-1.0.30.data/data/npcsh/npc_team/frederic.npc,sha256=EE2dOUItp-VKuW3ZMSHffmIEO4evjPcU2W_C4P3WXbY,362
50
- npcsh-1.0.30.data/data/npcsh/npc_team/frederic4.png,sha256=ll8uoV0npnPp5HVJWv7h0xDSeuq4pqsk_gYGBHLS0VY,1590744
51
- npcsh-1.0.30.data/data/npcsh/npc_team/guac.png,sha256=MCE7eJuEJwLJEzc9FS7lL62Mm-38jQRHkxXogPfOTuw,211470
52
- npcsh-1.0.30.data/data/npcsh/npc_team/image_generation.jinx,sha256=bQxZdEm0_eqvf_OJSHw3qarp8Klp3LlBDv1_HY3COo4,1307
53
- npcsh-1.0.30.data/data/npcsh/npc_team/internet_search.jinx,sha256=s8zVxwKFUAof_VzQrwB5dpAQdeJ6hUBkbIdRsT-I5mo,1267
54
- npcsh-1.0.30.data/data/npcsh/npc_team/kadiefa.npc,sha256=Yl5a4wrfe4F2f6Ndw_ukzlVVX7NE9g_mG-3QqJSkg_o,381
55
- npcsh-1.0.30.data/data/npcsh/npc_team/kadiefa.png,sha256=3CAwL8crKIwJko6o75Z6OYYEEM9Rk--yGzCJg7zoszg,3062528
56
- npcsh-1.0.30.data/data/npcsh/npc_team/npcsh.ctx,sha256=-jKYaPm2YbZHAGgWAXhyPIwhiNe1H1ZRFg1Zc7tHSxk,1049
57
- npcsh-1.0.30.data/data/npcsh/npc_team/npcsh_sibiji.png,sha256=9fUqgYMsSHmaH-kBTBQ7N5UCS5-eLZF94Log0O3mtFg,4544
58
- npcsh-1.0.30.data/data/npcsh/npc_team/plonk.npc,sha256=u1m2a1D512XGQ2kC3eWDAY8Y2IvpkNU73DI_CPE65UE,90
59
- npcsh-1.0.30.data/data/npcsh/npc_team/plonk.png,sha256=IU5ey-Dl4HEKlwnf75RSWNSHpF8rVqGmdbsa0deL4rQ,2727773
60
- npcsh-1.0.30.data/data/npcsh/npc_team/plonkjr.npc,sha256=It-i-BEuG0XddKk0d85onk2aJr9Pe5pLnJzNaCWaQIM,87
61
- npcsh-1.0.30.data/data/npcsh/npc_team/plonkjr.png,sha256=MqLEGwsyECUeODZIti0HQQrMMVxA6XERpW01R06NbpY,2606710
62
- npcsh-1.0.30.data/data/npcsh/npc_team/python_executor.jinx,sha256=vZz3pZaj1BnPFHMs_wpyjRc0b32JR4rLhZfulCMDF1s,398
63
- npcsh-1.0.30.data/data/npcsh/npc_team/screen_cap.jinx,sha256=-4DG0EiEe61N_kMhVqqHKhLVGOLuZQT9ax6IZk20NjI,960
64
- npcsh-1.0.30.data/data/npcsh/npc_team/sibiji.npc,sha256=Hb4wXKIObKKgibwnio5hLec9yd_9bKDCA87Nm2zijFA,216
65
- npcsh-1.0.30.data/data/npcsh/npc_team/sibiji.png,sha256=1dlZb7J3E62FcVo9CVOzLb8nu1bIUV7cr97nsFocHCM,35615
66
- npcsh-1.0.30.data/data/npcsh/npc_team/spool.png,sha256=LWTLkwDxXBfLuSUCX32_lo5yAmLYGsA67Xpsz-7MmWU,2876725
67
- npcsh-1.0.30.data/data/npcsh/npc_team/yap.png,sha256=_l7UbWnXJdsy4Mx-x5l9DT0R6ize3HTnkwQQnOFlI18,1548649
68
- npcsh-1.0.30.dist-info/licenses/LICENSE,sha256=IKBvAECHP-aCiJtE4cHGCE5Yl0tozYz02PomGeWS3y4,1070
69
- npcsh-1.0.30.dist-info/METADATA,sha256=w9tSdXf-u7Z0BYYDfGAwWfzYUfFCEhBzowXbCjZtrVU,25486
70
- npcsh-1.0.30.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
71
- npcsh-1.0.30.dist-info/entry_points.txt,sha256=S5yIuGm8ZXQ4siHYgN5gs0J7bxgobSEULXf8L5HaW5o,206
72
- npcsh-1.0.30.dist-info/top_level.txt,sha256=kHSNgKMCkfjV95-DH0YSp1LLBi0HXdF3w57j7MQON3E,6
73
- npcsh-1.0.30.dist-info/RECORD,,
42
+ npcsh-1.0.31.data/data/npcsh/npc_team/alicanto.npc,sha256=y9yDY3lq8ZwxQxpnrgle8w5IJwZqvxDepZFU4OaZCtg,148
43
+ npcsh-1.0.31.data/data/npcsh/npc_team/alicanto.png,sha256=A7xeMbcoKGjlkELxJEVifCEZLVWbOKZarTN5ZFJG-FM,3519858
44
+ npcsh-1.0.31.data/data/npcsh/npc_team/bash_executer.jinx,sha256=C_oQccOY8cKevMMPLRdznlMOccQvLgyzyOIThXvmrD8,692
45
+ npcsh-1.0.31.data/data/npcsh/npc_team/corca.npc,sha256=HI3Bs6KlUBPMz7icF1TRE8-V3f3EdU_VxvQxEpru3L4,662
46
+ npcsh-1.0.31.data/data/npcsh/npc_team/corca.png,sha256=0lF70hKu6tY-37YmIPVF2cuaPzvnQ4-UtQOzuAbKEf4,1666776
47
+ npcsh-1.0.31.data/data/npcsh/npc_team/edit_file.jinx,sha256=4PaJs8g_cdeDpbQwQSBycU5RDA0rczEC_NpLfLjo74Y,3490
48
+ npcsh-1.0.31.data/data/npcsh/npc_team/foreman.npc,sha256=WqB8jLfBToGmr8c1vip1KOnTHxfXlGXwDUGnZoDMQr0,327
49
+ npcsh-1.0.31.data/data/npcsh/npc_team/frederic.npc,sha256=EE2dOUItp-VKuW3ZMSHffmIEO4evjPcU2W_C4P3WXbY,362
50
+ npcsh-1.0.31.data/data/npcsh/npc_team/frederic4.png,sha256=ll8uoV0npnPp5HVJWv7h0xDSeuq4pqsk_gYGBHLS0VY,1590744
51
+ npcsh-1.0.31.data/data/npcsh/npc_team/guac.png,sha256=MCE7eJuEJwLJEzc9FS7lL62Mm-38jQRHkxXogPfOTuw,211470
52
+ npcsh-1.0.31.data/data/npcsh/npc_team/image_generation.jinx,sha256=bQxZdEm0_eqvf_OJSHw3qarp8Klp3LlBDv1_HY3COo4,1307
53
+ npcsh-1.0.31.data/data/npcsh/npc_team/internet_search.jinx,sha256=s8zVxwKFUAof_VzQrwB5dpAQdeJ6hUBkbIdRsT-I5mo,1267
54
+ npcsh-1.0.31.data/data/npcsh/npc_team/kadiefa.npc,sha256=Yl5a4wrfe4F2f6Ndw_ukzlVVX7NE9g_mG-3QqJSkg_o,381
55
+ npcsh-1.0.31.data/data/npcsh/npc_team/kadiefa.png,sha256=3CAwL8crKIwJko6o75Z6OYYEEM9Rk--yGzCJg7zoszg,3062528
56
+ npcsh-1.0.31.data/data/npcsh/npc_team/npcsh.ctx,sha256=-jKYaPm2YbZHAGgWAXhyPIwhiNe1H1ZRFg1Zc7tHSxk,1049
57
+ npcsh-1.0.31.data/data/npcsh/npc_team/npcsh_sibiji.png,sha256=9fUqgYMsSHmaH-kBTBQ7N5UCS5-eLZF94Log0O3mtFg,4544
58
+ npcsh-1.0.31.data/data/npcsh/npc_team/plonk.npc,sha256=u1m2a1D512XGQ2kC3eWDAY8Y2IvpkNU73DI_CPE65UE,90
59
+ npcsh-1.0.31.data/data/npcsh/npc_team/plonk.png,sha256=IU5ey-Dl4HEKlwnf75RSWNSHpF8rVqGmdbsa0deL4rQ,2727773
60
+ npcsh-1.0.31.data/data/npcsh/npc_team/plonkjr.npc,sha256=It-i-BEuG0XddKk0d85onk2aJr9Pe5pLnJzNaCWaQIM,87
61
+ npcsh-1.0.31.data/data/npcsh/npc_team/plonkjr.png,sha256=MqLEGwsyECUeODZIti0HQQrMMVxA6XERpW01R06NbpY,2606710
62
+ npcsh-1.0.31.data/data/npcsh/npc_team/python_executor.jinx,sha256=vZz3pZaj1BnPFHMs_wpyjRc0b32JR4rLhZfulCMDF1s,398
63
+ npcsh-1.0.31.data/data/npcsh/npc_team/screen_cap.jinx,sha256=-4DG0EiEe61N_kMhVqqHKhLVGOLuZQT9ax6IZk20NjI,960
64
+ npcsh-1.0.31.data/data/npcsh/npc_team/sibiji.npc,sha256=Hb4wXKIObKKgibwnio5hLec9yd_9bKDCA87Nm2zijFA,216
65
+ npcsh-1.0.31.data/data/npcsh/npc_team/sibiji.png,sha256=1dlZb7J3E62FcVo9CVOzLb8nu1bIUV7cr97nsFocHCM,35615
66
+ npcsh-1.0.31.data/data/npcsh/npc_team/spool.png,sha256=LWTLkwDxXBfLuSUCX32_lo5yAmLYGsA67Xpsz-7MmWU,2876725
67
+ npcsh-1.0.31.data/data/npcsh/npc_team/yap.png,sha256=_l7UbWnXJdsy4Mx-x5l9DT0R6ize3HTnkwQQnOFlI18,1548649
68
+ npcsh-1.0.31.dist-info/licenses/LICENSE,sha256=IKBvAECHP-aCiJtE4cHGCE5Yl0tozYz02PomGeWS3y4,1070
69
+ npcsh-1.0.31.dist-info/METADATA,sha256=gAjnehN3A7kfXcP4WxyuZnf2JwKBBklbLjUl2VtCuS4,25486
70
+ npcsh-1.0.31.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
71
+ npcsh-1.0.31.dist-info/entry_points.txt,sha256=S5yIuGm8ZXQ4siHYgN5gs0J7bxgobSEULXf8L5HaW5o,206
72
+ npcsh-1.0.31.dist-info/top_level.txt,sha256=kHSNgKMCkfjV95-DH0YSp1LLBi0HXdF3w57j7MQON3E,6
73
+ npcsh-1.0.31.dist-info/RECORD,,
File without changes