@vibes.diy/api-svc 2.4.3 → 2.4.4

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.
Files changed (53) hide show
  1. package/cf-serve.d.ts +2 -2
  2. package/cf-serve.js +102 -15
  3. package/cf-serve.js.map +1 -1
  4. package/create-handler.d.ts +4 -1
  5. package/create-handler.js +4 -1
  6. package/create-handler.js.map +1 -1
  7. package/intern/get-vibe-route-hints.d.ts +14 -0
  8. package/intern/get-vibe-route-hints.js +57 -0
  9. package/intern/get-vibe-route-hints.js.map +1 -0
  10. package/intern/resend-prev-msg.js +1 -1
  11. package/intern/resend-prev-msg.js.map +1 -1
  12. package/package.json +11 -11
  13. package/public/app-documents.d.ts +8 -1
  14. package/public/app-documents.js +275 -37
  15. package/public/app-documents.js.map +1 -1
  16. package/public/cid-asset.js +0 -2
  17. package/public/cid-asset.js.map +1 -1
  18. package/public/db-acl-resolver.d.ts +1 -0
  19. package/public/db-acl-resolver.js +14 -1
  20. package/public/db-acl-resolver.js.map +1 -1
  21. package/public/ensure-app-settings.js +13 -1
  22. package/public/ensure-app-settings.js.map +1 -1
  23. package/public/get-app-by-fsid.js +67 -4
  24. package/public/get-app-by-fsid.js.map +1 -1
  25. package/public/get-cert-from-csr.js +0 -1
  26. package/public/get-cert-from-csr.js.map +1 -1
  27. package/public/list-memberships.js +4 -4
  28. package/public/list-memberships.js.map +1 -1
  29. package/public/prompt-chat-section.js +29 -1
  30. package/public/prompt-chat-section.js.map +1 -1
  31. package/public/report-cache.js +9 -2
  32. package/public/report-cache.js.map +1 -1
  33. package/public/report-campaign-ad-previews.d.ts +3 -0
  34. package/public/report-campaign-ad-previews.js +79 -0
  35. package/public/report-campaign-ad-previews.js.map +1 -0
  36. package/public/report-campaign-health.d.ts +2 -0
  37. package/public/report-campaign-health.js +108 -31
  38. package/public/report-campaign-health.js.map +1 -1
  39. package/public/set-mode-fsid.js +1 -1
  40. package/public/set-mode-fsid.js.map +1 -1
  41. package/public/subscribe-user-notifications.d.ts +8 -0
  42. package/public/subscribe-user-notifications.js +32 -0
  43. package/public/subscribe-user-notifications.js.map +1 -0
  44. package/svc-ws-send-provider.d.ts +1 -0
  45. package/svc-ws-send-provider.js +1 -0
  46. package/svc-ws-send-provider.js.map +1 -1
  47. package/types.d.ts +4 -1
  48. package/types.js.map +1 -1
  49. package/vibes-msg-evento.js +4 -2
  50. package/vibes-msg-evento.js.map +1 -1
  51. package/intern/get-vibe-og-title.d.ts +0 -8
  52. package/intern/get-vibe-og-title.js +0 -33
  53. package/intern/get-vibe-og-title.js.map +0 -1
@@ -1,18 +1,23 @@
1
- import { Result, Option, EventoResult } from "@adviser/cement";
1
+ import { Result, Option, EventoResult, exception2Result } from "@adviser/cement";
2
2
  import { reqReportCampaignHealth, resReportCampaignHealth, } from "@vibes.diy/api-types";
3
3
  import { type } from "arktype";
4
+ import { and, eq, gte, lte } from "drizzle-orm";
4
5
  import { unwrapMsgBase } from "../unwrap-msg-base.js";
5
6
  import { checkAuth } from "../check-auth.js";
6
7
  import { cachedReport, hasReport } from "./report-cache.js";
7
8
  const META_BASE = "https://graph.facebook.com/v19.0";
8
9
  async function metaGet(path, token) {
9
10
  const sep = path.includes("?") ? "&" : "?";
10
- const res = await fetch(`${META_BASE}${path}${sep}access_token=${token}`);
11
- const json = (await res.json());
12
- if (json.error) {
13
- throw new Error(`Meta API: ${json.error.message}`);
14
- }
15
- return json;
11
+ const rRes = await exception2Result(() => fetch(`${META_BASE}${path}${sep}access_token=${token}`, { signal: AbortSignal.timeout(15_000) }));
12
+ if (rRes.isErr())
13
+ return Result.Err(rRes.Err());
14
+ const rJson = await exception2Result(() => rRes.Ok().json());
15
+ if (rJson.isErr())
16
+ return Result.Err(rJson.Err());
17
+ const json = rJson.Ok();
18
+ if (json.error !== undefined)
19
+ return Result.Err(new Error(`Meta API: ${json.error.message}`));
20
+ return Result.Ok(json);
16
21
  }
