@vibeframe/cli 0.54.0 → 0.55.1
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/index.js +63452 -233
- package/package.json +11 -6
- package/dist/agent/adapters/claude.d.ts +0 -15
- package/dist/agent/adapters/claude.d.ts.map +0 -1
- package/dist/agent/adapters/claude.js +0 -119
- package/dist/agent/adapters/claude.js.map +0 -1
- package/dist/agent/adapters/gemini.d.ts +0 -15
- package/dist/agent/adapters/gemini.d.ts.map +0 -1
- package/dist/agent/adapters/gemini.js +0 -132
- package/dist/agent/adapters/gemini.js.map +0 -1
- package/dist/agent/adapters/index.d.ts +0 -28
- package/dist/agent/adapters/index.d.ts.map +0 -1
- package/dist/agent/adapters/index.js +0 -43
- package/dist/agent/adapters/index.js.map +0 -1
- package/dist/agent/adapters/ollama.d.ts +0 -20
- package/dist/agent/adapters/ollama.d.ts.map +0 -1
- package/dist/agent/adapters/ollama.js +0 -186
- package/dist/agent/adapters/ollama.js.map +0 -1
- package/dist/agent/adapters/openai.d.ts +0 -15
- package/dist/agent/adapters/openai.d.ts.map +0 -1
- package/dist/agent/adapters/openai.js +0 -92
- package/dist/agent/adapters/openai.js.map +0 -1
- package/dist/agent/adapters/openrouter.d.ts +0 -16
- package/dist/agent/adapters/openrouter.d.ts.map +0 -1
- package/dist/agent/adapters/openrouter.js +0 -100
- package/dist/agent/adapters/openrouter.js.map +0 -1
- package/dist/agent/adapters/openrouter.test.d.ts +0 -5
- package/dist/agent/adapters/openrouter.test.d.ts.map +0 -1
- package/dist/agent/adapters/openrouter.test.js +0 -73
- package/dist/agent/adapters/openrouter.test.js.map +0 -1
- package/dist/agent/adapters/xai.d.ts +0 -15
- package/dist/agent/adapters/xai.d.ts.map +0 -1
- package/dist/agent/adapters/xai.js +0 -95
- package/dist/agent/adapters/xai.js.map +0 -1
- package/dist/agent/index.d.ts +0 -69
- package/dist/agent/index.d.ts.map +0 -1
- package/dist/agent/index.js +0 -180
- package/dist/agent/index.js.map +0 -1
- package/dist/agent/memory/index.d.ts +0 -70
- package/dist/agent/memory/index.d.ts.map +0 -1
- package/dist/agent/memory/index.js +0 -132
- package/dist/agent/memory/index.js.map +0 -1
- package/dist/agent/prompts/system.d.ts +0 -6
- package/dist/agent/prompts/system.d.ts.map +0 -1
- package/dist/agent/prompts/system.js +0 -103
- package/dist/agent/prompts/system.js.map +0 -1
- package/dist/agent/tools/ai-editing.d.ts +0 -15
- package/dist/agent/tools/ai-editing.d.ts.map +0 -1
- package/dist/agent/tools/ai-editing.js +0 -763
- package/dist/agent/tools/ai-editing.js.map +0 -1
- package/dist/agent/tools/ai-generation.d.ts +0 -13
- package/dist/agent/tools/ai-generation.d.ts.map +0 -1
- package/dist/agent/tools/ai-generation.js +0 -973
- package/dist/agent/tools/ai-generation.js.map +0 -1
- package/dist/agent/tools/ai-pipeline.d.ts +0 -14
- package/dist/agent/tools/ai-pipeline.d.ts.map +0 -1
- package/dist/agent/tools/ai-pipeline.js +0 -961
- package/dist/agent/tools/ai-pipeline.js.map +0 -1
- package/dist/agent/tools/ai.d.ts +0 -13
- package/dist/agent/tools/ai.d.ts.map +0 -1
- package/dist/agent/tools/ai.js +0 -19
- package/dist/agent/tools/ai.js.map +0 -1
- package/dist/agent/tools/batch.d.ts +0 -6
- package/dist/agent/tools/batch.d.ts.map +0 -1
- package/dist/agent/tools/batch.js +0 -383
- package/dist/agent/tools/batch.js.map +0 -1
- package/dist/agent/tools/e2e.test.d.ts +0 -26
- package/dist/agent/tools/e2e.test.d.ts.map +0 -1
- package/dist/agent/tools/e2e.test.js +0 -397
- package/dist/agent/tools/e2e.test.js.map +0 -1
- package/dist/agent/tools/export.d.ts +0 -6
- package/dist/agent/tools/export.d.ts.map +0 -1
- package/dist/agent/tools/export.js +0 -171
- package/dist/agent/tools/export.js.map +0 -1
- package/dist/agent/tools/filesystem.d.ts +0 -6
- package/dist/agent/tools/filesystem.d.ts.map +0 -1
- package/dist/agent/tools/filesystem.js +0 -212
- package/dist/agent/tools/filesystem.js.map +0 -1
- package/dist/agent/tools/index.d.ts +0 -66
- package/dist/agent/tools/index.d.ts.map +0 -1
- package/dist/agent/tools/index.js +0 -123
- package/dist/agent/tools/index.js.map +0 -1
- package/dist/agent/tools/integration.test.d.ts +0 -11
- package/dist/agent/tools/integration.test.d.ts.map +0 -1
- package/dist/agent/tools/integration.test.js +0 -659
- package/dist/agent/tools/integration.test.js.map +0 -1
- package/dist/agent/tools/media.d.ts +0 -6
- package/dist/agent/tools/media.d.ts.map +0 -1
- package/dist/agent/tools/media.js +0 -616
- package/dist/agent/tools/media.js.map +0 -1
- package/dist/agent/tools/project.d.ts +0 -6
- package/dist/agent/tools/project.d.ts.map +0 -1
- package/dist/agent/tools/project.js +0 -284
- package/dist/agent/tools/project.js.map +0 -1
- package/dist/agent/tools/scene.d.ts +0 -17
- package/dist/agent/tools/scene.d.ts.map +0 -1
- package/dist/agent/tools/scene.js +0 -263
- package/dist/agent/tools/scene.js.map +0 -1
- package/dist/agent/tools/scene.test.d.ts +0 -2
- package/dist/agent/tools/scene.test.d.ts.map +0 -1
- package/dist/agent/tools/scene.test.js +0 -139
- package/dist/agent/tools/scene.test.js.map +0 -1
- package/dist/agent/tools/timeline.d.ts +0 -6
- package/dist/agent/tools/timeline.d.ts.map +0 -1
- package/dist/agent/tools/timeline.js +0 -875
- package/dist/agent/tools/timeline.js.map +0 -1
- package/dist/agent/types.d.ts +0 -59
- package/dist/agent/types.d.ts.map +0 -1
- package/dist/agent/types.js +0 -5
- package/dist/agent/types.js.map +0 -1
- package/dist/commands/_shared/scene-html-emit.d.ts +0 -120
- package/dist/commands/_shared/scene-html-emit.d.ts.map +0 -1
- package/dist/commands/_shared/scene-html-emit.js +0 -422
- package/dist/commands/_shared/scene-html-emit.js.map +0 -1
- package/dist/commands/_shared/scene-html-emit.test.d.ts +0 -2
- package/dist/commands/_shared/scene-html-emit.test.d.ts.map +0 -1
- package/dist/commands/_shared/scene-html-emit.test.js +0 -396
- package/dist/commands/_shared/scene-html-emit.test.js.map +0 -1
- package/dist/commands/_shared/scene-lint.d.ts +0 -110
- package/dist/commands/_shared/scene-lint.d.ts.map +0 -1
- package/dist/commands/_shared/scene-lint.js +0 -207
- package/dist/commands/_shared/scene-lint.js.map +0 -1
- package/dist/commands/_shared/scene-lint.test.d.ts +0 -2
- package/dist/commands/_shared/scene-lint.test.d.ts.map +0 -1
- package/dist/commands/_shared/scene-lint.test.js +0 -208
- package/dist/commands/_shared/scene-lint.test.js.map +0 -1
- package/dist/commands/_shared/scene-project.d.ts +0 -101
- package/dist/commands/_shared/scene-project.d.ts.map +0 -1
- package/dist/commands/_shared/scene-project.js +0 -281
- package/dist/commands/_shared/scene-project.js.map +0 -1
- package/dist/commands/_shared/scene-project.test.d.ts +0 -2
- package/dist/commands/_shared/scene-project.test.d.ts.map +0 -1
- package/dist/commands/_shared/scene-project.test.js +0 -203
- package/dist/commands/_shared/scene-project.test.js.map +0 -1
- package/dist/commands/_shared/scene-render.d.ts +0 -79
- package/dist/commands/_shared/scene-render.d.ts.map +0 -1
- package/dist/commands/_shared/scene-render.js +0 -138
- package/dist/commands/_shared/scene-render.js.map +0 -1
- package/dist/commands/_shared/scene-render.test.d.ts +0 -2
- package/dist/commands/_shared/scene-render.test.d.ts.map +0 -1
- package/dist/commands/_shared/scene-render.test.js +0 -145
- package/dist/commands/_shared/scene-render.test.js.map +0 -1
- package/dist/commands/_shared/segments-to-scenes.d.ts +0 -85
- package/dist/commands/_shared/segments-to-scenes.d.ts.map +0 -1
- package/dist/commands/_shared/segments-to-scenes.js +0 -202
- package/dist/commands/_shared/segments-to-scenes.js.map +0 -1
- package/dist/commands/_shared/segments-to-scenes.test.d.ts +0 -2
- package/dist/commands/_shared/segments-to-scenes.test.d.ts.map +0 -1
- package/dist/commands/_shared/segments-to-scenes.test.js +0 -219
- package/dist/commands/_shared/segments-to-scenes.test.js.map +0 -1
- package/dist/commands/_shared/tts-resolve.d.ts +0 -75
- package/dist/commands/_shared/tts-resolve.d.ts.map +0 -1
- package/dist/commands/_shared/tts-resolve.js +0 -89
- package/dist/commands/_shared/tts-resolve.js.map +0 -1
- package/dist/commands/_shared/tts-resolve.test.d.ts +0 -6
- package/dist/commands/_shared/tts-resolve.test.d.ts.map +0 -1
- package/dist/commands/_shared/tts-resolve.test.js +0 -147
- package/dist/commands/_shared/tts-resolve.test.js.map +0 -1
- package/dist/commands/agent.d.ts +0 -21
- package/dist/commands/agent.d.ts.map +0 -1
- package/dist/commands/agent.js +0 -285
- package/dist/commands/agent.js.map +0 -1
- package/dist/commands/ai-analyze.d.ts +0 -106
- package/dist/commands/ai-analyze.d.ts.map +0 -1
- package/dist/commands/ai-analyze.js +0 -320
- package/dist/commands/ai-analyze.js.map +0 -1
- package/dist/commands/ai-animated-caption.d.ts +0 -64
- package/dist/commands/ai-animated-caption.d.ts.map +0 -1
- package/dist/commands/ai-animated-caption.js +0 -272
- package/dist/commands/ai-animated-caption.js.map +0 -1
- package/dist/commands/ai-audio.d.ts +0 -98
- package/dist/commands/ai-audio.d.ts.map +0 -1
- package/dist/commands/ai-audio.js +0 -1059
- package/dist/commands/ai-audio.js.map +0 -1
- package/dist/commands/ai-broll.d.ts +0 -15
- package/dist/commands/ai-broll.d.ts.map +0 -1
- package/dist/commands/ai-broll.js +0 -421
- package/dist/commands/ai-broll.js.map +0 -1
- package/dist/commands/ai-edit-cli.d.ts +0 -14
- package/dist/commands/ai-edit-cli.d.ts.map +0 -1
- package/dist/commands/ai-edit-cli.js +0 -585
- package/dist/commands/ai-edit-cli.js.map +0 -1
- package/dist/commands/ai-edit.d.ts +0 -398
- package/dist/commands/ai-edit.d.ts.map +0 -1
- package/dist/commands/ai-edit.js +0 -1060
- package/dist/commands/ai-edit.js.map +0 -1
- package/dist/commands/ai-fill-gaps.d.ts +0 -14
- package/dist/commands/ai-fill-gaps.d.ts.map +0 -1
- package/dist/commands/ai-fill-gaps.js +0 -447
- package/dist/commands/ai-fill-gaps.js.map +0 -1
- package/dist/commands/ai-helpers.d.ts +0 -20
- package/dist/commands/ai-helpers.d.ts.map +0 -1
- package/dist/commands/ai-helpers.js +0 -59
- package/dist/commands/ai-helpers.js.map +0 -1
- package/dist/commands/ai-highlights.d.ts +0 -127
- package/dist/commands/ai-highlights.d.ts.map +0 -1
- package/dist/commands/ai-highlights.js +0 -1053
- package/dist/commands/ai-highlights.js.map +0 -1
- package/dist/commands/ai-image.d.ts +0 -76
- package/dist/commands/ai-image.d.ts.map +0 -1
- package/dist/commands/ai-image.js +0 -858
- package/dist/commands/ai-image.js.map +0 -1
- package/dist/commands/ai-motion.d.ts +0 -50
- package/dist/commands/ai-motion.d.ts.map +0 -1
- package/dist/commands/ai-motion.js +0 -297
- package/dist/commands/ai-motion.js.map +0 -1
- package/dist/commands/ai-narrate.d.ts +0 -66
- package/dist/commands/ai-narrate.d.ts.map +0 -1
- package/dist/commands/ai-narrate.js +0 -332
- package/dist/commands/ai-narrate.js.map +0 -1
- package/dist/commands/ai-review.d.ts +0 -57
- package/dist/commands/ai-review.d.ts.map +0 -1
- package/dist/commands/ai-review.js +0 -270
- package/dist/commands/ai-review.js.map +0 -1
- package/dist/commands/ai-script-pipeline-cli.d.ts +0 -9
- package/dist/commands/ai-script-pipeline-cli.d.ts.map +0 -1
- package/dist/commands/ai-script-pipeline-cli.js +0 -502
- package/dist/commands/ai-script-pipeline-cli.js.map +0 -1
- package/dist/commands/ai-script-pipeline.d.ts +0 -305
- package/dist/commands/ai-script-pipeline.d.ts.map +0 -1
- package/dist/commands/ai-script-pipeline.js +0 -1546
- package/dist/commands/ai-script-pipeline.js.map +0 -1
- package/dist/commands/ai-suggest-edit.d.ts +0 -14
- package/dist/commands/ai-suggest-edit.d.ts.map +0 -1
- package/dist/commands/ai-suggest-edit.js +0 -215
- package/dist/commands/ai-suggest-edit.js.map +0 -1
- package/dist/commands/ai-video-fx.d.ts +0 -14
- package/dist/commands/ai-video-fx.d.ts.map +0 -1
- package/dist/commands/ai-video-fx.js +0 -396
- package/dist/commands/ai-video-fx.js.map +0 -1
- package/dist/commands/ai-video.d.ts +0 -91
- package/dist/commands/ai-video.d.ts.map +0 -1
- package/dist/commands/ai-video.js +0 -1055
- package/dist/commands/ai-video.js.map +0 -1
- package/dist/commands/ai-viral.d.ts +0 -15
- package/dist/commands/ai-viral.d.ts.map +0 -1
- package/dist/commands/ai-viral.js +0 -507
- package/dist/commands/ai-viral.js.map +0 -1
- package/dist/commands/ai-visual-fx.d.ts +0 -14
- package/dist/commands/ai-visual-fx.d.ts.map +0 -1
- package/dist/commands/ai-visual-fx.js +0 -521
- package/dist/commands/ai-visual-fx.js.map +0 -1
- package/dist/commands/ai.d.ts +0 -38
- package/dist/commands/ai.d.ts.map +0 -1
- package/dist/commands/ai.js +0 -225
- package/dist/commands/ai.js.map +0 -1
- package/dist/commands/ai.test.d.ts +0 -2
- package/dist/commands/ai.test.d.ts.map +0 -1
- package/dist/commands/ai.test.js +0 -557
- package/dist/commands/ai.test.js.map +0 -1
- package/dist/commands/analyze.d.ts +0 -16
- package/dist/commands/analyze.d.ts.map +0 -1
- package/dist/commands/analyze.js +0 -247
- package/dist/commands/analyze.js.map +0 -1
- package/dist/commands/audio.d.ts +0 -18
- package/dist/commands/audio.d.ts.map +0 -1
- package/dist/commands/audio.js +0 -539
- package/dist/commands/audio.js.map +0 -1
- package/dist/commands/batch.d.ts +0 -3
- package/dist/commands/batch.d.ts.map +0 -1
- package/dist/commands/batch.js +0 -419
- package/dist/commands/batch.js.map +0 -1
- package/dist/commands/batch.test.d.ts +0 -2
- package/dist/commands/batch.test.d.ts.map +0 -1
- package/dist/commands/batch.test.js +0 -203
- package/dist/commands/batch.test.js.map +0 -1
- package/dist/commands/context.d.ts +0 -7
- package/dist/commands/context.d.ts.map +0 -1
- package/dist/commands/context.js +0 -66
- package/dist/commands/context.js.map +0 -1
- package/dist/commands/demo.d.ts +0 -7
- package/dist/commands/demo.d.ts.map +0 -1
- package/dist/commands/demo.js +0 -192
- package/dist/commands/demo.js.map +0 -1
- package/dist/commands/detect.d.ts +0 -56
- package/dist/commands/detect.d.ts.map +0 -1
- package/dist/commands/detect.js +0 -464
- package/dist/commands/detect.js.map +0 -1
- package/dist/commands/doctor.d.ts +0 -6
- package/dist/commands/doctor.d.ts.map +0 -1
- package/dist/commands/doctor.js +0 -322
- package/dist/commands/doctor.js.map +0 -1
- package/dist/commands/edit-cmd.d.ts +0 -112
- package/dist/commands/edit-cmd.d.ts.map +0 -1
- package/dist/commands/edit-cmd.js +0 -1041
- package/dist/commands/edit-cmd.js.map +0 -1
- package/dist/commands/export.d.ts +0 -61
- package/dist/commands/export.d.ts.map +0 -1
- package/dist/commands/export.js +0 -980
- package/dist/commands/export.js.map +0 -1
- package/dist/commands/export.test.d.ts +0 -2
- package/dist/commands/export.test.d.ts.map +0 -1
- package/dist/commands/export.test.js +0 -107
- package/dist/commands/export.test.js.map +0 -1
- package/dist/commands/generate.d.ts +0 -84
- package/dist/commands/generate.d.ts.map +0 -1
- package/dist/commands/generate.js +0 -2030
- package/dist/commands/generate.js.map +0 -1
- package/dist/commands/media.d.ts +0 -3
- package/dist/commands/media.d.ts.map +0 -1
- package/dist/commands/media.js +0 -163
- package/dist/commands/media.js.map +0 -1
- package/dist/commands/output.d.ts +0 -51
- package/dist/commands/output.d.ts.map +0 -1
- package/dist/commands/output.js +0 -219
- package/dist/commands/output.js.map +0 -1
- package/dist/commands/output.test.d.ts +0 -2
- package/dist/commands/output.test.d.ts.map +0 -1
- package/dist/commands/output.test.js +0 -151
- package/dist/commands/output.test.js.map +0 -1
- package/dist/commands/pipeline.d.ts +0 -19
- package/dist/commands/pipeline.d.ts.map +0 -1
- package/dist/commands/pipeline.js +0 -345
- package/dist/commands/pipeline.js.map +0 -1
- package/dist/commands/project.d.ts +0 -3
- package/dist/commands/project.d.ts.map +0 -1
- package/dist/commands/project.js +0 -181
- package/dist/commands/project.js.map +0 -1
- package/dist/commands/project.test.d.ts +0 -2
- package/dist/commands/project.test.d.ts.map +0 -1
- package/dist/commands/project.test.js +0 -105
- package/dist/commands/project.test.js.map +0 -1
- package/dist/commands/run.d.ts +0 -15
- package/dist/commands/run.d.ts.map +0 -1
- package/dist/commands/run.js +0 -204
- package/dist/commands/run.js.map +0 -1
- package/dist/commands/sanitize.d.ts +0 -21
- package/dist/commands/sanitize.d.ts.map +0 -1
- package/dist/commands/sanitize.js +0 -56
- package/dist/commands/sanitize.js.map +0 -1
- package/dist/commands/scene.d.ts +0 -86
- package/dist/commands/scene.d.ts.map +0 -1
- package/dist/commands/scene.js +0 -719
- package/dist/commands/scene.js.map +0 -1
- package/dist/commands/scene.test.d.ts +0 -2
- package/dist/commands/scene.test.d.ts.map +0 -1
- package/dist/commands/scene.test.js +0 -219
- package/dist/commands/scene.test.js.map +0 -1
- package/dist/commands/schema.d.ts +0 -13
- package/dist/commands/schema.d.ts.map +0 -1
- package/dist/commands/schema.js +0 -218
- package/dist/commands/schema.js.map +0 -1
- package/dist/commands/setup.d.ts +0 -6
- package/dist/commands/setup.d.ts.map +0 -1
- package/dist/commands/setup.js +0 -461
- package/dist/commands/setup.js.map +0 -1
- package/dist/commands/timeline.d.ts +0 -3
- package/dist/commands/timeline.d.ts.map +0 -1
- package/dist/commands/timeline.js +0 -609
- package/dist/commands/timeline.js.map +0 -1
- package/dist/commands/timeline.test.d.ts +0 -2
- package/dist/commands/timeline.test.d.ts.map +0 -1
- package/dist/commands/timeline.test.js +0 -334
- package/dist/commands/timeline.test.js.map +0 -1
- package/dist/commands/validate.d.ts +0 -34
- package/dist/commands/validate.d.ts.map +0 -1
- package/dist/commands/validate.js +0 -70
- package/dist/commands/validate.js.map +0 -1
- package/dist/config/config.test.d.ts +0 -2
- package/dist/config/config.test.d.ts.map +0 -1
- package/dist/config/config.test.js +0 -164
- package/dist/config/config.test.js.map +0 -1
- package/dist/config/index.d.ts +0 -35
- package/dist/config/index.d.ts.map +0 -1
- package/dist/config/index.js +0 -101
- package/dist/config/index.js.map +0 -1
- package/dist/config/schema.d.ts +0 -52
- package/dist/config/schema.d.ts.map +0 -1
- package/dist/config/schema.js +0 -44
- package/dist/config/schema.js.map +0 -1
- package/dist/engine/index.d.ts +0 -3
- package/dist/engine/index.d.ts.map +0 -1
- package/dist/engine/index.js +0 -2
- package/dist/engine/index.js.map +0 -1
- package/dist/engine/project.d.ts +0 -84
- package/dist/engine/project.d.ts.map +0 -1
- package/dist/engine/project.js +0 -355
- package/dist/engine/project.js.map +0 -1
- package/dist/engine/project.test.d.ts +0 -2
- package/dist/engine/project.test.d.ts.map +0 -1
- package/dist/engine/project.test.js +0 -599
- package/dist/engine/project.test.js.map +0 -1
- package/dist/index.d.ts +0 -7
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/pipeline/executor.d.ts +0 -19
- package/dist/pipeline/executor.d.ts.map +0 -1
- package/dist/pipeline/executor.js +0 -397
- package/dist/pipeline/executor.js.map +0 -1
- package/dist/pipeline/index.d.ts +0 -4
- package/dist/pipeline/index.d.ts.map +0 -1
- package/dist/pipeline/index.js +0 -2
- package/dist/pipeline/index.js.map +0 -1
- package/dist/pipeline/renderers/__tests__/html-template.test.d.ts +0 -2
- package/dist/pipeline/renderers/__tests__/html-template.test.d.ts.map +0 -1
- package/dist/pipeline/renderers/__tests__/html-template.test.js +0 -170
- package/dist/pipeline/renderers/__tests__/html-template.test.js.map +0 -1
- package/dist/pipeline/renderers/__tests__/integration.test.d.ts +0 -2
- package/dist/pipeline/renderers/__tests__/integration.test.d.ts.map +0 -1
- package/dist/pipeline/renderers/__tests__/integration.test.js +0 -175
- package/dist/pipeline/renderers/__tests__/integration.test.js.map +0 -1
- package/dist/pipeline/renderers/chrome.d.ts +0 -26
- package/dist/pipeline/renderers/chrome.d.ts.map +0 -1
- package/dist/pipeline/renderers/chrome.js +0 -48
- package/dist/pipeline/renderers/chrome.js.map +0 -1
- package/dist/pipeline/renderers/html-clips.d.ts +0 -20
- package/dist/pipeline/renderers/html-clips.d.ts.map +0 -1
- package/dist/pipeline/renderers/html-clips.js +0 -50
- package/dist/pipeline/renderers/html-clips.js.map +0 -1
- package/dist/pipeline/renderers/html-runtime.d.ts +0 -7
- package/dist/pipeline/renderers/html-runtime.d.ts.map +0 -1
- package/dist/pipeline/renderers/html-runtime.js +0 -80
- package/dist/pipeline/renderers/html-runtime.js.map +0 -1
- package/dist/pipeline/renderers/html-template.d.ts +0 -3
- package/dist/pipeline/renderers/html-template.d.ts.map +0 -1
- package/dist/pipeline/renderers/html-template.js +0 -36
- package/dist/pipeline/renderers/html-template.js.map +0 -1
- package/dist/pipeline/renderers/hyperframes.d.ts +0 -8
- package/dist/pipeline/renderers/hyperframes.d.ts.map +0 -1
- package/dist/pipeline/renderers/hyperframes.js +0 -63
- package/dist/pipeline/renderers/hyperframes.js.map +0 -1
- package/dist/pipeline/renderers/project-builder.d.ts +0 -8
- package/dist/pipeline/renderers/project-builder.d.ts.map +0 -1
- package/dist/pipeline/renderers/project-builder.js +0 -65
- package/dist/pipeline/renderers/project-builder.js.map +0 -1
- package/dist/pipeline/renderers/types.d.ts +0 -41
- package/dist/pipeline/renderers/types.d.ts.map +0 -1
- package/dist/pipeline/renderers/types.js +0 -11
- package/dist/pipeline/renderers/types.js.map +0 -1
- package/dist/pipeline/resolver.d.ts +0 -20
- package/dist/pipeline/resolver.d.ts.map +0 -1
- package/dist/pipeline/resolver.js +0 -74
- package/dist/pipeline/resolver.js.map +0 -1
- package/dist/pipeline/types.d.ts +0 -82
- package/dist/pipeline/types.d.ts.map +0 -1
- package/dist/pipeline/types.js +0 -8
- package/dist/pipeline/types.js.map +0 -1
- package/dist/utils/api-key.d.ts +0 -33
- package/dist/utils/api-key.d.ts.map +0 -1
- package/dist/utils/api-key.js +0 -228
- package/dist/utils/api-key.js.map +0 -1
- package/dist/utils/api-key.test.d.ts +0 -2
- package/dist/utils/api-key.test.d.ts.map +0 -1
- package/dist/utils/api-key.test.js +0 -35
- package/dist/utils/api-key.test.js.map +0 -1
- package/dist/utils/audio.d.ts +0 -23
- package/dist/utils/audio.d.ts.map +0 -1
- package/dist/utils/audio.js +0 -79
- package/dist/utils/audio.js.map +0 -1
- package/dist/utils/exec-safe.d.ts +0 -22
- package/dist/utils/exec-safe.d.ts.map +0 -1
- package/dist/utils/exec-safe.js +0 -62
- package/dist/utils/exec-safe.js.map +0 -1
- package/dist/utils/first-run.d.ts +0 -17
- package/dist/utils/first-run.d.ts.map +0 -1
- package/dist/utils/first-run.js +0 -73
- package/dist/utils/first-run.js.map +0 -1
- package/dist/utils/input-validation.d.ts +0 -27
- package/dist/utils/input-validation.d.ts.map +0 -1
- package/dist/utils/input-validation.js +0 -67
- package/dist/utils/input-validation.js.map +0 -1
- package/dist/utils/provider-resolver.d.ts +0 -19
- package/dist/utils/provider-resolver.d.ts.map +0 -1
- package/dist/utils/provider-resolver.js +0 -75
- package/dist/utils/provider-resolver.js.map +0 -1
- package/dist/utils/remotion.d.ts +0 -231
- package/dist/utils/remotion.d.ts.map +0 -1
- package/dist/utils/remotion.js +0 -879
- package/dist/utils/remotion.js.map +0 -1
- package/dist/utils/subtitle.d.ts +0 -65
- package/dist/utils/subtitle.d.ts.map +0 -1
- package/dist/utils/subtitle.js +0 -135
- package/dist/utils/subtitle.js.map +0 -1
- package/dist/utils/subtitle.test.d.ts +0 -2
- package/dist/utils/subtitle.test.d.ts.map +0 -1
- package/dist/utils/subtitle.test.js +0 -175
- package/dist/utils/subtitle.test.js.map +0 -1
- package/dist/utils/tty.d.ts +0 -45
- package/dist/utils/tty.d.ts.map +0 -1
- package/dist/utils/tty.js +0 -231
- package/dist/utils/tty.js.map +0 -1
|
@@ -1,219 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from "vitest";
|
|
2
|
-
import { mkdtemp, mkdir, readFile, writeFile, access } from "node:fs/promises";
|
|
3
|
-
import { tmpdir } from "node:os";
|
|
4
|
-
import { join, resolve } from "node:path";
|
|
5
|
-
import { executeSegmentsToScenes, sceneIdFromIndex, zeroPad, } from "./segments-to-scenes.js";
|
|
6
|
-
async function pathExists(p) {
|
|
7
|
-
try {
|
|
8
|
-
await access(p);
|
|
9
|
-
return true;
|
|
10
|
-
}
|
|
11
|
-
catch {
|
|
12
|
-
return false;
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
async function makeTmp(label = "vibe-s2s-") {
|
|
16
|
-
return mkdtemp(join(tmpdir(), label));
|
|
17
|
-
}
|
|
18
|
-
/** Build a synthetic storyboard fixture without invoking Claude / OpenAI. */
|
|
19
|
-
function buildSegments(specs) {
|
|
20
|
-
let startTime = 0;
|
|
21
|
-
return specs.map((spec, i) => {
|
|
22
|
-
const seg = {
|
|
23
|
-
index: i + 1,
|
|
24
|
-
description: spec.description,
|
|
25
|
-
visuals: spec.description,
|
|
26
|
-
narration: spec.narration,
|
|
27
|
-
duration: spec.duration,
|
|
28
|
-
startTime,
|
|
29
|
-
};
|
|
30
|
-
startTime += spec.duration;
|
|
31
|
-
return seg;
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
/** Fake narration mp3 file (just bytes — duration parsing is bypassed in this path). */
|
|
35
|
-
async function writeFakeAsset(absPath, payload = "fake") {
|
|
36
|
-
await mkdir(resolve(absPath, ".."), { recursive: true });
|
|
37
|
-
await writeFile(absPath, payload, "utf-8");
|
|
38
|
-
return absPath;
|
|
39
|
-
}
|
|
40
|
-
// ── pure helpers ────────────────────────────────────────────────────────────
|
|
41
|
-
describe("zeroPad", () => {
|
|
42
|
-
it.each([
|
|
43
|
-
[1, 2, "01"],
|
|
44
|
-
[12, 2, "12"],
|
|
45
|
-
[3, 3, "003"],
|
|
46
|
-
[100, 2, "100"],
|
|
47
|
-
])("zeroPad(%d, %d) → %j", (n, w, expected) => {
|
|
48
|
-
expect(zeroPad(n, w)).toBe(expected);
|
|
49
|
-
});
|
|
50
|
-
});
|
|
51
|
-
describe("sceneIdFromIndex", () => {
|
|
52
|
-
it("produces canonical scene-NN ids", () => {
|
|
53
|
-
expect(sceneIdFromIndex(1)).toBe("scene-01");
|
|
54
|
-
expect(sceneIdFromIndex(7)).toBe("scene-07");
|
|
55
|
-
expect(sceneIdFromIndex(42)).toBe("scene-42");
|
|
56
|
-
});
|
|
57
|
-
});
|
|
58
|
-
// ── executeSegmentsToScenes — full happy path ───────────────────────────────
|
|
59
|
-
describe("executeSegmentsToScenes", () => {
|
|
60
|
-
it("scaffolds a scene project, emits one composition per segment, and stitches the root", async () => {
|
|
61
|
-
const dir = await makeTmp();
|
|
62
|
-
const segments = buildSegments([
|
|
63
|
-
{ description: "Welcome to VibeFrame.", narration: "VibeFrame turns scripts into video.", duration: 4 },
|
|
64
|
-
{ description: "Edit scenes as code.", narration: "Each scene is an HTML file.", duration: 3 },
|
|
65
|
-
]);
|
|
66
|
-
// Pre-write the assets where the existing pipeline puts them: flat under
|
|
67
|
-
// outputDir as narration-NN.mp3 / scene-NN.png. executeSegmentsToScenes
|
|
68
|
-
// is responsible for relocating them into assets/.
|
|
69
|
-
const narrationA = await writeFakeAsset(resolve(dir, "narration-1.mp3"));
|
|
70
|
-
const narrationB = await writeFakeAsset(resolve(dir, "narration-2.mp3"));
|
|
71
|
-
const imageA = await writeFakeAsset(resolve(dir, "scene-1.png"));
|
|
72
|
-
const imageB = await writeFakeAsset(resolve(dir, "scene-2.png"));
|
|
73
|
-
const narrationEntries = [
|
|
74
|
-
{ path: narrationA, duration: 4, segmentIndex: 0, failed: false },
|
|
75
|
-
{ path: narrationB, duration: 3, segmentIndex: 1, failed: false },
|
|
76
|
-
];
|
|
77
|
-
const result = await executeSegmentsToScenes({
|
|
78
|
-
segments,
|
|
79
|
-
narrationEntries,
|
|
80
|
-
imagePaths: [imageA, imageB],
|
|
81
|
-
outputDir: dir,
|
|
82
|
-
aspectRatio: "16:9",
|
|
83
|
-
scenePreset: "explainer",
|
|
84
|
-
});
|
|
85
|
-
expect(result.success).toBe(true);
|
|
86
|
-
expect(result.scenesEmitted).toBe(2);
|
|
87
|
-
expect(result.scenePaths).toEqual([
|
|
88
|
-
"compositions/scene-01.html",
|
|
89
|
-
"compositions/scene-02.html",
|
|
90
|
-
]);
|
|
91
|
-
expect(result.missingNarration).toEqual([]);
|
|
92
|
-
expect(result.missingImage).toEqual([]);
|
|
93
|
-
// Project layout
|
|
94
|
-
expect(await pathExists(resolve(dir, "index.html"))).toBe(true);
|
|
95
|
-
expect(await pathExists(resolve(dir, "vibe.project.yaml"))).toBe(true);
|
|
96
|
-
expect(await pathExists(resolve(dir, "hyperframes.json"))).toBe(true);
|
|
97
|
-
expect(await pathExists(resolve(dir, "compositions/scene-01.html"))).toBe(true);
|
|
98
|
-
expect(await pathExists(resolve(dir, "compositions/scene-02.html"))).toBe(true);
|
|
99
|
-
// Assets relocated
|
|
100
|
-
expect(await pathExists(resolve(dir, "assets/narration-01.mp3"))).toBe(true);
|
|
101
|
-
expect(await pathExists(resolve(dir, "assets/narration-02.mp3"))).toBe(true);
|
|
102
|
-
expect(await pathExists(resolve(dir, "assets/scene-01.png"))).toBe(true);
|
|
103
|
-
expect(await pathExists(resolve(dir, "assets/scene-02.png"))).toBe(true);
|
|
104
|
-
// Originals moved out
|
|
105
|
-
expect(await pathExists(narrationA)).toBe(false);
|
|
106
|
-
expect(await pathExists(imageA)).toBe(false);
|
|
107
|
-
// Scene HTML carries the relocated asset paths + narration text as subhead
|
|
108
|
-
const scene1 = await readFile(resolve(dir, "compositions/scene-01.html"), "utf-8");
|
|
109
|
-
expect(scene1).toContain('src="assets/narration-01.mp3"');
|
|
110
|
-
expect(scene1).toContain('background-image: url("assets/scene-01.png")');
|
|
111
|
-
expect(scene1).toContain("VibeFrame turns scripts into video.");
|
|
112
|
-
// Root has both clip refs at start=0 and start=4 with grown duration.
|
|
113
|
-
const root = await readFile(resolve(dir, "index.html"), "utf-8");
|
|
114
|
-
expect(root).toContain('data-composition-src="compositions/scene-01.html"');
|
|
115
|
-
expect(root).toContain('data-composition-src="compositions/scene-02.html"');
|
|
116
|
-
expect(root).toMatch(/data-composition-id="scene-01"\s+data-composition-src="compositions\/scene-01\.html"\s+data-start="0"\s+data-duration="4"/);
|
|
117
|
-
expect(root).toMatch(/data-composition-id="scene-02"\s+data-composition-src="compositions\/scene-02\.html"\s+data-start="4"\s+data-duration="3"/);
|
|
118
|
-
expect(root).toContain('data-duration="7"'); // root grew to fit total 7s
|
|
119
|
-
});
|
|
120
|
-
it("reports missingNarration / missingImage for failed-asset segments without failing overall", async () => {
|
|
121
|
-
const dir = await makeTmp();
|
|
122
|
-
const segments = buildSegments([
|
|
123
|
-
{ description: "Has assets.", duration: 2 },
|
|
124
|
-
{ description: "No assets.", duration: 3 },
|
|
125
|
-
]);
|
|
126
|
-
const narration1 = await writeFakeAsset(resolve(dir, "narration-1.mp3"));
|
|
127
|
-
const image1 = await writeFakeAsset(resolve(dir, "scene-1.png"));
|
|
128
|
-
const narrationEntries = [
|
|
129
|
-
{ path: narration1, duration: 2, segmentIndex: 0, failed: false },
|
|
130
|
-
// Segment 2: failed narration entry
|
|
131
|
-
{ path: null, duration: 3, segmentIndex: 1, failed: true, error: "rate limit" },
|
|
132
|
-
];
|
|
133
|
-
const result = await executeSegmentsToScenes({
|
|
134
|
-
segments,
|
|
135
|
-
narrationEntries,
|
|
136
|
-
imagePaths: [image1, ""], // Segment 2 image gen failed → empty string
|
|
137
|
-
outputDir: dir,
|
|
138
|
-
});
|
|
139
|
-
expect(result.success).toBe(true);
|
|
140
|
-
expect(result.scenesEmitted).toBe(2);
|
|
141
|
-
expect(result.missingNarration).toEqual([2]);
|
|
142
|
-
expect(result.missingImage).toEqual([2]);
|
|
143
|
-
const scene2 = await readFile(resolve(dir, "compositions/scene-02.html"), "utf-8");
|
|
144
|
-
expect(scene2).not.toContain("<audio");
|
|
145
|
-
expect(scene2).not.toContain("background-image: url(");
|
|
146
|
-
});
|
|
147
|
-
it("aspect ratio drives scene + root canvas dims", async () => {
|
|
148
|
-
const dir = await makeTmp();
|
|
149
|
-
const segments = buildSegments([{ description: "Vertical hook.", duration: 5 }]);
|
|
150
|
-
const result = await executeSegmentsToScenes({
|
|
151
|
-
segments,
|
|
152
|
-
outputDir: dir,
|
|
153
|
-
aspectRatio: "9:16",
|
|
154
|
-
});
|
|
155
|
-
expect(result.success).toBe(true);
|
|
156
|
-
const scene = await readFile(resolve(dir, "compositions/scene-01.html"), "utf-8");
|
|
157
|
-
expect(scene).toContain('data-width="1080"');
|
|
158
|
-
expect(scene).toContain('data-height="1920"');
|
|
159
|
-
const root = await readFile(resolve(dir, "index.html"), "utf-8");
|
|
160
|
-
expect(root).toContain('data-width="1080"');
|
|
161
|
-
expect(root).toContain('data-height="1920"');
|
|
162
|
-
});
|
|
163
|
-
it("the emitted project passes runProjectLint with zero errors (lint result attached)", async () => {
|
|
164
|
-
const dir = await makeTmp();
|
|
165
|
-
const segments = buildSegments([
|
|
166
|
-
{ description: "Intro", narration: "Hello", duration: 3 },
|
|
167
|
-
{ description: "Outro", narration: "Bye", duration: 2 },
|
|
168
|
-
]);
|
|
169
|
-
const result = await executeSegmentsToScenes({
|
|
170
|
-
segments,
|
|
171
|
-
outputDir: dir,
|
|
172
|
-
});
|
|
173
|
-
expect(result.success).toBe(true);
|
|
174
|
-
expect(result.lintResult).toBeDefined();
|
|
175
|
-
expect(result.lintResult.errorCount).toBe(0);
|
|
176
|
-
expect(result.lintResult.ok).toBe(true);
|
|
177
|
-
});
|
|
178
|
-
it("rejects an empty segment list", async () => {
|
|
179
|
-
const dir = await makeTmp();
|
|
180
|
-
const result = await executeSegmentsToScenes({ segments: [], outputDir: dir });
|
|
181
|
-
expect(result.success).toBe(false);
|
|
182
|
-
expect(result.error).toMatch(/No storyboard segments/);
|
|
183
|
-
});
|
|
184
|
-
it("respects scenePreset by emitting preset-specific markup", async () => {
|
|
185
|
-
const dir = await makeTmp();
|
|
186
|
-
const segments = buildSegments([{ description: "Big drop.", duration: 4 }]);
|
|
187
|
-
const result = await executeSegmentsToScenes({
|
|
188
|
-
segments,
|
|
189
|
-
outputDir: dir,
|
|
190
|
-
scenePreset: "kinetic-type",
|
|
191
|
-
});
|
|
192
|
-
expect(result.success).toBe(true);
|
|
193
|
-
const scene = await readFile(resolve(dir, "compositions/scene-01.html"), "utf-8");
|
|
194
|
-
// kinetic-type emits one span per word — "Big drop" → 2 spans
|
|
195
|
-
expect(scene).toContain('id="w-0"');
|
|
196
|
-
expect(scene).toContain('id="w-1"');
|
|
197
|
-
});
|
|
198
|
-
it("is idempotent on re-run with assets already in place", async () => {
|
|
199
|
-
const dir = await makeTmp();
|
|
200
|
-
const segments = buildSegments([{ description: "Hi.", narration: "Hi.", duration: 3 }]);
|
|
201
|
-
const narration = await writeFakeAsset(resolve(dir, "narration-1.mp3"));
|
|
202
|
-
const first = await executeSegmentsToScenes({
|
|
203
|
-
segments,
|
|
204
|
-
narrationEntries: [{ path: narration, duration: 3, segmentIndex: 0, failed: false }],
|
|
205
|
-
outputDir: dir,
|
|
206
|
-
});
|
|
207
|
-
expect(first.success).toBe(true);
|
|
208
|
-
// Re-run: narration is already in assets/, original is gone — function
|
|
209
|
-
// should silently no-op the move + re-emit the scene.
|
|
210
|
-
const second = await executeSegmentsToScenes({
|
|
211
|
-
segments,
|
|
212
|
-
narrationEntries: [{ path: resolve(dir, "assets/narration-01.mp3"), duration: 3, segmentIndex: 0, failed: false }],
|
|
213
|
-
outputDir: dir,
|
|
214
|
-
});
|
|
215
|
-
expect(second.success).toBe(true);
|
|
216
|
-
expect(second.missingNarration).toEqual([]);
|
|
217
|
-
});
|
|
218
|
-
});
|
|
219
|
-
//# sourceMappingURL=segments-to-scenes.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"segments-to-scenes.test.js","sourceRoot":"","sources":["../../../src/commands/_shared/segments-to-scenes.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module _shared/tts-resolve
|
|
3
|
-
*
|
|
4
|
-
* One-stop factory for picking a TTS provider at runtime. Used by every
|
|
5
|
-
* scene-authoring path that turns text into narration audio (currently
|
|
6
|
-
* `executeSceneAdd`; `script-to-video --format scenes` follows in C5+).
|
|
7
|
-
*
|
|
8
|
-
* Routes between:
|
|
9
|
-
* - **ElevenLabs** — cloud, API-key gated, paid (~$0.02/scene). Default
|
|
10
|
-
* when `ELEVENLABS_API_KEY` is set.
|
|
11
|
-
* - **Kokoro** — local Apache 2.0 model, free, ~330MB first-call download.
|
|
12
|
-
* The fallback for key-less users.
|
|
13
|
-
*
|
|
14
|
-
* The router exposes a uniform `TtsCallable` shape so call sites don't have
|
|
15
|
-
* to branch on provider id. Both providers already return the same
|
|
16
|
-
* `{ success, audioBuffer, error?, characterCount? }` result.
|
|
17
|
-
*/
|
|
18
|
-
import type { KokoroLoadEvent } from "@vibeframe/ai-providers";
|
|
19
|
-
/** TTS providers VibeFrame can route to. `"auto"` picks based on key availability. */
|
|
20
|
-
export type TtsProviderName = "auto" | "elevenlabs" | "kokoro";
|
|
21
|
-
/** Concrete provider id surfaced in result metadata. Never `"auto"`. */
|
|
22
|
-
export type ResolvedTtsProvider = "elevenlabs" | "kokoro";
|
|
23
|
-
/** Options accepted by every {@link TtsCallable}. Subset of provider-specific options. */
|
|
24
|
-
export interface TtsCallOptions {
|
|
25
|
-
/**
|
|
26
|
-
* Provider-specific voice id. ElevenLabs takes voice names/ids
|
|
27
|
-
* (`"rachel"`, `"21m00Tcm..."`); Kokoro takes voice ids (`"af_heart"`,
|
|
28
|
-
* `"am_michael"`). The router does not map between the two.
|
|
29
|
-
*/
|
|
30
|
-
voice?: string;
|
|
31
|
-
/** Speaking speed multiplier (Kokoro: 0.5–2; ElevenLabs: 0.7–1.2). */
|
|
32
|
-
speed?: number;
|
|
33
|
-
/** Cold-start progress callback (Kokoro only — fires on first ~330MB load). */
|
|
34
|
-
onProgress?: (event: KokoroLoadEvent) => void;
|
|
35
|
-
}
|
|
36
|
-
/** Result of a TTS call. Same shape both providers already return. */
|
|
37
|
-
export interface TtsCallResult {
|
|
38
|
-
success: boolean;
|
|
39
|
-
audioBuffer?: Buffer;
|
|
40
|
-
error?: string;
|
|
41
|
-
characterCount?: number;
|
|
42
|
-
}
|
|
43
|
-
/** Synthesise speech from text. Provider-specific implementation lives behind this. */
|
|
44
|
-
export type TtsCallable = (text: string, options?: TtsCallOptions) => Promise<TtsCallResult>;
|
|
45
|
-
export interface TtsResolution {
|
|
46
|
-
/** Concrete provider chosen. */
|
|
47
|
-
provider: ResolvedTtsProvider;
|
|
48
|
-
/** Output container — drives the narration filename extension. */
|
|
49
|
-
audioExtension: "mp3" | "wav";
|
|
50
|
-
/** Synthesise text → audio buffer. */
|
|
51
|
-
call: TtsCallable;
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Resolve a TTS provider preference into a callable + metadata.
|
|
55
|
-
*
|
|
56
|
-
* Resolution policy:
|
|
57
|
-
* - `"elevenlabs"`: requires `ELEVENLABS_API_KEY`. Throws an `ApiKeyError`-style
|
|
58
|
-
* error via {@link getApiKey} (consumed by `requireApiKey`/`exitWithError`).
|
|
59
|
-
* - `"kokoro"`: always available (local). No key check.
|
|
60
|
-
* - `"auto"` (or `undefined`): if `ELEVENLABS_API_KEY` is set, picks
|
|
61
|
-
* ElevenLabs; otherwise falls back to Kokoro.
|
|
62
|
-
*/
|
|
63
|
-
export declare function resolveTtsProvider(preferred?: TtsProviderName): Promise<TtsResolution>;
|
|
64
|
-
/**
|
|
65
|
-
* Thrown when the caller asked for a specific provider whose key/runtime is
|
|
66
|
-
* unavailable. Carries the provider id so the caller can format a clean
|
|
67
|
-
* `usageError`/`exitWithError`.
|
|
68
|
-
*/
|
|
69
|
-
export declare class TtsKeyMissingError extends Error {
|
|
70
|
-
readonly provider: ResolvedTtsProvider;
|
|
71
|
-
constructor(provider: ResolvedTtsProvider);
|
|
72
|
-
}
|
|
73
|
-
/** Validate a free-form `--tts <value>` against {@link TtsProviderName}. */
|
|
74
|
-
export declare function parseTtsProviderName(value: string | undefined): TtsProviderName;
|
|
75
|
-
//# sourceMappingURL=tts-resolve.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tts-resolve.d.ts","sourceRoot":"","sources":["../../../src/commands/_shared/tts-resolve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAI/D,sFAAsF;AACtF,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,YAAY,GAAG,QAAQ,CAAC;AAE/D,wEAAwE;AACxE,MAAM,MAAM,mBAAmB,GAAG,YAAY,GAAG,QAAQ,CAAC;AAE1D,0FAA0F;AAC1F,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sEAAsE;IACtE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+EAA+E;IAC/E,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;CAC/C;AAED,sEAAsE;AACtE,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,uFAAuF;AACvF,MAAM,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;AAE7F,MAAM,WAAW,aAAa;IAC5B,gCAAgC;IAChC,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,kEAAkE;IAClE,cAAc,EAAE,KAAK,GAAG,KAAK,CAAC;IAC9B,sCAAsC;IACtC,IAAI,EAAE,WAAW,CAAC;CACnB;AAED;;;;;;;;;GASG;AACH,wBAAsB,kBAAkB,CACtC,SAAS,GAAE,eAAwB,GAClC,OAAO,CAAC,aAAa,CAAC,CASxB;AA+BD;;;;GAIG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;aACf,QAAQ,EAAE,mBAAmB;gBAA7B,QAAQ,EAAE,mBAAmB;CAQ1D;AAED,4EAA4E;AAC5E,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,eAAe,CAQ/E"}
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module _shared/tts-resolve
|
|
3
|
-
*
|
|
4
|
-
* One-stop factory for picking a TTS provider at runtime. Used by every
|
|
5
|
-
* scene-authoring path that turns text into narration audio (currently
|
|
6
|
-
* `executeSceneAdd`; `script-to-video --format scenes` follows in C5+).
|
|
7
|
-
*
|
|
8
|
-
* Routes between:
|
|
9
|
-
* - **ElevenLabs** — cloud, API-key gated, paid (~$0.02/scene). Default
|
|
10
|
-
* when `ELEVENLABS_API_KEY` is set.
|
|
11
|
-
* - **Kokoro** — local Apache 2.0 model, free, ~330MB first-call download.
|
|
12
|
-
* The fallback for key-less users.
|
|
13
|
-
*
|
|
14
|
-
* The router exposes a uniform `TtsCallable` shape so call sites don't have
|
|
15
|
-
* to branch on provider id. Both providers already return the same
|
|
16
|
-
* `{ success, audioBuffer, error?, characterCount? }` result.
|
|
17
|
-
*/
|
|
18
|
-
import { ElevenLabsProvider, KokoroProvider } from "@vibeframe/ai-providers";
|
|
19
|
-
import { hasApiKey } from "../../utils/api-key.js";
|
|
20
|
-
import { getApiKey } from "../../utils/api-key.js";
|
|
21
|
-
/**
|
|
22
|
-
* Resolve a TTS provider preference into a callable + metadata.
|
|
23
|
-
*
|
|
24
|
-
* Resolution policy:
|
|
25
|
-
* - `"elevenlabs"`: requires `ELEVENLABS_API_KEY`. Throws an `ApiKeyError`-style
|
|
26
|
-
* error via {@link getApiKey} (consumed by `requireApiKey`/`exitWithError`).
|
|
27
|
-
* - `"kokoro"`: always available (local). No key check.
|
|
28
|
-
* - `"auto"` (or `undefined`): if `ELEVENLABS_API_KEY` is set, picks
|
|
29
|
-
* ElevenLabs; otherwise falls back to Kokoro.
|
|
30
|
-
*/
|
|
31
|
-
export async function resolveTtsProvider(preferred = "auto") {
|
|
32
|
-
const choice = preferred === "auto"
|
|
33
|
-
? (hasApiKey("ELEVENLABS_API_KEY") ? "elevenlabs" : "kokoro")
|
|
34
|
-
: preferred;
|
|
35
|
-
if (choice === "elevenlabs") {
|
|
36
|
-
return buildElevenLabs();
|
|
37
|
-
}
|
|
38
|
-
return buildKokoro();
|
|
39
|
-
}
|
|
40
|
-
async function buildElevenLabs() {
|
|
41
|
-
const key = await getApiKey("ELEVENLABS_API_KEY", "ElevenLabs");
|
|
42
|
-
if (!key) {
|
|
43
|
-
throw new TtsKeyMissingError("elevenlabs");
|
|
44
|
-
}
|
|
45
|
-
const provider = new ElevenLabsProvider();
|
|
46
|
-
await provider.initialize({ apiKey: key });
|
|
47
|
-
const call = async (text, opts) => provider.textToSpeech(text, {
|
|
48
|
-
voiceId: opts?.voice,
|
|
49
|
-
speed: opts?.speed,
|
|
50
|
-
});
|
|
51
|
-
return { provider: "elevenlabs", audioExtension: "mp3", call };
|
|
52
|
-
}
|
|
53
|
-
async function buildKokoro() {
|
|
54
|
-
const provider = new KokoroProvider();
|
|
55
|
-
// No-op initialize — Kokoro doesn't take a config but we keep parity with
|
|
56
|
-
// the AIProvider lifecycle for future audit checks.
|
|
57
|
-
await provider.initialize({});
|
|
58
|
-
const call = async (text, opts) => provider.textToSpeech(text, {
|
|
59
|
-
voice: opts?.voice,
|
|
60
|
-
speed: opts?.speed,
|
|
61
|
-
onProgress: opts?.onProgress,
|
|
62
|
-
});
|
|
63
|
-
return { provider: "kokoro", audioExtension: "wav", call };
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Thrown when the caller asked for a specific provider whose key/runtime is
|
|
67
|
-
* unavailable. Carries the provider id so the caller can format a clean
|
|
68
|
-
* `usageError`/`exitWithError`.
|
|
69
|
-
*/
|
|
70
|
-
export class TtsKeyMissingError extends Error {
|
|
71
|
-
provider;
|
|
72
|
-
constructor(provider) {
|
|
73
|
-
super(provider === "elevenlabs"
|
|
74
|
-
? "ElevenLabs API key required (ELEVENLABS_API_KEY). Run 'vibe setup', set ELEVENLABS_API_KEY in .env, or pass --tts kokoro for local synthesis."
|
|
75
|
-
: `Provider ${provider} is unavailable.`);
|
|
76
|
-
this.provider = provider;
|
|
77
|
-
this.name = "TtsKeyMissingError";
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
/** Validate a free-form `--tts <value>` against {@link TtsProviderName}. */
|
|
81
|
-
export function parseTtsProviderName(value) {
|
|
82
|
-
if (!value)
|
|
83
|
-
return "auto";
|
|
84
|
-
if (value === "auto" || value === "elevenlabs" || value === "kokoro") {
|
|
85
|
-
return value;
|
|
86
|
-
}
|
|
87
|
-
throw new Error(`Invalid --tts: ${value}. Valid: auto, elevenlabs, kokoro.`);
|
|
88
|
-
}
|
|
89
|
-
//# sourceMappingURL=tts-resolve.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tts-resolve.js","sourceRoot":"","sources":["../../../src/commands/_shared/tts-resolve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE7E,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AA0CnD;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,YAA6B,MAAM;IAEnC,MAAM,MAAM,GAAG,SAAS,KAAK,MAAM;QACjC,CAAC,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC7D,CAAC,CAAC,SAAS,CAAC;IAEd,IAAI,MAAM,KAAK,YAAY,EAAE,CAAC;QAC5B,OAAO,eAAe,EAAE,CAAC;IAC3B,CAAC;IACD,OAAO,WAAW,EAAE,CAAC;AACvB,CAAC;AAED,KAAK,UAAU,eAAe;IAC5B,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,CAAC;IAChE,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,kBAAkB,CAAC,YAAY,CAAC,CAAC;IAC7C,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,kBAAkB,EAAE,CAAC;IAC1C,MAAM,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAgB,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAC7C,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE;QAC1B,OAAO,EAAE,IAAI,EAAE,KAAK;QACpB,KAAK,EAAE,IAAI,EAAE,KAAK;KACnB,CAAC,CAAC;IACL,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACjE,CAAC;AAED,KAAK,UAAU,WAAW;IACxB,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAE,CAAC;IACtC,0EAA0E;IAC1E,oDAAoD;IACpD,MAAM,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAC9B,MAAM,IAAI,GAAgB,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAC7C,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE;QAC1B,KAAK,EAAE,IAAI,EAAE,KAAK;QAClB,KAAK,EAAE,IAAI,EAAE,KAAK;QAClB,UAAU,EAAE,IAAI,EAAE,UAAU;KAC7B,CAAC,CAAC;IACL,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAC7D,CAAC;AAED;;;;GAIG;AACH,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IACf;IAA5B,YAA4B,QAA6B;QACvD,KAAK,CACH,QAAQ,KAAK,YAAY;YACvB,CAAC,CAAC,+IAA+I;YACjJ,CAAC,CAAC,YAAY,QAAQ,kBAAkB,CAC3C,CAAC;QALwB,aAAQ,GAAR,QAAQ,CAAqB;QAMvD,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED,4EAA4E;AAC5E,MAAM,UAAU,oBAAoB,CAAC,KAAyB;IAC5D,IAAI,CAAC,KAAK;QAAE,OAAO,MAAM,CAAC;IAC1B,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,YAAY,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;QACrE,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,IAAI,KAAK,CACb,kBAAkB,KAAK,oCAAoC,CAC5D,CAAC;AACJ,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tts-resolve.test.d.ts","sourceRoot":"","sources":["../../../src/commands/_shared/tts-resolve.test.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Unit tests for the TTS router. The actual provider classes are mocked at
|
|
3
|
-
* the module level so we can drive resolution outcomes deterministically.
|
|
4
|
-
*/
|
|
5
|
-
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
|
6
|
-
// vi.mock factories are hoisted above imports — so any references must come
|
|
7
|
-
// from vi.hoisted (which is also hoisted) rather than module-scope variables.
|
|
8
|
-
const mocks = vi.hoisted(() => {
|
|
9
|
-
return {
|
|
10
|
-
elevenLabsTextToSpeech: vi.fn(),
|
|
11
|
-
elevenLabsInitialize: vi.fn(),
|
|
12
|
-
kokoroTextToSpeech: vi.fn(),
|
|
13
|
-
kokoroInitialize: vi.fn(),
|
|
14
|
-
hasApiKey: vi.fn(),
|
|
15
|
-
getApiKey: vi.fn(),
|
|
16
|
-
};
|
|
17
|
-
});
|
|
18
|
-
vi.mock("@vibeframe/ai-providers", () => ({
|
|
19
|
-
ElevenLabsProvider: class {
|
|
20
|
-
initialize = mocks.elevenLabsInitialize;
|
|
21
|
-
textToSpeech = mocks.elevenLabsTextToSpeech;
|
|
22
|
-
},
|
|
23
|
-
KokoroProvider: class {
|
|
24
|
-
initialize = mocks.kokoroInitialize;
|
|
25
|
-
textToSpeech = mocks.kokoroTextToSpeech;
|
|
26
|
-
},
|
|
27
|
-
}));
|
|
28
|
-
vi.mock("../../utils/api-key.js", () => ({
|
|
29
|
-
hasApiKey: (...args) => mocks.hasApiKey(...args),
|
|
30
|
-
getApiKey: (...args) => mocks.getApiKey(...args),
|
|
31
|
-
}));
|
|
32
|
-
const { elevenLabsTextToSpeech, elevenLabsInitialize, kokoroTextToSpeech, kokoroInitialize, hasApiKey, getApiKey, } = mocks;
|
|
33
|
-
import { parseTtsProviderName, resolveTtsProvider, TtsKeyMissingError, } from "./tts-resolve.js";
|
|
34
|
-
describe("parseTtsProviderName", () => {
|
|
35
|
-
it("defaults to auto when undefined or empty", () => {
|
|
36
|
-
expect(parseTtsProviderName(undefined)).toBe("auto");
|
|
37
|
-
expect(parseTtsProviderName("")).toBe("auto");
|
|
38
|
-
});
|
|
39
|
-
it("accepts the three valid values", () => {
|
|
40
|
-
expect(parseTtsProviderName("auto")).toBe("auto");
|
|
41
|
-
expect(parseTtsProviderName("elevenlabs")).toBe("elevenlabs");
|
|
42
|
-
expect(parseTtsProviderName("kokoro")).toBe("kokoro");
|
|
43
|
-
});
|
|
44
|
-
it("throws for unknown providers", () => {
|
|
45
|
-
expect(() => parseTtsProviderName("openai")).toThrow(/Invalid --tts/);
|
|
46
|
-
expect(() => parseTtsProviderName("KOKORO")).toThrow(/Invalid --tts/);
|
|
47
|
-
});
|
|
48
|
-
});
|
|
49
|
-
describe("resolveTtsProvider", () => {
|
|
50
|
-
beforeEach(() => {
|
|
51
|
-
elevenLabsTextToSpeech.mockReset();
|
|
52
|
-
elevenLabsInitialize.mockReset();
|
|
53
|
-
kokoroTextToSpeech.mockReset();
|
|
54
|
-
kokoroInitialize.mockReset();
|
|
55
|
-
hasApiKey.mockReset();
|
|
56
|
-
getApiKey.mockReset();
|
|
57
|
-
});
|
|
58
|
-
afterEach(() => {
|
|
59
|
-
vi.restoreAllMocks();
|
|
60
|
-
});
|
|
61
|
-
describe("auto", () => {
|
|
62
|
-
it("picks ElevenLabs when ELEVENLABS_API_KEY is set", async () => {
|
|
63
|
-
hasApiKey.mockReturnValue(true);
|
|
64
|
-
getApiKey.mockResolvedValue("sk-test");
|
|
65
|
-
const r = await resolveTtsProvider("auto");
|
|
66
|
-
expect(r.provider).toBe("elevenlabs");
|
|
67
|
-
expect(r.audioExtension).toBe("mp3");
|
|
68
|
-
expect(hasApiKey).toHaveBeenCalledWith("ELEVENLABS_API_KEY");
|
|
69
|
-
expect(elevenLabsInitialize).toHaveBeenCalledWith({ apiKey: "sk-test" });
|
|
70
|
-
});
|
|
71
|
-
it("falls back to Kokoro when ELEVENLABS_API_KEY is unset", async () => {
|
|
72
|
-
hasApiKey.mockReturnValue(false);
|
|
73
|
-
const r = await resolveTtsProvider("auto");
|
|
74
|
-
expect(r.provider).toBe("kokoro");
|
|
75
|
-
expect(r.audioExtension).toBe("wav");
|
|
76
|
-
expect(kokoroInitialize).toHaveBeenCalled();
|
|
77
|
-
expect(getApiKey).not.toHaveBeenCalled();
|
|
78
|
-
});
|
|
79
|
-
it("treats undefined preferred the same as auto", async () => {
|
|
80
|
-
hasApiKey.mockReturnValue(false);
|
|
81
|
-
const r = await resolveTtsProvider();
|
|
82
|
-
expect(r.provider).toBe("kokoro");
|
|
83
|
-
});
|
|
84
|
-
});
|
|
85
|
-
describe("explicit elevenlabs", () => {
|
|
86
|
-
it("uses ElevenLabs when key is present", async () => {
|
|
87
|
-
getApiKey.mockResolvedValue("sk-real");
|
|
88
|
-
const r = await resolveTtsProvider("elevenlabs");
|
|
89
|
-
expect(r.provider).toBe("elevenlabs");
|
|
90
|
-
expect(elevenLabsInitialize).toHaveBeenCalledWith({ apiKey: "sk-real" });
|
|
91
|
-
});
|
|
92
|
-
it("throws TtsKeyMissingError when key is absent", async () => {
|
|
93
|
-
getApiKey.mockResolvedValue(undefined);
|
|
94
|
-
await expect(resolveTtsProvider("elevenlabs")).rejects.toBeInstanceOf(TtsKeyMissingError);
|
|
95
|
-
expect(kokoroInitialize).not.toHaveBeenCalled();
|
|
96
|
-
});
|
|
97
|
-
});
|
|
98
|
-
describe("explicit kokoro", () => {
|
|
99
|
-
it("uses Kokoro without checking any key", async () => {
|
|
100
|
-
const r = await resolveTtsProvider("kokoro");
|
|
101
|
-
expect(r.provider).toBe("kokoro");
|
|
102
|
-
expect(r.audioExtension).toBe("wav");
|
|
103
|
-
expect(kokoroInitialize).toHaveBeenCalled();
|
|
104
|
-
expect(getApiKey).not.toHaveBeenCalled();
|
|
105
|
-
expect(hasApiKey).not.toHaveBeenCalled();
|
|
106
|
-
});
|
|
107
|
-
});
|
|
108
|
-
describe("call dispatch", () => {
|
|
109
|
-
it("forwards voice + speed to ElevenLabs as voiceId/speed", async () => {
|
|
110
|
-
hasApiKey.mockReturnValue(true);
|
|
111
|
-
getApiKey.mockResolvedValue("sk-test");
|
|
112
|
-
elevenLabsTextToSpeech.mockResolvedValue({ success: true, audioBuffer: Buffer.from("x") });
|
|
113
|
-
const r = await resolveTtsProvider("elevenlabs");
|
|
114
|
-
await r.call("Hello.", { voice: "rachel", speed: 1.1 });
|
|
115
|
-
expect(elevenLabsTextToSpeech).toHaveBeenCalledWith("Hello.", {
|
|
116
|
-
voiceId: "rachel",
|
|
117
|
-
speed: 1.1,
|
|
118
|
-
});
|
|
119
|
-
});
|
|
120
|
-
it("forwards voice + speed + onProgress to Kokoro", async () => {
|
|
121
|
-
kokoroTextToSpeech.mockResolvedValue({ success: true, audioBuffer: Buffer.from("y") });
|
|
122
|
-
const r = await resolveTtsProvider("kokoro");
|
|
123
|
-
const onProgress = vi.fn();
|
|
124
|
-
await r.call("Hello.", { voice: "af_heart", speed: 1.0, onProgress });
|
|
125
|
-
expect(kokoroTextToSpeech).toHaveBeenCalledWith("Hello.", {
|
|
126
|
-
voice: "af_heart",
|
|
127
|
-
speed: 1.0,
|
|
128
|
-
onProgress,
|
|
129
|
-
});
|
|
130
|
-
});
|
|
131
|
-
});
|
|
132
|
-
});
|
|
133
|
-
describe("TtsKeyMissingError", () => {
|
|
134
|
-
it("provides actionable elevenlabs message", () => {
|
|
135
|
-
const err = new TtsKeyMissingError("elevenlabs");
|
|
136
|
-
expect(err.message).toMatch(/ELEVENLABS_API_KEY/);
|
|
137
|
-
expect(err.message).toMatch(/--tts kokoro/);
|
|
138
|
-
expect(err.provider).toBe("elevenlabs");
|
|
139
|
-
});
|
|
140
|
-
it("is identifiable via instanceof", () => {
|
|
141
|
-
const err = new TtsKeyMissingError("elevenlabs");
|
|
142
|
-
expect(err).toBeInstanceOf(TtsKeyMissingError);
|
|
143
|
-
expect(err).toBeInstanceOf(Error);
|
|
144
|
-
expect(err.name).toBe("TtsKeyMissingError");
|
|
145
|
-
});
|
|
146
|
-
});
|
|
147
|
-
//# sourceMappingURL=tts-resolve.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tts-resolve.test.js","sourceRoot":"","sources":["../../../src/commands/_shared/tts-resolve.test.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/agent.d.ts
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Agent Command - Interactive AI agent REPL
|
|
3
|
-
* Provides natural language interface with tool calling
|
|
4
|
-
*/
|
|
5
|
-
import { Command } from "commander";
|
|
6
|
-
export interface StartAgentOptions {
|
|
7
|
-
provider?: string;
|
|
8
|
-
model?: string;
|
|
9
|
-
project?: string;
|
|
10
|
-
verbose?: boolean;
|
|
11
|
-
maxTurns?: string;
|
|
12
|
-
input?: string;
|
|
13
|
-
confirm?: boolean;
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Start the AI agent
|
|
17
|
-
* @param options - Agent options
|
|
18
|
-
*/
|
|
19
|
-
export declare function startAgent(options?: StartAgentOptions): Promise<void>;
|
|
20
|
-
export declare const agentCommand: Command;
|
|
21
|
-
//# sourceMappingURL=agent.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/commands/agent.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAcpC,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AA4BD;;;GAGG;AACH,wBAAsB,UAAU,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CA0P/E;AAED,eAAO,MAAM,YAAY,SAWrB,CAAC"}
|