npcsh 1.1.15__tar.gz → 1.1.16__tar.gz

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 (106) hide show
  1. npcsh-1.1.16/MANIFEST.in +2 -0
  2. {npcsh-1.1.15 → npcsh-1.1.16}/PKG-INFO +1 -1
  3. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/_state.py +45 -3
  4. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh.egg-info/PKG-INFO +1 -1
  5. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh.egg-info/SOURCES.txt +1 -0
  6. {npcsh-1.1.15 → npcsh-1.1.16}/setup.py +23 -2
  7. {npcsh-1.1.15 → npcsh-1.1.16}/LICENSE +0 -0
  8. {npcsh-1.1.15 → npcsh-1.1.16}/README.md +0 -0
  9. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/__init__.py +0 -0
  10. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/alicanto.py +0 -0
  11. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/build.py +0 -0
  12. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/completion.py +0 -0
  13. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/config.py +0 -0
  14. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/corca.py +0 -0
  15. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/execution.py +0 -0
  16. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/guac.py +0 -0
  17. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/mcp_helpers.py +0 -0
  18. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/mcp_server.py +0 -0
  19. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc.py +0 -0
  20. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/alicanto.npc +0 -0
  21. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/alicanto.png +0 -0
  22. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/corca.npc +0 -0
  23. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/corca.png +0 -0
  24. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/corca_example.png +0 -0
  25. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/frederic.npc +0 -0
  26. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/frederic4.png +0 -0
  27. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/guac.npc +0 -0
  28. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/guac.png +0 -0
  29. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/jinxs/bin/nql.jinx +0 -0
  30. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/jinxs/bin/roll.jinx +0 -0
  31. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/jinxs/bin/sample.jinx +0 -0
  32. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/jinxs/bin/spool.jinx +0 -0
  33. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/jinxs/bin/sync.jinx +0 -0
  34. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/jinxs/bin/vixynt.jinx +0 -0
  35. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/jinxs/bin/wander.jinx +0 -0
  36. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/jinxs/bin/yap.jinx +0 -0
  37. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/jinxs/lib/browser/browser_action.jinx +0 -0
  38. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/jinxs/lib/browser/browser_screenshot.jinx +0 -0
  39. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/jinxs/lib/browser/close_browser.jinx +0 -0
  40. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/jinxs/lib/browser/open_browser.jinx +0 -0
  41. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/jinxs/lib/computer_use/click.jinx +0 -0
  42. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/jinxs/lib/computer_use/key_press.jinx +0 -0
  43. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/jinxs/lib/computer_use/launch_app.jinx +0 -0
  44. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/jinxs/lib/computer_use/screenshot.jinx +0 -0
  45. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/jinxs/lib/computer_use/trigger.jinx +0 -0
  46. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/jinxs/lib/computer_use/type_text.jinx +0 -0
  47. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/jinxs/lib/computer_use/wait.jinx +0 -0
  48. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/jinxs/lib/core/chat.jinx +0 -0
  49. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/jinxs/lib/core/cmd.jinx +0 -0
  50. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/jinxs/lib/core/compress.jinx +0 -0
  51. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/jinxs/lib/core/edit_file.jinx +0 -0
  52. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/jinxs/lib/core/load_file.jinx +0 -0
  53. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/jinxs/lib/core/ots.jinx +0 -0
  54. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/jinxs/lib/core/paste.jinx +0 -0
  55. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/jinxs/lib/core/python.jinx +0 -0
  56. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/jinxs/lib/core/search.jinx +0 -0
  57. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/jinxs/lib/core/sh.jinx +0 -0
  58. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/jinxs/lib/core/sleep.jinx +0 -0
  59. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/jinxs/lib/core/sql.jinx +0 -0
  60. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/jinxs/lib/orchestration/convene.jinx +0 -0
  61. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/jinxs/lib/orchestration/delegate.jinx +0 -0
  62. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/jinxs/lib/research/arxiv.jinx +0 -0
  63. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/jinxs/lib/research/paper_search.jinx +0 -0
  64. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/jinxs/lib/research/semantic_scholar.jinx +0 -0
  65. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/jinxs/lib/utils/build.jinx +0 -0
  66. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/jinxs/lib/utils/compile.jinx +0 -0
  67. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/jinxs/lib/utils/help.jinx +0 -0
  68. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/jinxs/lib/utils/init.jinx +0 -0
  69. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/jinxs/lib/utils/jinxs.jinx +0 -0
  70. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/jinxs/lib/utils/serve.jinx +0 -0
  71. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/jinxs/lib/utils/set.jinx +0 -0
  72. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/jinxs/lib/utils/shh.jinx +0 -0
  73. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/jinxs/lib/utils/switch.jinx +0 -0
  74. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/jinxs/lib/utils/switches.jinx +0 -0
  75. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/jinxs/lib/utils/teamviz.jinx +0 -0
  76. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/jinxs/lib/utils/usage.jinx +0 -0
  77. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/jinxs/lib/utils/verbose.jinx +0 -0
  78. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/jinxs/npc_studio/npc-studio.jinx +0 -0
  79. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/kadiefa.npc +0 -0
  80. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/kadiefa.png +0 -0
  81. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/npcsh.ctx +0 -0
  82. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/npcsh_sibiji.png +0 -0
  83. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/plonk.npc +0 -0
  84. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/plonk.png +0 -0
  85. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/plonkjr.npc +0 -0
  86. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/plonkjr.png +0 -0
  87. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/sibiji.npc +0 -0
  88. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/sibiji.png +0 -0
  89. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/spool.png +0 -0
  90. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npc_team/yap.png +0 -0
  91. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/npcsh.py +0 -0
  92. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/parsing.py +0 -0
  93. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/plonk.py +0 -0
  94. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/pti.py +0 -0
  95. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/routes.py +0 -0
  96. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/spool.py +0 -0
  97. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/ui.py +0 -0
  98. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/wander.py +0 -0
  99. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh/yap.py +0 -0
  100. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh.egg-info/dependency_links.txt +0 -0
  101. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh.egg-info/entry_points.txt +0 -0
  102. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh.egg-info/requires.txt +0 -0
  103. {npcsh-1.1.15 → npcsh-1.1.16}/npcsh.egg-info/top_level.txt +0 -0
  104. {npcsh-1.1.15 → npcsh-1.1.16}/project/__init__.py +0 -0
  105. {npcsh-1.1.15 → npcsh-1.1.16}/setup.cfg +0 -0
  106. {npcsh-1.1.15 → npcsh-1.1.16}/tests/test_tool_routing.py +0 -0