17
22
  function lpv(row) {
18
23
  return Number(row.actions?.find((a) => a.action_type === "landing_page_view")?.value ?? 0);
@@ -21,17 +26,63 @@ function costPerLpv(row) {
21
26
  const l = lpv(row);
22
27
  return l > 0 ? Number(row.spend) / l : Infinity;
23
28
  }
24
- async function fetchCampaignHealth(token, account, pixelId, days, since) {
25
- const dateParam = since
26
- ? `&time_range=${encodeURIComponent(JSON.stringify({ since, until: new Date().toISOString().slice(0, 10) }))}`
27
- : `&date_preset=last_${days}d`;
29
+ export async function fetchGoodVibesClickThroughs(vctx, sinceIso, untilIso) {
30
+ const t = vctx.sql.tables;
31
+ const rows = await vctx.sql.db
32
+ .select({ refPath: t.refererEvents.refPath, refHref: t.refererEvents.refHref })
33
+ .from(t.refererEvents)
34
+ .where(and(eq(t.refererEvents.refHost, "good.vibes.diy"), gte(t.refererEvents.ts, sinceIso), lte(t.refererEvents.ts, untilIso)));
35
+ const byPath = {};
36
+ for (const r of rows) {
37
+ let fbclid = null;
38
+ try {
39
+ fbclid = new URL(r.refHref).searchParams.get("fbclid");
40
+ }
41
+ catch {
42
+ }
43
+ if (fbclid === null)
44
+ continue;
45
+ (byPath[r.refPath] ??= new Set()).add(fbclid);
46
+ }
47
+ return Object.fromEntries(Object.entries(byPath).map(([path, ids]) => [path, ids.size]));
48
+ }
49
+ async function fetchCampaignMeta(token, account) {
50
+ const [rCampaigns, rAds] = await Promise.all([
51
+ metaGet(`/${account}/campaigns?fields=id,effective_status&limit=200`, token),
52
+ metaGet(`/${account}/ads?fields=campaign_id,creative{object_story_spec{link_data{link}}}&limit=200`, token),
53
+ ]);
54
+ const byId = {};
55
+ for (const c of rCampaigns.isOk() ? (rCampaigns.Ok().data ?? []) : []) {
56
+ byId[c.id] = { effective_status: c.effective_status };
57
+ }
58
+ for (const ad of rAds.isOk() ? (rAds.Ok().data ?? []) : []) {
59
+ const link = ad.creative?.object_story_spec?.link_data?.link;
60
+ if (link !== undefined && byId[ad.campaign_id] !== undefined && byId[ad.campaign_id].website_url === undefined) {
61
+ byId[ad.campaign_id].website_url = link;
62
+ }
63
+ }
64
+ return byId;
65
+ }
66
+ async function fetchCampaignHealth(token, account, pixelId, days, since, vctx) {
67
+ console.info("fetch-campaign-health: start");
68
+ const today = new Date().toISOString().slice(0, 10);
69
+ const sinceIso = since ?? new Date(Date.now() - Number(days) * 86_400_000).toISOString().slice(0, 10);
70
+ const dateParam = `&time_range=${encodeURIComponent(JSON.stringify({ since: sinceIso, until: today }))}`;
28
71
  const dateLabel = since ? `since ${since}` : `last ${days} days`;
72
+ const [campaignMeta, clicksByPath] = await Promise.all([
73
+ fetchCampaignMeta(token, account),
74
+ fetchGoodVibesClickThroughs(vctx, sinceIso, today),
75
+ ]);
76
+ console.info("fetch-campaign-health: campaign meta count:", Object.keys(campaignMeta).length, "referrer paths:", Object.keys(clicksByPath).length);
29
77
  const fields = "campaign_name,campaign_id,impressions,clicks,spend,ctr,cpc,reach,actions";
30
78
  const rows = [];
31
79
  let after = undefined;
32
80
  for (;;) {
33
81
  const cursor = after !== undefined ? `&after=${encodeURIComponent(after)}` : "";
34
- const page = await metaGet(`/${account}/insights?fields=${fields}&level=campaign&limit=100${dateParam}${cursor}`, token);
82
+ const rPage = await metaGet(`/${account}/insights?fields=${fields}&level=campaign&limit=100${dateParam}${cursor}`, token);
83
+ if (rPage.isErr())
84
+ return Result.Err(rPage.Err());
85
+ const page = rPage.Ok();
35
86
  rows.push(...(page.data ?? []));
36
87
  if (page.paging?.next === undefined)
37
88
  break;
@@ -39,20 +90,19 @@ async function fetchCampaignHealth(token, account, pixelId, days, since) {
39
90
  if (after === undefined)
40
91
  break;
41
92
  }
42
- const pixel = await (async () => {
43
- try {
44
- const px = await metaGet(`/${pixelId}?fields=name,last_fired_time,stats`, token);
93
+ console.info("fetch-campaign-health: campaigns done, count:", rows.length);
94
+ const rPx = await metaGet(`/${pixelId}?fields=name,last_fired_time,stats`, token);
95
+ const pixel = rPx.isErr()
96
+ ? { error: String(rPx.Err()) }
97
+ : (() => {
98
+ const px = rPx.Ok();
45
99
  const events = px.stats?.data?.flatMap((h) => h.data ?? []) ?? [];
46
100
  const sum = {};
47
101
  for (const e of events) {
48
102
  sum[e.value] = (sum[e.value] ?? 0) + Number(e.count);
49
103
  }
50
104
  return { lastFired: px.last_fired_time, counts: sum };
51
- }
52
- catch (e) {
53
- return { error: e.message };
54
- }
55
- })();
105
+ })();
56
106
  const nameCounts = {};
57
107
  for (const r of rows)
58
108
  nameCounts[r.campaign_name] = (nameCounts[r.campaign_name] ?? 0) + 1;
@@ -71,15 +121,34 @@ async function fetchCampaignHealth(token, account, pixelId, days, since) {
71
121
  .filter((r) => r.ratio < 0.6 && r.clicks > 0);
72
122
  const ranked = [...rows]
73
123
  .sort((a, b) => costPerLpv(a) - costPerLpv(b))
74
- .map((r) => ({ ...r, actions: r.actions?.map((a) => ({ ...a })) }));
124
+ .map((r) => {
125
+ const meta = campaignMeta[r.campaign_id];
126
+ const websiteUrl = meta?.website_url;
127
+ const effective_status = meta?.effective_status;
128
+ let landingPath;
129
+ if (websiteUrl !== undefined) {
130
+ try {
131
+ const u = new URL(websiteUrl);
132
+ if (u.hostname === "good.vibes.diy") {
133
+ landingPath = u.pathname.replace(/\/$/, "") || "/";
134
+ }
135
+ }
136
+ catch {
137
+ }
138
+ }
139
+ const ctaClicks = landingPath !== undefined ? (clicksByPath[landingPath] ?? 0) : undefined;
140
+ const costPerCtaClick = ctaClicks !== undefined && ctaClicks > 0 ? Number(r.spend) / ctaClicks : undefined;
141
+ return { ...r, actions: r.actions?.map((a) => ({ ...a })), landingPath, ctaClicks, costPerCtaClick, effective_status };
142
+ });
143
+ console.info("fetch-campaign-health: pixel done");
75
144
  const anomalies = { duplicateNames, budgetOutliers, zeroSpend, lowLpvRatio, pixel };
76
- return {
145
+ return Result.Ok({
77
146
  type: "vibes.diy.res-report-campaign-health",
78
147
  generatedAt: new Date().toISOString(),
79
148
  dateLabel,
80
149
  ranked,
81
150
  anomalies,
82
- };
151
+ });
83
152
  }
84
153
  export const reportCampaignHealthEvento = {
85
154
  hash: "vibes.diy.req-report-campaign-health",
@@ -90,6 +159,7 @@ export const reportCampaignHealthEvento = {
90
159
  return Result.Ok(Option.Some({ ...msg, payload: ret }));
91
160
  }),
92
161
  handle: checkAuth(async (ctx) => {
162
+ console.info("campaign-health: handler entered");
93
163
  const req = ctx.validated.payload;
94
164
  const vctx = ctx.ctx.getOrThrow("vibesApiCtx");
95
165
  if (hasReport(req._auth.verifiedAuth.claims, "campaign-health") === false) {
@@ -99,10 +169,11 @@ export const reportCampaignHealthEvento = {
99
169
  });
100
170
  return Result.Ok(EventoResult.Continue);
101
171
  }
172
+ console.info("campaign-health: auth ok");
102
173
  const token = vctx.metaAccessToken;
103
174
  const account = vctx.metaAdAccountId;
104
175
  const pixelId = vctx.metaPixelId;
105
- if (!token || !account || !pixelId) {
176
+ if (token === undefined || account === undefined || pixelId === undefined) {
106
177
  await ctx.send.send(ctx, {
107
178
  type: "vibes.diy.res-error",
108
179
  error: {
@@ -115,18 +186,24 @@ export const reportCampaignHealthEvento = {
115
186
  const days = req.days ?? "7";
116
187
  const since = req.since;
117
188
  const cacheKey = since ? `campaign-health:since:${since}` : `campaign-health:days:${days}`;
118
- let res;
119
- try {
120
- res = await cachedReport(vctx, cacheKey, resReportCampaignHealth, () => fetchCampaignHealth(token, account, pixelId, days, since));
121
- }
122
- catch (e) {
189
+ console.info("campaign-health: creds ok, calling cachedReport");
190
+ const rRes = await exception2Result(() => cachedReport(vctx, cacheKey, resReportCampaignHealth, async () => {
191
+ const r = await fetchCampaignHealth(token, account, pixelId, days, since, vctx);
192
+ if (r.isErr())
193
+ throw r.Err();
194
+ return r.Ok();
195
+ }));
196
+ console.info("campaign-health: cachedReport returned", rRes.isErr() ? "err" : "ok");
197
+ if (rRes.isErr()) {
123
198
  await ctx.send.send(ctx, {
124
199
  type: "vibes.diy.res-error",
125
- error: { message: `Meta API error: ${e.message}`, code: "meta-api-error" },
200
+ error: { message: `Meta API error: ${String(rRes.Err())}`, code: "meta-api-error" },
126
201
  });
127
202
  return Result.Ok(EventoResult.Continue);
128
203
  }
129
- await ctx.send.send(ctx, res);
204
+ console.info("campaign-health: calling send");
205
+ await ctx.send.send(ctx, rRes.Ok());
206
+ console.info("campaign-health: send complete");
130
207
  return Result.Ok(EventoResult.Continue);
131
208
  }),
132
209
  };
@@ -1 +1 @@
1
- {"version":3,"file":"report-campaign-health.js","sourceRoot":"","sources":["../../jsr/public/report-campaign-health.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"report-campaign-health.js","sourceRoot":"","sources":["../../jsr/public/report-campaign-health.ts"],"names":[],"mappings":"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"}
@@ -57,7 +57,7 @@ export const setModeFsIdEvento = {
57
57
  const ret = reqSetModeFs(msg.payload);
58
58
  if (ret instanceof type.errors) {
59
59
  if (msg.payload.type === "vibes.diy.req-set-mode-fs") {
60
- console.log(`set-mode-fsid`, msg.payload, ret.summary);
60
+ console.warn(`set-mode-fsid`, msg.payload, ret.summary);
61
61
  }
62
62
  return Result.Ok(Option.None());
63
63
  }
@@ -1 +1 @@
1
- {"version":3,"file":"set-mode-fsid.js","sourceRoot":"","sources":["../../jsr/public/set-mode-fsid.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"set-mode-fsid.js","sourceRoot":"","sources":["../../jsr/public/set-mode-fsid.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { EventoHandler } from "@adviser/cement";
2
+ import { MsgBase, ReqSubscribeUserNotificationsRaw, ResSubscribeUserNotifications, VibesDiyError, W3CWebSocketEvent } from "@vibes.diy/api-types";
3
+ import { DashAuthType } from "@fireproof/core-types-protocols-dashboard";
4
+ type ReqSubscribeUserNotifications = ReqSubscribeUserNotificationsRaw & {
5
+ auth: DashAuthType;
6
+ };
7
+ export declare const subscribeUserNotificationsEvento: EventoHandler<W3CWebSocketEvent, MsgBase<ReqSubscribeUserNotifications>, ResSubscribeUserNotifications | VibesDiyError>;
8
+ export {};
@@ -0,0 +1,32 @@
1
+ import { Result, Option, EventoResult } from "@adviser/cement";
2
+ import { isReqSubscribeUserNotificationsRaw, } from "@vibes.diy/api-types";
3
+ import { unwrapMsgBase } from "../unwrap-msg-base.js";
4
+ import { checkAuth } from "../check-auth.js";
5
+ function clientWsSend(ctx) {
6
+ return ctx.send.provider;
7
+ }
8
+ export const subscribeUserNotificationsEvento = {
9
+ hash: "subscribe-user-notifications",
10
+ validate: unwrapMsgBase(async (msg) => {
11
+ if (isReqSubscribeUserNotificationsRaw(msg.payload)) {
12
+ return Result.Ok(Option.Some({ ...msg, payload: msg.payload }));
13
+ }
14
+ return Result.Ok(Option.None());
15
+ }),
16
+ handle: checkAuth(async (ctx) => {
17
+ const req = ctx.validated.payload;
18
+ const vctx = ctx.ctx.getOrThrow("vibesApiCtx");
19
+ const userId = req._auth.verifiedAuth.claims.userId;
20
+ const wsSend = clientWsSend(ctx);
21
+ wsSend.subscribedUserKey = userId;
22
+ if (vctx.registerUserSubscription) {
23
+ vctx.registerUserSubscription(userId).catch((e) => console.error("UserNotify error:", e));
24
+ }
25
+ await ctx.send.send(ctx, {
26
+ type: "vibes.diy.res-subscribe-user-notifications",
27
+ status: "ok",
28
+ });
29
+ return Result.Ok(EventoResult.Continue);
30
+ }),
31
+ };
32
+ //# sourceMappingURL=subscribe-user-notifications.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscribe-user-notifications.js","sourceRoot":"","sources":["../../jsr/public/subscribe-user-notifications.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,MAAM,EAAE,MAAM,EAAsC,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAClH,OAAO,EAOL,kCAAkC,GACnC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAM7C,SAAS,YAAY,CAAC,GAAsB;IAC1C,OAAQ,GAAG,CAAC,IAAqC,CAAC,QAAQ,CAAC;AAC7D,CAAC;AAKD,MAAM,CAAC,MAAM,gCAAgC,GAIzC;IACF,IAAI,EAAE,8BAA8B;IACpC,QAAQ,EAAE,aAAa,CAAC,KAAK,EAAE,GAAY,EAAE,EAAE;QAC7C,IAAI,kCAAkC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACpD,OAAO,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,OAAwC,EAAE,CAAC,CAAC,CAAC;QACnG,CAAC;QACD,OAAO,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAClC,CAAC,CAAC;IACF,MAAM,EAAE,SAAS,CACf,KAAK,EACH,GAIC,EACkC,EAAE;QACrC,MAAM,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC;QAClC,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,UAAU,CAAiB,aAAa,CAAC,CAAC;QAC/D,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC;QAEpD,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QACjC,MAAM,CAAC,iBAAiB,GAAG,MAAM,CAAC;QAElC,IAAI,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAClC,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,CAAC;QACrG,CAAC;QAED,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;YACvB,IAAI,EAAE,4CAA4C;YAClD,MAAM,EAAE,IAAI;SAC2B,CAAC,CAAC;QAC3C,OAAO,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC,CACF;CACF,CAAC"}
@@ -11,6 +11,7 @@ export declare class WSSendProvider implements EventoSendProvider<W3CWebSocketEv
11
11
  readonly chatIds: Map<string, ChatIdCtx>;
12
12
  readonly subscribedDocKeys: Set<string>;
13
13
  readonly subscribedRequestGrantKeys: Set<string>;
14
+ subscribedUserKey: string | undefined;
14
15
  readonly connId: string;
15
16
  constructor(ws: WebSocket, ende?: JSONEnDecoder);
16
17
  send<T>(ctx: HandleTriggerCtx<W3CWebSocketEvent, unknown, unknown>, res: unknown): Promise<Result<T>>;
@@ -7,6 +7,7 @@ export class WSSendProvider {
7
7
  chatIds = new Map();
8
8
  subscribedDocKeys = new Set();
9
9
  subscribedRequestGrantKeys = new Set();
10
+ subscribedUserKey = undefined;
10
11
  connId = crypto.randomUUID();
11
12
  constructor(ws, ende) {
12
13
  this.ws = ws;
@@ -1 +1 @@
1
- {"version":3,"file":"svc-ws-send-provider.js","sourceRoot":"","sources":["../jsr/svc-ws-send-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuD,sBAAsB,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACtH,OAAO,EAAE,OAAO,EAA4C,MAAM,sBAAsB,CAAC;AACzF,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAQ/B,MAAM,OAAO,cAAc;IAChB,EAAE,CAAY;IACd,IAAI,CAAgB;IACpB,OAAO,GAAG,IAAI,GAAG,EAAqB,CAAC;IAIvC,iBAAiB,GAAG,IAAI,GAAG,EAAU,CAAC;IAGtC,0BAA0B,GAAG,IAAI,GAAG,EAAU,CAAC;IAK/C,MAAM,GAAW,MAAM,CAAC,UAAU,EAAE,CAAC;IAC9C,YAAY,EAAa,EAAE,IAAoB;QAC7C,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,sBAAsB,EAAE,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,IAAI,CAAI,GAA0D,EAAE,GAAY;QACpF,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACnC,IAAI,GAAG,YAAY,IAAI,CAAC,MAAM,EAAE,CAAC;YAC/B,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC,CAAC,CAAC;YACzF,OAAO,MAAM,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;QAChD,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,OAAgB,CAAC;QACrB,IAAI,MAAM,YAAY,IAAI,CAAC,MAAM,EAAE,CAAC;YAClC,OAAO,GAAG;gBACR,GAAG,EAAE,GAAG,CAAC,GAAG;gBACZ,GAAG,EAAE,GAAG,CAAC,GAAG;gBACZ,GAAG,EAAE,GAAG,CAAC,GAAG;gBACZ,GAAG,EAAE,EAAE;gBACP,OAAO,EAAE,GAAG;aACb,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,MAAM,CAAC;QACnB,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;QAC1C,OAAO,MAAM,CAAC,EAAE,CAAC,OAAuB,CAAC,CAAC;IAC5C,CAAC;CACF"}
1
+ {"version":3,"file":"svc-ws-send-provider.js","sourceRoot":"","sources":["../jsr/svc-ws-send-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuD,sBAAsB,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACtH,OAAO,EAAE,OAAO,EAA4C,MAAM,sBAAsB,CAAC;AACzF,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAQ/B,MAAM,OAAO,cAAc;IAChB,EAAE,CAAY;IACd,IAAI,CAAgB;IACpB,OAAO,GAAG,IAAI,GAAG,EAAqB,CAAC;IAIvC,iBAAiB,GAAG,IAAI,GAAG,EAAU,CAAC;IAGtC,0BAA0B,GAAG,IAAI,GAAG,EAAU,CAAC;IAIxD,iBAAiB,GAAuB,SAAS,CAAC;IAKzC,MAAM,GAAW,MAAM,CAAC,UAAU,EAAE,CAAC;IAC9C,YAAY,EAAa,EAAE,IAAoB;QAC7C,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,sBAAsB,EAAE,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,IAAI,CAAI,GAA0D,EAAE,GAAY;QACpF,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACnC,IAAI,GAAG,YAAY,IAAI,CAAC,MAAM,EAAE,CAAC;YAC/B,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC,CAAC,CAAC;YACzF,OAAO,MAAM,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;QAChD,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,OAAgB,CAAC;QACrB,IAAI,MAAM,YAAY,IAAI,CAAC,MAAM,EAAE,CAAC;YAClC,OAAO,GAAG;gBACR,GAAG,EAAE,GAAG,CAAC,GAAG;gBACZ,GAAG,EAAE,GAAG,CAAC,GAAG;gBACZ,GAAG,EAAE,GAAG,CAAC,GAAG;gBACZ,GAAG,EAAE,EAAE;gBACP,OAAO,EAAE,GAAG;aACb,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,MAAM,CAAC;QACnB,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;QAC1C,OAAO,MAAM,CAAC,EAAE,CAAC,OAAuB,CAAC,CAAC;IAC5C,CAAC;CACF"}
package/types.d.ts CHANGED
@@ -4,7 +4,7 @@ import { WSSendProvider } from "./svc-ws-send-provider.js";
4
4
  import { DeviceIdCAIf } from "@fireproof/core-types-device-id";
5
5
  import { Logger, Result } from "@adviser/cement";
6
6
  import { LLMRequest } from "@vibes.diy/call-ai-v2";
7
- import { type EvtRequestGrant, LLMHeaders, MsgBase, VibesAssetStorage, VibesFPApiParameters } from "@vibes.diy/api-types";
7
+ import { type EvtRequestGrant, type EvtUserNotification, LLMHeaders, MsgBase, VibesAssetStorage, VibesFPApiParameters } from "@vibes.diy/api-types";
8
8
  import { VibesApiTables, VibesSqlite } from "@vibes.diy/api-sql";
9
9
  import { type } from "arktype";
10
10
  import type { AssetGrantSigner } from "./asset-grant.js";
@@ -65,6 +65,9 @@ export interface VibesApiSQLCtx {
65
65
  notifyRequestGrantChanged?(evt: EvtRequestGrant, senderConnId: string): Promise<void>;
66
66
  registerRequestGrantSubscription?(subscriptionKey: string): Promise<void>;
67
67
  deregisterRequestGrantSubscription?(subscriptionKey: string): Promise<void>;
68
+ notifyUser?(userId: string, evt: EvtUserNotification, senderConnId: string): Promise<void>;
69
+ registerUserSubscription?(userId: string): Promise<void>;
70
+ deregisterUserSubscription?(userId: string): Promise<void>;
68
71
  }
69
72
  export declare const UserSlugBinding: import("arktype/internal/variants/object.ts").ObjectType<{
70
73
  type: "vibes.diy-user-slug-binding";
package/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../jsr/types.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAuD/B,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC;IAClC,IAAI,EAAE,+BAA+B;IACrC,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,QAAQ;IAClB,MAAM,EAAE,QAAQ;CACjB,CAAC,CAAC;AAGH,MAAM,UAAU,iBAAiB,CAAC,GAAY;IAC5C,OAAO,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC;IACjC,IAAI,EAAE,8BAA8B;IACpC,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,QAAQ;IACjB,MAAM,EAAE,QAAQ;CACjB,CAAC,CAAC;AAGH,MAAM,UAAU,gBAAgB,CAAC,GAAY;IAC3C,OAAO,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC;IACrC,IAAI,EAAE,mCAAmC;IACzC,QAAQ,EAAE,eAAe;IACzB,OAAO,EAAE,cAAc;CACxB,CAAC,CAAC;AAGH,MAAM,UAAU,oBAAoB,CAAC,GAAY;IAC/C,OAAO,CAAC,CAAC,kBAAkB,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3D,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../jsr/types.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AA0D/B,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC;IAClC,IAAI,EAAE,+BAA+B;IACrC,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,QAAQ;IAClB,MAAM,EAAE,QAAQ;CACjB,CAAC,CAAC;AAGH,MAAM,UAAU,iBAAiB,CAAC,GAAY;IAC5C,OAAO,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC;IACjC,IAAI,EAAE,8BAA8B;IACpC,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,QAAQ;IACjB,MAAM,EAAE,QAAQ;CACjB,CAAC,CAAC;AAGH,MAAM,UAAU,gBAAgB,CAAC,GAAY;IAC3C,OAAO,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC;IACrC,IAAI,EAAE,mCAAmC;IACzC,QAAQ,EAAE,eAAe;IACzB,OAAO,EAAE,cAAc;CACxB,CAAC,CAAC;AAGH,MAAM,UAAU,oBAAoB,CAAC,GAAY;IAC/C,OAAO,CAAC,CAAC,kBAAkB,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3D,CAAC"}
@@ -19,7 +19,7 @@ import { createInviteEvento, revokeInviteEvento, redeemInviteEvento, hasAccessIn
19
19
  import { listUserSlugBindingsEvento, createUserSlugBindingEvento, deleteUserSlugBindingEvento, } from "./public/user-slug-bindings.js";
20
20
  import { listRequestGrantsEvento, subscribeRequestGrantsEvento, requestAccessEvento, approveRequestEvento, requestSetRoleEvento, revokeRequestEvento, hasAccessRequestEvento, } from "./public/request-flow.js";
21
21
  import { listModelsEvento } from "./public/list-models.js";
22
- import { putDocEvento, getDocEvento, queryDocsEvento, deleteDocEvento, subscribeDocsEvento, listDbNamesEvento, } from "./public/app-documents.js";
22
+ import { putDocEvento, getDocEvento, queryDocsEvento, deleteDocEvento, subscribeDocsEvento, listDbNamesEvento, listDmThreadsEvento, markDmReadEvento, } from "./public/app-documents.js";
23
23
  import { listMembersEvento } from "./public/list-members.js";
24
24
  import { listMembershipsEvento } from "./public/list-memberships.js";
25
25
  import { whoAmIEvento } from "./public/who-am-i.js";
@@ -30,9 +30,11 @@ import { reportActiveMembersEvento } from "./public/report-active-members.js";
30
30
  import { reportTopVibesByMembersEvento } from "./public/report-top-vibes-by-members.js";
31
31
  import { reportAttributionReferrersEvento } from "./public/report-attribution-referrers.js";
32
32
  import { reportCampaignHealthEvento } from "./public/report-campaign-health.js";
33
+ import { reportCampaignAdPreviewsEvento } from "./public/report-campaign-ad-previews.js";
34
+ import { subscribeUserNotificationsEvento } from "./public/subscribe-user-notifications.js";
33
35
  export const vibesMsgEvento = Lazy(() => {
34
36
  const evento = new Evento(new W3CWebSocketEventEventoEnDecoder());
35
- evento.push(ensureAppSlugItemEvento, getFPCloudTokenEvento, listUserSlugAppSlugEvento, listRecentVibesEvento, pinRecentVibeEvento, getChatDetailsEvento, getAppByFsIdEvento, openChat, promptChatSection, createInviteEvento, revokeInviteEvento, redeemInviteEvento, hasAccessInviteEvento, inviteSetRoleEvento, listInviteGrantsEvento, requestAccessEvento, hasAccessRequestEvento, approveRequestEvento, requestSetRoleEvento, revokeRequestEvento, listRequestGrantsEvento, subscribeRequestGrantsEvento, getCertFromCsrEvento, listModelsEvento, ensureAppSettingsEvento, setModeFsIdEvento, forkAppEvento, ensureUserSettingsEvento, listApplicationChats, listUserSlugBindingsEvento, createUserSlugBindingEvento, deleteUserSlugBindingEvento, putDocEvento, getDocEvento, queryDocsEvento, deleteDocEvento, subscribeDocsEvento, listDbNamesEvento, listMembersEvento, listMembershipsEvento, whoAmIEvento, assetUploadGrantEvento, reportGrowthMembershipsEvento, reportGrowthVibesWithDataEvento, reportActiveMembersEvento, reportTopVibesByMembersEvento, reportAttributionReferrersEvento, reportCampaignHealthEvento, {
37
+ evento.push(ensureAppSlugItemEvento, getFPCloudTokenEvento, listUserSlugAppSlugEvento, listRecentVibesEvento, pinRecentVibeEvento, getChatDetailsEvento, getAppByFsIdEvento, openChat, promptChatSection, createInviteEvento, revokeInviteEvento, redeemInviteEvento, hasAccessInviteEvento, inviteSetRoleEvento, listInviteGrantsEvento, requestAccessEvento, hasAccessRequestEvento, approveRequestEvento, requestSetRoleEvento, revokeRequestEvento, listRequestGrantsEvento, subscribeRequestGrantsEvento, getCertFromCsrEvento, listModelsEvento, ensureAppSettingsEvento, setModeFsIdEvento, forkAppEvento, ensureUserSettingsEvento, listApplicationChats, listUserSlugBindingsEvento, createUserSlugBindingEvento, deleteUserSlugBindingEvento, putDocEvento, getDocEvento, queryDocsEvento, deleteDocEvento, subscribeDocsEvento, listDbNamesEvento, listDmThreadsEvento, markDmReadEvento, subscribeUserNotificationsEvento, listMembersEvento, listMembershipsEvento, whoAmIEvento, assetUploadGrantEvento, reportGrowthMembershipsEvento, reportGrowthVibesWithDataEvento, reportActiveMembersEvento, reportTopVibesByMembersEvento, reportAttributionReferrersEvento, reportCampaignHealthEvento, reportCampaignAdPreviewsEvento, {
36
38
  type: EventoType.WildCard,
37
39
  hash: "not-msg-implemented-handler",
38
40
  handle: async (ctx) => {
@@ -1 +1 @@
1
- {"version":3,"file":"vibes-msg-evento.js","sourceRoot":"","sources":["../jsr/vibes-msg-evento.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vibes-msg-evento.js","sourceRoot":"","sources":["../jsr/vibes-msg-evento.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- import { Result } from "@adviser/cement";
2
- import { VibesApiSQLCtx } from "../types.js";
3
- export interface VibeSlugPair {
4
- readonly userSlug: string;
5
- readonly appSlug: string;
6
- }
7
- export declare function parseVibePathname(pathname: string): VibeSlugPair | undefined;
8
- export declare function getVibeOgTitle(ctx: VibesApiSQLCtx, slugs: VibeSlugPair): Promise<Result<string | undefined>>;
@@ -1,33 +0,0 @@
1
- import { exception2Result, Result } from "@adviser/cement";
2
- import { ensureLogger } from "@fireproof/core-runtime";
3
- import { and, desc, eq } from "drizzle-orm/sql/expressions";
4
- import { isMetaTitle, MetaItem, parseArrayWarning } from "@vibes.diy/api-types";
5
- export function parseVibePathname(pathname) {
6
- const parts = pathname.split("/");
7
- const userSlug = parts[2];
8
- const appSlug = parts[3];
9
- if (parts[1] !== "vibe" || userSlug === undefined || userSlug === "" || appSlug === undefined || appSlug === "") {
10
- return undefined;
11
- }
12
- return { userSlug, appSlug };
13
- }
14
- export async function getVibeOgTitle(ctx, slugs) {
15
- return exception2Result(async () => {
16
- const row = await ctx.sql.db
17
- .select({ meta: ctx.sql.tables.apps.meta })
18
- .from(ctx.sql.tables.apps)
19
- .where(and(eq(ctx.sql.tables.apps.userSlug, slugs.userSlug), eq(ctx.sql.tables.apps.appSlug, slugs.appSlug), eq(ctx.sql.tables.apps.mode, "production")))
20
- .orderBy(desc(ctx.sql.tables.apps.releaseSeq))
21
- .limit(1)
22
- .then((r) => r[0]);
23
- if (row === undefined)
24
- return Result.Ok(undefined);
25
- const { filtered: metaItems, warning } = parseArrayWarning(row.meta, MetaItem);
26
- if (warning.length > 0) {
27
- ensureLogger(ctx.sthis, "getVibeOgTitle").Warn().Any({ parseErrors: warning }).Msg("skip");
28
- }
29
- const titleItem = metaItems.find(isMetaTitle);
30
- return Result.Ok(titleItem === undefined ? undefined : titleItem.title);
31
- });
32
- }
33
- //# sourceMappingURL=get-vibe-og-title.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-vibe-og-title.js","sourceRoot":"","sources":["../../jsr/intern/get-vibe-og-title.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAUhF,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAChD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAElC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAC1B,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACzB,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,EAAE,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;QAChH,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;AAC/B,CAAC;AAKD,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAmB,EAAE,KAAmB;IAC3E,OAAO,gBAAgB,CAAC,KAAK,IAAyC,EAAE;QACtE,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,EAAE;aACzB,MAAM,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;aAC1C,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;aACzB,KAAK,CACJ,GAAG,CACD,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,EAChD,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,EAC9C,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAC3C,CACF;aACA,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aAC7C,KAAK,CAAC,CAAC,CAAC;aACR,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAErB,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;QAEnD,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,iBAAiB,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC/E,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC7F,CAAC;QAED,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC9C,OAAO,MAAM,CAAC,EAAE,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;AACL,CAAC"}