@snagset/server 0.0.4 → 0.1.0

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 (135) hide show
  1. package/README.md +4 -3
  2. package/dist/app.js +82 -9
  3. package/dist/app.js.map +1 -1
  4. package/dist/bin.js +46 -9
  5. package/dist/bin.js.map +1 -1
  6. package/dist/boot.js +67 -51
  7. package/dist/boot.js.map +1 -1
  8. package/dist/config.generated.js +5 -2
  9. package/dist/config.generated.js.map +1 -1
  10. package/dist/db/connect.js +7 -0
  11. package/dist/db/connect.js.map +1 -1
  12. package/dist/db/migrations/0005_studio_reviewers.sql +45 -0
  13. package/dist/db/migrations/0006_instance_settings.sql +69 -0
  14. package/dist/db/migrations/0007_jira_provider.no-txn.sql +13 -0
  15. package/dist/domain.js +129 -0
  16. package/dist/domain.js.map +1 -0
  17. package/dist/instance/settings.js +54 -0
  18. package/dist/instance/settings.js.map +1 -0
  19. package/dist/integrations/github.js +112 -0
  20. package/dist/integrations/github.js.map +1 -0
  21. package/dist/integrations/inbound.js +88 -0
  22. package/dist/integrations/inbound.js.map +1 -0
  23. package/dist/integrations/jira.js +129 -0
  24. package/dist/integrations/jira.js.map +1 -0
  25. package/dist/integrations/linear.js +111 -0
  26. package/dist/integrations/linear.js.map +1 -0
  27. package/dist/integrations/outbox.js +305 -0
  28. package/dist/integrations/outbox.js.map +1 -0
  29. package/dist/integrations/slack.js +135 -0
  30. package/dist/integrations/slack.js.map +1 -0
  31. package/dist/integrations/store.js +101 -0
  32. package/dist/integrations/store.js.map +1 -0
  33. package/dist/mail/index.js +21 -11
  34. package/dist/mail/index.js.map +1 -1
  35. package/dist/mail/resolve.js +80 -0
  36. package/dist/mail/resolve.js.map +1 -0
  37. package/dist/projectCache.js +3 -2
  38. package/dist/projectCache.js.map +1 -1
  39. package/dist/projects.js +8 -2
  40. package/dist/projects.js.map +1 -1
  41. package/dist/routes/account.js +59 -0
  42. package/dist/routes/account.js.map +1 -0
  43. package/dist/routes/activity.js +111 -0
  44. package/dist/routes/activity.js.map +1 -0
  45. package/dist/routes/assignees.js +139 -0
  46. package/dist/routes/assignees.js.map +1 -0
  47. package/dist/routes/attachments.js +2 -2
  48. package/dist/routes/attachments.js.map +1 -1
  49. package/dist/routes/comments.js +27 -17
  50. package/dist/routes/comments.js.map +1 -1
  51. package/dist/routes/cors.js +10 -1
  52. package/dist/routes/cors.js.map +1 -1
  53. package/dist/routes/instance.js +164 -0
  54. package/dist/routes/instance.js.map +1 -0
  55. package/dist/routes/integrations.js +610 -0
  56. package/dist/routes/integrations.js.map +1 -0
  57. package/dist/routes/jobs.js +15 -3
  58. package/dist/routes/jobs.js.map +1 -1
  59. package/dist/routes/mcpTokens.js +119 -0
  60. package/dist/routes/mcpTokens.js.map +1 -0
  61. package/dist/routes/members.js +177 -0
  62. package/dist/routes/members.js.map +1 -0
  63. package/dist/routes/owner.js +64 -7
  64. package/dist/routes/owner.js.map +1 -1
  65. package/dist/routes/sites.js +181 -8
  66. package/dist/routes/sites.js.map +1 -1
  67. package/dist/routes/threads.js +276 -9
  68. package/dist/routes/threads.js.map +1 -1
  69. package/dist/serverless.js +39 -6
  70. package/dist/serverless.js.map +1 -1
  71. package/dist/studioReviewers.js +67 -0
  72. package/dist/studioReviewers.js.map +1 -0
  73. package/dist/vendor/adapters/outbound/sanitise.js +18 -3
  74. package/dist/vendor/types/brief.js +121 -0
  75. package/package.json +1 -1
  76. package/static/dashboard/assets/CompositeItem-CoPuxIvr.js +1 -0
  77. package/static/dashboard/assets/ConfirmDialog-DkCcJwll.js +1 -0
  78. package/static/dashboard/assets/CopyButton-BNa2pLLv.js +1 -0
  79. package/static/dashboard/assets/FieldItemContext-DQXjpFtW.js +1 -0
  80. package/static/dashboard/assets/InstallTag-SOlWl7Hx.js +1 -0
  81. package/static/dashboard/assets/SaveState-CmxB4XyX.js +6 -0
  82. package/static/dashboard/assets/_app-DNkv3HBi.js +1 -0
  83. package/static/dashboard/assets/_app-xVQe811c.js +56 -0
  84. package/static/dashboard/assets/activity-DsMa5Ja6.js +1 -0
  85. package/static/dashboard/assets/arrow-left-vQV4xhAD.js +6 -0
  86. package/static/dashboard/assets/avatar-DuPL6QD_.js +1 -0
  87. package/static/dashboard/assets/badge-BWjiIc8T.js +1 -0
  88. package/static/dashboard/assets/card-BIBfCno8.js +1 -0
  89. package/static/dashboard/assets/check-Dpx6GTdT.js +6 -0
  90. package/static/dashboard/assets/chevron-right-DKIlBUGN.js +6 -0
  91. package/static/dashboard/assets/copy-DCbhEe2L.js +6 -0
  92. package/static/dashboard/assets/createBaseUIEventDetails-C_ZVkrgp.js +1 -0
  93. package/static/dashboard/assets/createLucideIcon-C_IGE4WD.js +36 -0
  94. package/static/dashboard/assets/dialog-BT2uWf4e.js +6 -0
  95. package/static/dashboard/assets/dropdown-menu-DSXzPAwB.js +11 -0
  96. package/static/dashboard/assets/image-off-DGWejLDG.js +6 -0
  97. package/static/dashboard/assets/index-BRTBtV91.css +1 -0
  98. package/static/dashboard/assets/index-D6FWZoJT.js +129 -0
  99. package/static/dashboard/assets/label-9QsSpLMA.js +1 -0
  100. package/static/dashboard/assets/labels--UUyt9uB.js +1 -0
  101. package/static/dashboard/assets/layout-grid-UPGEmEw-.js +6 -0
  102. package/static/dashboard/assets/me-0HQsBXLU.js +1 -0
  103. package/static/dashboard/assets/parts-C29uZ5zo.js +1 -0
  104. package/static/dashboard/assets/plus-BFNS5LcY.js +6 -0
  105. package/static/dashboard/assets/s._site-D6Ep2tdc.js +1 -0
  106. package/static/dashboard/assets/s._site.comments-BRVI5gpJ.js +39 -0
  107. package/static/dashboard/assets/s._site.reviewers-CiEkZnnp.js +1 -0
  108. package/static/dashboard/assets/s._site.settings-BqLGyfEd.js +1 -0
  109. package/static/dashboard/assets/setup-dUMCPWdf.js +1 -0
  110. package/static/dashboard/assets/sign-in-CdRa-bio.js +1 -0
  111. package/static/dashboard/assets/sites-CmbtFKoo.js +1 -0
  112. package/static/dashboard/assets/studio-BHuVXWZh.js +1 -0
  113. package/static/dashboard/assets/studio-BjeTOKda.js +1 -0
  114. package/static/dashboard/assets/studio.index--kuzOs7w.js +1 -0
  115. package/static/dashboard/assets/studio.integrations-Bq6HP80a.js +1 -0
  116. package/static/dashboard/assets/studio.members-8AB1KYsw.js +1 -0
  117. package/static/dashboard/assets/sun-BCiTcgnh.js +16 -0
  118. package/static/dashboard/assets/table-BXmeI_yA.js +1 -0
  119. package/static/dashboard/assets/update-duXzIzFS.js +1 -0
  120. package/static/dashboard/assets/useBaseQuery-Cp9wivVR.js +1 -0
  121. package/static/dashboard/assets/useQuery-BZXZlOqO.js +1 -0
  122. package/static/dashboard/assets/useRender-CO8aPW06.js +1 -0
  123. package/static/dashboard/assets/users-Dvw2FCKM.js +6 -0
  124. package/static/dashboard/assets/welcome-BHKjw20b.js +11 -0
  125. package/static/dashboard/assets/you-RBpAfUMU.js +1 -0
  126. package/static/dashboard/assets/zod-BpyjQIvb.js +1 -0
  127. package/static/dashboard/index.html +17 -2
  128. package/static/widget/snag.capture.js +1 -1
  129. package/static/widget/snag.dock.js +1 -1
  130. package/static/widget/snag.panels.js +1 -1
  131. package/static/widget/snag.runtime.js +2 -2
  132. package/static/widget/snag.text.js +1 -1
  133. package/vercel.json +4 -0
  134. package/static/dashboard/assets/index-CATItBzT.js +0 -1
  135. package/static/dashboard/assets/index-DsUJ96yc.css +0 -1
