@vibes.diy/api-svc 14.3.87 → 14.3.90

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 (138) hide show
  1. package/evento-handler-manifest.js +0 -4
  2. package/evento-handler-manifest.js.map +1 -1
  3. package/intern/agent-assembly.js +1 -4
  4. package/intern/agent-assembly.js.map +1 -1
  5. package/intern/agent-belt.js +10 -10
  6. package/intern/agent-belt.js.map +1 -1
  7. package/intern/agent-dispatcher.js +16 -41
  8. package/intern/agent-dispatcher.js.map +1 -1
  9. package/intern/agent-router.js.map +1 -1
  10. package/intern/ensure-chat-id.d.ts +0 -2
  11. package/intern/ensure-chat-id.js +25 -57
  12. package/intern/ensure-chat-id.js.map +1 -1
  13. package/intern/ensure-slug-binding.js.map +1 -1
  14. package/intern/first-brief-pairs.d.ts +13 -0
  15. package/intern/first-brief-pairs.js +138 -0
  16. package/intern/first-brief-pairs.js.map +1 -0
  17. package/intern/first-brief.d.ts +4 -0
  18. package/intern/first-brief.js +1 -0
  19. package/intern/first-brief.js.map +1 -1
  20. package/intern/first-build-race.d.ts +2 -0
  21. package/intern/first-build-race.js +6 -0
  22. package/intern/first-build-race.js.map +1 -1
  23. package/intern/first-build-request.js +1 -3
  24. package/intern/first-build-request.js.map +1 -1
  25. package/intern/get-model-defaults.d.ts +1 -0
  26. package/intern/get-model-defaults.js +2 -1
  27. package/intern/get-model-defaults.js.map +1 -1
  28. package/intern/guest-principal-store.js +2 -31
  29. package/intern/guest-principal-store.js.map +1 -1
  30. package/intern/instant-build.d.ts +154 -0
  31. package/intern/instant-build.js +443 -0
  32. package/intern/instant-build.js.map +1 -0
  33. package/intern/instruction-variant.d.ts +4 -13
  34. package/intern/instruction-variant.js +13 -153
  35. package/intern/instruction-variant.js.map +1 -1
  36. package/intern/mercury-first-build-seam.d.ts +2 -41
  37. package/intern/mercury-first-build-seam.js +4 -98
  38. package/intern/mercury-first-build-seam.js.map +1 -1
  39. package/intern/mercury-first-build.d.ts +34 -407
  40. package/intern/mercury-first-build.js +243 -2340
  41. package/intern/mercury-first-build.js.map +1 -1
  42. package/intern/mercury-resilience.d.ts +4 -11
  43. package/intern/mercury-resilience.js +4 -22
  44. package/intern/mercury-resilience.js.map +1 -1
  45. package/intern/mint-decision.d.ts +4 -0
  46. package/intern/mint-decision.js +11 -7
  47. package/intern/mint-decision.js.map +1 -1
  48. package/intern/mint-job-store.js +2 -2
  49. package/intern/mint-job-store.js.map +1 -1
  50. package/intern/onboarding-handle.d.ts +1 -0
  51. package/intern/onboarding-handle.js +1 -1
  52. package/intern/onboarding-handle.js.map +1 -1
  53. package/intern/prompt-assembly.d.ts +20 -0
  54. package/intern/prompt-assembly.js +12 -19
  55. package/intern/prompt-assembly.js.map +1 -1
  56. package/intern/provisional-handle.d.ts +8 -0
  57. package/intern/provisional-handle.js +56 -0
  58. package/intern/provisional-handle.js.map +1 -0
  59. package/intern/subagent-model.d.ts +0 -7
  60. package/intern/subagent-model.js +0 -6
  61. package/intern/subagent-model.js.map +1 -1
  62. package/package.json +13 -13
  63. package/public/agent-turn-action.js +18 -22
  64. package/public/agent-turn-action.js.map +1 -1
  65. package/public/app-setting-items.d.ts +2 -0
  66. package/public/app-setting-items.js +32 -2
  67. package/public/app-setting-items.js.map +1 -1
  68. package/public/codegen-turn-route.d.ts +9 -2
  69. package/public/codegen-turn-route.js +46 -20
  70. package/public/codegen-turn-route.js.map +1 -1
  71. package/public/ensure-app-settings.js +7 -7
  72. package/public/ensure-app-settings.js.map +1 -1
  73. package/public/get-app-by-fsid.js +2 -2
  74. package/public/get-app-by-fsid.js.map +1 -1
  75. package/public/get-chat-details.js +3 -4
  76. package/public/get-chat-details.js.map +1 -1
  77. package/public/get-chat-response.js +3 -4
  78. package/public/get-chat-response.js.map +1 -1
  79. package/public/handle-prompt-context.d.ts +3 -2
  80. package/public/handle-prompt-context.js +28 -76
  81. package/public/handle-prompt-context.js.map +1 -1
  82. package/public/handler-llm-request.d.ts +6 -1
  83. package/public/handler-llm-request.js +11 -9
  84. package/public/handler-llm-request.js.map +1 -1
  85. package/public/list-recent-vibes.js +1 -57
  86. package/public/list-recent-vibes.js.map +1 -1
  87. package/public/open-chat.js +1 -2
  88. package/public/open-chat.js.map +1 -1
  89. package/public/prompt-chat-section.js +2 -13
  90. package/public/prompt-chat-section.js.map +1 -1
  91. package/public/prompt-section-actions.d.ts +0 -2
  92. package/public/prompt-section-actions.js +24 -1
  93. package/public/prompt-section-actions.js.map +1 -1
  94. package/public/prompt-turn-terminal.js +1 -5
  95. package/public/prompt-turn-terminal.js.map +1 -1
  96. package/public/prompt-turn-types.d.ts +2 -0
  97. package/public/publish-app.js +2 -2
  98. package/public/publish-app.js.map +1 -1
  99. package/public/select-app.d.ts +1 -1
  100. package/public/select-app.js +1 -1
  101. package/public/select-app.js.map +1 -1
  102. package/public/shared-mint.js +1 -2
  103. package/public/shared-mint.js.map +1 -1
  104. package/public/stream-assembly.d.ts +5 -2
  105. package/public/stream-assembly.js +5 -2
  106. package/public/stream-assembly.js.map +1 -1
  107. package/usage-report/codegen-delivery-alert-util.d.ts +4 -4
  108. package/usage-report/codegen-delivery-alert-util.js +17 -17
  109. package/usage-report/codegen-delivery-alert-util.js.map +1 -1
  110. package/usage-report/first-build-no-app-alarm.js.map +1 -1
  111. package/usage-report/{draft-output-alert.d.ts → new-user-alert-post.d.ts} +0 -6
  112. package/usage-report/new-user-alert-post.js +14 -0
  113. package/usage-report/new-user-alert-post.js.map +1 -0
  114. package/usage-report/new-user-alert-util.d.ts +0 -1
  115. package/usage-report/new-user-alert-util.js +3 -16
  116. package/usage-report/new-user-alert-util.js.map +1 -1
  117. package/usage-report/new-user-alert.js +1 -6
  118. package/usage-report/new-user-alert.js.map +1 -1
  119. package/intern/attach-draft-handle.d.ts +0 -18
  120. package/intern/attach-draft-handle.js +0 -342
  121. package/intern/attach-draft-handle.js.map +0 -1
  122. package/intern/automatic-draft-attachment.d.ts +0 -18
  123. package/intern/automatic-draft-attachment.js +0 -31
  124. package/intern/automatic-draft-attachment.js.map +0 -1
  125. package/intern/draft-chat-store.d.ts +0 -99
  126. package/intern/draft-chat-store.js +0 -86
  127. package/intern/draft-chat-store.js.map +0 -1
  128. package/intern/draft-runtime-store.d.ts +0 -8
  129. package/intern/draft-runtime-store.js +0 -31
  130. package/intern/draft-runtime-store.js.map +0 -1
  131. package/public/attach-draft-handle.d.ts +0 -3
  132. package/public/attach-draft-handle.js +0 -53
  133. package/public/attach-draft-handle.js.map +0 -1
  134. package/public/draft-runtime.d.ts +0 -5
  135. package/public/draft-runtime.js +0 -302
  136. package/public/draft-runtime.js.map +0 -1
  137. package/usage-report/draft-output-alert.js +0 -24
  138. package/usage-report/draft-output-alert.js.map +0 -1
