agent-comms 1.13.0 → 1.15.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/.claude-plugin/plugin.json +1 -1
- package/README.md +1 -1
- package/dist/bridges/claude-code/channel.d.ts.map +1 -1
- package/dist/bridges/claude-code/channel.js +6 -1
- package/dist/bridges/claude-code/channel.js.map +1 -1
- package/dist/bridges/codex/tool.d.ts.map +1 -1
- package/dist/bridges/codex/tool.js +6 -1
- package/dist/bridges/codex/tool.js.map +1 -1
- package/dist/bridges/mcp/index.d.ts.map +1 -1
- package/dist/bridges/mcp/index.js +6 -1
- package/dist/bridges/mcp/index.js.map +1 -1
- package/dist/bridges/opencode/plugin.d.ts.map +1 -1
- package/dist/bridges/opencode/plugin.js +5 -0
- package/dist/bridges/opencode/plugin.js.map +1 -1
- package/dist/bridges/pi/index.d.ts +5 -2
- package/dist/bridges/pi/index.d.ts.map +1 -1
- package/dist/bridges/pi/index.js +125 -20
- package/dist/bridges/pi/index.js.map +1 -1
- package/dist/bridges/user/controller.d.ts +10 -1
- package/dist/bridges/user/controller.d.ts.map +1 -1
- package/dist/bridges/user/controller.js +37 -1
- package/dist/bridges/user/controller.js.map +1 -1
- package/dist/bridges/user/tui.js +4 -0
- package/dist/bridges/user/tui.js.map +1 -1
- package/dist/bridges/user/web/build.d.ts +4 -4
- package/dist/bridges/user/web/build.js +53 -34
- package/dist/bridges/user/web/build.js.map +1 -1
- package/dist/bridges/user/web/frontend/components/App.d.ts +28 -0
- package/dist/bridges/user/web/frontend/components/App.d.ts.map +1 -0
- package/dist/bridges/user/web/frontend/components/App.js +7 -0
- package/dist/bridges/user/web/frontend/components/App.js.map +1 -0
- package/dist/bridges/user/web/frontend/components/ChatArea.d.ts +14 -0
- package/dist/bridges/user/web/frontend/components/ChatArea.d.ts.map +1 -0
- package/dist/bridges/user/web/frontend/components/ChatArea.js +38 -0
- package/dist/bridges/user/web/frontend/components/ChatArea.js.map +1 -0
- package/dist/bridges/user/web/frontend/components/CreateRoomForm.d.ts +11 -0
- package/dist/bridges/user/web/frontend/components/CreateRoomForm.d.ts.map +1 -0
- package/dist/bridges/user/web/frontend/components/CreateRoomForm.js +33 -0
- package/dist/bridges/user/web/frontend/components/CreateRoomForm.js.map +1 -0
- package/dist/bridges/user/web/frontend/components/JoinForm.d.ts +11 -0
- package/dist/bridges/user/web/frontend/components/JoinForm.d.ts.map +1 -0
- package/dist/bridges/user/web/frontend/components/JoinForm.js +28 -0
- package/dist/bridges/user/web/frontend/components/JoinForm.js.map +1 -0
- package/dist/bridges/user/web/frontend/components/Message.d.ts +8 -0
- package/dist/bridges/user/web/frontend/components/Message.d.ts.map +1 -0
- package/dist/bridges/user/web/frontend/components/Message.js +15 -0
- package/dist/bridges/user/web/frontend/components/Message.js.map +1 -0
- package/dist/bridges/user/web/frontend/components/MessageList.d.ts +8 -0
- package/dist/bridges/user/web/frontend/components/MessageList.d.ts.map +1 -0
- package/dist/bridges/user/web/frontend/components/MessageList.js +16 -0
- package/dist/bridges/user/web/frontend/components/MessageList.js.map +1 -0
- package/dist/bridges/user/web/frontend/components/ProjectTree.d.ts +17 -0
- package/dist/bridges/user/web/frontend/components/ProjectTree.d.ts.map +1 -0
- package/dist/bridges/user/web/frontend/components/ProjectTree.js +62 -0
- package/dist/bridges/user/web/frontend/components/ProjectTree.js.map +1 -0
- package/dist/bridges/user/web/frontend/components/RelayPanel.d.ts +15 -0
- package/dist/bridges/user/web/frontend/components/RelayPanel.d.ts.map +1 -0
- package/dist/bridges/user/web/frontend/components/RelayPanel.js +46 -0
- package/dist/bridges/user/web/frontend/components/RelayPanel.js.map +1 -0
- package/dist/bridges/user/web/frontend/components/Sidebar.d.ts +21 -0
- package/dist/bridges/user/web/frontend/components/Sidebar.d.ts.map +1 -0
- package/dist/bridges/user/web/frontend/components/Sidebar.js +37 -0
- package/dist/bridges/user/web/frontend/components/Sidebar.js.map +1 -0
- package/dist/bridges/user/web/frontend/dom.d.ts +12 -22
- package/dist/bridges/user/web/frontend/dom.d.ts.map +1 -1
- package/dist/bridges/user/web/frontend/dom.js +24 -49
- package/dist/bridges/user/web/frontend/dom.js.map +1 -1
- package/dist/bridges/user/web/frontend/input.d.ts +15 -0
- package/dist/bridges/user/web/frontend/input.d.ts.map +1 -1
- package/dist/bridges/user/web/frontend/input.js +39 -1
- package/dist/bridges/user/web/frontend/input.js.map +1 -1
- package/dist/bridges/user/web/frontend/main.d.ts +3 -3
- package/dist/bridges/user/web/frontend/main.d.ts.map +1 -1
- package/dist/bridges/user/web/frontend/main.js +135 -52
- package/dist/bridges/user/web/frontend/main.js.map +1 -1
- package/dist/bridges/user/web/frontend/mesh-client.d.ts +43 -0
- package/dist/bridges/user/web/frontend/mesh-client.d.ts.map +1 -0
- package/dist/bridges/user/web/frontend/mesh-client.js +132 -0
- package/dist/bridges/user/web/frontend/mesh-client.js.map +1 -0
- package/dist/bridges/user/web/frontend/mesh-worker.d.ts +14 -0
- package/dist/bridges/user/web/frontend/mesh-worker.d.ts.map +1 -0
- package/dist/bridges/user/web/frontend/mesh-worker.js +274 -0
- package/dist/bridges/user/web/frontend/mesh-worker.js.map +1 -0
- package/dist/bridges/user/web/frontend/messages.d.ts +17 -0
- package/dist/bridges/user/web/frontend/messages.d.ts.map +1 -0
- package/dist/bridges/user/web/frontend/messages.js +82 -0
- package/dist/bridges/user/web/frontend/messages.js.map +1 -0
- package/dist/bridges/user/web/frontend/project-tree.d.ts +9 -0
- package/dist/bridges/user/web/frontend/project-tree.d.ts.map +1 -0
- package/dist/bridges/user/web/frontend/project-tree.js +173 -0
- package/dist/bridges/user/web/frontend/project-tree.js.map +1 -0
- package/dist/bridges/user/web/frontend/relay-client.d.ts +40 -0
- package/dist/bridges/user/web/frontend/relay-client.d.ts.map +1 -0
- package/dist/bridges/user/web/frontend/relay-client.js +97 -0
- package/dist/bridges/user/web/frontend/relay-client.js.map +1 -0
- package/dist/bridges/user/web/frontend/relay-worker.d.ts +15 -0
- package/dist/bridges/user/web/frontend/relay-worker.d.ts.map +1 -0
- package/dist/bridges/user/web/frontend/relay-worker.js +366 -0
- package/dist/bridges/user/web/frontend/relay-worker.js.map +1 -0
- package/dist/bridges/user/web/frontend/state.d.ts +8 -1
- package/dist/bridges/user/web/frontend/state.d.ts.map +1 -1
- package/dist/bridges/user/web/frontend/state.js +17 -1
- package/dist/bridges/user/web/frontend/state.js.map +1 -1
- package/dist/bridges/user/web/frontend/sw.d.ts +16 -0
- package/dist/bridges/user/web/frontend/sw.d.ts.map +1 -0
- package/dist/bridges/user/web/frontend/sw.js +145 -0
- package/dist/bridges/user/web/frontend/sw.js.map +1 -0
- package/dist/bridges/user/web/frontend/types.d.ts +52 -0
- package/dist/bridges/user/web/frontend/types.d.ts.map +1 -1
- package/dist/bridges/user/web/frontend/url-sync.d.ts +48 -0
- package/dist/bridges/user/web/frontend/url-sync.d.ts.map +1 -0
- package/dist/bridges/user/web/frontend/url-sync.js +74 -0
- package/dist/bridges/user/web/frontend/url-sync.js.map +1 -0
- package/dist/bridges/user/web/server.d.ts +10 -3
- package/dist/bridges/user/web/server.d.ts.map +1 -1
- package/dist/bridges/user/web/server.js +280 -15
- package/dist/bridges/user/web/server.js.map +1 -1
- package/dist/bridges/user/web/test/web-server.integration.test.d.ts +7 -0
- package/dist/bridges/user/web/test/web-server.integration.test.d.ts.map +1 -0
- package/dist/bridges/user/web/test/web-server.integration.test.js +187 -0
- package/dist/bridges/user/web/test/web-server.integration.test.js.map +1 -0
- package/dist/core/bridge.d.ts +43 -0
- package/dist/core/bridge.d.ts.map +1 -1
- package/dist/core/bridge.js +197 -0
- package/dist/core/bridge.js.map +1 -1
- package/dist/core/comms-store.d.ts +22 -1
- package/dist/core/comms-store.d.ts.map +1 -1
- package/dist/core/discovery-mdns.d.ts +33 -0
- package/dist/core/discovery-mdns.d.ts.map +1 -0
- package/dist/core/discovery-mdns.js +182 -0
- package/dist/core/discovery-mdns.js.map +1 -0
- package/dist/core/discovery-tailscale.d.ts +40 -0
- package/dist/core/discovery-tailscale.d.ts.map +1 -0
- package/dist/core/discovery-tailscale.js +158 -0
- package/dist/core/discovery-tailscale.js.map +1 -0
- package/dist/core/discovery.d.ts +82 -0
- package/dist/core/discovery.d.ts.map +1 -0
- package/dist/core/discovery.js +194 -0
- package/dist/core/discovery.js.map +1 -0
- package/dist/core/federation.d.ts +100 -0
- package/dist/core/federation.d.ts.map +1 -0
- package/dist/core/federation.js +411 -0
- package/dist/core/federation.js.map +1 -0
- package/dist/core/identity.d.ts +31 -0
- package/dist/core/identity.d.ts.map +1 -0
- package/dist/core/identity.js +251 -0
- package/dist/core/identity.js.map +1 -0
- package/dist/core/index.d.ts +12 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +7 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/mesh-store.d.ts +75 -26
- package/dist/core/mesh-store.d.ts.map +1 -1
- package/dist/core/mesh-store.js +570 -355
- package/dist/core/mesh-store.js.map +1 -1
- package/dist/core/push-manager.d.ts +41 -0
- package/dist/core/push-manager.d.ts.map +1 -0
- package/dist/core/push-manager.js +60 -0
- package/dist/core/push-manager.js.map +1 -0
- package/dist/core/store.d.ts +21 -1
- package/dist/core/store.d.ts.map +1 -1
- package/dist/core/store.js +44 -0
- package/dist/core/store.js.map +1 -1
- package/dist/core/tcp-transport.d.ts +77 -0
- package/dist/core/tcp-transport.d.ts.map +1 -0
- package/dist/core/tcp-transport.js +596 -0
- package/dist/core/tcp-transport.js.map +1 -0
- package/dist/core/test/bridge.unit.test.d.ts +5 -0
- package/dist/core/test/bridge.unit.test.d.ts.map +1 -0
- package/dist/core/test/bridge.unit.test.js +120 -0
- package/dist/core/test/bridge.unit.test.js.map +1 -0
- package/dist/core/test/identity.unit.test.d.ts +5 -0
- package/dist/core/test/identity.unit.test.d.ts.map +1 -0
- package/dist/core/test/identity.unit.test.js +70 -0
- package/dist/core/test/identity.unit.test.js.map +1 -0
- package/dist/core/tls-transport.d.ts +69 -0
- package/dist/core/tls-transport.d.ts.map +1 -0
- package/dist/core/tls-transport.js +602 -0
- package/dist/core/tls-transport.js.map +1 -0
- package/dist/core/tool.d.ts +23 -2
- package/dist/core/tool.d.ts.map +1 -1
- package/dist/core/tool.js +269 -1
- package/dist/core/tool.js.map +1 -1
- package/dist/core/transport.d.ts +166 -0
- package/dist/core/transport.d.ts.map +1 -0
- package/dist/core/transport.js +20 -0
- package/dist/core/transport.js.map +1 -0
- package/dist/core/types.d.ts +146 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +77 -0
- package/dist/core/types.js.map +1 -1
- package/dist/core/vapid.d.ts +22 -0
- package/dist/core/vapid.d.ts.map +1 -0
- package/dist/core/vapid.js +50 -0
- package/dist/core/vapid.js.map +1 -0
- package/dist/core/web-push.d.ts +37 -0
- package/dist/core/web-push.d.ts.map +1 -0
- package/dist/core/web-push.js +198 -0
- package/dist/core/web-push.js.map +1 -0
- package/dist/core/wire-protocol.d.ts +131 -0
- package/dist/core/wire-protocol.d.ts.map +1 -0
- package/dist/core/wire-protocol.js +54 -0
- package/dist/core/wire-protocol.js.map +1 -0
- package/dist/core/ws-transport.d.ts +71 -0
- package/dist/core/ws-transport.d.ts.map +1 -0
- package/dist/core/ws-transport.js +560 -0
- package/dist/core/ws-transport.js.map +1 -0
- package/dist/test/approval.integration.test.d.ts +9 -0
- package/dist/test/approval.integration.test.d.ts.map +1 -0
- package/dist/test/approval.integration.test.js +361 -0
- package/dist/test/approval.integration.test.js.map +1 -0
- package/dist/test/delivery-receipt.helper.d.ts +16 -0
- package/dist/test/delivery-receipt.helper.d.ts.map +1 -0
- package/dist/test/delivery-receipt.helper.js +409 -0
- package/dist/test/delivery-receipt.helper.js.map +1 -0
- package/dist/test/delivery-receipt.runner.d.ts +13 -0
- package/dist/test/delivery-receipt.runner.d.ts.map +1 -0
- package/dist/test/delivery-receipt.runner.js +51 -0
- package/dist/test/delivery-receipt.runner.js.map +1 -0
- package/dist/test/federation.integration.test.d.ts +15 -0
- package/dist/test/federation.integration.test.d.ts.map +1 -0
- package/dist/test/federation.integration.test.js +218 -0
- package/dist/test/federation.integration.test.js.map +1 -0
- package/dist/test/listener-policy.integration.test.d.ts +9 -0
- package/dist/test/listener-policy.integration.test.d.ts.map +1 -0
- package/dist/test/listener-policy.integration.test.js +239 -0
- package/dist/test/listener-policy.integration.test.js.map +1 -0
- package/dist/test/tls-transport.integration.test.d.ts +8 -0
- package/dist/test/tls-transport.integration.test.d.ts.map +1 -0
- package/dist/test/tls-transport.integration.test.js +158 -0
- package/dist/test/tls-transport.integration.test.js.map +1 -0
- package/dist/test/visibility.integration.test.d.ts +12 -0
- package/dist/test/visibility.integration.test.d.ts.map +1 -0
- package/dist/test/visibility.integration.test.js +181 -0
- package/dist/test/visibility.integration.test.js.map +1 -0
- package/package.json +7 -3
- package/dist/bridges/user/web/frontend/render.d.ts +0 -30
- package/dist/bridges/user/web/frontend/render.d.ts.map +0 -1
- package/dist/bridges/user/web/frontend/render.js +0 -129
- package/dist/bridges/user/web/frontend/render.js.map +0 -1
- package/dist/bridges/user/web/frontend/test/dom.unit.test.d.ts +0 -5
- package/dist/bridges/user/web/frontend/test/dom.unit.test.d.ts.map +0 -1
- package/dist/bridges/user/web/frontend/test/dom.unit.test.js +0 -149
- package/dist/bridges/user/web/frontend/test/dom.unit.test.js.map +0 -1
- package/dist/bridges/user/web/frontend/test/input.unit.test.d.ts +0 -5
- package/dist/bridges/user/web/frontend/test/input.unit.test.d.ts.map +0 -1
- package/dist/bridges/user/web/frontend/test/input.unit.test.js +0 -131
- package/dist/bridges/user/web/frontend/test/input.unit.test.js.map +0 -1
- package/dist/bridges/user/web/frontend/test/render.unit.test.d.ts +0 -5
- package/dist/bridges/user/web/frontend/test/render.unit.test.d.ts.map +0 -1
- package/dist/bridges/user/web/frontend/test/render.unit.test.js +0 -436
- package/dist/bridges/user/web/frontend/test/render.unit.test.js.map +0 -1
- package/dist/bridges/user/web/frontend/test/state.unit.test.d.ts +0 -5
- package/dist/bridges/user/web/frontend/test/state.unit.test.d.ts.map +0 -1
- package/dist/bridges/user/web/frontend/test/state.unit.test.js +0 -119
- package/dist/bridges/user/web/frontend/test/state.unit.test.js.map +0 -1
package/dist/core/types.d.ts
CHANGED
|
@@ -8,6 +8,10 @@
|
|
|
8
8
|
import { z } from "zod";
|
|
9
9
|
export type AgentId = string;
|
|
10
10
|
export type RoomId = string;
|
|
11
|
+
export declare const MeshVisibility: z.ZodUnion<readonly [z.ZodLiteral<"discoverable">, z.ZodLiteral<"quiet">, z.ZodLiteral<"dark">]> & {
|
|
12
|
+
is(value: unknown): value is "discoverable" | "quiet" | "dark";
|
|
13
|
+
};
|
|
14
|
+
export type MeshVisibility = z.infer<typeof MeshVisibility>;
|
|
11
15
|
export declare const Visibility: z.ZodUnion<readonly [z.ZodLiteral<"visible">, z.ZodLiteral<"hidden">, z.ZodLiteral<"ghost">]> & {
|
|
12
16
|
is(value: unknown): value is "visible" | "hidden" | "ghost";
|
|
13
17
|
};
|
|
@@ -61,6 +65,7 @@ export declare const RoomSchema: z.ZodObject<{
|
|
|
61
65
|
description: z.ZodString;
|
|
62
66
|
members: z.ZodArray<z.ZodString>;
|
|
63
67
|
invited: z.ZodArray<z.ZodString>;
|
|
68
|
+
federated: z.ZodOptional<z.ZodBoolean>;
|
|
64
69
|
}, z.core.$strip> & {
|
|
65
70
|
is(value: unknown): value is {
|
|
66
71
|
id: string;
|
|
@@ -71,6 +76,7 @@ export declare const RoomSchema: z.ZodObject<{
|
|
|
71
76
|
description: string;
|
|
72
77
|
members: string[];
|
|
73
78
|
invited: string[];
|
|
79
|
+
federated?: boolean | undefined;
|
|
74
80
|
};
|
|
75
81
|
};
|
|
76
82
|
export type Room = z.infer<typeof RoomSchema>;
|
|
@@ -222,6 +228,18 @@ export declare const DeliveryEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
222
228
|
agent: z.ZodString;
|
|
223
229
|
agentName: z.ZodString;
|
|
224
230
|
reason: z.ZodString;
|
|
231
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
232
|
+
type: z.ZodLiteral<"name_changed">;
|
|
233
|
+
agent: z.ZodString;
|
|
234
|
+
oldName: z.ZodString;
|
|
235
|
+
newName: z.ZodString;
|
|
236
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
237
|
+
type: z.ZodLiteral<"connection_request">;
|
|
238
|
+
connectionId: z.ZodString;
|
|
239
|
+
peerId: z.ZodString;
|
|
240
|
+
dataPort: z.ZodNumber;
|
|
241
|
+
name: z.ZodString;
|
|
242
|
+
fingerprint: z.ZodString;
|
|
225
243
|
}, z.core.$strip>], "type"> & {
|
|
226
244
|
is(value: unknown): value is {
|
|
227
245
|
type: "room_message";
|
|
@@ -284,9 +302,27 @@ export declare const DeliveryEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
284
302
|
agent: string;
|
|
285
303
|
agentName: string;
|
|
286
304
|
reason: string;
|
|
305
|
+
} | {
|
|
306
|
+
type: "name_changed";
|
|
307
|
+
agent: string;
|
|
308
|
+
oldName: string;
|
|
309
|
+
newName: string;
|
|
310
|
+
} | {
|
|
311
|
+
type: "connection_request";
|
|
312
|
+
connectionId: string;
|
|
313
|
+
peerId: string;
|
|
314
|
+
dataPort: number;
|
|
315
|
+
name: string;
|
|
316
|
+
fingerprint: string;
|
|
287
317
|
};
|
|
288
318
|
};
|
|
289
319
|
export type DeliveryEvent = z.infer<typeof DeliveryEventSchema>;
|
|
320
|
+
export interface NetworkInterface {
|
|
321
|
+
name: string;
|
|
322
|
+
address: string;
|
|
323
|
+
family: "IPv4" | "IPv6";
|
|
324
|
+
internal: boolean;
|
|
325
|
+
}
|
|
290
326
|
export declare const CommsActionSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
291
327
|
action: z.ZodLiteral<"register">;
|
|
292
328
|
name: z.ZodString;
|
|
@@ -351,6 +387,62 @@ export declare const CommsActionSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
351
387
|
}, z.core.$strip>, z.ZodObject<{
|
|
352
388
|
action: z.ZodLiteral<"destroy_room">;
|
|
353
389
|
room: z.ZodString;
|
|
390
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
391
|
+
action: z.ZodLiteral<"mesh_connect">;
|
|
392
|
+
host: z.ZodString;
|
|
393
|
+
port: z.ZodNumber;
|
|
394
|
+
policy: z.ZodOptional<z.ZodString>;
|
|
395
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
396
|
+
action: z.ZodLiteral<"mesh_accept">;
|
|
397
|
+
connectionId: z.ZodString;
|
|
398
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
399
|
+
action: z.ZodLiteral<"mesh_reject">;
|
|
400
|
+
connectionId: z.ZodString;
|
|
401
|
+
reason: z.ZodString;
|
|
402
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
403
|
+
action: z.ZodLiteral<"mesh_pending">;
|
|
404
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
405
|
+
action: z.ZodLiteral<"mesh_discover">;
|
|
406
|
+
method: z.ZodOptional<z.ZodString>;
|
|
407
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
408
|
+
action: z.ZodLiteral<"mesh_advertise">;
|
|
409
|
+
method: z.ZodString;
|
|
410
|
+
name: z.ZodString;
|
|
411
|
+
port: z.ZodOptional<z.ZodNumber>;
|
|
412
|
+
adapter: z.ZodOptional<z.ZodString>;
|
|
413
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
414
|
+
action: z.ZodLiteral<"mesh_unadvertise">;
|
|
415
|
+
id: z.ZodString;
|
|
416
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
417
|
+
action: z.ZodLiteral<"mesh_interfaces">;
|
|
418
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
419
|
+
action: z.ZodLiteral<"mesh_listen">;
|
|
420
|
+
host: z.ZodString;
|
|
421
|
+
port: z.ZodOptional<z.ZodNumber>;
|
|
422
|
+
policy: z.ZodOptional<z.ZodString>;
|
|
423
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
424
|
+
action: z.ZodLiteral<"mesh_unlisten">;
|
|
425
|
+
id: z.ZodString;
|
|
426
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
427
|
+
action: z.ZodLiteral<"mesh_listeners">;
|
|
428
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
429
|
+
action: z.ZodLiteral<"mesh_set_visibility">;
|
|
430
|
+
visibility: z.ZodUnion<readonly [z.ZodLiteral<"discoverable">, z.ZodLiteral<"quiet">, z.ZodLiteral<"dark">]> & {
|
|
431
|
+
is(value: unknown): value is "discoverable" | "quiet" | "dark";
|
|
432
|
+
};
|
|
433
|
+
adapter: z.ZodOptional<z.ZodString>;
|
|
434
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
435
|
+
action: z.ZodLiteral<"mesh_get_visibility">;
|
|
436
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
437
|
+
action: z.ZodLiteral<"mesh_fed_connect">;
|
|
438
|
+
host: z.ZodString;
|
|
439
|
+
port: z.ZodNumber;
|
|
440
|
+
name: z.ZodOptional<z.ZodString>;
|
|
441
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
442
|
+
action: z.ZodLiteral<"mesh_fed_disconnect">;
|
|
443
|
+
linkId: z.ZodString;
|
|
444
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
445
|
+
action: z.ZodLiteral<"mesh_fed_links">;
|
|
354
446
|
}, z.core.$strip>], "action"> & {
|
|
355
447
|
is(value: unknown): value is {
|
|
356
448
|
action: "register";
|
|
@@ -408,6 +500,60 @@ export declare const CommsActionSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
408
500
|
} | {
|
|
409
501
|
action: "destroy_room";
|
|
410
502
|
room: string;
|
|
503
|
+
} | {
|
|
504
|
+
action: "mesh_connect";
|
|
505
|
+
host: string;
|
|
506
|
+
port: number;
|
|
507
|
+
policy?: string | undefined;
|
|
508
|
+
} | {
|
|
509
|
+
action: "mesh_accept";
|
|
510
|
+
connectionId: string;
|
|
511
|
+
} | {
|
|
512
|
+
action: "mesh_reject";
|
|
513
|
+
connectionId: string;
|
|
514
|
+
reason: string;
|
|
515
|
+
} | {
|
|
516
|
+
action: "mesh_pending";
|
|
517
|
+
} | {
|
|
518
|
+
action: "mesh_discover";
|
|
519
|
+
method?: string | undefined;
|
|
520
|
+
} | {
|
|
521
|
+
action: "mesh_advertise";
|
|
522
|
+
method: string;
|
|
523
|
+
name: string;
|
|
524
|
+
port?: number | undefined;
|
|
525
|
+
adapter?: string | undefined;
|
|
526
|
+
} | {
|
|
527
|
+
action: "mesh_unadvertise";
|
|
528
|
+
id: string;
|
|
529
|
+
} | {
|
|
530
|
+
action: "mesh_interfaces";
|
|
531
|
+
} | {
|
|
532
|
+
action: "mesh_listen";
|
|
533
|
+
host: string;
|
|
534
|
+
port?: number | undefined;
|
|
535
|
+
policy?: string | undefined;
|
|
536
|
+
} | {
|
|
537
|
+
action: "mesh_unlisten";
|
|
538
|
+
id: string;
|
|
539
|
+
} | {
|
|
540
|
+
action: "mesh_listeners";
|
|
541
|
+
} | {
|
|
542
|
+
action: "mesh_set_visibility";
|
|
543
|
+
visibility: "discoverable" | "quiet" | "dark";
|
|
544
|
+
adapter?: string | undefined;
|
|
545
|
+
} | {
|
|
546
|
+
action: "mesh_get_visibility";
|
|
547
|
+
} | {
|
|
548
|
+
action: "mesh_fed_connect";
|
|
549
|
+
host: string;
|
|
550
|
+
port: number;
|
|
551
|
+
name?: string | undefined;
|
|
552
|
+
} | {
|
|
553
|
+
action: "mesh_fed_disconnect";
|
|
554
|
+
linkId: string;
|
|
555
|
+
} | {
|
|
556
|
+
action: "mesh_fed_links";
|
|
411
557
|
};
|
|
412
558
|
};
|
|
413
559
|
export type CommsAction = z.infer<typeof CommsActionSchema>;
|
package/dist/core/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAqBxB,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC;AAC7B,MAAM,MAAM,MAAM,GAAG,MAAM,CAAC;AAM5B,eAAO,MAAM,UAAU;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
|
package/dist/core/types.js
CHANGED
|
@@ -19,6 +19,7 @@ function defineSchema(schema) {
|
|
|
19
19
|
// ---------------------------------------------------------------------------
|
|
20
20
|
// Enums
|
|
21
21
|
// ---------------------------------------------------------------------------
|
|
22
|
+
export const MeshVisibility = defineSchema(z.union([z.literal("discoverable"), z.literal("quiet"), z.literal("dark")]));
|
|
22
23
|
export const Visibility = defineSchema(z.union([z.literal("visible"), z.literal("hidden"), z.literal("ghost")]));
|
|
23
24
|
export const AgentStatus = defineSchema(z.union([
|
|
24
25
|
z.literal("active"),
|
|
@@ -54,6 +55,7 @@ export const RoomSchema = defineSchema(z.object({
|
|
|
54
55
|
description: z.string(),
|
|
55
56
|
members: z.array(z.string()),
|
|
56
57
|
invited: z.array(z.string()),
|
|
58
|
+
federated: z.boolean().optional(),
|
|
57
59
|
}));
|
|
58
60
|
// ---------------------------------------------------------------------------
|
|
59
61
|
// Messages
|
|
@@ -136,6 +138,20 @@ export const DeliveryEventSchema = defineSchema(z.discriminatedUnion("type", [
|
|
|
136
138
|
agentName: z.string(),
|
|
137
139
|
reason: z.string(),
|
|
138
140
|
}),
|
|
141
|
+
z.object({
|
|
142
|
+
type: z.literal("name_changed"),
|
|
143
|
+
agent: z.string(),
|
|
144
|
+
oldName: z.string(),
|
|
145
|
+
newName: z.string(),
|
|
146
|
+
}),
|
|
147
|
+
z.object({
|
|
148
|
+
type: z.literal("connection_request"),
|
|
149
|
+
connectionId: z.string(),
|
|
150
|
+
peerId: z.string(),
|
|
151
|
+
dataPort: z.number(),
|
|
152
|
+
name: z.string(),
|
|
153
|
+
fingerprint: z.string(),
|
|
154
|
+
}),
|
|
139
155
|
]));
|
|
140
156
|
// ---------------------------------------------------------------------------
|
|
141
157
|
// CommsAction
|
|
@@ -206,5 +222,66 @@ export const CommsActionSchema = defineSchema(z.discriminatedUnion("action", [
|
|
|
206
222
|
action: z.literal("destroy_room"),
|
|
207
223
|
room: z.string(),
|
|
208
224
|
}),
|
|
225
|
+
z.object({
|
|
226
|
+
action: z.literal("mesh_connect"),
|
|
227
|
+
host: z.string(),
|
|
228
|
+
port: z.number(),
|
|
229
|
+
policy: z.string().optional(),
|
|
230
|
+
}),
|
|
231
|
+
z.object({
|
|
232
|
+
action: z.literal("mesh_accept"),
|
|
233
|
+
connectionId: z.string(),
|
|
234
|
+
}),
|
|
235
|
+
z.object({
|
|
236
|
+
action: z.literal("mesh_reject"),
|
|
237
|
+
connectionId: z.string(),
|
|
238
|
+
reason: z.string(),
|
|
239
|
+
}),
|
|
240
|
+
z.object({ action: z.literal("mesh_pending") }),
|
|
241
|
+
z.object({
|
|
242
|
+
action: z.literal("mesh_discover"),
|
|
243
|
+
method: z.string().optional(),
|
|
244
|
+
}),
|
|
245
|
+
z.object({
|
|
246
|
+
action: z.literal("mesh_advertise"),
|
|
247
|
+
method: z.string(),
|
|
248
|
+
name: z.string(),
|
|
249
|
+
port: z.number().optional(),
|
|
250
|
+
adapter: z.string().optional(),
|
|
251
|
+
}),
|
|
252
|
+
z.object({
|
|
253
|
+
action: z.literal("mesh_unadvertise"),
|
|
254
|
+
id: z.string(),
|
|
255
|
+
}),
|
|
256
|
+
z.object({ action: z.literal("mesh_interfaces") }),
|
|
257
|
+
z.object({
|
|
258
|
+
action: z.literal("mesh_listen"),
|
|
259
|
+
host: z.string(),
|
|
260
|
+
port: z.number().optional(),
|
|
261
|
+
policy: z.string().optional(),
|
|
262
|
+
}),
|
|
263
|
+
z.object({
|
|
264
|
+
action: z.literal("mesh_unlisten"),
|
|
265
|
+
id: z.string(),
|
|
266
|
+
}),
|
|
267
|
+
z.object({ action: z.literal("mesh_listeners") }),
|
|
268
|
+
z.object({
|
|
269
|
+
action: z.literal("mesh_set_visibility"),
|
|
270
|
+
visibility: MeshVisibility,
|
|
271
|
+
adapter: z.string().optional(),
|
|
272
|
+
}),
|
|
273
|
+
z.object({ action: z.literal("mesh_get_visibility") }),
|
|
274
|
+
// Federation actions (coordinator-to-coordinator)
|
|
275
|
+
z.object({
|
|
276
|
+
action: z.literal("mesh_fed_connect"),
|
|
277
|
+
host: z.string(),
|
|
278
|
+
port: z.number(),
|
|
279
|
+
name: z.string().optional(),
|
|
280
|
+
}),
|
|
281
|
+
z.object({
|
|
282
|
+
action: z.literal("mesh_fed_disconnect"),
|
|
283
|
+
linkId: z.string(),
|
|
284
|
+
}),
|
|
285
|
+
z.object({ action: z.literal("mesh_fed_links") }),
|
|
209
286
|
]));
|
|
210
287
|
//# sourceMappingURL=types.js.map
|
package/dist/core/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,8EAA8E;AAC9E,oCAAoC;AACpC,8EAA8E;AAE9E,SAAS,YAAY,CAAsB,MAAS;IAClD,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;QAC3B,EAAE,CAAC,KAAc;YACf,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;QACzC,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAYD,8EAA8E;AAC9E,QAAQ;AACR,8EAA8E;AAE9E,MAAM,CAAC,MAAM,UAAU,GAAG,YAAY,CACpC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CACzE,CAAC;AAGF,MAAM,CAAC,MAAM,WAAW,GAAG,YAAY,CACrC,CAAC,CAAC,KAAK,CAAC;IACN,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IACnB,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IACjB,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IACjB,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;CACrB,CAAC,CACH,CAAC;AAGF,MAAM,CAAC,MAAM,QAAQ,GAAG,YAAY,CAClC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAC1E,CAAC;AAGF,8EAA8E;AAC9E,gBAAgB;AAChB,8EAA8E;AAE9E,MAAM,CAAC,MAAM,mBAAmB,GAAG,YAAY,CAC7C,CAAC,CAAC,MAAM,CAAC;IACP,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACf,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACf,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,UAAU,EAAE,UAAU;IACtB,MAAM,EAAE,WAAW;IACnB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACzB,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CACrC,CAAC,CACH,CAAC;AAGF,8EAA8E;AAC9E,OAAO;AACP,8EAA8E;AAE9E,MAAM,CAAC,MAAM,UAAU,GAAG,YAAY,CACpC,CAAC,CAAC,MAAM,CAAC;IACP,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC5B,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* VAPID key generation for Web Push (RFC 8292).
|
|
3
|
+
*
|
|
4
|
+
* Generates a P-256 EC key pair once per process lifetime and caches it
|
|
5
|
+
* in memory. The public key is shared with the PWA client so it can
|
|
6
|
+
* create push subscriptions; the private key signs push requests.
|
|
7
|
+
*/
|
|
8
|
+
export interface VapidKeys {
|
|
9
|
+
/** Base64url-encoded uncompressed P-256 public key (65 bytes). */
|
|
10
|
+
publicKey: string;
|
|
11
|
+
/** Base64url-encoded P-256 private key (32 bytes). */
|
|
12
|
+
privateKey: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Generate or return cached VAPID keys.
|
|
16
|
+
*
|
|
17
|
+
* Uses Node.js `crypto.generateKeyPairSync` with P-256, extracts the
|
|
18
|
+
* raw 65-byte uncompressed public point and the 32-byte private scalar,
|
|
19
|
+
* and base64url-encodes both per RFC 8291.
|
|
20
|
+
*/
|
|
21
|
+
export declare function generateVapidKeys(): VapidKeys;
|
|
22
|
+
//# sourceMappingURL=vapid.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vapid.d.ts","sourceRoot":"","sources":["../../src/core/vapid.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH,MAAM,WAAW,SAAS;IACxB,kEAAkE;IAClE,SAAS,EAAE,MAAM,CAAC;IAClB,sDAAsD;IACtD,UAAU,EAAE,MAAM,CAAC;CACpB;AAYD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,IAAI,SAAS,CAwB7C"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* VAPID key generation for Web Push (RFC 8292).
|
|
3
|
+
*
|
|
4
|
+
* Generates a P-256 EC key pair once per process lifetime and caches it
|
|
5
|
+
* in memory. The public key is shared with the PWA client so it can
|
|
6
|
+
* create push subscriptions; the private key signs push requests.
|
|
7
|
+
*/
|
|
8
|
+
import * as crypto from "node:crypto";
|
|
9
|
+
// ---------------------------------------------------------------------------
|
|
10
|
+
// Cached singleton
|
|
11
|
+
// ---------------------------------------------------------------------------
|
|
12
|
+
let cachedKeys;
|
|
13
|
+
// ---------------------------------------------------------------------------
|
|
14
|
+
// Implementation
|
|
15
|
+
// ---------------------------------------------------------------------------
|
|
16
|
+
/**
|
|
17
|
+
* Generate or return cached VAPID keys.
|
|
18
|
+
*
|
|
19
|
+
* Uses Node.js `crypto.generateKeyPairSync` with P-256, extracts the
|
|
20
|
+
* raw 65-byte uncompressed public point and the 32-byte private scalar,
|
|
21
|
+
* and base64url-encodes both per RFC 8291.
|
|
22
|
+
*/
|
|
23
|
+
export function generateVapidKeys() {
|
|
24
|
+
if (cachedKeys)
|
|
25
|
+
return cachedKeys;
|
|
26
|
+
const { publicKey, privateKey } = crypto.generateKeyPairSync("ec", {
|
|
27
|
+
namedCurve: "P-256",
|
|
28
|
+
});
|
|
29
|
+
// Export public key as raw DER, extract the 65-byte uncompressed point.
|
|
30
|
+
// SPKI DER for P-256 has a 26-byte header before the 65-byte point.
|
|
31
|
+
const pubDer = publicKey.export({ type: "spki", format: "der" });
|
|
32
|
+
const publicKeyBuffer = pubDer.subarray(pubDer.length - 65);
|
|
33
|
+
// Export private key as PKCS8 DER, extract the 32-byte private scalar.
|
|
34
|
+
// PKCS8 DER for P-256 has a 39-byte header before the 32-byte scalar.
|
|
35
|
+
// The scalar is the last 32 bytes (after the leading zero pad byte).
|
|
36
|
+
const privDer = privateKey.export({ type: "pkcs8", format: "der" });
|
|
37
|
+
const privateKeyBuffer = privDer.subarray(privDer.length - 32);
|
|
38
|
+
cachedKeys = {
|
|
39
|
+
publicKey: base64url(publicKeyBuffer),
|
|
40
|
+
privateKey: base64url(privateKeyBuffer),
|
|
41
|
+
};
|
|
42
|
+
return cachedKeys;
|
|
43
|
+
}
|
|
44
|
+
// ---------------------------------------------------------------------------
|
|
45
|
+
// Helpers
|
|
46
|
+
// ---------------------------------------------------------------------------
|
|
47
|
+
function base64url(buffer) {
|
|
48
|
+
return buffer.toString("base64url");
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=vapid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vapid.js","sourceRoot":"","sources":["../../src/core/vapid.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAatC,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E,IAAI,UAAiC,CAAC;AAEtC,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB;IAC/B,IAAI,UAAU;QAAE,OAAO,UAAU,CAAC;IAElC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC,mBAAmB,CAAC,IAAI,EAAE;QACjE,UAAU,EAAE,OAAO;KACpB,CAAC,CAAC;IAEH,wEAAwE;IACxE,oEAAoE;IACpE,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IACjE,MAAM,eAAe,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;IAE5D,uEAAuE;IACvE,sEAAsE;IACtE,qEAAqE;IACrE,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IACpE,MAAM,gBAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;IAE/D,UAAU,GAAG;QACX,SAAS,EAAE,SAAS,CAAC,eAAe,CAAC;QACrC,UAAU,EAAE,SAAS,CAAC,gBAAgB,CAAC;KACxC,CAAC;IAEF,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,SAAS,SAAS,CAAC,MAAc;IAC/B,OAAO,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AACtC,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Web Push encryption and VAPID JWT signing (RFC 8291 + RFC 8292).
|
|
3
|
+
*
|
|
4
|
+
* Implements the Web Push protocol using only Node.js built-in `crypto`
|
|
5
|
+
* and `https` — no external dependencies.
|
|
6
|
+
*
|
|
7
|
+
* Encryption flow (RFC 8291):
|
|
8
|
+
* 1. Derive a shared ECDH secret from the subscription's p256dh key
|
|
9
|
+
* 2. HKDF-derive the encryption key and nonce from the shared secret + auth
|
|
10
|
+
* 3. Encrypt the payload with AES-128-GCM
|
|
11
|
+
* 4. Prepend the sender's public key (65 bytes) to the ciphertext
|
|
12
|
+
*
|
|
13
|
+
* VAPID signing (RFC 8292):
|
|
14
|
+
* 1. Build a JWT with { sub, exp, aud } claims
|
|
15
|
+
* 2. Sign with ES256 (ECDSA + P-256 + SHA-256)
|
|
16
|
+
* 3. Append the public key and token to the Crypto-Key header
|
|
17
|
+
*/
|
|
18
|
+
import type { VapidKeys } from "./vapid.js";
|
|
19
|
+
export interface PushSubscription {
|
|
20
|
+
endpoint: string;
|
|
21
|
+
keys: {
|
|
22
|
+
p256dh: string;
|
|
23
|
+
auth: string;
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
export interface PushPayload {
|
|
27
|
+
title: string;
|
|
28
|
+
body: string;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Send a Web Push notification.
|
|
32
|
+
*
|
|
33
|
+
* Encrypts the payload per RFC 8291, signs with VAPID per RFC 8292,
|
|
34
|
+
* and POSTs to the push service endpoint.
|
|
35
|
+
*/
|
|
36
|
+
export declare function sendWebPush(subscription: PushSubscription, payload: PushPayload, vapidKeys: VapidKeys, subject: string): Promise<void>;
|
|
37
|
+
//# sourceMappingURL=web-push.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web-push.d.ts","sourceRoot":"","sources":["../../src/core/web-push.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAOH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAM5C,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CACxC;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAeD;;;;;GAKG;AACH,wBAAsB,WAAW,CAC/B,YAAY,EAAE,gBAAgB,EAC9B,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAmBf"}
|