npcsh 1.1.20__py3-none-any.whl → 1.1.22__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 (186) hide show
  1. npcsh/_state.py +15 -76
  2. npcsh/benchmark/npcsh_agent.py +22 -14
  3. npcsh/benchmark/templates/install-npcsh.sh.j2 +2 -2
  4. npcsh/diff_viewer.py +3 -3
  5. npcsh/mcp_server.py +9 -1
  6. npcsh/npc_team/alicanto.npc +12 -6
  7. npcsh/npc_team/corca.npc +0 -1
  8. npcsh/npc_team/frederic.npc +2 -3
  9. npcsh/npc_team/jinxs/lib/core/compress.jinx +373 -85
  10. npcsh/npc_team/jinxs/lib/core/edit_file.jinx +83 -61
  11. npcsh/npc_team/jinxs/lib/core/search/db_search.jinx +17 -6
  12. npcsh/npc_team/jinxs/lib/core/search/file_search.jinx +17 -6
  13. npcsh/npc_team/jinxs/lib/core/search/web_search.jinx +52 -14
  14. npcsh/npc_team/jinxs/{bin → lib/utils}/benchmark.jinx +2 -2
  15. npcsh/npc_team/jinxs/{bin → lib/utils}/jinxs.jinx +12 -12
  16. npcsh/npc_team/jinxs/{bin → lib/utils}/models.jinx +7 -7
  17. npcsh/npc_team/jinxs/{bin → lib/utils}/setup.jinx +6 -6
  18. npcsh/npc_team/jinxs/modes/alicanto.jinx +1633 -295
  19. npcsh/npc_team/jinxs/modes/arxiv.jinx +5 -5
  20. npcsh/npc_team/jinxs/modes/build.jinx +378 -0
  21. npcsh/npc_team/jinxs/modes/config_tui.jinx +300 -0
  22. npcsh/npc_team/jinxs/modes/convene.jinx +597 -0
  23. npcsh/npc_team/jinxs/modes/corca.jinx +777 -387
  24. npcsh/npc_team/jinxs/modes/git.jinx +795 -0
  25. {npcsh-1.1.20.data/data/npcsh/npc_team → npcsh/npc_team/jinxs/modes}/kg.jinx +82 -15
  26. npcsh/npc_team/jinxs/modes/memories.jinx +414 -0
  27. npcsh/npc_team/jinxs/{bin → modes}/nql.jinx +10 -21
  28. npcsh/npc_team/jinxs/modes/papers.jinx +578 -0
  29. npcsh/npc_team/jinxs/modes/plonk.jinx +503 -308
  30. npcsh/npc_team/jinxs/modes/reattach.jinx +3 -3
  31. npcsh/npc_team/jinxs/modes/spool.jinx +3 -3
  32. npcsh/npc_team/jinxs/{bin → modes}/team.jinx +12 -12
  33. npcsh/npc_team/jinxs/modes/vixynt.jinx +388 -0
  34. npcsh/npc_team/jinxs/modes/wander.jinx +454 -181
  35. npcsh/npc_team/jinxs/modes/yap.jinx +630 -182
  36. npcsh/npc_team/kadiefa.npc +2 -1
  37. npcsh/npc_team/sibiji.npc +3 -3
  38. npcsh/npcsh.py +112 -47
  39. npcsh/routes.py +4 -1
  40. npcsh/salmon_simulation.py +0 -0
  41. npcsh-1.1.22.data/data/npcsh/npc_team/alicanto.jinx +1694 -0
  42. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/alicanto.npc +12 -6
  43. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/arxiv.jinx +5 -5
  44. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/benchmark.jinx +2 -2
  45. npcsh-1.1.22.data/data/npcsh/npc_team/build.jinx +378 -0
  46. npcsh-1.1.22.data/data/npcsh/npc_team/compress.jinx +428 -0
  47. npcsh-1.1.22.data/data/npcsh/npc_team/config_tui.jinx +300 -0
  48. npcsh-1.1.22.data/data/npcsh/npc_team/corca.jinx +820 -0
  49. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/corca.npc +0 -1
  50. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/db_search.jinx +17 -6
  51. npcsh-1.1.22.data/data/npcsh/npc_team/edit_file.jinx +119 -0
  52. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/file_search.jinx +17 -6
  53. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/frederic.npc +2 -3
  54. npcsh-1.1.22.data/data/npcsh/npc_team/git.jinx +795 -0
  55. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/jinxs.jinx +12 -12
  56. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/kadiefa.npc +2 -1
  57. {npcsh/npc_team/jinxs/bin → npcsh-1.1.22.data/data/npcsh/npc_team}/kg.jinx +82 -15
  58. npcsh-1.1.22.data/data/npcsh/npc_team/memories.jinx +414 -0
  59. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/models.jinx +7 -7
  60. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/nql.jinx +10 -21
  61. npcsh-1.1.22.data/data/npcsh/npc_team/papers.jinx +578 -0
  62. npcsh-1.1.22.data/data/npcsh/npc_team/plonk.jinx +574 -0
  63. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/reattach.jinx +3 -3
  64. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/setup.jinx +6 -6
  65. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/sibiji.npc +3 -3
  66. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/spool.jinx +3 -3
  67. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/team.jinx +12 -12
  68. npcsh-1.1.22.data/data/npcsh/npc_team/vixynt.jinx +388 -0
  69. npcsh-1.1.22.data/data/npcsh/npc_team/wander.jinx +728 -0
  70. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/web_search.jinx +52 -14
  71. npcsh-1.1.22.data/data/npcsh/npc_team/yap.jinx +716 -0
  72. {npcsh-1.1.20.dist-info → npcsh-1.1.22.dist-info}/METADATA +246 -281
  73. npcsh-1.1.22.dist-info/RECORD +240 -0
  74. npcsh-1.1.22.dist-info/entry_points.txt +11 -0
  75. npcsh/npc_team/jinxs/bin/config_tui.jinx +0 -300
  76. npcsh/npc_team/jinxs/bin/memories.jinx +0 -317
  77. npcsh/npc_team/jinxs/bin/vixynt.jinx +0 -122
  78. npcsh/npc_team/jinxs/lib/core/search/kg_search.jinx +0 -418
  79. npcsh/npc_team/jinxs/lib/core/search/mem_review.jinx +0 -73
  80. npcsh/npc_team/jinxs/lib/core/search/mem_search.jinx +0 -388
  81. npcsh/npc_team/jinxs/lib/core/search.jinx +0 -54
  82. npcsh/npc_team/jinxs/lib/research/paper_search.jinx +0 -412
  83. npcsh/npc_team/jinxs/lib/research/semantic_scholar.jinx +0 -386
  84. npcsh/npc_team/jinxs/lib/utils/build.jinx +0 -65
  85. npcsh/npc_team/plonkjr.npc +0 -23
  86. npcsh-1.1.20.data/data/npcsh/npc_team/alicanto.jinx +0 -356
  87. npcsh-1.1.20.data/data/npcsh/npc_team/build.jinx +0 -65
  88. npcsh-1.1.20.data/data/npcsh/npc_team/compress.jinx +0 -140
  89. npcsh-1.1.20.data/data/npcsh/npc_team/config_tui.jinx +0 -300
  90. npcsh-1.1.20.data/data/npcsh/npc_team/corca.jinx +0 -430
  91. npcsh-1.1.20.data/data/npcsh/npc_team/edit_file.jinx +0 -97
  92. npcsh-1.1.20.data/data/npcsh/npc_team/kg_search.jinx +0 -418
  93. npcsh-1.1.20.data/data/npcsh/npc_team/mem_review.jinx +0 -73
  94. npcsh-1.1.20.data/data/npcsh/npc_team/mem_search.jinx +0 -388
  95. npcsh-1.1.20.data/data/npcsh/npc_team/memories.jinx +0 -317
  96. npcsh-1.1.20.data/data/npcsh/npc_team/paper_search.jinx +0 -412
  97. npcsh-1.1.20.data/data/npcsh/npc_team/plonk.jinx +0 -379
  98. npcsh-1.1.20.data/data/npcsh/npc_team/plonkjr.npc +0 -23
  99. npcsh-1.1.20.data/data/npcsh/npc_team/search.jinx +0 -54
  100. npcsh-1.1.20.data/data/npcsh/npc_team/semantic_scholar.jinx +0 -386
  101. npcsh-1.1.20.data/data/npcsh/npc_team/vixynt.jinx +0 -122
  102. npcsh-1.1.20.data/data/npcsh/npc_team/wander.jinx +0 -455
  103. npcsh-1.1.20.data/data/npcsh/npc_team/yap.jinx +0 -268
  104. npcsh-1.1.20.dist-info/RECORD +0 -248
  105. npcsh-1.1.20.dist-info/entry_points.txt +0 -25
  106. /npcsh/npc_team/jinxs/lib/{orchestration → core}/convene.jinx +0 -0
  107. /npcsh/npc_team/jinxs/lib/{orchestration → core}/delegate.jinx +0 -0
  108. /npcsh/npc_team/jinxs/{bin → lib/core}/sample.jinx +0 -0
  109. /npcsh/npc_team/jinxs/lib/{core → utils}/chat.jinx +0 -0
  110. /npcsh/npc_team/jinxs/lib/{core → utils}/cmd.jinx +0 -0
  111. /npcsh/npc_team/jinxs/{bin → lib/utils}/sync.jinx +0 -0
  112. /npcsh/npc_team/jinxs/{bin → modes}/roll.jinx +0 -0
  113. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/add_tab.jinx +0 -0
  114. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/alicanto.png +0 -0
  115. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/browser_action.jinx +0 -0
  116. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/browser_screenshot.jinx +0 -0
  117. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/chat.jinx +0 -0
  118. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/click.jinx +0 -0
  119. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/close_browser.jinx +0 -0
  120. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/close_pane.jinx +0 -0
  121. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/close_tab.jinx +0 -0
  122. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/cmd.jinx +0 -0
  123. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/compile.jinx +0 -0
  124. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/confirm.jinx +0 -0
  125. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/convene.jinx +0 -0
  126. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/corca.png +0 -0
  127. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/corca_example.png +0 -0
  128. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/delegate.jinx +0 -0
  129. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/focus_pane.jinx +0 -0
  130. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/frederic4.png +0 -0
  131. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/guac.jinx +0 -0
  132. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/guac.npc +0 -0
  133. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/guac.png +0 -0
  134. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/help.jinx +0 -0
  135. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/incognide.jinx +0 -0
  136. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/init.jinx +0 -0
  137. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/kadiefa.png +0 -0
  138. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/key_press.jinx +0 -0
  139. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/launch_app.jinx +0 -0
  140. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/list_panes.jinx +0 -0
  141. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/load_file.jinx +0 -0
  142. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/navigate.jinx +0 -0
  143. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/notify.jinx +0 -0
  144. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/npcsh.ctx +0 -0
  145. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/npcsh_sibiji.png +0 -0
  146. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/open_browser.jinx +0 -0
  147. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/open_pane.jinx +0 -0
  148. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/ots.jinx +0 -0
  149. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/paste.jinx +0 -0
  150. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/plonk.npc +0 -0
  151. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/plonk.png +0 -0
  152. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/plonkjr.png +0 -0
  153. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/pti.jinx +0 -0
  154. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/python.jinx +0 -0
  155. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/read_pane.jinx +0 -0
  156. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/roll.jinx +0 -0
  157. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/run_terminal.jinx +0 -0
  158. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/sample.jinx +0 -0
  159. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/screenshot.jinx +0 -0
  160. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/send_message.jinx +0 -0
  161. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/serve.jinx +0 -0
  162. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/set.jinx +0 -0
  163. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/sh.jinx +0 -0
  164. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/shh.jinx +0 -0
  165. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/sibiji.png +0 -0
  166. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/sleep.jinx +0 -0
  167. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/split_pane.jinx +0 -0
  168. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/spool.png +0 -0
  169. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/sql.jinx +0 -0
  170. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/switch.jinx +0 -0
  171. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/switch_npc.jinx +0 -0
  172. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/switch_tab.jinx +0 -0
  173. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/switches.jinx +0 -0
  174. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/sync.jinx +0 -0
  175. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/teamviz.jinx +0 -0
  176. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/trigger.jinx +0 -0
  177. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/type_text.jinx +0 -0
  178. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/usage.jinx +0 -0
  179. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/verbose.jinx +0 -0
  180. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/wait.jinx +0 -0
  181. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/write_file.jinx +0 -0
  182. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/yap.png +0 -0
  183. {npcsh-1.1.20.data → npcsh-1.1.22.data}/data/npcsh/npc_team/zen_mode.jinx +0 -0
  184. {npcsh-1.1.20.dist-info → npcsh-1.1.22.dist-info}/WHEEL +0 -0
  185. {npcsh-1.1.20.dist-info → npcsh-1.1.22.dist-info}/licenses/LICENSE +0 -0
  186. {npcsh-1.1.20.dist-info → npcsh-1.1.22.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,240 @@
1
+ npcsh/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
+ npcsh/_state.py,sha256=oLyHHjdr3tUQlAPyVbyD3v-N1UeAsAWI8DZyePzehDA,148222
3
+ npcsh/alicanto.py,sha256=xIm2Om1QlTcckvh5NQqrs-2HrEXF378dQcoOD7FRjhk,2392
4
+ npcsh/build.py,sha256=xYYyy3GD0iLWGpZ3rqrephYjYW1Bt39xZyKqXrWSzSo,7663
5
+ npcsh/completion.py,sha256=IOjt7MHnIQgeVub6eJ0q3kooRfYtvRjgUXQHtH8Shjw,5573
6
+ npcsh/config.py,sha256=3OQ11mwR-ZAOIest9ZjyLM6ICgpUQDLZpOhOqdOHrrk,5552
7
+ npcsh/conversation_viewer.py,sha256=ynP0S1WP6tzM8K-ZRGHAQ94z7dMBFkvNbczSUO2fB0g,12850
8
+ npcsh/corca.py,sha256=jlrK7QnO08dxPqJR8uto9ebceLIPFV3f3QjOhnPFxkc,1558
9
+ npcsh/diff_viewer.py,sha256=rG88E_-jXyCyrBnca6QqlxUP_Yl_JW8If0ca0YNjk_s,15955
10
+ npcsh/execution.py,sha256=Rd9Qt365CI_9S9-IvRBGEYImlMsM7hb1CkTVs-445fs,5259
11
+ npcsh/guac.py,sha256=d4n16mCqKkJ5JrQM0CxBgTtbUY8rac7qsMtjXvUh12k,1332
12
+ npcsh/mcp_helpers.py,sha256=2whJgdwIYhAFzgvskya2_uJkUyqVWC3rLHwYfVolHzg,11164
13
+ npcsh/mcp_server.py,sha256=fpSGVesM0KVo5Awo1hPBuODpywyYjsD6U3JPmasKjGI,8802
14
+ npcsh/npc.py,sha256=NPfkEyRv6fOtlPI1WHfQr5Ofetc2hRcKl82i_CKqcKM,11641
15
+ npcsh/npcsh.py,sha256=194ZFlCSD7bDBWFV2VB69x7Jaze4VAI5bWhPhAT2aho,20698
16
+ npcsh/parsing.py,sha256=eGATFUkDvHu5pVbh0RswhWEmGjcIsLaDwgxTtPbC9sk,2943
17
+ npcsh/plonk.py,sha256=MUGunZcSq_7LWBzkrJp3SoEYt75szsoXtZfirsQw3EM,1715
18
+ npcsh/pti.py,sha256=8IyU-kCRwYoBxB9877lqLpy87-DEoWMg2CjiJTj9Hhg,1773
19
+ npcsh/routes.py,sha256=IHqo8CWLo15t_OZdTEBsWJRiinyjPkyUPg39UGMzc68,5264
20
+ npcsh/salmon_simulation.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
+ npcsh/spool.py,sha256=b-AAZdk_fDk7vA-08wc-LO0FJt-yigcUU3ZUXF41V4E,1498
22
+ npcsh/ui.py,sha256=owFTZ7KRvWzyMaEYLfwJVv08hNmg9Yqj5RKNTVIcLeM,7281
23
+ npcsh/wander.py,sha256=zslcHfH-mAmBlSgc1JVNOlss0Ig85hzNkpmBW9W8JYM,2278
24
+ npcsh/yap.py,sha256=QhIr0MyHjznbqfJl9CK93EccN4E7jnlp1QpRzkYc7_c,1583
25
+ npcsh/benchmark/__init__.py,sha256=ljV4XCxPBXYNewcqiGx3oExMm2H_sgCwinDgc4xQOZE,898
26
+ npcsh/benchmark/npcsh_agent.py,sha256=yvf9GKGxY-Z6BcJfscgJKX9YC-c7wj_LZqJ1pnGnd_Y,12549
27
+ npcsh/benchmark/runner.py,sha256=dIbPds2V3xTItvTHIGvi8D4cqYNi7uhyvBhjxYWGJsY,20234
28
+ npcsh/benchmark/templates/install-npcsh.sh.j2,sha256=hpEMQ6MrR4E_-Dveg0HjztHMY-KpXUryeoqAGKyn_Po,1000
29
+ npcsh/npc_team/alicanto.npc,sha256=rN4AK1skdTmoDyJ5_FBhMRacW8iXCq_udXEbZzFVKp8,1923
30
+ npcsh/npc_team/alicanto.png,sha256=A7xeMbcoKGjlkELxJEVifCEZLVWbOKZarTN5ZFJG-FM,3519858
31
+ npcsh/npc_team/corca.npc,sha256=pXicAoiY35r-D1GkFaOU_C5Niy18CtCfFEGhcHSxZNI,1647
32
+ npcsh/npc_team/corca.png,sha256=0lF70hKu6tY-37YmIPVF2cuaPzvnQ4-UtQOzuAbKEf4,1666776
33
+ npcsh/npc_team/corca_example.png,sha256=p0lVTuwaps4-F-3k4wgp9d897YPyn6FGZugtXMUQjj8,28777
34
+ npcsh/npc_team/frederic.npc,sha256=OVDiRdznAkdEGYP-TvvFAWqfns1bqIuHT2S__TJpyKA,1950
35
+ npcsh/npc_team/frederic4.png,sha256=ll8uoV0npnPp5HVJWv7h0xDSeuq4pqsk_gYGBHLS0VY,1590744
36
+ npcsh/npc_team/guac.npc,sha256=bOMEMXxvL4B-xdGqtq7hWf_gZpdMlo4OqER7c9iBsiM,797
37
+ npcsh/npc_team/guac.png,sha256=MCE7eJuEJwLJEzc9FS7lL62Mm-38jQRHkxXogPfOTuw,211470
38
+ npcsh/npc_team/kadiefa.npc,sha256=YotlkOSbYAMdtDvGdc6Yrnjfl1G-bSYgvV4OLLw6wOI,1790
39
+ npcsh/npc_team/kadiefa.png,sha256=3CAwL8crKIwJko6o75Z6OYYEEM9Rk--yGzCJg7zoszg,3062528
40
+ npcsh/npc_team/npcsh.ctx,sha256=-jKYaPm2YbZHAGgWAXhyPIwhiNe1H1ZRFg1Zc7tHSxk,1049
41
+ npcsh/npc_team/npcsh_sibiji.png,sha256=9fUqgYMsSHmaH-kBTBQ7N5UCS5-eLZF94Log0O3mtFg,4544
42
+ npcsh/npc_team/plonk.npc,sha256=z2fd5U0qaymiqHvkunQxCGQ1N2Mx6DMeErcltrJWrqw,1341
43
+ npcsh/npc_team/plonk.png,sha256=IU5ey-Dl4HEKlwnf75RSWNSHpF8rVqGmdbsa0deL4rQ,2727773
44
+ npcsh/npc_team/plonkjr.png,sha256=MqLEGwsyECUeODZIti0HQQrMMVxA6XERpW01R06NbpY,2606710
45
+ npcsh/npc_team/sibiji.npc,sha256=Yj3yksogHkSVu6J_pHIqz37CDQc6f1_pNHq-Lf11PjY,1617
46
+ npcsh/npc_team/sibiji.png,sha256=1dlZb7J3E62FcVo9CVOzLb8nu1bIUV7cr97nsFocHCM,35615
47
+ npcsh/npc_team/spool.png,sha256=LWTLkwDxXBfLuSUCX32_lo5yAmLYGsA67Xpsz-7MmWU,2876725
48
+ npcsh/npc_team/yap.png,sha256=_l7UbWnXJdsy4Mx-x5l9DT0R6ize3HTnkwQQnOFlI18,1548649
49
+ npcsh/npc_team/jinxs/incognide/add_tab.jinx,sha256=knJ7uIUVwpPPWZ2Sy4MYf14rwqBnQ-wUk56rZPLDCbk,233
50
+ npcsh/npc_team/jinxs/incognide/close_pane.jinx,sha256=9L72Eb_sJd9AC1c47hq7ogjk8OagOem5yg5hrzrlXVs,271
51
+ npcsh/npc_team/jinxs/incognide/close_tab.jinx,sha256=h5G8xXWnka59LDV-Go2Xk-KVITojnQ4ghup1gUvOnVA,234
52
+ npcsh/npc_team/jinxs/incognide/confirm.jinx,sha256=1xPmu0ocnmysdJcv6PftYe7kwx9h3uyA6ntS5rbgFPk,257
53
+ npcsh/npc_team/jinxs/incognide/focus_pane.jinx,sha256=wGSCQe_yquRPm3i9VQ3QbIKglIa5Fnh94RKdAn5ggZA,229
54
+ npcsh/npc_team/jinxs/incognide/incognide.jinx,sha256=0lSYUS7dVmfi4hGS0SiBg5LlAuNHE8qlrgU7QFNAmtQ,2231
55
+ npcsh/npc_team/jinxs/incognide/list_panes.jinx,sha256=AGE9eZ4ftzkFV3_M053AXsL742e3B5ApZ1JXzFz0j9s,262
56
+ npcsh/npc_team/jinxs/incognide/navigate.jinx,sha256=Cz5lSrn3I9yHx2VuV9c038yDLIPlw2WVBt1LxmtUdB0,240
57
+ npcsh/npc_team/jinxs/incognide/notify.jinx,sha256=ZJB37upTsSOLLiVUJQanVQ6ee0jZd4SY7lkufL-zSPQ,236
58
+ npcsh/npc_team/jinxs/incognide/open_pane.jinx,sha256=-rL9VKtSqzPu_lLPLMGTlRwNHqqLH5wN8jfj989fip0,471
59
+ npcsh/npc_team/jinxs/incognide/read_pane.jinx,sha256=80M-ecIDDkgiIuI9lvfp4_ECSFu7Xa3zYDex1HGzRSs,326
60
+ npcsh/npc_team/jinxs/incognide/run_terminal.jinx,sha256=YjkUWtGvfE0ATrPeX-IQ8dVPpN5ChBD29Iq09XVyVfM,243
61
+ npcsh/npc_team/jinxs/incognide/send_message.jinx,sha256=8TYBJxrgBLA2xuIXgXw1qH3X9nYQzFJwpi6CJOk6uFY,236
62
+ npcsh/npc_team/jinxs/incognide/split_pane.jinx,sha256=-taNskdEb3hQEUGFdrrVw_tyAL-g5fHwqhCBfH50RW4,290
63
+ npcsh/npc_team/jinxs/incognide/switch_npc.jinx,sha256=8pQvKa_nZD6DXy7uV9NAi0ff9xWbA0HMFdsEIVyHjZQ,241
64
+ npcsh/npc_team/jinxs/incognide/switch_tab.jinx,sha256=ZUdJdbqs0oSwOuDFiBPAxqN58-VX53gXNINsRjVL50U,239
65
+ npcsh/npc_team/jinxs/incognide/write_file.jinx,sha256=RauswZGoAbSyz44YgWqzHR_jJBLsndstRQ7hLploCeU,285
66
+ npcsh/npc_team/jinxs/incognide/zen_mode.jinx,sha256=_iR9c2yvDIrhd98f5d_8_fNJJi_k9AePejQ_sAZrwTI,228
67
+ npcsh/npc_team/jinxs/lib/browser/browser_action.jinx,sha256=OtYK2rnpmjYPk2vZcD5J761XsXVuK6crV7NNGcMQzIg,9201
68
+ npcsh/npc_team/jinxs/lib/browser/browser_screenshot.jinx,sha256=rch0IHithrcFb-bLuMcnMAxsn65PKJVZEOhLyAgJc8k,1166
69
+ npcsh/npc_team/jinxs/lib/browser/close_browser.jinx,sha256=D0-sIQCTt3TEnUpr6SIWuhQOkJ6eyzhJnvYtYqbg1UM,322
70
+ npcsh/npc_team/jinxs/lib/browser/open_browser.jinx,sha256=AJ4ZysHzdNIghSpu2cTcbRvio1KwV4yzjnyAvAragr4,1656
71
+ npcsh/npc_team/jinxs/lib/computer_use/click.jinx,sha256=uNJ66ZjIQ-0XflzuK3yGqNd7ApommWPIVL2pURhaRjY,585
72
+ npcsh/npc_team/jinxs/lib/computer_use/key_press.jinx,sha256=PQWf0BsYDddwF3_bgdRJpH_pjUWlWtABDyiK_v26Dj0,832
73
+ npcsh/npc_team/jinxs/lib/computer_use/launch_app.jinx,sha256=G3KRSKgBbCPiF9WwrkPtNFK7Pb2xu0TFCY98YmMGD50,1187
74
+ npcsh/npc_team/jinxs/lib/computer_use/screenshot.jinx,sha256=jVU1u-MH_rW6haAHLO3FrikNgeEKAQpUY962pPM8epc,657
75
+ npcsh/npc_team/jinxs/lib/computer_use/trigger.jinx,sha256=VVCnkpYMicq85YA_XQewLvWBl3ctsfObRCwQH9wLCfc,2341
76
+ npcsh/npc_team/jinxs/lib/computer_use/type_text.jinx,sha256=JDCkm2bCV3gk08hrfu5pGYynpNoMLPZWGyfjz7fQhUo,720
77
+ npcsh/npc_team/jinxs/lib/computer_use/wait.jinx,sha256=Jx-HdmMD7p5vdsNG3FXiZyRpKoFRHsmylxH6TMNznac,494
78
+ npcsh/npc_team/jinxs/lib/core/compress.jinx,sha256=t3n2B6rwebyGOIDZ3PAQZm1b5YdDHYqO-lWlHYOQVWw,20661
79
+ npcsh/npc_team/jinxs/lib/core/convene.jinx,sha256=W4-eRFHXpJe7Bt-8uC79wWygj4KUv15DNnGMJA1gJXA,8828
80
+ npcsh/npc_team/jinxs/lib/core/delegate.jinx,sha256=wsFBQfhcAT2o-hg05U_HGhHcJyDWjpdlRJc0g3iE40I,8017
81
+ npcsh/npc_team/jinxs/lib/core/edit_file.jinx,sha256=1ohcVqPrWeRsZVGy5zR39P_oKwJWgg_2Kfn4VYtXwic,4927
82
+ npcsh/npc_team/jinxs/lib/core/load_file.jinx,sha256=Dq2982ZJkbSrM75O8YgLeGRnHdWl0AfEIYkj9RkNMLg,1271
83
+ npcsh/npc_team/jinxs/lib/core/ots.jinx,sha256=1boaqSw1kb_Y5WJ28c22a3CiHkANzPIW9tTF9STs_Fg,2375
84
+ npcsh/npc_team/jinxs/lib/core/paste.jinx,sha256=bycgMzeYFHl3-TN4YYDyasbNe22hEgFGMOmYoMWFgWI,4957
85
+ npcsh/npc_team/jinxs/lib/core/python.jinx,sha256=lFJubdPVlGxSuUKCxsxjYG4_dnX2ATn8U9ChYKRmL5Q,389
86
+ npcsh/npc_team/jinxs/lib/core/sample.jinx,sha256=0q-Iw7KZEp6fkqjGSy_9onvtqhxmtjDG_v55uA4J7K0,1948
87
+ npcsh/npc_team/jinxs/lib/core/sh.jinx,sha256=RzpvJ0f3tmmrl7W8mxKBaOFtjmKuEXQjhKYYF_EaeyQ,844
88
+ npcsh/npc_team/jinxs/lib/core/sleep.jinx,sha256=dcEDGe6v53XzVoya2s7ru3ewJE2iKZ38DJLfnYfODT8,5440
89
+ npcsh/npc_team/jinxs/lib/core/sql.jinx,sha256=7cAaLqr0A8vWn7QIVDzvqArwB0XmWOI6JPUVcfeGcWk,689
90
+ npcsh/npc_team/jinxs/lib/core/search/db_search.jinx,sha256=9k33MH3Pbub_Hux7dNpEhQg7udyuoR5Yr-BtCHKAFU4,18066
91
+ npcsh/npc_team/jinxs/lib/core/search/file_search.jinx,sha256=Ghf3ViI7SoRPjSzDREA6sqGxU5MUjNtEMw2vBDTtWK0,17007
92
+ npcsh/npc_team/jinxs/lib/core/search/web_search.jinx,sha256=AuphZ3IlczyEfFvCh2Rx93fJ_8d_oix8_kAinjhWaf4,15492
93
+ npcsh/npc_team/jinxs/lib/utils/benchmark.jinx,sha256=3jWhOm4ijSipG-1jRvRNaYP-5YoTXaSbnczudNVd3XA,6097
94
+ npcsh/npc_team/jinxs/lib/utils/chat.jinx,sha256=QXIh4OIbLKsZISNa0URFkczUFpzkKB2YDNfWPD1Stk4,1397
95
+ npcsh/npc_team/jinxs/lib/utils/cmd.jinx,sha256=sdmhXlduW2CCer4gUb3xnGN3j85y8GcOA6uLknir6lQ,1398
96
+ npcsh/npc_team/jinxs/lib/utils/compile.jinx,sha256=LbkZE8ewBUngbI_mchMJylIwY9uCoFCe9KWs4HfMFpU,2393
97
+ npcsh/npc_team/jinxs/lib/utils/help.jinx,sha256=BESlgpCj02ZnLSMGpQJ8YpWMi_Z6eTo8wDet7K0M4I4,2089
98
+ npcsh/npc_team/jinxs/lib/utils/init.jinx,sha256=UPCtj_XKCC51MzuMAAKlWRwhCKfbB9T96P-8fvhquIQ,1315
99
+ npcsh/npc_team/jinxs/lib/utils/jinxs.jinx,sha256=wNa4Q1Q5cGaipPBUMBvOpGhbKfT46_Rg38YFDiX9u6Q,16278
100
+ npcsh/npc_team/jinxs/lib/utils/models.jinx,sha256=5GiD-yKC2h5LWvwEOLdim8nJUqIl6FileBfUXKlHAiA,14424
101
+ npcsh/npc_team/jinxs/lib/utils/serve.jinx,sha256=EXp58rquPHZcJthrScc-NACrrQu2RzVHzPnfZAR_kcE,762
102
+ npcsh/npc_team/jinxs/lib/utils/set.jinx,sha256=FFY6JNVGkrKpHomXLuAiCv7mbwUGIyWh8zE_XMICHJY,1299
103
+ npcsh/npc_team/jinxs/lib/utils/setup.jinx,sha256=4pnNFtfVWJB4ogFLrTYATohpqa5OPABofCDK92lGxWQ,10627
104
+ npcsh/npc_team/jinxs/lib/utils/shh.jinx,sha256=yD-_va97JHT1MAhUvoL8w86Li9cbwi8XbswVcTRxd4U,464
105
+ npcsh/npc_team/jinxs/lib/utils/switch.jinx,sha256=qsYMF_SWT12Z1KvWRT36kgUaUP_UOjpzA4v82IUIqF8,2022
106
+ npcsh/npc_team/jinxs/lib/utils/switches.jinx,sha256=UquqT6Kzn4FTquYJPr0hyoEcuZ6Ke9VMO5pT0bOeXEw,2177
107
+ npcsh/npc_team/jinxs/lib/utils/sync.jinx,sha256=7rWEuqeM21eR8WbhKx-lDt2guJgmVJwk4BaBK9SsLIY,8466
108
+ npcsh/npc_team/jinxs/lib/utils/teamviz.jinx,sha256=WsWvIXbzJzm8S_7h0cgDqlRJIQ6NRzmAtVxmA6JskMc,7646
109
+ npcsh/npc_team/jinxs/lib/utils/usage.jinx,sha256=40zhs19l7-16KAXHzOa8hjv7hA32ORe0F7das0TTLXY,1052
110
+ npcsh/npc_team/jinxs/lib/utils/verbose.jinx,sha256=mFGLy2Azx1JXGhDOwVwd5EwJB9fxPQpk9BrP8kJ3RzE,473
111
+ npcsh/npc_team/jinxs/modes/alicanto.jinx,sha256=7pwvl73tt8z5s4a6wXGVtIRt532ewkB7IMOx1Hrzo5U,75218
112
+ npcsh/npc_team/jinxs/modes/arxiv.jinx,sha256=cYj0N1SkhaNXR8Rws7RgBB-5bjdtzu6vJ2Dq_Iwuj1M,38118
113
+ npcsh/npc_team/jinxs/modes/build.jinx,sha256=HF6xoZJmxN8crXSLP6rkZCOUxlhs6-UGrnNY-TjjenM,15141
114
+ npcsh/npc_team/jinxs/modes/config_tui.jinx,sha256=JNork0Ns-8ZN2kahX5YxljplmIOhtKa2kmaEeX1zPzA,12364
115
+ npcsh/npc_team/jinxs/modes/convene.jinx,sha256=1qHrCN_qk7OJ2gCkWECUif4vvf8Wmp8H2BemrMmS_sc,25430
116
+ npcsh/npc_team/jinxs/modes/corca.jinx,sha256=8COHMDXcC1fJpR3pRaoJwWQnqtUqcTJGa2gHHCWPS6o,34481
117
+ npcsh/npc_team/jinxs/modes/git.jinx,sha256=EUTAW9PDBXTazGOwWWrodEPUTfqUAnXpw7A2W7qoTiw,34677
118
+ npcsh/npc_team/jinxs/modes/guac.jinx,sha256=OVFH0XGlwoTUIZoL8Zwo88wmQB0Ip-ZXuHQsAEYLZv4,23582
119
+ npcsh/npc_team/jinxs/modes/kg.jinx,sha256=veGhNu3umFK2QL_ZheaS-8BF20YKBgmoz0-1bwSz-r4,46960
120
+ npcsh/npc_team/jinxs/modes/memories.jinx,sha256=vFV-3xqgbeYw6FV2TWTANdcUV0jXvpWVVVfVF_5jQok,15598
121
+ npcsh/npc_team/jinxs/modes/nql.jinx,sha256=T4CCFZLGBxKRsbz6nzAgEJSDNX08j_XMI96U7k-sgEc,19758
122
+ npcsh/npc_team/jinxs/modes/papers.jinx,sha256=_MOyha7kmp2cDffCoXKtfNWFTLzfXCQXyoIizcZYBkI,29915
123
+ npcsh/npc_team/jinxs/modes/plonk.jinx,sha256=vRV42KU6JO3yNssKQE2dD6lESqSqmqKEsKn-a86Wh-w,23042
124
+ npcsh/npc_team/jinxs/modes/pti.jinx,sha256=1kPM5NM85JRUMDS2U_Xj-K5dfEgFRrsDnwFZv9ozK4U,14642
125
+ npcsh/npc_team/jinxs/modes/reattach.jinx,sha256=yxArBZlOpVcjvU-tDUFNO0XWMUY-flhlGQonGIOnAdY,13977
126
+ npcsh/npc_team/jinxs/modes/roll.jinx,sha256=Yp9Hg6_aMfQ1366-kKJ2gLjxXyAauoolRXtJva3KUOg,2172
127
+ npcsh/npc_team/jinxs/modes/spool.jinx,sha256=II95LfPoOa1O2uNT3RXPA8r82tjp_px61Jy_tq3A6t0,14937
128
+ npcsh/npc_team/jinxs/modes/team.jinx,sha256=0-t-ICICwce1X8fd8cY_1VGg_x_XQ90KD5ZEwE6p9jw,20291
129
+ npcsh/npc_team/jinxs/modes/vixynt.jinx,sha256=LuTyHFdNFmeOnxu-qEzlJ-IP4aRWisIzFtSXhVDszwk,14601
130
+ npcsh/npc_team/jinxs/modes/wander.jinx,sha256=vkU-CvkdEXaW4oEs4Tq0AHhhcCmPdLRWprPsjNOvxOk,30671
131
+ npcsh/npc_team/jinxs/modes/yap.jinx,sha256=6PGu0YSgwM5qJSkaJEy890Fh2nz7FpkwCg9cKKvRTa0,27305
132
+ npcsh-1.1.22.data/data/npcsh/npc_team/add_tab.jinx,sha256=knJ7uIUVwpPPWZ2Sy4MYf14rwqBnQ-wUk56rZPLDCbk,233
133
+ npcsh-1.1.22.data/data/npcsh/npc_team/alicanto.jinx,sha256=7pwvl73tt8z5s4a6wXGVtIRt532ewkB7IMOx1Hrzo5U,75218
134
+ npcsh-1.1.22.data/data/npcsh/npc_team/alicanto.npc,sha256=rN4AK1skdTmoDyJ5_FBhMRacW8iXCq_udXEbZzFVKp8,1923
135
+ npcsh-1.1.22.data/data/npcsh/npc_team/alicanto.png,sha256=A7xeMbcoKGjlkELxJEVifCEZLVWbOKZarTN5ZFJG-FM,3519858
136
+ npcsh-1.1.22.data/data/npcsh/npc_team/arxiv.jinx,sha256=cYj0N1SkhaNXR8Rws7RgBB-5bjdtzu6vJ2Dq_Iwuj1M,38118
137
+ npcsh-1.1.22.data/data/npcsh/npc_team/benchmark.jinx,sha256=3jWhOm4ijSipG-1jRvRNaYP-5YoTXaSbnczudNVd3XA,6097
138
+ npcsh-1.1.22.data/data/npcsh/npc_team/browser_action.jinx,sha256=OtYK2rnpmjYPk2vZcD5J761XsXVuK6crV7NNGcMQzIg,9201
139
+ npcsh-1.1.22.data/data/npcsh/npc_team/browser_screenshot.jinx,sha256=rch0IHithrcFb-bLuMcnMAxsn65PKJVZEOhLyAgJc8k,1166
140
+ npcsh-1.1.22.data/data/npcsh/npc_team/build.jinx,sha256=HF6xoZJmxN8crXSLP6rkZCOUxlhs6-UGrnNY-TjjenM,15141
141
+ npcsh-1.1.22.data/data/npcsh/npc_team/chat.jinx,sha256=QXIh4OIbLKsZISNa0URFkczUFpzkKB2YDNfWPD1Stk4,1397
142
+ npcsh-1.1.22.data/data/npcsh/npc_team/click.jinx,sha256=uNJ66ZjIQ-0XflzuK3yGqNd7ApommWPIVL2pURhaRjY,585
143
+ npcsh-1.1.22.data/data/npcsh/npc_team/close_browser.jinx,sha256=D0-sIQCTt3TEnUpr6SIWuhQOkJ6eyzhJnvYtYqbg1UM,322
144
+ npcsh-1.1.22.data/data/npcsh/npc_team/close_pane.jinx,sha256=9L72Eb_sJd9AC1c47hq7ogjk8OagOem5yg5hrzrlXVs,271
145
+ npcsh-1.1.22.data/data/npcsh/npc_team/close_tab.jinx,sha256=h5G8xXWnka59LDV-Go2Xk-KVITojnQ4ghup1gUvOnVA,234
146
+ npcsh-1.1.22.data/data/npcsh/npc_team/cmd.jinx,sha256=sdmhXlduW2CCer4gUb3xnGN3j85y8GcOA6uLknir6lQ,1398
147
+ npcsh-1.1.22.data/data/npcsh/npc_team/compile.jinx,sha256=LbkZE8ewBUngbI_mchMJylIwY9uCoFCe9KWs4HfMFpU,2393
148
+ npcsh-1.1.22.data/data/npcsh/npc_team/compress.jinx,sha256=t3n2B6rwebyGOIDZ3PAQZm1b5YdDHYqO-lWlHYOQVWw,20661
149
+ npcsh-1.1.22.data/data/npcsh/npc_team/config_tui.jinx,sha256=JNork0Ns-8ZN2kahX5YxljplmIOhtKa2kmaEeX1zPzA,12364
150
+ npcsh-1.1.22.data/data/npcsh/npc_team/confirm.jinx,sha256=1xPmu0ocnmysdJcv6PftYe7kwx9h3uyA6ntS5rbgFPk,257
151
+ npcsh-1.1.22.data/data/npcsh/npc_team/convene.jinx,sha256=W4-eRFHXpJe7Bt-8uC79wWygj4KUv15DNnGMJA1gJXA,8828
152
+ npcsh-1.1.22.data/data/npcsh/npc_team/corca.jinx,sha256=8COHMDXcC1fJpR3pRaoJwWQnqtUqcTJGa2gHHCWPS6o,34481
153
+ npcsh-1.1.22.data/data/npcsh/npc_team/corca.npc,sha256=pXicAoiY35r-D1GkFaOU_C5Niy18CtCfFEGhcHSxZNI,1647
154
+ npcsh-1.1.22.data/data/npcsh/npc_team/corca.png,sha256=0lF70hKu6tY-37YmIPVF2cuaPzvnQ4-UtQOzuAbKEf4,1666776
155
+ npcsh-1.1.22.data/data/npcsh/npc_team/corca_example.png,sha256=p0lVTuwaps4-F-3k4wgp9d897YPyn6FGZugtXMUQjj8,28777
156
+ npcsh-1.1.22.data/data/npcsh/npc_team/db_search.jinx,sha256=9k33MH3Pbub_Hux7dNpEhQg7udyuoR5Yr-BtCHKAFU4,18066
157
+ npcsh-1.1.22.data/data/npcsh/npc_team/delegate.jinx,sha256=wsFBQfhcAT2o-hg05U_HGhHcJyDWjpdlRJc0g3iE40I,8017
158
+ npcsh-1.1.22.data/data/npcsh/npc_team/edit_file.jinx,sha256=1ohcVqPrWeRsZVGy5zR39P_oKwJWgg_2Kfn4VYtXwic,4927
159
+ npcsh-1.1.22.data/data/npcsh/npc_team/file_search.jinx,sha256=Ghf3ViI7SoRPjSzDREA6sqGxU5MUjNtEMw2vBDTtWK0,17007
160
+ npcsh-1.1.22.data/data/npcsh/npc_team/focus_pane.jinx,sha256=wGSCQe_yquRPm3i9VQ3QbIKglIa5Fnh94RKdAn5ggZA,229
161
+ npcsh-1.1.22.data/data/npcsh/npc_team/frederic.npc,sha256=OVDiRdznAkdEGYP-TvvFAWqfns1bqIuHT2S__TJpyKA,1950
162
+ npcsh-1.1.22.data/data/npcsh/npc_team/frederic4.png,sha256=ll8uoV0npnPp5HVJWv7h0xDSeuq4pqsk_gYGBHLS0VY,1590744
163
+ npcsh-1.1.22.data/data/npcsh/npc_team/git.jinx,sha256=EUTAW9PDBXTazGOwWWrodEPUTfqUAnXpw7A2W7qoTiw,34677
164
+ npcsh-1.1.22.data/data/npcsh/npc_team/guac.jinx,sha256=OVFH0XGlwoTUIZoL8Zwo88wmQB0Ip-ZXuHQsAEYLZv4,23582
165
+ npcsh-1.1.22.data/data/npcsh/npc_team/guac.npc,sha256=bOMEMXxvL4B-xdGqtq7hWf_gZpdMlo4OqER7c9iBsiM,797
166
+ npcsh-1.1.22.data/data/npcsh/npc_team/guac.png,sha256=MCE7eJuEJwLJEzc9FS7lL62Mm-38jQRHkxXogPfOTuw,211470
167
+ npcsh-1.1.22.data/data/npcsh/npc_team/help.jinx,sha256=BESlgpCj02ZnLSMGpQJ8YpWMi_Z6eTo8wDet7K0M4I4,2089
168
+ npcsh-1.1.22.data/data/npcsh/npc_team/incognide.jinx,sha256=0lSYUS7dVmfi4hGS0SiBg5LlAuNHE8qlrgU7QFNAmtQ,2231
169
+ npcsh-1.1.22.data/data/npcsh/npc_team/init.jinx,sha256=UPCtj_XKCC51MzuMAAKlWRwhCKfbB9T96P-8fvhquIQ,1315
170
+ npcsh-1.1.22.data/data/npcsh/npc_team/jinxs.jinx,sha256=wNa4Q1Q5cGaipPBUMBvOpGhbKfT46_Rg38YFDiX9u6Q,16278
171
+ npcsh-1.1.22.data/data/npcsh/npc_team/kadiefa.npc,sha256=YotlkOSbYAMdtDvGdc6Yrnjfl1G-bSYgvV4OLLw6wOI,1790
172
+ npcsh-1.1.22.data/data/npcsh/npc_team/kadiefa.png,sha256=3CAwL8crKIwJko6o75Z6OYYEEM9Rk--yGzCJg7zoszg,3062528
173
+ npcsh-1.1.22.data/data/npcsh/npc_team/key_press.jinx,sha256=PQWf0BsYDddwF3_bgdRJpH_pjUWlWtABDyiK_v26Dj0,832
174
+ npcsh-1.1.22.data/data/npcsh/npc_team/kg.jinx,sha256=veGhNu3umFK2QL_ZheaS-8BF20YKBgmoz0-1bwSz-r4,46960
175
+ npcsh-1.1.22.data/data/npcsh/npc_team/launch_app.jinx,sha256=G3KRSKgBbCPiF9WwrkPtNFK7Pb2xu0TFCY98YmMGD50,1187
176
+ npcsh-1.1.22.data/data/npcsh/npc_team/list_panes.jinx,sha256=AGE9eZ4ftzkFV3_M053AXsL742e3B5ApZ1JXzFz0j9s,262
177
+ npcsh-1.1.22.data/data/npcsh/npc_team/load_file.jinx,sha256=Dq2982ZJkbSrM75O8YgLeGRnHdWl0AfEIYkj9RkNMLg,1271
178
+ npcsh-1.1.22.data/data/npcsh/npc_team/memories.jinx,sha256=vFV-3xqgbeYw6FV2TWTANdcUV0jXvpWVVVfVF_5jQok,15598
179
+ npcsh-1.1.22.data/data/npcsh/npc_team/models.jinx,sha256=5GiD-yKC2h5LWvwEOLdim8nJUqIl6FileBfUXKlHAiA,14424
180
+ npcsh-1.1.22.data/data/npcsh/npc_team/navigate.jinx,sha256=Cz5lSrn3I9yHx2VuV9c038yDLIPlw2WVBt1LxmtUdB0,240
181
+ npcsh-1.1.22.data/data/npcsh/npc_team/notify.jinx,sha256=ZJB37upTsSOLLiVUJQanVQ6ee0jZd4SY7lkufL-zSPQ,236
182
+ npcsh-1.1.22.data/data/npcsh/npc_team/npcsh.ctx,sha256=-jKYaPm2YbZHAGgWAXhyPIwhiNe1H1ZRFg1Zc7tHSxk,1049
183
+ npcsh-1.1.22.data/data/npcsh/npc_team/npcsh_sibiji.png,sha256=9fUqgYMsSHmaH-kBTBQ7N5UCS5-eLZF94Log0O3mtFg,4544
184
+ npcsh-1.1.22.data/data/npcsh/npc_team/nql.jinx,sha256=T4CCFZLGBxKRsbz6nzAgEJSDNX08j_XMI96U7k-sgEc,19758
185
+ npcsh-1.1.22.data/data/npcsh/npc_team/open_browser.jinx,sha256=AJ4ZysHzdNIghSpu2cTcbRvio1KwV4yzjnyAvAragr4,1656
186
+ npcsh-1.1.22.data/data/npcsh/npc_team/open_pane.jinx,sha256=-rL9VKtSqzPu_lLPLMGTlRwNHqqLH5wN8jfj989fip0,471
187
+ npcsh-1.1.22.data/data/npcsh/npc_team/ots.jinx,sha256=1boaqSw1kb_Y5WJ28c22a3CiHkANzPIW9tTF9STs_Fg,2375
188
+ npcsh-1.1.22.data/data/npcsh/npc_team/papers.jinx,sha256=_MOyha7kmp2cDffCoXKtfNWFTLzfXCQXyoIizcZYBkI,29915
189
+ npcsh-1.1.22.data/data/npcsh/npc_team/paste.jinx,sha256=bycgMzeYFHl3-TN4YYDyasbNe22hEgFGMOmYoMWFgWI,4957
190
+ npcsh-1.1.22.data/data/npcsh/npc_team/plonk.jinx,sha256=vRV42KU6JO3yNssKQE2dD6lESqSqmqKEsKn-a86Wh-w,23042
191
+ npcsh-1.1.22.data/data/npcsh/npc_team/plonk.npc,sha256=z2fd5U0qaymiqHvkunQxCGQ1N2Mx6DMeErcltrJWrqw,1341
192
+ npcsh-1.1.22.data/data/npcsh/npc_team/plonk.png,sha256=IU5ey-Dl4HEKlwnf75RSWNSHpF8rVqGmdbsa0deL4rQ,2727773
193
+ npcsh-1.1.22.data/data/npcsh/npc_team/plonkjr.png,sha256=MqLEGwsyECUeODZIti0HQQrMMVxA6XERpW01R06NbpY,2606710
194
+ npcsh-1.1.22.data/data/npcsh/npc_team/pti.jinx,sha256=1kPM5NM85JRUMDS2U_Xj-K5dfEgFRrsDnwFZv9ozK4U,14642
195
+ npcsh-1.1.22.data/data/npcsh/npc_team/python.jinx,sha256=lFJubdPVlGxSuUKCxsxjYG4_dnX2ATn8U9ChYKRmL5Q,389
196
+ npcsh-1.1.22.data/data/npcsh/npc_team/read_pane.jinx,sha256=80M-ecIDDkgiIuI9lvfp4_ECSFu7Xa3zYDex1HGzRSs,326
197
+ npcsh-1.1.22.data/data/npcsh/npc_team/reattach.jinx,sha256=yxArBZlOpVcjvU-tDUFNO0XWMUY-flhlGQonGIOnAdY,13977
198
+ npcsh-1.1.22.data/data/npcsh/npc_team/roll.jinx,sha256=Yp9Hg6_aMfQ1366-kKJ2gLjxXyAauoolRXtJva3KUOg,2172
199
+ npcsh-1.1.22.data/data/npcsh/npc_team/run_terminal.jinx,sha256=YjkUWtGvfE0ATrPeX-IQ8dVPpN5ChBD29Iq09XVyVfM,243
200
+ npcsh-1.1.22.data/data/npcsh/npc_team/sample.jinx,sha256=0q-Iw7KZEp6fkqjGSy_9onvtqhxmtjDG_v55uA4J7K0,1948
201
+ npcsh-1.1.22.data/data/npcsh/npc_team/screenshot.jinx,sha256=jVU1u-MH_rW6haAHLO3FrikNgeEKAQpUY962pPM8epc,657
202
+ npcsh-1.1.22.data/data/npcsh/npc_team/send_message.jinx,sha256=8TYBJxrgBLA2xuIXgXw1qH3X9nYQzFJwpi6CJOk6uFY,236
203
+ npcsh-1.1.22.data/data/npcsh/npc_team/serve.jinx,sha256=EXp58rquPHZcJthrScc-NACrrQu2RzVHzPnfZAR_kcE,762
204
+ npcsh-1.1.22.data/data/npcsh/npc_team/set.jinx,sha256=FFY6JNVGkrKpHomXLuAiCv7mbwUGIyWh8zE_XMICHJY,1299
205
+ npcsh-1.1.22.data/data/npcsh/npc_team/setup.jinx,sha256=4pnNFtfVWJB4ogFLrTYATohpqa5OPABofCDK92lGxWQ,10627
206
+ npcsh-1.1.22.data/data/npcsh/npc_team/sh.jinx,sha256=RzpvJ0f3tmmrl7W8mxKBaOFtjmKuEXQjhKYYF_EaeyQ,844
207
+ npcsh-1.1.22.data/data/npcsh/npc_team/shh.jinx,sha256=yD-_va97JHT1MAhUvoL8w86Li9cbwi8XbswVcTRxd4U,464
208
+ npcsh-1.1.22.data/data/npcsh/npc_team/sibiji.npc,sha256=Yj3yksogHkSVu6J_pHIqz37CDQc6f1_pNHq-Lf11PjY,1617
209
+ npcsh-1.1.22.data/data/npcsh/npc_team/sibiji.png,sha256=1dlZb7J3E62FcVo9CVOzLb8nu1bIUV7cr97nsFocHCM,35615
210
+ npcsh-1.1.22.data/data/npcsh/npc_team/sleep.jinx,sha256=dcEDGe6v53XzVoya2s7ru3ewJE2iKZ38DJLfnYfODT8,5440
211
+ npcsh-1.1.22.data/data/npcsh/npc_team/split_pane.jinx,sha256=-taNskdEb3hQEUGFdrrVw_tyAL-g5fHwqhCBfH50RW4,290
212
+ npcsh-1.1.22.data/data/npcsh/npc_team/spool.jinx,sha256=II95LfPoOa1O2uNT3RXPA8r82tjp_px61Jy_tq3A6t0,14937
213
+ npcsh-1.1.22.data/data/npcsh/npc_team/spool.png,sha256=LWTLkwDxXBfLuSUCX32_lo5yAmLYGsA67Xpsz-7MmWU,2876725
214
+ npcsh-1.1.22.data/data/npcsh/npc_team/sql.jinx,sha256=7cAaLqr0A8vWn7QIVDzvqArwB0XmWOI6JPUVcfeGcWk,689
215
+ npcsh-1.1.22.data/data/npcsh/npc_team/switch.jinx,sha256=qsYMF_SWT12Z1KvWRT36kgUaUP_UOjpzA4v82IUIqF8,2022
216
+ npcsh-1.1.22.data/data/npcsh/npc_team/switch_npc.jinx,sha256=8pQvKa_nZD6DXy7uV9NAi0ff9xWbA0HMFdsEIVyHjZQ,241
217
+ npcsh-1.1.22.data/data/npcsh/npc_team/switch_tab.jinx,sha256=ZUdJdbqs0oSwOuDFiBPAxqN58-VX53gXNINsRjVL50U,239
218
+ npcsh-1.1.22.data/data/npcsh/npc_team/switches.jinx,sha256=UquqT6Kzn4FTquYJPr0hyoEcuZ6Ke9VMO5pT0bOeXEw,2177
219
+ npcsh-1.1.22.data/data/npcsh/npc_team/sync.jinx,sha256=7rWEuqeM21eR8WbhKx-lDt2guJgmVJwk4BaBK9SsLIY,8466
220
+ npcsh-1.1.22.data/data/npcsh/npc_team/team.jinx,sha256=0-t-ICICwce1X8fd8cY_1VGg_x_XQ90KD5ZEwE6p9jw,20291
221
+ npcsh-1.1.22.data/data/npcsh/npc_team/teamviz.jinx,sha256=WsWvIXbzJzm8S_7h0cgDqlRJIQ6NRzmAtVxmA6JskMc,7646
222
+ npcsh-1.1.22.data/data/npcsh/npc_team/trigger.jinx,sha256=VVCnkpYMicq85YA_XQewLvWBl3ctsfObRCwQH9wLCfc,2341
223
+ npcsh-1.1.22.data/data/npcsh/npc_team/type_text.jinx,sha256=JDCkm2bCV3gk08hrfu5pGYynpNoMLPZWGyfjz7fQhUo,720
224
+ npcsh-1.1.22.data/data/npcsh/npc_team/usage.jinx,sha256=40zhs19l7-16KAXHzOa8hjv7hA32ORe0F7das0TTLXY,1052
225
+ npcsh-1.1.22.data/data/npcsh/npc_team/verbose.jinx,sha256=mFGLy2Azx1JXGhDOwVwd5EwJB9fxPQpk9BrP8kJ3RzE,473
226
+ npcsh-1.1.22.data/data/npcsh/npc_team/vixynt.jinx,sha256=LuTyHFdNFmeOnxu-qEzlJ-IP4aRWisIzFtSXhVDszwk,14601
227
+ npcsh-1.1.22.data/data/npcsh/npc_team/wait.jinx,sha256=Jx-HdmMD7p5vdsNG3FXiZyRpKoFRHsmylxH6TMNznac,494
228
+ npcsh-1.1.22.data/data/npcsh/npc_team/wander.jinx,sha256=vkU-CvkdEXaW4oEs4Tq0AHhhcCmPdLRWprPsjNOvxOk,30671
229
+ npcsh-1.1.22.data/data/npcsh/npc_team/web_search.jinx,sha256=AuphZ3IlczyEfFvCh2Rx93fJ_8d_oix8_kAinjhWaf4,15492
230
+ npcsh-1.1.22.data/data/npcsh/npc_team/write_file.jinx,sha256=RauswZGoAbSyz44YgWqzHR_jJBLsndstRQ7hLploCeU,285
231
+ npcsh-1.1.22.data/data/npcsh/npc_team/yap.jinx,sha256=6PGu0YSgwM5qJSkaJEy890Fh2nz7FpkwCg9cKKvRTa0,27305
232
+ npcsh-1.1.22.data/data/npcsh/npc_team/yap.png,sha256=_l7UbWnXJdsy4Mx-x5l9DT0R6ize3HTnkwQQnOFlI18,1548649
233
+ npcsh-1.1.22.data/data/npcsh/npc_team/zen_mode.jinx,sha256=_iR9c2yvDIrhd98f5d_8_fNJJi_k9AePejQ_sAZrwTI,228
234
+ npcsh-1.1.22.dist-info/licenses/LICENSE,sha256=IKBvAECHP-aCiJtE4cHGCE5Yl0tozYz02PomGeWS3y4,1070
235
+ project/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
236
+ npcsh-1.1.22.dist-info/METADATA,sha256=ruotEo-pvxiT0YZEpncI4qaTkeYQRfKzUs18L9TpbB8,38127
237
+ npcsh-1.1.22.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
238
+ npcsh-1.1.22.dist-info/entry_points.txt,sha256=3ERDuLoIGCSQo166mcTibZ0ybjMly-3WSceNj-pql10,289
239
+ npcsh-1.1.22.dist-info/top_level.txt,sha256=sbA6l0H-5EUmtoSA3SJTzrFzT_BmsFtf1FOUq8P8vL0,14
240
+ npcsh-1.1.22.dist-info/RECORD,,
@@ -0,0 +1,11 @@
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
+ npcsh-bench = npcsh.benchmark.runner:main
10
+ plonk = npcsh.npcsh:main
11
+ sibiji = npcsh.npcsh:main
@@ -1,300 +0,0 @@
1
- jinx_name: config_tui
2
- description: Interactive TUI editor for npcsh configuration (~/.npcshrc)
3
- interactive: true
4
- inputs: []
5
- steps:
6
- - name: config_editor
7
- engine: python
8
- code: |
9
- import os
10
- import sys
11
- import tty
12
- import termios
13
- import select
14
- from pathlib import Path
15
-
16
- if not sys.stdin.isatty():
17
- context['output'] = "Config TUI requires an interactive terminal."
18
- return
19
-
20
- # ========== Config Items ==========
21
- CONFIG_ITEMS = [
22
- {'key': 'NPCSH_CHAT_MODEL', 'label': 'Chat Model', 'type': 'text', 'shortcut': 'model'},
23
- {'key': 'NPCSH_CHAT_PROVIDER', 'label': 'Chat Provider', 'type': 'text', 'shortcut': 'provider'},
24
- {'key': 'NPCSH_VISION_MODEL', 'label': 'Vision Model', 'type': 'text'},
25
- {'key': 'NPCSH_VISION_PROVIDER', 'label': 'Vision Provider', 'type': 'text'},
26
- {'key': 'NPCSH_EMBEDDING_MODEL', 'label': 'Embedding Model', 'type': 'text'},
27
- {'key': 'NPCSH_EMBEDDING_PROVIDER', 'label': 'Embedding Provider', 'type': 'text'},
28
- {'key': 'NPCSH_REASONING_MODEL', 'label': 'Reasoning Model', 'type': 'text'},
29
- {'key': 'NPCSH_REASONING_PROVIDER', 'label': 'Reasoning Provider', 'type': 'text'},
30
- {'key': 'NPCSH_DEFAULT_MODE', 'label': 'Default Mode', 'type': 'choice', 'choices': ['agent', 'chat', 'code']},
31
- {'key': 'NPCSH_STREAM_OUTPUT', 'label': 'Stream Output', 'type': 'toggle'},
32
- {'key': 'NPCSH_BUILD_KG', 'label': 'Build Knowledge Graph', 'type': 'toggle'},
33
- {'key': 'NPCSH_SEARCH_PROVIDER', 'label': 'Search Provider', 'type': 'choice', 'choices': ['duckduckgo', 'google', 'bing']},
34
- ]
35
-
36
- # ========== State ==========
37
- class ConfigState:
38
- def __init__(self):
39
- self.selected_idx = 0
40
- self.scroll_offset = 0
41
- self.editing = False
42
- self.edit_buffer = ""
43
- self.edit_cursor = 0
44
- self.values = {}
45
- self.modified = set()
46
- self.status = ""
47
-
48
- state = ConfigState()
49
-
50
- # ========== Helpers ==========
51
- def get_size():
52
- try:
53
- s = os.get_terminal_size()
54
- return s.columns, s.lines
55
- except:
56
- return 80, 24
57
-
58
- def load_values():
59
- """Load current values from environment and npcshrc."""
60
- for item in CONFIG_ITEMS:
61
- key = item['key']
62
- # First try environment
63
- value = os.environ.get(key, '')
64
- if not value:
65
- # Try reading from npcshrc
66
- npcshrc = Path.home() / '.npcshrc'
67
- if npcshrc.exists():
68
- with open(npcshrc) as f:
69
- for line in f:
70
- if line.strip().startswith(f'export {key}='):
71
- value = line.split('=', 1)[1].strip().strip('"').strip("'")
72
- break
73
- state.values[key] = value
74
-
75
- def save_values():
76
- """Save modified values to ~/.npcshrc."""
77
- from npcsh.config import set_npcsh_config_value
78
- for key in state.modified:
79
- set_npcsh_config_value(key, state.values[key])
80
- state.modified.clear()
81
- state.status = "Saved!"
82
-
83
- def format_value(item, value):
84
- """Format value for display."""
85
- if item['type'] == 'toggle':
86
- return '\033[32mON\033[0m' if value in ('1', 'true', 'True', True) else '\033[31mOFF\033[0m'
87
- elif not value:
88
- return '\033[90m(not set)\033[0m'
89
- return value
90
-
91
- # ========== Rendering ==========
92
- def render_screen():
93
- width, height = get_size()
94
- out = []
95
- out.append("\033[2J\033[H")
96
-
97
- # Header
98
- header = " NPCSH Configuration "
99
- out.append(f"\033[1;1H\033[44;37;1m{'=' * width}\033[0m")
100
- out.append(f"\033[1;{(width - len(header)) // 2}H\033[44;37;1m{header}\033[0m")
101
-
102
- # Config items
103
- visible_height = height - 6
104
- visible = CONFIG_ITEMS[state.scroll_offset:state.scroll_offset + visible_height]
105
-
106
- label_width = max(len(item['label']) for item in CONFIG_ITEMS) + 2
107
- value_width = width - label_width - 10
108
-
109
- for i, item in enumerate(visible):
110
- row = 3 + i
111
- idx = i + state.scroll_offset
112
- key = item['key']
113
- value = state.values.get(key, '')
114
- display_value = format_value(item, value)
115
-
116
- # Indicator for modified
117
- mod_indicator = '*' if key in state.modified else ' '
118
-
119
- if idx == state.selected_idx:
120
- if state.editing:
121
- # Show edit mode
122
- out.append(f"\033[{row};2H\033[7m{item['label']:<{label_width}}\033[0m")
123
- # Edit buffer with cursor
124
- cursor_pos = min(state.edit_cursor, len(state.edit_buffer))
125
- before = state.edit_buffer[:cursor_pos]
126
- after = state.edit_buffer[cursor_pos:]
127
- out.append(f"\033[{row};{label_width+4}H{before}\033[7m \033[0m{after}")
128
- else:
129
- out.append(f"\033[{row};2H\033[7m{mod_indicator}{item['label']:<{label_width}} {display_value[:value_width]}\033[0m")
130
- else:
131
- out.append(f"\033[{row};2H{mod_indicator}{item['label']:<{label_width}} {display_value[:value_width]}")
132
-
133
- # Type indicator
134
- type_hint = {'text': '[e]', 'toggle': '[t]', 'choice': '[c]'}.get(item['type'], '')
135
- out.append(f"\033[{row};{width-4}H\033[90m{type_hint}\033[0m")
136
-
137
- # Status line
138
- if state.status:
139
- out.append(f"\033[{height-2};2H\033[33m{state.status}\033[0m")
140
-
141
- # Footer
142
- if state.editing:
143
- footer = "[Enter] Save [Esc] Cancel"
144
- else:
145
- footer = "[j/k] Navigate [e] Edit [t] Toggle [s] Save All [q] Quit"
146
- out.append(f"\033[{height};1H\033[90m{footer[:width]}\033[0m")
147
-
148
- sys.stdout.write(''.join(out))
149
- sys.stdout.flush()
150
-
151
- # ========== Input Handling ==========
152
- def handle_input(c):
153
- if state.editing:
154
- return handle_edit_input(c)
155
-
156
- if c == 'q':
157
- if state.modified:
158
- state.status = "Unsaved changes! Press 's' to save or 'q' again to discard."
159
- return True
160
- return False
161
-
162
- if c == '\x1b': # Escape sequence
163
- if select.select([sys.stdin], [], [], 0.05)[0]:
164
- c2 = sys.stdin.read(1)
165
- if c2 == '[':
166
- c3 = sys.stdin.read(1)
167
- if c3 == 'A': # Up
168
- move_up()
169
- elif c3 == 'B': # Down
170
- move_down()
171
- return True
172
-
173
- if c == 'k':
174
- move_up()
175
- elif c == 'j':
176
- move_down()
177
- elif c == 'e' or c == '\r' or c == '\n':
178
- start_edit()
179
- elif c == 't':
180
- toggle_value()
181
- elif c == 'c':
182
- cycle_choice()
183
- elif c == 's':
184
- save_values()
185
-
186
- return True
187
-
188
- def handle_edit_input(c):
189
- if c == '\x1b': # Escape - cancel edit
190
- state.editing = False
191
- state.edit_buffer = ""
192
- state.status = "Edit cancelled"
193
- return True
194
-
195
- if c == '\r' or c == '\n': # Enter - save edit
196
- key = CONFIG_ITEMS[state.selected_idx]['key']
197
- state.values[key] = state.edit_buffer
198
- state.modified.add(key)
199
- state.editing = False
200
- state.edit_buffer = ""
201
- state.status = f"Changed {key}"
202
- return True
203
-
204
- if c == '\x7f' or c == '\x08': # Backspace
205
- if state.edit_cursor > 0:
206
- state.edit_buffer = state.edit_buffer[:state.edit_cursor-1] + state.edit_buffer[state.edit_cursor:]
207
- state.edit_cursor -= 1
208
- return True
209
-
210
- if c >= ' ' and c <= '~': # Printable
211
- state.edit_buffer = state.edit_buffer[:state.edit_cursor] + c + state.edit_buffer[state.edit_cursor:]
212
- state.edit_cursor += 1
213
- return True
214
-
215
- return True
216
-
217
- def move_up():
218
- state.selected_idx = max(0, state.selected_idx - 1)
219
- if state.selected_idx < state.scroll_offset:
220
- state.scroll_offset = state.selected_idx
221
- state.status = ""
222
-
223
- def move_down():
224
- _, height = get_size()
225
- visible_height = height - 6
226
- state.selected_idx = min(len(CONFIG_ITEMS) - 1, state.selected_idx + 1)
227
- if state.selected_idx >= state.scroll_offset + visible_height:
228
- state.scroll_offset = state.selected_idx - visible_height + 1
229
- state.status = ""
230
-
231
- def start_edit():
232
- item = CONFIG_ITEMS[state.selected_idx]
233
- if item['type'] == 'toggle':
234
- toggle_value()
235
- elif item['type'] == 'choice':
236
- cycle_choice()
237
- else:
238
- key = item['key']
239
- state.edit_buffer = state.values.get(key, '')
240
- state.edit_cursor = len(state.edit_buffer)
241
- state.editing = True
242
- state.status = "Editing... Enter to save, Esc to cancel"
243
-
244
- def toggle_value():
245
- item = CONFIG_ITEMS[state.selected_idx]
246
- if item['type'] != 'toggle':
247
- return
248
- key = item['key']
249
- current = state.values.get(key, '0')
250
- new_value = '0' if current in ('1', 'true', 'True') else '1'
251
- state.values[key] = new_value
252
- state.modified.add(key)
253
- state.status = f"Toggled {item['label']}"
254
-
255
- def cycle_choice():
256
- item = CONFIG_ITEMS[state.selected_idx]
257
- if item['type'] != 'choice':
258
- return
259
- key = item['key']
260
- choices = item.get('choices', [])
261
- if not choices:
262
- return
263
- current = state.values.get(key, '')
264
- try:
265
- idx = choices.index(current)
266
- next_idx = (idx + 1) % len(choices)
267
- except ValueError:
268
- next_idx = 0
269
- state.values[key] = choices[next_idx]
270
- state.modified.add(key)
271
- state.status = f"Changed to {choices[next_idx]}"
272
-
273
- # ========== Main Loop ==========
274
- load_values()
275
-
276
- fd = sys.stdin.fileno()
277
- old_settings = termios.tcgetattr(fd)
278
-
279
- try:
280
- tty.setcbreak(fd)
281
- sys.stdout.write('\033[?25l') # Hide cursor
282
-
283
- render_screen()
284
-
285
- while True:
286
- c = sys.stdin.read(1)
287
- if not handle_input(c):
288
- break
289
- render_screen()
290
-
291
- finally:
292
- termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
293
- sys.stdout.write('\033[?25h') # Show cursor
294
- sys.stdout.write('\033[2J\033[H') # Clear screen
295
- sys.stdout.flush()
296
-
297
- if state.modified:
298
- context['output'] = f"Exited with unsaved changes: {', '.join(state.modified)}"
299
- else:
300
- context['output'] = "Configuration editor closed."