tinybeeai 0.0.0-stage → 0.16.1

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 (1034) hide show
  1. package/.railway/railway.ts +83 -0
  2. package/.railway/tsconfig.json +13 -0
  3. package/AGENTS.md +102 -0
  4. package/Dockerfile +108 -0
  5. package/LICENSE +21 -0
  6. package/README.md +275 -2
  7. package/bin/localdost.js +29 -0
  8. package/bin/tinybeeai.js +28 -0
  9. package/compose.yml +63 -0
  10. package/demo/payloads/ci_failure.json +46 -0
  11. package/demo/payloads/outage.json +18 -0
  12. package/demo/payloads/pr_comment_edited.json +50 -0
  13. package/demo/payloads/pr_merged.json +80 -0
  14. package/demo/payloads/pr_opened.json +69 -0
  15. package/demo/payloads/pr_synchronize.json +69 -0
  16. package/demo/payloads/ticket_created.json +138 -0
  17. package/demo/sample-app/playwright.config.ts +20 -0
  18. package/demo/sample-app/server.ts +163 -0
  19. package/demo/sample-app/tests/checkout.spec.ts +13 -0
  20. package/demo/sample-app/tests/smoke.spec.ts +8 -0
  21. package/dist/agent/approval-retries.js +59 -0
  22. package/dist/agent/approval-retries.js.map +1 -0
  23. package/dist/agent/approvals.js +390 -0
  24. package/dist/agent/approvals.js.map +1 -0
  25. package/dist/agent/chat-bridge.js +154 -0
  26. package/dist/agent/chat-bridge.js.map +1 -0
  27. package/dist/agent/chat-lead.js +475 -0
  28. package/dist/agent/chat-lead.js.map +1 -0
  29. package/dist/agent/chat-loop.js +106 -0
  30. package/dist/agent/chat-loop.js.map +1 -0
  31. package/dist/agent/chat-mcp.js +49 -0
  32. package/dist/agent/chat-mcp.js.map +1 -0
  33. package/dist/agent/chat-tool-blocks.js +453 -0
  34. package/dist/agent/chat-tool-blocks.js.map +1 -0
  35. package/dist/agent/chat-view.js +94 -0
  36. package/dist/agent/chat-view.js.map +1 -0
  37. package/dist/agent/chat-views.js +781 -0
  38. package/dist/agent/chat-views.js.map +1 -0
  39. package/dist/agent/chat.js +1703 -0
  40. package/dist/agent/chat.js.map +1 -0
  41. package/dist/agent/destinations.js +150 -0
  42. package/dist/agent/destinations.js.map +1 -0
  43. package/dist/agent/llm-cli.js +451 -0
  44. package/dist/agent/llm-cli.js.map +1 -0
  45. package/dist/agent/llm-codex.js +493 -0
  46. package/dist/agent/llm-codex.js.map +1 -0
  47. package/dist/agent/llm-openai.js +211 -0
  48. package/dist/agent/llm-openai.js.map +1 -0
  49. package/dist/agent/llm.js +1464 -0
  50. package/dist/agent/llm.js.map +1 -0
  51. package/dist/agent/memory.js +33 -0
  52. package/dist/agent/memory.js.map +1 -0
  53. package/dist/agent/mock-views.js +93 -0
  54. package/dist/agent/mock-views.js.map +1 -0
  55. package/dist/agent/model-availability.js +207 -0
  56. package/dist/agent/model-availability.js.map +1 -0
  57. package/dist/agent/model-errors.js +188 -0
  58. package/dist/agent/model-errors.js.map +1 -0
  59. package/dist/agent/model-guard.js +311 -0
  60. package/dist/agent/model-guard.js.map +1 -0
  61. package/dist/agent/prompts.js +374 -0
  62. package/dist/agent/prompts.js.map +1 -0
  63. package/dist/agent/qa-lenses/qa-auth.md +32 -0
  64. package/dist/agent/qa-lenses/qa-check-then-act.md +33 -0
  65. package/dist/agent/qa-lenses/qa-control-has-no-effect.md +32 -0
  66. package/dist/agent/qa-lenses/qa-dates.md +31 -0
  67. package/dist/agent/qa-lenses/qa-double-submit.md +34 -0
  68. package/dist/agent/qa-lenses/qa-feature-flag.md +29 -0
  69. package/dist/agent/qa-lenses/qa-migration.md +35 -0
  70. package/dist/agent/qa-lenses/qa-money.md +38 -0
  71. package/dist/agent/qa-lenses/qa-response-shape-break.md +33 -0
  72. package/dist/agent/qa-lenses/qa-validation.md +29 -0
  73. package/dist/agent/qa-prompts.js +660 -0
  74. package/dist/agent/qa-prompts.js.map +1 -0
  75. package/dist/agent/reasoning.js +55 -0
  76. package/dist/agent/reasoning.js.map +1 -0
  77. package/dist/agent/redact.js +48 -0
  78. package/dist/agent/redact.js.map +1 -0
  79. package/dist/agent/rules.js +927 -0
  80. package/dist/agent/rules.js.map +1 -0
  81. package/dist/agent/runs.js +440 -0
  82. package/dist/agent/runs.js.map +1 -0
  83. package/dist/agent/send-retry.js +62 -0
  84. package/dist/agent/send-retry.js.map +1 -0
  85. package/dist/agent/team-notes.js +288 -0
  86. package/dist/agent/team-notes.js.map +1 -0
  87. package/dist/agent/token-meter.js +31 -0
  88. package/dist/agent/token-meter.js.map +1 -0
  89. package/dist/agent/triage.js +506 -0
  90. package/dist/agent/triage.js.map +1 -0
  91. package/dist/api.js +1047 -0
  92. package/dist/api.js.map +1 -0
  93. package/dist/approval-targets.js +107 -0
  94. package/dist/approval-targets.js.map +1 -0
  95. package/dist/bee/cloudflared.js +108 -0
  96. package/dist/bee/cloudflared.js.map +1 -0
  97. package/dist/bee/health.js +99 -0
  98. package/dist/bee/health.js.map +1 -0
  99. package/dist/bee/hive-client.js +75 -0
  100. package/dist/bee/hive-client.js.map +1 -0
  101. package/dist/bee/identity.js +39 -0
  102. package/dist/bee/identity.js.map +1 -0
  103. package/dist/bee/models.js +510 -0
  104. package/dist/bee/models.js.map +1 -0
  105. package/dist/bee/pairing.js +351 -0
  106. package/dist/bee/pairing.js.map +1 -0
  107. package/dist/bee/relay-client.js +50 -0
  108. package/dist/bee/relay-client.js.map +1 -0
  109. package/dist/bee/routes.js +214 -0
  110. package/dist/bee/routes.js.map +1 -0
  111. package/dist/bee/setup-page.js +223 -0
  112. package/dist/bee/setup-page.js.map +1 -0
  113. package/dist/bee/state.js +41 -0
  114. package/dist/bee/state.js.map +1 -0
  115. package/dist/bee/status.js +117 -0
  116. package/dist/bee/status.js.map +1 -0
  117. package/dist/bee/tunnel-manager.js +245 -0
  118. package/dist/bee/tunnel-manager.js.map +1 -0
  119. package/dist/bee/updater.js +268 -0
  120. package/dist/bee/updater.js.map +1 -0
  121. package/dist/boot.js +41 -0
  122. package/dist/boot.js.map +1 -0
  123. package/dist/call/index.js +145 -0
  124. package/dist/call/index.js.map +1 -0
  125. package/dist/case-folders.js +294 -0
  126. package/dist/case-folders.js.map +1 -0
  127. package/dist/cases.js +554 -0
  128. package/dist/cases.js.map +1 -0
  129. package/dist/chat-blocks.js +709 -0
  130. package/dist/chat-blocks.js.map +1 -0
  131. package/dist/chat-parse-util.js +38 -0
  132. package/dist/chat-parse-util.js.map +1 -0
  133. package/dist/chat-results.js +96 -0
  134. package/dist/chat-results.js.map +1 -0
  135. package/dist/chat-stats.js +193 -0
  136. package/dist/chat-stats.js.map +1 -0
  137. package/dist/chat-view-specs.js +186 -0
  138. package/dist/chat-view-specs.js.map +1 -0
  139. package/dist/cli/doctor-ops.js +361 -0
  140. package/dist/cli/doctor-ops.js.map +1 -0
  141. package/dist/cli/doctor.js +289 -0
  142. package/dist/cli/doctor.js.map +1 -0
  143. package/dist/cli/dogfood.js +70 -0
  144. package/dist/cli/dogfood.js.map +1 -0
  145. package/dist/cli/env-file.js +34 -0
  146. package/dist/cli/env-file.js.map +1 -0
  147. package/dist/cli/eval-chat-cases.js +359 -0
  148. package/dist/cli/eval-chat-cases.js.map +1 -0
  149. package/dist/cli/eval-chat-results.js +85 -0
  150. package/dist/cli/eval-chat-results.js.map +1 -0
  151. package/dist/cli/eval-chat.js +508 -0
  152. package/dist/cli/eval-chat.js.map +1 -0
  153. package/dist/cli/eval-designer.js +67 -0
  154. package/dist/cli/eval-designer.js.map +1 -0
  155. package/dist/cli/eval-qa-review.js +284 -0
  156. package/dist/cli/eval-qa-review.js.map +1 -0
  157. package/dist/cli/golden-export.js +35 -0
  158. package/dist/cli/golden-export.js.map +1 -0
  159. package/dist/cli/index.js +90 -0
  160. package/dist/cli/index.js.map +1 -0
  161. package/dist/cli/init.js +746 -0
  162. package/dist/cli/init.js.map +1 -0
  163. package/dist/cli/scan-repo.js +199 -0
  164. package/dist/cli/scan-repo.js.map +1 -0
  165. package/dist/cli/seed.js +108 -0
  166. package/dist/cli/seed.js.map +1 -0
  167. package/dist/cli/tinybee.js +247 -0
  168. package/dist/cli/tinybee.js.map +1 -0
  169. package/dist/config.js +138 -0
  170. package/dist/config.js.map +1 -0
  171. package/dist/connect/aivision-local.js +833 -0
  172. package/dist/connect/aivision-local.js.map +1 -0
  173. package/dist/connect/aivision-token.js +84 -0
  174. package/dist/connect/aivision-token.js.map +1 -0
  175. package/dist/connect/crypto.js +65 -0
  176. package/dist/connect/crypto.js.map +1 -0
  177. package/dist/connect/deps.js +110 -0
  178. package/dist/connect/deps.js.map +1 -0
  179. package/dist/connect/engines.js +144 -0
  180. package/dist/connect/engines.js.map +1 -0
  181. package/dist/connect/github-access.js +74 -0
  182. package/dist/connect/github-access.js.map +1 -0
  183. package/dist/connect/github-app.js +129 -0
  184. package/dist/connect/github-app.js.map +1 -0
  185. package/dist/connect/index.js +9 -0
  186. package/dist/connect/index.js.map +1 -0
  187. package/dist/connect/model-choices.js +201 -0
  188. package/dist/connect/model-choices.js.map +1 -0
  189. package/dist/connect/providers.js +900 -0
  190. package/dist/connect/providers.js.map +1 -0
  191. package/dist/connect/readiness.js +232 -0
  192. package/dist/connect/readiness.js.map +1 -0
  193. package/dist/connect/redact.js +16 -0
  194. package/dist/connect/redact.js.map +1 -0
  195. package/dist/connect/registry.js +406 -0
  196. package/dist/connect/registry.js.map +1 -0
  197. package/dist/connect/store.js +283 -0
  198. package/dist/connect/store.js.map +1 -0
  199. package/dist/connect/tunnel.js +134 -0
  200. package/dist/connect/tunnel.js.map +1 -0
  201. package/dist/connect/types.js +8 -0
  202. package/dist/connect/types.js.map +1 -0
  203. package/dist/connections/index.js +5 -0
  204. package/dist/connections/index.js.map +1 -0
  205. package/dist/connections/manager.js +223 -0
  206. package/dist/connections/manager.js.map +1 -0
  207. package/dist/connections/presets.js +264 -0
  208. package/dist/connections/presets.js.map +1 -0
  209. package/dist/connections/store.js +132 -0
  210. package/dist/connections/store.js.map +1 -0
  211. package/dist/connections/tools.js +206 -0
  212. package/dist/connections/tools.js.map +1 -0
  213. package/dist/db-schema.js +355 -0
  214. package/dist/db-schema.js.map +1 -0
  215. package/dist/db.js +379 -0
  216. package/dist/db.js.map +1 -0
  217. package/dist/delivery.js +49 -0
  218. package/dist/delivery.js.map +1 -0
  219. package/dist/deploy-wait.js +701 -0
  220. package/dist/deploy-wait.js.map +1 -0
  221. package/dist/disk.js +243 -0
  222. package/dist/disk.js.map +1 -0
  223. package/dist/dot-health.js +966 -0
  224. package/dist/dot-health.js.map +1 -0
  225. package/dist/dot-remove.js +246 -0
  226. package/dist/dot-remove.js.map +1 -0
  227. package/dist/events.js +38 -0
  228. package/dist/events.js.map +1 -0
  229. package/dist/evidence-pack.js +423 -0
  230. package/dist/evidence-pack.js.map +1 -0
  231. package/dist/flows/answers.js +289 -0
  232. package/dist/flows/answers.js.map +1 -0
  233. package/dist/flows/change.js +811 -0
  234. package/dist/flows/change.js.map +1 -0
  235. package/dist/flows/checkStatus.js +524 -0
  236. package/dist/flows/checkStatus.js.map +1 -0
  237. package/dist/flows/ci.js +236 -0
  238. package/dist/flows/ci.js.map +1 -0
  239. package/dist/flows/ciFailure.js +76 -0
  240. package/dist/flows/ciFailure.js.map +1 -0
  241. package/dist/flows/common.js +522 -0
  242. package/dist/flows/common.js.map +1 -0
  243. package/dist/flows/default-branch.js +29 -0
  244. package/dist/flows/default-branch.js.map +1 -0
  245. package/dist/flows/defectDraft.js +447 -0
  246. package/dist/flows/defectDraft.js.map +1 -0
  247. package/dist/flows/defects.js +623 -0
  248. package/dist/flows/defects.js.map +1 -0
  249. package/dist/flows/digest.js +295 -0
  250. package/dist/flows/digest.js.map +1 -0
  251. package/dist/flows/impact.js +82 -0
  252. package/dist/flows/impact.js.map +1 -0
  253. package/dist/flows/index.js +23 -0
  254. package/dist/flows/index.js.map +1 -0
  255. package/dist/flows/intent-sources.js +72 -0
  256. package/dist/flows/intent-sources.js.map +1 -0
  257. package/dist/flows/mergeCases.js +169 -0
  258. package/dist/flows/mergeCases.js.map +1 -0
  259. package/dist/flows/nightlyRun.js +82 -0
  260. package/dist/flows/nightlyRun.js.map +1 -0
  261. package/dist/flows/outage.js +64 -0
  262. package/dist/flows/outage.js.map +1 -0
  263. package/dist/flows/postMerge.js +5 -0
  264. package/dist/flows/postMerge.js.map +1 -0
  265. package/dist/flows/prCheck.js +5 -0
  266. package/dist/flows/prCheck.js.map +1 -0
  267. package/dist/flows/prTarget.js +66 -0
  268. package/dist/flows/prTarget.js.map +1 -0
  269. package/dist/flows/qa.js +363 -0
  270. package/dist/flows/qa.js.map +1 -0
  271. package/dist/flows/questions.js +160 -0
  272. package/dist/flows/questions.js.map +1 -0
  273. package/dist/flows/recovery.js +64 -0
  274. package/dist/flows/recovery.js.map +1 -0
  275. package/dist/flows/rerun.js +50 -0
  276. package/dist/flows/rerun.js.map +1 -0
  277. package/dist/flows/testDesign.js +294 -0
  278. package/dist/flows/testDesign.js.map +1 -0
  279. package/dist/flows/testDesignJob.js +46 -0
  280. package/dist/flows/testDesignJob.js.map +1 -0
  281. package/dist/flows/testRepo.js +228 -0
  282. package/dist/flows/testRepo.js.map +1 -0
  283. package/dist/flows/testSavings.js +381 -0
  284. package/dist/flows/testSavings.js.map +1 -0
  285. package/dist/flows/testStatus.js +343 -0
  286. package/dist/flows/testStatus.js.map +1 -0
  287. package/dist/flows/ticketContext.js +425 -0
  288. package/dist/flows/ticketContext.js.map +1 -0
  289. package/dist/flows/ticketReview.js +249 -0
  290. package/dist/flows/ticketReview.js.map +1 -0
  291. package/dist/flows/ticks.js +73 -0
  292. package/dist/flows/ticks.js.map +1 -0
  293. package/dist/hive/admin.js +122 -0
  294. package/dist/hive/admin.js.map +1 -0
  295. package/dist/hive/auth.js +130 -0
  296. package/dist/hive/auth.js.map +1 -0
  297. package/dist/hive/billing.js +278 -0
  298. package/dist/hive/billing.js.map +1 -0
  299. package/dist/hive/config.js +63 -0
  300. package/dist/hive/config.js.map +1 -0
  301. package/dist/hive/db.js +186 -0
  302. package/dist/hive/db.js.map +1 -0
  303. package/dist/hive/embed.js +76 -0
  304. package/dist/hive/embed.js.map +1 -0
  305. package/dist/hive/errors.js +17 -0
  306. package/dist/hive/errors.js.map +1 -0
  307. package/dist/hive/google.js +75 -0
  308. package/dist/hive/google.js.map +1 -0
  309. package/dist/hive/index.js +25 -0
  310. package/dist/hive/index.js.map +1 -0
  311. package/dist/hive/jwt.js +57 -0
  312. package/dist/hive/jwt.js.map +1 -0
  313. package/dist/hive/keys.js +61 -0
  314. package/dist/hive/keys.js.map +1 -0
  315. package/dist/hive/mail.js +27 -0
  316. package/dist/hive/mail.js.map +1 -0
  317. package/dist/hive/native-push.js +255 -0
  318. package/dist/hive/native-push.js.map +1 -0
  319. package/dist/hive/pairing.js +342 -0
  320. package/dist/hive/pairing.js.map +1 -0
  321. package/dist/hive/presence.js +121 -0
  322. package/dist/hive/presence.js.map +1 -0
  323. package/dist/hive/push.js +185 -0
  324. package/dist/hive/push.js.map +1 -0
  325. package/dist/hive/relay.js +205 -0
  326. package/dist/hive/relay.js.map +1 -0
  327. package/dist/hive/routes.js +228 -0
  328. package/dist/hive/routes.js.map +1 -0
  329. package/dist/hive/server.js +12 -0
  330. package/dist/hive/server.js.map +1 -0
  331. package/dist/hive/session.js +28 -0
  332. package/dist/hive/session.js.map +1 -0
  333. package/dist/hive/tenants.js +287 -0
  334. package/dist/hive/tenants.js.map +1 -0
  335. package/dist/hive/tunnel/cloudflare.js +160 -0
  336. package/dist/hive/tunnel/cloudflare.js.map +1 -0
  337. package/dist/hive/tunnel/mock.js +52 -0
  338. package/dist/hive/tunnel/mock.js.map +1 -0
  339. package/dist/hive/tunnel/provider.js +19 -0
  340. package/dist/hive/tunnel/provider.js.map +1 -0
  341. package/dist/hive/updates.js +61 -0
  342. package/dist/hive/updates.js.map +1 -0
  343. package/dist/http-error.js +11 -0
  344. package/dist/http-error.js.map +1 -0
  345. package/dist/impact/classify.js +226 -0
  346. package/dist/impact/classify.js.map +1 -0
  347. package/dist/impact/find.js +259 -0
  348. package/dist/impact/find.js.map +1 -0
  349. package/dist/impact/pr.js +54 -0
  350. package/dist/impact/pr.js.map +1 -0
  351. package/dist/impact/store.js +365 -0
  352. package/dist/impact/store.js.map +1 -0
  353. package/dist/impact/text.js +158 -0
  354. package/dist/impact/text.js.map +1 -0
  355. package/dist/index.js +288 -0
  356. package/dist/index.js.map +1 -0
  357. package/dist/integrations/adf.js +397 -0
  358. package/dist/integrations/adf.js.map +1 -0
  359. package/dist/integrations/bot-marker.js +103 -0
  360. package/dist/integrations/bot-marker.js.map +1 -0
  361. package/dist/integrations/github-issues.js +705 -0
  362. package/dist/integrations/github-issues.js.map +1 -0
  363. package/dist/integrations/github.js +1284 -0
  364. package/dist/integrations/github.js.map +1 -0
  365. package/dist/integrations/issue-create.js +60 -0
  366. package/dist/integrations/issue-create.js.map +1 -0
  367. package/dist/integrations/jira.js +279 -0
  368. package/dist/integrations/jira.js.map +1 -0
  369. package/dist/integrations/linear.js +273 -0
  370. package/dist/integrations/linear.js.map +1 -0
  371. package/dist/integrations/own-identity-warm.js +47 -0
  372. package/dist/integrations/own-identity-warm.js.map +1 -0
  373. package/dist/integrations/own-identity.js +39 -0
  374. package/dist/integrations/own-identity.js.map +1 -0
  375. package/dist/integrations/status-change.js +42 -0
  376. package/dist/integrations/status-change.js.map +1 -0
  377. package/dist/lead-defects.js +202 -0
  378. package/dist/lead-defects.js.map +1 -0
  379. package/dist/lead-digest.js +333 -0
  380. package/dist/lead-digest.js.map +1 -0
  381. package/dist/lead-release.js +286 -0
  382. package/dist/lead-release.js.map +1 -0
  383. package/dist/lead.js +328 -0
  384. package/dist/lead.js.map +1 -0
  385. package/dist/legacy-names.js +51 -0
  386. package/dist/legacy-names.js.map +1 -0
  387. package/dist/limits.js +44 -0
  388. package/dist/limits.js.map +1 -0
  389. package/dist/link-trust.js +224 -0
  390. package/dist/link-trust.js.map +1 -0
  391. package/dist/links.js +219 -0
  392. package/dist/links.js.map +1 -0
  393. package/dist/loopback.js +35 -0
  394. package/dist/loopback.js.map +1 -0
  395. package/dist/model-cap.js +60 -0
  396. package/dist/model-cap.js.map +1 -0
  397. package/dist/model-usage.js +173 -0
  398. package/dist/model-usage.js.map +1 -0
  399. package/dist/monitor/backfill.js +39 -0
  400. package/dist/monitor/backfill.js.map +1 -0
  401. package/dist/monitor/browser-probe.js +198 -0
  402. package/dist/monitor/browser-probe.js.map +1 -0
  403. package/dist/monitor/catch-up.js +31 -0
  404. package/dist/monitor/catch-up.js.map +1 -0
  405. package/dist/monitor/pollers.js +1606 -0
  406. package/dist/monitor/pollers.js.map +1 -0
  407. package/dist/monitor/probes.js +178 -0
  408. package/dist/monitor/probes.js.map +1 -0
  409. package/dist/monitor/self-health.js +228 -0
  410. package/dist/monitor/self-health.js.map +1 -0
  411. package/dist/monitor/statuspage.js +105 -0
  412. package/dist/monitor/statuspage.js.map +1 -0
  413. package/dist/nightly-scheduler.js +127 -0
  414. package/dist/nightly-scheduler.js.map +1 -0
  415. package/dist/nightly.js +141 -0
  416. package/dist/nightly.js.map +1 -0
  417. package/dist/notify/headline.js +114 -0
  418. package/dist/notify/headline.js.map +1 -0
  419. package/dist/notify/push.js +174 -0
  420. package/dist/notify/push.js.map +1 -0
  421. package/dist/object-cards.js +585 -0
  422. package/dist/object-cards.js.map +1 -0
  423. package/dist/object-links.js +47 -0
  424. package/dist/object-links.js.map +1 -0
  425. package/dist/onboarding-checks.js +141 -0
  426. package/dist/onboarding-checks.js.map +1 -0
  427. package/dist/onboarding.js +401 -0
  428. package/dist/onboarding.js.map +1 -0
  429. package/dist/path-filters.js +62 -0
  430. package/dist/path-filters.js.map +1 -0
  431. package/dist/phone/alerts.js +67 -0
  432. package/dist/phone/alerts.js.map +1 -0
  433. package/dist/phone/auth.js +240 -0
  434. package/dist/phone/auth.js.map +1 -0
  435. package/dist/phone/pairing.js +442 -0
  436. package/dist/phone/pairing.js.map +1 -0
  437. package/dist/phone/prefs.js +27 -0
  438. package/dist/phone/prefs.js.map +1 -0
  439. package/dist/phone/tailscale.js +161 -0
  440. package/dist/phone/tailscale.js.map +1 -0
  441. package/dist/pr-scope.js +441 -0
  442. package/dist/pr-scope.js.map +1 -0
  443. package/dist/proc.js +156 -0
  444. package/dist/proc.js.map +1 -0
  445. package/dist/profile/cache.js +108 -0
  446. package/dist/profile/cache.js.map +1 -0
  447. package/dist/profile/ci.js +216 -0
  448. package/dist/profile/ci.js.map +1 -0
  449. package/dist/profile/index.js +8 -0
  450. package/dist/profile/index.js.map +1 -0
  451. package/dist/profile/job.js +135 -0
  452. package/dist/profile/job.js.map +1 -0
  453. package/dist/profile/queries/go-tags.scm +47 -0
  454. package/dist/profile/queries/java-tags.scm +25 -0
  455. package/dist/profile/queries/javascript-tags.scm +104 -0
  456. package/dist/profile/queries/python-tags.scm +19 -0
  457. package/dist/profile/queries/typescript-tags.scm +28 -0
  458. package/dist/profile/scan-thread.js +42 -0
  459. package/dist/profile/scan-thread.js.map +1 -0
  460. package/dist/profile/scan-worker.js +16 -0
  461. package/dist/profile/scan-worker.js.map +1 -0
  462. package/dist/profile/scan.js +351 -0
  463. package/dist/profile/scan.js.map +1 -0
  464. package/dist/profile/stack.js +528 -0
  465. package/dist/profile/stack.js.map +1 -0
  466. package/dist/profile/store.js +35 -0
  467. package/dist/profile/store.js.map +1 -0
  468. package/dist/profile/tests.js +399 -0
  469. package/dist/profile/tests.js.map +1 -0
  470. package/dist/queue.js +350 -0
  471. package/dist/queue.js.map +1 -0
  472. package/dist/refs.js +756 -0
  473. package/dist/refs.js.map +1 -0
  474. package/dist/release-notes.js +272 -0
  475. package/dist/release-notes.js.map +1 -0
  476. package/dist/reports/build.js +243 -0
  477. package/dist/reports/build.js.map +1 -0
  478. package/dist/reports/index.js +211 -0
  479. package/dist/reports/index.js.map +1 -0
  480. package/dist/reports/store.js +150 -0
  481. package/dist/reports/store.js.map +1 -0
  482. package/dist/reports/ticket-titles.js +124 -0
  483. package/dist/reports/ticket-titles.js.map +1 -0
  484. package/dist/reports/trace-map.js +1278 -0
  485. package/dist/reports/trace-map.js.map +1 -0
  486. package/dist/reports/traceability.js +422 -0
  487. package/dist/reports/traceability.js.map +1 -0
  488. package/dist/repos/mirror.js +356 -0
  489. package/dist/repos/mirror.js.map +1 -0
  490. package/dist/repos-github.js +108 -0
  491. package/dist/repos-github.js.map +1 -0
  492. package/dist/repos.js +891 -0
  493. package/dist/repos.js.map +1 -0
  494. package/dist/review/backend-anthropic.js +90 -0
  495. package/dist/review/backend-anthropic.js.map +1 -0
  496. package/dist/review/backend-cli.js +248 -0
  497. package/dist/review/backend-cli.js.map +1 -0
  498. package/dist/review/backend-codex.js +81 -0
  499. package/dist/review/backend-codex.js.map +1 -0
  500. package/dist/review/backend-mock.js +686 -0
  501. package/dist/review/backend-mock.js.map +1 -0
  502. package/dist/review/backend-only.js +168 -0
  503. package/dist/review/backend-only.js.map +1 -0
  504. package/dist/review/backend.js +105 -0
  505. package/dist/review/backend.js.map +1 -0
  506. package/dist/review/baseline/render-v1.js +483 -0
  507. package/dist/review/baseline/render-v1.js.map +1 -0
  508. package/dist/review/change-summary.js +197 -0
  509. package/dist/review/change-summary.js.map +1 -0
  510. package/dist/review/changelog.js +40 -0
  511. package/dist/review/changelog.js.map +1 -0
  512. package/dist/review/check.js +494 -0
  513. package/dist/review/check.js.map +1 -0
  514. package/dist/review/checkout.js +185 -0
  515. package/dist/review/checkout.js.map +1 -0
  516. package/dist/review/classify.js +178 -0
  517. package/dist/review/classify.js.map +1 -0
  518. package/dist/review/coverage.js +347 -0
  519. package/dist/review/coverage.js.map +1 -0
  520. package/dist/review/decision-eval.js +121 -0
  521. package/dist/review/decision-eval.js.map +1 -0
  522. package/dist/review/deliver.js +104 -0
  523. package/dist/review/deliver.js.map +1 -0
  524. package/dist/review/designer-eval.js +280 -0
  525. package/dist/review/designer-eval.js.map +1 -0
  526. package/dist/review/dogfood-digest.js +136 -0
  527. package/dist/review/dogfood-digest.js.map +1 -0
  528. package/dist/review/dogfood-eval.js +486 -0
  529. package/dist/review/dogfood-eval.js.map +1 -0
  530. package/dist/review/environment.js +109 -0
  531. package/dist/review/environment.js.map +1 -0
  532. package/dist/review/eval.js +405 -0
  533. package/dist/review/eval.js.map +1 -0
  534. package/dist/review/glob.js +110 -0
  535. package/dist/review/glob.js.map +1 -0
  536. package/dist/review/golden-export.js +219 -0
  537. package/dist/review/golden-export.js.map +1 -0
  538. package/dist/review/impact.js +406 -0
  539. package/dist/review/impact.js.map +1 -0
  540. package/dist/review/imports.js +542 -0
  541. package/dist/review/imports.js.map +1 -0
  542. package/dist/review/index.js +512 -0
  543. package/dist/review/index.js.map +1 -0
  544. package/dist/review/intent.js +128 -0
  545. package/dist/review/intent.js.map +1 -0
  546. package/dist/review/lenses.js +167 -0
  547. package/dist/review/lenses.js.map +1 -0
  548. package/dist/review/linked-tickets.js +293 -0
  549. package/dist/review/linked-tickets.js.map +1 -0
  550. package/dist/review/merge.js +370 -0
  551. package/dist/review/merge.js.map +1 -0
  552. package/dist/review/on-demand.js +218 -0
  553. package/dist/review/on-demand.js.map +1 -0
  554. package/dist/review/prompt-eval.js +299 -0
  555. package/dist/review/prompt-eval.js.map +1 -0
  556. package/dist/review/prompt-variants.js +37 -0
  557. package/dist/review/prompt-variants.js.map +1 -0
  558. package/dist/review/readability-eval.js +217 -0
  559. package/dist/review/readability-eval.js.map +1 -0
  560. package/dist/review/readability.js +295 -0
  561. package/dist/review/readability.js.map +1 -0
  562. package/dist/review/render.js +2409 -0
  563. package/dist/review/render.js.map +1 -0
  564. package/dist/review/repo.js +194 -0
  565. package/dist/review/repo.js.map +1 -0
  566. package/dist/review/report-plan.js +90 -0
  567. package/dist/review/report-plan.js.map +1 -0
  568. package/dist/review/routes.js +195 -0
  569. package/dist/review/routes.js.map +1 -0
  570. package/dist/review/run-summary.js +34 -0
  571. package/dist/review/run-summary.js.map +1 -0
  572. package/dist/review/run.js +245 -0
  573. package/dist/review/run.js.map +1 -0
  574. package/dist/review/scope.js +454 -0
  575. package/dist/review/scope.js.map +1 -0
  576. package/dist/review/security.js +432 -0
  577. package/dist/review/security.js.map +1 -0
  578. package/dist/review/signals.js +550 -0
  579. package/dist/review/signals.js.map +1 -0
  580. package/dist/review/specs.js +150 -0
  581. package/dist/review/specs.js.map +1 -0
  582. package/dist/review/ste.js +133 -0
  583. package/dist/review/ste.js.map +1 -0
  584. package/dist/review/test-repo-file.js +18 -0
  585. package/dist/review/test-repo-file.js.map +1 -0
  586. package/dist/review/test-repo-lines.js +53 -0
  587. package/dist/review/test-repo-lines.js.map +1 -0
  588. package/dist/review/ticket-on-demand.js +232 -0
  589. package/dist/review/ticket-on-demand.js.map +1 -0
  590. package/dist/review/yaml.js +298 -0
  591. package/dist/review/yaml.js.map +1 -0
  592. package/dist/room.js +361 -0
  593. package/dist/room.js.map +1 -0
  594. package/dist/routes/activity.js +219 -0
  595. package/dist/routes/activity.js.map +1 -0
  596. package/dist/routes/call.js +29 -0
  597. package/dist/routes/call.js.map +1 -0
  598. package/dist/routes/cards.js +40 -0
  599. package/dist/routes/cards.js.map +1 -0
  600. package/dist/routes/cases.js +133 -0
  601. package/dist/routes/cases.js.map +1 -0
  602. package/dist/routes/connect.js +268 -0
  603. package/dist/routes/connect.js.map +1 -0
  604. package/dist/routes/connection-presets.js +32 -0
  605. package/dist/routes/connection-presets.js.map +1 -0
  606. package/dist/routes/connections.js +177 -0
  607. package/dist/routes/connections.js.map +1 -0
  608. package/dist/routes/disk.js +19 -0
  609. package/dist/routes/disk.js.map +1 -0
  610. package/dist/routes/docs.js +71 -0
  611. package/dist/routes/docs.js.map +1 -0
  612. package/dist/routes/dot-suggest.js +1002 -0
  613. package/dist/routes/dot-suggest.js.map +1 -0
  614. package/dist/routes/evidence-pack.js +16 -0
  615. package/dist/routes/evidence-pack.js.map +1 -0
  616. package/dist/routes/health.js +121 -0
  617. package/dist/routes/health.js.map +1 -0
  618. package/dist/routes/impact.js +48 -0
  619. package/dist/routes/impact.js.map +1 -0
  620. package/dist/routes/lead.js +50 -0
  621. package/dist/routes/lead.js.map +1 -0
  622. package/dist/routes/links.js +13 -0
  623. package/dist/routes/links.js.map +1 -0
  624. package/dist/routes/markdown.js +62 -0
  625. package/dist/routes/markdown.js.map +1 -0
  626. package/dist/routes/onboarding.js +47 -0
  627. package/dist/routes/onboarding.js.map +1 -0
  628. package/dist/routes/phone.js +231 -0
  629. package/dist/routes/phone.js.map +1 -0
  630. package/dist/routes/release-notes.js +30 -0
  631. package/dist/routes/release-notes.js.map +1 -0
  632. package/dist/routes/reports.js +102 -0
  633. package/dist/routes/reports.js.map +1 -0
  634. package/dist/routes/repos.js +91 -0
  635. package/dist/routes/repos.js.map +1 -0
  636. package/dist/routes/review.js +283 -0
  637. package/dist/routes/review.js.map +1 -0
  638. package/dist/routes/roles.js +114 -0
  639. package/dist/routes/roles.js.map +1 -0
  640. package/dist/routes/room.js +21 -0
  641. package/dist/routes/room.js.map +1 -0
  642. package/dist/routes/runner.js +156 -0
  643. package/dist/routes/runner.js.map +1 -0
  644. package/dist/routes/runs.js +84 -0
  645. package/dist/routes/runs.js.map +1 -0
  646. package/dist/routes/setup.js +18 -0
  647. package/dist/routes/setup.js.map +1 -0
  648. package/dist/routes/test-runs.js +220 -0
  649. package/dist/routes/test-runs.js.map +1 -0
  650. package/dist/routes/ticket-status.js +17 -0
  651. package/dist/routes/ticket-status.js.map +1 -0
  652. package/dist/routes/traceability.js +143 -0
  653. package/dist/routes/traceability.js.map +1 -0
  654. package/dist/routes/true.js +142 -0
  655. package/dist/routes/true.js.map +1 -0
  656. package/dist/routes/updates.js +70 -0
  657. package/dist/routes/updates.js.map +1 -0
  658. package/dist/runner/adapters/index.js +12 -0
  659. package/dist/runner/adapters/index.js.map +1 -0
  660. package/dist/runner/adapters/playwright.js +68 -0
  661. package/dist/runner/adapters/playwright.js.map +1 -0
  662. package/dist/runner/aivision/cases.js +172 -0
  663. package/dist/runner/aivision/cases.js.map +1 -0
  664. package/dist/runner/aivision/cli.js +201 -0
  665. package/dist/runner/aivision/cli.js.map +1 -0
  666. package/dist/runner/aivision/index.js +281 -0
  667. package/dist/runner/aivision/index.js.map +1 -0
  668. package/dist/runner/aivision/server.js +394 -0
  669. package/dist/runner/aivision/server.js.map +1 -0
  670. package/dist/runner/aivision/shared.js +140 -0
  671. package/dist/runner/aivision/shared.js.map +1 -0
  672. package/dist/runner/artifact-cap.js +189 -0
  673. package/dist/runner/artifact-cap.js.map +1 -0
  674. package/dist/runner/artifacts.js +433 -0
  675. package/dist/runner/artifacts.js.map +1 -0
  676. package/dist/runner/command.js +564 -0
  677. package/dist/runner/command.js.map +1 -0
  678. package/dist/runner/copyfiles.js +221 -0
  679. package/dist/runner/copyfiles.js.map +1 -0
  680. package/dist/runner/engines.js +32 -0
  681. package/dist/runner/engines.js.map +1 -0
  682. package/dist/runner/evidence.js +114 -0
  683. package/dist/runner/evidence.js.map +1 -0
  684. package/dist/runner/host-env.js +160 -0
  685. package/dist/runner/host-env.js.map +1 -0
  686. package/dist/runner/index.js +1221 -0
  687. package/dist/runner/index.js.map +1 -0
  688. package/dist/runner/observe.js +603 -0
  689. package/dist/runner/observe.js.map +1 -0
  690. package/dist/runner/playwright-json.js +108 -0
  691. package/dist/runner/playwright-json.js.map +1 -0
  692. package/dist/runner/pwgen/exec.js +192 -0
  693. package/dist/runner/pwgen/exec.js.map +1 -0
  694. package/dist/runner/pwgen/explore.js +111 -0
  695. package/dist/runner/pwgen/explore.js.map +1 -0
  696. package/dist/runner/pwgen/index.js +423 -0
  697. package/dist/runner/pwgen/index.js.map +1 -0
  698. package/dist/runner/pwgen/propose.js +69 -0
  699. package/dist/runner/pwgen/propose.js.map +1 -0
  700. package/dist/runner/pwgen/source.js +632 -0
  701. package/dist/runner/pwgen/source.js.map +1 -0
  702. package/dist/runner/setup.js +222 -0
  703. package/dist/runner/setup.js.map +1 -0
  704. package/dist/runner/step-reporter.js +107 -0
  705. package/dist/runner/step-reporter.js.map +1 -0
  706. package/dist/runner/test-repo.js +326 -0
  707. package/dist/runner/test-repo.js.map +1 -0
  708. package/dist/runner/typed-value.js +46 -0
  709. package/dist/runner/typed-value.js.map +1 -0
  710. package/dist/runner/verify.js +133 -0
  711. package/dist/runner/verify.js.map +1 -0
  712. package/dist/runner/worktree.js +349 -0
  713. package/dist/runner/worktree.js.map +1 -0
  714. package/dist/sandbox.js +61 -0
  715. package/dist/sandbox.js.map +1 -0
  716. package/dist/server.js +262 -0
  717. package/dist/server.js.map +1 -0
  718. package/dist/shadow-week.js +126 -0
  719. package/dist/shadow-week.js.map +1 -0
  720. package/dist/shutdown.js +92 -0
  721. package/dist/shutdown.js.map +1 -0
  722. package/dist/slack/index.js +645 -0
  723. package/dist/slack/index.js.map +1 -0
  724. package/dist/stages/config.js +147 -0
  725. package/dist/stages/config.js.map +1 -0
  726. package/dist/stages/index.js +41 -0
  727. package/dist/stages/index.js.map +1 -0
  728. package/dist/suites.js +293 -0
  729. package/dist/suites.js.map +1 -0
  730. package/dist/target-url.js +116 -0
  731. package/dist/target-url.js.map +1 -0
  732. package/dist/test-runs.js +662 -0
  733. package/dist/test-runs.js.map +1 -0
  734. package/dist/ticket-keys.js +97 -0
  735. package/dist/ticket-keys.js.map +1 -0
  736. package/dist/ticket-supersede.js +105 -0
  737. package/dist/ticket-supersede.js.map +1 -0
  738. package/dist/tinybee/ed25519.js +99 -0
  739. package/dist/tinybee/ed25519.js.map +1 -0
  740. package/dist/tinybee/models-routes.js +19 -0
  741. package/dist/tinybee/models-routes.js.map +1 -0
  742. package/dist/tinybee/pair-payload.js +41 -0
  743. package/dist/tinybee/pair-payload.js.map +1 -0
  744. package/dist/tinybee/update-manifest.js +77 -0
  745. package/dist/tinybee/update-manifest.js.map +1 -0
  746. package/dist/tinybee/well-known.js +64 -0
  747. package/dist/tinybee/well-known.js.map +1 -0
  748. package/dist/tinybee/workflows/activity.js +23 -0
  749. package/dist/tinybee/workflows/activity.js.map +1 -0
  750. package/dist/tinybee/workflows/cron.js +210 -0
  751. package/dist/tinybee/workflows/cron.js.map +1 -0
  752. package/dist/tinybee/workflows/engine.js +371 -0
  753. package/dist/tinybee/workflows/engine.js.map +1 -0
  754. package/dist/tinybee/workflows/from-text.js +203 -0
  755. package/dist/tinybee/workflows/from-text.js.map +1 -0
  756. package/dist/tinybee/workflows/routes.js +189 -0
  757. package/dist/tinybee/workflows/routes.js.map +1 -0
  758. package/dist/tinybee/workflows/scheduler.js +100 -0
  759. package/dist/tinybee/workflows/scheduler.js.map +1 -0
  760. package/dist/tinybee/workflows/skills.js +227 -0
  761. package/dist/tinybee/workflows/skills.js.map +1 -0
  762. package/dist/tinybee/workflows/store.js +205 -0
  763. package/dist/tinybee/workflows/store.js.map +1 -0
  764. package/dist/tinybee/workflows/types.js +180 -0
  765. package/dist/tinybee/workflows/types.js.map +1 -0
  766. package/dist/tinybee/workflows/yaml.js +323 -0
  767. package/dist/tinybee/workflows/yaml.js.map +1 -0
  768. package/dist/true/api.js +495 -0
  769. package/dist/true/api.js.map +1 -0
  770. package/dist/true/client.js +292 -0
  771. package/dist/true/client.js.map +1 -0
  772. package/dist/true/clock.js +36 -0
  773. package/dist/true/clock.js.map +1 -0
  774. package/dist/true/events.js +125 -0
  775. package/dist/true/events.js.map +1 -0
  776. package/dist/true/hosts.js +98 -0
  777. package/dist/true/hosts.js.map +1 -0
  778. package/dist/true/index.js +29 -0
  779. package/dist/true/index.js.map +1 -0
  780. package/dist/true/key.js +54 -0
  781. package/dist/true/key.js.map +1 -0
  782. package/dist/true/line.js +69 -0
  783. package/dist/true/line.js.map +1 -0
  784. package/dist/true/mask.js +31 -0
  785. package/dist/true/mask.js.map +1 -0
  786. package/dist/true/names.js +114 -0
  787. package/dist/true/names.js.map +1 -0
  788. package/dist/true/outbox.js +233 -0
  789. package/dist/true/outbox.js.map +1 -0
  790. package/dist/true/replay.js +164 -0
  791. package/dist/true/replay.js.map +1 -0
  792. package/dist/true/settings.js +123 -0
  793. package/dist/true/settings.js.map +1 -0
  794. package/dist/true/status.js +189 -0
  795. package/dist/true/status.js.map +1 -0
  796. package/dist/true/sync-cases.js +222 -0
  797. package/dist/true/sync-cases.js.map +1 -0
  798. package/dist/true/sync-manual.js +295 -0
  799. package/dist/true/sync-manual.js.map +1 -0
  800. package/dist/true/sync-runs.js +109 -0
  801. package/dist/true/sync-runs.js.map +1 -0
  802. package/dist/true/worker.js +414 -0
  803. package/dist/true/worker.js.map +1 -0
  804. package/dist/types.js +32 -0
  805. package/dist/types.js.map +1 -0
  806. package/dist/updates/asks.js +38 -0
  807. package/dist/updates/asks.js.map +1 -0
  808. package/dist/updates/index.js +835 -0
  809. package/dist/updates/index.js.map +1 -0
  810. package/dist/updates/owner.js +24 -0
  811. package/dist/updates/owner.js.map +1 -0
  812. package/dist/updates/prefs.js +118 -0
  813. package/dist/updates/prefs.js.map +1 -0
  814. package/dist/updates/route.js +78 -0
  815. package/dist/updates/route.js.map +1 -0
  816. package/dist/updates/sources.js +345 -0
  817. package/dist/updates/sources.js.map +1 -0
  818. package/dist/updates/words.js +452 -0
  819. package/dist/updates/words.js.map +1 -0
  820. package/dist/version.js +53 -0
  821. package/dist/version.js.map +1 -0
  822. package/dist/view-compute.js +382 -0
  823. package/dist/view-compute.js.map +1 -0
  824. package/dist/view-spec.js +894 -0
  825. package/dist/view-spec.js.map +1 -0
  826. package/dist/web/apple-touch-icon.png +0 -0
  827. package/dist/web/assets/ApprovalCard-Br_z5z7G.css +1 -0
  828. package/dist/web/assets/ApprovalCard-CfGhGFo_.js +3 -0
  829. package/dist/web/assets/CardFromRef-BaTGmZ9c.js +2 -0
  830. package/dist/web/assets/CardFromRef-DO7i2uDd.css +1 -0
  831. package/dist/web/assets/Cases-8l_6UcLh.js +2 -0
  832. package/dist/web/assets/Cases-CpfED0uB.css +1 -0
  833. package/dist/web/assets/Chat-BKDiR0qt.js +3 -0
  834. package/dist/web/assets/Chat-DxjdyYUu.css +1 -0
  835. package/dist/web/assets/ConfirmDialog-CIMveD-b.js +2 -0
  836. package/dist/web/assets/ConnectSheet-Cm5vbZdR.js +4 -0
  837. package/dist/web/assets/Docs-HKGuY0WE.js +2 -0
  838. package/dist/web/assets/Docs-fodKx8S7.css +1 -0
  839. package/dist/web/assets/DotDetail-DskS3NWe.js +2 -0
  840. package/dist/web/assets/DotDetail-OWRSD_1x.css +1 -0
  841. package/dist/web/assets/DotStage-BZDclfzV.css +1 -0
  842. package/dist/web/assets/DotStage-CtMNzCN3.js +2 -0
  843. package/dist/web/assets/Dots-BqCsS34m.js +2 -0
  844. package/dist/web/assets/EvidencePack-DQ3kCJX4.js +2 -0
  845. package/dist/web/assets/EvidencePack-DV_9ETsA.css +1 -0
  846. package/dist/web/assets/FailedDeliveries-1F2kFcs9.js +2 -0
  847. package/dist/web/assets/FailedDeliveries-DXa2_VvI.css +1 -0
  848. package/dist/web/assets/Feed-5wiHRTFK.js +2 -0
  849. package/dist/web/assets/GfmView-C-NYaduC.js +4 -0
  850. package/dist/web/assets/ImpactList-C-RNuDB0.js +2 -0
  851. package/dist/web/assets/ImpactList-C612dFdw.css +1 -0
  852. package/dist/web/assets/Inbox-kc1bKVL_.js +2 -0
  853. package/dist/web/assets/JoinScreen-C3L4wmP3.js +2 -0
  854. package/dist/web/assets/JoinScreen-COeAUv5v.css +1 -0
  855. package/dist/web/assets/LeadDialog-N3Zul9Rw.js +8 -0
  856. package/dist/web/assets/LeadDialog-xyWjAuAS.css +1 -0
  857. package/dist/web/assets/ListeningLine-BRFNaczY.js +2 -0
  858. package/dist/web/assets/ListeningLine-pN8CgyiK.css +1 -0
  859. package/dist/web/assets/Mascots-pIyGpxtD.js +2 -0
  860. package/dist/web/assets/ModelChoices-BxO1zyyr.js +2 -0
  861. package/dist/web/assets/ModelChoices-DQJnVxfs.css +1 -0
  862. package/dist/web/assets/NewDotDialog-CDPUWmgN.js +2 -0
  863. package/dist/web/assets/NewDotDialog-DrPPqkSZ.css +1 -0
  864. package/dist/web/assets/NewTestRunDialog-BQBthVHE.js +2 -0
  865. package/dist/web/assets/NoBreakNames-Csxdqdt6.js +2 -0
  866. package/dist/web/assets/Pair-omex_K7H.js +2 -0
  867. package/dist/web/assets/PushSection-CmqHlE_2.js +2 -0
  868. package/dist/web/assets/ReleaseNotes-B6VqFewP.js +2 -0
  869. package/dist/web/assets/ReleaseNotes-DBJUL7Vm.css +1 -0
  870. package/dist/web/assets/ReportPage-BHS1xWEt.js +162 -0
  871. package/dist/web/assets/Reports-BEHnDIb1.js +2 -0
  872. package/dist/web/assets/ReviewChangeDialog-BVSt-cw-.js +2 -0
  873. package/dist/web/assets/ReviewChangeDialog-BbIlHRx0.css +1 -0
  874. package/dist/web/assets/Room-BoG_uge4.js +2 -0
  875. package/dist/web/assets/Room-evAfiW_e.css +1 -0
  876. package/dist/web/assets/RunActions-ZY7yf1AF.js +2 -0
  877. package/dist/web/assets/RunDetail-C8St20GQ.css +1 -0
  878. package/dist/web/assets/RunDetail-qADXjBvd.js +9 -0
  879. package/dist/web/assets/RunRow-BKEJv8ib.js +2 -0
  880. package/dist/web/assets/RunnerTry-Dgpp67-s.js +6 -0
  881. package/dist/web/assets/RunnerTry-DsweWOfO.css +1 -0
  882. package/dist/web/assets/Settings-fs-QJwNM.js +2 -0
  883. package/dist/web/assets/Setup-DI6hBEP-.js +2 -0
  884. package/dist/web/assets/TestRows-wh03T5Li.js +4 -0
  885. package/dist/web/assets/TestRun-DTOyF-Pv.js +2 -0
  886. package/dist/web/assets/TestRuns-ggDjm1Q8.js +2 -0
  887. package/dist/web/assets/TinyBeeAddLaptop-bc3pmh3T.js +2 -0
  888. package/dist/web/assets/TinyBeeAi-CkyOzhm5.js +2 -0
  889. package/dist/web/assets/TinyBeeConnections-B2K_P38u.js +2 -0
  890. package/dist/web/assets/TinyBeeHome-DSpxX5KS.js +3 -0
  891. package/dist/web/assets/TinyBeePlan-BamiLziu.js +2 -0
  892. package/dist/web/assets/TinyBeeSignup-vHcz0Wen.js +2 -0
  893. package/dist/web/assets/TinyBeeSkills-By9RLUse.js +2 -0
  894. package/dist/web/assets/TinyBeeWorkflow-DeNO7Jsh.js +2 -0
  895. package/dist/web/assets/TinyBeeWorkflowEditor-B6OGC2OT.js +2 -0
  896. package/dist/web/assets/TinyBeeWorkflows-BN4-h6lt.js +2 -0
  897. package/dist/web/assets/Trace-BBCI1aIB.css +1 -0
  898. package/dist/web/assets/Trace-aF92UWaH.js +2 -0
  899. package/dist/web/assets/UpdatesSection-CCWEbkue.js +2 -0
  900. package/dist/web/assets/Welcome-CCcy558Q.js +2 -0
  901. package/dist/web/assets/activity-C3qilrDm.css +1 -0
  902. package/dist/web/assets/activity-CBfTSxqw.js +2 -0
  903. package/dist/web/assets/authedMedia-BTYt_tyu.js +2 -0
  904. package/dist/web/assets/beeApi-BHW8Tx1s.js +2 -0
  905. package/dist/web/assets/data-CmXvx3Mj.js +2 -0
  906. package/dist/web/assets/engines-CfdJODFj.css +1 -0
  907. package/dist/web/assets/format-BBZ8vFyT.js +2 -0
  908. package/dist/web/assets/forms-Coc7p2UF.css +1 -0
  909. package/dist/web/assets/hivePush-DZJDokj7.js +2 -0
  910. package/dist/web/assets/impactModel-MY1OFuiP.js +2 -0
  911. package/dist/web/assets/index-B6qKm1NW.js +13 -0
  912. package/dist/web/assets/index-BvKyT1X7.css +1 -0
  913. package/dist/web/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
  914. package/dist/web/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
  915. package/dist/web/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
  916. package/dist/web/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
  917. package/dist/web/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
  918. package/dist/web/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
  919. package/dist/web/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
  920. package/dist/web/assets/lead-BL_P_kri.css +1 -0
  921. package/dist/web/assets/model-BIQy5IVG.js +2 -0
  922. package/dist/web/assets/modelsApi-PUSySRQw.js +2 -0
  923. package/dist/web/assets/newDotModel-BaLLyw57.js +2 -0
  924. package/dist/web/assets/onboarding-bfKqnM4Z.css +1 -0
  925. package/dist/web/assets/phone-Rs7FoyG0.css +1 -0
  926. package/dist/web/assets/phoneApi-BG_1-M-D.js +3 -0
  927. package/dist/web/assets/releaseModel-EynYMVOC.js +2 -0
  928. package/dist/web/assets/releaseNotesModel-A1Rtv3cV.js +2 -0
  929. package/dist/web/assets/reports-BWaA1HhM.js +37 -0
  930. package/dist/web/assets/reports-DXwdWQsB.css +1 -0
  931. package/dist/web/assets/router-W6nZsQ33.js +2 -0
  932. package/dist/web/assets/runs-BY0Owv93.css +1 -0
  933. package/dist/web/assets/shadowWeekModel-BUUiww09.js +2 -0
  934. package/dist/web/assets/storage-yvL36AWt.js +2 -0
  935. package/dist/web/assets/store-IqrqHuFR.js +2 -0
  936. package/dist/web/assets/testruns-BzIZ0cR0.css +1 -0
  937. package/dist/web/assets/testruns-DyaqX4ji.js +2 -0
  938. package/dist/web/assets/true-9Q68cs5b.js +2 -0
  939. package/dist/web/assets/true-DPGBpoir.css +1 -0
  940. package/dist/web/assets/ui-DcmhYyYp.js +13 -0
  941. package/dist/web/assets/ui-DxEDgbIx.css +1 -0
  942. package/dist/web/assets/usePauseDot-BV60ZVy1.js +2 -0
  943. package/dist/web/assets/usePauseDot-NrSzMI1C.css +1 -0
  944. package/dist/web/assets/usePush-Dsm-TjlG.js +2 -0
  945. package/dist/web/assets/useRefChips-CbafNx59.js +68 -0
  946. package/dist/web/assets/useRestoreDot-D0B6W82H.js +2 -0
  947. package/dist/web/assets/view-worker-pyeVAhUT.js +2 -0
  948. package/dist/web/assets/workflowUi-QYsd3n9J.js +2 -0
  949. package/dist/web/favicon.png +0 -0
  950. package/dist/web/icon-192.png +0 -0
  951. package/dist/web/icon-512.png +0 -0
  952. package/dist/web/icon-maskable-512.png +0 -0
  953. package/dist/web/index.html +45 -0
  954. package/dist/web/manifest.webmanifest +23 -0
  955. package/dist/web/mascots/argus-attention.svg +7 -0
  956. package/dist/web/mascots/argus-ok.svg +7 -0
  957. package/dist/web/mascots/argus-outage.svg +7 -0
  958. package/dist/web/mascots/argus-running.svg +7 -0
  959. package/dist/web/mascots/bolt-attention.svg +7 -0
  960. package/dist/web/mascots/bolt-ok.svg +7 -0
  961. package/dist/web/mascots/bolt-outage.svg +7 -0
  962. package/dist/web/mascots/bolt-running.svg +7 -0
  963. package/dist/web/mascots/echo-attention.svg +7 -0
  964. package/dist/web/mascots/echo-ok.svg +7 -0
  965. package/dist/web/mascots/echo-outage.svg +7 -0
  966. package/dist/web/mascots/echo-running.svg +7 -0
  967. package/dist/web/mascots/lens-attention.svg +7 -0
  968. package/dist/web/mascots/lens-ok.svg +7 -0
  969. package/dist/web/mascots/lens-outage.svg +7 -0
  970. package/dist/web/mascots/lens-running.svg +7 -0
  971. package/dist/web/mascots/moss-attention.svg +7 -0
  972. package/dist/web/mascots/moss-ok.svg +7 -0
  973. package/dist/web/mascots/moss-outage.svg +7 -0
  974. package/dist/web/mascots/moss-running.svg +7 -0
  975. package/dist/web/mascots/nit-attention.svg +7 -0
  976. package/dist/web/mascots/nit-ok.svg +7 -0
  977. package/dist/web/mascots/nit-outage.svg +7 -0
  978. package/dist/web/mascots/nit-running.svg +7 -0
  979. package/dist/web/mascots/nova-attention.svg +7 -0
  980. package/dist/web/mascots/nova-ok.svg +7 -0
  981. package/dist/web/mascots/nova-outage.svg +7 -0
  982. package/dist/web/mascots/nova-running.svg +7 -0
  983. package/dist/web/mascots/penn-attention.svg +7 -0
  984. package/dist/web/mascots/penn-ok.svg +7 -0
  985. package/dist/web/mascots/penn-outage.svg +7 -0
  986. package/dist/web/mascots/penn-running.svg +7 -0
  987. package/dist/web/mascots/pip-attention.svg +7 -0
  988. package/dist/web/mascots/pip-ok.svg +7 -0
  989. package/dist/web/mascots/pip-outage.svg +7 -0
  990. package/dist/web/mascots/pip-running.svg +7 -0
  991. package/dist/web/mascots/ward-attention.svg +7 -0
  992. package/dist/web/mascots/ward-ok.svg +7 -0
  993. package/dist/web/mascots/ward-outage.svg +7 -0
  994. package/dist/web/mascots/ward-running.svg +7 -0
  995. package/dist/web/sw.js +98 -0
  996. package/dist/webhook-seen.js +53 -0
  997. package/dist/webhook-seen.js.map +1 -0
  998. package/dist/webhooks.js +625 -0
  999. package/dist/webhooks.js.map +1 -0
  1000. package/dist/zip.js +63 -0
  1001. package/dist/zip.js.map +1 -0
  1002. package/docs/API-V2.md +532 -0
  1003. package/docs/CHAT-EVAL.md +130 -0
  1004. package/docs/CHAT-UI.md +416 -0
  1005. package/docs/CONNECTIONS.md +89 -0
  1006. package/docs/DATA-MODEL.md +518 -0
  1007. package/docs/DEPLOY.md +577 -0
  1008. package/docs/DOGFOOD-LEDGER.md +81 -0
  1009. package/docs/GITHUB.md +148 -0
  1010. package/docs/INTEGRATION-MODEL.md +200 -0
  1011. package/docs/LEAD-DOT.md +553 -0
  1012. package/docs/LIST-PATTERNS.md +52 -0
  1013. package/docs/MULTI-REPO.md +766 -0
  1014. package/docs/PARITY.md +276 -0
  1015. package/docs/PR-REVIEW-QA.md +1266 -0
  1016. package/docs/PR-REVIEW.md +357 -0
  1017. package/docs/SANDBOX.md +320 -0
  1018. package/docs/SETUP.md +776 -0
  1019. package/docs/SLACK.md +80 -0
  1020. package/docs/STAGES.md +619 -0
  1021. package/docs/TRACE-MAP.md +89 -0
  1022. package/docs/TRACKERS.md +225 -0
  1023. package/docs/VOICE.md +36 -0
  1024. package/docs/tinybee/00-README.md +45 -0
  1025. package/docs/tinybee/01-PRD.md +216 -0
  1026. package/docs/tinybee/02-architecture-pairing.md +199 -0
  1027. package/docs/tinybee/03-local-agent.md +222 -0
  1028. package/docs/tinybee/04-local-setup-ui.md +128 -0
  1029. package/docs/tinybee/05-mobile-app-ux.md +199 -0
  1030. package/docs/tinybee/06-environments-and-delivery.md +148 -0
  1031. package/docs/tinybee/07-coding-agent-handoff.md +116 -0
  1032. package/docs/tinybee/OPEN-QUESTIONS.md +26 -0
  1033. package/docs/tinybee/PROGRESS.md +134 -0
  1034. package/package.json +111 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view-spec.js","sourceRoot":"","sources":["../src/view-spec.ts"],"names":[],"mappings":"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"}
