webscout 8.2.7__py3-none-any.whl → 8.2.9__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 (281) hide show
  1. webscout/AIauto.py +33 -15
  2. webscout/AIbase.py +96 -37
  3. webscout/AIutel.py +703 -250
  4. webscout/Bard.py +441 -323
  5. webscout/Extra/Act.md +309 -0
  6. webscout/Extra/GitToolkit/__init__.py +10 -0
  7. webscout/Extra/GitToolkit/gitapi/README.md +110 -0
  8. webscout/Extra/GitToolkit/gitapi/__init__.py +12 -0
  9. webscout/Extra/GitToolkit/gitapi/repository.py +195 -0
  10. webscout/Extra/GitToolkit/gitapi/user.py +96 -0
  11. webscout/Extra/GitToolkit/gitapi/utils.py +62 -0
  12. webscout/Extra/YTToolkit/README.md +375 -0
  13. webscout/Extra/YTToolkit/YTdownloader.py +957 -0
  14. webscout/Extra/YTToolkit/__init__.py +3 -0
  15. webscout/Extra/YTToolkit/transcriber.py +476 -0
  16. webscout/Extra/YTToolkit/ytapi/README.md +44 -0
  17. webscout/Extra/YTToolkit/ytapi/__init__.py +6 -0
  18. webscout/Extra/YTToolkit/ytapi/channel.py +307 -0
  19. webscout/Extra/YTToolkit/ytapi/errors.py +13 -0
  20. webscout/Extra/YTToolkit/ytapi/extras.py +118 -0
  21. webscout/Extra/YTToolkit/ytapi/https.py +88 -0
  22. webscout/Extra/YTToolkit/ytapi/patterns.py +61 -0
  23. webscout/Extra/YTToolkit/ytapi/playlist.py +59 -0
  24. webscout/Extra/YTToolkit/ytapi/pool.py +8 -0
  25. webscout/Extra/YTToolkit/ytapi/query.py +40 -0
  26. webscout/Extra/YTToolkit/ytapi/stream.py +63 -0
  27. webscout/Extra/YTToolkit/ytapi/utils.py +62 -0
  28. webscout/Extra/YTToolkit/ytapi/video.py +232 -0
  29. webscout/Extra/__init__.py +7 -0
  30. webscout/Extra/autocoder/__init__.py +9 -0
  31. webscout/Extra/autocoder/autocoder.py +1105 -0
  32. webscout/Extra/autocoder/autocoder_utiles.py +332 -0
  33. webscout/Extra/gguf.md +430 -0
  34. webscout/Extra/gguf.py +684 -0
  35. webscout/Extra/tempmail/README.md +488 -0
  36. webscout/Extra/tempmail/__init__.py +28 -0
  37. webscout/Extra/tempmail/async_utils.py +141 -0
  38. webscout/Extra/tempmail/base.py +161 -0
  39. webscout/Extra/tempmail/cli.py +187 -0
  40. webscout/Extra/tempmail/emailnator.py +84 -0
  41. webscout/Extra/tempmail/mail_tm.py +361 -0
  42. webscout/Extra/tempmail/temp_mail_io.py +292 -0
  43. webscout/Extra/weather.md +281 -0
  44. webscout/Extra/weather.py +194 -0
  45. webscout/Extra/weather_ascii.py +76 -0
  46. webscout/Litlogger/README.md +10 -0
  47. webscout/Litlogger/__init__.py +15 -0
  48. webscout/Litlogger/formats.py +4 -0
  49. webscout/Litlogger/handlers.py +103 -0
  50. webscout/Litlogger/levels.py +13 -0
  51. webscout/Litlogger/logger.py +92 -0
  52. webscout/Provider/AI21.py +177 -0
  53. webscout/Provider/AISEARCH/DeepFind.py +254 -0
  54. webscout/Provider/AISEARCH/Perplexity.py +333 -0
  55. webscout/Provider/AISEARCH/README.md +279 -0
  56. webscout/Provider/AISEARCH/__init__.py +9 -0
  57. webscout/Provider/AISEARCH/felo_search.py +202 -0
  58. webscout/Provider/AISEARCH/genspark_search.py +324 -0
  59. webscout/Provider/AISEARCH/hika_search.py +186 -0
  60. webscout/Provider/AISEARCH/iask_search.py +410 -0
  61. webscout/Provider/AISEARCH/monica_search.py +220 -0
  62. webscout/Provider/AISEARCH/scira_search.py +298 -0
  63. webscout/Provider/AISEARCH/webpilotai_search.py +255 -0
  64. webscout/Provider/Aitopia.py +316 -0
  65. webscout/Provider/AllenAI.py +440 -0
  66. webscout/Provider/Andi.py +228 -0
  67. webscout/Provider/Blackboxai.py +791 -0
  68. webscout/Provider/ChatGPTClone.py +237 -0
  69. webscout/Provider/ChatGPTGratis.py +194 -0
  70. webscout/Provider/ChatSandbox.py +342 -0
  71. webscout/Provider/Cloudflare.py +324 -0
  72. webscout/Provider/Cohere.py +208 -0
  73. webscout/Provider/Deepinfra.py +340 -0
  74. webscout/Provider/ExaAI.py +261 -0
  75. webscout/Provider/ExaChat.py +358 -0
  76. webscout/Provider/Flowith.py +217 -0
  77. webscout/Provider/FreeGemini.py +250 -0
  78. webscout/Provider/Gemini.py +169 -0
  79. webscout/Provider/GithubChat.py +369 -0
  80. webscout/Provider/GizAI.py +295 -0
  81. webscout/Provider/Glider.py +225 -0
  82. webscout/Provider/Groq.py +801 -0
  83. webscout/Provider/HF_space/__init__.py +0 -0
  84. webscout/Provider/HF_space/qwen_qwen2.py +206 -0
  85. webscout/Provider/HeckAI.py +375 -0
  86. webscout/Provider/HuggingFaceChat.py +469 -0
  87. webscout/Provider/Hunyuan.py +283 -0
  88. webscout/Provider/Jadve.py +291 -0
  89. webscout/Provider/Koboldai.py +384 -0
  90. webscout/Provider/LambdaChat.py +411 -0
  91. webscout/Provider/Llama3.py +259 -0
  92. webscout/Provider/MCPCore.py +315 -0
  93. webscout/Provider/Marcus.py +198 -0
  94. webscout/Provider/Nemotron.py +218 -0
  95. webscout/Provider/Netwrck.py +270 -0
  96. webscout/Provider/OLLAMA.py +396 -0
  97. webscout/Provider/OPENAI/BLACKBOXAI.py +766 -0
  98. webscout/Provider/OPENAI/Cloudflare.py +378 -0
  99. webscout/Provider/OPENAI/FreeGemini.py +283 -0
  100. webscout/Provider/OPENAI/NEMOTRON.py +232 -0
  101. webscout/Provider/OPENAI/Qwen3.py +283 -0
  102. webscout/Provider/OPENAI/README.md +952 -0
  103. webscout/Provider/OPENAI/TwoAI.py +357 -0
  104. webscout/Provider/OPENAI/__init__.py +40 -0
  105. webscout/Provider/OPENAI/ai4chat.py +293 -0
  106. webscout/Provider/OPENAI/api.py +969 -0
  107. webscout/Provider/OPENAI/base.py +249 -0
  108. webscout/Provider/OPENAI/c4ai.py +373 -0
  109. webscout/Provider/OPENAI/chatgpt.py +556 -0
  110. webscout/Provider/OPENAI/chatgptclone.py +494 -0
  111. webscout/Provider/OPENAI/chatsandbox.py +173 -0
  112. webscout/Provider/OPENAI/copilot.py +242 -0
  113. webscout/Provider/OPENAI/deepinfra.py +322 -0
  114. webscout/Provider/OPENAI/e2b.py +1414 -0
  115. webscout/Provider/OPENAI/exaai.py +417 -0
  116. webscout/Provider/OPENAI/exachat.py +444 -0
  117. webscout/Provider/OPENAI/flowith.py +162 -0
  118. webscout/Provider/OPENAI/freeaichat.py +359 -0
  119. webscout/Provider/OPENAI/glider.py +326 -0
  120. webscout/Provider/OPENAI/groq.py +364 -0
  121. webscout/Provider/OPENAI/heckai.py +308 -0
  122. webscout/Provider/OPENAI/llmchatco.py +335 -0
  123. webscout/Provider/OPENAI/mcpcore.py +389 -0
  124. webscout/Provider/OPENAI/multichat.py +376 -0
  125. webscout/Provider/OPENAI/netwrck.py +357 -0
  126. webscout/Provider/OPENAI/oivscode.py +287 -0
  127. webscout/Provider/OPENAI/opkfc.py +496 -0
  128. webscout/Provider/OPENAI/pydantic_imports.py +172 -0
  129. webscout/Provider/OPENAI/scirachat.py +477 -0
  130. webscout/Provider/OPENAI/sonus.py +304 -0
  131. webscout/Provider/OPENAI/standardinput.py +433 -0
  132. webscout/Provider/OPENAI/textpollinations.py +339 -0
  133. webscout/Provider/OPENAI/toolbaz.py +413 -0
  134. webscout/Provider/OPENAI/typefully.py +355 -0
  135. webscout/Provider/OPENAI/typegpt.py +364 -0
  136. webscout/Provider/OPENAI/uncovrAI.py +463 -0
  137. webscout/Provider/OPENAI/utils.py +318 -0
  138. webscout/Provider/OPENAI/venice.py +431 -0
  139. webscout/Provider/OPENAI/wisecat.py +387 -0
  140. webscout/Provider/OPENAI/writecream.py +163 -0
  141. webscout/Provider/OPENAI/x0gpt.py +365 -0
  142. webscout/Provider/OPENAI/yep.py +382 -0
  143. webscout/Provider/OpenGPT.py +209 -0
  144. webscout/Provider/Openai.py +496 -0
  145. webscout/Provider/PI.py +429 -0
  146. webscout/Provider/Perplexitylabs.py +415 -0
  147. webscout/Provider/QwenLM.py +254 -0
  148. webscout/Provider/Reka.py +214 -0
  149. webscout/Provider/StandardInput.py +290 -0
  150. webscout/Provider/TTI/README.md +82 -0
  151. webscout/Provider/TTI/__init__.py +7 -0
  152. webscout/Provider/TTI/aiarta.py +365 -0
  153. webscout/Provider/TTI/artbit.py +0 -0
  154. webscout/Provider/TTI/base.py +64 -0
  155. webscout/Provider/TTI/fastflux.py +200 -0
  156. webscout/Provider/TTI/magicstudio.py +201 -0
  157. webscout/Provider/TTI/piclumen.py +203 -0
  158. webscout/Provider/TTI/pixelmuse.py +225 -0
  159. webscout/Provider/TTI/pollinations.py +221 -0
  160. webscout/Provider/TTI/utils.py +11 -0
  161. webscout/Provider/TTS/README.md +192 -0
  162. webscout/Provider/TTS/__init__.py +10 -0
  163. webscout/Provider/TTS/base.py +159 -0
  164. webscout/Provider/TTS/deepgram.py +156 -0
  165. webscout/Provider/TTS/elevenlabs.py +111 -0
  166. webscout/Provider/TTS/gesserit.py +128 -0
  167. webscout/Provider/TTS/murfai.py +113 -0
  168. webscout/Provider/TTS/openai_fm.py +129 -0
  169. webscout/Provider/TTS/parler.py +111 -0
  170. webscout/Provider/TTS/speechma.py +580 -0
  171. webscout/Provider/TTS/sthir.py +94 -0
  172. webscout/Provider/TTS/streamElements.py +333 -0
  173. webscout/Provider/TTS/utils.py +280 -0
  174. webscout/Provider/TeachAnything.py +229 -0
  175. webscout/Provider/TextPollinationsAI.py +308 -0
  176. webscout/Provider/TwoAI.py +475 -0
  177. webscout/Provider/TypliAI.py +305 -0
  178. webscout/Provider/UNFINISHED/ChatHub.py +209 -0
  179. webscout/Provider/UNFINISHED/Youchat.py +330 -0
  180. webscout/Provider/UNFINISHED/liner_api_request.py +263 -0
  181. webscout/Provider/UNFINISHED/puterjs.py +635 -0
  182. webscout/Provider/UNFINISHED/test_lmarena.py +119 -0
  183. webscout/Provider/Venice.py +258 -0
  184. webscout/Provider/VercelAI.py +253 -0
  185. webscout/Provider/WiseCat.py +233 -0
  186. webscout/Provider/WrDoChat.py +370 -0
  187. webscout/Provider/Writecream.py +246 -0
  188. webscout/Provider/WritingMate.py +269 -0
  189. webscout/Provider/__init__.py +174 -0
  190. webscout/Provider/ai4chat.py +174 -0
  191. webscout/Provider/akashgpt.py +335 -0
  192. webscout/Provider/asksteve.py +220 -0
  193. webscout/Provider/cerebras.py +290 -0
  194. webscout/Provider/chatglm.py +215 -0
  195. webscout/Provider/cleeai.py +213 -0
  196. webscout/Provider/copilot.py +425 -0
  197. webscout/Provider/elmo.py +283 -0
  198. webscout/Provider/freeaichat.py +285 -0
  199. webscout/Provider/geminiapi.py +208 -0
  200. webscout/Provider/granite.py +235 -0
  201. webscout/Provider/hermes.py +266 -0
  202. webscout/Provider/julius.py +223 -0
  203. webscout/Provider/koala.py +170 -0
  204. webscout/Provider/learnfastai.py +325 -0
  205. webscout/Provider/llama3mitril.py +215 -0
  206. webscout/Provider/llmchat.py +258 -0
  207. webscout/Provider/llmchatco.py +306 -0
  208. webscout/Provider/lmarena.py +198 -0
  209. webscout/Provider/meta.py +801 -0
  210. webscout/Provider/multichat.py +364 -0
  211. webscout/Provider/oivscode.py +309 -0
  212. webscout/Provider/samurai.py +224 -0
  213. webscout/Provider/scira_chat.py +299 -0
  214. webscout/Provider/scnet.py +243 -0
  215. webscout/Provider/searchchat.py +292 -0
  216. webscout/Provider/sonus.py +258 -0
  217. webscout/Provider/talkai.py +194 -0
  218. webscout/Provider/toolbaz.py +353 -0
  219. webscout/Provider/turboseek.py +266 -0
  220. webscout/Provider/typefully.py +202 -0
  221. webscout/Provider/typegpt.py +289 -0
  222. webscout/Provider/uncovr.py +368 -0
  223. webscout/Provider/x0gpt.py +299 -0
  224. webscout/Provider/yep.py +389 -0
  225. webscout/__init__.py +4 -2
  226. webscout/cli.py +3 -28
  227. webscout/client.py +70 -0
  228. webscout/conversation.py +35 -35
  229. webscout/litagent/Readme.md +276 -0
  230. webscout/litagent/__init__.py +29 -0
  231. webscout/litagent/agent.py +455 -0
  232. webscout/litagent/constants.py +60 -0
  233. webscout/litprinter/__init__.py +59 -0
  234. webscout/optimizers.py +419 -419
  235. webscout/scout/README.md +404 -0
  236. webscout/scout/__init__.py +8 -0
  237. webscout/scout/core/__init__.py +7 -0
  238. webscout/scout/core/crawler.py +210 -0
  239. webscout/scout/core/scout.py +607 -0
  240. webscout/scout/core/search_result.py +96 -0
  241. webscout/scout/core/text_analyzer.py +63 -0
  242. webscout/scout/core/text_utils.py +277 -0
  243. webscout/scout/core/web_analyzer.py +52 -0
  244. webscout/scout/element.py +478 -0
  245. webscout/scout/parsers/__init__.py +69 -0
  246. webscout/scout/parsers/html5lib_parser.py +172 -0
  247. webscout/scout/parsers/html_parser.py +236 -0
  248. webscout/scout/parsers/lxml_parser.py +178 -0
  249. webscout/scout/utils.py +37 -0
  250. webscout/swiftcli/Readme.md +323 -0
  251. webscout/swiftcli/__init__.py +95 -0
  252. webscout/swiftcli/core/__init__.py +7 -0
  253. webscout/swiftcli/core/cli.py +297 -0
  254. webscout/swiftcli/core/context.py +104 -0
  255. webscout/swiftcli/core/group.py +241 -0
  256. webscout/swiftcli/decorators/__init__.py +28 -0
  257. webscout/swiftcli/decorators/command.py +221 -0
  258. webscout/swiftcli/decorators/options.py +220 -0
  259. webscout/swiftcli/decorators/output.py +252 -0
  260. webscout/swiftcli/exceptions.py +21 -0
  261. webscout/swiftcli/plugins/__init__.py +9 -0
  262. webscout/swiftcli/plugins/base.py +135 -0
  263. webscout/swiftcli/plugins/manager.py +269 -0
  264. webscout/swiftcli/utils/__init__.py +59 -0
  265. webscout/swiftcli/utils/formatting.py +252 -0
  266. webscout/swiftcli/utils/parsing.py +267 -0
  267. webscout/version.py +1 -1
  268. webscout/webscout_search.py +2 -182
  269. webscout/webscout_search_async.py +1 -179
  270. webscout/zeroart/README.md +89 -0
  271. webscout/zeroart/__init__.py +135 -0
  272. webscout/zeroart/base.py +66 -0
  273. webscout/zeroart/effects.py +101 -0
  274. webscout/zeroart/fonts.py +1239 -0
  275. {webscout-8.2.7.dist-info → webscout-8.2.9.dist-info}/METADATA +262 -83
  276. webscout-8.2.9.dist-info/RECORD +289 -0
  277. {webscout-8.2.7.dist-info → webscout-8.2.9.dist-info}/WHEEL +1 -1
  278. {webscout-8.2.7.dist-info → webscout-8.2.9.dist-info}/entry_points.txt +1 -0
  279. webscout-8.2.7.dist-info/RECORD +0 -26
  280. {webscout-8.2.7.dist-info → webscout-8.2.9.dist-info}/licenses/LICENSE.md +0 -0
  281. {webscout-8.2.7.dist-info → webscout-8.2.9.dist-info}/top_level.txt +0 -0
