@vibes.diy/api-svc 14.1.53 → 14.1.55

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 (60) hide show
  1. package/analytics.d.ts +11 -0
  2. package/analytics.js +23 -0
  3. package/analytics.js.map +1 -1
  4. package/intern/access-verdict-docs.d.ts +23 -0
  5. package/intern/access-verdict-docs.js +124 -0
  6. package/intern/access-verdict-docs.js.map +1 -0
  7. package/intern/access-verdicts.d.ts +79 -0
  8. package/intern/access-verdicts.js +136 -0
  9. package/intern/access-verdicts.js.map +1 -0
  10. package/intern/agent-belt.js +5 -3
  11. package/intern/agent-belt.js.map +1 -1
  12. package/intern/agent-deferred-access.d.ts +7 -0
  13. package/intern/agent-deferred-access.js +70 -2
  14. package/intern/agent-deferred-access.js.map +1 -1
  15. package/intern/agent-dispatcher.js +7 -13
  16. package/intern/agent-dispatcher.js.map +1 -1
  17. package/intern/agent-file-tools.js +25 -3
  18. package/intern/agent-file-tools.js.map +1 -1
  19. package/intern/agent-file-validation.d.ts +7 -1
  20. package/intern/agent-file-validation.js +21 -1
  21. package/intern/agent-file-validation.js.map +1 -1
  22. package/intern/agent-session-instruction.d.ts +2 -2
  23. package/intern/agent-session-instruction.js +3 -1
  24. package/intern/agent-session-instruction.js.map +1 -1
  25. package/intern/agent-session-runtime.js +25 -3
  26. package/intern/agent-session-runtime.js.map +1 -1
  27. package/intern/agent-wake.d.ts +1 -0
  28. package/intern/agent-wake.js +2 -0
  29. package/intern/agent-wake.js.map +1 -1
  30. package/intern/capi-build-event.d.ts +49 -0
  31. package/intern/capi-build-event.js +145 -0
  32. package/intern/capi-build-event.js.map +1 -0
  33. package/intern/mint-job-store.d.ts +1 -0
  34. package/intern/mint-job-store.js +14 -0
  35. package/intern/mint-job-store.js.map +1 -1
  36. package/intern/post-maker-fact.d.ts +1 -0
  37. package/intern/post-maker-fact.js +7 -4
  38. package/intern/post-maker-fact.js.map +1 -1
  39. package/intern/section-fan-out.d.ts +12 -0
  40. package/intern/section-fan-out.js +19 -0
  41. package/intern/section-fan-out.js.map +1 -1
  42. package/intern/turn-reach.d.ts +2 -0
  43. package/intern/turn-reach.js +6 -0
  44. package/intern/turn-reach.js.map +1 -1
  45. package/package.json +13 -12
  46. package/public/ensure-user-settings.js +1 -1
  47. package/public/ensure-user-settings.js.map +1 -1
  48. package/public/llm-dispatch.d.ts +2 -1
  49. package/public/llm-dispatch.js +25 -3
  50. package/public/llm-dispatch.js.map +1 -1
  51. package/public/prompt-chat-section.js +57 -5
  52. package/public/prompt-chat-section.js.map +1 -1
  53. package/public/stream-assembly.js +1 -0
  54. package/public/stream-assembly.js.map +1 -1
  55. package/usage-report/boot-missing-export-alarm-util.d.ts +22 -0
  56. package/usage-report/boot-missing-export-alarm-util.js +61 -0
  57. package/usage-report/boot-missing-export-alarm-util.js.map +1 -0
  58. package/usage-report/boot-missing-export-alarm.d.ts +2 -0
  59. package/usage-report/boot-missing-export-alarm.js +178 -0
  60. package/usage-report/boot-missing-export-alarm.js.map +1 -0
