npcsh 1.0.36__py3-none-any.whl → 1.0.37__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 (34) hide show
  1. npcsh/_state.py +1 -9
  2. npcsh/mcp_server.py +119 -7
  3. {npcsh-1.0.36.dist-info → npcsh-1.0.37.dist-info}/METADATA +1 -1
  4. {npcsh-1.0.36.dist-info → npcsh-1.0.37.dist-info}/RECORD +34 -34
  5. {npcsh-1.0.36.data → npcsh-1.0.37.data}/data/npcsh/npc_team/alicanto.npc +0 -0
  6. {npcsh-1.0.36.data → npcsh-1.0.37.data}/data/npcsh/npc_team/alicanto.png +0 -0
  7. {npcsh-1.0.36.data → npcsh-1.0.37.data}/data/npcsh/npc_team/bash_executer.jinx +0 -0
  8. {npcsh-1.0.36.data → npcsh-1.0.37.data}/data/npcsh/npc_team/corca.npc +0 -0
  9. {npcsh-1.0.36.data → npcsh-1.0.37.data}/data/npcsh/npc_team/corca.png +0 -0
  10. {npcsh-1.0.36.data → npcsh-1.0.37.data}/data/npcsh/npc_team/edit_file.jinx +0 -0
  11. {npcsh-1.0.36.data → npcsh-1.0.37.data}/data/npcsh/npc_team/foreman.npc +0 -0
  12. {npcsh-1.0.36.data → npcsh-1.0.37.data}/data/npcsh/npc_team/frederic.npc +0 -0
  13. {npcsh-1.0.36.data → npcsh-1.0.37.data}/data/npcsh/npc_team/frederic4.png +0 -0
  14. {npcsh-1.0.36.data → npcsh-1.0.37.data}/data/npcsh/npc_team/guac.png +0 -0
  15. {npcsh-1.0.36.data → npcsh-1.0.37.data}/data/npcsh/npc_team/image_generation.jinx +0 -0
  16. {npcsh-1.0.36.data → npcsh-1.0.37.data}/data/npcsh/npc_team/internet_search.jinx +0 -0
  17. {npcsh-1.0.36.data → npcsh-1.0.37.data}/data/npcsh/npc_team/kadiefa.npc +0 -0
  18. {npcsh-1.0.36.data → npcsh-1.0.37.data}/data/npcsh/npc_team/kadiefa.png +0 -0
  19. {npcsh-1.0.36.data → npcsh-1.0.37.data}/data/npcsh/npc_team/npcsh.ctx +0 -0
  20. {npcsh-1.0.36.data → npcsh-1.0.37.data}/data/npcsh/npc_team/npcsh_sibiji.png +0 -0
  21. {npcsh-1.0.36.data → npcsh-1.0.37.data}/data/npcsh/npc_team/plonk.npc +0 -0
  22. {npcsh-1.0.36.data → npcsh-1.0.37.data}/data/npcsh/npc_team/plonk.png +0 -0
  23. {npcsh-1.0.36.data → npcsh-1.0.37.data}/data/npcsh/npc_team/plonkjr.npc +0 -0
  24. {npcsh-1.0.36.data → npcsh-1.0.37.data}/data/npcsh/npc_team/plonkjr.png +0 -0
  25. {npcsh-1.0.36.data → npcsh-1.0.37.data}/data/npcsh/npc_team/python_executor.jinx +0 -0
  26. {npcsh-1.0.36.data → npcsh-1.0.37.data}/data/npcsh/npc_team/screen_cap.jinx +0 -0
  27. {npcsh-1.0.36.data → npcsh-1.0.37.data}/data/npcsh/npc_team/sibiji.npc +0 -0
  28. {npcsh-1.0.36.data → npcsh-1.0.37.data}/data/npcsh/npc_team/sibiji.png +0 -0
  29. {npcsh-1.0.36.data → npcsh-1.0.37.data}/data/npcsh/npc_team/spool.png +0 -0
  30. {npcsh-1.0.36.data → npcsh-1.0.37.data}/data/npcsh/npc_team/yap.png +0 -0
  31. {npcsh-1.0.36.dist-info → npcsh-1.0.37.dist-info}/WHEEL +0 -0
  32. {npcsh-1.0.36.dist-info → npcsh-1.0.37.dist-info}/entry_points.txt +0 -0
  33. {npcsh-1.0.36.dist-info → npcsh-1.0.37.dist-info}/licenses/LICENSE +0 -0
  34. {npcsh-1.0.36.dist-info → npcsh-1.0.37.dist-info}/top_level.txt +0 -0
