voice-mode 4.3.2__py3-none-any.whl → 4.4.0__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 (70) hide show
  1. voice_mode/__version__.py +1 -1
  2. voice_mode/cli.py +3 -2
  3. voice_mode/cli_commands/claude.py +6 -199
  4. voice_mode/cli_commands/hook.py +13 -16
  5. voice_mode/frontend/.next/BUILD_ID +1 -1
  6. voice_mode/frontend/.next/app-build-manifest.json +5 -5
  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 +3 -3
  21. voice_mode/frontend/.next/server/app/page_client-reference-manifest.js +1 -1
  22. voice_mode/frontend/.next/server/chunks/994.js +2 -2
  23. voice_mode/frontend/.next/server/middleware-build-manifest.js +1 -1
  24. voice_mode/frontend/.next/server/next-font-manifest.js +1 -1
  25. voice_mode/frontend/.next/server/next-font-manifest.json +1 -1
  26. voice_mode/frontend/.next/server/pages/404.html +1 -1
  27. voice_mode/frontend/.next/server/pages/500.html +1 -1
  28. voice_mode/frontend/.next/server/server-reference-manifest.json +1 -1
  29. voice_mode/frontend/.next/standalone/.next/BUILD_ID +1 -1
  30. voice_mode/frontend/.next/standalone/.next/app-build-manifest.json +5 -5
  31. voice_mode/frontend/.next/standalone/.next/build-manifest.json +3 -3
  32. voice_mode/frontend/.next/standalone/.next/prerender-manifest.json +1 -1
  33. voice_mode/frontend/.next/standalone/.next/required-server-files.json +1 -1
  34. voice_mode/frontend/.next/standalone/.next/server/app/_not-found/page.js +1 -1
  35. voice_mode/frontend/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  36. voice_mode/frontend/.next/standalone/.next/server/app/_not-found.html +1 -1
  37. voice_mode/frontend/.next/standalone/.next/server/app/_not-found.rsc +1 -1
  38. voice_mode/frontend/.next/standalone/.next/server/app/api/connection-details/route.js +2 -2
  39. voice_mode/frontend/.next/standalone/.next/server/app/favicon.ico/route.js +2 -2
  40. voice_mode/frontend/.next/standalone/.next/server/app/index.html +1 -1
  41. voice_mode/frontend/.next/standalone/.next/server/app/index.rsc +2 -2
  42. voice_mode/frontend/.next/standalone/.next/server/app/page.js +3 -3
  43. voice_mode/frontend/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  44. voice_mode/frontend/.next/standalone/.next/server/chunks/994.js +2 -2
  45. voice_mode/frontend/.next/standalone/.next/server/middleware-build-manifest.js +1 -1
  46. voice_mode/frontend/.next/standalone/.next/server/next-font-manifest.js +1 -1
  47. voice_mode/frontend/.next/standalone/.next/server/next-font-manifest.json +1 -1
  48. voice_mode/frontend/.next/standalone/.next/server/pages/404.html +1 -1
  49. voice_mode/frontend/.next/standalone/.next/server/pages/500.html +1 -1
  50. voice_mode/frontend/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  51. voice_mode/frontend/.next/standalone/server.js +1 -1
  52. voice_mode/frontend/.next/static/chunks/app/{layout-d89915a94cb8f604.js → layout-917e8410913fe899.js} +1 -1
  53. voice_mode/frontend/.next/static/chunks/app/{page-728ce55710c9bd80.js → page-ae0d14863ed895ea.js} +1 -1
  54. voice_mode/frontend/.next/static/chunks/{main-app-991c8c54319817e0.js → main-app-836e76fc70b52220.js} +1 -1
  55. voice_mode/frontend/.next/trace +43 -43
  56. voice_mode/frontend/.next/types/app/api/connection-details/route.ts +1 -1
  57. voice_mode/frontend/.next/types/app/layout.ts +1 -1
  58. voice_mode/frontend/.next/types/app/page.ts +1 -1
  59. voice_mode/frontend/package-lock.json +9 -9
  60. voice_mode/statistics_tracking.py +42 -0
  61. voice_mode/tools/__init__.py +41 -15
  62. voice_mode/tools/converse.py +1 -1
  63. voice_mode/tools/statistics.py +0 -33
  64. {voice_mode-4.3.2.dist-info → voice_mode-4.4.0.dist-info}/METADATA +32 -40
  65. {voice_mode-4.3.2.dist-info → voice_mode-4.4.0.dist-info}/RECORD +69 -69
  66. voice_mode/tools/claude_thinking.py +0 -285
  67. /voice_mode/frontend/.next/static/{-9MkXl-xGB2BLmGEAZVmg → WhZriRkBKVNPSmCnOFRav}/_buildManifest.js +0 -0
  68. /voice_mode/frontend/.next/static/{-9MkXl-xGB2BLmGEAZVmg → WhZriRkBKVNPSmCnOFRav}/_ssgManifest.js +0 -0
  69. {voice_mode-4.3.2.dist-info → voice_mode-4.4.0.dist-info}/WHEEL +0 -0
  70. {voice_mode-4.3.2.dist-info → voice_mode-4.4.0.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__ = "4.3.2"
3
+ __version__ = "4.4.0"
voice_mode/cli.py CHANGED
@@ -1394,8 +1394,9 @@ transcribe_audio_cmd = transcribe_cmd.transcribe.commands['audio']
1394
1394
  transcribe_audio_cmd.name = 'transcribe'
1395
1395
  audio.add_command(transcribe_audio_cmd)
1396
1396
 
1397
- # Add hook command under claude group
1398
- claude.claude_group.add_command(hook_cmd.hook)
1397
+ # Add hooks command under claude group
1398
+ from voice_mode.cli_commands.hook import hooks
1399
+ claude.claude_group.add_command(hooks)
1399
1400
 
1400
1401
  # Add pronounce under config group
1401
1402
  config.add_command(pronounce_commands.pronounce_group)
@@ -1,208 +1,15 @@
1
- """CLI commands for Claude Code message extraction."""
1
+ """CLI commands for Claude-related functionality."""
2
2
 
3
3
  import click
4
- import json
5
- import os
6
- import logging
7
- from pathlib import Path
8
- from typing import Optional, List
9
- from datetime import datetime
10
-
11
- from voice_mode.tools.claude_thinking import (
12
- find_claude_log_file,
13
- extract_messages_from_log,
14
- extract_thinking_from_messages
15
- )
16
-
17
- logger = logging.getLogger("voice-mode")
18
4
 
19
5
 
20
6
  @click.group(name='claude')
21
7
  def claude_group():
22
- """Extract messages from Claude Code conversation logs."""
8
+ """Claude-related commands."""
23
9
  pass
24
10
 
25
11
 
26
- @claude_group.command(name='messages')
27
- @click.option('--last-n', '-n', default=2, type=int,
28
- help='Number of recent messages to extract (default: 2)')
29
- @click.option('--type', '-t', 'message_types', multiple=True,
30
- type=click.Choice(['user', 'assistant']),
31
- help='Filter by message type (can specify multiple)')
32
- @click.option('--format', '-f',
33
- type=click.Choice(['full', 'text', 'thinking']),
34
- default='full',
35
- help='Output format: full (complete), text (text only), thinking (thinking only)')
36
- @click.option('--working-dir', '-d', type=click.Path(exists=True),
37
- help='Working directory to find logs for (defaults to CWD)')
38
- @click.option('--output', '-o', type=click.Path(),
39
- help='Save output to file')
40
- @click.option('--json', 'as_json', is_flag=True,
41
- help='Output as JSON (overrides format)')
42
- def messages_command(last_n: int, message_types: tuple, format: str,
43
- working_dir: Optional[str], output: Optional[str],
44
- as_json: bool):
45
- """
46
- Extract recent messages from Claude Code logs.
47
-
48
- Examples:
49
-
50
- voicemode claude messages
51
-
52
- voicemode claude messages -n 5 --format thinking
53
-
54
- voicemode claude messages --type assistant --format text
55
-
56
- voicemode claude messages --json -o messages.json
57
- """
58
- # Find log file
59
- log_file = find_claude_log_file(working_dir)
60
- if not log_file:
61
- click.echo(f"Error: Could not find Claude Code logs for directory: {working_dir or os.getcwd()}", err=True)
62
- return
63
-
64
- # Extract messages
65
- message_type_list = list(message_types) if message_types else None
66
- messages = extract_messages_from_log(log_file, last_n, message_type_list)
67
-
68
- if not messages:
69
- click.echo("No messages found in recent logs", err=True)
70
- return
71
-
72
- # Format output
73
- if as_json:
74
- content = json.dumps(messages, indent=2)
75
- elif format == 'thinking':
76
- thinking_texts = extract_thinking_from_messages(messages)
77
- if not thinking_texts:
78
- click.echo("No thinking content found", err=True)
79
- return
80
- content = "\n\n=== Next Thinking ===\n\n".join(thinking_texts)
81
- elif format == 'text':
82
- result = []
83
- for msg in messages:
84
- content_text = []
85
- content_items = msg.get('content', [])
86
- logger.debug(f"Message has {len(content_items)} content items")
87
- for item in content_items:
88
- if isinstance(item, dict):
89
- item_type = item.get('type')
90
- logger.debug(f"Content item type: {item_type}")
91
- if item_type == 'text':
92
- text = item.get('text', '')
93
- if text:
94
- content_text.append(text)
95
- elif item_type == 'thinking':
96
- text = item.get('text', '')
97
- if text:
98
- content_text.append(f"[Thinking: {text}]")
99
- if content_text:
100
- result.append(f"{msg['type'].title()}: {' '.join(content_text)}")
101
- content = "\n\n".join(result)
102
- else: # full format
103
- # Format as human-readable
104
- result = []
105
- for i, msg in enumerate(messages, 1):
106
- result.append(f"=== Message {i} ===")
107
- result.append(f"Type: {msg['type']}")
108
- result.append(f"Timestamp: {msg.get('timestamp', 'Unknown')}")
109
- if msg.get('model'):
110
- result.append(f"Model: {msg['model']}")
111
-
112
- # Format content
113
- content_items = msg.get('content', [])
114
- if content_items:
115
- result.append("Content:")
116
- for item in content_items:
117
- if isinstance(item, dict):
118
- item_type = item.get('type', 'unknown')
119
- if item_type == 'text':
120
- result.append(f" [Text]: {item.get('text', '')}")
121
- elif item_type == 'thinking':
122
- result.append(f" [Thinking]: {item.get('text', '')}")
123
- elif item_type == 'tool_use':
124
- result.append(f" [Tool Use]: {item.get('name', '')}")
125
- elif item_type == 'tool_result':
126
- result.append(f" [Tool Result]: {item.get('content', '')[:100]}...")
127
- result.append("")
128
- content = "\n".join(result).strip()
129
-
130
- # Output
131
- if output:
132
- Path(output).write_text(content)
133
- click.echo(f"Output saved to {output}")
134
- else:
135
- # Debug: ensure content is printed
136
- logger.debug(f"About to output {len(content)} characters")
137
- click.echo(content)
138
- logger.debug("Output complete")
139
-
140
-
141
- @claude_group.command(name='thinking')
142
- @click.option('--last-n', '-n', default=1, type=int,
143
- help='Number of messages to search for thinking (default: 1)')
144
- @click.option('--working-dir', '-d', type=click.Path(exists=True),
145
- help='Working directory to find logs for (defaults to CWD)')
146
- def thinking_command(last_n: int, working_dir: Optional[str]):
147
- """
148
- Extract only thinking content from Claude Code logs.
149
-
150
- Convenience command equivalent to:
151
- voicemode claude messages --format thinking --type assistant
152
-
153
- Examples:
154
-
155
- voicemode claude thinking
156
-
157
- voicemode claude thinking -n 3
158
- """
159
- # Delegate to messages command with thinking format
160
- ctx = click.get_current_context()
161
- ctx.invoke(messages_command,
162
- last_n=last_n,
163
- message_types=('assistant',),
164
- format='thinking',
165
- working_dir=working_dir,
166
- output=None,
167
- as_json=False)
168
-
169
-
170
- @claude_group.command(name='check')
171
- def check_command():
172
- """
173
- Check if Claude Code context is available.
174
-
175
- Shows information about the Claude Code environment including:
176
- - Whether Claude Code logs are accessible
177
- - Current working directory
178
- - Log file location if found
179
- - Last update time
180
-
181
- Example:
182
- voicemode claude check
183
- """
184
- working_dir = os.getcwd()
185
- log_file = find_claude_log_file(working_dir)
186
-
187
- click.echo(f"Working Directory: {working_dir}")
188
- click.echo(f"Claude Logs Found: {'Yes' if log_file else 'No'}")
189
-
190
- if log_file:
191
- click.echo(f"Log File: {log_file}")
192
- click.echo(f"Log Size: {log_file.stat().st_size:,} bytes")
193
-
194
- mtime = datetime.fromtimestamp(log_file.stat().st_mtime)
195
- now = datetime.now()
196
- age = now - mtime
197
-
198
- if age.total_seconds() < 60:
199
- click.echo(f"Last Updated: {int(age.total_seconds())} seconds ago")
200
- elif age.total_seconds() < 3600:
201
- click.echo(f"Last Updated: {int(age.total_seconds() / 60)} minutes ago")
202
- else:
203
- click.echo(f"Last Updated: {int(age.total_seconds() / 3600)} hours ago")
204
- else:
205
- project_dir = working_dir.replace('/', '-')
206
- expected_path = Path.home() / '.claude' / 'projects' / project_dir
207
- click.echo(f"Expected Log Location: {expected_path}")
208
- click.echo("Note: Logs are only created when using Claude Code (claude.ai/code)")
12
+ @click.group(name='hooks')
13
+ def hooks_group():
14
+ """Manage Voice Mode hooks and event handlers for Claude Code."""
15
+ pass
@@ -12,18 +12,18 @@ from typing import Optional
12
12
 
13
13
  @click.group()
14
14
  @click.help_option('-h', '--help', help='Show this message and exit')
15
- def hook():
15
+ def hooks():
16
16
  """Manage Voice Mode hooks and event handlers."""
17
17
  pass
18
18
 
19
19
 
20
- @hook.command('stdin-receiver')
20
+ @hooks.command('receiver')
21
21
  @click.option('--tool-name', help='Override tool name (for testing)')
22
22
  @click.option('--action', type=click.Choice(['start', 'end']), help='Override action (for testing)')
23
23
  @click.option('--subagent-type', help='Override subagent type (for testing)')
24
24
  @click.option('--event', type=click.Choice(['PreToolUse', 'PostToolUse']), help='Override event (for testing)')
25
25
  @click.option('--debug', is_flag=True, help='Enable debug output')
26
- def stdin_receiver(tool_name, action, subagent_type, event, debug):
26
+ def receiver(tool_name, action, subagent_type, event, debug):
27
27
  """Receive and process hook events from Claude Code via stdin.
28
28
 
29
29
  This command reads JSON from stdin when called by Claude Code hooks,
@@ -34,13 +34,13 @@ def stdin_receiver(tool_name, action, subagent_type, event, debug):
34
34
 
35
35
  Examples:
36
36
  # Called by Claude Code (reads JSON from stdin)
37
- voicemode hook stdin-receiver
37
+ voicemode claude hooks receiver
38
38
 
39
39
  # Testing with defaults
40
- voicemode hook stdin-receiver --debug
40
+ voicemode claude hooks receiver --debug
41
41
 
42
42
  # Testing with specific values
43
- voicemode hook stdin-receiver --tool-name Task --action start --subagent-type mama-bear
43
+ voicemode claude hooks receiver --tool-name Task --action start --subagent-type mama-bear
44
44
  """
45
45
  from voice_mode.tools.sound_fonts.audio_player import Player
46
46
 
@@ -188,22 +188,19 @@ def find_sound_file(event: str, tool: str, subagent: Optional[str] = None) -> Op
188
188
  return None
189
189
 
190
190
 
191
- # Keep the old receiver command for backwards compatibility (deprecated)
192
- @hook.command('receiver', hidden=True)
191
+ # Keep the old stdin-receiver command for backwards compatibility (deprecated)
192
+ @hooks.command('stdin-receiver', hidden=True)
193
193
  @click.argument('tool_name')
194
194
  @click.argument('action', type=click.Choice(['start', 'end', 'complete']))
195
195
  @click.argument('subagent_type', required=False)
196
196
  @click.option('--debug', is_flag=True, help='Enable debug output')
197
- def receiver_deprecated(tool_name, action, subagent_type, debug):
198
- """[DEPRECATED] Use stdin-receiver instead."""
199
- # Map old action to event
200
- event = 'PreToolUse' if action == 'start' else 'PostToolUse'
201
-
202
- # Call the new command
197
+ def stdin_receiver_deprecated(tool_name, action, subagent_type, event, debug):
198
+ """[DEPRECATED] Use receiver instead."""
199
+ # Call the new receiver command
203
200
  ctx = click.get_current_context()
204
- ctx.invoke(stdin_receiver,
201
+ ctx.invoke(receiver,
205
202
  tool_name=tool_name,
206
- action=action if action != 'complete' else 'end',
203
+ action=action,
207
204
  subagent_type=subagent_type,
208
205
  event=event,
209
206
  debug=debug)
@@ -1 +1 @@
1
- -9MkXl-xGB2BLmGEAZVmg
1
+ WhZriRkBKVNPSmCnOFRav
@@ -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-991c8c54319817e0.js",
7
+ "static/chunks/main-app-836e76fc70b52220.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-991c8c54319817e0.js",
14
+ "static/chunks/main-app-836e76fc70b52220.js",
15
15
  "static/css/a2f49a47752b5010.css",
16
- "static/chunks/app/layout-d89915a94cb8f604.js"
16
+ "static/chunks/app/layout-917e8410913fe899.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-991c8c54319817e0.js",
22
+ "static/chunks/main-app-836e76fc70b52220.js",
23
23
  "static/chunks/144d3bae-2d5f122b82426d88.js",
24
24
  "static/chunks/471-bd4b96a33883dfa2.js",
25
- "static/chunks/app/page-728ce55710c9bd80.js"
25
+ "static/chunks/app/page-ae0d14863ed895ea.js"
26
26
  ]
27
27
  }
28
28
  }
@@ -5,14 +5,14 @@
5
5
  "devFiles": [],
6
6
  "ampDevFiles": [],
7
7
  "lowPriorityFiles": [
8
- "static/-9MkXl-xGB2BLmGEAZVmg/_buildManifest.js",
9
- "static/-9MkXl-xGB2BLmGEAZVmg/_ssgManifest.js"
8
+ "static/WhZriRkBKVNPSmCnOFRav/_buildManifest.js",
9
+ "static/WhZriRkBKVNPSmCnOFRav/_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-991c8c54319817e0.js"
15
+ "static/chunks/main-app-836e76fc70b52220.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/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/types.js","../node_modules/next/dist/compiled/babel/traverse.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"]}
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/region.js","../node_modules/caniuse-lite/dist/unpacker/feature.js","../node_modules/caniuse-lite/dist/unpacker/agents.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/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/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"]}