@vibes.diy/api-svc 14.3.163 → 14.3.165

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 (42) hide show
  1. package/index.d.ts +1 -0
  2. package/index.js +1 -0
  3. package/index.js.map +1 -1
  4. package/intern/backend-github-callback.js +16 -20
  5. package/intern/backend-github-callback.js.map +1 -1
  6. package/intern/components/vibe-page.d.ts +1 -1
  7. package/intern/components/vibe-page.js +1 -1
  8. package/intern/components/vibe-page.js.map +1 -1
  9. package/intern/github-app-auth.d.ts +6 -2
  10. package/intern/github-app-auth.js +35 -9
  11. package/intern/github-app-auth.js.map +1 -1
  12. package/intern/is-unique-violation.d.ts +1 -0
  13. package/intern/is-unique-violation.js +13 -0
  14. package/intern/is-unique-violation.js.map +1 -0
  15. package/intern/open-turn-sweep.js +1 -12
  16. package/intern/open-turn-sweep.js.map +1 -1
  17. package/package.json +13 -13
  18. package/public/github-install-consent.html +5 -2
  19. package/public/github-install-pick-item.html +5 -0
  20. package/public/github-install-pick.html +25 -0
  21. package/public/github-install-signin.html +1 -1
  22. package/public/github-install.d.ts +2 -10
  23. package/public/github-install.js +21 -67
  24. package/public/github-install.js.map +1 -1
  25. package/public/github-repo-pick-item.html +7 -0
  26. package/public/github-repo-pick.html +28 -0
  27. package/public/github-repos.d.ts +3 -0
  28. package/public/github-repos.js +195 -0
  29. package/public/github-repos.js.map +1 -0
  30. package/public/github-setup.d.ts +63 -4
  31. package/public/github-setup.js +303 -92
  32. package/public/github-setup.js.map +1 -1
  33. package/public/github-templates.d.ts +22 -0
  34. package/public/github-templates.js +59 -0
  35. package/public/github-templates.js.map +1 -0
  36. package/public/github-webhook.d.ts +1 -0
  37. package/public/github-webhook.js +50 -15
  38. package/public/github-webhook.js.map +1 -1
  39. package/usage-report/backfill-hubspot-contacts.js +1 -1
  40. package/usage-report/backfill-hubspot-contacts.js.map +1 -1
  41. package/usage-report/inspect-db-report-template.js +1 -1
  42. package/usage-report/inspect-db-report-template.js.map +1 -1
@@ -1,15 +1,13 @@
1
1
  import { exception2Result, BuildURI, TxtEnDecoderSingleton, URI } from "@adviser/cement";
2
2
  import { cfDrizzle, createVibesApiTables, toDBFlavour } from "@vibes.diy/api-sql";
3
- import { and, eq, ne, or } from "drizzle-orm/sql/expressions";
4
- import { getInstallationToken, listUserInstallationRepos, nextGithubPageUrl } from "../intern/github-app-auth.js";
3
+ import { and, eq } from "drizzle-orm/sql/expressions";
4
+ import { getAppHtmlUrl, getInstallationToken, listUserInstallationRepos, nextGithubPageUrl } from "../intern/github-app-auth.js";
5
5
  import { timingSafeEqualString } from "./github-webhook.js";
6
6
  import { isConnectState } from "./connections-oauth.js";
7
7
  import { publicRouteUrl, runConnectCallback } from "./connections-callback.js";
8
+ import { fillFragments, flowRedirect, htmlPage, templatePage } from "./github-templates.js";
9
+ export { htmlPage } from "./github-templates.js";
8
10
  export const GITHUB_SETUP_STATE_RE = /^[a-z0-9][a-z0-9-]*\/[a-z0-9][a-z0-9-]*$/;
