@mevdragon/vidfarm-devcli 0.2.14 → 0.3.1

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 (204) hide show
  1. package/README.md +11 -4
  2. package/SKILL.director.md +100 -0
  3. package/SKILL.platform.md +66 -6
  4. package/dist/src/cli.js +135 -1527
  5. package/package.json +5 -24
  6. package/.env.example +0 -60
  7. package/auto-create-hyperframe-templates/AUTO_CREATE_HYPERFRAME_TEMPLATES.md +0 -275
  8. package/auto-create-hyperframe-templates/extractor-system-prompt.md +0 -128
  9. package/auto-create-hyperframe-templates/input-manifest.schema.json +0 -56
  10. package/auto-create-hyperframe-templates/lambda-memory-estimator.md +0 -118
  11. package/auto-create-hyperframe-templates/production-graph.schema.json +0 -314
  12. package/auto-create-hyperframe-templates/runbook.md +0 -198
  13. package/auto-create-hyperframe-templates/scripts/create-hyperframe-template.mjs +0 -368
  14. package/auto-create-hyperframe-templates/template-plan.schema.json +0 -311
  15. package/auto-create-hyperframe-templates/template-planner-prompt.md +0 -144
  16. package/auto-create-templates/AUTO_CREATE_TEMPLATES.md +0 -599
  17. package/auto-create-templates/extractor-system-prompt.md +0 -119
  18. package/auto-create-templates/production-graph.schema.json +0 -276
  19. package/auto-create-templates/runbook.md +0 -140
  20. package/auto-create-templates/template-plan.schema.json +0 -301
  21. package/auto-create-templates/template-planner-prompt.md +0 -137
  22. package/dist/src/account-pages-legacy.js +0 -9338
  23. package/dist/src/account-pages-legacy.js.map +0 -1
  24. package/dist/src/account-pages.js +0 -52
  25. package/dist/src/account-pages.js.map +0 -1
  26. package/dist/src/app.js +0 -13711
  27. package/dist/src/app.js.map +0 -1
  28. package/dist/src/cli.js.map +0 -1
  29. package/dist/src/composition-runtime.js +0 -581
  30. package/dist/src/composition-runtime.js.map +0 -1
  31. package/dist/src/config.js +0 -140
  32. package/dist/src/config.js.map +0 -1
  33. package/dist/src/context.js +0 -492
  34. package/dist/src/context.js.map +0 -1
  35. package/dist/src/dev-app-legacy.js +0 -694
  36. package/dist/src/dev-app-legacy.js.map +0 -1
  37. package/dist/src/dev-app.js +0 -6
  38. package/dist/src/dev-app.js.map +0 -1
  39. package/dist/src/dev-serve.js.map +0 -1
  40. package/dist/src/domain.js +0 -2
  41. package/dist/src/domain.js.map +0 -1
  42. package/dist/src/editor-chat-history.js +0 -82
  43. package/dist/src/editor-chat-history.js.map +0 -1
  44. package/dist/src/editor-chat.js +0 -312
  45. package/dist/src/editor-chat.js.map +0 -1
  46. package/dist/src/editor-dark-theme.js +0 -1128
  47. package/dist/src/editor-dark-theme.js.map +0 -1
  48. package/dist/src/frontend/flockposter-cache-store.js +0 -124
  49. package/dist/src/frontend/flockposter-cache-store.js.map +0 -1
  50. package/dist/src/frontend/homepage-client.js +0 -117
  51. package/dist/src/frontend/homepage-client.js.map +0 -1
  52. package/dist/src/frontend/homepage-shared.js +0 -4
  53. package/dist/src/frontend/homepage-shared.js.map +0 -1
  54. package/dist/src/frontend/homepage-store.js +0 -28
  55. package/dist/src/frontend/homepage-store.js.map +0 -1
  56. package/dist/src/frontend/homepage-view.js +0 -260
  57. package/dist/src/frontend/homepage-view.js.map +0 -1
  58. package/dist/src/frontend/page-runtime-client.js +0 -124
  59. package/dist/src/frontend/page-runtime-client.js.map +0 -1
  60. package/dist/src/frontend/page-runtime-store.js +0 -9
  61. package/dist/src/frontend/page-runtime-store.js.map +0 -1
  62. package/dist/src/frontend/sentry.js +0 -42
  63. package/dist/src/frontend/sentry.js.map +0 -1
  64. package/dist/src/frontend/template-editor-chat.js +0 -3760
  65. package/dist/src/frontend/template-editor-chat.js.map +0 -1
  66. package/dist/src/help-page.js +0 -333
  67. package/dist/src/help-page.js.map +0 -1
  68. package/dist/src/homepage.js +0 -919
  69. package/dist/src/homepage.js.map +0 -1
  70. package/dist/src/hyperframes/composition.js +0 -180
  71. package/dist/src/hyperframes/composition.js.map +0 -1
  72. package/dist/src/index.js +0 -16
  73. package/dist/src/index.js.map +0 -1
  74. package/dist/src/instrument.js +0 -30
  75. package/dist/src/instrument.js.map +0 -1
  76. package/dist/src/lib/crypto.js +0 -45
  77. package/dist/src/lib/crypto.js.map +0 -1
  78. package/dist/src/lib/dev-log.js +0 -54
  79. package/dist/src/lib/dev-log.js.map +0 -1
  80. package/dist/src/lib/display-name.js +0 -11
  81. package/dist/src/lib/display-name.js.map +0 -1
  82. package/dist/src/lib/ids.js +0 -24
  83. package/dist/src/lib/ids.js.map +0 -1
  84. package/dist/src/lib/images.js +0 -19
  85. package/dist/src/lib/images.js.map +0 -1
  86. package/dist/src/lib/json.js +0 -15
  87. package/dist/src/lib/json.js.map +0 -1
  88. package/dist/src/lib/template-dna.js +0 -543
  89. package/dist/src/lib/template-dna.js.map +0 -1
  90. package/dist/src/lib/template-paths.js +0 -28
  91. package/dist/src/lib/template-paths.js.map +0 -1
  92. package/dist/src/lib/template-style-options.js +0 -203
  93. package/dist/src/lib/template-style-options.js.map +0 -1
  94. package/dist/src/lib/time.js +0 -7
  95. package/dist/src/lib/time.js.map +0 -1
  96. package/dist/src/lib/video-quality-harness.js +0 -60
  97. package/dist/src/lib/video-quality-harness.js.map +0 -1
  98. package/dist/src/page-runtime.js +0 -2
  99. package/dist/src/page-runtime.js.map +0 -1
  100. package/dist/src/page-shell.js +0 -1315
  101. package/dist/src/page-shell.js.map +0 -1
  102. package/dist/src/primitive-context.js +0 -299
  103. package/dist/src/primitive-context.js.map +0 -1
  104. package/dist/src/primitive-registry.js +0 -2181
  105. package/dist/src/primitive-registry.js.map +0 -1
  106. package/dist/src/primitive-sdk.js +0 -4
  107. package/dist/src/primitive-sdk.js.map +0 -1
  108. package/dist/src/primitives/remotion/html-image.js +0 -30
  109. package/dist/src/primitives/remotion/html-image.js.map +0 -1
  110. package/dist/src/primitives/remotion/media-slideshow.js +0 -60
  111. package/dist/src/primitives/remotion/media-slideshow.js.map +0 -1
  112. package/dist/src/react-page-shell.js +0 -35
  113. package/dist/src/react-page-shell.js.map +0 -1
  114. package/dist/src/ready-post-schedule-component.js +0 -1515
  115. package/dist/src/ready-post-schedule-component.js.map +0 -1
  116. package/dist/src/registry.js +0 -296
  117. package/dist/src/registry.js.map +0 -1
  118. package/dist/src/runtime.js +0 -31
  119. package/dist/src/runtime.js.map +0 -1
  120. package/dist/src/services/api-call-history.js +0 -249
  121. package/dist/src/services/api-call-history.js.map +0 -1
  122. package/dist/src/services/auth.js +0 -152
  123. package/dist/src/services/auth.js.map +0 -1
  124. package/dist/src/services/billing.js +0 -231
  125. package/dist/src/services/billing.js.map +0 -1
  126. package/dist/src/services/chat-threads.js +0 -92
  127. package/dist/src/services/chat-threads.js.map +0 -1
  128. package/dist/src/services/fork-access.js +0 -93
  129. package/dist/src/services/fork-access.js.map +0 -1
  130. package/dist/src/services/fork-manifest.js +0 -43
  131. package/dist/src/services/fork-manifest.js.map +0 -1
  132. package/dist/src/services/ghostcut.js +0 -132
  133. package/dist/src/services/ghostcut.js.map +0 -1
  134. package/dist/src/services/hyperframes.js +0 -1014
  135. package/dist/src/services/hyperframes.js.map +0 -1
  136. package/dist/src/services/job-capacity.js +0 -14
  137. package/dist/src/services/job-capacity.js.map +0 -1
  138. package/dist/src/services/job-logs.js +0 -197
  139. package/dist/src/services/job-logs.js.map +0 -1
  140. package/dist/src/services/jobs.js +0 -136
  141. package/dist/src/services/jobs.js.map +0 -1
  142. package/dist/src/services/media-processing.js +0 -743
  143. package/dist/src/services/media-processing.js.map +0 -1
  144. package/dist/src/services/primitive-media-lambda.js +0 -280
  145. package/dist/src/services/primitive-media-lambda.js.map +0 -1
  146. package/dist/src/services/providers.js +0 -2870
  147. package/dist/src/services/providers.js.map +0 -1
  148. package/dist/src/services/rate-limits.js +0 -237
  149. package/dist/src/services/rate-limits.js.map +0 -1
  150. package/dist/src/services/remotion.js +0 -688
  151. package/dist/src/services/remotion.js.map +0 -1
  152. package/dist/src/services/serverless-auth.js +0 -374
  153. package/dist/src/services/serverless-auth.js.map +0 -1
  154. package/dist/src/services/serverless-jobs.js +0 -1074
  155. package/dist/src/services/serverless-jobs.js.map +0 -1
  156. package/dist/src/services/serverless-provider-keys.js +0 -401
  157. package/dist/src/services/serverless-provider-keys.js.map +0 -1
  158. package/dist/src/services/serverless-records.js +0 -1088
  159. package/dist/src/services/serverless-records.js.map +0 -1
  160. package/dist/src/services/serverless-template-configs.js +0 -67
  161. package/dist/src/services/serverless-template-configs.js.map +0 -1
  162. package/dist/src/services/storage.js +0 -383
  163. package/dist/src/services/storage.js.map +0 -1
  164. package/dist/src/services/template-certification.js +0 -475
  165. package/dist/src/services/template-certification.js.map +0 -1
  166. package/dist/src/services/template-loader.js +0 -99
  167. package/dist/src/services/template-loader.js.map +0 -1
  168. package/dist/src/services/template-runtime-bundles.js +0 -217
  169. package/dist/src/services/template-runtime-bundles.js.map +0 -1
  170. package/dist/src/services/template-sources.js +0 -1017
  171. package/dist/src/services/template-sources.js.map +0 -1
  172. package/dist/src/services/video-normalization.js +0 -2
  173. package/dist/src/services/video-normalization.js.map +0 -1
  174. package/dist/src/services/webhooks.js +0 -62
  175. package/dist/src/services/webhooks.js.map +0 -1
  176. package/dist/src/template-editor-pages.js +0 -2491
  177. package/dist/src/template-editor-pages.js.map +0 -1
  178. package/dist/src/template-editor-shell.js +0 -2702
  179. package/dist/src/template-editor-shell.js.map +0 -1
  180. package/dist/src/template-sdk.js +0 -4
  181. package/dist/src/template-sdk.js.map +0 -1
  182. package/dist/src/worker.js +0 -17
  183. package/dist/src/worker.js.map +0 -1
  184. package/public/assets/homepage-app.js +0 -54
  185. package/public/assets/homepage-client-app.js +0 -80
  186. package/public/assets/page-runtime-client-app.js +0 -94
  187. package/readme.secret.md +0 -89
  188. package/templates/vidfarm_template_0000/README.md +0 -106
  189. package/templates/vidfarm_template_0000/SKILL.md +0 -266
  190. package/templates/vidfarm_template_0000/assets/Abel-Regular.ttf +0 -0
  191. package/templates/vidfarm_template_0000/assets/DMSerifDisplay-Regular.ttf +0 -0
  192. package/templates/vidfarm_template_0000/assets/Montserrat[wght].ttf +0 -0
  193. package/templates/vidfarm_template_0000/assets/SourceCodePro[wght].ttf +0 -0
  194. package/templates/vidfarm_template_0000/assets/TikTokSans-SemiBold.ttf +0 -0
  195. package/templates/vidfarm_template_0000/assets/Yesteryear-Regular.ttf +0 -0
  196. package/templates/vidfarm_template_0000/composition.json +0 -11
  197. package/templates/vidfarm_template_0000/src/lib/images.js +0 -221
  198. package/templates/vidfarm_template_0000/src/remotion/Root.js +0 -33
  199. package/templates/vidfarm_template_0000/src/remotion/index.js +0 -3
  200. package/templates/vidfarm_template_0000/src/sdk.js +0 -3
  201. package/templates/vidfarm_template_0000/src/style-options.js +0 -200
  202. package/templates/vidfarm_template_0000/src/template-dna.js +0 -9
  203. package/templates/vidfarm_template_0000/src/template.js +0 -1566
  204. package/templates/vidfarm_template_0000/template.config.json +0 -21
