@hexidecibel/companion 0.0.1 → 0.1.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 (110) hide show
  1. package/dist/__tests__/task-parser.test.js +29 -29
  2. package/dist/__tests__/task-parser.test.js.map +1 -1
  3. package/dist/anthropic-usage.d.ts.map +1 -1
  4. package/dist/anthropic-usage.js +1 -1
  5. package/dist/anthropic-usage.js.map +1 -1
  6. package/dist/cert-generator.d.ts.map +1 -1
  7. package/dist/cert-generator.js +4 -21
  8. package/dist/cert-generator.js.map +1 -1
  9. package/dist/cli.d.ts +9 -0
  10. package/dist/cli.d.ts.map +1 -0
  11. package/dist/cli.js +413 -0
  12. package/dist/cli.js.map +1 -0
  13. package/dist/config.d.ts.map +1 -1
  14. package/dist/config.js +1 -7
  15. package/dist/config.js.map +1 -1
  16. package/dist/escalation.d.ts +51 -0
  17. package/dist/escalation.d.ts.map +1 -0
  18. package/dist/escalation.js +198 -0
  19. package/dist/escalation.js.map +1 -0
  20. package/dist/index.js +67 -30
  21. package/dist/index.js.map +1 -1
  22. package/dist/input-injector.d.ts.map +1 -1
  23. package/dist/input-injector.js +9 -5
  24. package/dist/input-injector.js.map +1 -1
  25. package/dist/notification-store.d.ts +35 -0
  26. package/dist/notification-store.d.ts.map +1 -0
  27. package/dist/notification-store.js +272 -0
  28. package/dist/notification-store.js.map +1 -0
  29. package/dist/parser.d.ts +15 -1
  30. package/dist/parser.d.ts.map +1 -1
  31. package/dist/parser.js +106 -61
  32. package/dist/parser.js.map +1 -1
  33. package/dist/push.d.ts +18 -26
  34. package/dist/push.d.ts.map +1 -1
  35. package/dist/push.js +90 -184
  36. package/dist/push.js.map +1 -1
  37. package/dist/qr-server.d.ts.map +1 -1
  38. package/dist/qr-server.js +134 -135
  39. package/dist/qr-server.js.map +1 -1
  40. package/dist/rules-engine.d.ts +20 -0
  41. package/dist/rules-engine.d.ts.map +1 -0
  42. package/dist/rules-engine.js +71 -0
  43. package/dist/rules-engine.js.map +1 -0
  44. package/dist/scaffold/claude-commands.d.ts +18 -0
  45. package/dist/scaffold/claude-commands.d.ts.map +1 -0
  46. package/dist/scaffold/claude-commands.js +352 -0
  47. package/dist/scaffold/claude-commands.js.map +1 -0
  48. package/dist/scaffold/generator.d.ts.map +1 -1
  49. package/dist/scaffold/generator.js +26 -1
  50. package/dist/scaffold/generator.js.map +1 -1
  51. package/dist/scaffold/scorer.d.ts +19 -0
  52. package/dist/scaffold/scorer.d.ts.map +1 -0
  53. package/dist/scaffold/scorer.js +92 -0
  54. package/dist/scaffold/scorer.js.map +1 -0
  55. package/dist/scaffold/templates/go-cli.d.ts +3 -0
  56. package/dist/scaffold/templates/go-cli.d.ts.map +1 -0
  57. package/dist/scaffold/templates/go-cli.js +249 -0
  58. package/dist/scaffold/templates/go-cli.js.map +1 -0
  59. package/dist/scaffold/templates/index.d.ts.map +1 -1
  60. package/dist/scaffold/templates/index.js +8 -2
  61. package/dist/scaffold/templates/index.js.map +1 -1
  62. package/dist/scaffold/templates/nextjs.d.ts +3 -0
  63. package/dist/scaffold/templates/nextjs.d.ts.map +1 -0
  64. package/dist/scaffold/templates/nextjs.js +336 -0
  65. package/dist/scaffold/templates/nextjs.js.map +1 -0
  66. package/dist/scaffold/templates/node-express.d.ts.map +1 -1
  67. package/dist/scaffold/templates/node-express.js +170 -157
  68. package/dist/scaffold/templates/node-express.js.map +1 -1
  69. package/dist/scaffold/templates/python-fastapi.d.ts.map +1 -1
  70. package/dist/scaffold/templates/python-fastapi.js +234 -221
  71. package/dist/scaffold/templates/python-fastapi.js.map +1 -1
  72. package/dist/scaffold/templates/react-mui-website.d.ts.map +1 -1
  73. package/dist/scaffold/templates/react-mui-website.js +337 -324
  74. package/dist/scaffold/templates/react-mui-website.js.map +1 -1
  75. package/dist/scaffold/templates/react-typescript.d.ts.map +1 -1
  76. package/dist/scaffold/templates/react-typescript.js +219 -206
  77. package/dist/scaffold/templates/react-typescript.js.map +1 -1
  78. package/dist/scaffold/templates/typescript-library.d.ts +3 -0
  79. package/dist/scaffold/templates/typescript-library.d.ts.map +1 -0
  80. package/dist/scaffold/templates/typescript-library.js +241 -0
  81. package/dist/scaffold/templates/typescript-library.js.map +1 -0
  82. package/dist/scaffold/types.d.ts +7 -0
  83. package/dist/scaffold/types.d.ts.map +1 -1
  84. package/dist/subagent-watcher.d.ts.map +1 -1
  85. package/dist/subagent-watcher.js +3 -3
  86. package/dist/subagent-watcher.js.map +1 -1
  87. package/dist/tmux-manager.d.ts +37 -0
  88. package/dist/tmux-manager.d.ts.map +1 -1
  89. package/dist/tmux-manager.js +165 -5
  90. package/dist/tmux-manager.js.map +1 -1
  91. package/dist/tool-config.d.ts.map +1 -1
  92. package/dist/tool-config.js +2 -2
  93. package/dist/tool-config.js.map +1 -1
  94. package/dist/types.d.ts +85 -0
  95. package/dist/types.d.ts.map +1 -1
  96. package/dist/types.js +18 -0
  97. package/dist/types.js.map +1 -1
  98. package/dist/watcher.d.ts +7 -0
  99. package/dist/watcher.d.ts.map +1 -1
  100. package/dist/watcher.js +118 -9
  101. package/dist/watcher.js.map +1 -1
  102. package/dist/websocket.d.ts +16 -2
  103. package/dist/websocket.d.ts.map +1 -1
  104. package/dist/websocket.js +758 -117
  105. package/dist/websocket.js.map +1 -1
  106. package/dist/work-group-manager.d.ts +69 -0
  107. package/dist/work-group-manager.d.ts.map +1 -0
  108. package/dist/work-group-manager.js +610 -0
  109. package/dist/work-group-manager.js.map +1 -0
  110. package/package.json +1 -1
