@storyshelf/core 0.7.0 → 0.9.0-next-d2cc082

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 (537) hide show
  1. package/dist/adapter/capture-queue.d.mts +0 -2
  2. package/dist/adapter/capture-runner.d.mts +10 -4
  3. package/dist/adapter/capture-runner.mjs +7 -2
  4. package/dist/adapter/database.d.mts +63 -3
  5. package/dist/adapter/database.mjs +4 -3
  6. package/dist/adapter/database.mjs.map +1 -1
  7. package/dist/adapter/design.d.mts +0 -2
  8. package/dist/adapter/design.mjs +1 -2
  9. package/dist/adapter/email-sender.d.mts +0 -2
  10. package/dist/adapter/metadata.d.mts +0 -2
  11. package/dist/adapter/oauth.d.mts +0 -2
  12. package/dist/adapter/setup.d.mts +0 -2
  13. package/dist/adapter/setup.mjs +1 -2
  14. package/dist/adapter/storage.d.mts +1 -3
  15. package/dist/adapter/webhook-events.d.mts +0 -2
  16. package/dist/adapter/webhook-events.mjs +12 -13
  17. package/dist/adapter/webhook-events.mjs.map +1 -1
  18. package/dist/adapters/capture-target-offers.d.mts +0 -2
  19. package/dist/adapters/capture-target-offers.mjs +1 -2
  20. package/dist/adapters/capture-target.d.mts +0 -2
  21. package/dist/adapters/capture-target.mjs +1 -2
  22. package/dist/adapters/notifier/build-comment.d.mts +0 -2
  23. package/dist/adapters/notifier/build-comment.mjs +1 -2
  24. package/dist/adapters/notifier/build-state.d.mts +0 -2
  25. package/dist/adapters/notifier/build-state.mjs +1 -2
  26. package/dist/adapters/notifier/events.d.mts +0 -2
  27. package/dist/adapters/notifier/events.mjs +1 -2
  28. package/dist/adapters/notifier/format.d.mts +0 -2
  29. package/dist/adapters/notifier/format.mjs +1 -2
  30. package/dist/adapters/notifier/provider.d.mts +0 -2
  31. package/dist/adapters/notifier/provider.mjs +1 -2
  32. package/dist/adapters/notifier/state.d.mts +0 -2
  33. package/dist/adapters/notifier/state.mjs +1 -2
  34. package/dist/adapters/notifier/types.d.mts +0 -2
  35. package/dist/adapters/remote-browser.d.mts +120 -31
  36. package/dist/adapters/remote-browser.mjs +134 -34
  37. package/dist/adapters/remote-browser.mjs.map +1 -1
  38. package/dist/adapters/remote-lease-attempt.mjs +39 -0
  39. package/dist/adapters/remote-lease-attempt.mjs.map +1 -0
  40. package/dist/adapters/remote-lease-error.d.mts +25 -0
  41. package/dist/adapters/remote-lease-error.mjs +54 -0
  42. package/dist/adapters/remote-lease-error.mjs.map +1 -0
  43. package/dist/adapters/remote-lease-held.d.mts +15 -0
  44. package/dist/adapters/remote-lease-held.mjs +86 -0
  45. package/dist/adapters/remote-lease-held.mjs.map +1 -0
  46. package/dist/adapters/remote-lease-shutdown.d.mts +12 -0
  47. package/dist/adapters/remote-lease-shutdown.mjs +32 -0
  48. package/dist/adapters/remote-lease-shutdown.mjs.map +1 -0
  49. package/dist/adapters/remote-lease.d.mts +39 -0
  50. package/dist/adapters/remote-lease.mjs +175 -0
  51. package/dist/adapters/remote-lease.mjs.map +1 -0
  52. package/dist/adapters/remote-limiter.mjs +121 -0
  53. package/dist/adapters/remote-limiter.mjs.map +1 -0
  54. package/dist/adapters/remote-pool.d.mts +56 -0
  55. package/dist/adapters/remote-pool.mjs +195 -0
  56. package/dist/adapters/remote-pool.mjs.map +1 -0
  57. package/dist/adapters/remote-sizing.d.mts +44 -0
  58. package/dist/adapters/remote-sizing.mjs +53 -0
  59. package/dist/adapters/remote-sizing.mjs.map +1 -0
  60. package/dist/adapters/render-runs.d.mts +0 -2
  61. package/dist/adapters/render-runs.mjs +1 -2
  62. package/dist/adapters/setup-runner.d.mts +0 -2
  63. package/dist/adapters/setup-runner.mjs +1 -2
  64. package/dist/adapters/sources.d.mts +0 -2
  65. package/dist/adapters/sources.mjs +1 -2
  66. package/dist/adapters/validate.d.mts +0 -2
  67. package/dist/adapters/validate.mjs +2 -2
  68. package/dist/adapters/validate.mjs.map +1 -1
  69. package/dist/ai.d.mts +0 -2
  70. package/dist/ai.mjs +1 -2
  71. package/dist/auth.d.mts +0 -2
  72. package/dist/auth.mjs +1 -2
  73. package/dist/brand-packs.d.mts +0 -2
  74. package/dist/brand-packs.mjs +0 -1
  75. package/dist/capture/a11y/axe-source.d.mts +0 -2
  76. package/dist/capture/a11y/axe-source.mjs +1 -2
  77. package/dist/capture/a11y/in-page.d.mts +1 -3
  78. package/dist/capture/a11y/in-page.mjs +3 -4
  79. package/dist/capture/a11y/in-page.mjs.map +1 -1
  80. package/dist/capture/a11y/map.d.mts +0 -2
  81. package/dist/capture/a11y/map.mjs +1 -2
  82. package/dist/capture/a11y/options.d.mts +0 -2
  83. package/dist/capture/a11y/options.mjs +1 -2
  84. package/dist/capture/adapter.d.mts +5 -2
  85. package/dist/capture/adapter.mjs +1 -2
  86. package/dist/capture/adapter.mjs.map +1 -1
  87. package/dist/capture/affected.d.mts +0 -2
  88. package/dist/capture/affected.mjs +1 -2
  89. package/dist/capture/attempt-logger.mjs +1 -2
  90. package/dist/capture/browsers.d.mts +0 -2
  91. package/dist/capture/browsers.mjs +1 -2
  92. package/dist/capture/build-state/deliver.d.mts +0 -2
  93. package/dist/capture/build-state/deliver.mjs +1 -2
  94. package/dist/capture/build-state/notify-job.d.mts +0 -2
  95. package/dist/capture/build-state/notify-job.mjs +1 -2
  96. package/dist/capture/build-state/publisher.d.mts +0 -2
  97. package/dist/capture/build-state/publisher.mjs +1 -2
  98. package/dist/capture/build-state/resume.d.mts +0 -2
  99. package/dist/capture/build-state/resume.mjs +1 -2
  100. package/dist/capture/build-state/types.d.mts +1 -3
  101. package/dist/capture/catalog/catalogue.d.mts +0 -2
  102. package/dist/capture/catalog/catalogue.mjs +1 -2
  103. package/dist/capture/catalog/components.d.mts +0 -2
  104. package/dist/capture/catalog/components.mjs +1 -2
  105. package/dist/capture/catalog/history.d.mts +0 -2
  106. package/dist/capture/catalog/history.mjs +1 -2
  107. package/dist/capture/catalog/hook.d.mts +0 -2
  108. package/dist/capture/catalog/hook.mjs +1 -2
  109. package/dist/capture/catalog/index.d.mts +2 -2
  110. package/dist/capture/catalog/load.d.mts +0 -2
  111. package/dist/capture/catalog/load.mjs +1 -2
  112. package/dist/capture/catalog/parse.d.mts +0 -2
  113. package/dist/capture/catalog/parse.mjs +1 -2
  114. package/dist/capture/catalog/read.d.mts +6 -3
  115. package/dist/capture/catalog/read.mjs +14 -8
  116. package/dist/capture/catalog/read.mjs.map +1 -1
  117. package/dist/capture/catalog/types.d.mts +0 -2
  118. package/dist/capture/comparison-reference.d.mts +27 -0
  119. package/dist/capture/comparison-reference.mjs +75 -0
  120. package/dist/capture/comparison-reference.mjs.map +1 -0
  121. package/dist/capture/consumer/capture-handler.d.mts +1 -3
  122. package/dist/capture/consumer/capture-handler.mjs +1 -2
  123. package/dist/capture/consumer/idle.d.mts +0 -2
  124. package/dist/capture/consumer/idle.mjs +1 -2
  125. package/dist/capture/consumer/index.d.mts +0 -2
  126. package/dist/capture/consumer/index.mjs +1 -2
  127. package/dist/capture/consumer/loop.mjs +1 -2
  128. package/dist/capture/consumer/metrics.d.mts +0 -2
  129. package/dist/capture/consumer/metrics.mjs +1 -2
  130. package/dist/capture/consumer/retry.d.mts +0 -2
  131. package/dist/capture/consumer/retry.mjs +1 -2
  132. package/dist/capture/consumer/run-job.mjs +1 -2
  133. package/dist/capture/consumer/startup.mjs +1 -2
  134. package/dist/capture/consumer/types.d.mts +0 -2
  135. package/dist/capture/crash-failure.d.mts +0 -2
  136. package/dist/capture/crash-failure.mjs +1 -2
  137. package/dist/capture/db-queue/cadence.d.mts +0 -2
  138. package/dist/capture/db-queue/cadence.mjs +1 -2
  139. package/dist/capture/db-queue/claim.d.mts +0 -2
  140. package/dist/capture/db-queue/claim.mjs +20 -4
  141. package/dist/capture/db-queue/claim.mjs.map +1 -1
  142. package/dist/capture/db-queue/clock.mjs +1 -2
  143. package/dist/capture/db-queue/codec.mjs +1 -2
  144. package/dist/capture/db-queue/index.d.mts +0 -2
  145. package/dist/capture/db-queue/index.mjs +3 -3
  146. package/dist/capture/db-queue/index.mjs.map +1 -1
  147. package/dist/capture/db-queue/keeper.d.mts +0 -2
  148. package/dist/capture/db-queue/keeper.mjs +1 -2
  149. package/dist/capture/db-queue/lease.mjs +1 -2
  150. package/dist/capture/db-queue/lifecycle.mjs +1 -2
  151. package/dist/capture/db-queue/operations.mjs +1 -2
  152. package/dist/capture/db-queue/poll-loop.d.mts +0 -2
  153. package/dist/capture/db-queue/poll-loop.mjs +1 -2
  154. package/dist/capture/db-queue/poll.d.mts +0 -2
  155. package/dist/capture/db-queue/poll.mjs +1 -2
  156. package/dist/capture/db-queue/timers.d.mts +0 -2
  157. package/dist/capture/db-queue/timers.mjs +1 -2
  158. package/dist/capture/db-queue/types.d.mts +0 -2
  159. package/dist/capture/db-queue/types.mjs +1 -2
  160. package/dist/capture/db-queue/types.mjs.map +1 -1
  161. package/dist/capture/db-queue/wake.mjs +1 -2
  162. package/dist/capture/design.mjs +1 -2
  163. package/dist/capture/diff-record.mjs +1 -2
  164. package/dist/capture/dispatch.d.mts +1 -3
  165. package/dist/capture/dispatch.mjs +17 -5
  166. package/dist/capture/dispatch.mjs.map +1 -1
  167. package/dist/capture/enrich.mjs +1 -2
  168. package/dist/capture/failure-sets.mjs +1 -2
  169. package/dist/capture/fingerprint.d.mts +19 -8
  170. package/dist/capture/fingerprint.mjs +43 -14
  171. package/dist/capture/fingerprint.mjs.map +1 -1
  172. package/dist/capture/forked/channel.d.mts +0 -2
  173. package/dist/capture/forked/child.d.mts +0 -2
  174. package/dist/capture/forked/child.mjs +1 -2
  175. package/dist/capture/forked/crash-tracker.mjs +1 -2
  176. package/dist/capture/forked/decision.d.mts +0 -2
  177. package/dist/capture/forked/decision.mjs +1 -2
  178. package/dist/capture/forked/exit.mjs +1 -2
  179. package/dist/capture/forked/fork.d.mts +0 -2
  180. package/dist/capture/forked/fork.mjs +1 -2
  181. package/dist/capture/forked/forked-capture.d.mts +0 -2
  182. package/dist/capture/forked/forked-capture.mjs +1 -2
  183. package/dist/capture/forked/lease-book.mjs +1 -2
  184. package/dist/capture/forked/protocol.d.mts +0 -2
  185. package/dist/capture/forked/protocol.mjs +1 -2
  186. package/dist/capture/forked/runs.mjs +1 -2
  187. package/dist/capture/guards.mjs +1 -2
  188. package/dist/capture/ignore-regions.d.mts +36 -0
  189. package/dist/capture/ignore-regions.mjs +65 -0
  190. package/dist/capture/ignore-regions.mjs.map +1 -0
  191. package/dist/capture/isolate.mjs +1 -2
  192. package/dist/capture/job-lease.d.mts +0 -2
  193. package/dist/capture/job-lease.mjs +1 -2
  194. package/dist/capture/matrix.mjs +4 -4
  195. package/dist/capture/matrix.mjs.map +1 -1
  196. package/dist/capture/modes.d.mts +0 -2
  197. package/dist/capture/modes.mjs +2 -3
  198. package/dist/capture/modes.mjs.map +1 -1
  199. package/dist/capture/orchestrator.d.mts +0 -2
  200. package/dist/capture/orchestrator.mjs +2 -3
  201. package/dist/capture/pipeline.d.mts +0 -2
  202. package/dist/capture/pipeline.mjs +44 -10
  203. package/dist/capture/pipeline.mjs.map +1 -1
  204. package/dist/capture/progress.d.mts +0 -2
  205. package/dist/capture/progress.mjs +1 -2
  206. package/dist/capture/publish/accept.d.mts +0 -2
  207. package/dist/capture/publish/accept.mjs +1 -2
  208. package/dist/capture/publish/complete.d.mts +1 -3
  209. package/dist/capture/publish/complete.mjs +1 -2
  210. package/dist/capture/publish/extract.d.mts +0 -2
  211. package/dist/capture/publish/extract.mjs +6 -5
  212. package/dist/capture/publish/extract.mjs.map +1 -1
  213. package/dist/capture/publish/handler.d.mts +1 -3
  214. package/dist/capture/publish/handler.mjs +1 -2
  215. package/dist/capture/publish/index.d.mts +2 -1
  216. package/dist/capture/publish/invalid-zip.d.mts +8 -0
  217. package/dist/capture/publish/invalid-zip.mjs +11 -0
  218. package/dist/capture/publish/invalid-zip.mjs.map +1 -0
  219. package/dist/capture/publish/limits.d.mts +0 -2
  220. package/dist/capture/publish/limits.mjs +1 -2
  221. package/dist/capture/publish/published.d.mts +0 -2
  222. package/dist/capture/publish/published.mjs +1 -2
  223. package/dist/capture/publish/run.d.mts +1 -3
  224. package/dist/capture/publish/run.mjs +1 -2
  225. package/dist/capture/rediff.d.mts +1 -3
  226. package/dist/capture/rediff.mjs +19 -6
  227. package/dist/capture/rediff.mjs.map +1 -1
  228. package/dist/capture/render.mjs +1 -2
  229. package/dist/capture/render.mjs.map +1 -1
  230. package/dist/capture/scratch.d.mts +0 -2
  231. package/dist/capture/scratch.mjs +2 -4
  232. package/dist/capture/scratch.mjs.map +1 -1
  233. package/dist/capture/shard-plan.mjs +1 -2
  234. package/dist/capture/shards/context.mjs +3 -3
  235. package/dist/capture/shards/context.mjs.map +1 -1
  236. package/dist/capture/shards/execute.mjs +4 -3
  237. package/dist/capture/shards/execute.mjs.map +1 -1
  238. package/dist/capture/shards/fan-out.mjs +1 -2
  239. package/dist/capture/shards/history.mjs +1 -2
  240. package/dist/capture/shards/reduce.mjs +1 -2
  241. package/dist/capture/sizing.d.mts +0 -2
  242. package/dist/capture/sizing.mjs +1 -2
  243. package/dist/capture/skip-checks.mjs +1 -2
  244. package/dist/capture/statics.d.mts +0 -2
  245. package/dist/capture/statics.mjs +2 -4
  246. package/dist/capture/statics.mjs.map +1 -1
  247. package/dist/capture/storybook-urls.d.mts +0 -2
  248. package/dist/capture/storybook-urls.mjs +3 -3
  249. package/dist/capture/storybook-urls.mjs.map +1 -1
  250. package/dist/capture/storybook.d.mts +0 -2
  251. package/dist/capture/storybook.mjs +8 -4
  252. package/dist/capture/storybook.mjs.map +1 -1
  253. package/dist/capture/target.mjs +1 -2
  254. package/dist/capture/targets.d.mts +0 -2
  255. package/dist/capture/targets.mjs +1 -2
  256. package/dist/capture/tests.d.mts +0 -2
  257. package/dist/capture/tests.mjs +13 -3
  258. package/dist/capture/tests.mjs.map +1 -1
  259. package/dist/capture/token-chunks.mjs +24 -7
  260. package/dist/capture/token-chunks.mjs.map +1 -1
  261. package/dist/capture.d.mts +5 -2
  262. package/dist/capture.mjs +5 -2
  263. package/dist/config.d.mts +16 -3
  264. package/dist/config.mjs +6 -3
  265. package/dist/config.mjs.map +1 -1
  266. package/dist/diff.d.mts +0 -2
  267. package/dist/diff.mjs +1 -2
  268. package/dist/index.d.mts +2 -2
  269. package/dist/index.mjs +2 -2
  270. package/dist/insights/budget.d.mts +0 -2
  271. package/dist/insights/budget.mjs +1 -2
  272. package/dist/insights/envelope.d.mts +0 -2
  273. package/dist/insights/envelope.mjs +1 -2
  274. package/dist/insights/evidence-health.d.mts +0 -2
  275. package/dist/insights/evidence-health.mjs +1 -2
  276. package/dist/insights/evidence.d.mts +0 -2
  277. package/dist/insights/evidence.mjs +1 -2
  278. package/dist/insights/hash.d.mts +0 -2
  279. package/dist/insights/hash.mjs +1 -2
  280. package/dist/insights/limits.d.mts +0 -2
  281. package/dist/insights/limits.mjs +1 -2
  282. package/dist/insights/prompts/v1.d.mts +0 -2
  283. package/dist/insights/prompts/v1.mjs +1 -2
  284. package/dist/insights/redact.d.mts +0 -2
  285. package/dist/insights/redact.mjs +1 -2
  286. package/dist/insights/text.mjs +1 -2
  287. package/dist/logger.d.mts +0 -2
  288. package/dist/logger.mjs +1 -2
  289. package/dist/models/ai-budget-alert.d.mts +0 -2
  290. package/dist/models/ai-budget-alert.mjs +1 -2
  291. package/dist/models/ai-usage.d.mts +0 -2
  292. package/dist/models/ai-usage.mjs +1 -2
  293. package/dist/models/baseline-approval.d.mts +18 -0
  294. package/dist/models/baseline-approval.mjs +41 -0
  295. package/dist/models/baseline-approval.mjs.map +1 -0
  296. package/dist/models/baseline-archive.d.mts +0 -2
  297. package/dist/models/baseline-archive.mjs +1 -2
  298. package/dist/models/baseline-atomic.mjs +66 -0
  299. package/dist/models/baseline-atomic.mjs.map +1 -0
  300. package/dist/models/baseline-conflict.d.mts +6 -0
  301. package/dist/models/baseline-conflict.mjs +9 -0
  302. package/dist/models/baseline-conflict.mjs.map +1 -0
  303. package/dist/models/baseline-export.d.mts +0 -2
  304. package/dist/models/baseline-export.mjs +1 -2
  305. package/dist/models/baseline-import.mjs +1 -2
  306. package/dist/models/baseline-origin.d.mts +16 -0
  307. package/dist/models/baseline-origin.mjs +35 -0
  308. package/dist/models/baseline-origin.mjs.map +1 -0
  309. package/dist/models/baseline-status.d.mts +0 -2
  310. package/dist/models/baseline-status.mjs +1 -2
  311. package/dist/models/baseline-transfer.d.mts +1 -2
  312. package/dist/models/baseline-transfer.mjs +30 -2
  313. package/dist/models/baseline-transfer.mjs.map +1 -1
  314. package/dist/models/baseline.d.mts +5 -2
  315. package/dist/models/baseline.mjs +91 -12
  316. package/dist/models/baseline.mjs.map +1 -1
  317. package/dist/models/build-component.d.mts +0 -2
  318. package/dist/models/build-component.mjs +1 -2
  319. package/dist/models/build-review-status.d.mts +0 -2
  320. package/dist/models/build-review-status.mjs +1 -2
  321. package/dist/models/build-review.d.mts +0 -2
  322. package/dist/models/build-review.mjs +1 -2
  323. package/dist/models/build.d.mts +1 -3
  324. package/dist/models/build.mjs +14 -15
  325. package/dist/models/build.mjs.map +1 -1
  326. package/dist/models/capture-attempt.d.mts +0 -2
  327. package/dist/models/capture-attempt.mjs +1 -2
  328. package/dist/models/capture-job.d.mts +0 -2
  329. package/dist/models/capture-job.mjs +1 -2
  330. package/dist/models/capture-log.d.mts +0 -2
  331. package/dist/models/capture-log.mjs +1 -2
  332. package/dist/models/capture-shard.d.mts +0 -2
  333. package/dist/models/capture-shard.mjs +1 -2
  334. package/dist/models/changeset.d.mts +0 -2
  335. package/dist/models/changeset.mjs +1 -2
  336. package/dist/models/columns.mjs +1 -2
  337. package/dist/models/comment.d.mts +0 -2
  338. package/dist/models/comment.mjs +1 -2
  339. package/dist/models/component.d.mts +0 -2
  340. package/dist/models/component.mjs +1 -2
  341. package/dist/models/connections.d.mts +0 -2
  342. package/dist/models/connections.mjs +1 -2
  343. package/dist/models/content-ref.d.mts +0 -2
  344. package/dist/models/content-ref.mjs +1 -2
  345. package/dist/models/credentials.d.mts +0 -2
  346. package/dist/models/credentials.mjs +1 -2
  347. package/dist/models/design-credentials.d.mts +0 -2
  348. package/dist/models/design-credentials.mjs +1 -2
  349. package/dist/models/design-health.d.mts +16 -3
  350. package/dist/models/design-health.mjs +21 -3
  351. package/dist/models/design-health.mjs.map +1 -1
  352. package/dist/models/design-nodes.d.mts +11 -4
  353. package/dist/models/design-nodes.mjs +18 -3
  354. package/dist/models/design-nodes.mjs.map +1 -1
  355. package/dist/models/design-renders.mjs +1 -2
  356. package/dist/models/design-resolve.d.mts +0 -2
  357. package/dist/models/design-resolve.mjs +1 -2
  358. package/dist/models/design.d.mts +0 -2
  359. package/dist/models/design.mjs +1 -2
  360. package/dist/models/inherited-ratio.d.mts +0 -2
  361. package/dist/models/inherited-ratio.mjs +1 -2
  362. package/dist/models/insight.d.mts +0 -2
  363. package/dist/models/insight.mjs +1 -2
  364. package/dist/models/label.d.mts +0 -2
  365. package/dist/models/label.mjs +1 -2
  366. package/dist/models/member.d.mts +0 -2
  367. package/dist/models/member.mjs +1 -2
  368. package/dist/models/notification-channel.d.mts +0 -2
  369. package/dist/models/notification-channel.mjs +1 -2
  370. package/dist/models/notification-subscription.d.mts +0 -2
  371. package/dist/models/notification-subscription.mjs +1 -2
  372. package/dist/models/project-group-mapping.d.mts +0 -2
  373. package/dist/models/project-group-mapping.mjs +1 -2
  374. package/dist/models/project.d.mts +0 -2
  375. package/dist/models/project.mjs +1 -2
  376. package/dist/models/public-origin.d.mts +0 -2
  377. package/dist/models/public-origin.mjs +1 -2
  378. package/dist/models/review-switch-off.d.mts +0 -2
  379. package/dist/models/review-switch-off.mjs +1 -2
  380. package/dist/models/site-settings.d.mts +0 -2
  381. package/dist/models/site-settings.mjs +1 -2
  382. package/dist/models/snapshot.d.mts +3 -2
  383. package/dist/models/snapshot.mjs +4 -2
  384. package/dist/models/snapshot.mjs.map +1 -1
  385. package/dist/models/token.d.mts +0 -2
  386. package/dist/models/token.mjs +1 -2
  387. package/dist/models/usage.d.mts +0 -2
  388. package/dist/models/usage.mjs +1 -2
  389. package/dist/models/user.d.mts +0 -2
  390. package/dist/models/user.mjs +1 -2
  391. package/dist/models/webhook.d.mts +0 -2
  392. package/dist/models/webhook.mjs +1 -2
  393. package/dist/models.d.mts +6 -3
  394. package/dist/models.mjs +6 -3
  395. package/dist/options.d.mts +0 -2
  396. package/dist/options.mjs +2 -4
  397. package/dist/options.mjs.map +1 -1
  398. package/dist/paths.d.mts +3 -3
  399. package/dist/paths.mjs +7 -3
  400. package/dist/paths.mjs.map +1 -1
  401. package/dist/retention/ai.d.mts +1 -3
  402. package/dist/retention/ai.mjs +0 -1
  403. package/dist/retention/pending.mjs +1 -2
  404. package/dist/retention/published-gzip-sweep.mjs +28 -0
  405. package/dist/retention/published-gzip-sweep.mjs.map +1 -0
  406. package/dist/retention/screenshot-sweep.d.mts +0 -2
  407. package/dist/retention/screenshot-sweep.mjs +1 -2
  408. package/dist/retention.d.mts +0 -2
  409. package/dist/retention.mjs +5 -2
  410. package/dist/retention.mjs.map +1 -1
  411. package/dist/schema/baseline.d.mts +2 -2
  412. package/dist/schema/build-component.d.mts +0 -2
  413. package/dist/schema/build-review.d.mts +0 -2
  414. package/dist/schema/build.d.mts +0 -2
  415. package/dist/schema/capture-attempt.d.mts +0 -2
  416. package/dist/schema/capture-job.d.mts +0 -2
  417. package/dist/schema/capture-shard.d.mts +0 -2
  418. package/dist/schema/comment.d.mts +0 -2
  419. package/dist/schema/connection.d.mts +0 -2
  420. package/dist/schema/content-ref.d.mts +0 -2
  421. package/dist/schema/design.d.mts +2 -2
  422. package/dist/schema/insight.d.mts +0 -2
  423. package/dist/schema/label.d.mts +0 -2
  424. package/dist/schema/member.d.mts +0 -2
  425. package/dist/schema/notification.d.mts +0 -2
  426. package/dist/schema/project-group-mapping.d.mts +0 -2
  427. package/dist/schema/project.d.mts +0 -2
  428. package/dist/schema/site-setting.d.mts +0 -2
  429. package/dist/schema/snapshot.d.mts +5 -2
  430. package/dist/schema/token.d.mts +0 -2
  431. package/dist/schema/usage.d.mts +0 -2
  432. package/dist/schema/user.d.mts +0 -2
  433. package/dist/schema/webhook.d.mts +0 -2
  434. package/dist/schema.d.mts +4 -6
  435. package/dist/serverless.d.mts +0 -2
  436. package/dist/serverless.mjs +1 -2
  437. package/dist/test-helpers/build-reference-contract.d.mts +14 -0
  438. package/dist/test-helpers/build-reference-contract.mjs +66 -0
  439. package/dist/test-helpers/build-reference-contract.mjs.map +1 -0
  440. package/dist/test-helpers/create-project.d.mts +0 -2
  441. package/dist/test-helpers/create-project.mjs +1 -2
  442. package/dist/test-helpers/database-contract.d.mts +0 -2
  443. package/dist/test-helpers/database-contract.mjs +37 -2
  444. package/dist/test-helpers/database-contract.mjs.map +1 -1
  445. package/dist/test-helpers/deferred.d.mts +0 -2
  446. package/dist/test-helpers/deferred.mjs +1 -2
  447. package/dist/test-helpers/design-contract.d.mts +0 -2
  448. package/dist/test-helpers/design-contract.mjs +1 -2
  449. package/dist/test-helpers/fake-adapters.d.mts +0 -2
  450. package/dist/test-helpers/fake-adapters.mjs +1 -2
  451. package/dist/test-helpers/fake-database.d.mts +0 -2
  452. package/dist/test-helpers/fake-database.mjs +7 -2
  453. package/dist/test-helpers/fake-database.mjs.map +1 -1
  454. package/dist/test-helpers/fake-design.d.mts +0 -2
  455. package/dist/test-helpers/fake-design.mjs +1 -2
  456. package/dist/test-helpers/fake-notifier.d.mts +0 -2
  457. package/dist/test-helpers/fake-notifier.mjs +1 -2
  458. package/dist/test-helpers/fake-storage.d.mts +0 -2
  459. package/dist/test-helpers/fake-storage.mjs +1 -2
  460. package/dist/test-helpers/fake-tables.mjs +6 -2
  461. package/dist/test-helpers/fake-tables.mjs.map +1 -1
  462. package/dist/test-helpers/manual-clock.d.mts +0 -2
  463. package/dist/test-helpers/manual-clock.mjs +1 -2
  464. package/dist/test-helpers/notifier-contract.d.mts +0 -2
  465. package/dist/test-helpers/notifier-contract.mjs +1 -2
  466. package/dist/test-helpers/queue-contract.d.mts +0 -2
  467. package/dist/test-helpers/queue-contract.mjs +1 -2
  468. package/dist/test-helpers/queue-multi-instance.d.mts +0 -2
  469. package/dist/test-helpers/queue-multi-instance.mjs +1 -2
  470. package/dist/test-helpers/runner-contract.d.mts +0 -2
  471. package/dist/test-helpers/runner-contract.mjs +1 -2
  472. package/dist/test-helpers/sql-chunks.mjs +2 -2
  473. package/dist/test-helpers/sql-chunks.mjs.map +1 -1
  474. package/dist/test-helpers/storage-contract.d.mts +0 -2
  475. package/dist/test-helpers/storage-contract.mjs +1 -2
  476. package/dist/test-helpers.d.mts +2 -1
  477. package/dist/test-helpers.mjs +2 -1
  478. package/dist/tracing.mjs +36 -6
  479. package/dist/tracing.mjs.map +1 -1
  480. package/dist/types.d.mts +0 -2
  481. package/dist/types.mjs +1 -2
  482. package/dist/urls.d.mts +0 -2
  483. package/dist/urls.mjs +1 -2
  484. package/dist/utils/adaptive-concurrency.d.mts +0 -2
  485. package/dist/utils/adaptive-concurrency.mjs +1 -2
  486. package/dist/utils/connect-retry.d.mts +2 -2
  487. package/dist/utils/connect-retry.mjs +2 -3
  488. package/dist/utils/connect-retry.mjs.map +1 -1
  489. package/dist/utils/encrypt.d.mts +0 -2
  490. package/dist/utils/encrypt.mjs +1 -2
  491. package/dist/utils/environment.d.mts +0 -2
  492. package/dist/utils/environment.mjs +1 -2
  493. package/dist/utils/hash.d.mts +0 -2
  494. package/dist/utils/hash.mjs +1 -2
  495. package/dist/utils/http.d.mts +13 -3
  496. package/dist/utils/http.mjs +79 -17
  497. package/dist/utils/http.mjs.map +1 -1
  498. package/dist/utils/map-adaptive.d.mts +0 -2
  499. package/dist/utils/map-adaptive.mjs +1 -2
  500. package/dist/utils/map-limit.d.mts +0 -2
  501. package/dist/utils/map-limit.mjs +1 -2
  502. package/dist/utils/mime.d.mts +0 -2
  503. package/dist/utils/mime.mjs +1 -2
  504. package/dist/utils/page-limiter.d.mts +0 -2
  505. package/dist/utils/page-limiter.mjs +1 -2
  506. package/dist/utils/path-security.d.mts +0 -2
  507. package/dist/utils/path-security.mjs +2 -4
  508. package/dist/utils/path-security.mjs.map +1 -1
  509. package/dist/utils/public-origin.d.mts +0 -2
  510. package/dist/utils/public-origin.mjs +1 -2
  511. package/dist/utils/redact.d.mts +0 -2
  512. package/dist/utils/redact.mjs +1 -2
  513. package/dist/utils/remote-environment.d.mts +40 -3
  514. package/dist/utils/remote-environment.mjs +52 -3
  515. package/dist/utils/remote-environment.mjs.map +1 -1
  516. package/dist/utils/resources.d.mts +0 -2
  517. package/dist/utils/resources.mjs +1 -2
  518. package/dist/utils/screenshot-store.d.mts +0 -2
  519. package/dist/utils/screenshot-store.mjs +1 -2
  520. package/dist/utils/session-gate.d.mts +7 -6
  521. package/dist/utils/session-gate.mjs +28 -12
  522. package/dist/utils/session-gate.mjs.map +1 -1
  523. package/dist/utils/storybook-token.d.mts +11 -3
  524. package/dist/utils/storybook-token.mjs +10 -9
  525. package/dist/utils/storybook-token.mjs.map +1 -1
  526. package/dist/utils/storybook-url.d.mts +0 -2
  527. package/dist/utils/storybook-url.mjs +1 -2
  528. package/dist/utils/timing.d.mts +0 -2
  529. package/dist/utils/timing.mjs +1 -2
  530. package/dist/utils/ulid.d.mts +0 -2
  531. package/dist/utils/ulid.mjs +1 -2
  532. package/dist/utils/zip-read.mjs +1 -2
  533. package/dist/utils/zip-write.d.mts +0 -2
  534. package/dist/utils/zip-write.mjs +1 -2
  535. package/dist/utils.d.mts +5 -5
  536. package/dist/utils.mjs +5 -5
  537. package/package.json +6 -15
