@inkeep/open-knowledge 0.39.0-beta.7 → 0.39.0-beta.9

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 (117) hide show
  1. package/dist/{acp-harness-probe-CUYWrorr.mjs → acp-harness-probe-BrOIuxee.mjs} +2 -2
  2. package/dist/assets/skills/discovery/SKILL.md +1 -1
  3. package/dist/assets/skills/project/SKILL.md +1 -1
  4. package/dist/cli.mjs +7 -7
  5. package/dist/constants-W5X7lzwf.mjs +2 -0
  6. package/dist/git-handle-BGt8xT_1.mjs +1 -0
  7. package/dist/{git-handle-B30Z3S49.mjs → git-handle-YzX39hWc.mjs} +2 -2
  8. package/dist/index.mjs +1 -1
  9. package/dist/init-CIi-cdDQ.mjs +1 -0
  10. package/dist/{init-DVJ8qrbD.mjs → init-CPNddICq.mjs} +3 -3
  11. package/dist/{launch-json-removal-CNHYRUOC.mjs → launch-json-removal-BfuiPEr_.mjs} +2 -2
  12. package/dist/loader-BWMy7gMr.mjs +1 -0
  13. package/dist/{loader-oy_NkWUH.mjs → loader-Dof4y0ze.mjs} +2 -2
  14. package/dist/md-manager-DPNbV4Up.mjs +2 -0
  15. package/dist/{open-browser-f7NgugNK.mjs → open-browser-kdF24mgk.mjs} +2 -2
  16. package/dist/parse-worker.mjs +1 -1
  17. package/dist/{preview-D1NzVj36.mjs → preview-BCbVoSQK.mjs} +2 -2
  18. package/dist/preview-DKku4BY2.mjs +1 -0
  19. package/dist/public/assets/{ActivityModeContent-D57-Ku1o.js → ActivityModeContent-BQLss-BE.js} +1 -1
  20. package/dist/public/assets/{AgentDiffPane-B3C8d_Bj.js → AgentDiffPane-B_TmNOOS.js} +1 -1
  21. package/dist/public/assets/{AgentThreadClientBinder-D7HU2baf.js → AgentThreadClientBinder-Be-VMGZV.js} +1 -1
  22. package/dist/public/assets/CodeMirrorPropInput-Sjp30pzp.js +3 -0
  23. package/dist/public/assets/{CopyButton-D0gTyMvW.js → CopyButton-Cbumgow3.js} +1 -1
  24. package/dist/public/assets/DocumentContext-4RBN9Oik.js +38 -0
  25. package/dist/public/assets/{EnableSyncConfirmDialog-B8E3XigY.js → EnableSyncConfirmDialog-CbuJxerH.js} +1 -1
  26. package/dist/public/assets/FeedbackForm-D_mXeHle.js +1 -0
  27. package/dist/public/assets/{GraphPanel-CWQeoE13.js → GraphPanel-CDzcx7vs.js} +1 -1
  28. package/dist/public/assets/{ManagedArtifactProperties-C2c-xiZv.js → ManagedArtifactProperties-Bd4rE8Ks.js} +1 -1
  29. package/dist/public/assets/{McpConsentDialogBody-_E-zSZcr.js → McpConsentDialogBody-OqDOF7x4.js} +1 -1
  30. package/dist/public/assets/{MermaidDocEditor-BDEw6KhX.js → MermaidDocEditor-B6KK6qX2.js} +1 -1
  31. package/dist/public/assets/PropertyPanel-BwdCsrPn.js +2 -0
  32. package/dist/public/assets/{ReportBugDialogBody-Vatcwx0j.js → ReportBugDialogBody-AEXnxadV.js} +1 -1
  33. package/dist/public/assets/SettingsDialogBody-CAkmpKWt.js +7 -0
  34. package/dist/public/assets/{ShareBranchSwitchDialog-yPDcRbbF.js → ShareBranchSwitchDialog-CzeHnBZ6.js} +1 -1
  35. package/dist/public/assets/{ShareReceiveDialog-XPxnPaw4.js → ShareReceiveDialog-DGTKtAY6.js} +1 -1
  36. package/dist/public/assets/{ShareReceiveMissDialog-BSTotnwx.js → ShareReceiveMissDialog-BS5BCjjQ.js} +1 -1
  37. package/dist/public/assets/{SkillEditorActions-Cf43hAWR.js → SkillEditorActions-PVnPdxy2.js} +1 -1
  38. package/dist/public/assets/{SourceEditor-fTWc_1_N.js → SourceEditor-YXhnts5y.js} +1 -1
  39. package/dist/public/assets/{TerminalPanel-DNjptZAR.js → TerminalPanel-DyJkPAsZ.js} +3 -3
  40. package/dist/public/assets/{TerminalSessionsHost-BTaTW1V9.js → TerminalSessionsHost-CfucJ1z0.js} +2 -2
  41. package/dist/public/assets/{TerminalWindowApp-Bo25OrtB.js → TerminalWindowApp-J6-xAbRj.js} +1 -1
  42. package/dist/public/assets/ThreadView-BvgNNafC.js +6 -0
  43. package/dist/public/assets/{TimelineDiffPane-DW_Ed369.js → TimelineDiffPane-B9PP3AzZ.js} +1 -1
  44. package/dist/public/assets/{agent-diff-store-Bd0NDaYd.js → agent-diff-store-BDu-qYpS.js} +1 -1
  45. package/dist/public/assets/{agent-visibility-bo7-lQPw.js → agent-visibility-BUmsS0vL.js} +1 -1
  46. package/dist/public/assets/auth-state-cache-DI5ppoto.js +11 -0
  47. package/dist/public/assets/{client-version-Hh5K6Ltl.js → client-version-CNNfEvD2.js} +1 -1
  48. package/dist/public/assets/{config-provider-BBWoBQ3A.js → config-provider-BvPGEDTw.js} +2 -2
  49. package/dist/public/assets/{dist-df-v6kvy.js → dist-CDKZLcnD.js} +68 -68
  50. package/dist/public/assets/{dist-Cju6fxq6.js → dist-DRspkp5n.js} +1 -1
  51. package/dist/public/assets/{doc-hash-NyLrtNo2.js → doc-hash-r2oc1gt-.js} +1 -1
  52. package/dist/public/assets/{documents-events-BHJB8gGz.js → documents-events-DNDUkpJM.js} +1 -1
  53. package/dist/public/assets/{file-tree-adapter-BnZwo5Ls.js → file-tree-adapter-DOr3Nip1.js} +1 -1
  54. package/dist/public/assets/follow-file-grI1hNx7.js +1 -0
  55. package/dist/public/assets/index-DLWWMHtL.css +1 -0
  56. package/dist/public/assets/{index-JMW0Wfy-.js → index-Q9MYvDYY.js} +98 -98
  57. package/dist/public/assets/{keyboard-shortcuts-Ctc7xams.js → keyboard-shortcuts-maIyJzSw.js} +1 -1
  58. package/dist/public/assets/{lint-config-client-BwIg_Zty.js → lint-config-client-C7TVN28Z.js} +1 -1
  59. package/dist/public/assets/{navigation-targets-D1rdXyAI.js → navigation-targets-DhXblHdl.js} +1 -1
  60. package/dist/public/assets/{open-managed-artifact-tab-MjzvjrV8.js → open-managed-artifact-tab-DokRsPIe.js} +1 -1
  61. package/dist/public/assets/{pending-receive-nav-store-DIZcm2qX.js → pending-receive-nav-store-DYgvjLiq.js} +1 -1
  62. package/dist/public/assets/{prop-types-C0wWXvTx.js → prop-types-IOhQSrD8.js} +1 -1
  63. package/dist/public/assets/{receive-store-B3ygF-LA.js → receive-store-BwEPjiP1.js} +1 -1
  64. package/dist/public/assets/{selection-context-ZUAPQrO2.js → selection-context-DOeF93Po.js} +1 -1
  65. package/dist/public/assets/separator-Cvkbg_YK.js +1 -0
  66. package/dist/public/assets/{skill-actions-DeZSwOo7.js → skill-actions-D9Vn0ymW.js} +1 -1
  67. package/dist/public/assets/{skills-api-vt4KnCX6.js → skills-api-CGbwE9vp.js} +1 -1
  68. package/dist/public/assets/{src-C6qvZbZl.js → src-4ThOx6_s.js} +1 -1
  69. package/dist/public/assets/{target-navigation-intent-DNrmu8Sx.js → target-navigation-intent-Beex9QTj.js} +1 -1
  70. package/dist/public/assets/{terminal-launch-events-vDhBoD8w.js → terminal-launch-events-C2tfnQr1.js} +1 -1
  71. package/dist/public/assets/{terminal-telemetry-D1lMQO11.js → terminal-telemetry-zqEIM46I.js} +1 -1
  72. package/dist/public/assets/thread-client-DyotU42S.js +1 -0
  73. package/dist/public/assets/{typing-burst-detector-CjccvkIX.js → typing-burst-detector-D8mQRP5S.js} +1 -1
  74. package/dist/public/assets/{use-activity-panel-CI9yTIc5.js → use-activity-panel-CasauzqS.js} +1 -1
  75. package/dist/public/assets/{use-apply-config-color-theme-R1RZkk5a.js → use-apply-config-color-theme-Ccfxcl-K.js} +1 -1
  76. package/dist/public/assets/{use-collab-url-B-LUA0g9.js → use-collab-url-Cf1srbbW.js} +1 -1
  77. package/dist/public/assets/{use-live-xterm-theme-DW54zfIk.js → use-live-xterm-theme-BpGfJKio.js} +1 -1
  78. package/dist/public/assets/{use-terminal-enabled-Yhee4_eR.js → use-terminal-enabled-BEEp7vb7.js} +1 -1
  79. package/dist/public/assets/{use-timeline-entry-diff-8_46BlQG.js → use-timeline-entry-diff-C1lHV9NQ.js} +4 -4
  80. package/dist/public/assets/{use-workspace-0T1cdRp3.js → use-workspace-C1D_I03G.js} +1 -1
  81. package/dist/public/assets/{workspace-paths-nkXut9sM.js → workspace-paths-BKmDPpqj.js} +1 -1
  82. package/dist/public/index.html +45 -45
  83. package/dist/{repair-launch-json-BxVkRYZG.mjs → repair-launch-json-B_QBIfGY.mjs} +2 -2
  84. package/dist/{repair-mcp-configs-D6R0toAP.mjs → repair-mcp-configs-DPkRNZjR.mjs} +2 -2
  85. package/dist/{repair-skills-DnkpKCSB.mjs → repair-skills-BaZcFu4I.mjs} +2 -2
  86. package/dist/repair-skills-BunyY3Wb.mjs +1 -0
  87. package/dist/{server-lock-1KyShewk.mjs → server-lock-BiAmhJ19.mjs} +2 -2
  88. package/dist/server-lock-BwO1WEYX.mjs +1 -0
  89. package/dist/{src-FuRMJntf.mjs → src-BTo9m5ju.mjs} +82 -82
  90. package/dist/{src-DKa-TnuV.mjs → src-DhzHOoTy.mjs} +1 -1
  91. package/dist/{src-DO_fYaAw.mjs → src-YSGKFci8.mjs} +4 -4
  92. package/dist/{src-CytrG8h8.mjs → src-kjR_dI-1.mjs} +2 -2
  93. package/dist/{start-x5T6R5Vy.mjs → start-BzSvov1E.mjs} +2 -2
  94. package/dist/start-REG2U44u.mjs +1 -0
  95. package/dist/{write-project-skill-gbFVJJ2C.mjs → write-project-skill-Dt58S1kj.mjs} +2 -2
  96. package/package.json +4 -4
  97. package/dist/constants-Lo6qvo2O.mjs +0 -2
  98. package/dist/git-handle-RhB108wn.mjs +0 -1
  99. package/dist/init-D5VPQ7rN.mjs +0 -1
  100. package/dist/loader-CSw2bCSB.mjs +0 -1
  101. package/dist/md-manager-DqdW_K1F.mjs +0 -2
  102. package/dist/preview-BxQH5EQ-.mjs +0 -1
  103. package/dist/public/assets/CodeMirrorPropInput-BNR51IWy.js +0 -3
  104. package/dist/public/assets/DocumentContext-Y1Gu1DW-.js +0 -38
  105. package/dist/public/assets/FeedbackForm-C_cZqAfF.js +0 -1
  106. package/dist/public/assets/PropertyPanel-Cd0IOo2B.js +0 -2
  107. package/dist/public/assets/SettingsDialogBody-C0UQEFXZ.js +0 -7
  108. package/dist/public/assets/ThreadView-aWrnhxjd.js +0 -4
  109. package/dist/public/assets/auth-state-cache-DKRhUdiz.js +0 -11
  110. package/dist/public/assets/download-wdc_OGNY.js +0 -1
  111. package/dist/public/assets/follow-file-Db721Zx6.js +0 -1
  112. package/dist/public/assets/index-CJ7E0pG6.css +0 -1
  113. package/dist/public/assets/thread-client-BkoRZOHk.js +0 -1
  114. package/dist/repair-skills-B8sCkCSw.mjs +0 -1
  115. package/dist/server-lock-CmiibuTm.mjs +0 -1
  116. package/dist/start-Dbzf81GV.mjs +0 -1
  117. /package/dist/public/assets/{copy-Dwat-rG5.js → copy-DmfcimOx.js} +0 -0