@@ -5,6 +5,9 @@ import { ID_PREFIX } from "../vendor/types/names.js";
5
5
  import { queueCommentNotice, queueResolvedNotice } from "../mail/notify.js";
6
6
  import { effectiveWriteMode } from "./sessions.js";
7
7
  import { mcpAllows, scopeDenied, checkWriteBudget, budgetExhausted, recordAgentWrite, agentReviewer, } from "./mcpAuth.js";
8
+ import { inPool } from "./assignees.js";
9
+ import { briefMarkdown } from "../vendor/types/brief.js";
10
+ import { queueIntegrationEvent } from "../integrations/outbox.js";
8
11
  /**
9
12
  * Wire id ⇄ row id — 05 §3.5, verbatim: *"id uuid PRIMARY KEY — client-minted
10
13
  * UUIDv7; wire form 'thr_…'"*.
@@ -65,7 +68,15 @@ features,
65
68
  * accumulate for the life of the install and arrive in one burst the day
66
69
  * somebody configures Resend.
67
70
  */
68
- notifications = false) {
71
+ notifications = async () => false,
72
+ /** Where this instance lives (SNAGSET_BASE_URL) — the brief's screenshot links are absolute. */
73
+ baseUrl = "http://localhost:8080",
74
+ /**
75
+ * D95/D97: the site's tracker connections — id, provider, and whether
76
+ * issues are made on every new thread. Injected so this file never opens
77
+ * a token; the worker does that.
78
+ */
79
+ trackers = async () => []) {
69
80
  const app = new Hono();
70
81
  /** Resolve `{uid}`, and 404 rather than leak whether a uid exists. */
71
82
  const project = (uid) => projects.get(uid);
@@ -111,9 +122,14 @@ notifications = false) {
111
122
  * `originAllowed` is absent (never false) when there is no Origin header:
112
123
  * same-origin pages and curl are not strangers.
113
124
  */
114
- const writable = c.get("originAllowed") !== false;
125
+ // D91 — the switch, 05 §4.9 layer 6: a paused site is writable from
126
+ // nowhere, and the stub reads `writable` and stays dormant. Said before
127
+ // the origin verdict, because "switched off" is the more useful sentence.
128
+ const paused = p.status !== "active";
129
+ const writable = c.get("originAllowed") !== false && !paused;
115
130
  const base = {
116
131
  uid: p.uid,
132
+ status: p.status,
117
133
  // A9b, and it is a fact about THIS instance rather than a constant:
118
134
  // derived from whether a bucket is connected. False hides the screenshot
119
135
  // control rather than offering one whose upload would fail — annotation
@@ -131,7 +147,7 @@ notifications = false) {
131
147
  writable,
132
148
  };
133
149
  if (!writable)
134
- return c.json({ ...base, reason: "origin_not_allowed" });
150
+ return c.json({ ...base, reason: paused ? "project_paused" : "origin_not_allowed" });
135
151
  // T10/M2-22: the round HISTORY rides the config the widget already fetches
136
152
  // at mount, so the dock's selector costs no extra request. Behind the
137
153
  // origin split with `keyPrefix` (§7.2): the least sensitive PRIVATE things
@@ -216,6 +232,21 @@ notifications = false) {
216
232
  const status = asStudio ? c.req.query("status") : undefined;
217
233
  const requestedRound = Number(c.req.query("round")) || null;
218
234
  const q = asStudio ? (c.req.query("q") ?? "").trim() : "";
235
+ /**
236
+ * `?assignee=rev_…|unassigned` — 05 §6.4b's triage filter ("what has
237
+ * nobody picked up"). `unassigned` is a word rather than an empty value
238
+ * because `assignee=` with nothing after it is indistinguishable from an
239
+ * absent parameter on the wire. Studio-only, like status and q: a filter
240
+ * the widget does not draw.
241
+ */
242
+ const assigneeRaw = asStudio ? c.req.query("assignee")?.trim() : undefined;
243
+ let assigneeFilter = null;
244
+ if (assigneeRaw) {
245
+ assigneeFilter = assigneeRaw === "unassigned" ? "unassigned" : rowId(assigneeRaw, ID_PREFIX.reviewer);
246
+ if (!assigneeFilter) {
247
+ return fail(c, 400, "validation_failed", "assignee must be a reviewer id (rev_…) or the word unassigned.");
248
+ }
249
+ }
219
250
  /**
220
251
  * `?since=` — 05 §6.3's delta poll, and A10's whole realtime story.
221
252
  *
@@ -284,6 +315,15 @@ notifications = false) {
284
315
  t.created_at, t.updated_at, t.resolved_at, t.comment_count_public,
285
316
  t.route, e.key AS environment_key, rd.number AS round, rd.name AS round_name,
286
317
  r.name AS created_by_name, r.kind AS created_by_kind, r.id AS created_by_id,
318
+ ar.id AS assignee_id, ar.name AS assignee_name, ar.kind AS assignee_kind,
319
+ (ar.user_id IS NOT NULL) AS assignee_is_team,
320
+ COALESCE(
321
+ (SELECT json_agg(json_build_object(
322
+ 'provider', x.provider, 'kind', x.kind, 'externalId', x.external_id, 'url', x.url, 'status', x.status)
323
+ ORDER BY x.synced_at)
324
+ FROM external_refs x
325
+ WHERE x.thread_id = t.id AND x.status <> 'detached'),
326
+ '[]'::json) AS refs,
287
327
  COALESCE(
288
328
  (SELECT json_agg(json_build_object(
289
329
  'id', c.id, 'body', c.body, 'createdAt', c.created_at,
@@ -317,6 +357,9 @@ notifications = false) {
317
357
  (t.deleted_at IS NULL AND ${asOwner ? tx `true` : tx `t.private = false`}) AS visible
318
358
  FROM threads t
319
359
  JOIN reviewers r ON r.id = t.created_by
360
+ -- The assignee, when there is one (05 section 6.4b). LEFT: most
361
+ -- threads have nobody yet, and an inner join would hide them.
362
+ LEFT JOIN reviewers ar ON ar.id = t.assignee_id
320
363
  JOIN environments e ON e.id = t.environment_id
321
364
  -- Joined for the round filter, and the join is the fix for a real
322
365
  -- trap: threads.round_number is the thread's position WITHIN its round
@@ -345,6 +388,11 @@ notifications = false) {
345
388
  : tx `e.is_default`}
346
389
  ${key || !route ? tx `` : tx `AND t.route = ${route}`}
347
390
  ${key || !status ? tx `` : tx `AND t.status = ${status}::snag_thread_status`}
391
+ ${key || !assigneeFilter
392
+ ? tx ``
393
+ : assigneeFilter === "unassigned"
394
+ ? tx `AND t.assignee_id IS NULL`
395
+ : tx `AND t.assignee_id = ${assigneeFilter}::uuid`}
348
396
  -- Absent round query param: an OWNER still sees every round
349
397
  -- (unchanged), but a non-owner reader defaults to the latest OPEN
350
398
  -- round, so a fresh page load is D2-clean rather than showing a
@@ -431,6 +479,10 @@ notifications = false) {
431
479
  if (!session) {
432
480
  return fail(c, 401, "unauthorized", "Open your review link, or reload the page, and try again.");
433
481
  }
482
+ if (p.status !== "active") {
483
+ // D91: the switch is off — writes refused, reads work (05 §4.9 layer 6).
484
+ return fail(c, 403, "project_paused", "This site's widget is switched off. Its owner can switch it back on.");
485
+ }
434
486
  if (!session.perm.includes("thread:create")) {
435
487
  // §4.8's matrix. A read-only session gets a sentence about permission,
436
488
  // not about authentication — they ARE signed in.
@@ -559,8 +611,20 @@ notifications = false) {
559
611
  FROM ins WHERE ${commentBody}::text IS NOT NULL
560
612
  RETURNING id, body, created_at
561
613
  ),
614
+ -- The author's row: seen now, and the counters the assignee pool
615
+ -- reads (05 section 3.4, section 6.4b -- "everyone who has
616
+ -- commented" is thread_count > 0 OR comment_count > 0). Until D90
617
+ -- nothing moved thread_count at all, so a client whose only act
618
+ -- was leaving a pin was invisible to the pool. ONE update: two
619
+ -- data-modifying CTEs touching the same row in one statement is
620
+ -- unsupported in Postgres and only one of them lands -- the first
621
+ -- attempt at this was a second CTE, and it lost to this one.
562
622
  touched AS (
563
- UPDATE reviewers SET last_seen_at = now() WHERE id = ${reviewerId}::uuid RETURNING id
623
+ UPDATE reviewers
624
+ SET last_seen_at = now(),
625
+ thread_count = thread_count + 1,
626
+ comment_count = comment_count + ${counted}::int
627
+ WHERE id = ${reviewerId}::uuid RETURNING id
564
628
  )
565
629
  SELECT ins.*, rv.id AS created_by_id, rv.name AS created_by_name, rv.kind AS created_by_kind,
566
630
  COALESCE(
@@ -592,7 +656,7 @@ notifications = false) {
592
656
  * A body-less thread queues nothing. There is no sentence to send, and
593
657
  * "somebody pinned something" is not worth an email.
594
658
  */
595
- if (notifications && commentBody) {
659
+ if (commentBody && (await notifications())) {
596
660
  await queueCommentNotice(tx, {
597
661
  orgId: p.org_id,
598
662
  projectId: p.id,
@@ -605,6 +669,22 @@ notifications = false) {
605
669
  pageUrl: body.context?.url ?? "",
606
670
  }, randomUUID());
607
671
  }
672
+ // D95: a site whose tracker makes an issue on every new thread. Same
673
+ // transaction as the thread, keyed on the thread, so a retried POST
674
+ // cannot make a second issue.
675
+ for (const link of await trackers(p.org_id, p.id)) {
676
+ if (link.createOn !== "thread.created")
677
+ continue;
678
+ await queueIntegrationEvent(tx, {
679
+ orgId: p.org_id,
680
+ projectId: p.id,
681
+ integrationId: link.id,
682
+ threadId,
683
+ provider: link.provider,
684
+ topic: "issue.create",
685
+ version: 0,
686
+ });
687
+ }
608
688
  return row;
609
689
  });