@@ -1 +0,0 @@
1
- {"version":3,"file":"ready-post-schedule-component.js","sourceRoot":"","sources":["../../src/ready-post-schedule-component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAYpD,MAAM,UAAU,6BAA6B;IAC3C,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAylBR,CAAC;AACF,CAAC;AAED,MAAM,UAAU,4BAA4B;IAC1C,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA6DK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,IAA2B;IACrE,OAAO,iEAAiE,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC;AAC7G,CAAC;AAED,MAAM,UAAU,6BAA6B;IAC3C,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAu0BG,CAAC;AACb,CAAC"}
@@ -1,296 +0,0 @@
1
- import { existsSync, readdirSync } from "node:fs";
2
- import path from "node:path";
3
- import { z } from "zod";
4
- import { config } from "./config.js";
5
- import { devLog } from "./lib/dev-log.js";
6
- import { loadTemplateFromModule } from "./services/template-loader.js";
7
- import { loadTemplateFromRuntimeRelease } from "./services/template-runtime-bundles.js";
8
- import { serverlessRecords } from "./services/serverless-records.js";
9
- class TemplateRegistry {
10
- localTemplates = new Map();
11
- releaseTemplates = new Map();
12
- activeReleases = new Map();
13
- runtimeTemplates = new Map();
14
- initialized = false;
15
- initPromise = null;
16
- async ensureInitialized() {
17
- if (this.initialized) {
18
- return;
19
- }
20
- if (this.initPromise) {
21
- return this.initPromise;
22
- }
23
- this.initPromise = (async () => {
24
- await this.loadActiveReleaseSnapshots();
25
- if (shouldLoadLocalTemplates()) {
26
- await this.loadLocalTemplates();
27
- devLog("template_registry.local_loaded", {
28
- count: this.localTemplates.size,
29
- template_ids: [...this.localTemplates.keys()]
30
- });
31
- }
32
- this.initialized = true;
33
- this.initPromise = null;
34
- devLog("template_registry.initialized", {
35
- local_count: this.localTemplates.size,
36
- release_count: this.releaseTemplates.size,
37
- runtime_count: this.runtimeTemplates.size
38
- });
39
- })();
40
- return this.initPromise;
41
- }
42
- list() {
43
- const merged = new Map();
44
- for (const template of this.releaseTemplates.values()) {
45
- merged.set(template.id, template);
46
- }
47
- for (const template of this.localTemplates.values()) {
48
- merged.set(template.id, template);
49
- }
50
- for (const template of this.runtimeTemplates.values()) {
51
- merged.set(template.id, template);
52
- }
53
- return [...merged.values()].sort((a, b) => a.id.localeCompare(b.id));
54
- }
55
- get(templateId) {
56
- return this.findTemplate(templateId, this.runtimeTemplates)
57
- ?? this.findTemplate(templateId, this.localTemplates)
58
- ?? this.findTemplate(templateId, this.releaseTemplates);
59
- }
60
- async listMetadata() {
61
- try {
62
- const releases = await serverlessRecords.listActiveTemplateReleases?.() ?? [];
63
- for (const release of releases) {
64
- this.cacheReleaseSnapshot(release);
65
- }
66
- const releaseTemplates = releases
67
- .filter((release) => release.templateSnapshot)
68
- .map((release) => templateFromSnapshot(release.templateSnapshot, release));
69
- return await this.mergeLocalMetadata(releaseTemplates);
70
- }
71
- catch (error) {
72
- devLog("template_registry.metadata.list_failed", {
73
- message: error instanceof Error ? error.message : String(error)
74
- }, "warn");
75
- await this.ensureInitialized();
76
- return this.list();
77
- }
78
- }
79
- async listMetadataPage(input = {}) {
80
- try {
81
- const page = await serverlessRecords.listActiveTemplateReleasePage?.(input);
82
- if (!page) {
83
- return { templates: await this.listMetadata(), nextCursor: null };
84
- }
85
- for (const release of page.items) {
86
- this.cacheReleaseSnapshot(release);
87
- }
88
- const releaseTemplates = page.items
89
- .filter((release) => release.templateSnapshot)
90
- .map((release) => templateFromSnapshot(release.templateSnapshot, release));
91
- return {
92
- templates: await this.mergeLocalMetadata(releaseTemplates),
93
- nextCursor: page.nextCursor
94
- };
95
- }
96
- catch (error) {
97
- devLog("template_registry.metadata.page_failed", {
98
- message: error instanceof Error ? error.message : String(error)
99
- }, "warn");
100
- return { templates: await this.listMetadata(), nextCursor: null };
101
- }
102
- }
103
- async getMetadata(templateId) {
104
- const cached = this.get(templateId);
105
- if (cached) {
106
- return cached;
107
- }
108
- try {
109
- const release = await serverlessRecords.getActiveTemplateReleaseByTemplateId?.(templateId);
110
- if (release?.templateSnapshot) {
111
- return this.cacheReleaseSnapshot(release);
112
- }
113
- }
114
- catch (error) {
115
- devLog("template_registry.metadata.get_failed", {
116
- template_id: templateId,
117
- message: error instanceof Error ? error.message : String(error)
118
- }, "warn");
119
- }
120
- await this.ensureInitialized();
121
- return this.get(templateId);
122
- }
123
- async getExecutable(templateId) {
124
- const runtime = this.findTemplate(templateId, this.runtimeTemplates) ?? this.findTemplate(templateId, this.localTemplates);
125
- if (runtime) {
126
- return runtime;
127
- }
128
- let releaseTemplate = this.findTemplate(templateId, this.releaseTemplates);
129
- let release = releaseTemplate ? this.activeReleases.get(releaseTemplate.id) : null;
130
- if (!release) {
131
- try {
132
- const activeRelease = await serverlessRecords.getActiveTemplateReleaseByTemplateId?.(templateId);
133
- if (activeRelease?.templateSnapshot) {
134
- releaseTemplate = this.cacheReleaseSnapshot(activeRelease);
135
- release = activeRelease;
136
- }
137
- }
138
- catch (error) {
139
- devLog("template_registry.executable.active_release_lookup_failed", {
140
- template_id: templateId,
141
- message: error instanceof Error ? error.message : String(error)
142
- }, "warn");
143
- }
144
- }
145
- if (!release) {
146
- await this.ensureInitialized();
147
- const initializedRuntime = this.findTemplate(templateId, this.runtimeTemplates) ?? this.findTemplate(templateId, this.localTemplates);
148
- if (initializedRuntime) {
149
- return initializedRuntime;
150
- }
151
- releaseTemplate = this.findTemplate(templateId, this.releaseTemplates);
152
- release = releaseTemplate ? this.activeReleases.get(releaseTemplate.id) : null;
153
- }
154
- if (!release) {
155
- return null;
156
- }
157
- const template = await loadTemplateFromRuntimeRelease(release);
158
- this.runtimeTemplates.set(template.id, template);
159
- return template;
160
- }
161
- registerRuntimeTemplate(template) {
162
- this.runtimeTemplates.set(template.id, template);
163
- }
164
- cacheReleaseSnapshot(release) {
165
- if (!release.templateSnapshot) {
166
- return null;
167
- }
168
- const template = templateFromSnapshot(release.templateSnapshot, release);
169
- this.releaseTemplates.set(template.id, template);
170
- this.activeReleases.set(template.id, release);
171
- return template;
172
- }
173
- async loadLocalTemplates() {
174
- this.localTemplates.clear();
175
- for (const modulePath of discoverLocalTemplateModulePaths(process.cwd())) {
176
- const template = await loadTemplateFromModule(modulePath);
177
- this.localTemplates.set(template.id, template);
178
- devLog("template_registry.local_template.loaded", {
179
- template_id: template.id,
180
- slug_id: template.slugId,
181
- module_path: modulePath
182
- });
183
- }
184
- }
185
- async loadActiveReleaseSnapshots() {
186
- this.releaseTemplates.clear();
187
- this.activeReleases.clear();
188
- let releases = [];
189
- try {
190
- releases = await serverlessRecords.listActiveTemplateReleases?.() ?? [];
191
- }
192
- catch (error) {
193
- devLog("template_registry.active_releases.load_failed", {
194
- message: error instanceof Error ? error.message : String(error)
195
- }, "warn");
196
- return;
197
- }
198
- for (const release of releases) {
199
- if (!release.templateSnapshot) {
200
- continue;
201
- }
202
- this.cacheReleaseSnapshot(release);
203
- }
204
- devLog("template_registry.active_releases.loaded", {
205
- count: this.releaseTemplates.size,
206
- template_ids: [...this.releaseTemplates.keys()]
207
- });
208
- }
209
- async mergeLocalMetadata(templates) {
210
- if (shouldLoadLocalTemplates()) {
211
- await this.ensureInitialized();
212
- }
213
- const merged = new Map();
214
- for (const template of templates) {
215
- merged.set(template.id, template);
216
- }
217
- for (const template of this.localTemplates.values()) {
218
- merged.set(template.id, template);
219
- }
220
- for (const template of this.runtimeTemplates.values()) {
221
- merged.set(template.id, template);
222
- }
223
- return [...merged.values()].sort((a, b) => a.id.localeCompare(b.id));
224
- }
225
- findTemplate(templateKey, source) {
226
- return source.get(templateKey) ?? [...source.values()].find((template) => template.slugId === templateKey) ?? null;
227
- }
228
- }
229
- function templateFromSnapshot(snapshot, release) {
230
- const snapshotAbout = snapshot.about;
231
- const operations = Object.fromEntries(snapshot.operations.map((operation) => [
232
- operation.name,
233
- {
234
- description: operation.description,
235
- inputSchema: z.record(z.string(), z.unknown()),
236
- workflow: operation.workflow,
237
- providerHint: operation.providerHint ?? undefined,
238
- webhookSupport: operation.webhookSupport ?? undefined
239
- }
240
- ]));
241
- return {
242
- id: snapshot.id,
243
- slugId: snapshot.slugId,
244
- version: snapshot.version,
245
- about: {
246
- ...snapshot.about,
247
- links_to_inspiration: normalizeTemplateInspirationLinks(snapshotAbout.links_to_inspiration, snapshot.about.link_to_original),
248
- sound: normalizeTemplateSound(snapshotAbout.sound)
249
- },
250
- examples: snapshot.examples,
251
- skillPath: release.skillPath,
252
- configSchema: z.record(z.string(), z.unknown()),
253
- operations,
254
- jobs: {}
255
- };
256
- }
257
- function normalizeTemplateInspirationLinks(value, linkToOriginal) {
258
- if (Array.isArray(value)) {
259
- return value.filter((entry) => typeof entry === "string");
260
- }
261
- return linkToOriginal ? [linkToOriginal] : [];
262
- }
263
- function normalizeTemplateSound(value) {
264
- return {
265
- sound_title: typeof value?.sound_title === "string" ? value.sound_title : "",
266
- sound_url: typeof value?.sound_url === "string" ? value.sound_url : ""
267
- };
268
- }
269
- function shouldLoadLocalTemplates() {
270
- if (config.VIDFARM_LOAD_LOCAL_TEMPLATES === "true") {
271
- return true;
272
- }
273
- if (config.VIDFARM_LOAD_LOCAL_TEMPLATES === "false") {
274
- return false;
275
- }
276
- return !config.isProduction;
277
- }
278
- function discoverLocalTemplateModulePaths(rootDir) {
279
- const templatesDir = path.resolve(rootDir, "templates");
280
- if (!existsSync(templatesDir)) {
281
- return [];
282
- }
283
- return readdirSync(templatesDir, { withFileTypes: true })
284
- .filter((entry) => entry.isDirectory() && entry.name.startsWith("vidfarm_template_"))
285
- .filter((entry) => (entry.name !== "vidfarm_template_0000"
286
- || process.env.NODE_ENV !== "production"
287
- || process.env.VIDFARM_DEPLOYMENT_TARGET === "serverless-staging"))
288
- .map((entry) => [
289
- path.join(templatesDir, entry.name, "src", "template.js"),
290
- path.join(templatesDir, entry.name, "src", "template.ts")
291
- ].find((modulePath) => existsSync(modulePath)))
292
- .filter((modulePath) => Boolean(modulePath))
293
- .sort((a, b) => a.localeCompare(b));
294
- }
295
- export const templateRegistry = new TemplateRegistry();
296
- //# sourceMappingURL=registry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/registry.ts"],"names":[],"mappings":"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"}
@@ -1,31 +0,0 @@
1
- import { serve } from "@hono/node-server";
2
- import * as Sentry from "@sentry/node";
3
- import app from "./app.js";
4
- import { config } from "./config.js";
5
- import { templateRegistry } from "./registry.js";
6
- import { apiCallHistoryStore } from "./services/api-call-history.js";
7
- import { jobLogStore } from "./services/job-logs.js";
8
- import { Worker } from "./worker.js";
9
- export async function startRuntime() {
10
- await templateRegistry.ensureInitialized();
11
- const worker = new Worker();
12
- worker.start();
13
- const server = serve({
14
- fetch: app.fetch,
15
- port: config.PORT,
16
- serverOptions: {
17
- maxHeaderSize: 64 * 1024
18
- }
19
- }, (info) => {
20
- console.log(`[vidfarm] listening on http://localhost:${info.port}`);
21
- });
22
- const shutdown = async () => {
23
- worker.stop();
24
- await apiCallHistoryStore.shutdown();
25
- await jobLogStore.shutdown();
26
- await Sentry.flush(2_000).catch(() => undefined);
27
- server.close();
28
- };
29
- return { server, worker, shutdown };
30
- }
31
- //# sourceMappingURL=runtime.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,cAAc,CAAC;AACvC,OAAO,GAAG,MAAM,UAAU,CAAC;AAC3B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,MAAM,gBAAgB,CAAC,iBAAiB,EAAE,CAAC;IAC3C,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;IAC5B,MAAM,CAAC,KAAK,EAAE,CAAC;IAEf,MAAM,MAAM,GAAG,KAAK,CAClB;QACE,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,aAAa,EAAE;YACb,aAAa,EAAE,EAAE,GAAG,IAAI;SACzB;KACF,EACD,CAAC,IAAI,EAAE,EAAE;QACP,OAAO,CAAC,GAAG,CAAC,2CAA2C,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACtE,CAAC,CACF,CAAC;IAEF,MAAM,QAAQ,GAAG,KAAK,IAAI,EAAE;QAC1B,MAAM,CAAC,IAAI,EAAE,CAAC;QACd,MAAM,mBAAmB,CAAC,QAAQ,EAAE,CAAC;QACrC,MAAM,WAAW,CAAC,QAAQ,EAAE,CAAC;QAC7B,MAAM,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACjD,MAAM,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC,CAAC;IAEF,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AACtC,CAAC"}
@@ -1,249 +0,0 @@
1
- import { StorageService } from "./storage.js";
2
- const API_CALL_HISTORY_PREFIX = "api-call-history";
3
- const CHUNK_INTERVAL_MS = 60_000;
4
- const CHUNK_MAX_BYTES = 1024 * 1024;
5
- const FLUSH_INTERVAL_MS = 5_000;
6
- export class ApiCallHistoryStore {
7
- storage = new StorageService();
8
- activeChunks = new Map();
9
- flushTimer = setInterval(() => {
10
- void this.flushExpiredChunks();
11
- }, FLUSH_INTERVAL_MS);
12
- constructor() {
13
- this.flushTimer.unref();
14
- }
15
- addEntry(entry) {
16
- const normalized = {
17
- ...entry,
18
- createdAt: entry.createdAt ?? new Date().toISOString()
19
- };
20
- const minuteStartMs = floorToMinute(Date.parse(normalized.createdAt));
21
- const activePrefix = this.activeChunkPrefix(normalized.customerId, minuteStartMs);
22
- const current = this.findLatestChunk(activePrefix);
23
- const entryBytes = serializedEntrySize(normalized);
24
- const chunk = current && current.sizeBytes + entryBytes <= CHUNK_MAX_BYTES
25
- ? current
26
- : this.createChunk(normalized.customerId, minuteStartMs, current ? current.sequence + 1 : 0);
27
- chunk.entries.push(normalized);
28
- chunk.sizeBytes += entryBytes;
29
- chunk.dirty = true;
30
- if (chunk.sizeBytes >= CHUNK_MAX_BYTES) {
31
- void this.persistChunk(chunk, true);
32
- }
33
- }
34
- async listEntries(input) {
35
- const persisted = await this.readPersistedEntries(input);
36
- const buffered = this.readBufferedEntries(input);
37
- const merged = dedupeAndSort([...persisted, ...buffered]).reverse();
38
- const filtered = input.cursor
39
- ? merged.filter((entry) => (Date.parse(entry.createdAt) < Date.parse(input.cursor.createdAt)
40
- || (entry.createdAt === input.cursor.createdAt && entry.id < input.cursor.id)))
41
- : merged;
42
- if (input.limit === undefined) {
43
- return filtered;
44
- }
45
- const limit = Math.max(1, Math.min(input.limit, 501));
46
- return filtered.slice(0, limit);
47
- }
48
- async listStorageKeys(input) {
49
- return this.listRelevantKeys(input);
50
- }
51
- async renameTracer(input) {
52
- const fromTracer = input.fromTracer.trim();
53
- const toTracer = input.toTracer.trim();
54
- if (!fromTracer || !toTracer || fromTracer === toTracer) {
55
- return { updated: 0 };
56
- }
57
- let updated = 0;
58
- for (const chunk of this.activeChunks.values()) {
59
- if (chunk.customerId !== input.customerId) {
60
- continue;
61
- }
62
- let chunkChanged = false;
63
- for (const entry of chunk.entries) {
64
- if (entry.tracer === fromTracer && withinRange(entry.createdAt, input.startTime, input.endTime)) {
65
- entry.tracer = toTracer;
66
- updated += 1;
67
- chunkChanged = true;
68
- }
69
- }
70
- if (chunkChanged) {
71
- chunk.dirty = true;
72
- chunk.sizeBytes = chunk.entries.reduce((sum, entry) => sum + serializedEntrySize(entry), 0);
73
- await this.persistChunk(chunk, false);
74
- }
75
- }
76
- const keys = await this.listRelevantKeys(input);
77
- await Promise.all(keys.map(async (key) => {
78
- const content = await this.storage.readText(key);
79
- const entries = parseChunk(content);
80
- let changed = false;
81
- for (const entry of entries) {
82
- if (entry.customerId === input.customerId
83
- && entry.tracer === fromTracer
84
- && withinRange(entry.createdAt, input.startTime, input.endTime)) {
85
- entry.tracer = toTracer;
86
- updated += 1;
87
- changed = true;
88
- }
89
- }
90
- if (changed) {
91
- const body = `${entries.map((entry) => JSON.stringify(entry)).join("\n")}\n`;
92
- await this.storage.putText(key, body, "application/x-ndjson; charset=utf-8");
93
- }
94
- }));
95
- return { updated };
96
- }
97
- async shutdown() {
98
- clearInterval(this.flushTimer);
99
- await Promise.all([...this.activeChunks.values()].map((chunk) => this.persistChunk(chunk, true)));
100
- }
101
- async readPersistedEntries(input) {
102
- const keys = await this.listRelevantKeys(input);
103
- const entries = await Promise.all(keys.map(async (key) => parseChunk(await this.storage.readText(key))));
104
- return entries
105
- .flat()
106
- .filter((entry) => entry.customerId === input.customerId)
107
- .filter((entry) => withinRange(entry.createdAt, input.startTime, input.endTime));
108
- }
109
- readBufferedEntries(input) {
110
- const buffered = [];
111
- for (const chunk of this.activeChunks.values()) {
112
- if (chunk.customerId !== input.customerId) {
113
- continue;
114
- }
115
- for (const entry of chunk.entries.slice(chunk.lastPersistedEntryCount)) {
116
- if (withinRange(entry.createdAt, input.startTime, input.endTime)) {
117
- buffered.push(entry);
118
- }
119
- }
120
- }
121
- return buffered;
122
- }
123
- async listRelevantKeys(input) {
124
- const minuteStarts = this.minuteStartsForQuery(input.startTime, input.endTime);
125
- if (minuteStarts === null) {
126
- return this.storage.listKeys(`${API_CALL_HISTORY_PREFIX}/customer_id=${input.customerId}/`);
127
- }
128
- const nested = await Promise.all(minuteStarts.map((minuteStartMs) => (this.storage.listKeys(this.minutePrefix(input.customerId, minuteStartMs)))));
129
- return nested.flat();
130
- }
131
- minuteStartsForQuery(startTime, endTime) {
132
- if (!startTime && !endTime) {
133
- return null;
134
- }
135
- const startMs = floorToMinute(Date.parse(startTime ?? endTime ?? new Date().toISOString()));
136
- const endMs = floorToMinute(Date.parse(endTime ?? startTime ?? new Date().toISOString()));
137
- const minMs = Math.min(startMs, endMs);
138
- const maxMs = Math.max(startMs, endMs);
139
- const minuteStarts = [];
140
- for (let cursor = minMs; cursor <= maxMs; cursor += 60_000) {
141
- minuteStarts.push(cursor);
142
- }
143
- return minuteStarts;
144
- }
145
- async flushExpiredChunks() {
146
- const now = Date.now();
147
- await Promise.all([...this.activeChunks.values()].map(async (chunk) => {
148
- const intervalElapsed = now >= chunk.minuteStartMs + CHUNK_INTERVAL_MS;
149
- if (intervalElapsed || chunk.sizeBytes >= CHUNK_MAX_BYTES) {
150
- await this.persistChunk(chunk, true);
151
- return;
152
- }
153
- if (chunk.dirty) {
154
- await this.persistChunk(chunk, false);
155
- }
156
- }));
157
- }
158
- createChunk(customerId, minuteStartMs, sequence) {
159
- const chunk = {
160
- customerId,
161
- minuteStartMs,
162
- sequence,
163
- entries: [],
164
- sizeBytes: 0,
165
- lastPersistedEntryCount: 0,
166
- dirty: false
167
- };
168
- this.activeChunks.set(this.chunkKeyForMap(customerId, minuteStartMs, sequence), chunk);
169
- return chunk;
170
- }
171
- findLatestChunk(activePrefix) {
172
- const matching = [...this.activeChunks.entries()]
173
- .filter(([key]) => key.startsWith(activePrefix))
174
- .map(([, chunk]) => chunk)
175
- .sort((a, b) => a.sequence - b.sequence);
176
- return matching.at(-1) ?? null;
177
- }
178
- activeChunkPrefix(customerId, minuteStartMs) {
179
- return `${customerId}:${minuteStartMs}:`;
180
- }
181
- chunkKeyForMap(customerId, minuteStartMs, sequence) {
182
- return `${this.activeChunkPrefix(customerId, minuteStartMs)}${sequence}`;
183
- }
184
- async persistChunk(chunk, finalize) {
185
- if (!chunk.entries.length) {
186
- if (finalize) {
187
- this.activeChunks.delete(this.chunkKeyForMap(chunk.customerId, chunk.minuteStartMs, chunk.sequence));
188
- }
189
- return;
190
- }
191
- const key = this.objectKeyForChunk(chunk);
192
- const body = `${chunk.entries.map((entry) => JSON.stringify(entry)).join("\n")}\n`;
193
- await this.storage.putText(key, body, "application/x-ndjson; charset=utf-8");
194
- chunk.lastPersistedEntryCount = chunk.entries.length;
195
- chunk.dirty = false;
196
- if (finalize) {
197
- this.activeChunks.delete(this.chunkKeyForMap(chunk.customerId, chunk.minuteStartMs, chunk.sequence));
198
- }
199
- }
200
- objectKeyForChunk(chunk) {
201
- const startTs = Math.floor(chunk.entries[0] ? Date.parse(chunk.entries[0].createdAt) / 1000 : chunk.minuteStartMs / 1000);
202
- const endTs = Math.floor(chunk.entries.at(-1) ? Date.parse(chunk.entries.at(-1).createdAt) / 1000 : chunk.minuteStartMs / 1000);
203
- return `${this.minutePrefix(chunk.customerId, chunk.minuteStartMs)}chunk-${startTs}-${endTs}-${String(chunk.sequence).padStart(4, "0")}.ndjson`;
204
- }
205
- minutePrefix(customerId, minuteStartMs) {
206
- return `${API_CALL_HISTORY_PREFIX}/customer_id=${customerId}/minute=${Math.floor(minuteStartMs / 1000)}/`;
207
- }
208
- }
209
- export const apiCallHistoryStore = new ApiCallHistoryStore();
210
- function serializedEntrySize(entry) {
211
- return Buffer.byteLength(`${JSON.stringify(entry)}\n`, "utf8");
212
- }
213
- function floorToMinute(timestampMs) {
214
- return Math.floor(timestampMs / 60_000) * 60_000;
215
- }
216
- function parseChunk(content) {
217
- if (!content) {
218
- return [];
219
- }
220
- return content
221
- .split("\n")
222
- .map((line) => line.trim())
223
- .filter(Boolean)
224
- .map((line) => {
225
- const parsed = JSON.parse(line);
226
- return {
227
- ...parsed,
228
- jobId: typeof parsed.jobId === "string" && parsed.jobId.trim() ? parsed.jobId.trim() : null
229
- };
230
- });
231
- }
232
- function dedupeAndSort(entries) {
233
- const deduped = new Map();
234
- for (const entry of entries) {
235
- deduped.set(entry.id, entry);
236
- }
237
- return [...deduped.values()].sort((a, b) => Date.parse(a.createdAt) - Date.parse(b.createdAt));
238
- }
239
- function withinRange(createdAt, startTime, endTime) {
240
- const value = Date.parse(createdAt);
241
- if (startTime && value < Date.parse(startTime)) {
242
- return false;
243
- }
244
- if (endTime && value > Date.parse(endTime)) {
245
- return false;
246
- }
247
- return true;
248
- }
249
- //# sourceMappingURL=api-call-history.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api-call-history.js","sourceRoot":"","sources":["../../../src/services/api-call-history.ts"],"names":[],"mappings":"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"}