@vibes.diy/api-svc 14.0.21 → 14.0.22

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 (94) hide show
  1. package/create-handler.js +12 -0
  2. package/create-handler.js.map +1 -1
  3. package/evento-handler-manifest.js +2 -0
  4. package/evento-handler-manifest.js.map +1 -1
  5. package/intern/agent-assembly.d.ts +1 -0
  6. package/intern/agent-assembly.js +6 -1
  7. package/intern/agent-assembly.js.map +1 -1
  8. package/intern/agent-belt.d.ts +4 -1
  9. package/intern/agent-belt.js +12 -3
  10. package/intern/agent-belt.js.map +1 -1
  11. package/intern/agent-build-tools.d.ts +4 -0
  12. package/intern/agent-build-tools.js +6 -0
  13. package/intern/agent-build-tools.js.map +1 -1
  14. package/intern/agent-dispatcher.d.ts +1 -1
  15. package/intern/agent-dispatcher.js +4 -4
  16. package/intern/agent-dispatcher.js.map +1 -1
  17. package/intern/agent-evidence.d.ts +12 -0
  18. package/intern/agent-evidence.js +70 -0
  19. package/intern/agent-evidence.js.map +1 -0
  20. package/intern/agent-file-tools.d.ts +12 -0
  21. package/intern/agent-file-tools.js +162 -0
  22. package/intern/agent-file-tools.js.map +1 -0
  23. package/intern/agent-file-validation.d.ts +9 -0
  24. package/intern/agent-file-validation.js +81 -0
  25. package/intern/agent-file-validation.js.map +1 -0
  26. package/intern/agent-instruction.d.ts +1 -1
  27. package/intern/agent-instruction.js +1 -1
  28. package/intern/agent-lane-flag.d.ts +7 -0
  29. package/intern/agent-lane-flag.js +3 -0
  30. package/intern/agent-lane-flag.js.map +1 -1
  31. package/intern/agent-session-instruction.d.ts +1 -0
  32. package/intern/agent-session-instruction.js +43 -0
  33. package/intern/agent-session-instruction.js.map +1 -0
  34. package/intern/agent-session-runtime.d.ts +39 -0
  35. package/intern/agent-session-runtime.js +247 -0
  36. package/intern/agent-session-runtime.js.map +1 -0
  37. package/intern/agent-session-store.d.ts +6 -0
  38. package/intern/agent-session-store.js +52 -0
  39. package/intern/agent-session-store.js.map +1 -0
  40. package/intern/agent-session.d.ts +193 -0
  41. package/intern/agent-session.js +180 -0
  42. package/intern/agent-session.js.map +1 -0
  43. package/intern/agent-turn.d.ts +5 -1
  44. package/intern/agent-turn.js +7 -3
  45. package/intern/agent-turn.js.map +1 -1
  46. package/intern/agent-wake.d.ts +10 -6
  47. package/intern/agent-wake.js +3 -1
  48. package/intern/agent-wake.js.map +1 -1
  49. package/intern/llm-tool-loop.d.ts +11 -1
  50. package/intern/llm-tool-loop.js +79 -7
  51. package/intern/llm-tool-loop.js.map +1 -1
  52. package/intern/mint-fire-core.js +3 -3
  53. package/intern/mint-fire-core.js.map +1 -1
  54. package/intern/open-turn-store.js +2 -2
  55. package/intern/open-turn-store.js.map +1 -1
  56. package/intern/process-access-bindings.d.ts +1 -0
  57. package/intern/process-access-bindings.js +1 -1
  58. package/intern/process-access-bindings.js.map +1 -1
  59. package/intern/prompt-dispatch-context.d.ts +4 -0
  60. package/intern/prompt-dispatch-context.js +19 -0
  61. package/intern/prompt-dispatch-context.js.map +1 -0
  62. package/intern/work-tools.d.ts +1 -0
  63. package/intern/work-tools.js +1 -1
  64. package/intern/work-tools.js.map +1 -1
  65. package/package.json +12 -11
  66. package/public/fork-app.js +24 -26
  67. package/public/fork-app.js.map +1 -1
  68. package/public/fs-prompt.d.ts +2 -1
  69. package/public/fs-prompt.js +57 -2
  70. package/public/fs-prompt.js.map +1 -1
  71. package/public/llm-dispatch.d.ts +2 -2
  72. package/public/llm-dispatch.js +26 -1
  73. package/public/llm-dispatch.js.map +1 -1
  74. package/public/open-chat.d.ts +2 -2
  75. package/public/open-chat.js +25 -0
  76. package/public/open-chat.js.map +1 -1
  77. package/public/prompt-chat-section.js +302 -12
  78. package/public/prompt-chat-section.js.map +1 -1
  79. package/public/report-top-vibes-by-traffic.d.ts +5 -0
  80. package/public/report-top-vibes-by-traffic.js +69 -0
  81. package/public/report-top-vibes-by-traffic.js.map +1 -0
  82. package/public/vibe-traffic-source.d.ts +114 -0
  83. package/public/vibe-traffic-source.js +322 -0
  84. package/public/vibe-traffic-source.js.map +1 -0
  85. package/types.d.ts +5 -0
  86. package/types.js.map +1 -1
  87. package/usage-report/codegen-delivery-alert.js +2 -2
  88. package/usage-report/codegen-delivery-alert.js.map +1 -1
  89. package/usage-report/vibe-traffic-alert-util.d.ts +74 -0
  90. package/usage-report/vibe-traffic-alert-util.js +237 -0
  91. package/usage-report/vibe-traffic-alert-util.js.map +1 -0
  92. package/usage-report/vibe-traffic-alert.d.ts +2 -0
  93. package/usage-report/vibe-traffic-alert.js +99 -0
  94. package/usage-report/vibe-traffic-alert.js.map +1 -0
