videobook 0.0.0-stage → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +54 -0
- package/LICENSE +21 -0
- package/README.md +195 -2
- package/bin/videobook.js +7 -0
- package/dist/acestep/client.js +203 -0
- package/dist/acestep/config.js +62 -0
- package/dist/acestep/errors.js +8 -0
- package/dist/acestep/process.js +175 -0
- package/dist/alive-captions/analyze.js +117 -0
- package/dist/alive-captions/audio.js +179 -0
- package/dist/alive-captions/frames.js +59 -0
- package/dist/alive-captions/model.js +37 -0
- package/dist/alive-captions/schema.js +49 -0
- package/dist/alive-captions/track.js +9 -0
- package/dist/api-key.js +33 -0
- package/dist/app-state.js +56 -0
- package/dist/app.js +257 -0
- package/dist/archive-b2.js +332 -0
- package/dist/archive-store.js +169 -0
- package/dist/artifact-label.js +36 -0
- package/dist/artifact-refs.js +49 -0
- package/dist/asset-tag-extraction.js +169 -0
- package/dist/asset-tags.js +228 -0
- package/dist/asset-usage.js +23 -0
- package/dist/audio-cue.js +71 -0
- package/dist/audio-encoding.js +32 -0
- package/dist/audio-sync-request.js +1 -0
- package/dist/audio-sync.js +223 -0
- package/dist/audio-trim-range.js +31 -0
- package/dist/book-context.js +31 -0
- package/dist/book-manager.js +374 -0
- package/dist/catalog-gc.js +26 -0
- package/dist/chain-executor.js +815 -0
- package/dist/chain-generation.js +115 -0
- package/dist/chain-plan.js +746 -0
- package/dist/chain-step-review.js +60 -0
- package/dist/character-name.js +25 -0
- package/dist/chat-generation-routing.js +73 -0
- package/dist/chat-generation-settings.js +78 -0
- package/dist/chat-models.js +44 -0
- package/dist/chat-prompt-rewrite.js +67 -0
- package/dist/chat-router.js +628 -0
- package/dist/chat-view-actions.js +49 -0
- package/dist/cli/args.js +242 -0
- package/dist/cli/config-command.js +103 -0
- package/dist/cli/doctor-command.js +289 -0
- package/dist/cli/entry.js +2 -0
- package/dist/cli/key-report.js +16 -0
- package/dist/cli/main.js +104 -0
- package/dist/cli/mcp-command.js +88 -0
- package/dist/cli/mcp-relay.js +51 -0
- package/dist/cli/open-browser.js +14 -0
- package/dist/cli/run-command.js +231 -0
- package/dist/cli/serve-command.js +62 -0
- package/dist/cli/setup-command.js +60 -0
- package/dist/cli/stdio-guard.js +8 -0
- package/dist/cold-open-model.js +7 -0
- package/dist/cold-open.js +79 -0
- package/dist/command-reference.js +95 -0
- package/dist/content-store.js +74 -0
- package/dist/cost.js +8 -0
- package/dist/crop-geometry.js +23 -0
- package/dist/dancing-workflow.js +447 -0
- package/dist/data-home.js +44 -0
- package/dist/diagnostics.js +109 -0
- package/dist/dialog-quality.js +34 -0
- package/dist/downloads-dest.js +56 -0
- package/dist/editing-moments.js +194 -0
- package/dist/elevenlabs-audio-extension.js +66 -0
- package/dist/engine.js +54 -0
- package/dist/env-file.js +91 -0
- package/dist/env-secrets.js +148 -0
- package/dist/ffmpeg-binary.js +12 -0
- package/dist/ffmpeg.js +425 -0
- package/dist/ffprobe-binary.js +77 -0
- package/dist/forget-asset.js +216 -0
- package/dist/frame-utils.js +27 -0
- package/dist/generation-credit-error.js +11 -0
- package/dist/generation-input-mentions.js +117 -0
- package/dist/generation-input-policy.js +68 -0
- package/dist/generation-reference-mentions.js +97 -0
- package/dist/goal-characters.js +49 -0
- package/dist/goal-plan-v3.js +273 -0
- package/dist/goal-plan.js +220 -0
- package/dist/goal-planner-prompt.js +28 -0
- package/dist/goal-prompt-budget.js +4 -0
- package/dist/goal-reference-images.js +25 -0
- package/dist/goal-state.js +261 -0
- package/dist/goal-stills.js +153 -0
- package/dist/goal-store.js +144 -0
- package/dist/goal-styles.js +144 -0
- package/dist/goal-v3-runtime.js +157 -0
- package/dist/guides/character_schema_guide.md +70 -0
- package/dist/guides/gpt_image_2_5_prompting_guide.md +21 -0
- package/dist/guides/grok_imagine_prompting_guide.md +72 -0
- package/dist/guides/image_reproduction_guide.md +84 -0
- package/dist/guides/kling_3_0_prompting_guide.md +136 -0
- package/dist/guides/nano_banana_pro_prompting_guide.md +28 -0
- package/dist/guides/seedance_2_prompting_guide.md +172 -0
- package/dist/http-access.js +49 -0
- package/dist/http-byte-range.js +31 -0
- package/dist/hydration.js +56 -0
- package/dist/image-compress.js +77 -0
- package/dist/image-edit-default.js +1 -0
- package/dist/image-edit-models.js +41 -0
- package/dist/image-edit-settings.js +11 -0
- package/dist/image-region-edit.js +32 -0
- package/dist/image-subject-map.js +523 -0
- package/dist/image.js +46 -0
- package/dist/index.js +12 -0
- package/dist/job-deadline.js +60 -0
- package/dist/jobs/_alibaba-upload.js +30 -0
- package/dist/jobs/_audio-chunks.js +31 -0
- package/dist/jobs/_download-into-asset.js +15 -0
- package/dist/jobs/_fal-shared.js +22 -0
- package/dist/jobs/_fal-upload.js +35 -0
- package/dist/jobs/_image-edit-adapter.js +213 -0
- package/dist/jobs/_kie-poll.js +119 -0
- package/dist/jobs/_kie-upload.js +32 -0
- package/dist/jobs/_lease.js +163 -0
- package/dist/jobs/_persist-output.js +19 -0
- package/dist/jobs/_storage-retry.js +21 -0
- package/dist/jobs/_transcribe.js +245 -0
- package/dist/jobs/_translate-transcript.js +270 -0
- package/dist/jobs/analyze-alive-captions.js +10 -0
- package/dist/jobs/analyze-editing-moments.js +104 -0
- package/dist/jobs/analyze-jokes.js +143 -0
- package/dist/jobs/analyze-keyword-placement.js +155 -0
- package/dist/jobs/analyze-music.js +14 -0
- package/dist/jobs/analyze-video.js +282 -0
- package/dist/jobs/apply-cuts.js +83 -0
- package/dist/jobs/apply-sfx.js +107 -0
- package/dist/jobs/archive-clip.js +458 -0
- package/dist/jobs/assemble-goal.js +98 -0
- package/dist/jobs/audio-boost.js +71 -0
- package/dist/jobs/audio-mix.js +161 -0
- package/dist/jobs/backfill-asset-tags.js +144 -0
- package/dist/jobs/burn-watermark.js +316 -0
- package/dist/jobs/change-video-speed.js +176 -0
- package/dist/jobs/clean-video-audio.js +207 -0
- package/dist/jobs/cold-open.js +166 -0
- package/dist/jobs/combine-goal.js +108 -0
- package/dist/jobs/complete-provider-task.js +185 -0
- package/dist/jobs/copy-library-asset.js +33 -0
- package/dist/jobs/cost-estimate-assessment.js +113 -0
- package/dist/jobs/crop-image.js +47 -0
- package/dist/jobs/crop-video.js +71 -0
- package/dist/jobs/describe-image.js +181 -0
- package/dist/jobs/detect-scenes.js +33 -0
- package/dist/jobs/doctor-fix.js +100 -0
- package/dist/jobs/download-video.js +427 -0
- package/dist/jobs/enqueue-search-index.js +24 -0
- package/dist/jobs/even-split.js +122 -0
- package/dist/jobs/export-sequence.js +365 -0
- package/dist/jobs/extend-audio.js +229 -0
- package/dist/jobs/extract-audio.js +72 -0
- package/dist/jobs/extract-frame.js +58 -0
- package/dist/jobs/extract-notebook-audio.js +82 -0
- package/dist/jobs/extract-notebook-frame.js +93 -0
- package/dist/jobs/extract-video-clip.js +8 -0
- package/dist/jobs/extract-video-poster.js +55 -0
- package/dist/jobs/extract-waveform.js +25 -0
- package/dist/jobs/finish-goal.js +255 -0
- package/dist/jobs/forget-asset.js +11 -0
- package/dist/jobs/generate-acestep-cover.js +219 -0
- package/dist/jobs/generate-media.js +70 -0
- package/dist/jobs/image-subjects.js +1059 -0
- package/dist/jobs/index.js +18 -0
- package/dist/jobs/inject-first-frame.js +175 -0
- package/dist/jobs/isolate-vocals.js +69 -0
- package/dist/jobs/kie-paygate.js +177 -0
- package/dist/jobs/label-music-sections.js +5 -0
- package/dist/jobs/osg-placement.js +135 -0
- package/dist/jobs/pad-video.js +72 -0
- package/dist/jobs/plan-goal.js +97 -0
- package/dist/jobs/post-record.js +21 -0
- package/dist/jobs/post-to-x.js +21 -0
- package/dist/jobs/prepare-search-reference.js +190 -0
- package/dist/jobs/prepare-temporal-search.js +16 -0
- package/dist/jobs/process-audio.js +67 -0
- package/dist/jobs/process-image.js +58 -0
- package/dist/jobs/process-upload.js +166 -0
- package/dist/jobs/process-video.js +438 -0
- package/dist/jobs/register-all.js +161 -0
- package/dist/jobs/relayout-notebook.js +78 -0
- package/dist/jobs/remove-sound.js +299 -0
- package/dist/jobs/render-project.js +380 -0
- package/dist/jobs/render-qr-outro.js +138 -0
- package/dist/jobs/render-timeline.js +283 -0
- package/dist/jobs/repair-search-indexes.js +42 -0
- package/dist/jobs/replace-video-audio.js +64 -0
- package/dist/jobs/restore-archive-clip.js +53 -0
- package/dist/jobs/reverse-video.js +53 -0
- package/dist/jobs/rewrite-script.js +173 -0
- package/dist/jobs/run-notebook.js +3335 -0
- package/dist/jobs/semantic-index.js +797 -0
- package/dist/jobs/smooth-scene-concat.js +257 -0
- package/dist/jobs/splice-video.js +280 -0
- package/dist/jobs/split-video.js +127 -0
- package/dist/jobs/suggest-cuts.js +149 -0
- package/dist/jobs/suggest-sfx.js +135 -0
- package/dist/jobs/sync-video-to-audio.js +329 -0
- package/dist/jobs/tag-asset.js +266 -0
- package/dist/jobs/task-failure.js +16 -0
- package/dist/jobs/timewarp-video.js +152 -0
- package/dist/jobs/transcribe-video-audio.js +117 -0
- package/dist/jobs/transcribe.js +35 -0
- package/dist/jobs/translate-transcript.js +55 -0
- package/dist/jobs/trim-audio.js +133 -0
- package/dist/jobs/trim-video.js +291 -0
- package/dist/jobs/xai-paygate.js +26 -0
- package/dist/keyword-placement-cache.js +74 -0
- package/dist/lazy-render.js +142 -0
- package/dist/library-browse.js +78 -0
- package/dist/lightning-defaults.js +206 -0
- package/dist/load-env.js +12 -0
- package/dist/local-search-models.js +206 -0
- package/dist/local-upload.js +318 -0
- package/dist/logger.js +69 -0
- package/dist/media/adapters/alibaba.js +20 -0
- package/dist/media/adapters/elevenlabs.js +58 -0
- package/dist/media/adapters/fal.js +45 -0
- package/dist/media/adapters/index.js +26 -0
- package/dist/media/adapters/kie.js +120 -0
- package/dist/media/adapters/pending.js +21 -0
- package/dist/media/adapters/types.js +5 -0
- package/dist/media/adapters/xai.js +18 -0
- package/dist/media/catalog.js +236 -0
- package/dist/media/complete.js +191 -0
- package/dist/media/cost.js +45 -0
- package/dist/media/descriptor.js +157 -0
- package/dist/media/endpoints.js +11 -0
- package/dist/media/frame-options.js +18 -0
- package/dist/media/insert-video-timing.js +17 -0
- package/dist/media/json-schema.js +75 -0
- package/dist/media/legacy-task-types.js +129 -0
- package/dist/media/listing.js +24 -0
- package/dist/media/model-id.js +14 -0
- package/dist/media/preview.js +86 -0
- package/dist/media/prompt-dialects.js +65 -0
- package/dist/media/ref-fields.js +106 -0
- package/dist/media/refs.js +131 -0
- package/dist/media/request.js +188 -0
- package/dist/media/types.js +6 -0
- package/dist/media/wire.js +161 -0
- package/dist/media-library.js +535 -0
- package/dist/media-output-path.js +33 -0
- package/dist/multyculty-workflow.js +757 -0
- package/dist/notebook-action-catalog.js +608 -0
- package/dist/notebook-cell-outputs.js +726 -0
- package/dist/notebook-credit-retry.js +45 -0
- package/dist/notebook-fixtures.js +8 -0
- package/dist/notebook-generation-contract.js +77 -0
- package/dist/notebook-generation-controls.js +145 -0
- package/dist/notebook-goal-layout.js +40 -0
- package/dist/notebook-graph.js +37 -0
- package/dist/notebook-image-edit.js +84 -0
- package/dist/notebook-initial-generation-prompt.js +222 -0
- package/dist/notebook-live-analysis.js +941 -0
- package/dist/notebook-media-ops.js +579 -0
- package/dist/notebook-mutations.js +20 -0
- package/dist/notebook-placement.js +41 -0
- package/dist/notebook-provider-failure.js +87 -0
- package/dist/notebook-published-post.js +26 -0
- package/dist/notebook-reference-resolver.js +227 -0
- package/dist/notebook-relayout.js +270 -0
- package/dist/notebook-run-plan.js +519 -0
- package/dist/notebook-shots.js +162 -0
- package/dist/notebook-workflow.js +856 -0
- package/dist/one-password.js +200 -0
- package/dist/openai-intelligence.js +99 -0
- package/dist/original-media-file.js +12 -0
- package/dist/osg-assets.js +36 -0
- package/dist/osg-placement-cache.js +64 -0
- package/dist/osg-settings.js +27 -0
- package/dist/paid-tools.js +22 -0
- package/dist/platform-guidance.js +26 -0
- package/dist/posts/dropbox-auth.js +91 -0
- package/dist/posts/dropbox-upload.js +132 -0
- package/dist/posts/icloud-drive.js +134 -0
- package/dist/posts/icloud-status.js +64 -0
- package/dist/posts/post-contract.js +2 -0
- package/dist/posts/post-copy-format.js +43 -0
- package/dist/posts/post-copy.js +193 -0
- package/dist/posts/post-folder.js +18 -0
- package/dist/posts/post-metrics.js +119 -0
- package/dist/posts/post-store.js +340 -0
- package/dist/posts/x-post-target.js +43 -0
- package/dist/preview-payload.js +90 -0
- package/dist/prompt-surfaces.js +22 -0
- package/dist/provider-prompt-transform.js +77 -0
- package/dist/provider-status-link.js +21 -0
- package/dist/provider-task-record.js +78 -0
- package/dist/provider-task-status.js +47 -0
- package/dist/provider-usage.js +294 -0
- package/dist/queue.js +810 -0
- package/dist/reference-video-duration.js +17 -0
- package/dist/remotion/BlurFillVideo.js +51 -0
- package/dist/remotion/KeywordGraphicsOverlay.js +68 -0
- package/dist/remotion/OsgOverlay.js +30 -0
- package/dist/remotion/QrOutroComposition.js +47 -0
- package/dist/remotion/RenderComposition.js +11 -0
- package/dist/remotion/browser.js +59 -0
- package/dist/remotion/constants.js +35 -0
- package/dist/remotion/index.js +66 -0
- package/dist/remotion/keyword-graphics.js +151 -0
- package/dist/remotion/keyword-placement.js +182 -0
- package/dist/remotion/osg-spec.js +198 -0
- package/dist/remotion/public/qr-outro-impact.wav +0 -0
- package/dist/remotion/qr-outro-audio.js +1 -0
- package/dist/remotion/qr-outro-spec.js +211 -0
- package/dist/remotion/shared-bundle.js +37 -0
- package/dist/remotion/subtitles/AliveCaptions.js +83 -0
- package/dist/remotion/subtitles/Highlight.js +58 -0
- package/dist/remotion/subtitles/Impact.js +67 -0
- package/dist/remotion/subtitles/SubtitleOverlay.js +9 -0
- package/dist/remotion/subtitles/alive-layout.js +321 -0
- package/dist/remotion/subtitles/alive-types.js +17 -0
- package/dist/remotion/subtitles/chunker.js +68 -0
- package/dist/remotion/subtitles/segments.js +42 -0
- package/dist/remotion/subtitles/styles.js +4 -0
- package/dist/remotion/subtitles/types.js +1 -0
- package/dist/remotion/util.js +18 -0
- package/dist/remotion-cancellation.js +15 -0
- package/dist/rename-helpers.js +204 -0
- package/dist/rhythm/analyze.js +128 -0
- package/dist/rhythm/contract.js +14 -0
- package/dist/rhythm/draft-model.js +19 -0
- package/dist/rhythm/energy.js +133 -0
- package/dist/rhythm/fft.js +44 -0
- package/dist/rhythm/model.js +71 -0
- package/dist/rhythm/music-analysis.js +124 -0
- package/dist/rhythm/music-draft.js +261 -0
- package/dist/rhythm/onset.js +101 -0
- package/dist/rhythm/run-worker.js +51 -0
- package/dist/rhythm/score.js +47 -0
- package/dist/rhythm/section-labels.js +168 -0
- package/dist/rhythm/sequence-rhythm.js +67 -0
- package/dist/rhythm/synthesize.js +103 -0
- package/dist/rhythm/timing.js +98 -0
- package/dist/rhythm/track.js +320 -0
- package/dist/rhythm/visual-fit.js +4 -0
- package/dist/rhythm/worker.js +25 -0
- package/dist/scene-detect.js +200 -0
- package/dist/scene-transition.js +12 -0
- package/dist/scheduled-posts.js +200 -0
- package/dist/search-index-coverage.js +13 -0
- package/dist/search-index-media.js +71 -0
- package/dist/search-reference-store.js +60 -0
- package/dist/search-scoring.js +17 -0
- package/dist/serve.js +125 -0
- package/dist/server-lock.js +143 -0
- package/dist/server.js +42 -0
- package/dist/srt.js +16 -0
- package/dist/tag-backfill-state.js +121 -0
- package/dist/tag-settings.js +30 -0
- package/dist/tag-vocabulary.js +237 -0
- package/dist/test-queue-cleanup.js +1 -0
- package/dist/time-parse.js +50 -0
- package/dist/timeline-helpers.js +554 -0
- package/dist/timewarp.js +87 -0
- package/dist/tools/_image-inputs.js +9 -0
- package/dist/tools/_media-refs.js +84 -0
- package/dist/tools/_shared.js +59 -0
- package/dist/tools/_suggest-shared.js +279 -0
- package/dist/tools/add-timeline-audio.js +73 -0
- package/dist/tools/alive-captions.js +157 -0
- package/dist/tools/analyze-jokes.js +56 -0
- package/dist/tools/analyze-video.js +66 -0
- package/dist/tools/animate-keywords.js +217 -0
- package/dist/tools/api-status.js +42 -0
- package/dist/tools/application-commands.js +34 -0
- package/dist/tools/apply-cuts.js +112 -0
- package/dist/tools/apply-sfx.js +152 -0
- package/dist/tools/apply-watermark.js +670 -0
- package/dist/tools/archive-clip.js +74 -0
- package/dist/tools/asset-history.js +61 -0
- package/dist/tools/asset-manifest.js +24 -0
- package/dist/tools/asset-tags.js +151 -0
- package/dist/tools/assign-slot.js +97 -0
- package/dist/tools/audio-boost.js +107 -0
- package/dist/tools/audio-mix.js +121 -0
- package/dist/tools/book-usage.js +16 -0
- package/dist/tools/chain.js +136 -0
- package/dist/tools/change-video-speed.js +105 -0
- package/dist/tools/chat-history.js +5 -0
- package/dist/tools/chat.js +848 -0
- package/dist/tools/clean-video-audio.js +97 -0
- package/dist/tools/clear-failed-tasks.js +66 -0
- package/dist/tools/cold-open.js +114 -0
- package/dist/tools/command-plan.js +1680 -0
- package/dist/tools/commands.js +1666 -0
- package/dist/tools/concat-images.js +236 -0
- package/dist/tools/connect-service.js +55 -0
- package/dist/tools/copy-file-to-clipboard.js +58 -0
- package/dist/tools/create-character.js +114 -0
- package/dist/tools/create-qart.js +253 -0
- package/dist/tools/create-qr-outro.js +149 -0
- package/dist/tools/create-qrbtf.js +215 -0
- package/dist/tools/create-watermark.js +97 -0
- package/dist/tools/crop-asset.js +18 -0
- package/dist/tools/crop-image.js +120 -0
- package/dist/tools/crop-video.js +97 -0
- package/dist/tools/delete-asset.js +104 -0
- package/dist/tools/describe-image.js +69 -0
- package/dist/tools/detect-scenes.js +44 -0
- package/dist/tools/doctor.js +126 -0
- package/dist/tools/download-video.js +114 -0
- package/dist/tools/duplicate-asset.js +184 -0
- package/dist/tools/edit-timeline.js +59 -0
- package/dist/tools/editing-moments.js +105 -0
- package/dist/tools/estimate-cost.js +171 -0
- package/dist/tools/even-split.js +295 -0
- package/dist/tools/export-asset-file.js +22 -0
- package/dist/tools/export-asset.js +140 -0
- package/dist/tools/export-sequence.js +250 -0
- package/dist/tools/export-to-downloads.js +54 -0
- package/dist/tools/export-transcript-srt.js +79 -0
- package/dist/tools/extend-audio.js +100 -0
- package/dist/tools/extract-audio.js +174 -0
- package/dist/tools/extract-frame.js +108 -0
- package/dist/tools/extract-notebook-audio.js +173 -0
- package/dist/tools/extract-notebook-frame.js +160 -0
- package/dist/tools/extract-video-clip.js +101 -0
- package/dist/tools/generate-media.js +157 -0
- package/dist/tools/generation-payload.js +48 -0
- package/dist/tools/get-timeline.js +12 -0
- package/dist/tools/get-watermark-config.js +38 -0
- package/dist/tools/goal.js +644 -0
- package/dist/tools/image-subjects.js +711 -0
- package/dist/tools/index.js +323 -0
- package/dist/tools/inject-first-frame.js +154 -0
- package/dist/tools/invert-image.js +70 -0
- package/dist/tools/isolate-vocals.js +66 -0
- package/dist/tools/list-assets.js +98 -0
- package/dist/tools/list-cell-generations.js +225 -0
- package/dist/tools/list-elevenlabs-voices.js +163 -0
- package/dist/tools/log-wrapper.js +29 -0
- package/dist/tools/make-cover-song.js +95 -0
- package/dist/tools/mark-asset-seen.js +23 -0
- package/dist/tools/media-library.js +245 -0
- package/dist/tools/move-timeline-audio.js +35 -0
- package/dist/tools/music-analysis.js +60 -0
- package/dist/tools/music-draft.js +29 -0
- package/dist/tools/pad-video.js +87 -0
- package/dist/tools/post-record.js +83 -0
- package/dist/tools/post.js +168 -0
- package/dist/tools/prompt-history.js +164 -0
- package/dist/tools/provider-key-status.js +248 -0
- package/dist/tools/qrbtf-render.js +849 -0
- package/dist/tools/read-asset-metadata.js +26 -0
- package/dist/tools/read-file-at-commit.js +29 -0
- package/dist/tools/read-transcript.js +41 -0
- package/dist/tools/reconcile-project-work.js +1452 -0
- package/dist/tools/recover-asset.js +28 -0
- package/dist/tools/remove-sound.js +72 -0
- package/dist/tools/remove-timeline-audio.js +34 -0
- package/dist/tools/remove-timeline-slot.js +40 -0
- package/dist/tools/rename-all.js +434 -0
- package/dist/tools/rename-asset.js +34 -0
- package/dist/tools/render-settings.js +47 -0
- package/dist/tools/render-timeline.js +120 -0
- package/dist/tools/render.js +384 -0
- package/dist/tools/reorder-character-images.js +45 -0
- package/dist/tools/replace-video-audio.js +133 -0
- package/dist/tools/restore-archive-clips.js +209 -0
- package/dist/tools/restore-asset-version.js +37 -0
- package/dist/tools/retry-generation.js +54 -0
- package/dist/tools/reverse-video.js +74 -0
- package/dist/tools/rewrite-prompt.js +388 -0
- package/dist/tools/rewrite-script.js +67 -0
- package/dist/tools/schema-from-apicity.js +66 -0
- package/dist/tools/search-archive.js +150 -0
- package/dist/tools/semantic-search.js +1214 -0
- package/dist/tools/sequence-rhythm.js +43 -0
- package/dist/tools/set-character-metadata.js +84 -0
- package/dist/tools/set-env-secret.js +40 -0
- package/dist/tools/set-osg.js +143 -0
- package/dist/tools/show-folder.js +37 -0
- package/dist/tools/smooth-scene-concat.js +122 -0
- package/dist/tools/splice-video.js +149 -0
- package/dist/tools/split-video.js +202 -0
- package/dist/tools/suggest-cuts.js +45 -0
- package/dist/tools/suggest-sfx.js +43 -0
- package/dist/tools/sync-video-to-audio.js +115 -0
- package/dist/tools/tag-backfill.js +177 -0
- package/dist/tools/timewarp-video.js +85 -0
- package/dist/tools/tool-def.js +1 -0
- package/dist/tools/tool-json-schema.js +116 -0
- package/dist/tools/transcribe.js +90 -0
- package/dist/tools/translate-subtitles.js +59 -0
- package/dist/tools/trim-audio.js +139 -0
- package/dist/tools/trim-video.js +168 -0
- package/dist/tools/update-script.js +25 -0
- package/dist/tools/update-timeline-audio.js +40 -0
- package/dist/tools/upload-file.js +41 -0
- package/dist/tools/verify-x-mentions.js +141 -0
- package/dist/tools/video-editing-command-contract.js +291 -0
- package/dist/tools/video-source-reference.js +30 -0
- package/dist/tools/video-time-input.js +18 -0
- package/dist/tools/videobook-domain.js +2021 -0
- package/dist/tools/wait-for-asset-ready.js +143 -0
- package/dist/tools/workspace-actions.js +54 -0
- package/dist/transcript-projection.js +202 -0
- package/dist/transcript-srt.js +33 -0
- package/dist/upload.js +76 -0
- package/dist/usage-providers.js +25 -0
- package/dist/video-analysis-projection.js +46 -0
- package/dist/video-poster.js +33 -0
- package/dist/video-proxy.js +99 -0
- package/dist/vision-regions.js +111 -0
- package/dist/voice-actions.js +90 -0
- package/dist/voice-audio.js +55 -0
- package/dist/voice-config.js +122 -0
- package/dist/voice-continuation.js +54 -0
- package/dist/voice-contract.js +1 -0
- package/dist/voice-http.js +145 -0
- package/dist/voice-reply-progress.js +55 -0
- package/dist/voice-session.js +992 -0
- package/dist/watermark-badge.js +259 -0
- package/dist/watermark-config.js +111 -0
- package/dist/watermark-handle-position.js +55 -0
- package/dist/watermark-platform.js +15 -0
- package/dist/watermark-timing.js +16 -0
- package/dist/workspace-action-catalog.js +315 -0
- package/dist/workspace-action-contract.js +21 -0
- package/dist/workspace-action-groups.js +98 -0
- package/dist/workspace-action-surfaces.js +7 -0
- package/dist/x/account.js +88 -0
- package/dist/x/authenticated-handle.js +30 -0
- package/dist/x/oauth-flow.js +191 -0
- package/dist/x/post-contract.js +1 -0
- package/dist/x/post-metadata.js +44 -0
- package/dist/x/post-to-x.js +456 -0
- package/dist/x/published-post-cell.js +90 -0
- package/dist/x/x-tokens.js +69 -0
- package/dist/ytdlp-binary.js +65 -0
- package/dist/zod-slots.js +334 -0
- package/package.json +84 -4
- package/ui/assets/alive-captions-BWb5nLKj.css +1 -0
- package/ui/assets/alive-captions-DPEr1nKM.js +1 -0
- package/ui/assets/confirm-bodies-D8ouHXKy.js +1 -0
- package/ui/assets/confirm-bodies-DrMhaXC6.css +1 -0
- package/ui/assets/fullscreen-B7nw4YbE.js +1 -0
- package/ui/assets/goal-ui-DK-xTCK0.js +2 -0
- package/ui/assets/goal-ui-DXdUM2KF.css +1 -0
- package/ui/assets/index-DzPAnCUj.css +1 -0
- package/ui/assets/index-kS1905s5.js +37 -0
- package/ui/assets/inspector-MlzQbTVo.js +1 -0
- package/ui/assets/jobs-ui-CoinOWx0.js +1 -0
- package/ui/assets/music-video-Cbe80kmQ.js +1 -0
- package/ui/assets/music-video-DPaiKKEq.css +1 -0
- package/ui/assets/ui-Oirr9VOf.css +1 -0
- package/ui/assets/ui-xo_Y1yQg.js +2 -0
- package/ui/assets/vendor-D2rfiZ5j.css +1 -0
- package/ui/assets/vendor-DfTCWgKm.js +19 -0
- package/ui/assets/vendor-flow-BXbeWxW7.js +7 -0
- package/ui/assets/vendor-flow-BnuhLJ6X.css +1 -0
- package/ui/assets/vendor-icons-CGqhCIXV.js +1 -0
- package/ui/assets/vendor-mcp-BTlEJcHV.js +67 -0
- package/ui/assets/vendor-react-Dj7D1fD4.js +9 -0
- package/ui/assets/vendor-remotion-CH1HXrlc.js +95 -0
- package/ui/assets/videobook-Qlp9HQFu.js +20 -0
- package/ui/favicon.svg +8 -0
- package/ui/index.html +126 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{c as z,j as t,a as q,b as vn}from"./vendor-react-Dj7D1fD4.js";import{d8 as Sn,bC as Ge,d9 as Nn,bN as In,bF as An,ck as dt,bO as zt,da as Cn,db as Gt,dc as Ut,dd as kn,de as Bt,df as at,dg as qe,dh as me,di as wn,dj as We,dk as Ft,dl as Mn,dm as Qe,dn as $n,dp as Pn,dq as Tn,an as Ot,am as Rn,dr as Ln,ds as Dn,dt as _n,bz as En,du as Gn,dv as Fn,dw as On,dx as Vn,dy as zn,dz as Jt,ad as Je,dA as Un,dB as Bn,dC as Jn,dD as Kn,dE as qn,dF as Hn,aj as Wn,dG as Qn}from"./videobook-Qlp9HQFu.js";import{M as Xn,A as gt,b as Yn,R as Zn,D as es,c as ts,d as ns,e as ss,C as is,a as os,f as rs,u as as,N as ls,g as Kt,h as cs,i as ds,j as ps}from"./ui-xo_Y1yQg.js";import{n as Xe,b as Fe}from"./vendor-DfTCWgKm.js";import{G as us}from"./confirm-bodies-D8ouHXKy.js";import{H as qt,j as ms,i as Ee,c as Ht,e as fs,an as hs,B as Wt,a4 as gs,$ as Qt,m as ys,C as Xt,X as xs,J as js,al as pt,ao as bs,R as vs,a3 as Ss,ad as Ns}from"./vendor-icons-CGqhCIXV.js";const Is=new Set(["extract_audio","split_video","prompt","analyze","concat","splice"]);function Yt(i){return Is.has(i)}const As=["prompt","provider","model","operation","tool","startSeconds","endSeconds","overlap","frameMode","timestampSeconds","generationMode"];function He(i){return typeof i=="number"&&Number.isFinite(i)?String(i):"0"}function Cs(i,e=[]){const n=i.inputs?.generationSettings,r=!n||typeof n!="object"||Array.isArray(n)?{}:Object.fromEntries(Object.entries(n).filter(s=>{const a=s[1];return typeof a=="string"||typeof a=="number"||typeof a=="boolean"}));return{...Object.fromEntries(e.flatMap(s=>{const a=i.inputs?.[s.name];return typeof a=="string"||typeof a=="number"||typeof a=="boolean"?[[s.name,a]]:[]})),...r}}function Ze(i,e=[]){const n=i.inputs?.frameMode;return{prompt:i.prompt??"",provider:i.provider??"",model:i.model??"",operation:i.operation??"",tool:i.tool??"",startSeconds:He(i.inputs?.startSeconds),endSeconds:He(i.inputs?.endSeconds),overlap:He(i.inputs?.overlap),frameMode:n==="time"||n==="last"?n:"first",timestampSeconds:He(i.inputs?.timestampSeconds),generationMode:typeof i.inputs?.generationMode=="string"?i.inputs.generationMode:"",generationSettings:Cs(i,e)}}function ks(i,e,n=[]){const r=Bn(i,e,n);if(!r||!Ge(i.type))return Ze(i);const o=We(e,i.type,r),s=Ze(i,o?.controls);return{...s,...r,generationMode:o?Qe(o,n,s.generationMode):s.generationMode}}function ws(i,e,n=[]){const r=Ze(i,n);return As.some(o=>e[o]!==r[o])||JSON.stringify(e.generationSettings)!==JSON.stringify(r.generationSettings)}function lt(i){if(!i.trim())return!1;const e=Number(i);return Number.isFinite(e)&&e>=0}function Ms(i,e){return Ge(i.type)?!!(e.provider.trim()&&e.model.trim()&&e.operation.trim()&&e.tool.trim()):i.type==="split_video"?lt(e.startSeconds)&<(e.endSeconds):i.type==="splice"&&e.operation==="splice_video"?lt(e.overlap):!0}function Zt(i,e,n=[]){const r={...i.inputs??{}};delete r.generationMode,delete r.generationSettings;for(const o of n)delete r[o.name];return{...r,...e.generationMode?{generationMode:e.generationMode}:{},...Object.keys(e.generationSettings).length>0?{generationSettings:e.generationSettings}:{}}}function Vt(i,e,n=[],r=n){const o=Ze(i,n),s={};return e.prompt!==o.prompt&&(s.prompt=e.prompt),Yt(i.type)||(e.provider!==o.provider&&(s.provider=e.provider||void 0),e.model!==o.model&&(s.model=e.model||void 0),e.operation!==o.operation&&(s.operation=e.operation||void 0),e.tool!==o.tool&&(s.tool=e.tool||void 0)),Ge(i.type)&&(e.generationMode!==o.generationMode||JSON.stringify(e.generationSettings)!==JSON.stringify(o.generationSettings))&&(s.inputs=Zt(i,e,r)),i.type==="split_video"&&(e.startSeconds!==o.startSeconds||e.endSeconds!==o.endSeconds)&&(s.inputs={...i.inputs??{},startSeconds:Number(e.startSeconds),endSeconds:Number(e.endSeconds)}),i.type==="splice"&&e.operation==="splice_video"&&e.overlap!==o.overlap&&(s.inputs={...i.inputs??{},overlap:Number(e.overlap)}),s}function $s(i){return i.type==="extract_audio"?["video"]:i.type==="split_video"?["video","analysis"]:i.type==="analysis"?["result"]:i.type==="image"?["media","segment"]:i.type==="audio"||i.type==="video"?["media"]:[]}function Ps(i,e){const n=e.filter(r=>r.target===i.id).map(r=>r.targetInput);return[...new Set([...$s(i),...n])]}function ct(i){return i.type==="video"||i.type==="generate_video"||i.type==="concat"||i.type==="splice"}function Ts(i,e){return i||e>0}function en(i){if(i.classList.remove("inspector-source-picker-above"),!i.open)return;const e=i.querySelector("summary");e?.scrollIntoView({block:"nearest",inline:"nearest"});const n=i.querySelector(".inspector-source-picker-options"),r=i.closest(".inspector-media-content")??i.closest(".inspector-analysis-body")??i.closest(".inspector-body");if(!n||!r)return;const o=r.getBoundingClientRect(),s=(e??i).getBoundingClientRect(),a=o.bottom-s.bottom,c=s.top-o.top,d=Math.min(252,n.scrollHeight||160);a<d&&c>a&&i.classList.add("inspector-source-picker-above")}function Rs(i,e,n){return n.id===i.id?!1:i.type==="analysis"?e==="result"&&n.type==="analyze":i.type==="extract_audio"?e==="video"&&ct(n):i.type==="split_video"?e==="analysis"?n.type==="analysis":e==="video"?ct(n):!1:i.type==="prompt"&&e==="analysis"?n.type==="analysis":i.type==="audio"&&e==="media"?n.type==="extract_audio"||n.type==="generate_audio":i.type==="video"&&e==="media"?n.type==="split_video":i.type==="image"&&e==="media"?n.type==="generate_image":i.type==="image"&&e==="segment"?ct(n):!0}function Ls(i){const e=z.c(6),{address:n,onOpen:r}=i,o=`Open @${n} fullscreen`,s=`Open @${n} fullscreen`;let a,c;e[0]===Symbol.for("react.memo_cache_sentinel")?(a=t.jsx(Qt,{size:14}),c=t.jsx("span",{children:"Fullscreen"}),e[0]=a,e[1]=c):(a=e[0],c=e[1]);let d;return e[2]!==r||e[3]!==o||e[4]!==s?(d=t.jsx("div",{className:"inspector-media-actions",role:"group","aria-label":"Video preview actions",children:t.jsx("span",{className:"inspector-media-action-slot",children:t.jsxs("button",{type:"button",className:"inspector-fullscreen-button","aria-label":o,title:s,onClick:r,children:[a,c]})})}),e[2]=r,e[3]=o,e[4]=s,e[5]=d):d=e[5],d}function Ds(i){const e=z.c(18),{address:n,previewUrl:r,onOpen:o,onEdit:s}=i,a=`Open @${n} fullscreen`,c=`@${n}`;let d;e[0]!==r||e[1]!==c?(d=t.jsx("img",{src:r,alt:c},r),e[0]=r,e[1]=c,e[2]=d):d=e[2];let l;e[3]!==o||e[4]!==a||e[5]!==d?(l=t.jsx("button",{type:"button",className:"inspector-cell-media-open","aria-label":a,onClick:o,children:d}),e[3]=o,e[4]=a,e[5]=d,e[6]=l):l=e[6];const u=`Edit @${n} image`,f=`Edit @${n} image`;let m;e[7]===Symbol.for("react.memo_cache_sentinel")?(m=t.jsx(gs,{size:13}),e[7]=m):m=e[7];let h;e[8]!==s||e[9]!==u||e[10]!==f?(h=t.jsxs("button",{type:"button",className:"inspector-edit-button","aria-label":u,title:f,onClick:s,children:[m,"Edit"]}),e[8]=s,e[9]=u,e[10]=f,e[11]=h):h=e[11];let j;e[12]===Symbol.for("react.memo_cache_sentinel")?(j=t.jsxs("span",{className:"inspector-cell-media-zoom","aria-hidden":"true",children:[t.jsx(Qt,{size:13}),"Full"]}),e[12]=j):j=e[12];let y;e[13]!==h?(y=t.jsxs("span",{className:"inspector-cell-media-overlay",children:[h,j]}),e[13]=h,e[14]=y):y=e[14];let N;return e[15]!==y||e[16]!==l?(N=t.jsxs("div",{className:"inspector-cell-media-frame",children:[l,y]}),e[15]=y,e[16]=l,e[17]=N):N=e[17],N}function _s(i){const e=z.c(11),{address:n,waveform:r,mediaUrl:o}=i,[s,a]=q.useState(0);let c;e[0]!==s||e[1]!==r?(c=t.jsx("span",{className:"inspector-audio-waveform",children:r.length>0?t.jsx(Kt,{peaks:r,progress:s}):t.jsx(cs,{})}),e[0]=s,e[1]=r,e[2]=c):c=e[2];const d=`@${n} audio`;let l,u;e[3]===Symbol.for("react.memo_cache_sentinel")?(l=h=>{const j=h.currentTarget;a(Number.isFinite(j.duration)&&j.duration>0?Math.min(1,Math.max(0,j.currentTime/j.duration)):0)},u=()=>a(0),e[3]=l,e[4]=u):(l=e[3],u=e[4]);let f;e[5]!==o||e[6]!==d?(f=t.jsx("audio",{src:o,"aria-label":d,controls:!0,preload:"metadata",onTimeUpdate:l,onEnded:u},o),e[5]=o,e[6]=d,e[7]=f):f=e[7];let m;return e[8]!==c||e[9]!==f?(m=t.jsxs("div",{className:"inspector-audio-stage",children:[c,f]}),e[8]=c,e[9]=f,e[10]=m):m=e[10],m}function ut(i){const e=z.c(34),{asset:n,address:r,allowFullscreen:o,overlayMetadata:s,onOpenFullscreen:a}=i,c=s===void 0?!0:s,d=q.useRef(null),l=n.mediaUrl,u=n.thumbnailUrl??l,f=n.type==="video"||n.type==="final",m=n.type==="audio",h=n.type==="image",j=o&&(h||f);let y;e[0]!==n||e[1]!==a?(y=I=>{const k=I===void 0?"view":I;d.current?.pause(),a(n,k)},e[0]=n,e[1]=a,e[2]=y):y=e[2];const N=y;if(!u)return null;const b=`inspector-cell-preview${m?" inspector-cell-preview-audio":""}`;let v;e[3]!==r||e[4]!==n.thumbnailUrl||e[5]!==n.waveform||e[6]!==j||e[7]!==m||e[8]!==h||e[9]!==f||e[10]!==l||e[11]!==N||e[12]!==u?(v=f&&l?t.jsx("video",{ref:d,src:n.thumbnailUrl?l:`${l}#t=0.1`,poster:n.thumbnailUrl??void 0,controls:!0,controlsList:"nofullscreen nodownload noremoteplayback",disablePictureInPicture:!0,playsInline:!0,preload:"metadata"},l):m&&l?t.jsx(_s,{address:r,waveform:n.waveform??[],mediaUrl:l}):h&&j?t.jsx(Ds,{address:r,previewUrl:u,onOpen:()=>N("view"),onEdit:()=>N("edit")}):t.jsx("img",{src:u,alt:`@${r}`},u),e[3]=r,e[4]=n.thumbnailUrl,e[5]=n.waveform,e[6]=j,e[7]=m,e[8]=h,e[9]=f,e[10]=l,e[11]=N,e[12]=u,e[13]=v):v=e[13];let S;e[14]!==n.duration||e[15]!==n.height||e[16]!==n.type||e[17]!==n.width||e[18]!==m||e[19]!==f||e[20]!==c?(S=!m&&c&&t.jsx(ls,{className:"inspector-cell-metadata",width:n.width,height:n.height,durationSeconds:f?n.duration:null,fallbackLabel:n.type.toUpperCase()}),e[14]=n.duration,e[15]=n.height,e[16]=n.type,e[17]=n.width,e[18]=m,e[19]=f,e[20]=c,e[21]=S):S=e[21];let x;e[22]!==v||e[23]!==S?(x=t.jsxs("div",{className:"inspector-cell-media",children:[v,S]}),e[22]=v,e[23]=S,e[24]=x):x=e[24];let A;e[25]!==r||e[26]!==j||e[27]!==f||e[28]!==N?(A=j&&f&&t.jsx(Ls,{address:r,onOpen:()=>N("view")}),e[25]=r,e[26]=j,e[27]=f,e[28]=N,e[29]=A):A=e[29];let C;return e[30]!==b||e[31]!==x||e[32]!==A?(C=t.jsxs("section",{className:b,"aria-label":"Cell output media",children:[x,A]}),e[30]=b,e[31]=x,e[32]=A,e[33]=C):C=e[33],C}function Es(i,e,n){const r=new Map;for(const o of n??[])r.set(o.artifactId,o);for(const o of e?.values()??[])r.set(o.artifactId,o);return i&&r.set(i.artifactId,i),r}function mt(i){return i.type.replaceAll("_"," ")}function ft(i){const e=z.c(3),{cell:n,asset:r}=i;let o;return e[0]!==r||e[1]!==n.type?(o=t.jsx(gt,{asset:r,kindHint:n.type}),e[0]=r,e[1]=n.type,e[2]=o):o=e[2],o}function Gs(i){const e=z.c(73),{input:n,candidates:r,selectedCellId:o,cellAssets:s,busy:a,onSelect:c}=i,d=q.useRef(null);let l,u,f,m,h,j,y,N,b,v,S,x,A;if(e[0]!==a||e[1]!==r||e[2]!==s||e[3]!==n||e[4]!==c||e[5]!==o){let U;e[19]!==o?(U=O=>O.id===o,e[19]=o,e[20]=U):U=e[20];const _=r.find(U);let B;e[21]!==c||e[22]!==o?(B=O=>{d.current?.removeAttribute("open"),O!==o&&c(O)},e[21]=c,e[22]=o,e[23]=B):B=e[23],l=B,x=d,A="inspector-source-picker",f=Os,m=Fs,e[24]===Symbol.for("react.memo_cache_sentinel")?(h=O=>{O.key==="Escape"&&(O.preventDefault(),d.current?.removeAttribute("open"),d.current?.querySelector("summary")?.focus())},e[24]=h):h=e[24],u="preserve";let J;e[25]!==n?(J=n.replaceAll("_"," "),e[25]=n,e[26]=J):J=e[26],j=`${J} input`;let te;e[27]!==n?(te=n.replaceAll("_"," "),e[27]=n,e[28]=te):te=e[28],y=`${te} input`,N=a,b=a?-1:0,e[29]!==a?(v=O=>{a&&O.preventDefault()},e[29]=a,e[30]=v):v=e[30],S=_?t.jsxs(t.Fragment,{children:[t.jsx(ft,{cell:_,asset:s?.get(_.id)}),t.jsxs("span",{className:"inspector-source-picker-copy",children:[t.jsx("strong",{children:Fe(_.slot)}),t.jsx("small",{children:mt(_)})]})]}):t.jsxs(t.Fragment,{children:[t.jsx("span",{className:"inspector-source-thumb inspector-source-thumb-empty","aria-hidden":"true",children:t.jsx(pt,{size:15})}),t.jsxs("span",{className:"inspector-source-picker-copy",children:[t.jsx("strong",{children:"No source"}),t.jsx("small",{children:"Optional input"})]})]}),e[0]=a,e[1]=r,e[2]=s,e[3]=n,e[4]=c,e[5]=o,e[6]=l,e[7]=u,e[8]=f,e[9]=m,e[10]=h,e[11]=j,e[12]=y,e[13]=N,e[14]=b,e[15]=v,e[16]=S,e[17]=x,e[18]=A}else l=e[6],u=e[7],f=e[8],m=e[9],h=e[10],j=e[11],y=e[12],N=e[13],b=e[14],v=e[15],S=e[16],x=e[17],A=e[18];let C;e[31]===Symbol.for("react.memo_cache_sentinel")?(C=t.jsx(Xt,{className:"inspector-source-picker-chevron",size:15,"aria-hidden":"true"}),e[31]=C):C=e[31];let I;e[32]!==u||e[33]!==j||e[34]!==y||e[35]!==N||e[36]!==b||e[37]!==v||e[38]!==S?(I=t.jsxs("summary",{"data-composer-focus":u,"aria-label":j,title:y,"aria-disabled":N,tabIndex:b,onClick:v,children:[S,C]}),e[32]=u,e[33]=j,e[34]=y,e[35]=N,e[36]=b,e[37]=v,e[38]=S,e[39]=I):I=e[39];let k;e[40]!==n?(k=n.replaceAll("_"," "),e[40]=n,e[41]=k):k=e[41];const R=`${k} input options`,T=o===null;let $;e[42]!==l?($=()=>l(null),e[42]=l,e[43]=$):$=e[43];let g;e[44]===Symbol.for("react.memo_cache_sentinel")?(g=t.jsx("span",{className:"inspector-source-thumb inspector-source-thumb-empty","aria-hidden":"true",children:t.jsx(pt,{size:15})}),e[44]=g):g=e[44];let L;e[45]===Symbol.for("react.memo_cache_sentinel")?(L=t.jsxs("span",{className:"inspector-source-picker-copy",children:[t.jsx("strong",{children:"No source"}),t.jsx("small",{children:"Disconnect input"})]}),e[45]=L):L=e[45];let D;e[46]!==a||e[47]!==T||e[48]!==$?(D=t.jsxs("button",{type:"button",role:"option","aria-selected":T,disabled:a,onClick:$,children:[g,L]}),e[46]=a,e[47]=T,e[48]=$,e[49]=D):D=e[49];let G;if(e[50]!==a||e[51]!==r||e[52]!==s||e[53]!==l||e[54]!==o){let U;e[56]!==a||e[57]!==s||e[58]!==l||e[59]!==o?(U=_=>t.jsxs("button",{type:"button",role:"option","aria-selected":_.id===o,disabled:a,onClick:()=>l(_.id),children:[t.jsx(ft,{cell:_,asset:s?.get(_.id)}),t.jsxs("span",{className:"inspector-source-picker-copy",children:[t.jsx("strong",{children:Fe(_.slot)}),t.jsx("small",{children:mt(_)})]})]},_.id),e[56]=a,e[57]=s,e[58]=l,e[59]=o,e[60]=U):U=e[60],G=r.map(U),e[50]=a,e[51]=r,e[52]=s,e[53]=l,e[54]=o,e[55]=G}else G=e[55];let W;e[61]!==R||e[62]!==D||e[63]!==G?(W=t.jsxs("div",{className:"inspector-source-picker-options",role:"listbox","aria-label":R,children:[D,G]}),e[61]=R,e[62]=D,e[63]=G,e[64]=W):W=e[64];let F;return e[65]!==f||e[66]!==m||e[67]!==h||e[68]!==I||e[69]!==W||e[70]!==x||e[71]!==A?(F=t.jsxs("details",{ref:x,className:A,onToggle:f,onBlur:m,onKeyDown:h,children:[I,W]}),e[65]=f,e[66]=m,e[67]=h,e[68]=I,e[69]=W,e[70]=x,e[71]=A,e[72]=F):F=e[72],F}function Fs(i){i.currentTarget.contains(i.relatedTarget)||i.currentTarget.removeAttribute("open")}function Os(i){en(i.currentTarget)}function Ye(i){return i==="input"?"input":i==="first_frame"?"first frame input":i==="last_frame"?"last frame input":i==="replace_audio"?"replacement audio":`${i.replaceAll("_"," ")} input`}function Vs(i){const e=z.c(41),{attachments:n,cells:r,cellAssets:o,busy:s,onAttach:a}=i,c=q.useRef(null);let d,l,u,f,m,h,j,y,N,b;if(e[0]!==n||e[1]!==s||e[2]!==o||e[3]!==r||e[4]!==a){const x=new Map(r.map(Bs)),A=g=>{c.current?.removeAttribute("open"),a(g.targetInput,g.sourceCellId)};h=c,j="inspector-source-picker inspector-attach-source-picker",y=Us,N=zs,e[15]===Symbol.for("react.memo_cache_sentinel")?(b=g=>{g.key==="Escape"&&(g.preventDefault(),c.current?.removeAttribute("open"),c.current?.querySelector("summary")?.focus())},e[15]=b):b=e[15];const C=s?-1:0;let I;e[16]!==s?(I=g=>{s&&g.preventDefault()},e[16]=s,e[17]=I):I=e[17];let k;e[18]===Symbol.for("react.memo_cache_sentinel")?(k=t.jsx("span",{className:"inspector-source-thumb inspector-source-thumb-empty","aria-hidden":"true",children:t.jsx(ys,{size:15})}),e[18]=k):k=e[18];let R;e[19]===Symbol.for("react.memo_cache_sentinel")?(R=t.jsx("strong",{children:"Attach media"}),e[19]=R):R=e[19];let T;e[20]!==n.length?(T=t.jsxs("span",{className:"inspector-source-picker-copy",children:[R,t.jsxs("small",{children:[n.length," available"]})]}),e[20]=n.length,e[21]=T):T=e[21];let $;e[22]===Symbol.for("react.memo_cache_sentinel")?($=t.jsx(Xt,{className:"inspector-source-picker-chevron",size:15,"aria-hidden":"true"}),e[22]=$):$=e[22],e[23]!==s||e[24]!==C||e[25]!==I||e[26]!==T?(l=t.jsxs("summary",{"data-composer-focus":"preserve","aria-label":"Attach media input",title:"Attach media input","aria-disabled":s,tabIndex:C,onClick:I,children:[k,T,$]}),e[23]=s,e[24]=C,e[25]=I,e[26]=T,e[27]=l):l=e[27],d="inspector-source-picker-options",u="listbox",f="Media input options",m=n.map(g=>{const L=x.get(g.sourceCellId);return L?t.jsxs("button",{type:"button",role:"option","aria-selected":"false",disabled:s,onClick:()=>A(g),children:[t.jsx(ft,{cell:L,asset:o?.get(L.id)}),t.jsxs("span",{className:"inspector-source-picker-copy",children:[t.jsx("strong",{children:Fe(L.slot)}),t.jsxs("small",{children:[mt(L)," · ",Ye(g.target)]})]})]},`${g.sourceCellId}:${g.target}`):null}),e[0]=n,e[1]=s,e[2]=o,e[3]=r,e[4]=a,e[5]=d,e[6]=l,e[7]=u,e[8]=f,e[9]=m,e[10]=h,e[11]=j,e[12]=y,e[13]=N,e[14]=b}else d=e[5],l=e[6],u=e[7],f=e[8],m=e[9],h=e[10],j=e[11],y=e[12],N=e[13],b=e[14];let v;e[28]!==d||e[29]!==u||e[30]!==f||e[31]!==m?(v=t.jsx("div",{className:d,role:u,"aria-label":f,children:m}),e[28]=d,e[29]=u,e[30]=f,e[31]=m,e[32]=v):v=e[32];let S;return e[33]!==l||e[34]!==v||e[35]!==h||e[36]!==j||e[37]!==y||e[38]!==N||e[39]!==b?(S=t.jsxs("details",{ref:h,className:j,onToggle:y,onBlur:N,onKeyDown:b,children:[l,v]}),e[33]=l,e[34]=v,e[35]=h,e[36]=j,e[37]=y,e[38]=N,e[39]=b,e[40]=S):S=e[40],S}function zs(i){i.currentTarget.contains(i.relatedTarget)||i.currentTarget.removeAttribute("open")}function Us(i){en(i.currentTarget)}function Bs(i){return[i.id,i]}function Js(i,e,n,r){const o=new Map(e.map(s=>[s.id,s]));return me(i,e,n,r).flatMap(s=>{const a=o.get(s.sourceCellId);return a?[{token:s.token,cell:a}]:[]})}function yt(i){const e=z.c(37),{cell:n,cells:r,edges:o,busy:s,cellAssets:a,attachments:c,onSetInput:d}=i;let l;e[0]!==c?(l=c===void 0?[]:c,e[0]=c,e[1]=l):l=e[1];const u=l;let f,m,h,j,y;if(e[2]!==u||e[3]!==s||e[4]!==n||e[5]!==a||e[6]!==r||e[7]!==o||e[8]!==d){y=Symbol.for("react.early_return_sentinel");e:{const S=Ps(n,o);let x;e[14]!==n||e[15]!==r||e[16]!==o?(x=I=>{const k=o.find(g=>g.target===n.id&&g.targetInput===I),R=o.filter(g=>g.target!==n.id||g.targetInput!==I),T=k?r.find(g=>g.id===k.source):void 0,$=r.filter(g=>Rs(n,I,g)&&Hn(r,R,g.id,n.id)!==null||g.id===k?.source).sort(Ks);return Ts(!!k,$.length)?[{input:I,edge:k,sourceCell:T,candidates:$,inputLabel:I==="input"?"input":`${I.replaceAll("_"," ")} input`}]:[]},e[14]=n,e[15]=r,e[16]=o,e[17]=x):x=e[17];const A=S.flatMap(x);if(A.length===0&&u.length===0){y=null;break e}h="inspector-input-sources",e[18]===Symbol.for("react.memo_cache_sentinel")?(j=t.jsx("h3",{children:"Inputs"}),e[18]=j):j=e[18],f="inspector-input-source-rows";let C;e[19]!==s||e[20]!==a||e[21]!==d?(C=I=>{const{input:k,edge:R,sourceCell:T,candidates:$,inputLabel:g}=I;return t.jsxs("div",{className:R?"inspector-input-source-row connected":"inspector-input-source-row",children:[t.jsx(Gs,{input:k,candidates:$,selectedCellId:R?.source??null,cellAssets:a,busy:s,onSelect:L=>d(k,L)}),R&&t.jsx("button",{type:"button",className:"inspector-input-remove-button","aria-label":`Remove ${T?Fe(T.slot):"source"} from ${g}`,title:"Remove input",disabled:s,onClick:()=>{d(k,null)},children:t.jsx(xs,{size:15,"aria-hidden":"true"})})]},k)},e[19]=s,e[20]=a,e[21]=d,e[22]=C):C=e[22],m=A.map(C)}e[2]=u,e[3]=s,e[4]=n,e[5]=a,e[6]=r,e[7]=o,e[8]=d,e[9]=f,e[10]=m,e[11]=h,e[12]=j,e[13]=y}else f=e[9],m=e[10],h=e[11],j=e[12],y=e[13];if(y!==Symbol.for("react.early_return_sentinel"))return y;let N;e[23]!==u||e[24]!==s||e[25]!==a||e[26]!==r||e[27]!==d?(N=u.length>0&&t.jsx("div",{className:"inspector-input-source-row",children:t.jsx(Vs,{attachments:u,cells:r,cellAssets:a,busy:s,onAttach:d})}),e[23]=u,e[24]=s,e[25]=a,e[26]=r,e[27]=d,e[28]=N):N=e[28];let b;e[29]!==f||e[30]!==m||e[31]!==N?(b=t.jsxs("div",{className:f,children:[m,N]}),e[29]=f,e[30]=m,e[31]=N,e[32]=b):b=e[32];let v;return e[33]!==h||e[34]!==j||e[35]!==b?(v=t.jsxs("section",{className:h,children:[j,b]}),e[33]=h,e[34]=j,e[35]=b,e[36]=v):v=e[36],v}function Ks(i,e){return i.slot.row-e.slot.row||i.slot.column-e.slot.column}function qs(i){const e=z.c(10),{busy:n,deleting:r,onDelete:o}=i;let s;e[0]!==o?(s=()=>{o()},e[0]=o,e[1]=s):s=e[1];const a=n||r;let c;e[2]===Symbol.for("react.memo_cache_sentinel")?(c=t.jsx(pt,{size:13}),e[2]=c):c=e[2];const d=r?"Deleting…":"Delete cell";let l;e[3]!==d?(l=t.jsx("span",{children:d}),e[3]=d,e[4]=l):l=e[4];let u;return e[5]!==r||e[6]!==s||e[7]!==a||e[8]!==l?(u=t.jsxs("button",{type:"button",className:"danger-button inspector-delete-cell-button","aria-busy":r,title:"Delete cell",onClick:s,disabled:a,children:[c,l]}),e[5]=r,e[6]=s,e[7]=a,e[8]=l,e[9]=u):u=e[9],u}function xt(i){const e=z.c(4),{busy:n,deleting:r,onDelete:o}=i;let s;return e[0]!==n||e[1]!==r||e[2]!==o?(s=t.jsx("section",{className:"inspector-cell-actions inspector-compact-actions","aria-label":"Cell cleanup actions",children:t.jsx(qs,{busy:n,deleting:r,onDelete:o})}),e[0]=n,e[1]=r,e[2]=o,e[3]=s):s=e[3],s}function tn(i){const e=z.c(23),{artifactIds:n,availableArtifactIds:r,currentArtifactId:o,selectedArtifactId:s,outputLabel:a,onSelect:c}=i,d=n.indexOf(s)+1,l=s===o,u=`${a} versions`;let f;e[0]===Symbol.for("react.memo_cache_sentinel")?(f=t.jsxs("span",{className:"inspector-audio-version-label",children:[t.jsx(js,{size:13,"aria-hidden":"true"}),"Version"]}),e[0]=f):f=e[0];const m=`${a} version`;let h;e[1]!==c?(h=x=>c(x.target.value),e[1]=c,e[2]=h):h=e[2];let j;if(e[3]!==n||e[4]!==r||e[5]!==o){let x;e[7]!==n.length||e[8]!==r||e[9]!==o?(x=(A,C)=>t.jsxs("option",{value:A,disabled:!r.has(A),children:["Version ",C+1," of ",n.length,A===o?" · current":""]},A),e[7]=n.length,e[8]=r,e[9]=o,e[10]=x):x=e[10],j=n.map(x),e[3]=n,e[4]=r,e[5]=o,e[6]=j}else j=e[6];let y;e[11]!==s||e[12]!==m||e[13]!==h||e[14]!==j?(y=t.jsx("select",{value:s,"aria-label":m,onChange:h,children:j}),e[11]=s,e[12]=m,e[13]=h,e[14]=j,e[15]=y):y=e[15];const N=`inspector-audio-version-state${l?" current":""}`,b=l?"Current output":`Viewing version ${d}`;let v;e[16]!==N||e[17]!==b?(v=t.jsx("span",{className:N,"aria-live":"polite",children:b}),e[16]=N,e[17]=b,e[18]=v):v=e[18];let S;return e[19]!==u||e[20]!==y||e[21]!==v?(S=t.jsxs("section",{className:"inspector-audio-versions","aria-label":u,children:[f,y,v]}),e[19]=u,e[20]=y,e[21]=v,e[22]=S):S=e[22],S}function Hs(i){const e=z.c(22),{bookId:n,assetTools:r,asset:o}=i,s=r??null;let a;e[0]!==o.artifactId||e[1]!==n?(a={bookId:n,assetId:o.artifactId},e[0]=o.artifactId,e[1]=n,e[2]=a):a=e[2];const c=o.tags??null;let d;e[3]!==s||e[4]!==a||e[5]!==c?(d={call:s,target:a,tags:c},e[3]=s,e[4]=a,e[5]=c,e[6]=d):d=e[6];const l=Qn(d);let u,f,m,h;e[7]!==l?(u=y=>{l.addTag(y)},f=y=>{l.removeTag(y)},m=y=>{l.restoreTag(y)},h=y=>{l.loadSuggestions(y)},e[7]=l,e[8]=u,e[9]=f,e[10]=m,e[11]=h):(u=e[8],f=e[9],m=e[10],h=e[11]);let j;return e[12]!==l.busy||e[13]!==l.canEdit||e[14]!==l.error||e[15]!==l.suggestions||e[16]!==l.tags||e[17]!==u||e[18]!==f||e[19]!==m||e[20]!==h?(j=t.jsx(ds,{tags:l.tags,busy:l.busy,error:l.error,canEdit:l.canEdit,suggestions:l.suggestions,onAdd:u,onRemove:f,onRestore:m,onQueryChange:h}),e[12]=l.busy,e[13]=l.canEdit,e[14]=l.error,e[15]=l.suggestions,e[16]=l.tags,e[17]=u,e[18]=f,e[19]=m,e[20]=h,e[21]=j):j=e[21],j}function Ws(i){const e=z.c(6),{asset:n}=i,r=n?.thumbnailUrl??n?.mediaUrl??null;if(n?.type!=="audio"&&r){let a;return e[0]!==r?(a=t.jsx("img",{src:r,alt:""}),e[0]=r,e[1]=a):a=e[1],a}let o;e[2]!==n?.waveform?(o=(n?.waveform?.length??0)>0&&t.jsx(Kt,{peaks:n?.waveform??[],progress:0}),e[2]=n?.waveform,e[3]=o):o=e[3];let s;return e[4]!==o?(s=t.jsx("span",{className:"inspector-media-version-blank",children:o}),e[4]=o,e[5]=s):s=e[5],s}function Qs(i){const e=z.c(20),{kind:n,artifactIds:r,assetsById:o,currentArtifactId:s,selectedArtifactId:a,onSelect:c}=i;let d;e[0]!==n?(d=Ut(n),e[0]=n,e[1]=d):d=e[1];const l=`${d} versions`;let u;e[2]===Symbol.for("react.memo_cache_sentinel")?(u=t.jsx("span",{className:"inspector-media-field-label",children:"Versions"}),e[2]=u):u=e[2];let f;if(e[3]!==r||e[4]!==o||e[5]!==s||e[6]!==c||e[7]!==a){let j;e[9]!==r.length||e[10]!==o||e[11]!==s||e[12]!==c||e[13]!==a?(j=(y,N)=>{const b=o.get(y),v=y===s,S=y===a;return t.jsx("li",{children:t.jsxs("button",{type:"button",className:S?"inspector-media-version selected":"inspector-media-version",disabled:!b,"aria-current":S?"true":void 0,"aria-label":`Version ${N+1} of ${r.length}${v?", current output":""}`,onClick:()=>c(y),children:[t.jsx(Ws,{asset:b}),t.jsxs("span",{className:"inspector-media-version-label",children:["v",N+1,v&&t.jsx("span",{className:"inspector-media-version-now",children:"now"})]})]})},y)},e[9]=r.length,e[10]=o,e[11]=s,e[12]=c,e[13]=a,e[14]=j):j=e[14],f=r.map(j),e[3]=r,e[4]=o,e[5]=s,e[6]=c,e[7]=a,e[8]=f}else f=e[8];let m;e[15]!==f?(m=t.jsx("ul",{className:"inspector-media-version-list",children:f}),e[15]=f,e[16]=m):m=e[16];let h;return e[17]!==l||e[18]!==m?(h=t.jsxs("section",{className:"inspector-media-versions","aria-label":l,children:[u,m]}),e[17]=l,e[18]=m,e[19]=h):h=e[19],h}function Xs(i){const e=z.c(9),{kind:n,address:r,asset:o,inputs:s}=i;let a,c;if(e[0]!==r||e[1]!==o||e[2]!==s||e[3]!==n){const l=Un(n,r,o,s).filter(Zs);a="inspector-media-facts",c=l.map(Ys),e[0]=r,e[1]=o,e[2]=s,e[3]=n,e[4]=a,e[5]=c}else a=e[4],c=e[5];let d;return e[6]!==a||e[7]!==c?(d=t.jsx("dl",{className:a,children:c}),e[6]=a,e[7]=c,e[8]=d):d=e[8],d}function Ys(i){return t.jsxs("div",{children:[t.jsx("dt",{children:i.term}),t.jsx("dd",{children:i.value})]},i.key)}function Zs(i){return i.key!=="address"}function ei(i){const e=z.c(10),{kind:n,failed:r}=i;let o;e[0]!==n?(o=Bt(n,null),e[0]=n,e[1]=o):o=e[1];const s=String(o);let a;e[2]!==s?(a={"--media-aspect":s},e[2]=s,e[3]=a):a=e[3];const c=a,d=r?"inspector-media-placeholder failed":"inspector-media-placeholder",l=r?"Failed":"Generating…";let u;e[4]!==l?(u=t.jsx("span",{className:"inspector-media-placeholder-label",children:l}),e[4]=l,e[5]=u):u=e[5];let f;return e[6]!==c||e[7]!==d||e[8]!==u?(f=t.jsx("div",{className:d,style:c,children:u}),e[6]=c,e[7]=d,e[8]=u,e[9]=f):f=e[9],f}function nn(i){const e=z.c(15),{producer:n,onSelectSource:r}=i;let o;e[0]===Symbol.for("react.memo_cache_sentinel")?(o=t.jsx("span",{className:"inspector-media-field-label",children:"From"}),e[0]=o):o=e[0];let s;e[1]!==r||e[2]!==n.id?(s=()=>r?.(n.id),e[1]=r,e[2]=n.id,e[3]=s):s=e[3];let a;e[4]!==n.slot?(a=Fe(n.slot),e[4]=n.slot,e[5]=a):a=e[5];let c;e[6]!==a?(c=t.jsx("span",{className:"inspector-generation-from-tag",children:a}),e[6]=a,e[7]=c):c=e[7];const d=n.type==="generate_image"?"image":"video";let l;e[8]!==d?(l=t.jsxs("span",{children:["Generate ",d]}),e[8]=d,e[9]=l):l=e[9];let u;e[10]===Symbol.for("react.memo_cache_sentinel")?(u=t.jsx(bs,{size:12,"aria-hidden":"true"}),e[10]=u):u=e[10];let f;return e[11]!==s||e[12]!==c||e[13]!==l?(f=t.jsxs("div",{className:"inspector-media-from",children:[o,t.jsxs("button",{type:"button",className:"inspector-generation-from-link",onClick:s,children:[c,l,u]})]}),e[11]=s,e[12]=c,e[13]=l,e[14]=f):f=e[14],f}function ti(i){if(!i)return null;const e=i.width&&i.height?`${i.width}×${i.height}`:null,n=i.duration?Je(i.duration):null;return[i.type,e,n].filter(Boolean).join(" · ")||null}function ni(i){const e=z.c(5),{asset:n,kindHint:r}=i,o=n?.thumbnailUrl??(n?.type==="image"?n.mediaUrl:null),s=!o&&n?.mediaUrl&&(n.type==="video"||n.type==="final")?n.mediaUrl:null;let a;return e[0]!==n||e[1]!==o||e[2]!==r||e[3]!==s?(a=t.jsx("span",{className:"inspector-generation-input-thumb",children:o?t.jsx("img",{src:o,alt:"",loading:"lazy",decoding:"async"}):s?t.jsx("video",{src:`${s}#t=0.1`,muted:!0,playsInline:!0,preload:"metadata","aria-hidden":"true"}):t.jsx(gt,{asset:n,kindHint:r})}),e[0]=n,e[1]=o,e[2]=r,e[3]=s,e[4]=a):a=e[4],a}function si(i){const e=z.c(18),{producerId:n,cells:r,edges:o,cellAssets:s,onSelectSource:a}=i;let c,d,l,u,f;if(e[0]!==s||e[1]!==r||e[2]!==o||e[3]!==a||e[4]!==n){f=Symbol.for("react.early_return_sentinel");e:{const j=me(n,r,o);if(j.length===0){f=null;break e}const y=new Map(r.map(ii));l="inspector-media-generation-inputs",e[10]===Symbol.for("react.memo_cache_sentinel")?(u=t.jsx("span",{className:"inspector-media-field-label",children:"Inputs"}),e[10]=u):u=e[10],c="inspector-generation-input-cards",d=j.map(N=>{const b=y.get(N.sourceCellId),v=b?s?.get(b.id):void 0,S=ti(v);return t.jsx("li",{children:t.jsxs("button",{type:"button",className:"inspector-generation-input-card",onClick:()=>b&&a?.(b.id),children:[t.jsx(ni,{asset:v,kindHint:b?.type}),t.jsxs("span",{className:"inspector-generation-input-text",children:[t.jsxs("span",{children:[t.jsxs("code",{children:["@",N.token]}),b&&t.jsxs("span",{className:"inspector-generation-input-source",children:[" ← ",Fe(b.slot)]})]}),S&&t.jsx("span",{className:"inspector-generating-muted",children:S})]})]})},N.token)})}e[0]=s,e[1]=r,e[2]=o,e[3]=a,e[4]=n,e[5]=c,e[6]=d,e[7]=l,e[8]=u,e[9]=f}else c=e[5],d=e[6],l=e[7],u=e[8],f=e[9];if(f!==Symbol.for("react.early_return_sentinel"))return f;let m;e[11]!==c||e[12]!==d?(m=t.jsx("ul",{className:c,children:d}),e[11]=c,e[12]=d,e[13]=m):m=e[13];let h;return e[14]!==l||e[15]!==u||e[16]!==m?(h=t.jsxs("div",{className:l,children:[u,m]}),e[14]=l,e[15]=u,e[16]=m,e[17]=h):h=e[17],h}function ii(i){return[i.id,i]}function oi(i){const e=z.c(24),{state:n,model:r,elapsed:o,busy:s,deleting:a,producerCellId:c,cancelJobId:d,onRunProducer:l,onCancelJob:u,onDelete:f}=i,m=n.kind==="failed",h=m?"FAILED":n.kind==="queued"?"QUEUED":"GENERATING",j=r&&` · ${r}`;let y;e[0]!==o?(y=o!==null&&` · ${Je(o)} elapsed`,e[0]=o,e[1]=y):y=e[1];let N;e[2]!==h||e[3]!==j||e[4]!==y?(N=t.jsxs("span",{className:"inspector-media-generating-state",children:[h,j,y]}),e[2]=h,e[3]=j,e[4]=y,e[5]=N):N=e[5];let b;e[6]!==s||e[7]!==d||e[8]!==a||e[9]!==m||e[10]!==u||e[11]!==f||e[12]!==l||e[13]!==c?(b=m?t.jsxs("span",{className:"inspector-generating-actions",children:[t.jsxs("button",{type:"button",className:"inspector-generation-action",disabled:s||!c,onClick:()=>{c&&l(c)},children:[t.jsx(vs,{size:13,"aria-hidden":"true"}),"Retry"]}),t.jsxs("button",{type:"button",className:"inspector-generation-action danger",disabled:a,onClick:()=>{f()},children:[t.jsx(Ss,{size:13,"aria-hidden":"true"}),"Delete"]})]}):typeof u=="function"&&typeof d=="number"?t.jsxs("button",{type:"button",className:"inspector-generation-action danger",onClick:()=>u(d),children:[t.jsx(Ns,{size:13,"aria-hidden":"true"}),"Cancel run"]}):null,e[6]=s,e[7]=d,e[8]=a,e[9]=m,e[10]=u,e[11]=f,e[12]=l,e[13]=c,e[14]=b):b=e[14];let v;e[15]!==N||e[16]!==b?(v=t.jsxs("div",{className:"inspector-media-generating-status",children:[N,b]}),e[15]=N,e[16]=b,e[17]=v):v=e[17];let S;e[18]!==n.kind||e[19]!==n.message?(S=n.kind==="failed"&&t.jsxs("p",{className:"inspector-media-generating-error",role:"alert",children:[t.jsx(Ee,{size:13,"aria-hidden":"true"}),t.jsx("span",{children:n.message})]}),e[18]=n.kind,e[19]=n.message,e[20]=S):S=e[20];let x;return e[21]!==v||e[22]!==S?(x=t.jsxs(t.Fragment,{children:[v,S]}),e[21]=v,e[22]=S,e[23]=x):x=e[23],x}function ri(i){const e=z.c(51),{kind:n,address:r,artifactId:o,state:s,cells:a,edges:c,cellAssets:d,artifactAssets:l,busy:u,deleting:f,cancelJobId:m,onSelectSource:h,onRunProducer:j,onCancelJob:y,onDelete:N,onInspectGenerationRequest:b}=i,v=s.kind==="failed",S=s.kind==="failed"?null:s,x=Wn(S?.startedAt??null),A=s.producerCellId;let C;e[0]!==a||e[1]!==A?(C=A?a.find(de=>de.id===A)??null:null,e[0]=a,e[1]=A,e[2]=C):C=e[2];const I=C,k=I?.model??null,R=S?.startedAt??null,T=I?.provider??S?.provider??null,$=S?.runId??null,g=m??null,L=S?.providerArtifactId??o,D=I?.prompt??S?.prompt??null;let G;e[3]!==k||e[4]!==s.kind||e[5]!==R||e[6]!==T||e[7]!==$||e[8]!==g||e[9]!==L||e[10]!==D?(G={runKind:s.kind,startedAt:R,provider:T,model:k,runId:$,jobNumber:g,providerArtifactId:L,writtenPrompt:D},e[3]=k,e[4]=s.kind,e[5]=R,e[6]=T,e[7]=$,e[8]=g,e[9]=L,e[10]=D,e[11]=G):G=e[11];const W=G;let F;e[12]!==v||e[13]!==n?(F=t.jsx(ei,{kind:n,failed:v}),e[12]=v,e[13]=n,e[14]=F):F=e[14];let U;e[15]!==d||e[16]!==a||e[17]!==c||e[18]!==h||e[19]!==A?(U=A&&t.jsx(si,{producerId:A,cells:a,edges:c,cellAssets:d,onSelectSource:h}),e[15]=d,e[16]=a,e[17]=c,e[18]=h,e[19]=A,e[20]=U):U=e[20];let _;e[21]!==h||e[22]!==I?(_=I&&t.jsx(nn,{producer:I,onSelectSource:h}),e[21]=h,e[22]=I,e[23]=_):_=e[23];let B;e[24]!==U||e[25]!==_||e[26]!==F?(B=t.jsxs("div",{className:"inspector-media-generating-preview",children:[F,U,_]}),e[24]=U,e[25]=_,e[26]=F,e[27]=B):B=e[27];let J;e[28]!==u||e[29]!==m||e[30]!==f||e[31]!==x||e[32]!==k||e[33]!==y||e[34]!==N||e[35]!==j||e[36]!==A||e[37]!==s?(J=t.jsx(oi,{state:s,model:k,elapsed:x,busy:u,deleting:f,producerCellId:A,cancelJobId:m,onRunProducer:j,onCancelJob:y,onDelete:N}),e[28]=u,e[29]=m,e[30]=f,e[31]=x,e[32]=k,e[33]=y,e[34]=N,e[35]=j,e[36]=A,e[37]=s,e[38]=J):J=e[38];const te=`@${r} ${s.kind}`;let O;e[39]!==te?(O=t.jsx("span",{className:"sr-only",children:te}),e[39]=te,e[40]=O):O=e[40];let w;e[41]!==l||e[42]!==W||e[43]!==b||e[44]!==J||e[45]!==O?(w=t.jsx(ps,{facts:W,inspect:b,artifactAssets:l,header:J,footer:O}),e[41]=l,e[42]=W,e[43]=b,e[44]=J,e[45]=O,e[46]=w):w=e[46];let oe;return e[47]!==s.kind||e[48]!==B||e[49]!==w?(oe=t.jsxs("div",{className:"inspector-media-generating","data-generation":s.kind,children:[B,w]}),e[47]=s.kind,e[48]=B,e[49]=w,e[50]=oe):oe=e[50],oe}function ai(i){const e=z.c(103),{kind:n,cell:r,cells:o,edges:s,asset:a,cellAssets:c,versionAssets:d,busy:l,deleting:u,mediaInsightWork:f,generationState:m,cancelJobId:h,onSetInput:j,onRun:y,onCancelJob:N,onSelectSource:b,onDelete:v,onOpenFullscreen:S,onTranscribeAsset:x,onLoadTranscriptJson:A,onDownloadTranscriptSrt:C,bookId:I,assetTools:k,artifactAssets:R,onInspectGenerationRequest:T}=i;let $;e[0]!==r.slot?($=Xe(r.slot),e[0]=r.slot,e[1]=$):$=e[1];const g=$;let L;e[2]!==r||e[3]!==o||e[4]!==s?(L=Cn(r,o,s),e[2]=r,e[3]=o,e[4]=s,e[5]=L):L=e[5];const D=L,G=r.type==="audio"||(r.type==="image"||r.type==="video")&&r.inputs?.mediaRole!=="generate-image-output"&&r.inputs?.mediaRole!=="generate-video-output"?zt(r.inputs,r.outputArtifactId):[],W=G.join(":"),F=r.outputArtifactId??G.at(-1)??"",[U,_]=q.useState(null);if(m.kind!=="ready"){const le=r.outputArtifactId??null;let we;return e[6]!==g||e[7]!==R||e[8]!==l||e[9]!==h||e[10]!==c||e[11]!==o||e[12]!==u||e[13]!==s||e[14]!==m||e[15]!==n||e[16]!==N||e[17]!==v||e[18]!==T||e[19]!==y||e[20]!==b||e[21]!==le?(we=t.jsx("div",{className:"inspector-body inspector-media-body",children:t.jsx(ri,{kind:n,address:g,artifactId:le,state:m,cells:o,edges:s,cellAssets:c,busy:l,deleting:u,cancelJobId:h,artifactAssets:R,onSelectSource:b,onRunProducer:y,onCancelJob:N,onDelete:v,onInspectGenerationRequest:T})}),e[6]=g,e[7]=R,e[8]=l,e[9]=h,e[10]=c,e[11]=o,e[12]=u,e[13]=s,e[14]=m,e[15]=n,e[16]=N,e[17]=v,e[18]=T,e[19]=y,e[20]=b,e[21]=le,e[22]=we):we=e[22],we}const B=U?.cellId===r.id&&U.currentArtifactId===F&&U.versionKey===W?U.artifactId:F,J=new Map((d??[]).map(li));a&&J.set(a.artifactId,a);const te=J.has(B),O=G.includes(B)&&te?B:F,w=G.length>0?J.get(O)??a:a,oe=new Set(J.keys());let de;e[23]!==r.id||e[24]!==F||e[25]!==_||e[26]!==W?(de=le=>{_({artifactId:le,cellId:r.id,currentArtifactId:F,versionKey:W})},e[23]=r.id,e[24]=F,e[25]=_,e[26]=W,e[27]=de):de=e[27];const ye=de,re=w?f?.[w.artifactId]??Gt:Gt,X=n==="image"||n==="video",ae=G.length>1&&!!w;let Y;e[28]!==g||e[29]!==X||e[30]!==S||e[31]!==w?(Y=w?t.jsx(ut,{asset:w,address:g,allowFullscreen:X,overlayMetadata:!1,onOpenFullscreen:S}):t.jsxs("div",{className:"inspector-media-empty",children:[t.jsx("span",{children:"Output pending"}),t.jsx("p",{children:"Connect a source and rerun its producer to populate this preview."})]}),e[28]=g,e[29]=X,e[30]=S,e[31]=w,e[32]=Y):Y=e[32];const fe=Y,P=ae&&w?t.jsx(tn,{artifactIds:G,availableArtifactIds:oe,currentArtifactId:r.outputArtifactId,selectedArtifactId:O,outputLabel:Ut(n),onSelect:ye}):null;let Z;e[33]!==k||e[34]!==I||e[35]!==w?(Z=w?t.jsx(Hs,{bookId:I,assetTools:k,asset:w}):null,e[33]=k,e[34]=I,e[35]=w,e[36]=Z):Z=e[36];const E=Z,H=!!(w?.transcript?.plain||w?.transcript?.elevenlabs);let ee;e[37]!==l||e[38]!==H||e[39]!==re||e[40]!==C||e[41]!==A||e[42]!==x||e[43]!==w?(ee=w&&kn(w.type)?H?t.jsx(ts,{artifactId:w.artifactId,transcript:w.transcript??null,busy:l,transcribing:re.transcribing,error:re.error,onTranscribe:x?()=>x(w.artifactId):void 0,onLoadTranscriptJson:A?le=>A(w.artifactId,le):void 0,onDownloadTranscriptSrt:C?()=>C(w.artifactId):void 0}):t.jsxs("div",{className:"inspector-media-insights",children:[x&&t.jsxs("button",{type:"button",className:"inspector-generation-action",disabled:l||re.transcribing,onClick:()=>x(w.artifactId),children:[t.jsx(ms,{size:13,"aria-hidden":"true"}),re.transcribing?"Transcribing…":"Transcribe"]}),re.error&&t.jsxs("p",{className:"inspector-insight-error",role:"alert",children:[t.jsx(Ee,{size:12,"aria-hidden":"true"}),t.jsx("span",{children:re.error})]})]}):null,e[37]=l,e[38]=H,e[39]=re,e[40]=C,e[41]=A,e[42]=x,e[43]=w,e[44]=ee):ee=e[44];const ie=ee;let ce;e[45]!==l||e[46]!==r||e[47]!==c||e[48]!==o||e[49]!==s||e[50]!==b||e[51]!==j||e[52]!==D?(ce=D?t.jsx(nn,{producer:D,onSelectSource:b}):t.jsx(yt,{cell:r,cells:o,edges:s,busy:l,cellAssets:c,onSetInput:j}),e[45]=l,e[46]=r,e[47]=c,e[48]=o,e[49]=s,e[50]=b,e[51]=j,e[52]=D,e[53]=ce):ce=e[53];const Q=ce,Ae=w??null;let $e;e[54]!==n||e[55]!==Ae?($e=Bt(n,Ae),e[54]=n,e[55]=Ae,e[56]=$e):$e=e[56];const Oe=String($e);let se;e[57]!==Oe?(se={"--media-aspect":Oe},e[57]=Oe,e[58]=se):se=e[58];const Pe=se,Te=`inspector-media-row-${n}`,Re=ae?"":"inspector-media-row-single-version";let Le;e[59]!==Te||e[60]!==Re?(Le=["inspector-media-content","inspector-compact-media-content","inspector-media-row-content",Te,Re].filter(Boolean),e[59]=Te,e[60]=Re,e[61]=Le):Le=e[61];const Ve=Le.join(" ");let pe;e[62]!==fe?(pe=t.jsx("div",{className:"inspector-media-row-track inspector-media-row-preview",children:fe}),e[62]=fe,e[63]=pe):pe=e[63];const Ce=ae&&t.jsx("div",{className:"inspector-media-row-track inspector-media-row-versions",children:t.jsx(Qs,{kind:n,artifactIds:G,assetsById:J,currentArtifactId:r.outputArtifactId,selectedArtifactId:O,onSelect:ye})});let xe;e[64]!==g||e[65]!==r.inputs||e[66]!==n||e[67]!==w?(xe=w&&t.jsx(Xs,{kind:n,address:g,asset:w,inputs:r.inputs}),e[64]=g,e[65]=r.inputs,e[66]=n,e[67]=w,e[68]=xe):xe=e[68];let ke;e[69]!==k||e[70]!==I||e[71]!==l||e[72]!==u||e[73]!==n||e[74]!==w?(ke=w&&t.jsx(ns,{bookId:I,artifactId:w.artifactId,kind:n,busy:l||u,call:k},`${I}:${w.artifactId}`),e[69]=k,e[70]=I,e[71]=l,e[72]=u,e[73]=n,e[74]=w,e[75]=ke):ke=e[75];let he;e[76]!==xe||e[77]!==ke?(he=t.jsxs("div",{className:"inspector-media-summary",children:[xe,ke]}),e[76]=xe,e[77]=ke,e[78]=he):he=e[78];let je;e[79]!==E||e[80]!==Q||e[81]!==P?(je=t.jsxs("div",{className:"inspector-media-row-track inspector-media-row-details",children:[P,E,Q]}),e[79]=E,e[80]=Q,e[81]=P,e[82]=je):je=e[82];let Se;e[83]!==r.inputs?(Se=t.jsx(ss,{inputs:r.inputs}),e[83]=r.inputs,e[84]=Se):Se=e[84];let Ne;e[85]!==ie||e[86]!==Se?(Ne=t.jsxs("div",{className:"inspector-media-row-track inspector-media-row-actions",children:[Se,ie]}),e[85]=ie,e[86]=Se,e[87]=Ne):Ne=e[87];let Ie;e[88]!==l||e[89]!==u||e[90]!==v?(Ie=t.jsx(xt,{busy:l,deleting:u,onDelete:v}),e[88]=l,e[89]=u,e[90]=v,e[91]=Ie):Ie=e[91];let be;e[92]!==he||e[93]!==je||e[94]!==Ne||e[95]!==Ie?(be=t.jsxs("div",{className:"inspector-media-row-meta",children:[he,je,Ne,Ie]}),e[92]=he,e[93]=je,e[94]=Ne,e[95]=Ie,e[96]=be):be=e[96];let ze;return e[97]!==Ve||e[98]!==pe||e[99]!==Ce||e[100]!==be||e[101]!==Pe?(ze=t.jsx("div",{className:"inspector-body inspector-media-body",children:t.jsxs("div",{className:Ve,style:Pe,children:[pe,Ce,be]})}),e[97]=Ve,e[98]=pe,e[99]=Ce,e[100]=be,e[101]=Pe,e[102]=ze):ze=e[102],ze}function li(i){return[i.artifactId,i]}function ht(i){const e=z.c(40),{label:n,summary:r,className:o,value:s,loadValue:a,ariaLabel:c,artifactAssets:d}=i,[l,u]=q.useState(!1),[f,m]=q.useState(s),[h,j]=q.useState(!1),[y,N]=q.useState(null);let b,v,S,x,A;if(e[0]!==c||e[1]!==d||e[2]!==o||e[3]!==n||e[4]!==a||e[5]!==h||e[6]!==l||e[7]!==f||e[8]!==r){const k=dt(f);let R;e[14]!==o?(R=["inspector-analysis-json-disclosure",o].filter(Boolean),e[14]=o,e[15]=R):R=e[15],b=R.join(" "),v=h,e[16]!==a||e[17]!==h||e[18]!==f?(S=L=>{const D=L.currentTarget.open;u(D),!(!D||f!==void 0||!a||h)&&(j(!0),N(null),a().then(G=>m(G)).catch(G=>{N(G instanceof Error?G.message:String(G))}).finally(()=>j(!1)))},e[16]=a,e[17]=h,e[18]=f,e[19]=S):S=e[19];let T;e[20]===Symbol.for("react.memo_cache_sentinel")?(T=t.jsx(Wt,{size:12,"aria-hidden":"true"}),e[20]=T):T=e[20];let $;e[21]!==n?($=t.jsx("span",{children:n}),e[21]=n,e[22]=$):$=e[22];let g;e[23]!==r?(g=r&&t.jsx("code",{className:"inspector-json-summary",children:r}),e[23]=r,e[24]=g):g=e[24],e[25]!==$||e[26]!==g?(x=t.jsxs("summary",{children:[T,$,g]}),e[25]=$,e[26]=g,e[27]=x):x=e[27],A=l&&f!==void 0&&t.jsxs(t.Fragment,{children:[(k.promptLeaks.length>0||k.urlPlaceholders.length>0)&&t.jsxs("div",{className:"inspector-payload-mentions",children:[k.promptLeaks.map(di),k.urlPlaceholders.map(ci)]}),t.jsx("div",{className:"inspector-analysis-json-scroll",tabIndex:0,children:t.jsx(Zn,{value:f,ariaLabel:c,artifactAssets:d})})]}),e[0]=c,e[1]=d,e[2]=o,e[3]=n,e[4]=a,e[5]=h,e[6]=l,e[7]=f,e[8]=r,e[9]=b,e[10]=v,e[11]=S,e[12]=x,e[13]=A}else b=e[9],v=e[10],S=e[11],x=e[12],A=e[13];let C;e[28]!==y||e[29]!==h||e[30]!==l||e[31]!==f?(C=l&&f===void 0&&t.jsx("div",{className:"inspector-analysis-json-status",role:"status",children:h?"Loading complete JSON…":y??"Complete JSON is unavailable for this run."}),e[28]=y,e[29]=h,e[30]=l,e[31]=f,e[32]=C):C=e[32];let I;return e[33]!==b||e[34]!==v||e[35]!==S||e[36]!==x||e[37]!==A||e[38]!==C?(I=t.jsxs("details",{className:b,"aria-busy":v,onToggle:S,children:[x,A,C]}),e[33]=b,e[34]=v,e[35]=S,e[36]=x,e[37]=A,e[38]=C,e[39]=I):I=e[39],I}function ci(i){return t.jsxs("span",{className:"inspector-payload-mention placeholder",title:i.path,children:[t.jsx(Ht,{size:11,"aria-hidden":"true"}),t.jsx("code",{children:i.reference}),"resolves at dispatch"]},`${i.path}:${i.url}`)}function di(i){return t.jsxs("span",{className:"inspector-payload-mention leak",title:i.message,children:[t.jsx(Ee,{size:11,"aria-hidden":"true"}),t.jsx("code",{children:i.token}),i.message]},`${i.token}:${i.code}`)}function pi(i){return i.replace(/^notebook_/,"").replace(/^legacy_/,"").replaceAll("_"," ")}function ui(i){return i.type==="json_schema"?i.strict?"Strict JSON schema":"JSON schema":i.type==="json_object"?"JSON object":i.type==="text"?"Text":i.type.replaceAll("_"," ")}function mi(i){const e=z.c(3),{analysisInfo:n}=i,r=Jt(n.outputJson),o=n.llmExchanges?.length?n.llmExchanges.map(gi):r,s=q.useRef(null),a=()=>{if(!n.outputUrl)return Promise.reject(new Error("Complete JSON is unavailable for this run."));if(!s.current){const m=fetch(n.outputUrl).then(hi).then(fi);s.current=m.catch(h=>{throw s.current=null,h})}return s.current},c=(m,h)=>async()=>{const y=(await a())[m];if(!y)throw new Error("The saved LLM exchange could not be found.");return y[h]};if(o.length===0)return null;let d;e[0]===Symbol.for("react.memo_cache_sentinel")?(d=t.jsx("span",{children:"LLM exchange"}),e[0]=d):d=e[0];const l="inspector-analysis-llm-calls",u=o.map((m,h)=>{const j=pi(m.stage),y=String(h+1).padStart(2,"0");return t.jsxs("article",{className:"inspector-analysis-llm-call",children:[t.jsxs("header",{children:[t.jsx("span",{children:y}),t.jsx("strong",{children:j})]}),t.jsxs("dl",{className:"inspector-analysis-llm-meta",children:[t.jsxs("div",{children:[t.jsx("dt",{children:"Provider"}),t.jsx("dd",{children:m.provider})]}),t.jsxs("div",{children:[t.jsx("dt",{children:"Model"}),t.jsx("dd",{children:m.model})]}),m.responseFormat&&t.jsxs("div",{className:"inspector-analysis-llm-format",children:[t.jsx("dt",{children:"Response format"}),t.jsxs("dd",{children:[t.jsxs("span",{children:[t.jsx(Wt,{size:11,"aria-hidden":"true"}),ui(m.responseFormat)]}),m.responseFormat.name&&t.jsx("code",{children:m.responseFormat.name})]})]})]}),!m.complete&&t.jsx("p",{className:"inspector-analysis-llm-incomplete",children:"This older run retained summary payloads only. Re-run the Analyze cell to record the complete provider exchange."}),t.jsxs("div",{className:"inspector-analysis-json-disclosures",children:[t.jsx(ht,{label:"LLM input",value:m.input,loadValue:m.input===void 0?c(h,"input"):void 0,ariaLabel:`LLM input JSON for ${j}`}),t.jsx(ht,{label:"LLM response",value:m.response,loadValue:m.response===void 0?c(h,"response"):void 0,ariaLabel:`LLM response JSON for ${j}`})]})]},`${m.stage}-${h}`)});let f;return e[1]!==u?(f=t.jsx("div",{className:l,children:u}),e[1]=u,e[2]=f):f=e[2],t.jsxs("section",{className:"inspector-analysis-llm","aria-label":"LLM exchanges",children:[t.jsxs("header",{className:"inspector-analysis-llm-heading",children:[d,t.jsxs("code",{children:[o.length," ",o.length===1?"call":"calls"]})]}),f]})}function fi(i){const e=Jt(i);if(e.length===0)throw new Error("The saved analysis has no recorded LLM exchange.");return e}async function hi(i){if(!i.ok)throw new Error(`Unable to load complete JSON (${i.status})`);return i.json()}function gi(i){return{...i,complete:!0,input:void 0,response:void 0}}function yi(i){const e=z.c(16),{cell:n,cells:r,edges:o,asset:s,cellAssets:a,versionAssets:c,busy:d,deleting:l,onSetInput:u,onDelete:f}=i,m=zt(n.inputs,n.outputArtifactId),h=m.join(":"),j=n.outputArtifactId??m.at(-1)??"",[y,N]=q.useState(null),b=y?.cellId===n.id&&y.currentArtifactId===j&&y.versionKey===h?y.artifactId:j,v=new Map((c??[]).map(bi));s&&v.set(s.artifactId,s);const S=m.includes(b)&&v.has(b)?b:j,A=(v.get(S)??s)?.analysisInfo,C=A?.shots.slice().sort(ji)??[],I="inspector-body inspector-analysis-body",k="inspector-analysis-content",R=m.length>1&&t.jsx(tn,{artifactIds:m,availableArtifactIds:new Set(v.keys()),currentArtifactId:n.outputArtifactId,selectedArtifactId:S,outputLabel:"Analysis",onSelect:D=>{N({artifactId:D,cellId:n.id,currentArtifactId:j,versionKey:h})}}),T=A?t.jsxs(t.Fragment,{children:[t.jsx(mi,{analysisInfo:A},S),t.jsx("ol",{className:"inspector-analysis-shots",children:C.map(xi)})]}):t.jsxs("div",{className:"inspector-media-empty",children:[t.jsx("span",{children:"Analysis pending"}),t.jsx("p",{children:"Run the connected Analyze cell to populate normalized shots."})]});let $;e[0]!==d||e[1]!==n||e[2]!==a||e[3]!==r||e[4]!==o||e[5]!==u?($=t.jsx(yt,{cell:n,cells:r,edges:o,busy:d,cellAssets:a,onSetInput:u}),e[0]=d,e[1]=n,e[2]=a,e[3]=r,e[4]=o,e[5]=u,e[6]=$):$=e[6];let g;e[7]!==d||e[8]!==l||e[9]!==f?(g=t.jsx(xt,{busy:d,deleting:l,onDelete:f}),e[7]=d,e[8]=l,e[9]=f,e[10]=g):g=e[10];let L;return e[11]!==R||e[12]!==T||e[13]!==$||e[14]!==g?(L=t.jsx("div",{className:I,children:t.jsxs("div",{className:k,children:[R,T,$,g]})}),e[11]=R,e[12]=T,e[13]=$,e[14]=g,e[15]=L):L=e[15],L}function xi(i){return t.jsxs("li",{children:[t.jsx("span",{className:"inspector-analysis-shot-number",children:String(i.ordinal).padStart(2,"0")}),t.jsxs("div",{children:[t.jsx("strong",{children:i.label}),t.jsxs("time",{children:[Je(i.startSeconds)," – ",Je(i.endSeconds)," · ",Je(i.durationSeconds)]})]})]},i.ordinal)}function ji(i,e){return i.ordinal-e.ordinal}function bi(i){return[i.artifactId,i]}function vi({headerActionHost:i,notebookId:e,bookId:n,assetTools:r,sourceVisible:o,cell:s,cells:a,edges:c,asset:d,cellAssets:l,artifactAssets:u,status:f,error:m,busy:h,deleting:j,onUpdate:y,onSetInput:N,onRun:b,onDelete:v,onOpenFullscreen:S,onPreviewPayload:x,initialGenerationPreview:A,onSelectSource:C,generationActions:I=[],mentionAssets:k=[],voiceCatalog:R}){const T=q.useId(),$=q.useContext(is),[g,L]=q.useState(()=>{const p=ks(s,I,at(s.id,a,c));return!Ge(s.type)||p.generationMode!=="r2v"?p:{...p,prompt:qe(p.prompt,me(s.id,a,c,"i2v"),me(s.id,a,c,p.generationMode))}}),[D,G]=q.useState(!1),W=()=>{R&&R.ensureLoaded().catch(()=>{})},[F,U]=q.useState(null),[_,B]=q.useState("idle"),J=q.useRef(null),te=q.useRef(null),O=q.useRef(0),[w,oe]=q.useState(g.prompt.length),[de,ye]=q.useState(0),[re,X]=q.useState(!1),[ae,Y]=q.useState({error:null,loading:!1,value:void 0}),fe=s.type==="prompt"||s.type==="analyze"||s.type==="generate_video"||s.type==="generate_image"||s.type==="generate_audio",P=s.type==="generate_video"||s.type==="generate_image"||s.type==="generate_audio",Z=Ge(s.type)?s.type:null,E={provider:g.provider,model:g.model,operation:g.operation,tool:g.tool},H=Z?at(s.id,a,c):[],ee=s.tool==="edit_image_subjects",ie=ee?I.filter(p=>p.tool===s.tool).map(p=>({...p,inputContract:{modes:p.inputContract.modes.filter(M=>M.id===s.inputs?.generationMode)}})):I,ce=Z?wn(ie,Z,H,ee):[],Q=Z?We(ie,Z,E):null,Ae=!!(Q&&Ft(Q,H)),$e=Q?Mn(Q,H):[],Oe=new Set($e.map(p=>p.id)),se=Q?Qe(Q,H,g.generationMode):"",Pe=!!(Q&&$n(Q,se,H)),Te=Q?.inputContract.modes??[],Re=Te.find(p=>p.id===se),Le=Re?Pn(Re,H):null,Ve=Q?Tn(Q,se,s.id,a,c):[],pe=Q?.controls??[],Ce=I.flatMap(p=>p.controls),xe=Ot(pe,g.generationSettings)??Rn(g.model,g.generationSettings,c.filter(p=>p.target===s.id).map(p=>({type:a.find(M=>M.id===p.source)?.type??"",targetInput:p.targetInput,asset:l?.get(p.source)??null}))),he=Ae&&Pe&&xe===null,je=Q&&!Ae&&!ce.some(p=>p.id===Q.id)?[Q,...ce]:ce,Se=Q?.id??g.tool,Ne=q.useMemo(()=>Ln(a,c,s.id),[s.id,a,c]),Ie=Js(s.id,a,c,se),be=g.prompt.slice(0,w),le=(P?Dn(Ie,k,be):_n(k,a,be,Ne)).map(p=>({type:"mention",value:p.value,label:p.label,description:p.description,caption:p.caption,thumbnailSrc:p.thumbnailUrl,mediaKind:p.mediaKind??void 0,empty:p.empty,colorScheme:"amber"})),we=re&&le.length>0,De=En(P?{...s,provider:g.provider,model:g.model,operation:g.operation,tool:g.tool}:s,f),on=s.type==="character"||P||s.type==="extract_audio",rn=Yt(s.type),_e=ws(s,g,pe),Me=Ms(s,g)&&(!P||he),et=P?"Generate":De?Gn(s.type,De.label):null,ge=(rn||P)&&!!et,Ue=m??"This action failed, but no error details were recorded.",vt=F?.error===Ue?F.state:"idle",an=vt==="copied"?"Copied":vt==="failed"?"Retry copy":"Copy",ln=_==="copied"?"Copied":_==="failed"?"Retry copy":"Copy",tt=(p,M=c)=>{const V=Z?We(ie,Z,p):null,K=at(s.id,a,M);return{prompt:p.prompt,provider:p.provider,model:p.model,operation:p.operation,tool:p.tool,inputs:Zt(s,{...p,generationMode:V?Qe(V,K,p.generationMode):p.generationMode,generationSettings:Jn(V?.controls??[],p.generationSettings)},Ce)}},St=(p,M=c)=>{const V=tt(p,M);return JSON.stringify([{...V,inputs:{generationMode:V.inputs.generationMode,generationSettings:V.inputs.generationSettings}},M.filter(K=>K.target===s.id).map(K=>[K.source,K.targetInput]).sort()])},Nt=St(g),[cn]=q.useState(Nt),Ke=ae.key!==void 0?ae:A??ae,It=(ae.key??cn)!==Nt,At=async(p=g,M=c)=>{if(!x)throw new Error("Payload preview is unavailable");const V=++O.current,K=St(p,M),ne=Z?We(I,Z,p):null,ue=Ot(ne?.controls??[],p.generationSettings);if(ue)throw O.current===V&&Y({key:K,error:ue,loading:!1,value:void 0}),new Error(ue);Y({key:K,error:null,loading:!0,value:void 0});try{const ve=await x(s.id,tt(p,M));return O.current===V&&Y({key:K,error:null,loading:!1,value:ve}),ve}catch(ve){throw O.current===V&&Y({key:K,error:ve instanceof Error?ve.message:String(ve),loading:!1,value:void 0}),ve}},nt=Fn((p=g,M=c)=>{P&&x&&At(p,M).catch(()=>{})},s.id),Be=nt.run,Ct=p=>{O.current+=1,Y(M=>({...M,loading:!1})),P&&x&&nt.schedule({...g,prompt:p})},st=(p,M)=>{B("idle"),L(V=>({...V,prompt:p})),oe(M),ye(0),X(!0),Ct(p)},dn=p=>{B("idle"),L(M=>({...M,prompt:p})),oe(p.length),X(!1),Ct(p)},kt=On({call:r,bookId:n,surface:P?Vn(s.type):null,prompt:g.prompt,onApply:dn}),wt=p=>{const V=g.prompt.slice(0,w).lastIndexOf("@");if(V<0)return;const K=g.prompt.slice(0,V),ne=g.prompt.slice(w),ue=!ne||/^\s/u.test(ne)?"":" ",ve=`${K}${p.value}${ue}${ne}`,rt=K.length+p.value.length+ue.length;st(ve,rt),X(!1),requestAnimationFrame(()=>{te.current?.focus({preventScroll:!0}),te.current?.setSelectionRange(rt,rt)})},it=(p,M)=>{L(V=>({...V,[p]:M}))},pn=p=>{const M=je.find(ne=>ne.id===p);if(!M)return;s.type==="generate_audio"&&M.controls.some(ne=>ne.name==="voice_id")&&W();const V=Qe(M,H,ee?g.generationMode:""),K={...g,...qn(M),generationMode:V,prompt:qe(g.prompt,me(s.id,a,c,se),me(s.id,a,c,V)),generationSettings:{}};L(K),Be(K)},un=(p,M)=>{const V={...g.generationSettings};M===void 0?delete V[p]:V[p]=M;const K={...g,generationSettings:V};L(K),Be(K)},mn=async()=>{try{await navigator.clipboard.writeText(Ue),U({error:Ue,state:"copied"})}catch{U({error:Ue,state:"failed"})}},fn=async()=>{try{await navigator.clipboard.writeText(g.prompt),B("copied")}catch{B("failed")}},hn=async()=>{if(!(!_e||!Me)){G(!0);try{await y(Vt(s,{...g,generationMode:se},pe,Ce))}finally{G(!1)}}},Mt=async()=>{if(!(!ge||h||D||De?.disabled||!Me||P&&ae.loading)){G(!0);try{if(P)try{nt.cancel();const p=await At();if(dt(p).promptLeaks.length>0)return}catch{return}await Kn({cellId:s.id,dirty:_e,valid:Me,patch:Vt(s,{...g,generationMode:se},pe,Ce),onUpdate:y,onRun:b})}finally{G(!1)}}},$t=c.filter(p=>p.target===s.id),gn=new Map(me(s.id,a,c,se).map(p=>[`${p.sourceCellId}:${p.targetInput}`,p.token])),Pt=(p,M,V=Ye(M),K)=>{const ne=a.find(ue=>ue.id===p);return ne?[{cellId:ne.id,address:Xe(ne.slot),type:ne.type,targetInput:M,targetLabel:V,...K?{mention:K}:{},asset:l?.get(ne.id)??null}]:[]},ot=$t.flatMap(p=>Pt(p.source,p.targetInput,Ye(zn(se,"image",p.targetInput)),gn.get(`${p.source}:${p.targetInput}`))),yn=Ve.flatMap(p=>Pt(p.sourceCellId,p.targetInput,Ye(p.target))),Tt=Q??{id:g.tool,tool:g.tool,provider:g.provider,providerLabel:g.provider,model:g.model,operation:g.operation,title:g.tool||"No compatible models",cellTypes:Z?[Z]:[],isDefault:!1,defaultPriority:0,controls:[],inputContract:{modes:[]}},Rt=je.map(p=>Ft(p,H)?p:{...p,providerLabel:`${p.providerLabel} · incompatible`});Q||Rt.unshift(Tt);const xn={action:Tt,cell:{...s,...tt(g)},connections:$t.map(p=>({sourceCellId:p.source,targetInput:p.targetInput})),sourceCellIds:ot.map(p=>p.cellId),sourceAddresses:ot.map(p=>p.address)},Lt=async(p,M)=>{const V=c.filter(ue=>ue.target!==s.id||ue.targetInput!==p),K=M?[...V,{id:p,source:M,target:s.id,targetInput:p}]:V,ne={...g,prompt:qe(g.prompt,me(s.id,a,c,se),me(s.id,a,K,se))};await N(p,M),L(ne),Be(ne,K)},Dt=fe?t.jsxs("section",{className:"inspector-prompt-field",children:[t.jsxs("header",{className:"inspector-prompt-header",children:[t.jsx("h3",{children:"Prompt"}),P&&t.jsx(os,{history:kt,disabled:h||D}),t.jsxs("button",{type:"button",className:`inspector-prompt-copy${_==="copied"?" copied":""}`,"aria-label":_==="copied"?"Prompt copied":_==="failed"?"Retry copying prompt":"Copy prompt",title:_==="copied"?"Prompt copied":_==="failed"?"Retry copying prompt":"Copy prompt",disabled:!g.prompt,onClick:()=>{fn()},children:[_==="copied"?t.jsx(Ht,{size:12}):t.jsx(fs,{size:12}),t.jsx("span",{"aria-live":"polite",children:ln})]})]}),t.jsxs("div",{className:"inspector-prompt-editor",ref:J,children:[we&&t.jsx(rs,{items:le,selectedIndex:de,onSelect:wt,onHover:ye,anchorRef:J,preferAbove:!1}),t.jsx("textarea",{ref:te,"aria-label":"Prompt",className:"inspector-prompt-textarea",value:g.prompt,disabled:P&&(h||D),"aria-invalid":P&&!It&&dt(Ke.value).promptLeaks.length>0,rows:P?3:8,onChange:p=>st(p.target.value,p.target.selectionStart),onClick:p=>oe(p.currentTarget.selectionStart),onSelect:p=>oe(p.currentTarget.selectionStart),onBlur:()=>X(!1),onKeyDown:p=>{if(!we){P&&kt.handlePromptKeyDown(p);return}if(p.key==="ArrowDown"){p.preventDefault(),ye(M=>(M+1)%le.length);return}if(p.key==="ArrowUp"){p.preventDefault(),ye(M=>(M-1+le.length)%le.length);return}if(p.key==="Enter"||p.key==="Tab"){p.preventDefault(),wt(le[de]);return}p.key==="Escape"&&(p.preventDefault(),X(!1))}})]})]}):null,_t=h||D||!!De?.disabled||!Me||P&&ae.loading||!ge&&_e,{onKeyDown:jn}=as({applyFormId:T,applyDisabled:_t,applyScopeSelector:".composer-notebook-dock",busy:h||D,enabled:P&&!!$,onCancel:()=>$?.hide()}),Et=et&&(De||P)?t.jsx("section",{className:P&&i?"confirm-sheet-actions inspector-generation-header-actions":"inspector-cell-actions","aria-label":"Primary cell action",children:t.jsxs("button",{type:"button",className:P&&i?"confirm-sheet-apply":"inspector-run-action","aria-busy":ge&&D,"aria-keyshortcuts":P?"Meta+Enter Control+Enter":void 0,title:De?.disabled?"A run is already in progress for this cell":P&&!he?"Check the generation type and required settings":!ge&&_e?"Save changes before running":P?"Generate (⌘Enter / Ctrl+Enter)":void 0,onClick:()=>{if(ge){Mt();return}b(s.id)},disabled:_t,children:[ge&&D?P?"Generating…":"Applying…":et,P&&!D&&t.jsx("kbd",{"aria-hidden":"true",children:"⌘↵"})]})}):null,bn=!P&&_e?t.jsxs("div",{className:`inspector-dirty-notice${Me?"":" invalid"}`,role:"status",children:[t.jsx(Ee,{size:14}),t.jsx("span",{children:Me?ge?"Changes apply when this action runs":"Unsaved changes":ge?"Check timing values before running":"Check timing values before saving"})]}):null;return t.jsxs("div",{className:P?"generation-cell-inspector":"inspector-body inspector-executable-body",onKeyDown:jn,children:[P&&i?vn.createPortal(Et,i):null,d&&on&&!P&&t.jsx(ut,{asset:d,address:Xe(s.slot),allowFullscreen:d.type==="image"||d.type==="video"||d.type==="final",onOpenFullscreen:S}),!P&&t.jsx(yt,{cell:s,cells:a,edges:c,busy:h,cellAssets:l,onSetInput:N}),t.jsxs("form",{id:T,className:P?"generation-cell-form":"inspector-cell-form","aria-busy":D,onSubmit:p=>{if(p.preventDefault(),ge){Mt();return}hn()},children:[P?t.jsx(us,{actions:Rt,busy:h||D,draft:xn,modes:Te,compatibleModeIds:Oe,sourceVisible:o,notebookId:e,doltArtifactAssets:u,preview:Ke.value,previewError:Ke.error,previewLoading:Ke.loading,previewStale:It,sources:ot,sourceOptions:yn,voiceCatalog:R,promptEditor:Dt,inputFooter:d?t.jsxs("div",{className:"generation-cell-output",children:[t.jsx("span",{className:"confirm-section-label",children:"Output"}),t.jsx(ut,{asset:d,address:Xe(s.slot),allowFullscreen:d.type==="image"||d.type==="video"||d.type==="final",onOpenFullscreen:S})]}):void 0,onActionChange:pn,onAddSource:(p,M)=>{M&&Lt(M,p)},onRemoveSource:(p,M)=>{M&&Lt(M,null)},onSelectSource:p=>C?.(p),onModeChange:p=>{const M={...g,generationMode:p,prompt:qe(g.prompt,me(s.id,a,c,se),me(s.id,a,c,p))};L(M),Be(M)},onPromptChange:p=>st(p,p.length),onRefreshPreview:()=>Be(),onSettingChange:un}):Dt,s.type==="split_video"&&(s.operation==="split_at_points"||s.operation==="split_ranges")&&t.jsxs("div",{className:"inspector-field-pair",children:[t.jsxs("label",{children:["Cut points",t.jsx("input",{type:"text",value:Array.isArray(s.inputs?.cutPointsSeconds)?s.inputs.cutPointsSeconds.join(", "):"",readOnly:!0})]}),t.jsxs("label",{children:["Chunks",t.jsx("input",{type:"text",value:Array.isArray(s.inputs?.cutPointsSeconds)?String(s.inputs.cutPointsSeconds.length+1):"",readOnly:!0})]})]}),s.type==="split_video"&&s.operation!=="split_at_points"&&s.operation!=="split_ranges"&&t.jsxs("div",{className:"inspector-field-pair",children:[t.jsxs("label",{children:["Start seconds",t.jsx("input",{type:"number",min:"0",step:"0.01",value:g.startSeconds,onChange:p=>it("startSeconds",p.target.value)})]}),t.jsxs("label",{children:["End seconds",t.jsx("input",{type:"number",min:"0",step:"0.01",value:g.endSeconds,onChange:p=>it("endSeconds",p.target.value)})]})]}),s.type==="splice"&&g.operation==="splice_video"&&t.jsxs("label",{children:["Overlap seconds",t.jsx("input",{type:"number",min:"0",step:"0.01",value:g.overlap,onChange:p=>it("overlap",p.target.value)})]}),P&&!g.tool&&!g.model&&t.jsx("span",{className:"workspace-notice",children:"No generation model matches the current inputs."}),P&&Se&&!he&&t.jsxs("div",{className:"inspector-generation-warning",role:"status",children:[t.jsx(Ee,{size:14}),t.jsx("span",{children:Q?Le??(Ae?Pe?xe??"Complete the required generation settings before running.":"This generation type does not match the current inputs. Choose a compatible type or change the connections.":"This model does not accept the current inputs. Choose a compatible model or change the connections."):"This saved action is unavailable. Choose a supported model."})]}),bn,!ge&&!P&&t.jsxs("button",{type:"submit",className:"inspector-save-button",disabled:h||D||!_e||!Me,children:[t.jsx(hs,{size:15}),t.jsx("span",{children:D?"Saving…":"Save changes"})]})]}),P&&i?null:Et,(f==="error"||m)&&t.jsxs("section",{className:"inspector-run-error",role:"alert","aria-label":"Cell run error",children:[t.jsx(Ee,{size:16,"aria-hidden":"true"}),t.jsxs("div",{className:"inspector-run-error-content",children:[t.jsxs("div",{className:"inspector-run-error-header",children:[t.jsx("strong",{children:"Run failed"}),t.jsx("button",{type:"button","aria-label":"Copy run error",title:"Copy run error",onClick:()=>{mn()},children:t.jsx("span",{"aria-live":"polite",children:an})})]}),t.jsx("p",{children:Ue})]})]}),!P&&t.jsx(xt,{busy:h,deleting:j,onDelete:v})]})}function jt(i){const e=typeof i=="number"?i:Date.parse(i);if(!Number.isFinite(e))return null;const n=Math.max(0,Math.round((Date.now()-e)/1e3));if(n<5)return"just now";if(n<60)return`${n}s ago`;const r=Math.floor(n/60);if(r<60)return`${r}m ago`;const o=Math.floor(r/60);if(o<24)return`${o}h ago`;const s=Math.floor(o/24);return s<7?`${s}d ago`:new Date(e).toLocaleDateString()}function bt(i){const e=typeof i=="number"?i:Date.parse(i);return Number.isFinite(e)?new Date(e).toLocaleString():void 0}function Si(i){return i==="dispatched"||i==="awaiting_provider"}function Ni(i,e){if(!e||!In(e.status??""))return null;if(e.runId){const n=i.find(r=>r.runId===e.runId);if(n)return n.attemptId}return i.find(n=>Si(n.status))?.attemptId??null}function sn(i){const e=z.c(24),{revisions:n,loading:r,error:o}=i;let s;e[0]===Symbol.for("react.memo_cache_sentinel")?(s=t.jsxs("span",{children:[t.jsx(qt,{size:14,"aria-hidden":"true"}),"History"]}),e[0]=s):s=e[0];const a=n.length===1?"":"s";let c;e[1]!==n.length||e[2]!==a?(c=t.jsxs("header",{className:"inspector-source-meta",children:[s,t.jsxs("code",{children:[n.length," revision",a]})]}),e[1]=n.length,e[2]=a,e[3]=c):c=e[3];let d;e[4]!==r?(d=r&&t.jsx("p",{className:"inspector-analysis-json-status",role:"status",children:"Loading asset history…"}),e[4]=r,e[5]=d):d=e[5];let l;e[6]!==o?(l=o&&t.jsx("p",{className:"inspector-run-error",role:"alert",children:o}),e[6]=o,e[7]=l):l=e[7];let u;e[8]!==o||e[9]!==r||e[10]!==n.length?(u=!r&&!o&&n.length===0&&t.jsx("p",{className:"inspector-analysis-json-status",children:"No revisions recorded for this asset."}),e[8]=o,e[9]=r,e[10]=n.length,e[11]=u):u=e[11];let f;if(e[12]!==n){let j;e[14]!==n.length?(j=(y,N)=>t.jsxs("li",{children:[t.jsx("span",{className:"inspector-history-index",children:n.length-N}),t.jsxs("div",{children:[t.jsxs("header",{children:[t.jsx("strong",{children:y.operation?.replaceAll("_"," ")??"Asset revision"}),t.jsx("code",{title:y.hash,children:y.hash.slice(0,8)})]}),t.jsx("p",{children:y.message}),t.jsxs("small",{children:[t.jsx("time",{dateTime:y.date,title:bt(y.date),children:jt(y.date)??y.date}),y.author?` · ${y.author}`:""]})]})]},y.hash),e[14]=n.length,e[15]=j):j=e[15],f=n.map(j),e[12]=n,e[13]=f}else f=e[13];let m;e[16]!==f?(m=t.jsx("ol",{className:"inspector-history",children:f}),e[16]=f,e[17]=m):m=e[17];let h;return e[18]!==c||e[19]!==d||e[20]!==l||e[21]!==u||e[22]!==m?(h=t.jsxs("section",{className:"inspector-generations","aria-label":"Asset history",children:[c,d,l,u,m]}),e[18]=c,e[19]=d,e[20]=l,e[21]=u,e[22]=m,e[23]=h):h=e[23],h}function Ii(i){const e=z.c(35),{attempts:n,currentExecution:r,loading:o,error:s,artifactAssets:a,onLoadPayload:c}=i;let d;e[0]!==n||e[1]!==r?(d=Ni(n,r),e[0]=n,e[1]=r,e[2]=d):d=e[2];const l=d;let u;e[3]===Symbol.for("react.memo_cache_sentinel")?(u=t.jsxs("span",{children:[t.jsx(qt,{size:14,"aria-hidden":"true"}),"Generations"]}),e[3]=u):u=e[3];const f=n.length===1?"":"s";let m;e[4]!==n.length||e[5]!==f?(m=t.jsxs("header",{className:"inspector-source-meta",children:[u,t.jsxs("code",{children:[n.length," attempt",f]})]}),e[4]=n.length,e[5]=f,e[6]=m):m=e[6];let h;e[7]!==o?(h=o&&t.jsx("p",{className:"inspector-analysis-json-status",role:"status",children:"Loading generation history…"}),e[7]=o,e[8]=h):h=e[8];let j;e[9]!==s?(j=s&&t.jsx("p",{className:"inspector-run-error",role:"alert",children:s}),e[9]=s,e[10]=j):j=e[10];let y;e[11]!==n.length||e[12]!==s||e[13]!==o?(y=!o&&!s&&n.length===0&&t.jsx("p",{className:"inspector-analysis-json-status",children:"No generation attempts recorded for this cell."}),e[11]=n.length,e[12]=s,e[13]=o,e[14]=y):y=e[14];let N;if(e[15]!==a||e[16]!==n||e[17]!==r?.status||e[18]!==l||e[19]!==c){let S;e[21]!==a||e[22]!==n.length||e[23]!==r?.status||e[24]!==l||e[25]!==c?(S=(x,A)=>{const C=n.length-A,I=x.artifactId?a.get(x.artifactId):void 0,k=I??(x.mediaUrl||x.thumbnailUrl?{type:x.mediaUrl&&!x.thumbnailUrl?"video":"image",mediaUrl:x.mediaUrl,thumbnailUrl:x.thumbnailUrl,duration:null}:null),R=x.transitions.at(-1),T=l===x.attemptId,$=x.artifactId??x.providerArtifactId;return t.jsxs("li",{className:["inspector-generation-attempt",T?"inspector-generation-attempt-live":""].filter(Boolean).join(" "),children:[t.jsxs("div",{className:"inspector-generation-attempt-head",children:[k?t.jsx("div",{className:"inspector-generation-thumb",children:t.jsx(Xn,{asset:k})}):t.jsx(gt,{asset:I,kindHint:"generate_image"}),t.jsxs("div",{className:"inspector-generation-facts",children:[t.jsxs("div",{className:"inspector-generation-attempt-title",children:[t.jsxs("strong",{children:["Attempt ",C]}),t.jsx("span",{className:`inspector-generation-status inspector-generation-status-${x.status}`,children:x.status}),T&&t.jsx("span",{className:"inspector-generation-live",role:"status",children:r?.status??"running"})]}),t.jsx("span",{className:"inspector-generation-meta",title:bt(x.createdAt),children:[An(x.tool),x.model,jt(x.createdAt)].filter(Boolean).join(" · ")}),R&&t.jsxs("code",{className:"inspector-generation-commit",title:R.commitHash,children:["commit ",R.commitHash.slice(0,8)]}),(x.resolvedPrompt||x.prompt)&&t.jsx("p",{title:x.resolvedPrompt??x.prompt??void 0,children:(x.resolvedPrompt??x.prompt??"").slice(0,160)}),x.transitions.length>0&&t.jsx("ol",{className:"inspector-generation-timeline","aria-label":`Attempt ${C} status timeline`,children:x.transitions.map(Ai)}),x.error&&t.jsx("p",{className:"inspector-generation-error",role:x.status==="failed"?"alert":void 0,children:x.error}),x.providerTask&&t.jsx(Yn,{task:x.providerTask})]})]}),(x.payload!==void 0||x.payloadAvailable&&c)&&t.jsx(ht,{label:"Payload",value:x.payload,loadValue:x.payload===void 0&&$&&c?()=>c($):void 0,ariaLabel:`Generation payload for attempt ${C}`,artifactAssets:a})]},x.attemptId)},e[21]=a,e[22]=n.length,e[23]=r?.status,e[24]=l,e[25]=c,e[26]=S):S=e[26],N=n.map(S),e[15]=a,e[16]=n,e[17]=r?.status,e[18]=l,e[19]=c,e[20]=N}else N=e[20];let b;e[27]!==N?(b=t.jsx("ol",{className:"inspector-generations-list",children:N}),e[27]=N,e[28]=b):b=e[28];let v;return e[29]!==m||e[30]!==h||e[31]!==j||e[32]!==y||e[33]!==b?(v=t.jsxs("section",{className:"inspector-generations","aria-label":"Generation attempts",children:[m,h,j,y,b]}),e[29]=m,e[30]=h,e[31]=j,e[32]=y,e[33]=b,e[34]=v):v=e[34],v}function Ai(i,e){return t.jsxs("li",{children:[t.jsx("span",{className:`inspector-generation-timeline-dot inspector-generation-timeline-dot-${i.status}`,"aria-hidden":"true"}),t.jsx("span",{children:i.status}),t.jsx("time",{dateTime:i.commitDate,title:bt(i.commitDate),children:jt(i.commitDate)})]},`${i.commitHash}:${e}`)}function Ci(i){const e=z.c(14),{notebookId:n,cell:r,artifactAssets:o,history:s}=i,a=!!r.outputArtifactId,c=a?"inspector-body inspector-source-body inspector-source-split":"inspector-body inspector-source-body";let d;e[0]!==r.id||e[1]!==s?.error||e[2]!==s?.loading||e[3]!==s?.revisions||e[4]!==a?(d=a&&t.jsx("div",{className:"inspector-source-pane inspector-source-history-pane",children:t.jsx(sn,{revisions:s?.revisions??[],loading:s?.loading??!1,error:s?.error??null},r.id)}),e[0]=r.id,e[1]=s?.error,e[2]=s?.loading,e[3]=s?.revisions,e[4]=a,e[5]=d):d=e[5];let l;e[6]!==o||e[7]!==r||e[8]!==n?(l=t.jsx("div",{className:"inspector-source-pane inspector-source-dolt-pane",children:t.jsx(es,{notebookId:n,cell:r,artifactAssets:o},r.id)}),e[6]=o,e[7]=r,e[8]=n,e[9]=l):l=e[9];let u;return e[10]!==c||e[11]!==d||e[12]!==l?(u=t.jsxs("div",{className:c,children:[d,l]}),e[10]=c,e[11]=d,e[12]=l,e[13]=u):u=e[13],u}function Ri(i){const e=z.c(106),{headerActionHost:n,notebookId:r,cell:o,cells:s,edges:a,asset:c,cellAssets:d,versionAssets:l,status:u,error:f,busy:m,deleting:h,sourceVisible:j,historyVisible:y,generationsVisible:N,generationActions:b,mediaInsightWork:v,onUpdate:S,onSetInput:x,onRun:A,onDelete:C,onOpenFullscreen:I,onPreviewPayload:k,initialGenerationPreview:R,onSelectSource:T,onLoadGenerationPayload:$,onInspectGenerationRequest:g,onTranscribeAsset:L,onLoadTranscriptJson:D,onDownloadTranscriptSrt:G,generations:W,history:F,mentionAssets:U,voiceCatalog:_,bookId:B,assetTools:J,queuedCellIds:te,runErrors:O,jobs:w,onCancelJob:oe}=i,de=y===void 0?!1:y,ye=N===void 0?!1:N;let re;e[0]!==c||e[1]!==d||e[2]!==l?(re=Es(c,d,l),e[0]=c,e[1]=d,e[2]=l,e[3]=re):re=e[3];const X=re;let ae;e[4]!==o||e[5]!==s||e[6]!==a||e[7]!==f||e[8]!==w||e[9]!==te||e[10]!==O?(ae=Sn({cell:o,cells:s,edges:a,queuedCellIds:te,runErrors:O,error:f,jobs:w}),e[4]=o,e[5]=s,e[6]=a,e[7]=f,e[8]=w,e[9]=te,e[10]=O,e[11]=ae):ae=e[11];const Y=ae;if(j&&!Ge(o.type)){let E;return e[12]!==X||e[13]!==o||e[14]!==F||e[15]!==r?(E=t.jsx(Ci,{notebookId:r,cell:o,artifactAssets:X,history:F}),e[12]=X,e[13]=o,e[14]=F,e[15]=r,e[16]=E):E=e[16],E}if(de){let E;e[17]!==F?.revisions?(E=F?.revisions??[],e[17]=F?.revisions,e[18]=E):E=e[18];const H=F?.loading??!1,ee=F?.error??null;let ie;return e[19]!==o.id||e[20]!==E||e[21]!==H||e[22]!==ee?(ie=t.jsx("div",{className:"inspector-body inspector-source-body",children:t.jsx(sn,{revisions:E,loading:H,error:ee},o.id)}),e[19]=o.id,e[20]=E,e[21]=H,e[22]=ee,e[23]=ie):ie=e[23],ie}if(ye){let E;e[24]!==W?.attempts?(E=W?.attempts??[],e[24]=W?.attempts,e[25]=E):E=e[25];const H=W?.currentExecution??null,ee=W?.loading??!1,ie=W?.error??null;let ce;return e[26]!==X||e[27]!==o.id||e[28]!==$||e[29]!==E||e[30]!==H||e[31]!==ee||e[32]!==ie?(ce=t.jsx("div",{className:"inspector-body inspector-source-body",children:t.jsx(Ii,{attempts:E,currentExecution:H,loading:ee,error:ie,artifactAssets:X,onLoadPayload:$},o.id)}),e[26]=X,e[27]=o.id,e[28]=$,e[29]=E,e[30]=H,e[31]=ee,e[32]=ie,e[33]=ce):ce=e[33],ce}if(o.type==="analysis"){let E;return e[34]!==c||e[35]!==m||e[36]!==o||e[37]!==d||e[38]!==s||e[39]!==h||e[40]!==a||e[41]!==C||e[42]!==x||e[43]!==S||e[44]!==l?(E=t.jsx(yi,{cell:o,cells:s,edges:a,asset:c,cellAssets:d,versionAssets:l,busy:m,deleting:h,onUpdate:S,onSetInput:x,onDelete:C}),e[34]=c,e[35]=m,e[36]=o,e[37]=d,e[38]=s,e[39]=h,e[40]=a,e[41]=C,e[42]=x,e[43]=S,e[44]=l,e[45]=E):E=e[45],E}let fe;e[46]!==o.type?(fe=Nn(o.type),e[46]=o.type,e[47]=fe):fe=e[47];const P=fe;if(P){let E;e[48]!==Y.jobId||e[49]!==Y.kind||e[50]!==w?(E=Y.kind==="queued"||Y.kind==="generating"?(w??[]).find(ee=>ee.operationId===Y.jobId&&typeof ee.id=="number")?.id:void 0,e[48]=Y.jobId,e[49]=Y.kind,e[50]=w,e[51]=E):E=e[51];let H;return e[52]!==X||e[53]!==c||e[54]!==J||e[55]!==B||e[56]!==m||e[57]!==o||e[58]!==d||e[59]!==s||e[60]!==h||e[61]!==P||e[62]!==a||e[63]!==Y||e[64]!==v||e[65]!==oe||e[66]!==C||e[67]!==G||e[68]!==g||e[69]!==D||e[70]!==I||e[71]!==A||e[72]!==T||e[73]!==x||e[74]!==L||e[75]!==S||e[76]!==E||e[77]!==l?(H=t.jsx(ai,{kind:P,cell:o,cells:s,edges:a,asset:c,cellAssets:d,versionAssets:l,busy:m,deleting:h,mediaInsightWork:v,generationState:Y,cancelJobId:E,onUpdate:S,onSetInput:x,onRun:A,onCancelJob:oe,onSelectSource:T,onDelete:C,onOpenFullscreen:I,onTranscribeAsset:L,onLoadTranscriptJson:D,onDownloadTranscriptSrt:G,bookId:B,assetTools:J,artifactAssets:X,onInspectGenerationRequest:g}),e[52]=X,e[53]=c,e[54]=J,e[55]=B,e[56]=m,e[57]=o,e[58]=d,e[59]=s,e[60]=h,e[61]=P,e[62]=a,e[63]=Y,e[64]=v,e[65]=oe,e[66]=C,e[67]=G,e[68]=g,e[69]=D,e[70]=I,e[71]=A,e[72]=T,e[73]=x,e[74]=L,e[75]=S,e[76]=E,e[77]=l,e[78]=H):H=e[78],H}let Z;return e[79]!==X||e[80]!==c||e[81]!==J||e[82]!==B||e[83]!==m||e[84]!==o||e[85]!==d||e[86]!==s||e[87]!==h||e[88]!==a||e[89]!==f||e[90]!==b||e[91]!==n||e[92]!==R||e[93]!==U||e[94]!==r||e[95]!==C||e[96]!==I||e[97]!==k||e[98]!==A||e[99]!==T||e[100]!==x||e[101]!==S||e[102]!==j||e[103]!==u||e[104]!==_?(Z=t.jsx(vi,{headerActionHost:n,notebookId:r,bookId:B,assetTools:J,artifactAssets:X,sourceVisible:j,cell:o,cells:s,edges:a,asset:c,cellAssets:d,status:u,error:f,busy:m,deleting:h,onUpdate:S,onSetInput:x,onRun:A,onDelete:C,onOpenFullscreen:I,onPreviewPayload:k,initialGenerationPreview:R,onSelectSource:T,generationActions:b,mentionAssets:U,voiceCatalog:_}),e[79]=X,e[80]=c,e[81]=J,e[82]=B,e[83]=m,e[84]=o,e[85]=d,e[86]=s,e[87]=h,e[88]=a,e[89]=f,e[90]=b,e[91]=n,e[92]=R,e[93]=U,e[94]=r,e[95]=C,e[96]=I,e[97]=k,e[98]=A,e[99]=T,e[100]=x,e[101]=S,e[102]=j,e[103]=u,e[104]=_,e[105]=Z):Z=e[105],Z}export{Ri as N};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{c as M,a as G,j as t}from"./vendor-react-Dj7D1fD4.js";import{b as se}from"./ui-xo_Y1yQg.js";import{d4 as te,d5 as le,d6 as oe,d7 as ne}from"./videobook-Qlp9HQFu.js";import{b as ae,X as ie,ad as re,aj as ce,ak as de,L as je,al as be,i as he,k as me,am as ue,R as fe,C as pe}from"./vendor-icons-CGqhCIXV.js";const Z=10,xe={review:he,failed:be,running:je,queued:de,done:ce,cancelled:re,omitted:ie},ge={continue:"Continue",retry:"Retry",switch:"Switch model",omit:"Omit",cancel:"Cancel"},Ne={retry:fe,cancel:ue},we=new Set(["continue","retry"]),ve=[{id:"all",label:"All",count:null},{id:"attention",label:"Attention",count:"attention"},{id:"active",label:"Active",count:"active"},{id:"finished",label:"Finished",count:"finished"}];function ee(u){return new Date(u).toLocaleTimeString()}function ye(u){const e=M.c(14),{filter:s,active:j,count:a,onSelect:m}=u;let b;e[0]!==s.id||e[1]!==m?(b=()=>m(s.id),e[0]=s.id,e[1]=m,e[2]=b):b=e[2];let o;e[3]!==s.count||e[4]!==s.id?(o=s.count&&t.jsx("span",{className:`jobs-filter-dot jobs-filter-dot-${s.id}`,"aria-hidden":"true"}),e[3]=s.count,e[4]=s.id,e[5]=o):o=e[5];let l;e[6]!==a?(l=a!==null&&t.jsx("span",{className:"jobs-filter-count",children:a}),e[6]=a,e[7]=l):l=e[7];let n;return e[8]!==j||e[9]!==s.label||e[10]!==b||e[11]!==o||e[12]!==l?(n=t.jsxs("button",{type:"button",className:"jobs-filter","aria-pressed":j,onClick:b,children:[o,s.label,l]}),e[8]=j,e[9]=s.label,e[10]=b,e[11]=o,e[12]=l,e[13]=n):n=e[13],n}function Ce(u){const e=M.c(15),{band:s,hidden:j,showAll:a,onToggleShowAll:m}=u,b=s.rows.some(Se),o=`jobs-band-header jobs-band-header-${s.id}${b?" jobs-band-has-failed":""}`;let l;e[0]!==s.label?(l=t.jsx("span",{className:"jobs-band-label",children:s.label}),e[0]=s.label,e[1]=l):l=e[1];let n;e[2]!==s.rows.length?(n=t.jsx("span",{className:"jobs-band-count",children:s.rows.length}),e[2]=s.rows.length,e[3]=n):n=e[3];let i;e[4]===Symbol.for("react.memo_cache_sentinel")?(i=t.jsx("span",{className:"jobs-band-rule","aria-hidden":"true"}),e[4]=i):i=e[4];let r;e[5]!==s.rows.length||e[6]!==j||e[7]!==m||e[8]!==a?(r=(j>0||a)&&s.rows.length>Z&&t.jsx("button",{type:"button",className:"jobs-band-more",onClick:m,children:a?`showing all ${s.rows.length} · Show fewer`:`showing ${s.rows.length-j} of ${s.rows.length} · Show all`}),e[5]=s.rows.length,e[6]=j,e[7]=m,e[8]=a,e[9]=r):r=e[9];let c;return e[10]!==o||e[11]!==l||e[12]!==n||e[13]!==r?(c=t.jsxs("div",{className:o,children:[l,n,i,r]}),e[10]=o,e[11]=l,e[12]=n,e[13]=r,e[14]=c):c=e[14],c}function Se(u){return u.tone==="failed"}function ke(u){const e=M.c(17),{row:s,busy:j,expanded:a,onAction:m,onToggleDetails:b}=u,o=s.tone==="failed"&&s.errorDetail!==null;let l;e[0]!==j||e[1]!==m||e[2]!==s?(l=s.actions.map(c=>{const p=Ne[c];return t.jsxs("button",{type:"button",className:we.has(c)?"jobs-action jobs-action-primary":"jobs-action",disabled:j,onClick:()=>m(s,c),children:[p&&t.jsx(p,{size:12,"aria-hidden":"true"}),ge[c]]},c)}),e[0]=j,e[1]=m,e[2]=s,e[3]=l):l=e[3];let n;e[4]!==a||e[5]!==o||e[6]!==b||e[7]!==s.key?(n=o&&t.jsxs("button",{type:"button",className:"jobs-action","aria-expanded":a,onClick:()=>b(s.key),children:["Details",t.jsx(pe,{size:12,"aria-hidden":"true"})]}),e[4]=a,e[5]=o,e[6]=b,e[7]=s.key,e[8]=n):n=e[8];let i;e[9]!==o||e[10]!==s.actions.length||e[11]!==s.duration?(i=s.actions.length===0&&!o&&s.duration&&t.jsx("span",{className:"jobs-duration",children:s.duration}),e[9]=o,e[10]=s.actions.length,e[11]=s.duration,e[12]=i):i=e[12];let r;return e[13]!==l||e[14]!==n||e[15]!==i?(r=t.jsxs("div",{className:"jobs-cell jobs-cell-actions",children:[l,n,i]}),e[13]=l,e[14]=n,e[15]=i,e[16]=r):r=e[16],r}function Ae(u){const e=M.c(67),{row:s,busy:j,expanded:a,onAction:m,onToggleDetails:b}=u,o=xe[s.tone],l=`jobs-row jobs-row-${s.tone}`,n=s.tone==="running"?"jobs-spin":void 0;let i;e[0]!==o||e[1]!==n?(i=t.jsx(o,{size:14,className:n,"aria-hidden":"true"}),e[0]=o,e[1]=n,e[2]=i):i=e[2];let r;e[3]!==s.statusLabel||e[4]!==i?(r=t.jsxs("div",{className:"jobs-cell jobs-cell-status",children:[i,s.statusLabel]}),e[3]=s.statusLabel,e[4]=i,e[5]=r):r=e[5];let c;e[6]!==s.title?(c=t.jsx("span",{children:s.title}),e[6]=s.title,e[7]=c):c=e[7];let p;e[8]!==s.detail?(p=s.detail&&t.jsx("code",{children:s.detail}),e[8]=s.detail,e[9]=p):p=e[9];let x;e[10]!==c||e[11]!==p?(x=t.jsxs("div",{className:"jobs-cell jobs-cell-job",children:[c,p]}),e[10]=c,e[11]=p,e[12]=x):x=e[12];const X=s.target.tag?"jobs-tag":"jobs-tag jobs-tag-book",I=s.target.tag??"BOOK";let D;e[13]!==X||e[14]!==I?(D=t.jsx("code",{className:X,children:I}),e[13]=X,e[14]=I,e[15]=D):D=e[15];let k;e[16]!==s.target.label?(k=s.target.label&&t.jsx("span",{children:s.target.label}),e[16]=s.target.label,e[17]=k):k=e[17];let _;e[18]!==D||e[19]!==k?(_=t.jsxs("div",{className:"jobs-cell jobs-cell-target",children:[D,k]}),e[18]=D,e[19]=k,e[20]=_):_=e[20];let N;e[21]!==s.errorCode?(N=s.errorCode&&t.jsx("code",{className:"jobs-error-code",children:s.errorCode}),e[21]=s.errorCode,e[22]=N):N=e[22];let g;e[23]!==s.note?(g=s.note&&t.jsxs("span",{className:"jobs-summary-note",children:[" · ",s.note]}),e[23]=s.note,e[24]=g):g=e[24];let w;e[25]!==s.summary||e[26]!==g?(w=t.jsxs("span",{className:"jobs-summary-text",children:[s.summary,g]}),e[25]=s.summary,e[26]=g,e[27]=w):w=e[27];let h;e[28]!==N||e[29]!==w?(h=t.jsxs("div",{className:"jobs-summary-line",children:[N,w]}),e[28]=N,e[29]=w,e[30]=h):h=e[30];let v;e[31]!==s.live?(v=s.live&&t.jsx("div",{className:"jobs-progress","aria-hidden":"true",children:t.jsx("span",{})}),e[31]=s.live,e[32]=v):v=e[32];let f;e[33]!==s.providerTask?(f=s.providerTask&&t.jsx(se,{task:s.providerTask}),e[33]=s.providerTask,e[34]=f):f=e[34];let y;e[35]!==h||e[36]!==v||e[37]!==f?(y=t.jsxs("div",{className:"jobs-cell jobs-cell-summary",children:[h,v,f]}),e[35]=h,e[36]=v,e[37]=f,e[38]=y):y=e[38];let A;e[39]!==s.attempt?(A=t.jsx("div",{className:"jobs-cell jobs-cell-attempt",children:s.attempt}),e[39]=s.attempt,e[40]=A):A=e[40];let C;e[41]!==s.timestamp?(C=new Date(s.timestamp).toISOString(),e[41]=s.timestamp,e[42]=C):C=e[42];let J;e[43]!==s.timestamp?(J=ee(s.timestamp),e[43]=s.timestamp,e[44]=J):J=e[44];let S;e[45]!==C||e[46]!==J?(S=t.jsx("div",{className:"jobs-cell jobs-cell-time",children:t.jsx("time",{dateTime:C,children:J})}),e[45]=C,e[46]=J,e[47]=S):S=e[47];let T;e[48]!==j||e[49]!==a||e[50]!==m||e[51]!==b||e[52]!==s?(T=t.jsx(ke,{row:s,busy:j,expanded:a,onAction:m,onToggleDetails:b}),e[48]=j,e[49]=a,e[50]=m,e[51]=b,e[52]=s,e[53]=T):T=e[53];let E;e[54]!==a||e[55]!==s.errorDetail?(E=a&&s.errorDetail&&t.jsxs("div",{className:"jobs-row-error",children:[t.jsx("span",{children:"Error"}),t.jsx("pre",{children:s.errorDetail})]}),e[54]=a,e[55]=s.errorDetail,e[56]=E):E=e[56];let $;return e[57]!==l||e[58]!==_||e[59]!==y||e[60]!==A||e[61]!==S||e[62]!==T||e[63]!==E||e[64]!==r||e[65]!==x?($=t.jsxs("article",{className:l,children:[r,x,_,y,A,S,T,E]}),e[57]=l,e[58]=_,e[59]=y,e[60]=A,e[61]=S,e[62]=T,e[63]=E,e[64]=r,e[65]=x,e[66]=$):$=e[66],$}function Te(u,e){const s=new Set(u);return s.has(e)?s.delete(e):s.add(e),s}function $e(u){const e=M.c(56),{bookName:s,jobs:j,plans:a,assets:m,cells:b,now:o,busy:l,onRefresh:n,onCancelJob:i,onRetryJob:r,onContinuePlan:c,onRevisePlan:p}=u,[x,X]=G.useState("all"),[I,D]=G.useState(!1),[k,_]=G.useState(Ie);let N;e[0]!==m||e[1]!==b||e[2]!==j||e[3]!==o||e[4]!==a?(N=te(le({jobs:j,plans:a,cells:b,assets:m,now:o})),e[0]=m,e[1]=b,e[2]=j,e[3]=o,e[4]=a,e[5]=N):N=e[5];const g=N;let w;e[6]!==g?(w=oe(g),e[6]=g,e[7]=w):w=e[7];const h=w;let v;e[8]!==g||e[9]!==x?(v=ne(g,x),e[8]=g,e[9]=x,e[10]=v):v=e[10];const f=v;let y;e[11]!==i||e[12]!==c||e[13]!==r||e[14]!==p?(y=(d,R)=>{if(d.source.kind==="job"){R==="cancel"&&i(d.source.jobId),R==="retry"&&r(d.source.jobId);return}R==="continue"&&c(d.source.planId),(R==="retry"||R==="switch"||R==="omit")&&p(d.source.planId,R)},e[11]=i,e[12]=c,e[13]=r,e[14]=p,e[15]=y):y=e[15];const A=y;let C;e[16]===Symbol.for("react.memo_cache_sentinel")?(C=d=>{_(R=>Te(R,d))},e[16]=C):C=e[16];const J=C;let S;e[17]===Symbol.for("react.memo_cache_sentinel")?(S=t.jsx("h1",{children:"Jobs"}),e[17]=S):S=e[17];const T=s??"No book selected",E=h.total,$=h.total===1?"job":"jobs";let O;e[18]!==o?(O=ee(o),e[18]=o,e[19]=O):O=e[19];let L;e[20]!==h.total||e[21]!==O||e[22]!==T||e[23]!==$?(L=t.jsxs("span",{className:"jobs-header-meta",children:[T," · ",E," ",$," · updated ",O]}),e[20]=h.total,e[21]=O,e[22]=T,e[23]=$,e[24]=L):L=e[24];let F;e[25]!==h||e[26]!==x?(F=ve.map(d=>t.jsx(ye,{filter:d,active:x===d.id,count:d.count?h[d.count]:null,onSelect:X},d.id)),e[25]=h,e[26]=x,e[27]=F):F=e[27];let B;e[28]!==F?(B=t.jsx("div",{className:"jobs-filters","aria-label":"Filter jobs",children:F}),e[28]=F,e[29]=B):B=e[29];let P;e[30]!==L||e[31]!==B?(P=t.jsxs("div",{className:"jobs-header-title",children:[S,L,B]}),e[30]=L,e[31]=B,e[32]=P):P=e[32];let U;e[33]===Symbol.for("react.memo_cache_sentinel")?(U=t.jsx(me,{size:15}),e[33]=U):U=e[33];let z;e[34]!==l||e[35]!==n?(z=t.jsxs("button",{type:"button",className:"jobs-refresh",disabled:l,onClick:n,children:[U,"Refresh"]}),e[34]=l,e[35]=n,e[36]=z):z=e[36];let q;e[37]!==P||e[38]!==z?(q=t.jsxs("header",{children:[P,z]}),e[37]=P,e[38]=z,e[39]=q):q=e[39];let K;e[40]!==h.total?(K=h.total===0&&t.jsxs("div",{className:"jobs-empty",children:[t.jsx(ae,{size:16,"aria-hidden":"true"}),t.jsx("strong",{children:"No jobs recorded"}),t.jsx("span",{children:"Run a cell or a notebook to queue work."})]}),e[40]=h.total,e[41]=K):K=e[41];let H;e[42]!==h.total||e[43]!==f.length?(H=h.total>0&&f.length===0&&t.jsx("div",{className:"jobs-empty",children:t.jsx("span",{children:"No jobs match this filter."})}),e[42]=h.total,e[43]=f.length,e[44]=H):H=e[44];let V;e[45]!==l||e[46]!==k||e[47]!==A||e[48]!==I||e[49]!==f?(V=f.length>0&&t.jsx("div",{className:"jobs-list-scroll",children:t.jsxs("div",{className:"jobs-list",children:[t.jsxs("div",{className:"jobs-columns","aria-hidden":"true",children:[t.jsx("span",{children:"Status"}),t.jsx("span",{children:"Job"}),t.jsx("span",{children:"Target"}),t.jsx("span",{children:"Progress / result"}),t.jsx("span",{className:"jobs-columns-attempt",children:"Try"}),t.jsx("span",{children:"Enqueued"}),t.jsx("span",{children:"Actions"})]}),f.map(d=>{const Q=d.id==="finished"&&!I?d.rows.slice(0,Z):d.rows;return t.jsxs("div",{className:"jobs-band",children:[t.jsx(Ce,{band:d,hidden:d.rows.length-Q.length,showAll:d.id==="finished"&&I,onToggleShowAll:()=>D(Re)}),Q.map(Y=>t.jsx(Ae,{row:Y,busy:l,expanded:k.has(Y.key),onAction:A,onToggleDetails:J},Y.key))]},d.id)})]})}),e[45]=l,e[46]=k,e[47]=A,e[48]=I,e[49]=f,e[50]=V):V=e[50];let W;return e[51]!==q||e[52]!==K||e[53]!==H||e[54]!==V?(W=t.jsxs("section",{className:"workspace-screen jobs-screen",children:[q,K,H,V]}),e[51]=q,e[52]=K,e[53]=H,e[54]=V,e[55]=W):W=e[55],W}function Re(u){return!u}function Ie(){return new Set}export{$e as J};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as d,b as Lt,j as t,c as _t}from"./vendor-react-Dj7D1fD4.js";import{e9 as Ut,bu as Pt,bY as $t,bt as ye}from"./videobook-Qlp9HQFu.js";import{S as Ke,r as Ht,s as Ot,t as Kt,v as qt,w as Vt,x as Wt}from"./ui-xo_Y1yQg.js";import{X as Gt,aq as Xt,c as qe,ar as Yt,as as Zt,D as Jt,f as Qt,k as Ve,m as We,W as ei,a as Ge,w as ti,F as ii}from"./vendor-icons-CGqhCIXV.js";import"./vendor-DfTCWgKm.js";import"./vendor-mcp-BTlEJcHV.js";import"./vendor-remotion-CH1HXrlc.js";import"./vendor-flow-BXbeWxW7.js";const ie=[{label:"0.5×",value:"1/2",numerator:1,denominator:2},{label:"0.75×",value:"3/4",numerator:3,denominator:4},{label:"1×",value:"1/1",numerator:1,denominator:1},{label:"1.5×",value:"3/2",numerator:3,denominator:2},{label:"2×",value:"2/1",numerator:2,denominator:1}],ai=[{value:"media",label:"Media"},{value:"music",label:"Music"},{value:"autocut",label:"Auto-cut"}],ni=20,si=60;function ri(s){return[...s.querySelectorAll('a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex="-1"])')].filter(l=>l.getClientRects().length>0&&!l.closest("[hidden], [inert]"))}function x(s){return s.timelineStartFrame+s.durationFrames}const ae=$t;function Xe(s){return Math.max(ni,Math.min(si,Math.round(s)))}function li(s,l){const c=[...s].reverse().find(h=>h.frame<l),r=s.find(h=>h.frame>l);return{previous:c?.frame??null,next:r?.frame??null}}function oi(s,l){return l?s.clips.filter(c=>c.trackId===l).sort((c,r)=>c.timelineStartFrame-r.timelineStartFrame||c.clipId.localeCompare(r.clipId)):[]}function ci(s){if(!s||s.source.kind!=="timed")return"1/1";const l=s;return`${l.speed.numerator}/${l.speed.denominator}`}function di(s,l){if(s.source.kind!=="timed")return s.durationFrames;const c=s,r=c.source.range.durationTicks*c.source.range.timeBase.numerator/c.source.range.timeBase.denominator;return Math.max(1,Math.ceil(r*l))}function ui(s){const[l,c]=s.split("/").map(Number);if(!l||!c)return s;const r=l/c;return Number.isInteger(r)?`${r}×`:`${parseFloat(r.toFixed(2))}×`}function mi(s,l){const c=s.findIndex(r=>r.clipId===l.clipId);return c>=0?s[c+1]:void 0}function Ye(s,l,c){const r=l.findIndex(o=>o.clipId===s.clipId),h=r>0?l[r-1]:void 0,f=r>=0?l[r+1]:void 0;return{left:s.timelineStartFrame-(h?x(h):0),right:(f?f.timelineStartFrame:c)-x(s)}}function pi(s,l,c){if(s.source.kind!=="timed")return{before:s.timelineStartFrame,after:Number.MAX_SAFE_INTEGER};const r=s,h=r.speed.numerator/r.speed.denominator,f=r.source.range.timeBase.numerator/r.source.range.timeBase.denominator,o=r.source.range.startTick*f,w=(r.source.range.startTick+r.source.range.durationTicks)*f,ne=l?.duration??w,U=Math.floor(o*c/h),P=Math.floor(Math.max(0,ne-w)*c/h);return r.reverse?{before:P,after:U}:{before:U,after:P}}function fi(s){return/\.(avif|bmp|gif|jpe?g|png|webp)(?:$|\?)/i.test(s)}function bi(s){const l=_t.c(5),{asset:c}=s,r=c.thumbnailUrl??(c.mediaUrl&&fi(c.mediaUrl)?c.mediaUrl:null);if(r){let f;return l[0]!==r?(f=t.jsx("img",{src:r,alt:""}),l[0]=r,l[1]=f):f=l[1],f}if(c.mediaUrl){let f;return l[2]!==c.mediaUrl?(f=t.jsx("video",{src:c.mediaUrl,muted:!0,playsInline:!0,preload:"metadata",onLoadedMetadata:vi}),l[2]=c.mediaUrl,l[3]=f):f=l[3],f}let h;return l[4]===Symbol.for("react.memo_cache_sentinel")?(h=t.jsx(ii,{size:24}),l[4]=h):h=l[4],h}function vi(s){const l=s.currentTarget;l.duration>0&&(l.currentTime=Math.min(.12,l.duration*.15))}function hi(s,l){return s.status==="ready"||s.status==="applying"||s.status==="applied"?s.timelineLimitFrame:Math.max(1,...l.clips.map(x))}function wi({sequence:s,assets:l,audioArtifactId:c,setup:r,returnFocus:h,assembly:f,rhythm:o,address:w,initialFrame:ne=0,onFrameUpdate:U,onExport:P,onPlanDraft:Ze,onApplyDraft:Je,onApplySetup:Qe,onClose:se,onCommit:et,onCreateTrack:tt,onRefreshAssets:it,onRestore:Se,onReviewSetup:ke}){const $=d.useRef(null),at=d.useEffectEvent(se),[L,re]=d.useState(r.status!=="timeline"),[nt,Ie]=d.useState(34),[le,Ce]=d.useState({mode:"beats",fallback:"off"}),[st,we]=d.useState(!1),M=d.useRef(null),Ne=d.useRef(null),Me=d.useRef(null),[F,rt]=d.useState(ne),Fe=d.useCallback(e=>{rt(e),U(e)},[U]),[u,oe]=d.useState(null),[ce,lt]=d.useState(""),[C,q]=d.useState([]),ot=f.selectedClipId,N=f.selectClip,[Ee,E]=d.useState(null),[b,g]=d.useState(null),[Re,p]=d.useState(null),[de,V]=d.useState([]),[ue,W]=d.useState([]),[me,T]=d.useState(null),[G,H]=d.useState(()=>Ut(r.status)),O=l.find(e=>e.artifactId===(o.master?.source.artifactId??c)),S=[...s.tracks].sort((e,i)=>e.ordinal-i.ordinal).find(e=>e.kind==="video")??null,y=oi(s,S?.trackId??null),a=y.find(e=>e.clipId===ot)??null,X=d.useMemo(()=>new Map(l.map(e=>[e.artifactId,e])),[l]),Y=me?X.get(me):void 0,ct=d.useMemo(()=>l.flatMap(e=>e.mediaUrl?[{artifactId:e.artifactId,mediaUrl:e.mediaUrl}]:[]),[l]),pe=d.useMemo(()=>{const e=ce.trim().toLowerCase();return l.filter(i=>(i.type==="video"||i.type==="final")&&i.status==="ready"&&i.mediaUrl&&(!e||i.label.toLowerCase().includes(e)||i.artifactId.toLowerCase().includes(e)))},[l,ce]),v=o.master?o.master.timelineStartFrame+o.master.durationFrames:hi(r,s),j=s.frameRate.numerator/s.frameRate.denominator,fe=Math.max(0,...y.map(x)),Be=Math.max(0,fe-v),be=(r.status==="ready"||r.status==="applied"||r.status==="timeline")&&S!==null&&S.enabled&&!S.locked,_=a?Ee?.clipId===a.clipId?Ee:{clipId:a.clipId,startFrame:a.timelineStartFrame,endFrame:x(a)}:null,ve=a?X.get(a.source.artifactId):void 0,Te=a?pi(a,ve,j):{before:0,after:0},Z=a?y.findIndex(e=>e.clipId===a.clipId):-1,he=a?mi(y,a)?.timelineStartFrame??v:v,Ae=a?Ye(a,y,v):{left:0,right:0},dt=Z>0,ut=Z>=0&&Z<y.length-1,mt=dt||Ae.left>0,pt=ut||Ae.right>0,ft=!!(a&&he>x(a)),De=a?Math.max(0,a.timelineStartFrame-Te.before):0,ze=a?Math.min(v,x(a)+Te.after):v,J=ci(a),bt=ie.some(e=>e.value===J)?[...ie]:[{label:ui(J),value:J},...ie],Le=li(o.mapped,F),R=o.mapped.length>0,A=o.mapped.some(e=>e.bar),vt=o.analysis?.barSource==="estimated"&&!o.rhythm.settings.correction,K=o.status==="queued"||o.status==="analyzing",xe=le.mode==="bars"&&!A?le.fallback:le.mode,B=xe==="beats"&&!R||xe==="bars"&&!A?"off":xe,_e=[{value:"off",label:"Off"},{value:"beats",label:"Beats",disabled:!R,title:R?"Snap edits to beats":"Analyze beats or set a beat grid first"},{value:"bars",label:"Bars",disabled:!R,title:A?"Snap edits to bar starts":"Set up bar starts to enable bar snapping"}];function Q(e="beats"){N(null),re(!0),H("music"),e==="beats"&&we(!!o.master),Ce({mode:e,fallback:B}),e==="bars"&&requestAnimationFrame(()=>{const i=$.current?.querySelector('input[name="beats-per-bar"]');i?.focus(),i?.scrollIntoView({block:"nearest"})})}function Ue(e){if(e==="bars"&&!A){Q(e);return}Ce({mode:e,fallback:"off"})}d.useEffect(()=>{const e=$.current;e?.showModal(),e?.querySelector(".music-video-close")?.focus();const i=n=>{if(n.isComposing||n.keyCode===229||!(n.target instanceof Element)||n.target.closest("dialog")!==e)return;if(n.key==="Escape"){n.preventDefault(),at();return}if(n.key!=="Tab"||!e)return;const m=ri(e),I=m[0],D=m[m.length-1];n.shiftKey&&document.activeElement===I?(n.preventDefault(),D?.focus()):!n.shiftKey&&document.activeElement===D&&(n.preventDefault(),I?.focus())};return document.addEventListener("keydown",i),()=>{document.removeEventListener("keydown",i),e?.close(),Pt(h)}},[h]);const k=async(e,i)=>{if(b||u)return!1;if(!S)return p("Create a main video track before editing clips"),!1;if(r.status!=="ready"&&r.status!=="applied"&&r.status!=="timeline")return p("Wait for the soundtrack duration before editing clips"),!1;g(e),p(null);try{const n=await et(i,s);return V(m=>[...m,{beforeRevision:n.beforeRevision,afterRevision:n.sequence.revision}]),W([]),E(null),!0}catch(n){return p(n instanceof Error?n.message:String(n)),!1}finally{g(null)}},ee=e=>{const i=Math.max(0,Math.min(Math.max(v,...s.clips.map(x))-1,Math.round(e)));T(null),Fe(i),M.current?.seekTo(i)},ht=e=>{T(null),N(e.clipId),s.tracks.find(i=>i.trackId===e.trackId)?.kind==="audio"&&H("music"),E({clipId:e.clipId,startFrame:e.timelineStartFrame,endFrame:x(e)}),ee(e.timelineStartFrame)},xt=e=>{T(e),N(null),q(i=>i.includes(e)?i.filter(n=>n!==e):[...i,e])},gt=async()=>{!S||C.length===0||!await k("Adding clips",{kind:"append_clips",track_id:S.trackId,artifact_ids:C,timeline_limit_frame:o.master?v:Math.max(v,fe+C.reduce((i,n)=>i+Math.ceil((X.get(n)?.duration??0)*j),0)),fit:"source",visual_fit:"fit"})||(q([]),T(null))},jt=async e=>{S&&await k("Reordering clips",{kind:"reorder_clips",track_id:S.trackId,clip_ids:e,timeline_limit_frame:v})},yt=async e=>{if(!a||!S)return;const i=y.findIndex(z=>z.clipId===a.clipId),n=i+e;if(n>=0&&n<y.length){const z=y.map(zt=>zt.clipId),[Oe]=z.splice(i,1);if(!Oe)return;z.splice(n,0,Oe),await jt(z);return}const m=Ye(a,y,v),I=Math.max(1,Math.round(j)),D=e<0?-Math.min(I,m.left):Math.min(I,m.right);D!==0&&await k("Moving clip",{kind:"move",clip_id:a.clipId,track_id:S.trackId,timeline_start_frame:a.timelineStartFrame+D})},St=async()=>{if(!a||he<=x(a))return;const e=he-a.timelineStartFrame;if(a.source.kind!=="timed"){await k("Stretching clip",{kind:"trim",clip_id:a.clipId,timeline_start_frame:a.timelineStartFrame,duration_frames:e,edge:"end",ripple:!1,timeline_limit_frame:v});return}const i=a,n=di(a,j);await k("Stretching clip",{kind:"speed",clip_id:a.clipId,numerator:n,denominator:e,reverse:i.reverse,audio_policy:"mute",ripple:!1,timeline_limit_frame:v})},te=async(e,i,n)=>{if(!(!a||n<=i)&&!(i===a.timelineStartFrame&&n===x(a))){if(B!=="off"&&(e==="start"?i=ye(i,o.mapped,B):n=ye(n,o.mapped,B)),n<=i){p("Choose distinct beat boundaries or turn snapping off");return}await k("Trimming clip",{kind:"trim",clip_id:a.clipId,timeline_start_frame:i,duration_frames:n-i,edge:e,ripple:!1,timeline_limit_frame:v})}},ge=async()=>{if(!a||F<=a.timelineStartFrame||F>=x(a)){p("Place the playhead inside the selected clip before cutting");return}const e=ye(F,o.mapped,B);if(e<=a.timelineStartFrame||e>=x(a)){p("Choose a beat inside the selected clip, or turn snapping off");return}await k("Cutting clip",{kind:"split",clip_id:a.clipId,split_frame:e}),N(null)},Pe=async()=>{a&&(await k("Deleting clip",{kind:"delete",clip_id:a.clipId,ripple:!1}),N(null))},kt=async e=>{if(!a||a.source.kind!=="timed")return;const i=ie.find(z=>z.value===e),[n,m]=e.split("/").map(Number),I=i??(n&&m?{numerator:n,denominator:m}:null);if(!I)return;const D=a;await k("Retiming clip",{kind:"speed",clip_id:a.clipId,numerator:I.numerator,denominator:I.denominator,reverse:D.reverse,audio_policy:"mute",ripple:!1,timeline_limit_frame:v})},$e=async()=>{const e=de[de.length-1];if(!(!e||b)){g("Undoing edit"),p(null);try{await Se(e.beforeRevision,s.revision),V(i=>i.slice(0,-1)),W(i=>[...i,e]),N(null),E(null)}catch(i){p(i instanceof Error?i.message:String(i))}finally{g(null)}}},He=async()=>{const e=ue[ue.length-1];if(!(!e||b)){g("Redoing edit"),p(null);try{await Se(e.afterRevision,s.revision),W(i=>i.slice(0,-1)),V(i=>[...i,e]),N(null),E(null)}catch(i){p(i instanceof Error?i.message:String(i))}finally{g(null)}}},It=(e,i)=>{if(e==="split"&&ge(),e==="delete"&&Pe(),e==="undo"&&$e(),e==="redo"&&He(),e==="search"&&(re(!0),H("media"),requestAnimationFrame(()=>Ne.current?.focus())),e==="zoom-in"&&$.current?.querySelector('[aria-label="Zoom timeline in"]')?.click(),e==="zoom-out"&&$.current?.querySelector('[aria-label="Zoom timeline out"]')?.click(),e==="mark-in"&&a){const n=_?.endFrame??x(a);i<n&&(E({clipId:a.clipId,startFrame:i,endFrame:n}),te("start",i,n))}if(e==="mark-out"&&a){const n=_?.startFrame??a.timelineStartFrame;i>n&&(E({clipId:a.clipId,startFrame:n,endFrame:i}),te("end",n,i))}},Ct=async()=>{if(!(r.status!=="ready"||b)){g("Applying soundtrack"),p(null);try{await Qe()}catch(e){p(e instanceof Error?e.message:String(e))}finally{g(null)}}},wt=async e=>{if(!b){g("Creating soundtrack track"),p(null);try{const i=await tt(e);e==="audio"&&await ke(i)}catch(i){p(i instanceof Error?i.message:String(i))}finally{g(null)}}},Nt=e=>{if(e.defaultPrevented||e.nativeEvent.isComposing||e.nativeEvent.keyCode===229||e.target.closest('input, textarea, select, [contenteditable="true"], .canonical-player'))return;if(M.current){M.current.handleKeyDown(e);return}const n=Me.current,m=e.key.toLowerCase();!n||m!==" "&&m!=="k"||(e.preventDefault(),n.paused?n.play().catch(()=>{}):n.pause())},Mt=async e=>{if(!b){g("Planning draft"),p(null),M.current?.pause();try{const i=await Ze(e,s);oe(i),T(null),ee(e.start_frame)}catch(i){p(i instanceof Error?i.message:String(i))}finally{g(null)}}},Ft=async()=>{if(!(!u||b||u.uncovered.length)){g("Applying draft"),p(null),M.current?.pause();try{const e=await Je(u);V(i=>[...i,{beforeRevision:e.beforeRevision,afterRevision:e.sequence.revision}]),W([]),oe(null),N(null)}catch(e){p(e instanceof Error?e.message:String(e))}finally{g(null)}}},je=!be||!!b||!!u,Et=e=>{if(e.button!==0)return;const i=e.currentTarget;i.setPointerCapture(e.pointerId);const n=I=>{Ie(Xe((window.innerHeight-I.clientY)/window.innerHeight*100))},m=()=>{i.removeEventListener("pointermove",n),i.removeEventListener("pointerup",m),i.removeEventListener("pointercancel",m)};i.addEventListener("pointermove",n),i.addEventListener("pointerup",m),i.addEventListener("pointercancel",m)},Rt=e=>{const i=e.key==="ArrowUp"?2:e.key==="ArrowDown"?-2:0;i&&(e.preventDefault(),e.stopPropagation(),Ie(n=>Xe(n+i)))},Bt=()=>{M.current?.pause(),oe(null)},Tt=C.flatMap(e=>{const i=X.get(e);return i?[i]:[]}),At=A?vt?` · Estimated ${o.analysis?.beatsPerBar}-beat bars`:"":" · Bars not set",Dt=K?"Analyzing beats…":R?`${o.mapped.length} beats${o.analysis?.lowConfidence&&!o.rhythm.settings.correction?" · Review timing":""}${At}`:o.status==="no-beats"?"Analysis complete · No reliable beats found · Set a beat grid":o.master?"Analyze the soundtrack to enable snapping":"Choose a soundtrack for snapping";return Lt.createPortal(t.jsxs("dialog",{className:"music-video-editor timeline-preview-fullscreen","aria-label":w?`Timeline preview ${w}`:"Music video editor",style:{"--music-timeline-height":`${nt}dvh`},onCancel:e=>{e.preventDefault(),se()},ref:$,tabIndex:-1,onKeyDown:Nt,children:[t.jsxs("header",{className:"music-video-editor-header",children:[t.jsx("button",{className:"music-video-close mv-icon",type:"button",onClick:se,"aria-label":w?"Close timeline preview":"Close music video editor",children:t.jsx(Gt,{size:20})}),t.jsxs("div",{className:"music-video-title",children:[t.jsxs("h1",{children:[w?t.jsxs(t.Fragment,{children:["Timeline ",t.jsx("code",{children:w})]}):O?.label??"Music video",u&&t.jsx("span",{className:"mv-draft-badge",children:"Draft preview"})]}),t.jsxs("p",{children:[s.width,"×",s.height," · ",parseFloat(j.toFixed(2))," fps · ",ae(v,j)]})]}),t.jsxs("div",{className:"music-video-header-actions",children:[t.jsxs("button",{type:"button",className:"mv-quiet mv-tools-toggle","aria-pressed":L,"aria-label":L?"Hide tools":"Show tools",onClick:()=>re(e=>!e),children:[t.jsx(Xt,{size:16})," ",t.jsx("span",{children:L?"Hide tools":"Show tools"})]}),u?t.jsxs(t.Fragment,{children:[t.jsx("span",{className:"mv-draft-note",children:"Nothing changes until you apply."}),t.jsx("button",{type:"button",disabled:!!b,onClick:Bt,children:"Discard draft"}),t.jsxs("button",{type:"button",className:"mv-apply",disabled:!!b||u.uncovered.length>0,onClick:()=>{Ft()},children:[t.jsx(qe,{size:16})," Apply draft"]})]}):t.jsxs(t.Fragment,{children:[t.jsxs("button",{type:"button",className:"mv-quiet",disabled:!!b||de.length===0,onClick:()=>{$e()},children:[t.jsx(Yt,{size:16})," Undo"]}),t.jsxs("button",{type:"button",className:"mv-quiet",disabled:!!b||ue.length===0,onClick:()=>{He()},children:[t.jsx(Zt,{size:16})," Redo"]}),t.jsxs("button",{type:"button",className:"mv-primary",onClick:P,children:[t.jsx(Jt,{size:16})," Export"]})]})]})]}),t.jsxs("main",{className:["music-video-editor-main",L?"":"tools-hidden",a||u?"inspecting":""].filter(Boolean).join(" "),children:[t.jsxs("aside",{className:"music-video-library","aria-label":"Library",hidden:!L,children:[t.jsx("div",{className:"music-video-library-tabs",role:"tablist","aria-label":"Library views",children:ai.map(e=>t.jsx("button",{type:"button",role:"tab",id:`mv-tab-${e.value}`,"aria-controls":`mv-panel-${e.value}`,"aria-selected":G===e.value,onClick:()=>H(e.value),children:e.label},e.value))}),t.jsxs("section",{className:"music-video-source-panel",role:"tabpanel",id:"mv-panel-media","aria-labelledby":"mv-tab-media",hidden:G!=="media",children:[t.jsxs("div",{className:"mv-panel-head",children:[t.jsxs("label",{className:"music-video-search",children:[t.jsx(Qt,{size:15}),t.jsx("input",{ref:Ne,value:ce,onChange:e=>lt(e.target.value),placeholder:"Search this book","aria-label":"Search source clips"})]}),t.jsx("button",{type:"button",className:"mv-icon","aria-label":"Refresh media",title:"Refresh media",onClick:()=>{it().catch(e=>p(String(e)))},children:t.jsx(Ve,{size:15})})]}),t.jsxs("div",{className:"mv-panel-meta",children:[t.jsxs("span",{children:[C.length," of ",pe.length," selected"]}),C.length>0&&t.jsx("button",{type:"button",className:"mv-link",onClick:()=>q([]),children:"Clear"})]}),t.jsxs("div",{className:"music-video-source-list",children:[pe.map(e=>{const i=C.indexOf(e.artifactId),n=me===e.artifactId;return t.jsxs("button",{type:"button",className:[i>=0?"selected":"",n?"previewing":""].filter(Boolean).join(" "),"aria-pressed":i>=0,"aria-label":e.label,onClick:()=>xt(e.artifactId),children:[t.jsxs("span",{className:"music-video-source-thumb",children:[t.jsx(bi,{asset:e}),i>=0&&t.jsx("i",{children:i+1}),e.duration!==null&&t.jsx("small",{children:ae(Math.round(e.duration*j),j)})]}),t.jsx("span",{className:"music-video-source-name",title:e.label,children:e.label})]},e.artifactId)}),pe.length===0&&t.jsx("p",{children:"No ready video sources match this search."})]}),t.jsxs("footer",{className:"mv-panel-foot",children:[t.jsxs("button",{type:"button",className:"mv-primary music-video-add-selected",disabled:je||C.length===0,onClick:()=>{gt()},children:[t.jsx(We,{size:15})," Add ",C.length||""," to end"]}),t.jsxs("button",{type:"button",disabled:C.length===0,onClick:()=>H("autocut"),children:[t.jsx(ei,{size:15})," Auto-cut…"]})]})]}),t.jsxs("section",{className:"mv-music-panel",role:"tabpanel",id:"mv-panel-music","aria-labelledby":"mv-tab-music",hidden:G!=="music",children:[t.jsxs("div",{className:"music-video-setup-card","data-status":r.status,children:[t.jsxs("span",{className:"mv-kicker",children:[t.jsx(Ge,{size:13})," Soundtrack",O?` · ${O.label}`:""]}),r.status==="loading"&&t.jsx("p",{children:"Building the exact canonical setup plan…"}),r.status==="needs-audio-track"&&t.jsxs(t.Fragment,{children:[t.jsx("p",{children:r.message}),t.jsxs("button",{type:"button",className:"mv-primary",disabled:!!b,onClick:()=>{wt("audio")},children:[t.jsx(We,{size:15})," Create soundtrack track"]})]}),(r.status==="ready"||r.status==="applying")&&t.jsxs(t.Fragment,{children:[t.jsx("strong",{children:r.summary}),t.jsxs("p",{children:[r.operationCount," atomic operations · ends at ",ae(r.timelineLimitFrame,j)]}),r.warnings.map(e=>t.jsx("small",{children:e},e)),t.jsxs("button",{type:"button",className:"mv-primary",disabled:!!b,onClick:()=>{Ct()},children:[t.jsx(Ge,{size:15})," Apply soundtrack"]})]}),r.status==="applied"&&t.jsxs("strong",{className:"music-video-applied",children:[t.jsx(qe,{size:15})," Soundtrack applied"]}),r.status==="error"&&t.jsxs(t.Fragment,{children:[t.jsx("p",{className:"music-video-error",children:r.message}),t.jsxs("button",{type:"button",disabled:!!b,onClick:()=>{ke()},children:[t.jsx(Ve,{size:15})," Review again"]})]})]}),t.jsxs("div",{className:"mv-control",children:[t.jsx("span",{children:"Snap edits to"}),t.jsx(Ke,{label:"Snap to music",options:_e,value:B,onChange:Ue}),t.jsx("p",{className:"mv-hint",children:"Hold Alt while dragging to ignore snapping."})]}),t.jsx(Ht,{rhythm:o,sequence:s,assets:l,frame:F,correctionsOpen:st,onCorrectionsOpenChange:we})]}),t.jsx("section",{className:"mv-autocut-panel",role:"tabpanel",id:"mv-panel-autocut","aria-labelledby":"mv-tab-autocut",hidden:G!=="autocut",children:t.jsx(Ot,{sources:Tt,trackId:S?.trackId??null,startFrame:o.master?.timelineStartFrame??0,endFrame:v,fps:j,hasBars:A,busy:!!b,draft:u,onPlan:e=>{Mt(e)},onOrder:q})})]}),t.jsxs("section",{className:"music-video-preview-panel timeline-preview-body","aria-label":"Program monitor",children:[t.jsx("div",{className:"mv-monitor",children:Y?.mediaUrl?t.jsxs("div",{className:"music-video-source-preview",children:[t.jsx("video",{ref:Me,src:Y.mediaUrl,controls:!0,autoPlay:!0,muted:!0,playsInline:!0},Y.artifactId),t.jsxs("p",{children:[t.jsxs("span",{children:["Source · ",Y.label]}),t.jsx("button",{type:"button",onClick:()=>T(null),children:"Show sequence"})]})]}):t.jsx(Kt,{ref:M,sequence:u?.sequence??s,assets:ct,onFrameUpdate:Fe,initialFrame:F,presentation:"preview",allowFullscreen:!1,editingEnabled:!u,onKeyboardAction:It})}),t.jsx(qt,{frame:F,durationFrames:Math.max(v,fe),fps:j,previousBeat:Le.previous,nextBeat:Le.next,onTogglePlay:()=>{T(null),M.current?.togglePlay()},onSeek:ee})]}),t.jsxs("aside",{className:"music-video-inspector","aria-label":"Inspector",hidden:!L,children:[a&&!u&&t.jsx("button",{type:"button",className:"mv-link mv-back",onClick:()=>N(null),children:"← Back to library"}),u?t.jsxs("div",{className:"mv-draft-summary",children:[t.jsx("span",{className:"mv-kicker",children:"Draft review"}),t.jsx("strong",{children:u.plan.summary}),t.jsxs("p",{children:[u.shots.length," shots · replaces ",u.preview.diff.removedClipIds.length," clips"]}),u.uncovered.length>0&&t.jsx("p",{className:"music-video-error",children:"Gaps remain, so the draft can't be applied. Allow repeated footage or add sources in Auto-cut."}),u.warnings.map(e=>t.jsx("small",{children:e},e)),t.jsx("p",{className:"mv-hint",children:"The full shot list is in Auto-cut."})]}):a&&_?t.jsx(Vt,{clip:a,label:ve?.label??"Clip",thumbnailUrl:ve?.thumbnailUrl??null,index:Z+1,count:y.length,fps:j,trimStart:_.startFrame,trimEnd:_.endFrame,trimMin:De,trimMax:Math.max(_.endFrame,ze),speed:J,speedOptions:bt,retimable:a.source.kind==="timed",busy:!!b,editsDisabled:je,canMoveEarlier:mt,canMoveLater:pt,canStretch:ft,onTrim:(e,i,n)=>{E({clipId:a.clipId,startFrame:i,endFrame:n}),te(e,i,n)},onSpeed:e=>{kt(e)},onFit:e=>{k("Fitting clip",{kind:"transform",clip_id:a.clipId,fit:e})},onSplit:()=>{ge()},onStretch:()=>{St()},onMove:e=>{yt(e)},onDelete:()=>{Pe()}}):t.jsxs("div",{className:"mv-sequence-summary",children:[t.jsx("span",{className:"mv-kicker",children:"Sequence"}),t.jsxs("dl",{children:[t.jsx("dt",{children:"Frame"}),t.jsxs("dd",{children:[s.width," × ",s.height]}),t.jsx("dt",{children:"Rate"}),t.jsxs("dd",{children:[parseFloat(j.toFixed(2))," fps"]}),t.jsx("dt",{children:"Length"}),t.jsx("dd",{children:ae(v,j)}),t.jsx("dt",{children:"Clips"}),t.jsx("dd",{children:y.length})]}),y.length>0?t.jsx("p",{children:"Select a clip on the timeline to trim, retime or delete it."}):t.jsxs("ol",{className:"mv-steps",children:[t.jsx("li",{children:"Pick footage in Media"}),t.jsx("li",{children:"Choose a soundtrack in Music"}),t.jsx("li",{children:"Auto-cut, or add clips and trim by hand"})]})]})]}),t.jsxs("section",{className:"music-video-timeline-panel","aria-label":"Music video timeline",children:[t.jsx("button",{type:"button",className:"mv-resize-handle","aria-label":"Resize timeline",title:"Drag to resize the timeline (↑/↓)",onPointerDown:Et,onKeyDown:Rt}),t.jsx(Wt,{sequence:u?.sequence??s,assets:l,assembly:f,disabled:!!b||!!u,frame:F,address:w??"",onSeek:ee,onSelectClip:ht,onExport:P,presentation:"preview",onMoveClip:be?(e,i)=>{k("Moving clip",{kind:"move",clip_id:e.clipId,track_id:e.trackId,timeline_start_frame:i})}:void 0,onRemoveClip:e=>{k("Removing clip",{kind:"remove_clip",clip_id:e.clipId,ripple:!1})},onTrimClip:be?(e,i,n,m)=>{e.clipId===a?.clipId&&(E({clipId:e.clipId,startFrame:n,endFrame:m}),te(i,n,m))}:void 0,trimBounds:a?{min:De,max:Math.max(x(a),ze)}:void 0,rhythm:{masterClipId:o.master?.clipId??null,markers:o.mapped,analysis:o.analysis,snap:B},toolbar:t.jsxs(t.Fragment,{children:[t.jsx("span",{children:"Snap"}),t.jsx(Ke,{label:"Snap to music",options:_e,value:B,onChange:Ue}),!o.master&&t.jsx("button",{type:"button",disabled:o.busy,onClick:()=>Q(),children:"Choose soundtrack"}),o.master&&!R&&!K&&t.jsx("button",{type:"button",disabled:o.busy,onClick:()=>{o.analyze(!!o.analysis)},children:o.analysis?"Analyze again":"Analyze beats"}),K&&t.jsx("button",{type:"button",disabled:o.busy,onClick:()=>{o.cancel()},children:"Cancel analysis"}),o.master&&!R&&o.analysis&&!K&&t.jsx("button",{type:"button",disabled:o.busy,onClick:()=>Q(),children:"Set beat grid"}),R&&!A&&t.jsx("button",{type:"button",disabled:o.busy||K,onClick:()=>Q("bars"),children:"Set bars"}),t.jsxs("button",{type:"button",disabled:je||!a,title:"Split the selected clip at the playhead (S)",onClick:()=>{ge()},children:[t.jsx(ti,{size:14})," Split"]}),o.master&&t.jsxs("span",{className:"music-master-name",title:O?.label,children:["♪ ",O?.label??"Soundtrack"]}),t.jsx("span",{role:"status",children:Dt})]})}),Be>0&&t.jsxs("p",{children:[Be," frames beyond soundtrack"]})]})]}),t.jsxs("footer",{className:"music-video-status","aria-live":"polite",children:[t.jsx("span",{children:b??(u?"Draft ready · review it, then apply or discard":"Saved")}),(Re||o.error)&&t.jsx("strong",{role:"alert",children:Re||o.error}),t.jsx("span",{className:"mv-shortcuts",children:"Space play · J/L shuttle · ←/→ frame · I/O trim · S split · Delete · ⌘Z undo"})]})]}),document.body)}export{wi as MusicVideoEditor};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.music-video-editor{--mv-accent: var(--green, #72e7aa);--mv-muted: #86ad99;--mv-bright: #e1ffed;--mv-amber: #e7c372;--mv-cyan: var(--cyan, #63c7d8);box-sizing:border-box;grid-template-rows:auto minmax(0,1fr) auto;font-size:12px;color:var(--ink);background:var(--surface-deep)}.music-video-editor *,.music-video-editor *:before,.music-video-editor *:after{box-sizing:border-box}.music-video-editor button,.music-video-editor input,.music-video-editor select{font:inherit}.music-video-editor button{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:32px;padding:0 11px;border:1px solid var(--line);border-radius:5px;color:var(--control-fg);background:var(--control-bg);cursor:pointer;white-space:nowrap}.music-video-editor button:hover:not(:disabled),.music-video-editor button[aria-pressed=true]{border-color:var(--mv-accent);background:var(--control-bg-hover);color:var(--control-fg-hover)}.music-video-editor button:focus-visible,.music-video-editor input:focus-visible,.music-video-editor select:focus-visible,.music-video-editor summary:focus-visible{outline:2px solid var(--mv-accent);outline-offset:1px}.music-video-editor button:disabled{cursor:default;opacity:.4}.music-video-editor .danger-button{color:#ffa99d}.music-video-editor .danger-button:hover:not(:disabled){border-color:var(--danger-border-hover);background:var(--danger-bg-hover);color:var(--danger-fg-hover)}.music-video-editor input,.music-video-editor select{min-width:0;min-height:32px;color:var(--mv-bright);background:var(--surface-deep);border:1px solid var(--line);border-radius:5px;padding:0 8px}.music-video-editor input[type=range]{padding:0;accent-color:var(--mv-accent)}.music-video-editor input[type=checkbox]{min-height:0;width:15px;height:15px;accent-color:var(--mv-accent)}.music-video-editor p{margin:0;color:var(--ink);line-height:1.5}.music-video-editor [hidden]{display:none!important}.music-video-editor .mv-primary{border-color:var(--mv-accent);background:var(--mv-accent);color:#03140b;font-weight:600}.music-video-editor .mv-primary:hover:not(:disabled){border-color:#a3f5c9;background:#a3f5c9;color:#03140b}.music-video-editor .mv-apply{border-color:var(--mv-amber);background:var(--mv-amber);color:#1d1403;font-weight:600}.music-video-editor .mv-apply:hover:not(:disabled){border-color:#f3d898;background:#f3d898;color:#1d1403}.music-video-editor .mv-quiet{border-color:transparent;background:transparent}.music-video-editor .mv-icon{width:34px;min-width:34px;padding:0;border-color:transparent;background:transparent}.music-video-editor .mv-back{display:none}.music-video-editor .mv-link{min-height:24px;padding:0 4px;border:0;background:transparent;color:var(--mv-accent)}.mv-kicker{display:flex;align-items:center;gap:6px;color:var(--mv-accent);font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase}.mv-hint{color:var(--mv-muted)!important;font-size:11px}.mv-control{display:grid;gap:6px}.mv-control>span{color:var(--mv-muted);font-size:11px}.mv-segmented{display:inline-flex;gap:2px;padding:2px;border:1px solid var(--line);border-radius:6px;background:var(--surface-deep);flex-shrink:0}.mv-segmented.stretch{display:flex}.mv-segmented.stretch>button{flex:1}.music-video-editor .mv-segmented>button{min-height:26px;padding:0 9px;border-color:transparent;background:transparent;color:var(--mv-muted);font-size:11px}.music-video-editor .mv-segmented>button[aria-pressed=true]{border-color:transparent;background:#1e5a3b;color:var(--mv-bright);font-weight:600}.mv-field{display:grid;gap:5px;color:var(--mv-muted);font-size:11px}.mv-field input{width:100%;font-variant-numeric:tabular-nums}.mv-field input[aria-invalid=true]{border-color:var(--danger)}.music-video-editor-header{display:flex;align-items:center;gap:12px;min-height:52px;padding:0 12px 0 8px;border-bottom:1px solid var(--line);background:var(--surface)}.music-video-title{display:grid;gap:1px;min-width:0;flex:1}.music-video-title h1{display:flex;align-items:center;gap:8px;overflow:hidden;margin:0;font-size:14px;font-weight:600;color:var(--mv-bright);white-space:nowrap}.music-video-title h1 code{color:var(--mv-accent);font:inherit}.music-video-title p{color:var(--mv-muted);font-size:11px;white-space:nowrap;font-variant-numeric:tabular-nums}.mv-draft-badge{padding:2px 7px;border-radius:3px;background:var(--mv-amber);color:#1d1403;font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.mv-draft-note{color:var(--mv-muted)}.music-video-header-actions{display:flex;align-items:center;gap:6px;flex-shrink:0}.music-video-editor-main{display:grid;grid-template-columns:minmax(240px,300px) minmax(0,1fr) minmax(240px,300px);grid-template-rows:minmax(0,1fr) clamp(220px,var(--music-timeline-height, 34dvh),60dvh);grid-template-areas:"library preview inspector" "timeline timeline timeline";min-height:0;overflow:hidden}.music-video-editor-main.tools-hidden{grid-template-columns:minmax(0,1fr);grid-template-areas:"preview" "timeline"}.music-video-library{grid-area:library;display:flex;flex-direction:column;min-height:0;border-right:1px solid var(--line);background:var(--surface)}.music-video-inspector{grid-area:inspector;display:flex;flex-direction:column;min-height:0;min-width:0;overflow:auto;border-left:1px solid var(--line);background:var(--surface)}.music-video-preview-panel{grid-area:preview;display:flex;flex-direction:column;min-height:0;min-width:0;overflow:hidden;background:#020705}.music-video-timeline-panel{grid-area:timeline;min-height:0;min-width:0;position:relative;border-top:1px solid var(--line)}.music-video-timeline-panel>p{position:absolute;right:18px;bottom:14px;pointer-events:none;color:#f7d776}.music-video-library-tabs{display:flex;flex-shrink:0;border-bottom:1px solid var(--line)}.music-video-editor .music-video-library-tabs>button{flex:1;min-height:42px;border:0;border-bottom:2px solid transparent;border-radius:0;background:transparent;color:var(--mv-muted);font-weight:500}.music-video-editor .music-video-library-tabs>button:hover{background:transparent;color:var(--mv-bright)}.music-video-editor .music-video-library-tabs>button[aria-selected=true]{border-bottom-color:var(--mv-accent);color:var(--mv-bright)}.music-video-library [role=tabpanel]{flex:1;min-height:0}.music-video-source-panel{display:flex;flex-direction:column}.mv-panel-head{display:flex;gap:6px;padding:10px 10px 0}.music-video-search{position:relative;display:flex;align-items:center;flex:1}.music-video-search>svg{position:absolute;left:9px;color:var(--mv-muted);pointer-events:none}.music-video-search input{width:100%;padding-left:30px}.mv-panel-meta{display:flex;align-items:center;justify-content:space-between;min-height:32px;padding:0 10px;color:var(--mv-muted);font-size:11px}.music-video-source-list{flex:1;min-height:0;overflow:auto;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:max-content;align-content:start;gap:8px;padding:0 10px 10px}.music-video-source-list>p{grid-column:1 / -1;color:var(--mv-muted)}.music-video-editor .music-video-source-list>button{display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto auto;align-content:start;align-items:stretch;gap:0;min-width:0;min-height:0;padding:0;overflow:hidden;border-radius:7px;text-align:left;white-space:normal;background:var(--surface-raised)}.music-video-editor .music-video-source-list>button.selected{border-color:var(--mv-accent);box-shadow:0 0 0 1px var(--mv-accent);background:var(--surface-raised)}.music-video-editor .music-video-source-list>button.previewing{box-shadow:0 0 0 1px var(--mv-accent),0 0 0 4px #72e7aa2e}.music-video-source-thumb{position:relative;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr);place-items:center;width:100%;min-width:0;min-height:0;overflow:hidden;aspect-ratio:4 / 3;background:#000;color:var(--mv-muted)}.music-video-source-thumb img,.music-video-source-thumb video{width:100%;height:100%;min-width:0;min-height:0;object-fit:contain}.music-video-source-thumb i{position:absolute;top:5px;left:5px;display:grid;place-items:center;width:20px;height:20px;border-radius:50%;background:var(--mv-accent);color:#03140b;font-size:11px;font-style:normal;font-weight:700}.music-video-source-thumb small{position:absolute;right:5px;bottom:5px;padding:1px 5px;border-radius:3px;background:#030907d1;color:var(--mv-bright);font-size:10px;font-variant-numeric:tabular-nums}.music-video-source-name{display:-webkit-box;min-width:0;min-height:2.8em;overflow:hidden;margin:6px 8px;color:var(--control-fg);font-size:11px;line-height:1.4;overflow-wrap:anywhere;-webkit-box-orient:vertical;-webkit-line-clamp:2}.mv-panel-foot{display:flex;gap:6px;padding:10px;border-top:1px solid var(--line)}.mv-panel-foot>.music-video-add-selected{flex:1}.mv-music-panel,.mv-autocut-panel{display:grid;align-content:start;gap:14px;overflow:auto;padding:12px}.music-video-setup-card{display:grid;gap:8px;padding:12px;border:1px solid rgba(99,199,216,.35);border-radius:8px;background:#63c7d80f}.music-video-setup-card .mv-kicker{color:var(--mv-cyan);text-transform:none;letter-spacing:0;font-size:12px}.music-video-setup-card>strong{color:var(--mv-bright);font-weight:600}.music-video-setup-card>button{justify-self:start}.music-video-applied{display:flex;align-items:center;gap:6px;color:var(--mv-accent)}.music-video-error{color:#ffa99d!important}.mv-monitor{flex:1;min-height:0;display:grid}.music-video-editor .timeline-preview-body{height:100%}.music-video-source-preview{height:100%;min-height:0;display:grid;grid-template-rows:minmax(0,1fr) auto}.music-video-source-preview video{width:100%;height:100%;min-height:0;object-fit:contain;background:#000}.music-video-source-preview p{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:5px 12px;color:var(--mv-muted)}.mv-transport{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:12px;min-height:56px;padding:0 16px;border-top:1px solid var(--line)}.mv-timecode{color:var(--mv-muted);font-size:13px;font-variant-numeric:tabular-nums;white-space:nowrap}.mv-timecode strong{color:var(--mv-accent);font-weight:600}.mv-transport-buttons{display:flex;align-items:center;gap:4px}.music-video-editor .mv-play{width:42px;height:42px;padding:0;border:0;border-radius:50%;background:var(--mv-accent);color:#03140b}.music-video-editor .mv-play:hover:not(:disabled){background:#a3f5c9;color:#03140b}.mv-clip-inspector{display:flex;flex-direction:column;flex:1;min-height:0}.mv-clip-inspector>header{display:flex;align-items:center;gap:10px;padding:14px;border-bottom:1px solid var(--line)}.mv-clip-inspector>header img,.mv-clip-swatch{width:60px;height:34px;flex-shrink:0;border-radius:4px;object-fit:cover;background:#1f3a44}.mv-clip-inspector>header div{display:grid;gap:2px;min-width:0}.mv-clip-inspector>header strong{overflow:hidden;color:var(--mv-bright);font-size:13px;font-weight:600;text-overflow:ellipsis;white-space:nowrap}.mv-clip-inspector>header small{color:var(--mv-muted);font-variant-numeric:tabular-nums}.mv-clip-body{display:grid;gap:14px;padding:14px}.mv-field-pair{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.mv-clip-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin-top:auto;padding:12px 14px 14px;border-top:1px solid var(--line)}.mv-clip-actions .wide{grid-column:1 / -1}.mv-sequence-summary,.mv-draft-summary{display:grid;align-content:start;gap:12px;padding:14px}.mv-sequence-summary dl{display:grid;grid-template-columns:auto 1fr;gap:6px 12px;margin:0;font-variant-numeric:tabular-nums}.mv-sequence-summary dt{color:var(--mv-muted)}.mv-sequence-summary dd{margin:0;color:var(--mv-bright);text-align:right}.mv-steps{display:grid;gap:8px;margin:0;padding-left:18px;color:var(--control-fg)}.mv-steps li::marker{color:var(--mv-accent)}.mv-draft-summary{border-bottom:1px solid rgba(231,195,114,.3);background:#e7c3720f}.mv-draft-summary .mv-kicker{color:var(--mv-amber)}.mv-draft-summary strong{color:var(--mv-bright);font-size:14px;font-weight:600}.mv-draft-summary small{color:var(--mv-amber)}.music-video-editor .mv-resize-handle{position:absolute;z-index:3;top:-6px;left:50%;width:56px;min-height:12px;height:12px;margin-left:-28px;padding:0;border:0;background:transparent;cursor:ns-resize;touch-action:none}.music-video-editor .mv-resize-handle:after{content:"";width:36px;height:4px;border-radius:2px;background:var(--scrollbar-thumb)}.music-video-editor .mv-resize-handle:hover:after,.music-video-editor .mv-resize-handle:focus-visible:after{background:var(--mv-accent)}.music-video-editor .timeline-music-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:5px 10px;border-bottom:1px solid var(--line);flex-shrink:0}.timeline-music-toolbar [role=status]{flex:1 1 180px;margin-left:auto;text-align:right;color:var(--mv-muted);font-variant-numeric:tabular-nums}.music-video-editor .timeline-music-toolbar>button{min-height:30px}.music-video-editor .notebook-timeline .timeline-clip{justify-content:flex-start;padding:0 5px;border-radius:4px;background:#284239}.music-video-editor .timeline-track-audio .timeline-clip{background:#20354a}.music-video-editor .timeline-track-label button{padding:3px;min-height:24px}.music-master-name{max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#96cceb;flex-shrink:0}.music-video-status{display:flex;align-items:center;gap:12px;min-height:26px;padding:0 12px;border-top:1px solid var(--line);color:var(--mv-muted);font-size:11px}.music-video-status strong{color:#ffa99d}.mv-shortcuts{margin-left:auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.music-rhythm-controls{display:grid;min-width:0;gap:10px}.music-rhythm-controls>*{min-width:0}.music-rhythm-controls [role=alert]{color:#ffa99d}.music-rhythm-controls [role=status]{color:var(--mv-muted)}.music-video-edit-actions,.music-rhythm-row{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.music-rhythm-row label{display:flex;flex-wrap:wrap;min-width:0;max-width:100%;align-items:center;gap:6px}.music-rhythm-row input{width:64px}.music-rhythm-row select{max-width:100%}.music-bar-setup{display:grid;gap:8px;padding:10px;border:1px solid var(--line);border-radius:6px}.music-bar-setup p{margin:0}.music-bar-setup small{color:var(--mv-muted)}.music-rhythm-fixes{display:grid;gap:8px;border-top:1px solid var(--line);padding-top:8px}.music-rhythm-fixes summary{cursor:pointer;color:var(--mv-accent);padding:4px 0}.music-rhythm-fixes[open]>summary{margin-bottom:6px}.music-draft-controls,.music-draft-controls form{display:grid;gap:12px}.music-draft-controls .music-rhythm-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.music-draft-controls .music-rhythm-row label{display:grid;gap:5px;color:var(--mv-muted);font-size:11px}.music-draft-controls .music-rhythm-row input:not([type=checkbox]),.music-draft-controls .music-rhythm-row select{width:100%}.music-draft-controls .music-rhythm-row label:has(input[type=checkbox]){grid-column:1 / -1;display:flex;color:var(--control-fg);font-size:12px}.music-draft-controls .music-rhythm-row>button[type=submit]{grid-column:1 / -1;min-height:38px;border-color:var(--mv-amber);background:var(--mv-amber);color:#1d1403;font-weight:600}.music-draft-order{display:grid;gap:4px;margin:0;padding:0;list-style:none}.music-draft-order li{display:flex;align-items:center;gap:8px;min-height:32px;padding:0 4px 0 8px;border:1px solid var(--line);border-radius:6px;background:var(--surface-raised)}.music-draft-order li b{color:var(--mv-accent)}.music-draft-order li span{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.music-video-editor .music-draft-order button{min-height:24px;width:26px;padding:0;border-color:transparent;background:transparent}.music-draft-review{display:grid;gap:6px}.music-draft-review strong{color:var(--mv-bright)}.music-draft-review table{width:100%;border-collapse:collapse;text-align:left;font-size:11px;font-variant-numeric:tabular-nums}.music-draft-review td,.music-draft-review th{padding:4px 6px;border-bottom:1px solid var(--line)}.music-draft-review th{color:var(--mv-muted);font-weight:500}@media(max-width:900px){.music-video-editor-main{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(160px,1fr) clamp(180px,var(--music-timeline-height, 34dvh),40dvh) minmax(0,30dvh);grid-template-areas:"preview" "timeline" "tools"}.music-video-library,.music-video-inspector{grid-area:tools}.music-video-editor-main:not(.inspecting)>.music-video-inspector,.music-video-editor-main.inspecting>.music-video-library{display:none}.music-video-editor-main.tools-hidden{grid-template-rows:minmax(140px,1fr) clamp(200px,var(--music-timeline-height, 34dvh),50dvh);grid-template-areas:"preview" "timeline"}.music-video-library,.music-video-inspector{min-height:0;overflow:auto;border:0;border-top:1px solid var(--line)}.music-video-editor .mv-back{display:inline-flex;align-self:flex-start;margin:8px 10px 0}.music-video-source-list{grid-template-columns:repeat(auto-fill,minmax(120px,1fr))}.mv-draft-note,.mv-shortcuts{display:none}}@media(max-width:560px){.music-video-editor-header{gap:6px;padding:0 6px}.music-video-header-actions{gap:3px}.music-video-header-actions button{padding:0 7px}.music-video-header-actions button:not(.mv-tools-toggle)>svg{display:none}.music-video-header-actions .mv-tools-toggle{width:34px;padding:0}.music-video-header-actions .mv-tools-toggle>span{display:none}.music-video-title p{display:none}.mv-transport{grid-template-columns:auto 1fr;padding:0 8px}.mv-transport-spacer{display:none}.music-video-editor .notebook-timeline-preview .notebook-timeline-header{padding:4px 6px;gap:4px}.music-video-editor .notebook-timeline-preview .timeline-toolbar{gap:2px}.music-video-editor .notebook-timeline-preview .timeline-toolbar button{font-size:10px;padding:3px 4px;min-height:24px}}@media(max-height:500px){.music-video-editor-header{min-height:38px}.music-video-editor-main{grid-template-rows:minmax(0,1fr) 170px}.music-video-editor-main.tools-hidden{grid-template-rows:minmax(0,1fr) 190px}.mv-transport{min-height:40px}.music-video-status{display:none}}.music-video-editor .canonical-player-shortcuts{display:none}@media(max-width:900px)and (max-height:500px){.music-video-editor-main{grid-template-rows:minmax(0,1fr) 150px minmax(0,30dvh)}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.post-inspector{padding:24px;display:grid;gap:22px;max-width:900px;margin:auto;width:100%;box-sizing:border-box;overflow:auto;color:var(--text-primary,#d9e4ed)}.post-heading{display:flex;align-items:center;justify-content:space-between;gap:16px}.post-heading h2{margin:4px 0;font-size:22px}.post-eyebrow{font-size:11px;text-transform:uppercase;letter-spacing:.13em;color:#8dabbf}.post-status{text-transform:capitalize;border:1px solid #3e596b;padding:5px 10px;border-radius:99px;font-size:12px}.post-status-posted,.post-status-ready{color:#9ae2bd;border-color:#46765c}.post-status-failed,.post-status-needs_reconciliation,.post-error{color:#f5aa99}.post-media{width:100%;max-height:320px;object-fit:contain;background:#080d13;border-radius:8px}.post-source,.post-receipt{display:grid;gap:6px;padding:14px;border:1px solid #2d4352;border-radius:8px}.post-source button,.post-lineage button{justify-self:start}.post-inspector form{display:grid;gap:12px}.post-inspector label{display:grid;gap:6px;font-size:12px;color:#a6bccb}.post-inspector input,.post-inspector select,.post-inspector textarea{box-sizing:border-box;width:100%;border:1px solid #344d60;border-radius:5px;background:#111d29;color:#e0eaf1;padding:9px;font:inherit}.post-inspector textarea{resize:vertical}.post-inspector :disabled{opacity:.55}.post-fields{display:grid;grid-template-columns:1fr 1fr;gap:14px}.post-inspector button{border:1px solid #405d70;background:#192d3d;color:#d8eaf6;padding:8px 12px;border-radius:5px;cursor:pointer;font:inherit;font-size:12px}.post-inspector form>button{justify-self:start}.post-inspector p{font-size:13px;line-height:1.5;margin:4px 0}.post-inspector small{display:block;color:#93aabc;font-size:11px;line-height:1.5}.post-inspector h3{font-size:15px;margin:0 0 10px}.post-delivery,.post-results{display:grid;gap:12px;padding-top:18px;border-top:1px solid #2c4252}.post-delivery button{justify-self:start}.post-receipt span{overflow-wrap:anywhere}.post-inspector a{color:#8bc7ef;text-decoration:none}.post-metric-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.post-metric-grid>div{background:#142332;border:1px solid #294154;padding:12px;border-radius:6px}.post-metric-grid strong{font-size:23px;display:block;font-weight:500}.post-metric-grid span{font-size:11px;color:#a3b9c9;text-transform:capitalize}.post-metric-inputs{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.post-inspector summary{cursor:pointer;font-size:13px;margin:8px 0}.post-history p,.post-lineage>div{padding:10px 0;border-bottom:1px solid #233c4f}.post-history span{display:block}.post-lineage p{white-space:pre-wrap;max-height:160px;overflow:auto}.post-delete{justify-self:start;color:#f2aca0!important}.post-badge{display:inline-flex;align-items:center;margin-left:6px;min-height:18px;padding:0 7px;border:1px solid #46765c;border-radius:99px;color:#9ae2bd;font-size:10px;letter-spacing:.04em;text-transform:none}@media(max-width:700px){.post-inspector{padding:16px}.post-fields{grid-template-columns:1fr}}.post-tile{display:flex;flex:1;min-height:0;flex-direction:column}.post-tile-media{position:relative;flex:1;min-height:0;overflow:hidden;background:#010503}.post-tile-media img,.post-tile-media video{display:block;width:100%;height:100%;object-fit:cover}.post-tile-overlay{position:absolute;display:flex;gap:4px;align-items:center;padding:1px 5px;border-radius:3px;background:#010503c7;color:#d5f8e4;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:var(--cell-label-font-size);font-variant-numeric:tabular-nums;line-height:1.4}.post-tile-overlay-top{top:6px;left:8px;padding:0;background:none}.post-tile-overlay-start{bottom:6px;left:8px}.post-tile-overlay-end{right:8px;bottom:6px}.post-tile-overlay .post-badge{gap:3px;margin:0;background:#010503c7}.post-tile-body{display:grid;gap:3px;padding:8px 12px 6px;min-width:0}.post-tile-caption{overflow:hidden;color:#d5f8e4;font-size:calc(12px * var(--notebook-detail-scale, 1));line-height:1.6;text-overflow:ellipsis;white-space:nowrap}.post-tile-caption-empty{color:var(--muted);font-style:italic}.post-tile-stats{display:flex;align-items:baseline;justify-content:space-between;gap:12px;color:#8fb7a1;font-size:var(--cell-label-font-size)}.post-tile-stats strong{color:#d5f8e4;font-size:calc(13px * var(--notebook-detail-scale, 1));font-weight:600}.post-tile-hint{display:inline-flex;align-items:center;gap:5px;color:var(--muted);font-size:var(--cell-label-font-size)}.post-tile-hint-action{color:var(--green)}.cell-status-needs_link{border-color:#f0c27a73;color:#f0c27a;background:#f0c27a14}.cell-status-posted{border-color:#72e7aa6b;color:var(--green)}.pane-resize-handle{display:grid;width:100%;height:8px;min-height:8px;place-items:center;cursor:ns-resize;touch-action:none;-webkit-user-select:none;user-select:none;border-top:1px solid var(--line)}.pane-resize-handle:after{content:"";width:36px;height:2px;border-radius:2px;background:#6c987e}.pane-resize-handle:hover,.pane-resize-handle:focus-visible{outline:0;background:#72e7aa24}.pane-resize-handle:focus-visible:after{background:var(--green)}.pane-resize-handle-top{position:absolute;top:-5px;z-index:150}.confirm-sheet>.pane-resize-handle-bottom{grid-row:4}.command-composer[data-resizable-review=true]{height:var(--composer-review-height, min(660px, 75dvh))}.command-composer[data-resizable-review=true]>.command-composer-dock-body{flex:1 1 0;overflow:hidden}.command-composer[data-resizable-review=true] .command-composer-dock-body>.confirm-sheet{flex:0 1 var(--confirm-review-height, 76%);min-height:min(180px,60%);max-height:calc(100% - 36px);grid-template-rows:40px minmax(0,1fr) auto 8px}.command-composer[data-resizable-review=true] .command-composer-dock-body>.composer-history-panel{flex:1 1 0;max-height:none}.command-composer[data-resizable-review=true] .composer-history{max-height:none}.command-composer[data-resizable-review=true] .confirm-sheet-body>.confirm-generation{grid-template-rows:minmax(0,1fr)}.command-composer[data-resizable-review=true] .confirm-generation>.confirm-section{min-height:0;overflow:auto;scrollbar-width:thin}@media(max-width:900px){.command-composer[data-resizable-review=true] .confirm-sheet-body>.confirm-generation{grid-template-rows:auto}.command-composer[data-resizable-review=true] .confirm-generation>.confirm-section{overflow:visible}.command-composer[data-resizable-review=true] .confirm-generation>.generation-review-source-section,.command-composer[data-resizable-review=true] .confirm-generation>.generation-review-dolt-section{min-height:240px}}@media(max-width:600px){.command-composer[data-resizable-review=true] .command-composer-dock-body>.confirm-sheet{grid-template-rows:auto minmax(0,1fr) auto 8px}}.command-composer-dock-body>.composer-history-panel{flex:0 1 auto;min-height:0;max-height:min(248px,30dvh);overflow:hidden}.command-composer:has(.confirm-sheet) .command-composer-dock-body>.composer-history-panel{max-height:min(140px,20dvh)}.composer-history-panel{position:relative;display:flex;flex-direction:column;min-width:0}.voice-captions,.composer-history{flex:1 1 auto;min-height:0;max-height:min(180px,22dvh);overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin}.voice-captions[hidden],.composer-history[hidden]{display:none!important}.composer-history-text{min-width:0;white-space:pre-wrap;overflow-wrap:anywhere;-webkit-user-select:text;user-select:text}.composer-history-entry[data-role=user]{border-left-color:var(--green);background:#72e7aa09}.composer-history-entry[data-role=user] .composer-history-kind{color:var(--green)}.composer-history-entry[data-role=assistant]{border-left-color:#789d8b}.voice-captions-empty{color:#6f9a80}.voice-captions em{color:#6f9a80;font:inherit}.voice-captions-latest{align-self:center;flex:0 0 auto;height:32px;margin:8px 0 0;padding:0 12px;border:1px solid rgba(114,231,170,.26);border-radius:2px;background:transparent;color:#cfead9;font:inherit;font-size:11px;cursor:pointer}@media(max-height:500px){.command-composer-dock-body>.confirm-sheet{min-height:88px;max-height:min(42dvh,calc(100dvh - 8rem))}.command-composer:has(.confirm-sheet) .command-composer-dock-body>.composer-history-panel,.command-composer-dock-body>.composer-history-panel{max-height:min(104px,24dvh)}.voice-captions,.composer-history{max-height:min(52px,16dvh)}.command-composer:has(.confirm-sheet) .confirm-sheet-foot{grid-template-columns:minmax(0,1fr) auto;gap:8px}}.command-composer .composer-history{grid-auto-rows:max-content;gap:8px}.chat-turn{display:flex;flex-direction:column;gap:6px;width:min(100%,680px);padding:0;min-width:0}.command-composer .composer-history .chat-bubble{display:block;width:fit-content;max-width:min(100%,680px);align-self:flex-start;justify-self:start;min-height:0;margin:0;padding:8px 12px;border:1px solid rgba(114,231,170,.14);border-radius:14px;color:var(--ink);font:inherit;text-align:left;white-space:pre-wrap;overflow-wrap:anywhere;-webkit-user-select:text;user-select:text;animation:chat-message-enter .16s ease-out both}.command-composer .composer-history .chat-bubble-user{border-bottom-left-radius:4px;background:#72e7aa21}.command-composer .composer-history .chat-bubble-assistant{align-self:flex-start;border-bottom-left-radius:4px;background:#72e7aa09}.chat-bubble .composer-history-kind{display:block;font-size:11px;opacity:.7}.command-composer .composer-history .chat-feedback{display:flex;align-items:flex-start;gap:8px}.chat-feedback-content{min-width:0}.command-composer .composer-history .chat-feedback.command-result-error,.command-composer .composer-history .chat-voice-error{border-color:#f3a0a04d;color:var(--danger)}.chat-voice-activity>p{margin:0}.voice-fallback{margin:4px 0 0;color:#dfd3a1}.voice-fallback>summary{cursor:pointer}.voice-fallback>p{margin:4px 0 0;overflow-wrap:anywhere}.voice-resume{display:inline-flex;align-items:center;gap:7px;min-height:32px;margin:4px 0 0;padding:4px 8px;border:1px solid rgba(114,231,170,.26);border-radius:6px;background:transparent;color:#cfead9;font:inherit;font-size:12px;cursor:pointer}.voice-resume:focus-visible{outline:2px solid var(--green);outline-offset:2px}.chat-turn-details{min-width:0}.chat-turn-details>summary{width:fit-content;padding:4px 8px;color:#9fc0ad;cursor:pointer;font-size:12px}.chat-turn-details>summary:focus-visible{outline:2px solid var(--green);outline-offset:2px}.chat-turn-status{display:inline-flex;align-items:center;gap:8px}.chat-turn[data-status=failed] .chat-turn-status{color:var(--danger)}.chat-turn[data-status=review] .chat-turn-status{color:#e3b869}.chat-turn[data-status=completed] .chat-turn-status{color:var(--green)}.chat-turn-work{display:grid;gap:6px;margin-top:4px}.chat-turn-work>p{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px;margin:0;padding:6px 12px;font-size:12px}.command-composer .composer-history .mcp-call{width:min(100%,680px);min-width:0;justify-self:start}.command-composer .composer-history .mcp-call-head{grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:2px 12px;min-height:44px;margin:0;padding:8px 12px;border:1px solid rgba(95,196,214,.2);border-radius:12px;background:#5fc4d60b}.command-composer .composer-history .mcp-call-head:hover,.command-composer .composer-history .mcp-call-head[aria-expanded=true]{background:#5fc4d617}.command-composer .composer-history .mcp-call-channel{grid-column:1;grid-row:1;font-size:11px}.command-composer .composer-history .mcp-call-name{grid-column:1 / -1;grid-row:2;white-space:normal;overflow-wrap:anywhere}.command-composer .composer-history .mcp-call-trail{grid-column:2;grid-row:1;gap:6px;font-size:11px}.command-composer .composer-history .mcp-call-failed .mcp-call-head{border-color:#f3a0a04d}.composer-history-panel>.voice-captions-latest{position:absolute;right:16px;bottom:8px;z-index:2;margin:0;background:var(--panel)}.chat-working-dots{display:inline-flex;align-items:center;gap:3px;height:12px}.chat-working-dots i{width:4px;height:4px;border-radius:50%;background:currentColor;animation:chat-working-dot 1s ease-in-out infinite}.chat-working-dots i:nth-child(2){animation-delay:.12s}.chat-working-dots i:nth-child(3){animation-delay:.24s}@keyframes chat-message-enter{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes chat-working-dot{0%,60%,to{opacity:.45;transform:translateY(0)}30%{opacity:1;transform:translateY(-3px)}}@media(prefers-reduced-motion:reduce){.command-composer .composer-history .chat-bubble,.chat-working-dots i{animation:none}}.command-editor-mount{min-width:0}.command-rich-input{min-width:0;min-height:36px;max-height:min(180px,28dvh);overflow-y:auto;overflow-wrap:anywhere;padding:8px 0;outline:none;color:#bce6cf;font-size:13px;line-height:1.6;white-space:pre-wrap;cursor:text;caret-color:var(--green)}.command-rich-input[data-empty=true]:before{float:left;height:0;color:#6e9880;pointer-events:none;content:attr(data-placeholder)}.command-rich-input[aria-disabled=true]{opacity:.6;cursor:default}.composer-reference-chip{display:inline-flex;align-items:center;vertical-align:middle;gap:5px;max-width:100%;margin:0 2px;padding:2px 6px 2px 2px;border:1px solid rgba(114,231,170,.35);border-radius:5px;background:#103421;color:#c4ead5;line-height:1.25;white-space:nowrap}.composer-reference-chip.ProseMirror-selectednode{outline:2px solid var(--green);outline-offset:1px}.composer-reference-chip .inspector-source-thumb{display:inline-grid;place-items:center;flex:0 0 24px;width:24px;height:24px;min-width:0;overflow:hidden;border-radius:3px}.composer-reference-chip img{width:100%;height:100%;object-fit:cover}.composer-reference-address{font-size:12px}.command-line-shell{grid-template-areas:"actions editor mode send";grid-template-columns:32px minmax(0,1fr) auto auto}.command-line-shell>.composer-mode-switch{grid-area:mode}.command-line-shell>.command-suggestions{z-index:150}.command-actions-controls{grid-area:actions;display:flex;align-items:center;gap:4px}.command-actions-toggle,.command-actions-close{display:inline-flex;align-items:center;justify-content:center;gap:5px;min-height:36px;padding:6px;border:1px solid var(--line);color:#bce6cf;background:transparent;font-size:11px;cursor:pointer}.command-actions-controls>.command-actions-toggle,.command-actions-controls>.command-actions-close{width:32px;height:32px;min-height:32px;padding:0;border-color:#72e7aa38;border-radius:2px;color:#a8cdb7}.command-actions-toggle[aria-expanded=true]{border-color:var(--green);color:var(--control-fg-hover);background:#103421}.command-actions-toggle:disabled{opacity:.5;cursor:default}.command-actions-toggle[hidden]{display:none}.command-actions-toggle:focus-visible,.command-actions-close:focus-visible{outline:2px solid var(--green);outline-offset:2px}.command-editor-mount{grid-area:editor}.command-send{grid-area:send}.command-composer-dock-body>.composer-actions-panel{position:static;display:flex;flex:0 1 auto;flex-direction:column;min-height:min(180px,28dvh);border:0;border-top:1px solid var(--line);border-radius:0;background:transparent;box-shadow:none;max-height:min(420px,52dvh);overflow:hidden;padding:10px 20px}.composer-actions-panel>header{display:flex;align-items:center;flex-wrap:wrap;flex:0 0 auto;gap:8px;padding:0 2px 8px;border-bottom:1px solid var(--line)}.composer-actions-panel>header>strong{font-size:13px}.composer-actions-panel>header label{display:flex;align-items:center;gap:6px;min-width:0;font-size:11px}.composer-actions-panel>header select{max-width:150px;min-width:0;min-height:32px;background:#071a10;color:#bce6cf;border:1px solid var(--line)}.composer-actions-panel>header>span{margin-left:auto}.command-composer-dock-body>.command-suggestions.composer-actions-panel>header>button{display:grid;grid-template-columns:none;width:32px;min-height:32px;padding:6px}.composer-actions-panel .workspace-actions-list{min-height:0;overflow-y:auto;margin-top:5px}.command-composer-dock-body>.composer-actions-panel .workspace-actions-list>button{grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);align-items:start}.command-composer-dock-body>.composer-actions-panel .workspace-actions-list>button.active{color:var(--control-fg-hover);background:var(--control-bg-active)}.command-composer-dock-body>.composer-actions-panel .workspace-actions-list>button>span{display:grid;gap:3px;white-space:normal}.command-composer-dock-body>.composer-actions-panel .workspace-actions-list>button strong{color:#c4ead5;font-size:13px}.composer-actions-panel .workspace-actions-list small,.composer-actions-panel .workspace-actions-list code{font-size:11px;overflow-wrap:anywhere}.composer-actions-panel .composer-action-unavailable{grid-column:1 / -1;color:#e3b869}.composer-actions-panel p{font-size:11px;margin:8px 4px;color:#a6c5b3}.composer-actions-panel .composer-actions-help{flex:0 0 auto;margin:8px 4px 0}.command-composer .command-line-shell>.command-suggestions button.composer-reference-suggestion{grid-template-columns:40px minmax(0,1fr);align-items:center}.composer-reference-suggestion .inspector-source-thumb{width:40px;height:40px}.command-suggestions .composer-reference-copy{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 8px;white-space:normal}.composer-reference-copy>small{flex:1 1 100%;font-size:10px}.command-suggestions .composer-reference-copy>span{white-space:normal;overflow-wrap:anywhere}.workspace-preview-composer-host>.command-composer,.notebook-media-composer-host>.command-composer{position:relative;inset:auto;margin:0}.workspace-preview-composer-host{min-width:0;padding:12px}.notebook-media-composer-host.actions-only{right:28px}@media(max-width:600px){.command-line-shell{grid-template-areas:"editor editor editor" "actions mode send";grid-template-columns:32px minmax(0,1fr) auto;padding-top:5px;padding-bottom:6px}.command-composer-dock-bar{padding-left:9px;padding-right:4px}.command-line-shell,.command-result,.confirm-sheet-head,.confirm-sheet-body,.confirm-sheet-foot,.composer-history{padding-left:9px;padding-right:11px}.composer-history-entry{grid-template-columns:62px minmax(0,1fr) auto;gap:8px;padding-left:8px;padding-right:8px}.mcp-call-trail{gap:4px}.command-composer-dock-body>.composer-actions-panel{padding-left:12px;padding-right:12px}.command-line-shell>.composer-mode-switch{justify-self:end}.command-composer-dock-body>.composer-actions-panel .workspace-actions-list>button{grid-template-columns:minmax(0,1fr);gap:4px}.composer-actions-panel>header label{font-size:0}.composer-actions-panel>header select{max-width:110px;font-size:11px}.notebook-media-composer-host.actions-only{right:12px;left:12px;bottom:12px}}@media(max-width:420px){.command-line-shell:has(>.composer-mode-switch){gap:6px}.command-line-shell>.composer-mode-switch{justify-self:stretch;min-width:0}.composer-mode-switch>.composer-mode-cell-live{flex:1 1 auto}}@media(max-height:500px){.command-composer-dock-body>.composer-actions-panel{max-height:min(280px,48dvh)}.composer-actions-panel .composer-actions-help{display:none}}@media(pointer:coarse){.composer-history-entry{min-height:44px}}.composer-mode-switch{position:relative;display:flex;align-items:stretch;min-width:0;height:32px}.command-composer .command-line-shell>.composer-mode-switch:has(.composer-engine-menu){z-index:150}.composer-mode-cell{position:relative;display:flex;align-items:center;gap:8px;min-width:0;height:100%;box-sizing:border-box;border:1px solid rgba(114,231,170,.26);color:#7fa992;background:transparent;font:inherit;font-size:11px;letter-spacing:.08em;cursor:pointer;transition:color .16s ease,border-color .16s ease,background .16s ease}.composer-mode-cell:first-child{border-radius:2px 0 0 2px}.composer-mode-cell:last-of-type{border-radius:0 2px 2px 0}.composer-mode-cell:only-of-type{border-radius:2px}.composer-mode-cell+.composer-mode-cell{margin-left:-1px}.composer-mode-cell-idle{flex:0 0 auto;justify-content:center;width:32px;padding:0}.composer-mode-cell-idle:not(:disabled):hover,.composer-mode-cell-idle:not(:disabled):focus-visible{border-color:var(--control-border-hover);color:var(--control-fg);background:var(--control-bg-hover)}.composer-mode-cell-live{z-index:1;padding:0 11px;border-color:var(--green);color:var(--control-fg-hover);background:#103421}.composer-mode-cell-live[data-voice-phase]{color:#8fffb8;background:#0b2b1b}.composer-mode-cell-live[data-voice-phase=review]{border-color:#f2dcaa9e;color:#f2dcaa;background:#3c2e108c}.composer-mode-cell-idle[data-voice-phase=error]{border-color:#f07e7e80;color:#ffae9f}.composer-mode-cell:focus-visible{z-index:2;outline:2px solid var(--green);outline-offset:2px}.composer-mode-cell:disabled{opacity:.5;cursor:default}.composer-mode-name{flex:0 0 auto}.composer-mode-divider{flex:0 0 auto;opacity:.45}.composer-mode-engine{min-width:0;max-width:132px;overflow:hidden;font-size:12px;letter-spacing:0;text-overflow:ellipsis;white-space:nowrap}.composer-mode-meter{display:flex;flex:0 0 auto;align-items:flex-end;gap:2px;height:12px}.composer-mode-meter>span{width:2px;border-radius:1px;background:currentColor;transform:scaleY(calc(.3 + var(--voice-level, 0) * .7));transform-origin:bottom;transition:transform 90ms linear}.composer-mode-meter>span:nth-child(1){height:6px}.composer-mode-meter>span:nth-child(2){height:12px}.composer-mode-meter>span:nth-child(3){height:9px}.composer-mode-connecting{flex:0 0 auto;animation:composer-mode-connect-spin 1s linear infinite}@keyframes composer-mode-connect-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.composer-mode-meter>span{transition:none}.composer-mode-connecting{animation:none}}.composer-engine-menu{position:absolute;right:0;bottom:calc(100% + 8px);z-index:30;width:min(336px,calc(100vw - 32px));margin:0;padding:6px 0;border:1px solid var(--line-bright);border-radius:2px;background:#04120c;box-shadow:0 -14px 30px #0000009e;list-style:none}.composer-engine-group{padding:7px 14px 5px;color:#7fa992;font-size:10px;letter-spacing:.12em;text-transform:uppercase}.composer-engine-group:not(:first-child){margin-top:5px;padding-top:11px;border-top:1px solid var(--line)}.composer-engine-item{display:flex;align-items:flex-start;gap:10px;width:100%;box-sizing:border-box;padding:8px 14px;border:0;color:var(--ink);background:transparent;font:inherit;text-align:left;cursor:pointer}.composer-engine-item[aria-checked=true]{background:#2f7f5233}.composer-engine-item:hover,.composer-engine-item:focus-visible{outline:0;color:var(--row-fg-hover);background:var(--row-bg-hover)}.composer-engine-check{display:grid;flex:0 0 auto;place-items:center;width:13px;margin-top:2px;color:var(--green)}.composer-engine-copy{display:flex;flex:1 1 auto;flex-direction:column;gap:3px;min-width:0}.composer-engine-head{display:flex;align-items:baseline;gap:12px}.composer-engine-head>strong{color:var(--control-fg-hover);font-size:12px;font-weight:500}.composer-engine-head>small{margin-left:auto;color:#7fa992;font-size:10px}.composer-engine-note{color:#8fb9a1;font-size:10px;line-height:1.55}@media(max-width:600px){.composer-mode-cell-live{gap:6px;padding:0 9px}.composer-mode-divider,.composer-mode-engine{display:none}}.provider-task-link{display:flex;align-items:center;flex-wrap:wrap;gap:6px;min-width:0;font-size:11px}.provider-task-link a{display:inline-flex;align-items:center;gap:4px;color:inherit}.provider-task-link code{overflow-wrap:anywhere;-webkit-user-select:text;user-select:text}.provider-task-link button{display:inline-flex;align-items:center;border:0;background:transparent;color:inherit;cursor:pointer;padding:4px}.insert-video-editor{padding:12px;border:1px solid #355b43;background:#09170f;gap:12px!important;font-size:12px;color:#bad1c0}.insert-video-editor header,.insert-video-track-heading{display:flex;flex-wrap:wrap;justify-content:space-between;gap:6px 12px}.insert-video-editor header strong{color:#a1e6b7}.insert-video-editor p{margin:0;line-height:1.5}.insert-video-editor header span,.insert-video-track-heading span,.insert-video-field small{color:#95ad9d}.insert-video-visuals{display:grid;grid-template-columns:170px minmax(0,1fr);gap:12px;align-items:start}.insert-video-visuals:not(:has(video)){grid-template-columns:minmax(0,1fr)}.insert-video-monitor{display:grid;min-width:0;gap:6px}.insert-video-monitor video{width:100%;height:100px;min-width:0;object-fit:contain;background:#030805}.insert-video-playhead{display:flex;flex-wrap:wrap;align-items:flex-start;gap:5px;font-size:10px}.insert-video-playhead>span{flex-basis:100%}.insert-video-editor button{padding:5px 8px;min-height:28px;font:inherit;text-align:left;border:1px solid #3f694e;background:#14291b;color:#b7dfc3;cursor:pointer}.insert-video-editor button:disabled{opacity:.45;cursor:default}.insert-video-editor :focus-visible{outline:2px solid #a1e6b7;outline-offset:2px}.insert-video-tracks{display:grid;gap:7px}.insert-video-track{display:flex;min-width:0;height:38px;overflow:hidden;border:1px solid #365643;background:#050e09}.insert-video-track-content{display:flex;min-width:0}.insert-video-segment{display:flex;flex-basis:0;min-width:0;align-items:center;justify-content:center;overflow:hidden;border-right:1px solid #08150c}.insert-video-segment>span{padding:0 5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.insert-video-segment.kept{background:#234632;color:#c7e5d1}.insert-video-segment.removed{color:#e6b18b;background:repeating-linear-gradient(135deg,#452d21,#452d21 6px,#352219 6px 12px)}.insert-video-segment.new{background:#384d67;color:#dbebff}.insert-video-track-empty{align-self:center;padding:0 8px;color:#95ad9d;font-size:11px}.insert-video-legend{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:10px}.insert-video-legend span:before{content:"";display:inline-block;width:8px;height:8px;margin-right:5px;background:#3e7854}.insert-video-legend .removed:before{background:#ad7852}.insert-video-legend .new:before{background:#7198c9}.insert-video-fields{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.insert-video-field{display:flex;flex-direction:column;align-items:stretch;gap:6px}.insert-video-field label{display:grid;gap:6px}.insert-video-time-input{display:flex;min-width:0;gap:4px}.insert-video-time-input button{margin:0;align-self:stretch}.insert-video-field label small{font-size:10px}.insert-video-field input[type=number]{box-sizing:border-box;width:100%;min-width:0;padding:7px;font:inherit;color:#dbebdf;background:#061009;border:1px solid #42634d}.insert-video-field input[type=range]{width:100%;min-width:0;margin:0;accent-color:#91dba7}.insert-video-field>small{font-size:10px;line-height:1.4}.insert-video-field button{align-self:flex-start;margin-top:auto}.insert-video-error{color:#ffb2a8}.insert-video-summary{color:#a6dfb7}.confirm-generation:has(.insert-video-editor)[data-view=form]{grid-template-columns:136px minmax(0,2fr) minmax(0,1fr) 144px}@media(max-width:1180px){.confirm-generation:has(.insert-video-editor)[data-view=form]{grid-template-columns:120px minmax(0,2fr) minmax(0,1fr)}}@media(max-width:900px){.confirm-generation:has(.insert-video-editor)[data-view=form]{grid-template-columns:minmax(0,1fr)}}@media(max-width:520px){.insert-video-fields,.insert-video-visuals,.insert-video-monitor{grid-template-columns:minmax(0,1fr)}.insert-video-playhead{flex-direction:row;flex-wrap:wrap;justify-content:flex-start}.insert-video-playhead>span{flex-basis:100%}}.prompt-history-controls{position:relative;display:inline-flex;align-items:center;gap:6px;margin-left:auto;min-width:0}.prompt-history-status{overflow:hidden;color:var(--cyan);font-size:9px;letter-spacing:.12em;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.prompt-history-steppers{display:inline-flex}.prompt-history-steppers>.prompt-history-icon+.prompt-history-icon{margin-left:-1px}.prompt-history-icon,.prompt-history-toggle,.prompt-history-segment{display:inline-flex;height:22px;min-height:0;align-items:center;justify-content:center;gap:5px;padding:0 7px;border:1px solid var(--line);color:#8fbba1;background:transparent;font:inherit;font-size:9px;letter-spacing:.12em;text-transform:uppercase;white-space:nowrap;cursor:pointer}.prompt-history-icon{width:24px;padding:0}.prompt-history-icon:hover:not(:disabled),.prompt-history-icon:focus-visible:not(:disabled),.prompt-history-toggle:hover:not(:disabled),.prompt-history-toggle:focus-visible:not(:disabled),.prompt-history-segment:hover,.prompt-history-segment:focus-visible{border-color:var(--control-border-hover);color:var(--control-fg-hover);background:var(--control-bg-hover)}.prompt-history-icon:disabled,.prompt-history-toggle:disabled{opacity:.35;cursor:default}.prompt-history-toggle[aria-expanded=true],.prompt-history-segment[aria-pressed=true],.prompt-history-icon[aria-pressed=true]{border-color:var(--control-border-active);color:var(--control-fg-hover);background:var(--control-bg-active)}.prompt-history-count{color:#6fa184;letter-spacing:0}.prompt-history-popover{position:absolute;z-index:30;top:calc(100% + 6px);right:0;display:flex;width:min(540px,80vw);max-height:min(360px,60vh);flex-direction:column;border:1px solid var(--line-bright);background:#040f0afa;box-shadow:0 18px 40px #0009;text-transform:none;letter-spacing:0}.prompt-history-head{display:grid;gap:8px;padding:10px 10px 8px;border-bottom:1px solid var(--line)}.prompt-history-title{display:flex;align-items:center;gap:8px}.prompt-history-title>.prompt-history-icon{margin-left:auto}.prompt-history-faint{color:#557764;font-size:9px}.prompt-history-filters{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.prompt-history-search{display:flex;flex:1 1 160px;min-width:0;height:26px;align-items:center;gap:6px;padding:0 8px;border:1px solid var(--line);color:#6fa184;background:#010905e6}.prompt-history-search>input{flex:1;min-width:0;min-height:0;padding:0;border:0;color:#d5f8e4;background:transparent;font:inherit;font-size:11px;outline:none}.prompt-history-search:focus-within{border-color:var(--green)}.prompt-history-segments{display:inline-flex}.prompt-history-segments>.prompt-history-segment+.prompt-history-segment{margin-left:-1px}.prompt-history-list{min-height:0;margin:0;padding:0;overflow:auto;list-style:none;scrollbar-width:thin}.prompt-history-row{display:flex;align-items:flex-start;gap:8px;padding:6px 10px;border-bottom:1px solid rgba(101,190,145,.12)}.prompt-history-row[data-active],.prompt-history-row:hover{background:var(--row-bg-hover)}.prompt-history-row>.prompt-history-icon{flex:0 0 auto;margin-top:2px}.prompt-history-use{display:grid;flex:1 1 auto;min-width:0;gap:4px;padding:2px 0;border:0;color:inherit;background:transparent;font:inherit;text-align:left;cursor:pointer}.prompt-history-use:focus-visible{outline:2px solid var(--green);outline-offset:2px}.prompt-history-text{display:-webkit-box;overflow:hidden;color:#d5f8e4;font-size:11px;line-height:1.5;overflow-wrap:anywhere;-webkit-box-orient:vertical;-webkit-line-clamp:2}.prompt-history-meta{display:flex;flex-wrap:wrap;align-items:center;gap:8px;color:#6e9880;font-size:9px;letter-spacing:.06em;text-transform:uppercase}.prompt-history-surface{padding:1px 5px;border:1px solid rgba(114,231,170,.4);color:var(--green)}.prompt-history-empty{padding:22px 12px;color:#6e9880;font-size:11px;text-align:center}.prompt-history-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:7px 10px;border-top:1px solid var(--line);color:#6e9880;font-size:9px}.prompt-history-foot kbd{padding:1px 4px;border:1px solid rgba(101,190,145,.3);border-radius:2px;color:#8fbba1;font:inherit;font-size:9px}.workspace-actions-dialog{position:fixed;inset:0;width:min(760px,calc(100vw - 24px));max-width:none;max-height:calc(100dvh - 32px);margin:auto;padding:0;overflow:hidden;color:var(--ink);background:var(--surface);border:1px solid var(--line-bright);border-radius:12px;box-shadow:0 24px 90px #000b;font-size:12px}.workspace-actions-dialog[open]{display:flex;flex-direction:column}.workspace-actions-dialog::backdrop{background:#0009;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.workspace-actions-dialog>header,.workspace-actions-filter,.workspace-action-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.workspace-actions-dialog>header{flex:none;padding:8px 16px;border-bottom:1px solid var(--line)}.workspace-actions-dialog h2,.workspace-actions-dialog h3{font-weight:600;font-size:15px}.workspace-actions-dialog button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:36px;padding:7px 11px;color:var(--control-fg);background:var(--control-bg);border:1px solid var(--control-border);border-radius:5px}.workspace-actions-dialog>header button{width:40px;height:40px}.workspace-actions-dialog button:hover,.workspace-actions-dialog button:focus-visible,.workspace-actions-dialog [aria-selected=true]{color:var(--control-fg-hover);background:var(--control-bg-hover);border-color:var(--control-border-hover)}.workspace-actions-dialog button:disabled{opacity:.5;cursor:default}.workspace-actions-search{display:flex;align-items:center;gap:10px;margin:16px 16px 8px}.workspace-actions-dialog input,.workspace-actions-dialog select,.workspace-actions-dialog textarea{width:100%;min-width:0;padding:9px 10px;color:var(--ink);background:var(--surface-deep);border:1px solid var(--line-bright);border-radius:5px;font:inherit}.workspace-actions-dialog input:focus,.workspace-actions-dialog select:focus,.workspace-actions-dialog textarea:focus{outline:2px solid var(--green);outline-offset:1px}.workspace-actions-filter{flex:none;padding:0 16px 12px}.workspace-actions-filter label{display:flex;align-items:center;gap:10px}.workspace-actions-filter select{width:auto}.workspace-actions-filter>span{white-space:nowrap;color:var(--muted)}.workspace-actions-list{min-height:0;max-height:60dvh;overflow:auto;padding:0 10px 12px}.workspace-actions-list button{display:flex;flex-direction:column;align-items:stretch;width:100%;gap:5px;margin-top:4px;padding:10px;text-align:left;border-color:transparent;background:transparent}.workspace-actions-list button>span{display:flex;justify-content:space-between;align-items:baseline;gap:12px}.workspace-actions-list small,.workspace-action-hint{color:var(--muted);font-size:11px;line-height:1.5}.workspace-actions-dialog code{overflow-wrap:anywhere;color:var(--green);font-size:11px}.workspace-action-form{min-height:0;overflow-y:auto;padding:16px}.workspace-action-heading{margin:16px 0 8px}.workspace-action-fields{display:grid;gap:16px;margin:20px 0}.workspace-action-field>label{display:block;margin-bottom:5px;font-weight:600}.workspace-action-hint{margin:4px 0 7px;overflow-wrap:anywhere}.workspace-action-field fieldset{display:grid;min-width:0;gap:12px;padding:12px;border:1px solid var(--line);border-radius:5px}.workspace-action-field>select+fieldset{margin-top:8px}.workspace-action-array-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:10px}.workspace-action-fixed{display:flex;justify-content:space-between;gap:12px}.workspace-action-review,.workspace-action-result{padding:12px;margin:12px 0;border:1px solid var(--line-bright);border-radius:5px;overflow-wrap:anywhere}.workspace-action-error{color:var(--danger);padding:8px 0}.workspace-action-result-fields>div{padding:8px 0;border-bottom:1px solid var(--line)}.workspace-action-result-fields dt{color:var(--muted);font-size:11px}.workspace-action-result-fields dd{margin-top:4px}.workspace-action-result-list{display:grid;gap:8px;list-style:decimal;padding-left:20px}.workspace-action-form footer{position:sticky;bottom:-16px;display:flex;flex-wrap:wrap;gap:10px;padding:12px 0;background:var(--surface);border-top:1px solid var(--line)}@media(max-width:600px){.workspace-actions-dialog{max-height:calc(100dvh - 20px)}.workspace-actions-list button>span,.workspace-action-heading{flex-direction:column;align-items:flex-start;gap:4px}.workspace-actions-filter{flex-wrap:wrap}}.workspace-preview-content{display:grid;gap:16px;overflow:auto;padding:16px;min-height:0}.workspace-preview-content>img,.workspace-preview-content>video{max-width:100%;max-height:65dvh;margin:auto}.workspace-preview-content label{display:grid;gap:8px}.workspace-action-linked-results{list-style:none;padding:0;display:grid;gap:12px}.workspace-action-linked-results li{display:grid;gap:8px;padding:12px;border:1px solid var(--line);overflow-wrap:anywhere}.workspace-action-linked-results li>div{display:flex;flex-wrap:wrap;gap:8px}.workspace-crop-preview{display:grid;gap:10px}.workspace-crop-ratios{display:flex;flex-wrap:wrap;gap:8px}.workspace-crop-frame{position:relative;overflow:hidden;width:min(100%,440px);margin:auto;background:#000;cursor:move;touch-action:none}.workspace-crop-frame>img,.workspace-crop-frame>video{width:100%;height:100%;object-fit:contain;display:block}.workspace-crop-region{position:absolute;box-shadow:0 0 0 999px #0009;border:2px solid var(--green);pointer-events:none}.workspace-action-variants label{display:grid;gap:8px;padding-top:8px}.topbar-tools{grid-column:3;grid-row:1;display:flex;align-items:center;gap:12px;min-width:0;margin-right:var(--app-gutter)}.topbar-tools .header-navigation{margin-right:0}.book-usage{min-width:0;font-variant-numeric:tabular-nums}.book-usage-trigger{display:flex;align-items:center;justify-content:center;gap:8px;height:34px;padding:0 12px;border:1px solid var(--line);border-radius:6px;background:#0b1710;color:var(--ink);font-size:12px;font-variant-numeric:tabular-nums;white-space:nowrap;cursor:pointer}.book-usage-trigger:hover{background:#13261a;border-color:var(--control-border-hover)}.book-usage-trigger:disabled{opacity:.5;cursor:default}.book-usage-trigger small,.book-usage-divider{color:#8eaa98;font-size:11px}.book-usage-indicator{width:5px;height:5px;border-radius:50%;background:#d8b875;flex:0 0 auto}.book-usage-popover{position:fixed;inset:auto 12px auto auto;width:min(390px,calc(100vw - 24px));margin:0;padding:18px;overflow-y:auto;overscroll-behavior:contain;border:1px solid #385044;border-radius:10px;background:#08120d;color:#dbe9df;box-shadow:0 16px 60px #0009;font-family:inherit;font-size:12px;line-height:1.5;font-variant-numeric:tabular-nums}.book-usage-popover>header{display:flex;justify-content:space-between;align-items:start;gap:12px;margin-bottom:18px}.book-usage-popover h2{margin:0;font-size:15px;font-weight:600}.book-usage-popover header p{margin:3px 0 0;color:#8eaa98;font-size:11px;overflow-wrap:anywhere}.book-usage-popover button{color:inherit;background:transparent;border:0;cursor:pointer}.book-usage-popover header button{width:32px;height:32px;font-size:23px}.book-usage-popover button:focus-visible,.book-usage-popover summary:focus-visible{outline:2px solid #7fc69b;outline-offset:3px}.book-usage-totals{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:14px}.book-usage-totals small{display:block;font-size:10px;color:#8eaa98;text-transform:uppercase;letter-spacing:.06em}.book-usage-totals strong{font-size:24px;font-weight:500}.book-usage-facts{margin:0 0 14px;font-size:11px}.book-usage-facts>div{display:flex;justify-content:space-between;gap:12px;margin-top:5px}.book-usage-facts dt{color:#8eaa98}.book-usage-facts dd{margin:0;text-align:right}.book-usage-notice,.book-usage-pending{padding:10px;border-radius:5px;background:#292316;color:#dbc18e;font-size:11px}.book-usage-notice button{text-decoration:underline}.book-usage-pending{background:#112419;color:#a4cdb2}.book-usage-breakdown details{border-top:1px solid #21372a}.book-usage-breakdown summary{display:flex;justify-content:space-between;gap:12px;padding:10px 0;cursor:pointer;font-size:12px}.book-usage-breakdown summary>span:first-child:before{content:"›";display:inline-block;width:14px;color:#8eaa98}.book-usage-breakdown details[open] summary>span:first-child:before{content:"⌄"}.book-usage-model,.book-usage-recent>div{display:flex;justify-content:space-between;gap:12px;padding:8px 0;font-size:11px}.book-usage-model>div,.book-usage-recent>div>div{min-width:0}.book-usage-model strong,.book-usage-recent strong{display:block;overflow-wrap:anywhere;font-size:11px;font-weight:500}.book-usage-model small,.book-usage-recent small{display:block;color:#8eaa98;font-size:10px}.book-usage-model>span,.book-usage-recent>div>span{flex-shrink:0}.book-usage-recent{margin-top:12px;border-top:1px solid #21372a}.book-usage-recent h3{margin:14px 0 4px;color:#8eaa98;font-size:11px;font-weight:500}.book-usage-empty{color:#8eaa98;font-size:12px}.book-usage-popover footer{margin-top:16px;border-top:1px solid #21372a;padding-top:12px;color:#8eaa98;font-size:10px}@media(max-width:1280px){.topbar-tools{grid-column:2}}@media(max-width:560px){.topbar-tools{grid-row:2;grid-column:1;justify-content:space-between;gap:4px;height:48px;margin:0;padding:0 8px;border-top:1px solid var(--line)}.topbar-tools .header-navigation{border:0;width:auto;flex:0 0 auto;gap:0}.topbar-tools .header-navigation button{width:44px;flex:0 0 44px}.book-usage-trigger{gap:5px;padding:0 7px;font-size:11px}.book-usage-trigger small{font-size:10px}.book-usage-totals strong{font-size:21px}}.app-shell.app-screen-settings{grid-template-rows:auto minmax(0,1fr) auto}.app-screen-settings>.command-composer{position:relative;inset:auto;grid-row:3;grid-column:1 / -1;margin:12px var(--app-gutter);transform:none}.workspace-screen.settings-screen{padding:20px 24px;scroll-padding:16px;font-family:system-ui,sans-serif}.settings-screen>header{align-items:center;gap:16px;padding-bottom:16px}.settings-screen h1{margin:0 0 4px;font-size:28px;letter-spacing:-.03em}.settings-screen header p{font-size:13px;color:#86a795}.settings-refresh{display:flex;align-items:center;flex-wrap:wrap;gap:12px;color:#86a795;font-size:12px}.settings-layout{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(340px,1fr);align-items:start;gap:16px;margin-top:16px}.settings-panel,.settings-secondary,.settings-credentials,.settings-credential-copy{min-width:0}.settings-secondary{display:grid;gap:16px}.settings-panel{border:1px solid var(--line);padding:16px;background:#05120ce0;color:#a6c5b3;font-size:13px;overflow-wrap:anywhere}.settings-panel-heading{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:8px}.settings-panel-heading h2{margin:0;color:#c4ead5;font-size:17px;font-weight:500}.settings-panel-heading>span,.settings-section-summary,.settings-details summary>span,.settings-key-editor small{color:#86a795;font-size:12px}.settings-section-summary{margin:6px 0 14px}.settings-credentials{display:grid;gap:12px}.settings-providers .settings-credentials{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}.settings-credential{min-width:0;border:1px solid var(--line);padding:12px}.settings-credential-summary{display:flex;align-items:center;gap:10px}.settings-key-status{flex:0 0 7px;height:7px;border-radius:50%;background:#81958a}.settings-key-configured{background:var(--green)}.settings-key-placeholder{background:#e3b869}.settings-credential-copy{display:flex;flex-wrap:wrap;align-items:baseline;flex:1;gap:4px 8px}.settings-credential-copy strong{flex:1 1 100%;font-size:13px;font-weight:500;color:#c4ead5}.settings-key-caption,.settings-key-source,.settings-key-value{color:#86a795;font-size:12px;overflow-wrap:anywhere}.settings-key-value{max-width:100%;font-family:monospace}.settings-key-source{flex:1 1 100%}.settings-screen button{min-height:40px;padding:8px 10px;border:1px solid var(--line);color:#bce6cf;background:#2470491f;font-size:12px;cursor:pointer}.settings-screen button:disabled{opacity:.5;cursor:default}.settings-screen :is(button,input,summary,a):focus-visible{outline:2px solid var(--green);outline-offset:3px}.settings-key-editor{display:grid;gap:8px;margin-top:12px}.settings-key-editor input{min-height:40px;min-width:0;width:100%;padding:8px;border:1px solid var(--line);color:#c4ead5;background:#031009;font-size:14px}.settings-key-actions{display:flex;flex-wrap:wrap;gap:8px}.settings-key-actions>button[type=submit]{border-color:var(--green)}.settings-screen .x-connection-card{min-width:0;padding:12px 0;gap:10px;border:0;background:transparent;flex-wrap:wrap}.settings-screen .x-connection-card>div{min-width:0;flex:1 1 180px}.settings-screen .x-connection-card :is(strong,p){font-size:12px}.settings-details{border-top:1px solid var(--line);margin-top:12px;padding-top:4px}.settings-details summary{padding:10px 0;cursor:pointer;color:#b6dfc8}.settings-details summary>span{display:inline-block;margin-left:8px}.settings-storage-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:0}.settings-storage-summary dt{color:#86a795;font-size:12px}.settings-storage-summary dd{margin:4px 0 0;color:#c4ead5;text-transform:capitalize}.settings-details pre{white-space:pre-wrap;overflow-wrap:anywhere;font-size:11px}.settings-error{color:#ffb8b8;font-size:13px;overflow-wrap:anywhere}.settings-feedback{color:#bce6cf;font-size:12px}@media(max-width:1000px){.settings-layout{grid-template-columns:minmax(0,1fr)}}@media(max-width:600px){.workspace-screen.settings-screen{padding:16px 12px}.settings-screen>header{align-items:flex-start}.settings-providers .settings-credentials{grid-template-columns:minmax(0,1fr)}.settings-screen button{min-height:44px}}.notebook-timeline{display:flex;flex-direction:column;overflow:hidden;border:1px solid var(--line);border-radius:8px;background:var(--panel, #151a18);color:var(--text);box-sizing:border-box;font-size:calc(11px * var(--notebook-detail-scale, 1))}.react-flow__node-timeline.selected .notebook-timeline{border-color:var(--green)}.notebook-timeline-header{display:flex;align-items:center;gap:12px;padding:5px 10px;min-height:32px;border-bottom:1px solid var(--line);cursor:grab}.notebook-timeline-header code{color:var(--muted)}.timeline-toolbar{display:flex;align-items:center;gap:8px;margin-left:auto}.notebook-timeline button{font:inherit;cursor:pointer}.timeline-toolbar button,.timeline-track-label button{display:inline-flex;align-items:center;justify-content:center;color:inherit;background:transparent;border:1px solid var(--line);border-radius:4px;padding:3px 8px}.notebook-timeline button:disabled{opacity:.4;cursor:default}.notebook-timeline button:focus-visible{outline:2px solid var(--green);outline-offset:-2px}.timeline-assembly{flex:1;display:flex;flex-direction:column;min-height:0}.timeline-ruler-row,.timeline-track{display:grid;grid-template-columns:var(--timeline-label-width, 200px) minmax(0,1fr);flex-shrink:0}.timeline-ruler-row{height:28px;color:var(--muted)}.timeline-ruler-row>span{padding:3px 10px}.timeline-ruler{position:relative;overflow:hidden;cursor:crosshair}.timeline-ruler span{position:absolute;top:4px;border-left:1px solid var(--line);padding-left:5px;white-space:nowrap}.timeline-track{height:36px;border-bottom:1px solid var(--line);box-sizing:border-box}.timeline-track-video{background:#72e7aa0d}.timeline-assembly>.timeline-track-video{height:72px}.timeline-track-label{display:flex;gap:6px;align-items:center;padding:2px 8px;border-right:1px solid var(--line);overflow:hidden}.timeline-track-label>span{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.timeline-track-label button{padding:3px;flex-shrink:0}.timeline-track-lane{overflow:hidden;position:relative;cursor:crosshair}.timeline-clip{position:absolute;top:3px;bottom:3px;display:flex;align-items:center;gap:6px;padding:0 5px;overflow:hidden;background:#27483d;color:#e0f5eb;border:1px solid #598674;border-radius:3px;box-sizing:border-box}.timeline-track-audio .timeline-clip{background:#283d55;border-color:#547599}.timeline-clip.selected{border-color:#e4ffb5;box-shadow:inset 0 0 0 1px #e4ffb5}.timeline-clip img{width:40px;height:26px;object-fit:contain;background:var(--surface-deep);flex-shrink:0}.timeline-assembly>.timeline-track-video .timeline-clip img{width:84px;height:56px;max-height:100%}.timeline-clip span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.timeline-playhead{position:absolute;top:0;bottom:0;width:2px;background:#e4ffb5;pointer-events:none}.timeline-empty-lane{display:block;color:var(--muted);padding:4px 12px}.timeline-audio-viewport{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden}.timeline-audio-content{position:relative}.timeline-horizontal{height:14px;flex-shrink:0;overflow-x:auto;margin-left:var(--timeline-label-width, 200px)}.timeline-error{color:#ffb5a8;padding:3px 10px}.timeline-source-picker{color:var(--text);background:var(--panel, #151a18);border:1px solid var(--line);border-radius:8px;width:min(560px,calc(100vw - 32px));max-height:min(640px,80dvh);padding:16px}.timeline-source-picker::backdrop{background:#0009}.timeline-source-picker header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.timeline-source-picker input{width:100%;box-sizing:border-box;margin-bottom:12px}.timeline-source-list{display:grid;gap:8px;max-height:50dvh;overflow:auto}.timeline-source-list button{display:flex;align-items:center;gap:12px;text-align:left;min-height:54px}.timeline-source-list button>span{flex:1}.timeline-source-list img{width:64px;height:42px;object-fit:contain}.timeline-waveform{position:absolute;inset:3px 0;width:100%;height:calc(100% - 6px);pointer-events:none;fill:#96cceb;opacity:.58}.timeline-clip>span{position:relative;z-index:1;text-shadow:0 1px 3px #07111d}.timeline-track-audio .timeline-clip>span{align-self:flex-start;padding-top:3px}.timeline-beat{position:absolute;inset-block:0;width:1px;background:#a9cdbf55;pointer-events:none}.timeline-beat.bar{width:2px;background:#f7d776a6}.timeline-beat.manual{border-left:1px dashed #a7ddc8;background:transparent}.timeline-clip.timeline-master{border-color:#83c8e4}.timeline-playhead{z-index:2}.notebook-timeline-preview .timeline-clip{touch-action:pan-y}.timeline-waveform path{fill:none;stroke:#96cceb;stroke-width:1.2px;vector-effect:non-scaling-stroke}@media(max-width:560px){.music-video-editor .notebook-timeline-header{gap:4px;padding:4px 6px}.music-video-editor .timeline-toolbar{gap:2px}.music-video-editor .timeline-toolbar button{font-size:10px;padding:3px 4px;min-height:24px}.music-video-editor .timeline-assembly>.timeline-track-video{height:60px}}.timeline-trim-handle{position:absolute;top:0;bottom:0;z-index:2;width:8px;background:var(--green, #72e7aa);cursor:ew-resize;touch-action:none}.timeline-trim-handle.start{left:0}.timeline-trim-handle.end{right:0}.timeline-trim-handle:after{content:"";position:absolute;top:50%;left:3px;width:2px;height:16px;margin-top:-8px;border-radius:1px;background:#03140b}.timeline-preview-fullscreen{position:fixed;inset:0;width:100%;height:100dvh;max-width:none;max-height:none;margin:0;padding:0;overflow:hidden;border:0;color:var(--ink);background:var(--surface-deep);grid-template-rows:48px minmax(0,1fr) clamp(220px,28dvh,320px);grid-template-columns:minmax(0,1fr)}.timeline-preview-fullscreen[open]{display:grid}.timeline-preview-fullscreen::backdrop{background:var(--surface-deep)}.timeline-preview-fullscreen-header,.timeline-preview-fullscreen-actions{display:flex;align-items:center;gap:12px;min-width:0}.timeline-preview-fullscreen-header{justify-content:space-between;padding:0 16px;border-bottom:1px solid var(--line);background:var(--panel)}.timeline-preview-fullscreen-actions>button{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:32px;padding:0 10px;border:1px solid var(--line);border-radius:5px;color:var(--ink);background:var(--control-bg);font-size:11px;cursor:pointer}.timeline-preview-fullscreen-actions>button:hover,.timeline-preview-fullscreen-actions>button:focus-visible{border-color:var(--green);color:var(--control-fg-hover);background:var(--control-bg-hover)}.timeline-preview-fullscreen .timeline-preview-body{height:auto;padding:0}.timeline-preview-fullscreen-tracks{min-width:0;min-height:0}.notebook-timeline-preview{--timeline-label-width: 160px;width:100%;height:100%;font-size:11px;border:0;border-top:1px solid var(--line);border-radius:0}.notebook-timeline-preview .notebook-timeline-header{min-height:40px;flex-wrap:wrap;cursor:default}.notebook-timeline-preview .timeline-toolbar{flex-wrap:wrap;gap:6px}.notebook-timeline-preview .timeline-toolbar button{min-height:28px}@media(max-width:560px){.timeline-preview-fullscreen{grid-template-rows:48px minmax(0,1fr) min(300px,42dvh)}.timeline-preview-fullscreen-header{padding:0 12px}.timeline-preview-fullscreen-actions>button{width:32px;padding:0}.timeline-preview-fullscreen-actions>button>span{display:none}.notebook-timeline-preview{--timeline-label-width: 100px}.notebook-timeline-preview .notebook-timeline-header{gap:6px}.notebook-timeline-preview .timeline-toolbar{width:100%;margin-left:0;gap:4px}.notebook-timeline-preview .timeline-toolbar button{padding:3px 6px}}@media(max-height:500px){.timeline-preview-fullscreen{grid-template-rows:40px minmax(0,1fr) 170px}.notebook-timeline-preview .timeline-assembly>.timeline-track-video{height:48px}.notebook-timeline-preview .timeline-assembly>.timeline-track-video .timeline-clip img{width:54px;height:36px}}.timeline-preview-label{margin-left:4px;color:var(--green);font-size:9px;letter-spacing:.12em;text-transform:uppercase}.timeline-preview-format{display:flex;align-items:center;gap:14px;margin-right:6px;color:var(--ink);font-size:10px;font-variant-numeric:tabular-nums;letter-spacing:.02em;white-space:nowrap}.timeline-preview-format>span{color:var(--muted)}.timeline-preview-body{min-height:0;overflow:hidden;background:#000}.timeline-preview-fullscreen .canonical-player-preview{width:100%;height:100%;min-height:0;grid-template-rows:minmax(0,1fr) auto;margin:0;border:0;background:transparent}.timeline-preview-stage{display:grid;min-width:0;min-height:0;place-items:center}.timeline-preview-screen{overflow:hidden;background:#000}.timeline-preview-screen button{width:28px;height:28px!important;justify-content:center;padding:0!important;border-radius:4px;color:var(--ink)}.timeline-preview-screen button:hover{background:var(--row-bg-hover)!important;color:var(--control-fg-hover)}.timeline-preview-screen button svg{width:16px;height:16px}.timeline-preview-screen button:focus-visible{outline:2px solid var(--green);outline-offset:2px}.timeline-preview-screen button[aria-label="Play video"],.timeline-preview-screen button[aria-label="Pause video"]{color:var(--green)}.timeline-preview-fullscreen .canonical-player footer{align-items:center;gap:12px;min-height:34px;padding:8px 16px;font-variant-numeric:tabular-nums;letter-spacing:.02em}.timeline-preview-fullscreen .canonical-player-frame{color:var(--ink)}.timeline-preview-buffering{animation:timeline-preview-spin 1s linear infinite}@keyframes timeline-preview-spin{to{transform:rotate(360deg)}}@media(max-width:560px){.timeline-preview-format,.timeline-preview-fullscreen .canonical-player-shortcuts{display:none}}@media(prefers-reduced-motion:reduce){.timeline-preview-buffering{animation:none}}@media(max-height:500px){.timeline-preview-fullscreen .canonical-player footer{display:none}}
|