@mevdragon/vidfarm-devcli 0.2.12 → 0.2.13

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 (199) 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 +361 -89
  19. package/dist/src/account-pages-legacy.js.map +1 -0
  20. package/dist/src/account-pages.js +13 -3
  21. package/dist/src/account-pages.js.map +1 -0
  22. package/dist/src/app.js +7060 -946
  23. package/dist/src/app.js.map +1 -0
  24. package/dist/src/cli.js +110 -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/domain.js +2 -1
  37. package/dist/src/domain.js.map +1 -0
  38. package/dist/src/editor-chat-history.js +10 -0
  39. package/dist/src/editor-chat-history.js.map +1 -0
  40. package/dist/src/editor-chat.js +133 -24
  41. package/dist/src/editor-chat.js.map +1 -0
  42. package/dist/src/frontend/flockposter-cache-store.js +10 -2
  43. package/dist/src/frontend/flockposter-cache-store.js.map +1 -0
  44. package/dist/src/frontend/homepage-client.js +6 -3
  45. package/dist/src/frontend/homepage-client.js.map +1 -0
  46. package/dist/src/frontend/homepage-shared.js +1 -0
  47. package/dist/src/frontend/homepage-shared.js.map +1 -0
  48. package/dist/src/frontend/homepage-store.js +1 -0
  49. package/dist/src/frontend/homepage-store.js.map +1 -0
  50. package/dist/src/frontend/homepage-view.js +131 -18
  51. package/dist/src/frontend/homepage-view.js.map +1 -0
  52. package/dist/src/frontend/page-runtime-client.js +5 -2
  53. package/dist/src/frontend/page-runtime-client.js.map +1 -0
  54. package/dist/src/frontend/page-runtime-store.js +1 -0
  55. package/dist/src/frontend/page-runtime-store.js.map +1 -0
  56. package/dist/src/frontend/sentry.js +42 -0
  57. package/dist/src/frontend/sentry.js.map +1 -0
  58. package/dist/src/frontend/template-editor-chat.js +1719 -213
  59. package/dist/src/frontend/template-editor-chat.js.map +1 -0
  60. package/dist/src/help-page.js +333 -0
  61. package/dist/src/help-page.js.map +1 -0
  62. package/dist/src/homepage.js +169 -47
  63. package/dist/src/homepage.js.map +1 -0
  64. package/dist/src/hyperframes/composition.js +180 -0
  65. package/dist/src/hyperframes/composition.js.map +1 -0
  66. package/dist/src/index.js +1 -0
  67. package/dist/src/index.js.map +1 -0
  68. package/dist/src/instrument.js +30 -0
  69. package/dist/src/instrument.js.map +1 -0
  70. package/dist/src/lib/crypto.js +1 -0
  71. package/dist/src/lib/crypto.js.map +1 -0
  72. package/dist/src/lib/dev-log.js +54 -0
  73. package/dist/src/lib/dev-log.js.map +1 -0
  74. package/dist/src/lib/display-name.js +11 -0
  75. package/dist/src/lib/display-name.js.map +1 -0
  76. package/dist/src/lib/ids.js +21 -1
  77. package/dist/src/lib/ids.js.map +1 -0
  78. package/dist/src/lib/images.js +1 -0
  79. package/dist/src/lib/images.js.map +1 -0
  80. package/dist/src/lib/json.js +1 -0
  81. package/dist/src/lib/json.js.map +1 -0
  82. package/dist/src/lib/template-dna.js +1 -0
  83. package/dist/src/lib/template-dna.js.map +1 -0
  84. package/dist/src/lib/template-paths.js +1 -0
  85. package/dist/src/lib/template-paths.js.map +1 -0
  86. package/dist/src/lib/template-style-options.js +29 -3
  87. package/dist/src/lib/template-style-options.js.map +1 -0
  88. package/dist/src/lib/time.js +1 -0
  89. package/dist/src/lib/time.js.map +1 -0
  90. package/dist/src/lib/video-quality-harness.js +60 -0
  91. package/dist/src/lib/video-quality-harness.js.map +1 -0
  92. package/dist/src/page-runtime.js +1 -0
  93. package/dist/src/page-runtime.js.map +1 -0
  94. package/dist/src/page-shell.js +1501 -49
  95. package/dist/src/page-shell.js.map +1 -0
  96. package/dist/src/primitive-context.js +144 -8
  97. package/dist/src/primitive-context.js.map +1 -0
  98. package/dist/src/primitive-registry.js +1919 -78
  99. package/dist/src/primitive-registry.js.map +1 -0
  100. package/dist/src/primitive-sdk.js +1 -0
  101. package/dist/src/primitive-sdk.js.map +1 -0
  102. package/dist/src/primitives/remotion/html-image.js +3 -1
  103. package/dist/src/primitives/remotion/html-image.js.map +1 -0
  104. package/dist/src/primitives/remotion/media-slideshow.js +60 -0
  105. package/dist/src/primitives/remotion/media-slideshow.js.map +1 -0
  106. package/dist/src/react-page-shell.js +1 -0
  107. package/dist/src/react-page-shell.js.map +1 -0
  108. package/dist/src/ready-post-schedule-component.js +1 -0
  109. package/dist/src/ready-post-schedule-component.js.map +1 -0
  110. package/dist/src/registry.js +237 -24
  111. package/dist/src/registry.js.map +1 -0
  112. package/dist/src/runtime.js +3 -0
  113. package/dist/src/runtime.js.map +1 -0
  114. package/dist/src/services/api-call-history.js +4 -0
  115. package/dist/src/services/api-call-history.js.map +1 -0
  116. package/dist/src/services/auth.js +40 -50
  117. package/dist/src/services/auth.js.map +1 -0
  118. package/dist/src/services/billing.js +20 -44
  119. package/dist/src/services/billing.js.map +1 -0
  120. package/dist/src/services/chat-threads.js +10 -6
  121. package/dist/src/services/chat-threads.js.map +1 -0
  122. package/dist/src/services/fork-access.js +94 -0
  123. package/dist/src/services/fork-access.js.map +1 -0
  124. package/dist/src/services/ghostcut.js +132 -0
  125. package/dist/src/services/ghostcut.js.map +1 -0
  126. package/dist/src/services/hyperframes.js +1014 -0
  127. package/dist/src/services/hyperframes.js.map +1 -0
  128. package/dist/src/services/job-capacity.js +14 -0
  129. package/dist/src/services/job-capacity.js.map +1 -0
  130. package/dist/src/services/job-logs.js +4 -0
  131. package/dist/src/services/job-logs.js.map +1 -0
  132. package/dist/src/services/jobs.js +99 -91
  133. package/dist/src/services/jobs.js.map +1 -0
  134. package/dist/src/services/media-processing.js +743 -0
  135. package/dist/src/services/media-processing.js.map +1 -0
  136. package/dist/src/services/primitive-media-lambda.js +280 -0
  137. package/dist/src/services/primitive-media-lambda.js.map +1 -0
  138. package/dist/src/services/providers.js +1560 -178
  139. package/dist/src/services/providers.js.map +1 -0
  140. package/dist/src/services/rate-limits.js +3 -2
  141. package/dist/src/services/rate-limits.js.map +1 -0
  142. package/dist/src/services/remotion.js +495 -92
  143. package/dist/src/services/remotion.js.map +1 -0
  144. package/dist/src/services/serverless-auth.js +374 -0
  145. package/dist/src/services/serverless-auth.js.map +1 -0
  146. package/dist/src/services/serverless-jobs.js +1074 -0
  147. package/dist/src/services/serverless-jobs.js.map +1 -0
  148. package/dist/src/services/serverless-provider-keys.js +401 -0
  149. package/dist/src/services/serverless-provider-keys.js.map +1 -0
  150. package/dist/src/services/serverless-records.js +1086 -0
  151. package/dist/src/services/serverless-records.js.map +1 -0
  152. package/dist/src/services/serverless-template-configs.js +67 -0
  153. package/dist/src/services/serverless-template-configs.js.map +1 -0
  154. package/dist/src/services/storage.js +170 -35
  155. package/dist/src/services/storage.js.map +1 -0
  156. package/dist/src/services/template-certification.js +295 -3
  157. package/dist/src/services/template-certification.js.map +1 -0
  158. package/dist/src/services/template-loader.js +45 -1
  159. package/dist/src/services/template-loader.js.map +1 -0
  160. package/dist/src/services/template-runtime-bundles.js +217 -0
  161. package/dist/src/services/template-runtime-bundles.js.map +1 -0
  162. package/dist/src/services/template-sources.js +452 -87
  163. package/dist/src/services/template-sources.js.map +1 -0
  164. package/dist/src/services/video-normalization.js +2 -0
  165. package/dist/src/services/video-normalization.js.map +1 -0
  166. package/dist/src/services/webhooks.js +7 -6
  167. package/dist/src/services/webhooks.js.map +1 -0
  168. package/dist/src/template-editor-pages.js +5637 -1322
  169. package/dist/src/template-editor-pages.js.map +1 -0
  170. package/dist/src/template-editor-shell.js +1376 -170
  171. package/dist/src/template-editor-shell.js.map +1 -0
  172. package/dist/src/template-sdk.js +1 -0
  173. package/dist/src/template-sdk.js.map +1 -0
  174. package/dist/src/worker.js +11 -226
  175. package/dist/src/worker.js.map +1 -0
  176. package/package.json +47 -12
  177. package/public/assets/homepage-client-app.js +34 -8
  178. package/public/assets/page-runtime-client-app.js +44 -18
  179. package/readme.secret.md +89 -0
  180. package/templates/vidfarm_template_0000/README.md +106 -0
  181. package/templates/vidfarm_template_0000/SKILL.md +266 -0
  182. package/templates/vidfarm_template_0000/assets/Abel-Regular.ttf +0 -0
  183. package/templates/vidfarm_template_0000/assets/DMSerifDisplay-Regular.ttf +0 -0
  184. package/templates/vidfarm_template_0000/assets/Montserrat[wght].ttf +0 -0
  185. package/templates/vidfarm_template_0000/assets/SourceCodePro[wght].ttf +0 -0
  186. package/templates/vidfarm_template_0000/assets/TikTokSans-SemiBold.ttf +0 -0
  187. package/templates/vidfarm_template_0000/assets/Yesteryear-Regular.ttf +0 -0
  188. package/templates/vidfarm_template_0000/composition.json +11 -0
  189. package/templates/vidfarm_template_0000/src/lib/images.js +221 -0
  190. package/templates/vidfarm_template_0000/src/remotion/Root.js +33 -0
  191. package/templates/vidfarm_template_0000/src/remotion/index.js +3 -0
  192. package/templates/vidfarm_template_0000/src/sdk.js +3 -0
  193. package/templates/vidfarm_template_0000/src/style-options.js +200 -0
  194. package/templates/vidfarm_template_0000/src/template-dna.js +9 -0
  195. package/templates/vidfarm_template_0000/src/template.js +1566 -0
  196. package/templates/vidfarm_template_0000/template.config.json +21 -0
  197. package/GETTING_STARTED.developers.md +0 -87
  198. package/SKILL.developer.md +0 -1186
  199. package/dist/src/db.js +0 -2007
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-editor-shell.js","sourceRoot":"","sources":["../../src/template-editor-shell.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAazF,MAAM,CAAC,MAAM,4BAA4B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2mF3C,CAAC;AAEF,MAAM,CAAC,MAAM,4BAA4B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;CAyB3C,CAAC;AAEF,MAAM,UAAU,0BAA0B,CAAC,KAAgC;IACzE,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACjD,MAAM,WAAW,GAAG,yBAAyB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7D,MAAM,WAAW,GAAG,KAAK;QACvB,CAAC,CAAC,mCAAmC,UAAU,CAAC,WAAW,CAAC,WAAW,UAAU,CAAC,KAAK,CAAC,gBAAgB;QACxG,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO;;0CAEiC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC;sCACnC,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC;QAC7D,WAAW;;;;;GAKhB,CAAC;AACJ,CAAC"}
@@ -1,3 +1,4 @@
1
1
  export function defineTemplate(definition) {
2
2
  return definition;
3
3
  }
