@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.
- package/README.md +11 -4
- package/SKILL.director.md +100 -0
- package/SKILL.platform.md +66 -6
- package/dist/src/cli.js +135 -1527
- package/package.json +5 -24
- package/.env.example +0 -60
- package/auto-create-hyperframe-templates/AUTO_CREATE_HYPERFRAME_TEMPLATES.md +0 -275
- package/auto-create-hyperframe-templates/extractor-system-prompt.md +0 -128
- package/auto-create-hyperframe-templates/input-manifest.schema.json +0 -56
- package/auto-create-hyperframe-templates/lambda-memory-estimator.md +0 -118
- package/auto-create-hyperframe-templates/production-graph.schema.json +0 -314
- package/auto-create-hyperframe-templates/runbook.md +0 -198
- package/auto-create-hyperframe-templates/scripts/create-hyperframe-template.mjs +0 -368
- package/auto-create-hyperframe-templates/template-plan.schema.json +0 -311
- package/auto-create-hyperframe-templates/template-planner-prompt.md +0 -144
- package/auto-create-templates/AUTO_CREATE_TEMPLATES.md +0 -599
- package/auto-create-templates/extractor-system-prompt.md +0 -119
- package/auto-create-templates/production-graph.schema.json +0 -276
- package/auto-create-templates/runbook.md +0 -140
- package/auto-create-templates/template-plan.schema.json +0 -301
- package/auto-create-templates/template-planner-prompt.md +0 -137
- package/dist/src/account-pages-legacy.js +0 -9338
- package/dist/src/account-pages-legacy.js.map +0 -1
- package/dist/src/account-pages.js +0 -52
- package/dist/src/account-pages.js.map +0 -1
- package/dist/src/app.js +0 -13711
- package/dist/src/app.js.map +0 -1
- package/dist/src/cli.js.map +0 -1
- package/dist/src/composition-runtime.js +0 -581
- package/dist/src/composition-runtime.js.map +0 -1
- package/dist/src/config.js +0 -140
- package/dist/src/config.js.map +0 -1
- package/dist/src/context.js +0 -492
- package/dist/src/context.js.map +0 -1
- package/dist/src/dev-app-legacy.js +0 -694
- package/dist/src/dev-app-legacy.js.map +0 -1
- package/dist/src/dev-app.js +0 -6
- package/dist/src/dev-app.js.map +0 -1
- package/dist/src/dev-serve.js.map +0 -1
- package/dist/src/domain.js +0 -2
- package/dist/src/domain.js.map +0 -1
- package/dist/src/editor-chat-history.js +0 -82
- package/dist/src/editor-chat-history.js.map +0 -1
- package/dist/src/editor-chat.js +0 -312
- package/dist/src/editor-chat.js.map +0 -1
- package/dist/src/editor-dark-theme.js +0 -1128
- package/dist/src/editor-dark-theme.js.map +0 -1
- package/dist/src/frontend/flockposter-cache-store.js +0 -124
- package/dist/src/frontend/flockposter-cache-store.js.map +0 -1
- package/dist/src/frontend/homepage-client.js +0 -117
- package/dist/src/frontend/homepage-client.js.map +0 -1
- package/dist/src/frontend/homepage-shared.js +0 -4
- package/dist/src/frontend/homepage-shared.js.map +0 -1
- package/dist/src/frontend/homepage-store.js +0 -28
- package/dist/src/frontend/homepage-store.js.map +0 -1
- package/dist/src/frontend/homepage-view.js +0 -260
- package/dist/src/frontend/homepage-view.js.map +0 -1
- package/dist/src/frontend/page-runtime-client.js +0 -124
- package/dist/src/frontend/page-runtime-client.js.map +0 -1
- package/dist/src/frontend/page-runtime-store.js +0 -9
- package/dist/src/frontend/page-runtime-store.js.map +0 -1
- package/dist/src/frontend/sentry.js +0 -42
- package/dist/src/frontend/sentry.js.map +0 -1
- package/dist/src/frontend/template-editor-chat.js +0 -3760
- package/dist/src/frontend/template-editor-chat.js.map +0 -1
- package/dist/src/help-page.js +0 -333
- package/dist/src/help-page.js.map +0 -1
- package/dist/src/homepage.js +0 -919
- package/dist/src/homepage.js.map +0 -1
- package/dist/src/hyperframes/composition.js +0 -180
- package/dist/src/hyperframes/composition.js.map +0 -1
- package/dist/src/index.js +0 -16
- package/dist/src/index.js.map +0 -1
- package/dist/src/instrument.js +0 -30
- package/dist/src/instrument.js.map +0 -1
- package/dist/src/lib/crypto.js +0 -45
- package/dist/src/lib/crypto.js.map +0 -1
- package/dist/src/lib/dev-log.js +0 -54
- package/dist/src/lib/dev-log.js.map +0 -1
- package/dist/src/lib/display-name.js +0 -11
- package/dist/src/lib/display-name.js.map +0 -1
- package/dist/src/lib/ids.js +0 -24
- package/dist/src/lib/ids.js.map +0 -1
- package/dist/src/lib/images.js +0 -19
- package/dist/src/lib/images.js.map +0 -1
- package/dist/src/lib/json.js +0 -15
- package/dist/src/lib/json.js.map +0 -1
- package/dist/src/lib/template-dna.js +0 -543
- package/dist/src/lib/template-dna.js.map +0 -1
- package/dist/src/lib/template-paths.js +0 -28
- package/dist/src/lib/template-paths.js.map +0 -1
- package/dist/src/lib/template-style-options.js +0 -203
- package/dist/src/lib/template-style-options.js.map +0 -1
- package/dist/src/lib/time.js +0 -7
- package/dist/src/lib/time.js.map +0 -1
- package/dist/src/lib/video-quality-harness.js +0 -60
- package/dist/src/lib/video-quality-harness.js.map +0 -1
- package/dist/src/page-runtime.js +0 -2
- package/dist/src/page-runtime.js.map +0 -1
- package/dist/src/page-shell.js +0 -1315
- package/dist/src/page-shell.js.map +0 -1
- package/dist/src/primitive-context.js +0 -299
- package/dist/src/primitive-context.js.map +0 -1
- package/dist/src/primitive-registry.js +0 -2181
- package/dist/src/primitive-registry.js.map +0 -1
- package/dist/src/primitive-sdk.js +0 -4
- package/dist/src/primitive-sdk.js.map +0 -1
- package/dist/src/primitives/remotion/html-image.js +0 -30
- package/dist/src/primitives/remotion/html-image.js.map +0 -1
- package/dist/src/primitives/remotion/media-slideshow.js +0 -60
- package/dist/src/primitives/remotion/media-slideshow.js.map +0 -1
- package/dist/src/react-page-shell.js +0 -35
- package/dist/src/react-page-shell.js.map +0 -1
- package/dist/src/ready-post-schedule-component.js +0 -1515
- package/dist/src/ready-post-schedule-component.js.map +0 -1
- package/dist/src/registry.js +0 -296
- package/dist/src/registry.js.map +0 -1
- package/dist/src/runtime.js +0 -31
- package/dist/src/runtime.js.map +0 -1
- package/dist/src/services/api-call-history.js +0 -249
- package/dist/src/services/api-call-history.js.map +0 -1
- package/dist/src/services/auth.js +0 -152
- package/dist/src/services/auth.js.map +0 -1
- package/dist/src/services/billing.js +0 -231
- package/dist/src/services/billing.js.map +0 -1
- package/dist/src/services/chat-threads.js +0 -92
- package/dist/src/services/chat-threads.js.map +0 -1
- package/dist/src/services/fork-access.js +0 -93
- package/dist/src/services/fork-access.js.map +0 -1
- package/dist/src/services/fork-manifest.js +0 -43
- package/dist/src/services/fork-manifest.js.map +0 -1
- package/dist/src/services/ghostcut.js +0 -132
- package/dist/src/services/ghostcut.js.map +0 -1
- package/dist/src/services/hyperframes.js +0 -1014
- package/dist/src/services/hyperframes.js.map +0 -1
- package/dist/src/services/job-capacity.js +0 -14
- package/dist/src/services/job-capacity.js.map +0 -1
- package/dist/src/services/job-logs.js +0 -197
- package/dist/src/services/job-logs.js.map +0 -1
- package/dist/src/services/jobs.js +0 -136
- package/dist/src/services/jobs.js.map +0 -1
- package/dist/src/services/media-processing.js +0 -743
- package/dist/src/services/media-processing.js.map +0 -1
- package/dist/src/services/primitive-media-lambda.js +0 -280
- package/dist/src/services/primitive-media-lambda.js.map +0 -1
- package/dist/src/services/providers.js +0 -2870
- package/dist/src/services/providers.js.map +0 -1
- package/dist/src/services/rate-limits.js +0 -237
- package/dist/src/services/rate-limits.js.map +0 -1
- package/dist/src/services/remotion.js +0 -688
- package/dist/src/services/remotion.js.map +0 -1
- package/dist/src/services/serverless-auth.js +0 -374
- package/dist/src/services/serverless-auth.js.map +0 -1
- package/dist/src/services/serverless-jobs.js +0 -1074
- package/dist/src/services/serverless-jobs.js.map +0 -1
- package/dist/src/services/serverless-provider-keys.js +0 -401
- package/dist/src/services/serverless-provider-keys.js.map +0 -1
- package/dist/src/services/serverless-records.js +0 -1088
- package/dist/src/services/serverless-records.js.map +0 -1
- package/dist/src/services/serverless-template-configs.js +0 -67
- package/dist/src/services/serverless-template-configs.js.map +0 -1
- package/dist/src/services/storage.js +0 -383
- package/dist/src/services/storage.js.map +0 -1
- package/dist/src/services/template-certification.js +0 -475
- package/dist/src/services/template-certification.js.map +0 -1
- package/dist/src/services/template-loader.js +0 -99
- package/dist/src/services/template-loader.js.map +0 -1
- package/dist/src/services/template-runtime-bundles.js +0 -217
- package/dist/src/services/template-runtime-bundles.js.map +0 -1
- package/dist/src/services/template-sources.js +0 -1017
- package/dist/src/services/template-sources.js.map +0 -1
- package/dist/src/services/video-normalization.js +0 -2
- package/dist/src/services/video-normalization.js.map +0 -1
- package/dist/src/services/webhooks.js +0 -62
- package/dist/src/services/webhooks.js.map +0 -1
- package/dist/src/template-editor-pages.js +0 -2491
- package/dist/src/template-editor-pages.js.map +0 -1
- package/dist/src/template-editor-shell.js +0 -2702
- package/dist/src/template-editor-shell.js.map +0 -1
- package/dist/src/template-sdk.js +0 -4
- package/dist/src/template-sdk.js.map +0 -1
- package/dist/src/worker.js +0 -17
- package/dist/src/worker.js.map +0 -1
- package/public/assets/homepage-app.js +0 -54
- package/public/assets/homepage-client-app.js +0 -80
- package/public/assets/page-runtime-client-app.js +0 -94
- package/readme.secret.md +0 -89
- package/templates/vidfarm_template_0000/README.md +0 -106
- package/templates/vidfarm_template_0000/SKILL.md +0 -266
- package/templates/vidfarm_template_0000/assets/Abel-Regular.ttf +0 -0
- package/templates/vidfarm_template_0000/assets/DMSerifDisplay-Regular.ttf +0 -0
- package/templates/vidfarm_template_0000/assets/Montserrat[wght].ttf +0 -0
- package/templates/vidfarm_template_0000/assets/SourceCodePro[wght].ttf +0 -0
- package/templates/vidfarm_template_0000/assets/TikTokSans-SemiBold.ttf +0 -0
- package/templates/vidfarm_template_0000/assets/Yesteryear-Regular.ttf +0 -0
- package/templates/vidfarm_template_0000/composition.json +0 -11
- package/templates/vidfarm_template_0000/src/lib/images.js +0 -221
- package/templates/vidfarm_template_0000/src/remotion/Root.js +0 -33
- package/templates/vidfarm_template_0000/src/remotion/index.js +0 -3
- package/templates/vidfarm_template_0000/src/sdk.js +0 -3
- package/templates/vidfarm_template_0000/src/style-options.js +0 -200
- package/templates/vidfarm_template_0000/src/template-dna.js +0 -9
- package/templates/vidfarm_template_0000/src/template.js +0 -1566
- 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"}
|
package/dist/src/registry.js
DELETED
|
@@ -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
|
package/dist/src/registry.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/registry.ts"],"names":[],"mappings":"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"}
|
package/dist/src/runtime.js
DELETED
|
@@ -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
|
package/dist/src/runtime.js.map
DELETED
|
@@ -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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"}
|