npcsh/_state.py CHANGED
@@ -2458,18 +2458,10 @@ def setup_shell() -> Tuple[CommandHistory, Team, Optional[NPC]]:
2458
2458
 
2459
2459
 
2460
2460
 
2461
- from npcpy.memory.memory_processor import MemoryApprovalQueue, MemoryItem, memory_approval_ui
2461
+ from npcpy.memory.memory_processor import memory_approval_ui
2462
2462
  from npcpy.ft.memory_trainer import MemoryTrainer
2463
2463
  from npcpy.llm_funcs import get_facts
2464
2464
 
2465
- _memory_queue = None
2466
-
2467
- def get_memory_queue(command_history):
2468
- global _memory_queue
2469
- if _memory_queue is None:
2470
- _memory_queue = MemoryApprovalQueue(command_history)
2471
- _memory_queue.start_background_processing()
2472
- return _memory_queue
2473
2465
 
2474
2466
  def format_memory_context(memory_examples):
2475
2467
  if not memory_examples:
npcsh/mcp_server.py CHANGED
@@ -14,6 +14,7 @@ from typing import Optional, Dict, Any, List, Union, Callable
14
14
  from mcp.server.fastmcp import FastMCP
15
15
  import importlib
16
16
 
17
+ from sqlalchemy import text
17
18
 
18
19
 
19
20
  import os
@@ -46,14 +47,129 @@ mcp = FastMCP("npcsh_mcp")
46
47
  DEFAULT_WORKSPACE = os.path.join(os.getcwd(), "workspace")
47
48
  os.makedirs(DEFAULT_WORKSPACE, exist_ok=True)
48
49
 
50
+ @mcp.tool()
51
+ async def add_memory(
52
+ npc_name: str,
53
+ team_name: str,
54
+ content: str,
55
+ memory_type: str = "observation",
56
+ directory_path: str = None
57
+ ) -> str:
58
+ """
59
+ Add a memory entry to the database.
60
+
61
+ Args:
62
+ npc_name: Name of the NPC this memory belongs to
63
+ team_name: Name of the team the NPC belongs to
64
+ content: The memory content to store
65
+ memory_type: Type of memory (observation, preference, achievement, etc.)
66
+ directory_path: Directory path context (defaults to current working directory)
67
+
68
+ Returns:
69
+ Success message with memory ID or error message
70
+ """
71
+ if directory_path is None:
72
+ directory_path = os.getcwd()
73
+
74
+ try:
75
+ from npcpy.memory.command_history import generate_message_id
76
+ message_id = generate_message_id()
77
+
78
+ memory_id = command_history.add_memory_to_database(
79
+ message_id=message_id,
80
+ conversation_id='mcp_direct',
81
+ npc=npc_name,
82
+ team=team_name,
83
+ directory_path=directory_path,
84
+ initial_memory=content,
85
+ status='active',
86
+ model=None,
87
+ provider=None
88
+ )
89
+ return f"Memory created successfully with ID: {memory_id}"
90
+ except Exception as e:
91
+ return f"Error creating memory: {str(e)}"
49
92
 
50
93
  @mcp.tool()
