autobyteus 1.2.1__py3-none-any.whl → 1.3.0__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 (472) hide show
  1. autobyteus/agent/agent.py +15 -5
  2. autobyteus/agent/bootstrap_steps/__init__.py +3 -3
  3. autobyteus/agent/bootstrap_steps/agent_bootstrapper.py +5 -59
  4. autobyteus/agent/bootstrap_steps/base_bootstrap_step.py +1 -4
  5. autobyteus/agent/bootstrap_steps/mcp_server_prewarming_step.py +1 -3
  6. autobyteus/agent/bootstrap_steps/system_prompt_processing_step.py +16 -13
  7. autobyteus/agent/bootstrap_steps/working_context_snapshot_restore_step.py +38 -0
  8. autobyteus/agent/bootstrap_steps/workspace_context_initialization_step.py +2 -4
  9. autobyteus/agent/context/agent_config.py +47 -20
  10. autobyteus/agent/context/agent_context.py +23 -18
  11. autobyteus/agent/context/agent_runtime_state.py +21 -19
  12. autobyteus/agent/events/__init__.py +16 -1
  13. autobyteus/agent/events/agent_events.py +43 -3
  14. autobyteus/agent/events/agent_input_event_queue_manager.py +79 -26
  15. autobyteus/agent/events/event_store.py +57 -0
  16. autobyteus/agent/events/notifiers.py +69 -59
  17. autobyteus/agent/events/worker_event_dispatcher.py +21 -64
  18. autobyteus/agent/factory/agent_factory.py +83 -6
  19. autobyteus/agent/handlers/__init__.py +2 -0
  20. autobyteus/agent/handlers/approved_tool_invocation_event_handler.py +51 -34
  21. autobyteus/agent/handlers/bootstrap_event_handler.py +155 -0
  22. autobyteus/agent/handlers/inter_agent_message_event_handler.py +10 -0
  23. autobyteus/agent/handlers/lifecycle_event_logger.py +19 -11
  24. autobyteus/agent/handlers/llm_complete_response_received_event_handler.py +10 -15
  25. autobyteus/agent/handlers/llm_user_message_ready_event_handler.py +188 -48
  26. autobyteus/agent/handlers/tool_execution_approval_event_handler.py +0 -10
  27. autobyteus/agent/handlers/tool_invocation_request_event_handler.py +53 -48
  28. autobyteus/agent/handlers/tool_result_event_handler.py +7 -8
  29. autobyteus/agent/handlers/user_input_message_event_handler.py +10 -3
  30. autobyteus/agent/input_processor/memory_ingest_input_processor.py +44 -0
  31. autobyteus/agent/lifecycle/__init__.py +12 -0
  32. autobyteus/agent/lifecycle/base_processor.py +109 -0
  33. autobyteus/agent/lifecycle/events.py +35 -0
  34. autobyteus/agent/lifecycle/processor_definition.py +36 -0
  35. autobyteus/agent/lifecycle/processor_registry.py +106 -0
  36. autobyteus/agent/llm_request_assembler.py +98 -0
  37. autobyteus/agent/llm_response_processor/__init__.py +1 -8
  38. autobyteus/agent/message/context_file_type.py +1 -1
  39. autobyteus/agent/runtime/agent_runtime.py +29 -21
  40. autobyteus/agent/runtime/agent_worker.py +98 -19
  41. autobyteus/agent/shutdown_steps/__init__.py +2 -0
  42. autobyteus/agent/shutdown_steps/agent_shutdown_orchestrator.py +2 -0
  43. autobyteus/agent/shutdown_steps/tool_cleanup_step.py +58 -0
  44. autobyteus/agent/status/__init__.py +14 -0
  45. autobyteus/agent/status/manager.py +93 -0
  46. autobyteus/agent/status/status_deriver.py +96 -0
  47. autobyteus/agent/{phases/phase_enum.py → status/status_enum.py} +16 -16
  48. autobyteus/agent/status/status_update_utils.py +73 -0
  49. autobyteus/agent/streaming/__init__.py +52 -5
  50. autobyteus/agent/streaming/adapters/__init__.py +18 -0
  51. autobyteus/agent/streaming/adapters/invocation_adapter.py +184 -0
  52. autobyteus/agent/streaming/adapters/tool_call_parsing.py +163 -0
  53. autobyteus/agent/streaming/adapters/tool_syntax_registry.py +67 -0
  54. autobyteus/agent/streaming/agent_event_stream.py +3 -183
  55. autobyteus/agent/streaming/api_tool_call/__init__.py +16 -0
  56. autobyteus/agent/streaming/api_tool_call/file_content_streamer.py +56 -0
  57. autobyteus/agent/streaming/api_tool_call/json_string_field_extractor.py +175 -0
  58. autobyteus/agent/streaming/api_tool_call_streaming_response_handler.py +4 -0
  59. autobyteus/agent/streaming/events/__init__.py +6 -0
  60. autobyteus/agent/streaming/events/stream_event_payloads.py +284 -0
  61. autobyteus/agent/streaming/events/stream_events.py +141 -0
  62. autobyteus/agent/streaming/handlers/__init__.py +15 -0
  63. autobyteus/agent/streaming/handlers/api_tool_call_streaming_response_handler.py +303 -0
  64. autobyteus/agent/streaming/handlers/parsing_streaming_response_handler.py +107 -0
  65. autobyteus/agent/streaming/handlers/pass_through_streaming_response_handler.py +107 -0
  66. autobyteus/agent/streaming/handlers/streaming_handler_factory.py +177 -0
  67. autobyteus/agent/streaming/handlers/streaming_response_handler.py +58 -0
  68. autobyteus/agent/streaming/parser/__init__.py +61 -0
  69. autobyteus/agent/streaming/parser/event_emitter.py +181 -0
  70. autobyteus/agent/streaming/parser/events.py +4 -0
  71. autobyteus/agent/streaming/parser/invocation_adapter.py +4 -0
  72. autobyteus/agent/streaming/parser/json_parsing_strategies/__init__.py +19 -0
  73. autobyteus/agent/streaming/parser/json_parsing_strategies/base.py +32 -0
  74. autobyteus/agent/streaming/parser/json_parsing_strategies/default.py +34 -0
  75. autobyteus/agent/streaming/parser/json_parsing_strategies/gemini.py +31 -0
  76. autobyteus/agent/streaming/parser/json_parsing_strategies/openai.py +64 -0
  77. autobyteus/agent/streaming/parser/json_parsing_strategies/registry.py +75 -0
  78. autobyteus/agent/streaming/parser/parser_context.py +227 -0
  79. autobyteus/agent/streaming/parser/parser_factory.py +132 -0
  80. autobyteus/agent/streaming/parser/sentinel_format.py +7 -0
  81. autobyteus/agent/streaming/parser/state_factory.py +62 -0
  82. autobyteus/agent/streaming/parser/states/__init__.py +1 -0
  83. autobyteus/agent/streaming/parser/states/base_state.py +60 -0
  84. autobyteus/agent/streaming/parser/states/custom_xml_tag_run_bash_parsing_state.py +38 -0
  85. autobyteus/agent/streaming/parser/states/custom_xml_tag_write_file_parsing_state.py +55 -0
  86. autobyteus/agent/streaming/parser/states/delimited_content_state.py +146 -0
  87. autobyteus/agent/streaming/parser/states/json_initialization_state.py +144 -0
  88. autobyteus/agent/streaming/parser/states/json_tool_parsing_state.py +137 -0
  89. autobyteus/agent/streaming/parser/states/sentinel_content_state.py +30 -0
  90. autobyteus/agent/streaming/parser/states/sentinel_initialization_state.py +117 -0
  91. autobyteus/agent/streaming/parser/states/text_state.py +78 -0
  92. autobyteus/agent/streaming/parser/states/xml_patch_file_tool_parsing_state.py +328 -0
  93. autobyteus/agent/streaming/parser/states/xml_run_bash_tool_parsing_state.py +129 -0
  94. autobyteus/agent/streaming/parser/states/xml_tag_initialization_state.py +151 -0
  95. autobyteus/agent/streaming/parser/states/xml_tool_parsing_state.py +63 -0
  96. autobyteus/agent/streaming/parser/states/xml_write_file_tool_parsing_state.py +343 -0
  97. autobyteus/agent/streaming/parser/strategies/__init__.py +17 -0
  98. autobyteus/agent/streaming/parser/strategies/base.py +24 -0
  99. autobyteus/agent/streaming/parser/strategies/json_tool_strategy.py +26 -0
  100. autobyteus/agent/streaming/parser/strategies/registry.py +28 -0
  101. autobyteus/agent/streaming/parser/strategies/sentinel_strategy.py +23 -0
  102. autobyteus/agent/streaming/parser/strategies/xml_tag_strategy.py +21 -0
  103. autobyteus/agent/streaming/parser/stream_scanner.py +167 -0
  104. autobyteus/agent/streaming/parser/streaming_parser.py +212 -0
  105. autobyteus/agent/streaming/parser/tool_call_parsing.py +4 -0
  106. autobyteus/agent/streaming/parser/tool_constants.py +7 -0
  107. autobyteus/agent/streaming/parser/tool_syntax_registry.py +4 -0
  108. autobyteus/agent/streaming/parser/xml_tool_parsing_state_registry.py +55 -0
  109. autobyteus/agent/streaming/parsing_streaming_response_handler.py +4 -0
  110. autobyteus/agent/streaming/pass_through_streaming_response_handler.py +4 -0
  111. autobyteus/agent/streaming/queue_streamer.py +3 -57
  112. autobyteus/agent/streaming/segments/__init__.py +5 -0
  113. autobyteus/agent/streaming/segments/segment_events.py +82 -0
  114. autobyteus/agent/streaming/stream_event_payloads.py +2 -223
  115. autobyteus/agent/streaming/stream_events.py +3 -140
  116. autobyteus/agent/streaming/streaming_handler_factory.py +4 -0
  117. autobyteus/agent/streaming/streaming_response_handler.py +4 -0
  118. autobyteus/agent/streaming/streams/__init__.py +5 -0
  119. autobyteus/agent/streaming/streams/agent_event_stream.py +197 -0
  120. autobyteus/agent/streaming/utils/__init__.py +5 -0
  121. autobyteus/agent/streaming/utils/queue_streamer.py +59 -0
  122. autobyteus/agent/system_prompt_processor/__init__.py +2 -0
  123. autobyteus/agent/system_prompt_processor/available_skills_processor.py +96 -0
  124. autobyteus/agent/system_prompt_processor/base_processor.py +1 -1
  125. autobyteus/agent/system_prompt_processor/processor_meta.py +15 -2
  126. autobyteus/agent/system_prompt_processor/tool_manifest_injector_processor.py +39 -58
  127. autobyteus/agent/token_budget.py +56 -0
  128. autobyteus/agent/tool_execution_result_processor/memory_ingest_tool_result_processor.py +29 -0
  129. autobyteus/agent/tool_invocation.py +16 -40
  130. autobyteus/agent/tool_invocation_preprocessor/__init__.py +9 -0
  131. autobyteus/agent/tool_invocation_preprocessor/base_preprocessor.py +45 -0
  132. autobyteus/agent/tool_invocation_preprocessor/processor_definition.py +15 -0
  133. autobyteus/agent/tool_invocation_preprocessor/processor_meta.py +33 -0
  134. autobyteus/agent/tool_invocation_preprocessor/processor_registry.py +60 -0
  135. autobyteus/agent/utils/wait_for_idle.py +12 -14
  136. autobyteus/agent/workspace/base_workspace.py +6 -27
  137. autobyteus/agent_team/agent_team.py +3 -3
  138. autobyteus/agent_team/agent_team_builder.py +1 -41
  139. autobyteus/agent_team/bootstrap_steps/__init__.py +0 -4
  140. autobyteus/agent_team/bootstrap_steps/agent_configuration_preparation_step.py +8 -18
  141. autobyteus/agent_team/bootstrap_steps/agent_team_bootstrapper.py +4 -16
  142. autobyteus/agent_team/bootstrap_steps/base_agent_team_bootstrap_step.py +1 -2
  143. autobyteus/agent_team/bootstrap_steps/coordinator_initialization_step.py +1 -2
  144. autobyteus/agent_team/bootstrap_steps/task_notifier_initialization_step.py +1 -2
  145. autobyteus/agent_team/bootstrap_steps/team_context_initialization_step.py +4 -4
  146. autobyteus/agent_team/context/agent_team_config.py +6 -3
  147. autobyteus/agent_team/context/agent_team_context.py +25 -3
  148. autobyteus/agent_team/context/agent_team_runtime_state.py +9 -6
  149. autobyteus/agent_team/events/__init__.py +11 -0
  150. autobyteus/agent_team/events/agent_team_event_dispatcher.py +22 -9
  151. autobyteus/agent_team/events/agent_team_events.py +16 -0
  152. autobyteus/agent_team/events/event_store.py +57 -0
  153. autobyteus/agent_team/factory/agent_team_factory.py +8 -0
  154. autobyteus/agent_team/handlers/inter_agent_message_request_event_handler.py +18 -2
  155. autobyteus/agent_team/handlers/lifecycle_agent_team_event_handler.py +21 -5
  156. autobyteus/agent_team/handlers/process_user_message_event_handler.py +17 -8
  157. autobyteus/agent_team/handlers/tool_approval_team_event_handler.py +19 -4
  158. autobyteus/agent_team/runtime/agent_team_runtime.py +41 -10
  159. autobyteus/agent_team/runtime/agent_team_worker.py +69 -5
  160. autobyteus/agent_team/status/__init__.py +14 -0
  161. autobyteus/agent_team/status/agent_team_status.py +18 -0
  162. autobyteus/agent_team/status/agent_team_status_manager.py +33 -0
  163. autobyteus/agent_team/status/status_deriver.py +62 -0
  164. autobyteus/agent_team/status/status_update_utils.py +42 -0
  165. autobyteus/agent_team/streaming/__init__.py +2 -2
  166. autobyteus/agent_team/streaming/agent_team_event_notifier.py +6 -6
  167. autobyteus/agent_team/streaming/agent_team_stream_event_payloads.py +4 -4
  168. autobyteus/agent_team/streaming/agent_team_stream_events.py +3 -3
  169. autobyteus/agent_team/system_prompt_processor/__init__.py +6 -0
  170. autobyteus/agent_team/system_prompt_processor/team_manifest_injector_processor.py +76 -0
  171. autobyteus/agent_team/task_notification/task_notification_mode.py +19 -0
  172. autobyteus/agent_team/utils/wait_for_idle.py +4 -4
  173. autobyteus/cli/agent_cli.py +18 -10
  174. autobyteus/cli/agent_team_tui/app.py +14 -11
  175. autobyteus/cli/agent_team_tui/state.py +13 -15
  176. autobyteus/cli/agent_team_tui/widgets/agent_list_sidebar.py +15 -15
  177. autobyteus/cli/agent_team_tui/widgets/focus_pane.py +143 -36
  178. autobyteus/cli/agent_team_tui/widgets/renderables.py +1 -1
  179. autobyteus/cli/agent_team_tui/widgets/shared.py +25 -25
  180. autobyteus/cli/cli_display.py +193 -44
  181. autobyteus/cli/workflow_tui/app.py +9 -10
  182. autobyteus/cli/workflow_tui/state.py +14 -16
  183. autobyteus/cli/workflow_tui/widgets/agent_list_sidebar.py +15 -15
  184. autobyteus/cli/workflow_tui/widgets/focus_pane.py +137 -35
  185. autobyteus/cli/workflow_tui/widgets/renderables.py +1 -1
  186. autobyteus/cli/workflow_tui/widgets/shared.py +25 -25
  187. autobyteus/clients/autobyteus_client.py +94 -1
  188. autobyteus/events/event_types.py +11 -18
  189. autobyteus/llm/api/autobyteus_llm.py +33 -29
  190. autobyteus/llm/api/claude_llm.py +142 -36
  191. autobyteus/llm/api/gemini_llm.py +163 -59
  192. autobyteus/llm/api/grok_llm.py +1 -1
  193. autobyteus/llm/api/minimax_llm.py +26 -0
  194. autobyteus/llm/api/mistral_llm.py +113 -87
  195. autobyteus/llm/api/ollama_llm.py +9 -42
  196. autobyteus/llm/api/openai_compatible_llm.py +127 -91
  197. autobyteus/llm/api/openai_llm.py +3 -3
  198. autobyteus/llm/api/openai_responses_llm.py +324 -0
  199. autobyteus/llm/api/zhipu_llm.py +21 -2
  200. autobyteus/llm/autobyteus_provider.py +70 -60
  201. autobyteus/llm/base_llm.py +85 -81
  202. autobyteus/llm/converters/__init__.py +14 -0
  203. autobyteus/llm/converters/anthropic_tool_call_converter.py +37 -0
  204. autobyteus/llm/converters/gemini_tool_call_converter.py +57 -0
  205. autobyteus/llm/converters/mistral_tool_call_converter.py +37 -0
  206. autobyteus/llm/converters/openai_tool_call_converter.py +38 -0
  207. autobyteus/llm/extensions/base_extension.py +6 -12
  208. autobyteus/llm/extensions/token_usage_tracking_extension.py +45 -18
  209. autobyteus/llm/llm_factory.py +282 -204
  210. autobyteus/llm/lmstudio_provider.py +60 -49
  211. autobyteus/llm/models.py +35 -2
  212. autobyteus/llm/ollama_provider.py +60 -49
  213. autobyteus/llm/ollama_provider_resolver.py +0 -1
  214. autobyteus/llm/prompt_renderers/__init__.py +19 -0
  215. autobyteus/llm/prompt_renderers/anthropic_prompt_renderer.py +104 -0
  216. autobyteus/llm/prompt_renderers/autobyteus_prompt_renderer.py +19 -0
  217. autobyteus/llm/prompt_renderers/base_prompt_renderer.py +10 -0
  218. autobyteus/llm/prompt_renderers/gemini_prompt_renderer.py +63 -0
  219. autobyteus/llm/prompt_renderers/mistral_prompt_renderer.py +87 -0
  220. autobyteus/llm/prompt_renderers/ollama_prompt_renderer.py +51 -0
  221. autobyteus/llm/prompt_renderers/openai_chat_renderer.py +97 -0
  222. autobyteus/llm/prompt_renderers/openai_responses_renderer.py +101 -0
  223. autobyteus/llm/providers.py +1 -3
  224. autobyteus/llm/token_counter/claude_token_counter.py +56 -25
  225. autobyteus/llm/token_counter/mistral_token_counter.py +12 -8
  226. autobyteus/llm/token_counter/openai_token_counter.py +24 -5
  227. autobyteus/llm/token_counter/token_counter_factory.py +12 -5
  228. autobyteus/llm/utils/llm_config.py +6 -12
  229. autobyteus/llm/utils/media_payload_formatter.py +27 -20
  230. autobyteus/llm/utils/messages.py +55 -3
  231. autobyteus/llm/utils/response_types.py +3 -0
  232. autobyteus/llm/utils/tool_call_delta.py +31 -0
  233. autobyteus/memory/__init__.py +35 -0
  234. autobyteus/memory/compaction/__init__.py +9 -0
  235. autobyteus/memory/compaction/compaction_result.py +8 -0
  236. autobyteus/memory/compaction/compactor.py +89 -0
  237. autobyteus/memory/compaction/summarizer.py +11 -0
  238. autobyteus/memory/compaction_snapshot_builder.py +84 -0
  239. autobyteus/memory/memory_manager.py +205 -0
  240. autobyteus/memory/models/__init__.py +14 -0
  241. autobyteus/memory/models/episodic_item.py +41 -0
  242. autobyteus/memory/models/memory_types.py +7 -0
  243. autobyteus/memory/models/raw_trace_item.py +79 -0
  244. autobyteus/memory/models/semantic_item.py +41 -0
  245. autobyteus/memory/models/tool_interaction.py +20 -0
  246. autobyteus/memory/path_resolver.py +27 -0
  247. autobyteus/memory/policies/__init__.py +5 -0
  248. autobyteus/memory/policies/compaction_policy.py +16 -0
  249. autobyteus/memory/restore/__init__.py +1 -0
  250. autobyteus/memory/restore/working_context_snapshot_bootstrapper.py +61 -0
  251. autobyteus/memory/retrieval/__init__.py +7 -0
  252. autobyteus/memory/retrieval/memory_bundle.py +11 -0
  253. autobyteus/memory/retrieval/retriever.py +13 -0
  254. autobyteus/memory/store/__init__.py +9 -0
  255. autobyteus/memory/store/base_store.py +14 -0
  256. autobyteus/memory/store/file_store.py +98 -0
  257. autobyteus/memory/store/working_context_snapshot_store.py +28 -0
  258. autobyteus/memory/tool_interaction_builder.py +46 -0
  259. autobyteus/memory/turn_tracker.py +9 -0
  260. autobyteus/memory/working_context_snapshot.py +69 -0
  261. autobyteus/memory/working_context_snapshot_serializer.py +135 -0
  262. autobyteus/multimedia/audio/api/autobyteus_audio_client.py +19 -5
  263. autobyteus/multimedia/audio/api/gemini_audio_client.py +109 -16
  264. autobyteus/multimedia/audio/audio_client_factory.py +47 -9
  265. autobyteus/multimedia/audio/audio_model.py +2 -1
  266. autobyteus/multimedia/image/api/autobyteus_image_client.py +19 -5
  267. autobyteus/multimedia/image/api/gemini_image_client.py +39 -17
  268. autobyteus/multimedia/image/api/openai_image_client.py +125 -43
  269. autobyteus/multimedia/image/autobyteus_image_provider.py +2 -1
  270. autobyteus/multimedia/image/image_client_factory.py +47 -15
  271. autobyteus/multimedia/image/image_model.py +5 -2
  272. autobyteus/multimedia/providers.py +3 -2
  273. autobyteus/skills/loader.py +71 -0
  274. autobyteus/skills/model.py +11 -0
  275. autobyteus/skills/registry.py +70 -0
  276. autobyteus/task_management/tools/todo_tools/add_todo.py +2 -2
  277. autobyteus/task_management/tools/todo_tools/create_todo_list.py +2 -2
  278. autobyteus/task_management/tools/todo_tools/update_todo_status.py +2 -2
  279. autobyteus/tools/__init__.py +34 -47
  280. autobyteus/tools/base_tool.py +7 -0
  281. autobyteus/tools/file/__init__.py +2 -6
  282. autobyteus/tools/file/patch_file.py +149 -0
  283. autobyteus/tools/file/read_file.py +36 -5
  284. autobyteus/tools/file/write_file.py +4 -1
  285. autobyteus/tools/functional_tool.py +43 -6
  286. autobyteus/tools/mcp/__init__.py +2 -0
  287. autobyteus/tools/mcp/config_service.py +5 -1
  288. autobyteus/tools/mcp/server/__init__.py +2 -0
  289. autobyteus/tools/mcp/server/http_managed_mcp_server.py +1 -1
  290. autobyteus/tools/mcp/server/websocket_managed_mcp_server.py +141 -0
  291. autobyteus/tools/mcp/server_instance_manager.py +8 -1
  292. autobyteus/tools/mcp/types.py +61 -0
  293. autobyteus/tools/multimedia/audio_tools.py +70 -17
  294. autobyteus/tools/multimedia/download_media_tool.py +18 -4
  295. autobyteus/tools/multimedia/image_tools.py +246 -62
  296. autobyteus/tools/operation_executor/journal_manager.py +107 -0
  297. autobyteus/tools/operation_executor/operation_event_buffer.py +57 -0
  298. autobyteus/tools/operation_executor/operation_event_producer.py +29 -0
  299. autobyteus/tools/operation_executor/operation_executor.py +58 -0
  300. autobyteus/tools/registry/tool_definition.py +43 -2
  301. autobyteus/tools/skill/load_skill.py +50 -0
  302. autobyteus/tools/terminal/__init__.py +45 -0
  303. autobyteus/tools/terminal/ansi_utils.py +32 -0
  304. autobyteus/tools/terminal/background_process_manager.py +233 -0
  305. autobyteus/tools/terminal/output_buffer.py +105 -0
  306. autobyteus/tools/terminal/prompt_detector.py +63 -0
  307. autobyteus/tools/terminal/pty_session.py +241 -0
  308. autobyteus/tools/terminal/session_factory.py +20 -0
  309. autobyteus/tools/terminal/terminal_session_manager.py +226 -0
  310. autobyteus/tools/terminal/tools/__init__.py +13 -0
  311. autobyteus/tools/terminal/tools/get_process_output.py +81 -0
  312. autobyteus/tools/terminal/tools/run_bash.py +109 -0
  313. autobyteus/tools/terminal/tools/start_background_process.py +104 -0
  314. autobyteus/tools/terminal/tools/stop_background_process.py +67 -0
  315. autobyteus/tools/terminal/types.py +54 -0
  316. autobyteus/tools/terminal/wsl_tmux_session.py +221 -0
  317. autobyteus/tools/terminal/wsl_utils.py +156 -0
  318. autobyteus/tools/transaction_management/backup_handler.py +48 -0
  319. autobyteus/tools/transaction_management/operation_lifecycle_manager.py +62 -0
  320. autobyteus/tools/usage/__init__.py +1 -2
  321. autobyteus/tools/usage/formatters/__init__.py +17 -1
  322. autobyteus/tools/usage/formatters/base_formatter.py +8 -0
  323. autobyteus/tools/usage/formatters/default_xml_schema_formatter.py +2 -2
  324. autobyteus/tools/usage/formatters/mistral_json_schema_formatter.py +18 -0
  325. autobyteus/tools/usage/formatters/patch_file_xml_example_formatter.py +64 -0
  326. autobyteus/tools/usage/formatters/patch_file_xml_schema_formatter.py +31 -0
  327. autobyteus/tools/usage/formatters/run_bash_xml_example_formatter.py +32 -0
  328. autobyteus/tools/usage/formatters/run_bash_xml_schema_formatter.py +36 -0
  329. autobyteus/tools/usage/formatters/write_file_xml_example_formatter.py +53 -0
  330. autobyteus/tools/usage/formatters/write_file_xml_schema_formatter.py +31 -0
  331. autobyteus/tools/usage/providers/tool_manifest_provider.py +10 -10
  332. autobyteus/tools/usage/registries/__init__.py +1 -3
  333. autobyteus/tools/usage/registries/tool_formatting_registry.py +115 -8
  334. autobyteus/tools/usage/tool_schema_provider.py +51 -0
  335. autobyteus/tools/web/__init__.py +4 -0
  336. autobyteus/tools/web/read_url_tool.py +80 -0
  337. autobyteus/utils/diff_utils.py +271 -0
  338. autobyteus/utils/download_utils.py +109 -0
  339. autobyteus/utils/file_utils.py +57 -2
  340. autobyteus/utils/gemini_helper.py +64 -0
  341. autobyteus/utils/gemini_model_mapping.py +71 -0
  342. autobyteus/utils/llm_output_formatter.py +75 -0
  343. autobyteus/utils/tool_call_format.py +36 -0
  344. autobyteus/workflow/agentic_workflow.py +3 -3
  345. autobyteus/workflow/bootstrap_steps/agent_tool_injection_step.py +2 -2
  346. autobyteus/workflow/bootstrap_steps/base_workflow_bootstrap_step.py +2 -2
  347. autobyteus/workflow/bootstrap_steps/coordinator_initialization_step.py +2 -2
  348. autobyteus/workflow/bootstrap_steps/coordinator_prompt_preparation_step.py +3 -9
  349. autobyteus/workflow/bootstrap_steps/workflow_bootstrapper.py +6 -6
  350. autobyteus/workflow/bootstrap_steps/workflow_runtime_queue_initialization_step.py +2 -2
  351. autobyteus/workflow/context/workflow_context.py +3 -3
  352. autobyteus/workflow/context/workflow_runtime_state.py +5 -5
  353. autobyteus/workflow/events/workflow_event_dispatcher.py +5 -5
  354. autobyteus/workflow/handlers/lifecycle_workflow_event_handler.py +3 -3
  355. autobyteus/workflow/handlers/process_user_message_event_handler.py +5 -5
  356. autobyteus/workflow/handlers/tool_approval_workflow_event_handler.py +2 -2
  357. autobyteus/workflow/runtime/workflow_runtime.py +8 -8
  358. autobyteus/workflow/runtime/workflow_worker.py +3 -3
  359. autobyteus/workflow/status/__init__.py +11 -0
  360. autobyteus/workflow/status/workflow_status.py +19 -0
  361. autobyteus/workflow/status/workflow_status_manager.py +48 -0
  362. autobyteus/workflow/streaming/__init__.py +2 -2
  363. autobyteus/workflow/streaming/workflow_event_notifier.py +7 -7
  364. autobyteus/workflow/streaming/workflow_stream_event_payloads.py +4 -4
  365. autobyteus/workflow/streaming/workflow_stream_events.py +3 -3
  366. autobyteus/workflow/utils/wait_for_idle.py +4 -4
  367. autobyteus-1.3.0.dist-info/METADATA +293 -0
  368. autobyteus-1.3.0.dist-info/RECORD +606 -0
  369. {autobyteus-1.2.1.dist-info → autobyteus-1.3.0.dist-info}/WHEEL +1 -1
  370. {autobyteus-1.2.1.dist-info → autobyteus-1.3.0.dist-info}/top_level.txt +0 -1
  371. autobyteus/agent/bootstrap_steps/agent_runtime_queue_initialization_step.py +0 -57
  372. autobyteus/agent/hooks/__init__.py +0 -16
  373. autobyteus/agent/hooks/base_phase_hook.py +0 -78
  374. autobyteus/agent/hooks/hook_definition.py +0 -36
  375. autobyteus/agent/hooks/hook_meta.py +0 -37
  376. autobyteus/agent/hooks/hook_registry.py +0 -106
  377. autobyteus/agent/llm_response_processor/provider_aware_tool_usage_processor.py +0 -103
  378. autobyteus/agent/phases/__init__.py +0 -18
  379. autobyteus/agent/phases/discover.py +0 -53
  380. autobyteus/agent/phases/manager.py +0 -265
  381. autobyteus/agent/phases/transition_decorator.py +0 -40
  382. autobyteus/agent/phases/transition_info.py +0 -33
  383. autobyteus/agent/remote_agent.py +0 -244
  384. autobyteus/agent/workspace/workspace_definition.py +0 -36
  385. autobyteus/agent/workspace/workspace_meta.py +0 -37
  386. autobyteus/agent/workspace/workspace_registry.py +0 -72
  387. autobyteus/agent_team/bootstrap_steps/agent_team_runtime_queue_initialization_step.py +0 -25
  388. autobyteus/agent_team/bootstrap_steps/coordinator_prompt_preparation_step.py +0 -85
  389. autobyteus/agent_team/phases/__init__.py +0 -11
  390. autobyteus/agent_team/phases/agent_team_operational_phase.py +0 -19
  391. autobyteus/agent_team/phases/agent_team_phase_manager.py +0 -48
  392. autobyteus/llm/api/bedrock_llm.py +0 -92
  393. autobyteus/llm/api/groq_llm.py +0 -94
  394. autobyteus/llm/api/nvidia_llm.py +0 -108
  395. autobyteus/llm/utils/token_pricing_config.py +0 -87
  396. autobyteus/rpc/__init__.py +0 -73
  397. autobyteus/rpc/client/__init__.py +0 -17
  398. autobyteus/rpc/client/abstract_client_connection.py +0 -124
  399. autobyteus/rpc/client/client_connection_manager.py +0 -153
  400. autobyteus/rpc/client/sse_client_connection.py +0 -306
  401. autobyteus/rpc/client/stdio_client_connection.py +0 -280
  402. autobyteus/rpc/config/__init__.py +0 -13
  403. autobyteus/rpc/config/agent_server_config.py +0 -153
  404. autobyteus/rpc/config/agent_server_registry.py +0 -152
  405. autobyteus/rpc/hosting.py +0 -244
  406. autobyteus/rpc/protocol.py +0 -244
  407. autobyteus/rpc/server/__init__.py +0 -20
  408. autobyteus/rpc/server/agent_server_endpoint.py +0 -181
  409. autobyteus/rpc/server/base_method_handler.py +0 -40
  410. autobyteus/rpc/server/method_handlers.py +0 -259
  411. autobyteus/rpc/server/sse_server_handler.py +0 -182
  412. autobyteus/rpc/server/stdio_server_handler.py +0 -151
  413. autobyteus/rpc/server_main.py +0 -198
  414. autobyteus/rpc/transport_type.py +0 -13
  415. autobyteus/tools/bash/__init__.py +0 -2
  416. autobyteus/tools/bash/bash_executor.py +0 -100
  417. autobyteus/tools/browser/__init__.py +0 -2
  418. autobyteus/tools/browser/session_aware/browser_session_aware_navigate_to.py +0 -75
  419. autobyteus/tools/browser/session_aware/browser_session_aware_tool.py +0 -30
  420. autobyteus/tools/browser/session_aware/browser_session_aware_web_element_trigger.py +0 -154
  421. autobyteus/tools/browser/session_aware/browser_session_aware_webpage_reader.py +0 -89
  422. autobyteus/tools/browser/session_aware/browser_session_aware_webpage_screenshot_taker.py +0 -107
  423. autobyteus/tools/browser/session_aware/factory/browser_session_aware_web_element_trigger_factory.py +0 -14
  424. autobyteus/tools/browser/session_aware/factory/browser_session_aware_webpage_reader_factory.py +0 -26
  425. autobyteus/tools/browser/session_aware/factory/browser_session_aware_webpage_screenshot_taker_factory.py +0 -14
  426. autobyteus/tools/browser/session_aware/shared_browser_session.py +0 -11
  427. autobyteus/tools/browser/session_aware/shared_browser_session_manager.py +0 -25
  428. autobyteus/tools/browser/session_aware/web_element_action.py +0 -20
  429. autobyteus/tools/browser/standalone/__init__.py +0 -6
  430. autobyteus/tools/browser/standalone/factory/__init__.py +0 -0
  431. autobyteus/tools/browser/standalone/factory/webpage_reader_factory.py +0 -25
  432. autobyteus/tools/browser/standalone/factory/webpage_screenshot_taker_factory.py +0 -14
  433. autobyteus/tools/browser/standalone/navigate_to.py +0 -84
  434. autobyteus/tools/browser/standalone/web_page_pdf_generator.py +0 -101
  435. autobyteus/tools/browser/standalone/webpage_image_downloader.py +0 -169
  436. autobyteus/tools/browser/standalone/webpage_reader.py +0 -105
  437. autobyteus/tools/browser/standalone/webpage_screenshot_taker.py +0 -105
  438. autobyteus/tools/file/edit_file.py +0 -200
  439. autobyteus/tools/file/list_directory.py +0 -168
  440. autobyteus/tools/file/search_files.py +0 -188
  441. autobyteus/tools/timer.py +0 -175
  442. autobyteus/tools/usage/parsers/__init__.py +0 -22
  443. autobyteus/tools/usage/parsers/_json_extractor.py +0 -99
  444. autobyteus/tools/usage/parsers/_string_decoders.py +0 -18
  445. autobyteus/tools/usage/parsers/anthropic_xml_tool_usage_parser.py +0 -10
  446. autobyteus/tools/usage/parsers/base_parser.py +0 -41
  447. autobyteus/tools/usage/parsers/default_json_tool_usage_parser.py +0 -83
  448. autobyteus/tools/usage/parsers/default_xml_tool_usage_parser.py +0 -316
  449. autobyteus/tools/usage/parsers/exceptions.py +0 -13
  450. autobyteus/tools/usage/parsers/gemini_json_tool_usage_parser.py +0 -77
  451. autobyteus/tools/usage/parsers/openai_json_tool_usage_parser.py +0 -149
  452. autobyteus/tools/usage/parsers/provider_aware_tool_usage_parser.py +0 -59
  453. autobyteus/tools/usage/registries/tool_usage_parser_registry.py +0 -62
  454. autobyteus/workflow/phases/__init__.py +0 -11
  455. autobyteus/workflow/phases/workflow_operational_phase.py +0 -19
  456. autobyteus/workflow/phases/workflow_phase_manager.py +0 -48
  457. autobyteus-1.2.1.dist-info/METADATA +0 -205
  458. autobyteus-1.2.1.dist-info/RECORD +0 -511
  459. examples/__init__.py +0 -1
  460. examples/agent_team/__init__.py +0 -1
  461. examples/discover_phase_transitions.py +0 -104
  462. examples/run_agentic_software_engineer.py +0 -239
  463. examples/run_browser_agent.py +0 -262
  464. examples/run_google_slides_agent.py +0 -287
  465. examples/run_mcp_browser_client.py +0 -174
  466. examples/run_mcp_google_slides_client.py +0 -270
  467. examples/run_mcp_list_tools.py +0 -189
  468. examples/run_poem_writer.py +0 -284
  469. examples/run_sqlite_agent.py +0 -295
  470. /autobyteus/{tools/browser/session_aware → skills}/__init__.py +0 -0
  471. /autobyteus/tools/{browser/session_aware/factory → skill}/__init__.py +0 -0
  472. {autobyteus-1.2.1.dist-info → autobyteus-1.3.0.dist-info}/licenses/LICENSE +0 -0