@@ -0,0 +1,443 @@
1
+ import { Result, exception2Result } from "@adviser/cement";
2
+ import { type } from "arktype";
3
+ import { makeBaseSystemPrompt } from "@vibes.diy/prompts";
4
+ import { createBlockStream, isCodeEnd, } from "@vibes.diy/call-ai-v2";
5
+ import { lazyType } from "@vibes.diy/api-types/lazy-type";
6
+ import { createBlockAccumulator, createStreamingResolver, resolveCodeBlocks } from "./prompt-streaming.js";
7
+ import { synthesizeImports } from "./import-synth.js";
8
+ import { checkOpens, OPENS_ADVISORY_CLASSES } from "./opens-check.js";
9
+ import { saveRepairFindings } from "./save-repair.js";
10
+ import { composeRepairAsk, renderRepairFiles } from "./save-repair-io.js";
11
+ import { createPromptAssetFetch, promptsPkgBaseUrl } from "./prompt-asset-fetch.js";
12
+ import { loadActiveSettings, lookOptionForTurn } from "./prompt-assembly.js";
13
+ export const INSTANT_MERCURY_MODEL = "inception/mercury-2.5";
14
+ export const INSTANT_HAIKU_MODEL = "anthropic/claude-haiku-5.5";
15
+ export const INSTANT_MAX_OUTPUT_TOKENS = 32_000;
16
+ export const INSTANT_MERCURY_CALL_MS = 40_000;
17
+ export const INSTANT_HAIKU_CALL_MS = 90_000;
18
+ export const INSTANT_STAGE_BUDGET_MS = 150_000;
19
+ export const INSTANT_MAX_ATTEMPTS = 5;
20
+ export function instantModelChoice(name) {
21
+ switch (name) {
22
+ case "mercury":
23
+ return {
24
+ name,
25
+ id: INSTANT_MERCURY_MODEL,
26
+ reasoning: { effort: "none" },
27
+ reasoningEffort: "none",
28
+ callMs: INSTANT_MERCURY_CALL_MS,
29
+ };
30
+ case "haiku":
31
+ return { name, id: INSTANT_HAIKU_MODEL, reasoning: { enabled: false }, callMs: INSTANT_HAIKU_CALL_MS };
32
+ }
33
+ }
34
+ export const INSTANT_PARAGRAPH = "Build the interaction this sentence names, fully working, with realistic launch content. " +
35
+ "Records are documents with a type; every list is a live query; every save is a document write. " +
36
+ "Known values are direct controls. " +
37
+ "Sharing, invitations, roles, scheduled jobs, emails and outside services come in a later pass.";
38
+ export function composeInstantBrief(sentence) {
39
+ const trimmed = sentence.trim().replace(/[.\s]+$/, "");
40
+ return `${trimmed}. ${INSTANT_PARAGRAPH}`;
41
+ }
42
+ export function composeInstantEditAsk(args) {
43
+ return (renderRepairFiles({ vfs: args.vfs, intro: "This is the app as it stands." }) +
44
+ "\nChange it as this instruction says:\n\n" +
45
+ args.instruction.trim() +
46
+ "\n\nWrite every file you change in full, in the same shape (each under its `### `path`` heading, complete, once). " +
47
+ "Leave out the files you do not change. Keep everything that already works.");
48
+ }
49
+ export function appendInstantContext(systemPrompt, ownerHandle) {
50
+ const previewMaker = `<preview-maker>${JSON.stringify({ handle: ownerHandle })}</preview-maker>\n` +
51
+ "This is the maker opening the first preview. Match seed.json parent IDs to this maker's opening query; resolve each visitor's identity dynamically in app code.";
52
+ return [systemPrompt.replace(/\n+$/, ""), previewMaker].join("\n\n");
53
+ }
54
+ export async function loadInstantSystemPrompt(vctx, args) {
55
+ const active = await exception2Result(() => loadActiveSettings(vctx, args.chatId));
56
+ if (active.isErr())
57
+ return Result.Err(active.Err());
58
+ const { skills, theme, title, enrichedPrompt, layoutArchetype, flourishes, textureNote } = active.Ok();
59
+ const base = await exception2Result(() => makeBaseSystemPrompt(INSTANT_MERCURY_MODEL, {
60
+ ...(skills === undefined ? {} : { skills }),
61
+ theme,
62
+ ...lookOptionForTurn(vctx, { includeTheme: true, theme, ...(args.userId === undefined ? {} : { userId: args.userId }) }),
63
+ title,
64
+ enrichedPrompt,
65
+ layoutArchetype,
66
+ flourishes,
67
+ textureNote,
68
+ demoData: false,
69
+ suppressDefaultStylePrompt: false,
70
+ variant: "initial-instant",
71
+ pkgBaseUrl: promptsPkgBaseUrl(vctx.params.pkgRepos.workspace),
72
+ fetch: createPromptAssetFetch({ fetchAsset: vctx.fetchAsset }),
73
+ }));
74
+ if (base.isErr())
75
+ return Result.Err(base.Err());
76
+ return Result.Ok(appendInstantContext(base.Ok().systemPrompt, args.ownerHandle));
77
+ }
78
+ function toLines(text) {
79
+ const lines = text.split("\n");
80
+ if (lines.length > 0 && lines[lines.length - 1] === "")
81
+ lines.pop();
82
+ return lines;
83
+ }
84
+ async function textToBlocks(text) {
85
+ const streamId = "instant-parse";
86
+ const inner = `${streamId}:lines`;
87
+ const now = new Date();
88
+ const lines = toLines(text);
89
+ let id = 0;
90
+ const input = new ReadableStream({
91
+ start(controller) {
92
+ controller.enqueue({ type: "line.begin", streamId: inner, timestamp: now });
93
+ lines.forEach((content, index) => controller.enqueue({ type: "line.line", streamId: inner, content, lineNr: index + 1, timestamp: now }));
94
+ controller.enqueue({ type: "line.end", streamId: inner, totalLines: lines.length, timestamp: now });
95
+ controller.close();
96
+ },
97
+ });
98
+ const out = input.pipeThrough(createBlockStream(streamId, inner, () => `i${++id}`));
99
+ const collected = [];
100
+ const read = await exception2Result(async () => {
101
+ const reader = out.getReader();
102
+ for (;;) {
103
+ const next = await reader.read();
104
+ if (next.done === true)
105
+ break;
106
+ collected.push(next.value);
107
+ }
108
+ });
109
+ if (read.isErr())
110
+ return Result.Err(read.Err());
111
+ return Result.Ok(collected);
112
+ }
113
+ export async function parseCandidateText(text, base) {
114
+ const blocks = await textToBlocks(text);
115
+ if (blocks.isErr())
116
+ return Result.Err(blocks.Err());
117
+ const accumulator = createBlockAccumulator();
118
+ const code = [];
119
+ for (const msg of blocks.Ok()) {
120
+ const closed = accumulator.ingest(msg);
121
+ if (closed !== undefined)
122
+ code.push({ begin: closed.begin, lines: [...closed.lines], end: closed.end });
123
+ }
124
+ const resolved = resolveCodeBlocks(code, base);
125
+ if (resolved.changedPaths.length === 0)
126
+ return Result.Err("the reply wrote no file");
127
+ const vfs = new Map();
128
+ for (const file of resolved.files) {
129
+ if (file.type === "code-block")
130
+ vfs.set(file.filename, file.content);
131
+ }
132
+ const observer = createStreamingResolver({ chatId: "instant", promptId: "instant", seed: base, onApplyError: ignoreApplyError });
133
+ const applyErrors = [];
134
+ for (const block of code) {
135
+ if (block.end === undefined || isCodeEnd(block.end) === false)
136
+ continue;
137
+ const applied = observer.observeBlock({ begin: block.begin, lines: block.lines, end: block.end });
138
+ for (const error of applied.errors) {
139
+ const near = error.searchPrefix === undefined ? "" : ` near "${error.searchPrefix}"`;
140
+ applyErrors.push(`${applied.path.replace(/^\/+/, "")}: a SEARCH/REPLACE edit did not apply (${error.reason})${near}`);
141
+ }
142
+ }
143
+ return Result.Ok({ vfs, changed: resolved.changedPaths, applyErrors });
144
+ }
145
+ function ignoreApplyError() {
146
+ return;
147
+ }
148
+ export function autofixAndCheck(args) {
149
+ const fixed = synthesizeImports({ vfs: args.vfs, paths: args.changed.filter((path) => args.vfs.has(path)), look: args.look });
150
+ const files = [...fixed.vfs].map(([filename, content]) => ({ type: "code-block", filename, lang: "jsx", content }));
151
+ const parse = saveRepairFindings(files, new Set(args.changed)).map((finding) => `${finding.path.replace(/^\/+/, "")}: ${finding.message}`);
152
+ const opens = checkOpens(fixed.vfs)
153
+ .findings.filter((finding) => OPENS_ADVISORY_CLASSES.has(finding.class) === false)
154
+ .map((finding) => `${finding.file.replace(/^\/+/, "")}:${finding.line}: ${finding.message}`);
155
+ const findings = [...parse, ...opens];
156
+ return { vfs: fixed.vfs, opens: findings.length === 0, findings, notes: fixed.notes };
157
+ }
158
+ const completionBody = lazyType(() => type({
159
+ "model?": "string",
160
+ choices: type({ message: { content: "string | null" }, "finish_reason?": "string | null" }).array(),
161
+ "usage?": {
162
+ "prompt_tokens?": "number >= 0",
163
+ "completion_tokens?": "number >= 0",
164
+ "total_tokens?": "number >= 0",
165
+ "cost?": "number >= 0",
166
+ },
167
+ }));
168
+ export function instantModelCallFor(vctx) {
169
+ return async function callInstantModel(req) {
170
+ const body = {
171
+ model: req.model.id,
172
+ stream: false,
173
+ max_tokens: INSTANT_MAX_OUTPUT_TOKENS,
174
+ reasoning: { ...req.model.reasoning },
175
+ messages: [...req.messages],
176
+ };
177
+ const rRes = await exception2Result(() => vctx.llmRequest({ ...body, headers: vctx.params.llm.headers }, { signal: req.signal }));
178
+ if (rRes.isErr())
179
+ return Result.Err(rRes.Err());
180
+ const res = rRes.Ok();
181
+ if (res.ok === false) {
182
+ await exception2Result(() => res.body?.cancel());
183
+ return Result.Err(`instant ${req.model.name}: status ${res.status}`);
184
+ }
185
+ const rJson = await exception2Result(() => res.json());
186
+ if (rJson.isErr())
187
+ return Result.Err(rJson.Err());
188
+ const parsed = completionBody(rJson.Ok());
189
+ if (parsed instanceof type.errors)
190
+ return Result.Err(`instant ${req.model.name}: reply: ${parsed.summary}`);
191
+ const content = parsed.choices[0]?.message.content;
192
+ if (content === undefined || content === null || content.trim().length === 0) {
193
+ return Result.Err(`instant ${req.model.name}: empty reply (finish ${parsed.choices[0]?.finish_reason ?? "unknown"})`);
194
+ }
195
+ const u = parsed.usage;
196
+ const servedModel = parsed.model ?? req.model.id;
197
+ return Result.Ok({
198
+ text: content,
199
+ servedModel,
200
+ ...(u === undefined
201
+ ? {}
202
+ : {
203
+ usage: {
204
+ prompt_tokens: u.prompt_tokens ?? 0,
205
+ completion_tokens: u.completion_tokens ?? 0,
206
+ total_tokens: u.total_tokens ?? (u.prompt_tokens ?? 0) + (u.completion_tokens ?? 0),
207
+ model: servedModel,
208
+ ...(req.model.reasoningEffort === undefined ? {} : { reasoningEffort: req.model.reasoningEffort }),
209
+ ...(u.cost === undefined ? {} : { cost: u.cost }),
210
+ },
211
+ }),
212
+ });
213
+ };
214
+ }
215
+ async function callWithin(call, req, cancel) {
216
+ const abort = new AbortController();
217
+ const timer = setTimeout(function expire() {
218
+ abort.abort();
219
+ }, Math.max(1, req.timeoutMs));
220
+ function cancelled() {
221
+ abort.abort();
222
+ }
223
+ cancel.addEventListener("abort", cancelled, { once: true });
224
+ if (cancel.aborted)
225
+ abort.abort();
226
+ const reply = await Promise.resolve()
227
+ .then(function invoke() {
228
+ return call({ model: req.model, messages: req.messages, signal: abort.signal });
229
+ })
230
+ .then(function settle(r) {
231
+ return r;
232
+ }, function failed(e) {
233
+ return Result.Err(e instanceof Error ? e : new Error(String(e)));
234
+ })
235
+ .finally(function disarm() {
236
+ clearTimeout(timer);
237
+ cancel.removeEventListener("abort", cancelled);
238
+ });
239
+ if (cancel.aborted)
240
+ return { kind: "cancelled" };
241
+ if (abort.signal.aborted)
242
+ return { kind: "deadline" };
243
+ return { kind: "reply", reply };
244
+ }
245
+ function pauseUnlessCancelled(ms, cancel) {
246
+ return new Promise((resolve) => {
247
+ const timer = setTimeout(done, ms);
248
+ function done() {
249
+ clearTimeout(timer);
250
+ cancel.removeEventListener("abort", done);
251
+ resolve();
252
+ }
253
+ cancel.addEventListener("abort", done, { once: true });
254
+ if (cancel.aborted)
255
+ done();
256
+ });
257
+ }
258
+ export async function runInstantCandidate(args) {
259
+ const now = args.now ?? Date.now;
260
+ const maxAttempts = args.maxAttempts ?? INSTANT_MAX_ATTEMPTS;
261
+ const { model } = args.spec;
262
+ const usage = [];
263
+ const messages = [...args.spec.messages];
264
+ let attempts = 0;
265
+ let providerErrors = 0;
266
+ let firstFindings = [];
267
+ let lastError = "no attempt";
268
+ let current = args.base;
269
+ let changed = new Set();
270
+ function end(gate, extra) {
271
+ return {
272
+ name: model.name,
273
+ model: model.id,
274
+ gate,
275
+ attempts,
276
+ ms: now() - args.startedAt,
277
+ usage,
278
+ abortedInFlight: false,
279
+ findings: firstFindings,
280
+ ...extra,
281
+ };
282
+ }
283
+ for (;;) {
284
+ if (args.cancel.aborted)
285
+ return end("cancelled", {});
286
+ const left = args.deadlineAt - now();
287
+ if (left <= 0)
288
+ return end("fail", { error: `stage budget spent after ${attempts} call(s): ${lastError}` });
289
+ if (attempts >= maxAttempts)
290
+ return end("fail", { error: `${attempts} calls without a passing answer: ${lastError}` });
291
+ attempts++;
292
+ const answer = await callWithin(args.call, { model, messages, timeoutMs: Math.min(model.callMs, left) }, args.cancel);
293
+ if (answer.kind === "cancelled")
294
+ return end("cancelled", { abortedInFlight: true });
295
+ if (answer.kind === "deadline") {
296
+ lastError = `call ${attempts} passed its deadline`;
297
+ continue;
298
+ }
299
+ if (answer.reply.isErr()) {
300
+ lastError = answer.reply.Err().message;
301
+ providerErrors++;
302
+ await pauseUnlessCancelled(Math.min(8_000, 1_000 * 2 ** (providerErrors - 1)), args.cancel);
303
+ continue;
304
+ }
305
+ providerErrors = 0;
306
+ const reply = answer.reply.Ok();
307
+ if (reply.usage !== undefined)
308
+ usage.push(reply.usage);
309
+ const parsed = await parseCandidateText(reply.text, current);
310
+ if (parsed.isErr()) {
311
+ lastError = parsed.Err().message;
312
+ messages.push({ role: "assistant", content: [{ type: "text", text: reply.text }] });
313
+ messages.push({ role: "user", content: [{ type: "text", text: composeRepairAsk([`the reply: ${lastError}`]) }] });
314
+ continue;
315
+ }
316
+ changed = new Set([...changed, ...parsed.Ok().changed]);
317
+ const checked = autofixAndCheck({ vfs: parsed.Ok().vfs, changed: [...changed], look: args.look });
318
+ const gated = parsed.Ok().applyErrors.length === 0
319
+ ? checked
320
+ : { ...checked, opens: false, findings: [...parsed.Ok().applyErrors, ...checked.findings] };
321
+ if (gated.opens) {
322
+ return end("pass", { vfs: gated.vfs, changed: [...changed] });
323
+ }
324
+ if (firstFindings.length === 0)
325
+ firstFindings = gated.findings.slice(0, 6);
326
+ lastError = gated.findings.slice(0, 3).join("; ");
327
+ current = gated.vfs;
328
+ messages.push({ role: "assistant", content: [{ type: "text", text: reply.text }] });
329
+ messages.push({ role: "user", content: [{ type: "text", text: composeRepairAsk(gated.findings) }] });
330
+ }
331
+ }
332
+ export async function raceInstantCandidates(args) {
333
+ const now = args.now ?? Date.now;
334
+ const startedAt = now();
335
+ const deadlineAt = startedAt + args.budgetMs;
336
+ const cancel = new AbortController();
337
+ function turnAborted() {
338
+ cancel.abort();
339
+ }
340
+ args.turn?.addEventListener("abort", turnAborted, { once: true });
341
+ if (args.turn?.aborted === true)
342
+ cancel.abort();
343
+ let winner;
344
+ let winnerMs;
345
+ const runs = args.specs.map((spec) => args.run({ spec, cancel: cancel.signal, startedAt, deadlineAt }).then((outcome) => {
346
+ if (outcome.gate === "pass" && winner === undefined) {
347
+ winner = outcome;
348
+ winnerMs = now() - startedAt;
349
+ cancel.abort();
350
+ }
351
+ return outcome;
352
+ }));
353
+ const outcomes = await Promise.all(runs);
354
+ args.turn?.removeEventListener("abort", turnAborted);
355
+ const settled = outcomes.map((outcome) => outcome.gate === "pass" && outcome !== winner ? { ...outcome, gate: "cancelled" } : outcome);
356
+ return { ...(winner === undefined ? {} : { winner }), outcomes: settled, ms: winnerMs ?? now() - startedAt };
357
+ }
358
+ export function instantReceipt(race) {
359
+ return {
360
+ candidates: race.outcomes.map((outcome) => ({
361
+ model: outcome.model,
362
+ ms: outcome.ms,
363
+ gate: outcome.gate,
364
+ attempts: outcome.attempts,
365
+ ...(outcome.abortedInFlight ? { abortedInFlight: true } : {}),
366
+ })),
367
+ ...(race.winner === undefined ? {} : { winner: race.winner.model }),
368
+ };
369
+ }
370
+ export function instantTurnText(race) {
371
+ const winner = race.winner;
372
+ if (winner === undefined || winner.vfs === undefined || winner.changed === undefined) {
373
+ const why = race.outcomes
374
+ .map((outcome) => `${outcome.name}: ${outcome.error ?? outcome.findings.slice(0, 2).join("; ")}`)
375
+ .join("\n");
376
+ return `The instant build wrote no files that open, so nothing was saved.\n\n${why}\n`;
377
+ }
378
+ const vfs = winner.vfs;
379
+ const files = new Map(winner.changed.flatMap((path) => {
380
+ const content = vfs.get(path);
381
+ return content === undefined ? [] : [[path, content]];
382
+ }));
383
+ return renderRepairFiles({ vfs: files, intro: "Here is the app." });
384
+ }
385
+ export function instantResponse(args) {
386
+ const model = args.race.winner?.model ?? INSTANT_HAIKU_MODEL;
387
+ function chunk(delta, finish, usage) {
388
+ return `data: ${JSON.stringify({
389
+ id: `instant-${args.promptId}`,
390
+ provider: "instant",
391
+ model,
392
+ object: "chat.completion.chunk",
393
+ created: Math.floor(Date.now() / 1000),
394
+ choices: [{ index: 0, delta, finish_reason: finish, native_finish_reason: finish }],
395
+ ...(usage === undefined ? {} : { usage }),
396
+ })}\n\n`;
397
+ }
398
+ const rounds = args.race.outcomes.flatMap((outcome) => outcome.usage);
399
+ const body = [
400
+ chunk({ role: "assistant", content: instantTurnText(args.race) }, null),
401
+ ...rounds.map((round) => chunk({}, null, round)),
402
+ chunk({}, "stop"),
403
+ "data: [DONE]\n\n",
404
+ ].join("");
405
+ return new Response(body, { status: 200, headers: { "Content-Type": "text/event-stream" } });
406
+ }
407
+ function sourceFiles(vfs) {
408
+ return new Map([...vfs].filter(([path]) => path.startsWith("/~~") === false));
409
+ }
410
+ export function mercuryMessages(args) {
411
+ const files = sourceFiles(args.base);
412
+ const ask = files.size === 0 ? composeInstantBrief(args.instruction) : composeInstantEditAsk({ instruction: args.instruction, vfs: files });
413
+ return [
414
+ { role: "system", content: [{ type: "text", text: args.system }] },
415
+ { role: "user", content: [{ type: "text", text: ask }] },
416
+ ];
417
+ }
418
+ export async function runInstantBuild(args) {
419
+ const { assembly } = args;
420
+ const specs = [
421
+ ...(assembly.mercurySystem === undefined
422
+ ? []
423
+ : [
424
+ {
425
+ model: instantModelChoice("mercury"),
426
+ messages: mercuryMessages({ system: assembly.mercurySystem, instruction: assembly.instruction, base: assembly.base }),
427
+ },
428
+ ]),
429
+ { model: instantModelChoice("haiku"), messages: args.haikuMessages },
430
+ ];
431
+ const race = await raceInstantCandidates({
432
+ specs,
433
+ budgetMs: args.budgetMs ?? INSTANT_STAGE_BUDGET_MS,
434
+ turn: args.turn,
435
+ run: ({ spec, cancel, startedAt, deadlineAt }) => runInstantCandidate({ call: args.call, spec, base: assembly.base, look: assembly.look, cancel, startedAt, deadlineAt }),
436
+ });
437
+ return {
438
+ response: instantResponse({ race, promptId: args.promptId }),
439
+ receipt: instantReceipt(race),
440
+ model: race.winner?.model ?? INSTANT_HAIKU_MODEL,
441
+ };
442
+ }
443
+ //# sourceMappingURL=instant-build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instant-build.js","sourceRoot":"","sources":["../../jsr/intern/instant-build.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { Result } from "@adviser/cement";
2
2
  import type { VibesApiSQLCtx } from "../types.js";
