hobots 1.1.0 → 1.2.0
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/README.md +23 -18
- package/dist/index.cjs +25 -29
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +25 -20
- package/dist/index.d.ts +25 -20
- package/dist/index.js +25 -29
- package/dist/index.js.map +1 -1
- package/docs/README.md +12 -6
- package/docs/api-reference.md +10 -10
- package/docs/getting-started.md +15 -11
- package/docs/manager.md +3 -2
- package/docs/monitor.md +3 -2
- package/docs/protocol.md +8 -8
- package/package.json +2 -2
package/docs/getting-started.md
CHANGED
|
@@ -8,28 +8,30 @@ pnpm add hobots
|
|
|
8
8
|
|
|
9
9
|
Sem dependências de runtime. Requer **Node 18+** (usa o `fetch` global). O Monitor também funciona no browser para captura de erros.
|
|
10
10
|
|
|
11
|
-
## O
|
|
11
|
+
## O Client Secret
|
|
12
12
|
|
|
13
|
-
Cada projeto tem **
|
|
13
|
+
Cada projeto tem **um único Client Secret** — a mesma credencial autentica o Monitor **e** o Manager:
|
|
14
14
|
|
|
15
15
|
```
|
|
16
|
-
<
|
|
16
|
+
hb_<64 hex>
|
|
17
17
|
```
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
(Chaves antigas, 64 hex puros, continuam válidas no servidor.) A credencial é **secreta** e viaja sempre no header `Authorization: Bearer` — nunca na URL. Copie o Client Secret no app, em **Configurações → Projetos** — os snippets de integração já vêm prontos.
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
O SDK fala com `https://app.hobots.app` por padrão; só sobrescreva `baseUrl` em desenvolvimento:
|
|
22
|
+
|
|
23
|
+
```js
|
|
24
|
+
Hobots.init({ clientSecret: 'hb_<64 hex>', baseUrl: 'http://localhost:3002', ... });
|
|
23
25
|
```
|
|
24
26
|
|
|
25
|
-
Veja [Protocolo & transporte](./protocol.md) para os endpoints
|
|
27
|
+
Veja [Protocolo & transporte](./protocol.md) para os endpoints derivados da `baseUrl`.
|
|
26
28
|
|
|
27
29
|
## Monitor e Manager — qual usar
|
|
28
30
|
|
|
29
31
|
As duas capabilities vivem no mesmo `init()` e você usa **uma, outra ou as duas**:
|
|
30
32
|
|
|
31
|
-
- Quer só saber se o robô quebrou, quanto demora e se está vivo? → `init({
|
|
32
|
-
- Quer disparar o robô sob demanda a partir de um formulário no app? → `init({
|
|
33
|
+
- Quer só saber se o robô quebrou, quanto demora e se está vivo? → `init({ clientSecret, heartbeat: true })`.
|
|
34
|
+
- Quer disparar o robô sob demanda a partir de um formulário no app? → `init({ clientSecret, manager: true })` + `register()` + `start()`.
|
|
33
35
|
- Ambos? Passe `heartbeat` e `manager` no **mesmo `init()`**. É o cenário do
|
|
34
36
|
[`full.ts`](../../hobots-sdk-demos/src/full.ts) nos demos do SDK.
|
|
35
37
|
|
|
@@ -39,7 +41,8 @@ As duas capabilities vivem no mesmo `init()` e você usa **uma, outra ou as duas
|
|
|
39
41
|
import * as Hobots from 'hobots';
|
|
40
42
|
|
|
41
43
|
Hobots.init({
|
|
42
|
-
|
|
44
|
+
clientSecret: 'hb_<64 hex>',
|
|
45
|
+
// baseUrl: 'http://localhost:3002', // só em desenvolvimento
|
|
43
46
|
environment: 'production',
|
|
44
47
|
release: 'robo-nfe@1.4.2',
|
|
45
48
|
instanceId: 'vm-cliente-01', // identidade única: heartbeat + agente Manager
|
|
@@ -66,7 +69,8 @@ Habilite a execução sob demanda com o campo `manager` no mesmo `init()`:
|
|
|
66
69
|
import * as Hobots from 'hobots';
|
|
67
70
|
|
|
68
71
|
Hobots.init({
|
|
69
|
-
|
|
72
|
+
clientSecret: 'hb_<64 hex>',
|
|
73
|
+
// baseUrl: 'http://localhost:3002', // só em desenvolvimento
|
|
70
74
|
instanceId: 'vm-cliente-01',
|
|
71
75
|
manager: true, // ou { pollIntervalMs, concurrency, ... }
|
|
72
76
|
});
|
package/docs/manager.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Manager
|
|
2
2
|
|
|
3
|
-
Capability de **execução remota sob demanda**, habilitada com `manager: true` (ou opções) no `init()` único. O agente faz polling no app, executa os handlers registrados quando aparece trabalho e reporta status e logs incrementais. Usa
|
|
3
|
+
Capability de **execução remota sob demanda**, habilitada com `manager: true` (ou opções) no `init()` único. O agente faz polling no app, executa os handlers registrados quando aparece trabalho e reporta status e logs incrementais. Usa o mesmo Client Secret, o mesmo `debug` e o `instanceId` como identidade — nenhum handler global extra é instalado.
|
|
4
4
|
|
|
5
5
|
## Ciclo de vida
|
|
6
6
|
|
|
@@ -8,7 +8,8 @@ Capability de **execução remota sob demanda**, habilitada com `manager: true`
|
|
|
8
8
|
import * as Hobots from 'hobots';
|
|
9
9
|
|
|
10
10
|
Hobots.init({
|
|
11
|
-
|
|
11
|
+
clientSecret: 'hb_<64 hex>',
|
|
12
|
+
// baseUrl: 'http://localhost:3002', // só em desenvolvimento
|
|
12
13
|
instanceId: 'vm-cliente-01',
|
|
13
14
|
manager: true, // ou { pollIntervalMs, concurrency, taskTimeoutMs, logFlushIntervalMs }
|
|
14
15
|
});
|
package/docs/monitor.md
CHANGED
|
@@ -12,7 +12,8 @@ Todas as funções abaixo são no-op seguros se `Hobots.init()` não foi chamado
|
|
|
12
12
|
|
|
13
13
|
```js
|
|
14
14
|
Hobots.init({
|
|
15
|
-
|
|
15
|
+
clientSecret: 'hb_<64 hex>',
|
|
16
|
+
// baseUrl: 'http://localhost:3002', // só em desenvolvimento
|
|
16
17
|
environment: 'production',
|
|
17
18
|
release: 'robo-nfe@1.4.2',
|
|
18
19
|
instanceId: 'vm-cliente-01',
|
|
@@ -119,7 +120,7 @@ Bate "estou vivo" periodicamente; o servidor acusa o robô **offline** quando os
|
|
|
119
120
|
|
|
120
121
|
```js
|
|
121
122
|
Hobots.init({
|
|
122
|
-
|
|
123
|
+
clientSecret,
|
|
123
124
|
heartbeat: { intervalMs: 30_000, name: 'Robô NFe — VM 01' },
|
|
124
125
|
});
|
|
125
126
|
```
|
package/docs/protocol.md
CHANGED
|
@@ -4,22 +4,22 @@ O SDK é um **cliente HTTP puro**, sem dependências de runtime: ele só fala co
|
|
|
4
4
|
|
|
5
5
|
Os arquivos `src/protocol.ts` e `src/manager/protocol.ts` são a **fonte de verdade do wire format**: o app valida os payloads com zod travados nesses tipos (`satisfies z.ZodType<...>`), então não podem sofrer drift.
|
|
6
6
|
|
|
7
|
-
##
|
|
7
|
+
## O Client Secret e os endpoints derivados
|
|
8
8
|
|
|
9
|
-
Cada projeto tem **
|
|
9
|
+
Cada projeto tem **um único Client Secret**, o mesmo para as duas capabilities:
|
|
10
10
|
|
|
11
11
|
```
|
|
12
|
-
<
|
|
12
|
+
hb_<64 hex>
|
|
13
13
|
```
|
|
14
14
|
|
|
15
15
|
| Canal | Endpoint | Autenticação |
|
|
16
16
|
| --- | --- | --- |
|
|
17
|
-
| Monitor (ingestão) | `POST <
|
|
18
|
-
| Manager (execução) | `<
|
|
17
|
+
| Monitor (ingestão) | `POST <baseUrl>/api/ingest` | `Authorization: Bearer <clientSecret>` |
|
|
18
|
+
| Manager (execução) | `<baseUrl>/api/manager/*` | `Authorization: Bearer <clientSecret>` |
|
|
19
19
|
|
|
20
|
-
`
|
|
20
|
+
`resolveConfig({ clientSecret, baseUrl? }) → { key, baseUrl, ingestEndpoint, managerBaseUrl }` (em `src/config.ts`, com a constante `DEFAULT_BASE_URL = 'https://app.hobots.app'`). A credencial é **secreta** (formato `hb_<64 hex>`; chaves antigas de 64 hex puros continuam válidas no servidor) e viaja **só no header** `Authorization: Bearer` — nunca na URL da requisição.
|
|
21
21
|
|
|
22
|
-
>
|
|
22
|
+
> As DSNs foram **descontinuadas** em favor do Client Secret — tanto a antiga do Monitor (public key na URL, `POST /api/ingest/<key>`, que responde **410** e o transport descarta sem retry) quanto a de key-na-URL (`https://<secretKey>@host/<slug>`). Copie o Client Secret em **Configurações → Projetos** no app.
|
|
23
23
|
|
|
24
24
|
## Monitor — ingestão
|
|
25
25
|
|
|
@@ -44,7 +44,7 @@ Tipos de item: `event`, `transaction`, `check_in`, `heartbeat` (definidos em `ho
|
|
|
44
44
|
|
|
45
45
|
## Manager — polling e reporte
|
|
46
46
|
|
|
47
|
-
Dois endpoints sob `<
|
|
47
|
+
Dois endpoints sob `<baseUrl>/api/manager`, ambos com `Authorization: Bearer <clientSecret>` (a credencial única do projeto):
|
|
48
48
|
|
|
49
49
|
### `POST /api/manager/poll`
|
|
50
50
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "hobots",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"description": "SDK JavaScript da Hobots — captura de erros, transactions, check-ins de cron e heartbeats (Monitor) e execução remota de tarefas sob demanda (Manager) para RPAs e integrações. Um único import e um único init().",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"require": "./dist/protocol.cjs"
|
|
28
28
|
},
|
|
29
29
|
"./manager/protocol": {
|
|
30
|
-
"types": "./dist/manager/protocol.d.ts",
|
|
30
|
+
"types": "./dist/manager/protocol.d.ts ",
|
|
31
31
|
"import": "./dist/manager/protocol.js",
|
|
32
32
|
"require": "./dist/manager/protocol.cjs"
|
|
33
33
|
}
|