@mevdragon/vidfarm-devcli 0.2.12 → 0.2.14

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 (205) hide show
  1. package/.env.example +37 -1
  2. package/README.md +27 -183
  3. package/SKILL.director.md +293 -0
  4. package/SKILL.platform.md +312 -0
  5. package/auto-create-hyperframe-templates/AUTO_CREATE_HYPERFRAME_TEMPLATES.md +275 -0
  6. package/auto-create-hyperframe-templates/extractor-system-prompt.md +128 -0
  7. package/auto-create-hyperframe-templates/input-manifest.schema.json +56 -0
  8. package/auto-create-hyperframe-templates/lambda-memory-estimator.md +118 -0
  9. package/auto-create-hyperframe-templates/production-graph.schema.json +314 -0
  10. package/auto-create-hyperframe-templates/runbook.md +198 -0
  11. package/auto-create-hyperframe-templates/scripts/create-hyperframe-template.mjs +368 -0
  12. package/auto-create-hyperframe-templates/template-plan.schema.json +311 -0
  13. package/auto-create-hyperframe-templates/template-planner-prompt.md +144 -0
  14. package/auto-create-templates/AUTO_CREATE_TEMPLATES.md +116 -0
  15. package/auto-create-templates/extractor-system-prompt.md +6 -1
  16. package/auto-create-templates/template-plan.schema.json +73 -2
  17. package/auto-create-templates/template-planner-prompt.md +62 -1
  18. package/dist/src/account-pages-legacy.js +363 -89
  19. package/dist/src/account-pages-legacy.js.map +1 -0
  20. package/dist/src/account-pages.js +3 -2
  21. package/dist/src/account-pages.js.map +1 -0
  22. package/dist/src/app.js +7096 -1294
  23. package/dist/src/app.js.map +1 -0
  24. package/dist/src/cli.js +115 -29
  25. package/dist/src/cli.js.map +1 -0
  26. package/dist/src/composition-runtime.js +581 -0
  27. package/dist/src/composition-runtime.js.map +1 -0
  28. package/dist/src/config.js +69 -11
  29. package/dist/src/config.js.map +1 -0
  30. package/dist/src/context.js +280 -21
  31. package/dist/src/context.js.map +1 -0
  32. package/dist/src/dev-app-legacy.js +18 -17
  33. package/dist/src/dev-app-legacy.js.map +1 -0
  34. package/dist/src/dev-app.js +1 -0
  35. package/dist/src/dev-app.js.map +1 -0
  36. package/dist/src/dev-serve.js +169 -0
  37. package/dist/src/dev-serve.js.map +1 -0
  38. package/dist/src/domain.js +2 -1
  39. package/dist/src/domain.js.map +1 -0
  40. package/dist/src/editor-chat-history.js +10 -0
  41. package/dist/src/editor-chat-history.js.map +1 -0
  42. package/dist/src/editor-chat.js +135 -25
  43. package/dist/src/editor-chat.js.map +1 -0
  44. package/dist/src/editor-dark-theme.js +1128 -0
  45. package/dist/src/editor-dark-theme.js.map +1 -0
  46. package/dist/src/frontend/flockposter-cache-store.js +10 -2
  47. package/dist/src/frontend/flockposter-cache-store.js.map +1 -0
  48. package/dist/src/frontend/homepage-client.js +6 -3
  49. package/dist/src/frontend/homepage-client.js.map +1 -0
  50. package/dist/src/frontend/homepage-shared.js +1 -0
  51. package/dist/src/frontend/homepage-shared.js.map +1 -0
  52. package/dist/src/frontend/homepage-store.js +1 -0
  53. package/dist/src/frontend/homepage-store.js.map +1 -0
  54. package/dist/src/frontend/homepage-view.js +131 -18
  55. package/dist/src/frontend/homepage-view.js.map +1 -0
  56. package/dist/src/frontend/page-runtime-client.js +27 -3
  57. package/dist/src/frontend/page-runtime-client.js.map +1 -0
  58. package/dist/src/frontend/page-runtime-store.js +1 -0
  59. package/dist/src/frontend/page-runtime-store.js.map +1 -0
  60. package/dist/src/frontend/sentry.js +42 -0
  61. package/dist/src/frontend/sentry.js.map +1 -0
  62. package/dist/src/frontend/template-editor-chat.js +1711 -212
  63. package/dist/src/frontend/template-editor-chat.js.map +1 -0
  64. package/dist/src/help-page.js +333 -0
  65. package/dist/src/help-page.js.map +1 -0
  66. package/dist/src/homepage.js +169 -47
  67. package/dist/src/homepage.js.map +1 -0
  68. package/dist/src/hyperframes/composition.js +180 -0
  69. package/dist/src/hyperframes/composition.js.map +1 -0
  70. package/dist/src/index.js +1 -0
  71. package/dist/src/index.js.map +1 -0
  72. package/dist/src/instrument.js +30 -0
  73. package/dist/src/instrument.js.map +1 -0
  74. package/dist/src/lib/crypto.js +1 -0
  75. package/dist/src/lib/crypto.js.map +1 -0
  76. package/dist/src/lib/dev-log.js +54 -0
  77. package/dist/src/lib/dev-log.js.map +1 -0
  78. package/dist/src/lib/display-name.js +11 -0
  79. package/dist/src/lib/display-name.js.map +1 -0
  80. package/dist/src/lib/ids.js +21 -1
  81. package/dist/src/lib/ids.js.map +1 -0
  82. package/dist/src/lib/images.js +1 -0
  83. package/dist/src/lib/images.js.map +1 -0
  84. package/dist/src/lib/json.js +1 -0
  85. package/dist/src/lib/json.js.map +1 -0
  86. package/dist/src/lib/template-dna.js +1 -0
  87. package/dist/src/lib/template-dna.js.map +1 -0
  88. package/dist/src/lib/template-paths.js +1 -0
  89. package/dist/src/lib/template-paths.js.map +1 -0
  90. package/dist/src/lib/template-style-options.js +29 -3
  91. package/dist/src/lib/template-style-options.js.map +1 -0
  92. package/dist/src/lib/time.js +1 -0
  93. package/dist/src/lib/time.js.map +1 -0
  94. package/dist/src/lib/video-quality-harness.js +60 -0
  95. package/dist/src/lib/video-quality-harness.js.map +1 -0
  96. package/dist/src/page-runtime.js +1 -0
  97. package/dist/src/page-runtime.js.map +1 -0
  98. package/dist/src/page-shell.js +403 -29
  99. package/dist/src/page-shell.js.map +1 -0
  100. package/dist/src/primitive-context.js +144 -8
  101. package/dist/src/primitive-context.js.map +1 -0
  102. package/dist/src/primitive-registry.js +1919 -78
  103. package/dist/src/primitive-registry.js.map +1 -0
  104. package/dist/src/primitive-sdk.js +1 -0
  105. package/dist/src/primitive-sdk.js.map +1 -0
  106. package/dist/src/primitives/remotion/html-image.js +3 -1
  107. package/dist/src/primitives/remotion/html-image.js.map +1 -0
  108. package/dist/src/primitives/remotion/media-slideshow.js +60 -0
  109. package/dist/src/primitives/remotion/media-slideshow.js.map +1 -0
  110. package/dist/src/react-page-shell.js +1 -0
  111. package/dist/src/react-page-shell.js.map +1 -0
  112. package/dist/src/ready-post-schedule-component.js +1 -0
  113. package/dist/src/ready-post-schedule-component.js.map +1 -0
  114. package/dist/src/registry.js +237 -24
  115. package/dist/src/registry.js.map +1 -0
  116. package/dist/src/runtime.js +3 -0
  117. package/dist/src/runtime.js.map +1 -0
  118. package/dist/src/services/api-call-history.js +4 -0
  119. package/dist/src/services/api-call-history.js.map +1 -0
  120. package/dist/src/services/auth.js +40 -50
  121. package/dist/src/services/auth.js.map +1 -0
  122. package/dist/src/services/billing.js +20 -44
  123. package/dist/src/services/billing.js.map +1 -0
  124. package/dist/src/services/chat-threads.js +10 -6
  125. package/dist/src/services/chat-threads.js.map +1 -0
  126. package/dist/src/services/fork-access.js +93 -0
  127. package/dist/src/services/fork-access.js.map +1 -0
  128. package/dist/src/services/fork-manifest.js +43 -0
  129. package/dist/src/services/fork-manifest.js.map +1 -0
  130. package/dist/src/services/ghostcut.js +132 -0
  131. package/dist/src/services/ghostcut.js.map +1 -0
  132. package/dist/src/services/hyperframes.js +1014 -0
  133. package/dist/src/services/hyperframes.js.map +1 -0
  134. package/dist/src/services/job-capacity.js +14 -0
  135. package/dist/src/services/job-capacity.js.map +1 -0
  136. package/dist/src/services/job-logs.js +4 -0
  137. package/dist/src/services/job-logs.js.map +1 -0
  138. package/dist/src/services/jobs.js +99 -91
  139. package/dist/src/services/jobs.js.map +1 -0
  140. package/dist/src/services/media-processing.js +743 -0
  141. package/dist/src/services/media-processing.js.map +1 -0
  142. package/dist/src/services/primitive-media-lambda.js +280 -0
  143. package/dist/src/services/primitive-media-lambda.js.map +1 -0
  144. package/dist/src/services/providers.js +1560 -178
  145. package/dist/src/services/providers.js.map +1 -0
  146. package/dist/src/services/rate-limits.js +3 -2
  147. package/dist/src/services/rate-limits.js.map +1 -0
  148. package/dist/src/services/remotion.js +495 -92
  149. package/dist/src/services/remotion.js.map +1 -0
  150. package/dist/src/services/serverless-auth.js +374 -0
  151. package/dist/src/services/serverless-auth.js.map +1 -0
  152. package/dist/src/services/serverless-jobs.js +1074 -0
  153. package/dist/src/services/serverless-jobs.js.map +1 -0
  154. package/dist/src/services/serverless-provider-keys.js +401 -0
  155. package/dist/src/services/serverless-provider-keys.js.map +1 -0
  156. package/dist/src/services/serverless-records.js +1088 -0
  157. package/dist/src/services/serverless-records.js.map +1 -0
  158. package/dist/src/services/serverless-template-configs.js +67 -0
  159. package/dist/src/services/serverless-template-configs.js.map +1 -0
  160. package/dist/src/services/storage.js +171 -35
  161. package/dist/src/services/storage.js.map +1 -0
  162. package/dist/src/services/template-certification.js +295 -3
  163. package/dist/src/services/template-certification.js.map +1 -0
  164. package/dist/src/services/template-loader.js +45 -1
  165. package/dist/src/services/template-loader.js.map +1 -0
  166. package/dist/src/services/template-runtime-bundles.js +217 -0
  167. package/dist/src/services/template-runtime-bundles.js.map +1 -0
  168. package/dist/src/services/template-sources.js +452 -87
  169. package/dist/src/services/template-sources.js.map +1 -0
  170. package/dist/src/services/video-normalization.js +2 -0
  171. package/dist/src/services/video-normalization.js.map +1 -0
  172. package/dist/src/services/webhooks.js +7 -6
  173. package/dist/src/services/webhooks.js.map +1 -0
  174. package/dist/src/template-editor-pages.js +2051 -1869
  175. package/dist/src/template-editor-pages.js.map +1 -0
  176. package/dist/src/template-editor-shell.js +1376 -181
  177. package/dist/src/template-editor-shell.js.map +1 -0
  178. package/dist/src/template-sdk.js +1 -0
  179. package/dist/src/template-sdk.js.map +1 -0
  180. package/dist/src/worker.js +11 -226
  181. package/dist/src/worker.js.map +1 -0
  182. package/package.json +47 -12
  183. package/public/assets/homepage-client-app.js +34 -8
  184. package/public/assets/page-runtime-client-app.js +44 -18
  185. package/readme.secret.md +89 -0
  186. package/templates/vidfarm_template_0000/README.md +106 -0
  187. package/templates/vidfarm_template_0000/SKILL.md +266 -0
  188. package/templates/vidfarm_template_0000/assets/Abel-Regular.ttf +0 -0
  189. package/templates/vidfarm_template_0000/assets/DMSerifDisplay-Regular.ttf +0 -0
  190. package/templates/vidfarm_template_0000/assets/Montserrat[wght].ttf +0 -0
  191. package/templates/vidfarm_template_0000/assets/SourceCodePro[wght].ttf +0 -0
  192. package/templates/vidfarm_template_0000/assets/TikTokSans-SemiBold.ttf +0 -0
  193. package/templates/vidfarm_template_0000/assets/Yesteryear-Regular.ttf +0 -0
  194. package/templates/vidfarm_template_0000/composition.json +11 -0
  195. package/templates/vidfarm_template_0000/src/lib/images.js +221 -0
  196. package/templates/vidfarm_template_0000/src/remotion/Root.js +33 -0
  197. package/templates/vidfarm_template_0000/src/remotion/index.js +3 -0
  198. package/templates/vidfarm_template_0000/src/sdk.js +3 -0
  199. package/templates/vidfarm_template_0000/src/style-options.js +200 -0
  200. package/templates/vidfarm_template_0000/src/template-dna.js +9 -0
  201. package/templates/vidfarm_template_0000/src/template.js +1566 -0
  202. package/templates/vidfarm_template_0000/template.config.json +21 -0
  203. package/GETTING_STARTED.developers.md +0 -87
  204. package/SKILL.developer.md +0 -1186
  205. package/dist/src/db.js +0 -2007
