@chatlychat/cli 0.1.7 → 0.3.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-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 +20 -0
- package/dist/commands/listen.d.ts.map +1 -0
- package/dist/commands/listen.js +355 -0
- package/dist/commands/listen.js.map +1 -0
- package/dist/help.d.ts +1 -1
- package/dist/help.d.ts.map +1 -1
- package/dist/help.js +28 -1
- package/dist/help.js.map +1 -1
- package/dist/run.d.ts.map +1 -1
- package/dist/run.js +11 -1
- package/dist/run.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listen-relay.js","sourceRoot":"","sources":["../../src/commands/listen-relay.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type ListenDeps, type ListenOptions, type ListenSummary } from './listen-core.js';
|
|
2
|
+
import { type ParsedArgs } from '../args.js';
|
|
3
|
+
import type { ChatlyClient } from '@chatlychat/sdk-node';
|
|
4
|
+
export { parseListenOptions, type ListenDeps, type ListenOptions, type ListenSummary, } from './listen-core.js';
|
|
5
|
+
/**
|
|
6
|
+
* The tail loop, abortable, with the process boundary left to the caller.
|
|
7
|
+
*
|
|
8
|
+
* Exported so the spec can drive it with a bounded `maxPolls` and a scripted
|
|
9
|
+
* fetch, rather than racing a timer against a signal handler.
|
|
10
|
+
*/
|
|
11
|
+
export declare function tail(chatly: ChatlyClient, opts: ListenOptions, deps: ListenDeps): Promise<ListenSummary>;
|
|
12
|
+
/**
|
|
13
|
+
* The command entry point.
|
|
14
|
+
*
|
|
15
|
+
* SIGINT and SIGTERM abort the loop rather than killing the process, so the
|
|
16
|
+
* summary still prints and the exit code is 0 — a developer tool stopped on
|
|
17
|
+
* purpose did not fail.
|
|
18
|
+
*/
|
|
19
|
+
export declare function listen(chatly: ChatlyClient, args: ParsedArgs): Promise<number>;
|
|
20
|
+
//# sourceMappingURL=listen.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listen.d.ts","sourceRoot":"","sources":["../../src/commands/listen.ts"],"names":[],"mappings":"AAsFA,OAAO,EAML,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,aAAa,EACnB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAQ,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAGnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,OAAO,EACL,kBAAkB,EAClB,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,aAAa,GACnB,MAAM,kBAAkB,CAAC;AA6H1B;;;;;GAKG;AACH,wBAAsB,IAAI,CACxB,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,aAAa,EACnB,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,aAAa,CAAC,CAoIxB;AAED;;;;;;GAMG;AACH,wBAAsB,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAgEpF"}
|
|
@@ -0,0 +1,355 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `chatly listen` — watch this workspace's outbound traffic and forward it to
|
|
3
|
+
* a local URL.
|
|
4
|
+
*
|
|
5
|
+
* Two ledgers: webhook subscriptions by default, and one external agent's
|
|
6
|
+
* push deliveries with `--bot <id>` (`listen-bot.ts`). And one live mode,
|
|
7
|
+
* `--relay` (`listen-relay.ts`), for the three synchronous surfaces no ledger
|
|
8
|
+
* can carry — whose server half is `apps/api/src/modules/relay/`, built against
|
|
9
|
+
* `RELAY-SERVER-SPEC.md`. Everything the two ledgers share
|
|
10
|
+
* — the flags, the seen-set, the signing and the forward leg — is in
|
|
11
|
+
* `listen-core.ts`, which also records what the minted signature is and is
|
|
12
|
+
* not.
|
|
13
|
+
*
|
|
14
|
+
* ═══ HOW A LAPTOP RECEIVES EVENTS AT ALL ══════════════════════════════════
|
|
15
|
+
*
|
|
16
|
+
* Chatly delivers webhooks by POSTing to a URL, so a machine behind NAT cannot
|
|
17
|
+
* be a destination. Three ways out were considered and only one of them is
|
|
18
|
+
* real with a `ck_` workspace key:
|
|
19
|
+
*
|
|
20
|
+
* **(a) Poll the delivery log. This is what this command does.**
|
|
21
|
+
* `GET /v1/webhooks/deliveries` records one row per attempt — event type,
|
|
22
|
+
* payload, attempt number, HTTP status, latency, error, next retry — and is
|
|
23
|
+
* open to a `ck_` key (`@AllowApiKey()` on `WebhookDeliveriesController`,
|
|
24
|
+
* `integrations:read`), keyset-paginated newest-first on `created_at`, with
|
|
25
|
+
* `endpointId` and `status` filters. `GET /v1/webhooks/deliveries/{id}`
|
|
26
|
+
* returns the exact payload we POSTed. Both verified against their handlers,
|
|
27
|
+
* because a route list in this repo has been wrong in both directions.
|
|
28
|
+
*
|
|
29
|
+
* **(b) Subscribe over the realtime socket. Not possible.**
|
|
30
|
+
* `apps/realtime/src/gateway.ts` accepts exactly two credentials in its
|
|
31
|
+
* handshake: an agent RS256 access token or a visitor HS256 token. A
|
|
32
|
+
* workspace API key is neither, and there is no key-accessible route that
|
|
33
|
+
* mints either one. The realtime envelope vocabulary is also not the webhook
|
|
34
|
+
* catalogue — it is the dashboard's own event stream, with a different shape
|
|
35
|
+
* and a different subscription model.
|
|
36
|
+
*
|
|
37
|
+
* **(c) Register a temporary subscription and deregister on exit. Not
|
|
38
|
+
* possible either, and this is the finding worth writing down.**
|
|
39
|
+
* `POST /v1/webhooks` carries `@AllowApiKey()`. `DELETE /v1/webhooks/{id}`
|
|
40
|
+
* does **not** — it is the one route on that controller without it, so a key
|
|
41
|
+
* gets a 403. A CLI that registered an endpoint could therefore never remove
|
|
42
|
+
* it, and `listen` would leak a subscription into the customer's workspace on
|
|
43
|
+
* every run, with no key-accessible way to disable it either (there is no
|
|
44
|
+
* enable/disable route; the only PATCH moves the schema pin). So **this
|
|
45
|
+
* command registers nothing and has nothing to clean up** — stated in its own
|
|
46
|
+
* startup banner, because "what did that leave behind" is the first question
|
|
47
|
+
* a developer tool of this shape has to answer.
|
|
48
|
+
*
|
|
49
|
+
* ═══ THE THREE SURFACES THIS STILL CANNOT SHOW ════════════════════════════
|
|
50
|
+
*
|
|
51
|
+
* AI tool calls, customer-card fetches and canvas/step requests are
|
|
52
|
+
* **synchronous**: Chatly calls out and waits for the answer inside a
|
|
53
|
+
* visitor's request. There is no ledger to poll, because the response is the
|
|
54
|
+
* point — a log row would arrive after the visitor has already been told
|
|
55
|
+
* something went wrong. Relaying them needs a server-side surface that holds
|
|
56
|
+
* the inbound request open while a locally connected CLI answers it, which is
|
|
57
|
+
* a route and a socket in `apps/api`, not something this poller can fake.
|
|
58
|
+
* Written up in the C-01 report rather than half-built here.
|
|
59
|
+
*
|
|
60
|
+
* ═══ WHAT THIS CANNOT DO, AND THE ROUTE THAT WOULD FIX IT ═════════════════
|
|
61
|
+
*
|
|
62
|
+
* It cannot relay Chatly's OWN signature, because the server does not keep
|
|
63
|
+
* it. `webhook_deliveries` stores `payload` as `jsonb` and that is all: the
|
|
64
|
+
* signature is computed per attempt from the endpoint's secret and never
|
|
65
|
+
* persisted, the secret is returned by exactly one route and never read back,
|
|
66
|
+
* `jsonb` does not preserve key order, and the signed envelope's `id` is the
|
|
67
|
+
* BullMQ-era `deliveryId` which is not the delivery row's `id`. So the exact
|
|
68
|
+
* signed bytes are unreconstructable by construction, not by omission. The
|
|
69
|
+
* same is true of `agent_deliveries`.
|
|
70
|
+
*
|
|
71
|
+
* A true `stripe listen` — the developer's handler seeing byte-for-byte what
|
|
72
|
+
* production sends — needs a server-side surface, and there are two shapes:
|
|
73
|
+
*
|
|
74
|
+
* 1. `GET /v1/webhooks/tail` as Server-Sent Events: `@AllowApiKey()`,
|
|
75
|
+
* `integrations:read`, emitting `{ id, type, signedBody, signature }`
|
|
76
|
+
* from the same `signWebhookPayload` the dispatcher uses. Best for the
|
|
77
|
+
* use case; needs a streaming route and a fan-out off the webhook queue.
|
|
78
|
+
* 2. Cheaper: add `signed_body text` and `signature text` to
|
|
79
|
+
* `webhook_deliveries` (and `agent_deliveries`), return them from the
|
|
80
|
+
* per-delivery read, and this poller relays them untouched. One
|
|
81
|
+
* migration, two columns, no new route shape.
|
|
82
|
+
*
|
|
83
|
+
* Both are in `apps/api`, `apps/worker` and `packages/db`, so neither is done
|
|
84
|
+
* here. Until one lands, this command is honest about what it mints.
|
|
85
|
+
*/
|
|
86
|
+
import { tailBot } from './listen-bot.js';
|
|
87
|
+
import { WEBHOOK_SIGN_PLAN, forward, parseListenOptions, remember, sleepUntilAborted, } from './listen-core.js';
|
|
88
|
+
import { parseRelayOptions, relay, relayOnlyFlagWithoutRelay } from './listen-relay.js';
|
|
89
|
+
import { bool } from '../args.js';
|
|
90
|
+
import { printJson } from '../output.js';
|
|
91
|
+
export { parseListenOptions, } from './listen-core.js';
|
|
92
|
+
function asRows(value) {
|
|
93
|
+
const items = typeof value === 'object' && value !== null ? value.items : undefined;
|
|
94
|
+
if (!Array.isArray(items)) {
|
|
95
|
+
return [];
|
|
96
|
+
}
|
|
97
|
+
return items.filter((row) => {
|
|
98
|
+
if (typeof row !== 'object' || row === null) {
|
|
99
|
+
return false;
|
|
100
|
+
}
|
|
101
|
+
const r = row;
|
|
102
|
+
return typeof r['id'] === 'string' && typeof r['eventType'] === 'string';
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Which endpoints this will see traffic from, and the refusal when there are
|
|
107
|
+
* none.
|
|
108
|
+
*
|
|
109
|
+
* The empty case is the one worth getting right: a developer running
|
|
110
|
+
* `chatly listen` with no subscription configured sees an empty tail forever
|
|
111
|
+
* and concludes the command is broken, when the real answer is that no event
|
|
112
|
+
* has ever been dispatched to this workspace. So it is an error naming the
|
|
113
|
+
* command that fixes it.
|
|
114
|
+
*/
|
|
115
|
+
async function resolveEndpoints(chatly, opts) {
|
|
116
|
+
const endpoints = await chatly.request('GET', '/v1/webhooks');
|
|
117
|
+
const rows = Array.isArray(endpoints) ? endpoints : [];
|
|
118
|
+
if (rows.length === 0) {
|
|
119
|
+
throw new Error('This workspace has no webhook subscriptions, so nothing is ever dispatched and the\n' +
|
|
120
|
+
'delivery log this command tails will stay empty.\n\n' +
|
|
121
|
+
'Create one first:\n' +
|
|
122
|
+
' chatly webhooks create --url https://example.test/hook --event conversation.created\n' +
|
|
123
|
+
'`chatly webhooks events` lists the subscribable names.\n\n' +
|
|
124
|
+
'The URL has to be one the platform can reach — it is the real destination, and this\n' +
|
|
125
|
+
'command tails what was attempted against it rather than replacing it.\n\n' +
|
|
126
|
+
"To tail an external agent's push deliveries instead, use `chatly listen --bot <id>`.");
|
|
127
|
+
}
|
|
128
|
+
if (opts.endpointId !== null) {
|
|
129
|
+
const match = rows.find((r) => r.id === opts.endpointId);
|
|
130
|
+
if (match === undefined) {
|
|
131
|
+
throw new Error(`No webhook endpoint "${opts.endpointId}" in this workspace. The ids are:\n` +
|
|
132
|
+
rows.map((r) => ` ${String(r.id)} ${String(r.url)}`).join('\n'));
|
|
133
|
+
}
|
|
134
|
+
return [match];
|
|
135
|
+
}
|
|
136
|
+
return rows;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* The startup banner.
|
|
140
|
+
*
|
|
141
|
+
* It says what was registered (nothing) and what the signature is (minted
|
|
142
|
+
* here), because both are things a developer would otherwise have to read
|
|
143
|
+
* this file to find out — and the second one changes how they should read a
|
|
144
|
+
* passing verification in their own handler.
|
|
145
|
+
*/
|
|
146
|
+
function banner(opts, endpoints, deps) {
|
|
147
|
+
deps.out(`Tailing ${String(endpoints.length)} webhook endpoint(s) via the delivery log, ` +
|
|
148
|
+
`every ${String(opts.intervalMs / 1000)}s.`);
|
|
149
|
+
for (const e of endpoints) {
|
|
150
|
+
const types = Array.isArray(e.eventTypes) ? e.eventTypes.length : 0;
|
|
151
|
+
deps.out(` ${String(e.id)} ${String(e.url)} ${String(types)} event type(s)` +
|
|
152
|
+
(e.enabled === false ? ' [DISABLED — it receives nothing]' : ''));
|
|
153
|
+
}
|
|
154
|
+
if (opts.events !== null) {
|
|
155
|
+
deps.out(`Filtering to: ${[...opts.events].join(', ')} ` +
|
|
156
|
+
'(client-side — an event no endpoint subscribes to never reaches the log at all)');
|
|
157
|
+
}
|
|
158
|
+
deps.out(opts.forwardTo === null
|
|
159
|
+
? 'Printing only. Pass --forward-to http://localhost:PORT/path to POST each event on.'
|
|
160
|
+
: `Forwarding to ${opts.forwardTo}`);
|
|
161
|
+
if (opts.forwardTo !== null) {
|
|
162
|
+
deps.out(opts.secret === null
|
|
163
|
+
? 'UNSIGNED: no --secret, so forwarded requests carry no x-livechat-signature and your ' +
|
|
164
|
+
"handler's verifier will reject them. Pass the endpoint's whsec_ secret."
|
|
165
|
+
: 'Signed locally with --secret, as x-livechat-signature AND x-chatly-signature-v2. ' +
|
|
166
|
+
'This is NOT the signature Chatly sent — the delivery log does not store one — so ' +
|
|
167
|
+
'it proves nothing about the original request.');
|
|
168
|
+
}
|
|
169
|
+
deps.out('Registers nothing on the server; there is nothing to clean up. Ctrl-C to stop.\n');
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* The tail loop, abortable, with the process boundary left to the caller.
|
|
173
|
+
*
|
|
174
|
+
* Exported so the spec can drive it with a bounded `maxPolls` and a scripted
|
|
175
|
+
* fetch, rather than racing a timer against a signal handler.
|
|
176
|
+
*/
|
|
177
|
+
export async function tail(chatly, opts, deps) {
|
|
178
|
+
const endpoints = await resolveEndpoints(chatly, opts);
|
|
179
|
+
banner(opts, endpoints, deps);
|
|
180
|
+
const query = { limit: opts.pageLimit };
|
|
181
|
+
if (opts.endpointId !== null) {
|
|
182
|
+
query['endpointId'] = opts.endpointId;
|
|
183
|
+
}
|
|
184
|
+
if (opts.status !== null) {
|
|
185
|
+
query['status'] = opts.status;
|
|
186
|
+
}
|
|
187
|
+
const seen = new Set();
|
|
188
|
+
let seenCount = 0;
|
|
189
|
+
let forwarded = 0;
|
|
190
|
+
let refused = 0;
|
|
191
|
+
let polls = 0;
|
|
192
|
+
/*
|
|
193
|
+
* The baseline. Without it, the first poll replays everything already in
|
|
194
|
+
* the log — which for a busy workspace is `--limit` surprise POSTs at a
|
|
195
|
+
* handler the developer just started. `--replay N` deliberately leaves the
|
|
196
|
+
* newest N rows unseen, which is the "show me the last few" case.
|
|
197
|
+
*/
|
|
198
|
+
const firstPage = asRows(await chatly.request('GET', '/v1/webhooks/deliveries', { query }));
|
|
199
|
+
for (const row of firstPage.slice(opts.replay)) {
|
|
200
|
+
remember(seen, row.id);
|
|
201
|
+
}
|
|
202
|
+
if (opts.replay > 0) {
|
|
203
|
+
deps.out(`Replaying the ${String(Math.min(opts.replay, firstPage.length))} most recent.\n`);
|
|
204
|
+
}
|
|
205
|
+
const matches = (row) => opts.events === null || opts.events.has(row.eventType);
|
|
206
|
+
for (;;) {
|
|
207
|
+
if (deps.signal.aborted) {
|
|
208
|
+
break;
|
|
209
|
+
}
|
|
210
|
+
if (deps.maxPolls !== undefined && polls >= deps.maxPolls) {
|
|
211
|
+
break;
|
|
212
|
+
}
|
|
213
|
+
polls += 1;
|
|
214
|
+
/*
|
|
215
|
+
* The first poll REUSES the baseline page rather than asking again. Two
|
|
216
|
+
* identical requests back to back is one more than the rate limit needs
|
|
217
|
+
* to see, and with `--replay` the baseline page is exactly what has to be
|
|
218
|
+
* replayed — so there is no case where re-reading it is right.
|
|
219
|
+
*/
|
|
220
|
+
const page = polls === 1
|
|
221
|
+
? firstPage
|
|
222
|
+
: asRows(await chatly.request('GET', '/v1/webhooks/deliveries', { query }));
|
|
223
|
+
// Newest-first off the wire; replay in the order they happened.
|
|
224
|
+
const fresh = page.filter((row) => !seen.has(row.id)).reverse();
|
|
225
|
+
/*
|
|
226
|
+
* Poll 1 is exempt: it is the baseline page, not a window this loop could
|
|
227
|
+
* have overflowed, and with `--replay N` its `fresh` rows are new on
|
|
228
|
+
* purpose. From poll 2 on, a FULL page with nothing already seen on it
|
|
229
|
+
* means ≥ --limit deliveries landed since the last look and some are gone
|
|
230
|
+
* from the window.
|
|
231
|
+
*/
|
|
232
|
+
if (polls > 1 && fresh.length === page.length && page.length === opts.pageLimit) {
|
|
233
|
+
/*
|
|
234
|
+
* Every row on a FULL page was new, so the window may have overflowed
|
|
235
|
+
* between polls and some deliveries were never seen. This command reads
|
|
236
|
+
* one page per poll by design — walking the cursor backwards on every
|
|
237
|
+
* tick would re-read the whole log — so the honest thing is to say it.
|
|
238
|
+
*/
|
|
239
|
+
deps.err(`warning: all ${String(opts.pageLimit)} rows on this page were new, so events may have ` +
|
|
240
|
+
'been missed between polls. Use a shorter --interval or a larger --limit.\n');
|
|
241
|
+
}
|
|
242
|
+
for (const row of fresh) {
|
|
243
|
+
remember(seen, row.id);
|
|
244
|
+
if (!matches(row)) {
|
|
245
|
+
continue;
|
|
246
|
+
}
|
|
247
|
+
seenCount += 1;
|
|
248
|
+
const detail = await chatly.request('GET', `/v1/webhooks/deliveries/${encodeURIComponent(row.id)}`);
|
|
249
|
+
/*
|
|
250
|
+
* The envelope the worker signs is `{ id, type, payload }`. `id` here
|
|
251
|
+
* is the DELIVERY ROW's id, not the `deliveryId` that was in the
|
|
252
|
+
* original signed body — that value is not stored anywhere readable. It
|
|
253
|
+
* is still stable per attempt, which is what a handler deduping on it
|
|
254
|
+
* needs.
|
|
255
|
+
*/
|
|
256
|
+
const envelope = { id: row.id, type: row.eventType, payload: detail.payload };
|
|
257
|
+
if (opts.json) {
|
|
258
|
+
printJson({ ...envelope, delivery: row });
|
|
259
|
+
}
|
|
260
|
+
else {
|
|
261
|
+
const http = row.httpStatus === null ? '—' : String(row.httpStatus);
|
|
262
|
+
deps.out(`${row.eventType} ${row.id} attempt ${String(row.attempt)} ${row.status} ` +
|
|
263
|
+
`http ${http} ${row.createdAt}` +
|
|
264
|
+
(row.error === null ? '' : ` (${row.error})`));
|
|
265
|
+
}
|
|
266
|
+
if (opts.forwardTo !== null) {
|
|
267
|
+
const sent = await forward(opts, deps, {
|
|
268
|
+
id: row.id,
|
|
269
|
+
body: JSON.stringify(envelope),
|
|
270
|
+
headers: {
|
|
271
|
+
'x-livechat-event': envelope.type,
|
|
272
|
+
'x-livechat-delivery': envelope.id,
|
|
273
|
+
},
|
|
274
|
+
plan: WEBHOOK_SIGN_PLAN,
|
|
275
|
+
});
|
|
276
|
+
if (sent) {
|
|
277
|
+
forwarded += 1;
|
|
278
|
+
}
|
|
279
|
+
else {
|
|
280
|
+
refused += 1;
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
if (deps.maxPolls !== undefined && polls >= deps.maxPolls) {
|
|
285
|
+
break;
|
|
286
|
+
}
|
|
287
|
+
await deps.sleep(opts.intervalMs, deps.signal);
|
|
288
|
+
}
|
|
289
|
+
return { seen: seenCount, forwarded, refused, polls };
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* The command entry point.
|
|
293
|
+
*
|
|
294
|
+
* SIGINT and SIGTERM abort the loop rather than killing the process, so the
|
|
295
|
+
* summary still prints and the exit code is 0 — a developer tool stopped on
|
|
296
|
+
* purpose did not fail.
|
|
297
|
+
*/
|
|
298
|
+
export async function listen(chatly, args) {
|
|
299
|
+
const relayMode = bool(args.flags, 'relay');
|
|
300
|
+
if (!relayMode) {
|
|
301
|
+
/*
|
|
302
|
+
* `--tool` on a ledger tail would be silently ignored, and the developer
|
|
303
|
+
* would wait for a tool call that the ledger can never contain.
|
|
304
|
+
*/
|
|
305
|
+
const stray = relayOnlyFlagWithoutRelay(args);
|
|
306
|
+
if (stray !== null) {
|
|
307
|
+
throw new Error(`--${stray} selects a target for --relay, and no ledger records those calls. Did you ` +
|
|
308
|
+
`mean:\n chatly listen --relay --${stray} <id> --forward-to http://localhost:3000`);
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
// Parse BEFORE installing signal handlers, so a refusal leaves none behind.
|
|
312
|
+
const relayOpts = relayMode ? parseRelayOptions(args) : null;
|
|
313
|
+
const opts = relayMode ? null : parseListenOptions(args);
|
|
314
|
+
const controller = new AbortController();
|
|
315
|
+
const stop = () => {
|
|
316
|
+
controller.abort();
|
|
317
|
+
};
|
|
318
|
+
process.once('SIGINT', stop);
|
|
319
|
+
process.once('SIGTERM', stop);
|
|
320
|
+
const deps = {
|
|
321
|
+
fetchFn: globalThis.fetch.bind(globalThis),
|
|
322
|
+
now: () => Date.now(),
|
|
323
|
+
sleep: sleepUntilAborted,
|
|
324
|
+
signal: controller.signal,
|
|
325
|
+
out: (line) => {
|
|
326
|
+
process.stdout.write(`${line}\n`);
|
|
327
|
+
},
|
|
328
|
+
err: (line) => {
|
|
329
|
+
process.stderr.write(line);
|
|
330
|
+
},
|
|
331
|
+
};
|
|
332
|
+
try {
|
|
333
|
+
if (relayOpts !== null) {
|
|
334
|
+
const r = await relay(chatly, relayOpts, deps);
|
|
335
|
+
process.stdout.write(`\nDetached (${r.endReason}). ${String(r.frames)} call(s) relayed, ` +
|
|
336
|
+
`${String(r.answered)} answered by your handler, ${String(r.failed)} not.\n`);
|
|
337
|
+
// The server ending a relay the developer did not ask to end is a failure.
|
|
338
|
+
return r.endReason === 'interrupted' || r.endReason === 'idle' ? 0 : 1;
|
|
339
|
+
}
|
|
340
|
+
if (opts === null) {
|
|
341
|
+
throw new Error('unreachable: neither relay nor ledger options were parsed');
|
|
342
|
+
}
|
|
343
|
+
const summary = opts.botId === null ? await tail(chatly, opts, deps) : await tailBot(chatly, opts, deps);
|
|
344
|
+
process.stdout.write(`\nStopped. ${String(summary.seen)} event(s) seen` +
|
|
345
|
+
(opts.forwardTo === null
|
|
346
|
+
? '.\n'
|
|
347
|
+
: `, ${String(summary.forwarded)} forwarded, ${String(summary.refused)} not.\n`));
|
|
348
|
+
return 0;
|
|
349
|
+
}
|
|
350
|
+
finally {
|
|
351
|
+
process.off('SIGINT', stop);
|
|
352
|
+
process.off('SIGTERM', stop);
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
//# sourceMappingURL=listen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listen.js","sourceRoot":"","sources":["../../src/commands/listen.ts"],"names":[],"mappings":"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"}
|
package/dist/help.d.ts
CHANGED
|
@@ -22,5 +22,5 @@
|
|
|
22
22
|
* The convention the spec relies on: a command line starts with exactly two
|
|
23
23
|
* spaces and its first word is the command group.
|
|
24
24
|
*/
|
|
25
|
-
export declare const HELP = "chatly \u2014 the Chatly command line\n\nUSAGE\n chatly <command> [subcommand] [flags]\n\nAUTH\n login Store an API key in ~/.config/chatly/config.json (0600)\n logout Remove the stored key\n whoami Which workspace this key belongs to, and its scopes\n\nCONVERSATIONS\n conversations list Open conversations, newest first\n conversations get <id> One conversation\n conversations messages <id> The thread\n conversations send <id> <body>\n Reply as the key's machine identity\n conversations unattended Open with no agent reply yet\n conversations mood <id> Sentiment over the thread\n conversations return-to-bot <id> <bot-id>\n Give an open thread back to an assistant\n\nCONTACTS\n contacts list People in this workspace\n contacts get <id>\n contacts upsert --email --name --external-id --phone\n contacts tag <id> <tag> Add a tag\n contacts journey <id> Timeline: conversations, events, tickets\n contacts cards <id> Customer-card data for this person\n\nTICKETS\n tickets list --status --queue\n tickets get <id>\n tickets comments <id>\n tickets queues\n tickets lineage <id> Merge and split history\n tickets time <id> Time logged\n tickets status-history <id>\n\nKNOWLEDGE + SEARCH\n search <query> Across contacts, conversations, messages, tickets, KB\n kb articles Help-centre articles\n kb article <slug>\n kb collections\n\nEVENTS\n events track <contact-id> <name>\n Fire a CDP event. --prop key=value, repeatable\n events list --contact-id\n\nBOTS + EXTERNAL AGENTS\n bots list | get <id>\n bots create --body. type:\"external\" answers with a secret, ONCE\n bots update <id> --body\n bots update-external <id> --body. webhookUrl, timeoutSeconds, fallbackMessage\n bots rotate-secret <id> New signing secret, shown once.
|
|
25
|
+
export declare const HELP = "chatly \u2014 the Chatly command line\n\nUSAGE\n chatly <command> [subcommand] [flags]\n\nAUTH\n login Store an API key in ~/.config/chatly/config.json (0600)\n logout Remove the stored key\n whoami Which workspace this key belongs to, and its scopes\n\nCONVERSATIONS\n conversations list Open conversations, newest first\n conversations get <id> One conversation\n conversations messages <id> The thread\n conversations send <id> <body>\n Reply as the key's machine identity\n conversations unattended Open with no agent reply yet\n conversations mood <id> Sentiment over the thread\n conversations return-to-bot <id> <bot-id>\n Give an open thread back to an assistant\n\nCONTACTS\n contacts list People in this workspace\n contacts get <id>\n contacts upsert --email --name --external-id --phone\n contacts tag <id> <tag> Add a tag\n contacts journey <id> Timeline: conversations, events, tickets\n contacts cards <id> Customer-card data for this person\n\nTICKETS\n tickets list --status --queue\n tickets get <id>\n tickets comments <id>\n tickets queues\n tickets lineage <id> Merge and split history\n tickets time <id> Time logged\n tickets status-history <id>\n\nKNOWLEDGE + SEARCH\n search <query> Across contacts, conversations, messages, tickets, KB\n kb articles Help-centre articles\n kb article <slug>\n kb collections\n\nEVENTS\n events track <contact-id> <name>\n Fire a CDP event. --prop key=value, repeatable\n events list --contact-id\n\nBOTS + EXTERNAL AGENTS\n bots list | get <id>\n bots create --body. type:\"external\" answers with a secret, ONCE\n bots update <id> --body\n bots update-external <id> --body. webhookUrl, timeoutSeconds, fallbackMessage\n bots rotate-secret <id> New signing secret, shown once. Hard cut, or\n --activate-at <ISO instant> (\u2264168h) keeps the old\n one signing until then\n bots deliveries <id> The push ledger. --status pending|delivered|failed|dead\n bots delivery <id> <delivery-id>\n One delivery, with the exact signed payload\n bots redeliver <id> <delivery-id>\n Queue the recorded payload again, from attempt 0\n bots test-delivery <id> Sign and POST a rehearsal payload; prints the response\n\nROUTING + AUTOMATION\n bot-routes list | fields | create | update <id> | delete <id>\n bot-routes resolve Dry-run the table. --body with a hypothetical visitor\n triggers list | get <id> | upsert | delete <id>\n brands list | get <id> | create | update <id> | delete <id>\n macros list | get <id> | create | update <id> | delete <id>\n email-templates templates | get <kind> | set <kind> | reset <kind>\n knowledge-gaps list | triage <id>\n\nINTEGRATIONS\n webhooks deliveries --status\n webhooks delivery <id>\n webhooks redeliver <id>\n webhooks endpoints Subscriptions, not traffic\n webhooks events The subscribable event catalogue\n webhooks schema-versions\n webhooks create --url --event (repeatable). Answers with whsec_, once\n webhooks pin <id> <version>\n customer-cards list | create | update <id> | delete <id>\n customer-cards rotate-secret <id>\n Update your endpoint BEFORE calling this\n docs-sources list | providers | discover | create | update <id> | delete <id>\n docs-sources sync <id> --full re-reads every page\n docs-sources subscribe <id> A refusal is a success: read the response\n channels list | get <id> | adapters | create | update <id>\n channels rotate-secret <id>\n\nDEVELOPING AGAINST WEBHOOKS AND AGENTS\n listen Tail this workspace's webhook deliveries and POST\n each one to a local URL. Registers nothing\n --forward-to <url> where to POST (omit to print only)\n --secret <whsec_\u2026> sign the forwarded request\n --endpoint <id> one subscription's traffic only\n --event <name> repeatable; filters client-side\n --status <s> pending | delivered | failed | dead\n --replay <n> forward the n newest rows first\n --interval <seconds> poll interval, default 2\n listen --bot <id> Tail one external agent's push deliveries instead,\n the same ledger as 'bots deliveries'. Same flags, except:\n --secret <chsec_\u2026> the AGENT's secret, not whsec_\n --event <kind> message | transfer (agent.message too)\n Forwards the payload itself, with the five\n x-chatly-* headers a real delivery carries\n listen --relay Receive LIVE tool calls, card fetches and canvas steps\n on localhost and answer them. Takes PRODUCTION traffic\n for the ids named, so they are required:\n --tool <id> | --card <id> | --canvas <channelId>\n --forward-to <url> required; each call's path is appended\n --secret <s> or <id>=<s>, repeatable; re-signs\n Detaches after 10 minutes idle, or on Ctrl-C. The\n dashboard shows a banner for as long as it is attached\n\nWORKSPACE AS CODE\n plan Diff chatly.json against the live workspace. Reads only\n apply Make the plan's changes. Never deletes unless told\n --file <path> the document (- for stdin). Default: ./chatly.json\n --prune also delete what the document omits\n --write-only also send fields that cannot be read back\n --exit-code plan only: exit 2 when there is drift\n\nAI\n ai providers | quota\n ai add-provider BYOK. --body\n ai test-provider <key>\n ai tools | create-tool | update-tool <id> | delete-tool <id>\n ai tone | set-tone | generate-tone <sample>\n\nREPORTS\n reports overview --days\n reports agents Means, not percentiles\n reports conversations-by-day\n reports sources | response-times | voice\n reports attribution <dim> One of ten dimensions; an unknown one is refused\n reports cohorts --weeks, NOT --days\n reports themes --date. A daily snapshot; there is no regenerate\n reports theme-conversations <theme-id>\n reports teams | labels | sla\n --from --to --days --group-by\n\nBILLING\n billing summary | plans | invoices\n billing usage <event-type> One meter over a window. --from --to\n billing usage-daily <event-type>\n Dense: one row per UTC day, zeros included\n billing usage-monthly --month\n\nWORKSPACE\n workspace settings\n workspace labels | inboxes | skills\n workspace team-members <team-id>\n workspace key-scopes What a key may be granted\n\nRAW\n api <METHOD> <path> Any route, with auth, idempotency and retries\n chatly api GET /v1/feature-flags\n chatly api POST /v1/macros --body '{\"name\":\"Refund\"}'\n\nGLOBAL FLAGS\n --json Raw API response instead of a table\n --all Follow pagination to the end (list commands)\n --limit <n> Page size\n --cursor <c> Start from a cursor\n --key <ck_\u2026> Override the stored key for this call\n --api-url <url> Point at another Chatly environment\n --help, --version\n\nDocs: https://chatlychat.com/docs/sdk-cli\n";
|
|
26
26
|
//# sourceMappingURL=help.d.ts.map
|
package/dist/help.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,IAAI,
|
|
1
|
+
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,IAAI,ooQA2KhB,CAAC"}
|
package/dist/help.js
CHANGED
|
@@ -76,7 +76,9 @@ BOTS + EXTERNAL AGENTS
|
|
|
76
76
|
bots create --body. type:"external" answers with a secret, ONCE
|
|
77
77
|
bots update <id> --body
|
|
78
78
|
bots update-external <id> --body. webhookUrl, timeoutSeconds, fallbackMessage
|
|
79
|
-
bots rotate-secret <id> New signing secret, shown once.
|
|
79
|
+
bots rotate-secret <id> New signing secret, shown once. Hard cut, or
|
|
80
|
+
--activate-at <ISO instant> (≤168h) keeps the old
|
|
81
|
+
one signing until then
|
|
80
82
|
bots deliveries <id> The push ledger. --status pending|delivered|failed|dead
|
|
81
83
|
bots delivery <id> <delivery-id>
|
|
82
84
|
One delivery, with the exact signed payload
|
|
@@ -111,6 +113,31 @@ INTEGRATIONS
|
|
|
111
113
|
channels list | get <id> | adapters | create | update <id>
|
|
112
114
|
channels rotate-secret <id>
|
|
113
115
|
|
|
116
|
+
DEVELOPING AGAINST WEBHOOKS AND AGENTS
|
|
117
|
+
listen Tail this workspace's webhook deliveries and POST
|
|
118
|
+
each one to a local URL. Registers nothing
|
|
119
|
+
--forward-to <url> where to POST (omit to print only)
|
|
120
|
+
--secret <whsec_…> sign the forwarded request
|
|
121
|
+
--endpoint <id> one subscription's traffic only
|
|
122
|
+
--event <name> repeatable; filters client-side
|
|
123
|
+
--status <s> pending | delivered | failed | dead
|
|
124
|
+
--replay <n> forward the n newest rows first
|
|
125
|
+
--interval <seconds> poll interval, default 2
|
|
126
|
+
listen --bot <id> Tail one external agent's push deliveries instead,
|
|
127
|
+
the same ledger as 'bots deliveries'. Same flags, except:
|
|
128
|
+
--secret <chsec_…> the AGENT's secret, not whsec_
|
|
129
|
+
--event <kind> message | transfer (agent.message too)
|
|
130
|
+
Forwards the payload itself, with the five
|
|
131
|
+
x-chatly-* headers a real delivery carries
|
|
132
|
+
listen --relay Receive LIVE tool calls, card fetches and canvas steps
|
|
133
|
+
on localhost and answer them. Takes PRODUCTION traffic
|
|
134
|
+
for the ids named, so they are required:
|
|
135
|
+
--tool <id> | --card <id> | --canvas <channelId>
|
|
136
|
+
--forward-to <url> required; each call's path is appended
|
|
137
|
+
--secret <s> or <id>=<s>, repeatable; re-signs
|
|
138
|
+
Detaches after 10 minutes idle, or on Ctrl-C. The
|
|
139
|
+
dashboard shows a banner for as long as it is attached
|
|
140
|
+
|
|
114
141
|
WORKSPACE AS CODE
|
|
115
142
|
plan Diff chatly.json against the live workspace. Reads only
|
|
116
143
|
apply Make the plan's changes. Never deletes unless told
|
package/dist/help.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help.js","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG
|
|
1
|
+
{"version":3,"file":"help.js","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2KnB,CAAC"}
|
package/dist/run.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAkB,YAAY,EAAwB,MAAM,sBAAsB,CAAC;AAE1F,OAAO,EAAwB,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAkB,YAAY,EAAwB,MAAM,sBAAsB,CAAC;AAE1F,OAAO,EAAwB,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AA0BlE;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAC7B,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,UAAU,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,CAwDpE,CAAC;AAEF,2EAA2E;AAC3E,eAAO,MAAM,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAiBpD,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,KAAK,YAAY,CAAC;AAIxF,wBAAsB,GAAG,CACvB,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,EAC3B,UAAU,GAAE,aAA8B,GACzC,OAAO,CAAC,MAAM,CAAC,CAkDjB;AAED;;;;;;;GAOG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAqBvE"}
|
package/dist/run.js
CHANGED
|
@@ -13,6 +13,7 @@ import * as auth from './commands/auth.js';
|
|
|
13
13
|
import * as config from './commands/config.js';
|
|
14
14
|
import * as insights from './commands/insights.js';
|
|
15
15
|
import * as integrations from './commands/integrations.js';
|
|
16
|
+
import * as listenCmd from './commands/listen.js';
|
|
16
17
|
import * as cmd from './commands/resources.js';
|
|
17
18
|
import * as wac from './commands/workspace-as-code.js';
|
|
18
19
|
import { resolveCredentials } from './config.js';
|
|
@@ -26,7 +27,7 @@ import { HELP } from './help.js';
|
|
|
26
27
|
* drifts — it said `0.1.0` while the published package was `0.1.2` — so
|
|
27
28
|
* `cli.spec.ts` asserts the two agree and fails if they do not.
|
|
28
29
|
*/
|
|
29
|
-
const VERSION = '0.
|
|
30
|
+
const VERSION = '0.3.0';
|
|
30
31
|
/** Commands that need no credential. Everything else resolves a key first. */
|
|
31
32
|
const UNAUTHENTICATED = new Set(['login', 'logout', 'help', 'version']);
|
|
32
33
|
/**
|
|
@@ -62,6 +63,15 @@ export const COMMANDS = {
|
|
|
62
63
|
'knowledge-gaps': config.knowledgeGaps,
|
|
63
64
|
// ── Integrations ──────────────────────────────────────────────────────
|
|
64
65
|
webhooks: integrations.webhooks,
|
|
66
|
+
/*
|
|
67
|
+
* `listen` sits beside `webhooks` rather than under it, because it is not a
|
|
68
|
+
* CRUD verb on the same resource — it is the `stripe listen` equivalent, a
|
|
69
|
+
* long-running tail, and it is what a developer types without reading
|
|
70
|
+
* anything first. Read `commands/listen.ts`'s header before changing how it
|
|
71
|
+
* gets its events: the three possible designs are enumerated there and two
|
|
72
|
+
* of them are impossible with a `ck_` key.
|
|
73
|
+
*/
|
|
74
|
+
listen: listenCmd.listen,
|
|
65
75
|
'customer-cards': integrations.customerCards,
|
|
66
76
|
'docs-sources': integrations.docsSources,
|
|
67
77
|
channels: integrations.channels,
|
package/dist/run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chatlychat/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "The Chatly command line — inspect conversations, send replies, read reports and call any API route from a terminal.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://github.com/chatlychat/chatly-cli#readme",
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"LICENSE"
|
|
31
31
|
],
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@chatlychat/sdk-node": "0.
|
|
33
|
+
"@chatlychat/sdk-node": "0.6.0"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
36
|
"@types/node": "20.14.10",
|