npcsh 1.1.16__py3-none-any.whl → 1.1.18__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 (217) hide show
  1. npcsh/_state.py +138 -100
  2. npcsh/alicanto.py +2 -2
  3. npcsh/benchmark/__init__.py +28 -0
  4. npcsh/benchmark/npcsh_agent.py +296 -0
  5. npcsh/benchmark/runner.py +611 -0
  6. npcsh/benchmark/templates/install-npcsh.sh.j2 +35 -0
  7. npcsh/build.py +2 -4
  8. npcsh/completion.py +2 -6
  9. npcsh/config.py +1 -3
  10. npcsh/conversation_viewer.py +389 -0
  11. npcsh/corca.py +0 -1
  12. npcsh/execution.py +0 -1
  13. npcsh/guac.py +0 -1
  14. npcsh/mcp_helpers.py +2 -3
  15. npcsh/mcp_server.py +5 -10
  16. npcsh/npc.py +10 -11
  17. npcsh/npc_team/jinxs/bin/benchmark.jinx +146 -0
  18. npcsh/npc_team/jinxs/bin/nql.jinx +7 -7
  19. npcsh/npc_team/jinxs/bin/roll.jinx +20 -23
  20. npcsh/npc_team/jinxs/bin/sample.jinx +6 -7
  21. npcsh/npc_team/jinxs/bin/sync.jinx +6 -6
  22. npcsh/npc_team/jinxs/bin/vixynt.jinx +8 -8
  23. npcsh/npc_team/jinxs/incognide/add_tab.jinx +11 -0
  24. npcsh/npc_team/jinxs/incognide/close_pane.jinx +9 -0
  25. npcsh/npc_team/jinxs/incognide/close_tab.jinx +10 -0
  26. npcsh/npc_team/jinxs/incognide/confirm.jinx +10 -0
  27. npcsh/npc_team/jinxs/incognide/focus_pane.jinx +9 -0
  28. npcsh/npc_team/jinxs/{npc_studio/npc-studio.jinx → incognide/incognide.jinx} +2 -2
  29. npcsh/npc_team/jinxs/incognide/list_panes.jinx +8 -0
  30. npcsh/npc_team/jinxs/incognide/navigate.jinx +10 -0
  31. npcsh/npc_team/jinxs/incognide/notify.jinx +10 -0
  32. npcsh/npc_team/jinxs/incognide/open_pane.jinx +13 -0
  33. npcsh/npc_team/jinxs/incognide/read_pane.jinx +9 -0
  34. npcsh/npc_team/jinxs/incognide/run_terminal.jinx +10 -0
  35. npcsh/npc_team/jinxs/incognide/send_message.jinx +10 -0
  36. npcsh/npc_team/jinxs/incognide/split_pane.jinx +12 -0
  37. npcsh/npc_team/jinxs/incognide/switch_npc.jinx +10 -0
  38. npcsh/npc_team/jinxs/incognide/switch_tab.jinx +10 -0
  39. npcsh/npc_team/jinxs/incognide/write_file.jinx +11 -0
  40. npcsh/npc_team/jinxs/incognide/zen_mode.jinx +9 -0
  41. npcsh/npc_team/jinxs/lib/browser/browser_action.jinx +4 -4
  42. npcsh/npc_team/jinxs/lib/browser/browser_screenshot.jinx +1 -1
  43. npcsh/npc_team/jinxs/lib/browser/open_browser.jinx +2 -2
  44. npcsh/npc_team/jinxs/lib/computer_use/click.jinx +2 -2
  45. npcsh/npc_team/jinxs/lib/computer_use/key_press.jinx +1 -1
  46. npcsh/npc_team/jinxs/lib/computer_use/launch_app.jinx +1 -1
  47. npcsh/npc_team/jinxs/lib/computer_use/screenshot.jinx +1 -1
  48. npcsh/npc_team/jinxs/lib/computer_use/trigger.jinx +2 -2
  49. npcsh/npc_team/jinxs/lib/computer_use/type_text.jinx +1 -1
  50. npcsh/npc_team/jinxs/lib/computer_use/wait.jinx +1 -1
  51. npcsh/npc_team/jinxs/lib/core/chat.jinx +4 -4
  52. npcsh/npc_team/jinxs/lib/core/cmd.jinx +4 -4
  53. npcsh/npc_team/jinxs/lib/core/compress.jinx +8 -8
  54. npcsh/npc_team/jinxs/lib/core/edit_file.jinx +3 -0
  55. npcsh/npc_team/jinxs/lib/core/ots.jinx +7 -7
  56. npcsh/npc_team/jinxs/lib/core/search/db_search.jinx +348 -0
  57. npcsh/npc_team/jinxs/lib/core/search/file_search.jinx +339 -0
  58. npcsh/npc_team/jinxs/lib/core/search/kg_search.jinx +418 -0
  59. npcsh/npc_team/jinxs/lib/core/search/mem_review.jinx +73 -0
  60. npcsh/npc_team/jinxs/lib/core/search/mem_search.jinx +388 -0
  61. npcsh/npc_team/jinxs/lib/core/search/web_search.jinx +283 -0
  62. npcsh/npc_team/jinxs/lib/core/search.jinx +52 -129
  63. npcsh/npc_team/jinxs/lib/core/sh.jinx +1 -1
  64. npcsh/npc_team/jinxs/lib/core/sleep.jinx +29 -18
  65. npcsh/npc_team/jinxs/lib/core/sql.jinx +15 -11
  66. npcsh/npc_team/jinxs/lib/orchestration/convene.jinx +7 -7
  67. npcsh/npc_team/jinxs/lib/orchestration/delegate.jinx +8 -9
  68. npcsh/npc_team/jinxs/lib/research/paper_search.jinx +389 -78
  69. npcsh/npc_team/jinxs/lib/research/semantic_scholar.jinx +373 -56
  70. npcsh/npc_team/jinxs/lib/utils/build.jinx +5 -5
  71. npcsh/npc_team/jinxs/lib/utils/compile.jinx +2 -2
  72. npcsh/npc_team/jinxs/lib/utils/help.jinx +1 -1
  73. npcsh/npc_team/jinxs/lib/utils/init.jinx +5 -5
  74. npcsh/npc_team/jinxs/lib/utils/jinxs.jinx +300 -145
  75. npcsh/npc_team/jinxs/lib/utils/serve.jinx +2 -2
  76. npcsh/npc_team/jinxs/lib/utils/set.jinx +2 -2
  77. npcsh/npc_team/jinxs/lib/utils/switch.jinx +3 -3
  78. npcsh/npc_team/jinxs/lib/utils/switches.jinx +1 -1
  79. npcsh/npc_team/jinxs/lib/utils/teamviz.jinx +2 -2
  80. npcsh/npc_team/jinxs/modes/alicanto.jinx +356 -0
  81. npcsh/npc_team/jinxs/modes/arxiv.jinx +720 -0
  82. npcsh/npc_team/jinxs/modes/corca.jinx +430 -0
  83. npcsh/npc_team/jinxs/modes/guac.jinx +544 -0
  84. npcsh/npc_team/jinxs/modes/plonk.jinx +379 -0
  85. npcsh/npc_team/jinxs/modes/pti.jinx +357 -0
  86. npcsh/npc_team/jinxs/modes/reattach.jinx +291 -0
  87. npcsh/npc_team/jinxs/modes/spool.jinx +350 -0
  88. npcsh/npc_team/jinxs/modes/wander.jinx +455 -0
  89. {npcsh-1.1.16.data/data/npcsh/npc_team → npcsh/npc_team/jinxs/modes}/yap.jinx +8 -2
  90. npcsh/npc_team/sibiji.npc +1 -1
  91. npcsh/npcsh.py +87 -46
  92. npcsh/plonk.py +0 -1
  93. npcsh/pti.py +0 -1
  94. npcsh/routes.py +1 -3
  95. npcsh/spool.py +0 -1
  96. npcsh/ui.py +0 -1
  97. npcsh/wander.py +0 -1
  98. npcsh/yap.py +0 -1
  99. npcsh-1.1.18.data/data/npcsh/npc_team/add_tab.jinx +11 -0
  100. npcsh-1.1.18.data/data/npcsh/npc_team/alicanto.jinx +356 -0
  101. npcsh-1.1.18.data/data/npcsh/npc_team/arxiv.jinx +720 -0
  102. npcsh-1.1.18.data/data/npcsh/npc_team/benchmark.jinx +146 -0
  103. {npcsh-1.1.16.data → npcsh-1.1.18.data}/data/npcsh/npc_team/browser_action.jinx +4 -4
  104. {npcsh-1.1.16.data → npcsh-1.1.18.data}/data/npcsh/npc_team/browser_screenshot.jinx +1 -1
  105. {npcsh-1.1.16.data → npcsh-1.1.18.data}/data/npcsh/npc_team/build.jinx +5 -5
  106. {npcsh-1.1.16.data → npcsh-1.1.18.data}/data/npcsh/npc_team/chat.jinx +4 -4
  107. {npcsh-1.1.16.data → npcsh-1.1.18.data}/data/npcsh/npc_team/click.jinx +2 -2
  108. npcsh-1.1.18.data/data/npcsh/npc_team/close_pane.jinx +9 -0
  109. npcsh-1.1.18.data/data/npcsh/npc_team/close_tab.jinx +10 -0
  110. {npcsh-1.1.16.data → npcsh-1.1.18.data}/data/npcsh/npc_team/cmd.jinx +4 -4
  111. {npcsh-1.1.16.data → npcsh-1.1.18.data}/data/npcsh/npc_team/compile.jinx +2 -2
  112. {npcsh-1.1.16.data → npcsh-1.1.18.data}/data/npcsh/npc_team/compress.jinx +8 -8
  113. npcsh-1.1.18.data/data/npcsh/npc_team/confirm.jinx +10 -0
  114. {npcsh-1.1.16.data → npcsh-1.1.18.data}/data/npcsh/npc_team/convene.jinx +7 -7
  115. npcsh-1.1.18.data/data/npcsh/npc_team/corca.jinx +430 -0
  116. npcsh-1.1.18.data/data/npcsh/npc_team/db_search.jinx +348 -0
  117. {npcsh-1.1.16.data → npcsh-1.1.18.data}/data/npcsh/npc_team/delegate.jinx +8 -9
  118. {npcsh-1.1.16.data → npcsh-1.1.18.data}/data/npcsh/npc_team/edit_file.jinx +3 -0
  119. npcsh-1.1.18.data/data/npcsh/npc_team/file_search.jinx +339 -0
  120. npcsh-1.1.18.data/data/npcsh/npc_team/focus_pane.jinx +9 -0
  121. npcsh-1.1.18.data/data/npcsh/npc_team/guac.jinx +544 -0
  122. {npcsh-1.1.16.data → npcsh-1.1.18.data}/data/npcsh/npc_team/help.jinx +1 -1
  123. npcsh-1.1.16.data/data/npcsh/npc_team/npc-studio.jinx → npcsh-1.1.18.data/data/npcsh/npc_team/incognide.jinx +2 -2
  124. {npcsh-1.1.16.data → npcsh-1.1.18.data}/data/npcsh/npc_team/init.jinx +5 -5
  125. npcsh-1.1.18.data/data/npcsh/npc_team/jinxs.jinx +331 -0
  126. {npcsh-1.1.16.data → npcsh-1.1.18.data}/data/npcsh/npc_team/key_press.jinx +1 -1
  127. npcsh-1.1.18.data/data/npcsh/npc_team/kg_search.jinx +418 -0
  128. {npcsh-1.1.16.data → npcsh-1.1.18.data}/data/npcsh/npc_team/launch_app.jinx +1 -1
  129. npcsh-1.1.18.data/data/npcsh/npc_team/list_panes.jinx +8 -0
  130. npcsh-1.1.18.data/data/npcsh/npc_team/mem_review.jinx +73 -0
  131. npcsh-1.1.18.data/data/npcsh/npc_team/mem_search.jinx +388 -0
  132. npcsh-1.1.18.data/data/npcsh/npc_team/navigate.jinx +10 -0
  133. npcsh-1.1.18.data/data/npcsh/npc_team/notify.jinx +10 -0
  134. {npcsh-1.1.16.data → npcsh-1.1.18.data}/data/npcsh/npc_team/nql.jinx +7 -7
  135. {npcsh-1.1.16.data → npcsh-1.1.18.data}/data/npcsh/npc_team/open_browser.jinx +2 -2
  136. npcsh-1.1.18.data/data/npcsh/npc_team/open_pane.jinx +13 -0
  137. {npcsh-1.1.16.data → npcsh-1.1.18.data}/data/npcsh/npc_team/ots.jinx +7 -7
  138. npcsh-1.1.18.data/data/npcsh/npc_team/paper_search.jinx +412 -0
  139. npcsh-1.1.18.data/data/npcsh/npc_team/plonk.jinx +379 -0
  140. npcsh-1.1.18.data/data/npcsh/npc_team/pti.jinx +357 -0
  141. npcsh-1.1.18.data/data/npcsh/npc_team/read_pane.jinx +9 -0
  142. npcsh-1.1.18.data/data/npcsh/npc_team/reattach.jinx +291 -0
  143. {npcsh-1.1.16.data → npcsh-1.1.18.data}/data/npcsh/npc_team/roll.jinx +20 -23
  144. npcsh-1.1.18.data/data/npcsh/npc_team/run_terminal.jinx +10 -0
  145. {npcsh-1.1.16.data → npcsh-1.1.18.data}/data/npcsh/npc_team/sample.jinx +6 -7
  146. {npcsh-1.1.16.data → npcsh-1.1.18.data}/data/npcsh/npc_team/screenshot.jinx +1 -1
  147. npcsh-1.1.18.data/data/npcsh/npc_team/search.jinx +54 -0
  148. npcsh-1.1.18.data/data/npcsh/npc_team/semantic_scholar.jinx +386 -0
  149. npcsh-1.1.18.data/data/npcsh/npc_team/send_message.jinx +10 -0
  150. {npcsh-1.1.16.data → npcsh-1.1.18.data}/data/npcsh/npc_team/serve.jinx +2 -2
  151. {npcsh-1.1.16.data → npcsh-1.1.18.data}/data/npcsh/npc_team/set.jinx +2 -2
  152. {npcsh-1.1.16.data → npcsh-1.1.18.data}/data/npcsh/npc_team/sh.jinx +1 -1
  153. {npcsh-1.1.16.data → npcsh-1.1.18.data}/data/npcsh/npc_team/sibiji.npc +1 -1
  154. {npcsh-1.1.16.data → npcsh-1.1.18.data}/data/npcsh/npc_team/sleep.jinx +29 -18
  155. npcsh-1.1.18.data/data/npcsh/npc_team/split_pane.jinx +12 -0
  156. npcsh-1.1.18.data/data/npcsh/npc_team/spool.jinx +350 -0
  157. npcsh-1.1.18.data/data/npcsh/npc_team/sql.jinx +20 -0
  158. {npcsh-1.1.16.data → npcsh-1.1.18.data}/data/npcsh/npc_team/switch.jinx +3 -3
  159. npcsh-1.1.18.data/data/npcsh/npc_team/switch_npc.jinx +10 -0
  160. npcsh-1.1.18.data/data/npcsh/npc_team/switch_tab.jinx +10 -0
  161. {npcsh-1.1.16.data → npcsh-1.1.18.data}/data/npcsh/npc_team/switches.jinx +1 -1
  162. {npcsh-1.1.16.data → npcsh-1.1.18.data}/data/npcsh/npc_team/sync.jinx +6 -6
  163. {npcsh-1.1.16.data → npcsh-1.1.18.data}/data/npcsh/npc_team/teamviz.jinx +2 -2
  164. {npcsh-1.1.16.data → npcsh-1.1.18.data}/data/npcsh/npc_team/trigger.jinx +2 -2
  165. {npcsh-1.1.16.data → npcsh-1.1.18.data}/data/npcsh/npc_team/type_text.jinx +1 -1
  166. {npcsh-1.1.16.data → npcsh-1.1.18.data}/data/npcsh/npc_team/vixynt.jinx +8 -8
  167. {npcsh-1.1.16.data → npcsh-1.1.18.data}/data/npcsh/npc_team/wait.jinx +1 -1
  168. npcsh-1.1.18.data/data/npcsh/npc_team/wander.jinx +455 -0
  169. npcsh-1.1.18.data/data/npcsh/npc_team/web_search.jinx +283 -0
  170. npcsh-1.1.18.data/data/npcsh/npc_team/write_file.jinx +11 -0
  171. {npcsh/npc_team/jinxs/bin → npcsh-1.1.18.data/data/npcsh/npc_team}/yap.jinx +8 -2
  172. npcsh-1.1.18.data/data/npcsh/npc_team/zen_mode.jinx +9 -0
  173. {npcsh-1.1.16.dist-info → npcsh-1.1.18.dist-info}/METADATA +99 -7
  174. npcsh-1.1.18.dist-info/RECORD +235 -0
  175. {npcsh-1.1.16.dist-info → npcsh-1.1.18.dist-info}/WHEEL +1 -1
  176. {npcsh-1.1.16.dist-info → npcsh-1.1.18.dist-info}/entry_points.txt +2 -3
  177. npcsh/npc_team/jinxs/bin/spool.jinx +0 -161
  178. npcsh/npc_team/jinxs/bin/wander.jinx +0 -152
  179. npcsh/npc_team/jinxs/lib/research/arxiv.jinx +0 -76
  180. npcsh-1.1.16.data/data/npcsh/npc_team/arxiv.jinx +0 -76
  181. npcsh-1.1.16.data/data/npcsh/npc_team/jinxs.jinx +0 -176
  182. npcsh-1.1.16.data/data/npcsh/npc_team/paper_search.jinx +0 -101
  183. npcsh-1.1.16.data/data/npcsh/npc_team/search.jinx +0 -131
  184. npcsh-1.1.16.data/data/npcsh/npc_team/semantic_scholar.jinx +0 -69
  185. npcsh-1.1.16.data/data/npcsh/npc_team/spool.jinx +0 -161
  186. npcsh-1.1.16.data/data/npcsh/npc_team/sql.jinx +0 -16
  187. npcsh-1.1.16.data/data/npcsh/npc_team/wander.jinx +0 -152
  188. npcsh-1.1.16.dist-info/RECORD +0 -170
  189. {npcsh-1.1.16.data → npcsh-1.1.18.data}/data/npcsh/npc_team/alicanto.npc +0 -0
  190. {npcsh-1.1.16.data → npcsh-1.1.18.data}/data/npcsh/npc_team/alicanto.png +0 -0
  191. {npcsh-1.1.16.data → npcsh-1.1.18.data}/data/npcsh/npc_team/close_browser.jinx +0 -0
  192. {npcsh-1.1.16.data → npcsh-1.1.18.data}/data/npcsh/npc_team/corca.npc +0 -0
  193. {npcsh-1.1.16.data → npcsh-1.1.18.data}/data/npcsh/npc_team/corca.png +0 -0
  194. {npcsh-1.1.16.data → npcsh-1.1.18.data}/data/npcsh/npc_team/corca_example.png +0 -0
  195. {npcsh-1.1.16.data → npcsh-1.1.18.data}/data/npcsh/npc_team/frederic.npc +0 -0
  196. {npcsh-1.1.16.data → npcsh-1.1.18.data}/data/npcsh/npc_team/frederic4.png +0 -0
  197. {npcsh-1.1.16.data → npcsh-1.1.18.data}/data/npcsh/npc_team/guac.npc +0 -0
  198. {npcsh-1.1.16.data → npcsh-1.1.18.data}/data/npcsh/npc_team/guac.png +0 -0
  199. {npcsh-1.1.16.data → npcsh-1.1.18.data}/data/npcsh/npc_team/kadiefa.npc +0 -0
  200. {npcsh-1.1.16.data → npcsh-1.1.18.data}/data/npcsh/npc_team/kadiefa.png +0 -0
  201. {npcsh-1.1.16.data → npcsh-1.1.18.data}/data/npcsh/npc_team/load_file.jinx +0 -0
  202. {npcsh-1.1.16.data → npcsh-1.1.18.data}/data/npcsh/npc_team/npcsh.ctx +0 -0
  203. {npcsh-1.1.16.data → npcsh-1.1.18.data}/data/npcsh/npc_team/npcsh_sibiji.png +0 -0
  204. {npcsh-1.1.16.data → npcsh-1.1.18.data}/data/npcsh/npc_team/paste.jinx +0 -0
  205. {npcsh-1.1.16.data → npcsh-1.1.18.data}/data/npcsh/npc_team/plonk.npc +0 -0
  206. {npcsh-1.1.16.data → npcsh-1.1.18.data}/data/npcsh/npc_team/plonk.png +0 -0
  207. {npcsh-1.1.16.data → npcsh-1.1.18.data}/data/npcsh/npc_team/plonkjr.npc +0 -0
  208. {npcsh-1.1.16.data → npcsh-1.1.18.data}/data/npcsh/npc_team/plonkjr.png +0 -0
  209. {npcsh-1.1.16.data → npcsh-1.1.18.data}/data/npcsh/npc_team/python.jinx +0 -0
  210. {npcsh-1.1.16.data → npcsh-1.1.18.data}/data/npcsh/npc_team/shh.jinx +0 -0
  211. {npcsh-1.1.16.data → npcsh-1.1.18.data}/data/npcsh/npc_team/sibiji.png +0 -0
  212. {npcsh-1.1.16.data → npcsh-1.1.18.data}/data/npcsh/npc_team/spool.png +0 -0
  213. {npcsh-1.1.16.data → npcsh-1.1.18.data}/data/npcsh/npc_team/usage.jinx +0 -0
  214. {npcsh-1.1.16.data → npcsh-1.1.18.data}/data/npcsh/npc_team/verbose.jinx +0 -0
  215. {npcsh-1.1.16.data → npcsh-1.1.18.data}/data/npcsh/npc_team/yap.png +0 -0
  216. {npcsh-1.1.16.dist-info → npcsh-1.1.18.dist-info}/licenses/LICENSE +0 -0
  217. {npcsh-1.1.16.dist-info → npcsh-1.1.18.dist-info}/top_level.txt +0 -0