Binary file
@@ -0,0 +1 @@
1
+ .approval{gap:var(--space-2);min-width:0;padding:var(--space-4);background:var(--surface);border:var(--hairline);border-radius:var(--radius-md);flex-direction:column;display:flex}.approval--inline{padding:var(--space-3)}.approval__head{justify-content:space-between;align-items:center;gap:var(--space-1) var(--space-3);display:flex}.approval__kind{align-items:center;gap:var(--space-1) var(--space-2);min-width:0;font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--text-2);text-transform:uppercase;letter-spacing:.04em;flex-wrap:wrap;flex:1 1 0;display:flex}.approval__target-chip{text-transform:none;letter-spacing:0;font-weight:var(--weight-regular)}.approval__status{font-size:var(--text-xs);font-weight:var(--weight-medium);white-space:nowrap;color:var(--text-2);align-items:center;gap:4px;display:inline-flex}.approval__kind-label{flex:none;gap:6px}.approval__ask{margin-bottom:calc(var(--space-1) * -1);color:var(--text-2);font-size:var(--text-sm);font-weight:var(--weight-medium)}.approval__title{font-size:var(--text-lg);font-weight:var(--weight-semibold);line-height:var(--leading-tight);overflow-wrap:anywhere;text-wrap:balance}.approval--inline .approval__title{font-size:var(--text-md)}.approval__meta{gap:var(--space-1) var(--space-3);font-size:var(--text-sm);color:var(--text-3);flex-wrap:wrap;display:flex}.approval__run-link{color:var(--accent)}.approval__reason{font-size:var(--text-sm);color:var(--text-2);text-wrap:pretty}.approval__fix{margin:0}.approval__where{font-size:var(--text-sm);color:var(--text-2);overflow-wrap:anywhere}.approval__where strong{font-weight:var(--weight-semibold);color:var(--text-1)}.approval__flag{align-items:baseline;gap:var(--space-2);font-size:var(--text-sm);color:var(--text-2);flex-wrap:wrap;display:flex}.approval__flag-label{padding:0 var(--space-2);border:1px solid var(--border);border-radius:var(--radius-sm);font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--text-1);white-space:nowrap}.approval__label{margin-bottom:var(--space-1);font-size:var(--text-xs);font-weight:var(--weight-medium);color:var(--text-3)}.approval__draft{max-height:min(320px,40vh);padding:var(--space-3);background:var(--surface-2);border-radius:var(--radius);font-family:var(--font-mono);font-size:var(--text-sm);line-height:var(--leading);white-space:pre-wrap;overflow-wrap:anywhere;color:var(--text);margin:0;overflow:auto}.approval__draft:focus-visible{box-shadow:var(--focus-ring);outline:none}.approval__edit .textarea{width:100%;font-family:var(--font-mono);font-size:var(--text-lg)}@media (min-width:900px){.approval__edit .textarea{font-size:var(--text-sm)}}.approval__alert{padding:var(--space-2) var(--space-3);border-radius:var(--radius);background:var(--outage-bg);color:var(--outage-fg);font-size:var(--text-sm);overflow-wrap:anywhere}.approval__details{margin-top:var(--space-1)}.approval__expiry{font-size:var(--text-xs);color:var(--text-3)}.approval__code{font-family:var(--font-mono);font-size:var(--text-xs)}.approval__actions{gap:var(--space-2);padding-top:var(--space-1);flex-wrap:wrap;display:flex}.approval__actions .btn{min-height:var(--tap)}@media (min-width:900px) and (pointer:fine){.approval__actions .btn{min-height:var(--control-lg)}}.approval__actions a.btn:hover{text-decoration:none}@media (max-width:639px){.approval:not(.approval--inline) .approval__actions{grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.approval:not(.approval--inline) .approval__actions>:first-child{grid-column:1/-1}}.approval__outcome{font-size:var(--text-sm);color:var(--text-2)}.inbox__section+.inbox__section{margin-top:var(--space-8)}.inbox__heading{align-items:baseline;gap:var(--space-2);margin-bottom:var(--space-3);font-size:var(--text-md);font-weight:var(--weight-semibold);display:flex}.inbox__refresh{font-size:var(--text-xs);font-weight:var(--weight-regular);color:var(--text-3)}.inbox__list{background:var(--surface);border:var(--hairline);border-radius:var(--radius-md);flex-direction:column;margin:0;padding:0;list-style:none;display:flex;overflow:hidden;container-type:inline-size}.inbox__list>*+*{border-top:var(--hairline)}.inbox__list .approval{border:0;border-radius:0}.inbox__section>.error-state{margin-bottom:var(--space-3)}.inbox__groups{gap:var(--space-6);flex-direction:column;display:flex}.inbox__group-head{align-items:baseline;gap:var(--space-1) var(--space-3);margin:0 0 var(--space-2);font-size:var(--text-sm);font-weight:var(--weight-semibold);flex-wrap:wrap;display:flex}.inbox__group-icon{align-self:center;display:inline-flex}.inbox__group-chip{font-weight:var(--weight-medium);align-self:center}.inbox__group-title{color:var(--text)}.inbox__group-meta{gap:0 var(--space-2);min-width:0;font-weight:var(--weight-regular);color:var(--text-3);overflow-wrap:anywhere;flex-wrap:wrap;display:flex}.inbox__group-meta>*+:before{content:"·";margin-right:var(--space-2)}.inbox__group-meta code{font-family:var(--font-mono);font-size:var(--text-xs);font-variant-numeric:tabular-nums;color:var(--text-2)}.inbox__group-card{margin:0 0 var(--space-2)}.inbox__superseded{margin-top:var(--space-3)}.inbox__superseded>summary{align-items:center;gap:var(--space-2);cursor:pointer;min-height:44px;font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--text-2);list-style:none;display:flex}.inbox__superseded>summary::-webkit-details-marker{display:none}.inbox__superseded>summary:before{content:"";border-bottom:1.5px solid;border-right:1.5px solid;flex:none;width:6px;height:6px;transform:rotate(-45deg)}.inbox__superseded[open]>summary:before{transform:rotate(45deg)}.inbox__superseded>summary:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media (prefers-reduced-motion:no-preference){.inbox__superseded>summary:before{transition:transform .12s}}.inbox__superseded-hint{margin-left:var(--space-1);font-weight:var(--weight-regular);color:var(--text-3)}.inbox__list>.error-state{margin:var(--space-3)}.inbox__none{font-size:var(--text-sm);color:var(--text-3)}.inbox__row{min-height:var(--row-comfortable)}.inbox__row-title{overflow-wrap:anywhere;display:block}.inbox__row-meta{gap:0 var(--space-2);flex-wrap:wrap;display:flex}.inbox__row-meta>*+:not(.icon-label):before{content:"·";margin-right:var(--space-2)}.inbox__row-meta{align-items:center}.inbox__row>.status-icon{align-self:flex-start;margin-top:3px}.inbox__skeleton-actions{gap:var(--space-2);display:flex}.inbox .rows{margin:0 calc(var(--gutter) * -1)}@media (min-width:640px){.inbox .rows{margin:0}}.approval__draft-head{justify-content:space-between;align-items:baseline;gap:var(--space-2);display:flex}.approval__source-toggle{color:var(--accent);font-size:var(--text-xs);font-weight:var(--weight-medium);background:0 0;border:0;padding:0;position:relative}.approval__source-toggle:after{content:"";position:absolute;inset:-14px -8px}.approval__source-toggle:hover{text-underline-offset:2px;text-decoration:underline}.approval__draft--preview{border:var(--hairline);background:var(--surface);max-height:min(480px,60vh);font-family:var(--font-sans);font-size:var(--text-md);white-space:normal}.approval__reason--line{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.approval__more{align-self:flex-start;align-items:center;gap:var(--space-1);color:var(--accent);font-size:var(--text-sm);font-weight:var(--weight-medium);white-space:nowrap;background:0 0;border:0;padding:0;display:inline-flex;position:relative}.approval__more:after{content:"";position:absolute;inset:-12px -8px}.approval__more:hover{text-underline-offset:2px;text-decoration:underline}.approval__more:focus-visible{box-shadow:var(--focus-ring);border-radius:var(--radius);outline:none}.approval__more svg{flex:none}.approval__more[aria-expanded=true] svg{transform:rotate(180deg)}@media (prefers-reduced-motion:no-preference){.approval__more svg{transition:transform .12s}}.approval--inline .approval__actions{gap:var(--space-2)}.approval--inline .approval__actions .btn{min-width:0;padding-inline:var(--space-3)}.approval__stage{flex:none;max-width:100%}.approval__found{color:var(--text-2);font-size:var(--text-md);overflow-wrap:anywhere;text-wrap:pretty}.approval__sources{gap:var(--space-1);font-size:var(--text-sm);margin:0;padding:0;list-style:none;display:grid}.approval__sig{color:var(--text-3);font-family:var(--font-mono)}.approval--linked{background:var(--surface-selected);border-color:var(--border-strong);transition:background .2s}
@@ -0,0 +1,3 @@
1
+ import{Cn as e,E as t,I as n,Tn as r,Vn as i,W as a,Wn as o,_ as ee,it as te,mn as s,n as ne,ot as c,pn as l,rt as u,ut as re,v as ie}from"./ui-DcmhYyYp.js";import{t as ae}from"./router-W6nZsQ33.js";import{c as oe,n as d}from"./store-IqrqHuFR.js";import{Bt as se,Gt as ce,Ht as le,Jt as ue,Kt as de,Qt as f,Ut as fe,Wt as pe,Yt as me,Zt as he,an as ge,cn as p,dn as _e,in as ve,ln as m,nn as ye,qt as h,rn as be,sn as xe,zt as Se}from"./index-B6qKm1NW.js";import{t as Ce}from"./DotStage-CtMNzCN3.js";import{t as we}from"./GfmView-C-NYaduC.js";var g=o(i(),1),_=s(),Te=new Set([`pr_comment`,`ticket_comment`,`check_run`,`slack_post`,`open_pr`,`file_defect`,`issue_create`]),Ee=new Set([`pr_comment`,`check_run`,`open_pr`]);function De(e){let t=/already (pending|approved|rejected|executed|expired|superseded)/i.exec(e);return t?t[1].toLowerCase():null}function v({approval:i,dotName:o,variant:s=`inbox`,onSettled:v,stale:ke,now:y}){let[b,x]=(0,g.useState)(null),S=b&&b.id===i.id?b:i,[C,w]=(0,g.useState)(`view`),T=Te.has(S.action.kind)&&!!S.action.body,[E,Ae]=(0,g.useState)(!1),D=s===`inline`,[O,je]=(0,g.useState)(!1),k=!D||O,A=D?`sm`:`md`,[j,M]=(0,g.useState)(S.action.body),[N,P]=(0,g.useState)(null),[F,I]=(0,g.useState)(null),[L,Me]=(0,g.useState)(null),R=(0,g.useId)(),z=(0,g.useId)(),B=(0,g.useId)(),V=(0,g.useRef)(null),H=(0,g.useRef)(null);oe(e=>{e.type===`approval`&&e.approval.id===S.id&&x(t=>({...t??i,...e.approval}))},[`approval`]);let[Ne,Pe]=(0,g.useState)(0),U=S.status===`pending`&&S.retry?Date.parse(S.retry.nextAt):NaN;(0,g.useEffect)(()=>{if(y!==void 0||!Number.isFinite(U))return;let e=U-Date.now();if(e<=0)return;let t=setTimeout(()=>Pe(e=>e+1),Math.min(e+250,2147e6));return()=>clearTimeout(t)},[U,y,Ne]);let W=fe(S,y),G=be(S,y)&&!L,K=W===`pending`&&!L,Fe=S.action.kind===`report_edit`,Ie=S.action.kind===`ticket_status`,q=typeof S.action.meta?.reportId==`string`?S.action.meta.reportId:void 0,Le=S.dotName??o,J=ue(S),Y=ve(S),Re=S.action.kind===`file_defect`||S.action.kind===`issue_create`,X=xe(S),Z=ce(S.action.kind),ze=pe(S);async function Q(t){if(N)return;let n=t===`approve`&&C===`edit`&&j!==S.action.body?j:void 0;if(t===`approve`&&C===`edit`&&!j.trim()){I(Error(`There is nothing to post. Write something or cancel the edit.`)),V.current?.focus();return}P(t),I(null);try{let e=await r.decideApproval(S.id,t,n);x({...S,...e}),w(`view`),v?.(e,t),d(`approvals`)}catch(t){if(t instanceof e&&t.status===410)x({...S,status:`expired`}),w(`view`),d(`approvals`);else if(t instanceof e&&t.status===409&&t.serverCode===`retrying`)I(t),d(`approvals`);else if(t instanceof e&&t.status===409){let e=De(t.message);e&&x({...S,status:e}),Me({kind:`conflict`,text:`Someone already decided this on another screen. Nothing changed here.`}),w(`view`),d(`approvals`)}else I(t)}finally{P(null)}}function Be(){M(S.action.body),I(null),w(`edit`),requestAnimationFrame(()=>V.current?.focus())}function Ve(){w(`view`),I(null),requestAnimationFrame(()=>H.current?.focus())}let He=F instanceof Error?F.message:F?String(F):``,$=F instanceof e?F.code:void 0;return(0,_.jsxs)(`article`,{className:`approval approval--${s} approval--${W}`,"aria-labelledby":R,"data-approval-id":S.id,children:[(0,_.jsxs)(`header`,{className:`approval__head`,children:[(0,_.jsxs)(`p`,{className:`approval__kind`,children:[(0,_.jsx)(Ce,{dotId:S.watchId,dotName:Le,stage:S.stage,state:W===`pending`?`attention`:`ok`,className:`approval__stage`}),(0,_.jsx)(ee,{icon:(0,_.jsx)(ne,{kind:S.action.kind,size:14}),label:le(S.action.kind),className:`approval__kind-label`}),S.action.target&&(0,_.jsx)(t,{className:`approval__target-chip`,..._e(S)})]}),(0,_.jsx)(ie,{kind:Se[W],label:G&&S.retry?m(S.retry):se[W],className:`approval__status approval__status--${W}`})]}),K&&Re&&(0,_.jsx)(`p`,{className:`approval__ask`,"data-testid":`file-question`,children:`File this bug?`}),(0,_.jsx)(`h3`,{id:R,className:`approval__title`,children:S.action.title||`Untitled item`}),J&&(W===`pending`||W===`executed`)&&(0,_.jsxs)(`p`,{className:`approval__where`,"data-testid":`defect-destination`,children:[W===`executed`?`Filed in`:`Files in`,` `,(0,_.jsx)(`strong`,{children:J}),`.`,Y?` Linked to ${Y}.`:``]}),S.foundBy&&(0,_.jsxs)(_.Fragment,{children:[(0,_.jsx)(`p`,{className:`approval__found`,"data-testid":`found-by`,children:S.foundBy}),k&&S.sources&&(0,_.jsx)(a,{className:`approval__details`,children:(0,_.jsx)(`ul`,{className:`approval__sources`,children:S.sources.map(e=>(0,_.jsxs)(`li`,{children:[e.dotName,`: `,(0,_.jsx)(`a`,{href:`#/runs/${encodeURIComponent(e.runId)}`,children:`See the check`}),e.bugSig?(0,_.jsxs)(`span`,{className:`approval__sig`,children:[` signature `,e.bugSig]}):null]},`${e.dotName}-${e.runId}`))})})]}),he(S)&&(0,_.jsxs)(`p`,{className:`approval__flag`,"data-testid":`found-by-reading`,children:[(0,_.jsx)(`span`,{className:`approval__flag-label`,children:`Found by reading the code`}),(0,_.jsx)(`span`,{children:`No test confirmed this, so it may be wrong.`})]}),k&&(0,_.jsxs)(`p`,{className:`approval__meta`,children:[(0,_.jsx)(`time`,{dateTime:S.createdAt,title:f(S.createdAt),children:p(S.createdAt,y)}),S.runId&&(0,_.jsx)(`a`,{href:`#/runs/${encodeURIComponent(S.runId)}`,className:`approval__run-link`,children:`See the check`})]}),X&&(0,_.jsx)(`p`,{className:`approval__reason${k?``:` approval__reason--line`}`,title:k?void 0:X,children:X}),X&&K&&me(S)&&S.watchId&&(0,_.jsx)(`p`,{className:`approval__fix`,children:(0,_.jsx)(`a`,{className:`btn btn--secondary btn--sm`,href:ae({name:`dot`,id:S.watchId,...S.stage?{stage:S.stage}:{}}),children:(0,_.jsx)(`span`,{className:`btn__label`,children:`Fix in Advanced`})})}),X&&k&&(0,_.jsx)(a,{className:`approval__details`,children:(0,_.jsx)(`p`,{children:ge(S)})}),D&&C!==`edit`&&(0,_.jsxs)(`button`,{type:`button`,className:`approval__more`,"aria-expanded":O,"aria-controls":O?B:void 0,onClick:()=>je(e=>!e),children:[(0,_.jsx)(`span`,{children:O?`Hide text`:`Show text`}),(0,_.jsx)(te,{size:14})]}),C===`edit`&&K?(0,_.jsxs)(`div`,{className:`approval__edit`,children:[(0,_.jsxs)(`label`,{htmlFor:z,className:`approval__label`,children:[`Edit the text. What you `,Z.toLowerCase(),` is exactly what gets sent.`]}),(0,_.jsx)(n,{id:z,ref:V,value:j,rows:Math.min(14,Math.max(4,j.split(`
2
+ `).length+1)),onChange:e=>M(e.target.value),onKeyDown:e=>{e.key===`Escape`?(e.preventDefault(),Ve()):e.key===`Enter`&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),Q(`approve`))}})]}):k&&(0,_.jsxs)(`div`,{className:`approval__draft-wrap`,id:B,children:[(0,_.jsxs)(`div`,{className:`approval__draft-head`,children:[(0,_.jsx)(`p`,{className:`approval__label`,id:`${z}-l`,children:W===`executed`?`Sent`:`What it will say`}),T&&(0,_.jsx)(`button`,{type:`button`,className:`approval__source-toggle`,"aria-pressed":E,onClick:()=>Ae(e=>!e),children:E?`Show preview`:`Show plain text`})]}),T&&!E?(0,_.jsx)(we,{className:`approval__draft approval__draft--preview`,tabIndex:0,"aria-labelledby":`${z}-l`,text:S.action.body,dotId:Ee.has(S.action.kind)?S.watchId:void 0,demoteHeadings:!0}):(0,_.jsx)(`pre`,{className:`approval__draft`,tabIndex:0,"aria-labelledby":`${z}-l`,children:ye(S.action.body)||`(empty)`})]}),G&&S.retry&&(0,_.jsxs)(`div`,{className:`approval__alert`,role:`status`,children:[(0,_.jsxs)(`p`,{children:[m(S.retry),`. The last try did not go through. Next try `,(0,_.jsx)(`time`,{dateTime:S.retry.nextAt,children:p(S.retry.nextAt,y)}),`.`]}),(0,_.jsx)(a,{className:`approval__details`,children:(0,_.jsxs)(`p`,{children:[`Try `,S.retry.attempt,`: `,S.retry.lastError]})})]}),S.error&&K&&!G&&(0,_.jsxs)(`div`,{className:`approval__alert`,role:`alert`,children:[(0,_.jsx)(`p`,{children:`It did not go through. Try again with the button below.`}),(0,_.jsx)(a,{className:`approval__details`,children:(0,_.jsx)(`p`,{children:S.error})})]}),He&&(0,_.jsxs)(`p`,{className:`approval__alert`,role:`alert`,children:[He,$&&(0,_.jsxs)(`span`,{className:`approval__code`,children:[` `,$]})]}),K&&ke?null:K?(0,_.jsx)(`div`,{className:`approval__actions`,children:G?(0,_.jsx)(l,{variant:`danger`,size:A,icon:(0,_.jsx)(c,{size:16}),loading:N===`reject`,onClick:()=>void Q(`reject`),children:h(S)}):C===`edit`?(0,_.jsxs)(_.Fragment,{children:[(0,_.jsxs)(l,{variant:`primary`,icon:(0,_.jsx)(u,{size:16}),loading:N===`approve`,onClick:()=>void Q(`approve`),children:[Z,` my edit`]}),(0,_.jsx)(l,{variant:`ghost`,onClick:Ve,children:`Cancel edit`})]}):(0,_.jsxs)(_.Fragment,{children:[(0,_.jsx)(l,{variant:`primary`,size:A,icon:(0,_.jsx)(u,{size:16}),loading:N===`approve`,onClick:()=>void Q(`approve`),children:ze}),Fe?q&&(0,_.jsx)(`a`,{className:`btn btn--secondary btn--md`,href:`#/reports/${encodeURIComponent(q)}`,children:(0,_.jsx)(`span`,{className:`btn__label`,children:`Open report`})}):Ie?null:(0,_.jsx)(l,{ref:H,size:A,icon:(0,_.jsx)(re,{size:16}),onClick:Be,children:`Edit`}),(0,_.jsx)(l,{variant:`danger`,size:A,icon:(0,_.jsx)(c,{size:16}),loading:N===`reject`,onClick:()=>void Q(`reject`),children:h(S)})]})}):(0,_.jsx)(`p`,{className:`approval__outcome`,role:`status`,children:L?L.text:Oe(W,S,y)}),K&&!G&&S.expiresAt&&(0,_.jsxs)(`p`,{className:`approval__expiry`,children:[`Dropped`,` `,(0,_.jsx)(`time`,{dateTime:S.expiresAt,title:f(S.expiresAt),children:de(S.expiresAt,y)}),` `,`if nobody decides. Nothing is sent.`]})]})}function Oe(e,t,n){let r=t.decidedBy?`by ${t.decidedBy}`:``;switch(e){case`expired`:return t.closedReason?`Dropped: ${t.closedReason} Nothing was sent.`:`Dropped ${p(t.expiresAt,n)||``}. Nothing was sent. Ask again if it still matters.`.replace(/\s+\./,`.`);case`superseded`:return`A newer version replaced this one. Nothing was sent.`;case`rejected`:return`${[`Not posted`,p(t.decidedAt,n),r].filter(Boolean).join(` `)}. Nothing was sent.`;case`executed`:return`${[`Posted`,p(t.executedAt??t.decidedAt,n),r].filter(Boolean).join(` `)}.`;case`approved`:return t.decidedBy?`${t.decidedBy} said OK. Sending now.`:`Sending now.`;default:return``}}export{v as t};
3
+ //# sourceMappingURL=ApprovalCard-CfGhGFo_.js.map
@@ -0,0 +1,2 @@
1
+ import{Cn as e,D as t,E as n,I as r,L as i,Tn as a,Vn as o,Wn as s,at as c,b as l,dt as u,f as d,it as f,mn as p,pn as m,v as h}from"./ui-DcmhYyYp.js";import{i as g,n as _}from"./store-IqrqHuFR.js";import{y as v}from"./format-BBZ8vFyT.js";import{Qt as y,mn as ee}from"./index-B6qKm1NW.js";import{n as b}from"./useRefChips-CbafNx59.js";var x=e=>typeof e==`object`&&!!e&&!Array.isArray(e);function S(e,t=500){if(typeof e!=`string`)return;let n=e.trim();return n?n.length>t?`${n.slice(0,t-1)}…`:n:void 0}function C(e){return typeof e==`number`&&Number.isFinite(e)?e:void 0}function w(e,t){return typeof e==`string`&&t.includes(e)?e:void 0}function T(e){let t=S(e,2e3);if(t&&/^https?:\/\//i.test(t))try{let e=new URL(t);return e.protocol===`http:`||e.protocol===`https:`?e.toString():void 0}catch{return}}function E(e){for(let t of Object.keys(e))e[t]===void 0&&delete e[t];return e}var te=2e3,D={title:80,label:60,text:600,finding:240,tileValue:60,tileSub:120,unit:12,cell:120},ne=[`column`,`row`,`section`,`tabs`,`text`],re=[`runs`,`pulls`,`approvals`,`defects`,`probes`,`memory`,`ticket_review`,`test_cases`,`cards`,`release_call`],ie=[...ne,...re,`triage`,`table`,`stats`,`chart`],O=[`text`,`number`,`percent`,`duration`,`hour`,`weekday`,`day`,`spec`],ae=[`hour`,`hour_of_day`,`day`,`weekday`,`week`,`month`],oe=[`eq`,`ne`,`gt`,`gte`,`lt`,`lte`,`in`,`contains`],se=[`count`,`sum`,`avg`,`min`,`max`,`distinct`],ce=[`ratio`,`percent`,`change`,`diff`],le=[`count`,`sum`,`avg`,`min`,`max`,`cell`],ue=[`bar`,`stacked_bar`,`line`],de=[`last_merge`,`today`,`recent`],fe=[`ok`,`attention`,`bad`],k={kind:`string`,max:D.title},pe=e=>({kind:`int`,min:1,max:e}),me={column:{summary:`Stacks its children.`,props:{children:{kind:`nodes`,required:!0}}},row:{summary:`Puts its children side by side when there is room, else stacks them.`,props:{children:{kind:`nodes`,required:!0}}},section:{summary:`A heading over its children.`,props:{title:{...k,required:!0},children:{kind:`nodes`,required:!0}}},tabs:{summary:`One tab shows at a time.`,props:{tabs:{kind:`tabs`,required:!0}}},text:{summary:`A short line of prose.`,props:{text:{kind:`string`,max:D.text,required:!0},tone:{kind:`enum`,values:[`muted`]},href:{kind:`url`}}},runs:{summary:`Test runs, from a list_runs or runs_in_progress result.`,props:A()},pulls:{summary:`Open pull requests, from an open_prs result.`,props:A()},approvals:{summary:`Drafts that wait for approval, from a pending_approvals result.`,props:A()},defects:{summary:`Defects, from a recent_defects result.`,props:A()},probes:{summary:`Probe status, from a probe_status result.`,props:A()},memory:{summary:`What the dot remembers, from a get_memory result.`,props:A()},ticket_review:{summary:`A ticket review, from a list_tickets_reviewed or get_ticket result.`,props:A()},test_cases:{summary:`Test cases, from a list_cases result.`,props:A()},cards:{summary:`The card of a ticket, from a get_ticket result.`,props:A()},release_call:{summary:`The release call of a lead, from a release_call result.`,props:A()},triage:{summary:`Failed and flaky tests of recent runs, grouped by cause, built from the stored runs.`,props:{window:{kind:`enum`,values:de},title:k}},table:{summary:`A table of a dataset, or of a result that is already a table.`,props:{title:k,data:{kind:`dataset`},from:{kind:`result`},columns:{kind:`columns`},limit:pe(50)}},stats:{summary:`Big-number tiles. Each value is text, and {name} marks take values from vars.`,props:{title:k,tiles:{kind:`tiles`},from:{kind:`result`}}},chart:{summary:`A bar, stacked bar, or line chart of a dataset, or of a result that is already a chart.`,props:{title:k,from:{kind:`result`},data:{kind:`dataset`},chartType:{kind:`enum`,values:ue},x:{kind:`field`},xFormat:{kind:`enum`,values:O},series:{kind:`series`},unit:{kind:`string`,max:D.unit},finding:{kind:`string`,max:D.finding},limit:pe(31)}}};function A(){return{from:{kind:`result`,required:!0},nth:{kind:`int`,min:0,max:9},title:k,limit:pe(50)}}Object.keys(me);var j=/^r\d{1,3}$/,he=/^[a-z][A-Za-z0-9_]{0,23}$/,ge=/^[A-Za-z_][A-Za-z0-9_]{0,39}(?:\.[A-Za-z_][A-Za-z0-9_]{0,39}){0,2}$/,M=/(?:^|\.)(?:__proto__|constructor|prototype)(?:\.|$)/,_e=new Set([`constructor`,`prototype`,`toString`,`valueOf`,`hasOwnProperty`,`isPrototypeOf`,`propertyIsEnumerable`,`toLocaleString`,`toJSON`]),ve=/<\/?[a-zA-Z]|<[!?]/,ye=/\{([a-z][A-Za-z0-9_]{0,23})\}/g,be=/\b(?:last|past|previous)\s+\d{1,3}\s+(?:hour|day|week|month)s?\b/gi,xe=/^[+-]?\d[\d,.:/-]*(?:%|[a-zA-Z]{0,7})$/,Se=e=>typeof e==`string`&&j.test(e);function N(e){return typeof e==`string`&&e.length<=82&&ge.test(e)&&!M.test(e)?e:void 0}function P(e){return[...e.matchAll(ye)].map(e=>e[1])}function F(e,t){e.notes.length<12&&e.notes.push(t)}function Ce(e){for(let t of e.replace(ye,` `).replace(be,` `).split(/\s+/)){let e=t.replace(/^[("'*_~#<>=[]+|[)"'*_~\],.:;!?]+$/g,``);if(e&&xe.test(e))return e}}function I(e,t,n,r,i={}){if(n===void 0)return;let a=S(n,r);if(a===void 0){F(e,`${t} is not a text`);return}if(ve.test(a)){F(e,`${t} holds markup, which a view never carries`);return}if(i.figures===!1){let n=Ce(a);if(n){F(e,`${t} holds the number ${n}, which comes from no tool result. Put it in vars and write {name} instead`);return}}for(let n of P(a))e.vars.has(n)||F(e,`${t} uses {${n}}, which is not in vars`);return a}function L(e,t,n){let r=C(e);return r!==void 0&&Number.isInteger(r)&&r>=t&&r<=n?r:void 0}function we(e){if(!x(e))return null;let t=N(e.field),n=w(e.is,oe);if(!t||!n)return null;let r=e.value;if(n===`in`){if(!Array.isArray(r)||!r.length||r.length>20)return null;let e=r.filter(e=>typeof e==`string`&&e.length<=D.cell||typeof e==`number`&&Number.isFinite(e));return e.length===r.length?{field:t,is:n,value:e}:null}return n===`contains`?typeof r==`string`&&r&&r.length<=D.cell?{field:t,is:n,value:r}:null:typeof r==`string`&&r.length<=D.cell||typeof r==`number`&&Number.isFinite(r)||typeof r==`boolean`?{field:t,is:n,value:r}:null}function Te(e,t=6){if(!Array.isArray(e)||!e.length||e.length>t)return null;let n=e.map(we);return n.every(e=>e!==null)?n:null}function Ee(e){if(!x(e))return null;let t=N(e.of);if(!t)return null;if(e.fn===`bucket`){let n=w(e.by,ae);return n?{fn:`bucket`,of:t,by:n}:null}let n=w(e.fn,ce);if(!n)return null;let r=typeof e.over==`number`&&Number.isFinite(e.over)?e.over:N(e.over);return r===void 0?null:{fn:n,of:t,over:r}}function De(e){if(!x(e))return null;let t=typeof e.as==`string`&&/^[A-Za-z_][A-Za-z0-9_]{0,39}$/.test(e.as)&&!M.test(e.as)?e.as:void 0,n=w(e.fn,se);if(!t||!n)return null;let r=e.of===void 0?void 0:N(e.of);if(e.of!==void 0&&!r||n!==`count`&&!r)return null;let i=e.where===void 0?void 0:Te(e.where,4);return e.where!==void 0&&!i?null:E({as:t,fn:n,of:r,where:i??void 0})}function Oe(e){if(!x(e))return null;switch(e.op){case`filter`:{let t=Te(e.where);return t?{op:`filter`,where:t}:null}case`derive`:{let t=typeof e.as==`string`&&/^[A-Za-z_][A-Za-z0-9_]{0,39}$/.test(e.as)&&!M.test(e.as)?e.as:void 0,n=Ee(e.expr);return t&&n?{op:`derive`,as:t,expr:n}:null}case`group`:{let t=Array.isArray(e.by)?e.by.map(N):[];if(!t.length||t.length>3||!t.every(e=>!!e)||!Array.isArray(e.agg)||!e.agg.length||e.agg.length>6)return null;let n=e.agg.map(De);if(!n.every(e=>e!==null))return null;let r=[...t,...n.map(e=>e.as)];if(new Set(r).size!==r.length)return null;let i=e.fill===void 0?void 0:w(e.fill,[`hour_of_day`,`weekday`]);return e.fill!==void 0&&!i?null:E({op:`group`,by:t,agg:n,fill:i})}case`sort`:{let t=N(e.by),n=e.dir===void 0?void 0:w(e.dir,[`asc`,`desc`]);return t&&(e.dir===void 0||n)?E({op:`sort`,by:t,dir:n}):null}case`limit`:{let t=L(e.n,1,500);return t?{op:`limit`,n:t}:null}case`pick`:{if(!Array.isArray(e.fields)||!e.fields.length||e.fields.length>12)return null;let t=e.fields.map(N);return t.every(e=>!!e)?{op:`pick`,fields:t}:null}default:return null}}function ke(e,t){if(e===void 0)return;if(!x(e)){F(t,`datasets is not an object`);return}let n={};for(let[r,i]of Object.entries(e).slice(0,8)){let e=e=>F(t,`dataset ${r} dropped: ${e}`);if(!he.test(r)||j.test(r)||_e.has(r)){e(`a dataset name starts with a lowercase letter and is not like r1`);continue}if(!x(i)){e(`it is not an object`);continue}let a=typeof i.from==`string`?i.from:``,o=j.test(a);if(!o&&!Object.hasOwn(n,a)){e(`from "${a.slice(0,24)}" is not a result id or an earlier dataset`);continue}if(o&&t.bound&&!t.sources.has(a)){e(`no rows of ${a} came with the view`);continue}let s=i.steps===void 0?[]:i.steps;if(!Array.isArray(s)||s.length>8){e(`steps must be a list of at most 8`);continue}let c=s.map(Oe),l=c.findIndex(e=>e===null);if(l>=0){e(`step ${l+1} is not valid`);continue}n[r]={from:a,...c.length?{steps:c}:{}},t.datasets.add(r)}return Object.keys(n).length?n:void 0}function Ae(e,t){if(e===void 0)return;if(!x(e)){F(t,`vars is not an object`);return}let n={};for(let[r,i]of Object.entries(e).slice(0,12)){let e=e=>F(t,`var ${r} dropped: ${e}`);if(!he.test(r)||_e.has(r)){e(`a var name starts with a lowercase letter`);continue}if(!x(i)){e(`it is not an object`);continue}let a=typeof i.of==`string`?i.of:``,o=w(i.fn,le),s=i.field===void 0?void 0:N(i.field),c=i.format===void 0?void 0:w(i.format,O),l=i.row===void 0?void 0:L(i.row,0,499);t.datasets.has(a)?o?o!==`count`&&!s||i.field!==void 0&&!s?e(`field is missing or not a field name`):i.format!==void 0&&!c||i.row!==void 0&&l===void 0?e(`format or row is not valid`):(n[r]=E({of:a,fn:o,field:s,row:l,format:c}),t.vars.add(r)):e(`fn is not one of count, sum, avg, min, max, cell`):e(`dataset "${a.slice(0,24)}" is not defined`)}return Object.keys(n).length?n:void 0}var je=(e,t)=>new Set([`type`,...Object.keys(me[e].props),...t.bound&&Me(e)?[`block`]:[]]),Me=e=>re.includes(e)||[`triage`,`table`,`stats`,`chart`].includes(e);function Ne(e,t,n,r){let i=je(t,r);for(let a of Object.keys(e))i.has(a)||F(r,`${n}: ${a} is not a prop of ${t}, dropped`)}function R(e,t,n,r){if(!Array.isArray(e))return[];e.length>12&&F(r,`${n} holds at most 12 children, the rest are dropped`);let i=[];return e.slice(0,12).forEach((e,a)=>{let o=V(e,t,`${n}[${a}]`,r);o&&i.push(o)}),i}function Pe(e,t,n){if(!Array.isArray(e))return[];let r=[];for(let[i,a]of e.slice(0,6).entries()){if(!x(a))continue;let e=I(n,`${t}.tiles[${i}].label`,a.label,D.label),o=I(n,`${t}.tiles[${i}].value`,typeof a.value==`number`&&Number.isFinite(a.value)?String(a.value):a.value,D.tileValue,{figures:!1});if(!e||!o){F(n,`${t}.tiles[${i}] needs a label and a value`);continue}if(!P(o).length){F(n,`${t}.tiles[${i}].value must be a {name} from vars: a tile never shows a figure the model wrote`);continue}r.push(E({label:e,value:o,sub:I(n,`${t}.tiles[${i}].sub`,a.sub,D.tileSub,{figures:!1}),tone:w(a.tone,fe)}))}return e.length>6&&F(n,`${t}.tiles holds at most 6 tiles`),r}function Fe(e,t,n){if(!Array.isArray(e))return;let r=[];for(let[i,a]of e.slice(0,6).entries()){let e=x(a)?N(a.field):void 0;if(!x(a)||!e){F(n,`${t}.columns[${i}] needs a field`);continue}r.push(E({field:e,label:I(n,`${t}.columns[${i}].label`,a.label,D.label),format:w(a.format,O)}))}return r.length?r:void 0}function Ie(e,t,n){if(!Array.isArray(e))return[];let r=[];for(let[i,a]of e.slice(0,4).entries()){let e=x(a)?N(a.field):void 0;if(!x(a)||!e){F(n,`${t}.series[${i}] needs a field`);continue}r.push(E({field:e,name:I(n,`${t}.series[${i}].name`,a.name,D.label)}))}return r}function z(e,t,n,r){let i=r.parseBlock?.(e.block)??null;return!i||i.kind!==t?(F(r,`${n}: the ${t} block is missing or not valid`),null):i}function B(e,t,n){if(n!==void 0){if(!Se(n)){F(e,`${t}.from must be a result id such as r1`);return}return n}}function Le(e,t,n){if(n!==void 0){if(typeof n!=`string`||!e.datasets.has(n)){F(e,`${t}.data names "${String(n).slice(0,24)}", which is not a dataset of this view`);return}return n}}function V(e,t,n,r){if(!x(e))return F(r,`${n} is not an object`),null;let i=w(e.type,ie);if(!i)return F(r,`${n}: "${String(e.type??``).slice(0,24)}" is not a component, dropped`),null;if(t>4)return F(r,`${n} is nested deeper than 4 levels, dropped`),null;if(r.nodes>=40)return r.nodeLimitNoted||F(r,`a view holds at most 40 nodes, the rest are dropped`),r.nodeLimitNoted=!0,null;switch(r.nodes++,Ne(e,i,n,r),i){case`column`:case`row`:{let a=R(e.children,t+1,`${n}.children`,r);return a.length||r.bound?{type:i,children:a}:(F(r,`${n}: a ${i} with no valid child is dropped`),null)}case`section`:{let a=I(r,`${n}.title`,e.title,D.title),o=R(e.children,t+1,`${n}.children`,r);return!a||!o.length?(F(r,`${n}: a section needs a title and a valid child`),null):{type:i,title:a,children:o}}case`tabs`:{let a=[],o=Array.isArray(e.tabs)?e.tabs:[];o.length>6&&F(r,`${n}.tabs holds at most 6 tabs`);for(let[e,i]of o.slice(0,6).entries()){let o=x(i)?I(r,`${n}.tabs[${e}].label`,i.label,D.label):void 0,s=x(i)?R(i.children,t+1,`${n}.tabs[${e}].children`,r):[];o&&s.length?a.push({label:o,children:s}):F(r,`${n}.tabs[${e}] needs a label and a valid child`)}return a.length?{type:i,tabs:a}:(F(r,`${n}: tabs with no valid tab is dropped`),null)}case`text`:{let t=I(r,`${n}.text`,e.text,D.text,{figures:!1});if(!t)return null;let a=e.href===void 0?void 0:T(e.href);return e.href!==void 0&&!a&&F(r,`${n}.href is not an http or https link, dropped`),E({type:i,text:t,tone:w(e.tone,[`muted`]),href:a})}case`triage`:{let t=r.bound?z(e,`triage`,n,r):void 0;return r.bound&&!t?null:E({type:i,window:w(e.window,de),title:I(r,`${n}.title`,e.title,D.title),block:t??void 0})}case`table`:{let t=B(r,n,e.from),a=Le(r,n,e.data);if(t===void 0==(a===void 0))return F(r,`${n}: a table reads one of data or from`),null;let o=r.bound&&t?z(e,`table`,n,r):void 0;return r.bound&&t&&!o?null:E({type:i,title:I(r,`${n}.title`,e.title,D.title),data:a,from:t,columns:a?Fe(e.columns,n,r):void 0,limit:L(e.limit,1,50),block:o??void 0})}case`stats`:{let t=B(r,n,e.from),a=t?[]:Pe(e.tiles,n,r);if(!t&&!a.length)return F(r,`${n}: stats needs tiles or a from`),null;let o=r.bound&&t?z(e,`stats`,n,r):void 0;return r.bound&&t&&!o?null:E({type:i,title:I(r,`${n}.title`,e.title,D.title),from:t,tiles:a.length?a:void 0,block:o??void 0})}case`chart`:{let t=B(r,n,e.from),a=I(r,`${n}.title`,e.title,D.title);if(t){let o=r.bound?z(e,`chart`,n,r):void 0;return r.bound&&!o?null:E({type:i,title:a,from:t,block:o??void 0})}let o=Le(r,n,e.data),s=w(e.chartType,ue),c=N(e.x),l=Ie(e.series,n,r);return!o||!s||!c||!l.length?(F(r,`${n}: a chart needs data, chartType, x, and series, or a from`),null):E({type:i,title:a,data:o,chartType:s,x:c,xFormat:w(e.xFormat,O),series:l,unit:I(r,`${n}.unit`,e.unit,D.unit),finding:I(r,`${n}.finding`,typeof e.finding==`string`?e.finding.replace(/\s+/g,` `):e.finding,D.finding,{figures:!1}),limit:L(e.limit,1,31)})}default:{let t=B(r,n,e.from);if(!t)return F(r,`${n}: ${i} needs a from, the id of a tool result`),null;let a=r.bound?z(e,i,n,r):void 0;return r.bound&&!a?null:E({type:i,from:t,nth:L(e.nth,0,9),title:I(r,`${n}.title`,e.title,D.title),limit:L(e.limit,1,50),block:a??void 0})}}}function Re(e){return typeof e==`string`?e.length>D.cell?`${e.slice(0,D.cell-1)}…`:e:typeof e==`number`?Number.isFinite(e)?e:null:typeof e==`boolean`?e:null}function ze(e,t){if(!x(e))return;let n={},r=0;for(let[i,a]of Object.entries(e)){if(!j.test(i)||!x(a)||!Array.isArray(a.columns)||!Array.isArray(a.rows))continue;let e=a.columns.map(e=>N(e));if(!e.length||e.length>12||!e.every(e=>!!e))continue;let o=[];for(let t of a.rows.slice(0,te)){if(!Array.isArray(t)||r+e.length>12e3)break;o.push(e.map((e,n)=>Re(t[n]))),r+=e.length}o.length<a.rows.length&&F(t,`${i}: only ${o.length} of ${a.rows.length} rows came with the view`);let s=L(a.more,1,1e9);n[i]={columns:e,rows:o,...s?{more:s}:{}},t.sources.add(i)}return Object.keys(n).length?n:void 0}function Be(e,t={}){let n={bound:t.bound===!0,notes:[],nodes:0,nodeLimitNoted:!1,datasets:new Set,vars:new Set,sources:new Set,...t.parseBlock?{parseBlock:t.parseBlock}:{}};if(!x(e))return{ok:!1,reason:`the view is not an object`,notes:n.notes};if(e.root===void 0)return{ok:!1,reason:`the view has no root`,notes:n.notes};let r=new Set([`v`,`title`,`datasets`,`vars`,`root`,...n.bound?[`sources`,`total`,`tzOffsetMin`]:[]]);for(let t of Object.keys(e))r.has(t)||F(n,`${t} is not a prop of a view, dropped`);let i=n.bound?ze(e.sources,n):void 0,a=ke(e.datasets,n),o=Ae(e.vars,n),s=V(e.root,1,`root`,n);if(!s)return{ok:!1,reason:`the view has no valid node`,notes:n.notes};let c={type:`column`,children:s.type===`column`?s.children:[s]},l=n.bound?L(e.total,0,12):void 0,u=n.bound?L(e.tzOffsetMin,-840,840):void 0;return{ok:!0,view:E({v:1,title:I(n,`title`,e.title,D.title),sources:i,datasets:a,vars:o,tzOffsetMin:u,root:c,total:l}),notes:n.notes,nodes:n.nodes}}function Ve(e,t,n={}){return V(e,2,`node`,{bound:n.bound===!0,notes:[],nodes:0,nodeLimitNoted:!1,datasets:new Set(Object.keys(t.datasets??{})),vars:new Set(Object.keys(t.vars??{})),sources:new Set,...n.parseBlock?{parseBlock:n.parseBlock}:{}})}function He(e,t=80){let n=[],r=(e,i)=>{if(!(n.length>=t||i>16)){if(Array.isArray(e)){for(let t of e)r(t,i);return}if(x(e)){typeof e.type==`string`&&n.push(e);for(let t of[`root`,`children`,`tabs`])t in e&&r(e[t],i+1)}}};return r(e,0),n}function H(e){let t=[e];if(`children`in e)for(let n of e.children)t.push(...H(n));if(e.type===`tabs`)for(let n of e.tabs)for(let e of n.children)t.push(...H(e));return t}function Ue(e){let t=[];for(let n of H(e.root))`block`in n&&n.block&&t.push(n.block);return t}var We=60,Ge=240,Ke=4e3;function U(e,t=20){if(!Array.isArray(e))return;let n=e.map(e=>S(e)).filter(e=>!!e);return n.length?n.slice(0,t):void 0}var qe=[`running`,`done`,`failed`,`interrupted`,`cancelled`],Je=[`pr_check`,`post_merge`,`ci_failure`,`ticket_review`,`outage`,`recovery`,`digest`,`rerun`,`test_design`,`nightly_run`],Ye=[`pass`,`product_failure`,`test_failure`,`environment_failure`,`flaky`,`needs_attention`,`info`],Xe=[`pending`,`approved`,`rejected`,`executed`,`expired`,`superseded`],Ze=[`flaky_spec`,`env_quirk`,`convention`,`decision`,`note`];function Qe(e){let t=S(e.id,200);return t?E({id:t,kind:w(e.kind,Je),status:w(e.status,qe),outcome:w(e.outcome,Ye),title:S(e.title),dotName:S(e.dotName,120),startedAt:S(e.startedAt,40),durationMs:C(e.durationMs),passed:C(e.passed),failed:C(e.failed)}):null}function $e(e){let t=C(e.number);return t===void 0||t<=0||!Number.isInteger(t)?null:E({number:t,title:S(e.title),state:w(e.state,[`open`,`draft`,`merged`,`closed`]),author:S(e.author,120),branch:S(e.branch,200),url:T(e.url),checks:w(e.checks,[`passing`,`failing`,`pending`,`none`]),lastReport:S(e.lastReport),lastReportRunId:S(e.lastReportRunId,200),updatedAt:S(e.updatedAt,40)})}function et(e){let t=S(e.key,60);return t?E({key:t,title:S(e.title),severity:w(e.severity,[`low`,`medium`,`high`,`critical`]),status:S(e.status,60),url:T(e.url),runId:S(e.runId,200)}):null}function tt(e){let t=S(e.name,120);return t?E({name:t,url:T(e.url),status:w(e.status,[`up`,`down`,`degraded`,`unknown`]),httpStatus:C(e.httpStatus),latencyMs:C(e.latencyMs),checkedAt:S(e.checkedAt,40),error:S(e.error)}):null}function nt(e){let t=S(e.id,200),n=S(e.text,Ke);return!t||!n?null:{id:t,watchId:S(e.watchId,200)??``,kind:w(e.kind,Ze)??`note`,text:n,source:e.source===`agent`?`agent`:`user`,createdAt:S(e.createdAt,40)??``}}function rt(e){let t=S(e.id,200),n=w(e.status,Xe),r=x(e.action)?e.action:null;return!t||!n||!r||typeof r.kind!=`string`||typeof r.body!=`string`?null:e}function it(e){let t=S(e.id,120),n=S(e.title)??S(e.scenario);return!t||!n?null:E({id:t,title:n,priority:S(e.priority,40),tested:typeof e.tested==`boolean`?e.tested:void 0,result:w(e.result,[`passed`,`failed`,`skipped`]),resultSource:w(e.resultSource,[`runner`,`manual`]),status:w(e.status,[`draft`,`ready`,`retired`])})}function at(e){if(!x(e))return null;let t=S(e.key,60);return t?E({key:t,title:S(e.title),url:T(e.url),risk:w(e.risk,[`low`,`medium`,`high`]),risks:U(e.risks),testIdeas:U(e.testIdeas),openQuestions:U(e.openQuestions),runId:S(e.runId,200),approvalId:S(e.approvalId,200)}):null}var ot=[`ok`,`attention`,`bad`],st=[`bar`,`stacked_bar`,`line`];function ct(e){let t=S(e.label,60),n=typeof e.value==`number`&&Number.isFinite(e.value)?String(e.value):S(e.value,24);return!t||!n?null:E({label:t,value:n,sub:S(e.sub,120),tone:w(e.tone,ot)})}function W(e){if(!Array.isArray(e))return;let t=[];for(let n of e){if(!x(n))continue;let e=S(n.runId,200),r=S(n.title,120);e&&r&&t.push({runId:e,title:r})}return t.length?t.slice(0,6):void 0}function lt(e,t){if(!Array.isArray(e))return[];let n=[];for(let r of e){if(!x(r)||!Array.isArray(r.values))continue;let e=S(r.name,We);if(!e)continue;let i=Array.from({length:t},(e,t)=>C(r.values[t])??null);n.push({name:e,values:i})}return n.slice(0,4)}function ut(e){let t=Array.isArray(e.labels)?e.labels:[],n=Array.isArray(e.series)?e.series.filter(x):[];if(t.length&&n.length)return t.slice(0,31).map((e,t)=>{let r={Label:S(e,80)??``};for(let e of n.slice(0,4))r[S(e.name,We)??`Value`]=Array.isArray(e.values)?C(e.values[t])??null:null;return r})}var dt=[`review`,`product`,`test`,`environment`,`flaky`];function ft(e){let t=S(e.id,600),n=S(e.test),r=S(e.runId,200),i=w(e.cause,dt);if(!t||!n||!r||!i)return null;let a=e=>{let t=C(e);return t!==void 0&&t>=0?Math.floor(t):void 0},o=x(e.pr)?e.pr:null,s=o?C(o.number):void 0;return E({id:t,test:n,file:S(e.file,300),cause:i,source:e.source===`review`?`review`:void 0,severity:w(e.severity,[`critical`,`high`,`medium`,`low`]),bugKey:S(e.bugKey,100),ref:S(e.ref,320),last:w(e.last,[`failed`,`flaky`,`passed`]),failedRuns:a(e.failedRuns),ofRuns:a(e.ofRuns),runId:r,runTitle:S(e.runTitle,200),pr:o&&s!==void 0&&s>0&&Number.isInteger(s)?E({number:s,title:S(o.title,200),url:T(o.url)}):void 0,dotId:S(e.dotId,200),error:S(e.error),rerun:e.rerun===!0||void 0,flakyMarked:e.flakyMarked===!0||void 0,defect:w(e.defect,[`drafted`,`filed`,`rejected`]),defectUrl:T(e.defectUrl)})}var pt=[`github_pr`,`github_issue`,`jira`,`linear`],mt=[`open`,`draft`,`merged`,`closed`],ht=[`backlog`,`todo`,`active`,`done`,`canceled`],gt=[`low`,`medium`,`high`],_t=[`urgent`,`high`,`medium`,`low`,`none`],vt=10,yt=400,bt=12;function G(e){let t=C(e);return t!==void 0&&t>=0?Math.floor(t):void 0}function xt(e){if(!Array.isArray(e))return;let t=[];for(let n of e){let e=typeof n==`string`?{name:n}:x(n)?n:null,r=e?S(e.name,60):void 0;if(!e||!r)continue;let i=typeof e.color==`string`&&/^#?[0-9a-fA-F]{6}$/.test(e.color.trim())?e.color.trim().replace(/^#/,``).toLowerCase():void 0;t.push(E({name:r,color:i}))}return t.length?t.slice(0,8):void 0}function St(e){if(!Array.isArray(e))return;let t=[];for(let n of e){if(!x(n))continue;let e=S(n.repo,200),r=C(n.number);!e||r===void 0||r<=0||!Number.isInteger(r)||t.push(E({repo:e,number:r,title:S(n.title,200),state:w(n.state,mt),url:T(n.url)}))}return t.length?t.slice(0,5):void 0}function Ct(e){if(!x(e))return;let t=S(e.runId,200),n=S(e.at,40);if(t&&n)return E({runId:t,at:n,headline:S(e.headline,300),risk:w(e.risk,gt),comment:w(e.comment,[`none`,`waiting`,`posted`])})}function wt(e){if(!x(e))return null;let t=S(e.name,60);return t?{name:t,kind:w(e.kind,ht)??`todo`}:null}function Tt(e,t){let n=S(e.repo,200),r=C(e.number),i=w(e.state,mt);if(!n||r===void 0||r<=0||!Number.isInteger(r)||!i)return null;let a=x(e.checks)?e.checks:null,o=a?w(a.state,[`passing`,`failing`,`pending`,`none`]):void 0,s=[];for(let e of a&&Array.isArray(a.items)?a.items:[]){let t=x(e)?S(e.name,100):void 0,n=x(e)?w(e.state,[`passed`,`failed`,`pending`]):void 0;t&&n&&s.push({name:t,state:n})}let c=x(e.report)?e.report:null,l=c?S(c.runId,200):void 0,u=c?S(c.headline,300):void 0,d=c?S(c.at,40):void 0;return E({...t,kind:`github_pr`,repo:n,number:r,state:i,base:S(e.base,200),head:S(e.head,200),author:S(e.author,120),additions:G(e.additions),deletions:G(e.deletions),files:G(e.files),checks:a&&o?E({state:o,passed:G(a.passed)??0,failed:G(a.failed)??0,pending:G(a.pending)??0,items:s.length?s.slice(0,bt):void 0}):void 0,review:w(e.review,[`approved`,`changes_requested`,`review_required`,`none`]),labels:xt(e.labels),report:l&&u&&d?E({runId:l,headline:u,outcome:w(c.outcome,Ye),risk:w(c.risk,gt),at:d}):void 0})}function Et(e,t,n){let r=S(e.key,200),i=wt(e.status);if(!r||!i)return null;let a=x(e.priority)?e.priority:null,o=a?S(a.name,40):void 0,s=C(e.number),c=S(typeof e.description==`string`?e.description.replace(/\s+/g,` `):void 0,yt);return E({...n,kind:t,key:r,repo:S(e.repo,200),number:s!==void 0&&s>0&&Number.isInteger(s)?s:void 0,issueType:S(e.issueType,60),status:i,priority:o?{name:o,level:w(a.level,_t)??`none`}:void 0,assignee:S(e.assignee,120),author:S(e.author,120),labels:xt(e.labels),description:c,linkedPulls:St(e.linkedPulls),review:Ct(e.review)})}function Dt(e){if(!x(e))return null;let t=w(e.kind,pt),n=S(e.ref,300),r=S(e.title,300);if(!t||!n||!r)return null;let i=E({ref:n,title:r,url:T(e.url),dotId:S(e.dotId,200),updatedAt:S(e.updatedAt,40)});return t===`github_pr`?Tt(e,i):Et(e,t,i)}function K(e,t){if(!Array.isArray(e))return null;let n=[],r=0;for(let i of e){let e=x(i)?t(i):null;e?n.push(e):r++}let i=Math.max(0,n.length-50);return{rows:n.slice(0,50),dropped:r,extra:i}}function Ot(e){if(e==null)return null;if(typeof e==`string`)return S(e)??``;if(typeof e==`number`)return Number.isFinite(e)?e:null;if(typeof e==`boolean`)return e;if(Array.isArray(e))return S(e.map(e=>x(e)||Array.isArray(e)?JSON.stringify(e):String(e)).join(`, `))??``;try{return S(JSON.stringify(e))??``}catch{return``}}function kt(e,t){let n=Array.isArray(e)?e.filter(x):x(e)?null:[];if(n===null){let n=Object.entries(e).filter(([e])=>e!==`id`&&e!==`kind`);return n.length?{...t,kind:`table`,columns:[`Field`,`Value`],rows:n.slice(0,50).map(([e,t])=>({Field:e,Value:Ot(t)}))}:null}if(!n.length)return null;let r=[];for(let e of n)for(let t of Object.keys(e))!r.includes(t)&&r.length<6&&r.push(t);if(!r.length)return null;let i=n.slice(0,50).map(e=>Object.fromEntries(r.map(t=>[t,Ot(e[t])]))),a=n.length-i.length;return{...t,kind:`table`,columns:r,rows:i,...a>0?{more:(t.more??0)+a}:{}}}var At=[`ready`,`ready_with_risk`,`not_ready`,`no_tickets`];function jt(e){let t=S(e,600);if(t)return/^#\/[\w\-./%?=&#:@]*$/.test(t)?t:T(t)}function Mt(e){if(!x(e))return null;let t=w(e.answer,At);if(!t)return null;let n=e=>{let t=C(e);return t!==void 0&&t>=0?Math.floor(t):0},r=x(e.counts)?e.counts:{},i=(Array.isArray(e.reasons)?e.reasons:[]).filter(x).map(e=>{let t=S(e.text,400),n=w(e.level,[`blocker`,`risk`]);return!t||!n?null:E({level:n,text:t,ref:S(e.ref,200),href:jt(e.href),memberId:S(e.memberId,200)??``,memberName:S(e.memberName,120),openLabel:w(e.openLabel,[`See them`,`Review`])})}).filter(e=>!!e).slice(0,50);return{milestone:S(e.milestone,120)??``,answer:t,summary:S(e.summary,400)??``,counts:{total:n(r.total),passing:n(r.passing),failing:n(r.failing),notTested:n(r.notTested),partlyTested:n(r.partlyTested),outOfDate:n(r.outOfDate)},reasons:i,milestones:U(e.milestones,40)??[],rule:S(e.rule,400)??``,builtAt:S(e.builtAt,40)??``}}function Nt(e){for(let t of[`rows`,`items`,`data`,`results`])if(Array.isArray(e[t]))return e[t];for(let t of Object.values(e))if(Array.isArray(t)&&t.some(x))return t;if(x(e.data))return e.data;let t=Object.fromEntries(Object.entries(e).filter(([e])=>!Pt.has(e)));return Object.keys(t).length?t:void 0}var Pt=new Set([`id`,`v`,`kind`,`title`,`dotId`,`state`,`more`,`tool`]);function Ft(e,t){if(!x(e))return{ok:!1,reason:`block is not an object`};let n=S(e.id,200)??t;if(!n)return{ok:!1,reason:`block has no id`};let r=C(e.more),i=E({id:n,v:1,title:S(e.title,160),dotId:S(e.dotId,200),state:w(e.state,[`loading`,`ready`]),more:r!==void 0&&r>0?Math.floor(r):void 0,tool:S(e.tool,200)}),a=typeof e.kind==`string`?e.kind:``,o=(e,t)=>t>0?{...e,more:(e.more??0)+t}:e,s=(t,n,r)=>{let s=K(e[t],n);return s?!s.rows.length&&s.dropped>0?c(`no valid ${t}`,e[t]):{ok:!0,block:o(r(s.rows),s.extra),dropped:s.dropped,fallback:!1}:i.state===`loading`?{ok:!0,block:r([]),dropped:0,fallback:!1}:c(`${a} block has no ${t} list`)},c=(t,n=Nt(e))=>{let r=kt(n,i);return r?{ok:!0,block:r,dropped:0,fallback:!0}:{ok:!1,reason:t}};switch(a){case`runs`:return s(`runs`,Qe,e=>({...i,kind:`runs`,runs:e}));case`pulls`:return s(`pulls`,$e,t=>({...i,kind:`pulls`,...S(e.repo,200)?{repo:S(e.repo,200)}:{},pulls:t}));case`approvals`:return s(`approvals`,rt,e=>({...i,kind:`approvals`,approvals:e}));case`defects`:return s(`defects`,et,e=>({...i,kind:`defects`,defects:e}));case`probes`:return s(`probes`,tt,e=>({...i,kind:`probes`,probes:e}));case`memory`:return s(`items`,nt,e=>({...i,kind:`memory`,items:e}));case`test_cases`:return s(`cases`,it,t=>({...i,kind:`test_cases`,...S(e.runId,200)?{runId:S(e.runId,200)}:{},cases:t}));case`triage`:{let t=C(e.runsChecked),n=t!==void 0&&t>=0?Math.floor(t):void 0,r=w(e.window,[`last_merge`,`today`,`recent`]),a=S(e.since,40),o=a&&!Number.isNaN(Date.parse(a))?a:void 0,c=C(e.moreBugs),l=c!==void 0&&c>0?Math.floor(c):void 0;return s(`rows`,ft,e=>({...i,kind:`triage`,...l?{moreBugs:l}:{},...n===void 0?{}:{runsChecked:n},...r?{window:r}:{},...o?{since:o}:{},rows:e}))}case`cards`:{let t=K(e.cards,Dt);if(!t)return i.state===`loading`?{ok:!0,block:{...i,kind:`cards`,cards:[]},dropped:0,fallback:!1}:c(`cards block has no cards list`);let n=t.rows.slice(0,vt);return!n.length&&t.dropped>0?c(`no valid cards`,e.cards):{ok:!0,block:o({...i,kind:`cards`,cards:n},t.rows.length-n.length+t.extra),dropped:t.dropped,fallback:!1}}case`release_call`:{let t=Mt(e.call);return t?{ok:!0,block:{...i,kind:`release_call`,call:t},dropped:0,fallback:!1}:c(`release_call block has no call with an answer`,e.call)}case`ticket_review`:{let t=at(e.review);return t?{ok:!0,block:{...i,kind:`ticket_review`,review:t},dropped:0,fallback:!1}:c(`ticket_review block has no review with a key`,e.review)}case`table`:{let t=kt(e.rows,i);if(!t)return{ok:!1,reason:`table block has no rows`};let n=U(e.columns,6);if(Array.isArray(e.rows)&&n&&n.every(e=>t.rows.some(t=>e in t))){let r=e.rows.filter(x).slice(0,50);return{ok:!0,block:{...t,columns:n,rows:r.map(e=>Object.fromEntries(n.map(t=>[t,Ot(e[t])])))},dropped:0,fallback:!1}}return{ok:!0,block:t,dropped:0,fallback:!1}}case`stats`:{let t={...W(e.runs)?{runs:W(e.runs)}:{},...S(e.runsLabel,60)?{runsLabel:S(e.runsLabel,60)}:{}},n=K(e.tiles,ct);if(!n)return i.state===`loading`?{ok:!0,block:{...i,kind:`stats`,tiles:[]},dropped:0,fallback:!1}:c(`stats block has no tiles list`);let r=n.rows.slice(0,8);return r.length?{ok:!0,block:{...i,kind:`stats`,tiles:r,...t},dropped:n.dropped+(n.rows.length-r.length),fallback:!1}:c(`no valid tiles`,e.tiles)}case`chart`:{let t=w(e.chartType,st),n=(Array.isArray(e.labels)?e.labels:[]).slice(0,31).map(e=>S(e,80)??``),r=lt(e.series,n.length);return!t||!n.length||!r.length?i.state===`loading`?{ok:!0,block:{...i,kind:`chart`,chartType:t??`bar`,labels:[],series:[]},dropped:0,fallback:!1}:c(t?`chart block has no labels or series`:`chart block has no valid chartType`,ut(e)??null):{ok:!0,block:E({...i,kind:`chart`,chartType:t,labels:n,series:r,unit:S(e.unit,12),finding:S(typeof e.finding==`string`?e.finding.replace(/[^\S\u00a0]+/g,` `):void 0,Ge),runs:W(e.runs),runsLabel:S(e.runsLabel,60)}),dropped:0,fallback:!1}}case`view`:return It(e,i);default:return c(a?`unknown block kind ${a}`:`block has no kind`)}}function q(e){let t=Ft(e);return t.ok&&!t.fallback?t.block:null}function It(e,t){let n=x(e.view)?Be(e.view,{bound:!0,parseBlock:q}):t.state===`loading`?Be({root:{type:`column`,children:[]}},{bound:!0,parseBlock:q}):{ok:!1,reason:`view block has no view`,notes:[]};if(n.ok)return{ok:!0,block:{...t,kind:`view`,view:n.view},dropped:n.notes.length,fallback:!1};let r=He(e.view).map(e=>q(e.block)).filter(e=>e!==null&&e.kind!==`view`);if(!r.length)return{ok:!1,reason:n.reason};let i=r.map(e=>({type:e.kind,block:e}));return{ok:!0,block:{...t,kind:`view`,view:{v:1,root:{type:`column`,children:i}}},dropped:0,fallback:!0}}var J=s(o(),1),Y=p(),Lt=(0,J.createContext)({ask:()=>!1});function Rt({host:e,children:t}){return(0,Y.jsx)(Lt.Provider,{value:e,children:t})}var zt=()=>(0,J.useContext)(Lt);function Bt(t){return t instanceof e?t.status===0?t.message:`${t.message} (${t.status})`:t instanceof Error?t.message:`Something went wrong.`}var Vt=`Wait for the current answer to finish, then try again.`;function Ht(){let[e,t]=(0,J.useState)(null),[n,r]=(0,J.useState)(null),i=(0,J.useRef)(!1);return{busy:e,result:n,setResult:r,run:(0,J.useCallback)(async(e,n)=>{if(!i.current){i.current=!0,t(e),r(null);try{r(await n())}catch(e){r({tone:`error`,text:Bt(e)})}finally{i.current=!1,t(null)}}},[])}}function Ut(e,t,n){return e.ask(t)?{tone:`info`,text:n}:{tone:`error`,text:Vt}}function Wt({result:e}){return(0,Y.jsx)(`p`,{className:`cblock__result${e?` cblock__result--${e.tone}`:``}`,role:`status`,"aria-live":`polite`,children:e?(0,Y.jsxs)(Y.Fragment,{children:[e.text,e.link&&(0,Y.jsxs)(Y.Fragment,{children:[` `,(0,Y.jsx)(`a`,{href:e.link.href,children:e.link.label})]})]}):null})}var Gt=e=>`#/runs/${encodeURIComponent(e)}`;function Kt({result:e,lineRef:t}){return(0,Y.jsx)(`p`,{ref:t,className:`ocard__result${e?` ocard__result--${e.tone}`:``}`,role:`status`,"aria-live":`polite`,children:e?(0,Y.jsxs)(Y.Fragment,{children:[e.text,e.link&&(0,Y.jsxs)(Y.Fragment,{children:[` `,(0,Y.jsx)(`a`,{href:e.link.href,children:e.link.label})]})]}):null})}function qt({href:e,label:t,name:n,of:r}){return(0,Y.jsxs)(`a`,{className:`btn btn--secondary btn--sm`,href:e,target:`_blank`,rel:`noopener noreferrer`,"aria-label":`${t}${r?` of`:``} ${n} (opens in a new tab)`,children:[(0,Y.jsx)(`span`,{className:`btn__label`,children:t}),(0,Y.jsx)(`span`,{className:`btn__icon`,"aria-hidden":`true`,children:(0,Y.jsx)(u,{size:14})})]})}function Jt(e,t){return e.result===`executed`?{tone:`ok`,text:t.done}:e.result===`pending_approval`?{tone:`ok`,text:t.draft,link:{href:`#/inbox`,label:`Open the Inbox`}}:{tone:`error`,text:e.note??t.none,...e.runId?{link:{href:Gt(e.runId),label:`Open the check`}}:{}}}function Yt(e){return e.kind===`github_pr`?`PR #${e.number}`:e.key}function Xt({card:e,onStatus:t}){let n=zt(),r=Ht(),{canEdit:i}=ee(),[o,s]=(0,J.useState)(null),c=(0,J.useId)(),l=(0,J.useRef)(null),u=(0,J.useRef)(null),d=e.kind===`github_pr`,f=Yt(e),p=e.dotId??n.dotId,h=!d||e.state!==`closed`,g=d&&e.url&&/\/pull\/\d+\/?$/.test(e.url)?`${e.url.replace(/\/$/,``)}/files`:void 0,_=(0,J.useRef)(null);(0,J.useEffect)(()=>{r.result&&o&&_.current?.scrollIntoView?.({block:`nearest`})},[r.result,o]);let v=e=>{r.setResult(null),s(t=>t===e?null:e)},y=e=>{s(null),requestAnimationFrame(()=>(e===`comment`?l:u).current?.focus())},b=()=>r.run(`review`,async()=>{if(!p)return Ut(n,d?`Review PR #${e.number} now`:`Review ${e.ref}`,d?`Asked the dot to review this PR.`:`Asked the dot to review this ticket.`);let t=await a.requestReview(p,d?{pr:e.number,repo:e.repo}:{ticket:e.ref}),r=t.runId?{href:Gt(t.runId),label:`Open the review`}:void 0;return t.duplicate?{tone:`info`,text:d?`A review of this head is already queued or running.`:`A review of this ticket is already queued or running.`,...r?{link:r}:{}}:{tone:`ok`,text:d?`Review started. What it wants to post waits in the Inbox for your OK.`:`Review started. The comment waits in the Inbox for your OK.`,...r?{link:r}:{}}});return(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(`div`,{className:`ocard__actions`,role:`group`,"aria-label":`Actions for ${f}`,children:[e.url&&(0,Y.jsx)(qt,{href:e.url,label:`Open`,name:f}),h&&(0,Y.jsx)(m,{size:`sm`,loading:r.busy===`review`,"aria-label":d?`Review ${f} now`:`Review ticket ${f}`,onClick:()=>void b(),children:d?`Review now`:`Review ticket`}),i&&(0,Y.jsx)(m,{ref:l,size:`sm`,"aria-label":`Comment on ${f}`,"aria-expanded":o===`comment`,"aria-controls":o===`comment`?c:void 0,onClick:()=>v(`comment`),children:`Comment`}),g&&(0,Y.jsx)(qt,{href:g,label:`View diff`,name:f,of:!0}),!d&&i&&(0,Y.jsx)(m,{ref:u,size:`sm`,"aria-label":`Change status of ${f}`,"aria-expanded":o===`status`,"aria-controls":o===`status`?c:void 0,onClick:()=>v(`status`),children:`Change status`})]}),i&&o===`comment`&&(0,Y.jsx)(Zt,{id:c,card:e,dot:p,name:f,act:r,onDone:()=>y(`comment`),onCancel:()=>y(`comment`)}),i&&o===`status`&&!d&&(0,Y.jsx)(Qt,{id:c,card:e,dot:p,name:f,act:r,onStatus:t,onDone:()=>y(`status`),onCancel:()=>y(`status`)}),(0,Y.jsx)(Kt,{result:r.result,lineRef:_})]})}function Zt({id:e,card:t,dot:n,name:i,act:o,onDone:s,onCancel:c}){let[l,u]=(0,J.useState)(``),d=(0,J.useRef)(``),f=(0,J.useRef)(null),p=(0,J.useId)(),h=(0,J.useRef)(!0);(0,J.useEffect)(()=>(f.current?.focus(),()=>{h.current=!1}),[]);let g=()=>o.run(`comment`,async()=>{if(!l.trim())return f.current?.focus(),{tone:`error`,text:`Write the comment first.`};let e=l,r=await a.cardComment({ref:t.ref,kind:t.kind,...n?{dotId:n}:{},text:e});return _(`approvals`),h.current&&d.current===e&&(r.result===`executed`||r.result===`pending_approval`)&&s(),Jt(r,{done:`Comment posted.`,draft:`Comment ready. It waits in the Inbox for your OK.`,none:`The comment was not sent.`})});return(0,Y.jsxs)(`div`,{id:e,className:`ocard__panel`,onKeyDown:e=>{e.key===`Escape`&&c()},children:[(0,Y.jsx)(`label`,{className:`sr-only`,htmlFor:p,children:`Comment on ${i}`}),(0,Y.jsx)(r,{id:p,ref:f,value:l,rows:3,placeholder:`Write a comment`,onChange:e=>{d.current=e.target.value,u(e.target.value)}}),(0,Y.jsxs)(`div`,{className:`ocard__panel-actions`,children:[(0,Y.jsx)(m,{size:`sm`,variant:`primary`,loading:o.busy===`comment`,onClick:()=>void g(),children:`Post comment`}),(0,Y.jsx)(m,{size:`sm`,variant:`ghost`,onClick:c,children:`Cancel`})]})]})}function Qt({id:e,card:t,dot:n,name:r,act:i,onStatus:o,onDone:s,onCancel:c}){let[l,u]=(0,J.useState)({state:`loading`,options:[],attempt:0}),[d,f]=(0,J.useState)(null),p=(0,J.useRef)(null),h=e=>{p.current=e,f(e)},g=(0,J.useRef)(!0);(0,J.useEffect)(()=>()=>{g.current=!1},[]),(0,J.useEffect)(()=>{let e=new AbortController;return a.cardStatusOptions({ref:t.ref,kind:t.kind,...n?{dotId:n}:{}},e.signal).then(e=>u(t=>({...t,state:`ready`,options:e.options}))).catch(t=>{e.signal.aborted||u(e=>({...e,state:`error`,error:Bt(t)}))}),()=>e.abort()},[t.ref,t.kind,n,l.attempt]);let v=l.options.find(e=>e.id===d),[y,ee]=(0,J.useState)(null),b=async e=>{let i=await a.cardStatus({ref:t.ref,kind:t.kind,...n?{dotId:n}:{},optionId:e.id});_(`approvals`),i.result===`executed`&&o?.({name:e.label,kind:e.kind});let c=i.result===`executed`||i.result===`pending_approval`;return g.current&&c&&(p.current===e.id?s():i.result===`executed`&&u(e=>({...e,attempt:e.attempt+1}))),Jt(i,{done:`Moved ${r} to ${e.label}.`,draft:`Moving ${r} to ${e.label} needs your OK. It waits in the Inbox.`,none:`The status was not changed.`})},x=y??v,S=()=>i.run(`status`,async()=>{if(!v)return{tone:`error`,text:`Pick a status first.`};ee(v);try{return await b(v)}finally{ee(null)}});return(0,Y.jsxs)(`div`,{id:e,className:`ocard__panel`,onKeyDown:e=>{e.key===`Escape`&&c()},children:[l.state===`loading`&&(0,Y.jsxs)(`p`,{className:`ocard__hint`,role:`status`,children:[(0,Y.jsx)(`span`,{className:`spinner`,"aria-hidden":`true`}),` Loading statuses`]}),l.state===`error`&&(0,Y.jsxs)(`p`,{className:`ocard__hint ocard__hint--error`,role:`alert`,children:[l.error,` `,(0,Y.jsx)(`button`,{type:`button`,className:`link-btn`,onClick:()=>u({state:`loading`,options:[],attempt:l.attempt+1}),children:`Try again`})]}),l.state===`ready`&&l.options.length===0&&(0,Y.jsxs)(`p`,{className:`ocard__hint`,children:[r,` has no other status to move to.`]}),l.state===`ready`&&l.options.length>0&&(0,Y.jsx)(`div`,{className:`ocard__choices`,role:`group`,"aria-label":`Move ${r} to`,children:l.options.map(e=>(0,Y.jsx)(`button`,{type:`button`,className:`ocard__choice`,"aria-pressed":d===e.id,onClick:()=>h(e.id),children:e.label},e.id))}),(0,Y.jsxs)(`div`,{className:`ocard__panel-actions`,children:[(0,Y.jsx)(m,{size:`sm`,variant:`primary`,loading:i.busy===`status`,onClick:()=>void S(),children:x?`Move to ${x.label}`:`Move`}),(0,Y.jsx)(m,{size:`sm`,variant:`ghost`,onClick:c,children:`Cancel`})]})]})}function $t(e,t){let[n,r]=(0,J.useState)(!1),i=(0,J.useId)();return{toggle:(0,Y.jsx)(m,{size:`sm`,variant:`ghost`,"aria-expanded":n,"aria-controls":n?i:void 0,"aria-label":`${n?`Hide`:`Show`} card of ${t}`,iconEnd:n?(0,Y.jsx)(f,{size:14}):(0,Y.jsx)(c,{size:14}),onClick:()=>r(e=>!e),children:n?`Hide card`:`Show card`}),panel:n?(0,Y.jsx)(`div`,{id:i,className:`card-disclosure`,children:(0,Y.jsx)(Nn,{...e})}):null,open:n}}function en(e){let t=e.passed+e.failed+e.pending;return e.state===`none`||t===0?`No checks`:e.state===`failing`?`${e.failed} of ${t} checks failing`:e.state===`pending`?`${e.pending} of ${t} checks running`:t===1?`1 check passes`:`All ${t} checks pass`}var tn=5,nn={failed:`failed`,pending:`running`,passed:`passed`},rn={failed:`Failed`,pending:`Running`,passed:`Passed`};function an(e){if(!e.items?.length||e.state!==`failing`&&e.state!==`pending`)return null;let t=e.items.slice(0,tn);return{shown:t,more:Math.max(0,e.passed+e.failed+e.pending-t.length)}}var on={passing:`passed`,failing:`failed`,pending:`running`,none:`none`},sn={approved:`Approved`,changes_requested:`Changes requested`,review_required:`Review requested`,none:`No review yet`},cn={approved:`passed`,changes_requested:`failed`,review_required:`waiting`,none:`none`};function ln(e){let t=e.trim().split(/[\s._-]+/).filter(Boolean);return t.length?(t.length===1?t[0].slice(0,2):`${t[0][0]}${t[t.length-1][0]}`).toUpperCase():`?`}function un(e){let t=parseInt(e.replace(/^#/,``),16),[n,r,i]=[t>>16&255,t>>8&255,t&255],a=e=>e/255<=.03928?e/255/12.92:((e/255+.055)/1.055)**2.4,o=.2126*a(n)+.7152*a(r)+.0722*a(i),s=(.2126*n+.7152*r+.0722*i)/255,c=1.05/(o+.05),l=(o+.05)/.05;return s<.5&&c>=4.5?`#ffffff`:l>=c?`#000000`:`#ffffff`}var X={open:`Open`,draft:`Draft`,merged:`Merged`,closed:`Closed`};function Z(e,t,{size:n=16,className:r},i=`none`){return(0,Y.jsx)(`svg`,{className:`ocard-ico ${e}${r?` ${r}`:``}`,width:n,height:n,viewBox:`0 0 16 16`,fill:i,stroke:`currentColor`,strokeWidth:1.5,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":`true`,focusable:`false`,children:t})}function dn({state:e,...t}){let n=(0,Y.jsx)(`circle`,{cx:`8`,cy:`8`,r:`6.25`});return e===`open`?Z(`ocard-ico--issue`,(0,Y.jsxs)(Y.Fragment,{children:[n,(0,Y.jsx)(`circle`,{cx:`8`,cy:`8`,r:`1.4`,fill:`currentColor`,stroke:`none`})]}),t):e===`completed`?Z(`ocard-ico--issue`,(0,Y.jsxs)(Y.Fragment,{children:[n,(0,Y.jsx)(`path`,{d:`M5.3 8.3l1.9 1.9 3.5-3.9`})]}),t):Z(`ocard-ico--issue`,(0,Y.jsxs)(Y.Fragment,{children:[n,(0,Y.jsx)(`path`,{d:`M4.2 11.8l7.6-7.6`})]}),t)}function fn({kind:e,...t}){switch(e){case`backlog`:return Z(`ocard-ico--lin-backlog`,(0,Y.jsx)(`circle`,{cx:`8`,cy:`8`,r:`6`,strokeDasharray:`2.2 2.2`}),t);case`active`:return Z(`ocard-ico--lin-active`,(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`circle`,{cx:`8`,cy:`8`,r:`6`}),(0,Y.jsx)(`path`,{d:`M8 4.2a3.8 3.8 0 0 1 0 7.6z`,fill:`currentColor`,stroke:`none`})]}),t);case`done`:return Z(`ocard-ico--lin-done`,(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`circle`,{cx:`8`,cy:`8`,r:`6.75`,fill:`currentColor`,stroke:`none`}),(0,Y.jsx)(`path`,{d:`M5.2 8.2l2 2 3.6-4`,stroke:`var(--surface)`,strokeWidth:1.6})]}),t);case`canceled`:return Z(`ocard-ico--lin-canceled`,(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`circle`,{cx:`8`,cy:`8`,r:`6`}),(0,Y.jsx)(`path`,{d:`M5.9 5.9l4.2 4.2M10.1 5.9l-4.2 4.2`})]}),t);default:return Z(`ocard-ico--lin-todo`,(0,Y.jsx)(`circle`,{cx:`8`,cy:`8`,r:`6`}),t)}}function pn({level:e,...t}){if(e===`urgent`)return Z(`ocard-ico--lin-urgent`,(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`rect`,{x:`2`,y:`2`,width:`12`,height:`12`,rx:`3`,fill:`currentColor`,stroke:`none`}),(0,Y.jsx)(`path`,{d:`M8 4.8v4`,stroke:`var(--surface)`,strokeWidth:1.7}),(0,Y.jsx)(`circle`,{cx:`8`,cy:`11.1`,r:`0.95`,fill:`var(--surface)`,stroke:`none`})]}),t);if(e===`none`)return Z(`ocard-ico--lin-nopri`,(0,Y.jsx)(`path`,{d:`M3 8h2.4M6.8 8h2.4M10.6 8H13`}),t);let n=e===`high`?3:e===`medium`?2:1,r=(e,t,r)=>(0,Y.jsx)(`rect`,{x:t,y:13-r,width:`2.6`,height:r,rx:`0.8`,className:e<n?`is-lit`:`is-dim`,fill:`currentColor`,stroke:`none`},e);return Z(`ocard-ico--lin-pri`,(0,Y.jsx)(Y.Fragment,{children:[r(0,2.4,4),r(1,6.7,7),r(2,11,10)]}),t)}var mn={bug:{tone:`bug`,glyph:(0,Y.jsx)(`circle`,{cx:`8`,cy:`8`,r:`2.6`,fill:`#fff`,stroke:`none`})},story:{tone:`story`,glyph:(0,Y.jsx)(`path`,{d:`M5.6 4.2h4.8v7.6L8 9.9l-2.4 1.9z`,fill:`#fff`,stroke:`none`})},epic:{tone:`epic`,glyph:(0,Y.jsx)(`path`,{d:`M8.8 3.8L5.4 8.4h2.3L7.2 12.2l3.4-4.6H8.3z`,fill:`#fff`,stroke:`none`})},subtask:{tone:`task`,glyph:(0,Y.jsx)(`path`,{d:`M5.2 5.2h3.3v3.3H5.2zM8.7 8.7H12v2.3H8.7z`,fill:`#fff`,stroke:`none`})},task:{tone:`task`,glyph:(0,Y.jsx)(`path`,{d:`M5.2 8.2l2 2 3.6-4`,stroke:`#fff`,strokeWidth:1.6})}};function hn(e){let t=(e??``).toLowerCase().replace(/[^a-z]/g,``);return t.includes(`bug`)||t.includes(`defect`)?`bug`:t.includes(`epic`)?`epic`:t.includes(`story`)||t.includes(`feature`)?`story`:t.includes(`sub`)?`subtask`:`task`}function gn({type:e,...t}){let n=mn[hn(e)];return Z(`ocard-ico--jira-type ocard-ico--jira-${n.tone}`,(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`rect`,{x:`1.5`,y:`1.5`,width:`13`,height:`13`,rx:`3`,fill:`currentColor`,stroke:`none`}),n.glyph]}),t)}function _n({level:e,name:t,...n}){let r=/lowest|trivial/i.test(t??``),i=/highest|blocker/i.test(t??``);return e===`urgent`||i?Z(`ocard-ico--jira-high`,(0,Y.jsx)(`path`,{d:`M3.5 8.2L8 3.7l4.5 4.5M3.5 12.2L8 7.7l4.5 4.5`}),n):e===`high`?Z(`ocard-ico--jira-high`,(0,Y.jsx)(`path`,{d:`M3.5 10.2L8 5.7l4.5 4.5`}),n):e===`medium`?Z(`ocard-ico--jira-med`,(0,Y.jsx)(`path`,{d:`M3.5 6.2h9M3.5 9.8h9`}),n):e===`low`&&r?Z(`ocard-ico--jira-low`,(0,Y.jsx)(`path`,{d:`M3.5 3.8L8 8.3l4.5-4.5M3.5 7.8L8 12.3l4.5-4.5`}),n):e===`low`?Z(`ocard-ico--jira-low`,(0,Y.jsx)(`path`,{d:`M3.5 5.8L8 10.3l4.5-4.5`}),n):Z(`ocard-ico--lin-nopri`,(0,Y.jsx)(`path`,{d:`M3.5 8h9`}),n)}function vn({name:e,size:t=20}){let n=ln(e);return(0,Y.jsx)(`span`,{className:`ocard-avatar`,style:{width:t,height:t,fontSize:Math.round(t*.46)},title:e,"aria-hidden":`true`,children:n})}var yn=e=>`#/runs/${encodeURIComponent(e)}`;function Q({iso:e,prefix:t}){return e?(0,Y.jsxs)(`time`,{className:`ocard__when`,dateTime:e,title:y(e),children:[t,v(e)]}):null}function bn({labels:e,tone:t}){return e?.length?(0,Y.jsx)(`ul`,{className:`ocard__labels ocard__labels--${t}`,"aria-label":`Labels`,children:e.map(e=>(0,Y.jsxs)(`li`,{className:`ocard__label`,style:e.color?{background:`#${e.color}`,color:un(e.color),borderColor:`transparent`}:void 0,children:[t===`linear`&&(0,Y.jsx)(`span`,{className:`ocard__label-dot`,"aria-hidden":`true`}),e.name]},e.name))}):null}function $({name:e,role:t}){return(0,Y.jsxs)(`span`,{className:`ocard__person`,children:[(0,Y.jsx)(vn,{name:e,size:18}),(0,Y.jsx)(`span`,{className:`ocard__person-name`,children:e}),t&&(0,Y.jsxs)(`span`,{className:`sr-only`,children:[` (`,t,`)`]})]})}function xn({state:e,label:t}){return(0,Y.jsxs)(`span`,{className:`ocard-pill`,"data-state":e,children:[(0,Y.jsx)(Sn,{state:e}),t]})}function Sn({state:e}){return e===`issue-open`?(0,Y.jsx)(dn,{state:`open`,size:14}):e===`issue-done`?(0,Y.jsx)(dn,{state:`completed`,size:14}):e===`issue-skipped`?(0,Y.jsx)(dn,{state:`not_planned`,size:14}):(0,Y.jsx)(`svg`,{className:`ocard-ico`,width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":`true`,focusable:`false`,children:e===`merged`?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`circle`,{cx:`6`,cy:`5.5`,r:`2.5`}),(0,Y.jsx)(`circle`,{cx:`6`,cy:`18.5`,r:`2.5`}),(0,Y.jsx)(`circle`,{cx:`18`,cy:`12`,r:`2.5`}),(0,Y.jsx)(`path`,{d:`M6 8v8M6 8a8 8 0 0 0 9.5 4`})]}):e===`draft`?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`circle`,{cx:`6`,cy:`5.5`,r:`2.5`}),(0,Y.jsx)(`circle`,{cx:`6`,cy:`18.5`,r:`2.5`}),(0,Y.jsx)(`circle`,{cx:`18`,cy:`18.5`,r:`2.5`}),(0,Y.jsx)(`path`,{d:`M6 8v8M18 13v.01M18 9v.01M18 5v.01`})]}):e===`closed`?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`circle`,{cx:`6`,cy:`5.5`,r:`2.5`}),(0,Y.jsx)(`circle`,{cx:`6`,cy:`18.5`,r:`2.5`}),(0,Y.jsx)(`circle`,{cx:`18`,cy:`18.5`,r:`2.5`}),(0,Y.jsx)(`path`,{d:`M6 8v8M18 16v-4M15.5 4l5 5M20.5 4l-5 5`})]}):(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`circle`,{cx:`6`,cy:`5.5`,r:`2.5`}),(0,Y.jsx)(`circle`,{cx:`6`,cy:`18.5`,r:`2.5`}),(0,Y.jsx)(`circle`,{cx:`18`,cy:`18.5`,r:`2.5`}),(0,Y.jsx)(`path`,{d:`M6 8v8M18 16V9.5a3 3 0 0 0-3-3h-4M13 4l-2.5 2.5L13 9`})]})})}function Cn({checks:e}){let t=an(e);return t?(0,Y.jsxs)(`ul`,{className:`ocard__checklist`,"aria-label":`Checks`,"data-fact":`checklist`,children:[t.shown.map(e=>(0,Y.jsxs)(`li`,{"data-check":e.state,children:[(0,Y.jsx)(l,{kind:nn[e.state],label:rn[e.state],size:14}),(0,Y.jsx)(`span`,{className:`ocard__check-name`,title:e.name,children:e.name})]},`${e.state}:${e.name}`)),t.more>0&&(0,Y.jsx)(`li`,{className:`ocard__check-more`,children:t.more===1?`1 more check`:`${t.more} more checks`})]}):null}function wn({card:e}){let n=`PR #${e.number}`,r=e.checks;return(0,Y.jsxs)(`article`,{className:`ocard ocard--pr`,"data-card":`github_pr`,"data-state":e.state,"aria-label":`${n}: ${e.title}`,children:[(0,Y.jsxs)(`header`,{className:`ocard__head`,children:[(0,Y.jsx)(t,{brand:`github`,size:16}),(0,Y.jsx)(`span`,{className:`ocard__where`,children:e.repo}),(0,Y.jsxs)(`span`,{className:`ocard__num num`,children:[`#`,e.number]}),(0,Y.jsx)(Q,{iso:e.updatedAt,prefix:`Updated `})]}),(0,Y.jsx)(`p`,{className:`ocard__title`,children:e.title}),(0,Y.jsxs)(`div`,{className:`ocard__line`,children:[(0,Y.jsx)(xn,{state:e.state,label:X[e.state]}),(e.base||e.head)&&(0,Y.jsxs)(`span`,{className:`ocard__branches`,children:[e.base&&(0,Y.jsx)(`code`,{className:`ocard-ref`,children:e.base}),e.base&&e.head&&(0,Y.jsx)(`span`,{className:`ocard__arrow`,"aria-label":`from`,children:`←`}),e.head&&(0,Y.jsx)(`code`,{className:`ocard-ref`,children:e.head})]})]}),(r||e.review&&e.review!==`none`||e.additions!==void 0||e.deletions!==void 0)&&(0,Y.jsxs)(`ul`,{className:`ocard__facts`,children:[r&&(0,Y.jsx)(`li`,{"data-fact":`checks`,children:(0,Y.jsx)(h,{kind:on[r.state],label:en(r),collapse:`never`})}),e.review&&e.review!==`none`&&(0,Y.jsx)(`li`,{"data-fact":`review`,children:(0,Y.jsx)(h,{kind:cn[e.review],label:sn[e.review],collapse:`never`})}),(e.additions!==void 0||e.deletions!==void 0)&&(0,Y.jsxs)(`li`,{"data-fact":`lines`,className:`ocard__lines`,title:`${(e.additions??0).toLocaleString()} lines added, ${(e.deletions??0).toLocaleString()} removed${e.files===void 0?``:`, ${e.files.toLocaleString()} files changed`}`,children:[(0,Y.jsxs)(`span`,{className:`ocard__plus num`,children:[`+`,(e.additions??0).toLocaleString()]}),` `,(0,Y.jsxs)(`span`,{className:`ocard__minus num`,children:[`−`,(e.deletions??0).toLocaleString()]}),e.files!==void 0&&(0,Y.jsxs)(Y.Fragment,{children:[` `,(0,Y.jsx)(`span`,{className:`ocard__files num`,children:e.files===1?`1 file`:`${e.files.toLocaleString()} files`})]})]})]}),r&&(0,Y.jsx)(Cn,{checks:r}),e.author&&(0,Y.jsx)(`p`,{className:`ocard__who`,children:(0,Y.jsx)($,{name:e.author,role:`author`})}),(0,Y.jsx)(bn,{labels:e.labels,tone:`github`}),e.report&&(0,Y.jsxs)(`div`,{className:`ocard__note`,"data-note":`report`,children:[(0,Y.jsx)(`span`,{className:`ocard__note-label`,children:`Last localdost report`}),(0,Y.jsx)(`span`,{className:`ocard__note-text`,children:e.report.headline}),(0,Y.jsxs)(`span`,{className:`ocard__note-meta`,children:[(0,Y.jsx)(`a`,{href:yn(e.report.runId),"aria-label":`Open the localdost report for ${n}`,children:`Open report`}),(0,Y.jsx)(Q,{iso:e.report.at})]})]}),(0,Y.jsx)(Xt,{card:e})]})}var Tn={backlog:`todo`,todo:`todo`,active:`active`,done:`done`,canceled:`done`};function En({status:e}){return(0,Y.jsx)(`span`,{className:`ocard-lozenge`,"data-status":Tn[e.kind],children:e.name})}function Dn(e){return e.status.kind===`canceled`?{state:`issue-skipped`,label:`Closed as not planned`}:e.status.kind===`done`?{state:`issue-done`,label:`Closed`}:{state:`issue-open`,label:`Open`}}function On({card:e,status:n}){return e.kind===`jira`?(0,Y.jsxs)(`header`,{className:`ocard__head ocard__head--jira`,children:[(0,Y.jsx)(gn,{type:e.issueType}),(0,Y.jsx)(`span`,{className:`sr-only`,children:e.issueType??`Issue`}),(0,Y.jsx)(`span`,{className:`ocard__key ocard__key--jira num`,children:e.key}),(0,Y.jsx)(En,{status:n})]}):e.kind===`linear`?(0,Y.jsxs)(`header`,{className:`ocard__head ocard__head--linear`,children:[(0,Y.jsx)(pn,{level:e.priority?.level??`none`}),(0,Y.jsx)(`span`,{className:`sr-only`,children:e.priority?`${e.priority.name} priority`:`No priority`}),(0,Y.jsx)(`span`,{className:`ocard__key num`,children:e.key}),(0,Y.jsxs)(`span`,{className:`ocard__lin-status`,children:[(0,Y.jsx)(fn,{kind:n.kind}),(0,Y.jsx)(`span`,{children:n.name})]}),(0,Y.jsx)(Q,{iso:e.updatedAt})]}):(0,Y.jsxs)(`header`,{className:`ocard__head`,children:[(0,Y.jsx)(t,{brand:`github`,size:16}),(0,Y.jsx)(`span`,{className:`ocard__where`,children:e.repo??e.key}),(0,Y.jsxs)(`span`,{className:`ocard__num num`,children:[`#`,e.number??e.key.replace(/^.*#/,``)]}),(0,Y.jsx)(Q,{iso:e.updatedAt,prefix:`Updated `})]})}function kn({pull:e,dotId:t}){let r=$t({refText:`${e.repo}#${e.number}`,kind:`github_pr`,dotId:t},`PR #${e.number}`);return(0,Y.jsxs)(`li`,{"data-linked-pr":`${e.repo}#${e.number}`,children:[(0,Y.jsxs)(`div`,{className:`ocard__pr-row`,children:[(0,Y.jsx)(n,{source:`github-pr`,refKey:`#${e.number}`,title:e.title??e.repo,href:e.url,status:e.state?X[e.state]:void 0}),e.state&&(0,Y.jsx)(`span`,{className:`ocard__pr-state`,children:X[e.state]}),r.toggle]}),r.panel]})}function An({card:e}){let[t,n]=(0,J.useState)(null),[r,i]=(0,J.useState)(e.status);r!==e.status&&(i(e.status),n(null));let a=t??e.status,o=e.kind===`github_issue`?Dn({...e,status:a}):null;return(0,Y.jsxs)(`article`,{className:`ocard ocard--${e.kind===`github_issue`?`issue`:e.kind}`,"data-card":e.kind,"data-state":a.kind,"aria-label":`${e.key}: ${e.title}`,children:[(0,Y.jsx)(On,{card:e,status:a}),(0,Y.jsx)(`p`,{className:`ocard__title`,children:e.title}),o&&(0,Y.jsxs)(`div`,{className:`ocard__line`,children:[(0,Y.jsx)(xn,{state:o.state,label:o.label}),e.author&&(0,Y.jsxs)(`span`,{className:`ocard__by`,children:[`opened by `,(0,Y.jsx)(`strong`,{children:e.author})]})]}),e.kind===`jira`&&(0,Y.jsxs)(`div`,{className:`ocard__line ocard__line--meta`,children:[e.priority&&(0,Y.jsxs)(`span`,{className:`ocard__prio`,children:[(0,Y.jsx)(_n,{level:e.priority.level,name:e.priority.name}),e.priority.name]}),e.assignee?(0,Y.jsx)($,{name:e.assignee,role:`assignee`}):(0,Y.jsx)(`span`,{className:`ocard__unassigned`,children:`Unassigned`}),(0,Y.jsx)(Q,{iso:e.updatedAt})]}),e.kind===`linear`&&(0,Y.jsxs)(`div`,{className:`ocard__line ocard__line--meta`,children:[(0,Y.jsx)(bn,{labels:e.labels,tone:`linear`}),e.assignee?(0,Y.jsx)($,{name:e.assignee,role:`assignee`}):(0,Y.jsx)(`span`,{className:`ocard__unassigned`,children:`Unassigned`})]}),e.kind===`github_issue`&&(0,Y.jsx)(`div`,{className:`ocard__line ocard__line--meta`,children:e.assignee?(0,Y.jsx)($,{name:e.assignee,role:`assignee`}):(0,Y.jsx)(`span`,{className:`ocard__unassigned`,children:`No one assigned`})}),e.kind!==`linear`&&(0,Y.jsx)(bn,{labels:e.labels,tone:e.kind===`jira`?`jira`:`github`}),e.description&&(0,Y.jsx)(`p`,{className:`ocard__desc`,children:e.description}),e.linkedPulls?.length?(0,Y.jsxs)(`div`,{className:`ocard__links`,"data-note":`prs`,children:[(0,Y.jsx)(`span`,{className:`ocard__note-label`,children:`Linked PRs`}),(0,Y.jsx)(`ul`,{children:e.linkedPulls.map(t=>(0,Y.jsx)(kn,{pull:t,dotId:e.dotId},`${t.repo}#${t.number}`))})]}):null,e.review&&(0,Y.jsxs)(`div`,{className:`ocard__note`,"data-note":`review`,children:[(0,Y.jsx)(`span`,{className:`ocard__note-label`,children:`Last localdost review`}),(0,Y.jsx)(`span`,{className:`ocard__note-text`,children:e.review.headline??`Reviewed.`}),(0,Y.jsxs)(`span`,{className:`ocard__note-meta`,children:[e.review.risk&&(0,Y.jsxs)(`span`,{className:`ocard__risk`,children:[(0,Y.jsx)(d,{level:e.review.risk,size:12}),` `,e.review.risk===`high`?`High`:e.review.risk===`medium`?`Medium`:`Low`,` risk`]}),(0,Y.jsx)(`a`,{href:yn(e.review.runId),"aria-label":`Open the last localdost review of ${e.key}`,children:`Open review`}),(0,Y.jsx)(Q,{iso:e.review.at})]}),e.review.comment===`waiting`&&(0,Y.jsx)(`span`,{className:`ocard__note-extra`,children:`The comment waits in the Inbox.`}),e.review.comment===`posted`&&(0,Y.jsx)(`span`,{className:`ocard__note-extra`,children:`The comment is posted.`})]}),(0,Y.jsx)(Xt,{card:e,onStatus:n})]})}function jn({card:e}){return e.kind===`github_pr`?(0,Y.jsx)(wn,{card:e}):(0,Y.jsx)(An,{card:e})}function Mn(){return(0,Y.jsxs)(`div`,{className:`ocard ocard--loading`,role:`status`,"aria-busy":`true`,"aria-label":`Loading card`,children:[(0,Y.jsx)(i,{width:`45%`,height:12}),(0,Y.jsx)(i,{width:`80%`,height:18}),(0,Y.jsx)(i,{width:`60%`,height:12})]})}function Nn({refText:t,kind:n,dotId:r,fallback:i,quiet:o}){let s=`card:${n??``}:${r??``}:${t}`,c=g(s,async e=>Dt((await a.getCard({ref:t,...n?{kind:n}:{},...r?{dotId:r}:{}},e)).card));if(c.data)return(0,Y.jsx)(jn,{card:c.data});if(c.loading||c.refreshing&&!c.error)return(0,Y.jsx)(Mn,{});if(i!==void 0)return(0,Y.jsx)(Y.Fragment,{children:i});let l=!(c.error instanceof e)||c.error.status===0||c.error.status>=500;return o&&!l?null:(0,Y.jsxs)(`p`,{className:`ocard-unavailable`,role:`note`,children:[(0,Y.jsx)(`span`,{children:c.data===null?`This link cannot be shown as a card.`:c.error instanceof e?c.error.message:`This link cannot be shown as a card.`}),l&&(0,Y.jsx)(`button`,{type:`button`,className:`link-btn`,onClick:()=>void c.reload(),children:`Try again`})]})}function Pn({children:e,margin:t=400}){let[n,r]=(0,J.useState)(()=>typeof IntersectionObserver>`u`),i=(0,J.useRef)(null);return(0,J.useEffect)(()=>{let e=i.current;if(n||!e)return;let a=new IntersectionObserver(e=>{e.some(e=>e.isIntersecting)&&(r(!0),a.disconnect())},{rootMargin:`${t}px 0px`});return a.observe(e),()=>a.disconnect()},[n,t]),(0,Y.jsx)(`div`,{ref:i,className:`card-when-near`,"data-near":n,"aria-hidden":!n||void 0,children:n?e:null})}function Fn({text:e,dotId:t}){let n=b(e);return n.length?(0,Y.jsx)(`div`,{className:`bubble-cards`,"data-unfurl":!0,children:n.map(e=>(0,Y.jsx)(Nn,{refText:e.url,kind:e.kind,dotId:t},e.url))}):null}function In(e){return e?e.pr&&e.repo?{refText:`${e.repo.owner}/${e.repo.name}#${e.pr.number}`,kind:`github_pr`}:e.ticket?{refText:e.ticket.key,kind:e.ticket.tracker===`github`?`github_issue`:e.ticket.tracker}:null:null}export{Ue as _,jn as a,Rt as c,zt as d,Ft as f,P as g,Ve as h,In as i,Ut as l,kt as m,Fn as n,$t as o,q as p,Pn as r,Wt as s,Nn as t,Ht as u,H as v};
2
+ //# sourceMappingURL=CardFromRef-BaTGmZ9c.js.map
@@ -0,0 +1 @@
1
+ :root{--gh-open:#1f883d;--gh-merged:#8250df;--gh-closed:#cf222e;--gh-draft:#6e7781;--gh-on-state:#fff;--gh-ref-bg:#ddf4ff;--gh-ref-fg:#0550ae;--linear-backlog:#7b8794;--linear-todo:#7b8794;--linear-active:#a87a00;--linear-done:#5e6ad2;--linear-canceled:#7b8794;--linear-urgent:#d9480f;--jira-todo-bg:#dfe1e6;--jira-todo-fg:#42526e;--jira-active-bg:#deebff;--jira-active-fg:#0747a6;--jira-done-bg:#e3fcef;--jira-done-fg:#064;--jira-bug:#d9372a;--jira-story:#2f9e44;--jira-task:#2b7bb9;--jira-epic:#7c3fd1;--jira-high:#cd1317;--jira-med:#e56910;--jira-low:#2684ff;--jira-link:#0052cc}:root[data-theme=dark]{--gh-open:#238636;--gh-merged:#8957e5;--gh-closed:#da3633;--gh-draft:#6e7681;--gh-ref-bg:#16273d;--gh-ref-fg:#79c0ff;--linear-backlog:#95a2b3;--linear-todo:#95a2b3;--linear-active:#f2c94c;--linear-done:#8b93ff;--linear-canceled:#95a2b3;--linear-urgent:#f2784b;--jira-todo-bg:#2c333a;--jira-todo-fg:#b6c2cf;--jira-active-bg:#1c2b41;--jira-active-fg:#85b8ff;--jira-done-bg:#1c3329;--jira-done-fg:#7ee2b8;--jira-bug:#e5493a;--jira-story:#3cb55a;--jira-task:#4ba3e0;--jira-epic:#9a63e8;--jira-high:#f15b50;--jira-med:#f5a04b;--jira-low:#579dff;--jira-link:#85b8ff}.ocard{gap:var(--space-2);min-width:0;padding:var(--space-3);border:var(--hairline);border-radius:var(--radius-md);background:var(--surface);color:var(--text);flex-direction:column;display:flex;container:ocard/inline-size}.ocard__head{align-items:center;gap:var(--space-2);min-width:0;font-size:var(--text-xs);color:var(--text-3);display:flex}.ocard__where{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.ocard__num,.ocard__key{font-family:var(--font-mono);flex:none}.ocard__when{white-space:nowrap;color:var(--text-3);flex:none;margin-inline-start:auto}.ocard__head--linear .ocard__when,.ocard__line--meta .ocard__when{font-size:var(--text-xs)}.ocard__title{font-size:var(--text-lg);font-weight:var(--weight-semibold);line-height:var(--leading-tight);overflow-wrap:anywhere;text-wrap:pretty;margin:0}.ocard__line{align-items:center;gap:var(--space-1) var(--space-2);flex-wrap:wrap;min-width:0;display:flex}.ocard__line--meta{gap:var(--space-1) var(--space-3);font-size:var(--text-sm);color:var(--text-2)}.ocard-pill{align-items:center;gap:var(--space-1);padding:2px var(--space-3) 2px var(--space-2);border-radius:var(--radius-full);background:var(--pill-bg,var(--gh-draft));color:var(--gh-on-state);font-size:var(--text-sm);font-weight:var(--weight-medium);white-space:nowrap;flex:none;line-height:1.5;display:inline-flex}.ocard-pill[data-state=open],.ocard-pill[data-state=issue-open]{--pill-bg:var(--gh-open)}.ocard-pill[data-state=merged],.ocard-pill[data-state=issue-done]{--pill-bg:var(--gh-merged)}.ocard-pill[data-state=closed]{--pill-bg:var(--gh-closed)}.ocard-pill[data-state=draft],.ocard-pill[data-state=issue-skipped]{--pill-bg:var(--gh-draft)}.ocard__branches{align-items:center;gap:var(--space-1);min-width:0;font-size:var(--text-xs);color:var(--text-3);flex-wrap:wrap;display:inline-flex}.ocard-ref{max-width:100%;padding:1px var(--space-2);border-radius:var(--radius-sm);background:var(--gh-ref-bg);color:var(--gh-ref-fg);font-family:var(--font-mono);font-size:var(--text-xs);overflow-wrap:anywhere}.ocard__facts{gap:var(--space-1) var(--space-3);font-size:var(--text-sm);color:var(--text-2);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.ocard__facts .icon-label{gap:var(--space-1)}.ocard__checklist{gap:var(--space-1);padding:var(--space-2);border-radius:var(--radius);background:var(--surface-2);font-size:var(--text-sm);color:var(--text-2);flex-direction:column;margin:0;list-style:none;display:flex}.ocard__checklist li{align-items:center;gap:var(--space-2);min-width:0;display:flex}.ocard__check-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-family:var(--font-mono);font-size:var(--text-xs);overflow:hidden}.ocard__check-more{font-size:var(--text-xs);color:var(--text-3)}.ocard__lines{align-items:baseline;gap:var(--space-2);font-family:var(--font-mono);font-size:var(--text-xs);display:inline-flex}.ocard__plus{color:var(--ok-fg)}.ocard__minus{color:var(--outage-fg)}.ocard__files{color:var(--text-3)}.ocard__who,.ocard__by{font-size:var(--text-sm);color:var(--text-2);margin:0}.ocard__by strong{font-weight:var(--weight-medium);color:var(--text)}.ocard__person{align-items:center;gap:var(--space-1);min-width:0;display:inline-flex}.ocard__person-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.ocard__unassigned{color:var(--text-3)}.ocard-avatar{border-radius:var(--radius-full);background:var(--surface-3);color:var(--text-2);font-weight:var(--weight-semibold);-webkit-user-select:none;user-select:none;flex:none;justify-content:center;align-items:center;line-height:1;display:inline-flex}.ocard__labels{gap:var(--space-1);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.ocard__label{align-items:center;gap:var(--space-1);max-width:100%;padding:0 var(--space-2);border:var(--hairline);border-radius:var(--radius-full);background:var(--surface-2);color:var(--text-2);font-size:var(--text-xs);overflow-wrap:anywhere;line-height:1.7;display:inline-flex}.ocard__labels--jira .ocard__label{border-radius:var(--radius-sm);background:var(--surface-3);border-color:#0000}.ocard__label-dot{border-radius:var(--radius-full);background:var(--text-3);width:8px;height:8px}.ocard__head--linear{font-size:var(--text-sm);flex-wrap:wrap}.ocard__head--linear .ocard__key{color:var(--text-2)}.ocard__lin-status{align-items:center;gap:var(--space-1);color:var(--text);font-weight:var(--weight-medium);display:inline-flex}.ocard__head--jira .ocard-lozenge{margin-inline-start:auto}.ocard__key--jira{color:var(--jira-link);font-family:var(--font-sans);font-size:var(--text-sm);font-weight:var(--weight-medium)}.ocard-lozenge{max-width:60%;padding:1px var(--space-2);border-radius:var(--radius-sm);background:var(--jira-todo-bg);color:var(--jira-todo-fg);font-size:11px;font-weight:var(--weight-semibold);letter-spacing:.02em;text-transform:uppercase;text-overflow:ellipsis;white-space:nowrap;flex:none;line-height:1.5;overflow:hidden}.ocard-lozenge[data-status=active]{background:var(--jira-active-bg);color:var(--jira-active-fg)}.ocard-lozenge[data-status=done]{background:var(--jira-done-bg);color:var(--jira-done-fg)}.ocard__prio{align-items:center;gap:var(--space-1);display:inline-flex}.ocard-ico{flex:none}.ocard-ico--issue{color:currentColor}.ocard-ico--lin-backlog,.ocard-ico--lin-todo,.ocard-ico--lin-canceled{color:var(--linear-todo)}.ocard-ico--lin-active{color:var(--linear-active)}.ocard-ico--lin-done{color:var(--linear-done)}.ocard-ico--lin-urgent{color:var(--linear-urgent)}.ocard-ico--lin-pri,.ocard-ico--lin-nopri{color:var(--text-2)}.ocard-ico--lin-pri .is-dim{opacity:.3}.ocard-ico--jira-bug{color:var(--jira-bug)}.ocard-ico--jira-story{color:var(--jira-story)}.ocard-ico--jira-task{color:var(--jira-task)}.ocard-ico--jira-epic{color:var(--jira-epic)}.ocard-ico--jira-high{color:var(--jira-high)}.ocard-ico--jira-med{color:var(--jira-med)}.ocard-ico--jira-low{color:var(--jira-low)}.ocard__desc{-webkit-line-clamp:3;line-clamp:3;font-size:var(--text-sm);line-height:var(--leading);color:var(--text-2);overflow-wrap:anywhere;-webkit-box-orient:vertical;margin:0;display:-webkit-box;overflow:hidden}.ocard__links{gap:var(--space-1);min-width:0;font-size:var(--text-sm);flex-direction:column;display:flex}.ocard__links>ul{gap:var(--space-1);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.ocard__links>ul>li{gap:var(--space-1);flex-direction:column;min-width:0;display:flex}.ocard__pr-row{align-items:center;gap:var(--space-2);min-width:0;display:flex}.ocard__pr-row .ref-chip{flex:0 auto;min-width:0}.ocard__pr-row>.btn{flex:none;margin-inline-start:auto}@container ocard (width<=420px){.ocard__pr-row{flex-wrap:wrap}.ocard__pr-row .ref-chip{flex:1 0 100%;max-width:100%}}.card-disclosure{min-width:0;margin-top:var(--space-1)}.ocard__pr-state{font-size:var(--text-xs);color:var(--text-3);flex:none}.ocard__note{gap:var(--space-0-5);padding:var(--space-2);border-radius:var(--radius);background:var(--surface-2);font-size:var(--text-sm);line-height:var(--leading);color:var(--text-2);overflow-wrap:anywhere;flex-direction:column;margin:0;display:flex}.ocard__note a{color:var(--accent);font-weight:var(--weight-medium)}.ocard__note-label{color:var(--text-3);font-size:var(--text-xs);font-weight:var(--weight-medium)}.ocard__note-meta{align-items:center;gap:var(--space-0-5) var(--space-3);font-size:var(--text-xs);color:var(--text-3);flex-wrap:wrap;display:flex}.ocard__note-meta a{font-size:var(--text-sm)}.ocard__note .ocard__when{font-size:var(--text-xs);margin-inline-start:0}.ocard__note-extra{font-size:var(--text-xs);color:var(--text-3)}.ocard__risk{align-items:center;gap:var(--space-0-5);white-space:nowrap;display:inline-flex}.ocard__actions{gap:var(--space-2);padding-top:var(--space-1);flex-wrap:wrap;display:flex}.ocard__actions .btn{min-height:var(--tap)}@media (pointer:fine){.ocard__actions .btn{min-height:var(--control-sm)}}.ocard__panel{gap:var(--space-2);flex-direction:column;display:flex}.ocard__panel textarea{font-size:max(16px, var(--text-md))}.ocard__panel-actions{gap:var(--space-2);flex-wrap:wrap;display:flex}.ocard__panel-actions .btn{min-height:var(--tap)}@media (pointer:fine){.ocard__panel-actions .btn{min-height:var(--control-sm)}}.ocard__choices{gap:var(--space-1);flex-wrap:wrap;display:flex}.ocard__choice{min-height:var(--control);padding:0 var(--space-3);border:var(--hairline);border-radius:var(--radius-full);background:var(--surface);color:var(--text-2);font:inherit;font-size:var(--text-sm);white-space:nowrap;cursor:pointer;align-items:center;display:inline-flex}.ocard__choice:hover{background:var(--surface-hover)}.ocard__choice[aria-pressed=true]{border-color:var(--text-2);background:var(--surface-3);color:var(--text);font-weight:var(--weight-medium)}.ocard__choice:focus-visible{box-shadow:var(--focus-ring);outline:none}.ocard__hint{align-items:center;gap:var(--space-2);font-size:var(--text-sm);color:var(--text-3);margin:0;display:flex}.ocard__hint--error{color:var(--outage-fg)}.ocard__result{font-size:var(--text-sm);color:var(--text-2);scroll-margin-bottom:var(--jump-clearance,0px);margin:0}.ocard__result:not(:empty){padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);background:var(--surface-2)}.ocard__result--ok:not(:empty){background:var(--ok-bg);color:var(--ok-fg)}.ocard__result--error:not(:empty){background:var(--outage-bg);color:var(--outage-fg)}.ocard__result a{color:inherit;font-weight:var(--weight-medium)}.ocard--loading{gap:var(--space-2)}.ocard-unavailable{align-items:center;gap:var(--space-1) var(--space-2);padding:var(--space-2) var(--space-3);border:var(--hairline);border-radius:var(--radius-md);background:var(--surface);font-size:var(--text-sm);color:var(--text-2);overflow-wrap:anywhere;flex-wrap:wrap;margin:0;display:flex}.card-when-near[data-near=false]{border:var(--hairline);border-radius:var(--radius-md);background:var(--surface);min-height:140px}.cards-stack{gap:var(--space-2);flex-direction:column;min-width:0;display:flex}.bubble-cards{gap:var(--space-2);flex-direction:column;align-self:flex-end;width:min(100%,560px);min-width:0;display:flex}
@@ -0,0 +1,2 @@
1
+ import{Dt as e,E as t,F as n,G as r,H as i,It as a,J as o,N as s,On as c,P as l,R as u,Tn as d,Vn as f,Wn as p,_ as m,_t as h,a as g,c as _,gt as v,i as y,kn as b,mn as x,nn as S,pn as C,q as w,r as T,tn as E,v as D}from"./ui-DcmhYyYp.js";import{r as O,t as ee}from"./router-W6nZsQ33.js";import{r as te,t as ne}from"./storage-yvL36AWt.js";import{i as k,n as A}from"./store-IqrqHuFR.js";import{a as re}from"./data-CmXvx3Mj.js";import{y as ie}from"./format-BBZ8vFyT.js";import{t as ae}from"./authedMedia-BTYt_tyu.js";import{i as j,n as M,r as N,t as oe}from"./NewTestRunDialog-BQBthVHE.js";import{C as se,S as P,c as ce,g as F,m as I,o as L,p as R,r as z,v as le,w as B,x as V,y as H}from"./impactModel-MY1OFuiP.js";import{n as ue,r as U,t as W}from"./ImpactList-C-RNuDB0.js";var G=p(f(),1),K=x();function de({values:e,requirements:t,onChange:r,children:i}){let a=e.requirement&&!t.some(t=>t.ref===e.requirement)?[...t,{ref:e.requirement}]:t;return(0,K.jsxs)(`div`,{className:`cases-filters`,role:`group`,"aria-label":`Filters`,children:[i,(0,K.jsx)(s,{label:`Status`,className:`cases-filter`,children:(0,K.jsxs)(n,{value:e.status,onChange:e=>r({status:e.target.value}),children:[(0,K.jsx)(`option`,{value:``,children:`Draft and ready`}),V.map(e=>(0,K.jsx)(`option`,{value:e,children:P[e]},e)),(0,K.jsx)(`option`,{value:`all`,children:`All statuses`})]})}),(0,K.jsx)(s,{label:`Kind`,className:`cases-filter`,children:(0,K.jsxs)(n,{value:e.kind,onChange:e=>r({kind:e.target.value}),children:[(0,K.jsx)(`option`,{value:``,children:`All kinds`}),R.map(e=>(0,K.jsx)(`option`,{value:e,children:I[e]},e))]})}),(0,K.jsx)(s,{label:`Requirement`,className:`cases-filter`,children:(0,K.jsxs)(n,{value:e.requirement,onChange:e=>r({requirement:e.target.value}),children:[(0,K.jsx)(`option`,{value:``,children:`All requirements`}),a.map(e=>(0,K.jsx)(`option`,{value:e.ref,children:e.title?`${e.ref} ${e.title}`:e.ref},e.ref))]})})]})}function fe({cases:e,route:n,dotId:r,repo:i,selected:a,onSelect:o}){let s=e=>O({...n,dotId:r,case:e}),c=!!a&&e.length>0&&e.every(e=>a.has(e.id));return(0,K.jsx)(`div`,{className:`cases-wrap list-box`,children:(0,K.jsxs)(`table`,{className:`cases-table`,children:[(0,K.jsx)(`caption`,{className:`sr-only`,children:`Test cases with their kind, requirements, priority, status, and latest result`}),(0,K.jsx)(`thead`,{children:(0,K.jsxs)(`tr`,{children:[o&&(0,K.jsx)(`th`,{scope:`col`,className:`cases-pick`,children:(0,K.jsx)(`input`,{type:`checkbox`,"aria-label":`Select every test case in the table`,checked:c,onChange:t=>o(e.map(e=>e.id),t.target.checked)})}),(0,K.jsx)(`th`,{scope:`col`,children:`Key`}),(0,K.jsx)(`th`,{scope:`col`,children:`Title`}),(0,K.jsx)(`th`,{scope:`col`,children:`Kind`}),(0,K.jsx)(`th`,{scope:`col`,children:`Requirements`}),(0,K.jsx)(`th`,{scope:`col`,children:`Priority`}),(0,K.jsx)(`th`,{scope:`col`,children:`Status`}),(0,K.jsx)(`th`,{scope:`col`,children:`Latest result`})]})}),(0,K.jsx)(`tbody`,{children:e.map(e=>(0,K.jsxs)(`tr`,{className:n.case===e.key?`is-selected`:void 0,onClick:()=>s(e.key),children:[o&&(0,K.jsx)(`td`,{className:`cases-pick`,onClick:e=>e.stopPropagation(),children:(0,K.jsx)(`input`,{type:`checkbox`,"aria-label":`Select ${e.key}`,checked:a?.has(e.id)??!1,onChange:t=>o([e.id],t.target.checked)})}),(0,K.jsx)(`td`,{className:`cases-key num`,children:(0,K.jsx)(`a`,{href:ee({...n,dotId:r,case:e.key}),onClick:e=>e.stopPropagation(),children:e.key})}),(0,K.jsx)(`td`,{className:`cases-title`,children:(0,K.jsx)(`span`,{className:`truncate`,title:e.title,children:e.title})}),(0,K.jsx)(`td`,{className:`cases-nowrap`,children:(0,K.jsx)(m,{icon:(0,K.jsx)(y,{engine:e.kind,size:14}),label:I[e.kind]})}),(0,K.jsx)(`td`,{className:`cases-reqs`,children:e.requirements.length===0?(0,K.jsx)(`span`,{className:`muted`,children:`-`}):(0,K.jsx)(`div`,{className:`cases-chips`,children:e.requirements.map(e=>(0,K.jsx)(t,{...B(e,i),onClick:e=>e.stopPropagation()},e.ref))})}),(0,K.jsx)(`td`,{className:`cases-nowrap`,children:(0,K.jsx)(m,{icon:(0,K.jsx)(g,{meta:_[e.priority],size:14}),label:F[e.priority]})}),(0,K.jsxs)(`td`,{className:`cases-nowrap${e.status===`retired`?` muted`:``}`,children:[(0,K.jsx)(m,{icon:(0,K.jsx)(g,{meta:T[e.status],size:14}),label:P[e.status]}),e.needsReview&&(0,K.jsxs)(K.Fragment,{children:[` `,(0,K.jsx)(z,{flag:e.needsReview,fold:`always`})]})]}),(0,K.jsx)(`td`,{className:`cases-nowrap`,children:e.latest?(0,K.jsxs)(`span`,{className:`cases-result`,children:[(0,K.jsx)(D,{kind:le[e.latest.result],label:H[e.latest.result]}),(0,K.jsx)(`span`,{className:`muted`,children:ie(e.latest.at)})]}):(0,K.jsx)(`span`,{className:`muted`,children:`Not run`})})]},e.id))})]})})}function pe({dotId:e,ticket:t,repo:n}){let r=t?`all`:`open`,a=k(L(e,t,r),n=>d.impact(e,{...t?{ticket:t}:{},state:r},n),{refreshOn:[`run`],throttleMs:1500}),o=a.data?.items??[];return a.error&&!a.data?(0,K.jsx)(i,{compact:!0,title:`Could not load the existing tests check`,error:a.error,onRetry:()=>void a.reload()}):o.length?(0,K.jsxs)(`details`,{className:`impact-panel`,open:!0,children:[(0,K.jsxs)(`summary`,{className:`impact-panel__summary`,children:[(0,K.jsx)(`span`,{children:t?`Existing tests checked for ${t}`:`Existing tests that need a decision`}),(0,K.jsx)(`span`,{className:`impact-panel__count num`,children:o.length})]}),(0,K.jsx)(`p`,{className:`impact-panel__words`,children:t?ce(o,a.data?.leftOut):`${o.length} ${o.length===1?`test waits`:`tests wait`} for you. Each one is flagged by a ticket review.`}),(0,K.jsx)(W,{items:o,repo:n,showTicket:!t})]}):null}var q=e=>e instanceof Error?e.message:`Something went wrong.`,J=e=>`folders:${e}`,Y=e=>`suites:${e}`;function X({dotId:e,state:t,onClose:n,onSaved:r}){let[i,a]=(0,G.useState)(t?.mode===`rename`?t.name:``),[c,u]=(0,G.useState)(!1),[f,p]=(0,G.useState)(null),m=async()=>{if(t){u(!0),p(null);try{let n=t.mode===`new`?await d.createFolder(e,{name:i.trim(),...t.parentId?{parentId:t.parentId}:{}}):await d.updateFolder(e,t.id,{name:i.trim()});A(J(e)),r(n.id)}catch(e){p(q(e))}finally{u(!1)}}};return(0,K.jsx)(o,{open:!!t,onClose:n,size:`sm`,title:t?.mode===`rename`?`Rename folder`:`New folder`,footer:(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(C,{onClick:n,children:`Cancel`}),(0,K.jsx)(C,{variant:`primary`,loading:c,onClick:()=>void m(),children:t?.mode===`rename`?`Rename`:`Add folder`})]}),children:(0,K.jsx)(`form`,{onSubmit:e=>{e.preventDefault(),m()},children:(0,K.jsx)(s,{label:`Name`,error:f,children:(0,K.jsx)(l,{value:i,maxLength:80,onChange:e=>a(e.target.value),"data-autofocus":!0})})})})}function me({dotId:e,tree:t,suites:n,folder:r,suite:i,onPick:s}){let c=w(),[l,u]=(0,G.useState)(null),[f,p]=(0,G.useState)(null),[m,g]=(0,G.useState)(!1),_=t?.folders??[],y=N(_),b=_.reduce((e,t)=>e+t.caseCount,0)+(t?.unfiled??0),x=r&&r!==`none`?_.find(e=>e.id===r):void 0,S=i?n?.find(e=>e.id===i):void 0,T=async()=>{g(!0);try{if(f===`folder`&&x){let t=await d.deleteFolder(e,x.id);A(J(e)),A(U(e)),A(Y(e)),s({folder:x.parentId});let n=[t.movedCases?`${t.movedCases} test cases moved up one level.`:``,t.rewrittenSuites.length?`${t.rewrittenSuites.join(`, `)} now ${t.rewrittenSuites.length===1?`holds`:`hold`} a fixed list of its test cases.`:``].filter(Boolean);c.show({title:`Deleted ${x.name}`,body:n.join(` `)||void 0,tone:`success`})}else f===`suite`&&S&&(await d.deleteSuite(e,S.id),A(Y(e)),s({}),c.show({title:`Deleted the suite ${S.name}`,tone:`success`}));p(null)}catch(e){c.show({title:`Could not delete`,body:q(e),tone:`error`})}finally{g(!1)}},D=(e,t,n,r,i,a,o=0)=>(0,K.jsx)(`li`,{children:(0,K.jsxs)(`button`,{type:`button`,className:`case-tree__item${r?` is-current`:``}`,"aria-current":r||void 0,style:{"--depth":o},onClick:i,title:t,children:[(0,K.jsx)(`span`,{className:`case-tree__icon`,children:a}),(0,K.jsx)(`span`,{className:`case-tree__name truncate`,children:t}),n!==void 0&&(0,K.jsx)(`span`,{className:`case-tree__count num`,children:n})]})},e);return(0,K.jsxs)(`nav`,{className:`case-tree`,"aria-label":`Folders and suites`,children:[(0,K.jsxs)(`div`,{className:`case-tree__head`,children:[(0,K.jsx)(`h2`,{className:`case-tree__title`,children:`Folders`}),(0,K.jsxs)(`button`,{type:`button`,className:`sidebar__add`,onClick:()=>u({mode:`new`,...x?{parentId:x.id}:{}}),children:[(0,K.jsx)(a,{size:14}),(0,K.jsx)(`span`,{children:x?`Subfolder`:`New`})]})]}),(0,K.jsxs)(`ul`,{className:`case-tree__list`,children:[D(`all`,`All test cases`,b,!r&&!i,()=>s({}),(0,K.jsx)(h,{size:16})),y.map(({folder:e,depth:t})=>D(e.id,e.name,j(_,e.id),r===e.id,()=>s({folder:e.id}),r===e.id?(0,K.jsx)(h,{size:16}):(0,K.jsx)(v,{size:16}),t)),D(`none`,`Unfiled`,t?.unfiled??0,r===`none`,()=>s({folder:`none`}),(0,K.jsx)(v,{size:16}))]}),x&&(0,K.jsxs)(`div`,{className:`case-tree__actions`,children:[(0,K.jsx)(C,{size:`sm`,onClick:()=>u({mode:`rename`,id:x.id,name:x.name}),children:`Rename`}),(0,K.jsx)(C,{size:`sm`,variant:`ghost`,onClick:()=>p(`folder`),children:`Delete`})]}),(0,K.jsx)(`div`,{className:`case-tree__head case-tree__head--gap`,children:(0,K.jsx)(`h2`,{className:`case-tree__title`,children:`Suites`})}),n&&n.length===0?(0,K.jsx)(`p`,{className:`case-tree__note`,children:`Select test cases, or pick a folder, then Save as suite.`}):(0,K.jsx)(`ul`,{className:`case-tree__list`,children:(n??[]).map(e=>D(e.id,e.name,e.caseCount,i===e.id,()=>s({suite:e.id}),(0,K.jsx)(E,{size:16})))}),S&&(0,K.jsx)(`div`,{className:`case-tree__actions`,children:(0,K.jsx)(C,{size:`sm`,variant:`ghost`,onClick:()=>p(`suite`),children:`Delete suite`})}),l&&(0,K.jsx)(X,{dotId:e,state:l,onClose:()=>u(null),onSaved:e=>{u(null),s({folder:e})}},l.mode===`rename`?l.id:`new-${l.parentId??``}`),(0,K.jsx)(o,{open:!!f,onClose:()=>p(null),role:`alertdialog`,size:`sm`,initialFocus:`.btn--secondary`,title:f===`folder`?`Delete ${x?M(_,x.id):`folder`}?`:`Delete the suite ${S?.name??``}?`,description:f===`folder`?`Its test cases and subfolders move up one level. No test case is deleted.`:`The suite goes away. Its test cases and the test runs started from it stay.`,footer:(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(C,{onClick:()=>p(null),children:`Cancel`}),(0,K.jsx)(C,{variant:`danger`,loading:m,onClick:()=>void T(),children:`Delete`})]})})]})}var he=`casesDot`,ge=(e,t,n=``,r=``)=>`${U(e)}${t.status}:${t.kind}:${t.requirement}:${n}:${r}`,_e=e=>e instanceof Error?e.message:`Something went wrong.`;function ve({dotId:e,open:t,caseIds:r,folder:i,folderName:a,onClose:c,onSaved:u}){let f=!!i&&i!==`none`,[p,m]=(0,G.useState)(``),[h,g]=(0,G.useState)(r.length?`static`:`query`),[_,v]=(0,G.useState)(!1),[y,b]=(0,G.useState)(null),x=async()=>{v(!0),b(null);try{let t=h===`query`?await d.createSuite(e,{name:p.trim(),kind:`query`,query:{folderId:i}}):await d.createSuite(e,{name:p.trim(),kind:`static`,caseIds:r});A(Y(e)),u(t.id)}catch(e){b(_e(e))}finally{v(!1)}};return(0,K.jsx)(o,{open:t,onClose:c,size:`sm`,title:`Save as suite`,description:`A named set of test cases to start test runs from.`,footer:(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(C,{onClick:c,children:`Cancel`}),(0,K.jsx)(C,{variant:`primary`,loading:_,onClick:()=>void x(),children:`Save suite`})]}),children:(0,K.jsxs)(`form`,{className:`tr-form`,onSubmit:e=>{e.preventDefault(),x()},children:[(0,K.jsx)(s,{label:`Name`,error:y,children:(0,K.jsx)(l,{value:p,maxLength:120,onChange:e=>m(e.target.value),"data-autofocus":!0})}),(0,K.jsx)(s,{label:`Holds`,children:(0,K.jsxs)(n,{value:h,onChange:e=>g(e.target.value),children:[r.length>0&&(0,K.jsx)(`option`,{value:`static`,children:`The ${r.length} selected test cases`}),f&&(0,K.jsx)(`option`,{value:`query`,children:`Every test case in ${a??`this folder`}, now and later`})]})})]})})}function Z({route:t}){let o=re(),l=w(),f=(0,G.useMemo)(()=>(o.data??[]).filter(e=>!e.archived),[o.data]),p=ne(he,``),m=f.find(e=>e.id===t.dotId)??f.find(e=>e.id===p)??f[0],h=t.dotId??m?.id,g=m?.repo?`${m.repo.owner}/${m.repo.name}`:void 0,_={status:t.status??``,kind:t.kind??``,requirement:t.requirement??``},v=t.folder,y=t.suite,[x,T]=(0,G.useState)({ids:new Set}),E=x.dot===h?x.ids:new Set,[D,ee]=(0,G.useState)(``),[ie,j]=(0,G.useState)(!1),[N,P]=(0,G.useState)(null),[ce,F]=(0,G.useState)(()=>typeof window>`u`||!window.matchMedia||window.matchMedia(`(min-width: 900px)`).matches);(0,G.useEffect)(()=>{h&&te(he,h)},[h]);let I=k(h?ge(h,_,v,y):null,e=>d.cases(h,{..._,...v?{folder:v}:{},...y?{suite:y}:{}},e),{refreshOn:[`run`],throttleMs:1500}),L=k(h?J(h):null,e=>d.folders(h,e)),R=k(h?Y(h):null,e=>d.suites(h,e)),z=e=>O({name:`cases`,dotId:h,..._,folder:v,suite:y,...e,case:void 0},{replace:!0}),le=!!(_.status||_.kind||_.requirement),B=h?c(h):`#`,V=(e,t)=>T(()=>{let n=new Set(E);for(let r of e)t?n.add(r):n.delete(r);return{dot:h,ids:n}}),H=()=>T({dot:h,ids:new Set}),W=e=>{b()&&h&&(e.preventDefault(),ae(B,`test-cases-${h}.zip`).catch(e=>l.show({title:`Could not export the test cases`,body:e instanceof Error?e.message:void 0,tone:`error`})))},q=async()=>{if(h&&E.size){j(!0);try{let e=D===`none`||!D?null:D,t=await d.moveCases(h,[...E],e);A(U(h)),A(J(h)),H();let n=e?M(L.data?.folders??[],e):`Unfiled`;l.show({title:`Moved ${t.moved} ${t.moved===1?`test case`:`test cases`} to ${n}`,tone:`success`})}catch(e){l.show({title:`Could not move the test cases`,body:_e(e),tone:`error`})}finally{j(!1)}}},X=I.data,Z=L.data?.folders??[],ye=X?X.counts.draft+X.counts.ready:0,Q=v&&v!==`none`?M(Z,v):void 0,$=y?R.data?.find(e=>e.id===y)?.name:v===`none`?`Unfiled`:Q;return(0,K.jsxs)(`div`,{className:`page cases`,children:[(0,K.jsxs)(`header`,{className:`page__header`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`h1`,{className:`page__title`,children:`Test cases`}),(0,K.jsx)(`p`,{className:`page__subtitle`,children:`Steps with expected results, the requirements they cover, and the latest result of each test case.`})]}),h&&(0,K.jsxs)(`div`,{className:`page__actions`,children:[(0,K.jsx)(C,{variant:`primary`,icon:(0,K.jsx)(a,{size:14}),onClick:()=>O({...t,dotId:h,case:`new`}),children:`New test case`}),(0,K.jsx)(`a`,{className:`btn btn--secondary btn--md`,href:B,download:!0,onClick:W,"aria-disabled":ye===0||void 0,title:`Markdown files in the tests/cases folder layout`,children:(0,K.jsx)(`span`,{className:`btn__label`,children:`Export as Markdown`})})]})]}),f.length===0&&!o.loading?(0,K.jsx)(r,{kind:`first-run`,title:`No test cases yet`,body:`A test case lives in a dot. Create a dot, then write the first test case.`,action:(0,K.jsx)(`a`,{href:`#/dots?new=1`,children:`New dot`})}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(de,{values:_,requirements:X?.requirements??[],onChange:z,children:f.length>1&&(0,K.jsx)(s,{label:`Dot`,className:`cases-filter`,children:(0,K.jsx)(n,{value:h??``,onChange:e=>z({dotId:e.target.value,status:``,kind:``,requirement:``,folder:void 0,suite:void 0}),children:f.map(e=>(0,K.jsx)(`option`,{value:e.id,children:e.name},e.id))})})}),(0,K.jsxs)(`div`,{className:`cases-layout`,children:[h&&(0,K.jsxs)(`details`,{className:`cases-side`,open:ce,onToggle:e=>F(e.currentTarget.open),children:[(0,K.jsx)(`summary`,{className:`cases-side__summary`,children:(0,K.jsx)(`span`,{className:`truncate`,children:$?`Folders and suites: ${$}`:`Folders and suites`})}),(0,K.jsx)(me,{dotId:h,tree:L.data,suites:R.data,folder:v,suite:y,onPick:e=>z({folder:e.folder,suite:e.suite})})]}),(0,K.jsxs)(`div`,{className:`cases-main`,children:[X&&(0,K.jsx)(`p`,{className:`cases-summary`,role:`status`,children:$?`${$}: ${X.cases.length} ${X.cases.length===1?`test case`:`test cases`}.`:se(X.counts)}),E.size>0&&h&&(0,K.jsxs)(`div`,{className:`cases-selbar`,role:`region`,"aria-label":`Selected test cases`,children:[(0,K.jsxs)(`span`,{className:`cases-selbar__count num`,children:[E.size,` selected`]}),(0,K.jsx)(s,{label:`Move to`,hideLabel:!0,className:`cases-selbar__to`,children:(0,K.jsxs)(n,{value:D,onChange:e=>ee(e.target.value),children:[(0,K.jsx)(`option`,{value:``,children:`Move to folder`}),(0,K.jsx)(`option`,{value:`none`,children:`Unfiled`}),Z.map(e=>(0,K.jsx)(`option`,{value:e.id,children:M(Z,e.id)},e.id))]})}),(0,K.jsx)(C,{size:`sm`,icon:(0,K.jsx)(e,{size:14}),disabled:!D,loading:ie,onClick:()=>void q(),children:`Move`}),(0,K.jsx)(C,{size:`sm`,icon:(0,K.jsx)(S,{size:14}),onClick:()=>P(`run`),children:`Start test run`}),(0,K.jsx)(C,{size:`sm`,onClick:()=>P(`suite`),children:`Save as suite`}),(0,K.jsx)(C,{size:`sm`,variant:`ghost`,onClick:H,children:`Clear`})]}),E.size===0&&Q&&h&&(0,K.jsx)(`div`,{className:`cases-selbar cases-selbar--quiet`,children:(0,K.jsx)(C,{size:`sm`,onClick:()=>P(`suite`),children:`Save folder as suite`})}),h&&(0,K.jsx)(pe,{dotId:h,ticket:_.requirement||void 0,repo:g}),I.error&&!X?(0,K.jsx)(i,{title:`Could not load the test cases`,error:I.error,onRetry:()=>void I.reload()}):null,I.error&&X?(0,K.jsx)(i,{compact:!0,title:`Could not refresh. Showing the last table.`,error:I.error,onRetry:()=>void I.reload()}):null,!X&&!I.error?(0,K.jsx)(u,{label:`Loading test cases`,since:I.startedAt}):null,X&&h&&(X.cases.length===0?le||v||y?(0,K.jsx)(r,{kind:`filtered`,title:`No test cases match`,body:v||y?`Nothing here yet. Pick test cases elsewhere and move them in.`:`Change a filter to see more.`,action:(0,K.jsx)(C,{onClick:()=>z({status:``,kind:``,requirement:``,folder:void 0,suite:void 0}),children:`Show all test cases`})}):(0,K.jsx)(r,{kind:`first-run`,title:`No test cases yet`,body:`Write the first one. Add its steps and what each step should show.`,action:(0,K.jsx)(C,{onClick:()=>O({...t,dotId:h,case:`new`}),children:`New test case`})}):(0,K.jsx)(fe,{cases:X.cases,route:t,dotId:h,repo:g,selected:E,onSelect:V}))]})]}),h&&(0,K.jsx)(ue,{dotId:h,caseRef:t.case,repo:g,folderId:v&&v!==`none`?v:void 0,onClose:()=>O({...t,dotId:h,case:void 0}),onCreated:e=>{A(J(h)),O({...t,dotId:h,case:e},{replace:!0})}}),h&&N===`suite`&&(0,K.jsx)(ve,{dotId:h,open:!0,caseIds:[...E],folder:v,folderName:Q,onClose:()=>P(null),onSaved:e=>{P(null),H(),z({suite:e,folder:void 0})}}),h&&N===`run`&&(0,K.jsx)(oe,{dotId:h,open:!0,onClose:()=>P(null),preset:{caseIds:[...E],label:`${E.size} selected ${E.size===1?`test case`:`test cases`}`}})]})]})}function ye({route:e}){return(0,K.jsx)(Z,{route:e})}export{ye as default};
2
+ //# sourceMappingURL=Cases-8l_6UcLh.js.map
@@ -0,0 +1 @@
1
+ .cases{max-width:calc(var(--content-max) + var(--space-12) * 5)}.cases a.btn{text-decoration:none}.cases a.btn[aria-disabled=true]{pointer-events:none;opacity:.5}.cases .page__actions{flex-wrap:wrap}.cases .btn,.case-drawer .btn,.case-drawer .icon-btn{white-space:nowrap;flex:none}.cases .field__label,.case-drawer .field__label{white-space:nowrap}.cases-filters{gap:var(--space-3);margin-bottom:var(--space-3);flex-wrap:wrap;display:flex}.cases-filter{flex:0 1 calc(var(--space-12) * 4);min-width:calc(var(--space-12) * 3)}.cases-summary{margin:0 0 var(--space-3);font-size:var(--text-md);font-weight:var(--weight-semibold);color:var(--text)}.cases-wrap{background:var(--surface);border:var(--hairline);border-radius:var(--radius-md);overflow-x:auto}.cases-table{width:100%;min-width:calc(var(--space-12) * 15);border-collapse:collapse;font-size:var(--text-sm)}.cases-table th{padding:var(--space-2) var(--space-3);background:var(--surface-2);border-bottom:var(--hairline);color:var(--text-2);font-size:var(--text-xs);font-weight:var(--weight-semibold);text-align:left;white-space:nowrap;position:sticky;top:0}.cases-table td{height:var(--row-compact);padding:var(--space-1) var(--space-3);border-bottom:var(--hairline);vertical-align:middle;color:var(--text)}.cases-table tbody tr{cursor:pointer}.cases-table tbody tr:last-child td{border-bottom:0}.cases-table tbody tr:hover{background:var(--surface-hover)}.cases-table tbody tr.is-selected{background:var(--surface-selected)}.cases-key{white-space:nowrap;font-family:var(--font-mono)}.cases-key a{color:var(--text);text-decoration:none}.cases-key a:hover{text-decoration:underline}.cases-title{width:100%;max-width:0;min-width:calc(var(--space-12) * 4)}.cases-title .truncate{display:block}.cases-nowrap{white-space:nowrap;color:var(--text-2)}.cases-reqs{white-space:nowrap}.cases-chips{gap:var(--space-1);align-items:center;display:flex}.cases-chips--wrap{flex-wrap:wrap}.cases-reqs .ref-chip{max-width:calc(var(--space-12) * 4)}.cases-result{align-items:center;gap:var(--space-2);display:inline-flex}.case-drawer{--inspector-w:calc(var(--space-12) * 11)}.case-meta{gap:var(--space-1) var(--space-4);margin:0 0 var(--space-3);font-size:var(--text-sm);flex-wrap:wrap;display:flex}.case-meta dt{color:var(--text-3);display:inline}.case-meta dt:after{content:": "}.case-meta dd{color:var(--text);margin:0;display:inline}.case-meta__wide{overflow-wrap:anywhere;flex-basis:100%}.case-actions{gap:var(--space-2);flex-wrap:wrap;display:flex}.case-sec{padding-top:var(--space-3);margin-top:var(--space-3);border-top:var(--hairline)}.case-sec__title{align-items:center;gap:var(--space-2);margin:0 0 var(--space-2);font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--text);display:flex}.case-sec__count{color:var(--text-3);font-weight:var(--weight-regular)}.case-sec p{font-size:var(--text-sm);margin:0}.case-steps-view{padding-left:var(--space-5);font-size:var(--text-sm);margin:0}.case-steps-view li{padding:var(--space-1) 0;overflow-wrap:anywhere}.case-steps-view__expected{color:var(--text-2)}.case-results{margin:0 0 var(--space-3);font-size:var(--text-sm);border:var(--hairline);border-radius:var(--radius-md);background:var(--surface);padding:0;list-style:none}.case-result{padding:var(--space-2) var(--space-3);border-bottom:var(--hairline)}.case-result:last-child{border-bottom:0}.case-result__head{align-items:center;gap:var(--space-2);min-width:0;display:flex}.case-result__at{white-space:nowrap;font-size:var(--text-xs);margin-left:auto}.case-result__notes{color:var(--text-2);overflow-wrap:anywhere;margin-top:var(--space-1)!important}.case-evidence{gap:var(--space-1) var(--space-3);margin:var(--space-1) 0 0;font-size:var(--text-xs);flex-wrap:wrap;padding:0;list-style:none;display:flex}.case-add{align-items:flex-start;gap:var(--space-2);margin-top:var(--space-3);flex-wrap:wrap;display:flex}.case-add__result{flex:0 0 calc(var(--space-12) * 3)}.case-add__notes{flex:1 1 calc(var(--space-12) * 4)}.case-add>.btn{align-self:flex-end}.case-form{gap:var(--space-3);flex-direction:column;display:flex}.case-form__row{gap:var(--space-2);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.case-steps{align-items:flex-start;gap:var(--space-2);border:0;flex-direction:column;margin:0;padding:0;display:flex}.case-steps legend{margin-bottom:var(--space-2);padding:0}.case-steps__list{gap:var(--space-3);flex-direction:column;width:100%;margin:0;padding:0;list-style:none;display:flex}.case-steps__item{align-items:flex-start;gap:var(--space-2);padding-bottom:var(--space-3);border-bottom:var(--hairline);display:flex}.case-steps__fields{gap:var(--space-2);flex-direction:column;flex:auto;min-width:0;display:flex}.case-steps__item .icon-btn{margin-top:var(--space-6)}@media (max-width:899px){.cases-filter{flex:1 1 calc(var(--space-12) * 3)}.case-form__row{grid-template-columns:minmax(0,1fr)}}.cases-layout{grid-template-columns:calc(var(--space-12) * 5) minmax(0, 1fr);gap:var(--space-4);align-items:start;display:grid}.cases-main{min-width:0}.cases-side__summary{display:none}@media (max-width:899px){.cases-side__summary{min-height:var(--control);padding:0 var(--space-3);background:var(--surface);border:var(--hairline);border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:var(--weight-medium);white-space:nowrap;cursor:pointer;align-items:center;display:flex}.cases-side[open] .cases-side__summary{margin-bottom:var(--space-2)}}.case-tree{padding:var(--space-2);background:var(--surface);border:var(--hairline);border-radius:var(--radius-md);font-size:var(--text-sm)}.case-tree__head{justify-content:space-between;align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-2);display:flex}.case-tree__head--gap{margin-top:var(--space-2);padding-top:var(--space-3);border-top:var(--hairline)}.case-tree__head .sidebar__add{white-space:nowrap;cursor:pointer;background:0 0;border:0}.case-tree__title{font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--text-3);text-transform:uppercase;letter-spacing:.04em;margin:0}.case-tree__list{margin:0;padding:0;list-style:none}.case-tree__item{align-items:center;gap:var(--space-2);width:100%;min-height:var(--row-compact);padding:0 var(--space-2) 0 calc(var(--space-2) + var(--depth,0) * var(--space-4));border-radius:var(--radius);color:var(--text-2);text-align:left;cursor:pointer;white-space:nowrap;background:0 0;border:0;display:flex}.case-tree__item:hover{background:var(--surface-hover);color:var(--text)}.case-tree__item.is-current{background:var(--surface-selected);color:var(--text);font-weight:var(--weight-medium)}.case-tree__icon{color:var(--text-3);flex:none;display:inline-flex}.case-tree__name{flex:auto;min-width:0}.case-tree__count{color:var(--text-3);font-size:var(--text-xs);flex:none}.case-tree__actions{gap:var(--space-2);padding:var(--space-2);display:flex}.case-tree__actions .btn{white-space:nowrap;flex:none}.case-tree__note{padding:var(--space-1) var(--space-2);color:var(--text-3);font-size:var(--text-xs);margin:0}.cases-pick{width:var(--space-8);text-align:center}.cases-pick input{cursor:pointer;width:16px;height:16px}.cases-selbar{align-items:center;gap:var(--space-2);margin-bottom:var(--space-3);padding:var(--space-2) var(--space-3);background:var(--surface-2);border-radius:var(--radius-md);flex-wrap:wrap;display:flex}.cases-selbar--quiet{background:0 0;padding:0}.cases-selbar .btn{white-space:nowrap;flex:none}.cases-selbar__count{font-size:var(--text-sm);font-weight:var(--weight-semibold);white-space:nowrap}.cases-selbar__to{flex:0 1 calc(var(--space-12) * 4);min-width:calc(var(--space-12) * 3)}@media (max-width:899px){.cases-layout{grid-template-columns:minmax(0,1fr)}}