@overdeck/desktop 0.47.0 → 0.48.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (444) hide show
  1. package/drizzle/overdeck/0000_overdeck_init.sql +59 -0
  2. package/package.json +1 -1
  3. package/server/{acceptance-criteria-10Ur5Dne.js → acceptance-criteria-DmtLDbtt.js} +2 -2
  4. package/server/{activity-logger-CyteR4JO.js → activity-logger-Co5qljIj.js} +55 -4
  5. package/server/activity-logger-K7FYGF_z.js +3 -0
  6. package/server/{advancing-selfheal-BNwqxseD.js → advancing-selfheal-8AR68Asf.js} +6 -6
  7. package/server/{agent-gc-C3h9Or3a.js → agent-gc-BmYeT6eH.js} +5 -5
  8. package/server/agent-state-Dq3s84-P.js +3 -0
  9. package/server/{agent-state-service-C63p_ftq.js → agent-state-service-DK1Vay1E.js} +1 -1
  10. package/server/{agent-state-service-Ds6OeFvo.js → agent-state-service-rjnzpHDx.js} +6 -6
  11. package/server/agent-state-source-Ds968-j6.js +21 -0
  12. package/server/{agents-J5mEnekq.js → agents-Dls7tfJH.js} +5 -5
  13. package/server/agents-IPSa5kzn.js +3 -0
  14. package/server/{archive-planning-BwhxeP7C.js → archive-planning-Cq7cyinS.js} +51 -24
  15. package/server/archive-planning-MbkGCBIY.js +2 -0
  16. package/server/{artifact-index-jobs-D1q_vR3V.js → artifact-index-jobs-Dj_8kpTd.js} +3 -3
  17. package/server/{assemble-Bgwqv-Ro.js → assemble-BTCmbcfH.js} +20 -13
  18. package/server/{auto-spawn-consent-CQ9Bi9q6.js → auto-spawn-consent-lXqRJ1Dr.js} +304 -121
  19. package/server/{backlog-auto-trigger-n1lzPgN4.js → backlog-auto-trigger-Dn-amzt6.js} +3 -3
  20. package/server/{behavior-td6-xhQk.js → behavior-DIMQMRzs.js} +2 -2
  21. package/server/{boot-reconciled-stop-events-C7gGe3oB.js → boot-reconciled-stop-events-D6SeUTIr.js} +1 -1
  22. package/server/{bridge-pool-patrol-CYH2OLb5.js → bridge-pool-patrol-BEjt-xF3.js} +2 -2
  23. package/server/{briefing-freshness-DRqZ8lAz.js → briefing-freshness-3PNmL_p3.js} +2 -2
  24. package/server/{build-info-7yiEpl6u.js → build-info-CJg813Hm.js} +3 -3
  25. package/server/{build-info-CpG__c63.js → build-info-CXyeFsXu.js} +1 -1
  26. package/server/{checkpoint-manager-CkKmB0wZ.js → checkpoint-manager-9t7G5c1V.js} +1 -1
  27. package/server/{checkpoint-manager-DBcyNR8w.js → checkpoint-manager-B2G38R3p.js} +3 -3
  28. package/server/checkpoint-worker.js +1 -1
  29. package/server/{checkpoints-Wm963lm8.js → checkpoints-CuBgiXO-.js} +1 -1
  30. package/server/{checkpoints-D95apurL.js → checkpoints-VTZMd4Qm.js} +2 -2
  31. package/server/{claude-hooks-provision-Bjitl9aI.js → claude-hooks-provision-55SyQaPz.js} +2 -2
  32. package/server/{claude-hooks-provision-4RPxNkE8.js → claude-hooks-provision-CEUT-CZd.js} +1 -1
  33. package/server/{claude-permissions-CpbpvUQ2.js → claude-permissions-Cn0dIu2i.js} +2 -2
  34. package/server/{claude-settings-overlay-BzkHYDwR.js → claude-settings-overlay-B19hdzSA.js} +1 -1
  35. package/server/{claude-settings-overlay-_H9Yrzab.js → claude-settings-overlay-Yg_ANh81.js} +2 -2
  36. package/server/{cli-Cte9ZFGn.js → cli-C9S84iTy.js} +79 -22
  37. package/server/cli-M1cwZ__d.js +3 -0
  38. package/server/{cliproxy-C5fMJ7rY.js → cliproxy-CJq3KXU6.js} +2 -2
  39. package/server/{cliproxy-DaAbWMjC.js → cliproxy-DgEZlr7Y.js} +1 -1
  40. package/server/{close-issue-BPh1ARCF.js → close-issue-DPxRddGR.js} +5 -5
  41. package/server/{closed-issue-reaper-DoOZqGFK.js → closed-issue-reaper-C5Zn4GRS.js} +13 -13
  42. package/server/{closed-issue-reaper-DHRfRMrp.js → closed-issue-reaper-D-2B48Ri.js} +1 -1
  43. package/server/{codex-o8FJwzmy.js → codex-B3n_rkwn.js} +1 -1
  44. package/server/{codex-BzGDW_d3.js → codex-CjkD1PJu.js} +6 -6
  45. package/server/{codex-parser-Dt-ycU8L.js → codex-parser-DpB1Il-P.js} +2 -2
  46. package/server/{compaction-continuation-CvXpbZ4w.js → compaction-continuation-DZD9ukSE.js} +3 -3
  47. package/server/{config-CL3Gyvja.js → config-C5saf4Ja.js} +1 -1
  48. package/server/{config-BvLe652W.js → config-DnLJATZk.js} +2 -2
  49. package/server/{config-Bi3u1VK7.js → config-DvM8jtQK.js} +2 -2
  50. package/server/{config-yaml-CxdwhAIA.js → config-yaml-BSCqwmX0.js} +11299 -10972
  51. package/server/{conflict-gate-CX80JYYS.js → conflict-gate-DXa_L28t.js} +1 -1
  52. package/server/{conflict-gate-E4nt7ZeS.js → conflict-gate-WfVqgalf.js} +4 -4
  53. package/server/{context-layers-DAG83UZt.js → context-layers-D7UqH9Ab.js} +2 -2
  54. package/server/{context-layers-C_IIysnm.js → context-layers-Dpz3Vd6d.js} +3 -3
  55. package/server/{control-settings-CiqGxXnc.js → control-settings-DVf6pKyv.js} +4 -4
  56. package/server/{conversation-compaction-BE3CNtHF.js → conversation-compaction-5XuH6OBn.js} +1 -1
  57. package/server/{conversation-compaction-D6-yLtqt.js → conversation-compaction-COrbnX1J.js} +8 -8
  58. package/server/{conversation-service-DBxoYMDl.js → conversation-service-BufdtnZF.js} +169 -10
  59. package/server/{conversation-service-D_TS2b1r.js → conversation-service-DnUyIiLb.js} +1 -1
  60. package/server/{conversations-D0UEdLtk.js → conversations-B4rxz-Wl.js} +17 -10
  61. package/server/{conversations-BKDVpB-3.js → conversations-D1bwxQMy.js} +1 -1
  62. package/server/{cost-DpgYmYqR.js → cost-CpFDrJUS.js} +46 -2
  63. package/server/{cost-DS1s0DbG.js → cost-KLuwKCW9.js} +3 -3
  64. package/server/{cost-sync-tOCCGnEt.js → cost-sync-cesi9dp8.js} +3 -3
  65. package/server/{dag-BtkgLeqY.js → dag-BYiFMqpU.js} +2 -2
  66. package/server/{dangerous-git-ops-CFLykHWt.js → dangerous-git-ops-BKvd3-Hk.js} +1 -1
  67. package/server/dashboard-db-worker.js +7 -7
  68. package/server/{deacon-BIblC-WX.js → deacon-BbsWw8a6.js} +3 -3
  69. package/server/{deacon-pLRLbPvR.js → deacon-HdEh0Esp.js} +863 -214
  70. package/server/deacon-event-client-C93rvOT7.js +237 -0
  71. package/server/deacon-event-client-Ck5Ei7Mn.js +3 -0
  72. package/server/{deacon-nudge-log-B08gF0mh.js → deacon-nudge-log-BND_97Wo.js} +4 -3
  73. package/server/{deacon-pending-lifecycle-B-Io84AP.js → deacon-pending-lifecycle-CD3YsiQK.js} +3 -3
  74. package/server/deacon-swarm-DgWADWd_.js +2 -0
  75. package/server/{deacon-swarm-v5PMun-m.js → deacon-swarm-rqrl4TMs.js} +39 -18
  76. package/server/deacon.js +12 -210
  77. package/server/{dead-end-trip-D8A3msX9.js → dead-end-trip-DSF23CLX.js} +4 -3
  78. package/server/dead-end-trip-zKlS4v6f.js +2 -0
  79. package/server/delivery-CsbQdZkS.js +3 -0
  80. package/server/{deploy-patrol-sYgOxLeb.js → deploy-patrol-kARAkji4.js} +17 -21
  81. package/server/{deploy-queue-VfohaPN_.js → deploy-queue-Bj0HJT1i.js} +2 -2
  82. package/server/{deploy-queue-gHJBycaF.js → deploy-queue-rjTUy1RM.js} +1 -1
  83. package/server/{deploy-window-D4DQb8VP.js → deploy-window-B2IM-9G5.js} +10 -44
  84. package/server/{deploy-window-CFRZ0-kt.js → deploy-window-BNFWnA8D.js} +1 -1
  85. package/server/{dev-supervisor-DiOBDM1c.js → dev-supervisor-B1mZYXz4.js} +2 -2
  86. package/server/{devcontainer-renderer-BUOIlfgD.js → devcontainer-renderer-B-o68Z5B.js} +3 -3
  87. package/server/{dist-C3A8B8wM.js → dist-3W--cGMa.js} +1 -1
  88. package/server/dist-BR0QtwmS.js +3 -0
  89. package/server/{dist-src-C0adpegX.js → dist-src-C-Vk2jNk.js} +1 -1
  90. package/server/{docker-Y3PElJb0.js → docker-DH3jUYg1.js} +1 -1
  91. package/server/{docker-BJzlkqYB.js → docker-meuLKLzV.js} +27 -20
  92. package/server/{dod-DlNtcH6n.js → dod-D7-9dCOD.js} +1 -1
  93. package/server/{driver-CKVGi51s.js → driver-CmsY2RLl.js} +1 -1
  94. package/server/{durable-review-pipeline-DP6bIcOY.js → durable-review-pipeline-CStTgOAf.js} +1 -1
  95. package/server/{durable-review-pipeline-Cibps-Rg.js → durable-review-pipeline-Chq0lzjL.js} +1 -1
  96. package/server/{ensure-devcontainer-DMAbWqtQ.js → ensure-devcontainer-BE3llBWP.js} +1 -1
  97. package/server/{ensure-devcontainer-BAofzBPv.js → ensure-devcontainer-BXrY7C2Z.js} +4 -4
  98. package/server/{esm-shims-BeObUkaw.js → esm-shims-Bzy4ZzNU.js} +1 -1
  99. package/server/event-store-COd2tOx8.js +3 -0
  100. package/server/{event-store-CrHcVC5_.js → event-store-D_AR-Y78.js} +184 -11
  101. package/server/{events-CF8QDbuV.js → events-CCkFWa7X.js} +1 -1
  102. package/server/{events-BNrvchBg.js → events-zjDQozet.js} +3 -3
  103. package/server/{factory-Cmm9Hsho.js → factory-DhavwKVc.js} +5 -5
  104. package/server/{feature-registry-population-B6HpNWRy.js → feature-registry-population-DWGBKyWd.js} +4 -4
  105. package/server/{feature-registry-storage-DJEFx1Pf.js → feature-registry-storage-C5DkXmCM.js} +3 -3
  106. package/server/{features-D5km80UI.js → features-CC47YcCX.js} +2 -2
  107. package/server/{feedback-target-BJ5ZADsu.js → feedback-target-D9Tex35_.js} +1 -1
  108. package/server/{feedback-target-DSxEL6lP.js → feedback-target-DoRCR3L-.js} +18 -7
  109. package/server/{feedback-writer-CoB9Z6aU.js → feedback-writer-CTSuA6lw.js} +1 -1
  110. package/server/{feedback-writer-C27Hak8a.js → feedback-writer-DdsBdtNL.js} +5 -5
  111. package/server/{flywheel-DZZdtiOL.js → flywheel-DHWHzaYK.js} +1 -1
  112. package/server/{flywheel-f662Q-y2.js → flywheel-DJQa9az8.js} +14 -14
  113. package/server/{flywheel-BHx8XuMr.js → flywheel-TacAI9MA.js} +21 -17
  114. package/server/{flywheel-merge-order-Dil0LmdN.js → flywheel-merge-order-D2foPh88.js} +1 -1
  115. package/server/{flywheel-merge-order-D_xLMbJU.js → flywheel-merge-order-DRtex2Dt.js} +7 -7
  116. package/server/forge-CdlCG9aS.js +3 -0
  117. package/server/{forge-BaKGCya6.js → forge-c8LeC-tw.js} +2 -2
  118. package/server/{from-B3tZbB55.js → from-BogSwvr2.js} +1 -1
  119. package/server/{fs-lock-Bre3sGoz.js → fs-lock-D_GeJtXl.js} +3 -3
  120. package/server/{fts-operations-B9jG8wa3.js → fts-operations-DP9R-8Q3.js} +3 -3
  121. package/server/{git-utils-Xg4PFN45.js → git-utils-C31x1lpE.js} +1 -1
  122. package/server/{git-utils-CsvYfJU3.js → git-utils-xQ74FoSn.js} +5 -4
  123. package/server/{github-app-Bmg4R9mv.js → github-app-CpQSDlv8.js} +1 -1
  124. package/server/{github-app-CmNk0zLU.js → github-app-D2QuvZ3j.js} +3 -3
  125. package/server/{github-client-qazkPrg0.js → github-client-D9YvJX5D.js} +3 -3
  126. package/server/{github-client-B6KM9_wA.js → github-client-Tpi3PmKX.js} +1 -1
  127. package/server/{github-pr-lookup-DAcVeRLK.js → github-pr-lookup-DvBMv-IW.js} +2 -2
  128. package/server/{harness-binary-BSpiXaLw.js → harness-binary-BHxWf_sX.js} +7 -6
  129. package/server/{harness-resolve-BAJu5MX8.js → harness-resolve-bj9WMABA.js} +4 -4
  130. package/server/{health-events-BwX32k8d.js → health-events-bCDPn59Z.js} +2 -2
  131. package/server/{health-events-2Z6Wa9SM.js → health-events-qo7Ss34U.js} +1 -1
  132. package/server/{hooks-DbtbimEf.js → hooks-Dyxtg5fk.js} +2 -2
  133. package/server/{hooks-D1g1jKLI.js → hooks-X2XHBB2b.js} +1 -1
  134. package/server/{hume-DXNiu6nQ.js → hume-DrZEGpqc.js} +2 -2
  135. package/server/hume-YPsy4UA8.js +3 -0
  136. package/server/{idle-stack-reaper-Cy-dQzW4.js → idle-stack-reaper-CJ1ygW0p.js} +37 -7
  137. package/server/{idle-stack-reaper-CRA1e0jr.js → idle-stack-reaper-uJGOb-vu.js} +1 -1
  138. package/server/{in-flight-guard-D-sSkADM.js → in-flight-guard-CG2Eo-rr.js} +1 -1
  139. package/server/{infra-BDQDRopn.js → infra-CTrmVqc_.js} +111 -6
  140. package/server/{injection-Bl8d_jHZ.js → injection-BisQ0lpX.js} +1 -1
  141. package/server/{injection-6AGnXxlj.js → injection-C9sxqbc2.js} +73 -193
  142. package/server/{inspect-agent-nXdIptyh.js → inspect-agent-BoSO51YC.js} +12 -12
  143. package/server/inspect-agent-BykeOH4a.js +2 -0
  144. package/server/{internal-token-DzK385vD.js → internal-token-AvXePaQT.js} +2 -2
  145. package/server/{internal-token-Ias7N8Kg.js → internal-token-Djkj-yqK.js} +1 -1
  146. package/server/{io-B00PBNku.js → io-mxOWMZ7I.js} +6 -6
  147. package/server/{issue-closed-BehTG1be.js → issue-closed-Bj_bCv_0.js} +7 -7
  148. package/server/{issue-lifecycle-BqSuQvbn.js → issue-lifecycle-A5YIpDZE.js} +1 -1
  149. package/server/{issue-lifecycle-Birk-ifu.js → issue-lifecycle-BXUqaHzF.js} +32 -28
  150. package/server/{issue-service-singleton-C6ZduvuY.js → issue-service-singleton-BPNEXczv.js} +11 -11
  151. package/server/{issue-service-singleton-B2wXiIlw.js → issue-service-singleton-CcaHjKPR.js} +1 -1
  152. package/server/{issues-DQ5-LatB.js → issues-AX-YBeAQ.js} +2 -2
  153. package/server/{jsonl-parser-BDpnGFCl.js → jsonl-parser-CgYWQ20q.js} +7 -3
  154. package/server/kimi-code-BYbme0aV.js +579 -0
  155. package/server/kimi-code-D_Ppt82c.js +3 -0
  156. package/server/kimi-parser-B-JBg3Pv.js +147 -0
  157. package/server/{label-cleanup-Dwnky8FG.js → label-cleanup-sXUlgdM0.js} +3 -3
  158. package/server/{lifecycle-B4Xdb4cY.js → lifecycle-D2X3al0D.js} +2 -2
  159. package/server/{lifecycle-B3s4sM1G.js → lifecycle-DjlljAZ1.js} +6 -6
  160. package/server/{lifecycle-io-CzTHEooc.js → lifecycle-io-C5nVk55o.js} +1 -1
  161. package/server/{lifecycle-io-DCo6s6ks.js → lifecycle-io-NPm1YtIG.js} +5 -5
  162. package/server/{linear-client-CnbtHiic.js → linear-client--luYwCZg.js} +1 -1
  163. package/server/{linear-client-9uq7fhiV.js → linear-client-B8pLegW1.js} +3 -3
  164. package/server/{linear-mcp-auth-BxUOzswy.js → linear-mcp-auth-BQVWV0I3.js} +6 -6
  165. package/server/{linear-mcp-auth-D46fBCLf.js → linear-mcp-auth-Dx81Zl4G.js} +1 -1
  166. package/server/memory-fts-worker.js +1 -1
  167. package/server/{merge-DiW9RdSB.js → merge-Bx5Bh9pi.js} +3 -3
  168. package/server/{merge-sr8Nrnmi.js → merge-Dqmh_zja.js} +1 -1
  169. package/server/{merge-agent-BLUgRsz3.js → merge-agent-DP9AUY29.js} +33 -33
  170. package/server/{merge-agent-DQTXZk8z.js → merge-agent-DWd0KfiS.js} +1 -1
  171. package/server/{merge-batch-Cp_j9BGk.js → merge-batch-BdmvTEAC.js} +1 -1
  172. package/server/{merge-completeness-BLbB5-6n.js → merge-completeness-BfRwFjRx.js} +1 -1
  173. package/server/{merge-completeness-B46KqhtY.js → merge-completeness-C1FevcDT.js} +4 -4
  174. package/server/merge-ops-B98tKc1e.js +2 -0
  175. package/server/merge-rebase-BLykMwPO.js +2 -0
  176. package/server/{merge-rebase-DIkBjgwq.js → merge-rebase-BX1xKsrE.js} +2 -2
  177. package/server/{merge-set-CBgHfwM0.js → merge-set-DsLjjLEV.js} +4 -4
  178. package/server/{merge-set-DeUxFsC3.js → merge-set-H6epHOsw.js} +1 -1
  179. package/server/{merge-sync-kr4vqyjM.js → merge-sync-BEdfsQV4.js} +2 -2
  180. package/server/{merge-sync-CpGmk6Ch.js → merge-sync-BebcWWGA.js} +1 -1
  181. package/server/{merge-train-Dmrcus12.js → merge-train-D1I0lNOT.js} +4 -4
  182. package/server/{merge-train-deps-D_uGX91G.js → merge-train-deps-D_-C0Pk2.js} +4 -4
  183. package/server/{merge-verification-NvaAd8CZ.js → merge-verification-DN1Ov9bU.js} +6 -6
  184. package/server/{merged-docker-cleanup-worker-Y1R06TEl.js → merged-docker-cleanup-worker-CfXSr2pA.js} +4 -4
  185. package/server/{merged-docker-cleanup-worker-DH_hrGPI.js → merged-docker-cleanup-worker-ybsPyHjB.js} +1 -1
  186. package/server/{multipart-parser-R-oC8dQg.js → multipart-parser-CL5QG8iv.js} +2 -2
  187. package/server/{no-resume-mode-BgD0JUmM.js → no-resume-mode-DUR7Hi98.js} +1 -1
  188. package/server/node_modules/.package-lock.json +7 -7
  189. package/server/node_modules/brace-expansion/README.md +23 -1
  190. package/server/node_modules/brace-expansion/index.js +206 -85
  191. package/server/node_modules/brace-expansion/package.json +1 -1
  192. package/server/node_modules/msgpackr/dist/index-no-eval.cjs +34 -28
  193. package/server/node_modules/msgpackr/dist/index-no-eval.cjs.map +1 -1
  194. package/server/node_modules/msgpackr/dist/index-no-eval.min.js +1 -1
  195. package/server/node_modules/msgpackr/dist/index-no-eval.min.js.map +1 -1
  196. package/server/node_modules/msgpackr/dist/index.js +34 -28
  197. package/server/node_modules/msgpackr/dist/index.js.map +1 -1
  198. package/server/node_modules/msgpackr/dist/index.min.js +1 -1
  199. package/server/node_modules/msgpackr/dist/index.min.js.map +1 -1
  200. package/server/node_modules/msgpackr/dist/node.cjs +36 -29
  201. package/server/node_modules/msgpackr/dist/node.cjs.map +1 -1
  202. package/server/node_modules/msgpackr/dist/test.js +63 -32
  203. package/server/node_modules/msgpackr/dist/test.js.map +1 -1
  204. package/server/node_modules/msgpackr/dist/unpack-no-eval.cjs +34 -28
  205. package/server/node_modules/msgpackr/dist/unpack-no-eval.cjs.map +1 -1
  206. package/server/node_modules/msgpackr/package.json +1 -1
  207. package/server/node_modules/msgpackr/unpack.js +34 -28
  208. package/server/{orphan-proposed-reconciler-DcgTPPFY.js → orphan-proposed-reconciler-CEW1maPl.js} +1 -1
  209. package/server/{orphan-proposed-reconciler-B6vJHxtX.js → orphan-proposed-reconciler-DfqHZftT.js} +23 -22
  210. package/server/package-lock.json +8 -8
  211. package/server/package.json +1 -1
  212. package/server/{pan-dir-DMzF5wne.js → pan-dir-DhgKfO86.js} +21 -6
  213. package/server/{paths-sJBSb7Ul.js → paths-BUuhi6jM.js} +17 -17
  214. package/server/{pending-lifecycle-claim-DilzGfgk.js → pending-lifecycle-claim-DJlA1rTR.js} +2 -2
  215. package/server/{persistent-logger-H_VjuOu7.js → persistent-logger-s8cbpFNV.js} +2 -2
  216. package/server/{pickup-DWhqzliO.js → pickup-2AxtB3dW.js} +1 -1
  217. package/server/{pipeline-membership-C88VBnhJ.js → pipeline-membership-2_okL5bm.js} +1 -1
  218. package/server/{pipeline-membership-D9SBvItj.js → pipeline-membership-Dqv6_0ig.js} +1 -1
  219. package/server/{pipeline-membership-gather-4eR-7Tqy.js → pipeline-membership-gather-4F1-tXKI.js} +1 -1
  220. package/server/{pipeline-membership-gather-CeVGnNJ2.js → pipeline-membership-gather-CtJ_7aGf.js} +149 -17
  221. package/server/{pipeline-notifier-DT6xLFao.js → pipeline-notifier-CO9rxJgB.js} +1 -1
  222. package/server/{pipeline-notifier-D0ALV6Nw.js → pipeline-notifier-DDfVBJhJ.js} +2 -2
  223. package/server/{post-merge-lifecycle-worker-8HIeS_J6.js → post-merge-lifecycle-worker-DmSOkeNp.js} +3 -3
  224. package/server/{project-pipelines-9SKt2bEc.js → project-pipelines-72WE8GVK.js} +2 -2
  225. package/server/{project-repos-B5pIphKg.js → project-repos-BAqDwtvi.js} +16 -11
  226. package/server/project-repos-Df90Zw7Y.js +3 -0
  227. package/server/projects-WqMWCdpa.js +3 -0
  228. package/server/{prompts-CgzMBvQF.js → prompts-XkL10m8M.js} +2 -2
  229. package/server/{providers-BJQSnAAp.js → providers-ClGPGkQ8.js} +15 -12
  230. package/server/providers-DFUOed8u.js +3 -0
  231. package/server/public/assets/{chunk-BO2N2NFS-D_pGACYN.js → chunk-BO2N2NFS-CeQUdPxr.js} +4 -4
  232. package/server/public/assets/{diagram-OG6HWLK6-BO6fe3hH.js → diagram-OG6HWLK6-B7rgk4yT.js} +1 -1
  233. package/server/public/assets/{dist-5zingMiA.js → dist-2RPazfXY.js} +3 -3
  234. package/server/public/assets/{dist-CVxhbI2E.js → dist-B9NInrVZ.js} +1 -1
  235. package/server/public/assets/{ganttDiagram-6RSMTGT7-Bgj4A7kp.js → ganttDiagram-6RSMTGT7-Bxp0gV14.js} +1 -1
  236. package/server/public/assets/{highlighted-body-OFNGDK62-DNPK7_cm.js → highlighted-body-OFNGDK62-CzoRTVlC.js} +1 -1
  237. package/server/public/assets/index-Cml-kHo6.css +1 -0
  238. package/server/public/assets/{index-DEpY-D1O.js → index-CvN8cEgs.js} +216 -215
  239. package/server/public/assets/{linear-BB0jQT16.js → linear-CFEEl3ND.js} +1 -1
  240. package/server/public/assets/mermaid-GHXKKRXX-CpV7nCBM.js +1 -0
  241. package/server/public/assets/{pieDiagram-4H26LBE5-DeGIzzpZ.js → pieDiagram-4H26LBE5-BeR8R0cr.js} +1 -1
  242. package/server/public/assets/{prod-XBLvikex.js → prod-CYjzjCrn.js} +4 -4
  243. package/server/public/assets/{quadrantDiagram-W4KKPZXB-BV9SLeWz.js → quadrantDiagram-W4KKPZXB-BpcTkFuW.js} +1 -1
  244. package/server/public/assets/{sankeyDiagram-5OEKKPKP-Dwja0gj8.js → sankeyDiagram-5OEKKPKP-Bx2ETEV5.js} +1 -1
  245. package/server/public/assets/{xychartDiagram-2RQKCTM6-DCB4qvfw.js → xychartDiagram-2RQKCTM6-BKgEAFaj.js} +1 -1
  246. package/server/public/index.html +2 -2
  247. package/server/{pull-requests-7BgLDsIo.js → pull-requests-B-KrUph5.js} +3 -3
  248. package/server/{pull-requests-Dq0y6IxE.js → pull-requests-DK5k92B4.js} +1 -1
  249. package/server/{queries-C-MUZaIy.js → queries-DVpl1vsU.js} +1212 -193
  250. package/server/{rally-CPysR4T_.js → rally-DbE561hD.js} +3 -3
  251. package/server/rally-O_st_X7n.js +3 -0
  252. package/server/{rally-api-8Ptlp2os.js → rally-api-CZLeEd2C.js} +2 -2
  253. package/server/{rally-api-CgosKdKL.js → rally-api-DaHtn5QN.js} +1 -1
  254. package/server/{rally-client-CCX0hADj.js → rally-client-C-MAl8ur.js} +1 -1
  255. package/server/{rally-client-iYMHWQD7.js → rally-client-Ch3zRsBX.js} +5 -5
  256. package/server/{reap-terminal-sessions-Qf-9LVQc.js → reap-terminal-sessions-C1n0ALRb.js} +2 -2
  257. package/server/{reap-terminal-sessions-4Xg9NGA8.js → reap-terminal-sessions-DegFS2p1.js} +2 -2
  258. package/server/{rebuild-stack-CMdgaylx.js → rebuild-stack-C9Li44A3.js} +20 -10
  259. package/server/{rebuild-stack-DqcOVmJO.js → rebuild-stack-qC0jCNm6.js} +2 -2
  260. package/server/{reconstruct-cache-CMZJ_Vjq.js → reconstruct-cache-BHyiAg02.js} +7 -7
  261. package/server/record-aVzu-LGm.js +3 -0
  262. package/server/record-update-CZh46a2f.js +617 -0
  263. package/server/{record-update-DhI7eySG.js → record-update-DtdJK2Iw.js} +1 -1
  264. package/server/recovery-trip-CSNWSLDn.js +77 -0
  265. package/server/recovery-trip-_16hFKv4.js +3 -0
  266. package/server/{release-engine-B2X9AfFC.js → release-engine-Be5MX5GP.js} +5 -5
  267. package/server/{release-set-G4XKyQ8K.js → release-set-DJv_O6PS.js} +3 -3
  268. package/server/{remote-BXarMvqf.js → remote-BMM3uH2J.js} +3 -3
  269. package/server/{remote-CUhyqjXk.js → remote-C0xVTHA5.js} +3 -3
  270. package/server/{remote-agents-CLZB3Coc.js → remote-agents-BIIoc5pD.js} +1 -1
  271. package/server/{remote-agents-Bba-MgSA.js → remote-agents-EUiZ26bj.js} +7 -7
  272. package/server/{remote-completion-CwAp79EC.js → remote-completion-BS4tJUn8.js} +13 -13
  273. package/server/resolver-BvHd6RE4.js +163 -0
  274. package/server/resume-9thEqAQR.js +3 -0
  275. package/server/{review-agent--pOptAEV.js → review-agent-BHGaBoBu.js} +29 -29
  276. package/server/{review-agent-BTCNkq2h.js → review-agent-CD3RQ-tc.js} +1 -1
  277. package/server/{review-artifacts-BNmw8dWE.js → review-artifacts-DyhajWso.js} +6 -6
  278. package/server/{review-context-DFxYOOJW.js → review-context-B-dlsPnx.js} +9 -9
  279. package/server/{review-convoy-liveness-BgU_1jJf.js → review-convoy-liveness-D7M-s_nS.js} +2 -2
  280. package/server/{review-status-Dma9SFaN.js → review-status-B6wYcOtP.js} +1 -1
  281. package/server/{review-status-CGvlA4o_.js → review-status-CKLk5aZ-.js} +308 -58
  282. package/server/{review-status-emit-DURrmGYX.js → review-status-emit-CJ7UmEVU.js} +3 -3
  283. package/server/{review-status-enrichment-8NiNXi5W.js → review-status-enrichment-DJRgGX7-.js} +3 -3
  284. package/server/review-status-limits-4EJDCGHO.js +7 -0
  285. package/server/{review-status-source-DIk1JSow.js → review-status-source-7nU3Z2wL.js} +1 -1
  286. package/server/{review-status-source-BLx_1siH.js → review-status-source-BsDYGfyv.js} +1 -1
  287. package/server/{review-status-sync-muT-EBp2.js → review-status-sync-BLssMTEW.js} +1 -1
  288. package/server/{review-status-sync-0GxOqeqF.js → review-status-sync-BxBeHRde.js} +35 -11
  289. package/server/{review-verdict-feedback-xJNdqBnX.js → review-verdict-feedback-5jWuzgpc.js} +90 -16
  290. package/server/{review-verdict-feedback-HwF6ODFy.js → review-verdict-feedback-HRY9P4bN.js} +1 -1
  291. package/server/{rollup-BQaol5TX.js → rollup-BGIrCEkU.js} +79 -44
  292. package/server/rollup-CZB4UL9q.js +3 -0
  293. package/server/{scanner-C-D2cFdX.js → scanner-DydjXPrz.js} +16 -9
  294. package/server/search-DdtIjAiu.js +395 -0
  295. package/server/{sequence-io-Bmf1EZM5.js → sequence-io-Fw-cLyDs.js} +4 -4
  296. package/server/{sequencer-agent-CigMyKh2.js → sequencer-agent-BcpGMt5x.js} +15 -10
  297. package/server/server.js +1258 -438
  298. package/server/{service-CD0DvFvD.js → service-BFFkGsG4.js} +58 -58
  299. package/server/{session-fork-B6cQ5eya.js → session-fork-D0V-3e5P.js} +2 -2
  300. package/server/{session-history-3ON_IJjm.js → session-history-Bta5l9jY.js} +5 -5
  301. package/server/{settings-PilbFZAM.js → settings-Ce8B1daF.js} +2 -2
  302. package/server/{settings-VN0qOh4U.js → settings-E3FnEIUx.js} +3 -3
  303. package/server/settings-eOOJpxi_.js +2 -0
  304. package/server/{shadow-engineering-DXvx77oE.js → shadow-engineering-Mt9nJO4i.js} +3 -3
  305. package/server/{shadow-state-CZBp7pwq.js → shadow-state-Bzj_AZCV.js} +1 -1
  306. package/server/{shadow-state-BBk_zacw.js → shadow-state-DrkhoVSx.js} +2 -2
  307. package/server/{shadow-utils-DdZ05AJS.js → shadow-utils-H1GfqP06.js} +2 -2
  308. package/server/{ship-log-7kJfjUX2.js → ship-log-CFUIo4PR.js} +1 -1
  309. package/server/{smart-compaction-8fA5k5XN.js → smart-compaction-DSTq-Wua.js} +1 -1
  310. package/server/{smart-compaction-ByhL9cRS.js → smart-compaction-Hzp3KCJX.js} +7 -7
  311. package/server/{spawn-planning-session-vLUJoFjy.js → spawn-planning-session-C0uSA2SL.js} +2 -2
  312. package/server/{spawn-planning-session-pcF-YeFE.js → spawn-planning-session-DN4son31.js} +23 -21
  313. package/server/{specialist-completion-B07XjWD2.js → specialist-completion-Cf6tpIh1.js} +1 -1
  314. package/server/{specialist-context-DJ-zFyL3.js → specialist-context-DEUEkjIQ.js} +5 -5
  315. package/server/{specialist-handoff-logger-aKSxbIgD.js → specialist-handoff-logger-D_LmQDj3.js} +2 -2
  316. package/server/{specialist-logs-Dae-n52_.js → specialist-logs-7Ynue0R7.js} +3 -3
  317. package/server/{specialists-KR3pKulN.js → specialists-CQwBEGlD.js} +1 -1
  318. package/server/{specialists-6PWdtWcg.js → specialists-DAjPgYs_.js} +504 -238
  319. package/server/{specialists-DUiExaxb.js → specialists-Hr6iW9fU.js} +18 -18
  320. package/server/{specialists-Bz-wFT7R.js → specialists-MOoeB4A8.js} +1 -1
  321. package/server/specs-Dl88cbKY.js +3 -0
  322. package/server/{src-B948bGVR.js → src-BYdwL_n-.js} +668 -64
  323. package/server/{src-vHy2-oCv.js → src-DQnkPN2i.js} +3 -3
  324. package/server/{src-rac0Mepv.js → src-DhfDV0o4.js} +6 -6
  325. package/server/{stack-health-DqLTiEu4.js → stack-health-D_iKwNRg.js} +107 -16
  326. package/server/stack-health-deVSdDwn.js +3 -0
  327. package/server/{stale-task-claims-Cab_Fo_Z.js → stale-task-claims-BYJGqhLI.js} +5 -5
  328. package/server/{staleness-CGTZyp6V.js → staleness-CopBDKnA.js} +1 -1
  329. package/server/{staleness-C-a5rBxF.js → staleness-D8WeMUHd.js} +1 -1
  330. package/server/{state-home-722Dkx92.js → state-home-DjN8qduI.js} +24 -3
  331. package/server/{state-mapping-CybR81Uf.js → state-mapping-DlM7OYRW.js} +1 -1
  332. package/server/{state-migrate-2u8wIpoL.js → state-migrate-a2p1gtD7.js} +4 -4
  333. package/server/state-mirror-Cv_XgvT5.js +121 -0
  334. package/server/{stuck-remediation-r1TJu68G.js → stuck-remediation-CXJX_kki.js} +1 -1
  335. package/server/{stuck-remediation-CC6q3eqQ.js → stuck-remediation-CbCRSz1v.js} +31 -732
  336. package/server/{substrate-bug-weights-service-CzIyyWFT.js → substrate-bug-weights-service-DxpopNd9.js} +3 -3
  337. package/server/{summary-fork-BqgmgPDt.js → summary-fork-B61fjRJn.js} +2 -2
  338. package/server/{summary-fork-Df2WFijM.js → summary-fork-B9pszUJN.js} +91 -10
  339. package/server/supervisor/{injection-budget-Cg_KIb3o.js → injection-budget-Ar7hgyJq.js} +1 -1
  340. package/server/supervisor/pty-supervisor.js +12 -3
  341. package/server/supervisor/{pty-token-BbjwEUUM.js → pty-token-CXCFU0Z8.js} +1 -1
  342. package/server/{supervisor-BxqSpjcN.js → supervisor-BvnxbuuF.js} +6 -4
  343. package/server/supervisor-C69kpqvd.js +2 -0
  344. package/server/{swarm-readiness-DfFxa9-n.js → swarm-readiness-vTw1kqGa.js} +3 -3
  345. package/server/{system-prerequisites-ICLSkhhZ.js → system-prerequisites-LLzTEqsK.js} +3 -3
  346. package/server/{teardown-workspace-DRdi_CPa.js → teardown-workspace-CqKKVJr1.js} +15 -15
  347. package/server/{test-agent-queue-A_-p-i0I.js → test-agent-queue-CWMq7oyG.js} +8 -7
  348. package/server/{test-verdict-BHgTAwIG.js → test-verdict-NdtgRBuA.js} +1 -1
  349. package/server/{test-verdict-C4i9aqEP.js → test-verdict-diIWE6hz.js} +15 -3
  350. package/server/{tldr-daemon-CvWXBhX1.js → tldr-daemon-B1Jhrtc8.js} +1 -1
  351. package/server/{tldr-daemon-wvsU6bKv.js → tldr-daemon-Bpls1CJB.js} +2 -2
  352. package/server/{tmux-CfDHob9M.js → tmux-CImZaX4q.js} +10 -16
  353. package/server/tmux-Cjpx8L8u.js +4 -0
  354. package/server/{token-DrxwytsZ.js → token-Bgpjo3tE.js} +2 -2
  355. package/server/token-util-BsjFll-k.js +3 -0
  356. package/server/{token-util-B48BlCba.js → token-util-BymbpkJp.js} +1 -1
  357. package/server/{tracker-config-BcPMElRB.js → tracker-config-4DaKVTfc.js} +2 -2
  358. package/server/{tracker-utils-CJ6BHjcD.js → tracker-utils-BDeAXC-q.js} +2 -2
  359. package/server/{traefik-connect-DZ6nMYMj.js → traefik-connect-CC5FyxYj.js} +1 -1
  360. package/server/{tunnel-Bp-dRHZz.js → tunnel-CDWkeceJ.js} +1 -1
  361. package/server/{tunnel-DUbUPElU.js → tunnel-CPf5M-Pc.js} +3 -3
  362. package/server/{typed-errors-DyjseiB6.js → typed-errors-9K7Dq_Vn.js} +1 -1
  363. package/server/{typed-errors-CKeoDdU3.js → typed-errors-DrS5fb5z.js} +1 -1
  364. package/server/{types-Cm5ASJbq.js → types-DzlUKiuf.js} +4 -3
  365. package/server/{types-Di8wdakq.js → types-kI9ik8XO.js} +1 -1
  366. package/server/{uat-promote-verification-CoJuh7XO.js → uat-promote-verification-c_pxoxEc.js} +5 -5
  367. package/server/{uat-train-4Q0k06CQ.js → uat-train-CWGxBdJO.js} +0 -0
  368. package/server/{uat-train-Dewoatps.js → uat-train-CfCYd2ve.js} +1 -1
  369. package/server/{validate-B0C8p66t.js → validate-f3ItVCfm.js} +3 -3
  370. package/server/{validation-hVOwQk8T.js → validation-5G_wQtea.js} +1 -1
  371. package/server/{validation-B_kIRfNe.js → validation-7tSiCM82.js} +4 -4
  372. package/server/{verification-artifact-BxlxTiYK.js → verification-artifact-9h9dH8uX.js} +1 -1
  373. package/server/{verification-artifact-D70AtckY.js → verification-artifact-C_4WJnf6.js} +1 -1
  374. package/server/{verification-runner-Bc3cJvpC.js → verification-runner-BV5F6wrA.js} +1 -1
  375. package/server/{verification-runner-KZTz6u72.js → verification-runner-D58KmBhK.js} +18 -38
  376. package/server/{vtt-parser-CE_i3Bcw.js → vtt-parser-2iT9OHa9.js} +1 -1
  377. package/server/{work-agent-prompt-ByrPAzOy.js → work-agent-prompt-D03s4DD1.js} +9 -9
  378. package/server/{workflows-D0vP1WrK.js → workflows-BMBwLYPV.js} +281 -98
  379. package/server/workflows-BOmWGpIh.js +2 -0
  380. package/server/{workspace-DQkRPLlQ.js → workspace-BgflNCH0.js} +3 -3
  381. package/server/{workspace-COWvdibH.js → workspace-Cn9ywfSW.js} +1 -1
  382. package/server/{workspace-anchor-drift-pwz23TI1.js → workspace-anchor-drift-C8Fy3shi.js} +1 -1
  383. package/server/{workspace-anchor-drift-DXYIAHzr.js → workspace-anchor-drift-CMiNncwq.js} +5 -8
  384. package/server/{workspace-config-BdZM4PvZ.js → workspace-config-aUc2nIz6.js} +1 -1
  385. package/server/{workspace-manager-BPgTrG66.js → workspace-manager-Bem7ZBs9.js} +521 -292
  386. package/server/workspace-manager-C0CpNh3t.js +3 -0
  387. package/server/{workspace-metadata-CdjzAP8x.js → workspace-metadata-C5iSlPRo.js} +1 -1
  388. package/server/{workspace-metadata-DkO_iTLo.js → workspace-metadata-UKmTYmDQ.js} +2 -2
  389. package/server/{workspaces-CRBJikLp.js → workspaces-DqxgwDZ8.js} +143 -113
  390. package/sync-sources/hooks/notification-hook +12 -1
  391. package/sync-sources/hooks/pan-hook-lib.sh +226 -0
  392. package/sync-sources/hooks/session-start-hook +31 -4
  393. package/sync-sources/hooks/work-agent-stop-hook +23 -1
  394. package/sync-sources/skills/pan-memory/SKILL.md +19 -3
  395. package/sync-sources/skills/pan-projects/SKILL.md +9 -0
  396. package/sync-sources/skills/pan-restart/SKILL.md +26 -7
  397. package/sync-sources/skills/pan-workspace/SKILL.md +77 -0
  398. package/server/activity-logger-CMthG6Vd.js +0 -3
  399. package/server/agent-state-CYXJVG72.js +0 -3
  400. package/server/agents-ePFVoZbu.js +0 -3
  401. package/server/archive-planning-B2XplFzT.js +0 -2
  402. package/server/cli-CjOCSnfj.js +0 -3
  403. package/server/deacon-swarm-B1XkIvfr.js +0 -2
  404. package/server/delivery-BX9HR4wQ.js +0 -3
  405. package/server/dist-B3YPQa5A.js +0 -3
  406. package/server/event-store-5UKzh9Jf.js +0 -3
  407. package/server/forge-B5o319qI.js +0 -3
  408. package/server/fts-db-IVc4_M3f.js +0 -146
  409. package/server/hume-VUCNbTgn.js +0 -3
  410. package/server/inspect-agent-CUwVmr2h.js +0 -2
  411. package/server/merge-ops-1abz6O_P.js +0 -2
  412. package/server/merge-rebase-CJJVAJuz.js +0 -2
  413. package/server/node_modules/brace-expansion/.tap/coverage/8b906b8c-e21f-40b5-8c0d-214d8c2682c5.json +0 -757
  414. package/server/node_modules/brace-expansion/.tap/processinfo/8b906b8c-e21f-40b5-8c0d-214d8c2682c5.json +0 -719
  415. package/server/node_modules/brace-expansion/ADVISORY-CVE-2026-14257.md +0 -107
  416. package/server/node_modules/brace-expansion/dist/commonjs/index.d.ts +0 -8
  417. package/server/node_modules/brace-expansion/dist/commonjs/index.d.ts.map +0 -1
  418. package/server/node_modules/brace-expansion/dist/commonjs/index.js +0 -263
  419. package/server/node_modules/brace-expansion/dist/commonjs/index.js.map +0 -1
  420. package/server/node_modules/brace-expansion/dist/commonjs/package.json +0 -3
  421. package/server/node_modules/brace-expansion/dist/esm/index.d.ts +0 -8
  422. package/server/node_modules/brace-expansion/dist/esm/index.d.ts.map +0 -1
  423. package/server/node_modules/brace-expansion/dist/esm/index.js +0 -259
  424. package/server/node_modules/brace-expansion/dist/esm/index.js.map +0 -1
  425. package/server/node_modules/brace-expansion/dist/esm/package.json +0 -3
  426. package/server/project-repos-DPjOdfPa.js +0 -3
  427. package/server/projects-_n3Zui6K.js +0 -3
  428. package/server/providers-BI1mOBQ4.js +0 -3
  429. package/server/public/assets/index-Ddkcz3WT.css +0 -1
  430. package/server/public/assets/mermaid-GHXKKRXX-BzPfaQJ1.js +0 -1
  431. package/server/rally-D_VW4bJv.js +0 -3
  432. package/server/record-BTwWhtBb.js +0 -3
  433. package/server/record-update-DaOKS7Wb.js +0 -277
  434. package/server/recovery-trip-DDH-02ng.js +0 -44
  435. package/server/resume-mOREjlYu.js +0 -3
  436. package/server/rollup-BR4t_wck.js +0 -3
  437. package/server/settings-CVmWiJ-r.js +0 -2
  438. package/server/specs--enInima.js +0 -3
  439. package/server/stack-health-BikqHSjn.js +0 -3
  440. package/server/supervisor-B4anCCSm.js +0 -2
  441. package/server/tmux-Ctk6RV5l.js +0 -3
  442. package/server/token-util-D411CAq9.js +0 -3
  443. package/server/workflows-DtDX08ed.js +0 -2
  444. package/server/workspace-manager-C1F3XsnS.js +0 -3