@@ -0,0 +1,178 @@
1
+ import { Result, exception2Result } from "@adviser/cement";
2
+ import { arg, flag, formatError, loadDevVars } from "./usage-report-util.js";
3
+ import { BOOT_MISSING_EXPORT_ISSUE_LABELS, groupMissingExports, issueBody, issueMarker, issueTitle, } from "./boot-missing-export-alarm-util.js";
4
+ const DEFAULT_SINCE_HOURS = 48;
5
+ const DEFAULT_POSTHOG_HOST = "https://us.posthog.com";
6
+ const GITHUB_API = "https://api.github.com";
7
+ const ROW_CAP = 20_000;
8
+ async function hogql(host, projectId, apiKey, query) {
9
+ const res = await exception2Result(() => fetch(`${host.replace(/\/+$/, "")}/api/projects/${projectId}/query/`, {
10
+ method: "POST",
11
+ headers: { Authorization: `Bearer ${apiKey}`, "Content-Type": "application/json" },
12
+ body: JSON.stringify({ query: { kind: "HogQLQuery", query } }),
13
+ }));
14
+ if (res.isErr())
15
+ return Result.Err(res);
16
+ const response = res.Ok();
17
+ if (!response.ok)
18
+ return Result.Err(new Error(`posthog query returned ${response.status}`));
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
+ async function listOpenAlarmIssues(repo, token) {
28
+ const out = [];
29
+ for (let page = 1; page <= 10; page++) {
30
+ const res = await exception2Result(() => fetch(`${GITHUB_API}/repos/${repo}/issues?state=open&labels=${encodeURIComponent("agent-created")}&per_page=100&page=${page}`, {
31
+ headers: {
32
+ Authorization: `Bearer ${token}`,
33
+ Accept: "application/vnd.github+json",
34
+ "User-Agent": "vibes-diy-boot-alarm",
35
+ },
36
+ }));
37
+ if (res.isErr())
38
+ return Result.Err(res);
39
+ const response = res.Ok();
40
+ if (!response.ok)
41
+ return Result.Err(new Error(`github issue list returned ${response.status}`));
42
+ const parsed = await exception2Result(() => response.json());
43
+ if (parsed.isErr())
44
+ return Result.Err(parsed);
45
+ const rows = parsed.Ok();
46
+ if (!Array.isArray(rows) || rows.length === 0)
47
+ break;
48
+ for (const raw of rows) {
49
+ const r = raw;
50
+ if (r.pull_request !== undefined)
51
+ continue;
52
+ if (typeof r.number !== "number")
53
+ continue;
54
+ out.push({ number: r.number, body: asString(r.body) });
55
+ }
56
+ if (rows.length < 100)
57
+ break;
58
+ }
59
+ return Result.Ok(out);
60
+ }
61
+ async function createIssue(repo, token, title, body) {
62
+ const res = await exception2Result(() => fetch(`${GITHUB_API}/repos/${repo}/issues`, {
63
+ method: "POST",
64
+ headers: {
65
+ Authorization: `Bearer ${token}`,
66
+ Accept: "application/vnd.github+json",
67
+ "Content-Type": "application/json",
68
+ "User-Agent": "vibes-diy-boot-alarm",
69
+ },
70
+ body: JSON.stringify({ title, body, labels: [...BOOT_MISSING_EXPORT_ISSUE_LABELS] }),
71
+ }));
72
+ if (res.isErr())
73
+ return Result.Err(res);
74
+ const response = res.Ok();
75
+ if (!response.ok)
76
+ return Result.Err(new Error(`github issue create returned ${response.status}`));
77
+ const parsed = await exception2Result(() => response.json());
78
+ if (parsed.isErr())
79
+ return Result.Err(parsed);
80
+ const n = parsed.Ok().number;
81
+ return Result.Ok(typeof n === "number" ? n : 0);
82
+ }
83
+ async function updateIssueBody(repo, token, issueNumber, body) {
84
+ const res = await exception2Result(() => fetch(`${GITHUB_API}/repos/${repo}/issues/${issueNumber}`, {
85
+ method: "PATCH",
86
+ headers: {
87
+ Authorization: `Bearer ${token}`,
88
+ Accept: "application/vnd.github+json",
89
+ "Content-Type": "application/json",
90
+ "User-Agent": "vibes-diy-boot-alarm",
91
+ },
92
+ body: JSON.stringify({ body }),
93
+ }));
94
+ if (res.isErr())
95
+ return Result.Err(res);
96
+ if (!res.Ok().ok)
97
+ return Result.Err(new Error(`github issue update returned ${res.Ok().status}`));
98
+ return Result.Ok();
99
+ }
100
+ export async function run() {
101
+ loadDevVars();
102
+ const sinceHoursRaw = arg("--since-hours");
103
+ const sinceHours = sinceHoursRaw === undefined ? DEFAULT_SINCE_HOURS : Number(sinceHoursRaw);
104
+ if (!Number.isFinite(sinceHours) || sinceHours <= 0) {
105
+ return Result.Err("usage: pnpm --dir vibes.diy/api/svc run boot-missing-export-alarm [--since-hours 48] [--write]");
106
+ }
107
+ const apiKey = process.env["POSTHOG_API_KEY"];
108
+ const projectId = process.env["POSTHOG_PROJECT_ID"];
109
+ const hostRaw = process.env["POSTHOG_HOST"];
110
+ const host = hostRaw === undefined || hostRaw === "" ? DEFAULT_POSTHOG_HOST : hostRaw;
111
+ const token = process.env["GITHUB_TOKEN"];
112
+ const repo = process.env["GITHUB_REPOSITORY"];
113
+ if (apiKey === undefined || apiKey === "" || projectId === undefined || projectId === "") {
114
+ return Result.Err("POSTHOG_API_KEY and POSTHOG_PROJECT_ID are required — nothing was measured");
115
+ }
116
+ const write = flag("--write");
117
+ if (write && (token === undefined || token === "" || repo === undefined || repo === "")) {
118
+ return Result.Err("--write needs GITHUB_TOKEN and GITHUB_REPOSITORY");
119
+ }
120
+ const rowsRes = await hogql(host, projectId, apiKey, `select properties.missing_export_package, properties.missing_export_name,
121
+ properties.owner_handle, properties.app_slug
122
+ from events
123
+ where event = 'vibe_boot_timing'
124
+ and properties.boot_result = 'error'
125
+ and notEmpty(toString(properties.missing_export_package))
126
+ and timestamp >= now() - interval ${sinceHours} hour
127
+ order by timestamp desc limit ${ROW_CAP}`);
128
+ if (rowsRes.isErr())
129
+ return Result.Err(rowsRes);
130
+ const raw = rowsRes.Ok().results ?? [];
131
+ const rows = raw.map((r) => ({
132
+ packageName: asString(r[0]),
133
+ exportName: asString(r[1]),
134
+ ownerHandle: asString(r[2]),
135
+ appSlug: asString(r[3]),
136
+ }));
137
+ const groups = groupMissingExports(rows);
138
+ console.log(`[boot-missing-export-alarm] window=${sinceHours}h rows=${rows.length} pairs=${groups.length} capped=${rows.length === ROW_CAP} write=${write}`);
139
+ if (rows.length === ROW_CAP) {
140
+ console.log(`[boot-missing-export-alarm] read hit its ${ROW_CAP}-row cap — the counts below are a slice of the window, not all of it.`);
141
+ }
142
+ if (groups.length === 0)
143
+ return Result.Ok();
144
+ const asOf = new Date().toISOString();
145
+ const existing = write && token !== undefined && repo !== undefined ? await listOpenAlarmIssues(repo, token) : undefined;
146
+ if (existing !== undefined && existing.isErr())
147
+ return Result.Err(existing);
148
+ const open = existing === undefined ? [] : existing.Ok();
149
+ for (const group of groups) {
150
+ const body = issueBody({ group, sinceHours, asOf });
151
+ const marker = issueMarker(group.packageName, group.exportName);
152
+ const prior = open.find((i) => i.body.includes(marker));
153
+ if (!write) {
154
+ console.log(`[boot-missing-export-alarm] would file: ${issueTitle(group.packageName, group.exportName)} — boots=${group.boots} apps=${group.appCount}`);
155
+ console.log(body);
156
+ continue;
157
+ }
158
+ if (prior !== undefined) {
159
+ const res = await updateIssueBody(repo, token, prior.number, body);
160
+ if (res.isErr())
161
+ return Result.Err(res);
162
+ console.log(`[boot-missing-export-alarm] refreshed #${prior.number} (boots=${group.boots} apps=${group.appCount})`);
163
+ continue;
164
+ }
165
+ const created = await createIssue(repo, token, issueTitle(group.packageName, group.exportName), body);
166
+ if (created.isErr())
167
+ return Result.Err(created);
168
+ console.log(`[boot-missing-export-alarm] filed #${created.Ok()} (boots=${group.boots} apps=${group.appCount})`);
169
+ }
170
+ return Result.Ok();
171
+ }
172
+ run().then((result) => {
173
+ if (result.isErr()) {
174
+ console.error(formatError(result.Err()));
175
+ process.exitCode = 1;
176
+ }
177
+ });
178
+ //# sourceMappingURL=boot-missing-export-alarm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boot-missing-export-alarm.js","sourceRoot":"","sources":["../../jsr/usage-report/boot-missing-export-alarm.ts"],"names":[],"mappings":"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"}