@@ -3,7 +3,6 @@ import __tsdown_shims_url from 'node:url';
3
3
  import { DatabaseAdapter } from "../adapter/database.mjs";
4
4
  import { InsightKind, InsightRow } from "../schema/insight.mjs";
5
5
  import { Table } from "drizzle-orm";
6
- //#region src/models/insight.d.ts
7
6
  /** Tables required by {@link InsightModel}. */
8
7
  interface InsightTables {
9
8
  insights: Table;
@@ -65,6 +64,5 @@ declare class InsightModel {
65
64
  private restartIfNeeded;
66
65
  private col;
67
66
  }
68
- //#endregion
69
67
  export { InsightModel, InsightResultInput, InsightStartInput, InsightStartResult, InsightTables };
70
68
  //# sourceMappingURL=insight.d.mts.map
@@ -4,7 +4,7 @@ import.meta.url;
4
4
  import { ulid } from "../utils/ulid.mjs";
5
5
  import { col } from "./columns.mjs";
6
6
  import { and, asc, desc, eq, inArray, isNull, lt } from "drizzle-orm";
7
- //#region src/models/insight.ts
7
+ // src/models/insight.ts
8
8
  /** Insight rows: pending/running/done/failed runs with dedupe by unique key. */
9
9
  /** Data operations for insights. */
10
10
  var InsightModel = class {
@@ -156,7 +156,6 @@ function pick(input) {
156
156
  promptVersion: input.promptVersion
157
157
  };
158
158
  }
159
- //#endregion
160
159
  export { InsightModel };
161
160
 
162
161
  //# sourceMappingURL=insight.mjs.map
@@ -3,7 +3,6 @@ import __tsdown_shims_url from 'node:url';
3
3
  import { DatabaseAdapter } from "../adapter/database.mjs";
4
4
  import { BuildLabel, LabelType } from "../schema/label.mjs";
5
5
  import { Table } from "drizzle-orm";
6
- //#region src/models/label.d.ts
7
6
  /** Tables required by {@link LabelModel}. */
8
7
  interface LabelTables {
9
8
  builds: Table;
@@ -55,6 +54,5 @@ declare class LabelModel {
55
54
  /** Ids of the project's builds marked persistent (exempt from retention). */
56
55
  persistentBuildIds(projectId: string): Promise<Set<string>>;
57
56
  }
58
- //#endregion
59
57
  export { LabelModel, LabelTables };
60
58
  //# sourceMappingURL=label.d.mts.map
@@ -5,7 +5,7 @@ import { PERSISTENT_LABEL_KEY, RESERVED_LABEL_KEYS, SEEDED_LABEL_KEYS } from "..
5
5
  import { ulid } from "../utils/ulid.mjs";
6
6
  import { col } from "./columns.mjs";
7
7
  import { and, desc, eq, inArray } from "drizzle-orm";
8
- //#region src/models/label.ts
8
+ // src/models/label.ts
9
9
  /** Build labels and project label types. */
10
10
  /** Data operations for label types and build labels. */
11
11
  var LabelModel = class {
@@ -134,7 +134,6 @@ const SEEDED_LINK_TEMPLATES = {
134
134
  pr: "https://github.com/{repo}/pull/{value}",
135
135
  mr: "https://gitlab.com/{repo}/-/merge_requests/{value}"
136
136
  };
137
- //#endregion
138
137
  export { LabelModel };
139
138
 
140
139
  //# sourceMappingURL=label.mjs.map
@@ -4,7 +4,6 @@ import { DatabaseAdapter } from "../adapter/database.mjs";
4
4
  import { ProjectRole, SiteRole } from "../types.mjs";
5
5
  import { ProjectMember } from "../schema/member.mjs";
6
6
  import { Table } from "drizzle-orm";
7
- //#region src/models/member.d.ts
8
7
  /** Tables required by {@link MemberModel}. */
9
8
  interface MemberTables {
10
9
  projectMembers: Table;
@@ -29,6 +28,5 @@ declare class MemberModel {
29
28
  /** Resolve a user's effective project role, honoring site-wide admins. */
30
29
  effectiveRole(siteRole: SiteRole, projectId: string, userId: string): Promise<ProjectRole | null>;
31
30
  }
32
- //#endregion
33
31
  export { MemberModel, MemberTables };
34
32
  //# sourceMappingURL=member.d.mts.map
@@ -4,7 +4,7 @@ import.meta.url;
4
4
  import { ulid } from "../utils/ulid.mjs";
5
5
  import { col } from "./columns.mjs";
6
6
  import { and, eq } from "drizzle-orm";
7
- //#region src/models/member.ts
7
+ // src/models/member.ts
8
8
  /** Project membership and role resolution. */
9
9
  /** Data operations for project membership and roles. */
10
10
  var MemberModel = class {
@@ -59,7 +59,6 @@ var MemberModel = class {
59
59
  return null;
60
60
  }
61
61
  };
62
- //#endregion
63
62
  export { MemberModel };
64
63
 
65
64
  //# sourceMappingURL=member.mjs.map
@@ -6,7 +6,6 @@ import { NotifierProvider } from "../adapters/notifier/provider.mjs";
6
6
  import { SecretInput } from "../utils/encrypt.mjs";
7
7
  import { NotificationChannelRow } from "../schema/notification.mjs";
8
8
  import { Table } from "drizzle-orm";
9
- //#region src/models/notification-channel.d.ts
10
9
  /** Tables required by {@link NotificationChannelModel}. */
11
10
  interface NotificationChannelTables {
12
11
  notificationChannels: Table;
@@ -81,6 +80,5 @@ declare class NotificationChannelModel {
81
80
  /** Decode the JSON-serialized config of a channel. */
82
81
  static configOf(row: NotificationChannelRow): Record<string, unknown>;
83
82
  }
84
- //#endregion
85
83
  export { ChannelValidation, NotificationChannelCreateInput, NotificationChannelModel, NotificationChannelTables };
86
84
  //# sourceMappingURL=notification-channel.d.mts.map
@@ -6,7 +6,7 @@ import { ulid } from "../utils/ulid.mjs";
6
6
  import { col } from "./columns.mjs";
7
7
  import { isStateProvider } from "../adapters/notifier/provider.mjs";
8
8
  import { eq, isNull } from "drizzle-orm";
9
- //#region src/models/notification-channel.ts
9
+ // src/models/notification-channel.ts
10
10
  /** Project and site-wide notification channel subscriptions. */
11
11
  /** Data operations for notification channels. */
12
12
  var NotificationChannelModel = class NotificationChannelModel {
@@ -166,7 +166,6 @@ function decodeEvents(raw) {
166
166
  return [];
167
167
  }
168
168
  }
169
- //#endregion
170
169
  export { NotificationChannelModel };
171
170
 
172
171
  //# sourceMappingURL=notification-channel.mjs.map
@@ -3,7 +3,6 @@ import __tsdown_shims_url from 'node:url';
3
3
  import { DatabaseAdapter } from "../adapter/database.mjs";
4
4
  import { NotificationSubscriptionRow } from "../schema/notification.mjs";
5
5
  import { Table } from "drizzle-orm";
6
- //#region src/models/notification-subscription.d.ts
7
6
  /** Tables required by {@link NotificationSubscriptionModel}. */
8
7
  interface NotificationSubscriptionTables {
9
8
  notificationSubscriptions: Table;
@@ -38,6 +37,5 @@ declare class NotificationSubscriptionModel {
38
37
  /** Decode the JSON-serialized channel list of a subscription. */
39
38
  static viaOf(row: NotificationSubscriptionRow): string[];
40
39
  }
41
- //#endregion
42
40
  export { NotificationSubscriptionInput, NotificationSubscriptionModel, NotificationSubscriptionTables };
43
41
  //# sourceMappingURL=notification-subscription.d.mts.map
@@ -4,7 +4,7 @@ import.meta.url;
4
4
  import { ulid } from "../utils/ulid.mjs";
5
5
  import { col } from "./columns.mjs";
6
6
  import { and, eq } from "drizzle-orm";
7
- //#region src/models/notification-subscription.ts
7
+ // src/models/notification-subscription.ts
8
8
  /** Per-user opt-in rows for project notifications. */
9
9
  /** Data operations for per-user notification subscriptions. */
10
10
  var NotificationSubscriptionModel = class {
@@ -81,7 +81,6 @@ function decodeList(raw) {
81
81
  return [];
82
82
  }
83
83
  }
84
- //#endregion
85
84
  export { NotificationSubscriptionModel };
86
85
 
87
86
  //# sourceMappingURL=notification-subscription.mjs.map
@@ -4,7 +4,6 @@ import { DatabaseAdapter } from "../adapter/database.mjs";
4
4
  import { ProjectRole } from "../types.mjs";
5
5
  import { ProjectGroupMapping } from "../schema/project-group-mapping.mjs";
6
6
  import { Table } from "drizzle-orm";
7
- //#region src/models/project-group-mapping.d.ts
8
7
  /** Tables required by {@link ProjectGroupMappingModel}. */
9
8
  interface ProjectGroupMappingTables {
10
9
  projectGroupMappings: Table;
@@ -30,6 +29,5 @@ declare class ProjectGroupMappingModel {
30
29
  /** Remove a group mapping by id within a project. */
31
30
  remove(projectId: string, id: string): Promise<void>;
32
31
  }
33
- //#endregion
34
32
  export { ProjectGroupMappingModel, ProjectGroupMappingTables };
35
33
  //# sourceMappingURL=project-group-mapping.d.mts.map
@@ -5,7 +5,7 @@ import { isProjectRole } from "../types.mjs";
5
5
  import { ulid } from "../utils/ulid.mjs";
6
6
  import { col } from "./columns.mjs";
7
7
  import { and, eq } from "drizzle-orm";
8
- //#region src/models/project-group-mapping.ts
8
+ // src/models/project-group-mapping.ts
9
9
  /** Project group-to-role mappings for OIDC team sync. */
10
10
  /** Data operations for identity-provider group mappings. */
11
11
  var ProjectGroupMappingModel = class {
@@ -50,7 +50,6 @@ var ProjectGroupMappingModel = class {
50
50
  if (rows[0]) await this.db.remove(this.tables.projectGroupMappings, rows[0].id);
51
51
  }
52
52
  };
53
- //#endregion
54
53
  export { ProjectGroupMappingModel };
55
54
 
56
55
  //# sourceMappingURL=project-group-mapping.mjs.map
@@ -3,7 +3,6 @@ import __tsdown_shims_url from 'node:url';
3
3
  import { DatabaseAdapter } from "../adapter/database.mjs";
4
4
  import { Project } from "../schema/project.mjs";
5
5
  import { Table } from "drizzle-orm";
6
- //#region src/models/project.d.ts
7
6
  /** Tables required by {@link ProjectModel}. */
8
7
  interface ProjectTables {
9
8
  projects: Table;
@@ -57,6 +56,5 @@ interface ProjectCreateInput {
57
56
  /** Approvals a build needs with `testing` off (column default 1 when omitted). */
58
57
  reviewApprovals?: number;
59
58
  }
60
- //#endregion
61
59
  export { ProjectCreateInput, ProjectModel, ProjectTables };
62
60
  //# sourceMappingURL=project.d.mts.map
@@ -4,7 +4,7 @@ import.meta.url;
4
4
  import { slugify, ulid } from "../utils/ulid.mjs";
5
5
  import { col } from "./columns.mjs";
6
6
  import { eq } from "drizzle-orm";
7
- //#region src/models/project.ts
7
+ // src/models/project.ts
8
8
  /** Project records and slug management. */
9
9
  /** Data operations for project records. */
10
10
  var ProjectModel = class {
@@ -82,7 +82,6 @@ var ProjectModel = class {
82
82
  return `${base}-${suffix}`;
83
83
  }
84
84
  };
85
- //#endregion
86
85
  export { ProjectModel };
87
86
 
88
87
  //# sourceMappingURL=project.mjs.map
@@ -3,7 +3,6 @@ import __tsdown_shims_url from 'node:url';
3
3
  import { DatabaseAdapter } from "../adapter/database.mjs";
4
4
  import { ShelfConfig } from "../config.mjs";
5
5
  import { Env } from "../utils/public-origin.mjs";
6
- //#region src/models/public-origin.d.ts
7
6
  /** Key of the stored origin in `site_settings`. */
8
7
  declare const PUBLIC_ORIGIN_KEY = "public_origin";
9
8
  /** Where the resolved origin came from. */
@@ -58,6 +57,5 @@ interface PublicOriginOptions {
58
57
  }
59
58
  /** Build the resolver for one app instance. */
60
59
  declare function createPublicOriginResolver(options: PublicOriginOptions): PublicOriginResolver;
61
- //#endregion
62
60
  export { PUBLIC_ORIGIN_KEY, PublicOriginOptions, PublicOriginResolver, PublicOriginSource, ResolvedPublicOrigin, StoredPublicOrigin, createPublicOriginResolver };
63
61
  //# sourceMappingURL=public-origin.d.mts.map
@@ -3,7 +3,7 @@ import "node:url";
3
3
  import.meta.url;
4
4
  import { detectPublicBaseUrl, normalizeOrigin } from "../utils/public-origin.mjs";
5
5
  import { SiteSettingsModel } from "./site-settings.mjs";
6
- //#region src/models/public-origin.ts
6
+ // src/models/public-origin.ts
7
7
  /** Key of the stored origin in `site_settings`. */
8
8
  const PUBLIC_ORIGIN_KEY = "public_origin";
9
9
  /** Build the resolver for one app instance. */
@@ -108,7 +108,6 @@ function parseStored(raw) {
108
108
  return null;
109
109
  }
110
110
  }
111
- //#endregion
112
111
  export { PUBLIC_ORIGIN_KEY, createPublicOriginResolver };
113
112
 
114
113
  //# sourceMappingURL=public-origin.mjs.map
@@ -2,13 +2,11 @@ import __tsdown_shims_path from 'node:path';
2
2
  import __tsdown_shims_url from 'node:url';
3
3
  import { DatabaseAdapter } from "../adapter/database.mjs";
4
4
  import { Build } from "../schema/build.mjs";
5
- //#region src/models/review-switch-off.d.ts
6
5
  /**
7
6
  * Accept the project's `pending` builds that have no capture attempts and no snapshots; resolves
8
7
  * to the builds it accepted. Builds a capture touched keep their status (snapshot approval decides
9
8
  * them), and a second run finds nothing left to do. No approval event is raised.
10
9
  */
11
10
  declare function acceptPendingWithoutWork(db: DatabaseAdapter, projectId: string): Promise<Build[]>;
12
- //#endregion
13
11
  export { acceptPendingWithoutWork };
14
12
  //# sourceMappingURL=review-switch-off.d.mts.map
@@ -4,7 +4,7 @@ import.meta.url;
4
4
  import { CaptureAttemptModel } from "./capture-attempt.mjs";
5
5
  import { BuildModel } from "./build.mjs";
6
6
  import { SnapshotModel } from "./snapshot.mjs";
7
- //#region src/models/review-switch-off.ts
7
+ // src/models/review-switch-off.ts
8
8
  /**
9
9
  * Accept the project's `pending` builds that have no capture attempts and no snapshots; resolves
10
10
  * to the builds it accepted. Builds a capture touched keep their status (snapshot approval decides
@@ -20,7 +20,6 @@ async function hasWork(db, buildId) {
20
20
  const [attempts, snapshots] = await Promise.all([new CaptureAttemptModel(db).listByBuild(buildId), new SnapshotModel(db).listByBuild(buildId)]);
21
21
  return attempts.length > 0 || snapshots.length > 0;
22
22
  }
23
- //#endregion
24
23
  export { acceptPendingWithoutWork };
25
24
 
26
25
  //# sourceMappingURL=review-switch-off.mjs.map
@@ -2,7 +2,6 @@ import __tsdown_shims_path from 'node:path';
2
2
  import __tsdown_shims_url from 'node:url';
3
3
  import { DatabaseAdapter } from "../adapter/database.mjs";
4
4
  import { Table } from "drizzle-orm";
5
- //#region src/models/site-settings.d.ts
6
5
  /** Tables required by {@link SiteSettingsModel}. */
7
6
  interface SiteSettingsTables {
8
7
  siteSettings: Table;
@@ -18,6 +17,5 @@ declare class SiteSettingsModel {
18
17
  /** Delete the setting; a no-op when it is absent. */
19
18
  remove(key: string): Promise<void>;
20
19
  }
21
- //#endregion
22
20
  export { SiteSettingsModel, SiteSettingsTables };
23
21
  //# sourceMappingURL=site-settings.d.mts.map
@@ -1,7 +1,7 @@
1
1
  import "node:path";
2
2
  import "node:url";
3
3
  import.meta.url;
4
- //#region src/models/site-settings.ts
4
+ // src/models/site-settings.ts
5
5
  /** Data operations for `site_settings`, keyed by setting name. */
6
6
  var SiteSettingsModel = class {
7
7
  #db;
@@ -42,7 +42,6 @@ var SiteSettingsModel = class {
42
42
  await this.#db.remove(this.#table, key);
43
43
  }
44
44
  };
45
- //#endregion
46
45
  export { SiteSettingsModel };
47
46
 
48
47
  //# sourceMappingURL=site-settings.mjs.map
@@ -4,7 +4,6 @@ import { DatabaseAdapter } from "../adapter/database.mjs";
4
4
  import { SnapshotStatus } from "../types.mjs";
5
5
  import { Snapshot } from "../schema/snapshot.mjs";
6
6
  import { Table } from "drizzle-orm";
7
- //#region src/models/snapshot.d.ts
8
7
  /** Tables required by {@link SnapshotModel}. */
9
8
  interface SnapshotTables {
10
9
  snapshots: Table;
@@ -77,6 +76,9 @@ interface SnapshotCreateInput {
77
76
  /** JSON `EnvironmentChange` when accepted as an environment migration. */
78
77
  envChange?: string | null;
79
78
  inherited?: boolean;
79
+ sourceBuildId?: string | null;
80
+ comparisonImagePath?: string | null;
81
+ comparisonMetadata?: string | null;
80
82
  baselineId?: string | null;
81
83
  baselineVersion?: string | null;
82
84
  /** Resolved mode definition as JSON (display/capture only). */
@@ -88,6 +90,5 @@ interface SnapshotCreateInput {
88
90
  /** JSON array of axe violation texts found on this capture; null when none. */
89
91
  a11yViolations?: string | null;
90
92
  }
91
- //#endregion
92
93
  export { SnapshotCreateInput, SnapshotModel, SnapshotTables };
93
94
  //# sourceMappingURL=snapshot.d.mts.map
@@ -5,7 +5,7 @@ import "../adapters/capture-target.mjs";
5
5
  import { ulid } from "../utils/ulid.mjs";
6
6
  import { col } from "./columns.mjs";
7
7
  import { and, eq, inArray } from "drizzle-orm";
8
- //#region src/models/snapshot.ts
8
+ // src/models/snapshot.ts
9
9
  /** Snapshot records for captured stories within a build. */
10
10
  /** Data operations for snapshot records. */
11
11
  var SnapshotModel = class {
@@ -45,6 +45,9 @@ var SnapshotModel = class {
45
45
  infraHash: input.infraHash ?? null,
46
46
  envChange: input.envChange ?? null,
47
47
  inherited: input.inherited ?? false,
48
+ sourceBuildId: input.inherited ? input.sourceBuildId ?? null : buildId,
49
+ comparisonImagePath: input.comparisonImagePath ?? null,
50
+ comparisonMetadata: input.comparisonMetadata ?? null,
48
51
  baselineId: input.baselineId ?? null,
49
52
  baselineVersion: input.baselineVersion ?? null,
50
53
  mode: input.mode ?? null,
@@ -123,7 +126,6 @@ var SnapshotModel = class {
123
126
  });
124
127
  }
125
128
  };
126
- //#endregion
127
129
  export { SnapshotModel };
128
130
 
129
131
  //# sourceMappingURL=snapshot.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"snapshot.mjs","names":[],"sources":["../../src/models/snapshot.ts"],"sourcesContent":["/** Snapshot records for captured stories within a build. */\nimport { and, eq, inArray } from \"drizzle-orm\";\nimport type { Table } from \"drizzle-orm\";\nimport { DEFAULT_BROWSER } from \"../adapters/capture-runner.ts\";\nimport type { DatabaseAdapter } from \"../adapters/database.ts\";\nimport type { Snapshot } from \"../schema/snapshot.ts\";\nimport type { SnapshotStatus } from \"../types.ts\";\nimport { ulid } from \"../utils/ulid.ts\";\nimport { col } from \"./columns.ts\";\n\n/** Tables required by {@link SnapshotModel}. */\nexport interface SnapshotTables {\n snapshots: Table;\n}\n\n/** Data operations for snapshot records. */\nexport class SnapshotModel {\n private readonly tables: SnapshotTables;\n private readonly db: DatabaseAdapter;\n\n /**\n * @param db - Database adapter.\n * @param tables - Table handles.\n */\n constructor(db: DatabaseAdapter, tables?: SnapshotTables) {\n this.db = db;\n this.tables = tables ?? { snapshots: db.tables.snapshots };\n }\n\n /**\n * Create a snapshot for a story within a build.\n *\n * @param projectId - Project ID.\n * @param buildId - Build ID.\n * @param input - Snapshot creation input.\n * @returns The created snapshot.\n */\n async create(projectId: string, buildId: string, input: SnapshotCreateInput): Promise<Snapshot> {\n const now = new Date().toISOString();\n return (await this.db.insert(this.tables.snapshots, {\n id: ulid(),\n projectId,\n buildId,\n storyId: input.storyId,\n storyName: input.storyName,\n storyTitle: input.storyTitle,\n storyImportPath: input.storyImportPath,\n designUrl: input.designUrl ?? null,\n viewportName: input.viewportName,\n viewportWidth: input.viewportWidth,\n viewportHeight: input.viewportHeight,\n screenshotPath: input.screenshotPath,\n infraHash: input.infraHash ?? null,\n envChange: input.envChange ?? null,\n inherited: input.inherited ?? false,\n baselineId: input.baselineId ?? null,\n baselineVersion: input.baselineVersion ?? null,\n mode: input.mode ?? null,\n browser: input.browser ?? DEFAULT_BROWSER,\n durationMs: input.durationMs ?? null,\n a11yViolations: input.a11yViolations ?? null,\n status: \"pending\",\n createdAt: now,\n updatedAt: now,\n })) as unknown as Snapshot;\n }\n\n /**\n * Delete the rendered snapshots a shard is about to write again: rows of `(story, engine)` pairs\n * in `work`, so a rerun starts from a clean slate instead of colliding with rows an earlier,\n * interrupted run left behind. Inherited rows are kept: the plan wrote them, for engines or\n * viewports this shard does not render.\n */\n async removeRendered(\n buildId: string,\n work: readonly { browser: string; storyIds: ReadonlySet<string> }[],\n ): Promise<number> {\n const doomed = (await this.listByBuild(buildId)).filter(\n (row) =>\n !row.inherited &&\n work.some(\n (engine) =>\n engine.browser === (row.browser ?? DEFAULT_BROWSER) && engine.storyIds.has(row.storyId),\n ),\n );\n await this.#removeAll(doomed);\n return doomed.length;\n }\n\n /** Delete every snapshot of a build: a new plan of it starts clean. */\n async removeForBuild(buildId: string): Promise<number> {\n const doomed = await this.listByBuild(buildId);\n await this.#removeAll(doomed);\n return doomed.length;\n }\n\n async #removeAll(rows: readonly Snapshot[]): Promise<void> {\n await Promise.all(\n rows.map(async (row) => {\n await this.db.remove(this.tables.snapshots, row.id);\n }),\n );\n }\n\n /**\n * Milliseconds each story cost on one build, summed over its viewports and engines. Stories the\n * renderer did not time are left out, so an empty map means this build carries no timings.\n */\n async durationsByStory(buildId: string): Promise<Map<string, number>> {\n const totals = new Map<string, number>();\n for (const row of await this.listByBuild(buildId)) {\n if (typeof row.durationMs === \"number\") {\n totals.set(row.storyId, (totals.get(row.storyId) ?? 0) + row.durationMs);\n }\n }\n return totals;\n }\n\n /** List all snapshots belonging to a build. */\n async listByBuild(buildId: string): Promise<Snapshot[]> {\n return (await this.db.list(this.tables.snapshots, {\n where: eq(col(this.tables.snapshots, \"buildId\"), buildId),\n })) as unknown as Snapshot[];\n }\n\n /**\n * Every snapshot of a story file across the project's builds. Index paths are\n * stored raw (`./src/A.stories.tsx`), so both spellings of `importPath` match.\n */\n async listByImportPath(projectId: string, importPath: string): Promise<Snapshot[]> {\n const bare = importPath.replace(/^(?:\\.\\/)+/u, \"\");\n return (await this.db.list(this.tables.snapshots, {\n where: and(\n eq(col(this.tables.snapshots, \"projectId\"), projectId),\n inArray(col(this.tables.snapshots, \"storyImportPath\"), [bare, `./${bare}`]),\n ),\n })) as unknown as Snapshot[];\n }\n\n /** Fetch a snapshot by id, or null if not found. */\n async get(id: string): Promise<Snapshot | null> {\n return (await this.db.get(this.tables.snapshots, id)) as unknown as Snapshot | null;\n }\n\n /** Update mutable fields of a snapshot. */\n async update(id: string, patch: Partial<Snapshot>): Promise<Snapshot> {\n return (await this.db.update(this.tables.snapshots, id, {\n ...patch,\n updatedAt: new Date().toISOString(),\n })) as unknown as Snapshot;\n }\n\n /** Set the status of a snapshot. */\n async setStatus(id: string, status: SnapshotStatus): Promise<Snapshot> {\n return await this.update(id, { status });\n }\n\n /** Record a reviewer's decision on a snapshot. */\n async review(id: string, status: SnapshotStatus, userId: string | null): Promise<Snapshot> {\n return await this.update(id, {\n status,\n reviewedBy: userId,\n reviewedAt: new Date().toISOString(),\n });\n }\n}\n\n/** Input for creating a snapshot. */\nexport interface SnapshotCreateInput {\n storyId: string;\n storyName: string;\n storyTitle: string;\n storyImportPath?: string;\n /** Figma URL declared by the story (`parameters.design` / `storyshelf.figma`). */\n designUrl?: string | null;\n viewportName: string;\n viewportWidth: number;\n viewportHeight: number;\n screenshotPath: string;\n infraHash?: string | null;\n /** JSON `EnvironmentChange` when accepted as an environment migration. */\n envChange?: string | null;\n inherited?: boolean;\n baselineId?: string | null;\n baselineVersion?: string | null;\n /** Resolved mode definition as JSON (display/capture only). */\n mode?: string | null;\n /** Engine the screenshot was captured with (default chromium). */\n browser?: string;\n /** Milliseconds the renderer spent on this capture, when it reported any. */\n durationMs?: number | null;\n /** JSON array of axe violation texts found on this capture; null when none. */\n a11yViolations?: string | null;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"snapshot.mjs","names":[],"sources":["../../src/models/snapshot.ts"],"sourcesContent":["/** Snapshot records for captured stories within a build. */\nimport { and, eq, inArray } from \"drizzle-orm\";\nimport type { Table } from \"drizzle-orm\";\nimport { DEFAULT_BROWSER } from \"../adapters/capture-runner.ts\";\nimport type { DatabaseAdapter } from \"../adapters/database.ts\";\nimport type { Snapshot } from \"../schema/snapshot.ts\";\nimport type { SnapshotStatus } from \"../types.ts\";\nimport { ulid } from \"../utils/ulid.ts\";\nimport { col } from \"./columns.ts\";\n\n/** Tables required by {@link SnapshotModel}. */\nexport interface SnapshotTables {\n snapshots: Table;\n}\n\n/** Data operations for snapshot records. */\nexport class SnapshotModel {\n private readonly tables: SnapshotTables;\n private readonly db: DatabaseAdapter;\n\n /**\n * @param db - Database adapter.\n * @param tables - Table handles.\n */\n constructor(db: DatabaseAdapter, tables?: SnapshotTables) {\n this.db = db;\n this.tables = tables ?? { snapshots: db.tables.snapshots };\n }\n\n /**\n * Create a snapshot for a story within a build.\n *\n * @param projectId - Project ID.\n * @param buildId - Build ID.\n * @param input - Snapshot creation input.\n * @returns The created snapshot.\n */\n async create(projectId: string, buildId: string, input: SnapshotCreateInput): Promise<Snapshot> {\n const now = new Date().toISOString();\n return (await this.db.insert(this.tables.snapshots, {\n id: ulid(),\n projectId,\n buildId,\n storyId: input.storyId,\n storyName: input.storyName,\n storyTitle: input.storyTitle,\n storyImportPath: input.storyImportPath,\n designUrl: input.designUrl ?? null,\n viewportName: input.viewportName,\n viewportWidth: input.viewportWidth,\n viewportHeight: input.viewportHeight,\n screenshotPath: input.screenshotPath,\n infraHash: input.infraHash ?? null,\n envChange: input.envChange ?? null,\n inherited: input.inherited ?? false,\n sourceBuildId: input.inherited ? (input.sourceBuildId ?? null) : buildId,\n comparisonImagePath: input.comparisonImagePath ?? null,\n comparisonMetadata: input.comparisonMetadata ?? null,\n baselineId: input.baselineId ?? null,\n baselineVersion: input.baselineVersion ?? null,\n mode: input.mode ?? null,\n browser: input.browser ?? DEFAULT_BROWSER,\n durationMs: input.durationMs ?? null,\n a11yViolations: input.a11yViolations ?? null,\n status: \"pending\",\n createdAt: now,\n updatedAt: now,\n })) as unknown as Snapshot;\n }\n\n /**\n * Delete the rendered snapshots a shard is about to write again: rows of `(story, engine)` pairs\n * in `work`, so a rerun starts from a clean slate instead of colliding with rows an earlier,\n * interrupted run left behind. Inherited rows are kept: the plan wrote them, for engines or\n * viewports this shard does not render.\n */\n async removeRendered(\n buildId: string,\n work: readonly { browser: string; storyIds: ReadonlySet<string> }[],\n ): Promise<number> {\n const doomed = (await this.listByBuild(buildId)).filter(\n (row) =>\n !row.inherited &&\n work.some(\n (engine) =>\n engine.browser === (row.browser ?? DEFAULT_BROWSER) && engine.storyIds.has(row.storyId),\n ),\n );\n await this.#removeAll(doomed);\n return doomed.length;\n }\n\n /** Delete every snapshot of a build: a new plan of it starts clean. */\n async removeForBuild(buildId: string): Promise<number> {\n const doomed = await this.listByBuild(buildId);\n await this.#removeAll(doomed);\n return doomed.length;\n }\n\n async #removeAll(rows: readonly Snapshot[]): Promise<void> {\n await Promise.all(\n rows.map(async (row) => {\n await this.db.remove(this.tables.snapshots, row.id);\n }),\n );\n }\n\n /**\n * Milliseconds each story cost on one build, summed over its viewports and engines. Stories the\n * renderer did not time are left out, so an empty map means this build carries no timings.\n */\n async durationsByStory(buildId: string): Promise<Map<string, number>> {\n const totals = new Map<string, number>();\n for (const row of await this.listByBuild(buildId)) {\n if (typeof row.durationMs === \"number\") {\n totals.set(row.storyId, (totals.get(row.storyId) ?? 0) + row.durationMs);\n }\n }\n return totals;\n }\n\n /** List all snapshots belonging to a build. */\n async listByBuild(buildId: string): Promise<Snapshot[]> {\n return (await this.db.list(this.tables.snapshots, {\n where: eq(col(this.tables.snapshots, \"buildId\"), buildId),\n })) as unknown as Snapshot[];\n }\n\n /**\n * Every snapshot of a story file across the project's builds. Index paths are\n * stored raw (`./src/A.stories.tsx`), so both spellings of `importPath` match.\n */\n async listByImportPath(projectId: string, importPath: string): Promise<Snapshot[]> {\n const bare = importPath.replace(/^(?:\\.\\/)+/u, \"\");\n return (await this.db.list(this.tables.snapshots, {\n where: and(\n eq(col(this.tables.snapshots, \"projectId\"), projectId),\n inArray(col(this.tables.snapshots, \"storyImportPath\"), [bare, `./${bare}`]),\n ),\n })) as unknown as Snapshot[];\n }\n\n /** Fetch a snapshot by id, or null if not found. */\n async get(id: string): Promise<Snapshot | null> {\n return (await this.db.get(this.tables.snapshots, id)) as unknown as Snapshot | null;\n }\n\n /** Update mutable fields of a snapshot. */\n async update(id: string, patch: Partial<Snapshot>): Promise<Snapshot> {\n return (await this.db.update(this.tables.snapshots, id, {\n ...patch,\n updatedAt: new Date().toISOString(),\n })) as unknown as Snapshot;\n }\n\n /** Set the status of a snapshot. */\n async setStatus(id: string, status: SnapshotStatus): Promise<Snapshot> {\n return await this.update(id, { status });\n }\n\n /** Record a reviewer's decision on a snapshot. */\n async review(id: string, status: SnapshotStatus, userId: string | null): Promise<Snapshot> {\n return await this.update(id, {\n status,\n reviewedBy: userId,\n reviewedAt: new Date().toISOString(),\n });\n }\n}\n\n/** Input for creating a snapshot. */\nexport interface SnapshotCreateInput {\n storyId: string;\n storyName: string;\n storyTitle: string;\n storyImportPath?: string;\n /** Figma URL declared by the story (`parameters.design` / `storyshelf.figma`). */\n designUrl?: string | null;\n viewportName: string;\n viewportWidth: number;\n viewportHeight: number;\n screenshotPath: string;\n infraHash?: string | null;\n /** JSON `EnvironmentChange` when accepted as an environment migration. */\n envChange?: string | null;\n inherited?: boolean;\n sourceBuildId?: string | null;\n comparisonImagePath?: string | null;\n comparisonMetadata?: string | null;\n baselineId?: string | null;\n baselineVersion?: string | null;\n /** Resolved mode definition as JSON (display/capture only). */\n mode?: string | null;\n /** Engine the screenshot was captured with (default chromium). */\n browser?: string;\n /** Milliseconds the renderer spent on this capture, when it reported any. */\n durationMs?: number | null;\n /** JSON array of axe violation texts found on this capture; null when none. */\n a11yViolations?: string | null;\n}\n"],"mappings":"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"}
@@ -3,7 +3,6 @@ import __tsdown_shims_url from 'node:url';
3
3
  import { DatabaseAdapter } from "../adapter/database.mjs";
4
4
  import { Token } from "../schema/token.mjs";
5
5
  import { Table } from "drizzle-orm";
6
- //#region src/models/token.d.ts
7
6
  /** Tables required by {@link TokenModel}. */
8
7
  interface TokenTables {
9
8
  tokens: Table;
@@ -51,6 +50,5 @@ declare class TokenModel {
51
50
  /** Delete a token by id. */
52
51
  remove(id: string): Promise<void>;
53
52
  }
54
- //#endregion
55
53
  export { TokenModel, TokenTables };
56
54
  //# sourceMappingURL=token.d.mts.map
@@ -5,7 +5,7 @@ import { randomToken } from "../utils/hash.mjs";
5
5
  import { ulid } from "../utils/ulid.mjs";
6
6
  import { col } from "./columns.mjs";
7
7
  import { and, eq } from "drizzle-orm";
8
- //#region src/models/token.ts
8
+ // src/models/token.ts
9
9
  /** CI tokens for project-scoped API access. */
10
10
  /** Data operations for CI tokens. */
11
11
  var TokenModel = class {
@@ -76,7 +76,6 @@ var TokenModel = class {
76
76
  await this.db.remove(this.tables.tokens, id);
77
77
  }
78
78
  };
79
- //#endregion
80
79
  export { TokenModel };
81
80
 
82
81
  //# sourceMappingURL=token.mjs.map
@@ -3,7 +3,6 @@ import __tsdown_shims_url from 'node:url';
3
3
  import { DatabaseAdapter } from "../adapter/database.mjs";
4
4
  import { BuildPackageUsage, ProjectLink } from "../schema/usage.mjs";
5
5
  import { Table } from "drizzle-orm";
6
- //#region src/models/usage.d.ts
7
6
  /** Tables required by {@link PackageUsageModel}. */
8
7
  interface PackageUsageTables {
9
8
  buildPackageUsage: Table;
@@ -71,6 +70,5 @@ declare class PackageUsageModel {
71
70
  private atomic;
72
71
  private buildWhere;
73
72
  }
74
- //#endregion
75
73
  export { PackageUsageInput, PackageUsageModel, PackageUsageTables, UpstreamStory, matchUpstreamStory };
76
74
  //# sourceMappingURL=usage.d.mts.map
@@ -4,7 +4,7 @@ import.meta.url;
4
4
  import { ulid } from "../utils/ulid.mjs";
5
5
  import { col } from "./columns.mjs";
6
6
  import { and, eq } from "drizzle-orm";
7
- //#region src/models/usage.ts
7
+ // src/models/usage.ts
8
8
  /** Per-build package usage and cross-project package links. */
9
9
  /** `Button.stories.tsx` / `Button.js` / `Button/index.js` → `Button`. */
10
10
  function componentStem(path) {
@@ -143,7 +143,6 @@ async function serialized(key, task) {
143
143
  if (pending.get(key) === tail) pending.delete(key);
144
144
  }
145
145
  }
146
- //#endregion
147
146
  export { PackageUsageModel, matchUpstreamStory };
148
147
 
149
148
  //# sourceMappingURL=usage.mjs.map
@@ -3,7 +3,6 @@ import __tsdown_shims_url from 'node:url';
3
3
  import { DatabaseAdapter } from "../adapter/database.mjs";
4
4
  import { User } from "../schema/user.mjs";
5
5
  import { Table } from "drizzle-orm";
6
- //#region src/models/user.d.ts
7
6
  /** Tables required by {@link UserModel}. */
8
7
  interface UserTables {
9
8
  users: Table;
@@ -37,6 +36,5 @@ declare class UserModel {
37
36
  /** Update the display name override for a user (profile edit). */
38
37
  setDisplayNameOverride(id: string, displayName: string | null): Promise<User>;
39
38
  }
40
- //#endregion
41
39
  export { UserModel, UserTables };
42
40
  //# sourceMappingURL=user.d.mts.map
@@ -3,7 +3,7 @@ import "node:url";
3
3
  import.meta.url;
4
4
  import { col } from "./columns.mjs";
5
5
  import { eq } from "drizzle-orm";
6
- //#region src/models/user.ts
6
+ // src/models/user.ts
7
7
  /** User lookups for token and membership resolution. */
8
8
  /** Data operations for users. */
9
9
  var UserModel = class {
@@ -60,7 +60,6 @@ var UserModel = class {
60
60
  return await this.db.update(this.tables.users, id, { displayNameOverride: displayName?.trim() ? displayName.trim() : null });
61
61
  }
62
62
  };
63
- //#endregion
64
63
  export { UserModel };
65
64
 
66
65
  //# sourceMappingURL=user.mjs.map
@@ -4,7 +4,6 @@ import { DatabaseAdapter } from "../adapter/database.mjs";
4
4
  import { Webhook } from "../schema/webhook.mjs";
5
5
  import { SecretInput } from "../utils/encrypt.mjs";
6
6
  import { Table } from "drizzle-orm";
7
- //#region src/models/webhook.d.ts
8
7
  /** Tables required by {@link WebhookModel}. */
9
8
  interface WebhookTables {
10
9
  webhooks: Table;
@@ -59,6 +58,5 @@ interface WebhookCreateInput {
59
58
  events?: string[];
60
59
  secret: string;
61
60
  }
62
- //#endregion
63
61
  export { WebhookCreateInput, WebhookModel, WebhookTables };
64
62
  //# sourceMappingURL=webhook.d.mts.map
@@ -6,7 +6,7 @@ import { decryptCredential, encrypt } from "../utils/encrypt.mjs";
6
6
  import { ulid } from "../utils/ulid.mjs";
7
7
  import { col } from "./columns.mjs";
8
8
  import { eq } from "drizzle-orm";
9
- //#region src/models/webhook.ts
9
+ // src/models/webhook.ts
10
10
  /** Webhook subscriptions for project events. */
11
11
  /** Data operations for webhook subscriptions. */
12
12
  var WebhookModel = class {
@@ -101,7 +101,6 @@ var WebhookModel = class {
101
101
  }
102
102
  }
103
103
  };
104
- //#endregion
105
104
  export { WebhookModel };
106
105
 
107
106
  //# sourceMappingURL=webhook.mjs.map
package/dist/models.d.mts CHANGED
@@ -5,15 +5,18 @@ import { BuildCreateInput, BuildListFilter, BuildModel, isPublicBuild } from "./
5
5
  import { AttemptLogRecorder, CaptureAttemptModel, CaptureAttemptTables, emitAttemptLog } from "./models/capture-attempt.mjs";
6
6
  import { CaptureLogModel, CaptureLogTables } from "./models/capture-log.mjs";
7
7
  import { ProjectCreateInput, ProjectModel } from "./models/project.mjs";
8
+ import { BaselineWriteConflict } from "./models/baseline-conflict.mjs";
9
+ import { BaselineStatus, NO_BASELINE, baselineStatus, isBaselineDrifted } from "./models/baseline-status.mjs";
10
+ import { BaselineApprovalConflict } from "./models/baseline-approval.mjs";
8
11
  import { BaselineModel } from "./models/baseline.mjs";
9
12
  import { SnapshotCreateInput, SnapshotModel } from "./models/snapshot.mjs";
10
13
  import { AttemptClaim, CaptureJobModel, CaptureJobTables, NewCaptureJob, TERMINAL_JOB_STATUSES, attemptRowId, isTerminalJob, parseAttemptRowId } from "./models/capture-job.mjs";
11
14
  import { BuildComponentInput, BuildComponentModel, BuildComponentTables } from "./models/build-component.mjs";
12
15
  import { ComponentHistoryRow, ComponentPresence, componentHistory, componentPresence, worstStatus } from "./models/component.mjs";
16
+ import { BaselineOriginReader, resolveBaselineOrigin } from "./models/baseline-origin.mjs";
13
17
  import { BASELINE_ARCHIVE_FORMAT, BASELINE_ARCHIVE_LIMITS, BASELINE_ARCHIVE_VERSION, BaselineArchiveError, BaselineManifest, BaselineManifestEntry } from "./models/baseline-archive.mjs";
14
18
  import { BaselineExportOptions } from "./models/baseline-export.mjs";
15
19
  import { BaselineImportResult, BaselineTransferModel } from "./models/baseline-transfer.mjs";
16
- import { BaselineStatus, NO_BASELINE, baselineStatus, isBaselineDrifted } from "./models/baseline-status.mjs";
17
20
  import { CaptureShardModel, CaptureShardTables } from "./models/capture-shard.mjs";
18
21
  import { AiBudgetAlertModel, AiBudgetAlertTables } from "./models/ai-budget-alert.mjs";
19
22
  import { AiUsageInput, AiUsageModel, AiUsageTables } from "./models/ai-usage.mjs";
@@ -28,8 +31,8 @@ import { ConnectionModel, ConnectionTables } from "./models/connections.mjs";
28
31
  import { DesignModel, DesignTables } from "./models/design.mjs";
29
32
  import { DesignCredentialStatus, DesignResolution, DesignSource, normalizeImportPath, resolveDesigns } from "./models/design-resolve.mjs";
30
33
  import { DesignCredentialModel, DesignCredentialTables, PROJECT_SCOPE } from "./models/design-credentials.mjs";
34
+ import { DESIGN_TTL_MS, DesignChange, DesignChangeKind, credentialDaysLeft, designChange, isDesignStale } from "./models/design-health.mjs";
31
35
  import { DesignNodeModel, DesignNodeTables, RefreshOptions } from "./models/design-nodes.mjs";
32
- import { DESIGN_TTL_MS, credentialDaysLeft, isDesignStale } from "./models/design-health.mjs";
33
36
  import { LabelModel } from "./models/label.mjs";
34
37
  import { PackageUsageInput, PackageUsageModel, PackageUsageTables, UpstreamStory, matchUpstreamStory } from "./models/usage.mjs";
35
38
  import { MemberModel } from "./models/member.mjs";
@@ -42,4 +45,4 @@ import { ContentRefModel } from "./models/content-ref.mjs";
42
45
  import { CredentialProbe, ReencryptResult, UnreadableCredential, probeCredentials, reencryptCredentials } from "./models/credentials.mjs";
43
46
  import { SiteSettingsModel, SiteSettingsTables } from "./models/site-settings.mjs";
44
47
  import { PUBLIC_ORIGIN_KEY, PublicOriginOptions, PublicOriginResolver, PublicOriginSource, ResolvedPublicOrigin, StoredPublicOrigin, createPublicOriginResolver } from "./models/public-origin.mjs";
45
- export { AiBudgetAlertModel, type AiBudgetAlertTables, type AiUsageInput, AiUsageModel, type AiUsageTables, type AttemptClaim, type AttemptLogRecorder, BASELINE_ARCHIVE_FORMAT, BASELINE_ARCHIVE_LIMITS, BASELINE_ARCHIVE_VERSION, BaselineArchiveError, type BaselineExportOptions, type BaselineImportResult, type BaselineManifest, type BaselineManifestEntry, BaselineModel, type BaselineStatus, BaselineTransferModel, type BuildChangeset, type BuildComponentInput, BuildComponentModel, type BuildComponentTables, type BuildCreateInput, type BuildListFilter, BuildModel, BuildReviewModel, type BuildReviewTables, CaptureAttemptModel, type CaptureAttemptTables, CaptureJobModel, type CaptureJobTables, CaptureLogModel, type CaptureLogTables, CaptureShardModel, type CaptureShardTables, type ChangedComponent, type Changeset, type ChangesetComponent, type ChannelValidation, type CommentCreateInput, CommentModel, type ComponentHistoryRow, type ComponentPresence, ConnectionModel, type ConnectionTables, ContentRefModel, type CredentialProbe, DESIGN_TTL_MS, DesignCredentialModel, type DesignCredentialStatus, type DesignCredentialTables, DesignModel, DesignNodeModel, type DesignNodeTables, type DesignResolution, type DesignSource, type DesignTables, type InheritedRatio, InsightModel, type InsightResultInput, type InsightStartInput, type InsightStartResult, type InsightTables, LabelModel, MemberModel, NO_BASELINE, type NewCaptureJob, type NotificationChannelCreateInput, NotificationChannelModel, type NotificationChannelTables, type NotificationSubscriptionInput, NotificationSubscriptionModel, type NotificationSubscriptionTables, PROJECT_SCOPE, PUBLIC_ORIGIN_KEY, type PackageUsageInput, PackageUsageModel, type PackageUsageTables, type ProjectCreateInput, ProjectGroupMappingModel, ProjectModel, type PublicOriginOptions, type PublicOriginResolver, type PublicOriginSource, RECENT_BUILDS_FOR_INHERITED_RATIO, type ReencryptResult, type RefreshOptions, type ResolvedPublicOrigin, type ReviewStatusInput, SiteSettingsModel, type SiteSettingsTables, type SnapshotCreateInput, SnapshotModel, type StoredPublicOrigin, TERMINAL_JOB_STATUSES, TokenModel, type UnreadableCredential, type UpstreamStory, UserModel, type WebhookCreateInput, WebhookModel, acceptPendingWithoutWork, attemptRowId, averageInheritedRatio, baselineStatus, changesetOf, componentHistory, componentPresence, computeChangeset, createPublicOriginResolver, credentialDaysLeft, deriveReviewStatus, emitAttemptLog, findChangesetBaseline, isBaselineDrifted, isDesignStale, isPublicBuild, isTerminalJob, latestVerdicts, matchUpstreamStory, normalizeImportPath, parseAttemptRowId, probeCredentials, reencryptCredentials, resolveDesigns, worstStatus };
48
+ export { AiBudgetAlertModel, type AiBudgetAlertTables, type AiUsageInput, AiUsageModel, type AiUsageTables, type AttemptClaim, type AttemptLogRecorder, BASELINE_ARCHIVE_FORMAT, BASELINE_ARCHIVE_LIMITS, BASELINE_ARCHIVE_VERSION, BaselineApprovalConflict, BaselineArchiveError, type BaselineExportOptions, type BaselineImportResult, type BaselineManifest, type BaselineManifestEntry, BaselineModel, type BaselineOriginReader, type BaselineStatus, BaselineTransferModel, BaselineWriteConflict, type BuildChangeset, type BuildComponentInput, BuildComponentModel, type BuildComponentTables, type BuildCreateInput, type BuildListFilter, BuildModel, BuildReviewModel, type BuildReviewTables, CaptureAttemptModel, type CaptureAttemptTables, CaptureJobModel, type CaptureJobTables, CaptureLogModel, type CaptureLogTables, CaptureShardModel, type CaptureShardTables, type ChangedComponent, type Changeset, type ChangesetComponent, type ChannelValidation, type CommentCreateInput, CommentModel, type ComponentHistoryRow, type ComponentPresence, ConnectionModel, type ConnectionTables, ContentRefModel, type CredentialProbe, DESIGN_TTL_MS, type DesignChange, type DesignChangeKind, DesignCredentialModel, type DesignCredentialStatus, type DesignCredentialTables, DesignModel, DesignNodeModel, type DesignNodeTables, type DesignResolution, type DesignSource, type DesignTables, type InheritedRatio, InsightModel, type InsightResultInput, type InsightStartInput, type InsightStartResult, type InsightTables, LabelModel, MemberModel, NO_BASELINE, type NewCaptureJob, type NotificationChannelCreateInput, NotificationChannelModel, type NotificationChannelTables, type NotificationSubscriptionInput, NotificationSubscriptionModel, type NotificationSubscriptionTables, PROJECT_SCOPE, PUBLIC_ORIGIN_KEY, type PackageUsageInput, PackageUsageModel, type PackageUsageTables, type ProjectCreateInput, ProjectGroupMappingModel, ProjectModel, type PublicOriginOptions, type PublicOriginResolver, type PublicOriginSource, RECENT_BUILDS_FOR_INHERITED_RATIO, type ReencryptResult, type RefreshOptions, type ResolvedPublicOrigin, type ReviewStatusInput, SiteSettingsModel, type SiteSettingsTables, type SnapshotCreateInput, SnapshotModel, type StoredPublicOrigin, TERMINAL_JOB_STATUSES, TokenModel, type UnreadableCredential, type UpstreamStory, UserModel, type WebhookCreateInput, WebhookModel, acceptPendingWithoutWork, attemptRowId, averageInheritedRatio, baselineStatus, changesetOf, componentHistory, componentPresence, computeChangeset, createPublicOriginResolver, credentialDaysLeft, deriveReviewStatus, designChange, emitAttemptLog, findChangesetBaseline, isBaselineDrifted, isDesignStale, isPublicBuild, isTerminalJob, latestVerdicts, matchUpstreamStory, normalizeImportPath, parseAttemptRowId, probeCredentials, reencryptCredentials, resolveBaselineOrigin, resolveDesigns, worstStatus };