@vibes.diy/api-svc 14.3.115 → 14.3.117

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 (80) hide show
  1. package/analytics.d.ts +30 -0
  2. package/analytics.js +63 -0
  3. package/analytics.js.map +1 -1
  4. package/intern/admission-load.d.ts +7 -0
  5. package/intern/admission-load.js +21 -0
  6. package/intern/admission-load.js.map +1 -0
  7. package/intern/agent-assembly.d.ts +0 -1
  8. package/intern/agent-assembly.js +2 -7
  9. package/intern/agent-assembly.js.map +1 -1
  10. package/intern/agent-belt.d.ts +0 -2
  11. package/intern/agent-belt.js +0 -2
  12. package/intern/agent-belt.js.map +1 -1
  13. package/intern/agent-build-tools.d.ts +0 -2
  14. package/intern/agent-build-tools.js +0 -1
  15. package/intern/agent-build-tools.js.map +1 -1
  16. package/intern/agent-dispatcher.d.ts +1 -0
  17. package/intern/agent-dispatcher.js +21 -15
  18. package/intern/agent-dispatcher.js.map +1 -1
  19. package/intern/agent-session.d.ts +24 -24
  20. package/intern/alt-first-build.d.ts +13 -0
  21. package/intern/alt-first-build.js +61 -7
  22. package/intern/alt-first-build.js.map +1 -1
  23. package/intern/build-lost-report.d.ts +12 -0
  24. package/intern/build-lost-report.js +40 -0
  25. package/intern/build-lost-report.js.map +1 -0
  26. package/intern/build-slot-refusal.d.ts +4 -0
  27. package/intern/build-slot-refusal.js +37 -0
  28. package/intern/build-slot-refusal.js.map +1 -0
  29. package/intern/instruction-variant.d.ts +7 -0
  30. package/intern/instruction-variant.js +14 -3
  31. package/intern/instruction-variant.js.map +1 -1
  32. package/intern/look-restyle-pick.js.map +1 -1
  33. package/intern/look-restyle.js +1 -1
  34. package/intern/look-restyle.js.map +1 -1
  35. package/intern/mercury-first-build-seam.d.ts +0 -1
  36. package/intern/mercury-first-build-seam.js +0 -1
  37. package/intern/mercury-first-build-seam.js.map +1 -1
  38. package/intern/mint-fire-core.d.ts +3 -2
  39. package/intern/mint-fire-core.js +31 -3
  40. package/intern/mint-fire-core.js.map +1 -1
  41. package/intern/open-turn-sweep.d.ts +10 -0
  42. package/intern/open-turn-sweep.js +12 -1
  43. package/intern/open-turn-sweep.js.map +1 -1
  44. package/intern/openrouter-image.d.ts +18 -0
  45. package/intern/openrouter-image.js +66 -0
  46. package/intern/openrouter-image.js.map +1 -0
  47. package/intern/section-fan-out.d.ts +0 -9
  48. package/intern/section-fan-out.js +0 -26
  49. package/intern/section-fan-out.js.map +1 -1
  50. package/intern/server-first-build.d.ts +0 -1
  51. package/intern/server-first-build.js +0 -1
  52. package/intern/server-first-build.js.map +1 -1
  53. package/intern/stamped-geo-country.d.ts +5 -0
  54. package/intern/stamped-geo-country.js +21 -0
  55. package/intern/stamped-geo-country.js.map +1 -0
  56. package/package.json +13 -13
  57. package/public/agent-turn-action.d.ts +1 -0
  58. package/public/agent-turn-action.js +17 -25
  59. package/public/agent-turn-action.js.map +1 -1
  60. package/public/agent-turn-assembly.js +1 -4
  61. package/public/agent-turn-assembly.js.map +1 -1
  62. package/public/open-chat.js +8 -0
  63. package/public/open-chat.js.map +1 -1
  64. package/public/prompt-chat-section.js +3 -0
  65. package/public/prompt-chat-section.js.map +1 -1
  66. package/public/prompt-section-actions.d.ts +1 -0
  67. package/public/prompt-section-actions.js +1 -0
  68. package/public/prompt-section-actions.js.map +1 -1
  69. package/public/prompt-turn-settled.js +6 -0
  70. package/public/prompt-turn-settled.js.map +1 -1
  71. package/public/shared-mint.js +0 -1
  72. package/public/shared-mint.js.map +1 -1
  73. package/shard-gate.js +18 -0
  74. package/shard-gate.js.map +1 -1
  75. package/intern/agent-image-survey-start.d.ts +0 -38
  76. package/intern/agent-image-survey-start.js +0 -78
  77. package/intern/agent-image-survey-start.js.map +0 -1
  78. package/intern/image-survey.d.ts +0 -62
  79. package/intern/image-survey.js +0 -229
  80. package/intern/image-survey.js.map +0 -1
