Commit Graph

1086 Commits

Author SHA1 Message Date
RMtz88 eb280bfd7f
Merge cc82345bc0 into 62871b6f5a 2026-07-15 19:00:04 -07:00
Víctor Mayoral-Vilches 62871b6f5a docs: connect CAI releases to the research corpus 2026-07-14 14:54:20 +02:00
Yahya cc82345bc0 fix(chatcompletions): only repair args that look like truncated JSON
The previous repair pass rewrote any non-parseable arguments string to
"{}", which clobbered legitimate accumulator contents in
test_stream_response_yields_events_for_tool_call (concatenated raw
deltas like "arg1arg2"). Narrow the guard: only when the stripped
buffer starts with "{" or "[" *and* fails to parse do we replace it
with "{}". Everything else is left untouched.
2026-06-11 12:36:40 +02:00
Yahya 967762950c fix(chatcompletions): repair truncated tool-call args before emission
A streaming tool call cut off after the opening brace would leave
state.function_calls[i].arguments = "{". CAI persisted that into
conversation history verbatim, and on the next turn the upstream
litellm proxy strict-parsed it as JSON and rejected the whole
request with HTTP 400 ("unexpected end of data: line 1 column 2"),
wedging the session.

- openai_chatcompletions.py: at end-of-stream, validate every
  accumulated function_call.arguments string. If empty or not
  valid JSON, normalize to "{}" before emitting events.
- message_builder.py: same guard when replaying assistant tool_calls
  out of memory, so a poisoned history loaded from disk also recovers.