@@ -58,7 +58,7 @@
58
58
  -->
59
59
  <script>(() => { let t = 'system'; try { const r = localStorage.getItem('ok-theme-v1'); if (r === 'light' || r === 'dark' || r === 'system') t = r; } catch {} let ct = null; try { const c = localStorage.getItem('ok-color-theme-v1'); if (c && ['dracula', 'catppuccin-frappe', 'catppuccin-latte', 'monokai', 'gruvbox', 'solarized', 'custom'].includes(c)) ct = c; } catch {} let dark = t === 'dark'; if (t === 'system') { try { dark = window.matchMedia('(prefers-color-scheme: dark)').matches; } catch {} } let customCss = null; if (ct === 'custom') { try { const raw = localStorage.getItem('ok-custom-theme-v1'); if (raw) { const o = JSON.parse(raw); if (o?.css) { customCss = o.css; dark = !!o.dark; } } } catch {} if (!customCss) ct = null; } else if (ct) { dark = !['catppuccin-latte'].includes(ct); } if (dark) document.documentElement.classList.add('dark'); if (ct) document.documentElement.setAttribute('data-color-theme', ct); if (customCss) { const s = document.createElement('style'); s.id = 'ok-custom-theme'; s.textContent = customCss; document.head.appendChild(s); } if (window.okDesktop) { document.documentElement.classList.add('electron-mode'); document.documentElement.classList.add(`electron-platform-${window.okDesktop.platform}`); } })();</script>
