@vibes.diy/api-svc 3.0.1 → 3.0.2
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/evento-handler-manifest.js +9 -2
- package/evento-handler-manifest.js.map +1 -1
- package/package.json +12 -12
- package/public/get-vibe-chips.d.ts +3 -0
- package/public/get-vibe-chips.js +109 -0
- package/public/get-vibe-chips.js.map +1 -0
- package/shard-gate.d.ts +1 -0
- package/shard-gate.js +33 -1
- package/shard-gate.js.map +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { PROBE_MODES, shardsForReq } from "@vibes.diy/api-types";
|
|
2
|
-
import { gated } from "./shard-gate.js";
|
|
2
|
+
import { gated, admissionGated } from "./shard-gate.js";
|
|
3
3
|
import { ensureAppSlugItemEvento } from "./public/ensure-app-slug-item.js";
|
|
4
4
|
import { openChat } from "./public/open-chat.js";
|
|
5
5
|
import { promptChatSection } from "./public/prompt-chat-section.js";
|
|
@@ -9,6 +9,7 @@ import { pinRecentVibeEvento } from "./public/pin-recent-vibe.js";
|
|
|
9
9
|
import { setUnpublishEvento } from "./public/set-unpublish.js";
|
|
10
10
|
import { getChatDetailsEvento } from "./public/get-chat-details.js";
|
|
11
11
|
import { getChatResponseEvento } from "./public/get-chat-response.js";
|
|
12
|
+
import { getVibeChipsEvento } from "./public/get-vibe-chips.js";
|
|
12
13
|
import { getAppByFsIdEvento } from "./public/get-app-by-fsid.js";
|
|
13
14
|
import { ensureUserSettingsEvento } from "./public/ensure-user-settings.js";
|
|
14
15
|
import { ensureHandleAvatarEvento } from "./public/ensure-handle-avatar.js";
|
|
@@ -85,6 +86,7 @@ export const handlerManifest = [
|
|
|
85
86
|
entry("vibes.diy.req-report-campaign-ad-previews", reportCampaignAdPreviewsEvento),
|
|
86
87
|
entry("vibes.diy.req-get-chat-details", getChatDetailsEvento),
|
|
87
88
|
entry("vibes.diy.req-get-chat-response", getChatResponseEvento),
|
|
89
|
+
entry("vibes.diy.req-get-vibe-chips", getVibeChipsEvento),
|
|
88
90
|
entry("vibes.diy.req-list-application-chats", listApplicationChats),
|
|
89
91
|
entry("vibes.diy.req-list-codegen-chats", listCodegenChats),
|
|
90
92
|
entry("vibes.diy.req-get-application-chat", getApplicationChatEvento),
|
|
@@ -109,6 +111,11 @@ export function allowedKinds(reqType) {
|
|
|
109
111
|
return KINDS.filter((k) => PROBE_MODES.some((mode) => shardsForReq(reqType, { mode }).includes(k)));
|
|
110
112
|
}
|
|
111
113
|
export function handlersForShard(kind) {
|
|
112
|
-
return handlerManifest
|
|
114
|
+
return handlerManifest
|
|
115
|
+
.filter((e) => allowedKinds(e.reqType).includes(kind))
|
|
116
|
+
.map((e) => {
|
|
117
|
+
const inner = e.reqType === "vibes.diy.req-prompt-chat-section" ? admissionGated(e.handler) : e.handler;
|
|
118
|
+
return gated(e.reqType, inner);
|
|
119
|
+
});
|
|
113
120
|
}
|
|
114
121
|
//# sourceMappingURL=evento-handler-manifest.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evento-handler-manifest.js","sourceRoot":"","sources":["../jsr/evento-handler-manifest.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAgC,MAAM,sBAAsB,CAAC;AAC/F,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"evento-handler-manifest.js","sourceRoot":"","sources":["../jsr/evento-handler-manifest.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": "3.0.
|
|
3
|
+
"version": "3.0.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -22,19 +22,19 @@
|
|
|
22
22
|
"@libsql/client": "~0.17.3",
|
|
23
23
|
"@neondatabase/serverless": "~1.1.0",
|
|
24
24
|
"@noble/hashes": "~2.2.0",
|
|
25
|
-
"@vibes.diy/api-impl": "3.0.
|
|
26
|
-
"@vibes.diy/api-pkg": "3.0.
|
|
27
|
-
"@vibes.diy/api-sql": "3.0.
|
|
28
|
-
"@vibes.diy/api-types": "3.0.
|
|
29
|
-
"@vibes.diy/call-ai-v2": "3.0.
|
|
30
|
-
"@vibes.diy/identity": "3.0.
|
|
31
|
-
"@vibes.diy/prompts": "3.0.
|
|
32
|
-
"@vibes.diy/use-vibes-base": "3.0.
|
|
33
|
-
"@vibes.diy/vibe-db-explorer": "3.0.
|
|
34
|
-
"@vibes.diy/vibe-types": "3.0.
|
|
25
|
+
"@vibes.diy/api-impl": "3.0.2",
|
|
26
|
+
"@vibes.diy/api-pkg": "3.0.2",
|
|
27
|
+
"@vibes.diy/api-sql": "3.0.2",
|
|
28
|
+
"@vibes.diy/api-types": "3.0.2",
|
|
29
|
+
"@vibes.diy/call-ai-v2": "3.0.2",
|
|
30
|
+
"@vibes.diy/identity": "3.0.2",
|
|
31
|
+
"@vibes.diy/prompts": "3.0.2",
|
|
32
|
+
"@vibes.diy/use-vibes-base": "3.0.2",
|
|
33
|
+
"@vibes.diy/vibe-db-explorer": "3.0.2",
|
|
34
|
+
"@vibes.diy/vibe-types": "3.0.2",
|
|
35
35
|
"acorn": "~8.17.0",
|
|
36
36
|
"arktype": "~2.2.1",
|
|
37
|
-
"call-ai": "3.0.
|
|
37
|
+
"call-ai": "3.0.2",
|
|
38
38
|
"cookie": "~1.1.1",
|
|
39
39
|
"drizzle-orm": "~0.45.2",
|
|
40
40
|
"jose": "~6.2.2",
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { EventoHandler } from "@adviser/cement";
|
|
2
|
+
import { MsgBase, ReqGetVibeChips, ResGetVibeChips, VibesDiyError, W3CWebSocketEvent } from "@vibes.diy/api-types";
|
|
3
|
+
export declare const getVibeChipsEvento: EventoHandler<W3CWebSocketEvent, MsgBase<ReqGetVibeChips>, ResGetVibeChips | VibesDiyError>;
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { Result, Option, EventoResult } from "@adviser/cement";
|
|
2
|
+
import { reqGetVibeChips, PromptAndBlockMsgs, parseArrayWarning, latestTurnChips, } from "@vibes.diy/api-types";
|
|
3
|
+
import { type } from "arktype";
|
|
4
|
+
import { ensureLogger } from "@vibes.diy/identity";
|
|
5
|
+
import { unwrapMsgBase } from "../unwrap-msg-base.js";
|
|
6
|
+
import { optAuth } from "../check-auth.js";
|
|
7
|
+
import { isPublicReadable, isWorldReadable, checkDocAccess } from "./access-helpers.js";
|
|
8
|
+
import { selectLatestAppPerSlug } from "./select-app.js";
|
|
9
|
+
import { isHiddenForCaller } from "./unpublished-binding.js";
|
|
10
|
+
import { and, eq } from "drizzle-orm/sql/expressions";
|
|
11
|
+
export const getVibeChipsEvento = {
|
|
12
|
+
hash: "get-vibe-chips",
|
|
13
|
+
validate: unwrapMsgBase(async (msg) => {
|
|
14
|
+
const ret = reqGetVibeChips(msg.payload);
|
|
15
|
+
if (ret instanceof type.errors) {
|
|
16
|
+
return Result.Ok(Option.None());
|
|
17
|
+
}
|
|
18
|
+
return Result.Ok(Option.Some({
|
|
19
|
+
...msg,
|
|
20
|
+
payload: ret,
|
|
21
|
+
}));
|
|
22
|
+
}),
|
|
23
|
+
handle: optAuth(async (ctx) => {
|
|
24
|
+
const req = ctx.validated.payload;
|
|
25
|
+
const vctx = ctx.ctx.getOrThrow("vibesApiCtx");
|
|
26
|
+
const logger = ensureLogger(vctx.sthis, "getVibeChips");
|
|
27
|
+
const empty = {
|
|
28
|
+
type: "vibes.diy.res-get-vibe-chips",
|
|
29
|
+
ownerHandle: req.ownerHandle,
|
|
30
|
+
appSlug: req.appSlug,
|
|
31
|
+
chips: [],
|
|
32
|
+
};
|
|
33
|
+
const callerUserId = req._auth?.verifiedAuth.claims.userId;
|
|
34
|
+
const app = await selectLatestAppPerSlug(vctx, { ownerHandle: req.ownerHandle, appSlug: req.appSlug });
|
|
35
|
+
let isMember = false;
|
|
36
|
+
if (callerUserId) {
|
|
37
|
+
const { access } = await checkDocAccess(vctx, callerUserId, req.appSlug, req.ownerHandle);
|
|
38
|
+
isMember = access !== "none";
|
|
39
|
+
}
|
|
40
|
+
let publicVisible = false;
|
|
41
|
+
if (!isMember &&
|
|
42
|
+
app &&
|
|
43
|
+
app.mode === "production" &&
|
|
44
|
+
!(await isHiddenForCaller(vctx, {
|
|
45
|
+
ownerHandle: app.ownerHandle,
|
|
46
|
+
appSlug: app.appSlug,
|
|
47
|
+
ownerUserId: app.userId,
|
|
48
|
+
callerUserId,
|
|
49
|
+
}))) {
|
|
50
|
+
publicVisible = callerUserId
|
|
51
|
+
? await isWorldReadable(vctx, req.appSlug, req.ownerHandle)
|
|
52
|
+
: await isPublicReadable(vctx, req.appSlug, req.ownerHandle);
|
|
53
|
+
}
|
|
54
|
+
if (!isMember && !publicVisible) {
|
|
55
|
+
logger.Debug().Str("ownerHandle", req.ownerHandle).Str("appSlug", req.appSlug).Msg("chips not visible to caller");
|
|
56
|
+
await ctx.send.send(ctx, empty);
|
|
57
|
+
return Result.Ok(EventoResult.Continue);
|
|
58
|
+
}
|
|
59
|
+
const rows = await vctx.sql.db
|
|
60
|
+
.select({
|
|
61
|
+
chatId: vctx.sql.tables.chatSections.chatId,
|
|
62
|
+
promptId: vctx.sql.tables.chatSections.promptId,
|
|
63
|
+
fsId: vctx.sql.tables.promptContexts.fsId,
|
|
64
|
+
promptCreated: vctx.sql.tables.promptContexts.created,
|
|
65
|
+
sectionCreated: vctx.sql.tables.chatSections.created,
|
|
66
|
+
blockSeq: vctx.sql.tables.chatSections.blockSeq,
|
|
67
|
+
blocks: vctx.sql.tables.chatSections.blocks,
|
|
68
|
+
})
|
|
69
|
+
.from(vctx.sql.tables.chatContexts)
|
|
70
|
+
.innerJoin(vctx.sql.tables.chatSections, eq(vctx.sql.tables.chatSections.chatId, vctx.sql.tables.chatContexts.chatId))
|
|
71
|
+
.leftJoin(vctx.sql.tables.promptContexts, and(eq(vctx.sql.tables.promptContexts.chatId, vctx.sql.tables.chatSections.chatId), eq(vctx.sql.tables.promptContexts.promptId, vctx.sql.tables.chatSections.promptId)))
|
|
72
|
+
.where(and(eq(vctx.sql.tables.chatContexts.ownerHandle, req.ownerHandle), eq(vctx.sql.tables.chatContexts.appSlug, req.appSlug)));
|
|
73
|
+
const turns = new Map();
|
|
74
|
+
for (const row of rows) {
|
|
75
|
+
let turn = turns.get(row.promptId);
|
|
76
|
+
if (turn === undefined) {
|
|
77
|
+
turn = {
|
|
78
|
+
chatId: row.chatId,
|
|
79
|
+
promptId: row.promptId,
|
|
80
|
+
created: row.promptCreated ?? row.sectionCreated,
|
|
81
|
+
...(row.fsId !== undefined && row.fsId !== null ? { fsId: row.fsId } : {}),
|
|
82
|
+
sections: [],
|
|
83
|
+
};
|
|
84
|
+
turns.set(row.promptId, turn);
|
|
85
|
+
}
|
|
86
|
+
const { filtered: blocks, warning } = parseArrayWarning(row.blocks, PromptAndBlockMsgs);
|
|
87
|
+
if (warning.length > 0) {
|
|
88
|
+
logger.Warn().Any({ parseErrors: warning }).Msg("skip");
|
|
89
|
+
}
|
|
90
|
+
const section = { blockSeq: row.blockSeq, blocks };
|
|
91
|
+
turn.sections.push(section);
|
|
92
|
+
}
|
|
93
|
+
for (const turn of turns.values()) {
|
|
94
|
+
turn.sections.sort((a, b) => a.blockSeq - b.blockSeq);
|
|
95
|
+
}
|
|
96
|
+
const orderedTurns = Array.from(turns.values()).sort((a, b) => (a.created < b.created ? 1 : a.created > b.created ? -1 : 0));
|
|
97
|
+
const effectiveFsId = req.fsId ?? app?.fsId;
|
|
98
|
+
const candidateTurns = !isMember && app?.fsId ? orderedTurns.filter((t) => t.fsId === app.fsId) : orderedTurns;
|
|
99
|
+
const chips = latestTurnChips(candidateTurns, effectiveFsId);
|
|
100
|
+
await ctx.send.send(ctx, {
|
|
101
|
+
type: "vibes.diy.res-get-vibe-chips",
|
|
102
|
+
ownerHandle: req.ownerHandle,
|
|
103
|
+
appSlug: req.appSlug,
|
|
104
|
+
chips: [...chips],
|
|
105
|
+
});
|
|
106
|
+
return Result.Ok(EventoResult.Continue);
|
|
107
|
+
}),
|
|
108
|
+
};
|
|
109
|
+
//# sourceMappingURL=get-vibe-chips.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-vibe-chips.js","sourceRoot":"","sources":["../../jsr/public/get-vibe-chips.ts"],"names":[],"mappings":"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"}
|
package/shard-gate.d.ts
CHANGED
|
@@ -3,3 +3,4 @@ import { type ResError, type ShardIdentity } from "@vibes.diy/api-types";
|
|
|
3
3
|
export declare function shardIdentityError(id: ShardIdentity, ownerHandle: string, appSlug: string): Option<ResError>;
|
|
4
4
|
export declare function gated(reqType: string, handler: EventoHandler): EventoHandler;
|
|
5
5
|
export declare function assertChatShardIdentity<INREQ, REQ, RES>(ctx: HandleTriggerCtx<INREQ, REQ, RES>, ownerHandle: string, appSlug: string): Option<ResError>;
|
|
6
|
+
export declare function admissionGated(handler: EventoHandler): EventoHandler;
|
package/shard-gate.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { EventoResult, Option, Result } from "@adviser/cement";
|
|
2
|
-
import { openVibe, shardsForReq } from "@vibes.diy/api-types";
|
|
2
|
+
import { openVibe, shardsForReq, SHARD_OVERLOADED_CODE, } from "@vibes.diy/api-types";
|
|
3
3
|
export function shardIdentityError(id, ownerHandle, appSlug) {
|
|
4
4
|
const expected = openVibe(ownerHandle, appSlug);
|
|
5
5
|
if (expected === id.shardId)
|
|
@@ -62,4 +62,36 @@ export function assertChatShardIdentity(ctx, ownerHandle, appSlug) {
|
|
|
62
62
|
return Option.None();
|
|
63
63
|
return shardIdentityError(id, ownerHandle, appSlug);
|
|
64
64
|
}
|
|
65
|
+
export function admissionGated(handler) {
|
|
66
|
+
return {
|
|
67
|
+
...handler,
|
|
68
|
+
handle: async (ctx) => {
|
|
69
|
+
const adm = ctx.ctx.get("codegenAdmission");
|
|
70
|
+
if (adm === undefined) {
|
|
71
|
+
return handler.handle(ctx);
|
|
72
|
+
}
|
|
73
|
+
const enPayload = ctx.enRequest?.payload;
|
|
74
|
+
if (enPayload?.dryRun === true) {
|
|
75
|
+
return handler.handle(ctx);
|
|
76
|
+
}
|
|
77
|
+
if (adm.active >= adm.limit) {
|
|
78
|
+
await ctx.send.send(ctx, {
|
|
79
|
+
type: "vibes.diy.res-error",
|
|
80
|
+
error: {
|
|
81
|
+
message: `codegen shard at capacity (${adm.limit} concurrent streams)`,
|
|
82
|
+
code: SHARD_OVERLOADED_CODE,
|
|
83
|
+
},
|
|
84
|
+
});
|
|
85
|
+
return Result.Ok(EventoResult.Continue);
|
|
86
|
+
}
|
|
87
|
+
adm.active += 1;
|
|
88
|
+
try {
|
|
89
|
+
return await handler.handle(ctx);
|
|
90
|
+
}
|
|
91
|
+
finally {
|
|
92
|
+
adm.active -= 1;
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
};
|
|
96
|
+
}
|
|
65
97
|
//# sourceMappingURL=shard-gate.js.map
|
package/shard-gate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shard-gate.js","sourceRoot":"","sources":["../jsr/shard-gate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,YAAY,EAAoB,MAAM,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAChG,OAAO,
|
|
1
|
+
{"version":3,"file":"shard-gate.js","sourceRoot":"","sources":["../jsr/shard-gate.ts"],"names":[],"mappings":"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"}
|