@@ -8,9 +8,9 @@ from autobyteus.llm.providers import LLMProvider
8
8
  from autobyteus.llm.runtimes import LLMRuntime
9
9
  from autobyteus.llm.utils.llm_config import LLMConfig, TokenPricingConfig
10
10
  from autobyteus.llm.base_llm import BaseLLM
11
+ from autobyteus.utils.parameter_schema import ParameterSchema, ParameterDefinition, ParameterType
11
12
 
12
13
  from autobyteus.llm.api.claude_llm import ClaudeLLM
13
- from autobyteus.llm.api.bedrock_llm import BedrockLLM
14
14
  from autobyteus.llm.api.mistral_llm import MistralLLM
15
15
  from autobyteus.llm.api.openai_llm import OpenAILLM
16
16
  from autobyteus.llm.api.deepseek_llm import DeepSeekLLM
@@ -19,6 +19,7 @@ from autobyteus.llm.api.grok_llm import GrokLLM
19
19
  from autobyteus.llm.api.kimi_llm import KimiLLM
20
20
  from autobyteus.llm.api.qwen_llm import QwenLLM
21
21
  from autobyteus.llm.api.zhipu_llm import ZhipuLLM
22
+ from autobyteus.llm.api.minimax_llm import MinimaxLLM
22
23
  from autobyteus.llm.ollama_provider import OllamaModelProvider
