@gentbajko/slopify 4.0.0 → 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 +1 -1
- package/dist/adapters/alignment/audio.js +1 -1
- package/dist/adapters/alignment/cache.js +1 -1
- package/dist/adapters/alignment/multilingual.js +2 -1
- package/dist/adapters/alignment/runner.js +1 -1
- package/dist/adapters/alignment/worker.js +1 -1
- package/dist/adapters/explain.js +10 -9
- package/dist/adapters/host-cli/index.js +2 -1
- package/dist/adapters/host-cli/transport.js +2 -1
- package/dist/adapters/image/bytes.js +2 -1
- package/dist/adapters/image/codex.js +6 -5
- package/dist/adapters/image/fal.js +4 -3
- package/dist/adapters/image/google.js +3 -2
- package/dist/adapters/image/models.js +2 -2
- package/dist/adapters/image/openai.js +2 -1
- package/dist/adapters/image/replicate.js +3 -2
- package/dist/adapters/image/video.js +2 -1
- package/dist/adapters/key-probes.js +1 -1
- package/dist/adapters/llm/antigravity-models.js +1 -1
- package/dist/adapters/llm/antigravity.js +7 -6
- package/dist/adapters/llm/assistant-cli.js +1 -1
- package/dist/adapters/llm/claude-code-models.js +1 -1
- package/dist/adapters/llm/claude-code.js +3 -2
- package/dist/adapters/llm/codex-models.js +1 -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 +2 -1
- package/dist/adapters/llm/run-cli.js +3 -2
- package/dist/adapters/tts/gemini.js +2 -1
- package/dist/adapters/tts/inworld-async.js +2 -1
- package/dist/adapters/tts/inworld.js +3 -2
- package/dist/adapters/tts/system.js +2 -1
- package/dist/catalog/registry.js +20 -13
- package/dist/catalog/schema.js +2 -1
- package/dist/catalog/validate.js +5 -2
- package/dist/edge/http/actions.js +7 -7
- package/dist/edge/http/app.js +3 -3
- package/dist/edge/http/assistant.js +3 -1
- package/dist/edge/http/backups.js +1 -1
- package/dist/edge/http/channel-memory.js +2 -2
- package/dist/edge/http/channels.js +1 -1
- package/dist/edge/http/checkpoints.js +7 -5
- package/dist/edge/http/design-templates.js +3 -3
- package/dist/edge/http/designs.js +1 -1
- package/dist/edge/http/document-themes.js +3 -3
- package/dist/edge/http/draft-problem.js +1 -1
- package/dist/edge/http/extension-auth.js +1 -1
- package/dist/edge/http/home.js +9 -1
- package/dist/edge/http/model-checks.js +4 -4
- package/dist/edge/http/onboarding.js +29 -12
- package/dist/edge/http/outputs.js +3 -2
- package/dist/edge/http/patch-notes.js +2 -2
- package/dist/edge/http/planning.js +1 -1
- package/dist/edge/http/project-create.js +1 -1
- package/dist/edge/http/project-templates.js +2 -2
- package/dist/edge/http/projects.js +22 -4
- package/dist/edge/http/prompts.js +2 -2
- package/dist/edge/http/providers.js +9 -10
- package/dist/edge/http/refusal.js +1 -1
- package/dist/edge/http/remote-access.js +4 -4
- package/dist/edge/http/remote-guard.js +2 -2
- package/dist/edge/http/reviews.js +1 -1
- package/dist/edge/http/revision-files.js +1 -1
- package/dist/edge/http/revisions.js +4 -4
- package/dist/edge/http/schedules.js +13 -11
- package/dist/edge/http/settings.js +6 -2
- package/dist/edge/http/social.js +5 -4
- package/dist/edge/http/staging.js +1 -1
- package/dist/edge/http/storage.js +12 -4
- package/dist/edge/http/studio.js +71 -19
- package/dist/edge/http/style-preview.js +2 -2
- package/dist/edge/http/template-studio.js +12 -9
- package/dist/edge/http/trash.js +1 -1
- package/dist/edge/http/youtube-edits.js +1 -1
- package/dist/edge/mcp/excluded-routes.js +4 -3
- package/dist/edge/mcp/instructions.js +3 -3
- package/dist/edge/mcp/library-tools.js +8 -5
- package/dist/edge/mcp/remake-tools.js +7 -4
- package/dist/edge/mcp/server.js +1 -1
- package/dist/edge/mcp/tools-channels.js +9 -9
- package/dist/edge/mcp/tools-designs.js +9 -9
- package/dist/edge/mcp/tools-library.js +7 -7
- package/dist/edge/mcp/tools-planning.js +18 -18
- package/dist/edge/mcp/tools-projects.js +10 -10
- package/dist/edge/mcp/tools-publishing.js +9 -9
- package/dist/edge/mcp/tools-runs.js +9 -9
- package/dist/edge/mcp/tools-schedules.js +6 -6
- package/dist/edge/mcp/tools-setup.js +20 -14
- package/dist/edge/mcp/tools-social.js +5 -4
- package/dist/edge/mcp/tools-storage.js +3 -3
- package/dist/edge/mcp/tools-template-studio.js +18 -18
- package/dist/edge/remote-access/model.js +1 -1
- package/dist/extension/slopify-studio-chrome.zip +0 -0
- package/dist/extension/slopify-studio-firefox.zip +0 -0
- package/dist/kernel/db/migrations/0078-uploaded-from-links.sql +7 -0
- package/dist/kernel/pipeline.js +12 -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 +11 -3
- package/dist/kernel/runner/providers.js +3 -2
- package/dist/kernel/runner/standalone.js +2 -2
- package/dist/main.js +5 -3
- package/dist/model-catalog.js +20 -0
- package/dist/patch-notes/4.0.0.md +13 -13
- package/dist/patch-notes/4.1.0.md +42 -0
- package/dist/patch-notes/index.json +6 -0
- package/dist/slices/admission/listing-facts.js +95 -0
- package/dist/slices/admission/repo.js +9 -6
- package/dist/slices/admission/rules.js +7 -7
- package/dist/slices/admission/state-words.js +34 -5
- package/dist/slices/assistant/cost.js +1 -1
- package/dist/slices/assistant/model.js +10 -3
- package/dist/slices/assistant/turn.js +5 -3
- package/dist/slices/autopilot/warnings.js +1 -1
- package/dist/slices/backups/service.js +5 -5
- package/dist/slices/channels/cast-images.js +1 -1
- package/dist/slices/channels/schema.js +1 -1
- package/dist/slices/channels/videos.js +1 -1
- package/dist/slices/control/providers.js +2 -2
- package/dist/slices/designs/budget.js +1 -1
- package/dist/slices/designs/calls.js +2 -2
- package/dist/slices/designs/check-context.js +4 -4
- package/dist/slices/designs/fields.js +4 -4
- package/dist/slices/designs/gate.js +7 -5
- package/dist/slices/designs/render-input.js +1 -1
- package/dist/slices/designs/requests.js +1 -1
- package/dist/slices/designs/runner.js +1 -1
- package/dist/slices/designs/sample.js +2 -1
- package/dist/slices/designs/service.js +1 -1
- package/dist/slices/designs/template-checks.js +2 -2
- package/dist/slices/designs/template-make.js +3 -3
- package/dist/slices/designs/templates.js +3 -3
- package/dist/slices/document/fonts.js +1 -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 +2 -2
- package/dist/slices/estimate/index.js +28 -22
- package/dist/slices/estimate/requests.js +4 -4
- package/dist/slices/fixes/rules.js +3 -1
- package/dist/slices/fonts/catalog.js +2 -1
- package/dist/slices/fonts/coverage.js +2 -1
- package/dist/slices/images/appearance.js +2 -1
- package/dist/slices/images/scenes.js +2 -1
- package/dist/slices/keywords/digest.js +2 -1
- package/dist/slices/keywords/rules.js +2 -2
- package/dist/slices/keywords/specs.js +5 -5
- package/dist/slices/keywords/values.js +1 -1
- package/dist/slices/library/transfer.js +3 -3
- package/dist/slices/loudness/loudnorm.js +2 -1
- package/dist/slices/loudness/model.js +3 -2
- package/dist/slices/loudness/sentence-level.js +2 -1
- package/dist/slices/model-checks/rules.js +13 -0
- package/dist/slices/model-upkeep/model.js +1 -1
- package/dist/slices/model-upkeep/switch.js +3 -3
- package/dist/slices/model-upkeep/usage.js +13 -2
- package/dist/slices/narration/breaths.js +2 -1
- package/dist/slices/narration/clean-pieces.js +2 -1
- package/dist/slices/narration/pauses-model.js +3 -2
- package/dist/slices/narration/pronunciation.js +3 -2
- package/dist/slices/notifications/subject.js +2 -2
- package/dist/slices/onboarding/copy.js +19 -2
- package/dist/slices/onboarding/first-run.js +13 -38
- package/dist/slices/onboarding/install.js +2 -1
- package/dist/slices/onboarding/model.js +26 -21
- package/dist/slices/onboarding/preferred-model.js +14 -0
- package/dist/slices/onboarding/quick-short.js +103 -64
- package/dist/slices/onboarding/sample.js +4 -1
- package/dist/slices/onboarding/state.js +7 -0
- package/dist/slices/onboarding/template.js +6 -5
- package/dist/slices/outputs/add.js +3 -2
- package/dist/slices/outputs/service.js +2 -2
- package/dist/slices/patch-notes/library.js +1 -1
- package/dist/slices/play-drafts/readiness.js +3 -3
- package/dist/slices/play-drafts/review-inputs.js +1 -1
- package/dist/slices/play-drafts/service.js +17 -7
- 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/setup-sections.js +26 -0
- package/dist/slices/project-templates/setup.js +6 -1
- package/dist/slices/rebuild/preview-details.js +5 -5
- package/dist/slices/rebuild/recipe-preparation.js +1 -1
- package/dist/slices/rebuild/recipe-save.js +2 -2
- package/dist/slices/rebuild/recipe-validation.js +5 -4
- package/dist/slices/rebuild/recipe-voices.js +3 -2
- package/dist/slices/rebuild/recipe-work.js +4 -4
- package/dist/slices/rebuild/recovery.js +6 -6
- package/dist/slices/rebuild/remake-outdated.js +5 -5
- package/dist/slices/rebuild/review-redo.js +1 -1
- package/dist/slices/rebuild/runtime-animate.js +2 -2
- package/dist/slices/rebuild/runtime-article.js +4 -3
- package/dist/slices/rebuild/runtime-document.js +5 -4
- package/dist/slices/rebuild/runtime-export-bed.js +2 -1
- package/dist/slices/rebuild/runtime-export-edit.js +2 -1
- package/dist/slices/rebuild/runtime-export-inputs.js +5 -4
- package/dist/slices/rebuild/runtime-export-short.js +1 -1
- package/dist/slices/rebuild/runtime-export.js +4 -3
- package/dist/slices/rebuild/runtime-image.js +4 -3
- package/dist/slices/rebuild/runtime-local.js +3 -2
- package/dist/slices/rebuild/runtime-narration-text.js +3 -2
- package/dist/slices/rebuild/runtime-provider.js +7 -6
- package/dist/slices/rebuild/runtime-review.js +6 -5
- package/dist/slices/rebuild/runtime-shorts.js +6 -5
- package/dist/slices/rebuild/runtime-store.js +17 -2
- package/dist/slices/rebuild/runtime-subtitles.js +13 -12
- package/dist/slices/rebuild/runtime-voices.js +2 -1
- package/dist/slices/rebuild/runtime-youtube.js +3 -2
- package/dist/slices/rebuild/service-readiness.js +11 -3
- package/dist/slices/research/synthesis.js +3 -2
- package/dist/slices/reviews/external-model.js +1 -1
- package/dist/slices/reviews/holds.js +5 -4
- package/dist/slices/reviews/model.js +8 -5
- package/dist/slices/reviews/rules.js +3 -3
- package/dist/slices/reviews/verdict.js +2 -1
- package/dist/slices/revisions/image-plan.js +1 -1
- package/dist/slices/revisions/mutation-assets.js +2 -1
- package/dist/slices/revisions/mutations.js +3 -2
- package/dist/slices/schedules/agenda.js +7 -5
- package/dist/slices/schedules/design-check.js +4 -4
- package/dist/slices/schedules/design-run.js +3 -3
- package/dist/slices/schedules/repo.js +6 -5
- package/dist/slices/schedules/schema.js +3 -0
- package/dist/slices/schedules/topics.js +5 -5
- package/dist/slices/settings/first-run.js +6 -32
- package/dist/slices/settings/health.js +30 -15
- package/dist/slices/settings/key-test.js +1 -1
- package/dist/slices/settings/model.js +4 -2
- package/dist/slices/settings/playback.js +2 -2
- package/dist/slices/shorts/keep.js +2 -1
- package/dist/slices/shorts/pick.js +4 -3
- package/dist/slices/shorts/prompts.js +2 -1
- package/dist/slices/shorts/render.js +3 -2
- package/dist/slices/social/media.js +5 -4
- package/dist/slices/social/pack.js +1 -1
- package/dist/slices/social/post-prompt.js +2 -1
- package/dist/slices/social/reshape.js +2 -2
- package/dist/slices/social/serve.js +1 -1
- package/dist/slices/social/service.js +3 -2
- package/dist/slices/social/state.js +1 -1
- package/dist/slices/storage/backup-import.js +2 -2
- package/dist/slices/storage/portable.js +1 -1
- package/dist/slices/storage/trim.js +23 -13
- package/dist/slices/studio/calendar.js +3 -1
- 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/plan.js +1 -1
- package/dist/slices/studio/settings.js +6 -6
- package/dist/slices/studio/videos.js +23 -4
- package/dist/slices/style-preview/render.js +3 -3
- package/dist/slices/style-preview/schema.js +1 -1
- package/dist/slices/subtitles/captions.js +1 -1
- package/dist/slices/template-studio/anatomy-view.js +46 -3
- package/dist/slices/template-studio/bakeoff.js +3 -3
- package/dist/slices/template-studio/budget.js +6 -3
- package/dist/slices/template-studio/cards.js +78 -0
- package/dist/slices/template-studio/checks.js +99 -50
- package/dist/slices/template-studio/for-all.js +5 -5
- package/dist/slices/template-studio/free-video.js +1 -1
- package/dist/slices/template-studio/free.js +5 -5
- package/dist/slices/template-studio/model.js +19 -15
- package/dist/slices/template-studio/pack-import.js +14 -14
- package/dist/slices/template-studio/pack.js +9 -7
- package/dist/slices/template-studio/paid.js +12 -5
- package/dist/slices/template-studio/quote.js +18 -11
- package/dist/slices/template-studio/ready.js +7 -7
- package/dist/slices/template-studio/runner.js +1 -1
- package/dist/slices/template-studio/save.js +12 -12
- package/dist/slices/template-studio/say-it-as.js +3 -3
- package/dist/slices/template-studio/schedule-gate.js +1 -1
- package/dist/slices/template-studio/schedule-price.js +3 -1
- package/dist/slices/template-studio/schedule-sample.js +5 -1
- package/dist/slices/template-studio/schema.js +25 -0
- package/dist/slices/template-studio/service.js +3 -1
- package/dist/slices/template-studio/status.js +26 -9
- package/dist/slices/template-studio/topic.js +3 -3
- package/dist/slices/thumbnail/by-llm.js +1 -1
- package/dist/slices/uploads/repo.js +37 -1
- package/dist/slices/uploads/rules.js +3 -2
- package/dist/slices/video/edit-list.js +2 -2
- package/dist/slices/video/edit-settings.js +1 -1
- package/dist/slices/video/encoding.js +14 -5
- package/dist/slices/video/ffmpeg.js +2 -2
- package/dist/slices/video/plan.js +2 -1
- package/dist/slices/video/slideshow.js +1 -1
- package/dist/slices/voices/attribution.js +3 -2
- package/dist/slices/voices/model.js +9 -8
- package/dist/slices/voices/script.js +2 -1
- package/dist/slices/youtube/answer.js +2 -1
- package/dist/slices/youtube/edits-repo.js +1 -1
- package/dist/tutorials/AI-CLIs.md +25 -25
- package/dist/tutorials/Agents-MCP.md +32 -32
- package/dist/tutorials/Assistant.md +5 -5
- 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 +40 -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 +101 -76
- package/dist/tutorials/Home.md +33 -33
- package/dist/tutorials/Install.md +13 -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 +21 -21
- package/dist/tutorials/Models.md +27 -27
- package/dist/tutorials/Multiple-Voices.md +41 -40
- package/dist/tutorials/Narration-Aliases-and-Glossary.md +14 -14
- package/dist/tutorials/Notifications.md +21 -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 +12 -12
- package/dist/tutorials/Project-Page.md +118 -120
- package/dist/tutorials/Prompts-and-Templates.md +84 -0
- package/dist/tutorials/Prompts.md +45 -45
- 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 +2 -2
- package/dist/tutorials/Reviews-and-Checkpoints.md +90 -93
- package/dist/tutorials/Schedules.md +27 -28
- package/dist/tutorials/Settings-Reference.md +182 -204
- 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 +45 -42
- package/dist/tutorials/Templates.md +50 -79
- 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 +15 -15
- 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 +2 -2
- package/dist/tutorials/Library-Overview.md +0 -76
- package/dist/tutorials/Play-Images.md +0 -165
- 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-CkAI_2E7.css +0 -1
- package/dist/web/assets/index-DcD0cdfo.js +0 -334
- package/dist/web/assets/pdf-TODRwF31.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
|
@@ -75,7 +75,7 @@ export const channelTools = [
|
|
|
75
75
|
route: "POST /api/channels/cast/:memberId/generate",
|
|
76
76
|
body: castGenerateSchema,
|
|
77
77
|
title: "Generate a cast picture",
|
|
78
|
-
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.",
|
|
79
79
|
},
|
|
80
80
|
{
|
|
81
81
|
name: "delete_cast_picture",
|
|
@@ -123,33 +123,33 @@ export const channelTools = [
|
|
|
123
123
|
{
|
|
124
124
|
name: "list_channel_videos",
|
|
125
125
|
route: "GET /api/channels/:id/videos",
|
|
126
|
-
title: "Read
|
|
127
|
-
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.",
|
|
128
128
|
},
|
|
129
129
|
{
|
|
130
130
|
name: "preview_channel_videos",
|
|
131
131
|
route: "POST /api/channels/:id/videos/preview",
|
|
132
|
-
title: "Preview
|
|
133
|
-
description: formBody("the
|
|
132
|
+
title: "Preview a titles-to-avoid import",
|
|
133
|
+
description: formBody("the Titles to avoid tab's import"),
|
|
134
134
|
unrecorded: true,
|
|
135
135
|
},
|
|
136
136
|
{
|
|
137
137
|
name: "import_channel_videos",
|
|
138
138
|
route: "POST /api/channels/:id/videos",
|
|
139
|
-
title: "Import
|
|
140
|
-
description: formBody("the
|
|
139
|
+
title: "Import titles to avoid",
|
|
140
|
+
description: formBody("the Titles to avoid tab's import"),
|
|
141
141
|
},
|
|
142
142
|
{
|
|
143
143
|
name: "remove_channel_videos",
|
|
144
144
|
route: "DELETE /api/channels/:id/videos",
|
|
145
|
-
title: "Remove every
|
|
145
|
+
title: "Remove every title to avoid",
|
|
146
146
|
description: "Removes every imported title.",
|
|
147
147
|
confirm: "This removes every imported video title of the channel.",
|
|
148
148
|
},
|
|
149
149
|
{
|
|
150
150
|
name: "remove_channel_video",
|
|
151
151
|
route: "DELETE /api/channels/:id/videos/:videoId",
|
|
152
|
-
title: "Remove
|
|
152
|
+
title: "Remove a title to avoid",
|
|
153
153
|
description: "Removes one imported title.",
|
|
154
154
|
},
|
|
155
155
|
];
|
|
@@ -104,7 +104,7 @@ export const designTools = [
|
|
|
104
104
|
name: "list_design_templates",
|
|
105
105
|
route: "GET /api/design-templates",
|
|
106
106
|
title: "List design templates",
|
|
107
|
-
description: "Every design template with its versions and the version
|
|
107
|
+
description: "Every design template with its versions and the version approved for schedules.",
|
|
108
108
|
},
|
|
109
109
|
{
|
|
110
110
|
name: "create_design_template",
|
|
@@ -131,13 +131,13 @@ export const designTools = [
|
|
|
131
131
|
route: "DELETE /api/design-templates/:id",
|
|
132
132
|
title: "Delete a design template",
|
|
133
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
|
|
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
135
|
},
|
|
136
136
|
{
|
|
137
137
|
name: "quote_design_template",
|
|
138
138
|
route: "POST /api/design-templates/:id/quote",
|
|
139
|
-
title: "Price a
|
|
140
|
-
description: "What one
|
|
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
141
|
unrecorded: true,
|
|
142
142
|
},
|
|
143
143
|
{
|
|
@@ -151,15 +151,15 @@ export const designTools = [
|
|
|
151
151
|
name: "mark_design_template_ready",
|
|
152
152
|
route: "POST /api/design-templates/:id/ready",
|
|
153
153
|
body: markDesignReadySchema,
|
|
154
|
-
title: "
|
|
155
|
-
description: "Runs the version's checks and
|
|
156
|
-
confirm: "Schedules start making
|
|
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
157
|
},
|
|
158
158
|
{
|
|
159
159
|
name: "make_design_from_template",
|
|
160
160
|
route: "POST /api/design-templates/:id/make",
|
|
161
161
|
body: makeFromTemplateSchema,
|
|
162
|
-
title: "Make a
|
|
163
|
-
description: `Makes one
|
|
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
164
|
},
|
|
165
165
|
];
|
|
@@ -4,7 +4,7 @@ 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",
|
|
@@ -16,7 +16,7 @@ export const libraryTools = [
|
|
|
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
20
|
},
|
|
21
21
|
{
|
|
22
22
|
name: "list_keywords",
|
|
@@ -28,7 +28,7 @@ export const libraryTools = [
|
|
|
28
28
|
name: "get_keyword_facts",
|
|
29
29
|
route: "GET /api/keywords/facts/:projectId",
|
|
30
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
|
|
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.",
|
|
32
32
|
},
|
|
33
33
|
{
|
|
34
34
|
name: "set_prompt_photorealistic",
|
|
@@ -65,7 +65,7 @@ export const libraryTools = [
|
|
|
65
65
|
name: "list_entries",
|
|
66
66
|
route: "GET /api/entries",
|
|
67
67
|
title: "List intros and outros",
|
|
68
|
-
description: "
|
|
68
|
+
description: "Your intros and outros (Prompts → Intros and outros).",
|
|
69
69
|
},
|
|
70
70
|
{
|
|
71
71
|
name: "create_entry",
|
|
@@ -107,8 +107,8 @@ export const libraryTools = [
|
|
|
107
107
|
{
|
|
108
108
|
name: "list_document_themes",
|
|
109
109
|
route: "GET /api/document-themes",
|
|
110
|
-
title: "List PDF
|
|
111
|
-
description: "The built-in PDF
|
|
110
|
+
title: "List PDF looks",
|
|
111
|
+
description: "The built-in PDF looks and the ones you saved.",
|
|
112
112
|
},
|
|
113
113
|
{
|
|
114
114
|
name: "create_document_theme",
|
|
@@ -152,7 +152,7 @@ export const libraryTools = [
|
|
|
152
152
|
name: "get_narration_aliases",
|
|
153
153
|
route: "GET /api/pronunciations/aliases",
|
|
154
154
|
title: "Read narration aliases",
|
|
155
|
-
description: "
|
|
155
|
+
description: "Settings → Voices → Pronunciation: words the narration says differently from how they are written.",
|
|
156
156
|
},
|
|
157
157
|
{
|
|
158
158
|
name: "set_narration_aliases",
|
|
@@ -8,41 +8,41 @@ const drafts = [
|
|
|
8
8
|
{
|
|
9
9
|
name: "list_drafts",
|
|
10
10
|
route: "GET /api/drafts",
|
|
11
|
-
title: "List
|
|
12
|
-
description: "
|
|
11
|
+
title: "List the drafts on Create",
|
|
12
|
+
description: "Drafts on Create: videos set up there and not started yet.",
|
|
13
13
|
},
|
|
14
14
|
{
|
|
15
15
|
name: "create_draft",
|
|
16
16
|
route: "POST /api/drafts",
|
|
17
17
|
body: createDraftInputSchema,
|
|
18
|
-
title: "
|
|
19
|
-
description: "
|
|
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.",
|
|
20
20
|
},
|
|
21
21
|
{
|
|
22
22
|
name: "get_draft",
|
|
23
23
|
route: "GET /api/drafts/:id",
|
|
24
|
-
title: "Read a
|
|
25
|
-
description: "A
|
|
24
|
+
title: "Read a draft",
|
|
25
|
+
description: "A draft on Create: its document, version, attachments, latest review and start.",
|
|
26
26
|
},
|
|
27
27
|
{
|
|
28
28
|
name: "save_draft",
|
|
29
29
|
route: "PUT /api/drafts/:id",
|
|
30
30
|
body: saveBody,
|
|
31
|
-
title: "Save a
|
|
32
|
-
description: "Saves the draft's document; queue: true is
|
|
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}.",
|
|
33
33
|
},
|
|
34
34
|
{
|
|
35
35
|
name: "fork_draft",
|
|
36
36
|
route: "POST /api/drafts/:id/fork",
|
|
37
37
|
body: createDraftInputSchema,
|
|
38
|
-
title: "Copy a
|
|
38
|
+
title: "Copy a draft",
|
|
39
39
|
description: "Body: {id: a new UUID for the copy, sourceId: this draft's id, document}.",
|
|
40
40
|
},
|
|
41
41
|
{
|
|
42
42
|
name: "discard_draft",
|
|
43
43
|
route: "DELETE /api/drafts/:id",
|
|
44
44
|
body: versionBody,
|
|
45
|
-
title: "Discard a
|
|
45
|
+
title: "Discard a draft",
|
|
46
46
|
description: "Body: {baseVersion}.",
|
|
47
47
|
confirm: "This discards the draft and its uploaded files for good.",
|
|
48
48
|
},
|
|
@@ -50,16 +50,16 @@ const drafts = [
|
|
|
50
50
|
name: "review_draft",
|
|
51
51
|
route: "POST /api/drafts/:id/review",
|
|
52
52
|
body: versionBody,
|
|
53
|
-
title: "Review a
|
|
54
|
-
description: "
|
|
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.",
|
|
55
55
|
unrecorded: true,
|
|
56
56
|
},
|
|
57
57
|
{
|
|
58
58
|
name: "start_draft",
|
|
59
59
|
route: "POST /api/drafts/:id/start",
|
|
60
60
|
body: startBody,
|
|
61
|
-
title: "Start a
|
|
62
|
-
description: "
|
|
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}.",
|
|
63
63
|
},
|
|
64
64
|
{
|
|
65
65
|
name: "upload_draft_attachment",
|
|
@@ -95,7 +95,7 @@ const drafts = [
|
|
|
95
95
|
},
|
|
96
96
|
];
|
|
97
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
|
|
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.";
|
|
99
99
|
const templates = [
|
|
100
100
|
{
|
|
101
101
|
name: "list_templates",
|
|
@@ -142,15 +142,15 @@ const templates = [
|
|
|
142
142
|
route: "DELETE /api/project-templates/:id",
|
|
143
143
|
body: templateDeleteBody,
|
|
144
144
|
title: "Delete a template",
|
|
145
|
-
description: formBody("Delete
|
|
145
|
+
description: formBody("Delete on Templates"),
|
|
146
146
|
confirm: "Moves it to the trash for 30 days (Settings → Trash). Existing projects and drafts keep their setup.",
|
|
147
147
|
},
|
|
148
148
|
{
|
|
149
149
|
name: "instantiate_template",
|
|
150
150
|
route: "POST /api/project-templates/:id/instantiate",
|
|
151
151
|
body: templateInstantiateBody,
|
|
152
|
-
title: "
|
|
153
|
-
description: "Opens a new
|
|
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.",
|
|
154
154
|
},
|
|
155
155
|
];
|
|
156
156
|
export const planningTools = [...drafts, ...templates];
|
|
@@ -13,7 +13,7 @@ const projects = [
|
|
|
13
13
|
name: "list_projects",
|
|
14
14
|
route: "GET /api/projects",
|
|
15
15
|
title: "List projects",
|
|
16
|
-
description: "Every project as the Projects list shows it: id, title, status, stateWord (how Slopify's pages say it: Queued, Running, Paused, Waiting for your review, Waiting for the agent, Stopped (only Continue the run, resume_project, goes on),
|
|
16
|
+
description: "Every project as the Projects list shows it: id, title, status, stateWord (how Slopify's pages say it: Queued, Running, Paused, Waiting for your review, Waiting for the agent, Stopped (only Continue the run, resume_project, goes on), Waiting for its day (made ahead by its schedule), Kept as is, Failed, Done with problems, Done, Canceled; an uploaded project reads Done once nothing it admitted is left to run; a run whose step failed while another step waits for the agent or the person reads by that wait, with stepFailed: true, and Failed once nothing else can go on), stepFailures (each step that failed while another step waits for the agent, the person or its day, even while a third still runs, as kind@finishedAt; absent otherwise), progress from 0 to 1, channelId and uploadedAt.",
|
|
17
17
|
shape: listWithStateWords,
|
|
18
18
|
},
|
|
19
19
|
{
|
|
@@ -28,7 +28,7 @@ const projects = [
|
|
|
28
28
|
route: "DELETE /api/projects/:id",
|
|
29
29
|
title: "Delete a project",
|
|
30
30
|
description: "Delete on the Projects list: moves the project to the trash. A running project is refused: cancel it first.",
|
|
31
|
-
confirm: "This moves the project to Settings →
|
|
31
|
+
confirm: "This moves the project to Settings → Trash, where it is kept 30 days before it is deleted for good.",
|
|
32
32
|
},
|
|
33
33
|
{
|
|
34
34
|
name: "move_projects_to_channel",
|
|
@@ -40,7 +40,7 @@ const projects = [
|
|
|
40
40
|
name: "get_run_queue",
|
|
41
41
|
route: "GET /api/projects/queue",
|
|
42
42
|
title: "Read the run queue",
|
|
43
|
-
description: "The batch queue: projects waiting their turn, in order.
|
|
43
|
+
description: "The batch queue: projects waiting their turn, in order. Create's One after another switch (the draft's queue field) puts a run's videos here.",
|
|
44
44
|
},
|
|
45
45
|
{
|
|
46
46
|
name: "move_in_run_queue",
|
|
@@ -52,7 +52,7 @@ const projects = [
|
|
|
52
52
|
name: "estimate_run",
|
|
53
53
|
route: "POST /api/projects/estimate",
|
|
54
54
|
title: "Estimate a run",
|
|
55
|
-
description: "The cost estimate
|
|
55
|
+
description: "The cost estimate Create shows before Make the video. Body: {draft: a run draft, expectedWords?: 1-100000, items?}. For a draft on Create, review_draft returns the same estimate.",
|
|
56
56
|
unrecorded: true,
|
|
57
57
|
},
|
|
58
58
|
{
|
|
@@ -148,22 +148,22 @@ const decisions = [
|
|
|
148
148
|
{
|
|
149
149
|
name: "get_checkpoints",
|
|
150
150
|
route: "GET /api/projects/:id/checkpoints",
|
|
151
|
-
title: "Read review
|
|
152
|
-
description: "The project's review
|
|
151
|
+
title: "Read the pauses for your review",
|
|
152
|
+
description: "The project's pauses for your review (Pauses and checks): each gate's stage, state, fingerprint and currentFingerprint. A gate is Waiting for your review while held.",
|
|
153
153
|
},
|
|
154
154
|
{
|
|
155
155
|
name: "approve_checkpoint",
|
|
156
156
|
route: "POST /api/projects/:id/checkpoints/:checkpointId/approve",
|
|
157
157
|
body: approvalBody,
|
|
158
|
-
title: "Approve a
|
|
159
|
-
description: "Approves a held
|
|
158
|
+
title: "Approve a pause",
|
|
159
|
+
description: "Approves a held pause so the stages after it run, like Approve and make the … on the project page. Body: {revisionId, fingerprint: the gate's currentFingerprint, idempotencyKey: a new UUID}.",
|
|
160
160
|
},
|
|
161
161
|
{
|
|
162
162
|
name: "change_checkpoints",
|
|
163
163
|
route: "PATCH /api/projects/:id/checkpoints",
|
|
164
164
|
body: checkpointChangeSchema,
|
|
165
|
-
title: "Change
|
|
166
|
-
description: 'Sets the stages that stop for approval, like
|
|
165
|
+
title: "Change the pauses",
|
|
166
|
+
description: 'Sets the stages that stop for approval, like Pause after … in Edit settings → Pauses and checks. Body: {revisionId, stages: ["audio" | "images" | "video"]}.',
|
|
167
167
|
},
|
|
168
168
|
{
|
|
169
169
|
name: "list_reviews",
|
|
@@ -36,32 +36,32 @@ const uploadPrep = [
|
|
|
36
36
|
{
|
|
37
37
|
name: "get_upload_pack",
|
|
38
38
|
route: "GET /api/studio/packs/:projectId",
|
|
39
|
-
title: "Read
|
|
40
|
-
description: "
|
|
39
|
+
title: "Read Copy for YouTube Studio",
|
|
40
|
+
description: "Copy for YouTube Studio: the title, description, tags, thumbnails, playlists and release time of each upload (the video and each short), and the plan's free release times (slots). The agent's work ends here, at Ready to upload: uploading is the person's.",
|
|
41
41
|
},
|
|
42
42
|
{
|
|
43
43
|
name: "set_pack_slot",
|
|
44
44
|
route: "PUT /api/studio/packs/:projectId/slot",
|
|
45
|
-
title: "Choose the release
|
|
46
|
-
description: "
|
|
45
|
+
title: "Choose the release time",
|
|
46
|
+
description: "Copy for YouTube Studio's release picker: one of the free release times (slots) get_upload_pack lists, or none. Body: {slot: {row, longAt} | null}.",
|
|
47
47
|
},
|
|
48
48
|
{
|
|
49
49
|
name: "set_pack_real_footage",
|
|
50
50
|
route: "PUT /api/studio/packs/:projectId/real-footage",
|
|
51
51
|
title: "Set the altered-content answer",
|
|
52
|
-
description: "
|
|
52
|
+
description: "Copy for YouTube Studio's AI use tick: the project's uploaded clips are real footage. Body: {realFootage: true | false}.",
|
|
53
53
|
},
|
|
54
54
|
{
|
|
55
55
|
name: "set_pack_pick",
|
|
56
56
|
route: "PUT /api/studio/packs/:projectId/pick",
|
|
57
57
|
title: "Pick the title and thumbnail",
|
|
58
|
-
description: "
|
|
58
|
+
description: "Copy for YouTube Studio's pick: which title and thumbnail the upload carries (the A/B test tries the others once the video is public). Body: {title: 0-9, thumbnail: 0-9}.",
|
|
59
59
|
},
|
|
60
60
|
{
|
|
61
61
|
name: "set_pack_playlists",
|
|
62
62
|
route: "PUT /api/studio/packs/:projectId/playlists",
|
|
63
|
-
title: "Set the
|
|
64
|
-
description: "
|
|
63
|
+
title: "Set the upload's playlists",
|
|
64
|
+
description: "Copy for YouTube Studio's playlist ticks. Body: {playlists: [names] | null for the channel's defaults}.",
|
|
65
65
|
},
|
|
66
66
|
{
|
|
67
67
|
name: "get_fill_queue",
|
|
@@ -137,7 +137,7 @@ const youtube = [
|
|
|
137
137
|
name: "get_ab_results",
|
|
138
138
|
route: "GET /api/studio/ab-results",
|
|
139
139
|
title: "Read A/B results",
|
|
140
|
-
description: "
|
|
140
|
+
description: "What worked on YouTube (on a channel's page): every finished title and thumbnail test.",
|
|
141
141
|
},
|
|
142
142
|
];
|
|
143
143
|
export const publishingTools = [
|
|
@@ -44,9 +44,9 @@ const runs = [
|
|
|
44
44
|
name: "rerun_stage",
|
|
45
45
|
route: "POST /api/projects/:id/stages/:kind/rerun",
|
|
46
46
|
body: revisionControlSchema,
|
|
47
|
-
title: "
|
|
48
|
-
description: `
|
|
49
|
-
confirm: "
|
|
47
|
+
title: "Make a stage again",
|
|
48
|
+
description: `A section's Make … again button (Write the article again, Make all images again): makes a stage again and everything built on it. Making again what costs money is refused until it is reviewed: use preview_rebuild (Choose what to make again), then start_rebuild. ${control}`,
|
|
49
|
+
confirm: "Make this stage again? It makes the stage and what is built on it again, which costs what the stage cost the first time; the previous outputs stay under Versions.",
|
|
50
50
|
},
|
|
51
51
|
];
|
|
52
52
|
const revisions = [
|
|
@@ -79,29 +79,29 @@ const revisions = [
|
|
|
79
79
|
route: "POST /api/projects/:id/revisions",
|
|
80
80
|
body: saveBody,
|
|
81
81
|
title: "Save an edit",
|
|
82
|
-
description: "Saves an edit as a new version, like Save in Edit
|
|
82
|
+
description: "Saves an edit as a new version, like Save in Edit settings; it starts nothing. Body: {baseRevisionId, idempotencyKey: a new UUID, edit: {config, content, regenerate?: [work keys to make again, such as a narration chunk key], uploads?: [{stagedFileId, destination}]}}; send get_revision's revision.config and revision.content with your change. One chunk's wording or delivery note is content.narrationOverrides[chunk key] = {kind: \"text\", text, direction?}. Finished shorts kept through a new pick are content.shortsKeep: leave one out to pick a new moment for it, and lower config.shorts.count as well to drop it. Then preview_rebuild (Choose what to make again) says what it makes and costs, and start_rebuild starts it.",
|
|
83
83
|
},
|
|
84
84
|
{
|
|
85
85
|
name: "restore_revision",
|
|
86
86
|
route: "POST /api/projects/:id/revisions/restore",
|
|
87
87
|
body: restoreBody,
|
|
88
88
|
title: "Restore a version",
|
|
89
|
-
description: "Makes an earlier version current again, like Restore
|
|
89
|
+
description: "Makes an earlier version current again, like Restore on a row of Versions; it starts nothing. Body: {baseRevisionId, idempotencyKey: a new UUID, targetRevisionId}.",
|
|
90
90
|
},
|
|
91
91
|
{
|
|
92
92
|
name: "preview_rebuild",
|
|
93
93
|
route: "POST /api/projects/:id/rebuild/preview",
|
|
94
94
|
body: previewRebuildSchema,
|
|
95
|
-
title: "Choose what to
|
|
96
|
-
description: 'Choose what to
|
|
95
|
+
title: "Choose what to make again",
|
|
96
|
+
description: 'Choose what to make again: what making it again makes, reuses or leaves blocked, each output\'s estimate and the total, like the project\'s Choose what to make again. Body: {baseRevisionId, request: {kind: "allAffected"} | {kind: "selected", workKeys: [...]}}. Nothing starts; start_rebuild does, with this preview\'s id.',
|
|
97
97
|
unrecorded: true,
|
|
98
98
|
},
|
|
99
99
|
{
|
|
100
100
|
name: "start_rebuild",
|
|
101
101
|
route: "POST /api/projects/:id/rebuild",
|
|
102
102
|
body: startRebuildSchema,
|
|
103
|
-
title: "
|
|
104
|
-
description: "Starts
|
|
103
|
+
title: "Make the previewed parts again",
|
|
104
|
+
description: "Starts making again what you previewed: the acknowledgement Choose what to make again asks for. Body: {baseRevisionId, idempotencyKey: a new UUID, previewId: the preview's id, acknowledgeUnknownCosts: true only after reading the preview's unknown costs, confirmedProvidedWorkKeys: the preview's providedReuseRequired keys you accept replacing}.",
|
|
105
105
|
},
|
|
106
106
|
];
|
|
107
107
|
export const runTools = [...runs, ...revisions];
|
|
@@ -13,7 +13,7 @@ export const scheduleTools = [
|
|
|
13
13
|
route: "POST /api/schedules",
|
|
14
14
|
body: scheduleCreateSchema,
|
|
15
15
|
title: "Create a schedule",
|
|
16
|
-
description: `${formBody("the schedule editor")} Duplicate on a schedule is this with get_schedule's settings, a new id, a new name ending "(copy)" and items: [], then pause_schedule on the copy. A design schedule (one designed piece per row, made ahead of the row's date) is {templateKind: "design", templateId: the design template's id, templateVersion: its headVersion, cadence: {kind: "by-date", time: "HH:MM"}, items: [{title, values: {every field, the date field as YYYY-MM-DD}}]}; it has no topic generation or release days, and makes only from a version
|
|
16
|
+
description: `${formBody("the schedule editor")} Duplicate on a schedule is this with get_schedule's settings, a new id, a new name ending "(copy)" and items: [], then pause_schedule on the copy. A design schedule (one designed piece per row, made ahead of the row's date) is {templateKind: "design", templateId: the design template's id, templateVersion: its headVersion, cadence: {kind: "by-date", time: "HH:MM"}, items: [{title, values: {every field, the date field as YYYY-MM-DD}}]}; it has no topic generation or release days, and makes only from a version approved for schedules.`,
|
|
17
17
|
},
|
|
18
18
|
{
|
|
19
19
|
name: "get_schedule",
|
|
@@ -67,21 +67,21 @@ export const scheduleTools = [
|
|
|
67
67
|
{
|
|
68
68
|
name: "list_prepared_topics",
|
|
69
69
|
route: "GET /api/schedules/:id/prepared",
|
|
70
|
-
title: "Read
|
|
71
|
-
description: "Which queued topics are
|
|
70
|
+
title: "Read topics made ahead",
|
|
71
|
+
description: "Which queued topics are made ahead (Make ahead), and their projects.",
|
|
72
72
|
},
|
|
73
73
|
{
|
|
74
74
|
name: "prepare_topic",
|
|
75
75
|
route: "POST /api/schedules/:id/topics/prepare",
|
|
76
76
|
body: prepareTopicBody,
|
|
77
|
-
title: "
|
|
78
|
-
description: "
|
|
77
|
+
title: "Make a topic ahead",
|
|
78
|
+
description: "Make ahead, on a topic in the calendar: makes the topic's project now, exactly as the schedule would, and runs everything but the video, which its scheduled day puts together. It spends what Create's estimate says and is refused over the schedule's spend limit and while the schedule is paused. Body: {topic: the topic's title}.",
|
|
79
79
|
},
|
|
80
80
|
{
|
|
81
81
|
name: "generate_topics",
|
|
82
82
|
route: "POST /api/schedules/:id/topics/generate",
|
|
83
83
|
title: "Suggest topics",
|
|
84
|
-
description: "Asks the schedule's
|
|
84
|
+
description: "Asks the schedule's AI model for topics, a paid call, like Suggest topics.",
|
|
85
85
|
},
|
|
86
86
|
{
|
|
87
87
|
name: "score_topics",
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { readinessIsUsable } from "../../kernel/ports/model.js";
|
|
3
|
+
import { costPhrase } from "../../slices/model-checks/rules.js";
|
|
3
4
|
import { quoteBody } from "../http/auditions.js";
|
|
4
5
|
import { checkBody } from "../http/model-checks.js";
|
|
5
6
|
import { switchBody } from "../http/providers.js";
|
|
@@ -56,7 +57,7 @@ const settings = [
|
|
|
56
57
|
name: "get_remote_access",
|
|
57
58
|
route: "GET /api/settings/remote-access",
|
|
58
59
|
title: "Read remote access",
|
|
59
|
-
description: "Settings →
|
|
60
|
+
description: "Settings → Remote access: whether Slopify's page is open on the person's other devices through Tailscale serve (their tailnet only, never the public internet), its https address, and any problem with the exact fix. Turning it on or off is the person's; agents can't.",
|
|
60
61
|
},
|
|
61
62
|
{
|
|
62
63
|
name: "get_settings",
|
|
@@ -80,7 +81,7 @@ const settings = [
|
|
|
80
81
|
name: "get_default_channel_links",
|
|
81
82
|
route: "GET /api/settings/channel-links",
|
|
82
83
|
title: "Read the default channel links",
|
|
83
|
-
description: "Settings →
|
|
84
|
+
description: "Settings → YouTube Studio and posting: the links a description's {{Name}} placeholders fill from.",
|
|
84
85
|
},
|
|
85
86
|
{
|
|
86
87
|
name: "set_default_channel_links",
|
|
@@ -147,7 +148,7 @@ const settings = [
|
|
|
147
148
|
route: "POST /api/auditions/quote",
|
|
148
149
|
body: quoteBody,
|
|
149
150
|
title: "Price a voice sample",
|
|
150
|
-
description: "Try a sample's price, as
|
|
151
|
+
description: "Try a sample's price, as Create shows it before playing one. Body: {lines: [{speaker, provider, model, text}]}.",
|
|
151
152
|
unrecorded: true,
|
|
152
153
|
},
|
|
153
154
|
{
|
|
@@ -166,7 +167,7 @@ const settings = [
|
|
|
166
167
|
name: "get_studio_settings",
|
|
167
168
|
route: "GET /api/studio/settings",
|
|
168
169
|
title: "Read YouTube Studio settings",
|
|
169
|
-
description: "Settings → YouTube Studio: the playlists upload packs name, and whether the comment is posted.",
|
|
170
|
+
description: "Settings → YouTube Studio and posting: the playlists upload packs name, and whether the comment is posted.",
|
|
170
171
|
shape: withoutExtensionSecrets,
|
|
171
172
|
},
|
|
172
173
|
{
|
|
@@ -186,14 +187,14 @@ const providers = [
|
|
|
186
187
|
{
|
|
187
188
|
name: "list_providers",
|
|
188
189
|
route: "GET /api/providers",
|
|
189
|
-
title: "List
|
|
190
|
-
description: "Each
|
|
190
|
+
title: "List the services",
|
|
191
|
+
description: "Each service on Settings → Keys & services, as configured or missing.",
|
|
191
192
|
shape: configuredOrMissing,
|
|
192
193
|
},
|
|
193
194
|
{
|
|
194
195
|
name: "list_models",
|
|
195
196
|
route: "GET /api/providers/:id/models",
|
|
196
|
-
title: "List a
|
|
197
|
+
title: "List a service's models",
|
|
197
198
|
description: "The models Slopify offers for the provider, with prices where known, and each model's standing for the saved key or CLI under standings: works (a check or a run succeeded), listed (the key's own model list names it), known (only Slopify's model list does), no-access (the provider said it is not on the plan, with its sentence), and retiring with its replacement when one is due. Standings never stop a run: a model chosen anywhere keeps working as before.",
|
|
198
199
|
},
|
|
199
200
|
{
|
|
@@ -205,26 +206,31 @@ const providers = [
|
|
|
205
206
|
{
|
|
206
207
|
name: "estimate_model_checks",
|
|
207
208
|
route: "GET /api/providers/:id/models/check/estimate",
|
|
208
|
-
title: "Estimate checking a
|
|
209
|
+
title: "Estimate checking a service's models",
|
|
209
210
|
description: "What Check models in Settings → Models would check for this provider and what it costs at list price, before anything is sent. Query: models (optional, comma-separated ids).",
|
|
210
211
|
},
|
|
211
212
|
{
|
|
212
213
|
name: "check_models",
|
|
213
214
|
route: "POST /api/providers/:id/models/check",
|
|
214
215
|
body: checkBody,
|
|
215
|
-
title: "Check a
|
|
216
|
+
title: "Check a service's models",
|
|
216
217
|
description: "Settings → Models' Check models: sends each model the smallest request (one word, a spoken Hi, one small image) to learn whether it works for the saved key or CLI, in the background. A check that costs money is refused with its estimate until the body carries confirmedDollars of at least the estimate's totalDollars (read estimate_model_checks first). Body: {models?: [ids], confirmedDollars?: number}.",
|
|
217
218
|
confirm: "Each model checked is sent one small paid request at list price (a CLI's checks use its plan's allowance instead).",
|
|
218
219
|
confirmFrom: {
|
|
219
220
|
route: "/api/providers/:id/models/check/estimate",
|
|
220
221
|
text: (value) => {
|
|
221
222
|
const estimate = z
|
|
222
|
-
.object({
|
|
223
|
+
.object({
|
|
224
|
+
count: z.number(),
|
|
225
|
+
totalDollars: z.number(),
|
|
226
|
+
unpriced: z.number(),
|
|
227
|
+
planAccounts: z.array(z.string()),
|
|
228
|
+
})
|
|
223
229
|
.safeParse(value);
|
|
224
230
|
if (!estimate.success)
|
|
225
231
|
return undefined;
|
|
226
|
-
const { count,
|
|
227
|
-
return `Checks ${String(count)} model${count === 1 ? "" : "s"}, one small request each: ${
|
|
232
|
+
const { count, totalDollars, unpriced, planAccounts } = estimate.data;
|
|
233
|
+
return `Checks ${String(count)} model${count === 1 ? "" : "s"}, one small request each: ${costPhrase(totalDollars, unpriced)}${planAccounts.length > 0 ? ", using the CLI plan's allowance" : ""}.`;
|
|
228
234
|
},
|
|
229
235
|
},
|
|
230
236
|
reachesOut: "asks",
|
|
@@ -244,8 +250,8 @@ const providers = [
|
|
|
244
250
|
{
|
|
245
251
|
name: "check_providers",
|
|
246
252
|
route: "POST /api/providers/health",
|
|
247
|
-
title: "Check
|
|
248
|
-
description: "Settings →
|
|
253
|
+
title: "Check every service",
|
|
254
|
+
description: "Settings → Keys & services' Check every service: which services answer and which CLIs are signed in.",
|
|
249
255
|
unrecorded: true,
|
|
250
256
|
reachesOut: "asks",
|
|
251
257
|
},
|
|
@@ -1,18 +1,19 @@
|
|
|
1
|
+
import { setupSectionNames } from "../../slices/project-templates/setup-sections.js";
|
|
1
2
|
import { choiceBody, linkBody, redditBody, textBody } from "../../slices/social/schema.js";
|
|
2
|
-
// A project's posts to X, LinkedIn, Instagram, TikTok, Reddit and Bluesky, as
|
|
3
|
-
// shows them. Agents prepare them; Fill in <site> and posting are the person's.
|
|
3
|
+
// A project's posts to X, LinkedIn, Instagram, TikTok, Reddit and Bluesky, as Copy for YouTube
|
|
4
|
+
// Studio shows them. Agents prepare them; Fill in <site> and posting are the person's.
|
|
4
5
|
export const socialTools = [
|
|
5
6
|
{
|
|
6
7
|
name: "get_post_packs",
|
|
7
8
|
route: "GET /api/social/packs/:projectId",
|
|
8
9
|
title: "Read the posts for other sites",
|
|
9
|
-
description: "
|
|
10
|
+
description: "Copy for YouTube Studio's posts: for each site the project posts to, the text as it goes in (with its count and limit), hashtags, link, media, AI label, when it goes out, warnings and where the post stands. The agent's work ends here: filling a site's form and posting are the person's.",
|
|
10
11
|
},
|
|
11
12
|
{
|
|
12
13
|
name: "set_post_choice",
|
|
13
14
|
route: "PUT /api/social/packs/:projectId/:platform/choice",
|
|
14
15
|
title: "Change what a post carries",
|
|
15
|
-
description:
|
|
16
|
+
description: `The project's own settings for one site (platform: x, linkedin, instagram, tiktok, reddit or bluesky): its text source, media, hashtags and link; {off: true} to not post there; null to go back to the template's. A post prompt (text "prompt") is a paid step picked only in the template (Edit template → ${setupSectionNames.youtube}) or in Create, where Save shows its cost. Body: {choice}.`,
|
|
16
17
|
body: choiceBody,
|
|
17
18
|
},
|
|
18
19
|
{
|
|
@@ -63,13 +63,13 @@ const onboarding = [
|
|
|
63
63
|
name: "get_onboarding",
|
|
64
64
|
route: "GET /api/onboarding",
|
|
65
65
|
title: "Read the welcome state",
|
|
66
|
-
description: "Starter
|
|
66
|
+
description: "Starter templates and what the welcome offers.",
|
|
67
67
|
},
|
|
68
68
|
{
|
|
69
69
|
name: "install_starter_pack",
|
|
70
70
|
route: "POST /api/onboarding/packs/:id",
|
|
71
|
-
title: "Install a starter
|
|
72
|
-
description: "Adds a starter
|
|
71
|
+
title: "Install a starter template",
|
|
72
|
+
description: "Adds a starter template's prompts and templates.",
|
|
73
73
|
},
|
|
74
74
|
{
|
|
75
75
|
name: "make_quick_short",
|