Commit Graph
340 Commits
Author SHA1 Message Date
Martin 4c0a72ff61 Merge pull request #468 from octo-patch/fix/issue-394-lm-studio-url-parsing
fix: correct LM Studio URL parsing and uvicorn port binding
2026-04-11 16:46:56 +02:00
Martin 021644d786 Merge pull request #467 from octo-patch/fix/issue-274-searxsearch-query-encoding
fix: URL-encode search query and detect empty results as failure
2026-04-11 16:46:42 +02:00
Martin 725ceeea20 Merge pull request #466 from octo-patch/fix/issue-332-ollama-configurable-port
fix: use configured port from server_address for local Ollama connections
2026-04-11 16:46:16 +02:00
Martin 69bbd31abf Merge pull request #465 from octo-patch/fix/issue-312-dynamic-remote-debugging-port
fix: use dynamic free port for remote debugging to prevent SessionNotCreatedException
2026-04-11 16:44:08 +02:00
octo-patch 05aa5c2104 fix: correct LM Studio URL parsing and uvicorn port binding (fixes #394)
- lm_studio_fn: use urlparse to extract port from server_address so that
  addresses with an http:// prefix (e.g. http://127.0.0.1:1234, as
  documented in README) no longer break the Docker URL construction.
  Previously split(":")[1] returned "//127.0.0.1" instead of the port
  number, producing a malformed URL.
  Also fix the non-Docker path to avoid prepending http:// when the address
  already includes a scheme.

- api.py: pass the computed port variable to uvicorn.run() instead of the
  hardcoded literal 7777, so that BACKEND_PORT environment variable is
  actually honoured when starting the server directly.