23
24
  from autobyteus.llm.lmstudio_provider import LMStudioModelProvider
24
25
  from autobyteus.utils.singleton import SingletonMeta
@@ -52,191 +53,207 @@ class LLMFactory(metaclass=SingletonMeta):
52
53
  """Initializes the registry with built-in models and discovers runtime models."""
53
54
  # Hardcoded direct-API models. Runtime defaults to API.
54
55
  supported_models = [
55
- # OPENAI Provider Models
56
+ # OPENAI Provider Models (latest generation only)
56
57
  LLMModel(
57
- name="gpt-4o",
58
- value="gpt-4o",
58
+ name="gpt-5.2",
59
+ value="gpt-5.2",
59
60
  provider=LLMProvider.OPENAI,
60
61
  llm_class=OpenAILLM,
61
- canonical_name="gpt-4o",
62
+ canonical_name="gpt-5.2",
62
63
  default_config=LLMConfig(
63
- rate_limit=40,
64
- token_limit=8192,
65
- pricing_config=TokenPricingConfig(2.50, 10.00)
66
- )
67
- ),
68
- LLMModel(
69
- name="gpt-5",
70
- value="gpt-5",
71
- provider=LLMProvider.OPENAI,
72
- llm_class=OpenAILLM,
73
- canonical_name="gpt-5",
74
- default_config=LLMConfig(
75
- uses_max_completion_tokens=True,
76
- pricing_config=TokenPricingConfig(1.25, 10.00)
77
- )
78
- ),
79
- LLMModel(
80
- name="gpt-5-mini",
81
- value="gpt-5-mini",
82
- provider=LLMProvider.OPENAI,
83
- llm_class=OpenAILLM,
84
- canonical_name="gpt-5-mini",
85
- default_config=LLMConfig(
86
- uses_max_completion_tokens=True,
87
- pricing_config=TokenPricingConfig(0.25, 2.00)
88
- )
89
- ),
90
- LLMModel(
91
- name="gpt-5-nano",
92
- value="gpt-5-nano",
93
- provider=LLMProvider.OPENAI,
94
- llm_class=OpenAILLM,
95
- canonical_name="gpt-5-nano",
96
- default_config=LLMConfig(
97
- uses_max_completion_tokens=True,
98
- pricing_config=TokenPricingConfig(0.05, 0.40)
99
- )
64
+ pricing_config=TokenPricingConfig(1.75, 14.00)
65
+ ),
66
+ config_schema=ParameterSchema(parameters=[
67
+ ParameterDefinition(
68
+ name="reasoning_effort",
69
+ param_type=ParameterType.ENUM,
70
+ description="Controls how hard the model thinks. Higher effort improves quality but can increase latency and cost.",
71
+ required=False,
72
+ default_value="none",
73
+ enum_values=["none", "low", "medium", "high", "xhigh"]
74
+ ),
75
+ ParameterDefinition(
76
+ name="reasoning_summary",
77
+ param_type=ParameterType.ENUM,
78
+ description="Include a reasoning summary in the response when supported.",
79
+ required=False,
80
+ default_value="none",
81
+ enum_values=["none", "auto", "concise", "detailed"]
82
+ )
83
+ ])
100
84
  ),