51
- async def run_server_command(command: str) -> str:
94
+ async def search_memory(
95
+ query: str,
96
+ npc_name: str = None,
97
+ team_name: str = None,
98
+ directory_path: str = None,
99
+ status_filter: str = None,
100
+ limit: int = 10
101
+ ) -> str:
102
+ """
103
+ Search memories in the database.
104
+
105
+ Args:
106
+ query: Search query text
107
+ npc_name: Filter by specific NPC (optional)
108
+ team_name: Filter by specific team (optional)
109
+ directory_path: Filter by directory path (optional)
110
+ status_filter: Filter by memory status (active, archived, etc.)
111
+ limit: Maximum number of results to return
112
+
113
+ Returns:
114
+ JSON string of matching memories or error message
115
+ """
116
+ if directory_path is None:
117
+ directory_path = os.getcwd()
118
+
119
+ try:
120
+ results = command_history.search_memory(
121
+ query=query,
122
+ npc=npc_name,
123
+ team=team_name,
124
+ directory_path=directory_path,
125
+ status_filter=status_filter,
126
+ limit=limit
127
+ )
128
+ return json.dumps(results, indent=2)
129
+ except Exception as e:
130
+ return f"Error searching memories: {str(e)}"
131
+
132
+ @mcp.tool()
133
+ async def query_npcsh_database(sql_query: str) -> str:
134
+ """
135
+ Execute a SQL query against the npcsh_history.db database.
136
+
137
+ Args:
138
+ sql_query: SQL query to execute (SELECT statements only for safety)
139
+
140
+ Returns:
141
+ JSON string of query results or error message
142
+ """
143
+ # Safety check - only allow SELECT queries
144
+ if not sql_query.strip().upper().startswith('SELECT'):
145
+ return "Error: Only SELECT queries are allowed for safety"
146
+
147
+ try:
148
+ with command_history.engine.connect() as conn:
149
+ result = conn.execute(text(sql_query))
150
+ rows = result.fetchall()
151
+
152
+ if not rows:
153
+ return "Query executed successfully but returned no results"
154
+
155
+ # Convert to list of dictionaries
156
+ columns = result.keys()
157
+ results = []
158
+ for row in rows:
159
+ row_dict = dict(zip(columns, row))
160
+ results.append(row_dict)
161
+
162
+ return json.dumps(results, indent=2, default=str)
163
+ except Exception as e:
164
+ return f"Database query error: {str(e)}"
165
+ @mcp.tool()
166
+ async def run_server_command(command: str, wd: str) -> str:
52
167
  """
53
168
  Run a terminal command in the workspace.
54
169
 
55
170
  Args:
56
171
  command: The shell command to run
172
+ wd: The working directory to run the command in
57
173
 
58
174
  Returns:
59
175
  The command output or an error message.
@@ -61,7 +177,7 @@ async def run_server_command(command: str) -> str:
61
177
  try:
62
178
  result = subprocess.run(
63
179
  command,
64
- cwd=DEFAULT_WORKSPACE,
180
+ cwd=wd,
65
181
  shell=True,
66
182
  capture_output=True,
67
183
  text=True,
@@ -147,11 +263,7 @@ print("Loading tools from npcpy modules...")
147
263
 
148
264
 
149
265
  def register_selected_npcpy_tools():
150
- tools = [generate_group_candidates,
151
- abstract,
152
- extract_facts,
153
- zoom_in,
154
- execute_llm_command,
266
+ tools = [
155
267
  gen_image,
156
268
  load_file_contents,
157
269
  capture_screenshot,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: npcsh
3
- Version: 1.0.36
3
+ Version: 1.0.37
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
@@ -1,10 +1,10 @@
1
1
  npcsh/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- npcsh/_state.py,sha256=96NR32dMOytt1XIUvvO4CGODx3i4hMnaPJ-IlMJAMUE,93032
2
+ npcsh/_state.py,sha256=hnfHtcc1dbkTLYllTY-vkvqsk--YJrcCuv8HbOFDC1k,92746
3
3
  npcsh/alicanto.py,sha256=xcYlKZY6_NcnPUADosGKRuY5SVeZ_4msw82-fE2JZN8,42117
4
4
  npcsh/corca.py,sha256=PasQqTEZ8OS1JD2Ow5qclGmCcsl89Ju9jK78bLPmbcA,54435
5
5
  npcsh/guac.py,sha256=sVdLYVkzkQw6TE7crtLUX0QJZFkzQthWZTe1p7IfAQE,80412
6
6
  npcsh/mcp_helpers.py,sha256=9TsCfcquGu_vX4WaKlY3J3P13-uxruQKrXng-jJ5YyY,11176
7
- npcsh/mcp_server.py,sha256=krc1rhiSU9gI76w99Ph3Mk7OyUVzfiEXKMvVid-7-Ik,5201
7
+ npcsh/mcp_server.py,sha256=Lfpabnwi_xu0UudJxQ_YNyyCn2f0_JjzorhWmIeclwY,8777
8
8
  npcsh/npc.py,sha256=OjCDu03hAcXyqPbzMeBBr1cBnmQsB1FBhd7kLNsWALc,8330
9
9
  npcsh/npcsh.py,sha256=3WLkZxHGzRekVGxHiJUA4VFyhC3A1jwX11aB0kgzE9s,8818
10
10
  npcsh/plonk.py,sha256=IfOuiE5FBvk-EIsrWFjGy0SrNywDpn4a49E7seBtEmY,14246
@@ -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.36.data/data/npcsh/npc_team/alicanto.npc,sha256=y9yDY3lq8ZwxQxpnrgle8w5IJwZqvxDepZFU4OaZCtg,148
43
- npcsh-1.0.36.data/data/npcsh/npc_team/alicanto.png,sha256=A7xeMbcoKGjlkELxJEVifCEZLVWbOKZarTN5ZFJG-FM,3519858
44
- npcsh-1.0.36.data/data/npcsh/npc_team/bash_executer.jinx,sha256=C_oQccOY8cKevMMPLRdznlMOccQvLgyzyOIThXvmrD8,692
45
- npcsh-1.0.36.data/data/npcsh/npc_team/corca.npc,sha256=HI3Bs6KlUBPMz7icF1TRE8-V3f3EdU_VxvQxEpru3L4,662
46
- npcsh-1.0.36.data/data/npcsh/npc_team/corca.png,sha256=0lF70hKu6tY-37YmIPVF2cuaPzvnQ4-UtQOzuAbKEf4,1666776
47
- npcsh-1.0.36.data/data/npcsh/npc_team/edit_file.jinx,sha256=4PaJs8g_cdeDpbQwQSBycU5RDA0rczEC_NpLfLjo74Y,3490
48
- npcsh-1.0.36.data/data/npcsh/npc_team/foreman.npc,sha256=WqB8jLfBToGmr8c1vip1KOnTHxfXlGXwDUGnZoDMQr0,327
49
- npcsh-1.0.36.data/data/npcsh/npc_team/frederic.npc,sha256=EE2dOUItp-VKuW3ZMSHffmIEO4evjPcU2W_C4P3WXbY,362
50
- npcsh-1.0.36.data/data/npcsh/npc_team/frederic4.png,sha256=ll8uoV0npnPp5HVJWv7h0xDSeuq4pqsk_gYGBHLS0VY,1590744
51
- npcsh-1.0.36.data/data/npcsh/npc_team/guac.png,sha256=MCE7eJuEJwLJEzc9FS7lL62Mm-38jQRHkxXogPfOTuw,211470
52
- npcsh-1.0.36.data/data/npcsh/npc_team/image_generation.jinx,sha256=bQxZdEm0_eqvf_OJSHw3qarp8Klp3LlBDv1_HY3COo4,1307
53
- npcsh-1.0.36.data/data/npcsh/npc_team/internet_search.jinx,sha256=s8zVxwKFUAof_VzQrwB5dpAQdeJ6hUBkbIdRsT-I5mo,1267
54
- npcsh-1.0.36.data/data/npcsh/npc_team/kadiefa.npc,sha256=Yl5a4wrfe4F2f6Ndw_ukzlVVX7NE9g_mG-3QqJSkg_o,381
55
- npcsh-1.0.36.data/data/npcsh/npc_team/kadiefa.png,sha256=3CAwL8crKIwJko6o75Z6OYYEEM9Rk--yGzCJg7zoszg,3062528
56
- npcsh-1.0.36.data/data/npcsh/npc_team/npcsh.ctx,sha256=-jKYaPm2YbZHAGgWAXhyPIwhiNe1H1ZRFg1Zc7tHSxk,1049
57
- npcsh-1.0.36.data/data/npcsh/npc_team/npcsh_sibiji.png,sha256=9fUqgYMsSHmaH-kBTBQ7N5UCS5-eLZF94Log0O3mtFg,4544
58
- npcsh-1.0.36.data/data/npcsh/npc_team/plonk.npc,sha256=u1m2a1D512XGQ2kC3eWDAY8Y2IvpkNU73DI_CPE65UE,90
59
- npcsh-1.0.36.data/data/npcsh/npc_team/plonk.png,sha256=IU5ey-Dl4HEKlwnf75RSWNSHpF8rVqGmdbsa0deL4rQ,2727773
60
- npcsh-1.0.36.data/data/npcsh/npc_team/plonkjr.npc,sha256=It-i-BEuG0XddKk0d85onk2aJr9Pe5pLnJzNaCWaQIM,87
61
- npcsh-1.0.36.data/data/npcsh/npc_team/plonkjr.png,sha256=MqLEGwsyECUeODZIti0HQQrMMVxA6XERpW01R06NbpY,2606710
62
- npcsh-1.0.36.data/data/npcsh/npc_team/python_executor.jinx,sha256=vZz3pZaj1BnPFHMs_wpyjRc0b32JR4rLhZfulCMDF1s,398
63
- npcsh-1.0.36.data/data/npcsh/npc_team/screen_cap.jinx,sha256=-4DG0EiEe61N_kMhVqqHKhLVGOLuZQT9ax6IZk20NjI,960
64
- npcsh-1.0.36.data/data/npcsh/npc_team/sibiji.npc,sha256=Hb4wXKIObKKgibwnio5hLec9yd_9bKDCA87Nm2zijFA,216
65
- npcsh-1.0.36.data/data/npcsh/npc_team/sibiji.png,sha256=1dlZb7J3E62FcVo9CVOzLb8nu1bIUV7cr97nsFocHCM,35615
66
- npcsh-1.0.36.data/data/npcsh/npc_team/spool.png,sha256=LWTLkwDxXBfLuSUCX32_lo5yAmLYGsA67Xpsz-7MmWU,2876725
67
- npcsh-1.0.36.data/data/npcsh/npc_team/yap.png,sha256=_l7UbWnXJdsy4Mx-x5l9DT0R6ize3HTnkwQQnOFlI18,1548649
68
- npcsh-1.0.36.dist-info/licenses/LICENSE,sha256=IKBvAECHP-aCiJtE4cHGCE5Yl0tozYz02PomGeWS3y4,1070
69
- npcsh-1.0.36.dist-info/METADATA,sha256=PU22LzEtIdClDgg_fCnc9yRRU-5c8E9CaR54AZs1d9A,25486
70
- npcsh-1.0.36.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
71
- npcsh-1.0.36.dist-info/entry_points.txt,sha256=S5yIuGm8ZXQ4siHYgN5gs0J7bxgobSEULXf8L5HaW5o,206
72
- npcsh-1.0.36.dist-info/top_level.txt,sha256=kHSNgKMCkfjV95-DH0YSp1LLBi0HXdF3w57j7MQON3E,6
73
- npcsh-1.0.36.dist-info/RECORD,,
42
+ npcsh-1.0.37.data/data/npcsh/npc_team/alicanto.npc,sha256=y9yDY3lq8ZwxQxpnrgle8w5IJwZqvxDepZFU4OaZCtg,148
43
+ npcsh-1.0.37.data/data/npcsh/npc_team/alicanto.png,sha256=A7xeMbcoKGjlkELxJEVifCEZLVWbOKZarTN5ZFJG-FM,3519858
44
+ npcsh-1.0.37.data/data/npcsh/npc_team/bash_executer.jinx,sha256=C_oQccOY8cKevMMPLRdznlMOccQvLgyzyOIThXvmrD8,692
45
+ npcsh-1.0.37.data/data/npcsh/npc_team/corca.npc,sha256=HI3Bs6KlUBPMz7icF1TRE8-V3f3EdU_VxvQxEpru3L4,662
46
+ npcsh-1.0.37.data/data/npcsh/npc_team/corca.png,sha256=0lF70hKu6tY-37YmIPVF2cuaPzvnQ4-UtQOzuAbKEf4,1666776
47
+ npcsh-1.0.37.data/data/npcsh/npc_team/edit_file.jinx,sha256=4PaJs8g_cdeDpbQwQSBycU5RDA0rczEC_NpLfLjo74Y,3490
48
+ npcsh-1.0.37.data/data/npcsh/npc_team/foreman.npc,sha256=WqB8jLfBToGmr8c1vip1KOnTHxfXlGXwDUGnZoDMQr0,327
49
+ npcsh-1.0.37.data/data/npcsh/npc_team/frederic.npc,sha256=EE2dOUItp-VKuW3ZMSHffmIEO4evjPcU2W_C4P3WXbY,362
50
+ npcsh-1.0.37.data/data/npcsh/npc_team/frederic4.png,sha256=ll8uoV0npnPp5HVJWv7h0xDSeuq4pqsk_gYGBHLS0VY,1590744
51
+ npcsh-1.0.37.data/data/npcsh/npc_team/guac.png,sha256=MCE7eJuEJwLJEzc9FS7lL62Mm-38jQRHkxXogPfOTuw,211470
52
+ npcsh-1.0.37.data/data/npcsh/npc_team/image_generation.jinx,sha256=bQxZdEm0_eqvf_OJSHw3qarp8Klp3LlBDv1_HY3COo4,1307
53
+ npcsh-1.0.37.data/data/npcsh/npc_team/internet_search.jinx,sha256=s8zVxwKFUAof_VzQrwB5dpAQdeJ6hUBkbIdRsT-I5mo,1267
54
+ npcsh-1.0.37.data/data/npcsh/npc_team/kadiefa.npc,sha256=Yl5a4wrfe4F2f6Ndw_ukzlVVX7NE9g_mG-3QqJSkg_o,381
55
+ npcsh-1.0.37.data/data/npcsh/npc_team/kadiefa.png,sha256=3CAwL8crKIwJko6o75Z6OYYEEM9Rk--yGzCJg7zoszg,3062528
56
+ npcsh-1.0.37.data/data/npcsh/npc_team/npcsh.ctx,sha256=-jKYaPm2YbZHAGgWAXhyPIwhiNe1H1ZRFg1Zc7tHSxk,1049
57
+ npcsh-1.0.37.data/data/npcsh/npc_team/npcsh_sibiji.png,sha256=9fUqgYMsSHmaH-kBTBQ7N5UCS5-eLZF94Log0O3mtFg,4544
58
+ npcsh-1.0.37.data/data/npcsh/npc_team/plonk.npc,sha256=u1m2a1D512XGQ2kC3eWDAY8Y2IvpkNU73DI_CPE65UE,90
59
+ npcsh-1.0.37.data/data/npcsh/npc_team/plonk.png,sha256=IU5ey-Dl4HEKlwnf75RSWNSHpF8rVqGmdbsa0deL4rQ,2727773
60
+ npcsh-1.0.37.data/data/npcsh/npc_team/plonkjr.npc,sha256=It-i-BEuG0XddKk0d85onk2aJr9Pe5pLnJzNaCWaQIM,87
61
+ npcsh-1.0.37.data/data/npcsh/npc_team/plonkjr.png,sha256=MqLEGwsyECUeODZIti0HQQrMMVxA6XERpW01R06NbpY,2606710
62
+ npcsh-1.0.37.data/data/npcsh/npc_team/python_executor.jinx,sha256=vZz3pZaj1BnPFHMs_wpyjRc0b32JR4rLhZfulCMDF1s,398
63
+ npcsh-1.0.37.data/data/npcsh/npc_team/screen_cap.jinx,sha256=-4DG0EiEe61N_kMhVqqHKhLVGOLuZQT9ax6IZk20NjI,960
64
+ npcsh-1.0.37.data/data/npcsh/npc_team/sibiji.npc,sha256=Hb4wXKIObKKgibwnio5hLec9yd_9bKDCA87Nm2zijFA,216
65
+ npcsh-1.0.37.data/data/npcsh/npc_team/sibiji.png,sha256=1dlZb7J3E62FcVo9CVOzLb8nu1bIUV7cr97nsFocHCM,35615
66
+ npcsh-1.0.37.data/data/npcsh/npc_team/spool.png,sha256=LWTLkwDxXBfLuSUCX32_lo5yAmLYGsA67Xpsz-7MmWU,2876725
67
+ npcsh-1.0.37.data/data/npcsh/npc_team/yap.png,sha256=_l7UbWnXJdsy4Mx-x5l9DT0R6ize3HTnkwQQnOFlI18,1548649
68
+ npcsh-1.0.37.dist-info/licenses/LICENSE,sha256=IKBvAECHP-aCiJtE4cHGCE5Yl0tozYz02PomGeWS3y4,1070
69
+ npcsh-1.0.37.dist-info/METADATA,sha256=lezLVDdmsKF9bKJUnCL3KdnbNa-Wks1brSYT2Dj_mso,25486
70
+ npcsh-1.0.37.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
71
+ npcsh-1.0.37.dist-info/entry_points.txt,sha256=S5yIuGm8ZXQ4siHYgN5gs0J7bxgobSEULXf8L5HaW5o,206
72
+ npcsh-1.0.37.dist-info/top_level.txt,sha256=kHSNgKMCkfjV95-DH0YSp1LLBi0HXdF3w57j7MQON3E,6
73
+ npcsh-1.0.37.dist-info/RECORD,,
File without changes