voice-mode 2.28.1__py3-none-any.whl → 2.28.3__py3-none-any.whl

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 (71) hide show
  1. voice_mode/__version__.py +1 -1
  2. voice_mode/config.py +6 -0
  3. voice_mode/core.py +85 -9
  4. voice_mode/frontend/.next/BUILD_ID +1 -1
  5. voice_mode/frontend/.next/app-build-manifest.json +5 -5
  6. voice_mode/frontend/.next/app-path-routes-manifest.json +1 -1
  7. voice_mode/frontend/.next/build-manifest.json +3 -3
  8. voice_mode/frontend/.next/next-minimal-server.js.nft.json +1 -1
  9. voice_mode/frontend/.next/next-server.js.nft.json +1 -1
  10. voice_mode/frontend/.next/prerender-manifest.json +1 -1
  11. voice_mode/frontend/.next/required-server-files.json +1 -1
  12. voice_mode/frontend/.next/server/app/_not-found/page.js +1 -1
  13. voice_mode/frontend/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  14. voice_mode/frontend/.next/server/app/_not-found.html +1 -1
  15. voice_mode/frontend/.next/server/app/_not-found.rsc +1 -1
  16. voice_mode/frontend/.next/server/app/api/connection-details/route.js +2 -2
  17. voice_mode/frontend/.next/server/app/favicon.ico/route.js +2 -2
  18. voice_mode/frontend/.next/server/app/index.html +1 -1
  19. voice_mode/frontend/.next/server/app/index.rsc +2 -2
  20. voice_mode/frontend/.next/server/app/page.js +2 -2
  21. voice_mode/frontend/.next/server/app/page_client-reference-manifest.js +1 -1
  22. voice_mode/frontend/.next/server/app-paths-manifest.json +1 -1
  23. voice_mode/frontend/.next/server/chunks/994.js +1 -1
  24. voice_mode/frontend/.next/server/middleware-build-manifest.js +1 -1
  25. voice_mode/frontend/.next/server/next-font-manifest.js +1 -1
  26. voice_mode/frontend/.next/server/next-font-manifest.json +1 -1
  27. voice_mode/frontend/.next/server/pages/404.html +1 -1
  28. voice_mode/frontend/.next/server/pages/500.html +1 -1
  29. voice_mode/frontend/.next/server/server-reference-manifest.json +1 -1
  30. voice_mode/frontend/.next/standalone/.next/BUILD_ID +1 -1
  31. voice_mode/frontend/.next/standalone/.next/app-build-manifest.json +5 -5
  32. voice_mode/frontend/.next/standalone/.next/app-path-routes-manifest.json +1 -1
  33. voice_mode/frontend/.next/standalone/.next/build-manifest.json +3 -3
  34. voice_mode/frontend/.next/standalone/.next/prerender-manifest.json +1 -1
  35. voice_mode/frontend/.next/standalone/.next/required-server-files.json +1 -1
  36. voice_mode/frontend/.next/standalone/.next/server/app/_not-found/page.js +1 -1
  37. voice_mode/frontend/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  38. voice_mode/frontend/.next/standalone/.next/server/app/_not-found.html +1 -1
  39. voice_mode/frontend/.next/standalone/.next/server/app/_not-found.rsc +1 -1
  40. voice_mode/frontend/.next/standalone/.next/server/app/api/connection-details/route.js +2 -2
  41. voice_mode/frontend/.next/standalone/.next/server/app/favicon.ico/route.js +2 -2
  42. voice_mode/frontend/.next/standalone/.next/server/app/index.html +1 -1
  43. voice_mode/frontend/.next/standalone/.next/server/app/index.rsc +2 -2
  44. voice_mode/frontend/.next/standalone/.next/server/app/page.js +2 -2
  45. voice_mode/frontend/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  46. voice_mode/frontend/.next/standalone/.next/server/app-paths-manifest.json +1 -1
  47. voice_mode/frontend/.next/standalone/.next/server/chunks/994.js +1 -1
  48. voice_mode/frontend/.next/standalone/.next/server/middleware-build-manifest.js +1 -1
  49. voice_mode/frontend/.next/standalone/.next/server/next-font-manifest.js +1 -1
  50. voice_mode/frontend/.next/standalone/.next/server/next-font-manifest.json +1 -1
  51. voice_mode/frontend/.next/standalone/.next/server/pages/404.html +1 -1
  52. voice_mode/frontend/.next/standalone/.next/server/pages/500.html +1 -1
  53. voice_mode/frontend/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  54. voice_mode/frontend/.next/standalone/server.js +1 -1
  55. voice_mode/frontend/.next/static/chunks/app/{layout-2a1721553cbe58e4.js → layout-cae9dde082173912.js} +1 -1
  56. voice_mode/frontend/.next/static/chunks/app/{page-fe35d9da20297c85.js → page-a7414c1f080d9112.js} +1 -1
  57. voice_mode/frontend/.next/static/chunks/{main-app-c17195caa4e269d6.js → main-app-f33bfda4926858ba.js} +1 -1
  58. voice_mode/frontend/.next/trace +43 -43
  59. voice_mode/frontend/.next/types/app/api/connection-details/route.ts +1 -1
  60. voice_mode/frontend/.next/types/app/layout.ts +1 -1
  61. voice_mode/frontend/.next/types/app/page.ts +1 -1
  62. voice_mode/tools/converse.py +47 -8
  63. voice_mode/tools/service.py +10 -2
  64. voice_mode/tools/services/kokoro/install.py +9 -1
  65. voice_mode/tools/services/livekit/install.py +9 -1
  66. {voice_mode-2.28.1.dist-info → voice_mode-2.28.3.dist-info}/METADATA +1 -1
  67. {voice_mode-2.28.1.dist-info → voice_mode-2.28.3.dist-info}/RECORD +71 -71
  68. /voice_mode/frontend/.next/static/{LhJalgfazyY_l3L_v0_Kw → Va_Rl8lfQlN-DNet4j60U}/_buildManifest.js +0 -0
  69. /voice_mode/frontend/.next/static/{LhJalgfazyY_l3L_v0_Kw → Va_Rl8lfQlN-DNet4j60U}/_ssgManifest.js +0 -0
  70. {voice_mode-2.28.1.dist-info → voice_mode-2.28.3.dist-info}/WHEEL +0 -0
  71. {voice_mode-2.28.1.dist-info → voice_mode-2.28.3.dist-info}/entry_points.txt +0 -0
