@mevdragon/vidfarm-devcli 0.20.6 → 0.20.9
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/.agents/skills/editor-capabilities/SKILL.md +15 -1
- package/.agents/skills/vidfarm-director/SKILL.md +106 -0
- package/.agents/skills/vidfarm-director/recipes/find-and-fork-template.md +16 -0
- package/.agents/skills/vidfarm-director/recipes/local-edit-render-approve.md +13 -0
- package/.agents/skills/vidfarm-director/recipes/onboard-a-new-director.md +13 -0
- package/.agents/skills/vidfarm-director/recipes/retheme-template.md +17 -0
- package/.agents/skills/vidfarm-director/references/assets-and-sourcing.md +117 -0
- package/.agents/skills/vidfarm-director/references/automation-and-local-dev.md +245 -0
- package/.agents/skills/vidfarm-director/references/core-workflows.md +273 -0
- package/.agents/skills/vidfarm-director/references/editor-workflows.md +365 -0
- package/.agents/skills/vidfarm-director/references/onboarding.md +28 -0
- package/.agents/skills/vidfarm-director/references/primitives.md +308 -0
- package/SKILL.director.md +517 -250
- package/dist/src/cli.js +563 -99
- package/dist/src/devcli/clips.js +29 -12
- package/dist/src/devcli/doctor.js +2 -2
- package/dist/src/devcli/local-backend.js +46 -2
- package/dist/src/services/clip-curation/cost.js +5 -1
- package/dist/src/services/clip-curation/gemini.js +14 -2
- package/dist/src/services/clip-curation/hunt.js +56 -0
- package/dist/src/services/clip-curation/index.js +1 -1
- package/dist/src/services/clip-curation/scan.js +5 -3
- package/package.json +30 -10
- package/SKILL.platform.md +0 -432
- package/demo/README.md +0 -28
- package/demo/dist/app.css +0 -1
- package/demo/dist/app.js +0 -1850
- package/demo/dist/chunks/chunk-DXB73IDG.js +0 -1
- package/demo/dist/chunks/chunk-S7OWAJDS.js +0 -36
- package/demo/dist/chunks/chunk-VTIBZ6AN.js +0 -1
- package/demo/dist/chunks/dist-ADSJKBVE.js +0 -332
- package/demo/dist/chunks/domEditingLayers-VZMLL4AP-SGHWPND4.js +0 -1
- package/demo/dist/chunks/hyperframes-player-XB65TCD6.js +0 -425
- package/demo/dist/chunks/lib-XAQ37YOE.js +0 -1
- package/demo/dist/chunks/src-TJ2QYA4U.js +0 -207
- package/demo/dist/favicon.ico +0 -0
- package/demo/dist/icons/timeline/audio.svg +0 -7
- package/demo/dist/icons/timeline/captions.svg +0 -5
- package/demo/dist/icons/timeline/composition.svg +0 -12
- package/demo/dist/icons/timeline/image.svg +0 -18
- package/demo/dist/icons/timeline/music.svg +0 -10
- package/demo/dist/icons/timeline/text.svg +0 -3
- package/demo/dist/index.html +0 -15
- package/dist/src/account-pages-legacy.js +0 -9396
- package/dist/src/account-pages.js +0 -61
- package/dist/src/app.js +0 -21603
- package/dist/src/composition-runtime.js +0 -1053
- package/dist/src/config.js +0 -217
- package/dist/src/context.js +0 -447
- package/dist/src/dev-app-legacy.js +0 -739
- package/dist/src/dev-app.js +0 -6
- package/dist/src/devcli/migrate-local.js +0 -140
- package/dist/src/devcli/sync.js +0 -368
- package/dist/src/domain.js +0 -5
- package/dist/src/editor-chat-history.js +0 -82
- package/dist/src/editor-chat.js +0 -828
- package/dist/src/editor-dark-theme.js +0 -1128
- package/dist/src/frontend/debug.js +0 -71
- package/dist/src/frontend/discover-client.js +0 -130
- package/dist/src/frontend/discover-store.js +0 -23
- package/dist/src/frontend/file-directory.js +0 -1018
- package/dist/src/frontend/flockposter-cache-store.js +0 -124
- package/dist/src/frontend/homepage-client.js +0 -446
- package/dist/src/frontend/homepage-shared.js +0 -201
- package/dist/src/frontend/homepage-store.js +0 -66
- package/dist/src/frontend/homepage-view.js +0 -705
- package/dist/src/frontend/page-runtime-client.js +0 -132
- package/dist/src/frontend/page-runtime-store.js +0 -9
- package/dist/src/frontend/sentry.js +0 -42
- package/dist/src/frontend/template-editor-chat.js +0 -4181
- package/dist/src/help-page.js +0 -346
- package/dist/src/homepage.js +0 -1458
- package/dist/src/index.js +0 -16
- package/dist/src/instrument.js +0 -30
- package/dist/src/landing-page.js +0 -384
- package/dist/src/page-runtime.js +0 -2
- package/dist/src/page-shell.js +0 -1452
- package/dist/src/primitive-context.js +0 -416
- package/dist/src/primitive-registry.js +0 -3940
- package/dist/src/primitive-sdk.js +0 -4
- package/dist/src/primitives/hyperframes-media.js +0 -108
- package/dist/src/react-page-shell.js +0 -35
- package/dist/src/ready-post-schedule-component.js +0 -1540
- package/dist/src/registry.js +0 -296
- package/dist/src/reskin/agency-page.js +0 -299
- package/dist/src/reskin/calendar-page.js +0 -568
- package/dist/src/reskin/chat-page.js +0 -942
- package/dist/src/reskin/discover-page.js +0 -1788
- package/dist/src/reskin/document.js +0 -1587
- package/dist/src/reskin/help-page.js +0 -357
- package/dist/src/reskin/index-page.js +0 -62
- package/dist/src/reskin/inpaint-clipper-page.js +0 -890
- package/dist/src/reskin/inpaint-page.js +0 -2554
- package/dist/src/reskin/inpaint-video-page.js +0 -1339
- package/dist/src/reskin/job-runs-page.js +0 -477
- package/dist/src/reskin/library-page.js +0 -1634
- package/dist/src/reskin/login-page.js +0 -262
- package/dist/src/reskin/portfolio-page.js +0 -687
- package/dist/src/reskin/pricing-page.js +0 -390
- package/dist/src/reskin/settings-page.js +0 -732
- package/dist/src/reskin/theme.js +0 -711
- package/dist/src/runtime.js +0 -35
- package/dist/src/services/api-call-history.js +0 -249
- package/dist/src/services/auth.js +0 -152
- package/dist/src/services/billing-pricing.js +0 -39
- package/dist/src/services/billing.js +0 -241
- package/dist/src/services/cast.js +0 -127
- package/dist/src/services/chat-threads.js +0 -92
- package/dist/src/services/clip-records.js +0 -250
- package/dist/src/services/clip-search.js +0 -77
- package/dist/src/services/clip-vectors.js +0 -125
- package/dist/src/services/composition-sanitize.js +0 -124
- package/dist/src/services/composition-watch.js +0 -79
- package/dist/src/services/elevenlabs.js +0 -222
- package/dist/src/services/file-directory.js +0 -117
- package/dist/src/services/fork-access.js +0 -93
- package/dist/src/services/fork-manifest.js +0 -42
- package/dist/src/services/ghostcut.js +0 -179
- package/dist/src/services/hyperframes.js +0 -3654
- package/dist/src/services/job-capacity.js +0 -14
- package/dist/src/services/job-logs.js +0 -197
- package/dist/src/services/jobs.js +0 -136
- package/dist/src/services/local-dynamo.js +0 -0
- package/dist/src/services/media-processing.js +0 -766
- package/dist/src/services/primitive-media-lambda.js +0 -280
- package/dist/src/services/providers.js +0 -2748
- package/dist/src/services/rate-limits.js +0 -262
- package/dist/src/services/scene-annotations.js +0 -32
- package/dist/src/services/serverless-auth.js +0 -382
- package/dist/src/services/serverless-jobs.js +0 -1084
- package/dist/src/services/serverless-provider-keys.js +0 -409
- package/dist/src/services/serverless-records.js +0 -1515
- package/dist/src/services/serverless-template-configs.js +0 -75
- package/dist/src/services/storage.js +0 -461
- package/dist/src/services/swipe-customize.js +0 -437
- package/dist/src/services/template-certification.js +0 -413
- package/dist/src/services/template-loader.js +0 -99
- package/dist/src/services/template-runtime-bundles.js +0 -217
- package/dist/src/services/template-sources.js +0 -1017
- package/dist/src/services/upstream.js +0 -248
- package/dist/src/services/video-normalization.js +0 -2
- package/dist/src/services/webhooks.js +0 -62
- package/dist/src/template-editor-pages.js +0 -2576
- package/dist/src/template-editor-shell.js +0 -2893
- package/dist/src/template-sdk.js +0 -4
- package/dist/src/worker.js +0 -17
- package/public/assets/discover-client-app.js +0 -1
- package/public/assets/file-directory-app.js +0 -3
- 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/public/assets/placeholders/scene-placeholder.png +0 -0
- package/src/assets/SELLING_AWARENESS_STAGES.md +0 -579
- package/src/assets/SELLING_WITH_HOOKS.md +0 -377
- package/src/assets/SELLING_WITH_VSLS.md +0 -606
- package/src/assets/favicon.ico +0 -0
- package/src/assets/logo-vidfarm.png +0 -0
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export class ActiveJobLimitExceededError extends Error {
|
|
2
|
-
limit;
|
|
3
|
-
activeCount;
|
|
4
|
-
pendingStatuses;
|
|
5
|
-
retryAfterSeconds;
|
|
6
|
-
constructor(message, limit, activeCount, pendingStatuses, retryAfterSeconds) {
|
|
7
|
-
super(message);
|
|
8
|
-
this.limit = limit;
|
|
9
|
-
this.activeCount = activeCount;
|
|
10
|
-
this.pendingStatuses = pendingStatuses;
|
|
11
|
-
this.retryAfterSeconds = retryAfterSeconds;
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
//# sourceMappingURL=job-capacity.js.map
|
|
@@ -1,197 +0,0 @@
|
|
|
1
|
-
import { StorageService } from "./storage.js";
|
|
2
|
-
const JOB_LOG_PREFIX = "job-logs";
|
|
3
|
-
const JOB_LOG_CHUNK_INTERVAL_MS = 60_000;
|
|
4
|
-
const JOB_LOG_CHUNK_MAX_BYTES = 1024 * 1024;
|
|
5
|
-
const JOB_LOG_FLUSH_INTERVAL_MS = 5_000;
|
|
6
|
-
export class JobLogStore {
|
|
7
|
-
storage = new StorageService();
|
|
8
|
-
activeChunks = new Map();
|
|
9
|
-
flushTimer = setInterval(() => {
|
|
10
|
-
void this.flushExpiredChunks();
|
|
11
|
-
}, JOB_LOG_FLUSH_INTERVAL_MS);
|
|
12
|
-
constructor() {
|
|
13
|
-
this.flushTimer.unref();
|
|
14
|
-
}
|
|
15
|
-
addEvent(event) {
|
|
16
|
-
const normalized = {
|
|
17
|
-
...event,
|
|
18
|
-
createdAt: event.createdAt ?? new Date().toISOString()
|
|
19
|
-
};
|
|
20
|
-
const minuteStartMs = floorToMinute(Date.parse(normalized.createdAt));
|
|
21
|
-
const activePrefix = this.activeChunkPrefix(normalized.jobId, minuteStartMs);
|
|
22
|
-
const current = this.findLatestChunk(activePrefix);
|
|
23
|
-
const eventBytes = serializedEventSize(normalized);
|
|
24
|
-
const chunk = current && current.sizeBytes + eventBytes <= JOB_LOG_CHUNK_MAX_BYTES
|
|
25
|
-
? current
|
|
26
|
-
: this.createChunk(normalized.jobId, minuteStartMs, current ? current.sequence + 1 : 0);
|
|
27
|
-
chunk.events.push(normalized);
|
|
28
|
-
chunk.sizeBytes += eventBytes;
|
|
29
|
-
chunk.dirty = true;
|
|
30
|
-
if (chunk.sizeBytes >= JOB_LOG_CHUNK_MAX_BYTES) {
|
|
31
|
-
void this.persistChunk(chunk, true);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
async listEvents(input) {
|
|
35
|
-
const persisted = await this.readPersistedEvents(input);
|
|
36
|
-
const buffered = this.readBufferedEvents(input);
|
|
37
|
-
const merged = dedupeAndSort([...persisted, ...buffered]).reverse();
|
|
38
|
-
const filtered = input.cursor
|
|
39
|
-
? merged.filter((event) => (Date.parse(event.createdAt) < Date.parse(input.cursor.createdAt)
|
|
40
|
-
|| (event.createdAt === input.cursor.createdAt && event.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 shutdown() {
|
|
52
|
-
clearInterval(this.flushTimer);
|
|
53
|
-
await Promise.all([...this.activeChunks.values()].map((chunk) => this.persistChunk(chunk, true)));
|
|
54
|
-
}
|
|
55
|
-
async readPersistedEvents(input) {
|
|
56
|
-
const keys = await this.listRelevantKeys(input);
|
|
57
|
-
const events = await Promise.all(keys.map(async (key) => parseChunk(await this.storage.readText(key))));
|
|
58
|
-
return events
|
|
59
|
-
.flat()
|
|
60
|
-
.filter((event) => event.jobId === input.jobId)
|
|
61
|
-
.filter((event) => withinRange(event.createdAt, input.startTime, input.endTime));
|
|
62
|
-
}
|
|
63
|
-
readBufferedEvents(input) {
|
|
64
|
-
const buffered = [];
|
|
65
|
-
for (const chunk of this.activeChunks.values()) {
|
|
66
|
-
if (chunk.jobId !== input.jobId) {
|
|
67
|
-
continue;
|
|
68
|
-
}
|
|
69
|
-
for (const event of chunk.events.slice(chunk.lastPersistedEventCount)) {
|
|
70
|
-
if (withinRange(event.createdAt, input.startTime, input.endTime)) {
|
|
71
|
-
buffered.push(event);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
return buffered;
|
|
76
|
-
}
|
|
77
|
-
async listRelevantKeys(input) {
|
|
78
|
-
const minuteStarts = this.minuteStartsForQuery(input.startTime, input.endTime);
|
|
79
|
-
if (minuteStarts === null) {
|
|
80
|
-
return this.storage.listKeys(`${JOB_LOG_PREFIX}/job_id=${input.jobId}/`);
|
|
81
|
-
}
|
|
82
|
-
const nested = await Promise.all(minuteStarts.map((minuteStartMs) => (this.storage.listKeys(this.minutePrefix(input.jobId, minuteStartMs)))));
|
|
83
|
-
return nested.flat();
|
|
84
|
-
}
|
|
85
|
-
minuteStartsForQuery(startTime, endTime) {
|
|
86
|
-
if (!startTime && !endTime) {
|
|
87
|
-
return null;
|
|
88
|
-
}
|
|
89
|
-
const startMs = floorToMinute(Date.parse(startTime ?? endTime ?? new Date().toISOString()));
|
|
90
|
-
const endMs = floorToMinute(Date.parse(endTime ?? startTime ?? new Date().toISOString()));
|
|
91
|
-
const minMs = Math.min(startMs, endMs);
|
|
92
|
-
const maxMs = Math.max(startMs, endMs);
|
|
93
|
-
const minuteStarts = [];
|
|
94
|
-
for (let cursor = minMs; cursor <= maxMs; cursor += 60_000) {
|
|
95
|
-
minuteStarts.push(cursor);
|
|
96
|
-
}
|
|
97
|
-
return minuteStarts;
|
|
98
|
-
}
|
|
99
|
-
async flushExpiredChunks() {
|
|
100
|
-
const now = Date.now();
|
|
101
|
-
await Promise.all([...this.activeChunks.values()].map(async (chunk) => {
|
|
102
|
-
const intervalElapsed = now >= chunk.minuteStartMs + JOB_LOG_CHUNK_INTERVAL_MS;
|
|
103
|
-
if (intervalElapsed || chunk.sizeBytes >= JOB_LOG_CHUNK_MAX_BYTES) {
|
|
104
|
-
await this.persistChunk(chunk, true);
|
|
105
|
-
return;
|
|
106
|
-
}
|
|
107
|
-
if (chunk.dirty) {
|
|
108
|
-
await this.persistChunk(chunk, false);
|
|
109
|
-
}
|
|
110
|
-
}));
|
|
111
|
-
}
|
|
112
|
-
createChunk(jobId, minuteStartMs, sequence) {
|
|
113
|
-
const chunk = {
|
|
114
|
-
jobId,
|
|
115
|
-
minuteStartMs,
|
|
116
|
-
sequence,
|
|
117
|
-
events: [],
|
|
118
|
-
sizeBytes: 0,
|
|
119
|
-
lastPersistedEventCount: 0,
|
|
120
|
-
dirty: false
|
|
121
|
-
};
|
|
122
|
-
this.activeChunks.set(this.chunkKeyForMap(jobId, minuteStartMs, sequence), chunk);
|
|
123
|
-
return chunk;
|
|
124
|
-
}
|
|
125
|
-
findLatestChunk(activePrefix) {
|
|
126
|
-
const matching = [...this.activeChunks.entries()]
|
|
127
|
-
.filter(([key]) => key.startsWith(activePrefix))
|
|
128
|
-
.map(([, chunk]) => chunk)
|
|
129
|
-
.sort((a, b) => a.sequence - b.sequence);
|
|
130
|
-
return matching.at(-1) ?? null;
|
|
131
|
-
}
|
|
132
|
-
activeChunkPrefix(jobId, minuteStartMs) {
|
|
133
|
-
return `${jobId}:${minuteStartMs}:`;
|
|
134
|
-
}
|
|
135
|
-
chunkKeyForMap(jobId, minuteStartMs, sequence) {
|
|
136
|
-
return `${this.activeChunkPrefix(jobId, minuteStartMs)}${sequence}`;
|
|
137
|
-
}
|
|
138
|
-
async persistChunk(chunk, finalize) {
|
|
139
|
-
if (!chunk.events.length) {
|
|
140
|
-
if (finalize) {
|
|
141
|
-
this.activeChunks.delete(this.chunkKeyForMap(chunk.jobId, chunk.minuteStartMs, chunk.sequence));
|
|
142
|
-
}
|
|
143
|
-
return;
|
|
144
|
-
}
|
|
145
|
-
const key = this.objectKeyForChunk(chunk);
|
|
146
|
-
const body = `${chunk.events.map((event) => JSON.stringify(event)).join("\n")}\n`;
|
|
147
|
-
await this.storage.putText(key, body, "application/x-ndjson; charset=utf-8");
|
|
148
|
-
chunk.lastPersistedEventCount = chunk.events.length;
|
|
149
|
-
chunk.dirty = false;
|
|
150
|
-
if (finalize) {
|
|
151
|
-
this.activeChunks.delete(this.chunkKeyForMap(chunk.jobId, chunk.minuteStartMs, chunk.sequence));
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
objectKeyForChunk(chunk) {
|
|
155
|
-
const startTs = Math.floor(chunk.events[0] ? Date.parse(chunk.events[0].createdAt) / 1000 : chunk.minuteStartMs / 1000);
|
|
156
|
-
const endTs = Math.floor(chunk.events.at(-1) ? Date.parse(chunk.events.at(-1).createdAt) / 1000 : chunk.minuteStartMs / 1000);
|
|
157
|
-
return `${this.minutePrefix(chunk.jobId, chunk.minuteStartMs)}chunk-${startTs}-${endTs}-${String(chunk.sequence).padStart(4, "0")}.ndjson`;
|
|
158
|
-
}
|
|
159
|
-
minutePrefix(jobId, minuteStartMs) {
|
|
160
|
-
return `${JOB_LOG_PREFIX}/job_id=${jobId}/minute=${Math.floor(minuteStartMs / 1000)}/`;
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
export const jobLogStore = new JobLogStore();
|
|
164
|
-
function serializedEventSize(event) {
|
|
165
|
-
return Buffer.byteLength(`${JSON.stringify(event)}\n`, "utf8");
|
|
166
|
-
}
|
|
167
|
-
function floorToMinute(timestampMs) {
|
|
168
|
-
return Math.floor(timestampMs / 60_000) * 60_000;
|
|
169
|
-
}
|
|
170
|
-
function parseChunk(content) {
|
|
171
|
-
if (!content) {
|
|
172
|
-
return [];
|
|
173
|
-
}
|
|
174
|
-
return content
|
|
175
|
-
.split("\n")
|
|
176
|
-
.map((line) => line.trim())
|
|
177
|
-
.filter(Boolean)
|
|
178
|
-
.map((line) => JSON.parse(line));
|
|
179
|
-
}
|
|
180
|
-
function dedupeAndSort(events) {
|
|
181
|
-
const deduped = new Map();
|
|
182
|
-
for (const event of events) {
|
|
183
|
-
deduped.set(event.id, event);
|
|
184
|
-
}
|
|
185
|
-
return [...deduped.values()].sort((a, b) => Date.parse(a.createdAt) - Date.parse(b.createdAt));
|
|
186
|
-
}
|
|
187
|
-
function withinRange(createdAt, startTime, endTime) {
|
|
188
|
-
const value = Date.parse(createdAt);
|
|
189
|
-
if (startTime && value < Date.parse(startTime)) {
|
|
190
|
-
return false;
|
|
191
|
-
}
|
|
192
|
-
if (endTime && value > Date.parse(endTime)) {
|
|
193
|
-
return false;
|
|
194
|
-
}
|
|
195
|
-
return true;
|
|
196
|
-
}
|
|
197
|
-
//# sourceMappingURL=job-logs.js.map
|
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
import * as Sentry from "@sentry/node";
|
|
2
|
-
import { addSeconds, nowIso } from "../lib/time.js";
|
|
3
|
-
export { ActiveJobLimitExceededError } from "./job-capacity.js";
|
|
4
|
-
import { ServerlessJobsService } from "./serverless-jobs.js";
|
|
5
|
-
export class JobsService {
|
|
6
|
-
serverless = new ServerlessJobsService();
|
|
7
|
-
async createRootJob(input) {
|
|
8
|
-
return this.serverless.createRootJob(input);
|
|
9
|
-
}
|
|
10
|
-
getRootQueueCapacityStatus(customer) {
|
|
11
|
-
return this.serverless.getRootQueueCapacityStatus(customer);
|
|
12
|
-
}
|
|
13
|
-
sweepStaleActiveJobs(input = {}) {
|
|
14
|
-
return this.serverless.sweepStaleActiveJobs(input);
|
|
15
|
-
}
|
|
16
|
-
async enqueueChildJob(input) {
|
|
17
|
-
return this.serverless.createChildJob(input);
|
|
18
|
-
}
|
|
19
|
-
getJob(jobId) {
|
|
20
|
-
void jobId;
|
|
21
|
-
throw new Error(`Synchronous job lookup is unavailable in the DynamoDB runtime. Use getJobAsync(${jobId}).`);
|
|
22
|
-
}
|
|
23
|
-
async getJobAsync(jobId) {
|
|
24
|
-
return this.serverless.getJob(jobId);
|
|
25
|
-
}
|
|
26
|
-
listJobs(input) {
|
|
27
|
-
void input;
|
|
28
|
-
throw new Error("Synchronous job listing is unavailable in the DynamoDB runtime. Use listJobsAsync().");
|
|
29
|
-
}
|
|
30
|
-
async listJobsAsync(input) {
|
|
31
|
-
return this.serverless.listJobs(input);
|
|
32
|
-
}
|
|
33
|
-
renameTracer(input) {
|
|
34
|
-
void input;
|
|
35
|
-
throw new Error("Renaming job tracers is not implemented in the serverless DynamoDB runtime.");
|
|
36
|
-
}
|
|
37
|
-
async listChildJobs(parentJobId) {
|
|
38
|
-
return this.serverless.listChildJobs(parentJobId);
|
|
39
|
-
}
|
|
40
|
-
async insertArtifact(record) {
|
|
41
|
-
await this.serverless.insertArtifact(record);
|
|
42
|
-
}
|
|
43
|
-
async listArtifactsForJob(input) {
|
|
44
|
-
return this.serverless.listArtifactsForJob(input);
|
|
45
|
-
}
|
|
46
|
-
async listLogs(input) {
|
|
47
|
-
return this.serverless.listLogs(input);
|
|
48
|
-
}
|
|
49
|
-
async addLogEvent(event) {
|
|
50
|
-
return this.serverless.addLogEvent(event);
|
|
51
|
-
}
|
|
52
|
-
async listLogStorageKeys(input) {
|
|
53
|
-
void input;
|
|
54
|
-
return this.serverless.listLogStorageKeys();
|
|
55
|
-
}
|
|
56
|
-
async updateJobStatus(input) {
|
|
57
|
-
await this.serverless.updateJobStatus(input);
|
|
58
|
-
}
|
|
59
|
-
cancelJob(jobId) {
|
|
60
|
-
return this.serverless.cancelJob(jobId);
|
|
61
|
-
}
|
|
62
|
-
async cancelJobAsync(jobId) {
|
|
63
|
-
await this.serverless.cancelJob(jobId);
|
|
64
|
-
}
|
|
65
|
-
markRunning(jobId) {
|
|
66
|
-
return this.serverless.updateJobStatus({ id: jobId, status: "running" });
|
|
67
|
-
}
|
|
68
|
-
failExpiredActiveJobs(input) {
|
|
69
|
-
void input;
|
|
70
|
-
throw new Error("Expiring active jobs is handled by the serverless workflow runtime.");
|
|
71
|
-
}
|
|
72
|
-
claimRunnableJob(jobId) {
|
|
73
|
-
void jobId;
|
|
74
|
-
throw new Error("Runnable job claiming is unavailable in the serverless workflow runtime.");
|
|
75
|
-
}
|
|
76
|
-
succeedJob(jobId, result, progress = 1) {
|
|
77
|
-
return this.serverless.updateJobStatus({
|
|
78
|
-
id: jobId,
|
|
79
|
-
status: "succeeded",
|
|
80
|
-
progress,
|
|
81
|
-
result,
|
|
82
|
-
error: null,
|
|
83
|
-
completedAt: nowIso()
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
failJob(jobId, error, options) {
|
|
87
|
-
void options;
|
|
88
|
-
return this.serverless.updateJobStatus({
|
|
89
|
-
id: jobId,
|
|
90
|
-
status: "failed",
|
|
91
|
-
error,
|
|
92
|
-
completedAt: nowIso()
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
requeueJob(job, delaySeconds = 30, error, options) {
|
|
96
|
-
void options;
|
|
97
|
-
return this.serverless.updateJobStatus({
|
|
98
|
-
id: job.id,
|
|
99
|
-
status: job.attemptCount >= job.maxAttempts ? "failed" : "queued",
|
|
100
|
-
error: job.attemptCount >= job.maxAttempts ? error : null,
|
|
101
|
-
runAfter: addSeconds(new Date(), delaySeconds),
|
|
102
|
-
completedAt: job.attemptCount >= job.maxAttempts ? nowIso() : null
|
|
103
|
-
});
|
|
104
|
-
}
|
|
105
|
-
captureJobFailure(job, error, options) {
|
|
106
|
-
const message = typeof error.message === "string" ? error.message : "Job failed";
|
|
107
|
-
const type = typeof error.type === "string" ? error.type : "job_failed";
|
|
108
|
-
const baseContext = {
|
|
109
|
-
job_id: job.id,
|
|
110
|
-
customer_id: job.customerId,
|
|
111
|
-
template_id: job.templateId,
|
|
112
|
-
operation_name: job.operationName,
|
|
113
|
-
workflow_name: job.workflowName,
|
|
114
|
-
tracer: job.tracer,
|
|
115
|
-
attempt_count: job.attemptCount,
|
|
116
|
-
max_attempts: job.maxAttempts,
|
|
117
|
-
provider_hint: typeof job.payload?._providerHint === "string" ? job.payload._providerHint : null,
|
|
118
|
-
error
|
|
119
|
-
};
|
|
120
|
-
Sentry.withScope((scope) => {
|
|
121
|
-
scope.setLevel("error");
|
|
122
|
-
scope.setTag("surface", "worker");
|
|
123
|
-
scope.setTag("job.failure_type", type);
|
|
124
|
-
scope.setTag("job.id", job.id);
|
|
125
|
-
scope.setTag("job.template_id", job.templateId);
|
|
126
|
-
scope.setTag("job.operation_name", job.operationName);
|
|
127
|
-
scope.setContext("job", baseContext);
|
|
128
|
-
if (options?.cause instanceof Error) {
|
|
129
|
-
Sentry.captureException(options.cause);
|
|
130
|
-
return;
|
|
131
|
-
}
|
|
132
|
-
Sentry.captureMessage(message, "error");
|
|
133
|
-
});
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
//# sourceMappingURL=jobs.js.map
|
|
Binary file
|