101
85
  LLMModel(
102
- name="gpt-5-chat-latest",
103
- value="gpt-5-chat-latest",
86
+ name="gpt-5.2-chat-latest",
87
+ value="gpt-5.2-chat-latest",
104
88
  provider=LLMProvider.OPENAI,
105
89
  llm_class=OpenAILLM,
106
- canonical_name="gpt-5-chat-latest",
90
+ canonical_name="gpt-5.2-chat-latest",
107
91
  default_config=LLMConfig(
108
- uses_max_completion_tokens=True,
109
- pricing_config=TokenPricingConfig(1.25, 10.00)
110
- )
92
+ pricing_config=TokenPricingConfig(1.75, 14.00)
93
+ ),
94
+ config_schema=ParameterSchema(parameters=[
95
+ ParameterDefinition(
96
+ name="reasoning_effort",
97
+ param_type=ParameterType.ENUM,
98
+ description="Controls how hard the model thinks. Higher effort improves quality but can increase latency and cost.",
99
+ required=False,
100
+ default_value="none",
101
+ enum_values=["none", "low", "medium", "high", "xhigh"]
102
+ ),
103
+ ParameterDefinition(
104
+ name="reasoning_summary",
105
+ param_type=ParameterType.ENUM,
106
+ description="Include a reasoning summary in the response when supported.",
107
+ required=False,
108
+ default_value="none",
109
+ enum_values=["none", "auto", "concise", "detailed"]
110
+ )
111
+ ])
111
112
  ),
