npcsh 1.1.5__py3-none-any.whl → 1.1.7__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 +483 -336
- npcsh/npc_team/jinxs/code/sh.jinx +0 -1
- npcsh/npc_team/jinxs/code/sql.jinx +1 -3
- npcsh/npc_team/jinxs/utils/npc-studio.jinx +33 -38
- npcsh/npc_team/jinxs/utils/ots.jinx +34 -65
- npcsh/npc_team/jinxs/utils/search.jinx +130 -0
- npcsh/npc_team/jinxs/utils/vixynt.jinx +33 -45
- npcsh/routes.py +32 -14
- {npcsh-1.1.5.data → npcsh-1.1.7.data}/data/npcsh/npc_team/npc-studio.jinx +33 -38
- npcsh-1.1.7.data/data/npcsh/npc_team/ots.jinx +61 -0
- npcsh-1.1.7.data/data/npcsh/npc_team/search.jinx +130 -0
- {npcsh-1.1.5.data → npcsh-1.1.7.data}/data/npcsh/npc_team/sh.jinx +0 -1
- {npcsh-1.1.5.data → npcsh-1.1.7.data}/data/npcsh/npc_team/sql.jinx +1 -3
- {npcsh-1.1.5.data → npcsh-1.1.7.data}/data/npcsh/npc_team/vixynt.jinx +33 -45
- {npcsh-1.1.5.dist-info → npcsh-1.1.7.dist-info}/METADATA +1 -10
- {npcsh-1.1.5.dist-info → npcsh-1.1.7.dist-info}/RECORD +65 -73
- npcsh/npc_team/jinxs/utils/search/brainblast.jinx +0 -51
- npcsh/npc_team/jinxs/utils/search/kg_search.jinx +0 -43
- npcsh/npc_team/jinxs/utils/search/memory_search.jinx +0 -36
- npcsh/npc_team/jinxs/utils/search/rag.jinx +0 -70
- npcsh/npc_team/jinxs/utils/search/search.jinx +0 -192
- npcsh-1.1.5.data/data/npcsh/npc_team/brainblast.jinx +0 -51
- npcsh-1.1.5.data/data/npcsh/npc_team/kg_search.jinx +0 -43
- npcsh-1.1.5.data/data/npcsh/npc_team/memory_search.jinx +0 -36
- npcsh-1.1.5.data/data/npcsh/npc_team/ots.jinx +0 -92
- npcsh-1.1.5.data/data/npcsh/npc_team/rag.jinx +0 -70
- npcsh-1.1.5.data/data/npcsh/npc_team/search.jinx +0 -192
- {npcsh-1.1.5.data → npcsh-1.1.7.data}/data/npcsh/npc_team/alicanto.jinx +0 -0
- {npcsh-1.1.5.data → npcsh-1.1.7.data}/data/npcsh/npc_team/alicanto.npc +0 -0
- {npcsh-1.1.5.data → npcsh-1.1.7.data}/data/npcsh/npc_team/alicanto.png +0 -0
- {npcsh-1.1.5.data → npcsh-1.1.7.data}/data/npcsh/npc_team/breathe.jinx +0 -0
- {npcsh-1.1.5.data → npcsh-1.1.7.data}/data/npcsh/npc_team/build.jinx +0 -0
- {npcsh-1.1.5.data → npcsh-1.1.7.data}/data/npcsh/npc_team/compile.jinx +0 -0
- {npcsh-1.1.5.data → npcsh-1.1.7.data}/data/npcsh/npc_team/corca.jinx +0 -0
- {npcsh-1.1.5.data → npcsh-1.1.7.data}/data/npcsh/npc_team/corca.npc +0 -0
- {npcsh-1.1.5.data → npcsh-1.1.7.data}/data/npcsh/npc_team/corca.png +0 -0
- {npcsh-1.1.5.data → npcsh-1.1.7.data}/data/npcsh/npc_team/corca_example.png +0 -0
- {npcsh-1.1.5.data → npcsh-1.1.7.data}/data/npcsh/npc_team/edit_file.jinx +0 -0
- {npcsh-1.1.5.data → npcsh-1.1.7.data}/data/npcsh/npc_team/flush.jinx +0 -0
- {npcsh-1.1.5.data → npcsh-1.1.7.data}/data/npcsh/npc_team/foreman.npc +0 -0
- {npcsh-1.1.5.data → npcsh-1.1.7.data}/data/npcsh/npc_team/frederic.npc +0 -0
- {npcsh-1.1.5.data → npcsh-1.1.7.data}/data/npcsh/npc_team/frederic4.png +0 -0
- {npcsh-1.1.5.data → npcsh-1.1.7.data}/data/npcsh/npc_team/guac.jinx +0 -0
- {npcsh-1.1.5.data → npcsh-1.1.7.data}/data/npcsh/npc_team/guac.png +0 -0
- {npcsh-1.1.5.data → npcsh-1.1.7.data}/data/npcsh/npc_team/help.jinx +0 -0
- {npcsh-1.1.5.data → npcsh-1.1.7.data}/data/npcsh/npc_team/init.jinx +0 -0
- {npcsh-1.1.5.data → npcsh-1.1.7.data}/data/npcsh/npc_team/jinxs.jinx +0 -0
- {npcsh-1.1.5.data → npcsh-1.1.7.data}/data/npcsh/npc_team/kadiefa.npc +0 -0
- {npcsh-1.1.5.data → npcsh-1.1.7.data}/data/npcsh/npc_team/kadiefa.png +0 -0
- {npcsh-1.1.5.data → npcsh-1.1.7.data}/data/npcsh/npc_team/npcsh.ctx +0 -0
- {npcsh-1.1.5.data → npcsh-1.1.7.data}/data/npcsh/npc_team/npcsh_sibiji.png +0 -0
- {npcsh-1.1.5.data → npcsh-1.1.7.data}/data/npcsh/npc_team/plan.jinx +0 -0
- {npcsh-1.1.5.data → npcsh-1.1.7.data}/data/npcsh/npc_team/plonk.jinx +0 -0
- {npcsh-1.1.5.data → npcsh-1.1.7.data}/data/npcsh/npc_team/plonk.npc +0 -0
- {npcsh-1.1.5.data → npcsh-1.1.7.data}/data/npcsh/npc_team/plonk.png +0 -0
- {npcsh-1.1.5.data → npcsh-1.1.7.data}/data/npcsh/npc_team/plonkjr.npc +0 -0
- {npcsh-1.1.5.data → npcsh-1.1.7.data}/data/npcsh/npc_team/plonkjr.png +0 -0
- {npcsh-1.1.5.data → npcsh-1.1.7.data}/data/npcsh/npc_team/pti.jinx +0 -0
- {npcsh-1.1.5.data → npcsh-1.1.7.data}/data/npcsh/npc_team/python.jinx +0 -0
- {npcsh-1.1.5.data → npcsh-1.1.7.data}/data/npcsh/npc_team/roll.jinx +0 -0
- {npcsh-1.1.5.data → npcsh-1.1.7.data}/data/npcsh/npc_team/sample.jinx +0 -0
- {npcsh-1.1.5.data → npcsh-1.1.7.data}/data/npcsh/npc_team/serve.jinx +0 -0
- {npcsh-1.1.5.data → npcsh-1.1.7.data}/data/npcsh/npc_team/set.jinx +0 -0
- {npcsh-1.1.5.data → npcsh-1.1.7.data}/data/npcsh/npc_team/sibiji.npc +0 -0
- {npcsh-1.1.5.data → npcsh-1.1.7.data}/data/npcsh/npc_team/sibiji.png +0 -0
- {npcsh-1.1.5.data → npcsh-1.1.7.data}/data/npcsh/npc_team/sleep.jinx +0 -0
- {npcsh-1.1.5.data → npcsh-1.1.7.data}/data/npcsh/npc_team/spool.jinx +0 -0
- {npcsh-1.1.5.data → npcsh-1.1.7.data}/data/npcsh/npc_team/spool.png +0 -0
- {npcsh-1.1.5.data → npcsh-1.1.7.data}/data/npcsh/npc_team/trigger.jinx +0 -0
- {npcsh-1.1.5.data → npcsh-1.1.7.data}/data/npcsh/npc_team/wander.jinx +0 -0
- {npcsh-1.1.5.data → npcsh-1.1.7.data}/data/npcsh/npc_team/yap.jinx +0 -0
- {npcsh-1.1.5.data → npcsh-1.1.7.data}/data/npcsh/npc_team/yap.png +0 -0
- {npcsh-1.1.5.dist-info → npcsh-1.1.7.dist-info}/WHEEL +0 -0
- {npcsh-1.1.5.dist-info → npcsh-1.1.7.dist-info}/entry_points.txt +0 -0
- {npcsh-1.1.5.dist-info → npcsh-1.1.7.dist-info}/licenses/LICENSE +0 -0
- {npcsh-1.1.5.dist-info → npcsh-1.1.7.dist-info}/top_level.txt +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
npcsh/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
|
-
npcsh/_state.py,sha256=
|
|
2
|
+
npcsh/_state.py,sha256=VZs5snF-jWNXO5S8ALdiqdeQ9Ytw0q8qlBTEojtLtcI,101688
|
|
3
3
|
npcsh/alicanto.py,sha256=QCuTtMOgjFkjfrwZZdZBhfp-ETbimlOrXJQiZhClzT0,42160
|
|
4
4
|
npcsh/build.py,sha256=UuId0_rQml40A4U1KuvMekRyfB30s8HiLsXFJjqrBmM,7692
|
|
5
5
|
npcsh/corca.py,sha256=bhEzGlmnq_-VXksuQm6yEdDBgd_-x5WKlt27hw7YVcQ,60698
|
|
@@ -10,7 +10,7 @@ npcsh/npc.py,sha256=yqgqZDLwqniIbbDu-vaJf31fWVbOrtgNnFXfjDBk-D8,9853
|
|
|
10
10
|
npcsh/npcsh.py,sha256=T6iE_tAV_yWYkxFB1Z0qhYrQxrE-eyh1RmaIQA-3xDQ,9383
|
|
11
11
|
npcsh/plonk.py,sha256=IfOuiE5FBvk-EIsrWFjGy0SrNywDpn4a49E7seBtEmY,14246
|
|
12
12
|
npcsh/pti.py,sha256=UciiiH2Kz4ERQFy0-FX6BQEU2VxYQEUril-_Cvj76Y0,7853
|
|
13
|
-
npcsh/routes.py,sha256=
|
|
13
|
+
npcsh/routes.py,sha256=nlp_rd8eDyg2vTuXom9JMtmkWSzISu9u6Oc0lJjxKsQ,5024
|
|
14
14
|
npcsh/spool.py,sha256=oCive2dbn1o3UGUJnFMzfON6g4bOnauuzyyQBgul6RI,9839
|
|
15
15
|
npcsh/wander.py,sha256=8WOX8az8BXjizXGraEvu-ZVphi6PECKZzo9alTK4gmA,21730
|
|
16
16
|
npcsh/yap.py,sha256=QU-j9eg8zixXG6nyjoIYXsanJ4FjPnzhS4aJ241HLxw,18467
|
|
@@ -36,8 +36,8 @@ npcsh/npc_team/sibiji.png,sha256=1dlZb7J3E62FcVo9CVOzLb8nu1bIUV7cr97nsFocHCM,356
|
|
|
36
36
|
npcsh/npc_team/spool.png,sha256=LWTLkwDxXBfLuSUCX32_lo5yAmLYGsA67Xpsz-7MmWU,2876725
|
|
37
37
|
npcsh/npc_team/yap.png,sha256=_l7UbWnXJdsy4Mx-x5l9DT0R6ize3HTnkwQQnOFlI18,1548649
|
|
38
38
|
npcsh/npc_team/jinxs/code/python.jinx,sha256=lFJubdPVlGxSuUKCxsxjYG4_dnX2ATn8U9ChYKRmL5Q,389
|
|
39
|
-
npcsh/npc_team/jinxs/code/sh.jinx,sha256=
|
|
40
|
-
npcsh/npc_team/jinxs/code/sql.jinx,sha256=
|
|
39
|
+
npcsh/npc_team/jinxs/code/sh.jinx,sha256=Z_Cuok4FDUxuZGPCuqWS9D3TPI9SdkaZY4U_TCnie2g,666
|
|
40
|
+
npcsh/npc_team/jinxs/code/sql.jinx,sha256=U3scchBO3tqCQRIErC-W87eLtiCv-YGmN7ftqyIvcVc,582
|
|
41
41
|
npcsh/npc_team/jinxs/modes/alicanto.jinx,sha256=MknpYUX0eIvi5vG9gkoTkJvF_LcFbAp_hQ0qkYEBr3c,4014
|
|
42
42
|
npcsh/npc_team/jinxs/modes/corca.jinx,sha256=OFzxSHoBJ2Yoc34mtTpd9B_CtGdqbpgcCN3Qt39YJeA,1028
|
|
43
43
|
npcsh/npc_team/jinxs/modes/guac.jinx,sha256=UIVXw8c-m-lh10bxL2yl2n94TQ_SjZSwLP3sLFGv0k4,1616
|
|
@@ -49,84 +49,76 @@ npcsh/npc_team/jinxs/modes/yap.jinx,sha256=eaI665zjaLH2FUwHoO3iC1Uzo9bGA-a1UMtBR
|
|
|
49
49
|
npcsh/npc_team/jinxs/utils/breathe.jinx,sha256=WDw13P3Q0M03HdZu-vqhbOhefLjaMZ5oUcct_W4kUsY,739
|
|
50
50
|
npcsh/npc_team/jinxs/utils/edit_file.jinx,sha256=jExsHctvapG2xlze6E7ZR3oSLS9hJTYKKd41dQwgOLw,3488
|
|
51
51
|
npcsh/npc_team/jinxs/utils/flush.jinx,sha256=ngzFu4-dnKkqqL0QM9iX9XBxyWOmQdVcJTFb1GhajVo,1422
|
|
52
|
-
npcsh/npc_team/jinxs/utils/npc-studio.jinx,sha256=
|
|
53
|
-
npcsh/npc_team/jinxs/utils/ots.jinx,sha256=
|
|
52
|
+
npcsh/npc_team/jinxs/utils/npc-studio.jinx,sha256=0aY-z399BRIXIL3TLMTcYDiHjDm-krZy0CnYfiskQUo,2234
|
|
53
|
+
npcsh/npc_team/jinxs/utils/ots.jinx,sha256=5Dpsyf0h2M80mkdZnouMp1PSK9S0TCPrINRLoP_1tOc,2303
|
|
54
54
|
npcsh/npc_team/jinxs/utils/plan.jinx,sha256=hCIG9nGI56C1SeGuGAUcR3XnJ25kHaDnUn1VCv8vszY,1234
|
|
55
55
|
npcsh/npc_team/jinxs/utils/roll.jinx,sha256=FHoqXXqFgucaW7UJW_14DcRcRlVPBgFeaPJPoATx5BY,2882
|
|
56
56
|
npcsh/npc_team/jinxs/utils/sample.jinx,sha256=7cWwfAZFgWxaTkIL1gpFFryQ3mjvVjoWYAov-zOFn_E,2237
|
|
57
|
+
npcsh/npc_team/jinxs/utils/search.jinx,sha256=7R37sElFo-XooRNKYqHaouQ-lOxmAxew_8uSXQfNP_Q,5421
|
|
57
58
|
npcsh/npc_team/jinxs/utils/serve.jinx,sha256=qly_3MThU3TRyJI2grHlhYOqEY1VT-XxubPIuWdZrpU,1056
|
|
58
59
|
npcsh/npc_team/jinxs/utils/sleep.jinx,sha256=c-7Dn4aLuX7WyBVcvuk3sqcbIutqKIz1N9sBfPNzhck,5301
|
|
59
60
|
npcsh/npc_team/jinxs/utils/trigger.jinx,sha256=rS913e2qJzNBC0wmmecgzN3f4v8o1os8AZQOPjnW8ho,1456
|
|
60
|
-
npcsh/npc_team/jinxs/utils/vixynt.jinx,sha256=
|
|
61
|
+
npcsh/npc_team/jinxs/utils/vixynt.jinx,sha256=ECNE02omzgvJ2B8ZO8K6OylMa3lLGBNEEeFZ-oXiKC0,4070
|
|
61
62
|
npcsh/npc_team/jinxs/utils/core/build.jinx,sha256=QrShGspHwP1z073334vhUIIJZ_3pMJWN_DX_DPPVslU,2771
|
|
62
63
|
npcsh/npc_team/jinxs/utils/core/compile.jinx,sha256=Rjdm5jf3ech1E3cnpLz-o2tbJuVvEoQGAp0FQRAU7qo,2526
|
|
63
64
|
npcsh/npc_team/jinxs/utils/core/help.jinx,sha256=OquhUEgcYZp-gu5Wgl3pOZnswxGQ96RoNG08tHjC9-4,2091
|
|
64
65
|
npcsh/npc_team/jinxs/utils/core/init.jinx,sha256=QBb1uOTvMlD-x3S7zPASH5TBZRwNhMQvK6t3DdC2mVw,1596
|
|
65
66
|
npcsh/npc_team/jinxs/utils/core/jinxs.jinx,sha256=rF432zHrVeccbGKm5tHxd_bZ7OQk355xB6LTlEIXiuI,1269
|
|
66
67
|
npcsh/npc_team/jinxs/utils/core/set.jinx,sha256=hQY_0muEtnWtfXsdK9cPwSvIevCimiJJn1-yhGC_VxM,1381
|
|
67
|
-
npcsh/
|
|
68
|
-
npcsh/
|
|
69
|
-
npcsh/
|
|
70
|
-
npcsh/
|
|
71
|
-
npcsh/
|
|
72
|
-
npcsh-1.1.
|
|
73
|
-
npcsh-1.1.
|
|
74
|
-
npcsh-1.1.
|
|
75
|
-
npcsh-1.1.
|
|
76
|
-
npcsh-1.1.
|
|
77
|
-
npcsh-1.1.
|
|
78
|
-
npcsh-1.1.
|
|
79
|
-
npcsh-1.1.
|
|
80
|
-
npcsh-1.1.
|
|
81
|
-
npcsh-1.1.
|
|
82
|
-
npcsh-1.1.
|
|
83
|
-
npcsh-1.1.
|
|
84
|
-
npcsh-1.1.
|
|
85
|
-
npcsh-1.1.
|
|
86
|
-
npcsh-1.1.
|
|
87
|
-
npcsh-1.1.
|
|
88
|
-
npcsh-1.1.
|
|
89
|
-
npcsh-1.1.
|
|
90
|
-
npcsh-1.1.
|
|
91
|
-
npcsh-1.1.
|
|
92
|
-
npcsh-1.1.
|
|
93
|
-
npcsh-1.1.
|
|
94
|
-
npcsh-1.1.
|
|
95
|
-
npcsh-1.1.
|
|
96
|
-
npcsh-1.1.
|
|
97
|
-
npcsh-1.1.
|
|
98
|
-
npcsh-1.1.
|
|
99
|
-
npcsh-1.1.
|
|
100
|
-
npcsh-1.1.
|
|
101
|
-
npcsh-1.1.
|
|
102
|
-
npcsh-1.1.
|
|
103
|
-
npcsh-1.1.
|
|
104
|
-
npcsh-1.1.
|
|
105
|
-
npcsh-1.1.
|
|
106
|
-
npcsh-1.1.
|
|
107
|
-
npcsh-1.1.
|
|
108
|
-
npcsh-1.1.
|
|
109
|
-
npcsh-1.1.
|
|
110
|
-
npcsh-1.1.
|
|
111
|
-
npcsh-1.1.
|
|
112
|
-
npcsh-1.1.
|
|
113
|
-
npcsh-1.1.
|
|
114
|
-
npcsh-1.1.
|
|
115
|
-
npcsh-1.1.
|
|
116
|
-
npcsh-1.1.
|
|
117
|
-
npcsh-1.1.
|
|
118
|
-
npcsh-1.1.
|
|
119
|
-
npcsh-1.1.
|
|
120
|
-
npcsh-1.1.
|
|
121
|
-
npcsh-1.1.
|
|
122
|
-
npcsh-1.1.
|
|
123
|
-
npcsh-1.1.
|
|
124
|
-
npcsh-1.1.5.data/data/npcsh/npc_team/wander.jinx,sha256=Svc6zjmoXr4BbDg5SN4DB1Byhh75AmIeAItcJCBIlcc,3513
|
|
125
|
-
npcsh-1.1.5.data/data/npcsh/npc_team/yap.jinx,sha256=eaI665zjaLH2FUwHoO3iC1Uzo9bGA-a1UMtBRBTEHC0,898
|
|
126
|
-
npcsh-1.1.5.data/data/npcsh/npc_team/yap.png,sha256=_l7UbWnXJdsy4Mx-x5l9DT0R6ize3HTnkwQQnOFlI18,1548649
|
|
127
|
-
npcsh-1.1.5.dist-info/licenses/LICENSE,sha256=IKBvAECHP-aCiJtE4cHGCE5Yl0tozYz02PomGeWS3y4,1070
|
|
128
|
-
npcsh-1.1.5.dist-info/METADATA,sha256=j6DiStTuCDO45E5KuL5uGeMLg5kz_kjNXKZivVvBGdk,25841
|
|
129
|
-
npcsh-1.1.5.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
130
|
-
npcsh-1.1.5.dist-info/entry_points.txt,sha256=S5yIuGm8ZXQ4siHYgN5gs0J7bxgobSEULXf8L5HaW5o,206
|
|
131
|
-
npcsh-1.1.5.dist-info/top_level.txt,sha256=kHSNgKMCkfjV95-DH0YSp1LLBi0HXdF3w57j7MQON3E,6
|
|
132
|
-
npcsh-1.1.5.dist-info/RECORD,,
|
|
68
|
+
npcsh-1.1.7.data/data/npcsh/npc_team/alicanto.jinx,sha256=MknpYUX0eIvi5vG9gkoTkJvF_LcFbAp_hQ0qkYEBr3c,4014
|
|
69
|
+
npcsh-1.1.7.data/data/npcsh/npc_team/alicanto.npc,sha256=y9yDY3lq8ZwxQxpnrgle8w5IJwZqvxDepZFU4OaZCtg,148
|
|
70
|
+
npcsh-1.1.7.data/data/npcsh/npc_team/alicanto.png,sha256=A7xeMbcoKGjlkELxJEVifCEZLVWbOKZarTN5ZFJG-FM,3519858
|
|
71
|
+
npcsh-1.1.7.data/data/npcsh/npc_team/breathe.jinx,sha256=WDw13P3Q0M03HdZu-vqhbOhefLjaMZ5oUcct_W4kUsY,739
|
|
72
|
+
npcsh-1.1.7.data/data/npcsh/npc_team/build.jinx,sha256=QrShGspHwP1z073334vhUIIJZ_3pMJWN_DX_DPPVslU,2771
|
|
73
|
+
npcsh-1.1.7.data/data/npcsh/npc_team/compile.jinx,sha256=Rjdm5jf3ech1E3cnpLz-o2tbJuVvEoQGAp0FQRAU7qo,2526
|
|
74
|
+
npcsh-1.1.7.data/data/npcsh/npc_team/corca.jinx,sha256=OFzxSHoBJ2Yoc34mtTpd9B_CtGdqbpgcCN3Qt39YJeA,1028
|
|
75
|
+
npcsh-1.1.7.data/data/npcsh/npc_team/corca.npc,sha256=NtZW1mQ_AMOHlfMCfl8A3uA00UMuHuO95FzRg6kUixo,631
|
|
76
|
+
npcsh-1.1.7.data/data/npcsh/npc_team/corca.png,sha256=0lF70hKu6tY-37YmIPVF2cuaPzvnQ4-UtQOzuAbKEf4,1666776
|
|
77
|
+
npcsh-1.1.7.data/data/npcsh/npc_team/corca_example.png,sha256=p0lVTuwaps4-F-3k4wgp9d897YPyn6FGZugtXMUQjj8,28777
|
|
78
|
+
npcsh-1.1.7.data/data/npcsh/npc_team/edit_file.jinx,sha256=jExsHctvapG2xlze6E7ZR3oSLS9hJTYKKd41dQwgOLw,3488
|
|
79
|
+
npcsh-1.1.7.data/data/npcsh/npc_team/flush.jinx,sha256=ngzFu4-dnKkqqL0QM9iX9XBxyWOmQdVcJTFb1GhajVo,1422
|
|
80
|
+
npcsh-1.1.7.data/data/npcsh/npc_team/foreman.npc,sha256=WqB8jLfBToGmr8c1vip1KOnTHxfXlGXwDUGnZoDMQr0,327
|
|
81
|
+
npcsh-1.1.7.data/data/npcsh/npc_team/frederic.npc,sha256=EE2dOUItp-VKuW3ZMSHffmIEO4evjPcU2W_C4P3WXbY,362
|
|
82
|
+
npcsh-1.1.7.data/data/npcsh/npc_team/frederic4.png,sha256=ll8uoV0npnPp5HVJWv7h0xDSeuq4pqsk_gYGBHLS0VY,1590744
|
|
83
|
+
npcsh-1.1.7.data/data/npcsh/npc_team/guac.jinx,sha256=UIVXw8c-m-lh10bxL2yl2n94TQ_SjZSwLP3sLFGv0k4,1616
|
|
84
|
+
npcsh-1.1.7.data/data/npcsh/npc_team/guac.png,sha256=MCE7eJuEJwLJEzc9FS7lL62Mm-38jQRHkxXogPfOTuw,211470
|
|
85
|
+
npcsh-1.1.7.data/data/npcsh/npc_team/help.jinx,sha256=OquhUEgcYZp-gu5Wgl3pOZnswxGQ96RoNG08tHjC9-4,2091
|
|
86
|
+
npcsh-1.1.7.data/data/npcsh/npc_team/init.jinx,sha256=QBb1uOTvMlD-x3S7zPASH5TBZRwNhMQvK6t3DdC2mVw,1596
|
|
87
|
+
npcsh-1.1.7.data/data/npcsh/npc_team/jinxs.jinx,sha256=rF432zHrVeccbGKm5tHxd_bZ7OQk355xB6LTlEIXiuI,1269
|
|
88
|
+
npcsh-1.1.7.data/data/npcsh/npc_team/kadiefa.npc,sha256=Yl5a4wrfe4F2f6Ndw_ukzlVVX7NE9g_mG-3QqJSkg_o,381
|
|
89
|
+
npcsh-1.1.7.data/data/npcsh/npc_team/kadiefa.png,sha256=3CAwL8crKIwJko6o75Z6OYYEEM9Rk--yGzCJg7zoszg,3062528
|
|
90
|
+
npcsh-1.1.7.data/data/npcsh/npc_team/npc-studio.jinx,sha256=0aY-z399BRIXIL3TLMTcYDiHjDm-krZy0CnYfiskQUo,2234
|
|
91
|
+
npcsh-1.1.7.data/data/npcsh/npc_team/npcsh.ctx,sha256=-jKYaPm2YbZHAGgWAXhyPIwhiNe1H1ZRFg1Zc7tHSxk,1049
|
|
92
|
+
npcsh-1.1.7.data/data/npcsh/npc_team/npcsh_sibiji.png,sha256=9fUqgYMsSHmaH-kBTBQ7N5UCS5-eLZF94Log0O3mtFg,4544
|
|
93
|
+
npcsh-1.1.7.data/data/npcsh/npc_team/ots.jinx,sha256=5Dpsyf0h2M80mkdZnouMp1PSK9S0TCPrINRLoP_1tOc,2303
|
|
94
|
+
npcsh-1.1.7.data/data/npcsh/npc_team/plan.jinx,sha256=hCIG9nGI56C1SeGuGAUcR3XnJ25kHaDnUn1VCv8vszY,1234
|
|
95
|
+
npcsh-1.1.7.data/data/npcsh/npc_team/plonk.jinx,sha256=3f5MvkYBFh5Z3iDhs5vFxPT6acgw7OZLqVA-Mxtm_vc,2559
|
|
96
|
+
npcsh-1.1.7.data/data/npcsh/npc_team/plonk.npc,sha256=u1m2a1D512XGQ2kC3eWDAY8Y2IvpkNU73DI_CPE65UE,90
|
|
97
|
+
npcsh-1.1.7.data/data/npcsh/npc_team/plonk.png,sha256=IU5ey-Dl4HEKlwnf75RSWNSHpF8rVqGmdbsa0deL4rQ,2727773
|
|
98
|
+
npcsh-1.1.7.data/data/npcsh/npc_team/plonkjr.npc,sha256=It-i-BEuG0XddKk0d85onk2aJr9Pe5pLnJzNaCWaQIM,87
|
|
99
|
+
npcsh-1.1.7.data/data/npcsh/npc_team/plonkjr.png,sha256=MqLEGwsyECUeODZIti0HQQrMMVxA6XERpW01R06NbpY,2606710
|
|
100
|
+
npcsh-1.1.7.data/data/npcsh/npc_team/pti.jinx,sha256=Yw32GQS9LvYkukEfjq6R1GLAL6fWACYBz9JuVecZJEo,1126
|
|
101
|
+
npcsh-1.1.7.data/data/npcsh/npc_team/python.jinx,sha256=lFJubdPVlGxSuUKCxsxjYG4_dnX2ATn8U9ChYKRmL5Q,389
|
|
102
|
+
npcsh-1.1.7.data/data/npcsh/npc_team/roll.jinx,sha256=FHoqXXqFgucaW7UJW_14DcRcRlVPBgFeaPJPoATx5BY,2882
|
|
103
|
+
npcsh-1.1.7.data/data/npcsh/npc_team/sample.jinx,sha256=7cWwfAZFgWxaTkIL1gpFFryQ3mjvVjoWYAov-zOFn_E,2237
|
|
104
|
+
npcsh-1.1.7.data/data/npcsh/npc_team/search.jinx,sha256=7R37sElFo-XooRNKYqHaouQ-lOxmAxew_8uSXQfNP_Q,5421
|
|
105
|
+
npcsh-1.1.7.data/data/npcsh/npc_team/serve.jinx,sha256=qly_3MThU3TRyJI2grHlhYOqEY1VT-XxubPIuWdZrpU,1056
|
|
106
|
+
npcsh-1.1.7.data/data/npcsh/npc_team/set.jinx,sha256=hQY_0muEtnWtfXsdK9cPwSvIevCimiJJn1-yhGC_VxM,1381
|
|
107
|
+
npcsh-1.1.7.data/data/npcsh/npc_team/sh.jinx,sha256=Z_Cuok4FDUxuZGPCuqWS9D3TPI9SdkaZY4U_TCnie2g,666
|
|
108
|
+
npcsh-1.1.7.data/data/npcsh/npc_team/sibiji.npc,sha256=Hb4wXKIObKKgibwnio5hLec9yd_9bKDCA87Nm2zijFA,216
|
|
109
|
+
npcsh-1.1.7.data/data/npcsh/npc_team/sibiji.png,sha256=1dlZb7J3E62FcVo9CVOzLb8nu1bIUV7cr97nsFocHCM,35615
|
|
110
|
+
npcsh-1.1.7.data/data/npcsh/npc_team/sleep.jinx,sha256=c-7Dn4aLuX7WyBVcvuk3sqcbIutqKIz1N9sBfPNzhck,5301
|
|
111
|
+
npcsh-1.1.7.data/data/npcsh/npc_team/spool.jinx,sha256=A4upAI4LnXxYUjY0Rz1_kAhRCDpz08XWPTgisiH06A4,1664
|
|
112
|
+
npcsh-1.1.7.data/data/npcsh/npc_team/spool.png,sha256=LWTLkwDxXBfLuSUCX32_lo5yAmLYGsA67Xpsz-7MmWU,2876725
|
|
113
|
+
npcsh-1.1.7.data/data/npcsh/npc_team/sql.jinx,sha256=U3scchBO3tqCQRIErC-W87eLtiCv-YGmN7ftqyIvcVc,582
|
|
114
|
+
npcsh-1.1.7.data/data/npcsh/npc_team/trigger.jinx,sha256=rS913e2qJzNBC0wmmecgzN3f4v8o1os8AZQOPjnW8ho,1456
|
|
115
|
+
npcsh-1.1.7.data/data/npcsh/npc_team/vixynt.jinx,sha256=ECNE02omzgvJ2B8ZO8K6OylMa3lLGBNEEeFZ-oXiKC0,4070
|
|
116
|
+
npcsh-1.1.7.data/data/npcsh/npc_team/wander.jinx,sha256=Svc6zjmoXr4BbDg5SN4DB1Byhh75AmIeAItcJCBIlcc,3513
|
|
117
|
+
npcsh-1.1.7.data/data/npcsh/npc_team/yap.jinx,sha256=eaI665zjaLH2FUwHoO3iC1Uzo9bGA-a1UMtBRBTEHC0,898
|
|
118
|
+
npcsh-1.1.7.data/data/npcsh/npc_team/yap.png,sha256=_l7UbWnXJdsy4Mx-x5l9DT0R6ize3HTnkwQQnOFlI18,1548649
|
|
119
|
+
npcsh-1.1.7.dist-info/licenses/LICENSE,sha256=IKBvAECHP-aCiJtE4cHGCE5Yl0tozYz02PomGeWS3y4,1070
|
|
120
|
+
npcsh-1.1.7.dist-info/METADATA,sha256=GARFW0KJF_Se51zHQvaB1QCcCICBFUikwCRVGdA2sC4,25292
|
|
121
|
+
npcsh-1.1.7.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
122
|
+
npcsh-1.1.7.dist-info/entry_points.txt,sha256=S5yIuGm8ZXQ4siHYgN5gs0J7bxgobSEULXf8L5HaW5o,206
|
|
123
|
+
npcsh-1.1.7.dist-info/top_level.txt,sha256=kHSNgKMCkfjV95-DH0YSp1LLBi0HXdF3w57j7MQON3E,6
|
|
124
|
+
npcsh-1.1.7.dist-info/RECORD,,
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
jinx_name: "brainblast"
|
|
2
|
-
description: "Execute an advanced chunked search on command history"
|
|
3
|
-
inputs:
|
|
4
|
-
- search_query: "" # Required search terms.
|
|
5
|
-
- history_db_path: "~/npcsh_history.db" # Path to the command history database.
|
|
6
|
-
steps:
|
|
7
|
-
- name: "execute_brainblast"
|
|
8
|
-
engine: "python"
|
|
9
|
-
code: |
|
|
10
|
-
import os
|
|
11
|
-
import traceback
|
|
12
|
-
from npcpy.memory.command_history import CommandHistory
|
|
13
|
-
from npcpy.memory.search import execute_brainblast_command
|
|
14
|
-
|
|
15
|
-
search_query = context.get('search_query')
|
|
16
|
-
history_db_path = context.get('history_db_path')
|
|
17
|
-
output_messages = context.get('messages', [])
|
|
18
|
-
|
|
19
|
-
if not search_query or not search_query.strip():
|
|
20
|
-
context['output'] = "Usage: /brainblast <search_terms>"
|
|
21
|
-
context['messages'] = output_messages
|
|
22
|
-
exit()
|
|
23
|
-
|
|
24
|
-
command_history = context.get('command_history')
|
|
25
|
-
if not command_history:
|
|
26
|
-
try:
|
|
27
|
-
command_history = CommandHistory(os.path.expanduser(history_db_path))
|
|
28
|
-
context['command_history'] = command_history # Add to context for potential reuse
|
|
29
|
-
except Exception as e:
|
|
30
|
-
context['output'] = f"Error connecting to command history: {e}"
|
|
31
|
-
context['messages'] = output_messages
|
|
32
|
-
exit()
|
|
33
|
-
|
|
34
|
-
try:
|
|
35
|
-
# The original handler passed **kwargs, so we pass current context
|
|
36
|
-
# The execute_brainblast_command might filter out 'messages' itself
|
|
37
|
-
result = execute_brainblast_command(
|
|
38
|
-
command=search_query,
|
|
39
|
-
command_history=command_history,
|
|
40
|
-
**{k:v for k,v in context.items() if k != 'messages'}) # Exclude messages if not expected
|
|
41
|
-
|
|
42
|
-
if isinstance(result, dict):
|
|
43
|
-
context['output'] = result.get('output', 'Brainblast search executed.')
|
|
44
|
-
context['messages'] = result.get('messages', output_messages)
|
|
45
|
-
else:
|
|
46
|
-
context['output'] = str(result)
|
|
47
|
-
context['messages'] = output_messages
|
|
48
|
-
except Exception as e:
|
|
49
|
-
traceback.print_exc()
|
|
50
|
-
context['output'] = f"Error executing brainblast command: {e}"
|
|
51
|
-
context['messages'] = output_messages
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
jinx_name: search_kg
|
|
2
|
-
description: Search knowledge graph for relevant facts
|
|
3
|
-
inputs:
|
|
4
|
-
- query
|
|
5
|
-
steps:
|
|
6
|
-
- name: retrieve_facts
|
|
7
|
-
engine: python
|
|
8
|
-
code: |
|
|
9
|
-
from npcpy.memory.command_history import load_kg_from_db
|
|
10
|
-
import os
|
|
11
|
-
|
|
12
|
-
kg = load_kg_from_db(
|
|
13
|
-
command_history.engine,
|
|
14
|
-
team.name if team else '__none__',
|
|
15
|
-
npc.name if hasattr(npc, 'name') else '__none__',
|
|
16
|
-
os.getcwd()
|
|
17
|
-
)
|
|
18
|
-
|
|
19
|
-
query_lower = '{{ query }}'.lower()
|
|
20
|
-
matching_facts = []
|
|
21
|
-
|
|
22
|
-
if kg and 'facts' in kg:
|
|
23
|
-
for fact in kg['facts']:
|
|
24
|
-
statement = fact.get('statement', '').lower()
|
|
25
|
-
if query_lower in statement:
|
|
26
|
-
matching_facts.append(fact)
|
|
27
|
-
|
|
28
|
-
output = []
|
|
29
|
-
for i, fact in enumerate(matching_facts[:10], 1):
|
|
30
|
-
statement = fact.get('statement', '')
|
|
31
|
-
fact_type = fact.get('type', 'unknown')
|
|
32
|
-
output.append(f"{i}. [{fact_type}] {statement}")
|
|
33
|
-
|
|
34
|
-
output = "\n".join(output) if output else "No facts found"
|
|
35
|
-
|
|
36
|
-
- name: analyze_facts
|
|
37
|
-
engine: natural
|
|
38
|
-
code: |
|
|
39
|
-
Knowledge graph facts for query "{{ query }}":
|
|
40
|
-
|
|
41
|
-
{{ retrieve_facts }}
|
|
42
|
-
|
|
43
|
-
Analyze how these facts relate to the query.
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
jinx_name: search_memories
|
|
2
|
-
description: Search through approved memories for relevant context
|
|
3
|
-
inputs:
|
|
4
|
-
- query
|
|
5
|
-
steps:
|
|
6
|
-
- name: retrieve_memories
|
|
7
|
-
engine: python
|
|
8
|
-
code: |
|
|
9
|
-
from npcsh._state import get_relevant_memories
|
|
10
|
-
import os
|
|
11
|
-
|
|
12
|
-
memories = get_relevant_memories(
|
|
13
|
-
command_history=command_history,
|
|
14
|
-
npc_name=npc.name if hasattr(npc, 'name') else '__none__',
|
|
15
|
-
team_name=team.name if team else '__none__',
|
|
16
|
-
path=os.getcwd(),
|
|
17
|
-
query='{{ query }}',
|
|
18
|
-
max_memories=10,
|
|
19
|
-
state=state
|
|
20
|
-
)
|
|
21
|
-
|
|
22
|
-
output = []
|
|
23
|
-
for i, mem in enumerate(memories, 1):
|
|
24
|
-
content = mem.get('final_memory', mem.get('initial_memory', ''))
|
|
25
|
-
output.append(f"{i}. {content}")
|
|
26
|
-
|
|
27
|
-
output = "\n".join(output) if output else "No memories found"
|
|
28
|
-
|
|
29
|
-
- name: format_results
|
|
30
|
-
engine: natural
|
|
31
|
-
code: |
|
|
32
|
-
Found memories for query "{{ query }}":
|
|
33
|
-
|
|
34
|
-
{{ retrieve_memories }}
|
|
35
|
-
|
|
36
|
-
Summarize the key points from these memories.
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
jinx_name: "rag"
|
|
2
|
-
description: "Execute a RAG command using ChromaDB embeddings with optional file input (-f/--file)"
|
|
3
|
-
inputs:
|
|
4
|
-
- query: "" # Required search query for RAG.
|
|
5
|
-
- file_paths: "" # Optional comma-separated file paths to include in RAG.
|
|
6
|
-
- vector_db_path: "~/npcsh_chroma.db" # Path to the ChromaDB vector database.
|
|
7
|
-
- emodel: "" # Embedding model to use. Defaults to NPCSH_EMBEDDING_MODEL or NPC's model.
|
|
8
|
-
- eprovider: "" # Embedding provider to use. Defaults to NPCSH_EMBEDDING_PROVIDER or NPC's provider.
|
|
9
|
-
steps:
|
|
10
|
-
- name: "execute_rag"
|
|
11
|
-
engine: "python"
|
|
12
|
-
code: |
|
|
13
|
-
import os
|
|
14
|
-
import traceback
|
|
15
|
-
from npcpy.data.load import load_file_contents
|
|
16
|
-
from npcpy.memory.search import execute_rag_command
|
|
17
|
-
# Assuming NPCSH_EMBEDDING_MODEL and NPCSH_EMBEDDING_PROVIDER are accessible
|
|
18
|
-
|
|
19
|
-
query = context.get('query')
|
|
20
|
-
file_paths_str = context.get('file_paths')
|
|
21
|
-
vector_db_path = context.get('vector_db_path')
|
|
22
|
-
embedding_model = context.get('emodel')
|
|
23
|
-
embedding_provider = context.get('eprovider')
|
|
24
|
-
output_messages = context.get('messages', [])
|
|
25
|
-
current_npc = context.get('npc')
|
|
26
|
-
|
|
27
|
-
file_paths = []
|
|
28
|
-
if file_paths_str and file_paths_str.strip():
|
|
29
|
-
file_paths = [os.path.abspath(os.path.expanduser(p.strip())) for p in file_paths_str.split(',')]
|
|
30
|
-
|
|
31
|
-
if not query and not file_paths:
|
|
32
|
-
context['output'] = "Usage: /rag [-f file_path] <query>"
|
|
33
|
-
context['messages'] = output_messages
|
|
34
|
-
exit()
|
|
35
|
-
|
|
36
|
-
# Fallback for model/provider if not explicitly set in Jinx inputs
|
|
37
|
-
if not embedding_model and current_npc and current_npc.model:
|
|
38
|
-
embedding_model = current_npc.model
|
|
39
|
-
if not embedding_provider and current_npc and current_npc.provider:
|
|
40
|
-
embedding_provider = current_npc.provider
|
|
41
|
-
|
|
42
|
-
# Final fallbacks (these would ideally come from npcsh._state config)
|
|
43
|
-
if not embedding_model: embedding_model = "nomic-ai/nomic-embed-text-v1.5" # Example default
|
|
44
|
-
if not embedding_provider: embedding_provider = "ollama" # Example default
|
|
45
|
-
|
|
46
|
-
try:
|
|
47
|
-
file_contents = []
|
|
48
|
-
for file_path in file_paths:
|
|
49
|
-
try:
|
|
50
|
-
chunks = load_file_contents(file_path)
|
|
51
|
-
file_name = os.path.basename(file_path)
|
|
52
|
-
file_contents.extend([f"[{file_name}] {chunk}" for chunk in chunks])
|
|
53
|
-
except Exception as file_err:
|
|
54
|
-
file_contents.append(f"Error processing file {file_path}: {str(file_err)}")
|
|
55
|
-
|
|
56
|
-
result = execute_rag_command(
|
|
57
|
-
command=query,
|
|
58
|
-
vector_db_path=os.path.expanduser(vector_db_path),
|
|
59
|
-
embedding_model=embedding_model,
|
|
60
|
-
embedding_provider=embedding_provider,
|
|
61
|
-
file_contents=file_contents if file_paths else None,
|
|
62
|
-
**{k:v for k,v in context.items() if k not in ['messages', 'query', 'file_paths']} # Pass other context
|
|
63
|
-
)
|
|
64
|
-
context['output'] = result.get('response')
|
|
65
|
-
context['messages'] = result.get('messages', output_messages)
|
|
66
|
-
|
|
67
|
-
except Exception as e:
|
|
68
|
-
traceback.print_exc()
|
|
69
|
-
context['output'] = f"Error executing RAG command: {e}"
|
|
70
|
-
context['messages'] = output_messages
|
|
@@ -1,192 +0,0 @@
|
|
|
1
|
-
jinx_name: "search"
|
|
2
|
-
description: "Execute web search or memory/KG search. Usage: /search [-m/-mem | -kg] <query>"
|
|
3
|
-
inputs:
|
|
4
|
-
- query: "" # Required search query.
|
|
5
|
-
- search_type: "web" # Type of search: "web", "memory", or "kg".
|
|
6
|
-
- sprovider: "" # Search provider for web search. Defaults to NPCSH_SEARCH_PROVIDER.
|
|
7
|
-
- history_db_path: "~/npcsh_history.db" # Path to the command history database for memory/KG search.
|
|
8
|
-
steps:
|
|
9
|
-
- name: "execute_search"
|
|
10
|
-
engine: "python"
|
|
11
|
-
code: |
|
|
12
|
-
import os
|
|
13
|
-
import traceback
|
|
14
|
-
from npcpy.data.web import search_web
|
|
15
|
-
from npcpy.memory.command_history import CommandHistory, load_kg_from_db, save_kg_to_db # For KG search
|
|
16
|
-
from npcsh._state import get_relevant_memories # For memory search
|
|
17
|
-
# Assuming NPCSH_SEARCH_PROVIDER is accessible
|
|
18
|
-
|
|
19
|
-
query = context.get('query')
|
|
20
|
-
search_type = context.get('search_type')
|
|
21
|
-
search_provider = context.get('sprovider')
|
|
22
|
-
history_db_path = context.get('history_db_path')
|
|
23
|
-
output_messages = context.get('messages', [])
|
|
24
|
-
current_npc = context.get('npc')
|
|
25
|
-
current_team = context.get('team')
|
|
26
|
-
|
|
27
|
-
if not query or not query.strip():
|
|
28
|
-
context['output'] = (
|
|
29
|
-
"Usage:\n"
|
|
30
|
-
" /search <query> - Web search\n"
|
|
31
|
-
" /search -m <query> - Memory search\n"
|
|
32
|
-
" /search -kg <query> - Knowledge graph search"
|
|
33
|
-
)
|
|
34
|
-
context['messages'] = output_messages
|
|
35
|
-
exit()
|
|
36
|
-
|
|
37
|
-
def search_memories(query_str, current_context, output_msgs):
|
|
38
|
-
command_history = current_context.get('command_history')
|
|
39
|
-
if not command_history:
|
|
40
|
-
db_path = os.path.expanduser(current_context.get("history_db_path", "~/npcsh_history.db"))
|
|
41
|
-
try:
|
|
42
|
-
command_history = CommandHistory(db_path)
|
|
43
|
-
current_context['command_history'] = command_history
|
|
44
|
-
except Exception as e:
|
|
45
|
-
return {"output": f"Error connecting to history: {e}", "messages": output_msgs}
|
|
46
|
-
|
|
47
|
-
npc_name = current_context.get('npc_name', '__none__')
|
|
48
|
-
team_name = current_context.get('team_name', '__none__')
|
|
49
|
-
current_path = current_context.get('current_path', os.getcwd())
|
|
50
|
-
state = current_context.get('state')
|
|
51
|
-
|
|
52
|
-
try:
|
|
53
|
-
memories = get_relevant_memories(
|
|
54
|
-
command_history=command_history,
|
|
55
|
-
npc_name=npc_name,
|
|
56
|
-
team_name=team_name,
|
|
57
|
-
path=current_path,
|
|
58
|
-
query=query_str,
|
|
59
|
-
max_memories=10,
|
|
60
|
-
state=state
|
|
61
|
-
)
|
|
62
|
-
|
|
63
|
-
if not memories:
|
|
64
|
-
output = f"No memories found for query: '{query_str}'"
|
|
65
|
-
else:
|
|
66
|
-
output = f"Found {len(memories)} memories:\n\n"
|
|
67
|
-
for i, mem in enumerate(memories, 1):
|
|
68
|
-
final_mem = (
|
|
69
|
-
mem.get('final_memory') or
|
|
70
|
-
mem.get('initial_memory')
|
|
71
|
-
)
|
|
72
|
-
timestamp = mem.get('timestamp', 'unknown')
|
|
73
|
-
output += f"{i}. [{timestamp}] {final_mem}\n"
|
|
74
|
-
|
|
75
|
-
return {"output": output, "messages": output_msgs}
|
|
76
|
-
|
|
77
|
-
except Exception as e:
|
|
78
|
-
traceback.print_exc()
|
|
79
|
-
return {"output": f"Error searching memories: {e}", "messages": output_msgs}
|
|
80
|
-
|
|
81
|
-
def search_knowledge_graph(query_str, current_context, output_msgs):
|
|
82
|
-
command_history = current_context.get('command_history')
|
|
83
|
-
if not command_history:
|
|
84
|
-
db_path = os.path.expanduser(current_context.get("history_db_path", "~/npcsh_history.db"))
|
|
85
|
-
try:
|
|
86
|
-
command_history = CommandHistory(db_path)
|
|
87
|
-
current_context['command_history'] = command_history
|
|
88
|
-
except Exception as e:
|
|
89
|
-
return {"output": f"Error connecting to history: {e}", "messages": output_msgs}
|
|
90
|
-
|
|
91
|
-
npc_name = current_context.get('npc_name', '__none__')
|
|
92
|
-
team_name = current_context.get('team_name', '__none__')
|
|
93
|
-
current_path = current_context.get('current_path', os.getcwd())
|
|
94
|
-
|
|
95
|
-
try:
|
|
96
|
-
engine = command_history.engine
|
|
97
|
-
kg = load_kg_from_db(
|
|
98
|
-
engine,
|
|
99
|
-
team_name,
|
|
100
|
-
npc_name,
|
|
101
|
-
current_path
|
|
102
|
-
)
|
|
103
|
-
|
|
104
|
-
if not kg or not kg.get('facts'):
|
|
105
|
-
return {
|
|
106
|
-
"output": (
|
|
107
|
-
f"No knowledge graph found for current scope.\n"
|
|
108
|
-
f"Scope: Team='{team_name}', "
|
|
109
|
-
f"NPC='{npc_name}', Path='{current_path}'"
|
|
110
|
-
),
|
|
111
|
-
"messages": output_msgs
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
query_lower = query_str.lower()
|
|
115
|
-
matching_facts = []
|
|
116
|
-
matching_concepts = []
|
|
117
|
-
|
|
118
|
-
for fact in kg.get('facts', []):
|
|
119
|
-
statement = fact.get('statement', '').lower()
|
|
120
|
-
if query_lower in statement:
|
|
121
|
-
matching_facts.append(fact)
|
|
122
|
-
|
|
123
|
-
for concept in kg.get('concepts', []):
|
|
124
|
-
name = concept.get('name', '').lower()
|
|
125
|
-
desc = concept.get('description', '').lower()
|
|
126
|
-
if query_lower in name or query_lower in desc:
|
|
127
|
-
matching_concepts.append(concept)
|
|
128
|
-
|
|
129
|
-
output = f"Knowledge Graph Search Results for '{query_str}':\n\n"
|
|
130
|
-
|
|
131
|
-
if matching_facts:
|
|
132
|
-
output += f"## Facts ({len(matching_facts)}):\n"
|
|
133
|
-
for i, fact in enumerate(matching_facts, 1):
|
|
134
|
-
output += f"{i}. {fact.get('statement')}\n"
|
|
135
|
-
output += "\n"
|
|
136
|
-
|
|
137
|
-
if matching_concepts:
|
|
138
|
-
output += f"## Concepts ({len(matching_concepts)}):\n"
|
|
139
|
-
for i, concept in enumerate(matching_concepts, 1):
|
|
140
|
-
name = concept.get('name')
|
|
141
|
-
desc = concept.get('description', '')
|
|
142
|
-
output += f"{i}. {name}: {desc}\n"
|
|
143
|
-
|
|
144
|
-
if not matching_facts and not matching_concepts:
|
|
145
|
-
output += "No matching facts or concepts found."
|
|
146
|
-
|
|
147
|
-
return {"output": output, "messages": output_msgs}
|
|
148
|
-
|
|
149
|
-
except Exception as e:
|
|
150
|
-
traceback.print_exc()
|
|
151
|
-
return {"output": f"Error searching KG: {e}", "messages": output_msgs}
|
|
152
|
-
|
|
153
|
-
def search_web_default(query_str, current_context, output_msgs):
|
|
154
|
-
# Fallback for search_provider if not explicitly set in Jinx inputs
|
|
155
|
-
current_search_provider = current_context.get('sprovider')
|
|
156
|
-
# If NPCSH_SEARCH_PROVIDER is accessible, use it. Otherwise, a default.
|
|
157
|
-
# For Jinx, let's just use a hardcoded default if not provided.
|
|
158
|
-
if not current_search_provider:
|
|
159
|
-
current_search_provider = "google" # Example default
|
|
160
|
-
|
|
161
|
-
# Assuming render_markdown is accessible
|
|
162
|
-
# render_markdown(f'- Searching {current_search_provider} for "{query_str}"') # Not directly supported in Jinx steps
|
|
163
|
-
|
|
164
|
-
try:
|
|
165
|
-
search_results = search_web(query_str, provider=current_search_provider)
|
|
166
|
-
output = (
|
|
167
|
-
"\n".join([f"- {res}" for res in search_results])
|
|
168
|
-
if search_results
|
|
169
|
-
else "No results found."
|
|
170
|
-
)
|
|
171
|
-
except Exception as e:
|
|
172
|
-
traceback.print_exc()
|
|
173
|
-
output = f"Error during web search: {e}"
|
|
174
|
-
|
|
175
|
-
return {"output": output, "messages": output_msgs}
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
# Populate npc_name, team_name, current_path for search functions
|
|
179
|
-
context['npc_name'] = current_npc.name if isinstance(current_npc, type(None).__class__) else "__none__"
|
|
180
|
-
context['team_name'] = current_team.name if current_team else "__none__"
|
|
181
|
-
context['current_path'] = os.getcwd() # Or get from context if available
|
|
182
|
-
|
|
183
|
-
final_result = None
|
|
184
|
-
if search_type == 'memory':
|
|
185
|
-
final_result = search_memories(query, context, output_messages)
|
|
186
|
-
elif search_type == 'kg':
|
|
187
|
-
final_result = search_knowledge_graph(query, context, output_messages)
|
|
188
|
-
else:
|
|
189
|
-
final_result = search_web_default(query, context, output_messages)
|
|
190
|
-
|
|
191
|
-
context['output'] = final_result.get('output')
|
|
192
|
-
context['messages'] = final_result.get('messages', output_messages)
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
jinx_name: "brainblast"
|
|
2
|
-
description: "Execute an advanced chunked search on command history"
|
|
3
|
-
inputs:
|
|
4
|
-
- search_query: "" # Required search terms.
|
|
5
|
-
- history_db_path: "~/npcsh_history.db" # Path to the command history database.
|
|
6
|
-
steps:
|
|
7
|
-
- name: "execute_brainblast"
|
|
8
|
-
engine: "python"
|
|
9
|
-
code: |
|
|
10
|
-
import os
|
|
11
|
-
import traceback
|
|
12
|
-
from npcpy.memory.command_history import CommandHistory
|
|
13
|
-
from npcpy.memory.search import execute_brainblast_command
|
|
14
|
-
|
|
15
|
-
search_query = context.get('search_query')
|
|
16
|
-
history_db_path = context.get('history_db_path')
|
|
17
|
-
output_messages = context.get('messages', [])
|
|
18
|
-
|
|
19
|
-
if not search_query or not search_query.strip():
|
|
20
|
-
context['output'] = "Usage: /brainblast <search_terms>"
|
|
21
|
-
context['messages'] = output_messages
|
|
22
|
-
exit()
|
|
23
|
-
|
|
24
|
-
command_history = context.get('command_history')
|
|
25
|
-
if not command_history:
|
|
26
|
-
try:
|
|
27
|
-
command_history = CommandHistory(os.path.expanduser(history_db_path))
|
|
28
|
-
context['command_history'] = command_history # Add to context for potential reuse
|
|
29
|
-
except Exception as e:
|
|
30
|
-
context['output'] = f"Error connecting to command history: {e}"
|
|
31
|
-
context['messages'] = output_messages
|
|
32
|
-
exit()
|
|
33
|
-
|
|
34
|
-
try:
|
|
35
|
-
# The original handler passed **kwargs, so we pass current context
|
|
36
|
-
# The execute_brainblast_command might filter out 'messages' itself
|
|
37
|
-
result = execute_brainblast_command(
|
|
38
|
-
command=search_query,
|
|
39
|
-
command_history=command_history,
|
|
40
|
-
**{k:v for k,v in context.items() if k != 'messages'}) # Exclude messages if not expected
|
|
41
|
-
|
|
42
|
-
if isinstance(result, dict):
|
|
43
|
-
context['output'] = result.get('output', 'Brainblast search executed.')
|
|
44
|
-
context['messages'] = result.get('messages', output_messages)
|
|
45
|
-
else:
|
|
46
|
-
context['output'] = str(result)
|
|
47
|
-
context['messages'] = output_messages
|
|
48
|
-
except Exception as e:
|
|
49
|
-
traceback.print_exc()
|
|
50
|
-
context['output'] = f"Error executing brainblast command: {e}"
|
|
51
|
-
context['messages'] = output_messages
|