@overdeck/desktop 0.47.1 → 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-Cd7ZGZCq.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-DieFp3qi.js → advancing-selfheal-8AR68Asf.js} +6 -6
  7. package/server/{agent-gc-BMcgTDl7.js → agent-gc-BmYeT6eH.js} +5 -5
  8. package/server/agent-state-Dq3s84-P.js +3 -0
  9. package/server/{agent-state-service-DFO6qvHp.js → agent-state-service-DK1Vay1E.js} +1 -1
  10. package/server/{agent-state-service-BOzQhLjU.js → agent-state-service-rjnzpHDx.js} +6 -6
  11. package/server/{agent-state-source-Ca_zCaII.js → agent-state-source-Ds968-j6.js} +1 -1
  12. package/server/{agents-CtACUuVG.js → agents-Dls7tfJH.js} +5 -5
  13. package/server/agents-IPSa5kzn.js +3 -0
  14. package/server/{archive-planning-Binfb99i.js → archive-planning-Cq7cyinS.js} +51 -24
  15. package/server/archive-planning-MbkGCBIY.js +2 -0
  16. package/server/{artifact-index-jobs-Jn7BGOtV.js → artifact-index-jobs-Dj_8kpTd.js} +3 -3
  17. package/server/{assemble-DsqK9OAq.js → assemble-BTCmbcfH.js} +20 -13
  18. package/server/{auto-spawn-consent-BooqhC3L.js → auto-spawn-consent-lXqRJ1Dr.js} +304 -121
  19. package/server/{backlog-auto-trigger-BADGPxov.js → backlog-auto-trigger-Dn-amzt6.js} +3 -3
  20. package/server/{behavior-B7biGtFT.js → behavior-DIMQMRzs.js} +2 -2
  21. package/server/{boot-reconciled-stop-events-bQUzU8ns.js → boot-reconciled-stop-events-D6SeUTIr.js} +1 -1
  22. package/server/{bridge-pool-patrol-DsPj6F7t.js → bridge-pool-patrol-BEjt-xF3.js} +2 -2
  23. package/server/{briefing-freshness-CUerZqWd.js → briefing-freshness-3PNmL_p3.js} +2 -2
  24. package/server/{build-info-D0q_i8WM.js → build-info-CJg813Hm.js} +3 -3
  25. package/server/{build-info-Du74MKiP.js → build-info-CXyeFsXu.js} +1 -1
  26. package/server/{checkpoint-manager-Cu-R5Uzg.js → checkpoint-manager-9t7G5c1V.js} +1 -1
  27. package/server/{checkpoint-manager-R5tnaxEY.js → checkpoint-manager-B2G38R3p.js} +3 -3
  28. package/server/checkpoint-worker.js +1 -1
  29. package/server/{checkpoints-wF84ubZ8.js → checkpoints-CuBgiXO-.js} +1 -1
  30. package/server/{checkpoints-DYtLu-PB.js → checkpoints-VTZMd4Qm.js} +2 -2
  31. package/server/{claude-hooks-provision-DXI3Wqlm.js → claude-hooks-provision-55SyQaPz.js} +2 -2
  32. package/server/{claude-hooks-provision-UKxCeOyj.js → claude-hooks-provision-CEUT-CZd.js} +1 -1
  33. package/server/{claude-permissions-DYVLnX9t.js → claude-permissions-Cn0dIu2i.js} +2 -2
  34. package/server/{claude-settings-overlay-DxP2F_gY.js → claude-settings-overlay-B19hdzSA.js} +1 -1
  35. package/server/{claude-settings-overlay-DsbpIq2d.js → claude-settings-overlay-Yg_ANh81.js} +2 -2
  36. package/server/{cli-DzRKxxP_.js → cli-C9S84iTy.js} +79 -22
  37. package/server/cli-M1cwZ__d.js +3 -0
  38. package/server/{cliproxy-CG4meRFc.js → cliproxy-CJq3KXU6.js} +2 -2
  39. package/server/{cliproxy-Cwzw39yN.js → cliproxy-DgEZlr7Y.js} +1 -1
  40. package/server/{close-issue-BX1bATJy.js → close-issue-DPxRddGR.js} +5 -5
  41. package/server/{closed-issue-reaper-hLt0W86J.js → closed-issue-reaper-C5Zn4GRS.js} +13 -13
  42. package/server/{closed-issue-reaper-DvnTSN6a.js → closed-issue-reaper-D-2B48Ri.js} +1 -1
  43. package/server/{codex-rnJN3v3_.js → codex-B3n_rkwn.js} +1 -1
  44. package/server/{codex-BYwi1uyW.js → codex-CjkD1PJu.js} +6 -6
  45. package/server/{codex-parser-Poyz29GE.js → codex-parser-DpB1Il-P.js} +2 -2
  46. package/server/{compaction-continuation-DtMfHN0f.js → compaction-continuation-DZD9ukSE.js} +3 -3
  47. package/server/{config-R793W0yA.js → config-C5saf4Ja.js} +1 -1
  48. package/server/{config-CX4vk1CV.js → config-DnLJATZk.js} +2 -2
  49. package/server/{config-ktAVnp4s.js → config-DvM8jtQK.js} +2 -2
  50. package/server/{config-yaml-CxdwhAIA.js → config-yaml-BSCqwmX0.js} +11299 -10972
  51. package/server/{conflict-gate-BSTlwCtF.js → conflict-gate-DXa_L28t.js} +1 -1
  52. package/server/{conflict-gate-BNv6UolH.js → conflict-gate-WfVqgalf.js} +4 -4
  53. package/server/{context-layers-DCdaGsRG.js → context-layers-D7UqH9Ab.js} +2 -2
  54. package/server/{context-layers-DlWsDiRF.js → context-layers-Dpz3Vd6d.js} +3 -3
  55. package/server/{control-settings-qYYHrIqy.js → control-settings-DVf6pKyv.js} +4 -4
  56. package/server/{conversation-compaction-BxUKObHb.js → conversation-compaction-5XuH6OBn.js} +1 -1
  57. package/server/{conversation-compaction-CXQrN3I_.js → conversation-compaction-COrbnX1J.js} +8 -8
  58. package/server/{conversation-service-CZiUE8Uw.js → conversation-service-BufdtnZF.js} +169 -10
  59. package/server/{conversation-service-CDnQ3ayN.js → conversation-service-DnUyIiLb.js} +1 -1
  60. package/server/{conversations-D7lR670u.js → conversations-B4rxz-Wl.js} +17 -10
  61. package/server/{conversations-DXl5YTf4.js → conversations-D1bwxQMy.js} +1 -1
  62. package/server/{cost-Aat8HfO_.js → cost-CpFDrJUS.js} +46 -2
  63. package/server/{cost-CWvN9FP2.js → cost-KLuwKCW9.js} +3 -3
  64. package/server/{cost-sync-DiUBXwl6.js → cost-sync-cesi9dp8.js} +3 -3
  65. package/server/{dag-5QlmH0oC.js → dag-BYiFMqpU.js} +2 -2
  66. package/server/{dangerous-git-ops-DWX6Og8c.js → dangerous-git-ops-BKvd3-Hk.js} +1 -1
  67. package/server/dashboard-db-worker.js +7 -7
  68. package/server/{deacon-PW_bg4uL.js → deacon-BbsWw8a6.js} +3 -3
  69. package/server/{deacon-B1LD5cJU.js → deacon-HdEh0Esp.js} +672 -181
  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-DPHsO14z.js → deacon-nudge-log-BND_97Wo.js} +4 -3
  73. package/server/{deacon-pending-lifecycle-2ZflPxgo.js → deacon-pending-lifecycle-CD3YsiQK.js} +3 -3
  74. package/server/deacon-swarm-DgWADWd_.js +2 -0
  75. package/server/{deacon-swarm-DwGUgSVp.js → deacon-swarm-rqrl4TMs.js} +39 -18
  76. package/server/deacon.js +12 -210
  77. package/server/{dead-end-trip-B06RFIr2.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-BNjeCL8u.js → deploy-patrol-kARAkji4.js} +17 -21
  81. package/server/{deploy-queue-CKT_Ia9p.js → deploy-queue-Bj0HJT1i.js} +2 -2
  82. package/server/{deploy-queue-DMMYhFC8.js → deploy-queue-rjTUy1RM.js} +1 -1
  83. package/server/{deploy-window-DC8lze3d.js → deploy-window-B2IM-9G5.js} +10 -44
  84. package/server/{deploy-window-D_AimdNN.js → deploy-window-BNFWnA8D.js} +1 -1
  85. package/server/{dev-supervisor-C4F0vbno.js → dev-supervisor-B1mZYXz4.js} +2 -2
  86. package/server/{devcontainer-renderer-66sqMQIi.js → devcontainer-renderer-B-o68Z5B.js} +3 -3
  87. package/server/{dist-C5FT9lTG.js → dist-3W--cGMa.js} +1 -1
  88. package/server/dist-BR0QtwmS.js +3 -0
  89. package/server/{dist-src-B-AlGWSl.js → dist-src-C-Vk2jNk.js} +1 -1
  90. package/server/{docker-BxrFhTZ_.js → docker-DH3jUYg1.js} +1 -1
  91. package/server/{docker-CoAT8R0J.js → docker-meuLKLzV.js} +27 -20
  92. package/server/{dod-Bg6wsKTV.js → dod-D7-9dCOD.js} +1 -1
  93. package/server/{driver-CKVGi51s.js → driver-CmsY2RLl.js} +1 -1
  94. package/server/{durable-review-pipeline-D_DcfIGP.js → durable-review-pipeline-CStTgOAf.js} +1 -1
  95. package/server/{durable-review-pipeline-HkAgnx0L.js → durable-review-pipeline-Chq0lzjL.js} +1 -1
  96. package/server/{ensure-devcontainer-Bg5HJAcO.js → ensure-devcontainer-BE3llBWP.js} +1 -1
  97. package/server/{ensure-devcontainer-DTxChVuA.js → ensure-devcontainer-BXrY7C2Z.js} +4 -4
  98. package/server/{esm-shims-CaBWIR7f.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-ChEFB7Jp.js → events-CCkFWa7X.js} +1 -1
  102. package/server/{events-DhRN-6vM.js → events-zjDQozet.js} +3 -3
  103. package/server/{factory-BezSPaTd.js → factory-DhavwKVc.js} +5 -5
  104. package/server/{feature-registry-population-DhswNiXx.js → feature-registry-population-DWGBKyWd.js} +4 -4
  105. package/server/{feature-registry-storage-CUVNpAso.js → feature-registry-storage-C5DkXmCM.js} +3 -3
  106. package/server/{features-B2CfNPFw.js → features-CC47YcCX.js} +2 -2
  107. package/server/{feedback-target-CMrEAoeA.js → feedback-target-D9Tex35_.js} +1 -1
  108. package/server/{feedback-target-VBr9gKgX.js → feedback-target-DoRCR3L-.js} +8 -8
  109. package/server/{feedback-writer-CY91ckuw.js → feedback-writer-CTSuA6lw.js} +1 -1
  110. package/server/{feedback-writer-xpFgU632.js → feedback-writer-DdsBdtNL.js} +5 -5
  111. package/server/{flywheel-DsICCjTR.js → flywheel-DHWHzaYK.js} +1 -1
  112. package/server/{flywheel-DQqsSm7P.js → flywheel-DJQa9az8.js} +14 -14
  113. package/server/{flywheel-CTVY3yCG.js → flywheel-TacAI9MA.js} +21 -17
  114. package/server/{flywheel-merge-order-C-TI4JGu.js → flywheel-merge-order-D2foPh88.js} +1 -1
  115. package/server/{flywheel-merge-order-CMGz-imq.js → flywheel-merge-order-DRtex2Dt.js} +7 -7
  116. package/server/forge-CdlCG9aS.js +3 -0
  117. package/server/{forge-RTNqJe6a.js → forge-c8LeC-tw.js} +2 -2
  118. package/server/{from-DxGcivc9.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-BuTdlZFA.js → fts-operations-DP9R-8Q3.js} +3 -3
  121. package/server/{git-utils-CedsVume.js → git-utils-C31x1lpE.js} +1 -1
  122. package/server/{git-utils-DtdoEXJk.js → git-utils-xQ74FoSn.js} +5 -4
  123. package/server/{github-app-DIE8BkHI.js → github-app-CpQSDlv8.js} +1 -1
  124. package/server/{github-app-gVnZcP9B.js → github-app-D2QuvZ3j.js} +3 -3
  125. package/server/{github-client-BrAC6ELh.js → github-client-D9YvJX5D.js} +3 -3
  126. package/server/{github-client-CBOkvBUl.js → github-client-Tpi3PmKX.js} +1 -1
  127. package/server/{github-pr-lookup-CgMULTPf.js → github-pr-lookup-DvBMv-IW.js} +2 -2
  128. package/server/{harness-binary-CnBHpd57.js → harness-binary-BHxWf_sX.js} +7 -6
  129. package/server/{harness-resolve-BVj6sI8m.js → harness-resolve-bj9WMABA.js} +4 -4
  130. package/server/{health-events-BBWO_Dh9.js → health-events-bCDPn59Z.js} +2 -2
  131. package/server/{health-events-Der6bOkm.js → health-events-qo7Ss34U.js} +1 -1
  132. package/server/{hooks-BOavco-e.js → hooks-Dyxtg5fk.js} +2 -2
  133. package/server/{hooks-BJNal-bs.js → hooks-X2XHBB2b.js} +1 -1
  134. package/server/{hume-DBocJFkA.js → hume-DrZEGpqc.js} +2 -2
  135. package/server/hume-YPsy4UA8.js +3 -0
  136. package/server/{idle-stack-reaper-DQFh8rDh.js → idle-stack-reaper-CJ1ygW0p.js} +37 -7
  137. package/server/{idle-stack-reaper-CyGxXOfC.js → idle-stack-reaper-uJGOb-vu.js} +1 -1
  138. package/server/{in-flight-guard-nXEKoxI7.js → in-flight-guard-CG2Eo-rr.js} +1 -1
  139. package/server/{infra-BDQDRopn.js → infra-CTrmVqc_.js} +111 -6
  140. package/server/{injection-DfFFEMKL.js → injection-BisQ0lpX.js} +1 -1
  141. package/server/{injection-CCopdUKz.js → injection-C9sxqbc2.js} +73 -193
  142. package/server/{inspect-agent-FCDlNT_i.js → inspect-agent-BoSO51YC.js} +12 -12
  143. package/server/inspect-agent-BykeOH4a.js +2 -0
  144. package/server/{internal-token-BG6yQKNL.js → internal-token-AvXePaQT.js} +2 -2
  145. package/server/{internal-token-BJZa40Ld.js → internal-token-Djkj-yqK.js} +1 -1
  146. package/server/{io-C0NV7y6C.js → io-mxOWMZ7I.js} +6 -6
  147. package/server/{issue-closed-CNNGbhWm.js → issue-closed-Bj_bCv_0.js} +7 -7
  148. package/server/{issue-lifecycle-DSH0GpWC.js → issue-lifecycle-A5YIpDZE.js} +1 -1
  149. package/server/{issue-lifecycle-BXfzxFCD.js → issue-lifecycle-BXUqaHzF.js} +32 -28
  150. package/server/{issue-service-singleton-F3A5VP6M.js → issue-service-singleton-BPNEXczv.js} +11 -11
  151. package/server/{issue-service-singleton-lwFJ4dHk.js → issue-service-singleton-CcaHjKPR.js} +1 -1
  152. package/server/{issues-DA-U_MpR.js → issues-AX-YBeAQ.js} +2 -2
  153. package/server/{jsonl-parser-BXiGANOh.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-BnxRk0Eo.js → label-cleanup-sXUlgdM0.js} +3 -3
  158. package/server/{lifecycle-DOgGnpIv.js → lifecycle-D2X3al0D.js} +2 -2
  159. package/server/{lifecycle-Di48-w4x.js → lifecycle-DjlljAZ1.js} +6 -6
  160. package/server/{lifecycle-io-eVG6v_8-.js → lifecycle-io-C5nVk55o.js} +1 -1
  161. package/server/{lifecycle-io-1XSeczTr.js → lifecycle-io-NPm1YtIG.js} +5 -5
  162. package/server/{linear-client-CvGo9n7M.js → linear-client--luYwCZg.js} +1 -1
  163. package/server/{linear-client-CYZRrcjp.js → linear-client-B8pLegW1.js} +3 -3
  164. package/server/{linear-mcp-auth-Cp0XaP96.js → linear-mcp-auth-BQVWV0I3.js} +6 -6
  165. package/server/{linear-mcp-auth-DoJnjdPZ.js → linear-mcp-auth-Dx81Zl4G.js} +1 -1
  166. package/server/memory-fts-worker.js +1 -1
  167. package/server/{merge-DO14mOr3.js → merge-Bx5Bh9pi.js} +3 -3
  168. package/server/{merge-ZF99ig6A.js → merge-Dqmh_zja.js} +1 -1
  169. package/server/{merge-agent-gpiRkcvj.js → merge-agent-DP9AUY29.js} +33 -33
  170. package/server/{merge-agent-C1-9zbP_.js → merge-agent-DWd0KfiS.js} +1 -1
  171. package/server/{merge-batch-C11ocNkO.js → merge-batch-BdmvTEAC.js} +1 -1
  172. package/server/{merge-completeness-CghMbyX7.js → merge-completeness-BfRwFjRx.js} +1 -1
  173. package/server/{merge-completeness-BUzPZy0E.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-iwlUzZjr.js → merge-rebase-BX1xKsrE.js} +2 -2
  177. package/server/{merge-set-Dbnx4chw.js → merge-set-DsLjjLEV.js} +4 -4
  178. package/server/{merge-set-BymrheTj.js → merge-set-H6epHOsw.js} +1 -1
  179. package/server/{merge-sync-CM978zez.js → merge-sync-BEdfsQV4.js} +2 -2
  180. package/server/{merge-sync-CqEtqjI2.js → merge-sync-BebcWWGA.js} +1 -1
  181. package/server/{merge-train-DvLcAn1G.js → merge-train-D1I0lNOT.js} +4 -4
  182. package/server/{merge-train-deps-Cl_kcRbO.js → merge-train-deps-D_-C0Pk2.js} +4 -4
  183. package/server/{merge-verification-c9Y9mllw.js → merge-verification-DN1Ov9bU.js} +6 -6
  184. package/server/{merged-docker-cleanup-worker-CGiDOdv8.js → merged-docker-cleanup-worker-CfXSr2pA.js} +4 -4
  185. package/server/{merged-docker-cleanup-worker-DgsLOx3E.js → merged-docker-cleanup-worker-ybsPyHjB.js} +1 -1
  186. package/server/{multipart-parser-D0twwRjz.js → multipart-parser-CL5QG8iv.js} +2 -2
  187. package/server/{no-resume-mode-DZvP0M_S.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-6r2OEfYd.js → orphan-proposed-reconciler-CEW1maPl.js} +1 -1
  209. package/server/{orphan-proposed-reconciler-DtQP6oE_.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-DAOb1V2-.js → pan-dir-DhgKfO86.js} +21 -6
  213. package/server/{paths-DuATV5iE.js → paths-BUuhi6jM.js} +17 -17
  214. package/server/{pending-lifecycle-claim-DQUHIDfX.js → pending-lifecycle-claim-DJlA1rTR.js} +2 -2
  215. package/server/{persistent-logger-CBj016pT.js → persistent-logger-s8cbpFNV.js} +2 -2
  216. package/server/{pickup-zXZl5lQI.js → pickup-2AxtB3dW.js} +1 -1
  217. package/server/{pipeline-membership-DHOXmvba.js → pipeline-membership-2_okL5bm.js} +1 -1
  218. package/server/{pipeline-membership-B2yUcBz7.js → pipeline-membership-Dqv6_0ig.js} +1 -1
  219. package/server/{pipeline-membership-gather-OkLXuvxR.js → pipeline-membership-gather-4F1-tXKI.js} +1 -1
  220. package/server/{pipeline-membership-gather-BIcJ-N0W.js → pipeline-membership-gather-CtJ_7aGf.js} +149 -17
  221. package/server/{pipeline-notifier-BmwrVKsO.js → pipeline-notifier-CO9rxJgB.js} +1 -1
  222. package/server/{pipeline-notifier-CxMes51i.js → pipeline-notifier-DDfVBJhJ.js} +2 -2
  223. package/server/{post-merge-lifecycle-worker-3u_rA4R0.js → post-merge-lifecycle-worker-DmSOkeNp.js} +3 -3
  224. package/server/{project-pipelines-C3SPFJ38.js → project-pipelines-72WE8GVK.js} +2 -2
  225. package/server/{project-repos-BOpBzkO6.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-B0TtboFm.js → prompts-XkL10m8M.js} +2 -2
  229. package/server/{providers-O2smCvSz.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-BonZ4WVG.js → pull-requests-B-KrUph5.js} +3 -3
  248. package/server/{pull-requests-DNcJUVWA.js → pull-requests-DK5k92B4.js} +1 -1
  249. package/server/{queries-DCX27GRr.js → queries-DVpl1vsU.js} +1212 -193
  250. package/server/{rally-Cxe7lKYX.js → rally-DbE561hD.js} +3 -3
  251. package/server/rally-O_st_X7n.js +3 -0
  252. package/server/{rally-api-CzkKenoi.js → rally-api-CZLeEd2C.js} +2 -2
  253. package/server/{rally-api-Cp50exEi.js → rally-api-DaHtn5QN.js} +1 -1
  254. package/server/{rally-client-Bu3Cekkw.js → rally-client-C-MAl8ur.js} +1 -1
  255. package/server/{rally-client-CyBBEDHu.js → rally-client-Ch3zRsBX.js} +5 -5
  256. package/server/{reap-terminal-sessions-CtAhr6L0.js → reap-terminal-sessions-C1n0ALRb.js} +2 -2
  257. package/server/{reap-terminal-sessions-DvFqQUnq.js → reap-terminal-sessions-DegFS2p1.js} +2 -2
  258. package/server/{rebuild-stack-hCQtprWC.js → rebuild-stack-C9Li44A3.js} +20 -10
  259. package/server/{rebuild-stack-BKYpIPDL.js → rebuild-stack-qC0jCNm6.js} +2 -2
  260. package/server/{reconstruct-cache-CF2avArx.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-_eO3VFth.js → release-engine-Be5MX5GP.js} +5 -5
  267. package/server/{release-set-vxgZwwZV.js → release-set-DJv_O6PS.js} +3 -3
  268. package/server/{remote-BienmcrZ.js → remote-BMM3uH2J.js} +3 -3
  269. package/server/{remote-CVPCc7Vy.js → remote-C0xVTHA5.js} +3 -3
  270. package/server/{remote-agents-kwsEZvXu.js → remote-agents-BIIoc5pD.js} +1 -1
  271. package/server/{remote-agents-kxraOCGT.js → remote-agents-EUiZ26bj.js} +7 -7
  272. package/server/{remote-completion-BtmZ42aP.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-CIRr0yYt.js → review-agent-BHGaBoBu.js} +29 -29
  276. package/server/{review-agent-UpAM4DmT.js → review-agent-CD3RQ-tc.js} +1 -1
  277. package/server/{review-artifacts-BCODM9ww.js → review-artifacts-DyhajWso.js} +6 -6
  278. package/server/{review-context-BBsNrDri.js → review-context-B-dlsPnx.js} +9 -9
  279. package/server/{review-convoy-liveness-l06_LYCt.js → review-convoy-liveness-D7M-s_nS.js} +2 -2
  280. package/server/{review-status-CacDM78F.js → review-status-B6wYcOtP.js} +1 -1
  281. package/server/{review-status-CwhA9wmd.js → review-status-CKLk5aZ-.js} +306 -59
  282. package/server/{review-status-emit-BPJwYcRy.js → review-status-emit-CJ7UmEVU.js} +3 -3
  283. package/server/{review-status-enrichment-DvyZAbGR.js → review-status-enrichment-DJRgGX7-.js} +3 -3
  284. package/server/review-status-limits-4EJDCGHO.js +7 -0
  285. package/server/{review-status-source-DWnFE0b6.js → review-status-source-7nU3Z2wL.js} +1 -1
  286. package/server/{review-status-source-B70ekARK.js → review-status-source-BsDYGfyv.js} +1 -1
  287. package/server/{review-status-sync-B0IS6Beh.js → review-status-sync-BLssMTEW.js} +1 -1
  288. package/server/{review-status-sync-h2CJX6ju.js → review-status-sync-BxBeHRde.js} +35 -11
  289. package/server/{review-verdict-feedback-yrrmgps_.js → review-verdict-feedback-5jWuzgpc.js} +22 -10
  290. package/server/{review-verdict-feedback-qRohbFG2.js → review-verdict-feedback-HRY9P4bN.js} +1 -1
  291. package/server/{rollup-CUoav0Op.js → rollup-BGIrCEkU.js} +79 -44
  292. package/server/rollup-CZB4UL9q.js +3 -0
  293. package/server/{scanner-ChURu_b-.js → scanner-DydjXPrz.js} +16 -9
  294. package/server/search-DdtIjAiu.js +395 -0
  295. package/server/{sequence-io-D9ITDxzq.js → sequence-io-Fw-cLyDs.js} +4 -4
  296. package/server/{sequencer-agent-m7gmaakW.js → sequencer-agent-BcpGMt5x.js} +15 -10
  297. package/server/server.js +1258 -438
  298. package/server/{service-BzFG0Us_.js → service-BFFkGsG4.js} +58 -58
  299. package/server/{session-fork-KBq4HIHF.js → session-fork-D0V-3e5P.js} +2 -2
  300. package/server/{session-history-C_EMhIIF.js → session-history-Bta5l9jY.js} +5 -5
  301. package/server/{settings-DejgzzLs.js → settings-Ce8B1daF.js} +2 -2
  302. package/server/{settings-BLbcDqUp.js → settings-E3FnEIUx.js} +3 -3
  303. package/server/settings-eOOJpxi_.js +2 -0
  304. package/server/{shadow-engineering-D8R9I8Yl.js → shadow-engineering-Mt9nJO4i.js} +3 -3
  305. package/server/{shadow-state-C0Af4clN.js → shadow-state-Bzj_AZCV.js} +1 -1
  306. package/server/{shadow-state-fzIqIMDD.js → shadow-state-DrkhoVSx.js} +2 -2
  307. package/server/{shadow-utils-Ugca_9ND.js → shadow-utils-H1GfqP06.js} +2 -2
  308. package/server/{ship-log-VAv-lHrF.js → ship-log-CFUIo4PR.js} +1 -1
  309. package/server/{smart-compaction-BcYY_Suf.js → smart-compaction-DSTq-Wua.js} +1 -1
  310. package/server/{smart-compaction-B2Xu5XEb.js → smart-compaction-Hzp3KCJX.js} +7 -7
  311. package/server/{spawn-planning-session-Dsv-350T.js → spawn-planning-session-C0uSA2SL.js} +2 -2
  312. package/server/{spawn-planning-session-DhCoBPct.js → spawn-planning-session-DN4son31.js} +23 -21
  313. package/server/{specialist-completion-z6v3ZqJE.js → specialist-completion-Cf6tpIh1.js} +1 -1
  314. package/server/{specialist-context-CrA5azkJ.js → specialist-context-DEUEkjIQ.js} +5 -5
  315. package/server/{specialist-handoff-logger-CmpZYJMB.js → specialist-handoff-logger-D_LmQDj3.js} +2 -2
  316. package/server/{specialist-logs-BorrIu0x.js → specialist-logs-7Ynue0R7.js} +3 -3
  317. package/server/{specialists-ZdrifiKx.js → specialists-CQwBEGlD.js} +1 -1
  318. package/server/{specialists-2yLmqph9.js → specialists-DAjPgYs_.js} +504 -238
  319. package/server/{specialists-Dfx9_Wzb.js → specialists-Hr6iW9fU.js} +18 -18
  320. package/server/{specialists-CH6ah6D-.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-Dm_NV7f6.js → src-DQnkPN2i.js} +3 -3
  324. package/server/{src-B2e5rGu2.js → src-DhfDV0o4.js} +6 -6
  325. package/server/{stack-health-Bf2WdG4E.js → stack-health-D_iKwNRg.js} +107 -16
  326. package/server/stack-health-deVSdDwn.js +3 -0
  327. package/server/{stale-task-claims-D1Ll8fI5.js → stale-task-claims-BYJGqhLI.js} +5 -5
  328. package/server/{staleness-CuED1Psm.js → staleness-CopBDKnA.js} +1 -1
  329. package/server/{staleness-45qZ_a60.js → staleness-D8WeMUHd.js} +1 -1
  330. package/server/{state-home-B4EWfIxF.js → state-home-DjN8qduI.js} +24 -3
  331. package/server/{state-mapping-BEONzr8P.js → state-mapping-DlM7OYRW.js} +1 -1
  332. package/server/{state-migrate-Cd8BH33U.js → state-migrate-a2p1gtD7.js} +4 -4
  333. package/server/state-mirror-Cv_XgvT5.js +121 -0
  334. package/server/{stuck-remediation-ChcooZuk.js → stuck-remediation-CXJX_kki.js} +1 -1
  335. package/server/{stuck-remediation-DmY5UJLg.js → stuck-remediation-CbCRSz1v.js} +31 -732
  336. package/server/{substrate-bug-weights-service-BvTWrFUz.js → substrate-bug-weights-service-DxpopNd9.js} +3 -3
  337. package/server/{summary-fork--Jr8duYh.js → summary-fork-B61fjRJn.js} +2 -2
  338. package/server/{summary-fork-Ct514_Jl.js → summary-fork-B9pszUJN.js} +91 -10
  339. package/server/supervisor/{injection-budget-B3UyEONL.js → injection-budget-Ar7hgyJq.js} +1 -1
  340. package/server/supervisor/pty-supervisor.js +12 -3
  341. package/server/supervisor/{pty-token-CWRffcCa.js → pty-token-CXCFU0Z8.js} +1 -1
  342. package/server/{supervisor-B7BHGcNA.js → supervisor-BvnxbuuF.js} +6 -4
  343. package/server/supervisor-C69kpqvd.js +2 -0
  344. package/server/{swarm-readiness-MNE5O8hn.js → swarm-readiness-vTw1kqGa.js} +3 -3
  345. package/server/{system-prerequisites-Cin9ZgDx.js → system-prerequisites-LLzTEqsK.js} +3 -3
  346. package/server/{teardown-workspace-CvBpvc85.js → teardown-workspace-CqKKVJr1.js} +15 -15
  347. package/server/{test-agent-queue-DmSIqays.js → test-agent-queue-CWMq7oyG.js} +8 -7
  348. package/server/{test-verdict-BieVDAV1.js → test-verdict-NdtgRBuA.js} +1 -1
  349. package/server/{test-verdict-Cy2jJGTe.js → test-verdict-diIWE6hz.js} +15 -3
  350. package/server/{tldr-daemon-Ca0eovh3.js → tldr-daemon-B1Jhrtc8.js} +1 -1
  351. package/server/{tldr-daemon-IOssGwg7.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-B10VFNOD.js → token-Bgpjo3tE.js} +2 -2
  355. package/server/token-util-BsjFll-k.js +3 -0
  356. package/server/{token-util-CZ8WPtdk.js → token-util-BymbpkJp.js} +1 -1
  357. package/server/{tracker-config-CHbrjg6m.js → tracker-config-4DaKVTfc.js} +2 -2
  358. package/server/{tracker-utils-DZZq_C0R.js → tracker-utils-BDeAXC-q.js} +2 -2
  359. package/server/{traefik-connect-GHomyBaD.js → traefik-connect-CC5FyxYj.js} +1 -1
  360. package/server/{tunnel-Dz7y434T.js → tunnel-CDWkeceJ.js} +1 -1
  361. package/server/{tunnel-Bdyb-sNq.js → tunnel-CPf5M-Pc.js} +3 -3
  362. package/server/{typed-errors-Bn_2WRU7.js → typed-errors-9K7Dq_Vn.js} +1 -1
  363. package/server/{typed-errors-BR_RmPS_.js → typed-errors-DrS5fb5z.js} +1 -1
  364. package/server/{types-D2ETIB8T.js → types-DzlUKiuf.js} +4 -3
  365. package/server/{types-Dh6RI5Vj.js → types-kI9ik8XO.js} +1 -1
  366. package/server/{uat-promote-verification-DyvQXvIn.js → uat-promote-verification-c_pxoxEc.js} +5 -5
  367. package/server/{uat-train-Dv0Bxer7.js → uat-train-CWGxBdJO.js} +0 -0
  368. package/server/{uat-train-diX_7shd.js → uat-train-CfCYd2ve.js} +1 -1
  369. package/server/{validate-606KcYZC.js → validate-f3ItVCfm.js} +3 -3
  370. package/server/{validation-Cf7aaV5A.js → validation-5G_wQtea.js} +1 -1
  371. package/server/{validation-CnrDul1x.js → validation-7tSiCM82.js} +4 -4
  372. package/server/{verification-artifact-GOaj8u2s.js → verification-artifact-9h9dH8uX.js} +1 -1
  373. package/server/{verification-artifact-D4b-bio9.js → verification-artifact-C_4WJnf6.js} +1 -1
  374. package/server/{verification-runner-DiPaUP-C.js → verification-runner-BV5F6wrA.js} +1 -1
  375. package/server/{verification-runner-B5MVxDvU.js → verification-runner-D58KmBhK.js} +18 -38
  376. package/server/{vtt-parser-CMU5EZ5R.js → vtt-parser-2iT9OHa9.js} +1 -1
  377. package/server/{work-agent-prompt-Csb3fbVR.js → work-agent-prompt-D03s4DD1.js} +9 -9
  378. package/server/{workflows-D87ajwV6.js → workflows-BMBwLYPV.js} +281 -98
  379. package/server/workflows-BOmWGpIh.js +2 -0
  380. package/server/{workspace-iD8oULqu.js → workspace-BgflNCH0.js} +3 -3
  381. package/server/{workspace-AIOM7n00.js → workspace-Cn9ywfSW.js} +1 -1
  382. package/server/{workspace-anchor-drift-19cJ1bH5.js → workspace-anchor-drift-C8Fy3shi.js} +1 -1
  383. package/server/{workspace-anchor-drift-C3mK5wNI.js → workspace-anchor-drift-CMiNncwq.js} +5 -8
  384. package/server/{workspace-config-CJ7RqQiP.js → workspace-config-aUc2nIz6.js} +1 -1
  385. package/server/{workspace-manager-CXfrw4rR.js → workspace-manager-Bem7ZBs9.js} +521 -292
  386. package/server/workspace-manager-C0CpNh3t.js +3 -0
  387. package/server/{workspace-metadata-BuMRco5P.js → workspace-metadata-C5iSlPRo.js} +1 -1
  388. package/server/{workspace-metadata-eHSj_NsP.js → workspace-metadata-UKmTYmDQ.js} +2 -2
  389. package/server/{workspaces-DbtMX2TM.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-DyZJia9f.js +0 -3
  400. package/server/agents-Dnn4XgdB.js +0 -3
  401. package/server/archive-planning-BHCd_eL5.js +0 -2
  402. package/server/cli-D6mRfUE6.js +0 -3
  403. package/server/deacon-swarm-BkKR7SXu.js +0 -2
  404. package/server/delivery-C2M73sBg.js +0 -3
  405. package/server/dist-qcf9gAP0.js +0 -3
  406. package/server/event-store-5UKzh9Jf.js +0 -3
  407. package/server/forge-D647IMNa.js +0 -3
  408. package/server/fts-db-wROfFfje.js +0 -146
  409. package/server/hume-DtWN8oV5.js +0 -3
  410. package/server/inspect-agent-CPqXI81t.js +0 -2
  411. package/server/merge-ops-7QqziXAh.js +0 -2
  412. package/server/merge-rebase-B4pgzvQJ.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-BgW4lcIa.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-x6ztTQo4.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-D-wM9EfB.js +0 -44
  435. package/server/resume-DXIIfJNk.js +0 -3
  436. package/server/rollup-DxCjJaAM.js +0 -3
  437. package/server/settings-9jSGHBPY.js +0 -2
  438. package/server/specs-DKV3jIEs.js +0 -3
  439. package/server/stack-health-CoWAhA99.js +0 -3
  440. package/server/supervisor-CyR_mW5B.js +0 -2
  441. package/server/tmux-Ctk6RV5l.js +0 -3
  442. package/server/token-util-CrfQ2FKf.js +0 -3
  443. package/server/workflows-DN6NyVGd.js +0 -2
  444. package/server/workspace-manager-B38rFWA1.js +0 -3
@@ -1,5 +1,5 @@
1
- import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-BDQDRopn.js";
2
- import { a as init_event_store, i as initEventStore, r as getSharedDb } from "./event-store-CrHcVC5_.js";
1
+ import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-CTrmVqc_.js";
2
+ import { a as init_event_store, i as initEventStore, r as getSharedDb } from "./event-store-D_AR-Y78.js";
3
3
  //#region ../../lib/overdeck/flywheel-substrate-bugs.ts
4
4
  init_infra();
5
5
  function parseAffectedCriteriaColumn(value) {
@@ -871,4 +871,4 @@ async function listSubstrateBugWeights(window = "30d", deps = {}) {
871
871
  //#endregion
872
872
  export { getByIssueId as a, parseFlywheelStatsWindow as i, derivePipelineRunStatsInputs as n, markFixed as o, computeFlywheelStats as r, upsert as s, listSubstrateBugWeights as t };
873
873
 
874
- //# sourceMappingURL=substrate-bug-weights-service-BvTWrFUz.js.map
874
+ //# sourceMappingURL=substrate-bug-weights-service-DxpopNd9.js.map
@@ -1,4 +1,4 @@
1
- import "./smart-compaction-B2Xu5XEb.js";
2
- import { a as generateFallbackSummary, l as init_summary_fork } from "./summary-fork-Ct514_Jl.js";
1
+ import "./smart-compaction-Hzp3KCJX.js";
2
+ import { a as generateFallbackSummary, l as init_summary_fork } from "./summary-fork-B9pszUJN.js";
3
3
  init_summary_fork();
4
4
  export { generateFallbackSummary };
@@ -1,12 +1,14 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Fr as init_errors, Tr as FsError, ci as getOverdeckHome, di as packageRoot, f as loadConfigSync, li as init_paths, oi as getHandoffsDir, pi as sessionFilePath, t as init_config_yaml } from "./config-yaml-CxdwhAIA.js";
3
- import { Mt as deliverAgentMessage, b as init_agents } from "./queries-DCX27GRr.js";
4
- import { k as init_conversations } from "./conversations-D7lR670u.js";
5
- import { a as getWorkspaceStackHealth, s as init_stack_health } from "./stack-health-Bf2WdG4E.js";
6
- import { a as runModelSummary, i as parseEntries, o as serializeConversation, r as init_smart_compaction, s as summarizeSerializedText, t as generateSmartSummary } from "./smart-compaction-B2Xu5XEb.js";
2
+ import { Ar as FsError, Vr as init_errors, _i as packageRoot, f as loadConfigSync, fi as getHandoffsDir, hi as init_paths, mi as getOverdeckHome, t as init_config_yaml, yi as sessionFilePath } from "./config-yaml-BSCqwmX0.js";
3
+ import { b as init_agents, qt as deliverAgentMessage } from "./queries-DVpl1vsU.js";
4
+ import { k as init_conversations } from "./conversations-B4rxz-Wl.js";
5
+ import { c as init_stack_health, o as getWorkspaceStackHealth } from "./stack-health-D_iKwNRg.js";
6
+ import { l as init_kimi_code, o as findKimiWirePathAsync } from "./kimi-code-BYbme0aV.js";
7
+ import { a as runModelSummary, i as parseEntries, o as serializeConversation, r as init_smart_compaction, s as summarizeSerializedText, t as generateSmartSummary } from "./smart-compaction-Hzp3KCJX.js";
7
8
  import { join } from "node:path";
8
9
  import { Effect } from "effect";
9
10
  import { join as join$1 } from "path";
11
+ import { homedir } from "node:os";
10
12
  import { existsSync } from "node:fs";
11
13
  import { access, readFile, readdir, writeFile } from "node:fs/promises";
12
14
  import { mkdir as mkdir$1 } from "fs/promises";
@@ -99,6 +101,42 @@ function serializeAcpEntry(entry) {
99
101
  return lines.length > 1 ? lines.join("\n") : void 0;
100
102
  }
101
103
  /**
104
+ * Resolve the native Kimi Code CLI wire.jsonl for a conversation. Mirrors
105
+ * jsonl-resolver.ts's resolveKimiWirePath, reimplemented locally (rather than
106
+ * imported) to avoid a circular import this module would otherwise close:
107
+ * jsonl-resolver.js -> agents.js -> agents/resume.js ->
108
+ * conversation-compaction.js -> summary-fork.js -> transcript-adapter.js.
109
+ * Fast path: the captured `kimi-session-id` for this conversation's tmux
110
+ * session maps directly to the wire.jsonl path; fallback (no captured id):
111
+ * the newest session directory under the workspace's bucket.
112
+ */
113
+ async function resolveKimiWireFileFromTmux(tmuxSession, workspace) {
114
+ return findKimiWirePathAsync(join(homedir(), ".kimi-code"), workspace, await readFile(join(getOverdeckHome(), "agents", tmuxSession, "kimi-session-id"), "utf-8").then((s) => s.trim(), () => null));
115
+ }
116
+ function extractKimiPromptText(input) {
117
+ if (!Array.isArray(input)) return "";
118
+ return input.filter((part) => part?.type === "text" && typeof part.text === "string").map((part) => part.text.trim()).filter(Boolean).join("\n\n");
119
+ }
120
+ function serializeKimiEntry(entry, includeThinking) {
121
+ if (entry.type === "turn.prompt") {
122
+ const text = extractKimiPromptText(entry.input);
123
+ return text ? `[user]\n${text}` : void 0;
124
+ }
125
+ if (entry.type !== "context.append_loop_event" || !entry.event) return void 0;
126
+ const event = entry.event;
127
+ if (event.type === "content.part" && event.part?.type === "text" && event.part.text?.trim()) return `[assistant]\n${event.part.text.trim()}`;
128
+ if (event.type === "content.part" && event.part?.type === "think" && includeThinking && event.part.think?.trim()) return `[assistant]\n[thinking]\n${event.part.think.trim()}`;
129
+ if (event.type === "tool.call" && typeof event.name === "string") {
130
+ let args = "";
131
+ try {
132
+ args = JSON.stringify(event.args).slice(0, 500);
133
+ } catch {
134
+ args = "<unserializable>";
135
+ }
136
+ return `[tool_use: ${event.name}]\n${args}`;
137
+ }
138
+ }
139
+ /**
102
140
  * Look up the transcript adapter for a harness. Unknown harnesses default to
103
141
  * the Claude Code adapter — that matches the conservative behavior of the rest
104
142
  * of the codebase (see getHarness() in @overdeck/contracts).
@@ -106,9 +144,10 @@ function serializeAcpEntry(entry) {
106
144
  function getTranscriptAdapter(harness) {
107
145
  return REGISTRY[harness ?? "claude-code"] ?? claudeCodeAdapter;
108
146
  }
109
- var claudeCodeAdapter, piAdapter, ACP_TOOL_DETAIL_MAX_CHARS, acpAdapter, REGISTRY;
147
+ var claudeCodeAdapter, piAdapter, ACP_TOOL_DETAIL_MAX_CHARS, acpAdapter, kimiCodeAdapter, REGISTRY;
110
148
  var init_transcript_adapter = __esmMin((() => {
111
149
  init_paths();
150
+ init_kimi_code();
112
151
  init_smart_compaction();
113
152
  claudeCodeAdapter = {
114
153
  name: "claude-code",
@@ -220,11 +259,53 @@ var init_transcript_adapter = __esmMin((() => {
220
259
  };
221
260
  }
222
261
  };
262
+ kimiCodeAdapter = {
263
+ name: "kimi-code",
264
+ supportsPlainForkAsSource: false,
265
+ supportsSourceAuthoredHandoff: false,
266
+ async resolveSessionFile(conv) {
267
+ return resolveKimiWireFileFromTmux(conv.tmuxSession, conv.cwd);
268
+ },
269
+ async serializeTranscript(sessionFile, options) {
270
+ const includeThinking = options?.includeThinking ?? true;
271
+ const content = await readFile(sessionFile, "utf-8");
272
+ const parts = [];
273
+ for (const line of content.split("\n")) {
274
+ if (!line.trim()) continue;
275
+ let entry;
276
+ try {
277
+ entry = JSON.parse(line);
278
+ } catch {
279
+ continue;
280
+ }
281
+ const serialized = serializeKimiEntry(entry, includeThinking);
282
+ if (serialized) parts.push(serialized);
283
+ }
284
+ return parts.join("\n\n");
285
+ },
286
+ async compactSummary(sessionFile, options) {
287
+ const serialized = await kimiCodeAdapter.serializeTranscript(sessionFile, { includeThinking: options?.includeThinking ?? true });
288
+ if (!serialized.trim()) return {
289
+ summary: "",
290
+ summaryModel: null
291
+ };
292
+ return {
293
+ summary: await summarizeSerializedText(serialized, {
294
+ model: options?.model,
295
+ richMode: options?.richMode ?? false,
296
+ harness: options?.harness ?? "claude-code",
297
+ timeoutMs: options?.timeoutMs
298
+ }),
299
+ summaryModel: options?.model ?? null
300
+ };
301
+ }
302
+ };
223
303
  REGISTRY = {
224
304
  "claude-code": claudeCodeAdapter,
225
305
  "ohmypi": piAdapter,
226
306
  "codex": claudeCodeAdapter,
227
- "acp": acpAdapter
307
+ "acp": acpAdapter,
308
+ "kimi-code": kimiCodeAdapter
228
309
  };
229
310
  }));
230
311
  //#endregion
@@ -508,11 +589,11 @@ async function generateSummaryForFork(jsonlPath, summaryModel, includeThinkingIn
508
589
  }
509
590
  }
510
591
  async function reserveSummaryForkSessionPromise(cwd) {
511
- const { reserveForkSession } = await import("./session-fork-KBq4HIHF.js");
592
+ const { reserveForkSession } = await import("./session-fork-D0V-3e5P.js");
512
593
  return reserveForkSession(cwd);
513
594
  }
514
595
  async function copySessionFromCompactBoundaryPromise(sourcePath, destPath) {
515
- const { copySessionForFork } = await import("./session-fork-KBq4HIHF.js");
596
+ const { copySessionForFork } = await import("./session-fork-D0V-3e5P.js");
516
597
  return copySessionForFork(sourcePath, destPath, { fullHistory: false });
517
598
  }
518
599
  /** Effect variant of generateFallbackSummary. */
@@ -587,4 +668,4 @@ var init_summary_fork = __esmMin((() => {
587
668
  //#endregion
588
669
  export { init_transcript_adapter as _, generateFallbackSummary as a, handoffPreconditionFallbackReason as c, prependFallbackFocus as d, requestHandoffFromAgent as f, getTranscriptAdapter as g, validateHandoffDoc as h, copySessionFromCompactBoundary as i, init_summary_fork as l, sanitizeHandoffDoc as m, HandoffValidationError as n, generateSummaryForFork as o, reserveSummaryForkSession as p, authorHandoffExternal as r, handoffFailureReason as s, HandoffStallError as t, logHandoffFallback as u };
589
670
 
590
- //# sourceMappingURL=summary-fork-Ct514_Jl.js.map
671
+ //# sourceMappingURL=summary-fork-B9pszUJN.js.map
@@ -26,4 +26,4 @@ var init_injection_budget = __esmMin((() => {
26
26
  //#endregion
27
27
  export { inputSettleMs as a, init_injection_budget as i, SUPERVISOR_CLIENT_MARGIN_MS as n, purgeSettleMs as o, echoConfirmTimeoutMs as r, supervisorInjectionBudgetMs as s, INPUT_PURGE_MAX_CHARS as t };
28
28
 
29
- //# sourceMappingURL=injection-budget-B3UyEONL.js.map
29
+ //# sourceMappingURL=injection-budget-Ar7hgyJq.js.map
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import { nt as init_paths, tt as getOverdeckHome } from "./paths-BBOnCYlO.js";
3
- import { n as init_pty_token, r as readPtyToken, t as PTY_TOKEN_HEADER } from "./pty-token-CWRffcCa.js";
4
- import { a as inputSettleMs, i as init_injection_budget, o as purgeSettleMs, r as echoConfirmTimeoutMs, t as INPUT_PURGE_MAX_CHARS } from "./injection-budget-B3UyEONL.js";
3
+ import { n as init_pty_token, r as readPtyToken, t as PTY_TOKEN_HEADER } from "./pty-token-CXCFU0Z8.js";
4
+ import { a as inputSettleMs, i as init_injection_budget, o as purgeSettleMs, r as echoConfirmTimeoutMs, t as INPUT_PURGE_MAX_CHARS } from "./injection-budget-Ar7hgyJq.js";
5
5
  import { existsSync } from "node:fs";
6
6
  import { appendFile, chmod, mkdir, unlink } from "node:fs/promises";
7
7
  import { join } from "node:path";
@@ -406,7 +406,16 @@ async function main() {
406
406
  const agentId = resolveAgentIdOrExit();
407
407
  const { command, args } = resolveChildCommandOrExit();
408
408
  const { cols, rows } = stdoutDimensions();
409
- const child = pty.spawn(command, args, {
409
+ const hostTmux = process.env.OVERDECK_HOST_TMUX || process.env.TMUX;
410
+ const hostTmuxPane = process.env.OVERDECK_HOST_TMUX_PANE || process.env.TMUX_PANE;
411
+ const spawnCommand = hostTmux ? "/usr/bin/env" : command;
412
+ const spawnArgs = hostTmux ? [
413
+ `TMUX=${hostTmux}`,
414
+ ...hostTmuxPane ? [`TMUX_PANE=${hostTmuxPane}`] : [],
415
+ command,
416
+ ...args
417
+ ] : args;
418
+ const child = pty.spawn(spawnCommand, spawnArgs, {
410
419
  name: process.env.TERM || "xterm-256color",
411
420
  cols,
412
421
  rows,
@@ -40,4 +40,4 @@ var init_pty_token = __esmMin((() => {
40
40
  //#endregion
41
41
  export { writePtyToken as i, init_pty_token as n, readPtyToken as r, PTY_TOKEN_HEADER as t };
42
42
 
43
- //# sourceMappingURL=pty-token-CWRffcCa.js.map
43
+ //# sourceMappingURL=pty-token-CXCFU0Z8.js.map
@@ -1,11 +1,12 @@
1
- import { $r as TRAEFIK_DIR, Fr as init_errors, Gr as OVERDECK_HOME, Hr as CONFIG_FILE, Wr as LOGS_DIR, li as init_paths } from "./config-yaml-CxdwhAIA.js";
1
+ import { Jr as CONFIG_FILE, Vr as init_errors, Xr as LOGS_DIR, Zr as OVERDECK_HOME, ai as TRAEFIK_DIR, hi as init_paths } from "./config-yaml-BSCqwmX0.js";
2
2
  import { t as require_toml } from "./toml-CeLDATih.js";
3
- import { t as init_dev_supervisor } from "./dev-supervisor-C4F0vbno.js";
3
+ import { t as init_dev_supervisor } from "./dev-supervisor-B1mZYXz4.js";
4
4
  import { join } from "node:path";
5
5
  import "effect";
6
6
  import { existsSync, readFileSync } from "fs";
7
7
  import { join as join$1 } from "path";
8
8
  import "node:fs";
9
+ import "fs/promises";
9
10
  import "node:child_process";
10
11
  import { exec as exec$1 } from "child_process";
11
12
  import { promisify } from "util";
@@ -26,7 +27,8 @@ import { promisify } from "util";
26
27
  * Health-gating: each stage reports success only after the component's healthcheck
27
28
  * passes, or fails with an explicit `{ stage, reason }` on timeout.
28
29
  *
29
- * CLI-side only. Not used from dashboard server code — ok to use sync I/O here.
30
+ * Shared with the supervisor sidecar. Keep shell/process I/O asynchronous so
31
+ * lifecycle checks cannot block its request loop.
30
32
  */
31
33
  var import_toml = require_toml();
32
34
  init_paths();
@@ -72,4 +74,4 @@ function getSupervisorUrlSync() {
72
74
  //#endregion
73
75
  export { getSupervisorUrlSync as n, getSupervisorPortSync as t };
74
76
 
75
- //# sourceMappingURL=supervisor-B7BHGcNA.js.map
77
+ //# sourceMappingURL=supervisor-BvnxbuuF.js.map
@@ -0,0 +1,2 @@
1
+ import { n as getSupervisorUrlSync } from "./supervisor-BvnxbuuF.js";
2
+ export { getSupervisorUrlSync };
@@ -1,6 +1,6 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { S as init_specs } from "./io-C0NV7y6C.js";
3
- import { c as hasFileOverlap, l as init_dag, o as getDispatchableItems, r as compileGlob, s as groupItemsByWave } from "./dag-5QlmH0oC.js";
2
+ import { C as init_specs } from "./io-mxOWMZ7I.js";
3
+ import { c as hasFileOverlap, l as init_dag, o as getDispatchableItems, r as compileGlob, s as groupItemsByWave } from "./dag-BYiFMqpU.js";
4
4
  import "effect";
5
5
  //#region ../../lib/xbrief/swarm-readiness.ts
6
6
  function computeIssueFootprint(doc) {
@@ -112,4 +112,4 @@ var init_swarm_readiness = __esmMin((() => {
112
112
  //#endregion
113
113
  export { computeIssueFootprint as n, init_swarm_readiness as r, analyzeSwarmReadiness as t };
114
114
 
115
- //# sourceMappingURL=swarm-readiness-MNE5O8hn.js.map
115
+ //# sourceMappingURL=swarm-readiness-vTw1kqGa.js.map
@@ -1,4 +1,4 @@
1
- import { a as resolveExecutable, o as resolveHarnessBinary, r as init_harness_binary } from "./harness-binary-CnBHpd57.js";
1
+ import { a as resolveExecutable, o as resolveHarnessBinary, r as init_harness_binary } from "./harness-binary-BHxWf_sX.js";
2
2
  import { homedir } from "node:os";
3
3
  import { execFile } from "node:child_process";
4
4
  import { promisify } from "node:util";
@@ -132,7 +132,7 @@ const PREREQUISITES = [
132
132
  id: "kimi",
133
133
  name: "Kimi Code CLI",
134
134
  required: false,
135
- purpose: "Kimi Code agents through the Agent Client Protocol (ACP)",
135
+ purpose: "Kimi Code agents — native (kimi-code) and ACP (acp) harnesses",
136
136
  versionArgs: ["--version"],
137
137
  install: {
138
138
  linux: "https://www.kimi.com/code/docs/en/kimi-code-cli/guides/getting-started.html",
@@ -247,4 +247,4 @@ async function checkSystemPrerequisites(probe = defaultProbe, resolver = default
247
247
  //#endregion
248
248
  export { checkSystemPrerequisites, collectSetupDiagnostics };
249
249
 
250
- //# sourceMappingURL=system-prerequisites-Cin9ZgDx.js.map
250
+ //# sourceMappingURL=system-prerequisites-LLzTEqsK.js.map
@@ -1,10 +1,10 @@
1
- import { Ir as AGENTS_DIR, li as init_paths } from "./config-yaml-CxdwhAIA.js";
2
- import { D as killSession, H as sessionExists, M as listSessionNames, w as init_tmux } from "./tmux-CfDHob9M.js";
3
- import { n as getContainersReferencingWorkspacePath, r as init_workspace_manager } from "./workspace-manager-CXfrw4rR.js";
4
- import { r as init_devcontainer_renderer, t as DEVCONTAINER_DIRNAME } from "./devcontainer-renderer-66sqMQIi.js";
5
- import { a as pidsWithCwdUnder } from "./agent-gc-BMcgTDl7.js";
6
- import { i as findWorkspacePath, r as findAllWorkspacePaths } from "./archive-planning-Binfb99i.js";
7
- import { a as stepSkipped, i as stepOk, n as init_types, r as stepFailed } from "./types-Dh6RI5Vj.js";
1
+ import { Hr as AGENTS_DIR, hi as init_paths } from "./config-yaml-BSCqwmX0.js";
2
+ import { C as init_tmux, E as killSession, V as sessionExists, j as listSessionNames } from "./tmux-CImZaX4q.js";
3
+ import { n as getContainersReferencingWorkspacePath, r as init_workspace_manager } from "./workspace-manager-Bem7ZBs9.js";
4
+ import { r as init_devcontainer_renderer, t as DEVCONTAINER_DIRNAME } from "./devcontainer-renderer-B-o68Z5B.js";
5
+ import { a as pidsWithCwdUnder } from "./agent-gc-BmYeT6eH.js";
6
+ import { i as findWorkspacePath, r as findAllWorkspacePaths } from "./archive-planning-Cq7cyinS.js";
7
+ import { a as stepSkipped, i as stepOk, n as init_types, r as stepFailed } from "./types-kI9ik8XO.js";
8
8
  import { Effect } from "effect";
9
9
  import { existsSync } from "fs";
10
10
  import { basename, join } from "path";
@@ -83,7 +83,7 @@ async function stopTldrDaemonImpl(workspacePath) {
83
83
  const venvPath = join(workspacePath, ".venv");
84
84
  if (!existsSync(venvPath)) return stepSkipped(step, ["No .venv found"]);
85
85
  try {
86
- const { getTldrDaemonServiceSync } = await import("./tldr-daemon-Ca0eovh3.js");
86
+ const { getTldrDaemonServiceSync } = await import("./tldr-daemon-B1Jhrtc8.js");
87
87
  await getTldrDaemonServiceSync(workspacePath, venvPath).stop();
88
88
  return stepOk(step, ["Stopped TLDR daemon"]);
89
89
  } catch {
@@ -102,7 +102,7 @@ function stopDocker(workspacePath, issueLower) {
102
102
  async function stopDockerImpl(workspacePath, issueLower) {
103
103
  const step = "teardown:docker";
104
104
  try {
105
- const { stopWorkspaceDocker } = await import("./workspace-manager-B38rFWA1.js");
105
+ const { stopWorkspaceDocker } = await import("./workspace-manager-C0CpNh3t.js");
106
106
  await Effect.runPromise(stopWorkspaceDocker(workspacePath, issueLower));
107
107
  return stepOk(step, ["Stopped Docker containers"]);
108
108
  } catch {
@@ -406,7 +406,7 @@ function clearShadowState(issueId) {
406
406
  async function clearShadowStateImpl(issueId) {
407
407
  const step = "teardown:shadow-state";
408
408
  try {
409
- const { removeShadowState } = await import("./shadow-state-C0Af4clN.js");
409
+ const { removeShadowState } = await import("./shadow-state-Bzj_AZCV.js");
410
410
  if (removeShadowState(issueId).success) return stepOk(step, [`Cleared shadow state for ${issueId}`]);
411
411
  return stepSkipped(step, ["No shadow state found"]);
412
412
  } catch {
@@ -456,7 +456,7 @@ function buildPlaceholders(ctx, opts, workspacePath) {
456
456
  function removeTunnelConfig(tunnelConfig, placeholders) {
457
457
  return Effect.tryPromise({
458
458
  try: async () => {
459
- const { removeTunnelIngress } = await import("./tunnel-Dz7y434T.js");
459
+ const { removeTunnelIngress } = await import("./tunnel-CDWkeceJ.js");
460
460
  return stepOk("teardown:tunnel", (await Effect.runPromise(removeTunnelIngress(tunnelConfig, placeholders))).steps || ["Removed tunnel ingress"]);
461
461
  },
462
462
  catch: (err) => err
@@ -468,7 +468,7 @@ function removeTunnelConfig(tunnelConfig, placeholders) {
468
468
  function removeHumeEviConfig(humeConfig, placeholders) {
469
469
  return Effect.tryPromise({
470
470
  try: async () => {
471
- const { deleteHumeConfig } = await import("./hume-DtWN8oV5.js");
471
+ const { deleteHumeConfig } = await import("./hume-YPsy4UA8.js");
472
472
  return stepOk("teardown:hume", (await Effect.runPromise(deleteHumeConfig(humeConfig, placeholders))).steps || ["Removed Hume EVI config"]);
473
473
  },
474
474
  catch: (err) => err
@@ -513,7 +513,7 @@ function pruneSpecialistRegistry(issueId) {
513
513
  return Effect.tryPromise({
514
514
  try: async () => {
515
515
  const step = "teardown:specialist-registry";
516
- const { pruneSpecialistRegistryEntriesForIssue } = await import("./specialists-CH6ah6D-.js");
516
+ const { pruneSpecialistRegistryEntriesForIssue } = await import("./specialists-MOoeB4A8.js");
517
517
  const removed = pruneSpecialistRegistryEntriesForIssue(issueId);
518
518
  return removed > 0 ? stepOk(step, [`Pruned ${removed} specialist registry entr${removed === 1 ? "y" : "ies"} for ${issueId}`]) : stepSkipped(step, [`No specialist registry entries for ${issueId}`]);
519
519
  },
@@ -524,7 +524,7 @@ function pruneCheckpointRefs(projectPath, issueLower) {
524
524
  return Effect.tryPromise({
525
525
  try: async () => {
526
526
  const step = "teardown:checkpoint-refs";
527
- const { pruneCheckpointRefsForAgents } = await import("./checkpoint-manager-Cu-R5Uzg.js");
527
+ const { pruneCheckpointRefsForAgents } = await import("./checkpoint-manager-9t7G5c1V.js");
528
528
  const agentIds = [
529
529
  `agent-${issueLower}`,
530
530
  `planning-${issueLower}`,
@@ -538,4 +538,4 @@ function pruneCheckpointRefs(projectPath, issueLower) {
538
538
  //#endregion
539
539
  export { teardownWorkspace as t };
540
540
 
541
- //# sourceMappingURL=teardown-workspace-CvBpvc85.js.map
541
+ //# sourceMappingURL=teardown-workspace-CqKKVJr1.js.map
@@ -1,8 +1,8 @@
1
- import { Gn as init_projects, ar as resolveProjectFromIssueSync } from "./config-yaml-CxdwhAIA.js";
2
- import { C as setReviewStatusSync, p as init_review_status } from "./review-status-CwhA9wmd.js";
3
- import { b as init_agents, dt as spawnRun } from "./queries-DCX27GRr.js";
4
- import { n as init_merge_verification, r as shouldSkipDispatchAsMerged } from "./merge-verification-c9Y9mllw.js";
5
- import { r as init_test_verdict, t as clearTestVerdictArtifact } from "./test-verdict-Cy2jJGTe.js";
1
+ import { Sn as resolveProjectFromIssueSync, cn as init_projects } from "./config-yaml-BSCqwmX0.js";
2
+ import { C as setReviewStatusSync, p as init_review_status } from "./review-status-CKLk5aZ-.js";
3
+ import { Et as spawnRun, b as init_agents } from "./queries-DVpl1vsU.js";
4
+ import { n as init_merge_verification, r as shouldSkipDispatchAsMerged } from "./merge-verification-DN1Ov9bU.js";
5
+ import { r as init_test_verdict, t as clearTestVerdictArtifact } from "./test-verdict-diIWE6hz.js";
6
6
  import { Data, Effect } from "effect";
7
7
  //#region ../../lib/cloister/test-agent-queue.ts
8
8
  /**
@@ -50,7 +50,8 @@ Required steps:
50
50
  curl -s -X POST ${apiUrl}/api/review/${options.issueId}/status \\
51
51
  -H "Content-Type: application/json" \\
52
52
  -d '{"testStatus":"failed","testNotes":"<commands/UAT failures and exact unmet criteria>"}'
53
- 11. Report TESTS PASSED or TESTS FAILED with commands run, UAT paths exercised, and concise evidence.
53
+ 11. Make exactly ONE POST attempt. If it fails, the .pan/test/result.json artifact from step 8 is the durable verdict and the deacon recovers from it — do NOT retry the POST in a loop. Report the failure in your summary and stop.
54
+ 12. Report TESTS PASSED or TESTS FAILED with commands run, UAT paths exercised, and concise evidence.
54
55
 
55
56
  Boundaries:
56
57
  - Do NOT edit code, tests, fixtures, snapshots, or configuration.
@@ -164,4 +165,4 @@ const dispatchTestAgentAndNotify = (issueId, workspace, branch, notifyAgent) =>
164
165
  //#endregion
165
166
  export { buildTestRolePrompt, dispatchTestAgentAndNotify };
166
167
 
167
- //# sourceMappingURL=test-agent-queue-DmSIqays.js.map
168
+ //# sourceMappingURL=test-agent-queue-CWMq7oyG.js.map
@@ -1,3 +1,3 @@
1
- import { i as readTestVerdictArtifact, r as init_test_verdict } from "./test-verdict-Cy2jJGTe.js";
1
+ import { i as readTestVerdictArtifact, r as init_test_verdict } from "./test-verdict-diIWE6hz.js";
2
2
  init_test_verdict();
3
3
  export { readTestVerdictArtifact };
@@ -95,11 +95,23 @@ function decideUnsignaledTestAction(input) {
95
95
  notes: artifact.notes
96
96
  };
97
97
  }
98
- if (alreadyNudged) return { action: "none" };
98
+ if (alreadyNudged) return { action: "escalate" };
99
99
  return { action: "nudge-write" };
100
100
  }
101
+ /**
102
+ * PAN-3092: surface an `escalate` decision to the operator, once per test
103
+ * dispatch generation. Returns the needs-you line to log, or undefined when this
104
+ * generation already tripped. Never touches the verdict itself (D6) — a
105
+ * pane-only verdict is a human's call to read and apply.
106
+ */
107
+ async function recordUnsignaledTestEscalation(workspacePath, issueId, testSession, generation) {
108
+ const { recordRecoveryFailure } = await import("./recovery-trip-_16hFKv4.js");
109
+ const { emitNeedsYou } = await recordRecoveryFailure(workspacePath, issueId, "unsignaled-test-verdict", generation, 1);
110
+ if (!emitNeedsYou) return void 0;
111
+ return `needs-you ${issueId}: the test agent (${testSession}) is alive but has not responded to a verdict nudge, and it wrote no .pan/test/result.json — its verdict may exist only in the agent's pane, where nothing can recover it automatically. Read the pane (tmux -L overdeck capture-pane -t ${testSession} -p -S -200), then either apply the verdict yourself (pan admin specialists done test ${issueId} --status passed|failed) or run pan kill ${issueId} and re-dispatch the test.`;
112
+ }
101
113
  var init_test_verdict = __esmMin((() => {}));
102
114
  //#endregion
103
- export { testVerdictArtifactPath as a, readTestVerdictArtifact as i, decideUnsignaledTestAction as n, init_test_verdict as r, clearTestVerdictArtifact as t };
115
+ export { recordUnsignaledTestEscalation as a, readTestVerdictArtifact as i, decideUnsignaledTestAction as n, testVerdictArtifactPath as o, init_test_verdict as r, clearTestVerdictArtifact as t };
104
116
 
105
- //# sourceMappingURL=test-verdict-Cy2jJGTe.js.map
117
+ //# sourceMappingURL=test-verdict-diIWE6hz.js.map
@@ -1,3 +1,3 @@
1
- import { n as getTldrDaemonServiceSync, r as init_tldr_daemon } from "./tldr-daemon-IOssGwg7.js";
1
+ import { n as getTldrDaemonServiceSync, r as init_tldr_daemon } from "./tldr-daemon-Bpls1CJB.js";
2
2
  init_tldr_daemon();
3
3
  export { getTldrDaemonServiceSync };
@@ -1,5 +1,5 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Fr as init_errors } from "./config-yaml-CxdwhAIA.js";
2
+ import { Vr as init_errors } from "./config-yaml-BSCqwmX0.js";
3
3
  import "effect";
4
4
  import { existsSync, readFileSync, statSync } from "fs";
5
5
  import { join } from "path";
@@ -221,4 +221,4 @@ var init_tldr_daemon = __esmMin((() => {
221
221
  //#endregion
222
222
  export { getTldrDaemonServiceSync as n, init_tldr_daemon as r, TldrDaemonService as t };
223
223
 
224
- //# sourceMappingURL=tldr-daemon-IOssGwg7.js.map
224
+ //# sourceMappingURL=tldr-daemon-Bpls1CJB.js.map
@@ -1,13 +1,13 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Fr as init_errors, Mr as TmuxError, ci as getOverdeckHome, f as loadConfigSync, li as init_paths, t as init_config_yaml } from "./config-yaml-CxdwhAIA.js";
2
+ import { Ir as MessageDeliveryFailed, Rr as TmuxError, Vr as init_errors, f as loadConfigSync, hi as init_paths, mi as getOverdeckHome, t as init_config_yaml } from "./config-yaml-BSCqwmX0.js";
3
3
  import { Effect } from "effect";
4
4
  import { appendFileSync, chmodSync, existsSync, mkdirSync, readFileSync, unlinkSync, writeFileSync } from "fs";
5
5
  import { join } from "path";
6
6
  import { tmpdir } from "os";
7
7
  import { mkdir, readFile, unlink, writeFile } from "fs/promises";
8
+ import { randomUUID } from "node:crypto";
8
9
  import { execFile, execFileSync, execSync } from "child_process";
9
10
  import { promisify } from "util";
10
- import { randomUUID } from "node:crypto";
11
11
  //#region ../../lib/child-env.ts
12
12
  /**
13
13
  * Build a sanitized child environment.
@@ -63,7 +63,8 @@ var init_child_env = __esmMin((() => {
63
63
  "MIMO_API_KEY",
64
64
  "OPENROUTER_API_KEY",
65
65
  "NOUS_API_KEY",
66
- "DASHSCOPE_API_KEY"
66
+ "DASHSCOPE_API_KEY",
67
+ "QUANTUMLLAMA_API_KEY"
67
68
  ]);
68
69
  STRIPPED_KEYS = new Set([...LEAKED_ENV_KEYS, ...PROVIDER_ENV_KEYS]);
69
70
  BLANKED_PROVIDER_ENV = Object.fromEntries([...PROVIDER_ENV_KEYS].map((k) => [k, ""]));
@@ -1041,7 +1042,7 @@ function deliveryVerifyLine(content) {
1041
1042
  const lines = content.split("\n");
1042
1043
  return ([...lines].reverse().find((line) => line.trim().length >= 3) ?? lines[lines.length - 1])?.trim() ?? "";
1043
1044
  }
1044
- var execFileAsync, VALID_SESSION_NAME_RE, DEFAULT_TMUX_WINDOW_COLS, DEFAULT_TMUX_WINDOW_ROWS, MANAGED_TMUX_SERVER_UNIT, SERVER_ALIVE_POLL_MS, SERVER_ALIVE_TIMEOUT_MS, MANAGED_TMUX_CONFIG_CONTENT, tmuxContextPrepared, warnedManagedServerTmuxSpawnScope, warnedManagedServerDirtyCmdline, MessageDeliveryFailed, TERMINAL_API_ERROR_PATTERNS, toTmuxError, ensureManagedTmuxContextOnce, listSessions, listSessionNames, listAllPaneRecords, getWindowDimensions, sessionExists, createSession, killSession, setOption, resizeWindow, sendRawKeystroke, sendKeys, capturePane, listPaneValues, isPaneDead, getAgentSessions;
1045
+ var execFileAsync, VALID_SESSION_NAME_RE, DEFAULT_TMUX_WINDOW_COLS, DEFAULT_TMUX_WINDOW_ROWS, MANAGED_TMUX_SERVER_UNIT, SERVER_ALIVE_POLL_MS, SERVER_ALIVE_TIMEOUT_MS, MANAGED_TMUX_CONFIG_CONTENT, tmuxContextPrepared, warnedManagedServerTmuxSpawnScope, warnedManagedServerDirtyCmdline, TERMINAL_API_ERROR_PATTERNS, toTmuxError, ensureManagedTmuxContextOnce, listSessions, listSessionNames, listAllPaneRecords, getWindowDimensions, sessionExists, createSession, killSession, setOption, resizeWindow, sendRawKeystroke, sendKeys, capturePane, listPaneValues, isPaneDead, getAgentSessions;
1045
1046
  var init_tmux = __esmMin((() => {
1046
1047
  init_paths();
1047
1048
  init_config_yaml();
@@ -1075,14 +1076,6 @@ var init_tmux = __esmMin((() => {
1075
1076
  tmuxContextPrepared = false;
1076
1077
  warnedManagedServerTmuxSpawnScope = false;
1077
1078
  warnedManagedServerDirtyCmdline = false;
1078
- MessageDeliveryFailed = class extends Error {
1079
- constructor(message, sessionName, paneSnapshot) {
1080
- super(message);
1081
- this.sessionName = sessionName;
1082
- this.paneSnapshot = paneSnapshot;
1083
- this.name = "MessageDeliveryFailed";
1084
- }
1085
- };
1086
1079
  TERMINAL_API_ERROR_PATTERNS = [
1087
1080
  {
1088
1081
  re: /usage limit for this billing cycle/i,
@@ -1314,6 +1307,8 @@ var init_tmux = __esmMin((() => {
1314
1307
  bufferName,
1315
1308
  tmpFile
1316
1309
  ], { encoding: "utf-8" });
1310
+ const verifyLine = deliveryVerifyLine(keys);
1311
+ const menuBeforePaste = verifyLine.length >= 3 && paneHasBlockingChoiceMenu(await capturePaneText(sessionName, 90).catch(() => ""));
1317
1312
  await tmuxExecAsync([
1318
1313
  "paste-buffer",
1319
1314
  "-b",
@@ -1322,7 +1317,6 @@ var init_tmux = __esmMin((() => {
1322
1317
  "-t",
1323
1318
  sessionName
1324
1319
  ], { encoding: "utf-8" });
1325
- const verifyLine = deliveryVerifyLine(keys);
1326
1320
  const VERIFY_TIMEOUT_MS = 1500;
1327
1321
  const VERIFY_INTERVAL_MS = 50;
1328
1322
  const PASTE_MAX_ATTEMPTS = 2;
@@ -1368,7 +1362,7 @@ var init_tmux = __esmMin((() => {
1368
1362
  ], { encoding: "utf-8" }).catch(() => {});
1369
1363
  if (!pasteVerified) {
1370
1364
  const snapshot = await capturePaneText(sessionName, 90);
1371
- if (paneHasBlockingChoiceMenu(snapshot)) throw new MessageDeliveryFailed(`Delivery to ${sessionName} aborted: the pane is blocked on a choice menu, so the paste never reached the composer and Enter would answer that menu`, sessionName, snapshot);
1365
+ if (menuBeforePaste || paneHasBlockingChoiceMenu(snapshot)) throw new MessageDeliveryFailed(`Delivery to ${sessionName} aborted: the pane is blocked on a choice menu, so the paste never reached the composer and Enter would answer that menu`, sessionName, snapshot);
1372
1366
  console.warn(`[tmux] Paste verification failed for ${sessionName} after ${PASTE_MAX_ATTEMPTS} attempts × ${VERIFY_TIMEOUT_MS}ms. Sending Enter anyway to avoid orphaned input. Snapshot:\n${snapshot.slice(0, 500)}`);
1373
1367
  }
1374
1368
  await tmuxExecAsync([
@@ -1420,6 +1414,6 @@ var init_tmux = __esmMin((() => {
1420
1414
  getAgentSessions = () => listSessions().pipe(Effect.map((sessions) => sessions.filter((s) => s.name.startsWith("agent-"))));
1421
1415
  }));
1422
1416
  //#endregion
1423
- export { colorFgBgForTheme as $, listPaneValues as A, sendKeysAsync as B, getWindowDimensions as C, killSession as D, isPaneDead as E, parseTmuxPaneRecords as F, tmuxExecAsync as G, sessionExists as H, querySessionSync as I, init_pane_choice_menu as J, validateSessionName as K, resizeWindow as L, listSessionNames as M, listSessions as N, killSessionSync as O, listSessionsSync as P, paneTreeHasHarnessProcess as Q, sendEscapeKeyAsync as R, getTmuxConfigMode as S, isHarnessProcessAlive as T, sessionExistsSync as U, sendRawKeystroke as V, setOption as W, paneHasBlockingChoiceMenu as X, paneChoiceMenuSignature as Y, parsePaneChoiceMenu as Z, getAgentSessions as _, capturePaneSync as a, buildChildEnvWithoutTmuxSync as at, getTmuxBaseArgs as b, createSessionSync as c, ensureManagedTmuxContextOnce as d, getUiThemeSync as et, ensureOverdeckTmuxServerAsync as f, findManagedServerPidSync as g, exactSession as h, capturePane as i, buildChildEnvSync as it, listPaneValuesSync as j, listAllPaneRecords as k, deliveryVerifyLine as l, exactPaneTarget as m, buildTmuxArgs as n, setUiTheme as nt, capturePaneText as o, init_child_env as ot, ensureOverdeckTmuxServerSync as p, buildChoiceKeystrokes as q, buildTmuxCommandString as r, BLANKED_PROVIDER_ENV as rt, createSession as s, MessageDeliveryFailed as t, init_ui_theme as tt, detectTerminalApiErrorSync as u, getManagedTmuxConfigPath as v, init_tmux as w, getTmuxCommand as x, getManagedTmuxSocketName as y, sendKeys as z };
1417
+ export { getUiThemeSync as $, listPaneValuesSync as A, sendRawKeystroke as B, init_tmux as C, killSessionSync as D, killSession as E, querySessionSync as F, validateSessionName as G, sessionExistsSync as H, resizeWindow as I, paneChoiceMenuSignature as J, buildChoiceKeystrokes as K, sendEscapeKeyAsync as L, listSessions as M, listSessionsSync as N, listAllPaneRecords as O, parseTmuxPaneRecords as P, colorFgBgForTheme as Q, sendKeys as R, getWindowDimensions as S, isPaneDead as T, setOption as U, sessionExists as V, tmuxExecAsync as W, parsePaneChoiceMenu as X, paneHasBlockingChoiceMenu as Y, paneTreeHasHarnessProcess as Z, getManagedTmuxConfigPath as _, capturePaneText as a, init_child_env as at, getTmuxCommand as b, deliveryVerifyLine as c, ensureOverdeckTmuxServerAsync as d, init_ui_theme as et, ensureOverdeckTmuxServerSync as f, getAgentSessions as g, findManagedServerPidSync as h, capturePaneSync as i, buildChildEnvWithoutTmuxSync as it, listSessionNames as j, listPaneValues as k, detectTerminalApiErrorSync as l, exactSession as m, buildTmuxCommandString as n, BLANKED_PROVIDER_ENV as nt, createSession as o, exactPaneTarget as p, init_pane_choice_menu as q, capturePane as r, buildChildEnvSync as rt, createSessionSync as s, buildTmuxArgs as t, setUiTheme as tt, ensureManagedTmuxContextOnce as u, getManagedTmuxSocketName as v, isHarnessProcessAlive as w, getTmuxConfigMode as x, getTmuxBaseArgs as y, sendKeysAsync as z };
1424
1418
 
1425
- //# sourceMappingURL=tmux-CfDHob9M.js.map
1419
+ //# sourceMappingURL=tmux-CImZaX4q.js.map
@@ -0,0 +1,4 @@
1
+ import "./config-yaml-BSCqwmX0.js";
2
+ import { C as init_tmux, E as killSession, O as listAllPaneRecords, T as isPaneDead, V as sessionExists, j as listSessionNames } from "./tmux-CImZaX4q.js";
3
+ init_tmux();
4
+ export { isPaneDead, killSession, listAllPaneRecords, listSessionNames, sessionExists };
@@ -1,5 +1,5 @@
1
1
  import { t as __commonJSMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { r as require_token_error, t as require_token_util } from "./token-util-CZ8WPtdk.js";
2
+ import { r as require_token_error, t as require_token_util } from "./token-util-BymbpkJp.js";
3
3
  //#region ../../../node_modules/.bun/@vercel+oidc@3.2.0/node_modules/@vercel/oidc/dist/token.js
4
4
  var require_token = /* @__PURE__ */ __commonJSMin(((exports, module) => {
5
5
  var __defProp = Object.defineProperty;
@@ -54,4 +54,4 @@ var require_token = /* @__PURE__ */ __commonJSMin(((exports, module) => {
54
54
  export default require_token();
55
55
  export {};
56
56
 
57
- //# sourceMappingURL=token-B10VFNOD.js.map
57
+ //# sourceMappingURL=token-Bgpjo3tE.js.map
@@ -0,0 +1,3 @@
1
+ import { t as require_token_util } from "./token-util-BymbpkJp.js";
2
+ export default require_token_util();
3
+ export {};
@@ -432,4 +432,4 @@ var require_token_util = /* @__PURE__ */ __commonJSMin(((exports, module) => {
432
432
  //#endregion
433
433
  export { require_auth_errors as n, require_token_error as r, require_token_util as t };
434
434
 
435
- //# sourceMappingURL=token-util-CZ8WPtdk.js.map
435
+ //# sourceMappingURL=token-util-BymbpkJp.js.map
@@ -1,5 +1,5 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Gn as init_projects, In as getIssuePrefix, Zn as loadProjectsConfigSync, f as loadConfigSync, t as init_config_yaml } from "./config-yaml-CxdwhAIA.js";
2
+ import { $t as getIssuePrefix, cn as init_projects, f as loadConfigSync, mn as loadProjectsConfigSync, t as init_config_yaml } from "./config-yaml-BSCqwmX0.js";
3
3
  import { existsSync } from "fs";
4
4
  import { join } from "path";
5
5
  import { homedir } from "os";
@@ -142,4 +142,4 @@ var init_tracker_config = __esmMin((() => {
142
142
  //#endregion
143
143
  export { init_tracker_config as a, initTrackerConfigCache as i, getLinearApiKey as n, validateRallyConfig as o, getRallyConfig as r, getGitHubConfig as t };
144
144
 
145
- //# sourceMappingURL=tracker-config-CHbrjg6m.js.map
145
+ //# sourceMappingURL=tracker-config-4DaKVTfc.js.map
@@ -1,5 +1,5 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Fr as init_errors, Gn as init_projects, In as getIssuePrefix, Zn as loadProjectsConfigSync, gr as init_issue_id, hr as extractPrefixSync, mr as extractNumberSync, vr as parseIssueIdSync } from "./config-yaml-CxdwhAIA.js";
2
+ import { $t as getIssuePrefix, Fn as parseIssueIdSync, Mn as extractPrefixSync, Nn as init_issue_id, Vr as init_errors, cn as init_projects, jn as extractNumberSync, mn as loadProjectsConfigSync } from "./config-yaml-BSCqwmX0.js";
3
3
  import "effect";
4
4
  import { existsSync, readFileSync } from "fs";
5
5
  import { join } from "path";
@@ -120,4 +120,4 @@ var init_tracker_utils = __esmMin((() => {
120
120
  //#endregion
121
121
  export { resolveGitHubIssueSync as n, resolveTrackerTypeSync as r, init_tracker_utils as t };
122
122
 
123
- //# sourceMappingURL=tracker-utils-DZZq_C0R.js.map
123
+ //# sourceMappingURL=tracker-utils-BDeAXC-q.js.map
@@ -69,4 +69,4 @@ var init_traefik_connect = __esmMin((() => {
69
69
  //#endregion
70
70
  export { reconcileTraefikNetworks as n, init_traefik_connect as t };
71
71
 
72
- //# sourceMappingURL=traefik-connect-GHomyBaD.js.map
72
+ //# sourceMappingURL=traefik-connect-CC5FyxYj.js.map
@@ -1,3 +1,3 @@
1
- import { n as init_tunnel, r as removeTunnelIngress } from "./tunnel-Bdyb-sNq.js";
1
+ import { n as init_tunnel, r as removeTunnelIngress } from "./tunnel-CPf5M-Pc.js";
2
2
  init_tunnel();
3
3
  export { removeTunnelIngress };