113
+ # MISTRAL Provider Models
112
114
  LLMModel(
113
- name="gpt-4.1",
114
- value="gpt-4.1",
115
- provider=LLMProvider.OPENAI,
116
- llm_class=OpenAILLM,
117
- canonical_name="gpt-4.1",
115
+ name="mistral-large",
116
+ value="mistral-large-latest",
117
+ provider=LLMProvider.MISTRAL,
118
+ llm_class=MistralLLM,
119
+ canonical_name="mistral-large",
118
120
  default_config=LLMConfig(
119
- uses_max_completion_tokens=True,
120
- pricing_config=TokenPricingConfig(2.00, 8.00)
121
+ pricing_config=TokenPricingConfig(2.00, 6.00)
121
122
  )
122
123
  ),
123
124
  LLMModel(
124
- name="gpt-4.1-mini",
125
- value="gpt-4.1-mini",
126
- provider=LLMProvider.OPENAI,
127
- llm_class=OpenAILLM,
128
- canonical_name="gpt-4.1-mini",
125
+ name="devstral-2",
126
+ value="devstral-2512",
127
+ provider=LLMProvider.MISTRAL,
128
+ llm_class=MistralLLM,
129
+ canonical_name="devstral-2",
129
130
  default_config=LLMConfig(
130
- uses_max_completion_tokens=True,
131
- pricing_config=TokenPricingConfig(0.40, 1.60)
131
+ # Pricing from Mistral launch: $0.40 input / $2.00 output per MTokens.
132
+ pricing_config=TokenPricingConfig(0.40, 2.00)
132
133
  )
133
134
  ),