3
3
  import type { MercuryFormat, MercuryPlanner } from "./mercury-first-build.js";
4
- export declare const INSTRUCTION_VARIANTS: readonly ["direct-write", "pre-staged-reply", "fast-first-turn", "server-first-build", "fast-server-first-build", "fast-first-turn-full-brief", "opus-server-first-build", "seeded-address-words", "no-first-brief", "chopped-screwed", "mercury-recut-first-build", "mercury-chopped-first-build", "mercury-chopped-j-first-build", "mercury-chopped-js-first-build", "mercury-whole-first-build", "mercury-whole-duo-first-build", "mercury-onecall-first-build", "mercury-onecall-whole-first-build", "mercury-onecall-duo-first-build", "mercury-opus-planner-first-build", "mercury-prose-first-build", "mercury-thinkaloud-first-build", "mercury-cards-first-build", "mercury-cards-fim-first-build", "mercury-haiku-cards-first-build"];
4
+ export declare const INSTRUCTION_VARIANTS: readonly ["direct-write", "pre-staged-reply", "fast-first-turn", "server-first-build", "fast-server-first-build", "fast-first-turn-full-brief", "opus-server-first-build", "seeded-address-words", "no-first-brief", "mercury-cards-first-build", "mercury-cards-fim-first-build", "mercury-haiku-cards-first-build"];
5
5
  export type InstructionVariant = (typeof INSTRUCTION_VARIANTS)[number];
