@overdeck/desktop 0.47.1 → 0.48.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/drizzle/overdeck/0000_overdeck_init.sql +59 -0
- package/package.json +1 -1
- package/server/{acceptance-criteria-Cd7ZGZCq.js → acceptance-criteria-DmtLDbtt.js} +2 -2
- package/server/{activity-logger-CyteR4JO.js → activity-logger-Co5qljIj.js} +55 -4
- package/server/activity-logger-K7FYGF_z.js +3 -0
- package/server/{advancing-selfheal-DieFp3qi.js → advancing-selfheal-8AR68Asf.js} +6 -6
- package/server/{agent-gc-BMcgTDl7.js → agent-gc-BmYeT6eH.js} +5 -5
- package/server/agent-state-Dq3s84-P.js +3 -0
- package/server/{agent-state-service-DFO6qvHp.js → agent-state-service-DK1Vay1E.js} +1 -1
- package/server/{agent-state-service-BOzQhLjU.js → agent-state-service-rjnzpHDx.js} +6 -6
- package/server/{agent-state-source-Ca_zCaII.js → agent-state-source-Ds968-j6.js} +1 -1
- package/server/{agents-CtACUuVG.js → agents-Dls7tfJH.js} +5 -5
- package/server/agents-IPSa5kzn.js +3 -0
- package/server/{archive-planning-Binfb99i.js → archive-planning-Cq7cyinS.js} +51 -24
- package/server/archive-planning-MbkGCBIY.js +2 -0
- package/server/{artifact-index-jobs-Jn7BGOtV.js → artifact-index-jobs-Dj_8kpTd.js} +3 -3
- package/server/{assemble-DsqK9OAq.js → assemble-BTCmbcfH.js} +20 -13
- package/server/{auto-spawn-consent-BooqhC3L.js → auto-spawn-consent-lXqRJ1Dr.js} +304 -121
- package/server/{backlog-auto-trigger-BADGPxov.js → backlog-auto-trigger-Dn-amzt6.js} +3 -3
- package/server/{behavior-B7biGtFT.js → behavior-DIMQMRzs.js} +2 -2
- package/server/{boot-reconciled-stop-events-bQUzU8ns.js → boot-reconciled-stop-events-D6SeUTIr.js} +1 -1
- package/server/{bridge-pool-patrol-DsPj6F7t.js → bridge-pool-patrol-BEjt-xF3.js} +2 -2
- package/server/{briefing-freshness-CUerZqWd.js → briefing-freshness-3PNmL_p3.js} +2 -2
- package/server/{build-info-D0q_i8WM.js → build-info-CJg813Hm.js} +3 -3
- package/server/{build-info-Du74MKiP.js → build-info-CXyeFsXu.js} +1 -1
- package/server/{checkpoint-manager-Cu-R5Uzg.js → checkpoint-manager-9t7G5c1V.js} +1 -1
- package/server/{checkpoint-manager-R5tnaxEY.js → checkpoint-manager-B2G38R3p.js} +3 -3
- package/server/checkpoint-worker.js +1 -1
- package/server/{checkpoints-wF84ubZ8.js → checkpoints-CuBgiXO-.js} +1 -1
- package/server/{checkpoints-DYtLu-PB.js → checkpoints-VTZMd4Qm.js} +2 -2
- package/server/{claude-hooks-provision-DXI3Wqlm.js → claude-hooks-provision-55SyQaPz.js} +2 -2
- package/server/{claude-hooks-provision-UKxCeOyj.js → claude-hooks-provision-CEUT-CZd.js} +1 -1
- package/server/{claude-permissions-DYVLnX9t.js → claude-permissions-Cn0dIu2i.js} +2 -2
- package/server/{claude-settings-overlay-DxP2F_gY.js → claude-settings-overlay-B19hdzSA.js} +1 -1
- package/server/{claude-settings-overlay-DsbpIq2d.js → claude-settings-overlay-Yg_ANh81.js} +2 -2
- package/server/{cli-DzRKxxP_.js → cli-C9S84iTy.js} +79 -22
- package/server/cli-M1cwZ__d.js +3 -0
- package/server/{cliproxy-CG4meRFc.js → cliproxy-CJq3KXU6.js} +2 -2
- package/server/{cliproxy-Cwzw39yN.js → cliproxy-DgEZlr7Y.js} +1 -1
- package/server/{close-issue-BX1bATJy.js → close-issue-DPxRddGR.js} +5 -5
- package/server/{closed-issue-reaper-hLt0W86J.js → closed-issue-reaper-C5Zn4GRS.js} +13 -13
- package/server/{closed-issue-reaper-DvnTSN6a.js → closed-issue-reaper-D-2B48Ri.js} +1 -1
- package/server/{codex-rnJN3v3_.js → codex-B3n_rkwn.js} +1 -1
- package/server/{codex-BYwi1uyW.js → codex-CjkD1PJu.js} +6 -6
- package/server/{codex-parser-Poyz29GE.js → codex-parser-DpB1Il-P.js} +2 -2
- package/server/{compaction-continuation-DtMfHN0f.js → compaction-continuation-DZD9ukSE.js} +3 -3
- package/server/{config-R793W0yA.js → config-C5saf4Ja.js} +1 -1
- package/server/{config-CX4vk1CV.js → config-DnLJATZk.js} +2 -2
- package/server/{config-ktAVnp4s.js → config-DvM8jtQK.js} +2 -2
- package/server/{config-yaml-CxdwhAIA.js → config-yaml-BSCqwmX0.js} +11299 -10972
- package/server/{conflict-gate-BSTlwCtF.js → conflict-gate-DXa_L28t.js} +1 -1
- package/server/{conflict-gate-BNv6UolH.js → conflict-gate-WfVqgalf.js} +4 -4
- package/server/{context-layers-DCdaGsRG.js → context-layers-D7UqH9Ab.js} +2 -2
- package/server/{context-layers-DlWsDiRF.js → context-layers-Dpz3Vd6d.js} +3 -3
- package/server/{control-settings-qYYHrIqy.js → control-settings-DVf6pKyv.js} +4 -4
- package/server/{conversation-compaction-BxUKObHb.js → conversation-compaction-5XuH6OBn.js} +1 -1
- package/server/{conversation-compaction-CXQrN3I_.js → conversation-compaction-COrbnX1J.js} +8 -8
- package/server/{conversation-service-CZiUE8Uw.js → conversation-service-BufdtnZF.js} +169 -10
- package/server/{conversation-service-CDnQ3ayN.js → conversation-service-DnUyIiLb.js} +1 -1
- package/server/{conversations-D7lR670u.js → conversations-B4rxz-Wl.js} +17 -10
- package/server/{conversations-DXl5YTf4.js → conversations-D1bwxQMy.js} +1 -1
- package/server/{cost-Aat8HfO_.js → cost-CpFDrJUS.js} +46 -2
- package/server/{cost-CWvN9FP2.js → cost-KLuwKCW9.js} +3 -3
- package/server/{cost-sync-DiUBXwl6.js → cost-sync-cesi9dp8.js} +3 -3
- package/server/{dag-5QlmH0oC.js → dag-BYiFMqpU.js} +2 -2
- package/server/{dangerous-git-ops-DWX6Og8c.js → dangerous-git-ops-BKvd3-Hk.js} +1 -1
- package/server/dashboard-db-worker.js +7 -7
- package/server/{deacon-PW_bg4uL.js → deacon-BbsWw8a6.js} +3 -3
- package/server/{deacon-B1LD5cJU.js → deacon-HdEh0Esp.js} +672 -181
- package/server/deacon-event-client-C93rvOT7.js +237 -0
- package/server/deacon-event-client-Ck5Ei7Mn.js +3 -0
- package/server/{deacon-nudge-log-DPHsO14z.js → deacon-nudge-log-BND_97Wo.js} +4 -3
- package/server/{deacon-pending-lifecycle-2ZflPxgo.js → deacon-pending-lifecycle-CD3YsiQK.js} +3 -3
- package/server/deacon-swarm-DgWADWd_.js +2 -0
- package/server/{deacon-swarm-DwGUgSVp.js → deacon-swarm-rqrl4TMs.js} +39 -18
- package/server/deacon.js +12 -210
- package/server/{dead-end-trip-B06RFIr2.js → dead-end-trip-DSF23CLX.js} +4 -3
- package/server/dead-end-trip-zKlS4v6f.js +2 -0
- package/server/delivery-CsbQdZkS.js +3 -0
- package/server/{deploy-patrol-BNjeCL8u.js → deploy-patrol-kARAkji4.js} +17 -21
- package/server/{deploy-queue-CKT_Ia9p.js → deploy-queue-Bj0HJT1i.js} +2 -2
- package/server/{deploy-queue-DMMYhFC8.js → deploy-queue-rjTUy1RM.js} +1 -1
- package/server/{deploy-window-DC8lze3d.js → deploy-window-B2IM-9G5.js} +10 -44
- package/server/{deploy-window-D_AimdNN.js → deploy-window-BNFWnA8D.js} +1 -1
- package/server/{dev-supervisor-C4F0vbno.js → dev-supervisor-B1mZYXz4.js} +2 -2
- package/server/{devcontainer-renderer-66sqMQIi.js → devcontainer-renderer-B-o68Z5B.js} +3 -3
- package/server/{dist-C5FT9lTG.js → dist-3W--cGMa.js} +1 -1
- package/server/dist-BR0QtwmS.js +3 -0
- package/server/{dist-src-B-AlGWSl.js → dist-src-C-Vk2jNk.js} +1 -1
- package/server/{docker-BxrFhTZ_.js → docker-DH3jUYg1.js} +1 -1
- package/server/{docker-CoAT8R0J.js → docker-meuLKLzV.js} +27 -20
- package/server/{dod-Bg6wsKTV.js → dod-D7-9dCOD.js} +1 -1
- package/server/{driver-CKVGi51s.js → driver-CmsY2RLl.js} +1 -1
- package/server/{durable-review-pipeline-D_DcfIGP.js → durable-review-pipeline-CStTgOAf.js} +1 -1
- package/server/{durable-review-pipeline-HkAgnx0L.js → durable-review-pipeline-Chq0lzjL.js} +1 -1
- package/server/{ensure-devcontainer-Bg5HJAcO.js → ensure-devcontainer-BE3llBWP.js} +1 -1
- package/server/{ensure-devcontainer-DTxChVuA.js → ensure-devcontainer-BXrY7C2Z.js} +4 -4
- package/server/{esm-shims-CaBWIR7f.js → esm-shims-Bzy4ZzNU.js} +1 -1
- package/server/event-store-COd2tOx8.js +3 -0
- package/server/{event-store-CrHcVC5_.js → event-store-D_AR-Y78.js} +184 -11
- package/server/{events-ChEFB7Jp.js → events-CCkFWa7X.js} +1 -1
- package/server/{events-DhRN-6vM.js → events-zjDQozet.js} +3 -3
- package/server/{factory-BezSPaTd.js → factory-DhavwKVc.js} +5 -5
- package/server/{feature-registry-population-DhswNiXx.js → feature-registry-population-DWGBKyWd.js} +4 -4
- package/server/{feature-registry-storage-CUVNpAso.js → feature-registry-storage-C5DkXmCM.js} +3 -3
- package/server/{features-B2CfNPFw.js → features-CC47YcCX.js} +2 -2
- package/server/{feedback-target-CMrEAoeA.js → feedback-target-D9Tex35_.js} +1 -1
- package/server/{feedback-target-VBr9gKgX.js → feedback-target-DoRCR3L-.js} +8 -8
- package/server/{feedback-writer-CY91ckuw.js → feedback-writer-CTSuA6lw.js} +1 -1
- package/server/{feedback-writer-xpFgU632.js → feedback-writer-DdsBdtNL.js} +5 -5
- package/server/{flywheel-DsICCjTR.js → flywheel-DHWHzaYK.js} +1 -1
- package/server/{flywheel-DQqsSm7P.js → flywheel-DJQa9az8.js} +14 -14
- package/server/{flywheel-CTVY3yCG.js → flywheel-TacAI9MA.js} +21 -17
- package/server/{flywheel-merge-order-C-TI4JGu.js → flywheel-merge-order-D2foPh88.js} +1 -1
- package/server/{flywheel-merge-order-CMGz-imq.js → flywheel-merge-order-DRtex2Dt.js} +7 -7
- package/server/forge-CdlCG9aS.js +3 -0
- package/server/{forge-RTNqJe6a.js → forge-c8LeC-tw.js} +2 -2
- package/server/{from-DxGcivc9.js → from-BogSwvr2.js} +1 -1
- package/server/{fs-lock-Bre3sGoz.js → fs-lock-D_GeJtXl.js} +3 -3
- package/server/{fts-operations-BuTdlZFA.js → fts-operations-DP9R-8Q3.js} +3 -3
- package/server/{git-utils-CedsVume.js → git-utils-C31x1lpE.js} +1 -1
- package/server/{git-utils-DtdoEXJk.js → git-utils-xQ74FoSn.js} +5 -4
- package/server/{github-app-DIE8BkHI.js → github-app-CpQSDlv8.js} +1 -1
- package/server/{github-app-gVnZcP9B.js → github-app-D2QuvZ3j.js} +3 -3
- package/server/{github-client-BrAC6ELh.js → github-client-D9YvJX5D.js} +3 -3
- package/server/{github-client-CBOkvBUl.js → github-client-Tpi3PmKX.js} +1 -1
- package/server/{github-pr-lookup-CgMULTPf.js → github-pr-lookup-DvBMv-IW.js} +2 -2
- package/server/{harness-binary-CnBHpd57.js → harness-binary-BHxWf_sX.js} +7 -6
- package/server/{harness-resolve-BVj6sI8m.js → harness-resolve-bj9WMABA.js} +4 -4
- package/server/{health-events-BBWO_Dh9.js → health-events-bCDPn59Z.js} +2 -2
- package/server/{health-events-Der6bOkm.js → health-events-qo7Ss34U.js} +1 -1
- package/server/{hooks-BOavco-e.js → hooks-Dyxtg5fk.js} +2 -2
- package/server/{hooks-BJNal-bs.js → hooks-X2XHBB2b.js} +1 -1
- package/server/{hume-DBocJFkA.js → hume-DrZEGpqc.js} +2 -2
- package/server/hume-YPsy4UA8.js +3 -0
- package/server/{idle-stack-reaper-DQFh8rDh.js → idle-stack-reaper-CJ1ygW0p.js} +37 -7
- package/server/{idle-stack-reaper-CyGxXOfC.js → idle-stack-reaper-uJGOb-vu.js} +1 -1
- package/server/{in-flight-guard-nXEKoxI7.js → in-flight-guard-CG2Eo-rr.js} +1 -1
- package/server/{infra-BDQDRopn.js → infra-CTrmVqc_.js} +111 -6
- package/server/{injection-DfFFEMKL.js → injection-BisQ0lpX.js} +1 -1
- package/server/{injection-CCopdUKz.js → injection-C9sxqbc2.js} +73 -193
- package/server/{inspect-agent-FCDlNT_i.js → inspect-agent-BoSO51YC.js} +12 -12
- package/server/inspect-agent-BykeOH4a.js +2 -0
- package/server/{internal-token-BG6yQKNL.js → internal-token-AvXePaQT.js} +2 -2
- package/server/{internal-token-BJZa40Ld.js → internal-token-Djkj-yqK.js} +1 -1
- package/server/{io-C0NV7y6C.js → io-mxOWMZ7I.js} +6 -6
- package/server/{issue-closed-CNNGbhWm.js → issue-closed-Bj_bCv_0.js} +7 -7
- package/server/{issue-lifecycle-DSH0GpWC.js → issue-lifecycle-A5YIpDZE.js} +1 -1
- package/server/{issue-lifecycle-BXfzxFCD.js → issue-lifecycle-BXUqaHzF.js} +32 -28
- package/server/{issue-service-singleton-F3A5VP6M.js → issue-service-singleton-BPNEXczv.js} +11 -11
- package/server/{issue-service-singleton-lwFJ4dHk.js → issue-service-singleton-CcaHjKPR.js} +1 -1
- package/server/{issues-DA-U_MpR.js → issues-AX-YBeAQ.js} +2 -2
- package/server/{jsonl-parser-BXiGANOh.js → jsonl-parser-CgYWQ20q.js} +7 -3
- package/server/kimi-code-BYbme0aV.js +579 -0
- package/server/kimi-code-D_Ppt82c.js +3 -0
- package/server/kimi-parser-B-JBg3Pv.js +147 -0
- package/server/{label-cleanup-BnxRk0Eo.js → label-cleanup-sXUlgdM0.js} +3 -3
- package/server/{lifecycle-DOgGnpIv.js → lifecycle-D2X3al0D.js} +2 -2
- package/server/{lifecycle-Di48-w4x.js → lifecycle-DjlljAZ1.js} +6 -6
- package/server/{lifecycle-io-eVG6v_8-.js → lifecycle-io-C5nVk55o.js} +1 -1
- package/server/{lifecycle-io-1XSeczTr.js → lifecycle-io-NPm1YtIG.js} +5 -5
- package/server/{linear-client-CvGo9n7M.js → linear-client--luYwCZg.js} +1 -1
- package/server/{linear-client-CYZRrcjp.js → linear-client-B8pLegW1.js} +3 -3
- package/server/{linear-mcp-auth-Cp0XaP96.js → linear-mcp-auth-BQVWV0I3.js} +6 -6
- package/server/{linear-mcp-auth-DoJnjdPZ.js → linear-mcp-auth-Dx81Zl4G.js} +1 -1
- package/server/memory-fts-worker.js +1 -1
- package/server/{merge-DO14mOr3.js → merge-Bx5Bh9pi.js} +3 -3
- package/server/{merge-ZF99ig6A.js → merge-Dqmh_zja.js} +1 -1
- package/server/{merge-agent-gpiRkcvj.js → merge-agent-DP9AUY29.js} +33 -33
- package/server/{merge-agent-C1-9zbP_.js → merge-agent-DWd0KfiS.js} +1 -1
- package/server/{merge-batch-C11ocNkO.js → merge-batch-BdmvTEAC.js} +1 -1
- package/server/{merge-completeness-CghMbyX7.js → merge-completeness-BfRwFjRx.js} +1 -1
- package/server/{merge-completeness-BUzPZy0E.js → merge-completeness-C1FevcDT.js} +4 -4
- package/server/merge-ops-B98tKc1e.js +2 -0
- package/server/merge-rebase-BLykMwPO.js +2 -0
- package/server/{merge-rebase-iwlUzZjr.js → merge-rebase-BX1xKsrE.js} +2 -2
- package/server/{merge-set-Dbnx4chw.js → merge-set-DsLjjLEV.js} +4 -4
- package/server/{merge-set-BymrheTj.js → merge-set-H6epHOsw.js} +1 -1
- package/server/{merge-sync-CM978zez.js → merge-sync-BEdfsQV4.js} +2 -2
- package/server/{merge-sync-CqEtqjI2.js → merge-sync-BebcWWGA.js} +1 -1
- package/server/{merge-train-DvLcAn1G.js → merge-train-D1I0lNOT.js} +4 -4
- package/server/{merge-train-deps-Cl_kcRbO.js → merge-train-deps-D_-C0Pk2.js} +4 -4
- package/server/{merge-verification-c9Y9mllw.js → merge-verification-DN1Ov9bU.js} +6 -6
- package/server/{merged-docker-cleanup-worker-CGiDOdv8.js → merged-docker-cleanup-worker-CfXSr2pA.js} +4 -4
- package/server/{merged-docker-cleanup-worker-DgsLOx3E.js → merged-docker-cleanup-worker-ybsPyHjB.js} +1 -1
- package/server/{multipart-parser-D0twwRjz.js → multipart-parser-CL5QG8iv.js} +2 -2
- package/server/{no-resume-mode-DZvP0M_S.js → no-resume-mode-DUR7Hi98.js} +1 -1
- package/server/node_modules/.package-lock.json +7 -7
- package/server/node_modules/brace-expansion/README.md +23 -1
- package/server/node_modules/brace-expansion/index.js +206 -85
- package/server/node_modules/brace-expansion/package.json +1 -1
- package/server/node_modules/msgpackr/dist/index-no-eval.cjs +34 -28
- package/server/node_modules/msgpackr/dist/index-no-eval.cjs.map +1 -1
- package/server/node_modules/msgpackr/dist/index-no-eval.min.js +1 -1
- package/server/node_modules/msgpackr/dist/index-no-eval.min.js.map +1 -1
- package/server/node_modules/msgpackr/dist/index.js +34 -28
- package/server/node_modules/msgpackr/dist/index.js.map +1 -1
- package/server/node_modules/msgpackr/dist/index.min.js +1 -1
- package/server/node_modules/msgpackr/dist/index.min.js.map +1 -1
- package/server/node_modules/msgpackr/dist/node.cjs +36 -29
- package/server/node_modules/msgpackr/dist/node.cjs.map +1 -1
- package/server/node_modules/msgpackr/dist/test.js +63 -32
- package/server/node_modules/msgpackr/dist/test.js.map +1 -1
- package/server/node_modules/msgpackr/dist/unpack-no-eval.cjs +34 -28
- package/server/node_modules/msgpackr/dist/unpack-no-eval.cjs.map +1 -1
- package/server/node_modules/msgpackr/package.json +1 -1
- package/server/node_modules/msgpackr/unpack.js +34 -28
- package/server/{orphan-proposed-reconciler-6r2OEfYd.js → orphan-proposed-reconciler-CEW1maPl.js} +1 -1
- package/server/{orphan-proposed-reconciler-DtQP6oE_.js → orphan-proposed-reconciler-DfqHZftT.js} +23 -22
- package/server/package-lock.json +8 -8
- package/server/package.json +1 -1
- package/server/{pan-dir-DAOb1V2-.js → pan-dir-DhgKfO86.js} +21 -6
- package/server/{paths-DuATV5iE.js → paths-BUuhi6jM.js} +17 -17
- package/server/{pending-lifecycle-claim-DQUHIDfX.js → pending-lifecycle-claim-DJlA1rTR.js} +2 -2
- package/server/{persistent-logger-CBj016pT.js → persistent-logger-s8cbpFNV.js} +2 -2
- package/server/{pickup-zXZl5lQI.js → pickup-2AxtB3dW.js} +1 -1
- package/server/{pipeline-membership-DHOXmvba.js → pipeline-membership-2_okL5bm.js} +1 -1
- package/server/{pipeline-membership-B2yUcBz7.js → pipeline-membership-Dqv6_0ig.js} +1 -1
- package/server/{pipeline-membership-gather-OkLXuvxR.js → pipeline-membership-gather-4F1-tXKI.js} +1 -1
- package/server/{pipeline-membership-gather-BIcJ-N0W.js → pipeline-membership-gather-CtJ_7aGf.js} +149 -17
- package/server/{pipeline-notifier-BmwrVKsO.js → pipeline-notifier-CO9rxJgB.js} +1 -1
- package/server/{pipeline-notifier-CxMes51i.js → pipeline-notifier-DDfVBJhJ.js} +2 -2
- package/server/{post-merge-lifecycle-worker-3u_rA4R0.js → post-merge-lifecycle-worker-DmSOkeNp.js} +3 -3
- package/server/{project-pipelines-C3SPFJ38.js → project-pipelines-72WE8GVK.js} +2 -2
- package/server/{project-repos-BOpBzkO6.js → project-repos-BAqDwtvi.js} +16 -11
- package/server/project-repos-Df90Zw7Y.js +3 -0
- package/server/projects-WqMWCdpa.js +3 -0
- package/server/{prompts-B0TtboFm.js → prompts-XkL10m8M.js} +2 -2
- package/server/{providers-O2smCvSz.js → providers-ClGPGkQ8.js} +15 -12
- package/server/providers-DFUOed8u.js +3 -0
- package/server/public/assets/{chunk-BO2N2NFS-D_pGACYN.js → chunk-BO2N2NFS-CeQUdPxr.js} +4 -4
- package/server/public/assets/{diagram-OG6HWLK6-BO6fe3hH.js → diagram-OG6HWLK6-B7rgk4yT.js} +1 -1
- package/server/public/assets/{dist-5zingMiA.js → dist-2RPazfXY.js} +3 -3
- package/server/public/assets/{dist-CVxhbI2E.js → dist-B9NInrVZ.js} +1 -1
- package/server/public/assets/{ganttDiagram-6RSMTGT7-Bgj4A7kp.js → ganttDiagram-6RSMTGT7-Bxp0gV14.js} +1 -1
- package/server/public/assets/{highlighted-body-OFNGDK62-DNPK7_cm.js → highlighted-body-OFNGDK62-CzoRTVlC.js} +1 -1
- package/server/public/assets/index-Cml-kHo6.css +1 -0
- package/server/public/assets/{index-DEpY-D1O.js → index-CvN8cEgs.js} +216 -215
- package/server/public/assets/{linear-BB0jQT16.js → linear-CFEEl3ND.js} +1 -1
- package/server/public/assets/mermaid-GHXKKRXX-CpV7nCBM.js +1 -0
- package/server/public/assets/{pieDiagram-4H26LBE5-DeGIzzpZ.js → pieDiagram-4H26LBE5-BeR8R0cr.js} +1 -1
- package/server/public/assets/{prod-XBLvikex.js → prod-CYjzjCrn.js} +4 -4
- package/server/public/assets/{quadrantDiagram-W4KKPZXB-BV9SLeWz.js → quadrantDiagram-W4KKPZXB-BpcTkFuW.js} +1 -1
- package/server/public/assets/{sankeyDiagram-5OEKKPKP-Dwja0gj8.js → sankeyDiagram-5OEKKPKP-Bx2ETEV5.js} +1 -1
- package/server/public/assets/{xychartDiagram-2RQKCTM6-DCB4qvfw.js → xychartDiagram-2RQKCTM6-BKgEAFaj.js} +1 -1
- package/server/public/index.html +2 -2
- package/server/{pull-requests-BonZ4WVG.js → pull-requests-B-KrUph5.js} +3 -3
- package/server/{pull-requests-DNcJUVWA.js → pull-requests-DK5k92B4.js} +1 -1
- package/server/{queries-DCX27GRr.js → queries-DVpl1vsU.js} +1212 -193
- package/server/{rally-Cxe7lKYX.js → rally-DbE561hD.js} +3 -3
- package/server/rally-O_st_X7n.js +3 -0
- package/server/{rally-api-CzkKenoi.js → rally-api-CZLeEd2C.js} +2 -2
- package/server/{rally-api-Cp50exEi.js → rally-api-DaHtn5QN.js} +1 -1
- package/server/{rally-client-Bu3Cekkw.js → rally-client-C-MAl8ur.js} +1 -1
- package/server/{rally-client-CyBBEDHu.js → rally-client-Ch3zRsBX.js} +5 -5
- package/server/{reap-terminal-sessions-CtAhr6L0.js → reap-terminal-sessions-C1n0ALRb.js} +2 -2
- package/server/{reap-terminal-sessions-DvFqQUnq.js → reap-terminal-sessions-DegFS2p1.js} +2 -2
- package/server/{rebuild-stack-hCQtprWC.js → rebuild-stack-C9Li44A3.js} +20 -10
- package/server/{rebuild-stack-BKYpIPDL.js → rebuild-stack-qC0jCNm6.js} +2 -2
- package/server/{reconstruct-cache-CF2avArx.js → reconstruct-cache-BHyiAg02.js} +7 -7
- package/server/record-aVzu-LGm.js +3 -0
- package/server/record-update-CZh46a2f.js +617 -0
- package/server/{record-update-DhI7eySG.js → record-update-DtdJK2Iw.js} +1 -1
- package/server/recovery-trip-CSNWSLDn.js +77 -0
- package/server/recovery-trip-_16hFKv4.js +3 -0
- package/server/{release-engine-_eO3VFth.js → release-engine-Be5MX5GP.js} +5 -5
- package/server/{release-set-vxgZwwZV.js → release-set-DJv_O6PS.js} +3 -3
- package/server/{remote-BienmcrZ.js → remote-BMM3uH2J.js} +3 -3
- package/server/{remote-CVPCc7Vy.js → remote-C0xVTHA5.js} +3 -3
- package/server/{remote-agents-kwsEZvXu.js → remote-agents-BIIoc5pD.js} +1 -1
- package/server/{remote-agents-kxraOCGT.js → remote-agents-EUiZ26bj.js} +7 -7
- package/server/{remote-completion-BtmZ42aP.js → remote-completion-BS4tJUn8.js} +13 -13
- package/server/resolver-BvHd6RE4.js +163 -0
- package/server/resume-9thEqAQR.js +3 -0
- package/server/{review-agent-CIRr0yYt.js → review-agent-BHGaBoBu.js} +29 -29
- package/server/{review-agent-UpAM4DmT.js → review-agent-CD3RQ-tc.js} +1 -1
- package/server/{review-artifacts-BCODM9ww.js → review-artifacts-DyhajWso.js} +6 -6
- package/server/{review-context-BBsNrDri.js → review-context-B-dlsPnx.js} +9 -9
- package/server/{review-convoy-liveness-l06_LYCt.js → review-convoy-liveness-D7M-s_nS.js} +2 -2
- package/server/{review-status-CacDM78F.js → review-status-B6wYcOtP.js} +1 -1
- package/server/{review-status-CwhA9wmd.js → review-status-CKLk5aZ-.js} +306 -59
- package/server/{review-status-emit-BPJwYcRy.js → review-status-emit-CJ7UmEVU.js} +3 -3
- package/server/{review-status-enrichment-DvyZAbGR.js → review-status-enrichment-DJRgGX7-.js} +3 -3
- package/server/review-status-limits-4EJDCGHO.js +7 -0
- package/server/{review-status-source-DWnFE0b6.js → review-status-source-7nU3Z2wL.js} +1 -1
- package/server/{review-status-source-B70ekARK.js → review-status-source-BsDYGfyv.js} +1 -1
- package/server/{review-status-sync-B0IS6Beh.js → review-status-sync-BLssMTEW.js} +1 -1
- package/server/{review-status-sync-h2CJX6ju.js → review-status-sync-BxBeHRde.js} +35 -11
- package/server/{review-verdict-feedback-yrrmgps_.js → review-verdict-feedback-5jWuzgpc.js} +22 -10
- package/server/{review-verdict-feedback-qRohbFG2.js → review-verdict-feedback-HRY9P4bN.js} +1 -1
- package/server/{rollup-CUoav0Op.js → rollup-BGIrCEkU.js} +79 -44
- package/server/rollup-CZB4UL9q.js +3 -0
- package/server/{scanner-ChURu_b-.js → scanner-DydjXPrz.js} +16 -9
- package/server/search-DdtIjAiu.js +395 -0
- package/server/{sequence-io-D9ITDxzq.js → sequence-io-Fw-cLyDs.js} +4 -4
- package/server/{sequencer-agent-m7gmaakW.js → sequencer-agent-BcpGMt5x.js} +15 -10
- package/server/server.js +1258 -438
- package/server/{service-BzFG0Us_.js → service-BFFkGsG4.js} +58 -58
- package/server/{session-fork-KBq4HIHF.js → session-fork-D0V-3e5P.js} +2 -2
- package/server/{session-history-C_EMhIIF.js → session-history-Bta5l9jY.js} +5 -5
- package/server/{settings-DejgzzLs.js → settings-Ce8B1daF.js} +2 -2
- package/server/{settings-BLbcDqUp.js → settings-E3FnEIUx.js} +3 -3
- package/server/settings-eOOJpxi_.js +2 -0
- package/server/{shadow-engineering-D8R9I8Yl.js → shadow-engineering-Mt9nJO4i.js} +3 -3
- package/server/{shadow-state-C0Af4clN.js → shadow-state-Bzj_AZCV.js} +1 -1
- package/server/{shadow-state-fzIqIMDD.js → shadow-state-DrkhoVSx.js} +2 -2
- package/server/{shadow-utils-Ugca_9ND.js → shadow-utils-H1GfqP06.js} +2 -2
- package/server/{ship-log-VAv-lHrF.js → ship-log-CFUIo4PR.js} +1 -1
- package/server/{smart-compaction-BcYY_Suf.js → smart-compaction-DSTq-Wua.js} +1 -1
- package/server/{smart-compaction-B2Xu5XEb.js → smart-compaction-Hzp3KCJX.js} +7 -7
- package/server/{spawn-planning-session-Dsv-350T.js → spawn-planning-session-C0uSA2SL.js} +2 -2
- package/server/{spawn-planning-session-DhCoBPct.js → spawn-planning-session-DN4son31.js} +23 -21
- package/server/{specialist-completion-z6v3ZqJE.js → specialist-completion-Cf6tpIh1.js} +1 -1
- package/server/{specialist-context-CrA5azkJ.js → specialist-context-DEUEkjIQ.js} +5 -5
- package/server/{specialist-handoff-logger-CmpZYJMB.js → specialist-handoff-logger-D_LmQDj3.js} +2 -2
- package/server/{specialist-logs-BorrIu0x.js → specialist-logs-7Ynue0R7.js} +3 -3
- package/server/{specialists-ZdrifiKx.js → specialists-CQwBEGlD.js} +1 -1
- package/server/{specialists-2yLmqph9.js → specialists-DAjPgYs_.js} +504 -238
- package/server/{specialists-Dfx9_Wzb.js → specialists-Hr6iW9fU.js} +18 -18
- package/server/{specialists-CH6ah6D-.js → specialists-MOoeB4A8.js} +1 -1
- package/server/specs-Dl88cbKY.js +3 -0
- package/server/{src-B948bGVR.js → src-BYdwL_n-.js} +668 -64
- package/server/{src-Dm_NV7f6.js → src-DQnkPN2i.js} +3 -3
- package/server/{src-B2e5rGu2.js → src-DhfDV0o4.js} +6 -6
- package/server/{stack-health-Bf2WdG4E.js → stack-health-D_iKwNRg.js} +107 -16
- package/server/stack-health-deVSdDwn.js +3 -0
- package/server/{stale-task-claims-D1Ll8fI5.js → stale-task-claims-BYJGqhLI.js} +5 -5
- package/server/{staleness-CuED1Psm.js → staleness-CopBDKnA.js} +1 -1
- package/server/{staleness-45qZ_a60.js → staleness-D8WeMUHd.js} +1 -1
- package/server/{state-home-B4EWfIxF.js → state-home-DjN8qduI.js} +24 -3
- package/server/{state-mapping-BEONzr8P.js → state-mapping-DlM7OYRW.js} +1 -1
- package/server/{state-migrate-Cd8BH33U.js → state-migrate-a2p1gtD7.js} +4 -4
- package/server/state-mirror-Cv_XgvT5.js +121 -0
- package/server/{stuck-remediation-ChcooZuk.js → stuck-remediation-CXJX_kki.js} +1 -1
- package/server/{stuck-remediation-DmY5UJLg.js → stuck-remediation-CbCRSz1v.js} +31 -732
- package/server/{substrate-bug-weights-service-BvTWrFUz.js → substrate-bug-weights-service-DxpopNd9.js} +3 -3
- package/server/{summary-fork--Jr8duYh.js → summary-fork-B61fjRJn.js} +2 -2
- package/server/{summary-fork-Ct514_Jl.js → summary-fork-B9pszUJN.js} +91 -10
- package/server/supervisor/{injection-budget-B3UyEONL.js → injection-budget-Ar7hgyJq.js} +1 -1
- package/server/supervisor/pty-supervisor.js +12 -3
- package/server/supervisor/{pty-token-CWRffcCa.js → pty-token-CXCFU0Z8.js} +1 -1
- package/server/{supervisor-B7BHGcNA.js → supervisor-BvnxbuuF.js} +6 -4
- package/server/supervisor-C69kpqvd.js +2 -0
- package/server/{swarm-readiness-MNE5O8hn.js → swarm-readiness-vTw1kqGa.js} +3 -3
- package/server/{system-prerequisites-Cin9ZgDx.js → system-prerequisites-LLzTEqsK.js} +3 -3
- package/server/{teardown-workspace-CvBpvc85.js → teardown-workspace-CqKKVJr1.js} +15 -15
- package/server/{test-agent-queue-DmSIqays.js → test-agent-queue-CWMq7oyG.js} +8 -7
- package/server/{test-verdict-BieVDAV1.js → test-verdict-NdtgRBuA.js} +1 -1
- package/server/{test-verdict-Cy2jJGTe.js → test-verdict-diIWE6hz.js} +15 -3
- package/server/{tldr-daemon-Ca0eovh3.js → tldr-daemon-B1Jhrtc8.js} +1 -1
- package/server/{tldr-daemon-IOssGwg7.js → tldr-daemon-Bpls1CJB.js} +2 -2
- package/server/{tmux-CfDHob9M.js → tmux-CImZaX4q.js} +10 -16
- package/server/tmux-Cjpx8L8u.js +4 -0
- package/server/{token-B10VFNOD.js → token-Bgpjo3tE.js} +2 -2
- package/server/token-util-BsjFll-k.js +3 -0
- package/server/{token-util-CZ8WPtdk.js → token-util-BymbpkJp.js} +1 -1
- package/server/{tracker-config-CHbrjg6m.js → tracker-config-4DaKVTfc.js} +2 -2
- package/server/{tracker-utils-DZZq_C0R.js → tracker-utils-BDeAXC-q.js} +2 -2
- package/server/{traefik-connect-GHomyBaD.js → traefik-connect-CC5FyxYj.js} +1 -1
- package/server/{tunnel-Dz7y434T.js → tunnel-CDWkeceJ.js} +1 -1
- package/server/{tunnel-Bdyb-sNq.js → tunnel-CPf5M-Pc.js} +3 -3
- package/server/{typed-errors-Bn_2WRU7.js → typed-errors-9K7Dq_Vn.js} +1 -1
- package/server/{typed-errors-BR_RmPS_.js → typed-errors-DrS5fb5z.js} +1 -1
- package/server/{types-D2ETIB8T.js → types-DzlUKiuf.js} +4 -3
- package/server/{types-Dh6RI5Vj.js → types-kI9ik8XO.js} +1 -1
- package/server/{uat-promote-verification-DyvQXvIn.js → uat-promote-verification-c_pxoxEc.js} +5 -5
- package/server/{uat-train-Dv0Bxer7.js → uat-train-CWGxBdJO.js} +0 -0
- package/server/{uat-train-diX_7shd.js → uat-train-CfCYd2ve.js} +1 -1
- package/server/{validate-606KcYZC.js → validate-f3ItVCfm.js} +3 -3
- package/server/{validation-Cf7aaV5A.js → validation-5G_wQtea.js} +1 -1
- package/server/{validation-CnrDul1x.js → validation-7tSiCM82.js} +4 -4
- package/server/{verification-artifact-GOaj8u2s.js → verification-artifact-9h9dH8uX.js} +1 -1
- package/server/{verification-artifact-D4b-bio9.js → verification-artifact-C_4WJnf6.js} +1 -1
- package/server/{verification-runner-DiPaUP-C.js → verification-runner-BV5F6wrA.js} +1 -1
- package/server/{verification-runner-B5MVxDvU.js → verification-runner-D58KmBhK.js} +18 -38
- package/server/{vtt-parser-CMU5EZ5R.js → vtt-parser-2iT9OHa9.js} +1 -1
- package/server/{work-agent-prompt-Csb3fbVR.js → work-agent-prompt-D03s4DD1.js} +9 -9
- package/server/{workflows-D87ajwV6.js → workflows-BMBwLYPV.js} +281 -98
- package/server/workflows-BOmWGpIh.js +2 -0
- package/server/{workspace-iD8oULqu.js → workspace-BgflNCH0.js} +3 -3
- package/server/{workspace-AIOM7n00.js → workspace-Cn9ywfSW.js} +1 -1
- package/server/{workspace-anchor-drift-19cJ1bH5.js → workspace-anchor-drift-C8Fy3shi.js} +1 -1
- package/server/{workspace-anchor-drift-C3mK5wNI.js → workspace-anchor-drift-CMiNncwq.js} +5 -8
- package/server/{workspace-config-CJ7RqQiP.js → workspace-config-aUc2nIz6.js} +1 -1
- package/server/{workspace-manager-CXfrw4rR.js → workspace-manager-Bem7ZBs9.js} +521 -292
- package/server/workspace-manager-C0CpNh3t.js +3 -0
- package/server/{workspace-metadata-BuMRco5P.js → workspace-metadata-C5iSlPRo.js} +1 -1
- package/server/{workspace-metadata-eHSj_NsP.js → workspace-metadata-UKmTYmDQ.js} +2 -2
- package/server/{workspaces-DbtMX2TM.js → workspaces-DqxgwDZ8.js} +143 -113
- package/sync-sources/hooks/notification-hook +12 -1
- package/sync-sources/hooks/pan-hook-lib.sh +226 -0
- package/sync-sources/hooks/session-start-hook +31 -4
- package/sync-sources/hooks/work-agent-stop-hook +23 -1
- package/sync-sources/skills/pan-memory/SKILL.md +19 -3
- package/sync-sources/skills/pan-projects/SKILL.md +9 -0
- package/sync-sources/skills/pan-restart/SKILL.md +26 -7
- package/sync-sources/skills/pan-workspace/SKILL.md +77 -0
- package/server/activity-logger-CMthG6Vd.js +0 -3
- package/server/agent-state-DyZJia9f.js +0 -3
- package/server/agents-Dnn4XgdB.js +0 -3
- package/server/archive-planning-BHCd_eL5.js +0 -2
- package/server/cli-D6mRfUE6.js +0 -3
- package/server/deacon-swarm-BkKR7SXu.js +0 -2
- package/server/delivery-C2M73sBg.js +0 -3
- package/server/dist-qcf9gAP0.js +0 -3
- package/server/event-store-5UKzh9Jf.js +0 -3
- package/server/forge-D647IMNa.js +0 -3
- package/server/fts-db-wROfFfje.js +0 -146
- package/server/hume-DtWN8oV5.js +0 -3
- package/server/inspect-agent-CPqXI81t.js +0 -2
- package/server/merge-ops-7QqziXAh.js +0 -2
- package/server/merge-rebase-B4pgzvQJ.js +0 -2
- package/server/node_modules/brace-expansion/.tap/coverage/8b906b8c-e21f-40b5-8c0d-214d8c2682c5.json +0 -757
- package/server/node_modules/brace-expansion/.tap/processinfo/8b906b8c-e21f-40b5-8c0d-214d8c2682c5.json +0 -719
- package/server/node_modules/brace-expansion/ADVISORY-CVE-2026-14257.md +0 -107
- package/server/node_modules/brace-expansion/dist/commonjs/index.d.ts +0 -8
- package/server/node_modules/brace-expansion/dist/commonjs/index.d.ts.map +0 -1
- package/server/node_modules/brace-expansion/dist/commonjs/index.js +0 -263
- package/server/node_modules/brace-expansion/dist/commonjs/index.js.map +0 -1
- package/server/node_modules/brace-expansion/dist/commonjs/package.json +0 -3
- package/server/node_modules/brace-expansion/dist/esm/index.d.ts +0 -8
- package/server/node_modules/brace-expansion/dist/esm/index.d.ts.map +0 -1
- package/server/node_modules/brace-expansion/dist/esm/index.js +0 -259
- package/server/node_modules/brace-expansion/dist/esm/index.js.map +0 -1
- package/server/node_modules/brace-expansion/dist/esm/package.json +0 -3
- package/server/project-repos-BgW4lcIa.js +0 -3
- package/server/projects-_n3Zui6K.js +0 -3
- package/server/providers-BI1mOBQ4.js +0 -3
- package/server/public/assets/index-Ddkcz3WT.css +0 -1
- package/server/public/assets/mermaid-GHXKKRXX-BzPfaQJ1.js +0 -1
- package/server/rally-x6ztTQo4.js +0 -3
- package/server/record-BTwWhtBb.js +0 -3
- package/server/record-update-DaOKS7Wb.js +0 -277
- package/server/recovery-trip-D-wM9EfB.js +0 -44
- package/server/resume-DXIIfJNk.js +0 -3
- package/server/rollup-DxCjJaAM.js +0 -3
- package/server/settings-9jSGHBPY.js +0 -2
- package/server/specs-DKV3jIEs.js +0 -3
- package/server/stack-health-CoWAhA99.js +0 -3
- package/server/supervisor-CyR_mW5B.js +0 -2
- package/server/tmux-Ctk6RV5l.js +0 -3
- package/server/token-util-CrfQ2FKf.js +0 -3
- package/server/workflows-DN6NyVGd.js +0 -2
- package/server/workspace-manager-B38rFWA1.js +0 -3
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { n as __esmMin, r as __exportAll } from "./rolldown-runtime-DNCzzKnI.js";
|
|
2
|
-
import {
|
|
3
|
-
import { n as openDatabase, t as init_driver } from "./driver-
|
|
4
|
-
import { g as loadReviewStatusesForIssues, p as init_review_status } from "./review-status-
|
|
5
|
-
import { a as init_tracker_config, n as getLinearApiKey, o as validateRallyConfig, r as getRallyConfig, t as getGitHubConfig } from "./tracker-config-
|
|
6
|
-
import { n as init_dist_src, t as Octokit } from "./dist-src-
|
|
7
|
-
import { n as mapGitHubStateToCanonical, t as init_state_mapping } from "./state-mapping-
|
|
8
|
-
import {
|
|
2
|
+
import { Sn as resolveProjectFromIssueSync, cn as init_projects, f as loadConfigSync, t as init_config_yaml } from "./config-yaml-BSCqwmX0.js";
|
|
3
|
+
import { n as openDatabase, t as init_driver } from "./driver-CmsY2RLl.js";
|
|
4
|
+
import { g as loadReviewStatusesForIssues, p as init_review_status } from "./review-status-CKLk5aZ-.js";
|
|
5
|
+
import { a as init_tracker_config, n as getLinearApiKey, o as validateRallyConfig, r as getRallyConfig, t as getGitHubConfig } from "./tracker-config-4DaKVTfc.js";
|
|
6
|
+
import { n as init_dist_src, t as Octokit } from "./dist-src-C-Vk2jNk.js";
|
|
7
|
+
import { n as mapGitHubStateToCanonical, t as init_state_mapping } from "./state-mapping-DlM7OYRW.js";
|
|
8
|
+
import { m as readWorkspacePlan, r as findPlan, s as init_io } from "./io-mxOWMZ7I.js";
|
|
9
9
|
import { Effect } from "effect";
|
|
10
10
|
import { existsSync } from "fs";
|
|
11
11
|
import { join } from "path";
|
|
@@ -865,7 +865,7 @@ var init_issue_data_service = __esmMin((() => {
|
|
|
865
865
|
async ensureShadowStateLoaded() {
|
|
866
866
|
if (this.shadowStateModule) return;
|
|
867
867
|
try {
|
|
868
|
-
this.shadowStateModule = await import("./shadow-state-
|
|
868
|
+
this.shadowStateModule = await import("./shadow-state-Bzj_AZCV.js");
|
|
869
869
|
await this.refreshShadowStatesCache();
|
|
870
870
|
} catch {}
|
|
871
871
|
}
|
|
@@ -1408,8 +1408,8 @@ var init_issue_data_service = __esmMin((() => {
|
|
|
1408
1408
|
}
|
|
1409
1409
|
if (!this.cache.isStale("rally", "issues") && this.trackers.rally.lastFetchedIssues.length > 0) return;
|
|
1410
1410
|
try {
|
|
1411
|
-
const { RallyTracker } = await import("./rally-
|
|
1412
|
-
const { findProjectsByRallyProject } = await import("./projects-
|
|
1411
|
+
const { RallyTracker } = await import("./rally-O_st_X7n.js");
|
|
1412
|
+
const { findProjectsByRallyProject } = await import("./projects-WqMWCdpa.js");
|
|
1413
1413
|
const rallyProjects = findProjectsByRallyProject();
|
|
1414
1414
|
let allFormatted = [];
|
|
1415
1415
|
if (rallyProjects.length > 0) {
|
|
@@ -1504,4 +1504,4 @@ var init_issue_service_singleton = __esmMin((() => {
|
|
|
1504
1504
|
//#endregion
|
|
1505
1505
|
export { CacheService as a, startSharedIssueService as i, init_issue_service_singleton as n, init_cache_service as o, issue_service_singleton_exports as r, parseIntegerHeader as s, getSharedIssueService as t };
|
|
1506
1506
|
|
|
1507
|
-
//# sourceMappingURL=issue-service-singleton-
|
|
1507
|
+
//# sourceMappingURL=issue-service-singleton-BPNEXczv.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { i as startSharedIssueService, n as init_issue_service_singleton, t as getSharedIssueService } from "./issue-service-singleton-
|
|
1
|
+
import { i as startSharedIssueService, n as init_issue_service_singleton, t as getSharedIssueService } from "./issue-service-singleton-BPNEXczv.js";
|
|
2
2
|
init_issue_service_singleton();
|
|
3
3
|
export { getSharedIssueService, startSharedIssueService };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
|
|
2
|
-
import { _ as integer, a as EventBus, c as Records, f as init_infra, h as text, m as sqliteTable, p as init_sqlite_core, r as Db, v as init_drizzle_orm, x as eq } from "./infra-
|
|
2
|
+
import { _ as integer, a as EventBus, c as Records, f as init_infra, h as text, m as sqliteTable, p as init_sqlite_core, r as Db, v as init_drizzle_orm, x as eq } from "./infra-CTrmVqc_.js";
|
|
3
3
|
import { Context, Effect, Layer, Schema } from "effect";
|
|
4
4
|
import { HttpApiEndpoint, HttpApiGroup } from "effect/unstable/httpapi";
|
|
5
5
|
//#region ../../lib/overdeck/issues.ts
|
|
@@ -350,4 +350,4 @@ var init_issues = __esmMin((() => {
|
|
|
350
350
|
//#endregion
|
|
351
351
|
export { init_issues as n, IssueId as t };
|
|
352
352
|
|
|
353
|
-
//# sourceMappingURL=issues-
|
|
353
|
+
//# sourceMappingURL=issues-AX-YBeAQ.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
|
|
2
|
-
import {
|
|
3
|
-
import { o as getPricingSync, s as init_cost, t as calculateCostSync } from "./cost-
|
|
2
|
+
import { Vr as init_errors, hi as init_paths, si as encodeClaudeProjectDir } from "./config-yaml-BSCqwmX0.js";
|
|
3
|
+
import { o as getPricingSync, s as init_cost, t as calculateCostSync } from "./cost-CpFDrJUS.js";
|
|
4
4
|
import "effect";
|
|
5
5
|
import { existsSync, readFileSync, readdirSync, statSync } from "fs";
|
|
6
6
|
import { basename, join } from "path";
|
|
@@ -93,6 +93,10 @@ function normalizeModelName(model) {
|
|
|
93
93
|
provider: "custom",
|
|
94
94
|
model
|
|
95
95
|
};
|
|
96
|
+
if (model.startsWith("ql-")) return {
|
|
97
|
+
provider: "custom",
|
|
98
|
+
model
|
|
99
|
+
};
|
|
96
100
|
return {
|
|
97
101
|
provider: "anthropic",
|
|
98
102
|
model: "claude-sonnet-4"
|
|
@@ -243,4 +247,4 @@ var init_jsonl_parser = __esmMin((() => {
|
|
|
243
247
|
//#endregion
|
|
244
248
|
export { init_jsonl_parser as a, getSessionFilesSync as i, getAllSessionFilesSync as n, normalizeModelName as o, getProjectDirsSync as r, parseClaudeSessionSync as s, getActiveSessionModelSync as t };
|
|
245
249
|
|
|
246
|
-
//# sourceMappingURL=jsonl-parser-
|
|
250
|
+
//# sourceMappingURL=jsonl-parser-CgYWQ20q.js.map
|
|
@@ -0,0 +1,579 @@
|
|
|
1
|
+
import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
|
|
2
|
+
import { hi as init_paths, mi as getOverdeckHome } from "./config-yaml-BSCqwmX0.js";
|
|
3
|
+
import { n as init_fs_lock, r as isPidDead } from "./fs-lock-D_GeJtXl.js";
|
|
4
|
+
import { c as getRuntimeBehavior } from "./src-BYdwL_n-.js";
|
|
5
|
+
import { Gr as writePtyToken, Kr as init_pty_supervisor_locate, Pr as saveAgentStateSync, Wr as init_pty_token, Zt as init_delivery, br as getAgentStateSync, n as init_queries, qr as resolvePtySupervisorScriptPath, qt as deliverAgentMessage, r as listAgentStates, xr as init_agent_state } from "./queries-DVpl1vsU.js";
|
|
6
|
+
import { t as init_behavior } from "./behavior-DIMQMRzs.js";
|
|
7
|
+
import { C as generateLauncherScriptSync, w as init_launcher_generator } from "./auto-spawn-consent-lXqRJ1Dr.js";
|
|
8
|
+
import { _ as tmuxKillSession, g as tmuxCreateSession, h as init_tmux_cli, v as tmuxSessionExists } from "./codex-CjkD1PJu.js";
|
|
9
|
+
import { i as prepareHarnessLaunch, r as init_harness_binary } from "./harness-binary-BHxWf_sX.js";
|
|
10
|
+
import { n as parseKimiSessionSync, t as init_kimi_parser } from "./kimi-parser-B-JBg3Pv.js";
|
|
11
|
+
import { basename, dirname, join } from "node:path";
|
|
12
|
+
import { homedir } from "node:os";
|
|
13
|
+
import { existsSync, mkdirSync, readFileSync, readdirSync, statSync, writeFileSync } from "node:fs";
|
|
14
|
+
import { mkdir, readFile, readdir, rename, rm, stat as stat$1, writeFile } from "node:fs/promises";
|
|
15
|
+
import { exec } from "node:child_process";
|
|
16
|
+
import { promisify } from "node:util";
|
|
17
|
+
import { createHash } from "node:crypto";
|
|
18
|
+
//#region ../../lib/runtimes/kimi-code.ts
|
|
19
|
+
/**
|
|
20
|
+
* Kimi Code CLI runtime adapter (PAN-1837).
|
|
21
|
+
*
|
|
22
|
+
* Native TUI — not ACP. Kimi writes its own session tree at
|
|
23
|
+
* `<kimiHome>/sessions/<workDirKey>/<sessionId>/agents/main/wire.jsonl`,
|
|
24
|
+
* where `workDirKey = wd_<basename(workDir)>_<sha256(workDir).hex[:12]>`
|
|
25
|
+
* (verified empirically against installed kimi 0.29.2, wi-fixture/D2 — Kimi
|
|
26
|
+
* does not expose this derivation directly). Kimi generates its own session
|
|
27
|
+
* id; it cannot be preset via a launch flag (D2/erratum E1: no --session, no
|
|
28
|
+
* --work-dir). The id is captured post-launch as the session directory that
|
|
29
|
+
* newly appears under the workspace's bucket, then persisted at
|
|
30
|
+
* `~/.overdeck/agents/<id>/kimi-session-id` (mirrors codex's thread-id file)
|
|
31
|
+
* so later introspection calls avoid re-walking the bucket.
|
|
32
|
+
*
|
|
33
|
+
* Delivery: PTY supervisor is primary (KIMI_CODE_BEHAVIOR.supportsPtySupervisor
|
|
34
|
+
* is true, same as claude-code). sendMessage delegates to the existing generic
|
|
35
|
+
* deliverAgentMessage() cascade (supervisor -> channels -> async tmux paste)
|
|
36
|
+
* rather than re-implementing that tiering here — deliverAgentMessage already
|
|
37
|
+
* dispatches on socket existence, not a hardcoded harness list, so kimi-code
|
|
38
|
+
* flows through it for free once its PTY supervisor socket exists.
|
|
39
|
+
*
|
|
40
|
+
* getTokenUsage/getSessionCost delegate to wi8b's parseKimiSessionSync,
|
|
41
|
+
* which sums every usage.record in the wire.jsonl — Kimi's own server-side
|
|
42
|
+
* context cache accounting.
|
|
43
|
+
*/
|
|
44
|
+
/**
|
|
45
|
+
* Compute Kimi's on-disk workDirKey bucket name for a working directory.
|
|
46
|
+
* Verified against `wd_kimi-fixture-scratch_ef33f89ad7cf` (workDir
|
|
47
|
+
* `/tmp/kimi-fixture-scratch`) and several pre-existing real sessions on the
|
|
48
|
+
* machine that produced the wi-fixture capture (e.g.
|
|
49
|
+
* `wd_overdeck_b289e7acb782`, `wd_feature-pan-2858_1dc66dc5021d`).
|
|
50
|
+
*/
|
|
51
|
+
function kimiWorkDirKey(workDir) {
|
|
52
|
+
const hash = createHash("sha256").update(workDir).digest("hex").slice(0, 12);
|
|
53
|
+
return `wd_${basename(workDir)}_${hash}`;
|
|
54
|
+
}
|
|
55
|
+
/** Absolute path to the session bucket Kimi writes for a working directory. */
|
|
56
|
+
function kimiSessionsRoot(kimiHome, workDir) {
|
|
57
|
+
return join(kimiHome, "sessions", kimiWorkDirKey(workDir));
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Locate wire.jsonl for a specific captured session id under the workspace's
|
|
61
|
+
* bucket. Falls back to the newest session directory when the captured id's
|
|
62
|
+
* wire.jsonl is missing (e.g. never captured, or the id file is stale).
|
|
63
|
+
*/
|
|
64
|
+
function findKimiWirePath(kimiHome, workspace, sessionId) {
|
|
65
|
+
if (sessionId) {
|
|
66
|
+
const candidate = join(kimiSessionsRoot(kimiHome, workspace), sessionId, "agents", "main", "wire.jsonl");
|
|
67
|
+
if (existsSync(candidate)) return candidate;
|
|
68
|
+
}
|
|
69
|
+
return findLatestKimiSession(kimiHome, workspace);
|
|
70
|
+
}
|
|
71
|
+
/** Fallback: the newest session directory by wire.jsonl mtime under the workspace's bucket. */
|
|
72
|
+
function findLatestKimiSession(kimiHome, workspace) {
|
|
73
|
+
const bucketDir = kimiSessionsRoot(kimiHome, workspace);
|
|
74
|
+
let entries;
|
|
75
|
+
try {
|
|
76
|
+
entries = readdirSync(bucketDir);
|
|
77
|
+
} catch {
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
80
|
+
let newest = null;
|
|
81
|
+
for (const entry of entries) {
|
|
82
|
+
const wirePath = join(bucketDir, entry, "agents", "main", "wire.jsonl");
|
|
83
|
+
let mtimeMs;
|
|
84
|
+
try {
|
|
85
|
+
mtimeMs = statSync(wirePath).mtimeMs;
|
|
86
|
+
} catch {
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
if (!newest || mtimeMs > newest.mtimeMs) newest = {
|
|
90
|
+
path: wirePath,
|
|
91
|
+
mtimeMs
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
return newest?.path ?? null;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Async twin of {@link findKimiWirePath} (PAN-1837 review fix, P2). The
|
|
98
|
+
* dashboard's transcript resolver runs on the event loop and Command Deck
|
|
99
|
+
* polling re-resolves the same session repeatedly, so the sync
|
|
100
|
+
* readdirSync/statSync walk here would block the loop on every poll as a
|
|
101
|
+
* session's history grows. Runtime-side sync callers (kill/spawn lifecycle)
|
|
102
|
+
* keep using the sync versions above — this pair exists only for dashboard
|
|
103
|
+
* routes, per the runtime's own documented sync contract.
|
|
104
|
+
*/
|
|
105
|
+
async function findKimiWirePathAsync(kimiHome, workspace, sessionId) {
|
|
106
|
+
if (sessionId) {
|
|
107
|
+
const candidate = join(kimiSessionsRoot(kimiHome, workspace), sessionId, "agents", "main", "wire.jsonl");
|
|
108
|
+
try {
|
|
109
|
+
await stat$1(candidate);
|
|
110
|
+
return candidate;
|
|
111
|
+
} catch {}
|
|
112
|
+
}
|
|
113
|
+
return findLatestKimiSessionAsync(kimiHome, workspace);
|
|
114
|
+
}
|
|
115
|
+
/** Async twin of {@link findLatestKimiSession} — see {@link findKimiWirePathAsync}. */
|
|
116
|
+
async function findLatestKimiSessionAsync(kimiHome, workspace) {
|
|
117
|
+
const bucketDir = kimiSessionsRoot(kimiHome, workspace);
|
|
118
|
+
let entries;
|
|
119
|
+
try {
|
|
120
|
+
entries = await readdir(bucketDir);
|
|
121
|
+
} catch {
|
|
122
|
+
return null;
|
|
123
|
+
}
|
|
124
|
+
let newest = null;
|
|
125
|
+
for (const entry of entries) {
|
|
126
|
+
const wirePath = join(bucketDir, entry, "agents", "main", "wire.jsonl");
|
|
127
|
+
let mtimeMs;
|
|
128
|
+
try {
|
|
129
|
+
mtimeMs = (await stat$1(wirePath)).mtimeMs;
|
|
130
|
+
} catch {
|
|
131
|
+
continue;
|
|
132
|
+
}
|
|
133
|
+
if (!newest || mtimeMs > newest.mtimeMs) newest = {
|
|
134
|
+
path: wirePath,
|
|
135
|
+
mtimeMs
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
return newest?.path ?? null;
|
|
139
|
+
}
|
|
140
|
+
function kimiHomeDefault() {
|
|
141
|
+
return join(homedir(), ".kimi-code");
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Poll a workspace's Kimi session bucket for a directory that did not exist
|
|
145
|
+
* in `existingBefore`, returning the newest such directory's name (the
|
|
146
|
+
* session id) once one appears. Standalone so both KimiCodeRuntimeSync.spawnAgent
|
|
147
|
+
* and the production `pan start` spawn path (spawn-prep.ts, which builds its
|
|
148
|
+
* own launcher/tmux session rather than delegating to this class) can capture
|
|
149
|
+
* the session id the same way — mirroring codex's standalone
|
|
150
|
+
* waitForCodexRollout/extractThreadIdFromRollout pair.
|
|
151
|
+
*/
|
|
152
|
+
async function waitForNewKimiSession(kimiHome, workspace, existingBefore, timeoutMs = SPAWN_READY_TIMEOUT_MS) {
|
|
153
|
+
const bucketDir = kimiSessionsRoot(kimiHome, workspace);
|
|
154
|
+
const deadline = Date.now() + timeoutMs;
|
|
155
|
+
while (Date.now() < deadline) {
|
|
156
|
+
let entries = [];
|
|
157
|
+
try {
|
|
158
|
+
entries = readdirSync(bucketDir);
|
|
159
|
+
} catch {
|
|
160
|
+
entries = [];
|
|
161
|
+
}
|
|
162
|
+
const fresh = entries.filter((entry) => !existingBefore.has(entry));
|
|
163
|
+
if (fresh.length > 0) {
|
|
164
|
+
let newest = null;
|
|
165
|
+
for (const name of fresh) {
|
|
166
|
+
let mtimeMs;
|
|
167
|
+
try {
|
|
168
|
+
mtimeMs = statSync(join(bucketDir, name)).mtimeMs;
|
|
169
|
+
} catch {
|
|
170
|
+
continue;
|
|
171
|
+
}
|
|
172
|
+
if (!newest || mtimeMs > newest.mtimeMs) newest = {
|
|
173
|
+
name,
|
|
174
|
+
mtimeMs
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
if (newest) return newest.name;
|
|
178
|
+
}
|
|
179
|
+
await delay(POLL_INTERVAL_MS);
|
|
180
|
+
}
|
|
181
|
+
return null;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Async twin of {@link waitForNewKimiSession} (PAN-1837 review fix, P2). The
|
|
185
|
+
* conversation-spawn capture task runs on the dashboard event loop, so its
|
|
186
|
+
* 250ms poll loop must not block on readdirSync/statSync — runtime-side sync
|
|
187
|
+
* callers (kill/spawn lifecycle) keep the sync version above.
|
|
188
|
+
*/
|
|
189
|
+
async function waitForNewKimiSessionAsync(kimiHome, workspace, existingBefore, timeoutMs = SPAWN_READY_TIMEOUT_MS) {
|
|
190
|
+
const bucketDir = kimiSessionsRoot(kimiHome, workspace);
|
|
191
|
+
const deadline = Date.now() + timeoutMs;
|
|
192
|
+
while (Date.now() < deadline) {
|
|
193
|
+
let entries = [];
|
|
194
|
+
try {
|
|
195
|
+
entries = await readdir(bucketDir);
|
|
196
|
+
} catch {
|
|
197
|
+
entries = [];
|
|
198
|
+
}
|
|
199
|
+
const fresh = entries.filter((entry) => !existingBefore.has(entry));
|
|
200
|
+
if (fresh.length > 0) {
|
|
201
|
+
let newest = null;
|
|
202
|
+
for (const name of fresh) {
|
|
203
|
+
let mtimeMs;
|
|
204
|
+
try {
|
|
205
|
+
mtimeMs = (await stat$1(join(bucketDir, name))).mtimeMs;
|
|
206
|
+
} catch {
|
|
207
|
+
continue;
|
|
208
|
+
}
|
|
209
|
+
if (!newest || mtimeMs > newest.mtimeMs) newest = {
|
|
210
|
+
name,
|
|
211
|
+
mtimeMs
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
if (newest) return newest.name;
|
|
215
|
+
}
|
|
216
|
+
await delay(POLL_INTERVAL_MS);
|
|
217
|
+
}
|
|
218
|
+
return null;
|
|
219
|
+
}
|
|
220
|
+
/** Persist the captured session id to `<overdeckHome>/agents/<id>/kimi-session-id` (mirrors codex's thread-id file). */
|
|
221
|
+
function writeKimiSessionId(agentId, sessionId, overdeckHome = getOverdeckHome()) {
|
|
222
|
+
writeFileSync(join(overdeckHome, "agents", agentId, "kimi-session-id"), sessionId, "utf-8");
|
|
223
|
+
}
|
|
224
|
+
/** Deterministic, filesystem-safe lock path for a Kimi session bucket. */
|
|
225
|
+
function kimiCaptureLockPath(bucketKey) {
|
|
226
|
+
const hash = createHash("sha256").update(bucketKey).digest("hex").slice(0, 24);
|
|
227
|
+
return join(getOverdeckHome(), "locks", "kimi-capture", `${hash}.lock`);
|
|
228
|
+
}
|
|
229
|
+
async function readKimiCaptureLockOwner(lockPath) {
|
|
230
|
+
try {
|
|
231
|
+
const parsed = JSON.parse(await readFile(join(lockPath, "owner.json"), "utf8"));
|
|
232
|
+
if (typeof parsed.pid !== "number" || !Number.isInteger(parsed.pid) || parsed.pid <= 0) return {};
|
|
233
|
+
return parsed;
|
|
234
|
+
} catch {
|
|
235
|
+
return {};
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* True once the lock directory itself (not owner.json) is older than the
|
|
240
|
+
* stale-age bound. mkdir sets this directory's mtime at creation, and it is
|
|
241
|
+
* never touched again once owner.json (a fresh directory entry) — if ever
|
|
242
|
+
* written — settles, so this is trustworthy even when owner.json itself
|
|
243
|
+
* never made it to disk.
|
|
244
|
+
*/
|
|
245
|
+
async function isKimiCaptureLockDirStale(lockPath) {
|
|
246
|
+
try {
|
|
247
|
+
const dirStat = await stat$1(lockPath);
|
|
248
|
+
return Date.now() - dirStat.mtimeMs > KIMI_CAPTURE_LOCK_STALE_AGE_MS;
|
|
249
|
+
} catch {
|
|
250
|
+
return true;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
async function acquireKimiCaptureLock(lockPath) {
|
|
254
|
+
await mkdir(dirname(lockPath), {
|
|
255
|
+
recursive: true,
|
|
256
|
+
mode: 448
|
|
257
|
+
});
|
|
258
|
+
const deadline = Date.now() + KIMI_CAPTURE_LOCK_MAX_WAIT_MS;
|
|
259
|
+
for (;;) {
|
|
260
|
+
try {
|
|
261
|
+
await mkdir(lockPath, { mode: 448 });
|
|
262
|
+
const owner = {
|
|
263
|
+
pid: process.pid,
|
|
264
|
+
acquiredAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
265
|
+
};
|
|
266
|
+
const tmpPath = join(lockPath, `owner.${process.pid}.${Date.now()}.tmp`);
|
|
267
|
+
try {
|
|
268
|
+
await writeFile(tmpPath, JSON.stringify(owner, null, 2), "utf8");
|
|
269
|
+
await rename(tmpPath, join(lockPath, "owner.json"));
|
|
270
|
+
} catch (error) {
|
|
271
|
+
try {
|
|
272
|
+
await rm(tmpPath, { force: true });
|
|
273
|
+
} catch {}
|
|
274
|
+
try {
|
|
275
|
+
await rm(lockPath, {
|
|
276
|
+
recursive: true,
|
|
277
|
+
force: true
|
|
278
|
+
});
|
|
279
|
+
} catch {}
|
|
280
|
+
throw error;
|
|
281
|
+
}
|
|
282
|
+
return;
|
|
283
|
+
} catch (error) {
|
|
284
|
+
if (error.code !== "EEXIST") throw error;
|
|
285
|
+
const owner = await readKimiCaptureLockOwner(lockPath);
|
|
286
|
+
if (owner.pid !== void 0) {
|
|
287
|
+
if (isPidDead(owner.pid)) {
|
|
288
|
+
await rm(lockPath, {
|
|
289
|
+
recursive: true,
|
|
290
|
+
force: true
|
|
291
|
+
});
|
|
292
|
+
continue;
|
|
293
|
+
}
|
|
294
|
+
} else if (await isKimiCaptureLockDirStale(lockPath)) {
|
|
295
|
+
await rm(lockPath, {
|
|
296
|
+
recursive: true,
|
|
297
|
+
force: true
|
|
298
|
+
});
|
|
299
|
+
continue;
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
if (Date.now() >= deadline) throw new KimiCaptureLockTimeoutError(lockPath, KIMI_CAPTURE_LOCK_MAX_WAIT_MS);
|
|
303
|
+
await delay(KIMI_CAPTURE_LOCK_POLL_MS);
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
async function releaseKimiCaptureLock(lockPath) {
|
|
307
|
+
await rm(lockPath, {
|
|
308
|
+
recursive: true,
|
|
309
|
+
force: true
|
|
310
|
+
});
|
|
311
|
+
}
|
|
312
|
+
async function withKimiSessionCaptureLock(kimiHome, workspace, fn) {
|
|
313
|
+
const lockPath = kimiCaptureLockPath(kimiSessionsRoot(kimiHome, workspace));
|
|
314
|
+
await acquireKimiCaptureLock(lockPath);
|
|
315
|
+
try {
|
|
316
|
+
return await fn();
|
|
317
|
+
} finally {
|
|
318
|
+
await releaseKimiCaptureLock(lockPath);
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
function delay(ms) {
|
|
322
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
323
|
+
}
|
|
324
|
+
function shellQuote(value) {
|
|
325
|
+
return `'${value.replace(/'/g, `'\\''`)}'`;
|
|
326
|
+
}
|
|
327
|
+
async function pollUntilSessionGone(agentId, timeoutMs) {
|
|
328
|
+
const deadline = Date.now() + timeoutMs;
|
|
329
|
+
while (Date.now() < deadline) {
|
|
330
|
+
if (!await tmuxSessionExists(agentId)) return true;
|
|
331
|
+
await delay(POLL_INTERVAL_MS);
|
|
332
|
+
}
|
|
333
|
+
return false;
|
|
334
|
+
}
|
|
335
|
+
function createKimiCodeRuntimeSync(options = {}) {
|
|
336
|
+
return new KimiCodeRuntimeSync(options);
|
|
337
|
+
}
|
|
338
|
+
var execAsync, SPAWN_READY_TIMEOUT_MS, POLL_INTERVAL_MS, KimiCodeSpawnTimeout, KIMI_CAPTURE_LOCK_POLL_MS, KIMI_CAPTURE_LOCK_MAX_WAIT_MS, KIMI_CAPTURE_LOCK_STALE_AGE_MS, KimiCaptureLockTimeoutError, KimiCodeRuntimeSync;
|
|
339
|
+
var init_kimi_code = __esmMin((() => {
|
|
340
|
+
init_agent_state();
|
|
341
|
+
init_queries();
|
|
342
|
+
init_delivery();
|
|
343
|
+
init_pty_supervisor_locate();
|
|
344
|
+
init_pty_token();
|
|
345
|
+
init_launcher_generator();
|
|
346
|
+
init_harness_binary();
|
|
347
|
+
init_kimi_parser();
|
|
348
|
+
init_paths();
|
|
349
|
+
init_fs_lock();
|
|
350
|
+
init_behavior();
|
|
351
|
+
init_tmux_cli();
|
|
352
|
+
execAsync = promisify(exec);
|
|
353
|
+
SPAWN_READY_TIMEOUT_MS = 6e4;
|
|
354
|
+
POLL_INTERVAL_MS = 250;
|
|
355
|
+
KimiCodeSpawnTimeout = class extends Error {
|
|
356
|
+
code = "KIMI_CODE_SPAWN_TIMEOUT";
|
|
357
|
+
constructor(agentId) {
|
|
358
|
+
super(`Kimi Code agent ${agentId} did not write a new session under its workDirKey bucket within ${SPAWN_READY_TIMEOUT_MS}ms`);
|
|
359
|
+
this.name = "KimiCodeSpawnTimeout";
|
|
360
|
+
}
|
|
361
|
+
};
|
|
362
|
+
KIMI_CAPTURE_LOCK_POLL_MS = 250;
|
|
363
|
+
KIMI_CAPTURE_LOCK_MAX_WAIT_MS = 9e4;
|
|
364
|
+
KIMI_CAPTURE_LOCK_STALE_AGE_MS = 75e3;
|
|
365
|
+
KimiCaptureLockTimeoutError = class extends Error {
|
|
366
|
+
constructor(lockPath, waitedMs) {
|
|
367
|
+
super(`Timed out after ${waitedMs}ms waiting for the Kimi session-capture lock at ${lockPath} — another process is still holding it.`);
|
|
368
|
+
this.name = "KimiCaptureLockTimeoutError";
|
|
369
|
+
}
|
|
370
|
+
};
|
|
371
|
+
KimiCodeRuntimeSync = class {
|
|
372
|
+
name = "kimi-code";
|
|
373
|
+
overdeckHomeOverride;
|
|
374
|
+
kimiHomeOverride;
|
|
375
|
+
execCommand;
|
|
376
|
+
prepareLaunch;
|
|
377
|
+
resolveAgentStates;
|
|
378
|
+
deliverMessage;
|
|
379
|
+
resolveSupervisorScriptPath;
|
|
380
|
+
writePtyTokenFor;
|
|
381
|
+
constructor(options = {}) {
|
|
382
|
+
this.overdeckHomeOverride = options.overdeckHome;
|
|
383
|
+
this.kimiHomeOverride = options.kimiHome;
|
|
384
|
+
this.execCommand = options.execCommand ?? (async (command) => execAsync(command));
|
|
385
|
+
this.prepareLaunch = options.prepareLaunch ?? (() => prepareHarnessLaunch("kimi-code"));
|
|
386
|
+
this.resolveAgentStates = options.listAgentStates ?? (() => listAgentStates());
|
|
387
|
+
this.deliverMessage = options.deliverMessage ?? ((agentId, message) => deliverAgentMessage(agentId, message, "runtime:kimi-code"));
|
|
388
|
+
this.resolveSupervisorScriptPath = options.resolveSupervisorScriptPath ?? resolvePtySupervisorScriptPath;
|
|
389
|
+
this.writePtyTokenFor = options.writePtyTokenFor ?? writePtyToken;
|
|
390
|
+
}
|
|
391
|
+
getHarnessBehavior() {
|
|
392
|
+
return getRuntimeBehavior("kimi-code");
|
|
393
|
+
}
|
|
394
|
+
getSessionPath(agentId) {
|
|
395
|
+
const workspace = this.workspaceFor(agentId);
|
|
396
|
+
if (!workspace) return null;
|
|
397
|
+
return findKimiWirePath(this.kimiHome(), workspace, this.readSessionId(agentId));
|
|
398
|
+
}
|
|
399
|
+
getLastActivity(agentId) {
|
|
400
|
+
const path = this.getSessionPath(agentId);
|
|
401
|
+
if (!path) return null;
|
|
402
|
+
try {
|
|
403
|
+
return statSync(path).mtime;
|
|
404
|
+
} catch {
|
|
405
|
+
return null;
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
getHeartbeat(agentId) {
|
|
409
|
+
const lastActivity = this.getLastActivity(agentId);
|
|
410
|
+
if (!lastActivity) return null;
|
|
411
|
+
return {
|
|
412
|
+
timestamp: lastActivity,
|
|
413
|
+
agentId,
|
|
414
|
+
source: "jsonl",
|
|
415
|
+
confidence: "medium"
|
|
416
|
+
};
|
|
417
|
+
}
|
|
418
|
+
getTokenUsage(agentId) {
|
|
419
|
+
const path = this.getSessionPath(agentId);
|
|
420
|
+
if (!path) return null;
|
|
421
|
+
return parseKimiSessionSync(path)?.usage ?? null;
|
|
422
|
+
}
|
|
423
|
+
getSessionCost(agentId) {
|
|
424
|
+
const path = this.getSessionPath(agentId);
|
|
425
|
+
if (!path) return null;
|
|
426
|
+
const parsed = parseKimiSessionSync(path);
|
|
427
|
+
if (!parsed) return null;
|
|
428
|
+
return {
|
|
429
|
+
inputCost: 0,
|
|
430
|
+
outputCost: 0,
|
|
431
|
+
cacheReadCost: 0,
|
|
432
|
+
cacheWriteCost: 0,
|
|
433
|
+
totalCost: parsed.cost_v2 ?? parsed.cost ?? 0,
|
|
434
|
+
currency: "USD"
|
|
435
|
+
};
|
|
436
|
+
}
|
|
437
|
+
async sendMessage(agentId, message) {
|
|
438
|
+
const result = await this.deliverMessage(agentId, message);
|
|
439
|
+
if (!result.ok) throw new Error(`Kimi Code agent ${agentId}: message delivery failed${result.failure ? ` (${result.failure})` : ""}`);
|
|
440
|
+
}
|
|
441
|
+
async killAgent(agentId) {
|
|
442
|
+
try {
|
|
443
|
+
await this.execCommand(`tmux -L overdeck send-keys -t ${shellQuote(agentId)} C-c 2>/dev/null || true`);
|
|
444
|
+
} catch {}
|
|
445
|
+
if (await pollUntilSessionGone(agentId, 2e3)) return;
|
|
446
|
+
let panePid = null;
|
|
447
|
+
try {
|
|
448
|
+
const { stdout } = await this.execCommand(`tmux -L overdeck list-panes -t ${shellQuote(agentId)} -F '#{pane_pid}' 2>/dev/null`);
|
|
449
|
+
panePid = stdout.trim() || null;
|
|
450
|
+
if (panePid) await this.execCommand(`kill -TERM -- -${panePid} 2>/dev/null || kill -TERM ${panePid} 2>/dev/null || true`);
|
|
451
|
+
} catch {}
|
|
452
|
+
if (await pollUntilSessionGone(agentId, 5e3)) return;
|
|
453
|
+
if (panePid) try {
|
|
454
|
+
await this.execCommand(`kill -KILL -- -${panePid} 2>/dev/null || kill -KILL ${panePid} 2>/dev/null || true`);
|
|
455
|
+
} catch {}
|
|
456
|
+
if (await tmuxSessionExists(agentId)) await tmuxKillSession(agentId);
|
|
457
|
+
}
|
|
458
|
+
async spawnAgent(config) {
|
|
459
|
+
const { pathExport } = await this.prepareLaunch();
|
|
460
|
+
const model = config.model ?? "";
|
|
461
|
+
const bucketDir = kimiSessionsRoot(this.kimiHome(), config.workspace);
|
|
462
|
+
let existingBefore = /* @__PURE__ */ new Set();
|
|
463
|
+
try {
|
|
464
|
+
existingBefore = new Set(readdirSync(bucketDir));
|
|
465
|
+
} catch {}
|
|
466
|
+
mkdirSync(join(this.home(), "agents", config.agentId), { recursive: true });
|
|
467
|
+
const supervisorScriptPath = this.resolveSupervisorScriptPath();
|
|
468
|
+
await this.writePtyTokenFor(config.agentId);
|
|
469
|
+
const launcherContent = generateLauncherScriptSync({
|
|
470
|
+
role: "work",
|
|
471
|
+
workingDir: config.workspace,
|
|
472
|
+
harness: "kimi-code",
|
|
473
|
+
kimiCodeModel: model,
|
|
474
|
+
kimiCodeYolo: true,
|
|
475
|
+
extraEnvExports: [pathExport],
|
|
476
|
+
overdeckEnv: { agentId: config.agentId },
|
|
477
|
+
setTerminalEnv: true,
|
|
478
|
+
useSupervisor: true,
|
|
479
|
+
supervisorScriptPath,
|
|
480
|
+
unsetProviderEnv: true
|
|
481
|
+
});
|
|
482
|
+
const launcherScript = this.agentPath(config.agentId, "launcher.sh");
|
|
483
|
+
writeFileSync(launcherScript, launcherContent, { mode: 493 });
|
|
484
|
+
await tmuxCreateSession(config.agentId, config.workspace, `bash ${shellQuote(launcherScript)}`, config.env ?? {});
|
|
485
|
+
try {
|
|
486
|
+
const sessionId = await this.waitForNewSessionId(config.workspace, existingBefore);
|
|
487
|
+
if (!sessionId) throw new KimiCodeSpawnTimeout(config.agentId);
|
|
488
|
+
this.writeSessionId(config.agentId, sessionId);
|
|
489
|
+
this.markSupervisorEnabled(config.agentId);
|
|
490
|
+
if (config.prompt) await this.sendMessage(config.agentId, config.prompt);
|
|
491
|
+
return {
|
|
492
|
+
id: config.agentId,
|
|
493
|
+
sessionId,
|
|
494
|
+
runtime: "kimi-code",
|
|
495
|
+
model,
|
|
496
|
+
workspace: config.workspace,
|
|
497
|
+
startedAt: /* @__PURE__ */ new Date()
|
|
498
|
+
};
|
|
499
|
+
} catch (error) {
|
|
500
|
+
if (await tmuxSessionExists(config.agentId)) await tmuxKillSession(config.agentId);
|
|
501
|
+
throw error;
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
listSessions(workspace) {
|
|
505
|
+
const sessions = [];
|
|
506
|
+
for (const state of this.resolveAgentStates()) {
|
|
507
|
+
if (state.harness !== "kimi-code") continue;
|
|
508
|
+
if (workspace && state.workspace !== workspace) continue;
|
|
509
|
+
const sessionId = this.readSessionId(state.id);
|
|
510
|
+
if (!sessionId) continue;
|
|
511
|
+
const sessionPath = findKimiWirePath(this.kimiHome(), state.workspace, sessionId);
|
|
512
|
+
let lastActivity;
|
|
513
|
+
try {
|
|
514
|
+
lastActivity = statSync(sessionPath ?? "").mtime;
|
|
515
|
+
} catch {
|
|
516
|
+
continue;
|
|
517
|
+
}
|
|
518
|
+
sessions.push({
|
|
519
|
+
id: sessionId,
|
|
520
|
+
agentId: state.id,
|
|
521
|
+
workspace: state.workspace,
|
|
522
|
+
model: state.model ?? "",
|
|
523
|
+
startedAt: new Date(state.startedAt),
|
|
524
|
+
lastActivity,
|
|
525
|
+
tokenUsage: {
|
|
526
|
+
inputTokens: 0,
|
|
527
|
+
outputTokens: 0
|
|
528
|
+
}
|
|
529
|
+
});
|
|
530
|
+
}
|
|
531
|
+
return sessions;
|
|
532
|
+
}
|
|
533
|
+
async isRunning(agentId) {
|
|
534
|
+
return tmuxSessionExists(agentId);
|
|
535
|
+
}
|
|
536
|
+
home() {
|
|
537
|
+
return this.overdeckHomeOverride ?? getOverdeckHome();
|
|
538
|
+
}
|
|
539
|
+
kimiHome() {
|
|
540
|
+
return this.kimiHomeOverride ?? kimiHomeDefault();
|
|
541
|
+
}
|
|
542
|
+
agentPath(agentId, file) {
|
|
543
|
+
return join(this.home(), "agents", agentId, file);
|
|
544
|
+
}
|
|
545
|
+
workspaceFor(agentId) {
|
|
546
|
+
return getAgentStateSync(agentId)?.workspace ?? null;
|
|
547
|
+
}
|
|
548
|
+
readSessionId(agentId) {
|
|
549
|
+
try {
|
|
550
|
+
return readFileSync(this.agentPath(agentId, "kimi-session-id"), "utf-8").trim() || null;
|
|
551
|
+
} catch {
|
|
552
|
+
return null;
|
|
553
|
+
}
|
|
554
|
+
}
|
|
555
|
+
writeSessionId(agentId, sessionId) {
|
|
556
|
+
writeKimiSessionId(agentId, sessionId, this.home());
|
|
557
|
+
}
|
|
558
|
+
/**
|
|
559
|
+
* Best-effort: mark the persisted agent state as supervisor-enabled so
|
|
560
|
+
* prepareSupervisorForRelaunch (supervisor-channels.ts) re-supervises this
|
|
561
|
+
* agent on relaunch instead of falling back to useSupervisor:false. A
|
|
562
|
+
* no-op when no state has been saved for this agent yet (some callers of
|
|
563
|
+
* this adapter's spawnAgent create state afterward).
|
|
564
|
+
*/
|
|
565
|
+
markSupervisorEnabled(agentId) {
|
|
566
|
+
const state = getAgentStateSync(agentId);
|
|
567
|
+
if (!state) return;
|
|
568
|
+
state.supervisorEnabled = true;
|
|
569
|
+
saveAgentStateSync(state);
|
|
570
|
+
}
|
|
571
|
+
async waitForNewSessionId(workspace, existingBefore) {
|
|
572
|
+
return waitForNewKimiSession(this.kimiHome(), workspace, existingBefore);
|
|
573
|
+
}
|
|
574
|
+
};
|
|
575
|
+
}));
|
|
576
|
+
//#endregion
|
|
577
|
+
export { findKimiWirePath as a, findLatestKimiSessionAsync as c, kimiSessionsRoot as d, kimiWorkDirKey as f, writeKimiSessionId as g, withKimiSessionCaptureLock as h, createKimiCodeRuntimeSync as i, init_kimi_code as l, waitForNewKimiSessionAsync as m, KimiCodeRuntimeSync as n, findKimiWirePathAsync as o, waitForNewKimiSession as p, KimiCodeSpawnTimeout as r, findLatestKimiSession as s, KimiCaptureLockTimeoutError as t, kimiCaptureLockPath as u };
|
|
578
|
+
|
|
579
|
+
//# sourceMappingURL=kimi-code-BYbme0aV.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { d as kimiSessionsRoot, g as writeKimiSessionId, h as withKimiSessionCaptureLock, l as init_kimi_code, m as waitForNewKimiSessionAsync, o as findKimiWirePathAsync } from "./kimi-code-BYbme0aV.js";
|
|
2
|
+
init_kimi_code();
|
|
3
|
+
export { findKimiWirePathAsync, kimiSessionsRoot, waitForNewKimiSessionAsync, withKimiSessionCaptureLock, writeKimiSessionId };
|