voice_mode/__version__.py CHANGED
@@ -1,3 +1,3 @@
1
1
  # This file is automatically updated by 'make release'
2
2
  # Do not edit manually
3
- __version__ = "2.28.1"
3
+ __version__ = "2.28.3"
voice_mode/config.py CHANGED
@@ -291,6 +291,12 @@ INITIAL_SILENCE_GRACE_PERIOD = float(os.getenv("VOICEMODE_INITIAL_SILENCE_GRACE_
291
291
  # Default listen duration for converse tool
292
292
  DEFAULT_LISTEN_DURATION = float(os.getenv("VOICEMODE_DEFAULT_LISTEN_DURATION", "120.0")) # Default 120s listening time
293
293
 
294
+ # Audio feedback pip/chime configuration
295
+ # Leading silence before pips to allow Bluetooth devices to wake up
296
+ PIP_LEADING_SILENCE = float(os.getenv("VOICEMODE_PIP_LEADING_SILENCE", "0.1")) # Default 0.1s - minimal delay for Bluetooth
297
+ # Trailing silence after pips to prevent cutoff
298
+ PIP_TRAILING_SILENCE = float(os.getenv("VOICEMODE_PIP_TRAILING_SILENCE", "0.2")) # Default 0.2s - reduced for responsiveness
299
+
294
300
  # Audio format configuration
295
301
  AUDIO_FORMAT = os.getenv("VOICEMODE_AUDIO_FORMAT", "pcm").lower()
296
302
  TTS_AUDIO_FORMAT = os.getenv("VOICEMODE_TTS_AUDIO_FORMAT", "pcm").lower() # Default to PCM for optimal streaming
voice_mode/core.py CHANGED
@@ -395,8 +395,9 @@ async def text_to_speech(
395
395
  if event_logger:
396
396
  event_logger.log_event(event_logger.TTS_PLAYBACK_START)
397
397
 
398
- # Add 100ms of silence at the beginning to prevent clipping
399
- silence_duration = 0.1 # seconds
398
+ # Add configurable silence at the beginning to prevent clipping
399
+ from .config import PIP_LEADING_SILENCE
400
+ silence_duration = PIP_LEADING_SILENCE # seconds
400
401
  silence_samples = int(audio.frame_rate * silence_duration)
401
402
  # Match the shape of the samples array exactly
402
403
  if samples.ndim == 1:
@@ -507,13 +508,21 @@ async def text_to_speech(
507
508
  return False, metrics
508
509
 
509
510
 
510
- def generate_chime(frequencies: list, duration: float = 0.1, sample_rate: int = SAMPLE_RATE) -> np.ndarray:
511
+ def generate_chime(
512
+ frequencies: list,
513
+ duration: float = 0.1,
514
+ sample_rate: int = SAMPLE_RATE,
515
+ leading_silence: Optional[float] = None,
516
+ trailing_silence: Optional[float] = None
517
+ ) -> np.ndarray:
511
518
  """Generate a chime sound with given frequencies.
512
519
 
513
520
  Args:
514
521
  frequencies: List of frequencies to play in sequence
515
522
  duration: Duration of each tone in seconds
516
523
  sample_rate: Sample rate for audio generation
524
+ leading_silence: Optional override for leading silence duration (seconds)
525
+ trailing_silence: Optional override for trailing silence duration (seconds)
517
526
 
518
527
  Returns:
519
528
  Numpy array of audio samples
@@ -521,12 +530,30 @@ def generate_chime(frequencies: list, duration: float = 0.1, sample_rate: int =
521
530
  samples_per_tone = int(sample_rate * duration)
522
531
  fade_samples = int(sample_rate * 0.01) # 10ms fade
523
532
 
533
+ # Determine amplitude based on output device
534
+ amplitude = 0.0375 # Default (very quiet)
535
+ try:
536
+ import sounddevice as sd
537
+ default_output = sd.default.device[1]
538
+ if default_output is not None:
539
+ devices = sd.query_devices()
540
+ device_name = devices[default_output]['name'].lower()
541
+ # Check for Bluetooth devices (AirPods, Bluetooth headphones, etc)
542
+ if 'airpod' in device_name or 'bluetooth' in device_name or 'bt' in device_name:
543
+ amplitude = 0.15 # Higher amplitude for Bluetooth devices
544
+ logger.debug(f"Bluetooth device detected ({devices[default_output]['name']}), using amplitude {amplitude}")
545
+ else:
546
+ amplitude = 0.075 # Moderate amplitude for built-in speakers
547
+ logger.debug(f"Built-in speaker detected ({devices[default_output]['name']}), using amplitude {amplitude}")
548
+ except Exception as e:
549
+ logger.debug(f"Could not detect output device type: {e}, using default amplitude {amplitude}")
550
+
524
551
  all_samples = []
525
552
 
526
553
  for freq in frequencies:
527
554
  # Generate sine wave
528
555
  t = np.linspace(0, duration, samples_per_tone, False)
529
- tone = 0.0375 * np.sin(2 * np.pi * freq * t) # 0.0375 amplitude for extremely quiet volume
556
+ tone = amplitude * np.sin(2 * np.pi * freq * t)
530
557
 
531
558
  # Apply fade in/out to prevent clicks
532
559
  fade_in = np.linspace(0, 1, fade_samples)
@@ -540,21 +567,55 @@ def generate_chime(frequencies: list, duration: float = 0.1, sample_rate: int =
540
567
  # Concatenate all tones
541
568
  chime = np.concatenate(all_samples)
542
569
 
570
+ # Import config values if not overridden
571
+ from .config import PIP_LEADING_SILENCE, PIP_TRAILING_SILENCE
572
+
573
+ # Use parameter overrides or fall back to config
574
+ actual_leading_silence = leading_silence if leading_silence is not None else PIP_LEADING_SILENCE
575
+ actual_trailing_silence = trailing_silence if trailing_silence is not None else PIP_TRAILING_SILENCE
576
+
577
+ # Add leading silence for Bluetooth wake-up time
578
+ # This prevents the beginning of the chime from being cut off
579
+ silence_samples = int(sample_rate * actual_leading_silence)
580
+ silence = np.zeros(silence_samples)
581
+
582
+ # Add trailing silence to prevent end cutoff
583
+ trailing_silence_samples = int(sample_rate * actual_trailing_silence)
584
+ trailing_silence = np.zeros(trailing_silence_samples)
585
+
586
+ # Combine: leading silence + chime + trailing silence
587
+ chime_with_buffer = np.concatenate([silence, chime, trailing_silence])
588
+
543
589
  # Convert to 16-bit integer
544
- chime_int16 = (chime * 32767).astype(np.int16)
590
+ chime_int16 = (chime_with_buffer * 32767).astype(np.int16)
545
591
 
546
592
  return chime_int16
547
593
 
548
594
 
549
- async def play_chime_start(sample_rate: int = SAMPLE_RATE) -> bool:
595
+ async def play_chime_start(
596
+ sample_rate: int = SAMPLE_RATE,
597
+ leading_silence: Optional[float] = None,
598
+ trailing_silence: Optional[float] = None
599
+ ) -> bool:
550
600
  """Play the recording start chime (ascending tones).
551
601
 
602
+ Args:
603
+ sample_rate: Sample rate for audio
604
+ leading_silence: Optional override for leading silence duration (seconds)
605
+ trailing_silence: Optional override for trailing silence duration (seconds)
606
+
552
607
  Returns:
553
608
  True if chime played successfully, False otherwise
554
609
  """
555
610
  try:
556
611
  import sounddevice as sd
557
- chime = generate_chime([800, 1000], duration=0.1, sample_rate=sample_rate)
612
+ chime = generate_chime(
613
+ [800, 1000],
614
+ duration=0.1,
615
+ sample_rate=sample_rate,
616
+ leading_silence=leading_silence,
617
+ trailing_silence=trailing_silence
618
+ )
558
619
  sd.play(chime, sample_rate)
559
620
  sd.wait()
560
621
  return True
@@ -563,15 +624,30 @@ async def play_chime_start(sample_rate: int = SAMPLE_RATE) -> bool:
563
624
  return False
564
625
 
565
626
 
566
- async def play_chime_end(sample_rate: int = SAMPLE_RATE) -> bool:
627
+ async def play_chime_end(
628
+ sample_rate: int = SAMPLE_RATE,
629
+ leading_silence: Optional[float] = None,
630
+ trailing_silence: Optional[float] = None
631
+ ) -> bool:
567
632
  """Play the recording end chime (descending tones).
568
633
 
634
+ Args:
635
+ sample_rate: Sample rate for audio
636
+ leading_silence: Optional override for leading silence duration (seconds)
637
+ trailing_silence: Optional override for trailing silence duration (seconds)
638
+
569
639
  Returns:
570
640
  True if chime played successfully, False otherwise
571
641
  """
572
642
  try:
573
643
  import sounddevice as sd
574
- chime = generate_chime([1000, 800], duration=0.1, sample_rate=sample_rate)
644
+ chime = generate_chime(
645
+ [1000, 800],
646
+ duration=0.1,
647
+ sample_rate=sample_rate,
648
+ leading_silence=leading_silence,
649
+ trailing_silence=trailing_silence
650
+ )
575
651
  sd.play(chime, sample_rate)
576
652
  sd.wait()
577
653
  return True
@@ -1 +1 @@
1
- LhJalgfazyY_l3L_v0_Kw
1
+ Va_Rl8lfQlN-DNet4j60U
@@ -4,25 +4,25 @@
4
4
  "static/chunks/webpack-0ea9b80f19935b70.js",
5
5
  "static/chunks/fd9d1056-af324d327b243cf1.js",
6
6
  "static/chunks/117-40bc79a2b97edb21.js",
7
- "static/chunks/main-app-c17195caa4e269d6.js",
7
+ "static/chunks/main-app-f33bfda4926858ba.js",
8
8
  "static/chunks/app/_not-found/page-5011050e402ab9c8.js"
9
9
  ],
10
10
  "/layout": [
11
11
  "static/chunks/webpack-0ea9b80f19935b70.js",
12
12
  "static/chunks/fd9d1056-af324d327b243cf1.js",
13
13
  "static/chunks/117-40bc79a2b97edb21.js",
14
- "static/chunks/main-app-c17195caa4e269d6.js",
14
+ "static/chunks/main-app-f33bfda4926858ba.js",
15
15
  "static/css/a2f49a47752b5010.css",
16
- "static/chunks/app/layout-2a1721553cbe58e4.js"
16
+ "static/chunks/app/layout-cae9dde082173912.js"
17
17
  ],
18
18
  "/page": [
19
19
  "static/chunks/webpack-0ea9b80f19935b70.js",
20
20
  "static/chunks/fd9d1056-af324d327b243cf1.js",
21
21
  "static/chunks/117-40bc79a2b97edb21.js",
22
- "static/chunks/main-app-c17195caa4e269d6.js",
22
+ "static/chunks/main-app-f33bfda4926858ba.js",
23
23
  "static/chunks/144d3bae-2d5f122b82426d88.js",
24
24
  "static/chunks/471-bd4b96a33883dfa2.js",
25
- "static/chunks/app/page-fe35d9da20297c85.js"
25
+ "static/chunks/app/page-a7414c1f080d9112.js"
26
26
  ]
27
27
  }
28
28
  }
@@ -1 +1 @@
1
- {"/_not-found/page":"/_not-found","/page":"/","/favicon.ico/route":"/favicon.ico","/api/connection-details/route":"/api/connection-details"}
1
+ {"/_not-found/page":"/_not-found","/favicon.ico/route":"/favicon.ico","/page":"/","/api/connection-details/route":"/api/connection-details"}
@@ -5,14 +5,14 @@
5
5
  "devFiles": [],
6
6
  "ampDevFiles": [],
7
7
  "lowPriorityFiles": [
8
- "static/LhJalgfazyY_l3L_v0_Kw/_buildManifest.js",
9
- "static/LhJalgfazyY_l3L_v0_Kw/_ssgManifest.js"
8
+ "static/Va_Rl8lfQlN-DNet4j60U/_buildManifest.js",
9
+ "static/Va_Rl8lfQlN-DNet4j60U/_ssgManifest.js"
10
10
  ],
11
11
  "rootMainFiles": [
12
12
  "static/chunks/webpack-0ea9b80f19935b70.js",
13
13
  "static/chunks/fd9d1056-af324d327b243cf1.js",
14
14
  "static/chunks/117-40bc79a2b97edb21.js",
15
- "static/chunks/main-app-c17195caa4e269d6.js"
15
+ "static/chunks/main-app-f33bfda4926858ba.js"
16
16
  ],
17
17
  "pages": {
18
18
  "/_app": [
@@ -1 +1 @@
1
- {"version":1,"files":["../node_modules/styled-jsx/index.js","../node_modules/styled-jsx/package.json","../node_modules/styled-jsx/dist/index/index.js","../node_modules/react/package.json","../node_modules/react/index.js","../node_modules/client-only/package.json","../node_modules/react/cjs/react.production.min.js","../node_modules/client-only/index.js","../node_modules/styled-jsx/style.js","../node_modules/next/dist/compiled/next-server/server.runtime.prod.js","../node_modules/next/package.json","../node_modules/next/dist/lib/constants.js","../node_modules/next/dist/server/body-streams.js","../node_modules/next/dist/lib/picocolors.js","../node_modules/next/dist/shared/lib/constants.js","../node_modules/next/dist/server/web/utils.js","../node_modules/next/dist/client/components/app-router-headers.js","../node_modules/next/dist/server/lib/trace/tracer.js","../node_modules/next/dist/server/lib/trace/constants.js","../node_modules/next/dist/client/components/static-generation-async-storage.external.js","../node_modules/next/dist/shared/lib/error-source.js","../node_modules/next/dist/shared/lib/modern-browserslist-target.js","../node_modules/next/dist/compiled/debug/package.json","../node_modules/next/dist/client/components/static-generation-async-storage-instance.js","../node_modules/next/dist/shared/lib/runtime-config.external.js","../node_modules/next/dist/compiled/debug/index.js","../node_modules/next/dist/compiled/ws/package.json","../node_modules/next/dist/compiled/node-html-parser/package.json","../node_modules/next/dist/compiled/lru-cache/package.json","../node_modules/@swc/helpers/_/_interop_require_default/package.json","../node_modules/next/dist/compiled/ws/index.js","../node_modules/next/dist/compiled/node-html-parser/index.js","../node_modules/next/dist/compiled/lru-cache/index.js","../node_modules/next/dist/client/components/async-local-storage.js","../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../node_modules/@swc/helpers/package.json","../node_modules/next/dist/client/components/react-dev-overlay/internal/helpers/parseStack.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/helpers/nodeStackFrames.js","../node_modules/next/dist/compiled/jsonwebtoken/package.json","../node_modules/next/dist/client/components/react-dev-overlay/server/middleware.js","../node_modules/@swc/helpers/cjs/_interop_require_default.cjs","../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../node_modules/next/dist/compiled/jsonwebtoken/index.js","../node_modules/next/dist/compiled/browserslist/package.json","../node_modules/next/dist/compiled/browserslist/index.js","../node_modules/next/dist/client/components/react-dev-overlay/server/shared.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/helpers/getRawSourceMap.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/helpers/launchEditor.js","../node_modules/next/dist/compiled/babel/code-frame.js","../node_modules/next/dist/compiled/json5/package.json","../node_modules/next/dist/compiled/semver/package.json","../node_modules/next/dist/compiled/babel/package.json","../node_modules/next/dist/lib/semver-noop.js","../node_modules/next/dist/compiled/json5/index.js","../node_modules/next/dist/compiled/semver/index.js","../node_modules/next/dist/compiled/stacktrace-parser/package.json","../node_modules/next/dist/compiled/source-map08/package.json","../node_modules/caniuse-lite/dist/unpacker/agents.js","../node_modules/caniuse-lite/dist/unpacker/feature.js","../node_modules/caniuse-lite/dist/unpacker/region.js","../node_modules/next/dist/compiled/babel/bundle.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/helpers/getSourceMapUrl.js","../node_modules/next/dist/compiled/stacktrace-parser/stack-trace-parser.cjs.js","../node_modules/next/dist/compiled/source-map08/source-map.js","../node_modules/caniuse-lite/package.json","../node_modules/next/dist/compiled/babel/core.js","../node_modules/caniuse-lite/data/agents.js","../node_modules/caniuse-lite/dist/unpacker/browsers.js","../node_modules/caniuse-lite/dist/unpacker/browserVersions.js","../node_modules/caniuse-lite/dist/lib/statuses.js","../node_modules/caniuse-lite/dist/lib/supported.js","../node_modules/next/dist/compiled/shell-quote/package.json","../node_modules/next/dist/compiled/data-uri-to-buffer/package.json","../node_modules/next/dist/compiled/shell-quote/index.js","../node_modules/next/dist/compiled/data-uri-to-buffer/index.js","../node_modules/caniuse-lite/data/browsers.js","../node_modules/caniuse-lite/data/browserVersions.js","../node_modules/next/dist/compiled/babel-packages/package.json","../node_modules/next/dist/compiled/babel-packages/packages-bundle.js","../node_modules/next/dist/compiled/babel/parser.js","../node_modules/next/dist/compiled/babel/traverse.js","../node_modules/next/dist/compiled/babel/types.js","../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/amp-context.js","../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/app-router-context.js","../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/entrypoints.js","../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/head-manager-context.js","../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/hooks-client-context.js","../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/html-context.js","../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/image-config-context.js","../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/loadable-context.js","../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/loadable.js","../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/router-context.js","../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/server-inserted-html.js","../node_modules/next/dist/server/future/route-modules/app-page/module.compiled.js","../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/amp-context.js","../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/app-router-context.js","../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/entrypoints.js","../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/head-manager-context.js","../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/hooks-client-context.js","../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/html-context.js","../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/image-config-context.js","../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/loadable-context.js","../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/loadable.js","../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/router-context.js","../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/server-inserted-html.js","../node_modules/next/dist/server/future/route-modules/pages/module.compiled.js"]}
1
+ {"version":1,"files":["../node_modules/styled-jsx/index.js","../node_modules/styled-jsx/package.json","../node_modules/styled-jsx/dist/index/index.js","../node_modules/react/package.json","../node_modules/react/index.js","../node_modules/client-only/package.json","../node_modules/react/cjs/react.production.min.js","../node_modules/client-only/index.js","../node_modules/styled-jsx/style.js","../node_modules/next/dist/compiled/next-server/server.runtime.prod.js","../node_modules/next/package.json","../node_modules/next/dist/lib/constants.js","../node_modules/next/dist/server/body-streams.js","../node_modules/next/dist/lib/picocolors.js","../node_modules/next/dist/shared/lib/constants.js","../node_modules/next/dist/server/web/utils.js","../node_modules/next/dist/client/components/app-router-headers.js","../node_modules/next/dist/server/lib/trace/tracer.js","../node_modules/next/dist/server/lib/trace/constants.js","../node_modules/next/dist/client/components/static-generation-async-storage.external.js","../node_modules/next/dist/shared/lib/error-source.js","../node_modules/next/dist/shared/lib/modern-browserslist-target.js","../node_modules/next/dist/compiled/debug/package.json","../node_modules/next/dist/client/components/static-generation-async-storage-instance.js","../node_modules/next/dist/shared/lib/runtime-config.external.js","../node_modules/next/dist/compiled/debug/index.js","../node_modules/next/dist/compiled/ws/package.json","../node_modules/next/dist/compiled/node-html-parser/package.json","../node_modules/next/dist/compiled/lru-cache/package.json","../node_modules/@swc/helpers/_/_interop_require_default/package.json","../node_modules/next/dist/compiled/ws/index.js","../node_modules/next/dist/compiled/node-html-parser/index.js","../node_modules/next/dist/compiled/lru-cache/index.js","../node_modules/next/dist/client/components/async-local-storage.js","../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../node_modules/@swc/helpers/package.json","../node_modules/next/dist/client/components/react-dev-overlay/internal/helpers/parseStack.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/helpers/nodeStackFrames.js","../node_modules/next/dist/compiled/jsonwebtoken/package.json","../node_modules/next/dist/client/components/react-dev-overlay/server/middleware.js","../node_modules/@swc/helpers/cjs/_interop_require_default.cjs","../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../node_modules/next/dist/compiled/jsonwebtoken/index.js","../node_modules/next/dist/compiled/browserslist/package.json","../node_modules/next/dist/compiled/browserslist/index.js","../node_modules/next/dist/client/components/react-dev-overlay/server/shared.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/helpers/getRawSourceMap.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/helpers/launchEditor.js","../node_modules/next/dist/compiled/babel/code-frame.js","../node_modules/next/dist/compiled/json5/package.json","../node_modules/next/dist/compiled/semver/package.json","../node_modules/next/dist/compiled/babel/package.json","../node_modules/next/dist/lib/semver-noop.js","../node_modules/next/dist/compiled/json5/index.js","../node_modules/next/dist/compiled/semver/index.js","../node_modules/next/dist/compiled/stacktrace-parser/package.json","../node_modules/next/dist/compiled/source-map08/package.json","../node_modules/caniuse-lite/dist/unpacker/agents.js","../node_modules/caniuse-lite/dist/unpacker/feature.js","../node_modules/caniuse-lite/dist/unpacker/region.js","../node_modules/next/dist/compiled/babel/bundle.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/helpers/getSourceMapUrl.js","../node_modules/next/dist/compiled/stacktrace-parser/stack-trace-parser.cjs.js","../node_modules/next/dist/compiled/source-map08/source-map.js","../node_modules/caniuse-lite/package.json","../node_modules/next/dist/compiled/babel/core.js","../node_modules/caniuse-lite/data/agents.js","../node_modules/caniuse-lite/dist/unpacker/browsers.js","../node_modules/caniuse-lite/dist/unpacker/browserVersions.js","../node_modules/caniuse-lite/dist/lib/supported.js","../node_modules/caniuse-lite/dist/lib/statuses.js","../node_modules/next/dist/compiled/data-uri-to-buffer/package.json","../node_modules/next/dist/compiled/shell-quote/package.json","../node_modules/next/dist/compiled/data-uri-to-buffer/index.js","../node_modules/next/dist/compiled/shell-quote/index.js","../node_modules/caniuse-lite/data/browsers.js","../node_modules/caniuse-lite/data/browserVersions.js","../node_modules/next/dist/compiled/babel-packages/package.json","../node_modules/next/dist/compiled/babel-packages/packages-bundle.js","../node_modules/next/dist/compiled/babel/traverse.js","../node_modules/next/dist/compiled/babel/types.js","../node_modules/next/dist/compiled/babel/parser.js","../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/amp-context.js","../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/app-router-context.js","../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/entrypoints.js","../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/head-manager-context.js","../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/hooks-client-context.js","../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/html-context.js","../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/image-config-context.js","../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/loadable-context.js","../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/loadable.js","../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/router-context.js","../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/server-inserted-html.js","../node_modules/next/dist/server/future/route-modules/app-page/module.compiled.js","../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/amp-context.js","../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/app-router-context.js","../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/entrypoints.js","../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/head-manager-context.js","../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/hooks-client-context.js","../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/html-context.js","../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/image-config-context.js","../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/loadable-context.js","../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/loadable.js","../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/router-context.js","../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/server-inserted-html.js","../node_modules/next/dist/server/future/route-modules/pages/module.compiled.js"]}