voice-mode 4.4.0__py3-none-any.whl → 4.5.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.
- voice_mode/__version__.py +1 -1
- voice_mode/cli.py +79 -3
- voice_mode/cli_commands/transcribe.py +7 -6
- voice_mode/config.py +1 -1
- voice_mode/conversation_logger.py +6 -0
- voice_mode/core.py +9 -2
- voice_mode/frontend/.next/BUILD_ID +1 -1
- voice_mode/frontend/.next/app-build-manifest.json +5 -5
- voice_mode/frontend/.next/build-manifest.json +3 -3
- voice_mode/frontend/.next/next-minimal-server.js.nft.json +1 -1
- voice_mode/frontend/.next/next-server.js.nft.json +1 -1
- voice_mode/frontend/.next/prerender-manifest.json +1 -1
- voice_mode/frontend/.next/required-server-files.json +1 -1
- voice_mode/frontend/.next/server/app/_not-found/page.js +1 -1
- voice_mode/frontend/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- voice_mode/frontend/.next/server/app/_not-found.html +1 -1
- voice_mode/frontend/.next/server/app/_not-found.rsc +1 -1
- voice_mode/frontend/.next/server/app/api/connection-details/route.js +2 -2
- voice_mode/frontend/.next/server/app/favicon.ico/route.js +2 -2
- voice_mode/frontend/.next/server/app/index.html +1 -1
- voice_mode/frontend/.next/server/app/index.rsc +2 -2
- voice_mode/frontend/.next/server/app/page.js +3 -3
- voice_mode/frontend/.next/server/app/page_client-reference-manifest.js +1 -1
- voice_mode/frontend/.next/server/chunks/994.js +1 -1
- voice_mode/frontend/.next/server/middleware-build-manifest.js +1 -1
- voice_mode/frontend/.next/server/next-font-manifest.js +1 -1
- voice_mode/frontend/.next/server/next-font-manifest.json +1 -1
- voice_mode/frontend/.next/server/pages/404.html +1 -1
- voice_mode/frontend/.next/server/pages/500.html +1 -1
- voice_mode/frontend/.next/server/server-reference-manifest.json +1 -1
- voice_mode/frontend/.next/standalone/.next/BUILD_ID +1 -1
- voice_mode/frontend/.next/standalone/.next/app-build-manifest.json +5 -5
- voice_mode/frontend/.next/standalone/.next/build-manifest.json +3 -3
- voice_mode/frontend/.next/standalone/.next/prerender-manifest.json +1 -1
- voice_mode/frontend/.next/standalone/.next/required-server-files.json +1 -1
- voice_mode/frontend/.next/standalone/.next/server/app/_not-found/page.js +1 -1
- voice_mode/frontend/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- voice_mode/frontend/.next/standalone/.next/server/app/_not-found.html +1 -1
- voice_mode/frontend/.next/standalone/.next/server/app/_not-found.rsc +1 -1
- voice_mode/frontend/.next/standalone/.next/server/app/api/connection-details/route.js +2 -2
- voice_mode/frontend/.next/standalone/.next/server/app/favicon.ico/route.js +2 -2
- voice_mode/frontend/.next/standalone/.next/server/app/index.html +1 -1
- voice_mode/frontend/.next/standalone/.next/server/app/index.rsc +2 -2
- voice_mode/frontend/.next/standalone/.next/server/app/page.js +3 -3
- voice_mode/frontend/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- voice_mode/frontend/.next/standalone/.next/server/chunks/994.js +1 -1
- voice_mode/frontend/.next/standalone/.next/server/middleware-build-manifest.js +1 -1
- voice_mode/frontend/.next/standalone/.next/server/next-font-manifest.js +1 -1
- voice_mode/frontend/.next/standalone/.next/server/next-font-manifest.json +1 -1
- voice_mode/frontend/.next/standalone/.next/server/pages/404.html +1 -1
- voice_mode/frontend/.next/standalone/.next/server/pages/500.html +1 -1
- voice_mode/frontend/.next/standalone/.next/server/server-reference-manifest.json +1 -1
- voice_mode/frontend/.next/standalone/server.js +1 -1
- voice_mode/frontend/.next/static/chunks/app/layout-d3ec7f6f14ea7396.js +1 -0
- voice_mode/frontend/.next/static/chunks/app/{page-ae0d14863ed895ea.js → page-471796963fb1a4bd.js} +1 -1
- voice_mode/frontend/.next/static/chunks/{main-app-836e76fc70b52220.js → main-app-78da5e437b6a2a9f.js} +1 -1
- voice_mode/frontend/.next/trace +43 -43
- voice_mode/frontend/.next/types/app/api/connection-details/route.ts +1 -1
- voice_mode/frontend/.next/types/app/layout.ts +1 -1
- voice_mode/frontend/.next/types/app/page.ts +1 -1
- voice_mode/frontend/package-lock.json +26 -15
- voice_mode/provider_discovery.py +55 -79
- voice_mode/providers.py +61 -45
- voice_mode/simple_failover.py +41 -12
- voice_mode/tools/__init__.py +138 -30
- voice_mode/tools/converse.py +148 -337
- voice_mode/tools/diagnostics.py +2 -1
- voice_mode/tools/voice_registry.py +24 -28
- {voice_mode-4.4.0.dist-info → voice_mode-4.5.0.dist-info}/METADATA +5 -2
- {voice_mode-4.4.0.dist-info → voice_mode-4.5.0.dist-info}/RECORD +74 -74
- voice_mode/frontend/.next/static/chunks/app/layout-917e8410913fe899.js +0 -1
- /voice_mode/frontend/.next/static/{WhZriRkBKVNPSmCnOFRav → Ni4GIqyDdn0QehvmlLBZg}/_buildManifest.js +0 -0
- /voice_mode/frontend/.next/static/{WhZriRkBKVNPSmCnOFRav → Ni4GIqyDdn0QehvmlLBZg}/_ssgManifest.js +0 -0
- {voice_mode-4.4.0.dist-info → voice_mode-4.5.0.dist-info}/WHEEL +0 -0
- {voice_mode-4.4.0.dist-info → voice_mode-4.5.0.dist-info}/entry_points.txt +0 -0
voice_mode/__version__.py
CHANGED
voice_mode/cli.py
CHANGED
@@ -5,6 +5,8 @@ import asyncio
|
|
5
5
|
import sys
|
6
6
|
import os
|
7
7
|
import warnings
|
8
|
+
import subprocess
|
9
|
+
import shutil
|
8
10
|
import click
|
9
11
|
|
10
12
|
|
@@ -30,10 +32,12 @@ if not os.environ.get('VOICEMODE_DEBUG', '').lower() in ('true', '1', 'yes'):
|
|
30
32
|
@click.version_option()
|
31
33
|
@click.help_option('-h', '--help', help='Show this message and exit')
|
32
34
|
@click.option('--debug', is_flag=True, help='Enable debug mode and show all warnings')
|
35
|
+
@click.option('--tools-enabled', help='Comma-separated list of tools to enable (whitelist)')
|
36
|
+
@click.option('--tools-disabled', help='Comma-separated list of tools to disable (blacklist)')
|
33
37
|
@click.pass_context
|
34
|
-
def voice_mode_main_cli(ctx, debug):
|
38
|
+
def voice_mode_main_cli(ctx, debug, tools_enabled, tools_disabled):
|
35
39
|
"""Voice Mode - MCP server and service management.
|
36
|
-
|
40
|
+
|
37
41
|
Without arguments, starts the MCP server.
|
38
42
|
With subcommands, executes service management operations.
|
39
43
|
"""
|
@@ -44,7 +48,13 @@ def voice_mode_main_cli(ctx, debug):
|
|
44
48
|
# Re-enable INFO logging
|
45
49
|
import logging
|
46
50
|
logging.getLogger("voice-mode").setLevel(logging.INFO)
|
47
|
-
|
51
|
+
|
52
|
+
# Set environment variables from CLI args
|
53
|
+
if tools_enabled:
|
54
|
+
os.environ['VOICEMODE_TOOLS_ENABLED'] = tools_enabled
|
55
|
+
if tools_disabled:
|
56
|
+
os.environ['VOICEMODE_TOOLS_DISABLED'] = tools_disabled
|
57
|
+
|
48
58
|
if ctx.invoked_subcommand is None:
|
49
59
|
# No subcommand - run MCP server
|
50
60
|
# Note: warnings are already suppressed at module level unless debug is enabled
|
@@ -1277,6 +1287,72 @@ def config_set(key, value):
|
|
1277
1287
|
click.echo(result)
|
1278
1288
|
|
1279
1289
|
|
1290
|
+
@config.command("edit")
|
1291
|
+
@click.help_option('-h', '--help')
|
1292
|
+
@click.option('--editor', help='Editor to use (overrides $EDITOR)')
|
1293
|
+
def config_edit(editor):
|
1294
|
+
"""Open the configuration file in your default editor.
|
1295
|
+
|
1296
|
+
Opens ~/.voicemode/voicemode.env in your configured editor.
|
1297
|
+
Uses $EDITOR environment variable by default, or you can specify with --editor.
|
1298
|
+
|
1299
|
+
Examples:
|
1300
|
+
voicemode config edit # Use $EDITOR
|
1301
|
+
voicemode config edit --editor vim
|
1302
|
+
voicemode config edit --editor "code --wait"
|
1303
|
+
"""
|
1304
|
+
from pathlib import Path
|
1305
|
+
|
1306
|
+
# Find the config file
|
1307
|
+
config_path = Path.home() / ".voicemode" / "voicemode.env"
|
1308
|
+
|
1309
|
+
# Create default config if it doesn't exist
|
1310
|
+
if not config_path.exists():
|
1311
|
+
config_path.parent.mkdir(parents=True, exist_ok=True)
|
1312
|
+
from voice_mode.config import load_voicemode_env
|
1313
|
+
# This will create the default config
|
1314
|
+
load_voicemode_env()
|
1315
|
+
|
1316
|
+
# Determine which editor to use
|
1317
|
+
if editor:
|
1318
|
+
editor_cmd = editor
|
1319
|
+
else:
|
1320
|
+
# Try environment variables in order of preference
|
1321
|
+
editor_cmd = (
|
1322
|
+
os.environ.get('EDITOR') or
|
1323
|
+
os.environ.get('VISUAL') or
|
1324
|
+
shutil.which('nano') or
|
1325
|
+
shutil.which('vim') or
|
1326
|
+
shutil.which('vi')
|
1327
|
+
)
|
1328
|
+
|
1329
|
+
if not editor_cmd:
|
1330
|
+
click.echo("❌ No editor found. Please set $EDITOR or use --editor")
|
1331
|
+
click.echo(" Example: export EDITOR=vim")
|
1332
|
+
click.echo(" Or use: voicemode config edit --editor vim")
|
1333
|
+
return
|
1334
|
+
|
1335
|
+
# Handle complex editor commands (e.g., "code --wait")
|
1336
|
+
if ' ' in editor_cmd:
|
1337
|
+
import shlex
|
1338
|
+
cmd_parts = shlex.split(editor_cmd)
|
1339
|
+
cmd = cmd_parts + [str(config_path)]
|
1340
|
+
else:
|
1341
|
+
cmd = [editor_cmd, str(config_path)]
|
1342
|
+
|
1343
|
+
# Open the editor
|
1344
|
+
try:
|
1345
|
+
click.echo(f"Opening {config_path} in {editor_cmd}...")
|
1346
|
+
subprocess.run(cmd, check=True)
|
1347
|
+
click.echo("✅ Configuration file edited successfully")
|
1348
|
+
click.echo("\nChanges will take effect when voicemode is restarted.")
|
1349
|
+
except subprocess.CalledProcessError:
|
1350
|
+
click.echo(f"❌ Editor exited with an error")
|
1351
|
+
except FileNotFoundError:
|
1352
|
+
click.echo(f"❌ Editor not found: {editor_cmd}")
|
1353
|
+
click.echo(" Please check that the editor is installed and in your PATH")
|
1354
|
+
|
1355
|
+
|
1280
1356
|
# Diagnostics group
|
1281
1357
|
@voice_mode_main_cli.group()
|
1282
1358
|
@click.help_option('-h', '--help', help='Show this message and exit')
|
@@ -6,12 +6,6 @@ import asyncio
|
|
6
6
|
from pathlib import Path
|
7
7
|
from typing import Optional
|
8
8
|
|
9
|
-
from voice_mode.tools.transcription import (
|
10
|
-
transcribe_audio,
|
11
|
-
TranscriptionBackend,
|
12
|
-
OutputFormat
|
13
|
-
)
|
14
|
-
|
15
9
|
|
16
10
|
@click.group()
|
17
11
|
def transcribe():
|
@@ -61,6 +55,13 @@ def audio_command(
|
|
61
55
|
voice-mode transcribe audio spanish.mp3 --language es --backend whisperx
|
62
56
|
"""
|
63
57
|
async def run():
|
58
|
+
# Import here to avoid loading tools at module level
|
59
|
+
from voice_mode.tools.transcription import (
|
60
|
+
transcribe_audio,
|
61
|
+
TranscriptionBackend,
|
62
|
+
OutputFormat
|
63
|
+
)
|
64
|
+
|
64
65
|
# Perform transcription
|
65
66
|
result = await transcribe_audio(
|
66
67
|
audio_file=audio_file,
|
voice_mode/config.py
CHANGED
@@ -253,7 +253,7 @@ PREFER_LOCAL = os.getenv("VOICEMODE_PREFER_LOCAL", "true").lower() in ("true", "
|
|
253
253
|
ALWAYS_TRY_LOCAL = os.getenv("VOICEMODE_ALWAYS_TRY_LOCAL", "true").lower() in ("true", "1", "yes", "on")
|
254
254
|
|
255
255
|
# Use simple failover without health checks
|
256
|
-
|
256
|
+
# Simple failover is now the only mode - configuration removed
|
257
257
|
|
258
258
|
# Auto-start configuration
|
259
259
|
AUTO_START_KOKORO = os.getenv("VOICEMODE_AUTO_START_KOKORO", "").lower() in ("true", "1", "yes", "on")
|
@@ -189,6 +189,9 @@ class ConversationLogger:
|
|
189
189
|
"timing": kwargs.get("timing"),
|
190
190
|
"silence_detection": kwargs.get("silence_detection"),
|
191
191
|
"error": kwargs.get("error"),
|
192
|
+
# Fallback information
|
193
|
+
"is_fallback": kwargs.get("is_fallback"),
|
194
|
+
"fallback_reason": kwargs.get("fallback_reason"),
|
192
195
|
# Timing metrics
|
193
196
|
"transcription_time": kwargs.get("transcription_time"),
|
194
197
|
"total_turnaround_time": kwargs.get("total_turnaround_time"),
|
@@ -205,6 +208,9 @@ class ConversationLogger:
|
|
205
208
|
"provider": kwargs.get("provider"),
|
206
209
|
"provider_url": kwargs.get("provider_url"),
|
207
210
|
"provider_type": kwargs.get("provider_type"),
|
211
|
+
# Fallback information
|
212
|
+
"is_fallback": kwargs.get("is_fallback"),
|
213
|
+
"fallback_reason": kwargs.get("fallback_reason"),
|
208
214
|
"audio_format": kwargs.get("audio_format"),
|
209
215
|
"timing": kwargs.get("timing"),
|
210
216
|
"transport": kwargs.get("transport"),
|
voice_mode/core.py
CHANGED
@@ -18,6 +18,7 @@ from typing import Optional
|
|
18
18
|
import numpy as np
|
19
19
|
from pydub import AudioSegment
|
20
20
|
from openai import AsyncOpenAI
|
21
|
+
from .provider_discovery import is_local_provider
|
21
22
|
import httpx
|
22
23
|
|
23
24
|
from .config import SAMPLE_RATE
|
@@ -135,16 +136,22 @@ def get_openai_clients(api_key: str, stt_base_url: Optional[str] = None, tts_bas
|
|
135
136
|
'limits': httpx.Limits(max_keepalive_connections=5, max_connections=10),
|
136
137
|
}
|
137
138
|
|
139
|
+
# Disable retries for local endpoints - they either work or don't
|
140
|
+
stt_max_retries = 0 if is_local_provider(stt_base_url) else 2
|
141
|
+
tts_max_retries = 0 if is_local_provider(tts_base_url) else 2
|
142
|
+
|
138
143
|
return {
|
139
144
|
'stt': AsyncOpenAI(
|
140
145
|
api_key=api_key,
|
141
146
|
base_url=stt_base_url,
|
142
|
-
http_client=httpx.AsyncClient(**http_client_config)
|
147
|
+
http_client=httpx.AsyncClient(**http_client_config),
|
148
|
+
max_retries=stt_max_retries
|
143
149
|
),
|
144
150
|
'tts': AsyncOpenAI(
|
145
151
|
api_key=api_key,
|
146
152
|
base_url=tts_base_url,
|
147
|
-
http_client=httpx.AsyncClient(**http_client_config)
|
153
|
+
http_client=httpx.AsyncClient(**http_client_config),
|
154
|
+
max_retries=tts_max_retries
|
148
155
|
)
|
149
156
|
}
|
150
157
|
|
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
Ni4GIqyDdn0QehvmlLBZg
|
@@ -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-
|
7
|
+
"static/chunks/main-app-78da5e437b6a2a9f.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-
|
14
|
+
"static/chunks/main-app-78da5e437b6a2a9f.js",
|
15
15
|
"static/css/a2f49a47752b5010.css",
|
16
|
-
"static/chunks/app/layout-
|
16
|
+
"static/chunks/app/layout-d3ec7f6f14ea7396.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-
|
22
|
+
"static/chunks/main-app-78da5e437b6a2a9f.js",
|
23
23
|
"static/chunks/144d3bae-2d5f122b82426d88.js",
|
24
24
|
"static/chunks/471-bd4b96a33883dfa2.js",
|
25
|
-
"static/chunks/app/page-
|
25
|
+
"static/chunks/app/page-471796963fb1a4bd.js"
|
26
26
|
]
|
27
27
|
}
|
28
28
|
}
|
@@ -5,14 +5,14 @@
|
|
5
5
|
"devFiles": [],
|
6
6
|
"ampDevFiles": [],
|
7
7
|
"lowPriorityFiles": [
|
8
|
-
"static/
|
9
|
-
"static/
|
8
|
+
"static/Ni4GIqyDdn0QehvmlLBZg/_buildManifest.js",
|
9
|
+
"static/Ni4GIqyDdn0QehvmlLBZg/_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-
|
15
|
+
"static/chunks/main-app-78da5e437b6a2a9f.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/
|
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/lru-cache/package.json","../node_modules/next/dist/compiled/node-html-parser/package.json","../node_modules/@swc/helpers/_/_interop_require_default/package.json","../node_modules/next/dist/compiled/ws/index.js","../node_modules/next/dist/compiled/lru-cache/index.js","../node_modules/next/dist/compiled/node-html-parser/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/lib/statuses.js","../node_modules/caniuse-lite/dist/lib/supported.js","../node_modules/caniuse-lite/dist/unpacker/browsers.js","../node_modules/caniuse-lite/dist/unpacker/browserVersions.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/types.js","../node_modules/next/dist/compiled/babel/traverse.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"]}
|