135
+ # GROK Provider Models (latest flagship + fast)
134
136
  LLMModel(
135
- name="gpt-4.1-nano",
136
- value="gpt-4.1-nano",
137
- provider=LLMProvider.OPENAI,
138
- llm_class=OpenAILLM,
139
- canonical_name="gpt-4.1-nano",
137
+ name="grok-4",
138
+ value="grok-4",
139
+ provider=LLMProvider.GROK,
140
+ llm_class=GrokLLM,
141
+ canonical_name="grok-4",
140
142
  default_config=LLMConfig(
141
- uses_max_completion_tokens=True,
142
- pricing_config=TokenPricingConfig(0.10, 0.40)
143
+ pricing_config=TokenPricingConfig(3.00, 15.00)
143
144
  )
144
145
  ),
145
146
  LLMModel(
146
- name="o3",
147
- value="o3",
148
- provider=LLMProvider.OPENAI,
149
- llm_class=OpenAILLM,
150
- canonical_name="o3",
147
+ name="grok-4-1-fast-reasoning",
148
+ value="grok-4-1-fast-reasoning",
149
+ provider=LLMProvider.GROK,
150
+ llm_class=GrokLLM,
151
+ canonical_name="grok-4-1-fast-reasoning",
151
152
  default_config=LLMConfig(
152
- uses_max_completion_tokens=True,
153
- pricing_config=TokenPricingConfig(15.00, 60.00)
153
+ pricing_config=TokenPricingConfig(0.20, 0.50)
154
154
  )
155
155
  ),
156
156
  LLMModel(
157
- name="o4-mini",
158
- value="o4-mini",
159
- provider=LLMProvider.OPENAI,
160
- llm_class=OpenAILLM,
161
- canonical_name="o4-mini",
157
+ name="grok-4-1-fast-non-reasoning",
158
+ value="grok-4-1-fast-non-reasoning",
159
+ provider=LLMProvider.GROK,
160
+ llm_class=GrokLLM,
161
+ canonical_name="grok-4-1-fast-non-reasoning",
162
162
  default_config=LLMConfig(
163
- uses_max_completion_tokens=True,
164
- pricing_config=TokenPricingConfig(1.0, 4.00)
163
+ pricing_config=TokenPricingConfig(0.20, 0.50)
165
164
  )
166
165
  ),
167
- # MISTRAL Provider Models
168
166
  LLMModel(
169
- name="mistral-large",
170
- value="mistral-large-latest",
171
- provider=LLMProvider.MISTRAL,
172
- llm_class=MistralLLM,
173
- canonical_name="mistral-large",
167
+ name="grok-code-fast-1",
168
+ value="grok-code-fast-1",
169
+ provider=LLMProvider.GROK,
170
+ llm_class=GrokLLM,
171
+ canonical_name="grok-code-fast-1",
174
172
  default_config=LLMConfig(
175
- pricing_config=TokenPricingConfig(2.00, 6.00)
173
+ pricing_config=TokenPricingConfig(0.20, 1.50)
176
174
  )
177
175
  ),