@@ -1,161 +0,0 @@
1
- jinx_name: spool
2
- description: Interactive chat mode - simple conversational interface with an NPC
3
- inputs:
4
- - model: null
5
- - provider: null
6
- - attachments: null
7
- - stream: true
8
-
9
- steps:
10
- - name: spool_repl
11
- engine: python
12
- code: |
13
- import os
14
- import sys
15
- from termcolor import colored
16
-
17
- from npcpy.llm_funcs import get_llm_response
18
- from npcpy.npc_sysenv import get_system_message, render_markdown
19
- from npcpy.data.load import load_file_contents
20
- from npcpy.data.text import rag_search
21
-
22
- npc = context.get('npc')
23
- team = context.get('team')
24
- messages = context.get('messages', [])
25
- stream = context.get('stream', True)
26
- attachments = context.get('attachments')
27
-
28
- # Use NPC's model/provider or fallback
29
- model = context.get('model') or (npc.model if npc else None)
30
- provider = context.get('provider') or (npc.provider if npc else None)
31
-
32
- # ASCII art
33
- print("""
34
- _____ ____ ____ ____ _
35
- / ___/| _ \ / __ \ / __ \| |
36
- \___ \| |_) | | | | | | | |
37
- ___) | __/| | | | | | | |___
38
- |____/|_| \____/ \____/|_____|
39
- """)
40
-
41
- npc_name = npc.name if npc else "chat"
42
- print(f"Entering spool mode (NPC: {npc_name}). Type '/sq' to exit.")
43
-
44
- # Load attachments if provided
45
- loaded_chunks = {}
46
- if attachments:
47
- if isinstance(attachments, str):
48
- attachments = [f.strip() for f in attachments.split(',')]
49
- for file_path in attachments:
50
- file_path = os.path.expanduser(file_path)
51
- if os.path.exists(file_path):
52
- try:
53
- chunks = load_file_contents(file_path)
54
- loaded_chunks[file_path] = chunks
55
- print(colored(f"Loaded {len(chunks)} chunks from: {file_path}", "green"))
56
- except Exception as e:
57
- print(colored(f"Error loading {file_path}: {e}", "red"))
58
-
59
- # Ensure system message
60
- if not messages or messages[0].get("role") != "system":
61
- sys_msg = get_system_message(npc) if npc else "You are a helpful assistant."
62
- messages.insert(0, {"role": "system", "content": sys_msg})
63
-
64
- # REPL loop
65
- while True:
66
- try:
67
- prompt_str = f"{npc_name}> "
68
- user_input = input(prompt_str).strip()
69
-
70
- if not user_input:
71
- continue
72
-
73
- if user_input.lower() == "/sq":
74
- print("Exiting spool mode.")
75
- break
76
-
77
- # Handle /ots for screenshots inline
78
- if user_input.startswith("/ots"):
79
- from npcpy.data.image import capture_screenshot
80
- parts = user_input.split()
81
- image_paths = []
82
- if len(parts) > 1:
83
- for p in parts[1:]:
84
- fp = os.path.expanduser(p)
85
- if os.path.exists(fp):
86
- image_paths.append(fp)
87
- else:
88
- ss = capture_screenshot()
89
- if ss and "file_path" in ss:
90
- image_paths.append(ss["file_path"])
91
- print(colored(f"Screenshot: {ss['filename']}", "green"))
92
-
93
- if image_paths:
94
- vision_prompt = input("Prompt for image(s): ").strip() or "Describe these images."
95
- resp = get_llm_response(
96
- vision_prompt,
97
- model=npc.vision_model if hasattr(npc, 'vision_model') else model,
98
- provider=npc.vision_provider if hasattr(npc, 'vision_provider') else provider,
99
- messages=messages,
100
- images=image_paths,
101
- stream=stream,
102
- npc=npc
103
- )
104
- messages = resp.get('messages', messages)
105
- render_markdown(str(resp.get('response', '')))
106
- continue
107
-
108
- # Add RAG context if files loaded
109
- current_prompt = user_input
110
- if loaded_chunks:
111
- context_content = ""
112
- for filename, chunks in loaded_chunks.items():
113
- full_text = "\n".join(chunks)
114
- retrieved = rag_search(user_input, full_text, similarity_threshold=0.3)
115
- if retrieved:
116
- context_content += f"\n\nContext from {filename}:\n{retrieved}\n"
117
- if context_content:
118
- current_prompt += f"\n\n--- Relevant context ---{context_content}"
119
-
120
- # Get response
121
- resp = get_llm_response(
122
- current_prompt,
123
- model=model,
124
- provider=provider,
125
- messages=messages,
126
- stream=stream,
127
- npc=npc
128
- )
129
-
130
- messages = resp.get('messages', messages)
131
- response_text = resp.get('response', '')
132
-
133
- # Handle streaming vs non-streaming
134
- if hasattr(response_text, '__iter__') and not isinstance(response_text, str):
135
- full_response = ""
136
- for chunk in response_text:
137
- if hasattr(chunk, 'choices') and chunk.choices:
138
- delta = chunk.choices[0].delta
139
- if hasattr(delta, 'content') and delta.content:
140
- print(delta.content, end='', flush=True)
141
- full_response += delta.content
142
- print()
143
- else:
144
- render_markdown(str(response_text))
145
-
146
- # Track usage if available
147
- if 'usage' in resp and npc and hasattr(npc, 'shared_context'):
148
- usage = resp['usage']
149
- npc.shared_context['session_input_tokens'] += usage.get('input_tokens', 0)
150
- npc.shared_context['session_output_tokens'] += usage.get('output_tokens', 0)
151
- npc.shared_context['turn_count'] += 1
152
-
153
- except KeyboardInterrupt:
154
- print("\nUse '/sq' to exit or continue.")
155
- continue
156
- except EOFError:
157
- print("\nExiting spool mode.")
158
- break
159
-
160
- context['output'] = "Exited spool mode."
161
- context['messages'] = messages
@@ -1,16 +0,0 @@
1
- jinx_name: sql
2
- description: Execute queries on the ~/npcsh_history.db to pull data. The database
3
- contains only information about conversations and other user-provided data. It does
4
- not store any information about individual files. Avoid using percent signs unless absolutely necessary.
5
- inputs:
6
- - sql_query
7
- steps:
8
- - engine: python
9
- code: |
10
- import pandas as pd
11
- query = {{ sql_query | tojson }}
12
- try:
13
- df = pd.read_sql_query(query, npc.db_conn)
14
- except Exception as e:
15
- df = pd.DataFrame({'Error': [str(e)]})
16
- output = df.to_string()
@@ -1,152 +0,0 @@
1
- jinx_name: wander
2
- description: Creative daydreaming with probabilistic temperature shifts mid-stream
3
- inputs:
4
- - problem
5
- steps:
6
- - name: wander_explore
7
- engine: python
8
- code: |
9
- import random
10
- from termcolor import colored
11
- from npcpy.llm_funcs import get_llm_response
12
-
13
- problem = context.get('problem', '')
14
- if not problem:
15
- context['output'] = "Need a topic to wander about."
16
- exit()
17
-
18
- model = 'gpt-4.1-nano'
19
- provider = 'openai'
20
- low_temp = 0.5
21
- high_temp = 1.9
22
- sample_rate = 0.4
23
- interrupt_prob = 0.02
24
-
25
- print(f"""
26
- ██╗ ██╗ █████╗ ███╗ ██╗██████╗ ███████╗██████╗
27
- ██║ ██║██╔══██╗████╗ ██║██╔══██╗██╔════╝██╔══██╗
28
- ██║ █╗ ██║███████║██╔██╗ ██║██║ ██║█████╗ ██████╔╝
29
- ██║███╗██║██╔══██║██║╚██╗██║██║ ██║██╔══╝ ██╔══██╗
30
- ╚███╔███╔╝██║ ██║██║ ╚████║██████╔╝███████╗██║ ██║
31
- ╚══╝╚══╝ ╚═╝ ╚═╝╚═╝ ╚═══╝╚═════╝ ╚══════╝╚═╝ ╚═╝
32
-
33
- Wandering: {problem}
34
- """)
35
-
36
- print(colored(f"--- Low temp stream ({low_temp}) ---", "cyan"))
37
-
38
- low_prompt = f"Think about: {problem}"
39
- resp = get_llm_response(low_prompt, model=model, provider=provider, temperature=low_temp, stream=True)
40
-
41
- # Get the actual stream from the response
42
- stream = resp.get('response') if isinstance(resp, dict) else resp
43
-
44
- low_output = ""
45
- interrupted = False
46
-
47
- for chunk in stream:
48
- if hasattr(chunk, 'choices') and chunk.choices:
49
- delta = chunk.choices[0].delta
50
- text = getattr(delta, 'content', '') or ''
51
- elif isinstance(chunk, dict):
52
- text = chunk.get('content', '') or chunk.get('response', '')
53
- else:
54
- text = ''
55
-
56
- if text:
57
- print(text, end='', flush=True)
58
- low_output += text
59
-
60
- if random.random() < interrupt_prob:
61
- print(colored("\n[INTERRUPT]", "yellow"))
62
- interrupted = True
63
- break
64
-
65
- print()
66
-
67
- print(colored(f"\n--- High temp stream ({high_temp}) ---", "cyan"))
68
-
69
- high_prompt = f"{low_output}\n\nContinue:"
70
- resp = get_llm_response(high_prompt, model=model, provider=provider, temperature=high_temp, stream=True)
71
- stream = resp.get('response') if isinstance(resp, dict) else resp
72
-
73
- high_output = ""
74
- for chunk in stream:
75
- if hasattr(chunk, 'choices') and chunk.choices:
76
- delta = chunk.choices[0].delta
77
- text = getattr(delta, 'content', '') or ''
78
- elif isinstance(chunk, dict):
79
- text = chunk.get('content', '') or chunk.get('response', '')
80
- else:
81
- text = ''
82
-
83
- if text:
84
- print(text, end='', flush=True)
85
- high_output += text
86
-
87
- print()
88
-
89
- lines = [l for l in high_output.split('\n') if l.strip()]
90
- sample_size = max(1, int(len(lines) * sample_rate))
91
- sampled = random.sample(lines, sample_size) if lines else [high_output]
92
-
93
- print(colored("\n=== SAMPLED INSIGHTS ===", "yellow"))
94
- fragments_text = chr(10).join(sampled)
95
- print(fragments_text)
96
-
97
- print(colored("\n=== SYNTHESIS ===", "green"))
98
-
99
- synthesis_prompt = f"""You are a mad scientist oracle. The gibberish below contains hidden truths.
100
-
101
- QUESTION: {problem}
102
-
103
- CHAOS FRAGMENTS:
104
- {fragments_text}
105
-
106
- RULES:
107
- 1. You MUST use AT LEAST HALF of the fragments above - quote them directly
108
- 2. Make WILD CREATIVE LEAPS - not academic, not safe, not obvious
109
- 3. Find patterns in the noise like reading entrails or tea leaves
110
- 4. Foreign text, Unicode garbage, code snippets - ALL are omens with meaning
111
- 5. Puns, wordplay, phonetic similarities - all valid connections
112
- 6. The weirder the connection, the better
113
- 7. NO HEDGING. No "this suggests" or "perhaps". Be BOLD. Be CERTAIN.
114
-
115
- OUTPUT 3 WILD HYPOTHESES:
116
- For each: Quote the fragments you're using -> Make your creative leap -> State the bold claim
117
-
118
- These must be ideas that COULD NOT exist without this specific chaos. Surprise us. Make us see {problem} in a way nobody has before."""
119
-
120
- resp = get_llm_response(synthesis_prompt, model=model, provider=provider, temperature=0.5, stream=True)
121
- stream = resp.get('response') if isinstance(resp, dict) else resp
122
-
123
- synthesis = ""
124
- for chunk in stream:
125
- if hasattr(chunk, 'choices') and chunk.choices:
126
- delta = chunk.choices[0].delta
127
- text = getattr(delta, 'content', '') or ''
128
- elif isinstance(chunk, dict):
129
- text = chunk.get('content', '') or chunk.get('response', '')
130
- else:
131
- text = ''
132
-
133
- if text:
134
- print(text, end='', flush=True)
135
- synthesis += text
136
-
137
- print()
138
-
139
- full_output = f"""Wandering: {problem}
140
-
141
- --- Low temp stream ({low_temp}) ---
142
- {low_output}
143
-
144
- --- High temp stream ({high_temp}) ---
145
- {high_output}
146
-
147
- === SAMPLED INSIGHTS ===
148
- {fragments_text}
149
-
150
- === SYNTHESIS ===
151
- {synthesis}"""
152
- context['output'] = full_output
@@ -1,170 +0,0 @@
1
- npcsh/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- npcsh/_state.py,sha256=FB4oDy8x4Z03zYjJtz967JWLapd0rGipAOGZWCwIp88,150595
3
- npcsh/alicanto.py,sha256=SXxpT525cOje1J60OMwpaEdWfyPVTEecl_dTVpOvUYQ,2415
4
- npcsh/build.py,sha256=UuId0_rQml40A4U1KuvMekRyfB30s8HiLsXFJjqrBmM,7692
5
- npcsh/completion.py,sha256=iX7JDBGC_Tiutr3Iux5zB6eHKu2bLsJfv9Klln0iUq8,5666
6
- npcsh/config.py,sha256=1m5WNft9PbAlDCTMmnA_tI27UracAvME7MCC9udBvMg,5541
7
- npcsh/corca.py,sha256=zZRcW_EDoVsz6Xhyos1dlOgk7oNF2-bJvHraLGLj8pc,1568
8
- npcsh/execution.py,sha256=sgM6HwAfGnattdItKtNpzvQJhhDh5ro2mPfp2swFbys,5270
9
- npcsh/guac.py,sha256=nU33ONVP4He0ak9kKP1sJLsoMBm0Zl8q0Zp7h17Ev1E,1342
10
- npcsh/mcp_helpers.py,sha256=9TsCfcquGu_vX4WaKlY3J3P13-uxruQKrXng-jJ5YyY,11176
11
- npcsh/mcp_server.py,sha256=O-cuk1XAqWqIpkEy2ESxQgMjsBfloMzRqecRz4wCk1I,8763
12
- npcsh/npc.py,sha256=vyfoiUbZ_tziiE4Sx5fpLXZpirtXwzWgyiUWHqH-xsM,11623
13
- npcsh/npcsh.py,sha256=wtf2mTEle04QF3856CsOg8PJO4b7rB12MPNUm1ZkFTk,16638
14
- npcsh/parsing.py,sha256=eGATFUkDvHu5pVbh0RswhWEmGjcIsLaDwgxTtPbC9sk,2943
15
- npcsh/plonk.py,sha256=34ORKsIFkIK9BK5nNM4KQRprA-RVXe1vLk_vHNK4wmI,1725
16
- npcsh/pti.py,sha256=zTqE6bH4H_QOqJ4zQbC4-vT_dm7TE9iUIqTbIGb_bxY,1783
17
- npcsh/routes.py,sha256=27rZUwiMK12WuFEDOxLL_F_F8GjmHlFBxKQRuvElrHI,4967
18
- npcsh/spool.py,sha256=G0Sc_veJVKqoEdeOCTkBfAwFSHIMK5oAwYel1rr463A,1508
19
- npcsh/ui.py,sha256=wnjFCDFkMslCgE2BwS3Ug1OBlI-Po87iQflJAinA7Fk,7295
20
- npcsh/wander.py,sha256=CRQ8eCaIckJL21wLCXTjj5f0bnVmUEK_vHipFGKghGs,2288
21
- npcsh/yap.py,sha256=jvGHHaFfPgQheLwWC_ORn63eGDPOq9vZCh-OBaSeu3A,1593
22
- npcsh/npc_team/alicanto.npc,sha256=MjCeCKhC4OqKO0Rxa5U_SLEui7Lh8M2hXabcVfqEDhc,1455
23
- npcsh/npc_team/alicanto.png,sha256=A7xeMbcoKGjlkELxJEVifCEZLVWbOKZarTN5ZFJG-FM,3519858
24
- npcsh/npc_team/corca.npc,sha256=Iu9bRD_OFVYQVyn0PLB_Kp91qzcHiHyo7VwmkXz2S-0,1667
25
- npcsh/npc_team/corca.png,sha256=0lF70hKu6tY-37YmIPVF2cuaPzvnQ4-UtQOzuAbKEf4,1666776
26
- npcsh/npc_team/corca_example.png,sha256=p0lVTuwaps4-F-3k4wgp9d897YPyn6FGZugtXMUQjj8,28777
27
- npcsh/npc_team/frederic.npc,sha256=1-TcFRWm5RsSnLoeZG_SN4JUU0Ynu6CzV-h6Wfasjto,1945
28
- npcsh/npc_team/frederic4.png,sha256=ll8uoV0npnPp5HVJWv7h0xDSeuq4pqsk_gYGBHLS0VY,1590744
29
- npcsh/npc_team/guac.npc,sha256=bOMEMXxvL4B-xdGqtq7hWf_gZpdMlo4OqER7c9iBsiM,797
30
- npcsh/npc_team/guac.png,sha256=MCE7eJuEJwLJEzc9FS7lL62Mm-38jQRHkxXogPfOTuw,211470
31
- npcsh/npc_team/kadiefa.npc,sha256=tg9YZ3dTlXS8CIEb544G5UYvGndPhgdlQoLWRV5j-JY,1758
32
- npcsh/npc_team/kadiefa.png,sha256=3CAwL8crKIwJko6o75Z6OYYEEM9Rk--yGzCJg7zoszg,3062528
33
- npcsh/npc_team/npcsh.ctx,sha256=-jKYaPm2YbZHAGgWAXhyPIwhiNe1H1ZRFg1Zc7tHSxk,1049
34
- npcsh/npc_team/npcsh_sibiji.png,sha256=9fUqgYMsSHmaH-kBTBQ7N5UCS5-eLZF94Log0O3mtFg,4544
35
- npcsh/npc_team/plonk.npc,sha256=z2fd5U0qaymiqHvkunQxCGQ1N2Mx6DMeErcltrJWrqw,1341
36
- npcsh/npc_team/plonk.png,sha256=IU5ey-Dl4HEKlwnf75RSWNSHpF8rVqGmdbsa0deL4rQ,2727773
37
- npcsh/npc_team/plonkjr.npc,sha256=umvWEigYLJBzzqSpF70lbf75612q8LxxGeYHT1Oq21Q,1568
38
- npcsh/npc_team/plonkjr.png,sha256=MqLEGwsyECUeODZIti0HQQrMMVxA6XERpW01R06NbpY,2606710
39
- npcsh/npc_team/sibiji.npc,sha256=I2fJsYPi7SUPLErczT6vwWl1p00FpuRYyx6r5Ljjyt4,1542
40
- npcsh/npc_team/sibiji.png,sha256=1dlZb7J3E62FcVo9CVOzLb8nu1bIUV7cr97nsFocHCM,35615
41
- npcsh/npc_team/spool.png,sha256=LWTLkwDxXBfLuSUCX32_lo5yAmLYGsA67Xpsz-7MmWU,2876725
42
- npcsh/npc_team/yap.png,sha256=_l7UbWnXJdsy4Mx-x5l9DT0R6ize3HTnkwQQnOFlI18,1548649
43
- npcsh/npc_team/jinxs/bin/nql.jinx,sha256=xTAFs44JFvu4XCqoqyypaujNU1BsDf2VL_2MO9arEc0,5576
44
- npcsh/npc_team/jinxs/bin/roll.jinx,sha256=RhYhDDdyKcWjVhVSU7dX_DMn5s4rz-nY6pXmtr6tytM,2908
45
- npcsh/npc_team/jinxs/bin/sample.jinx,sha256=7cWwfAZFgWxaTkIL1gpFFryQ3mjvVjoWYAov-zOFn_E,2237
46
- npcsh/npc_team/jinxs/bin/spool.jinx,sha256=MLmqcnsytTQjektI7feD9bwUu3m-plPme1tRM6_zO6M,6446
47
- npcsh/npc_team/jinxs/bin/sync.jinx,sha256=rAhh2S5IeK9kzmpYJ-qdSVgagFv9wlZjMZ6pnn_ZLj4,8569
48
- npcsh/npc_team/jinxs/bin/vixynt.jinx,sha256=p6r_yuUr5DYrDOEueuNnlqaf74ydllTuZ686slRHKmA,4300
49
- npcsh/npc_team/jinxs/bin/wander.jinx,sha256=cFEacTTjMY_FZfWlR7ydSStcpPEN3T9119dGdny9tZA,5620
50
- npcsh/npc_team/jinxs/bin/yap.jinx,sha256=EU_10qxp-GIaCUfJo0sldl4N4989yd5tysfr4J_8biw,9596
51
- npcsh/npc_team/jinxs/lib/browser/browser_action.jinx,sha256=EXM-SYtla0UPjGlnUuccOc-Xp4i07Qo7Mu-mWtLZvIk,9261
52
- npcsh/npc_team/jinxs/lib/browser/browser_screenshot.jinx,sha256=syV-OhZi--tVFQnj0KDZbwxk9IB78EZar1sh-c1ruP0,1168
53
- npcsh/npc_team/jinxs/lib/browser/close_browser.jinx,sha256=D0-sIQCTt3TEnUpr6SIWuhQOkJ6eyzhJnvYtYqbg1UM,322
54
- npcsh/npc_team/jinxs/lib/browser/open_browser.jinx,sha256=AfZ7GSkBOKEmqYHOuJ1KsUh7OlTivBmCPbiIZ_VOwy8,1660
55
- npcsh/npc_team/jinxs/lib/computer_use/click.jinx,sha256=86rCXMATlgWPC0MieNyP9SUjC8eb-pE8R-4YXm06mK8,665
56
- npcsh/npc_team/jinxs/lib/computer_use/key_press.jinx,sha256=zXdJuOGm3Vkyf2cZH1G28J-ZxfqhIpYBDqqrYRPLPL4,834
57
- npcsh/npc_team/jinxs/lib/computer_use/launch_app.jinx,sha256=mvLGmHkKZTQAXc4uhSlxJfHzdt3CgDcETSf65kTgO1U,1245
58
- npcsh/npc_team/jinxs/lib/computer_use/screenshot.jinx,sha256=a4tEC7l72srWbrUU_vyZzWrZl2SNaU0wnQFMTAMQLuA,695
59
- npcsh/npc_team/jinxs/lib/computer_use/trigger.jinx,sha256=YVFPEH6mT9HiAyfPZOCcBpKB033g6K4QCJO0sfgKSQA,2458
60
- npcsh/npc_team/jinxs/lib/computer_use/type_text.jinx,sha256=0093dk1X1DSaE8LANzn_JA1i07MLqI9NHa3a5pJPwyg,738
61
- npcsh/npc_team/jinxs/lib/computer_use/wait.jinx,sha256=Kg4AtesSduDn0bTemAxTz1XTdlY_Et0bc0OmS9wEuJ0,527
62
- npcsh/npc_team/jinxs/lib/core/chat.jinx,sha256=zSrhjm58SkcpIbHtfpWbBKWF_ha6f7HdZLkiY1Ad9Qg,1405
63
- npcsh/npc_team/jinxs/lib/core/cmd.jinx,sha256=9pRiNmSeraimszsWg3HVIqvvhe8F40JJHaSkOFhkqm8,1406
64
- npcsh/npc_team/jinxs/lib/core/compress.jinx,sha256=B2dMsT-jrMWzjQfMhRIuO7afgqj7MJngshz5DBMmu7s,6834
65
- npcsh/npc_team/jinxs/lib/core/edit_file.jinx,sha256=VJ3NogMh_zcX-VH_R5MwqS9ypSFhWqpD8uaQZsnY-A8,3545
66
- npcsh/npc_team/jinxs/lib/core/load_file.jinx,sha256=Dq2982ZJkbSrM75O8YgLeGRnHdWl0AfEIYkj9RkNMLg,1271
67
- npcsh/npc_team/jinxs/lib/core/ots.jinx,sha256=DKoSVgH_ZcmOaZ2-R-Yn80KyCiYgqG25JG6e4wQwP64,2301
68
- npcsh/npc_team/jinxs/lib/core/paste.jinx,sha256=bycgMzeYFHl3-TN4YYDyasbNe22hEgFGMOmYoMWFgWI,4957
69
- npcsh/npc_team/jinxs/lib/core/python.jinx,sha256=lFJubdPVlGxSuUKCxsxjYG4_dnX2ATn8U9ChYKRmL5Q,389
70
- npcsh/npc_team/jinxs/lib/core/search.jinx,sha256=DtTiQj9ezgd4_dW3s2H9ZvgM7QVsWgMM0GuYqq7gTmI,5510
71
- npcsh/npc_team/jinxs/lib/core/sh.jinx,sha256=LeBkoJOmWY0_U-vmgVnX5yxvoMO2kSw1cr5PT4Jmlp8,846
72
- npcsh/npc_team/jinxs/lib/core/sleep.jinx,sha256=c-7Dn4aLuX7WyBVcvuk3sqcbIutqKIz1N9sBfPNzhck,5301
73
- npcsh/npc_team/jinxs/lib/core/sql.jinx,sha256=wHxvoCkEy1bZE2DPT2m_h0PXiTLtZlmax2flg-iXPdY,581
74
- npcsh/npc_team/jinxs/lib/orchestration/convene.jinx,sha256=Zg9CKDtkXe0R_xHCA2nzPMjH7_P98fjdNifuoCjPXh0,8777
75
- npcsh/npc_team/jinxs/lib/orchestration/delegate.jinx,sha256=FGi8K1vypHj25VoKAsuYgI_o2HMr8mOXLUD3IA1R0-w,8051
76
- npcsh/npc_team/jinxs/lib/research/arxiv.jinx,sha256=nhrvgSWHEQiRfX2-VYLfG1ke-oW8pvjmPmREXzPJz7A,2538
77
- npcsh/npc_team/jinxs/lib/research/paper_search.jinx,sha256=UdDKhGSeHZoFkpdgrp369w-G4MQXHJwrEYabdYxEgLA,4204
78
- npcsh/npc_team/jinxs/lib/research/semantic_scholar.jinx,sha256=SCLzeTxVNv0rcnELbT3cKSuz7SO4Rft_H6K9w9QO10k,2530
79
- npcsh/npc_team/jinxs/lib/utils/build.jinx,sha256=O45ZgI0dRn1INr5pO5H6U1rac9mT3T8aXzPYGMV-vvw,2807
80
- npcsh/npc_team/jinxs/lib/utils/compile.jinx,sha256=Rjdm5jf3ech1E3cnpLz-o2tbJuVvEoQGAp0FQRAU7qo,2526
81
- npcsh/npc_team/jinxs/lib/utils/help.jinx,sha256=OquhUEgcYZp-gu5Wgl3pOZnswxGQ96RoNG08tHjC9-4,2091
82
- npcsh/npc_team/jinxs/lib/utils/init.jinx,sha256=QBb1uOTvMlD-x3S7zPASH5TBZRwNhMQvK6t3DdC2mVw,1596
83
- npcsh/npc_team/jinxs/lib/utils/jinxs.jinx,sha256=6JKxCJX3EQj-va22ZEqR4psqRotGOqSJ-eF0Y0nH-NA,7291
84
- npcsh/npc_team/jinxs/lib/utils/serve.jinx,sha256=D-a-UafymNfAWeLW1sLM_Ef-971SF9TPcUvYu70AIlk,837
85
- npcsh/npc_team/jinxs/lib/utils/set.jinx,sha256=hQY_0muEtnWtfXsdK9cPwSvIevCimiJJn1-yhGC_VxM,1381
86
- npcsh/npc_team/jinxs/lib/utils/shh.jinx,sha256=yD-_va97JHT1MAhUvoL8w86Li9cbwi8XbswVcTRxd4U,464
87
- npcsh/npc_team/jinxs/lib/utils/switch.jinx,sha256=9RWt5jipaZr8iJXJKVHQvTLymuYwKfSjCnuUk48M-Ss,2114
88
- npcsh/npc_team/jinxs/lib/utils/switches.jinx,sha256=wXb614UdXuuO3WzIhp1_Two_DksTDUwsYHFjeZNa9wc,2214
89
- npcsh/npc_team/jinxs/lib/utils/teamviz.jinx,sha256=sg2Szrkmeg9S0AAD7EA0uWneHOcCBvSySfUnZn4Eh6k,7650
90
- npcsh/npc_team/jinxs/lib/utils/usage.jinx,sha256=40zhs19l7-16KAXHzOa8hjv7hA32ORe0F7das0TTLXY,1052
91
- npcsh/npc_team/jinxs/lib/utils/verbose.jinx,sha256=mFGLy2Azx1JXGhDOwVwd5EwJB9fxPQpk9BrP8kJ3RzE,473
92
- npcsh/npc_team/jinxs/npc_studio/npc-studio.jinx,sha256=0aY-z399BRIXIL3TLMTcYDiHjDm-krZy0CnYfiskQUo,2234
93
- npcsh-1.1.16.data/data/npcsh/npc_team/alicanto.npc,sha256=MjCeCKhC4OqKO0Rxa5U_SLEui7Lh8M2hXabcVfqEDhc,1455
94
- npcsh-1.1.16.data/data/npcsh/npc_team/alicanto.png,sha256=A7xeMbcoKGjlkELxJEVifCEZLVWbOKZarTN5ZFJG-FM,3519858
95
- npcsh-1.1.16.data/data/npcsh/npc_team/arxiv.jinx,sha256=nhrvgSWHEQiRfX2-VYLfG1ke-oW8pvjmPmREXzPJz7A,2538
96
- npcsh-1.1.16.data/data/npcsh/npc_team/browser_action.jinx,sha256=EXM-SYtla0UPjGlnUuccOc-Xp4i07Qo7Mu-mWtLZvIk,9261
97
- npcsh-1.1.16.data/data/npcsh/npc_team/browser_screenshot.jinx,sha256=syV-OhZi--tVFQnj0KDZbwxk9IB78EZar1sh-c1ruP0,1168
98
- npcsh-1.1.16.data/data/npcsh/npc_team/build.jinx,sha256=O45ZgI0dRn1INr5pO5H6U1rac9mT3T8aXzPYGMV-vvw,2807
99
- npcsh-1.1.16.data/data/npcsh/npc_team/chat.jinx,sha256=zSrhjm58SkcpIbHtfpWbBKWF_ha6f7HdZLkiY1Ad9Qg,1405
100
- npcsh-1.1.16.data/data/npcsh/npc_team/click.jinx,sha256=86rCXMATlgWPC0MieNyP9SUjC8eb-pE8R-4YXm06mK8,665
101
- npcsh-1.1.16.data/data/npcsh/npc_team/close_browser.jinx,sha256=D0-sIQCTt3TEnUpr6SIWuhQOkJ6eyzhJnvYtYqbg1UM,322
102
- npcsh-1.1.16.data/data/npcsh/npc_team/cmd.jinx,sha256=9pRiNmSeraimszsWg3HVIqvvhe8F40JJHaSkOFhkqm8,1406
103
- npcsh-1.1.16.data/data/npcsh/npc_team/compile.jinx,sha256=Rjdm5jf3ech1E3cnpLz-o2tbJuVvEoQGAp0FQRAU7qo,2526
104
- npcsh-1.1.16.data/data/npcsh/npc_team/compress.jinx,sha256=B2dMsT-jrMWzjQfMhRIuO7afgqj7MJngshz5DBMmu7s,6834
105
- npcsh-1.1.16.data/data/npcsh/npc_team/convene.jinx,sha256=Zg9CKDtkXe0R_xHCA2nzPMjH7_P98fjdNifuoCjPXh0,8777
106
- npcsh-1.1.16.data/data/npcsh/npc_team/corca.npc,sha256=Iu9bRD_OFVYQVyn0PLB_Kp91qzcHiHyo7VwmkXz2S-0,1667
107
- npcsh-1.1.16.data/data/npcsh/npc_team/corca.png,sha256=0lF70hKu6tY-37YmIPVF2cuaPzvnQ4-UtQOzuAbKEf4,1666776
108
- npcsh-1.1.16.data/data/npcsh/npc_team/corca_example.png,sha256=p0lVTuwaps4-F-3k4wgp9d897YPyn6FGZugtXMUQjj8,28777
109
- npcsh-1.1.16.data/data/npcsh/npc_team/delegate.jinx,sha256=FGi8K1vypHj25VoKAsuYgI_o2HMr8mOXLUD3IA1R0-w,8051
110
- npcsh-1.1.16.data/data/npcsh/npc_team/edit_file.jinx,sha256=VJ3NogMh_zcX-VH_R5MwqS9ypSFhWqpD8uaQZsnY-A8,3545
111
- npcsh-1.1.16.data/data/npcsh/npc_team/frederic.npc,sha256=1-TcFRWm5RsSnLoeZG_SN4JUU0Ynu6CzV-h6Wfasjto,1945
112
- npcsh-1.1.16.data/data/npcsh/npc_team/frederic4.png,sha256=ll8uoV0npnPp5HVJWv7h0xDSeuq4pqsk_gYGBHLS0VY,1590744
113
- npcsh-1.1.16.data/data/npcsh/npc_team/guac.npc,sha256=bOMEMXxvL4B-xdGqtq7hWf_gZpdMlo4OqER7c9iBsiM,797
114
- npcsh-1.1.16.data/data/npcsh/npc_team/guac.png,sha256=MCE7eJuEJwLJEzc9FS7lL62Mm-38jQRHkxXogPfOTuw,211470
115
- npcsh-1.1.16.data/data/npcsh/npc_team/help.jinx,sha256=OquhUEgcYZp-gu5Wgl3pOZnswxGQ96RoNG08tHjC9-4,2091
116
- npcsh-1.1.16.data/data/npcsh/npc_team/init.jinx,sha256=QBb1uOTvMlD-x3S7zPASH5TBZRwNhMQvK6t3DdC2mVw,1596
117
- npcsh-1.1.16.data/data/npcsh/npc_team/jinxs.jinx,sha256=6JKxCJX3EQj-va22ZEqR4psqRotGOqSJ-eF0Y0nH-NA,7291
118
- npcsh-1.1.16.data/data/npcsh/npc_team/kadiefa.npc,sha256=tg9YZ3dTlXS8CIEb544G5UYvGndPhgdlQoLWRV5j-JY,1758
119
- npcsh-1.1.16.data/data/npcsh/npc_team/kadiefa.png,sha256=3CAwL8crKIwJko6o75Z6OYYEEM9Rk--yGzCJg7zoszg,3062528
120
- npcsh-1.1.16.data/data/npcsh/npc_team/key_press.jinx,sha256=zXdJuOGm3Vkyf2cZH1G28J-ZxfqhIpYBDqqrYRPLPL4,834
121
- npcsh-1.1.16.data/data/npcsh/npc_team/launch_app.jinx,sha256=mvLGmHkKZTQAXc4uhSlxJfHzdt3CgDcETSf65kTgO1U,1245
122
- npcsh-1.1.16.data/data/npcsh/npc_team/load_file.jinx,sha256=Dq2982ZJkbSrM75O8YgLeGRnHdWl0AfEIYkj9RkNMLg,1271
123
- npcsh-1.1.16.data/data/npcsh/npc_team/npc-studio.jinx,sha256=0aY-z399BRIXIL3TLMTcYDiHjDm-krZy0CnYfiskQUo,2234
124
- npcsh-1.1.16.data/data/npcsh/npc_team/npcsh.ctx,sha256=-jKYaPm2YbZHAGgWAXhyPIwhiNe1H1ZRFg1Zc7tHSxk,1049
125
- npcsh-1.1.16.data/data/npcsh/npc_team/npcsh_sibiji.png,sha256=9fUqgYMsSHmaH-kBTBQ7N5UCS5-eLZF94Log0O3mtFg,4544
126
- npcsh-1.1.16.data/data/npcsh/npc_team/nql.jinx,sha256=xTAFs44JFvu4XCqoqyypaujNU1BsDf2VL_2MO9arEc0,5576
127
- npcsh-1.1.16.data/data/npcsh/npc_team/open_browser.jinx,sha256=AfZ7GSkBOKEmqYHOuJ1KsUh7OlTivBmCPbiIZ_VOwy8,1660
128
- npcsh-1.1.16.data/data/npcsh/npc_team/ots.jinx,sha256=DKoSVgH_ZcmOaZ2-R-Yn80KyCiYgqG25JG6e4wQwP64,2301
129
- npcsh-1.1.16.data/data/npcsh/npc_team/paper_search.jinx,sha256=UdDKhGSeHZoFkpdgrp369w-G4MQXHJwrEYabdYxEgLA,4204
130
- npcsh-1.1.16.data/data/npcsh/npc_team/paste.jinx,sha256=bycgMzeYFHl3-TN4YYDyasbNe22hEgFGMOmYoMWFgWI,4957
131
- npcsh-1.1.16.data/data/npcsh/npc_team/plonk.npc,sha256=z2fd5U0qaymiqHvkunQxCGQ1N2Mx6DMeErcltrJWrqw,1341
132
- npcsh-1.1.16.data/data/npcsh/npc_team/plonk.png,sha256=IU5ey-Dl4HEKlwnf75RSWNSHpF8rVqGmdbsa0deL4rQ,2727773
133
- npcsh-1.1.16.data/data/npcsh/npc_team/plonkjr.npc,sha256=umvWEigYLJBzzqSpF70lbf75612q8LxxGeYHT1Oq21Q,1568
134
- npcsh-1.1.16.data/data/npcsh/npc_team/plonkjr.png,sha256=MqLEGwsyECUeODZIti0HQQrMMVxA6XERpW01R06NbpY,2606710
135
- npcsh-1.1.16.data/data/npcsh/npc_team/python.jinx,sha256=lFJubdPVlGxSuUKCxsxjYG4_dnX2ATn8U9ChYKRmL5Q,389
136
- npcsh-1.1.16.data/data/npcsh/npc_team/roll.jinx,sha256=RhYhDDdyKcWjVhVSU7dX_DMn5s4rz-nY6pXmtr6tytM,2908
137
- npcsh-1.1.16.data/data/npcsh/npc_team/sample.jinx,sha256=7cWwfAZFgWxaTkIL1gpFFryQ3mjvVjoWYAov-zOFn_E,2237
138
- npcsh-1.1.16.data/data/npcsh/npc_team/screenshot.jinx,sha256=a4tEC7l72srWbrUU_vyZzWrZl2SNaU0wnQFMTAMQLuA,695
139
- npcsh-1.1.16.data/data/npcsh/npc_team/search.jinx,sha256=DtTiQj9ezgd4_dW3s2H9ZvgM7QVsWgMM0GuYqq7gTmI,5510
140
- npcsh-1.1.16.data/data/npcsh/npc_team/semantic_scholar.jinx,sha256=SCLzeTxVNv0rcnELbT3cKSuz7SO4Rft_H6K9w9QO10k,2530
141
- npcsh-1.1.16.data/data/npcsh/npc_team/serve.jinx,sha256=D-a-UafymNfAWeLW1sLM_Ef-971SF9TPcUvYu70AIlk,837
142
- npcsh-1.1.16.data/data/npcsh/npc_team/set.jinx,sha256=hQY_0muEtnWtfXsdK9cPwSvIevCimiJJn1-yhGC_VxM,1381
143
- npcsh-1.1.16.data/data/npcsh/npc_team/sh.jinx,sha256=LeBkoJOmWY0_U-vmgVnX5yxvoMO2kSw1cr5PT4Jmlp8,846
144
- npcsh-1.1.16.data/data/npcsh/npc_team/shh.jinx,sha256=yD-_va97JHT1MAhUvoL8w86Li9cbwi8XbswVcTRxd4U,464
145
- npcsh-1.1.16.data/data/npcsh/npc_team/sibiji.npc,sha256=I2fJsYPi7SUPLErczT6vwWl1p00FpuRYyx6r5Ljjyt4,1542
146
- npcsh-1.1.16.data/data/npcsh/npc_team/sibiji.png,sha256=1dlZb7J3E62FcVo9CVOzLb8nu1bIUV7cr97nsFocHCM,35615
147
- npcsh-1.1.16.data/data/npcsh/npc_team/sleep.jinx,sha256=c-7Dn4aLuX7WyBVcvuk3sqcbIutqKIz1N9sBfPNzhck,5301
148
- npcsh-1.1.16.data/data/npcsh/npc_team/spool.jinx,sha256=MLmqcnsytTQjektI7feD9bwUu3m-plPme1tRM6_zO6M,6446
149
- npcsh-1.1.16.data/data/npcsh/npc_team/spool.png,sha256=LWTLkwDxXBfLuSUCX32_lo5yAmLYGsA67Xpsz-7MmWU,2876725
150
- npcsh-1.1.16.data/data/npcsh/npc_team/sql.jinx,sha256=wHxvoCkEy1bZE2DPT2m_h0PXiTLtZlmax2flg-iXPdY,581
151
- npcsh-1.1.16.data/data/npcsh/npc_team/switch.jinx,sha256=9RWt5jipaZr8iJXJKVHQvTLymuYwKfSjCnuUk48M-Ss,2114
152
- npcsh-1.1.16.data/data/npcsh/npc_team/switches.jinx,sha256=wXb614UdXuuO3WzIhp1_Two_DksTDUwsYHFjeZNa9wc,2214
153
- npcsh-1.1.16.data/data/npcsh/npc_team/sync.jinx,sha256=rAhh2S5IeK9kzmpYJ-qdSVgagFv9wlZjMZ6pnn_ZLj4,8569
154
- npcsh-1.1.16.data/data/npcsh/npc_team/teamviz.jinx,sha256=sg2Szrkmeg9S0AAD7EA0uWneHOcCBvSySfUnZn4Eh6k,7650
155
- npcsh-1.1.16.data/data/npcsh/npc_team/trigger.jinx,sha256=YVFPEH6mT9HiAyfPZOCcBpKB033g6K4QCJO0sfgKSQA,2458
156
- npcsh-1.1.16.data/data/npcsh/npc_team/type_text.jinx,sha256=0093dk1X1DSaE8LANzn_JA1i07MLqI9NHa3a5pJPwyg,738
157
- npcsh-1.1.16.data/data/npcsh/npc_team/usage.jinx,sha256=40zhs19l7-16KAXHzOa8hjv7hA32ORe0F7das0TTLXY,1052
158
- npcsh-1.1.16.data/data/npcsh/npc_team/verbose.jinx,sha256=mFGLy2Azx1JXGhDOwVwd5EwJB9fxPQpk9BrP8kJ3RzE,473
159
- npcsh-1.1.16.data/data/npcsh/npc_team/vixynt.jinx,sha256=p6r_yuUr5DYrDOEueuNnlqaf74ydllTuZ686slRHKmA,4300
160
- npcsh-1.1.16.data/data/npcsh/npc_team/wait.jinx,sha256=Kg4AtesSduDn0bTemAxTz1XTdlY_Et0bc0OmS9wEuJ0,527
161
- npcsh-1.1.16.data/data/npcsh/npc_team/wander.jinx,sha256=cFEacTTjMY_FZfWlR7ydSStcpPEN3T9119dGdny9tZA,5620
162
- npcsh-1.1.16.data/data/npcsh/npc_team/yap.jinx,sha256=EU_10qxp-GIaCUfJo0sldl4N4989yd5tysfr4J_8biw,9596
163
- npcsh-1.1.16.data/data/npcsh/npc_team/yap.png,sha256=_l7UbWnXJdsy4Mx-x5l9DT0R6ize3HTnkwQQnOFlI18,1548649
164
- npcsh-1.1.16.dist-info/licenses/LICENSE,sha256=IKBvAECHP-aCiJtE4cHGCE5Yl0tozYz02PomGeWS3y4,1070
165
- project/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
166
- npcsh-1.1.16.dist-info/METADATA,sha256=2sZKfbod7xhQj2VS6vx64CBw47vIBwgaxHdLXINjhDU,37337
167
- npcsh-1.1.16.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
168
- npcsh-1.1.16.dist-info/entry_points.txt,sha256=9yQH_10yxRK3ntcTn_BRXUkGZ1HfPQ8HbXPMmvYl9TE,495
169
- npcsh-1.1.16.dist-info/top_level.txt,sha256=sbA6l0H-5EUmtoSA3SJTzrFzT_BmsFtf1FOUq8P8vL0,14
170
- npcsh-1.1.16.dist-info/RECORD,,