karaoke-gen 0.86.7__py3-none-any.whl → 0.96.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.
- backend/.coveragerc +20 -0
- backend/.gitignore +37 -0
- backend/Dockerfile +43 -0
- backend/Dockerfile.base +74 -0
- backend/README.md +242 -0
- backend/__init__.py +0 -0
- backend/api/__init__.py +0 -0
- backend/api/dependencies.py +457 -0
- backend/api/routes/__init__.py +0 -0
- backend/api/routes/admin.py +742 -0
- backend/api/routes/audio_search.py +903 -0
- backend/api/routes/auth.py +348 -0
- backend/api/routes/file_upload.py +2076 -0
- backend/api/routes/health.py +344 -0
- backend/api/routes/internal.py +435 -0
- backend/api/routes/jobs.py +1610 -0
- backend/api/routes/review.py +652 -0
- backend/api/routes/themes.py +162 -0
- backend/api/routes/users.py +1014 -0
- backend/config.py +172 -0
- backend/main.py +133 -0
- backend/middleware/__init__.py +5 -0
- backend/middleware/audit_logging.py +124 -0
- backend/models/__init__.py +0 -0
- backend/models/job.py +519 -0
- backend/models/requests.py +123 -0
- backend/models/theme.py +153 -0
- backend/models/user.py +254 -0
- backend/models/worker_log.py +164 -0
- backend/pyproject.toml +29 -0
- backend/quick-check.sh +93 -0
- backend/requirements.txt +29 -0
- backend/run_tests.sh +60 -0
- backend/services/__init__.py +0 -0
- backend/services/audio_analysis_service.py +243 -0
- backend/services/audio_editing_service.py +278 -0
- backend/services/audio_search_service.py +702 -0
- backend/services/auth_service.py +630 -0
- backend/services/credential_manager.py +792 -0
- backend/services/discord_service.py +172 -0
- backend/services/dropbox_service.py +301 -0
- backend/services/email_service.py +1093 -0
- backend/services/encoding_interface.py +454 -0
- backend/services/encoding_service.py +405 -0
- backend/services/firestore_service.py +512 -0
- backend/services/flacfetch_client.py +573 -0
- backend/services/gce_encoding/README.md +72 -0
- backend/services/gce_encoding/__init__.py +22 -0
- backend/services/gce_encoding/main.py +589 -0
- backend/services/gce_encoding/requirements.txt +16 -0
- backend/services/gdrive_service.py +356 -0
- backend/services/job_logging.py +258 -0
- backend/services/job_manager.py +842 -0
- backend/services/job_notification_service.py +271 -0
- backend/services/local_encoding_service.py +590 -0
- backend/services/local_preview_encoding_service.py +407 -0
- backend/services/lyrics_cache_service.py +216 -0
- backend/services/metrics.py +413 -0
- backend/services/packaging_service.py +287 -0
- backend/services/rclone_service.py +106 -0
- backend/services/storage_service.py +209 -0
- backend/services/stripe_service.py +275 -0
- backend/services/structured_logging.py +254 -0
- backend/services/template_service.py +330 -0
- backend/services/theme_service.py +469 -0
- backend/services/tracing.py +543 -0
- backend/services/user_service.py +721 -0
- backend/services/worker_service.py +558 -0
- backend/services/youtube_service.py +112 -0
- backend/services/youtube_upload_service.py +445 -0
- backend/tests/__init__.py +4 -0
- backend/tests/conftest.py +224 -0
- backend/tests/emulator/__init__.py +7 -0
- backend/tests/emulator/conftest.py +88 -0
- backend/tests/emulator/test_e2e_cli_backend.py +1053 -0
- backend/tests/emulator/test_emulator_integration.py +356 -0
- backend/tests/emulator/test_style_loading_direct.py +436 -0
- backend/tests/emulator/test_worker_logs_direct.py +229 -0
- backend/tests/emulator/test_worker_logs_subcollection.py +443 -0
- backend/tests/requirements-test.txt +10 -0
- backend/tests/requirements.txt +6 -0
- backend/tests/test_admin_email_endpoints.py +411 -0
- backend/tests/test_api_integration.py +460 -0
- backend/tests/test_api_routes.py +93 -0
- backend/tests/test_audio_analysis_service.py +294 -0
- backend/tests/test_audio_editing_service.py +386 -0
- backend/tests/test_audio_search.py +1398 -0
- backend/tests/test_audio_services.py +378 -0
- backend/tests/test_auth_firestore.py +231 -0
- backend/tests/test_config_extended.py +68 -0
- backend/tests/test_credential_manager.py +377 -0
- backend/tests/test_dependencies.py +54 -0
- backend/tests/test_discord_service.py +244 -0
- backend/tests/test_distribution_services.py +820 -0
- backend/tests/test_dropbox_service.py +472 -0
- backend/tests/test_email_service.py +492 -0
- backend/tests/test_emulator_integration.py +322 -0
- backend/tests/test_encoding_interface.py +412 -0
- backend/tests/test_file_upload.py +1739 -0
- backend/tests/test_flacfetch_client.py +632 -0
- backend/tests/test_gdrive_service.py +524 -0
- backend/tests/test_instrumental_api.py +431 -0
- backend/tests/test_internal_api.py +343 -0
- backend/tests/test_job_creation_regression.py +583 -0
- backend/tests/test_job_manager.py +339 -0
- backend/tests/test_job_manager_notifications.py +329 -0
- backend/tests/test_job_notification_service.py +443 -0
- backend/tests/test_jobs_api.py +273 -0
- backend/tests/test_local_encoding_service.py +423 -0
- backend/tests/test_local_preview_encoding_service.py +567 -0
- backend/tests/test_main.py +87 -0
- backend/tests/test_models.py +918 -0
- backend/tests/test_packaging_service.py +382 -0
- backend/tests/test_requests.py +201 -0
- backend/tests/test_routes_jobs.py +282 -0
- backend/tests/test_routes_review.py +337 -0
- backend/tests/test_services.py +556 -0
- backend/tests/test_services_extended.py +112 -0
- backend/tests/test_storage_service.py +448 -0
- backend/tests/test_style_upload.py +261 -0
- backend/tests/test_template_service.py +295 -0
- backend/tests/test_theme_service.py +516 -0
- backend/tests/test_unicode_sanitization.py +522 -0
- backend/tests/test_upload_api.py +256 -0
- backend/tests/test_validate.py +156 -0
- backend/tests/test_video_worker_orchestrator.py +847 -0
- backend/tests/test_worker_log_subcollection.py +509 -0
- backend/tests/test_worker_logging.py +365 -0
- backend/tests/test_workers.py +1116 -0
- backend/tests/test_workers_extended.py +178 -0
- backend/tests/test_youtube_service.py +247 -0
- backend/tests/test_youtube_upload_service.py +568 -0
- backend/validate.py +173 -0
- backend/version.py +27 -0
- backend/workers/README.md +597 -0
- backend/workers/__init__.py +11 -0
- backend/workers/audio_worker.py +618 -0
- backend/workers/lyrics_worker.py +683 -0
- backend/workers/render_video_worker.py +483 -0
- backend/workers/screens_worker.py +525 -0
- backend/workers/style_helper.py +198 -0
- backend/workers/video_worker.py +1277 -0
- backend/workers/video_worker_orchestrator.py +701 -0
- backend/workers/worker_logging.py +278 -0
- karaoke_gen/instrumental_review/static/index.html +7 -4
- karaoke_gen/karaoke_finalise/karaoke_finalise.py +6 -1
- karaoke_gen/style_loader.py +3 -1
- karaoke_gen/utils/__init__.py +163 -8
- karaoke_gen/video_background_processor.py +9 -4
- {karaoke_gen-0.86.7.dist-info → karaoke_gen-0.96.0.dist-info}/METADATA +2 -1
- {karaoke_gen-0.86.7.dist-info → karaoke_gen-0.96.0.dist-info}/RECORD +187 -42
- lyrics_transcriber/correction/agentic/providers/config.py +9 -5
- lyrics_transcriber/correction/agentic/providers/langchain_bridge.py +1 -51
- lyrics_transcriber/correction/corrector.py +192 -130
- lyrics_transcriber/correction/operations.py +24 -9
- lyrics_transcriber/frontend/package-lock.json +2 -2
- lyrics_transcriber/frontend/package.json +1 -1
- lyrics_transcriber/frontend/src/components/AIFeedbackModal.tsx +1 -1
- lyrics_transcriber/frontend/src/components/CorrectedWordWithActions.tsx +11 -7
- lyrics_transcriber/frontend/src/components/EditActionBar.tsx +31 -5
- lyrics_transcriber/frontend/src/components/EditModal.tsx +28 -10
- lyrics_transcriber/frontend/src/components/EditTimelineSection.tsx +123 -27
- lyrics_transcriber/frontend/src/components/EditWordList.tsx +112 -60
- lyrics_transcriber/frontend/src/components/Header.tsx +90 -76
- lyrics_transcriber/frontend/src/components/LyricsAnalyzer.tsx +53 -31
- lyrics_transcriber/frontend/src/components/LyricsSynchronizer/SyncControls.tsx +44 -13
- lyrics_transcriber/frontend/src/components/LyricsSynchronizer/TimelineCanvas.tsx +66 -50
- lyrics_transcriber/frontend/src/components/LyricsSynchronizer/index.tsx +124 -30
- lyrics_transcriber/frontend/src/components/ReferenceView.tsx +1 -1
- lyrics_transcriber/frontend/src/components/TimelineEditor.tsx +12 -5
- lyrics_transcriber/frontend/src/components/TimingOffsetModal.tsx +3 -3
- lyrics_transcriber/frontend/src/components/TranscriptionView.tsx +1 -1
- lyrics_transcriber/frontend/src/components/WordDivider.tsx +11 -7
- lyrics_transcriber/frontend/src/components/shared/components/Word.tsx +4 -2
- lyrics_transcriber/frontend/src/hooks/useManualSync.ts +103 -1
- lyrics_transcriber/frontend/src/theme.ts +42 -15
- lyrics_transcriber/frontend/tsconfig.tsbuildinfo +1 -1
- lyrics_transcriber/frontend/vite.config.js +5 -0
- lyrics_transcriber/frontend/web_assets/assets/{index-BECn1o8Q.js → index-BSMgOq4Z.js} +6959 -5782
- lyrics_transcriber/frontend/web_assets/assets/index-BSMgOq4Z.js.map +1 -0
- lyrics_transcriber/frontend/web_assets/index.html +6 -2
- lyrics_transcriber/frontend/web_assets/nomad-karaoke-logo.svg +5 -0
- lyrics_transcriber/output/generator.py +17 -3
- lyrics_transcriber/output/video.py +60 -95
- lyrics_transcriber/frontend/web_assets/assets/index-BECn1o8Q.js.map +0 -1
- {karaoke_gen-0.86.7.dist-info → karaoke_gen-0.96.0.dist-info}/WHEEL +0 -0
- {karaoke_gen-0.86.7.dist-info → karaoke_gen-0.96.0.dist-info}/entry_points.txt +0 -0
- {karaoke_gen-0.86.7.dist-info → karaoke_gen-0.96.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,3 +1,147 @@
|
|
|
1
|
+
backend/.coveragerc,sha256=6K16Sgg_YVmFSfMfMqr16cMxBz0fyIl8aFRXNu6y8zc,407
|
|
2
|
+
backend/.gitignore,sha256=b0BmxHV4P22b_ougWcfPWJzHJDLyEqAxPTgHelmzd2U,318
|
|
3
|
+
backend/Dockerfile,sha256=5RgRTTL_pbD5N7qswSpZwKSlr7ndvllc582Yyulkv0g,1774
|
|
4
|
+
backend/Dockerfile.base,sha256=oy43qV1HwhPCwX0ix7K72hRfRAiZhtGV5OsbpIlsOdk,2976
|
|
5
|
+
backend/README.md,sha256=JdmvGRDX85qaDa4TLAn_7VF1O3_VOw62gUuQfYhkBd0,4771
|
|
6
|
+
backend/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
7
|
+
backend/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
8
|
+
backend/api/dependencies.py,sha256=-61nHBhiihUDSVMQd3VuHLP7uvKrUbm1y-j9RmV6_zc,16871
|
|
9
|
+
backend/api/routes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10
|
+
backend/api/routes/admin.py,sha256=QJ2B-90HySVd8la1DN2IGeKPq6Qzj4TVFZhgZOOoKBo,26060
|
|
11
|
+
backend/api/routes/audio_search.py,sha256=wJ_5j_q3yaHs5W03M2B5FdTYUrAVqHV5tW0cBdRrzxI,39153
|
|
12
|
+
backend/api/routes/auth.py,sha256=G1U2KwS3uqBJpgvg2PIe_mZOWCJKPFhhewrmKbW3Z_s,11531
|
|
13
|
+
backend/api/routes/file_upload.py,sha256=Skh4ewXo5I8XReXhXlJZO7tUbvdwz1YdNxFmJqYIFnM,92290
|
|
14
|
+
backend/api/routes/health.py,sha256=6HSLJVtNaYHA-xaXgHsXMZUJayYYXXNdX-oThDLDCcw,11609
|
|
15
|
+
backend/api/routes/internal.py,sha256=N_Fv0hYQ9gleYNehjHaZb1OKzM78PXDbcqTmHasll2w,15276
|
|
16
|
+
backend/api/routes/jobs.py,sha256=xAIbcNrYLHlWYHvsv1C5BakdvgXdN5mpa_RRzJ3QSeI,59905
|
|
17
|
+
backend/api/routes/review.py,sha256=hEvLUcb07DWcBc6E4fTa91zam3Z_a-x2vIvLP_OKR9o,28256
|
|
18
|
+
backend/api/routes/themes.py,sha256=_fPZg9N2KN-yyr1YR2vAy8FIm8PqVowboQ4WEpFTYiQ,4721
|
|
19
|
+
backend/api/routes/users.py,sha256=1EaBzR4qEzUklC3P3Yz-15Usm9tys3VPee0azmKzLj8,34355
|
|
20
|
+
backend/config.py,sha256=-HsMaacaKuRftYXUXZJr8GBHPdmacFbrNnFDMk7DHNI,8187
|
|
21
|
+
backend/main.py,sha256=nmm-0GWYoqKaWXRQSrRxbyZ5kUnv2BGpAtTvCyhVV_Q,4675
|
|
22
|
+
backend/middleware/__init__.py,sha256=lUSMQqQc4UxPazrE1XmyNNEvTKRk7tddAdFmxbTzz7M,157
|
|
23
|
+
backend/middleware/audit_logging.py,sha256=oGdgbfH_M_3hIMAGrS5HpRvri2jjLxGFnFuA6IiU9BU,4170
|
|
24
|
+
backend/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
25
|
+
backend/models/job.py,sha256=Aw5pl6uwJpvnqr61HIKmxMB4h7moX4DqcyRoR46zRzw,24683
|
|
26
|
+
backend/models/requests.py,sha256=tCX7ss4to3rKAR_Wu92CZ8uPqNb2nnmCp1XepD4VR5s,4152
|
|
27
|
+
backend/models/theme.py,sha256=cfNSHIigoAV4P41Jku6Sa1okHSRhUHjFpl1XBVF3kCY,4628
|
|
28
|
+
backend/models/user.py,sha256=5kUqfAMQU26DjCvCgjyoP0f07QbOypAnSgpuGhGcMg0,7377
|
|
29
|
+
backend/models/worker_log.py,sha256=QDgpdRarm00N1TdFoGhKJxZjP9GmiMjrTJb6msw7pHA,5547
|
|
30
|
+
backend/pyproject.toml,sha256=LAvEXxQSRI94XQcwpBmuSoEu36341HOu53iigsN6dVs,577
|
|
31
|
+
backend/quick-check.sh,sha256=PUvH0wXaGzWrgWwwJG5M4Bxxt3vVA4mmdEdL6VepVHY,2382
|
|
32
|
+
backend/requirements.txt,sha256=OhbFbBvOTRbZX2fglBc3ncC4jjIMsVkT_Y7Z5E3Y5vk,1046
|
|
33
|
+
backend/run_tests.sh,sha256=B69Uosp4nnVLGVkpsQgflMzvjWcFrLxPyfKEV4Wwjdc,1479
|
|
34
|
+
backend/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
35
|
+
backend/services/audio_analysis_service.py,sha256=ZYowpfqg9Ctf13XPDbGePinyae9hvtEVHamBE4dJS4U,8579
|
|
36
|
+
backend/services/audio_editing_service.py,sha256=ehZQ4KjMgtAsMGM9UG4ECFoq5U4jql0Wn_lPjJlcZj0,10281
|
|
37
|
+
backend/services/audio_search_service.py,sha256=_ua0_7vMTedVny6XK-n-ScGoODQwoCQ2I5F6-dVY844,27801
|
|
38
|
+
backend/services/auth_service.py,sha256=rEpb4O9YSTOQaEoP2XXKXRpppWI5sG10AsueQSVclsU,23363
|
|
39
|
+
backend/services/credential_manager.py,sha256=VA--PwvL3gboJ21orQb7MIUiovX8n66FohD6w84exX8,31682
|
|
40
|
+
backend/services/discord_service.py,sha256=LnEasOgaSRlmebDKsVT2yKCdWNDmskUToP3o2wPmdus,5082
|
|
41
|
+
backend/services/dropbox_service.py,sha256=R47MUKCqK2BEXXmQxMLG6zkPWw02htFoES9q9xiaYAw,10717
|
|
42
|
+
backend/services/email_service.py,sha256=fxwcL-n6ZRGLQ7SHXhxUQK1MkprtgE3GcuL5ulUR-90,44699
|
|
43
|
+
backend/services/encoding_interface.py,sha256=Y8hPskDyX9DOyAD557F3-SdHjymaBkGXcoC9E_OW7SE,15825
|
|
44
|
+
backend/services/encoding_service.py,sha256=d_1M9DucihOHNqXI1pR4QLj16FhmtMoONRu2YGPvhGY,14570
|
|
45
|
+
backend/services/firestore_service.py,sha256=XOuXUNd91eVeyEx82uh-A-WMwcyUa2HVxqTfYnGPw-Q,18512
|
|
46
|
+
backend/services/flacfetch_client.py,sha256=zj4VToKamR8bShXZifLvjDmUVa1HHvDhZuaw_b7g4lU,19901
|
|
47
|
+
backend/services/gce_encoding/README.md,sha256=frTFrp7-ugFAvUd_K9EgE4ud8Xu4Qf1V7BNirQn6qJk,2515
|
|
48
|
+
backend/services/gce_encoding/__init__.py,sha256=d2H6zM207NSc5afnfgkd3kwOXUu2gFBYjxBSS7tvX_s,571
|
|
49
|
+
backend/services/gce_encoding/main.py,sha256=2A0Bd3zYzbV66ikShB3avpqfNoDFBxr8Ja6c36qJhRI,22203
|
|
50
|
+
backend/services/gce_encoding/requirements.txt,sha256=-hW5ot-PnVoKkxrpY3yV6l68wx7AvzgnLYAWEgDGWNc,408
|
|
51
|
+
backend/services/gdrive_service.py,sha256=3JTXmPBuxpKopAbWDrh6YhqR5L9BLop1R7caXBnIk2A,13266
|
|
52
|
+
backend/services/job_logging.py,sha256=theCkAlwMbqyqAbu7vCCRpVRscaIpkam3UrCs_4Yi1g,8052
|
|
53
|
+
backend/services/job_manager.py,sha256=YPXFJD9oIMSZvVl2Ed4czo-4M-HqMxJrYCfZXV_MkhE,31256
|
|
54
|
+
backend/services/job_notification_service.py,sha256=ywGJUMUDqV23OSDsugOUufpXO6N_24bM9YVaPp8bOk4,9557
|
|
55
|
+
backend/services/local_encoding_service.py,sha256=Q6yK2-QL9tHM_pUBoxdyfT7ln2L5xMx82JB2nC5OfNQ,20680
|
|
56
|
+
backend/services/local_preview_encoding_service.py,sha256=WLuJuIx-kH6u35gcYnvogf4Gt7iEokL2IdfxlrkY5po,14394
|
|
57
|
+
backend/services/lyrics_cache_service.py,sha256=53EIZuDs5jIKr6QiOhIKJjE2mx1Jd1_x15_uAeLnc4A,7598
|
|
58
|
+
backend/services/metrics.py,sha256=hlEeLG4jOR1i_QbWaNQthoko9CSpe-Zn_LHJ2huEFeY,12728
|
|
59
|
+
backend/services/packaging_service.py,sha256=MUuBk0jtG3vGQhuOWbDv9u1uIMwbBC4NknLpJYFcWhs,10259
|
|
60
|
+
backend/services/rclone_service.py,sha256=Q6wRAjlBiMMh9FBbbFRp4SHK1ljOQBed9zUJaJgAuhU,3646
|
|
61
|
+
backend/services/storage_service.py,sha256=gA7Snz1pihzYpRKZjEZx3eDwyMUBezl3ccLuBdpTwE4,8573
|
|
62
|
+
backend/services/stripe_service.py,sha256=gmw1mQr_TezXFHnjN77df6KOUTpEuuzYewNMmbozaGg,9379
|
|
63
|
+
backend/services/structured_logging.py,sha256=daGgZUdc1xIiOdxL9-YtWHDy51hwZqd8ELpomkh2QH4,9063
|
|
64
|
+
backend/services/template_service.py,sha256=5CdSxBGhdBtxIUz24AhvltUfSWcFqZzBIxb9MjlN4YU,11212
|
|
65
|
+
backend/services/theme_service.py,sha256=6lJqMpFjmRY09CMJcW9IJ6DVPffLmwE0DnpXDUKaJ0U,17374
|
|
66
|
+
backend/services/tracing.py,sha256=MNpJNMmSOw-9TRlb3dJk7pA8JTmSjAFHj9bSuyM5cOY,17210
|
|
67
|
+
backend/services/user_service.py,sha256=TSVuIfM2rF4Acw1ic5TQ-QIjgeKU-Q8r93-PQdd4cwA,26215
|
|
68
|
+
backend/services/worker_service.py,sha256=WRgh3kconWYmvraEIsx6eUto2frKacauKApFU1wIEiQ,21093
|
|
69
|
+
backend/services/youtube_service.py,sha256=L2jqcWkw6qIaKh4wEfX894mHaTU0m5qtgIX6TPi6uiQ,3828
|
|
70
|
+
backend/services/youtube_upload_service.py,sha256=fvo4WxLQaKY_I75ViBMLk6vm87ym2ABHK0Fn_StYN6g,16694
|
|
71
|
+
backend/tests/__init__.py,sha256=jTjELMqIzpgHG9dcXwwkszTAAC4Wf-c93C6D1k-toZg,44
|
|
72
|
+
backend/tests/conftest.py,sha256=c4_jH0FIHsiKeUfo3ECPN78MlbW_IARTWwKr9RKLOSM,7843
|
|
73
|
+
backend/tests/emulator/__init__.py,sha256=yOGPU5e0JPNYyUpy-u13jW4gEfWQs3dCJxfincptaCY,156
|
|
74
|
+
backend/tests/emulator/conftest.py,sha256=gBZe23yPM4N2enFVO81ow67GcfGou8HZi7qWK5SI8GU,2858
|
|
75
|
+
backend/tests/emulator/test_e2e_cli_backend.py,sha256=BTrWDv4sRTeOlheZ-d4R37tZsvJ2MhdFLbDb9tjbF08,41018
|
|
76
|
+
backend/tests/emulator/test_emulator_integration.py,sha256=pm_JzgA2bmjcnHmGA-mZfJhUAYwGx10jv48A2deujRs,11822
|
|
77
|
+
backend/tests/emulator/test_style_loading_direct.py,sha256=e-FzlCVW_-ealM9hTGa2qgpwoVRiYKrcXDWB1FjkwXc,16842
|
|
78
|
+
backend/tests/emulator/test_worker_logs_direct.py,sha256=96EeaSxeNQBtDiZ9ky1-CGE6Lv6ZV3dKuoF3inHxO8A,8158
|
|
79
|
+
backend/tests/emulator/test_worker_logs_subcollection.py,sha256=whwUXW_-fF-nQp2Z791PNxi0nnvlRwLo87QacF-yMUI,16834
|
|
80
|
+
backend/tests/requirements-test.txt,sha256=1ixGqdsXFG0hbqUPWUjNGPlKdQgYxo1GajXOiLhs66M,193
|
|
81
|
+
backend/tests/requirements.txt,sha256=1526vDy39B1ZjJ5URZtoiDGnjvwuxiD9dNrjOLd6-gA,95
|
|
82
|
+
backend/tests/test_admin_email_endpoints.py,sha256=C1mOX3K4P-_QqSWa8ZSH4gtMnUJ7hqq5rOi00zSKR8g,16592
|
|
83
|
+
backend/tests/test_api_integration.py,sha256=ps4dFoW69NCKJAWvPSr410fEILPxfQNME_YmLPdNqxo,14886
|
|
84
|
+
backend/tests/test_api_routes.py,sha256=j6alBwXgtKspXxbOiDuNCCVMENk6yxdFJkakbife-rM,3193
|
|
85
|
+
backend/tests/test_audio_analysis_service.py,sha256=bKIAgyxfdbUOr7atHH-WCbZcZFkWGmGOOn7IfvRF2ms,11373
|
|
86
|
+
backend/tests/test_audio_editing_service.py,sha256=wXs82PRaxFQIji0CO1eKKYD2skHS4_VLK4aBnfj8CLE,15541
|
|
87
|
+
backend/tests/test_audio_search.py,sha256=ukZjzsw7XjVM6jPoJRiLp98TDiBbdYCp22-7v0hqeMU,54285
|
|
88
|
+
backend/tests/test_audio_services.py,sha256=mOF15i7IMtjM3mV-BNG0QBoMxW58cNPviEE6wka1pjQ,14607
|
|
89
|
+
backend/tests/test_auth_firestore.py,sha256=2etzuL47Pu-xOtR1CpCxi075OTFsftqneHa09yNJKEk,10063
|
|
90
|
+
backend/tests/test_config_extended.py,sha256=U2l9-wF28PmSllmRW5zNqRCNoYbBl3Nixb2SrmfGUOA,2475
|
|
91
|
+
backend/tests/test_credential_manager.py,sha256=zbNLOvLTd7ARd9e57NInFWQE8J0R--46DqUIUmkfJ7I,14789
|
|
92
|
+
backend/tests/test_dependencies.py,sha256=kWiOQEMQWFPIbAM8FEMYI921n3dLOQFJ7HXyRHwkYyo,1924
|
|
93
|
+
backend/tests/test_discord_service.py,sha256=OU5mVzjukFtJd_H5e_HxJqSsf78B0TrNfjxhwypbV34,8902
|
|
94
|
+
backend/tests/test_distribution_services.py,sha256=8oB2vMq5T_4rvOs6BURoLLTQiDf0kUJ-jF8dzJzDYRk,33699
|
|
95
|
+
backend/tests/test_dropbox_service.py,sha256=nDN1NjiCMS_f1bICWfe3maqbKT5FbhNuKCb1zjyjKq0,19198
|
|
96
|
+
backend/tests/test_email_service.py,sha256=jj4EQwbJ2iOiL_-jFR-2t9YJv7KnGP99HcFjZHAq2-I,16754
|
|
97
|
+
backend/tests/test_emulator_integration.py,sha256=m4teGnKLBKQNe9UdFi0-0iR_unnotWs07VWgSd_atuw,10387
|
|
98
|
+
backend/tests/test_encoding_interface.py,sha256=7q9mKX4QG8-bfkxQgZkmeirK_ynfL88UTbgWS0f097U,14609
|
|
99
|
+
backend/tests/test_file_upload.py,sha256=mWEIVj6cK6ZzKf4X0D0JhSk6pmJeCO0dOawV2GED7tc,68038
|
|
100
|
+
backend/tests/test_flacfetch_client.py,sha256=ZquMDLFVgORr9GoNfybOV9Z3eruborRgCvBRY6l-V8A,22614
|
|
101
|
+
backend/tests/test_gdrive_service.py,sha256=fh02KPaFqLEWfPaDQvSehn6r6RLq0bgt6MdXenF1kxA,19762
|
|
102
|
+
backend/tests/test_instrumental_api.py,sha256=2eWaoEAYVY02HZgY4esn5echuWGv_sznoO6FYWIgTbQ,17210
|
|
103
|
+
backend/tests/test_internal_api.py,sha256=qMGSDCkYd5OY_Z85vQu10xjqJn1JtaQcaKSnSBpVijw,12980
|
|
104
|
+
backend/tests/test_job_creation_regression.py,sha256=C1KgyNhpJzchl10QK8trfmACs2BrEwYd-WK1YMMS-7I,22602
|
|
105
|
+
backend/tests/test_job_manager.py,sha256=Y1MqanjqARh7HUSntzu2LkG3TFt0UYdIQHZisY7DP2A,12452
|
|
106
|
+
backend/tests/test_job_manager_notifications.py,sha256=WlzXXxTCmHHCrD4XWu2j2fDYODlHGKThOQpZQeyhPXM,12996
|
|
107
|
+
backend/tests/test_job_notification_service.py,sha256=YbXqCWbsK8O5WICItb3VCrEY8qKqoJ3NBEZtwCs7AYM,17892
|
|
108
|
+
backend/tests/test_jobs_api.py,sha256=HOdP-ULWQFgrL7JDRaaE14HF9xiuHHRt4-5UrgBQGoI,10713
|
|
109
|
+
backend/tests/test_local_encoding_service.py,sha256=TbBaFOB-8Re09G-qXIQCl8mS9WlQMFNQF01V64IekyI,14638
|
|
110
|
+
backend/tests/test_local_preview_encoding_service.py,sha256=VwxpcAjDdYaVauSsrJ609U575VWRZbLsXew8BqBXpJY,20228
|
|
111
|
+
backend/tests/test_main.py,sha256=BvzcadLUV0SEUO1ViKm0djgy_TEKXm8PPvgfcCCEJAY,3348
|
|
112
|
+
backend/tests/test_models.py,sha256=3qmuI-GmOXzhPTSLO2jlAl9E1hqtT057SkH4t4Dbchk,34435
|
|
113
|
+
backend/tests/test_packaging_service.py,sha256=v4Bj8R61Fx0Kng6RoTj3SRN9jmxow5qCVtTJstTWNfE,13916
|
|
114
|
+
backend/tests/test_requests.py,sha256=DI2IG67hHk2rhuzUfz_QNJCLRTy1NZPLsnSdZbIfPA8,6817
|
|
115
|
+
backend/tests/test_routes_jobs.py,sha256=iqOZ93ACKpizSzLEJUx5hIo0vkKe2oIT7s7iZqQUJaE,11258
|
|
116
|
+
backend/tests/test_routes_review.py,sha256=ENo6_wFUDcyXZhRy_NBqajan9dvqV_7f1rIQ7LLLS-U,14334
|
|
117
|
+
backend/tests/test_services.py,sha256=JSsZZSpa0HjNZBSIrXXzBxZfJewfdR9RC3P8tHV8M8E,24288
|
|
118
|
+
backend/tests/test_services_extended.py,sha256=cBcaEicz4WdBo5WZB77AoGZTwWAOC6W4OslpT6VmFI8,4124
|
|
119
|
+
backend/tests/test_storage_service.py,sha256=gorn3aFwKSr8lihxcG7kza7fYvDsTvxJhOxzuTtPK_o,19069
|
|
120
|
+
backend/tests/test_style_upload.py,sha256=8G2dGgvyMGXsh1jk8PcGpTlSdBQAlHn13kpZcKn6rTY,10491
|
|
121
|
+
backend/tests/test_template_service.py,sha256=BKURQ1M-hXXgdBl9LqhPQKfpItWOYDRBSt1y5FXQzaM,10431
|
|
122
|
+
backend/tests/test_theme_service.py,sha256=I_BrXjDAwmqGhxClJA8kE9FDYdQmtdYQINjIwyI3NTs,20454
|
|
123
|
+
backend/tests/test_unicode_sanitization.py,sha256=M4QfJmHGZ8WrhTfg7QPljPj2kUkN5QUNThtofzZhQiE,22930
|
|
124
|
+
backend/tests/test_upload_api.py,sha256=oWXPunON3pSTEnE3oE9vIQk63GC6lKM5RgTmaKKQths,10127
|
|
125
|
+
backend/tests/test_validate.py,sha256=H3xoEkKkW4S8tECYYJ9sTaT_l5W7hhvOoBczsfGOHdQ,5627
|
|
126
|
+
backend/tests/test_video_worker_orchestrator.py,sha256=ew1lDNWvoFqbBm_3helyeBBOGPXNyb2u7vlVFyuGZDE,33439
|
|
127
|
+
backend/tests/test_worker_log_subcollection.py,sha256=WH-U5u_MAtjQy29zSmQfbBuWu6KysWt_chiVeLgypl4,17687
|
|
128
|
+
backend/tests/test_worker_logging.py,sha256=Dqd_eNx-LgYmotcIMyAu5GqmJGOBAuj_5nrWpzJiLGk,12405
|
|
129
|
+
backend/tests/test_workers.py,sha256=BW-MDQx5HrgICKOcd1KkvzyBO4sOfJXeLVlMiJDfmBw,47657
|
|
130
|
+
backend/tests/test_workers_extended.py,sha256=uFznO4Q2v_H7xjfje5eYXXjS72EnhwXNRcT9YshuB8M,6763
|
|
131
|
+
backend/tests/test_youtube_service.py,sha256=HPm3HUJcu9rKcyRpBfufU6tzMP1lwZ9ZSe0vOoKNypI,9134
|
|
132
|
+
backend/tests/test_youtube_upload_service.py,sha256=o58DXYWLOtp8nmaowO_UHdOErVCDl8YxHJUgI-xvyMs,21428
|
|
133
|
+
backend/validate.py,sha256=u8lXKnC1ocXKAaYxNoCE9dRrhvoYI11XrTtaWIp-HLw,5040
|
|
134
|
+
backend/version.py,sha256=Ai-O0n-W-iBIYY_c71-QZikxAsmTpcel4X3T3p8AqVI,677
|
|
135
|
+
backend/workers/README.md,sha256=JYfLyngGkzxl1mRpkppIZB3ou9GR3sRVmZAxIAdURPY,15935
|
|
136
|
+
backend/workers/__init__.py,sha256=Eswp1Jvb6-97r7zUe7FUXSexsCZvghR08qwx1L_4298,330
|
|
137
|
+
backend/workers/audio_worker.py,sha256=9RWIzuhU24fpRMj9JW8cpWODeYsZrbaXhtxddrMFKIo,29088
|
|
138
|
+
backend/workers/lyrics_worker.py,sha256=nsy90pb0BPAl_lbZ0E7d7jIclcXK7W8d9RxxEdJaHVg,35149
|
|
139
|
+
backend/workers/render_video_worker.py,sha256=L6-VCxSBY6MbXBBm0-wu_DXxcIWKfW6ynTv9K03WCjY,25163
|
|
140
|
+
backend/workers/screens_worker.py,sha256=HvSrgpY4X0imu81HygAG-qS024puBWUONx-0fJ4sOe8,20998
|
|
141
|
+
backend/workers/style_helper.py,sha256=7-PM79dAUAZHTj-bnATy43ImqNdl_00E9pm94CYg1BM,6906
|
|
142
|
+
backend/workers/video_worker.py,sha256=49Q7D3bNg38iJk26q2k8y3v-oUscUtE50qaUymlFQbk,55292
|
|
143
|
+
backend/workers/video_worker_orchestrator.py,sha256=NInZjFwztqcYneuxrkDqEFWV7z5BzGlaaoJxj812KA4,27510
|
|
144
|
+
backend/workers/worker_logging.py,sha256=nlbGsjDjdkv28Fm-95vKBumy6P47dGiNN5Zf3r0A480,9928
|
|
1
145
|
karaoke_gen/__init__.py,sha256=wHpDbURJxmJAMNZ0uQjISv5MIT7KD9RWYi15xlYgEhU,1351
|
|
2
146
|
karaoke_gen/audio_fetcher.py,sha256=EuMSO_wG0z0ldfQQ_xGC8kdoUCDB1Rr2_IuWIZ218lA,71380
|
|
3
147
|
karaoke_gen/audio_processor.py,sha256=YCMsxh-OSzC6h1Oqht8gh48j4KaRDuRIMUUsNNQxJeY,39913
|
|
@@ -8,10 +152,10 @@ karaoke_gen/instrumental_review/analyzer.py,sha256=Heg8TbrwM4g5IV7bavmO6EfVD4M0U
|
|
|
8
152
|
karaoke_gen/instrumental_review/editor.py,sha256=_DGTjKMk5WhoGtLGtTvHzU522LJyQQ_DSY1r8fULuiA,11568
|
|
9
153
|
karaoke_gen/instrumental_review/models.py,sha256=cUSb_JheJK0cGdKx9f59-9sRvRrhrgdTdKBzQN3lHto,5226
|
|
10
154
|
karaoke_gen/instrumental_review/server.py,sha256=Ick90X77t2EeMRwtx2U08sSybadQyWH7G0tDG-4JqP4,19377
|
|
11
|
-
karaoke_gen/instrumental_review/static/index.html,sha256=
|
|
155
|
+
karaoke_gen/instrumental_review/static/index.html,sha256=_MHZcgDQ98GyaDHq3pBW8Bt3MHYAcp-y9Nsu8YwCzIM,63432
|
|
12
156
|
karaoke_gen/instrumental_review/waveform.py,sha256=Q6LBPZrJAD6mzZ7TmRf3Tf4gwYhUYTHumJKytLs3hSg,12940
|
|
13
157
|
karaoke_gen/karaoke_finalise/__init__.py,sha256=HqZ7TIhgt_tYZ-nb_NNCaejWAcF_aK-7wJY5TaW_keM,46
|
|
14
|
-
karaoke_gen/karaoke_finalise/karaoke_finalise.py,sha256=
|
|
158
|
+
karaoke_gen/karaoke_finalise/karaoke_finalise.py,sha256=uAx25TAOB5MGKw4bHCl5cqcvIfZMj4tjXMJurtRrbog,93895
|
|
15
159
|
karaoke_gen/karaoke_gen.py,sha256=84n2SE0MixJr01_btLmm5cVdf35hJvp7W638b8TKR-Q,65734
|
|
16
160
|
karaoke_gen/lyrics_processor.py,sha256=jXEjkQVFauojKXhs3cXytnpfS2ig1o9iHON0-I8RwPw,24297
|
|
17
161
|
karaoke_gen/metadata.py,sha256=SZW6TuUpkGGU98gRdjPfrR8F4vWXjnfCSGry2XD5_A4,6689
|
|
@@ -32,13 +176,13 @@ karaoke_gen/resources/Montserrat-Bold.ttf,sha256=mLFIaBDC7M-qF9RhCoPBJ5TAeY716et
|
|
|
32
176
|
karaoke_gen/resources/Oswald-Bold.ttf,sha256=S_2mLpNkBsDTe8FQRzrj1Qr-wloGETMJgoAcSKdi1lw,87604
|
|
33
177
|
karaoke_gen/resources/Oswald-SemiBold.ttf,sha256=G-vSJeeyEVft7D4s7FZQtGfXAViWPjzGCImV2a4u9d8,87608
|
|
34
178
|
karaoke_gen/resources/Zurich_Cn_BT_Bold.ttf,sha256=WNG5LOQ-uGUF_WWT5aQHzVbyWvQqGO5sZ4E-nRmvPuI,37780
|
|
35
|
-
karaoke_gen/style_loader.py,sha256=
|
|
36
|
-
karaoke_gen/utils/__init__.py,sha256=
|
|
179
|
+
karaoke_gen/style_loader.py,sha256=5KsB-WmWVbQAjkZT290wXjHqLJQCyQLUyTqX4f8rcm8,18053
|
|
180
|
+
karaoke_gen/utils/__init__.py,sha256=XohB2x2UKS3yHEKgNX820EiI0zKOhq1DnKTwlud8i10,6940
|
|
37
181
|
karaoke_gen/utils/bulk_cli.py,sha256=s2SXTnnQf7TM8Fk8yz9Cfd3Xl08uHBnve_rTkf4wE5g,19337
|
|
38
182
|
karaoke_gen/utils/cli_args.py,sha256=4m2EOaxg-bYzXmlSOkpQUoVSi2Q9Xr3VtBZA7z3quBk,18515
|
|
39
183
|
karaoke_gen/utils/gen_cli.py,sha256=5ydiudcIOmNvA-YHe7x6QZepoQGg1dtW4bOkNOBhXhY,44142
|
|
40
184
|
karaoke_gen/utils/remote_cli.py,sha256=sWlbu29fQwoqNtIYUeC9nipux36sFJAUe-aMbGCGv_c,145647
|
|
41
|
-
karaoke_gen/video_background_processor.py,sha256=
|
|
185
|
+
karaoke_gen/video_background_processor.py,sha256=lfMV7h0qLVttpllxRCr6o9dWEJCyaxFRNHPS9ymSdbE,15432
|
|
42
186
|
karaoke_gen/video_generator.py,sha256=B7BQBrjkyvk3L3sctnPXnvr1rzkw0NYx5UCAl0ZiVx0,18464
|
|
43
187
|
lyrics_transcriber/__init__.py,sha256=g9ZbJg9U1qo7XzrC25J3bTKcNzzwUJWDVdi_7-hjcM4,412
|
|
44
188
|
lyrics_transcriber/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -84,10 +228,10 @@ lyrics_transcriber/correction/agentic/prompts/langfuse_prompts.py,sha256=hjQhyY_
|
|
|
84
228
|
lyrics_transcriber/correction/agentic/providers/__init__.py,sha256=PS7C4sKDfa6S9lSo33GXIRamCLsv0Jn7u0GtXuhiRD4,95
|
|
85
229
|
lyrics_transcriber/correction/agentic/providers/base.py,sha256=bExuntMLLInMmWWNzN81_ScWQJhNYbtlF3wZYhlX-qw,1059
|
|
86
230
|
lyrics_transcriber/correction/agentic/providers/circuit_breaker.py,sha256=D3Jg4YHqvy4gzlxfkALa7PztyYQpJb8NwJAonMS0TSI,4694
|
|
87
|
-
lyrics_transcriber/correction/agentic/providers/config.py,sha256=
|
|
231
|
+
lyrics_transcriber/correction/agentic/providers/config.py,sha256=7m4I3imOZyv-6eR8mxuK9vVdqPEDcGuVAkEgdGWu10w,4299
|
|
88
232
|
lyrics_transcriber/correction/agentic/providers/constants.py,sha256=cXLzKTyFVt9q6wQd_gWcv3EZ5Sm27AOAz6NyPapcess,695
|
|
89
233
|
lyrics_transcriber/correction/agentic/providers/health.py,sha256=F8pHY5BQYvylGRDGXUHplcAJooAyiqVLRhBl4kHC1H8,710
|
|
90
|
-
lyrics_transcriber/correction/agentic/providers/langchain_bridge.py,sha256=
|
|
234
|
+
lyrics_transcriber/correction/agentic/providers/langchain_bridge.py,sha256=KrvjM0jY-7xrP65mW5TfsXnqN2BHcUgaDzcmWv1Rh_U,10423
|
|
91
235
|
lyrics_transcriber/correction/agentic/providers/model_factory.py,sha256=90EjVwoKTWo8jXTrroI7GXM9AU-_ACx9g_fHB4vnR2w,9919
|
|
92
236
|
lyrics_transcriber/correction/agentic/providers/response_cache.py,sha256=Byr7fQJsgUMFlsvHeVCxTiFjjnbsg3KIlEmEEtAo-Gw,7047
|
|
93
237
|
lyrics_transcriber/correction/agentic/providers/response_parser.py,sha256=c2KypM-yHbIXXakHV5s-qh8fl8FhssLPVo3pJbyAiG4,4301
|
|
@@ -98,7 +242,7 @@ lyrics_transcriber/correction/agentic/workflows/consensus_workflow.py,sha256=gMu
|
|
|
98
242
|
lyrics_transcriber/correction/agentic/workflows/correction_graph.py,sha256=kgZKnz0h9cG1EfhW7BSSl-kSpQtJrRM_S86kAniXfE4,1815
|
|
99
243
|
lyrics_transcriber/correction/agentic/workflows/feedback_workflow.py,sha256=KsKLD3AP66YYmXfUn-mVZjERYLtU1Zs4a-7CB2zDfas,596
|
|
100
244
|
lyrics_transcriber/correction/anchor_sequence.py,sha256=5tl4Cjiw5UlLbEb1Oy-g3ebKCinXSwohdaCB9-rTMtI,43798
|
|
101
|
-
lyrics_transcriber/correction/corrector.py,sha256=
|
|
245
|
+
lyrics_transcriber/correction/corrector.py,sha256=zqmpwt_LMG1VdijXUIMGr42ny2qIiBqwEIDCslqi2dE,42622
|
|
102
246
|
lyrics_transcriber/correction/feedback/__init__.py,sha256=i1gd0Vb4qvlzZQ3lqA3fJjt288YP7f-MBPwOzZ7Rjh4,68
|
|
103
247
|
lyrics_transcriber/correction/feedback/schemas.py,sha256=OiF_WUqcqiEKIoburYM8kWAIundy82PQE7ImsdP8UCk,4416
|
|
104
248
|
lyrics_transcriber/correction/feedback/store.py,sha256=T4IDzf1eRA9n-wdLLrLyAW1ELYgXwK9RikJgX_B3fN8,8788
|
|
@@ -113,7 +257,7 @@ lyrics_transcriber/correction/handlers/sound_alike.py,sha256=75IvDSfoGUG2xVbYp-x
|
|
|
113
257
|
lyrics_transcriber/correction/handlers/syllables_match.py,sha256=c9_hrJb_xkkqd2SuDjrsSmUF7OMYV65LRzBfAhCHxEY,11217
|
|
114
258
|
lyrics_transcriber/correction/handlers/word_count_match.py,sha256=OltTEs6eYnslxdvak97M5gXDiqXJxMHKk__Q9F_akXc,3595
|
|
115
259
|
lyrics_transcriber/correction/handlers/word_operations.py,sha256=410xhyO9tiqezV5yd5JKwKbxSGwXK9LWHJ7-zNIuOWA,7423
|
|
116
|
-
lyrics_transcriber/correction/operations.py,sha256=
|
|
260
|
+
lyrics_transcriber/correction/operations.py,sha256=rmSxDdlu5H2drbVvR1A9KuaZT60vbHeZKKaB7olD4ns,14659
|
|
117
261
|
lyrics_transcriber/correction/phrase_analyzer.py,sha256=dtO_2LjxnPdHJM7De40mYIdHCkozwhizVVQp5XGO7x0,16962
|
|
118
262
|
lyrics_transcriber/correction/text_utils.py,sha256=7QHK6-PY7Rx1G1E31sWiLBw00mHorRDo-M44KMHFaZs,833
|
|
119
263
|
lyrics_transcriber/frontend/.gitignore,sha256=cR2ofyyWArkna_jByfaWi8gTeMhsKTSoK128PmIw218,262
|
|
@@ -126,8 +270,8 @@ lyrics_transcriber/frontend/e2e/agentic-corrections.spec.ts,sha256=yNynyV8dUfwRJ
|
|
|
126
270
|
lyrics_transcriber/frontend/e2e/fixtures/agentic-correction-data.json,sha256=_h-nI76gPXuqWErpTBrZaTgcc8LNLi6j81t3Wtt--ac,8184
|
|
127
271
|
lyrics_transcriber/frontend/eslint.config.js,sha256=3ADH23ANA4NNBKFy6nCVk65e8bx1DrVd_FIaYNnhuqA,734
|
|
128
272
|
lyrics_transcriber/frontend/index.html,sha256=hcVQvxU1yITMrMS4vVLwn4YwvnlXsfl4XY9UNtXvWAw,1135
|
|
129
|
-
lyrics_transcriber/frontend/package-lock.json,sha256=
|
|
130
|
-
lyrics_transcriber/frontend/package.json,sha256=
|
|
273
|
+
lyrics_transcriber/frontend/package-lock.json,sha256=VxMiVaioQrZDfYaGD544B3vyPFOG75XkKYHz7H4948k,159262
|
|
274
|
+
lyrics_transcriber/frontend/package.json,sha256=WOfX-bgoHvcBtBFVSDOIILMBWzjJd_kvwE11IGYVqUA,1395
|
|
131
275
|
lyrics_transcriber/frontend/playwright.config.ts,sha256=l5aoc_rEbrYxIipTAVbpRER0FL5bAevYtRTT-chGUqA,1523
|
|
132
276
|
lyrics_transcriber/frontend/public/android-chrome-192x192.png,sha256=lg-6aPF5mGLiuG7LyftZk_0RI41srmpA8wj-NkaaQms,17632
|
|
133
277
|
lyrics_transcriber/frontend/public/android-chrome-512x512.png,sha256=x-zuKT3NYsTqAWzhKRTZeD4-0uYoUjqMPZpKTChqNJ8,123447
|
|
@@ -139,44 +283,44 @@ lyrics_transcriber/frontend/public/nomad-karaoke-logo.png,sha256=jTTBFXV6hGJGolZ
|
|
|
139
283
|
lyrics_transcriber/frontend/public/nomad-karaoke-logo.svg,sha256=0LOH346_a-1JeYquMWd1v2A3XMN8zLDBeujfWAOeNYk,9185
|
|
140
284
|
lyrics_transcriber/frontend/src/App.tsx,sha256=STVmqN3xtXambV_5X4M0MNuwYjARHBQfn1cuCqxNGkw,7979
|
|
141
285
|
lyrics_transcriber/frontend/src/api.ts,sha256=GcjbOrlU7EdUpZ7MUPFqE1rtH-ckdw8wHtgyQxWateY,8648
|
|
142
|
-
lyrics_transcriber/frontend/src/components/AIFeedbackModal.tsx,sha256=
|
|
286
|
+
lyrics_transcriber/frontend/src/components/AIFeedbackModal.tsx,sha256=YvJlBP-3udqrOmvwKuMR7FxfIozZq5pVfTYvmhzbnHo,5602
|
|
143
287
|
lyrics_transcriber/frontend/src/components/AddLyricsModal.tsx,sha256=ubJwQewryjUrXwpBkITQNu4POhoUtDbNA93cqa-yJKY,3416
|
|
144
288
|
lyrics_transcriber/frontend/src/components/AgenticCorrectionMetrics.tsx,sha256=Yg6FG0LtrneRfAYeBu3crt_RdN-_o7FojtYhDMDKi0o,8595
|
|
145
289
|
lyrics_transcriber/frontend/src/components/AppHeader.tsx,sha256=5KUVADDv9cAs2WNX9M31utQIYHKMi81unzrCW3j1fl0,2396
|
|
146
290
|
lyrics_transcriber/frontend/src/components/AudioPlayer.tsx,sha256=XOCz0VtGiAIBs1qnCwrAixwfgHbTSGpjEb1jQg8wqzc,5441
|
|
147
|
-
lyrics_transcriber/frontend/src/components/CorrectedWordWithActions.tsx,sha256=
|
|
291
|
+
lyrics_transcriber/frontend/src/components/CorrectedWordWithActions.tsx,sha256=stIGPGCUWGSXAz3Ezny6SS0S9Y8GeFVnpoBeb_oo0sc,5441
|
|
148
292
|
lyrics_transcriber/frontend/src/components/CorrectionAnnotationModal.tsx,sha256=XtF5XNLL2ztm714tXql7rKi2BX4k_bsizpZ_ZCvpu8s,13368
|
|
149
293
|
lyrics_transcriber/frontend/src/components/CorrectionDetailCard.tsx,sha256=Hp-i1iSB3pzrpPH2wIREtEHHaReimBaYi8vcSUUArlg,9512
|
|
150
294
|
lyrics_transcriber/frontend/src/components/CorrectionMetrics.tsx,sha256=CoTZS9Z3pf4lfPrzpQ2hZvLqFvt-IarSGBSCxFxD-y4,6274
|
|
151
295
|
lyrics_transcriber/frontend/src/components/DurationTimelineView.tsx,sha256=d950EHJ52ODkygUkdlO4QNta5Ru8h7DRZIqR8IjOlvQ,10121
|
|
152
|
-
lyrics_transcriber/frontend/src/components/EditActionBar.tsx,sha256=
|
|
153
|
-
lyrics_transcriber/frontend/src/components/EditModal.tsx,sha256=
|
|
154
|
-
lyrics_transcriber/frontend/src/components/EditTimelineSection.tsx,sha256=
|
|
155
|
-
lyrics_transcriber/frontend/src/components/EditWordList.tsx,sha256=
|
|
296
|
+
lyrics_transcriber/frontend/src/components/EditActionBar.tsx,sha256=3kxCGFsIGjoc022Kti95t2ILmSJnufdDINxCGi5JEek,3043
|
|
297
|
+
lyrics_transcriber/frontend/src/components/EditModal.tsx,sha256=2xJVF8MFg49KGabQ3zBifp6oxCo6J2vwJCv072niM3I,25351
|
|
298
|
+
lyrics_transcriber/frontend/src/components/EditTimelineSection.tsx,sha256=nZMJraJgIqhxcKbcOb5dJ6q_Zuo5nB8AsK5V2hxyTrY,22875
|
|
299
|
+
lyrics_transcriber/frontend/src/components/EditWordList.tsx,sha256=eHNK5_yWbksWRR77ELtTuqR1YG4N2QZ6ITFqJmlgJRA,16025
|
|
156
300
|
lyrics_transcriber/frontend/src/components/FileUpload.tsx,sha256=fwn2rMWtMLPTZLREMb3ps4prSf9nzxGwnjmeC6KYsJA,2383
|
|
157
301
|
lyrics_transcriber/frontend/src/components/FindReplaceModal.tsx,sha256=U7duKns4IqNXwbWFbQfdyaswnvkSRpfsU0UG__-Serc,20192
|
|
158
|
-
lyrics_transcriber/frontend/src/components/Header.tsx,sha256=
|
|
159
|
-
lyrics_transcriber/frontend/src/components/LyricsAnalyzer.tsx,sha256=
|
|
160
|
-
lyrics_transcriber/frontend/src/components/LyricsSynchronizer/SyncControls.tsx,sha256=
|
|
161
|
-
lyrics_transcriber/frontend/src/components/LyricsSynchronizer/TimelineCanvas.tsx,sha256=
|
|
302
|
+
lyrics_transcriber/frontend/src/components/Header.tsx,sha256=KpBvFBL_-VnxD8t1a__RIjlBJMy9s3QodzKwnQESyqQ,24092
|
|
303
|
+
lyrics_transcriber/frontend/src/components/LyricsAnalyzer.tsx,sha256=oDAx9ZDhuCo5bVlepVfEkpX1iLgjrAWK8Ctl2iz-o-g,59936
|
|
304
|
+
lyrics_transcriber/frontend/src/components/LyricsSynchronizer/SyncControls.tsx,sha256=AtCYJsGVo8P_miCwS6Enw-LxjlI_EC648dFaFoQGxfE,7386
|
|
305
|
+
lyrics_transcriber/frontend/src/components/LyricsSynchronizer/TimelineCanvas.tsx,sha256=lyX3ju9a6MfQRpiAK2lbGI5Er-ncr5cSHOLR09Sw3Rc,28159
|
|
162
306
|
lyrics_transcriber/frontend/src/components/LyricsSynchronizer/UpcomingWordsBar.tsx,sha256=BXkEeo5yMgHkeOCBcZKqxMb1rspjXH-X5_6X9Hl7z3E,2588
|
|
163
|
-
lyrics_transcriber/frontend/src/components/LyricsSynchronizer/index.tsx,sha256=
|
|
307
|
+
lyrics_transcriber/frontend/src/components/LyricsSynchronizer/index.tsx,sha256=2o_potquFnI5z23lRY3uhjL7s7N6O8K19YIcgGhwy8Y,37669
|
|
164
308
|
lyrics_transcriber/frontend/src/components/MetricsDashboard.tsx,sha256=33XpyHj0siBQivE8vLgliyiwmdsAfnNQh5Py4mnhXi8,1724
|
|
165
309
|
lyrics_transcriber/frontend/src/components/ModeSelectionModal.tsx,sha256=eihGI49r9tKq-AaEtnmVrbiBOoJApWvabaZW4ydmg-4,5302
|
|
166
310
|
lyrics_transcriber/frontend/src/components/ModeSelector.tsx,sha256=HnBAK_gFgNBJLtMC_ESMVdUapDjmqmoLX8pQeyHfpOw,2651
|
|
167
311
|
lyrics_transcriber/frontend/src/components/ModelSelector.tsx,sha256=lfG_B5VAzSfrU0FqJl8XptN6DVt2kSljU96HMXo8mf4,559
|
|
168
312
|
lyrics_transcriber/frontend/src/components/PreviewVideoSection.tsx,sha256=59ZhG5XsxUZ_dkK8BjTQhYmYP5Wv86uRR-xtuwFRK8c,5582
|
|
169
|
-
lyrics_transcriber/frontend/src/components/ReferenceView.tsx,sha256=
|
|
313
|
+
lyrics_transcriber/frontend/src/components/ReferenceView.tsx,sha256=a3CFpbJ8M-kFV3K79xyuo-sfOoC9He_IuXwhIcAOImo,10510
|
|
170
314
|
lyrics_transcriber/frontend/src/components/ReplaceAllLyricsModal.tsx,sha256=pVlqHrSloxXZV_Ib8cbk1invF7WA3uge5b7pnFPe9Pc,12290
|
|
171
315
|
lyrics_transcriber/frontend/src/components/ReviewChangesModal.tsx,sha256=VQg_gBFViAxQu9Z75o6rOsvmH5DZBjKq9FkU8aB_7mI,13790
|
|
172
316
|
lyrics_transcriber/frontend/src/components/SegmentDetailsModal.tsx,sha256=6ME02FkFwCgDAxW49yW260N4vbr80eAJ332Ex811GOo,1643
|
|
173
|
-
lyrics_transcriber/frontend/src/components/TimelineEditor.tsx,sha256=
|
|
174
|
-
lyrics_transcriber/frontend/src/components/TimingOffsetModal.tsx,sha256=
|
|
175
|
-
lyrics_transcriber/frontend/src/components/TranscriptionView.tsx,sha256=
|
|
176
|
-
lyrics_transcriber/frontend/src/components/WordDivider.tsx,sha256=
|
|
317
|
+
lyrics_transcriber/frontend/src/components/TimelineEditor.tsx,sha256=BgTLYUB50CepZOZtKvdsOux7e524BBMjsZOL4x8jjEM,13537
|
|
318
|
+
lyrics_transcriber/frontend/src/components/TimingOffsetModal.tsx,sha256=HuQQ-fffCdsUIg2ClLDB_cUtKNmy8aYt0I4Ii-lwrEE,4770
|
|
319
|
+
lyrics_transcriber/frontend/src/components/TranscriptionView.tsx,sha256=dCETV6IvkMq_6QaZLOdygaO2lmtcrgABVIROxhvDUhE,11805
|
|
320
|
+
lyrics_transcriber/frontend/src/components/WordDivider.tsx,sha256=OCMAQknUnUUVfxFjp4lhIU7Z4GbH3N8FowrGzedDWhM,6739
|
|
177
321
|
lyrics_transcriber/frontend/src/components/shared/components/HighlightedText.tsx,sha256=0WFhL8BlcIrjw1BTakP-UgG0j2pripyqG5LK66a1IOE,21333
|
|
178
322
|
lyrics_transcriber/frontend/src/components/shared/components/SourceSelector.tsx,sha256=FpMn-0i1NFxdIHZN0dxHkWzIIsOEi9CJc_rQMpLyxVw,2031
|
|
179
|
-
lyrics_transcriber/frontend/src/components/shared/components/Word.tsx,sha256=
|
|
323
|
+
lyrics_transcriber/frontend/src/components/shared/components/Word.tsx,sha256=r1srdd2qGEZoRHx304SnZFgCGCkvZUDybpIXuhGCdD8,2834
|
|
180
324
|
lyrics_transcriber/frontend/src/components/shared/constants.ts,sha256=GByG5KFLJOX0iCs80_PLXxZKQ5FBX5Qw0Mg05Xf8Faw,1142
|
|
181
325
|
lyrics_transcriber/frontend/src/components/shared/hooks/useWordClick.ts,sha256=eEgBHiKIWOzFK8eBzBgcQRv7StKpaPchqh3k2kFlwgY,6253
|
|
182
326
|
lyrics_transcriber/frontend/src/components/shared/styles.ts,sha256=J1jCSuRqpk1mOFYAqJudhxeozH-q1bi-dsOibLukBJU,411
|
|
@@ -188,9 +332,9 @@ lyrics_transcriber/frontend/src/components/shared/utils/referenceLineCalculator.
|
|
|
188
332
|
lyrics_transcriber/frontend/src/components/shared/utils/segmentOperations.ts,sha256=yNE-4Da2nL38ofsizQUsPYWl_8Q9Ic2jbB_G3N4X7ps,12559
|
|
189
333
|
lyrics_transcriber/frontend/src/components/shared/utils/timingUtils.ts,sha256=s3xdwGPg6ltZEcQ4AzgpznAR-fLhCTCYW7pfXaD60JY,4597
|
|
190
334
|
lyrics_transcriber/frontend/src/components/shared/utils/wordUtils.ts,sha256=bZbsvEgY3JoI15l4SdB51tHE33OkUxDH-WSG8doLcCQ,721
|
|
191
|
-
lyrics_transcriber/frontend/src/hooks/useManualSync.ts,sha256=
|
|
335
|
+
lyrics_transcriber/frontend/src/hooks/useManualSync.ts,sha256=Y2LWt-QMaZGJ3tcTglfGKjkSVG0Rn8f-u5bmZ0dYfTw,23514
|
|
192
336
|
lyrics_transcriber/frontend/src/main.tsx,sha256=bd2cO-7CSbqQwJ-8N3p_xPJvTFmg5lcJi2I-WgkIb6k,337
|
|
193
|
-
lyrics_transcriber/frontend/src/theme.ts,sha256=
|
|
337
|
+
lyrics_transcriber/frontend/src/theme.ts,sha256=a8SA2ZiGMMobMLDzJo-aed0PHX7JvEythzH-vqiuyxw,13406
|
|
194
338
|
lyrics_transcriber/frontend/src/types/global.d.ts,sha256=NvltPF-n4_1oRLfihD3oHXbdT7txMC8B6fhCgvNY-jk,191
|
|
195
339
|
lyrics_transcriber/frontend/src/types.js,sha256=1DqoH1vIn6o1ng-XyBS6JRVVkf8Hj7ub_UD4x8loMjA,77
|
|
196
340
|
lyrics_transcriber/frontend/src/types.ts,sha256=gQBu13DDbSBUtbI-TwzAlmlIYfOehXar4WuvZ9GkziE,4880
|
|
@@ -199,21 +343,22 @@ lyrics_transcriber/frontend/src/vite-env.d.ts,sha256=ZZlpNvuwQpFfe3SiAPzd5-QQ8yp
|
|
|
199
343
|
lyrics_transcriber/frontend/tsconfig.app.json,sha256=7aUBVcaBqEtmtfQXsbwsgBxSUng06xzQi5t4QCgWQ3E,665
|
|
200
344
|
lyrics_transcriber/frontend/tsconfig.json,sha256=AOS5v1AsNPL3wGc8bt58Ybh8HHpbYrlK91q0KIzaSgs,627
|
|
201
345
|
lyrics_transcriber/frontend/tsconfig.node.json,sha256=oMBhK5xufBrVE7SkbADRxA3pxm8_L9m5YwtCOZSafsc,536
|
|
202
|
-
lyrics_transcriber/frontend/tsconfig.tsbuildinfo,sha256=
|
|
346
|
+
lyrics_transcriber/frontend/tsconfig.tsbuildinfo,sha256=T2GugTx59XFnJbAyrAc5fYs_No-J7UEu5e6bwhPjURI,2281
|
|
203
347
|
lyrics_transcriber/frontend/update_version.js,sha256=PxkqCnsucXnXiIqutsanVcx00Gq4k7pgCYj_uXCa4qw,411
|
|
204
348
|
lyrics_transcriber/frontend/vite.config.d.ts,sha256=S5bdGf0pSdKM6A6RNBKwAm3EIeW_bDHYfHtesRtXU7Q,76
|
|
205
|
-
lyrics_transcriber/frontend/vite.config.js,sha256=
|
|
349
|
+
lyrics_transcriber/frontend/vite.config.js,sha256=o1xE8cu4uP6YROu8mEEcTjpk-J657zCwp_pn1uI0p-c,338
|
|
206
350
|
lyrics_transcriber/frontend/vite.config.ts,sha256=EgliYm4wf_nx1mZOx6xx2Hu4aVAgoJ4jdbtsaXfawqI,306
|
|
207
351
|
lyrics_transcriber/frontend/web_assets/android-chrome-192x192.png,sha256=lg-6aPF5mGLiuG7LyftZk_0RI41srmpA8wj-NkaaQms,17632
|
|
208
352
|
lyrics_transcriber/frontend/web_assets/android-chrome-512x512.png,sha256=x-zuKT3NYsTqAWzhKRTZeD4-0uYoUjqMPZpKTChqNJ8,123447
|
|
209
353
|
lyrics_transcriber/frontend/web_assets/apple-touch-icon.png,sha256=6y5vGra54w5oc8VP6sn2JjoQtN9hWTKn0YPhmdlmfU0,16188
|
|
210
|
-
lyrics_transcriber/frontend/web_assets/assets/index-
|
|
211
|
-
lyrics_transcriber/frontend/web_assets/assets/index-
|
|
354
|
+
lyrics_transcriber/frontend/web_assets/assets/index-BSMgOq4Z.js,sha256=8UgXJyeutxlEldJrhidUyFeAvBHEX4mK13qgnX-icQ4,1469325
|
|
355
|
+
lyrics_transcriber/frontend/web_assets/assets/index-BSMgOq4Z.js.map,sha256=aRWiVagHidZdEKFms-D6RIn5Dfb19z3N5wDeM-cLDak,3104191
|
|
212
356
|
lyrics_transcriber/frontend/web_assets/favicon-16x16.png,sha256=2wy_7ZmVS4d7umByJVHQ37DBB_8xrU9xfT1_konSXQI,604
|
|
213
357
|
lyrics_transcriber/frontend/web_assets/favicon-32x32.png,sha256=6TyrRMIw6G8dpG4_QWVTY8DMxo0bIGzc_9aOJrkiJKM,1297
|
|
214
358
|
lyrics_transcriber/frontend/web_assets/favicon.ico,sha256=ZK7QvdBuZp0QxPkluCW4IKxfleFmFLp1KkG_d5xmx7E,15406
|
|
215
|
-
lyrics_transcriber/frontend/web_assets/index.html,sha256=
|
|
359
|
+
lyrics_transcriber/frontend/web_assets/index.html,sha256=b-bM9WvSjwDmah29GBPqa0RWJq7mpMI-URsJmK0uJgA,1159
|
|
216
360
|
lyrics_transcriber/frontend/web_assets/nomad-karaoke-logo.png,sha256=jTTBFXV6hGJGolZYQ-dIjgQQbMsehk5XGtsllhLrdzg,212641
|
|
361
|
+
lyrics_transcriber/frontend/web_assets/nomad-karaoke-logo.svg,sha256=0LOH346_a-1JeYquMWd1v2A3XMN8zLDBeujfWAOeNYk,9185
|
|
217
362
|
lyrics_transcriber/frontend/yarn.lock,sha256=baEFTcZVRQBGZGUKDvzTutfipBZcmoBQvHlM5wxguuc,130621
|
|
218
363
|
lyrics_transcriber/lyrics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
219
364
|
lyrics_transcriber/lyrics/base_lyrics_provider.py,sha256=SskR5RIKorLcHhNSpHV35_kCnSA027_OOO9E45Jbv88,9168
|
|
@@ -267,13 +412,13 @@ lyrics_transcriber/output/fonts/Zurich_Cn_BT_Bold.ttf,sha256=WNG5LOQ-uGUF_WWT5aQ
|
|
|
267
412
|
lyrics_transcriber/output/fonts/arial.ttf,sha256=NcDzVZ2NtWnjbDEJW4pg1EFkPZX1kTneQOI_ragZuDM,275572
|
|
268
413
|
lyrics_transcriber/output/fonts/georgia.ttf,sha256=fQuyDGMrtZ6BoIhfVzvSFz9x9zIE3pBY_raM4DIicHI,142964
|
|
269
414
|
lyrics_transcriber/output/fonts/verdana.ttf,sha256=lu0UlJyktzks_yNbnEHVXBJTgqu-DA08K53WaJfK4Ms,139640
|
|
270
|
-
lyrics_transcriber/output/generator.py,sha256=
|
|
415
|
+
lyrics_transcriber/output/generator.py,sha256=ZNq_osFXO_rJlZR0KNddq3qAv75V7dmS62PmbXou4X0,14431
|
|
271
416
|
lyrics_transcriber/output/lrc_to_cdg.py,sha256=2pi5tvreD_ADAR4RF5yVwj7OJ4Pf5Zo_EJ7rt4iH3k0,2063
|
|
272
417
|
lyrics_transcriber/output/lyrics_file.py,sha256=_KQyQjCOMIwQdQ0115uEAUIjQWTRmShkSfQuINPKxaw,3741
|
|
273
418
|
lyrics_transcriber/output/plain_text.py,sha256=XARaWcy6MeQeQCUoz0PV_bHoBw5dba-u79bjS7XucnE,3867
|
|
274
419
|
lyrics_transcriber/output/segment_resizer.py,sha256=rrgcQC28eExSAmGnm6ytkF-E-nH4Fe3gjvpaCD0MCmA,17510
|
|
275
420
|
lyrics_transcriber/output/subtitles.py,sha256=TW8IFTedj7-jHDyKKLYk1rFSFmuk8qysrI83Lkc3x-o,19555
|
|
276
|
-
lyrics_transcriber/output/video.py,sha256=
|
|
421
|
+
lyrics_transcriber/output/video.py,sha256=wafiLNuXFoV5Aj_58kWBn3lX-2W8MgM72QpCg9hB_W8,22056
|
|
277
422
|
lyrics_transcriber/review/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
278
423
|
lyrics_transcriber/review/server.py,sha256=pTeTniQWAeiPxH-I0lnPuAWNY9DyJjFvLIS7nUOYkxk,29459
|
|
279
424
|
lyrics_transcriber/storage/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -286,8 +431,8 @@ lyrics_transcriber/transcribers/whisper.py,sha256=YcCB1ic9H6zL1GS0jD0emu8-qlcH0Q
|
|
|
286
431
|
lyrics_transcriber/types.py,sha256=UJjaxhVd2o14AG4G8ToU598p0JeYdiTFjpG38jGCoYQ,27917
|
|
287
432
|
lyrics_transcriber/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
288
433
|
lyrics_transcriber/utils/word_utils.py,sha256=-cMGpj9UV4F6IsoDKAV2i1aiqSO8eI91HMAm_igtVMk,958
|
|
289
|
-
karaoke_gen-0.
|
|
290
|
-
karaoke_gen-0.
|
|
291
|
-
karaoke_gen-0.
|
|
292
|
-
karaoke_gen-0.
|
|
293
|
-
karaoke_gen-0.
|
|
434
|
+
karaoke_gen-0.96.0.dist-info/METADATA,sha256=7yJr3KPMRKSUFYK-U05SfBDGHk9ZpYMGMDmeTPsAf1Q,23115
|
|
435
|
+
karaoke_gen-0.96.0.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
|
|
436
|
+
karaoke_gen-0.96.0.dist-info/entry_points.txt,sha256=xIyLe7K84ZyjO8L0_AmNectz93QjGSs5AkApMtlAd4g,160
|
|
437
|
+
karaoke_gen-0.96.0.dist-info/licenses/LICENSE,sha256=81R_4XwMZDODHD7JcZeUR8IiCU8AD7Ajl6bmwR9tYDk,1074
|
|
438
|
+
karaoke_gen-0.96.0.dist-info/RECORD,,
|
|
@@ -35,10 +35,14 @@ class ProviderConfig:
|
|
|
35
35
|
circuit_breaker_failure_threshold: int = 3
|
|
36
36
|
circuit_breaker_open_seconds: int = 60
|
|
37
37
|
|
|
38
|
-
# Initialization
|
|
39
|
-
#
|
|
40
|
-
initialization_timeout_seconds: float = 30.0 # Model creation
|
|
41
|
-
|
|
38
|
+
# Initialization timeout - fail fast instead of hanging forever
|
|
39
|
+
# This is separate from request_timeout to catch connection establishment issues
|
|
40
|
+
initialization_timeout_seconds: float = 30.0 # Model creation
|
|
41
|
+
|
|
42
|
+
# Parallel processing settings
|
|
43
|
+
# Process multiple gaps concurrently to reduce total correction time
|
|
44
|
+
# Set to 1 to disable parallelism, higher values increase throughput but may hit rate limits
|
|
45
|
+
max_parallel_gaps: int = 5
|
|
42
46
|
|
|
43
47
|
@staticmethod
|
|
44
48
|
def from_env(cache_dir: Optional[str] = None) -> "ProviderConfig":
|
|
@@ -70,7 +74,7 @@ class ProviderConfig:
|
|
|
70
74
|
circuit_breaker_failure_threshold=int(os.getenv("AGENTIC_CIRCUIT_THRESHOLD", "3")),
|
|
71
75
|
circuit_breaker_open_seconds=int(os.getenv("AGENTIC_CIRCUIT_OPEN_SECONDS", "60")),
|
|
72
76
|
initialization_timeout_seconds=float(os.getenv("AGENTIC_INIT_TIMEOUT_SECONDS", "30.0")),
|
|
73
|
-
|
|
77
|
+
max_parallel_gaps=int(os.getenv("AGENTIC_MAX_PARALLEL_GAPS", "5")),
|
|
74
78
|
)
|
|
75
79
|
|
|
76
80
|
def validate_environment(self, logger: Optional[object] = None) -> None:
|
|
@@ -97,7 +97,6 @@ class LangChainBridge(BaseAIProvider):
|
|
|
97
97
|
|
|
98
98
|
# Lazy-initialized chat model
|
|
99
99
|
self._chat_model: Optional[Any] = None
|
|
100
|
-
self._warmed_up: bool = False
|
|
101
100
|
|
|
102
101
|
def name(self) -> str:
|
|
103
102
|
"""Return provider name for logging."""
|
|
@@ -164,13 +163,7 @@ class LangChainBridge(BaseAIProvider):
|
|
|
164
163
|
) from None
|
|
165
164
|
|
|
166
165
|
init_elapsed = time.time() - init_start
|
|
167
|
-
logger.info(f"🤖 Model
|
|
168
|
-
|
|
169
|
-
# Warm up the model to establish connection before real work
|
|
170
|
-
self._warm_up_model()
|
|
171
|
-
|
|
172
|
-
total_elapsed = time.time() - init_start
|
|
173
|
-
logger.info(f"🤖 Model initialization complete in {total_elapsed:.2f}s")
|
|
166
|
+
logger.info(f"🤖 Model initialized in {init_elapsed:.2f}s")
|
|
174
167
|
|
|
175
168
|
except InitializationTimeoutError as e:
|
|
176
169
|
self._circuit_breaker.record_failure(self._model)
|
|
@@ -271,47 +264,4 @@ class LangChainBridge(BaseAIProvider):
|
|
|
271
264
|
|
|
272
265
|
return content
|
|
273
266
|
|
|
274
|
-
def _warm_up_model(self) -> None:
|
|
275
|
-
"""Send a lightweight request to warm up the model connection.
|
|
276
|
-
|
|
277
|
-
This helps establish the REST connection and potentially warm up any
|
|
278
|
-
server-side resources before processing real correction requests.
|
|
279
|
-
The warm-up uses a timeout to fail fast if the service is unresponsive.
|
|
280
|
-
"""
|
|
281
|
-
if self._warmed_up:
|
|
282
|
-
return
|
|
283
|
-
|
|
284
|
-
timeout = self._config.warmup_timeout_seconds
|
|
285
|
-
# Use print with flush=True for visibility when output is redirected
|
|
286
|
-
print(f"🔥 Warming up {self._model} connection (timeout: {timeout}s)...", flush=True)
|
|
287
|
-
logger.info(f"🔥 Warming up {self._model} connection (timeout: {timeout}s)...")
|
|
288
|
-
|
|
289
|
-
warmup_start = time.time()
|
|
290
|
-
try:
|
|
291
|
-
from langchain_core.messages import HumanMessage
|
|
292
|
-
|
|
293
|
-
# Minimal prompt that requires almost no processing
|
|
294
|
-
warm_up_prompt = 'Respond with exactly: {"status":"ready"}'
|
|
295
|
-
|
|
296
|
-
# Use ThreadPoolExecutor for timeout on warm-up call
|
|
297
|
-
with ThreadPoolExecutor(max_workers=1) as executor:
|
|
298
|
-
future = executor.submit(
|
|
299
|
-
self._chat_model.invoke,
|
|
300
|
-
[HumanMessage(content=warm_up_prompt)]
|
|
301
|
-
)
|
|
302
|
-
try:
|
|
303
|
-
future.result(timeout=timeout)
|
|
304
|
-
except FuturesTimeoutError:
|
|
305
|
-
raise TimeoutError(f"Warm-up timed out after {timeout}s") from None
|
|
306
|
-
|
|
307
|
-
elapsed = time.time() - warmup_start
|
|
308
|
-
self._warmed_up = True
|
|
309
|
-
print(f"🔥 Warm-up complete for {self._model} in {elapsed:.2f}s", flush=True)
|
|
310
|
-
logger.info(f"🔥 Warm-up complete for {self._model} in {elapsed:.2f}s")
|
|
311
|
-
except Exception as e:
|
|
312
|
-
elapsed = time.time() - warmup_start
|
|
313
|
-
# Don't fail the actual request if warm-up fails
|
|
314
|
-
# Just log and continue - the real request might still work
|
|
315
|
-
print(f"🔥 Warm-up failed for {self._model} after {elapsed:.2f}s: {e} (continuing anyway)", flush=True)
|
|
316
|
-
logger.warning(f"🔥 Warm-up failed for {self._model} after {elapsed:.2f}s: {e} (continuing anyway)")
|
|
317
267
|
|