178
176
  # ANTHROPIC Provider Models
179
177
  LLMModel(
180
- name="claude-4-opus",
181
- value="claude-opus-4-20250514",
178
+ name="claude-4.5-opus",
179
+ value="claude-opus-4-5-20251101",
182
180
  provider=LLMProvider.ANTHROPIC,
183
181
  llm_class=ClaudeLLM,
184
- canonical_name="claude-4-opus",
182
+ canonical_name="claude-4.5-opus",
185
183
  default_config=LLMConfig(
186
- pricing_config=TokenPricingConfig(15.00, 75.00)
187
- )
188
- ),
189
- LLMModel(
190
- name="claude-4.1-opus",
191
- value="claude-opus-4-1-20250805",
192
- provider=LLMProvider.ANTHROPIC,
193
- llm_class=ClaudeLLM,
194
- canonical_name="claude-4.1-opus",
195
- default_config=LLMConfig(
196
- # NOTE: Pricing is assumed to be the same as claude-4-opus
197
- pricing_config=TokenPricingConfig(15.00, 75.00)
198
- )
184
+ pricing_config=TokenPricingConfig(5.00, 25.00)
185
+ ),
186
+ config_schema=ParameterSchema(parameters=[
187
+ ParameterDefinition(
188
+ name="thinking_enabled",
189
+ param_type=ParameterType.BOOLEAN,
190
+ description="Enable extended thinking summaries in Claude responses",
191
+ required=False,
192
+ default_value=False
193
+ ),
194
+ ParameterDefinition(
195
+ name="thinking_budget_tokens",
196
+ param_type=ParameterType.INTEGER,
197
+ description="Token budget for extended thinking (min 1024)",
198
+ required=False,
199
+ default_value=1024,
200
+ min_value=1024
201
+ )
202
+ ])
199
203
  ),
200
204
  LLMModel(
201
- name="claude-4-sonnet",
202
- value="claude-sonnet-4-20250514",
205
+ name="claude-4.5-sonnet",
206
+ value="claude-sonnet-4-5-20250929",
203
207
  provider=LLMProvider.ANTHROPIC,
204
208
  llm_class=ClaudeLLM,
205
- canonical_name="claude-4-sonnet",
209
+ canonical_name="claude-4.5-sonnet",
206
210
  default_config=LLMConfig(
207
211
  pricing_config=TokenPricingConfig(3.00, 15.00)
208
- )
209
- ),
210
- LLMModel(
211
- name="bedrock-claude-4-opus",
212
- value="anthropic.claude-opus-4-20250514-v1:0",
213
- provider=LLMProvider.ANTHROPIC,
214
- llm_class=BedrockLLM,
215
- canonical_name="claude-4-opus",
216
- default_config=LLMConfig(
217
- pricing_config=TokenPricingConfig(15.00, 75.00)
218
- )
219
- ),
220
- LLMModel(
221
- name="bedrock-claude-4.1-opus",
222
- value="anthropic.claude-opus-4-1-20250805-v1:0",
223
- provider=LLMProvider.ANTHROPIC,
224
- llm_class=BedrockLLM,
225
- canonical_name="claude-4.1-opus",
226
- default_config=LLMConfig(
227
- # NOTE: Pricing is assumed to be the same as claude-4-opus
228
- pricing_config=TokenPricingConfig(15.00, 75.00)
229
- )
212
+ ),
213
+ config_schema=ParameterSchema(parameters=[
214
+ ParameterDefinition(
215
+ name="thinking_enabled",
216
+ param_type=ParameterType.BOOLEAN,
217
+ description="Enable extended thinking summaries in Claude responses",
218
+ required=False,
219
+ default_value=False
220
+ ),
221
+ ParameterDefinition(
222
+ name="thinking_budget_tokens",
223
+ param_type=ParameterType.INTEGER,
224
+ description="Token budget for extended thinking (min 1024)",
225
+ required=False,
226
+ default_value=1024,
227
+ min_value=1024
228
+ )
229
+ ])
230
230
  ),
231
231
  LLMModel(
232
- name="bedrock-claude-4-sonnet",
233
- value="anthropic.claude-sonnet-4-20250514-v1:0",
232
+ name="claude-4.5-haiku",
233
+ value="claude-haiku-4-5-20251001",
234
234
  provider=LLMProvider.ANTHROPIC,
235
- llm_class=BedrockLLM,
236
- canonical_name="claude-4-sonnet",
235
+ llm_class=ClaudeLLM,
236
+ canonical_name="claude-4.5-haiku",
237
237
  default_config=LLMConfig(
238
- pricing_config=TokenPricingConfig(3.00, 15.00)
239
- )
238
+ pricing_config=TokenPricingConfig(1.00, 5.00)
239
+ ),
240
+ config_schema=ParameterSchema(parameters=[
241
+ ParameterDefinition(
242
+ name="thinking_enabled",
243
+ param_type=ParameterType.BOOLEAN,
244
+ description="Enable extended thinking summaries in Claude responses",
245
+ required=False,
246
+ default_value=False
247
+ ),
248
+ ParameterDefinition(
249
+ name="thinking_budget_tokens",
250
+ param_type=ParameterType.INTEGER,
251
+ description="Token budget for extended thinking (min 1024)",
252
+ required=False,
253
+ default_value=1024,
254
+ min_value=1024
255
+ )
256
+ ])
240
257
  ),
241
258
  # DEEPSEEK Provider Models
242
259
  LLMModel(
@@ -266,34 +283,60 @@ class LLMFactory(metaclass=SingletonMeta):
266
283
  ),
267
284
  # GEMINI Provider Models
268
285
  LLMModel(
269
- name="gemini-2.5-pro",
270
- value="gemini-2.5-pro",
271
- provider=LLMProvider.GEMINI,
272
- llm_class=GeminiLLM,
273
- canonical_name="gemini-2.5-pro",
274
- default_config=LLMConfig(
275
- pricing_config=TokenPricingConfig(2.50, 15.00)
276
- )
277
- ),
278
- LLMModel(
279
- name="gemini-2.5-flash",
280
- value="gemini-2.5-flash",
286
+ name="gemini-3-pro-preview",
287
+ value="gemini-3-pro-preview",
281
288
  provider=LLMProvider.GEMINI,
282
289
  llm_class=GeminiLLM,
283
- canonical_name="gemini-2.5-flash",
290
+ canonical_name="gemini-3-pro",
284
291
  default_config=LLMConfig(
285
- pricing_config=TokenPricingConfig(0.30, 2.50)
286
- )
292
+ # Pricing from Gemini 3 Pro preview launch (per 1M tokens).
293
+ pricing_config=TokenPricingConfig(2.00, 12.00)
294
+ ),
295
+ config_schema=ParameterSchema(parameters=[
296
+ ParameterDefinition(
297
+ name="thinking_level",
298
+ param_type=ParameterType.ENUM,
299
+ description="How deeply the model should reason before responding",
300
+ required=False,
301
+ default_value="minimal",
302
+ enum_values=["minimal", "low", "medium", "high"]
303
+ ),
304
+ ParameterDefinition(
305
+ name="include_thoughts",
306
+ param_type=ParameterType.BOOLEAN,
307
+ description="Include model thought summaries in responses",
308
+ required=False,
309
+ default_value=False
310
+ )
311
+ ])
287
312
  ),
