@7h3/protocol 0.4.0 → 0.5.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.
Files changed (63) hide show
  1. package/CHANGELOG.md +60 -0
  2. package/README.md +1169 -175
  3. package/bin/7h3.ts +22 -1
  4. package/docs/assets/banner-github.png +0 -0
  5. package/docs/assets/banner.svg +123 -0
  6. package/package.json +55 -13
  7. package/sdk/browser/package.json +1 -1
  8. package/sdk/go/cbor.go +551 -0
  9. package/sdk/go/cbor_test.go +232 -0
  10. package/sdk/go/encryption.go +280 -0
  11. package/sdk/go/encryption_test.go +318 -0
  12. package/sdk/go/go.mod +5 -1
  13. package/sdk/go/go.sum +4 -0
  14. package/sdk/go/replay.go +121 -0
  15. package/sdk/go/replay_test.go +149 -0
  16. package/sdk/pq/package-lock.json +1358 -0
  17. package/sdk/pq/package.json +42 -0
  18. package/sdk/pq/src/index.test.ts +143 -0
  19. package/sdk/pq/src/index.ts +166 -0
  20. package/sdk/pq/tsconfig.json +14 -0
  21. package/sdk/pq/vitest.config.ts +7 -0
  22. package/sdk/python/protocol_7h3/encryption.py +252 -0
  23. package/sdk/python/protocol_7h3/pq.py +244 -0
  24. package/sdk/python/protocol_7h3/replay.py +98 -0
  25. package/sdk/python/pyproject.toml +1 -1
  26. package/sdk/python/tests/test_encryption.py +206 -0
  27. package/sdk/rust/Cargo.lock +1 -1
  28. package/sdk/rust/Cargo.toml +1 -1
  29. package/sdk/threshold/index.d.ts +68 -0
  30. package/sdk/threshold/index.d.ts.map +1 -0
  31. package/sdk/threshold/index.js +254 -0
  32. package/sdk/threshold/package-lock.json +1361 -0
  33. package/sdk/threshold/package.json +39 -0
  34. package/sdk/threshold/src/index.d.ts +68 -0
  35. package/sdk/threshold/src/index.d.ts.map +1 -0
  36. package/sdk/threshold/src/index.js +254 -0
  37. package/sdk/threshold/src/index.test.ts +238 -0
  38. package/sdk/threshold/src/index.ts +355 -0
  39. package/sdk/threshold/tsconfig.json +19 -0
  40. package/sdk/threshold/vitest.config.ts +12 -0
  41. package/src/capability.test.ts +504 -0
  42. package/src/capability.ts +380 -0
  43. package/src/cborCodec.test.ts +263 -0
  44. package/src/cborCodec.ts +339 -0
  45. package/src/encryption.test.ts +206 -0
  46. package/src/encryption.ts +245 -0
  47. package/src/envelopeCbor.ts +140 -0
  48. package/src/gateway.ts +75 -0
  49. package/src/httpBinding.ts +37 -11
  50. package/src/index.ts +7 -0
  51. package/src/otel.ts +136 -0
  52. package/src/protocol.d.ts +67 -0
  53. package/src/protocol.d.ts.map +1 -0
  54. package/src/protocol.js +294 -0
  55. package/src/protocol.ts +1 -0
  56. package/src/replayStores.test.ts +133 -1
  57. package/src/replayStores.ts +136 -3
  58. package/src/stream.test.ts +254 -0
  59. package/src/stream.ts +417 -0
  60. package/src/telemetry.test.ts +251 -0
  61. package/src/telemetry.ts +299 -0
  62. package/src/wsBinding.ts +100 -0
  63. package/vitest.config.ts +11 -0
package/bin/7h3.ts CHANGED
@@ -12,7 +12,7 @@ Usage:
12
12
  7h3 verify --public-key <key> --envelope <json>
13
13
  7h3 inspect --envelope <json>
14
14
  7h3 gateway --upstream <url> [--port <n>] [--public-key <key>] [--require ed25519|none]
15
- [--sign-responses] [--private-key <key>] [--sender <id>]
15
+ [--sign-responses] [--private-key <key>] [--sender <id>] [--metrics-port <n>]
16
16
  7h3 keys serve [--public-key <key>] [--key-id <id>] [--port <n>]
17
17
  7h3 help
18
18
 
