@vibes.diy/api-svc 14.3.57 → 14.3.59
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/analytics.d.ts +3 -15
- package/analytics.js +2 -18
- package/analytics.js.map +1 -1
- package/create-handler.d.ts +0 -2
- package/create-handler.js +0 -1
- package/create-handler.js.map +1 -1
- package/intern/agent-assembly.d.ts +0 -2
- package/intern/agent-assembly.js +2 -2
- package/intern/agent-assembly.js.map +1 -1
- package/intern/agent-build-tools.d.ts +0 -7
- package/intern/agent-build-tools.js +3 -38
- package/intern/agent-build-tools.js.map +1 -1
- package/intern/agent-deferred-access.d.ts +0 -13
- package/intern/agent-deferred-access.js +0 -31
- package/intern/agent-deferred-access.js.map +1 -1
- package/intern/agent-dispatcher.js +12 -85
- package/intern/agent-dispatcher.js.map +1 -1
- package/intern/agent-request-frame.d.ts +0 -10
- package/intern/agent-request-frame.js +0 -16
- package/intern/agent-request-frame.js.map +1 -1
- package/intern/agent-router.d.ts +1 -1
- package/intern/agent-router.js +1 -1
- package/intern/agent-router.js.map +1 -1
- package/intern/agent-session-instruction.d.ts +2 -2
- package/intern/agent-session-instruction.js +4 -7
- package/intern/agent-session-instruction.js.map +1 -1
- package/intern/agent-session-runtime.js +0 -6
- package/intern/agent-session-runtime.js.map +1 -1
- package/intern/agent-session.d.ts +25 -25
- package/intern/agent-session.js +1 -1
- package/intern/agent-session.js.map +1 -1
- package/intern/attach-draft-handle.d.ts +0 -1
- package/intern/attach-draft-handle.js +2 -56
- package/intern/attach-draft-handle.js.map +1 -1
- package/intern/draft-continuation.js +1 -6
- package/intern/draft-continuation.js.map +1 -1
- package/intern/guest-build-store.d.ts +0 -9
- package/intern/guest-build-store.js +1 -100
- package/intern/guest-build-store.js.map +1 -1
- package/intern/import-synth.js.map +1 -1
- package/intern/mint-job-store.d.ts +2 -64
- package/intern/mint-job-store.js +7 -180
- package/intern/mint-job-store.js.map +1 -1
- package/intern/prompt-assembly.d.ts +0 -19
- package/intern/prompt-assembly.js +2 -5
- package/intern/prompt-assembly.js.map +1 -1
- package/intern/prompt-step.js.map +1 -1
- package/intern/save-repair-io.d.ts +50 -0
- package/intern/save-repair-io.js +188 -0
- package/intern/save-repair-io.js.map +1 -0
- package/intern/save-repair.d.ts +4 -4
- package/intern/save-repair.js +4 -7
- package/intern/save-repair.js.map +1 -1
- package/intern/section-fan-out.d.ts +3 -10
- package/intern/section-fan-out.js +0 -23
- package/intern/section-fan-out.js.map +1 -1
- package/package.json +12 -12
- package/public/agent-turn-assembly.js +0 -17
- package/public/agent-turn-assembly.js.map +1 -1
- package/public/handle-prompt-context.d.ts +3 -6
- package/public/handle-prompt-context.js +3 -7
- package/public/handle-prompt-context.js.map +1 -1
- package/public/open-chat.d.ts +4 -23
- package/public/open-chat.js +26 -287
- package/public/open-chat.js.map +1 -1
- package/public/shared-mint.d.ts +0 -5
- package/public/shared-mint.js +0 -21
- package/public/shared-mint.js.map +1 -1
- package/types.d.ts +0 -2
- package/types.js.map +1 -1
- package/usage-report/codegen-delivery-alert-util.js.map +1 -1
- package/intern/draft-lane-autofix.d.ts +0 -8
- package/intern/draft-lane-autofix.js +0 -8
- package/intern/draft-lane-autofix.js.map +0 -1
- package/intern/draft-lane-classify.d.ts +0 -55
- package/intern/draft-lane-classify.js +0 -168
- package/intern/draft-lane-classify.js.map +0 -1
- package/intern/draft-lane-config.d.ts +0 -28
- package/intern/draft-lane-config.js +0 -48
- package/intern/draft-lane-config.js.map +0 -1
- package/intern/draft-lane-exports.d.ts +0 -7
- package/intern/draft-lane-exports.js +0 -104
- package/intern/draft-lane-exports.js.map +0 -1
- package/intern/draft-lane-imports.d.ts +0 -6
- package/intern/draft-lane-imports.js +0 -180
- package/intern/draft-lane-imports.js.map +0 -1
- package/intern/draft-lane-look.d.ts +0 -20
- package/intern/draft-lane-look.js +0 -78
- package/intern/draft-lane-look.js.map +0 -1
- package/intern/draft-lane-opens.d.ts +0 -6
- package/intern/draft-lane-opens.js +0 -217
- package/intern/draft-lane-opens.js.map +0 -1
- package/intern/draft-lane-parse.d.ts +0 -17
- package/intern/draft-lane-parse.js +0 -134
- package/intern/draft-lane-parse.js.map +0 -1
- package/intern/draft-lane-persist.d.ts +0 -37
- package/intern/draft-lane-persist.js +0 -136
- package/intern/draft-lane-persist.js.map +0 -1
- package/intern/draft-lane-prompt.d.ts +0 -16
- package/intern/draft-lane-prompt.js +0 -59
- package/intern/draft-lane-prompt.js.map +0 -1
- package/intern/draft-lane-settled.d.ts +0 -20
- package/intern/draft-lane-settled.js +0 -73
- package/intern/draft-lane-settled.js.map +0 -1
- package/intern/draft-lane-store.d.ts +0 -39
- package/intern/draft-lane-store.js +0 -5
- package/intern/draft-lane-store.js.map +0 -1
- package/intern/draft-lane-transport.d.ts +0 -11
- package/intern/draft-lane-transport.js +0 -61
- package/intern/draft-lane-transport.js.map +0 -1
- package/intern/draft-lane-worker.d.ts +0 -82
- package/intern/draft-lane-worker.js +0 -418
- package/intern/draft-lane-worker.js.map +0 -1
- package/intern/draft-lane.d.ts +0 -85
- package/intern/draft-lane.js +0 -245
- package/intern/draft-lane.js.map +0 -1
- package/intern/draft-note.d.ts +0 -1
- package/intern/draft-note.js +0 -13
- package/intern/draft-note.js.map +0 -1
- package/intern/draft-ready-frame.d.ts +0 -51
- package/intern/draft-ready-frame.js +0 -104
- package/intern/draft-ready-frame.js.map +0 -1
- package/intern/draft-variation-ast.d.ts +0 -26
- package/intern/draft-variation-ast.js +0 -389
- package/intern/draft-variation-ast.js.map +0 -1
- package/intern/draft-variation.d.ts +0 -46
- package/intern/draft-variation.js +0 -249
- package/intern/draft-variation.js.map +0 -1
- package/intern/guest-draft-start.d.ts +0 -25
- package/intern/guest-draft-start.js +0 -66
- package/intern/guest-draft-start.js.map +0 -1
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
import { Result, exception2Result } from "@adviser/cement";
|
|
2
|
-
import { codeFenceStart, createBlockStream, fenceFileLabel, isCodeFenceEnd, isBlockEnd, isCodeEnd, isToplevelLine, } from "@vibes.diy/call-ai-v2";
|
|
3
|
-
import { createBlockAccumulator, resolveCodeBlocks } from "./prompt-streaming.js";
|
|
4
|
-
import { draftNoteOf } from "./draft-note.js";
|
|
5
|
-
function toLines(text) {
|
|
6
|
-
const lines = text.split("\n");
|
|
7
|
-
if (lines.length > 0 && lines[lines.length - 1] === "")
|
|
8
|
-
lines.pop();
|
|
9
|
-
return lines;
|
|
10
|
-
}
|
|
11
|
-
export async function draftTextToBlocks(args) {
|
|
12
|
-
const inner = `${args.streamId}:lines`;
|
|
13
|
-
const now = new Date();
|
|
14
|
-
const lines = toLines(args.text);
|
|
15
|
-
const input = new ReadableStream({
|
|
16
|
-
start(controller) {
|
|
17
|
-
controller.enqueue({ type: "line.begin", streamId: inner, timestamp: now });
|
|
18
|
-
lines.forEach((content, index) => controller.enqueue({ type: "line.line", streamId: inner, content, lineNr: index + 1, timestamp: now }));
|
|
19
|
-
(args.usage ?? []).forEach((usage, index) => controller.enqueue({ type: "delta.usage", streamId: args.streamId, usage, deltaSeq: index, timestamp: now }));
|
|
20
|
-
controller.enqueue({ type: "line.end", streamId: inner, totalLines: lines.length, timestamp: now });
|
|
21
|
-
controller.close();
|
|
22
|
-
},
|
|
23
|
-
});
|
|
24
|
-
const out = input.pipeThrough(createBlockStream(args.streamId, inner, args.createId));
|
|
25
|
-
const collected = [];
|
|
26
|
-
const read = await exception2Result(async () => {
|
|
27
|
-
const reader = out.getReader();
|
|
28
|
-
for (;;) {
|
|
29
|
-
const next = await reader.read();
|
|
30
|
-
if (next.done === true)
|
|
31
|
-
break;
|
|
32
|
-
collected.push(next.value);
|
|
33
|
-
}
|
|
34
|
-
});
|
|
35
|
-
if (read.isErr())
|
|
36
|
-
return Result.Err(read.Err());
|
|
37
|
-
return Result.Ok(collected);
|
|
38
|
-
}
|
|
39
|
-
export function blockEndOf(msgs) {
|
|
40
|
-
const found = msgs.filter((msg) => isBlockEnd(msg));
|
|
41
|
-
return found[found.length - 1];
|
|
42
|
-
}
|
|
43
|
-
function unlabelledFence(lines) {
|
|
44
|
-
let fences = 0;
|
|
45
|
-
let inCode = false;
|
|
46
|
-
let label;
|
|
47
|
-
for (const line of lines) {
|
|
48
|
-
if (inCode) {
|
|
49
|
-
if (isCodeFenceEnd(line))
|
|
50
|
-
inCode = false;
|
|
51
|
-
continue;
|
|
52
|
-
}
|
|
53
|
-
const fence = codeFenceStart(line);
|
|
54
|
-
if (fence !== undefined) {
|
|
55
|
-
fences++;
|
|
56
|
-
if (fenceFileLabel(fence.info, label) === undefined)
|
|
57
|
-
return "the reply has a fence with no file label above it";
|
|
58
|
-
inCode = true;
|
|
59
|
-
label = undefined;
|
|
60
|
-
continue;
|
|
61
|
-
}
|
|
62
|
-
if (line.trim().length > 0)
|
|
63
|
-
label = line;
|
|
64
|
-
}
|
|
65
|
-
return fences === 0 ? "the reply has no fenced file blocks" : undefined;
|
|
66
|
-
}
|
|
67
|
-
export async function parseDraftText(text) {
|
|
68
|
-
const shape = unlabelledFence(toLines(text));
|
|
69
|
-
if (shape !== undefined)
|
|
70
|
-
return Result.Err(shape);
|
|
71
|
-
let id = 0;
|
|
72
|
-
const blocks = await draftTextToBlocks({ text, streamId: "draft-parse", createId: () => `d${++id}` });
|
|
73
|
-
if (blocks.isErr())
|
|
74
|
-
return Result.Err(blocks.Err());
|
|
75
|
-
const accumulator = createBlockAccumulator();
|
|
76
|
-
const code = [];
|
|
77
|
-
const before = [];
|
|
78
|
-
let tail = [];
|
|
79
|
-
let seenCode = false;
|
|
80
|
-
for (const msg of blocks.Ok()) {
|
|
81
|
-
const closed = accumulator.ingest(msg);
|
|
82
|
-
if (closed !== undefined)
|
|
83
|
-
code.push({ begin: closed.begin, lines: [...closed.lines], end: closed.end });
|
|
84
|
-
if (isCodeEnd(msg)) {
|
|
85
|
-
seenCode = true;
|
|
86
|
-
tail = [];
|
|
87
|
-
}
|
|
88
|
-
if (isToplevelLine(msg)) {
|
|
89
|
-
if (seenCode)
|
|
90
|
-
tail.push(msg.line);
|
|
91
|
-
else
|
|
92
|
-
before.push(msg.line);
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
const resolved = resolveCodeBlocks(code, new Map());
|
|
96
|
-
const vfs = new Map();
|
|
97
|
-
for (const file of resolved.files) {
|
|
98
|
-
if (file.type === "code-block")
|
|
99
|
-
vfs.set(file.filename, file.content);
|
|
100
|
-
}
|
|
101
|
-
const tailText = tail.join("\n").trim();
|
|
102
|
-
return Result.Ok({
|
|
103
|
-
vfs,
|
|
104
|
-
intro: before
|
|
105
|
-
.map((line) => line.trim())
|
|
106
|
-
.filter((line) => line.length > 0)
|
|
107
|
-
.join(" "),
|
|
108
|
-
tail: tailText,
|
|
109
|
-
draftNote: draftNoteOf(tailText),
|
|
110
|
-
});
|
|
111
|
-
}
|
|
112
|
-
function fenceLang(path) {
|
|
113
|
-
const ext = /\.(\w+)$/.exec(path)?.[1]?.toLowerCase() ?? "jsx";
|
|
114
|
-
if (ext === "json" || ext === "css" || ext === "tsx" || ext === "ts" || ext === "js")
|
|
115
|
-
return ext;
|
|
116
|
-
return "jsx";
|
|
117
|
-
}
|
|
118
|
-
function fileOrder(path) {
|
|
119
|
-
if (path === "/App.jsx")
|
|
120
|
-
return 0;
|
|
121
|
-
if (path === "/seed.json")
|
|
122
|
-
return 2;
|
|
123
|
-
return 1;
|
|
124
|
-
}
|
|
125
|
-
export function renderDraftText(draft) {
|
|
126
|
-
const paths = [...draft.vfs.keys()].sort((a, b) => fileOrder(a) - fileOrder(b) || a.localeCompare(b));
|
|
127
|
-
const files = paths.map((path) => {
|
|
128
|
-
const body = (draft.vfs.get(path) ?? "").replace(/\n+$/, "");
|
|
129
|
-
return `### \`${path.replace(/^\/+/, "")}\`\n\`\`\`${fenceLang(path)}\n${body}\n\`\`\``;
|
|
130
|
-
});
|
|
131
|
-
const intro = draft.intro.length > 0 ? draft.intro : "Here is the first draft.";
|
|
132
|
-
return [intro, ...files, ...(draft.tail.length > 0 ? [draft.tail] : [])].join("\n\n") + "\n";
|
|
133
|
-
}
|
|
134
|
-
//# sourceMappingURL=draft-lane-parse.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"draft-lane-parse.js","sourceRoot":"","sources":["../../jsr/intern/draft-lane-parse.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { Result } from "@adviser/cement";
|
|
2
|
-
import { type PromptAndBlockMsgs, type VerifiedGuestBuildAuth } from "@vibes.diy/api-types";
|
|
3
|
-
import type { DashAuthType, VerifiedAuthResult } from "@vibes.diy/identity";
|
|
4
|
-
import type { VibesApiSQLCtx } from "../types.js";
|
|
5
|
-
import type { DraftToPersist } from "./draft-lane.js";
|
|
6
|
-
interface PersistDraftBase {
|
|
7
|
-
readonly chatId: string;
|
|
8
|
-
readonly ownerHandle: string;
|
|
9
|
-
readonly appSlug: string;
|
|
10
|
-
readonly draft: DraftToPersist;
|
|
11
|
-
readonly promptId?: string;
|
|
12
|
-
}
|
|
13
|
-
export interface PersistAccountDraftArgs extends PersistDraftBase {
|
|
14
|
-
readonly auth: DashAuthType;
|
|
15
|
-
readonly verified: VerifiedAuthResult;
|
|
16
|
-
}
|
|
17
|
-
export interface PersistGuestDraftArgs extends PersistDraftBase {
|
|
18
|
-
readonly guest: VerifiedGuestBuildAuth;
|
|
19
|
-
}
|
|
20
|
-
export type PersistDraftArgs = PersistAccountDraftArgs | PersistGuestDraftArgs;
|
|
21
|
-
export declare function frontendDraftVfs(vfs: ReadonlyMap<string, string>): ReadonlyMap<string, string>;
|
|
22
|
-
export declare function insertSection(vctx: VibesApiSQLCtx, row: {
|
|
23
|
-
readonly chatId: string;
|
|
24
|
-
readonly promptId: string;
|
|
25
|
-
readonly blockSeq: number;
|
|
26
|
-
readonly evt: PromptAndBlockMsgs;
|
|
27
|
-
}): Promise<Result<void>>;
|
|
28
|
-
export interface PersistDraftSeams {
|
|
29
|
-
readonly insertClosingSection?: typeof insertSection;
|
|
30
|
-
}
|
|
31
|
-
export declare function persistDraftBuild(vctx: VibesApiSQLCtx, args: PersistDraftArgs, seams?: PersistDraftSeams): Promise<Result<{
|
|
32
|
-
readonly appSlug: string;
|
|
33
|
-
readonly buildId: string;
|
|
34
|
-
readonly proposedSlug?: string;
|
|
35
|
-
readonly promptId: string;
|
|
36
|
-
}>>;
|
|
37
|
-
export {};
|
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
import { Result, exception2Result } from "@adviser/cement";
|
|
2
|
-
import { isDraftOwnerHandle, isServerOnlyVibeFile, } from "@vibes.diy/api-types";
|
|
3
|
-
import { handlePromptContext } from "../public/handle-prompt-context.js";
|
|
4
|
-
import { blockEndOf, draftTextToBlocks, parseDraftText, renderDraftText } from "./draft-lane-parse.js";
|
|
5
|
-
function isGuestDraft(args) {
|
|
6
|
-
return "guest" in args;
|
|
7
|
-
}
|
|
8
|
-
export function frontendDraftVfs(vfs) {
|
|
9
|
-
return new Map([...vfs].filter(([path]) => isServerOnlyVibeFile(path) === false));
|
|
10
|
-
}
|
|
11
|
-
async function frontendDraftText(draft) {
|
|
12
|
-
if ([...draft.vfs.keys()].some((path) => isServerOnlyVibeFile(path)) === false)
|
|
13
|
-
return Result.Ok(draft.text);
|
|
14
|
-
const parsed = await parseDraftText(draft.text);
|
|
15
|
-
if (parsed.isErr())
|
|
16
|
-
return Result.Err(parsed.Err());
|
|
17
|
-
const { vfs, intro, tail } = parsed.Ok();
|
|
18
|
-
return Result.Ok(renderDraftText({ vfs: frontendDraftVfs(vfs), intro, tail }));
|
|
19
|
-
}
|
|
20
|
-
function draftTurnRequest(args, request) {
|
|
21
|
-
const base = {
|
|
22
|
-
type: "vibes.diy.req-prompt-chat-section",
|
|
23
|
-
mode: "codegen",
|
|
24
|
-
chatId: args.chatId,
|
|
25
|
-
outerTid: `draft-lane-${args.chatId}`,
|
|
26
|
-
prompt: request,
|
|
27
|
-
};
|
|
28
|
-
if (isGuestDraft(args)) {
|
|
29
|
-
const guest = args.guest.inGuestAuth;
|
|
30
|
-
return { ...base, guest, _auth: args.guest };
|
|
31
|
-
}
|
|
32
|
-
return { ...base, auth: args.auth, _auth: args.verified };
|
|
33
|
-
}
|
|
34
|
-
export async function insertSection(vctx, row) {
|
|
35
|
-
const inserted = await exception2Result(() => vctx.sql.db.insert(vctx.sql.tables.chatSections).values({
|
|
36
|
-
chatId: row.chatId,
|
|
37
|
-
promptId: row.promptId,
|
|
38
|
-
blockSeq: row.blockSeq,
|
|
39
|
-
blocks: [row.evt],
|
|
40
|
-
created: new Date().toISOString(),
|
|
41
|
-
}));
|
|
42
|
-
return inserted.isErr() ? Result.Err(inserted.Err()) : Result.Ok(undefined);
|
|
43
|
-
}
|
|
44
|
-
export async function persistDraftBuild(vctx, args, seams) {
|
|
45
|
-
const { chatId, draft } = args;
|
|
46
|
-
const guest = isGuestDraft(args);
|
|
47
|
-
const parkable = guest || isDraftOwnerHandle(args.ownerHandle);
|
|
48
|
-
const promptId = args.promptId ?? vctx.sthis.nextId(12).str;
|
|
49
|
-
const request = {
|
|
50
|
-
model: draft.model,
|
|
51
|
-
messages: [{ role: "user", content: [{ type: "text", text: draft.sentence }] }],
|
|
52
|
-
};
|
|
53
|
-
const req = draftTurnRequest(args, request);
|
|
54
|
-
const text = parkable ? await frontendDraftText(draft) : Result.Ok(draft.text);
|
|
55
|
-
if (text.isErr())
|
|
56
|
-
return Result.Err(text.Err());
|
|
57
|
-
const begin = await insertSection(vctx, {
|
|
58
|
-
chatId,
|
|
59
|
-
promptId,
|
|
60
|
-
blockSeq: 0,
|
|
61
|
-
evt: { type: "prompt.block-begin", streamId: promptId, chatId, seq: 0, timestamp: new Date() },
|
|
62
|
-
});
|
|
63
|
-
if (begin.isErr())
|
|
64
|
-
return Result.Err(begin.Err());
|
|
65
|
-
const echo = await insertSection(vctx, {
|
|
66
|
-
chatId,
|
|
67
|
-
promptId,
|
|
68
|
-
blockSeq: 1,
|
|
69
|
-
evt: parkable
|
|
70
|
-
? { type: "prompt.req", request, streamId: promptId, chatId, seq: 1, timestamp: new Date() }
|
|
71
|
-
: { type: "prompt.req", request, streamId: promptId, chatId, seq: 1, timestamp: new Date(), firstDraft: true },
|
|
72
|
-
});
|
|
73
|
-
if (echo.isErr())
|
|
74
|
-
return Result.Err(echo.Err());
|
|
75
|
-
let id = 0;
|
|
76
|
-
const blocks = await draftTextToBlocks({
|
|
77
|
-
text: text.Ok(),
|
|
78
|
-
streamId: promptId,
|
|
79
|
-
createId: () => `${promptId}-${++id}`,
|
|
80
|
-
usage: draft.usage.map((usage) => ({
|
|
81
|
-
prompt_tokens: usage.prompt_tokens,
|
|
82
|
-
completion_tokens: usage.completion_tokens,
|
|
83
|
-
total_tokens: usage.total_tokens,
|
|
84
|
-
model: usage.model ?? draft.model,
|
|
85
|
-
...(usage.reasoningEffort === undefined ? {} : { reasoningEffort: usage.reasoningEffort }),
|
|
86
|
-
})),
|
|
87
|
-
});
|
|
88
|
-
if (blocks.isErr())
|
|
89
|
-
return Result.Err(blocks.Err());
|
|
90
|
-
const end = blockEndOf(blocks.Ok());
|
|
91
|
-
if (end === undefined)
|
|
92
|
-
return Result.Err("draft block stream produced no block.end");
|
|
93
|
-
const persisted = await handlePromptContext({
|
|
94
|
-
vctx,
|
|
95
|
-
req,
|
|
96
|
-
resChat: { ownerHandle: args.ownerHandle, appSlug: args.appSlug, mode: "codegen" },
|
|
97
|
-
promptId,
|
|
98
|
-
blockSeq: 2,
|
|
99
|
-
value: end,
|
|
100
|
-
collectedMsgs: [...blocks.Ok()],
|
|
101
|
-
model: draft.model,
|
|
102
|
-
absorbCost: true,
|
|
103
|
-
leaveLookMarkers: true,
|
|
104
|
-
promptVariant: "initial-draft",
|
|
105
|
-
});
|
|
106
|
-
if (persisted.isErr())
|
|
107
|
-
return Result.Err(persisted.Err());
|
|
108
|
-
const { blockSeq, fsRef, deferredPersist } = persisted.Ok();
|
|
109
|
-
let committed;
|
|
110
|
-
if (guest) {
|
|
111
|
-
if (deferredPersist !== "awaiting-handle")
|
|
112
|
-
return Result.Err("guest draft turn did not park");
|
|
113
|
-
const proposedSlug = draft.classification.slug;
|
|
114
|
-
committed = { appSlug: args.appSlug, buildId: promptId, ...(proposedSlug.length > 0 ? { proposedSlug } : {}) };
|
|
115
|
-
}
|
|
116
|
-
else if (parkable && deferredPersist === "awaiting-handle") {
|
|
117
|
-
committed = { appSlug: args.appSlug, buildId: promptId };
|
|
118
|
-
}
|
|
119
|
-
else {
|
|
120
|
-
if (deferredPersist !== undefined || fsRef.IsNone())
|
|
121
|
-
return Result.Err("draft turn committed no filesystem");
|
|
122
|
-
const ref = fsRef.unwrap();
|
|
123
|
-
committed = { appSlug: ref.appSlug, buildId: ref.fsId };
|
|
124
|
-
}
|
|
125
|
-
const closed = await (seams?.insertClosingSection ?? insertSection)(vctx, {
|
|
126
|
-
chatId,
|
|
127
|
-
promptId,
|
|
128
|
-
blockSeq,
|
|
129
|
-
evt: { type: "prompt.block-end", streamId: promptId, chatId, seq: blockSeq, timestamp: new Date() },
|
|
130
|
-
});
|
|
131
|
-
if (closed.isErr()) {
|
|
132
|
-
vctx.logger.Warn().Err(closed.Err()).Str("chatId", chatId).Str("promptId", promptId).Msg("draft-lane-block-end-failed");
|
|
133
|
-
}
|
|
134
|
-
return Result.Ok({ ...committed, promptId });
|
|
135
|
-
}
|
|
136
|
-
//# sourceMappingURL=draft-lane-persist.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"draft-lane-persist.js","sourceRoot":"","sources":["../../jsr/intern/draft-lane-persist.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { Result } from "@adviser/cement";
|
|
2
|
-
import type { VibesApiSQLCtx } from "../types.js";
|
|
3
|
-
import type { DraftClassification, DraftDeferred } from "./draft-lane-classify.js";
|
|
4
|
-
export declare const DRAFT_PARAGRAPH: string;
|
|
5
|
-
export declare function composeDraftBrief(sentence: string): string;
|
|
6
|
-
export declare function composeRepairAsk(findings: readonly string[]): string;
|
|
7
|
-
export declare function appendDraftContext(systemPrompt: string, args: {
|
|
8
|
-
readonly deferred: DraftDeferred;
|
|
9
|
-
readonly ownerHandle: string;
|
|
10
|
-
}): string;
|
|
11
|
-
export declare function loadDraftSystemPrompt(vctx: VibesApiSQLCtx, args: {
|
|
12
|
-
readonly chatId: string;
|
|
13
|
-
readonly ownerHandle: string;
|
|
14
|
-
readonly model: string;
|
|
15
|
-
readonly classification: DraftClassification;
|
|
16
|
-
}): Promise<Result<string>>;
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
import { Result, exception2Result } from "@adviser/cement";
|
|
2
|
-
import { hasLookBrief, makeBaseSystemPrompt } from "@vibes.diy/prompts";
|
|
3
|
-
import { createPromptAssetFetch, promptsPkgBaseUrl } from "./prompt-asset-fetch.js";
|
|
4
|
-
import { loadActiveSettings } from "./prompt-assembly.js";
|
|
5
|
-
export const DRAFT_PARAGRAPH = "Build the interaction this sentence names, fully working, with realistic launch content. " +
|
|
6
|
-
"Records are documents with a type; every list is a live query; every save is a document write. " +
|
|
7
|
-
"Known values are direct controls. " +
|
|
8
|
-
"Sharing, invitations, roles, scheduled jobs, emails and outside services belong to the finished app; the draft note names them.";
|
|
9
|
-
export function composeDraftBrief(sentence) {
|
|
10
|
-
const trimmed = sentence.trim().replace(/[.\s]+$/, "");
|
|
11
|
-
return `${trimmed}. ${DRAFT_PARAGRAPH}`;
|
|
12
|
-
}
|
|
13
|
-
export function composeRepairAsk(findings) {
|
|
14
|
-
const listed = findings.slice(0, 6).join("\n");
|
|
15
|
-
return (`Opening the app in the browser reported:\n\n${listed}\n\n` +
|
|
16
|
-
"Write the corrected draft in full, same files and same format (each file under its `### `path`` heading, " +
|
|
17
|
-
"complete, once; `seed.json` last; the `Draft note:` line after it). Keep everything that already worked.");
|
|
18
|
-
}
|
|
19
|
-
export function appendDraftContext(systemPrompt, args) {
|
|
20
|
-
const deferredEntries = Object.entries(args.deferred).filter((entry) => typeof entry[1] === "string" && entry[1].length > 0);
|
|
21
|
-
const planned = deferredEntries.length === 0
|
|
22
|
-
? ""
|
|
23
|
-
: "\n\n<planned-later>\nThe finished app adds these after the draft; the draft note names them:\n" +
|
|
24
|
-
deferredEntries.map(([key, why]) => `- ${key}: ${why}`).join("\n") +
|
|
25
|
-
"\n</planned-later>";
|
|
26
|
-
const previewMaker = `<preview-maker>${JSON.stringify({ handle: args.ownerHandle })}</preview-maker>\n` +
|
|
27
|
-
"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.";
|
|
28
|
-
return [systemPrompt.replace(/\n+$/, "") + planned, previewMaker].join("\n\n");
|
|
29
|
-
}
|
|
30
|
-
export async function loadDraftSystemPrompt(vctx, args) {
|
|
31
|
-
const active = await exception2Result(() => loadActiveSettings(vctx, args.chatId));
|
|
32
|
-
if (active.isErr())
|
|
33
|
-
return Result.Err(active.Err());
|
|
34
|
-
const { theme, layoutArchetype, flourishes, textureNote } = active.Ok();
|
|
35
|
-
const includeLook = theme !== undefined && hasLookBrief(theme);
|
|
36
|
-
const pkgBaseUrl = promptsPkgBaseUrl(vctx.params.pkgRepos.workspace);
|
|
37
|
-
const fetch = createPromptAssetFetch({ fetchAsset: vctx.fetchAsset });
|
|
38
|
-
const base = await exception2Result(() => makeBaseSystemPrompt(args.model, {
|
|
39
|
-
skills: [...args.classification.skills],
|
|
40
|
-
theme,
|
|
41
|
-
...(includeLook ? { look: true } : {}),
|
|
42
|
-
title: args.classification.title,
|
|
43
|
-
layoutArchetype,
|
|
44
|
-
flourishes,
|
|
45
|
-
textureNote,
|
|
46
|
-
demoData: false,
|
|
47
|
-
suppressDefaultStylePrompt: false,
|
|
48
|
-
variant: "initial-draft",
|
|
49
|
-
pkgBaseUrl,
|
|
50
|
-
fetch,
|
|
51
|
-
}));
|
|
52
|
-
if (base.isErr())
|
|
53
|
-
return Result.Err(base.Err());
|
|
54
|
-
return Result.Ok(appendDraftContext(base.Ok().systemPrompt, {
|
|
55
|
-
deferred: args.classification.deferred,
|
|
56
|
-
ownerHandle: args.ownerHandle,
|
|
57
|
-
}));
|
|
58
|
-
}
|
|
59
|
-
//# sourceMappingURL=draft-lane-prompt.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"draft-lane-prompt.js","sourceRoot":"","sources":["../../jsr/intern/draft-lane-prompt.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAGxE,OAAO,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACpF,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAQ1D,MAAM,CAAC,MAAM,eAAe,GAC1B,2FAA2F;IAC3F,iGAAiG;IACjG,oCAAoC;IACpC,iIAAiI,CAAC;AAGpI,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAChD,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IACvD,OAAO,GAAG,OAAO,KAAK,eAAe,EAAE,CAAC;AAC1C,CAAC;AAGD,MAAM,UAAU,gBAAgB,CAAC,QAA2B;IAC1D,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/C,OAAO,CACL,+CAA+C,MAAM,MAAM;QAC3D,2GAA2G;QAC3G,0GAA0G,CAC3G,CAAC;AACJ,CAAC;AAOD,MAAM,UAAU,kBAAkB,CAChC,YAAoB,EACpB,IAAwE;IAExE,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAC1D,CAAC,KAAK,EAA6B,EAAE,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAC1F,CAAC;IACF,MAAM,OAAO,GACX,eAAe,CAAC,MAAM,KAAK,CAAC;QAC1B,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,gGAAgG;YAChG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,KAAK,GAAG,KAAK,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YAClE,oBAAoB,CAAC;IAC3B,MAAM,YAAY,GAChB,kBAAkB,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,oBAAoB;QAClF,iKAAiK,CAAC;IACpK,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,OAAO,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACjF,CAAC;AAOD,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,IAAoB,EACpB,IAKC;IAED,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IACnF,IAAI,MAAM,CAAC,KAAK,EAAE;QAAE,OAAO,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;IACpD,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC,EAAE,EAAE,CAAC;IACxE,MAAM,WAAW,GAAG,KAAK,KAAK,SAAS,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;IAC/D,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACrE,MAAM,KAAK,GAAG,sBAAsB,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IACtE,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC,GAAG,EAAE,CACvC,oBAAoB,CAAC,IAAI,CAAC,KAAK,EAAE;QAC/B,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;QACvC,KAAK;QACL,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtC,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,KAAK;QAChC,eAAe;QACf,UAAU;QACV,WAAW;QACX,QAAQ,EAAE,KAAK;QACf,0BAA0B,EAAE,KAAK;QACjC,OAAO,EAAE,eAAe;QACxB,UAAU;QACV,KAAK;KACN,CAAC,CACH,CAAC;IACF,IAAI,IAAI,CAAC,KAAK,EAAE;QAAE,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAChD,OAAO,MAAM,CAAC,EAAE,CACd,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,YAAY,EAAE;QACzC,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,QAAQ;QACtC,WAAW,EAAE,IAAI,CAAC,WAAW;KAC9B,CAAC,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { type AnalyticsCtx, type CodegenTurnOutcome, type CodegenTurnSettledArgs } from "../analytics.js";
|
|
2
|
-
import type { DraftLaneOutcome } from "./draft-lane.js";
|
|
3
|
-
export declare const DRAFT_SUBMITTED_AT_MAX_AGE_MS = 3600000;
|
|
4
|
-
export declare function clampDraftSubmittedAt(raw: number | undefined, nowMs: number): number | undefined;
|
|
5
|
-
export declare function draftTurnOutcome(outcome: DraftLaneOutcome): CodegenTurnOutcome;
|
|
6
|
-
export interface DraftTurnSettledInput {
|
|
7
|
-
readonly outcome: DraftLaneOutcome;
|
|
8
|
-
readonly userId: string;
|
|
9
|
-
readonly ownerHandle: string;
|
|
10
|
-
readonly appSlug: string;
|
|
11
|
-
readonly builderModel: string;
|
|
12
|
-
readonly originMs: number;
|
|
13
|
-
readonly nowMs: number;
|
|
14
|
-
}
|
|
15
|
-
export declare function draftTurnSettledArgs(input: DraftTurnSettledInput): CodegenTurnSettledArgs;
|
|
16
|
-
export declare function captureDraftTurnSettled(vctx: AnalyticsCtx, args: {
|
|
17
|
-
readonly chatId: string;
|
|
18
|
-
readonly settled: CodegenTurnSettledArgs;
|
|
19
|
-
readonly analyticsCountry: string | undefined;
|
|
20
|
-
}): void;
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import { captureCodegenTurnSettled, } from "../analytics.js";
|
|
2
|
-
import { classifyTurnReach, projectTurnReach } from "./turn-reach.js";
|
|
3
|
-
export const DRAFT_SUBMITTED_AT_MAX_AGE_MS = 3_600_000;
|
|
4
|
-
export function clampDraftSubmittedAt(raw, nowMs) {
|
|
5
|
-
if (raw === undefined || Number.isFinite(raw) === false)
|
|
6
|
-
return undefined;
|
|
7
|
-
if (raw > nowMs || nowMs - raw > DRAFT_SUBMITTED_AT_MAX_AGE_MS)
|
|
8
|
-
return undefined;
|
|
9
|
-
return raw;
|
|
10
|
-
}
|
|
11
|
-
export function draftTurnOutcome(outcome) {
|
|
12
|
-
switch (true) {
|
|
13
|
-
case outcome.kind === "drafted":
|
|
14
|
-
return "applied";
|
|
15
|
-
case outcome.kind === "lease-lost":
|
|
16
|
-
return "no-code";
|
|
17
|
-
case outcome.kind === "abandoned" && outcome.reason === "not-a-build":
|
|
18
|
-
return "no-code";
|
|
19
|
-
default:
|
|
20
|
-
return "error";
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
export function draftTurnSettledArgs(input) {
|
|
24
|
-
const { outcome } = input;
|
|
25
|
-
const m = outcome.measure;
|
|
26
|
-
const drafted = outcome.kind === "drafted";
|
|
27
|
-
const verdict = outcome.kind === "lease-lost" ? undefined : outcome.verdict;
|
|
28
|
-
return {
|
|
29
|
-
outcome: draftTurnOutcome(outcome),
|
|
30
|
-
userId: input.userId,
|
|
31
|
-
ownerHandle: input.ownerHandle,
|
|
32
|
-
appSlug: drafted ? outcome.appSlug : input.appSlug,
|
|
33
|
-
reach: drafted ? projectTurnReach(classifyTurnReach(m.touchedPaths), m.touchedPaths) : projectTurnReach(undefined),
|
|
34
|
-
lane: "draft",
|
|
35
|
-
firstBuild: true,
|
|
36
|
-
msFromSubmit: Math.max(0, input.nowMs - input.originMs),
|
|
37
|
-
toolsOffered: [],
|
|
38
|
-
skills: [],
|
|
39
|
-
draft: {
|
|
40
|
-
model: input.builderModel,
|
|
41
|
-
attempts: m.attempts,
|
|
42
|
-
autofixApplied: m.autofixApplied,
|
|
43
|
-
opensVerdict: m.opensChecked === false ? "skipped" : verdict?.opens === true ? "pass" : "fail",
|
|
44
|
-
draftMs: m.draftMs,
|
|
45
|
-
...(m.classifierMs === undefined ? {} : { classifierMs: m.classifierMs }),
|
|
46
|
-
result: outcome.kind === "abandoned" ? outcome.reason : outcome.kind,
|
|
47
|
-
},
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
export function captureDraftTurnSettled(vctx, args) {
|
|
51
|
-
const personCtx = {
|
|
52
|
-
logger: vctx.logger,
|
|
53
|
-
analyticsFetch: vctx.analyticsFetch,
|
|
54
|
-
...(args.analyticsCountry === undefined ? {} : { analyticsCountry: args.analyticsCountry }),
|
|
55
|
-
...(vctx.posthogKey === undefined ? {} : { posthogKey: vctx.posthogKey }),
|
|
56
|
-
...(vctx.posthogHost === undefined ? {} : { posthogHost: vctx.posthogHost }),
|
|
57
|
-
waitUntil(promise) {
|
|
58
|
-
vctx.waitUntil?.(promise);
|
|
59
|
-
},
|
|
60
|
-
};
|
|
61
|
-
const { settled } = args;
|
|
62
|
-
captureCodegenTurnSettled(personCtx, settled, (result) => {
|
|
63
|
-
const line = vctx.logger
|
|
64
|
-
.Info()
|
|
65
|
-
.Str("chatId", args.chatId)
|
|
66
|
-
.Str("outcome", settled.outcome)
|
|
67
|
-
.Str("turn_lane", settled.lane)
|
|
68
|
-
.Bool("sent", result === "sent")
|
|
69
|
-
.Uint64("ms_from_submit", settled.msFromSubmit);
|
|
70
|
-
(result === "sent" ? line : line.Str("reason", result)).Msg("draft-lane-settled-emit");
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
//# sourceMappingURL=draft-lane-settled.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"draft-lane-settled.js","sourceRoot":"","sources":["../../jsr/intern/draft-lane-settled.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import type { Result } from "@adviser/cement";
|
|
2
|
-
import type { VibesApiSQLCtx } from "../types.js";
|
|
3
|
-
import type { AgentSessionPins } from "./agent-session.js";
|
|
4
|
-
export interface DraftOpensVerdict {
|
|
5
|
-
readonly opens: boolean;
|
|
6
|
-
readonly findings: readonly string[];
|
|
7
|
-
readonly retries: number;
|
|
8
|
-
readonly classifierMs: number;
|
|
9
|
-
readonly draftMs: number;
|
|
10
|
-
readonly classifierSource: "model" | "template";
|
|
11
|
-
readonly autofixNotes: readonly string[];
|
|
12
|
-
}
|
|
13
|
-
export interface DraftRowVerdict {
|
|
14
|
-
readonly opens: boolean;
|
|
15
|
-
readonly findings: string[];
|
|
16
|
-
}
|
|
17
|
-
export interface DraftCompletion {
|
|
18
|
-
readonly appSlug: string;
|
|
19
|
-
readonly buildId: string;
|
|
20
|
-
readonly promptId?: string;
|
|
21
|
-
readonly draftNote: string;
|
|
22
|
-
readonly opensVerdict?: DraftRowVerdict;
|
|
23
|
-
readonly aliasesUsed?: readonly string[];
|
|
24
|
-
readonly proposedSlug?: string;
|
|
25
|
-
}
|
|
26
|
-
export interface DraftJobSql {
|
|
27
|
-
readonly db: VibesApiSQLCtx["sql"]["db"];
|
|
28
|
-
readonly tables: VibesApiSQLCtx["sql"]["tables"];
|
|
29
|
-
}
|
|
30
|
-
export interface DraftClaimOpts {
|
|
31
|
-
readonly pins?: AgentSessionPins;
|
|
32
|
-
}
|
|
33
|
-
export interface DraftJobStore {
|
|
34
|
-
claimDraft(sql: DraftJobSql, chatId: string, leaseMs: number, opts?: DraftClaimOpts): Promise<Result<string | null>>;
|
|
35
|
-
renewDraft(sql: DraftJobSql, chatId: string, leaseToken: string, leaseMs: number): Promise<Result<boolean>>;
|
|
36
|
-
completeDraft(sql: DraftJobSql, chatId: string, leaseToken: string, completion: DraftCompletion): Promise<Result<boolean>>;
|
|
37
|
-
abandonDraft(sql: DraftJobSql, chatId: string, leaseToken: string): Promise<Result<boolean>>;
|
|
38
|
-
}
|
|
39
|
-
export declare function draftJobStoreFor(): DraftJobStore;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"draft-lane-store.js","sourceRoot":"","sources":["../../jsr/intern/draft-lane-store.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAuE1F,MAAM,UAAU,gBAAgB;IAC9B,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC;AACjE,CAAC"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { VibesApiSQLCtx } from "../types.js";
|
|
2
|
-
import type { DraftModelCall } from "./draft-lane-classify.js";
|
|
3
|
-
export interface DraftTransportCtx {
|
|
4
|
-
readonly llmRequest: VibesApiSQLCtx["llmRequest"];
|
|
5
|
-
readonly params: {
|
|
6
|
-
readonly llm: {
|
|
7
|
-
readonly headers: VibesApiSQLCtx["params"]["llm"]["headers"];
|
|
8
|
-
};
|
|
9
|
-
};
|
|
10
|
-
}
|
|
11
|
-
export declare function draftModelCallFor(vctx: DraftTransportCtx): DraftModelCall;
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import { Result, exception2Result } from "@adviser/cement";
|
|
2
|
-
import { type } from "arktype";
|
|
3
|
-
import { draftReasoningEffortFor } from "./draft-lane-config.js";
|
|
4
|
-
const completion = type({
|
|
5
|
-
"model?": "string",
|
|
6
|
-
choices: type({ message: { content: "string | null" }, "finish_reason?": "string | null" }).array(),
|
|
7
|
-
"usage?": {
|
|
8
|
-
"prompt_tokens?": "number >= 0",
|
|
9
|
-
"completion_tokens?": "number >= 0",
|
|
10
|
-
"total_tokens?": "number >= 0",
|
|
11
|
-
"cost?": "number >= 0",
|
|
12
|
-
},
|
|
13
|
-
});
|
|
14
|
-
function toChatMessages(req) {
|
|
15
|
-
return req.messages.map((message) => ({ role: message.role, content: [{ type: "text", text: message.content }] }));
|
|
16
|
-
}
|
|
17
|
-
export function draftModelCallFor(vctx) {
|
|
18
|
-
return async function callDraftModel(req) {
|
|
19
|
-
const effort = draftReasoningEffortFor(req.model);
|
|
20
|
-
const response = await exception2Result(() => vctx.llmRequest({
|
|
21
|
-
model: req.model,
|
|
22
|
-
messages: toChatMessages(req),
|
|
23
|
-
stream: false,
|
|
24
|
-
max_tokens: req.maxTokens,
|
|
25
|
-
...(effort === undefined ? {} : { reasoning: { effort } }),
|
|
26
|
-
headers: vctx.params.llm.headers,
|
|
27
|
-
}, req.signal === undefined ? undefined : { signal: req.signal }));
|
|
28
|
-
if (response.isErr())
|
|
29
|
-
return Result.Err(response.Err());
|
|
30
|
-
const res = response.Ok();
|
|
31
|
-
if (res.ok === false) {
|
|
32
|
-
await exception2Result(() => res.body?.cancel());
|
|
33
|
-
return Result.Err(`draft-model-status-${res.status}`);
|
|
34
|
-
}
|
|
35
|
-
const json = await exception2Result(() => res.json());
|
|
36
|
-
if (json.isErr())
|
|
37
|
-
return Result.Err(json.Err());
|
|
38
|
-
const parsed = completion(json.Ok());
|
|
39
|
-
if (parsed instanceof type.errors)
|
|
40
|
-
return Result.Err(`draft-model-contract: ${parsed.summary}`);
|
|
41
|
-
const content = parsed.choices[0]?.message.content;
|
|
42
|
-
if (content === undefined || content === null || content.length === 0)
|
|
43
|
-
return Result.Err("draft-model-empty-reply");
|
|
44
|
-
const usage = parsed.usage;
|
|
45
|
-
return Result.Ok({
|
|
46
|
-
text: content,
|
|
47
|
-
...(parsed.model === undefined ? {} : { model: parsed.model }),
|
|
48
|
-
...(usage === undefined
|
|
49
|
-
? {}
|
|
50
|
-
: {
|
|
51
|
-
usage: {
|
|
52
|
-
prompt_tokens: usage.prompt_tokens ?? 0,
|
|
53
|
-
completion_tokens: usage.completion_tokens ?? 0,
|
|
54
|
-
total_tokens: usage.total_tokens ?? (usage.prompt_tokens ?? 0) + (usage.completion_tokens ?? 0),
|
|
55
|
-
...(usage.cost === undefined ? {} : { cost: usage.cost }),
|
|
56
|
-
},
|
|
57
|
-
}),
|
|
58
|
-
});
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
|
-
//# sourceMappingURL=draft-lane-transport.js.map
|