@overdeck/desktop 0.49.1 → 0.49.2

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 (497) hide show
  1. package/package.json +1 -1
  2. package/server/{acceptance-criteria-Crw-xSJ3.js → acceptance-criteria-CHtDkHEL.js} +2 -2
  3. package/server/{active-dashboard-bundle-CLwfD-Om.js → active-dashboard-bundle-Byh6sP-q.js} +2 -2
  4. package/server/{activity-logger-BAVLrkR7.js → activity-logger-BWZhVphb.js} +22 -4
  5. package/server/activity-logger-Ck8qoluj.js +3 -0
  6. package/server/{advancing-selfheal-BQiJ7mIH.js → advancing-selfheal-65W4yUQi.js} +6 -6
  7. package/server/{agent-gc-5E0lgxI1.js → agent-gc-BNUudFnt.js} +10 -10
  8. package/server/agent-idle-ONBssBN_.js +745 -0
  9. package/server/{agent-state-Bb3UUxQm.js → agent-state-BJhGIJZe.js} +421 -135
  10. package/server/agent-state-CM8iVw5B.js +3 -0
  11. package/server/{agent-state-service-BFbttwRA.js → agent-state-service-CiIuwzIs.js} +5 -5
  12. package/server/{agent-state-service-keg-x1bT.js → agent-state-service-CzHfoqKQ.js} +1 -1
  13. package/server/agents-DpCuoF65.js +3 -0
  14. package/server/{agents-CqQJW75N.js → agents-jXgqpHca.js} +8 -8
  15. package/server/archive-planning-BW4MKNI7.js +2 -0
  16. package/server/{archive-planning-BwEhu9Oq.js → archive-planning-CGkU6UeL.js} +20 -135
  17. package/server/{artifact-index-jobs-C6Lg2rKm.js → artifact-index-jobs-Ck4NRRkY.js} +3 -3
  18. package/server/{assemble-DyTp2gSB.js → assemble-CyvEBmmq.js} +28 -9
  19. package/server/{auto-spawn-consent-BDfe4qz0.js → auto-spawn-consent-Dc4mtM-B.js} +8 -7
  20. package/server/{backlog-auto-trigger-DuOGpdDW.js → backlog-auto-trigger-CCEpr4YT.js} +3 -3
  21. package/server/{behavior-Bitko0mD.js → behavior-BiCQzqyT.js} +3 -3
  22. package/server/{bridge-pool-patrol-DiHEd13O.js → bridge-pool-patrol-Ce8rNPym.js} +2 -2
  23. package/server/{briefing-freshness-CDJcmHHZ.js → briefing-freshness-e_OEYZEe.js} +2 -2
  24. package/server/{build-info-DTX8JwVP.js → build-info-BRw4QlYO.js} +3 -3
  25. package/server/build-info-Bj2vQEMh.js +2 -0
  26. package/server/{checkpoint-manager-CKg1tn34.js → checkpoint-manager-CKr42Usw.js} +1 -1
  27. package/server/{checkpoint-manager-BlOOdzLF.js → checkpoint-manager-DOwRGFff.js} +26 -9
  28. package/server/checkpoint-worker.js +1 -1
  29. package/server/{checkpoints-DRALkfDS.js → checkpoints-Cb6CWT4S.js} +1 -1
  30. package/server/{checkpoints-BGfl0cHM.js → checkpoints-Cszp_0Np.js} +2 -2
  31. package/server/{claude-hooks-provision-B_tv3wzE.js → claude-hooks-provision-C5JHpxTS.js} +1 -1
  32. package/server/{claude-hooks-provision-BlGv6twJ.js → claude-hooks-provision-Cer2eFfj.js} +2 -2
  33. package/server/{claude-permissions-aHgDcZi5.js → claude-permissions-Bc5kjX1q.js} +2 -2
  34. package/server/{claude-settings-overlay-CYOvFE3A.js → claude-settings-overlay-C7rWsnya.js} +1 -1
  35. package/server/{claude-settings-overlay-T2LWLteV.js → claude-settings-overlay-m-VVZej1.js} +2 -2
  36. package/server/cli-BRuzUT_I.js +2 -0
  37. package/server/{cli-Do8UpLoI.js → cli-BmczsfD6.js} +11 -11
  38. package/server/{cliproxy-CX6jHRDP.js → cliproxy-BpYpkogS.js} +52 -17
  39. package/server/cliproxy-_yUU0HRY.js +3 -0
  40. package/server/{close-issue-J0_eWYT1.js → close-issue-CxvRD0UI.js} +5 -5
  41. package/server/{closed-issue-reaper-bFppuk6F.js → closed-issue-reaper-nMLRi5de.js} +13 -12
  42. package/server/{closed-issue-reaper-Cl2h9AfT.js → closed-issue-reaper-omOcUDBl.js} +1 -1
  43. package/server/{codex-icapA4om.js → codex-DZhFfcWu.js} +1 -1
  44. package/server/{codex-OOea7lXs.js → codex-KaSKE-R3.js} +16 -10
  45. package/server/{compaction-continuation-D5voR1ME.js → compaction-continuation-Bjfi70G-.js} +3 -3
  46. package/server/{config-Cjleh3_U.js → config-CH1AqqIQ.js} +1 -1
  47. package/server/{config-DC75T4Mr.js → config-Doq_tF-f.js} +2 -2
  48. package/server/{config-tucKBCCc.js → config-ZGjvuR6J.js} +2 -2
  49. package/server/{config-yaml-BwOEANMr.js → config-yaml-D9nfpEx1.js} +33 -8
  50. package/server/{conflict-gate-DlpWCMd7.js → conflict-gate-D4XCtrm2.js} +1 -1
  51. package/server/{conflict-gate-D2L1kZeL.js → conflict-gate-DcUTY4Gb.js} +4 -4
  52. package/server/{context-layers-CSPGc2Hb.js → context-layers-BBTKP-Y4.js} +3 -3
  53. package/server/context-layers-BGj2Y9l3.js +4 -0
  54. package/server/{continue-U3Af0jUq.js → continue-i7Revg8D.js} +3 -3
  55. package/server/{control-settings-5k6ixdFW.js → control-settings-BMoDHY1G.js} +6 -6
  56. package/server/{conversation-compaction-CSpVpxN6.js → conversation-compaction-D4VOmF7p.js} +8 -8
  57. package/server/{conversation-compaction-Ciit9O6k.js → conversation-compaction-DzIjYMfg.js} +1 -1
  58. package/server/{conversation-service-BxrB5lUT.js → conversation-service-CzZUJFEx.js} +1 -1
  59. package/server/{conversation-service-BteE4ELK.js → conversation-service-tQCIbBVZ.js} +6 -6
  60. package/server/{conversations-DhwxsOru.js → conversations-C75EFFjf.js} +12 -7
  61. package/server/conversations-bFDaD5YN.js +3 -0
  62. package/server/{cost-Bnf9NUC5.js → cost-BCWEkvro.js} +3 -3
  63. package/server/{cost-CQKI6OCu.js → cost-CiIwxH1D.js} +2 -2
  64. package/server/{cost-sync-B-ADeXKY.js → cost-sync-DOkdE_yB.js} +3 -3
  65. package/server/{dag-DI9LaK_q.js → dag-BPc74hwj.js} +6 -19
  66. package/server/{dangerous-git-ops-akhA3iyF.js → dangerous-git-ops-By9iguTP.js} +1 -1
  67. package/server/dashboard-db-worker.js +7 -7
  68. package/server/{deacon-TPYssFYt.js → deacon-B24dNzr8.js} +1774 -171
  69. package/server/deacon-CzSZMtb-.js +4 -0
  70. package/server/{deacon-canonical-state-DFYymrDw.js → deacon-canonical-state-CkvxRPck.js} +3 -3
  71. package/server/{deacon-event-client-Te5v10-b.js → deacon-event-client-BYIQBu0T.js} +1 -1
  72. package/server/{deacon-event-client-BKOL4AcL.js → deacon-event-client-Do6Z2gKl.js} +2 -2
  73. package/server/{deacon-nudge-log-BtlTWgWu.js → deacon-nudge-log-CzM9JA9t.js} +1 -1
  74. package/server/{deacon-pending-lifecycle-DVHjOLje.js → deacon-pending-lifecycle-BObEdT-L.js} +3 -3
  75. package/server/deacon.js +11 -11
  76. package/server/dead-end-trip-6V_CwveT.js +2 -0
  77. package/server/{dead-end-trip-P0IF1O0E.js → dead-end-trip-CnVmjnya.js} +3 -3
  78. package/server/delivery-gyce0vQ7.js +3 -0
  79. package/server/{deploy-patrol-BXjlvoV3.js → deploy-patrol-CEwwEYDM.js} +8 -8
  80. package/server/deploy-queue-CjLErpgw.js +2 -0
  81. package/server/{deploy-queue-o7shYg1j.js → deploy-queue-r96ojDI3.js} +2 -2
  82. package/server/{deploy-window-CNT6fOff.js → deploy-window-D_3hhfxt.js} +4 -4
  83. package/server/{deploy-window-BMk5_oX6.js → deploy-window-DeJK8mTK.js} +1 -1
  84. package/server/{dev-supervisor-SR1CLOAK.js → dev-supervisor-DZWwpENk.js} +2 -2
  85. package/server/{devcontainer-renderer-enMmNDFa.js → devcontainer-renderer-d-9dCV_2.js} +3 -3
  86. package/server/{dist-CPTO_zMR.js → dist-DsLAsFSh.js} +1 -1
  87. package/server/dist-fCA6y2bH.js +3 -0
  88. package/server/{docker-B7qUZptz.js → docker-B2mUBzGk.js} +3 -3
  89. package/server/{docker-KR3zSFKY.js → docker-CRPHBylA.js} +1 -1
  90. package/server/{dod-gK835UMf.js → dod-DWtilRLx.js} +1 -1
  91. package/server/{done-preflight-CksRvh49.js → done-preflight-BDVdWed5.js} +1 -1
  92. package/server/{done-preflight-Bk8aExAL.js → done-preflight-D4ukUf-S.js} +5 -5
  93. package/server/{driver-CmsY2RLl.js → driver-BtcFz-qu.js} +14 -3
  94. package/server/{durable-review-pipeline-DgYHucN2.js → durable-review-pipeline-B3OS2_He.js} +11 -2
  95. package/server/durable-review-pipeline-CaCbEJSt.js +3 -0
  96. package/server/{ensure-devcontainer-ojerEqQg.js → ensure-devcontainer-BUeBRjmm.js} +4 -4
  97. package/server/{ensure-devcontainer-BQ4YizSH.js → ensure-devcontainer-rGSh0JHK.js} +1 -1
  98. package/server/{esm-shims-1htPASWs.js → esm-shims-oAaKIa-a.js} +1 -1
  99. package/server/{event-store-D7qcJXuZ.js → event-store-BCSgMubf.js} +5 -5
  100. package/server/{event-store-BgEjNsvk.js → event-store-Db4w4YIY.js} +1 -1
  101. package/server/{event-store-provider-BKvk2rDj.js → event-store-provider-DlSQND3V.js} +1 -1
  102. package/server/{events-BIKGJZOT.js → events-B6zioJA_.js} +3 -3
  103. package/server/{dist-src-BM9eudEd.js → factory-BrdqXBeK.js} +714 -2
  104. package/server/{feature-registry-storage-ewNSIVsQ.js → feature-registry-storage-zh3ZXW6f.js} +3 -3
  105. package/server/{features-CGopJXdU.js → features-BGntOWdy.js} +2 -2
  106. package/server/{feedback-stuck-retirement-B8-fX7NA.js → feedback-stuck-retirement-DpA5u1kt.js} +2 -2
  107. package/server/{feedback-target-Ci6N5p4G.js → feedback-target-D7GxdUYG.js} +10 -10
  108. package/server/{feedback-target-CkyLYohm.js → feedback-target-Ddqk93NF.js} +1 -1
  109. package/server/{feedback-writer-D4ULO4qG.js → feedback-writer-C1gCLFmp.js} +5 -5
  110. package/server/{feedback-writer-DfuVjvH0.js → feedback-writer-CH2846DP.js} +1 -1
  111. package/server/{flywheel-C7yek87O.js → flywheel-CjW2L7BS.js} +79 -29
  112. package/server/{flywheel-DXI_WITn.js → flywheel-HJt7QdWP.js} +1 -1
  113. package/server/{flywheel-merge-order-C5m5bYBc.js → flywheel-merge-order-4fNRN2F2.js} +1 -1
  114. package/server/{flywheel-merge-order-CXfU4M6l.js → flywheel-merge-order-D_yyAlND.js} +7 -7
  115. package/server/{flywheel-BwYPDlhK.js → flywheel-v1cCOBx-.js} +14 -14
  116. package/server/{forge-DYX9sKzG.js → forge-RVTCK_5X.js} +2 -2
  117. package/server/forge-bvak6vXJ.js +2 -0
  118. package/server/{from-DAdMxC29.js → from-BnLgKYvw.js} +1 -1
  119. package/server/{fs-lock-cw25uO_E.js → fs-lock-C7J-ugIf.js} +2 -2
  120. package/server/{fts-operations-D_rzLxX5.js → fts-operations-CU0B5WUx.js} +3 -3
  121. package/server/git-info-BSrI9owC.js +148 -0
  122. package/server/{git-utils-Y0zG25ez.js → git-utils-CsKV0Dis.js} +1 -1
  123. package/server/{git-utils-DV4B9TRl.js → git-utils-DW8-jIUJ.js} +4 -4
  124. package/server/{github-app-4UX8VIr8.js → github-app-7ywLhuZO.js} +2 -2
  125. package/server/{github-app-C33lDk9Z.js → github-app-Oi5hdn1n.js} +1 -1
  126. package/server/{github-client-nPj5ckZO.js → github-client-Cy0fSj1a.js} +1 -1
  127. package/server/{github-client-DkJVR908.js → github-client-DAbuXLuk.js} +3 -3
  128. package/server/{github-pr-lookup-C9Vokb0W.js → github-pr-lookup-Dhh3ec1V.js} +2 -2
  129. package/server/{harness-binary-BgXYDo2Z.js → harness-binary-tMmgJfC1.js} +2 -2
  130. package/server/{harness-resolve-1NZcVx7n.js → harness-resolve-DusNpVEe.js} +4 -4
  131. package/server/{health-events-jMfxrElt.js → health-events-BYDZ9n2i.js} +1 -1
  132. package/server/{health-events-DlX_FVAB.js → health-events-DNw9Mzw9.js} +2 -2
  133. package/server/{hooks-W3REcb3h.js → hooks-B4wj32l2.js} +1 -1
  134. package/server/{hooks-NQ19vvlB.js → hooks-BjBjxqNh.js} +2 -2
  135. package/server/{hume-BFkid2PO.js → hume-BP9YbxaE.js} +2 -2
  136. package/server/hume-TYTb6fDU.js +3 -0
  137. package/server/{identity-Bwh6VGeL.js → identity-C23uY8dZ.js} +3 -3
  138. package/server/{idle-stack-reaper-BeU_KxWx.js → idle-stack-reaper-BSxb1bln.js} +4 -4
  139. package/server/{idle-stack-reaper-CHtCNpvd.js → idle-stack-reaper-Bw0rU9GC.js} +1 -1
  140. package/server/{in-flight-guard-pcwXKLGz.js → in-flight-guard-DuxabAHT.js} +1 -1
  141. package/server/{infra-KTp9KV9u.js → infra-CHIvOb9q.js} +30 -7
  142. package/server/{injection-67YyU6SC.js → injection-BYUt8ml1.js} +8 -8
  143. package/server/{injection-BxbZKPDh.js → injection-BviePcm3.js} +1 -1
  144. package/server/inspect-agent-JFEaYTRa.js +2 -0
  145. package/server/{inspect-agent-VHSihlb7.js → inspect-agent-sV_19NxZ.js} +12 -12
  146. package/server/{internal-token-B-z-sGBH.js → internal-token-BOtIRJU7.js} +1 -1
  147. package/server/{internal-token-zY75jrRJ.js → internal-token-DoVzb4b7.js} +2 -2
  148. package/server/{io-DfvO2xyh.js → io-DKrWd3gX.js} +5 -5
  149. package/server/{issue-closed-dvEWKO7Q.js → issue-closed-6RQsAjDX.js} +7 -7
  150. package/server/{issue-lifecycle-3N8XF7lP.js → issue-lifecycle-D9nLErvS.js} +206 -29
  151. package/server/{issue-lifecycle-BI6jAfp8.js → issue-lifecycle-DOPVv7xz.js} +1 -1
  152. package/server/{issue-service-singleton-BN_2MXp4.js → issue-service-singleton-B2xy-IS9.js} +124 -11
  153. package/server/{issue-service-singleton-CL6hESX2.js → issue-service-singleton-CvgNAWqK.js} +1 -1
  154. package/server/issue-title-fallback-DTSCQVu0.js +120 -0
  155. package/server/{issues-CkvUoAnq.js → issues-e_Ck1Ln2.js} +2 -2
  156. package/server/{jsonl-parser-CrEb2PWr.js → jsonl-parser-DqxVCZ1k.js} +3 -3
  157. package/server/jsonl-resolver-07OS3qOr.js +324 -0
  158. package/server/{kimi-code-C26gmGxM.js → kimi-code-BjtAHIz1.js} +14 -12
  159. package/server/{kimi-code-DoMoGqIu.js → kimi-code-vtXl2DR5.js} +1 -1
  160. package/server/{kimi-parser-Dmhy3UlR.js → kimi-parser-B1lgy2Vt.js} +2 -2
  161. package/server/{label-cleanup-X2lWfghH.js → label-cleanup-D2zUMasf.js} +3 -3
  162. package/server/{lifecycle-Bg44O-9x.js → lifecycle-0NOEzomy.js} +2 -2
  163. package/server/{lifecycle-B0rL38D3.js → lifecycle-DaCovZwn.js} +6 -6
  164. package/server/{lifecycle-io-CCBpRv5m.js → lifecycle-io-6WL46dsB.js} +5 -5
  165. package/server/{lifecycle-io-DQDU0apV.js → lifecycle-io-BBMTaP7S.js} +1 -1
  166. package/server/{linear-client-B0cIkTs4.js → linear-client-7fQThJTc.js} +3 -3
  167. package/server/{linear-client-6V2E-DSa.js → linear-client-BTGApNLo.js} +1 -1
  168. package/server/{linear-mcp-auth-LCo9AWUd.js → linear-mcp-auth-B8pYRsiU.js} +1 -1
  169. package/server/{linear-mcp-auth-Dsu9Io9r.js → linear-mcp-auth-Nk5s3L9M.js} +5 -5
  170. package/server/memory-fts-worker.js +1 -1
  171. package/server/{memory-governor-A4O6vI9d.js → memory-governor-Cqvbusr4.js} +14 -14
  172. package/server/{memory-pressure-patrol-BWlWywmA.js → memory-pressure-patrol-DPb8foam.js} +5 -5
  173. package/server/{merge-BGWcBxku.js → merge-BB_bjJ9a.js} +1 -1
  174. package/server/{merge-vz80RvSE.js → merge-FZ78_cEz.js} +3 -3
  175. package/server/{merge-agent-GWhmnxFk.js → merge-agent-B3jRrlS1.js} +37 -33
  176. package/server/{merge-agent-BRSz26Oh.js → merge-agent-BuoC_PRZ.js} +2 -2
  177. package/server/{merge-batch-CFMEtTxv.js → merge-batch-B8bVjFWS.js} +1 -1
  178. package/server/{merge-completeness-CP347umA.js → merge-completeness-DQt7Qa7i.js} +4 -4
  179. package/server/{merge-completeness-7ajHAIR-.js → merge-completeness-DkdabVch.js} +1 -1
  180. package/server/merge-ops-DabXHp2i.js +2 -0
  181. package/server/merge-rebase-CXq0qsgR.js +2 -0
  182. package/server/{merge-rebase-C5htyEEH.js → merge-rebase-qq40s91P.js} +2 -2
  183. package/server/{merge-set-DsGW8fmc.js → merge-set-BTNYvxM3.js} +1 -1
  184. package/server/{merge-set-eiE2nC6C.js → merge-set-BmRRflt0.js} +4 -4
  185. package/server/{merge-sync-CM2-myXu.js → merge-sync-0m2Q087q.js} +1 -1
  186. package/server/{merge-sync-Ct0-cxMX.js → merge-sync-CJpOa0cZ.js} +2 -2
  187. package/server/{merge-train-deps-LXHGK61n.js → merge-train-deps-CH5Mr3vN.js} +4 -4
  188. package/server/{merge-train-BOu3fN7O.js → merge-train-iwKqjtCF.js} +4 -4
  189. package/server/{merge-verification-BRp08IzI.js → merge-verification-JJc5GC2t.js} +6 -6
  190. package/server/{merged-docker-cleanup-worker-CwldDjHV.js → merged-docker-cleanup-worker-BOqWA373.js} +4 -4
  191. package/server/{merged-docker-cleanup-worker-C8eGn78a.js → merged-docker-cleanup-worker-CrhTdxZV.js} +1 -1
  192. package/server/messaging-nuwStbdQ.js +3 -0
  193. package/server/{multipart-parser-OAuW7824.js → multipart-parser-DxuW_rZV.js} +2 -2
  194. package/server/{no-resume-mode-MWI6pnrK.js → no-resume-mode-xuYLFhLw.js} +1 -1
  195. package/server/node_modules/.package-lock.json +11 -11
  196. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/AGENTS.md +14 -0
  197. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/CLAUDE.md +14 -0
  198. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/README.md +10 -3
  199. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/40_sql/10_basics.ts +175 -0
  200. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/40_sql/index.md +6 -0
  201. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/10_basics.ts +3 -1
  202. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/20_testing.ts +100 -0
  203. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/fixtures/api/Users.ts +30 -14
  204. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/fixtures/domain/User.ts +15 -6
  205. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/fixtures/server/Authorization.ts +11 -10
  206. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/fixtures/server/Users/http.ts +41 -32
  207. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/fixtures/server/Users.ts +141 -20
  208. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/70_cli/10_basics.ts +27 -3
  209. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeChildProcessSpawner.d.ts.map +1 -1
  210. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeChildProcessSpawner.js +10 -9
  211. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeChildProcessSpawner.js.map +1 -1
  212. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeSocketServer.js +4 -4
  213. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeSocketServer.js.map +1 -1
  214. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeStream.d.ts.map +1 -1
  215. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeStream.js +10 -4
  216. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeStream.js.map +1 -1
  217. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/internal/nodeChildProcessSpawner.d.ts +4 -0
  218. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/internal/nodeChildProcessSpawner.d.ts.map +1 -0
  219. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/internal/nodeChildProcessSpawner.js +10 -0
  220. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/internal/nodeChildProcessSpawner.js.map +1 -0
  221. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/package.json +4 -4
  222. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/NodeChildProcessSpawner.ts +16 -11
  223. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/NodeSocketServer.ts +4 -4
  224. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/NodeStream.ts +10 -4
  225. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/internal/nodeChildProcessSpawner.ts +16 -0
  226. package/server/node_modules/ansi-regex/index.js +3 -2
  227. package/server/node_modules/ansi-regex/package.json +1 -1
  228. package/server/node_modules/gaxios/build/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  229. package/server/node_modules/gaxios/build/esm/tsconfig.tsbuildinfo +1 -1
  230. package/server/node_modules/gaxios/package.json +3 -3
  231. package/server/{orphan-proposed-reconciler-cV3URUqk.js → orphan-proposed-reconciler-Dmk0kO_p.js} +24 -23
  232. package/server/{orphan-proposed-reconciler-BAE5AZ_e.js → orphan-proposed-reconciler-gf4TxfZb.js} +2 -2
  233. package/server/package-lock.json +12 -12
  234. package/server/package.json +1 -1
  235. package/server/{pan-dir-DDd91kMb.js → pan-dir-BMda7tQj.js} +5 -5
  236. package/server/{deacon-merge-BOGFEV8_.js → parked-residue-BiHb8cD7.js} +150 -35
  237. package/server/{paths-CRLnDgcI.js → paths-DEe9j-kw.js} +2 -2
  238. package/server/{pending-lifecycle-claim-CYgMiDAP.js → pending-lifecycle-claim-J5uIIJPu.js} +2 -2
  239. package/server/{pickup-BjJsSX12.js → pickup-D1UbSDPd.js} +1 -1
  240. package/server/{pipeline-agent-reader-BLc43dVJ.js → pipeline-agent-reader-D-6okryb.js} +5 -5
  241. package/server/{pipeline-membership-5qlRz5Qg.js → pipeline-membership-CCbgBzNC.js} +1 -1
  242. package/server/{pipeline-membership-BHZp_ShY.js → pipeline-membership-PGX3Pe8V.js} +1 -1
  243. package/server/{pipeline-membership-gather-CGFY1v-y.js → pipeline-membership-gather-BK4dzh0X.js} +17 -12
  244. package/server/{pipeline-membership-gather-WhRc1yke.js → pipeline-membership-gather-BRhU7XPx.js} +1 -1
  245. package/server/{pipeline-notifier-BmsLWM_2.js → pipeline-notifier-BNAV9kpa.js} +2 -2
  246. package/server/{pipeline-notifier-C4fZ2ito.js → pipeline-notifier-DvHLaXKb.js} +1 -1
  247. package/server/{post-merge-lifecycle-worker-KK1RTKRE.js → post-merge-lifecycle-worker-DAWgzXQA.js} +3 -3
  248. package/server/{post-merge-state-_Lj3LDLh.js → post-merge-state-DC2_0t12.js} +4 -4
  249. package/server/prd-locations-BbAvqQmT.js +124 -0
  250. package/server/{project-pipelines-CCkebHOu.js → project-pipelines-By_5WcT4.js} +2 -2
  251. package/server/{project-repos-B4MK48j4.js → project-repos--QeCg7yQ.js} +29 -3
  252. package/server/project-repos-3bI6t4fO.js +3 -0
  253. package/server/project-resource-refresh-queue-BaZC79S3.js +2 -0
  254. package/server/project-resource-refresh-queue-x-K9mvpP.js +865 -0
  255. package/server/{projects-DvPEAP18.js → projects-LftaVK99.js} +1 -1
  256. package/server/{prompts-BiS5I2tZ.js → prompts-BotGu-6W.js} +2 -2
  257. package/server/{providers-DrfK0Ip8.js → providers-BL1I66sM.js} +7 -7
  258. package/server/providers-Dqgz3MY5.js +3 -0
  259. package/server/public/assets/{chunk-BO2N2NFS-GtVe_o56.js → chunk-BO2N2NFS-D5Fz5jND.js} +4 -4
  260. package/server/public/assets/{diagram-OG6HWLK6-BvhcYYHc.js → diagram-OG6HWLK6-Eux0gWFq.js} +1 -1
  261. package/server/public/assets/{dist-D0ryefak.js → dist-C3zShwhA.js} +1 -1
  262. package/server/public/assets/{dist-CSmUXazd.js → dist-D-JX_u7m.js} +3 -3
  263. package/server/public/assets/{ganttDiagram-6RSMTGT7-BXA51DzM.js → ganttDiagram-6RSMTGT7-UH3aweia.js} +1 -1
  264. package/server/public/assets/{highlighted-body-OFNGDK62-mlV4EpWt.js → highlighted-body-OFNGDK62-ccIQ-WXS.js} +1 -1
  265. package/server/public/assets/index-2wV4ipy_.css +1 -0
  266. package/server/public/assets/index-BTVcdPve.js +860 -0
  267. package/server/public/assets/{linear-BPE7oswm.js → linear-Cnnu4YQy.js} +1 -1
  268. package/server/public/assets/mermaid-GHXKKRXX-Bjto8iJh.js +1 -0
  269. package/server/public/assets/{pieDiagram-4H26LBE5-BguGGV3S.js → pieDiagram-4H26LBE5-BD8-Tye6.js} +1 -1
  270. package/server/public/assets/{prod-aKDYUrXQ.js → prod-Ca6aKMts.js} +4 -4
  271. package/server/public/assets/{quadrantDiagram-W4KKPZXB-Bx3i4B6H.js → quadrantDiagram-W4KKPZXB-BmSrVyFD.js} +1 -1
  272. package/server/public/assets/{sankeyDiagram-5OEKKPKP-B5vuLjA4.js → sankeyDiagram-5OEKKPKP-CEGy8Das.js} +1 -1
  273. package/server/public/assets/{xychartDiagram-2RQKCTM6-HPlpkqsN.js → xychartDiagram-2RQKCTM6-VnQ8iY8s.js} +1 -1
  274. package/server/public/index.html +2 -2
  275. package/server/{pull-requests-BcHIsFJv.js → pull-requests-Cp_FDT8-.js} +3 -3
  276. package/server/pull-requests-jVGcVq5G.js +2 -0
  277. package/server/rally-CxhVgIQ6.js +3 -0
  278. package/server/{rally-api-ShZ4kvn0.js → rally-api-CqAIJ8RX.js} +2 -2
  279. package/server/{rally-api-u_vkr5c_.js → rally-api-Ij1Zt0NI.js} +1 -1
  280. package/server/{rally-B1OMtzch.js → rally-bQpBzUNf.js} +3 -3
  281. package/server/{rally-client-DgZvUZqX.js → rally-client-CN5vh4Ac.js} +1 -1
  282. package/server/{rally-client-D6Feq1Ka.js → rally-client-qKbCNRVW.js} +5 -5
  283. package/server/{reap-terminal-sessions-CRfiXLY0.js → reap-terminal-sessions-BaDSNR-k.js} +2 -2
  284. package/server/{reap-terminal-sessions-D7f3zSE9.js → reap-terminal-sessions-DgEIKMhH.js} +2 -2
  285. package/server/{rebuild-stack-DKxOnkpE.js → rebuild-stack-BNOMVh7C.js} +7 -7
  286. package/server/{rebuild-stack-CCwKHZb6.js → rebuild-stack-DrMyA_mA.js} +2 -2
  287. package/server/{reconstruct-cache-BP8UIKt7.js → reconstruct-cache-mxIYCnqs.js} +7 -7
  288. package/server/{record-By-wp6pg.js → record-Ug18Cp4V.js} +1 -1
  289. package/server/{record-update-ByGtIlUK.js → record-update-WyhsREoH.js} +1 -1
  290. package/server/{record-update-D23jPU6b.js → record-update-dBGxL9OC.js} +8 -6
  291. package/server/{recovery-trip-C4dTl8DO.js → recovery-trip-BKLrL6NX.js} +43 -10
  292. package/server/{recovery-trip-qloOYOFz.js → recovery-trip-wFAixKsg.js} +1 -1
  293. package/server/{release-engine-Crc0Tjx-.js → release-engine-D9gaCBn9.js} +5 -5
  294. package/server/{release-set-DDXwbIK7.js → release-set-DPHHzEGx.js} +3 -3
  295. package/server/{remote-CBpLi4Yy.js → remote-BU6ONLpv.js} +3 -3
  296. package/server/{remote-oEMfXlwT.js → remote-BUEeUic6.js} +3 -3
  297. package/server/{remote-agents-DQVGZVQ9.js → remote-agents-BVtASiOF.js} +1 -1
  298. package/server/{remote-agents-Bgtc2nOO.js → remote-agents-CSaTLi3u.js} +6 -6
  299. package/server/{remote-completion-DxUJ5HKR.js → remote-completion-CBV3b9TI.js} +13 -13
  300. package/server/{resolver-C8rooxoz.js → resolver-DvSMXty7.js} +31 -8
  301. package/server/{resolver-CuAULbLs.js → resolver-gxv97jsQ.js} +2 -2
  302. package/server/resume-DvHuF-bm.js +3 -0
  303. package/server/review-agent-DgkUPRx0.js +3 -0
  304. package/server/{review-agent-7C2w5CzU.js → review-agent-esZ0QXdY.js} +43 -55
  305. package/server/{review-artifacts-BJeEfm2r.js → review-artifacts-DGGEobLp.js} +6 -6
  306. package/server/{review-convoy-liveness-DfF9eXjI.js → review-convoy-liveness-DmO8dIBH.js} +20 -11
  307. package/server/{review-run-recovery-7BKt2Es0.js → review-run-recovery-Ct0q7FkE.js} +3 -3
  308. package/server/{review-run-recovery-ZjuDTNhZ.js → review-run-recovery-DHiiw7d8.js} +1 -1
  309. package/server/{review-status-CUnjjOUu.js → review-status-C_kQeeX0.js} +1 -1
  310. package/server/{review-status-emit-Cg4tOb8U.js → review-status-emit-BZz1Y_22.js} +3 -3
  311. package/server/{review-status-enrichment-D-rQshu6.js → review-status-enrichment-BWH0XW_m.js} +3 -3
  312. package/server/{review-status-source-DSn0glLa.js → review-status-source-D2PCWS6E.js} +1 -1
  313. package/server/{review-status-source-Ct912fv_.js → review-status-source-Jq0BXmn3.js} +1 -1
  314. package/server/{review-status-sync-B7V_Gg51.js → review-status-sync-2C9lk85r.js} +2 -2
  315. package/server/{review-status-sync-YthpOH_q.js → review-status-sync-Bq00Loey.js} +1 -1
  316. package/server/{review-status-DBnR5t4z.js → review-status-yOGD2MuK.js} +86 -27
  317. package/server/{review-verdict-feedback-DqXTuJk8.js → review-verdict-feedback-Brjaxoda.js} +1 -1
  318. package/server/{review-verdict-feedback-C-dBon_-.js → review-verdict-feedback-CE_tr2iQ.js} +8 -8
  319. package/server/{review-verdict-writer-jldSh3Bm.js → review-verdict-writer-CD-4kDVx.js} +1 -1
  320. package/server/{review-verdict-writer-CKaJWp75.js → review-verdict-writer-Ca2V7QSY.js} +7 -7
  321. package/server/{rollup-DZwH4CLs.js → rollup--g9ik1XQ.js} +1 -1
  322. package/server/{rollup-QCwYcBdP.js → rollup-B6g9Nr6L.js} +8 -8
  323. package/server/{scanner-2aHeLC3W.js → scanner-YxIv-fG1.js} +8 -8
  324. package/server/{search-DwHYaj66.js → search-DqMN4__-.js} +2 -2
  325. package/server/{secret-redaction-B5G1xZ3k.js → secret-redaction-DLZ-VqHq.js} +1 -1
  326. package/server/{sequence-io-POKWdusG.js → sequence-io--b3_PsWq.js} +4 -4
  327. package/server/{sequencer-agent-DS00KHVm.js → sequencer-agent-CqouKVZG.js} +6 -6
  328. package/server/server.js +1115 -1269
  329. package/server/{service-BLb_CyPL.js → service-CEp-3iow.js} +64 -63
  330. package/server/{session-fork-DcTzVwex.js → session-fork-GtoeCh2H.js} +2 -2
  331. package/server/{settings-Clw8UVNs.js → settings-CLQcdkoD.js} +2 -2
  332. package/server/{settings-B9-H2K_E.js → settings-Ch2pCVtt.js} +3 -3
  333. package/server/settings-DhtPDmmI.js +2 -0
  334. package/server/{shadow-engineering-C6oO_PiR.js → shadow-engineering-BxiFrIKv.js} +3 -3
  335. package/server/{shadow-state-CEGrrECe.js → shadow-state-CSA1vtxr.js} +2 -2
  336. package/server/{shadow-state-e7250VUx.js → shadow-state-nGhCNXT2.js} +1 -1
  337. package/server/{shadow-utils-xFk2Wusb.js → shadow-utils-7q5QDmMj.js} +2 -2
  338. package/server/{ship-log-7BnQHuKU.js → ship-log-ie0A_SqV.js} +1 -1
  339. package/server/{ship-record-CwUX6Afo.js → ship-record-BM3oVvnL.js} +7 -7
  340. package/server/{ship-record-BgUPnpT0.js → ship-record-DHWH1hLz.js} +1 -1
  341. package/server/{ship-status-Ce3_3edi.js → ship-status-BEkddXMT.js} +2 -2
  342. package/server/{smart-compaction-BmfIi3oL.js → smart-compaction-BkzjVpWL.js} +1 -1
  343. package/server/{smart-compaction-Dy0gw1VH.js → smart-compaction-D0TE1lBD.js} +7 -7
  344. package/server/{spawn-planning-session-nH3b4Drz.js → spawn-planning-session-CkGweSCC.js} +19 -19
  345. package/server/{spawn-planning-session-CfhxRJoY.js → spawn-planning-session-s406rw1N.js} +2 -2
  346. package/server/{specialist-completion-CC1XJbTx.js → specialist-completion-CTAjwH5j.js} +1 -1
  347. package/server/{specialist-context-cHwpcXSh.js → specialist-context-CKasRfYu.js} +5 -5
  348. package/server/{specialist-handoff-logger-GqnGSYoJ.js → specialist-handoff-logger-DrjrOmmn.js} +2 -2
  349. package/server/{specialist-logs-5OTnrV91.js → specialist-logs-Du6quZ0_.js} +3 -3
  350. package/server/{specialists-xXcJHAyg.js → specialists-B-4zyE4Y.js} +1 -1
  351. package/server/{specialists-8LcQi9Np.js → specialists-CuDWiNdB.js} +21 -272
  352. package/server/{specialists-DocAK-7A.js → specialists-b0dMMjWq.js} +148 -685
  353. package/server/specialists-registry-1y6Rt_F1.js +3 -0
  354. package/server/specialists-registry-BYjs04iK.js +277 -0
  355. package/server/specialists-x-kPMhrL.js +4 -0
  356. package/server/specs-IYsFlM-L.js +3 -0
  357. package/server/{src-DudQNYVw.js → src-CY2Wl8IX.js} +337 -6
  358. package/server/{src-C2TAxwki.js → src-CZsPs61V.js} +6 -6
  359. package/server/{src-DUVvEA8Q.js → src-DeQwpuh6.js} +3 -3
  360. package/server/{stack-health-DKT4ySnA.js → stack-health-BQFSJc0l.js} +3 -3
  361. package/server/{stack-health-CbyiYS9H.js → stack-health-ypIKtkbE.js} +1 -1
  362. package/server/{stale-task-claims-PzFee70R.js → stale-task-claims-C2e1zdMT.js} +5 -5
  363. package/server/{staleness-BjOAq9-d.js → staleness-CRDK6LFG.js} +1 -1
  364. package/server/{staleness-D8UTEXV5.js → staleness-Fzx_3_Hr.js} +1 -1
  365. package/server/{stall-sweeper-DOyIfeLR.js → stall-sweeper-QNk4h9m6.js} +8 -8
  366. package/server/{state-home-DhAZlk5k.js → state-home-DdG8erBI.js} +2 -2
  367. package/server/{state-mapping-BVSs84bO.js → state-mapping-D2yC81Vy.js} +1 -1
  368. package/server/{state-migrate-CJKEwpB0.js → state-migrate-C6H3jfHE.js} +6 -6
  369. package/server/{state-mirror-Do7pag7W.js → state-mirror-DF4Lfxm0.js} +3 -3
  370. package/server/stuck-remediation-BDa_tXgB.js +774 -0
  371. package/server/stuck-remediation-BVNd9txd.js +2 -0
  372. package/server/{substrate-bug-weights-service-BTNjHBnl.js → substrate-bug-weights-service-BbbCZEtJ.js} +3 -3
  373. package/server/{summary-fork-CZ88rhVx.js → summary-fork-BvcW6bq0.js} +113 -30
  374. package/server/{summary-fork-CvB7Oyq9.js → summary-fork-DIQmtOuV.js} +2 -2
  375. package/server/supervisor/{pane-composer-BaLLspSj.js → pane-composer-CoiVkGIt.js} +8 -1
  376. package/server/supervisor/{paths-D6XUcR_g.js → paths-DTGbtcaP.js} +8 -4
  377. package/server/supervisor/pty-supervisor.js +3 -3
  378. package/server/supervisor/{pty-token-DjjHxoCq.js → pty-token-GVqnvU3U.js} +2 -2
  379. package/server/{supervisor-D4v0WfiQ.js → supervisor-D3jC2c7A.js} +4 -4
  380. package/server/supervisor-v0cYN2Vp.js +2 -0
  381. package/server/{swarm-readiness-D8R-LWX5.js → swarm-readiness-CMWAQuWM.js} +3 -3
  382. package/server/{synthesis-verdict-B6wvLGcA.js → synthesis-verdict-C-pJOPsn.js} +1 -1
  383. package/server/{synthesis-verdict-N5Z11pg7.js → synthesis-verdict-DVlrLF9A.js} +2 -2
  384. package/server/{system-prerequisites-BbGZ_WHF.js → system-prerequisites-QKtIYXI2.js} +2 -2
  385. package/server/{teardown-workspace-CYend-KY.js → teardown-workspace-cJea1OLo.js} +16 -16
  386. package/server/{test-agent-queue-BUtWhNcc.js → test-agent-queue-C5DI_gWX.js} +6 -6
  387. package/server/{test-verdict-BWm3hgDj.js → test-verdict-C7kmd2_Y.js} +1 -1
  388. package/server/{test-verdict-BWtRmdiR.js → test-verdict-DUbDHqeD.js} +2 -2
  389. package/server/{tldr-daemon-CneJ24eL.js → tldr-daemon-BNQHwblU.js} +1 -1
  390. package/server/{tldr-daemon-CMVBT4kT.js → tldr-daemon-CO08YlfQ.js} +2 -2
  391. package/server/tmux-B8zsqD_6.js +4 -0
  392. package/server/{tmux-BqXzRuaH.js → tmux-DWEc4Ld9.js} +91 -19
  393. package/server/{token-CO3INKbh.js → token-Bez-qCB2.js} +2 -2
  394. package/server/{token-util-DyJJyX_B.js → token-util-Crcay9j_.js} +1 -1
  395. package/server/token-util-DfUS3Lpp.js +3 -0
  396. package/server/{tracker-config-DVzhaUxO.js → tracker-config-CJzPhSHv.js} +2 -2
  397. package/server/{tracker-utils-xnVJVrrO.js → tracker-utils-DJAOAuMN.js} +2 -2
  398. package/server/{traefik-connect-A5k54mCv.js → traefik-connect-D3H5I6b9.js} +1 -1
  399. package/server/{tunnel-DauSR-rs.js → tunnel-BSdKnW0U.js} +1 -1
  400. package/server/{tunnel-CwOnS-PB.js → tunnel-Cr3ctqxp.js} +3 -3
  401. package/server/{typed-errors-B-gfU2RB.js → typed-errors-CZ3GFBvo.js} +1 -1
  402. package/server/{typed-errors-DzC4zXbI.js → typed-errors-DXqf3RnP.js} +1 -1
  403. package/server/{types-DjpLVpsj.js → types-fzBp9cYi.js} +1 -1
  404. package/server/{types-DbxY2QB6.js → types-pLpbsNto.js} +1 -1
  405. package/server/{uat-failure-feedback-BVqsWlrr.js → uat-failure-feedback-IZQ-J8jt.js} +5 -5
  406. package/server/{uat-promote-verification-DmG097QS.js → uat-promote-verification-DXApKcc2.js} +5 -5
  407. package/server/{uat-train-COSy-vEX.js → uat-train-CycEzpbE.js} +1 -1
  408. package/server/{uat-train-DVUNW03P.js → uat-train-IIZlz7r3.js} +0 -0
  409. package/server/{validate-Dvv83iBx.js → validate-Ur4xH5bN.js} +3 -3
  410. package/server/{validation-BdCjzWLN.js → validation-CHovCoTT.js} +1 -1
  411. package/server/{validation-DlHafKzu.js → validation-Dr6V4PXx.js} +9 -6
  412. package/server/{verification-artifact-CaSbxUVg.js → verification-artifact-D3viYe_t.js} +1 -1
  413. package/server/{verification-artifact-0Zku8N-W.js → verification-artifact-k5Ftpg0c.js} +1 -1
  414. package/server/{verification-runner-C6wdZda2.js → verification-runner-BuqGwm2t.js} +1 -1
  415. package/server/{verification-runner-DwP2fUEF.js → verification-runner-Dl13mmsI.js} +53 -27
  416. package/server/{vtt-parser-luerJpYT.js → vtt-parser-BSnAB-Og.js} +1 -1
  417. package/server/work-agent-prompt-CJJ4tXci.js +3 -0
  418. package/server/{work-agent-prompt--9AWNYwZ.js → work-agent-prompt-CioeOuM4.js} +14 -14
  419. package/server/{work-agent-start-BNQO65W7.js → work-agent-start-B65Gqn9N.js} +2 -2
  420. package/server/{work-agent-start-DkzseQFl.js → work-agent-start-Ct1HVh6z.js} +1 -1
  421. package/server/{workflows-BYwR2aIN.js → workflows-AgFul1xc.js} +114 -41
  422. package/server/workflows-CfHm8lVd.js +2 -0
  423. package/server/{workspace-B-QJa3Ps.js → workspace-Cu3XlMXt.js} +1 -1
  424. package/server/{workspace-iTnTycOB.js → workspace-Cy4sDd3q.js} +3 -3
  425. package/server/{workspace-anchor-drift-DTt6h2Em.js → workspace-anchor-drift-BI0Hz6zI.js} +1 -1
  426. package/server/{workspace-anchor-drift-CHiGg8iu.js → workspace-anchor-drift-CMaqvizr.js} +4 -4
  427. package/server/{workspace-config-D0CavVtz.js → workspace-config-DRYDO7Zr.js} +1 -1
  428. package/server/{workspace-manager-W1OnbvU5.js → workspace-manager-CgovxDrO.js} +17 -17
  429. package/server/{workspace-manager-5BKPV6SY.js → workspace-manager-jfkKAEuO.js} +1 -1
  430. package/server/{workspace-metadata-tbbevEmP.js → workspace-metadata-BDqXzGGK.js} +1 -1
  431. package/server/{workspace-metadata-dJhXvZGQ.js → workspace-metadata-BNzODIv6.js} +2 -2
  432. package/server/{workspaces-BlpbOPZ7.js → workspaces-BJdPqx_J.js} +131 -127
  433. package/sync-sources/dev-skills/pan-style-guide/SKILL.md +90 -15
  434. package/sync-sources/hooks/linear-mcp-auth-hook +6 -1
  435. package/sync-sources/rules/handoff-isolate-cwd.md +4 -4
  436. package/sync-sources/rules/pan-handoff-focus-limit.md +12 -5
  437. package/sync-sources/rules/ste-writing.md +17 -0
  438. package/sync-sources/rules/work-agents-via-pan.md +2 -1
  439. package/sync-sources/rules/writing-style.md +3 -2
  440. package/sync-sources/skills/{skill-creator → claude-skill-creator}/SKILL.md +1 -1
  441. package/sync-sources/skills/{skill-creator → claude-skill-creator}/scripts/init_skill.py +1 -1
  442. package/sync-sources/skills/{skill-creator → claude-skill-creator}/scripts/package_skill.py +1 -1
  443. package/sync-sources/skills/pan-gauntlet-loop/SKILL.md +182 -0
  444. package/sync-sources/skills/pan-gauntlet-loop/assets/PROMPT.template.md +92 -0
  445. package/sync-sources/skills/pan-gauntlet-loop/assets/REFERENCE-BAR.template.md +53 -0
  446. package/sync-sources/skills/pan-gauntlet-loop/assets/STYLE.template.md +41 -0
  447. package/sync-sources/skills/pan-gauntlet-loop/assets/gauntlet-index.html +237 -0
  448. package/sync-sources/skills/pan-gauntlet-loop/references/domains.md +106 -0
  449. package/sync-sources/skills/pan-gauntlet-loop/references/lessons.md +60 -0
  450. package/sync-sources/skills/pan-handoff/SKILL.md +13 -6
  451. package/sync-sources/skills/pan-help/SKILL.md +1 -1
  452. package/sync-sources/skills/pan-peer-review/SKILL.md +3 -3
  453. package/sync-sources/skills/pan-restart/SKILL.md +6 -3
  454. package/sync-sources/skills/pan-start/SKILL.md +3 -0
  455. package/sync-sources/skills/pan-swarm/SKILL.md +32 -44
  456. package/sync-sources/skills/pan-sync/SKILL.md +1 -1
  457. package/server/activity-logger-BejO16Am.js +0 -3
  458. package/server/agent-state-DH_-Jkua.js +0 -3
  459. package/server/agents-megfmQHM.js +0 -3
  460. package/server/archive-planning-C-H9cM_J.js +0 -2
  461. package/server/build-info-PQlh_Rhb.js +0 -2
  462. package/server/cli-TaZspPHS.js +0 -2
  463. package/server/cliproxy-36ncAXlu.js +0 -3
  464. package/server/context-layers-CF6zHws4.js +0 -4
  465. package/server/conversations-AnGJ5rtX.js +0 -3
  466. package/server/deacon-BEH-IY0v.js +0 -5
  467. package/server/deacon-swarm-BHX-kR1b.js +0 -2
  468. package/server/deacon-swarm-BiLfNm_v.js +0 -1522
  469. package/server/dead-end-trip-BWpDg1Qd.js +0 -2
  470. package/server/delivery-cJM6zRjJ.js +0 -3
  471. package/server/deploy-queue-CmVBZEja.js +0 -2
  472. package/server/dist-VKBfkdi7.js +0 -3
  473. package/server/durable-review-pipeline-DgcVCYDL.js +0 -3
  474. package/server/factory-D4V2wd_V.js +0 -717
  475. package/server/forge-CrP1L3i6.js +0 -2
  476. package/server/hume-1ubD_6O7.js +0 -3
  477. package/server/inspect-agent-CfxERkNt.js +0 -2
  478. package/server/merge-ops-DtHx17Vd.js +0 -2
  479. package/server/merge-rebase-BvB4UuNS.js +0 -2
  480. package/server/project-repos-BJiShUsN.js +0 -3
  481. package/server/providers-CStNGwze.js +0 -3
  482. package/server/public/assets/index-BFEwfmqX.js +0 -860
  483. package/server/public/assets/index-_USwyTAT.css +0 -1
  484. package/server/public/assets/mermaid-GHXKKRXX-Dsln95SK.js +0 -1
  485. package/server/pull-requests-C1Cqp2yo.js +0 -2
  486. package/server/rally-CjayjUIl.js +0 -3
  487. package/server/resume-D7JuMCRQ.js +0 -3
  488. package/server/review-agent-BUNTVJK2.js +0 -2
  489. package/server/settings-DBWB1gsG.js +0 -2
  490. package/server/specialists-D8gsOCwh.js +0 -3
  491. package/server/specs-BqkrRnU9.js +0 -3
  492. package/server/stuck-remediation-Di5JYkoo.js +0 -1164
  493. package/server/stuck-remediation-TNM1VhZb.js +0 -2
  494. package/server/supervisor-DX8VsPnb.js +0 -2
  495. package/server/tmux-CqNapnrr.js +0 -4
  496. package/server/token-util-Bu8bPF9f.js +0 -3
  497. package/server/workflows-Cf4LAnhg.js +0 -2
