@vibes.diy/api-svc 14.3.204 → 14.3.205

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 (57) hide show
  1. package/billing.d.ts +2 -0
  2. package/billing.js +44 -10
  3. package/billing.js.map +1 -1
  4. package/evento-handler-manifest.js +0 -2
  5. package/evento-handler-manifest.js.map +1 -1
  6. package/intern/agent-assembly.d.ts +0 -1
  7. package/intern/agent-assembly.js +1 -3
  8. package/intern/agent-assembly.js.map +1 -1
  9. package/intern/agent-seed-tools.js +17 -0
  10. package/intern/agent-seed-tools.js.map +1 -1
  11. package/intern/agent-session-instruction.d.ts +2 -2
  12. package/intern/agent-session-instruction.js +3 -3
  13. package/intern/agent-session-instruction.js.map +1 -1
  14. package/intern/agent-wake.d.ts +1 -0
  15. package/intern/agent-wake.js +3 -0
  16. package/intern/agent-wake.js.map +1 -1
  17. package/intern/app-inventory.d.ts +42 -0
  18. package/intern/app-inventory.js +128 -0
  19. package/intern/app-inventory.js.map +1 -0
  20. package/intern/apply-seed.js +8 -1
  21. package/intern/apply-seed.js.map +1 -1
  22. package/intern/backend-db-callback.d.ts +1 -0
  23. package/intern/backend-db-callback.js +4 -0
  24. package/intern/backend-db-callback.js.map +1 -1
  25. package/intern/backend-github-callback.js +37 -4
  26. package/intern/backend-github-callback.js.map +1 -1
  27. package/intern/components/vibe-page.d.ts +1 -0
  28. package/intern/components/vibe-page.js +2 -1
  29. package/intern/components/vibe-page.js.map +1 -1
  30. package/intern/first-build-race.d.ts +2 -0
  31. package/intern/first-build-race.js +12 -4
  32. package/intern/first-build-race.js.map +1 -1
  33. package/intern/instruction-variant.d.ts +1 -1
  34. package/intern/instruction-variant.js +1 -2
  35. package/intern/instruction-variant.js.map +1 -1
  36. package/intern/openrouter-image.js.map +1 -1
  37. package/package.json +18 -18
  38. package/public/agent-turn-action.js +10 -7
  39. package/public/agent-turn-action.js.map +1 -1
  40. package/public/agent-turn-assembly.js +0 -5
  41. package/public/agent-turn-assembly.js.map +1 -1
  42. package/public/app-inventory-dispatch.d.ts +10 -0
  43. package/public/app-inventory-dispatch.js +38 -0
  44. package/public/app-inventory-dispatch.js.map +1 -0
  45. package/public/prompt-turn-settled.js +22 -0
  46. package/public/prompt-turn-settled.js.map +1 -1
  47. package/public/stripe-connect.js +12 -1
  48. package/public/stripe-connect.js.map +1 -1
  49. package/intern/look-restyle-pick.d.ts +0 -1
  50. package/intern/look-restyle-pick.js +0 -14
  51. package/intern/look-restyle-pick.js.map +0 -1
  52. package/intern/look-restyle.d.ts +0 -87
  53. package/intern/look-restyle.js +0 -385
  54. package/intern/look-restyle.js.map +0 -1
  55. package/public/look-restyle.d.ts +0 -14
  56. package/public/look-restyle.js +0 -153
  57. package/public/look-restyle.js.map +0 -1