@@ -0,0 +1,2 @@
1
+ recursive-include npcsh/npc_team *
2
+ include npcsh/npc_team/**/*
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: npcsh
3
- Version: 1.1.15
3
+ Version: 1.1.16
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
@@ -368,10 +368,27 @@ def initialize_base_npcs_if_needed(db_path: str) -> None:
368
368
  """
369
369
  )
370
370
 
371
- # Package directories
372
- package_dir = os.path.dirname(__file__)
371
+ # Package directories - use helper that handles PyInstaller bundles
372
+ package_dir = get_package_dir()
373
373
  package_npc_team_dir = os.path.join(package_dir, "npc_team")
374
374
 
375
+ # Debug logging for package path resolution
376
+ if os.environ.get("NPCSH_DEBUG", "0") == "1":
377
+ print(f"[DEBUG] Package dir: {package_dir}")
378
+ print(f"[DEBUG] Package npc_team dir: {package_npc_team_dir}")
379
+ print(f"[DEBUG] npc_team exists: {os.path.exists(package_npc_team_dir)}")
380
+ if os.path.exists(package_npc_team_dir):
381
+ print(f"[DEBUG] npc_team contents: {os.listdir(package_npc_team_dir)}")
382
+
383
+ if not os.path.exists(package_npc_team_dir):
384
+ print(f"Warning: Package npc_team directory not found at {package_npc_team_dir}")
385
+ # For bundled executables, try to find it
386
+ if getattr(sys, 'frozen', False):
387
+ print(f"Running as frozen executable, _MEIPASS: {getattr(sys, '_MEIPASS', 'N/A')}")
388
+ if hasattr(sys, '_MEIPASS'):
389
+ print(f"Contents of _MEIPASS: {os.listdir(sys._MEIPASS)}")
390
+ return
391
+
375
392
  user_npc_team_dir = os.path.expanduser("~/.npcsh/npc_team")
376
393
 
377
394
  user_jinxs_dir = os.path.join(user_npc_team_dir, "jinxs")
@@ -1121,6 +1138,31 @@ def set_npcsh_initialized() -> None:
1121
1138
 
1122
1139
 
1123
1140
 
1141
+ def get_package_dir() -> str:
1142
+ """
1143
+ Get the package directory, handling both normal Python and PyInstaller executables.
1144
+
1145
+ For normal Python: returns os.path.dirname(__file__)
1146
+ For PyInstaller: returns the bundled data directory (sys._MEIPASS/npcsh)
1147
+ """
1148
+ # Check if running as a PyInstaller bundle
1149
+ if getattr(sys, 'frozen', False) and hasattr(sys, '_MEIPASS'):
1150
+ # Running as PyInstaller bundle - look for npcsh folder in _MEIPASS
1151
+ meipass = sys._MEIPASS
1152
+ # The package data should be at _MEIPASS/npcsh (based on PyInstaller config)
1153
+ bundled_path = os.path.join(meipass, 'npcsh')
1154
+ if os.path.exists(bundled_path):
1155
+ return bundled_path
1156
+ # Fallback: check if npc_team is directly in _MEIPASS
1157
+ if os.path.exists(os.path.join(meipass, 'npc_team')):
1158
+ return meipass
1159
+ # Last resort: return meipass and let caller handle
1160
+ return meipass
1161
+ else:
1162
+ # Normal Python execution
1163
+ return os.path.dirname(__file__)
1164
+
1165
+
1124
1166
  def file_has_changed(source_path: str, destination_path: str) -> bool:
1125
1167
  """