@@ -210,6 +210,7 @@ async function cmdGateway(argv: string[]): Promise<void> {
210
210
  'sign-responses': { type: 'boolean' },
211
211
  'private-key': { type: 'string' },
212
212
  sender: { type: 'string' },
213
+ 'metrics-port': { type: 'string' },
213
214
  },
214
215
  strict: false,
215
216
  })
@@ -223,6 +224,8 @@ async function cmdGateway(argv: string[]): Promise<void> {
223
224
  const signResponses = !!(values['sign-responses'])
224
225
  const privateKey = values['private-key'] as string | undefined
225
226
  const sender = values['sender'] as string | undefined
227
+ const metricsPortRaw = values['metrics-port'] as string | undefined
228
+ const metricsPort = metricsPortRaw ? parseInt(metricsPortRaw, 10) : undefined
226
229
 
227
230
  const { createGateway } = await import('../src/gateway.js')
228
231
  const { createStaticKeyRegistry } = await import('../src/keyRegistry.js')
@@ -276,6 +279,24 @@ async function cmdGateway(argv: string[]): Promise<void> {
276
279
  process.stderr.write(` sign-responses: ${signResponses && !!privateKey}\n`)
277
280
  if (sender) process.stderr.write(` sender : ${sender}\n`)
278
281
  })
282
+
283
+ // Optional: dedicated metrics server
284
+ if (metricsPort !== undefined) {
285
+ const { metrics: globalMetrics, renderPrometheusText } = await import('../src/telemetry.js')
286
+ const metricsServer = createServer((req, res) => {
287
+ if (req.url === '/metrics' && req.method === 'GET') {
288
+ const body = renderPrometheusText(globalMetrics)
289
+ res.writeHead(200, { 'content-type': 'text/plain; version=0.0.4; charset=utf-8' })
290
+ res.end(body)
291
+ } else {
292
+ res.writeHead(404, { 'content-type': 'text/plain' })
293
+ res.end('Not Found')
294
+ }
295
+ })
296
+ metricsServer.listen(metricsPort, () => {
297
+ process.stderr.write(`7h3 metrics listening on :${metricsPort}/metrics\n`)
298
+ })
299
+ }
279
300
  }
280
301
 
