vidpipe 1.3.16 → 1.3.18

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.d.ts CHANGED
@@ -217,6 +217,8 @@ interface ShortClip {
217
217
  isLoopCandidate?: boolean;
218
218
  /** Path to generated thumbnail image for this short clip */
219
219
  thumbnailPath?: string;
220
+ /** GitHub Issue number of the matched/created idea for this clip (per-clip idea tagging) */
221
+ ideaIssueNumber?: number;
220
222
  }
221
223
  /** A planned medium clip segment */
222
224
  interface MediumSegment {
@@ -256,6 +258,8 @@ interface MediumClip {
256
258
  microHooks?: string[];
257
259
  /** Path to generated thumbnail image for this medium clip */
258
260
  thumbnailPath?: string;
261
+ /** GitHub Issue number of the matched/created idea for this clip (per-clip idea tagging) */
262
+ ideaIssueNumber?: number;
259
263
  }
260
264
  interface SocialPost {
261
265
  platform: Platform;
@@ -331,6 +335,7 @@ declare enum PipelineStage {
331
335
  CaptionBurn = "caption-burn",
332
336
  IntroOutro = "intro-outro",
333
337
  Summary = "summary",
338
+ IdeaDiscovery = "idea-discovery",
334
339
  Shorts = "shorts",
335
340
  MediumClips = "medium-clips",
336
341
  SocialMedia = "social-media",
@@ -624,6 +629,160 @@ interface ScheduleSlot {
624
629
  }
625
630
  /** File extensions accepted as pipeline input. */
626
631
  declare const SUPPORTED_VIDEO_EXTENSIONS: readonly [".mp4", ".webm"];
632
+ /** Available modes for the `ideate start` command */
633
+ type StartMode = 'interview';
634
+ /** A single question-answer pair from an interview session */
635
+ interface QAPair {
636
+ /** The question asked by the agent */
637
+ question: string;
638
+ /** The user's response */
639
+ answer: string;
640
+ /** ISO 8601 timestamp of when the question was asked */
641
+ askedAt: string;
642
+ /** ISO 8601 timestamp of when the answer was provided */
643
+ answeredAt: string;
644
+ /** Sequential question number (1-based) */
645
+ questionNumber: number;
646
+ }
647
+ /** Context provided alongside a question */
648
+ interface QuestionContext {
649
+ /** Why this question is being asked */
650
+ rationale: string;
651
+ /** Which idea field this question explores (if any) */
652
+ targetField?: keyof CreateIdeaInput;
653
+ /** Sequential question number (1-based) */
654
+ questionNumber: number;
655
+ }
656
+ /** Insights discovered during an interview that can update idea fields */
657
+ interface InterviewInsights {
658
+ /** Refined talking points discovered from Q&A */
659
+ talkingPoints?: string[];
660
+ /** Refined key takeaway */
661
+ keyTakeaway?: string;
662
+ /** Refined hook angle */
663
+ hook?: string;
664
+ /** Refined audience description */
665
+ audience?: string;
666
+ /** Additional trend context discovered */
667
+ trendContext?: string;
668
+ /** New tags suggested */
669
+ tags?: string[];
670
+ }
671
+ /** Result of a completed interview session */
672
+ interface InterviewResult {
673
+ /** The idea that was interviewed */
674
+ ideaNumber: number;
675
+ /** Full Q&A transcript */
676
+ transcript: QAPair[];
677
+ /** Insights discovered by the agent */
678
+ insights: InterviewInsights;
679
+ /** Fields that were updated on the idea */
680
+ updatedFields: (keyof CreateIdeaInput)[];
681
+ /** Total duration of the interview in milliseconds */
682
+ durationMs: number;
683
+ /** Whether the interview completed naturally or was ended early */
684
+ endedBy: 'agent' | 'user';
685
+ }
686
+ /** Discriminated union of all interview events */
687
+ type InterviewEvent = InterviewStartEvent | QuestionAskedEvent | AnswerReceivedEvent | ThinkingStartEvent | ThinkingEndEvent | ToolCallStartEvent | ToolCallEndEvent | InsightDiscoveredEvent | InterviewCompleteEvent | InterviewErrorEvent;
688
+ interface InterviewStartEvent {
689
+ readonly event: 'interview:start';
690
+ readonly ideaNumber: number;
691
+ readonly mode: StartMode;
692
+ readonly ideaTopic: string;
693
+ readonly timestamp: string;
694
+ }
695
+ interface QuestionAskedEvent {
696
+ readonly event: 'question:asked';
697
+ readonly question: string;
698
+ readonly context: QuestionContext;
699
+ readonly timestamp: string;
700
+ }
701
+ interface AnswerReceivedEvent {
702
+ readonly event: 'answer:received';
703
+ readonly questionNumber: number;
704
+ readonly answer: string;
705
+ readonly timestamp: string;
706
+ }
707
+ interface ThinkingStartEvent {
708
+ readonly event: 'thinking:start';
709
+ readonly timestamp: string;
710
+ }
711
+ interface ThinkingEndEvent {
712
+ readonly event: 'thinking:end';
713
+ readonly durationMs: number;
714
+ readonly timestamp: string;
715
+ }
716
+ interface ToolCallStartEvent {
717
+ readonly event: 'tool:start';
718
+ readonly toolName: string;
719
+ readonly timestamp: string;
720
+ }
721
+ interface ToolCallEndEvent {
722
+ readonly event: 'tool:end';
723
+ readonly toolName: string;
724
+ readonly durationMs: number;
725
+ readonly timestamp: string;
726
+ }
727
+ interface InsightDiscoveredEvent {
728
+ readonly event: 'insight:discovered';
729
+ readonly insight: string;
730
+ readonly field: keyof CreateIdeaInput;
731
+ readonly timestamp: string;
732
+ }
733
+ interface InterviewCompleteEvent {
734
+ readonly event: 'interview:complete';
735
+ readonly result: InterviewResult;
736
+ readonly timestamp: string;
737
+ }
738
+ interface InterviewErrorEvent {
739
+ readonly event: 'interview:error';
740
+ readonly error: string;
741
+ readonly timestamp: string;
742
+ }
743
+ /**
744
+ * Async function that provides an answer to a question.
745
+ * Called by the agent when it needs user input.
746
+ * The SDK consumer or CLI UI implements this to show the question and collect the response.
747
+ */
748
+ type AnswerProvider = (question: string, context: QuestionContext) => Promise<string>;
749
+ /** A single section in a recording agenda, mapped to one idea. */
750
+ interface AgendaSection {
751
+ /** Section position (1-based) */
752
+ order: number;
753
+ /** Section title for the recording outline */
754
+ title: string;
755
+ /** GitHub Issue number of the idea this section covers */
756
+ ideaIssueNumber: number;
757
+ /** Estimated recording time in minutes */
758
+ estimatedMinutes: number;
759
+ /** Talking points to cover in this section (from the idea + agent refinement) */
760
+ talkingPoints: string[];
761
+ /** Transition phrase to lead into the NEXT section (empty for last section) */
762
+ transition: string;
763
+ /** Recording notes: key phrases, visual cues, energy direction */
764
+ notes: string;
765
+ }
766
+ /** Complete result from agenda generation. */
767
+ interface AgendaResult {
768
+ /** Ordered list of recording sections */
769
+ sections: AgendaSection[];
770
+ /** Opening hook/intro text for the recording */
771
+ intro: string;
772
+ /** Closing CTA/outro text */
773
+ outro: string;
774
+ /** Total estimated recording duration in minutes */
775
+ estimatedDuration: number;
776
+ /** Fully formatted markdown agenda ready to print or save */
777
+ markdown: string;
778
+ /** Generation duration in milliseconds */
779
+ durationMs: number;
780
+ }
781
+ /** Options for generating a recording agenda. */
782
+ interface GenerateAgendaOptions {
783
+ /** Override the output file path for the agenda markdown */
784
+ outputPath?: string;
785
+ }
627
786
 
628
787
  interface AppEnvironment {
629
788
  OPENAI_API_KEY: string;
@@ -762,6 +921,8 @@ interface ProcessOptions {
762
921
  skipVisualEnhancement?: boolean;
763
922
  /** Skip publishing generated social content */
764
923
  skipSocialPublish?: boolean;
924
+ /** ISO 8601 date for the publish-by deadline of auto-created ideas (default: 7 days from now) */
925
+ publishBy?: string;
765
926
  /** Callback for real-time pipeline progress events (stage starts, completions, errors) */
766
927
  onProgress?: (event: ProgressEvent) => void;
767
928
  }
@@ -816,6 +977,27 @@ interface DiagnosticResult {
816
977
  * Union of clip result types produced by VidPipe.
817
978
  */
818
979
  type GeneratedClip = ShortClip | MediumClip;
980
+ /**
981
+ * Options for starting an interactive interview session on an idea.
982
+ */
983
+ interface StartInterviewOptions {
984
+ /** Session mode (default: 'interview') */
985
+ mode?: StartMode;
986
+ /**
987
+ * Async function called when the agent asks a question.
988
+ * The SDK consumer shows the question and returns the user's answer.
989
+ */
990
+ answerProvider: AnswerProvider;
991
+ /** Callback for real-time interview events (questions, thinking, tool calls, insights) */
992
+ onEvent?: (event: InterviewEvent) => void;
993
+ }
994
+ /**
995
+ * Options for generating a recording agenda from multiple ideas.
996
+ */
997
+ interface GenerateAgendaSDKOptions {
998
+ /** Override the output file path for the agenda markdown */
999
+ outputPath?: string;
1000
+ }
819
1001
  /**
820
1002
  * Main VidPipe SDK interface.
821
1003
  */
@@ -824,6 +1006,10 @@ interface VidPipeSDK {
824
1006
  processVideo(videoPath: string, options?: ProcessOptions): Promise<PipelineResult>;
825
1007
  /** Generate AI-powered content ideas */
826
1008
  ideate(options?: IdeateOptions): Promise<Idea[]>;
1009
+ /** Start an interactive session to develop an idea (Socratic interview, etc.) */
1010
+ startInterview(ideaNumber: number, options: StartInterviewOptions): Promise<InterviewResult>;
1011
+ /** Generate a structured recording agenda from multiple ideas */
1012
+ generateAgenda(ideaNumbers: number[], options?: GenerateAgendaSDKOptions): Promise<AgendaResult>;
827
1013
  /** Idea management */
828
1014
  ideas: {
829
1015
  list(filters?: IdeaFilters): Promise<Idea[]>;
@@ -883,4 +1069,6 @@ declare function createVidPipe(sdkConfig?: VidPipeConfig): VidPipeSDK;
883
1069
 
884
1070
  type ProgressListener = (event: ProgressEvent) => void;
885
1071
 
886
- export { type AgentResult, type AspectRatio, type CaptionStyle, type Chapter, type CreateIdeaInput, type DiagnosticCheck, type DiagnosticResult, type EmotionalTrigger, type EnhancementOpportunity, type GeneratedClip, type GeneratedOverlay, type HookType, type Idea, type IdeaCommentData, type IdeaFilters, type IdeaPublishRecord, type IdeaStatus, type IdeateOptions, type MediumClip, type MediumClipType, type MediumNarrativeStructure, type MediumSegment, type OverlayPlacement, type OverlayRegion, PLATFORM_CHAR_LIMITS, type PipelineCompleteEvent, type PipelineResult, PipelineStage, type PipelineStartEvent, Platform, type ProcessOptions, type ProgressEvent, type ProgressListener, type RealignOptions, SUPPORTED_VIDEO_EXTENSIONS, type ScheduleSlot, type ScreenRegion, type Segment, type ShortClip, type ShortClipVariant, type ShortNarrativeStructure, type ShortSegment, type SilenceRemovalResult, type SlotOptions, type SocialPost, type StageCompleteEvent, type StageErrorEvent, type StageResult, type StageSkipEvent, type StageStartEvent, type Transcript, type VidPipeConfig, type VidPipeSDK, type VideoFile, type VideoLayout, type VideoPlatform, type VideoSnapshot, type VideoSummary, type VisualEnhancementResult, type WebcamRegion, type Word, createVidPipe, fromLatePlatform, normalizePlatformString, toLatePlatform };
1072
+ type InterviewListener = (event: InterviewEvent) => void;
1073
+
1074
+ export { type AgendaResult, type AgendaSection, type AgentResult, type AnswerProvider, type AnswerReceivedEvent, type AspectRatio, type CaptionStyle, type Chapter, type CreateIdeaInput, type DiagnosticCheck, type DiagnosticResult, type EmotionalTrigger, type EnhancementOpportunity, type GenerateAgendaOptions, type GeneratedClip, type GeneratedOverlay, type HookType, type Idea, type IdeaCommentData, type IdeaFilters, type IdeaPublishRecord, type IdeaStatus, type IdeateOptions, type InsightDiscoveredEvent, type InterviewCompleteEvent, type InterviewErrorEvent, type InterviewEvent, type InterviewInsights, type InterviewListener, type InterviewResult, type InterviewStartEvent, type MediumClip, type MediumClipType, type MediumNarrativeStructure, type MediumSegment, type OverlayPlacement, type OverlayRegion, PLATFORM_CHAR_LIMITS, type PipelineCompleteEvent, type PipelineResult, PipelineStage, type PipelineStartEvent, Platform, type ProcessOptions, type ProgressEvent, type ProgressListener, type QAPair, type QuestionAskedEvent, type QuestionContext, type RealignOptions, SUPPORTED_VIDEO_EXTENSIONS, type ScheduleSlot, type ScreenRegion, type Segment, type ShortClip, type ShortClipVariant, type ShortNarrativeStructure, type ShortSegment, type SilenceRemovalResult, type SlotOptions, type SocialPost, type StageCompleteEvent, type StageErrorEvent, type StageResult, type StageSkipEvent, type StageStartEvent, type StartInterviewOptions, type StartMode, type ThinkingEndEvent, type ThinkingStartEvent, type ToolCallEndEvent, type ToolCallStartEvent, type Transcript, type VidPipeConfig, type VidPipeSDK, type VideoFile, type VideoLayout, type VideoPlatform, type VideoSnapshot, type VideoSummary, type VisualEnhancementResult, type WebcamRegion, type Word, createVidPipe, fromLatePlatform, normalizePlatformString, toLatePlatform };