vidpipe 1.0.0 → 1.2.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.
Files changed (168) hide show
  1. package/README.md +35 -1
  2. package/dist/agents/BaseAgent.d.ts +17 -17
  3. package/dist/agents/BaseAgent.d.ts.map +1 -1
  4. package/dist/agents/BaseAgent.js +41 -47
  5. package/dist/agents/BaseAgent.js.map +1 -1
  6. package/dist/agents/SilenceRemovalAgent.d.ts.map +1 -1
  7. package/dist/agents/SilenceRemovalAgent.js +3 -2
  8. package/dist/agents/SilenceRemovalAgent.js.map +1 -1
  9. package/dist/commands/doctor.d.ts +4 -0
  10. package/dist/commands/doctor.d.ts.map +1 -0
  11. package/dist/commands/doctor.js +212 -0
  12. package/dist/commands/doctor.js.map +1 -0
  13. package/dist/config/environment.d.ts +3 -0
  14. package/dist/config/environment.d.ts.map +1 -1
  15. package/dist/config/environment.js +5 -2
  16. package/dist/config/environment.js.map +1 -1
  17. package/dist/config/ffmpegResolver.d.ts +3 -0
  18. package/dist/config/ffmpegResolver.d.ts.map +1 -0
  19. package/dist/config/ffmpegResolver.js +37 -0
  20. package/dist/config/ffmpegResolver.js.map +1 -0
  21. package/dist/config/pricing.d.ts +34 -0
  22. package/dist/config/pricing.d.ts.map +1 -0
  23. package/dist/config/pricing.js +71 -0
  24. package/dist/config/pricing.js.map +1 -0
  25. package/dist/index.js +12 -4
  26. package/dist/index.js.map +1 -1
  27. package/dist/pipeline.d.ts.map +1 -1
  28. package/dist/pipeline.js +37 -0
  29. package/dist/pipeline.js.map +1 -1
  30. package/dist/providers/ClaudeProvider.d.ts +14 -0
  31. package/dist/providers/ClaudeProvider.d.ts.map +1 -0
  32. package/dist/providers/ClaudeProvider.js +182 -0
  33. package/dist/providers/ClaudeProvider.js.map +1 -0
  34. package/dist/providers/CopilotProvider.d.ts +17 -0
  35. package/dist/providers/CopilotProvider.d.ts.map +1 -0
  36. package/dist/providers/CopilotProvider.js +149 -0
  37. package/dist/providers/CopilotProvider.js.map +1 -0
  38. package/dist/providers/OpenAIProvider.d.ts +14 -0
  39. package/dist/providers/OpenAIProvider.d.ts.map +1 -0
  40. package/dist/providers/OpenAIProvider.js +175 -0
  41. package/dist/providers/OpenAIProvider.js.map +1 -0
  42. package/dist/providers/index.d.ts +18 -0
  43. package/dist/providers/index.d.ts.map +1 -0
  44. package/dist/providers/index.js +61 -0
  45. package/dist/providers/index.js.map +1 -0
  46. package/dist/providers/types.d.ts +112 -0
  47. package/dist/providers/types.d.ts.map +1 -0
  48. package/dist/providers/types.js +8 -0
  49. package/dist/providers/types.js.map +1 -0
  50. package/dist/services/costTracker.d.ts +63 -0
  51. package/dist/services/costTracker.d.ts.map +1 -0
  52. package/dist/services/costTracker.js +137 -0
  53. package/dist/services/costTracker.js.map +1 -0
  54. package/dist/services/videoIngestion.d.ts.map +1 -1
  55. package/dist/services/videoIngestion.js +4 -3
  56. package/dist/services/videoIngestion.js.map +1 -1
  57. package/dist/tools/ffmpeg/aspectRatio.d.ts.map +1 -1
  58. package/dist/tools/ffmpeg/aspectRatio.js +2 -1
  59. package/dist/tools/ffmpeg/aspectRatio.js.map +1 -1
  60. package/dist/tools/ffmpeg/audioExtraction.d.ts.map +1 -1
  61. package/dist/tools/ffmpeg/audioExtraction.js +3 -2
  62. package/dist/tools/ffmpeg/audioExtraction.js.map +1 -1
  63. package/dist/tools/ffmpeg/captionBurning.d.ts.map +1 -1
  64. package/dist/tools/ffmpeg/captionBurning.js +2 -1
  65. package/dist/tools/ffmpeg/captionBurning.js.map +1 -1
  66. package/dist/tools/ffmpeg/clipExtraction.d.ts +16 -1
  67. package/dist/tools/ffmpeg/clipExtraction.d.ts.map +1 -1
  68. package/dist/tools/ffmpeg/clipExtraction.js +44 -7
  69. package/dist/tools/ffmpeg/clipExtraction.js.map +1 -1
  70. package/dist/tools/ffmpeg/faceDetection.d.ts.map +1 -1
  71. package/dist/tools/ffmpeg/faceDetection.js +3 -2
  72. package/dist/tools/ffmpeg/faceDetection.js.map +1 -1
  73. package/dist/tools/ffmpeg/frameCapture.d.ts.map +1 -1
  74. package/dist/tools/ffmpeg/frameCapture.js +3 -2
  75. package/dist/tools/ffmpeg/frameCapture.js.map +1 -1
  76. package/dist/tools/ffmpeg/silenceDetection.d.ts.map +1 -1
  77. package/dist/tools/ffmpeg/silenceDetection.js +2 -1
  78. package/dist/tools/ffmpeg/silenceDetection.js.map +1 -1
  79. package/dist/tools/ffmpeg/singlePassEdit.d.ts.map +1 -1
  80. package/dist/tools/ffmpeg/singlePassEdit.js +2 -1
  81. package/dist/tools/ffmpeg/singlePassEdit.js.map +1 -1
  82. package/dist/types/index.d.ts +1 -1
  83. package/dist/types/index.js +1 -1
  84. package/package.json +67 -63
  85. package/dist/__tests__/agents.test.d.ts +0 -2
  86. package/dist/__tests__/agents.test.d.ts.map +0 -1
  87. package/dist/__tests__/agents.test.js +0 -434
  88. package/dist/__tests__/agents.test.js.map +0 -1
  89. package/dist/__tests__/aspectRatio.test.d.ts +0 -2
  90. package/dist/__tests__/aspectRatio.test.d.ts.map +0 -1
  91. package/dist/__tests__/aspectRatio.test.js +0 -406
  92. package/dist/__tests__/aspectRatio.test.js.map +0 -1
  93. package/dist/__tests__/captionGenerator.test.d.ts +0 -2
  94. package/dist/__tests__/captionGenerator.test.d.ts.map +0 -1
  95. package/dist/__tests__/captionGenerator.test.js +0 -435
  96. package/dist/__tests__/captionGenerator.test.js.map +0 -1
  97. package/dist/__tests__/config.test.d.ts +0 -2
  98. package/dist/__tests__/config.test.d.ts.map +0 -1
  99. package/dist/__tests__/config.test.js +0 -81
  100. package/dist/__tests__/config.test.js.map +0 -1
  101. package/dist/__tests__/faceDetection.test.d.ts +0 -2
  102. package/dist/__tests__/faceDetection.test.d.ts.map +0 -1
  103. package/dist/__tests__/faceDetection.test.js +0 -372
  104. package/dist/__tests__/faceDetection.test.js.map +0 -1
  105. package/dist/__tests__/ffmpegTools.test.d.ts +0 -2
  106. package/dist/__tests__/ffmpegTools.test.d.ts.map +0 -1
  107. package/dist/__tests__/ffmpegTools.test.js +0 -464
  108. package/dist/__tests__/ffmpegTools.test.js.map +0 -1
  109. package/dist/__tests__/integration/captionBurn.test.d.ts +0 -2
  110. package/dist/__tests__/integration/captionBurn.test.d.ts.map +0 -1
  111. package/dist/__tests__/integration/captionBurn.test.js +0 -103
  112. package/dist/__tests__/integration/captionBurn.test.js.map +0 -1
  113. package/dist/__tests__/integration/clipComposite.test.d.ts +0 -2
  114. package/dist/__tests__/integration/clipComposite.test.d.ts.map +0 -1
  115. package/dist/__tests__/integration/clipComposite.test.js +0 -56
  116. package/dist/__tests__/integration/clipComposite.test.js.map +0 -1
  117. package/dist/__tests__/integration/faceDetection.test.d.ts +0 -2
  118. package/dist/__tests__/integration/faceDetection.test.d.ts.map +0 -1
  119. package/dist/__tests__/integration/faceDetection.test.js +0 -85
  120. package/dist/__tests__/integration/faceDetection.test.js.map +0 -1
  121. package/dist/__tests__/integration/ffmpegPipeline.test.d.ts +0 -2
  122. package/dist/__tests__/integration/ffmpegPipeline.test.d.ts.map +0 -1
  123. package/dist/__tests__/integration/ffmpegPipeline.test.js +0 -88
  124. package/dist/__tests__/integration/ffmpegPipeline.test.js.map +0 -1
  125. package/dist/__tests__/integration/fixture.d.ts +0 -19
  126. package/dist/__tests__/integration/fixture.d.ts.map +0 -1
  127. package/dist/__tests__/integration/fixture.js +0 -112
  128. package/dist/__tests__/integration/fixture.js.map +0 -1
  129. package/dist/__tests__/integration/fixture.test.d.ts +0 -2
  130. package/dist/__tests__/integration/fixture.test.d.ts.map +0 -1
  131. package/dist/__tests__/integration/fixture.test.js +0 -27
  132. package/dist/__tests__/integration/fixture.test.js.map +0 -1
  133. package/dist/__tests__/integration/realCaptions.test.d.ts +0 -2
  134. package/dist/__tests__/integration/realCaptions.test.d.ts.map +0 -1
  135. package/dist/__tests__/integration/realCaptions.test.js +0 -226
  136. package/dist/__tests__/integration/realCaptions.test.js.map +0 -1
  137. package/dist/__tests__/integration/realPipeline.test.d.ts +0 -2
  138. package/dist/__tests__/integration/realPipeline.test.d.ts.map +0 -1
  139. package/dist/__tests__/integration/realPipeline.test.js +0 -210
  140. package/dist/__tests__/integration/realPipeline.test.js.map +0 -1
  141. package/dist/__tests__/integration/silenceRemoval.test.d.ts +0 -2
  142. package/dist/__tests__/integration/silenceRemoval.test.d.ts.map +0 -1
  143. package/dist/__tests__/integration/silenceRemoval.test.js +0 -93
  144. package/dist/__tests__/integration/silenceRemoval.test.js.map +0 -1
  145. package/dist/__tests__/pipeline.test.d.ts +0 -2
  146. package/dist/__tests__/pipeline.test.d.ts.map +0 -1
  147. package/dist/__tests__/pipeline.test.js +0 -434
  148. package/dist/__tests__/pipeline.test.js.map +0 -1
  149. package/dist/__tests__/services.test.d.ts +0 -2
  150. package/dist/__tests__/services.test.d.ts.map +0 -1
  151. package/dist/__tests__/services.test.js +0 -655
  152. package/dist/__tests__/services.test.js.map +0 -1
  153. package/dist/__tests__/silenceRemoval.test.d.ts +0 -2
  154. package/dist/__tests__/silenceRemoval.test.d.ts.map +0 -1
  155. package/dist/__tests__/silenceRemoval.test.js +0 -266
  156. package/dist/__tests__/silenceRemoval.test.js.map +0 -1
  157. package/dist/__tests__/singlePassEdit.test.d.ts +0 -2
  158. package/dist/__tests__/singlePassEdit.test.d.ts.map +0 -1
  159. package/dist/__tests__/singlePassEdit.test.js +0 -321
  160. package/dist/__tests__/singlePassEdit.test.js.map +0 -1
  161. package/dist/__tests__/smoke.test.d.ts +0 -2
  162. package/dist/__tests__/smoke.test.d.ts.map +0 -1
  163. package/dist/__tests__/smoke.test.js +0 -8
  164. package/dist/__tests__/smoke.test.js.map +0 -1
  165. package/dist/__tests__/utilities.test.d.ts +0 -2
  166. package/dist/__tests__/utilities.test.d.ts.map +0 -1
  167. package/dist/__tests__/utilities.test.js +0 -268
  168. package/dist/__tests__/utilities.test.js.map +0 -1