@@ -1,6 +1,6 @@
1
- import { Gn as init_projects, ar as resolveProjectFromIssueSync } from "./config-yaml-CxdwhAIA.js";
2
- import { b as init_agents, dt as spawnRun } from "./queries-C-MUZaIy.js";
3
- import { c as init_review_status_sync, r as getAllReviewStatusesFromDb } from "./review-status-sync-0GxOqeqF.js";
1
+ import { Sn as resolveProjectFromIssueSync, cn as init_projects } from "./config-yaml-BSCqwmX0.js";
2
+ import { Et as spawnRun, b as init_agents } from "./queries-DVpl1vsU.js";
3
+ import { c as init_review_status_sync, r as getAllReviewStatusesFromDb } from "./review-status-sync-BxBeHRde.js";
4
4
  import { join } from "path";
5
5
  import { exec } from "child_process";
6
6
  import { promisify } from "util";
@@ -72,4 +72,4 @@ function buildRealReconcileDeps() {
72
72
  //#endregion
73
73
  export { buildRealReconcileDeps };
74
74
 
75
- //# sourceMappingURL=merge-train-deps-D_uGX91G.js.map
75
+ //# sourceMappingURL=merge-train-deps-D_-C0Pk2.js.map
@@ -1,9 +1,9 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Gn as init_projects, ar as resolveProjectFromIssueSync } from "./config-yaml-CxdwhAIA.js";
3
- import { n as resolveGitHubIssueSync, t as init_tracker_utils } from "./tracker-utils-CJ6BHjcD.js";
4
- import { i as init_merge_set, r as getMergeSetSync } from "./merge-set-CBgHfwM0.js";
5
- import { f as init_github_app, p as isGitHubAppConfigured, v as listPullRequestsForHead } from "./github-app-CmNk0zLU.js";
6
- import { i as init_merge_completeness, r as hasPositiveMergedEvidence, t as assessMergeCompleteness } from "./merge-completeness-B46KqhtY.js";
2
+ import { Sn as resolveProjectFromIssueSync, cn as init_projects } from "./config-yaml-BSCqwmX0.js";
3
+ import { n as resolveGitHubIssueSync, t as init_tracker_utils } from "./tracker-utils-BDeAXC-q.js";
4
+ import { i as init_merge_set, r as getMergeSetSync } from "./merge-set-DsLjjLEV.js";
5
+ import { f as init_github_app, p as isGitHubAppConfigured, v as listPullRequestsForHead } from "./github-app-D2QuvZ3j.js";
6
+ import { i as init_merge_completeness, r as hasPositiveMergedEvidence, t as assessMergeCompleteness } from "./merge-completeness-C1FevcDT.js";
7
7
  import { Effect } from "effect";