6
6
  export declare function variantForTurn(variant: InstructionVariant | undefined, turn: {
7
7
  readonly firstTurn: boolean;
@@ -30,22 +30,13 @@ export declare function firstBriefRoundInstruction(words: readonly string[]): st
30
30
  export declare function seededAddressWordsArmed(variant: InstructionVariant | undefined, firstTurn: boolean): boolean;
31
31
  export declare const SEEDED_ADDRESS_WORDS_TAG = "<seeded-address-words>";
32
32
  export declare function seededAddressWordsInstruction(words: readonly string[]): string;
33
- export declare const CHOPPED_SCREWED_VARIANT_INSTRUCTION = "<chopped-first-brief>\nThis first brief and its preamble are turned up. Everything the base instruction decides stays\nexactly as it decides it: what the app does, which features are on screen, the ownership and\naccess shape, the invite screen, the composer, the skills, the mechanics the ask implies. What\nchanges is how vividly you describe and choose, in the person's own nouns.\n\nThe preamble reads like you can already see the app: name the first screen's hero control and\nthe one moment that makes it fun to open.\n\nScreens carry one distinctive detail each: the big number, the chip row, the satisfying tap,\nthe state that changes colour \u2014 specific to this app, never a feature the ask did not imply.\n\nThe seed cast is a small world with names and dates: quoted names, believable counts, dates near\ntoday, a couple of records in the interesting states the screens show (one overdue, one sold out,\none flashed). Every seeded record is one the app's own Add could write.\n\nTitles are two or three punchy words in the app's own vocabulary, with one surprising pick among\nthe three. The look note names a scene \u2014 a surface, a palette, a card shape and one gesture of\nmood \u2014 in under twenty words.\n\nThe nouns come from the person's words and their world; a vivid phrase belongs to this app or it\nstays out. Length grows by a sentence or two per part, never by a new feature.\n</chopped-first-brief>";
34
- export declare function mercuryRecutArmed(variant: InstructionVariant | undefined, firstTurn: boolean): boolean;
35
33
  export declare const MERCURY_VARIANTS: readonly InstructionVariant[];
36
34
  export declare function isMercuryVariant(variant: InstructionVariant | undefined): boolean;
37
- export declare function mercuryStyleFor(variant: InstructionVariant | undefined): "base" | "chopped";
38
- export declare function mercuryJuiceFor(variant: InstructionVariant | undefined): "examples" | "own-world";
39
- export declare function mercuryDepthFor(variant: InstructionVariant | undefined): "none" | "sub-feature";
40
- export declare function mercuryReplyFor(variant: InstructionVariant | undefined): "split" | "whole";
41
- export declare function mercuryDuoFor(variant: InstructionVariant | undefined): boolean;
42
- export declare function mercuryDuoPoolFor(variant: InstructionVariant | undefined): number | undefined;
43
- export declare function mercuryOneCallFor(variant: InstructionVariant | undefined): boolean;
44
- export declare function mercuryRecordsRulesFor(variant: InstructionVariant | undefined): boolean;
35
+ export declare function mercuryFirstBuildArmed(variant: InstructionVariant | undefined, firstTurn: boolean): boolean;
45
36
  export declare function mercuryPlannerFor(variant: InstructionVariant | undefined): MercuryPlanner;
46
- export declare function mercuryFormatFor(variant: InstructionVariant | undefined): "skeleton" | MercuryFormat;
37
+ export declare function mercuryFormatFor(variant: InstructionVariant | undefined): MercuryFormat;
47
38
  export declare const MERCURY_FIRST_BUILD_ENV = "MERCURY_FIRST_BUILD";
48
- export type MercuryFirstBuildMode = "off" | "onecall-duo" | "prose" | "cards-fim";
39
+ export type MercuryFirstBuildMode = "off" | "cards-fim" | "cards";
49
40
  export declare const MERCURY_DEFAULT_SWITCH_MODE: Exclude<MercuryFirstBuildMode, "off">;
50
41
  export declare function mercuryFirstBuildMode(flag: string | undefined): MercuryFirstBuildMode;
51
42
  export declare function mercuryVariantForTurn(o: {