2026-04-11 10:37:17 +08:00
octo-patch a976afdbd7 fix: URL-encode search query and detect empty results as failure (fixes #274)
- Use urllib.parse.urlencode to properly encode the POST body, so queries
  containing special characters like '&', '+', '=' are sent correctly
- Extend execution_failure_check to also detect "No search results" as a
  failure, preventing the agent from silently looping when all SearXNG
  engines are rate-limited and return no results
2026-04-10 10:07:06 +08:00
octo-patch 29aafda41d fix: use configured port from server_address for local Ollama connections (fixes #332)
When is_local=True, the Ollama host URL previously hardcoded port 11434,
ignoring the port specified in provider_server_address in config.ini.
Users who need to run Ollama on a non-default port (e.g. because 11434
is already in use) had no way to configure this without editing source code.

Now the port is extracted from provider_server_address when present,
falling back to 11434 if only a hostname is given.
2026-04-09 10:23:19 +08:00
octo-patch 37c9652e6d fix: use dynamic free port for remote debugging to prevent SessionNotCreatedException (fixes #312)
The hardcoded --remote-debugging-port=9222 caused SessionNotCreatedException
when port 9222 was already in use by another Chrome instance or process.
Replace with a dynamically allocated free port via socket binding.
2026-04-08 10:36:48 +08:00
Octopus 3fc2ac5235 fix: use BACKEND_PORT env var in uvicorn and honor base_url arg in searxSearch
- api.py: uvicorn.run was hardcoding port=7777 instead of using the
  port variable populated from BACKEND_PORT env var, making BACKEND_PORT
  ineffective when running python api.py directly
- searxSearch: add missing 'import sys' (caused NameError when run as
  standalone script) and use constructor base_url arg with env var
  fallback so searxSearch(base_url=...) actually takes effect
2026-04-06 10:43:16 +08:00
Martin 1fbd8b135b Merge branch 'main' into fix/provider-registration-bugs 2026-04-05 16:39:08 +02:00
Martin 7b8a2271a3 Merge pull request #459 from octo-patch/fix/issue-382-prevent-server-crash-on-query-error
fix: return HTTP 500 instead of crashing server on query errors
2026-04-05 11:59:00 +02:00
Martin 4e985d8df6 Merge pull request #457 from octo-patch/fix/issue-367-make-plan-infinite-loop
fix: add max retry limit to PlannerAgent.make_plan to prevent infinite loop
2026-04-05 11:58:09 +02:00
Martin 74d38100c4 Merge pull request #455 from octo-patch/fix/issue-359-planner-unbound-answer
fix: resolve UnboundLocalError in PlannerAgent.process when stop flag is set
2026-04-05 11:57:16 +02:00
Octopus 2b8bc83a97 fix: register anthropic provider, normalize togetherAI alias, fix dsk_deepseek exception handling
- Add 'anthropic' to available_providers and unsafe_providers so users can set
  provider_name = anthropic in config.ini and use ANTHROPIC_API_KEY
- Add provider name alias normalization so 'togetherAI' (as documented in README)
  is accepted as equivalent to 'together'
- Fix NameError in dsk_deepseek: add 'as e' to AuthenticationError, RateLimitError,
  and NetworkError except clauses where 'e' was referenced but not bound
- Remove unreachable 'return thought' dead code at end of lm_studio_fn
- Update README to list Anthropic as a supported API provider
2026-04-05 10:41:54 +08:00
Octopus 872d01f8e5 fix: return HTTP 500 instead of calling sys.exit(1) on query errors
Previously, any unhandled exception during query processing caused the
entire backend server to exit via sys.exit(1), making the frontend show
'System offline. Deploy backend first.' until the container was restarted.
Also, is_generating was never reset to False on exception, permanently
blocking all subsequent queries with 429 responses.

- Replace sys.exit(1) with a proper HTTP 500 error response
- Move is_generating = False to the finally block so it always resets

Fixes #382
2026-04-04 11:23:41 +08:00
Octopus d1ecb15703 fix: add max retry limit to PlannerAgent.make_plan to prevent infinite loop (fixes #367) 2026-04-03 10:51:23 +08:00
Octopus 7cde1549b2 fix: initialize answer variable and reset stop flag in PlannerAgent.process (fixes #359) 2026-04-02 16:52:06 +08:00
PR Bot 1432266694 feat: upgrade MiniMax default model to M2.7
- Add MiniMax-M2.7 and MiniMax-M2.7-highspeed to supported models list
- Update docstring to list M2.7 models before M2.5
- Update README/README_CHS model references
- Add unit tests for M2.7 and M2.7-highspeed models
- Keep all previous models as alternatives
2026-03-18 16:33:04 +08:00
Martin 1036c5fbc1 Merge pull request #449 from guoyangzhen/fix/optional-tts-dependency
fix: make kokoro TTS optional to resolve num2words Python 3.12+ incompatibility
2026-03-16 20:02:51 +01:00
guoyangzhen 53a47be80c fix: make kokoro TTS optional 2026-03-14 17:26:21 +08:00
ximi fc268ed087 feat: add MiniMax as new LLM provider
Add support for MiniMax M2.5 series models via OpenAI-compatible API:
- Add minimax_fn() to Provider class with configurable base URL
- Support both international and China mainland endpoints
- Update documentation in README.md and README_CHS.md
- Add MINIMAX_API_KEY and MINIMAX_BASE_URL to .env.example
- Add unit tests for MiniMax provider

Made-with: Cursor
2026-03-06 17:10:52 +08:00
Martin 781275c881 Merge pull request #439 from Br1an67/feat/issue-108-web-form-handling
feat: add support for select, textarea, and file upload in web forms
2026-03-02 19:45:10 +01:00
Martin fa4cef0e74 Merge pull request #438 from Br1an67/fix/issue-356-auto-update-chromedriver
fix: auto-update ChromeDriver when version mismatches Chrome
2026-03-02 19:43:39 +01:00
Br1an67 1e827a903b feat: add support for select, textarea, and file upload in web forms
Extend form handling to support:
- <select> dropdowns: detect options, select by visible text or value
- <textarea> fields: fill with text content
- <input type="file">: upload files by absolute path
- All element types are also discovered inside shadow DOM

Changes:
- find_inputs.js: discover <select> (with options) and <textarea>
- browser.py: import Select, handle new element types in
  get_form_inputs() and fill_form_inputs()
2026-03-02 00:16:28 +08:00
Br1an67 16f7f7c917 fix: auto-update ChromeDriver when version mismatches Chrome
Add version compatibility check before using existing ChromeDriver.
When the installed ChromeDriver major version does not match Chrome,
chromedriver_autoinstaller downloads the correct version automatically
instead of failing with a version mismatch error.

Add helper functions get_chromedriver_version() and
is_chromedriver_compatible() with tests for version matching logic.
2026-03-02 00:10:23 +08:00
Br1an67 f350378170 fix: handle JSON parsing errors in planner agent
Add try-except for json.JSONDecodeError in parse_agent_tasks() to
gracefully handle malformed JSON from LLM responses (e.g. Gemini 2.5
Flash via OpenRouter). Returns empty list on parse failure, which
triggers the existing retry mechanism in make_plan().

Add test suite for parse_agent_tasks() covering valid JSON, malformed
JSON, truncated JSON, and invalid agent name cases.
2026-03-02 00:03:36 +08:00
martin.legrand edc0e69a82 fix : more linux issues 2025-09-13 23:47:24 +02:00
martin.legrand fd8d940e58 rm test file 2025-09-13 14:31:59 +02:00
martin.legrand 87c8a3fb09 fix: redundant searxng folder causing error on ubuntu, tts issue, bigger mount point allowed by start_services, readme updated for cli mode 2025-09-13 14:30:21 +02:00
martin.legrand d80bda8468 fix : unseen recursion mistake on empty value for work folder 2025-09-11 23:44:06 +02:00
Martin a2f75e7281 Merge pull request #371 from Fosowl/dev
Fix readme typo
2025-07-05 14:47:04 +02:00
martin 3e652a6b99 update readme 2025-07-05 14:45:43 +02:00
Martin fd987e5b5c Merge pull request #370 from Fosowl/dev
Update readme + contributing.md
2025-07-02 18:02:44 +02:00
martin 23caf437b1 Update contributing.md + sponsorship 2025-07-01 21:25:58 +02:00
martin f5b1c4ab37 update flight search tool 2025-07-01 20:23:55 +02:00
WINZO Platform Developer b3ec49c611 fix: prioritize project root ChromeDriver for Docker compatibility
- Check ./chromedriver before system PATH or auto-installer
- Add Docker environment detection and fallback logic
- Provide debug messages for ChromeDriver source identification
- Improve compatibility with undetected_chromedriver in stealth mode

This resolves issues where undetected_chromedriver downloads its own
ChromeDriver version, bypassing mounted binaries in Docker environments.
The project root approach ensures users can manually place the correct
ChromeDriver version and have it reliably detected.
2025-06-25 18:20:25 -05:00
Martin 2eb62e63eb Merge pull request #348 from christiancoleman/origin/headless-docker
Headless chrome in a container
2025-06-22 15:40:43 +02:00
Mike Lin 860e52c3fa Enhance Memory class: Remove 'model_use' and 'time' in messages payload when user select free model from oepn router which result 500 error 2025-06-22 17:39:38 +08:00
Christian Coleman c7ffe46771 Added a warning for people that try to run a non-headless browser in a docker container. It errors in a very unhelpful way, and so this code tells the user in the output what's happening and also forces headless = True. If a user actually means to run a non-headless browser and view via X11 or something then the warning/output will lead them to the right place that they need to tweak. 2025-06-22 02:39:20 -04:00
martin 0605fb4526 Fix : searxng issue on docker 2025-06-21 15:11:35 +02:00
martin f8f987e8ba Merge branch 'main' into dev 2025-06-18 22:14:15 +02:00
martin 29ddf31f82 tup docstring 2025-06-18 22:13:48 +02:00
martin 611eddb715 Fix : typo + set safe_mode to False since we now run in docker 2025-06-18 21:40:40 +02:00
Christian Coleman e33e3e15e4 Issue with LM Studio not getting port when using Docker 2025-06-15 18:53:36 -04:00
martin 8888f3c481 update readme 2025-06-14 17:15:48 +02:00
martin 5a06b21a67 fix : llm provider to be docker compatible with new net configuration 2025-06-14 15:52:00 +02:00
sukrucildirr c74fb8a005 Update planner_agent.py 2025-06-07 23:47:22 +03:00
sukrucildirr 43acef2378 Update mcpFinder.py 2025-06-07 23:46:44 +03:00
sukrucildirr 4a0843f0aa Update text_to_speech.py 2025-06-07 23:46:17 +03:00
martin legrand a58b1cf9f8 fix : conditional stt & tts activation 2025-06-03 02:19:50 +02:00