@inkeep/open-knowledge 0.48.0 → 0.48.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{acp-harness-probe-ctlLmc6O.mjs → acp-harness-probe-CT_w386x.mjs} +2 -2
- package/dist/cli.mjs +6 -6
- package/dist/constants-CjTU1pBu.mjs +2 -0
- package/dist/index.mjs +1 -1
- package/dist/{init-D7RfHtp_.mjs → init-BqijV4oE.mjs} +3 -3
- package/dist/init-ZA4XaTeF.mjs +1 -0
- package/dist/{launch-json-removal-DphNv7be.mjs → launch-json-removal-CQeMmMgV.mjs} +2 -2
- package/dist/{loader-BtbydYPt.mjs → loader-DrVZy9sg.mjs} +2 -2
- package/dist/loader-gW1YeS2_.mjs +1 -0
- package/dist/{preview-CAWFRCJt.mjs → preview-D59JrWsR.mjs} +2 -2
- package/dist/preview-H5VpQ0aR.mjs +1 -0
- package/dist/public/assets/{ActivityModeContent-C3ip7dNC.js → ActivityModeContent-Ls6Ii2AR.js} +1 -1
- package/dist/public/assets/{AgentDiffPane-Wi29jCni.js → AgentDiffPane-CRYL--uE.js} +1 -1
- package/dist/public/assets/{AgentThreadClientBinder-FT8wNbjk.js → AgentThreadClientBinder-DkJCXESC.js} +1 -1
- package/dist/public/assets/{ChangedOutsideBadge-C0FXh0Oi.js → ChangedOutsideBadge-C7ib2CLj.js} +1 -1
- package/dist/public/assets/{CodeMirrorPropInput-BQoCzCdy.js → CodeMirrorPropInput-TJBj2ROv.js} +1 -1
- package/dist/public/assets/{DocumentContext-CP7yqH5z.js → DocumentContext-x5CUxxhI.js} +1 -1
- package/dist/public/assets/{EditorModeToggle-NV902SqC.js → EditorModeToggle-Bzur2AVh.js} +1 -1
- package/dist/public/assets/{EnableSyncConfirmDialog-B3txwN8d.js → EnableSyncConfirmDialog-Znrf_6pT.js} +1 -1
- package/dist/public/assets/FeedbackForm-DMTgXOQ0.js +1 -0
- package/dist/public/assets/{GraphPanel-z_BpNtFU.js → GraphPanel-WI6aG2BT.js} +1 -1
- package/dist/public/assets/{ImportSkillDialog-JqA7a0sU.js → ImportSkillDialog-DbA_I30Z.js} +1 -1
- package/dist/public/assets/{LintConfigEditor-SRropTDk.js → LintConfigEditor-DtuTsRPs.js} +1 -1
- package/dist/public/assets/{ManagedArtifactProperties-B0bIS4IP.js → ManagedArtifactProperties-673wYJvM.js} +1 -1
- package/dist/public/assets/ManagedArtifactProperties-CrJ02738.js +1 -0
- package/dist/public/assets/{McpConsentDialogBody-BiF_k0VW.js → McpConsentDialogBody-BP8KTHru.js} +1 -1
- package/dist/public/assets/{MermaidDocEditor-DkkZ1470.js → MermaidDocEditor-CnjxdTzJ.js} +1 -1
- package/dist/public/assets/{ReportBugDialogBody-CtlgCQX3.js → ReportBugDialogBody-DcEMoxKz.js} +1 -1
- package/dist/public/assets/{SchemaConfigEditor-DOmoubBM.js → SchemaConfigEditor-DzyMGxmc.js} +1 -1
- package/dist/public/assets/{SessionsHost-CFGRv_pY.js → SessionsHost-31LO23Wl.js} +2 -2
- package/dist/public/assets/{SettingsDialogBody-D_1DunuR.js → SettingsDialogBody-DzlQ13IX.js} +1 -1
- package/dist/public/assets/{ShareBranchSwitchDialog-DYf_N6bq.js → ShareBranchSwitchDialog-DSnG7Vwo.js} +1 -1
- package/dist/public/assets/{ShareReceiveDialog-ayJ6qYFK.js → ShareReceiveDialog-hp8-_wD0.js} +1 -1
- package/dist/public/assets/{ShareReceiveMissDialog-OcYPcuBz.js → ShareReceiveMissDialog-Cw4ZtAVB.js} +1 -1
- package/dist/public/assets/{SkillEditBanner-DBJEqMg4.js → SkillEditBanner-CWVFuS5L.js} +1 -1
- package/dist/public/assets/{SkillOriginInline-FJ-Hk1Uz.js → SkillOriginInline-C5BvTKcL.js} +1 -1
- package/dist/public/assets/{SkillToolbarControls-DvoPtfHF.js → SkillToolbarControls-B137QbKv.js} +1 -1
- package/dist/public/assets/{SourceEditor-CeQc0tTS.js → SourceEditor-7UYreAPX.js} +1 -1
- package/dist/public/assets/{TerminalPanel-DN4Eag17.js → TerminalPanel-Bb4mBhjy.js} +1 -1
- package/dist/public/assets/{TerminalWindowApp-CPjZ5xvY.js → TerminalWindowApp-CVRgfXzw.js} +1 -1
- package/dist/public/assets/{TextDocEditor-gUC9Hdas.js → TextDocEditor-DRxNsWPL.js} +1 -1
- package/dist/public/assets/{ThreadView-CPLWVyZk.js → ThreadView-lR-GvL11.js} +1 -1
- package/dist/public/assets/{TimelineDiffPane-CH9Paxeb.js → TimelineDiffPane-eky-61qS.js} +1 -1
- package/dist/public/assets/{agent-diff-store-c2pI-IqS.js → agent-diff-store-k2Na1UuM.js} +1 -1
- package/dist/public/assets/{agent-visibility-p6xMSDdk.js → agent-visibility-BdUDvgZz.js} +1 -1
- package/dist/public/assets/{auth-state-cache-khzbb5gf.js → auth-state-cache-DGUqbXC_.js} +1 -1
- package/dist/public/assets/{client-version-1hLDBtWZ.js → client-version-BK_KR7U_.js} +1 -1
- package/dist/public/assets/{comment-chips-GFaq2hJN.js → comment-chips-BPKPgIfD.js} +1 -1
- package/dist/public/assets/{config-context-JFJadbOg.js → config-context-BQkCAyV-.js} +1 -1
- package/dist/public/assets/{config-provider-GgI7K6tF.js → config-provider-BxPJaWVp.js} +1 -1
- package/dist/public/assets/{dist-D0lKV18u2.js → dist-B1W6XlK32.js} +1 -1
- package/dist/public/assets/{doc-paths-BuYvs-Sl.js → doc-paths-BPPZUgg6.js} +1 -1
- package/dist/public/assets/{documents-events-CZXYlWJs.js → documents-events-yek6VMZz.js} +1 -1
- package/dist/public/assets/{file-tree-adapter-VPm5Cnie.js → file-tree-adapter-3ja1qlJs.js} +1 -1
- package/dist/public/assets/{file-tree-utils-DEJGOhLm.js → file-tree-utils-Bl84nllO.js} +1 -1
- package/dist/public/assets/{folder-config-api-CkzVN79U.js → folder-config-api-DsCcuh72.js} +1 -1
- package/dist/public/assets/{follow-file-Dlt39wWC.js → follow-file-DFcAxjow.js} +1 -1
- package/dist/public/assets/{globals-i3eL0jPG.js → globals-DTeKgG7r.js} +1 -1
- package/dist/public/assets/{index-CUE-YCY2.js → index-DoaRsdsH.js} +108 -108
- package/dist/public/assets/{lint-config-client-CKLyoxWn.js → lint-config-client-CbBNbz5z.js} +1 -1
- package/dist/public/assets/{markdownlint-rule-browser-BJyF5XvC.js → markdownlint-rule-browser-bRkNLTrS.js} +1 -1
- package/dist/public/assets/{navigation-targets-kcw1-114.js → navigation-targets-BekPm3G2.js} +1 -1
- package/dist/public/assets/{open-managed-artifact-tab-CRB-rvl-.js → open-managed-artifact-tab-BIfn2FfR.js} +1 -1
- package/dist/public/assets/{pending-receive-nav-store-yAE2j52e.js → pending-receive-nav-store-B9cFPfgA.js} +1 -1
- package/dist/public/assets/{prop-types-C-VFVfev.js → prop-types-Bhux6LAG.js} +1 -1
- package/dist/public/assets/{receive-store-C3RyDFMU.js → receive-store-B49FgHLW.js} +1 -1
- package/dist/public/assets/{selection-context-BN5sWQOX.js → selection-context-De7RWVbr.js} +1 -1
- package/dist/public/assets/{skill-actions-gJbOdqsR.js → skill-actions-BPyEVJTE.js} +1 -1
- package/dist/public/assets/{skill-scope-DwDLnOOD.js → skill-scope-VJV5Rx86.js} +1 -1
- package/dist/public/assets/{skills-api-BBaU5yMj.js → skills-api-BMRKwBUl.js} +1 -1
- package/dist/public/assets/{src-BFaead-K.js → src-Ch8D3fT_.js} +1 -1
- package/dist/public/assets/{tag-pill-input-T8jCzKA4.js → tag-pill-input-DtKTv6kf.js} +1 -1
- package/dist/public/assets/{target-navigation-intent-ur7EfH9N.js → target-navigation-intent-NvDqDHJ2.js} +1 -1
- package/dist/public/assets/{terminal-launch-events-CIEJD8Ca.js → terminal-launch-events-cjIUscHc.js} +1 -1
- package/dist/public/assets/{terminal-telemetry-D3CzWhx2.js → terminal-telemetry-BoiP_PBP.js} +1 -1
- package/dist/public/assets/typing-burst-detector-VZnl_iVo.js +8 -0
- package/dist/public/assets/{uninstall-Baseq7_l.js → uninstall-Da1ho4P8.js} +1 -1
- package/dist/public/assets/{use-activity-panel-jx8Sg0rQ.js → use-activity-panel-BcGb7XOc.js} +1 -1
- package/dist/public/assets/{use-collab-url-oYOwLAYB.js → use-collab-url-BKsQe4b1.js} +1 -1
- package/dist/public/assets/{use-live-xterm-theme-DEdN-vX3.js → use-live-xterm-theme-CpBGZzBF.js} +1 -1
- package/dist/public/assets/{use-open-skill-BH3vfRE3.js → use-open-skill-BFI8qRZm.js} +1 -1
- package/dist/public/assets/use-settings-route-B15KAQLp.js +1 -0
- package/dist/public/assets/{use-skill-directory-DTKROB4o.js → use-skill-directory-B5pZTEfG.js} +1 -1
- package/dist/public/assets/{use-skill-origin-LsbeWa_R.js → use-skill-origin-CNiZj4lD.js} +1 -1
- package/dist/public/assets/{use-skills-CtCsB6PZ.js → use-skills-nDAfVSei.js} +1 -1
- package/dist/public/assets/{use-terminal-enabled-BArDTeSK.js → use-terminal-enabled-DoIFtYZ1.js} +1 -1
- package/dist/public/assets/{use-timeline-entry-diff-CdswgYxP.js → use-timeline-entry-diff-Cqn9J0oR.js} +1 -1
- package/dist/public/assets/{use-workspace-3mjuTrTC.js → use-workspace-DVmty0IU.js} +1 -1
- package/dist/public/index.html +44 -44
- package/dist/public/uninstall.html +3 -3
- package/dist/{repair-launch-json-Bk6eqKiY.mjs → repair-launch-json-CK4ECoN2.mjs} +2 -2
- package/dist/{repair-mcp-configs-fC8b4vo_.mjs → repair-mcp-configs-B4k9Cb0d.mjs} +2 -2
- package/dist/{src-DRhXUMyd.mjs → src-BBF7yJHq.mjs} +2 -2
- package/dist/{start-DKwEh9gC.mjs → start-CCjGphea.mjs} +2 -2
- package/dist/start-b6dM2IGi.mjs +1 -0
- package/package.json +5 -5
- package/dist/constants-Bc6SmMHz.mjs +0 -2
- package/dist/init-BNMJDizk.mjs +0 -1
- package/dist/loader-C5LD3Ds_.mjs +0 -1
- package/dist/preview-CyyocNeQ.mjs +0 -1
- package/dist/public/assets/FeedbackForm-DVcz7TWB.js +0 -1
- package/dist/public/assets/ManagedArtifactProperties-d28y4KXb.js +0 -1
- package/dist/public/assets/typing-burst-detector-CG82yzgN.js +0 -8
- package/dist/public/assets/use-settings-route-B1Atzr9C.js +0 -1
- package/dist/start-DCnM5DfI.mjs +0 -1
package/dist/public/index.html
CHANGED
|
@@ -70,12 +70,12 @@
|
|
|
70
70
|
-->
|
|
71
71
|
<script>(() => { const isMode = (v) => v === 'light' || v === 'dark' || v === 'system'; const isThemeId = (v) => typeof v === 'string' && /^[a-z0-9-]{1,32}$/.test(v); let pref = 'system'; try { const r = localStorage.getItem('ok-theme-v1'); if (isMode(r)) pref = r; } catch {} let slots = null; try { const raw = localStorage.getItem('ok-color-theme-pair-v1'); if (raw) { const o = JSON.parse(raw); if (o?.light && o?.dark) { slots = o; if (isMode(o.pref)) pref = o.pref; } } } catch {} let dark = pref === 'dark'; if (pref === 'system') { try { dark = window.matchMedia('(prefers-color-scheme: dark)').matches; } catch {} } let ct = null; if (slots) { const slot = dark ? slots.dark : slots.light; if (isThemeId(slot?.id)) { dark = !!slot.dark; if (slot.id !== 'default') ct = slot.id; } } else { try { const c = localStorage.getItem('ok-color-theme-v1'); if (isThemeId(c) && c !== 'default') ct = c; } 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; } 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>
|
|
72
72
|
<style>html { background-color: #fafafa } html.dark { background-color: #171717 }</style>
|
|
73
|
-
<script type="module" crossorigin src="./assets/index-
|
|
73
|
+
<script type="module" crossorigin src="./assets/index-DoaRsdsH.js"></script>
|
|
74
74
|
<link rel="modulepreload" crossorigin href="./assets/chunk-CYidjpOJ.js">
|
|
75
75
|
<link rel="modulepreload" crossorigin href="./assets/dist-CpRBr-Ct.js">
|
|
76
76
|
<link rel="modulepreload" crossorigin href="./assets/react-f2sANaYj.js">
|
|
77
77
|
<link rel="modulepreload" crossorigin href="./assets/react-dom-DPxgxlDT.js">
|
|
78
|
-
<link rel="modulepreload" crossorigin href="./assets/globals-
|
|
78
|
+
<link rel="modulepreload" crossorigin href="./assets/globals-DTeKgG7r.js">
|
|
79
79
|
<link rel="modulepreload" crossorigin href="./assets/preload-helper-Chd9yIcd.js">
|
|
80
80
|
<link rel="modulepreload" crossorigin href="./assets/w3c-keyname-hgmz1BF7.js">
|
|
81
81
|
<link rel="modulepreload" crossorigin href="./assets/dist-zYQJXuRH.js">
|
|
@@ -102,10 +102,10 @@
|
|
|
102
102
|
<link rel="modulepreload" crossorigin href="./assets/trace-api-DH580DYm.js">
|
|
103
103
|
<link rel="modulepreload" crossorigin href="./assets/lib-CtlgmvnR.js">
|
|
104
104
|
<link rel="modulepreload" crossorigin href="./assets/markdownit-DoX6x6DK.js">
|
|
105
|
-
<link rel="modulepreload" crossorigin href="./assets/dist-
|
|
106
|
-
<link rel="modulepreload" crossorigin href="./assets/client-version-
|
|
107
|
-
<link rel="modulepreload" crossorigin href="./assets/config-context-
|
|
108
|
-
<link rel="modulepreload" crossorigin href="./assets/config-provider-
|
|
105
|
+
<link rel="modulepreload" crossorigin href="./assets/dist-B1W6XlK32.js">
|
|
106
|
+
<link rel="modulepreload" crossorigin href="./assets/client-version-BK_KR7U_.js">
|
|
107
|
+
<link rel="modulepreload" crossorigin href="./assets/config-context-BQkCAyV-.js">
|
|
108
|
+
<link rel="modulepreload" crossorigin href="./assets/config-provider-BxPJaWVp.js">
|
|
109
109
|
<link rel="modulepreload" crossorigin href="./assets/dist-Bi80hc1t.js">
|
|
110
110
|
<link rel="modulepreload" crossorigin href="./assets/dist-CR6aO28t.js">
|
|
111
111
|
<link rel="modulepreload" crossorigin href="./assets/dist-DpaqLIPT.js">
|
|
@@ -137,22 +137,22 @@
|
|
|
137
137
|
<link rel="modulepreload" crossorigin href="./assets/switch-0kSGDL9E.js">
|
|
138
138
|
<link rel="modulepreload" crossorigin href="./assets/folder-open-ee990ToL.js">
|
|
139
139
|
<link rel="modulepreload" crossorigin href="./assets/trash-2-Ccq_llrY.js">
|
|
140
|
-
<link rel="modulepreload" crossorigin href="./assets/file-tree-utils-
|
|
141
|
-
<link rel="modulepreload" crossorigin href="./assets/doc-paths-
|
|
142
|
-
<link rel="modulepreload" crossorigin href="./assets/skill-scope-
|
|
143
|
-
<link rel="modulepreload" crossorigin href="./assets/navigation-targets-
|
|
140
|
+
<link rel="modulepreload" crossorigin href="./assets/file-tree-utils-Bl84nllO.js">
|
|
141
|
+
<link rel="modulepreload" crossorigin href="./assets/doc-paths-BPPZUgg6.js">
|
|
142
|
+
<link rel="modulepreload" crossorigin href="./assets/skill-scope-VJV5Rx86.js">
|
|
143
|
+
<link rel="modulepreload" crossorigin href="./assets/navigation-targets-BekPm3G2.js">
|
|
144
144
|
<link rel="modulepreload" crossorigin href="./assets/asset-dispatch-O9x3rXhj.js">
|
|
145
145
|
<link rel="modulepreload" crossorigin href="./assets/external-link-COF7NUCm.js">
|
|
146
146
|
<link rel="modulepreload" crossorigin href="./assets/documents-fetch-DK-kdvYE.js">
|
|
147
|
-
<link rel="modulepreload" crossorigin href="./assets/CodeMirrorPropInput-
|
|
147
|
+
<link rel="modulepreload" crossorigin href="./assets/CodeMirrorPropInput-TJBj2ROv.js">
|
|
148
148
|
<link rel="modulepreload" crossorigin href="./assets/git-branch-B0WeYwW-.js">
|
|
149
149
|
<link rel="modulepreload" crossorigin href="./assets/triangle-alert-V8YoC6ss.js">
|
|
150
150
|
<link rel="modulepreload" crossorigin href="./assets/Mermaid-DT9lZOmy.js">
|
|
151
151
|
<link rel="modulepreload" crossorigin href="./assets/CopyButton-DfXJBl0I.js">
|
|
152
|
-
<link rel="modulepreload" crossorigin href="./assets/documents-events-
|
|
152
|
+
<link rel="modulepreload" crossorigin href="./assets/documents-events-yek6VMZz.js">
|
|
153
153
|
<link rel="modulepreload" crossorigin href="./assets/parse-api-error-BFe1cdS7.js">
|
|
154
154
|
<link rel="modulepreload" crossorigin href="./assets/startup-marks-BJYEMeGu.js">
|
|
155
|
-
<link rel="modulepreload" crossorigin href="./assets/prop-types-
|
|
155
|
+
<link rel="modulepreload" crossorigin href="./assets/prop-types-Bhux6LAG.js">
|
|
156
156
|
<link rel="modulepreload" crossorigin href="./assets/eye-CArKS_Md.js">
|
|
157
157
|
<link rel="modulepreload" crossorigin href="./assets/hash-CDGtqqEo.js">
|
|
158
158
|
<link rel="modulepreload" crossorigin href="./assets/info-BnJuC0vW.js">
|
|
@@ -162,34 +162,34 @@
|
|
|
162
162
|
<link rel="modulepreload" crossorigin href="./assets/file-tree-rename-validation-DEz_ryBu.js">
|
|
163
163
|
<link rel="modulepreload" crossorigin href="./assets/badge-CnYDYmI5.js">
|
|
164
164
|
<link rel="modulepreload" crossorigin href="./assets/input-CtKG6a5B.js">
|
|
165
|
-
<link rel="modulepreload" crossorigin href="./assets/use-collab-url-
|
|
166
|
-
<link rel="modulepreload" crossorigin href="./assets/skills-api-
|
|
167
|
-
<link rel="modulepreload" crossorigin href="./assets/DocumentContext-
|
|
165
|
+
<link rel="modulepreload" crossorigin href="./assets/use-collab-url-BKsQe4b1.js">
|
|
166
|
+
<link rel="modulepreload" crossorigin href="./assets/skills-api-BMRKwBUl.js">
|
|
167
|
+
<link rel="modulepreload" crossorigin href="./assets/DocumentContext-x5CUxxhI.js">
|
|
168
168
|
<link rel="modulepreload" crossorigin href="./assets/format-CFFWVvag.js">
|
|
169
169
|
<link rel="modulepreload" crossorigin href="./assets/braces-PuTG97X6.js">
|
|
170
|
-
<link rel="modulepreload" crossorigin href="./assets/folder-config-api-
|
|
171
|
-
<link rel="modulepreload" crossorigin href="./assets/comment-chips-
|
|
170
|
+
<link rel="modulepreload" crossorigin href="./assets/folder-config-api-DsCcuh72.js">
|
|
171
|
+
<link rel="modulepreload" crossorigin href="./assets/comment-chips-BPKPgIfD.js">
|
|
172
172
|
<link rel="modulepreload" crossorigin href="./assets/textarea-CUVLEZhx.js">
|
|
173
|
-
<link rel="modulepreload" crossorigin href="./assets/selection-context-
|
|
174
|
-
<link rel="modulepreload" crossorigin href="./assets/lint-config-client-
|
|
175
|
-
<link rel="modulepreload" crossorigin href="./assets/use-skills-
|
|
176
|
-
<link rel="modulepreload" crossorigin href="./assets/ManagedArtifactProperties-
|
|
173
|
+
<link rel="modulepreload" crossorigin href="./assets/selection-context-De7RWVbr.js">
|
|
174
|
+
<link rel="modulepreload" crossorigin href="./assets/lint-config-client-CbBNbz5z.js">
|
|
175
|
+
<link rel="modulepreload" crossorigin href="./assets/use-skills-nDAfVSei.js">
|
|
176
|
+
<link rel="modulepreload" crossorigin href="./assets/ManagedArtifactProperties-673wYJvM.js">
|
|
177
177
|
<link rel="modulepreload" crossorigin href="./assets/cursor-W0skD8YU.js">
|
|
178
178
|
<link rel="modulepreload" crossorigin href="./assets/RegisteredAgentIcon-CSZXCqwG.js">
|
|
179
179
|
<link rel="modulepreload" crossorigin href="./assets/folder-DxrU2PLH.js">
|
|
180
180
|
<link rel="modulepreload" crossorigin href="./assets/copilot-CuzHDCzI.js">
|
|
181
|
-
<link rel="modulepreload" crossorigin href="./assets/agent-visibility-
|
|
182
|
-
<link rel="modulepreload" crossorigin href="./assets/use-workspace-
|
|
183
|
-
<link rel="modulepreload" crossorigin href="./assets/ChangedOutsideBadge-
|
|
184
|
-
<link rel="modulepreload" crossorigin href="./assets/use-open-skill-
|
|
185
|
-
<link rel="modulepreload" crossorigin href="./assets/use-settings-route-
|
|
181
|
+
<link rel="modulepreload" crossorigin href="./assets/agent-visibility-BdUDvgZz.js">
|
|
182
|
+
<link rel="modulepreload" crossorigin href="./assets/use-workspace-DVmty0IU.js">
|
|
183
|
+
<link rel="modulepreload" crossorigin href="./assets/ChangedOutsideBadge-C7ib2CLj.js">
|
|
184
|
+
<link rel="modulepreload" crossorigin href="./assets/use-open-skill-BFI8qRZm.js">
|
|
185
|
+
<link rel="modulepreload" crossorigin href="./assets/use-settings-route-B15KAQLp.js">
|
|
186
186
|
<link rel="modulepreload" crossorigin href="./assets/clipboard-adapter-DPkNOslT.js">
|
|
187
|
-
<link rel="modulepreload" crossorigin href="./assets/skill-actions-
|
|
187
|
+
<link rel="modulepreload" crossorigin href="./assets/skill-actions-BPyEVJTE.js">
|
|
188
188
|
<link rel="modulepreload" crossorigin href="./assets/radio-group-CmCnommQ.js">
|
|
189
189
|
<link rel="modulepreload" crossorigin href="./assets/separator-C4EdGs_S.js">
|
|
190
190
|
<link rel="modulepreload" crossorigin href="./assets/toggle-group-DAYvcc1F.js">
|
|
191
191
|
<link rel="modulepreload" crossorigin href="./assets/useQuery-ZeEDLtxh.js">
|
|
192
|
-
<link rel="modulepreload" crossorigin href="./assets/EnableSyncConfirmDialog-
|
|
192
|
+
<link rel="modulepreload" crossorigin href="./assets/EnableSyncConfirmDialog-Znrf_6pT.js">
|
|
193
193
|
<link rel="modulepreload" crossorigin href="./assets/arrow-up-right-Gp4MuO-g.js">
|
|
194
194
|
<link rel="modulepreload" crossorigin href="./assets/case-sensitive-DyF7sIpA.js">
|
|
195
195
|
<link rel="modulepreload" crossorigin href="./assets/chevron-left-BRFq0qcJ.js">
|
|
@@ -198,38 +198,38 @@
|
|
|
198
198
|
<link rel="modulepreload" crossorigin href="./assets/lint-plugin-meta-BnniPb1r.js">
|
|
199
199
|
<link rel="modulepreload" crossorigin href="./assets/panel-UxAkffLp.js">
|
|
200
200
|
<link rel="modulepreload" crossorigin href="./assets/skeleton-DS8zjX9Q.js">
|
|
201
|
-
<link rel="modulepreload" crossorigin href="./assets/typing-burst-detector-
|
|
201
|
+
<link rel="modulepreload" crossorigin href="./assets/typing-burst-detector-VZnl_iVo.js">
|
|
202
202
|
<link rel="modulepreload" crossorigin href="./assets/download-QOlmqXQ8.js">
|
|
203
203
|
<link rel="modulepreload" crossorigin href="./assets/field-iFofWrdC.js">
|
|
204
|
-
<link rel="modulepreload" crossorigin href="./assets/auth-state-cache-
|
|
204
|
+
<link rel="modulepreload" crossorigin href="./assets/auth-state-cache-DGUqbXC_.js">
|
|
205
205
|
<link rel="modulepreload" crossorigin href="./assets/miss-dialog-store-B3cHkf8G.js">
|
|
206
|
-
<link rel="modulepreload" crossorigin href="./assets/pending-receive-nav-store-
|
|
207
|
-
<link rel="modulepreload" crossorigin href="./assets/terminal-launch-events-
|
|
208
|
-
<link rel="modulepreload" crossorigin href="./assets/open-managed-artifact-tab-
|
|
209
|
-
<link rel="modulepreload" crossorigin href="./assets/use-skill-directory-
|
|
206
|
+
<link rel="modulepreload" crossorigin href="./assets/pending-receive-nav-store-B9cFPfgA.js">
|
|
207
|
+
<link rel="modulepreload" crossorigin href="./assets/terminal-launch-events-cjIUscHc.js">
|
|
208
|
+
<link rel="modulepreload" crossorigin href="./assets/open-managed-artifact-tab-BIfn2FfR.js">
|
|
209
|
+
<link rel="modulepreload" crossorigin href="./assets/use-skill-directory-B5pZTEfG.js">
|
|
210
210
|
<link rel="modulepreload" crossorigin href="./assets/panel-right-open-Cc56I_GE.js">
|
|
211
211
|
<link rel="modulepreload" crossorigin href="./assets/square-pen-CEIus1aL.js">
|
|
212
212
|
<link rel="modulepreload" crossorigin href="./assets/undo-2-bYFSgQwb.js">
|
|
213
213
|
<link rel="modulepreload" crossorigin href="./assets/form-CGbOgaUs.js">
|
|
214
|
-
<link rel="modulepreload" crossorigin href="./assets/follow-file-
|
|
214
|
+
<link rel="modulepreload" crossorigin href="./assets/follow-file-DFcAxjow.js">
|
|
215
215
|
<link rel="modulepreload" crossorigin href="./assets/text-viewer-languages-DEjz8Rlz.js">
|
|
216
|
-
<link rel="modulepreload" crossorigin href="./assets/EditorModeToggle-
|
|
216
|
+
<link rel="modulepreload" crossorigin href="./assets/EditorModeToggle-Bzur2AVh.js">
|
|
217
217
|
<link rel="modulepreload" crossorigin href="./assets/ConfigSharingInfoTooltip-BhNgrS2h.js">
|
|
218
218
|
<link rel="modulepreload" crossorigin href="./assets/project-paths--7l9Mqe-.js">
|
|
219
219
|
<link rel="modulepreload" crossorigin href="./assets/SkillModeBanner-DFgrdWyf.js">
|
|
220
|
-
<link rel="modulepreload" crossorigin href="./assets/file-tree-adapter-
|
|
221
|
-
<link rel="modulepreload" crossorigin href="./assets/agent-diff-store-
|
|
222
|
-
<link rel="modulepreload" crossorigin href="./assets/target-navigation-intent-
|
|
223
|
-
<link rel="modulepreload" crossorigin href="./assets/use-live-xterm-theme-
|
|
220
|
+
<link rel="modulepreload" crossorigin href="./assets/file-tree-adapter-3ja1qlJs.js">
|
|
221
|
+
<link rel="modulepreload" crossorigin href="./assets/agent-diff-store-k2Na1UuM.js">
|
|
222
|
+
<link rel="modulepreload" crossorigin href="./assets/target-navigation-intent-NvDqDHJ2.js">
|
|
223
|
+
<link rel="modulepreload" crossorigin href="./assets/use-live-xterm-theme-CpBGZzBF.js">
|
|
224
224
|
<link rel="modulepreload" crossorigin href="./assets/input-group-BgDCDWUR.js">
|
|
225
225
|
<link rel="modulepreload" crossorigin href="./assets/use-installed-clis-B7_xP0xS.js">
|
|
226
|
-
<link rel="modulepreload" crossorigin href="./assets/use-skill-origin-
|
|
227
|
-
<link rel="modulepreload" crossorigin href="./assets/terminal-telemetry-
|
|
226
|
+
<link rel="modulepreload" crossorigin href="./assets/use-skill-origin-CNiZj4lD.js">
|
|
227
|
+
<link rel="modulepreload" crossorigin href="./assets/terminal-telemetry-BoiP_PBP.js">
|
|
228
228
|
<link rel="modulepreload" crossorigin href="./assets/agent-presence-C8KjkxgZ.js">
|
|
229
229
|
<link rel="modulepreload" crossorigin href="./assets/auth-prompt-store-DQ_HcDxh.js">
|
|
230
230
|
<link rel="modulepreload" crossorigin href="./assets/mcp-consent-store-Dz4H-8gV.js">
|
|
231
231
|
<link rel="modulepreload" crossorigin href="./assets/overlay-layers-CBGNHxJK.js">
|
|
232
|
-
<link rel="modulepreload" crossorigin href="./assets/receive-store-
|
|
232
|
+
<link rel="modulepreload" crossorigin href="./assets/receive-store-B49FgHLW.js">
|
|
233
233
|
<link rel="modulepreload" crossorigin href="./assets/timeline-diff-store-sC1fl4YV.js">
|
|
234
234
|
<link rel="stylesheet" crossorigin href="./assets/globals-C_5FVIC1.css">
|
|
235
235
|
<link rel="stylesheet" crossorigin href="./assets/DocumentContext-B0sQn39F.css">
|
|
@@ -32,18 +32,18 @@
|
|
|
32
32
|
script above.
|
|
33
33
|
-->
|
|
34
34
|
<style>html { background-color: #fafafa } html.dark { background-color: #171717 }</style>
|
|
35
|
-
<script type="module" crossorigin src="./assets/uninstall-
|
|
35
|
+
<script type="module" crossorigin src="./assets/uninstall-Da1ho4P8.js"></script>
|
|
36
36
|
<link rel="modulepreload" crossorigin href="./assets/chunk-CYidjpOJ.js">
|
|
37
37
|
<link rel="modulepreload" crossorigin href="./assets/dist-CpRBr-Ct.js">
|
|
38
38
|
<link rel="modulepreload" crossorigin href="./assets/react-f2sANaYj.js">
|
|
39
39
|
<link rel="modulepreload" crossorigin href="./assets/react-dom-DPxgxlDT.js">
|
|
40
|
-
<link rel="modulepreload" crossorigin href="./assets/globals-
|
|
40
|
+
<link rel="modulepreload" crossorigin href="./assets/globals-DTeKgG7r.js">
|
|
41
41
|
<link rel="modulepreload" crossorigin href="./assets/preload-helper-Chd9yIcd.js">
|
|
42
42
|
<link rel="modulepreload" crossorigin href="./assets/trace-api-DH580DYm.js">
|
|
43
43
|
<link rel="modulepreload" crossorigin href="./assets/lib-CtlgmvnR.js">
|
|
44
44
|
<link rel="modulepreload" crossorigin href="./assets/markdownit-DoX6x6DK.js">
|
|
45
45
|
<link rel="modulepreload" crossorigin href="./assets/w3c-keyname-hgmz1BF7.js">
|
|
46
|
-
<link rel="modulepreload" crossorigin href="./assets/dist-
|
|
46
|
+
<link rel="modulepreload" crossorigin href="./assets/dist-B1W6XlK32.js">
|
|
47
47
|
<link rel="modulepreload" crossorigin href="./assets/jsx-runtime-BUgB2tll.js">
|
|
48
48
|
<link rel="modulepreload" crossorigin href="./assets/dist-Nvb76hAm.js">
|
|
49
49
|
<link rel="modulepreload" crossorigin href="./assets/dist-DUWYPul7.js">
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{t as e}from"./launch-json-removal-
|
|
2
|
-
//# sourceMappingURL=repair-launch-json-
|
|
1
|
+
import{t as e}from"./launch-json-removal-CQeMmMgV.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-CK4ECoN2.mjs.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as e,g as t,s as n}from"./write-project-skill-DQTCLDNM.mjs";import{d as r,v as i}from"./init-
|
|
2
|
-
//# sourceMappingURL=repair-mcp-configs-
|
|
1
|
+
import{a as e,g as t,s as n}from"./write-project-skill-DQTCLDNM.mjs";import{d as r,v as i}from"./init-BqijV4oE.mjs";import{t as a}from"./mcp-migrate-event-B1gJf6bG.mjs";import{homedir as o}from"node:os";function s(t){let r=t.logger??u,i=t.home??o(),a=[];if(t.reclaimDisableEnv===`1`)return r({event:`mcp-config-repair-skipped`,reason:`reclaim-disabled`}),{outcomes:a,repairedCount:0};for(let o of e){let e=n[o],s=c(()=>e.configPath(``,i));if(s!==null&&a.push(l({scope:`user`,editorId:o,target:e,home:i,cwd:``,configPath:s,configPathOverride:void 0,logger:r})),e.projectConfigPath){let n=e.projectConfigPath,i=c(()=>n(t.projectDir));i!==null&&a.push(l({scope:`project`,editorId:o,target:e,home:void 0,cwd:t.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(e){let n={scope:e.scope,editorId:e.editorId,configPath:e.configPath},o=r(e.target,e.cwd,e.home,e.configPathOverride);if(o===null)return{...n,outcome:`no-entry`};if(t(o))return{...n,outcome:`canonical`};e.logger(a({scope:e.scope,surface:`cli-repair`,editorId:e.editorId,configPath:e.configPath,priorEntry:o}));let s=i(e.target,e.cwd,{mode:`published`,skipAvailabilityCheck:!0},e.home,e.configPathOverride);if(s.action===`failed`){let t=s.error??`unknown write failure`;return e.logger({event:`mcp-config-repair-write-failed`,scope:e.scope,editorId:e.editorId,configPath:e.configPath,error:t}),{...n,outcome:`write-failed`,error:t}}return s.action===`declined`?(e.logger({event:`mcp-config-repair-declined`,scope:e.scope,editorId:e.editorId,configPath:e.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-B4k9Cb0d.mjs.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{o as e}from"./chunk-DTipWd-i.mjs";import{Y as t}from"./sleep-ByqzSHar.mjs";import{Cs as n,Ss as r,X as i,Z as a,zo as o}from"./src-y-VpYk60.mjs";import{Hr as s,_n as c,at as l,ci as u,it as d,ot as f,rt as p,wa as m}from"./src-BTCvmkZK.mjs";import{O as h,P as g}from"./fs-traced-Cq61rC8q.mjs";import{S as _,u as v,v as y,x as b}from"./server-lock-DQJq-D9V.mjs";import{t as x}from"./yazl-BafwB467.mjs";import{_ as S,g as C,i as w,s as ee,x as te}from"./write-project-skill-DQTCLDNM.mjs";import{c as ne}from"./colors-BsmVIwfM.mjs";import"./acp-harness-probe-
|
|
1
|
+
import{o as e}from"./chunk-DTipWd-i.mjs";import{Y as t}from"./sleep-ByqzSHar.mjs";import{Cs as n,Ss as r,X as i,Z as a,zo as o}from"./src-y-VpYk60.mjs";import{Hr as s,_n as c,at as l,ci as u,it as d,ot as f,rt as p,wa as m}from"./src-BTCvmkZK.mjs";import{O as h,P as g}from"./fs-traced-Cq61rC8q.mjs";import{S as _,u as v,v as y,x as b}from"./server-lock-DQJq-D9V.mjs";import{t as x}from"./yazl-BafwB467.mjs";import{_ as S,g as C,i as w,s as ee,x as te}from"./write-project-skill-DQTCLDNM.mjs";import{c as ne}from"./colors-BsmVIwfM.mjs";import"./acp-harness-probe-CT_w386x.mjs";import{D as T,E,S as re,T as D,_ as O,b as ie,o as ae,v as k}from"./init-BqijV4oE.mjs";import{n as A}from"./constants-CjTU1pBu.mjs";import{t as j}from"./is-object-ByG7RnjH.mjs";import"./loader-DrVZy9sg.mjs";import"./skill-teardown-BQ0YQ9rO.mjs";import"./preview-D59JrWsR.mjs";import{execSync as oe,spawnSync as M}from"node:child_process";import{basename as N,dirname as P,isAbsolute as se,join as F,relative as ce,resolve as I,sep as le}from"node:path";import{cpSync as ue,createWriteStream as de,existsSync as L,lstatSync as fe,mkdirSync as R,mkdtempSync as pe,readFileSync as z,readdirSync as me,readlinkSync as he,rmSync as ge,statSync as _e,writeFileSync as B}from"node:fs";import{arch as ve,freemem as ye,homedir as V,hostname as be,platform as xe,release as Se,tmpdir as Ce,totalmem as we,type as Te,uptime as Ee}from"node:os";import{realpath as H}from"node:fs/promises";import{createHash as De}from"node:crypto";var U=t();const Oe=new Set([`start`,`stop`,`status`,`clean`,`ui`,`mcp`,`preview`,`lint`,`deinit`,`auth`]);function ke(e,t,n=c){if(e!==void 0&&!Oe.has(e))return null;let r=n(t);return r===null||r.distance===0?null:r.rootPath}let Ae=null;function je(e){Ae=e}function Me(){return Ae??process.cwd()}function Ne(){return F(V(),`.ok`,`bug-reports`)}function Pe(e=new Date){let t=e.toISOString().replace(/[:.]/g,`-`),n=Ne(),r=`${t}-bugreport`,i=F(n,`${r}.zip`);for(let e=2;L(i);e+=1)i=F(n,`${r}-${e}.zip`);return i}function Fe(e,t){let n=F(e,`.ok`,`config.yml`);if(L(n))try{let e=z(n,`utf8`).match(/^\s*name:\s*['"]?(.+?)['"]?\s*$/m);if(e?.[1])return e[1]}catch(e){t?.warn({configPath:n,err:e},`bug-report: failed to read .ok/config.yml for project slug; using path-hash fallback`)}return L(F(e,`.ok`))?De(`sha256`).update(I(e)).digest(`hex`).slice(0,12):null}function Ie(){let e={timestamp:new Date().toISOString(),platform:xe(),osType:Te(),osRelease:Se(),hostname:`[redacted]`,uptime:Ee(),freeMem:ye(),totalMem:we(),nodeVersion:process.version,bunVersion:process.versions.bun??null,v8Version:process.versions.v8??null,pid:process.pid};try{e.macosVersion=oe(`sw_vers -productVersion 2>/dev/null`,s({encoding:`utf8`})).trim()}catch{}try{let t=F(__dirname,`..`,`..`,`package.json`);L(t)&&(e.okVersion=JSON.parse(z(t,`utf8`)).version)}catch{}return e}function Le(e,t){return Re(e,t).files}function Re(e,t){if(!L(t))return{files:[]};let n=me(t).filter(e=>e.endsWith(`.log`)||/\.log\.\d+$/.test(e)).map(e=>F(t,e));if(e&&n.length>0){let t=n.filter(t=>{try{return z(t,`utf8`).includes(`"project":"${e}"`)}catch{return!0}});t.length>0&&(n=t)}return{files:n}}function ze(e){let t=F(e,`.ok`,`local`);return L(t)?{files:[`server.lock`,`last-spawn-error.log`,i].map(e=>F(t,e)).filter(e=>L(e))}:{files:[]}}function Be(e){let t=F(e,`.ok`,`local`,`logs`);return L(t)?{files:[`server-current.jsonl`,`server-prev.jsonl`].map(e=>F(t,e)).filter(e=>L(e))}:{files:[]}}function Ve(e){if(e.redact){let{redacted:t,patterns:r,lineCount:i}=n(e.content);e.zipfile.addBuffer(Buffer.from(t,`utf8`),e.name),e.bundleFiles.push(e.name),r.length>0&&e.redactions.push({file:e.name,lineCount:i,patterns:r})}else e.zipfile.addBuffer(Buffer.from(e.content,`utf8`),e.name),e.bundleFiles.push(e.name)}function W(e){for(let t of e.files)try{Ve({zipfile:e.zipfile,name:`${e.prefix}/${N(t)}`,content:z(t,`utf8`),redact:e.redact,bundleFiles:e.bundleFiles,redactions:e.redactions})}catch(n){e.logger?.warn({file:t,prefix:e.prefix,err:n},`bug-report: skipped unreadable file`)}}async function He(t){let{redact:n,outputPath:i,logger:a}=t,o=t.userLogsDir??F(V(),`.ok`,`logs`),s=t.projectDir?Fe(t.projectDir,a):null;R(P(i),{recursive:!0}),a?.info({projectSlug:s},`gathering diagnostic data`);let c=Ie();c.desktop=t.desktop??null;let{files:l}=Re(s,o),{files:u}=t.projectDir?ze(t.projectDir):{files:[]},{files:d}=t.projectDir?Be(t.projectDir):{files:[]};a?.info({logFileCount:l.length,lockFileCount:u.length,localSinkFileCount:d.length},`files collected`);let f=[],p=[],{ZipFile:m}=await import(`./yazl-vwTkB7U0.mjs`).then(t=>e(t.default,1)),h=new m;W({zipfile:h,files:l,prefix:`logs`,redact:n,bundleFiles:p,redactions:f,logger:a}),W({zipfile:h,files:u,prefix:`lockdir`,redact:n,bundleFiles:p,redactions:f,logger:a}),W({zipfile:h,files:d,prefix:`local-logs`,redact:n,bundleFiles:p,redactions:f,logger:a});for(let e of t.extraFiles??[])try{let t=z(e.sourcePath),n=`extra/${e.zipName??N(e.sourcePath)}`;h.addBuffer(t,n),p.push(n)}catch(t){a?.warn({sourcePath:e.sourcePath,err:t},`extra file unreadable; omitted from bundle`)}t.note&&Ve({zipfile:h,name:`note.txt`,content:t.note,redact:n,bundleFiles:p,redactions:f});let g=JSON.stringify(c,null,2);h.addBuffer(Buffer.from(g,`utf8`),`sysinfo.json`),p.push(`sysinfo.json`);let _={generatedAt:new Date().toISOString(),disciplineVersion:`1.0.0`,projectSlug:s,files:p,redactions:f,sysinfo:c};h.addBuffer(Buffer.from(JSON.stringify(_,null,2),`utf8`),`MANIFEST.json`);let v=f.reduce((e,t)=>e+t.lineCount,0),y=[`# Bug Report Bundle`,``,`Generated: ${_.generatedAt}`,`Project: ${s??`(unscoped)`}`,`Discipline version: ${_.disciplineVersion}`,``,`## Contents`,``,...p.map(e=>`- ${e}`),``,`## Privacy`,``,...n?[`This bundle was auto-redacted before packaging.`,`Patterns checked: ${r.join(`, `)}`,v>0?`${v} line(s) were scrubbed across ${f.length} file(s).`:`No redactions were needed.`,`See MANIFEST.json for the full redaction audit report.`,``,`This bundle is safe to attach to a GitHub issue.`]:[`Redaction was disabled for this bundle; file contents are unmodified.`]].join(`
|
|
2
2
|
`);h.addBuffer(Buffer.from(y,`utf8`),`README.md`),h.end();let b=de(i);return h.outputStream.pipe(b),await new Promise((e,t)=>{b.on(`close`,e),b.on(`error`,t)}),a?.info({bundlePath:i,fileCount:p.length,redactionCount:v},`bundle written`),{zipPath:i,summary:{projectSlug:s,files:p,redactions:f,redactedLineCount:v,generatedAt:_.generatedAt}}}var Ue=e(x(),1),G=e(ne(),1);function K(e,t){return t.length===0||!e.includes(t)?e:e.split(t).join(`<CONTENT_DIR>`)}function We(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function q(e,t){if(typeof e==`string`)return K(e,t.contentDir);if(Array.isArray(e))return e.map(e=>q(e,t));if(!We(e))return e;let n={};for(let[r,i]of Object.entries(e))n[r]=q(i,t);return n}function Ge(e,t){let n=z(e,`utf-8`);if(n.length===0)return;let r=n.endsWith(`
|
|
3
3
|
`),i=n.split(`
|
|
4
4
|
`),a=[];for(let e=0;e<i.length;e++){let n=i[e]??``;if(!(e===i.length-1&&n===``)){if(n.length===0){a.push(``);continue}try{let e=q(JSON.parse(n),t);a.push(JSON.stringify(e))}catch{a.push(n)}}}B(e,r?`${a.join(`
|
|
@@ -17,4 +17,4 @@ import{o as e}from"./chunk-DTipWd-i.mjs";import{Y as t}from"./sleep-ByqzSHar.mjs
|
|
|
17
17
|
`).replace(/\n/g,`\r
|
|
18
18
|
`));let u=`${i?``:``}${l}`;return u!==r&&g(e,u,{mode:D(e)}),{kind:`removed`}}function ln(e){return e==null?!1:e.includes(`--type=utility`)&&e.includes(`--utility-sub-type=node.mojom.NodeService`)}function un(e,t=Date.now()){let n=new Date(e).getTime();if(Number.isNaN(n))return`—`;let r=t-n,i=Math.floor(r/1e3);if(i<60)return`${i}s`;let a=Math.floor(i/60);if(a<60)return`${a}m ago`;let o=Math.floor(a/60);return o<24?`${o}h ago`:`${Math.floor(o/24)}d ago`}function dn(e,t,n,r,i,a){if(t.status===`missing`||t.status===`corrupt`)return null;let o=t.lock,s=null;if(n.status!==`missing`&&n.status!==`corrupt`){let e=n.lock;s={port:e.port,status:n.status,pid:e.pid,startedAt:e.startedAt,usage:a}}return{directory:o.worktreeRoot,server:{port:o.port,status:t.status,pid:o.pid,startedAt:o.startedAt,usage:i},ui:s,hostname:o.hostname,lockPath:t.lockPath,binary:r==null?null:d(r),command:r,isDesktop:ln(r)}}function fn(e){return e.ui==null?!1:e.ui.status===`alive`||e.ui.status===`foreign-host`}function Q(e){let t=e.server.status;return t===`alive`||t===`foreign-host`?e.isDesktop?`desktop`:t===`alive`?`running`:`foreign`:t===`dead-pid`&&fn(e)?`ui-orphan`:`stale`}const pn=new Set([`running`,`desktop`,`foreign`,`ui-orphan`]);function mn(e){switch(e){case`running`:return G.default.green(e);case`desktop`:return G.default.blue(e);case`foreign`:return G.default.cyan(e);case`ui-orphan`:return G.default.magenta(e);case`stale`:return G.default.yellow(e)}}function hn(e){return e==null?`—`:`${e.cpuPercent.toFixed(1)}% / ${e.memPercent.toFixed(1)}%`}function gn(e){return`${hn(e.server.usage)} | ${hn(e.ui?.usage??null)}`}function _n(e){return`${e.server.port===0?`(starting)`:String(e.server.port)} / ${e.ui==null||e.ui.status===`dead-pid`?`—`:String(e.ui.port)}`}function vn(e){if(e.length===0)return`No open-knowledge servers found.`;let t=[`DIRECTORY`,`PORTS (API/UI)`,`CPU/MEM (API | UI)`,`STATUS`,`PID`,`STARTED`,`BINARY`],n=e.map(e=>{let t=Q(e),n=t===`ui-orphan`&&e.ui!=null?e.ui.pid:e.server.pid;return[e.directory,_n(e),gn(e),t,String(n),un(e.server.startedAt),e.binary??`—`]}),r=t.length,i=t.map(e=>e.length);for(let e of n)for(let t=0;t<r;t++)i[t]=Math.max(i[t]??0,(e[t]??``).length);let a=t.map((e,t)=>e.padEnd(i[t]??0)).join(` `).trimEnd(),o=e.map((e,t)=>{let a=n[t]??[],o=[];for(let t=0;t<r;t++){let n=(a[t]??``).padEnd(i[t]??0);if(t===3){let r=a[t]??``;n=mn(Q(e))+` `.repeat(Math.max(0,(i[t]??0)-r.length))}o.push(n)}return o.join(` `).trimEnd()}),s=G.default.dim(`To stop a server: ok stop <port|pid|directory|all>`);return[a,...o,``,s].join(`
|
|
19
19
|
`)}async function yn(e={}){let t=e.discover??p,n=e.inspect??Z,r=e.log??(e=>console.log(e)),i=e.resolveCommand??l,a=e.resolveUsage??f,o=await t(),s=[];for(let e of o){let t=n(e,`server`),r=n(e,`ui`),o=dn(e,t,r,t.status===`missing`||t.status===`corrupt`?null:i(t.lock.pid),t.status===`missing`||t.status===`corrupt`?null:a(t.lock.pid),r.status===`missing`||r.status===`corrupt`?null:a(r.lock.pid));o!=null&&s.push(o)}if(e.json){let e=s.map(e=>({...e,displayStatus:Q(e)}));r(JSON.stringify(e,null,2));return}r(vn(e.all?s:s.filter(e=>pn.has(Q(e)))))}function bn(){return new te(`ps`).description(`List all running open-knowledge servers`).argument(`[modifier]`,`"all" to include stale (dead-pid) entries`).option(`--all`,`Include stale (dead-pid) entries (foreign-host shows by default)`).option(`--json`,`Emit structured JSON (always includes all statuses)`).action(async(e,t)=>{await yn({all:t.all===!0||e===`all`,json:t.json===!0})})}function xn(e,t,n={}){let r=n.isAlive??b,i=[];for(let[n,a]of[[`server`,e],[`ui`,t]])(a.status===`alive`||a.status===`foreign-host`&&r(a.lock.pid))&&i.push({name:n,pid:a.lock.pid,port:a.lock.port});return{targets:i}}function Sn(e){let t=e.inspect??(t=>Z(e.lockDir,t)),n=e.kill??((e,t)=>process.kill(e,t)),r=e.log??(e=>console.log(e)),i=e.error??(e=>console.error(e)),a=xn(t(`server`),t(`ui`),{isAlive:e.isAlive});if(a.targets.length===0)return r(`No running open-knowledge processes.`),{stopped:[],failed:[],hadTargets:!1};let o=[],s=[];for(let e of a.targets)try{n(e.pid,`SIGTERM`),o.push(e)}catch(t){s.push({target:e,error:t instanceof Error?t.message:String(t)})}return o.length>0&&r(`Stopped: ${o.map(e=>`${e.name} (pid=${e.pid}, port=${e.port})`).join(`, `)}`),s.length>0&&i(`Failed to stop: ${s.map(({target:e,error:t})=>`${e.name} (pid=${e.pid}): ${t}`).join(`; `)}`),{stopped:o,failed:s,hadTargets:!0}}function $(e,t){return e.status===`alive`?!0:e.status===`foreign-host`?t(e.lock.pid):!1}async function Cn(e,t=b){let n=await p(),r=null;for(let i of n){let n=Z(i,`server`),a=Z(i,`ui`);if($(n,t)&&n.lock.port===e||$(a,t)&&a.lock.port===e)return i;r===null&&($(n,t)&&n.lock.pid===e||$(a,t)&&a.lock.pid===e)&&(r=i)}return r}function wn(e){let t=Sn({lockDir:e});return t.failed.length>0&&(process.exitCode=1),t}function Tn(e){return new te(`stop`).description(`Stop open-knowledge server(s). With no argument: stops the server for the current directory. Pass a port number, a directory path, or "all" to target globally.`).argument(`[target...]`,`port number, directory path (spaces OK), or "all"`).action(async t=>{let n=t.length===0?void 0:t.join(` `);if(n===void 0){e();let t=Sn({lockDir:u(process.cwd()),log:()=>{}});if(t.hadTargets){if(t.stopped.length>0){let e=t.stopped.map(e=>`${e.name} (pid=${e.pid}, port=${e.port})`).join(`, `);console.log(`Stopped: ${e}`)}t.failed.length>0&&(process.exitCode=1)}else await yn({});return}if(n===`all`){let e=await p();if(e.length===0){console.log(`No running open-knowledge servers found.`);return}let t=0;for(let n of e){let e=Z(n,`server`),r=Z(n,`ui`);!$(e,b)&&!$(r,b)||(wn(n),t++)}t===0&&console.log(`No running open-knowledge servers found.`);return}if(/^\d+$/.test(n)){let e=Number.parseInt(n,10),t=await Cn(e);if(t===null){console.log(`No running open-knowledge server found with port or PID ${e}.`);return}wn(t);return}wn(u(I(Me(),n)))})}function En(e){return{event:`mcp-config-decline`,scope:e.scope,surface:e.surface,editorId:e.editorId,reason:e.reason}}async function Dn(e,t){let n,r;try{n=await H(I(e)),r=await H(I(P(e)))}catch{return{kind:`not-git`}}if(!On(n,r))return{kind:`symlink-escape`};let i=F(n,`.git`),a;try{a=_e(i)}catch{return{kind:`not-git`}}if(a.isDirectory()){let e;try{e=await H(i)}catch{return{kind:`not-git`}}if(!On(e,n))return{kind:`symlink-escape`}}else if(!a.isFile())return{kind:`not-git`};let s=m(n);if(s.kind!==`repository`)return{kind:`not-git`};let c=s.repository.readRemoteUrl(`origin`);if(c.kind===`unreadable`)return{kind:`not-git`};if(c.kind===`absent`)return c.reason===`config-missing`?{kind:`not-git`}:{kind:`no-origin`};let l=c.url,u=Wt(l);if(u===null)return{kind:`non-github`};let d=o(u.hostname);if(d===null)return{kind:`non-github`};let f=d===t.host.toLowerCase(),p=u.owner.toLowerCase()===t.owner.toLowerCase(),h=u.name.toLowerCase()===t.repo.toLowerCase();return!f&&p&&h?{kind:`wrong-host`,actualHost:d}:!f||!p||!h?{kind:`wrong-repo`,actualOwner:u.owner,actualRepo:u.name}:{kind:`ok`,gitRemoteUrl:`https://${d}/${u.owner}/${u.name}.git`}}function On(e,t){if(e===t)return!0;let n=ce(t,e);return n.length>0&&!n.startsWith(`..`)&&!se(n)}const kn=[{id:`mcp-config`,write(e,t,n){let r=e.projectConfigPath?.(t);if(!r)return{integration:`mcp-config`,editorId:e.id,action:`skipped-unsupported`};try{let i=k(e,t,n,void 0,r);return i.action===`written`||i.action===`overwritten`?{integration:`mcp-config`,editorId:e.id,action:i.action,path:i.configPath}:i.action===`failed`?{integration:`mcp-config`,editorId:e.id,action:`failed`,path:i.configPath,error:i.error??`unknown failure`}:i.action===`declined`?{integration:`mcp-config`,editorId:e.id,action:`declined`,path:i.configPath,...i.declineReason===void 0?{}:{reason:i.declineReason}}:{integration:`mcp-config`,editorId:e.id,action:`failed`,path:i.configPath,error:`unexpected project-scope action: ${i.action}`}}catch(t){return{integration:`mcp-config`,editorId:e.id,action:`failed`,path:r,error:t instanceof Error?t.message:String(t)}}}},{id:`project-skill`,write(e,t,n){try{let r=w(e,t,{home:n.home});return{integration:`project-skill`,editorId:e.id,action:r.action,...r.path?{path:r.path}:{},...r.error?{error:r.error}:{}}}catch(t){return{integration:`project-skill`,editorId:e.id,action:`failed`,error:t instanceof Error?t.message:String(t)}}}}];function An(e,t,n={},r=kn){let i=[];for(let a of t){let t=ee[a];for(let a of r)i.push(a.write(t,e,n))}return i}function jn(e,t,n={}){return{integrations:An(e,t,n)}}export{Pe as C,ke as D,je as E,zt as S,Me as T,Kt as _,Tn as a,Ht as b,Jt as c,tn as d,Zt as f,qt as g,Gt as h,Sn as i,Xt as l,en as m,Dn as n,bn as o,$t as p,En as r,an as s,jn as t,Yt as u,Wt as v,Ne as w,Rt as x,Z as y};
|
|
20
|
-
//# sourceMappingURL=src-
|
|
20
|
+
//# sourceMappingURL=src-BBF7yJHq.mjs.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{Q as e,Y as t}from"./src-y-VpYk60.mjs";import{Hr as n,Yr as r,a as i,vn as a}from"./src-BTCvmkZK.mjs";import{S as o,x as s}from"./write-project-skill-DQTCLDNM.mjs";import{a as c,n as l,t as u}from"./acp-harness-probe-ctlLmc6O.mjs";import{n as d}from"./constants-Bc6SmMHz.mjs";import{spawn as f}from"node:child_process";import{basename as p,join as m,posix as h,resolve as g,win32 as _}from"node:path";import{closeSync as v,existsSync as y,mkdirSync as b,openSync as x,statSync as S}from"node:fs";import{homedir as C}from"node:os";import{rm as w}from"node:fs/promises";import{setTimeout as T}from"node:timers/promises";function E(e){let t={...e};return delete t.ELECTRON_RUN_AS_NODE,t}function D(e,t,r={}){let i=(r.spawn??f)(e,[...t],n({detached:!0,stdio:`ignore`,env:E(r.env??process.env)}));return i.unref(),i}const O=`OpenKnowledge.app`,k=`/Applications/${O}`;function A(){return{platform:process.platform,env:process.env,execPath:process.execPath,isTTY:process.stdout.isTTY,statSync:e=>{try{return S(e,{throwIfNoEntry:!1})??null}catch{return null}}}}function j(e){if(e.env.ELECTRON_RUN_AS_NODE===`1`){let t=/(.+?\.app)\/Contents\/MacOS\//.exec(e.execPath);if(t?.[1])return t[1]}if(M(e,k))return k;let t=m(e.homeDir??C(),`Applications`,O);return M(e,t)?t:null}function M(e,t){return N(e,m(t,`Contents`,`MacOS`,`OpenKnowledge`))}function N(e,t){try{let n=e.statSync(t);return n&&typeof n.isFile==`function`?n.isFile():!1}catch{return!1}}const ee=[`@inkeepopen-knowledge-desktop`,`OpenKnowledge`];function P(e){if(e.env.ELECTRON_RUN_AS_NODE===`1`&&/\\OpenKnowledge\.exe$/i.test(e.execPath))return e.execPath;let t=e.env.LOCALAPPDATA;if(t)for(let n of ee){let r=_.join(t,`Programs`,n,`OpenKnowledge.exe`);if(N(e,r))return r}return null}function F(e){if(e.env.ELECTRON_RUN_AS_NODE===`1`&&e.execPath.endsWith(`/openknowledge`))return e.execPath;let t=`/opt/OpenKnowledge/openknowledge`;return N(e,t)?t:null}function I(e){if(e.env.OK_FORCE_BROWSER===`1`)return{available:!1,reason:`force-browser`};if(e.platform!==`darwin`&&e.platform!==`win32`&&e.platform!==`linux`)return{available:!1,reason:`unsupported-platform`};let t;try{t=e.platform===`darwin`?j(e):e.platform===`win32`?P(e):F(e)}catch{return{available:!1,reason:`stat-error`}}return t?e.env.OK_FORCE_DESKTOP===`1`?{available:!0,reason:`available`,bundlePath:t}:!(e.isTTY===!0||e.platform===`win32`&&e.isTTY===void 0&&!e.env.CI)||e.env.SSH_CONNECTION||e.env.SSH_TTY||e.platform===`linux`&&!e.env.DISPLAY&&!e.env.WAYLAND_DISPLAY?{available:!1,reason:`headless`,bundlePath:t}:{available:!0,reason:`available`,bundlePath:t}:{available:!1,reason:`no-bundle`}}function L(e,t){let n=e.log??(e=>console.error(e)),r=e.platform??process.platform;if(n("Launching OpenKnowledge desktop (use `ok start` for the browser server, or `OK_FORCE_BROWSER=1` to always skip)"),r===`darwin`){D(`open`,[`-b`,`com.inkeep.open-knowledge`],{spawn:e.spawn});return}let i=t?.bundlePath;if(!i){n(`Desktop launch skipped: no resolved desktop executable (caller bug).`);return}D(i,[],{spawn:e.spawn})}function R(e=`no-bundle`){switch(e){case`no-bundle`:return`Desktop app not found (checked the standard install locations for this OS). Install it, or omit --mode for browser mode.`;case`darwin-only`:case`unsupported-platform`:return`Desktop app is not available on this platform. Use --mode=browser, or omit --mode for the server fallback.`;case`headless`:return`Desktop launch is gated in headless contexts (CI, SSH, non-TTY stdout). Set OK_FORCE_DESKTOP=1 to override, or use --mode=browser.`;case`force-browser`:return`OK_FORCE_BROWSER=1 is set — desktop dispatch is disabled. Unset it to use --mode=app.`;case`stat-error`:return`Failed to inspect the desktop install (filesystem error). Check permissions or use --mode=browser.`;case`available`:return`Desktop app appears available but launch dispatch did not fire (caller bug).`}}function z(e){return h.join(h.dirname(e),`..`,`Frameworks`,`OpenKnowledge Server.app`,`Contents`,`MacOS`,`OpenKnowledge Helper`)}const te=/\/[^/]+\.app\/Contents\/MacOS\/[^/]+$/;function ne(e){if(e.platform!==`darwin`||!te.test(e.execPath))return null;let t=z(e.execPath);return e.exists(t)?t:null}function B(e={}){let t=e.execPath??process.execPath,n=e.platform??process.platform,r=e.argv??process.argv,i=e.exists??y,a=r[1];return a?{command:ne({execPath:t,platform:n,exists:i})??t,prefixArgs:[a]}:(console.warn(`[self-spawn] process.argv[1] is empty — falling back to \`npx -y @inkeep/open-knowledge@latest\`. This re-introduces the registry-fetch surface that re-exec was fixing. Observed argv: ${JSON.stringify(r)}`),{command:`npx`,prefixArgs:[`-y`,`@inkeep/open-knowledge@latest`]})}function V(e,t){return e.host??t.HOST??`127.0.0.1`}function H(e,t){return t&&(e===`::`||e===`::1`||e===`[::1]`||e===`localhost`||e===`0.0.0.0`)?{host:`127.0.0.1`,coerced:!0}:{host:e,coerced:!1}}function U(e){let t=p(e).replace(/[^\x20-\x7E]/g,``).trim().slice(0,64);return`open-knowledge-server ${t.length>0?t:`unknown`}`}var W=class extends Error{cwd;constructor(e){super("This directory isn't set up yet. Run `ok init` first, then `ok start` again."),this.name=`OkDirMissingError`,this.cwd=e}};function G(e){return e.uiLock?e.isAlive(e.uiLock.pid)?{action:`skip`,reason:`alive`,pid:e.uiLock.pid,port:e.uiLock.port}:{action:`spawn`,reason:`stale`,stalePid:e.uiLock.pid}:{action:`spawn`,reason:`absent`}}function K(t){y(t.lockDir)||b(t.lockDir,{recursive:!0});let n=x(m(t.lockDir,e),`w`),r=t.spawn??f,{PORT:i,...a}=process.env,o=B();try{let e=r(o.command,[...o.prefixArgs,...t.args??[`ui`]],{detached:!0,stdio:[`ignore`,`ignore`,n],windowsHide:!0,cwd:t.cwd,env:{...a,ELECTRON_RUN_AS_NODE:`1`}});return e.unref(),e}finally{try{v(n)}catch{}}}function q(e,t,n,r=!1){return e??(n!==void 0||r?void 0:t)}function J(e,t){return e!==void 0&&t!==null&&t.port>0&&t.draining!==!0}function Y(e,t,n){return e??+(t!=null&&!n)}async function X(e){let t=e.spawn??f,n=B(),{PORT:r,...i}=process.env,a=t(n.command,[...n.prefixArgs,`ui`,`--port`,String(e.uiPort)],{cwd:e.cwd,stdio:`inherit`,windowsHide:!0,env:{...i,ELECTRON_RUN_AS_NODE:`1`}}),o=!1,s=e=>{o=!0;try{a.kill(e)}catch{}},c=()=>s(`SIGINT`),l=()=>s(`SIGTERM`);process.once(`SIGINT`,c),process.once(`SIGTERM`,l),await new Promise(e=>{a.on(`exit`,(t,n)=>{process.exitCode=Y(t,n,o),e()}),a.on(`error`,t=>{console.error(`[start] connect fallback: failed to spawn ok ui — ${t instanceof Error?t.message:String(t)}`),process.exitCode=1,e()})}),process.removeListener(`SIGINT`,c),process.removeListener(`SIGTERM`,l)}async function Z(e){let t=e.now()+e.timeoutMs;for(;e.now()<t;){let t=e.readUiLock();if(t&&t.port>0)return t.port;await e.sleep(e.pollIntervalMs)}let n=e.readUiLock();return n&&n.port>0?n.port:null}const re=t;function ie(e,t,n=e=>w(e,{recursive:!0,force:!0})){return async()=>{try{await e()}finally{try{await n(t)}catch(e){process.stderr.write(`[start] ephemeral temp dir reap failed for ${t}: ${e instanceof Error?e.message:String(e)}\n`)}}}}function ae(e,t={}){let n=t.exit??(e=>process.exit(e)),r=t.getActiveHandles??(()=>{let e=process._getActiveHandles;return e?e.call(process):null});return async()=>{let i=!1;try{await e()}catch(e){i=!0,t.log?.error({err:e},`idle-shutdown: destroy failed — exiting anyway`)}finally{let e=null;try{let t=r();if(t!==null){e={};for(let n of t){let t=n?.constructor?.name??`unknown`;e[t]=(e[t]??0)+1}}}catch{e=null}t.log?.info({event:`idle-shutdown-exit`,exitCode:+!!i,openHandles:e??{},handlesAvailable:e!==null},`idle-shutdown: teardown finished — exiting process`),n(+!!i)}}}async function Q(e){let t=e.sigtermGraceMs??re,n=e.sigtermPollIntervalMs??200,r=e.sleep??(e=>T(e)),i=e.reason??`teardown`;try{let a=e.readUiLock(),o=e.spawnedUiPid();if(a&&e.isAlive(a.pid)&&a.pid!==o)e.log?.info({pid:a.pid,port:a.port,spawnedUiPid:o},`${i}: ui.lock holder is not our spawned sibling — leaving it alone`);else if(a&&e.isAlive(a.pid))try{e.killPid(a.pid,`SIGTERM`),e.log?.info({pid:a.pid,port:a.port},`${i}: SIGTERM UI sibling`);let o=Date.now()+t;for(;Date.now()<o&&e.isAlive(a.pid);)await r(n);if(e.isAlive(a.pid))try{e.killPid(a.pid,`SIGKILL`),e.log?.warn({pid:a.pid,graceMs:t},`${i}: SIGTERM grace expired — escalated to SIGKILL`)}catch(t){e.log?.error({pid:a.pid,err:t},`${i}: SIGKILL failed`)}}catch(t){e.log?.warn({pid:a.pid,err:t},`${i}: failed to SIGTERM UI sibling`)}}catch(t){e.log?.warn({err:t},`${i}: UI lookup failed; proceeding`)}}function oe(e){let{destroy:t,...n}=e;return async()=>{await Q({...n,reason:`idle-shutdown`}),await t()}}async function se(e){let{config:t,cwd:n,host:o}=e,s=e.skipAutoInit??!1,d=e.skipUiAutoSpawn??!1,f=e.idleThresholdMs??18e5,{existsSync:p,mkdirSync:m}=await import(`node:fs`),{basename:h,dirname:g}=await import(`node:path`),{bootServer:_,getLogger:v,isProcessAlive:y,readUiLock:b,resolveContentDir:x,resolveLockDir:S,waitForServerLockDrain:C}=await import(`./src-BuZeH4bR.mjs`),w=e.log??v(`start`),E=e.singleFile!==void 0,D=e.projectDir??n,O=E?i(e.singleFile).canonicalFilePath:void 0,k=O?g(O):void 0,A=O?h(O):void 0;if(!E){if(!s&&!a(n))throw new W(n);let t=process.env.OK_RECLAIM_DISABLE??null,r=e=>{let t=typeof e.event==`string`?e.event:``;(t.endsWith(`-failed`)||t.endsWith(`-error`)||t.endsWith(`-missing`))&&w.warn({event:e},`[start] reclaim sweep reported a problem`)};try{(e.repairMcpConfigsFn??(await import(`./repair-mcp-configs-fC8b4vo_.mjs`)).repairMcpConfigs)({projectDir:n,reclaimDisableEnv:t,logger:r})}catch(e){w.warn({err:e},`[start] mcp-config repair sweep failed; continuing`)}try{(e.repairLaunchJsonFn??(await import(`./repair-launch-json-Bk6eqKiY.mjs`)).repairLaunchJson)({projectDir:n,reclaimDisableEnv:t,logger:r})}catch(e){w.warn({err:e},`[start] launch.json repair sweep failed; continuing`)}try{await(e.repairSkillsFn??(await import(`./repair-skills-DT7FGT3w.mjs`)).repairSkills)({projectDir:n,reclaimDisableEnv:t,logger:r})}catch(e){w.warn({err:e},`[start] skill repair sweep failed; continuing`)}}let j=k??x(t,n);!E&&!p(j)&&(m(j,{recursive:!0}),w.info({contentDir:j},`Created content directory`));let M=null,N=null,ee=async({lockDir:t})=>{if(M=G({uiLock:b(t),isAlive:y}),M.action===`spawn`&&!d)try{let r=e.uiPort===void 0?void 0:[`ui`,`--port`,String(e.uiPort)];N=K({lockDir:t,cwd:n,spawn:e.spawn,args:r}).pid??null,w.info({reason:M.reason,uiPort:e.uiPort},`[start] auto-spawned ok ui sibling`)}catch(e){console.warn(`[start] failed to auto-spawn ok ui: ${e instanceof Error?e.message:String(e)}`)}else M.action===`skip`&&w.info({port:M.port,pid:M.pid},`UI already running at port ${M.port}`)},P=e.reactShellDistDir===void 0,F=c(),I=r();{let e=S(E?D:n),t=Date.now(),r=await C(e);r!==`no-drain`&&w.info({event:`start-waited-for-draining-predecessor`,outcome:r,waitedMs:Date.now()-t,drainLockDir:e},r===`released`?`[start] predecessor server finished draining — proceeding`:`[start] predecessor server still draining after wait — proceeding to collide`)}let L=await _({config:t,contentDir:j,projectDir:E?D:n,contentRoot:E?void 0:t.content.dir,port:e.port,host:o,...e.enableRemote===!0?{enableRemote:!0}:{},quiet:!1,detectGh:l,tokenStore:F,embeddingsKeyStore:I,...E?{ephemeral:!0,singleDocRelPath:A,gitEnabled:!1,gitPreflight:()=>({ok:!0,version:`0.0.0`,resolvedPath:`git`,source:`PATH`})}:{},localOpCliArgs:[process.execPath,process.argv[1]],probeHarnessManagedMcpEntry:(e,t)=>u(e,t),attachUiSibling:P,idleShutdownMs:f,skipAutoInit:!0,...P?{spawnUiSiblingFn:ee}:{},idleShutdownHandler:t=>{let n=oe({readUiLock:()=>b(L.lockDir),spawnedUiPid:()=>N,isAlive:y,killPid:(e,t)=>{process.kill(e,t)},destroy:t,log:w});return ae(E?ie(n,D):n,{log:w,exit:e.idleExit})},log:w,...e.serveContentAssets===void 0?{}:{serveContentAssets:e.serveContentAssets},...e.reactShellDistDir?{reactShellDistDir:e.reactShellDistDir}:{}});M||={action:`skip`,reason:`alive`,pid:0,port:0};let R=M,z=null;if(R.action===`skip`)z=R.port>0?R.port:null;else if(!d){let t=e.uiBindTimeoutMs??3e3;z=await Z({readUiLock:()=>b(L.lockDir),now:Date.now,sleep:e=>T(e),timeoutMs:t,pollIntervalMs:50}),z===null&&w.warn({timeoutMs:t},`[start] ok ui did not bind within timeout — banner falls back to API URL`)}return{httpServer:L.httpServer,destroy:L.destroy,lockDir:L.lockDir,contentDir:j,port:L.port,ready:L.ready,degraded:L.degraded,uiSpawnDecision:M,spawnedUiPid:N,resolvedUiPort:z}}function ce(e){if(e===`browser`||e===`app`)return e;throw new o(`--mode must be 'browser' or 'app'`)}function le(e){let t=Number.parseInt(e,10);if(Number.isNaN(t)||t<1||t>65535)throw new o(`--ui-port must be a port number between 1 and 65535`);return t}function ue(e){return e.OK_CONSOLE_LEVEL!==void 0||e.LOG_LEVEL!==void 0?null:`warn`}function $(e){let t=[`Stopping OpenKnowledge…`,`Saving pending changes and releasing the server lock — this can take a few seconds.`];return e===`SIGINT`&&t.push(`Press Ctrl+C again to force quit.`),t}async function de(e,t){let n=ue(process.env);n!==null&&(process.env.OK_CONSOLE_LEVEL=n);let{renderBanner:r}=await import(`./banner-CIK2GwPx.mjs`),{accent:i,dim:a,error:o,warning:s}=await import(`./colors-MGDi6UGf.mjs`),c=process.cwd(),l=t.remote!==void 0&&t.remote!==!1,u=typeof t.remote==`string`?t.remote:void 0,f=u===void 0?e:{...e,remote:{...e.remote,url:u}};process.title=U(c),l&&(typeof f.remote?.url!=`string`||f.remote.url===``)&&(console.error(o("--remote requires a public tunnel URL — pass it (`ok start --remote https://<your-tunnel-host>`) or set remote.url in .ok/config.yml.")),process.exit(78)),l&&console.warn(s([``,`⚠ REMOTE ACCESS ENABLED — no server-side authentication.`,` Anyone who can reach ${f.remote?.url} has FULL control of this`,` knowledge base, including sync, publishing, credentials, and local operations.`,` Restrict who can reach it at the tunnel: ngrok OAuth, Cloudflare Access,`,` Tailscale ACLs, or equivalent edge auth.`,``].join(`
|
|
1
|
+
import{Q as e,Y as t}from"./src-y-VpYk60.mjs";import{Hr as n,Yr as r,a as i,vn as a}from"./src-BTCvmkZK.mjs";import{S as o,x as s}from"./write-project-skill-DQTCLDNM.mjs";import{a as c,n as l,t as u}from"./acp-harness-probe-CT_w386x.mjs";import{n as d}from"./constants-CjTU1pBu.mjs";import{spawn as f}from"node:child_process";import{basename as p,join as m,posix as h,resolve as g,win32 as _}from"node:path";import{closeSync as v,existsSync as y,mkdirSync as b,openSync as x,statSync as S}from"node:fs";import{homedir as C}from"node:os";import{rm as w}from"node:fs/promises";import{setTimeout as T}from"node:timers/promises";function E(e){let t={...e};return delete t.ELECTRON_RUN_AS_NODE,t}function D(e,t,r={}){let i=(r.spawn??f)(e,[...t],n({detached:!0,stdio:`ignore`,env:E(r.env??process.env)}));return i.unref(),i}const O=`OpenKnowledge.app`,k=`/Applications/${O}`;function A(){return{platform:process.platform,env:process.env,execPath:process.execPath,isTTY:process.stdout.isTTY,statSync:e=>{try{return S(e,{throwIfNoEntry:!1})??null}catch{return null}}}}function j(e){if(e.env.ELECTRON_RUN_AS_NODE===`1`){let t=/(.+?\.app)\/Contents\/MacOS\//.exec(e.execPath);if(t?.[1])return t[1]}if(M(e,k))return k;let t=m(e.homeDir??C(),`Applications`,O);return M(e,t)?t:null}function M(e,t){return N(e,m(t,`Contents`,`MacOS`,`OpenKnowledge`))}function N(e,t){try{let n=e.statSync(t);return n&&typeof n.isFile==`function`?n.isFile():!1}catch{return!1}}const ee=[`@inkeepopen-knowledge-desktop`,`OpenKnowledge`];function P(e){if(e.env.ELECTRON_RUN_AS_NODE===`1`&&/\\OpenKnowledge\.exe$/i.test(e.execPath))return e.execPath;let t=e.env.LOCALAPPDATA;if(t)for(let n of ee){let r=_.join(t,`Programs`,n,`OpenKnowledge.exe`);if(N(e,r))return r}return null}function F(e){if(e.env.ELECTRON_RUN_AS_NODE===`1`&&e.execPath.endsWith(`/openknowledge`))return e.execPath;let t=`/opt/OpenKnowledge/openknowledge`;return N(e,t)?t:null}function I(e){if(e.env.OK_FORCE_BROWSER===`1`)return{available:!1,reason:`force-browser`};if(e.platform!==`darwin`&&e.platform!==`win32`&&e.platform!==`linux`)return{available:!1,reason:`unsupported-platform`};let t;try{t=e.platform===`darwin`?j(e):e.platform===`win32`?P(e):F(e)}catch{return{available:!1,reason:`stat-error`}}return t?e.env.OK_FORCE_DESKTOP===`1`?{available:!0,reason:`available`,bundlePath:t}:!(e.isTTY===!0||e.platform===`win32`&&e.isTTY===void 0&&!e.env.CI)||e.env.SSH_CONNECTION||e.env.SSH_TTY||e.platform===`linux`&&!e.env.DISPLAY&&!e.env.WAYLAND_DISPLAY?{available:!1,reason:`headless`,bundlePath:t}:{available:!0,reason:`available`,bundlePath:t}:{available:!1,reason:`no-bundle`}}function L(e,t){let n=e.log??(e=>console.error(e)),r=e.platform??process.platform;if(n("Launching OpenKnowledge desktop (use `ok start` for the browser server, or `OK_FORCE_BROWSER=1` to always skip)"),r===`darwin`){D(`open`,[`-b`,`com.inkeep.open-knowledge`],{spawn:e.spawn});return}let i=t?.bundlePath;if(!i){n(`Desktop launch skipped: no resolved desktop executable (caller bug).`);return}D(i,[],{spawn:e.spawn})}function R(e=`no-bundle`){switch(e){case`no-bundle`:return`Desktop app not found (checked the standard install locations for this OS). Install it, or omit --mode for browser mode.`;case`darwin-only`:case`unsupported-platform`:return`Desktop app is not available on this platform. Use --mode=browser, or omit --mode for the server fallback.`;case`headless`:return`Desktop launch is gated in headless contexts (CI, SSH, non-TTY stdout). Set OK_FORCE_DESKTOP=1 to override, or use --mode=browser.`;case`force-browser`:return`OK_FORCE_BROWSER=1 is set — desktop dispatch is disabled. Unset it to use --mode=app.`;case`stat-error`:return`Failed to inspect the desktop install (filesystem error). Check permissions or use --mode=browser.`;case`available`:return`Desktop app appears available but launch dispatch did not fire (caller bug).`}}function z(e){return h.join(h.dirname(e),`..`,`Frameworks`,`OpenKnowledge Server.app`,`Contents`,`MacOS`,`OpenKnowledge Helper`)}const te=/\/[^/]+\.app\/Contents\/MacOS\/[^/]+$/;function ne(e){if(e.platform!==`darwin`||!te.test(e.execPath))return null;let t=z(e.execPath);return e.exists(t)?t:null}function B(e={}){let t=e.execPath??process.execPath,n=e.platform??process.platform,r=e.argv??process.argv,i=e.exists??y,a=r[1];return a?{command:ne({execPath:t,platform:n,exists:i})??t,prefixArgs:[a]}:(console.warn(`[self-spawn] process.argv[1] is empty — falling back to \`npx -y @inkeep/open-knowledge@latest\`. This re-introduces the registry-fetch surface that re-exec was fixing. Observed argv: ${JSON.stringify(r)}`),{command:`npx`,prefixArgs:[`-y`,`@inkeep/open-knowledge@latest`]})}function V(e,t){return e.host??t.HOST??`127.0.0.1`}function H(e,t){return t&&(e===`::`||e===`::1`||e===`[::1]`||e===`localhost`||e===`0.0.0.0`)?{host:`127.0.0.1`,coerced:!0}:{host:e,coerced:!1}}function U(e){let t=p(e).replace(/[^\x20-\x7E]/g,``).trim().slice(0,64);return`open-knowledge-server ${t.length>0?t:`unknown`}`}var W=class extends Error{cwd;constructor(e){super("This directory isn't set up yet. Run `ok init` first, then `ok start` again."),this.name=`OkDirMissingError`,this.cwd=e}};function G(e){return e.uiLock?e.isAlive(e.uiLock.pid)?{action:`skip`,reason:`alive`,pid:e.uiLock.pid,port:e.uiLock.port}:{action:`spawn`,reason:`stale`,stalePid:e.uiLock.pid}:{action:`spawn`,reason:`absent`}}function K(t){y(t.lockDir)||b(t.lockDir,{recursive:!0});let n=x(m(t.lockDir,e),`w`),r=t.spawn??f,{PORT:i,...a}=process.env,o=B();try{let e=r(o.command,[...o.prefixArgs,...t.args??[`ui`]],{detached:!0,stdio:[`ignore`,`ignore`,n],windowsHide:!0,cwd:t.cwd,env:{...a,ELECTRON_RUN_AS_NODE:`1`}});return e.unref(),e}finally{try{v(n)}catch{}}}function q(e,t,n,r=!1){return e??(n!==void 0||r?void 0:t)}function J(e,t){return e!==void 0&&t!==null&&t.port>0&&t.draining!==!0}function Y(e,t,n){return e??+(t!=null&&!n)}async function X(e){let t=e.spawn??f,n=B(),{PORT:r,...i}=process.env,a=t(n.command,[...n.prefixArgs,`ui`,`--port`,String(e.uiPort)],{cwd:e.cwd,stdio:`inherit`,windowsHide:!0,env:{...i,ELECTRON_RUN_AS_NODE:`1`}}),o=!1,s=e=>{o=!0;try{a.kill(e)}catch{}},c=()=>s(`SIGINT`),l=()=>s(`SIGTERM`);process.once(`SIGINT`,c),process.once(`SIGTERM`,l),await new Promise(e=>{a.on(`exit`,(t,n)=>{process.exitCode=Y(t,n,o),e()}),a.on(`error`,t=>{console.error(`[start] connect fallback: failed to spawn ok ui — ${t instanceof Error?t.message:String(t)}`),process.exitCode=1,e()})}),process.removeListener(`SIGINT`,c),process.removeListener(`SIGTERM`,l)}async function Z(e){let t=e.now()+e.timeoutMs;for(;e.now()<t;){let t=e.readUiLock();if(t&&t.port>0)return t.port;await e.sleep(e.pollIntervalMs)}let n=e.readUiLock();return n&&n.port>0?n.port:null}const re=t;function ie(e,t,n=e=>w(e,{recursive:!0,force:!0})){return async()=>{try{await e()}finally{try{await n(t)}catch(e){process.stderr.write(`[start] ephemeral temp dir reap failed for ${t}: ${e instanceof Error?e.message:String(e)}\n`)}}}}function ae(e,t={}){let n=t.exit??(e=>process.exit(e)),r=t.getActiveHandles??(()=>{let e=process._getActiveHandles;return e?e.call(process):null});return async()=>{let i=!1;try{await e()}catch(e){i=!0,t.log?.error({err:e},`idle-shutdown: destroy failed — exiting anyway`)}finally{let e=null;try{let t=r();if(t!==null){e={};for(let n of t){let t=n?.constructor?.name??`unknown`;e[t]=(e[t]??0)+1}}}catch{e=null}t.log?.info({event:`idle-shutdown-exit`,exitCode:+!!i,openHandles:e??{},handlesAvailable:e!==null},`idle-shutdown: teardown finished — exiting process`),n(+!!i)}}}async function Q(e){let t=e.sigtermGraceMs??re,n=e.sigtermPollIntervalMs??200,r=e.sleep??(e=>T(e)),i=e.reason??`teardown`;try{let a=e.readUiLock(),o=e.spawnedUiPid();if(a&&e.isAlive(a.pid)&&a.pid!==o)e.log?.info({pid:a.pid,port:a.port,spawnedUiPid:o},`${i}: ui.lock holder is not our spawned sibling — leaving it alone`);else if(a&&e.isAlive(a.pid))try{e.killPid(a.pid,`SIGTERM`),e.log?.info({pid:a.pid,port:a.port},`${i}: SIGTERM UI sibling`);let o=Date.now()+t;for(;Date.now()<o&&e.isAlive(a.pid);)await r(n);if(e.isAlive(a.pid))try{e.killPid(a.pid,`SIGKILL`),e.log?.warn({pid:a.pid,graceMs:t},`${i}: SIGTERM grace expired — escalated to SIGKILL`)}catch(t){e.log?.error({pid:a.pid,err:t},`${i}: SIGKILL failed`)}}catch(t){e.log?.warn({pid:a.pid,err:t},`${i}: failed to SIGTERM UI sibling`)}}catch(t){e.log?.warn({err:t},`${i}: UI lookup failed; proceeding`)}}function oe(e){let{destroy:t,...n}=e;return async()=>{await Q({...n,reason:`idle-shutdown`}),await t()}}async function se(e){let{config:t,cwd:n,host:o}=e,s=e.skipAutoInit??!1,d=e.skipUiAutoSpawn??!1,f=e.idleThresholdMs??18e5,{existsSync:p,mkdirSync:m}=await import(`node:fs`),{basename:h,dirname:g}=await import(`node:path`),{bootServer:_,getLogger:v,isProcessAlive:y,readUiLock:b,resolveContentDir:x,resolveLockDir:S,waitForServerLockDrain:C}=await import(`./src-BuZeH4bR.mjs`),w=e.log??v(`start`),E=e.singleFile!==void 0,D=e.projectDir??n,O=E?i(e.singleFile).canonicalFilePath:void 0,k=O?g(O):void 0,A=O?h(O):void 0;if(!E){if(!s&&!a(n))throw new W(n);let t=process.env.OK_RECLAIM_DISABLE??null,r=e=>{let t=typeof e.event==`string`?e.event:``;(t.endsWith(`-failed`)||t.endsWith(`-error`)||t.endsWith(`-missing`))&&w.warn({event:e},`[start] reclaim sweep reported a problem`)};try{(e.repairMcpConfigsFn??(await import(`./repair-mcp-configs-B4k9Cb0d.mjs`)).repairMcpConfigs)({projectDir:n,reclaimDisableEnv:t,logger:r})}catch(e){w.warn({err:e},`[start] mcp-config repair sweep failed; continuing`)}try{(e.repairLaunchJsonFn??(await import(`./repair-launch-json-CK4ECoN2.mjs`)).repairLaunchJson)({projectDir:n,reclaimDisableEnv:t,logger:r})}catch(e){w.warn({err:e},`[start] launch.json repair sweep failed; continuing`)}try{await(e.repairSkillsFn??(await import(`./repair-skills-DT7FGT3w.mjs`)).repairSkills)({projectDir:n,reclaimDisableEnv:t,logger:r})}catch(e){w.warn({err:e},`[start] skill repair sweep failed; continuing`)}}let j=k??x(t,n);!E&&!p(j)&&(m(j,{recursive:!0}),w.info({contentDir:j},`Created content directory`));let M=null,N=null,ee=async({lockDir:t})=>{if(M=G({uiLock:b(t),isAlive:y}),M.action===`spawn`&&!d)try{let r=e.uiPort===void 0?void 0:[`ui`,`--port`,String(e.uiPort)];N=K({lockDir:t,cwd:n,spawn:e.spawn,args:r}).pid??null,w.info({reason:M.reason,uiPort:e.uiPort},`[start] auto-spawned ok ui sibling`)}catch(e){console.warn(`[start] failed to auto-spawn ok ui: ${e instanceof Error?e.message:String(e)}`)}else M.action===`skip`&&w.info({port:M.port,pid:M.pid},`UI already running at port ${M.port}`)},P=e.reactShellDistDir===void 0,F=c(),I=r();{let e=S(E?D:n),t=Date.now(),r=await C(e);r!==`no-drain`&&w.info({event:`start-waited-for-draining-predecessor`,outcome:r,waitedMs:Date.now()-t,drainLockDir:e},r===`released`?`[start] predecessor server finished draining — proceeding`:`[start] predecessor server still draining after wait — proceeding to collide`)}let L=await _({config:t,contentDir:j,projectDir:E?D:n,contentRoot:E?void 0:t.content.dir,port:e.port,host:o,...e.enableRemote===!0?{enableRemote:!0}:{},quiet:!1,detectGh:l,tokenStore:F,embeddingsKeyStore:I,...E?{ephemeral:!0,singleDocRelPath:A,gitEnabled:!1,gitPreflight:()=>({ok:!0,version:`0.0.0`,resolvedPath:`git`,source:`PATH`})}:{},localOpCliArgs:[process.execPath,process.argv[1]],probeHarnessManagedMcpEntry:(e,t)=>u(e,t),attachUiSibling:P,idleShutdownMs:f,skipAutoInit:!0,...P?{spawnUiSiblingFn:ee}:{},idleShutdownHandler:t=>{let n=oe({readUiLock:()=>b(L.lockDir),spawnedUiPid:()=>N,isAlive:y,killPid:(e,t)=>{process.kill(e,t)},destroy:t,log:w});return ae(E?ie(n,D):n,{log:w,exit:e.idleExit})},log:w,...e.serveContentAssets===void 0?{}:{serveContentAssets:e.serveContentAssets},...e.reactShellDistDir?{reactShellDistDir:e.reactShellDistDir}:{}});M||={action:`skip`,reason:`alive`,pid:0,port:0};let R=M,z=null;if(R.action===`skip`)z=R.port>0?R.port:null;else if(!d){let t=e.uiBindTimeoutMs??3e3;z=await Z({readUiLock:()=>b(L.lockDir),now:Date.now,sleep:e=>T(e),timeoutMs:t,pollIntervalMs:50}),z===null&&w.warn({timeoutMs:t},`[start] ok ui did not bind within timeout — banner falls back to API URL`)}return{httpServer:L.httpServer,destroy:L.destroy,lockDir:L.lockDir,contentDir:j,port:L.port,ready:L.ready,degraded:L.degraded,uiSpawnDecision:M,spawnedUiPid:N,resolvedUiPort:z}}function ce(e){if(e===`browser`||e===`app`)return e;throw new o(`--mode must be 'browser' or 'app'`)}function le(e){let t=Number.parseInt(e,10);if(Number.isNaN(t)||t<1||t>65535)throw new o(`--ui-port must be a port number between 1 and 65535`);return t}function ue(e){return e.OK_CONSOLE_LEVEL!==void 0||e.LOG_LEVEL!==void 0?null:`warn`}function $(e){let t=[`Stopping OpenKnowledge…`,`Saving pending changes and releasing the server lock — this can take a few seconds.`];return e===`SIGINT`&&t.push(`Press Ctrl+C again to force quit.`),t}async function de(e,t){let n=ue(process.env);n!==null&&(process.env.OK_CONSOLE_LEVEL=n);let{renderBanner:r}=await import(`./banner-CIK2GwPx.mjs`),{accent:i,dim:a,error:o,warning:s}=await import(`./colors-MGDi6UGf.mjs`),c=process.cwd(),l=t.remote!==void 0&&t.remote!==!1,u=typeof t.remote==`string`?t.remote:void 0,f=u===void 0?e:{...e,remote:{...e.remote,url:u}};process.title=U(c),l&&(typeof f.remote?.url!=`string`||f.remote.url===``)&&(console.error(o("--remote requires a public tunnel URL — pass it (`ok start --remote https://<your-tunnel-host>`) or set remote.url in .ok/config.yml.")),process.exit(78)),l&&console.warn(s([``,`⚠ REMOTE ACCESS ENABLED — no server-side authentication.`,` Anyone who can reach ${f.remote?.url} has FULL control of this`,` knowledge base, including sync, publishing, credentials, and local operations.`,` Restrict who can reach it at the tunnel: ngrok OAuth, Cloudflare Access,`,` Tailscale ACLs, or equivalent edge auth.`,``].join(`
|
|
2
2
|
`)));let p=V(t,process.env),m=H(p,l);m.coerced&&console.warn(`remote access is enabled and ${p} is not an IPv4 loopback bind — tunnels proxy to 127.0.0.1, so binding ${p} would leave the tunnel dialing a dead port. Using 127.0.0.1.`);let h=m.host,_=t.port===void 0?void 0:Number(t.port),v=process.env.PORT?Number(process.env.PORT):void 0,b=t.uiPort===void 0?void 0:Number(t.uiPort);l&&_===void 0&&v!==void 0&&console.warn(`remote access is enabled — ignoring env PORT=${process.env.PORT}; the tunnel's port mapping targets the stable remote port (${f.remote?.port}). Pass --port to override deliberately.`);let x=q(_,v,b,l)??(l?f.remote?.port:void 0);if(b!==void 0){let{readServerLock:e,resolveLockDir:t}=await import(`./src-BuZeH4bR.mjs`);if(J(b,e(t(c)))){await X({cwd:c,uiPort:b});return}}let S=t.reactShellDistDir;if(l&&S===void 0){let e=import.meta.dirname??new URL(`.`,import.meta.url).pathname;S=[g(e,`public`),g(e,`../../app/dist`),g(e,`../../../app/dist`)].find(e=>y(e)),S===void 0&&console.warn(`remote access: bundled web UI not found — serving /mcp and /api only over the tunnel.`)}let C;try{C=await se({config:f,cwd:c,host:h,port:x,...b===void 0?{}:{uiPort:b},...t.serveContentAssets===void 0?{}:{serveContentAssets:t.serveContentAssets},...S?{reactShellDistDir:S}:{},...t.singleFile?{singleFile:t.singleFile}:{},...t.projectDir?{projectDir:t.projectDir}:{},...l?{enableRemote:!0}:{}})}catch(e){e instanceof W&&(console.error(o(e.message)),process.exit(1));let t=await import(`./src-BuZeH4bR.mjs`);if((e instanceof t.GitNotAvailableError||e instanceof t.GitTooOldError)&&process.exit(78),e instanceof t.RemoteConfigError&&(console.error(o(e.message)),process.exit(78)),(e instanceof t.SingleFileNotFoundError||e instanceof t.SingleFileNotAFileError||e instanceof t.SingleFileNotMarkdownError)&&(console.error(o(e.message)),process.exit(1)),b!==void 0&&fe(e,t)){await X({cwd:c,uiPort:b});return}let n=pe(e,c,t);n!==null&&(console.error(o(n)),process.exit(1)),console.error(`${o(`Failed to start:`)} ${e instanceof Error?e.stack??e.message:String(e)}`),process.exit(1)}let w=!1,T=async e=>{if(w)return;w=!0;let[t,...n]=$(e);console.log(i(`\n${t}`));for(let e of n)console.log(a(` ${e}`));if(C.spawnedUiPid!==null)try{let{getLogger:e,isProcessAlive:t,readUiLock:n}=await import(`./src-BuZeH4bR.mjs`);await Q({readUiLock:()=>n(C.lockDir),spawnedUiPid:()=>C.spawnedUiPid,isAlive:t,killPid:(e,t)=>process.kill(e,t),log:e(`start`),reason:`shutdown`})}catch(e){console.error(`${o(`ui sibling teardown failed:`)} ${e instanceof Error?e.stack??e.message:String(e)}`)}try{await C.destroy()}catch(e){console.error(`${o(`destroy() failed:`)} ${e instanceof Error?e.stack??e.message:String(e)}`),process.exitCode=1}process.exit(process.exitCode??0)};process.once(`SIGINT`,()=>{T(`SIGINT`)}),process.once(`SIGTERM`,()=>{T(`SIGTERM`)});let E=`http://${h}:${C.port}`,D=h===`0.0.0.0`||h===`::`?`http://0.0.0.0:${C.port}`:void 0,O=C.resolvedUiPort,k=O!==null&&O>0?`http://${h}:${O}`:E;console.log(r({name:`open-knowledge`,version:d,localUrl:k,apiUrl:k===E?void 0:E,networkUrl:D,nextSteps:[`Open the Editor URL in your browser to start editing.`]}));let A={"shadow-repo":`Version history and branch-switch safety unavailable`,"file-watcher":`External file changes will not sync to the editor`,"head-watcher":`Git branch switches may cause document inconsistency`};C.ready.then(async()=>{if(C.degraded.length>0){console.log();for(let e of C.degraded){let t=A[e]??`${e} (check server logs for details)`;console.warn(` ${s(`⚠`)} ${s(e)}: ${a(t)}`)}console.log()}if(t.open){let{openBrowser:e}=await import(`./open-browser-ifD987S6.mjs`);e(k)}}).catch(e=>{console.error(` ${o(`Server initialization failed:`)} ${e instanceof Error?e.message:String(e)}`)})}function fe(e,t){let n=t.ServerLockCollisionError;return n!==void 0&&e instanceof n}function pe(e,t,n){let r=n.ServerLockCollisionError;if(r===void 0||!(e instanceof r))return null;try{let e=m(t,`.ok`),r=n.readServerLock(e);return r?r.kind===`interactive`?`OpenKnowledge desktop is currently running on this project. Quit it or use --cwd to point elsewhere.`:r.kind===`mcp-spawned`?"An MCP-spawned server holds this lock; it should release on idle-shutdown (~30 min). Or run `ok stop`.":"OpenKnowledge server is already running on this project — check `ok status` or `ok stop`.":"OpenKnowledge server is already running on this project — check `ok status` or `ok stop`."}catch{return null}}function me(e){return new s(`start`).description(`Start the knowledge base collab server`).option(`-p, --port <port>`,`Server port`,void 0).option(`--ui-port <port>`,`Pin the ok ui sibling to <port> and connect (not exit) if a server already runs here — the worktree-preview recipe path`,le).option(`-H, --host <host>`,`Server host`,void 0).option(`--open`,`Open browser after start`).option(`--mode <mode>`,`Force dispatch mode: 'browser' or 'app'`,ce).option(`--serve-content-assets`,`Serve content assets from this server (now the default; kept for compatibility)`).option(`--react-shell-dist-dir <path>`,`Serve React shell from <path> (suppresses ok ui sibling)`).option(`--single-file <path>`,`No-project ephemeral single-file mode: scope the server to one markdown file (git + MCP off)`).option(`--project-dir <dir>`,`Throwaway project root for --single-file (where ephemeral .ok/ state lives)`).option(`--remote [url]`,`Serve through a tunnel: admit requests carrying the tunnel Host with NO server-side auth (anyone who can reach the URL has full control — restrict access at the tunnel with edge auth). Bare --remote uses remote.url from .ok/config.yml; --remote <url> supplies it for this run.`).action(async t=>{let n=e();if(t.mode===`app`){t.open&&(process.stderr.write(`error: option '--mode=app' cannot be combined with '--open' (--open opens a browser tab against the local server, which app mode does not boot)
|
|
3
3
|
`),process.exit(2));let e=[];if(t.port!==void 0&&e.push(`--port`),t.uiPort!==void 0&&e.push(`--ui-port`),t.host!==void 0&&e.push(`--host`),e.length>0){let t=process.env.OK_LOG_LEVEL??`info`;(t===`debug`||t===`trace`)&&console.error(`--mode=app: ignoring ${e.join(`, `)}`)}let n=I(A());if(n.available){L({spawn:f},n);return}console.error(R(n.reason)),process.exit(1)}await de(n,t)})}export{B as C,D,L as E,ae as S,I as T,K as _,H as a,pe as b,G as c,fe as d,q as f,J as g,de as h,oe as i,U as l,ue as m,Z as n,Y as o,V as p,se as r,X as s,W as t,$ as u,me as v,A as w,ie as x,Q as y};
|
|
4
|
-
//# sourceMappingURL=start-
|
|
4
|
+
//# sourceMappingURL=start-CCjGphea.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{p as e,r as t,v as n}from"./start-CCjGphea.mjs";export{t as bootStartServer,e as resolveHost,n as startCommand};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@inkeep/open-knowledge",
|
|
3
|
-
"version": "0.48.
|
|
3
|
+
"version": "0.48.2",
|
|
4
4
|
"license": "GPL-3.0-or-later",
|
|
5
5
|
"private": false,
|
|
6
6
|
"type": "module",
|
|
@@ -61,10 +61,10 @@
|
|
|
61
61
|
"ajv-formats": "^3.0.1",
|
|
62
62
|
"tsdown": "^0.21.7",
|
|
63
63
|
"typescript": "^5.9.3",
|
|
64
|
-
"@inkeep/open-knowledge-
|
|
65
|
-
"@inkeep/open-knowledge-
|
|
66
|
-
"@inkeep/open-knowledge-
|
|
67
|
-
"@inkeep/open-knowledge-
|
|
64
|
+
"@inkeep/open-knowledge-core": "0.48.2",
|
|
65
|
+
"@inkeep/open-knowledge-app": "0.48.2",
|
|
66
|
+
"@inkeep/open-knowledge-native-config": "0.0.0",
|
|
67
|
+
"@inkeep/open-knowledge-server": "0.48.2"
|
|
68
68
|
},
|
|
69
69
|
"scripts": {
|
|
70
70
|
"build:cli": "tsdown",
|
package/dist/init-BNMJDizk.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{g as e}from"./init-D7RfHtp_.mjs";export{e as runInit};
|
package/dist/loader-C5LD3Ds_.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./loader-BtbydYPt.mjs";export{e as loadConfig};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e,t}from"./preview-CAWFRCJt.mjs";export{t as formatPreviewBlock,e as previewContent};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./index-CUE-YCY2.js";export{e as FeedbackForm};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./ManagedArtifactProperties-B0bIS4IP.js";export{e as ManagedArtifactProperties};
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./chunk-CYidjpOJ.js";import{t}from"./jsx-runtime-BUgB2tll.js";import{D as n,Ht as r,Jt as i,Mt as a,Qn as o,Qt as s,Wt as c,hn as l,i as u,jt as d,pn as f,sr as p,xn as m}from"./DocumentContext-CP7yqH5z.js";import{t as h}from"./react-f2sANaYj.js";import{n as g,r as _}from"./dist-Nvb76hAm.js";import{r as v,t as y}from"./useQuery-ZeEDLtxh.js";import{t as b}from"./compiler-runtime-BfE3aGVn.js";import{t as x}from"./utils-CPqDy6Hr.js";import{t as S}from"./button-RQ5o7P7w.js";import{i as C,n as w,t as T}from"./tooltip-x7BNUa3s.js";import{n as E,r as D,t as O}from"./collapsible-OhEmjTXw.js";import{A as k,T as A,at as j,k as M}from"./CodeMirrorPropInput-BQoCzCdy.js";import{n as N,t as P}from"./toggle-group-DAYvcc1F.js";import{Dn as F,Ga as I,Ht as L,On as R,P as z,Pa as B,Ur as V,Ut as H,mt as U,ut as W,ya as G}from"./dist-D0lKV18u2.js";import{t as ee}from"./createLucideIcon-BbgVV4EV.js";import{t as te}from"./chevron-right-BjiB8LDf.js";import{r as K}from"./CopyButton-DfXJBl0I.js";import{i as q,r as ne}from"./prop-types-C-VFVfev.js";import{t as re}from"./refresh-cw-DGLnzhho.js";import{t as J}from"./triangle-alert-V8YoC6ss.js";import{t as ie}from"./wrench-D8b4qpCM.js";import{n as Y}from"./dist-DmEZHXvB.js";import{t as ae}from"./dist-CpRBr-Ct.js";import{f as oe,u as se}from"./doc-paths-BuYvs-Sl.js";import{o as ce}from"./use-settings-route-B1Atzr9C.js";import{d as le}from"./documents-events-CZXYlWJs.js";import{a as ue,i as de}from"./startup-marks-BJYEMeGu.js";import{t as X}from"./badge-CnYDYmI5.js";import{C as fe,y as pe}from"./config-provider-GgI7K6tF.js";import{Dt as me,Ft as he,It as ge,J as _e,Q as ve,X as ye}from"./dist-zYQJXuRH.js";import{a as be,c as xe,i as Se,n as Ce,r as we,s as Te,t as Ee}from"./panel-UxAkffLp.js";import{t as De}from"./lint-plugin-meta-BnniPb1r.js";import{t as Oe}from"./skeleton-DS8zjX9Q.js";import{a as ke,c as Ae,d as je}from"./lint-config-client-CKLyoxWn.js";var Me=ee(`chevrons-down-up`,[[`path`,{d:`m7 20 5-5 5 5`,key:`13a0gw`}],[`path`,{d:`m7 4 5 5 5-5`,key:`1kwcof`}]]),Ne=ee(`chevrons-up-down`,[[`path`,{d:`m7 15 5 5 5-5`,key:`1hf1tw`}],[`path`,{d:`m7 9 5-5 5 5`,key:`sgt6xg`}]]),Pe=56,Fe=2,Ie=150,Le=2e3;function Re(e,t,n){return e.top+e.height/2-(n+t)/2}function ze(e,t){let n=Math.max(0,t.scrollHeight-t.clientHeight);return Math.max(0,Math.min(e,n))}function Be(e){let{docName:t,container:n,measureTarget:r,placement:a,intent:o,grade:l,landedMode:u,transition:d,onOutcome:f,onDiscardQueuedTarget:p,toolbarOffset:m=Pe,driftThresholdPx:h=Fe,quietMs:g=Ie,abandonAfterMs:_=Le}=e,v=e.contentColumn??n.firstElementChild,y=c(t),b=i(t,{yieldsToNavigation:o===`toggle`,supersede:()=>P(`superseded`)}),x=n.style.overflowAnchor;n.style.overflowAnchor=`none`,d&&ue(`ok/mode-switch/transition`,{from:d.from,to:d.to,grade:l});let S=!1,C=null,w,T,E=0,D,O=()=>{let e=r();return e===null?null:ze(a===`center`?Re(e,n.clientHeight,m):e.top-m,n)},k=()=>{let e=O();if(e===null)return{measurable:!1,moved:!1};C=e;let t=Math.abs(n.scrollTop-e)>h;return t&&(n.scrollTop=e),{measurable:!0,moved:t}},A=()=>n.scrollTop-(O()??C??n.scrollTop),j=()=>{w&&clearTimeout(w),T&&clearTimeout(T),E&&cancelAnimationFrame(E),D?.disconnect(),n.removeEventListener(`wheel`,I),n.removeEventListener(`touchstart`,I),n.removeEventListener(`contentvisibilityautostatechange`,L,!0),n.style.overflowAnchor=x,y.release(),b.release()},M=()=>{if(S)return;S=!0;let e;try{k(),e=A(),C!==null&&s({docName:t,container:n,targetScrollTop:n.scrollTop,mode:u})}finally{j()}ue(`ok/landing/land`,{grade:l,delta:e}),f?.({status:`landed`,delta:e})},N=()=>{if(S)return;S=!0;let e=C??n.scrollTop,t;try{t=A()}finally{j()}ue(`ok/landing/abandoned`,{grade:l,target:e,delta:t}),f?.({status:`abandoned`,delta:t})},P=e=>{S||(S=!0,j(),e===`mode-flip`&&p?.(),f?.({status:`cancelled`,reason:e}))},F=()=>{w&&clearTimeout(w),w=setTimeout(M,g)};function I(){P(`user-scroll`)}function L(){if(S)return;let{measurable:e,moved:t}=k();e&&(t||w===void 0)&&F()}try{k().measurable&&F(),n.addEventListener(`contentvisibilityautostatechange`,L,!0),n.addEventListener(`wheel`,I,{passive:!0}),n.addEventListener(`touchstart`,I,{passive:!0}),typeof ResizeObserver<`u`&&v&&(D=new ResizeObserver(L),D.observe(v)),E=requestAnimationFrame(L),T=setTimeout(N,_)}catch(e){throw S=!0,j(),e}return{cancel:P}}function Ve(e){switch(e){case`bulletList`:case`orderedList`:case`taskList`:case`list`:return`list`;case`codeBlock`:case`code`:return`code`;case`horizontalRule`:case`thematicBreak`:return`thematicBreak`;case`jsxComponent`:case`mdxJsxFlowElement`:case`mdxJsxTextElement`:return`jsx`;case`htmlBlock`:case`html`:return`html`;default:return e}}function He(e){return typeof e!=`object`||!e?``:`value`in e&&typeof e.value==`string`?e.value:`children`in e&&Array.isArray(e.children)?e.children.map(He).join(``):``}function Ue(e,t){let{frontmatter:n,body:r}=I(e),i=n===``?0:n.split(`
|
|
2
|
-
`).length-1;try{return{blocks:t.parseToEditorMdast(r).children.map(e=>({start:(e.position?.start.line??1/0)+i,end:(e.position?.end.line??-1/0)+i,kind:Ve(e.type),text:He(e)})),fmLineCount:i}}catch{return performance.mark(`ok/block-spans/parse-failed`),{blocks:[],fmLineCount:i}}}function We(e,t){let{blocks:n,fmLineCount:r}=Ue(e,t);return{spans:n.map(e=>({start:e.start,end:e.end})),fmLineCount:r}}function Ge(e,t){if(e.length===0)return null;let n=0,r=e.length-1,i=e.length-1;for(;n<=r;){let a=n+r>>1,o=e[a];o!==void 0&&o.end>=t?(i=a,r=a-1):n=a+1}return i}function Ke(e){let t=0;for(let n=e.childCount-1;n>=0;n--){let r=e.child(n);if(r.type.name!==`paragraph`||r.content.size!==0)break;t++}return t<2?e.childCount-t:e.childCount}function qe(e,t,n){let r=e.childCount,i=Math.max(0,Math.min(t,r)),a=Math.max(i,Math.min(n,r));if(a<=i)return null;let o=0;for(let t=0;t<i;t++)o+=e.child(t).nodeSize;let s=o;for(let t=i;t<a;t++)o+=e.child(t).nodeSize;let c=o,l=e.content.size,u=Math.max(0,Math.min(s,l)),d=Math.max(u,Math.min(c,l));return d<=u?null:{from:u,to:d}}function Je(e){let t=[0];for(let n=0;n<e.length;n++)e[n]===`
|
|
3
|
-
`&&t.push(n+1);return t}function Ye(e,t,n){return t<=1?0:t-1>=e.length?n:e[t-1]??n}function Xe(e,t){let n=0,r=e.length-1,i=1;for(;n<=r;){let a=n+r>>1;(e[a]??0)<=t?(i=a+1,n=a+1):r=a-1}return i}function Ze(e,t,n){return Math.max(t,Math.min(e,n))}function Qe(e,t){let n=e=>e.replace(/\s+/g,` `).trim();return n(e)===n(t)}function $e(e,t){return t.inRange?t.tripwireOk?Qe(e.content,t.text)?`exact`:e.kind===t.kind?`same-type-ordinal`:`ordinal`:`ordinal`:`clamped`}function et(e){let t=null,n=null;function r(r){return n!==null&&t===r?n:(n={blocks:Ue(r,e).blocks,lineStarts:Je(r)},t=r,n)}return{captureFromWysiwyg(e,t,n){if(e.childCount===0)return null;let r=Ze(t,0,e.content.size),i=0,a=e.childCount-1,o=0;for(let t=0;t<e.childCount;t++){let n=e.child(t).nodeSize;if(r<i+n){a=t,o=i+1;break}i+=n,o=i+1}let s=e.child(a),c={blockIndex:a,kind:Ve(s.type.name),content:s.textContent};return n?.refine&&(c.selectionInBlock=Math.max(0,r-o)),c},captureFromSource(e,t,n){let{blocks:i,lineStarts:a}=r(e);if(i.length===0)return null;let o=Ze(t,0,e.length),s=Ge(i,Xe(a,o));if(s===null)return null;let c=i[s];if(!c)return null;let l={blockIndex:s,kind:c.kind,content:c.text};if(n?.refine){let t=Ye(a,c.start,e.length);l.selectionInBlock=Math.max(0,o-t)}return l},resolveInSource(e,{source:t,doc:n}){let{blocks:i,lineStarts:a}=r(t);if(i.length===0)return null;let o=e.blockIndex>=0&&e.blockIndex<i.length,s=Ke(n)===i.length,c=i[Ze(e.blockIndex,0,i.length-1)],l=Ye(a,c.start,t.length),u=Math.min(Ye(a,c.end+1,t.length),t.length),d=$e(e,{inRange:o,tripwireOk:s,kind:c.kind,text:c.text}),f=l;return d===`exact`&&e.selectionInBlock!==void 0&&(f=Ze(l+e.selectionInBlock,l,u)),{blockStart:l,blockEnd:u,point:f,confidence:d}},resolveInWysiwyg(e,{source:t,doc:n}){let i=Ke(n);if(i===0)return null;let{blocks:a}=r(t),o=e.blockIndex>=0&&e.blockIndex<i,s=i===a.length,c=Ze(e.blockIndex,0,i-1),l=qe(n,c,c+1);if(l===null)return null;let u=n.child(c),d=$e(e,{inRange:o,tripwireOk:s,kind:Ve(u.type.name),text:u.textContent});return{blockStart:l.from,blockEnd:l.to,point:l.from,confidence:d}}}}var tt=he.define(),nt=he.define(),rt=_e.mark({class:d}),it=ge.define({create(){return _e.none},update(e,t){let n=e.map(t.changes);for(let e of t.effects)e.is(tt)?n=_e.set([rt.range(e.value.from,e.value.to)]):e.is(nt)&&(n=_e.none);return n},provide:e=>ye.decorations.from(e)}),at=new WeakMap,ot=ve.define(e=>({destroy(){let t=at.get(e);t!==void 0&&(clearTimeout(t),at.delete(e))}}));function st(e,t,n,r){let i=a(e.state.doc.length,t,n,r);if(!i)return;e.dispatch({effects:tt.of(i)});let o=at.get(e);o!==void 0&&clearTimeout(o);let s=setTimeout(()=>{at.delete(e),e.dispatch({effects:nt.of(null)})},z);at.set(e,s)}function ct(){return[it,ot]}var lt=3e4;function ut(){let e=new Map,t=e=>e?Date.now()-e.rememberedAt>lt?null:e.navigation:null;return{remember(t,n){e.set(t,{navigation:n,rememberedAt:Date.now()})},peek(n){return t(e.get(n))},consume(n){let r=e.get(n);return e.delete(n),t(r)},clear(t){e.delete(t)},clearForTest(){e.clear()}}}var dt=ut(),ft=ut(),pt=dt.remember,mt=dt.peek,ht=dt.consume,gt=dt.clear;dt.clearForTest;var _t=ft.remember,vt=ft.peek,yt=ft.consume,bt=ft.clear;ft.clearForTest;function xt(e,t,n){return{start:fe(e,t),end:fe(e,n)}}function St(e,t){let n=pe(e.start,t),r=pe(e.end,t);return n===null||r===null||r.index<=n.index?null:n.index}var Ct=`open-knowledge:view-in-source`,wt=56,Tt=null;function Et(){return Tt??=et(M()),Tt}function Dt(e,t,n,r,i=`toggle`){let a=r.captureFromWysiwyg(e,t,{refine:i===`jump`});if(!a)return null;let o=r.resolveInSource(a,{source:n.toString(),doc:e});return{kind:`selection-offset`,intent:i,anchor:a,pin:o?xt(n,o.blockStart,o.blockEnd):void 0}}function Ot(e){let{editor:t,docName:n,ytext:r}=e,i=A(t);if(!i)return;let a=i.state.selection.from,o=Dt(i.state.doc,a,r,Et(),`jump`);o&&pt(n,o),window.dispatchEvent(new CustomEvent(Ct,{detail:{docName:n}}))}function kt(e,t,n,r,i){let a=r.captureFromSource(e,t);if(!a)return null;let o=i?r.resolveInSource(a,{source:e,doc:i}):null;return{kind:`selection-offset`,anchor:a,pin:o?xt(n,o.blockStart,o.blockEnd):void 0}}function At(e,t){let{source:n,pmDoc:r,ydoc:i,resolver:a}=t;if(e.pin){let t=St(e.pin,i);if(t===null){let t=a.resolveInWysiwyg(e.anchor,{source:n,doc:r});return t?{...t,point:t.blockStart,confidence:`clamped`}:null}let o=a.captureFromSource(n,t);if(o)return a.resolveInWysiwyg(o,{source:n,doc:r})}return a.resolveInWysiwyg(e.anchor,{source:n,doc:r})}function jt(e,t){let{source:n,pmDoc:r,ydoc:i,resolver:a}=t;if(e.pin){let t=St(e.pin,i);if(t===null){let t=a.resolveInSource(e.anchor,{source:n,doc:r});return t?{...t,point:t.blockStart,confidence:`clamped`}:null}let o=a.captureFromSource(n,t);if(o)return a.resolveInSource(o,{source:n,doc:r})}return a.resolveInSource(e.anchor,{source:n,doc:r})}function Mt(e,t){try{return e.coordsAtPos(t)}catch{return null}}function Nt(e,t,n){let r=Math.max(0,Math.min(n,e.state.doc.length)),i=t.getBoundingClientRect().top,a=Mt(e,r);if(a)return{top:a.top-i+t.scrollTop,height:a.bottom-a.top};try{let n=e.lineBlockAt(r);return{top:e.documentTop-i+t.scrollTop+n.top,height:n.height}}catch{return null}}function Pt(e,t){if(e.isDestroyed)return null;try{let n=e.nodeDOM(t);if(n instanceof HTMLElement)return n;let{node:r}=e.domAtPos(t);return r instanceof HTMLElement?r:r.parentElement}catch{return null}}function Ft(e,t,n){if(e.isDestroyed)return null;let r=Pt(e,Math.max(0,Math.min(n,e.state.doc.content.size)));if(!r)return null;let i=r.getBoundingClientRect(),a=t.getBoundingClientRect().top;return{top:i.top-a+t.scrollTop,height:i.height}}function It(){return typeof document>`u`?null:r()}function Lt(e,t){let n=t.getBoundingClientRect(),r=n.left+n.width/2;for(let t of[wt+1,wt+12,wt+40]){let i=e.posAtCoords({left:r,top:n.top+t});if(i)return i.pos}return null}function Rt(e,t){let n=t.getBoundingClientRect(),r=n.left+n.width/2;for(let t of[wt+1,wt+12,wt+40]){let i=e.posAtCoords({x:r,y:n.top+t});if(i!==null)return i}return null}function zt(e){let{from:t,to:n,docName:r,ytext:i}=e;t===`wysiwyg`&&n===`source`?Bt(r,i):t===`source`&&n===`wysiwyg`&&Vt(r,i)}function Bt(e,t){let n=mt(e);if(n&&n.kind!==`selection-offset`)return;let r=m(e);if(!r)return;let i=A(r);if(!i)return;let a=It();if(!a)return;let o=Lt(i,a);if(o===null)return;let s=Dt(i.state.doc,o,t,Et());s&&pt(e,s)}function Vt(e,t){let n=f(e);if(!n)return;let r=It();if(!r)return;let i=Rt(n,r);if(i===null)return;let a=m(e),o=a?A(a)?.state.doc:void 0,s=kt(t.toString(),i,t,Et(),o);s&&_t(e,s)}function Ht(e){let{view:t,docName:n,navigation:r,ydoc:a,transition:o}=e,s=m(n),c=s?A(s)?.state.doc:void 0;if(!c)return null;let l=jt(r,{source:t.state.doc.toString(),pmDoc:c,ydoc:a,resolver:Et()});if(!l)return null;let u=It();if(!u)return null;let d=l,f=r.intent===`jump`,p=f?d.point:d.blockStart;t.dispatch({effects:ye.scrollIntoView(p,{y:`start`})});let h=!1,g=null,_=i(n,{yieldsToNavigation:!f,supersede:()=>{h=!0,_.release()}}),v=e=>{if(!h){if(Mt(t,p)===null&&e<8){requestAnimationFrame(()=>v(e+1));return}try{f&&(t.dispatch({selection:me.cursor(p)}),t.focus())}finally{_.release()}g=Be({docName:n,container:u,contentColumn:t.contentDOM,measureTarget:()=>Nt(t,u,p),placement:f?`center`:`top`,intent:f?`jump`:`toggle`,grade:d.confidence,landedMode:`source`,transition:o,toolbarOffset:wt,onOutcome:f?e=>{e.status===`landed`&&st(t,d.blockStart,d.blockEnd,d.confidence)}:void 0,onDiscardQueuedTarget:()=>gt(n)})}};return v(0),{cancel:e=>{h=!0,_.release(),g?.cancel(e)}}}function Ut(e){let{editor:t,docName:n,navigation:r,ydoc:i,transition:a}=e,o=A(t);if(!o)return null;let s=At(r,{source:i.getText(`source`).toString(),pmDoc:o.state.doc,ydoc:i,resolver:Et()});if(!s)return null;let c=It();if(!c)return null;let l=s;return Be({docName:n,container:c,contentColumn:o.dom,measureTarget:()=>Ft(o,c,l.point),placement:`top`,intent:`toggle`,grade:l.confidence,landedMode:`wysiwyg`,transition:a,toolbarOffset:wt,onDiscardQueuedTarget:()=>bt(n)})}var Z=e(h(),1),Q=b(),$=t();function Wt(e){let t=(0,Q.c)(14),{scope:n,onScopeChange:r,projectLabel:i}=e,{_:a}=_(),o;t[0]===r?o=t[1]:(o=e=>{e&&r(e)},t[0]=r,t[1]=o);let s;t[2]===a?s=t[3]:(s=a({id:`aBgwis`}),t[2]=a,t[3]=s);let c;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,$.jsx)(N,{value:`doc`,className:`flex-1`,"data-testid":`panel-scope-doc`,children:(0,$.jsx)(g,{id:`UpCz01`})}),t[4]=c):c=t[4];let l;t[5]===i?l=t[6]:(l=i??(0,$.jsx)(g,{id:`e0NrBM`}),t[5]=i,t[6]=l);let u;t[7]===l?u=t[8]:(u=(0,$.jsx)(N,{value:`project`,className:`flex-1`,"data-testid":`panel-scope-project`,children:l}),t[7]=l,t[8]=u);let d;return t[9]!==n||t[10]!==o||t[11]!==s||t[12]!==u?(d=(0,$.jsx)(`div`,{className:`shrink-0 px-4 pb-2`,children:(0,$.jsxs)(P,{type:`single`,variant:`segmented`,size:`sm`,spacing:1,value:n,onValueChange:o,"aria-label":s,className:`w-full rounded-md bg-muted p-0.5 dark:bg-background`,children:[c,u]})}),t[9]=n,t[10]=o,t[11]=s,t[12]=u,t[13]=d):d=t[13],d}var Gt=null,Kt=[];function qt(e){if(e===Gt)return Kt;let t=Jt(e);return Gt=e,Kt=t,t}function Jt(e){let t=[],n=new Map,r=R();for(let i=Yt(e);i<=e.lines;i++){let a=e.line(i);if(r(a.text))continue;let o=V(a.text,n);o&&t.push({slug:o.slug,from:a.from})}return t}function Yt(e){if(!Xt(e.line(1).text))return 1;for(let t=2;t<=e.lines;t++)if(Xt(e.line(t).text))return t+1;return 1}function Xt(e){return G.test(e.endsWith(`\r`)?e.slice(0,-1):e)}function Zt(e){let t=document.getElementById(e);return t?t.getBoundingClientRect().top:null}function Qt(e){let t=new Map;for(let n of qt(e.state.doc))t.set(n.slug,n.from);let n=e.documentTop;return r=>{let i=t.get(r);return i===void 0?null:n+e.lineBlockAt(i).top}}function $t(e,t){let n=(0,Q.c)(9),r;n[0]===t?r=n[1]:(r=t===void 0?{}:t,n[0]=t,n[1]=r);let{isSourceMode:i,docName:a}=r,o=i===void 0?!1:i,[s,c]=(0,Z.useState)(void 0),u=(0,Z.useRef)(null),d;n[2]===a?d=n[3]:(d=()=>a?f(a):null,n[2]=a,n[3]=d);let p=(0,Z.useSyncExternalStore)(l,d,en),m,h;return n[4]!==o||n[5]!==e||n[6]!==p?(m=()=>{if(e.length===0||o&&!p){c(void 0);return}let t=function(){let t=o&&p?Qt(p):Zt,n=window.innerHeight/2,r,i;for(let a of e){let e=t(a);e!==null&&(e<0?r=a:i===void 0&&e<n&&(i=a))}c(i??r??e[0])},n=function(){u.current===null&&(u.current=requestAnimationFrame(()=>{u.current=null,t()}))};return document.addEventListener(`scroll`,n,{capture:!0,passive:!0}),t(),()=>{document.removeEventListener(`scroll`,n,{capture:!0}),u.current!==null&&(cancelAnimationFrame(u.current),u.current=null)}},h=[e,o,p],n[4]=o,n[5]=e,n[6]=p,n[7]=m,n[8]=h):(m=n[7],h=n[8]),(0,Z.useEffect)(m,h),s}function en(){return null}var tn=300;async function nn(e){let t=await fetch(`/api/page-headings?docName=${encodeURIComponent(e)}`),n;try{n=await t.json()}catch(e){throw new k(ae._({id:`qAQVSD`}),{cause:e,status:t.status})}if(!t.ok){let e=U.safeParse(n);throw e.success?Error(e.data.title):new k(ae._({id:`zlErBl`}),{status:t.status})}let r=W.safeParse(n);if(!r.success)throw new k(ae._({id:`XW18jo`}),{status:t.status});return r.data.headings??[]}var rn=32,an=12,on=6,sn=`open-knowledge:outline-nav`;function cn(e){let t=(0,Q.c)(2),n;return t[0]===e?n=t[1]:(n=(0,$.jsx)(de,{name:`outline-panel`,children:(0,$.jsx)(ln,{...e})}),t[0]=e,t[1]=n),n}function ln(e){let t=(0,Q.c)(53),{docName:n,isSourceMode:r,className:i}=e,a=i===void 0?``:i,{_:o}=_(),{pages:s,loading:c}=q(),l=v(),{activeProvider:d,activeDocName:f}=u(),p,m;t[0]===n?(p=t[1],m=t[2]):(p=[`page-headings`,n],m=()=>nn(n),t[0]=n,t[1]=p,t[2]=m);let h;t[3]!==n||t[4]!==c||t[5]!==s?(h=!c&&(s.has(n)||B(n)),t[3]=n,t[4]=c,t[5]=s,t[6]=h):h=t[6];let b;t[7]!==p||t[8]!==m||t[9]!==h?(b={queryKey:p,queryFn:m,enabled:h,staleTime:1/0},t[7]=p,t[8]=m,t[9]=h,t[10]=b):b=t[10];let{data:S,isLoading:C,error:w}=y(b),T;t[11]===S?T=t[12]:(T=S===void 0?[]:S,t[11]=S,t[12]=T);let E=T,D,O;t[13]!==f||t[14]!==d||t[15]!==n||t[16]!==l?(D=()=>{if(!d||f!==n)return;let e=d.document,t=null,r=()=>{t!==null&&clearTimeout(t),t=setTimeout(()=>{t=null,l.invalidateQueries({queryKey:[`page-headings`,n]})},tn)};return e.on(`update`,r),()=>{e.off(`update`,r),t!==null&&clearTimeout(t)}},O=[d,f,n,l],t[13]=f,t[14]=d,t[15]=n,t[16]=l,t[17]=D,t[18]=O):(D=t[17],O=t[18]),(0,Z.useEffect)(D,O);let k;t[19]===E?k=t[20]:(k=E.map(un),t[19]=E,t[20]=k);let A=k,j;t[21]!==n||t[22]!==r?(j={isSourceMode:r,docName:n},t[21]=n,t[22]=r,t[23]=j):j=t[23];let M=$t(A,j),N;t[24]!==M||t[25]!==E?(N=M?E.findIndex(e=>e.slug===M):-1,t[24]=M,t[25]=E,t[26]=N):N=t[26];let P=N,F;t[27]!==n||t[28]!==r?(F=function(e,t){let i={docName:n,index:e,slug:t,mode:r?`source`:`wysiwyg`};i.mode===`source`&&pt(n,{kind:`outline`,detail:i}),window.dispatchEvent(new CustomEvent(sn,{detail:i}))},t[27]=n,t[28]=r,t[29]=F):F=t[29];let I=F,L=((P>=0?E[P].level:1)-1)*an+(an-on)/2,R=P*rn+(rn-on)/2,z;t[30]===Symbol.for(`react.memo_cache_sentinel`)?(z=(0,$.jsx)(xe,{children:(0,$.jsx)(g,{id:`dD7NPy`})}),t[30]=z):z=t[30];let V;t[31]!==E.length||t[32]!==C?(V=!C&&(0,$.jsx)(we,{children:E.length}),t[31]=E.length,t[32]=C,t[33]=V):V=t[33];let H;t[34]===V?H=t[35]:(H=(0,$.jsxs)(Te,{children:[z,V]}),t[34]=V,t[35]=H);let U;t[36]!==o||t[37]!==P||t[38]!==M||t[39]!==w||t[40]!==I||t[41]!==E||t[42]!==C||t[43]!==L||t[44]!==R?(U=w?(0,$.jsx)(be,{className:`px-2`,children:w instanceof Error?w.message:o({id:`GuqOb1`})}):E.length===0&&!C?(0,$.jsx)(Se,{className:`px-2`,children:(0,$.jsx)(g,{id:`0BB9ID`})}):(0,$.jsxs)(`nav`,{"aria-label":o({id:`BymzO4`}),className:`relative`,children:[P>=0&&(0,$.jsx)(`div`,{"aria-hidden":`true`,className:`pointer-events-none absolute left-0 top-0 rounded-full bg-primary motion-safe:[transition:transform_0.25s_var(--ease-out-strong)]`,style:{width:on,height:on,transform:`translate(${L}px, ${R}px)`}}),E.map((e,t)=>{let n=e.slug===M;return(0,$.jsx)(`button`,{type:`button`,"aria-current":n?`location`:void 0,onClick:()=>I(t,e.slug),className:x(`w-full cursor-pointer truncate py-1.5 pe-2 text-left text-sm transition-colors`,n?`font-medium text-primary`:`text-muted-foreground hover:text-foreground`),style:{paddingLeft:`${(e.level-1)*an+20}px`},title:e.text,children:e.text},t)})]}),t[36]=o,t[37]=P,t[38]=M,t[39]=w,t[40]=I,t[41]=E,t[42]=C,t[43]=L,t[44]=R,t[45]=U):U=t[45];let W;t[46]!==C||t[47]!==U?(W=(0,$.jsx)(Ce,{className:`px-3 py-2`,"aria-busy":C,children:U}),t[46]=C,t[47]=U,t[48]=W):W=t[48];let G;return t[49]!==a||t[50]!==H||t[51]!==W?(G=(0,$.jsxs)(Ee,{className:a,children:[H,W]}),t[49]=a,t[50]=H,t[51]=W,t[52]=G):G=t[52],G}function un(e){return e.slug}function dn(e){return Math.min(50,Math.max(1,Math.ceil(e/10)))}function fn(e,t){return e===t||e%dn(t)===0}var pn=[250,500,1e3,2e3,4e3];function mn(e){return e.status===503&&e.problemType===`urn:ok:error:too-many-agent-sessions`}async function hn(e,t){let n=await t.fixItem(e);for(let r of pn){if(n.ok||!mn(n)||!t.shouldContinue()||(console.debug(`[sweep] capacity refusal, backing off %dms`,r),await t.sleep(r),!t.shouldContinue()))break;n=await t.fixItem(e)}return n}async function gn(e){let t=e.items.length,n=[];for(let[r,i]of e.items.entries()){if(r>0&&(await e.sleep(15),!e.shouldContinue()))return{failures:n,cancelled:!0};let a=await hn(i,e);if(a.ok||n.push({item:i,detail:a.errorDetail}),!e.shouldContinue())return{failures:n,cancelled:!0};let o=r+1;fn(o,t)&&e.onProgress(o,t)}return{failures:n,cancelled:!1}}function _n(e){return new Promise(t=>setTimeout(t,e))}var vn=`audit-superseded`;async function yn(e={kind:`project`}){return xn(e,H,!1)}async function bn(e={kind:`project`},t){return xn(e,L,!0,t)}async function xn(e,t,n,r){try{let i=new URLSearchParams;e.kind===`path`?i.set(`path`,e.path):e.kind===`doc`&&i.set(`doc`,e.docName),n&&i.set(`counts`,`1`);let a=i.size===0?``:`?${i}`,o=await fetch(`/api/audit${a}`,r===void 0?void 0:{signal:r});if(!o.ok)return o.status===409?vn:(console.warn(`[audit] request failed`,o.status,o.statusText),null);let s;try{s=await o.json()}catch{return r?.aborted===!0||console.warn(`[audit] response body is not valid JSON`),null}let c=t.safeParse(s);return c.success?c.data:(console.warn(`[audit] response failed schema validation`,c.error.issues),null)}catch(e){return r?.aborted===!0||console.warn(`[audit] fetch threw`,e),null}}function Sn(e){let t=(0,Q.c)(4),n;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=[],t[0]=n):n=t[0];let[r,i]=(0,Z.useState)(n),a,o;return t[1]===e?(a=t[2],o=t[3]):(a=()=>{if(i(Tn),e===null)return;let t=!1,n=()=>{yn({kind:`doc`,docName:e}).then(e=>{if(t||e===null||e===`audit-superseded`)return;let n=e.files.flatMap(wn).filter(Cn);i(e=>e.length===0&&n.length===0?e:n)})};n();let r=le(e=>{e.includes(`backlinks`)&&n()});return()=>{t=!0,r()}},o=[e],t[1]=e,t[2]=a,t[3]=o),(0,Z.useEffect)(a,o),r}function Cn(e){return e.source===`links`}function wn(e){return e.diagnostics}function Tn(e){return e.length===0?e:[]}var En={errorCount:0,warningCount:0},Dn=new Map,On=new Set,kn=new Map;function An(){let e=new Map;for(let[t,n]of Dn){let r=n.lint.errorCount+n.links.errorCount,i=n.lint.warningCount+n.links.warningCount;r===0&&i===0||e.set(t,{errorCount:r,warningCount:i})}kn=e;for(let e of On)e()}var jn=F;function Mn(e){return On.add(e),()=>{On.delete(e)}}function Nn(){return kn}function Pn(e){Dn.clear();for(let t of e)Dn.set(se(t.file),jn(t.diagnostics));An()}function Fn(e){Dn.clear();for(let t of e)Dn.set(se(t.file),{lint:t.lint,links:t.links});An()}function In(e,t){Dn.set(e,jn(t)),An()}function Ln(e,t,n){let r=Dn.get(e)??{lint:En,links:En},i=r[t];i.errorCount===n.errorCount&&i.warningCount===n.warningCount||(Dn.set(e,{...r,[t]:n}),An())}var Rn=`open-knowledge:lint-nav`;function zn(e,t){return e.range.start.line-t.range.start.line||e.range.start.character-t.range.start.character}function Bn(e,t){return{docName:e,line:t.range.start.line+1,column:t.range.start.character+1,source:t.source}}function Vn(e){let t=(0,Q.c)(35),{diagnostic:n,instanceCount:r}=e,{_:i}=_(),a=n.severity===`error`?K:J,o=n.range.start.line+1,s=n.source===`links`,c=r!==void 0&&r>1,l=n.severity===`error`?`text-destructive`:`text-amber-500`,u;t[0]===l?u=t[1]:(u=x(`mt-0.5 size-3.5 shrink-0`,l),t[0]=l,t[1]=u);let d;t[2]!==a||t[3]!==u?(d=(0,$.jsx)(a,{"aria-hidden":`true`,className:u}),t[2]=a,t[3]=u,t[4]=d):d=t[4];let f;t[5]===n.message?f=t[6]:(f=(0,$.jsx)(`span`,{className:`min-w-0 flex-1 text-foreground`,children:n.message}),t[5]=n.message,t[6]=f);let m;t[7]!==c||t[8]!==r?(m=c?(0,$.jsxs)(`span`,{className:`mt-0.5 flex shrink-0 items-center gap-1`,children:[(0,$.jsx)(X,{variant:`gray`,"data-testid":`problems-instance-count`,className:`h-4 px-1 font-sans text-[10px] leading-none`,children:(0,$.jsx)(g,{id:`iZCZmF`,values:{instanceCount:r}})}),(0,$.jsx)(te,{"aria-hidden":`true`,className:`size-3 text-muted-foreground transition-transform group-data-[state=open]:rotate-90 motion-reduce:transition-none`})]}):null,t[7]=c,t[8]=r,t[9]=m):m=t[9];let h;t[10]!==d||t[11]!==f||t[12]!==m?(h=(0,$.jsxs)(`span`,{className:`flex items-start gap-1.5 text-sm`,children:[d,f,m]}),t[10]=d,t[11]=f,t[12]=m,t[13]=h):h=t[13];let v=s&&`gap-0.5`,y;t[14]===v?y=t[15]:(y=x(`h-4 shrink-0 px-1 font-sans text-[10px] uppercase leading-none`,v),t[14]=v,t[15]=y);let b;t[16]===s?b=t[17]:(b=s?(0,$.jsx)(p,{"aria-hidden":`true`,className:`size-2.5`}):null,t[16]=s,t[17]=b);let S;t[18]!==n.source||t[19]!==y||t[20]!==b?(S=(0,$.jsxs)(X,{variant:`gray`,"data-testid":`problems-source-tag`,className:y,children:[b,n.source]}),t[18]=n.source,t[19]=y,t[20]=b,t[21]=S):S=t[21];let C;t[22]!==i||t[23]!==n.code||t[24]!==o||t[25]!==c?(C=c?n.code:`${n.code} · ${i({id:`enPTnx`,values:{displayLine:o}})}`,t[22]=i,t[23]=n.code,t[24]=o,t[25]=c,t[26]=C):C=t[26];let w;t[27]===C?w=t[28]:(w=(0,$.jsx)(`span`,{className:`min-w-0 truncate`,children:C}),t[27]=C,t[28]=w);let T;t[29]!==S||t[30]!==w?(T=(0,$.jsxs)(`span`,{className:`flex items-center gap-1.5 ps-5 font-mono text-xs text-muted-foreground`,children:[S,w]}),t[29]=S,t[30]=w,t[31]=T):T=t[31];let E;return t[32]!==T||t[33]!==h?(E=(0,$.jsxs)($.Fragment,{children:[h,T]}),t[32]=T,t[33]=h,t[34]=E):E=t[34],E}function Hn(e){let t=new Map;for(let n of e){let e=`${n.source}/${n.code}\u0000${n.linkTarget??``}\u0000${n.message}`,r=t.get(e);r===void 0?t.set(e,{key:e,instances:[n]}):r.instances.push(n)}return[...t.values()]}function Un(e){let t=(0,Q.c)(43),{group:n,onNavigate:r,navTitle:i,renderActions:a}=e,{_:o}=_(),s=n.instances[0];if(n.instances.length===1){let e;t[0]!==s||t[1]!==a?(e=a(s),t[0]=s,t[1]=a,t[2]=e):e=t[2];let n=e,o;t[3]!==s||t[4]!==r?(o=()=>r(s),t[3]=s,t[4]=r,t[5]=o):o=t[5];let c;t[6]!==s||t[7]!==i?(c=i(s),t[6]=s,t[7]=i,t[8]=c):c=t[8];let l;t[9]===s?l=t[10]:(l=(0,$.jsx)(Vn,{diagnostic:s}),t[9]=s,t[10]=l);let u;t[11]!==o||t[12]!==c||t[13]!==l?(u=(0,$.jsx)(`button`,{type:`button`,onClick:o,className:`flex w-full cursor-pointer flex-col gap-0.5 rounded px-2 py-1.5 text-left`,title:c,children:l}),t[11]=o,t[12]=c,t[13]=l,t[14]=u):u=t[14];let d;t[15]===n?d=t[16]:(d=n===null?null:(0,$.jsx)(`div`,{className:`absolute bottom-1 right-1 flex items-center gap-1 rounded bg-muted opacity-0 transition-opacity focus-within:opacity-100 group-hover:opacity-100 motion-reduce:transition-none`,children:n}),t[15]=n,t[16]=d);let f;return t[17]!==u||t[18]!==d?(f=(0,$.jsxs)(`li`,{className:`group relative rounded transition-colors hover:bg-muted`,children:[u,d]}),t[17]=u,t[18]=d,t[19]=f):f=t[19],f}let c;t[20]!==s||t[21]!==n.instances.length?(c=(0,$.jsx)(D,{className:`group flex w-full cursor-pointer flex-col gap-0.5 rounded px-2 py-1.5 text-left transition-colors hover:bg-muted`,children:(0,$.jsx)(Vn,{diagnostic:s,instanceCount:n.instances.length})}),t[20]=s,t[21]=n.instances.length,t[22]=c):c=t[22];let l;t[23]!==o||t[24]!==s.message?(l=o({id:`EUiJEM`,values:{0:s.message}}),t[23]=o,t[24]=s.message,t[25]=l):l=t[25];let u;if(t[26]!==o||t[27]!==n.instances||t[28]!==i||t[29]!==r||t[30]!==a){let e;t[32]!==o||t[33]!==i||t[34]!==r||t[35]!==a?(e=e=>{let t=a(e),n=e.range.start.line+1;return(0,$.jsxs)(`li`,{className:`group relative rounded transition-colors hover:bg-muted`,children:[(0,$.jsx)(`button`,{type:`button`,onClick:()=>r(e),className:`flex w-full cursor-pointer rounded px-2 py-1 text-left font-mono text-xs text-muted-foreground`,title:i(e),"aria-label":o({id:`uCe4AX`,values:{0:e.message,displayLine:n}}),children:o({id:`enPTnx`,values:{displayLine:n}})}),t===null?null:(0,$.jsx)(`div`,{className:`absolute bottom-0.5 right-1 flex items-center gap-1 rounded bg-muted opacity-0 transition-opacity focus-within:opacity-100 group-hover:opacity-100 motion-reduce:transition-none`,children:t})]},Wn(e))},t[32]=o,t[33]=i,t[34]=r,t[35]=a,t[36]=e):e=t[36],u=n.instances.map(e),t[26]=o,t[27]=n.instances,t[28]=i,t[29]=r,t[30]=a,t[31]=u}else u=t[31];let d;t[37]!==l||t[38]!==u?(d=(0,$.jsx)(E,{className:`overflow-hidden data-[state=open]:animate-[collapsible-down_150ms_ease-out] data-[state=closed]:animate-[collapsible-up_150ms_ease-in] motion-reduce:animate-none`,children:(0,$.jsx)(`ul`,{"aria-label":l,className:`flex flex-col gap-0.5 pb-1 ps-5`,"data-testid":`problems-duplicate-instances`,children:u})}),t[37]=l,t[38]=u,t[39]=d):d=t[39];let f;return t[40]!==c||t[41]!==d?(f=(0,$.jsx)(`li`,{className:`rounded`,"data-testid":`problems-duplicate-group`,children:(0,$.jsxs)(O,{children:[c,d]})}),t[40]=c,t[41]=d,t[42]=f):f=t[42],f}function Wn(e){return`${e.source}/${e.code}-${e.range.start.line}-${e.range.start.character}-${e.message}`}function Gn(e){return e.reduce((e,t)=>e+ +((t.fixes?.length??0)>0),0)}function Kn(e){let t=(0,Q.c)(11),{target:n,creating:r,disabled:i,onCreate:a}=e,{_:o}=_(),s;t[0]!==o||t[1]!==n?(s=o({id:`oWsZk8`,values:{target:n}}),t[0]=o,t[1]=n,t[2]=s):s=t[2];let c;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,$.jsx)(j,{"aria-hidden":`true`,className:`size-3`}),t[3]=c):c=t[3];let l;t[4]===r?l=t[5]:(l=r?(0,$.jsx)(g,{id:`E9bKSA`}):(0,$.jsx)(g,{id:`XRuL0i`}),t[4]=r,t[5]=l);let u;return t[6]!==i||t[7]!==a||t[8]!==s||t[9]!==l?(u=(0,$.jsxs)(S,{size:`sm`,variant:`ghost`,className:`h-6 shrink-0 px-2 text-xs`,disabled:i,onClick:a,"aria-label":s,"data-testid":`problems-create-page`,children:[c,l]}),t[6]=i,t[7]=a,t[8]=s,t[9]=l,t[10]=u):u=t[10],u}function qn(e){let t=(0,Q.c)(8),{tip:n,testId:r,children:i}=e,a;t[0]===i?a=t[1]:(a=(0,$.jsx)(C,{asChild:!0,children:(0,$.jsx)(`span`,{className:`inline-flex shrink-0`,children:i})}),t[0]=i,t[1]=a);let o;t[2]!==r||t[3]!==n?(o=(0,$.jsx)(w,{"data-testid":r,children:n}),t[2]=r,t[3]=n,t[4]=o):o=t[4];let s;return t[5]!==a||t[6]!==o?(s=(0,$.jsxs)(T,{children:[a,o]}),t[5]=a,t[6]=o,t[7]=s):s=t[7],s}function Jn(e){let t=(0,Q.c)(21),{count:n,problemCount:r,aiAvailable:i,disabled:a,onClick:o,children:s}=e,{_:c}=_(),l;t[0]!==i||t[1]!==n||t[2]!==r?(l=n>0?(0,$.jsx)(g,{id:`vjwsDi`,values:{count:n}}):r===0?(0,$.jsx)(g,{id:`gAhHu7`}):i?(0,$.jsx)(g,{id:`zA9zRL`}):(0,$.jsx)(g,{id:`X3MMeA`}),t[0]=i,t[1]=n,t[2]=r,t[3]=l):l=t[3];let u;t[4]!==c||t[5]!==s||t[6]!==n||t[7]!==r?(u=s===void 0?r===0?c({id:`4m-xuX`}):n===0?c({id:`SqIoy_`}):void 0:void 0,t[4]=c,t[5]=s,t[6]=n,t[7]=r,t[8]=u):u=t[8];let d;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,$.jsx)(ie,{"aria-hidden":`true`,className:`size-3`}),t[9]=d):d=t[9];let f;t[10]!==s||t[11]!==n?(f=s??(0,$.jsx)(g,{id:`RZXTlY`,values:{count:n}}),t[10]=s,t[11]=n,t[12]=f):f=t[12];let p;t[13]!==a||t[14]!==o||t[15]!==u||t[16]!==f?(p=(0,$.jsxs)(S,{size:`sm`,variant:`ghost`,className:`h-6 shrink-0 px-2 text-xs`,disabled:a,onClick:o,"aria-label":u,"data-testid":`problems-auto-fix`,children:[d,f]}),t[13]=a,t[14]=o,t[15]=u,t[16]=f,t[17]=p):p=t[17];let m;return t[18]!==l||t[19]!==p?(m=(0,$.jsx)(qn,{testId:`problems-auto-fix-tip`,tip:l,children:p}),t[18]=l,t[19]=p,t[20]=m):m=t[20],m}function Yn(e){let t=(0,Q.c)(12),{count:n,disabled:r,onClick:i}=e,a;t[0]===n?a=t[1]:(a=(0,$.jsx)(g,{id:`mgDKWS`,values:{count:n}}),t[0]=n,t[1]=a);let s;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,$.jsx)(o,{"aria-hidden":`true`,className:`size-3`}),t[2]=s):s=t[2];let c;t[3]===n?c=t[4]:(c=(0,$.jsx)(g,{id:`gyHDWC`,values:{count:n}}),t[3]=n,t[4]=c);let l;t[5]!==r||t[6]!==i||t[7]!==c?(l=(0,$.jsxs)(S,{size:`sm`,variant:`ghost`,className:`h-6 shrink-0 px-2 text-xs`,disabled:r,onClick:i,"data-testid":`problems-fix-with-ai`,children:[s,c]}),t[5]=r,t[6]=i,t[7]=c,t[8]=l):l=t[8];let u;return t[9]!==a||t[10]!==l?(u=(0,$.jsx)(qn,{testId:`problems-fix-with-ai-tip`,tip:a,children:l}),t[9]=a,t[10]=l,t[11]=u):u=t[11],u}function Xn(e){let t=(0,Q.c)(19),{docName:r,diagnostics:i,onFix:a,onAutoFix:s,onAskAi:c,onFixWithAi:l}=e,{_:u}=_(),[d,f]=(0,Z.useState)(`doc`),{data:p}=je(),m=p===null?null:p.effective.enabled?De.filter(e=>p.effective.plugins[e.id].enabled):[],h=m!==null&&m.length===0,v;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(v={status:`idle`},t[0]=v):v=t[0];let[y,b]=(0,Z.useState)(v),[x,E]=(0,Z.useState)(null),D=ne(),[O,k]=(0,Z.useState)(null),A=(0,Z.useRef)(!0),j=(0,Z.useRef)(!1),M,N;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(M=()=>(A.current=!0,()=>{A.current=!1}),N=[],t[1]=M,t[2]=N):(M=t[1],N=t[2]),(0,Z.useEffect)(M,N);let P=(0,Z.useRef)(ir),F;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(F={status:`idle`},t[3]=F):F=t[3];let I=(0,Z.useRef)(F),L;t[4]===y?L=t[5]:(L=()=>{y.status!==`loading`&&(I.current=y)},t[4]=y,t[5]=L),(0,Z.useEffect)(L);let R=(0,Z.useRef)(0),z=[...i].sort(zn),B=Gn(z),V=async function(e){let t=e.linkTarget;if(!(t===void 0||O!==null||D===null)){k(t);try{await n({initialDir:``,suggestedName:t},{addPage:D.addPage})}catch(e){let t=e;Y.error(t instanceof Error?t.message:u({id:`tfi40B`})),A.current&&k(null);return}Y.success(u({id:`EWCJFu`,values:{target:t}})),A.current&&k(null),A.current&&y.status===`loaded`&&await H()}};async function H(){R.current+=1;let e=R.current,t=I.current;b({status:`loading`});let n=await yn();if(n===`audit-superseded`){R.current===e&&A.current&&b(t.status===`idle`?{status:`failed`}:t);return}n!==null&&Pn(n.files),A.current&&b(n===null?{status:`failed`}:{status:`loaded`,result:n})}let U=y.status===`loaded`?y.result.files.filter(nr):[],W;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(W=function(){j.current=!0},t[6]=W):W=t[6];let G=W,ee=async function(){if(x!==null||U.length===0)return;let e=U.length;j.current=!1,E({done:0,total:e});let{failures:t,cancelled:n}=await gn({items:U,fixItem:tr,sleep:_n,onProgress:e=>E(t=>t===null?t:{...t,done:e}),shouldContinue:()=>A.current&&!j.current});if(!(n&&!A.current)){if(E(null),t.length>0&&(console.warn(`[lint] fix-all: ${t.length} of ${U.length} files failed`,t.map(er)),!n)){let e=t[0];Y.error(u({id:`fru3T7`,values:{0:t.length,1:U.length}}),{description:e===void 0?void 0:`${e.item.file}${e.detail===null?``:` — ${e.detail}`}`})}n&&Y.info(u({id:`H1TmTu`}));try{await H()}catch{A.current&&b({status:`failed`})}}},te=function(e){f(e),e===`project`&&y.status===`idle`&&H()};(0,Z.useEffect)(()=>{P.current=()=>{y.status===`idle`||y.status===`failed`||H()}});let K;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(K=[],t[7]=K):K=t[7],(0,Z.useEffect)(()=>Ae(()=>P.current()),K);let q;t[8]===r?q=t[9]:(q=function(e){let t=Bn(r,e);pt(r,{kind:`lint`,detail:t}),window.dispatchEvent(new CustomEvent(Rn,{detail:t}))},t[8]=r,t[9]=q);let re=q,J;t[10]!==r||t[11]!==re?(J=function(e,t){let n=se(e);if(n===r){re(t);return}pt(n,{kind:`lint`,detail:Bn(n,t)}),window.location.hash=oe(n)},t[10]=r,t[11]=re,t[12]=J):J=t[12];let ae=J,le=function(e){let t=a!==void 0&&(e.fixes?.length??0)>0,n=e.linkTarget!==void 0&&D!==null;if(!t&&!n&&c===void 0)return null;let r=`${e.source}/${e.code}`;return(0,$.jsxs)($.Fragment,{children:[n?(0,$.jsx)(Kn,{target:e.linkTarget??``,creating:O===e.linkTarget,disabled:O!==null,onCreate:()=>void V(e)}):null,t?(0,$.jsxs)(S,{size:`sm`,variant:`ghost`,className:`h-6 shrink-0 px-2 text-xs`,onClick:()=>a?.(e),"aria-label":u({id:`fZj9em`,values:{flatId:r}}),"data-testid":`problems-fix`,children:[(0,$.jsx)(ie,{"aria-hidden":`true`,className:`size-3`}),(0,$.jsx)(g,{id:`c4fVUV`})]}):null,c===void 0?null:(0,$.jsxs)(S,{size:`sm`,variant:`ghost`,className:`h-6 shrink-0 px-2 text-xs`,onClick:()=>c(e),"aria-label":u({id:`hh4mVC`,values:{flatId:r}}),"data-testid":`problems-ask-ai`,children:[(0,$.jsx)(o,{"aria-hidden":`true`,className:`size-3`}),(0,$.jsx)(g,{id:`xWEvuo`})]})]})},ue;t[13]===Symbol.for(`react.memo_cache_sentinel`)?(ue=(0,$.jsx)(xe,{children:(0,$.jsx)(g,{id:`OXdGnd`})}),t[13]=ue):ue=t[13];let de=m!==null&&m.length>0&&(0,$.jsxs)(T,{children:[(0,$.jsx)(C,{className:`shrink-0 cursor-default rounded-md bg-muted-foreground/5 px-2 py-1 font-mono text-xs text-muted-foreground`,"data-testid":`problems-active-plugins`,children:(0,$.jsx)(g,{id:`yxF19Y`,values:{0:m.length}})}),(0,$.jsx)(w,{"data-testid":`problems-active-plugins-tooltip`,children:(0,$.jsx)(g,{id:`ws5o1F`,values:{0:m.map($n).join(`, `)}})})]}),X;t[14]===de?X=t[15]:(X=(0,$.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[ue,de]}),t[14]=de,t[15]=X);let fe=d===`doc`&&z.length>0&&(0,$.jsx)(we,{children:z.length}),pe;return t[16]!==X||t[17]!==fe?(pe=(0,$.jsxs)(Te,{children:[X,fe]}),t[16]=X,t[17]=fe,t[18]=pe):pe=t[18],(0,$.jsxs)(Ee,{children:[pe,(0,$.jsx)(Wt,{scope:d,onScopeChange:te}),d===`doc`?(0,$.jsx)(Ce,{className:`px-2 py-2`,children:z.length===0?h?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(Se,{className:`px-2`,"data-testid":`problems-no-plugins`,children:(0,$.jsx)(g,{id:`Hngy37`})}),(0,$.jsx)(`div`,{className:`px-2 pt-2`,children:(0,$.jsx)(S,{variant:`outline`,size:`sm`,onClick:ce,"data-testid":`problems-enable-plugins`,children:(0,$.jsx)(g,{id:`rnX-1S`})})})]}):(0,$.jsx)(Se,{className:`px-2`,children:(0,$.jsx)(g,{id:`ZI8uvA`})}):(0,$.jsxs)($.Fragment,{children:[s!==void 0||l!==void 0?(0,$.jsxs)(`div`,{className:`flex flex-wrap items-center justify-end gap-1 px-2 pb-1`,children:[s!==void 0&&(0,$.jsx)(Jn,{count:B,problemCount:z.length,aiAvailable:l!==void 0,disabled:B===0,onClick:s}),l!==void 0&&(0,$.jsx)(Yn,{count:z.length,disabled:!1,onClick:()=>l(`doc`)})]}):null,(0,$.jsx)(`ul`,{"aria-label":u({id:`OXdGnd`}),className:`flex flex-col gap-0.5`,children:Hn(z).map(e=>(0,$.jsx)(Un,{group:e,onNavigate:re,navTitle:e=>u({id:`vbMHjo`,values:{0:e.range.start.line+1}}),renderActions:le},e.key))})]})}):(0,$.jsx)(ar,{audit:y,onRefresh:()=>void H(),onNavigate:ae,fixableCount:U.reduce(Qn,0),problemCount:y.status===`loaded`?y.result.files.reduce(Zn,0):0,fixing:x,onAutoFix:()=>void ee(),onCancelFix:G,onFixWithAi:l===void 0||y.status!==`loaded`?void 0:()=>l(`project`),onCreateTarget:D===null?void 0:e=>void V(e),creatingTarget:O})]})}function Zn(e,t){return e+t.diagnostics.length}function Qn(e,t){return e+Gn(t.diagnostics)}function $n(e){return e.label}function er(e){return{file:e.item.file,detail:e.detail}}function tr(e){return ke(se(e.file))}function nr(e){return e.diagnostics.some(rr)}function rr(e){return(e.fixes?.length??0)>0}function ir(){}function ar(e){let t=(0,Q.c)(81),{audit:n,onRefresh:r,onNavigate:i,fixableCount:a,problemCount:o,fixing:s,onAutoFix:c,onCancelFix:l,onFixWithAi:u,onCreateTarget:d,creatingTarget:f}=e,{_:p}=_(),m=n.status===`loading`||n.status===`idle`,h;t[0]!==n.result||t[1]!==n.status?(h=n.status===`loaded`?n.result.files:[],t[0]=n.result,t[1]=n.status,t[2]=h):h=t[2];let v=h,[y,b]=(0,Z.useState)(cr),x;t[3]!==y||t[4]!==v?(x=v.length>0&&v.every(e=>y.has(e.file)),t[3]=y,t[4]=v,t[5]=x):x=t[5];let E=x,D;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(D=function(e,t){b(n=>{let r=new Set(n);return t?r.add(e):r.delete(e),r})},t[6]=D):D=t[6];let O=D,k;t[7]!==E||t[8]!==v?(k=function(){b(E?new Set:new Set(v.map(sr)))},t[7]=E,t[8]=v,t[9]=k):k=t[9];let A=k,j;t[10]!==n.result||t[11]!==n.status?(j=n.status===`loaded`&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(g,{id:`DsDwR-`,values:{0:n.result.errorCount}}),` · `,(0,$.jsx)(g,{id:`W1SI2K`,values:{0:n.result.warningCount}})]}),t[10]=n.result,t[11]=n.status,t[12]=j):j=t[12];let M;t[13]===j?M=t[14]:(M=(0,$.jsx)(`p`,{className:`min-w-0 truncate text-xs text-muted-foreground`,"data-testid":`problems-audit-summary`,children:j}),t[13]=j,t[14]=M);let N;t[15]!==p||t[16]!==E||t[17]!==v.length||t[18]!==A?(N=v.length>0?(0,$.jsxs)(T,{children:[(0,$.jsx)(C,{asChild:!0,children:(0,$.jsx)(S,{variant:`ghost`,size:`icon`,className:`size-6 shrink-0 text-muted-foreground`,"aria-label":p(E?{id:`I4LGsH`}:{id:`Ugvy4O`}),"data-testid":`problems-audit-expand-toggle`,onClick:A,children:E?(0,$.jsx)(Me,{"aria-hidden":`true`,className:`size-3.5`}):(0,$.jsx)(Ne,{"aria-hidden":`true`,className:`size-3.5`})})}),(0,$.jsx)(w,{"data-testid":`problems-audit-expand-toggle-tooltip`,children:E?(0,$.jsx)(g,{id:`I4LGsH`}):(0,$.jsx)(g,{id:`Ugvy4O`})})]}):null,t[15]=p,t[16]=E,t[17]=v.length,t[18]=A,t[19]=N):N=t[19];let P;t[20]===p?P=t[21]:(P=p({id:`I7y_vn`}),t[20]=p,t[21]=P);let F=m||s!==null,I;t[22]===Symbol.for(`react.memo_cache_sentinel`)?(I=(0,$.jsx)(re,{"aria-hidden":`true`,className:`size-3.5`}),t[22]=I):I=t[22];let L;t[23]!==r||t[24]!==P||t[25]!==F?(L=(0,$.jsx)(C,{asChild:!0,children:(0,$.jsx)(S,{variant:`ghost`,size:`icon`,className:`size-6 shrink-0 text-muted-foreground`,"aria-label":P,"data-testid":`problems-audit-refresh`,disabled:F,onClick:r,children:I})}),t[23]=r,t[24]=P,t[25]=F,t[26]=L):L=t[26];let R;t[27]===Symbol.for(`react.memo_cache_sentinel`)?(R=(0,$.jsx)(w,{"data-testid":`problems-audit-refresh-tooltip`,children:(0,$.jsx)(g,{id:`I7y_vn`})}),t[27]=R):R=t[27];let z;t[28]===L?z=t[29]:(z=(0,$.jsxs)(T,{children:[L,R]}),t[28]=L,t[29]=z);let B;t[30]!==z||t[31]!==N?(B=(0,$.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1`,children:[N,z]}),t[30]=z,t[31]=N,t[32]=B):B=t[32];let V;t[33]!==B||t[34]!==M?(V=(0,$.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[M,B]}),t[33]=B,t[34]=M,t[35]=V):V=t[35];let H;t[36]!==p||t[37]!==s?(H=s===null?null:(0,$.jsx)(`span`,{className:`sr-only`,role:`status`,children:p({id:`gZElfU`,values:{0:s.done,1:s.total}})}),t[36]=p,t[37]=s,t[38]=H):H=t[38];let U;t[39]!==p||t[40]!==s||t[41]!==l?(U=s===null?null:(0,$.jsxs)(T,{children:[(0,$.jsx)(C,{asChild:!0,children:(0,$.jsx)(S,{variant:`ghost`,size:`sm`,className:`h-6 shrink-0 px-2 text-muted-foreground`,"aria-label":p({id:`q2cLM6`}),"data-testid":`problems-cancel-fix`,onClick:l,children:(0,$.jsx)(g,{id:`ygCKqB`})})}),(0,$.jsx)(w,{"data-testid":`problems-cancel-fix-tooltip`,children:(0,$.jsx)(g,{id:`yvSAuM`})})]}),t[39]=p,t[40]=s,t[41]=l,t[42]=U):U=t[42];let W=u!==void 0,G=m||s!==null||a===0,ee;t[43]===s?ee=t[44]:(ee=s===null?void 0:(0,$.jsx)(g,{id:`S9t1PI`,values:{0:s.done,1:s.total}}),t[43]=s,t[44]=ee);let te;t[45]!==a||t[46]!==c||t[47]!==o||t[48]!==W||t[49]!==G||t[50]!==ee?(te=(0,$.jsx)(Jn,{count:a,problemCount:o,aiAvailable:W,disabled:G,onClick:c,children:ee}),t[45]=a,t[46]=c,t[47]=o,t[48]=W,t[49]=G,t[50]=ee,t[51]=te):te=t[51];let K;t[52]!==s||t[53]!==u||t[54]!==o?(K=u!==void 0&&o>0?(0,$.jsx)(Yn,{count:o,disabled:s!==null,onClick:u}):null,t[52]=s,t[53]=u,t[54]=o,t[55]=K):K=t[55];let q;t[56]!==H||t[57]!==U||t[58]!==te||t[59]!==K?(q=(0,$.jsxs)(`div`,{className:`flex flex-wrap items-center justify-end gap-1`,children:[H,U,te,K]}),t[56]=H,t[57]=U,t[58]=te,t[59]=K,t[60]=q):q=t[60];let ne;t[61]!==V||t[62]!==q?(ne=(0,$.jsxs)(`div`,{className:`flex flex-col gap-1 px-2 pb-1`,children:[V,q]}),t[61]=V,t[62]=q,t[63]=ne):ne=t[63];let J;t[64]!==p||t[65]!==m?(J=m&&(0,$.jsx)(`div`,{className:`flex flex-col gap-1`,role:`status`,"aria-busy":`true`,"aria-label":p({id:`dx-TwN`}),children:[1,2,3].map(or)}),t[64]=p,t[65]=m,t[66]=J):J=t[66];let ie;t[67]===n.status?ie=t[68]:(ie=n.status===`failed`&&(0,$.jsx)(be,{className:`px-2 text-xs`,children:(0,$.jsx)(g,{id:`IFezUv`})}),t[67]=n.status,t[68]=ie);let Y;t[69]!==n.result||t[70]!==n.status||t[71]!==f||t[72]!==y||t[73]!==d||t[74]!==i?(Y=n.status===`loaded`&&(0,$.jsx)(lr,{result:n.result,onNavigate:i,onCreateTarget:d,creatingTarget:f,expandedFiles:y,onToggleFile:O}),t[69]=n.result,t[70]=n.status,t[71]=f,t[72]=y,t[73]=d,t[74]=i,t[75]=Y):Y=t[75];let ae;return t[76]!==ne||t[77]!==J||t[78]!==ie||t[79]!==Y?(ae=(0,$.jsxs)(Ce,{className:`px-2 py-2`,"data-testid":`problems-project-scope`,children:[ne,J,ie,Y]}),t[76]=ne,t[77]=J,t[78]=ie,t[79]=Y,t[80]=ae):ae=t[80],ae}function or(e){return(0,$.jsxs)(`div`,{className:`flex items-start gap-2.5 rounded px-2 py-1.5`,children:[(0,$.jsx)(Oe,{className:`mt-0.5 size-3.5 shrink-0 rounded`}),(0,$.jsxs)(`div`,{className:`flex-1 space-y-1.5`,children:[(0,$.jsx)(Oe,{className:`h-3 w-28`}),(0,$.jsx)(Oe,{className:`h-3 w-40`})]})]},e)}function sr(e){return e.file}function cr(){return new Set}function lr(e){let t=(0,Q.c)(14),{result:n,onNavigate:r,onCreateTarget:i,creatingTarget:a,expandedFiles:o,onToggleFile:s}=e,{_:c}=_(),l;t[0]!==c||t[1]!==n.warnings?(l=n.warnings.length>0&&(0,$.jsx)(`ul`,{"aria-label":c({id:`Rsdhj9`}),className:`flex flex-col gap-0.5 pb-1`,children:n.warnings.map(ur)}),t[0]=c,t[1]=n.warnings,t[2]=l):l=t[2];let u;t[3]!==a||t[4]!==o||t[5]!==i||t[6]!==r||t[7]!==s||t[8]!==n.fileCount||t[9]!==n.files?(u=n.files.length===0?(0,$.jsx)(Se,{className:`px-2`,children:(0,$.jsx)(g,{id:`k_Dqw1`,values:{0:n.fileCount}})}):n.files.map(e=>(0,$.jsx)(dr,{file:e,onNavigate:r,onCreateTarget:i,creatingTarget:a,open:o.has(e.file),onOpenChange:t=>s(e.file,t)},e.file)),t[3]=a,t[4]=o,t[5]=i,t[6]=r,t[7]=s,t[8]=n.fileCount,t[9]=n.files,t[10]=u):u=t[10];let d;return t[11]!==l||t[12]!==u?(d=(0,$.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[l,u]}),t[11]=l,t[12]=u,t[13]=d):d=t[13],d}function ur(e,t){return(0,$.jsxs)(`li`,{className:`flex items-start gap-1.5 px-2 text-xs`,children:[(0,$.jsx)(J,{"aria-hidden":`true`,className:`mt-0.5 size-3.5 shrink-0 text-amber-500`}),(0,$.jsx)(`span`,{className:`min-w-0 text-foreground`,children:e})]},`${t}-${e}`)}function dr(e){let t=(0,Q.c)(45),{file:n,onNavigate:r,onCreateTarget:i,creatingTarget:a,open:o,onOpenChange:s}=e,{_:c}=_(),l,u,d,f,p,m,h,g,v,y;if(t[0]!==c||t[1]!==a||t[2]!==n.diagnostics||t[3]!==n.file||t[4]!==i||t[5]!==r||t[6]!==s||t[7]!==o){let e=[...n.diagnostics].sort(zn);u=O,h=o,g=s,v=`problems-audit-group`;let _;t[18]===Symbol.for(`react.memo_cache_sentinel`)?(_=(0,$.jsx)(te,{"aria-hidden":`true`,className:`size-3.5 shrink-0 text-muted-foreground transition-transform group-data-[state=open]:rotate-90 motion-reduce:transition-none`}),t[18]=_):_=t[18];let b;t[19]===n.file?b=t[20]:(b=(0,$.jsx)(`span`,{className:`min-w-0 flex-1 truncate font-mono text-xs text-foreground`,title:n.file,children:n.file}),t[19]=n.file,t[20]=b),y=(0,$.jsxs)(D,{className:`group flex w-full cursor-pointer items-center gap-1.5 rounded px-2 py-1.5 text-left transition-colors hover:bg-muted`,children:[_,b,(0,$.jsx)(X,{variant:`gray`,"data-testid":`problems-audit-file-count`,className:`shrink-0`,children:e.length})]}),l=E,m=`overflow-hidden data-[state=open]:animate-[collapsible-down_150ms_ease-out] data-[state=closed]:animate-[collapsible-up_150ms_ease-in] motion-reduce:animate-none`,t[21]!==c||t[22]!==n.file?(d=c({id:`zAJzIg`,values:{0:n.file}}),t[21]=c,t[22]=n.file,t[23]=d):d=t[23],f=`flex flex-col gap-0.5 pb-1 ps-3`;let x;t[24]!==c||t[25]!==a||t[26]!==n.file||t[27]!==i||t[28]!==r?(x=e=>(0,$.jsx)(Un,{group:e,onNavigate:e=>r(n.file,e),navTitle:e=>c({id:`xKDsGS`,values:{0:e.range.start.line+1,1:n.file}}),renderActions:e=>e.linkTarget===void 0||i===void 0?null:(0,$.jsx)(Kn,{target:e.linkTarget,creating:a===e.linkTarget,disabled:a!==null,onCreate:()=>i(e)})},e.key),t[24]=c,t[25]=a,t[26]=n.file,t[27]=i,t[28]=r,t[29]=x):x=t[29],p=Hn(e).map(x),t[0]=c,t[1]=a,t[2]=n.diagnostics,t[3]=n.file,t[4]=i,t[5]=r,t[6]=s,t[7]=o,t[8]=l,t[9]=u,t[10]=d,t[11]=f,t[12]=p,t[13]=m,t[14]=h,t[15]=g,t[16]=v,t[17]=y}else l=t[8],u=t[9],d=t[10],f=t[11],p=t[12],m=t[13],h=t[14],g=t[15],v=t[16],y=t[17];let b;t[30]!==d||t[31]!==f||t[32]!==p?(b=(0,$.jsx)(`ul`,{"aria-label":d,className:f,children:p}),t[30]=d,t[31]=f,t[32]=p,t[33]=b):b=t[33];let x;t[34]!==l||t[35]!==m||t[36]!==b?(x=(0,$.jsx)(l,{className:m,children:b}),t[34]=l,t[35]=m,t[36]=b,t[37]=x):x=t[37];let S;return t[38]!==u||t[39]!==x||t[40]!==h||t[41]!==g||t[42]!==v||t[43]!==y?(S=(0,$.jsxs)(u,{open:h,onOpenChange:g,"data-testid":v,children:[y,x]}),t[38]=u,t[39]=x,t[40]=h,t[41]=g,t[42]=v,t[43]=y,t[44]=S):S=t[44],S}var fr={words:0,chars:0,tokens:0},pr=/[ -〿-ゟ゠-ヿ㐀-䶿一-鿿豈---ក-]/,mr=/[\p{L}\p{N}]/u,hr=new Set([`text`,`inlineCode`,`code`,`tag`]),gr=new Set([`html`,`definition`,`footnoteDefinition`,`yaml`,`toml`,`image`,`imageReference`,`mdxFlowExpression`,`mdxTextExpression`,`mdxjsEsm`,`rawMdxFallback`,`rawMdxFallbackMdast`]),_r=new Set([`paragraph`,`heading`,`blockquote`,`list`,`listItem`,`thematicBreak`,`table`,`tableRow`,`tableCell`,`mdxJsxFlowElement`,`commentBlock`]);function vr(e,t){if(!e)return;let n=e.type;if(!gr.has(n)){if(hr.has(n)){e.value&&(t.push(e.value),n===`code`&&t.push(`
|
|
4
|
-
`));return}if(n===`wikiLink`||n===`wikiLinkEmbed`){let n=e.data?.alias??e.value??``;n&&t.push(n);return}if(Array.isArray(e.children)){for(let n of e.children)vr(n,t);if(_r.has(n)&&t.length>0){let e=t[t.length-1];e&&!e.endsWith(`
|
|
5
|
-
`)&&t.push(`
|
|
6
|
-
`)}}}}function yr(e){try{let t=M().parseToMdast(e),n=[];return vr(t,n),n.join(``).trim()}catch(t){return console.warn(`[document-stats] mdast parse failed, falling back to raw text`,t),e.trim()}}function br(e){if(!e)return 0;let t=0;for(let n of e.split(/\s+/))mr.test(n)&&t++;return t}function xr(e){let t=globalThis.Intl.Segmenter;if(!t)return br(e);let n=new t(void 0,{granularity:`word`}),r=0;for(let t of n.segment(e))t.isWordLike&&r++;return r}function Sr(e){let t=pr.test(e)?1.5:4;return Math.ceil(e.length/t)}function Cr(e){return e?{words:pr.test(e)?xr(e):br(e),chars:e.length,tokens:Sr(e)}:{words:0,chars:0,tokens:0}}function wr(e){if(!e)return{words:0,chars:0,tokens:0};let{body:t}=I(e);return t.trim()?Cr(yr(t)):{words:0,chars:0,tokens:0}}function Tr(e,{isMarkdown:t}){let n=e.trim();return n?Cr(t?yr(e):n):fr}var Er=new Map,Dr=new Set,Or=(e,t)=>`${t}:${e}`;function kr(){for(let e of Dr)e()}function Ar(e,t,n){let r=Or(e,t);if(n===null){Er.delete(r)&&kr();return}let i=Er.get(r);i&&i.words===n.words&&i.chars===n.chars&&i.tokens===n.tokens||(Er.set(r,n),kr())}function jr(e,t){return e===null?null:Er.get(Or(e,t))??null}function Mr(e){return Dr.add(e),()=>{Dr.delete(e)}}function Nr(e){let{from:t,to:n,empty:r}=e.state.selection;if(r)return null;let i=e.state.doc.textBetween(t,n,`
|
|
7
|
-
`,` `);return i.trim()?Tr(i,{isMarkdown:!1}):null}function Pr(e){let t=[];for(let n of e.state.selection.ranges)n.empty||t.push(e.state.sliceDoc(n.from,n.to));if(t.length===0)return null;let n=t.join(`
|
|
8
|
-
`);return n.trim()?Tr(n,{isMarkdown:!0}):null}var Fr=`open-knowledge:open-ask-ai-composer`;function Ir(e=typeof window>`u`?new EventTarget:window){e.dispatchEvent(new CustomEvent(Fr))}function Lr(e,t=typeof window>`u`?new EventTarget:window){let n=()=>e();return t.addEventListener(Fr,n),()=>t.removeEventListener(Fr,n)}export{gt as A,We as B,qt as C,Ht as D,Ot as E,pt as F,ct as I,Ge as L,yt as M,mt as N,Ut as O,vt as P,qe as R,cn as S,zt as T,Ne as V,vn as _,Pr as a,Sn as b,fr as c,Xn as d,Nn as f,Mn as g,Fn as h,Ar as i,ht as j,Ct as k,wr as l,Ln as m,Lr as n,Nr as o,In as p,jr as r,Mr as s,Ir as t,Rn as u,yn as v,Wt as w,sn as x,bn as y,Ke as z};
|