@@ -1,62 +0,0 @@
1
- import { Result } from "@adviser/cement";
2
- import type { EvtImageSurvey } from "@vibes.diy/api-types";
3
- import type { LLMRequest } from "@vibes.diy/call-ai-v2";
4
- import type { VibesApiSQLCtx } from "../types.js";
5
- export declare const READINGS_MODEL = "google/gemini-2.5-flash";
6
- export declare const RENDER_MODEL = "google/gemini-2.5-flash-image";
7
- export declare const READINGS_DEADLINE_MS = 20000;
8
- export declare const RENDER_DEADLINE_MS = 45000;
9
- export declare function drawSurveyColorway(rnd: () => number, theme?: string): {
10
- theme: string;
11
- colorway: string;
12
- };
13
- export interface SurveyColours {
14
- readonly page: string;
15
- readonly card: string;
16
- readonly ink: string;
17
- readonly accent: string;
18
- readonly inkOnAccent: string;
19
- }
20
- export declare function surveyColours(pick: {
21
- readonly theme: string;
22
- readonly colorway: string;
23
- }): SurveyColours;
24
- export declare function readingsPrompt(sentence: string, colours: SurveyColours): string;
25
- export interface SurveyReading {
26
- readonly label: string;
27
- readonly pitch: string;
28
- readonly screen: string;
29
- }
30
- export declare function renderPrompt(reading: SurveyReading, colours: SurveyColours): string;
31
- export declare function parseReadings(json: unknown): Result<readonly SurveyReading[]>;
32
- export declare function parseImageReply(json: unknown): Result<{
33
- readonly bytes: Uint8Array;
34
- readonly mimeType: string;
35
- }>;
36
- export type Deadlined<T> = {
37
- readonly timedOut: true;
38
- } | {
39
- readonly timedOut: false;
40
- readonly reply: Result<T>;
41
- };
42
- export declare function withDeadline<T>(call: (signal: AbortSignal) => Promise<Result<T>>, timeoutMs: number, outer?: AbortSignal): Promise<Deadlined<T>>;
43
- export type SurveyCtx = Pick<VibesApiSQLCtx, "llmRequest" | "params">;
44
- export declare function completeJson(vctx: SurveyCtx, req: LLMRequest, signal: AbortSignal): Promise<Result<unknown>>;
45
- export interface RunImageSurveyArgs {
46
- readonly vctx: VibesApiSQLCtx;
47
- readonly chatId: string;
48
- readonly userId: string;
49
- readonly sentence: string;
50
- readonly colorway: {
51
- readonly theme: string;
52
- readonly colorway: string;
53
- };
54
- readonly surveyId: string;
55
- readonly publish: (frame: EvtImageSurvey) => Promise<void> | void;
56
- readonly signal?: AbortSignal;
57
- readonly deadlines?: {
58
- readonly readingsMs?: number;
59
- readonly renderMs?: number;
60
- };
61
- }
62
- export declare function runImageSurvey(args: RunImageSurveyArgs): Promise<Result<EvtImageSurvey>>;
@@ -1,229 +0,0 @@
1
- import { Result, exception2Result } from "@adviser/cement";
2
- import { type } from "arktype";
3
- import { eq } from "drizzle-orm";
4
- import { cssToHex, drawLookColorway, generatePalette, getStylePreset, lookColorwaySeed } from "@vibes.diy/prompts";
5
- import { MINT_FALLBACK_THEME } from "./mint-style.js";
6
- import { storeAndAuditAsset } from "../public/store-and-audit-asset.js";
7
- import { lazyType } from "@vibes.diy/api-types/lazy-type";
8
- export const READINGS_MODEL = "google/gemini-2.5-flash";
9
- export const RENDER_MODEL = "google/gemini-2.5-flash-image";
10
- export const READINGS_DEADLINE_MS = 20_000;
11
- export const RENDER_DEADLINE_MS = 45_000;
12
- export function drawSurveyColorway(rnd, theme = MINT_FALLBACK_THEME) {
13
- return { theme, colorway: drawLookColorway(rnd, theme) ?? theme };
14
- }
15
- const HOUSE_COLOURS = {
16
- page: "#F9F4EE",
17
- card: "#FFFFFF",
18
- ink: "#191410",
19
- accent: "#CA6803",
20
- inkOnAccent: "#191410",
21
- };
22
- export function surveyColours(pick) {
23
- const seed = lookColorwaySeed(pick.theme, pick.colorway) ?? getStylePreset(pick.theme)?.palette;
24
- if (seed === undefined)
25
- return HOUSE_COLOURS;
26
- const palette = generatePalette(seed);
27
- return {
28
- page: cssToHex(palette.light.background) ?? HOUSE_COLOURS.page,
29
- card: cssToHex(palette.light.surface) ?? HOUSE_COLOURS.card,
30
- ink: cssToHex(palette.light["text-primary"]) ?? HOUSE_COLOURS.ink,
31
- accent: cssToHex(palette.light.primary) ?? HOUSE_COLOURS.accent,
32
- inkOnAccent: cssToHex(palette.onLight.primary) ?? HOUSE_COLOURS.inkOnAccent,
33
- };
34
- }
35
- function buildable(c) {
36
- return `The app is built from these parts: a page with a big bold title and a short helper line; soft rounded cards with gentle shadows floating on the page; list rows as smaller raised cards; buttons (one filled accent button per view, the rest outline or plain); text inputs and text areas; tabs; badges; a progress bar; a simple table; toggles and checkboxes; a person shown as a small avatar chip with their handle. The colours: the page is ${c.page} everywhere, cards are ${c.card}, text is ${c.ink}, and the one accent is ${c.accent} with ${c.inkOnAccent} text on it; every other surface stays one of those. Plain sans-serif type, generous spacing, simple line icons. Every surface is a flat solid colour from this palette, and the progress bar is the one chart.`;
37
- }
38
- export function readingsPrompt(sentence, colours) {
39
- return `Someone asked an app builder for: "${sentence}"
40
-
41
- Give four genuinely different readings of what they might want. Vary the layout, the feature that leads the first screen, and the mood; all four share one palette. Each reading is one app a person could build in a single page. Write every pitch as the good thing the person gets to do with it.
42
-
43
- ${buildable(colours)} Make the four readings differ in layout and in which feature leads, using those parts, and describe each first screen in those terms.
44
-
45
- Reply as JSON: {"readings":[{"label":"2-4 word name","pitch":"one sentence a person reads under the picture","screen":"one paragraph describing exactly what the first screen shows: layout, key components, sample content"}]} with exactly four entries.`;
46
- }
47
- export function renderPrompt(reading, colours) {
48
- return `A crisp, flat UI screenshot of a single-page web app, shown straight-on with the app filling the whole frame edge to edge. The app: ${reading.screen} Legible realistic sample content, clean spacing, looks like a real shipped product.
49
-
50
- ${buildable(colours)}`;
51
- }
52
- const readingsReply = lazyType(() => type({
53
- readings: type({ label: "string > 0", pitch: "string > 0", screen: "string > 0" }).array(),
54
- }));
55
- export function parseReadings(json) {
56
- const parsed = readingsReply(json);
57
- if (parsed instanceof type.errors)
58
- return Result.Err(`image-survey-readings-contract: ${parsed.summary}`);
59
- if (parsed.readings.length !== 4)
60
- return Result.Err(`image-survey-readings-count: ${parsed.readings.length}`);
61
- return Result.Ok(parsed.readings.map((r) => ({ label: r.label, pitch: r.pitch, screen: r.screen })));
62
- }
63
- const imageReply = lazyType(() => type({
64
- choices: type({
65
- message: { "images?": type({ image_url: { url: "string" } }).array() },
66
- }).array(),
67
- }));
68
- const DATA_URL = /^data:([^;,]+);base64,(.+)$/;
69
- export function parseImageReply(json) {
70
- const parsed = imageReply(json);
71
- if (parsed instanceof type.errors)
72
- return Result.Err(`image-survey-render-contract: ${parsed.summary}`);
73
- const url = parsed.choices[0]?.message.images?.[0]?.image_url.url;
74
- if (url === undefined)
75
- return Result.Err("image-survey-render-empty");
76
- const match = DATA_URL.exec(url);
77
- if (match === null)
78
- return Result.Err("image-survey-render-not-data-url");
79
- const mimeType = match[1];
80
- const decoded = exception2Result(() => Uint8Array.from(atob(match[2]), (ch) => ch.charCodeAt(0)));
81
- if (decoded.isErr())
82
- return Result.Err(`image-survey-render-base64: ${decoded.Err().message}`);
83
- return Result.Ok({ bytes: decoded.Ok(), mimeType });
84
- }
85
- export async function withDeadline(call, timeoutMs, outer) {
86
- const abort = new AbortController();
87
- const timer = setTimeout(function expire() {
88
- abort.abort();
89
- }, timeoutMs);
90
- function relay() {
91
- abort.abort();
92
- }
93
- if (outer?.aborted === true)
94
- abort.abort();
95
- outer?.addEventListener("abort", relay);
96
- return Promise.resolve()
97
- .then(function invoke() {
98
- return call(abort.signal);
99
- })
100
- .then(function settle(reply) {
101
- return abort.signal.aborted ? { timedOut: true } : { timedOut: false, reply };
102
- }, function failed(e) {
103
- if (abort.signal.aborted)
104
- return { timedOut: true };
105
- return { timedOut: false, reply: Result.Err(e instanceof Error ? e : new Error(String(e))) };
106
- })
107
- .finally(function disarm() {
108
- clearTimeout(timer);
109
- outer?.removeEventListener("abort", relay);
110
- });
111
- }
112
- export async function completeJson(vctx, req, signal) {
113
- const response = await exception2Result(() => vctx.llmRequest({ ...req, headers: vctx.params.llm.headers }, { signal }));
114
- if (response.isErr())
115
- return Result.Err(response.Err());
116
- const res = response.Ok();
117
- if (res.ok === false) {
118
- await exception2Result(() => res.body?.cancel());
119
- return Result.Err(`image-survey-status-${res.status}`);
120
- }
121
- return exception2Result(() => res.json());
122
- }
123
- function unfence(text) {
124
- const fenced = /^\s*```(?:json)?\s*([\s\S]*?)\s*```\s*$/.exec(text);
125
- return fenced === null ? text : fenced[1];
126
- }
127
- const textReply = lazyType(() => type({ choices: type({ message: { content: "string | null" } }).array() }));
128
- async function fetchReadings(vctx, prompt, signal) {
129
- const body = await completeJson(vctx, {
130
- model: READINGS_MODEL,
131
- stream: false,
132
- response_format: { type: "json_object" },
133
- messages: [{ role: "user", content: [{ type: "text", text: prompt }] }],
134
- }, signal);
135
- if (body.isErr())
136
- return Result.Err(body.Err());
137
- const parsed = textReply(body.Ok());
138
- if (parsed instanceof type.errors)
139
- return Result.Err(`image-survey-readings-reply: ${parsed.summary}`);
140
- const content = parsed.choices[0]?.message.content;
141
- if (content === undefined || content === null || content.length === 0)
142
- return Result.Err("image-survey-readings-empty");
143
- const json = exception2Result(() => JSON.parse(unfence(content)));
144
- if (json.isErr())
145
- return Result.Err(`image-survey-readings-json: ${json.Err().message}`);
146
- return parseReadings(json.Ok());
147
- }
148
- async function fetchRender(vctx, prompt, signal) {
149
- const body = await completeJson(vctx, {
150
- model: RENDER_MODEL,
151
- stream: false,
152
- modalities: ["image", "text"],
153
- image_config: { aspect_ratio: "1:1" },
154
- messages: [{ role: "user", content: [{ type: "text", text: prompt }] }],
155
- }, signal);
156
- if (body.isErr())
157
- return Result.Err(body.Err());
158
- return parseImageReply(body.Ok());
159
- }
160
- async function currentAddress(vctx, chatId) {
161
- const rows = await exception2Result(() => vctx.sql.db
162
- .select({ ownerHandle: vctx.sql.tables.chatContexts.ownerHandle, appSlug: vctx.sql.tables.chatContexts.appSlug })
163
- .from(vctx.sql.tables.chatContexts)
164
- .where(eq(vctx.sql.tables.chatContexts.chatId, chatId))
165
- .limit(1));
166
- if (rows.isErr())
167
- return Result.Err(rows.Err());
168
- const row = rows.Ok()[0];
169
- if (row === undefined)
170
- return Result.Err(`image-survey-no-chat: ${chatId}`);
171
- return Result.Ok(row);
172
- }
173
- export async function runImageSurvey(args) {
174
- const { vctx, chatId, surveyId } = args;
175
- const colours = surveyColours(args.colorway);
176
- const log = vctx.logger.With().Str("chatId", chatId).Str("surveyId", surveyId).Logger();
177
- const readings = await withDeadline((signal) => fetchReadings(vctx, readingsPrompt(args.sentence, colours), signal), args.deadlines?.readingsMs ?? READINGS_DEADLINE_MS, args.signal);
178
- if (readings.timedOut)
179
- return Result.Err("image-survey-readings-timeout");
180
- if (readings.reply.isErr())
181
- return Result.Err(readings.reply.Err());
182
- const rs = readings.reply.Ok();
183
- const faces = rs.map((r, index) => ({ index, label: r.label, pitch: r.pitch }));
184
- function snapshot() {
185
- return { type: "vibes.diy.evt-image-survey", chatId, surveyId, faces: faces.map((f) => ({ ...f })) };
186
- }
187
- async function publish() {
188
- const sent = await exception2Result(() => args.publish(snapshot()));
189
- if (sent.isErr())
190
- log.Warn().Err(sent.Err()).Msg("image-survey publish failed");
191
- }
192
- await publish();
193
- async function renderFace(index) {
194
- const rendered = await withDeadline((signal) => fetchRender(vctx, renderPrompt(rs[index], colours), signal), args.deadlines?.renderMs ?? RENDER_DEADLINE_MS, args.signal);
195
- const stored = await (async () => {
196
- if (rendered.timedOut)
197
- return Result.Err("image-survey-render-timeout");
198
- if (rendered.reply.isErr())
199
- return Result.Err(rendered.reply.Err());
200
- const image = rendered.reply.Ok();
201
- const address = await currentAddress(vctx, chatId);
202
- if (address.isErr())
203
- return Result.Err(address.Err());
204
- const r = await storeAndAuditAsset(vctx, {
205
- bytes: image.bytes,
206
- userId: args.userId,
207
- ownerHandle: address.Ok().ownerHandle,
208
- appSlug: address.Ok().appSlug,
209
- mimeType: image.mimeType,
210
- uploadId: vctx.sthis.nextId(16).str,
211
- origin: "generation",
212
- });
213
- if (r.isErr())
214
- return Result.Err(r.Err());
215
- return Result.Ok({ uploadId: r.Ok().uploadId, cid: r.Ok().cid, mimeType: r.Ok().mimeType ?? image.mimeType });
216
- })();
217
- if (stored.isErr()) {
218
- log.Warn().Int("face", index).Err(stored.Err()).Msg("image-survey face failed");
219
- faces[index] = { ...faces[index], failed: true };
220
- }
221
- else {
222
- faces[index] = { ...faces[index], ...stored.Ok() };
223
- }
224
- await publish();
225
- }
226
- await Promise.all(faces.map((f) => renderFace(f.index)));
227
- return Result.Ok(snapshot());
228
- }
229
- //# sourceMappingURL=image-survey.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"image-survey.js","sourceRoot":"","sources":["../../jsr/intern/image-survey.ts"],"names":[],"mappings":"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"}