@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,745 @@
1
+ import { Li as getOverdeckHome, Ri as init_paths, Vi as packageRoot, ci as init_errors } from "./config-yaml-D9nfpEx1.js";
2
+ import { A as listPaneValuesSync, B as sendKeys, C as init_tmux, D as killSessionSync, W as sessionExistsSync, v as getManagedTmuxSocketName } from "./tmux-DWEc4Ld9.js";
3
+ import { c as getRuntimeBehavior, i as CLAUDE_CODE_BEHAVIOR } from "./src-CY2Wl8IX.js";
4
+ import { A as saveAgentStateSync, K as saveAgentRuntimeState, Qr as init_pi_fifo, W as getAgentRuntimeStateSync, _n as listAgentStates, _r as init_bridge_token, ci as determineModel, f as getAgentDir, g as getAgentStateSync, gn as init_queries, gr as BRIDGE_TOKEN_HEADER, in as init_ohmypi, ni as init_context, on as spawnAgent, q as init_agents, ri as materializeAcpContextFile, rn as createOhmypiRuntimeSync } from "./agent-state-BJhGIJZe.js";
5
+ import { t as init_behavior } from "./behavior-BiCQzqyT.js";
6
+ import { w as init_launcher_generator } from "./auto-spawn-consent-Dc4mtM-B.js";
7
+ import { _ as tmuxKillSession, g as tmuxCreateSession, h as init_tmux_cli, i as createCodexRuntimeSync, l as init_codex, v as tmuxSessionExists } from "./codex-KaSKE-R3.js";
8
+ import { i as prepareHarnessLaunch, r as init_harness_binary } from "./harness-binary-tMmgJfC1.js";
9
+ import { a as init_jsonl_parser, i as getSessionFilesSync, r as getProjectDirsSync, s as parseClaudeSessionSync } from "./jsonl-parser-DqxVCZ1k.js";
10
+ import { i as createKimiCodeRuntimeSync, l as init_kimi_code } from "./kimi-code-BjtAHIz1.js";
11
+ import { join } from "node:path";
12
+ import { Effect } from "effect";
13
+ import { existsSync, mkdirSync, readFileSync, statSync, writeFileSync } from "fs";
14
+ import { join as join$1 } from "path";
15
+ import { homedir } from "os";
16
+ import "node:os";
17
+ import { existsSync as existsSync$1, readFileSync as readFileSync$1, rmSync as rmSync$1, statSync as statSync$1 } from "node:fs";
18
+ import "node:crypto";
19
+ import { exec } from "node:child_process";
20
+ import { promisify } from "node:util";
21
+ import { request } from "node:http";
22
+ //#region ../../lib/runtimes/claude-code.ts
23
+ init_paths();
24
+ init_harness_binary();
25
+ init_launcher_generator();
26
+ init_bridge_token();
27
+ init_queries();
28
+ /**
29
+ * Claude Code Runtime Implementation
30
+ *
31
+ * Implements AgentRuntime for Claude Code CLI.
32
+ *
33
+ * Session storage: ~/.claude/projects/<workspace-hash>/<session-id>.jsonl
34
+ * Session index: ~/.claude/projects/<workspace-hash>/sessions-index.json
35
+ */
36
+ init_behavior();
37
+ init_agents();
38
+ init_tmux();
39
+ init_jsonl_parser();
40
+ init_errors();
41
+ const CLAUDE_PROJECTS_DIR = join$1(homedir(), ".claude", "projects");
42
+ /**
43
+ * Claude Code Runtime implementation
44
+ */
45
+ var ClaudeCodeRuntimeSync = class {
46
+ name = "claude-code";
47
+ getHarnessBehavior() {
48
+ return CLAUDE_CODE_BEHAVIOR;
49
+ }
50
+ /**
51
+ * Get the project directory for a workspace
52
+ *
53
+ * Claude Code hashes the workspace path to create project directories.
54
+ * We need to find the project directory that contains sessions for this workspace.
55
+ */
56
+ getProjectDirForWorkspace(workspace) {
57
+ if (!existsSync(CLAUDE_PROJECTS_DIR)) return null;
58
+ const projectDirs = getProjectDirsSync();
59
+ for (const projectDir of projectDirs) {
60
+ const indexPath = join$1(projectDir, "sessions-index.json");
61
+ if (existsSync(indexPath)) try {
62
+ if (readFileSync(indexPath, "utf-8").includes(workspace)) return projectDir;
63
+ } catch {}
64
+ }
65
+ return null;
66
+ }
67
+ /**
68
+ * Get the active session ID for an agent from the sessions index
69
+ */
70
+ getActiveSessionId(projectDir) {
71
+ const indexPath = join$1(projectDir, "sessions-index.json");
72
+ if (!existsSync(indexPath)) return null;
73
+ try {
74
+ const indexContent = readFileSync(indexPath, "utf-8");
75
+ const index = JSON.parse(indexContent);
76
+ if (index.sessions && Array.isArray(index.sessions)) {
77
+ const sessions = index.sessions;
78
+ if (sessions.length === 0) return null;
79
+ return sessions.sort((a, b) => {
80
+ return new Date(b.updatedAt).getTime() - new Date(a.updatedAt).getTime();
81
+ })[0].sessionId;
82
+ }
83
+ } catch {}
84
+ return null;
85
+ }
86
+ /**
87
+ * Get the most recent JSONL file for a project
88
+ */
89
+ getMostRecentJSONL(projectDir) {
90
+ const files = getSessionFilesSync(projectDir);
91
+ return files.length > 0 ? files[0] : null;
92
+ }
93
+ /**
94
+ * Get the session path for an agent
95
+ */
96
+ getSessionPath(agentId) {
97
+ const state = getAgentStateSync(agentId);
98
+ if (!state) return null;
99
+ const projectDir = this.getProjectDirForWorkspace(state.workspace);
100
+ if (!projectDir) return null;
101
+ const sessionId = this.getActiveSessionId(projectDir);
102
+ if (sessionId) {
103
+ const sessionPath = join$1(projectDir, `${sessionId}.jsonl`);
104
+ if (existsSync(sessionPath)) return sessionPath;
105
+ }
106
+ return this.getMostRecentJSONL(projectDir);
107
+ }
108
+ /**
109
+ * Get last activity timestamp for an agent
110
+ *
111
+ * Uses passive detection via JSONL file modification time.
112
+ */
113
+ getLastActivity(agentId) {
114
+ const sessionPath = this.getSessionPath(agentId);
115
+ if (!sessionPath || !existsSync(sessionPath)) return null;
116
+ try {
117
+ return statSync(sessionPath).mtime;
118
+ } catch {
119
+ return null;
120
+ }
121
+ }
122
+ /**
123
+ * Read active heartbeat file if it exists
124
+ */
125
+ getActiveHeartbeat(agentId) {
126
+ const heartbeatPath = join$1(homedir(), ".overdeck", "heartbeats", `${agentId}.json`);
127
+ if (!existsSync(heartbeatPath)) return null;
128
+ try {
129
+ const content = readFileSync(heartbeatPath, "utf-8");
130
+ const data = JSON.parse(content);
131
+ const timestamp = new Date(data.timestamp);
132
+ if ((/* @__PURE__ */ new Date()).getTime() - timestamp.getTime() > 300 * 1e3) return null;
133
+ return {
134
+ timestamp,
135
+ agentId: data.agent_id || agentId,
136
+ source: "active-heartbeat",
137
+ confidence: "high",
138
+ toolName: data.tool_name,
139
+ lastAction: data.last_action,
140
+ currentTask: data.current_task,
141
+ gitBranch: data.git_branch,
142
+ workspace: data.workspace,
143
+ pid: data.pid,
144
+ sessionId: data.session_id
145
+ };
146
+ } catch {
147
+ return null;
148
+ }
149
+ }
150
+ /**
151
+ * Get passive heartbeat from file timestamps
152
+ */
153
+ getPassiveHeartbeat(agentId) {
154
+ const lastActivity = this.getLastActivity(agentId);
155
+ if (!lastActivity) return null;
156
+ return {
157
+ timestamp: lastActivity,
158
+ agentId,
159
+ source: "jsonl",
160
+ confidence: "medium"
161
+ };
162
+ }
163
+ /**
164
+ * Get heartbeat for an agent
165
+ *
166
+ * Tries active heartbeat first (if hooks configured), falls back to passive.
167
+ */
168
+ getHeartbeat(agentId) {
169
+ const activeHeartbeat = this.getActiveHeartbeat(agentId);
170
+ if (activeHeartbeat) return activeHeartbeat;
171
+ return this.getPassiveHeartbeat(agentId);
172
+ }
173
+ /**
174
+ * Get token usage for an agent's current session
175
+ */
176
+ getTokenUsage(agentId) {
177
+ const sessionPath = this.getSessionPath(agentId);
178
+ if (!sessionPath) return null;
179
+ const sessionUsage = parseClaudeSessionSync(sessionPath);
180
+ if (!sessionUsage) return null;
181
+ return sessionUsage.usage;
182
+ }
183
+ /**
184
+ * Get cost breakdown for an agent's current session
185
+ */
186
+ getSessionCost(agentId) {
187
+ const sessionPath = this.getSessionPath(agentId);
188
+ if (!sessionPath) return null;
189
+ const sessionUsage = parseClaudeSessionSync(sessionPath);
190
+ if (!sessionUsage) return null;
191
+ const inputPrice = 3 / 1e6;
192
+ const outputPrice = 15 / 1e6;
193
+ const cacheReadPrice = .3 / 1e6;
194
+ const cacheWritePrice = 3.75 / 1e6;
195
+ const usage = sessionUsage.usage;
196
+ const inputCost = usage.inputTokens * inputPrice;
197
+ const outputCost = usage.outputTokens * outputPrice;
198
+ const cacheReadCost = (usage.cacheReadTokens || 0) * cacheReadPrice;
199
+ const cacheWriteCost = (usage.cacheWriteTokens || 0) * cacheWritePrice;
200
+ return {
201
+ inputCost,
202
+ outputCost,
203
+ cacheReadCost,
204
+ cacheWriteCost,
205
+ totalCost: inputCost + outputCost + cacheReadCost + cacheWriteCost,
206
+ currency: "USD"
207
+ };
208
+ }
209
+ /**
210
+ * Send a message to a running agent
211
+ */
212
+ async sendMessage(agentId, message) {
213
+ if (!sessionExistsSync(agentId)) throw new Error(`Agent ${agentId} is not running`);
214
+ await Effect.runPromise(sendKeys(agentId, message));
215
+ const mailDir = join$1(getAgentDir(agentId), "mail");
216
+ mkdirSync(mailDir, { recursive: true });
217
+ writeFileSync(join$1(mailDir, `${(/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-")}.md`), `# Message\n\n${message}\n`);
218
+ }
219
+ /**
220
+ * Kill an agent
221
+ */
222
+ killAgent(agentId) {
223
+ if (!sessionExistsSync(agentId)) throw new Error(`Agent ${agentId} is not running`);
224
+ killSessionSync(agentId);
225
+ saveAgentRuntimeState(agentId, {
226
+ state: "idle",
227
+ lastActivity: (/* @__PURE__ */ new Date()).toISOString()
228
+ });
229
+ const state = getAgentStateSync(agentId);
230
+ if (state) {
231
+ state.status = "stopped";
232
+ saveAgentStateSync(state);
233
+ }
234
+ }
235
+ /**
236
+ * Spawn a new agent
237
+ */
238
+ async spawnAgent(config) {
239
+ const state = await spawnAgent({
240
+ issueId: config.agentId.replace(/^agent-/, ""),
241
+ workspace: config.workspace,
242
+ harness: "claude-code",
243
+ model: determineModel({
244
+ model: config.model,
245
+ role: "work",
246
+ spawnKey: `work:${config.agentId.replace(/^agent-/, "")}`
247
+ }),
248
+ role: "work",
249
+ prompt: config.prompt,
250
+ startedBy: config.env?.["OVERDECK_AGENT_STARTED_BY"] ?? "runtime:claude-code"
251
+ });
252
+ const projectDir = this.getProjectDirForWorkspace(config.workspace);
253
+ const sessionId = projectDir ? this.getActiveSessionId(projectDir) : void 0;
254
+ return {
255
+ id: state.id,
256
+ sessionId: sessionId || "unknown",
257
+ runtime: "claude-code",
258
+ model: state.model,
259
+ workspace: state.workspace,
260
+ startedAt: new Date(state.startedAt)
261
+ };
262
+ }
263
+ /**
264
+ * List all sessions for this runtime
265
+ */
266
+ listSessions(workspace) {
267
+ const sessions = [];
268
+ if (workspace) {
269
+ const projectDir = this.getProjectDirForWorkspace(workspace);
270
+ if (projectDir) {
271
+ const files = getSessionFilesSync(projectDir);
272
+ for (const file of files) {
273
+ const session = this.parseSessionFile(file, workspace);
274
+ if (session) sessions.push(session);
275
+ }
276
+ }
277
+ } else {
278
+ const projectDirs = getProjectDirsSync();
279
+ for (const projectDir of projectDirs) {
280
+ const files = getSessionFilesSync(projectDir);
281
+ for (const file of files) {
282
+ const session = this.parseSessionFile(file);
283
+ if (session) sessions.push(session);
284
+ }
285
+ }
286
+ }
287
+ return sessions;
288
+ }
289
+ /**
290
+ * Parse a session file into a Session object
291
+ */
292
+ parseSessionFile(file, workspace) {
293
+ const sessionUsage = parseClaudeSessionSync(file);
294
+ if (!sessionUsage) return null;
295
+ const stat = statSync(file);
296
+ return {
297
+ id: sessionUsage.sessionId,
298
+ agentId: "unknown",
299
+ workspace: workspace || "unknown",
300
+ model: sessionUsage.model,
301
+ startedAt: new Date(sessionUsage.startTime),
302
+ lastActivity: stat.mtime,
303
+ tokenUsage: sessionUsage.usage
304
+ };
305
+ }
306
+ /**
307
+ * Check if an agent is running
308
+ */
309
+ isRunning(agentId) {
310
+ return sessionExistsSync(agentId);
311
+ }
312
+ };
313
+ /**
314
+ * Create a Claude Code runtime instance
315
+ */
316
+ function createClaudeCodeRuntimeSync() {
317
+ return new ClaudeCodeRuntimeSync();
318
+ }
319
+ //#endregion
320
+ //#region ../../lib/cost-parsers/pi-parser.ts
321
+ init_errors();
322
+ //#endregion
323
+ //#region ../../lib/runtimes/pi.ts
324
+ init_behavior();
325
+ init_tmux();
326
+ init_pi_fifo();
327
+ init_errors();
328
+ promisify(exec);
329
+ //#endregion
330
+ //#region ../../lib/runtimes/acp.ts
331
+ init_codex();
332
+ init_ohmypi();
333
+ init_tmux();
334
+ init_context();
335
+ init_harness_binary();
336
+ init_paths();
337
+ init_behavior();
338
+ init_tmux_cli();
339
+ const execAsync = promisify(exec);
340
+ const HOST_REQUEST_TIMEOUT_MS = 5e3;
341
+ const SPAWN_READY_TIMEOUT_MS = 3e4;
342
+ const POLL_INTERVAL_MS = 100;
343
+ var AcpSpawnTimeout = class extends Error {
344
+ code = "ACP_SPAWN_TIMEOUT";
345
+ constructor(agentId) {
346
+ super(`ACP agent ${agentId} did not write acp-session-id within ${SPAWN_READY_TIMEOUT_MS}ms`);
347
+ this.name = "AcpSpawnTimeout";
348
+ }
349
+ };
350
+ var AcpRuntimeSync = class {
351
+ name = "acp";
352
+ provider;
353
+ overdeckHome;
354
+ execCommand;
355
+ prepareLaunch;
356
+ resolveAgentStates;
357
+ constructor(options = {}) {
358
+ this.provider = options.provider ?? "kimi";
359
+ this.overdeckHome = options.overdeckHome;
360
+ this.execCommand = options.execCommand ?? execAsync;
361
+ this.prepareLaunch = options.prepareLaunch ?? (() => prepareHarnessLaunch("acp"));
362
+ this.resolveAgentStates = options.listAgentStates ?? (() => listAgentStates());
363
+ }
364
+ getHarnessBehavior() {
365
+ return getRuntimeBehavior("acp");
366
+ }
367
+ getSessionPath(agentId) {
368
+ return join(this.home(), "agents", agentId, "acp-session.jsonl");
369
+ }
370
+ getLastActivity(agentId) {
371
+ try {
372
+ return statSync$1(this.getSessionPath(agentId)).mtime;
373
+ } catch {
374
+ return null;
375
+ }
376
+ }
377
+ getHeartbeat(agentId) {
378
+ const lastActivity = this.getLastActivity(agentId);
379
+ if (!lastActivity) return null;
380
+ return {
381
+ timestamp: lastActivity,
382
+ agentId,
383
+ source: "jsonl",
384
+ confidence: "medium"
385
+ };
386
+ }
387
+ getTokenUsage(_agentId) {
388
+ return null;
389
+ }
390
+ getSessionCost(_agentId) {
391
+ return null;
392
+ }
393
+ async sendMessage(agentId, message) {
394
+ const socketPath = this.socketPath(agentId);
395
+ if (!existsSync$1(socketPath)) throw new Error(`ACP agent ${agentId}: host socket is not available`);
396
+ const token = this.readToken(agentId);
397
+ if (!token) throw new Error(`ACP agent ${agentId}: missing acp-token`);
398
+ await postUnixSocketJson(socketPath, token, {
399
+ op: "message",
400
+ content: message
401
+ }, HOST_REQUEST_TIMEOUT_MS);
402
+ }
403
+ async killAgent(agentId) {
404
+ const socketPath = this.socketPath(agentId);
405
+ const token = this.readToken(agentId);
406
+ if (existsSync$1(socketPath) && token) try {
407
+ await postUnixSocketJson(socketPath, token, { op: "interrupt" }, HOST_REQUEST_TIMEOUT_MS);
408
+ } catch {}
409
+ if (await pollUntilSessionGone(agentId, 2e3)) return;
410
+ let panePid = null;
411
+ try {
412
+ const { stdout } = await this.execCommand(`tmux -L ${shellQuote(getManagedTmuxSocketName())} list-panes -t ${shellQuote(agentId)} -F '#{pane_pid}' 2>/dev/null`);
413
+ panePid = stdout.trim() || null;
414
+ if (panePid) await this.execCommand(`kill -TERM -- -${panePid} 2>/dev/null || kill -TERM ${panePid} 2>/dev/null || true`);
415
+ } catch {}
416
+ if (await pollUntilSessionGone(agentId, 5e3)) return;
417
+ if (panePid) try {
418
+ await this.execCommand(`kill -KILL -- -${panePid} 2>/dev/null || kill -KILL ${panePid} 2>/dev/null || true`);
419
+ } catch {}
420
+ if (await tmuxSessionExists(agentId)) await tmuxKillSession(agentId);
421
+ }
422
+ async spawnAgent(config) {
423
+ const provider = config.provider ?? this.provider;
424
+ const { binaryPath } = await this.prepareLaunch();
425
+ const contextFile = materializeAcpContextFile(join(this.home(), "agents", config.agentId), config.workspace);
426
+ const command = [
427
+ "node",
428
+ shellQuote(join(packageRoot, "dist", "acp-host.js")),
429
+ "--agent",
430
+ shellQuote(config.agentId),
431
+ "--provider",
432
+ shellQuote(provider),
433
+ "--workspace",
434
+ shellQuote(config.workspace),
435
+ "--binary-path",
436
+ shellQuote(binaryPath),
437
+ "--context-file",
438
+ shellQuote(contextFile)
439
+ ];
440
+ if (config.sessionId) command.push("--resume", shellQuote(config.sessionId));
441
+ if (config.model) command.push("--model", shellQuote(config.model));
442
+ rmSync$1(this.agentPath(config.agentId, "acp-session-id"), { force: true });
443
+ rmSync$1(this.agentPath(config.agentId, "acp-launch-error"), { force: true });
444
+ await tmuxCreateSession(config.agentId, config.workspace, command.join(" "), {
445
+ ...config.env,
446
+ OVERDECK_AGENT_ID: config.agentId
447
+ });
448
+ try {
449
+ const sessionId = await this.waitForSessionId(config.agentId);
450
+ if (!sessionId) throw new AcpSpawnTimeout(config.agentId);
451
+ if (config.prompt) await this.sendMessage(config.agentId, config.prompt);
452
+ return {
453
+ id: config.agentId,
454
+ sessionId,
455
+ runtime: "acp",
456
+ model: config.model ?? "",
457
+ workspace: config.workspace,
458
+ startedAt: /* @__PURE__ */ new Date()
459
+ };
460
+ } catch (error) {
461
+ if (await tmuxSessionExists(config.agentId)) await tmuxKillSession(config.agentId);
462
+ throw error;
463
+ }
464
+ }
465
+ listSessions(workspace) {
466
+ const sessions = [];
467
+ for (const state of this.resolveAgentStates()) {
468
+ if (state.harness !== "acp") continue;
469
+ if (workspace && state.workspace !== workspace) continue;
470
+ const sessionId = this.readSessionId(state.id);
471
+ if (!sessionId) continue;
472
+ const sessionPath = this.getSessionPath(state.id);
473
+ let lastActivity;
474
+ try {
475
+ lastActivity = statSync$1(sessionPath).mtime;
476
+ } catch {
477
+ try {
478
+ lastActivity = statSync$1(this.agentPath(state.id, "acp-session-id")).mtime;
479
+ } catch {
480
+ continue;
481
+ }
482
+ }
483
+ sessions.push({
484
+ id: sessionId,
485
+ agentId: state.id,
486
+ workspace: state.workspace,
487
+ model: state.model ?? "",
488
+ startedAt: new Date(state.startedAt),
489
+ lastActivity,
490
+ tokenUsage: {
491
+ inputTokens: 0,
492
+ outputTokens: 0
493
+ }
494
+ });
495
+ }
496
+ return sessions;
497
+ }
498
+ async isRunning(agentId) {
499
+ return tmuxSessionExists(agentId);
500
+ }
501
+ home() {
502
+ return this.overdeckHome ?? getOverdeckHome();
503
+ }
504
+ agentPath(agentId, file) {
505
+ return join(this.home(), "agents", agentId, file);
506
+ }
507
+ socketPath(agentId) {
508
+ return join(this.home(), "sockets", `acp-${agentId}.sock`);
509
+ }
510
+ readToken(agentId) {
511
+ try {
512
+ return readFileSync$1(this.agentPath(agentId, "acp-token"), "utf8").trim() || null;
513
+ } catch {
514
+ return null;
515
+ }
516
+ }
517
+ readLaunchError(agentId) {
518
+ try {
519
+ return readFileSync$1(this.agentPath(agentId, "acp-launch-error"), "utf8").trim() || null;
520
+ } catch {
521
+ return null;
522
+ }
523
+ }
524
+ readSessionId(agentId) {
525
+ try {
526
+ return readFileSync$1(this.agentPath(agentId, "acp-session-id"), "utf8").trim() || null;
527
+ } catch {
528
+ return null;
529
+ }
530
+ }
531
+ async waitForSessionId(agentId) {
532
+ const deadline = Date.now() + SPAWN_READY_TIMEOUT_MS;
533
+ while (Date.now() < deadline) {
534
+ const launchError = this.readLaunchError(agentId);
535
+ if (launchError) throw new Error(`ACP host ${agentId} failed to start: ${launchError}`);
536
+ const sessionId = this.readSessionId(agentId);
537
+ if (sessionId) return sessionId;
538
+ await delay(POLL_INTERVAL_MS);
539
+ }
540
+ return null;
541
+ }
542
+ };
543
+ async function pollUntilSessionGone(agentId, timeoutMs) {
544
+ const deadline = Date.now() + timeoutMs;
545
+ while (Date.now() < deadline) {
546
+ if (!await tmuxSessionExists(agentId)) return true;
547
+ await delay(POLL_INTERVAL_MS);
548
+ }
549
+ return false;
550
+ }
551
+ function delay(ms) {
552
+ return new Promise((resolve) => setTimeout(resolve, ms));
553
+ }
554
+ function shellQuote(value) {
555
+ return `'${value.replace(/'/g, `'\\''`)}'`;
556
+ }
557
+ function postUnixSocketJson(socketPath, token, body, timeoutMs) {
558
+ return new Promise((resolve, reject) => {
559
+ let settled = false;
560
+ let timeout;
561
+ const finish = (callback) => {
562
+ if (settled) return;
563
+ settled = true;
564
+ if (timeout) clearTimeout(timeout);
565
+ callback();
566
+ };
567
+ const client = request({
568
+ socketPath,
569
+ path: "/",
570
+ method: "POST",
571
+ headers: {
572
+ "content-type": "application/json",
573
+ [BRIDGE_TOKEN_HEADER]: token
574
+ }
575
+ }, (response) => {
576
+ const chunks = [];
577
+ response.on("data", (chunk) => chunks.push(chunk));
578
+ response.on("end", () => {
579
+ const responseBody = Buffer.concat(chunks).toString("utf8");
580
+ const status = response.statusCode ?? 0;
581
+ if (status < 200 || status >= 300) {
582
+ finish(() => reject(/* @__PURE__ */ new Error(`ACP host returned HTTP ${status}: ${responseBody}`)));
583
+ return;
584
+ }
585
+ finish(() => resolve({
586
+ status,
587
+ body: responseBody
588
+ }));
589
+ });
590
+ });
591
+ if (timeoutMs !== void 0) {
592
+ timeout = setTimeout(() => {
593
+ client.destroy(/* @__PURE__ */ new Error(`ACP host request timed out after ${timeoutMs}ms`));
594
+ }, timeoutMs);
595
+ timeout.unref?.();
596
+ }
597
+ client.once("error", (error) => finish(() => reject(error)));
598
+ client.end(JSON.stringify(body));
599
+ });
600
+ }
601
+ function createAcpRuntimeSync(options = {}) {
602
+ return new AcpRuntimeSync(options);
603
+ }
604
+ //#endregion
605
+ //#region ../../lib/runtimes/index.ts
606
+ init_behavior();
607
+ init_kimi_code();
608
+ init_agents();
609
+ /**
610
+ * Runtime registry implementation
611
+ *
612
+ * Manages multiple runtime adapters and provides lookup by agent ID.
613
+ */
614
+ var RuntimeRegistry = class {
615
+ runtimes = /* @__PURE__ */ new Map();
616
+ /**
617
+ * Register a runtime adapter
618
+ */
619
+ register(runtime) {
620
+ this.runtimes.set(runtime.name, runtime);
621
+ }
622
+ /**
623
+ * Get a runtime by name
624
+ */
625
+ get(name) {
626
+ return this.runtimes.get(name);
627
+ }
628
+ /**
629
+ * Get all registered runtimes
630
+ */
631
+ getAll() {
632
+ return Array.from(this.runtimes.values());
633
+ }
634
+ /**
635
+ * Get the runtime for a specific agent.
636
+ *
637
+ * Reads the agent's state file and dispatches by `state.harness`. When
638
+ * the harness field is missing or carries a legacy value (e.g. 'claude'
639
+ * from pre-PAN-636 wire format), we fall back to the claude-code runtime
640
+ * to preserve back-compat (PAN-636 ac2).
641
+ */
642
+ getRuntimeForAgent(agentId) {
643
+ const state = getAgentStateSync(agentId);
644
+ if (!state) return null;
645
+ const harness = state.harness;
646
+ if (harness === "ohmypi" || harness === "pi") return this.get("ohmypi") ?? null;
647
+ if (harness === "codex") return this.get("codex") ?? null;
648
+ if (harness === "acp") return this.get("acp") ?? null;
649
+ if (harness === "kimi-code") return this.get("kimi-code") ?? null;
650
+ return this.get("claude-code") ?? null;
651
+ }
652
+ };
653
+ /**
654
+ * Global runtime registry instance
655
+ */
656
+ let globalRegistry = null;
657
+ /**
658
+ * Get the global runtime registry
659
+ *
660
+ * Creates a new registry if one doesn't exist.
661
+ * Registers Claude Code runtime by default.
662
+ */
663
+ function getGlobalRegistry() {
664
+ if (!globalRegistry) {
665
+ globalRegistry = new RuntimeRegistry();
666
+ globalRegistry.register(createClaudeCodeRuntimeSync());
667
+ globalRegistry.register(createOhmypiRuntimeSync());
668
+ globalRegistry.register(createCodexRuntimeSync());
669
+ globalRegistry.register(createAcpRuntimeSync());
670
+ globalRegistry.register(createKimiCodeRuntimeSync());
671
+ }
672
+ return globalRegistry;
673
+ }
674
+ /**
675
+ * Helper to get the runtime for an agent from the global registry
676
+ */
677
+ function getRuntimeForAgent(agentId) {
678
+ return getGlobalRegistry().getRuntimeForAgent(agentId);
679
+ }
680
+ //#endregion
681
+ //#region ../../lib/cloister/agent-idle.ts
682
+ init_agents();
683
+ init_tmux();
684
+ function getAgentEffectiveLastActivityMs(agentId) {
685
+ const candidates = [];
686
+ const runtimeState = getAgentRuntimeStateSync(agentId);
687
+ const runtimeMs = runtimeState?.lastActivity ? new Date(runtimeState.lastActivity).getTime() : NaN;
688
+ if (Number.isFinite(runtimeMs)) candidates.push(runtimeMs);
689
+ try {
690
+ const tmuxActivity = listPaneValuesSync(agentId, "#{window_activity}").map((value) => Number.parseInt(value.trim(), 10) * 1e3).filter(Number.isFinite);
691
+ candidates.push(...tmuxActivity);
692
+ } catch {}
693
+ try {
694
+ const heartbeat = getRuntimeForAgent(agentId)?.getHeartbeat(agentId);
695
+ if (heartbeat?.timestamp) {
696
+ const heartbeatMs = heartbeat.timestamp.getTime();
697
+ if (Number.isFinite(heartbeatMs)) candidates.push(heartbeatMs);
698
+ }
699
+ } catch {}
700
+ return candidates.length > 0 ? Math.max(...candidates) : null;
701
+ }
702
+ /**
703
+ * PAN-3677: work-product activity only — the runtime mirror (hook-driven) plus
704
+ * the transcript heartbeat, deliberately EXCLUDING tmux `window_activity`.
705
+ * Claude Code repaints its spinner / background-task panel every second while a
706
+ * turn is in flight, so `window_activity` stays fresh even when the provider
707
+ * call is hung and no work is happening. A mid-turn wedge detector keyed on
708
+ * {@link getAgentEffectiveLastActivityMs} (which takes the MAX) would never see
709
+ * the PAN-3677 planning wedge — the hung sessions looked busy on the pane for
710
+ * minutes while producing no tool calls, no transcript writes, and no hook
711
+ * events. This signal goes stale exactly when real work stops.
712
+ */
713
+ function getAgentWorkActivityMs(agentId) {
714
+ const candidates = [];
715
+ const runtimeState = getAgentRuntimeStateSync(agentId);
716
+ const runtimeMs = runtimeState?.lastActivity ? new Date(runtimeState.lastActivity).getTime() : NaN;
717
+ if (Number.isFinite(runtimeMs)) candidates.push(runtimeMs);
718
+ try {
719
+ const heartbeat = getRuntimeForAgent(agentId)?.getHeartbeat(agentId);
720
+ if (heartbeat?.timestamp) {
721
+ const heartbeatMs = heartbeat.timestamp.getTime();
722
+ if (Number.isFinite(heartbeatMs)) candidates.push(heartbeatMs);
723
+ }
724
+ } catch {}
725
+ return candidates.length > 0 ? Math.max(...candidates) : null;
726
+ }
727
+ function isAgentIdleForNudge(agentId, staleActiveThresholdMs = 300 * 1e3, now = Date.now()) {
728
+ const runtimeState = getAgentRuntimeStateSync(agentId);
729
+ const effectiveLastActivityMs = getAgentEffectiveLastActivityMs(agentId);
730
+ if (!runtimeState) {
731
+ if (effectiveLastActivityMs === null) {
732
+ console.log(`[deacon] ${agentId}: no runtime.json — skipping (hook not yet fired)`);
733
+ return false;
734
+ }
735
+ return now - effectiveLastActivityMs > staleActiveThresholdMs;
736
+ }
737
+ if (runtimeState.state === "suspended" || runtimeState.state === "stopped") return false;
738
+ if (runtimeState.state === "waiting-on-human") return false;
739
+ if (runtimeState.state === "idle") return true;
740
+ return now - (effectiveLastActivityMs ?? new Date(runtimeState.lastActivity).getTime()) > staleActiveThresholdMs;
741
+ }
742
+ //#endregion
743
+ export { getRuntimeForAgent as i, getAgentWorkActivityMs as n, isAgentIdleForNudge as r, getAgentEffectiveLastActivityMs as t };
744
+
745
+ //# sourceMappingURL=agent-idle-ONBssBN_.js.map