@@ -1,14 +0,0 @@
1
- const pickedChats = new WeakMap();
2
- export function lookRestylePicked(scope, chatId, pickedNow) {
3
- let chats = pickedChats.get(scope);
4
- if (pickedNow) {
5
- if (chats === undefined) {
6
- chats = new Set();
7
- pickedChats.set(scope, chats);
8
- }
9
- chats.add(chatId);
10
- return true;
11
- }
12
- return chats?.has(chatId) === true;
13
- }
14
- //# sourceMappingURL=look-restyle-pick.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"look-restyle-pick.js","sourceRoot":"","sources":["../../jsr/intern/look-restyle-pick.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,GAAG,IAAI,OAAO,EAAuB,CAAC;AAevD,MAAM,UAAU,iBAAiB,CAAC,KAAa,EAAE,MAAc,EAAE,SAAkB;IACjF,IAAI,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACnC,IAAI,SAAS,EAAE,CAAC;QACd,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;YAC1B,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAChC,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;AACrC,CAAC"}
@@ -1,87 +0,0 @@
1
- import { Result } from "@adviser/cement";
2
- import { type LookRestyleLook, type LookRestyleRound, type LookRestyleShot, type LookRestyleStatus } from "@vibes.diy/api-types";
3
- import { type CurrentLook, type ResolvedLookDirection } from "@vibes.diy/prompts";
4
- import type { VibesApiSQLCtx } from "../types.js";
5
- export declare const LOOK_RENDER_MODEL = "google/gemini-2.5-flash-image";
6
- export declare const LOOK_RENDER_DEADLINE_MS = 45000;
7
- export declare const LOOK_PREP_DEADLINE_MS = 15000;
8
- export declare const LOOK_ROUND_ABANDONED_MS: number;
9
- export declare const LOOK_WAIT_POLL_MS = 1500;
10
- export declare const LOOK_ROUND_SIZE = 4;
11
- export declare const LOOK_RENDER_COST_CENTS_ESTIMATE = 4;
12
- export interface LookApp {
13
- readonly ownerHandle: string;
14
- readonly appSlug: string;
15
- }
16
- export interface LookShot extends LookRestyleShot {
17
- readonly assetUrl: string;
18
- }
19
- export declare function loadCurrentShot(vctx: VibesApiSQLCtx, app: LookApp): Promise<Result<LookShot | undefined>>;
20
- export declare function currentLookOf(vctx: VibesApiSQLCtx, app: LookApp & {
21
- readonly userId: string;
22
- }): Promise<CurrentLook>;
23
- export declare function cropTopNineSixteen(vctx: Pick<VibesApiSQLCtx, "images" | "logger">, shot: {
24
- readonly bytes: Uint8Array;
25
- readonly mime: string;
26
- }): Promise<{
27
- readonly bytes: Uint8Array;
28
- readonly mime: string;
29
- }>;
30
- export declare function renderCostCents(body: unknown): number;
31
- export interface LookRoundRow {
32
- readonly shot: LookRestyleShot;
33
- readonly userId: string;
34
- readonly roundId: string;
35
- readonly status: "running" | "ready" | "failed";
36
- readonly round: LookRestyleRound;
37
- readonly updated: string;
38
- }
39
- export declare function readLookRound(vctx: VibesApiSQLCtx, key: LookApp & {
40
- readonly shotCid: string;
41
- }): Promise<Result<LookRoundRow | undefined>>;
42
- export declare function lookRoundStatus(row: LookRoundRow, nowMs: number): LookRestyleStatus;
43
- export declare function freshLooks(directions: readonly ResolvedLookDirection[]): LookRestyleLook[];
44
- export declare function claimLookRound(vctx: VibesApiSQLCtx, args: LookApp & {
45
- readonly shot: LookRestyleShot;
46
- readonly userId: string;
47
- readonly looks: readonly LookRestyleLook[];
48
- readonly replace?: {
49
- readonly roundId: string;
50
- readonly status: LookRoundRow["status"];
51
- readonly updated: string;
52
- };
53
- }): Promise<Result<{
54
- readonly claimed: boolean;
55
- readonly row: LookRoundRow;
56
- }>>;
57
- export type LookRenderer = (vctx: VibesApiSQLCtx, args: {
58
- readonly shotDataUrl: string;
59
- readonly direction: ResolvedLookDirection;
60
- readonly signal: AbortSignal;
61
- }) => Promise<Result<{
62
- readonly bytes: Uint8Array;
63
- readonly mimeType: string;
64
- readonly costCents: number;
65
- }>>;
66
- export interface RunLookRoundArgs extends LookApp {
67
- readonly userId: string;
68
- readonly shot: LookShot;
69
- readonly round: LookRestyleRound;
70
- readonly directions: readonly ResolvedLookDirection[];
71
- readonly render?: LookRenderer;
72
- readonly renderDeadlineMs?: number;
73
- readonly prepDeadlineMs?: number;
74
- readonly crop?: (vctx: VibesApiSQLCtx, shot: {
75
- readonly bytes: Uint8Array;
76
- readonly mime: string;
77
- }) => Promise<{
78
- readonly bytes: Uint8Array;
79
- readonly mime: string;
80
- }>;
81
- }
82
- export declare function runLookRound(vctx: VibesApiSQLCtx, args: RunLookRoundArgs): Promise<LookRestyleRound>;
83
- export declare function launchLookRound(vctx: VibesApiSQLCtx, args: RunLookRoundArgs): void;
84
- export declare function runningLookRound(vctx: VibesApiSQLCtx, roundId: string): Promise<LookRestyleRound> | undefined;
85
- export declare function directionsFor(vctx: VibesApiSQLCtx, app: LookApp & {
86
- readonly userId: string;
87
- }): Promise<readonly ResolvedLookDirection[]>;
@@ -1,385 +0,0 @@
1
- import { Result, exception2Result, stream2uint8array, uint8array2stream } from "@adviser/cement";
2
- import { type } from "arktype";
3
- import { and, desc, eq } from "drizzle-orm";
4
- import { MetaItem, isFetchOkResult, lookRestyleRound, lookRestyleRoundReady, parseArrayWarning, } from "@vibes.diy/api-types";
5
- import { lazyType } from "@vibes.diy/api-types/lazy-type";
6
- import { cssToHex, generatePalette, getStylePreset, lookRestyleRenderPrompt, pickLookDirections, } from "@vibes.diy/prompts";
7
- import { costCentsFromUsage } from "../billing.js";
8
- import { ensureAppSettings } from "../public/ensure-app-settings.js";
9
- import { storeAndAuditAsset } from "../public/store-and-audit-asset.js";
10
- import { pickScreenshotRef } from "./latest-screenshot.js";
11
- import { RENDER_DEADLINE_MS, RENDER_MODEL, completeJson, parseImageReply, withDeadline } from "./openrouter-image.js";
12
- export const LOOK_RENDER_MODEL = RENDER_MODEL;
13
- export const LOOK_RENDER_DEADLINE_MS = RENDER_DEADLINE_MS;
14
- export const LOOK_PREP_DEADLINE_MS = 15_000;
15
- export const LOOK_ROUND_ABANDONED_MS = LOOK_PREP_DEADLINE_MS + LOOK_RENDER_DEADLINE_MS + 15_000;
16
- export const LOOK_WAIT_POLL_MS = 1_500;
17
- export const LOOK_ROUND_SIZE = 4;
18
- export const LOOK_RENDER_COST_CENTS_ESTIMATE = 4;
19
- function contentId(uri) {
20
- return uri.includes("://") ? uri.slice(uri.lastIndexOf("/") + 1) : uri;
21
- }
22
- const SHOT_LOOKBACK = 20;
23
- export async function loadCurrentShot(vctx, app) {
24
- const t = vctx.sql.tables.apps;
25
- const rows = await exception2Result(() => vctx.sql.db
26
- .select({ fsId: t.fsId, meta: t.meta })
27
- .from(t)
28
- .where(and(eq(t.ownerHandle, app.ownerHandle), eq(t.appSlug, app.appSlug)))
29
- .orderBy(desc(t.created), desc(t.releaseSeq))
30
- .limit(SHOT_LOOKBACK));
31
- if (rows.isErr())
32
- return Result.Err(rows.Err());
33
- for (const row of rows.Ok()) {
34
- const { filtered: meta } = parseArrayWarning(row.meta, MetaItem);
35
- const shot = pickScreenshotRef(meta);
36
- if (shot === undefined)
37
- continue;
38
- return Result.Ok({ fsId: row.fsId, cid: contentId(shot.assetUrl), mime: shot.mime, assetUrl: shot.assetUrl });
39
- }
40
- return Result.Ok(undefined);
41
- }
42
- export async function currentLookOf(vctx, app) {
43
- const r = await exception2Result(() => ensureAppSettings(vctx, { type: "vibes.diy.req-ensure-app-settings", ownerHandle: app.ownerHandle, appSlug: app.appSlug }, app.userId));
44
- if (r.isErr())
45
- return {};
46
- const s = r.Ok().settings.entry.settings;
47
- const colorway = s.colorTheme ?? s.theme;
48
- const preset = colorway === undefined ? undefined : getStylePreset(colorway);
49
- const seed = s.style?.palette ?? preset?.palette;
50
- const palette = seed === undefined ? undefined : generatePalette(seed);
51
- const page = cssToHex(palette?.light.background);
52
- const accent = cssToHex(palette?.light.primary);
53
- const font = s.style?.font ?? preset?.font;
54
- return {
55
- ...(colorway === undefined ? {} : { colorway }),
56
- ...(page === undefined ? {} : { page }),
57
- ...(accent === undefined ? {} : { accent }),
58
- ...(font === undefined ? {} : { font }),
59
- };
60
- }
61
- export async function cropTopNineSixteen(vctx, shot) {
62
- const images = vctx.images;
63
- if (images === undefined)
64
- return shot;
65
- const cropped = await exception2Result(async () => {
66
- const info = await images.info(uint8array2stream(shot.bytes));
67
- if (info.width === undefined || info.height === undefined)
68
- return undefined;
69
- const height = Math.round((info.width * 16) / 9);
70
- if (info.height <= height)
71
- return undefined;
72
- const out = await images
73
- .input(uint8array2stream(shot.bytes))
74
- .transform({ width: info.width, height, fit: "cover", gravity: "top" })
75
- .output({ format: "image/jpeg", quality: 85 });
76
- return new Uint8Array(await out.response().arrayBuffer());
77
- });
78
- if (cropped.isErr()) {
79
- vctx.logger.Warn().Err(cropped.Err()).Msg("look-restyle-crop-failed");
80
- return shot;
81
- }
82
- const bytes = cropped.Ok();
83
- return bytes === undefined ? shot : { bytes, mime: "image/jpeg" };
84
- }
85
- function bytesToBase64(bytes) {
86
- let binary = "";
87
- const chunk = 0x8000;
88
- for (let i = 0; i < bytes.length; i += chunk)
89
- binary += String.fromCharCode(...bytes.subarray(i, i + chunk));
90
- return btoa(binary);
91
- }
92
- const usageReply = lazyType(() => type({ "usage?": type({ "cost?": "number", "total_tokens?": "number" }) }));
93
- export function renderCostCents(body) {
94
- const parsed = usageReply(body);
95
- if (parsed instanceof type.errors || parsed.usage?.cost === undefined)
96
- return LOOK_RENDER_COST_CENTS_ESTIMATE;
97
- return costCentsFromUsage({ given: [parsed.usage], calculated: { total_tokens: parsed.usage.total_tokens ?? 0 } });
98
- }
99
- async function readShotBytes(vctx, assetUrl) {
100
- const fetched = await exception2Result(() => vctx.storage.fetch(assetUrl));
101
- if (fetched.isErr())
102
- return Result.Err(fetched.Err());
103
- const f = fetched.Ok();
104
- if (isFetchOkResult(f) === false)
105
- return Result.Err(`look-restyle-shot-unreadable: ${assetUrl}`);
106
- return exception2Result(() => stream2uint8array(f.data));
107
- }
108
- async function renderLookViaOpenRouter(vctx, args) {
109
- const body = await completeJson(vctx, {
110
- model: LOOK_RENDER_MODEL,
111
- stream: false,
112
- modalities: ["image", "text"],
113
- image_config: { aspect_ratio: "9:16" },
114
- messages: [
115
- {
116
- role: "user",
117
- content: [
118
- { type: "image_url", image_url: { url: args.shotDataUrl } },
119
- { type: "text", text: lookRestyleRenderPrompt(args.direction) },
120
- ],
121
- },
122
- ],
123
- }, args.signal);
124
- if (body.isErr())
125
- return Result.Err(body.Err());
126
- const image = parseImageReply(body.Ok());
127
- if (image.isErr())
128
- return Result.Err(image.Err());
129
- return Result.Ok({ ...image.Ok(), costCents: renderCostCents(body.Ok()) });
130
- }
131
- const rowStatus = lazyType(() => type("'running' | 'ready' | 'failed'"));
132
- export async function readLookRound(vctx, key) {
133
- const t = vctx.sql.tables.lookRestyleRounds;
134
- const rows = await exception2Result(() => vctx.sql.db
135
- .select()
136
- .from(t)
137
- .where(and(eq(t.ownerHandle, key.ownerHandle), eq(t.appSlug, key.appSlug), eq(t.shotCid, key.shotCid)))
138
- .limit(1));
139
- if (rows.isErr())
140
- return Result.Err(rows.Err());
141
- const row = rows.Ok()[0];
142
- if (row === undefined)
143
- return Result.Ok(undefined);
144
- const round = lookRestyleRound(row.round);
145
- if (round instanceof type.errors)
146
- return Result.Err(`look-restyle-round-contract: ${round.summary}`);
147
- const status = rowStatus(row.status);
148
- if (status instanceof type.errors)
149
- return Result.Err(`look-restyle-status-contract: ${status.summary}`);
150
- return Result.Ok({
151
- shot: { fsId: row.shotFsId, cid: row.shotCid, mime: row.shotMime },
152
- userId: row.userId,
153
- roundId: row.roundId,
154
- status,
155
- round,
156
- updated: row.updated,
157
- });
158
- }
159
- export function lookRoundStatus(row, nowMs) {
160
- if (row.status === "running") {
161
- const updated = Date.parse(row.updated);
162
- return Number.isFinite(updated) && nowMs - updated > LOOK_ROUND_ABANDONED_MS ? "failed" : "running";
163
- }
164
- return row.status;
165
- }
166
- export function freshLooks(directions) {
167
- return directions.map((d, index) => ({
168
- index,
169
- name: d.name,
170
- colorway: d.colorway,
171
- mode: d.mode,
172
- headingFont: d.headingFont,
173
- bodyFont: d.bodyFont,
174
- }));
175
- }
176
- export async function claimLookRound(vctx, args) {
177
- const t = vctx.sql.tables.lookRestyleRounds;
178
- const now = new Date().toISOString();
179
- const roundId = vctx.sthis.nextId(12).str;
180
- const round = { roundId, looks: [...args.looks] };
181
- const key = { ownerHandle: args.ownerHandle, appSlug: args.appSlug, shotCid: args.shot.cid };
182
- const pk = and(eq(t.ownerHandle, key.ownerHandle), eq(t.appSlug, key.appSlug), eq(t.shotCid, key.shotCid));
183
- const written = await exception2Result(() => args.replace === undefined
184
- ? vctx.sql.db
185
- .insert(t)
186
- .values({
187
- ...key,
188
- shotFsId: args.shot.fsId,
189
- shotMime: args.shot.mime,
190
- userId: args.userId,
191
- roundId,
192
- status: "running",
193
- round,
194
- created: now,
195
- updated: now,
196
- })
197
- .onConflictDoNothing()
198
- .returning({ roundId: t.roundId })
199
- : vctx.sql.db
200
- .update(t)
201
- .set({ userId: args.userId, roundId, status: "running", round, updated: now })
202
- .where(and(pk, eq(t.roundId, args.replace.roundId), eq(t.status, args.replace.status), eq(t.updated, args.replace.updated)))
203
- .returning({ roundId: t.roundId }));
204
- if (written.isErr())
205
- return Result.Err(written.Err());
206
- const claimed = written.Ok().some((w) => w.roundId === roundId);
207
- const read = await readLookRound(vctx, key);
208
- if (read.isErr())
209
- return Result.Err(read.Err());
210
- const row = read.Ok();
211
- if (row === undefined)
212
- return Result.Err(`look-restyle-round-vanished: ${key.ownerHandle}/${key.appSlug}`);
213
- return Result.Ok({ claimed: claimed && row.roundId === roundId, row });
214
- }
215
- async function writeLookRound(vctx, args) {
216
- const t = vctx.sql.tables.lookRestyleRounds;
217
- const r = await exception2Result(() => vctx.sql.db
218
- .update(t)
219
- .set({ round: args.round, status: args.status, updated: new Date().toISOString() })
220
- .where(and(eq(t.ownerHandle, args.ownerHandle), eq(t.appSlug, args.appSlug), eq(t.shotCid, args.shotCid), eq(t.roundId, args.round.roundId)))
221
- .returning({ roundId: t.roundId }));
222
- return r.isErr() ? Result.Err(r.Err()) : Result.Ok(r.Ok().length > 0);
223
- }
224
- async function ownsLookRound(vctx, args) {
225
- const read = await readLookRound(vctx, args);
226
- return read.isOk() && read.Ok()?.roundId === args.roundId;
227
- }
228
- function abortedBy(signal) {
229
- return new Promise((_resolve, reject) => {
230
- if (signal.aborted)
231
- reject(new Error("aborted"));
232
- signal.addEventListener("abort", () => reject(new Error("aborted")), { once: true });
233
- });
234
- }
235
- export async function runLookRound(vctx, args) {
236
- const log = vctx.logger
237
- .With()
238
- .Str("ownerHandle", args.ownerHandle)
239
- .Str("appSlug", args.appSlug)
240
- .Str("roundId", args.round.roundId)
241
- .Logger();
242
- const render = args.render ?? renderLookViaOpenRouter;
243
- const looks = args.round.looks.map((l) => ({ ...l }));
244
- function snapshot() {
245
- return { roundId: args.round.roundId, looks: looks.map((l) => ({ ...l })) };
246
- }
247
- let writes = Promise.resolve(true);
248
- function persist(status) {
249
- const round = snapshot();
250
- writes = writes.then(async () => {
251
- const r = await writeLookRound(vctx, { ...args, shotCid: args.shot.cid, round, status });
252
- if (r.isErr()) {
253
- log.Warn().Err(r.Err()).Msg("look-restyle-round-write-failed");
254
- return true;
255
- }
256
- return r.Ok();
257
- });
258
- return writes;
259
- }
260
- function failAll() {
261
- looks.forEach((l, i) => (looks[i] = { ...l, failed: true }));
262
- }
263
- const prep = await withDeadline((signal) => Promise.race([
264
- (async () => {
265
- const bytes = await readShotBytes(vctx, args.shot.assetUrl);
266
- if (bytes.isErr())
267
- return Result.Err(bytes.Err());
268
- return Result.Ok(await (args.crop ?? cropTopNineSixteen)(vctx, { bytes: bytes.Ok(), mime: args.shot.mime }));
269
- })(),
270
- abortedBy(signal),
271
- ]), args.prepDeadlineMs ?? LOOK_PREP_DEADLINE_MS);
272
- if (prep.timedOut || prep.reply.isErr()) {
273
- log
274
- .Warn()
275
- .Err(prep.timedOut ? "look-restyle-prep-timeout" : prep.reply.Err())
276
- .Msg("look-restyle-shot-unreadable");
277
- failAll();
278
- await persist("failed");
279
- return snapshot();
280
- }
281
- const sent = prep.reply.Ok();
282
- const shotDataUrl = `data:${sent.mime};base64,${bytesToBase64(sent.bytes)}`;
283
- if ((await persist("running")) === false) {
284
- log.Info().Msg("look-restyle-round-superseded");
285
- return snapshot();
286
- }
287
- const ownership = { roundId: args.round.roundId, ownerHandle: args.ownerHandle, appSlug: args.appSlug, shotCid: args.shot.cid };
288
- const delivered = [];
289
- async function paint(index) {
290
- const direction = args.directions[index];
291
- const look = looks[index];
292
- if (direction === undefined || look === undefined)
293
- return;
294
- const rendered = await withDeadline((signal) => render(vctx, { shotDataUrl, direction, signal }), args.renderDeadlineMs ?? LOOK_RENDER_DEADLINE_MS);
295
- const stored = await (async () => {
296
- if (rendered.timedOut)
297
- return Result.Err("look-restyle-render-timeout");
298
- if (rendered.reply.isErr())
299
- return Result.Err(rendered.reply.Err());
300
- const image = rendered.reply.Ok();
301
- if ((await ownsLookRound(vctx, ownership)) === false)
302
- return Result.Err("look-restyle-round-superseded");
303
- const r = await storeAndAuditAsset(vctx, {
304
- bytes: image.bytes,
305
- userId: args.userId,
306
- ownerHandle: args.ownerHandle,
307
- appSlug: args.appSlug,
308
- mimeType: image.mimeType,
309
- uploadId: vctx.sthis.nextId(16).str,
310
- origin: "generation",
311
- });
312
- if (r.isErr())
313
- return Result.Err(r.Err());
314
- delivered.push({ index, costCents: image.costCents });
315
- return Result.Ok({ uploadId: r.Ok().uploadId, cid: r.Ok().cid, mimeType: r.Ok().mimeType ?? image.mimeType });
316
- })();
317
- if (stored.isErr()) {
318
- log.Warn().Int("look", index).Err(stored.Err()).Msg("look-restyle-look-failed");
319
- looks[index] = { ...look, failed: true };
320
- }
321
- else {
322
- looks[index] = { ...look, ...stored.Ok() };
323
- }
324
- await persist("running");
325
- }
326
- await Promise.all(looks.map((_, i) => paint(i)));
327
- const settled = snapshot();
328
- const ready = lookRestyleRoundReady(settled);
329
- await writes;
330
- const settledWrite = await writeLookRound(vctx, {
331
- ...args,
332
- shotCid: args.shot.cid,
333
- round: settled,
334
- status: ready ? "ready" : "failed",
335
- });
336
- if (settledWrite.isErr())
337
- log.Warn().Err(settledWrite.Err()).Msg("look-restyle-round-write-failed");
338
- const owned = settledWrite.isOk() && settledWrite.Ok();
339
- if (ready && owned) {
340
- for (const d of delivered) {
341
- const tracked = await vctx.billing.trackUsage({
342
- userId: args.userId,
343
- costCents: d.costCents,
344
- promptId: `look-restyle:${args.round.roundId}:${d.index}`,
345
- model: LOOK_RENDER_MODEL,
346
- mode: "image",
347
- });
348
- if (tracked.isErr())
349
- log.Warn().Err(tracked.Err()).Int("look", d.index).Msg("look-restyle-billing-track-failed");
350
- }
351
- }
352
- log
353
- .Info()
354
- .Any("event", { looks: settled.looks.filter((l) => l.failed !== true).length })
355
- .Msg("look-restyle-round-settled");
356
- return settled;
357
- }
358
- const runningRounds = new WeakMap();
359
- export function launchLookRound(vctx, args) {
360
- let mine = runningRounds.get(vctx.connections);
361
- if (mine === undefined) {
362
- mine = new Map();
363
- runningRounds.set(vctx.connections, mine);
364
- }
365
- const rounds = mine;
366
- const running = Promise.resolve()
367
- .then(() => runLookRound(vctx, args))
368
- .catch((e) => {
369
- vctx.logger.Warn().Err(e).Str("roundId", args.round.roundId).Msg("look-restyle-round-crashed");
370
- return args.round;
371
- })
372
- .finally(() => {
373
- rounds.delete(args.round.roundId);
374
- });
375
- rounds.set(args.round.roundId, running);
376
- if (vctx.waitUntil !== undefined)
377
- vctx.waitUntil(running);
378
- }
379
- export function runningLookRound(vctx, roundId) {
380
- return runningRounds.get(vctx.connections)?.get(roundId);
381
- }
382
- export async function directionsFor(vctx, app) {
383
- return pickLookDirections(await currentLookOf(vctx, app), LOOK_ROUND_SIZE);
384
- }
385
- //# sourceMappingURL=look-restyle.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"look-restyle.js","sourceRoot":"","sources":["../../jsr/intern/look-restyle.ts"],"names":[],"mappings":"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"}
@@ -1,14 +0,0 @@
1
- import { EventoHandler } from "@adviser/cement";
2
- import { MsgBase, ReqLookRestyle, ReqWithVerifiedAuth, ResError, ResLookRestyle, VibesDiyError, W3CWebSocketEvent } from "@vibes.diy/api-types";
3
- import { VibesApiSQLCtx } from "../types.js";
4
- import { type LookRenderer, type RunLookRoundArgs } from "../intern/look-restyle.js";
5
- export interface LookRestyleSeams {
6
- readonly render?: LookRenderer;
7
- readonly renderDeadlineMs?: number;
8
- readonly prepDeadlineMs?: number;
9
- readonly crop?: RunLookRoundArgs["crop"];
10
- readonly pollMs?: number;
11
- readonly nowMs?: () => number;
12
- }
13
- export declare function lookRestyle(vctx: VibesApiSQLCtx, req: ReqWithVerifiedAuth<ReqLookRestyle>, seams?: LookRestyleSeams): Promise<ResLookRestyle | ResError>;
14
- export declare const lookRestyleEvento: EventoHandler<W3CWebSocketEvent, MsgBase<ReqLookRestyle>, ResLookRestyle | VibesDiyError>;