@@ -0,0 +1,120 @@
1
+ import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
+ import { r as init_factory, t as createTracker } from "./factory-BrdqXBeK.js";
3
+ import { n as resolveGitHubIssueSync, r as resolveTrackerTypeSync, t as init_tracker_utils } from "./tracker-utils-DJAOAuMN.js";
4
+ import { Effect } from "effect";
5
+ //#region services/issue-title-fallback.ts
6
+ /**
7
+ * Fallback resolution for issues that have aged out of the tracker sync
8
+ * window.
9
+ *
10
+ * The resource tree surfaces any issue that still owns local resources
11
+ * (workspaces, agent sessions, records, planning artifacts) — including
12
+ * issues closed long ago, which the shared issue service no longer syncs.
13
+ * Without a tracker row, discovery falls back to the bare identifier as the
14
+ * row title, so the tree renders "MIN-852 — MIN-852" (PAN-3337). The issue
15
+ * view (drawer/cockpit) has the same hole: its header reads the read-model
16
+ * issue list, which drops closed issues older than `closedWindowDays`, so
17
+ * the header falls back to "Issue details" (PAN-3659).
18
+ *
19
+ * Resolve those issues per issue on demand through the tracker's own
20
+ * getIssue door. Successes are memoized for the process lifetime (rows of
21
+ * closed issues do not churn); failures are memoized briefly so a broken or
22
+ * unconfigured tracker cannot be hammered by the discovery refresh loop.
23
+ */
24
+ /**
25
+ * Build a tracker bound to the repo/project the issue belongs to.
26
+ * createTracker({ type }) alone is not enough for trackers whose config is
27
+ * per-repo: GitHub needs owner/repo (resolved from the issue prefix), and
28
+ * without them the factory throws — which silently broke this fallback for
29
+ * every GitHub-tracked issue (PAN-3659).
30
+ */
31
+ function trackerForIssue(issueId) {
32
+ const trackerType = resolveTrackerTypeSync(issueId);
33
+ if (!trackerType) return null;
34
+ if (trackerType === "github") {
35
+ const resolution = resolveGitHubIssueSync(issueId);
36
+ if (!resolution.isGitHub) return null;
37
+ return createTracker({
38
+ type: "github",
39
+ owner: resolution.owner,
40
+ repo: resolution.repo
41
+ });
42
+ }
43
+ return createTracker({ type: trackerType });
44
+ }
45
+ async function lookupIssue(issueId) {
46
+ const tracker = trackerForIssue(issueId);
47
+ if (!tracker) return null;
48
+ return Effect.runPromise(tracker.getIssue(issueId).pipe(Effect.timeout(LOOKUP_TIMEOUT)));
49
+ }
50
+ /**
51
+ * Resolve one issue through its tracker door, memoized: successes for the
52
+ * process lifetime, failures for FAILURE_RETRY_MS, concurrent callers share
53
+ * one in-flight request. Returns null when the issue cannot be resolved.
54
+ */
55
+ async function resolveMissingIssue(issueId) {
56
+ const key = issueId.toUpperCase();
57
+ const memoized = resolvedIssues.get(key);
58
+ if (memoized) return memoized;
59
+ const failedAt = failedLookupsAt.get(key);
60
+ if (failedAt !== void 0 && Date.now() - failedAt < FAILURE_RETRY_MS) return null;
61
+ let pending = inFlight.get(key);
62
+ if (!pending) {
63
+ pending = lookupIssue(key).catch(() => null).finally(() => inFlight.delete(key));
64
+ inFlight.set(key, pending);
65
+ }
66
+ const issue = await pending;
67
+ if (issue) {
68
+ resolvedIssues.set(key, issue);
69
+ failedLookupsAt.delete(key);
70
+ return issue;
71
+ }
72
+ failedLookupsAt.set(key, Date.now());
73
+ return null;
74
+ }
75
+ function usableTitle(issue, issueId) {
76
+ const title = issue.title?.trim();
77
+ return title && title.toUpperCase() !== issueId.toUpperCase() ? title : null;
78
+ }
79
+ /**
80
+ * Resolve titles for issues the tracker snapshot missed. Returns only the
81
+ * identifiers that resolved to a real title (memoized or freshly fetched).
82
+ */
83
+ async function resolveMissingIssueTitles(issueIds) {
84
+ const result = /* @__PURE__ */ new Map();
85
+ const toFetch = [];
86
+ const now = Date.now();
87
+ for (const raw of issueIds) {
88
+ const issueId = raw.toUpperCase();
89
+ const memoized = resolvedIssues.get(issueId);
90
+ if (memoized) {
91
+ const title = usableTitle(memoized, issueId);
92
+ if (title) result.set(issueId, title);
93
+ continue;
94
+ }
95
+ const failedAt = failedLookupsAt.get(issueId);
96
+ if (failedAt !== void 0 && now - failedAt < FAILURE_RETRY_MS) continue;
97
+ if (toFetch.length < MAX_LOOKUPS_PER_PASS) toFetch.push(issueId);
98
+ }
99
+ await Promise.all(toFetch.map(async (issueId) => {
100
+ const issue = await resolveMissingIssue(issueId);
101
+ const title = issue ? usableTitle(issue, issueId) : null;
102
+ if (title) result.set(issueId, title);
103
+ }));
104
+ return result;
105
+ }
106
+ var FAILURE_RETRY_MS, LOOKUP_TIMEOUT, MAX_LOOKUPS_PER_PASS, resolvedIssues, failedLookupsAt, inFlight;
107
+ var init_issue_title_fallback = __esmMin((() => {
108
+ init_tracker_utils();
109
+ init_factory();
110
+ FAILURE_RETRY_MS = 600 * 1e3;
111
+ LOOKUP_TIMEOUT = "10 seconds";
112
+ MAX_LOOKUPS_PER_PASS = 8;
113
+ resolvedIssues = /* @__PURE__ */ new Map();
114
+ failedLookupsAt = /* @__PURE__ */ new Map();
115
+ inFlight = /* @__PURE__ */ new Map();
116
+ }));
117
+ //#endregion
118
+ export { resolveMissingIssue as n, resolveMissingIssueTitles as r, init_issue_title_fallback as t };
119
+
120
+ //# sourceMappingURL=issue-title-fallback-DTSCQVu0.js.map
@@ -1,5 +1,5 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { _ as integer, a as EventBus, c as Records, f as init_infra, h as text, m as sqliteTable, p as init_sqlite_core, r as Db, v as init_drizzle_orm, x as eq } from "./infra-KTp9KV9u.js";
2
+ import { _ as integer, a as EventBus, c as Records, f as init_infra, h as text, m as sqliteTable, p as init_sqlite_core, r as Db, v as init_drizzle_orm, x as eq } from "./infra-CHIvOb9q.js";
3
3
  import { Context, Effect, Layer, Schema } from "effect";
