@vibes.diy/api-svc 13.1.16 → 13.1.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/analytics.d.ts +12 -0
- package/analytics.js +16 -0
- package/analytics.js.map +1 -1
- package/index.d.ts +5 -0
- package/index.js +5 -0
- package/index.js.map +1 -1
- package/intern/agent-assembly.d.ts +18 -0
- package/intern/agent-assembly.js +73 -0
- package/intern/agent-assembly.js.map +1 -0
- package/intern/agent-dispatcher.d.ts +17 -0
- package/intern/agent-dispatcher.js +72 -0
- package/intern/agent-dispatcher.js.map +1 -0
- package/intern/agent-instruction.d.ts +2 -0
- package/intern/agent-instruction.js +116 -0
- package/intern/agent-instruction.js.map +1 -0
- package/intern/agent-router.d.ts +17 -0
- package/intern/agent-router.js +30 -0
- package/intern/agent-router.js.map +1 -0
- package/intern/agent-turn.d.ts +4 -1
- package/intern/agent-turn.js +10 -13
- package/intern/agent-turn.js.map +1 -1
- package/intern/backend-ai-callback.js +3 -11
- package/intern/backend-ai-callback.js.map +1 -1
- package/intern/carry-app-settings.d.ts +12 -0
- package/intern/carry-app-settings.js +20 -0
- package/intern/carry-app-settings.js.map +1 -0
- package/intern/mint-job-store.d.ts +1 -0
- package/intern/mint-job-store.js +14 -0
- package/intern/mint-job-store.js.map +1 -1
- package/intern/pre-allocate.d.ts +10 -0
- package/intern/pre-allocate.js +10 -0
- package/intern/pre-allocate.js.map +1 -1
- package/intern/prompt-assembly.d.ts +1 -0
- package/intern/prompt-assembly.js +8 -0
- package/intern/prompt-assembly.js.map +1 -1
- package/intern/prompt-streaming.js +3 -2
- package/intern/prompt-streaming.js.map +1 -1
- package/intern/settings-carry-policy.d.ts +7 -0
- package/intern/settings-carry-policy.js +52 -0
- package/intern/settings-carry-policy.js.map +1 -0
- package/intern/signup-attribution-capture.d.ts +10 -0
- package/intern/signup-attribution-capture.js +46 -0
- package/intern/signup-attribution-capture.js.map +1 -0
- package/intern/turn-reach.d.ts +21 -0
- package/intern/turn-reach.js +35 -0
- package/intern/turn-reach.js.map +1 -0
- package/package.json +12 -11
- package/public/app-documents-head-query.d.ts +1 -0
- package/public/app-documents-head-query.js +13 -0
- package/public/app-documents-head-query.js.map +1 -1
- package/public/app-seq-allocation.js +6 -0
- package/public/app-seq-allocation.js.map +1 -1
- package/public/app-setting-items.d.ts +1 -0
- package/public/app-setting-items.js +21 -13
- package/public/app-setting-items.js.map +1 -1
- package/public/fork-app.js +14 -0
- package/public/fork-app.js.map +1 -1
- package/public/list-models.d.ts +2 -13
- package/public/list-models.js +7 -3
- package/public/list-models.js.map +1 -1
- package/public/llm-dispatch.d.ts +9 -1
- package/public/llm-dispatch.js +36 -4
- package/public/llm-dispatch.js.map +1 -1
- package/public/open-chat.d.ts +1 -0
- package/public/open-chat.js +5 -6
- package/public/open-chat.js.map +1 -1
- package/public/prompt-chat-section.js +172 -7
- package/public/prompt-chat-section.js.map +1 -1
- package/public/stream-assembly.d.ts +7 -2
- package/public/stream-assembly.js +18 -8
- package/public/stream-assembly.js.map +1 -1
- package/public/who-am-i.d.ts +1 -0
- package/public/who-am-i.js +11 -1
- package/public/who-am-i.js.map +1 -1
- package/usage-report/codegen-delivery-alert-util.d.ts +80 -0
- package/usage-report/codegen-delivery-alert-util.js +220 -0
- package/usage-report/codegen-delivery-alert-util.js.map +1 -0
- package/usage-report/codegen-delivery-alert.d.ts +2 -0
- package/usage-report/codegen-delivery-alert.js +112 -0
- package/usage-report/codegen-delivery-alert.js.map +1 -0
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
const DISCORD_MARKUP_RE = /[\\`*_~|>#[\]()]/g;
|
|
2
|
+
export function sanitizeForDiscord(value) {
|
|
3
|
+
return value.replaceAll(DISCORD_MARKUP_RE, (c) => `\\${c}`);
|
|
4
|
+
}
|
|
5
|
+
export const DEFAULT_WINDOW_SECONDS = 120;
|
|
6
|
+
export const DEFAULT_UNDELIVERED_SHARE = 0.33;
|
|
7
|
+
export const DEFAULT_MIN_TURNS = 100;
|
|
8
|
+
export const TOP_N = 8;
|
|
9
|
+
const COLOR_TRIPPED = 15548997;
|
|
10
|
+
const COLOR_QUIET = 3447003;
|
|
11
|
+
const COLOR_DARK = 16776960;
|
|
12
|
+
export const CODEGEN_DELIVERY_ALERT_ENV_VARS = [
|
|
13
|
+
"POSTHOG_API_KEY",
|
|
14
|
+
"POSTHOG_PROJECT_ID",
|
|
15
|
+
"POSTHOG_HOST",
|
|
16
|
+
"DISCORD_WEBHOOK_URL",
|
|
17
|
+
"CODEGEN_DELIVERY_ALERT_SHARE",
|
|
18
|
+
"CODEGEN_DELIVERY_ALERT_MIN_TURNS",
|
|
19
|
+
"CODEGEN_DELIVERY_ALERT_WINDOW_SECONDS",
|
|
20
|
+
];
|
|
21
|
+
function num(raw, fallback) {
|
|
22
|
+
if (raw === undefined || raw.trim() === "")
|
|
23
|
+
return fallback;
|
|
24
|
+
const parsed = Number(raw);
|
|
25
|
+
return Number.isFinite(parsed) && parsed > 0 ? parsed : fallback;
|
|
26
|
+
}
|
|
27
|
+
export function resolveThresholds(env) {
|
|
28
|
+
return {
|
|
29
|
+
undeliveredShare: num(env.CODEGEN_DELIVERY_ALERT_SHARE, DEFAULT_UNDELIVERED_SHARE),
|
|
30
|
+
minTurns: num(env.CODEGEN_DELIVERY_ALERT_MIN_TURNS, DEFAULT_MIN_TURNS),
|
|
31
|
+
windowSeconds: num(env.CODEGEN_DELIVERY_ALERT_WINDOW_SECONDS, DEFAULT_WINDOW_SECONDS),
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
export function isPreviewChanging(row) {
|
|
35
|
+
return row.outcome === "applied" && (row.entryTouched || row.companionTouched);
|
|
36
|
+
}
|
|
37
|
+
export function matchDeliveries(turns, deliveries, windowMs) {
|
|
38
|
+
const byPerson = new Map();
|
|
39
|
+
for (const d of deliveries) {
|
|
40
|
+
const list = byPerson.get(d.distinctId) ?? [];
|
|
41
|
+
list.push({ ts: d.ts, claimed: false });
|
|
42
|
+
byPerson.set(d.distinctId, list);
|
|
43
|
+
}
|
|
44
|
+
for (const list of byPerson.values())
|
|
45
|
+
list.sort((a, b) => a.ts - b.ts);
|
|
46
|
+
const ordered = [...turns].sort((a, b) => a.ts - b.ts);
|
|
47
|
+
const unmatched = new Set();
|
|
48
|
+
for (const turn of ordered) {
|
|
49
|
+
const list = byPerson.get(turn.distinctId);
|
|
50
|
+
const opensAt = turn.ts - Math.max(0, turn.msFromSubmit);
|
|
51
|
+
const closesAt = turn.ts + windowMs;
|
|
52
|
+
const hit = list?.find((d) => d.claimed === false && d.ts >= opensAt && d.ts <= closesAt);
|
|
53
|
+
if (hit === undefined)
|
|
54
|
+
unmatched.add(turn);
|
|
55
|
+
else
|
|
56
|
+
hit.claimed = true;
|
|
57
|
+
}
|
|
58
|
+
return turns.filter((t) => unmatched.has(t));
|
|
59
|
+
}
|
|
60
|
+
export function partitionByWindowClose(turns, windowMs, nowMs) {
|
|
61
|
+
const settled = [];
|
|
62
|
+
const pending = [];
|
|
63
|
+
for (const t of turns)
|
|
64
|
+
(t.ts + windowMs <= nowMs ? settled : pending).push(t);
|
|
65
|
+
return { settled, pending };
|
|
66
|
+
}
|
|
67
|
+
export function summarizeCodegenDelivery(settled, deliveries, thresholds, nowMs = Date.now()) {
|
|
68
|
+
const windowMs = thresholds.windowSeconds * 1000;
|
|
69
|
+
const parts = partitionByWindowClose(settled.filter(isPreviewChanging), windowMs, nowMs);
|
|
70
|
+
const previewChanging = parts.settled;
|
|
71
|
+
const undelivered = matchDeliveries(previewChanging, deliveries, windowMs);
|
|
72
|
+
const undeliveredSet = new Set(undelivered);
|
|
73
|
+
const entryTurns = previewChanging.filter((t) => t.entryTouched);
|
|
74
|
+
const companionOnly = previewChanging.filter((t) => !t.entryTouched);
|
|
75
|
+
const firstBuilds = previewChanging.filter((t) => t.firstBuild);
|
|
76
|
+
const perApp = new Map();
|
|
77
|
+
for (const turn of previewChanging) {
|
|
78
|
+
const key = `${turn.ownerHandle}/${turn.appSlug}`;
|
|
79
|
+
const prior = perApp.get(key) ?? { ownerHandle: turn.ownerHandle, appSlug: turn.appSlug, undelivered: 0, turns: 0 };
|
|
80
|
+
perApp.set(key, {
|
|
81
|
+
...prior,
|
|
82
|
+
turns: prior.turns + 1,
|
|
83
|
+
undelivered: prior.undelivered + (undeliveredSet.has(turn) ? 1 : 0),
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
const worstApps = [...perApp.values()].filter((a) => a.undelivered > 0).sort((a, b) => b.undelivered - a.undelivered);
|
|
87
|
+
const share = previewChanging.length === 0 ? 0 : undelivered.length / previewChanging.length;
|
|
88
|
+
const tripped = [];
|
|
89
|
+
if (previewChanging.length >= thresholds.minTurns && share >= thresholds.undeliveredShare) {
|
|
90
|
+
tripped.push(`${Math.round(share * 100)}% of preview-changing turns (${undelivered.length} of ${previewChanging.length}) never acknowledged reaching the screen within ${thresholds.windowSeconds}s.`);
|
|
91
|
+
}
|
|
92
|
+
return {
|
|
93
|
+
settledTurns: settled.length,
|
|
94
|
+
deliveries: deliveries.length,
|
|
95
|
+
previewChangingTurns: previewChanging.length,
|
|
96
|
+
pendingTurns: parts.pending.length,
|
|
97
|
+
undelivered: undelivered.length,
|
|
98
|
+
undeliveredShare: share,
|
|
99
|
+
entryUndelivered: entryTurns.filter((t) => undeliveredSet.has(t)).length,
|
|
100
|
+
entryTurns: entryTurns.length,
|
|
101
|
+
companionOnlyUndelivered: companionOnly.filter((t) => undeliveredSet.has(t)).length,
|
|
102
|
+
companionOnlyTurns: companionOnly.length,
|
|
103
|
+
firstBuildUndelivered: firstBuilds.filter((t) => undeliveredSet.has(t)).length,
|
|
104
|
+
firstBuildTurns: firstBuilds.length,
|
|
105
|
+
worstApps,
|
|
106
|
+
tripped,
|
|
107
|
+
minTurns: thresholds.minTurns,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
export function vibeUrl(ownerHandle, appSlug) {
|
|
111
|
+
return `https://vibes.diy/vibe/${ownerHandle}/${appSlug}`;
|
|
112
|
+
}
|
|
113
|
+
function pct(n, d) {
|
|
114
|
+
return d === 0 ? "—" : `${Math.round((n / d) * 100)}%`;
|
|
115
|
+
}
|
|
116
|
+
const US_NOTE = `_Both events inherit the #4257 fail-closed US gate, so this covers the US slice only — a non-US-only regression is invisible here._`;
|
|
117
|
+
export function buildCodegenDeliveryEmbed(input) {
|
|
118
|
+
const s = input.summary;
|
|
119
|
+
const { sinceHours } = input;
|
|
120
|
+
if (input.capped === true) {
|
|
121
|
+
return {
|
|
122
|
+
content: `🕳️ Codegen delivery: the read hit its row cap — no number this run`,
|
|
123
|
+
allowed_mentions: { parse: [] },
|
|
124
|
+
embeds: [
|
|
125
|
+
{
|
|
126
|
+
title: `Codegen delivery (last ${sinceHours}h)`,
|
|
127
|
+
description: [
|
|
128
|
+
`One or both event reads were truncated at the row cap, so the two streams cover different slices of the window and any gap computed from them would be an artefact of where they were cut.`,
|
|
129
|
+
``,
|
|
130
|
+
`No share is reported for this run, deliberately. Narrow the window (\`--since-hours\`) or raise the cap, then re-run.`,
|
|
131
|
+
``,
|
|
132
|
+
US_NOTE,
|
|
133
|
+
].join("\n"),
|
|
134
|
+
color: COLOR_DARK,
|
|
135
|
+
},
|
|
136
|
+
],
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
if (s.settledTurns === 0) {
|
|
140
|
+
return {
|
|
141
|
+
content: `🕳️ Codegen delivery: no settled turns reported in ${sinceHours}h`,
|
|
142
|
+
allowed_mentions: { parse: [] },
|
|
143
|
+
embeds: [
|
|
144
|
+
{
|
|
145
|
+
title: `Codegen delivery (last ${sinceHours}h)`,
|
|
146
|
+
description: [
|
|
147
|
+
`No \`codegen_turn_settled\` events at all in the window.`,
|
|
148
|
+
``,
|
|
149
|
+
`That is either a genuinely dead window, a server half that has not shipped yet (it is worker code — merge is not ship, it rides the next \`vibes-diy@p*\`), or an emit that has stopped. This alarm cannot tell them apart, so it reports rather than rendering a 0% gap that would read as perfect health.`,
|
|
150
|
+
``,
|
|
151
|
+
US_NOTE,
|
|
152
|
+
].join("\n"),
|
|
153
|
+
color: COLOR_DARK,
|
|
154
|
+
},
|
|
155
|
+
],
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
if (s.deliveries === 0 && s.previewChangingTurns >= s.minTurns) {
|
|
159
|
+
return {
|
|
160
|
+
content: `🕳️ Codegen delivery: turns settled, nothing acknowledged reaching a screen`,
|
|
161
|
+
allowed_mentions: { parse: [] },
|
|
162
|
+
embeds: [
|
|
163
|
+
{
|
|
164
|
+
title: `Codegen delivery (last ${sinceHours}h)`,
|
|
165
|
+
description: [
|
|
166
|
+
`${s.previewChangingTurns} preview-changing turn${s.previewChangingTurns === 1 ? "" : "s"} settled and ZERO \`codegen_preview_updated\` events arrived.`,
|
|
167
|
+
``,
|
|
168
|
+
`Either no preview updated for anyone, or the client half stopped emitting. Check a live build by hand before believing the first reading.`,
|
|
169
|
+
``,
|
|
170
|
+
US_NOTE,
|
|
171
|
+
].join("\n"),
|
|
172
|
+
color: COLOR_DARK,
|
|
173
|
+
},
|
|
174
|
+
],
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
const denominator = [
|
|
178
|
+
`${s.previewChangingTurns} of ${s.settledTurns} settled turn${s.settledTurns === 1 ? "" : "s"} changed something the preview mounts; ${s.deliveries} delivery acknowledgement${s.deliveries === 1 ? "" : "s"} arrived.`,
|
|
179
|
+
`Unacknowledged: **${s.undelivered}** (${pct(s.undelivered, s.previewChangingTurns)}).`,
|
|
180
|
+
...(s.pendingTurns === 0
|
|
181
|
+
? []
|
|
182
|
+
: [
|
|
183
|
+
`${s.pendingTurns} more settled too recently to judge — their delivery window is still open, so they are excluded rather than counted as failures.`,
|
|
184
|
+
]),
|
|
185
|
+
].join("\n");
|
|
186
|
+
const split = [
|
|
187
|
+
` entry-file turns — ${s.entryUndelivered} of ${s.entryTurns} unacknowledged (${pct(s.entryUndelivered, s.entryTurns)})`,
|
|
188
|
+
` companion-only turns — ${s.companionOnlyUndelivered} of ${s.companionOnlyTurns} unacknowledged (${pct(s.companionOnlyUndelivered, s.companionOnlyTurns)})`,
|
|
189
|
+
` first builds — ${s.firstBuildUndelivered} of ${s.firstBuildTurns} unacknowledged (${pct(s.firstBuildUndelivered, s.firstBuildTurns)})`,
|
|
190
|
+
].join("\n");
|
|
191
|
+
const apps = s.worstApps
|
|
192
|
+
.slice(0, TOP_N)
|
|
193
|
+
.map((a) => ` ${vibeUrl(a.ownerHandle, a.appSlug)} — ${a.undelivered} of ${a.turns}`)
|
|
194
|
+
.join("\n");
|
|
195
|
+
const lead = s.tripped.length > 0 ? s.tripped.map((t) => `⚠️ ${t}`).join("\n") : `Nothing tripped a threshold.`;
|
|
196
|
+
return {
|
|
197
|
+
content: s.tripped.length > 0
|
|
198
|
+
? `⚠️ Codegen delivery: turns are settling without reaching the screen`
|
|
199
|
+
: `✅ Codegen delivery looks normal (last ${sinceHours}h)`,
|
|
200
|
+
allowed_mentions: { parse: [] },
|
|
201
|
+
embeds: [
|
|
202
|
+
{
|
|
203
|
+
title: `Codegen delivery (last ${sinceHours}h)`,
|
|
204
|
+
description: [
|
|
205
|
+
lead,
|
|
206
|
+
``,
|
|
207
|
+
denominator,
|
|
208
|
+
``,
|
|
209
|
+
`**By reach** (the #5249 discriminant)`,
|
|
210
|
+
split,
|
|
211
|
+
...(apps === "" ? [] : [``, `**Apps with the most unacknowledged turns**`, apps]),
|
|
212
|
+
``,
|
|
213
|
+
US_NOTE,
|
|
214
|
+
].join("\n"),
|
|
215
|
+
color: s.tripped.length > 0 ? COLOR_TRIPPED : COLOR_QUIET,
|
|
216
|
+
},
|
|
217
|
+
],
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
//# sourceMappingURL=codegen-delivery-alert-util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codegen-delivery-alert-util.js","sourceRoot":"","sources":["../../jsr/usage-report/codegen-delivery-alert-util.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { Result, exception2Result } from "@adviser/cement";
|
|
2
|
+
import { arg, flag, formatError, loadDevVars } from "./usage-report-util.js";
|
|
3
|
+
import { buildCodegenDeliveryEmbed, resolveThresholds, summarizeCodegenDelivery, } from "./codegen-delivery-alert-util.js";
|
|
4
|
+
const DEFAULT_SINCE_HOURS = 24;
|
|
5
|
+
const DEFAULT_POSTHOG_HOST = "https://us.posthog.com";
|
|
6
|
+
const ROW_CAP = 50_000;
|
|
7
|
+
async function hogql(host, projectId, apiKey, query) {
|
|
8
|
+
const res = await exception2Result(() => fetch(`${host.replace(/\/+$/, "")}/api/projects/${projectId}/query/`, {
|
|
9
|
+
method: "POST",
|
|
10
|
+
headers: { Authorization: `Bearer ${apiKey}`, "Content-Type": "application/json" },
|
|
11
|
+
body: JSON.stringify({ query: { kind: "HogQLQuery", query } }),
|
|
12
|
+
}));
|
|
13
|
+
if (res.isErr())
|
|
14
|
+
return Result.Err(res);
|
|
15
|
+
const response = res.Ok();
|
|
16
|
+
if (!response.ok) {
|
|
17
|
+
return Result.Err(new Error(`posthog query returned ${response.status}`));
|
|
18
|
+
}
|
|
19
|
+
const parsed = await exception2Result(() => response.json());
|
|
20
|
+
if (parsed.isErr())
|
|
21
|
+
return Result.Err(parsed);
|
|
22
|
+
return Result.Ok(parsed.Ok());
|
|
23
|
+
}
|
|
24
|
+
function asString(v) {
|
|
25
|
+
return typeof v === "string" ? v : "";
|
|
26
|
+
}
|
|
27
|
+
function asBool(v) {
|
|
28
|
+
return v === true || v === 1 || v === "true";
|
|
29
|
+
}
|
|
30
|
+
function asNumber(v) {
|
|
31
|
+
const n = typeof v === "number" ? v : Number(v);
|
|
32
|
+
return Number.isFinite(n) && n > 0 ? n : 0;
|
|
33
|
+
}
|
|
34
|
+
function asMillis(v) {
|
|
35
|
+
const t = Date.parse(asString(v));
|
|
36
|
+
return Number.isFinite(t) ? t : 0;
|
|
37
|
+
}
|
|
38
|
+
export async function run() {
|
|
39
|
+
loadDevVars();
|
|
40
|
+
const sinceHoursRaw = arg("since-hours");
|
|
41
|
+
const sinceHours = sinceHoursRaw === undefined ? DEFAULT_SINCE_HOURS : Number(sinceHoursRaw);
|
|
42
|
+
if (!Number.isFinite(sinceHours) || sinceHours <= 0) {
|
|
43
|
+
return Result.Err("usage: pnpm --dir vibes.diy/api/svc run codegen-delivery-alert [--since-hours 24] [--dry-run]");
|
|
44
|
+
}
|
|
45
|
+
const apiKey = process.env["POSTHOG_API_KEY"];
|
|
46
|
+
const projectId = process.env["POSTHOG_PROJECT_ID"];
|
|
47
|
+
const hostRaw = process.env["POSTHOG_HOST"];
|
|
48
|
+
const host = hostRaw === undefined || hostRaw === "" ? DEFAULT_POSTHOG_HOST : hostRaw;
|
|
49
|
+
const webhookUrl = process.env["DISCORD_WEBHOOK_URL"];
|
|
50
|
+
const thresholds = resolveThresholds({
|
|
51
|
+
CODEGEN_DELIVERY_ALERT_SHARE: process.env["CODEGEN_DELIVERY_ALERT_SHARE"],
|
|
52
|
+
CODEGEN_DELIVERY_ALERT_MIN_TURNS: process.env["CODEGEN_DELIVERY_ALERT_MIN_TURNS"],
|
|
53
|
+
CODEGEN_DELIVERY_ALERT_WINDOW_SECONDS: process.env["CODEGEN_DELIVERY_ALERT_WINDOW_SECONDS"],
|
|
54
|
+
});
|
|
55
|
+
if (apiKey === undefined || apiKey === "" || projectId === undefined || projectId === "") {
|
|
56
|
+
return Result.Err("POSTHOG_API_KEY and POSTHOG_PROJECT_ID are required — nothing was measured");
|
|
57
|
+
}
|
|
58
|
+
const dryRun = flag("dry-run") || webhookUrl === undefined || webhookUrl === "";
|
|
59
|
+
const settledRes = await hogql(host, projectId, apiKey, `select timestamp, distinct_id, properties.outcome, properties.entry_touched, properties.companion_touched,
|
|
60
|
+
properties.first_build, properties.owner_handle, properties.app_slug, properties.ms_from_submit
|
|
61
|
+
from events
|
|
62
|
+
where event = 'codegen_turn_settled' and timestamp >= now() - interval ${sinceHours} hour
|
|
63
|
+
order by timestamp desc limit ${ROW_CAP}`);
|
|
64
|
+
if (settledRes.isErr())
|
|
65
|
+
return Result.Err(settledRes);
|
|
66
|
+
const deliveredRes = await hogql(host, projectId, apiKey, `select timestamp, distinct_id, properties.via
|
|
67
|
+
from events
|
|
68
|
+
where event = 'codegen_preview_updated' and timestamp >= now() - interval ${sinceHours} hour
|
|
69
|
+
order by timestamp desc limit ${ROW_CAP}`);
|
|
70
|
+
if (deliveredRes.isErr())
|
|
71
|
+
return Result.Err(deliveredRes);
|
|
72
|
+
const settled = (settledRes.Ok().results ?? []).map((r) => ({
|
|
73
|
+
ts: asMillis(r[0]),
|
|
74
|
+
distinctId: asString(r[1]),
|
|
75
|
+
outcome: asString(r[2]),
|
|
76
|
+
entryTouched: asBool(r[3]),
|
|
77
|
+
companionTouched: asBool(r[4]),
|
|
78
|
+
firstBuild: asBool(r[5]),
|
|
79
|
+
ownerHandle: asString(r[6]),
|
|
80
|
+
appSlug: asString(r[7]),
|
|
81
|
+
msFromSubmit: asNumber(r[8]),
|
|
82
|
+
}));
|
|
83
|
+
const deliveries = (deliveredRes.Ok().results ?? []).map((r) => ({
|
|
84
|
+
ts: asMillis(r[0]),
|
|
85
|
+
distinctId: asString(r[1]),
|
|
86
|
+
via: asString(r[2]),
|
|
87
|
+
}));
|
|
88
|
+
const capped = settled.length === ROW_CAP || deliveries.length === ROW_CAP;
|
|
89
|
+
const summary = summarizeCodegenDelivery(settled, deliveries, thresholds);
|
|
90
|
+
const body = buildCodegenDeliveryEmbed({ summary, sinceHours, capped });
|
|
91
|
+
console.log(`[codegen-delivery-alert] window=${sinceHours}h settled=${summary.settledTurns} previewChanging=${summary.previewChangingTurns} pending=${summary.pendingTurns} deliveries=${summary.deliveries} undelivered=${summary.undelivered} signals=${summary.tripped.length} capped=${capped} posted=${!dryRun}`);
|
|
92
|
+
if (capped) {
|
|
93
|
+
console.log(`[codegen-delivery-alert] read hit its ${ROW_CAP}-row cap — no share reported this run; narrow the window or raise the cap.`);
|
|
94
|
+
}
|
|
95
|
+
if (dryRun) {
|
|
96
|
+
console.log(JSON.stringify(body, null, 2));
|
|
97
|
+
return Result.Ok();
|
|
98
|
+
}
|
|
99
|
+
const res = await exception2Result(() => fetch(webhookUrl, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(body) }));
|
|
100
|
+
if (res.isErr())
|
|
101
|
+
return Result.Err(res);
|
|
102
|
+
if (res.Ok().status !== 204)
|
|
103
|
+
return Result.Err(new Error(`discord post returned ${res.Ok().status}`));
|
|
104
|
+
return Result.Ok();
|
|
105
|
+
}
|
|
106
|
+
run().then((result) => {
|
|
107
|
+
if (result.isErr()) {
|
|
108
|
+
console.error(formatError(result.Err()));
|
|
109
|
+
process.exitCode = 1;
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
//# sourceMappingURL=codegen-delivery-alert.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codegen-delivery-alert.js","sourceRoot":"","sources":["../../jsr/usage-report/codegen-delivery-alert.ts"],"names":[],"mappings":"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"}
|