@vibes.diy/api-svc 14.3.35 → 14.3.36

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.
@@ -5,12 +5,15 @@ export declare const DEFAULT_DRAFT_CLASSIFIER_TIMEOUT_MS = 4000;
5
5
  export declare const DEFAULT_DRAFT_BUILDER_TIMEOUT_MS = 40000;
6
6
  export declare const DRAFT_LEASE_HEADROOM_MS = 10000;
7
7
  export declare const DRAFT_MAX_RETRIES = 2;
8
+ export declare const DEFAULT_DRAFT_VARIATION_TIMEOUT_MS = 8000;
8
9
  export type DraftReasoningEffort = "none" | "minimal";
9
10
  export declare function draftReasoningEffortFor(model: string): DraftReasoningEffort | undefined;
10
11
  export interface DraftLaneConfig {
11
12
  readonly enabled: boolean;
12
13
  readonly guestEnabled: boolean;
13
14
  readonly openChatEnabled: boolean;
15
+ readonly variationEnabled: boolean;
16
+ readonly variationTimeoutMs: number;
14
17
  readonly classifierModel: string;
15
18
  readonly builderModel: string;
16
19
  readonly leaseMs: number;
@@ -6,6 +6,7 @@ export const DEFAULT_DRAFT_CLASSIFIER_TIMEOUT_MS = 4_000;
6
6
  export const DEFAULT_DRAFT_BUILDER_TIMEOUT_MS = 40_000;
7
7
  export const DRAFT_LEASE_HEADROOM_MS = 10_000;
8
8
  export const DRAFT_MAX_RETRIES = 2;
9
+ export const DEFAULT_DRAFT_VARIATION_TIMEOUT_MS = 8_000;
9
10
  export function draftReasoningEffortFor(model) {
10
11
  switch (true) {
11
12
  case model.startsWith("inception/"):
@@ -31,6 +32,8 @@ export function readDraftLaneConfig(env) {
31
32
  enabled: env.get("DRAFT_LANE") === "on",
32
33
  guestEnabled: env.get("DRAFT_LANE_GUEST") === "on",
33
34
  openChatEnabled: env.get("DRAFT_LANE_OPEN_CHAT") !== "off",
35
+ variationEnabled: env.get("DRAFT_VARIATION") === "on",
36
+ variationTimeoutMs: Math.min(positiveInt(env.get("DRAFT_VARIATION_TIMEOUT_MS"), DEFAULT_DRAFT_VARIATION_TIMEOUT_MS), Math.max(1, leaseMs - DRAFT_LEASE_HEADROOM_MS)),
34
37
  classifierModel: nonEmpty(env.get("DRAFT_CLASSIFIER_MODEL"), DEFAULT_DRAFT_CLASSIFIER_MODEL),
35
38
  builderModel: nonEmpty(env.get("DRAFT_BUILDER_MODEL"), DEFAULT_DRAFT_BUILDER_MODEL),
36
39
  leaseMs,
@@ -1 +1 @@
1
- {"version":3,"file":"draft-lane-config.js","sourceRoot":"","sources":["../../jsr/intern/draft-lane-config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gCAAgC,EAAE,MAAM,4CAA4C,CAAC;AAE9F,MAAM,CAAC,MAAM,8BAA8B,GAAG,8BAA8B,CAAC;AAC7E,MAAM,CAAC,MAAM,2BAA2B,GAAG,uBAAuB,CAAC;AACnE,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC;AAG7C,MAAM,CAAC,MAAM,mCAAmC,GAAG,KAAK,CAAC;AAMzD,MAAM,CAAC,MAAM,gCAAgC,GAAG,MAAM,CAAC;AAIvD,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC;AAG9C,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAYnC,MAAM,UAAU,uBAAuB,CAAC,KAAa;IACnD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC;YACjC,OAAO,MAAM,CAAC;QAChB,KAAK,KAAK,CAAC,UAAU,CAAC,8BAA8B,CAAC;YACnD,OAAO,SAAS,CAAC;QACnB;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAiCD,SAAS,WAAW,CAAC,GAAuB,EAAE,QAAgB;IAC5D,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,QAAQ,CAAC;IAC5D,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACtB,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AACrD,CAAC;AAED,SAAS,QAAQ,CAAC,GAAuB,EAAE,QAAgB;IACzD,OAAO,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;AACxE,CAAC;AAGD,MAAM,UAAU,mBAAmB,CAAC,GAA6C;IAC/E,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,sBAAsB,CAAC,CAAC;IAC/E,OAAO;QACL,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,IAAI;QACvC,YAAY,EAAE,GAAG,CAAC,GAAG,CAAC,kBAAkB,CAAC,KAAK,IAAI;QAClD,eAAe,EAAE,GAAG,CAAC,GAAG,CAAC,sBAAsB,CAAC,KAAK,KAAK;QAC1D,eAAe,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,wBAAwB,CAAC,EAAE,8BAA8B,CAAC;QAC5F,YAAY,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,qBAAqB,CAAC,EAAE,2BAA2B,CAAC;QACnF,OAAO;QACP,mBAAmB,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,6BAA6B,CAAC,EAAE,mCAAmC,CAAC;QAG7G,gBAAgB,EAAE,IAAI,CAAC,GAAG,CACxB,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,0BAA0B,CAAC,EAAE,gCAAgC,CAAC,EAClF,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,uBAAuB,CAAC,CAC/C;QACD,UAAU,EAAE,iBAAiB;KAC9B,CAAC;AACJ,CAAC;AASD,MAAM,UAAU,oBAAoB,CAAC,MAAuB;IAC1D,OAAO,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,eAAe,EAAE,gCAAgC,EAAE,CAAC;AACzF,CAAC"}
1
+ {"version":3,"file":"draft-lane-config.js","sourceRoot":"","sources":["../../jsr/intern/draft-lane-config.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ import { type DraftLaneConfig, type DraftReasoningEffort } from "./draft-lane-co
3
3
  import { type DraftClassification, type DraftModelCall, type DraftModelUsage } from "./draft-lane-classify.js";
4
4
  import type { AutofixAndCheck } from "./draft-lane-autofix.js";
5
5
  import type { DraftJobSql, DraftJobStore, DraftOpensVerdict } from "./draft-lane-store.js";
6
+ import { type VaryDraftOptions, type VaryDraftResult } from "./draft-variation.js";
6
7
  export declare const DRAFT_MAX_OUTPUT_TOKENS = 32000;
7
8
  export interface DraftCallLedgerEntry extends DraftModelUsage {
8
9
  readonly reasoningEffort?: DraftReasoningEffort;
@@ -32,6 +33,7 @@ export interface DraftLaneDeps {
32
33
  }>>;
33
34
  readonly now: () => number;
34
35
  readonly log?: (event: DraftLaneEvent) => void;
36
+ readonly varyDraft?: (opts: VaryDraftOptions) => Promise<VaryDraftResult>;
35
37
  }
36
38
  export type DraftAbandonReason = "not-a-build" | "store-error" | "prompt-unavailable" | "builder-error" | "builder-timeout" | "unparseable" | "does-not-open" | "persist-failed" | "complete-refused";
37
39
  export interface DraftLaneMeasure {
@@ -62,7 +64,7 @@ export type DraftLaneOutcome = {
62
64
  };
63
65
  export interface DraftLaneEvent {
64
66
  readonly chatId: string;
65
- readonly step: "classified" | "attempt" | "settled";
67
+ readonly step: "classified" | "attempt" | "variation" | "settled";
66
68
  readonly data: Readonly<Record<string, unknown>>;
67
69
  }
68
70
  export interface RunDraftLaneArgs {
@@ -4,6 +4,7 @@ import { classifyDraft, looksLikeBuildIntent, } from "./draft-lane-classify.js";
4
4
  import { composeDraftBrief, composeRepairAsk } from "./draft-lane-prompt.js";
5
5
  import { parseDraftText, renderDraftText } from "./draft-lane-parse.js";
6
6
  import { detectAcceptedAliases } from "./accepted-aliases.js";
7
+ import { varyDraft as defaultVaryDraft } from "./draft-variation.js";
7
8
  export const DRAFT_MAX_OUTPUT_TOKENS = 32_000;
8
9
  function ledgerEntry(usage, model) {
9
10
  const effort = draftReasoningEffortFor(model);
@@ -163,14 +164,41 @@ export async function runDraftLane(args) {
163
164
  return { kind: "lease-lost", before: "persist", measure: measure() };
164
165
  if (beforePersist === "error")
165
166
  return abandon(args, { reason: "store-error", verdict: verdictOf(checked.opens, checked.findings) }, measure());
166
- const final = { vfs: checked.vfs, intro: parsed.Ok().intro, tail: parsed.Ok().tail, draftNote: parsed.Ok().draftNote };
167
+ let vfs = checked.vfs;
168
+ if (config.variationEnabled && checked.opens) {
169
+ const variationStarted = deps.now();
170
+ const vary = deps.varyDraft ?? defaultVaryDraft;
171
+ const variation = await vary({
172
+ vfs: checked.vfs,
173
+ sentence: args.sentence,
174
+ callModel: deps.callModel,
175
+ autofixAndCheck: deps.autofixAndCheck,
176
+ deadlineMs: config.variationTimeoutMs,
177
+ model: config.builderModel,
178
+ });
179
+ for (const spent of variation.usage)
180
+ usage.push(ledgerEntry(spent, config.builderModel));
181
+ autofixNotes.push(...variation.notes);
182
+ vfs = variation.vfs;
183
+ deps.log?.({
184
+ chatId: args.chatId,
185
+ step: "variation",
186
+ data: {
187
+ varied: variation.varied,
188
+ holes: variation.holes,
189
+ restored: variation.restored,
190
+ ms: deps.now() - variationStarted,
191
+ },
192
+ });
193
+ }
194
+ const final = { vfs, intro: parsed.Ok().intro, tail: parsed.Ok().tail, draftNote: parsed.Ok().draftNote };
167
195
  const verdict = verdictOf(checked.opens, checked.findings);
168
- const aliasesUsed = detectAcceptedAliases(checked.vfs).map((use) => use.note);
196
+ const aliasesUsed = detectAcceptedAliases(vfs).map((use) => use.note);
169
197
  const persisted = await deps.persist({
170
198
  chatId: args.chatId,
171
199
  sentence: args.sentence,
172
200
  text: renderDraftText(final),
173
- vfs: checked.vfs,
201
+ vfs,
174
202
  draftNote: final.draftNote,
175
203
  model: config.builderModel,
176
204
  usage,
@@ -178,7 +206,7 @@ export async function runDraftLane(args) {
178
206
  });
179
207
  if (persisted.isErr())
180
208
  return abandon(args, { reason: "persist-failed", detail: persisted.Err().message, verdict }, measure());
181
- touchedPaths = [...checked.vfs.keys()];
209
+ touchedPaths = [...vfs.keys()];
182
210
  const completed = await deps.store.completeDraft(deps.sql, args.chatId, args.leaseToken, {
183
211
  appSlug: persisted.Ok().appSlug,
184
212
  buildId: persisted.Ok().buildId,
@@ -1 +1 @@
1
- {"version":3,"file":"draft-lane.js","sourceRoot":"","sources":["../../jsr/intern/draft-lane.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"draft-lane.js","sourceRoot":"","sources":["../../jsr/intern/draft-lane.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { Result } from "@adviser/cement";
2
+ export declare const HOLE_OPEN = "/*__HOLE ";
3
+ export declare const HOLE_CLOSE = " __*/";
4
+ export declare function holeMarker(name: string): string;
5
+ export interface HollowedFunction {
6
+ readonly name: string;
7
+ readonly params: string;
8
+ readonly body: string;
9
+ readonly indent: string;
10
+ }
11
+ export interface Hollowed {
12
+ readonly template: string;
13
+ readonly holes: readonly HollowedFunction[];
14
+ }
15
+ export interface HollowOptions {
16
+ readonly source: string;
17
+ readonly max: number;
18
+ }
19
+ export interface FillOptions {
20
+ readonly template: string;
21
+ readonly name: string;
22
+ readonly body: string;
23
+ }
24
+ export declare function hollowLeafFunctions(o: HollowOptions): Result<Hollowed>;
25
+ export declare function fillHole(o: FillOptions): Result<string>;
26
+ export declare function freeIdentifiers(source: string): Result<readonly string[]>;
@@ -0,0 +1,389 @@
1
+ import { exception2Result, Result } from "@adviser/cement";
2
+ import { Parser } from "acorn";
3
+ import acornJsx from "acorn-jsx";
4
+ export const HOLE_OPEN = "/*__HOLE ";
5
+ export const HOLE_CLOSE = " __*/";
6
+ export function holeMarker(name) {
7
+ return `${HOLE_OPEN}${name}${HOLE_CLOSE}`;
8
+ }
9
+ const JsxParser = Parser.extend(acornJsx());
10
+ const MIN_BODY = 60;
11
+ const MAX_BODY = 2500;
12
+ function isNode(value) {
13
+ return typeof value === "object" && value !== null && typeof value.type === "string";
14
+ }
15
+ function nodesOf(value) {
16
+ return Array.isArray(value) ? value.filter(isNode) : [];
17
+ }
18
+ function nameOf(node) {
19
+ return isNode(node) && typeof node.name === "string" ? node.name : undefined;
20
+ }
21
+ function parse(source) {
22
+ const parsed = exception2Result(() => JsxParser.parse(source, { ecmaVersion: "latest", sourceType: "module" }));
23
+ if (parsed.isErr())
24
+ return Result.Err(parsed.Err());
25
+ const program = parsed.Ok();
26
+ if (isNode(program) === false)
27
+ return Result.Err("unreadable module");
28
+ return Result.Ok(program);
29
+ }
30
+ function childrenOf(node) {
31
+ const out = [];
32
+ for (const [key, value] of Object.entries(node)) {
33
+ if (key === "type" || key === "start" || key === "end" || key === "loc" || key === "range")
34
+ continue;
35
+ if (Array.isArray(value))
36
+ for (const child of nodesOf(value))
37
+ out.push({ key, child });
38
+ else if (isNode(value))
39
+ out.push({ key, child: value });
40
+ }
41
+ return out;
42
+ }
43
+ function leafCandidate(args) {
44
+ const { source, name, fn } = args;
45
+ const body = fn.body;
46
+ if (name === undefined || isNode(body) === false || body.type !== "BlockStatement")
47
+ return undefined;
48
+ const len = body.end - body.start;
49
+ if (len < MIN_BODY || len > MAX_BODY)
50
+ return undefined;
51
+ if (/^[A-Z]/.test(name) || name === "App")
52
+ return undefined;
53
+ const params = nodesOf(fn.params)
54
+ .map((p) => source.slice(p.start, p.end))
55
+ .join(", ");
56
+ return { name, params, start: body.start + 1, end: body.end - 1, open: body.start, len };
57
+ }
58
+ function leafCandidates(source, program) {
59
+ const out = [];
60
+ function visit(node) {
61
+ if (node.type === "FunctionDeclaration") {
62
+ const c = leafCandidate({ source, name: nameOf(node.id), fn: node });
63
+ if (c !== undefined)
64
+ out.push(c);
65
+ }
66
+ const init = node.init;
67
+ if (node.type === "VariableDeclarator" &&
68
+ isNode(init) &&
69
+ (init.type === "ArrowFunctionExpression" || init.type === "FunctionExpression") &&
70
+ isNode(node.id) &&
71
+ node.id.type === "Identifier") {
72
+ const c = leafCandidate({ source, name: nameOf(node.id), fn: init });
73
+ if (c !== undefined)
74
+ out.push(c);
75
+ }
76
+ for (const { child } of childrenOf(node))
77
+ visit(child);
78
+ }
79
+ visit(program);
80
+ return out;
81
+ }
82
+ function lineIndentAt(source, pos) {
83
+ const lineStart = source.lastIndexOf("\n", pos - 1) + 1;
84
+ const match = /^[ \t]*/.exec(source.slice(lineStart, pos));
85
+ return match === null ? "" : match[0];
86
+ }
87
+ export function hollowLeafFunctions(o) {
88
+ const { source, max } = o;
89
+ const rProgram = parse(source);
90
+ if (rProgram.isErr())
91
+ return Result.Err(rProgram.Err());
92
+ const candidates = leafCandidates(source, rProgram.Ok()).sort((a, b) => b.len - a.len || a.start - b.start);
93
+ const picked = [];
94
+ for (const c of candidates) {
95
+ if (picked.length >= max)
96
+ break;
97
+ const clashes = picked.some((p) => p.name === c.name || (c.open < p.end + 1 && p.open < c.end + 1));
98
+ if (clashes === false)
99
+ picked.push(c);
100
+ }
101
+ if (picked.length === 0)
102
+ return Result.Err("no hollowable function: no non-capitalized function with a 60..2500 char body");
103
+ picked.sort((a, b) => a.start - b.start);
104
+ let template = "";
105
+ let cursor = 0;
106
+ const holes = [];
107
+ for (const c of picked) {
108
+ const lineIndent = lineIndentAt(source, c.open);
109
+ const indent = `${lineIndent} `;
110
+ template += `${source.slice(cursor, c.start)}\n${indent}${holeMarker(c.name)}\n${lineIndent}`;
111
+ cursor = c.end;
112
+ holes.push({ name: c.name, params: c.params, body: source.slice(c.start, c.end), indent });
113
+ }
114
+ template += source.slice(cursor);
115
+ return Result.Ok({ template, holes });
116
+ }
117
+ export function fillHole(o) {
118
+ const { template, name, body } = o;
119
+ const marker = holeMarker(name);
120
+ const at = template.indexOf(marker);
121
+ if (at < 0)
122
+ return Result.Err(`no hole marker for ${name}`);
123
+ const before = template.slice(0, at);
124
+ const after = template.slice(at + marker.length);
125
+ const lead = /\s*$/.exec(before);
126
+ const trail = /^\s*/.exec(after);
127
+ const from = lead === null ? at : at - lead[0].length;
128
+ const to = trail === null ? at + marker.length : at + marker.length + trail[0].length;
129
+ if (template[from - 1] !== "{" || template[to] !== "}")
130
+ return Result.Err(`hole marker for ${name} is not a function's whole body`);
131
+ const interior = body.startsWith("\n") ? body : `\n${body.replace(/\s+$/, "")}\n${lineIndentAt(template, to)}`;
132
+ return Result.Ok(`${template.slice(0, from)}${interior}${template.slice(to)}`);
133
+ }
134
+ const GLOBALS = new Set([
135
+ "React",
136
+ "Date",
137
+ "Math",
138
+ "JSON",
139
+ "Object",
140
+ "Array",
141
+ "String",
142
+ "Number",
143
+ "Boolean",
144
+ "Promise",
145
+ "Set",
146
+ "Map",
147
+ "console",
148
+ "window",
149
+ "document",
150
+ "localStorage",
151
+ "navigator",
152
+ "setTimeout",
153
+ "clearTimeout",
154
+ "setInterval",
155
+ "clearInterval",
156
+ "requestAnimationFrame",
157
+ "cancelAnimationFrame",
158
+ "fetch",
159
+ "URL",
160
+ "Intl",
161
+ "parseInt",
162
+ "parseFloat",
163
+ "isNaN",
164
+ "Error",
165
+ "undefined",
166
+ "NaN",
167
+ "Infinity",
168
+ "crypto",
169
+ "Symbol",
170
+ "Reflect",
171
+ "alert",
172
+ "confirm",
173
+ "prompt",
174
+ "encodeURIComponent",
175
+ "decodeURIComponent",
176
+ "structuredClone",
177
+ "Blob",
178
+ "File",
179
+ "FileReader",
180
+ "Image",
181
+ "Audio",
182
+ "AbortController",
183
+ "Event",
184
+ "CustomEvent",
185
+ "globalThis",
186
+ "arguments",
187
+ "RegExp",
188
+ "Function",
189
+ ]);
190
+ function bindPattern(pattern, scope) {
191
+ if (isNode(pattern) === false)
192
+ return;
193
+ switch (pattern.type) {
194
+ case "Identifier": {
195
+ const name = nameOf(pattern);
196
+ if (name !== undefined)
197
+ scope.add(name);
198
+ return;
199
+ }
200
+ case "ObjectPattern":
201
+ for (const p of nodesOf(pattern.properties))
202
+ bindPattern(p.type === "RestElement" ? p.argument : p.value, scope);
203
+ return;
204
+ case "ArrayPattern":
205
+ for (const e of nodesOf(pattern.elements))
206
+ bindPattern(e, scope);
207
+ return;
208
+ case "AssignmentPattern":
209
+ bindPattern(pattern.left, scope);
210
+ return;
211
+ case "RestElement":
212
+ bindPattern(pattern.argument, scope);
213
+ return;
214
+ }
215
+ }
216
+ function hoist(statements, scope) {
217
+ for (const st of statements) {
218
+ switch (st.type) {
219
+ case "FunctionDeclaration":
220
+ case "ClassDeclaration": {
221
+ const name = nameOf(st.id);
222
+ if (name !== undefined)
223
+ scope.add(name);
224
+ break;
225
+ }
226
+ case "VariableDeclaration":
227
+ for (const d of nodesOf(st.declarations))
228
+ bindPattern(d.id, scope);
229
+ break;
230
+ case "ImportDeclaration":
231
+ for (const sp of nodesOf(st.specifiers)) {
232
+ const name = nameOf(sp.local);
233
+ if (name !== undefined)
234
+ scope.add(name);
235
+ }
236
+ break;
237
+ case "ExportNamedDeclaration":
238
+ if (isNode(st.declaration))
239
+ hoist([st.declaration], scope);
240
+ break;
241
+ case "ExportDefaultDeclaration": {
242
+ const name = isNode(st.declaration) ? nameOf(st.declaration.id) : undefined;
243
+ if (name !== undefined)
244
+ scope.add(name);
245
+ break;
246
+ }
247
+ }
248
+ }
249
+ }
250
+ function scopeOf(node) {
251
+ switch (node.type) {
252
+ case "Program":
253
+ case "BlockStatement":
254
+ case "StaticBlock": {
255
+ const scope = new Set();
256
+ hoist(nodesOf(node.body), scope);
257
+ return scope;
258
+ }
259
+ case "SwitchStatement": {
260
+ const scope = new Set();
261
+ for (const c of nodesOf(node.cases))
262
+ hoist(nodesOf(c.consequent), scope);
263
+ return scope;
264
+ }
265
+ case "FunctionDeclaration":
266
+ case "FunctionExpression":
267
+ case "ArrowFunctionExpression": {
268
+ const scope = new Set();
269
+ for (const p of nodesOf(node.params))
270
+ bindPattern(p, scope);
271
+ const name = nameOf(node.id);
272
+ if (name !== undefined)
273
+ scope.add(name);
274
+ if (isNode(node.body) && node.body.type === "BlockStatement")
275
+ hoist(nodesOf(node.body.body), scope);
276
+ return scope;
277
+ }
278
+ case "ClassExpression": {
279
+ const scope = new Set();
280
+ const name = nameOf(node.id);
281
+ if (name !== undefined)
282
+ scope.add(name);
283
+ return scope;
284
+ }
285
+ case "ForStatement":
286
+ case "ForOfStatement":
287
+ case "ForInStatement": {
288
+ const scope = new Set();
289
+ const init = node.type === "ForStatement" ? node.init : node.left;
290
+ if (isNode(init) && init.type === "VariableDeclaration")
291
+ for (const d of nodesOf(init.declarations))
292
+ bindPattern(d.id, scope);
293
+ return scope;
294
+ }
295
+ case "CatchClause": {
296
+ const scope = new Set();
297
+ bindPattern(node.param, scope);
298
+ return scope;
299
+ }
300
+ }
301
+ return undefined;
302
+ }
303
+ function isNotARead(parent, key) {
304
+ const computed = parent.computed === true;
305
+ switch (parent.type) {
306
+ case "VariableDeclarator":
307
+ return key === "id";
308
+ case "FunctionDeclaration":
309
+ case "FunctionExpression":
310
+ case "ArrowFunctionExpression":
311
+ return key === "params" || key === "id";
312
+ case "ClassDeclaration":
313
+ case "ClassExpression":
314
+ return key === "id";
315
+ case "MemberExpression":
316
+ return key === "property" && computed === false;
317
+ case "Property":
318
+ return key === "key" && computed === false && parent.shorthand !== true;
319
+ case "PropertyDefinition":
320
+ case "MethodDefinition":
321
+ return key === "key" && computed === false;
322
+ case "AssignmentPattern":
323
+ return key === "left";
324
+ case "CatchClause":
325
+ return key === "param";
326
+ case "ObjectPattern":
327
+ case "ArrayPattern":
328
+ case "RestElement":
329
+ case "ImportSpecifier":
330
+ case "ImportDefaultSpecifier":
331
+ case "ImportNamespaceSpecifier":
332
+ case "ExportSpecifier":
333
+ case "LabeledStatement":
334
+ case "BreakStatement":
335
+ case "ContinueStatement":
336
+ case "MetaProperty":
337
+ return true;
338
+ }
339
+ return false;
340
+ }
341
+ function bound(scopes, name) {
342
+ return scopes.some((s) => s.has(name));
343
+ }
344
+ function containsReturn(node) {
345
+ if (node.type === "ReturnStatement")
346
+ return true;
347
+ return childrenOf(node).some(({ child }) => containsReturn(child));
348
+ }
349
+ export function freeIdentifiers(source) {
350
+ const rProgram = parse(source);
351
+ if (rProgram.isErr())
352
+ return Result.Err(rProgram.Err());
353
+ const program = rProgram.Ok();
354
+ const found = [];
355
+ function visit(args) {
356
+ const { node, at } = args;
357
+ const own = scopeOf(node);
358
+ const scopes = own === undefined ? args.scopes : [...args.scopes, own];
359
+ if (node.type === "Identifier") {
360
+ const name = nameOf(node);
361
+ if (name === undefined)
362
+ return;
363
+ const notARead = at !== undefined && isNotARead(at.parent, at.key);
364
+ if (notARead === false && GLOBALS.has(name) === false && bound(scopes, name) === false)
365
+ found.push(name);
366
+ return;
367
+ }
368
+ if (node.type === "JSXIdentifier" && at !== undefined && at.parent.type === "JSXOpeningElement" && at.key === "name") {
369
+ const name = nameOf(node);
370
+ if (name !== undefined && /^[A-Z]/.test(name) && bound(scopes, name) === false)
371
+ found.push(`<${name}>`);
372
+ }
373
+ for (const { key, child } of childrenOf(node))
374
+ visit({ node: child, scopes, at: { parent: node, key } });
375
+ }
376
+ visit({ node: program, scopes: [] });
377
+ for (const st of nodesOf(program.body)) {
378
+ const decl = st.type === "ExportDefaultDeclaration" || st.type === "ExportNamedDeclaration" ? st.declaration : st;
379
+ if (isNode(decl) === false || decl.type !== "FunctionDeclaration")
380
+ continue;
381
+ const name = nameOf(decl.id);
382
+ if (name === undefined || /^[A-Z]/.test(name) === false)
383
+ continue;
384
+ if (isNode(decl.body) && containsReturn(decl.body) === false)
385
+ found.push(`${name} has no return`);
386
+ }
387
+ return Result.Ok([...new Set(found)]);
388
+ }
389
+ //# sourceMappingURL=draft-variation-ast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draft-variation-ast.js","sourceRoot":"","sources":["../../jsr/intern/draft-variation-ast.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import type { AutofixAndCheck } from "./draft-lane-autofix.js";
2
+ import type { DraftModelCall, DraftModelUsage } from "./draft-lane-classify.js";
3
+ import { type HollowedFunction } from "./draft-variation-ast.js";
4
+ export declare const VARIATION_MAX_HOLES = 4;
5
+ export declare const VARIATION_FILL_ATTEMPTS = 3;
6
+ export declare const VARIATION_MAX_TOKENS = 600;
7
+ export declare const VARIATION_DOC_HEAD = "# vibes.diy quick reference: small Fireproof apps\n\nRules every example follows:\n- Components come from `@vibes.diy/look` (Card, Badge, Button, Input); classes are semantic tokens (`bg-background`, `text-muted-foreground`), never hex colors.\n- Records are documents with a `type`; reads are `useLiveQuery`, writes are `database.put({ type, ..., createdAt: Date.now() })`.\n- Copy is specific and friendly; a helper does one thing and returns a value.\n\n## Example\n\n```jsx\n";
8
+ export interface VariationEvent {
9
+ readonly step: "hollowed" | "shaped" | "filled" | "settled";
10
+ readonly data: Readonly<Record<string, unknown>>;
11
+ }
12
+ export interface VaryDraftOptions {
13
+ readonly vfs: ReadonlyMap<string, string>;
14
+ readonly sentence: string;
15
+ readonly callModel: DraftModelCall;
16
+ readonly autofixAndCheck: AutofixAndCheck;
17
+ readonly deadlineMs: number;
18
+ readonly model?: string;
19
+ readonly log?: (event: VariationEvent) => void;
20
+ readonly random?: () => number;
21
+ }
22
+ export interface VaryDraftResult {
23
+ readonly vfs: ReadonlyMap<string, string>;
24
+ readonly notes: readonly string[];
25
+ readonly varied: boolean;
26
+ readonly holes: readonly string[];
27
+ readonly restored: readonly string[];
28
+ readonly usage: readonly DraftModelUsage[];
29
+ }
30
+ interface Outline {
31
+ readonly title: string;
32
+ readonly tagline: string;
33
+ readonly purposes: ReadonlyMap<string, string>;
34
+ }
35
+ export declare function fallbackPurpose(hole: Pick<HollowedFunction, "name" | "params">): string;
36
+ export declare function stripFence(text: string): string;
37
+ export declare function parseShapeReply(text: string, holes: readonly HollowedFunction[]): Outline;
38
+ export declare function composeFillPrompt(o: {
39
+ readonly template: string;
40
+ readonly hole: HollowedFunction;
41
+ readonly holes: readonly HollowedFunction[];
42
+ readonly purposes: ReadonlyMap<string, string>;
43
+ readonly nonce: string;
44
+ }): string;
45
+ export declare function varyDraft(opts: VaryDraftOptions): Promise<VaryDraftResult>;
46
+ export {};
@@ -0,0 +1,249 @@
1
+ import { Result, exception2Result } from "@adviser/cement";
2
+ import { DEFAULT_DRAFT_BUILDER_MODEL } from "./draft-lane-config.js";
3
+ import { fillHole, freeIdentifiers, hollowLeafFunctions, holeMarker } from "./draft-variation-ast.js";
4
+ export const VARIATION_MAX_HOLES = 4;
5
+ export const VARIATION_FILL_ATTEMPTS = 3;
6
+ export const VARIATION_MAX_TOKENS = 600;
7
+ const SHAPE_TEMPLATE_CHARS = 9000;
8
+ const PURPOSE_CHARS = 160;
9
+ const VOICES = ["playful", "calm", "bold", "warm"];
10
+ export const VARIATION_DOC_HEAD = `# vibes.diy quick reference: small Fireproof apps
11
+
12
+ Rules every example follows:
13
+ - Components come from \`@vibes.diy/look\` (Card, Badge, Button, Input); classes are semantic tokens (\`bg-background\`, \`text-muted-foreground\`), never hex colors.
14
+ - Records are documents with a \`type\`; reads are \`useLiveQuery\`, writes are \`database.put({ type, ..., createdAt: Date.now() })\`.
15
+ - Copy is specific and friendly; a helper does one thing and returns a value.
16
+
17
+ ## Example
18
+
19
+ \`\`\`jsx
20
+ `;
21
+ const SHAPE_SYSTEM = "You compose a vibes.diy starter. Reply with exactly one JSON object and nothing else, of the shape " +
22
+ '{"title": "<at most 40 characters>", "tagline": "<at most 90 characters>", "purposes": {"<function name>": "<one sentence>"}}. ' +
23
+ "For each function name, write one specific sentence saying what it does in this app, in the voice given, so that the rest of the file works as written.";
24
+ const OTHER_HOLE = "// (see the next example)";
25
+ const REPLY_ASK = "Reply with ONLY the statements that replace the /* FILL */ comment.";
26
+ function unchanged(opts, note, usage) {
27
+ return { vfs: opts.vfs, notes: [note], varied: false, holes: [], restored: [], usage };
28
+ }
29
+ function nonce(random) {
30
+ return ` (variant #${1000 + Math.floor(random() * 9000)})`;
31
+ }
32
+ function voiceOf(random) {
33
+ const index = Math.min(VOICES.length - 1, Math.floor(random() * VOICES.length));
34
+ return VOICES[index];
35
+ }
36
+ export function fallbackPurpose(hole) {
37
+ return `implement ${hole.name}(${hole.params}) so the rest of this file works exactly as written`;
38
+ }
39
+ async function ask(ctx, content) {
40
+ const messages = content.system === undefined
41
+ ? [{ role: "user", content: content.user }]
42
+ : [
43
+ { role: "system", content: content.system },
44
+ { role: "user", content: content.user },
45
+ ];
46
+ const reply = await Promise.resolve()
47
+ .then(function invoke() {
48
+ return ctx.opts.callModel({ model: ctx.model, messages, maxTokens: VARIATION_MAX_TOKENS, signal: ctx.signal });
49
+ })
50
+ .then(function settle(r) {
51
+ return r;
52
+ }, function failed(e) {
53
+ return Result.Err(e instanceof Error ? e : new Error(String(e)));
54
+ });
55
+ const spent = reply.isOk() ? reply.Ok().usage : undefined;
56
+ if (spent !== undefined)
57
+ ctx.usage.push(spent);
58
+ return reply;
59
+ }
60
+ export function stripFence(text) {
61
+ return text
62
+ .trim()
63
+ .replace(/^```[a-z]*\n/, "")
64
+ .replace(/\n```$/, "");
65
+ }
66
+ function isRecord(value) {
67
+ return typeof value === "object" && value !== null && Array.isArray(value) === false;
68
+ }
69
+ function stringField(value, max) {
70
+ return typeof value === "string" ? value.trim().slice(0, max) : "";
71
+ }
72
+ export function parseShapeReply(text, holes) {
73
+ const body = stripFence(text);
74
+ const start = body.indexOf("{");
75
+ const end = body.lastIndexOf("}");
76
+ const json = start >= 0 && end > start ? body.slice(start, end + 1) : body;
77
+ const parsed = exception2Result(() => JSON.parse(json));
78
+ const answer = parsed.isOk() && isRecord(parsed.Ok()) ? parsed.Ok() : {};
79
+ const given = isRecord(answer.purposes) ? answer.purposes : {};
80
+ const purposes = new Map();
81
+ for (const hole of holes) {
82
+ const said = stringField(given[hole.name], PURPOSE_CHARS);
83
+ purposes.set(hole.name, said.length > 0 ? said : fallbackPurpose(hole).slice(0, PURPOSE_CHARS));
84
+ }
85
+ return { title: stringField(answer.title, 40), tagline: stringField(answer.tagline, 90), purposes };
86
+ }
87
+ async function shape(ctx, template, holes) {
88
+ const functions = holes.map((h) => `${h.name}(${h.params})`).join(", ");
89
+ const user = `App: ${ctx.opts.sentence}\nVoice: ${voiceOf(ctx.random)}\nFunctions: ${functions}\n\n` +
90
+ `The file:\n${template.slice(0, SHAPE_TEMPLATE_CHARS)}${nonce(ctx.random)}`;
91
+ const reply = await ask(ctx, { system: SHAPE_SYSTEM, user });
92
+ return parseShapeReply(reply.isOk() ? reply.Ok().text : "", holes);
93
+ }
94
+ export function composeFillPrompt(o) {
95
+ let example = o.template;
96
+ for (const other of o.holes) {
97
+ if (other.name === o.hole.name)
98
+ continue;
99
+ example = example.split(holeMarker(other.name)).join(OTHER_HOLE);
100
+ }
101
+ const purpose = o.purposes.get(o.hole.name) ?? fallbackPurpose(o.hole);
102
+ example = example.split(holeMarker(o.hole.name)).join(`/* FILL: ${purpose}${o.nonce} */`);
103
+ const after = o.holes.map((h) => `- \`${h.name}\` ${o.purposes.get(h.name) ?? fallbackPurpose(h)}`).join("\n");
104
+ return `${VARIATION_DOC_HEAD}${example}\n\`\`\`\n\nWhat this example does:\n${after}\n\n${REPLY_ASK}`;
105
+ }
106
+ function restoredExcept(template, holes, except) {
107
+ let out = template;
108
+ for (const hole of holes) {
109
+ if (hole.name === except)
110
+ continue;
111
+ const filled = fillHole({ template: out, name: hole.name, body: hole.body });
112
+ if (filled.isErr())
113
+ return Result.Err(filled.Err());
114
+ out = filled.Ok();
115
+ }
116
+ return Result.Ok(out);
117
+ }
118
+ function passesGate(ctx, base, hole, body) {
119
+ const filled = fillHole({ template: base, name: hole.name, body });
120
+ if (filled.isErr())
121
+ return false;
122
+ const vfs = new Map(ctx.opts.vfs);
123
+ vfs.set("/App.jsx", filled.Ok());
124
+ if (ctx.opts.autofixAndCheck(vfs).opens === false)
125
+ return false;
126
+ const free = freeIdentifiers(filled.Ok());
127
+ return free.isOk() && free.Ok().length === 0;
128
+ }
129
+ function bodyFromReply(text, indent) {
130
+ const body = stripFence(text).replace(/\n+$/, "");
131
+ if (body.length === 0)
132
+ return "";
133
+ return body.startsWith(" ") || body.startsWith("\t") ? body : indent + body;
134
+ }
135
+ async function fillOne(ctx, o) {
136
+ const base = restoredExcept(o.template, o.holes, o.hole.name);
137
+ if (base.isErr())
138
+ return { hole: o.hole, body: undefined, attempts: 0 };
139
+ const prompt = composeFillPrompt({
140
+ template: o.template,
141
+ hole: o.hole,
142
+ holes: o.holes,
143
+ purposes: o.outline.purposes,
144
+ nonce: nonce(ctx.random),
145
+ });
146
+ let attempts = 0;
147
+ while (attempts < VARIATION_FILL_ATTEMPTS && ctx.signal.aborted === false) {
148
+ attempts += 1;
149
+ const reply = await ask(ctx, { user: prompt });
150
+ if (reply.isErr())
151
+ continue;
152
+ const body = bodyFromReply(reply.Ok().text, o.hole.indent);
153
+ if (body.length > 0 && passesGate(ctx, base.Ok(), o.hole, body))
154
+ return { hole: o.hole, body, attempts };
155
+ }
156
+ return { hole: o.hole, body: undefined, attempts };
157
+ }
158
+ async function runPass(ctx) {
159
+ const { opts } = ctx;
160
+ const source = opts.vfs.get("/App.jsx");
161
+ if (source === undefined)
162
+ return unchanged(opts, "variation: skipped, the draft has no /App.jsx", ctx.usage);
163
+ const hollowed = hollowLeafFunctions({ source, max: VARIATION_MAX_HOLES });
164
+ if (hollowed.isErr())
165
+ return unchanged(opts, `variation: skipped, ${hollowed.Err().message}`, ctx.usage);
166
+ const { template, holes } = hollowed.Ok();
167
+ if (holes.length === 0)
168
+ return unchanged(opts, "variation: skipped, no leaf functions to vary", ctx.usage);
169
+ opts.log?.({ step: "hollowed", data: { holes: holes.map((h) => h.name) } });
170
+ const outline = await shape(ctx, template, holes);
171
+ opts.log?.({ step: "shaped", data: { title: outline.title, tagline: outline.tagline } });
172
+ const fills = await Promise.all(holes.map((hole) => fillOne(ctx, { template, hole, outline, holes })));
173
+ opts.log?.({
174
+ step: "filled",
175
+ data: { attempts: fills.map((f) => ({ name: f.hole.name, attempts: f.attempts, ok: f.body !== undefined })) },
176
+ });
177
+ let assembled = template;
178
+ const varied = [];
179
+ const restored = [];
180
+ for (const fill of fills) {
181
+ const body = fill.body ?? fill.hole.body;
182
+ if (fill.body === undefined)
183
+ restored.push(fill.hole.name);
184
+ else
185
+ varied.push(fill.hole.name);
186
+ const next = fillHole({ template: assembled, name: fill.hole.name, body });
187
+ if (next.isErr())
188
+ return unchanged(opts, `variation: kept the original, reassembly failed at ${fill.hole.name}`, ctx.usage);
189
+ assembled = next.Ok();
190
+ }
191
+ if (varied.length === 0)
192
+ return {
193
+ vfs: opts.vfs,
194
+ notes: ["variation: kept the original, no fill passed its gate"],
195
+ varied: false,
196
+ holes: [],
197
+ restored,
198
+ usage: ctx.usage,
199
+ };
200
+ const full = new Map(opts.vfs);
201
+ full.set("/App.jsx", assembled);
202
+ const checked = opts.autofixAndCheck(full);
203
+ if (checked.opens === false)
204
+ return {
205
+ vfs: opts.vfs,
206
+ notes: [`variation: kept the original, the varied draft does not open (${checked.findings.slice(0, 3).join("; ")})`],
207
+ varied: false,
208
+ holes: [],
209
+ restored,
210
+ usage: ctx.usage,
211
+ };
212
+ const notes = [
213
+ `variation: varied ${varied.join(", ")}`,
214
+ ...(restored.length > 0 ? [`variation: restored ${restored.join(", ")}`] : []),
215
+ ];
216
+ return { vfs: checked.vfs, notes, varied: true, holes: varied, restored, usage: ctx.usage };
217
+ }
218
+ export async function varyDraft(opts) {
219
+ const abort = new AbortController();
220
+ const usage = [];
221
+ const ctx = {
222
+ opts,
223
+ model: opts.model ?? DEFAULT_DRAFT_BUILDER_MODEL,
224
+ random: opts.random ?? Math.random,
225
+ signal: abort.signal,
226
+ usage,
227
+ };
228
+ const timer = setTimeout(function expire() {
229
+ abort.abort();
230
+ }, opts.deadlineMs);
231
+ const result = await Promise.resolve()
232
+ .then(function start() {
233
+ return runPass(ctx);
234
+ })
235
+ .then(function settle(r) {
236
+ return abort.signal.aborted
237
+ ? unchanged(opts, `variation: kept the original, past the ${opts.deadlineMs} ms deadline`, usage)
238
+ : r;
239
+ }, function failed(e) {
240
+ const message = e instanceof Error ? e.message : String(e);
241
+ return unchanged(opts, `variation: kept the original, the pass failed (${message})`, usage);
242
+ })
243
+ .finally(function disarm() {
244
+ clearTimeout(timer);
245
+ });
246
+ opts.log?.({ step: "settled", data: { varied: result.varied, holes: result.holes, restored: result.restored } });
247
+ return result;
248
+ }
249
+ //# sourceMappingURL=draft-variation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draft-variation.js","sourceRoot":"","sources":["../../jsr/intern/draft-variation.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vibes.diy/api-svc",
3
- "version": "14.3.35",
3
+ "version": "14.3.36",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "main": "./index.js",
@@ -36,20 +36,20 @@
36
36
  "@neondatabase/serverless": "~1.1.0",
37
37
  "@noble/hashes": "~2.4.0",
38
38
  "@shadcn/lint": "~0.1.3",
39
- "@vibes.diy/api-pkg": "14.3.35",
40
- "@vibes.diy/api-sql": "14.3.35",
41
- "@vibes.diy/api-types": "14.3.35",
42
- "@vibes.diy/call-ai-v2": "14.3.35",
43
- "@vibes.diy/identity": "14.3.35",
44
- "@vibes.diy/look": "14.3.35",
45
- "@vibes.diy/prompts": "14.3.35",
46
- "@vibes.diy/vibe-db-explorer": "14.3.35",
47
- "@vibes.diy/vibe-runtime": "14.3.35",
48
- "@vibes.diy/vibe-types": "14.3.35",
39
+ "@vibes.diy/api-pkg": "14.3.36",
40
+ "@vibes.diy/api-sql": "14.3.36",
41
+ "@vibes.diy/api-types": "14.3.36",
42
+ "@vibes.diy/call-ai-v2": "14.3.36",
43
+ "@vibes.diy/identity": "14.3.36",
44
+ "@vibes.diy/look": "14.3.36",
45
+ "@vibes.diy/prompts": "14.3.36",
46
+ "@vibes.diy/vibe-db-explorer": "14.3.36",
47
+ "@vibes.diy/vibe-runtime": "14.3.36",
48
+ "@vibes.diy/vibe-types": "14.3.36",
49
49
  "acorn": "~8.17.0",
50
50
  "acorn-jsx": "~5.3.2",
51
51
  "arktype": "~2.2.3",
52
- "call-ai": "14.3.35",
52
+ "call-ai": "14.3.36",
53
53
  "charwise": "~3.0.1",
54
54
  "cookie": "~2.0.1",
55
55
  "csv-parse": "~7.0.2",