@vibes.diy/api-svc 14.3.88 → 14.3.91
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/create-handler.d.ts +1 -0
- package/create-handler.js +1 -0
- package/create-handler.js.map +1 -1
- package/intern/agent-belt.d.ts +2 -3
- package/intern/agent-belt.js +6 -28
- package/intern/agent-belt.js.map +1 -1
- package/intern/agent-session-instruction.d.ts +3 -2
- package/intern/agent-session-instruction.js +3 -1
- package/intern/agent-session-instruction.js.map +1 -1
- package/intern/agent-skill-catalog.d.ts +12 -0
- package/intern/agent-skill-catalog.js +26 -0
- package/intern/agent-skill-catalog.js.map +1 -0
- package/intern/capi-build-event.d.ts +3 -1
- package/intern/capi-build-event.js +18 -1
- package/intern/capi-build-event.js.map +1 -1
- package/intern/capi-lead-event.d.ts +55 -0
- package/intern/capi-lead-event.js +169 -0
- package/intern/capi-lead-event.js.map +1 -0
- package/intern/capi-lead-ledger.d.ts +11 -0
- package/intern/capi-lead-ledger.js +75 -0
- package/intern/capi-lead-ledger.js.map +1 -0
- package/intern/get-model-defaults.d.ts +1 -0
- package/intern/get-model-defaults.js +2 -1
- package/intern/get-model-defaults.js.map +1 -1
- package/intern/instant-build.d.ts +154 -0
- package/intern/instant-build.js +443 -0
- package/intern/instant-build.js.map +1 -0
- package/intern/mercury-capability-triggers.d.ts +1 -1
- package/intern/mercury-capability-triggers.js +0 -81
- package/intern/mercury-capability-triggers.js.map +1 -1
- package/intern/mercury-first-build-seam.js +1 -1
- package/intern/mercury-first-build-seam.js.map +1 -1
- package/intern/mercury-first-build.d.ts +25 -15
- package/intern/mercury-first-build.js +114 -84
- package/intern/mercury-first-build.js.map +1 -1
- package/intern/prompt-assembly.d.ts +20 -0
- package/intern/prompt-assembly.js +10 -1
- package/intern/prompt-assembly.js.map +1 -1
- package/intern/record-daily-visit.js +19 -1
- package/intern/record-daily-visit.js.map +1 -1
- package/package.json +13 -13
- package/public/codegen-turn-route.d.ts +9 -0
- package/public/codegen-turn-route.js +47 -2
- package/public/codegen-turn-route.js.map +1 -1
- package/public/ensure-user-settings.d.ts +1 -1
- package/public/ensure-user-settings.js +23 -10
- package/public/ensure-user-settings.js.map +1 -1
- package/public/handle-prompt-context.d.ts +3 -1
- package/public/handle-prompt-context.js +9 -1
- package/public/handle-prompt-context.js.map +1 -1
- package/public/handler-llm-request.d.ts +6 -1
- package/public/handler-llm-request.js +11 -9
- package/public/handler-llm-request.js.map +1 -1
- package/public/prompt-chat-section.js +1 -0
- package/public/prompt-chat-section.js.map +1 -1
- package/public/prompt-section-actions.js +24 -0
- package/public/prompt-section-actions.js.map +1 -1
- package/public/prompt-turn-types.d.ts +2 -0
- package/public/stream-assembly.d.ts +5 -2
- package/public/stream-assembly.js +5 -2
- package/public/stream-assembly.js.map +1 -1
- package/public/who-am-i.js +12 -1
- package/public/who-am-i.js.map +1 -1
- package/types.d.ts +2 -1
- package/types.js.map +1 -1
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { type Result } from "@adviser/cement";
|
|
2
|
+
import { UserSettingItem, postCapiEvent } from "@vibes.diy/api-types";
|
|
3
|
+
import { cfDrizzle, VibesApiTables } from "@vibes.diy/api-sql";
|
|
4
|
+
import { VibesApiSQLCtx } from "../types.js";
|
|
5
|
+
import type { VibesPlan } from "./autumn-plan.js";
|
|
6
|
+
import { type CapiBuildEventPlan } from "./capi-build-event.js";
|
|
7
|
+
export type CapiLeadRung = "signup" | "audience" | "paid" | "return";
|
|
8
|
+
export interface CapiLeadEventPlanInput {
|
|
9
|
+
readonly rung: CapiLeadRung;
|
|
10
|
+
readonly day?: string;
|
|
11
|
+
readonly settings: readonly UserSettingItem[];
|
|
12
|
+
readonly externalId: string;
|
|
13
|
+
readonly capiToken: string | undefined;
|
|
14
|
+
readonly pixelId: string | undefined;
|
|
15
|
+
}
|
|
16
|
+
export declare function planCapiLeadEvent(input: CapiLeadEventPlanInput): CapiBuildEventPlan | undefined;
|
|
17
|
+
export declare function shouldCreditAudience(viewerSlug: string | undefined, ownerSlug: string, vibeIdentityRouted: boolean, viewerIsStaff: boolean): boolean;
|
|
18
|
+
export declare function postCapiAudienceEvent(vctx: VibesApiSQLCtx, args: {
|
|
19
|
+
ownerHandle: string;
|
|
20
|
+
viewerUserId: string;
|
|
21
|
+
}): void;
|
|
22
|
+
export interface CapiPaidCtx {
|
|
23
|
+
readonly sql: {
|
|
24
|
+
db: ReturnType<typeof cfDrizzle>["db"];
|
|
25
|
+
tables: VibesApiTables;
|
|
26
|
+
};
|
|
27
|
+
readonly capiToken: string | undefined;
|
|
28
|
+
readonly pixelId: string | undefined;
|
|
29
|
+
readonly eventSourceUrl: string;
|
|
30
|
+
readonly readPlan?: (userId: string) => Promise<Result<VibesPlan>>;
|
|
31
|
+
readonly send?: typeof postCapiEvent;
|
|
32
|
+
}
|
|
33
|
+
export declare function postCapiPaidEvent(ctx: CapiPaidCtx, userId: string): Promise<void>;
|
|
34
|
+
export interface ShouldCreditReturnInput {
|
|
35
|
+
readonly settings: readonly UserSettingItem[];
|
|
36
|
+
readonly day: string;
|
|
37
|
+
readonly nowMs: number;
|
|
38
|
+
readonly isStaff: boolean;
|
|
39
|
+
}
|
|
40
|
+
export declare function shouldCreditReturn(input: ShouldCreditReturnInput): boolean;
|
|
41
|
+
export interface CapiReturnCtx {
|
|
42
|
+
readonly sql: {
|
|
43
|
+
db: ReturnType<typeof cfDrizzle>["db"];
|
|
44
|
+
tables: VibesApiTables;
|
|
45
|
+
};
|
|
46
|
+
readonly capiToken: string | undefined;
|
|
47
|
+
readonly pixelId: string | undefined;
|
|
48
|
+
readonly eventSourceUrl: string;
|
|
49
|
+
readonly send?: typeof postCapiEvent;
|
|
50
|
+
}
|
|
51
|
+
export declare function postCapiReturnEvent(ctx: CapiReturnCtx, args: {
|
|
52
|
+
readonly userId: string;
|
|
53
|
+
readonly settings: readonly UserSettingItem[];
|
|
54
|
+
readonly day: string;
|
|
55
|
+
}): Promise<void>;
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import { exception2Result } from "@adviser/cement";
|
|
2
|
+
import { eq } from "drizzle-orm/sql/expressions";
|
|
3
|
+
import { LEAD_POINTS, META_CLICK_WINDOW_MS, capiEventId, capiExternalId, isUserSettingContactEmail, isUserSettingMetaClickId, parseArrayWarning, postCapiEvent, userSettingItem, } from "@vibes.diy/api-types";
|
|
4
|
+
import { buildCapiBuildEvent } from "./capi-build-event.js";
|
|
5
|
+
import { claimLeadReturnDay, claimLeadRung, isLeadRungCredited, lastCreditedReturnDay } from "./capi-lead-ledger.js";
|
|
6
|
+
export function planCapiLeadEvent(input) {
|
|
7
|
+
if (input.capiToken === undefined || input.capiToken === "")
|
|
8
|
+
return undefined;
|
|
9
|
+
if (input.pixelId === undefined || input.pixelId === "")
|
|
10
|
+
return undefined;
|
|
11
|
+
const click = input.settings.find(isUserSettingMetaClickId);
|
|
12
|
+
if (click === undefined || click.fbc === "")
|
|
13
|
+
return undefined;
|
|
14
|
+
const keySuffix = input.rung === "return"
|
|
15
|
+
? input.day === undefined
|
|
16
|
+
? undefined
|
|
17
|
+
: `return:${input.externalId}:${input.day}`
|
|
18
|
+
: `${input.rung}:${input.externalId}`;
|
|
19
|
+
if (keySuffix === undefined)
|
|
20
|
+
return undefined;
|
|
21
|
+
if (input.rung === "return" ? lastCreditedReturnDay(input.settings) === input.day : isLeadRungCredited(input.settings, input.rung))
|
|
22
|
+
return undefined;
|
|
23
|
+
const contact = input.settings.find(isUserSettingContactEmail);
|
|
24
|
+
const email = contact?.verified === true ? contact.email : undefined;
|
|
25
|
+
return {
|
|
26
|
+
eventName: "Lead",
|
|
27
|
+
eventId: capiEventId("Lead", keySuffix),
|
|
28
|
+
fbc: click.fbc,
|
|
29
|
+
capiToken: input.capiToken,
|
|
30
|
+
pixelId: input.pixelId,
|
|
31
|
+
externalId: input.externalId,
|
|
32
|
+
value: LEAD_POINTS[input.rung],
|
|
33
|
+
...(email === undefined ? {} : { email }),
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
export function shouldCreditAudience(viewerSlug, ownerSlug, vibeIdentityRouted, viewerIsStaff) {
|
|
37
|
+
if (vibeIdentityRouted !== true)
|
|
38
|
+
return false;
|
|
39
|
+
if (viewerIsStaff)
|
|
40
|
+
return false;
|
|
41
|
+
return viewerSlug !== ownerSlug;
|
|
42
|
+
}
|
|
43
|
+
const AUDIENCE_SKIP_MS = 60 * 60 * 1000;
|
|
44
|
+
const audienceSkipUntil = new Map();
|
|
45
|
+
export function postCapiAudienceEvent(vctx, args) {
|
|
46
|
+
const skipUntil = audienceSkipUntil.get(args.ownerHandle);
|
|
47
|
+
if (skipUntil !== undefined && skipUntil > Date.now())
|
|
48
|
+
return;
|
|
49
|
+
const promise = (async () => {
|
|
50
|
+
if (vctx.metaCapiToken === undefined || vctx.metaCapiToken === "")
|
|
51
|
+
return;
|
|
52
|
+
if (vctx.metaPixelId === undefined || vctx.metaPixelId === "")
|
|
53
|
+
return;
|
|
54
|
+
const tHandles = vctx.sql.tables.handleBinding;
|
|
55
|
+
const maker = await vctx.sql.db
|
|
56
|
+
.select({ userId: tHandles.userId })
|
|
57
|
+
.from(tHandles)
|
|
58
|
+
.where(eq(tHandles.handle, args.ownerHandle))
|
|
59
|
+
.limit(1)
|
|
60
|
+
.then((r) => r[0]);
|
|
61
|
+
if (maker === undefined || maker.userId === undefined || maker.userId === "")
|
|
62
|
+
return;
|
|
63
|
+
if (maker.userId === args.viewerUserId)
|
|
64
|
+
return;
|
|
65
|
+
const t = vctx.sql.tables.userSettings;
|
|
66
|
+
const row = await vctx.sql.db
|
|
67
|
+
.select({ settings: t.settings })
|
|
68
|
+
.from(t)
|
|
69
|
+
.where(eq(t.userId, maker.userId))
|
|
70
|
+
.limit(1)
|
|
71
|
+
.then((r) => r[0]);
|
|
72
|
+
const { filtered: settings } = parseArrayWarning(row?.settings ?? [], userSettingItem);
|
|
73
|
+
const plan = planCapiLeadEvent({
|
|
74
|
+
rung: "audience",
|
|
75
|
+
settings,
|
|
76
|
+
externalId: await capiExternalId(maker.userId),
|
|
77
|
+
capiToken: vctx.metaCapiToken,
|
|
78
|
+
pixelId: vctx.metaPixelId,
|
|
79
|
+
});
|
|
80
|
+
if (plan === undefined || (await claimLeadRung(vctx.sql, maker.userId, "audience")) === false) {
|
|
81
|
+
audienceSkipUntil.set(args.ownerHandle, Date.now() + AUDIENCE_SKIP_MS);
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
const payload = await buildCapiBuildEvent({
|
|
85
|
+
plan,
|
|
86
|
+
eventSourceUrl: vctx.params.vibes.env.VIBES_DIY_PUBLIC_BASE_URL,
|
|
87
|
+
});
|
|
88
|
+
await (vctx.metaCapiSend ?? postCapiEvent)(plan.pixelId, payload, plan.eventName);
|
|
89
|
+
})().catch((e) => {
|
|
90
|
+
console.error("[capi] audience event failed", e);
|
|
91
|
+
});
|
|
92
|
+
vctx.waitUntil?.(promise);
|
|
93
|
+
}
|
|
94
|
+
export async function postCapiPaidEvent(ctx, userId) {
|
|
95
|
+
const r = await exception2Result(async () => {
|
|
96
|
+
if (ctx.capiToken === undefined || ctx.capiToken === "")
|
|
97
|
+
return;
|
|
98
|
+
if (ctx.pixelId === undefined || ctx.pixelId === "")
|
|
99
|
+
return;
|
|
100
|
+
if (ctx.readPlan === undefined) {
|
|
101
|
+
console.warn("[capi] paid rung dark — no Autumn reader on this deployment");
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
const rPlan = await ctx.readPlan(userId);
|
|
105
|
+
if (rPlan.isErr()) {
|
|
106
|
+
console.error("[capi] paid plan read failed", rPlan.Err());
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
if (rPlan.Ok() !== "plus")
|
|
110
|
+
return;
|
|
111
|
+
const t = ctx.sql.tables.userSettings;
|
|
112
|
+
const row = await ctx.sql.db
|
|
113
|
+
.select({ settings: t.settings })
|
|
114
|
+
.from(t)
|
|
115
|
+
.where(eq(t.userId, userId))
|
|
116
|
+
.limit(1)
|
|
117
|
+
.then((r) => r[0]);
|
|
118
|
+
const { filtered: settings } = parseArrayWarning(row?.settings ?? [], userSettingItem);
|
|
119
|
+
const plan = planCapiLeadEvent({
|
|
120
|
+
rung: "paid",
|
|
121
|
+
settings,
|
|
122
|
+
externalId: await capiExternalId(userId),
|
|
123
|
+
capiToken: ctx.capiToken,
|
|
124
|
+
pixelId: ctx.pixelId,
|
|
125
|
+
});
|
|
126
|
+
if (plan === undefined)
|
|
127
|
+
return;
|
|
128
|
+
if ((await claimLeadRung(ctx.sql, userId, "paid")) === false)
|
|
129
|
+
return;
|
|
130
|
+
const payload = await buildCapiBuildEvent({ plan, eventSourceUrl: ctx.eventSourceUrl });
|
|
131
|
+
await (ctx.send ?? postCapiEvent)(plan.pixelId, payload, plan.eventName);
|
|
132
|
+
});
|
|
133
|
+
if (r.isErr())
|
|
134
|
+
console.error("[capi] paid event failed", r.Err());
|
|
135
|
+
}
|
|
136
|
+
export function shouldCreditReturn(input) {
|
|
137
|
+
if (input.isStaff)
|
|
138
|
+
return false;
|
|
139
|
+
if (Number.isFinite(input.nowMs) === false)
|
|
140
|
+
return false;
|
|
141
|
+
const click = input.settings.find(isUserSettingMetaClickId);
|
|
142
|
+
if (click === undefined || click.fbc === "")
|
|
143
|
+
return false;
|
|
144
|
+
if (input.nowMs - click.clickedAt > META_CLICK_WINDOW_MS)
|
|
145
|
+
return false;
|
|
146
|
+
const clickDay = new Date(click.clickedAt).toISOString().slice(0, 10);
|
|
147
|
+
return input.day > clickDay;
|
|
148
|
+
}
|
|
149
|
+
export async function postCapiReturnEvent(ctx, args) {
|
|
150
|
+
const r = await exception2Result(async () => {
|
|
151
|
+
const plan = planCapiLeadEvent({
|
|
152
|
+
rung: "return",
|
|
153
|
+
day: args.day,
|
|
154
|
+
settings: args.settings,
|
|
155
|
+
externalId: await capiExternalId(args.userId),
|
|
156
|
+
capiToken: ctx.capiToken,
|
|
157
|
+
pixelId: ctx.pixelId,
|
|
158
|
+
});
|
|
159
|
+
if (plan === undefined)
|
|
160
|
+
return;
|
|
161
|
+
if ((await claimLeadReturnDay(ctx.sql, args.userId, args.day)) === false)
|
|
162
|
+
return;
|
|
163
|
+
const payload = await buildCapiBuildEvent({ plan, eventSourceUrl: ctx.eventSourceUrl });
|
|
164
|
+
await (ctx.send ?? postCapiEvent)(plan.pixelId, payload, plan.eventName);
|
|
165
|
+
});
|
|
166
|
+
if (r.isErr())
|
|
167
|
+
console.error("[capi] return event failed", r.Err());
|
|
168
|
+
}
|
|
169
|
+
//# sourceMappingURL=capi-lead-event.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capi-lead-event.js","sourceRoot":"","sources":["../../jsr/intern/capi-lead-event.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { UserSettingItem } from "@vibes.diy/api-types";
|
|
2
|
+
import { cfDrizzle, VibesApiTables } from "@vibes.diy/api-sql";
|
|
3
|
+
export type CapiLedgerRung = "signup" | "revise" | "audience" | "paid";
|
|
4
|
+
export interface CapiLedgerSql {
|
|
5
|
+
readonly db: ReturnType<typeof cfDrizzle>["db"];
|
|
6
|
+
readonly tables: VibesApiTables;
|
|
7
|
+
}
|
|
8
|
+
export declare function isLeadRungCredited(settings: readonly UserSettingItem[], rung: CapiLedgerRung): boolean;
|
|
9
|
+
export declare function claimLeadRung(sql: CapiLedgerSql, userId: string, rung: CapiLedgerRung): Promise<boolean>;
|
|
10
|
+
export declare function lastCreditedReturnDay(settings: readonly UserSettingItem[]): string | undefined;
|
|
11
|
+
export declare function claimLeadReturnDay(sql: CapiLedgerSql, userId: string, day: string): Promise<boolean>;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { and, eq } from "drizzle-orm/sql/expressions";
|
|
2
|
+
import { isUserSettingCapiLeadCredited, parseArrayWarning, userSettingItem } from "@vibes.diy/api-types";
|
|
3
|
+
export function isLeadRungCredited(settings, rung) {
|
|
4
|
+
return settings.find(isUserSettingCapiLeadCredited)?.rungs.includes(rung) === true;
|
|
5
|
+
}
|
|
6
|
+
export async function claimLeadRung(sql, userId, rung) {
|
|
7
|
+
const t = sql.tables.userSettings;
|
|
8
|
+
const row = await sql.db
|
|
9
|
+
.select({ settings: t.settings })
|
|
10
|
+
.from(t)
|
|
11
|
+
.where(eq(t.userId, userId))
|
|
12
|
+
.limit(1)
|
|
13
|
+
.then((r) => r[0]);
|
|
14
|
+
if (row === undefined)
|
|
15
|
+
return false;
|
|
16
|
+
const { filtered: settings } = parseArrayWarning(row.settings ?? [], userSettingItem);
|
|
17
|
+
if (isLeadRungCredited(settings, rung))
|
|
18
|
+
return false;
|
|
19
|
+
const prior = settings.find(isUserSettingCapiLeadCredited)?.rungs ?? [];
|
|
20
|
+
const now = new Date().toISOString();
|
|
21
|
+
const claimId = crypto.randomUUID();
|
|
22
|
+
const next = { type: "capiLeadCredited", rungs: [...prior, rung], updatedAt: now, claimId };
|
|
23
|
+
await sql.db
|
|
24
|
+
.update(t)
|
|
25
|
+
.set({ settings: [...settings.filter((s) => s.type !== "capiLeadCredited"), next], updated: now })
|
|
26
|
+
.where(and(eq(t.userId, userId), eq(t.settings, row.settings)));
|
|
27
|
+
const after = await sql.db
|
|
28
|
+
.select({ settings: t.settings })
|
|
29
|
+
.from(t)
|
|
30
|
+
.where(eq(t.userId, userId))
|
|
31
|
+
.limit(1)
|
|
32
|
+
.then((r) => r[0]);
|
|
33
|
+
const { filtered: afterSettings } = parseArrayWarning(after?.settings ?? [], userSettingItem);
|
|
34
|
+
return afterSettings.find(isUserSettingCapiLeadCredited)?.claimId === claimId;
|
|
35
|
+
}
|
|
36
|
+
export function lastCreditedReturnDay(settings) {
|
|
37
|
+
return settings.find(isUserSettingCapiLeadCredited)?.returnDay;
|
|
38
|
+
}
|
|
39
|
+
export async function claimLeadReturnDay(sql, userId, day) {
|
|
40
|
+
const t = sql.tables.userSettings;
|
|
41
|
+
const row = await sql.db
|
|
42
|
+
.select({ settings: t.settings })
|
|
43
|
+
.from(t)
|
|
44
|
+
.where(eq(t.userId, userId))
|
|
45
|
+
.limit(1)
|
|
46
|
+
.then((r) => r[0]);
|
|
47
|
+
if (row === undefined)
|
|
48
|
+
return false;
|
|
49
|
+
const { filtered: settings } = parseArrayWarning(row.settings ?? [], userSettingItem);
|
|
50
|
+
if (lastCreditedReturnDay(settings) === day)
|
|
51
|
+
return false;
|
|
52
|
+
const prior = settings.find(isUserSettingCapiLeadCredited);
|
|
53
|
+
const now = new Date().toISOString();
|
|
54
|
+
const claimId = crypto.randomUUID();
|
|
55
|
+
const next = {
|
|
56
|
+
type: "capiLeadCredited",
|
|
57
|
+
rungs: prior?.rungs ?? [],
|
|
58
|
+
updatedAt: now,
|
|
59
|
+
returnDay: day,
|
|
60
|
+
claimId,
|
|
61
|
+
};
|
|
62
|
+
await sql.db
|
|
63
|
+
.update(t)
|
|
64
|
+
.set({ settings: [...settings.filter((s) => s.type !== "capiLeadCredited"), next], updated: now })
|
|
65
|
+
.where(and(eq(t.userId, userId), eq(t.settings, row.settings)));
|
|
66
|
+
const after = await sql.db
|
|
67
|
+
.select({ settings: t.settings })
|
|
68
|
+
.from(t)
|
|
69
|
+
.where(eq(t.userId, userId))
|
|
70
|
+
.limit(1)
|
|
71
|
+
.then((r) => r[0]);
|
|
72
|
+
const { filtered: afterSettings } = parseArrayWarning(after?.settings ?? [], userSettingItem);
|
|
73
|
+
return afterSettings.find(isUserSettingCapiLeadCredited)?.claimId === claimId;
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=capi-lead-ledger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capi-lead-ledger.js","sourceRoot":"","sources":["../../jsr/intern/capi-lead-ledger.ts"],"names":[],"mappings":"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"}
|
|
@@ -65,7 +65,7 @@ export async function getModelDefaults(ctx, { appSlug, ownerHandle }) {
|
|
|
65
65
|
]);
|
|
66
66
|
if (rDefaults.isErr())
|
|
67
67
|
return Result.Err(rDefaults);
|
|
68
|
-
const result = { ...rDefaults.Ok() };
|
|
68
|
+
const result = { ...rDefaults.Ok(), instantBuild: false };
|
|
69
69
|
if (rAccount.isErr())
|
|
70
70
|
return Result.Err(rAccount);
|
|
71
71
|
const userRow = rAccount.Ok();
|
|
@@ -90,6 +90,7 @@ export async function getModelDefaults(ctx, { appSlug, ownerHandle }) {
|
|
|
90
90
|
result.runtime = runtime;
|
|
91
91
|
if (modelDefaults.img?.model)
|
|
92
92
|
result.img = modelDefaults.img;
|
|
93
|
+
result.instantBuild = modelDefaults.instantBuild === true;
|
|
93
94
|
}
|
|
94
95
|
}
|
|
95
96
|
if (rApp !== undefined) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-model-defaults.js","sourceRoot":"","sources":["../../jsr/intern/get-model-defaults.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAEL,2BAA2B,EAC3B,2BAA2B,EAC3B,uBAAuB,EACvB,0BAA0B,EAE1B,eAAe,EACf,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,EAAE,EAAE,MAAM,6BAA6B,CAAC;AAEjD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAE5E,KAAK,UAAU,uBAAuB,CAAC,GAAmB;IACxD,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,OAAO,CAAC,KAAK,EAAE;QAAE,OAAO,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,OAAO,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC;IAKnC,MAAM,cAAc,GAAsB,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IACjF,MAAM,QAAQ,GAAG,EAA8B,CAAC;IAChD,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QACjE,IAAI,CAAC,KAAK;YAAE,OAAO,MAAM,CAAC,GAAG,CAAC,yCAAyC,KAAK,EAAE,CAAC,CAAC;QAChF,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAqB,CAAC;IACxD,CAAC;IAKD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;IACzE,IAAI,QAAQ,EAAE,CAAC;QACb,QAAQ,CAAC,QAAQ,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAqB,CAAC;IAC7D,CAAC;SAAM,CAAC;QACN,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,kBAAkB,CAAC;aACxC,IAAI,EAAE;aACN,GAAG,CAAC,4EAA4E,CAAC,CAAC;QACrF,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC;IACvC,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;IACxE,IAAI,OAAO,EAAE,CAAC;QACZ,QAAQ,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAqB,CAAC;IAC/D,CAAC;IACD,OAAO,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;AAC7B,CAAC;
|
|
1
|
+
{"version":3,"file":"get-model-defaults.js","sourceRoot":"","sources":["../../jsr/intern/get-model-defaults.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import { Result } from "@adviser/cement";
|
|
2
|
+
import { type LLMMessage, type SseUsage } from "@vibes.diy/call-ai-v2";
|
|
3
|
+
import type { VibesApiSQLCtx } from "../types.js";
|
|
4
|
+
import { type SynthLook } from "./import-synth.js";
|
|
5
|
+
export type InstantCandidateName = "mercury" | "haiku";
|
|
6
|
+
export declare const INSTANT_MERCURY_MODEL = "inception/mercury-2.5";
|
|
7
|
+
export declare const INSTANT_HAIKU_MODEL = "anthropic/claude-haiku-5.5";
|
|
8
|
+
export declare const INSTANT_MAX_OUTPUT_TOKENS = 32000;
|
|
9
|
+
export declare const INSTANT_MERCURY_CALL_MS = 40000;
|
|
10
|
+
export declare const INSTANT_HAIKU_CALL_MS = 90000;
|
|
11
|
+
export declare const INSTANT_STAGE_BUDGET_MS = 150000;
|
|
12
|
+
export declare const INSTANT_MAX_ATTEMPTS = 5;
|
|
13
|
+
export interface InstantModelChoice {
|
|
14
|
+
readonly name: InstantCandidateName;
|
|
15
|
+
readonly id: string;
|
|
16
|
+
readonly reasoning: {
|
|
17
|
+
readonly effort: "none";
|
|
18
|
+
} | {
|
|
19
|
+
readonly enabled: false;
|
|
20
|
+
};
|
|
21
|
+
readonly reasoningEffort?: string;
|
|
22
|
+
readonly callMs: number;
|
|
23
|
+
}
|
|
24
|
+
export declare function instantModelChoice(name: InstantCandidateName): InstantModelChoice;
|
|
25
|
+
export declare const INSTANT_PARAGRAPH: string;
|
|
26
|
+
export declare function composeInstantBrief(sentence: string): string;
|
|
27
|
+
export declare function composeInstantEditAsk(args: {
|
|
28
|
+
readonly instruction: string;
|
|
29
|
+
readonly vfs: ReadonlyMap<string, string>;
|
|
30
|
+
}): string;
|
|
31
|
+
export declare function appendInstantContext(systemPrompt: string, ownerHandle: string): string;
|
|
32
|
+
export declare function loadInstantSystemPrompt(vctx: VibesApiSQLCtx, args: {
|
|
33
|
+
readonly chatId: string;
|
|
34
|
+
readonly ownerHandle: string;
|
|
35
|
+
readonly userId?: string;
|
|
36
|
+
}): Promise<Result<string>>;
|
|
37
|
+
export interface ParsedCandidate {
|
|
38
|
+
readonly vfs: ReadonlyMap<string, string>;
|
|
39
|
+
readonly changed: readonly string[];
|
|
40
|
+
readonly applyErrors: readonly string[];
|
|
41
|
+
}
|
|
42
|
+
export declare function parseCandidateText(text: string, base: ReadonlyMap<string, string>): Promise<Result<ParsedCandidate>>;
|
|
43
|
+
export interface InstantGateResult {
|
|
44
|
+
readonly vfs: ReadonlyMap<string, string>;
|
|
45
|
+
readonly opens: boolean;
|
|
46
|
+
readonly findings: readonly string[];
|
|
47
|
+
readonly notes: readonly string[];
|
|
48
|
+
}
|
|
49
|
+
export declare function autofixAndCheck(args: {
|
|
50
|
+
readonly vfs: ReadonlyMap<string, string>;
|
|
51
|
+
readonly changed: readonly string[];
|
|
52
|
+
readonly look: SynthLook;
|
|
53
|
+
}): InstantGateResult;
|
|
54
|
+
export interface InstantModelRequest {
|
|
55
|
+
readonly model: InstantModelChoice;
|
|
56
|
+
readonly messages: readonly LLMMessage[];
|
|
57
|
+
readonly signal: AbortSignal;
|
|
58
|
+
}
|
|
59
|
+
export type InstantRoundUsage = SseUsage & {
|
|
60
|
+
readonly cost?: number;
|
|
61
|
+
};
|
|
62
|
+
export interface InstantModelReply {
|
|
63
|
+
readonly text: string;
|
|
64
|
+
readonly servedModel?: string;
|
|
65
|
+
readonly usage?: InstantRoundUsage;
|
|
66
|
+
}
|
|
67
|
+
export type InstantModelCall = (req: InstantModelRequest) => Promise<Result<InstantModelReply>>;
|
|
68
|
+
export declare function instantModelCallFor(vctx: Pick<VibesApiSQLCtx, "llmRequest" | "params">): InstantModelCall;
|
|
69
|
+
export interface InstantCandidateSpec {
|
|
70
|
+
readonly model: InstantModelChoice;
|
|
71
|
+
readonly messages: readonly LLMMessage[];
|
|
72
|
+
}
|
|
73
|
+
export type InstantGate = "pass" | "fail" | "cancelled";
|
|
74
|
+
export interface InstantCandidateOutcome {
|
|
75
|
+
readonly name: InstantCandidateName;
|
|
76
|
+
readonly model: string;
|
|
77
|
+
readonly gate: InstantGate;
|
|
78
|
+
readonly attempts: number;
|
|
79
|
+
readonly ms: number;
|
|
80
|
+
readonly usage: readonly InstantRoundUsage[];
|
|
81
|
+
readonly abortedInFlight: boolean;
|
|
82
|
+
readonly vfs?: ReadonlyMap<string, string>;
|
|
83
|
+
readonly changed?: readonly string[];
|
|
84
|
+
readonly findings: readonly string[];
|
|
85
|
+
readonly error?: string;
|
|
86
|
+
}
|
|
87
|
+
export declare function runInstantCandidate(args: {
|
|
88
|
+
readonly call: InstantModelCall;
|
|
89
|
+
readonly spec: InstantCandidateSpec;
|
|
90
|
+
readonly base: ReadonlyMap<string, string>;
|
|
91
|
+
readonly look: SynthLook;
|
|
92
|
+
readonly cancel: AbortSignal;
|
|
93
|
+
readonly startedAt: number;
|
|
94
|
+
readonly deadlineAt: number;
|
|
95
|
+
readonly now?: () => number;
|
|
96
|
+
readonly maxAttempts?: number;
|
|
97
|
+
}): Promise<InstantCandidateOutcome>;
|
|
98
|
+
export interface InstantRaceResult {
|
|
99
|
+
readonly winner?: InstantCandidateOutcome;
|
|
100
|
+
readonly outcomes: readonly InstantCandidateOutcome[];
|
|
101
|
+
readonly ms: number;
|
|
102
|
+
}
|
|
103
|
+
export declare function raceInstantCandidates(args: {
|
|
104
|
+
readonly run: (o: {
|
|
105
|
+
readonly spec: InstantCandidateSpec;
|
|
106
|
+
readonly cancel: AbortSignal;
|
|
107
|
+
readonly startedAt: number;
|
|
108
|
+
readonly deadlineAt: number;
|
|
109
|
+
}) => Promise<InstantCandidateOutcome>;
|
|
110
|
+
readonly specs: readonly InstantCandidateSpec[];
|
|
111
|
+
readonly budgetMs: number;
|
|
112
|
+
readonly turn?: AbortSignal;
|
|
113
|
+
readonly now?: () => number;
|
|
114
|
+
}): Promise<InstantRaceResult>;
|
|
115
|
+
export interface InstantReceipt {
|
|
116
|
+
readonly candidates: readonly {
|
|
117
|
+
readonly model: string;
|
|
118
|
+
readonly ms: number;
|
|
119
|
+
readonly gate: InstantGate;
|
|
120
|
+
readonly attempts: number;
|
|
121
|
+
readonly abortedInFlight?: true;
|
|
122
|
+
}[];
|
|
123
|
+
readonly winner?: string;
|
|
124
|
+
}
|
|
125
|
+
export declare function instantReceipt(race: InstantRaceResult): InstantReceipt;
|
|
126
|
+
export declare function instantTurnText(race: InstantRaceResult): string;
|
|
127
|
+
export declare function instantResponse(args: {
|
|
128
|
+
readonly race: InstantRaceResult;
|
|
129
|
+
readonly promptId: string;
|
|
130
|
+
}): Response;
|
|
131
|
+
export interface InstantAssembly {
|
|
132
|
+
readonly mercurySystem?: string;
|
|
133
|
+
readonly instruction: string;
|
|
134
|
+
readonly look: SynthLook;
|
|
135
|
+
readonly base: ReadonlyMap<string, string>;
|
|
136
|
+
}
|
|
137
|
+
export interface InstantBuildOutcome {
|
|
138
|
+
readonly response: Response;
|
|
139
|
+
readonly receipt: InstantReceipt;
|
|
140
|
+
readonly model: string;
|
|
141
|
+
}
|
|
142
|
+
export declare function mercuryMessages(args: {
|
|
143
|
+
readonly system: string;
|
|
144
|
+
readonly instruction: string;
|
|
145
|
+
readonly base: ReadonlyMap<string, string>;
|
|
146
|
+
}): LLMMessage[];
|
|
147
|
+
export declare function runInstantBuild(args: {
|
|
148
|
+
readonly assembly: InstantAssembly;
|
|
149
|
+
readonly haikuMessages: readonly LLMMessage[];
|
|
150
|
+
readonly call: InstantModelCall;
|
|
151
|
+
readonly promptId: string;
|
|
152
|
+
readonly turn: AbortSignal;
|
|
153
|
+
readonly budgetMs?: number;
|
|
154
|
+
}): Promise<InstantBuildOutcome>;
|