@vibes.diy/api-svc 14.3.85 → 14.3.86
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.js +2 -0
- package/create-handler.js.map +1 -1
- package/index.d.ts +3 -1
- package/index.js +3 -1
- package/index.js.map +1 -1
- package/intern/agent-account-tools.d.ts +1 -0
- package/intern/agent-account-tools.js +1 -0
- package/intern/agent-account-tools.js.map +1 -1
- package/intern/agent-belt.d.ts +1 -3
- package/intern/agent-belt.js +25 -21
- package/intern/agent-belt.js.map +1 -1
- package/intern/agent-build-tools.d.ts +7 -0
- package/intern/agent-build-tools.js +6 -2
- package/intern/agent-build-tools.js.map +1 -1
- package/intern/agent-closing-options.d.ts +26 -0
- package/intern/agent-closing-options.js +130 -0
- package/intern/agent-closing-options.js.map +1 -0
- package/intern/agent-dispatcher.d.ts +1 -0
- package/intern/agent-dispatcher.js +17 -3
- package/intern/agent-dispatcher.js.map +1 -1
- package/intern/agent-session-instruction.d.ts +3 -2
- package/intern/agent-session-instruction.js +9 -7
- package/intern/agent-session-instruction.js.map +1 -1
- package/intern/agent-turn.d.ts +1 -0
- package/intern/agent-turn.js +1 -0
- package/intern/agent-turn.js.map +1 -1
- package/intern/alt-first-build.d.ts +36 -0
- package/intern/alt-first-build.js +137 -0
- package/intern/alt-first-build.js.map +1 -0
- package/intern/alt-landing.d.ts +7 -0
- package/intern/alt-landing.js +31 -0
- package/intern/alt-landing.js.map +1 -0
- package/intern/first-brief.d.ts +1 -1
- package/intern/first-brief.js +1 -1
- package/intern/first-brief.js.map +1 -1
- package/intern/first-build-classifier.d.ts +4 -4
- package/intern/first-build-classifier.js +15 -17
- package/intern/first-build-classifier.js.map +1 -1
- package/intern/first-build-race.d.ts +71 -0
- package/intern/first-build-race.js +257 -0
- package/intern/first-build-race.js.map +1 -0
- package/intern/instruction-variant.d.ts +23 -2
- package/intern/instruction-variant.js +159 -2
- package/intern/instruction-variant.js.map +1 -1
- package/intern/keeps-to-themselves.d.ts +1 -0
- package/intern/keeps-to-themselves.js +10 -0
- package/intern/keeps-to-themselves.js.map +1 -0
- package/intern/llm-tool-loop.d.ts +5 -1
- package/intern/llm-tool-loop.js +48 -15
- package/intern/llm-tool-loop.js.map +1 -1
- package/intern/mercury-capability-triggers.d.ts +1 -0
- package/intern/mercury-capability-triggers.js +95 -0
- package/intern/mercury-capability-triggers.js.map +1 -0
- package/intern/mercury-first-build-seam.d.ts +40 -5
- package/intern/mercury-first-build-seam.js +201 -14
- package/intern/mercury-first-build-seam.js.map +1 -1
- package/intern/mercury-first-build.d.ts +591 -21
- package/intern/mercury-first-build.js +2998 -287
- package/intern/mercury-first-build.js.map +1 -1
- package/intern/mercury-resilience.d.ts +70 -0
- package/intern/mercury-resilience.js +122 -0
- package/intern/mercury-resilience.js.map +1 -0
- package/intern/mint-decision.d.ts +1 -0
- package/intern/mint-decision.js +3 -0
- package/intern/mint-decision.js.map +1 -1
- package/intern/option-line-hold.d.ts +5 -0
- package/intern/option-line-hold.js +39 -0
- package/intern/option-line-hold.js.map +1 -0
- package/intern/pouf-room-catalog.d.ts +2 -0
- package/intern/pouf-room-catalog.js +11 -0
- package/intern/pouf-room-catalog.js.map +1 -0
- package/intern/retire-offer-options.d.ts +3 -0
- package/intern/retire-offer-options.js +91 -0
- package/intern/retire-offer-options.js.map +1 -0
- package/intern/seed-chat-section.d.ts +13 -0
- package/intern/seed-chat-section.js +62 -0
- package/intern/seed-chat-section.js.map +1 -1
- package/intern/server-first-build.js +1 -0
- package/intern/server-first-build.js.map +1 -1
- package/intern/vibe-font-catalog.d.ts +2 -0
- package/intern/vibe-font-catalog.js +8 -0
- package/intern/vibe-font-catalog.js.map +1 -0
- package/package.json +14 -14
- package/public/agent-turn-action.d.ts +1 -0
- package/public/agent-turn-action.js +271 -62
- package/public/agent-turn-action.js.map +1 -1
- package/public/agent-turn-assembly.js +5 -2
- package/public/agent-turn-assembly.js.map +1 -1
- package/public/prompt-chat-section.js +7 -5
- package/public/prompt-chat-section.js.map +1 -1
- package/public/prompt-turn-terminal.js +3 -1
- package/public/prompt-turn-terminal.js.map +1 -1
- package/public/report-activity.js +18 -2
- package/public/report-activity.js.map +1 -1
- package/public/vibe-traffic-source.js +1 -1
- package/public/vibe-traffic-source.js.map +1 -1
- package/types.d.ts +1 -0
- package/types.js.map +1 -1
- package/usage-report/new-user-alert-util.d.ts +6 -0
- package/usage-report/new-user-alert-util.js +30 -1
- package/usage-report/new-user-alert-util.js.map +1 -1
- package/intern/agent-options-tool.d.ts +0 -27
- package/intern/agent-options-tool.js +0 -213
- package/intern/agent-options-tool.js.map +0 -1
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { Result } from "@adviser/cement";
|
|
2
|
-
import type { ToolDefinition } from "@vibes.diy/call-ai-v2";
|
|
3
|
-
import { OfferedOption } from "@vibes.diy/api-types";
|
|
4
|
-
import { VibesApiSQLCtx } from "../types.js";
|
|
5
|
-
import type { LlmToolExecutor } from "./llm-tool-loop.js";
|
|
6
|
-
import { type AgentActor } from "./agent-actor.js";
|
|
7
|
-
export declare const OFFER_OPTIONS_TOOL_NAME = "offer_options";
|
|
8
|
-
export type SeedOfferState = "offerable" | "no-seed" | "has-records";
|
|
9
|
-
export interface AgentOptionsToolArgs {
|
|
10
|
-
readonly actor: AgentActor;
|
|
11
|
-
readonly chatId?: string;
|
|
12
|
-
readonly onOffered?: (options: readonly OfferedOption[]) => Promise<Result<void>>;
|
|
13
|
-
}
|
|
14
|
-
export interface AgentOptionsTool {
|
|
15
|
-
readonly definition: ToolDefinition;
|
|
16
|
-
readonly executor: LlmToolExecutor;
|
|
17
|
-
}
|
|
18
|
-
export declare function createAgentOptionsTool(vctx: VibesApiSQLCtx, args: AgentOptionsToolArgs): AgentOptionsTool;
|
|
19
|
-
export declare function seedOfferState(vctx: VibesApiSQLCtx, app: {
|
|
20
|
-
readonly ownerHandle: string;
|
|
21
|
-
readonly appSlug: string;
|
|
22
|
-
}): Promise<SeedOfferState>;
|
|
23
|
-
export interface ChatOfferHistory {
|
|
24
|
-
readonly seedOffered: boolean;
|
|
25
|
-
readonly goldKinds: ReadonlySet<string>;
|
|
26
|
-
}
|
|
27
|
-
export declare function chatOfferHistory(vctx: VibesApiSQLCtx, chatId: string): Promise<ChatOfferHistory>;
|
|
@@ -1,213 +0,0 @@
|
|
|
1
|
-
import { Result, exception2Result } from "@adviser/cement";
|
|
2
|
-
import { type } from "arktype";
|
|
3
|
-
import { OfferedOption, OFFER_OPTIONS_MAX, isPromptAgentEvidence, offeredOptionsProblem, optionLinesText, } from "@vibes.diy/api-types";
|
|
4
|
-
import { and, eq, lt } from "drizzle-orm";
|
|
5
|
-
import { selectLatestAppPerSlug } from "../public/select-app.js";
|
|
6
|
-
import { loadHeadDocs } from "../public/app-documents-head-query.js";
|
|
7
|
-
import { findSeedAssetURI, loadSeedDocs } from "./apply-seed.js";
|
|
8
|
-
import { resolveChatApp } from "./agent-actor.js";
|
|
9
|
-
import { AGENT_EVIDENCE_FIRST_SEQ } from "./agent-evidence.js";
|
|
10
|
-
import { lazyType } from "@vibes.diy/api-types/lazy-type";
|
|
11
|
-
export const OFFER_OPTIONS_TOOL_NAME = "offer_options";
|
|
12
|
-
const OfferOptionsInput = lazyType(() => type({ options: OfferedOption.array() }));
|
|
13
|
-
const KINDS = ["edit", "seed", "access", "connect", "publish"];
|
|
14
|
-
export function createAgentOptionsTool(vctx, args) {
|
|
15
|
-
const scopeOwner = args.actor.scope?.ownerHandle ?? args.actor.ownerHandle;
|
|
16
|
-
const scopeSlug = args.actor.scope?.appSlug;
|
|
17
|
-
const definition = {
|
|
18
|
-
type: "function",
|
|
19
|
-
function: {
|
|
20
|
-
name: OFFER_OPTIONS_TOOL_NAME,
|
|
21
|
-
description: "Close your reply with the next steps the person can take in one tap. They appear as buttons under your " +
|
|
22
|
-
"reply, so your prose leaves them out. Each option is a concrete next change to this app, in the app's own " +
|
|
23
|
-
"words. Mark at most one option gold: the one that gives this app a platform capability now — " +
|
|
24
|
-
'"seed" adds the examples in the app\'s seed.json (only while the app holds none of them, and once per conversation), ' +
|
|
25
|
-
'"access" sets up ' +
|
|
26
|
-
'who can see or edit, "connect" links a service, "publish" makes it public. An ordinary change is kind "edit" ' +
|
|
27
|
-
"or no kind, and is never gold. Each kind is gold once per conversation: a kind this chat already offered gold " +
|
|
28
|
-
"comes back as a plain option or stays out. Answers ok with the options it set: an option this conversation " +
|
|
29
|
-
"rules out (a seed option the app cannot take, a kind already offered gold) is dropped, and the answer names " +
|
|
30
|
-
"it and why. A row that breaks the shape rules is refused with what to change.",
|
|
31
|
-
parameters: {
|
|
32
|
-
type: "object",
|
|
33
|
-
properties: {
|
|
34
|
-
options: {
|
|
35
|
-
type: "array",
|
|
36
|
-
minItems: 1,
|
|
37
|
-
maxItems: OFFER_OPTIONS_MAX,
|
|
38
|
-
items: {
|
|
39
|
-
type: "object",
|
|
40
|
-
properties: {
|
|
41
|
-
label: { type: "string", description: "What the button says, in the app's own words." },
|
|
42
|
-
gold: { type: "boolean", description: "True on the one capability option this app should have now." },
|
|
43
|
-
kind: { type: "string", enum: [...KINDS], description: "What the tap does; omit for an ordinary change." },
|
|
44
|
-
},
|
|
45
|
-
required: ["label"],
|
|
46
|
-
additionalProperties: false,
|
|
47
|
-
},
|
|
48
|
-
},
|
|
49
|
-
},
|
|
50
|
-
required: ["options"],
|
|
51
|
-
additionalProperties: false,
|
|
52
|
-
},
|
|
53
|
-
},
|
|
54
|
-
};
|
|
55
|
-
async function appInScope() {
|
|
56
|
-
if (args.chatId !== undefined) {
|
|
57
|
-
const rApp = await resolveChatApp(vctx, args.actor, args.chatId);
|
|
58
|
-
return rApp.isOk() ? rApp.Ok() : undefined;
|
|
59
|
-
}
|
|
60
|
-
return scopeSlug === undefined ? undefined : { ownerHandle: scopeOwner, appSlug: scopeSlug };
|
|
61
|
-
}
|
|
62
|
-
async function seedDrop(history, historyFailed) {
|
|
63
|
-
const app = await appInScope();
|
|
64
|
-
if (app === undefined)
|
|
65
|
-
return { reason: "no-app-in-scope", why: "there is no app in this conversation yet, so it has no examples" };
|
|
66
|
-
const rState = await exception2Result(() => seedOfferState(vctx, app));
|
|
67
|
-
if (rState.isErr()) {
|
|
68
|
-
vctx.logger.Warn().Err(rState).Str("appSlug", app.appSlug).Msg("offer-options-seed-check-failed");
|
|
69
|
-
return { reason: "seed-check-failed", why: "this app's examples could not be checked just now" };
|
|
70
|
-
}
|
|
71
|
-
switch (rState.Ok()) {
|
|
72
|
-
case "no-seed":
|
|
73
|
-
return { reason: "seed-not-offerable", why: "the live version has no seed.json, so there are no examples to add" };
|
|
74
|
-
case "has-records":
|
|
75
|
-
return { reason: "seed-not-offerable", why: "this app already holds its examples, so adding them would change nothing" };
|
|
76
|
-
case "offerable":
|
|
77
|
-
break;
|
|
78
|
-
}
|
|
79
|
-
if (historyFailed)
|
|
80
|
-
return { reason: "history-check-failed", why: "this conversation's earlier options could not be read just now" };
|
|
81
|
-
if (history?.seedOffered === true) {
|
|
82
|
-
return {
|
|
83
|
-
reason: "seed-already-offered",
|
|
84
|
-
why: "this conversation already offered the examples once; when the person asks for them, add them with add_seed_data",
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
return undefined;
|
|
88
|
-
}
|
|
89
|
-
function goldDrop(option, history, historyFailed) {
|
|
90
|
-
if (option.gold !== true || option.kind === undefined)
|
|
91
|
-
return undefined;
|
|
92
|
-
if (historyFailed)
|
|
93
|
-
return { reason: "history-check-failed", why: "this conversation's earlier options could not be read just now" };
|
|
94
|
-
if (history?.goldKinds.has(option.kind) !== true)
|
|
95
|
-
return undefined;
|
|
96
|
-
return {
|
|
97
|
-
reason: "gold-already-offered",
|
|
98
|
-
why: `this conversation already offered a gold "${option.kind}" option, and gold is once per kind — offer it plain next time`,
|
|
99
|
-
};
|
|
100
|
-
}
|
|
101
|
-
async function readHistory() {
|
|
102
|
-
if (args.chatId === undefined)
|
|
103
|
-
return Result.Ok(undefined);
|
|
104
|
-
const r = await exception2Result(() => chatOfferHistory(vctx, args.chatId));
|
|
105
|
-
if (r.isErr())
|
|
106
|
-
vctx.logger.Warn().Err(r).Str("chatId", args.chatId).Msg("offer-options-history-failed");
|
|
107
|
-
return r;
|
|
108
|
-
}
|
|
109
|
-
async function executor(input) {
|
|
110
|
-
const rParsed = exception2Result(() => JSON.parse(input.call.arguments));
|
|
111
|
-
const parsed = rParsed.isOk() ? rParsed.Ok() : undefined;
|
|
112
|
-
if (OfferOptionsInput.allows(parsed) === false) {
|
|
113
|
-
return toolJson({
|
|
114
|
-
ok: false,
|
|
115
|
-
reason: "invalid-input",
|
|
116
|
-
message: `Pass {"options": [{"label": "...", "gold"?: true, "kind"?: one of ${KINDS.join(", ")}}]}.`,
|
|
117
|
-
});
|
|
118
|
-
}
|
|
119
|
-
const asked = parsed.options.map(normalizedOption);
|
|
120
|
-
const problem = offeredOptionsProblem(asked);
|
|
121
|
-
if (problem !== undefined)
|
|
122
|
-
return toolJson({ ok: false, reason: problem.reason, message: problem.message });
|
|
123
|
-
const needsHistory = asked.some((o) => o.kind === "seed" || (o.gold === true && o.kind !== undefined));
|
|
124
|
-
const rHistory = needsHistory ? await readHistory() : Result.Ok(undefined);
|
|
125
|
-
const historyFailed = rHistory.isErr();
|
|
126
|
-
const history = rHistory.isOk() ? rHistory.Ok() : undefined;
|
|
127
|
-
const seed = asked.some((o) => o.kind === "seed") ? await seedDrop(history, historyFailed) : undefined;
|
|
128
|
-
const options = [];
|
|
129
|
-
const dropped = [];
|
|
130
|
-
for (const option of asked) {
|
|
131
|
-
const drop = option.kind === "seed" ? seed : goldDrop(option, history, historyFailed);
|
|
132
|
-
if (drop === undefined)
|
|
133
|
-
options.push(option);
|
|
134
|
-
else
|
|
135
|
-
dropped.push({ label: option.label, ...drop });
|
|
136
|
-
}
|
|
137
|
-
const droppedLine = dropped.map((d) => `Dropped "${d.label}": ${d.why}.`).join(" ");
|
|
138
|
-
const droppedField = dropped.length === 0 ? {} : { dropped: dropped.map((d) => ({ label: d.label, reason: d.reason })) };
|
|
139
|
-
if (options.length === 0) {
|
|
140
|
-
return toolJson({
|
|
141
|
-
ok: true,
|
|
142
|
-
offered: 0,
|
|
143
|
-
...droppedField,
|
|
144
|
-
message: `${droppedLine} Nothing was offered, so your reply ends at its question.`,
|
|
145
|
-
});
|
|
146
|
-
}
|
|
147
|
-
if (args.onOffered !== undefined) {
|
|
148
|
-
const recorded = await args.onOffered(options);
|
|
149
|
-
if (recorded.isErr())
|
|
150
|
-
return Result.Err(recorded.Err());
|
|
151
|
-
}
|
|
152
|
-
input.closeTurnWith?.(optionLinesText(options));
|
|
153
|
-
const closes = "These options close your reply as buttons; your prose needs no list of them.";
|
|
154
|
-
return toolJson({
|
|
155
|
-
ok: true,
|
|
156
|
-
offered: options.length,
|
|
157
|
-
...droppedField,
|
|
158
|
-
message: dropped.length === 0 ? closes : `${droppedLine} ${closes}`,
|
|
159
|
-
});
|
|
160
|
-
}
|
|
161
|
-
return { definition, executor };
|
|
162
|
-
}
|
|
163
|
-
function normalizedOption(option) {
|
|
164
|
-
return {
|
|
165
|
-
label: option.label.trim(),
|
|
166
|
-
...(option.gold === true ? { gold: true } : {}),
|
|
167
|
-
...(option.kind === undefined ? {} : { kind: option.kind }),
|
|
168
|
-
};
|
|
169
|
-
}
|
|
170
|
-
export async function seedOfferState(vctx, app) {
|
|
171
|
-
const release = await selectLatestAppPerSlug(vctx, { ownerHandle: app.ownerHandle, appSlug: app.appSlug });
|
|
172
|
-
if (release === undefined)
|
|
173
|
-
return "no-seed";
|
|
174
|
-
const docs = await loadSeedDocs(vctx, findSeedAssetURI(release.fileSystem), app.ownerHandle);
|
|
175
|
-
if (docs === undefined || docs.length === 0)
|
|
176
|
-
return "no-seed";
|
|
177
|
-
const idsByDb = new Map();
|
|
178
|
-
for (const doc of docs)
|
|
179
|
-
idsByDb.set(doc.dbName, [...(idsByDb.get(doc.dbName) ?? []), doc.id]);
|
|
180
|
-
for (const [dbName, ids] of idsByDb) {
|
|
181
|
-
const heads = await loadHeadDocs(vctx, { ...app, dbName }, { docIds: [...ids].sort() });
|
|
182
|
-
if (heads.length > 0)
|
|
183
|
-
return "has-records";
|
|
184
|
-
}
|
|
185
|
-
return "offerable";
|
|
186
|
-
}
|
|
187
|
-
export async function chatOfferHistory(vctx, chatId) {
|
|
188
|
-
const t = vctx.sql.tables.chatSections;
|
|
189
|
-
const rows = await vctx.sql.db
|
|
190
|
-
.select({ blocks: t.blocks })
|
|
191
|
-
.from(t)
|
|
192
|
-
.where(and(eq(t.chatId, chatId), lt(t.blockSeq, AGENT_EVIDENCE_FIRST_SEQ)));
|
|
193
|
-
let seedOffered = false;
|
|
194
|
-
const goldKinds = new Set();
|
|
195
|
-
for (const row of rows) {
|
|
196
|
-
const blocks = Array.isArray(row.blocks) ? row.blocks : [];
|
|
197
|
-
for (const block of blocks) {
|
|
198
|
-
if (isPromptAgentEvidence(block) === false || block.evidence.kind !== "options")
|
|
199
|
-
continue;
|
|
200
|
-
for (const o of block.evidence.options ?? []) {
|
|
201
|
-
if (o.kind === "seed")
|
|
202
|
-
seedOffered = true;
|
|
203
|
-
if (o.gold === true && o.kind !== undefined)
|
|
204
|
-
goldKinds.add(o.kind);
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
return { seedOffered, goldKinds };
|
|
209
|
-
}
|
|
210
|
-
function toolJson(payload) {
|
|
211
|
-
return Result.Ok(JSON.stringify(payload));
|
|
212
|
-
}
|
|
213
|
-
//# sourceMappingURL=agent-options-tool.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agent-options-tool.js","sourceRoot":"","sources":["../../jsr/intern/agent-options-tool.ts"],"names":[],"mappings":"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"}
|