iobroker.pi-agent 0.0.0-stage → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +133 -2
- package/admin/i18n/de.json +19 -0
- package/admin/i18n/en.json +19 -0
- package/admin/i18n/es.json +19 -0
- package/admin/i18n/fr.json +19 -0
- package/admin/i18n/it.json +19 -0
- package/admin/i18n/nl.json +19 -0
- package/admin/i18n/pl.json +19 -0
- package/admin/i18n/pt.json +19 -0
- package/admin/i18n/ru.json +19 -0
- package/admin/i18n/uk.json +19 -0
- package/admin/i18n/zh-cn.json +19 -0
- package/admin/jsonConfig.json +133 -0
- package/admin/pi-agent.png +0 -0
- package/io-package.json +167 -0
- package/lib/adapter-config.d.ts +18 -0
- package/lib/guard.js +54 -0
- package/lib/object-names.json +80 -0
- package/lib/objects.js +51 -0
- package/lib/providers.js +62 -0
- package/lib/telegram.js +182 -0
- package/lib/tools.js +290 -0
- package/main.js +467 -0
- package/package.json +68 -5
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Alex <sadam6752@gmail.com>
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,3 +1,134 @@
|
|
|
1
|
-
|
|
1
|
+

|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
# ioBroker.pi-agent
|
|
4
|
+
|
|
5
|
+
[](https://www.npmjs.com/package/iobroker.pi-agent)
|
|
6
|
+
[](https://www.npmjs.com/package/iobroker.pi-agent)
|
|
7
|
+
[](LICENSE)
|
|
8
|
+
|
|
9
|
+
[](https://nodei.co/npm/iobroker.pi-agent/)
|
|
10
|
+
|
|
11
|
+

|
|
12
|
+
|
|
13
|
+
A language model agent for ioBroker that survives restarts and crashes. It is built on
|
|
14
|
+
[Pi Durable](https://earendil.com/posts/pi-durable/): every model call and tool call is stored as a checkpoint
|
|
15
|
+
before it runs, so an interrupted request continues after the adapter starts again instead of starting over.
|
|
16
|
+
|
|
17
|
+
## What it does
|
|
18
|
+
|
|
19
|
+
- Reads and searches states through the tools `search_objects`, `get_state` (one id or a `*` pattern) and
|
|
20
|
+
`list_instances`. These tools may be repeated safely.
|
|
21
|
+
- `list_instances` starts from the instance objects and reads `alive` and `connected` of each instance by its exact id.
|
|
22
|
+
A `*` pattern only finds states that have an object, so a stale `alive` value of an instance whose state object is
|
|
23
|
+
gone is missing from a pattern query but not from `list_instances`.
|
|
24
|
+
- Logs every tool call as one line: `Tool <name> <arguments> -> <outcome>` (blocked writes as a warning).
|
|
25
|
+
- Writes states through `set_state`. This tool is **never repeated** after an interruption: the model is told that the
|
|
26
|
+
call was interrupted and checks the actual value first. A light cannot be switched twice by a restart.
|
|
27
|
+
- Writes only to states on the **write allowlist**. Everything else is blocked before it runs.
|
|
28
|
+
- Answers each request exactly once. The request id is derived from the triggering state, so a repeated trigger finds the
|
|
29
|
+
original request.
|
|
30
|
+
|
|
31
|
+
## Requirements
|
|
32
|
+
|
|
33
|
+
- Node.js 22.19.0 or newer, js-controller 6.0.11 or newer, admin 7.6.20 or newer.
|
|
34
|
+
- An API key of the chosen provider: Anthropic, OpenAI or DeepSeek.
|
|
35
|
+
- The adapter runs as its own process (not in compact mode). It keeps long-running model requests and a conversation
|
|
36
|
+
store open, and its dependencies are large; running it apart keeps a fault or a memory peak away from other adapters.
|
|
37
|
+
The API key is kept in memory of this instance only and is never put into the process environment.
|
|
38
|
+
|
|
39
|
+
## Configuration
|
|
40
|
+
|
|
41
|
+
| Setting | Meaning |
|
|
42
|
+
| --------------- | -------------------------------------------------------------------------------- |
|
|
43
|
+
| Provider, Model | The language model. Empty model: the default of the provider (`claude-sonnet-5-5`, `gpt-6-sol`, `deepseek-flash`). |
|
|
44
|
+
| API key | Stored encrypted. |
|
|
45
|
+
| Dry run | On by default. Write requests are logged and answered, but not executed. |
|
|
46
|
+
| Write allowlist | One regular expression per line. Empty means the agent cannot write anything. |
|
|
47
|
+
| Instructions | Text appended to the system prompt, for example room names and house rules. |
|
|
48
|
+
| Telegram instance | A `telegram` instance whose bot talks to the agent. Empty: Telegram is not used. |
|
|
49
|
+
| Prefix | Only messages that start with it go to the agent, e.g. `/ai`. Empty: every message of an allowed user. |
|
|
50
|
+
| Allowed Telegram users | Telegram user ID, user name or first name (as in the telegram adapter), one per line. Messages from anyone else are ignored. |
|
|
51
|
+
|
|
52
|
+
Example allowlist:
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
^hm-rpc\.0\.Wohnzimmer\.
|
|
56
|
+
^javascript\.0\.agent\.
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Start with dry run on, watch the log, and only then switch it off.
|
|
60
|
+
|
|
61
|
+
## Usage
|
|
62
|
+
|
|
63
|
+
Write a text to `pi-agent.0.chat.input`. The answer appears in `pi-agent.0.chat.answer`. From a script:
|
|
64
|
+
|
|
65
|
+
```js
|
|
66
|
+
sendTo('pi-agent.0', 'ask', { text: 'Is the living room light on?' }, result => log(result.answer));
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
The answer of a `sendTo` request comes back only through the callback (`result.answer`, or `result.error`); it is not
|
|
70
|
+
written to `chat.answer`.
|
|
71
|
+
|
|
72
|
+
`pi-agent.0.chat.pending` lists the requests that were accepted but not answered yet. If the adapter stops in the
|
|
73
|
+
middle, they continue on the next start. The answer of a request from `chat.input` or `sendTo` is then written to
|
|
74
|
+
`chat.answer` (the `sendTo` caller is no longer waiting), the answer of a Telegram request goes to its chat. A
|
|
75
|
+
`sendTo` caller that was interrupted gets `{ error: "Interrupted by shutdown; the request continues after the next start" }`.
|
|
76
|
+
|
|
77
|
+
### Telegram
|
|
78
|
+
|
|
79
|
+
Select a `telegram` instance, enter the allowed users and, if the bot also serves other scripts, a prefix such as
|
|
80
|
+
`/ai`. Then write to the bot: `/ai Is the living room light on?`
|
|
81
|
+
|
|
82
|
+
- Every chat has its own conversation with its own history; `pi-agent.0.telegram.chats` maps chat ids to them.
|
|
83
|
+
- Messages from users who are not on the list are ignored and logged as a warning. An empty list allows nobody.
|
|
84
|
+
- A first name such as `Alex` counts only for users the telegram adapter knows (authenticated there), because anybody
|
|
85
|
+
can choose any first name in Telegram. Two known users with the same first name are both allowed; use the user name
|
|
86
|
+
or the ID to tell them apart.
|
|
87
|
+
- A message that the telegram adapter delivers twice is answered once.
|
|
88
|
+
- Long answers are split into several messages.
|
|
89
|
+
|
|
90
|
+
### DeepSeek
|
|
91
|
+
|
|
92
|
+
Select **DeepSeek** as provider and enter a key from the DeepSeek platform. Available models: `deepseek-flash`
|
|
93
|
+
(default, fast) and `deepseek-v4-pro`. Requests go to `https://api.deepseek.com`.
|
|
94
|
+
|
|
95
|
+
## Security
|
|
96
|
+
|
|
97
|
+
- The model decides which tools to call. The allowlist and the dry run are your protection, not the prompt.
|
|
98
|
+
- The text of your requests and the values the agent reads are sent to the provider. Do not give it access to states
|
|
99
|
+
that contain secrets.
|
|
100
|
+
- The conversation is stored unencrypted in the instance data directory.
|
|
101
|
+
|
|
102
|
+
## Changelog
|
|
103
|
+
|
|
104
|
+
### 0.0.2 (2026-10-25)
|
|
105
|
+
|
|
106
|
+
- Telegram answers keep their formatting: Markdown of the model is sent as Telegram HTML (bold, italic, code, links;
|
|
107
|
+
tables as a monospace block), and Telegram chats are asked for short answers without tables
|
|
108
|
+
- Released through the CI workflow with npm provenance (trusted publishing)
|
|
109
|
+
|
|
110
|
+
### 0.0.1 (2026-10-25)
|
|
111
|
+
|
|
112
|
+
- Initial version: durable agent with the tools `search_objects`, `get_state`, `list_instances` and `set_state`
|
|
113
|
+
- Write allowlist and dry run; an interrupted write is never repeated; requests continue after a restart
|
|
114
|
+
- Telegram: talk to the agent through a telegram instance, with allowed users, prefix and one conversation per chat
|
|
115
|
+
- Providers: Anthropic, OpenAI, DeepSeek; every tool call is logged
|
|
116
|
+
|
|
117
|
+
## License
|
|
118
|
+
|
|
119
|
+
MIT License
|
|
120
|
+
|
|
121
|
+
Copyright (c) 2026 Alex <sadam6752@gmail.com>
|
|
122
|
+
|
|
123
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
|
|
124
|
+
documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights
|
|
125
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to
|
|
126
|
+
whom the Software is furnished to do so, subject to the following conditions:
|
|
127
|
+
|
|
128
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the
|
|
129
|
+
Software.
|
|
130
|
+
|
|
131
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
|
|
132
|
+
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
133
|
+
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
|
134
|
+
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"Provider": "Anbieter",
|
|
3
|
+
"Model": "Modell",
|
|
4
|
+
"API key": "API-Schlüssel",
|
|
5
|
+
"Dry run": "Probelauf",
|
|
6
|
+
"Log write requests instead of executing them": "Schreibanfragen nur protokollieren, nicht ausführen",
|
|
7
|
+
"Leave empty to use the default model of the provider": "Leer lassen, um das Standardmodell des Anbieters zu verwenden",
|
|
8
|
+
"Write allowlist": "Schreib-Freigabeliste",
|
|
9
|
+
"One regular expression per line. The agent may only write states whose ID matches one of them.": "Ein regulärer Ausdruck pro Zeile. Der Agent darf nur Datenpunkte schreiben, deren ID zu einem davon passt.",
|
|
10
|
+
"Instructions": "Anweisungen",
|
|
11
|
+
"Additional instructions for the agent": "Zusätzliche Anweisungen für den Agenten",
|
|
12
|
+
"Telegram": "Telegram",
|
|
13
|
+
"Telegram instance": "Telegram-Instanz",
|
|
14
|
+
"Empty: the agent does not use Telegram": "Leer: Der Agent nutzt Telegram nicht",
|
|
15
|
+
"Prefix": "Präfix",
|
|
16
|
+
"Only messages that start with this text go to the agent, e.g. /ai. Empty: every message of an allowed user": "Nur Nachrichten, die mit diesem Text beginnen, gehen an den Agenten, z. B. /ai. Leer: jede Nachricht eines erlaubten Nutzers",
|
|
17
|
+
"Allowed Telegram users": "Erlaubte Telegram-Nutzer",
|
|
18
|
+
"Telegram user ID, user name or first name (as in the telegram adapter), one per line. Messages from anyone else are ignored.": "Telegram-Nutzer-ID, Benutzername oder Vorname (wie im Telegram-Adapter), einer pro Zeile. Nachrichten von allen anderen werden ignoriert."
|
|
19
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"Provider": "Provider",
|
|
3
|
+
"Model": "Model",
|
|
4
|
+
"API key": "API key",
|
|
5
|
+
"Dry run": "Dry run",
|
|
6
|
+
"Log write requests instead of executing them": "Log write requests instead of executing them",
|
|
7
|
+
"Leave empty to use the default model of the provider": "Leave empty to use the default model of the provider",
|
|
8
|
+
"Write allowlist": "Write allowlist",
|
|
9
|
+
"One regular expression per line. The agent may only write states whose ID matches one of them.": "One regular expression per line. The agent may only write states whose ID matches one of them.",
|
|
10
|
+
"Instructions": "Instructions",
|
|
11
|
+
"Additional instructions for the agent": "Additional instructions for the agent",
|
|
12
|
+
"Telegram": "Telegram",
|
|
13
|
+
"Telegram instance": "Telegram instance",
|
|
14
|
+
"Empty: the agent does not use Telegram": "Empty: the agent does not use Telegram",
|
|
15
|
+
"Prefix": "Prefix",
|
|
16
|
+
"Only messages that start with this text go to the agent, e.g. /ai. Empty: every message of an allowed user": "Only messages that start with this text go to the agent, e.g. /ai. Empty: every message of an allowed user",
|
|
17
|
+
"Allowed Telegram users": "Allowed Telegram users",
|
|
18
|
+
"Telegram user ID, user name or first name (as in the telegram adapter), one per line. Messages from anyone else are ignored.": "Telegram user ID, user name or first name (as in the telegram adapter), one per line. Messages from anyone else are ignored."
|
|
19
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"Provider": "Proveedor",
|
|
3
|
+
"Model": "Modelo",
|
|
4
|
+
"API key": "Clave de API",
|
|
5
|
+
"Dry run": "Ejecución de prueba",
|
|
6
|
+
"Log write requests instead of executing them": "Registrar las solicitudes de escritura en lugar de ejecutarlas",
|
|
7
|
+
"Leave empty to use the default model of the provider": "Dejar vacío para usar el modelo predeterminado del proveedor",
|
|
8
|
+
"Write allowlist": "Lista de escritura permitida",
|
|
9
|
+
"One regular expression per line. The agent may only write states whose ID matches one of them.": "Una expresión regular por línea. El agente solo puede escribir estados cuyo ID coincida con alguna de ellas.",
|
|
10
|
+
"Instructions": "Instrucciones",
|
|
11
|
+
"Additional instructions for the agent": "Instrucciones adicionales para el agente",
|
|
12
|
+
"Telegram": "Telegram",
|
|
13
|
+
"Telegram instance": "Instancia de Telegram",
|
|
14
|
+
"Empty: the agent does not use Telegram": "Vacío: el agente no usa Telegram",
|
|
15
|
+
"Prefix": "Prefijo",
|
|
16
|
+
"Only messages that start with this text go to the agent, e.g. /ai. Empty: every message of an allowed user": "Solo los mensajes que empiezan con este texto van al agente, p. ej. /ai. Vacío: todos los mensajes de un usuario permitido",
|
|
17
|
+
"Allowed Telegram users": "Usuarios de Telegram permitidos",
|
|
18
|
+
"Telegram user ID, user name or first name (as in the telegram adapter), one per line. Messages from anyone else are ignored.": "ID, nombre de usuario o nombre de pila de Telegram (como en el adaptador telegram), uno por línea. Los mensajes de cualquier otra persona se ignoran."
|
|
19
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"Provider": "Fournisseur",
|
|
3
|
+
"Model": "Modèle",
|
|
4
|
+
"API key": "Clé API",
|
|
5
|
+
"Dry run": "Essai à blanc",
|
|
6
|
+
"Log write requests instead of executing them": "Journaliser les demandes d'écriture au lieu de les exécuter",
|
|
7
|
+
"Leave empty to use the default model of the provider": "Laisser vide pour utiliser le modèle par défaut du fournisseur",
|
|
8
|
+
"Write allowlist": "Liste d'écriture autorisée",
|
|
9
|
+
"One regular expression per line. The agent may only write states whose ID matches one of them.": "Une expression régulière par ligne. L'agent ne peut écrire que les états dont l'ID correspond à l'une d'elles.",
|
|
10
|
+
"Instructions": "Consignes",
|
|
11
|
+
"Additional instructions for the agent": "Consignes supplémentaires pour l'agent",
|
|
12
|
+
"Telegram": "Telegram",
|
|
13
|
+
"Telegram instance": "Instance Telegram",
|
|
14
|
+
"Empty: the agent does not use Telegram": "Vide : l'agent n'utilise pas Telegram",
|
|
15
|
+
"Prefix": "Préfixe",
|
|
16
|
+
"Only messages that start with this text go to the agent, e.g. /ai. Empty: every message of an allowed user": "Seuls les messages commençant par ce texte vont à l'agent, p. ex. /ai. Vide : tous les messages d'un utilisateur autorisé",
|
|
17
|
+
"Allowed Telegram users": "Utilisateurs Telegram autorisés",
|
|
18
|
+
"Telegram user ID, user name or first name (as in the telegram adapter), one per line. Messages from anyone else are ignored.": "ID, nom d'utilisateur ou prénom Telegram (comme dans l'adaptateur telegram), un par ligne. Les messages de toute autre personne sont ignorés."
|
|
19
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"Provider": "Fornitore",
|
|
3
|
+
"Model": "Modello",
|
|
4
|
+
"API key": "Chiave API",
|
|
5
|
+
"Dry run": "Prova a secco",
|
|
6
|
+
"Log write requests instead of executing them": "Registra le richieste di scrittura invece di eseguirle",
|
|
7
|
+
"Leave empty to use the default model of the provider": "Lasciare vuoto per usare il modello predefinito del fornitore",
|
|
8
|
+
"Write allowlist": "Elenco di scrittura consentita",
|
|
9
|
+
"One regular expression per line. The agent may only write states whose ID matches one of them.": "Un'espressione regolare per riga. L'agente può scrivere solo gli stati il cui ID corrisponde a una di esse.",
|
|
10
|
+
"Instructions": "Istruzioni",
|
|
11
|
+
"Additional instructions for the agent": "Istruzioni aggiuntive per l'agente",
|
|
12
|
+
"Telegram": "Telegram",
|
|
13
|
+
"Telegram instance": "Istanza Telegram",
|
|
14
|
+
"Empty: the agent does not use Telegram": "Vuoto: l'agente non usa Telegram",
|
|
15
|
+
"Prefix": "Prefisso",
|
|
16
|
+
"Only messages that start with this text go to the agent, e.g. /ai. Empty: every message of an allowed user": "Solo i messaggi che iniziano con questo testo vanno all'agente, ad es. /ai. Vuoto: ogni messaggio di un utente consentito",
|
|
17
|
+
"Allowed Telegram users": "Utenti Telegram consentiti",
|
|
18
|
+
"Telegram user ID, user name or first name (as in the telegram adapter), one per line. Messages from anyone else are ignored.": "ID, nome utente o nome Telegram (come nell'adattatore telegram), uno per riga. I messaggi di chiunque altro vengono ignorati."
|
|
19
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"Provider": "Aanbieder",
|
|
3
|
+
"Model": "Taalmodel",
|
|
4
|
+
"API key": "API-sleutel",
|
|
5
|
+
"Dry run": "Proefrun",
|
|
6
|
+
"Log write requests instead of executing them": "Schrijfverzoeken alleen loggen en niet uitvoeren",
|
|
7
|
+
"Leave empty to use the default model of the provider": "Leeg laten om het standaardmodel van de aanbieder te gebruiken",
|
|
8
|
+
"Write allowlist": "Toegestane schrijflijst",
|
|
9
|
+
"One regular expression per line. The agent may only write states whose ID matches one of them.": "Eén reguliere expressie per regel. De agent mag alleen states schrijven waarvan de ID overeenkomt met een ervan.",
|
|
10
|
+
"Instructions": "Instructies",
|
|
11
|
+
"Additional instructions for the agent": "Aanvullende instructies voor de agent",
|
|
12
|
+
"Telegram": "Telegram",
|
|
13
|
+
"Telegram instance": "Telegram-instantie",
|
|
14
|
+
"Empty: the agent does not use Telegram": "Leeg: de agent gebruikt Telegram niet",
|
|
15
|
+
"Prefix": "Voorvoegsel",
|
|
16
|
+
"Only messages that start with this text go to the agent, e.g. /ai. Empty: every message of an allowed user": "Alleen berichten die met deze tekst beginnen gaan naar de agent, bijv. /ai. Leeg: elk bericht van een toegestane gebruiker",
|
|
17
|
+
"Allowed Telegram users": "Toegestane Telegram-gebruikers",
|
|
18
|
+
"Telegram user ID, user name or first name (as in the telegram adapter), one per line. Messages from anyone else are ignored.": "Telegram-gebruikers-ID, gebruikersnaam of voornaam (zoals in de telegram-adapter), één per regel. Berichten van anderen worden genegeerd."
|
|
19
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"Provider": "Dostawca",
|
|
3
|
+
"Model": "Model językowy",
|
|
4
|
+
"API key": "Klucz API",
|
|
5
|
+
"Dry run": "Próba bez zapisu",
|
|
6
|
+
"Log write requests instead of executing them": "Zapisuj żądania zapisu w dzienniku zamiast je wykonywać",
|
|
7
|
+
"Leave empty to use the default model of the provider": "Pozostaw puste, aby użyć domyślnego modelu dostawcy",
|
|
8
|
+
"Write allowlist": "Lista dozwolonych zapisów",
|
|
9
|
+
"One regular expression per line. The agent may only write states whose ID matches one of them.": "Jedno wyrażenie regularne w wierszu. Agent może zapisywać tylko stany, których ID pasuje do jednego z nich.",
|
|
10
|
+
"Instructions": "Instrukcje",
|
|
11
|
+
"Additional instructions for the agent": "Dodatkowe instrukcje dla agenta",
|
|
12
|
+
"Telegram": "Telegram",
|
|
13
|
+
"Telegram instance": "Instancja Telegram",
|
|
14
|
+
"Empty: the agent does not use Telegram": "Puste: agent nie korzysta z Telegrama",
|
|
15
|
+
"Prefix": "Prefiks",
|
|
16
|
+
"Only messages that start with this text go to the agent, e.g. /ai. Empty: every message of an allowed user": "Do agenta trafiają tylko wiadomości zaczynające się od tego tekstu, np. /ai. Puste: każda wiadomość dozwolonego użytkownika",
|
|
17
|
+
"Allowed Telegram users": "Dozwoleni użytkownicy Telegrama",
|
|
18
|
+
"Telegram user ID, user name or first name (as in the telegram adapter), one per line. Messages from anyone else are ignored.": "ID, nazwa użytkownika lub imię w Telegramie (jak w adapterze telegram), jedno w wierszu. Wiadomości od innych osób są ignorowane."
|
|
19
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"Provider": "Provedor",
|
|
3
|
+
"Model": "Modelo",
|
|
4
|
+
"API key": "Chave de API",
|
|
5
|
+
"Dry run": "Execução de teste",
|
|
6
|
+
"Log write requests instead of executing them": "Registar os pedidos de escrita em vez de os executar",
|
|
7
|
+
"Leave empty to use the default model of the provider": "Deixe vazio para usar o modelo padrão do provedor",
|
|
8
|
+
"Write allowlist": "Lista de escrita permitida",
|
|
9
|
+
"One regular expression per line. The agent may only write states whose ID matches one of them.": "Uma expressão regular por linha. O agente só pode escrever estados cujo ID corresponda a uma delas.",
|
|
10
|
+
"Instructions": "Instruções",
|
|
11
|
+
"Additional instructions for the agent": "Instruções adicionais para o agente",
|
|
12
|
+
"Telegram": "Telegram",
|
|
13
|
+
"Telegram instance": "Instância do Telegram",
|
|
14
|
+
"Empty: the agent does not use Telegram": "Vazio: o agente não usa o Telegram",
|
|
15
|
+
"Prefix": "Prefixo",
|
|
16
|
+
"Only messages that start with this text go to the agent, e.g. /ai. Empty: every message of an allowed user": "Apenas mensagens que começam com este texto vão para o agente, p. ex. /ai. Vazio: todas as mensagens de um utilizador permitido",
|
|
17
|
+
"Allowed Telegram users": "Utilizadores do Telegram permitidos",
|
|
18
|
+
"Telegram user ID, user name or first name (as in the telegram adapter), one per line. Messages from anyone else are ignored.": "ID, nome de utilizador ou primeiro nome do Telegram (como no adaptador telegram), um por linha. As mensagens de qualquer outra pessoa são ignoradas."
|
|
19
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"Provider": "Провайдер",
|
|
3
|
+
"Model": "Модель",
|
|
4
|
+
"API key": "API-ключ",
|
|
5
|
+
"Dry run": "Пробный запуск",
|
|
6
|
+
"Log write requests instead of executing them": "Только записывать запросы на запись в журнал, не выполняя их",
|
|
7
|
+
"Leave empty to use the default model of the provider": "Оставьте пустым, чтобы использовать модель провайдера по умолчанию",
|
|
8
|
+
"Write allowlist": "Список разрешённых записей",
|
|
9
|
+
"One regular expression per line. The agent may only write states whose ID matches one of them.": "Одно регулярное выражение в строке. Агент может записывать только состояния, ID которых соответствует одному из них.",
|
|
10
|
+
"Instructions": "Инструкции",
|
|
11
|
+
"Additional instructions for the agent": "Дополнительные инструкции для агента",
|
|
12
|
+
"Telegram": "Telegram",
|
|
13
|
+
"Telegram instance": "Инстанс Telegram",
|
|
14
|
+
"Empty: the agent does not use Telegram": "Пусто: агент не использует Telegram",
|
|
15
|
+
"Prefix": "Префикс",
|
|
16
|
+
"Only messages that start with this text go to the agent, e.g. /ai. Empty: every message of an allowed user": "Агенту передаются только сообщения, начинающиеся с этого текста, например /ai. Пусто: все сообщения разрешённого пользователя",
|
|
17
|
+
"Allowed Telegram users": "Разрешённые пользователи Telegram",
|
|
18
|
+
"Telegram user ID, user name or first name (as in the telegram adapter), one per line. Messages from anyone else are ignored.": "ID, имя пользователя или имя Telegram (как в адаптере telegram), по одному в строке. Сообщения всех остальных игнорируются."
|
|
19
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"Provider": "Провайдер",
|
|
3
|
+
"Model": "Модель",
|
|
4
|
+
"API key": "API-ключ",
|
|
5
|
+
"Dry run": "Пробний запуск",
|
|
6
|
+
"Log write requests instead of executing them": "Лише записувати запити на запис у журнал, не виконуючи їх",
|
|
7
|
+
"Leave empty to use the default model of the provider": "Залиште порожнім, щоб використовувати модель провайдера за замовчуванням",
|
|
8
|
+
"Write allowlist": "Список дозволених записів",
|
|
9
|
+
"One regular expression per line. The agent may only write states whose ID matches one of them.": "Один регулярний вираз у рядку. Агент може записувати лише стани, ID яких відповідає одному з них.",
|
|
10
|
+
"Instructions": "Інструкції",
|
|
11
|
+
"Additional instructions for the agent": "Додаткові інструкції для агента",
|
|
12
|
+
"Telegram": "Telegram",
|
|
13
|
+
"Telegram instance": "Інстанс Telegram",
|
|
14
|
+
"Empty: the agent does not use Telegram": "Порожньо: агент не використовує Telegram",
|
|
15
|
+
"Prefix": "Префікс",
|
|
16
|
+
"Only messages that start with this text go to the agent, e.g. /ai. Empty: every message of an allowed user": "Агенту передаються лише повідомлення, що починаються з цього тексту, напр. /ai. Порожньо: усі повідомлення дозволеного користувача",
|
|
17
|
+
"Allowed Telegram users": "Дозволені користувачі Telegram",
|
|
18
|
+
"Telegram user ID, user name or first name (as in the telegram adapter), one per line. Messages from anyone else are ignored.": "ID, імʼя користувача або імʼя в Telegram (як в адаптері telegram), по одному в рядку. Повідомлення всіх інших ігноруються."
|
|
19
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"Provider": "提供商",
|
|
3
|
+
"Model": "模型",
|
|
4
|
+
"API key": "API 密钥",
|
|
5
|
+
"Dry run": "试运行",
|
|
6
|
+
"Log write requests instead of executing them": "仅记录写入请求而不执行",
|
|
7
|
+
"Leave empty to use the default model of the provider": "留空以使用提供商的默认模型",
|
|
8
|
+
"Write allowlist": "写入白名单",
|
|
9
|
+
"One regular expression per line. The agent may only write states whose ID matches one of them.": "每行一个正则表达式。代理只能写入 ID 与其中之一匹配的状态。",
|
|
10
|
+
"Instructions": "指令",
|
|
11
|
+
"Additional instructions for the agent": "给代理的附加指令",
|
|
12
|
+
"Telegram": "Telegram",
|
|
13
|
+
"Telegram instance": "Telegram 实例",
|
|
14
|
+
"Empty: the agent does not use Telegram": "留空:代理不使用 Telegram",
|
|
15
|
+
"Prefix": "前缀",
|
|
16
|
+
"Only messages that start with this text go to the agent, e.g. /ai. Empty: every message of an allowed user": "只有以此文本开头的消息才会发给代理,例如 /ai。留空:允许用户的所有消息",
|
|
17
|
+
"Allowed Telegram users": "允许的 Telegram 用户",
|
|
18
|
+
"Telegram user ID, user name or first name (as in the telegram adapter), one per line. Messages from anyone else are ignored.": "Telegram 用户 ID、用户名或名字(与 telegram 适配器中相同),每行一个。其他人的消息将被忽略。"
|
|
19
|
+
}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
{
|
|
2
|
+
"i18n": true,
|
|
3
|
+
"type": "panel",
|
|
4
|
+
"items": {
|
|
5
|
+
"provider": {
|
|
6
|
+
"type": "select",
|
|
7
|
+
"label": "Provider",
|
|
8
|
+
"options": [
|
|
9
|
+
{
|
|
10
|
+
"label": "Anthropic",
|
|
11
|
+
"value": "anthropic"
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"label": "OpenAI",
|
|
15
|
+
"value": "openai"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"label": "DeepSeek",
|
|
19
|
+
"value": "deepseek"
|
|
20
|
+
}
|
|
21
|
+
],
|
|
22
|
+
"xs": 12,
|
|
23
|
+
"sm": 6,
|
|
24
|
+
"md": 4,
|
|
25
|
+
"lg": 4,
|
|
26
|
+
"xl": 4
|
|
27
|
+
},
|
|
28
|
+
"modelId": {
|
|
29
|
+
"type": "text",
|
|
30
|
+
"label": "Model",
|
|
31
|
+
"xs": 12,
|
|
32
|
+
"sm": 6,
|
|
33
|
+
"md": 4,
|
|
34
|
+
"lg": 4,
|
|
35
|
+
"xl": 4,
|
|
36
|
+
"help": "Leave empty to use the default model of the provider"
|
|
37
|
+
},
|
|
38
|
+
"apiKey": {
|
|
39
|
+
"type": "password",
|
|
40
|
+
"label": "API key",
|
|
41
|
+
"repeat": false,
|
|
42
|
+
"xs": 12,
|
|
43
|
+
"sm": 12,
|
|
44
|
+
"md": 4,
|
|
45
|
+
"lg": 4,
|
|
46
|
+
"xl": 4
|
|
47
|
+
},
|
|
48
|
+
"dryRun": {
|
|
49
|
+
"type": "checkbox",
|
|
50
|
+
"label": "Dry run",
|
|
51
|
+
"help": "Log write requests instead of executing them",
|
|
52
|
+
"newLine": true,
|
|
53
|
+
"xs": 12,
|
|
54
|
+
"sm": 12,
|
|
55
|
+
"md": 12,
|
|
56
|
+
"lg": 12,
|
|
57
|
+
"xl": 12
|
|
58
|
+
},
|
|
59
|
+
"writeAllow": {
|
|
60
|
+
"type": "text",
|
|
61
|
+
"label": "Write allowlist",
|
|
62
|
+
"help": "One regular expression per line. The agent may only write states whose ID matches one of them.",
|
|
63
|
+
"minRows": 4,
|
|
64
|
+
"xs": 12,
|
|
65
|
+
"sm": 12,
|
|
66
|
+
"md": 12,
|
|
67
|
+
"lg": 12,
|
|
68
|
+
"xl": 12,
|
|
69
|
+
"maxRows": 12
|
|
70
|
+
},
|
|
71
|
+
"instructions": {
|
|
72
|
+
"type": "text",
|
|
73
|
+
"label": "Instructions",
|
|
74
|
+
"help": "Additional instructions for the agent",
|
|
75
|
+
"minRows": 3,
|
|
76
|
+
"xs": 12,
|
|
77
|
+
"sm": 12,
|
|
78
|
+
"md": 12,
|
|
79
|
+
"lg": 12,
|
|
80
|
+
"xl": 12,
|
|
81
|
+
"maxRows": 12
|
|
82
|
+
},
|
|
83
|
+
"telegramHeader": {
|
|
84
|
+
"type": "header",
|
|
85
|
+
"text": "Telegram",
|
|
86
|
+
"size": 3,
|
|
87
|
+
"newLine": true,
|
|
88
|
+
"xs": 12,
|
|
89
|
+
"sm": 12,
|
|
90
|
+
"md": 12,
|
|
91
|
+
"lg": 12,
|
|
92
|
+
"xl": 12
|
|
93
|
+
},
|
|
94
|
+
"telegramInstance": {
|
|
95
|
+
"type": "instance",
|
|
96
|
+
"adapter": "telegram",
|
|
97
|
+
"allowDeactivate": true,
|
|
98
|
+
"label": "Telegram instance",
|
|
99
|
+
"help": "Empty: the agent does not use Telegram",
|
|
100
|
+
"newLine": true,
|
|
101
|
+
"xs": 12,
|
|
102
|
+
"sm": 6,
|
|
103
|
+
"md": 4,
|
|
104
|
+
"lg": 4,
|
|
105
|
+
"xl": 4
|
|
106
|
+
},
|
|
107
|
+
"telegramPrefix": {
|
|
108
|
+
"type": "text",
|
|
109
|
+
"label": "Prefix",
|
|
110
|
+
"help": "Only messages that start with this text go to the agent, e.g. /ai. Empty: every message of an allowed user",
|
|
111
|
+
"hidden": "!data.telegramInstance",
|
|
112
|
+
"xs": 12,
|
|
113
|
+
"sm": 6,
|
|
114
|
+
"md": 4,
|
|
115
|
+
"lg": 4,
|
|
116
|
+
"xl": 4
|
|
117
|
+
},
|
|
118
|
+
"telegramUsers": {
|
|
119
|
+
"type": "text",
|
|
120
|
+
"label": "Allowed Telegram users",
|
|
121
|
+
"help": "Telegram user ID, user name or first name (as in the telegram adapter), one per line. Messages from anyone else are ignored.",
|
|
122
|
+
"minRows": 3,
|
|
123
|
+
"maxRows": 10,
|
|
124
|
+
"hidden": "!data.telegramInstance",
|
|
125
|
+
"newLine": true,
|
|
126
|
+
"xs": 12,
|
|
127
|
+
"sm": 12,
|
|
128
|
+
"md": 12,
|
|
129
|
+
"lg": 12,
|
|
130
|
+
"xl": 12
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
Binary file
|