2026-06-11 12:36:40 +02:00
Rufino Cabrera 23739d0631 Hide LLM gateway URL from user-facing error messages
Replace endpoint URLs in httpx retry exhaustion errors with the branded
Alias Robotics® LLM servers label; URLs remain in debug logs only.
2026-06-11 12:30:57 +02:00
Rufino Cabrera f454c41e94 Remove unused HTML import from read_repl_line 2026-06-11 12:30:57 +02:00
Rufino Cabrera 95506508a2 Use prompt_toolkit for /compact y/N confirmation
Rich console.input still echoed ^M after prompt_toolkit even with cooked
TTY restore. Route compact confirmation through prompt_toolkit like the
main CAI> prompt and other interactive agent flows.
2026-06-11 12:30:57 +02:00
Rufino Cabrera 937fbb5cc1 Fix /compact y/N prompt echoing ^M on Enter
Force cooked canonical TTY mode after prompt_toolkit and route /compact
confirmation through read_repl_yes_no, which restores the terminal and
strips stray carriage returns from the answer.
2026-06-11 12:30:57 +02:00
Rufino Cabrera fda018a324 Fix REPL y/N prompts showing ^M after Enter
Restore cooked TTY state after prompt_toolkit exits so Rich console.input
and other follow-up prompts (e.g. /compact confirmation) accept Enter normally.
2026-06-11 12:30:51 +02:00
UnaiAlias 1c79507140
CAI 1.1.5 release (#455) 2026-06-05 13:43:19 +02:00
UnaiAlias 2963eb2d22
docs: clarify usage data collection scope and GDPR basis (#453)
* docs: add Supporting Other CLIs section with Claude Code, Codex and OpenCode

Adds a new documentation section covering how to use the Alias API
with third-party scaffoldings (Claude Code via proxy, Codex CLI, and
OpenCode). Includes privacy/security warning banners and support
disclaimers on each page.

* docs: update Claude Code setup to use env vars instead of proxy

* docs: clarify usage data collection scope and GDPR basis

Expand the Usage Data Collection section to explicitly mention model
training and evaluation as purposes of data collection, separate the
GDPR legal basis into its own paragraph for readability, and refine
the closing note about CAI_TELEMETRY.
2026-06-01 16:31:58 +02:00
Yahya Hajji 87cc46f46f
docs: align REPL reference with current commands and navigation (#435)
Remove council page and nav; drop obsolete slash commands from docs (/config,
/context, /platform, /kill, /model-show); document /env, /model show, and
CLI examples. Update README, MkDocs, and PRO pages for usage visibility.
2026-05-18 13:59:20 +02:00
RMtz88 7ec0b4ccf2
Docs/environment variables repl help (#433)
* docs: environment variable REPL reference and /help var parity

- Document /help, /help var, and /config for in-session env discovery
  (environment_variables.md, configuration.md, FAQ, CLI reference pages).
- Add Values/When columns and a field guide aligned with REPL /help tables.

* docs: document CAI_AVOID_SUDO in environment variables reference

Add table row, REPL discovery example, and Security & Safety examples
for public MkDocs / GitHub Pages.

Made-with: Cursor

---------

Co-authored-by: Rufino Cabrera <rufino@aliasrobotics.com>
2026-04-17 13:34:47 +02:00
RMtz88 d93c27e66b
docs: environment variable REPL reference and /help var parity (#432)
- Document /help, /help var, and /config for in-session env discovery
  (environment_variables.md, configuration.md, FAQ, CLI reference pages).
- Add Values/When columns and a field guide aligned with REPL /help tables.

Co-authored-by: Rufino Cabrera <rufino@aliasrobotics.com>
2026-04-10 15:03:35 +02:00
RMtz88 02115233de
docs(commands): update parallel/queue/merge workflow for public docs (#427)
Co-authored-by: Rufino Cabrera <rufino@aliasrobotics.com>
2026-04-01 14:33:14 +02:00
yuri-alias 7f473712e8
fixed rate limit documentation (#426) 2026-04-01 14:20:13 +02:00
UnaiAlias fd5ca01b7e
docs: add Supporting Other CLIs section (#423)
docs: add Supporting Other CLIs section with Claude Code, Codex and OpenCode

Adds a new documentation section covering how to use the Alias API
with third-party scaffoldings (Claude Code via proxy, Codex CLI, and
OpenCode). Includes privacy/security warning banners and support
disclaimers on each page.
2026-03-25 12:00:20 +01:00
xelitte e22a1220f7
Merge commit from fork
* Block dangerous flags in find_file function

Added a set of dangerous flags to prevent RCE and file manipulation in the find_file function.

* Fix typo in error message for dangerous flags
2026-01-30 08:03:07 +01:00
Cristi e38ac2b031
Add JS surface mapper tool to Web Pentester agent (#397)
add js mapper

Co-authored-by: root <root@Unknown.localdomain>
2026-01-15 11:13:36 +01:00
Cristi e796efb100
Web pentester prompt: add business-logic abuse backlog section (#380)
added business logic tests abuse suggestions

Co-authored-by: root <root@Unknown.localdomain>
2026-01-15 11:13:17 +01:00
luijait 229e8118e6
Add docs for session system (#398) 2026-01-13 08:53:24 +01:00
blakkd 559de8fcbc
README - typo in CAI_STREAM variable name (#381)
Fix typo in CAI_STREAM variable name
2025-12-19 14:57:45 +01:00
Didier Durand 68e33196ee
[Doc]: fixing typos in different files (#369) 2025-12-19 13:09:33 +01:00
Cristian "SkyH34D" Franco da6aada463
Update banner title from Alias0 to Alias1 (#367)
* Fix typo in README.md for 'Agents'

Correcting typo and adjusting diagram

* Update banner title from Alias0 to Alias1

* Fix formatting issues in README diagram

This was a formating missmatch that now is fixed

---------

Co-authored-by: UnaiAlias <52742669+UnaiAlias@users.noreply.github.com>
2025-12-19 12:56:12 +01:00
@uayucar d086cc4871 new version with Ollama Cloud 2025-12-19 12:39:14 +01:00
pzabalegui da1c6202e5
feat: Add Ollama Cloud integration with ollama_cloud/ prefix (#372)
* feat: Add Ollama Cloud integration with ollama_cloud/ prefix

- Added support for Ollama Cloud models via AsyncOpenAI
- Models use ollama_cloud/ prefix (e.g., ollama_cloud/gpt-oss:120b)
- Reads OLLAMA_API_KEY and OLLAMA_API_BASE for cloud authentication
- Added predefined Ollama Cloud models to /model-show
- Filtered obsolete ollama/*-cloud models from LiteLLM database
- Updated authentication headers in completer, banner, and toolbar
- Added concise English documentation in docs/providers/
- Adapted to new global model cache architecture from #371

Modified files:
- src/cai/sdk/agents/models/openai_chatcompletions.py
- src/cai/repl/commands/model.py (adapted to global cache)
- src/cai/util.py
- src/cai/repl/commands/completer.py
- src/cai/repl/ui/banner.py
- src/cai/repl/ui/toolbar.py
- docs/providers/ollama.md
- docs/providers/ollama_cloud.md

All existing functionality preserved (backward compatible).

* fix: Add missing Ollama Cloud models and get_ollama_auth_headers

- Added Ollama Cloud models to get_predefined_model_categories()
- Added get_ollama_auth_headers() function to util.py
- Added Ollama Cloud to category_to_provider mapping
- Imported get_ollama_auth_headers in model.py

This fixes the issue where predefined models weren't showing in /model-show.

* fix: Display predefined models first in /model-show

- Added loop to display predefined models (Alias, Claude, OpenAI, DeepSeek, Ollama Cloud) before LiteLLM models
- Models #1-14 now correctly show predefined models
- LiteLLM models start from #15+ as expected
- Added get_ollama_auth_headers() function in util.py for Ollama Cloud auth
- Fixed model numbering to be consistent with global cache

This resolves the issue where predefined models were skipped and only LiteLLM models appeared starting from #15.

* fix: Restore correct import of cai.caibench instead of pentestperf

During rebase, the import was incorrectly changed from 'import cai.caibench as ptt'
to 'import pentestperf as ptt'. This commit restores the correct import.

The original code uses cai.caibench, not an external pentestperf module.
2025-12-10 15:42:48 +01:00
pzabalegui 7c2267d2b9
fix: consistent model numbering between /model and /model-show for Ol… (#371)
fix: consistent model numbering between /model and /model-show for Ollama

When using OLLAMA_API_BASE, model selection by number was incorrect.
/model-show displayed Ollama models with certain numbers, but /model <number>
selected different models from LiteLLM instead.

This happened because both commands used separate caches with inconsistent
numbering. Now they share a global cache that loads models in consistent order:
predefined → LiteLLM → Ollama.

Fixes model number mismatch when selecting Ollama models by number.
2025-12-10 12:41:35 +01:00
pzabalegui e932e30850
fix: prevent indefinite blocking on interactive commands (#370)
Add idle detection to prevent CAI from freezing when executing
interactive tools (cat, python -i, gdb, radare2) that wait for
user input indefinitely.

- Add non-blocking I/O with asyncio.wait_for() timeouts
- Add 10s idle timeout to terminate idle processes
- Apply to streaming and non-streaming execution paths
- Add select.select() to ShellSession._read_output()

Resolves blocking I/O issue where interactive tools would hang
CAI for the full timeout period (100s).
2025-12-09 18:42:12 +01:00
Edoardo Ottavianelli 09ccb6e0ba
Merge commit from fork 2025-12-09 16:36:22 +01:00
Cristi d37584f457
Add web_request_framework tool to web_pentester (#358)
Co-authored-by: root <root@Unknown.localdomain>
2025-12-08 11:05:51 +01:00
Didier Durand 2ed9951cf2
[Doc]: fixing typos in different files (#364) 2025-12-08 09:16:53 +01:00
Cristian "SkyH34D" Franco be455aba80
Fix typo in README.md for 'Agents' (#366)
Correcting typo and adjusting diagram
2025-12-07 12:06:23 +01:00
Didier Durand e3eeec4ec3
[Doc]: fixing typos in different files (#359) 2025-12-04 05:19:48 +01:00
Víctor Mayoral Vilches 93b17abdf7 Add Mobile UI docs
Signed-off-by: Víctor Mayoral Vilches <v.mayoralv@gmail.com>
2025-12-02 15:17:41 +01:00
Francesco Balassone 03e8ae8d7e
Added Council Docs (#355)
Co-authored-by: Francesco Balassone <77972200+balassone@users.noreply.github.com>
2025-12-01 17:42:07 +01:00
Víctor Mayoral Vilches 96aff0d7d9 v0.5.9, handle better dotenv
Signed-off-by: Víctor Mayoral Vilches <v.mayoralv@gmail.com>
2025-11-30 13:01:42 +01:00
Víctor Mayoral Vilches a08dbbacab v0.5.8
Signed-off-by: Víctor Mayoral Vilches <v.mayoralv@gmail.com>
2025-11-30 12:52:03 +01:00
Víctor Mayoral Vilches 6b34648245 Fix guardrail init, use alias1 as default
Signed-off-by: Víctor Mayoral Vilches <v.mayoralv@gmail.com>
2025-11-30 12:51:45 +01:00
Víctor Mayoral Vilches 900c52c494 v0.5.7, fix in guardrails
Signed-off-by: Víctor Mayoral Vilches <v.mayoralv@gmail.com>
2025-11-30 12:42:26 +01:00
Víctor Mayoral Vilches 756c0917d8 Remove media objects from releases
Signed-off-by: Víctor Mayoral Vilches <v.mayoralv@gmail.com>
2025-11-30 12:29:31 +01:00
Víctor Mayoral Vilches ac3cdb1694 v0.5.6: Enhanced Web Security Testing, MCP Improvements, and Comprehensive Documentation
This release introduces significant enhancements to CAI's web security testing capabilities,
improves MCP server support, and substantially expands documentation coverage.

New Features
  - Add web_pentester_agent for professional web application security testing (#353)
  - Add HTTP header support to /mcp load command for SSE servers (#350)
  - Implement custom tool example for agent extensibility (#347)
  - Support for reasoning tokens in response processing (#318)
  - Docker container based on Kali Linux for enhanced tooling (#308)

Documentation
  - Add comprehensive CAI PRO documentation and CLI section (#333)
  - Add four new case studies: Unitree G1, Dragos CTF, HackerOne, PortSwigger (#345)
  - Add environment variables reference guide (#330)
  - Add installation guides for CAI Pro v0.5 and v0.6 (#312)
  - Document parallel agents functionality (#337)
  - Document --continue mode for session resumption
  - Document open router selection capabilities
  - Add CAI_TOOL_TIMEOUT to environment docs
  - Add Azure OpenAI provider configuration (#273)

Bug fixes
  - Fix missing import sys error (#335)
  - Fix TUI documentation issues and CAI-Pro links (#328)
  - Various stability improvements and error handling enhancements
2025-11-30 12:18:09 +01:00
Víctor Mayoral Vilches b9a58df93e Ignore some dev files
Signed-off-by: Víctor Mayoral Vilches <v.mayoralv@gmail.com>
2025-11-30 12:03:41 +01:00
Cristi b19e9bbf37
Add web_pentester_agent for web application security testing (#353)
Add web_pentester_agent for web app security testing
2025-11-30 12:02:35 +01:00
Víctor Mayoral Vilches 895703f949 Log ALIAS_API_KEY in local logs for reference and alignment with PRO
Signed-off-by: Víctor Mayoral Vilches <v.mayoralv@gmail.com>
2025-11-30 11:17:43 +01:00
Víctor Mayoral Vilches 392ded1ac3 Document new open router selection capabilities
Signed-off-by: Víctor Mayoral Vilches <v.mayoralv@gmail.com>
2025-11-27 16:28:51 +01:00
AgeOfAlgorithms efd15f43ba
feat: Add HTTP header support to /mcp load command for SSE servers (#350)
Adds --header/-H flag support to `/mcp load` for authenticated MCP servers
like Hack The Box. Handles long Bearer tokens that wrap across terminal lines.

Changes:
- Added --header/-H flag parsing in mcp.py handle_load() method
- Parse "Key: Value" format headers and strip quotes
- Pass headers to MCPServerSseParams
- Fix CLI command parsing to handle newlines from terminal wrapping
- Use shlex.split() for proper quote handling in pasted commands

Example usage:
/mcp load https://mcp.ai.hackthebox.com/v1/ctf/sse htb --header "Authorization: Bearer TOKEN"

Tested with HTB MCP server - successfully connects with 13 tools.

Developed by Claude Sonnet 4 with guidance from @AgeOfAlgorithms

Co-authored-by: AgeOfAlgorithms <AgeOfAlgorithms@pm.me>
2025-11-24 16:30:54 +01:00
Víctor Mayoral Vilches 4dc4f2e96e Simplify text
Signed-off-by: Víctor Mayoral Vilches <v.mayoralv@gmail.com>
2025-11-19 14:05:01 +01:00
Víctor Mayoral Vilches c69f670b19 Add emojis to CAI PRO
Signed-off-by: Víctor Mayoral Vilches <v.mayoralv@gmail.com>
2025-11-19 13:22:37 +01:00
Víctor Mayoral Vilches 43ecefcdff Add API capabilities in PRO to docs
Signed-off-by: Víctor Mayoral Vilches <v.mayoralv@gmail.com>
2025-11-19 13:10:07 +01:00
Mery-Sanz d6e8b0d561
Add custom tool example to agent (#347)
add custom tool example

Co-authored-by: Maria <maria@aliasrobotics.com>
2025-11-14 13:50:14 +01:00