150 Commits

Author SHA1 Message Date
Ettore Di Giacinto da9e8d7c20 feat: add support to medatata to messages sent from the agents (#415)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2026-02-10 18:18:53 +01:00
Ettore Di Giacinto 25ce5475de chore: drop deprecated set reminders
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2026-02-08 23:03:03 +01:00
Copilot 57023d6386 Integrate task scheduler into agent reminder system (#408)
* Initial plan

* Add task scheduler with cron/interval/once support and comprehensive tests

Co-authored-by: mudler <2420543+mudler@users.noreply.github.com>

* Add comprehensive documentation for scheduler package

Co-authored-by: mudler <2420543+mudler@users.noreply.github.com>

* Add working example demonstrating scheduler usage

Co-authored-by: mudler <2420543+mudler@users.noreply.github.com>

* Update .gitignore to exclude example binaries and task files

Co-authored-by: mudler <2420543+mudler@users.noreply.github.com>

* Integrate task scheduler into existing reminder system

Co-authored-by: mudler <2420543+mudler@users.noreply.github.com>

* Fix scheduler integration and compilation errors

Co-authored-by: mudler <2420543+mudler@users.noreply.github.com>

* Remove standalone scheduler example - integrated into agent system

Co-authored-by: mudler <2420543+mudler@users.noreply.github.com>

* Update scheduler README to reflect integration with agent system

Co-authored-by: mudler <2420543+mudler@users.noreply.github.com>

* replace old reminders logic

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

* A task scheduler for each agent

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

* fixups

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

* tests

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

* fixups

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

* change to duration

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

---------

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: mudler <2420543+mudler@users.noreply.github.com>
Co-authored-by: Ettore Di Giacinto <mudler@localai.io>
2026-02-08 22:19:22 +01:00
Copilot 1c3e9b36e7 Add generate_pdf action with connector support (#409)
* Initial plan

* Add PDF generation action with tests and connector support

Co-authored-by: mudler <2420543+mudler@users.noreply.github.com>

* Address code review feedback: Add error logging and clarify filename description

Co-authored-by: mudler <2420543+mudler@users.noreply.github.com>

* Add path traversal protection for filename parameter

Co-authored-by: mudler <2420543+mudler@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: mudler <2420543+mudler@users.noreply.github.com>
2026-02-08 21:09:04 +01:00
Ettore Di Giacinto 4a3ee02081 chore: cleanup
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2026-02-07 09:00:12 +01:00
Ettore Di Giacinto cea3b7b111 chore: drop LocalOperator actions, we will use MCP for this (#407)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2026-02-06 21:51:54 +01:00
Ettore Di Giacinto cbe4cd62ca fix: correct API url
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2026-02-05 22:49:18 +01:00
Ettore Di Giacinto 4f4ad5069d feat(gen-song): add song generation action (#404)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2026-02-05 19:00:50 +01:00
Ettore Di Giacinto 9f358abb54 chore(memory): open index only once
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2026-01-31 09:25:17 +01:00
Ettore Di Giacinto 16775f356a Use bleve for indexing short-term memory (#397)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2026-01-30 15:41:23 +01:00
Ettore Di Giacinto 9a33537ae0 chore: move logging to its own package so can be shared across repos (#380)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-12-19 23:05:04 +01:00
Ettore Di Giacinto 558fa396a8 feat: add audio support (#316)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-10-07 12:00:33 +02:00
Michel Weimerskirch b06522d1ec Add custom name, description, and payload description to WebhookAction (#311) 2025-10-03 23:05:14 +02:00
Michel Weimerskirch d456315f19 Add webhook action for HTTP request integration (#309)
* Add Webhook action handling

Integrates a new "webhook" action, enabling configurable HTTP requests with customizable methods, content types, and payloads through runtime parameters.

* Enhance Webhook action documentation and runtime handling

Improves comments and function-level documentation for the Webhook action, clarifying its configuration, runtime parameter handling, and operational behavior. Adds detailed explanations for methods, payload templates, and HTTP request construction.
2025-10-03 09:14:08 +02:00
mudler 00460b1538 fix: do not change name field
Signed-off-by: mudler <mudler@localai.io>
2025-09-13 16:33:08 +02:00
Ettore Di Giacinto 98e62edf12 feat(actions): add action to control pikvm (#294)
Signed-off-by: mudler <mudler@localai.io>
2025-09-13 16:28:42 +02:00
Ettore Di Giacinto 592969f976 feat(actions/dynamicprompt): allow to pass-by a configuration (#293)
This is useful mainly to pass-by from the web interface a generic string
that can be later re-used in the custom actions or dynamic prompt during
Init().

The Signature of the custom actions and prompts around Init has changed,
and now is Init(string), this is on the custom action duty to decide if
the string is e.g. a JSON, or a comma separated list, etc.

Signed-off-by: mudler <mudler@localai.io>
2025-09-13 15:50:25 +02:00
Ettore Di Giacinto 8d2eafbc35 chore: propagate env (#292)
Signed-off-by: mudler <mudler@localai.io>
2025-09-11 18:16:51 +02:00
Ettore Di Giacinto 848f688ae9 Scan for dynamic prompts in custom action folder (#291)
Signed-off-by: mudler <mudler@localai.io>
2025-09-10 23:45:46 +02:00
Ettore Di Giacinto 684ce43eb8 feat: preload custom actions from dir (#290)
* feat: preload custom actions from dir

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

* fix(custom dir): allow to override name and description, strip package from code

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

---------

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Signed-off-by: mudler <mudler@localai.io>
2025-09-09 18:05:15 +02:00
Ettore Di Giacinto 7fe3ed2169 feat(custom actions): allow to specify a dir with all custom actions (#277)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-08-25 09:33:21 +02:00
Ettore Di Giacinto 4d875e9e2a fix: gen memory actions only in DynamicPromptMemory (#259)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-08-07 18:55:29 +02:00
Ettore Di Giacinto 8487459d90 feat: multimodal action and dynamic prompts results (#257)
* feat(actions): allow actions to return images

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

* feat(prompts): allow to have images in dynamic prompts

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

* chore: change signature of dynamic prompts to allow to return base64 images

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

* chore: fixups

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

---------

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-08-05 18:43:50 +02:00
Ettore Di Giacinto be336adf02 feat(dynamic-prompts): add memory tool to dynamic prompt (#256)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-08-04 16:58:11 +02:00
Ettore Di Giacinto 4cf52ec698 feat(memories): add action to handle simple memory as flat files (#252)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-07-24 23:17:05 +02:00
Ettore Di Giacinto b0a43b0cb7 fix(telegram): correctly process group chat messages
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-07-22 22:25:13 +02:00
Ettore Di Giacinto 9500ec7af0 feat(mutlimodal): do parse all images shared in the conversation (#221)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-06-30 22:56:30 +02:00
Ettore Di Giacinto 9160ca598e fix(multimodal): fix multimodal input in telegram and slack (#219)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-06-24 23:00:45 +02:00
Ettore Di Giacinto 37aa532cc2 feat(telegram): Add support for groups (#183)
Add support for groups

Signed-off-by: mudler <mudler@localai.io>
2025-05-26 09:40:41 +02:00
Ettore Di Giacinto 9a90153dc6 feat(reminders): add reminder system to perform long-term goals in the background (#176)
* feat(reminders): add self-ability to set reminders

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

* feat(reminders): surface reminders result to the user as new conversations

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

* Fixups

* Subscribe all connectors to agents new messages

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

* Set reminders in the list

* fix(telegram): do not always auth

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

* Small fixups

* Improve UX

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

---------

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-05-24 22:15:33 +02:00
Ettore Di Giacinto 4a0d3a7a94 feat(sshbox): add sshbox to run commands (#161)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-05-17 23:34:51 +02:00
AKSizov a3977c2b1c fix: errored ssh output (#158)
fix: explain ssh output
2025-05-16 00:08:50 +02:00
Richard Palethorpe 8849a9ba1b fix(matrix): Limit msg history to stop responses to old msgs
Signed-off-by: Richard Palethorpe <io@richiejp.com>
2025-05-15 15:35:54 +01:00
AKSizov 2b4b2c513c feat: email connector (#157)
* new: add email connection shell

* new: add secure & insecure smtp

* new: read email

* new: more email logic

* feat: automatically reply

* feat: poc email response

* feat: introduce email concurrency and reply functionality

* feat: html replies

* refactor: make email.go legible

* feat: add email connection docs

* fix: startup error handling and dial error
2025-05-15 16:35:39 +02:00
Richard Palethorpe 1a53d24890 fix(matrix): Stop Sync Go routine and correct logs (#154)
Signed-off-by: Richard Palethorpe <io@richiejp.com>
2025-05-13 13:10:23 +02:00
Ettore Di Giacinto c23e655f44 feat(agent): shared state, allow to track conversations globally (#148)
* feat(agent): shared state, allow to track conversations globally

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

* Cleanup

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

* track conversations initiated by the bot

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

---------

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-05-11 22:23:01 +02:00
Ettore Di Giacinto 2b07dd79ec feat(telegram): add action to send telegram message (#147)
Signed-off-by: mudler <mudler@localai.io>
2025-05-11 19:17:20 +02:00
Ettore Di Giacinto 864bf8b94c fix(telegram): split long messages (#146)
Signed-off-by: mudler <mudler@localai.io>
2025-05-11 19:01:25 +02:00
Ettore Di Giacinto e431bc234b feat(evaluation): add deep evaluation mechanism (#145)
* feat(evaluation): add deep evaluation mechanism

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

* consider whole conversation when evaluating

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

---------

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Signed-off-by: mudler <mudler@localai.io>
2025-05-11 18:31:04 +02:00
Ettore Di Giacinto 289edb67a6 feat(call_agents): allow to specify whitelist and blacklist agents (#144)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-05-10 22:27:34 +02:00
Ettore Di Giacinto fb1ab70650 fix(telegram): upload of images (#143)
* fix(telegram): upload of images

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

* Parse markdown

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

---------

Signed-off-by: mudler <mudler@localai.io>
2025-05-07 20:10:51 +02:00
Ettore Di Giacinto 94f4d350c9 feat(telegram): handle correctly generated multimedia and links (#141)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-05-06 22:38:33 +02:00
Ettore Di Giacinto cc3fdecfc9 feat(telegram): show thought process (#140)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-05-06 22:24:11 +02:00
Richard Palethorpe f2c3b9dbdb feat(filters): Add configurable filters for incoming jobs
Signed-off-by: Richard Palethorpe <io@richiejp.com>
2025-05-06 09:08:14 +01:00
Ettore Di Giacinto 5e5224da25 fix(github): skip binary files
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-05-02 22:34:37 +02:00
Ettore Di Giacinto c529f880d3 feat(github): add action to list and search files in a repository (#110)
Signed-off-by: mudler <mudler@localai.io>
2025-05-02 14:49:01 +02:00
Ettore Di Giacinto 18eb40ec14 fix(actions): make sure to initialize a config (#109)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-05-01 22:24:11 +02:00
Ettore Di Giacinto 904765591c fix(github/issue-editor): also update the title 2025-05-01 22:15:19 +02:00
Ettore Di Giacinto 62ce629bf1 feat(github): add issue editor (#106)
* feat(github): add issue editor

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

* Small changes

---------

Signed-off-by: mudler <mudler@localai.io>
2025-05-01 22:07:41 +02:00
Ettore Di Giacinto 5981109730 feat(github): add option to create PR from forks (#105)
* feat(github): add option to create PR from forks

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

* extend delays in waiting forking from github

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

---------

Signed-off-by: mudler <mudler@localai.io>
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-05-01 21:59:28 +02:00