610
690
  c.header("x-snagset-config-version", String(p.config_version));
@@ -640,6 +720,15 @@ notifications = false) {
640
720
  t.created_at, t.updated_at, t.resolved_at, t.comment_count_public,
641
721
  t.route, e.key AS environment_key, rd.number AS round, rd.name AS round_name,
642
722
  r.id AS created_by_id, r.name AS created_by_name, r.kind AS created_by_kind,
723
+ ar.id AS assignee_id, ar.name AS assignee_name, ar.kind AS assignee_kind,
724
+ (ar.user_id IS NOT NULL) AS assignee_is_team,
725
+ COALESCE(
726
+ (SELECT json_agg(json_build_object(
727
+ 'provider', x.provider, 'kind', x.kind, 'externalId', x.external_id, 'url', x.url, 'status', x.status)
728
+ ORDER BY x.synced_at)
729
+ FROM external_refs x
730
+ WHERE x.thread_id = t.id AND x.status <> 'detached'),
731
+ '[]'::json) AS refs,
643
732
  COALESCE(
644
733
  (SELECT json_agg(json_build_object(
645
734
  'id', c2.id, 'body', c2.body, 'createdAt', c2.created_at,
@@ -650,6 +739,7 @@ notifications = false) {
650
739
  '[]'::json) AS comments
651
740
  FROM threads t
652
741
  JOIN reviewers r ON r.id = t.created_by
742
+ LEFT JOIN reviewers ar ON ar.id = t.assignee_id
653
743
  JOIN environments e ON e.id = t.environment_id
654
744
  JOIN rounds rd ON rd.id = t.round_id
655
745
  WHERE t.id = ${threadId}::uuid
@@ -685,6 +775,81 @@ notifications = false) {
685
775
  * `thread:resolve` (§4.8's matrix — it is in the default link grant, because
686
776
  * a client marking their own snag done is the loop D4 is built around).
687
777
  */
778
+ /**
779
+ * 05 §6.4 endpoint 8 — one thread — and D93's brief: the same row as
780
+ * `text/markdown` when the id ends in `.md`, for curl, an agent's shell or
781
+ * a ticket body. The privacy rule is the list's: a private thread is absent
782
+ * for a non-owner, which reads as "no such thread" rather than confirming
783
+ * one exists (§6.4a), and team-only replies stay out of a client's copy.
784
+ */
785
+ app.get("/api/v1/projects/:uid/threads/:id", async (c) => {
786
+ const p = await project(c.req.param("uid"));
787
+ if (!p)
788
+ return fail(c, 404, "project_not_found", "No project with that uid.");
789
+ const owner = c.get("owner");
790
+ const session = c.get("session");
791
+ const mcp = c.get("mcp");
792
+ const asOwner = !!owner && owner.orgId === p.org_id;
793
+ const asAgent = mcpAllows(mcp, p.org_id, "threads:read");
794
+ if (mcp && !asAgent)
795
+ return scopeDenied(c, "threads:read");
796
+ if (!asOwner && !asAgent && !session) {
797
+ return fail(c, 401, "unauthorized", "Open your review link, or reload the page, and try again.");
798
+ }
799
+ const raw = c.req.param("id");
800
+ const wantMarkdown = raw.endsWith(".md");
801
+ const threadRow = rowId(wantMarkdown ? raw.slice(0, -3) : raw, ID_PREFIX.thread);
802
+ if (!threadRow)
803
+ return fail(c, 404, "thread_not_found", "No such thread in this project.");
804
+ const [row] = await inOrg(sql, p.org_id, async (tx) => tx `
805
+ SELECT t.id, t.key, t.status, t.version, t.anchor, t.anchor_state, t.context, t.round_number,
806
+ t.created_at, t.updated_at, t.resolved_at, t.comment_count_public,
807
+ t.route, e.key AS environment_key, rd.number AS round, rd.name AS round_name,
808
+ r.id AS created_by_id, r.name AS created_by_name, r.kind AS created_by_kind,
809
+ ar.id AS assignee_id, ar.name AS assignee_name, ar.kind AS assignee_kind,
810
+ (ar.user_id IS NOT NULL) AS assignee_is_team,
811
+ COALESCE(
812
+ (SELECT json_agg(json_build_object(
813
+ 'provider', x.provider, 'kind', x.kind, 'externalId', x.external_id, 'url', x.url, 'status', x.status)
814
+ ORDER BY x.synced_at)
815
+ FROM external_refs x
816
+ WHERE x.thread_id = t.id AND x.status <> 'detached'),
817
+ '[]'::json) AS refs,
818
+ COALESCE(
819
+ (SELECT json_agg(json_build_object(
820
+ 'id', c2.id, 'body', c2.body, 'createdAt', c2.created_at,
821
+ 'author', json_build_object('id', cr.id, 'name', cr.name, 'kind', cr.kind))
822
+ ORDER BY c2.seq)
823
+ FROM comments c2 JOIN reviewers cr ON cr.id = c2.author_id
824
+ WHERE c2.thread_id = t.id AND c2.deleted_at IS NULL
825
+ ${asOwner ? tx `` : tx `AND c2.private = false`}),
826
+ '[]'::json) AS comments,
827
+ COALESCE(
828
+ (SELECT json_agg(json_build_object(
829
+ 'id', a.id, 'kind', a.kind, 'contentType', a.content_type,
830
+ 'width', a.width, 'height', a.height)
831
+ ORDER BY a.created_at)
832
+ FROM attachments a
833
+ WHERE a.thread_id = t.id AND a.deleted_at IS NULL AND a.state = 'bound'),
834
+ '[]'::json) AS attachments
835
+ FROM threads t
836
+ JOIN reviewers r ON r.id = t.created_by
837
+ LEFT JOIN reviewers ar ON ar.id = t.assignee_id
838
+ JOIN environments e ON e.id = t.environment_id
839
+ JOIN rounds rd ON rd.id = t.round_id
840
+ WHERE t.id = ${threadRow}::uuid
841
+ AND t.project_id = ${p.id}::uuid
842
+ AND t.deleted_at IS NULL
843
+ AND ${asOwner ? tx `true` : tx `t.private = false`}
844
+ `);
845
+ if (!row)
846
+ return fail(c, 404, "thread_not_found", "No such thread in this project.");
847
+ const shaped = shape(row);
848
+ if (!wantMarkdown)
849
+ return c.json(shaped);
850
+ const md = briefMarkdown(shaped, { name: p.name, dashboardOrigin: baseUrl });
851
+ return c.text(md, 200, { "content-type": "text/markdown; charset=utf-8" });
852
+ });
688
853
  app.patch("/api/v1/projects/:uid/threads/:id", async (c) => {
689
854
  const p = await project(c.req.param("uid"));
690
855
  if (!p)
@@ -745,11 +910,46 @@ notifications = false) {
745
910
  field: "private",
746
911
  });
747
912
  }
913
+ /**
914
+ * `assignee` — 05 §6.4b, D90. A reviewer id from the pool, or null to
915
+ * un-assign. Same register as `private`: the studio's own routing of
916
+ * work, so an owner always may, a reviewer session needs the permission
917
+ * that names it, and a refusal is `403 field_not_permitted` with
918
+ * `details.field` rather than a silently dropped field — a client that
919
+ * sends it and gets a 200 will believe the thread moved.
920
+ */
921
+ const hasAssignee = !!body && "assignee" in body;
922
+ let assigneeRow;
923
+ if (hasAssignee) {
924
+ if (body.assignee === null) {
925
+ assigneeRow = null;
926
+ }
927
+ else {
928
+ assigneeRow = rowId(body.assignee, ID_PREFIX.reviewer);
929
+ if (!assigneeRow) {
930
+ return fail(c, 400, "validation_failed", "assignee must be a reviewer id (rev_…) or null.", {
931
+ field: "assignee",
932
+ });
933
+ }
934
+ }
935
+ if (asAgent && !asOwner) {
936
+ // 07 §8.6 mitigation 4 again: an agent proposes, never disposes —
937
+ // and handing a thread to a person is disposing of it.
938
+ return fail(c, 403, "field_not_permitted", "An agent cannot assign a comment to someone.", {
939
+ field: "assignee",
940
+ });
941
+ }
942
+ if (!asOwner && !session?.perm.includes("thread:assign")) {
943
+ return fail(c, 403, "field_not_permitted", "This review link does not allow assigning comments.", {
944
+ field: "assignee",
945
+ });
946
+ }
947
+ }
748
948
  const status = typeof body?.status === "string" ? body.status : undefined;
749
949
  // `private` alone is a valid patch — the status is only required when it is
750
950
  // the thing being changed.
751
- if (status === undefined && wantsPrivate === undefined) {
752
- return fail(c, 400, "validation_failed", "Send status, private, or both.");
951
+ if (status === undefined && wantsPrivate === undefined && !hasAssignee) {
952
+ return fail(c, 400, "validation_failed", "Send status, private, assignee, or any of them.");
753
953
  }
754
954
  if (status !== undefined && !["open", "progress", "review", "resolved"].includes(status)) {
755
955
  return fail(c, 400, "validation_failed", "status must be one of open, progress, review, resolved.");
@@ -807,6 +1007,8 @@ notifications = false) {
807
1007
  // "no such thread" would send a client into a refetch loop for a thread
808
1008
  // that is very much there.
809
1009
  let conflict;
1010
+ // Set by the transaction when the candidate assignee is not in the pool.
1011
+ let badAssignee = false;
810
1012
  const [row] = await inOrg(sql, p.org_id, async (tx) => {
811
1013
  /**
812
1014
  * F-26's check, INSIDE the transaction and holding the row.
@@ -832,6 +1034,23 @@ notifications = false) {
832
1034
  return [];
833
1035
  }
834
1036
  }
1037
+ /**
1038
+ * The candidate must be IN THE POOL — §6.4b's predicate, shared with
1039
+ * the pool route — and in THIS project. Blocked and erased reviewers
1040
+ * keep the assignments they have but take no new ones; a guest who
1041
+ * never wrote is not assignable; a reviewer id from another project is
1042
+ * nobody at all.
1043
+ */
1044
+ if (assigneeRow) {
1045
+ const [ok] = await tx `
1046
+ SELECT r.id FROM reviewers r
1047
+ WHERE r.id = ${assigneeRow}::uuid AND r.project_id = ${p.id}::uuid AND ${inPool(tx)}
1048
+ `;
1049
+ if (!ok) {
1050
+ badAssignee = true;
1051
+ return [];
1052
+ }
1053
+ }
835
1054
  /**
836
1055
  * §6.4 consequence TWO of three, and it runs before the CTE rather than
837
1056
  * inside it.
@@ -869,6 +1088,7 @@ notifications = false) {
869
1088
  ? tx `now()`
870
1089
  : tx `NULL`},
871
1090
  private = ${wantsPrivate === undefined ? tx `private` : tx `${wantsPrivate}`},
1091
+ assignee_id = ${assigneeRow === undefined ? tx `assignee_id` : assigneeRow === null ? tx `NULL` : tx `${assigneeRow}::uuid`},
872
1092
  -- 05 section 6.4, consequence one of three: a private thread has
873
1093
  -- no public replies to count, and a thread made public again
874
1094
  -- counts only the replies that are themselves public.
@@ -890,12 +1110,21 @@ notifications = false) {
890
1110
  -- precisely because this UPDATE does not touch what they read.
891
1111
  RETURNING id, key, status, version, anchor, anchor_state, context, round_number,
892
1112
  created_at, updated_at, resolved_at, comment_count_public,
893
- route, created_by, environment_id
1113
+ route, created_by, environment_id, assignee_id
894
1114
  )
895
1115
  SELECT t.id, t.key, t.status, t.version, t.anchor, t.anchor_state, t.context, t.round_number,
896
1116
  t.created_at, t.updated_at, t.resolved_at, t.comment_count_public,
897
1117
  t.route, e.key AS environment_key,
898
1118
  r.name AS created_by_name, r.kind AS created_by_kind, r.id AS created_by_id,
1119
+ ar.id AS assignee_id, ar.name AS assignee_name, ar.kind AS assignee_kind,
1120
+ (ar.user_id IS NOT NULL) AS assignee_is_team,
1121
+ COALESCE(
1122
+ (SELECT json_agg(json_build_object(
1123
+ 'provider', x.provider, 'kind', x.kind, 'externalId', x.external_id, 'url', x.url, 'status', x.status)
1124
+ ORDER BY x.synced_at)
1125
+ FROM external_refs x
1126
+ WHERE x.thread_id = t.id AND x.status <> 'detached'),
1127
+ '[]'::json) AS refs,
899
1128
  COALESCE(
900
1129
  (SELECT json_agg(json_build_object(
901
1130
  'id', c.id, 'body', c.body, 'createdAt', c.created_at,
@@ -920,6 +1149,7 @@ notifications = false) {
920
1149
  '[]'::json) AS attachments
921
1150
  FROM upd t
922
1151
  JOIN reviewers r ON r.id = t.created_by
1152
+ LEFT JOIN reviewers ar ON ar.id = t.assignee_id
923
1153
  JOIN environments e ON e.id = t.environment_id
924
1154
  `;
925
1155
  /**
@@ -933,7 +1163,7 @@ notifications = false) {
933
1163
  * moves through on its own; mailing on each would train people to filter
934
1164
  * the sender before the one message that matters arrives.
935
1165
  */
936
- if (notifications && status === "resolved" && updated?.[0]) {
1166
+ if (status === "resolved" && updated?.[0] && (await notifications())) {
937
1167
  const t = updated[0];
938
1168
  await queueResolvedNotice(tx, {
939
1169
  orgId: p.org_id,
@@ -951,6 +1181,23 @@ notifications = false) {
951
1181
  pageUrl: String(t["context"]?.["url"] ?? ""),
952
1182
  });
953
1183
  }
1184
+ // D95: our status is canonical, the tracker's follows — queued here, in
1185
+ // the transaction that moved it, keyed on the version so every change
1186
+ // is one row. The worker maps by state type: resolved closes as
1187
+ // completed, anything else reopens; a thread with no issue is skipped.
1188
+ if (status !== undefined && updated?.[0]) {
1189
+ for (const link of await trackers(p.org_id, p.id)) {
1190
+ await queueIntegrationEvent(tx, {
1191
+ orgId: p.org_id,
1192
+ projectId: p.id,
1193
+ integrationId: link.id,
1194
+ threadId: threadRow,
1195
+ provider: link.provider,
1196
+ topic: "issue.state",
1197
+ version: Number(updated[0]["version"] ?? 0),
1198
+ });
1199
+ }
1200
+ }
954
1201
  return updated;
955
1202
  });
956
1203
  /**
@@ -962,6 +1209,11 @@ notifications = false) {
962
1209
  * to compare against, and so a caller that legitimately wants to overwrite
963
1210
  * can re-send with it — which IS "Post anyway", expressed on the wire.
964
1211
  */
1212
+ if (badAssignee) {
1213
+ return fail(c, 400, "validation_failed", "That person cannot be assigned on this site — they are not in its pool.", {
1214
+ field: "assignee",
1215
+ });
1216
+ }
965
1217
  if (conflict !== undefined) {
966
1218
  return fail(c, 409, "version_conflict", "Someone else updated this while you were working on it. Reload to see their change, then try again.", { currentVersion: conflict, sentVersion: expected });
967
1219
  }
@@ -1043,6 +1295,21 @@ function shape(r) {
1043
1295
  name: r.created_by_name,
1044
1296
  kind: r.created_by_kind,
1045
1297
  },
1298
+ // ALWAYS present, null when nobody (05 section 6.4b): the dashboard
1299
+ // merges a PATCH response over its row with a spread, and a key that is
1300
+ // merely absent when un-assigned would leave the old name on the row.
1301
+ // Additive for the widget, which does not read it.
1302
+ assignee: r.assignee_id
1303
+ ? {
1304
+ id: wireId_(r.assignee_id, ID_PREFIX.reviewer),
1305
+ name: r.assignee_name,
1306
+ kind: r.assignee_kind,
1307
+ isTeam: !!r.assignee_is_team,
1308
+ }
1309
+ : null,
1310
+ // D95: where this thread lives elsewhere — the GitHub issue, later the
1311
+ // Linear and Jira ones. Always an array, so a merge can clear it.
1312
+ refs: r.refs ?? [],
1046
1313
  createdAt: new Date(r.created_at).toISOString(),
1047
1314
  updatedAt: new Date(r.updated_at).toISOString(),
1048
1315
  // F-26's handle. On the LIST as well as the detail, because the dashboard
@@ -1 +1 @@
1
- {"version":3,"file":"threads.js","sourceRoot":"","sources":["../../src/routes/threads.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"threads.js","sourceRoot":"","sources":["../../src/routes/threads.ts"],"names":[],"mappings":"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"}
@@ -73,13 +73,46 @@ function boot() {
73
73
  * Workers the next hosting milestone on this same app factory, and an entry
74
74
  * point written to one vendor's helper is one that has to be rewritten for it.
75
75
  */
76
- export default {
77
- fetch(request) {
78
- return boot().app.fetch(request);
79
- },
80
- };
76
+ /**
77
+ * A CONFIGURATION FAILURE SHOULD SAY SO, not crash.
78
+ *
79
+ * `boot()` throws when a required variable is missing, and until 2026-09-01
80
+ * that throw reached the platform — which renders "This Serverless Function
81
+ * has crashed. FUNCTION_INVOCATION_FAILED" and puts the real message in
82
+ * function logs the operator may not know exist. On the deploy we bless, on
83
+ * the very first request, for the most ordinary mistake there is.
84
+ *
85
+ * The bin has had `explain()` for this since it shipped: an unreachable
86
+ * database prints "✗ no Postgres answered at host:port. Start one, or point
87
+ * DATABASE_URL at a database that is running." Serverless had nothing, so the
88
+ * same operator got a sentence on the bin and a shrug on Vercel.
89
+ *
90
+ * NAMES ONLY, never values — this response is public, and the whole point of
91
+ * the variable being missing is that somebody is about to paste a secret into
92
+ * a dashboard. `503` rather than `500`: the instance is not broken, it is not
93
+ * configured, and a proxy should feel free to retry once it is.
94
+ */
95
+ function configFailure(e) {
96
+ const message = e instanceof Error ? e.message : String(e);
97
+ return new Response(`Snagset is deployed but not configured.\n\n${message}\n\n` +
98
+ `Set it in your platform's environment settings and redeploy.\n` +
99
+ `\`snagset env\` lists every variable this build accepts.\n`, { status: 503, headers: { "content-type": "text/plain; charset=utf-8", "cache-control": "no-store" } });
100
+ }
101
+ function serve(request) {
102
+ let app;
103
+ try {
104
+ app = boot().app;
105
+ }
106
+ catch (e) {
107
+ // Nothing is cached on this path, so the NEXT request boots again — set
108
+ // the variable and the instance recovers without a redeploy.
109
+ return configFailure(e);
110
+ }
111
+ return app.fetch(request);
112
+ }
113
+ export default { fetch: serve };
81
114
  /** Named, for platforms whose convention is a bare exported function. */
82
- export const handler = (request) => boot().app.fetch(request);
115
+ export const handler = serve;
83
116
  /**
84
117
  * Release the instance's pool. **Tests only** — a function instance is torn
85
118
  * down by the platform and never calls this.
@@ -1 +1 @@
1
- {"version":3,"file":"serverless.js","sourceRoot":"","sources":["../src/serverless.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,SAAS,EAAY,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE7C;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH;;;;;;;GAOG;AACH,IAAI,MAAM,GAA+D,IAAI,CAAC;AAE9E,SAAS,IAAI;IACX,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAEpC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,yBAAyB,CAAC,EAAE,CAAC;QAC1E,MAAM,IAAI,KAAK,CACb,qFAAqF;YACnF,sFAAsF;YACtF,sFAAsF;YACtF,sFAAsF;YACtF,iCAAiC,CACpC,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,2BAA2B,CAAC,EAAE,CAAC,CAAC;IAEjG,MAAM,GAAG,GAAG,SAAS,CAAC;QACpB,GAAG;QACH,GAAG;QACH,SAAS,EAAE,gBAAgB,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC;QAChD,yEAAyE;QACzE,uEAAuE;QACvE,2EAA2E;QAC3E,gCAAgC;QAChC,KAAK,EAAE,OAAO;QACd,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,OAAO;QAClD,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,IAAI,SAAS;QACzD,SAAS,EAAE,oCAAoC;QAC/C,QAAQ,EAAE,KAAK;KAChB,CAAC,CAAC;IAEH,MAAM,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IACtB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;GAOG;AACH,eAAe;IACb,KAAK,CAAC,OAAgB;QACpB,OAAO,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;CACF,CAAC;AAEF,yEAAyE;AACzE,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,OAAgB,EAAgC,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAErG;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,MAAM,IAAI,GAAG,MAAM,CAAC;IACpB,MAAM,GAAG,IAAI,CAAC;IACd,IAAI,IAAI;QAAE,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;AAC/C,CAAC"}
1
+ {"version":3,"file":"serverless.js","sourceRoot":"","sources":["../src/serverless.ts"],"names":[],"mappings":"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"}