@@ -0,0 +1,322 @@
1
+ import { Result, exception2Result } from "@adviser/cement";
2
+ export const CF_ZONE_TAG = "13f147047a38c9d54a576424347cb4be";
3
+ export const CF_GRAPHQL_ENDPOINT = "https://api.cloudflare.com/client/v4/graphql";
4
+ export const DEFAULT_POSTHOG_QUERY_HOST = "https://us.posthog.com";
5
+ export const WINDOW_DAYS = 7;
6
+ export const CF_MAX_WINDOW_DAYS = 1;
7
+ export const CF_RETENTION_DAYS = 8;
8
+ export const CF_ROW_CAP = 5000;
9
+ export const POSTHOG_ROW_CAP = 5000;
10
+ export function vibeKeyOf(v) {
11
+ return `${v.ownerHandle}/${v.appSlug}`;
12
+ }
13
+ export function vibeTrafficUrl(v) {
14
+ return `https://vibes.diy/vibe/${v.ownerHandle}/${v.appSlug}`;
15
+ }
16
+ export function parseVibePath(path) {
17
+ const clean = path.split("?")[0].split("#")[0].replace(/\/+$/, "");
18
+ const parts = clean.split("/");
19
+ if (parts.length !== 4)
20
+ return undefined;
21
+ if (parts[0] !== "" || parts[1] !== "vibe")
22
+ return undefined;
23
+ const ownerHandle = parts[2];
24
+ const appSlug = parts[3];
25
+ if (ownerHandle === "" || appSlug === "")
26
+ return undefined;
27
+ return { ownerHandle, appSlug };
28
+ }
29
+ export const EXCLUDED_OWNER_HANDLE_PATTERNS = [
30
+ /^qa$/i,
31
+ /^system$/i,
32
+ /^jchris/i,
33
+ /^chris-dev$/i,
34
+ /^jchanimal$/i,
35
+ /^bot$/i,
36
+ /^eval$/i,
37
+ /^mentions$/i,
38
+ ];
39
+ export function isExcludedOwnerHandle(ownerHandle, extra = []) {
40
+ const h = ownerHandle.trim();
41
+ if (extra.some((e) => e.trim().toLowerCase() === h.toLowerCase() && e.trim() !== ""))
42
+ return true;
43
+ return EXCLUDED_OWNER_HANDLE_PATTERNS.some((re) => re.test(h));
44
+ }
45
+ export const CF_NOTE = "Cloudflare counts REQUESTS that reached the edge, bots and scrapers included — it is traffic, not audience. `visits` is Cloudflare's own unique-ish measure and behaves like unique IPs, so a rotating proxy inflates it; requests-per-visit near 1.0 is that signature. Bot Management fields are authz-denied on our plan. 1-day query cap, ~8 days retained: there is no history behind this column.";
46
+ export const CF_VIBE_VISITS_QUERY = `query($zone:String!,$start:Time!,$end:Time!,$limit:Int!){
47
+ viewer{ zones(filter:{zoneTag:$zone}){
48
+ httpRequestsAdaptiveGroups(
49
+ limit:$limit,
50
+ filter:{datetime_geq:$start,datetime_lt:$end,clientRequestPath_like:"/vibe/%"},
51
+ orderBy:[sum_visits_DESC]
52
+ ){ dimensions{ clientRequestPath } sum{ visits } count }
53
+ }}
54
+ }`;
55
+ export function utcDayBuckets(now, days) {
56
+ const out = [];
57
+ const midnight = Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate());
58
+ for (let i = 0; i < days; i++) {
59
+ const startMs = midnight - i * 86_400_000;
60
+ const endMs = i === 0 ? now.getTime() : startMs + 86_400_000;
61
+ out.push({
62
+ start: new Date(startMs).toISOString(),
63
+ end: new Date(endMs).toISOString(),
64
+ day: new Date(startMs).toISOString().slice(0, 10),
65
+ });
66
+ }
67
+ return out;
68
+ }
69
+ export function foldCfGroups(day, groups) {
70
+ const byVibe = new Map();
71
+ let requests = 0;
72
+ for (const g of groups) {
73
+ const path = g.dimensions?.clientRequestPath;
74
+ if (path === undefined)
75
+ continue;
76
+ const key = parseVibePath(path);
77
+ if (key === undefined)
78
+ continue;
79
+ requests += g.count ?? 0;
80
+ const k = vibeKeyOf(key);
81
+ const prior = byVibe.get(k);
82
+ const n = (prior?.n ?? 0) + (g.sum?.visits ?? 0);
83
+ byVibe.set(k, { day, ownerHandle: key.ownerHandle, appSlug: key.appSlug, n });
84
+ }
85
+ return { rows: [...byVibe.values()], requests };
86
+ }
87
+ export async function fetchCloudflareVibeVisits(opts) {
88
+ const base = { id: "cloudflare", label: "Cloudflare visits", note: CF_NOTE };
89
+ if (opts.token === undefined || opts.token === "") {
90
+ return {
91
+ rows: [],
92
+ requests: 0,
93
+ readDays: [],
94
+ health: { ...base, available: false, error: "CLOUDFLARE_ANALYTICS_TOKEN is not configured" },
95
+ };
96
+ }
97
+ const token = opts.token;
98
+ const zoneTag = opts.zoneTag ?? CF_ZONE_TAG;
99
+ const days = Math.min(opts.days ?? WINDOW_DAYS, CF_RETENTION_DAYS);
100
+ const buckets = utcDayBuckets(opts.now, days);
101
+ const settled = await Promise.all(buckets.map(async (b) => {
102
+ const res = await exception2Result(() => opts.fetchImpl(CF_GRAPHQL_ENDPOINT, {
103
+ method: "POST",
104
+ headers: { Authorization: `Bearer ${token}`, "Content-Type": "application/json" },
105
+ body: JSON.stringify({
106
+ query: CF_VIBE_VISITS_QUERY,
107
+ variables: { zone: zoneTag, start: b.start, end: b.end, limit: CF_ROW_CAP },
108
+ }),
109
+ signal: AbortSignal.timeout(20_000),
110
+ }));
111
+ if (res.isErr())
112
+ return { day: b.day, err: "network error" };
113
+ const r = res.Ok();
114
+ if (!r.ok)
115
+ return { day: b.day, err: `cloudflare graphql returned ${r.status}` };
116
+ const parsed = await exception2Result(() => r.json());
117
+ if (parsed.isErr())
118
+ return { day: b.day, err: "unparseable response" };
119
+ const body = parsed.Ok();
120
+ if (Array.isArray(body.errors) && body.errors.length > 0) {
121
+ return { day: b.day, err: body.errors[0]?.message ?? "graphql error" };
122
+ }
123
+ return { day: b.day, groups: body.data?.viewer?.zones?.[0]?.httpRequestsAdaptiveGroups ?? [] };
124
+ }));
125
+ const rows = [];
126
+ const readDays = [];
127
+ let requests = 0;
128
+ let truncated = false;
129
+ const errors = [];
130
+ for (const s of settled) {
131
+ if (s.err !== undefined) {
132
+ errors.push(`${s.day}: ${s.err}`);
133
+ continue;
134
+ }
135
+ readDays.push(s.day);
136
+ const groups = s.groups ?? [];
137
+ if (groups.length >= CF_ROW_CAP)
138
+ truncated = true;
139
+ const folded = foldCfGroups(s.day, groups);
140
+ rows.push(...folded.rows);
141
+ requests += folded.requests;
142
+ }
143
+ if (errors.length === buckets.length) {
144
+ return { rows: [], requests: 0, readDays: [], health: { ...base, available: false, error: errors[0] } };
145
+ }
146
+ return {
147
+ rows,
148
+ requests,
149
+ readDays,
150
+ health: {
151
+ ...base,
152
+ available: true,
153
+ ...(errors.length > 0 ? { error: `${errors.length} of ${buckets.length} days unreadable — ${errors[0]}` } : {}),
154
+ ...(truncated ? { truncated: true } : {}),
155
+ },
156
+ };
157
+ }
158
+ export const POSTHOG_NOTE = "PostHog counts PEOPLE (distinct `person_id` on `$pageview`), which requires JavaScript to run — so it excludes our dominant bot class by construction, and equally excludes anyone who never executed our script. It is US-only (the #4257 fail-closed geo gate) and lossy to ad blockers, so treat it as a FLOOR and correct by roughly 1.2-1.5x (agents/counting-real-visitors.md).";
159
+ export const POSTHOG_CORRECTION_LOW = 1.2;
160
+ export const POSTHOG_CORRECTION_HIGH = 1.5;
161
+ async function hogql(opts, query) {
162
+ const res = await exception2Result(() => opts.fetchImpl(`${opts.host.replace(/\/+$/, "")}/api/projects/${opts.projectId}/query/`, {
163
+ method: "POST",
164
+ headers: { Authorization: `Bearer ${opts.apiKey}`, "Content-Type": "application/json" },
165
+ body: JSON.stringify({ query: { kind: "HogQLQuery", query } }),
166
+ signal: AbortSignal.timeout(30_000),
167
+ }));
168
+ if (res.isErr())
169
+ return Result.Err("network error");
170
+ const r = res.Ok();
171
+ if (!r.ok)
172
+ return Result.Err(`posthog query returned ${r.status}`);
173
+ const parsed = await exception2Result(() => r.json());
174
+ if (parsed.isErr())
175
+ return Result.Err("unparseable response");
176
+ return Result.Ok(parsed.Ok().results ?? []);
177
+ }
178
+ function num(v) {
179
+ const n = typeof v === "number" ? v : Number(v);
180
+ return Number.isFinite(n) ? n : 0;
181
+ }
182
+ function str(v) {
183
+ return typeof v === "string" ? v : "";
184
+ }
185
+ export async function fetchPostHogVibePeople(opts) {
186
+ const base = { id: "posthog", label: "PostHog people", note: POSTHOG_NOTE };
187
+ if (opts.apiKey === undefined || opts.apiKey === "" || opts.projectId === undefined || opts.projectId === "") {
188
+ return {
189
+ perDayAvailable: false,
190
+ windowAvailable: false,
191
+ perDay: [],
192
+ windowRows: [],
193
+ health: {
194
+ ...base,
195
+ available: false,
196
+ error: "POSTHOG_QUERY_API_KEY / POSTHOG_PROJECT_ID are not configured",
197
+ },
198
+ };
199
+ }
200
+ const days = opts.days ?? WINDOW_DAYS;
201
+ const io = {
202
+ apiKey: opts.apiKey,
203
+ projectId: opts.projectId,
204
+ host: opts.host === undefined || opts.host === "" ? DEFAULT_POSTHOG_QUERY_HOST : opts.host,
205
+ fetchImpl: opts.fetchImpl,
206
+ };
207
+ const [perDayRes, windowRes] = await Promise.all([
208
+ hogql(io, `select toString(toDate(timestamp)) as d, properties.$pathname as p, count(distinct person_id) as people
209
+ from events
210
+ where event = '$pageview' and timestamp >= now() - interval ${days} day and p like '/vibe/%'
211
+ group by d, p order by people desc limit ${POSTHOG_ROW_CAP}`),
212
+ hogql(io, `select properties.$pathname as p, count(distinct person_id) as people
213
+ from events
214
+ where event = '$pageview' and timestamp >= now() - interval ${days} day and p like '/vibe/%'
215
+ group by p order by people desc limit ${POSTHOG_ROW_CAP}`),
216
+ ]);
217
+ if (perDayRes.isErr() && windowRes.isErr()) {
218
+ return {
219
+ perDayAvailable: false,
220
+ windowAvailable: false,
221
+ perDay: [],
222
+ windowRows: [],
223
+ health: { ...base, available: false, error: perDayRes.Err().message },
224
+ };
225
+ }
226
+ const perDay = [];
227
+ for (const r of perDayRes.isOk() ? perDayRes.Ok() : []) {
228
+ const key = parseVibePath(str(r[1]));
229
+ if (key === undefined)
230
+ continue;
231
+ perDay.push({ day: str(r[0]).slice(0, 10), ownerHandle: key.ownerHandle, appSlug: key.appSlug, n: num(r[2]) });
232
+ }
233
+ const windowRows = [];
234
+ for (const r of windowRes.isOk() ? windowRes.Ok() : []) {
235
+ const key = parseVibePath(str(r[0]));
236
+ if (key === undefined)
237
+ continue;
238
+ windowRows.push({ ownerHandle: key.ownerHandle, appSlug: key.appSlug, n: num(r[1]) });
239
+ }
240
+ const truncated = perDay.length >= POSTHOG_ROW_CAP || windowRows.length >= POSTHOG_ROW_CAP;
241
+ return {
242
+ perDayAvailable: perDayRes.isOk(),
243
+ windowAvailable: windowRes.isOk(),
244
+ perDay,
245
+ windowRows,
246
+ health: {
247
+ ...base,
248
+ available: true,
249
+ ...(truncated ? { truncated: true } : {}),
250
+ },
251
+ };
252
+ }
253
+ export function posthogHealth(ph, which) {
254
+ const ok = which === "window" ? ph.windowAvailable : ph.perDayAvailable;
255
+ if (ok)
256
+ return ph.health;
257
+ return {
258
+ ...ph.health,
259
+ available: false,
260
+ error: ph.health.error ?? `the PostHog ${which === "window" ? "window" : "per-day"} query failed`,
261
+ };
262
+ }
263
+ export function rollupVibeTraffic(input) {
264
+ const acc = new Map();
265
+ const take = (k) => {
266
+ if (isExcludedOwnerHandle(k.ownerHandle, input.excludeHandles ?? []))
267
+ return undefined;
268
+ const id = vibeKeyOf(k);
269
+ let a = acc.get(id);
270
+ if (a === undefined) {
271
+ a = {
272
+ ownerHandle: k.ownerHandle,
273
+ appSlug: k.appSlug,
274
+ visits: 0,
275
+ people: 0,
276
+ visitsByDay: new Map(),
277
+ peopleByDay: new Map(),
278
+ };
279
+ acc.set(id, a);
280
+ }
281
+ return a;
282
+ };
283
+ for (const r of input.cf) {
284
+ const a = take(r);
285
+ if (a === undefined)
286
+ continue;
287
+ a.visits += r.n;
288
+ a.visitsByDay.set(r.day, (a.visitsByDay.get(r.day) ?? 0) + r.n);
289
+ }
290
+ for (const r of input.phPerDay) {
291
+ const a = take(r);
292
+ if (a === undefined)
293
+ continue;
294
+ a.peopleByDay.set(r.day, (a.peopleByDay.get(r.day) ?? 0) + r.n);
295
+ }
296
+ for (const r of input.phWindow) {
297
+ const a = take(r);
298
+ if (a === undefined)
299
+ continue;
300
+ a.people += r.n;
301
+ }
302
+ const byDay = (m) => [...m.entries()].map(([day, n]) => ({ day, n })).sort((x, y) => (x.day < y.day ? 1 : x.day > y.day ? -1 : 0));
303
+ const rows = [...acc.values()].map((a) => ({
304
+ ownerHandle: a.ownerHandle,
305
+ appSlug: a.appSlug,
306
+ ...(input.cfAvailable ? { visits: a.visits } : {}),
307
+ ...(input.phAvailable ? { people: a.people } : {}),
308
+ visitsByDay: byDay(a.visitsByDay),
309
+ peopleByDay: byDay(a.peopleByDay),
310
+ }));
311
+ const primary = (r) => (input.cfAvailable ? (r.visits ?? 0) : (r.people ?? 0));
312
+ return rows.sort((x, y) => {
313
+ if (primary(x) !== primary(y))
314
+ return primary(y) - primary(x);
315
+ if ((y.people ?? 0) !== (x.people ?? 0))
316
+ return (y.people ?? 0) - (x.people ?? 0);
317
+ if (x.ownerHandle !== y.ownerHandle)
318
+ return x.ownerHandle < y.ownerHandle ? -1 : 1;
319
+ return x.appSlug < y.appSlug ? -1 : x.appSlug > y.appSlug ? 1 : 0;
320
+ });
321
+ }
322
+ //# sourceMappingURL=vibe-traffic-source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vibe-traffic-source.js","sourceRoot":"","sources":["../../jsr/public/vibe-traffic-source.ts"],"names":[],"mappings":"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"}
package/types.d.ts CHANGED
@@ -62,6 +62,11 @@ export interface VibesApiSQLCtx {
62
62
  metaCapiToken?: string;
63
63
  metaAdAccountId?: string;
64
64
  metaPixelId?: string;
65
+ cloudflareAnalyticsToken?: string;
66
+ cloudflareZoneTag?: string;
67
+ posthogQueryApiKey?: string;
68
+ posthogProjectId?: string;
69
+ posthogQueryHost?: string;
65
70
  notifyDocChanged?(evt: {
66
71
  ownerHandle: string;
67
72
  appSlug: string;
package/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../jsr/types.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AA+P/B,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,CAAC;IAChC,IAAI,EAAE,+BAA+B;IACrC,MAAM,EAAE,QAAQ;IAChB,WAAW,EAAE,QAAQ;IACrB,MAAM,EAAE,QAAQ;CACjB,CAAC,CAAC;AAGH,MAAM,UAAU,eAAe,CAAC,GAAY;IAC1C,OAAO,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,CAAC;AACtD,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,gBAAgB,GAAG,IAAI,CAAC;IACnC,IAAI,EAAE,mCAAmC;IACzC,WAAW,EAAE,aAAa;IAC1B,OAAO,EAAE,cAAc;CACxB,CAAC,CAAC;AAGH,MAAM,UAAU,kBAAkB,CAAC,GAAY;IAC7C,OAAO,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,CAAC;AACzD,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../jsr/types.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAoR/B,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,CAAC;IAChC,IAAI,EAAE,+BAA+B;IACrC,MAAM,EAAE,QAAQ;IAChB,WAAW,EAAE,QAAQ;IACrB,MAAM,EAAE,QAAQ;CACjB,CAAC,CAAC;AAGH,MAAM,UAAU,eAAe,CAAC,GAAY;IAC1C,OAAO,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,CAAC;AACtD,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,gBAAgB,GAAG,IAAI,CAAC;IACnC,IAAI,EAAE,mCAAmC;IACzC,WAAW,EAAE,aAAa;IAC1B,OAAO,EAAE,cAAc;CACxB,CAAC,CAAC;AAGH,MAAM,UAAU,kBAAkB,CAAC,GAAY;IAC7C,OAAO,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,CAAC;AACzD,CAAC"}
@@ -37,7 +37,7 @@ function asMillis(v) {
37
37
  }
38
38
  export async function run() {
39
39
  loadDevVars();
40
- const sinceHoursRaw = arg("since-hours");
40
+ const sinceHoursRaw = arg("--since-hours");
41
41
  const sinceHours = sinceHoursRaw === undefined ? DEFAULT_SINCE_HOURS : Number(sinceHoursRaw);
42
42
  if (!Number.isFinite(sinceHours) || sinceHours <= 0) {
43
43
  return Result.Err("usage: pnpm --dir vibes.diy/api/svc run codegen-delivery-alert [--since-hours 24] [--dry-run]");
@@ -55,7 +55,7 @@ export async function run() {
55
55
  if (apiKey === undefined || apiKey === "" || projectId === undefined || projectId === "") {
56
56
  return Result.Err("POSTHOG_API_KEY and POSTHOG_PROJECT_ID are required — nothing was measured");
57
57
  }
58
- const dryRun = flag("dry-run") || webhookUrl === undefined || webhookUrl === "";
58
+ const dryRun = flag("--dry-run") || webhookUrl === undefined || webhookUrl === "";
59
59
  const settledRes = await hogql(host, projectId, apiKey, `select timestamp, distinct_id, properties.outcome, properties.entry_touched, properties.companion_touched,
60
60
  properties.first_build, properties.owner_handle, properties.app_slug, properties.ms_from_submit,
61
61
  properties.turn_lane
@@ -1 +1 @@
1
- {"version":3,"file":"codegen-delivery-alert.js","sourceRoot":"","sources":["../../jsr/usage-report/codegen-delivery-alert.ts"],"names":[],"mappings":"AAyCA,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EACL,yBAAyB,EACzB,iBAAiB,EACjB,wBAAwB,GAGzB,MAAM,kCAAkC,CAAC;AAE1C,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAC/B,MAAM,oBAAoB,GAAG,wBAAwB,CAAC;AAStD,MAAM,OAAO,GAAG,MAAM,CAAC;AAOvB,KAAK,UAAU,KAAK,CAAC,IAAY,EAAE,SAAiB,EAAE,MAAc,EAAE,KAAa;IACjF,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC,GAAG,EAAE,CACtC,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,iBAAiB,SAAS,SAAS,EAAE;QACpE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,MAAM,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAClF,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,CAAC;KAC/D,CAAC,CACH,CAAC;IACF,IAAI,GAAG,CAAC,KAAK,EAAE;QAAE,OAAO,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC;IAC1B,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QAGjB,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,0BAA0B,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC5E,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,EAA4B,CAAC,CAAC;IACvF,IAAI,MAAM,CAAC,KAAK,EAAE;QAAE,OAAO,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9C,OAAO,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;AAChC,CAAC;AAED,SAAS,QAAQ,CAAC,CAAU;IAC1B,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACxC,CAAC;AAED,SAAS,MAAM,CAAC,CAAU;IAIxB,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC;AAC/C,CAAC;AAKD,SAAS,QAAQ,CAAC,CAAU;IAC1B,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAChD,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,QAAQ,CAAC,CAAU;IAC1B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,GAAG;IACvB,WAAW,EAAE,CAAC;IACd,MAAM,aAAa,GAAG,GAAG,CAAC,aAAa,CAAC,CAAC;IACzC,MAAM,UAAU,GAAG,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAC7F,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;QACpD,OAAO,MAAM,CAAC,GAAG,CAAC,+FAA+F,CAAC,CAAC;IACrH,CAAC;IAMD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,OAAO,CAAC;IACtF,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IACtD,MAAM,UAAU,GAAG,iBAAiB,CAAC;QACnC,4BAA4B,EAAE,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC;QACzE,gCAAgC,EAAE,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC;QACjF,qCAAqC,EAAE,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC;KAC5F,CAAC,CAAC;IAMH,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,EAAE,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,EAAE,EAAE,CAAC;QACzF,OAAO,MAAM,CAAC,GAAG,CAAC,4EAA4E,CAAC,CAAC;IAClG,CAAC;IAGD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,EAAE,CAAC;IAEhF,MAAM,UAAU,GAAG,MAAM,KAAK,CAC5B,IAAI,EACJ,SAAS,EACT,MAAM,EACN;;;;+EAI2E,UAAU;sCACnD,OAAO,EAAE,CAC5C,CAAC;IACF,IAAI,UAAU,CAAC,KAAK,EAAE;QAAE,OAAO,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAEtD,MAAM,YAAY,GAAG,MAAM,KAAK,CAC9B,IAAI,EACJ,SAAS,EACT,MAAM,EACN;;kFAE8E,UAAU;sCACtD,OAAO,EAAE,CAC5C,CAAC;IACF,IAAI,YAAY,CAAC,KAAK,EAAE;QAAE,OAAO,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAE1D,MAAM,OAAO,GAAqB,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5E,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClB,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1B,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvB,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1B,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxB,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3B,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvB,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAK5B,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACzB,CAAC,CAAC,CAAC;IACJ,MAAM,UAAU,GAAkB,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9E,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClB,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1B,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACpB,CAAC,CAAC,CAAC;IAMJ,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,KAAK,OAAO,IAAI,UAAU,CAAC,MAAM,KAAK,OAAO,CAAC;IAC3E,MAAM,OAAO,GAAG,wBAAwB,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IAC1E,MAAM,IAAI,GAAG,yBAAyB,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;IASxE,OAAO,CAAC,GAAG,CACT,mCAAmC,UAAU,aAAa,OAAO,CAAC,YAAY,oBAAoB,OAAO,CAAC,oBAAoB,YAAY,OAAO,CAAC,YAAY,eAAe,OAAO,CAAC,UAAU,gBAAgB,OAAO,CAAC,WAAW,YAAY,OAAO,CAAC,OAAO,CAAC,MAAM,WAAW,MAAM,WAAW,CAAC,MAAM,EAAE,CAC1S,CAAC;IACF,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CACT,yCAAyC,OAAO,4EAA4E,CAC7H,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,EAAE,CAAC;QAKX,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3C,OAAO,MAAM,CAAC,EAAE,EAAE,CAAC;IACrB,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC,GAAG,EAAE,CACtC,KAAK,CAAC,UAAoB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAC7H,CAAC;IACF,IAAI,GAAG,CAAC,KAAK,EAAE;QAAE,OAAO,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC,MAAM,KAAK,GAAG;QAAE,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,yBAAyB,GAAG,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACtG,OAAO,MAAM,CAAC,EAAE,EAAE,CAAC;AACrB,CAAC;AAED,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;IACpB,IAAI,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;QACnB,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACzC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"codegen-delivery-alert.js","sourceRoot":"","sources":["../../jsr/usage-report/codegen-delivery-alert.ts"],"names":[],"mappings":"AAyCA,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EACL,yBAAyB,EACzB,iBAAiB,EACjB,wBAAwB,GAGzB,MAAM,kCAAkC,CAAC;AAE1C,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAC/B,MAAM,oBAAoB,GAAG,wBAAwB,CAAC;AAStD,MAAM,OAAO,GAAG,MAAM,CAAC;AAOvB,KAAK,UAAU,KAAK,CAAC,IAAY,EAAE,SAAiB,EAAE,MAAc,EAAE,KAAa;IACjF,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC,GAAG,EAAE,CACtC,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,iBAAiB,SAAS,SAAS,EAAE;QACpE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,MAAM,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAClF,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,CAAC;KAC/D,CAAC,CACH,CAAC;IACF,IAAI,GAAG,CAAC,KAAK,EAAE;QAAE,OAAO,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC;IAC1B,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QAGjB,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,0BAA0B,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC5E,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,EAA4B,CAAC,CAAC;IACvF,IAAI,MAAM,CAAC,KAAK,EAAE;QAAE,OAAO,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9C,OAAO,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;AAChC,CAAC;AAED,SAAS,QAAQ,CAAC,CAAU;IAC1B,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACxC,CAAC;AAED,SAAS,MAAM,CAAC,CAAU;IAIxB,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC;AAC/C,CAAC;AAKD,SAAS,QAAQ,CAAC,CAAU;IAC1B,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAChD,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,QAAQ,CAAC,CAAU;IAC1B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,GAAG;IACvB,WAAW,EAAE,CAAC;IACd,MAAM,aAAa,GAAG,GAAG,CAAC,eAAe,CAAC,CAAC;IAC3C,MAAM,UAAU,GAAG,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAC7F,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;QACpD,OAAO,MAAM,CAAC,GAAG,CAAC,+FAA+F,CAAC,CAAC;IACrH,CAAC;IAMD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,OAAO,CAAC;IACtF,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IACtD,MAAM,UAAU,GAAG,iBAAiB,CAAC;QACnC,4BAA4B,EAAE,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC;QACzE,gCAAgC,EAAE,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC;QACjF,qCAAqC,EAAE,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC;KAC5F,CAAC,CAAC;IAMH,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,EAAE,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,EAAE,EAAE,CAAC;QACzF,OAAO,MAAM,CAAC,GAAG,CAAC,4EAA4E,CAAC,CAAC;IAClG,CAAC;IAGD,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,EAAE,CAAC;IAElF,MAAM,UAAU,GAAG,MAAM,KAAK,CAC5B,IAAI,EACJ,SAAS,EACT,MAAM,EACN;;;;+EAI2E,UAAU;sCACnD,OAAO,EAAE,CAC5C,CAAC;IACF,IAAI,UAAU,CAAC,KAAK,EAAE;QAAE,OAAO,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAEtD,MAAM,YAAY,GAAG,MAAM,KAAK,CAC9B,IAAI,EACJ,SAAS,EACT,MAAM,EACN;;kFAE8E,UAAU;sCACtD,OAAO,EAAE,CAC5C,CAAC;IACF,IAAI,YAAY,CAAC,KAAK,EAAE;QAAE,OAAO,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAE1D,MAAM,OAAO,GAAqB,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5E,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClB,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1B,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvB,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1B,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxB,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3B,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvB,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAK5B,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACzB,CAAC,CAAC,CAAC;IACJ,MAAM,UAAU,GAAkB,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9E,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClB,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1B,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACpB,CAAC,CAAC,CAAC;IAMJ,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,KAAK,OAAO,IAAI,UAAU,CAAC,MAAM,KAAK,OAAO,CAAC;IAC3E,MAAM,OAAO,GAAG,wBAAwB,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IAC1E,MAAM,IAAI,GAAG,yBAAyB,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;IASxE,OAAO,CAAC,GAAG,CACT,mCAAmC,UAAU,aAAa,OAAO,CAAC,YAAY,oBAAoB,OAAO,CAAC,oBAAoB,YAAY,OAAO,CAAC,YAAY,eAAe,OAAO,CAAC,UAAU,gBAAgB,OAAO,CAAC,WAAW,YAAY,OAAO,CAAC,OAAO,CAAC,MAAM,WAAW,MAAM,WAAW,CAAC,MAAM,EAAE,CAC1S,CAAC;IACF,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CACT,yCAAyC,OAAO,4EAA4E,CAC7H,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,EAAE,CAAC;QAKX,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3C,OAAO,MAAM,CAAC,EAAE,EAAE,CAAC;IACrB,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC,GAAG,EAAE,CACtC,KAAK,CAAC,UAAoB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAC7H,CAAC;IACF,IAAI,GAAG,CAAC,KAAK,EAAE;QAAE,OAAO,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC,MAAM,KAAK,GAAG;QAAE,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,yBAAyB,GAAG,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACtG,OAAO,MAAM,CAAC,EAAE,EAAE,CAAC;AACrB,CAAC;AAED,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;IACpB,IAAI,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;QACnB,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACzC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -0,0 +1,74 @@
1
+ export declare function sanitizeForDiscord(value: string): string;
2
+ export declare const DEFAULT_PEOPLE_THRESHOLD = 10;
3
+ export declare const DEFAULT_SURGE_MULTIPLE = 3;
4
+ export declare const DEFAULT_SURGE_FLOOR = 100;
5
+ export declare const DEFAULT_LOOKBACK_DAYS = 7;
6
+ export declare const MAX_LISTED = 10;
7
+ export declare const VIBE_TRAFFIC_ALERT_ENV_VARS: readonly string[];
8
+ export interface ThresholdEnv {
9
+ readonly VIBE_TRAFFIC_ALERT_PEOPLE_THRESHOLD?: string;
10
+ readonly VIBE_TRAFFIC_ALERT_SURGE_MULTIPLE?: string;
11
+ readonly VIBE_TRAFFIC_ALERT_SURGE_FLOOR?: string;
12
+ }
13
+ export interface Thresholds {
14
+ readonly peopleThreshold: number;
15
+ readonly surgeMultiple: number;
16
+ readonly surgeFloor: number;
17
+ readonly lookbackDays: number;
18
+ }
19
+ export declare function resolveTrafficThresholds(env: ThresholdEnv): Thresholds;
20
+ export declare function alertDayRefusal(day: string, readableDays: readonly string[]): string | undefined;
21
+ export declare function splitHandleList(raw: string | undefined): string[];
22
+ export declare function median(values: readonly number[]): number;
23
+ export type CrossingKind = "audience" | "surge";
24
+ export interface Crossing {
25
+ readonly ownerHandle: string;
26
+ readonly appSlug: string;
27
+ readonly kind: CrossingKind;
28
+ readonly day: string;
29
+ readonly value: number;
30
+ readonly baseline?: number;
31
+ readonly peopleThatDay: number;
32
+ readonly visitsThatDay: number;
33
+ }
34
+ export interface TrafficSeries {
35
+ readonly ownerHandle: string;
36
+ readonly appSlug: string;
37
+ readonly visitsByDay: readonly {
38
+ readonly day: string;
39
+ readonly n: number;
40
+ }[];
41
+ readonly peopleByDay: readonly {
42
+ readonly day: string;
43
+ readonly n: number;
44
+ }[];
45
+ }
46
+ export declare const MIN_BASELINE_READ_DAYS = 2;
47
+ export interface ReadCoverage {
48
+ readonly visitDays: readonly string[];
49
+ readonly peopleDays: readonly string[];
50
+ }
51
+ export declare function detectCrossings(series: readonly TrafficSeries[], day: string, thresholds: Thresholds, coverage?: ReadCoverage): Crossing[];
52
+ export declare function priorDayStrings(day: string, lookbackDays: number): string[];
53
+ export interface DiscordEmbedBody {
54
+ readonly content?: string;
55
+ readonly allowed_mentions?: {
56
+ readonly parse: readonly string[];
57
+ };
58
+ readonly embeds?: readonly {
59
+ readonly title?: string;
60
+ readonly description?: string;
61
+ readonly color?: number;
62
+ }[];
63
+ }
64
+ export declare function vibeTrafficUrl(ownerHandle: string, appSlug: string): string;
65
+ export interface TrafficAlertInput {
66
+ readonly crossings: readonly Crossing[];
67
+ readonly day: string;
68
+ readonly thresholds: Thresholds;
69
+ readonly vibesMeasured: number;
70
+ readonly cfAvailable: boolean;
71
+ readonly phAvailable: boolean;
72
+ readonly sourceErrors: readonly string[];
73
+ }
74
+ export declare function buildTrafficAlertEmbed(input: TrafficAlertInput): DiscordEmbedBody;