@heyai-rules/pilo-masterkit 1.2.2 → 3.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/.agent/agents/architect.md +211 -211
- package/.agent/agents/build-error-resolver.md +114 -114
- package/.agent/agents/chief-of-staff.md +151 -151
- package/.agent/agents/code-reviewer.md +237 -237
- package/.agent/agents/cpp-build-resolver.md +90 -90
- package/.agent/agents/cpp-reviewer.md +72 -72
- package/.agent/agents/csharp-reviewer.md +101 -0
- package/.agent/agents/dart-build-resolver.md +201 -0
- package/.agent/agents/database-reviewer.md +91 -91
- package/.agent/agents/doc-updater.md +107 -107
- package/.agent/agents/docs-lookup.md +68 -68
- package/.agent/agents/e2e-runner.md +107 -107
- package/.agent/agents/flutter-reviewer.md +243 -243
- package/.agent/agents/gan-evaluator.md +209 -0
- package/.agent/agents/gan-generator.md +131 -0
- package/.agent/agents/gan-planner.md +99 -0
- package/.agent/agents/go-build-resolver.md +94 -94
- package/.agent/agents/go-reviewer.md +76 -76
- package/.agent/agents/harness-optimizer.md +35 -35
- package/.agent/agents/healthcare-reviewer.md +83 -0
- package/.agent/agents/java-build-resolver.md +153 -153
- package/.agent/agents/java-reviewer.md +92 -92
- package/.agent/agents/kotlin-build-resolver.md +118 -118
- package/.agent/agents/kotlin-reviewer.md +159 -159
- package/.agent/agents/loop-operator.md +36 -36
- package/.agent/agents/opensource-forker.md +198 -0
- package/.agent/agents/opensource-packager.md +249 -0
- package/.agent/agents/opensource-sanitizer.md +188 -0
- package/.agent/agents/performance-optimizer.md +392 -133
- package/.agent/agents/personas/athena-agent/agent.json +10 -0
- package/.agent/agents/personas/athena-agent/athena-backend-logic-architecture-profile.md +189 -0
- package/.agent/agents/personas/athena-agent/context-files/agents.md +55 -0
- package/.agent/agents/personas/athena-agent/context-files/identity.md +23 -0
- package/.agent/agents/personas/athena-agent/context-files/soul.md +51 -0
- package/.agent/agents/personas/athena-agent/context-files/user-predefined.md +15 -0
- package/.agent/agents/personas/athena-agent/user-context-files/system/bootstrap.md +37 -0
- package/.agent/agents/personas/athena-agent/user-context-files/system/user.md +45 -0
- package/.agent/agents/personas/da-vinci-agent/agent.json +10 -0
- package/.agent/agents/personas/da-vinci-agent/context-files/agents.md +55 -0
- package/.agent/agents/personas/da-vinci-agent/context-files/identity.md +23 -0
- package/.agent/agents/personas/da-vinci-agent/context-files/soul.md +51 -0
- package/.agent/agents/personas/da-vinci-agent/context-files/user-predefined.md +15 -0
- package/.agent/agents/personas/da-vinci-agent/da-vinci-frontend-ui-ux-design-profile.md +189 -0
- package/.agent/agents/personas/da-vinci-agent/user-context-files/system/bootstrap.md +37 -0
- package/.agent/agents/personas/da-vinci-agent/user-context-files/system/user.md +45 -0
- package/.agent/agents/personas/duong-tang-agent/agent.json +10 -0
- package/.agent/agents/personas/duong-tang-agent/context-files/agents.md +55 -0
- package/.agent/agents/personas/duong-tang-agent/context-files/identity.md +23 -0
- package/.agent/agents/personas/duong-tang-agent/context-files/soul.md +51 -0
- package/.agent/agents/personas/duong-tang-agent/context-files/user-predefined.md +15 -0
- package/.agent/agents/personas/duong-tang-agent/tang-monk-quality-testing-documentation-profile.md +189 -0
- package/.agent/agents/personas/duong-tang-agent/user-context-files/system/bootstrap.md +37 -0
- package/.agent/agents/personas/duong-tang-agent/user-context-files/system/user.md +45 -0
- package/.agent/agents/personas/gia-cat-luong-agent/agent.json +10 -0
- package/.agent/agents/personas/gia-cat-luong-agent/context-files/agents.md +55 -0
- package/.agent/agents/personas/gia-cat-luong-agent/context-files/identity.md +23 -0
- package/.agent/agents/personas/gia-cat-luong-agent/context-files/soul.md +51 -0
- package/.agent/agents/personas/gia-cat-luong-agent/context-files/user-predefined.md +15 -0
- package/.agent/agents/personas/gia-cat-luong-agent/kongming-research-strategy-analysis-profile.md +189 -0
- package/.agent/agents/personas/gia-cat-luong-agent/user-context-files/system/bootstrap.md +37 -0
- package/.agent/agents/personas/gia-cat-luong-agent/user-context-files/system/user.md +45 -0
- package/.agent/agents/personas/mihata-agent/agent.json +10 -0
- package/.agent/agents/personas/mihata-agent/context-files/agents.md +55 -0
- package/.agent/agents/personas/mihata-agent/context-files/identity.md +23 -0
- package/.agent/agents/personas/mihata-agent/context-files/soul.md +51 -0
- package/.agent/agents/personas/mihata-agent/context-files/user-predefined.md +15 -0
- package/.agent/agents/personas/mihata-agent/mihata-multi-agent-orchestration-profile.md +189 -0
- package/.agent/agents/personas/mihata-agent/user-context-files/system/bootstrap.md +37 -0
- package/.agent/agents/personas/mihata-agent/user-context-files/system/user.md +45 -0
- package/.agent/agents/personas/tesla-agent/agent.json +10 -0
- package/.agent/agents/personas/tesla-agent/context-files/agents.md +55 -0
- package/.agent/agents/personas/tesla-agent/context-files/identity.md +23 -0
- package/.agent/agents/personas/tesla-agent/context-files/soul.md +51 -0
- package/.agent/agents/personas/tesla-agent/context-files/user-predefined.md +15 -0
- package/.agent/agents/personas/tesla-agent/tesla-fullstack-system-optimization-profile.md +189 -0
- package/.agent/agents/personas/tesla-agent/user-context-files/system/bootstrap.md +37 -0
- package/.agent/agents/personas/tesla-agent/user-context-files/system/user.md +45 -0
- package/.agent/agents/personas/tu-ma-y-agent/agent.json +10 -0
- package/.agent/agents/personas/tu-ma-y-agent/context-files/agents.md +55 -0
- package/.agent/agents/personas/tu-ma-y-agent/context-files/identity.md +23 -0
- package/.agent/agents/personas/tu-ma-y-agent/context-files/soul.md +51 -0
- package/.agent/agents/personas/tu-ma-y-agent/context-files/user-predefined.md +15 -0
- package/.agent/agents/personas/tu-ma-y-agent/simayi-feasibility-risk-control-profile.md +189 -0
- package/.agent/agents/personas/tu-ma-y-agent/user-context-files/system/bootstrap.md +37 -0
- package/.agent/agents/personas/tu-ma-y-agent/user-context-files/system/user.md +45 -0
- package/.agent/agents/personas/venti-agent/agent.json +10 -0
- package/.agent/agents/personas/venti-agent/context-files/agents.md +55 -0
- package/.agent/agents/personas/venti-agent/context-files/identity.md +23 -0
- package/.agent/agents/personas/venti-agent/context-files/soul.md +51 -0
- package/.agent/agents/personas/venti-agent/context-files/user-predefined.md +15 -0
- package/.agent/agents/personas/venti-agent/user-context-files/system/bootstrap.md +37 -0
- package/.agent/agents/personas/venti-agent/user-context-files/system/user.md +45 -0
- package/.agent/agents/personas/venti-agent/venti-learning-communication-mentoring-profile.md +189 -0
- package/.agent/agents/planner.md +212 -212
- package/.agent/agents/python-reviewer.md +98 -98
- package/.agent/agents/pytorch-build-resolver.md +120 -120
- package/.agent/agents/refactor-cleaner.md +85 -85
- package/.agent/agents/rust-build-resolver.md +148 -148
- package/.agent/agents/rust-reviewer.md +94 -94
- package/.agent/agents/security-reviewer.md +108 -108
- package/.agent/agents/tdd-guide.md +91 -91
- package/.agent/agents/typescript-reviewer.md +112 -112
- package/.agent/contexts/dev.md +20 -0
- package/.agent/contexts/research.md +26 -0
- package/.agent/contexts/review.md +22 -0
- package/.agent/hooks/hooks.json +395 -0
- package/.agent/hooks/readme.md +222 -0
- package/.agent/mcp-configs/mcp-servers.json +181 -0
- package/.agent/rules/common/agents.md +50 -0
- package/.agent/rules/common/code-review.md +124 -0
- package/.agent/rules/common/coding-style.md +48 -0
- package/.agent/rules/common/development-workflow.md +44 -0
- package/.agent/rules/common/git-workflow.md +24 -0
- package/.agent/rules/common/hooks.md +30 -0
- package/.agent/rules/common/patterns.md +31 -0
- package/.agent/rules/common/performance.md +55 -0
- package/.agent/rules/common/security.md +29 -0
- package/.agent/rules/common/testing.md +29 -0
- package/.agent/rules/cpp/coding-style.md +44 -0
- package/.agent/rules/cpp/hooks.md +39 -0
- package/.agent/rules/cpp/patterns.md +51 -0
- package/.agent/rules/cpp/security.md +51 -0
- package/.agent/rules/cpp/testing.md +44 -0
- package/.agent/rules/csharp/coding-style.md +72 -0
- package/.agent/rules/csharp/hooks.md +25 -0
- package/.agent/rules/csharp/patterns.md +50 -0
- package/.agent/rules/csharp/security.md +58 -0
- package/.agent/rules/csharp/testing.md +46 -0
- package/.agent/rules/dart/coding-style.md +159 -0
- package/.agent/rules/dart/hooks.md +66 -0
- package/.agent/rules/dart/patterns.md +261 -0
- package/.agent/rules/dart/security.md +135 -0
- package/.agent/rules/dart/testing.md +215 -0
- package/.agent/rules/golang/coding-style.md +32 -0
- package/.agent/rules/golang/hooks.md +17 -0
- package/.agent/rules/golang/patterns.md +45 -0
- package/.agent/rules/golang/security.md +34 -0
- package/.agent/rules/golang/testing.md +31 -0
- package/.agent/rules/java/coding-style.md +114 -0
- package/.agent/rules/java/hooks.md +18 -0
- package/.agent/rules/java/patterns.md +146 -0
- package/.agent/rules/java/security.md +100 -0
- package/.agent/rules/java/testing.md +131 -0
- package/.agent/rules/kotlin/coding-style.md +86 -0
- package/.agent/rules/kotlin/hooks.md +17 -0
- package/.agent/rules/kotlin/patterns.md +146 -0
- package/.agent/rules/kotlin/security.md +82 -0
- package/.agent/rules/kotlin/testing.md +128 -0
- package/.agent/rules/perl/coding-style.md +46 -0
- package/.agent/rules/perl/hooks.md +22 -0
- package/.agent/rules/perl/patterns.md +76 -0
- package/.agent/rules/perl/security.md +69 -0
- package/.agent/rules/perl/testing.md +54 -0
- package/.agent/rules/php/coding-style.md +40 -0
- package/.agent/rules/php/hooks.md +24 -0
- package/.agent/rules/php/patterns.md +33 -0
- package/.agent/rules/php/security.md +37 -0
- package/.agent/rules/php/testing.md +39 -0
- package/.agent/rules/python/coding-style.md +42 -0
- package/.agent/rules/python/hooks.md +19 -0
- package/.agent/rules/python/patterns.md +39 -0
- package/.agent/rules/python/security.md +30 -0
- package/.agent/rules/python/testing.md +38 -0
- package/.agent/rules/readme.md +111 -0
- package/.agent/rules/rust/coding-style.md +151 -0
- package/.agent/rules/rust/hooks.md +16 -0
- package/.agent/rules/rust/patterns.md +168 -0
- package/.agent/rules/rust/security.md +141 -0
- package/.agent/rules/rust/testing.md +154 -0
- package/.agent/rules/swift/coding-style.md +47 -0
- package/.agent/rules/swift/hooks.md +20 -0
- package/.agent/rules/swift/patterns.md +66 -0
- package/.agent/rules/swift/security.md +33 -0
- package/.agent/rules/swift/testing.md +45 -0
- package/.agent/rules/typescript/coding-style.md +199 -0
- package/.agent/rules/typescript/hooks.md +22 -0
- package/.agent/rules/typescript/patterns.md +52 -0
- package/.agent/rules/typescript/security.md +28 -0
- package/.agent/rules/typescript/testing.md +18 -0
- package/.agent/rules/web/coding-style.md +96 -0
- package/.agent/rules/web/design-quality.md +63 -0
- package/.agent/rules/web/hooks.md +120 -0
- package/.agent/rules/web/patterns.md +79 -0
- package/.agent/rules/web/performance.md +64 -0
- package/.agent/rules/web/security.md +57 -0
- package/.agent/rules/web/testing.md +55 -0
- package/.agent/rules/zh/agents.md +50 -0
- package/.agent/rules/zh/code-review.md +124 -0
- package/.agent/rules/zh/coding-style.md +48 -0
- package/.agent/rules/zh/development-workflow.md +44 -0
- package/.agent/rules/zh/git-workflow.md +24 -0
- package/.agent/rules/zh/hooks.md +30 -0
- package/.agent/rules/zh/patterns.md +31 -0
- package/.agent/rules/zh/performance.md +55 -0
- package/.agent/rules/zh/readme.md +108 -0
- package/.agent/rules/zh/security.md +29 -0
- package/.agent/rules/zh/testing.md +29 -0
- package/.agent/skills/agent-eval/SKILL.md +145 -0
- package/.agent/skills/agent-harness-construction/SKILL.md +73 -0
- package/.agent/skills/agent-payment-x402/SKILL.md +178 -0
- package/.agent/skills/agentic-engineering/SKILL.md +63 -0
- package/.agent/skills/ai-first-engineering/SKILL.md +51 -0
- package/.agent/skills/ai-regression-testing/SKILL.md +385 -0
- package/.agent/skills/android-clean-architecture/SKILL.md +339 -0
- package/.agent/skills/api-design/SKILL.md +523 -0
- package/.agent/skills/architecture-decision-records/SKILL.md +179 -0
- package/.agent/skills/article-writing/SKILL.md +79 -0
- package/.agent/skills/autonomous-agent-harness/SKILL.md +267 -0
- package/.agent/skills/autonomous-loops/SKILL.md +610 -0
- package/.agent/skills/backend-patterns/SKILL.md +598 -0
- package/.agent/skills/benchmark/SKILL.md +93 -0
- package/.agent/skills/blueprint/SKILL.md +105 -0
- package/.agent/skills/brand-voice/SKILL.md +97 -0
- package/.agent/skills/brand-voice/references/voice-profile-schema.md +55 -0
- package/.agent/skills/browser-qa/SKILL.md +87 -0
- package/.agent/skills/bun-runtime/SKILL.md +84 -0
- package/.agent/skills/canary-watch/SKILL.md +99 -0
- package/.agent/skills/carrier-relationship-management/SKILL.md +212 -0
- package/.agent/skills/ck/SKILL.md +147 -0
- package/.agent/skills/ck/commands/forget.mjs +44 -0
- package/.agent/skills/ck/commands/info.mjs +24 -0
- package/.agent/skills/ck/commands/init.mjs +143 -0
- package/.agent/skills/ck/commands/list.mjs +40 -0
- package/.agent/skills/ck/commands/migrate.mjs +202 -0
- package/.agent/skills/ck/commands/resume.mjs +36 -0
- package/.agent/skills/ck/commands/save.mjs +210 -0
- package/.agent/skills/ck/commands/shared.mjs +387 -0
- package/.agent/skills/ck/hooks/session-start.mjs +224 -0
- package/.agent/skills/claude-api/SKILL.md +337 -0
- package/.agent/skills/claude-devfleet/SKILL.md +103 -0
- package/.agent/skills/click-path-audit/SKILL.md +244 -0
- package/.agent/skills/clickhouse-io/SKILL.md +439 -0
- package/.agent/skills/codebase-onboarding/SKILL.md +233 -0
- package/.agent/skills/coding-standards/SKILL.md +530 -0
- package/.agent/skills/compose-multiplatform-patterns/SKILL.md +299 -0
- package/.agent/skills/configure-ecc/SKILL.md +367 -0
- package/.agent/skills/connections-optimizer/SKILL.md +189 -0
- package/.agent/skills/content-engine/SKILL.md +131 -0
- package/.agent/skills/content-hash-cache-pattern/SKILL.md +161 -0
- package/.agent/skills/context-budget/SKILL.md +135 -0
- package/.agent/skills/continuous-agent-loop/SKILL.md +45 -0
- package/.agent/skills/continuous-learning/SKILL.md +119 -0
- package/.agent/skills/continuous-learning/config.json +18 -0
- package/.agent/skills/continuous-learning/evaluate-session.sh +69 -0
- package/.agent/skills/continuous-learning-v2/SKILL.md +365 -0
- package/.agent/skills/continuous-learning-v2/agents/observer-loop.sh +271 -0
- package/.agent/skills/continuous-learning-v2/agents/observer.md +198 -0
- package/.agent/skills/continuous-learning-v2/agents/session-guardian.sh +150 -0
- package/.agent/skills/continuous-learning-v2/agents/start-observer.sh +244 -0
- package/.agent/skills/continuous-learning-v2/config.json +8 -0
- package/.agent/skills/continuous-learning-v2/hooks/observe.sh +428 -0
- package/.agent/skills/continuous-learning-v2/scripts/detect-project.sh +228 -0
- package/.agent/skills/continuous-learning-v2/scripts/instinct-cli.py +1426 -0
- package/.agent/skills/continuous-learning-v2/scripts/test-parse-instinct.py +984 -0
- package/.agent/skills/cost-aware-llm-pipeline/SKILL.md +183 -0
- package/.agent/skills/cpp-coding-standards/SKILL.md +723 -0
- package/.agent/skills/cpp-testing/SKILL.md +324 -0
- package/.agent/skills/crosspost/SKILL.md +111 -0
- package/.agent/skills/csharp-testing/SKILL.md +321 -0
- package/.agent/skills/customer-billing-ops/SKILL.md +140 -0
- package/.agent/skills/customs-trade-compliance/SKILL.md +263 -0
- package/.agent/skills/dart-flutter-patterns/SKILL.md +563 -0
- package/.agent/skills/data-scraper-agent/SKILL.md +764 -0
- package/.agent/skills/database-migrations/SKILL.md +429 -0
- package/.agent/skills/deep-research/SKILL.md +155 -0
- package/.agent/skills/deployment-patterns/SKILL.md +427 -0
- package/.agent/skills/design-system/SKILL.md +82 -0
- package/.agent/skills/django-patterns/SKILL.md +734 -0
- package/.agent/skills/django-security/SKILL.md +593 -0
- package/.agent/skills/django-tdd/SKILL.md +729 -0
- package/.agent/skills/django-verification/SKILL.md +469 -0
- package/.agent/skills/dmux-workflows/SKILL.md +191 -0
- package/.agent/skills/docker-patterns/SKILL.md +364 -0
- package/.agent/skills/documentation-lookup/SKILL.md +90 -0
- package/.agent/skills/dotnet-patterns/SKILL.md +321 -0
- package/.agent/skills/e2e-testing/SKILL.md +326 -0
- package/.agent/skills/energy-procurement/SKILL.md +228 -0
- package/.agent/skills/enterprise-agent-ops/SKILL.md +50 -0
- package/.agent/skills/eval-harness/SKILL.md +270 -0
- package/.agent/skills/exa-search/SKILL.md +103 -0
- package/.agent/skills/fal-ai-media/SKILL.md +284 -0
- package/.agent/skills/flutter-dart-code-review/SKILL.md +435 -0
- package/.agent/skills/foundation-models-on-device/SKILL.md +243 -0
- package/.agent/skills/frontend-patterns/SKILL.md +642 -0
- package/.agent/skills/frontend-slides/SKILL.md +184 -0
- package/.agent/skills/frontend-slides/style-presets.md +330 -0
- package/.agent/skills/gan-style-harness/SKILL.md +278 -0
- package/.agent/skills/git-workflow/SKILL.md +715 -0
- package/.agent/skills/golang-patterns/SKILL.md +674 -0
- package/.agent/skills/golang-testing/SKILL.md +720 -0
- package/.agent/skills/google-workspace-ops/SKILL.md +95 -0
- package/.agent/skills/healthcare-cdss-patterns/SKILL.md +245 -0
- package/.agent/skills/healthcare-emr-patterns/SKILL.md +159 -0
- package/.agent/skills/healthcare-eval-harness/SKILL.md +207 -0
- package/.agent/skills/healthcare-phi-compliance/SKILL.md +145 -0
- package/.agent/skills/hexagonal-architecture/SKILL.md +276 -0
- package/.agent/skills/inventory-demand-planning/SKILL.md +247 -0
- package/.agent/skills/investor-materials/SKILL.md +96 -0
- package/.agent/skills/investor-outreach/SKILL.md +91 -0
- package/.agent/skills/iterative-retrieval/SKILL.md +211 -0
- package/.agent/skills/java-coding-standards/SKILL.md +147 -0
- package/.agent/skills/jira-integration/SKILL.md +293 -0
- package/.agent/skills/jpa-patterns/SKILL.md +151 -0
- package/.agent/skills/kotlin-coroutines-flows/SKILL.md +284 -0
- package/.agent/skills/kotlin-exposed-patterns/SKILL.md +719 -0
- package/.agent/skills/kotlin-ktor-patterns/SKILL.md +689 -0
- package/.agent/skills/kotlin-patterns/SKILL.md +711 -0
- package/.agent/skills/kotlin-testing/SKILL.md +824 -0
- package/.agent/skills/laravel-patterns/SKILL.md +415 -0
- package/.agent/skills/laravel-plugin-discovery/SKILL.md +229 -0
- package/.agent/skills/laravel-security/SKILL.md +285 -0
- package/.agent/skills/laravel-tdd/SKILL.md +283 -0
- package/.agent/skills/laravel-verification/SKILL.md +179 -0
- package/.agent/skills/lead-intelligence/SKILL.md +321 -0
- package/.agent/skills/lead-intelligence/agents/enrichment-agent.md +85 -0
- package/.agent/skills/lead-intelligence/agents/mutual-mapper.md +75 -0
- package/.agent/skills/lead-intelligence/agents/outreach-drafter.md +98 -0
- package/.agent/skills/lead-intelligence/agents/signal-scorer.md +60 -0
- package/.agent/skills/liquid-glass-design/SKILL.md +279 -0
- package/.agent/skills/logistics-exception-management/SKILL.md +222 -0
- package/.agent/skills/manim-video/SKILL.md +89 -0
- package/.agent/skills/manim-video/assets/network-graph-scene.py +52 -0
- package/.agent/skills/market-research/SKILL.md +75 -0
- package/.agent/skills/mcp-builder/SKILL.md +173 -113
- package/.agent/skills/mcp-builder/license.txt +202 -0
- package/.agent/skills/mcp-builder/reference/evaluation.md +602 -0
- package/.agent/skills/mcp-builder/reference/mcp-best-practices.md +249 -0
- package/.agent/skills/mcp-builder/reference/node-mcp-server.md +970 -0
- package/.agent/skills/mcp-builder/reference/python-mcp-server.md +719 -0
- package/.agent/skills/mcp-builder/scripts/connections.py +151 -0
- package/.agent/skills/mcp-builder/scripts/evaluation.py +373 -0
- package/.agent/skills/mcp-builder/scripts/example-evaluation.xml +22 -0
- package/.agent/skills/mcp-builder/scripts/requirements.txt +2 -0
- package/.agent/skills/mcp-server-patterns/SKILL.md +67 -0
- package/.agent/skills/nanoclaw-repl/SKILL.md +33 -0
- package/.agent/skills/nestjs-patterns/SKILL.md +230 -0
- package/.agent/skills/nextjs-turbopack/SKILL.md +44 -0
- package/.agent/skills/nutrient-document-processing/SKILL.md +167 -0
- package/.agent/skills/nuxt4-patterns/SKILL.md +100 -0
- package/.agent/skills/openclaw-persona-forge/SKILL.md +296 -0
- package/.agent/skills/openclaw-persona-forge/gacha.py +224 -0
- package/.agent/skills/openclaw-persona-forge/gacha.sh +5 -0
- package/.agent/skills/openclaw-persona-forge/references/avatar-style.md +124 -0
- package/.agent/skills/openclaw-persona-forge/references/boundary-rules.md +53 -0
- package/.agent/skills/openclaw-persona-forge/references/error-handling.md +53 -0
- package/.agent/skills/openclaw-persona-forge/references/identity-tension.md +48 -0
- package/.agent/skills/openclaw-persona-forge/references/naming-system.md +39 -0
- package/.agent/skills/openclaw-persona-forge/references/output-template.md +166 -0
- package/.agent/skills/opensource-pipeline/SKILL.md +255 -0
- package/.agent/skills/perl-patterns/SKILL.md +504 -0
- package/.agent/skills/perl-security/SKILL.md +503 -0
- package/.agent/skills/perl-testing/SKILL.md +475 -0
- package/.agent/skills/plankton-code-quality/SKILL.md +236 -0
- package/.agent/skills/postgres-patterns/SKILL.md +147 -0
- package/.agent/skills/product-lens/SKILL.md +85 -0
- package/.agent/skills/production-scheduling/SKILL.md +238 -0
- package/.agent/skills/project-flow-ops/SKILL.md +111 -0
- package/.agent/skills/project-guidelines-example/SKILL.md +349 -0
- package/.agent/skills/prompt-optimizer/SKILL.md +397 -0
- package/.agent/skills/python-patterns/SKILL.md +622 -313
- package/.agent/skills/python-testing/SKILL.md +816 -0
- package/.agent/skills/pytorch-patterns/SKILL.md +396 -0
- package/.agent/skills/quality-nonconformance/SKILL.md +260 -0
- package/.agent/skills/ralphinho-rfc-pipeline/SKILL.md +67 -0
- package/.agent/skills/regex-vs-llm-structured-text/SKILL.md +220 -0
- package/.agent/skills/remotion-video-creation/SKILL.md +43 -0
- package/.agent/skills/remotion-video-creation/rules/3d.md +86 -0
- package/.agent/skills/remotion-video-creation/rules/animations.md +29 -0
- package/.agent/skills/remotion-video-creation/rules/assets/charts-bar-chart.tsx +173 -0
- package/.agent/skills/remotion-video-creation/rules/assets/text-animations-typewriter.tsx +100 -0
- package/.agent/skills/remotion-video-creation/rules/assets/text-animations-word-highlight.tsx +108 -0
- package/.agent/skills/remotion-video-creation/rules/assets.md +78 -0
- package/.agent/skills/remotion-video-creation/rules/audio.md +172 -0
- package/.agent/skills/remotion-video-creation/rules/calculate-metadata.md +104 -0
- package/.agent/skills/remotion-video-creation/rules/can-decode.md +75 -0
- package/.agent/skills/remotion-video-creation/rules/charts.md +58 -0
- package/.agent/skills/remotion-video-creation/rules/compositions.md +146 -0
- package/.agent/skills/remotion-video-creation/rules/display-captions.md +126 -0
- package/.agent/skills/remotion-video-creation/rules/extract-frames.md +229 -0
- package/.agent/skills/remotion-video-creation/rules/fonts.md +152 -0
- package/.agent/skills/remotion-video-creation/rules/get-audio-duration.md +58 -0
- package/.agent/skills/remotion-video-creation/rules/get-video-dimensions.md +68 -0
- package/.agent/skills/remotion-video-creation/rules/get-video-duration.md +58 -0
- package/.agent/skills/remotion-video-creation/rules/gifs.md +138 -0
- package/.agent/skills/remotion-video-creation/rules/images.md +130 -0
- package/.agent/skills/remotion-video-creation/rules/import-srt-captions.md +67 -0
- package/.agent/skills/remotion-video-creation/rules/lottie.md +67 -0
- package/.agent/skills/remotion-video-creation/rules/measuring-dom-nodes.md +34 -0
- package/.agent/skills/remotion-video-creation/rules/measuring-text.md +143 -0
- package/.agent/skills/remotion-video-creation/rules/sequencing.md +106 -0
- package/.agent/skills/remotion-video-creation/rules/tailwind.md +11 -0
- package/.agent/skills/remotion-video-creation/rules/text-animations.md +20 -0
- package/.agent/skills/remotion-video-creation/rules/timing.md +179 -0
- package/.agent/skills/remotion-video-creation/rules/transcribe-captions.md +19 -0
- package/.agent/skills/remotion-video-creation/rules/transitions.md +122 -0
- package/.agent/skills/remotion-video-creation/rules/trimming.md +52 -0
- package/.agent/skills/remotion-video-creation/rules/videos.md +171 -0
- package/.agent/skills/repo-scan/SKILL.md +78 -0
- package/.agent/skills/returns-reverse-logistics/SKILL.md +240 -0
- package/.agent/skills/rules-distill/SKILL.md +264 -0
- package/.agent/skills/rules-distill/scripts/scan-rules.sh +58 -0
- package/.agent/skills/rules-distill/scripts/scan-skills.sh +129 -0
- package/.agent/skills/rust-patterns/SKILL.md +499 -0
- package/.agent/skills/rust-testing/SKILL.md +500 -0
- package/.agent/skills/safety-guard/SKILL.md +75 -0
- package/.agent/skills/santa-method/SKILL.md +306 -0
- package/.agent/skills/search-first/SKILL.md +161 -0
- package/.agent/skills/security-review/SKILL.md +495 -0
- package/.agent/skills/security-review/cloud-infrastructure-security.md +361 -0
- package/.agent/skills/security-scan/SKILL.md +165 -0
- package/.agent/skills/skill-comply/SKILL.md +58 -0
- package/.agent/skills/skill-comply/fixtures/compliant-trace.jsonl +5 -0
- package/.agent/skills/skill-comply/fixtures/noncompliant-trace.jsonl +3 -0
- package/.agent/skills/skill-comply/fixtures/tdd-spec.yaml +44 -0
- package/.agent/skills/skill-comply/prompts/classifier.md +24 -0
- package/.agent/skills/skill-comply/prompts/scenario-generator.md +62 -0
- package/.agent/skills/skill-comply/prompts/spec-generator.md +42 -0
- package/.agent/skills/skill-comply/pyproject.toml +15 -0
- package/.agent/skills/skill-comply/scripts/classifier.py +85 -0
- package/.agent/skills/skill-comply/scripts/grader.py +122 -0
- package/.agent/skills/skill-comply/scripts/init.py +0 -0
- package/.agent/skills/skill-comply/scripts/parser.py +107 -0
- package/.agent/skills/skill-comply/scripts/report.py +170 -0
- package/.agent/skills/skill-comply/scripts/run.py +127 -0
- package/.agent/skills/skill-comply/scripts/runner.py +161 -0
- package/.agent/skills/skill-comply/scripts/scenario-generator.py +70 -0
- package/.agent/skills/skill-comply/scripts/spec-generator.py +72 -0
- package/.agent/skills/skill-comply/scripts/utils.py +13 -0
- package/.agent/skills/skill-comply/tests/test-grader.py +137 -0
- package/.agent/skills/skill-comply/tests/test-parser.py +90 -0
- package/.agent/skills/skill-creator/SKILL.md +485 -0
- package/.agent/skills/skill-creator/agents/analyzer.md +274 -0
- package/.agent/skills/skill-creator/agents/comparator.md +202 -0
- package/.agent/skills/skill-creator/agents/grader.md +223 -0
- package/.agent/skills/skill-creator/assets/eval-review.html +146 -0
- package/.agent/skills/skill-creator/eval-viewer/generate-review.py +471 -0
- package/.agent/skills/skill-creator/eval-viewer/viewer.html +1325 -0
- package/.agent/skills/skill-creator/license.txt +202 -0
- package/.agent/skills/skill-creator/references/schemas.md +430 -0
- package/.agent/skills/skill-creator/scripts/aggregate-benchmark.py +401 -0
- package/.agent/skills/skill-creator/scripts/generate-report.py +326 -0
- package/.agent/skills/skill-creator/scripts/improve-description.py +247 -0
- package/.agent/skills/skill-creator/scripts/init.py +0 -0
- package/.agent/skills/skill-creator/scripts/package-skill.py +136 -0
- package/.agent/skills/skill-creator/scripts/quick-validate.py +103 -0
- package/.agent/skills/skill-creator/scripts/run-eval.py +310 -0
- package/.agent/skills/skill-creator/scripts/run-loop.py +328 -0
- package/.agent/skills/skill-creator/scripts/utils.py +47 -0
- package/.agent/skills/skill-stocktake/SKILL.md +193 -0
- package/.agent/skills/skill-stocktake/scripts/quick-diff.sh +87 -0
- package/.agent/skills/skill-stocktake/scripts/save-results.sh +56 -0
- package/.agent/skills/skill-stocktake/scripts/scan.sh +170 -0
- package/.agent/skills/social-graph-ranker/SKILL.md +154 -0
- package/.agent/skills/springboot-patterns/SKILL.md +314 -0
- package/.agent/skills/springboot-security/SKILL.md +272 -0
- package/.agent/skills/springboot-tdd/SKILL.md +158 -0
- package/.agent/skills/springboot-verification/SKILL.md +231 -0
- package/.agent/skills/strategic-compact/SKILL.md +131 -0
- package/.agent/skills/strategic-compact/suggest-compact.sh +54 -0
- package/.agent/skills/swift-actor-persistence/SKILL.md +143 -0
- package/.agent/skills/swift-concurrency-6-2/SKILL.md +216 -0
- package/.agent/skills/swift-protocol-di-testing/SKILL.md +190 -0
- package/.agent/skills/swiftui-patterns/SKILL.md +259 -0
- package/.agent/skills/tdd-workflow/SKILL.md +412 -98
- package/.agent/skills/team-builder/SKILL.md +168 -0
- package/.agent/skills/token-budget-advisor/SKILL.md +133 -0
- package/.agent/skills/ui-demo/SKILL.md +465 -0
- package/.agent/skills/ui-ux-pro-max/data/charts.csv +26 -26
- package/.agent/skills/ui-ux-pro-max/data/colors.csv +97 -97
- package/.agent/skills/ui-ux-pro-max/data/landing.csv +28 -28
- package/.agent/skills/ui-ux-pro-max/data/products.csv +96 -96
- package/.agent/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -53
- package/.agent/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -56
- package/.agent/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -53
- package/.agent/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -52
- package/.agent/skills/ui-ux-pro-max/data/stacks/react.csv +54 -54
- package/.agent/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -54
- package/.agent/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -51
- package/.agent/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -50
- package/.agent/skills/ui-ux-pro-max/data/styles.csv +68 -68
- package/.agent/skills/ui-ux-pro-max/data/ux-guidelines.csv +99 -99
- package/.agent/skills/ui-ux-pro-max/scripts/search.py +114 -114
- package/.agent/skills/verification-loop/SKILL.md +126 -0
- package/.agent/skills/video-editing/SKILL.md +310 -0
- package/.agent/skills/videodb/SKILL.md +374 -0
- package/.agent/skills/videodb/reference/api-reference.md +550 -0
- package/.agent/skills/videodb/reference/capture-reference.md +407 -0
- package/.agent/skills/videodb/reference/capture.md +101 -0
- package/.agent/skills/videodb/reference/editor.md +443 -0
- package/.agent/skills/videodb/reference/generative.md +331 -0
- package/.agent/skills/videodb/reference/rtstream-reference.md +564 -0
- package/.agent/skills/videodb/reference/rtstream.md +65 -0
- package/.agent/skills/videodb/reference/search.md +230 -0
- package/.agent/skills/videodb/reference/streaming.md +406 -0
- package/.agent/skills/videodb/reference/use-cases.md +118 -0
- package/.agent/skills/videodb/scripts/ws-listener.py +282 -0
- package/.agent/skills/visa-doc-translate/SKILL.md +117 -0
- package/.agent/skills/visa-doc-translate/readme.md +86 -0
- package/.agent/skills/workspace-surface-audit/SKILL.md +125 -0
- package/.agent/skills/x-api/SKILL.md +230 -0
- package/.agent/tasks/two-track-merge-contract.md +29 -0
- package/.agent/workflows/aside.md +164 -164
- package/.agent/workflows/build-fix.md +62 -62
- package/.agent/workflows/checkpoint.md +74 -74
- package/.agent/workflows/claw.md +23 -51
- package/.agent/workflows/clean-memory.md +34 -0
- package/.agent/workflows/code-review.md +289 -40
- package/.agent/workflows/context-budget.md +23 -29
- package/.agent/workflows/cpp-build.md +173 -173
- package/.agent/workflows/cpp-review.md +132 -132
- package/.agent/workflows/cpp-test.md +251 -251
- package/.agent/workflows/devfleet.md +23 -92
- package/.agent/workflows/docs.md +23 -31
- package/.agent/workflows/e2e.md +268 -365
- package/.agent/workflows/eval.md +23 -120
- package/.agent/workflows/evolve.md +178 -178
- package/.agent/workflows/flutter-build.md +164 -0
- package/.agent/workflows/flutter-review.md +116 -0
- package/.agent/workflows/flutter-test.md +144 -0
- package/.agent/workflows/gan-build.md +99 -0
- package/.agent/workflows/gan-design.md +35 -0
- package/.agent/workflows/go-build.md +183 -183
- package/.agent/workflows/go-review.md +148 -148
- package/.agent/workflows/go-test.md +268 -268
- package/.agent/workflows/gradle-build.md +70 -70
- package/.agent/workflows/harness-audit.md +73 -71
- package/.agent/workflows/instinct-export.md +66 -66
- package/.agent/workflows/instinct-import.md +114 -114
- package/.agent/workflows/instinct-status.md +59 -59
- package/.agent/workflows/jira.md +106 -0
- package/.agent/workflows/kotlin-build.md +174 -174
- package/.agent/workflows/kotlin-review.md +140 -140
- package/.agent/workflows/kotlin-test.md +312 -312
- package/.agent/workflows/learn-eval.md +116 -116
- package/.agent/workflows/learn.md +70 -70
- package/.agent/workflows/loop-start.md +32 -32
- package/.agent/workflows/loop-status.md +24 -24
- package/.agent/workflows/model-route.md +26 -26
- package/.agent/workflows/multi-backend.md +158 -158
- package/.agent/workflows/multi-execute.md +315 -315
- package/.agent/workflows/multi-frontend.md +158 -158
- package/.agent/workflows/multi-plan.md +268 -268
- package/.agent/workflows/multi-workflow.md +191 -191
- package/.agent/workflows/orchestrate.md +135 -231
- package/.agent/workflows/plan.md +117 -115
- package/.agent/workflows/pm2.md +272 -272
- package/.agent/workflows/projects.md +39 -39
- package/.agent/workflows/promote.md +41 -41
- package/.agent/workflows/prompt-optimize.md +23 -38
- package/.agent/workflows/prp-commit.md +112 -0
- package/.agent/workflows/prp-implement.md +385 -0
- package/.agent/workflows/prp-plan.md +502 -0
- package/.agent/workflows/prp-pr.md +184 -0
- package/.agent/workflows/prp-prd.md +447 -0
- package/.agent/workflows/prune.md +31 -31
- package/.agent/workflows/python-review.md +297 -297
- package/.agent/workflows/quality-gate.md +29 -29
- package/.agent/workflows/refactor-clean.md +80 -80
- package/.agent/workflows/resume-session.md +156 -156
- package/.agent/workflows/rules-distill.md +20 -11
- package/.agent/workflows/rust-build.md +187 -187
- package/.agent/workflows/rust-review.md +142 -142
- package/.agent/workflows/rust-test.md +308 -308
- package/.agent/workflows/santa-loop.md +175 -0
- package/.agent/workflows/save-session.md +275 -275
- package/.agent/workflows/sessions.md +333 -333
- package/.agent/workflows/setup-pm.md +80 -80
- package/.agent/workflows/skill-create.md +174 -174
- package/.agent/workflows/skill-health.md +54 -54
- package/.agent/workflows/tdd.md +231 -328
- package/.agent/workflows/test-coverage.md +69 -69
- package/.agent/workflows/update-codemaps.md +72 -72
- package/.agent/workflows/update-docs.md +84 -84
- package/.agent/workflows/verify.md +23 -59
- package/LICENSE +176 -176
- package/README.md +28 -20
- package/RELEASE.md +32 -36
- package/package.json +87 -79
- package/scripts/release-check.js +55 -55
- package/src/bin/cli.js +399 -53
- package/src/lib/installer.js +360 -114
- package/src/lib/manifests/stacks.js +122 -0
- package/src/lib/slash-commands.js +28 -0
- package/src/templates/claude/CLAUDE.en.md +42 -0
- package/src/templates/claude/CLAUDE.md +42 -0
- package/src/templates/claude/CLAUDE.vi.md +42 -0
- package/src/templates/codex/AGENTS.en.md +40 -0
- package/src/templates/codex/AGENTS.md +40 -0
- package/src/templates/codex/AGENTS.vi.md +40 -0
- package/src/templates/cursor/pilo-masterkit.mdc +20 -0
- package/src/templates/gemini/GEMINI.en.md +56 -0
- package/src/templates/gemini/GEMINI.md +56 -0
- package/src/templates/gemini/GEMINI.vi.md +56 -0
- package/src/templates/github/copilot-instructions.md +16 -0
|
@@ -0,0 +1,550 @@
|
|
|
1
|
+
# Complete API Reference
|
|
2
|
+
|
|
3
|
+
Reference material for the VideoDB skill. For usage guidance and workflow selection, start with [../SKILL.md](../SKILL.md).
|
|
4
|
+
|
|
5
|
+
## Connection
|
|
6
|
+
|
|
7
|
+
```python
|
|
8
|
+
import videodb
|
|
9
|
+
|
|
10
|
+
conn = videodb.connect(
|
|
11
|
+
api_key="your-api-key", # or set VIDEO_DB_API_KEY env var
|
|
12
|
+
base_url=None, # custom API endpoint (optional)
|
|
13
|
+
)
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
**Returns:** `Connection` object
|
|
17
|
+
|
|
18
|
+
### Connection Methods
|
|
19
|
+
|
|
20
|
+
| Method | Returns | Description |
|
|
21
|
+
|--------|---------|-------------|
|
|
22
|
+
| `conn.get_collection(collection_id="default")` | `Collection` | Get collection (default if no ID) |
|
|
23
|
+
| `conn.get_collections()` | `list[Collection]` | List all collections |
|
|
24
|
+
| `conn.create_collection(name, description, is_public=False)` | `Collection` | Create new collection |
|
|
25
|
+
| `conn.update_collection(id, name, description)` | `Collection` | Update a collection |
|
|
26
|
+
| `conn.check_usage()` | `dict` | Get account usage stats |
|
|
27
|
+
| `conn.upload(source, media_type, name, ...)` | `Video\|Audio\|Image` | Upload to default collection |
|
|
28
|
+
| `conn.record_meeting(meeting_url, bot_name, ...)` | `Meeting` | Record a meeting |
|
|
29
|
+
| `conn.create_capture_session(...)` | `CaptureSession` | Create a capture session (see [capture-reference.md](capture-reference.md)) |
|
|
30
|
+
| `conn.youtube_search(query, result_threshold, duration)` | `list[dict]` | Search YouTube |
|
|
31
|
+
| `conn.transcode(source, callback_url, mode, ...)` | `str` | Transcode video (returns job ID) |
|
|
32
|
+
| `conn.get_transcode_details(job_id)` | `dict` | Get transcode job status and details |
|
|
33
|
+
| `conn.connect_websocket(collection_id)` | `WebSocketConnection` | Connect to WebSocket (see [capture-reference.md](capture-reference.md)) |
|
|
34
|
+
|
|
35
|
+
### Transcode
|
|
36
|
+
|
|
37
|
+
Transcode a video from a URL with custom resolution, quality, and audio settings. Processing happens server-side — no local ffmpeg required.
|
|
38
|
+
|
|
39
|
+
```python
|
|
40
|
+
from videodb import TranscodeMode, VideoConfig, AudioConfig
|
|
41
|
+
|
|
42
|
+
job_id = conn.transcode(
|
|
43
|
+
source="https://example.com/video.mp4",
|
|
44
|
+
callback_url="https://example.com/webhook",
|
|
45
|
+
mode=TranscodeMode.economy,
|
|
46
|
+
video_config=VideoConfig(resolution=720, quality=23),
|
|
47
|
+
audio_config=AudioConfig(mute=False),
|
|
48
|
+
)
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
#### transcode Parameters
|
|
52
|
+
|
|
53
|
+
| Parameter | Type | Default | Description |
|
|
54
|
+
|-----------|------|---------|-------------|
|
|
55
|
+
| `source` | `str` | required | URL of the video to transcode (preferably a downloadable URL) |
|
|
56
|
+
| `callback_url` | `str` | required | URL to receive the callback when transcoding completes |
|
|
57
|
+
| `mode` | `TranscodeMode` | `TranscodeMode.economy` | Transcoding speed: `economy` or `lightning` |
|
|
58
|
+
| `video_config` | `VideoConfig` | `VideoConfig()` | Video encoding settings |
|
|
59
|
+
| `audio_config` | `AudioConfig` | `AudioConfig()` | Audio encoding settings |
|
|
60
|
+
|
|
61
|
+
Returns a job ID (`str`). Use `conn.get_transcode_details(job_id)` to check job status.
|
|
62
|
+
|
|
63
|
+
```python
|
|
64
|
+
details = conn.get_transcode_details(job_id)
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
#### VideoConfig
|
|
68
|
+
|
|
69
|
+
```python
|
|
70
|
+
from videodb import VideoConfig, ResizeMode
|
|
71
|
+
|
|
72
|
+
config = VideoConfig(
|
|
73
|
+
resolution=720, # Target resolution height (e.g. 480, 720, 1080)
|
|
74
|
+
quality=23, # Encoding quality (lower = better, default 23)
|
|
75
|
+
framerate=30, # Target framerate
|
|
76
|
+
aspect_ratio="16:9", # Target aspect ratio
|
|
77
|
+
resize_mode=ResizeMode.crop, # How to fit: crop, fit, or pad
|
|
78
|
+
)
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
| Field | Type | Default | Description |
|
|
82
|
+
|-------|------|---------|-------------|
|
|
83
|
+
| `resolution` | `int\|None` | `None` | Target resolution height in pixels |
|
|
84
|
+
| `quality` | `int` | `23` | Encoding quality (lower = higher quality) |
|
|
85
|
+
| `framerate` | `int\|None` | `None` | Target framerate |
|
|
86
|
+
| `aspect_ratio` | `str\|None` | `None` | Target aspect ratio (e.g. `"16:9"`, `"9:16"`) |
|
|
87
|
+
| `resize_mode` | `str` | `ResizeMode.crop` | Resize strategy: `crop`, `fit`, or `pad` |
|
|
88
|
+
|
|
89
|
+
#### AudioConfig
|
|
90
|
+
|
|
91
|
+
```python
|
|
92
|
+
from videodb import AudioConfig
|
|
93
|
+
|
|
94
|
+
config = AudioConfig(mute=False)
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
| Field | Type | Default | Description |
|
|
98
|
+
|-------|------|---------|-------------|
|
|
99
|
+
| `mute` | `bool` | `False` | Mute the audio track |
|
|
100
|
+
|
|
101
|
+
## Collections
|
|
102
|
+
|
|
103
|
+
```python
|
|
104
|
+
coll = conn.get_collection()
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### Collection Methods
|
|
108
|
+
|
|
109
|
+
| Method | Returns | Description |
|
|
110
|
+
|--------|---------|-------------|
|
|
111
|
+
| `coll.get_videos()` | `list[Video]` | List all videos |
|
|
112
|
+
| `coll.get_video(video_id)` | `Video` | Get specific video |
|
|
113
|
+
| `coll.get_audios()` | `list[Audio]` | List all audios |
|
|
114
|
+
| `coll.get_audio(audio_id)` | `Audio` | Get specific audio |
|
|
115
|
+
| `coll.get_images()` | `list[Image]` | List all images |
|
|
116
|
+
| `coll.get_image(image_id)` | `Image` | Get specific image |
|
|
117
|
+
| `coll.upload(url=None, file_path=None, media_type=None, name=None)` | `Video\|Audio\|Image` | Upload media |
|
|
118
|
+
| `coll.search(query, search_type, index_type, score_threshold, namespace, scene_index_id, ...)` | `SearchResult` | Search across collection (semantic only; keyword and scene search raise `NotImplementedError`) |
|
|
119
|
+
| `coll.generate_image(prompt, aspect_ratio="1:1")` | `Image` | Generate image with AI |
|
|
120
|
+
| `coll.generate_video(prompt, duration=5)` | `Video` | Generate video with AI |
|
|
121
|
+
| `coll.generate_music(prompt, duration=5)` | `Audio` | Generate music with AI |
|
|
122
|
+
| `coll.generate_sound_effect(prompt, duration=2)` | `Audio` | Generate sound effect |
|
|
123
|
+
| `coll.generate_voice(text, voice_name="Default")` | `Audio` | Generate speech from text |
|
|
124
|
+
| `coll.generate_text(prompt, model_name="basic", response_type="text")` | `dict` | LLM text generation — access result via `["output"]` |
|
|
125
|
+
| `coll.dub_video(video_id, language_code)` | `Video` | Dub video into another language |
|
|
126
|
+
| `coll.record_meeting(meeting_url, bot_name, ...)` | `Meeting` | Record a live meeting |
|
|
127
|
+
| `coll.create_capture_session(...)` | `CaptureSession` | Create a capture session (see [capture-reference.md](capture-reference.md)) |
|
|
128
|
+
| `coll.get_capture_session(...)` | `CaptureSession` | Retrieve capture session (see [capture-reference.md](capture-reference.md)) |
|
|
129
|
+
| `coll.connect_rtstream(url, name, ...)` | `RTStream` | Connect to a live stream (see [rtstream-reference.md](rtstream-reference.md)) |
|
|
130
|
+
| `coll.make_public()` | `None` | Make collection public |
|
|
131
|
+
| `coll.make_private()` | `None` | Make collection private |
|
|
132
|
+
| `coll.delete_video(video_id)` | `None` | Delete a video |
|
|
133
|
+
| `coll.delete_audio(audio_id)` | `None` | Delete an audio |
|
|
134
|
+
| `coll.delete_image(image_id)` | `None` | Delete an image |
|
|
135
|
+
| `coll.delete()` | `None` | Delete the collection |
|
|
136
|
+
|
|
137
|
+
### Upload Parameters
|
|
138
|
+
|
|
139
|
+
```python
|
|
140
|
+
video = coll.upload(
|
|
141
|
+
url=None, # Remote URL (HTTP, YouTube)
|
|
142
|
+
file_path=None, # Local file path
|
|
143
|
+
media_type=None, # "video", "audio", or "image" (auto-detected if omitted)
|
|
144
|
+
name=None, # Custom name for the media
|
|
145
|
+
description=None, # Description
|
|
146
|
+
callback_url=None, # Webhook URL for async notification
|
|
147
|
+
)
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
## Video Object
|
|
151
|
+
|
|
152
|
+
```python
|
|
153
|
+
video = coll.get_video(video_id)
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
### Video Properties
|
|
157
|
+
|
|
158
|
+
| Property | Type | Description |
|
|
159
|
+
|----------|------|-------------|
|
|
160
|
+
| `video.id` | `str` | Unique video ID |
|
|
161
|
+
| `video.collection_id` | `str` | Parent collection ID |
|
|
162
|
+
| `video.name` | `str` | Video name |
|
|
163
|
+
| `video.description` | `str` | Video description |
|
|
164
|
+
| `video.length` | `float` | Duration in seconds |
|
|
165
|
+
| `video.stream_url` | `str` | Default stream URL |
|
|
166
|
+
| `video.player_url` | `str` | Player embed URL |
|
|
167
|
+
| `video.thumbnail_url` | `str` | Thumbnail URL |
|
|
168
|
+
|
|
169
|
+
### Video Methods
|
|
170
|
+
|
|
171
|
+
| Method | Returns | Description |
|
|
172
|
+
|--------|---------|-------------|
|
|
173
|
+
| `video.generate_stream(timeline=None)` | `str` | Generate stream URL (optional timeline of `[(start, end)]` tuples) |
|
|
174
|
+
| `video.play()` | `str` | Open stream in browser, returns player URL |
|
|
175
|
+
| `video.index_spoken_words(language_code=None, force=False)` | `None` | Index speech for search. Use `force=True` to skip if already indexed. |
|
|
176
|
+
| `video.index_scenes(extraction_type, prompt, extraction_config, metadata, model_name, name, scenes, callback_url)` | `str` | Index visual scenes (returns scene_index_id) |
|
|
177
|
+
| `video.index_visuals(prompt, batch_config, ...)` | `str` | Index visuals (returns scene_index_id) |
|
|
178
|
+
| `video.index_audio(prompt, model_name, ...)` | `str` | Index audio with LLM (returns scene_index_id) |
|
|
179
|
+
| `video.get_transcript(start=None, end=None)` | `list[dict]` | Get timestamped transcript |
|
|
180
|
+
| `video.get_transcript_text(start=None, end=None)` | `str` | Get full transcript text |
|
|
181
|
+
| `video.generate_transcript(force=None)` | `dict` | Generate transcript |
|
|
182
|
+
| `video.translate_transcript(language, additional_notes)` | `list[dict]` | Translate transcript |
|
|
183
|
+
| `video.search(query, search_type, index_type, filter, **kwargs)` | `SearchResult` | Search within video |
|
|
184
|
+
| `video.add_subtitle(style=SubtitleStyle())` | `str` | Add subtitles (returns stream URL) |
|
|
185
|
+
| `video.generate_thumbnail(time=None)` | `str\|Image` | Generate thumbnail |
|
|
186
|
+
| `video.get_thumbnails()` | `list[Image]` | Get all thumbnails |
|
|
187
|
+
| `video.extract_scenes(extraction_type, extraction_config)` | `SceneCollection` | Extract scenes |
|
|
188
|
+
| `video.reframe(start, end, target, mode, callback_url)` | `Video\|None` | Reframe video aspect ratio |
|
|
189
|
+
| `video.clip(prompt, content_type, model_name)` | `str` | Generate clip from prompt (returns stream URL) |
|
|
190
|
+
| `video.insert_video(video, timestamp)` | `str` | Insert video at timestamp |
|
|
191
|
+
| `video.download(name=None)` | `dict` | Download the video |
|
|
192
|
+
| `video.delete()` | `None` | Delete the video |
|
|
193
|
+
|
|
194
|
+
### Reframe
|
|
195
|
+
|
|
196
|
+
Convert a video to a different aspect ratio with optional smart object tracking. Processing is server-side.
|
|
197
|
+
|
|
198
|
+
> **Warning:** Reframe is a slow server-side operation. It can take several minutes for long videos and may time out. Always use `start`/`end` to limit the segment, or pass `callback_url` for async processing.
|
|
199
|
+
|
|
200
|
+
```python
|
|
201
|
+
from videodb import ReframeMode
|
|
202
|
+
|
|
203
|
+
# Always prefer short segments to avoid timeouts:
|
|
204
|
+
reframed = video.reframe(start=0, end=60, target="vertical", mode=ReframeMode.smart)
|
|
205
|
+
|
|
206
|
+
# Async reframe for full-length videos (returns None, result via webhook):
|
|
207
|
+
video.reframe(target="vertical", callback_url="https://example.com/webhook")
|
|
208
|
+
|
|
209
|
+
# Custom dimensions
|
|
210
|
+
reframed = video.reframe(start=0, end=60, target={"width": 1080, "height": 1080})
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
#### reframe Parameters
|
|
214
|
+
|
|
215
|
+
| Parameter | Type | Default | Description |
|
|
216
|
+
|-----------|------|---------|-------------|
|
|
217
|
+
| `start` | `float\|None` | `None` | Start time in seconds (None = beginning) |
|
|
218
|
+
| `end` | `float\|None` | `None` | End time in seconds (None = end of video) |
|
|
219
|
+
| `target` | `str\|dict` | `"vertical"` | Preset string (`"vertical"`, `"square"`, `"landscape"`) or `{"width": int, "height": int}` |
|
|
220
|
+
| `mode` | `str` | `ReframeMode.smart` | `"simple"` (centre crop) or `"smart"` (object tracking) |
|
|
221
|
+
| `callback_url` | `str\|None` | `None` | Webhook URL for async notification |
|
|
222
|
+
|
|
223
|
+
Returns a `Video` object when no `callback_url` is provided, `None` otherwise.
|
|
224
|
+
|
|
225
|
+
## Audio Object
|
|
226
|
+
|
|
227
|
+
```python
|
|
228
|
+
audio = coll.get_audio(audio_id)
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
### Audio Properties
|
|
232
|
+
|
|
233
|
+
| Property | Type | Description |
|
|
234
|
+
|----------|------|-------------|
|
|
235
|
+
| `audio.id` | `str` | Unique audio ID |
|
|
236
|
+
| `audio.collection_id` | `str` | Parent collection ID |
|
|
237
|
+
| `audio.name` | `str` | Audio name |
|
|
238
|
+
| `audio.length` | `float` | Duration in seconds |
|
|
239
|
+
|
|
240
|
+
### Audio Methods
|
|
241
|
+
|
|
242
|
+
| Method | Returns | Description |
|
|
243
|
+
|--------|---------|-------------|
|
|
244
|
+
| `audio.generate_url()` | `str` | Generate signed URL for playback |
|
|
245
|
+
| `audio.get_transcript(start=None, end=None)` | `list[dict]` | Get timestamped transcript |
|
|
246
|
+
| `audio.get_transcript_text(start=None, end=None)` | `str` | Get full transcript text |
|
|
247
|
+
| `audio.generate_transcript(force=None)` | `dict` | Generate transcript |
|
|
248
|
+
| `audio.delete()` | `None` | Delete the audio |
|
|
249
|
+
|
|
250
|
+
## Image Object
|
|
251
|
+
|
|
252
|
+
```python
|
|
253
|
+
image = coll.get_image(image_id)
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
### Image Properties
|
|
257
|
+
|
|
258
|
+
| Property | Type | Description |
|
|
259
|
+
|----------|------|-------------|
|
|
260
|
+
| `image.id` | `str` | Unique image ID |
|
|
261
|
+
| `image.collection_id` | `str` | Parent collection ID |
|
|
262
|
+
| `image.name` | `str` | Image name |
|
|
263
|
+
| `image.url` | `str\|None` | Image URL (may be `None` for generated images — use `generate_url()` instead) |
|
|
264
|
+
|
|
265
|
+
### Image Methods
|
|
266
|
+
|
|
267
|
+
| Method | Returns | Description |
|
|
268
|
+
|--------|---------|-------------|
|
|
269
|
+
| `image.generate_url()` | `str` | Generate signed URL |
|
|
270
|
+
| `image.delete()` | `None` | Delete the image |
|
|
271
|
+
|
|
272
|
+
## Timeline & Editor
|
|
273
|
+
|
|
274
|
+
### Timeline
|
|
275
|
+
|
|
276
|
+
```python
|
|
277
|
+
from videodb.timeline import Timeline
|
|
278
|
+
|
|
279
|
+
timeline = Timeline(conn)
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
| Method | Returns | Description |
|
|
283
|
+
|--------|---------|-------------|
|
|
284
|
+
| `timeline.add_inline(asset)` | `None` | Add `VideoAsset` sequentially on main track |
|
|
285
|
+
| `timeline.add_overlay(start, asset)` | `None` | Overlay `AudioAsset`, `ImageAsset`, or `TextAsset` at timestamp |
|
|
286
|
+
| `timeline.generate_stream()` | `str` | Compile and get stream URL |
|
|
287
|
+
|
|
288
|
+
### Asset Types
|
|
289
|
+
|
|
290
|
+
#### VideoAsset
|
|
291
|
+
|
|
292
|
+
```python
|
|
293
|
+
from videodb.asset import VideoAsset
|
|
294
|
+
|
|
295
|
+
asset = VideoAsset(
|
|
296
|
+
asset_id=video.id,
|
|
297
|
+
start=0, # trim start (seconds)
|
|
298
|
+
end=None, # trim end (seconds, None = full)
|
|
299
|
+
)
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
#### AudioAsset
|
|
303
|
+
|
|
304
|
+
```python
|
|
305
|
+
from videodb.asset import AudioAsset
|
|
306
|
+
|
|
307
|
+
asset = AudioAsset(
|
|
308
|
+
asset_id=audio.id,
|
|
309
|
+
start=0,
|
|
310
|
+
end=None,
|
|
311
|
+
disable_other_tracks=True, # mute original audio when True
|
|
312
|
+
fade_in_duration=0, # seconds (max 5)
|
|
313
|
+
fade_out_duration=0, # seconds (max 5)
|
|
314
|
+
)
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
#### ImageAsset
|
|
318
|
+
|
|
319
|
+
```python
|
|
320
|
+
from videodb.asset import ImageAsset
|
|
321
|
+
|
|
322
|
+
asset = ImageAsset(
|
|
323
|
+
asset_id=image.id,
|
|
324
|
+
duration=None, # display duration (seconds)
|
|
325
|
+
width=100, # display width
|
|
326
|
+
height=100, # display height
|
|
327
|
+
x=80, # horizontal position (px from left)
|
|
328
|
+
y=20, # vertical position (px from top)
|
|
329
|
+
)
|
|
330
|
+
```
|
|
331
|
+
|
|
332
|
+
#### TextAsset
|
|
333
|
+
|
|
334
|
+
```python
|
|
335
|
+
from videodb.asset import TextAsset, TextStyle
|
|
336
|
+
|
|
337
|
+
asset = TextAsset(
|
|
338
|
+
text="Hello World",
|
|
339
|
+
duration=5,
|
|
340
|
+
style=TextStyle(
|
|
341
|
+
fontsize=24,
|
|
342
|
+
fontcolor="black",
|
|
343
|
+
boxcolor="white", # background box colour
|
|
344
|
+
alpha=1.0,
|
|
345
|
+
font="Sans",
|
|
346
|
+
text_align="T", # text alignment within box
|
|
347
|
+
),
|
|
348
|
+
)
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
#### CaptionAsset (Editor API)
|
|
352
|
+
|
|
353
|
+
CaptionAsset belongs to the Editor API, which has its own Timeline, Track, and Clip system:
|
|
354
|
+
|
|
355
|
+
```python
|
|
356
|
+
from videodb.editor import CaptionAsset, FontStyling
|
|
357
|
+
|
|
358
|
+
asset = CaptionAsset(
|
|
359
|
+
src="auto", # "auto" or base64 ASS string
|
|
360
|
+
font=FontStyling(name="Clear Sans", size=30),
|
|
361
|
+
primary_color="&H00FFFFFF",
|
|
362
|
+
)
|
|
363
|
+
```
|
|
364
|
+
|
|
365
|
+
See [editor.md](editor.md#caption-overlays) for full CaptionAsset usage with the Editor API.
|
|
366
|
+
|
|
367
|
+
## Video Search Parameters
|
|
368
|
+
|
|
369
|
+
```python
|
|
370
|
+
results = video.search(
|
|
371
|
+
query="your query",
|
|
372
|
+
search_type=SearchType.semantic, # semantic, keyword, or scene
|
|
373
|
+
index_type=IndexType.spoken_word, # spoken_word or scene
|
|
374
|
+
result_threshold=None, # max number of results
|
|
375
|
+
score_threshold=None, # minimum relevance score
|
|
376
|
+
dynamic_score_percentage=None, # percentage of dynamic score
|
|
377
|
+
scene_index_id=None, # target a specific scene index (pass via **kwargs)
|
|
378
|
+
filter=[], # metadata filters for scene search
|
|
379
|
+
)
|
|
380
|
+
```
|
|
381
|
+
|
|
382
|
+
> **Note:** `filter` is an explicit named parameter in `video.search()`. `scene_index_id` is passed through `**kwargs` to the API.
|
|
383
|
+
>
|
|
384
|
+
> **Important:** `video.search()` raises `InvalidRequestError` with message `"No results found"` when there are no matches. Always wrap search calls in try/except. For scene search, use `score_threshold=0.3` or higher to filter low-relevance noise.
|
|
385
|
+
|
|
386
|
+
For scene search, use `search_type=SearchType.semantic` with `index_type=IndexType.scene`. Pass `scene_index_id` when targeting a specific scene index. See [search.md](search.md) for details.
|
|
387
|
+
|
|
388
|
+
## SearchResult Object
|
|
389
|
+
|
|
390
|
+
```python
|
|
391
|
+
results = video.search("query", search_type=SearchType.semantic)
|
|
392
|
+
```
|
|
393
|
+
|
|
394
|
+
| Method | Returns | Description |
|
|
395
|
+
|--------|---------|-------------|
|
|
396
|
+
| `results.get_shots()` | `list[Shot]` | Get list of matching segments |
|
|
397
|
+
| `results.compile()` | `str` | Compile all shots into a stream URL |
|
|
398
|
+
| `results.play()` | `str` | Open compiled stream in browser |
|
|
399
|
+
|
|
400
|
+
### Shot Properties
|
|
401
|
+
|
|
402
|
+
| Property | Type | Description |
|
|
403
|
+
|----------|------|-------------|
|
|
404
|
+
| `shot.video_id` | `str` | Source video ID |
|
|
405
|
+
| `shot.video_length` | `float` | Source video duration |
|
|
406
|
+
| `shot.video_title` | `str` | Source video title |
|
|
407
|
+
| `shot.start` | `float` | Start time (seconds) |
|
|
408
|
+
| `shot.end` | `float` | End time (seconds) |
|
|
409
|
+
| `shot.text` | `str` | Matched text content |
|
|
410
|
+
| `shot.search_score` | `float` | Search relevance score |
|
|
411
|
+
|
|
412
|
+
| Method | Returns | Description |
|
|
413
|
+
|--------|---------|-------------|
|
|
414
|
+
| `shot.generate_stream()` | `str` | Stream this specific shot |
|
|
415
|
+
| `shot.play()` | `str` | Open shot stream in browser |
|
|
416
|
+
|
|
417
|
+
## Meeting Object
|
|
418
|
+
|
|
419
|
+
```python
|
|
420
|
+
meeting = coll.record_meeting(
|
|
421
|
+
meeting_url="https://meet.google.com/...",
|
|
422
|
+
bot_name="Bot",
|
|
423
|
+
callback_url=None, # Webhook URL for status updates
|
|
424
|
+
callback_data=None, # Optional dict passed through to callbacks
|
|
425
|
+
time_zone="UTC", # Time zone for the meeting
|
|
426
|
+
)
|
|
427
|
+
```
|
|
428
|
+
|
|
429
|
+
### Meeting Properties
|
|
430
|
+
|
|
431
|
+
| Property | Type | Description |
|
|
432
|
+
|----------|------|-------------|
|
|
433
|
+
| `meeting.id` | `str` | Unique meeting ID |
|
|
434
|
+
| `meeting.collection_id` | `str` | Parent collection ID |
|
|
435
|
+
| `meeting.status` | `str` | Current status |
|
|
436
|
+
| `meeting.video_id` | `str` | Recorded video ID (after completion) |
|
|
437
|
+
| `meeting.bot_name` | `str` | Bot name |
|
|
438
|
+
| `meeting.meeting_title` | `str` | Meeting title |
|
|
439
|
+
| `meeting.meeting_url` | `str` | Meeting URL |
|
|
440
|
+
| `meeting.speaker_timeline` | `dict` | Speaker timeline data |
|
|
441
|
+
| `meeting.is_active` | `bool` | True if initializing or processing |
|
|
442
|
+
| `meeting.is_completed` | `bool` | True if done |
|
|
443
|
+
|
|
444
|
+
### Meeting Methods
|
|
445
|
+
|
|
446
|
+
| Method | Returns | Description |
|
|
447
|
+
|--------|---------|-------------|
|
|
448
|
+
| `meeting.refresh()` | `Meeting` | Refresh data from server |
|
|
449
|
+
| `meeting.wait_for_status(target_status, timeout=14400, interval=120)` | `bool` | Poll until status reached |
|
|
450
|
+
|
|
451
|
+
## RTStream & Capture
|
|
452
|
+
|
|
453
|
+
For RTStream (live ingestion, indexing, transcription), see [rtstream-reference.md](rtstream-reference.md).
|
|
454
|
+
|
|
455
|
+
For capture sessions (desktop recording, CaptureClient, channels), see [capture-reference.md](capture-reference.md).
|
|
456
|
+
|
|
457
|
+
## Enums & Constants
|
|
458
|
+
|
|
459
|
+
### SearchType
|
|
460
|
+
|
|
461
|
+
```python
|
|
462
|
+
from videodb import SearchType
|
|
463
|
+
|
|
464
|
+
SearchType.semantic # Natural language semantic search
|
|
465
|
+
SearchType.keyword # Exact keyword matching
|
|
466
|
+
SearchType.scene # Visual scene search (may require paid plan)
|
|
467
|
+
SearchType.llm # LLM-powered search
|
|
468
|
+
```
|
|
469
|
+
|
|
470
|
+
### SceneExtractionType
|
|
471
|
+
|
|
472
|
+
```python
|
|
473
|
+
from videodb import SceneExtractionType
|
|
474
|
+
|
|
475
|
+
SceneExtractionType.shot_based # Automatic shot boundary detection
|
|
476
|
+
SceneExtractionType.time_based # Fixed time interval extraction
|
|
477
|
+
SceneExtractionType.transcript # Transcript-based scene extraction
|
|
478
|
+
```
|
|
479
|
+
|
|
480
|
+
### SubtitleStyle
|
|
481
|
+
|
|
482
|
+
```python
|
|
483
|
+
from videodb import SubtitleStyle
|
|
484
|
+
|
|
485
|
+
style = SubtitleStyle(
|
|
486
|
+
font_name="Arial",
|
|
487
|
+
font_size=18,
|
|
488
|
+
primary_colour="&H00FFFFFF",
|
|
489
|
+
bold=False,
|
|
490
|
+
# ... see SubtitleStyle for all options
|
|
491
|
+
)
|
|
492
|
+
video.add_subtitle(style=style)
|
|
493
|
+
```
|
|
494
|
+
|
|
495
|
+
### SubtitleAlignment & SubtitleBorderStyle
|
|
496
|
+
|
|
497
|
+
```python
|
|
498
|
+
from videodb import SubtitleAlignment, SubtitleBorderStyle
|
|
499
|
+
```
|
|
500
|
+
|
|
501
|
+
### TextStyle
|
|
502
|
+
|
|
503
|
+
```python
|
|
504
|
+
from videodb import TextStyle
|
|
505
|
+
# or: from videodb.asset import TextStyle
|
|
506
|
+
|
|
507
|
+
style = TextStyle(
|
|
508
|
+
fontsize=24,
|
|
509
|
+
fontcolor="black",
|
|
510
|
+
boxcolor="white",
|
|
511
|
+
font="Sans",
|
|
512
|
+
text_align="T",
|
|
513
|
+
alpha=1.0,
|
|
514
|
+
)
|
|
515
|
+
```
|
|
516
|
+
|
|
517
|
+
### Other Constants
|
|
518
|
+
|
|
519
|
+
```python
|
|
520
|
+
from videodb import (
|
|
521
|
+
IndexType, # spoken_word, scene
|
|
522
|
+
MediaType, # video, audio, image
|
|
523
|
+
Segmenter, # word, sentence, time
|
|
524
|
+
SegmentationType, # sentence, llm
|
|
525
|
+
TranscodeMode, # economy, lightning
|
|
526
|
+
ResizeMode, # crop, fit, pad
|
|
527
|
+
ReframeMode, # simple, smart
|
|
528
|
+
RTStreamChannelType,
|
|
529
|
+
)
|
|
530
|
+
```
|
|
531
|
+
|
|
532
|
+
## Exceptions
|
|
533
|
+
|
|
534
|
+
```python
|
|
535
|
+
from videodb.exceptions import (
|
|
536
|
+
AuthenticationError, # Invalid or missing API key
|
|
537
|
+
InvalidRequestError, # Bad parameters or malformed request
|
|
538
|
+
RequestTimeoutError, # Request timed out
|
|
539
|
+
SearchError, # Search operation failure (e.g. not indexed)
|
|
540
|
+
VideodbError, # Base exception for all VideoDB errors
|
|
541
|
+
)
|
|
542
|
+
```
|
|
543
|
+
|
|
544
|
+
| Exception | Common Cause |
|
|
545
|
+
|-----------|-------------|
|
|
546
|
+
| `AuthenticationError` | Missing or invalid `VIDEO_DB_API_KEY` |
|
|
547
|
+
| `InvalidRequestError` | Invalid URL, unsupported format, bad parameters |
|
|
548
|
+
| `RequestTimeoutError` | Server took too long to respond |
|
|
549
|
+
| `SearchError` | Searching before indexing, invalid search type |
|
|
550
|
+
| `VideodbError` | Server errors, network issues, generic failures |
|