package/README.md CHANGED
@@ -44,6 +44,18 @@ npm install -g vidpipe
44
44
  # Install globally
45
45
  npm install -g vidpipe
46
46
 
47
+ # Set up your environment
48
+ # Unix/Mac
49
+ cp .env.example .env
50
+ # Windows (PowerShell)
51
+ Copy-Item .env.example .env
52
+
53
+ # Then edit .env and add your OpenAI API key (REQUIRED):
54
+ # OPENAI_API_KEY=sk-your-key-here
55
+
56
+ # Verify all prerequisites are met
57
+ vidpipe --doctor
58
+
47
59
  # Process a single video
48
60
  vidpipe /path/to/video.mp4
49
61
 
@@ -59,7 +71,12 @@ vidpipe \
59
71
  --verbose
60
72
  ```
61
73
 
62
- > **Prerequisites:** Node.js 20+, FFmpeg 6.0+, and an OpenAI API key.
74
+ > **Prerequisites:**
75
+ > - **Node.js 20+**
76
+ > - **FFmpeg 6.0+** — Automatically included via `npm install` (bundled by [`ffmpeg-static`](https://www.npmjs.com/package/ffmpeg-static)). Override with `FFMPEG_PATH` env var if you need a specific build.
77
+ > - **OpenAI API key** (**required**) — Get one at [platform.openai.com/api-keys](https://platform.openai.com/api-keys). Needed for Whisper transcription and all AI features.
78
+ > - **GitHub Copilot subscription** — Required for AI agent features (shorts generation, social media posts, summaries, blog posts). See [GitHub Copilot](https://github.com/features/copilot).
79
+ >
63
80
  > See [Getting Started](./docs/getting-started.md) for full setup instructions.
64
81
 
65
82
  ---
@@ -72,6 +89,7 @@ vidpipe [options] [video-path]
72
89
 
73
90
  | Option | Description |
74
91
  |--------|-------------|
92
+ | `--doctor` | Check that all prerequisites (FFmpeg, API keys, etc.) are installed and configured |
75
93
  | `[video-path]` | Process a specific video file (implies `--once`) |
76
94
  | `--watch-dir <path>` | Folder to watch for new recordings |
77
95
  | `--output-dir <path>` | Output directory (default: `./recordings`) |
@@ -163,6 +181,22 @@ Each stage can be independently skipped with `--no-*` flags. A stage failure doe
163
181
 
164
182
  ---
165
183
 
184
+ ## šŸ¤– LLM Providers
185
+
186
+ VidPipe supports multiple LLM providers:
187
+
188
+ | Provider | Env Var | Default Model | Notes |
189
+ |----------|---------|---------------|-------|
190
+ | `copilot` (default) | — | Claude Opus 4.6 | Uses GitHub Copilot auth |
191
+ | `openai` | `OPENAI_API_KEY` | gpt-4o | Direct OpenAI API |
192
+ | `claude` | `ANTHROPIC_API_KEY` | claude-opus-4.6 | Direct Anthropic API |
193
+
194
+ Set `LLM_PROVIDER` in your `.env` or pass via CLI. Override model with `LLM_MODEL`.
195
+
196
+ The pipeline tracks token usage and estimated cost across all providers, displaying a summary at the end of each run.
197
+
198
+ ---
199
+
166
200
  ## āš™ļø Configuration
167
201
 
168
202
  Configuration is loaded from CLI flags → environment variables → `.env` file → defaults.
@@ -1,6 +1,6 @@
1
- import { CopilotClient, CopilotSession, Tool } from '@github/copilot-sdk';
1
+ import type { LLMProvider, LLMSession, ToolWithHandler } from '../providers/types.js';
2
2
  /**
3
- * BaseAgent — abstract foundation for all Copilot SDK agents.
3
+ * BaseAgent — abstract foundation for all LLM-powered agents.
4
4
  *
5
5
  * ### Agent pattern
6
6
  * Each agent in the pipeline (SummaryAgent, ShortsAgent, BlogAgent, etc.)
@@ -9,14 +9,14 @@ import { CopilotClient, CopilotSession, Tool } from '@github/copilot-sdk';
9
9
  * - `handleToolCall()` — dispatches tool invocations to concrete implementations
10
10
  *
11
11
  * ### Tool registration
12
- * Tools are declared as JSON Schema objects and passed to the CopilotSession
13
- * at creation time. When the LLM decides to call a tool, the SDK routes the
14
- * call through `handleToolCall()` where the subclass executes the actual logic
15
- * (e.g. reading files, running FFmpeg, querying APIs).
12
+ * Tools are declared as JSON Schema objects and passed to the LLMSession
13
+ * at creation time. When the LLM decides to call a tool, the provider routes
14
+ * the call through the tool handler where the subclass executes the actual
15
+ * logic (e.g. reading files, running FFmpeg, querying APIs).
16
16
  *
17
17
  * ### Message flow
18
- * 1. `run(userMessage)` lazily creates a CopilotClient (starts the Copilot
19
- * backend process) and a CopilotSession (with system prompt + tools).
18
+ * 1. `run(userMessage)` lazily creates an LLMSession via the configured
19
+ * provider (Copilot, OpenAI, or Claude).
20
20
  * 2. The user message is sent via `sendAndWait()`, which blocks until the
21
21
  * LLM produces a final response (with a 5-minute timeout).
22
22
  * 3. During processing, the LLM may invoke tools multiple times — each call
@@ -29,24 +29,24 @@ import { CopilotClient, CopilotSession, Tool } from '@github/copilot-sdk';
29
29
  export declare abstract class BaseAgent {
30
30
  protected readonly agentName: string;
31
31
  protected readonly systemPrompt: string;
32
- protected client: CopilotClient | null;
33
- protected session: CopilotSession | null;
34
- constructor(agentName: string, systemPrompt: string);
32
+ protected provider: LLMProvider;
33
+ protected session: LLMSession | null;
34
+ constructor(agentName: string, systemPrompt: string, provider?: LLMProvider);
35
35
  /** Tools this agent exposes to the LLM. Override in subclasses. */
36
- protected getTools(): Tool<unknown>[];
36
+ protected getTools(): ToolWithHandler[];
37
37
  /** Dispatch a tool call to the concrete agent. Override in subclasses. */
38
38
  protected abstract handleToolCall(toolName: string, args: Record<string, unknown>): Promise<unknown>;
39
39
  /**
40
40
  * Send a user message to the agent and return the final response text.
41
41
  *
42
- * 1. Lazily creates a CopilotClient + CopilotSession
43
- * 2. Registers an event listener to accumulate the response
44
- * 3. Calls sendAndWait and returns the completed message
42
+ * 1. Lazily creates an LLMSession via the provider
43
+ * 2. Registers event listeners for logging
44
+ * 3. Calls sendAndWait and records usage via CostTracker
45
45
  */
46
46
  run(userMessage: string): Promise<string>;
47
- /** Wire up session event listeners for logging / streaming. */
47
+ /** Wire up session event listeners for logging. */
48
48
  private setupEventHandlers;
49
- /** Tear down the client + session. */
49
+ /** Tear down the session. */
50
50
  destroy(): Promise<void>;
51
51
  }
52
52
  //# sourceMappingURL=BaseAgent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BaseAgent.d.ts","sourceRoot":"","sources":["../../src/agents/BaseAgent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,IAAI,EAAgB,MAAM,qBAAqB,CAAA;AAGvF;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,8BAAsB,SAAS;IAK3B,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM;IACpC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM;IALzC,SAAS,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAAO;IAC7C,SAAS,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAAO;gBAG1B,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM;IAGzC,mEAAmE;IACnE,SAAS,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE;IAIrC,0EAA0E;IAC1E,SAAS,CAAC,QAAQ,CAAC,cAAc,CAC/B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,OAAO,CAAC;IAEnB;;;;;;OAMG;IACG,GAAG,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA0B/C,+DAA+D;IAC/D,OAAO,CAAC,kBAAkB;IA6B1B,sCAAsC;IAChC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAc/B"}
1
+ {"version":3,"file":"BaseAgent.d.ts","sourceRoot":"","sources":["../../src/agents/BaseAgent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAKrF;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,8BAAsB,SAAS;IAK3B,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM;IACpC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM;IALzC,SAAS,CAAC,QAAQ,EAAE,WAAW,CAAA;IAC/B,SAAS,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI,CAAO;gBAGtB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACvC,QAAQ,CAAC,EAAE,WAAW;IAKxB,mEAAmE;IACnE,SAAS,CAAC,QAAQ,IAAI,eAAe,EAAE;IAIvC,0EAA0E;IAC1E,SAAS,CAAC,QAAQ,CAAC,cAAc,CAC/B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,OAAO,CAAC;IAEnB;;;;;;OAMG;IACG,GAAG,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAkC/C,mDAAmD;IACnD,OAAO,CAAC,kBAAkB;IAkB1B,6BAA6B;IACvB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAU/B"}
@@ -1,7 +1,8 @@
1
- import { CopilotClient } from '@github/copilot-sdk';
2
- import logger from '../config/logger';
1
+ import { getProvider } from '../providers/index.js';
2
+ import { costTracker } from '../services/costTracker.js';
3
+ import logger from '../config/logger.js';
3
4
  /**
4
- * BaseAgent — abstract foundation for all Copilot SDK agents.
5
+ * BaseAgent — abstract foundation for all LLM-powered agents.
5
6
  *
6
7
  * ### Agent pattern
7
8
  * Each agent in the pipeline (SummaryAgent, ShortsAgent, BlogAgent, etc.)
@@ -10,14 +11,14 @@ import logger from '../config/logger';
10
11
  * - `handleToolCall()` — dispatches tool invocations to concrete implementations
11
12
  *
12
13
  * ### Tool registration
13
- * Tools are declared as JSON Schema objects and passed to the CopilotSession
14
- * at creation time. When the LLM decides to call a tool, the SDK routes the
15
- * call through `handleToolCall()` where the subclass executes the actual logic
16
- * (e.g. reading files, running FFmpeg, querying APIs).
14
+ * Tools are declared as JSON Schema objects and passed to the LLMSession
15
+ * at creation time. When the LLM decides to call a tool, the provider routes
16
+ * the call through the tool handler where the subclass executes the actual
17
+ * logic (e.g. reading files, running FFmpeg, querying APIs).
17
18
  *
18
19
  * ### Message flow
19
- * 1. `run(userMessage)` lazily creates a CopilotClient (starts the Copilot
20
- * backend process) and a CopilotSession (with system prompt + tools).
20
+ * 1. `run(userMessage)` lazily creates an LLMSession via the configured
21
+ * provider (Copilot, OpenAI, or Claude).
21
22
  * 2. The user message is sent via `sendAndWait()`, which blocks until the
22
23
  * LLM produces a final response (with a 5-minute timeout).
23
24
  * 3. During processing, the LLM may invoke tools multiple times — each call
@@ -30,11 +31,12 @@ import logger from '../config/logger';
30
31
  export class BaseAgent {
31
32
  agentName;
32
33
  systemPrompt;
33
- client = null;
34
+ provider;
34
35
  session = null;
35
- constructor(agentName, systemPrompt) {
36
+ constructor(agentName, systemPrompt, provider) {
36
37
  this.agentName = agentName;
37
38
  this.systemPrompt = systemPrompt;
39
+ this.provider = provider ?? getProvider();
38
40
  }
39
41
  /** Tools this agent exposes to the LLM. Override in subclasses. */
40
42
  getTools() {
@@ -43,62 +45,54 @@ export class BaseAgent {
43
45
  /**
44
46
  * Send a user message to the agent and return the final response text.
45
47
  *
46
- * 1. Lazily creates a CopilotClient + CopilotSession
47
- * 2. Registers an event listener to accumulate the response
48
- * 3. Calls sendAndWait and returns the completed message
48
+ * 1. Lazily creates an LLMSession via the provider
49
+ * 2. Registers event listeners for logging
50
+ * 3. Calls sendAndWait and records usage via CostTracker
49
51
  */
50
52
  async run(userMessage) {
51
- if (!this.client) {
52
- this.client = new CopilotClient({ autoStart: true, logLevel: 'error' });
53
- }
54
53
  if (!this.session) {
55
- this.session = await this.client.createSession({
56
- systemMessage: { mode: 'replace', content: this.systemPrompt },
54
+ this.session = await this.provider.createSession({
55
+ systemPrompt: this.systemPrompt,
57
56
  tools: this.getTools(),
58
57
  streaming: true,
58
+ model: process.env.LLM_MODEL || undefined,
59
+ timeoutMs: 300_000, // 5 min timeout
59
60
  });
60
61
  this.setupEventHandlers(this.session);
61
62
  }
62
63
  logger.info(`[${this.agentName}] Sending message: ${userMessage.substring(0, 80)}…`);
63
- const response = await this.session.sendAndWait({ prompt: userMessage }, 300_000);
64
- const content = response?.data?.content ?? '';
64
+ costTracker.setAgent(this.agentName);
65
+ const response = await this.session.sendAndWait(userMessage);
66
+ // Record usage via CostTracker
67
+ costTracker.recordUsage(this.provider.name, response.cost?.model ?? this.provider.getDefaultModel(), response.usage, response.cost, response.durationMs, response.quotaSnapshots
68
+ ? Object.values(response.quotaSnapshots)[0]
69
+ : undefined);
70
+ const content = response.content;
65
71
  logger.info(`[${this.agentName}] Response received (${content.length} chars)`);
66
72
  return content;
67
73
  }
68
- /** Wire up session event listeners for logging / streaming. */
74
+ /** Wire up session event listeners for logging. */
69
75
  setupEventHandlers(session) {
70
- session.on((event) => {
71
- switch (event.type) {
72
- case 'assistant.message_delta':
73
- // Streaming delta — log at debug level to avoid noise
74
- logger.debug(`[${this.agentName}] delta: ${event.data.deltaContent}`);
75
- break;
76
- case 'assistant.message':
77
- logger.debug(`[${this.agentName}] message complete`);
78
- break;
79
- case 'tool.execution_start':
80
- logger.info(`[${this.agentName}] tool start: ${event.data.toolName}`);
81
- break;
82
- case 'tool.execution_complete':
83
- logger.info(`[${this.agentName}] tool done: ${event.data.toolCallId} success=${event.data.success}`);
84
- break;
85
- case 'session.error':
86
- logger.error(`[${this.agentName}] error: ${event.data.message}`);
87
- break;
88
- }
76
+ session.on('delta', (event) => {
77
+ logger.debug(`[${this.agentName}] delta: ${JSON.stringify(event.data)}`);
78
+ });
79
+ session.on('tool_start', (event) => {
80
+ logger.info(`[${this.agentName}] tool start: ${JSON.stringify(event.data)}`);
81
+ });
82
+ session.on('tool_end', (event) => {
83
+ logger.info(`[${this.agentName}] tool done: ${JSON.stringify(event.data)}`);
84
+ });
85
+ session.on('error', (event) => {
86
+ logger.error(`[${this.agentName}] error: ${JSON.stringify(event.data)}`);
89
87
  });
90
88
  }
91
- /** Tear down the client + session. */
89
+ /** Tear down the session. */
92
90
  async destroy() {
93
91
  try {
94
92
  if (this.session) {
95
- await this.session.destroy();
93
+ await this.session.close();
96
94
  this.session = null;
97
95
  }
98
- if (this.client) {
99
- await this.client.stop();
100
- this.client = null;
101
- }
102
96
  }
103
97
  catch (err) {
104
98
  logger.error(`[${this.agentName}] Error during destroy: ${err}`);
@@ -1 +1 @@
1
- {"version":3,"file":"BaseAgent.js","sourceRoot":"","sources":["../../src/agents/BaseAgent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAsC,MAAM,qBAAqB,CAAA;AACvF,OAAO,MAAM,MAAM,kBAAkB,CAAA;AAErC;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,OAAgB,SAAS;IAKR;IACA;IALX,MAAM,GAAyB,IAAI,CAAA;IACnC,OAAO,GAA0B,IAAI,CAAA;IAE/C,YACqB,SAAiB,EACjB,YAAoB;QADpB,cAAS,GAAT,SAAS,CAAQ;QACjB,iBAAY,GAAZ,YAAY,CAAQ;IACtC,CAAC;IAEJ,mEAAmE;IACzD,QAAQ;QAChB,OAAO,EAAE,CAAA;IACX,CAAC;IAQD;;;;;;OAMG;IACH,KAAK,CAAC,GAAG,CAAC,WAAmB;QAC3B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,MAAM,GAAG,IAAI,aAAa,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAA;QACzE,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;gBAC7C,aAAa,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE;gBAC9D,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE;gBACtB,SAAS,EAAE,IAAI;aAChB,CAAC,CAAA;YACF,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACvC,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,sBAAsB,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAA;QAEpF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAC7C,EAAE,MAAM,EAAE,WAAW,EAAE,EACvB,OAAO,CACR,CAAA;QAED,MAAM,OAAO,GAAG,QAAQ,EAAE,IAAI,EAAE,OAAO,IAAI,EAAE,CAAA;QAC7C,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,wBAAwB,OAAO,CAAC,MAAM,SAAS,CAAC,CAAA;QAC9E,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,+DAA+D;IACvD,kBAAkB,CAAC,OAAuB;QAChD,OAAO,CAAC,EAAE,CAAC,CAAC,KAAmB,EAAE,EAAE;YACjC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;gBACnB,KAAK,yBAAyB;oBAC5B,sDAAsD;oBACtD,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,SAAS,YAAY,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAA;oBACrE,MAAK;gBAEP,KAAK,mBAAmB;oBACtB,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,SAAS,oBAAoB,CAAC,CAAA;oBACpD,MAAK;gBAEP,KAAK,sBAAsB;oBACzB,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,iBAAiB,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;oBACrE,MAAK;gBAEP,KAAK,yBAAyB;oBAC5B,MAAM,CAAC,IAAI,CACT,IAAI,IAAI,CAAC,SAAS,gBAAgB,KAAK,CAAC,IAAI,CAAC,UAAU,YAAY,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CACxF,CAAA;oBACD,MAAK;gBAEP,KAAK,eAAe;oBAClB,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,SAAS,YAAY,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA;oBAChE,MAAK;YACT,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,sCAAsC;IACtC,KAAK,CAAC,OAAO;QACX,IAAI,CAAC;YACH,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAA;gBAC5B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;YACrB,CAAC;YACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;gBACxB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;YACpB,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,SAAS,2BAA2B,GAAG,EAAE,CAAC,CAAA;QAClE,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"BaseAgent.js","sourceRoot":"","sources":["../../src/agents/BaseAgent.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SilenceRemovalAgent.d.ts","sourceRoot":"","sources":["../../src/agents/SilenceRemovalAgent.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAmH3E;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,SAAS,EAChB,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,oBAAoB,CAAC,CAsI/B"}
1
+ {"version":3,"file":"SilenceRemovalAgent.d.ts","sourceRoot":"","sources":["../../src/agents/SilenceRemovalAgent.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAoH3E;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,SAAS,EAChB,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,oBAAoB,CAAC,CAsI/B"}
@@ -4,8 +4,9 @@ import { BaseAgent } from './BaseAgent';
4
4
  import { detectSilence } from '../tools/ffmpeg/silenceDetection';
5
5
  import { singlePassEdit } from '../tools/ffmpeg/singlePassEdit';
6
6
  import logger from '../config/logger';
7
- const ffmpegPath = process.env.FFMPEG_PATH || 'ffmpeg';
8
- const ffprobePath = process.env.FFPROBE_PATH || 'ffprobe';
7
+ import { getFFmpegPath, getFFprobePath } from '../config/ffmpegResolver.js';
8
+ const ffmpegPath = getFFmpegPath();
9
+ const ffprobePath = getFFprobePath();
9
10
  ffmpeg.setFfmpegPath(ffmpegPath);
10
11
  ffmpeg.setFfprobePath(ffprobePath);
11
12
  // ── System prompt ───────────────────────────────────────────────────────────
@@ -1 +1 @@
1
- {"version":3,"file":"SilenceRemovalAgent.js","sourceRoot":"","sources":["../../src/agents/SilenceRemovalAgent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SilenceRemovalAgent.js","sourceRoot":"","sources":["../../src/agents/SilenceRemovalAgent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ /** Normalize LLM_PROVIDER the same way the provider factory does. */
2
+ export declare function normalizeProviderName(raw: string | undefined): string;
3
+ export declare function runDoctor(): void;
4
+ //# sourceMappingURL=doctor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAeA,qEAAqE;AACrE,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAErE;AAsID,wBAAgB,SAAS,IAAI,IAAI,CA0EhC"}
@@ -0,0 +1,212 @@
1
+ import { spawnSync } from 'child_process';
2
+ import { existsSync } from 'fs';
3
+ import { createRequire } from 'module';
4
+ import path from 'path';
5
+ const require = createRequire(import.meta.url);
6
+ /** Normalize LLM_PROVIDER the same way the provider factory does. */
7
+ export function normalizeProviderName(raw) {
8
+ return (raw || 'copilot').trim().toLowerCase();
9
+ }
10
+ function resolveFFmpegPath() {
11
+ if (process.env.FFMPEG_PATH) {
12
+ return { path: process.env.FFMPEG_PATH, source: 'FFMPEG_PATH env' };
13
+ }
14
+ try {
15
+ const staticPath = require('ffmpeg-static');
16
+ if (staticPath && existsSync(staticPath)) {
17
+ return { path: staticPath, source: 'ffmpeg-static' };
18
+ }
19
+ }
20
+ catch { /* not available */ }
21
+ return { path: 'ffmpeg', source: 'system PATH' };
22
+ }
23
+ function resolveFFprobePath() {
24
+ if (process.env.FFPROBE_PATH) {
25
+ return { path: process.env.FFPROBE_PATH, source: 'FFPROBE_PATH env' };
26
+ }
27
+ try {
28
+ const { path: probePath } = require('@ffprobe-installer/ffprobe');
29
+ if (probePath && existsSync(probePath)) {
30
+ return { path: probePath, source: '@ffprobe-installer/ffprobe' };
31
+ }
32
+ }
33
+ catch { /* not available */ }
34
+ return { path: 'ffprobe', source: 'system PATH' };
35
+ }
36
+ function parseVersionFromOutput(output) {
37
+ const match = output.match(/(\d+\.\d+(?:\.\d+)?)/);
38
+ return match ? match[1] : 'unknown';
39
+ }
40
+ function checkNode() {
41
+ const raw = process.version; // e.g. "v20.11.1"
42
+ const major = parseInt(raw.slice(1), 10);
43
+ const ok = major >= 20;
44
+ return {
45
+ label: 'Node.js',
46
+ ok,
47
+ required: true,
48
+ message: ok
49
+ ? `Node.js ${raw} (required: ≄20)`
50
+ : `Node.js ${raw} — version ≄20 required`,
51
+ };
52
+ }
53
+ function checkFFmpeg() {
54
+ const { path: binPath, source } = resolveFFmpegPath();
55
+ try {
56
+ const result = spawnSync(binPath, ['-version'], { encoding: 'utf-8', timeout: 10_000 });
57
+ if (result.status === 0 && result.stdout) {
58
+ const ver = parseVersionFromOutput(result.stdout);
59
+ return { label: 'FFmpeg', ok: true, required: true, message: `FFmpeg ${ver} (source: ${source})` };
60
+ }
61
+ }
62
+ catch { /* spawn failed */ }
63
+ return {
64
+ label: 'FFmpeg',
65
+ ok: false,
66
+ required: true,
67
+ message: 'FFmpeg not found — install with: winget install Gyan.FFmpeg (Windows) / brew install ffmpeg (macOS)',
68
+ };
69
+ }
70
+ function checkFFprobe() {
71
+ const { path: binPath, source } = resolveFFprobePath();
72
+ try {
73
+ const result = spawnSync(binPath, ['-version'], { encoding: 'utf-8', timeout: 10_000 });
74
+ if (result.status === 0 && result.stdout) {
75
+ const ver = parseVersionFromOutput(result.stdout);
76
+ return { label: 'FFprobe', ok: true, required: true, message: `FFprobe ${ver} (source: ${source})` };
77
+ }
78
+ }
79
+ catch { /* spawn failed */ }
80
+ return {
81
+ label: 'FFprobe',
82
+ ok: false,
83
+ required: true,
84
+ message: 'FFprobe not found — install with: winget install Gyan.FFmpeg (Windows) / brew install ffmpeg (macOS)',
85
+ };
86
+ }
87
+ function checkOpenAIKey() {
88
+ const set = !!process.env.OPENAI_API_KEY;
89
+ return {
90
+ label: 'OPENAI_API_KEY',
91
+ ok: set,
92
+ required: true,
93
+ message: set
94
+ ? 'OPENAI_API_KEY is set'
95
+ : 'OPENAI_API_KEY not set — get one at https://platform.openai.com/api-keys',
96
+ };
97
+ }
98
+ function checkExaKey() {
99
+ const set = !!process.env.EXA_API_KEY;
100
+ return {
101
+ label: 'EXA_API_KEY',
102
+ ok: set,
103
+ required: false,
104
+ message: set
105
+ ? 'EXA_API_KEY is set'
106
+ : 'EXA_API_KEY not set (optional — web search in social posts)',
107
+ };
108
+ }
109
+ function checkGit() {
110
+ try {
111
+ const result = spawnSync('git', ['--version'], { encoding: 'utf-8', timeout: 10_000 });
112
+ if (result.status === 0 && result.stdout) {
113
+ const ver = parseVersionFromOutput(result.stdout);
114
+ return { label: 'Git', ok: true, required: false, message: `Git ${ver}` };
115
+ }
116
+ }
117
+ catch { /* spawn failed */ }
118
+ return {
119
+ label: 'Git',
120
+ ok: false,
121
+ required: false,
122
+ message: 'Git not found (optional — needed for auto-commit stage)',
123
+ };
124
+ }
125
+ function checkWatchFolder() {
126
+ const watchDir = process.env.WATCH_FOLDER || path.join(process.cwd(), 'watch');
127
+ const exists = existsSync(watchDir);
128
+ return {
129
+ label: 'Watch folder',
130
+ ok: exists,
131
+ required: false,
132
+ message: exists
133
+ ? `Watch folder exists: ${watchDir}`
134
+ : `Watch folder missing: ${watchDir}`,
135
+ };
136
+ }
137
+ export function runDoctor() {
138
+ console.log('\nšŸ” VidPipe Doctor — Checking prerequisites...\n');
139
+ const results = [
140
+ checkNode(),
141
+ checkFFmpeg(),
142
+ checkFFprobe(),
143
+ checkOpenAIKey(),
144
+ checkExaKey(),
145
+ checkGit(),
146
+ checkWatchFolder(),
147
+ ];
148
+ for (const r of results) {
149
+ const icon = r.ok ? 'āœ…' : r.required ? 'āŒ' : '⬚';
150
+ console.log(` ${icon} ${r.message}`);
151
+ }
152
+ // LLM Provider section — check env vars directly to avoid silent fallback
153
+ console.log('\nLLM Provider');
154
+ const providerName = normalizeProviderName(process.env.LLM_PROVIDER);
155
+ const isDefault = !process.env.LLM_PROVIDER;
156
+ const providerLabel = isDefault ? `${providerName} (default)` : providerName;
157
+ const validProviders = ['copilot', 'openai', 'claude'];
158
+ if (!validProviders.includes(providerName)) {
159
+ console.log(` āŒ Provider: ${providerLabel} — unknown provider`);
160
+ results.push({ label: 'LLM Provider', ok: false, required: true, message: `Unknown provider: ${providerName}` });
161
+ }
162
+ else if (providerName === 'copilot') {
163
+ console.log(` āœ… Provider: ${providerLabel}`);
164
+ console.log(' āœ… Copilot — uses GitHub auth');
165
+ }
166
+ else if (providerName === 'openai') {
167
+ console.log(` āœ… Provider: ${providerLabel}`);
168
+ if (process.env.OPENAI_API_KEY) {
169
+ console.log(' āœ… OPENAI_API_KEY is set (also used for Whisper)');
170
+ }
171
+ else {
172
+ console.log(' āŒ OPENAI_API_KEY not set (required for openai provider)');
173
+ results.push({ label: 'LLM Provider', ok: false, required: true, message: 'OPENAI_API_KEY not set for OpenAI LLM' });
174
+ }
175
+ }
176
+ else if (providerName === 'claude') {
177
+ console.log(` āœ… Provider: ${providerLabel}`);
178
+ if (process.env.ANTHROPIC_API_KEY) {
179
+ console.log(' āœ… ANTHROPIC_API_KEY is set');
180
+ }
181
+ else {
182
+ console.log(' āŒ ANTHROPIC_API_KEY not set (required for claude provider)');
183
+ results.push({ label: 'LLM Provider', ok: false, required: true, message: 'ANTHROPIC_API_KEY not set for Claude LLM' });
184
+ }
185
+ }
186
+ const defaultModels = {
187
+ copilot: 'Claude Opus 4.6',
188
+ openai: 'gpt-4o',
189
+ claude: 'claude-opus-4.6',
190
+ };
191
+ if (validProviders.includes(providerName)) {
192
+ const defaultModel = defaultModels[providerName];
193
+ const modelOverride = process.env.LLM_MODEL;
194
+ if (modelOverride) {
195
+ console.log(` ā„¹ļø Model override: ${modelOverride} (default: ${defaultModel})`);
196
+ }
197
+ else {
198
+ console.log(` ā„¹ļø Default model: ${defaultModel}`);
199
+ }
200
+ }
201
+ const failedRequired = results.filter(r => r.required && !r.ok);
202
+ console.log();
203
+ if (failedRequired.length === 0) {
204
+ console.log(' All required checks passed! āœ…\n');
205
+ process.exit(0);
206
+ }
207
+ else {
208
+ console.log(` ${failedRequired.length} required check${failedRequired.length > 1 ? 's' : ''} failed āŒ\n`);
209
+ process.exit(1);
210
+ }
211
+ }
212
+ //# sourceMappingURL=doctor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,9 @@ export interface AppEnvironment {
5
5
  FFMPEG_PATH: string;
6
6
  FFPROBE_PATH: string;
7
7
  EXA_API_KEY: string;
8
+ LLM_PROVIDER: string;
9
+ LLM_MODEL: string;
10
+ ANTHROPIC_API_KEY: string;
8
11
  OUTPUT_DIR: string;
9
12
  BRAND_PATH: string;
10
13
  VERBOSE: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../../src/config/environment.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,cAAc;IAC7B,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,OAAO,CAAA;IACjB,oBAAoB,EAAE,OAAO,CAAA;IAC7B,WAAW,EAAE,OAAO,CAAA;IACpB,iBAAiB,EAAE,OAAO,CAAA;IAC1B,WAAW,EAAE,OAAO,CAAA;IACpB,aAAa,EAAE,OAAO,CAAA;CACvB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAID,wBAAgB,oBAAoB,IAAI,IAAI,CAI3C;AAED,wEAAwE;AACxE,wBAAgB,UAAU,CAAC,GAAG,GAAE,UAAe,GAAG,cAAc,CAsB/D;AAED,wBAAgB,SAAS,IAAI,cAAc,CAO1C"}
1
+ {"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../../src/config/environment.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,cAAc;IAC7B,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,iBAAiB,EAAE,MAAM,CAAA;IACzB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,OAAO,CAAA;IACjB,oBAAoB,EAAE,OAAO,CAAA;IAC7B,WAAW,EAAE,OAAO,CAAA;IACpB,iBAAiB,EAAE,OAAO,CAAA;IAC1B,WAAW,EAAE,OAAO,CAAA;IACpB,aAAa,EAAE,OAAO,CAAA;CACvB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAID,wBAAgB,oBAAoB,IAAI,IAAI,CAI3C;AAED,wEAAwE;AACxE,wBAAgB,UAAU,CAAC,GAAG,GAAE,UAAe,GAAG,cAAc,CAyB/D;AAED,wBAAgB,SAAS,IAAI,cAAc,CAO1C"}
@@ -19,9 +19,12 @@ export function initConfig(cli = {}) {
19
19
  OPENAI_API_KEY: cli.openaiKey || process.env.OPENAI_API_KEY || '',
20
20
  WATCH_FOLDER: cli.watchDir || process.env.WATCH_FOLDER || path.join(repoRoot, 'watch'),
21
21
  REPO_ROOT: repoRoot,
22
- FFMPEG_PATH: process.env.FFMPEG_PATH || 'ffmpeg',
23
- FFPROBE_PATH: process.env.FFPROBE_PATH || 'ffprobe',
22
+ FFMPEG_PATH: process.env.FFMPEG_PATH || 'ffmpeg', // legacy; prefer ffmpegResolver
23
+ FFPROBE_PATH: process.env.FFPROBE_PATH || 'ffprobe', // legacy; prefer ffmpegResolver
24
24
  EXA_API_KEY: cli.exaKey || process.env.EXA_API_KEY || '',
25
+ LLM_PROVIDER: process.env.LLM_PROVIDER || 'copilot',
26
+ LLM_MODEL: process.env.LLM_MODEL || '',
27
+ ANTHROPIC_API_KEY: process.env.ANTHROPIC_API_KEY || '',
25
28
  OUTPUT_DIR: cli.outputDir || process.env.OUTPUT_DIR || path.join(repoRoot, 'recordings'),
26
29
  BRAND_PATH: cli.brand || process.env.BRAND_PATH || path.join(repoRoot, 'brand.json'),
27
30
  VERBOSE: cli.verbose ?? false,
@@ -1 +1 @@
1
- {"version":3,"file":"environment.js","sourceRoot":"","sources":["../../src/config/environment.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,MAAM,IAAI,CAAA;AACnB,OAAO,MAAM,MAAM,QAAQ,CAAA;AAE3B,gCAAgC;AAChC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAA;AAChD,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;IAC3B,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;AAClC,CAAC;AAmCD,IAAI,MAAM,GAA0B,IAAI,CAAA;AAExC,MAAM,UAAU,oBAAoB;IAClC,IAAI,CAAC,MAAM,EAAE,cAAc,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;QAC3D,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAA;IACvF,CAAC;AACH,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,UAAU,CAAC,MAAkB,EAAE;IAC7C,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,EAAE,CAAA;IAEvD,MAAM,GAAG;QACP,cAAc,EAAE,GAAG,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE;QACjE,YAAY,EAAE,GAAG,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;QACtF,SAAS,EAAE,QAAQ;QACnB,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,QAAQ;QAChD,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,SAAS;QACnD,WAAW,EAAE,GAAG,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE;QACxD,UAAU,EAAE,GAAG,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;QACxF,UAAU,EAAE,GAAG,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;QACpF,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,KAAK;QAC7B,QAAQ,EAAE,GAAG,CAAC,GAAG,KAAK,KAAK;QAC3B,oBAAoB,EAAE,GAAG,CAAC,cAAc,KAAK,KAAK;QAClD,WAAW,EAAE,GAAG,CAAC,MAAM,KAAK,KAAK;QACjC,iBAAiB,EAAE,GAAG,CAAC,WAAW,KAAK,KAAK;QAC5C,WAAW,EAAE,GAAG,CAAC,MAAM,KAAK,KAAK;QACjC,aAAa,EAAE,GAAG,CAAC,QAAQ,KAAK,KAAK;KACtC,CAAA;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,MAAM,CAAA;IACf,CAAC;IAED,yDAAyD;IACzD,OAAO,UAAU,EAAE,CAAA;AACrB,CAAC"}
1
+ {"version":3,"file":"environment.js","sourceRoot":"","sources":["../../src/config/environment.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,MAAM,IAAI,CAAA;AACnB,OAAO,MAAM,MAAM,QAAQ,CAAA;AAE3B,gCAAgC;AAChC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAA;AAChD,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;IAC3B,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;AAClC,CAAC;AAsCD,IAAI,MAAM,GAA0B,IAAI,CAAA;AAExC,MAAM,UAAU,oBAAoB;IAClC,IAAI,CAAC,MAAM,EAAE,cAAc,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;QAC3D,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAA;IACvF,CAAC;AACH,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,UAAU,CAAC,MAAkB,EAAE;IAC7C,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,EAAE,CAAA;IAEvD,MAAM,GAAG;QACP,cAAc,EAAE,GAAG,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE;QACjE,YAAY,EAAE,GAAG,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;QACtF,SAAS,EAAE,QAAQ;QACnB,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,QAAQ,EAAI,gCAAgC;QACpF,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,SAAS,EAAE,gCAAgC;QACrF,WAAW,EAAE,GAAG,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE;QACxD,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,SAAS;QACnD,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE;QACtC,iBAAiB,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,EAAE;QACtD,UAAU,EAAC,GAAG,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;QACvF,UAAU,EAAE,GAAG,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;QACpF,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,KAAK;QAC7B,QAAQ,EAAE,GAAG,CAAC,GAAG,KAAK,KAAK;QAC3B,oBAAoB,EAAE,GAAG,CAAC,cAAc,KAAK,KAAK;QAClD,WAAW,EAAE,GAAG,CAAC,MAAM,KAAK,KAAK;QACjC,iBAAiB,EAAE,GAAG,CAAC,WAAW,KAAK,KAAK;QAC5C,WAAW,EAAE,GAAG,CAAC,MAAM,KAAK,KAAK;QACjC,aAAa,EAAE,GAAG,CAAC,QAAQ,KAAK,KAAK;KACtC,CAAA;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,MAAM,CAAA;IACf,CAAC;IAED,yDAAyD;IACzD,OAAO,UAAU,EAAE,CAAA;AACrB,CAAC"}