281
302
  async function cmdKeysServe(argv: string[]): Promise<void> {
Binary file
@@ -0,0 +1,123 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="1280" height="640" viewBox="0 0 1280 640">
2
+ <defs>
3
+ <linearGradient id="bg" x1="0%" y1="0%" x2="100%" y2="100%">
4
+ <stop offset="0%" style="stop-color:#06060f"/>
5
+ <stop offset="100%" style="stop-color:#0c0c22"/>
6
+ </linearGradient>
7
+ <linearGradient id="accentGrad" x1="0%" y1="0%" x2="100%" y2="0%">
8
+ <stop offset="0%" style="stop-color:#4f7cff"/>
9
+ <stop offset="100%" style="stop-color:#a855f7"/>
10
+ </linearGradient>
11
+ <pattern id="hex" x="0" y="0" width="70" height="60" patternUnits="userSpaceOnUse">
12
+ <polygon points="35,3 67,21 67,57 35,60 3,57 3,21" fill="none" stroke="#ffffff07" stroke-width="1"/>
13
+ </pattern>
14
+ <filter id="softglow" x="-10%" y="-10%" width="120%" height="120%">
15
+ <feGaussianBlur stdDeviation="2" result="blur"/>
16
+ <feMerge><feMergeNode in="blur"/><feMergeNode in="SourceGraphic"/></feMerge>
17
+ </filter>
18
+ </defs>
19
+
20
+ <!-- Background -->
21
+ <rect width="1280" height="640" fill="url(#bg)"/>
22
+ <rect width="1280" height="640" fill="url(#hex)"/>
23
+
24
+ <!-- Ambient glows -->
25
+ <ellipse cx="180" cy="220" rx="300" ry="240" fill="#4f7cff" opacity="0.05"/>
26
+ <ellipse cx="1100" cy="420" rx="260" ry="200" fill="#a855f7" opacity="0.06"/>
27
+
28
+ <!-- Top accent bar -->
29
+ <rect x="0" y="0" width="1280" height="3" fill="url(#accentGrad)"/>
30
+
31
+ <!-- LEFT COLUMN -->
32
+ <text x="64" y="70" font-family="SF Mono,Consolas,monospace" font-size="12" fill="#4f7cff" letter-spacing="5" opacity="0.85">CRYPTOGRAPHIC AGENT PROTOCOL · v0.4.0</text>
33
+ <text x="58" y="162" font-family="Inter,Helvetica Neue,Arial,sans-serif" font-size="96" font-weight="800" fill="#ffffff" letter-spacing="-4">7h3 Protocol</text>
34
+ <text x="62" y="204" font-family="Inter,Helvetica Neue,Arial,sans-serif" font-size="22" font-weight="300" fill="#94a3b8" letter-spacing="0.3">Sign every message. Reject every replay.</text>
35
+ <rect x="62" y="220" width="320" height="2.5" rx="1.5" fill="url(#accentGrad)"/>
36
+
37
+ <!-- Transport pills -->
38
+ <text x="62" y="272" font-family="SF Mono,Consolas,monospace" font-size="10" fill="#475569" letter-spacing="4">SECURED TRANSPORTS</text>
39
+ <rect x="62" y="284" width="128" height="36" rx="7" fill="#0f1f3d" stroke="#4f7cff" stroke-width="1.2"/>
40
+ <text x="126" y="307" font-family="Inter,sans-serif" font-size="13" font-weight="600" fill="#93c5fd" text-anchor="middle">HTTP / REST</text>
41
+ <rect x="200" y="284" width="122" height="36" rx="7" fill="#131040" stroke="#6366f1" stroke-width="1.2"/>
42
+ <text x="261" y="307" font-family="Inter,sans-serif" font-size="13" font-weight="600" fill="#a5b4fc" text-anchor="middle">WebSocket</text>
43
+ <rect x="332" y="284" width="90" height="36" rx="7" fill="#160e3d" stroke="#8b5cf6" stroke-width="1.2"/>
44
+ <text x="377" y="307" font-family="Inter,sans-serif" font-size="13" font-weight="600" fill="#c4b5fd" text-anchor="middle">gRPC</text>
45
+ <rect x="432" y="284" width="120" height="36" rx="7" fill="#1a0f3d" stroke="#a855f7" stroke-width="1.2"/>
46
+ <text x="492" y="307" font-family="Inter,sans-serif" font-size="13" font-weight="600" fill="#d8b4fe" text-anchor="middle">Msg Queues</text>
47
+ <rect x="562" y="284" width="110" height="36" rx="7" fill="#2a0f2a" stroke="#ec4899" stroke-width="1.2"/>
48
+ <text x="617" y="307" font-family="Inter,sans-serif" font-size="13" font-weight="600" fill="#f9a8d4" text-anchor="middle">Webhooks</text>
49
+
50
+ <!-- SDK badges -->
51
+ <text x="62" y="356" font-family="SF Mono,Consolas,monospace" font-size="10" fill="#475569" letter-spacing="4">5 SDKs — ZERO RUNTIME DEPS</text>
52
+ <rect x="62" y="368" width="98" height="32" rx="6" fill="#0f1d30"/>
53
+ <text x="111" y="389" font-family="Inter,sans-serif" font-size="13" font-weight="700" fill="#60a5fa" text-anchor="middle">TypeScript</text>
54
+ <rect x="170" y="368" width="84" height="32" rx="6" fill="#0a1f12"/>
55
+ <text x="212" y="389" font-family="Inter,sans-serif" font-size="13" font-weight="700" fill="#4ade80" text-anchor="middle">Python</text>
56
+ <rect x="264" y="368" width="72" height="32" rx="6" fill="#1f0f05"/>
57
+ <text x="300" y="389" font-family="Inter,sans-serif" font-size="13" font-weight="700" fill="#fb923c" text-anchor="middle">Rust</text>
58
+ <rect x="346" y="368" width="62" height="32" rx="6" fill="#051520"/>
59
+ <text x="377" y="389" font-family="Inter,sans-serif" font-size="13" font-weight="700" fill="#38bdf8" text-anchor="middle">Go</text>
60
+ <rect x="418" y="368" width="98" height="32" rx="6" fill="#180e28"/>
61
+ <text x="467" y="389" font-family="Inter,sans-serif" font-size="13" font-weight="700" fill="#c084fc" text-anchor="middle">Browser</text>
62
+
63
+ <!-- Install commands -->
64
+ <rect x="62" y="420" width="650" height="116" rx="10" fill="#080d18" stroke="#1e293b" stroke-width="1"/>
65
+ <rect x="62" y="420" width="3" height="116" rx="1.5" fill="url(#accentGrad)"/>
66
+ <text x="82" y="450" font-family="SF Mono,Consolas,Courier New,monospace" font-size="12.5" fill="#4b5563">$</text>
67
+ <text x="98" y="450" font-family="SF Mono,Consolas,Courier New,monospace" font-size="12.5" fill="#cbd5e1">npm install <tspan fill="#60a5fa">@7h3/protocol</tspan></text>
68
+ <text x="82" y="476" font-family="SF Mono,Consolas,Courier New,monospace" font-size="12.5" fill="#4b5563">$</text>
69
+ <text x="98" y="476" font-family="SF Mono,Consolas,Courier New,monospace" font-size="12.5" fill="#cbd5e1">pip install <tspan fill="#4ade80">7h3-protocol</tspan></text>
70
+ <text x="82" y="502" font-family="SF Mono,Consolas,Courier New,monospace" font-size="12.5" fill="#4b5563">$</text>
71
+ <text x="98" y="502" font-family="SF Mono,Consolas,Courier New,monospace" font-size="12.5" fill="#cbd5e1">cargo add <tspan fill="#fb923c">protocol-7h3</tspan></text>
72
+ <text x="82" y="528" font-family="SF Mono,Consolas,Courier New,monospace" font-size="12.5" fill="#4b5563">$</text>
73
+ <text x="98" y="528" font-family="SF Mono,Consolas,Courier New,monospace" font-size="12.5" fill="#cbd5e1">go get <tspan fill="#38bdf8">github.com/IceMasterT/7h3-protocol/sdk/go</tspan></text>
74
+
75
+ <!-- RIGHT COLUMN — Stat cards -->
76
+ <rect x="776" y="52" width="210" height="112" rx="12" fill="#0a0f20" stroke="#4f7cff" stroke-width="1.2"/>
77
+ <text x="881" y="94" font-family="Inter,sans-serif" font-size="30" font-weight="800" fill="#4f7cff" text-anchor="middle" filter="url(#softglow)">Ed25519</text>
78
+ <text x="881" y="118" font-family="Inter,sans-serif" font-size="12" fill="#64748b" text-anchor="middle">Asymmetric signing</text>
79
+ <text x="881" y="138" font-family="Inter,sans-serif" font-size="11" fill="#334155" text-anchor="middle">PKCS8 · SPKI · base64url</text>
80
+
81
+ <rect x="1004" y="52" width="210" height="112" rx="12" fill="#0a1a12" stroke="#10b981" stroke-width="1.2"/>
82
+ <text x="1109" y="100" font-family="Inter,sans-serif" font-size="48" font-weight="800" fill="#10b981" text-anchor="middle" filter="url(#softglow)">278</text>
83
+ <text x="1109" y="124" font-family="Inter,sans-serif" font-size="12" fill="#64748b" text-anchor="middle">tests passing</text>
84
+ <text x="1109" y="142" font-family="Inter,sans-serif" font-size="11" fill="#334155" text-anchor="middle">TS · Python · Rust · Go</text>
85
+
86
+ <rect x="776" y="180" width="210" height="112" rx="12" fill="#130a20" stroke="#a855f7" stroke-width="1.2"/>
87
+ <text x="881" y="236" font-family="Inter,sans-serif" font-size="48" font-weight="800" fill="#a855f7" text-anchor="middle" filter="url(#softglow)">0</text>
88
+ <text x="881" y="260" font-family="Inter,sans-serif" font-size="12" fill="#64748b" text-anchor="middle">runtime deps</text>
89
+ <text x="881" y="278" font-family="Inter,sans-serif" font-size="11" fill="#334155" text-anchor="middle">Pure stdlib · all 5 SDKs</text>
90
+
91
+ <rect x="1004" y="180" width="210" height="112" rx="12" fill="#1a1400" stroke="#f59e0b" stroke-width="1.2"/>
92
+ <text x="1109" y="236" font-family="Inter,sans-serif" font-size="48" font-weight="800" fill="#f59e0b" text-anchor="middle" filter="url(#softglow)">5</text>
93
+ <text x="1109" y="260" font-family="Inter,sans-serif" font-size="12" fill="#64748b" text-anchor="middle">transports</text>
94
+ <text x="1109" y="278" font-family="Inter,sans-serif" font-size="11" fill="#334155" text-anchor="middle">One wire format: 7h3/0.1</text>
95
+
96
+ <!-- Security features panel -->
97
+ <rect x="776" y="308" width="438" height="242" rx="12" fill="#0a0d1a" stroke="#1e293b" stroke-width="1"/>
98
+ <rect x="776" y="308" width="438" height="3" rx="1.5" fill="url(#accentGrad)"/>
99
+ <text x="796" y="338" font-family="SF Mono,Consolas,monospace" font-size="10" fill="#475569" letter-spacing="4">SECURITY GUARANTEES</text>
100
+
101
+ <rect x="796" y="350" width="3" height="38" rx="1.5" fill="#4f7cff"/>
102
+ <text x="810" y="368" font-family="Inter,sans-serif" font-size="14" font-weight="600" fill="#e2e8f0">Verified sender identity</text>
103
+ <text x="810" y="384" font-family="Inter,sans-serif" font-size="11.5" fill="#475569">Ed25519 — cryptographically impossible to forge</text>
104
+
105
+ <rect x="796" y="398" width="3" height="38" rx="1.5" fill="#10b981"/>
106
+ <text x="810" y="416" font-family="Inter,sans-serif" font-size="14" font-weight="600" fill="#e2e8f0">Replay attack prevention</text>
107
+ <text x="810" y="432" font-family="Inter,sans-serif" font-size="11.5" fill="#475569">TTL + nonce — captured messages expire, can't be reused</text>
108
+
109
+ <rect x="796" y="446" width="3" height="38" rx="1.5" fill="#a855f7"/>
110
+ <text x="810" y="464" font-family="Inter,sans-serif" font-size="14" font-weight="600" fill="#e2e8f0">Tamper-evident audit log</text>
111
+ <text x="810" y="480" font-family="Inter,sans-serif" font-size="11.5" fill="#475569">Ed25519-signed entries — alter one byte, break the chain</text>
112
+
113
+ <rect x="796" y="494" width="3" height="38" rx="1.5" fill="#f59e0b"/>
114
+ <text x="810" y="512" font-family="Inter,sans-serif" font-size="14" font-weight="600" fill="#e2e8f0">Bidirectional trust</text>
115
+ <text x="810" y="528" font-family="Inter,sans-serif" font-size="11.5" fill="#475569">Servers sign responses — clients verify replies too</text>
116
+
117
+ <!-- Footer -->
118
+ <rect x="0" y="608" width="1280" height="32" fill="#04040c"/>
119
+ <rect x="0" y="608" width="1280" height="1" fill="#1e293b"/>
120
+ <text x="62" y="630" font-family="SF Mono,Consolas,monospace" font-size="12" fill="#334155">github.com/IceMasterT/7h3-protocol</text>
121
+ <text x="640" y="630" font-family="SF Mono,Consolas,monospace" font-size="12" fill="#334155" text-anchor="middle">MIT License · wire: 7h3/0.1 · Zero runtime deps</text>
122
+ <text x="1218" y="630" font-family="SF Mono,Consolas,monospace" font-size="12" fill="#334155" text-anchor="end">v0.4.0</text>
123
+ </svg>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@7h3/protocol",
3
- "version": "0.4.0",
3
+ "version": "0.5.0",
4
4
  "description": "7h3 Protocol: deterministic, signed, replay-safe AI-to-AI messaging with TypeScript/Python/Rust parity. Wire version 7h3/0.1.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -15,18 +15,60 @@
15
15
  "types": "./dist/protocol/index.d.ts",
16
16
  "import": "./dist/protocol/index.js"
17
17
  },