8
8
  import { exec } from "node:child_process";
9
9
  import { promisify } from "node:util";
@@ -217,4 +217,4 @@ var init_merge_verification = __esmMin((() => {
217
217
  //#endregion
218
218
  export { verifyMergedBeforeLifecycle as i, init_merge_verification as n, shouldSkipDispatchAsMerged as r, handlePostRebaseVerificationDeferral as t };
219
219
 
220
- //# sourceMappingURL=merge-verification-NvaAd8CZ.js.map
220
+ //# sourceMappingURL=merge-verification-DN1Ov9bU.js.map
@@ -1,6 +1,6 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { o as init_activity_logger, r as emitActivityEntrySync } from "./activity-logger-CyteR4JO.js";
3
- import { n as init_review_status_source, s as resolveCanonicalReviewStatus } from "./review-status-source-DIk1JSow.js";
2
+ import { a as emitActivityEntrySync, c as init_activity_logger } from "./activity-logger-Co5qljIj.js";
3
+ import { n as init_review_status_source, s as resolveCanonicalReviewStatus } from "./review-status-source-7nU3Z2wL.js";
4
4
  //#region ../../lib/cloister/merged-docker-cleanup-worker.ts
5
5
  function retryDelayMs(attempts) {
6
6
  return Math.min(RETRY_BASE_MS * 2 ** Math.max(0, attempts - 1), RETRY_MAX_MS);
@@ -30,7 +30,7 @@ function recordFailure(entry, reason) {
30
30
  console.warn(`[deacon] Merged-issue Docker cleanup failed for ${entry.issueId}; retry ${entry.attempts} after ${new Date(entry.nextAttemptAt).toISOString()}: ${reason}`);
31
31
  }
32
32
  async function drainQueue() {
33
- const { teardownWorkspaceDockerByNamePromise } = await import("./docker-Y3PElJb0.js");
33
+ const { teardownWorkspaceDockerByNamePromise } = await import("./docker-DH3jUYg1.js");
34
34
  for (let entry = nextEligibleEntry(); entry; entry = nextEligibleEntry()) {
35
35
  entry.running = true;
36
36
  const eligibility = resolveCanonicalReviewStatus(entry.issueId);
@@ -104,4 +104,4 @@ var init_merged_docker_cleanup_worker = __esmMin((() => {
104
104
  //#endregion
105
105
  export { init_merged_docker_cleanup_worker as n, reconcileMergedDockerCleanupQueue as r, enqueueMergedDockerCleanup as t };
106
106
 
107
- //# sourceMappingURL=merged-docker-cleanup-worker-Y1R06TEl.js.map
107
+ //# sourceMappingURL=merged-docker-cleanup-worker-CfXSr2pA.js.map
@@ -1,3 +1,3 @@
1
- import { n as init_merged_docker_cleanup_worker, r as reconcileMergedDockerCleanupQueue } from "./merged-docker-cleanup-worker-Y1R06TEl.js";
1
+ import { n as init_merged_docker_cleanup_worker, r as reconcileMergedDockerCleanupQueue } from "./merged-docker-cleanup-worker-CfXSr2pA.js";
2
2
  init_merged_docker_cleanup_worker();
3
3
  export { reconcileMergedDockerCleanupQueue };
@@ -1,5 +1,5 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { a as File, i as init_esm_min, n as FormData, t as init_from } from "./from-B3tZbB55.js";
2
+ import { a as File, i as init_esm_min, n as FormData, t as init_from } from "./from-BogSwvr2.js";
3
3
  //#region ../../../node_modules/.bun/node-fetch@3.3.2/node_modules/node-fetch/src/utils/multipart-parser.js
4
4
  function _fileName(headerValue) {
5
5
  const m = headerValue.match(/\bfilename=("(.*?)"|([^()<>@,;:\\"/[\]?={}\s\t]+))($|;\s)/i);
@@ -293,4 +293,4 @@ __esmMin((() => {
293
293
  }))();
294
294
  export { toFormData };
295
295
 
296
- //# sourceMappingURL=multipart-parser-R-oC8dQg.js.map
296
+ //# sourceMappingURL=multipart-parser-CL5QG8iv.js.map
@@ -89,4 +89,4 @@ var init_no_resume_mode = __esmMin((() => {
89
89
  //#endregion
90
90
  export { init_boot_gates as a, formatBootGateState as i, isExplicitNoResumeRequest as n, resolveBootGates as o, isNoResumeValueEnabled as r, init_no_resume_mode as t };
91
91
 
92
- //# sourceMappingURL=no-resume-mode-BgD0JUmM.js.map
92
+ //# sourceMappingURL=no-resume-mode-DUR7Hi98.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@overdeck/desktop-server",
3
- "version": "0.47.0",
3
+ "version": "0.48.0",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
@@ -407,9 +407,9 @@
407
407
  }
408
408
  },
409
409
  "node_modules/brace-expansion": {
410
- "version": "2.1.2",
411
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.2.tgz",
412
- "integrity": "sha512-w5JZcKgdhDOgOwm8H+KgbosopHMuGcl6qbulwjtz3SM7I7P3yW1eAjzMPLrIE+NQ9vjgANKHWeMHnrT0OXW1oA==",
410
+ "version": "2.1.4",
411
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.4.tgz",
412
+ "integrity": "sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==",
413
413
  "license": "MIT",
414
414
  "dependencies": {
415
415
  "balanced-match": "^1.0.0"
@@ -1245,9 +1245,9 @@
1245
1245
  "license": "MIT"
1246
1246
  },
1247
1247
  "node_modules/msgpackr": {
1248
- "version": "2.0.4",
1249
- "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-2.0.4.tgz",
1250
- "integrity": "sha512-o1C5KRmuRt+apqMr1HuGSqWStZoRBUpEsCsl15uM9VdAF1qHLtvMOU2En747EnTyEl6c4pzPewRMFF31s1CNbA==",
1248
+ "version": "2.0.5",
1249
+ "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-2.0.5.tgz",
1250
+ "integrity": "sha512-cef05H/dSYpLpqp3sj/qyZh5vhUYCalnaLO7j1yOmpsR0y/XwLVtK7r5gn+U/F7CTEfMowcGhlUQJDLcLf7jcA==",
1251
1251
  "license": "MIT",
1252
1252
  "optionalDependencies": {
1253
1253
  "msgpackr-extract": "^3.0.4"
@@ -51,11 +51,33 @@ expand('ppp{,config,oe{,conf}}')
51
51
  var expand = require('brace-expansion');
52
52
  ```
53
53
 
54
- ### var expanded = expand(str)
54
+ ### var expanded = expand(str, [options])
55
55
 
56
56
  Return an array of all possible and valid expansions of `str`. If none are
57
57
  found, `[str]` is returned.
58
58
 
59
+ The `options` object can provide a `max` value to cap the number
60
+ of expansions allowed. This is limited to `100_000` by default,
61
+ to prevent DoS attacks.
62
+
63
+ ```js
64
+ const expansions = expand('{1..100}'.repeat(5), {
65
+ max: 100,
66
+ })
67
+ // expansions.length will be 100, not 100^5
68
+ ```
69
+
70
+ The `options` object can also provide a `maxLength` value to cap the
71
+ total number of characters across all expansions. This is limited to
72
+ `4_000_000` by default, to prevent memory exhaustion from inputs whose
73
+ result count stays under `max` while each result grows very long.
74
+
75
+ ```js
76
+ const expansions = expand('{a,b}'.repeat(1500), {
77
+ maxLength: 10_000,
78
+ })
79
+ ```
80
+
59
81
  Valid expansions are:
60
82
 
61
83
  ```js
@@ -8,6 +8,20 @@ var escClose = '\0CLOSE'+Math.random()+'\0';
8
8
  var escComma = '\0COMMA'+Math.random()+'\0';
9
9
  var escPeriod = '\0PERIOD'+Math.random()+'\0';
10
10
 
11
+ var EXPANSION_MAX = 100000
12
+
13
+ // `EXPANSION_MAX` caps the *number* of expansions, but not their length. An
14
+ // input like `'{a,b}'.repeat(1500)` stays under that count - its output is
15
+ // truncated to 100k results - while making every result ~1500 characters
16
+ // long. The result set, and the intermediate arrays built while combining
17
+ // brace sets, then grow large enough to exhaust memory and crash the process
18
+ // (CVE-2026-14257). `EXPANSION_MAX_LENGTH` bounds the total number of
19
+ // characters the accumulator may hold at any point, so memory stays flat no
20
+ // matter how many brace groups are chained. The limit sits well above any
21
+ // realistic expansion (100k results hitting `EXPANSION_MAX` measure ~1M
22
+ // characters) so legitimate input is unaffected.
23
+ var EXPANSION_MAX_LENGTH = 4000000
24
+
11
25
  function numeric(str) {
12
26
  return parseInt(str, 10) == str
13
27
  ? parseInt(str, 10)
@@ -66,7 +80,8 @@ function expandTop(str, options) {
66
80
  return [];
67
81
 
68
82
  options = options || {};
69
- var max = options.max == null ? Infinity : options.max;
83
+ var max = options.max == null ? EXPANSION_MAX : options.max;
84
+ var maxLength = options.maxLength == null ? EXPANSION_MAX_LENGTH : options.maxLength;
70
85
 
71
86
  // I don't know why Bash 4.3 does this, but it does.
72
87
  // Anything starting with {} will have the first two bytes preserved
@@ -78,7 +93,7 @@ function expandTop(str, options) {
78
93
  str = '\\{\\}' + str.substr(2);
79
94
  }
80
95
 
81
- return expand(escapeBraces(str), max, true).map(unescapeBraces);
96
+ return expand(escapeBraces(str), max, maxLength, true).map(unescapeBraces);
82
97
  }
83
98
 
84
99
  function embrace(str) {
@@ -95,27 +110,142 @@ function gte(i, y) {
95
110
  return i >= y;
96
111
  }
97
112
 
98
- function expand(str, max, isTop) {
99
- var expansions = [];
113
+ // Build `{ acc[a] + pre + values[v] }` for every combination, capping the
114
+ // number of results at `max` and the total number of characters at `maxLength`.
115
+ // This is the one place output grows, so bounding it here keeps the single
116
+ // accumulator - and therefore memory - flat regardless of how many brace groups
117
+ // are combined (CVE-2026-14257).
118
+ function combine(
119
+ acc,
120
+ pre,
121
+ values,
122
+ max,
123
+ maxLength,
124
+ dropEmpties
125
+ ) {
126
+ var out = []
127
+ var length = 0
128
+ for (var a = 0; a < acc.length; a++) {
129
+ for (var v = 0; v < values.length; v++) {
130
+ if (out.length >= max) return out
131
+ var expansion = acc[a] + pre + values[v]
132
+ // Bash drops empty results at the top level. Skip them before they count
133
+ // against `max`, so `max` bounds the number of *kept* results.
134
+ if (dropEmpties && !expansion) continue
135
+ if (length + expansion.length > maxLength) return out
136
+ out.push(expansion)
137
+ length += expansion.length
138
+ }
139
+ }
140
+ return out
141
+ }
142
+
143
+ // The expansion values of a single numeric (`1..5`) or alphabetic (`a..e..2`)
144
+ // sequence body.
145
+ function expandSequence(
146
+ body,
147
+ isAlphaSequence,
148
+ max,
149
+ maxLength
150
+ ) {
151
+ var n = body.split(/\.\./)
152
+ var N = []
153
+ // A sequence body always splits into two or three parts, but the compiler
154
+ // can't know that.
155
+ /* c8 ignore start */
156
+ if (n[0] === undefined || n[1] === undefined) {
157
+ return N
158
+ }
159
+ /* c8 ignore stop */
160
+ var x = numeric(n[0])
161
+ var y = numeric(n[1])
162
+ var width = Math.max(n[0].length, n[1].length)
163
+ var incr =
164
+ n.length === 3 && n[2] !== undefined ?
165
+ Math.max(Math.abs(numeric(n[2])), 1)
166
+ : 1
167
+ var test = lte
168
+ var reverse = y < x
169
+ if (reverse) {
170
+ incr *= -1
171
+ test = gte
172
+ }
173
+ var pad = n.some(isPadded)
174
+
175
+ var length = 0
176
+ for (var i = x; test(i, y) && N.length < max; i += incr) {
177
+ var c
178
+ if (isAlphaSequence) {
179
+ c = String.fromCharCode(i)
180
+ if (c === '\\') {
181
+ c = ''
182
+ }
183
+ } else {
184
+ c = String(i)
185
+ if (pad) {
186
+ var need = width - c.length
187
+ if (need > 0) {
188
+ var z = new Array(need + 1).join('0')
189
+ if (i < 0) {
190
+ c = '-' + z + c.slice(1)
191
+ } else {
192
+ c = z + c
193
+ }
194
+ }
195
+ }
196
+ }
197
+ if (length + c.length > maxLength) break
198
+ N.push(c)
199
+ length += c.length
200
+ }
201
+ return N
202
+ }
203
+
204
+ function expand(
205
+ str,
206
+ max,
207
+ maxLength,
208
+ isTop
209
+ ) {
210
+ // Consume the string's top-level brace groups left to right, threading a
211
+ // running set of combined prefixes (`acc`). Expanding the tail iteratively -
212
+ // rather than recursing on `m.post` once per group - keeps the native stack
213
+ // depth constant, so deeply chained input (`'{a,b}'.repeat(3000)`) can no
214
+ // longer overflow the stack, and leaves a single accumulator whose size
215
+ // `maxLength` bounds directly (CVE-2026-14257).
216
+ var acc = ['']
217
+
218
+ // Bash drops empty results, but only when the *first* top-level group is a
219
+ // comma set - a sequence like `{a..\}` may legitimately yield ''. The drop
220
+ // is on the final strings, so it is applied to whichever `combine` produces
221
+ // them (the one with no brace set left in the tail).
222
+ var dropEmpties = false
223
+ var firstGroup = true
100
224
 
101
- // The `{a},b}` rewrite below restarts expansion on a rewritten string with
102
- // the same `max` and `isTop = true`. Loop instead of recursing so a long run
103
- // of non-expanding `{}` groups can't exhaust the call stack.
104
225
  for (;;) {
105
226
  const m = balanced('{', '}', str)
106
- if (!m) return [str]
227
+
228
+ // No brace set left: the rest of the string is literal.
229
+ if (!m) {
230
+ return combine(acc, str, [''], max, maxLength, dropEmpties)
231
+ }
107
232
 
108
233
  // no need to expand pre, since it is guaranteed to be free of brace-sets
109
234
  const pre = m.pre
110
235
 
111
- if (/\$$/.test(m.pre)) {
112
- const post =
113
- m.post.length ? expand(m.post, max, false) : ['']
114
- for (let k = 0; k < post.length && k < max; k++) {
115
- const expansion = pre + '{' + m.body + '}' + post[k]
116
- expansions.push(expansion)
117
- }
118
- return expansions
236
+ if (/\$$/.test(pre)) {
237
+ acc = combine(
238
+ acc,
239
+ pre + '{' + m.body + '}',
240
+ [''],
241
+ max,
242
+ maxLength,
243
+ dropEmpties && !m.post.length
244
+ )
245
+ firstGroup = false
246
+ if (!m.post.length) break
247
+ str = m.post
248
+ continue
119
249
  }
120
250
 
121
251
  var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body);
@@ -129,89 +259,80 @@ function expand(str, max, isTop) {
129
259
  isTop = true;
130
260
  continue;
131
261
  }
132
- return [str];
262
+ // Nothing here expands, so the whole remaining string is literal.
263
+ return combine(
264
+ acc,
265
+ pre + '{' + m.body + '}' + m.post,
266
+ [''],
267
+ max,
268
+ maxLength,
269
+ dropEmpties
270
+ )
271
+ }
272
+
273
+ if (firstGroup) {
274
+ dropEmpties = isTop && !isSequence
275
+ firstGroup = false
133
276
  }
134
277
 
135
- // Only expand post once we know this brace set actually expands. Computing
136
- // it before the early returns above expanded post a second time on every
137
- // non-expanding `{}`, which is what made inputs like `a{},{},{}...` blow up
138
- // exponentially.
139
- const post =
140
- m.post.length ? expand(m.post, max, false) : ['']
141
- var n;
278
+ var values;
142
279
  if (isSequence) {
143
- n = m.body.split(/\.\./);
280
+ values = expandSequence(m.body, isAlphaSequence, max, maxLength);
144
281
  } else {
145
- n = parseCommaParts(m.body);
146
- if (n.length === 1) {
282
+ var n = parseCommaParts(m.body);
283
+ if (n.length === 1 && n[0] !== undefined) {
147
284
  // x{{a,b}}y ==> x{a}y x{b}y
148
- n = expand(n[0], max, false).map(embrace);
285
+ n = expand(n[0], max, maxLength, false).map(embrace);
286
+ //XXX is this necessary? Can't seem to hit it in tests.
287
+ /* c8 ignore start */
149
288
  if (n.length === 1) {
150
- return post.map(function(p) {
151
- return m.pre + n[0] + p;
152
- });
289
+ acc = combine(
290
+ acc,
291
+ pre + n[0],
292
+ [''],
293
+ max,
294
+ maxLength,
295
+ dropEmpties && !m.post.length
296
+ )
297
+ if (!m.post.length) break
298
+ str = m.post
299
+ continue
153
300
  }
301
+ /* c8 ignore stop */
154
302
  }
155
- }
156
-
157
- // at this point, n is the parts, and we know it's not a comma set
158
- // with a single entry.
159
- var N;
160
303
 
161
- if (isSequence) {
162
- var x = numeric(n[0]);
163
- var y = numeric(n[1]);
164
- var width = Math.max(n[0].length, n[1].length)
165
- var incr = n.length == 3
166
- ? Math.max(Math.abs(numeric(n[2])), 1)
167
- : 1;
168
- var test = lte;
169
- var reverse = y < x;
170
- if (reverse) {
171
- incr *= -1;
172
- test = gte;
173
- }
174
- var pad = n.some(isPadded);
175
-
176
- N = [];
177
-
178
- for (var i = x; test(i, y) && N.length < max; i += incr) {
179
- var c;
180
- if (isAlphaSequence) {
181
- c = String.fromCharCode(i);
182
- if (c === '\\')
183
- c = '';
184
- } else {
185
- c = String(i);
186
- if (pad) {
187
- var need = width - c.length;
188
- if (need > 0) {
189
- var z = new Array(need + 1).join('0');
190
- if (i < 0)
191
- c = '-' + z + c.slice(1);
192
- else
193
- c = z + c;
194
- }
195
- }
304
+ // Values that `combine` is going to drop as empty produce no result, so
305
+ // they must not count against `max` - otherwise `{a,,b}` with `max: 2`
306
+ // would stop at `['a', '']` and yield one result instead of two. Skipping
307
+ // them outright keeps `values` bounded while leaving `max` a bound on
308
+ // *kept* results.
309
+ var dropsEmpties = dropEmpties && !m.post.length && !pre
310
+ for (var d = 0; dropsEmpties && d < acc.length; d++) {
311
+ if (acc[d]) {
312
+ dropsEmpties = false
196
313
  }
197
- N.push(c);
198
- }
199
- } else {
200
- N = [];
201
-
202
- for (var j = 0; j < n.length; j++) {
203
- N.push.apply(N, expand(n[j], max, false));
204
314
  }
205
- }
206
315
 
207
- for (var j = 0; j < N.length; j++) {
208
- for (var k = 0; k < post.length && expansions.length < max; k++) {
209
- var expansion = pre + N[j] + post[k];
210
- if (!isTop || isSequence || expansion)
211
- expansions.push(expansion);
316
+ values = []
317
+ var valuesLength = 0
318
+ outer: for (var j = 0; j < n.length; j++) {
319
+ var expanded = expand(n[j], max, maxLength, false)
320
+ for (var k = 0; k < expanded.length; k++) {
321
+ var v = expanded[k]
322
+ if (dropsEmpties && !v) continue
323
+ if (values.length >= max || valuesLength + v.length > maxLength) {
324
+ break outer
325
+ }
326
+ values.push(v)
327
+ valuesLength += v.length
328
+ }
212
329
  }
213
330
  }
214
331
 
215
- return expansions;
332
+ acc = combine(acc, pre, values, max, maxLength, dropEmpties && !m.post.length)
333
+ if (!m.post.length) break
334
+ str = m.post
216
335
  }
336
+
337
+ return acc
217
338
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "brace-expansion",
3
3
  "description": "Brace expansion as known from sh/bash",
4
- "version": "2.1.2",
4
+ "version": "2.1.4",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "git://github.com/juliangruber/brace-expansion.git"
@@ -583,43 +583,49 @@
583
583
  units.push(byte1);
584
584
  } else if ((byte1 & 0xe0) === 0xc0) {
585
585
  // 2 bytes
586
- const byte2 = src[position$1++] & 0x3f;
587
- const codePoint = ((byte1 & 0x1f) << 6) | byte2;
588
- // Reject overlong encoding: 2-byte sequences must encode values >= 0x80
589
- if (codePoint < 0x80) {
590
- units.push(0xFFFD); // replacement character
586
+ if (byte1 < 0xc2 || position$1 >= end || (src[position$1] & 0xc0) !== 0x80) {
587
+ units.push(0xFFFD);
591
588
  } else {
592
- units.push(codePoint);
589
+ const byte2 = src[position$1++] & 0x3f;
590
+ units.push(((byte1 & 0x1f) << 6) | byte2);
593
591
  }
594
592
  } else if ((byte1 & 0xf0) === 0xe0) {
595
593
  // 3 bytes
596
- const byte2 = src[position$1++] & 0x3f;
597
- const byte3 = src[position$1++] & 0x3f;
598
- const codePoint = ((byte1 & 0x1f) << 12) | (byte2 << 6) | byte3;
599
- // Reject overlong encoding: 3-byte sequences must encode values >= 0x800
600
- // Also reject surrogates (0xD800-0xDFFF)
601
- if (codePoint < 0x800 || (codePoint >= 0xD800 && codePoint <= 0xDFFF)) {
602
- units.push(0xFFFD); // replacement character
594
+ const byte2 = position$1 < end ? src[position$1] : 0;
595
+ if (position$1 >= end || (byte2 & 0xc0) !== 0x80 ||
596
+ (byte1 === 0xe0 && byte2 < 0xa0) || (byte1 === 0xed && byte2 >= 0xa0)) {
597
+ units.push(0xFFFD);
603
598
  } else {
604
- units.push(codePoint);
599
+ position$1++;
600
+ if (position$1 >= end || (src[position$1] & 0xc0) !== 0x80) {
601
+ units.push(0xFFFD);
602
+ } else {
603
+ const byte3 = src[position$1++] & 0x3f;
604
+ units.push(((byte1 & 0x1f) << 12) | ((byte2 & 0x3f) << 6) | byte3);
605
+ }
605
606
  }
606
607
  } else if ((byte1 & 0xf8) === 0xf0) {
607
608
  // 4 bytes
608
- const byte2 = src[position$1++] & 0x3f;
609
- const byte3 = src[position$1++] & 0x3f;
610
- const byte4 = src[position$1++] & 0x3f;
611
- let unit = ((byte1 & 0x07) << 0x12) | (byte2 << 0x0c) | (byte3 << 0x06) | byte4;
612
- // Reject overlong encoding: 4-byte sequences must encode values >= 0x10000
613
- // Also reject values > 0x10FFFF (maximum valid Unicode)
614
- if (unit < 0x10000 || unit > 0x10FFFF) {
615
- units.push(0xFFFD); // replacement character
616
- } else if (unit > 0xffff) {
617
- unit -= 0x10000;
618
- units.push(((unit >>> 10) & 0x3ff) | 0xd800);
619
- unit = 0xdc00 | (unit & 0x3ff);
620
- units.push(unit);
609
+ const byte2 = position$1 < end ? src[position$1] : 0;
610
+ if (byte1 > 0xf4 || position$1 >= end || (byte2 & 0xc0) !== 0x80 ||
611
+ (byte1 === 0xf0 && byte2 < 0x90) || (byte1 === 0xf4 && byte2 >= 0x90)) {
612
+ units.push(0xFFFD);
621
613
  } else {
622
- units.push(unit);
614
+ position$1++;
615
+ if (position$1 >= end || (src[position$1] & 0xc0) !== 0x80) {
616
+ units.push(0xFFFD);
617
+ } else {
618
+ const byte3 = src[position$1++] & 0x3f;
619
+ if (position$1 >= end || (src[position$1] & 0xc0) !== 0x80) {
620
+ units.push(0xFFFD);
621
+ } else {
622
+ const byte4 = src[position$1++] & 0x3f;
623
+ let unit = ((byte1 & 0x07) << 0x12) | ((byte2 & 0x3f) << 0x0c) | (byte3 << 0x06) | byte4;
624
+ unit -= 0x10000;
625
+ units.push(((unit >>> 10) & 0x3ff) | 0xd800);
626
+ units.push(0xdc00 | (unit & 0x3ff));
627
+ }
628
+ }
623
629
  }
624
630
  } else {
625
631
  units.push(0xFFFD); // replacement character for invalid lead byte