webscout/optimizers.py CHANGED
@@ -1,420 +1,420 @@
1
- """Prompt optimization utilities."""
2
-
3
- import os
4
- import platform
5
- import subprocess
6
- from typing import Optional
7
- class Optimizers:
8
- """
9
- >>> Optimizers.code("write a hello world")
10
- Returns optimized prompt for code generation
11
-
12
- >>> Optimizers.shell_command("list files")
13
- Returns optimized prompt for shell commands
14
-
15
- >>> Optimizers.search("best pizza places")
16
- Returns optimized prompt for web search
17
-
18
- >>> Optimizers.math("solve quadratic equation")
19
- Returns optimized prompt for math problems
20
- """
21
- @staticmethod
22
- def code(prompt: str) -> str:
23
- """Deprecated: Use coder() instead"""
24
- return Optimizers.coder(prompt)
25
-
26
- @staticmethod
27
- def shell_command(prompt: str) -> str:
28
- """Deprecated: Use coder() instead"""
29
- return Optimizers.coder(f"!{prompt}")
30
-
31
- @staticmethod
32
- def coder(prompt: str) -> str:
33
- """Unified optimizer for both code and shell commands."""
34
- # Get system info for shell commands
35
- operating_system: str = ""
36
- if platform.system() == "Windows":
37
- operating_system = "Windows"
38
- elif platform.system() == "Darwin":
39
- operating_system = "MacOS"
40
- elif platform.system() == "Linux":
41
- try:
42
- result: str = subprocess.check_output(["lsb_release", "-si"]).decode().strip()
43
- operating_system = f"Linux/{result}" if result else "Linux"
44
- except Exception:
45
- operating_system = "Linux"
46
- else:
47
- operating_system = platform.system()
48
-
49
- # Get shell info
50
- shell_name: str = "/bin/sh"
51
- if platform.system() == "Windows":
52
- shell_name = "powershell.exe" if os.getenv("PSModulePath") else "cmd.exe"
53
- else:
54
- shell_env: Optional[str] = os.getenv("SHELL")
55
- if shell_env:
56
- shell_name = shell_env
57
-
58
- return (
59
- f"""<system_context>
60
- <role>
61
- Your Role: You are a code generation expert. Analyze the request and provide appropriate output.
62
- If the request starts with '!' or involves system/shell operations, provide a shell command.
63
- Otherwise, provide Python code.
64
- </role>
65
- <rules>
66
- RULES:
67
- - Provide ONLY code/command output without any description or markdown
68
- - For shell commands:
69
- - Target OS: {operating_system}
70
- - Shell: {shell_name}
71
- - Combine multiple steps when possible
72
- - For Python code:
73
- - Include necessary imports
74
- - Handle errors appropriately
75
- - Follow PEP 8 style
76
- - If details are missing, use most logical implementation
77
- - No warnings, descriptions, or explanations
78
- </rules>
79
- <request>
80
- Request: {prompt}
81
- </request>
82
- <output>
83
- Output:
84
- </output>
85
- </system_context>"""
86
- )
87
-
88
- @staticmethod
89
- def search(prompt: str) -> str:
90
- """Optimize prompt for web search queries."""
91
- return f"""
92
- <system_context>
93
- <role>
94
- Your role: Generate a precise and focused web search query.
95
- </role>
96
- <instructions>
97
- IMPORTANT: Return only the search query without any explanation.
98
- Format: Plain text, no markdown.
99
- If details are missing, focus on the most relevant aspects.
100
- </instructions>
101
- <request>
102
- Request: {prompt}
103
- </request>
104
- <output>
105
- Search Query:
106
- </output>
107
- </system_context>
108
- """
109
-
110
- @staticmethod
111
- def math(prompt: str) -> str:
112
- """Optimize prompt for mathematical problem solving."""
113
- return f"""
114
- <system_context>
115
- <role>
116
- Your role: Solve mathematical problems step by step.
117
- </role>
118
- <instructions>
119
- Format: Plain text, show calculations clearly.
120
- Show all steps and intermediate results.
121
- Include units where applicable.
122
- Provide final answer in a clear format.
123
- </instructions>
124
- <request>
125
- Problem: {prompt}
126
- </request>
127
- <output>
128
- Solution:
129
- </output>
130
- </system_context>
131
- """
132
-
133
- @staticmethod
134
- def explain(prompt: str) -> str:
135
- """Optimize prompt for clear explanations."""
136
- return f"""
137
- <system_context>
138
- <role>
139
- Your role: Explain concepts clearly and concisely.
140
- </role>
141
- <instructions>
142
- Format: Break down complex ideas into simple terms.
143
- Use analogies where helpful.
144
- Focus on key points and practical understanding.
145
- </instructions>
146
- <request>
147
- Topic: {prompt}
148
- </request>
149
- <output>
150
- Explanation:
151
- </output>
152
- </system_context>
153
- """
154
-
155
- @staticmethod
156
- def debug(prompt: str) -> str:
157
- """Optimize prompt for debugging code."""
158
- return f"""
159
- <system_context>
160
- <role>
161
- Your role: Debug code and identify issues.
162
- </role>
163
- <instructions>
164
- Steps:
165
- - Identify syntax errors
166
- - Check logic issues
167
- - Look for common pitfalls
168
- - Suggest fixes
169
- </instructions>
170
- <request>
171
- Code to debug: {prompt}
172
- </request>
173
- <output>
174
- Analysis:
175
- </output>
176
- </system_context>
177
- """
178
-
179
- @staticmethod
180
- def api(prompt: str) -> str:
181
- """Optimize prompt for API endpoint design."""
182
- return f"""
183
- <system_context>
184
- <role>
185
- Your role: Design RESTful API endpoints.
186
- </role>
187
- <instructions>
188
- Include:
189
- - HTTP methods
190
- - URL structure
191
- - Request/Response format
192
- - Status codes
193
- </instructions>
194
- <request>
195
- API requirement: {prompt}
196
- </request>
197
- <output>
198
- Design:
199
- </output>
200
- </system_context>
201
- """
202
-
203
- @staticmethod
204
- def sql(prompt: str) -> str:
205
- """Optimize prompt for SQL query generation."""
206
- return f"""
207
- <system_context>
208
- <role>
209
- Your role: Generate optimized SQL queries.
210
- </role>
211
- <instructions>
212
- Requirements:
213
- - Standard SQL syntax
214
- - Efficient query structure
215
- - Proper joins and indexing
216
- - Consider performance
217
- </instructions>
218
- <request>
219
- Query need: {prompt}
220
- </request>
221
- <output>
222
- SQL:
223
- </output>
224
- </system_context>
225
- """
226
-
227
- @staticmethod
228
- def regex(prompt: str) -> str:
229
- """Optimize prompt for regex pattern generation."""
230
- return f"""
231
- <system_context>
232
- <role>
233
- Your role: Generate precise regex patterns.
234
- </role>
235
- <instructions>
236
- Requirements:
237
- - Standard regex syntax
238
- - Pattern explanation
239
- - Test cases
240
- - Consider edge cases
241
- </instructions>
242
- <request>
243
- Pattern need: {prompt}
244
- </request>
245
- <output>
246
- Regex:
247
- </output>
248
- </system_context>
249
- """
250
-
251
- @staticmethod
252
- def test(prompt: str) -> str:
253
- """Optimize prompt for test case generation."""
254
- return f"""
255
- <system_context>
256
- <role>
257
- Your role: Generate comprehensive test cases.
258
- </role>
259
- <instructions>
260
- Include:
261
- - Edge cases
262
- - Corner cases
263
- - Error scenarios
264
- - Happy path
265
- Format: Test name and expected result
266
- </instructions>
267
- <request>
268
- Test requirement: {prompt}
269
- </request>
270
- <output>
271
- Test Cases:
272
- </output>
273
- </system_context>
274
- """
275
-
276
- @staticmethod
277
- def docker(prompt: str) -> str:
278
- """Optimize prompt for Dockerfile creation."""
279
- return f"""
280
- <system_context>
281
- <role>
282
- Your role: Create efficient Dockerfile.
283
- </role>
284
- <instructions>
285
- Consider:
286
- - Base image selection
287
- - Layer optimization
288
- - Security best practices
289
- - Multi-stage builds if needed
290
- </instructions>
291
- <request>
292
- Container requirement: {prompt}
293
- </request>
294
- <output>
295
- Dockerfile:
296
- </output>
297
- </system_context>
298
- """
299
-
300
- @staticmethod
301
- def git(prompt: str) -> str:
302
- """Optimize prompt for git commands."""
303
- return f"""
304
- <system_context>
305
- <role>
306
- Your role: Generate git commands.
307
- </role>
308
- <instructions>
309
- Requirements:
310
- - Clear and safe commands
311
- - Consider current state
312
- - Include safety checks
313
- - Best practices
314
- </instructions>
315
- <request>
316
- Git task: {prompt}
317
- </request>
318
- <output>
319
- Command:
320
- </output>
321
- </system_context>
322
- """
323
-
324
- @staticmethod
325
- def yaml(prompt: str) -> str:
326
- """Optimize prompt for YAML configuration."""
327
- return f"""
328
- <system_context>
329
- <role>
330
- Your role: Generate YAML configuration.
331
- </role>
332
- <instructions>
333
- Requirements:
334
- - Valid YAML syntax
335
- - Clear structure
336
- - Comments for complex parts
337
- - Best practices
338
- </instructions>
339
- <request>
340
- Config need: {prompt}
341
- </request>
342
- <output>
343
- YAML:
344
- </output>
345
- </system_context>
346
- """
347
-
348
- @staticmethod
349
- def cli(prompt: str) -> str:
350
- """Optimize prompt for CLI command design."""
351
- return f"""
352
- <system_context>
353
- <role>
354
- Your role: Design CLI commands.
355
- </role>
356
- <instructions>
357
- Include:
358
- - Command structure
359
- - Arguments/options
360
- - Help messages
361
- - Examples
362
- </instructions>
363
- <request>
364
- CLI requirement: {prompt}
365
- </request>
366
- <output>
367
- Design:
368
- </output>
369
- </system_context>
370
- """
371
-
372
- @staticmethod
373
- def refactor(prompt: str) -> str:
374
- """Optimize prompt for code refactoring suggestions."""
375
- return f"""
376
- <system_context>
377
- <role>
378
- Your role: Suggest code improvements.
379
- </role>
380
- <instructions>
381
- Focus on:
382
- - Code quality
383
- - Performance
384
- - Readability
385
- - Best practices
386
- - Design patterns
387
- </instructions>
388
- <request>
389
- Code to refactor: {prompt}
390
- </request>
391
- <output>
392
- Suggestions:
393
- </output>
394
- </system_context>
395
- """
396
-
397
- @staticmethod
398
- def security(prompt: str) -> str:
399
- """Optimize prompt for security analysis."""
400
- return f"""
401
- <system_context>
402
- <role>
403
- Your role: Security analysis and fixes.
404
- </role>
405
- <instructions>
406
- Check for:
407
- - Common vulnerabilities
408
- - Security best practices
409
- - Input validation
410
- - Authentication/Authorization
411
- - Data protection
412
- </instructions>
413
- <request>
414
- Code to analyze: {prompt}
415
- </request>
416
- <output>
417
- Analysis:
418
- </output>
419
- </system_context>
1
+ """Prompt optimization utilities."""
2
+
3
+ import os
4
+ import platform
5
+ import subprocess
6
+ from typing import Optional
7
+ class Optimizers:
8
+ """
9
+ >>> Optimizers.code("write a hello world")
10
+ Returns optimized prompt for code generation
11
+
12
+ >>> Optimizers.shell_command("list files")
13
+ Returns optimized prompt for shell commands
14
+
15
+ >>> Optimizers.search("best pizza places")
16
+ Returns optimized prompt for web search
17
+
18
+ >>> Optimizers.math("solve quadratic equation")
19
+ Returns optimized prompt for math problems
20
+ """
21
+ @staticmethod
22
+ def code(prompt: str) -> str:
23
+ """Deprecated: Use coder() instead"""
24
+ return Optimizers.coder(prompt)
25
+
26
+ @staticmethod
27
+ def shell_command(prompt: str) -> str:
28
+ """Deprecated: Use coder() instead"""
29
+ return Optimizers.coder(f"!{prompt}")
30
+
31
+ @staticmethod
32
+ def coder(prompt: str) -> str:
33
+ """Unified optimizer for both code and shell commands."""
34
+ # Get system info for shell commands
35
+ operating_system: str = ""
36
+ if platform.system() == "Windows":
37
+ operating_system = "Windows"
38
+ elif platform.system() == "Darwin":
39
+ operating_system = "MacOS"
40
+ elif platform.system() == "Linux":
41
+ try:
42
+ result: str = subprocess.check_output(["lsb_release", "-si"]).decode().strip()
43
+ operating_system = f"Linux/{result}" if result else "Linux"
44
+ except Exception:
45
+ operating_system = "Linux"
46
+ else:
47
+ operating_system = platform.system()
48
+
49
+ # Get shell info
50
+ shell_name: str = "/bin/sh"
51
+ if platform.system() == "Windows":
52
+ shell_name = "powershell.exe" if os.getenv("PSModulePath") else "cmd.exe"
53
+ else:
54
+ shell_env: Optional[str] = os.getenv("SHELL")
55
+ if shell_env:
56
+ shell_name = shell_env
57
+
58
+ return (
59
+ f"""<system_context>
60
+ <role>
61
+ Your Role: You are a code generation expert. Analyze the request and provide appropriate output.
62
+ If the request starts with '!' or involves system/shell operations, provide a shell command.
63
+ Otherwise, provide Python code.
64
+ </role>
65
+ <rules>
66
+ RULES:
67
+ - Provide ONLY code/command output without any description or markdown
68
+ - For shell commands:
69
+ - Target OS: {operating_system}
70
+ - Shell: {shell_name}
71
+ - Combine multiple steps when possible
72
+ - For Python code:
73
+ - Include necessary imports
74
+ - Handle errors appropriately
75
+ - Follow PEP 8 style
76
+ - If details are missing, use most logical implementation
77
+ - No warnings, descriptions, or explanations
78
+ </rules>
79
+ <request>
80
+ Request: {prompt}
81
+ </request>
82
+ <output>
83
+ Output:
84
+ </output>
85
+ </system_context>"""
86
+ )
87
+
88
+ @staticmethod
89
+ def search(prompt: str) -> str:
90
+ """Optimize prompt for web search queries."""
91
+ return f"""
92
+ <system_context>
93
+ <role>
94
+ Your role: Generate a precise and focused web search query.
95
+ </role>
96
+ <instructions>
97
+ IMPORTANT: Return only the search query without any explanation.
98
+ Format: Plain text, no markdown.
99
+ If details are missing, focus on the most relevant aspects.
100
+ </instructions>
101
+ <request>
102
+ Request: {prompt}
103
+ </request>
104
+ <output>
105
+ Search Query:
106
+ </output>
107
+ </system_context>
108
+ """
109
+
110
+ @staticmethod
111
+ def math(prompt: str) -> str:
112
+ """Optimize prompt for mathematical problem solving."""
113
+ return f"""
114
+ <system_context>
115
+ <role>
116
+ Your role: Solve mathematical problems step by step.
117
+ </role>
118
+ <instructions>
119
+ Format: Plain text, show calculations clearly.
120
+ Show all steps and intermediate results.
121
+ Include units where applicable.
122
+ Provide final answer in a clear format.
123
+ </instructions>
124
+ <request>
125
+ Problem: {prompt}
126
+ </request>
127
+ <output>
128
+ Solution:
129
+ </output>
130
+ </system_context>
131
+ """
132
+
133
+ @staticmethod
134
+ def explain(prompt: str) -> str:
135
+ """Optimize prompt for clear explanations."""
136
+ return f"""
137
+ <system_context>
138
+ <role>
139
+ Your role: Explain concepts clearly and concisely.
140
+ </role>
141
+ <instructions>
142
+ Format: Break down complex ideas into simple terms.
143
+ Use analogies where helpful.
144
+ Focus on key points and practical understanding.
145
+ </instructions>
146
+ <request>
147
+ Topic: {prompt}
148
+ </request>
149
+ <output>
150
+ Explanation:
151
+ </output>
152
+ </system_context>
153
+ """
154
+
155
+ @staticmethod
156
+ def debug(prompt: str) -> str:
157
+ """Optimize prompt for debugging code."""
158
+ return f"""
159
+ <system_context>
160
+ <role>
161
+ Your role: Debug code and identify issues.
162
+ </role>
163
+ <instructions>
164
+ Steps:
165
+ - Identify syntax errors
166
+ - Check logic issues
167
+ - Look for common pitfalls
168
+ - Suggest fixes
169
+ </instructions>
170
+ <request>
171
+ Code to debug: {prompt}
172
+ </request>
173
+ <output>
174
+ Analysis:
175
+ </output>
176
+ </system_context>
177
+ """
178
+
179
+ @staticmethod
180
+ def api(prompt: str) -> str:
181
+ """Optimize prompt for API endpoint design."""
182
+ return f"""
183
+ <system_context>
184
+ <role>
185
+ Your role: Design RESTful API endpoints.
186
+ </role>
187
+ <instructions>
188
+ Include:
189
+ - HTTP methods
190
+ - URL structure
191
+ - Request/Response format
192
+ - Status codes
193
+ </instructions>
194
+ <request>
195
+ API requirement: {prompt}
196
+ </request>
197
+ <output>
198
+ Design:
199
+ </output>
200
+ </system_context>
201
+ """
202
+
203
+ @staticmethod
204
+ def sql(prompt: str) -> str:
205
+ """Optimize prompt for SQL query generation."""
206
+ return f"""
207
+ <system_context>
208
+ <role>
209
+ Your role: Generate optimized SQL queries.
210
+ </role>
211
+ <instructions>
212
+ Requirements:
213
+ - Standard SQL syntax
214
+ - Efficient query structure
215
+ - Proper joins and indexing
216
+ - Consider performance
217
+ </instructions>
218
+ <request>
219
+ Query need: {prompt}
220
+ </request>
221
+ <output>
222
+ SQL:
223
+ </output>
224
+ </system_context>
225
+ """
226
+
227
+ @staticmethod
228
+ def regex(prompt: str) -> str:
229
+ """Optimize prompt for regex pattern generation."""
230
+ return f"""
231
+ <system_context>
232
+ <role>
233
+ Your role: Generate precise regex patterns.
234
+ </role>
235
+ <instructions>
236
+ Requirements:
237
+ - Standard regex syntax
238
+ - Pattern explanation
239
+ - Test cases
240
+ - Consider edge cases
241
+ </instructions>
242
+ <request>
243
+ Pattern need: {prompt}
244
+ </request>
245
+ <output>
246
+ Regex:
247
+ </output>
248
+ </system_context>
249
+ """
250
+
251
+ @staticmethod
252
+ def test(prompt: str) -> str:
253
+ """Optimize prompt for test case generation."""
254
+ return f"""
255
+ <system_context>
256
+ <role>
257
+ Your role: Generate comprehensive test cases.
258
+ </role>
259
+ <instructions>
260
+ Include:
261
+ - Edge cases
262
+ - Corner cases
263
+ - Error scenarios
264
+ - Happy path
265
+ Format: Test name and expected result
266
+ </instructions>
267
+ <request>
268
+ Test requirement: {prompt}
269
+ </request>
270
+ <output>
271
+ Test Cases:
272
+ </output>
273
+ </system_context>
274
+ """
275
+
276
+ @staticmethod
277
+ def docker(prompt: str) -> str:
278
+ """Optimize prompt for Dockerfile creation."""
279
+ return f"""
280
+ <system_context>
281
+ <role>
282
+ Your role: Create efficient Dockerfile.
283
+ </role>
284
+ <instructions>
285
+ Consider:
286
+ - Base image selection
287
+ - Layer optimization
288
+ - Security best practices
289
+ - Multi-stage builds if needed
290
+ </instructions>
291
+ <request>
292
+ Container requirement: {prompt}
293
+ </request>
294
+ <output>
295
+ Dockerfile:
296
+ </output>
297
+ </system_context>
298
+ """
299
+
300
+ @staticmethod
301
+ def git(prompt: str) -> str:
302
+ """Optimize prompt for git commands."""
303
+ return f"""
304
+ <system_context>
305
+ <role>
306
+ Your role: Generate git commands.
307
+ </role>
308
+ <instructions>
309
+ Requirements:
310
+ - Clear and safe commands
311
+ - Consider current state
312
+ - Include safety checks
313
+ - Best practices
314
+ </instructions>
315
+ <request>
316
+ Git task: {prompt}
317
+ </request>
318
+ <output>
319
+ Command:
320
+ </output>
321
+ </system_context>
322
+ """
323
+
324
+ @staticmethod
325
+ def yaml(prompt: str) -> str:
326
+ """Optimize prompt for YAML configuration."""
327
+ return f"""
328
+ <system_context>
329
+ <role>
330
+ Your role: Generate YAML configuration.
331
+ </role>
332
+ <instructions>
333
+ Requirements:
334
+ - Valid YAML syntax
335
+ - Clear structure
336
+ - Comments for complex parts
337
+ - Best practices
338
+ </instructions>
339
+ <request>
340
+ Config need: {prompt}
341
+ </request>
342
+ <output>
343
+ YAML:
344
+ </output>
345
+ </system_context>
346
+ """
347
+
348
+ @staticmethod
349
+ def cli(prompt: str) -> str:
350
+ """Optimize prompt for CLI command design."""
351
+ return f"""
352
+ <system_context>
353
+ <role>
354
+ Your role: Design CLI commands.
355
+ </role>
356
+ <instructions>
357
+ Include:
358
+ - Command structure
359
+ - Arguments/options
360
+ - Help messages
361
+ - Examples
362
+ </instructions>
363
+ <request>
364
+ CLI requirement: {prompt}
365
+ </request>
366
+ <output>
367
+ Design:
368
+ </output>
369
+ </system_context>
370
+ """
371
+
372
+ @staticmethod
373
+ def refactor(prompt: str) -> str:
374
+ """Optimize prompt for code refactoring suggestions."""
375
+ return f"""
376
+ <system_context>
377
+ <role>
378
+ Your role: Suggest code improvements.
379
+ </role>
380
+ <instructions>
381
+ Focus on:
382
+ - Code quality
383
+ - Performance
384
+ - Readability
385
+ - Best practices
386
+ - Design patterns
387
+ </instructions>
388
+ <request>
389
+ Code to refactor: {prompt}
390
+ </request>
391
+ <output>
392
+ Suggestions:
393
+ </output>
394
+ </system_context>
395
+ """
396
+
397
+ @staticmethod
398
+ def security(prompt: str) -> str:
399
+ """Optimize prompt for security analysis."""
400
+ return f"""
401
+ <system_context>
402
+ <role>
403
+ Your role: Security analysis and fixes.
404
+ </role>
405
+ <instructions>
406
+ Check for:
407
+ - Common vulnerabilities
408
+ - Security best practices
409
+ - Input validation
410
+ - Authentication/Authorization
411
+ - Data protection
412
+ </instructions>
413
+ <request>
414
+ Code to analyze: {prompt}
415
+ </request>
416
+ <output>
417
+ Analysis:
418
+ </output>
419
+ </system_context>
420
420
  """