@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
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
+
import { jsonBetween } from "../../kernel/json-answer.js";
|
|
3
|
+
import { editSettings } from "../../kernel/ports/settings-places.js";
|
|
2
4
|
import { alternativeTitles, descriptionMaxCharacters, hashtagsMax, minChapterSeconds, minChapters, pinnedCommentMaxCharacters, tagMaxCharacters, tagsMaxCharacters, titleMaxCharacters, } from "./model.js";
|
|
3
5
|
import { parseTimestamp, youtubeTimestamp } from "./timestamps.js";
|
|
4
6
|
import { keepsShape, titleShapeRule } from "./titles.js";
|
|
@@ -52,7 +54,7 @@ const answerSchema = z.object({
|
|
|
52
54
|
pinnedComment: z.string(),
|
|
53
55
|
titles: z.array(z.string()),
|
|
54
56
|
});
|
|
55
|
-
const fix =
|
|
57
|
+
const fix = `Try again, or choose another model in ${editSettings.writer}.`;
|
|
56
58
|
// Reads and checks the model's answer. The reason is the sentence the stage shows; the
|
|
57
59
|
// provider wrapper's `check` asks the model again while attempts remain.
|
|
58
60
|
export function checkDescriptionAnswer(text, durationSeconds,
|
|
@@ -60,7 +62,7 @@ export function checkDescriptionAnswer(text, durationSeconds,
|
|
|
60
62
|
title = "",
|
|
61
63
|
// Its pattern, whose fixed wording the other titles keep.
|
|
62
64
|
shape) {
|
|
63
|
-
const parsed = answerSchema.safeParse(
|
|
65
|
+
const parsed = answerSchema.safeParse(jsonBetween(text, "{", "}"));
|
|
64
66
|
if (!parsed.success)
|
|
65
67
|
return {
|
|
66
68
|
ok: false,
|
|
@@ -239,17 +241,3 @@ function checkTags(raw) {
|
|
|
239
241
|
return broke(`the tags come to ${String(length)} characters, over YouTube's ${String(tagsMaxCharacters)}`);
|
|
240
242
|
return { ok: true, value: tags };
|
|
241
243
|
}
|
|
242
|
-
// The object in the answer, wherever the model put it: bare, in a ```json fence, or after a
|
|
243
|
-
// sentence of its own.
|
|
244
|
-
function jsonOf(text) {
|
|
245
|
-
const start = text.indexOf("{");
|
|
246
|
-
const end = text.lastIndexOf("}");
|
|
247
|
-
if (start === -1 || end <= start)
|
|
248
|
-
return undefined;
|
|
249
|
-
try {
|
|
250
|
-
return JSON.parse(text.slice(start, end + 1));
|
|
251
|
-
}
|
|
252
|
-
catch {
|
|
253
|
-
return undefined;
|
|
254
|
-
}
|
|
255
|
-
}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
import { z } from "zod";
|
|
5
5
|
import { defaultChannelId } from "../channels/model.js";
|
|
6
6
|
import { channelById, projectChannelId } from "../channels/repo.js";
|
|
7
|
-
import {
|
|
7
|
+
import { readJsonSetting, writeSetting } from "../settings/repo.js";
|
|
8
8
|
import { chapterNotice, fitChapters } from "./chapters.js";
|
|
9
9
|
import { composeDescription, descriptionFields, resolveFields, shownFields, splitDescription, } from "./edits.js";
|
|
10
10
|
import { fillPlaceholders, mergeLinks } from "./placeholders.js";
|
|
@@ -36,18 +36,9 @@ export function writeDescriptionEdits(db, projectId, edits, updatedAt) {
|
|
|
36
36
|
ON CONFLICT(project_id) DO UPDATE SET fields_json=excluded.fields_json,links_json=excluded.links_json,updated_at=excluded.updated_at`).run(projectId, JSON.stringify(edits.fields), JSON.stringify(edits.links), updatedAt);
|
|
37
37
|
}
|
|
38
38
|
export function readChannelLinks(db) {
|
|
39
|
-
const value = readSetting(db, channelLinksKey);
|
|
40
|
-
if (value === undefined)
|
|
41
|
-
return [];
|
|
42
39
|
// A hand-edited row that no longer parses reads as no links rather than breaking the page;
|
|
43
40
|
// saving the list in Settings writes a good one again.
|
|
44
|
-
|
|
45
|
-
const parsed = linksSchema.safeParse(JSON.parse(value));
|
|
46
|
-
return parsed.success ? parsed.data : [];
|
|
47
|
-
}
|
|
48
|
-
catch {
|
|
49
|
-
return [];
|
|
50
|
-
}
|
|
41
|
+
return readJsonSetting(db, channelLinksKey, linksSchema, []);
|
|
51
42
|
}
|
|
52
43
|
export function writeChannelLinks(db, links) {
|
|
53
44
|
writeSetting(db, channelLinksKey, JSON.stringify(links.map((link) => ({ name: link.name.trim(), url: link.url.trim() }))));
|
|
@@ -68,7 +59,7 @@ export function readChannelLinksFor(db, channelId) {
|
|
|
68
59
|
// the generated text, the chapters fitted to YouTube's rules (`chapters.ts`; the last one's
|
|
69
60
|
// length only checked when the video's length is given), placeholders filled from the
|
|
70
61
|
// project's and its channel's links (one with no link stays as typed). For anything that hands
|
|
71
|
-
// the description on, such as
|
|
62
|
+
// the description on, such as Copy for YouTube Studio and the downloads. `chapterNotice` says what the
|
|
72
63
|
// fitting changed.
|
|
73
64
|
export function effectiveDescription(db, projectId, generated) {
|
|
74
65
|
const edits = readDescriptionEdits(db, projectId);
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Slopify can write the text with the Claude Code, Codex or Antigravity command-line tools, and draw the images with Codex, using the sign-in you already have. You need no API key for those steps, and their calls count toward your plan's limits instead of costing per call.
|
|
4
4
|
|
|
5
|
-
**Where to find it:** Settings →
|
|
5
|
+
**Where to find it:** Settings → Keys & services → the **Writing services** list (Claude Code CLI, Codex CLI, Antigravity CLI) and the **Image services** list (Codex CLI).
|
|
6
6
|
|
|
7
7
|
## What each tool does
|
|
8
8
|
|
|
@@ -15,7 +15,7 @@ Slopify can write the text with the Claude Code, Codex or Antigravity command-li
|
|
|
15
15
|
|
|
16
16
|
Codex text and Codex images share one sign-in, one executable path and one plan allowance.
|
|
17
17
|
|
|
18
|
-
Codex CLI must be version 0.149.1 or newer. An older Codex shows **Needs
|
|
18
|
+
Codex CLI must be version 0.149.1 or newer. An older Codex shows **Needs fixing** and says to update it.
|
|
19
19
|
|
|
20
20
|
## Set up a CLI
|
|
21
21
|
|
|
@@ -24,11 +24,11 @@ Codex CLI must be version 0.149.1 or newer. An older Codex shows **Needs attenti
|
|
|
24
24
|
- Claude Code: `claude auth login`
|
|
25
25
|
- Codex: `codex login`
|
|
26
26
|
- Antigravity: run `agy` and sign in with your Google account (a browser opens; over SSH it shows a URL and a code).
|
|
27
|
-
3. Open **Settings →
|
|
28
|
-
4. Pick the tool in the **
|
|
29
|
-
5.
|
|
27
|
+
3. Open **Settings → Keys & services** (reload the page if it was already open).
|
|
28
|
+
4. Pick the tool in the **Writing services** or **Image services** list. Its row should say **Ready**, and its setup shows **Installed, version …** and the **Command** Slopify runs.
|
|
29
|
+
5. Press **Check every service** to confirm it is signed in.
|
|
30
30
|
|
|
31
|
-
On the very first launch, before any key is saved, Slopify looks for all three tools. If it finds any, it says so and picks one for text on new
|
|
31
|
+
On the very first launch, before any key is saved, Slopify looks for all three tools. If it finds any, it says so and picks one for text on new Create drafts, preferring Claude Code, then Codex, then Antigravity, and Codex for images when found. The CLIs can't speak, but the narration needs no key either: without a voice key, the [System voice](Providers-and-Keys#the-system-voice) reads it with your computer's own speech. See [First-Launch-and-Welcome](First-Launch-and-Welcome).
|
|
32
32
|
|
|
33
33
|
## Antigravity CLI: what is different
|
|
34
34
|
|
|
@@ -41,21 +41,21 @@ It works differently from the Gemini CLI in a few ways:
|
|
|
41
41
|
- **No timeout of its own.** `agy` waits as long as the model needs; Slopify's own stall checks end a run that stops making progress.
|
|
42
42
|
- **Busy messages are retried.** When several calls run at once, Google can answer that its capacity for the model is used for the moment. A reset of 5 minutes or less is retried by itself within seconds; a longer reset is handled as a plan limit and the run waits for it.
|
|
43
43
|
- **Its sign-in is checked with `agy models`.** Slopify runs the command: if it lists models, the CLI is **Signed in**; if it says "Please sign in", the CLI is signed out and the check gives the command to run (`agy`); anything else shows as unknown. `GEMINI_API_KEY` is not read.
|
|
44
|
-
- **Old model ids are gone.** Models come from `agy models`. A project that still names a Gemini CLI model such as `gemini-2.5-pro` stops with "The chosen model is not available…" until you pick a new one in **Edit
|
|
44
|
+
- **Old model ids are gone.** Models come from `agy models`. A project that still names a Gemini CLI model such as `gemini-2.5-pro` stops with "The chosen model is not available…" until you pick a new one under **Written by** in **Edit settings** → **Article**. A saved path to a program still called `gemini` is refused: clear it or set the Antigravity CLI path in Settings → Keys & services.
|
|
45
45
|
|
|
46
46
|
## Row states
|
|
47
47
|
|
|
48
48
|
| State | Meaning |
|
|
49
49
|
|---|---|
|
|
50
50
|
| **Ready** | Found, new enough and not reporting a sign-in problem. |
|
|
51
|
-
| **Needs
|
|
51
|
+
| **Needs fixing** | Found, but something is wrong (for example an old Codex version). The detail says what. |
|
|
52
52
|
| **Not found** | Not on PATH, or not at the saved path. |
|
|
53
53
|
|
|
54
54
|
## Set the executable path
|
|
55
55
|
|
|
56
56
|
Slopify finds each tool on PATH, the list of folders your terminal searches. Set a path when the tool is installed somewhere else, or you have more than one copy.
|
|
57
57
|
|
|
58
|
-
1. Pick the tool in **Settings →
|
|
58
|
+
1. Pick the tool in **Settings → Keys & services**.
|
|
59
59
|
2. Choose **Change path**.
|
|
60
60
|
3. In **Executable path**, type the absolute path to the program file, without quotes or arguments. Leave it blank to go back to finding it on PATH.
|
|
61
61
|
4. Choose **Save path**. Slopify checks the tool answers before saving; a folder or a missing file is refused with the reason.
|
|
@@ -67,7 +67,7 @@ Slopify finds each tool on PATH, the list of folders your terminal searches. Set
|
|
|
67
67
|
|
|
68
68
|
## Check the sign-in
|
|
69
69
|
|
|
70
|
-
**Check
|
|
70
|
+
**Check every service** (Settings → Keys & services) asks each tool:
|
|
71
71
|
|
|
72
72
|
- **Installed**: found, with its version.
|
|
73
73
|
- **Signed in**: Slopify asks each CLI directly. If one is signed out, the line tells you the command to run (`claude auth login`, `codex login` or `agy`). For Antigravity CLI it runs `agy models`: a model list means signed in, "Please sign in" means signed out (run `agy`), and anything else is shown as unknown.
|
|
@@ -79,20 +79,20 @@ If a run fails because a tool's sign-in expired, the project offers **Copy sign-
|
|
|
79
79
|
|
|
80
80
|
## Pick a model and thinking level
|
|
81
81
|
|
|
82
|
-
A CLI's model list comes from the tool installed on your computer, not from the model catalogue. On
|
|
82
|
+
A CLI's model list comes from the tool installed on your computer, not from the model catalogue. On Create:
|
|
83
83
|
|
|
84
|
-
1. Pick the tool as the
|
|
84
|
+
1. Pick the tool as the **Service** under **Written by** (or Codex CLI under **Images by** for images).
|
|
85
85
|
2. Pick a **Text model** from the list. The refresh button beside it (**Refresh models**) asks the tool for its current list; **Custom ID** lets you type a model the list does not show.
|
|
86
|
-
3. If the model offers it, pick **Thinking** (text) or **Effort** (images). **Model default** leaves it to the tool. The levels come from the model: for example Low, Medium, High and
|
|
86
|
+
3. If the model offers it, pick **Thinking** (text) or **Effort** (images). **Model default** leaves it to the tool. The levels come from the model: for example Low, Medium, High and Extra high. Higher levels can write or draw more carefully, but take longer and use more of your plan.
|
|
87
87
|
|
|
88
|
-
If a model is missing when a run reaches it, the run stops with "The chosen model is not available in the AI command-line tool on your computer." Update the tool, or pick another model in **Edit
|
|
88
|
+
If a model is missing when a run reaches it, the run stops with "The chosen model is not available in the AI command-line tool on your computer." Update the tool, or pick another model in **Edit settings** (under **Written by**, or **Images by** for Codex images), then **Continue the run**. A thinking level the model does not support stops the same way.
|
|
89
89
|
|
|
90
90
|
## Codex images
|
|
91
91
|
|
|
92
92
|
Codex draws each image as its own job.
|
|
93
93
|
|
|
94
94
|
- **Codex default** runs with the tool's own defaults: no model and no effort on the command line.
|
|
95
|
-
- Any other model is one of Codex's own models (the same list
|
|
95
|
+
- Any other model is one of Codex's own models (the same list Codex shows as a writing service), run with the **Effort** you pick. With a chosen model or effort, or a reference picture to match, the agent may look at its work and redraw it.
|
|
96
96
|
- Each image may take several minutes; the time limit for one image is 30 minutes.
|
|
97
97
|
- Up to 4 images are drawn at once.
|
|
98
98
|
|
|
@@ -106,16 +106,16 @@ The CLIs bill your subscription, which gives a share of a 5-hour and a weekly al
|
|
|
106
106
|
- **Codex** is asked before and after each call. It reports whole percents, so a short run can show "under 1%".
|
|
107
107
|
- **Antigravity** reports none.
|
|
108
108
|
|
|
109
|
-
You see these
|
|
109
|
+
You see these in a project's cost breakdown (**See the breakdown** on its cost line) and on Home under **This week**. See [Costs-and-Run-Cost](Costs-and-Run-Cost).
|
|
110
110
|
|
|
111
111
|
When a tool says its allowance is used up, the run does not fail:
|
|
112
112
|
|
|
113
113
|
1. Slopify stores the reset time the tool gave (per tool, not per project).
|
|
114
114
|
2. Every call to that tool, from any project, waits until 2 minutes after the reset. Without a stated time, it checks again every 30 minutes.
|
|
115
|
-
3. The project's status reads **Waiting for limits**, with a line such as "Waiting for Codex limits (resets at 14:00)." The same words show on Home's Running
|
|
115
|
+
3. The project's status reads **Waiting for limits**, with a line such as "Waiting for Codex limits (resets at 14:00)." The same words show on Home's Running, the Projects row and the Calendar.
|
|
116
116
|
4. When the reset passes, the run continues by itself.
|
|
117
117
|
|
|
118
|
-
Other
|
|
118
|
+
Other services are not held up: a project whose narration uses a key carries on while its Codex images wait. The wait survives a restart; a project that was waiting when Slopify stopped resumes on the next start and waits again. A project you paused or canceled meanwhile is left alone.
|
|
119
119
|
|
|
120
120
|
Antigravity's quota is handled the same way ("Slopify waits and tries again later by itself").
|
|
121
121
|
|
|
@@ -125,14 +125,14 @@ A container cannot use the CLIs installed on your computer directly. On Linux, t
|
|
|
125
125
|
|
|
126
126
|
1. Install and sign in to the CLIs on your computer first.
|
|
127
127
|
2. Run the Docker installer (`npx @gentbajko/slopify@latest --docker`). If a CLI is found, it asks once whether to set up the helper. `--accept-host-cli` approves without asking; `--host-cli=off` skips it.
|
|
128
|
-
3. In Settings →
|
|
128
|
+
3. In Settings → Keys & services the tools show **Managed on host**. Their path cannot be changed there.
|
|
129
129
|
|
|
130
130
|
What to know:
|
|
131
131
|
|
|
132
132
|
- The helper runs as you, as the user service `slopify-cli-bridge.service`, and talks to the container over a private socket. No network port is opened and no sign-in is copied into Docker.
|
|
133
133
|
- After you install, update or remove a CLI, run the Docker installer again so Slopify sees the change.
|
|
134
134
|
- Run cost and plan-limit shares work the same as without Docker. An older helper may not pass them through, and the cost page then says the share is not known.
|
|
135
|
-
- With the helper off, Settings shows the CLIs as unavailable. API
|
|
135
|
+
- With the helper off, Settings shows the CLIs as unavailable. Services with an API key still work.
|
|
136
136
|
|
|
137
137
|
Check or turn off the helper:
|
|
138
138
|
|
|
@@ -141,17 +141,17 @@ systemctl --user status slopify-cli-bridge.service
|
|
|
141
141
|
systemctl --user disable --now slopify-cli-bridge.service
|
|
142
142
|
```
|
|
143
143
|
|
|
144
|
-
Turning it off leaves Docker, your
|
|
144
|
+
Turning it off leaves Docker, your keyed services, your data and your host sign-ins as they are. See [Docker](Docker).
|
|
145
145
|
|
|
146
146
|
## Tips
|
|
147
147
|
|
|
148
|
-
- A CLI step on
|
|
149
|
-
- If your plan runs out often, split the work: keep
|
|
150
|
-
- Use **Check
|
|
148
|
+
- A CLI step on Create's estimate reads "$0 on your plan · ~$X via API": what the same tokens would cost with a key.
|
|
149
|
+
- If your plan runs out often, split the work: keep the writing on a CLI and put images on a keyed service, or the other way round.
|
|
150
|
+
- Use **Check every service** after updating a CLI; a newer tool can drop a model your template still names.
|
|
151
151
|
|
|
152
152
|
## Related pages
|
|
153
153
|
|
|
154
|
-
- [
|
|
154
|
+
- [Keys and Services](Providers-and-Keys)
|
|
155
155
|
- [Models](Models)
|
|
156
156
|
- [Costs-and-Run-Cost](Costs-and-Run-Cost)
|
|
157
157
|
- [Docker](Docker)
|
|
@@ -1,35 +1,35 @@
|
|
|
1
1
|
# Agents (MCP)
|
|
2
2
|
|
|
3
|
-
Slopify has a built-in MCP server, so an AI agent on your computer (Claude Code, Codex, or any other client that speaks MCP over HTTP) can run Slopify for you. It can start and fix runs, edit
|
|
3
|
+
Slopify has a built-in MCP server, so an AI agent on your computer (Claude Code, Codex, or any other client that speaks MCP over HTTP) can run Slopify for you. It can start and fix runs, edit your prompts, templates and settings, answer AI checks and approve pauses, with the same checks, costs and refusals as the buttons in the web page. Run on a schedule, an agent can clear everything that would otherwise wait for you, right up to **Ready to upload**. Uploading stays yours.
|
|
4
4
|
|
|
5
|
-
**Where to find it:** **Settings →
|
|
5
|
+
**Where to find it:** **Settings → AI agents**.
|
|
6
6
|
|
|
7
|
-
## What the
|
|
7
|
+
## What the AI agents page shows
|
|
8
8
|
|
|
9
9
|
| Part | What it is |
|
|
10
10
|
| --- | --- |
|
|
11
|
-
| **MCP
|
|
11
|
+
| **Address for agents (MCP)** | The address agents connect to: this install's address with `/mcp` after it, for example `http://127.0.0.1:6969/mcp`. It uses the address in your browser's address bar, so it matches your port and Docker's published port. |
|
|
12
12
|
| **Claude Code** | The command that adds Slopify to Claude Code, with **Copy**. Run it once in a terminal. |
|
|
13
13
|
| **Codex** | The lines that add Slopify to Codex, with **Copy**. Add them to `~/.codex/config.toml`. |
|
|
14
14
|
| Last connected | When an agent last connected, or "No agent has connected yet." |
|
|
15
|
-
| **What agents did** | The latest 20 changes made by agents, newest first: what was done, the project or schedule it was done to, and when. Changes outside a project (a
|
|
15
|
+
| **What agents did** | The latest 20 changes made by agents, newest first: what was done, the project or schedule it was done to, and when. Changes outside a project (a prompt, a schedule, a setting) are listed here too. "No agent has changed anything yet." when there are none. |
|
|
16
16
|
|
|
17
17
|
If the browser blocks the clipboard, **Copy** says so; select the line and copy it yourself.
|
|
18
18
|
|
|
19
19
|
## Connect an agent
|
|
20
20
|
|
|
21
|
-
Slopify must be running. The address in these examples is the default (`127.0.0.1`, port `6969`); copy the real lines from
|
|
21
|
+
Slopify must be running. The address in these examples is the default (`127.0.0.1`, port `6969`); copy the real lines from Settings → AI agents.
|
|
22
22
|
|
|
23
23
|
### Claude Code
|
|
24
24
|
|
|
25
|
-
1. Open **Settings →
|
|
25
|
+
1. Open **Settings → AI agents** and press **Copy** next to **Claude Code**.
|
|
26
26
|
2. Paste it in a terminal and run it:
|
|
27
27
|
|
|
28
28
|
```
|
|
29
29
|
claude mcp add --transport http slopify http://127.0.0.1:6969/mcp
|
|
30
30
|
```
|
|
31
31
|
|
|
32
|
-
3. Start Claude Code. `/mcp` there should list `slopify` as connected, and
|
|
32
|
+
3. Start Claude Code. `/mcp` there should list `slopify` as connected, and Settings → AI agents now shows when it last connected.
|
|
33
33
|
|
|
34
34
|
### Codex
|
|
35
35
|
|
|
@@ -49,7 +49,7 @@ Any MCP client that connects by URL over Streamable HTTP takes the same **MCP ad
|
|
|
49
49
|
|
|
50
50
|
### Docker
|
|
51
51
|
|
|
52
|
-
Nothing changes: the agent runs on your computer and connects to the port Docker publishes, the same address you open Slopify at. Copy the lines from
|
|
52
|
+
Nothing changes: the agent runs on your computer and connects to the port Docker publishes, the same address you open Slopify at. Copy the lines from Settings → AI agents in that Slopify. See [Docker](Docker).
|
|
53
53
|
|
|
54
54
|
## No token, and what keeps web pages out
|
|
55
55
|
|
|
@@ -63,18 +63,18 @@ If you start Slopify with `--host 0.0.0.0` (or another address other computers c
|
|
|
63
63
|
|
|
64
64
|
Anything you can do in the web page, except the few things listed under [What agents cannot do](#what-agents-cannot-do). That includes:
|
|
65
65
|
|
|
66
|
-
- **Projects:** make projects from
|
|
67
|
-
- **Fixing runs:** **Try ... again**, **Soften and retry**,
|
|
68
|
-
- **
|
|
69
|
-
- **Planning:** release times, the posting plan, **Mark uploaded**, **Deleted on YouTube**, and **
|
|
66
|
+
- **Projects:** make projects from Create drafts and templates (after the same review and estimate you see), read them, edit them, pause, continue and cancel runs, **Keep as is**, move projects to another channel, delete and restore them.
|
|
67
|
+
- **Fixing runs:** **Try ... again**, **Soften and retry**, make a step or one item again, make a narration chunk again, and **Choose what to make again**, with its estimate.
|
|
68
|
+
- **Pauses and checks:** answer AI checks set to **Your own AI agent**, **Overrule** or **Redo** flagged items, and approve pauses.
|
|
69
|
+
- **Planning:** release times, the posting plan, **Mark uploaded**, **Deleted on YouTube**, and **Copy for YouTube Studio** up to **Ready to upload**.
|
|
70
70
|
- **Schedules:** schedules, their topic lists, approving or turning down held topics, and **Prepare**.
|
|
71
|
-
- **
|
|
71
|
+
- **Prompts, templates and settings:** prompts (with history), templates, channels and cast, export and import, and settings other than those below.
|
|
72
72
|
- **Reading:** Home's work list, the calendar, costs and estimates, a project's files (pictures come back as pictures; audio and video as their address in Slopify), and the material a review looks at.
|
|
73
73
|
- **Storage:** **Delete old versions** for one project.
|
|
74
74
|
|
|
75
|
-
Agents never start paid work you could not see: before
|
|
75
|
+
Agents never start paid work you could not see: before anything is made again they get the same **Choose what to make again** list with its estimate, and they must accept it, as you do. There is no extra budget or limit for agents; the costs are the same as yours. Actions with a consequence (deleting, for example) need the agent to confirm them, as a dialog asks you.
|
|
76
76
|
|
|
77
|
-
Agents and their tools use the same state words as the page: **Queued**, **Running**, **Paused**, **Waiting for your review**, **Waiting for the agent**, **
|
|
77
|
+
Agents and their tools use the same state words as the page: **Queued**, **Running**, **Paused**, **Waiting for your review**, **Waiting for the agent**, **Waiting for its day**, **Stopped**, **Kept as is**, **Failed**, **Done**.
|
|
78
78
|
|
|
79
79
|
## What agents cannot do
|
|
80
80
|
|
|
@@ -82,7 +82,7 @@ Agents and their tools use the same state words as the page: **Queued**, **Runni
|
|
|
82
82
|
| --- | --- |
|
|
83
83
|
| Upload to YouTube, or send a video to the Studio extension (**Fill in YouTube Studio**, **Upload**) | Agents stop at **Ready to upload**. Uploading is yours; Slopify never makes a video public. See [Publishing to YouTube](Publishing-to-YouTube). |
|
|
84
84
|
| The extension's automatic pinned comment setting | It posts comments in your name. |
|
|
85
|
-
| Read or change
|
|
85
|
+
| Read or change service keys, or make the extension's pairing token | They are credentials. Agents see each service only as set up or missing. |
|
|
86
86
|
| Read the **Notification URL** | It can hold a secret (a private ntfy topic). Agents see only whether one is configured or missing, though they may set a new one. |
|
|
87
87
|
| Backups: export, import, restore, and the daily backup settings | They are yours, in Settings → Backup & storage. |
|
|
88
88
|
| Update Slopify, start at login, CLI paths, the extension's download | They are yours. |
|
|
@@ -97,27 +97,27 @@ Everything an agent changes is marked, so you can always tell its work from your
|
|
|
97
97
|
|
|
98
98
|
| Where | What you see |
|
|
99
99
|
| --- | --- |
|
|
100
|
-
| Project
|
|
100
|
+
| Project → **Edit settings** → **Versions** | Versions an agent saved read **by agent**, and **Done by agents** lists what agents did to the project (approvals, retries, verdicts and so on). |
|
|
101
101
|
| Review badges | **Passed by agent**, **Flagged by agent**, **Redone after agent review**, **Accepted by agent** (an agent pressed Overrule), **Made again by agent** (an agent pressed Redo). |
|
|
102
102
|
| Notifications | A run an agent started ends its notices with **· started by agent** ("Started: *title* · by agent" in the browser); a flag from an agent's review ends with **· by agent**. |
|
|
103
|
-
| Settings →
|
|
103
|
+
| Settings → AI agents | **What agents did**: the latest 20 changes of every kind. |
|
|
104
104
|
|
|
105
|
-
##
|
|
105
|
+
## Your own AI agent as the checker
|
|
106
106
|
|
|
107
|
-
Instead of paying a
|
|
107
|
+
Instead of paying a model to check, you can let your agent do the [AI checks](Reviews-and-Checkpoints#ai-checks).
|
|
108
108
|
|
|
109
|
-
1. On
|
|
110
|
-
2.
|
|
111
|
-
3. Pick **Flag
|
|
109
|
+
1. On Create, open the **Pauses and checks** row (or **Edit settings** → **Pauses and checks** on a project).
|
|
110
|
+
2. Under **Have an AI check the results**, open **Checker and stages** and set **Who checks** to **Your own AI agent**. **Checked by** goes away: the agent needs no service or model.
|
|
111
|
+
3. Pick **Flag problems** or **Flag and redo**, for every stage or each on its own, as usual. Picture stages (images, the thumbnail, shorts) work too: the agent is shown the pictures.
|
|
112
112
|
|
|
113
113
|
Reviews by the agent cost nothing and add nothing to the estimate. Redos it asks for cost what the item cost, as always.
|
|
114
114
|
|
|
115
115
|
### What happens during the run
|
|
116
116
|
|
|
117
117
|
1. When an item is made, its review waits for the agent. What depends on it waits too; other work carries on.
|
|
118
|
-
2. If nothing else holds the run, the project reads **Waiting for the agent** everywhere: its
|
|
118
|
+
2. If nothing else holds the run, the project reads **Waiting for the agent** everywhere: its title row, Projects, Home's **Running** and the calendar. The project page says "An agent is reviewing what was made." with nothing to press. It is not in **Needs you**, no "Waiting for you" notice goes out and there is no **Continue the run** to press: it goes on by itself.
|
|
119
119
|
3. The agent reads the item and answers **pass** or **fail**. A fail needs at least one reason; at most 10 reasons, each up to 500 characters. The answer goes through the stage's mode, exactly like a model's verdict: a pass lets the work go on, a fail is flagged or made again.
|
|
120
|
-
4. **The first answer wins.** If two agents answer the same review, the first one saved is kept and the second is refused ("This review was already answered"). The same goes for you: once an agent has pressed Overrule or Redo on a flagged item, or approved a
|
|
120
|
+
4. **The first answer wins.** If two agents answer the same review, the first one saved is kept and the second is refused ("This review was already answered"). The same goes for you: once an agent has pressed Overrule or Redo on a flagged item, or approved a pause, pressing it yourself changes nothing and says it was already decided.
|
|
121
121
|
|
|
122
122
|
### If no agent answers
|
|
123
123
|
|
|
@@ -125,7 +125,7 @@ A review nobody answers **passes by itself 2 hours** after it began waiting. Its
|
|
|
125
125
|
|
|
126
126
|
- **Paused project:** the review still passes at its two hours, but nothing runs until the run is continued.
|
|
127
127
|
- **Canceled run:** its waiting reviews stop and never pass. If you (or an agent) take the step up again, the review asks again and waits a fresh two hours.
|
|
128
|
-
- **Item made again meanwhile** (an edit or
|
|
128
|
+
- **Item made again meanwhile** (after an edit, or made again on purpose): the old review is dropped and the new item gets its own.
|
|
129
129
|
|
|
130
130
|
## Paused and stopped runs
|
|
131
131
|
|
|
@@ -139,12 +139,13 @@ Slopify cannot wake an agent; the agent looks. Its work list is the `needs_atten
|
|
|
139
139
|
| --- | --- |
|
|
140
140
|
| An external review waiting for a verdict | Reads the item and answers. |
|
|
141
141
|
| A flagged verdict nobody acted on | **Overrule** or **Redo**. |
|
|
142
|
-
| A
|
|
143
|
-
| A failed step | Does what the error's own sentence says: for example
|
|
142
|
+
| A pause waiting for approval | Checks the work before it and approves. A template's own **Pause after the images (before the video)** is listed; a schedule's made-ahead project (**Waiting for its day**) is not, since that one waits for its day. |
|
|
143
|
+
| A failed step | Does what the error's own sentence says: for example makes narration chunk 5 again, accepts the **Choose what to make again** estimate, then continues the run. |
|
|
144
144
|
| A paused run, or a run a restart **Stopped** | Continues it once nothing on the project still needs fixing. |
|
|
145
145
|
| Topics a schedule holds for approval | Approves the ones that fit and turns down the rest. |
|
|
146
146
|
| A video marked **Late · upload now** | Reports it. It cannot upload. |
|
|
147
|
-
| A finishing touch the Studio extension failed (captions, end screen, pinned comment) | Reports it. Fixing it is the extension's or yours. |
|
|
147
|
+
| A finishing touch the Studio extension failed (captions, end screen, pinned comment), or a post it couldn't fill on another site | Reports it. Fixing it is the extension's or yours. |
|
|
148
|
+
| A post filled in another site's form, waiting for your **Post** (`post-due`) | Reports it. Posting is yours. |
|
|
148
149
|
|
|
149
150
|
Projects that are **Kept as is** are not listed. Each entry says whether Slopify is already retrying or redoing it by itself (the agent leaves those alone and looks again later) and whether the agent can act on it at all.
|
|
150
151
|
|
|
@@ -152,13 +153,13 @@ The steps above are the **attend routine**. Slopify hands it to every agent that
|
|
|
152
153
|
|
|
153
154
|
## Tips
|
|
154
155
|
|
|
155
|
-
- Pair
|
|
156
|
-
- Check **What agents did** in
|
|
156
|
+
- Pair your own AI agent as the checker with an hourly attend routine, and a [Notification URL](Notifications#get-notifications-on-your-phone-notification-url) so you hear when a review passed without an answer: that usually means the routine stopped running.
|
|
157
|
+
- Check **What agents did** in Settings → AI agents now and then; each project's **Edit settings** → **Versions** has the full story for that project.
|
|
157
158
|
- If an agent's request is refused because the project changed meanwhile, it reads the project again and retries once; you do not need to do anything.
|
|
158
159
|
|
|
159
160
|
## Related pages
|
|
160
161
|
|
|
161
|
-
- [
|
|
162
|
+
- [Pauses and Checks](Reviews-and-Checkpoints)
|
|
162
163
|
- [Notifications](Notifications)
|
|
163
164
|
- [Recovery and Retries](Recovery-and-Retries)
|
|
164
165
|
- [Home and Projects](Home-and-Projects)
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Assistant
|
|
2
|
+
|
|
3
|
+
The assistant is a chat inside Slopify. Ask it how something works, or ask it to do something on the screen you have open: "Which templates do I have?", "Why did this run stop?", "Make the thumbnail of this project again". It runs on your own **Claude Code** or **Codex** sign-in, so it uses your plan's allowance and is not added to a project's run cost.
|
|
4
|
+
|
|
5
|
+
**Where to find it:** **Assistant** in the left rail, under the search field. On a phone it is the sparkle button in the top bar. It opens beside the page without moving it.
|
|
6
|
+
|
|
7
|
+
## What it can and can't do
|
|
8
|
+
|
|
9
|
+
- It uses only Slopify's own tools, the same ones an [agent](Agents-MCP) uses, with the same checks and refusals as the buttons in the page. It reads this guide to answer questions about Slopify.
|
|
10
|
+
- It has no web search, can't run commands and can't open files on your computer. None of your Claude Code or Codex settings, hooks, plugins, skills, memory or other MCP servers are loaded for it. If the CLI ever offers it a tool from outside Slopify, Slopify stops the answer at once and says so.
|
|
11
|
+
- It never answers an external AI check, exports or imports a backup, uploads a file from disk, empties the Trash or deletes old versions. Uploading to YouTube, backups, service keys and updates stay yours.
|
|
12
|
+
- What it changes shows as **by assistant** in a project's **Versions**, in notifications and in **Settings → AI agents**.
|
|
13
|
+
|
|
14
|
+
## It asks first
|
|
15
|
+
|
|
16
|
+
Anything that costs money (starting a run or making something again, retrying a step, generating topics, a cast picture or a voice sample), anything a button would confirm, anything that removes something, and anything that sends to or changes an address outside Slopify (where notifications go, a test notification) waits for you. The chat shows a card with what it wants to do, for which project, and what it costs: the estimate **Choose what to make again** or Create's **See everything this run will do** showed, or "Slopify can't price it here" when there is none.
|
|
17
|
+
|
|
18
|
+
| Press | What happens |
|
|
19
|
+
| --- | --- |
|
|
20
|
+
| **Allow** | The assistant does that one thing, with exactly what it asked for, and tells you what happened. An Allow is used once and only in that chat. |
|
|
21
|
+
| **Don't** | Nothing runs. The assistant sees your answer the next time you write. |
|
|
22
|
+
|
|
23
|
+
An ask you don't answer within 15 minutes expires: ask again, so it can check the cost again. The assistant can't press Allow for you; only a press in the page counts.
|
|
24
|
+
|
|
25
|
+
## Using the chat
|
|
26
|
+
|
|
27
|
+
- **Send** (or Enter) sends your message; Shift+Enter starts a new line. The answer streams in as it is written, with a line for each tool it used.
|
|
28
|
+
- **Stop** ends the answer at once. Whatever it already did stays done. An answer that takes longer than 10 minutes is stopped for you.
|
|
29
|
+
- **New chat** starts over. Each chat keeps its last 200 messages; the assistant remembers the last 20 of them (up to about 24,000 characters) when it answers.
|
|
30
|
+
- **Runs on** picks the CLI: **Auto** takes Claude Code when it is installed and signed in, otherwise Codex.
|
|
31
|
+
- It knows the page you have open: the project, schedule, channel or template on it, the section, and the rows you selected in a list.
|
|
32
|
+
|
|
33
|
+
## When it can't start
|
|
34
|
+
|
|
35
|
+
The panel says why and links to the fix:
|
|
36
|
+
|
|
37
|
+
| Message | Fix |
|
|
38
|
+
| --- | --- |
|
|
39
|
+
| Neither Claude Code nor Codex is ready | Install one and sign in, then check it in **Settings → Keys & services** ([AI CLIs](AI-CLIs)). |
|
|
40
|
+
| Claude Code (or Codex) is signed out | Run `claude auth login` (or `codex login`) in a terminal, then send your message again. |
|
|
41
|
+
| Codex is too old | Update Codex CLI to the version the message names. |
|
|
42
|
+
| The Docker version | The assistant isn't available in Docker: there the CLIs run on your computer through the host helper, which can't hand them Slopify's tools safely. Install Slopify with npm ([Install](Install)) to use it. |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Backups
|
|
2
2
|
|
|
3
|
-
A backup is one `.tar` file with everything you made in Slopify: every project with its files and
|
|
3
|
+
A backup is one `.tar` file with everything you made in Slopify: every project with its files and versions, your prompts, templates, schedules, channels and settings. Make one by hand at any time with **Export everything**, or let Slopify write one every day. Bring one back with **Import a backup**. Provider keys are never included.
|
|
4
4
|
|
|
5
5
|
**Where to find it:** **Settings → Backup & storage**: daily backups and Back up now, Export everything and Import a backup.
|
|
6
6
|
|
|
@@ -8,18 +8,18 @@ A backup is one `.tar` file with everything you made in Slopify: every project w
|
|
|
8
8
|
|
|
9
9
|
| Included | Left out on purpose |
|
|
10
10
|
|---|---|
|
|
11
|
-
| Every project with its files and
|
|
12
|
-
|
|
|
11
|
+
| Every project with its files and versions, and its channel | Service keys |
|
|
12
|
+
| AI check verdicts and run cost of each project | The Notification URL |
|
|
13
13
|
| Prompts, intros and outros, with their history | The Studio extension's pairing |
|
|
14
|
-
|
|
|
15
|
-
| Templates, schedules and
|
|
14
|
+
| PDF looks and uploaded fonts | The tutorial's progress |
|
|
15
|
+
| Templates, schedules and Create drafts | The daily backups' folder and status |
|
|
16
16
|
| Channels: brand kit, series brief, episode memory and AI disclosure settings, cast with pictures, end screen images, episode summaries, existing videos, and the last **Keep only titles containing** filter | The telemetry machine id |
|
|
17
|
-
| Channel links and the
|
|
17
|
+
| Channel links and the service defaults a new Create draft starts with | State that only matters while this install runs: the queue, plan-limit waits |
|
|
18
18
|
| AI use marks: voices marked as a real person, image prompts marked photorealistic, projects with real footage | |
|
|
19
19
|
| Settings and usage history | |
|
|
20
20
|
| The trash: trashed items come back still in the trash, with their original date | |
|
|
21
21
|
|
|
22
|
-
After an import you add your provider keys again in [
|
|
22
|
+
After an import you add your provider keys again in [Keys and Services](Providers-and-Keys).
|
|
23
23
|
|
|
24
24
|
## Export everything (a backup right now, downloaded)
|
|
25
25
|
|
|
@@ -1,46 +1,38 @@
|
|
|
1
1
|
# Calendar
|
|
2
2
|
|
|
3
|
-
The calendar shows the coming four weeks on one screen:
|
|
3
|
+
The calendar shows the coming four weeks on one screen: how much needs you, every scheduled run with the topic and title it will use, the projects running or finished on their day, and the batch queue. You can drag a topic to another day, move it to another schedule, add topics, and accept or reject topics Slopify suggested.
|
|
4
4
|
|
|
5
|
-
**Where to find it:** **Calendar** in the
|
|
5
|
+
**Where to find it:** **Calendar** in the rail. It has two tabs: **Coming weeks**, described here, and **Schedules**, where you create, edit, pause and resume the schedules themselves (see [Schedules](Schedules)).
|
|
6
6
|
|
|
7
7
|
## What the calendar shows
|
|
8
8
|
|
|
9
9
|
The calendar starts on this week's Monday and shows four weeks, Monday to Sunday.
|
|
10
10
|
|
|
11
11
|
- **Scheduled runs**, each with the project title it will make. A run shows **Queued** when a topic is lined up, **Needs a topic** when its topic is still waiting for your approval or for generation, and **Paused** when its schedule is paused.
|
|
12
|
-
- **Needs you**, above the weeks:
|
|
13
|
-
- **Projects** running or finished on their day, with their state: **Running**, **Waiting for the agent**, **Paused**, **Queued**, **Waiting for your review**, **
|
|
14
|
-
- **
|
|
12
|
+
- **Needs you**, above the weeks: one line with Home's counts of what waits on you and what is ready to upload (see below).
|
|
13
|
+
- **Projects** running or finished on their day, with their state: **Running**, **Waiting for the agent**, **Paused**, **Queued**, **Waiting for your review**, **Waiting for its day**, **Stopped**, **Kept as is**, **Failed**, **Done with problems**, **Done** or **Canceled**. A project waiting for a CLI plan says so, for example **Waiting for Codex limits (resets at 14:00)**.
|
|
14
|
+
- **Waiting to start**: the batch queue, videos started together that wait their turn (see below).
|
|
15
15
|
- **Suggested topics**, beside the weeks, for schedules that hold generated topics for approval.
|
|
16
16
|
|
|
17
|
-
The calendar follows the channel picked in the
|
|
17
|
+
The calendar follows the channel picked under **Showing:** in the page header, or shows every channel. See [Channels](Channels).
|
|
18
18
|
|
|
19
|
-
Each queued run has **
|
|
19
|
+
Each queued run has **Make ahead**, which makes everything but its video now (and spends what the run costs) and leaves only putting the video together for its day; such a run shows **Waiting for its day** and **Open**. See [Schedules](Schedules#make-a-video-ahead).
|
|
20
20
|
|
|
21
21
|
## Needs you
|
|
22
22
|
|
|
23
|
-
Above the weeks, **Needs you**
|
|
23
|
+
Above the weeks, one line says what Home's **Needs you** and **Finished** count, in Home's words, for every project of the channel shown (not only the ones in these weeks), for example "1 decision · 1 failed · 2 ready to upload. Open Home to act on them.", with **Open Home**. Decisions are projects held at a pause, paused or **Stopped**; failed are the failed projects and the steps that failed beside a wait; ready to upload are finished videos not marked uploaded. It is hidden when there is nothing, and the bundled samples never count.
|
|
24
24
|
|
|
25
|
-
|
|
26
|
-
| --- | --- | --- |
|
|
27
|
-
| A failed project | **Failed** | **Open to fix** |
|
|
28
|
-
| A project you paused | **Paused** | **Open to continue** |
|
|
29
|
-
| A project a restart stopped before it finished | **Stopped** | **Open to continue** |
|
|
30
|
-
| A project held at a review checkpoint, or with an automatic review that flagged an item and waits for **Overrule** or **Redo** | **Waiting for your review** | **Open to review** |
|
|
31
|
-
| A finished video not marked uploaded | **Ready to upload** | **Prepare upload** |
|
|
32
|
-
|
|
33
|
-
The bundled samples never show here. A press anywhere on an entry opens its project. See [Reviews and Checkpoints](Reviews-and-Checkpoints) and [Publishing to YouTube](Publishing-to-YouTube).
|
|
25
|
+
Acting on them is Home's job: **Needs you** there lists each one with its button. The calendar keeps its space for what is planned. See [Home and Projects](Home-and-Projects), [Pauses and Checks](Reviews-and-Checkpoints) and [Publishing to YouTube](Publishing-to-YouTube).
|
|
34
26
|
|
|
35
27
|
## The batch queue
|
|
36
28
|
|
|
37
|
-
Videos started together, such as extra videos queued from
|
|
29
|
+
Videos started together, such as extra videos queued from Create, run one at a time. **Waiting to start** is the same list as Home's: the videos still to start, numbered in the order they start (**1.**, **2.**, …), each marked **Queued** (or **Paused**) with **Earlier**, **Later** and **Remove**. Its heading says how many there are; the one already running is on Home under **Running**. Pausing the started project holds the whole queue, and the list says so; when one fails or is canceled, the next one starts. It follows the channel shown under **Showing:**, and is hidden when nothing waits.
|
|
38
30
|
|
|
39
31
|
## Switch between weeks and a list
|
|
40
32
|
|
|
41
|
-
Use **
|
|
33
|
+
Use **Show the weeks as** at the top:
|
|
42
34
|
|
|
43
|
-
- **
|
|
35
|
+
- **Grid** (the default) shows the four weeks as a grid.
|
|
44
36
|
- **List** shows the same runs day by day, with buttons to move each topic.
|
|
45
37
|
|
|
46
38
|
This browser remembers your choice.
|
|
@@ -64,10 +56,10 @@ The topic now runs with the other schedule's template.
|
|
|
64
56
|
|
|
65
57
|
## Add topics
|
|
66
58
|
|
|
67
|
-
1. Press **Add to
|
|
59
|
+
1. Press **Add topics to a schedule**.
|
|
68
60
|
2. Pick the **Schedule** the topics join. Only active and paused schedules are listed, each with the number of topics already queued.
|
|
69
61
|
3. Type or paste **Topics, one per line**. Blank lines are skipped.
|
|
70
|
-
4. Press **Add N topics** (the button counts them). **
|
|
62
|
+
4. Press **Add N topics** (the button counts them). **Cancel** closes the form without adding anything.
|
|
71
63
|
|
|
72
64
|
The topics go to the end of the schedule's queue, in order, and take its next free runs. Each topic fills the schedule's topic keyword; every other keyword keeps its every-run value. To give topics their own values, edit the schedule's topics as a table on the **Schedules** tab (see [Schedules](Schedules)).
|
|
73
65
|
|
|
@@ -80,7 +72,7 @@ Schedules set to **Generate and hold for approval** list their suggestions under
|
|
|
80
72
|
- **Queue** adds a topic to the end of that schedule's queue.
|
|
81
73
|
- **Reject** drops it for good; it is never suggested again.
|
|
82
74
|
- **Queue all** adds every suggestion of that schedule, in order.
|
|
83
|
-
- **Suggest topics now** asks the schedule's
|
|
75
|
+
- **Suggest topics now · 1 AI call** asks the schedule's AI for more at once.
|
|
84
76
|
|
|
85
77
|
While Slopify is asking, the panel says so and the topics appear when it finishes. If the last try failed, the panel says so with the reason. When nothing is waiting it says **No suggestions are waiting.**
|
|
86
78
|
|
|
@@ -94,9 +86,9 @@ Editing a suggestion's words before approving it is done under **Topics waiting*
|
|
|
94
86
|
|
|
95
87
|
- Use the list view if dragging is fiddly, for example on a touch screen or a narrow window.
|
|
96
88
|
- A browser notification for new suggestions opens the calendar's **Suggested topics** when you click it. See [Notifications](Notifications).
|
|
97
|
-
- `Ctrl+K` → **Add to
|
|
89
|
+
- `Ctrl+K` → **Add topics to a schedule** works from any screen: it opens the calendar with the form. `G` then `C` goes to the calendar.
|
|
98
90
|
- To change a schedule's queued topics one by one (rename, reorder, remove), use the **Schedules** tab. See [Schedules](Schedules#edit-the-queued-topics-in-place).
|
|
99
|
-
- To start one video right now instead of waiting for a run, use [
|
|
91
|
+
- To start one video right now instead of waiting for a run, use [Create](Create-Overview).
|
|
100
92
|
|
|
101
93
|
## Related pages
|
|
102
94
|
|