4
4
  import { HttpApiEndpoint, HttpApiGroup } from "effect/unstable/httpapi";
5
5
  //#region ../../lib/overdeck/issues.ts
@@ -350,4 +350,4 @@ var init_issues = __esmMin((() => {
350
350
  //#endregion
351
351
  export { init_issues as n, IssueId as t };
352
352
 
353
- //# sourceMappingURL=issues-CkvUoAnq.js.map
353
+ //# sourceMappingURL=issues-e_Ck1Ln2.js.map
@@ -1,6 +1,6 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Di as encodeClaudeProjectDir, Fi as init_paths, oi as init_errors } from "./config-yaml-BwOEANMr.js";
3
- import { o as getPricingSync, s as init_cost, t as calculateCostSync } from "./cost-CQKI6OCu.js";
2
+ import { Ri as init_paths, ci as init_errors, ki as encodeClaudeProjectDir } from "./config-yaml-D9nfpEx1.js";
3
+ import { o as getPricingSync, s as init_cost, t as calculateCostSync } from "./cost-CiIwxH1D.js";
4
4
  import "effect";
5
5
  import { existsSync, readFileSync, readdirSync, statSync } from "fs";
6
6
  import { basename, join } from "path";
@@ -247,4 +247,4 @@ var init_jsonl_parser = __esmMin((() => {
247
247
  //#endregion
248
248
  export { init_jsonl_parser as a, getSessionFilesSync as i, getAllSessionFilesSync as n, normalizeModelName as o, getProjectDirsSync as r, parseClaudeSessionSync as s, getActiveSessionModelSync as t };
249
249
 
250
- //# sourceMappingURL=jsonl-parser-CrEb2PWr.js.map
250
+ //# sourceMappingURL=jsonl-parser-DqxVCZ1k.js.map
@@ -0,0 +1,324 @@
1
+ import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
+ import { Li as getOverdeckHome, Ri as init_paths, ki as encodeClaudeProjectDir } from "./config-yaml-D9nfpEx1.js";
3
+ import { s as getHarnessBehavior } from "./src-CY2Wl8IX.js";
4
+ import { g as logAgentLifecycleSync, h as init_persistent_logger } from "./agents-jXgqpHca.js";
5
+ import { Ct as getAgentWorkspace, U as getAgentRuntimeState, g as getAgentStateSync, q as init_agents, wt as init_agent_enrichment } from "./agent-state-BJhGIJZe.js";
6
+ import { t as init_behavior } from "./behavior-BiCQzqyT.js";
7
+ import { join } from "node:path";
8
+ import { Effect } from "effect";
9
+ import { homedir } from "node:os";
10
+ import { access, readFile, readdir, stat } from "node:fs/promises";
11
+ //#region routes/jsonl-resolver.ts
12
+ /**
13
+ * JSONL transcript resolver for the Command Deck (PAN-830).
14
+ *
15
+ * Maps an agent ID (e.g. `agent-pan-830`, `planning-pan-830`, or a canonical
16
+ * specialist tmux session name) to the agent's JSONL transcript file on disk.
17
+ *
18
+ * Codex agents (PAN-1805) write rollout JSONLs under the per-agent
19
+ * `codex-home/sessions/` tree — resolution dispatches on the harness recorded
20
+ * in state.json (thread-id fast path, then latest-rollout fallback).
21
+ *
22
+ * For claude-code agents the JSONL filename is the *Claude session ID* (a UUID
23
+ * written by Claude Code itself), NOT the agent/tmux name. Lookup order:
24
+ * 1. session.id — UUID pinned before fresh work-agent launch and updated
25
+ * by auto-suspend/resume flows
26
+ * 2. sessions.json — array of UUIDs the agent has used; the heartbeat hook
27
+ * APPENDS new IDs and dedupes, so once a session has been
28
+ * seen its array index never moves. After a `pan resume`
29
+ * brings an older session back as the live one, the array
30
+ * order no longer reflects time-recency. We disambiguate
31
+ * across all listed IDs by JSONL mtime.
32
+ * 3. runtime state — in-process mirror, populated by hooks
33
+ * 4. agents registry — the DB row's session_id recorded at spawn; survives
34
+ * janitor removal of the agent directory
35
+ *
36
+ * Async-only (fs/promises) because this code path runs inside the dashboard
37
+ * server's event loop.
38
+ */
39
+ function logTranscriptResolution(agentId, signature, message, opts) {
40
+ const signatureKey = `${agentId}:${opts.agentsDirOverride ?? "live"}`;
41
+ if (transcriptResolutionSignatures.get(signatureKey) === signature) return;
42
+ transcriptResolutionSignatures.set(signatureKey, signature);
43
+ (opts.logDiagnostic ?? (opts.agentsDirOverride ? void 0 : logAgentLifecycleSync))?.(agentId, `transcript resolution: ${message}`);
44
+ }
45
+ async function pathExists(p) {
46
+ return access(p).then(() => true, () => false);
47
+ }
48
+ async function readOptional(p) {
49
+ return readFile(p, "utf-8").catch(() => null);
50
+ }
51
+ function behaviorForHarness(harness) {
52
+ return getHarnessBehavior(harness);
53
+ }
54
+ /**
55
+ * Pick the candidate UUID whose JSONL transcript has the most recent mtime.
56
+ *
57
+ * The heartbeat hook appends to sessions.json and dedupes — so once an ID is
58
+ * recorded, its array index never moves even if a later resume makes it the
59
+ * current session again. Choosing by JSONL mtime is the only reliable signal
60
+ * for "which session is actually live right now."
61
+ *
62
+ * Returns null if no candidate has a corresponding JSONL on disk. Falls back
63
+ * to scanning every project dir if the workspace path can't be resolved
64
+ * (covers specialist sessions whose workspace lives elsewhere).
65
+ */
66
+ async function pickFreshestSessionId(candidates, agentId, opts) {
67
+ if (candidates.length === 0) return null;
68
+ if (candidates.length === 1) return candidates[0];
69
+ const projectsRoot = opts.claudeProjectsDirOverride ?? join(homedir(), ".claude", "projects");
70
+ let candidatePaths = [];
71
+ try {
72
+ const workspace = await Effect.runPromise(getAgentWorkspace(agentId));
73
+ if (workspace) {
74
+ const projectDir = join(projectsRoot, encodeClaudeProjectDir(workspace));
75
+ candidatePaths = candidates.map((id) => ({
76
+ id,
77
+ path: join(projectDir, `${id}.jsonl`)
78
+ }));
79
+ }
80
+ } catch {}
81
+ if (candidatePaths.length === 0) try {
82
+ const dirs = await readdir(projectsRoot);
83
+ const SAFE_DIR = /^[a-zA-Z0-9_.-]+$/;
84
+ for (const id of candidates) for (const dir of dirs) {
85
+ if (!SAFE_DIR.test(dir)) continue;
86
+ candidatePaths.push({
87
+ id,
88
+ path: join(projectsRoot, dir, `${id}.jsonl`)
89
+ });
90
+ }
91
+ } catch {}
92
+ let best = null;
93
+ for (const { id, path } of candidatePaths) try {
94
+ const s = await stat(path);
95
+ if (!best || s.mtimeMs > best.mtimeMs) best = {
96
+ id,
97
+ mtimeMs: s.mtimeMs
98
+ };
99
+ } catch {}
100
+ return best ? best.id : candidates[candidates.length - 1] ?? null;
101
+ }
102
+ /** Async equivalent of getLatestSessionId from lib/agents.ts. */
103
+ async function resolveClaudeSessionId(agentId, opts = {}) {
104
+ const agentDir = join(opts.agentsDirOverride ?? join(getOverdeckHome(), "agents"), agentId);
105
+ const sessionIdTrimmed = (await readOptional(join(agentDir, "session.id")))?.trim();
106
+ if (sessionIdTrimmed) return sessionIdTrimmed;
107
+ const sessionsRaw = await readOptional(join(agentDir, "sessions.json"));
108
+ if (sessionsRaw) try {
109
+ const parsed = JSON.parse(sessionsRaw);
110
+ if (Array.isArray(parsed)) {
111
+ const fresh = await pickFreshestSessionId(parsed.filter((v) => typeof v === "string" && v.trim().length > 0), agentId, opts);
112
+ if (fresh) return fresh;
113
+ }
114
+ } catch {}
115
+ try {
116
+ const runtimeState = await (opts.getRuntimeStateAsync ?? ((id) => Effect.runPromise(getAgentRuntimeState(id))))(agentId);
117
+ if (runtimeState?.claudeSessionId) return runtimeState.claudeSessionId;
118
+ } catch {}
119
+ if (!opts.agentsDirOverride) {
120
+ const registrySessionId = getAgentStateSync(agentId)?.sessionId?.trim();
121
+ if (registrySessionId) return registrySessionId;
122
+ }
123
+ return null;
124
+ }
125
+ async function readLauncherPinnedSessionId(tmuxSession, opts = {}) {
126
+ const home = opts.overdeckHomeOverride ?? getOverdeckHome();
127
+ const candidates = [join(home, "conversations", tmuxSession, "launcher.sh"), join(home, "agents", tmuxSession, "launcher.sh")];
128
+ for (const path of candidates) {
129
+ const text = await readOptional(path);
130
+ if (!text) continue;
131
+ const match = LAUNCHER_SESSION_ID_RE.exec(text) ?? LAUNCHER_RESUME_RE.exec(text);
132
+ if (match) return match[1];
133
+ }
134
+ return null;
135
+ }
136
+ /**
137
+ * Read the harness + workspace recorded for an agent, honoring the test
138
+ * override dir. Used by resolveAgentHarness / agentHasClaudeTranscript so the
139
+ * stale-harness self-correction runs identically in prod and under test.
140
+ */
141
+ async function readRecordedState(agentId, opts) {
142
+ if (opts.agentsDirOverride) try {
143
+ const raw = await readFile(join(opts.agentsDirOverride, agentId, "state.json"), "utf8");
144
+ const s = JSON.parse(raw);
145
+ return {
146
+ harness: typeof s.harness === "string" ? s.harness : null,
147
+ workspace: typeof s.workspace === "string" ? s.workspace : void 0
148
+ };
149
+ } catch {
150
+ return { harness: null };
151
+ }
152
+ const st = getAgentStateSync(agentId);
153
+ return {
154
+ harness: st?.harness ?? null,
155
+ workspace: st?.workspace
156
+ };
157
+ }
158
+ /**
159
+ * Resolve the harness for transcript routing. Reads state.json, then
160
+ * self-corrects when the recorded value is stale.
161
+ *
162
+ * Trust an explicit non-default harness (codex / pi / ohmypi / acp) — it was chosen
163
+ * by resolveHarness at spawn time and is not the generic fallback. The
164
+ * 'claude-code' default, however, goes stale in one observed case: a
165
+ * wipe-and-respawn that changed the provider-default harness left state.json
166
+ * carrying the pre-respawn 'claude-code' while the fresh launch was
167
+ * codex/ohmypi. The resolver then took the claude-code branch, found no
168
+ * claudeSessionId, and the dashboard showed "No conversation data available"
169
+ * for a live agent whose real transcript sat untouched under codex-home.
170
+ *
171
+ * Self-correction (claude-code/null recorded only): if the agent has NO
172
+ * claude-code transcript on disk but DOES have a codex rollout / pi session,
173
+ * the on-disk runtime wins — those artifacts are written only by that runtime,
174
+ * so this cannot surface a wrong transcript. When a claude-code transcript IS
175
+ * present it always wins, so a past codex run's codex-home can't shadow a
176
+ * current claude-code session.
177
+ */
178
+ async function resolveAgentHarness(agentId, opts = {}) {
179
+ const recorded = (await readRecordedState(agentId, opts)).harness;
180
+ if (recorded === "codex" || recorded === "pi" || recorded === "ohmypi" || recorded === "acp" || recorded === "kimi-code") return recorded;
181
+ if (await agentHasClaudeTranscript(agentId, opts)) return recorded ?? "claude-code";
182
+ if (await resolveAcpTranscriptPath(agentId, opts)) return "acp";
183
+ if (await resolveCodexRolloutPath(agentId, opts)) return "codex";
184
+ if (await resolvePiSessionPath(agentId, opts)) return "ohmypi";
185
+ if (await resolveKimiWirePath(agentId, opts)) return "kimi-code";
186
+ return recorded;
187
+ }
188
+ /**
189
+ * Whether the agent has a resolvable claude-code transcript on disk. Used by
190
+ * resolveAgentHarness to decide if a claude-code recording is still live
191
+ * (vs. a stale default that should be corrected to codex/ohmypi).
192
+ */
193
+ async function agentHasClaudeTranscript(agentId, opts = {}) {
194
+ const sessionId = await resolveClaudeSessionId(agentId, opts);
195
+ if (!sessionId) return false;
196
+ const workspace = (await readRecordedState(agentId, opts)).workspace;
197
+ if (!workspace) return false;
198
+ return pathExists(join(opts.claudeProjectsDirOverride ?? join(homedir(), ".claude", "projects"), encodeClaudeProjectDir(workspace), `${sessionId}.jsonl`));
199
+ }
200
+ /**
201
+ * Resolve the Codex rollout JSONL for a codex-harness agent (PAN-1805).
202
+ *
203
+ * Fast path: the persisted codex-thread-id maps directly to its rollout file.
204
+ * Lazy fallback (same shape as the conversation panel's PAN-1690 fix): codex
205
+ * writes the rollout only on the first turn, so a spawn-time thread-id capture
206
+ * can miss it — the per-agent CODEX_HOME holds only this agent's rollouts, so
207
+ * the newest one is its current thread.
208
+ */
209
+ async function resolveCodexRolloutPath(agentId, opts = {}) {
210
+ const agentDir = join(opts.agentsDirOverride ?? join(getOverdeckHome(), "agents"), agentId);
211
+ const codexHome = join(agentDir, "codex-home");
212
+ if (!await pathExists(codexHome)) return null;
213
+ const { findRolloutPath, findLatestRollout } = await import("./codex-DZhFfcWu.js");
214
+ const threadId = (await readOptional(join(agentDir, "codex-thread-id")))?.trim();
215
+ if (threadId) {
216
+ const rollout = findRolloutPath(codexHome, threadId);
217
+ if (rollout) return rollout;
218
+ }
219
+ return findLatestRollout(codexHome);
220
+ }
221
+ /** Resolve the normalized transcript written by the persistent ACP host. */
222
+ async function resolveAcpTranscriptPath(agentId, opts = {}) {
223
+ const transcriptPath = join(opts.agentsDirOverride ?? join(getOverdeckHome(), "agents"), agentId, "acp-session.jsonl");
224
+ return await pathExists(transcriptPath) ? transcriptPath : null;
225
+ }
226
+ /**
227
+ * Resolve the native Kimi Code CLI wire.jsonl for a kimi-code-harness agent
228
+ * (PAN-1837 wi8a). Fast path: the per-agent kimi-session-id (persisted by
229
+ * wi5's spawnAgent) maps directly to
230
+ * `<kimiHome>/sessions/<workDirKey>/<sessionId>/agents/main/wire.jsonl`.
231
+ * Fallback (no captured id): the newest session directory by wire.jsonl mtime
232
+ * under the workspace's workDirKey bucket — same shape as the codex/pi lazy
233
+ * fallbacks above, since Kimi may not have finished writing its first turn
234
+ * when the id was captured.
235
+ */
236
+ async function resolveKimiWirePath(agentId, opts = {}) {
237
+ const workspace = opts.workspaceOverride ?? (await readRecordedState(agentId, opts)).workspace;
238
+ if (!workspace) return null;
239
+ const sessionId = (await readOptional(join(opts.agentsDirOverride ?? join(getOverdeckHome(), "agents"), agentId, "kimi-session-id")))?.trim() || null;
240
+ const kimiHome = opts.kimiHomeOverride ?? join(homedir(), ".kimi-code");
241
+ const { findKimiWirePathAsync } = await import("./kimi-code-vtXl2DR5.js");
242
+ return findKimiWirePathAsync(kimiHome, workspace, sessionId);
243
+ }
244
+ /**
245
+ * Resolve the pi/kimi session JSONL (PAN-1908). Pi writes its session transcript
246
+ * as `<iso-ts>_<session-id>.jsonl` either in the agent dir's `sessions/` subdir
247
+ * (conversations) OR in the agent dir root (work agents) — so check both. The dir
248
+ * also holds `cost-events.jsonl` / `activity.jsonl`, which are NOT transcripts.
249
+ * Return the freshest transcript by mtime, or null if pi hasn't written one yet.
250
+ */
251
+ async function resolvePiSessionPath(agentId, opts = {}) {
252
+ const agentDir = join(opts.agentsDirOverride ?? join(getOverdeckHome(), "agents"), agentId);
253
+ const NON_TRANSCRIPT = new Set([
254
+ "acp-session.jsonl",
255
+ "cost-events.jsonl",
256
+ "activity.jsonl",
257
+ "pending-events.jsonl"
258
+ ]);
259
+ let best = null;
260
+ for (const dir of [join(agentDir, "sessions"), agentDir]) {
261
+ let entries;
262
+ try {
263
+ entries = await readdir(dir);
264
+ } catch {
265
+ continue;
266
+ }
267
+ for (const name of entries) {
268
+ if (!name.endsWith(".jsonl") || NON_TRANSCRIPT.has(name)) continue;
269
+ const p = join(dir, name);
270
+ try {
271
+ const m = (await stat(p)).mtimeMs;
272
+ if (!best || m > best.mtime) best = {
273
+ path: p,
274
+ mtime: m
275
+ };
276
+ } catch {}
277
+ }
278
+ }
279
+ return best?.path ?? null;
280
+ }
281
+ /**
282
+ * Resolve the JSONL transcript for an agent.
283
+ *
284
+ * Codex agents resolve to their rollout JSONL (PAN-1805). For claude-code
285
+ * agents, returns the absolute path if both the claudeSessionId is known AND
286
+ * the corresponding JSONL file exists; otherwise null.
287
+ */
288
+ async function resolveJsonlPath(agentId, workspacePath, opts = {}) {
289
+ const harness = await resolveAgentHarness(agentId, opts);
290
+ const behavior = behaviorForHarness(harness);
291
+ if (behavior.transcriptKind === "codex-rollout-jsonl") return resolveCodexRolloutPath(agentId, opts);
292
+ if (behavior.transcriptKind === "ohmypi-jsonl") return resolvePiSessionPath(agentId, opts);
293
+ if (behavior.transcriptKind === "acp-jsonl") return resolveAcpTranscriptPath(agentId, opts);
294
+ if (behavior.transcriptKind === "kimi-wire-jsonl") return resolveKimiWirePath(agentId, opts);
295
+ const claudeSessionId = await resolveClaudeSessionId(agentId, opts);
296
+ if (!claudeSessionId) {
297
+ logTranscriptResolution(agentId, `missing-session-id:${harness ?? "unknown"}`, `failed harness=${harness ?? "unknown"} reason=no-session-id checked=session.id,sessions.json,runtime-state`, opts);
298
+ return null;
299
+ }
300
+ const effectiveWorkspacePath = (await readRecordedState(agentId, opts)).workspace ?? workspacePath;
301
+ const jsonlPath = join(opts.claudeProjectsDirOverride ?? join(homedir(), ".claude", "projects"), encodeClaudeProjectDir(effectiveWorkspacePath), `${claudeSessionId}.jsonl`);
302
+ if (await pathExists(jsonlPath)) {
303
+ logTranscriptResolution(agentId, `resolved:${jsonlPath}`, `resolved harness=${harness ?? "claude-code"} sessionId=${claudeSessionId} path=${jsonlPath}`, opts);
304
+ return jsonlPath;
305
+ }
306
+ logTranscriptResolution(agentId, `missing-jsonl:${jsonlPath}`, `failed harness=${harness ?? "claude-code"} reason=jsonl-missing sessionId=${claudeSessionId} workspace=${effectiveWorkspacePath} expectedPath=${jsonlPath}`, opts);
307
+ return null;
308
+ }
309
+ var transcriptResolutionSignatures, LAUNCHER_UUID, LAUNCHER_SESSION_ID_RE, LAUNCHER_RESUME_RE;
310
+ var init_jsonl_resolver = __esmMin((() => {
311
+ init_agents();
312
+ init_paths();
313
+ init_agent_enrichment();
314
+ init_behavior();
315
+ init_persistent_logger();
316
+ transcriptResolutionSignatures = /* @__PURE__ */ new Map();
317
+ LAUNCHER_UUID = "[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}";
318
+ LAUNCHER_SESSION_ID_RE = new RegExp(`--session-id\\s+'?(${LAUNCHER_UUID})'?`);
319
+ LAUNCHER_RESUME_RE = new RegExp(`--resume\\s+'?(${LAUNCHER_UUID})'?`);
320
+ }));
321
+ //#endregion
322
+ export { resolveClaudeSessionId as a, resolveKimiWirePath as c, resolveAgentHarness as i, resolvePiSessionPath as l, readLauncherPinnedSessionId as n, resolveCodexRolloutPath as o, resolveAcpTranscriptPath as r, resolveJsonlPath as s, init_jsonl_resolver as t };
323
+
324
+ //# sourceMappingURL=jsonl-resolver-07OS3qOr.js.map
@@ -1,13 +1,14 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Fi as init_paths, Pi as getOverdeckHome } from "./config-yaml-BwOEANMr.js";
3
- import { n as init_fs_lock, r as isPidDead } from "./fs-lock-cw25uO_E.js";
4
- import { c as getRuntimeBehavior } from "./src-DudQNYVw.js";
5
- import { O as saveAgentStateSync, Xn as deliverAgentMessage, _i as init_pty_token, bi as resolvePtySupervisorScriptPath, cn as listAgentStates, er as init_delivery, h as init_agent_state, m as getAgentStateSync, sn as init_queries, vi as writePtyToken, yi as init_pty_supervisor_locate } from "./agent-state-Bb3UUxQm.js";
6
- import { t as init_behavior } from "./behavior-Bitko0mD.js";
7
- import { C as generateLauncherScriptSync, w as init_launcher_generator } from "./auto-spawn-consent-BDfe4qz0.js";
8
- import { _ as tmuxKillSession, g as tmuxCreateSession, h as init_tmux_cli, v as tmuxSessionExists } from "./codex-OOea7lXs.js";
9
- import { i as prepareHarnessLaunch, r as init_harness_binary } from "./harness-binary-BgXYDo2Z.js";
10
- import { n as parseKimiSessionSync, t as init_kimi_parser } from "./kimi-parser-Dmhy3UlR.js";
2
+ import { Li as getOverdeckHome, Ri as init_paths } from "./config-yaml-D9nfpEx1.js";
3
+ import { n as init_fs_lock, r as isPidDead } from "./fs-lock-C7J-ugIf.js";
4
+ import { C as init_tmux, v as getManagedTmuxSocketName } from "./tmux-DWEc4Ld9.js";
5
+ import { c as getRuntimeBehavior } from "./src-CY2Wl8IX.js";
6
+ import { A as saveAgentStateSync, Di as writePtyToken, Ei as init_pty_token, Oi as init_pty_supervisor_locate, _ as init_agent_state, _n as listAgentStates, ar as deliverAgentMessage, g as getAgentStateSync, gn as init_queries, ki as resolvePtySupervisorScriptPath, lr as init_delivery } from "./agent-state-BJhGIJZe.js";
7
+ import { t as init_behavior } from "./behavior-BiCQzqyT.js";
8
+ import { C as generateLauncherScriptSync, w as init_launcher_generator } from "./auto-spawn-consent-Dc4mtM-B.js";
9
+ import { _ as tmuxKillSession, g as tmuxCreateSession, h as init_tmux_cli, v as tmuxSessionExists } from "./codex-KaSKE-R3.js";
10
+ import { i as prepareHarnessLaunch, r as init_harness_binary } from "./harness-binary-tMmgJfC1.js";
11
+ import { n as parseKimiSessionSync, t as init_kimi_parser } from "./kimi-parser-B1lgy2Vt.js";
11
12
  import { basename, dirname, join } from "node:path";
12
13
  import { homedir } from "node:os";
13
14
  import { existsSync, mkdirSync, readFileSync, readdirSync, statSync, writeFileSync } from "node:fs";
@@ -337,6 +338,7 @@ function createKimiCodeRuntimeSync(options = {}) {
337
338
  }
338
339
  var execAsync, SPAWN_READY_TIMEOUT_MS, POLL_INTERVAL_MS, KimiCodeSpawnTimeout, KIMI_CAPTURE_LOCK_POLL_MS, KIMI_CAPTURE_LOCK_MAX_WAIT_MS, KIMI_CAPTURE_LOCK_STALE_AGE_MS, KimiCaptureLockTimeoutError, KimiCodeRuntimeSync;
339
340
  var init_kimi_code = __esmMin((() => {
341
+ init_tmux();
340
342
  init_agent_state();
341
343
  init_queries();
342
344
  init_delivery();
@@ -440,12 +442,12 @@ var init_kimi_code = __esmMin((() => {
440
442
  }
441
443
  async killAgent(agentId) {
442
444
  try {
443
- await this.execCommand(`tmux -L overdeck send-keys -t ${shellQuote(agentId)} C-c 2>/dev/null || true`);
445
+ await this.execCommand(`tmux -L ${shellQuote(getManagedTmuxSocketName())} send-keys -t ${shellQuote(agentId)} C-c 2>/dev/null || true`);
444
446
  } catch {}
445
447
  if (await pollUntilSessionGone(agentId, 2e3)) return;
446
448
  let panePid = null;
447
449
  try {
448
- const { stdout } = await this.execCommand(`tmux -L overdeck list-panes -t ${shellQuote(agentId)} -F '#{pane_pid}' 2>/dev/null`);
450
+ const { stdout } = await this.execCommand(`tmux -L ${shellQuote(getManagedTmuxSocketName())} list-panes -t ${shellQuote(agentId)} -F '#{pane_pid}' 2>/dev/null`);
449
451
  panePid = stdout.trim() || null;
450
452
  if (panePid) await this.execCommand(`kill -TERM -- -${panePid} 2>/dev/null || kill -TERM ${panePid} 2>/dev/null || true`);
451
453
  } catch {}
@@ -576,4 +578,4 @@ var init_kimi_code = __esmMin((() => {
576
578
  //#endregion
577
579
  export { findKimiWirePath as a, findLatestKimiSessionAsync as c, kimiSessionsRoot as d, kimiWorkDirKey as f, writeKimiSessionId as g, withKimiSessionCaptureLock as h, createKimiCodeRuntimeSync as i, init_kimi_code as l, waitForNewKimiSessionAsync as m, KimiCodeRuntimeSync as n, findKimiWirePathAsync as o, waitForNewKimiSession as p, KimiCodeSpawnTimeout as r, findLatestKimiSession as s, KimiCaptureLockTimeoutError as t, kimiCaptureLockPath as u };
578
580
 
579
- //# sourceMappingURL=kimi-code-C26gmGxM.js.map
581
+ //# sourceMappingURL=kimi-code-BjtAHIz1.js.map
@@ -1,3 +1,3 @@
1
- import { d as kimiSessionsRoot, g as writeKimiSessionId, h as withKimiSessionCaptureLock, l as init_kimi_code, m as waitForNewKimiSessionAsync, o as findKimiWirePathAsync } from "./kimi-code-C26gmGxM.js";
1
+ import { d as kimiSessionsRoot, g as writeKimiSessionId, h as withKimiSessionCaptureLock, l as init_kimi_code, m as waitForNewKimiSessionAsync, o as findKimiWirePathAsync } from "./kimi-code-BjtAHIz1.js";
2
2
  init_kimi_code();
3
3
  export { findKimiWirePathAsync, kimiSessionsRoot, waitForNewKimiSessionAsync, withKimiSessionCaptureLock, writeKimiSessionId };
@@ -1,5 +1,5 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { o as getPricingSync, s as init_cost } from "./cost-CQKI6OCu.js";
2
+ import { o as getPricingSync, s as init_cost } from "./cost-CiIwxH1D.js";
3
3
  import { basename, dirname } from "node:path";
4
4
  import { existsSync, readFileSync } from "node:fs";
5
5
  //#region ../../lib/cost-parsers/kimi-parser.ts
@@ -144,4 +144,4 @@ var init_kimi_parser = __esmMin((() => {
144
144
  //#endregion
145
145
  export { parseKimiSessionSync as n, summarizeKimiEntries as r, init_kimi_parser as t };
146
146
 
147
- //# sourceMappingURL=kimi-parser-Dmhy3UlR.js.map
147
+ //# sourceMappingURL=kimi-parser-B1lgy2Vt.js.map
@@ -1,5 +1,5 @@
1
- import { Gn as init_issue_id, Un as extractNumberSync, Wn as extractPrefixSync } from "./config-yaml-BwOEANMr.js";
2
- import { a as stepSkipped, i as stepOk, n as init_types, r as stepFailed, t as getLinearApiKey } from "./types-DjpLVpsj.js";
1
+ import { Gn as extractNumberSync, Kn as extractPrefixSync, qn as init_issue_id } from "./config-yaml-D9nfpEx1.js";
2
+ import { a as stepSkipped, i as stepOk, n as init_types, r as stepFailed, t as getLinearApiKey } from "./types-fzBp9cYi.js";
3
3
  import { Effect } from "effect";
4
4
  import { exec } from "child_process";
5
5
  import { promisify } from "util";
@@ -102,4 +102,4 @@ async function cleanupLabelsLinear(ctx, apiKey) {
102
102
  //#endregion
103
103
  export { cleanupMergedLabels };
104
104
 
105
- //# sourceMappingURL=label-cleanup-X2lWfghH.js.map
105
+ //# sourceMappingURL=label-cleanup-D2zUMasf.js.map
@@ -1,5 +1,5 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { oi as init_errors } from "./config-yaml-BwOEANMr.js";
2
+ import { ci as init_errors } from "./config-yaml-D9nfpEx1.js";
3
3
  import "effect";
4
4
  import { mkdirSync } from "fs";
5
5
  import { join } from "path";
@@ -118,4 +118,4 @@ var init_lifecycle = __esmMin((() => {
118
118
  //#endregion
119
119
  export { generateXBriefFilename as a, parseXBriefFilename as c, ensureXBriefDirsSync as i, resolveXBriefDir as l, LEGACY_VBRIEF_LIFECYCLE_DIRS as n, init_lifecycle as o, XBRIEF_FILENAME_SUFFIX as r, isXBriefFilename as s, LEGACY_VBRIEF_FILENAME_SUFFIX as t, slugify as u };
120
120
 
121
- //# sourceMappingURL=lifecycle-Bg44O-9x.js.map
121
+ //# sourceMappingURL=lifecycle-0NOEzomy.js.map
@@ -1,11 +1,11 @@
1
- import { t as archivePlanning } from "./archive-planning-BwEhu9Oq.js";
2
- import { a as stepSkipped, i as stepOk, n as init_types, r as stepFailed } from "./types-DjpLVpsj.js";
3
- import { t as closeIssue } from "./close-issue-J0_eWYT1.js";
4
- import { t as teardownWorkspace } from "./teardown-workspace-CYend-KY.js";
5
- import { a as deepWipe, i as closeOut, n as cancelIssueWorkflow, o as resetToTodo, r as close, t as approve } from "./workflows-BYwR2aIN.js";
1
+ import { a as stepSkipped, i as stepOk, n as init_types, r as stepFailed } from "./types-fzBp9cYi.js";
2
+ import { t as archivePlanning } from "./archive-planning-CGkU6UeL.js";
3
+ import { t as closeIssue } from "./close-issue-CxvRD0UI.js";
4
+ import { t as teardownWorkspace } from "./teardown-workspace-cJea1OLo.js";
5
+ import { a as deepWipe, i as closeOut, n as cancelIssueWorkflow, o as resetToTodo, r as close, t as approve } from "./workflows-AgFul1xc.js";
6
6
  //#region ../../lib/lifecycle/index.ts
7
7
  init_types();
8
8
  //#endregion
9
9
  export { approve, archivePlanning, cancelIssueWorkflow, close, closeIssue, closeOut, deepWipe, resetToTodo, stepFailed, stepOk, stepSkipped, teardownWorkspace };
10
10
 
11
- //# sourceMappingURL=lifecycle-B0rL38D3.js.map
11
+ //# sourceMappingURL=lifecycle-DaCovZwn.js.map
@@ -1,8 +1,8 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Dt as queueAutoCommit, I as appendSessionEntrySync, P as appendFeedbackEntrySync, Tt as init_auto_commit, V as clearRecordFeedbackSync, Y as init_record, Yr as FsError, nt as readRecordContinueViewSync, oi as init_errors, wt as flushAutoCommits } from "./config-yaml-BwOEANMr.js";
3
- import { a as generateXBriefFilename, c as parseXBriefFilename, i as ensureXBriefDirsSync, l as resolveXBriefDir, n as LEGACY_VBRIEF_LIFECYCLE_DIRS, o as init_lifecycle, u as slugify } from "./lifecycle-Bg44O-9x.js";
4
- import { A as init_xbrief_index, C as init_specs, N as getProjectPanPaths, _ as serializeXBriefDocument, f as readPlanSync, j as invalidateXBriefIndex, s as init_io, u as normalizeXBriefEnvelope } from "./io-DfvO2xyh.js";
5
- import { t as init_pan_dir } from "./pan-dir-DDd91kMb.js";
2
+ import { Dt as queueAutoCommit, I as appendSessionEntrySync, P as appendFeedbackEntrySync, Tt as init_auto_commit, V as clearRecordFeedbackSync, Y as init_record, Zr as FsError, ci as init_errors, nt as readRecordContinueViewSync, wt as flushAutoCommits } from "./config-yaml-D9nfpEx1.js";
3
+ import { a as generateXBriefFilename, c as parseXBriefFilename, i as ensureXBriefDirsSync, l as resolveXBriefDir, n as LEGACY_VBRIEF_LIFECYCLE_DIRS, o as init_lifecycle, u as slugify } from "./lifecycle-0NOEzomy.js";
4
+ import { A as init_xbrief_index, C as init_specs, N as getProjectPanPaths, _ as serializeXBriefDocument, f as readPlanSync, j as invalidateXBriefIndex, s as init_io, u as normalizeXBriefEnvelope } from "./io-DKrWd3gX.js";
5
+ import { t as init_pan_dir } from "./pan-dir-BMda7tQj.js";
6
6
  import { Effect } from "effect";
7
7
  import { existsSync, mkdirSync, readFileSync, readdirSync, renameSync, unlinkSync, writeFileSync } from "fs";
8
8
  import { basename, join } from "path";
@@ -264,4 +264,4 @@ var init_lifecycle_io = __esmMin((() => {
264
264
  //#endregion
265
265
  export { init_lifecycle_io as a, updatePlanStatus as c, findXBriefByIssueSync as i, appendFeedbackEntryForIssue as n, readContinueStateForIssue as o, clearFeedbackForIssue as r, transitionXBriefOnMain as s, appendContinueSessionEntryForIssue as t };
266
266
 
267
- //# sourceMappingURL=lifecycle-io-CCBpRv5m.js.map
267
+ //# sourceMappingURL=lifecycle-io-6WL46dsB.js.map
@@ -1,3 +1,3 @@
1
- import { a as init_lifecycle_io, s as transitionXBriefOnMain } from "./lifecycle-io-CCBpRv5m.js";
1
+ import { a as init_lifecycle_io, s as transitionXBriefOnMain } from "./lifecycle-io-6WL46dsB.js";
2
2
  init_lifecycle_io();
3
3
  export { transitionXBriefOnMain };
@@ -1,5 +1,5 @@
1
- import { a as init_tracker_config, n as getLinearApiKey } from "./tracker-config-DVzhaUxO.js";
2
- import { a as RateLimited, c as TrackerNotConfigured, r as IssueNotFound, s as TrackerApiError } from "./typed-errors-DzC4zXbI.js";
1
+ import { a as init_tracker_config, n as getLinearApiKey } from "./tracker-config-CJzPhSHv.js";
2
+ import { a as RateLimited, c as TrackerNotConfigured, r as IssueNotFound, s as TrackerApiError } from "./typed-errors-DXqf3RnP.js";
3
3
  import { Context, Duration, Effect, Layer, Schedule } from "effect";
4
4
  import { LinearClient } from "@linear/sdk";
5
5
  //#region services/linear-client.ts
@@ -195,4 +195,4 @@ const LinearClientOptionalLive = Layer.effect(LinearClient$1, Effect.succeed({
195
195
  //#endregion
196
196
  export { LinearClientLive as n, LinearClientOptionalLive as r, LinearClient$1 as t };
197
197
 
198
- //# sourceMappingURL=linear-client-B0cIkTs4.js.map
198
+ //# sourceMappingURL=linear-client-7fQThJTc.js.map
@@ -1,2 +1,2 @@
1
- import { n as LinearClientLive, r as LinearClientOptionalLive, t as LinearClient } from "./linear-client-B0cIkTs4.js";
1
+ import { n as LinearClientLive, r as LinearClientOptionalLive, t as LinearClient } from "./linear-client-7fQThJTc.js";
2
2
  export { LinearClient, LinearClientLive, LinearClientOptionalLive };
@@ -1,2 +1,2 @@
1
- import { l as processLinearMcpAuthWake } from "./linear-mcp-auth-Dsu9Io9r.js";
1
+ import { l as processLinearMcpAuthWake } from "./linear-mcp-auth-Nk5s3L9M.js";
2
2
  export { processLinearMcpAuthWake };