@overdeck/desktop 0.47.0 → 0.48.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (444) hide show
  1. package/drizzle/overdeck/0000_overdeck_init.sql +59 -0
  2. package/package.json +1 -1
  3. package/server/{acceptance-criteria-10Ur5Dne.js → acceptance-criteria-DmtLDbtt.js} +2 -2
  4. package/server/{activity-logger-CyteR4JO.js → activity-logger-Co5qljIj.js} +55 -4
  5. package/server/activity-logger-K7FYGF_z.js +3 -0
  6. package/server/{advancing-selfheal-BNwqxseD.js → advancing-selfheal-8AR68Asf.js} +6 -6
  7. package/server/{agent-gc-C3h9Or3a.js → agent-gc-BmYeT6eH.js} +5 -5
  8. package/server/agent-state-Dq3s84-P.js +3 -0
  9. package/server/{agent-state-service-C63p_ftq.js → agent-state-service-DK1Vay1E.js} +1 -1
  10. package/server/{agent-state-service-Ds6OeFvo.js → agent-state-service-rjnzpHDx.js} +6 -6
  11. package/server/agent-state-source-Ds968-j6.js +21 -0
  12. package/server/{agents-J5mEnekq.js → agents-Dls7tfJH.js} +5 -5
  13. package/server/agents-IPSa5kzn.js +3 -0
  14. package/server/{archive-planning-BwhxeP7C.js → archive-planning-Cq7cyinS.js} +51 -24
  15. package/server/archive-planning-MbkGCBIY.js +2 -0
  16. package/server/{artifact-index-jobs-D1q_vR3V.js → artifact-index-jobs-Dj_8kpTd.js} +3 -3
  17. package/server/{assemble-Bgwqv-Ro.js → assemble-BTCmbcfH.js} +20 -13
  18. package/server/{auto-spawn-consent-CQ9Bi9q6.js → auto-spawn-consent-lXqRJ1Dr.js} +304 -121
  19. package/server/{backlog-auto-trigger-n1lzPgN4.js → backlog-auto-trigger-Dn-amzt6.js} +3 -3
  20. package/server/{behavior-td6-xhQk.js → behavior-DIMQMRzs.js} +2 -2
  21. package/server/{boot-reconciled-stop-events-C7gGe3oB.js → boot-reconciled-stop-events-D6SeUTIr.js} +1 -1
  22. package/server/{bridge-pool-patrol-CYH2OLb5.js → bridge-pool-patrol-BEjt-xF3.js} +2 -2
  23. package/server/{briefing-freshness-DRqZ8lAz.js → briefing-freshness-3PNmL_p3.js} +2 -2
  24. package/server/{build-info-7yiEpl6u.js → build-info-CJg813Hm.js} +3 -3
  25. package/server/{build-info-CpG__c63.js → build-info-CXyeFsXu.js} +1 -1
  26. package/server/{checkpoint-manager-CkKmB0wZ.js → checkpoint-manager-9t7G5c1V.js} +1 -1
  27. package/server/{checkpoint-manager-DBcyNR8w.js → checkpoint-manager-B2G38R3p.js} +3 -3
  28. package/server/checkpoint-worker.js +1 -1
  29. package/server/{checkpoints-Wm963lm8.js → checkpoints-CuBgiXO-.js} +1 -1
  30. package/server/{checkpoints-D95apurL.js → checkpoints-VTZMd4Qm.js} +2 -2
  31. package/server/{claude-hooks-provision-Bjitl9aI.js → claude-hooks-provision-55SyQaPz.js} +2 -2
  32. package/server/{claude-hooks-provision-4RPxNkE8.js → claude-hooks-provision-CEUT-CZd.js} +1 -1
  33. package/server/{claude-permissions-CpbpvUQ2.js → claude-permissions-Cn0dIu2i.js} +2 -2
  34. package/server/{claude-settings-overlay-BzkHYDwR.js → claude-settings-overlay-B19hdzSA.js} +1 -1
  35. package/server/{claude-settings-overlay-_H9Yrzab.js → claude-settings-overlay-Yg_ANh81.js} +2 -2
  36. package/server/{cli-Cte9ZFGn.js → cli-C9S84iTy.js} +79 -22
  37. package/server/cli-M1cwZ__d.js +3 -0
  38. package/server/{cliproxy-C5fMJ7rY.js → cliproxy-CJq3KXU6.js} +2 -2
  39. package/server/{cliproxy-DaAbWMjC.js → cliproxy-DgEZlr7Y.js} +1 -1
  40. package/server/{close-issue-BPh1ARCF.js → close-issue-DPxRddGR.js} +5 -5
  41. package/server/{closed-issue-reaper-DoOZqGFK.js → closed-issue-reaper-C5Zn4GRS.js} +13 -13
  42. package/server/{closed-issue-reaper-DHRfRMrp.js → closed-issue-reaper-D-2B48Ri.js} +1 -1
  43. package/server/{codex-o8FJwzmy.js → codex-B3n_rkwn.js} +1 -1
  44. package/server/{codex-BzGDW_d3.js → codex-CjkD1PJu.js} +6 -6
  45. package/server/{codex-parser-Dt-ycU8L.js → codex-parser-DpB1Il-P.js} +2 -2
  46. package/server/{compaction-continuation-CvXpbZ4w.js → compaction-continuation-DZD9ukSE.js} +3 -3
  47. package/server/{config-CL3Gyvja.js → config-C5saf4Ja.js} +1 -1
  48. package/server/{config-BvLe652W.js → config-DnLJATZk.js} +2 -2
  49. package/server/{config-Bi3u1VK7.js → config-DvM8jtQK.js} +2 -2
  50. package/server/{config-yaml-CxdwhAIA.js → config-yaml-BSCqwmX0.js} +11299 -10972
  51. package/server/{conflict-gate-CX80JYYS.js → conflict-gate-DXa_L28t.js} +1 -1
  52. package/server/{conflict-gate-E4nt7ZeS.js → conflict-gate-WfVqgalf.js} +4 -4
  53. package/server/{context-layers-DAG83UZt.js → context-layers-D7UqH9Ab.js} +2 -2
  54. package/server/{context-layers-C_IIysnm.js → context-layers-Dpz3Vd6d.js} +3 -3
  55. package/server/{control-settings-CiqGxXnc.js → control-settings-DVf6pKyv.js} +4 -4
  56. package/server/{conversation-compaction-BE3CNtHF.js → conversation-compaction-5XuH6OBn.js} +1 -1
  57. package/server/{conversation-compaction-D6-yLtqt.js → conversation-compaction-COrbnX1J.js} +8 -8
  58. package/server/{conversation-service-DBxoYMDl.js → conversation-service-BufdtnZF.js} +169 -10
  59. package/server/{conversation-service-D_TS2b1r.js → conversation-service-DnUyIiLb.js} +1 -1
  60. package/server/{conversations-D0UEdLtk.js → conversations-B4rxz-Wl.js} +17 -10
  61. package/server/{conversations-BKDVpB-3.js → conversations-D1bwxQMy.js} +1 -1
  62. package/server/{cost-DpgYmYqR.js → cost-CpFDrJUS.js} +46 -2
  63. package/server/{cost-DS1s0DbG.js → cost-KLuwKCW9.js} +3 -3
  64. package/server/{cost-sync-tOCCGnEt.js → cost-sync-cesi9dp8.js} +3 -3
  65. package/server/{dag-BtkgLeqY.js → dag-BYiFMqpU.js} +2 -2
  66. package/server/{dangerous-git-ops-CFLykHWt.js → dangerous-git-ops-BKvd3-Hk.js} +1 -1
  67. package/server/dashboard-db-worker.js +7 -7
  68. package/server/{deacon-BIblC-WX.js → deacon-BbsWw8a6.js} +3 -3
  69. package/server/{deacon-pLRLbPvR.js → deacon-HdEh0Esp.js} +863 -214
  70. package/server/deacon-event-client-C93rvOT7.js +237 -0
  71. package/server/deacon-event-client-Ck5Ei7Mn.js +3 -0
  72. package/server/{deacon-nudge-log-B08gF0mh.js → deacon-nudge-log-BND_97Wo.js} +4 -3
  73. package/server/{deacon-pending-lifecycle-B-Io84AP.js → deacon-pending-lifecycle-CD3YsiQK.js} +3 -3
  74. package/server/deacon-swarm-DgWADWd_.js +2 -0
  75. package/server/{deacon-swarm-v5PMun-m.js → deacon-swarm-rqrl4TMs.js} +39 -18
  76. package/server/deacon.js +12 -210
  77. package/server/{dead-end-trip-D8A3msX9.js → dead-end-trip-DSF23CLX.js} +4 -3
  78. package/server/dead-end-trip-zKlS4v6f.js +2 -0
  79. package/server/delivery-CsbQdZkS.js +3 -0
  80. package/server/{deploy-patrol-sYgOxLeb.js → deploy-patrol-kARAkji4.js} +17 -21
  81. package/server/{deploy-queue-VfohaPN_.js → deploy-queue-Bj0HJT1i.js} +2 -2
  82. package/server/{deploy-queue-gHJBycaF.js → deploy-queue-rjTUy1RM.js} +1 -1
  83. package/server/{deploy-window-D4DQb8VP.js → deploy-window-B2IM-9G5.js} +10 -44
  84. package/server/{deploy-window-CFRZ0-kt.js → deploy-window-BNFWnA8D.js} +1 -1
  85. package/server/{dev-supervisor-DiOBDM1c.js → dev-supervisor-B1mZYXz4.js} +2 -2
  86. package/server/{devcontainer-renderer-BUOIlfgD.js → devcontainer-renderer-B-o68Z5B.js} +3 -3
  87. package/server/{dist-C3A8B8wM.js → dist-3W--cGMa.js} +1 -1
  88. package/server/dist-BR0QtwmS.js +3 -0
  89. package/server/{dist-src-C0adpegX.js → dist-src-C-Vk2jNk.js} +1 -1
  90. package/server/{docker-Y3PElJb0.js → docker-DH3jUYg1.js} +1 -1
  91. package/server/{docker-BJzlkqYB.js → docker-meuLKLzV.js} +27 -20
  92. package/server/{dod-DlNtcH6n.js → dod-D7-9dCOD.js} +1 -1
  93. package/server/{driver-CKVGi51s.js → driver-CmsY2RLl.js} +1 -1
  94. package/server/{durable-review-pipeline-DP6bIcOY.js → durable-review-pipeline-CStTgOAf.js} +1 -1
  95. package/server/{durable-review-pipeline-Cibps-Rg.js → durable-review-pipeline-Chq0lzjL.js} +1 -1
  96. package/server/{ensure-devcontainer-DMAbWqtQ.js → ensure-devcontainer-BE3llBWP.js} +1 -1
  97. package/server/{ensure-devcontainer-BAofzBPv.js → ensure-devcontainer-BXrY7C2Z.js} +4 -4
  98. package/server/{esm-shims-BeObUkaw.js → esm-shims-Bzy4ZzNU.js} +1 -1
  99. package/server/event-store-COd2tOx8.js +3 -0
  100. package/server/{event-store-CrHcVC5_.js → event-store-D_AR-Y78.js} +184 -11
  101. package/server/{events-CF8QDbuV.js → events-CCkFWa7X.js} +1 -1
  102. package/server/{events-BNrvchBg.js → events-zjDQozet.js} +3 -3
  103. package/server/{factory-Cmm9Hsho.js → factory-DhavwKVc.js} +5 -5
  104. package/server/{feature-registry-population-B6HpNWRy.js → feature-registry-population-DWGBKyWd.js} +4 -4
  105. package/server/{feature-registry-storage-DJEFx1Pf.js → feature-registry-storage-C5DkXmCM.js} +3 -3
  106. package/server/{features-D5km80UI.js → features-CC47YcCX.js} +2 -2
  107. package/server/{feedback-target-BJ5ZADsu.js → feedback-target-D9Tex35_.js} +1 -1
  108. package/server/{feedback-target-DSxEL6lP.js → feedback-target-DoRCR3L-.js} +18 -7
  109. package/server/{feedback-writer-CoB9Z6aU.js → feedback-writer-CTSuA6lw.js} +1 -1
  110. package/server/{feedback-writer-C27Hak8a.js → feedback-writer-DdsBdtNL.js} +5 -5
  111. package/server/{flywheel-DZZdtiOL.js → flywheel-DHWHzaYK.js} +1 -1
  112. package/server/{flywheel-f662Q-y2.js → flywheel-DJQa9az8.js} +14 -14
  113. package/server/{flywheel-BHx8XuMr.js → flywheel-TacAI9MA.js} +21 -17
  114. package/server/{flywheel-merge-order-Dil0LmdN.js → flywheel-merge-order-D2foPh88.js} +1 -1
  115. package/server/{flywheel-merge-order-D_xLMbJU.js → flywheel-merge-order-DRtex2Dt.js} +7 -7
  116. package/server/forge-CdlCG9aS.js +3 -0
  117. package/server/{forge-BaKGCya6.js → forge-c8LeC-tw.js} +2 -2
  118. package/server/{from-B3tZbB55.js → from-BogSwvr2.js} +1 -1
  119. package/server/{fs-lock-Bre3sGoz.js → fs-lock-D_GeJtXl.js} +3 -3
  120. package/server/{fts-operations-B9jG8wa3.js → fts-operations-DP9R-8Q3.js} +3 -3
  121. package/server/{git-utils-Xg4PFN45.js → git-utils-C31x1lpE.js} +1 -1
  122. package/server/{git-utils-CsvYfJU3.js → git-utils-xQ74FoSn.js} +5 -4
  123. package/server/{github-app-Bmg4R9mv.js → github-app-CpQSDlv8.js} +1 -1
  124. package/server/{github-app-CmNk0zLU.js → github-app-D2QuvZ3j.js} +3 -3
  125. package/server/{github-client-qazkPrg0.js → github-client-D9YvJX5D.js} +3 -3
  126. package/server/{github-client-B6KM9_wA.js → github-client-Tpi3PmKX.js} +1 -1
  127. package/server/{github-pr-lookup-DAcVeRLK.js → github-pr-lookup-DvBMv-IW.js} +2 -2
  128. package/server/{harness-binary-BSpiXaLw.js → harness-binary-BHxWf_sX.js} +7 -6
  129. package/server/{harness-resolve-BAJu5MX8.js → harness-resolve-bj9WMABA.js} +4 -4
  130. package/server/{health-events-BwX32k8d.js → health-events-bCDPn59Z.js} +2 -2
  131. package/server/{health-events-2Z6Wa9SM.js → health-events-qo7Ss34U.js} +1 -1
  132. package/server/{hooks-DbtbimEf.js → hooks-Dyxtg5fk.js} +2 -2
  133. package/server/{hooks-D1g1jKLI.js → hooks-X2XHBB2b.js} +1 -1
  134. package/server/{hume-DXNiu6nQ.js → hume-DrZEGpqc.js} +2 -2
  135. package/server/hume-YPsy4UA8.js +3 -0
  136. package/server/{idle-stack-reaper-Cy-dQzW4.js → idle-stack-reaper-CJ1ygW0p.js} +37 -7
  137. package/server/{idle-stack-reaper-CRA1e0jr.js → idle-stack-reaper-uJGOb-vu.js} +1 -1
  138. package/server/{in-flight-guard-D-sSkADM.js → in-flight-guard-CG2Eo-rr.js} +1 -1
  139. package/server/{infra-BDQDRopn.js → infra-CTrmVqc_.js} +111 -6
  140. package/server/{injection-Bl8d_jHZ.js → injection-BisQ0lpX.js} +1 -1
  141. package/server/{injection-6AGnXxlj.js → injection-C9sxqbc2.js} +73 -193
  142. package/server/{inspect-agent-nXdIptyh.js → inspect-agent-BoSO51YC.js} +12 -12
  143. package/server/inspect-agent-BykeOH4a.js +2 -0
  144. package/server/{internal-token-DzK385vD.js → internal-token-AvXePaQT.js} +2 -2
  145. package/server/{internal-token-Ias7N8Kg.js → internal-token-Djkj-yqK.js} +1 -1
  146. package/server/{io-B00PBNku.js → io-mxOWMZ7I.js} +6 -6
  147. package/server/{issue-closed-BehTG1be.js → issue-closed-Bj_bCv_0.js} +7 -7
  148. package/server/{issue-lifecycle-BqSuQvbn.js → issue-lifecycle-A5YIpDZE.js} +1 -1
  149. package/server/{issue-lifecycle-Birk-ifu.js → issue-lifecycle-BXUqaHzF.js} +32 -28
  150. package/server/{issue-service-singleton-C6ZduvuY.js → issue-service-singleton-BPNEXczv.js} +11 -11
  151. package/server/{issue-service-singleton-B2wXiIlw.js → issue-service-singleton-CcaHjKPR.js} +1 -1
  152. package/server/{issues-DQ5-LatB.js → issues-AX-YBeAQ.js} +2 -2
  153. package/server/{jsonl-parser-BDpnGFCl.js → jsonl-parser-CgYWQ20q.js} +7 -3
  154. package/server/kimi-code-BYbme0aV.js +579 -0
  155. package/server/kimi-code-D_Ppt82c.js +3 -0
  156. package/server/kimi-parser-B-JBg3Pv.js +147 -0
  157. package/server/{label-cleanup-Dwnky8FG.js → label-cleanup-sXUlgdM0.js} +3 -3
  158. package/server/{lifecycle-B4Xdb4cY.js → lifecycle-D2X3al0D.js} +2 -2
  159. package/server/{lifecycle-B3s4sM1G.js → lifecycle-DjlljAZ1.js} +6 -6
  160. package/server/{lifecycle-io-CzTHEooc.js → lifecycle-io-C5nVk55o.js} +1 -1
  161. package/server/{lifecycle-io-DCo6s6ks.js → lifecycle-io-NPm1YtIG.js} +5 -5
  162. package/server/{linear-client-CnbtHiic.js → linear-client--luYwCZg.js} +1 -1
  163. package/server/{linear-client-9uq7fhiV.js → linear-client-B8pLegW1.js} +3 -3
  164. package/server/{linear-mcp-auth-BxUOzswy.js → linear-mcp-auth-BQVWV0I3.js} +6 -6
  165. package/server/{linear-mcp-auth-D46fBCLf.js → linear-mcp-auth-Dx81Zl4G.js} +1 -1
  166. package/server/memory-fts-worker.js +1 -1
  167. package/server/{merge-DiW9RdSB.js → merge-Bx5Bh9pi.js} +3 -3
  168. package/server/{merge-sr8Nrnmi.js → merge-Dqmh_zja.js} +1 -1
  169. package/server/{merge-agent-BLUgRsz3.js → merge-agent-DP9AUY29.js} +33 -33
  170. package/server/{merge-agent-DQTXZk8z.js → merge-agent-DWd0KfiS.js} +1 -1
  171. package/server/{merge-batch-Cp_j9BGk.js → merge-batch-BdmvTEAC.js} +1 -1
  172. package/server/{merge-completeness-BLbB5-6n.js → merge-completeness-BfRwFjRx.js} +1 -1
  173. package/server/{merge-completeness-B46KqhtY.js → merge-completeness-C1FevcDT.js} +4 -4
  174. package/server/merge-ops-B98tKc1e.js +2 -0
  175. package/server/merge-rebase-BLykMwPO.js +2 -0
  176. package/server/{merge-rebase-DIkBjgwq.js → merge-rebase-BX1xKsrE.js} +2 -2
  177. package/server/{merge-set-CBgHfwM0.js → merge-set-DsLjjLEV.js} +4 -4
  178. package/server/{merge-set-DeUxFsC3.js → merge-set-H6epHOsw.js} +1 -1
  179. package/server/{merge-sync-kr4vqyjM.js → merge-sync-BEdfsQV4.js} +2 -2
  180. package/server/{merge-sync-CpGmk6Ch.js → merge-sync-BebcWWGA.js} +1 -1
  181. package/server/{merge-train-Dmrcus12.js → merge-train-D1I0lNOT.js} +4 -4
  182. package/server/{merge-train-deps-D_uGX91G.js → merge-train-deps-D_-C0Pk2.js} +4 -4
  183. package/server/{merge-verification-NvaAd8CZ.js → merge-verification-DN1Ov9bU.js} +6 -6
  184. package/server/{merged-docker-cleanup-worker-Y1R06TEl.js → merged-docker-cleanup-worker-CfXSr2pA.js} +4 -4
  185. package/server/{merged-docker-cleanup-worker-DH_hrGPI.js → merged-docker-cleanup-worker-ybsPyHjB.js} +1 -1
  186. package/server/{multipart-parser-R-oC8dQg.js → multipart-parser-CL5QG8iv.js} +2 -2
  187. package/server/{no-resume-mode-BgD0JUmM.js → no-resume-mode-DUR7Hi98.js} +1 -1
  188. package/server/node_modules/.package-lock.json +7 -7
  189. package/server/node_modules/brace-expansion/README.md +23 -1
  190. package/server/node_modules/brace-expansion/index.js +206 -85
  191. package/server/node_modules/brace-expansion/package.json +1 -1
  192. package/server/node_modules/msgpackr/dist/index-no-eval.cjs +34 -28
  193. package/server/node_modules/msgpackr/dist/index-no-eval.cjs.map +1 -1
  194. package/server/node_modules/msgpackr/dist/index-no-eval.min.js +1 -1
  195. package/server/node_modules/msgpackr/dist/index-no-eval.min.js.map +1 -1
  196. package/server/node_modules/msgpackr/dist/index.js +34 -28
  197. package/server/node_modules/msgpackr/dist/index.js.map +1 -1
  198. package/server/node_modules/msgpackr/dist/index.min.js +1 -1
  199. package/server/node_modules/msgpackr/dist/index.min.js.map +1 -1
  200. package/server/node_modules/msgpackr/dist/node.cjs +36 -29
  201. package/server/node_modules/msgpackr/dist/node.cjs.map +1 -1
  202. package/server/node_modules/msgpackr/dist/test.js +63 -32
  203. package/server/node_modules/msgpackr/dist/test.js.map +1 -1
  204. package/server/node_modules/msgpackr/dist/unpack-no-eval.cjs +34 -28
  205. package/server/node_modules/msgpackr/dist/unpack-no-eval.cjs.map +1 -1
  206. package/server/node_modules/msgpackr/package.json +1 -1
  207. package/server/node_modules/msgpackr/unpack.js +34 -28
  208. package/server/{orphan-proposed-reconciler-DcgTPPFY.js → orphan-proposed-reconciler-CEW1maPl.js} +1 -1
  209. package/server/{orphan-proposed-reconciler-B6vJHxtX.js → orphan-proposed-reconciler-DfqHZftT.js} +23 -22
  210. package/server/package-lock.json +8 -8
  211. package/server/package.json +1 -1
  212. package/server/{pan-dir-DMzF5wne.js → pan-dir-DhgKfO86.js} +21 -6
  213. package/server/{paths-sJBSb7Ul.js → paths-BUuhi6jM.js} +17 -17
  214. package/server/{pending-lifecycle-claim-DilzGfgk.js → pending-lifecycle-claim-DJlA1rTR.js} +2 -2
  215. package/server/{persistent-logger-H_VjuOu7.js → persistent-logger-s8cbpFNV.js} +2 -2
  216. package/server/{pickup-DWhqzliO.js → pickup-2AxtB3dW.js} +1 -1
  217. package/server/{pipeline-membership-C88VBnhJ.js → pipeline-membership-2_okL5bm.js} +1 -1
  218. package/server/{pipeline-membership-D9SBvItj.js → pipeline-membership-Dqv6_0ig.js} +1 -1
  219. package/server/{pipeline-membership-gather-4eR-7Tqy.js → pipeline-membership-gather-4F1-tXKI.js} +1 -1
  220. package/server/{pipeline-membership-gather-CeVGnNJ2.js → pipeline-membership-gather-CtJ_7aGf.js} +149 -17
  221. package/server/{pipeline-notifier-DT6xLFao.js → pipeline-notifier-CO9rxJgB.js} +1 -1
  222. package/server/{pipeline-notifier-D0ALV6Nw.js → pipeline-notifier-DDfVBJhJ.js} +2 -2
  223. package/server/{post-merge-lifecycle-worker-8HIeS_J6.js → post-merge-lifecycle-worker-DmSOkeNp.js} +3 -3
  224. package/server/{project-pipelines-9SKt2bEc.js → project-pipelines-72WE8GVK.js} +2 -2
  225. package/server/{project-repos-B5pIphKg.js → project-repos-BAqDwtvi.js} +16 -11
  226. package/server/project-repos-Df90Zw7Y.js +3 -0
  227. package/server/projects-WqMWCdpa.js +3 -0
  228. package/server/{prompts-CgzMBvQF.js → prompts-XkL10m8M.js} +2 -2
  229. package/server/{providers-BJQSnAAp.js → providers-ClGPGkQ8.js} +15 -12
  230. package/server/providers-DFUOed8u.js +3 -0
  231. package/server/public/assets/{chunk-BO2N2NFS-D_pGACYN.js → chunk-BO2N2NFS-CeQUdPxr.js} +4 -4
  232. package/server/public/assets/{diagram-OG6HWLK6-BO6fe3hH.js → diagram-OG6HWLK6-B7rgk4yT.js} +1 -1
  233. package/server/public/assets/{dist-5zingMiA.js → dist-2RPazfXY.js} +3 -3
  234. package/server/public/assets/{dist-CVxhbI2E.js → dist-B9NInrVZ.js} +1 -1
  235. package/server/public/assets/{ganttDiagram-6RSMTGT7-Bgj4A7kp.js → ganttDiagram-6RSMTGT7-Bxp0gV14.js} +1 -1
  236. package/server/public/assets/{highlighted-body-OFNGDK62-DNPK7_cm.js → highlighted-body-OFNGDK62-CzoRTVlC.js} +1 -1
  237. package/server/public/assets/index-Cml-kHo6.css +1 -0
  238. package/server/public/assets/{index-DEpY-D1O.js → index-CvN8cEgs.js} +216 -215
  239. package/server/public/assets/{linear-BB0jQT16.js → linear-CFEEl3ND.js} +1 -1
  240. package/server/public/assets/mermaid-GHXKKRXX-CpV7nCBM.js +1 -0
  241. package/server/public/assets/{pieDiagram-4H26LBE5-DeGIzzpZ.js → pieDiagram-4H26LBE5-BeR8R0cr.js} +1 -1
  242. package/server/public/assets/{prod-XBLvikex.js → prod-CYjzjCrn.js} +4 -4
  243. package/server/public/assets/{quadrantDiagram-W4KKPZXB-BV9SLeWz.js → quadrantDiagram-W4KKPZXB-BpcTkFuW.js} +1 -1
  244. package/server/public/assets/{sankeyDiagram-5OEKKPKP-Dwja0gj8.js → sankeyDiagram-5OEKKPKP-Bx2ETEV5.js} +1 -1
  245. package/server/public/assets/{xychartDiagram-2RQKCTM6-DCB4qvfw.js → xychartDiagram-2RQKCTM6-BKgEAFaj.js} +1 -1
  246. package/server/public/index.html +2 -2
  247. package/server/{pull-requests-7BgLDsIo.js → pull-requests-B-KrUph5.js} +3 -3
  248. package/server/{pull-requests-Dq0y6IxE.js → pull-requests-DK5k92B4.js} +1 -1
  249. package/server/{queries-C-MUZaIy.js → queries-DVpl1vsU.js} +1212 -193
  250. package/server/{rally-CPysR4T_.js → rally-DbE561hD.js} +3 -3
  251. package/server/rally-O_st_X7n.js +3 -0
  252. package/server/{rally-api-8Ptlp2os.js → rally-api-CZLeEd2C.js} +2 -2
  253. package/server/{rally-api-CgosKdKL.js → rally-api-DaHtn5QN.js} +1 -1
  254. package/server/{rally-client-CCX0hADj.js → rally-client-C-MAl8ur.js} +1 -1
  255. package/server/{rally-client-iYMHWQD7.js → rally-client-Ch3zRsBX.js} +5 -5
  256. package/server/{reap-terminal-sessions-Qf-9LVQc.js → reap-terminal-sessions-C1n0ALRb.js} +2 -2
  257. package/server/{reap-terminal-sessions-4Xg9NGA8.js → reap-terminal-sessions-DegFS2p1.js} +2 -2
  258. package/server/{rebuild-stack-CMdgaylx.js → rebuild-stack-C9Li44A3.js} +20 -10
  259. package/server/{rebuild-stack-DqcOVmJO.js → rebuild-stack-qC0jCNm6.js} +2 -2
  260. package/server/{reconstruct-cache-CMZJ_Vjq.js → reconstruct-cache-BHyiAg02.js} +7 -7
  261. package/server/record-aVzu-LGm.js +3 -0
  262. package/server/record-update-CZh46a2f.js +617 -0
  263. package/server/{record-update-DhI7eySG.js → record-update-DtdJK2Iw.js} +1 -1
  264. package/server/recovery-trip-CSNWSLDn.js +77 -0
  265. package/server/recovery-trip-_16hFKv4.js +3 -0
  266. package/server/{release-engine-B2X9AfFC.js → release-engine-Be5MX5GP.js} +5 -5
  267. package/server/{release-set-G4XKyQ8K.js → release-set-DJv_O6PS.js} +3 -3
  268. package/server/{remote-BXarMvqf.js → remote-BMM3uH2J.js} +3 -3
  269. package/server/{remote-CUhyqjXk.js → remote-C0xVTHA5.js} +3 -3
  270. package/server/{remote-agents-CLZB3Coc.js → remote-agents-BIIoc5pD.js} +1 -1
  271. package/server/{remote-agents-Bba-MgSA.js → remote-agents-EUiZ26bj.js} +7 -7
  272. package/server/{remote-completion-CwAp79EC.js → remote-completion-BS4tJUn8.js} +13 -13
  273. package/server/resolver-BvHd6RE4.js +163 -0
  274. package/server/resume-9thEqAQR.js +3 -0
  275. package/server/{review-agent--pOptAEV.js → review-agent-BHGaBoBu.js} +29 -29
  276. package/server/{review-agent-BTCNkq2h.js → review-agent-CD3RQ-tc.js} +1 -1
  277. package/server/{review-artifacts-BNmw8dWE.js → review-artifacts-DyhajWso.js} +6 -6
  278. package/server/{review-context-DFxYOOJW.js → review-context-B-dlsPnx.js} +9 -9
  279. package/server/{review-convoy-liveness-BgU_1jJf.js → review-convoy-liveness-D7M-s_nS.js} +2 -2
  280. package/server/{review-status-Dma9SFaN.js → review-status-B6wYcOtP.js} +1 -1
  281. package/server/{review-status-CGvlA4o_.js → review-status-CKLk5aZ-.js} +308 -58
  282. package/server/{review-status-emit-DURrmGYX.js → review-status-emit-CJ7UmEVU.js} +3 -3
  283. package/server/{review-status-enrichment-8NiNXi5W.js → review-status-enrichment-DJRgGX7-.js} +3 -3
  284. package/server/review-status-limits-4EJDCGHO.js +7 -0
  285. package/server/{review-status-source-DIk1JSow.js → review-status-source-7nU3Z2wL.js} +1 -1
  286. package/server/{review-status-source-BLx_1siH.js → review-status-source-BsDYGfyv.js} +1 -1
  287. package/server/{review-status-sync-muT-EBp2.js → review-status-sync-BLssMTEW.js} +1 -1
  288. package/server/{review-status-sync-0GxOqeqF.js → review-status-sync-BxBeHRde.js} +35 -11
  289. package/server/{review-verdict-feedback-xJNdqBnX.js → review-verdict-feedback-5jWuzgpc.js} +90 -16
  290. package/server/{review-verdict-feedback-HwF6ODFy.js → review-verdict-feedback-HRY9P4bN.js} +1 -1
  291. package/server/{rollup-BQaol5TX.js → rollup-BGIrCEkU.js} +79 -44
  292. package/server/rollup-CZB4UL9q.js +3 -0
  293. package/server/{scanner-C-D2cFdX.js → scanner-DydjXPrz.js} +16 -9
  294. package/server/search-DdtIjAiu.js +395 -0
  295. package/server/{sequence-io-Bmf1EZM5.js → sequence-io-Fw-cLyDs.js} +4 -4
  296. package/server/{sequencer-agent-CigMyKh2.js → sequencer-agent-BcpGMt5x.js} +15 -10
  297. package/server/server.js +1258 -438
  298. package/server/{service-CD0DvFvD.js → service-BFFkGsG4.js} +58 -58
  299. package/server/{session-fork-B6cQ5eya.js → session-fork-D0V-3e5P.js} +2 -2
  300. package/server/{session-history-3ON_IJjm.js → session-history-Bta5l9jY.js} +5 -5
  301. package/server/{settings-PilbFZAM.js → settings-Ce8B1daF.js} +2 -2
  302. package/server/{settings-VN0qOh4U.js → settings-E3FnEIUx.js} +3 -3
  303. package/server/settings-eOOJpxi_.js +2 -0
  304. package/server/{shadow-engineering-DXvx77oE.js → shadow-engineering-Mt9nJO4i.js} +3 -3
  305. package/server/{shadow-state-CZBp7pwq.js → shadow-state-Bzj_AZCV.js} +1 -1
  306. package/server/{shadow-state-BBk_zacw.js → shadow-state-DrkhoVSx.js} +2 -2
  307. package/server/{shadow-utils-DdZ05AJS.js → shadow-utils-H1GfqP06.js} +2 -2
  308. package/server/{ship-log-7kJfjUX2.js → ship-log-CFUIo4PR.js} +1 -1
  309. package/server/{smart-compaction-8fA5k5XN.js → smart-compaction-DSTq-Wua.js} +1 -1
  310. package/server/{smart-compaction-ByhL9cRS.js → smart-compaction-Hzp3KCJX.js} +7 -7
  311. package/server/{spawn-planning-session-vLUJoFjy.js → spawn-planning-session-C0uSA2SL.js} +2 -2
  312. package/server/{spawn-planning-session-pcF-YeFE.js → spawn-planning-session-DN4son31.js} +23 -21
  313. package/server/{specialist-completion-B07XjWD2.js → specialist-completion-Cf6tpIh1.js} +1 -1
  314. package/server/{specialist-context-DJ-zFyL3.js → specialist-context-DEUEkjIQ.js} +5 -5
  315. package/server/{specialist-handoff-logger-aKSxbIgD.js → specialist-handoff-logger-D_LmQDj3.js} +2 -2
  316. package/server/{specialist-logs-Dae-n52_.js → specialist-logs-7Ynue0R7.js} +3 -3
  317. package/server/{specialists-KR3pKulN.js → specialists-CQwBEGlD.js} +1 -1
  318. package/server/{specialists-6PWdtWcg.js → specialists-DAjPgYs_.js} +504 -238
  319. package/server/{specialists-DUiExaxb.js → specialists-Hr6iW9fU.js} +18 -18
  320. package/server/{specialists-Bz-wFT7R.js → specialists-MOoeB4A8.js} +1 -1
  321. package/server/specs-Dl88cbKY.js +3 -0
  322. package/server/{src-B948bGVR.js → src-BYdwL_n-.js} +668 -64
  323. package/server/{src-vHy2-oCv.js → src-DQnkPN2i.js} +3 -3
  324. package/server/{src-rac0Mepv.js → src-DhfDV0o4.js} +6 -6
  325. package/server/{stack-health-DqLTiEu4.js → stack-health-D_iKwNRg.js} +107 -16
  326. package/server/stack-health-deVSdDwn.js +3 -0
  327. package/server/{stale-task-claims-Cab_Fo_Z.js → stale-task-claims-BYJGqhLI.js} +5 -5
  328. package/server/{staleness-CGTZyp6V.js → staleness-CopBDKnA.js} +1 -1
  329. package/server/{staleness-C-a5rBxF.js → staleness-D8WeMUHd.js} +1 -1
  330. package/server/{state-home-722Dkx92.js → state-home-DjN8qduI.js} +24 -3
  331. package/server/{state-mapping-CybR81Uf.js → state-mapping-DlM7OYRW.js} +1 -1
  332. package/server/{state-migrate-2u8wIpoL.js → state-migrate-a2p1gtD7.js} +4 -4
  333. package/server/state-mirror-Cv_XgvT5.js +121 -0
  334. package/server/{stuck-remediation-r1TJu68G.js → stuck-remediation-CXJX_kki.js} +1 -1
  335. package/server/{stuck-remediation-CC6q3eqQ.js → stuck-remediation-CbCRSz1v.js} +31 -732
  336. package/server/{substrate-bug-weights-service-CzIyyWFT.js → substrate-bug-weights-service-DxpopNd9.js} +3 -3
  337. package/server/{summary-fork-BqgmgPDt.js → summary-fork-B61fjRJn.js} +2 -2
  338. package/server/{summary-fork-Df2WFijM.js → summary-fork-B9pszUJN.js} +91 -10
  339. package/server/supervisor/{injection-budget-Cg_KIb3o.js → injection-budget-Ar7hgyJq.js} +1 -1
  340. package/server/supervisor/pty-supervisor.js +12 -3
  341. package/server/supervisor/{pty-token-BbjwEUUM.js → pty-token-CXCFU0Z8.js} +1 -1
  342. package/server/{supervisor-BxqSpjcN.js → supervisor-BvnxbuuF.js} +6 -4
  343. package/server/supervisor-C69kpqvd.js +2 -0
  344. package/server/{swarm-readiness-DfFxa9-n.js → swarm-readiness-vTw1kqGa.js} +3 -3
  345. package/server/{system-prerequisites-ICLSkhhZ.js → system-prerequisites-LLzTEqsK.js} +3 -3
  346. package/server/{teardown-workspace-DRdi_CPa.js → teardown-workspace-CqKKVJr1.js} +15 -15
  347. package/server/{test-agent-queue-A_-p-i0I.js → test-agent-queue-CWMq7oyG.js} +8 -7
  348. package/server/{test-verdict-BHgTAwIG.js → test-verdict-NdtgRBuA.js} +1 -1
  349. package/server/{test-verdict-C4i9aqEP.js → test-verdict-diIWE6hz.js} +15 -3
  350. package/server/{tldr-daemon-CvWXBhX1.js → tldr-daemon-B1Jhrtc8.js} +1 -1
  351. package/server/{tldr-daemon-wvsU6bKv.js → tldr-daemon-Bpls1CJB.js} +2 -2
  352. package/server/{tmux-CfDHob9M.js → tmux-CImZaX4q.js} +10 -16
  353. package/server/tmux-Cjpx8L8u.js +4 -0
  354. package/server/{token-DrxwytsZ.js → token-Bgpjo3tE.js} +2 -2
  355. package/server/token-util-BsjFll-k.js +3 -0
  356. package/server/{token-util-B48BlCba.js → token-util-BymbpkJp.js} +1 -1
  357. package/server/{tracker-config-BcPMElRB.js → tracker-config-4DaKVTfc.js} +2 -2
  358. package/server/{tracker-utils-CJ6BHjcD.js → tracker-utils-BDeAXC-q.js} +2 -2
  359. package/server/{traefik-connect-DZ6nMYMj.js → traefik-connect-CC5FyxYj.js} +1 -1
  360. package/server/{tunnel-Bp-dRHZz.js → tunnel-CDWkeceJ.js} +1 -1
  361. package/server/{tunnel-DUbUPElU.js → tunnel-CPf5M-Pc.js} +3 -3
  362. package/server/{typed-errors-DyjseiB6.js → typed-errors-9K7Dq_Vn.js} +1 -1
  363. package/server/{typed-errors-CKeoDdU3.js → typed-errors-DrS5fb5z.js} +1 -1
  364. package/server/{types-Cm5ASJbq.js → types-DzlUKiuf.js} +4 -3
  365. package/server/{types-Di8wdakq.js → types-kI9ik8XO.js} +1 -1
  366. package/server/{uat-promote-verification-CoJuh7XO.js → uat-promote-verification-c_pxoxEc.js} +5 -5
  367. package/server/{uat-train-4Q0k06CQ.js → uat-train-CWGxBdJO.js} +0 -0
  368. package/server/{uat-train-Dewoatps.js → uat-train-CfCYd2ve.js} +1 -1
  369. package/server/{validate-B0C8p66t.js → validate-f3ItVCfm.js} +3 -3
  370. package/server/{validation-hVOwQk8T.js → validation-5G_wQtea.js} +1 -1
  371. package/server/{validation-B_kIRfNe.js → validation-7tSiCM82.js} +4 -4
  372. package/server/{verification-artifact-BxlxTiYK.js → verification-artifact-9h9dH8uX.js} +1 -1
  373. package/server/{verification-artifact-D70AtckY.js → verification-artifact-C_4WJnf6.js} +1 -1
  374. package/server/{verification-runner-Bc3cJvpC.js → verification-runner-BV5F6wrA.js} +1 -1
  375. package/server/{verification-runner-KZTz6u72.js → verification-runner-D58KmBhK.js} +18 -38
  376. package/server/{vtt-parser-CE_i3Bcw.js → vtt-parser-2iT9OHa9.js} +1 -1
  377. package/server/{work-agent-prompt-ByrPAzOy.js → work-agent-prompt-D03s4DD1.js} +9 -9
  378. package/server/{workflows-D0vP1WrK.js → workflows-BMBwLYPV.js} +281 -98
  379. package/server/workflows-BOmWGpIh.js +2 -0
  380. package/server/{workspace-DQkRPLlQ.js → workspace-BgflNCH0.js} +3 -3
  381. package/server/{workspace-COWvdibH.js → workspace-Cn9ywfSW.js} +1 -1
  382. package/server/{workspace-anchor-drift-pwz23TI1.js → workspace-anchor-drift-C8Fy3shi.js} +1 -1
  383. package/server/{workspace-anchor-drift-DXYIAHzr.js → workspace-anchor-drift-CMiNncwq.js} +5 -8
  384. package/server/{workspace-config-BdZM4PvZ.js → workspace-config-aUc2nIz6.js} +1 -1
  385. package/server/{workspace-manager-BPgTrG66.js → workspace-manager-Bem7ZBs9.js} +521 -292
  386. package/server/workspace-manager-C0CpNh3t.js +3 -0
  387. package/server/{workspace-metadata-CdjzAP8x.js → workspace-metadata-C5iSlPRo.js} +1 -1
  388. package/server/{workspace-metadata-DkO_iTLo.js → workspace-metadata-UKmTYmDQ.js} +2 -2
  389. package/server/{workspaces-CRBJikLp.js → workspaces-DqxgwDZ8.js} +143 -113
  390. package/sync-sources/hooks/notification-hook +12 -1
  391. package/sync-sources/hooks/pan-hook-lib.sh +226 -0
  392. package/sync-sources/hooks/session-start-hook +31 -4
  393. package/sync-sources/hooks/work-agent-stop-hook +23 -1
  394. package/sync-sources/skills/pan-memory/SKILL.md +19 -3
  395. package/sync-sources/skills/pan-projects/SKILL.md +9 -0
  396. package/sync-sources/skills/pan-restart/SKILL.md +26 -7
  397. package/sync-sources/skills/pan-workspace/SKILL.md +77 -0
  398. package/server/activity-logger-CMthG6Vd.js +0 -3
  399. package/server/agent-state-CYXJVG72.js +0 -3
  400. package/server/agents-ePFVoZbu.js +0 -3
  401. package/server/archive-planning-B2XplFzT.js +0 -2
  402. package/server/cli-CjOCSnfj.js +0 -3
  403. package/server/deacon-swarm-B1XkIvfr.js +0 -2
  404. package/server/delivery-BX9HR4wQ.js +0 -3
  405. package/server/dist-B3YPQa5A.js +0 -3
  406. package/server/event-store-5UKzh9Jf.js +0 -3
  407. package/server/forge-B5o319qI.js +0 -3
  408. package/server/fts-db-IVc4_M3f.js +0 -146
  409. package/server/hume-VUCNbTgn.js +0 -3
  410. package/server/inspect-agent-CUwVmr2h.js +0 -2
  411. package/server/merge-ops-1abz6O_P.js +0 -2
  412. package/server/merge-rebase-CJJVAJuz.js +0 -2
  413. package/server/node_modules/brace-expansion/.tap/coverage/8b906b8c-e21f-40b5-8c0d-214d8c2682c5.json +0 -757
  414. package/server/node_modules/brace-expansion/.tap/processinfo/8b906b8c-e21f-40b5-8c0d-214d8c2682c5.json +0 -719
  415. package/server/node_modules/brace-expansion/ADVISORY-CVE-2026-14257.md +0 -107
  416. package/server/node_modules/brace-expansion/dist/commonjs/index.d.ts +0 -8
  417. package/server/node_modules/brace-expansion/dist/commonjs/index.d.ts.map +0 -1
  418. package/server/node_modules/brace-expansion/dist/commonjs/index.js +0 -263
  419. package/server/node_modules/brace-expansion/dist/commonjs/index.js.map +0 -1
  420. package/server/node_modules/brace-expansion/dist/commonjs/package.json +0 -3
  421. package/server/node_modules/brace-expansion/dist/esm/index.d.ts +0 -8
  422. package/server/node_modules/brace-expansion/dist/esm/index.d.ts.map +0 -1
  423. package/server/node_modules/brace-expansion/dist/esm/index.js +0 -259
  424. package/server/node_modules/brace-expansion/dist/esm/index.js.map +0 -1
  425. package/server/node_modules/brace-expansion/dist/esm/package.json +0 -3
  426. package/server/project-repos-DPjOdfPa.js +0 -3
  427. package/server/projects-_n3Zui6K.js +0 -3
  428. package/server/providers-BI1mOBQ4.js +0 -3
  429. package/server/public/assets/index-Ddkcz3WT.css +0 -1
  430. package/server/public/assets/mermaid-GHXKKRXX-BzPfaQJ1.js +0 -1
  431. package/server/rally-D_VW4bJv.js +0 -3
  432. package/server/record-BTwWhtBb.js +0 -3
  433. package/server/record-update-DaOKS7Wb.js +0 -277
  434. package/server/recovery-trip-DDH-02ng.js +0 -44
  435. package/server/resume-mOREjlYu.js +0 -3
  436. package/server/rollup-BR4t_wck.js +0 -3
  437. package/server/settings-CVmWiJ-r.js +0 -2
  438. package/server/specs--enInima.js +0 -3
  439. package/server/stack-health-BikqHSjn.js +0 -3
  440. package/server/supervisor-B4anCCSm.js +0 -2
  441. package/server/tmux-Ctk6RV5l.js +0 -3
  442. package/server/token-util-D411CAq9.js +0 -3
  443. package/server/workflows-DtDX08ed.js +0 -2
  444. package/server/workspace-manager-C1F3XsnS.js +0 -3
@@ -1,10 +1,11 @@
1
1
  import { n as __esmMin, o as __toESM } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Gn as init_projects, Mn as findProjectByPathSync, Zn as loadProjectsConfigSync, ar as resolveProjectFromIssueSync, xr as require_dist } from "./config-yaml-CxdwhAIA.js";
3
- import { d as resolveRagRunsFile, f as resolveStatusFile, i as init_paths, r as ensureParentDir } from "./paths-sJBSb7Ul.js";
4
- import { n as isBackgroundFeatureEnabled, t as init_features } from "./features-D5km80UI.js";
5
- import { a as isMemoryKnowledgeIndexEnabled, i as init_settings, o as isMemoryPromptTimeInjectionEnabled } from "./settings-VN0qOh4U.js";
6
- import { n as extractWithProviderPolicy, t as init_providers } from "./providers-BJQSnAAp.js";
7
- import { n as init_fts_db, r as runMemoryFtsStatement } from "./fts-db-IVc4_M3f.js";
2
+ import { Cn as resolveProjectPath, Rn as require_dist, Sn as resolveProjectFromIssueSync, Yt as findProjectByPathSync, cn as init_projects, mn as loadProjectsConfigSync, nn as getProjectSync } from "./config-yaml-BSCqwmX0.js";
3
+ import { n as getProjectByKey, o as init_resolver, s as listPinnedDocs } from "./resolver-BvHd6RE4.js";
4
+ import { d as resolveRagRunsFile, f as resolveStatusFile, i as init_paths, r as ensureParentDir } from "./paths-BUuhi6jM.js";
5
+ import { n as isBackgroundFeatureEnabled, t as init_features } from "./features-CC47YcCX.js";
6
+ import { a as isMemoryKnowledgeIndexEnabled, i as init_settings, o as isMemoryPromptTimeInjectionEnabled } from "./settings-E3FnEIUx.js";
7
+ import { n as extractWithProviderPolicy, t as init_providers } from "./providers-ClGPGkQ8.js";
8
+ import { l as init_pin_path, n as init_search, r as searchMemory, u as readVerifiedPinFile } from "./search-DdtIjAiu.js";
8
9
  import { Result, Schema } from "effect";
9
10
  import { extname, isAbsolute, join, relative, resolve } from "path";
10
11
  import { createHash, randomUUID } from "crypto";
@@ -146,7 +147,7 @@ async function logQueryExpansion(input, result) {
146
147
  await input.logDecision(entry);
147
148
  return;
148
149
  }
149
- await appendJsonl(resolveRagRunsFile(input.identity.projectId, input.identity.issueId, entry.timestamp), entry);
150
+ await appendJsonl(resolveRagRunsFile(input.identity.projectId, input.identity.workspaceId, entry.timestamp), entry);
150
151
  }
151
152
  function normalizeTerms(terms) {
152
153
  const seen = /* @__PURE__ */ new Set();
@@ -186,176 +187,6 @@ var init_query_expansion = __esmMin((() => {
186
187
  expansionCache = /* @__PURE__ */ new Map();
187
188
  }));
188
189
  //#endregion
189
- //#region ../../lib/memory/search.ts
190
- async function searchMemory(input) {
191
- const matchQuery = buildMatchQuery(input.query);
192
- if (!matchQuery) return [];
193
- const limit = normalizeLimit(input.limit);
194
- const identityPredicate = buildIdentityPredicate(input);
195
- if (!identityPredicate) return [];
196
- const rows = await runMemoryFtsStatement(input.projectId, {
197
- method: "all",
198
- sql: `
199
- SELECT
200
- rowid,
201
- content,
202
- display_content,
203
- source,
204
- branch,
205
- entry_date,
206
- entry_time,
207
- entry_type,
208
- files,
209
- tags,
210
- doc_type,
211
- scope,
212
- project_id,
213
- workspace_id,
214
- issue_id,
215
- run_id,
216
- session_id,
217
- agent_role,
218
- agent_harness,
219
- bm25(memory_fts) AS bm25
220
- FROM memory_fts
221
- WHERE memory_fts MATCH ?
222
- AND project_id = ?
223
- ${identityPredicate.sql}
224
- AND (? = 1 OR (entry_date || 'T' || entry_time) > COALESCE((
225
- SELECT MAX(from_timestamp)
226
- FROM reset_markers
227
- WHERE (scope = 'project' AND scope_id = memory_fts.project_id)
228
- OR (scope = 'workspace' AND scope_id = memory_fts.workspace_id)
229
- OR (scope = 'issue' AND scope_id = memory_fts.issue_id)
230
- OR (scope = 'session' AND scope_id = memory_fts.session_id)
231
- ), ''))
232
- ORDER BY bm25(memory_fts) ASC
233
- LIMIT ?
234
- `,
235
- params: [
236
- matchQuery,
237
- input.projectId,
238
- ...identityPredicate.params,
239
- input.includeArchived ? 1 : 0,
240
- limit * OVERFETCH_RATIO
241
- ]
242
- });
243
- const tokenBudget = input.sibling ? normalizeSiblingTokenBudget(input.siblingTokenBudget) : null;
244
- const queryTerms = extractQueryTerms(input.query);
245
- const now = input.now ?? /* @__PURE__ */ new Date();
246
- return rows.map((row) => rowToHit(row, tokenBudget, rankHit(row, queryTerms, now))).filter((hit) => matchesTags(hit, input.tags)).sort((a, b) => b.rankScore - a.rankScore || b.entryDate.localeCompare(a.entryDate) || b.entryTime.localeCompare(a.entryTime)).slice(0, limit);
247
- }
248
- function buildMatchQuery(query) {
249
- return extractQueryTerms(query).map((term) => `"${term.replaceAll("\"", "\"\"")}"`).join(" ");
250
- }
251
- function extractQueryTerms(query) {
252
- return query.match(/[\p{L}\p{N}_-]+/gu) ?? [];
253
- }
254
- function buildIdentityPredicate(input) {
255
- if (input.sibling) {
256
- if (!input.workspaceId || !input.issueId) return null;
257
- return {
258
- sql: "AND workspace_id != ? AND issue_id != ?",
259
- params: [input.workspaceId, input.issueId]
260
- };
261
- }
262
- const clauses = [];
263
- const params = [];
264
- if (input.workspaceId) {
265
- clauses.push("AND workspace_id = ?");
266
- params.push(input.workspaceId);
267
- }
268
- if (input.issueId) {
269
- clauses.push("AND issue_id = ?");
270
- params.push(input.issueId);
271
- }
272
- return {
273
- sql: clauses.join("\n "),
274
- params
275
- };
276
- }
277
- function normalizeLimit(limit) {
278
- if (limit === void 0) return DEFAULT_LIMIT;
279
- if (!Number.isInteger(limit) || limit <= 0) return DEFAULT_LIMIT;
280
- return limit;
281
- }
282
- function normalizeSiblingTokenBudget(tokenBudget) {
283
- if (tokenBudget === void 0) return DEFAULT_SIBLING_TOKEN_BUDGET;
284
- if (!Number.isInteger(tokenBudget) || tokenBudget <= 0) return DEFAULT_SIBLING_TOKEN_BUDGET;
285
- return tokenBudget;
286
- }
287
- function rankHit(row, queryTerms, now) {
288
- const tags = splitList(row.tags).map((tag) => tag.toLowerCase());
289
- const tagSet = new Set(tags);
290
- const matchingTagCount = new Set(queryTerms.map((term) => term.toLowerCase()).filter((term) => tagSet.has(term))).size;
291
- const ageDays = ageInDays(`${row.entry_date}T${row.entry_time}`, now);
292
- const boostedScore = Math.abs(row.bm25) * Math.exp(-RECENCY_DECAY_RATE * ageDays) + TAG_BOOST * matchingTagCount;
293
- if (ageDays < HIGH_SIGNAL_WINDOW_HOURS / 24 && tags.some((tag) => HIGH_SIGNAL_TAGS.has(tag))) return Math.max(boostedScore, HIGH_SIGNAL_SCORE_FLOOR);
294
- return boostedScore;
295
- }
296
- function ageInDays(timestamp, now) {
297
- const parsed = Date.parse(timestamp);
298
- if (Number.isNaN(parsed)) return 0;
299
- return Math.max(0, (now.getTime() - parsed) / 864e5);
300
- }
301
- function rowToHit(row, tokenBudget, rankScore) {
302
- return {
303
- rowid: row.rowid,
304
- content: row.content,
305
- displayContent: row.display_content,
306
- source: row.source,
307
- branch: row.branch,
308
- entryDate: row.entry_date,
309
- entryTime: row.entry_time,
310
- entryType: row.entry_type,
311
- files: splitList(row.files),
312
- tags: splitList(row.tags),
313
- docType: row.doc_type,
314
- scope: row.scope,
315
- projectId: row.project_id,
316
- workspaceId: row.workspace_id,
317
- issueId: row.issue_id,
318
- runId: row.run_id,
319
- sessionId: row.session_id,
320
- agentRole: row.agent_role,
321
- agentHarness: row.agent_harness,
322
- bm25: row.bm25,
323
- rankScore,
324
- provenance: `${row.workspace_id}:${row.issue_id}`,
325
- tokenBudget
326
- };
327
- }
328
- function splitList(value) {
329
- return value.split(",").map((entry) => entry.trim()).filter(Boolean);
330
- }
331
- function matchesTags(hit, tags) {
332
- if (!tags || tags.length === 0) return true;
333
- return tags.every((tag) => hit.tags.includes(tag));
334
- }
335
- var DEFAULT_LIMIT, OVERFETCH_RATIO, DEFAULT_SIBLING_TOKEN_BUDGET, RECENCY_DECAY_RATE, TAG_BOOST, HIGH_SIGNAL_SCORE_FLOOR, HIGH_SIGNAL_WINDOW_HOURS, HIGH_SIGNAL_TAGS;
336
- var init_search = __esmMin((() => {
337
- init_fts_db();
338
- DEFAULT_LIMIT = 20;
339
- OVERFETCH_RATIO = 3;
340
- DEFAULT_SIBLING_TOKEN_BUDGET = 1500;
341
- RECENCY_DECAY_RATE = .02;
342
- TAG_BOOST = .3;
343
- HIGH_SIGNAL_SCORE_FLOOR = 1;
344
- HIGH_SIGNAL_WINDOW_HOURS = 72;
345
- HIGH_SIGNAL_TAGS = new Set([
346
- "error",
347
- "decision",
348
- "blocker",
349
- "shipped",
350
- "architecture",
351
- "review-blocker",
352
- "test-failure",
353
- "merge-risk",
354
- "architecture-decision",
355
- "regression"
356
- ]);
357
- }));
358
- //#endregion
359
190
  //#region ../../lib/memory/injection.ts
360
191
  async function injectPromptTimeMemory(input) {
361
192
  const now = input.now ?? /* @__PURE__ */ new Date();
@@ -384,33 +215,43 @@ async function injectPromptTimeMemory(input) {
384
215
  const expansion = await resolveQueryExpansion(input, now, surface);
385
216
  const search = input.search ?? searchMemory;
386
217
  const knowledgeEnabled = await (input.loadKnowledgeIndexEnabled ?? isMemoryKnowledgeIndexEnabled)();
387
- const [status, knowledgeIndex, sameProjectHits, siblingHits] = await Promise.all([
388
- (input.loadStatus ?? readStatus)(input.identity.projectId, input.identity.issueId).catch(() => null),
218
+ const { issueId } = input.identity;
219
+ const [status, knowledgeIndex, pinnedDocs, sameProjectHits, siblingHits] = await Promise.all([
220
+ (input.loadStatus ?? readStatus)(input.identity.projectId, input.identity.workspaceId).catch(() => null),
389
221
  knowledgeEnabled ? (input.loadKnowledgeIndex ?? readKnowledgeIndex)(input.identity).catch(() => null) : Promise.resolve(null),
222
+ knowledgeEnabled ? (input.loadPinnedDocs ?? readPinnedDocCandidates)(input.identity).catch(() => []) : Promise.resolve([]),
390
223
  search({
391
224
  query: expansion.query,
392
225
  projectId: input.identity.projectId,
393
226
  workspaceId: input.identity.workspaceId,
394
- issueId: input.identity.issueId,
227
+ issueId: issueId ?? void 0,
395
228
  limit: 12
396
229
  }).catch(() => []),
397
- search({
230
+ issueId !== null ? search({
398
231
  query: expansion.query,
399
232
  projectId: input.identity.projectId,
400
233
  workspaceId: input.identity.workspaceId,
401
- issueId: input.identity.issueId,
234
+ issueId,
402
235
  sibling: true,
403
236
  siblingTokenBudget: budgets.sibling,
404
237
  limit: 6
238
+ }).catch(() => []) : search({
239
+ query: expansion.query,
240
+ projectId: input.identity.projectId,
241
+ crossWorkspace: true,
242
+ excludeWorkspaceId: input.identity.workspaceId,
243
+ siblingTokenBudget: budgets.sibling,
244
+ limit: 6
405
245
  }).catch(() => [])
406
246
  ]);
407
247
  const candidates = [
408
248
  ...status ? [statusCandidate(status, input.identity)] : [],
409
249
  ...knowledgeIndex ? [knowledgeIndexCandidate(knowledgeIndex, input.identity)] : [],
250
+ ...pinnedDocs,
410
251
  ...sameProjectHits.map(hitCandidate),
411
252
  ...siblingHits.map(siblingCandidate)
412
253
  ];
413
- const hitCounts = countHits(status, knowledgeIndex, sameProjectHits, siblingHits);
254
+ const hitCounts = countHits(status, knowledgeIndex, pinnedDocs, sameProjectHits, siblingHits);
414
255
  if (candidates.length === 0) return finalize(input, now, budgets, {
415
256
  outcome: expansion.status === "fallback" && expansion.reason ? "expansion-failed" : "no-hits",
416
257
  reason: expansion.reason ?? "no-memory-hits",
@@ -499,9 +340,9 @@ function statusCandidate(status, identity) {
499
340
  title: `Status: ${status.name}`,
500
341
  text,
501
342
  source: {
502
- id: `status:${identity.projectId}:${identity.issueId}`,
343
+ id: `status:${identity.projectId}:${identity.workspaceId}`,
503
344
  docType: "status",
504
- scope: "issue",
345
+ scope: "workspace",
505
346
  score: status.confidence,
506
347
  tokens: estimateTokens(text)
507
348
  }
@@ -659,13 +500,13 @@ async function writeDecision(input, decision) {
659
500
  input.logDecision(decision).catch(() => {});
660
501
  return;
661
502
  }
662
- const filePath = resolveRagRunsFile(input.identity.projectId, input.identity.issueId, decision.timestamp);
503
+ const filePath = resolveRagRunsFile(input.identity.projectId, input.identity.workspaceId, decision.timestamp);
663
504
  await ensureParentDir(filePath);
664
505
  appendFile(filePath, `${JSON.stringify(decision)}\n`, "utf8").catch(() => {});
665
506
  }
666
- async function readStatus(projectId, issueId) {
507
+ async function readStatus(projectId, workspaceId) {
667
508
  try {
668
- return JSON.parse(await readFile(resolveStatusFile(projectId, issueId), "utf8"));
509
+ return JSON.parse(await readFile(resolveStatusFile(projectId, workspaceId), "utf8"));
669
510
  } catch (error) {
670
511
  if (typeof error === "object" && error !== null && "code" in error && error.code === "ENOENT") return null;
671
512
  throw error;
@@ -692,14 +533,51 @@ async function readKnowledgeIndex(identity) {
692
533
  }
693
534
  return lines.join("\n");
694
535
  }
536
+ /**
537
+ * PAN-1990: pinned docs (workspace- and project-scoped) read through the
538
+ * workspaces resolver, injected under the same knowledgeIndex budget as the
539
+ * OKF knowledge bundle. docPath is always project-relative (memory-pins),
540
+ * regardless of pin scope — a workspace is one worktree of the same project
541
+ * repo, so a project-relative path resolves identically from any of them. A
542
+ * missing or unreadable pin is skipped silently — pins are a convenience,
543
+ * never a reason to fail injection.
544
+ */
545
+ async function readPinnedDocCandidates(identity) {
546
+ const projectPath = getProjectByKey(identity.projectId)?.primaryPath;
547
+ if (!projectPath) return [];
548
+ const pins = [...listPinnedDocs("workspace", identity.workspaceId), ...listPinnedDocs("project", identity.projectId)];
549
+ const candidates = [];
550
+ for (const pin of pins) {
551
+ const text = await readVerifiedPinFile(projectPath, pin.docPath);
552
+ if (text === null) continue;
553
+ candidates.push({
554
+ key: "knowledgeIndex",
555
+ title: `Pinned doc: ${pin.docPath}`,
556
+ text,
557
+ source: {
558
+ id: `pin:${pin.id}`,
559
+ docType: "knowledge",
560
+ scope: pin.scope,
561
+ score: 1,
562
+ tokens: estimateTokens(text)
563
+ }
564
+ });
565
+ }
566
+ return candidates;
567
+ }
695
568
  async function resolveKnowledgeBundleRoot(identity) {
696
569
  let projectPath;
697
570
  let knowledgeRepo;
698
- if ("issueId" in identity) {
571
+ if ("issueId" in identity && identity.issueId !== null) {
699
572
  const resolved = resolveProjectFromIssueSync(identity.issueId);
700
573
  if (!resolved) return null;
701
574
  projectPath = resolved.projectPath;
702
575
  knowledgeRepo = loadProjectsConfigSync().projects[resolved.projectKey]?.knowledge_repo;
576
+ } else if ("issueId" in identity) {
577
+ const project = getProjectSync(identity.projectId);
578
+ if (!project) return null;
579
+ projectPath = resolveProjectPath(project);
580
+ knowledgeRepo = project.knowledge_repo;
703
581
  } else {
704
582
  const project = findProjectByPathSync(identity.projectPath);
705
583
  projectPath = project?.path ?? identity.projectPath;
@@ -767,10 +645,10 @@ function stringField(value) {
767
645
  function isRecord(value) {
768
646
  return typeof value === "object" && value !== null && !Array.isArray(value);
769
647
  }
770
- function countHits(status, knowledgeIndex, sameProjectHits, siblingHits) {
648
+ function countHits(status, knowledgeIndex, pinnedDocs, sameProjectHits, siblingHits) {
771
649
  return {
772
650
  status: status ? 1 : 0,
773
- knowledgeIndex: knowledgeIndex ? 1 : 0,
651
+ knowledgeIndex: (knowledgeIndex ? 1 : 0) + pinnedDocs.length,
774
652
  observations: sameProjectHits.filter((hit) => hit.docType !== "summary").length,
775
653
  summaries: sameProjectHits.filter((hit) => hit.docType === "summary").length,
776
654
  sibling: siblingHits.length
@@ -808,9 +686,11 @@ var init_injection = __esmMin((() => {
808
686
  import_dist = /* @__PURE__ */ __toESM(require_dist(), 1);
809
687
  init_paths();
810
688
  init_query_expansion();
689
+ init_pin_path();
811
690
  init_search();
812
691
  init_settings();
813
692
  init_projects();
693
+ init_resolver();
814
694
  PROMPT_TIME_MEMORY_BUDGETS = {
815
695
  status: 2e3,
816
696
  observations: 5e3,
@@ -821,6 +701,6 @@ var init_injection = __esmMin((() => {
821
701
  PROMPT_TIME_EXPANSION_TIMEOUT_MS = 750;
822
702
  }));
823
703
  //#endregion
824
- export { buildMatchQuery as a, init_query_expansion as c, resolveKnowledgeBundleRoot as i, init_injection as n, init_search as o, injectPromptTimeMemory as r, clearQueryExpansionCache as s, PROMPT_TIME_MEMORY_BUDGETS as t };
704
+ export { clearQueryExpansionCache as a, resolveKnowledgeBundleRoot as i, init_injection as n, init_query_expansion as o, injectPromptTimeMemory as r, PROMPT_TIME_MEMORY_BUDGETS as t };
825
705
 
826
- //# sourceMappingURL=injection-6AGnXxlj.js.map
706
+ //# sourceMappingURL=injection-C9sxqbc2.js.map
@@ -1,14 +1,14 @@
1
- import { D as resolveTieredExecutionEnabled, Fr as init_errors, G as setupCredentialFileAuthSync, H as init_providers, L as clearCredentialFileAuthSync, T as init_tier_table, V as getProviderForModelSync, f as loadConfigSync, jr as ProcessSpawnError, t as init_config_yaml, tt as resolveModel } from "./config-yaml-CxdwhAIA.js";
2
- import { D as killSession, H as sessionExists, s as createSession, w as init_tmux } from "./tmux-CfDHob9M.js";
3
- import { C as setReviewStatusSync, p as init_review_status } from "./review-status-CGvlA4o_.js";
4
- import { A as spawnTierSupervisor, Br as saveAgentRuntimeState, D as init_tier_supervisor, E as deliverCommitForReview, It as init_delivery, Mt as deliverAgentMessage, O as loadPrdDraft, b as init_agents, gr as saveAgentState, j as supervisorAgentId, kn as getProviderEnvForModel } from "./queries-C-MUZaIy.js";
5
- import { l as resolveWorkspaceRepoRootsSync, r as init_project_repos } from "./project-repos-B5pIphKg.js";
6
- import { m as readWorkspacePlanSync, o as init_io } from "./io-B00PBNku.js";
7
- import { C as init_launcher_generator, S as generateLauncherScriptSync } from "./auto-spawn-consent-CQ9Bi9q6.js";
8
- import { a as init_claude_permissions, i as getClaudePermissionFlagsSync } from "./claude-permissions-CpbpvUQ2.js";
9
- import { i as prepareHarnessLaunch, r as init_harness_binary } from "./harness-binary-BSpiXaLw.js";
10
- import { a as init_git_utils, o as parseCompositeSnapshot, u as snapshotWorkspaceHeadsPromise } from "./git-utils-CsvYfJU3.js";
11
- import { n as init_issue_closed, r as isIssueClosed } from "./issue-closed-BehTG1be.js";
1
+ import { D as resolveTieredExecutionEnabled, Kn as clearCredentialFileAuthSync, Lr as ProcessSpawnError, T as init_tier_table, Vr as init_errors, Xn as getProviderForModelSync, Zn as init_providers, dr as resolveModel, f as loadConfigSync, t as init_config_yaml, tr as setupCredentialFileAuthSync } from "./config-yaml-BSCqwmX0.js";
2
+ import { C as init_tmux, E as killSession, V as sessionExists, o as createSession } from "./tmux-CImZaX4q.js";
3
+ import { C as setReviewStatusSync, p as init_review_status } from "./review-status-CKLk5aZ-.js";
4
+ import { A as spawnTierSupervisor, D as init_tier_supervisor, E as deliverCommitForReview, Kn as getProviderEnvForModel, Nr as saveAgentState, O as loadPrdDraft, Zt as init_delivery, b as init_agents, j as supervisorAgentId, qt as deliverAgentMessage, ri as saveAgentRuntimeState } from "./queries-DVpl1vsU.js";
5
+ import { i as init_project_repos, u as resolveWorkspaceRepoRootsSync } from "./project-repos-BAqDwtvi.js";
6
+ import { h as readWorkspacePlanSync, s as init_io } from "./io-mxOWMZ7I.js";
7
+ import { C as generateLauncherScriptSync, w as init_launcher_generator } from "./auto-spawn-consent-lXqRJ1Dr.js";
8
+ import { a as init_claude_permissions, i as getClaudePermissionFlagsSync } from "./claude-permissions-Cn0dIu2i.js";
9
+ import { i as prepareHarnessLaunch, r as init_harness_binary } from "./harness-binary-BHxWf_sX.js";
10
+ import { a as init_git_utils, o as parseCompositeSnapshot, u as snapshotWorkspaceHeadsPromise } from "./git-utils-xQ74FoSn.js";
11
+ import { n as init_issue_closed, r as isIssueClosed } from "./issue-closed-Bj_bCv_0.js";
12
12
  import { Effect } from "effect";
13
13
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
14
14
  import { dirname, join } from "path";
@@ -398,4 +398,4 @@ function onInspectComplete(projectKey, issueId, itemId, status, workspacePath, n
398
398
  //#endregion
399
399
  export { onInspectComplete as n, spawnInspectAgent as r, buildInspectPrompt as t };
400
400
 
401
- //# sourceMappingURL=inspect-agent-nXdIptyh.js.map
401
+ //# sourceMappingURL=inspect-agent-BoSO51YC.js.map
@@ -0,0 +1,2 @@
1
+ import { n as onInspectComplete } from "./inspect-agent-BoSO51YC.js";
2
+ export { onInspectComplete };
@@ -1,5 +1,5 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Fr as init_errors, Tr as FsError, ci as getOverdeckHome, li as init_paths } from "./config-yaml-CxdwhAIA.js";
2
+ import { Ar as FsError, Vr as init_errors, hi as init_paths, mi as getOverdeckHome } from "./config-yaml-BSCqwmX0.js";
3
3
  import { join } from "node:path";
4
4
  import { Effect } from "effect";
5
5
  import { chmodSync, existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
@@ -101,4 +101,4 @@ var init_internal_token = __esmMin((() => {
101
101
  //#endregion
102
102
  export { getInternalToken as a, ensureInternalTokenSync as i, _resetInternalTokenCacheForTests as n, getInternalTokenSync as o, ensureInternalToken as r, init_internal_token as s, INTERNAL_TOKEN_HEADER as t };
103
103
 
104
- //# sourceMappingURL=internal-token-DzK385vD.js.map
104
+ //# sourceMappingURL=internal-token-AvXePaQT.js.map
@@ -1,3 +1,3 @@
1
- import { a as getInternalToken, i as ensureInternalTokenSync, n as _resetInternalTokenCacheForTests, o as getInternalTokenSync, r as ensureInternalToken, s as init_internal_token, t as INTERNAL_TOKEN_HEADER } from "./internal-token-DzK385vD.js";
1
+ import { a as getInternalToken, i as ensureInternalTokenSync, n as _resetInternalTokenCacheForTests, o as getInternalTokenSync, r as ensureInternalToken, s as init_internal_token, t as INTERNAL_TOKEN_HEADER } from "./internal-token-AvXePaQT.js";
2
2
  init_internal_token();
3
3
  export { INTERNAL_TOKEN_HEADER, _resetInternalTokenCacheForTests, ensureInternalToken, ensureInternalTokenSync, getInternalToken, getInternalTokenSync };
@@ -1,13 +1,13 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Cn as resolveStateReadHomeSync, Fr as init_errors, Gn as init_projects, Lt as readIssueRecord, Mn as findProjectByPathSync, Nt as getProjectConfigFromWorkspacePath, Pt as init_record, Sn as init_state_read_home, Tr as FsError, Vt as resolveProjectForIssue, cn as flushAutoCommits, ln as init_auto_commit, on as deriveProjectRoot, un as queueAutoCommit, zt as readIssueRecordSync } from "./config-yaml-CxdwhAIA.js";
3
- import { a as PAN_DIRNAME, c as PAN_SESSIONS_FILENAME, d as WORKSPACE_RUNTIME_DIRNAME, f as asPanSpecDocument, i as PAN_CONTINUE_FILENAME, l as PAN_SPECS_DIRNAME, m as isPanSpecStatus, n as PAN_CONTEXT_FILENAME, o as PAN_DRAFTS_DIRNAME, p as init_types$1, r as PAN_CONTINUES_DIRNAME, s as PAN_FEEDBACK_DIRNAME, t as LEGACY_WORKSPACE_RUNTIME_DIRNAME, u as PAN_SPEC_FILENAME } from "./types-Cm5ASJbq.js";
4
- import { a as generateXBriefFilename, c as parseXBriefFilename, l as resolveXBriefDir, n as LEGACY_VBRIEF_LIFECYCLE_DIRS, o as init_lifecycle, u as slugify } from "./lifecycle-B4Xdb4cY.js";
2
+ import { Ar as FsError, Bt as resolveStateReadHomeSync, K as getProjectConfigFromWorkspacePath, Q as readIssueRecordSync, St as init_auto_commit, Vr as init_errors, X as readIssueRecord, Yt as findProjectByPathSync, cn as init_projects, et as resolveProjectForIssue, q as init_record, wt as queueAutoCommit, xt as flushAutoCommits, yt as deriveProjectRoot, zt as init_state_read_home } from "./config-yaml-BSCqwmX0.js";
3
+ import { a as PAN_DIRNAME, c as PAN_SESSIONS_FILENAME, f as WORKSPACE_RUNTIME_DIRNAME, h as isPanSpecStatus, i as PAN_CONTINUE_FILENAME, l as PAN_SPECS_DIRNAME, m as init_types$1, n as PAN_CONTEXT_FILENAME, o as PAN_DRAFTS_DIRNAME, p as asPanSpecDocument, r as PAN_CONTINUES_DIRNAME, s as PAN_FEEDBACK_DIRNAME, t as LEGACY_WORKSPACE_RUNTIME_DIRNAME, u as PAN_SPEC_FILENAME } from "./types-DzlUKiuf.js";
4
+ import { a as generateXBriefFilename, c as parseXBriefFilename, l as resolveXBriefDir, n as LEGACY_VBRIEF_LIFECYCLE_DIRS, o as init_lifecycle, u as slugify } from "./lifecycle-D2X3al0D.js";
5
5
  import { Data, Effect, FileSystem } from "effect";
6
6
  import { existsSync, mkdirSync, readFileSync, readdirSync, writeFileSync } from "fs";
7
7
  import { basename, join, resolve } from "path";
8
8
  import { existsSync as existsSync$1 } from "node:fs";
9
- import * as NodeFileSystem from "@effect/platform-node/NodeFileSystem";
10
9
  import { readFile, readdir } from "fs/promises";
10
+ import * as NodeFileSystem from "@effect/platform-node/NodeFileSystem";
11
11
  //#region ../../lib/pan-dir/continue.ts
12
12
  function workspacePanPaths(workspacePath) {
13
13
  const panDir = join(workspacePath, WORKSPACE_RUNTIME_DIRNAME);
@@ -844,6 +844,6 @@ var init_io = __esmMin((() => {
844
844
  });
845
845
  }));
846
846
  //#endregion
847
- export { invalidateXBriefIndex as A, listSpecs as C, writeSpecForIssue as D, writeSpecDocument as E, getReadableWorkspacePanPaths as F, getWorkspacePanPaths as I, init_continue as L, getProjectPanPaths as M, ensureWorkspacePanDir as N, findXBriefByIssue as O, getLegacyWorkspacePanPaths as P, init_specs as S, writeSpec as T, XBRIEF_INSPECTION_POLICIES as _, findWorkspaceDraftPlan as a, ensurePanDirs as b, mergeRecordStatusOverrides as c, readPlanSync as d, readTierOverrides as f, serializeXBriefDocument as g, recordTierPromotion as h, findPlanSync as i, readXBriefDocument as j, init_xbrief_index as k, normalizeXBriefEnvelope as l, readWorkspacePlanSync as m, applyStatusOverrides as n, init_io as o, readWorkspacePlan as p, findPlan as r, isPlanningComplete as s, XBriefMergeConflictError as t, readPlan as u, init_types as v, readSpec as w, findSpecByIssue as x, subItemsOf as y };
847
+ export { init_xbrief_index as A, init_specs as C, writeSpecDocument as D, writeSpec as E, ensureWorkspacePanDir as F, getLegacyWorkspacePanPaths as I, getReadableWorkspacePanPaths as L, readXBriefDocument as M, getProjectPanPaths as N, writeSpecForIssue as O, init_paths as P, getWorkspacePanPaths as R, findSpecByIssue as S, readSpec as T, serializeXBriefDocument as _, findWorkspaceDraftPlan as a, subItemsOf as b, isPlanningComplete as c, readPlan as d, readPlanSync as f, recordTierPromotion as g, readWorkspacePlanSync as h, findPlanSync as i, invalidateXBriefIndex as j, findXBriefByIssue as k, mergeRecordStatusOverrides as l, readWorkspacePlan as m, applyStatusOverrides as n, findWorkspaceDraftPlanSync as o, readTierOverrides as p, findPlan as r, init_io as s, XBriefMergeConflictError as t, normalizeXBriefEnvelope as u, XBRIEF_INSPECTION_POLICIES as v, listSpecs as w, ensurePanDirs as x, init_types as y, init_continue as z };
848
848
 
849
- //# sourceMappingURL=io-B00PBNku.js.map
849
+ //# sourceMappingURL=io-mxOWMZ7I.js.map
@@ -1,10 +1,10 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Gn as init_projects, ar as resolveProjectFromIssueSync } from "./config-yaml-CxdwhAIA.js";
3
- import { n as resolveGitHubIssueSync, r as resolveTrackerTypeSync, t as init_tracker_utils } from "./tracker-utils-CJ6BHjcD.js";
4
- import { a as init_linear, i as LinearTracker, r as init_factory, t as createTracker } from "./factory-Cmm9Hsho.js";
5
- import { f as init_github_app, p as isGitHubAppConfigured, s as getIssueState } from "./github-app-CmNk0zLU.js";
6
- import { a as getShadowState, s as init_shadow_state } from "./shadow-state-BBk_zacw.js";
7
- import { n as init_shadow_utils, t as getLinearApiKey } from "./shadow-utils-DdZ05AJS.js";
2
+ import { Sn as resolveProjectFromIssueSync, cn as init_projects } from "./config-yaml-BSCqwmX0.js";
3
+ import { n as resolveGitHubIssueSync, r as resolveTrackerTypeSync, t as init_tracker_utils } from "./tracker-utils-BDeAXC-q.js";
4
+ import { a as init_linear, i as LinearTracker, r as init_factory, t as createTracker } from "./factory-DhavwKVc.js";
5
+ import { f as init_github_app, p as isGitHubAppConfigured, s as getIssueState } from "./github-app-D2QuvZ3j.js";
6
+ import { a as getShadowState, s as init_shadow_state } from "./shadow-state-DrkhoVSx.js";
7
+ import { n as init_shadow_utils, t as getLinearApiKey } from "./shadow-utils-H1GfqP06.js";
8
8
  import { Effect } from "effect";
9
9
  import { execFile } from "child_process";
10
10
  import { promisify } from "util";
@@ -112,4 +112,4 @@ var init_issue_closed = __esmMin((() => {
112
112
  //#endregion
113
113
  export { isTrackerIssueClosed as i, init_issue_closed as n, isIssueClosed as r, clearIssueClosedCache as t };
114
114
 
115
- //# sourceMappingURL=issue-closed-BehTG1be.js.map
115
+ //# sourceMappingURL=issue-closed-Bj_bCv_0.js.map
@@ -1,3 +1,3 @@
1
- import { i as init_issue_lifecycle, n as IssueLifecycleLive, r as IssueLifecycleWithClientLive, t as IssueLifecycle } from "./issue-lifecycle-Birk-ifu.js";
1
+ import { i as init_issue_lifecycle, n as IssueLifecycleLive, r as IssueLifecycleWithClientLive, t as IssueLifecycle } from "./issue-lifecycle-BXUqaHzF.js";
2
2
  init_issue_lifecycle();
3
3
  export { IssueLifecycle, IssueLifecycleLive, IssueLifecycleWithClientLive };
@@ -1,19 +1,20 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { o as init_activity_logger, t as emitActivityDetailedSync } from "./activity-logger-CyteR4JO.js";
3
- import { a as init_event_store, i as initEventStore } from "./event-store-CrHcVC5_.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-B948bGVR.js";
5
- import { X as listOverdeckAgentStatesSync, Y as init_agent_state_sync } from "./review-status-CGvlA4o_.js";
6
- import { o as init_agents, t as AgentsResolver } from "./agents-J5mEnekq.js";
7
- import { n as init_boot_reconciled_stop_events, t as emitBootReconciledStopEvents } from "./boot-reconciled-stop-events-C7gGe3oB.js";
8
- import { f as resolveStatusFile, i as init_paths } from "./paths-sJBSb7Ul.js";
9
- import { a as resolveSessionContextBriefingPath, r as init_briefing_freshness } from "./briefing-freshness-DRqZ8lAz.js";
10
- import { n as listFeatureRegistryEntries, t as init_feature_registry_storage } from "./feature-registry-storage-DJEFx1Pf.js";
11
- import { h as listCheckpoints, m as init_checkpoint_manager, s as diffCheckpointFiles, t as captureCheckpoint } from "./checkpoint-manager-DBcyNR8w.js";
12
- import { i as init_linear_client, r as LinearClientOptionalLive, t as LinearClient } from "./linear-client-9uq7fhiV.js";
13
- import { i as init_github_client, r as GitHubClientOptionalLive, t as GitHubClient } from "./github-client-qazkPrg0.js";
14
- import { i as init_rally_client, r as RallyClientOptionalLive, t as RallyClient } from "./rally-client-iYMHWQD7.js";
15
- import { n as resolveGitHubIssueSync, r as resolveTrackerTypeSync, t as init_tracker_utils } from "./tracker-utils-CJ6BHjcD.js";
16
- import { n as init_issue_service_singleton, t as getSharedIssueService } from "./issue-service-singleton-C6ZduvuY.js";
2
+ import { c as init_activity_logger, t as emitActivityDetailedSync } from "./activity-logger-Co5qljIj.js";
3
+ import { o as init_resolver, u as resolveWorkspaceForCwd } from "./resolver-BvHd6RE4.js";
4
+ import { a as init_event_store, i as initEventStore } from "./event-store-D_AR-Y78.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-BYdwL_n-.js";
6
+ import { $ as listOverdeckAgentStatesSync, Q as init_agent_state_sync } from "./review-status-CKLk5aZ-.js";
7
+ import { o as init_agents, t as AgentsResolver } from "./agents-Dls7tfJH.js";
8
+ import { n as init_boot_reconciled_stop_events, t as emitBootReconciledStopEvents } from "./boot-reconciled-stop-events-D6SeUTIr.js";
9
+ import { f as resolveStatusFile, i as init_paths } from "./paths-BUuhi6jM.js";
10
+ import { a as resolveSessionContextBriefingPath, r as init_briefing_freshness } from "./briefing-freshness-3PNmL_p3.js";
11
+ import { n as listFeatureRegistryEntries, t as init_feature_registry_storage } from "./feature-registry-storage-C5DkXmCM.js";
12
+ import { h as listCheckpoints, m as init_checkpoint_manager, s as diffCheckpointFiles, t as captureCheckpoint } from "./checkpoint-manager-B2G38R3p.js";
13
+ import { i as init_linear_client, r as LinearClientOptionalLive, t as LinearClient } from "./linear-client-B8pLegW1.js";
14
+ import { i as init_github_client, r as GitHubClientOptionalLive, t as GitHubClient } from "./github-client-D9YvJX5D.js";
15
+ import { i as init_rally_client, r as RallyClientOptionalLive, t as RallyClient } from "./rally-client-Ch3zRsBX.js";
16
+ import { n as resolveGitHubIssueSync, r as resolveTrackerTypeSync, t as init_tracker_utils } from "./tracker-utils-BDeAXC-q.js";
17
+ import { n as init_issue_service_singleton, t as getSharedIssueService } from "./issue-service-singleton-BPNEXczv.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";
@@ -301,7 +302,7 @@ var init_read_model = __esmMin((() => {
301
302
  };
302
303
  const getSnapshot = Effect.gen(function* () {
303
304
  try {
304
- const { getSharedIssueService } = yield* Effect.promise(() => import("./issue-service-singleton-B2wXiIlw.js"));
305
+ const { getSharedIssueService } = yield* Effect.promise(() => import("./issue-service-singleton-CcaHjKPR.js"));
305
306
  const currentIssues = cleanIssues(getSharedIssueService().getIssues());
306
307
  if (currentIssues.length > 0 || state.issuesRaw.length === 0) state = {
307
308
  ...state,
@@ -326,14 +327,14 @@ var init_read_model = __esmMin((() => {
326
327
  const getAgentIdBySessionId = (sessionId) => Effect.sync(() => state.agentIdBySessionId[sessionId] ?? null);
327
328
  const agentsResolver = yield* AgentsResolver;
328
329
  yield* Effect.gen(function* () {
329
- const { reconstructCacheAuto } = yield* Effect.promise(() => import("./reconstruct-cache-CMZJ_Vjq.js"));
330
+ const { reconstructCacheAuto } = yield* Effect.promise(() => import("./reconstruct-cache-BHyiAg02.js"));
330
331
  const result = yield* Effect.promise(() => reconstructCacheAuto());
331
332
  const overdeckAgents = yield* agentsResolver.list({});
332
333
  const agentsById = Object.fromEntries(overdeckAgents.map((a) => [a.id, agentSnapshotFromOverdeck(a)]));
333
334
  let sequence = 0;
334
335
  let recentActivity = [];
335
336
  try {
336
- const { getEventStore } = yield* Effect.promise(() => import("./event-store-5UKzh9Jf.js"));
337
+ const { getEventStore } = yield* Effect.promise(() => import("./event-store-COd2tOx8.js"));
337
338
  const eventStore = getEventStore();
338
339
  yield* Effect.promise(() => emitBootReconciledStopEvents(eventStore, result.markedStoppedIds, result.agentsById, "[ReadModel] Failed to emit boot-reconciled stop events:"));
339
340
  sequence = eventStore.getLatestSequence();
@@ -352,7 +353,7 @@ var init_read_model = __esmMin((() => {
352
353
  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}`);
353
354
  (async () => {
354
355
  try {
355
- const { listCheckpoints, diffCheckpointFiles, getCheckpointTimestamp, deleteLegacyCheckpointRefs } = await import("./checkpoint-manager-CkKmB0wZ.js");
356
+ const { listCheckpoints, diffCheckpointFiles, getCheckpointTimestamp, deleteLegacyCheckpointRefs } = await import("./checkpoint-manager-9t7G5c1V.js");
356
357
  const agents = Object.values(state.agentsById);
357
358
  const firstAgentWithWorkspace = agents.find((a) => a.workspace);
358
359
  if (firstAgentWithWorkspace?.workspace) {
@@ -409,7 +410,7 @@ var init_read_model = __esmMin((() => {
409
410
  }
410
411
  })();
411
412
  try {
412
- const { getSharedIssueService } = yield* Effect.promise(() => import("./issue-service-singleton-B2wXiIlw.js"));
413
+ const { getSharedIssueService } = yield* Effect.promise(() => import("./issue-service-singleton-CcaHjKPR.js"));
413
414
  const issueService = getSharedIssueService();
414
415
  const mergeT0 = performance.now();
415
416
  const currentIssues = cleanIssues(issueService.getIssues());
@@ -433,7 +434,7 @@ var init_read_model = __esmMin((() => {
433
434
  issuesRaw: cleaned
434
435
  };
435
436
  try {
436
- if (!_cachedEventStore) import("./event-store-5UKzh9Jf.js").then(({ getEventStore }) => {
437
+ if (!_cachedEventStore) import("./event-store-COd2tOx8.js").then(({ getEventStore }) => {
437
438
  _cachedEventStore = getEventStore();
438
439
  try {
439
440
  _cachedEventStore.emitOnly({
@@ -449,7 +450,7 @@ var init_read_model = __esmMin((() => {
449
450
  payload: { issues: cleaned }
450
451
  });
451
452
  } catch {}
452
- import("./backlog-auto-trigger-n1lzPgN4.js").then(({ triggerDebouncedIncrementalPass }) => {
453
+ import("./backlog-auto-trigger-Dn-amzt6.js").then(({ triggerDebouncedIncrementalPass }) => {
453
454
  triggerDebouncedIncrementalPass(process.cwd());
454
455
  }).catch(() => {});
455
456
  });
@@ -475,8 +476,10 @@ async function assembleLiveBriefingMarkdown(input = {}) {
475
476
  const now = input.now ?? /* @__PURE__ */ new Date();
476
477
  const snapshot = input.snapshot;
477
478
  const registryEntries = input.registryEntries ?? [];
478
- const workspace = snapshot ? null : await detectWorkspaceContext(resolve$1(input.cwd ?? process.cwd()));
479
- const status = workspace ? await readWorkspaceStatus(projectId, workspace.issueId) : null;
479
+ const cwd = resolve$1(input.cwd ?? process.cwd());
480
+ const workspace = snapshot ? null : await detectWorkspaceContext(cwd);
481
+ const workspaceRowId = workspace ? resolveWorkspaceForCwd(cwd)?.id : null;
482
+ const status = workspace && workspaceRowId ? await readWorkspaceStatus(projectId, workspaceRowId) : null;
480
483
  return [
481
484
  "# Working Inside Overdeck",
482
485
  "",
@@ -549,9 +552,9 @@ async function readWorkspacePlanTitle(workspacePath) {
549
552
  throw error;
550
553
  }
551
554
  }
552
- async function readWorkspaceStatus(projectId, issueId) {
555
+ async function readWorkspaceStatus(projectId, workspaceId) {
553
556
  try {
554
- const parsed = JSON.parse(await readFile$1(resolveStatusFile(projectId, issueId), "utf8"));
557
+ const parsed = JSON.parse(await readFile$1(resolveStatusFile(projectId, workspaceId), "utf8"));
555
558
  return parsed && typeof parsed === "object" ? parsed : null;
556
559
  } catch (error) {
557
560
  if (isNotFound(error)) return null;
@@ -576,7 +579,7 @@ function renderLocalWorkspaceSection(workspace, status) {
576
579
  function renderDashboardWorkspaceSection(snapshot) {
577
580
  const runningAgents = snapshot.agents.filter((agent) => agent.status === "running" || agent.hasLiveTmuxSession);
578
581
  const pausedAgents = snapshot.agents.filter((agent) => agent.paused);
579
- const troubledAgents = snapshot.agents.filter((agent) => agent.troubled || (agent.consecutiveFailures ?? 0) > 0);
582
+ const troubledAgents = snapshot.agents.filter((agent) => agent.troubled === true);
580
583
  const activeIssues = new Set(snapshot.agents.map((agent) => agent.issueId).filter(Boolean));
581
584
  const failedReviews = snapshot.reviewStatuses.filter((status) => status.testStatus === "failed" || status.uatStatus === "failed" || status.verificationStatus === "failed" || status.reviewStatus === "failed" || (status.blockerReasons?.length ?? 0) > 0);
582
585
  const lines = [
@@ -635,6 +638,7 @@ function isNotFound(error) {
635
638
  var DEFAULT_PROJECT_ID;
636
639
  var init_briefing_assembler = __esmMin((() => {
637
640
  init_paths();
641
+ init_resolver();
638
642
  DEFAULT_PROJECT_ID = "overdeck";
639
643
  }));
640
644
  //#endregion
@@ -1400,4 +1404,4 @@ var init_issue_lifecycle = __esmMin((() => {
1400
1404
  //#endregion
1401
1405
  export { findPositionInQueueSync as _, EventStoreService as a, ReadModelService as c, getClosedIssueIdsForReadSource as d, init_read_model as f, computeQueuePositionFromStatusSync as g, toRole as h, init_issue_lifecycle as i, ReadModelServiceLive as l, toAgentStatus as m, IssueLifecycleLive as n, EventStoreServiceLive as o, toAgentResolution as p, IssueLifecycleWithClientLive as r, init_domain_services as s, IssueLifecycle as t, activityEntriesFromStoredEvents as u, init_queue_position as v };
1402
1406
 
1403
- //# sourceMappingURL=issue-lifecycle-Birk-ifu.js.map
1407
+ //# sourceMappingURL=issue-lifecycle-BXUqaHzF.js.map