@@ -1,10 +1,10 @@
1
1
  import { config } from "./config.js";
2
- import { database } from "./db.js";
3
2
  import { createId } from "./lib/ids.js";
4
3
  import { jobLogStore } from "./services/job-logs.js";
4
+ import { estimateNormalizationCostUsd, normalizeVideoAsset } from "./services/video-normalization.js";
5
5
  export function createPrimitiveJobContext(input) {
6
6
  const prefix = input.storage.primitiveJobPrefix(input.primitive.id, input.customer.id, input.job.id);
7
- const buildArtifactUrl = (storageKey, fallbackUrl) => fallbackUrl ?? input.storage.getPublicUrl(storageKey);
7
+ const buildArtifactUrl = (storageKey, fallbackUrl) => fallbackUrl ?? input.storage.getPublicUrl(storageKey) ?? buildPlatformMediaUrl(storageKey);
8
8
  return {
9
9
  env: config.isProduction ? "production" : "development",
10
10
  customer: input.customer,
@@ -63,7 +63,7 @@ export function createPrimitiveJobContext(input) {
63
63
  progress,
64
64
  artifactKey: typeof metadata.artifactKey === "string" ? metadata.artifactKey : null
65
65
  });
66
- database.updateJobStatus({
66
+ void input.jobs.updateJobStatus({
67
67
  id: input.job.id,
68
68
  status: "running",
69
69
  progress
@@ -74,19 +74,19 @@ export function createPrimitiveJobContext(input) {
74
74
  async putJson(key, value) {
75
75
  const stored = await input.storage.putJson(`${prefix}/${key}`, value);
76
76
  const artifactUrl = buildArtifactUrl(stored.key, stored.url);
77
- insertArtifact("json", stored.key, artifactUrl, {});
77
+ await insertArtifact("json", stored.key, artifactUrl, {});
78
78
  return { ...stored, url: artifactUrl };
79
79
  },
80
80
  async putText(key, value, contentType = "text/plain; charset=utf-8") {
81
81
  const stored = await input.storage.putText(`${prefix}/${key}`, value, contentType);
82
82
  const artifactUrl = buildArtifactUrl(stored.key, stored.url);
83
- insertArtifact("text", stored.key, artifactUrl, { contentType });
83
+ await insertArtifact("text", stored.key, artifactUrl, { contentType });
84
84
  return { ...stored, url: artifactUrl };
85
85
  },
86
86
  async putBuffer(key, value, options = {}) {
87
87
  const stored = await input.storage.putBuffer(`${prefix}/${key}`, value, options.contentType);
88
88
  const artifactUrl = buildArtifactUrl(stored.key, stored.url);
89
- insertArtifact(options.kind ?? "binary", stored.key, artifactUrl, {
89
+ await insertArtifact(options.kind ?? "binary", stored.key, artifactUrl, {
90
90
  ...(options.metadata ?? {}),
91
91
  contentType: options.contentType ?? null
92
92
  });
@@ -94,6 +94,9 @@ export function createPrimitiveJobContext(input) {
94
94
  },
95
95
  getPublicUrl(key) {
96
96
  return input.storage.getPublicUrl(`${prefix}/${key}`);
97
+ },
98
+ resolveKey(key) {
99
+ return `${prefix}/${key}`;
97
100
  }
98
101
  },
99
102
  billing: {
@@ -114,6 +117,17 @@ export function createPrimitiveJobContext(input) {
114
117
  }
115
118
  },
116
119
  providers: {
120
+ listAvailableProviders() {
121
+ return input.providers.listAvailableProviders(input.customer.id);
122
+ },
123
+ async generateText(request) {
124
+ return input.providers.generateText({
125
+ customerId: input.customer.id,
126
+ jobId: input.job.id,
127
+ workerId: input.workerId,
128
+ ...request
129
+ });
130
+ },
117
131
  async generateImage(request) {
118
132
  return input.providers.generateImage({
119
133
  customerId: input.customer.id,
@@ -137,19 +151,137 @@ export function createPrimitiveJobContext(input) {
137
151
  workerId: input.workerId,
138
152
  ...request
139
153
  });
154
+ },
155
+ async generateVideo(request) {
156
+ return input.providers.generateVideo({
157
+ customerId: input.customer.id,
158
+ jobId: input.job.id,
159
+ workerId: input.workerId,
160
+ ...request
161
+ });
140
162
  }
141
163
  },
142
164
  remotion: {
165
+ async render(request) {
166
+ return input.remotion.render({
167
+ ...request,
168
+ outputKey: request.outputKey ? `${prefix}/${request.outputKey}` : undefined
169
+ });
170
+ },
143
171
  async renderStill(request) {
144
172
  return input.remotion.renderStill({
145
173
  ...request,
146
174
  outputKey: request.outputKey ? `${prefix}/${request.outputKey}` : undefined
147
175
  });
148
176
  }
177
+ },
178
+ hyperframes: {
179
+ async render(request) {
180
+ const hyperframesOutputKey = `renders/vidfarm/primitives/${input.primitive.id}/${input.customer.id}/${input.job.id}/output.mp4`;
181
+ const render = await input.hyperframes.render({
182
+ ...request,
183
+ outputKey: hyperframesOutputKey,
184
+ wait: true
185
+ });
186
+ let outputUrl = render.outputUrl;
187
+ let platformOutputKey = null;
188
+ if (render.outputS3Uri) {
189
+ const output = await input.hyperframes.readRenderOutput(render.outputS3Uri);
190
+ platformOutputKey = `${prefix}/${request.outputKey || "output.mp4"}`;
191
+ const stored = await input.storage.putBuffer(platformOutputKey, output.bytes, output.contentType);
192
+ outputUrl = buildArtifactUrl(stored.key, stored.url);
193
+ await insertArtifact("video", stored.key, outputUrl, {
194
+ operation: "hyperframes-render",
195
+ contentType: output.contentType,
196
+ renderId: render.renderId,
197
+ outputS3Uri: render.outputS3Uri
198
+ });
199
+ }
200
+ const estimatedCostUsd = typeof render.metadata.estimatedCostUsd === "number" ? render.metadata.estimatedCostUsd : null;
201
+ const chargeUsd = typeof render.metadata.chargeUsd === "number" ? render.metadata.chargeUsd : null;
202
+ if (estimatedCostUsd !== null && estimatedCostUsd > 0) {
203
+ await input.billing.record({
204
+ customerId: input.customer.id,
205
+ jobId: input.job.id,
206
+ tracer: input.job.tracer,
207
+ templateId: input.primitive.id,
208
+ type: "render",
209
+ costUsd: estimatedCostUsd,
210
+ chargeUsd: typeof chargeUsd === "number" ? chargeUsd : undefined,
211
+ costCenterSlug: "hyperframes_lambda",
212
+ idempotencyKey: `hyperframes_lambda:${render.renderId}`,
213
+ occurredAtMs: Date.now(),
214
+ metadata: {
215
+ ...render.metadata,
216
+ render_id: render.renderId,
217
+ output_url: outputUrl,
218
+ signed_output_url: render.outputUrl,
219
+ output_s3_uri: render.outputS3Uri,
220
+ platform_output_key: platformOutputKey
221
+ }
222
+ });
223
+ }
224
+ return {
225
+ renderId: render.renderId,
226
+ outputUrl,
227
+ outputS3Uri: render.outputS3Uri,
228
+ metadata: {
229
+ ...render.metadata,
230
+ outputUrl,
231
+ signedOutputUrl: render.outputUrl,
232
+ platformOutputKey
233
+ }
234
+ };
235
+ }
236
+ },
237
+ media: {
238
+ async normalizeVideo(request) {
239
+ const normalized = await normalizeVideoAsset({
240
+ sourceUrl: request.sourceUrl,
241
+ maxWidth: request.maxWidth,
242
+ maxHeight: request.maxHeight,
243
+ crf: request.crf,
244
+ preset: request.preset,
245
+ maxVideoBitrateKbps: request.maxVideoBitrateKbps,
246
+ audioBitrateKbps: request.audioBitrateKbps
247
+ });
248
+ const stored = await input.storage.putBuffer(`${prefix}/${request.outputKey}`, normalized.bytes, normalized.contentType);
249
+ const artifactUrl = buildArtifactUrl(stored.key, stored.url);
250
+ await insertArtifact("video", stored.key, artifactUrl, {
251
+ ...(request.metadata ?? {}),
252
+ operation: "normalize-video",
253
+ contentType: normalized.contentType,
254
+ normalization: normalized.metadata
255
+ });
256
+ await input.billing.record({
257
+ customerId: input.customer.id,
258
+ jobId: input.job.id,
259
+ tracer: input.job.tracer,
260
+ templateId: input.primitive.id,
261
+ type: "cpu_estimate",
262
+ costUsd: estimateNormalizationCostUsd(normalized.metadata),
263
+ costCenterSlug: "video_normalization",
264
+ idempotencyKey: `video_normalization:${input.job.id}:${request.outputKey}`,
265
+ occurredAtMs: Date.now(),
266
+ metadata: {
267
+ ...(request.metadata ?? {}),
268
+ operation: "normalize-video",
269
+ source_url: request.sourceUrl,
270
+ output_key: `${prefix}/${request.outputKey}`,
271
+ normalization: normalized.metadata
272
+ }
273
+ });
274
+ return {
275
+ ...stored,
276
+ url: artifactUrl,
277
+ contentType: normalized.contentType,
278
+ normalization: normalized.metadata
279
+ };
280
+ }
149
281
  }
150
282
  };
151
- function insertArtifact(kind, storageKey, publicUrl, metadata) {
152
- database.insertArtifact({
283
+ async function insertArtifact(kind, storageKey, publicUrl, metadata) {
284
+ await input.jobs.insertArtifact({
153
285
  id: createId("art"),
154
286
  jobId: input.job.id,
155
287
  customerId: input.customer.id,
@@ -161,3 +293,7 @@ export function createPrimitiveJobContext(input) {
161
293
  });
162
294
  }
163
295
  }
296
+ function buildPlatformMediaUrl(storageKey) {
297
+ return `${config.PUBLIC_BASE_URL.replace(/\/$/, "")}/template-media?key=${encodeURIComponent(storageKey)}`;
298
+ }
299
+ //# sourceMappingURL=primitive-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"primitive-context.js","sourceRoot":"","sources":["../../src/primitive-context.ts"],"names":[],"mappings":"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"}