Commit Graph

62 Commits

Author SHA1 Message Date
Ettore Di Giacinto c8f2027965 linting
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2026-01-19 19:32:04 +01:00
Ettore Di Giacinto 02dde0f0cb Add tests
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2026-01-19 19:20:23 +01:00
Ettore Di Giacinto b00ee49457 feat(tools): add parallel tool support
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2026-01-19 19:20:15 +01:00
Ettore Di Giacinto 2ec99d0648 fix(plan): add description in the schema
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
v0.8.1
2026-01-15 20:36:24 +00: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>
v0.8.0
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 v0.7.2 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 ab4090ff35 chore(logging): allow to set programmatically log level (#22)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
v0.7.1
2025-12-16 21:45:42 +01:00
Ettore Di Giacinto 19ffb31772 chore: return status if we terminate for other reasons (#19)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-12-16 21:45:32 +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>
v0.7.0
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>
v0.6.0
2025-12-03 22:57:05 +01:00
Grant Foster d7a0254ef1 fix: ensure tool call IDs are properly set and matched between tool calls and results (#15)
* fix: chat id

* fix: format code (gofmt)

* chore: test comment change
v0.5.1
2025-11-07 22:02:37 +01:00
Ettore Di Giacinto d8926243e1 Refactor README for custom tools and annotations
Removed redundant section on creating custom tools and added field annotations for tool arguments.
2025-10-30 18:19:08 +01:00
Ettore Di Giacinto 875c615613 Change iteration expectation to be greater than or equal 2025-10-30 18:16:12 +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>
v0.5.0
2025-10-29 19:20:17 +01:00
Ettore Di Giacinto d94e0bd20e fix: make sure we propagate reasoning
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
v0.4.2
2025-10-28 18:47:21 +01:00
Ettore Di Giacinto 3196b1a2c3 fix: add default reasoning callback
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
v0.4.1
2025-10-28 09:13:53 +01:00
Ettore Di Giacinto 3f982f8fe7 chore: add Reasoning to ToolChoice
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-10-27 13:24:54 +01:00
Ettore Di Giacinto 933e11d826 chore: add a way to track tool calls
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-10-27 13:17:52 +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>
v0.4.0
2025-10-26 21:37:24 +01:00
Ettore Di Giacinto 5f46a5b9e3 fix: make fragment status a pointer (#12)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-10-22 17:19:54 +02:00
Ettore Di Giacinto 8b24a604fc Fixups
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-10-21 22:58:07 +02:00
Ettore Di Giacinto 1f801b9354 fix(plan): always update plan status also in case of error (#11)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-10-21 22:31:10 +02:00
Ettore Di Giacinto 550aad0fa0 Consistently return fragments in case of errors
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
v0.3.3
2025-10-21 22:16:04 +02:00
Ettore Di Giacinto 921ed81d33 Small refactorings
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-10-21 20:00:18 +02:00
Ettore Di Giacinto a49cf79c2e feat: re-attempt plans only if enabled, emit ErrgoalNotAchieved
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-10-21 18:49:11 +02:00
Ettore Di Giacinto 6da5735ef0 fix: better error propagation
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-10-21 18:46:33 +02:00
Ettore Di Giacinto cfcdd18e82 fix: do not always return ErrNoToolSelected
Let's check first if we actually didn't run any tool before assuming so
v0.3.2
2025-10-21 16:14:29 +02:00
Ettore Di Giacinto 6e542ad1b1 chore: track plan description (#10)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-10-21 16:07:10 +02:00
Ettore Di Giacinto 9c04ac0b45 Correctly handle errors
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-10-21 12:48:53 +02:00
Ettore Di Giacinto 9dba7e36fd fix(tests): adapt to plan behavioral changes
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-10-20 22:57:48 +02:00
Ettore Di Giacinto f21710b138 chore(plans): improve planning when no tool calls are called
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-10-20 22:40:43 +02:00
Ettore Di Giacinto 3832318bdf chore: add debugging calls
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-10-20 22:33:03 +02:00
Ettore Di Giacinto 940ed46607 chore(plan): propagate plans to fragment
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-10-20 11:09:02 +02:00
Ettore Di Giacinto a22dd87a31 chore(plan): record executed plans
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-10-20 10:04:18 +02:00
Ettore Di Giacinto 08f259a3a3 fix: correctly pass by tool status results
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
v0.3.1
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>
v0.3.0
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>
v0.2.0
2025-10-08 23:40:41 +02:00
Ettore Di Giacinto f802d93341 Refactor example code in README.md
Updated code snippets for clarity and error handling.
2025-10-05 18:27:10 +02:00
Ettore Di Giacinto 1a22167f25 Update README
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
v0.1.0
2025-10-03 12:12:53 +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 d865935087 Improve planning and add tests (#4)
* WIP

* Make test pass

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

* Fixups

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

---------

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-09-30 23:23:32 +02:00
Ettore Di Giacinto 2f20fcce01 Change LLM to interface, split tests, improve content review loop (#3)
* Split e2e and unit tests

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

* Abstract away LLM to an interface

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

* Update README

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

* Fixups

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

* Enhance content improve generation

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

* Add unit test for reviewer

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

* Better handling of result status of tool calls

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

* Fixups

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

* Add tools test file

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

---------

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-09-29 22:55:43 +02:00
Ettore Di Giacinto 043d5dc6e2 feat: improve returned fragment during content review (#2)
* feat: improve returned fragment during content review

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

* Improve prompts

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

* Improve prompts

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

---------

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-09-27 23:43:24 +02:00
Ettore Di Giacinto 950e28d7b3 chore: increase compat with OpenAI API
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-09-27 18:14:50 +02:00
Ettore Di Giacinto 2a6e3fcb0a Update Go version and simplify CI matrix 2025-09-26 21:54:37 +02:00
Ettore Di Giacinto 8d91b41729 Clarify Cogito description and update variable names
Updated README to clarify the description of the Cogito library and modified variable names for consistency.
2025-09-24 22:01:36 +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