@pingroom/sdk 0.2.0 → 0.3.1
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 +217 -4
- package/dist/client.d.ts +82 -2
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +181 -1
- package/dist/client.js.map +1 -1
- package/dist/errors.d.ts +8 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +8 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/linkPing.d.ts +27 -0
- package/dist/linkPing.d.ts.map +1 -0
- package/dist/linkPing.js +39 -0
- package/dist/linkPing.js.map +1 -0
- package/dist/liveActivity.d.ts +101 -0
- package/dist/liveActivity.d.ts.map +1 -0
- package/dist/liveActivity.js +83 -0
- package/dist/liveActivity.js.map +1 -0
- package/dist/liveStatus.d.ts +168 -0
- package/dist/liveStatus.d.ts.map +1 -0
- package/dist/liveStatus.js +82 -0
- package/dist/liveStatus.js.map +1 -0
- package/dist/types.d.ts +183 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/webhooks.d.ts +32 -6
- package/dist/webhooks.d.ts.map +1 -1
- package/dist/webhooks.js +69 -13
- package/dist/webhooks.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Live-status streams — the wire contract for driving a Live Activity.
|
|
3
|
+
*
|
|
4
|
+
* A stream is keyed by `correlation_id`: the first ping starts a live card on
|
|
5
|
+
* every room member's lock screen (one alert), further `running` pings move it
|
|
6
|
+
* silently, and the first `done`/`failed` sends one completion alert and ends
|
|
7
|
+
* it. See https://pingroom.io/liveactivities.md.
|
|
8
|
+
*
|
|
9
|
+
* Three producers speak this contract. This SDK reaches the two machine ones:
|
|
10
|
+
* - a room's **incoming webhook** (Pro) — `sendIncomingWebhook()`
|
|
11
|
+
* - an **agent credential** — `pr.live.*` (needs `pingroom:live:write`)
|
|
12
|
+
*
|
|
13
|
+
* The third is a signed-in person driving a stream from the app composer over
|
|
14
|
+
* `POST /api/rooms/{inviteCode}/live` with their own Human JWT. It sends this
|
|
15
|
+
* same body minus `live_status.agent_id` (stripped server-side), so these
|
|
16
|
+
* builders describe it too — but it is not an agent route and has no client
|
|
17
|
+
* here.
|
|
18
|
+
*
|
|
19
|
+
* Not to be confused with `liveActivity.*` in ./liveActivity.ts, which builds
|
|
20
|
+
* the frozen *native* `{ attributes, content_state }` push shape for tests and
|
|
21
|
+
* tooling. These builders produce the `live_status` object you actually send.
|
|
22
|
+
*/
|
|
23
|
+
const ping = (correlationId, live, rest = {}) => ({
|
|
24
|
+
correlation_id: correlationId,
|
|
25
|
+
live_status: live,
|
|
26
|
+
...rest,
|
|
27
|
+
});
|
|
28
|
+
/**
|
|
29
|
+
* Builders for the common stream shapes. Each returns a body you can hand to
|
|
30
|
+
* `pr.live.push()` or `sendIncomingWebhook()`.
|
|
31
|
+
*/
|
|
32
|
+
export const liveStatus = {
|
|
33
|
+
/** Default template: a title line plus a status dot, with optional progress. */
|
|
34
|
+
status(correlationId, live, rest) {
|
|
35
|
+
return ping(correlationId, { template: 'status', ...live }, rest);
|
|
36
|
+
},
|
|
37
|
+
/** A segmented step tracker. `steps` is required on the first ping. */
|
|
38
|
+
steps(correlationId, live, rest) {
|
|
39
|
+
return ping(correlationId, { template: 'steps', ...live }, rest);
|
|
40
|
+
},
|
|
41
|
+
/** A determinate progress bar with an optional live ETA. */
|
|
42
|
+
progress(correlationId, live, rest) {
|
|
43
|
+
return ping(correlationId, { template: 'progress', ...live }, rest);
|
|
44
|
+
},
|
|
45
|
+
/** Up to 3 labelled counters. */
|
|
46
|
+
metrics(correlationId, live, rest) {
|
|
47
|
+
return ping(correlationId, { template: 'metrics', ...live }, rest);
|
|
48
|
+
},
|
|
49
|
+
/** A large live timer counting down to `deadline_at`. */
|
|
50
|
+
countdown(correlationId, live, rest) {
|
|
51
|
+
return ping(correlationId, { template: 'countdown', ...live }, rest);
|
|
52
|
+
},
|
|
53
|
+
/** A prompt with up to 4 options shown on the lock screen. */
|
|
54
|
+
question(correlationId, live, rest) {
|
|
55
|
+
return ping(correlationId, { template: 'question', ...live }, rest);
|
|
56
|
+
},
|
|
57
|
+
/** Two sides plus a center score/clock. */
|
|
58
|
+
matchup(correlationId, live, rest) {
|
|
59
|
+
return ping(correlationId, { template: 'matchup', ...live }, rest);
|
|
60
|
+
},
|
|
61
|
+
/**
|
|
62
|
+
* An urgent stream, delivered time-sensitive from the start so it breaks
|
|
63
|
+
* through Focus.
|
|
64
|
+
*
|
|
65
|
+
* This is a `category`, not a `template`: `alert` has no template equivalent,
|
|
66
|
+
* and it is the only way to start time-sensitive WITHOUT also setting
|
|
67
|
+
* `requires_ack` (which demands somebody tap). Fixed at creation, like
|
|
68
|
+
* `template`.
|
|
69
|
+
*/
|
|
70
|
+
alert(correlationId, live, rest) {
|
|
71
|
+
return ping(correlationId, { category: 'alert', ...live }, rest);
|
|
72
|
+
},
|
|
73
|
+
/** Finish a stream. The one alert your stream earns. */
|
|
74
|
+
done(correlationId, message, rest) {
|
|
75
|
+
return ping(correlationId, { state: 'done', ...(message ? { message } : {}) }, rest);
|
|
76
|
+
},
|
|
77
|
+
/** Finish a stream unsuccessfully. */
|
|
78
|
+
failed(correlationId, message, rest) {
|
|
79
|
+
return ping(correlationId, { state: 'failed', ...(message ? { message } : {}) }, rest);
|
|
80
|
+
},
|
|
81
|
+
};
|
|
82
|
+
//# sourceMappingURL=liveStatus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"liveStatus.js","sourceRoot":"","sources":["../src/liveStatus.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AA2HH,MAAM,IAAI,GAAG,CAAC,aAAqB,EAAE,IAAgB,EAAE,OAAa,EAAE,EAAkB,EAAE,CAAC,CAAC;IAC1F,cAAc,EAAE,aAAa;IAC7B,WAAW,EAAE,IAAI;IACjB,GAAG,IAAI;CACR,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,gFAAgF;IAChF,MAAM,CAAC,aAAqB,EAAE,IAAkC,EAAE,IAAW;QAC3E,OAAO,IAAI,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;IACpE,CAAC;IAED,uEAAuE;IACvE,KAAK,CAAC,aAAqB,EAAE,IAAkC,EAAE,IAAW;QAC1E,OAAO,IAAI,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;IACnE,CAAC;IAED,4DAA4D;IAC5D,QAAQ,CAAC,aAAqB,EAAE,IAAkC,EAAE,IAAW;QAC7E,OAAO,IAAI,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;IACtE,CAAC;IAED,iCAAiC;IACjC,OAAO,CAAC,aAAqB,EAAE,IAAkC,EAAE,IAAW;QAC5E,OAAO,IAAI,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;IACrE,CAAC;IAED,yDAAyD;IACzD,SAAS,CAAC,aAAqB,EAAE,IAAkC,EAAE,IAAW;QAC9E,OAAO,IAAI,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;IACvE,CAAC;IAED,8DAA8D;IAC9D,QAAQ,CAAC,aAAqB,EAAE,IAAkC,EAAE,IAAW;QAC7E,OAAO,IAAI,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;IACtE,CAAC;IAED,2CAA2C;IAC3C,OAAO,CAAC,aAAqB,EAAE,IAAkC,EAAE,IAAW;QAC5E,OAAO,IAAI,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;IACrE,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,aAAqB,EAAE,IAA+C,EAAE,IAAW;QACvF,OAAO,IAAI,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;IACnE,CAAC;IAED,wDAAwD;IACxD,IAAI,CAAC,aAAqB,EAAE,OAAgB,EAAE,IAAW;QACvD,OAAO,IAAI,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IACvF,CAAC;IAED,sCAAsC;IACtC,MAAM,CAAC,aAAqB,EAAE,OAAgB,EAAE,IAAW;QACzD,OAAO,IAAI,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IACzF,CAAC;CACF,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -10,7 +10,7 @@ export type JsonObject = Record<string, unknown>;
|
|
|
10
10
|
/** Minimal fetch signature the SDK depends on (Node >= 18, browsers, workers, Deno, Bun). */
|
|
11
11
|
export type FetchLike = (input: string, init?: RequestInit) => Promise<Response>;
|
|
12
12
|
/** The scopes an agent credential can hold. */
|
|
13
|
-
export type AgentScope = 'pingroom:rooms:read' | 'pingroom:rooms:write' | 'pingroom:rooms:publish' | 'pingroom:rooms:join' | 'pingroom:actions:write' | 'pingroom:actions:trigger' | 'pingroom:broadcast:send' | 'pingroom:notifications:read' | 'pingroom:webhooks:read' | 'pingroom:webhooks:write' | 'pingroom:webhooks:delete' | 'pingroom:agents:ping' | 'pingroom:approvals:request' | 'pingroom:questions:ask' | 'pingroom:profile:write';
|
|
13
|
+
export type AgentScope = 'pingroom:rooms:read' | 'pingroom:rooms:write' | 'pingroom:rooms:publish' | 'pingroom:rooms:join' | 'pingroom:actions:write' | 'pingroom:actions:trigger' | 'pingroom:broadcast:send' | 'pingroom:notifications:read' | 'pingroom:webhooks:read' | 'pingroom:webhooks:write' | 'pingroom:webhooks:delete' | 'pingroom:agents:ping' | 'pingroom:approvals:request' | 'pingroom:questions:ask' | 'pingroom:handoffs:create' | 'pingroom:profile:write';
|
|
14
14
|
/** A known scope, or any forward-compatible string (keeps autocomplete on the knowns). */
|
|
15
15
|
export type ScopeInput = AgentScope | (string & {});
|
|
16
16
|
export interface PingRoomOptions {
|
|
@@ -61,6 +61,8 @@ export interface QuickActionInput {
|
|
|
61
61
|
icon: string;
|
|
62
62
|
sound?: string | null;
|
|
63
63
|
haptic_style?: string | null;
|
|
64
|
+
/** Every fire of this reusable action opens the acknowledgement lifecycle. */
|
|
65
|
+
requires_ack?: boolean;
|
|
64
66
|
}
|
|
65
67
|
export interface CreateRoomInput {
|
|
66
68
|
name: string;
|
|
@@ -86,6 +88,8 @@ export interface UpdateQuickActionInput {
|
|
|
86
88
|
icon: string;
|
|
87
89
|
sound?: string | null;
|
|
88
90
|
haptic_style?: string | null;
|
|
91
|
+
/** Every fire of this reusable action opens the acknowledgement lifecycle. */
|
|
92
|
+
requires_ack?: boolean;
|
|
89
93
|
}
|
|
90
94
|
export interface QuickAction {
|
|
91
95
|
id?: string;
|
|
@@ -94,6 +98,8 @@ export interface QuickAction {
|
|
|
94
98
|
icon: string;
|
|
95
99
|
sound?: string | null;
|
|
96
100
|
haptic_style?: string | null;
|
|
101
|
+
/** Every fire of this reusable action opens the acknowledgement lifecycle. */
|
|
102
|
+
requires_ack?: boolean;
|
|
97
103
|
[key: string]: unknown;
|
|
98
104
|
}
|
|
99
105
|
export interface Room {
|
|
@@ -112,13 +118,36 @@ export interface PingInput {
|
|
|
112
118
|
message: string;
|
|
113
119
|
action_number?: number;
|
|
114
120
|
action_icon?: string;
|
|
121
|
+
/**
|
|
122
|
+
* Structured data echoed on every read surface (<= 25 keys / 8KB).
|
|
123
|
+
* Reserved keys `url` + `button_label` make the ping a tappable link —
|
|
124
|
+
* see the `linkPing()` helper.
|
|
125
|
+
*/
|
|
115
126
|
data?: JsonObject;
|
|
116
127
|
correlation_id?: string;
|
|
117
128
|
reply_to?: string;
|
|
129
|
+
/** Open the acknowledgement lifecycle for this ping. First acknowledgement wins. */
|
|
130
|
+
requires_ack?: boolean;
|
|
131
|
+
/** Optional acknowledgement deadline in seconds. Omit/null for no deadline. */
|
|
132
|
+
ack_timeout_seconds?: number | null;
|
|
118
133
|
}
|
|
119
134
|
export interface TriggerInput {
|
|
120
135
|
trigger_source?: string;
|
|
121
136
|
}
|
|
137
|
+
/** The server-authoritative acknowledgement lifecycle attached to a ping. */
|
|
138
|
+
export interface ActionState {
|
|
139
|
+
status: 'open' | 'acked' | 'expired' | null;
|
|
140
|
+
requires_ack: boolean;
|
|
141
|
+
acked_by: {
|
|
142
|
+
id: string | null;
|
|
143
|
+
name: string | null;
|
|
144
|
+
profile_image: string | null;
|
|
145
|
+
} | null;
|
|
146
|
+
acked_at: string | null;
|
|
147
|
+
expires_at: string | null;
|
|
148
|
+
/** Viewer-specific human mutation eligibility; agent read paths return false. */
|
|
149
|
+
can_ack?: boolean;
|
|
150
|
+
}
|
|
122
151
|
export interface PingResult {
|
|
123
152
|
id: string;
|
|
124
153
|
message: string;
|
|
@@ -128,6 +157,7 @@ export interface PingResult {
|
|
|
128
157
|
data?: JsonObject | null;
|
|
129
158
|
correlation_id?: string | null;
|
|
130
159
|
reply_to?: string | null;
|
|
160
|
+
action_state?: ActionState | null;
|
|
131
161
|
created_at: string;
|
|
132
162
|
recipient_count?: number;
|
|
133
163
|
muted_count?: number;
|
|
@@ -140,6 +170,7 @@ export interface DirectPingResult {
|
|
|
140
170
|
message: string;
|
|
141
171
|
correlation_id: string | null;
|
|
142
172
|
reply_to: string | null;
|
|
173
|
+
action_state?: ActionState | null;
|
|
143
174
|
created_at: string;
|
|
144
175
|
[key: string]: unknown;
|
|
145
176
|
}
|
|
@@ -152,6 +183,7 @@ export interface AgentNotification {
|
|
|
152
183
|
data?: JsonObject | null;
|
|
153
184
|
correlation_id?: string | null;
|
|
154
185
|
reply_to?: string | null;
|
|
186
|
+
action_state?: ActionState | null;
|
|
155
187
|
created_at: string;
|
|
156
188
|
room?: {
|
|
157
189
|
code: string;
|
|
@@ -164,6 +196,16 @@ export interface AgentNotification {
|
|
|
164
196
|
name: string | null;
|
|
165
197
|
};
|
|
166
198
|
}
|
|
199
|
+
/** Full notification record returned by the single-notification read path. */
|
|
200
|
+
export type NotificationDetail = Omit<AgentNotification, 'room'> & {
|
|
201
|
+
room_id?: string;
|
|
202
|
+
sender_id?: string;
|
|
203
|
+
type?: string;
|
|
204
|
+
requires_ack?: boolean;
|
|
205
|
+
action_state: ActionState | null;
|
|
206
|
+
room?: Room;
|
|
207
|
+
[key: string]: unknown;
|
|
208
|
+
};
|
|
167
209
|
export interface ListNotificationsInput {
|
|
168
210
|
type?: string;
|
|
169
211
|
room_id?: string;
|
|
@@ -183,6 +225,15 @@ export interface WaitResult {
|
|
|
183
225
|
notifications: AgentNotification[];
|
|
184
226
|
cursor: string;
|
|
185
227
|
}
|
|
228
|
+
export interface WaitForAcknowledgementInput {
|
|
229
|
+
/** Seconds to hold the connection (0–30, default 20). */
|
|
230
|
+
timeout?: number;
|
|
231
|
+
signal?: AbortSignal;
|
|
232
|
+
}
|
|
233
|
+
export interface AcknowledgementWaitResult {
|
|
234
|
+
id: string;
|
|
235
|
+
action_state: ActionState;
|
|
236
|
+
}
|
|
186
237
|
export interface ListenInput {
|
|
187
238
|
after?: string;
|
|
188
239
|
timeout?: number;
|
|
@@ -333,6 +384,137 @@ export interface ListQuestionsInput {
|
|
|
333
384
|
/** Filter by state; `all` returns every state. Omit for the recent window across states. */
|
|
334
385
|
state?: QuestionState | 'all';
|
|
335
386
|
}
|
|
387
|
+
/** Which primitive backs a handoff: an acknowledgement or a multi-option question. */
|
|
388
|
+
export type HandoffKind = 'ack' | 'question';
|
|
389
|
+
/** The lifecycle states of an `ack` handoff. Terminal: `acked`, `expired`. */
|
|
390
|
+
export type HandoffAckState = 'open' | 'acked' | 'expired';
|
|
391
|
+
/** The lifecycle states of a `question` handoff. Terminal: `answered`, `expired`, `cancelled`. */
|
|
392
|
+
export type HandoffQuestionState = 'answered' | 'expired' | 'cancelled' | 'pending';
|
|
393
|
+
/** The full handoff state space (union of ack + question states). */
|
|
394
|
+
export type HandoffState = HandoffAckState | HandoffQuestionState;
|
|
395
|
+
/**
|
|
396
|
+
* Whether the ping was enqueued, remains pending dispatch, or exhausted its
|
|
397
|
+
* retry budget (`failed`). Only populated on create; null on reads.
|
|
398
|
+
*/
|
|
399
|
+
export type HandoffDeliveryState = 'enqueued' | 'pending' | 'failed';
|
|
400
|
+
/** One option offered on a `question` handoff. A bare string is shorthand for `{ value, label: value }`. */
|
|
401
|
+
export interface HandoffOptionInput {
|
|
402
|
+
/** Stable machine token returned as the answer. */
|
|
403
|
+
value: string;
|
|
404
|
+
/** Human text on the button (defaults to `value`). */
|
|
405
|
+
label?: string;
|
|
406
|
+
/** Presentation hint: `primary` = affirmative, `danger` = cancel/negative. */
|
|
407
|
+
style?: 'primary' | 'danger' | 'default';
|
|
408
|
+
}
|
|
409
|
+
export type HandoffOptionSpec = string | HandoffOptionInput;
|
|
410
|
+
/** A resolved option on the handoff wire shape. */
|
|
411
|
+
export interface HandoffOption {
|
|
412
|
+
value: string;
|
|
413
|
+
label: string;
|
|
414
|
+
[key: string]: unknown;
|
|
415
|
+
}
|
|
416
|
+
/** The human who acknowledged an `ack` handoff (present once `state === 'acked'`). */
|
|
417
|
+
export interface HandoffAcker {
|
|
418
|
+
/** Null when the actor is redacted (reader-privacy). */
|
|
419
|
+
id: string | null;
|
|
420
|
+
display_name: string | null;
|
|
421
|
+
}
|
|
422
|
+
/** The resolution of a `question` handoff (present once `state === 'answered'`). */
|
|
423
|
+
export interface HandoffAnswer {
|
|
424
|
+
/** The chosen option's `value`, or null for a text-only answer. */
|
|
425
|
+
value: string | null;
|
|
426
|
+
/** The chosen option's `label`. */
|
|
427
|
+
label: string | null;
|
|
428
|
+
/** The typed answer, when the question invited one. */
|
|
429
|
+
text: string | null;
|
|
430
|
+
/** The authenticated human who answered. */
|
|
431
|
+
responder: {
|
|
432
|
+
id: string | null;
|
|
433
|
+
display_name: string | null;
|
|
434
|
+
} | null;
|
|
435
|
+
answered_at: string | null;
|
|
436
|
+
}
|
|
437
|
+
/**
|
|
438
|
+
* The public handoff wire shape — identical across create / get / wait / list.
|
|
439
|
+
* `options`/`answer` appear on question handoffs; `acked_by`/`acked_at` on ack
|
|
440
|
+
* handoffs.
|
|
441
|
+
*/
|
|
442
|
+
export interface Handoff {
|
|
443
|
+
id: string;
|
|
444
|
+
kind: HandoffKind;
|
|
445
|
+
prompt: string;
|
|
446
|
+
state: HandoffState;
|
|
447
|
+
/** Delivery status, populated only on create; null on reads. */
|
|
448
|
+
delivery_state: HandoffDeliveryState | null;
|
|
449
|
+
correlation_id: string | null;
|
|
450
|
+
reply_to: string | null;
|
|
451
|
+
data: JsonObject | null;
|
|
452
|
+
expires_at: string | null;
|
|
453
|
+
created_at: string | null;
|
|
454
|
+
/** ack handoff: the human who acknowledged (once `state === 'acked'`). */
|
|
455
|
+
acked_by?: HandoffAcker | null;
|
|
456
|
+
/** ack handoff: when it was acknowledged. */
|
|
457
|
+
acked_at?: string | null;
|
|
458
|
+
/** question handoff: the offered options. */
|
|
459
|
+
options?: HandoffOption[];
|
|
460
|
+
/** question handoff: the resolution (once `state === 'answered'`). */
|
|
461
|
+
answer?: HandoffAnswer | null;
|
|
462
|
+
[key: string]: unknown;
|
|
463
|
+
}
|
|
464
|
+
/** Ask a human to acknowledge (the ack handoff). Resolves on the first acknowledgement. */
|
|
465
|
+
export interface RequestAckInput {
|
|
466
|
+
/** What the human reads (required, ≤ 500 chars). */
|
|
467
|
+
prompt: string;
|
|
468
|
+
/** Who to reach: `me` (the bound human, the default) or a user UUID. */
|
|
469
|
+
target?: string;
|
|
470
|
+
/** Seconds until expiry. Clamped server-side to 120–86400; default 900. */
|
|
471
|
+
expiresIn?: number;
|
|
472
|
+
/** Interruption level — `active` (default) or `passive`. */
|
|
473
|
+
urgency?: 'active' | 'passive';
|
|
474
|
+
correlationId?: string;
|
|
475
|
+
replyTo?: string;
|
|
476
|
+
data?: JsonObject;
|
|
477
|
+
/**
|
|
478
|
+
* Idempotency key — same key + same body replays the original resource; a
|
|
479
|
+
* different body for the same key returns a 409 `idempotency_conflict`.
|
|
480
|
+
* Reuse it verbatim on network retries.
|
|
481
|
+
*/
|
|
482
|
+
idempotencyKey?: string;
|
|
483
|
+
}
|
|
484
|
+
/** Ask a human a multi-option question (the question handoff). Resolves on the first tapped answer. */
|
|
485
|
+
export interface AskInput extends RequestAckInput {
|
|
486
|
+
/** 2–4 options. A bare string is shorthand for `{ value, label: value }`. */
|
|
487
|
+
options: HandoffOptionSpec[];
|
|
488
|
+
}
|
|
489
|
+
export interface WaitHandoffInput {
|
|
490
|
+
/** Seconds the server holds the connection (server caps at 25s; default 20). */
|
|
491
|
+
timeout?: number;
|
|
492
|
+
signal?: AbortSignal;
|
|
493
|
+
}
|
|
494
|
+
export interface ListHandoffsInput {
|
|
495
|
+
/** `open` for unresolved work, or `all` for recent history (up to 200 per kind). */
|
|
496
|
+
state?: 'open' | 'all';
|
|
497
|
+
}
|
|
498
|
+
/** Idempotent first-connect result from POST /api/agent/inbox/ensure. */
|
|
499
|
+
export interface AgentInboxEnsureResult {
|
|
500
|
+
onboarded: true;
|
|
501
|
+
replayed: boolean;
|
|
502
|
+
room: {
|
|
503
|
+
id: string;
|
|
504
|
+
name: string;
|
|
505
|
+
invite_code: string;
|
|
506
|
+
is_agent_inbox: true;
|
|
507
|
+
};
|
|
508
|
+
question: {
|
|
509
|
+
id: string;
|
|
510
|
+
kind: 'question';
|
|
511
|
+
prompt: string;
|
|
512
|
+
options: HandoffOption[];
|
|
513
|
+
state: HandoffQuestionState;
|
|
514
|
+
expires_at: string | null;
|
|
515
|
+
created_at: string | null;
|
|
516
|
+
};
|
|
517
|
+
}
|
|
336
518
|
export interface RotateHandleResult {
|
|
337
519
|
handle: string;
|
|
338
520
|
[key: string]: unknown;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/version.d.ts
CHANGED
package/dist/version.js
CHANGED
package/dist/webhooks.d.ts
CHANGED
|
@@ -2,25 +2,36 @@
|
|
|
2
2
|
* Webhook helpers — usable standalone, no client/token required.
|
|
3
3
|
*
|
|
4
4
|
* - verifyWebhookSignature: verify an OUTGOING webhook PingRoom sent you.
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
5
|
+
* New deliveries carry both the legacy timestamp/body HMAC and a v2 HMAC
|
|
6
|
+
* that also binds the delivery ID. Verify over the EXACT raw request body
|
|
7
|
+
* bytes — re-serializing the parsed JSON will not match.
|
|
8
8
|
*
|
|
9
9
|
* - sendIncomingWebhook: fire a room's INCOMING webhook (the URL carries its
|
|
10
10
|
* own secret, so no agent token is needed) — the one-line CI/deploy ping.
|
|
11
|
+
* Pass a top-level `live_status` to drive a Live Activity instead.
|
|
11
12
|
*/
|
|
12
|
-
import type {
|
|
13
|
+
import type { LiveStatus } from './liveStatus.js';
|
|
14
|
+
import type { ActionState, FetchLike, JsonObject } from './types.js';
|
|
13
15
|
export declare const WEBHOOK_SIGNATURE_HEADER = "X-PingRoom-Signature";
|
|
16
|
+
export declare const WEBHOOK_SIGNATURE_V2_HEADER = "X-PingRoom-Signature-V2";
|
|
14
17
|
export declare const WEBHOOK_TIMESTAMP_HEADER = "X-PingRoom-Timestamp";
|
|
15
18
|
export declare const WEBHOOK_DELIVERY_HEADER = "X-PingRoom-Delivery";
|
|
16
19
|
export declare const WEBHOOK_EVENT_HEADER = "X-PingRoom-Event";
|
|
17
20
|
export interface VerifyWebhookSignatureOptions {
|
|
18
21
|
/** The raw request body — the exact bytes received, NOT a re-stringified object. */
|
|
19
22
|
payload: string | ArrayBuffer | Uint8Array;
|
|
20
|
-
/**
|
|
21
|
-
signature
|
|
23
|
+
/** Legacy X-PingRoom-Signature value (with or without the `sha256=` prefix). */
|
|
24
|
+
signature?: string | null;
|
|
25
|
+
/** X-PingRoom-Signature-V2 value. When present, v2 MUST verify; v1 is not tried. */
|
|
26
|
+
signatureV2?: string | null;
|
|
27
|
+
/** The X-PingRoom-Timestamp header value (Unix seconds). */
|
|
28
|
+
timestamp: string | number | null | undefined;
|
|
29
|
+
/** X-PingRoom-Delivery value required by the v2 signed message. */
|
|
30
|
+
deliveryId?: string | null;
|
|
22
31
|
/** The webhook's signing_secret. */
|
|
23
32
|
secret: string;
|
|
33
|
+
/** Allowed timestamp skew in seconds. Defaults to 300 (five minutes). */
|
|
34
|
+
maxAgeSeconds?: number;
|
|
24
35
|
}
|
|
25
36
|
/**
|
|
26
37
|
* Constant-time verification of an outgoing-webhook signature. Returns a
|
|
@@ -35,6 +46,20 @@ export interface IncomingWebhookPayload {
|
|
|
35
46
|
data?: JsonObject;
|
|
36
47
|
correlation_id?: string;
|
|
37
48
|
reply_to?: string;
|
|
49
|
+
/**
|
|
50
|
+
* Drive a Live Activity through this webhook. MUST be top-level — the server
|
|
51
|
+
* detects `live_status` on the request body, and strips it from `data` so a
|
|
52
|
+
* legacy-path caller cannot spoof completion alerts. Sending it nested under
|
|
53
|
+
* `data` silently produces an ordinary ping, not a stream.
|
|
54
|
+
*
|
|
55
|
+
* Requires `correlation_id`. Build it with the `liveStatus.*` helpers.
|
|
56
|
+
* See https://pingroom.io/liveactivities.md
|
|
57
|
+
*/
|
|
58
|
+
live_status?: LiveStatus;
|
|
59
|
+
/** Override the selected quick action and require acknowledgement for this ping. */
|
|
60
|
+
requires_ack?: boolean;
|
|
61
|
+
/** Optional acknowledgement deadline in seconds. Omit/null for no deadline. */
|
|
62
|
+
ack_timeout_seconds?: number | null;
|
|
38
63
|
}
|
|
39
64
|
export interface SendIncomingWebhookOptions {
|
|
40
65
|
/** Sent as the Idempotency-Key header; identical keys within ~1h replay the first result. */
|
|
@@ -49,6 +74,7 @@ export interface IncomingWebhookResult {
|
|
|
49
74
|
success: boolean;
|
|
50
75
|
notification_id?: string;
|
|
51
76
|
message?: string;
|
|
77
|
+
action_state?: ActionState | null;
|
|
52
78
|
[key: string]: unknown;
|
|
53
79
|
}
|
|
54
80
|
/** POST to a room's incoming-webhook URL (which embeds the secret in its path). */
|
package/dist/webhooks.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhooks.d.ts","sourceRoot":"","sources":["../src/webhooks.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"webhooks.d.ts","sourceRoot":"","sources":["../src/webhooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAGrE,eAAO,MAAM,wBAAwB,yBAAyB,CAAC;AAC/D,eAAO,MAAM,2BAA2B,4BAA4B,CAAC;AACrE,eAAO,MAAM,wBAAwB,yBAAyB,CAAC;AAC/D,eAAO,MAAM,uBAAuB,wBAAwB,CAAC;AAC7D,eAAO,MAAM,oBAAoB,qBAAqB,CAAC;AAEvD,MAAM,WAAW,6BAA6B;IAC5C,oFAAoF;IACpF,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,UAAU,CAAC;IAC3C,gFAAgF;IAChF,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,oFAAoF;IACpF,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,4DAA4D;IAC5D,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC9C,mEAAmE;IACnE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,oCAAoC;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,yEAAyE;IACzE,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,6BAA6B,GAAG,OAAO,CAAC,OAAO,CAAC,CAiClG;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wDAAwD;IACxD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;;;OAQG;IACH,WAAW,CAAC,EAAE,UAAU,CAAC;IACzB,oFAAoF;IACpF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,+EAA+E;IAC/E,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC;AAED,MAAM,WAAW,0BAA0B;IACzC,6FAA6F;IAC7F,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,4EAA4E;IAC5E,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAClC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,mFAAmF;AACnF,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,sBAAsB,EAC/B,OAAO,GAAE,0BAA+B,GACvC,OAAO,CAAC,qBAAqB,CAAC,CA+DhC"}
|
package/dist/webhooks.js
CHANGED
|
@@ -2,12 +2,13 @@
|
|
|
2
2
|
* Webhook helpers — usable standalone, no client/token required.
|
|
3
3
|
*
|
|
4
4
|
* - verifyWebhookSignature: verify an OUTGOING webhook PingRoom sent you.
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
5
|
+
* New deliveries carry both the legacy timestamp/body HMAC and a v2 HMAC
|
|
6
|
+
* that also binds the delivery ID. Verify over the EXACT raw request body
|
|
7
|
+
* bytes — re-serializing the parsed JSON will not match.
|
|
8
8
|
*
|
|
9
9
|
* - sendIncomingWebhook: fire a room's INCOMING webhook (the URL carries its
|
|
10
10
|
* own secret, so no agent token is needed) — the one-line CI/deploy ping.
|
|
11
|
+
* Pass a top-level `live_status` to drive a Live Activity instead.
|
|
11
12
|
*/
|
|
12
13
|
import { PingRoomError } from './errors.js';
|
|
13
14
|
import { combineSignals } from './internal/async.js';
|
|
@@ -15,6 +16,7 @@ import { assertActionNumber, assertStructuredData } from './internal/guards.js';
|
|
|
15
16
|
import { assertSecureUrl } from './internal/url.js';
|
|
16
17
|
import { VERSION } from './version.js';
|
|
17
18
|
export const WEBHOOK_SIGNATURE_HEADER = 'X-PingRoom-Signature';
|
|
19
|
+
export const WEBHOOK_SIGNATURE_V2_HEADER = 'X-PingRoom-Signature-V2';
|
|
18
20
|
export const WEBHOOK_TIMESTAMP_HEADER = 'X-PingRoom-Timestamp';
|
|
19
21
|
export const WEBHOOK_DELIVERY_HEADER = 'X-PingRoom-Delivery';
|
|
20
22
|
export const WEBHOOK_EVENT_HEADER = 'X-PingRoom-Event';
|
|
@@ -23,14 +25,38 @@ export const WEBHOOK_EVENT_HEADER = 'X-PingRoom-Event';
|
|
|
23
25
|
* boolean and never throws on mismatch.
|
|
24
26
|
*/
|
|
25
27
|
export async function verifyWebhookSignature(opts) {
|
|
26
|
-
|
|
28
|
+
const hasV2Signature = opts.signatureV2 !== null && opts.signatureV2 !== undefined;
|
|
29
|
+
const selectedSignature = hasV2Signature ? opts.signatureV2 : opts.signature;
|
|
30
|
+
if (!selectedSignature || !opts.secret) {
|
|
27
31
|
return false;
|
|
28
32
|
}
|
|
29
|
-
const
|
|
33
|
+
const timestamp = normalizeTimestamp(opts.timestamp);
|
|
34
|
+
if (timestamp === null) {
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
const maxAgeSeconds = opts.maxAgeSeconds ?? 300;
|
|
38
|
+
if (!Number.isFinite(maxAgeSeconds) || maxAgeSeconds < 0) {
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
if (Math.abs(Date.now() / 1000 - Number(timestamp)) > maxAgeSeconds) {
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
const provided = normalizeSignature(selectedSignature).toLowerCase();
|
|
30
45
|
if (!/^[0-9a-f]{64}$/.test(provided)) {
|
|
31
46
|
return false;
|
|
32
47
|
}
|
|
33
|
-
|
|
48
|
+
let message;
|
|
49
|
+
if (hasV2Signature) {
|
|
50
|
+
const deliveryId = normalizeDeliveryId(opts.deliveryId);
|
|
51
|
+
if (deliveryId === null) {
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
message = signedMessage(`v2\n${timestamp}\n${deliveryId}\n`, opts.payload);
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
message = signedMessage(`${timestamp}.`, opts.payload);
|
|
58
|
+
}
|
|
59
|
+
const expected = await hmacSha256Hex(opts.secret, message);
|
|
34
60
|
return timingSafeEqualHex(provided, expected);
|
|
35
61
|
}
|
|
36
62
|
/** POST to a room's incoming-webhook URL (which embeds the secret in its path). */
|
|
@@ -51,6 +77,16 @@ export async function sendIncomingWebhook(webhookUrl, payload, options = {}) {
|
|
|
51
77
|
body.correlation_id = payload.correlation_id;
|
|
52
78
|
if (payload.reply_to !== undefined)
|
|
53
79
|
body.reply_to = payload.reply_to;
|
|
80
|
+
// Top level, never folded into `data` — the server routes on this key and
|
|
81
|
+
// strips it from `data`. Omitting it from this whitelist (the pre-0.3.1 bug)
|
|
82
|
+
// posted only `{correlation_id}`, fell into the legacy webhook branch, and
|
|
83
|
+
// returned `success: true` having created no activity at all.
|
|
84
|
+
if (payload.live_status !== undefined)
|
|
85
|
+
body.live_status = payload.live_status;
|
|
86
|
+
if (payload.requires_ack !== undefined)
|
|
87
|
+
body.requires_ack = payload.requires_ack;
|
|
88
|
+
if (payload.ack_timeout_seconds !== undefined)
|
|
89
|
+
body.ack_timeout_seconds = payload.ack_timeout_seconds;
|
|
54
90
|
const headers = {
|
|
55
91
|
'Content-Type': 'application/json',
|
|
56
92
|
Accept: 'application/json',
|
|
@@ -99,19 +135,39 @@ function normalizeSignature(sig) {
|
|
|
99
135
|
const s = sig.trim();
|
|
100
136
|
return s.startsWith('sha256=') ? s.slice('sha256='.length) : s;
|
|
101
137
|
}
|
|
102
|
-
function
|
|
103
|
-
if (
|
|
104
|
-
return
|
|
138
|
+
function normalizeTimestamp(timestamp) {
|
|
139
|
+
if (timestamp === null || timestamp === undefined) {
|
|
140
|
+
return null;
|
|
105
141
|
}
|
|
106
|
-
|
|
107
|
-
|
|
142
|
+
const normalized = typeof timestamp === 'string' ? timestamp.trim() : String(timestamp);
|
|
143
|
+
if (!/^\d+$/.test(normalized)) {
|
|
144
|
+
return null;
|
|
108
145
|
}
|
|
109
|
-
|
|
146
|
+
const seconds = Number(normalized);
|
|
147
|
+
return Number.isSafeInteger(seconds) ? normalized : null;
|
|
148
|
+
}
|
|
149
|
+
function normalizeDeliveryId(deliveryId) {
|
|
150
|
+
return typeof deliveryId === 'string' && /^[\x21-\x7e]{1,255}$/.test(deliveryId)
|
|
151
|
+
? deliveryId
|
|
152
|
+
: null;
|
|
153
|
+
}
|
|
154
|
+
function signedMessage(prefixText, payload) {
|
|
155
|
+
const enc = new TextEncoder();
|
|
156
|
+
const prefix = enc.encode(prefixText);
|
|
157
|
+
const body = typeof payload === 'string'
|
|
158
|
+
? enc.encode(payload)
|
|
159
|
+
: payload instanceof Uint8Array
|
|
160
|
+
? payload
|
|
161
|
+
: new Uint8Array(payload);
|
|
162
|
+
const message = new Uint8Array(prefix.byteLength + body.byteLength);
|
|
163
|
+
message.set(prefix, 0);
|
|
164
|
+
message.set(body, prefix.byteLength);
|
|
165
|
+
return message;
|
|
110
166
|
}
|
|
111
167
|
async function hmacSha256Hex(secret, message) {
|
|
112
168
|
const enc = new TextEncoder();
|
|
113
169
|
const key = await crypto.subtle.importKey('raw', enc.encode(secret), { name: 'HMAC', hash: 'SHA-256' }, false, ['sign']);
|
|
114
|
-
const signature = await crypto.subtle.sign('HMAC', key,
|
|
170
|
+
const signature = await crypto.subtle.sign('HMAC', key, message);
|
|
115
171
|
const bytes = new Uint8Array(signature);
|
|
116
172
|
let hex = '';
|
|
117
173
|
for (const b of bytes) {
|