9
- export function htmlPage(title, body, status) {
10
- return new Response(`<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>${title}</title></head>` +
11
- `<body style="font-family: system-ui, sans-serif; max-width: 32rem; margin: 4rem auto; padding: 0 1rem;"><h1 style="font-size:1.4rem">${title}</h1><p>${body}</p></body></html>`, { status, headers: { "Content-Type": "text/html; charset=utf-8" } });
12
- }
13
11
  export function sessionCookieTokenFrom(request) {
14
12
  const cookie = request.headers.get("cookie") ?? request.headers.get("Cookie") ?? "";
15
13
  const match = /(?:^|;\s*)__session=([^;]+)/.exec(cookie);
@@ -88,13 +86,19 @@ export async function verifyGithubSetupState(secret, signed, nowMs) {
88
86
  const parsed = rParsed.Ok();
89
87
  if (typeof parsed.owner !== "string" || typeof parsed.slug !== "string")
90
88
  return undefined;
91
- if (typeof parsed.installationId !== "string" || parsed.installationId === "")
89
+ if (parsed.installationId !== undefined && (typeof parsed.installationId !== "string" || parsed.installationId === "")) {
92
90
  return undefined;
91
+ }
93
92
  if (typeof parsed.exp !== "number" || nowMs >= parsed.exp)
94
93
  return undefined;
95
94
  if (!GITHUB_SETUP_STATE_RE.test(`${parsed.owner}/${parsed.slug}`))
96
95
  return undefined;
97
- const base = { owner: parsed.owner, slug: parsed.slug, installationId: parsed.installationId, exp: parsed.exp };
96
+ const base = {
97
+ owner: parsed.owner,
98
+ slug: parsed.slug,
99
+ exp: parsed.exp,
100
+ ...(parsed.installationId === undefined ? {} : { installationId: parsed.installationId }),
101
+ };
98
102
  if (parsed.consent === undefined)
99
103
  return base;
100
104
  if (typeof parsed.consent !== "object" || parsed.consent === null)
@@ -132,8 +136,16 @@ export async function exchangeOAuthCode(input) {
132
136
  console.error(`[github-setup] oauth token refused by GitHub: ${body.error ?? "(no error field)"} — ${body.error_description ?? ""}`);
133
137
  return undefined;
134
138
  }
135
- async function userInstallationIds(input) {
136
- const ids = [];
139
+ function githubPageUrl(raw) {
140
+ if (typeof raw !== "string")
141
+ return undefined;
142
+ const rUri = URI.fromResult(raw);
143
+ if (rUri.isErr() || rUri.Ok().protocol !== "https:" || rUri.Ok().hostname !== "github.com")
144
+ return undefined;
145
+ return rUri.Ok().toString();
146
+ }
147
+ async function userInstallations(input) {
148
+ const found = [];
137
149
  let url = GITHUB_USER_INSTALLATIONS_URL;
138
150
  for (let page = 0; page < MAX_INSTALLATION_PAGES && url !== undefined; page = page + 1) {
139
151
  const pageUrl = url;
@@ -154,8 +166,15 @@ async function userInstallationIds(input) {
154
166
  if (rBody.isErr())
155
167
  return undefined;
156
168
  for (const inst of rBody.Ok().installations ?? []) {
157
- if (inst.id !== undefined)
158
- ids.push(String(inst.id));
169
+ if (inst.id === undefined || String(inst.app_id) !== input.appId)
170
+ continue;
171
+ const id = String(inst.id);
172
+ const settingsUrl = githubPageUrl(inst.html_url);
173
+ found.push({
174
+ id,
175
+ accountLogin: inst.account?.login ?? `installation ${id}`,
176
+ ...(settingsUrl === undefined ? {} : { settingsUrl }),
177
+ });
159
178
  }
160
179
  const rNext = nextGithubPageUrl(res.headers.get("link"), GITHUB_USER_INSTALLATIONS_PATH);
161
180
  if (rNext.isErr()) {
@@ -164,7 +183,7 @@ async function userInstallationIds(input) {
164
183
  }
165
184
  url = rNext.Ok();
166
185
  }
167
- return ids;
186
+ return found;
168
187
  }
169
188
  export function sqlFor(env, deps) {
170
189
  return (deps.sql ??
@@ -277,12 +296,12 @@ function consentRowMatches(sql, key) {
277
296
  const t = sql.tables.connectionApprovals;
278
297
  return and(eq(t.id, key.id), eq(t.consumedAt, ""), eq(t.userId, key.userId), eq(t.provider, GITHUB_BIND_CONSENT_PROVIDER), eq(t.ownerHandle, key.owner), eq(t.appSlug, key.slug));
279
298
  }
280
- async function githubConsentUnspent(sql, key) {
299
+ export async function githubConsentUnspent(sql, key) {
281
300
  const t = sql.tables.connectionApprovals;
282
301
  const rows = await sql.db.select({ id: t.id }).from(t).where(consentRowMatches(sql, key)).limit(1);
283
302
  return rows.length > 0;
284
303
  }
285
- async function claimGithubConsent(sql, key) {
304
+ export async function claimGithubConsent(sql, key) {
286
305
  const t = sql.tables.connectionApprovals;
287
306
  const claimed = await sql.db
288
307
  .update(t)
@@ -291,7 +310,7 @@ async function claimGithubConsent(sql, key) {
291
310
  .returning({ id: t.id });
292
311
  return claimed.length > 0;
293
312
  }
294
- function notYourVibePage() {
313
+ export function notYourVibePage() {
295
314
  return htmlPage("Not your vibe", "You can only connect a repository to a vibe you own.", 403);
296
315
  }
297
316
  async function admitPhaseOne(input) {
@@ -318,20 +337,61 @@ async function admitPhaseOne(input) {
318
337
  return {
319
338
  ok: false,
320
339
  refusal: htmlPage("Consent not confirmed", "This install did not come from a consent you confirmed on vibes.diy, or that consent has expired. Open the " +
321
- "app and use its Connect GitHub link again.", 403),
340
+ "app and press its Connect button again.", 403),
322
341
  };
323
342
  }
324
343
  if (!(await githubConsentUnspent(sql, { id: consent.id, userId, owner: consent.owner, slug: consent.slug }))) {
325
- return {
326
- ok: false,
327
- refusal: htmlPage("Consent already used", "That consent has already connected a repository. Open the app and use its Connect GitHub link again.", 403),
328
- };
344
+ return { ok: false, refusal: consentUsedPage() };
329
345
  }
330
346
  if (!(await mayBindVibe(sql, { userId, owner: consent.owner, slug: consent.slug }, deps.githubDecl))) {
331
347
  return { ok: false, refusal: notYourVibePage() };
332
348
  }
333
349
  return { ok: true, owner: consent.owner, slug: consent.slug, consentId: consent.id };
334
350
  }
351
+ export const GITHUB_SETUP_PATH = "/github/setup";
352
+ export function notProvisionedPage() {
353
+ return htmlPage("Not available", "The GitHub connection is not fully provisioned on this environment: connecting a repository needs a GitHub " +
354
+ "authorization step that is not configured yet, so nothing has been connected.", 503);
355
+ }
356
+ function notYourInstallationPage() {
357
+ return htmlPage("Not your installation", "That GitHub installation is not one your GitHub account can access.", 403);
358
+ }
359
+ export function consentUsedPage() {
360
+ return htmlPage("Consent already used", "That consent has already connected a repository. Open the app and press its Connect button again.", 403);
361
+ }
362
+ export function githubOAuthReady(env) {
363
+ const signingKey = stateSecret(env);
364
+ const clientId = env.VIBES_GH_APP_CLIENT_ID ?? "";
365
+ const clientSecret = env.VIBES_GH_APP_CLIENT_SECRET ?? "";
366
+ if (clientId.length === 0 || clientSecret.length === 0 || signingKey === undefined) {
367
+ return { ok: false, refusal: notProvisionedPage() };
368
+ }
369
+ const redirectUri = publicRouteUrl(env, GITHUB_SETUP_PATH);
370
+ if (redirectUri === undefined) {
371
+ return { ok: false, refusal: htmlPage("Not available", "The GitHub connection is not configured on this environment.", 503) };
372
+ }
373
+ return { ok: true, signingKey, clientId, redirectUri };
374
+ }
375
+ export async function githubAuthorizeUrl(env, state) {
376
+ const ready = githubOAuthReady(env);
377
+ if (ready.ok === false)
378
+ return ready;
379
+ const { signingKey, clientId, redirectUri } = ready;
380
+ const signed = await signGithubSetupState(signingKey, state);
381
+ const url = BuildURI.from(GITHUB_OAUTH_AUTHORIZE_URL)
382
+ .setParam("client_id", clientId)
383
+ .setParam("redirect_uri", redirectUri)
384
+ .setParam("state", signed)
385
+ .toString();
386
+ return { ok: true, url };
387
+ }
388
+ export function installUrlFor(htmlUrl, state) {
389
+ const base = URI.from(htmlUrl);
390
+ return BuildURI.from(htmlUrl)
391
+ .pathname(`${base.pathname.replace(/\/+$/, "")}/installations/new`)
392
+ .setParam("state", state)
393
+ .toString();
394
+ }
335
395
  async function phaseOneStartOAuth(input) {
336
396
  const { env, deps, uri, userId, nowMs } = input;
337
397
  const installationId = uri.getParam("installation_id") ?? "";
@@ -339,34 +399,20 @@ async function phaseOneStartOAuth(input) {
339
399
  if (installationId === "") {
340
400
  return htmlPage("Invalid link", "This install link is malformed. Start the connection again from your vibe's settings.", 400);
341
401
  }
402
+ if (state === "" && uri.getParam("setup_action") === "update") {
403
+ return htmlPage("Saved on GitHub", "GitHub saved your repository choices. Open your vibe and press its Connect button again to bring them in.", 200);
404
+ }
342
405
  const admitted = await admitPhaseOne({ env, deps, state, userId, nowMs });
343
406
  if (admitted.ok === false)
344
407
  return admitted.refusal;
345
- const { owner, slug } = admitted;
346
- const signingKey = stateSecret(env);
347
- const clientId = env.VIBES_GH_APP_CLIENT_ID ?? "";
348
- const clientSecret = env.VIBES_GH_APP_CLIENT_SECRET ?? "";
349
- if (clientId.length === 0 || clientSecret.length === 0 || signingKey === undefined) {
350
- return htmlPage("Not available", "The GitHub connection is not fully provisioned on this environment: connecting a repository needs a GitHub " +
351
- "authorization step that is not configured yet, so nothing has been connected.", 503);
352
- }
353
- const signed = await signGithubSetupState(signingKey, {
354
- owner,
355
- slug,
408
+ const authorize = await githubAuthorizeUrl(env, {
409
+ owner: admitted.owner,
410
+ slug: admitted.slug,
356
411
  installationId,
357
412
  exp: nowMs + GITHUB_SETUP_OAUTH_STATE_TTL_MS,
358
413
  ...(admitted.consentId === undefined ? {} : { consent: { id: admitted.consentId, userId } }),
359
414
  });
360
- const redirectUri = publicRouteUrl(env, uri.pathname);
361
- if (redirectUri === undefined) {
362
- return htmlPage("Not available", "The GitHub connection is not configured on this environment.", 503);
363
- }
364
- const authorize = BuildURI.from(GITHUB_OAUTH_AUTHORIZE_URL)
365
- .setParam("client_id", clientId)
366
- .setParam("redirect_uri", redirectUri)
367
- .setParam("state", signed)
368
- .toString();
369
- return new Response(null, { status: 302, headers: { Location: authorize } });
415
+ return authorize.ok ? flowRedirect(authorize.url) : authorize.refusal;
370
416
  }
371
417
  async function phaseTwoBind(input) {
372
418
  const { env, deps, uri, userId, nowMs, fetchImpl, code } = input;
@@ -374,8 +420,7 @@ async function phaseTwoBind(input) {
374
420
  const clientId = env.VIBES_GH_APP_CLIENT_ID ?? "";
375
421
  const clientSecret = env.VIBES_GH_APP_CLIENT_SECRET ?? "";
376
422
  if (clientId.length === 0 || clientSecret.length === 0 || signingKey === undefined) {
377
- return htmlPage("Not available", "The GitHub connection is not fully provisioned on this environment: connecting a repository needs a GitHub " +
378
- "authorization step that is not configured yet, so nothing has been connected.", 503);
423
+ return notProvisionedPage();
379
424
  }
380
425
  const verified = await verifyGithubSetupState(signingKey, uri.getParam("state") ?? "", nowMs);
381
426
  if (verified === undefined) {
@@ -391,27 +436,171 @@ async function phaseTwoBind(input) {
391
436
  if (userToken === undefined) {
392
437
  return htmlPage("GitHub said no", "We could not confirm your GitHub account. Try the install again.", 502);
393
438
  }
394
- const installations = await userInstallationIds({ userToken, fetchImpl });
439
+ const installations = await userInstallations({ userToken, appId: env.VIBES_GH_APP_ID ?? "", fetchImpl });
395
440
  if (installations === undefined) {
396
441
  return htmlPage("GitHub said no", "We could not read your GitHub installations. Try the install again.", 502);
397
442
  }
398
- if (!installations.includes(installationId)) {
443
+ if (installationId !== undefined && installations.some((inst) => inst.id === installationId) === false) {
399
444
  console.error(`[github-setup] installation ${installationId} not held by clerk user ${userId} — refusing to bind`);
400
- return htmlPage("Not your installation", "That GitHub installation is not one your GitHub account can access.", 403);
445
+ return notYourInstallationPage();
401
446
  }
402
447
  const sql = sqlFor(env, deps);
403
- if (!(await ownsHandle(sql, userId, ownerHandle))) {
404
- const admittedVisitor = consent !== undefined &&
405
- consent.userId === userId &&
406
- (await mayBindVibe(sql, { userId, owner: ownerHandle, slug: appSlug }, deps.githubDecl)) &&
407
- (await claimGithubConsent(sql, { id: consent.id, userId, owner: ownerHandle, slug: appSlug, nowMs }));
408
- if (admittedVisitor === false) {
409
- return htmlPage("Not your vibe", "You can only connect a repository to a vibe you own.", 403);
448
+ const isOwner = await ownsHandle(sql, userId, ownerHandle);
449
+ if (isOwner === false) {
450
+ if (consent === undefined ||
451
+ consent.userId !== userId ||
452
+ (await mayBindVibe(sql, { userId, owner: ownerHandle, slug: appSlug }, deps.githubDecl)) === false) {
453
+ return notYourVibePage();
454
+ }
455
+ if ((await githubConsentUnspent(sql, { id: consent.id, userId, owner: ownerHandle, slug: appSlug })) === false) {
456
+ return consentUsedPage();
410
457
  }
411
458
  }
412
459
  if (!(await appExists(sql, ownerHandle, appSlug))) {
413
460
  return htmlPage("Vibe not found", "That vibe does not exist. Publish it first, then connect the repository.", 404);
414
461
  }
462
+ if (installationId !== undefined) {
463
+ return offerRepositories({
464
+ env,
465
+ deps,
466
+ sql,
467
+ userId,
468
+ ownerHandle,
469
+ appSlug,
470
+ userToken,
471
+ nowMs,
472
+ signingKey,
473
+ isOwner,
474
+ installationId,
475
+ consentId: isOwner || consent === undefined ? undefined : consent.id,
476
+ });
477
+ }
478
+ return chooseOrInstall({
479
+ env,
480
+ deps,
481
+ nowMs,
482
+ signingKey,
483
+ installations,
484
+ owner: ownerHandle,
485
+ slug: appSlug,
486
+ consent: isOwner || consent === undefined ? undefined : { id: consent.id, userId },
487
+ });
488
+ }
489
+ async function nextHopState(input) {
490
+ if (input.consent === undefined)
491
+ return `${input.owner}/${input.slug}`;
492
+ return signGithubConsentState(input.signingKey, {
493
+ id: input.consent.id,
494
+ owner: input.owner,
495
+ slug: input.slug,
496
+ userId: input.consent.userId,
497
+ exp: input.nowMs + GITHUB_CONSENT_STATE_TTL_MS,
498
+ });
499
+ }
500
+ async function chooseOrInstall(input) {
501
+ const { env, deps, nowMs, installations, owner, slug } = input;
502
+ const rHtmlUrl = await getAppHtmlUrl({
503
+ appId: env.VIBES_GH_APP_ID ?? "",
504
+ privateKeyPem: env.VIBES_GH_APP_PRIVATE_KEY ?? "",
505
+ nowMs,
506
+ fetchImpl: deps.fetchImpl,
507
+ });
508
+ if (rHtmlUrl.isErr()) {
509
+ console.error("[github-setup] could not resolve the App's install URL:", rHtmlUrl.Err().message);
510
+ return htmlPage("GitHub said no", "We could not reach GitHub to continue. Try again in a moment.", 502);
511
+ }
512
+ const state = await nextHopState({ signingKey: input.signingKey, owner, slug, nowMs, consent: input.consent });
513
+ const installUrl = installUrlFor(rHtmlUrl.Ok(), state);
514
+ if (installations.length === 0)
515
+ return flowRedirect(installUrl);
516
+ const setupUrl = publicRouteUrl(env, GITHUB_SETUP_PATH);
517
+ if (setupUrl === undefined || deps.templates === undefined) {
518
+ return htmlPage("Not available", "This page could not be shown right now. Try again in a moment.", 503);
519
+ }
520
+ const rItem = await deps.templates("github-install-pick-item.html");
521
+ if (rItem.isErr()) {
522
+ console.error("[github-setup] template github-install-pick-item.html unreadable:", rItem.Err().message);
523
+ return htmlPage("Not available", "This page could not be shown right now. Try again in a moment.", 503);
524
+ }
525
+ const choices = fillFragments(rItem.Ok(), installations.map((inst) => ({
526
+ account: inst.accountLogin,
527
+ chooseHref: BuildURI.from(setupUrl).setParam("installation_id", inst.id).setParam("state", state).toString(),
528
+ settingsUrl: inst.settingsUrl ?? installUrl,
529
+ })));
530
+ const vibe = `${owner}/${slug}`;
531
+ return templatePage(deps.templates, { name: "github-install-pick.html", status: 200 }, { vibe, choices, installUrl, vibeHref: `/vibe/${vibe}` });
532
+ }
533
+ export const GITHUB_REPOS_PATH = "/github/repos";
534
+ export const GITHUB_REPO_PICK_STATE_PREFIX = "r1.";
535
+ export const GITHUB_REPO_PICK_STATE_TTL_MS = 10 * 60 * 1000;
536
+ export const GITHUB_REPO_PICK_PROVIDER = "github-app-repos";
537
+ export async function signGithubRepoPickState(secret, state) {
538
+ const blob = b64urlEncode(TxtEnDecoderSingleton().encode(JSON.stringify(state)));
539
+ const message = `${GITHUB_REPO_PICK_STATE_PREFIX}${blob}`;
540
+ return `${message}.${await hmacHex(secret, message)}`;
541
+ }
542
+ function pickedReposFrom(raw) {
543
+ if (!Array.isArray(raw))
544
+ return undefined;
545
+ const out = [];
546
+ for (const item of raw) {
547
+ if (typeof item !== "object" || item === null)
548
+ return undefined;
549
+ const repo = item;
550
+ if (typeof repo.fullName !== "string" || repo.fullName === "" || typeof repo.accountLogin !== "string")
551
+ return undefined;
552
+ out.push({ fullName: repo.fullName, accountLogin: repo.accountLogin });
553
+ }
554
+ return out;
555
+ }
556
+ export async function verifyGithubRepoPickState(secret, signed, nowMs) {
557
+ if (!signed.startsWith(GITHUB_REPO_PICK_STATE_PREFIX))
558
+ return undefined;
559
+ const dot = signed.lastIndexOf(".");
560
+ if (dot <= GITHUB_REPO_PICK_STATE_PREFIX.length)
561
+ return undefined;
562
+ const message = signed.slice(0, dot);
563
+ const provided = signed.slice(dot + 1);
564
+ const expected = await hmacHex(secret, message);
565
+ if (!timingSafeEqualString(provided, expected))
566
+ return undefined;
567
+ const json = b64urlDecode(message.slice(GITHUB_REPO_PICK_STATE_PREFIX.length));
568
+ if (json === undefined)
569
+ return undefined;
570
+ const rParsed = exception2Result(() => JSON.parse(json));
571
+ if (rParsed.isErr())
572
+ return undefined;
573
+ const parsed = rParsed.Ok();
574
+ if (typeof parsed.owner !== "string" || typeof parsed.slug !== "string")
575
+ return undefined;
576
+ if (typeof parsed.id !== "string" || parsed.id === "")
577
+ return undefined;
578
+ if (typeof parsed.userId !== "string" || parsed.userId === "")
579
+ return undefined;
580
+ if (typeof parsed.installationId !== "string" || parsed.installationId === "")
581
+ return undefined;
582
+ if (typeof parsed.exp !== "number" || nowMs >= parsed.exp)
583
+ return undefined;
584
+ if (parsed.consentId !== undefined && (typeof parsed.consentId !== "string" || parsed.consentId === ""))
585
+ return undefined;
586
+ const repos = pickedReposFrom(parsed.repos);
587
+ if (repos === undefined)
588
+ return undefined;
589
+ if (!GITHUB_SETUP_STATE_RE.test(`${parsed.owner}/${parsed.slug}`))
590
+ return undefined;
591
+ return {
592
+ id: parsed.id,
593
+ owner: parsed.owner,
594
+ slug: parsed.slug,
595
+ installationId: parsed.installationId,
596
+ userId: parsed.userId,
597
+ repos,
598
+ exp: parsed.exp,
599
+ ...(parsed.consentId === undefined ? {} : { consentId: parsed.consentId }),
600
+ };
601
+ }
602
+ async function offerRepositories(input) {
603
+ const { env, deps, sql, userId, ownerHandle, appSlug, userToken, nowMs, installationId } = input;
415
604
  const rToken = await getInstallationToken({
416
605
  installationId,
417
606
  appId: env.VIBES_GH_APP_ID,
@@ -434,51 +623,73 @@ async function phaseTwoBind(input) {
434
623
  "organization owner to grant you access, or install the app on a repository you own.", 403);
435
624
  }
436
625
  if (repos.length > GITHUB_SETUP_MAX_REPOS) {
437
- return htmlPage("Too many repositories", `That installation covers ${repos.length} repositories, more than the ${GITHUB_SETUP_MAX_REPOS} a single connection ` +
438
- "can bind, so nothing has been connected. In GitHub, change the app's repository access to select fewer " +
626
+ return htmlPage("Too many repositories", `That installation covers ${repos.length} repositories, more than the ${GITHUB_SETUP_MAX_REPOS} one connection ` +
627
+ "can list, so nothing has been connected. In GitHub, change the app's repository access to select fewer " +
439
628
  "repositories and run the connection again.", 400);
440
629
  }
630
+ const writable = repos.filter((r) => r.canWrite);
631
+ if (writable.length === 0) {
632
+ return htmlPage("No repositories to connect", "Connecting a repository needs write access to it on GitHub, and your account can only read the repositories " +
633
+ "in that installation. Ask a maintainer for write access, or connect a repository you maintain.", 403);
634
+ }
635
+ if (deps.templates === undefined) {
636
+ return htmlPage("Not available", "This page could not be shown right now. Try again in a moment.", 503);
637
+ }
638
+ const rItem = await deps.templates("github-repo-pick-item.html");
639
+ if (rItem.isErr()) {
640
+ console.error("[github-setup] template github-repo-pick-item.html unreadable:", rItem.Err().message);
641
+ return htmlPage("Not available", "This page could not be shown right now. Try again in a moment.", 503);
642
+ }
441
643
  const t = sql.tables.githubRepoRoutes;
442
- const heldBy = new Map();
644
+ const here = new Map();
443
645
  for (const row of await sql.db
444
646
  .select({ repoFullName: t.repoFullName, installedByUserId: t.installedByUserId })
445
647
  .from(t)
446
- .where(and(eq(t.installationId, installationId), eq(t.removedAt, "")))) {
447
- heldBy.set(row.repoFullName, row.installedByUserId);
448
- }
449
- const now = new Date().toISOString();
450
- const bound = [];
451
- for (const repo of repos) {
452
- const applied = await sql.db
453
- .insert(t)
454
- .values({
455
- installationId,
456
- repoFullName: repo.fullName,
457
- ownerHandle,
458
- appSlug,
459
- accountLogin: repo.accountLogin,
460
- installedByUserId: userId,
461
- created: now,
462
- updated: now,
463
- removedAt: "",
464
- })
465
- .onConflictDoUpdate({
466
- target: [t.installationId, t.repoFullName],
467
- set: { ownerHandle, appSlug, installedByUserId: userId, updated: now, removedAt: "" },
468
- setWhere: or(eq(t.installedByUserId, userId), ne(t.removedAt, "")),
469
- })
470
- .returning({ repoFullName: t.repoFullName });
471
- if (applied.length === 0) {
472
- console.warn(`[github-setup] installation ${installationId} repo ${repo.fullName} is already connected by clerk user ` +
473
- `${heldBy.get(repo.fullName) ?? "unknown"}; refusing to rebind it for clerk user ${userId}`);
474
- continue;
475
- }
476
- bound.push(repo.fullName);
648
+ .where(and(eq(t.installationId, installationId), eq(t.ownerHandle, ownerHandle), eq(t.appSlug, appSlug), eq(t.removedAt, "")))) {
649
+ here.set(row.repoFullName, row.installedByUserId);
477
650
  }
478
- if (bound.length === 0) {
479
- return htmlPage("Already connected", "Those repositories are already connected to another vibe. Whoever connected them has to disconnect them first.", 409);
480
- }
481
- return new Response(null, { status: 302, headers: { Location: `/vibe/${ownerHandle}/${appSlug}` } });
651
+ const id = crypto.randomUUID();
652
+ await sql.db.insert(sql.tables.connectionApprovals).values({
653
+ id,
654
+ userId,
655
+ provider: GITHUB_REPO_PICK_PROVIDER,
656
+ ownerHandle,
657
+ appSlug,
658
+ created: new Date(nowMs).toISOString(),
659
+ consumedAt: "",
660
+ });
661
+ const state = await signGithubRepoPickState(input.signingKey, {
662
+ id,
663
+ owner: ownerHandle,
664
+ slug: appSlug,
665
+ installationId,
666
+ userId,
667
+ repos: writable.map((r) => ({ fullName: r.fullName, accountLogin: r.accountLogin })),
668
+ ...(input.consentId === undefined ? {} : { consentId: input.consentId }),
669
+ exp: nowMs + GITHUB_REPO_PICK_STATE_TTL_MS,
670
+ });
671
+ const rows = fillFragments(rItem.Ok(), repos.map((repo) => {
672
+ const binder = here.get(repo.fullName);
673
+ const lockedForMe = binder !== undefined && binder !== userId && input.isOwner === false;
674
+ const note = (() => {
675
+ switch (true) {
676
+ case repo.canWrite === false:
677
+ return "needs write access on GitHub to connect";
678
+ case binder !== undefined && binder !== userId:
679
+ return "connected here by someone else";
680
+ default:
681
+ return "";
682
+ }
683
+ })();
684
+ return {
685
+ repo: repo.fullName,
686
+ checked: binder === undefined ? "" : "checked",
687
+ disabled: lockedForMe || repo.canWrite === false ? "disabled" : "",
688
+ note,
689
+ };
690
+ }));
691
+ const vibe = `${ownerHandle}/${appSlug}`;
692
+ return templatePage(deps.templates, { name: "github-repo-pick.html", status: 200 }, { vibe, rows, state, action: GITHUB_REPOS_PATH, vibeHref: `/vibe/${vibe}` });
482
693
  }
483
694
  async function phaseConnect(input) {
484
695
  return runConnectCallback({
@@ -1 +1 @@
1
- {"version":3,"file":"github-setup.js","sourceRoot":"","sources":["../../jsr/public/github-setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"github-setup.js","sourceRoot":"","sources":["../../jsr/public/github-setup.ts"],"names":[],"mappings":"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"}