@kraki/head 0.17.3 → 0.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/storage.js CHANGED
@@ -1,6 +1,39 @@
1
1
  import { createHash, randomBytes } from 'crypto';
2
2
  import Database from 'better-sqlite3';
3
- const SCHEMA_VERSION = 11;
3
+ const SCHEMA_VERSION = 12;
4
+ /**
5
+ * Audio a live broker connection may run ahead of its last usage report.
6
+ * The broker reports every 15 s while recording and each reply extends the
7
+ * allowance, so a recording never waits on Head; the chunk only bounds what a
8
+ * connection holds in reserve (and what it may use if Head is unreachable).
9
+ */
10
+ export const VOICE_GRANT_CHUNK_SEC = 60;
11
+ /**
12
+ * Past its expiry a lease still gets grants for the recording in progress
13
+ * (the broker never cuts one off at expiry) for at most this long.
14
+ */
15
+ export const VOICE_EXPIRY_OVERRUN_SEC = 900;
16
+ /**
17
+ * A connection past its overrun window can no longer be granted audio and the
18
+ * broker hard-stops it; keep reserving its last grant a little longer so a
19
+ * lost close report never frees budget the broker may still be using.
20
+ */
21
+ const VOICE_RESERVATION_SLACK_SEC = 120;
22
+ const utcDay = (unixSec) => new Date(unixSec * 1000).toISOString().slice(0, 10);
23
+ /**
24
+ * Broker usage reasons emitted while the warm socket stays open (periodic
25
+ * checkpoints, reconnect takeover, end of one recording). Any other reason is
26
+ * the broker's forced final report for a closing socket.
27
+ */
28
+ const VOICE_OPEN_USAGE_REASONS = new Set([
29
+ 'checkpoint',
30
+ 'connection_takeover',
31
+ 'session_final',
32
+ 'asr_open_failed',
33
+ 'asr_error',
34
+ 'asr_closed',
35
+ 'asr_send_failed',
36
+ ]);
4
37
  export class Storage {
5
38
  db;
6
39
  /** Raw SQLite handle for adjacent subsystems (e.g. the pulse hub's own
@@ -219,6 +252,49 @@ export class Storage {
219
252
  UPDATE voice_leases
220
253
  SET reported_audio_seconds = COALESCE(used_seconds, 0)
221
254
  WHERE reported_audio_seconds = 0 AND used_seconds IS NOT NULL
255
+ `);
256
+ }
257
+ if (currentVersion < 12) {
258
+ // Usage-time daily accounting. A lease is a long-lived credential; the
259
+ // budget is granted incrementally (`allowed_seconds`, a cumulative
260
+ // ceiling) and every reported second is charged to the UTC day it was
261
+ // reported on, so a recording crossing midnight splits naturally.
262
+ const columns = new Set(this.db.prepare('PRAGMA table_info(voice_leases)').all()
263
+ .map((column) => column.name));
264
+ if (!columns.has('allowed_seconds')) {
265
+ this.db.exec('ALTER TABLE voice_leases ADD COLUMN allowed_seconds REAL');
266
+ }
267
+ if (!columns.has('closed_at')) {
268
+ this.db.exec('ALTER TABLE voice_leases ADD COLUMN closed_at TEXT');
269
+ }
270
+ this.db.exec(`
271
+ CREATE TABLE IF NOT EXISTS voice_usage_daily (
272
+ user_id TEXT NOT NULL,
273
+ day TEXT NOT NULL,
274
+ seconds REAL NOT NULL DEFAULT 0,
275
+ PRIMARY KEY (user_id, day)
276
+ );
277
+ INSERT OR IGNORE INTO voice_usage_daily (user_id, day, seconds)
278
+ SELECT user_id, substr(issued_at, 1, 10),
279
+ SUM(MAX(COALESCE(reported_audio_seconds, 0), COALESCE(used_seconds, 0)))
280
+ FROM voice_leases GROUP BY user_id, substr(issued_at, 1, 10);
281
+ `);
282
+ // Close reports were not recorded before. Clients only request a new
283
+ // lease after closing the old socket, so a lease whose device later
284
+ // *activated* a newer lease is closed. Leases whose successor never
285
+ // connected keep reserving (their socket may still be recording).
286
+ this.db.exec(`
287
+ UPDATE voice_leases
288
+ SET closed_at = COALESCE(settled_at, activated_at, issued_at)
289
+ WHERE closed_at IS NULL AND activated_at IS NOT NULL AND EXISTS (
290
+ SELECT 1 FROM voice_leases newer
291
+ WHERE newer.user_id = voice_leases.user_id
292
+ AND newer.device_id = voice_leases.device_id
293
+ AND newer.resource = voice_leases.resource
294
+ AND newer.activated_at IS NOT NULL
295
+ AND (newer.activated_at, newer.issued_at, newer.jti)
296
+ > (voice_leases.activated_at, voice_leases.issued_at, voice_leases.jti)
297
+ )
222
298
  `);
223
299
  }
224
300
  this.db.pragma(`user_version = ${SCHEMA_VERSION}`);
@@ -529,37 +605,62 @@ export class Storage {
529
605
  `).run(input.jti, input.userId, input.deviceId, input.resource, input.quotaSeconds, issuedIso, expiresIso);
530
606
  }
531
607
  /**
532
- * Daily reserved/consumed voice seconds for a user. Every unexpired lease
533
- * reserves its full signed quota even after usage checkpoints, because the
534
- * same warm authorization can still consume the remainder. One minute after
535
- * expiry the reservation collapses to trusted broker-reported actual usage.
608
+ * Voice seconds charged against a user's daily cap for the UTC day of
609
+ * `nowUnixSec`: audio reported today, plus the not-yet-used part of the
610
+ * allowance held by live connections (at most one grant chunk each), so
611
+ * concurrent devices can never jointly exceed the cap. `excludeJti` leaves
612
+ * one lease's reservation out (used when re-granting that lease).
536
613
  */
537
- sumVoiceLeaseQuotaIssuedToday(userId, nowUnixSec) {
538
- const day = new Date(nowUnixSec * 1000).toISOString().slice(0, 10);
539
- const row = this.db.prepare(`
540
- SELECT COALESCE(SUM(
541
- CASE
542
- WHEN unixepoch(expires_at) + 60 > ? THEN quota_seconds
543
- ELSE COALESCE(used_seconds, 0)
544
- END
545
- ), 0) AS total
614
+ voiceSecondsAccountedToday(userId, nowUnixSec, excludeJti = '') {
615
+ const used = this.db.prepare(`
616
+ SELECT seconds FROM voice_usage_daily WHERE user_id = ? AND day = ?
617
+ `).get(userId, utcDay(nowUnixSec));
618
+ const reserved = this.db.prepare(`
619
+ SELECT COALESCE(SUM(MAX(0,
620
+ COALESCE(allowed_seconds, quota_seconds) - COALESCE(reported_audio_seconds, 0)
621
+ )), 0) AS total
546
622
  FROM voice_leases
547
- WHERE user_id = ? AND substr(issued_at, 1, 10) = ?
548
- `).get(nowUnixSec, userId, day);
549
- return Number(row.total) || 0;
623
+ WHERE user_id = ? AND jti != ?
624
+ AND activated_at IS NOT NULL AND closed_at IS NULL
625
+ AND unixepoch(expires_at) + ? > ?
626
+ `).get(userId, excludeJti, VOICE_EXPIRY_OVERRUN_SEC + VOICE_RESERVATION_SLACK_SEC, nowUnixSec);
627
+ return Math.ceil((Number(used?.seconds) || 0) + (Number(reserved.total) || 0));
628
+ }
629
+ /**
630
+ * A device only ever holds one lease: when it asks for a new one, its
631
+ * earlier leases that never connected are abandoned. Revoke them so they can
632
+ * never be activated later.
633
+ */
634
+ revokePendingVoiceLeases(userId, deviceId, resource, nowUnixSec) {
635
+ return this.db.prepare(`
636
+ UPDATE voice_leases SET revoked_at = ?
637
+ WHERE user_id = ? AND device_id = ? AND resource = ?
638
+ AND activated_at IS NULL AND revoked_at IS NULL
639
+ `).run(new Date(nowUnixSec * 1000).toISOString(), userId, deviceId, resource).changes;
640
+ }
641
+ /**
642
+ * Cumulative allowance for a lease that has reported `reported` seconds:
643
+ * `reported` plus what today's budget leaves (optionally at most one chunk),
644
+ * never above the signed per-lease ceiling.
645
+ */
646
+ voiceAllowance(lease, reported, nowUnixSec, dailyCapSec, chunkSec) {
647
+ const accounted = this.voiceSecondsAccountedToday(lease.user_id, nowUnixSec, lease.jti);
648
+ const budgetLeft = Math.max(0, dailyCapSec - accounted);
649
+ return Math.min(lease.quota_seconds, reported + Math.min(chunkSec, budgetLeft));
550
650
  }
551
651
  /**
552
- * Activate a warm lease connection before the broker accepts recordings.
553
- * The same activation id is an idempotent retry. A different activation id
554
- * replaces the previous owner (last-writer-wins reconnect) and makes stale
555
- * checkpoints fail closed. The exact cumulative usage is returned so a new
556
- * broker connection can resume quota accounting without rounding drift.
652
+ * Activate a lease connection before the broker accepts recordings. The
653
+ * same activation id is an idempotent retry; a different one replaces the
654
+ * previous owner (last-writer-wins reconnect) and makes stale checkpoints
655
+ * fail closed. Returns the exact cumulative usage (to resume) and, with a
656
+ * daily cap, the cumulative allowance the broker must enforce: one grant
657
+ * chunk for brokers that renew grants on usage reports, otherwise all that
658
+ * today's budget leaves.
557
659
  */
558
660
  activateVoiceLease(input) {
559
661
  const nowUnixSec = input.activatedAtUnixSec ?? Math.floor(Date.now() / 1000);
560
- const activationDay = new Date(nowUnixSec * 1000).toISOString().slice(0, 10);
561
662
  const lease = this.db.prepare(`
562
- SELECT activation_id, activated_at, issued_at,
663
+ SELECT jti, user_id, quota_seconds, allowed_seconds, activation_id, activated_at,
563
664
  unixepoch(expires_at) AS expires_at_unix, revoked_at,
564
665
  COALESCE(reported_audio_seconds, 0) AS reported_audio_seconds
565
666
  FROM voice_leases WHERE jti = ?
@@ -570,32 +671,65 @@ export class Storage {
570
671
  return { status: 'revoked' };
571
672
  if (lease.expires_at_unix <= nowUnixSec)
572
673
  return { status: 'expired' };
573
- if (lease.issued_at.slice(0, 10) !== activationDay)
574
- return { status: 'wrong_day' };
575
674
  const reportedAudioSeconds = Number(lease.reported_audio_seconds) || 0;
576
675
  if (lease.activated_at !== null && lease.activation_id === input.activationId) {
577
- return { status: 'unchanged', reportedAudioSeconds };
676
+ return {
677
+ status: 'unchanged',
678
+ reportedAudioSeconds,
679
+ quotaSeconds: lease.allowed_seconds ?? lease.quota_seconds,
680
+ };
578
681
  }
579
- const activatedAt = new Date(nowUnixSec * 1000).toISOString();
682
+ let allowedSeconds = lease.quota_seconds;
683
+ if (input.dailyCapSec !== undefined) {
684
+ allowedSeconds = this.voiceAllowance(lease, reportedAudioSeconds, nowUnixSec, input.dailyCapSec, input.grants ? VOICE_GRANT_CHUNK_SEC : Number.POSITIVE_INFINITY);
685
+ if (!input.grants && lease.quota_seconds > input.dailyCapSec) {
686
+ // A broker that ignores grants would enforce the day-scale signed
687
+ // ceiling and let one socket exceed the cap: refuse (fail closed).
688
+ return { status: 'grants_required', reportedAudioSeconds };
689
+ }
690
+ if (!input.grants && allowedSeconds < lease.quota_seconds) {
691
+ return { status: 'quota_exhausted', reportedAudioSeconds };
692
+ }
693
+ if (allowedSeconds - reportedAudioSeconds < 1) {
694
+ if (lease.activated_at === null) {
695
+ // Never connected and now unusable: nobody should activate it later.
696
+ this.db.prepare(`
697
+ UPDATE voice_leases SET revoked_at = ? WHERE jti = ? AND activated_at IS NULL
698
+ `).run(new Date(nowUnixSec * 1000).toISOString(), input.jti);
699
+ }
700
+ return { status: 'quota_exhausted', reportedAudioSeconds };
701
+ }
702
+ }
703
+ // Last-writer-wins: the broker transfers a replaced same-process owner's
704
+ // unreported audio to the new owner (reported as connection_takeover).
705
+ // Assumes one broker process per lease; across processes a replaced
706
+ // socket could use at most its last grant chunk unaccounted.
580
707
  this.db.prepare(`
581
- UPDATE voice_leases SET activation_id = ?, activated_at = ?
582
- WHERE jti = ? AND revoked_at IS NULL
583
- AND unixepoch(expires_at) > ? AND substr(issued_at, 1, 10) = ?
584
- `).run(input.activationId, activatedAt, input.jti, nowUnixSec, activationDay);
708
+ UPDATE voice_leases
709
+ SET activation_id = ?, activated_at = ?, allowed_seconds = ?, closed_at = NULL
710
+ WHERE jti = ? AND revoked_at IS NULL AND unixepoch(expires_at) > ?
711
+ `).run(input.activationId, new Date(nowUnixSec * 1000).toISOString(), allowedSeconds, input.jti, nowUnixSec);
585
712
  return {
586
713
  status: lease.activated_at === null ? 'activated' : 'replaced',
587
714
  reportedAudioSeconds,
715
+ quotaSeconds: allowedSeconds,
588
716
  };
589
717
  }
590
718
  /**
591
- * Store a monotonic cumulative usage checkpoint for one warm lease. Equal
592
- * values are idempotent; lower out-of-order retries are stale but harmless;
593
- * higher values advance both the exact cumulative value and rounded audit
594
- * seconds. Checkpoints from a replaced activation are rejected.
719
+ * Store a monotonic cumulative usage checkpoint for one lease connection
720
+ * and charge the increase to the UTC day it is reported on. Equal values
721
+ * are idempotent; lower out-of-order retries are stale but harmless;
722
+ * checkpoints from a replaced activation are rejected. The broker's final
723
+ * report for a closing socket releases its reservation.
724
+ *
725
+ * With `grants`, a report from a live connection also renews its allowance
726
+ * (returned as `quotaSeconds`): one chunk ahead while today's budget lasts,
727
+ * nothing more once the lease is revoked or long past expiry.
595
728
  */
596
729
  settleVoiceLease(input) {
597
730
  const lease = this.db.prepare(`
598
- SELECT quota_seconds, used_seconds, activation_id, activated_at,
731
+ SELECT jti, user_id, quota_seconds, allowed_seconds, used_seconds, activation_id,
732
+ activated_at, closed_at, revoked_at, unixepoch(expires_at) AS expires_at_unix,
599
733
  COALESCE(reported_audio_seconds, 0) AS reported_audio_seconds
600
734
  FROM voice_leases WHERE jti = ?
601
735
  `).get(input.jti);
@@ -603,34 +737,59 @@ export class Storage {
603
737
  return { status: 'not_found' };
604
738
  if (lease.activated_at === null)
605
739
  return { status: 'not_activated' };
740
+ const nowUnixSec = input.settledAtUnixSec ?? Math.floor(Date.now() / 1000);
741
+ const nowIso = new Date(nowUnixSec * 1000).toISOString();
606
742
  if (lease.activation_id !== input.activationId)
607
743
  return { status: 'conflict' };
608
- const reportedAudioSeconds = Math.min(lease.quota_seconds, Math.max(0, input.audioSeconds));
744
+ const closing = !VOICE_OPEN_USAGE_REASONS.has(input.reason ?? '');
609
745
  const currentReported = Number(lease.reported_audio_seconds) || 0;
610
- const currentUsed = lease.used_seconds ?? Math.ceil(currentReported);
611
- if (reportedAudioSeconds < currentReported) {
612
- return {
613
- status: 'stale',
614
- usedSeconds: currentUsed,
615
- reportedAudioSeconds: currentReported,
616
- };
617
- }
618
- if (reportedAudioSeconds === currentReported) {
619
- return {
620
- status: 'unchanged',
621
- usedSeconds: currentUsed,
622
- reportedAudioSeconds: currentReported,
623
- };
746
+ const reported = Math.min(lease.quota_seconds, Math.max(0, input.audioSeconds));
747
+ let status = 'unchanged';
748
+ let latestReported = currentReported;
749
+ this.db.transaction(() => {
750
+ if (reported > currentReported) {
751
+ status = 'updated';
752
+ latestReported = reported;
753
+ this.db.prepare(`
754
+ UPDATE voice_leases
755
+ SET reported_audio_seconds = ?, used_seconds = ?, settled_at = ?, settlement_reason = ?
756
+ WHERE jti = ? AND activation_id = ?
757
+ `).run(reported, Math.ceil(reported), nowIso, input.reason?.slice(0, 64) ?? null, input.jti, input.activationId);
758
+ this.chargeVoiceUsage(lease.user_id, nowUnixSec, reported - currentReported);
759
+ }
760
+ else if (reported < currentReported) {
761
+ status = 'stale';
762
+ }
763
+ // Closing is terminal for this activation; only a new activation
764
+ // (reconnect) reopens the lease.
765
+ if (closing && lease.closed_at === null) {
766
+ this.db.prepare('UPDATE voice_leases SET closed_at = ? WHERE jti = ?').run(nowIso, input.jti);
767
+ }
768
+ })();
769
+ let quotaSeconds;
770
+ if (input.grants && !closing && input.dailyCapSec !== undefined) {
771
+ const live = lease.revoked_at === null && lease.closed_at === null
772
+ && nowUnixSec < lease.expires_at_unix + VOICE_EXPIRY_OVERRUN_SEC;
773
+ quotaSeconds = live
774
+ ? this.voiceAllowance(lease, latestReported, nowUnixSec, input.dailyCapSec, VOICE_GRANT_CHUNK_SEC)
775
+ : latestReported;
776
+ this.db.prepare('UPDATE voice_leases SET allowed_seconds = ? WHERE jti = ?')
777
+ .run(quotaSeconds, input.jti);
624
778
  }
625
- const usedSeconds = Math.ceil(reportedAudioSeconds);
626
- const settledAt = new Date((input.settledAtUnixSec ?? Math.floor(Date.now() / 1000)) * 1000).toISOString();
779
+ return {
780
+ status,
781
+ usedSeconds: Math.max(lease.used_seconds ?? 0, Math.ceil(latestReported)),
782
+ reportedAudioSeconds: latestReported,
783
+ ...(quotaSeconds !== undefined ? { quotaSeconds } : {}),
784
+ };
785
+ }
786
+ chargeVoiceUsage(userId, nowUnixSec, seconds) {
787
+ if (!(seconds > 0))
788
+ return;
627
789
  this.db.prepare(`
628
- UPDATE voice_leases
629
- SET reported_audio_seconds = ?, used_seconds = ?, settled_at = ?, settlement_reason = ?
630
- WHERE jti = ? AND activation_id = ?
631
- AND COALESCE(reported_audio_seconds, 0) < ?
632
- `).run(reportedAudioSeconds, usedSeconds, settledAt, input.reason?.slice(0, 64) ?? null, input.jti, input.activationId, reportedAudioSeconds);
633
- return { status: 'updated', usedSeconds, reportedAudioSeconds };
790
+ INSERT INTO voice_usage_daily (user_id, day, seconds) VALUES (?, ?, ?)
791
+ ON CONFLICT (user_id, day) DO UPDATE SET seconds = seconds + excluded.seconds
792
+ `).run(userId, utcDay(nowUnixSec), seconds);
634
793
  }
635
794
  /** Fetch a single lease by jti (audit / debug). Returns undefined if unknown. */
636
795
  getVoiceLease(jti) {
@@ -638,7 +797,7 @@ export class Storage {
638
797
  SELECT jti, user_id, device_id, resource, quota_seconds, issued_at,
639
798
  expires_at, revoked_at, used_seconds, settled_at, settlement_reason,
640
799
  COALESCE(reported_audio_seconds, 0) AS reported_audio_seconds,
641
- activation_id, activated_at
800
+ activation_id, activated_at, allowed_seconds, closed_at
642
801
  FROM voice_leases WHERE jti = ?
643
802
  `).get(jti);
644
803
  if (!row)
@@ -658,6 +817,8 @@ export class Storage {
658
817
  reportedAudioSeconds: Number(row.reported_audio_seconds) || 0,
659
818
  activationId: row.activation_id,
660
819
  activatedAt: row.activated_at,
820
+ allowedSeconds: row.allowed_seconds,
821
+ closedAt: row.closed_at,
661
822
  };
662
823
  }
663
824
  // --- Cleanup ---
@@ -1 +1 @@
1
- {"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"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"}
@@ -7,4 +7,8 @@ export interface VoiceSettlementResponse {
7
7
  status: number;
8
8
  body: Record<string, unknown>;
9
9
  }
10
- export declare function handleVoiceSettlement(storage: Storage, settlementKey: string, request: VoiceSettlementRequest): VoiceSettlementResponse;
10
+ export interface VoiceSettlementOptions {
11
+ /** Per-user daily voice cap; activations and usage reports are granted against it. */
12
+ dailyCapSec?: number;
13
+ }
14
+ export declare function handleVoiceSettlement(storage: Storage, settlementKey: string, request: VoiceSettlementRequest, options?: VoiceSettlementOptions): VoiceSettlementResponse;
@@ -1,5 +1,5 @@
1
1
  import { safeEqual } from './auth.js';
2
- export function handleVoiceSettlement(storage, settlementKey, request) {
2
+ export function handleVoiceSettlement(storage, settlementKey, request, options = {}) {
3
3
  const token = request.authorization?.startsWith('Bearer ')
4
4
  ? request.authorization.slice(7)
5
5
  : '';
@@ -23,21 +23,27 @@ export function handleVoiceSettlement(storage, settlementKey, request) {
23
23
  const result = storage.activateVoiceLease({
24
24
  jti: input.jti,
25
25
  activationId: input.activationId,
26
+ dailyCapSec: options.dailyCapSec,
27
+ grants: input.grants === true,
26
28
  });
27
29
  if (result.status === 'not_found')
28
30
  return { status: 404, body: { error: 'not_found' } };
29
31
  if (result.status === 'expired')
30
32
  return { status: 409, body: { error: 'lease_expired' } };
31
- if (result.status === 'wrong_day')
32
- return { status: 409, body: { error: 'lease_wrong_day' } };
33
33
  if (result.status === 'revoked')
34
34
  return { status: 409, body: { error: 'lease_revoked' } };
35
+ if (result.status === 'quota_exhausted')
36
+ return { status: 409, body: { error: 'quota_exhausted' } };
37
+ if (result.status === 'grants_required') {
38
+ return { status: 409, body: { error: 'broker_upgrade_required' } };
39
+ }
35
40
  return {
36
41
  status: 200,
37
42
  body: {
38
43
  ok: true,
39
44
  activationStatus: result.status,
40
45
  reportedAudioSeconds: result.reportedAudioSeconds ?? 0,
46
+ quotaSeconds: result.quotaSeconds,
41
47
  },
42
48
  };
43
49
  }
@@ -50,6 +56,8 @@ export function handleVoiceSettlement(storage, settlementKey, request) {
50
56
  activationId: input.activationId,
51
57
  audioSeconds: input.audioSeconds,
52
58
  reason: typeof input.reason === 'string' ? input.reason : undefined,
59
+ dailyCapSec: options.dailyCapSec,
60
+ grants: input.grants === true,
53
61
  });
54
62
  if (result.status === 'not_found') {
55
63
  return { status: 404, body: { error: 'not_found' } };
@@ -67,6 +75,7 @@ export function handleVoiceSettlement(storage, settlementKey, request) {
67
75
  usedSeconds: result.usedSeconds,
68
76
  reportedAudioSeconds: result.reportedAudioSeconds,
69
77
  settlementStatus: result.status,
78
+ ...(result.quotaSeconds !== undefined ? { quotaSeconds: result.quotaSeconds } : {}),
70
79
  },
71
80
  };
72
81
  }
@@ -1 +1 @@
1
- {"version":3,"file":"voice-settlement.js","sourceRoot":"","sources":["../src/voice-settlement.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"voice-settlement.js","sourceRoot":"","sources":["../src/voice-settlement.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kraki/head",
3
- "version": "0.17.3",
3
+ "version": "0.18.0",
4
4
  "description": "Kraki relay server — the brain that routes messages between tentacles and apps",
5
5
  "repository": {
6
6
  "type": "git",
@@ -30,8 +30,8 @@
30
30
  "uuid": "^13.0.0",
31
31
  "web-push": "^3.6.7",
32
32
  "ws": "^8.19.0",
33
- "@kraki/crypto": "0.2.1",
34
- "@kraki/protocol": "0.21.1"
33
+ "@kraki/protocol": "0.23.0",
34
+ "@kraki/crypto": "0.2.1"
35
35
  },
36
36
  "devDependencies": {
37
37
  "@types/better-sqlite3": "^7.6.0",