npcsh 1.1.14__py3-none-any.whl → 1.1.16__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- npcsh/_state.py +533 -80
- npcsh/mcp_server.py +2 -1
- npcsh/npc.py +84 -32
- npcsh/npc_team/alicanto.npc +22 -1
- npcsh/npc_team/corca.npc +28 -9
- npcsh/npc_team/frederic.npc +25 -4
- npcsh/npc_team/guac.npc +22 -0
- npcsh/npc_team/jinxs/bin/nql.jinx +141 -0
- npcsh/npc_team/jinxs/bin/sync.jinx +230 -0
- {npcsh-1.1.14.data/data/npcsh/npc_team → npcsh/npc_team/jinxs/bin}/vixynt.jinx +8 -30
- npcsh/npc_team/jinxs/bin/wander.jinx +152 -0
- npcsh/npc_team/jinxs/lib/browser/browser_action.jinx +220 -0
- npcsh/npc_team/jinxs/lib/browser/browser_screenshot.jinx +40 -0
- npcsh/npc_team/jinxs/lib/browser/close_browser.jinx +14 -0
- npcsh/npc_team/jinxs/lib/browser/open_browser.jinx +43 -0
- npcsh/npc_team/jinxs/lib/computer_use/click.jinx +23 -0
- npcsh/npc_team/jinxs/lib/computer_use/key_press.jinx +26 -0
- npcsh/npc_team/jinxs/lib/computer_use/launch_app.jinx +37 -0
- npcsh/npc_team/jinxs/lib/computer_use/screenshot.jinx +23 -0
- npcsh/npc_team/jinxs/lib/computer_use/type_text.jinx +27 -0
- npcsh/npc_team/jinxs/lib/computer_use/wait.jinx +21 -0
- {npcsh-1.1.14.data/data/npcsh/npc_team → npcsh/npc_team/jinxs/lib/core}/edit_file.jinx +3 -3
- {npcsh-1.1.14.data/data/npcsh/npc_team → npcsh/npc_team/jinxs/lib/core}/load_file.jinx +1 -1
- npcsh/npc_team/jinxs/lib/core/paste.jinx +134 -0
- {npcsh-1.1.14.data/data/npcsh/npc_team → npcsh/npc_team/jinxs/lib/core}/search.jinx +2 -1
- npcsh/npc_team/jinxs/{code → lib/core}/sh.jinx +2 -8
- npcsh/npc_team/jinxs/{code → lib/core}/sql.jinx +1 -1
- npcsh/npc_team/jinxs/lib/orchestration/convene.jinx +232 -0
- npcsh/npc_team/jinxs/lib/orchestration/delegate.jinx +184 -0
- npcsh/npc_team/jinxs/lib/research/arxiv.jinx +76 -0
- npcsh/npc_team/jinxs/lib/research/paper_search.jinx +101 -0
- npcsh/npc_team/jinxs/lib/research/semantic_scholar.jinx +69 -0
- npcsh/npc_team/jinxs/{utils/core → lib/utils}/build.jinx +8 -8
- npcsh/npc_team/jinxs/lib/utils/jinxs.jinx +176 -0
- npcsh/npc_team/jinxs/lib/utils/shh.jinx +17 -0
- npcsh/npc_team/jinxs/lib/utils/switch.jinx +62 -0
- npcsh/npc_team/jinxs/lib/utils/switches.jinx +61 -0
- npcsh/npc_team/jinxs/lib/utils/teamviz.jinx +205 -0
- npcsh/npc_team/jinxs/lib/utils/verbose.jinx +17 -0
- npcsh/npc_team/kadiefa.npc +19 -1
- npcsh/npc_team/plonk.npc +26 -1
- npcsh/npc_team/plonkjr.npc +22 -1
- npcsh/npc_team/sibiji.npc +23 -2
- npcsh/npcsh.py +153 -39
- npcsh/ui.py +22 -1
- npcsh-1.1.16.data/data/npcsh/npc_team/alicanto.npc +23 -0
- npcsh-1.1.16.data/data/npcsh/npc_team/arxiv.jinx +76 -0
- npcsh-1.1.16.data/data/npcsh/npc_team/browser_action.jinx +220 -0
- npcsh-1.1.16.data/data/npcsh/npc_team/browser_screenshot.jinx +40 -0
- {npcsh-1.1.14.data → npcsh-1.1.16.data}/data/npcsh/npc_team/build.jinx +8 -8
- npcsh-1.1.16.data/data/npcsh/npc_team/click.jinx +23 -0
- npcsh-1.1.16.data/data/npcsh/npc_team/close_browser.jinx +14 -0
- npcsh-1.1.16.data/data/npcsh/npc_team/convene.jinx +232 -0
- npcsh-1.1.16.data/data/npcsh/npc_team/corca.npc +31 -0
- npcsh-1.1.16.data/data/npcsh/npc_team/delegate.jinx +184 -0
- {npcsh/npc_team/jinxs/utils → npcsh-1.1.16.data/data/npcsh/npc_team}/edit_file.jinx +3 -3
- npcsh-1.1.16.data/data/npcsh/npc_team/frederic.npc +27 -0
- npcsh-1.1.16.data/data/npcsh/npc_team/guac.npc +22 -0
- npcsh-1.1.16.data/data/npcsh/npc_team/jinxs.jinx +176 -0
- npcsh-1.1.16.data/data/npcsh/npc_team/kadiefa.npc +21 -0
- npcsh-1.1.16.data/data/npcsh/npc_team/key_press.jinx +26 -0
- npcsh-1.1.16.data/data/npcsh/npc_team/launch_app.jinx +37 -0
- {npcsh/npc_team/jinxs/utils → npcsh-1.1.16.data/data/npcsh/npc_team}/load_file.jinx +1 -1
- npcsh-1.1.16.data/data/npcsh/npc_team/nql.jinx +141 -0
- npcsh-1.1.16.data/data/npcsh/npc_team/open_browser.jinx +43 -0
- npcsh-1.1.16.data/data/npcsh/npc_team/paper_search.jinx +101 -0
- npcsh-1.1.16.data/data/npcsh/npc_team/paste.jinx +134 -0
- npcsh-1.1.16.data/data/npcsh/npc_team/plonk.npc +27 -0
- npcsh-1.1.16.data/data/npcsh/npc_team/plonkjr.npc +23 -0
- npcsh-1.1.16.data/data/npcsh/npc_team/screenshot.jinx +23 -0
- {npcsh/npc_team/jinxs/utils → npcsh-1.1.16.data/data/npcsh/npc_team}/search.jinx +2 -1
- npcsh-1.1.16.data/data/npcsh/npc_team/semantic_scholar.jinx +69 -0
- {npcsh-1.1.14.data → npcsh-1.1.16.data}/data/npcsh/npc_team/sh.jinx +2 -8
- npcsh-1.1.16.data/data/npcsh/npc_team/shh.jinx +17 -0
- npcsh-1.1.16.data/data/npcsh/npc_team/sibiji.npc +24 -0
- {npcsh-1.1.14.data → npcsh-1.1.16.data}/data/npcsh/npc_team/sql.jinx +1 -1
- npcsh-1.1.16.data/data/npcsh/npc_team/switch.jinx +62 -0
- npcsh-1.1.16.data/data/npcsh/npc_team/switches.jinx +61 -0
- npcsh-1.1.16.data/data/npcsh/npc_team/sync.jinx +230 -0
- npcsh-1.1.16.data/data/npcsh/npc_team/teamviz.jinx +205 -0
- npcsh-1.1.16.data/data/npcsh/npc_team/type_text.jinx +27 -0
- npcsh-1.1.16.data/data/npcsh/npc_team/verbose.jinx +17 -0
- {npcsh/npc_team/jinxs/utils → npcsh-1.1.16.data/data/npcsh/npc_team}/vixynt.jinx +8 -30
- npcsh-1.1.16.data/data/npcsh/npc_team/wait.jinx +21 -0
- npcsh-1.1.16.data/data/npcsh/npc_team/wander.jinx +152 -0
- {npcsh-1.1.14.dist-info → npcsh-1.1.16.dist-info}/METADATA +399 -58
- npcsh-1.1.16.dist-info/RECORD +170 -0
- npcsh-1.1.16.dist-info/entry_points.txt +19 -0
- npcsh-1.1.16.dist-info/top_level.txt +2 -0
- project/__init__.py +1 -0
- npcsh/npc_team/foreman.npc +0 -7
- npcsh/npc_team/jinxs/modes/alicanto.jinx +0 -194
- npcsh/npc_team/jinxs/modes/corca.jinx +0 -249
- npcsh/npc_team/jinxs/modes/guac.jinx +0 -317
- npcsh/npc_team/jinxs/modes/plonk.jinx +0 -214
- npcsh/npc_team/jinxs/modes/pti.jinx +0 -170
- npcsh/npc_team/jinxs/modes/wander.jinx +0 -186
- npcsh/npc_team/jinxs/utils/agent.jinx +0 -17
- npcsh/npc_team/jinxs/utils/core/jinxs.jinx +0 -32
- npcsh-1.1.14.data/data/npcsh/npc_team/agent.jinx +0 -17
- npcsh-1.1.14.data/data/npcsh/npc_team/alicanto.jinx +0 -194
- npcsh-1.1.14.data/data/npcsh/npc_team/alicanto.npc +0 -2
- npcsh-1.1.14.data/data/npcsh/npc_team/corca.jinx +0 -249
- npcsh-1.1.14.data/data/npcsh/npc_team/corca.npc +0 -12
- npcsh-1.1.14.data/data/npcsh/npc_team/foreman.npc +0 -7
- npcsh-1.1.14.data/data/npcsh/npc_team/frederic.npc +0 -6
- npcsh-1.1.14.data/data/npcsh/npc_team/guac.jinx +0 -317
- npcsh-1.1.14.data/data/npcsh/npc_team/jinxs.jinx +0 -32
- npcsh-1.1.14.data/data/npcsh/npc_team/kadiefa.npc +0 -3
- npcsh-1.1.14.data/data/npcsh/npc_team/plonk.jinx +0 -214
- npcsh-1.1.14.data/data/npcsh/npc_team/plonk.npc +0 -2
- npcsh-1.1.14.data/data/npcsh/npc_team/plonkjr.npc +0 -2
- npcsh-1.1.14.data/data/npcsh/npc_team/pti.jinx +0 -170
- npcsh-1.1.14.data/data/npcsh/npc_team/sibiji.npc +0 -3
- npcsh-1.1.14.data/data/npcsh/npc_team/wander.jinx +0 -186
- npcsh-1.1.14.dist-info/RECORD +0 -135
- npcsh-1.1.14.dist-info/entry_points.txt +0 -9
- npcsh-1.1.14.dist-info/top_level.txt +0 -1
- /npcsh/npc_team/jinxs/{utils → bin}/roll.jinx +0 -0
- /npcsh/npc_team/jinxs/{utils → bin}/sample.jinx +0 -0
- /npcsh/npc_team/jinxs/{modes → bin}/spool.jinx +0 -0
- /npcsh/npc_team/jinxs/{modes → bin}/yap.jinx +0 -0
- /npcsh/npc_team/jinxs/{utils → lib/computer_use}/trigger.jinx +0 -0
- /npcsh/npc_team/jinxs/{utils → lib/core}/chat.jinx +0 -0
- /npcsh/npc_team/jinxs/{utils → lib/core}/cmd.jinx +0 -0
- /npcsh/npc_team/jinxs/{utils → lib/core}/compress.jinx +0 -0
- /npcsh/npc_team/jinxs/{utils → lib/core}/ots.jinx +0 -0
- /npcsh/npc_team/jinxs/{code → lib/core}/python.jinx +0 -0
- /npcsh/npc_team/jinxs/{utils → lib/core}/sleep.jinx +0 -0
- /npcsh/npc_team/jinxs/{utils/core → lib/utils}/compile.jinx +0 -0
- /npcsh/npc_team/jinxs/{utils/core → lib/utils}/help.jinx +0 -0
- /npcsh/npc_team/jinxs/{utils/core → lib/utils}/init.jinx +0 -0
- /npcsh/npc_team/jinxs/{utils → lib/utils}/serve.jinx +0 -0
- /npcsh/npc_team/jinxs/{utils/core → lib/utils}/set.jinx +0 -0
- /npcsh/npc_team/jinxs/{utils → lib/utils}/usage.jinx +0 -0
- {npcsh-1.1.14.data → npcsh-1.1.16.data}/data/npcsh/npc_team/alicanto.png +0 -0
- {npcsh-1.1.14.data → npcsh-1.1.16.data}/data/npcsh/npc_team/chat.jinx +0 -0
- {npcsh-1.1.14.data → npcsh-1.1.16.data}/data/npcsh/npc_team/cmd.jinx +0 -0
- {npcsh-1.1.14.data → npcsh-1.1.16.data}/data/npcsh/npc_team/compile.jinx +0 -0
- {npcsh-1.1.14.data → npcsh-1.1.16.data}/data/npcsh/npc_team/compress.jinx +0 -0
- {npcsh-1.1.14.data → npcsh-1.1.16.data}/data/npcsh/npc_team/corca.png +0 -0
- {npcsh-1.1.14.data → npcsh-1.1.16.data}/data/npcsh/npc_team/corca_example.png +0 -0
- {npcsh-1.1.14.data → npcsh-1.1.16.data}/data/npcsh/npc_team/frederic4.png +0 -0
- {npcsh-1.1.14.data → npcsh-1.1.16.data}/data/npcsh/npc_team/guac.png +0 -0
- {npcsh-1.1.14.data → npcsh-1.1.16.data}/data/npcsh/npc_team/help.jinx +0 -0
- {npcsh-1.1.14.data → npcsh-1.1.16.data}/data/npcsh/npc_team/init.jinx +0 -0
- {npcsh-1.1.14.data → npcsh-1.1.16.data}/data/npcsh/npc_team/kadiefa.png +0 -0
- {npcsh-1.1.14.data → npcsh-1.1.16.data}/data/npcsh/npc_team/npc-studio.jinx +0 -0
- {npcsh-1.1.14.data → npcsh-1.1.16.data}/data/npcsh/npc_team/npcsh.ctx +0 -0
- {npcsh-1.1.14.data → npcsh-1.1.16.data}/data/npcsh/npc_team/npcsh_sibiji.png +0 -0
- {npcsh-1.1.14.data → npcsh-1.1.16.data}/data/npcsh/npc_team/ots.jinx +0 -0
- {npcsh-1.1.14.data → npcsh-1.1.16.data}/data/npcsh/npc_team/plonk.png +0 -0
- {npcsh-1.1.14.data → npcsh-1.1.16.data}/data/npcsh/npc_team/plonkjr.png +0 -0
- {npcsh-1.1.14.data → npcsh-1.1.16.data}/data/npcsh/npc_team/python.jinx +0 -0
- {npcsh-1.1.14.data → npcsh-1.1.16.data}/data/npcsh/npc_team/roll.jinx +0 -0
- {npcsh-1.1.14.data → npcsh-1.1.16.data}/data/npcsh/npc_team/sample.jinx +0 -0
- {npcsh-1.1.14.data → npcsh-1.1.16.data}/data/npcsh/npc_team/serve.jinx +0 -0
- {npcsh-1.1.14.data → npcsh-1.1.16.data}/data/npcsh/npc_team/set.jinx +0 -0
- {npcsh-1.1.14.data → npcsh-1.1.16.data}/data/npcsh/npc_team/sibiji.png +0 -0
- {npcsh-1.1.14.data → npcsh-1.1.16.data}/data/npcsh/npc_team/sleep.jinx +0 -0
- {npcsh-1.1.14.data → npcsh-1.1.16.data}/data/npcsh/npc_team/spool.jinx +0 -0
- {npcsh-1.1.14.data → npcsh-1.1.16.data}/data/npcsh/npc_team/spool.png +0 -0
- {npcsh-1.1.14.data → npcsh-1.1.16.data}/data/npcsh/npc_team/trigger.jinx +0 -0
- {npcsh-1.1.14.data → npcsh-1.1.16.data}/data/npcsh/npc_team/usage.jinx +0 -0
- {npcsh-1.1.14.data → npcsh-1.1.16.data}/data/npcsh/npc_team/yap.jinx +0 -0
- {npcsh-1.1.14.data → npcsh-1.1.16.data}/data/npcsh/npc_team/yap.png +0 -0
- {npcsh-1.1.14.dist-info → npcsh-1.1.16.dist-info}/WHEEL +0 -0
- {npcsh-1.1.14.dist-info → npcsh-1.1.16.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,170 @@
|
|
|
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,,
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
[console_scripts]
|
|
2
|
+
alicanto = npcsh.npcsh:main
|
|
3
|
+
corca = npcsh.npcsh:main
|
|
4
|
+
frederic = npcsh.npcsh:main
|
|
5
|
+
guac = npcsh.npcsh:main
|
|
6
|
+
kadiefa = npcsh.npcsh:main
|
|
7
|
+
npc = npcsh.npc:main
|
|
8
|
+
npcsh = npcsh.npcsh:main
|
|
9
|
+
nql = npcsh.npc:jinx_main
|
|
10
|
+
plonk = npcsh.npcsh:main
|
|
11
|
+
plonkjr = npcsh.npcsh:main
|
|
12
|
+
roll = npcsh.npc:jinx_main
|
|
13
|
+
sample = npcsh.npc:jinx_main
|
|
14
|
+
sibiji = npcsh.npcsh:main
|
|
15
|
+
spool = npcsh.npc:jinx_main
|
|
16
|
+
sync = npcsh.npc:jinx_main
|
|
17
|
+
vixynt = npcsh.npc:jinx_main
|
|
18
|
+
wander = npcsh.npc:jinx_main
|
|
19
|
+
yap = npcsh.npc:jinx_main
|
project/__init__.py
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
npcsh/npc_team/foreman.npc
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
name: foreman
|
|
2
|
-
primary_directive: You are the foreman of an NPC team. It is your duty
|
|
3
|
-
to delegate tasks to your team members or to other specialized teams
|
|
4
|
-
in order to complete the project. You are responsible for the
|
|
5
|
-
completion of the project and the safety of your team members.
|
|
6
|
-
model: gpt-4o-mini
|
|
7
|
-
provider: openai
|
|
@@ -1,194 +0,0 @@
|
|
|
1
|
-
jinx_name: alicanto
|
|
2
|
-
description: Deep research mode - multi-perspective exploration with gold insights and cliff warnings
|
|
3
|
-
npc: forenpc
|
|
4
|
-
inputs:
|
|
5
|
-
- query: null
|
|
6
|
-
- num_npcs: 5
|
|
7
|
-
- depth: 3
|
|
8
|
-
- model: null
|
|
9
|
-
- provider: null
|
|
10
|
-
- max_steps: 20
|
|
11
|
-
- skip_research: true
|
|
12
|
-
- exploration: 0.3
|
|
13
|
-
- creativity: 0.5
|
|
14
|
-
- format: report
|
|
15
|
-
|
|
16
|
-
steps:
|
|
17
|
-
- name: alicanto_research
|
|
18
|
-
engine: python
|
|
19
|
-
code: |
|
|
20
|
-
import os
|
|
21
|
-
from termcolor import colored
|
|
22
|
-
|
|
23
|
-
from npcpy.llm_funcs import get_llm_response
|
|
24
|
-
from npcpy.data.web import search_web
|
|
25
|
-
from npcpy.npc_compiler import NPC
|
|
26
|
-
|
|
27
|
-
npc = context.get('npc')
|
|
28
|
-
team = context.get('team')
|
|
29
|
-
messages = context.get('messages', [])
|
|
30
|
-
|
|
31
|
-
query = context.get('query')
|
|
32
|
-
num_npcs = int(context.get('num_npcs', 5))
|
|
33
|
-
depth = int(context.get('depth', 3))
|
|
34
|
-
max_steps = int(context.get('max_steps', 20))
|
|
35
|
-
skip_research = context.get('skip_research', True)
|
|
36
|
-
exploration = float(context.get('exploration', 0.3))
|
|
37
|
-
creativity = float(context.get('creativity', 0.5))
|
|
38
|
-
output_format = context.get('format', 'report')
|
|
39
|
-
|
|
40
|
-
model = context.get('model') or (npc.model if npc else 'gemini-1.5-pro')
|
|
41
|
-
provider = context.get('provider') or (npc.provider if npc else 'gemini')
|
|
42
|
-
|
|
43
|
-
if not query:
|
|
44
|
-
context['output'] = """Usage: /alicanto <research query>
|
|
45
|
-
|
|
46
|
-
Options:
|
|
47
|
-
--num-npcs N Number of research perspectives (default: 5)
|
|
48
|
-
--depth N Research depth (default: 3)
|
|
49
|
-
--max-steps N Maximum research steps (default: 20)
|
|
50
|
-
--exploration F Exploration factor 0-1 (default: 0.3)
|
|
51
|
-
--creativity F Creativity factor 0-1 (default: 0.5)
|
|
52
|
-
--format FORMAT Output: report|summary|full (default: report)
|
|
53
|
-
|
|
54
|
-
Example: /alicanto What are the latest advances in quantum computing?"""
|
|
55
|
-
context['messages'] = messages
|
|
56
|
-
exit()
|
|
57
|
-
|
|
58
|
-
print(f"""
|
|
59
|
-
█████╗ ██╗ ██╗ ██████╗ █████╗ ███╗ ██╗████████╗ ██████╗
|
|
60
|
-
██╔══██╗██║ ██║██╔════╝██╔══██╗████╗ ██║╚══██╔══╝██╔═══██╗
|
|
61
|
-
███████║██║ ██║██║ ███████║██╔██╗ ██║ ██║ ██║ ██║
|
|
62
|
-
██╔══██║██║ ██║██║ ██╔══██║██║╚██╗██║ ██║ ██║ ██║
|
|
63
|
-
██║ ██║███████╗██║╚██████╗██║ ██║██║ ╚████║ ██║ ╚██████╔╝
|
|
64
|
-
╚═╝ ╚═╝╚══════╝╚═╝ ╚═════╝╚═╝ ╚═╝╚═╝ ╚═══╝ ╚═╝ ╚═════╝
|
|
65
|
-
|
|
66
|
-
Deep Research Mode
|
|
67
|
-
Query: {query}
|
|
68
|
-
Perspectives: {num_npcs} | Depth: {depth} | Max Steps: {max_steps}
|
|
69
|
-
""")
|
|
70
|
-
|
|
71
|
-
# Generate research perspectives
|
|
72
|
-
perspectives_prompt = f"""Generate {num_npcs} distinct research perspectives for investigating: "{query}"
|
|
73
|
-
|
|
74
|
-
For each perspective, provide:
|
|
75
|
-
1. Name (a descriptive title)
|
|
76
|
-
2. Approach (how this perspective would investigate)
|
|
77
|
-
3. Key questions to explore
|
|
78
|
-
|
|
79
|
-
Return as a numbered list."""
|
|
80
|
-
|
|
81
|
-
print(colored("Generating research perspectives...", "cyan"))
|
|
82
|
-
resp = get_llm_response(
|
|
83
|
-
perspectives_prompt,
|
|
84
|
-
model=model,
|
|
85
|
-
provider=provider,
|
|
86
|
-
npc=npc
|
|
87
|
-
)
|
|
88
|
-
perspectives = str(resp.get('response', ''))
|
|
89
|
-
print(perspectives)
|
|
90
|
-
|
|
91
|
-
# Conduct web research if not skipped
|
|
92
|
-
research_findings = ""
|
|
93
|
-
if not skip_research:
|
|
94
|
-
print(colored("\nConducting web research...", "cyan"))
|
|
95
|
-
try:
|
|
96
|
-
search_results = search_web(query, n_results=5)
|
|
97
|
-
if search_results:
|
|
98
|
-
research_findings = "\n\nWeb Research Findings:\n"
|
|
99
|
-
for i, result in enumerate(search_results[:5], 1):
|
|
100
|
-
title = result.get('title', 'No title')
|
|
101
|
-
snippet = result.get('snippet', result.get('body', ''))[:200]
|
|
102
|
-
research_findings += f"\n{i}. {title}\n {snippet}...\n"
|
|
103
|
-
print(colored(f"Found {len(search_results)} sources", "green"))
|
|
104
|
-
except Exception as e:
|
|
105
|
-
print(colored(f"Web search error: {e}", "yellow"))
|
|
106
|
-
|
|
107
|
-
# Multi-step exploration from each perspective
|
|
108
|
-
all_insights = []
|
|
109
|
-
gold_insights = [] # Key valuable findings
|
|
110
|
-
cliff_warnings = [] # Potential pitfalls or caveats
|
|
111
|
-
|
|
112
|
-
for step in range(min(depth, max_steps)):
|
|
113
|
-
print(colored(f"\n--- Research Depth {step + 1}/{depth} ---", "cyan"))
|
|
114
|
-
|
|
115
|
-
explore_prompt = f"""Research query: "{query}"
|
|
116
|
-
|
|
117
|
-
Perspectives generated:
|
|
118
|
-
{perspectives}
|
|
119
|
-
|
|
120
|
-
{research_findings}
|
|
121
|
-
|
|
122
|
-
Previous insights: {all_insights[-3:] if all_insights else 'None yet'}
|
|
123
|
-
|
|
124
|
-
For depth level {step + 1}:
|
|
125
|
-
1. Explore deeper implications from each perspective
|
|
126
|
-
2. Identify GOLD insights (valuable, non-obvious findings) - mark with [GOLD]
|
|
127
|
-
3. Identify CLIFF warnings (pitfalls, caveats, risks) - mark with [CLIFF]
|
|
128
|
-
4. Connect insights across perspectives
|
|
129
|
-
|
|
130
|
-
Exploration factor: {exploration} (higher = more diverse exploration)
|
|
131
|
-
Creativity factor: {creativity} (higher = more novel connections)"""
|
|
132
|
-
|
|
133
|
-
resp = get_llm_response(
|
|
134
|
-
explore_prompt,
|
|
135
|
-
model=model,
|
|
136
|
-
provider=provider,
|
|
137
|
-
temperature=creativity,
|
|
138
|
-
npc=npc
|
|
139
|
-
)
|
|
140
|
-
|
|
141
|
-
step_insights = str(resp.get('response', ''))
|
|
142
|
-
print(step_insights)
|
|
143
|
-
|
|
144
|
-
# Extract gold and cliff markers
|
|
145
|
-
if '[GOLD]' in step_insights:
|
|
146
|
-
gold_insights.extend([line.strip() for line in step_insights.split('\n') if '[GOLD]' in line])
|
|
147
|
-
if '[CLIFF]' in step_insights:
|
|
148
|
-
cliff_warnings.extend([line.strip() for line in step_insights.split('\n') if '[CLIFF]' in line])
|
|
149
|
-
|
|
150
|
-
all_insights.append(step_insights)
|
|
151
|
-
|
|
152
|
-
# Generate final synthesis
|
|
153
|
-
print(colored("\n--- Synthesizing Research ---", "cyan"))
|
|
154
|
-
|
|
155
|
-
synthesis_prompt = f"""Synthesize research on: "{query}"
|
|
156
|
-
|
|
157
|
-
All insights gathered:
|
|
158
|
-
{chr(10).join(all_insights)}
|
|
159
|
-
|
|
160
|
-
Gold insights identified:
|
|
161
|
-
{chr(10).join(gold_insights) if gold_insights else 'None explicitly marked'}
|
|
162
|
-
|
|
163
|
-
Cliff warnings identified:
|
|
164
|
-
{chr(10).join(cliff_warnings) if cliff_warnings else 'None explicitly marked'}
|
|
165
|
-
|
|
166
|
-
Generate a {output_format} that:
|
|
167
|
-
1. Summarizes key findings
|
|
168
|
-
2. Highlights the most valuable insights (gold)
|
|
169
|
-
3. Notes important caveats and risks (cliffs)
|
|
170
|
-
4. Provides actionable conclusions"""
|
|
171
|
-
|
|
172
|
-
resp = get_llm_response(
|
|
173
|
-
synthesis_prompt,
|
|
174
|
-
model=model,
|
|
175
|
-
provider=provider,
|
|
176
|
-
npc=npc
|
|
177
|
-
)
|
|
178
|
-
|
|
179
|
-
final_report = str(resp.get('response', ''))
|
|
180
|
-
print("\n" + "="*60)
|
|
181
|
-
print(colored("ALICANTO RESEARCH REPORT", "green", attrs=['bold']))
|
|
182
|
-
print("="*60)
|
|
183
|
-
print(final_report)
|
|
184
|
-
|
|
185
|
-
context['output'] = final_report
|
|
186
|
-
context['messages'] = messages
|
|
187
|
-
context['alicanto_result'] = {
|
|
188
|
-
'query': query,
|
|
189
|
-
'perspectives': perspectives,
|
|
190
|
-
'insights': all_insights,
|
|
191
|
-
'gold': gold_insights,
|
|
192
|
-
'cliffs': cliff_warnings,
|
|
193
|
-
'report': final_report
|
|
194
|
-
}
|
|
@@ -1,249 +0,0 @@
|
|
|
1
|
-
jinx_name: corca
|
|
2
|
-
description: MCP-powered agentic shell - LLM with tool use via MCP servers
|
|
3
|
-
inputs:
|
|
4
|
-
- mcp_server_path: null
|
|
5
|
-
- initial_command: null
|
|
6
|
-
- model: null
|
|
7
|
-
- provider: null
|
|
8
|
-
|
|
9
|
-
steps:
|
|
10
|
-
- name: corca_repl
|
|
11
|
-
engine: python
|
|
12
|
-
code: |
|
|
13
|
-
import os
|
|
14
|
-
import sys
|
|
15
|
-
import asyncio
|
|
16
|
-
import json
|
|
17
|
-
from contextlib import AsyncExitStack
|
|
18
|
-
from termcolor import colored
|
|
19
|
-
|
|
20
|
-
from npcpy.llm_funcs import get_llm_response
|
|
21
|
-
from npcpy.npc_sysenv import render_markdown, get_system_message
|
|
22
|
-
|
|
23
|
-
# MCP imports
|
|
24
|
-
try:
|
|
25
|
-
from mcp import ClientSession, StdioServerParameters
|
|
26
|
-
from mcp.client.stdio import stdio_client
|
|
27
|
-
MCP_AVAILABLE = True
|
|
28
|
-
except ImportError:
|
|
29
|
-
MCP_AVAILABLE = False
|
|
30
|
-
print(colored("MCP not available. Install with: pip install mcp-client", "yellow"))
|
|
31
|
-
|
|
32
|
-
npc = context.get('npc')
|
|
33
|
-
team = context.get('team')
|
|
34
|
-
messages = context.get('messages', [])
|
|
35
|
-
mcp_server_path = context.get('mcp_server_path')
|
|
36
|
-
initial_command = context.get('initial_command')
|
|
37
|
-
|
|
38
|
-
model = context.get('model') or (npc.model if npc else None)
|
|
39
|
-
provider = context.get('provider') or (npc.provider if npc else None)
|
|
40
|
-
|
|
41
|
-
# Use shared_context for MCP state
|
|
42
|
-
shared_ctx = npc.shared_context if npc and hasattr(npc, 'shared_context') else {}
|
|
43
|
-
|
|
44
|
-
print("""
|
|
45
|
-
██████╗ ██████╗ ██████╗ ██████╗ █████╗
|
|
46
|
-
██╔════╝██╔═══██╗██╔══██╗██╔════╝██╔══██╗
|
|
47
|
-
██║ ██║ ██║██████╔╝██║ ███████║
|
|
48
|
-
██║ ██║ ██║██╔══██╗██║ ██╔══██╗
|
|
49
|
-
╚██████╗╚██████╔╝██║ ██║╚██████╗██║ ██║
|
|
50
|
-
╚═════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝
|
|
51
|
-
""")
|
|
52
|
-
|
|
53
|
-
npc_name = npc.name if npc else "corca"
|
|
54
|
-
print(f"Entering corca mode (NPC: {npc_name}). Type '/cq' to exit.")
|
|
55
|
-
|
|
56
|
-
# ========== MCP Connection Setup ==========
|
|
57
|
-
async def connect_mcp(server_path):
|
|
58
|
-
"""Connect to MCP server and return tools"""
|
|
59
|
-
if not MCP_AVAILABLE:
|
|
60
|
-
return [], {}
|
|
61
|
-
|
|
62
|
-
abs_path = os.path.abspath(os.path.expanduser(server_path))
|
|
63
|
-
if not os.path.exists(abs_path):
|
|
64
|
-
print(colored(f"MCP server not found: {abs_path}", "red"))
|
|
65
|
-
return [], {}
|
|
66
|
-
|
|
67
|
-
try:
|
|
68
|
-
loop = asyncio.get_event_loop()
|
|
69
|
-
except RuntimeError:
|
|
70
|
-
loop = asyncio.new_event_loop()
|
|
71
|
-
asyncio.set_event_loop(loop)
|
|
72
|
-
|
|
73
|
-
exit_stack = AsyncExitStack()
|
|
74
|
-
|
|
75
|
-
if abs_path.endswith('.py'):
|
|
76
|
-
cmd_parts = [sys.executable, abs_path]
|
|
77
|
-
else:
|
|
78
|
-
cmd_parts = [abs_path]
|
|
79
|
-
|
|
80
|
-
server_params = StdioServerParameters(
|
|
81
|
-
command=cmd_parts[0],
|
|
82
|
-
args=[abs_path],
|
|
83
|
-
env=os.environ.copy()
|
|
84
|
-
)
|
|
85
|
-
|
|
86
|
-
stdio_transport = await exit_stack.enter_async_context(stdio_client(server_params))
|
|
87
|
-
session = await exit_stack.enter_async_context(ClientSession(*stdio_transport))
|
|
88
|
-
await session.initialize()
|
|
89
|
-
|
|
90
|
-
response = await session.list_tools()
|
|
91
|
-
tools_llm = []
|
|
92
|
-
tool_map = {}
|
|
93
|
-
|
|
94
|
-
if response.tools:
|
|
95
|
-
for mcp_tool in response.tools:
|
|
96
|
-
tool_def = {
|
|
97
|
-
"type": "function",
|
|
98
|
-
"function": {
|
|
99
|
-
"name": mcp_tool.name,
|
|
100
|
-
"description": mcp_tool.description or f"MCP tool: {mcp_tool.name}",
|
|
101
|
-
"parameters": getattr(mcp_tool, "inputSchema", {"type": "object", "properties": {}})
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
tools_llm.append(tool_def)
|
|
105
|
-
|
|
106
|
-
# Create sync wrapper for async tool call
|
|
107
|
-
def make_tool_func(tool_name, sess, lp):
|
|
108
|
-
async def call_tool(**kwargs):
|
|
109
|
-
cleaned = {k: (None if v == 'None' else v) for k, v in kwargs.items()}
|
|
110
|
-
result = await asyncio.wait_for(sess.call_tool(tool_name, cleaned), timeout=30.0)
|
|
111
|
-
return result
|
|
112
|
-
def sync_call(**kwargs):
|
|
113
|
-
return lp.run_until_complete(call_tool(**kwargs))
|
|
114
|
-
return sync_call
|
|
115
|
-
|
|
116
|
-
tool_map[mcp_tool.name] = make_tool_func(mcp_tool.name, session, loop)
|
|
117
|
-
|
|
118
|
-
# Store in shared context
|
|
119
|
-
shared_ctx['mcp_client'] = session
|
|
120
|
-
shared_ctx['mcp_tools'] = tools_llm
|
|
121
|
-
shared_ctx['mcp_tool_map'] = tool_map
|
|
122
|
-
shared_ctx['_mcp_exit_stack'] = exit_stack
|
|
123
|
-
shared_ctx['_mcp_loop'] = loop
|
|
124
|
-
|
|
125
|
-
print(colored(f"Connected to MCP server. Tools: {', '.join(tool_map.keys())}", "green"))
|
|
126
|
-
return tools_llm, tool_map
|
|
127
|
-
|
|
128
|
-
# Try to connect if server path provided
|
|
129
|
-
tools_llm = shared_ctx.get('mcp_tools', [])
|
|
130
|
-
tool_map = shared_ctx.get('mcp_tool_map', {})
|
|
131
|
-
|
|
132
|
-
if mcp_server_path and not tools_llm:
|
|
133
|
-
try:
|
|
134
|
-
loop = asyncio.get_event_loop()
|
|
135
|
-
except RuntimeError:
|
|
136
|
-
loop = asyncio.new_event_loop()
|
|
137
|
-
asyncio.set_event_loop(loop)
|
|
138
|
-
tools_llm, tool_map = loop.run_until_complete(connect_mcp(mcp_server_path))
|
|
139
|
-
|
|
140
|
-
# Find default MCP server if none provided
|
|
141
|
-
if not tools_llm:
|
|
142
|
-
default_paths = [
|
|
143
|
-
os.path.expanduser("~/.npcsh/npc_team/mcp_server.py"),
|
|
144
|
-
os.path.join(team.team_path, "mcp_server.py") if team and hasattr(team, 'team_path') else None,
|
|
145
|
-
]
|
|
146
|
-
for path in default_paths:
|
|
147
|
-
if path and os.path.exists(path):
|
|
148
|
-
try:
|
|
149
|
-
loop = asyncio.get_event_loop()
|
|
150
|
-
except RuntimeError:
|
|
151
|
-
loop = asyncio.new_event_loop()
|
|
152
|
-
asyncio.set_event_loop(loop)
|
|
153
|
-
tools_llm, tool_map = loop.run_until_complete(connect_mcp(path))
|
|
154
|
-
if tools_llm:
|
|
155
|
-
break
|
|
156
|
-
|
|
157
|
-
# Ensure system message
|
|
158
|
-
if not messages or messages[0].get("role") != "system":
|
|
159
|
-
sys_msg = get_system_message(npc) if npc else "You are an AI assistant with access to tools."
|
|
160
|
-
if tools_llm:
|
|
161
|
-
sys_msg += f"\n\nYou have access to these tools: {', '.join(t['function']['name'] for t in tools_llm)}"
|
|
162
|
-
messages.insert(0, {"role": "system", "content": sys_msg})
|
|
163
|
-
|
|
164
|
-
# Handle initial command if provided (one-shot mode)
|
|
165
|
-
if initial_command:
|
|
166
|
-
resp = get_llm_response(
|
|
167
|
-
initial_command,
|
|
168
|
-
model=model,
|
|
169
|
-
provider=provider,
|
|
170
|
-
messages=messages,
|
|
171
|
-
tools=tools_llm if tools_llm else None,
|
|
172
|
-
tool_map=tool_map if tool_map else None,
|
|
173
|
-
auto_process_tool_calls=True,
|
|
174
|
-
npc=npc
|
|
175
|
-
)
|
|
176
|
-
messages = resp.get('messages', messages)
|
|
177
|
-
render_markdown(str(resp.get('response', '')))
|
|
178
|
-
context['output'] = resp.get('response', 'Done.')
|
|
179
|
-
context['messages'] = messages
|
|
180
|
-
# Don't enter REPL for one-shot
|
|
181
|
-
exit()
|
|
182
|
-
|
|
183
|
-
# REPL loop
|
|
184
|
-
while True:
|
|
185
|
-
try:
|
|
186
|
-
prompt_str = f"{npc_name}:corca> "
|
|
187
|
-
user_input = input(prompt_str).strip()
|
|
188
|
-
|
|
189
|
-
if not user_input:
|
|
190
|
-
continue
|
|
191
|
-
|
|
192
|
-
if user_input.lower() == "/cq":
|
|
193
|
-
print("Exiting corca mode.")
|
|
194
|
-
break
|
|
195
|
-
|
|
196
|
-
# Handle /tools to list available tools
|
|
197
|
-
if user_input.lower() == "/tools":
|
|
198
|
-
if tools_llm:
|
|
199
|
-
print(colored("Available MCP tools:", "cyan"))
|
|
200
|
-
for t in tools_llm:
|
|
201
|
-
print(f" - {t['function']['name']}: {t['function'].get('description', '')[:60]}")
|
|
202
|
-
else:
|
|
203
|
-
print(colored("No MCP tools connected.", "yellow"))
|
|
204
|
-
continue
|
|
205
|
-
|
|
206
|
-
# Handle /connect to connect to new MCP server
|
|
207
|
-
if user_input.startswith("/connect "):
|
|
208
|
-
new_path = user_input[9:].strip()
|
|
209
|
-
try:
|
|
210
|
-
loop = asyncio.get_event_loop()
|
|
211
|
-
except RuntimeError:
|
|
212
|
-
loop = asyncio.new_event_loop()
|
|
213
|
-
asyncio.set_event_loop(loop)
|
|
214
|
-
tools_llm, tool_map = loop.run_until_complete(connect_mcp(new_path))
|
|
215
|
-
continue
|
|
216
|
-
|
|
217
|
-
# Get LLM response with tools
|
|
218
|
-
resp = get_llm_response(
|
|
219
|
-
user_input,
|
|
220
|
-
model=model,
|
|
221
|
-
provider=provider,
|
|
222
|
-
messages=messages,
|
|
223
|
-
tools=tools_llm if tools_llm else None,
|
|
224
|
-
tool_map=tool_map if tool_map else None,
|
|
225
|
-
auto_process_tool_calls=True,
|
|
226
|
-
stream=False, # Tool calls don't work well with streaming
|
|
227
|
-
npc=npc
|
|
228
|
-
)
|
|
229
|
-
|
|
230
|
-
messages = resp.get('messages', messages)
|
|
231
|
-
response_text = resp.get('response', '')
|
|
232
|
-
render_markdown(str(response_text))
|
|
233
|
-
|
|
234
|
-
# Track usage
|
|
235
|
-
if 'usage' in resp and npc and hasattr(npc, 'shared_context'):
|
|
236
|
-
usage = resp['usage']
|
|
237
|
-
npc.shared_context['session_input_tokens'] += usage.get('input_tokens', 0)
|
|
238
|
-
npc.shared_context['session_output_tokens'] += usage.get('output_tokens', 0)
|
|
239
|
-
npc.shared_context['turn_count'] += 1
|
|
240
|
-
|
|
241
|
-
except KeyboardInterrupt:
|
|
242
|
-
print("\nUse '/cq' to exit or continue.")
|
|
243
|
-
continue
|
|
244
|
-
except EOFError:
|
|
245
|
-
print("\nExiting corca mode.")
|
|
246
|
-
break
|
|
247
|
-
|
|
248
|
-
context['output'] = "Exited corca mode."
|
|
249
|
-
context['messages'] = messages
|