1126
1168
  Function Description:
@@ -1134,7 +1176,7 @@ def file_has_changed(source_path: str, destination_path: str) -> bool:
1134
1176
  A boolean indicating whether the files are different
1135
1177
  """
1136
1178
 
1137
-
1179
+
1138
1180
  return not filecmp.cmp(source_path, destination_path, shallow=False)
1139
1181
 
1140
1182
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: npcsh
3
- Version: 1.1.15
3
+ Version: 1.1.16
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,4 +1,5 @@
1
1
  LICENSE
2
+ MANIFEST.in
2
3
  README.md
3
4
  setup.py
4
5
  npcsh/__init__.py
@@ -92,16 +92,28 @@ voice_requirements = [
92
92
 
93
93
  extra_files = package_files("npcsh/npc_team/")
94
94
 
95
+ # Build package_data dict for npc_team files
96
+ def get_package_data_patterns():
97
+ """Get patterns for all files in npc_team directory."""
98
+ patterns = []
99
+ npc_team_path = Path(__file__).parent / "npcsh" / "npc_team"
100
+ if npc_team_path.exists():
101
+ for root, dirs, files in os.walk(npc_team_path):
102
+ rel_root = os.path.relpath(root, Path(__file__).parent / "npcsh")
103
+ for f in files:
104
+ patterns.append(os.path.join(rel_root, f))
105
+ return patterns
106
+
95
107
  setup(
96
108
  name="npcsh",
97
- version="1.1.15",
109
+ version="1.1.16",
98
110
  packages=find_packages(exclude=["tests*"]),
99
111
  install_requires=base_requirements, # Only install base requirements by default
100
112
  extras_require={
101
113
  "lite": api_requirements,
102
114
  "local": local_requirements,
103
115
  "yap": voice_requirements,
104
- "all": api_requirements + local_requirements + voice_requirements ,
116
+ "all": api_requirements + local_requirements + voice_requirements ,
105
117
  },
106
118
  entry_points={
107
119
  "console_scripts": [
@@ -122,6 +134,15 @@ setup(
122
134
  "License :: OSI Approved :: MIT License",
123
135
  ],
124
136
  include_package_data=True,
137
+ package_data={
138
+ "npcsh": [
139
+ "npc_team/*.npc",
140
+ "npc_team/*.ctx",
141
+ "npc_team/jinxs/**/*.jinx",
142
+ "npc_team/jinxs/**/*",
143
+ "npc_team/templates/*",
144
+ ],
145
+ },
125
146
  data_files=[("npcsh/npc_team", extra_files)],
126
147
  python_requires=">=3.10",
127
148
  )
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes