@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
@@ -1,26 +1,30 @@
1
- import { c as init_activity_logger, t as emitActivityDetailedSync } from "./activity-logger-BAVLrkR7.js";
2
- import { f as resolveWorkspaceForCwd, o as init_resolver } from "./resolver-CuAULbLs.js";
3
- import { a as init_event_store, i as initEventStore } from "./event-store-D7qcJXuZ.js";
4
- import { _ as isTerminalTurnDiffSummaryStatus, g as getMaxTurnDiffSummariesPerAgent, h as applyEvent, m as INITIAL_READ_MODEL_STATE, t as init_src, v as trimTurnDiffSummaries } from "./src-DudQNYVw.js";
5
- import { f as init_agent_state_sync, p as listOverdeckAgentStatesSync } from "./pipeline-agent-reader-BLc43dVJ.js";
6
- import { c as init_agents, t as AgentsResolver } from "./agents-CqQJW75N.js";
1
+ import { fn as init_projects, vn as listProjectsSync } from "./config-yaml-D9nfpEx1.js";
2
+ import { l as init_activity_logger, n as emitActivityDetailedSync, t as appendDomainEventAsync } from "./activity-logger-BWZhVphb.js";
3
+ import { f as resolveWorkspaceForCwd, o as init_resolver } from "./resolver-gxv97jsQ.js";
4
+ import { a as init_event_store, i as initEventStore } from "./event-store-BCSgMubf.js";
5
+ import { _ as isTerminalTurnDiffSummaryStatus, g as getMaxTurnDiffSummariesPerAgent, h as applyEvent, m as INITIAL_READ_MODEL_STATE, t as init_src, v as trimTurnDiffSummaries } from "./src-CY2Wl8IX.js";
6
+ import { f as init_agent_state_sync, p as listOverdeckAgentStatesSync } from "./pipeline-agent-reader-D-6okryb.js";
7
+ import { c as init_agents, t as AgentsResolver } from "./agents-jXgqpHca.js";
7
8
  import { t as emitBootReconciledStopEvents } from "./boot-reconciled-stop-events-fbtwLQEZ.js";
8
- import { f as resolveStatusFile, i as init_paths } from "./paths-CRLnDgcI.js";
9
- import { a as resolveSessionContextBriefingPath, r as init_briefing_freshness } from "./briefing-freshness-CDJcmHHZ.js";
10
- import { n as listFeatureRegistryEntries, t as init_feature_registry_storage } from "./feature-registry-storage-ewNSIVsQ.js";
11
- import { m as listCheckpoints, s as diffCheckpointFiles, t as captureCheckpoint } from "./checkpoint-manager-BlOOdzLF.js";
12
- import { r as LinearClientOptionalLive, t as LinearClient } from "./linear-client-B0cIkTs4.js";
13
- import { r as GitHubClientOptionalLive, t as GitHubClient } from "./github-client-DkJVR908.js";
14
- import { r as RallyClientOptionalLive, t as RallyClient } from "./rally-client-D6Feq1Ka.js";
15
- import { n as resolveGitHubIssueSync, r as resolveTrackerTypeSync, t as init_tracker_utils } from "./tracker-utils-xnVJVrrO.js";
16
- import { n as init_issue_service_singleton, t as getSharedIssueService } from "./issue-service-singleton-BN_2MXp4.js";
9
+ import { f as resolveStatusFile, i as init_paths } from "./paths-DEe9j-kw.js";
10
+ import { a as resolveSessionContextBriefingPath, r as init_briefing_freshness } from "./briefing-freshness-e_OEYZEe.js";
11
+ import { n as listFeatureRegistryEntries, t as init_feature_registry_storage } from "./feature-registry-storage-zh3ZXW6f.js";
12
+ import { h as listCheckpoints, m as isCheckpointTargetDisabled, s as diffCheckpointFiles, t as captureCheckpoint } from "./checkpoint-manager-DOwRGFff.js";
13
+ import { r as LinearClientOptionalLive, t as LinearClient } from "./linear-client-7fQThJTc.js";
14
+ import { r as GitHubClientOptionalLive, t as GitHubClient } from "./github-client-DAbuXLuk.js";
15
+ import { r as RallyClientOptionalLive, t as RallyClient } from "./rally-client-qKbCNRVW.js";
16
+ import { n as resolveGitHubIssueSync, r as resolveTrackerTypeSync, t as init_tracker_utils } from "./tracker-utils-DJAOAuMN.js";
17
+ import { n as init_issue_service_singleton, t as getSharedIssueService } from "./issue-service-singleton-B2xy-IS9.js";
17
18
  import { dirname } from "node:path";
18
19
  import { Context, Effect, Layer, Option, Queue, Stream } from "effect";
19
20
  import { basename as basename$1, dirname as dirname$1, join as join$1, resolve as resolve$1 } from "path";
20
21
  import { mkdir, writeFile } from "node:fs/promises";