package/dist/push.js CHANGED
@@ -36,26 +36,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.PushNotificationService = void 0;
37
37
  const admin = __importStar(require("firebase-admin"));
38
38
  const fs = __importStar(require("fs"));
39
- const DEFAULT_DEVICE_PREFS = {
40
- quietHoursEnabled: false,
41
- quietHoursStart: '22:00',
42
- quietHoursEnd: '08:00',
43
- throttleMinutes: 0,
44
- };
45
39
  class PushNotificationService {
46
- devices = new Map();
47
- instantNotifyDevices = new Set();
48
- devicePrefs = new Map();
49
- lastNotificationTime = new Map();
50
- pendingPush = null;
51
- pushDelayMs;
40
+ store;
52
41
  firebaseInitialized = false;
53
- // Batched notifications for non-instant devices
54
- batchedNotifications = [];
55
- batchTimer = null;
56
- BATCH_INTERVAL_MS = 4 * 60 * 60 * 1000; // 4 hours
57
- constructor(credentialsPath, pushDelayMs) {
58
- this.pushDelayMs = pushDelayMs;
42
+ constructor(credentialsPath, _pushDelayMs, store) {
43
+ this.store = store;
59
44
  // Initialize Firebase if credentials provided
60
45
  if (credentialsPath && fs.existsSync(credentialsPath)) {
61
46
  try {
@@ -75,59 +60,11 @@ class PushNotificationService {
75
60
  console.log('Push notifications: No Firebase credentials, using Expo Push');
76
61
  }
77
62
  }
78
- setInstantNotify(deviceId, enabled) {
79
- if (enabled) {
80
- this.instantNotifyDevices.add(deviceId);
81
- console.log(`Push notifications: Instant notify enabled for ${deviceId}`);
82
- }
83
- else {
84
- this.instantNotifyDevices.delete(deviceId);
85
- console.log(`Push notifications: Instant notify disabled for ${deviceId}`);
86
- }
87
- }
88
- setNotificationPrefs(deviceId, prefs) {
89
- this.devicePrefs.set(deviceId, prefs);
90
- console.log(`Push notifications: Updated prefs for ${deviceId}:`, prefs);
91
- }
92
- isInQuietHours(deviceId) {
93
- const prefs = this.devicePrefs.get(deviceId) || DEFAULT_DEVICE_PREFS;
94
- if (!prefs.quietHoursEnabled) {
95
- return false;
96
- }
97
- const now = new Date();
98
- const currentMinutes = now.getHours() * 60 + now.getMinutes();
99
- const [startH, startM] = prefs.quietHoursStart.split(':').map(Number);
100
- const [endH, endM] = prefs.quietHoursEnd.split(':').map(Number);
101
- const startMinutes = startH * 60 + startM;
102
- const endMinutes = endH * 60 + endM;
103
- // Handle overnight quiet hours (e.g., 22:00 - 08:00)
104
- if (startMinutes > endMinutes) {
105
- // Quiet hours span midnight
106
- return currentMinutes >= startMinutes || currentMinutes < endMinutes;
107
- }
108
- else {
109
- // Same-day quiet hours
110
- return currentMinutes >= startMinutes && currentMinutes < endMinutes;
111
- }
112
- }
113
- isThrottled(deviceId) {
114
- const prefs = this.devicePrefs.get(deviceId) || DEFAULT_DEVICE_PREFS;
115
- if (prefs.throttleMinutes <= 0) {
116
- return false;
117
- }
118
- const lastTime = this.lastNotificationTime.get(deviceId);
119
- if (!lastTime) {
120
- return false;
121
- }
122
- const elapsed = Date.now() - lastTime;
123
- const throttleMs = prefs.throttleMinutes * 60 * 1000;
124
- return elapsed < throttleMs;
125
- }
126
- recordNotificationSent(deviceId) {
127
- this.lastNotificationTime.set(deviceId, Date.now());
63
+ getStore() {
64
+ return this.store;
128
65
  }
129
66
  registerDevice(deviceId, pushToken) {
130
- this.devices.set(deviceId, {
67
+ this.store.setDevice({
131
68
  token: pushToken,
132
69
  deviceId,
133
70
  registeredAt: Date.now(),
@@ -136,125 +73,58 @@ class PushNotificationService {
136
73
  console.log(`Push notifications: Registered device ${deviceId}`);
137
74
  }
138
75
  unregisterDevice(deviceId) {
139
- this.devices.delete(deviceId);
76
+ this.store.removeDevice(deviceId);
140
77
  console.log(`Push notifications: Unregistered device ${deviceId}`);
141
78
  }
142
79
  updateDeviceLastSeen(deviceId) {
143
- const device = this.devices.get(deviceId);
144
- if (device) {
145
- device.lastSeen = Date.now();
146
- }
80
+ this.store.updateDeviceLastSeen(deviceId);
147
81
  }
148
- scheduleWaitingNotification(preview, sessionId, sessionName) {
149
- if (this.devices.size === 0) {
82
+ /**
83
+ * Send push notification to ALL registered devices unconditionally.
84
+ * Called by escalation service when push timer fires.
85
+ */
86
+ sendToAllDevices(preview, eventType, sessionId, sessionName) {
87
+ const allDevices = this.store.getDevices();
88
+ if (allDevices.length === 0) {
89
+ console.log('Push notifications: No devices registered, skipping');
150
90
  return;
151
91
  }
152
- // Send instant notifications immediately to devices that want them
153
- // But filter out devices in quiet hours or throttled
154
- const instantDevices = Array.from(this.devices.entries())
155
- .filter(([deviceId]) => this.instantNotifyDevices.has(deviceId))
156
- .filter(([deviceId]) => !this.isInQuietHours(deviceId))
157
- .filter(([deviceId]) => !this.isThrottled(deviceId));
158
- if (instantDevices.length > 0) {
159
- console.log(`Push notifications: Sending instant notification to ${instantDevices.length} device(s)`);
160
- this.sendNotificationsToDevices(preview, instantDevices, sessionId, sessionName);
161
- }
162
- // Log skipped devices
163
- const skippedQuiet = Array.from(this.devices.entries())
164
- .filter(([deviceId]) => this.instantNotifyDevices.has(deviceId))
165
- .filter(([deviceId]) => this.isInQuietHours(deviceId));
166
- if (skippedQuiet.length > 0) {
167
- console.log(`Push notifications: Skipped ${skippedQuiet.length} device(s) in quiet hours`);
168
- }
169
- const skippedThrottled = Array.from(this.devices.entries())
170
- .filter(([deviceId]) => this.instantNotifyDevices.has(deviceId))
171
- .filter(([deviceId]) => !this.isInQuietHours(deviceId))
172
- .filter(([deviceId]) => this.isThrottled(deviceId));
173
- if (skippedThrottled.length > 0) {
174
- console.log(`Push notifications: Skipped ${skippedThrottled.length} device(s) due to throttle`);
175
- }
176
- // For non-instant devices, batch notifications
177
- const batchedDevices = Array.from(this.devices.entries())
178
- .filter(([deviceId]) => !this.instantNotifyDevices.has(deviceId));
179
- if (batchedDevices.length > 0) {
180
- // Add to batch queue
181
- this.batchedNotifications.push({
182
- preview,
183
- timestamp: Date.now(),
184
- });
185
- console.log(`Push notifications: Added to batch queue (${this.batchedNotifications.length} pending)`);
186
- // Start batch timer if not already running
187
- if (!this.batchTimer) {
188
- console.log(`Push notifications: Starting batch timer (${this.BATCH_INTERVAL_MS / 1000 / 60} minutes)`);
189
- this.batchTimer = setTimeout(() => {
190
- this.sendBatchedNotifications();
191
- }, this.BATCH_INTERVAL_MS);
192
- }
193
- }
92
+ const title = this.getTitleForEvent(eventType);
93
+ const tokens = allDevices.map((d) => d.token);
94
+ console.log(`Push notifications: Sending to ${allDevices.length} device(s) for ${eventType}`);
95
+ this.sendNotifications(preview, tokens, sessionId, sessionName, title);
194
96
  }
195
- sendBatchedNotifications() {
196
- const batchedDevices = Array.from(this.devices.entries())
197
- .filter(([deviceId]) => !this.instantNotifyDevices.has(deviceId));
198
- if (batchedDevices.length === 0 || this.batchedNotifications.length === 0) {
199
- this.batchedNotifications = [];
200
- this.batchTimer = null;
201
- return;
202
- }
203
- // Create summary message
204
- const count = this.batchedNotifications.length;
205
- const lastPreview = this.batchedNotifications[this.batchedNotifications.length - 1].preview;
206
- const summary = count === 1
207
- ? lastPreview
208
- : `${count} messages waiting - Latest: ${lastPreview.substring(0, 100)}`;
209
- console.log(`Push notifications: Sending batched notification (${count} messages) to ${batchedDevices.length} device(s)`);
210
- this.sendNotifications(summary, batchedDevices.map(([_, d]) => d.token));
211
- // Clear batch
212
- this.batchedNotifications = [];
213
- this.batchTimer = null;
214
- }
215
- cancelPendingNotification() {
216
- if (this.pendingPush) {
217
- clearTimeout(this.pendingPush);
218
- this.pendingPush = null;
219
- console.log('Push notifications: Cancelled pending notification');
220
- }
221
- // Also clear batched notifications when user responds
222
- if (this.batchedNotifications.length > 0) {
223
- this.batchedNotifications = [];
224
- console.log('Push notifications: Cleared batched notifications');
225
- }
226
- if (this.batchTimer) {
227
- clearTimeout(this.batchTimer);
228
- this.batchTimer = null;
97
+ getTitleForEvent(eventType) {
98
+ switch (eventType) {
99
+ case 'waiting_for_input':
100
+ return 'Waiting for input';
101
+ case 'error_detected':
102
+ return 'Error detected';
103
+ case 'session_completed':
104
+ return 'Session completed';
105
+ case 'worker_waiting':
106
+ return 'Worker needs input';
107
+ case 'worker_error':
108
+ return 'Worker error';
109
+ case 'work_group_ready':
110
+ return 'Work group ready to merge';
229
111
  }
230
112
  }
231
- async sendNotificationsToDevices(preview, devices, sessionId, sessionName) {
232
- // Record notification time for throttling
233
- for (const [deviceId] of devices) {
234
- this.recordNotificationSent(deviceId);
235
- }
236
- // Send using existing method
237
- await this.sendNotifications(preview, devices.map(([_, d]) => d.token), sessionId, sessionName);
238
- }
239
- async sendNotifications(preview, tokens, sessionId, sessionName) {
240
- if (tokens.length === 0) {
113
+ async sendNotifications(preview, tokens, sessionId, sessionName, title) {
114
+ if (tokens.length === 0)
241
115
  return;
242
- }
243
- // Truncate preview to reasonable length
244
116
  const truncatedPreview = preview.length > 200 ? preview.substring(0, 197) + '...' : preview;
245
- // Determine if tokens are FCM (no ExponentPushToken prefix) or Expo
246
- const fcmTokens = tokens.filter(t => !t.startsWith('ExponentPushToken'));
247
- const expoTokens = tokens.filter(t => t.startsWith('ExponentPushToken'));
248
- // Send via Firebase if we have FCM tokens and Firebase is initialized
117
+ const notificationTitle = title || 'Waiting for input';
118
+ const fcmTokens = tokens.filter((t) => !t.startsWith('ExponentPushToken'));
119
+ const expoTokens = tokens.filter((t) => t.startsWith('ExponentPushToken'));
249
120
  if (fcmTokens.length > 0 && this.firebaseInitialized) {
250
- await this.sendViaFirebase(truncatedPreview, fcmTokens, sessionId, sessionName);
121
+ await this.sendViaFirebase(truncatedPreview, fcmTokens, sessionId, sessionName, notificationTitle);
251
122
  }
252
- // Send via Expo Push if we have Expo tokens
253
123
  if (expoTokens.length > 0) {
254
- await this.sendViaExpo(truncatedPreview, expoTokens, sessionId, sessionName);
124
+ await this.sendViaExpo(truncatedPreview, expoTokens, sessionId, sessionName, notificationTitle);
255
125
  }
256
126
  }
257
- async sendViaFirebase(preview, tokens, sessionId, sessionName) {
127
+ async sendViaFirebase(preview, tokens, sessionId, sessionName, title) {
258
128
  const data = {
259
129
  type: 'waiting_for_input',
260
130
  preview,
@@ -267,7 +137,7 @@ class PushNotificationService {
267
137
  const message = {
268
138
  tokens,
269
139
  notification: {
270
- title: 'Waiting for input',
140
+ title: title || 'Waiting for input',
271
141
  body: preview,
272
142
  },
273
143
  data,
@@ -282,14 +152,14 @@ class PushNotificationService {
282
152
  try {
283
153
  const response = await admin.messaging().sendEachForMulticast(message);
284
154
  console.log(`Push notifications (FCM): Sent to ${response.successCount}/${tokens.length} devices`);
285
- // Log detailed errors for failed tokens
286
155
  response.responses.forEach((resp, idx) => {
287
156
  if (!resp.success) {
288
157
  console.error(`Push notifications (FCM): Failed for token ${tokens[idx].substring(0, 20)}...: ${resp.error?.code} - ${resp.error?.message}`);
289
158
  if (resp.error?.code === 'messaging/registration-token-not-registered') {
290
- const deviceId = Array.from(this.devices.entries()).find(([_, d]) => d.token === tokens[idx])?.[0];
291
- if (deviceId) {
292
- this.unregisterDevice(deviceId);
159
+ const allDevices = this.store.getDevices();
160
+ const device = allDevices.find((d) => d.token === tokens[idx]);
161
+ if (device) {
162
+ this.unregisterDevice(device.deviceId);
293
163
  }
294
164
  }
295
165
  }
@@ -299,7 +169,7 @@ class PushNotificationService {
299
169
  console.error('Push notifications (FCM): Error sending:', err);
300
170
  }
301
171
  }
302
- async sendViaExpo(preview, tokens, sessionId, sessionName) {
172
+ async sendViaExpo(preview, tokens, sessionId, sessionName, title) {
303
173
  const notifData = {
304
174
  type: 'waiting_for_input',
305
175
  preview,
@@ -311,7 +181,7 @@ class PushNotificationService {
311
181
  notifData.sessionName = sessionName;
312
182
  const messages = tokens.map((token) => ({
313
183
  to: token,
314
- title: 'Waiting for input',
184
+ title: title || 'Waiting for input',
315
185
  body: preview,
316
186
  data: notifData,
317
187
  sound: 'default',
@@ -323,7 +193,7 @@ class PushNotificationService {
323
193
  const response = await fetch('https://exp.host/--/api/v2/push/send', {
324
194
  method: 'POST',
325
195
  headers: {
326
- 'Accept': 'application/json',
196
+ Accept: 'application/json',
327
197
  'Accept-Encoding': 'gzip, deflate',
328
198
  'Content-Type': 'application/json',
329
199
  },
@@ -336,9 +206,10 @@ class PushNotificationService {
336
206
  successCount++;
337
207
  }
338
208
  else if (ticket.details?.error === 'DeviceNotRegistered') {
339
- const deviceId = Array.from(this.devices.entries()).find(([_, d]) => d.token === tokens[idx])?.[0];
340
- if (deviceId) {
341
- this.unregisterDevice(deviceId);
209
+ const allDevices = this.store.getDevices();
210
+ const device = allDevices.find((d) => d.token === tokens[idx]);
211
+ if (device) {
212
+ this.unregisterDevice(device.deviceId);
342
213
  }
343
214
  }
344
215
  });
@@ -348,11 +219,46 @@ class PushNotificationService {
348
219
  console.error('Push notifications (Expo): Error sending:', err);
349
220
  }
350
221
  }
222
+ /**
223
+ * Send a test push notification to all registered devices.
224
+ */
225
+ async sendTestNotification() {
226
+ const devices = this.store.getDevices();
227
+ if (devices.length === 0)
228
+ return { sent: 0, failed: 0 };
229
+ const tokens = devices.map((d) => d.token);
230
+ const preview = 'This is a test notification from Companion.';
231
+ const title = 'Test Notification';
232
+ const fcmTokens = tokens.filter((t) => !t.startsWith('ExponentPushToken'));
233
+ const expoTokens = tokens.filter((t) => t.startsWith('ExponentPushToken'));
234
+ let sent = 0;
235
+ let failed = 0;
236
+ if (fcmTokens.length > 0 && this.firebaseInitialized) {
237
+ try {
238
+ await this.sendViaFirebase(preview, fcmTokens, undefined, undefined, title);
239
+ sent += fcmTokens.length;
240
+ }
241
+ catch {
242
+ failed += fcmTokens.length;
243
+ }
244
+ }
245
+ if (expoTokens.length > 0) {
246
+ try {
247
+ await this.sendViaExpo(preview, expoTokens, undefined, undefined, title);
248
+ sent += expoTokens.length;
249
+ }
250
+ catch {
251
+ failed += expoTokens.length;
252
+ }
253
+ }
254
+ console.log(`Push notifications: Test sent to ${sent} device(s), ${failed} failed`);
255
+ return { sent, failed };
256
+ }
351
257
  isEnabled() {
352
258
  return true;
353
259
  }
354
260
  getRegisteredDeviceCount() {
355
- return this.devices.size;
261
+ return this.store.getDeviceCount();
356
262
  }
357
263
  }
358
264
  exports.PushNotificationService = PushNotificationService;
package/dist/push.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"push.js","sourceRoot":"","sources":["../src/push.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"push.js","sourceRoot":"","sources":["../src/push.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"qr-server.d.ts","sourceRoot":"","sources":["../src/qr-server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAK7B,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,OAAO,CAAC;CACd;AAyED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC,eAAe,CA4UjF"}
1
+ {"version":3,"file":"qr-server.d.ts","sourceRoot":"","sources":["../src/qr-server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAK7B,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,OAAO,CAAC;CACd;AAyED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC,eAAe,CA2UjF"}