288
313
  LLMModel(
289
- name="gemini-2.5-flash-lite",
290
- value="gemini-2.5-flash-lite",
314
+ name="gemini-3-flash-preview",
315
+ value="gemini-3-flash-preview",
291
316
  provider=LLMProvider.GEMINI,
292
317
  llm_class=GeminiLLM,
293
- canonical_name="gemini-2.5-flash-lite",
318
+ canonical_name="gemini-3-flash",
294
319
  default_config=LLMConfig(
295
- pricing_config=TokenPricingConfig(0.10, 0.40)
296
- )
320
+ # Pricing from Gemini 3 Flash preview launch (per 1M tokens).
321
+ pricing_config=TokenPricingConfig(0.50, 3.00)
322
+ ),
323
+ config_schema=ParameterSchema(parameters=[
324
+ ParameterDefinition(
325
+ name="thinking_level",
326
+ param_type=ParameterType.ENUM,
327
+ description="How deeply the model should reason before responding",
328
+ required=False,
329
+ default_value="minimal",
330
+ enum_values=["minimal", "low", "medium", "high"]
331
+ ),
332
+ ParameterDefinition(
333
+ name="include_thoughts",
334
+ param_type=ParameterType.BOOLEAN,
335
+ description="Include model thought summaries in responses",
336
+ required=False,
337
+ default_value=False
338
+ )
339
+ ])
297
340
  ),
298
341
  # KIMI Provider Models
299
342
  LLMModel(
@@ -363,24 +406,34 @@ class LLMFactory(metaclass=SingletonMeta):
363
406
  ),
364
407
  # ZHIPU Provider Models
365
408
  LLMModel(
366
- name="glm-4.6",
367
- value="glm-4.6",
409
+ name="glm-4.7",
410
+ value="glm-4.7",
368
411
  provider=LLMProvider.ZHIPU,
369
412
  llm_class=ZhipuLLM,
370
- canonical_name="glm-4.6",
413
+ canonical_name="glm-4.7",
371
414
  default_config=LLMConfig(
372
415
  pricing_config=TokenPricingConfig(13.8, 13.8)
373
- )
416
+ ),
417
+ config_schema=ParameterSchema(parameters=[
418
+ ParameterDefinition(
419
+ name="thinking_type",
420
+ param_type=ParameterType.ENUM,
421
+ description="Enable or disable deep thinking",
422
+ required=False,
423
+ default_value="enabled",
424
+ enum_values=["enabled", "disabled"]
425
+ )
426
+ ])
374
427
  ),
428
+ # MINIMAX Provider Models
375
429
  LLMModel(
376
- name="glm-4.6-thinking",
377
- value="glm-4.6",
378
- provider=LLMProvider.ZHIPU,
379
- llm_class=ZhipuLLM,
380
- canonical_name="glm-4.6-thinking",
430
+ name="minimax-m2.1",
431
+ value="MiniMax-M2.1",
432
+ provider=LLMProvider.MINIMAX,
433
+ llm_class=MinimaxLLM,
434
+ canonical_name="minimax-m2.1",
381
435
  default_config=LLMConfig(
382
- pricing_config=TokenPricingConfig(13.8, 13.8),
383
- extra_params={ "extra_body": { "thinking": { "type": "enabled" } } }
436
+ pricing_config=TokenPricingConfig(0.15, 0.45)
384
437
  )
385
438
  ),
386
439
  ]
@@ -439,18 +492,7 @@ class LLMFactory(metaclass=SingletonMeta):
439
492
  """Returns a list of all available models with their detailed info."""
440
493
  LLMFactory.ensure_initialized()
441
494
  models = sorted(LLMFactory._models_by_identifier.values(), key=lambda m: m.model_identifier)
442
- return [
443
- ModelInfo(
444
- model_identifier=m.model_identifier,
445
- display_name=m.name,
446
- value=m.value,
447
- canonical_name=m.canonical_name,
448
- provider=m.provider.value,
449
- runtime=m.runtime.value,
450
- host_url=m.host_url
451
- )
452
- for m in models
453
- ]
495
+ return [m.to_model_info() for m in models]
454
496
 
455
497
  @staticmethod
456
498
  def list_models_by_provider(provider: LLMProvider) -> List[ModelInfo]:
@@ -460,18 +502,7 @@ class LLMFactory(metaclass=SingletonMeta):
460
502
  [m for m in LLMFactory._models_by_identifier.values() if m.provider == provider],
461
503
  key=lambda m: m.model_identifier
462
504
  )
463
- return [
464
- ModelInfo(
465
- model_identifier=m.model_identifier,
466
- display_name=m.name,
467
- value=m.value,
468
- canonical_name=m.canonical_name,
469
- provider=m.provider.value,
470
- runtime=m.runtime.value,
471
- host_url=m.host_url
472
- )
473
- for m in provider_models
474
- ]
505
+ return [m.to_model_info() for m in provider_models]
475
506
 
476
507
  @staticmethod
477
508
  def list_models_by_runtime(runtime: LLMRuntime) -> List[ModelInfo]:
@@ -481,18 +512,7 @@ class LLMFactory(metaclass=SingletonMeta):
481
512
  [m for m in LLMFactory._models_by_identifier.values() if m.runtime == runtime],
482
513
  key=lambda m: m.model_identifier
483
514
  )
484
- return [
485
- ModelInfo(
486
- model_identifier=m.model_identifier,
487
- display_name=m.name,
488
- value=m.value,
489
- canonical_name=m.canonical_name,
490
- provider=m.provider.value,
491
- runtime=m.runtime.value,
492
- host_url=m.host_url
493
- )
494
- for m in runtime_models
495
- ]
515
+ return [m.to_model_info() for m in runtime_models]
496
516
 
497
517
  @staticmethod
498
518
  def get_canonical_name(model_identifier: str) -> Optional[str]:
@@ -507,4 +527,62 @@ class LLMFactory(metaclass=SingletonMeta):
507
527
  logger.warning(f"Could not find model with identifier '{model_identifier}' to get its canonical name.")
508
528
  return None
509
529
 
530
+ @staticmethod
531
+ def reload_models(provider: LLMProvider) -> int:
532
+ """
533
+ Reloads models for a specific provider.
534
+ Strategy: Clear-Then-Discover (Fail Fast).
535
+
536
+ 1. Clears all existing models for the provider.
537
+ 2. Fetches fresh models.
538
+ 3. Registers them.
539
+
540
+ If step 2 fails, the registry for this provider remains empty, correctly reflecting
541
+ that the server is unreachable or returning no models.
542
+ """
543
+ LLMFactory.ensure_initialized()
544
+
545
+ provider_handlers = {
546
+ LLMProvider.LMSTUDIO: LMStudioModelProvider,
547
+ LLMProvider.AUTOBYTEUS: AutobyteusModelProvider,
548
+ LLMProvider.OLLAMA: OllamaModelProvider,
549
+ }
550
+
551
+ handler = provider_handlers.get(provider)
552
+ if not handler:
553
+ logger.warning(f"Reloading is not supported for provider: {provider}")
554
+ return len(LLMFactory._models_by_provider.get(provider, []))
555
+
556
+ # 1. Clear old models for this provider immediately
557
+ current_provider_models = LLMFactory._models_by_provider.get(provider, [])
558
+ ids_to_remove = [m.model_identifier for m in current_provider_models]
559
+
560
+ logger.info(f"Clearing {len(ids_to_remove)} models for provider {provider} before discovery.")
561
+
562
+ for mid in ids_to_remove:
563
+ if mid in LLMFactory._models_by_identifier:
564
+ del LLMFactory._models_by_identifier[mid]
565
+
566
+ if provider in LLMFactory._models_by_provider:
567
+ del LLMFactory._models_by_provider[provider]
568
+
569
+ # 2. Fetch new models
570
+ try:
571
+ # We assume the handler has a static .get_models() method
572
+ if not hasattr(handler, 'get_models'):
573
+ logger.error(f"Provider handler {handler} does not implement get_models()")
574
+ return 0 # We already cleared everything
575
+
576
+ new_models: List[LLMModel] = handler.get_models()
577
+ except Exception as e:
578
+ logger.error(f"Failed to fetch models for {provider} during reload. Registry for this provider is now empty. Error: {e}")
579
+ return 0
580
+
581
+ # 3. Register new models
582
+ logger.info(f"Registering {len(new_models)} new models for provider {provider}.")
583
+ for model in new_models:
584
+ LLMFactory.register_model(model)
585
+
586
+ return len(new_models)
587
+
510
588
  default_llm_factory = LLMFactory()