21
22
  import { randomUUID } from "crypto";
22
23
  import { readFile as readFile$1, stat as stat$1 } from "fs/promises";
24
+ import { execFile } from "node:child_process";
25
+ import { promisify } from "node:util";
23
26
  //#region ../../lib/queue-position.ts
27
+ init_projects();
24
28
  init_activity_logger();
25
29
  init_resolver();
26
30
  init_event_store();
@@ -431,6 +435,8 @@ const ReadModelServiceLive = Layer.effect(ReadModelService, Effect.gen(function*
431
435
  enrichStats: state.enrichStats,
432
436
  enrichProgressBySessionId: state.enrichProgressBySessionId,
433
437
  embedProgressBySessionId: state.embedProgressBySessionId,
438
+ ciByProjectKey: state.ciByProjectKey,
439
+ restartGate: state.restartGate ?? void 0,
434
440
  timestamp: (/* @__PURE__ */ new Date()).toISOString()
435
441
  };
436
442
  }
@@ -439,7 +445,7 @@ const ReadModelServiceLive = Layer.effect(ReadModelService, Effect.gen(function*
439
445
  };
440
446
  const getSnapshot = Effect.gen(function* () {
441
447
  try {
442
- const { getSharedIssueService } = yield* Effect.promise(() => import("./issue-service-singleton-CL6hESX2.js"));
448
+ const { getSharedIssueService } = yield* Effect.promise(() => import("./issue-service-singleton-CvgNAWqK.js"));
443
449
  const currentIssues = cleanIssues(getSharedIssueService().getIssues());
444
450
  if (currentIssues.length > 0 || state.issuesRaw.length === 0) state = {
445
451
  ...state,
@@ -472,12 +478,12 @@ const ReadModelServiceLive = Layer.effect(ReadModelService, Effect.gen(function*
472
478
  const getAgentIdBySessionId = (sessionId) => Effect.sync(() => state.agentIdBySessionId[sessionId] ?? null);
473
479
  const agentsResolver = yield* AgentsResolver;
474
480
  yield* Effect.gen(function* () {
475
- const { reconstructCacheAuto } = yield* Effect.promise(() => import("./reconstruct-cache-BP8UIKt7.js"));
481
+ const { reconstructCacheAuto } = yield* Effect.promise(() => import("./reconstruct-cache-mxIYCnqs.js"));
476
482
  const result = yield* Effect.promise(() => reconstructCacheAuto());
477
483
  const overdeckAgents = yield* agentsResolver.list({});
478
484
  let dbOnlyReviewStatusByIssueId = {};
479
485
  try {
480
- const { getAllReviewStatusesFromDb } = yield* Effect.promise(() => import("./review-status-sync-YthpOH_q.js"));
486
+ const { getAllReviewStatusesFromDb } = yield* Effect.promise(() => import("./review-status-sync-Bq00Loey.js"));
481
487
  dbOnlyReviewStatusByIssueId = mergeDbOnlyReviewStatuses(result.reviewStatusByIssueId, getAllReviewStatusesFromDb());
482
488
  } catch (err) {
483
489
  console.error("[ReadModel] Failed to layer in DB-only review statuses:", err);
@@ -486,7 +492,7 @@ const ReadModelServiceLive = Layer.effect(ReadModelService, Effect.gen(function*
486
492
  let sequence = 0;
487
493
  let recentActivity = [];
488
494
  try {
489
- const { getEventStore } = yield* Effect.promise(() => import("./event-store-BgEjNsvk.js"));
495
+ const { getEventStore } = yield* Effect.promise(() => import("./event-store-Db4w4YIY.js"));
490
496
  const eventStore = getEventStore();
491
497
  yield* Effect.promise(() => emitBootReconciledStopEvents(eventStore, result.markedStoppedIds, result.agentsById, "[ReadModel] Failed to emit boot-reconciled stop events:"));
492
498
  sequence = eventStore.getLatestSequence();
@@ -508,7 +514,7 @@ const ReadModelServiceLive = Layer.effect(ReadModelService, Effect.gen(function*
508
514
  console.log(`[ReadModel] Bootstrapped from local database: ${Object.keys(agentsById).length} agents, ${Object.keys(result.reviewStatusByIssueId).length} review statuses, ${result.issuesEnumerated} in-flight issue(s), seq=${sequence}`);
509
515
  (async () => {
510
516
  try {
511
- const { listCheckpoints, diffCheckpointFiles, getCheckpointTimestamp, deleteLegacyCheckpointRefs } = await import("./checkpoint-manager-CKg1tn34.js");
517
+ const { listCheckpoints, diffCheckpointFiles, getCheckpointTimestamp, deleteLegacyCheckpointRefs } = await import("./checkpoint-manager-CKr42Usw.js");
512
518
  const agents = Object.values(state.agentsById);
513
519
  const firstAgentWithWorkspace = agents.find((a) => a.workspace);
514
520
  if (firstAgentWithWorkspace?.workspace) {
@@ -565,7 +571,7 @@ const ReadModelServiceLive = Layer.effect(ReadModelService, Effect.gen(function*
565
571
  }
566
572
  })();
567
573
  try {
568
- const { getSharedIssueService } = yield* Effect.promise(() => import("./issue-service-singleton-CL6hESX2.js"));
574
+ const { getSharedIssueService } = yield* Effect.promise(() => import("./issue-service-singleton-CvgNAWqK.js"));
569
575
  const issueService = getSharedIssueService();
570
576
  const mergeT0 = performance.now();
571
577
  const currentIssues = cleanIssues(issueService.getIssues());
@@ -589,7 +595,7 @@ const ReadModelServiceLive = Layer.effect(ReadModelService, Effect.gen(function*
589
595
  issuesRaw: cleaned
590
596
  };
591
597
  try {
592
- if (!_cachedEventStore) import("./event-store-BgEjNsvk.js").then(({ getEventStore }) => {
598
+ if (!_cachedEventStore) import("./event-store-Db4w4YIY.js").then(({ getEventStore }) => {
593
599
  _cachedEventStore = getEventStore();
594
600
  try {
595
601
  _cachedEventStore.emitOnly({
@@ -605,7 +611,7 @@ const ReadModelServiceLive = Layer.effect(ReadModelService, Effect.gen(function*
605
611
  payload: { issues: cleaned }
606
612
  });
607
613
  } catch {}
608
- import("./backlog-auto-trigger-DuOGpdDW.js").then(({ triggerDebouncedIncrementalPass }) => {
614
+ import("./backlog-auto-trigger-CCEpr4YT.js").then(({ triggerDebouncedIncrementalPass }) => {
609
615
  triggerDebouncedIncrementalPass(process.cwd());
610
616
  }).catch(() => {});
611
617
  });
@@ -647,7 +653,7 @@ async function assembleLiveBriefingMarkdown(input = {}) {
647
653
  "",
648
654
  "- Persistent memory across sessions through observations, status updates, and rollups.",
649
655
  "- Situational awareness from the live dashboard read model.",
650
- "- Issue-scoped workspaces, beads, xBRIEF plans, and role handoffs for autonomous work.",
656
+ "- Issue-scoped workspaces, xBRIEF plans, and role handoffs for autonomous work.",
651
657
  "- Cross-workspace reach through `pan memory search --all-workspaces` when sibling context is relevant.",
652
658
  "- Searchable feature ownership through the Knowledge Registry.",
653
659
  "",
@@ -867,6 +873,158 @@ async function readRegistryEntries(listRegistryEntries, logger) {
867
873
  }
868
874
  }
869
875
  //#endregion
876
+ //#region ../../lib/ci/project-ci-github.ts
877
+ const execFileAsync = promisify(execFile);
878
+ const projectCiGhApi = async (path) => {
879
+ const { stdout } = await execFileAsync("gh", [
880
+ "api",
881
+ path,
882
+ "-H",
883
+ "Accept: application/vnd.github+json"
884
+ ], {
885
+ encoding: "utf-8",
886
+ timeout: 15e3,
887
+ maxBuffer: 8 * 1024 * 1024
888
+ });
889
+ return JSON.parse(stdout);
890
+ };
891
+ async function resolveDefaultBranchHead(repo, branch, ghApi = projectCiGhApi) {
892
+ return (await ghApi(`repos/${repo}/branches/${encodeURIComponent(branch)}`)).commit?.sha ?? null;
893
+ }
894
+ //#endregion
895
+ //#region ../../lib/overdeck/project-ci-fill.ts
896
+ function createProjectCiFillState() {
897
+ return { fingerprints: /* @__PURE__ */ new Map() };
898
+ }
899
+ function projectionFingerprint(observation) {
900
+ const suites = Object.entries(observation.suites).sort(([left], [right]) => left.localeCompare(right)).map(([suiteId, suite]) => [
901
+ suiteId,
902
+ suite.status,
903
+ suite.conclusion,
904
+ suite.htmlUrl ?? null
905
+ ]);
906
+ return JSON.stringify([
907
+ observation.repo,
908
+ observation.branch,
909
+ observation.headSha,
910
+ suites
911
+ ]);
912
+ }
913
+ /** Fetch a complete Actions projection for the independently-resolved default
914
+ * branch head. The second branch lookup prevents publishing a projection when
915
+ * the branch advances while workflow pages are being collected. */
916
+ async function fillProjectCiObservation(project, deps = {}) {
917
+ const repo = project.config.github_repo;
918
+ if (!repo) return null;
919
+ const branch = project.config.workspace?.default_branch ?? "main";
920
+ const ghApi = deps.ghApi ?? projectCiGhApi;
921
+ try {
922
+ const headSha = await resolveDefaultBranchHead(repo, branch, ghApi);
923
+ if (!headSha) return null;
924
+ const runs = [];
925
+ for (let page = 1;; page += 1) {
926
+ const pageRuns = (await ghApi(`repos/${repo}/actions/runs?branch=${encodeURIComponent(branch)}&head_sha=${encodeURIComponent(headSha)}&per_page=100&page=${page}`)).workflow_runs ?? [];
927
+ runs.push(...pageRuns);
928
+ if (pageRuns.length < 100) break;
929
+ }
930
+ if (await resolveDefaultBranchHead(repo, branch, ghApi) !== headSha) return null;
931
+ const observedAt = deps.now?.() ?? (/* @__PURE__ */ new Date()).toISOString();
932
+ const suites = {};
933
+ for (const run of runs) {
934
+ if (run.head_sha !== headSha || run.check_suite_id == null) continue;
935
+ const suiteId = String(run.check_suite_id);
936
+ const suiteObservedAt = run.updated_at ?? observedAt;
937
+ const existing = suites[suiteId];
938
+ if (existing?.observedAt && existing.observedAt > suiteObservedAt) continue;
939
+ suites[suiteId] = {
940
+ status: run.status ?? "queued",
941
+ conclusion: run.conclusion ?? null,
942
+ htmlUrl: run.html_url,
943
+ observedAt: suiteObservedAt
944
+ };
945
+ }
946
+ return {
947
+ projectKey: project.key,
948
+ repo,
949
+ branch,
950
+ headSha,
951
+ suites,
952
+ observedAt
953
+ };
954
+ } catch {
955
+ return null;
956
+ }
957
+ }
958
+ /** Fill every project through one complete, idempotent projection event. */
959
+ async function fillAllProjectCi(deps = {}) {
960
+ const append = deps.append ?? appendDomainEventAsync;
961
+ const projects = deps.projects ?? listProjectsSync();
962
+ const state = deps.state ?? createProjectCiFillState();
963
+ let appended = 0;
964
+ for (const project of projects) {
965
+ if (!project.config.github_repo) continue;
966
+ const observation = await fillProjectCiObservation(project, {
967
+ ghApi: deps.ghApi,
968
+ now: deps.now
969
+ });
970
+ if (!observation) continue;
971
+ const fingerprint = projectionFingerprint(observation);
972
+ if (state.fingerprints.get(project.key) === fingerprint) continue;
973
+ if (await append({
974
+ type: "project.ci_head_observed",
975
+ timestamp: observation.observedAt,
976
+ payload: observation
977
+ })) {
978
+ state.fingerprints.set(project.key, fingerprint);
979
+ appended += 1;
980
+ }
981
+ }
982
+ return appended;
983
+ }
984
+ function startProjectCiRefill(intervalMs, deps = {}) {
985
+ const state = createProjectCiFillState();
986
+ const fill = deps.fill ?? (() => fillAllProjectCi({ state }));
987
+ const warn = deps.warn ?? ((message) => console.warn(message));
988
+ let running = false;
989
+ const run = () => {
990
+ if (running) return;
991
+ running = true;
992
+ fill().catch((err) => {
993
+ warn(`[overdeck] Project CI fill failed: ${err instanceof Error ? err.message : String(err)}`);
994
+ }).finally(() => {
995
+ running = false;
996
+ });
997
+ };
998
+ run();
999
+ const timer = (deps.setIntervalFn ?? setInterval)(run, intervalMs);
1000
+ timer.unref();
1001
+ return timer;
1002
+ }
1003
+ //#endregion
1004
+ //#region services/project-ci-refill-startup.ts
1005
+ let resolveProjectionReady;
1006
+ let projectionReady = false;
1007
+ let projectionReadyPromise = createProjectionReadyPromise();
1008
+ function createProjectionReadyPromise() {
1009
+ return new Promise((resolve) => {
1010
+ resolveProjectionReady = resolve;
1011
+ });
1012
+ }
1013
+ /** Mark the event-store → read-model subscription as installed. */
1014
+ function markEventStoreProjectionReady() {
1015
+ if (projectionReady) return;
1016
+ projectionReady = true;
1017
+ resolveProjectionReady();
1018
+ }
1019
+ /** Wait until events appended by background services can reach the read model. */
1020
+ function whenEventStoreProjectionReady() {
1021
+ return projectionReadyPromise;
1022
+ }
1023
+ async function startProjectCiRefillAfterProjectionReady(intervalMs, deps = {}) {
1024
+ await (deps.whenReady ?? whenEventStoreProjectionReady)();
1025
+ return (deps.start ?? startProjectCiRefill)(intervalMs);
1026
+ }
1027
+ //#endregion
870
1028
  //#region services/domain-services.ts
871
1029
  /**
872
1030
  * Domain service wrappers — Effect services over existing lib modules (PAN-428 B5, PAN-433)
@@ -878,11 +1036,30 @@ async function readRegistryEntries(listRegistryEntries, logger) {
878
1036
  * appended event is pushed to ReadModelService.applyEvent() so the in-memory
879
1037
  * projection stays current.
880
1038
  */
1039
+ init_activity_logger();
1040
+ init_src();
881
1041
  var EventStoreService = class extends Context.Service()("overdeck/dashboard/EventStoreService") {};
882
1042
  /** Map a domain event to a detailed activity log entry. Returns null for uninteresting events. */
883
1043
  function shouldRefreshSessionContext(type) {
884
1044
  return type === "issues.snapshot" || type.startsWith("agent.") || type.startsWith("review.") || type.startsWith("pipeline.") || type.startsWith("planning.") || type.startsWith("plan.") || type.startsWith("workspace.") || type.startsWith("issue.") || type.startsWith("memory.") || type.startsWith("cost.") || type.startsWith("merge.") || type.startsWith("system.health_");
885
1045
  }
1046
+ /**
1047
+ * Resolve the workspace a checkpoint may be captured in, or null when capture
1048
+ * must be skipped (PAN-3725).
1049
+ *
1050
+ * Skipped when the agent has no workspace, when the agent has reached a
1051
+ * terminal status (a stopped/done/archived/closed agent produces no new turns,
1052
+ * so capturing is pure waste — same rule the read model's checkpoint
1053
+ * reconciliation uses), or when the workspace was already found not to be a git
1054
+ * repository.
1055
+ */
1056
+ function checkpointCaptureTarget(agent) {
1057
+ const workspace = typeof agent?.workspace === "string" ? agent.workspace : "";
1058
+ if (!workspace) return null;
1059
+ if (isTerminalTurnDiffSummaryStatus(agent?.status)) return null;
1060
+ if (isCheckpointTargetDisabled(workspace)) return null;
1061
+ return workspace;
1062
+ }
886
1063
  function mapDomainEventToDetailed(event) {
887
1064
  const p = event.payload ?? {};
888
1065
  const issueId = p["issueId"] ?? void 0;
@@ -1157,6 +1334,7 @@ const EventStoreServiceLive = Layer.effect(EventStoreService, Effect.gen(functio
1157
1334
  payload: event.payload
1158
1335
  });
1159
1336
  });
1337
+ markEventStoreProjectionReady();
1160
1338
  startSessionContextWriter({
1161
1339
  readSnapshot: () => Effect.runPromise(readModel.getSnapshot),
1162
1340
  subscribe: (listener) => store.subscribe((event) => {
@@ -1178,9 +1356,8 @@ const EventStoreServiceLive = Layer.effect(EventStoreService, Effect.gen(functio
1178
1356
  checkpointCooldown.set(agentId, Date.now());
1179
1357
  (async () => {
1180
1358
  try {
1181
- const agent = (await Effect.runPromise(readModel.getSnapshot)).agents.find((a) => a.id === agentId);
1182
- if (!agent?.workspace) return;
1183
- const workspace = agent.workspace;
1359
+ const workspace = checkpointCaptureTarget((await Effect.runPromise(readModel.getSnapshot)).agents.find((a) => a.id === agentId));
1360
+ if (!workspace) return;
1184
1361
  const turnId = `turn-${Date.now()}-${randomUUID().slice(0, 8)}`;
1185
1362
  await Effect.runPromise(captureCheckpoint(workspace, agentId, turnId));
1186
1363
  const checkpoints = await Effect.runPromise(listCheckpoints(workspace, agentId));
@@ -1538,6 +1715,6 @@ const IssueLifecycleLive = Layer.effect(IssueLifecycle, Effect.gen(function* ()
1538
1715
  */
1539
1716
  const IssueLifecycleWithClientLive = IssueLifecycleLive.pipe(Layer.provide(LinearClientOptionalLive), Layer.provide(GitHubClientOptionalLive), Layer.provide(RallyClientOptionalLive));
1540
1717
  //#endregion
1541
- export { EventStoreServiceLive as a, activityEntriesFromStoredEvents as c, toAgentStatus as d, toRole as f, EventStoreService as i, getClosedIssueIdsForReadSource as l, findPositionInQueueSync as m, IssueLifecycleLive as n, ReadModelService as o, computeQueuePositionFromStatusSync as p, IssueLifecycleWithClientLive as r, ReadModelServiceLive as s, IssueLifecycle as t, toAgentResolution as u };
1718
+ export { EventStoreServiceLive as a, ReadModelService as c, getClosedIssueIdsForReadSource as d, toAgentResolution as f, findPositionInQueueSync as g, computeQueuePositionFromStatusSync as h, EventStoreService as i, ReadModelServiceLive as l, toRole as m, IssueLifecycleLive as n, startProjectCiRefillAfterProjectionReady as o, toAgentStatus as p, IssueLifecycleWithClientLive as r, resolveDefaultBranchHead as s, IssueLifecycle as t, activityEntriesFromStoredEvents as u };
1542
1719
 
1543
- //# sourceMappingURL=issue-lifecycle-3N8XF7lP.js.map
1720
+ //# sourceMappingURL=issue-lifecycle-D9nLErvS.js.map
@@ -1,2 +1,2 @@
1
- import { n as IssueLifecycleLive, r as IssueLifecycleWithClientLive, t as IssueLifecycle } from "./issue-lifecycle-3N8XF7lP.js";
1
+ import { n as IssueLifecycleLive, r as IssueLifecycleWithClientLive, t as IssueLifecycle } from "./issue-lifecycle-D9nLErvS.js";
2
2
  export { IssueLifecycle, IssueLifecycleLive, IssueLifecycleWithClientLive };
@@ -1,11 +1,12 @@
1
1
  import { n as __esmMin, r as __exportAll } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { On as resolveProjectFromIssueSync, fn as init_projects, p as loadConfigSync, t as init_config_yaml } from "./config-yaml-BwOEANMr.js";
3
- import { n as openDatabase, t as init_driver } from "./driver-CmsY2RLl.js";
4
- import { n as init_dist_src, t as Octokit } from "./dist-src-BM9eudEd.js";
5
- import { m as readWorkspacePlan, r as findPlan, s as init_io } from "./io-DfvO2xyh.js";
6
- import { a as init_tracker_config, n as getLinearApiKey, o as validateRallyConfig, r as getRallyConfig, t as getGitHubConfig } from "./tracker-config-DVzhaUxO.js";
7
- import { n as mapGitHubStateToCanonical, t as init_state_mapping } from "./state-mapping-BVSs84bO.js";
8
- import { g as loadReviewStatusesForIssues, p as init_review_status } from "./review-status-DBnR5t4z.js";
2
+ import { On as resolveProjectFromIssueSync, fn as init_projects, p as loadConfigSync, t as init_config_yaml } from "./config-yaml-D9nfpEx1.js";
3
+ import { n as openDatabase, t as init_driver } from "./driver-BtcFz-qu.js";
4
+ import { a as init_dist_src, i as Octokit } from "./factory-BrdqXBeK.js";
5
+ import { m as readWorkspacePlan, r as findPlan, s as init_io } from "./io-DKrWd3gX.js";
6
+ import { a as init_tracker_config, n as getLinearApiKey, o as validateRallyConfig, r as getRallyConfig, t as getGitHubConfig } from "./tracker-config-CJzPhSHv.js";
7
+ import { n as mapGitHubStateToCanonical, t as init_state_mapping } from "./state-mapping-D2yC81Vy.js";
8
+ import { n as resolveMissingIssue, t as init_issue_title_fallback } from "./issue-title-fallback-DTSCQVu0.js";
9
+ import { g as loadReviewStatusesForIssues, p as init_review_status } from "./review-status-yOGD2MuK.js";
9
10
  import { Effect } from "effect";
10
11
  import { existsSync } from "fs";
11
12
  import { join } from "path";
@@ -351,6 +352,13 @@ function shouldRefreshPlanningStateForIssue(issue) {
351
352
  return canonical !== "done" && canonical !== "canceled";
352
353
  }
353
354
  /**
355
+ * Display status for a canonical state — the same mapping the GitHub/Linear
356
+ * fetch formatters apply inline, extracted for the PAN-3659 backfill adapter.
357
+ */
358
+ function displayStatusForCanonical(canonical) {
359
+ return canonical === "todo" ? "Todo" : canonical === "in_progress" ? "In Progress" : canonical === "in_review" ? "In Review" : canonical === "verifying_on_main" ? "Verifying" : canonical === "done" ? "Done" : canonical === "canceled" ? "Canceled" : canonical === "backlog" ? "Backlog" : "Todo";
360
+ }
361
+ /**
354
362
  * Cheap change detection for issue arrays.
355
363
  * Compares length + the most recent updatedAt timestamp instead of
356
364
  * serializing the entire array with JSON.stringify (which caused
@@ -489,6 +497,7 @@ var init_issue_data_service = __esmMin((() => {
489
497
  init_dist_src();
490
498
  init_state_mapping();
491
499
  init_cache_service();
500
+ init_issue_title_fallback();
492
501
  init_tracker_config();
493
502
  init_review_status();
494
503
  init_projects();
@@ -543,6 +552,11 @@ var init_issue_data_service = __esmMin((() => {
543
552
  reviewStatusRefreshQueued = false;
544
553
  reviewStatusRefreshIssueIds = /* @__PURE__ */ new Set();
545
554
  getIssuesCache = /* @__PURE__ */ new Map();
555
+ /** Issues resolved on demand after aging out of the tracker sync window
556
+ * (PAN-3659). Keyed by uppercase identifier; merged into computeIssues and
557
+ * pruned when the windowed poll covers the issue again. */
558
+ backfilledIssues = /* @__PURE__ */ new Map();
559
+ backfillInFlight = /* @__PURE__ */ new Map();
546
560
  /** Register a callback invoked whenever issue data changes (PAN-433). */
547
561
  onIssuesChanged(fn) {
548
562
  this._onIssuesChanged = fn;
@@ -672,6 +686,10 @@ var init_issue_data_service = __esmMin((() => {
672
686
  ...this.trackers.linear.lastFetchedIssues,
673
687
  ...this.trackers.rally.lastFetchedIssues
674
688
  ];
689
+ if (this.backfilledIssues.size > 0) {
690
+ const fetchedKeys = new Set(allIssues.map((issue) => issue?.identifier?.toLowerCase()).filter(Boolean));
691
+ for (const row of this.backfilledIssues.values()) if (!fetchedKeys.has(row.identifier.toLowerCase())) allIssues.push(row);
692
+ }
675
693
  try {
676
694
  allIssues = allIssues.map((issue) => {
677
695
  const shadowState = this.shadowStatesCache.get(issue.identifier.toLowerCase());
@@ -865,7 +883,7 @@ var init_issue_data_service = __esmMin((() => {
865
883
  async ensureShadowStateLoaded() {
866
884
  if (this.shadowStateModule) return;
867
885
  try {
868
- this.shadowStateModule = await import("./shadow-state-e7250VUx.js");
886
+ this.shadowStateModule = await import("./shadow-state-nGhCNXT2.js");
869
887
  await this.refreshShadowStatesCache();
870
888
  } catch {}
871
889
  }
@@ -939,11 +957,106 @@ var init_issue_data_service = __esmMin((() => {
939
957
  }
940
958
  pushUpdated() {
941
959
  this.invalidateGetIssuesCache();
960
+ this.pruneBackfilledIssues();
942
961
  const cachedIssues = this.getCachedTrackerIssues();
943
962
  this.schedulePlanningRefreshForIssues(cachedIssues);
944
963
  this.scheduleReviewStatusRefreshForIssues(cachedIssues);
945
964
  this._onIssuesChanged?.(this.getIssues());
946
965
  }
966
+ /**
967
+ * PAN-3659: ensure an issue that aged out of the tracker sync window still
968
+ * appears in getIssues(). The GitHub poll only fetches closed issues
969
+ * updated within `closedWindowDays`, so an issue closed longer ago vanishes
970
+ * from the read model and the issue view falls back to "Issue details"
971
+ * instead of the title. This resolves the issue once through the tracker's
972
+ * getIssue door (memoized in issue-title-fallback), adapts it to the
973
+ * dashboard shape, and holds it in a bucket that survives windowed polls
974
+ * until the poll covers the issue again. Fire-and-forget safe: concurrent
975
+ * and repeat calls share one in-flight resolution.
976
+ */
977
+ async backfillIssue(issueId) {
978
+ const key = issueId.trim().toUpperCase();
979
+ if (!key) return;
980
+ if (this.hasIssueByIdentifier(key)) return;
981
+ let pending = this.backfillInFlight.get(key);
982
+ if (!pending) {
983
+ pending = (async () => {
984
+ const issue = await resolveMissingIssue(key);
985
+ if (!issue || this.hasIssueByIdentifier(key)) return;
986
+ this.backfilledIssues.set(key, this.formatBackfilledIssue(issue, key));
987
+ this.pushUpdated();
988
+ })().catch(() => {}).finally(() => this.backfillInFlight.delete(key));
989
+ this.backfillInFlight.set(key, pending);
990
+ }
991
+ return pending;
992
+ }
993
+ hasIssueByIdentifier(uppercaseIdentifier) {
994
+ const lower = uppercaseIdentifier.toLowerCase();
995
+ for (const tracker of [
996
+ "github",
997
+ "linear",
998
+ "rally"
999
+ ]) if (this.trackers[tracker]?.lastFetchedIssues.some((issue) => issue?.identifier?.toLowerCase() === lower)) return true;
1000
+ return this.backfilledIssues.has(uppercaseIdentifier);
1001
+ }
1002
+ /** Drop backfilled rows the windowed poll now covers again. */
1003
+ pruneBackfilledIssues() {
1004
+ if (this.backfilledIssues.size === 0) return;
1005
+ const fetched = /* @__PURE__ */ new Set();
1006
+ for (const tracker of [
1007
+ "github",
1008
+ "linear",
1009
+ "rally"
1010
+ ]) for (const issue of this.trackers[tracker]?.lastFetchedIssues ?? []) {
1011
+ const identifier = issue?.identifier?.toLowerCase();
1012
+ if (identifier) fetched.add(identifier);
1013
+ }
1014
+ for (const key of [...this.backfilledIssues.keys()]) if (fetched.has(key.toLowerCase())) this.backfilledIssues.delete(key);
1015
+ }
1016
+ /**
1017
+ * Adapt a tracker-door Issue to the dashboard issue shape used by the
1018
+ * windowed fetch formatters. Owner/repo/number come from the issue URL,
1019
+ * not from config, so this stays hermetic under test.
1020
+ */
1021
+ formatBackfilledIssue(issue, identifier) {
1022
+ const canonicalStatus = issue.tracker === "github" ? mapGitHubStateToCanonical(issue.state, issue.labels ?? []) : issue.state === "closed" ? "done" : issue.state === "in_review" ? "in_review" : issue.state === "in_progress" ? "in_progress" : "todo";
1023
+ const [, ghOwner, ghRepo, ghNumber] = (issue.tracker === "github" ? issue.url?.match(/github\.com\/([^/]+)\/([^/]+)\/issues\/(\d+)/) : null) ?? [];
1024
+ const sourceRepo = ghOwner && ghRepo ? `${ghOwner}/${ghRepo}` : void 0;
1025
+ const labelNames = issue.labels ?? [];
1026
+ return {
1027
+ id: sourceRepo ? `github-${ghOwner}-${ghRepo}-${ghNumber}` : `backfill-${issue.tracker}-${identifier.toLowerCase()}`,
1028
+ identifier,
1029
+ title: issue.title,
1030
+ description: issue.description ?? "",
1031
+ author: issue.author ?? "",
1032
+ status: displayStatusForCanonical(canonicalStatus),
1033
+ canonicalStatus,
1034
+ state: canonicalStatus,
1035
+ priority: issue.priority ?? (labelNames.some((l) => l.includes("priority") && l.includes("high")) ? 2 : labelNames.some((l) => l.includes("priority") && l.includes("urgent")) ? 1 : labelNames.some((l) => l.includes("priority") && l.includes("low")) ? 4 : 3),
1036
+ assignee: issue.assignee ? {
1037
+ name: issue.assignee,
1038
+ email: `${issue.assignee}@${issue.tracker}`
1039
+ } : void 0,
1040
+ labels: labelNames,
1041
+ url: issue.url,
1042
+ createdAt: issue.createdAt,
1043
+ updatedAt: issue.updatedAt,
1044
+ completedAt: issue.state === "closed" ? issue.updatedAt : void 0,
1045
+ project: sourceRepo ? {
1046
+ id: `github-${ghOwner}-${ghRepo}`,
1047
+ name: sourceRepo,
1048
+ color: "#333",
1049
+ icon: "github"
1050
+ } : {
1051
+ id: `backfill-${issue.tracker}`,
1052
+ name: issue.tracker,
1053
+ color: "#333",
1054
+ icon: issue.tracker
1055
+ },
1056
+ source: issue.tracker,
1057
+ sourceRepo
1058
+ };
1059
+ }
947
1060
  getCachedTrackerIssues() {
948
1061
  return [
949
1062
  ...this.trackers.github.lastFetchedIssues,
@@ -1408,8 +1521,8 @@ var init_issue_data_service = __esmMin((() => {
1408
1521
  }
1409
1522
  if (!this.cache.isStale("rally", "issues") && this.trackers.rally.lastFetchedIssues.length > 0) return;
1410
1523
  try {
1411
- const { RallyTracker } = await import("./rally-CjayjUIl.js");
1412
- const { findProjectsByRallyProject } = await import("./projects-DvPEAP18.js");
1524
+ const { RallyTracker } = await import("./rally-CxhVgIQ6.js");
1525
+ const { findProjectsByRallyProject } = await import("./projects-LftaVK99.js");
1413
1526
  const rallyProjects = findProjectsByRallyProject();
1414
1527
  let allFormatted = [];
1415
1528
  if (rallyProjects.length > 0) {
@@ -1508,4 +1621,4 @@ var init_issue_service_singleton = __esmMin((() => {
1508
1621
  //#endregion
1509
1622
  export { startSharedIssueService as a, parseIntegerHeader as c, issue_service_singleton_exports as i, init_issue_service_singleton as n, CacheService as o, isSharedIssueServiceStarted as r, init_cache_service as s, getSharedIssueService as t };
1510
1623
 
1511
- //# sourceMappingURL=issue-service-singleton-BN_2MXp4.js.map
1624
+ //# sourceMappingURL=issue-service-singleton-B2xy-IS9.js.map
@@ -1,3 +1,3 @@
1
- import { a as startSharedIssueService, n as init_issue_service_singleton, r as isSharedIssueServiceStarted, t as getSharedIssueService } from "./issue-service-singleton-BN_2MXp4.js";
1
+ import { a as startSharedIssueService, n as init_issue_service_singleton, r as isSharedIssueServiceStarted, t as getSharedIssueService } from "./issue-service-singleton-B2xy-IS9.js";
2
2
  init_issue_service_singleton();
3
3
  export { getSharedIssueService, isSharedIssueServiceStarted, startSharedIssueService };