@chatlychat/cli 0.2.0 → 0.4.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/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +29 -3
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/listen-bot.d.ts +52 -0
- package/dist/commands/listen-bot.d.ts.map +1 -0
- package/dist/commands/listen-bot.js +253 -0
- package/dist/commands/listen-bot.js.map +1 -0
- package/dist/commands/listen-core.d.ts +107 -0
- package/dist/commands/listen-core.d.ts.map +1 -0
- package/dist/commands/listen-core.js +334 -0
- package/dist/commands/listen-core.js.map +1 -0
- package/dist/commands/listen-relay-harness.d.ts +80 -0
- package/dist/commands/listen-relay-harness.d.ts.map +1 -0
- package/dist/commands/listen-relay-harness.js +163 -0
- package/dist/commands/listen-relay-harness.js.map +1 -0
- package/dist/commands/listen-relay-options.d.ts +78 -0
- package/dist/commands/listen-relay-options.d.ts.map +1 -0
- package/dist/commands/listen-relay-options.js +195 -0
- package/dist/commands/listen-relay-options.js.map +1 -0
- package/dist/commands/listen-relay-sign.d.ts +36 -0
- package/dist/commands/listen-relay-sign.d.ts.map +1 -0
- package/dist/commands/listen-relay-sign.js +136 -0
- package/dist/commands/listen-relay-sign.js.map +1 -0
- package/dist/commands/listen-relay.d.ts +43 -0
- package/dist/commands/listen-relay.d.ts.map +1 -0
- package/dist/commands/listen-relay.js +434 -0
- package/dist/commands/listen-relay.js.map +1 -0
- package/dist/commands/listen.d.ts +2 -39
- package/dist/commands/listen.d.ts.map +1 -1
- package/dist/commands/listen.js +73 -208
- package/dist/commands/listen.js.map +1 -1
- package/dist/help.d.ts +1 -1
- package/dist/help.d.ts.map +1 -1
- package/dist/help.js +19 -3
- package/dist/help.js.map +1 -1
- package/dist/run.js +1 -1
- package/package.json +3 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,EAAa,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAGxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,wBAAsB,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,EAAa,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAGxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,wBAAsB,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAwJlF;AAED,wBAAsB,SAAS,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CA2DvF;AAED,wBAAsB,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAsCtF;AAED,wBAAsB,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAmCpF;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CA8C5F;AAED,wBAAsB,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CA6EpF;AAED;;;;;;GAMG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CA+C3F"}
|
package/dist/commands/config.js
CHANGED
|
@@ -47,9 +47,35 @@ export async function bots(chatly, args) {
|
|
|
47
47
|
}));
|
|
48
48
|
case 'update-external':
|
|
49
49
|
return showObject(await chatly.request('PATCH', `/v1/bots/${encodeURIComponent(need(args, 2, 'a bot id'))}/external`, { body: bodyFrom(args, "the external agent's webhook, timeout or fallback copy") }));
|
|
50
|
-
case 'rotate-secret':
|
|
51
|
-
|
|
52
|
-
|
|
50
|
+
case 'rotate-secret': {
|
|
51
|
+
/*
|
|
52
|
+
* Shown once. With no `--activate-at` this sends no body and the old
|
|
53
|
+
* secret stops signing the moment it returns; with one, the old secret
|
|
54
|
+
* keeps signing until that instant (at most 168h ahead — the server
|
|
55
|
+
* checks, against its own clock).
|
|
56
|
+
*
|
|
57
|
+
* Through `request`, not `bots.rotateExternalSecret(id, { activateAt })`:
|
|
58
|
+
* a CLI installed beside an sdk-node that predates the option would
|
|
59
|
+
* drop the second argument without a word, and the result is the one
|
|
60
|
+
* thing this flag exists to prevent — a hard cut nobody asked for.
|
|
61
|
+
*/
|
|
62
|
+
const botId = need(args, 2, 'a bot id');
|
|
63
|
+
if (args.flags['activate-at'] === true) {
|
|
64
|
+
throw new Error('--activate-at needs an ISO 8601 instant, e.g. 2026-10-16T09:00:00Z.');
|
|
65
|
+
}
|
|
66
|
+
const activateAt = str(args.flags, 'activate-at');
|
|
67
|
+
const rotated = await chatly.request('POST', `/v1/bots/${encodeURIComponent(botId)}/external/rotate-secret`, activateAt === undefined ? {} : { body: { activateAt } });
|
|
68
|
+
/*
|
|
69
|
+
* An instant that has already passed, or an agent with no usable
|
|
70
|
+
* secret, is a hard cut rather than a 400, and the response is the only
|
|
71
|
+
* place that says so. Said on stderr so `--json` stays parseable.
|
|
72
|
+
*/
|
|
73
|
+
if (activateAt !== undefined && rotated?.activatesAt === null) {
|
|
74
|
+
process.stderr.write('activatesAt is null: the new secret is ALREADY signing. The instant was not in the ' +
|
|
75
|
+
'future, or the agent had no usable secret to keep signing with.\n');
|
|
76
|
+
}
|
|
77
|
+
return showObject(rotated);
|
|
78
|
+
}
|
|
53
79
|
/* ── An external agent's delivery ledger ──────────────────────────── */
|
|
54
80
|
case 'deliveries': {
|
|
55
81
|
/*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `chatly listen --bot <id>` — tail one external agent's push deliveries.
|
|
3
|
+
*
|
|
4
|
+
* ═══ WHY THIS IS A SECOND LOOP AND NOT A FLAG ON THE FIRST ════════════════
|
|
5
|
+
*
|
|
6
|
+
* It is a different ledger with a different row shape, a different signature
|
|
7
|
+
* header and a different secret:
|
|
8
|
+
*
|
|
9
|
+
* | | webhook subscription | external agent |
|
|
10
|
+
* | --- | --- | --- |
|
|
11
|
+
* | ledger | `GET /v1/webhooks/deliveries` | `GET /v1/bots/{id}/deliveries` |
|
|
12
|
+
* | row names the event | `eventType` (`conversation.created`) | `kind` (`message`, sent as `agent.message`) |
|
|
13
|
+
* | signature header | `x-livechat-signature` | `x-chatly-signature` |
|
|
14
|
+
* | secret | the endpoint's `whsec_` | the bot's `chsec_` |
|
|
15
|
+
* | permission | `integrations:read` | `triggers:read` |
|
|
16
|
+
*
|
|
17
|
+
* Both routes were read against their handlers before this was written —
|
|
18
|
+
* `AgentDeliveriesController` carries `@AllowApiKey()` and
|
|
19
|
+
* `@RequirePermission('triggers:read')` on the list and on the per-delivery
|
|
20
|
+
* read, so a `ck_` key can poll both. A route list in this repo has been
|
|
21
|
+
* wrong in both directions, so neither was taken on trust.
|
|
22
|
+
*
|
|
23
|
+
* ── What the ledger can and cannot give a developer ──────────────────────
|
|
24
|
+
*
|
|
25
|
+
* The payload on a row is the exact OBJECT that was serialised and signed —
|
|
26
|
+
* `agent_deliveries.payload` is `jsonb`, written once and re-sent byte for
|
|
27
|
+
* byte on every retry so that dedupe-by-`eventId` compares equal. What is not
|
|
28
|
+
* stored is the signature, and `jsonb` does not preserve key order, so the
|
|
29
|
+
* forwarded bytes here are a re-serialisation and the signature is minted
|
|
30
|
+
* locally from `--secret`. `listen-core.ts` says what that is worth.
|
|
31
|
+
*
|
|
32
|
+
* One thing this ledger has that the webhook one does not: the delivery row's
|
|
33
|
+
* `id` IS the `eventId` inside the payload. So `x-chatly-delivery-id` on a
|
|
34
|
+
* forwarded request carries the same value the real delivery carried, and a
|
|
35
|
+
* handler deduping on it behaves exactly as it will in production.
|
|
36
|
+
*
|
|
37
|
+
* ── The three synchronous surfaces ───────────────────────────────────────
|
|
38
|
+
*
|
|
39
|
+
* AI tool calls, customer-card fetches and canvas/step requests are
|
|
40
|
+
* synchronous and have no ledger at all. `--relay` (`listen-relay.ts`) is
|
|
41
|
+
* the answer for those; `RELAY-SERVER-SPEC.md` is its contract.
|
|
42
|
+
*/
|
|
43
|
+
import { type ListenDeps, type ListenOptions, type ListenSummary } from './listen-core.js';
|
|
44
|
+
import type { ChatlyClient } from '@chatlychat/sdk-node';
|
|
45
|
+
/**
|
|
46
|
+
* The tail loop for one agent's ledger.
|
|
47
|
+
*
|
|
48
|
+
* Exported for the spec, and bounded by `deps.maxPolls` for the same reason
|
|
49
|
+
* the webhook loop is.
|
|
50
|
+
*/
|
|
51
|
+
export declare function tailBot(chatly: ChatlyClient, opts: ListenOptions, deps: ListenDeps): Promise<ListenSummary>;
|
|
52
|
+
//# sourceMappingURL=listen-bot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listen-bot.d.ts","sourceRoot":"","sources":["../../src/commands/listen-bot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,OAAO,EAIL,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,aAAa,EACnB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AA0JzD;;;;;GAKG;AACH,wBAAsB,OAAO,CAC3B,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,aAAa,EACnB,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,aAAa,CAAC,CA4HxB"}
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `chatly listen --bot <id>` — tail one external agent's push deliveries.
|
|
3
|
+
*
|
|
4
|
+
* ═══ WHY THIS IS A SECOND LOOP AND NOT A FLAG ON THE FIRST ════════════════
|
|
5
|
+
*
|
|
6
|
+
* It is a different ledger with a different row shape, a different signature
|
|
7
|
+
* header and a different secret:
|
|
8
|
+
*
|
|
9
|
+
* | | webhook subscription | external agent |
|
|
10
|
+
* | --- | --- | --- |
|
|
11
|
+
* | ledger | `GET /v1/webhooks/deliveries` | `GET /v1/bots/{id}/deliveries` |
|
|
12
|
+
* | row names the event | `eventType` (`conversation.created`) | `kind` (`message`, sent as `agent.message`) |
|
|
13
|
+
* | signature header | `x-livechat-signature` | `x-chatly-signature` |
|
|
14
|
+
* | secret | the endpoint's `whsec_` | the bot's `chsec_` |
|
|
15
|
+
* | permission | `integrations:read` | `triggers:read` |
|
|
16
|
+
*
|
|
17
|
+
* Both routes were read against their handlers before this was written —
|
|
18
|
+
* `AgentDeliveriesController` carries `@AllowApiKey()` and
|
|
19
|
+
* `@RequirePermission('triggers:read')` on the list and on the per-delivery
|
|
20
|
+
* read, so a `ck_` key can poll both. A route list in this repo has been
|
|
21
|
+
* wrong in both directions, so neither was taken on trust.
|
|
22
|
+
*
|
|
23
|
+
* ── What the ledger can and cannot give a developer ──────────────────────
|
|
24
|
+
*
|
|
25
|
+
* The payload on a row is the exact OBJECT that was serialised and signed —
|
|
26
|
+
* `agent_deliveries.payload` is `jsonb`, written once and re-sent byte for
|
|
27
|
+
* byte on every retry so that dedupe-by-`eventId` compares equal. What is not
|
|
28
|
+
* stored is the signature, and `jsonb` does not preserve key order, so the
|
|
29
|
+
* forwarded bytes here are a re-serialisation and the signature is minted
|
|
30
|
+
* locally from `--secret`. `listen-core.ts` says what that is worth.
|
|
31
|
+
*
|
|
32
|
+
* One thing this ledger has that the webhook one does not: the delivery row's
|
|
33
|
+
* `id` IS the `eventId` inside the payload. So `x-chatly-delivery-id` on a
|
|
34
|
+
* forwarded request carries the same value the real delivery carried, and a
|
|
35
|
+
* handler deduping on it behaves exactly as it will in production.
|
|
36
|
+
*
|
|
37
|
+
* ── The three synchronous surfaces ───────────────────────────────────────
|
|
38
|
+
*
|
|
39
|
+
* AI tool calls, customer-card fetches and canvas/step requests are
|
|
40
|
+
* synchronous and have no ledger at all. `--relay` (`listen-relay.ts`) is
|
|
41
|
+
* the answer for those; `RELAY-SERVER-SPEC.md` is its contract.
|
|
42
|
+
*/
|
|
43
|
+
import { AGENT_SIGN_PLAN, forward, remember, } from './listen-core.js';
|
|
44
|
+
import { printJson } from '../output.js';
|
|
45
|
+
function asRows(value) {
|
|
46
|
+
const items = typeof value === 'object' && value !== null ? value.items : undefined;
|
|
47
|
+
if (!Array.isArray(items)) {
|
|
48
|
+
return [];
|
|
49
|
+
}
|
|
50
|
+
return items.filter((row) => {
|
|
51
|
+
if (typeof row !== 'object' || row === null) {
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
const r = row;
|
|
55
|
+
return typeof r['id'] === 'string' && typeof r['kind'] === 'string';
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Read the bot and refuse the two states in which nothing can ever arrive.
|
|
60
|
+
*
|
|
61
|
+
* A Chatly persona has no ledger at all — nothing is pushed anywhere, so the
|
|
62
|
+
* route 404s — and an external agent with no `webhookUrl` is never dispatched
|
|
63
|
+
* to. Both are a tail that stays empty forever, which reads as a broken
|
|
64
|
+
* command, so both are errors naming the command that fixes them.
|
|
65
|
+
*/
|
|
66
|
+
async function resolveBot(chatly, botId) {
|
|
67
|
+
const bot = await chatly.request('GET', `/v1/bots/${encodeURIComponent(botId)}`);
|
|
68
|
+
if (bot.type !== 'external' || bot.externalAgent === null || bot.externalAgent === undefined) {
|
|
69
|
+
throw new Error(`Bot ${botId} is a Chatly persona, not an external agent, so it has no delivery ledger —\n` +
|
|
70
|
+
'nothing is pushed anywhere for it. `chatly bots list` shows the type of each bot; only\n' +
|
|
71
|
+
'a `type: "external"` one receives signed POSTs you can tail.');
|
|
72
|
+
}
|
|
73
|
+
const webhookUrl = bot.externalAgent.webhookUrl;
|
|
74
|
+
if (typeof webhookUrl !== 'string' || webhookUrl.length === 0) {
|
|
75
|
+
throw new Error(`External agent ${botId} has no webhookUrl, so no delivery is ever attempted and this\n` +
|
|
76
|
+
'ledger will stay empty. Set one first:\n' +
|
|
77
|
+
` chatly bots update-external ${botId} --body '{"webhookUrl":"https://example.test/agent"}'\n\n` +
|
|
78
|
+
'That URL is the real destination. This command tails what was attempted against it\n' +
|
|
79
|
+
'rather than replacing it.');
|
|
80
|
+
}
|
|
81
|
+
const id = typeof bot.id === 'string' ? bot.id : botId;
|
|
82
|
+
const slug = typeof bot.slug === 'string' && bot.slug.length > 0 ? bot.slug : null;
|
|
83
|
+
return {
|
|
84
|
+
id,
|
|
85
|
+
name: typeof bot.name === 'string' ? bot.name : botId,
|
|
86
|
+
// The worker sends `bot.slug ?? bot.id`; mirroring it means a handler
|
|
87
|
+
// that routes on this header sees the same value it sees in production.
|
|
88
|
+
ref: slug ?? id,
|
|
89
|
+
webhookUrl,
|
|
90
|
+
signingSecretSet: bot.externalAgent.signingSecretSet === true,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
function banner(opts, bot, deps) {
|
|
94
|
+
deps.out(`Tailing the delivery ledger of "${bot.name}" (${bot.id}), ` +
|
|
95
|
+
`every ${String(opts.intervalMs / 1000)}s.`);
|
|
96
|
+
deps.out(` real destination: ${bot.webhookUrl}`);
|
|
97
|
+
if (!bot.signingSecretSet) {
|
|
98
|
+
// A real delivery is signed with a secret this agent does not have, so
|
|
99
|
+
// the ledger will stay empty for a reason that is not this command's.
|
|
100
|
+
deps.out(' [NO SIGNING SECRET SET — the platform cannot sign a delivery to this agent. ' +
|
|
101
|
+
`Run \`chatly bots rotate-secret ${bot.id}\`.]`);
|
|
102
|
+
}
|
|
103
|
+
if (opts.status !== null) {
|
|
104
|
+
deps.out(` only status=${opts.status} (server-side; failed will be retried, dead will not)`);
|
|
105
|
+
}
|
|
106
|
+
if (opts.events !== null) {
|
|
107
|
+
deps.out(`Filtering to: ${[...opts.events].join(', ')} ` +
|
|
108
|
+
'(client-side, on the delivery `kind` — `message` and `agent.message` both match)');
|
|
109
|
+
}
|
|
110
|
+
deps.out(opts.forwardTo === null
|
|
111
|
+
? 'Printing only. Pass --forward-to http://localhost:PORT/path to POST each delivery on.'
|
|
112
|
+
: `Forwarding to ${opts.forwardTo}`);
|
|
113
|
+
if (opts.forwardTo !== null) {
|
|
114
|
+
deps.out(opts.secret === null
|
|
115
|
+
? 'UNSIGNED: no --secret, so forwarded requests carry no x-chatly-signature and your ' +
|
|
116
|
+
"agent's verifier will reject them. Pass the agent's chsec_ secret."
|
|
117
|
+
: 'Signed locally with --secret, as x-chatly-signature AND x-chatly-signature-v2. ' +
|
|
118
|
+
'This is NOT the signature Chatly sent — the ledger does not store one, and the ' +
|
|
119
|
+
'payload is re-serialised out of jsonb — so it proves nothing about the original ' +
|
|
120
|
+
'request.');
|
|
121
|
+
}
|
|
122
|
+
deps.out('Registers nothing on the server; there is nothing to clean up. Ctrl-C to stop.\n');
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Does this row match `--event`?
|
|
126
|
+
*
|
|
127
|
+
* Both spellings, because the row says `message` and the wire header says
|
|
128
|
+
* `agent.message`, and a developer reading their own logs has seen the second
|
|
129
|
+
* one. Refusing the spelling they have is a worse answer than accepting both.
|
|
130
|
+
*/
|
|
131
|
+
function matchesEvent(opts, row) {
|
|
132
|
+
if (opts.events === null) {
|
|
133
|
+
return true;
|
|
134
|
+
}
|
|
135
|
+
return opts.events.has(row.kind) || opts.events.has(`agent.${row.kind}`);
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* The tail loop for one agent's ledger.
|
|
139
|
+
*
|
|
140
|
+
* Exported for the spec, and bounded by `deps.maxPolls` for the same reason
|
|
141
|
+
* the webhook loop is.
|
|
142
|
+
*/
|
|
143
|
+
export async function tailBot(chatly, opts, deps) {
|
|
144
|
+
const botId = opts.botId;
|
|
145
|
+
if (botId === null) {
|
|
146
|
+
throw new Error('tailBot needs --bot <id>');
|
|
147
|
+
}
|
|
148
|
+
const bot = await resolveBot(chatly, botId);
|
|
149
|
+
banner(opts, bot, deps);
|
|
150
|
+
const path = `/v1/bots/${encodeURIComponent(botId)}/deliveries`;
|
|
151
|
+
const query = { limit: opts.pageLimit };
|
|
152
|
+
if (opts.status !== null) {
|
|
153
|
+
query['status'] = opts.status;
|
|
154
|
+
}
|
|
155
|
+
/*
|
|
156
|
+
* No `sort`. The route accepts `createdAt` only — not `id`, because this
|
|
157
|
+
* table's ids are `gen_random_uuid()` (v4, not v7), so ordering by id is
|
|
158
|
+
* ordering by nothing — and `createdAt` descending is already the default.
|
|
159
|
+
* Sending it would be one more thing to get wrong.
|
|
160
|
+
*/
|
|
161
|
+
const seen = new Set();
|
|
162
|
+
let seenCount = 0;
|
|
163
|
+
let forwarded = 0;
|
|
164
|
+
let refused = 0;
|
|
165
|
+
let polls = 0;
|
|
166
|
+
// The baseline, for the reason the webhook loop has one: without it the
|
|
167
|
+
// first poll POSTs everything already in the ledger at a handler the
|
|
168
|
+
// developer has just started.
|
|
169
|
+
const firstPage = asRows(await chatly.request('GET', path, { query }));
|
|
170
|
+
for (const row of firstPage.slice(opts.replay)) {
|
|
171
|
+
remember(seen, row.id);
|
|
172
|
+
}
|
|
173
|
+
if (opts.replay > 0) {
|
|
174
|
+
deps.out(`Replaying the ${String(Math.min(opts.replay, firstPage.length))} most recent.\n`);
|
|
175
|
+
}
|
|
176
|
+
for (;;) {
|
|
177
|
+
if (deps.signal.aborted) {
|
|
178
|
+
break;
|
|
179
|
+
}
|
|
180
|
+
if (deps.maxPolls !== undefined && polls >= deps.maxPolls) {
|
|
181
|
+
break;
|
|
182
|
+
}
|
|
183
|
+
polls += 1;
|
|
184
|
+
const page = polls === 1 ? firstPage : asRows(await chatly.request('GET', path, { query }));
|
|
185
|
+
// Newest-first off the wire; replay in the order they happened.
|
|
186
|
+
const fresh = page.filter((row) => !seen.has(row.id)).reverse();
|
|
187
|
+
if (polls > 1 && fresh.length === page.length && page.length === opts.pageLimit) {
|
|
188
|
+
deps.err(`warning: all ${String(opts.pageLimit)} rows on this page were new, so deliveries may ` +
|
|
189
|
+
'have been missed between polls. Use a shorter --interval or a larger --limit.\n');
|
|
190
|
+
}
|
|
191
|
+
for (const row of fresh) {
|
|
192
|
+
remember(seen, row.id);
|
|
193
|
+
if (!matchesEvent(opts, row)) {
|
|
194
|
+
continue;
|
|
195
|
+
}
|
|
196
|
+
seenCount += 1;
|
|
197
|
+
const detail = await chatly.request('GET', `${path}/${encodeURIComponent(row.id)}`);
|
|
198
|
+
/*
|
|
199
|
+
* The payload is forwarded AS THE WHOLE BODY, not wrapped in an
|
|
200
|
+
* envelope. That is what the real delivery POSTs — the external-agent
|
|
201
|
+
* protocol has no outer `{id,type,payload}` wrapper — and wrapping it
|
|
202
|
+
* here would mean a handler that works against this CLI fails against
|
|
203
|
+
* production.
|
|
204
|
+
*/
|
|
205
|
+
const body = JSON.stringify(detail.payload ?? {});
|
|
206
|
+
if (opts.json) {
|
|
207
|
+
printJson({ delivery: row, payload: detail.payload });
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
const http = row.httpStatus === null ? '—' : String(row.httpStatus);
|
|
211
|
+
const ms = row.durationMs === null ? '—' : `${String(row.durationMs)}ms`;
|
|
212
|
+
deps.out(`agent.${row.kind} ${row.id} attempt ${String(row.attempt)} ${row.status} ` +
|
|
213
|
+
`http ${http} ${ms} ${row.createdAt}` +
|
|
214
|
+
(row.error === null ? '' : ` (${row.error})`));
|
|
215
|
+
}
|
|
216
|
+
if (opts.forwardTo !== null) {
|
|
217
|
+
const sent = await forward(opts, deps, {
|
|
218
|
+
id: row.id,
|
|
219
|
+
body,
|
|
220
|
+
headers: {
|
|
221
|
+
// The five headers the worker sends beside the signature.
|
|
222
|
+
'x-chatly-event': `agent.${row.kind}`,
|
|
223
|
+
'x-chatly-bot': bot.ref,
|
|
224
|
+
/*
|
|
225
|
+
* The worker sends `attempt + 1`, the number of the request it is
|
|
226
|
+
* making, where the column counts attempts already MADE. Here the
|
|
227
|
+
* attempts have already happened, so the faithful value for the
|
|
228
|
+
* last one is the column itself — floored at 1, because a
|
|
229
|
+
* `pending` row has made none and `0` is not a request number.
|
|
230
|
+
*/
|
|
231
|
+
'x-chatly-attempt': String(Math.max(1, row.attempt)),
|
|
232
|
+
// The ledger id IS the `eventId` in the payload, so this is the
|
|
233
|
+
// same value the real delivery carried.
|
|
234
|
+
'x-chatly-delivery-id': row.id,
|
|
235
|
+
},
|
|
236
|
+
plan: AGENT_SIGN_PLAN,
|
|
237
|
+
});
|
|
238
|
+
if (sent) {
|
|
239
|
+
forwarded += 1;
|
|
240
|
+
}
|
|
241
|
+
else {
|
|
242
|
+
refused += 1;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
if (deps.maxPolls !== undefined && polls >= deps.maxPolls) {
|
|
247
|
+
break;
|
|
248
|
+
}
|
|
249
|
+
await deps.sleep(opts.intervalMs, deps.signal);
|
|
250
|
+
}
|
|
251
|
+
return { seen: seenCount, forwarded, refused, polls };
|
|
252
|
+
}
|
|
253
|
+
//# sourceMappingURL=listen-bot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listen-bot.js","sourceRoot":"","sources":["../../src/commands/listen-bot.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { type ParsedArgs } from '../args.js';
|
|
2
|
+
/** Which construction the legacy header on a surface uses. */
|
|
3
|
+
export interface SignPlan {
|
|
4
|
+
/** The surface the legacy header belongs to, for the self-check. */
|
|
5
|
+
readonly surface: 'event_webhook' | 'agent_delivery';
|
|
6
|
+
/** The header name carrying `t=…,v1=…`. */
|
|
7
|
+
readonly legacyHeader: string;
|
|
8
|
+
/**
|
|
9
|
+
* A header carrying `t` on its own, when the real sender sends one.
|
|
10
|
+
* `null` on agent deliveries, which do not.
|
|
11
|
+
*/
|
|
12
|
+
readonly timestampHeader: string | null;
|
|
13
|
+
}
|
|
14
|
+
export declare const WEBHOOK_SIGN_PLAN: SignPlan;
|
|
15
|
+
export declare const AGENT_SIGN_PLAN: SignPlan;
|
|
16
|
+
export interface ListenOptions {
|
|
17
|
+
/** Where to POST each event. `null` prints without forwarding. */
|
|
18
|
+
readonly forwardTo: string | null;
|
|
19
|
+
/** `--bot <id>`: tail that external agent's delivery ledger instead. */
|
|
20
|
+
readonly botId: string | null;
|
|
21
|
+
readonly endpointId: string | null;
|
|
22
|
+
/** Client-side event filter. `null` means every event in the log. */
|
|
23
|
+
readonly events: ReadonlySet<string> | null;
|
|
24
|
+
readonly status: string | null;
|
|
25
|
+
/** The secret to re-sign forwarded requests with. `null` sends unsigned. */
|
|
26
|
+
readonly secret: string | null;
|
|
27
|
+
readonly intervalMs: number;
|
|
28
|
+
/** How many deliveries already in the log to forward before tailing. */
|
|
29
|
+
readonly replay: number;
|
|
30
|
+
/** Rows per poll. Also the most this can see between two polls. */
|
|
31
|
+
readonly pageLimit: number;
|
|
32
|
+
readonly json: boolean;
|
|
33
|
+
}
|
|
34
|
+
export interface ListenDeps {
|
|
35
|
+
/** For the FORWARD leg only. API calls go through the SDK's own transport. */
|
|
36
|
+
readonly fetchFn: typeof fetch;
|
|
37
|
+
readonly now: () => number;
|
|
38
|
+
readonly sleep: (ms: number, signal: AbortSignal) => Promise<void>;
|
|
39
|
+
readonly signal: AbortSignal;
|
|
40
|
+
readonly out: (line: string) => void;
|
|
41
|
+
readonly err: (line: string) => void;
|
|
42
|
+
/**
|
|
43
|
+
* Stop after this many polls. Test-only, and the reason it exists rather
|
|
44
|
+
* than a timer the test races: a tail loop with no bound is not a thing a
|
|
45
|
+
* unit test can assert the end of.
|
|
46
|
+
*/
|
|
47
|
+
readonly maxPolls?: number;
|
|
48
|
+
}
|
|
49
|
+
export interface ListenSummary {
|
|
50
|
+
readonly seen: number;
|
|
51
|
+
readonly forwarded: number;
|
|
52
|
+
readonly refused: number;
|
|
53
|
+
readonly polls: number;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* The four words both ledgers use, with the same meanings: `failed` will be
|
|
57
|
+
* retried and `dead` will not. Validated here because the bot ledger answers
|
|
58
|
+
* a **400** on a word outside the four rather than an empty page.
|
|
59
|
+
*/
|
|
60
|
+
export declare const DELIVERY_STATUSES: readonly ["pending", "delivered", "failed", "dead"];
|
|
61
|
+
/** Drop the oldest ids once the set is at its cap. Sets iterate in insertion order. */
|
|
62
|
+
export declare function remember(seen: Set<string>, id: string): void;
|
|
63
|
+
/**
|
|
64
|
+
* The signature headers for one forwarded request, self-checked.
|
|
65
|
+
*
|
|
66
|
+
* Returns the headers to merge, or a message naming what went wrong — which
|
|
67
|
+
* can only be a bug in this CLI, since it signed the bytes itself moments
|
|
68
|
+
* earlier. See this file's header for why both headers are minted.
|
|
69
|
+
*/
|
|
70
|
+
export declare function signedForwardHeaders(input: {
|
|
71
|
+
readonly plan: SignPlan;
|
|
72
|
+
readonly body: string;
|
|
73
|
+
readonly secret: string;
|
|
74
|
+
readonly nowMs: number;
|
|
75
|
+
/** The absolute `--forward-to` URL, whose path goes into the v2 digest. */
|
|
76
|
+
readonly targetUrl: string;
|
|
77
|
+
}): {
|
|
78
|
+
ok: true;
|
|
79
|
+
headers: Record<string, string>;
|
|
80
|
+
} | {
|
|
81
|
+
ok: false;
|
|
82
|
+
message: string;
|
|
83
|
+
};
|
|
84
|
+
/** One request to forward: already-built headers and the exact bytes. */
|
|
85
|
+
export interface ForwardRequest {
|
|
86
|
+
/** The delivery id, for the log lines. */
|
|
87
|
+
readonly id: string;
|
|
88
|
+
readonly body: string;
|
|
89
|
+
/** Everything but the signature headers, which this adds. */
|
|
90
|
+
readonly headers: Record<string, string>;
|
|
91
|
+
readonly plan: SignPlan;
|
|
92
|
+
}
|
|
93
|
+
/** POST one event on, verifying the headers we just minted before sending. */
|
|
94
|
+
export declare function forward(opts: ListenOptions, deps: ListenDeps, req: ForwardRequest): Promise<boolean>;
|
|
95
|
+
/**
|
|
96
|
+
* Read the flags, refusing anything that cannot work, with the fix named.
|
|
97
|
+
*
|
|
98
|
+
* The two secret prefixes are the one refusal worth reading twice: a webhook
|
|
99
|
+
* endpoint's secret is `whsec_` and an external agent's is `chsec_`, they are
|
|
100
|
+
* minted by different routes, and neither verifies the other's traffic. The
|
|
101
|
+
* symptom of crossing them is a 401 from your own handler, which looks
|
|
102
|
+
* exactly like a verifier bug.
|
|
103
|
+
*/
|
|
104
|
+
export declare function parseListenOptions(args: ParsedArgs): ListenOptions;
|
|
105
|
+
/** An abortable sleep, so Ctrl-C does not wait out the poll interval. */
|
|
106
|
+
export declare function sleepUntilAborted(ms: number, signal: AbortSignal): Promise<void>;
|
|
107
|
+
//# sourceMappingURL=listen-core.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listen-core.d.ts","sourceRoot":"","sources":["../../src/commands/listen-core.ts"],"names":[],"mappings":"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"}
|