Commit Graph

22 Commits

Author SHA1 Message Date
Ettore Di Giacinto 7a37056d12 feat: improve control loop
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2026-02-15 23:05:51 +00:00
Ettore Di Giacinto da0d4ceb2b Return last message when no tools are selected (#33)
* Return last message when no tools are selected

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* Improve logging

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* Allow agent to disengage also without sink state

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* ask when needed

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* Allow to keep old behavior

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* tests fixups

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

---------

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2026-02-14 21:17:34 +01:00
Ettore Di Giacinto a5346975d4 chore: return any result from tools in the status (#32)
This allows to put arbitrary data as results of any tool and be later
picked up when inspecting the execution results of the agent.

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2026-02-06 16:34:01 +01:00
Ettore Di Giacinto b5fa1ef9ec chore: add message manipulator callback (#31)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2026-02-05 22:40:59 +01:00
Ettore Di Giacinto 1321987e12 feat(tools): add parallel tool support (#30)
* feat(tools): add parallel tool support

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* Add tests

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* linting

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

---------

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2026-01-19 23:12:45 +01:00
Ettore Di Giacinto ef0538f67c feat(planning): support multiple reviewers (#29)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2026-01-19 22:41:19 +01:00
Ettore Di Giacinto f195b2553f feat(todo): add todo-based goal execution similar to cursor agent mode (#25)
* feat(todo): add todo-based goal execution similar to cursor agent mode

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* reinforce tests

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* Bump timeout for tests

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* feat: guided tools

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

---------

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2026-01-15 21:19:15 +01:00
Ettore Di Giacinto 35b0d01edb feat: guided tools (#26)
* feat: guided tools

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* Update docs

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

---------

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2026-01-15 21:19:01 +01:00
Ettore Di Giacinto 7a0768f167 go fmt 2025-12-19 23:04:26 +01:00
Ettore Di Giacinto 1a6237e2ec chore: move logging to its own package so can be shared across repos (#23)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-12-19 23:02:17 +01:00
Ettore Di Giacinto 2324131eaa feat: add state and feedback (#18)
* feat: allow to adjust tool call with user feedback

Expand the callback signature such as we accept a string for adjusting
the toolcall. If an adjustment is provided and we should continue, then
cogito prompts again the selection process with the user feedback to
improve the tool call.

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* feat: return a state such as the execution can be resumed

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* chore: style changes

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* chore: add tests

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

---------

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-12-07 23:42:24 +01:00
Ettore Di Giacinto ab5e39c511 feat(sink): allow to configure and disable sink state (#17)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-12-03 22:57:05 +01:00
Ettore Di Giacinto 8859641f81 feat: declare tool args via struct (#14)
* feat: declare tool args via struct

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* simplify even more the API

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

---------

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-10-29 19:20:17 +01:00
Ettore Di Giacinto 3196b1a2c3 fix: add default reasoning callback
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-10-28 09:13:53 +01:00
Ettore Di Giacinto 2d07420497 chore: add a way to track reasoning only
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-10-27 12:45:00 +01:00
Ettore Di Giacinto 23c7064141 feat: enhance tool selection (#13)
* feat: enhance tool selection

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* try to adapt tests

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* Make tests more stable

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* Add autoplan test

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* Don't load MCP prompts if we don't have any

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* Reorder things

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* TEST

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* Revert "TEST"

This reverts commit b08bbc56d5.

* TEST

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* TEST2

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* Try to fix tests

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* Add back guidelines

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* fixups

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* Improve next action logic

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* tests

* tests2

* forcereasoning

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* maxiterations

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* Fix tests

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* Better error handling

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* test

* error handling

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* Force text reply

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* Two-step param generation approach

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* Code cleanup

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* Add a small note/comment

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* Improve tests

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* Small refinements

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

---------

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-10-26 21:37:24 +01:00
Ettore Di Giacinto 08f259a3a3 fix: correctly pass by tool status results
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-10-19 21:23:00 +02:00
Ettore Di Giacinto 2f0f800d95 feat(tools): allow to automatically plan (#9)
* feat(tools): allow to automatically plan

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* feat(mcp): display MCPs prompts during tool selection

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* feature gate mcp prompts

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* Add test

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* fix plans, strict tests

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

---------

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-10-13 09:11:13 +02:00
Ettore Di Giacinto 6307cdecae feat(mcp): Support MCP sessions to source available tools (#8)
* feat(mcp): Support MCP sessions to source available tools

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* chore: docs

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* add e2e test

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* docs

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* Update README

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* Style cleanup

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

---------

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-10-08 23:40:41 +02:00
Ettore Di Giacinto 6bb97feb18 feat: add guidelines to steer tool selection (#6)
* feat: add guidelines to steer tool selection

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* Display suggested tools

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* Add tests

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

---------

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-10-03 00:07:19 +02:00
Ettore Di Giacinto 3057d37397 chore: add callbacks to interrupt actions and track tools being called (#1)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-09-24 18:43:05 +02:00
Ettore Di Giacinto af41faaa19 Initial import
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-09-23 23:24:00 +02:00