18
- "./http": { "types": "./dist/protocol/httpBinding.d.ts", "import": "./dist/protocol/httpBinding.js" },
19
- "./webhook": { "types": "./dist/protocol/webhookBinding.d.ts", "import": "./dist/protocol/webhookBinding.js" },
20
- "./queue": { "types": "./dist/protocol/queueBinding.d.ts", "import": "./dist/protocol/queueBinding.js" },
21
- "./ws": { "types": "./dist/protocol/wsBinding.d.ts", "import": "./dist/protocol/wsBinding.js" },
22
- "./grpc": { "types": "./dist/protocol/grpcBinding.d.ts", "import": "./dist/protocol/grpcBinding.js" },
23
- "./keys": { "types": "./dist/protocol/keyInfra.d.ts", "import": "./dist/protocol/keyInfra.js" },
24
- "./key-registry": { "types": "./dist/protocol/keyRegistry.d.ts", "import": "./dist/protocol/keyRegistry.js" },
25
- "./gateway": { "types": "./dist/protocol/gateway.d.ts", "import": "./dist/protocol/gateway.js" },
26
- "./audit-log": { "types": "./dist/protocol/auditLog.d.ts", "import": "./dist/protocol/auditLog.js" },
27
- "./signed-response": { "types": "./dist/protocol/signedResponse.d.ts", "import": "./dist/protocol/signedResponse.js" },
28
- "./rate-limiter": { "types": "./dist/protocol/rateLimiter.d.ts", "import": "./dist/protocol/rateLimiter.js" },
29
- "./route-policy": { "types": "./dist/protocol/routePolicy.d.ts", "import": "./dist/protocol/routePolicy.js" }
18
+ "./http": {
19
+ "types": "./dist/protocol/httpBinding.d.ts",
20
+ "import": "./dist/protocol/httpBinding.js"
21
+ },
22
+ "./webhook": {
23
+ "types": "./dist/protocol/webhookBinding.d.ts",
24
+ "import": "./dist/protocol/webhookBinding.js"
25
+ },
26
+ "./queue": {
27
+ "types": "./dist/protocol/queueBinding.d.ts",
28
+ "import": "./dist/protocol/queueBinding.js"
29
+ },
30
+ "./ws": {
31
+ "types": "./dist/protocol/wsBinding.d.ts",
32
+ "import": "./dist/protocol/wsBinding.js"
33
+ },
34
+ "./grpc": {
35
+ "types": "./dist/protocol/grpcBinding.d.ts",
36
+ "import": "./dist/protocol/grpcBinding.js"
37
+ },
38
+ "./keys": {
39
+ "types": "./dist/protocol/keyInfra.d.ts",
40
+ "import": "./dist/protocol/keyInfra.js"
41
+ },
42
+ "./key-registry": {
43
+ "types": "./dist/protocol/keyRegistry.d.ts",
44
+ "import": "./dist/protocol/keyRegistry.js"
45
+ },
46
+ "./gateway": {
47
+ "types": "./dist/protocol/gateway.d.ts",
48
+ "import": "./dist/protocol/gateway.js"
49
+ },
50
+ "./audit-log": {
51
+ "types": "./dist/protocol/auditLog.d.ts",
52
+ "import": "./dist/protocol/auditLog.js"
53
+ },
54
+ "./signed-response": {
55
+ "types": "./dist/protocol/signedResponse.d.ts",
56
+ "import": "./dist/protocol/signedResponse.js"
57
+ },
58
+ "./rate-limiter": {
59
+ "types": "./dist/protocol/rateLimiter.d.ts",
60
+ "import": "./dist/protocol/rateLimiter.js"
61
+ },
62
+ "./route-policy": {
63
+ "types": "./dist/protocol/routePolicy.d.ts",
64
+ "import": "./dist/protocol/routePolicy.js"
65
+ },
66
+ "./encryption": { "types": "./dist/protocol/encryption.d.ts", "import": "./dist/protocol/encryption.js" },
67
+ "./capability": { "types": "./dist/protocol/capability.d.ts", "import": "./dist/protocol/capability.js" },
68
+ "./stream": { "types": "./dist/protocol/stream.d.ts", "import": "./dist/protocol/stream.js" },
69
+ "./telemetry": { "types": "./dist/protocol/telemetry.d.ts", "import": "./dist/protocol/telemetry.js" },
70
+ "./cbor": { "types": "./dist/protocol/envelopeCbor.d.ts", "import": "./dist/protocol/envelopeCbor.js" },
71
+ "./replay": { "types": "./dist/protocol/replayStores.d.ts", "import": "./dist/protocol/replayStores.js" }
30
72
  },
31
73
  "repository": {
32
74
  "type": "git",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@7h3/protocol-browser",
3
- "version": "0.4.0",
3
+ "version": "0.5.0",
4
4
  "description": "7h3 Protocol - Browser/Edge SDK. Pure Web Crypto API. Zero dependencies.",
5
5
  "type": "module",
6
6
  "main": "./index.js",