60
60
  <style>html { background-color: #fafafa } html.dark { background-color: #171717 }</style>
61
- <script type="module" crossorigin src="./assets/index-JMW0Wfy-.js"></script>
61
+ <script type="module" crossorigin src="./assets/index-Q9MYvDYY.js"></script>
62
62
  <link rel="modulepreload" crossorigin href="./assets/chunk-DseTPa7n.js">
63
63
  <link rel="modulepreload" crossorigin href="./assets/preload-helper-2ej06EnG.js">
64
64
  <link rel="modulepreload" crossorigin href="./assets/w3c-keyname-Daddi42S.js">
@@ -76,15 +76,15 @@
76
76
  <link rel="modulepreload" crossorigin href="./assets/trace-api-CXljsYUC.js">
77
77
  <link rel="modulepreload" crossorigin href="./assets/lib-9ZUh4rh4.js">
78
78
  <link rel="modulepreload" crossorigin href="./assets/markdownit-BEubyjFu.js">
79
- <link rel="modulepreload" crossorigin href="./assets/dist-df-v6kvy.js">
79
+ <link rel="modulepreload" crossorigin href="./assets/dist-CDKZLcnD.js">
80
80
  <link rel="modulepreload" crossorigin href="./assets/react-JNybMug3.js">
81
81
  <link rel="modulepreload" crossorigin href="./assets/dist-COAuqNbv.js">
82
82
  <link rel="modulepreload" crossorigin href="./assets/compiler-runtime-dQcBxOhn.js">
83
83
  <link rel="modulepreload" crossorigin href="./assets/jsx-runtime-DyiINK0N.js">
84
- <link rel="modulepreload" crossorigin href="./assets/client-version-Hh5K6Ltl.js">
85
- <link rel="modulepreload" crossorigin href="./assets/use-apply-config-color-theme-R1RZkk5a.js">
84
+ <link rel="modulepreload" crossorigin href="./assets/client-version-CNNfEvD2.js">
85
+ <link rel="modulepreload" crossorigin href="./assets/use-apply-config-color-theme-Ccfxcl-K.js">
86
86
  <link rel="modulepreload" crossorigin href="./assets/config-context-C5AosGyi.js">
87
- <link rel="modulepreload" crossorigin href="./assets/config-provider-BBWoBQ3A.js">
87
+ <link rel="modulepreload" crossorigin href="./assets/config-provider-BvPGEDTw.js">
88
88
  <link rel="modulepreload" crossorigin href="./assets/dist-BD3698ve.js">
89
89
  <link rel="modulepreload" crossorigin href="./assets/dist-DBENJeML.js">
90
90
  <link rel="modulepreload" crossorigin href="./assets/bundle-mjs-Dy8bHgkj.js">
@@ -94,12 +94,12 @@
94
94
  <link rel="modulepreload" crossorigin href="./assets/trash-2-DpF__0y9.js">
95
95
  <link rel="modulepreload" crossorigin href="./assets/triangle-alert-DpxK7pzx.js">
96
96
  <link rel="modulepreload" crossorigin href="./assets/react-dom-Db7zF7dM.js">
97
- <link rel="modulepreload" crossorigin href="./assets/doc-hash-NyLrtNo2.js">
98
- <link rel="modulepreload" crossorigin href="./assets/navigation-targets-D1rdXyAI.js">
97
+ <link rel="modulepreload" crossorigin href="./assets/doc-hash-r2oc1gt-.js">
98
+ <link rel="modulepreload" crossorigin href="./assets/navigation-targets-DhXblHdl.js">
99
99
  <link rel="modulepreload" crossorigin href="./assets/external-link-BtglP1zb.js">
100
100
  <link rel="modulepreload" crossorigin href="./assets/documents-fetch-CyAk_i-3.js">
101
- <link rel="modulepreload" crossorigin href="./assets/CodeMirrorPropInput-BNR51IWy.js">
102
- <link rel="modulepreload" crossorigin href="./assets/dist-Cju6fxq6.js">
101
+ <link rel="modulepreload" crossorigin href="./assets/CodeMirrorPropInput-Sjp30pzp.js">
102
+ <link rel="modulepreload" crossorigin href="./assets/dist-DRspkp5n.js">
103
103
  <link rel="modulepreload" crossorigin href="./assets/sortable.esm-DcjmFgta.js">
104
104
  <link rel="modulepreload" crossorigin href="./assets/dist-Bv-DNDka.js">
105
105
  <link rel="modulepreload" crossorigin href="./assets/dist-93kZXTH1.js">
@@ -116,13 +116,13 @@
116
116
  <link rel="modulepreload" crossorigin href="./assets/check-D3jznJmG.js">
117
117
  <link rel="modulepreload" crossorigin href="./assets/chevron-down-0vl-mPeL.js">
118
118
  <link rel="modulepreload" crossorigin href="./assets/chevron-right-zaL9JagC.js">
119
- <link rel="modulepreload" crossorigin href="./assets/copy-Dwat-rG5.js">
120
- <link rel="modulepreload" crossorigin href="./assets/CopyButton-D0gTyMvW.js">
121
- <link rel="modulepreload" crossorigin href="./assets/documents-events-BHJB8gGz.js">
119
+ <link rel="modulepreload" crossorigin href="./assets/copy-DmfcimOx.js">
120
+ <link rel="modulepreload" crossorigin href="./assets/CopyButton-Cbumgow3.js">
121
+ <link rel="modulepreload" crossorigin href="./assets/documents-events-DNDUkpJM.js">
122
122
  <link rel="modulepreload" crossorigin href="./assets/parse-api-error-DucXvNZh.js">
123
123
  <link rel="modulepreload" crossorigin href="./assets/startup-marks-CytO17UM.js">
124
- <link rel="modulepreload" crossorigin href="./assets/prop-types-C0wWXvTx.js">
125
- <link rel="modulepreload" crossorigin href="./assets/workspace-paths-nkXut9sM.js">
124
+ <link rel="modulepreload" crossorigin href="./assets/prop-types-IOhQSrD8.js">
125
+ <link rel="modulepreload" crossorigin href="./assets/workspace-paths-BKmDPpqj.js">
126
126
  <link rel="modulepreload" crossorigin href="./assets/eye-CmnH89UE.js">
127
127
  <link rel="modulepreload" crossorigin href="./assets/info-DV3bzhzI.js">
128
128
  <link rel="modulepreload" crossorigin href="./assets/loader-circle-K7Xwpjny.js">
@@ -132,61 +132,61 @@
132
132
  <link rel="modulepreload" crossorigin href="./assets/file-tree-rename-validation-DMHa94fr.js">
133
133
  <link rel="modulepreload" crossorigin href="./assets/badge-BDZGi1Ks.js">
134
134
  <link rel="modulepreload" crossorigin href="./assets/input-CsXmpyZP.js">
135
- <link rel="modulepreload" crossorigin href="./assets/use-collab-url-B-LUA0g9.js">
136
- <link rel="modulepreload" crossorigin href="./assets/DocumentContext-Y1Gu1DW-.js">
135
+ <link rel="modulepreload" crossorigin href="./assets/use-collab-url-Cf1srbbW.js">
136
+ <link rel="modulepreload" crossorigin href="./assets/DocumentContext-4RBN9Oik.js">
137
137
  <link rel="modulepreload" crossorigin href="./assets/checkbox-Cn88M3G6.js">
138
138
  <link rel="modulepreload" crossorigin href="./assets/dist-BJxDYUHt.js">
139
139
  <link rel="modulepreload" crossorigin href="./assets/dist-Cx2QCt5k.js">
140
140
  <link rel="modulepreload" crossorigin href="./assets/dropdown-menu-CcKe8PiU.js">
141
141
  <link rel="modulepreload" crossorigin href="./assets/label-bn6BDr7p.js">
142
142
  <link rel="modulepreload" crossorigin href="./assets/radio-group-DW_ypmKx.js">
143
- <link rel="modulepreload" crossorigin href="./assets/EnableSyncConfirmDialog-B8E3XigY.js">
143
+ <link rel="modulepreload" crossorigin href="./assets/separator-Cvkbg_YK.js">
144
+ <link rel="modulepreload" crossorigin href="./assets/toggle-group-CxrQL99E.js">
145
+ <link rel="modulepreload" crossorigin href="./assets/useQuery-NsPxD6kI.js">
146
+ <link rel="modulepreload" crossorigin href="./assets/format-Dn5VT_ew.js">
147
+ <link rel="modulepreload" crossorigin href="./assets/open-managed-artifact-tab-DokRsPIe.js">
148
+ <link rel="modulepreload" crossorigin href="./assets/selection-context-DOeF93Po.js">
149
+ <link rel="modulepreload" crossorigin href="./assets/PropertyPanel-BwdCsrPn.js">
150
+ <link rel="modulepreload" crossorigin href="./assets/EnableSyncConfirmDialog-CbuJxerH.js">
144
151
  <link rel="modulepreload" crossorigin href="./assets/arrow-up-right-BKliW282.js">
152
+ <link rel="modulepreload" crossorigin href="./assets/miss-dialog-store-81J1GwFD.js">
153
+ <link rel="modulepreload" crossorigin href="./assets/refresh-cw-DSH9Of_0.js">
154
+ <link rel="modulepreload" crossorigin href="./assets/pending-receive-nav-store-DYgvjLiq.js">
145
155
  <link rel="modulepreload" crossorigin href="./assets/cursor-AolWKuZw.js">
146
156
  <link rel="modulepreload" crossorigin href="./assets/RegisteredAgentIcon--E1135hW.js">
147
- <link rel="modulepreload" crossorigin href="./assets/refresh-cw-DSH9Of_0.js">
157
+ <link rel="modulepreload" crossorigin href="./assets/chevron-left-fiDaD9J4.js">
148
158
  <link rel="modulepreload" crossorigin href="./assets/copilot-Be7YOjJF.js">
149
- <link rel="modulepreload" crossorigin href="./assets/keyboard-shortcuts-Ctc7xams.js">
150
- <link rel="modulepreload" crossorigin href="./assets/agent-visibility-bo7-lQPw.js">
159
+ <link rel="modulepreload" crossorigin href="./assets/keyboard-shortcuts-maIyJzSw.js">
160
+ <link rel="modulepreload" crossorigin href="./assets/agent-visibility-BUmsS0vL.js">
151
161
  <link rel="modulepreload" crossorigin href="./assets/clipboard-adapter-BGIXxhKQ.js">
152
- <link rel="modulepreload" crossorigin href="./assets/skills-api-vt4KnCX6.js">
153
- <link rel="modulepreload" crossorigin href="./assets/use-workspace-0T1cdRp3.js">
154
- <link rel="modulepreload" crossorigin href="./assets/skill-actions-DeZSwOo7.js">
155
- <link rel="modulepreload" crossorigin href="./assets/download-wdc_OGNY.js">
156
- <link rel="modulepreload" crossorigin href="./assets/open-managed-artifact-tab-MjzvjrV8.js">
162
+ <link rel="modulepreload" crossorigin href="./assets/skills-api-CGbwE9vp.js">
163
+ <link rel="modulepreload" crossorigin href="./assets/use-workspace-C1D_I03G.js">
164
+ <link rel="modulepreload" crossorigin href="./assets/skill-actions-D9Vn0ymW.js">
157
165
  <link rel="modulepreload" crossorigin href="./assets/skeleton-CA6hvjst.js">
158
166
  <link rel="modulepreload" crossorigin href="./assets/textarea-DwJR-19i.js">
159
- <link rel="modulepreload" crossorigin href="./assets/lint-config-client-BwIg_Zty.js">
160
- <link rel="modulepreload" crossorigin href="./assets/auth-state-cache-DKRhUdiz.js">
161
- <link rel="modulepreload" crossorigin href="./assets/toggle-group-CxrQL99E.js">
162
- <link rel="modulepreload" crossorigin href="./assets/useQuery-NsPxD6kI.js">
163
- <link rel="modulepreload" crossorigin href="./assets/format-Dn5VT_ew.js">
164
- <link rel="modulepreload" crossorigin href="./assets/selection-context-ZUAPQrO2.js">
165
- <link rel="modulepreload" crossorigin href="./assets/PropertyPanel-Cd0IOo2B.js">
166
- <link rel="modulepreload" crossorigin href="./assets/miss-dialog-store-81J1GwFD.js">
167
- <link rel="modulepreload" crossorigin href="./assets/pending-receive-nav-store-DIZcm2qX.js">
168
- <link rel="modulepreload" crossorigin href="./assets/chevron-left-fiDaD9J4.js">
169
- <link rel="modulepreload" crossorigin href="./assets/terminal-launch-events-vDhBoD8w.js">
167
+ <link rel="modulepreload" crossorigin href="./assets/lint-config-client-C7TVN28Z.js">
168
+ <link rel="modulepreload" crossorigin href="./assets/auth-state-cache-DI5ppoto.js">
169
+ <link rel="modulepreload" crossorigin href="./assets/terminal-launch-events-C2tfnQr1.js">
170
170
  <link rel="modulepreload" crossorigin href="./assets/panel-right-open-CBweAP43.js">
171
- <link rel="modulepreload" crossorigin href="./assets/follow-file-Db721Zx6.js">
171
+ <link rel="modulepreload" crossorigin href="./assets/follow-file-grI1hNx7.js">
172
172
  <link rel="modulepreload" crossorigin href="./assets/timeline-diff-store-dt1fl2gd.js">
173
173
  <link rel="modulepreload" crossorigin href="./assets/form-CTttIps7.js">
174
174
  <link rel="modulepreload" crossorigin href="./assets/wrench-BDWKT3wQ.js">
175
175
  <link rel="modulepreload" crossorigin href="./assets/panel-DLUMbyPl.js">
176
- <link rel="modulepreload" crossorigin href="./assets/typing-burst-detector-CjccvkIX.js">
176
+ <link rel="modulepreload" crossorigin href="./assets/typing-burst-detector-D8mQRP5S.js">
177
177
  <link rel="modulepreload" crossorigin href="./assets/project-paths-DcJ4HDNl.js">
178
- <link rel="modulepreload" crossorigin href="./assets/file-tree-adapter-BnZwo5Ls.js">
179
- <link rel="modulepreload" crossorigin href="./assets/agent-diff-store-Bd0NDaYd.js">
180
- <link rel="modulepreload" crossorigin href="./assets/target-navigation-intent-DNrmu8Sx.js">
181
- <link rel="modulepreload" crossorigin href="./assets/use-live-xterm-theme-DW54zfIk.js">
178
+ <link rel="modulepreload" crossorigin href="./assets/file-tree-adapter-DOr3Nip1.js">
179
+ <link rel="modulepreload" crossorigin href="./assets/agent-diff-store-BDu-qYpS.js">
180
+ <link rel="modulepreload" crossorigin href="./assets/target-navigation-intent-Beex9QTj.js">
181
+ <link rel="modulepreload" crossorigin href="./assets/use-live-xterm-theme-BpGfJKio.js">
182
182
  <link rel="modulepreload" crossorigin href="./assets/use-installed-clis-DmVWBoog.js">
183
- <link rel="modulepreload" crossorigin href="./assets/terminal-telemetry-D1lMQO11.js">
183
+ <link rel="modulepreload" crossorigin href="./assets/terminal-telemetry-zqEIM46I.js">
184
184
  <link rel="modulepreload" crossorigin href="./assets/agent-presence-DdJtLtJ1.js">
185
185
  <link rel="modulepreload" crossorigin href="./assets/mcp-consent-store-rBVJ88Wy.js">
186
- <link rel="modulepreload" crossorigin href="./assets/receive-store-B3ygF-LA.js">
186
+ <link rel="modulepreload" crossorigin href="./assets/receive-store-BwEPjiP1.js">
187
187
  <link rel="modulepreload" crossorigin href="./assets/worktree-store-1tC864Do.js">
188
188
  <link rel="stylesheet" crossorigin href="./assets/DocumentContext-B0sQn39F.css">
189
- <link rel="stylesheet" crossorigin href="./assets/index-CJ7E0pG6.css">
189
+ <link rel="stylesheet" crossorigin href="./assets/index-DLWWMHtL.css">
190
190
  </head>
191
191
 
192
192
  <body class="antialiased">
@@ -1,2 +1,2 @@
1
- import{t as e}from"./launch-json-removal-CNHYRUOC.mjs";import{join as t}from"node:path";function n(n){let i=n.logger??r,a=t(n.projectDir,`.claude`,`launch.json`);if(n.reclaimDisableEnv===`1`)return i({event:`launch-json-repair-skipped`,reason:`reclaim-disabled`}),{outcome:{configPath:a,outcome:`skipped-reclaim-disabled`},repairedCount:0};let o;try{o=e(n.projectDir)}catch(e){let t=e instanceof Error?e.message:String(e);return i({event:`launch-json-repair-write-failed`,configPath:a}),{outcome:{configPath:a,outcome:`write-failed`,error:t},repairedCount:0}}let s=o.kind===`removed`||o.kind===`removed-file`;return s&&i({event:`launch-json-repair-removed`,configPath:a}),{outcome:{configPath:a,outcome:o.kind},repairedCount:+!!s}}function r(e){process.stderr.write(`${JSON.stringify(e)}\n`)}export{n as repairLaunchJson};
2
- //# sourceMappingURL=repair-launch-json-BxVkRYZG.mjs.map
1
+ import{t as e}from"./launch-json-removal-BfuiPEr_.mjs";import{join as t}from"node:path";function n(n){let i=n.logger??r,a=t(n.projectDir,`.claude`,`launch.json`);if(n.reclaimDisableEnv===`1`)return i({event:`launch-json-repair-skipped`,reason:`reclaim-disabled`}),{outcome:{configPath:a,outcome:`skipped-reclaim-disabled`},repairedCount:0};let o;try{o=e(n.projectDir)}catch(e){let t=e instanceof Error?e.message:String(e);return i({event:`launch-json-repair-write-failed`,configPath:a}),{outcome:{configPath:a,outcome:`write-failed`,error:t},repairedCount:0}}let s=o.kind===`removed`||o.kind===`removed-file`;return s&&i({event:`launch-json-repair-removed`,configPath:a}),{outcome:{configPath:a,outcome:o.kind},repairedCount:+!!s}}function r(e){process.stderr.write(`${JSON.stringify(e)}\n`)}export{n as repairLaunchJson};
2
+ //# sourceMappingURL=repair-launch-json-B_QBIfGY.mjs.map
@@ -1,2 +1,2 @@
1
- import{g as e,l as t,s as n}from"./write-project-skill-gbFVJJ2C.mjs";import{d as r,v as i}from"./init-DVJ8qrbD.mjs";import{t as a}from"./mcp-migrate-event-CWx0WLdE.mjs";import{homedir as o}from"node:os";function s(e){let r=e.logger??u,i=e.home??o(),a=[];if(e.reclaimDisableEnv===`1`)return r({event:`mcp-config-repair-skipped`,reason:`reclaim-disabled`}),{outcomes:a,repairedCount:0};for(let o of n){let n=t[o],s=c(()=>n.configPath(``,i));if(s!==null&&a.push(l({scope:`user`,editorId:o,target:n,home:i,cwd:``,configPath:s,configPathOverride:void 0,logger:r})),n.projectConfigPath){let t=n.projectConfigPath,i=c(()=>t(e.projectDir));i!==null&&a.push(l({scope:`project`,editorId:o,target:n,home:void 0,cwd:e.projectDir,configPath:i,configPathOverride:i,logger:r}))}}return{outcomes:a,repairedCount:a.filter(e=>e.outcome===`repaired`).length}}function c(e){try{return e()}catch{return null}}function l(t){let n={scope:t.scope,editorId:t.editorId,configPath:t.configPath},o=r(t.target,t.cwd,t.home,t.configPathOverride);if(o===null)return{...n,outcome:`no-entry`};if(e(o))return{...n,outcome:`canonical`};t.logger(a({scope:t.scope,surface:`cli-repair`,editorId:t.editorId,configPath:t.configPath,priorEntry:o}));let s=i(t.target,t.cwd,{mode:`published`,skipAvailabilityCheck:!0},t.home,t.configPathOverride);if(s.action===`failed`){let e=s.error??`unknown write failure`;return t.logger({event:`mcp-config-repair-write-failed`,scope:t.scope,editorId:t.editorId,configPath:t.configPath,error:e}),{...n,outcome:`write-failed`,error:e}}return s.action===`declined`?(t.logger({event:`mcp-config-repair-declined`,scope:t.scope,editorId:t.editorId,configPath:t.configPath,reason:s.declineReason}),{...n,outcome:`declined`}):{...n,outcome:`repaired`}}function u(e){process.stderr.write(`${JSON.stringify(e)}\n`)}export{s as repairMcpConfigs};
2
- //# sourceMappingURL=repair-mcp-configs-D6R0toAP.mjs.map
1
+ import{g as e,l as t,s as n}from"./write-project-skill-Dt58S1kj.mjs";import{d as r,v as i}from"./init-CPNddICq.mjs";import{t as a}from"./mcp-migrate-event-CWx0WLdE.mjs";import{homedir as o}from"node:os";function s(e){let r=e.logger??u,i=e.home??o(),a=[];if(e.reclaimDisableEnv===`1`)return r({event:`mcp-config-repair-skipped`,reason:`reclaim-disabled`}),{outcomes:a,repairedCount:0};for(let o of n){let n=t[o],s=c(()=>n.configPath(``,i));if(s!==null&&a.push(l({scope:`user`,editorId:o,target:n,home:i,cwd:``,configPath:s,configPathOverride:void 0,logger:r})),n.projectConfigPath){let t=n.projectConfigPath,i=c(()=>t(e.projectDir));i!==null&&a.push(l({scope:`project`,editorId:o,target:n,home:void 0,cwd:e.projectDir,configPath:i,configPathOverride:i,logger:r}))}}return{outcomes:a,repairedCount:a.filter(e=>e.outcome===`repaired`).length}}function c(e){try{return e()}catch{return null}}function l(t){let n={scope:t.scope,editorId:t.editorId,configPath:t.configPath},o=r(t.target,t.cwd,t.home,t.configPathOverride);if(o===null)return{...n,outcome:`no-entry`};if(e(o))return{...n,outcome:`canonical`};t.logger(a({scope:t.scope,surface:`cli-repair`,editorId:t.editorId,configPath:t.configPath,priorEntry:o}));let s=i(t.target,t.cwd,{mode:`published`,skipAvailabilityCheck:!0},t.home,t.configPathOverride);if(s.action===`failed`){let e=s.error??`unknown write failure`;return t.logger({event:`mcp-config-repair-write-failed`,scope:t.scope,editorId:t.editorId,configPath:t.configPath,error:e}),{...n,outcome:`write-failed`,error:e}}return s.action===`declined`?(t.logger({event:`mcp-config-repair-declined`,scope:t.scope,editorId:t.editorId,configPath:t.configPath,reason:s.declineReason}),{...n,outcome:`declined`}):{...n,outcome:`repaired`}}function u(e){process.stderr.write(`${JSON.stringify(e)}\n`)}export{s as repairMcpConfigs};
2
+ //# sourceMappingURL=repair-mcp-configs-DPkRNZjR.mjs.map
@@ -1,3 +1,3 @@
1
- import{C as e}from"./src-FuRMJntf.mjs";import{Cr as t,Dr as n,Nr as r,Pr as i,Tr as a,br as o,kr as s,wr as c,yr as l}from"./src-DO_fYaAw.mjs";import{a as u,l as d,t as f,u as p,x as m}from"./write-project-skill-gbFVJJ2C.mjs";import{dirname as h,join as g,resolve as _}from"node:path";import{existsSync as v,mkdirSync as y,readFileSync as b,readdirSync as x,rmSync as S,statSync as C,writeFileSync as w}from"node:fs";import{homedir as T}from"node:os";const E={existsSync:e=>v(e),isDirectory:e=>{try{return C(e).isDirectory()}catch(e){if(e.code===`ENOENT`)return!1;throw e}},readdirSync:e=>x(e),readFileSync:e=>b(e),writeFileSync:(e,t)=>{w(e,t)},mkdirSync:(e,t)=>{y(e,t)},rmSync:(e,t)=>{S(e,t)}},D={resolveProjectBundledSkillDir:()=>s(`project`,{checkDesktop:!1}),resolveUserBundledSkillDir:e=>s(e,{checkDesktop:!1}),readBundledVersion:()=>o(),readRecordedVersion:e=>t(e,`cli-hosts`),writeRecordedVersion:(e,t)=>a(e,`cli-hosts`,t,`cli-start`),recordEvent:e=>n(e),readBundleDecision:(e,t)=>l(e,t),writeBundleDecision:(e,t,n)=>c(e,t,n),removeBundleFromDisk:(e,t)=>u(e,t)};function O(e){process.stderr.write(`${JSON.stringify(e)}\n`)}function k(e,t,n){n.rmSync(t,{recursive:!0,force:!0}),n.mkdirSync(h(t),{recursive:!0}),A(e,t,n)}function A(e,t,n){n.mkdirSync(t,{recursive:!0});for(let r of n.readdirSync(e)){let i=g(e,r),a=g(t,r);n.isDirectory(i)?A(i,a,n):n.writeFileSync(a,n.readFileSync(i))}}function j(e,t,n,r,i,a){let o=[],s=g(e,`.agents`,`skills`,t),c=r.existsSync(s),l=!1;try{k(n,s,r),l=!0,o.push({kind:`central`,path:s,outcome:c?`overwritten`:`written`}),i({event:`user-skill-reclaim-central-written`,scope:`user`,path:s,preexisting:c,version:a})}catch(e){let t=e instanceof Error?e.message:String(e);o.push({kind:`central`,path:s,outcome:`failed`,error:t}),i({event:`user-skill-reclaim-central-failed`,scope:`user`,path:s,error:t})}for(let c of p){let l=g(e,c.hostDir),u=g(l,`skills`,t);if(u===s){o.push({kind:`host`,editorId:c.editorId,hostDir:c.hostDir,path:u,outcome:`skipped-collapsed-with-central`});continue}if(!r.existsSync(l)){o.push({kind:`host`,editorId:c.editorId,hostDir:c.hostDir,path:u,outcome:`skipped-host-absent`});continue}let d=r.existsSync(u);try{k(n,u,r),o.push({kind:`host`,editorId:c.editorId,hostDir:c.hostDir,path:u,outcome:d?`overwritten`:`written`}),i({event:`user-skill-reclaim-host-written`,scope:`user`,editorId:c.editorId,hostDir:c.hostDir,path:u,preexisting:d,version:a})}catch(e){let t=e instanceof Error?e.message:String(e);o.push({kind:`host`,editorId:c.editorId,hostDir:c.hostDir,path:u,outcome:`failed`,error:t}),i({event:`user-skill-reclaim-host-failed`,scope:`user`,editorId:c.editorId,hostDir:c.hostDir,path:u,error:t})}}return{entries:o,centralWritten:l}}function M(e,t){if(!e)return!1;try{return t.existsSync(e)?t.readFileSync(e).toString(`utf8`).includes(`# ok-mcp-`):!1}catch{return!1}}function N(e,t,n,r){let i;try{i=t.resolveProjectBundledSkillDir()}catch(e){return r({event:`project-skill-reclaim-bundle-missing`,scope:`project`,error:e instanceof Error?e.message:String(e)}),{outcome:`skipped`,reason:`bundle-missing`}}let a=[];for(let t of p){let o=g(e,t.hostDir,`skills`,`open-knowledge`),s=g(o,`SKILL.md`),c=n.existsSync(s),l=d[t.editorId]?.projectConfigPath?.(e),u=!c&&M(l,n);if(!c&&!u){a.push({editorId:t.editorId,hostDir:t.hostDir,path:o,outcome:`no-token`}),r({event:`project-skill-reclaim-no-token`,scope:`project`,editorId:t.editorId,path:o});continue}try{f(o,e),k(i,o,n);let s=c?`reclaimed`:`created`;a.push({editorId:t.editorId,hostDir:t.hostDir,path:o,outcome:s}),r({event:c?`project-skill-reclaim-reclaimed`:`project-skill-reclaim-created`,scope:`project`,editorId:t.editorId,path:o})}catch(e){let n=e instanceof Error?e.message:String(e);a.push({editorId:t.editorId,hostDir:t.hostDir,path:o,outcome:`failed`,error:n}),r({event:`project-skill-reclaim-failed`,scope:`project`,editorId:t.editorId,path:o,error:n})}}return{outcome:`done`,entries:a}}async function P(t,n,a,o){let s=e=>{n.recordEvent(e).catch(()=>{})},c=()=>new Date().toISOString(),l;try{l=await n.readBundledVersion()}catch(e){let t=e instanceof Error?e.message:String(e);return o({event:`user-skill-reclaim-version-read-failed`,scope:`user`,error:t}),s({ts:c(),surface:`cli-start`,target:`cli-hosts`,bundle:`discovery`,outcome:`failed`,reason:`version-read-failed:${t}`}),{outcome:`skipped`,reason:`version-read-failed`}}let u;try{u=await n.readRecordedVersion(t)}catch(e){o({event:`user-skill-reclaim-version-read-error`,scope:`user`,error:e instanceof Error?e.message:String(e)}),u=null}let d=[],f=null;for(let e of i)try{d.push({id:e,sourceDir:n.resolveUserBundledSkillDir(e)})}catch(e){f=e instanceof Error?e.message:String(e)}if(d.length===0)return o({event:`user-skill-reclaim-bundle-missing`,scope:`user`,error:f??`no user-global bundles`}),s({ts:c(),surface:`cli-start`,target:`cli-hosts`,outcome:`failed`,reason:`bundle-missing:${f}`}),{outcome:`skipped`,reason:`bundle-missing`};let p=[];for(let i of d){let s=r[i.id],c=a.existsSync(g(t,`.agents`,`skills`,s)),l=await n.readBundleDecision(t,s).catch(()=>null);if(!e(l,{installedOnDisk:c})){if(c)try{n.removeBundleFromDisk(t,i.id),o({event:`user-skill-reclaim-bundle-declined-removed`,scope:`user`,bundle:i.id})}catch(e){o({event:`user-skill-reclaim-bundle-remove-failed`,scope:`user`,bundle:i.id,error:e instanceof Error?e.message:String(e)})}continue}if(l===null&&c)try{await n.writeBundleDecision(t,s,!0)}catch(e){o({event:`user-skill-reclaim-grandfather-write-failed`,scope:`user`,bundle:i.id,error:e instanceof Error?e.message:String(e)})}p.push(i)}if(p.length===0)return{outcome:`skipped`,reason:`all-bundles-declined`};let m=p.every(e=>a.existsSync(g(t,`.agents`,`skills`,r[e.id])));if(u!==null&&u===l&&m)return o({event:`user-skill-reclaim-skipped-version-current`,scope:`user`,version:l}),{outcome:`skipped`,reason:`version-current`};let h=[],_=d.length===i.length,v=!0;for(let{id:e,sourceDir:n}of p){let i=j(t,r[e],n,a,o,l);h.push(...i.entries),i.centralWritten||(v=!1)}let y=h.some(e=>e.kind===`central`&&(e.outcome===`written`||e.outcome===`overwritten`));if(_&&v&&y){let e=null;try{await n.writeRecordedVersion(t,l),o({event:`user-skill-reclaim-version-recorded`,scope:`user`,version:l})}catch(t){e=t instanceof Error?t.message:String(t),o({event:`user-skill-reclaim-version-record-failed`,scope:`user`,version:l,error:e})}for(let{id:t}of p)s({ts:c(),surface:`cli-start`,target:`cli-hosts`,bundle:t,outcome:e===null?`installed`:`failed`,version:l,...e===null?{}:{reason:`state-write-failed:${e}`}})}else{let e=h.some(e=>e.kind===`host`&&e.outcome===`failed`);s({ts:c(),surface:`cli-start`,target:`cli-hosts`,outcome:`failed`,version:l,reason:e?`all-writes-failed`:`no-hosts-installed`})}return{outcome:`done`,version:l,entries:h}}async function F(e){let t=e.logger??O,n=e.fs??E,r=e.home??T(),i={...D,...e.deps};return e.reclaimDisableEnv===`1`?(t({event:`skill-repair-skipped`,reason:`reclaim-disabled`}),{status:`skipped`,reason:`reclaim-disabled`}):{status:`done`,project:N(e.projectDir,i,n,t),user:await P(r,i,n,t)}}function I(e){return e.status===`skipped`?e.reason===`reclaim-disabled`?0:1:e.project.outcome===`skipped`||e.user.outcome===`skipped`&&e.user.reason!==`version-current`&&e.user.reason!==`all-bundles-declined`||e.project.entries.some(e=>e.outcome===`failed`)||e.user.outcome===`done`&&e.user.entries.some(e=>e.outcome===`failed`)?1:0}function L(e){if(e.status===`skipped`)return`Skipped: ${e.reason}`;let t=[`Skill reclaim complete.`];if(e.project.outcome===`done`){let n=e.project.entries.filter(e=>e.outcome===`reclaimed`).length,r=e.project.entries.filter(e=>e.outcome===`created`).length,i=e.project.entries.filter(e=>e.outcome===`no-token`).length,a=e.project.entries.filter(e=>e.outcome===`failed`).length;t.push(` Project: ${n} reclaimed, ${r} created, ${i} no-token, ${a} failed.`)}else t.push(` Project: skipped (${e.project.reason}).`);if(e.user.outcome===`done`){let n=e.user.entries.filter(e=>e.outcome===`written`||e.outcome===`overwritten`).length,r=e.user.entries.filter(e=>e.outcome===`skipped-host-absent`||e.outcome===`skipped-collapsed-with-central`).length,i=e.user.entries.filter(e=>e.outcome===`failed`).length;t.push(` User (${e.user.version}): ${n} written, ${r} skipped, ${i} failed.`)}else t.push(` User: skipped (${e.user.reason}).`);return t.join(`
1
+ import{C as e}from"./src-BTo9m5ju.mjs";import{Cr as t,Dr as n,Nr as r,Pr as i,Tr as a,br as o,kr as s,wr as c,yr as l}from"./src-YSGKFci8.mjs";import{a as u,l as d,t as f,u as p,x as m}from"./write-project-skill-Dt58S1kj.mjs";import{dirname as h,join as g,resolve as _}from"node:path";import{existsSync as v,mkdirSync as y,readFileSync as b,readdirSync as x,rmSync as S,statSync as C,writeFileSync as w}from"node:fs";import{homedir as T}from"node:os";const E={existsSync:e=>v(e),isDirectory:e=>{try{return C(e).isDirectory()}catch(e){if(e.code===`ENOENT`)return!1;throw e}},readdirSync:e=>x(e),readFileSync:e=>b(e),writeFileSync:(e,t)=>{w(e,t)},mkdirSync:(e,t)=>{y(e,t)},rmSync:(e,t)=>{S(e,t)}},D={resolveProjectBundledSkillDir:()=>s(`project`,{checkDesktop:!1}),resolveUserBundledSkillDir:e=>s(e,{checkDesktop:!1}),readBundledVersion:()=>o(),readRecordedVersion:e=>t(e,`cli-hosts`),writeRecordedVersion:(e,t)=>a(e,`cli-hosts`,t,`cli-start`),recordEvent:e=>n(e),readBundleDecision:(e,t)=>l(e,t),writeBundleDecision:(e,t,n)=>c(e,t,n),removeBundleFromDisk:(e,t)=>u(e,t)};function O(e){process.stderr.write(`${JSON.stringify(e)}\n`)}function k(e,t,n){n.rmSync(t,{recursive:!0,force:!0}),n.mkdirSync(h(t),{recursive:!0}),A(e,t,n)}function A(e,t,n){n.mkdirSync(t,{recursive:!0});for(let r of n.readdirSync(e)){let i=g(e,r),a=g(t,r);n.isDirectory(i)?A(i,a,n):n.writeFileSync(a,n.readFileSync(i))}}function j(e,t,n,r,i,a){let o=[],s=g(e,`.agents`,`skills`,t),c=r.existsSync(s),l=!1;try{k(n,s,r),l=!0,o.push({kind:`central`,path:s,outcome:c?`overwritten`:`written`}),i({event:`user-skill-reclaim-central-written`,scope:`user`,path:s,preexisting:c,version:a})}catch(e){let t=e instanceof Error?e.message:String(e);o.push({kind:`central`,path:s,outcome:`failed`,error:t}),i({event:`user-skill-reclaim-central-failed`,scope:`user`,path:s,error:t})}for(let c of p){let l=g(e,c.hostDir),u=g(l,`skills`,t);if(u===s){o.push({kind:`host`,editorId:c.editorId,hostDir:c.hostDir,path:u,outcome:`skipped-collapsed-with-central`});continue}if(!r.existsSync(l)){o.push({kind:`host`,editorId:c.editorId,hostDir:c.hostDir,path:u,outcome:`skipped-host-absent`});continue}let d=r.existsSync(u);try{k(n,u,r),o.push({kind:`host`,editorId:c.editorId,hostDir:c.hostDir,path:u,outcome:d?`overwritten`:`written`}),i({event:`user-skill-reclaim-host-written`,scope:`user`,editorId:c.editorId,hostDir:c.hostDir,path:u,preexisting:d,version:a})}catch(e){let t=e instanceof Error?e.message:String(e);o.push({kind:`host`,editorId:c.editorId,hostDir:c.hostDir,path:u,outcome:`failed`,error:t}),i({event:`user-skill-reclaim-host-failed`,scope:`user`,editorId:c.editorId,hostDir:c.hostDir,path:u,error:t})}}return{entries:o,centralWritten:l}}function M(e,t){if(!e)return!1;try{return t.existsSync(e)?t.readFileSync(e).toString(`utf8`).includes(`# ok-mcp-`):!1}catch{return!1}}function N(e,t,n,r){let i;try{i=t.resolveProjectBundledSkillDir()}catch(e){return r({event:`project-skill-reclaim-bundle-missing`,scope:`project`,error:e instanceof Error?e.message:String(e)}),{outcome:`skipped`,reason:`bundle-missing`}}let a=[];for(let t of p){let o=g(e,t.hostDir,`skills`,`open-knowledge`),s=g(o,`SKILL.md`),c=n.existsSync(s),l=d[t.editorId]?.projectConfigPath?.(e),u=!c&&M(l,n);if(!c&&!u){a.push({editorId:t.editorId,hostDir:t.hostDir,path:o,outcome:`no-token`}),r({event:`project-skill-reclaim-no-token`,scope:`project`,editorId:t.editorId,path:o});continue}try{f(o,e),k(i,o,n);let s=c?`reclaimed`:`created`;a.push({editorId:t.editorId,hostDir:t.hostDir,path:o,outcome:s}),r({event:c?`project-skill-reclaim-reclaimed`:`project-skill-reclaim-created`,scope:`project`,editorId:t.editorId,path:o})}catch(e){let n=e instanceof Error?e.message:String(e);a.push({editorId:t.editorId,hostDir:t.hostDir,path:o,outcome:`failed`,error:n}),r({event:`project-skill-reclaim-failed`,scope:`project`,editorId:t.editorId,path:o,error:n})}}return{outcome:`done`,entries:a}}async function P(t,n,a,o){let s=e=>{n.recordEvent(e).catch(()=>{})},c=()=>new Date().toISOString(),l;try{l=await n.readBundledVersion()}catch(e){let t=e instanceof Error?e.message:String(e);return o({event:`user-skill-reclaim-version-read-failed`,scope:`user`,error:t}),s({ts:c(),surface:`cli-start`,target:`cli-hosts`,bundle:`discovery`,outcome:`failed`,reason:`version-read-failed:${t}`}),{outcome:`skipped`,reason:`version-read-failed`}}let u;try{u=await n.readRecordedVersion(t)}catch(e){o({event:`user-skill-reclaim-version-read-error`,scope:`user`,error:e instanceof Error?e.message:String(e)}),u=null}let d=[],f=null;for(let e of i)try{d.push({id:e,sourceDir:n.resolveUserBundledSkillDir(e)})}catch(e){f=e instanceof Error?e.message:String(e)}if(d.length===0)return o({event:`user-skill-reclaim-bundle-missing`,scope:`user`,error:f??`no user-global bundles`}),s({ts:c(),surface:`cli-start`,target:`cli-hosts`,outcome:`failed`,reason:`bundle-missing:${f}`}),{outcome:`skipped`,reason:`bundle-missing`};let p=[];for(let i of d){let s=r[i.id],c=a.existsSync(g(t,`.agents`,`skills`,s)),l=await n.readBundleDecision(t,s).catch(()=>null);if(!e(l,{installedOnDisk:c})){if(c)try{n.removeBundleFromDisk(t,i.id),o({event:`user-skill-reclaim-bundle-declined-removed`,scope:`user`,bundle:i.id})}catch(e){o({event:`user-skill-reclaim-bundle-remove-failed`,scope:`user`,bundle:i.id,error:e instanceof Error?e.message:String(e)})}continue}if(l===null&&c)try{await n.writeBundleDecision(t,s,!0)}catch(e){o({event:`user-skill-reclaim-grandfather-write-failed`,scope:`user`,bundle:i.id,error:e instanceof Error?e.message:String(e)})}p.push(i)}if(p.length===0)return{outcome:`skipped`,reason:`all-bundles-declined`};let m=p.every(e=>a.existsSync(g(t,`.agents`,`skills`,r[e.id])));if(u!==null&&u===l&&m)return o({event:`user-skill-reclaim-skipped-version-current`,scope:`user`,version:l}),{outcome:`skipped`,reason:`version-current`};let h=[],_=d.length===i.length,v=!0;for(let{id:e,sourceDir:n}of p){let i=j(t,r[e],n,a,o,l);h.push(...i.entries),i.centralWritten||(v=!1)}let y=h.some(e=>e.kind===`central`&&(e.outcome===`written`||e.outcome===`overwritten`));if(_&&v&&y){let e=null;try{await n.writeRecordedVersion(t,l),o({event:`user-skill-reclaim-version-recorded`,scope:`user`,version:l})}catch(t){e=t instanceof Error?t.message:String(t),o({event:`user-skill-reclaim-version-record-failed`,scope:`user`,version:l,error:e})}for(let{id:t}of p)s({ts:c(),surface:`cli-start`,target:`cli-hosts`,bundle:t,outcome:e===null?`installed`:`failed`,version:l,...e===null?{}:{reason:`state-write-failed:${e}`}})}else{let e=h.some(e=>e.kind===`host`&&e.outcome===`failed`);s({ts:c(),surface:`cli-start`,target:`cli-hosts`,outcome:`failed`,version:l,reason:e?`all-writes-failed`:`no-hosts-installed`})}return{outcome:`done`,version:l,entries:h}}async function F(e){let t=e.logger??O,n=e.fs??E,r=e.home??T(),i={...D,...e.deps};return e.reclaimDisableEnv===`1`?(t({event:`skill-repair-skipped`,reason:`reclaim-disabled`}),{status:`skipped`,reason:`reclaim-disabled`}):{status:`done`,project:N(e.projectDir,i,n,t),user:await P(r,i,n,t)}}function I(e){return e.status===`skipped`?e.reason===`reclaim-disabled`?0:1:e.project.outcome===`skipped`||e.user.outcome===`skipped`&&e.user.reason!==`version-current`&&e.user.reason!==`all-bundles-declined`||e.project.entries.some(e=>e.outcome===`failed`)||e.user.outcome===`done`&&e.user.entries.some(e=>e.outcome===`failed`)?1:0}function L(e){if(e.status===`skipped`)return`Skipped: ${e.reason}`;let t=[`Skill reclaim complete.`];if(e.project.outcome===`done`){let n=e.project.entries.filter(e=>e.outcome===`reclaimed`).length,r=e.project.entries.filter(e=>e.outcome===`created`).length,i=e.project.entries.filter(e=>e.outcome===`no-token`).length,a=e.project.entries.filter(e=>e.outcome===`failed`).length;t.push(` Project: ${n} reclaimed, ${r} created, ${i} no-token, ${a} failed.`)}else t.push(` Project: skipped (${e.project.reason}).`);if(e.user.outcome===`done`){let n=e.user.entries.filter(e=>e.outcome===`written`||e.outcome===`overwritten`).length,r=e.user.entries.filter(e=>e.outcome===`skipped-host-absent`||e.outcome===`skipped-collapsed-with-central`).length,i=e.user.entries.filter(e=>e.outcome===`failed`).length;t.push(` User (${e.user.version}): ${n} written, ${r} skipped, ${i} failed.`)}else t.push(` User: skipped (${e.user.reason}).`);return t.join(`
2
2
  `)}function R(){return new m(`repair-skills`).description("Refresh bundled SKILL.md files for installed AI editors (project-local + user-global). Runs automatically during `ok start`; this command forces an explicit sweep.").action(async()=>{let e=await F({projectDir:_(process.cwd()),reclaimDisableEnv:process.env.OK_RECLAIM_DISABLE??null});process.stdout.write(`${L(e)}\n`),process.exitCode=I(e)})}export{R as n,F as t};
3
- //# sourceMappingURL=repair-skills-DnkpKCSB.mjs.map
3
+ //# sourceMappingURL=repair-skills-BaZcFu4I.mjs.map
@@ -0,0 +1 @@
1
+ import{t as e}from"./repair-skills-BaZcFu4I.mjs";export{e as repairSkills};
@@ -1,2 +1,2 @@
1
- import"./src-FuRMJntf.mjs";import{r as e}from"./logger-B7Z8XO-z.mjs";import{dirname as t,join as n,resolve as r}from"node:path";import{closeSync as i,existsSync as a,mkdirSync as o,openSync as s,readFileSync as c,unlinkSync as l,writeFileSync as u,writeSync as d}from"node:fs";import{homedir as f,hostname as p}from"node:os";import{fileURLToPath as m}from"node:url";import{randomUUID as h}from"node:crypto";function g(e){return new URL(e.url??``,`http://localhost`).searchParams}function _(e){let t=e?.code;return typeof t==`string`?t:void 0}const v=/^[A-Za-z0-9-]{8,64}$/;let y=null;function b(e){return n(e??f(),`.ok`,`machine-id`)}function x(n){if(n===void 0&&y!==null)return y;let r=b(n),i=null;try{let e=c(r,`utf-8`).trim();v.test(e)&&(i=e)}catch{}if(i===null){i=h();try{o(t(r),{recursive:!0}),u(r,`${i}\n`,{encoding:`utf-8`,mode:384})}catch(t){e(`machine-id`).warn({path:r,err:t},`Failed to persist ${r} — using an ephemeral per-process id; lock ownership checks will fail closed (collision) instead of recognizing this machine: ${t instanceof Error?t.message:String(t)}`)}}return n===void 0&&(y=i),i}function S(e){try{return process.kill(e,0),!0}catch(e){return!!(e&&typeof e==`object`&&`code`in e&&e.code===`EPERM`)}}function C(e){return!(typeof e!=`number`||!Number.isInteger(e)||e<2||e>2147483647)}function w(){try{let e=r(t(m(import.meta.url)),`..`,`package.json`),n=JSON.parse(c(e,`utf-8`));if(typeof n.version==`string`&&n.version.length>0)return n.version}catch{}return`0.0.0-unknown`}const T=w(),E=1,D=e(`process-lock`);var O=class extends Error{existing;lockPath;lockName;constructor(e,t,n){super(`OpenKnowledge ${n} already running on port ${e.port} (pid ${e.pid}, started ${e.startedAt}). Stop it first or use a different directory. Lock: ${t}`),this.name=`ProcessLockCollisionError`,this.existing=e,this.lockPath=t,this.lockName=n}};function k(e,t){return r(e,`${t}.lock`)}const A=new Map;function j(e){A.set(e,(A.get(e)??0)+1)}function M(e){let t=A.get(e);return t===void 0||t<=1?(A.delete(e),!0):(A.set(e,t-1),!1)}function N(e){return typeof e.machineId==`string`?e.machineId===x():e.hostname===p()}const P=new Set;let F=!1;function I(e){P.add(e),!F&&(F=!0,process.on(`exit`,()=>{for(let e of P)try{let t=JSON.parse(c(e,`utf-8`));if(t?.pid!==process.pid||typeof t.machineId==`string`&&t.machineId!==x()||t.machineId===void 0&&typeof t.hostname==`string`&&t.hostname!==p())continue;l(e)}catch{}}))}function L(e,t){try{let n=JSON.parse(c(e,`utf-8`));return n&&typeof n==`object`&&C(n.pid)?n:(D.warn({lockPath:e},`${t} Corrupt lock file at ${e} — replacing`),null)}catch{return D.warn({lockPath:e},`${t} Corrupt lock file at ${e} — replacing`),null}}function R(e){let{lockName:t,lockDir:n,metadata:r}=e,c=`[${t}-lock]`;o(n,{recursive:!0});let f=k(n,t),m={pid:process.pid,hostname:p(),port:r.port,startedAt:new Date().toISOString(),worktreeRoot:r.worktreeRoot,machineId:x(),...r.kind!==void 0&&{kind:r.kind},...r.parentPid!==void 0&&{parentPid:r.parentPid},...r.capabilities!==void 0&&{capabilities:r.capabilities},protocolVersion:r.protocolVersion??1,runtimeVersion:r.runtimeVersion??T},h=JSON.stringify(m,null,2);for(let e=0;e<3;e++){if(!a(f))try{let e=s(f,`wx`,384);try{d(e,h)}finally{i(e)}return j(f),I(f),z({lockName:t,lockDir:n,lockPath:f})}catch(e){if(_(e)!==`EEXIST`)throw e}let e=L(f,c);if(e){if(N(e)&&e.pid===process.pid)return u(f,h,{encoding:`utf-8`,mode:384}),j(f),I(f),z({lockName:t,lockDir:n,lockPath:f});if(S(e.pid))throw new O(e,f,t);D.warn({pid:e.pid,host:e.hostname},`${c} Stale lock detected (pid=${e.pid}, host=${e.hostname}) — replacing`)}try{l(f)}catch{}}throw Error(`${c} Failed to acquire ${f} after 3 attempts (concurrent acquire contention).`)}function z(e){let{lockName:t,lockDir:n,lockPath:r}=e;return{lockPath:r,release:()=>G({lockName:t,lockDir:n}),updatePort:e=>B({lockName:t,lockDir:n,port:e})}}function B(e){let{lockName:t,lockDir:n,port:r}=e,i=`[${t}-lock]`,o=k(n,t);if(!a(o)){D.warn({lockPath:o},`${i} Lock file missing at ${o} during port update — skipping`);return}let s;try{let e=JSON.parse(c(o,`utf-8`));if(!e||typeof e!=`object`||!C(e.pid)){D.warn({lockPath:o},`${i} Corrupt lock at ${o} during port update — skipping`);return}s=e}catch{D.warn({lockPath:o},`${i} Unreadable lock at ${o} during port update — skipping`);return}if(s.pid===process.pid&&N(s)){s.port=r;try{u(o,JSON.stringify(s,null,2),{encoding:`utf-8`,mode:384})}catch(e){D.warn({lockPath:o,err:e},`${i} Failed to update port in ${o}: ${e instanceof Error?e.message:String(e)}`)}}}function V(e){let{lockName:t,lockDir:n}=e,r=`[${t}-lock]`,i=k(n,t);if((A.get(i)??0)>1)return;let a;try{let e=JSON.parse(c(i,`utf-8`));if(!e||typeof e!=`object`||!C(e.pid)){D.warn({lockPath:i},`${r} Corrupt lock at ${i} during draining mark — skipping`);return}a=e}catch(e){_(e)!==`ENOENT`&&D.warn({lockPath:i,err:e},`${r} Unreadable lock at ${i} during draining mark — skipping: ${e instanceof Error?e.message:String(e)}`);return}if(a.pid===process.pid&&N(a)&&a.draining!==!0){a.draining=!0;try{u(i,JSON.stringify(a,null,2),{encoding:`utf-8`,mode:384})}catch(e){D.warn({lockPath:i,err:e},`${r} Failed to mark ${i} draining: ${e instanceof Error?e.message:String(e)}`)}}}function H(e){let{lockName:t,lockDir:n}=e,r=k(n,t);if(!a(r))return null;let i;try{let e=JSON.parse(c(r,`utf-8`));if(!e||typeof e!=`object`||!C(e.pid))return null;i=e}catch{return null}if(!N(i))return null;if(!S(i.pid)){try{l(r)}catch{}return null}return i}function U(e){let{lockName:t,lockDir:n}=e,r=k(n,t);if(!a(r))return{status:`absent`};let i;try{i=JSON.parse(c(r,`utf-8`))}catch{return{status:`incompatible`,reason:`corrupt`,raw:void 0}}if(!i||typeof i!=`object`)return{status:`incompatible`,reason:`corrupt`,raw:i};let o=i;if(!C(o.pid)||typeof o.hostname!=`string`||typeof o.port!=`number`||typeof o.startedAt!=`string`||typeof o.worktreeRoot!=`string`)return{status:`incompatible`,reason:`corrupt`,raw:i};let s={pid:o.pid,hostname:o.hostname,port:o.port,startedAt:o.startedAt,worktreeRoot:o.worktreeRoot,machineId:typeof o.machineId==`string`?o.machineId:void 0,draining:o.draining===!0?!0:void 0,protocolVersion:typeof o.protocolVersion==`number`?o.protocolVersion:void 0,runtimeVersion:typeof o.runtimeVersion==`string`?o.runtimeVersion:void 0};if(!N(s))return{status:`stale`,lock:s};if(!S(s.pid)){try{l(r)}catch{}return{status:`stale`,lock:s}}return s.protocolVersion===void 0||s.runtimeVersion===void 0?{status:`incompatible`,reason:`missing-fields`,raw:i}:{status:`live`,lock:s}}async function W(e){let{lockName:t,lockDir:n}=e,r=e.timeoutMs??1e4,i=e.pollIntervalMs??100,a=e.readLock??(()=>H({lockName:t,lockDir:n})),o=e.sleep??(e=>new Promise(t=>setTimeout(t,e))),s=a();if(s===null||s.draining!==!0)return`no-drain`;let c=Date.now()+r;for(;Date.now()<c;){await o(i);let e=a();if(e===null)return`released`;if(e.draining!==!0)return`no-drain`}return`timeout`}function G(e){let{lockName:t,lockDir:n,deferUnlinkToExit:r=!1}=e,i=`[${t}-lock]`,o=k(n,t);if(M(o)){if(r){V({lockName:t,lockDir:n});return}if(a(o))try{let e=JSON.parse(c(o,`utf-8`));if(!e||typeof e!=`object`||typeof e.pid!=`number`||e.pid!==process.pid||!N(e))return;l(o),P.delete(o)}catch(e){D.warn({lockPath:o,err:e},`${i} Failed to release ${o}: ${e instanceof Error?e.message:String(e)}`)}}}var K=class extends O{constructor(e,t){super(e,t,`server`),this.name=`ServerLockCollisionError`}};function q(e,t){try{return R({lockName:`server`,lockDir:e,metadata:t}).lockPath}catch(e){throw e instanceof O&&e.lockName===`server`?new K(e.existing,e.lockPath):e}}function J(e,t){B({lockName:`server`,lockDir:e,port:t})}function Y(e){return H({lockName:`server`,lockDir:e})}function X(e,t){G({lockName:`server`,lockDir:e,...t})}function Z(e){V({lockName:`server`,lockDir:e})}function Q(e,t){return W({lockName:`server`,lockDir:e,...t})}export{g as S,E as _,X as a,x as b,O as c,V as d,H as f,T as g,B as h,Y as i,R as l,G as m,q as n,J as o,U as p,Z as r,Q as s,K as t,k as u,S as v,_ as x,C as y};
2
- //# sourceMappingURL=server-lock-1KyShewk.mjs.map
1
+ import"./src-BTo9m5ju.mjs";import{r as e}from"./logger-B7Z8XO-z.mjs";import{dirname as t,join as n,resolve as r}from"node:path";import{closeSync as i,existsSync as a,mkdirSync as o,openSync as s,readFileSync as c,unlinkSync as l,writeFileSync as u,writeSync as d}from"node:fs";import{homedir as f,hostname as p}from"node:os";import{fileURLToPath as m}from"node:url";import{randomUUID as h}from"node:crypto";function g(e){return new URL(e.url??``,`http://localhost`).searchParams}function _(e){let t=e?.code;return typeof t==`string`?t:void 0}const v=/^[A-Za-z0-9-]{8,64}$/;let y=null;function b(e){return n(e??f(),`.ok`,`machine-id`)}function x(n){if(n===void 0&&y!==null)return y;let r=b(n),i=null;try{let e=c(r,`utf-8`).trim();v.test(e)&&(i=e)}catch{}if(i===null){i=h();try{o(t(r),{recursive:!0}),u(r,`${i}\n`,{encoding:`utf-8`,mode:384})}catch(t){e(`machine-id`).warn({path:r,err:t},`Failed to persist ${r} — using an ephemeral per-process id; lock ownership checks will fail closed (collision) instead of recognizing this machine: ${t instanceof Error?t.message:String(t)}`)}}return n===void 0&&(y=i),i}function S(e){try{return process.kill(e,0),!0}catch(e){return!!(e&&typeof e==`object`&&`code`in e&&e.code===`EPERM`)}}function C(e){return!(typeof e!=`number`||!Number.isInteger(e)||e<2||e>2147483647)}function w(){try{let e=r(t(m(import.meta.url)),`..`,`package.json`),n=JSON.parse(c(e,`utf-8`));if(typeof n.version==`string`&&n.version.length>0)return n.version}catch{}return`0.0.0-unknown`}const T=w(),E=1,D=e(`process-lock`);var O=class extends Error{existing;lockPath;lockName;constructor(e,t,n){super(`OpenKnowledge ${n} already running on port ${e.port} (pid ${e.pid}, started ${e.startedAt}). Stop it first or use a different directory. Lock: ${t}`),this.name=`ProcessLockCollisionError`,this.existing=e,this.lockPath=t,this.lockName=n}};function k(e,t){return r(e,`${t}.lock`)}const A=new Map;function j(e){A.set(e,(A.get(e)??0)+1)}function M(e){let t=A.get(e);return t===void 0||t<=1?(A.delete(e),!0):(A.set(e,t-1),!1)}function N(e){return typeof e.machineId==`string`?e.machineId===x():e.hostname===p()}const P=new Set;let F=!1;function I(e){P.add(e),!F&&(F=!0,process.on(`exit`,()=>{for(let e of P)try{let t=JSON.parse(c(e,`utf-8`));if(t?.pid!==process.pid||typeof t.machineId==`string`&&t.machineId!==x()||t.machineId===void 0&&typeof t.hostname==`string`&&t.hostname!==p())continue;l(e)}catch{}}))}function L(e,t){try{let n=JSON.parse(c(e,`utf-8`));return n&&typeof n==`object`&&C(n.pid)?n:(D.warn({lockPath:e},`${t} Corrupt lock file at ${e} — replacing`),null)}catch{return D.warn({lockPath:e},`${t} Corrupt lock file at ${e} — replacing`),null}}function R(e){let{lockName:t,lockDir:n,metadata:r}=e,c=`[${t}-lock]`;o(n,{recursive:!0});let f=k(n,t),m={pid:process.pid,hostname:p(),port:r.port,startedAt:new Date().toISOString(),worktreeRoot:r.worktreeRoot,machineId:x(),...r.kind!==void 0&&{kind:r.kind},...r.parentPid!==void 0&&{parentPid:r.parentPid},...r.capabilities!==void 0&&{capabilities:r.capabilities},protocolVersion:r.protocolVersion??1,runtimeVersion:r.runtimeVersion??T},h=JSON.stringify(m,null,2);for(let e=0;e<3;e++){if(!a(f))try{let e=s(f,`wx`,384);try{d(e,h)}finally{i(e)}return j(f),I(f),z({lockName:t,lockDir:n,lockPath:f})}catch(e){if(_(e)!==`EEXIST`)throw e}let e=L(f,c);if(e){if(N(e)&&e.pid===process.pid)return u(f,h,{encoding:`utf-8`,mode:384}),j(f),I(f),z({lockName:t,lockDir:n,lockPath:f});if(S(e.pid))throw new O(e,f,t);D.warn({pid:e.pid,host:e.hostname},`${c} Stale lock detected (pid=${e.pid}, host=${e.hostname}) — replacing`)}try{l(f)}catch{}}throw Error(`${c} Failed to acquire ${f} after 3 attempts (concurrent acquire contention).`)}function z(e){let{lockName:t,lockDir:n,lockPath:r}=e;return{lockPath:r,release:()=>G({lockName:t,lockDir:n}),updatePort:e=>B({lockName:t,lockDir:n,port:e})}}function B(e){let{lockName:t,lockDir:n,port:r}=e,i=`[${t}-lock]`,o=k(n,t);if(!a(o)){D.warn({lockPath:o},`${i} Lock file missing at ${o} during port update — skipping`);return}let s;try{let e=JSON.parse(c(o,`utf-8`));if(!e||typeof e!=`object`||!C(e.pid)){D.warn({lockPath:o},`${i} Corrupt lock at ${o} during port update — skipping`);return}s=e}catch{D.warn({lockPath:o},`${i} Unreadable lock at ${o} during port update — skipping`);return}if(s.pid===process.pid&&N(s)){s.port=r;try{u(o,JSON.stringify(s,null,2),{encoding:`utf-8`,mode:384})}catch(e){D.warn({lockPath:o,err:e},`${i} Failed to update port in ${o}: ${e instanceof Error?e.message:String(e)}`)}}}function V(e){let{lockName:t,lockDir:n}=e,r=`[${t}-lock]`,i=k(n,t);if((A.get(i)??0)>1)return;let a;try{let e=JSON.parse(c(i,`utf-8`));if(!e||typeof e!=`object`||!C(e.pid)){D.warn({lockPath:i},`${r} Corrupt lock at ${i} during draining mark — skipping`);return}a=e}catch(e){_(e)!==`ENOENT`&&D.warn({lockPath:i,err:e},`${r} Unreadable lock at ${i} during draining mark — skipping: ${e instanceof Error?e.message:String(e)}`);return}if(a.pid===process.pid&&N(a)&&a.draining!==!0){a.draining=!0;try{u(i,JSON.stringify(a,null,2),{encoding:`utf-8`,mode:384})}catch(e){D.warn({lockPath:i,err:e},`${r} Failed to mark ${i} draining: ${e instanceof Error?e.message:String(e)}`)}}}function H(e){let{lockName:t,lockDir:n}=e,r=k(n,t);if(!a(r))return null;let i;try{let e=JSON.parse(c(r,`utf-8`));if(!e||typeof e!=`object`||!C(e.pid))return null;i=e}catch{return null}if(!N(i))return null;if(!S(i.pid)){try{l(r)}catch{}return null}return i}function U(e){let{lockName:t,lockDir:n}=e,r=k(n,t);if(!a(r))return{status:`absent`};let i;try{i=JSON.parse(c(r,`utf-8`))}catch{return{status:`incompatible`,reason:`corrupt`,raw:void 0}}if(!i||typeof i!=`object`)return{status:`incompatible`,reason:`corrupt`,raw:i};let o=i;if(!C(o.pid)||typeof o.hostname!=`string`||typeof o.port!=`number`||typeof o.startedAt!=`string`||typeof o.worktreeRoot!=`string`)return{status:`incompatible`,reason:`corrupt`,raw:i};let s={pid:o.pid,hostname:o.hostname,port:o.port,startedAt:o.startedAt,worktreeRoot:o.worktreeRoot,machineId:typeof o.machineId==`string`?o.machineId:void 0,draining:o.draining===!0?!0:void 0,protocolVersion:typeof o.protocolVersion==`number`?o.protocolVersion:void 0,runtimeVersion:typeof o.runtimeVersion==`string`?o.runtimeVersion:void 0};if(!N(s))return{status:`stale`,lock:s};if(!S(s.pid)){try{l(r)}catch{}return{status:`stale`,lock:s}}return s.protocolVersion===void 0||s.runtimeVersion===void 0?{status:`incompatible`,reason:`missing-fields`,raw:i}:{status:`live`,lock:s}}async function W(e){let{lockName:t,lockDir:n}=e,r=e.timeoutMs??1e4,i=e.pollIntervalMs??100,a=e.readLock??(()=>H({lockName:t,lockDir:n})),o=e.sleep??(e=>new Promise(t=>setTimeout(t,e))),s=a();if(s===null||s.draining!==!0)return`no-drain`;let c=Date.now()+r;for(;Date.now()<c;){await o(i);let e=a();if(e===null)return`released`;if(e.draining!==!0)return`no-drain`}return`timeout`}function G(e){let{lockName:t,lockDir:n,deferUnlinkToExit:r=!1}=e,i=`[${t}-lock]`,o=k(n,t);if(M(o)){if(r){V({lockName:t,lockDir:n});return}if(a(o))try{let e=JSON.parse(c(o,`utf-8`));if(!e||typeof e!=`object`||typeof e.pid!=`number`||e.pid!==process.pid||!N(e))return;l(o),P.delete(o)}catch(e){D.warn({lockPath:o,err:e},`${i} Failed to release ${o}: ${e instanceof Error?e.message:String(e)}`)}}}var K=class extends O{constructor(e,t){super(e,t,`server`),this.name=`ServerLockCollisionError`}};function q(e,t){try{return R({lockName:`server`,lockDir:e,metadata:t}).lockPath}catch(e){throw e instanceof O&&e.lockName===`server`?new K(e.existing,e.lockPath):e}}function J(e,t){B({lockName:`server`,lockDir:e,port:t})}function Y(e){return H({lockName:`server`,lockDir:e})}function X(e,t){G({lockName:`server`,lockDir:e,...t})}function Z(e){V({lockName:`server`,lockDir:e})}function Q(e,t){return W({lockName:`server`,lockDir:e,...t})}export{g as S,E as _,X as a,x as b,O as c,V as d,H as f,T as g,B as h,Y as i,R as l,G as m,q as n,J as o,U as p,Z as r,Q as s,K as t,k as u,S as v,_ as x,C as y};
2
+ //# sourceMappingURL=server-lock-BiAmhJ19.mjs.map
@@ -0,0 +1 @@
1
+ import{a as e,o as t,r as n}from"./server-lock-BiAmhJ19.mjs";export{n as markServerLockDraining,e as releaseServerLock,t as updateServerLockPort};