53 Commits

Author SHA1 Message Date
Ettore Di Giacinto 4368152dd1 chore(logging): allow to set programmatically log level
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-12-16 21:44:25 +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
Ettore Di Giacinto deeb9c9649 Update README.md 2025-09-24 10:52:46 +02:00
Ettore Di Giacinto d755925940 Update README with Cogito architecture details
Added information about Cogito's architecture and its relation to LocalAI, LocalAGI, and LocalOperator.
2025-09-24 10:51:29 +02:00
Ettore Di Giacinto 59728550f0 Resize image in README.md
Updated image size in README to improve layout.
2025-09-23 23:51:07 +02:00
Ettore Di Giacinto b9c3ac3240 Remove project name header from README
Removed the project name header from README.
2025-09-23 23:50:45 +02:00
Ettore Di Giacinto f675d8a6cd Adjust image alignment and enhance README content
Updated image alignment in README and improved description.
2025-09-23 23:50:33 +02:00
Ettore Di Giacinto c622ce0a75 Revise README for clarity and structure
Enhanced README with clearer descriptions and new sections.
2025-09-23 23:49:51 +02:00
Ettore Di Giacinto 86b39f901a Update README with new features and focus areas
Enhanced README to highlight focus on small, open source LLMs and added details about internal pipeline and reasoning.
2025-09-23 23:45:11 +02:00
Ettore Di Giacinto b5ed0d9035 Add README documentation for Cogito library
Added comprehensive documentation for the Cogito library, including installation instructions, usage examples, and testing guidelines.
2025-09-23 23:41:01 +02:00
Ettore Di Giacinto 98a1aca6d3 Update copyright year and owner in LICENSE file 2025-09-23 23:33:19 +02:00