4
+ //# sourceMappingURL=template-sdk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-sdk.js","sourceRoot":"","sources":["../../src/template-sdk.ts"],"names":[],"mappings":"AA0LA,MAAM,UAAU,cAAc,CAAC,UAA8B;IAC3D,OAAO,UAAU,CAAC;AACpB,CAAC"}
@@ -1,232 +1,17 @@
1
- import { config } from "./config.js";
2
- import { createTemplateJobContext } from "./context.js";
3
- import { database } from "./db.js";
4
- import { createPrimitiveJobContext } from "./primitive-context.js";
5
- import { primitiveRegistry } from "./primitive-registry.js";
6
- import { templateRegistry } from "./registry.js";
7
- import { BillingService } from "./services/billing.js";
8
- import { JobsService } from "./services/jobs.js";
9
- import { ProviderAuthError, ProviderKeyUnavailableError, ProviderLeaseTimeoutError, ProviderRateLimitError, ProviderService } from "./services/providers.js";
10
- import { RemotionService } from "./services/remotion.js";
11
- import { StorageService } from "./services/storage.js";
12
- import { WebhookService } from "./services/webhooks.js";
1
+ import { devLog } from "./lib/dev-log.js";
13
2
  export class Worker {
14
- timer = null;
15
- workerId = `worker-${process.pid}`;
16
- jobs = new JobsService();
17
- billing = new BillingService();
18
- providers = new ProviderService();
19
- storage = new StorageService();
20
- remotion = new RemotionService();
21
- webhooks = new WebhookService();
22
- tickInFlight = false;
23
- activeJobs = 0;
24
- start() {
25
- this.timer = setInterval(() => void this.tick(), config.WORKER_POLL_MS);
26
- void this.tick();
3
+ async start() {
4
+ await this.run();
27
5
  }
28
- stop() {
29
- if (this.timer) {
30
- clearInterval(this.timer);
31
- }
32
- }
33
- async tick() {
34
- if (this.tickInFlight) {
35
- return;
36
- }
37
- this.tickInFlight = true;
38
- try {
39
- const availableSlots = Math.max(0, config.WORKER_MAX_CONCURRENT_JOBS - this.activeJobs);
40
- if (availableSlots > 0) {
41
- const runnable = this.selectRunnableJobs(Math.min(config.WORKER_BATCH_SIZE, availableSlots));
42
- const executions = runnable.map(async (job) => {
43
- this.activeJobs += 1;
44
- try {
45
- await this.runJob(job.id);
46
- }
47
- finally {
48
- this.activeJobs -= 1;
49
- }
50
- });
51
- await Promise.all(executions);
52
- }
53
- await this.webhooks.flushPending();
54
- }
55
- finally {
56
- this.tickInFlight = false;
57
- }
58
- }
59
- async runJob(jobId) {
60
- await templateRegistry.ensureInitialized();
61
- const job = this.jobs.getJob(jobId);
62
- if (!job || job.status !== "queued") {
63
- return;
64
- }
65
- const customer = database.getCustomerById(job.customerId);
66
- const template = templateRegistry.get(job.templateId);
67
- const primitive = template ? null : primitiveRegistry.get(job.templateId);
68
- if (!customer || (!template && !primitive)) {
69
- this.jobs.failJob(job.id, { message: "Missing customer, template, or primitive." });
70
- return;
71
- }
72
- if (template) {
73
- const wallet = await this.billing.getWalletSummary(customer.id);
74
- if (wallet.balanceUsd <= 0) {
75
- this.jobs.failJob(job.id, {
76
- message: "Wallet balance must be greater than $0.00 USD before starting a template job.",
77
- type: "insufficient_wallet_balance"
78
- });
79
- await this.emitWebhookIfNeeded("job.failed", job.id);
80
- return;
81
- }
82
- }
83
- this.jobs.markRunning(job.id);
84
- await this.emitWebhookIfNeeded("job.running", job.id);
85
- try {
86
- const result = template
87
- ? await runTemplateWorkflow({
88
- customer,
89
- job,
90
- template,
91
- workerId: this.workerId,
92
- storage: this.storage,
93
- jobs: this.jobs,
94
- billing: this.billing,
95
- providers: this.providers,
96
- remotion: this.remotion
97
- })
98
- : await runPrimitiveWorkflow({
99
- customer,
100
- job,
101
- primitive: primitive,
102
- workerId: this.workerId,
103
- storage: this.storage,
104
- billing: this.billing,
105
- providers: this.providers,
106
- remotion: this.remotion
107
- });
108
- this.jobs.succeedJob(job.id, result.output ?? {}, result.progress ?? 1);
109
- await this.emitWebhookIfNeeded("job.succeeded", job.id);
110
- }
111
- catch (error) {
112
- if (error instanceof ProviderLeaseTimeoutError) {
113
- this.jobs.requeueJob(job, error.retryAfterSeconds, { message: error.message, type: "provider_key_wait_timeout" });
114
- await this.emitWebhookIfNeeded("job.queued", job.id);
115
- return;
116
- }
117
- if (error instanceof ProviderKeyUnavailableError) {
118
- this.jobs.failJob(job.id, { message: error.message, type: "provider_key_unavailable" });
119
- await this.emitWebhookIfNeeded("job.failed", job.id);
120
- return;
121
- }
122
- if (error instanceof ProviderRateLimitError) {
123
- this.jobs.requeueJob(job, error.retryAfterSeconds, { message: error.message, type: "provider_rate_limited" });
124
- await this.emitWebhookIfNeeded("job.queued", job.id);
125
- return;
126
- }
127
- if (error instanceof ProviderAuthError) {
128
- this.jobs.requeueJob(job, 5, { message: error.message, type: "provider_auth_error" });
129
- await this.emitWebhookIfNeeded("job.queued", job.id);
130
- return;
131
- }
132
- this.jobs.failJob(job.id, { message: error instanceof Error ? error.message : "Unknown worker error" });
133
- await this.emitWebhookIfNeeded("job.failed", job.id);
134
- }
135
- }
136
- async emitWebhookIfNeeded(eventType, jobId) {
137
- const job = this.jobs.getJob(jobId);
138
- if (!job || !job.webhookUrl) {
139
- return;
140
- }
141
- this.webhooks.queueJobEvent({
142
- jobId: job.id,
143
- customerId: job.customerId,
144
- destinationUrl: job.webhookUrl,
145
- eventType,
146
- payload: this.webhooks.buildJobPayload(eventType, {
147
- job_id: job.id,
148
- tracer: job.tracer,
149
- status: job.status,
150
- template_id: job.templateId,
151
- operation_name: job.operationName,
152
- progress: job.progress,
153
- result: job.result,
154
- error: job.error
155
- })
6
+ async stop() {
7
+ devLog("worker.disabled.stop", {
8
+ reason: "serverless_runtime_uses_step_functions"
156
9
  });
157
10
  }
158
- selectRunnableJobs(limit) {
159
- const candidateLimit = Math.max(limit * 10, config.WORKER_BATCH_SIZE * 5, 25);
160
- const candidates = database.listRunnableJobs(candidateLimit);
161
- const providerCapacity = this.buildProviderCapacityMap();
162
- const selected = [];
163
- for (const job of candidates) {
164
- if (selected.length >= limit) {
165
- break;
166
- }
167
- const providerHint = parseProviderHint(job.payload._providerHint);
168
- if (!providerHint) {
169
- selected.push(job);
170
- continue;
171
- }
172
- const available = providerCapacity.get(this.providerCapacityKey(job.customerId, providerHint)) ?? 0;
173
- if (available <= 0) {
174
- continue;
175
- }
176
- providerCapacity.set(this.providerCapacityKey(job.customerId, providerHint), available - 1);
177
- selected.push(job);
178
- }
179
- return selected;
180
- }
181
- buildProviderCapacityMap() {
182
- const map = new Map();
183
- for (const entry of database.listAvailableProviderKeyCounts()) {
184
- map.set(this.providerCapacityKey(entry.customerId, entry.provider), entry.availableCount);
185
- }
186
- return map;
187
- }
188
- providerCapacityKey(customerId, provider) {
189
- return `${customerId}:${provider}`;
190
- }
191
- }
192
- async function runTemplateWorkflow(input) {
193
- const workflow = input.template.jobs[input.job.workflowName];
194
- if (!workflow) {
195
- throw new Error(`Unknown workflow ${input.job.workflowName}`);
196
- }
197
- const ctx = createTemplateJobContext({
198
- customer: input.customer,
199
- job: input.job,
200
- template: input.template,
201
- workerId: input.workerId,
202
- storage: input.storage,
203
- jobs: input.jobs,
204
- billing: input.billing,
205
- providers: input.providers,
206
- remotion: input.remotion
207
- });
208
- return workflow(ctx, input.job.payload);
209
- }
210
- async function runPrimitiveWorkflow(input) {
211
- const workflow = input.primitive.jobs[input.job.workflowName];
212
- if (!workflow) {
213
- throw new Error(`Unknown workflow ${input.job.workflowName}`);
214
- }
215
- const ctx = createPrimitiveJobContext({
216
- customer: input.customer,
217
- job: input.job,
218
- primitive: input.primitive,
219
- workerId: input.workerId,
220
- storage: input.storage,
221
- billing: input.billing,
222
- providers: input.providers,
223
- remotion: input.remotion
224
- });
225
- return workflow(ctx, input.job.payload);
226
- }
227
- function parseProviderHint(value) {
228
- if (value === "openai" || value === "gemini" || value === "openrouter" || value === "perplexity") {
229
- return value;
11
+ async run() {
12
+ devLog("worker.disabled", {
13
+ reason: "serverless_runtime_uses_step_functions"
14
+ }, "warn");
230
15
  }
231
- return null;
232
16
  }
17
+ //# sourceMappingURL=worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/worker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,MAAM,OAAO,MAAM;IACjB,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,CAAC,sBAAsB,EAAE;YAC7B,MAAM,EAAE,wCAAwC;SACjD,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,GAAG;QACP,MAAM,CAAC,iBAAiB,EAAE;YACxB,MAAM,EAAE,wCAAwC;SACjD,EAAE,MAAM,CAAC,CAAC;IACb,CAAC;CACF"}
package/package.json CHANGED
@@ -1,7 +1,8 @@
1
1
  {
2
2
  "name": "@mevdragon/vidfarm-devcli",
3
- "version": "0.2.12",
4
- "description": "Developer CLI for running the Vidfarm local template platform.",
3
+ "version": "0.2.13",
4
+ "description": "DEPRECATED. Built for the old REST-API Vidfarm template model. Superseded by the browser-based Trackpad Editor at https://vidfarm.cc/editor/. No longer maintained.",
5
+ "deprecated": "This CLI targeted the old REST-API template paradigm. Vidfarm now uses the Trackpad Editor (composition-based editing in the browser). See SKILL.platform.md.",
5
6
  "type": "module",
6
7
  "bin": {
7
8
  "vidfarm": "dist/src/cli.js",
@@ -16,11 +17,20 @@
16
17
  "auto-create-templates/runbook.md",
17
18
  "auto-create-templates/template-plan.schema.json",
18
19
  "auto-create-templates/template-planner-prompt.md",
20
+ "auto-create-hyperframe-templates/AUTO_CREATE_HYPERFRAME_TEMPLATES.md",
21
+ "auto-create-hyperframe-templates/extractor-system-prompt.md",
22
+ "auto-create-hyperframe-templates/input-manifest.schema.json",
23
+ "auto-create-hyperframe-templates/lambda-memory-estimator.md",
24
+ "auto-create-hyperframe-templates/production-graph.schema.json",
25
+ "auto-create-hyperframe-templates/runbook.md",
26
+ "auto-create-hyperframe-templates/scripts/create-hyperframe-template.mjs",
27
+ "auto-create-hyperframe-templates/template-plan.schema.json",
28
+ "auto-create-hyperframe-templates/template-planner-prompt.md",
19
29
  "dist/templates/vidfarm_template_0000",
20
30
  "templates/vidfarm_template_0000",
21
31
  "README.md",
22
- "SKILL.developer.md",
23
- "GETTING_STARTED.developers.md",
32
+ "SKILL.director.md",
33
+ "SKILL.platform.md",
24
34
  ".env.example",
25
35
  "!readme.secret.md"
26
36
  ],
@@ -35,18 +45,24 @@
35
45
  "node": ">=22.0.0"
36
46
  },
37
47
  "scripts": {
38
- "dev": "tsx watch src/index.ts",
48
+ "dev": "tsx --import ./src/instrument.ts watch src/index.ts",
39
49
  "dev:frontend": "node scripts/build-homepage-client.mjs --watch",
40
50
  "dev:cli": "tsx src/cli.ts dev",
41
51
  "build:frontend": "node scripts/build-homepage-client.mjs",
52
+ "build:hyperframes-editor": "cd demo && node scripts/build.mjs",
42
53
  "operator:template-artifact": "node scripts/platform-operator-template-artifact.mjs",
54
+ "bootstrap:staging-templates": "tsx scripts/bootstrap-staging-template-releases.ts",
55
+ "migrate:sqlite-to-dynamodb": "tsx scripts/migrate-sqlite-to-dynamodb.ts",
43
56
  "deploy:prod-inplace": "bash scripts/deploy-prod-inplace.sh",
44
57
  "rollback:prod-inplace": "bash scripts/rollback-prod-inplace.sh",
45
- "build": "npm run build:frontend && node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\" && tsc -p tsconfig.json",
46
- "start": "node dist/src/index.js",
58
+ "build": "npm run build:frontend && npm run build:hyperframes-editor && node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\" && tsc -p tsconfig.json",
59
+ "start": "node --import ./dist/src/instrument.js --enable-source-maps dist/src/index.js",
47
60
  "check": "tsc -p tsconfig.json --noEmit",
48
61
  "cdk:synth": "npm run build && npx aws-cdk synth --app 'node dist/infra/cdk/bin/vidfarm-prod.js'",
49
62
  "cdk:deploy": "npm run build && npx aws-cdk deploy --app 'node dist/infra/cdk/bin/vidfarm-prod.js'",
63
+ "cdk:deploy:prod-serverless": "npm run build && npx aws-cdk deploy --app 'node dist/infra/cdk/bin/vidfarm-prod.js'",
64
+ "cdk:synth:staging-serverless": "npm run build && npx aws-cdk synth --app 'node dist/infra/cdk/bin/vidfarm-serverless-staging.js'",
65
+ "cdk:deploy:staging-serverless": "npm run build && npx aws-cdk deploy --app 'node dist/infra/cdk/bin/vidfarm-serverless-staging.js'",
50
66
  "prepack": "npm run build"
51
67
  },
52
68
  "dependencies": {
@@ -55,21 +71,34 @@
55
71
  "@ai-sdk/openai-compatible": "^2.0.48",
56
72
  "@assistant-ui/react": "^0.14.8",
57
73
  "@assistant-ui/react-data-stream": "^0.12.14",
74
+ "@aws-sdk/client-cloudformation": "^3.1076.0",
58
75
  "@aws-sdk/client-dynamodb": "^3.1056.0",
59
- "@aws-sdk/client-s3": "^3.787.0",
76
+ "@aws-sdk/client-s3": "^3.1064.0",
77
+ "@aws-sdk/client-sfn": "^3.1073.0",
78
+ "@aws-sdk/lib-dynamodb": "^3.1073.0",
60
79
  "@aws-sdk/s3-request-presigner": "^3.787.0",
61
80
  "@fontsource/libre-baskerville": "^5.2.10",
62
81
  "@fontsource/montserrat": "^5.2.8",
63
82
  "@fontsource/source-code-pro": "^5.2.7",
64
83
  "@fontsource/tiktok-sans": "^5.2.4",
65
84
  "@hono/node-server": "^1.14.4",
85
+ "@hyperframes/aws-lambda": "^0.7.21",
66
86
  "@remotion/bundler": "4.0.355",
67
87
  "@remotion/lambda": "4.0.355",
68
88
  "@remotion/renderer": "4.0.355",
89
+ "@sentry/aws-serverless": "^10.56.0",
90
+ "@sentry/hono": "^10.56.0",
91
+ "@sentry/node": "^10.56.0",
92
+ "@sentry/react": "^10.56.0",
69
93
  "ai": "^6.0.191",
70
- "better-sqlite3": "^12.1.1",
71
94
  "dotenv": "^16.5.0",
95
+ "esbuild": "^0.28.1",
96
+ "ffmpeg-static": "^5.3.0",
97
+ "ffprobe-static": "^3.1.0",
98
+ "fontkit": "^2.0.4",
72
99
  "hono": "^4.8.3",
100
+ "hyperframes": "^0.7.21",
101
+ "linkedom": "^0.18.12",
73
102
  "react": "^18.3.1",
74
103
  "react-dom": "^18.3.1",
75
104
  "remotion": "4.0.355",
@@ -77,15 +106,21 @@
77
106
  "zod": "^3.25.28"
78
107
  },
79
108
  "devDependencies": {
80
- "@types/better-sqlite3": "^7.6.13",
81
109
  "@types/node": "^24.0.1",
82
110
  "@types/react": "^18.3.23",
83
111
  "@types/react-dom": "^18.3.7",
84
112
  "aws-cdk-lib": "^2.196.0",
85
113
  "constructs": "^10.4.2",
86
- "esbuild": "^0.28.0",
87
114
  "tsx": "^4.19.4",
88
115
  "typescript": "^5.8.3",
89
116
  "zustand": "^5.0.13"
90
- }
117
+ },
118
+ "main": "index.js",
119
+ "keywords": [],
120
+ "author": "",
121
+ "license": "ISC",
122
+ "bugs": {
123
+ "url": "https://github.com/OfficeXApp/vidfarm/issues"
124
+ },
125
+ "homepage": "https://github.com/OfficeXApp/vidfarm#readme"
91
126
  }