68 Commits

Author SHA1 Message Date
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
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
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
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
Ettore Di Giacinto
087a5fbe0f feat(connectors): add support for Matrix (#82)
* feat(connectors): add support for Matrix

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

* make it functional

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

---------

Signed-off-by: mudler <mudler@localai.io>
2025-05-01 20:10:19 +02:00
Ettore Di Giacinto
5e3bc0f89b fix(discord): automatically add 'Bot' prefix to token if missing (#83)
Signed-off-by: mudler <mudler@localai.io>
2025-04-25 16:20:29 +02:00
Ettore Di Giacinto
12209ab926 feat(browseragent): post screenshot on slack (#81)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-04-24 23:17:10 +02:00
Richard Palethorpe
ce997d2425 fix: Handle state on agent restart and update observables (#75)
Keep some agent start across restarts, such as the SSE manager and
observer. This allows restarts to be shown on the state page and also
allows avatars to be kept when reconfiguring the agent.

Also observable updates can happen out of order because SSE manager has
multiple workers. For now handle this in the client.

Finally fix an issue with the IRC client to make it disconnect and
handle being assigned a different nickname by the server.

Signed-off-by: Richard Palethorpe <io@richiejp.com>
2025-04-23 15:29:06 +02:00
mudler
59ab91d7df chore: update telegram
Signed-off-by: mudler <mudler@localai.io>
2025-04-16 08:54:17 +02:00
Ettore Di Giacinto
e7111c6554 Rename 2025-04-08 22:18:32 +02:00
mudler
daa7dcd12a fix(discord): make it work
Signed-off-by: mudler <mudler@localai.io>
2025-04-02 19:40:27 +02:00
mudler
b81f34a8f8 Answer if mentioned if not specifying a default channel
Signed-off-by: mudler <mudler@localai.io>
2025-04-02 17:10:03 +02:00
Ettore Di Giacinto
e90c192063 feat(call_agents): merge metadata of results (#126)
* feat(call_agents): merge metadata of results

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

* chore: correct env typo

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

* Update services/actions/callagents.go

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* chore: add icon to thinking

---------

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-04-01 21:57:32 +02:00
Ettore Di Giacinto
f3c06b1bfb feat(api): implement stateful responses api (#122)
* feat(api): implement stateful responses api

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

* fix(tests): align client to API changes

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

---------

Signed-off-by: mudler <mudler@localai.io>
2025-04-01 18:00:37 +02:00
Ettore Di Giacinto
7b52b9c22d fix(slack): support multiple threads update (#115)
Signed-off-by: mudler <mudler@localai.io>
2025-03-30 19:20:41 +02:00
Ettore Di Giacinto
68cfdecaee Do not delete message in case of error 2025-03-28 22:11:43 +01:00
mudler
c6ce1c324f feat(slack): respond to channel only on channel mode
Signed-off-by: mudler <mudler@localai.io>
2025-03-28 17:01:24 +01:00
Richard Palethorpe
319caf8e91 chore(ui): Move some field definitions server side 2025-03-26 22:56:29 +00:00
Ettore Di Giacinto
6e888f6008 Move action context to the job
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-03-26 22:37:25 +01:00
mudler
2713349c75 debug 2025-03-26 18:26:31 +01:00
mudler
dd6739cbbf fix: consistently track user message in connector
Signed-off-by: mudler <mudler@localai.io>
2025-03-26 17:11:09 +01:00
mudler
9d6b81d9c2 fix(slack): track user messages when writing on channel
Signed-off-by: mudler <mudler@localai.io>
2025-03-26 16:59:23 +01:00
mudler
8e9b87bcb1 chore(Makefile): build react dist if missing
Signed-off-by: mudler <mudler@localai.io>
2025-03-26 16:57:46 +01:00
Ettore Di Giacinto
438a65caf6 Fixup printing large messages
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-03-25 22:59:08 +01:00
Ettore Di Giacinto
fb20bbe5bf Allow slack bots to initiate conversations
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-03-25 22:58:59 +01:00
Ettore Di Giacinto
fa12dba7c2 Better paragraph splitting
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-03-25 22:28:08 +01:00
mudler
54c8bf5f1a Split and preserve message 2025-03-25 20:10:40 +01:00
mudler
7bc44167cf Handle photos results in telegram
Signed-off-by: mudler <mudler@localai.io>
2025-03-25 19:47:34 +01:00
mudler
88933784de Handle long responses
Signed-off-by: mudler <mudler@localai.io>
2025-03-25 19:41:13 +01:00
mudler
d7b503e30c Fixups 2025-03-25 19:18:05 +01:00
mudler
e1e708ee75 Isolate functions 2025-03-25 19:06:55 +01:00
mudler
9d81eb7509 Do not lock on responses
Signed-off-by: mudler <mudler@localai.io>
2025-03-25 19:03:01 +01:00
mudler
ddc7d0e100 handle lock inside goroutine
Signed-off-by: mudler <mudler@localai.io>
2025-03-25 18:48:15 +01:00
mudler
e26b55a6a8 Add tests 2025-03-25 17:58:59 +01:00
Ettore Di Giacinto
d0cfc4c317 feat: track conversations inside connectors (#92)
* switch to observer pattern

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

* keep conversation history in telegram and slack

* generalize with conversation tracker

---------

Signed-off-by: mudler <mudler@localai.io>
2025-03-25 16:31:03 +01:00
Ettore Di Giacinto
53c1554d55 fix: do not track an internal currentConversation (#91)
It is prone to races, and does not really track all conversations for
each job

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-03-25 00:36:09 +01:00
Ettore Di Giacinto
b09749dddb try to resolve user IDs to enable bot to mention users (#89)
Signed-off-by: mudler <mudler@localai.io>
2025-03-24 22:20:25 +01:00
mudler
c8abc5f28f fix(slack): do not convert, mention user when summoned by mentions
Signed-off-by: mudler <mudler@localai.io>
2025-03-24 15:41:57 +01:00
mudler
14948c965d feat(slack): update, improve links and mentions
Signed-off-by: mudler <mudler@localai.io>
2025-03-24 11:11:31 +01:00
Ettore Di Giacinto
5f2a2eaa24 feat(slack): show thought process (#83)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-03-23 22:43:13 +01:00
mudler
75a8d63e83 Finish moving types 2025-03-23 21:57:09 +01:00
Ettore Di Giacinto
d54abc3ed0 Revert "Generate connector form based on meta-data (#62)" (#65)
This reverts commit d7cfa7f0b2.
2025-03-20 18:21:19 +01:00
Richard Palethorpe
d7cfa7f0b2 Generate connector form based on meta-data (#62)
* Ignore volumes and exe

* Export form meta-data

* use dynamic metaform for connectors

* fix populating form
2025-03-20 16:00:37 +01:00
Ettore Di Giacinto
f0bd184fbd feat: add twitter action and connector (#58)
* feat: add twitter post action

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

* feat: handle twitter post messages limits

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

* feat: add twitter connector, unify client

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

* make sure answers do not exceed twitter maximum

---------

Signed-off-by: mudler <mudler@localai.io>
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2025-03-19 22:14:32 +01:00