@gentbajko/slopify 3.25.9 → 4.1.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/dist/adapters/account-limits.js +30 -0
- package/dist/adapters/alignment/audio.js +1 -1
- package/dist/adapters/alignment/cache.js +4 -6
- package/dist/adapters/alignment/ctc.js +1 -2
- package/dist/adapters/alignment/lock.js +4 -3
- package/dist/adapters/alignment/multilingual.js +2 -4
- package/dist/adapters/alignment/prefetch.js +2 -1
- package/dist/adapters/alignment/runner.js +1 -1
- package/dist/adapters/alignment/worker.js +3 -2
- package/dist/adapters/explain.js +10 -12
- package/dist/adapters/ffmpeg.js +19 -1
- package/dist/adapters/host-cli/index.js +21 -4
- package/dist/adapters/host-cli/transport.js +2 -1
- package/dist/adapters/http-failure.js +53 -0
- package/dist/adapters/image/bytes.js +2 -1
- package/dist/adapters/image/codex.js +42 -9
- package/dist/adapters/image/fal.js +21 -53
- package/dist/adapters/image/google.js +33 -56
- package/dist/adapters/image/models.js +2 -2
- package/dist/adapters/image/openai.js +22 -48
- package/dist/adapters/image/reference.js +36 -0
- package/dist/adapters/image/replicate.js +21 -49
- package/dist/adapters/image/video.js +2 -1
- package/dist/adapters/interest/search-interest.js +113 -0
- package/dist/adapters/key-probes.js +54 -3
- package/dist/adapters/llm/antigravity-models.js +1 -1
- package/dist/adapters/llm/antigravity.js +11 -6
- package/dist/adapters/llm/assistant-cli.js +388 -0
- package/dist/adapters/llm/child-session.js +83 -0
- package/dist/adapters/llm/claude-code-models.js +52 -99
- package/dist/adapters/llm/claude-code.js +16 -4
- package/dist/adapters/llm/codex-limits.js +27 -68
- package/dist/adapters/llm/codex-models.js +1 -1
- package/dist/adapters/llm/codex-server-models.js +61 -109
- package/dist/adapters/llm/codex.js +12 -1
- package/dist/adapters/llm/document-workspace.js +3 -2
- package/dist/adapters/llm/image-workspace.js +3 -2
- package/dist/adapters/llm/openrouter.js +12 -48
- package/dist/adapters/llm/run-cli.js +9 -24
- package/dist/adapters/llm/sse-lines.js +5 -1
- package/dist/adapters/model-access.js +37 -0
- package/dist/adapters/tts/cartesia.js +15 -46
- package/dist/adapters/tts/elevenlabs.js +20 -52
- package/dist/adapters/tts/gemini.js +21 -41
- package/dist/adapters/tts/inworld-async.js +6 -2
- package/dist/adapters/tts/inworld.js +6 -2
- package/dist/adapters/tts/openai.js +20 -50
- package/dist/adapters/tts/system.js +2 -1
- package/dist/assets/models-lifecycle.yaml +6 -0
- package/dist/assistant-wiring.js +60 -0
- package/dist/autopilot-timers.js +59 -0
- package/dist/catalog/lifecycle.js +52 -0
- package/dist/catalog/propose.js +204 -0
- package/dist/catalog/registry.js +23 -14
- package/dist/catalog/schema.js +4 -1
- package/dist/catalog/store.js +39 -0
- package/dist/catalog/validate.js +5 -2
- package/dist/edge/autostart/native.js +3 -5
- package/dist/edge/autostart/prompt.js +2 -1
- package/dist/edge/autostart/service.js +3 -4
- package/dist/edge/cli-args.js +3 -4
- package/dist/edge/cli.js +2 -1
- package/dist/edge/docker-install/apply.js +11 -11
- package/dist/edge/docker-install/run.js +2 -1
- package/dist/edge/docker-install/state.js +4 -3
- package/dist/edge/docker-install/tree.js +2 -4
- package/dist/edge/docker-install/volume.js +3 -2
- package/dist/edge/docker.js +5 -4
- package/dist/edge/events/hub.js +5 -5
- package/dist/edge/http/actions.js +11 -32
- package/dist/edge/http/actor.js +5 -3
- package/dist/edge/http/app.js +86 -11
- package/dist/edge/http/assistant.js +129 -0
- package/dist/edge/http/audio-preview.js +4 -11
- package/dist/edge/http/auditions.js +1 -1
- package/dist/edge/http/autostart.js +5 -5
- package/dist/edge/http/backups.js +2 -4
- package/dist/edge/http/channel-memory.js +9 -22
- package/dist/edge/http/channels.js +14 -27
- package/dist/edge/http/checkpoints.js +39 -21
- package/dist/edge/http/design-templates.js +167 -0
- package/dist/edge/http/designs.js +178 -0
- package/dist/edge/http/diagnostics.js +5 -1
- package/dist/edge/http/document-themes.js +5 -14
- package/dist/edge/http/draft-files.js +1 -3
- package/dist/edge/http/draft-problem.js +5 -10
- package/dist/edge/http/drafts.js +3 -3
- package/dist/edge/http/entries.js +6 -9
- package/dist/edge/http/extension-auth.js +27 -0
- package/dist/edge/http/external-reviews.js +12 -11
- package/dist/edge/http/files.js +5 -11
- package/dist/edge/http/folder-location.js +1 -4
- package/dist/edge/http/fonts.js +0 -7
- package/dist/edge/http/home.js +47 -14
- package/dist/edge/http/host-cli.js +18 -8
- package/dist/edge/http/ids.js +8 -0
- package/dist/edge/http/keywords.js +35 -0
- package/dist/edge/http/model-checks.js +132 -0
- package/dist/edge/http/narration-peaks.js +5 -13
- package/dist/edge/http/onboarding.js +30 -26
- package/dist/edge/http/open-folder.js +5 -10
- package/dist/edge/http/outputs.js +7 -14
- package/dist/edge/http/patch-notes.js +6 -12
- package/dist/edge/http/planning.js +3 -7
- package/dist/edge/http/problem.js +2 -4
- package/dist/edge/http/project-create.js +2 -1
- package/dist/edge/http/project-templates.js +31 -19
- package/dist/edge/http/projects.js +24 -16
- package/dist/edge/http/prompts.js +9 -16
- package/dist/edge/http/pronunciations.js +1 -2
- package/dist/edge/http/providers.js +48 -34
- package/dist/edge/http/refusal.js +29 -0
- package/dist/edge/http/remote-access.js +40 -0
- package/dist/edge/http/remote-guard.js +71 -0
- package/dist/edge/http/request-guard.js +91 -0
- package/dist/edge/http/reviews.js +12 -25
- package/dist/edge/http/revision-files.js +6 -11
- package/dist/edge/http/revisions.js +14 -19
- package/dist/edge/http/run-cost.js +1 -2
- package/dist/edge/http/same-page.js +80 -0
- package/dist/edge/http/schedules.js +69 -40
- package/dist/edge/http/settings.js +27 -14
- package/dist/edge/http/social.js +283 -0
- package/dist/edge/http/staging.js +3 -5
- package/dist/edge/http/storage-files.js +5 -7
- package/dist/edge/http/storage.js +33 -25
- package/dist/edge/http/studio.js +94 -69
- package/dist/edge/http/style-preview.js +3 -6
- package/dist/edge/http/subtitles.js +3 -17
- package/dist/edge/http/template-studio.js +436 -0
- package/dist/edge/http/trash.js +11 -12
- package/dist/edge/http/tutorial.js +1 -2
- package/dist/edge/http/tutorials.js +5 -11
- package/dist/edge/http/update.js +7 -13
- package/dist/edge/http/waveform.js +3 -6
- package/dist/edge/http/youtube-edits.js +3 -4
- package/dist/edge/mcp/assistant.js +279 -0
- package/dist/edge/mcp/attribution.js +8 -2
- package/dist/edge/mcp/call-route.js +11 -2
- package/dist/edge/mcp/excluded-routes.js +29 -3
- package/dist/edge/mcp/http.js +11 -2
- package/dist/edge/mcp/instructions.js +6 -4
- package/dist/edge/mcp/library-tools.js +9 -5
- package/dist/edge/mcp/remake-tools.js +7 -4
- package/dist/edge/mcp/route-tool.js +35 -15
- package/dist/edge/mcp/server.js +13 -8
- package/dist/edge/mcp/tools-channels.js +11 -9
- package/dist/edge/mcp/tools-designs.js +165 -0
- package/dist/edge/mcp/tools-library.js +19 -7
- package/dist/edge/mcp/tools-planning.js +40 -21
- package/dist/edge/mcp/tools-projects.js +38 -11
- package/dist/edge/mcp/tools-publishing.js +9 -9
- package/dist/edge/mcp/tools-runs.js +23 -10
- package/dist/edge/mcp/tools-schedules.js +32 -8
- package/dist/edge/mcp/tools-setup.js +75 -11
- package/dist/edge/mcp/tools-social.js +47 -0
- package/dist/edge/mcp/tools-storage.js +11 -3
- package/dist/edge/mcp/tools-template-studio.js +166 -0
- package/dist/edge/mcp/tools.js +6 -0
- package/dist/edge/remote-access/cli.js +71 -0
- package/dist/edge/remote-access/model.js +32 -0
- package/dist/edge/remote-access/rules.js +207 -0
- package/dist/edge/remote-access/service.js +203 -0
- package/dist/edge/remote-access/store.js +44 -0
- package/dist/edge/remote-access/views.js +43 -0
- package/dist/extension/slopify-studio-chrome.zip +0 -0
- package/dist/extension/slopify-studio-firefox.zip +0 -0
- package/dist/host-cli/install.js +2 -2
- package/dist/host-cli/open-folder.js +2 -2
- package/dist/host-cli/paths.js +2 -4
- package/dist/host-cli/server.js +4 -4
- package/dist/host-cli/service.js +3 -3
- package/dist/host-cli/status.js +7 -7
- package/dist/kernel/db/migrations/0063-model-checks.sql +20 -0
- package/dist/kernel/db/migrations/0064-template-studio.sql +46 -0
- package/dist/kernel/db/migrations/0065-promise-and-assistant-reviews.sql +58 -0
- package/dist/kernel/db/migrations/0066-assistant.sql +44 -0
- package/dist/kernel/db/migrations/0067-autopilot.sql +6 -0
- package/dist/kernel/db/migrations/0068-topic-scores.sql +17 -0
- package/dist/kernel/db/migrations/0070-designs.sql +53 -0
- package/dist/kernel/db/migrations/0071-design-usage.sql +33 -0
- package/dist/kernel/db/migrations/0072-design-templates.sql +33 -0
- package/dist/kernel/db/migrations/0073-schedule-design-kind.sql +5 -0
- package/dist/kernel/db/migrations/0074-template-bakeoffs.sql +44 -0
- package/dist/kernel/db/migrations/0075-social-posts.sql +25 -0
- package/dist/kernel/db/migrations/0076-channel-social.sql +5 -0
- package/dist/kernel/db/migrations/0077-post-prompts.sql +17 -0
- package/dist/kernel/db/migrations/0078-uploaded-from-links.sql +7 -0
- package/dist/kernel/db/tx.js +2 -4
- package/dist/kernel/errors.js +27 -1
- package/dist/kernel/json-answer.js +15 -0
- package/dist/kernel/lock.js +4 -9
- package/dist/kernel/paths.js +8 -0
- package/dist/kernel/pipeline.js +12 -0
- package/dist/kernel/ports/assistant-cli.js +4 -0
- package/dist/kernel/ports/host-cli.js +3 -0
- package/dist/kernel/ports/interest.js +4 -0
- package/dist/kernel/ports/languages.js +0 -3
- package/dist/kernel/ports/model.js +2 -0
- package/dist/kernel/ports/settings-places.js +31 -0
- package/dist/kernel/ports/system-speech.js +31 -3
- package/dist/kernel/runner/attempt.js +14 -4
- package/dist/kernel/runner/audition.js +3 -1
- package/dist/kernel/runner/checkpoint-authority.js +2 -1
- package/dist/kernel/runner/index.js +8 -10
- package/dist/kernel/runner/model-access.js +40 -0
- package/dist/kernel/runner/model-check.js +153 -0
- package/dist/kernel/runner/providers.js +18 -12
- package/dist/kernel/runner/standalone.js +11 -7
- package/dist/main.js +338 -21
- package/dist/model-catalog.js +20 -0
- package/dist/model-checks.js +166 -0
- package/dist/patch-notes/4.0.0.md +51 -0
- package/dist/patch-notes/4.1.0.md +42 -0
- package/dist/patch-notes/index.json +12 -0
- package/dist/slices/admission/heads.js +2 -1
- package/dist/slices/admission/listing-facts.js +95 -0
- package/dist/slices/admission/repo.js +11 -7
- package/dist/slices/admission/rules.js +50 -15
- package/dist/slices/admission/schema.js +8 -0
- package/dist/slices/admission/stage-writes.js +0 -3
- package/dist/slices/admission/start.js +48 -31
- package/dist/slices/admission/state-words.js +34 -5
- package/dist/slices/admission/substitute.js +7 -4
- package/dist/slices/agents/attention-posts.js +31 -0
- package/dist/slices/agents/attention-templates.js +33 -0
- package/dist/slices/agents/attention.js +10 -1
- package/dist/slices/agents/connection.js +2 -6
- package/dist/slices/agents/model.js +6 -3
- package/dist/slices/agents/repo.js +15 -7
- package/dist/slices/article/continuation.js +0 -63
- package/dist/slices/article/plain.js +3 -2
- package/dist/slices/article/segments.js +2 -62
- package/dist/slices/assistant/access.js +1 -0
- package/dist/slices/assistant/asks.js +80 -0
- package/dist/slices/assistant/cost.js +54 -0
- package/dist/slices/assistant/gate.js +222 -0
- package/dist/slices/assistant/model.js +86 -0
- package/dist/slices/assistant/names.js +23 -0
- package/dist/slices/assistant/prompt.js +74 -0
- package/dist/slices/assistant/repo.js +74 -0
- package/dist/slices/assistant/tokens.js +18 -0
- package/dist/slices/assistant/turn.js +344 -0
- package/dist/slices/autopilot/buffer.js +76 -0
- package/dist/slices/autopilot/model.js +14 -0
- package/dist/slices/autopilot/notify.js +27 -0
- package/dist/slices/autopilot/repo.js +34 -0
- package/dist/slices/autopilot/signals.js +194 -0
- package/dist/slices/autopilot/warnings.js +85 -0
- package/dist/slices/autopilot/weekly.js +100 -0
- package/dist/slices/backups/files.js +2 -6
- package/dist/slices/backups/repo.js +3 -15
- package/dist/slices/backups/service.js +8 -7
- package/dist/slices/channels/cast-images.js +3 -2
- package/dist/slices/channels/model.js +0 -1
- package/dist/slices/channels/rebrand.js +0 -3
- package/dist/slices/channels/repo.js +4 -0
- package/dist/slices/channels/schema.js +7 -1
- package/dist/slices/channels/service.js +10 -0
- package/dist/slices/channels/videos.js +3 -15
- package/dist/slices/checkpoints/index.js +0 -1
- package/dist/slices/control/providers.js +2 -28
- package/dist/slices/designs/artwork.js +66 -0
- package/dist/slices/designs/budget.js +23 -0
- package/dist/slices/designs/calls.js +124 -0
- package/dist/slices/designs/check-context.js +38 -0
- package/dist/slices/designs/check-text.js +43 -0
- package/dist/slices/designs/fields.js +88 -0
- package/dist/slices/designs/frames.js +34 -0
- package/dist/slices/designs/gate.js +130 -0
- package/dist/slices/designs/layout.js +293 -0
- package/dist/slices/designs/model.js +35 -0
- package/dist/slices/designs/pdf-job.js +23 -0
- package/dist/slices/designs/pdf-pages.js +30 -0
- package/dist/slices/designs/pdf-runner.js +68 -0
- package/dist/slices/designs/pdf-worker.js +24 -0
- package/dist/slices/designs/picture-size.js +79 -0
- package/dist/slices/designs/pictures.js +55 -0
- package/dist/slices/designs/quote.js +24 -0
- package/dist/slices/designs/render-args.js +36 -0
- package/dist/slices/designs/render-input.js +59 -0
- package/dist/slices/designs/render.js +215 -0
- package/dist/slices/designs/repo.js +101 -0
- package/dist/slices/designs/requests.js +80 -0
- package/dist/slices/designs/runner.js +239 -0
- package/dist/slices/designs/sample-repo.js +91 -0
- package/dist/slices/designs/sample.js +223 -0
- package/dist/slices/designs/schema.js +87 -0
- package/dist/slices/designs/sections.js +44 -0
- package/dist/slices/designs/service.js +233 -0
- package/dist/slices/designs/steps-repo.js +102 -0
- package/dist/slices/designs/studio-kind.js +39 -0
- package/dist/slices/designs/template-checks.js +44 -0
- package/dist/slices/designs/template-make.js +118 -0
- package/dist/slices/designs/templates.js +218 -0
- package/dist/slices/document/fonts.js +2 -1
- package/dist/slices/document/model.js +7 -4
- package/dist/slices/document/render.js +2 -1
- package/dist/slices/document/theme-schema.js +1 -1
- package/dist/slices/document/theme.js +49 -3
- package/dist/slices/episodes/summarize.js +6 -2
- package/dist/slices/estimate/index.js +72 -28
- package/dist/slices/estimate/requests.js +4 -4
- package/dist/slices/fixes/rules.js +3 -1
- package/dist/slices/fonts/catalog.js +5 -3
- package/dist/slices/fonts/coverage.js +2 -1
- package/dist/slices/fonts/discovery.js +3 -2
- package/dist/slices/fonts/files.js +2 -6
- package/dist/slices/fonts/index.js +0 -1
- package/dist/slices/fonts/sfnt.js +45 -10
- package/dist/slices/images/appearance.js +8 -16
- package/dist/slices/images/scenes.js +102 -28
- package/dist/slices/keywords/digest.js +85 -0
- package/dist/slices/keywords/facts.js +92 -0
- package/dist/slices/keywords/fill.js +80 -0
- package/dist/slices/keywords/model.js +75 -0
- package/dist/slices/keywords/rules.js +187 -0
- package/dist/slices/keywords/schema.js +28 -0
- package/dist/slices/keywords/specs.js +260 -0
- package/dist/slices/keywords/values.js +74 -0
- package/dist/slices/library/lint.js +29 -12
- package/dist/slices/library/model.js +2 -0
- package/dist/slices/library/photorealistic.js +4 -12
- package/dist/slices/library/rename.js +9 -7
- package/dist/slices/library/save.js +14 -10
- package/dist/slices/library/slots.js +37 -11
- package/dist/slices/library/transfer.js +5 -4
- package/dist/slices/library/used-by.js +25 -10
- package/dist/slices/loudness/loudnorm.js +53 -12
- package/dist/slices/loudness/model.js +3 -2
- package/dist/slices/loudness/sentence-level.js +2 -1
- package/dist/slices/model-checks/cost.js +61 -0
- package/dist/slices/model-checks/listing.js +124 -0
- package/dist/slices/model-checks/model.js +20 -0
- package/dist/slices/model-checks/record.js +32 -0
- package/dist/slices/model-checks/repo.js +120 -0
- package/dist/slices/model-checks/rules.js +125 -0
- package/dist/slices/model-checks/run.js +143 -0
- package/dist/slices/model-checks/service.js +198 -0
- package/dist/slices/model-upkeep/model.js +1 -1
- package/dist/slices/model-upkeep/switch.js +72 -27
- package/dist/slices/model-upkeep/usage.js +39 -13
- package/dist/slices/narration/breaths.js +3 -1
- package/dist/slices/narration/clean-pieces.js +3 -1
- package/dist/slices/narration/concat.js +2 -1
- package/dist/slices/narration/pauses-model.js +3 -2
- package/dist/slices/narration/peaks.js +3 -4
- package/dist/slices/narration/pronunciation-chunks.js +4 -3
- package/dist/slices/narration/pronunciation.js +6 -4
- package/dist/slices/narration/steering.js +4 -3
- package/dist/slices/notifications/notifier.js +4 -3
- package/dist/slices/notifications/rules.js +5 -2
- package/dist/slices/notifications/settings.js +4 -12
- package/dist/slices/notifications/subject.js +4 -3
- package/dist/slices/onboarding/copy.js +21 -3
- package/dist/slices/onboarding/first-run.js +16 -40
- package/dist/slices/onboarding/full-video.js +3 -2
- package/dist/slices/onboarding/install.js +6 -4
- package/dist/slices/onboarding/model.js +26 -37
- package/dist/slices/onboarding/packs.js +22 -22
- package/dist/slices/onboarding/preferred-model.js +14 -0
- package/dist/slices/onboarding/quick-short.js +105 -65
- package/dist/slices/onboarding/sample.js +4 -2
- package/dist/slices/onboarding/state.js +9 -11
- package/dist/slices/onboarding/template.js +8 -6
- package/dist/slices/outputs/add.js +3 -2
- package/dist/slices/outputs/service.js +2 -2
- package/dist/slices/patch-notes/library.js +4 -3
- package/dist/slices/play-drafts/convert.js +4 -0
- package/dist/slices/play-drafts/readiness.js +3 -3
- package/dist/slices/play-drafts/review-inputs.js +9 -3
- package/dist/slices/play-drafts/review.js +5 -4
- package/dist/slices/play-drafts/schema.js +4 -0
- package/dist/slices/play-drafts/service.js +17 -7
- package/dist/slices/project-templates/from-project.js +9 -2
- package/dist/slices/project-templates/next-chapter.js +2 -1
- package/dist/slices/project-templates/provider-defaults.js +22 -0
- package/dist/slices/project-templates/repo.js +6 -1
- package/dist/slices/project-templates/setup-sections.js +26 -0
- package/dist/slices/project-templates/setup.js +14 -1
- package/dist/slices/project-templates/stand-ins.js +22 -0
- package/dist/slices/rebuild/activity.js +2 -0
- package/dist/slices/rebuild/admission-repo.js +3 -2
- package/dist/slices/rebuild/narration-history.js +4 -5
- package/dist/slices/rebuild/narration-retry.js +2 -1
- package/dist/slices/rebuild/preview-details.js +32 -14
- package/dist/slices/rebuild/preview-plan.js +3 -8
- package/dist/slices/rebuild/recipe-build.js +8 -3
- package/dist/slices/rebuild/recipe-describe.js +3 -3
- package/dist/slices/rebuild/recipe-digest.js +58 -0
- package/dist/slices/rebuild/recipe-input-schema.js +10 -0
- package/dist/slices/rebuild/recipe-keywords.js +71 -0
- package/dist/slices/rebuild/recipe-legacy.js +5 -1
- package/dist/slices/rebuild/recipe-model.js +4 -0
- package/dist/slices/rebuild/recipe-narration-text.js +2 -1
- package/dist/slices/rebuild/recipe-preparation.js +4 -4
- package/dist/slices/rebuild/recipe-reference.js +8 -4
- package/dist/slices/rebuild/recipe-reviews.js +27 -7
- package/dist/slices/rebuild/recipe-save.js +8 -5
- package/dist/slices/rebuild/recipe-scenes.js +40 -11
- package/dist/slices/rebuild/recipe-shorts.js +8 -8
- package/dist/slices/rebuild/recipe-social.js +46 -0
- package/dist/slices/rebuild/recipe-text.js +64 -20
- package/dist/slices/rebuild/recipe-validation.js +102 -31
- package/dist/slices/rebuild/recipe-visual.js +55 -16
- package/dist/slices/rebuild/recipe-voices.js +3 -2
- package/dist/slices/rebuild/recipe-work.js +19 -7
- package/dist/slices/rebuild/recipe-youtube.js +4 -3
- package/dist/slices/rebuild/recovery-selection.js +3 -1
- package/dist/slices/rebuild/recovery.js +9 -8
- package/dist/slices/rebuild/remake-outdated.js +5 -5
- package/dist/slices/rebuild/repo.js +4 -3
- package/dist/slices/rebuild/review-promise.js +25 -0
- package/dist/slices/rebuild/review-redo.js +3 -2
- package/dist/slices/rebuild/runtime-admission.js +4 -3
- package/dist/slices/rebuild/runtime-agent-review.js +11 -5
- package/dist/slices/rebuild/runtime-animate.js +10 -9
- package/dist/slices/rebuild/runtime-article.js +7 -5
- package/dist/slices/rebuild/runtime-checkpoints.js +5 -4
- package/dist/slices/rebuild/runtime-document.js +11 -13
- package/dist/slices/rebuild/runtime-export-bed.js +8 -12
- package/dist/slices/rebuild/runtime-export-edit.js +8 -16
- package/dist/slices/rebuild/runtime-export-inputs.js +12 -11
- package/dist/slices/rebuild/runtime-export-short.js +9 -5
- package/dist/slices/rebuild/runtime-export.js +38 -15
- package/dist/slices/rebuild/runtime-figure-card.js +2 -1
- package/dist/slices/rebuild/runtime-image.js +8 -12
- package/dist/slices/rebuild/runtime-instructions.js +2 -0
- package/dist/slices/rebuild/runtime-keywords.js +59 -0
- package/dist/slices/rebuild/runtime-lines.js +2 -11
- package/dist/slices/rebuild/runtime-local.js +17 -22
- package/dist/slices/rebuild/runtime-narration-publication.js +2 -5
- package/dist/slices/rebuild/runtime-narration-reuse.js +9 -13
- package/dist/slices/rebuild/runtime-narration-text.js +13 -17
- package/dist/slices/rebuild/runtime-pictures.js +2 -4
- package/dist/slices/rebuild/runtime-piece-label.js +10 -6
- package/dist/slices/rebuild/runtime-plan.js +31 -5
- package/dist/slices/rebuild/runtime-provider.js +67 -25
- package/dist/slices/rebuild/runtime-publication.js +10 -9
- package/dist/slices/rebuild/runtime-review.js +39 -33
- package/dist/slices/rebuild/runtime-run.js +4 -1
- package/dist/slices/rebuild/runtime-shorts.js +31 -50
- package/dist/slices/rebuild/runtime-store.js +20 -10
- package/dist/slices/rebuild/runtime-subtitles.js +28 -25
- package/dist/slices/rebuild/runtime-voices.js +10 -16
- package/dist/slices/rebuild/runtime-youtube.js +14 -31
- package/dist/slices/rebuild/service-readiness.js +11 -3
- package/dist/slices/rebuild/transition-repo.js +6 -5
- package/dist/slices/rebuild/work-records.js +6 -0
- package/dist/slices/reruns/cascade.js +1 -2
- package/dist/slices/reruns/index.js +6 -9
- package/dist/slices/research/synthesis.js +3 -2
- package/dist/slices/reviews/external-model.js +4 -1
- package/dist/slices/reviews/external-repo.js +2 -1
- package/dist/slices/reviews/external-rows.js +2 -3
- package/dist/slices/reviews/holds.js +5 -4
- package/dist/slices/reviews/model.js +32 -11
- package/dist/slices/reviews/repo.js +2 -1
- package/dist/slices/reviews/rules.js +4 -3
- package/dist/slices/reviews/verdict.js +2 -1
- package/dist/slices/reviews/view.js +5 -2
- package/dist/slices/revisions/downloads.js +4 -5
- package/dist/slices/revisions/image-plan.js +1 -1
- package/dist/slices/revisions/mutation-assets.js +9 -5
- package/dist/slices/revisions/mutation-cues.js +2 -5
- package/dist/slices/revisions/mutations.js +3 -3
- package/dist/slices/revisions/repo.js +3 -1
- package/dist/slices/revisions/schema.js +1 -0
- package/dist/slices/revisions/view.js +20 -0
- package/dist/slices/run-cost/limits.js +5 -2
- package/dist/slices/run-cost/meter.js +12 -5
- package/dist/slices/run-cost/panel.js +8 -74
- package/dist/slices/run-cost/plan-readings.js +127 -0
- package/dist/slices/run-cost/plan-use.js +169 -0
- package/dist/slices/run-cost/pricing.js +3 -3
- package/dist/slices/run-cost/week.js +32 -4
- package/dist/slices/schedules/agenda.js +18 -7
- package/dist/slices/schedules/by-date.js +42 -0
- package/dist/slices/schedules/calendar.js +5 -0
- package/dist/slices/schedules/design-agenda.js +36 -0
- package/dist/slices/schedules/design-check.js +41 -0
- package/dist/slices/schedules/design-run.js +126 -0
- package/dist/slices/schedules/next-run.js +62 -0
- package/dist/slices/schedules/prepare.js +18 -2
- package/dist/slices/schedules/repo.js +30 -21
- package/dist/slices/schedules/rescore.js +35 -0
- package/dist/slices/schedules/scheduler.js +13 -3
- package/dist/slices/schedules/schema.js +57 -3
- package/dist/slices/schedules/score.js +107 -0
- package/dist/slices/schedules/service.js +57 -24
- package/dist/slices/schedules/topic-list.js +15 -0
- package/dist/slices/schedules/topic-scores.js +104 -0
- package/dist/slices/schedules/topics.js +53 -41
- package/dist/slices/settings/cli-paths.js +4 -6
- package/dist/slices/settings/first-run.js +8 -43
- package/dist/slices/settings/health.js +30 -15
- package/dist/slices/settings/key-test.js +1 -1
- package/dist/slices/settings/model-reach.js +3 -17
- package/dist/slices/settings/model.js +14 -2
- package/dist/slices/settings/playback.js +34 -23
- package/dist/slices/settings/probe-read.js +16 -0
- package/dist/slices/settings/repo.js +33 -0
- package/dist/slices/settings/tutorial.js +2 -2
- package/dist/slices/settings/voices.js +4 -12
- package/dist/slices/shorts/keep.js +2 -1
- package/dist/slices/shorts/pick.js +6 -18
- package/dist/slices/shorts/prompts.js +4 -14
- package/dist/slices/shorts/render.js +6 -2
- package/dist/slices/social/channel.js +44 -0
- package/dist/slices/social/defaults.js +17 -0
- package/dist/slices/social/due.js +36 -0
- package/dist/slices/social/extension.js +18 -0
- package/dist/slices/social/fit.js +115 -0
- package/dist/slices/social/limits.js +186 -0
- package/dist/slices/social/links.js +21 -0
- package/dist/slices/social/media.js +132 -0
- package/dist/slices/social/model.js +75 -0
- package/dist/slices/social/notice.js +19 -0
- package/dist/slices/social/pack.js +176 -0
- package/dist/slices/social/post-prompt.js +56 -0
- package/dist/slices/social/queue.js +31 -0
- package/dist/slices/social/repo.js +133 -0
- package/dist/slices/social/reshape.js +97 -0
- package/dist/slices/social/rules.js +5 -0
- package/dist/slices/social/schema.js +70 -0
- package/dist/slices/social/serve.js +51 -0
- package/dist/slices/social/service.js +129 -0
- package/dist/slices/social/settings.js +21 -0
- package/dist/slices/social/sources.js +114 -0
- package/dist/slices/social/state.js +110 -0
- package/dist/slices/social/text.js +149 -0
- package/dist/slices/storage/arrange.js +3 -1
- package/dist/slices/storage/assets.js +8 -10
- package/dist/slices/storage/backup-designs.js +74 -0
- package/dist/slices/storage/backup-export.js +8 -3
- package/dist/slices/storage/backup-format.js +10 -0
- package/dist/slices/storage/backup-import.js +22 -4
- package/dist/slices/storage/delete-project.js +6 -5
- package/dist/slices/storage/files-location.js +6 -8
- package/dist/slices/storage/layout.js +13 -2
- package/dist/slices/storage/model.js +3 -0
- package/dist/slices/storage/portable.js +17 -12
- package/dist/slices/storage/schema.js +2 -0
- package/dist/slices/storage/staging-refs.js +2 -1
- package/dist/slices/storage/staging.js +6 -9
- package/dist/slices/storage/trim.js +26 -9
- package/dist/slices/studio/calendar.js +7 -2
- package/dist/slices/studio/disclosure.js +4 -4
- package/dist/slices/studio/model.js +1 -1
- package/dist/slices/studio/pack.js +9 -8
- package/dist/slices/studio/pick.js +2 -11
- package/dist/slices/studio/plan.js +7 -16
- package/dist/slices/studio/queue.js +3 -14
- package/dist/slices/studio/releases.js +26 -0
- package/dist/slices/studio/settings.js +20 -57
- package/dist/slices/studio/videos.js +35 -4
- package/dist/slices/style-preview/render.js +37 -16
- package/dist/slices/style-preview/schema.js +14 -1
- package/dist/slices/style-preview/service.js +2 -1
- package/dist/slices/style-preview/settings.js +33 -5
- package/dist/slices/subtitles/captions.js +1 -1
- package/dist/slices/telemetry/collector-client.js +2 -4
- package/dist/slices/telemetry/flush.js +2 -4
- package/dist/slices/telemetry/model.js +0 -7
- package/dist/slices/telemetry/record.js +10 -3
- package/dist/slices/template-studio/anatomy-view.js +161 -0
- package/dist/slices/template-studio/anatomy.js +73 -0
- package/dist/slices/template-studio/bakeoff-make.js +225 -0
- package/dist/slices/template-studio/bakeoff-repo.js +83 -0
- package/dist/slices/template-studio/bakeoff.js +333 -0
- package/dist/slices/template-studio/budget.js +106 -0
- package/dist/slices/template-studio/cards.js +78 -0
- package/dist/slices/template-studio/checks.js +322 -0
- package/dist/slices/template-studio/document-sample.js +56 -0
- package/dist/slices/template-studio/edit.js +15 -0
- package/dist/slices/template-studio/for-all.js +161 -0
- package/dist/slices/template-studio/free-video.js +31 -0
- package/dist/slices/template-studio/free.js +176 -0
- package/dist/slices/template-studio/gate.js +40 -0
- package/dist/slices/template-studio/hidden.js +20 -0
- package/dist/slices/template-studio/jobs.js +79 -0
- package/dist/slices/template-studio/loudness.js +111 -0
- package/dist/slices/template-studio/make.js +40 -0
- package/dist/slices/template-studio/model.js +58 -0
- package/dist/slices/template-studio/pack-import.js +253 -0
- package/dist/slices/template-studio/pack-samples.js +60 -0
- package/dist/slices/template-studio/pack.js +207 -0
- package/dist/slices/template-studio/paid-view.js +66 -0
- package/dist/slices/template-studio/paid.js +355 -0
- package/dist/slices/template-studio/quote.js +155 -0
- package/dist/slices/template-studio/ready.js +104 -0
- package/dist/slices/template-studio/repo.js +134 -0
- package/dist/slices/template-studio/reviews-path.js +58 -0
- package/dist/slices/template-studio/runner.js +84 -0
- package/dist/slices/template-studio/save.js +236 -0
- package/dist/slices/template-studio/say-it-as.js +248 -0
- package/dist/slices/template-studio/schedule-gate.js +34 -0
- package/dist/slices/template-studio/schedule-price.js +32 -0
- package/dist/slices/template-studio/schedule-sample.js +91 -0
- package/dist/slices/template-studio/schema.js +243 -0
- package/dist/slices/template-studio/scope.js +124 -0
- package/dist/slices/template-studio/sections.js +176 -0
- package/dist/slices/template-studio/service.js +175 -0
- package/dist/slices/template-studio/status.js +191 -0
- package/dist/slices/template-studio/topic.js +223 -0
- package/dist/slices/thumbnail/by-llm.js +1 -1
- package/dist/slices/trash/designs.js +76 -0
- package/dist/slices/trash/model.js +13 -4
- package/dist/slices/trash/service.js +52 -2
- package/dist/slices/tutorials/library.js +3 -2
- package/dist/slices/uploads/repo.js +37 -1
- package/dist/slices/uploads/rules.js +3 -2
- package/dist/slices/video/ass-text.js +17 -0
- package/dist/slices/video/audio-export.js +2 -64
- package/dist/slices/video/edit-list.js +2 -2
- package/dist/slices/video/edit-settings.js +1 -1
- package/dist/slices/video/encoding.js +169 -0
- package/dist/slices/video/ffmpeg.js +23 -21
- package/dist/slices/video/figure-card.js +1 -15
- package/dist/slices/video/plan.js +2 -1
- package/dist/slices/video/slideshow.js +43 -18
- package/dist/slices/voices/attribution.js +3 -2
- package/dist/slices/voices/model.js +9 -8
- package/dist/slices/voices/palette.js +0 -3
- package/dist/slices/voices/script.js +2 -1
- package/dist/slices/youtube/answer.js +4 -16
- package/dist/slices/youtube/edits-repo.js +3 -12
- package/dist/tutorials/AI-CLIs.md +25 -25
- package/dist/tutorials/Agents-MCP.md +34 -33
- package/dist/tutorials/Assistant.md +42 -0
- package/dist/tutorials/Backups.md +7 -7
- package/dist/tutorials/Calendar.md +17 -25
- package/dist/tutorials/Cast-Library.md +19 -19
- package/dist/tutorials/Channels.md +42 -35
- package/dist/tutorials/Costs-and-Run-Cost.md +38 -40
- package/dist/tutorials/Create-Article.md +114 -0
- package/dist/tutorials/Create-Extras.md +112 -0
- package/dist/tutorials/Create-Images.md +165 -0
- package/dist/tutorials/Create-Narration.md +178 -0
- package/dist/tutorials/Create-Overview.md +244 -0
- package/dist/tutorials/Create-Video-and-Style.md +144 -0
- package/dist/tutorials/Docker.md +3 -3
- package/dist/tutorials/Document-Themes.md +32 -32
- package/dist/tutorials/Editing-a-Project.md +94 -94
- package/dist/tutorials/FAQ.md +18 -18
- package/dist/tutorials/First-Launch-and-Welcome.md +50 -64
- package/dist/tutorials/Home-and-Projects.md +115 -71
- package/dist/tutorials/Home.md +33 -33
- package/dist/tutorials/Install.md +14 -13
- package/dist/tutorials/Intros-and-Outros.md +33 -34
- package/dist/tutorials/Keyboard-Shortcuts-and-Command-Palette.md +62 -58
- package/dist/tutorials/Keywords-Slopify-Fills.md +87 -0
- package/dist/tutorials/Models.md +53 -21
- package/dist/tutorials/Multiple-Voices.md +41 -40
- package/dist/tutorials/Narration-Aliases-and-Glossary.md +14 -14
- package/dist/tutorials/Notifications.md +27 -17
- package/dist/tutorials/Other-Languages.md +15 -15
- package/dist/tutorials/PDF-Documents.md +38 -29
- package/dist/tutorials/Posting-to-Social-Sites.md +121 -0
- package/dist/tutorials/Project-Page.md +118 -120
- package/dist/tutorials/Prompts-and-Templates.md +84 -0
- package/dist/tutorials/Prompts.md +48 -44
- package/dist/tutorials/Providers-and-Keys.md +105 -98
- package/dist/tutorials/Publishing-to-YouTube.md +31 -31
- package/dist/tutorials/Recovery-and-Retries.md +31 -31
- package/dist/tutorials/Remote-Access.md +63 -0
- package/dist/tutorials/Reviews-and-Checkpoints.md +98 -90
- package/dist/tutorials/Schedules.md +46 -27
- package/dist/tutorials/Settings-Reference.md +194 -174
- package/dist/tutorials/Shorts.md +34 -33
- package/dist/tutorials/Start-at-Login.md +3 -3
- package/dist/tutorials/Studio-Extension.md +22 -24
- package/dist/tutorials/Template-Studio.md +128 -0
- package/dist/tutorials/Templates.md +51 -77
- package/dist/tutorials/Trash.md +4 -4
- package/dist/tutorials/Troubleshooting.md +44 -44
- package/dist/tutorials/Uninstalling-and-Moving.md +5 -5
- package/dist/tutorials/Updating-and-Patch-Notes.md +18 -18
- package/dist/tutorials/Video-Editing.md +34 -34
- package/dist/tutorials/Where-Your-Files-Live.md +10 -10
- package/dist/tutorials/YouTube-Description.md +26 -26
- package/dist/tutorials/Your-First-Short.md +35 -35
- package/dist/tutorials/_Sidebar.md +19 -14
- package/dist/updater/work-in-progress.js +42 -12
- package/dist/web/assets/index-BNftKQrA.css +1 -0
- package/dist/web/assets/index-Cpa58woP.js +459 -0
- package/dist/web/assets/pdf-BKh8f7R6.js +56 -0
- package/dist/web/assets/pdf.worker.min-BmVo14Nb.mjs +28 -0
- package/dist/web/assets/pdf.worker.min-D7i8o3wR.js +1 -0
- package/dist/web/index.html +2 -2
- package/package.json +6 -2
- package/dist/slices/article/provided-entries.js +0 -66
- package/dist/slices/article/run.js +0 -145
- package/dist/slices/images/run.js +0 -234
- package/dist/slices/narration/legacy-plan.js +0 -58
- package/dist/slices/narration/run.js +0 -270
- package/dist/slices/rebuild/runtime-actions.js +0 -90
- package/dist/slices/research/run.js +0 -224
- package/dist/slices/subtitles/prepare.js +0 -194
- package/dist/slices/subtitles/transcript.js +0 -34
- package/dist/slices/thumbnail/run.js +0 -219
- package/dist/slices/video/audio-inputs.js +0 -33
- package/dist/slices/video/reuse-audio.js +0 -62
- package/dist/slices/video/run.js +0 -78
- package/dist/slices/video/write-export.js +0 -158
- package/dist/slices/video/write-subtitles.js +0 -59
- package/dist/tutorials/Library-Overview.md +0 -76
- package/dist/tutorials/Play-Images.md +0 -161
- package/dist/tutorials/Play-Narration.md +0 -167
- package/dist/tutorials/Play-Outputs.md +0 -109
- package/dist/tutorials/Play-Overview.md +0 -227
- package/dist/tutorials/Play-Title-and-Article.md +0 -136
- package/dist/tutorials/Play-Video-and-Style.md +0 -143
- package/dist/web/assets/index-BadsoORk.css +0 -1
- package/dist/web/assets/index-D8LqNsCl.js +0 -326
- package/dist/web/assets/pdf-T7MCwjIv.js +0 -54
- package/dist/web/assets/pdf.worker.min-Dswkl-cV.mjs +0 -29
- package/dist/web/assets/pdf.worker.min-zC6nfbxG.js +0 -1
|
@@ -31,7 +31,11 @@ export const fileArg = z
|
|
|
31
31
|
export function formBody(screen) {
|
|
32
32
|
return `Body: the fields ${screen} sends; a wrong body is refused with every wrong field named.`;
|
|
33
33
|
}
|
|
34
|
-
|
|
34
|
+
// `confirmed` is what the confirmed argument is said to mean; the assistant offers it on every
|
|
35
|
+
// ask-first tool, including ones the page doesn't confirm.
|
|
36
|
+
export function inputShape(tool, confirmed = tool.confirm === undefined
|
|
37
|
+
? undefined
|
|
38
|
+
: "true once you accept the consequence the description states.") {
|
|
35
39
|
const { method, path } = routeOf(tool);
|
|
36
40
|
return {
|
|
37
41
|
...Object.fromEntries(paramsOf(path).map((name) => [name, pathParam])),
|
|
@@ -42,20 +46,36 @@ export function inputShape(tool) {
|
|
|
42
46
|
...(method === "GET"
|
|
43
47
|
? {}
|
|
44
48
|
: tool.upload === undefined
|
|
45
|
-
? {
|
|
46
|
-
body: z
|
|
47
|
-
.record(z.string(), z.unknown())
|
|
48
|
-
.optional()
|
|
49
|
-
.describe("The JSON body the description names."),
|
|
50
|
-
}
|
|
49
|
+
? { body: bodyArg(tool) }
|
|
51
50
|
: { file: fileArg }),
|
|
52
|
-
...(
|
|
53
|
-
? {}
|
|
54
|
-
: {
|
|
55
|
-
confirmed: z
|
|
56
|
-
.boolean()
|
|
57
|
-
.optional()
|
|
58
|
-
.describe("true once you accept the consequence the description states."),
|
|
59
|
-
}),
|
|
51
|
+
...(confirmed === undefined ? {} : { confirmed: z.boolean().optional().describe(confirmed) }),
|
|
60
52
|
};
|
|
61
53
|
}
|
|
54
|
+
// The body argument: any JSON object, so a wrong one reaches the route's own check (and its
|
|
55
|
+
// wording) instead of the MCP client's; with the route's schema, its JSON Schema is listed too.
|
|
56
|
+
function bodyArg(tool) {
|
|
57
|
+
const loose = z.record(z.string(), z.unknown()).optional();
|
|
58
|
+
if (tool.body === undefined)
|
|
59
|
+
return loose.describe("The JSON body the description names.");
|
|
60
|
+
const { $schema: _draft, ...listed } = z.toJSONSchema(tool.body, {
|
|
61
|
+
io: "input",
|
|
62
|
+
unrepresentable: "any",
|
|
63
|
+
});
|
|
64
|
+
return loose.meta({
|
|
65
|
+
...listed,
|
|
66
|
+
description: "The JSON body, exactly these fields with these types.",
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
// The route's own reasons for refusing this body, as its validator states them; undefined when
|
|
70
|
+
// the route would take it (or the tool names no schema).
|
|
71
|
+
export function bodyIssues(tool, body) {
|
|
72
|
+
if (tool.body === undefined)
|
|
73
|
+
return undefined;
|
|
74
|
+
const parsed = tool.body.safeParse(body);
|
|
75
|
+
return parsed.success
|
|
76
|
+
? undefined
|
|
77
|
+
: parsed.error.issues.map((issue) => ({
|
|
78
|
+
path: issue.path.map(String).join("."),
|
|
79
|
+
message: issue.message,
|
|
80
|
+
}));
|
|
81
|
+
}
|
package/dist/edge/mcp/server.js
CHANGED
|
@@ -20,25 +20,30 @@ export function createMcpServer(deps) {
|
|
|
20
20
|
registerReviewTools(server, deps);
|
|
21
21
|
registerLibraryTools(server, deps);
|
|
22
22
|
registerRemakeTools(server, deps);
|
|
23
|
+
registerAttention(server, deps);
|
|
24
|
+
server.registerPrompt("attend", {
|
|
25
|
+
title: "Attend to Slopify",
|
|
26
|
+
description: "The routine that clears what waits for a person; run it on a schedule.",
|
|
27
|
+
}, () => ({ messages: [{ role: "user", content: { type: "text", text: attendRoutine } }] }));
|
|
28
|
+
return server;
|
|
29
|
+
}
|
|
30
|
+
export function registerAttention(server, deps) {
|
|
23
31
|
server.registerTool("needs_attention", {
|
|
24
32
|
title: "What needs attention",
|
|
25
|
-
description: "Everything waiting for someone, oldest first: external reviews waiting for a verdict, flagged review verdicts, review checkpoints waiting for approval, failed steps, paused runs, runs a restart stopped, held topics, videos marked Late · upload now
|
|
33
|
+
description: "Everything waiting for someone, oldest first: external reviews waiting for a verdict, flagged review verdicts, review checkpoints waiting for approval, failed steps, paused runs, runs a restart stopped, held topics, videos marked Late · upload now, the extension's failed finishing touches and fills, posts filled in another site's form waiting for the person's Post, and schedules that skip their runs because their template has no version approved for schedules. Each entry has its kind, the project (or schedule), stage and item, the reason or error text, autoRetryInFlight (skip it while true), agentCanAct (report it when false), the fixing tools' ids and the tools to use.",
|
|
26
34
|
annotations: { readOnlyHint: true, openWorldHint: false },
|
|
27
35
|
}, () => text(JSON.stringify({
|
|
28
36
|
entries: needsAttention({ db: deps.db, paths: deps.paths, log: deps.log }, deps.clock.now()),
|
|
29
37
|
})));
|
|
30
|
-
server.registerPrompt("attend", {
|
|
31
|
-
title: "Attend to Slopify",
|
|
32
|
-
description: "The routine that clears what waits for a person; run it on a schedule.",
|
|
33
|
-
}, () => ({ messages: [{ role: "user", content: { type: "text", text: attendRoutine } }] }));
|
|
34
|
-
return server;
|
|
35
38
|
}
|
|
36
|
-
function registerRouteTool(server, deps, tool
|
|
39
|
+
export function registerRouteTool(server, deps, tool,
|
|
40
|
+
// The assistant's ask-first tools take confirmed: true with this meaning.
|
|
41
|
+
confirmed) {
|
|
37
42
|
const { method } = routeOf(tool);
|
|
38
43
|
server.registerTool(tool.name, {
|
|
39
44
|
title: tool.title,
|
|
40
45
|
description: tool.description,
|
|
41
|
-
inputSchema: inputShape(tool),
|
|
46
|
+
inputSchema: confirmed === undefined ? inputShape(tool) : inputShape(tool, confirmed),
|
|
42
47
|
annotations: {
|
|
43
48
|
readOnlyHint: method === "GET" || (tool.unrecorded === true && tool.reachesOut !== "sends"),
|
|
44
49
|
destructiveHint: method === "DELETE" || tool.confirm !== undefined,
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { castGenerateSchema } from "../../slices/channels/schema.js";
|
|
1
2
|
import { formBody } from "./route-tool.js";
|
|
2
3
|
export const channelTools = [
|
|
3
4
|
{
|
|
@@ -72,8 +73,9 @@ export const channelTools = [
|
|
|
72
73
|
{
|
|
73
74
|
name: "generate_cast_picture",
|
|
74
75
|
route: "POST /api/channels/cast/:memberId/generate",
|
|
76
|
+
body: castGenerateSchema,
|
|
75
77
|
title: "Generate a cast picture",
|
|
76
|
-
description: "Draws a cast picture with the image
|
|
78
|
+
description: "Draws a cast picture with the image service, a paid call, like Make the picture on the Cast tab.",
|
|
77
79
|
},
|
|
78
80
|
{
|
|
79
81
|
name: "delete_cast_picture",
|
|
@@ -121,33 +123,33 @@ export const channelTools = [
|
|
|
121
123
|
{
|
|
122
124
|
name: "list_channel_videos",
|
|
123
125
|
route: "GET /api/channels/:id/videos",
|
|
124
|
-
title: "Read
|
|
125
|
-
description: "The channel's
|
|
126
|
+
title: "Read the titles to avoid",
|
|
127
|
+
description: "The channel's titles to avoid: titles of videos it made before Slopify, pasted or imported from YouTube Studio.",
|
|
126
128
|
},
|
|
127
129
|
{
|
|
128
130
|
name: "preview_channel_videos",
|
|
129
131
|
route: "POST /api/channels/:id/videos/preview",
|
|
130
|
-
title: "Preview
|
|
131
|
-
description: formBody("the
|
|
132
|
+
title: "Preview a titles-to-avoid import",
|
|
133
|
+
description: formBody("the Titles to avoid tab's import"),
|
|
132
134
|
unrecorded: true,
|
|
133
135
|
},
|
|
134
136
|
{
|
|
135
137
|
name: "import_channel_videos",
|
|
136
138
|
route: "POST /api/channels/:id/videos",
|
|
137
|
-
title: "Import
|
|
138
|
-
description: formBody("the
|
|
139
|
+
title: "Import titles to avoid",
|
|
140
|
+
description: formBody("the Titles to avoid tab's import"),
|
|
139
141
|
},
|
|
140
142
|
{
|
|
141
143
|
name: "remove_channel_videos",
|
|
142
144
|
route: "DELETE /api/channels/:id/videos",
|
|
143
|
-
title: "Remove every
|
|
145
|
+
title: "Remove every title to avoid",
|
|
144
146
|
description: "Removes every imported title.",
|
|
145
147
|
confirm: "This removes every imported video title of the channel.",
|
|
146
148
|
},
|
|
147
149
|
{
|
|
148
150
|
name: "remove_channel_video",
|
|
149
151
|
route: "DELETE /api/channels/:id/videos/:videoId",
|
|
150
|
-
title: "Remove
|
|
152
|
+
title: "Remove a title to avoid",
|
|
151
153
|
description: "Removes one imported title.",
|
|
152
154
|
},
|
|
153
155
|
];
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { editPictureSchema, makeArtworkSchema, quoteEditSchema, retryStepSchema, } from "../../slices/designs/requests.js";
|
|
2
|
+
import { makeFromTemplateSchema } from "../../slices/designs/template-make.js";
|
|
3
|
+
import { createTemplateSchema, markReadySchema as markDesignReadySchema, saveTemplateSchema, } from "../../slices/designs/templates.js";
|
|
4
|
+
import { sampleRequestSchema } from "../http/design-templates.js";
|
|
5
|
+
import { formBody } from "./route-tool.js";
|
|
6
|
+
// Library → Designs: pictures edited step by step and designed pieces (posters, flyers,
|
|
7
|
+
// brochures, social images), and the design templates they are made from. Every paid step
|
|
8
|
+
// starts only with the acknowledgedHigh its quote gave.
|
|
9
|
+
const paid = "a paid call: send acknowledgedHigh as the quote's high (refused with the new quote when the price rose)";
|
|
10
|
+
export const designTools = [
|
|
11
|
+
{
|
|
12
|
+
name: "list_designs",
|
|
13
|
+
route: "GET /api/designs",
|
|
14
|
+
title: "List designs",
|
|
15
|
+
description: "Every design with its versions, newest first. Query: projectId to list one project's.",
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
name: "upload_design_picture",
|
|
19
|
+
route: "POST /api/designs/pictures",
|
|
20
|
+
title: "Upload a picture to design with",
|
|
21
|
+
description: "Keeps a PNG or JPEG (at most 10 MB) and answers its sha256, which create_design takes as fromStepSha.",
|
|
22
|
+
upload: "raw",
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
name: "create_design",
|
|
26
|
+
route: "POST /api/designs",
|
|
27
|
+
title: "Start a design",
|
|
28
|
+
description: `Starts an edit from a picture (kind "edit" with fromStepSha or stagedFileId) or a designed piece (kind "design" with its document). Body: {id: a new id of letters, digits, - and _, mutationId: a new UUID, kind, name, channelId?, projectId?, stagedFileId? | fromStepSha?, document?, values?}.`,
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
name: "get_design",
|
|
32
|
+
route: "GET /api/designs/:id",
|
|
33
|
+
title: "Read a design",
|
|
34
|
+
description: "One design: its settings, values, current version (headStepId) and every version.",
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
name: "update_design",
|
|
38
|
+
route: "PUT /api/designs/:id",
|
|
39
|
+
title: "Save a design",
|
|
40
|
+
description: `Renames it, links it to a project (projectId, or null to unlink), saves its settings (document; an edit with a document becomes a designed piece) and values. Body: {baseUpdatedAt: the updatedAt get_design returns, name?, projectId?, document?, values?}. ${formBody("the design's Text and Formats tabs")}`,
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
name: "delete_design",
|
|
44
|
+
route: "DELETE /api/designs/:id",
|
|
45
|
+
title: "Delete a design",
|
|
46
|
+
description: "Moves the design to Settings → Trash, where it stays 30 days.",
|
|
47
|
+
confirm: "It moves to Settings → Trash. After 30 days it is removed for good with every version and every file drawn from it.",
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
name: "quote_design_edit",
|
|
51
|
+
route: "POST /api/designs/:id/quote",
|
|
52
|
+
body: quoteEditSchema,
|
|
53
|
+
title: "Price a picture edit",
|
|
54
|
+
description: "What one edit costs with this model. Body: {provider, model, castMemberIds?}. Records nothing.",
|
|
55
|
+
unrecorded: true,
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
name: "quote_design_artwork",
|
|
59
|
+
route: "POST /api/designs/:id/artwork/quote",
|
|
60
|
+
title: "Price a design's artwork",
|
|
61
|
+
description: "What drawing the designed piece's artwork costs. Records nothing.",
|
|
62
|
+
unrecorded: true,
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
name: "edit_design_picture",
|
|
66
|
+
route: "POST /api/designs/:id/edit",
|
|
67
|
+
body: editPictureSchema,
|
|
68
|
+
title: "Edit the picture",
|
|
69
|
+
description: `Changes a version of the picture as the instruction says; the result lands as the next version (read get_design until it is ready or failed). This is ${paid}. Body: {mutationId: a new UUID, fromStepId, instruction, provider, model, castMemberIds?, acknowledgedHigh}.`,
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
name: "make_design_artwork",
|
|
73
|
+
route: "POST /api/designs/:id/artwork",
|
|
74
|
+
body: makeArtworkSchema,
|
|
75
|
+
title: "Make the artwork",
|
|
76
|
+
description: `Draws the designed piece's artwork from its picture prompt with its fields filled. This is ${paid}. Body: {mutationId: a new UUID, acknowledgedHigh}.`,
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
name: "retry_design_step",
|
|
80
|
+
route: "POST /api/designs/:id/steps/:stepId/retry",
|
|
81
|
+
body: retryStepSchema,
|
|
82
|
+
title: "Try a failed version again",
|
|
83
|
+
description: "Asks the provider again for a version that failed, as Try again does. It is paid again, even for a version a restart stopped that may already have been charged: send acknowledgedHigh as the high price quote_design_edit (an edited picture) or quote_design_artwork (artwork) gives for that version's provider and model, and acknowledgedUnknown: true when that price is unknown; refused with the current quote when it differs. Body: {acknowledgedHigh, acknowledgedUnknown?}.",
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
name: "set_design_version",
|
|
87
|
+
route: "PUT /api/designs/:id/head",
|
|
88
|
+
title: "Continue from a version",
|
|
89
|
+
description: "Makes a ready version the one the next edit starts from and the files are drawn from. Free. Body: {stepId}.",
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
name: "get_design_picture",
|
|
93
|
+
route: "GET /api/designs/:id/steps/:stepId/picture",
|
|
94
|
+
title: "See a version",
|
|
95
|
+
description: "One version of the design's picture, as an image.",
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
name: "get_design_file",
|
|
99
|
+
route: "GET /api/designs/:id/files/:file",
|
|
100
|
+
title: "Draw a finished piece",
|
|
101
|
+
description: "Draws the piece in one format with Slopify's text layer, as the design page's Download does: file is <format>.png (a4, a3, flyer, square, portrait, story, wide) or <format>.pdf (a4, a3, flyer, brochure). A PNG comes back as an image; a PDF is drawn and its size reported.",
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
name: "list_design_templates",
|
|
105
|
+
route: "GET /api/design-templates",
|
|
106
|
+
title: "List design templates",
|
|
107
|
+
description: "Every design template with its versions and the version approved for schedules.",
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
name: "create_design_template",
|
|
111
|
+
route: "POST /api/design-templates",
|
|
112
|
+
body: createTemplateSchema,
|
|
113
|
+
title: "Create a design template",
|
|
114
|
+
description: "Body: {id: a new id, mutationId: a new UUID, name, document, channelId?}.",
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
name: "get_design_template",
|
|
118
|
+
route: "GET /api/design-templates/:id",
|
|
119
|
+
title: "Read a design template",
|
|
120
|
+
description: "One design template: its newest version, its checks and every version.",
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
name: "save_design_template",
|
|
124
|
+
route: "PUT /api/design-templates/:id",
|
|
125
|
+
body: saveTemplateSchema,
|
|
126
|
+
title: "Save a design template",
|
|
127
|
+
description: `Saves a new version. Body: {baseVersion: the headVersion get_design_template returns, name, document, sample?: "make" | "skip", acknowledgedHigh?}. ${formBody("the template editor")}`,
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
name: "delete_design_template",
|
|
131
|
+
route: "DELETE /api/design-templates/:id",
|
|
132
|
+
title: "Delete a design template",
|
|
133
|
+
description: "Moves the template to Settings → Trash, where it stays 30 days.",
|
|
134
|
+
confirm: "It moves to Settings → Trash, and schedules that make from it stop making posters. After 30 days it is removed for good with its versions and its sample.",
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
name: "quote_design_template",
|
|
138
|
+
route: "POST /api/design-templates/:id/quote",
|
|
139
|
+
title: "Price a poster from a template",
|
|
140
|
+
description: "What one poster made from the template's newest version costs. With a body {document}: what saving that document would cost the editor's sample instead (only a changed picture is paid), with the sections it changes and whether it makes a picture. Records nothing.",
|
|
141
|
+
unrecorded: true,
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
name: "make_design_template_sample",
|
|
145
|
+
route: "POST /api/design-templates/:id/sample",
|
|
146
|
+
body: sampleRequestSchema,
|
|
147
|
+
title: "Make a template's sample",
|
|
148
|
+
description: `Makes the template editor's sample of a version now, when it is held (it cost more than shown, a price is unknown or the day's sample budget is spent), failed or not made yet. This is ${paid}. Body: {version, acknowledgedHigh: the quote's high}.`,
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
name: "mark_design_template_ready",
|
|
152
|
+
route: "POST /api/design-templates/:id/ready",
|
|
153
|
+
body: markDesignReadySchema,
|
|
154
|
+
title: "Approve a template version for schedules",
|
|
155
|
+
description: "Runs the version's checks and approves it for schedules when they pass, as the editor's Approve for schedules does; refused with the checks that failed. Body: {version}.",
|
|
156
|
+
confirm: "Schedules start making posters from this version.",
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
name: "make_design_from_template",
|
|
160
|
+
route: "POST /api/design-templates/:id/make",
|
|
161
|
+
body: makeFromTemplateSchema,
|
|
162
|
+
title: "Make a poster from a template",
|
|
163
|
+
description: `Makes one poster from a template version with these values and starts its artwork. This is ${paid}. Body: {mutationId: a new UUID, values, acknowledgedHigh, version?, name?, projectId?}.`,
|
|
164
|
+
},
|
|
165
|
+
];
|
|
@@ -4,19 +4,31 @@ export const libraryTools = [
|
|
|
4
4
|
name: "list_prompts",
|
|
5
5
|
route: "GET /api/prompts",
|
|
6
6
|
title: "List prompts",
|
|
7
|
-
description: "
|
|
7
|
+
description: "Your prompts of every kind, as Prompts lists them.",
|
|
8
8
|
},
|
|
9
9
|
{
|
|
10
10
|
name: "create_prompt",
|
|
11
11
|
route: "POST /api/prompts",
|
|
12
12
|
title: "Create a prompt",
|
|
13
|
-
description: "Body: {kind: article | image | thumbnail | narration | description | shorts | review | script, name, body}.",
|
|
13
|
+
description: "Body: {kind: article | image | thumbnail | narration | description | shorts | review | script, name, body}. A body can use the keywords Slopify fills ({{Slopify_Title}}, {{Slopify_Summary}}, {{Slopify_Scene}}…; list_keywords says which work in which kind); any other name starting with Slopify_ is refused.",
|
|
14
14
|
},
|
|
15
15
|
{
|
|
16
16
|
name: "update_prompt",
|
|
17
17
|
route: "PUT /api/prompts/:id",
|
|
18
18
|
title: "Save a prompt",
|
|
19
|
-
description: "Body: {kind, name, body}. Saving adds a history version; a rename follows into templates and
|
|
19
|
+
description: "Body: {kind, name, body}. Saving adds a history version; a rename follows into templates and drafts on Create. The body follows create_prompt's keyword rules; an unknown Slopify_ name the prompt already had is kept.",
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
name: "list_keywords",
|
|
23
|
+
route: "GET /api/keywords",
|
|
24
|
+
title: "List the keywords Slopify fills",
|
|
25
|
+
description: "Every {{Slopify_…}} keyword: what it fills in, an example, when it exists, which prompt kinds can use it and what it costs (free, or part of one AI call per run). {{Scene}} and {{Appearance}} are the old names of {{Slopify_Scene}} and {{Slopify_Appearance}}.",
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
name: "get_keyword_facts",
|
|
29
|
+
route: "GET /api/keywords/facts/:projectId",
|
|
30
|
+
title: "Read a project's keyword facts as they are now",
|
|
31
|
+
description: "The facts keywords like {{Slopify_Channel}}, {{Slopify_Links}} and {{Slopify_Previous_Video}} are filled from, copied again from the project's channel and its other projects, like Refresh keyword facts in Edit settings → Title and keywords. Put the answer's keywordFacts into the revision's config and save it with save_revision.",
|
|
20
32
|
},
|
|
21
33
|
{
|
|
22
34
|
name: "set_prompt_photorealistic",
|
|
@@ -53,7 +65,7 @@ export const libraryTools = [
|
|
|
53
65
|
name: "list_entries",
|
|
54
66
|
route: "GET /api/entries",
|
|
55
67
|
title: "List intros and outros",
|
|
56
|
-
description: "
|
|
68
|
+
description: "Your intros and outros (Prompts → Intros and outros).",
|
|
57
69
|
},
|
|
58
70
|
{
|
|
59
71
|
name: "create_entry",
|
|
@@ -95,8 +107,8 @@ export const libraryTools = [
|
|
|
95
107
|
{
|
|
96
108
|
name: "list_document_themes",
|
|
97
109
|
route: "GET /api/document-themes",
|
|
98
|
-
title: "List PDF
|
|
99
|
-
description: "The built-in PDF
|
|
110
|
+
title: "List PDF looks",
|
|
111
|
+
description: "The built-in PDF looks and the ones you saved.",
|
|
100
112
|
},
|
|
101
113
|
{
|
|
102
114
|
name: "create_document_theme",
|
|
@@ -140,7 +152,7 @@ export const libraryTools = [
|
|
|
140
152
|
name: "get_narration_aliases",
|
|
141
153
|
route: "GET /api/pronunciations/aliases",
|
|
142
154
|
title: "Read narration aliases",
|
|
143
|
-
description: "
|
|
155
|
+
description: "Settings → Voices → Pronunciation: words the narration says differently from how they are written.",
|
|
144
156
|
},
|
|
145
157
|
{
|
|
146
158
|
name: "set_narration_aliases",
|
|
@@ -1,54 +1,65 @@
|
|
|
1
|
+
import { createDraftInputSchema } from "../../slices/play-drafts/schema.js";
|
|
2
|
+
import { templateCreateSchema } from "../../slices/project-templates/schema.js";
|
|
3
|
+
import { startBody, versionBody } from "../http/drafts.js";
|
|
4
|
+
import { nextChapterBody, templateDeleteBody, templateFromProjectBody, templateInstantiateBody, templateUpdateBody, } from "../http/project-templates.js";
|
|
5
|
+
import { saveBody } from "../http/revisions.js";
|
|
1
6
|
import { formBody } from "./route-tool.js";
|
|
2
7
|
const drafts = [
|
|
3
8
|
{
|
|
4
9
|
name: "list_drafts",
|
|
5
10
|
route: "GET /api/drafts",
|
|
6
|
-
title: "List
|
|
7
|
-
description: "
|
|
11
|
+
title: "List the drafts on Create",
|
|
12
|
+
description: "Drafts on Create: videos set up there and not started yet.",
|
|
8
13
|
},
|
|
9
14
|
{
|
|
10
15
|
name: "create_draft",
|
|
11
16
|
route: "POST /api/drafts",
|
|
12
|
-
|
|
13
|
-
|
|
17
|
+
body: createDraftInputSchema,
|
|
18
|
+
title: "Make a new draft on Create",
|
|
19
|
+
description: "New draft, as on Create: a draft whose document is Create's form (kind and outputs, format including square 1:1, sources, prompts, voices, reviews, the One after another switch). Body: {id: a new UUID, document}. get_draft shows a document's shape; instantiate_template makes one from a template.",
|
|
14
20
|
},
|
|
15
21
|
{
|
|
16
22
|
name: "get_draft",
|
|
17
23
|
route: "GET /api/drafts/:id",
|
|
18
|
-
title: "Read a
|
|
19
|
-
description: "A
|
|
24
|
+
title: "Read a draft",
|
|
25
|
+
description: "A draft on Create: its document, version, attachments, latest review and start.",
|
|
20
26
|
},
|
|
21
27
|
{
|
|
22
28
|
name: "save_draft",
|
|
23
29
|
route: "PUT /api/drafts/:id",
|
|
24
|
-
|
|
25
|
-
|
|
30
|
+
body: saveBody,
|
|
31
|
+
title: "Save a draft",
|
|
32
|
+
description: "Saves the draft's document; queue: true is Create's One after another switch, so several videos run one after another. Body: {baseVersion: the draft's version, mutationId: a new UUID, document}.",
|
|
26
33
|
},
|
|
27
34
|
{
|
|
28
35
|
name: "fork_draft",
|
|
29
36
|
route: "POST /api/drafts/:id/fork",
|
|
30
|
-
|
|
37
|
+
body: createDraftInputSchema,
|
|
38
|
+
title: "Copy a draft",
|
|
31
39
|
description: "Body: {id: a new UUID for the copy, sourceId: this draft's id, document}.",
|
|
32
40
|
},
|
|
33
41
|
{
|
|
34
42
|
name: "discard_draft",
|
|
35
43
|
route: "DELETE /api/drafts/:id",
|
|
36
|
-
|
|
44
|
+
body: versionBody,
|
|
45
|
+
title: "Discard a draft",
|
|
37
46
|
description: "Body: {baseVersion}.",
|
|
38
47
|
confirm: "This discards the draft and its uploaded files for good.",
|
|
39
48
|
},
|
|
40
49
|
{
|
|
41
50
|
name: "review_draft",
|
|
42
51
|
route: "POST /api/drafts/:id/review",
|
|
43
|
-
|
|
44
|
-
|
|
52
|
+
body: versionBody,
|
|
53
|
+
title: "Review a draft",
|
|
54
|
+
description: "Create's review: readiness, warnings and the cost estimate the person sees before Make the video. Body: {baseVersion}. start_draft needs this review's id.",
|
|
45
55
|
unrecorded: true,
|
|
46
56
|
},
|
|
47
57
|
{
|
|
48
58
|
name: "start_draft",
|
|
49
59
|
route: "POST /api/drafts/:id/start",
|
|
50
|
-
|
|
51
|
-
|
|
60
|
+
body: startBody,
|
|
61
|
+
title: "Start a draft",
|
|
62
|
+
description: "Make the video on Create: starts the reviewed draft's runs, which spend what the review estimated. Body: {baseVersion, reviewId: the id review_draft returned}.",
|
|
52
63
|
},
|
|
53
64
|
{
|
|
54
65
|
name: "upload_draft_attachment",
|
|
@@ -83,6 +94,8 @@ const drafts = [
|
|
|
83
94
|
description: "Removes an uploaded file no edit used.",
|
|
84
95
|
},
|
|
85
96
|
];
|
|
97
|
+
// Which version a schedule runs after a save (`template-studio/gate.ts`).
|
|
98
|
+
const templateGateRule = "Schedules use a new version from their next run unless a version of this template was approved for schedules in Edit template (mark_template_ready); from then on a new version waits until it is approved.";
|
|
86
99
|
const templates = [
|
|
87
100
|
{
|
|
88
101
|
name: "list_templates",
|
|
@@ -93,20 +106,23 @@ const templates = [
|
|
|
93
106
|
{
|
|
94
107
|
name: "create_template",
|
|
95
108
|
route: "POST /api/project-templates",
|
|
109
|
+
body: templateCreateSchema,
|
|
96
110
|
title: "Create a template",
|
|
97
|
-
description: formBody("the template editor")
|
|
111
|
+
description: `${formBody("the template editor")} ${templateGateRule}`,
|
|
98
112
|
},
|
|
99
113
|
{
|
|
100
114
|
name: "template_from_project",
|
|
101
115
|
route: "POST /api/project-templates/from-project/:projectId",
|
|
116
|
+
body: templateFromProjectBody,
|
|
102
117
|
title: "Save a project as a template",
|
|
103
|
-
description: formBody("Save as template on the project page")
|
|
118
|
+
description: `${formBody("Save as template on the project page")} ${templateGateRule}`,
|
|
104
119
|
},
|
|
105
120
|
{
|
|
106
121
|
name: "next_chapter_template",
|
|
107
122
|
route: "POST /api/project-templates/next-chapter/:projectId",
|
|
123
|
+
body: nextChapterBody,
|
|
108
124
|
title: "Template for the next chapter",
|
|
109
|
-
description: formBody("Next chapter on the project page")
|
|
125
|
+
description: `${formBody("Next chapter on the project page")} ${templateGateRule}`,
|
|
110
126
|
},
|
|
111
127
|
{
|
|
112
128
|
name: "get_template",
|
|
@@ -117,21 +133,24 @@ const templates = [
|
|
|
117
133
|
{
|
|
118
134
|
name: "update_template",
|
|
119
135
|
route: "PUT /api/project-templates/:id",
|
|
136
|
+
body: templateUpdateBody,
|
|
120
137
|
title: "Save a template",
|
|
121
|
-
description: `${formBody("the template editor")} Saving adds a version
|
|
138
|
+
description: `${formBody("the template editor")} Saving adds a version. ${templateGateRule}`,
|
|
122
139
|
},
|
|
123
140
|
{
|
|
124
141
|
name: "delete_template",
|
|
125
142
|
route: "DELETE /api/project-templates/:id",
|
|
143
|
+
body: templateDeleteBody,
|
|
126
144
|
title: "Delete a template",
|
|
127
|
-
description: formBody("Delete
|
|
145
|
+
description: formBody("Delete on Templates"),
|
|
128
146
|
confirm: "Moves it to the trash for 30 days (Settings → Trash). Existing projects and drafts keep their setup.",
|
|
129
147
|
},
|
|
130
148
|
{
|
|
131
149
|
name: "instantiate_template",
|
|
132
150
|
route: "POST /api/project-templates/:id/instantiate",
|
|
133
|
-
|
|
134
|
-
|
|
151
|
+
body: templateInstantiateBody,
|
|
152
|
+
title: "Make a video from a template",
|
|
153
|
+
description: "Opens a new draft on Create from the template, like Make a video on Templates.",
|
|
135
154
|
},
|
|
136
155
|
];
|
|
137
156
|
export const planningTools = [...drafts, ...templates];
|