@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.
@@ -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;
@@ -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
@@ -1,3 +1,3 @@
1
1
  /** SDK version, surfaced in the User-Agent and the MCP clientInfo. Keep in sync with package.json. */
2
- export declare const VERSION = "0.2.0";
2
+ export declare const VERSION = "0.3.1";
3
3
  //# sourceMappingURL=version.d.ts.map
package/dist/version.js CHANGED
@@ -1,3 +1,3 @@
1
1
  /** SDK version, surfaced in the User-Agent and the MCP clientInfo. Keep in sync with package.json. */
2
- export const VERSION = '0.2.0';
2
+ export const VERSION = '0.3.1';
3
3
  //# sourceMappingURL=version.js.map
@@ -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
- * PingRoom signs `HMAC-SHA256(signing_secret, rawBody)` and sends it as
6
- * `X-PingRoom-Signature: sha256=<hex>`. Verify over the EXACT raw request
7
- * body bytes — re-serializing the parsed JSON will not match.
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 { FetchLike, JsonObject } from './types.js';
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
- /** The X-PingRoom-Signature header value (with or without the `sha256=` prefix). */
21
- signature: string | null | undefined;
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). */
@@ -1 +1 @@
1
- {"version":3,"file":"webhooks.d.ts","sourceRoot":"","sources":["../src/webhooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAGxD,eAAO,MAAM,wBAAwB,yBAAyB,CAAC;AAC/D,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,oFAAoF;IACpF,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACrC,oCAAoC;IACpC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,6BAA6B,GAAG,OAAO,CAAC,OAAO,CAAC,CAUlG;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;CACnB;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,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,CAwDhC"}
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
- * PingRoom signs `HMAC-SHA256(signing_secret, rawBody)` and sends it as
6
- * `X-PingRoom-Signature: sha256=<hex>`. Verify over the EXACT raw request
7
- * body bytes — re-serializing the parsed JSON will not match.
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
- if (!opts.signature || !opts.secret) {
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 provided = normalizeSignature(opts.signature).toLowerCase();
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
- const expected = await hmacSha256Hex(opts.secret, toMessageString(opts.payload));
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 toMessageString(payload) {
103
- if (typeof payload === 'string') {
104
- return payload;
138
+ function normalizeTimestamp(timestamp) {
139
+ if (timestamp === null || timestamp === undefined) {
140
+ return null;
105
141
  }
106
- if (payload instanceof Uint8Array) {
107
- return new TextDecoder().decode(payload);
142
+ const normalized = typeof timestamp === 'string' ? timestamp.trim() : String(timestamp);
143
+ if (!/^\d+$/.test(normalized)) {
144
+ return null;
108
145
  }
109
- return new TextDecoder().decode(new Uint8Array(payload));
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, enc.encode(message));
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) {