@inkeep/open-knowledge 0.11.0 → 0.11.1-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/dist/THIRD_PARTY_NOTICES.md +5 -0
  2. package/dist/assets/skills/discovery/SKILL.md +1 -1
  3. package/dist/assets/skills/project/SKILL.md +1 -1
  4. package/dist/cli.mjs +8 -8
  5. package/dist/config-schema.json +9 -0
  6. package/dist/config.project-local.schema.json +9 -0
  7. package/dist/constants-B6bj5v8h.mjs +2 -0
  8. package/dist/{dist-PzyBKLCf.mjs → dist-DZtwVhee.mjs} +1 -1
  9. package/dist/{dist-9gkYdouR.mjs → dist-Dn42HqcN.mjs} +14 -14
  10. package/dist/{gh-detect-BiKqq3fe.mjs → gh-detect-BhsIZu4A.mjs} +2 -2
  11. package/dist/index.mjs +1 -1
  12. package/dist/{init-DTN3nfbv.mjs → init-BdFitPHK.mjs} +4 -4
  13. package/dist/init-COkCxwuC.mjs +1 -0
  14. package/dist/loader-Cw0O2VV4.mjs +1 -0
  15. package/dist/{loader-C0hzrFB3.mjs → loader-D7k3AFDV.mjs} +2 -2
  16. package/dist/{preview-8OV1Kc4m.mjs → preview-CH_zQHDg.mjs} +2 -2
  17. package/dist/preview-DIHjJw66.mjs +1 -0
  18. package/dist/public/assets/{ActivityModeContent-BsurnqDs.js → ActivityModeContent-8aHZ0PDi.js} +1 -1
  19. package/dist/public/assets/{ConsentDialogBody-CM1Lm4n9.js → ConsentDialogBody-Bd3NDbzN.js} +1 -1
  20. package/dist/public/assets/{DocumentContext-ywaSbgZy.js → DocumentContext-BR1_ll2e.js} +2 -2
  21. package/dist/public/assets/{GraphPanel-DACQCEp9.js → GraphPanel-wcP3_uRY.js} +1 -1
  22. package/dist/public/assets/{McpConsentDialogBody-sOEyFULC.js → McpConsentDialogBody-pUjQ4lzI.js} +1 -1
  23. package/dist/public/assets/SettingsDialogBody-DIx86gK0.js +7 -0
  24. package/dist/public/assets/{SourceEditor-CPUnHIDu.js → SourceEditor-DLmRzDd7.js} +1 -1
  25. package/dist/public/assets/{agent-presence-DxGcS3q2.js → agent-presence-B_GJzt87.js} +1 -1
  26. package/dist/public/assets/button-B_6r-4tt.js +1 -0
  27. package/dist/public/assets/{checkbox-Co7Tjlri.js → checkbox-qnHi6HI6.js} +1 -1
  28. package/dist/public/assets/{collapsible-BhpeB6tu.js → collapsible-DC_eQWsn.js} +1 -1
  29. package/dist/public/assets/{config-validation-events-Dtuvx7eU.js → config-validation-events-Ci1USZRz.js} +6 -6
  30. package/dist/public/assets/{dialog-B1es0EvU.js → dialog-uNuZn7gJ.js} +1 -1
  31. package/dist/public/assets/{dist-P7DYrfOB.js → dist-D6g7y0kn.js} +1 -1
  32. package/dist/public/assets/{dist-DicqJavT.js → dist-q8_YTqei.js} +1 -1
  33. package/dist/public/assets/{index-D3rLIkvo.js → index-DZGBILtp.js} +84 -84
  34. package/dist/public/assets/{keyboard-shortcuts-BtfhTJ-K.js → keyboard-shortcuts-54kMWhVx.js} +1 -1
  35. package/dist/public/assets/{label-DwEePOBC.js → label-DLO_wxY0.js} +1 -1
  36. package/dist/public/assets/{panel-BNBODYwB.js → panel-DDVLqW48.js} +1 -1
  37. package/dist/public/assets/{prop-types-BLvAnH2n.js → prop-types-fLbn-Ruk.js} +3 -3
  38. package/dist/public/assets/{target-navigation-intent-BUfApF6Q.js → target-navigation-intent-Cm8CEQkf.js} +1 -1
  39. package/dist/public/assets/{telemetry-impl-aspahMYR.js → telemetry-impl-l-VsaBiG.js} +1 -1
  40. package/dist/public/assets/{textarea-luaT-nOK.js → textarea-CaVb3JmO.js} +1 -1
  41. package/dist/public/assets/{toggle-group-Cs-1L92l.js → toggle-group-sKkFFfhD.js} +1 -1
  42. package/dist/public/assets/{typing-burst-detector-BjfA2X2R.js → typing-burst-detector-Nq1G7KqK.js} +1 -1
  43. package/dist/public/index.html +18 -18
  44. package/dist/{repair-launch-json-FQjShJhA.mjs → repair-launch-json-BXKGCwKI.mjs} +2 -2
  45. package/dist/{repair-mcp-configs-DnsD7NrD.mjs → repair-mcp-configs-C4d4u5O9.mjs} +2 -2
  46. package/dist/repair-skills-C33ZtGgy.mjs +1 -0
  47. package/dist/{repair-skills--P4hyOt3.mjs → repair-skills-Cx4jzEej.mjs} +2 -2
  48. package/dist/schemas/v0/config.project-local.schema.json +9 -0
  49. package/dist/{server-lock-BpjJj3OD-CGDmzK2V.mjs → server-lock-BpjJj3OD-Cp5gb64m.mjs} +28 -26
  50. package/dist/server-lock-CyhBidkz-C90pwHSO.mjs +1 -0
  51. package/dist/{src-DvKnRm2f.mjs → src-BPvsBgJK.mjs} +2 -2
  52. package/dist/{start-DEFyhc0J.mjs → start-CksMelxp.mjs} +2 -2
  53. package/dist/start-DiJ5ZA1x.mjs +1 -0
  54. package/dist/{write-project-skill-DozAMZpM.mjs → write-project-skill-JQmQecFt.mjs} +2 -2
  55. package/package.json +1 -1
  56. package/dist/constants-CaDA1CnW.mjs +0 -2
  57. package/dist/init-Brz9U_8C.mjs +0 -1
  58. package/dist/loader-p0Oq4pHG.mjs +0 -1
  59. package/dist/preview-DZTHkwzi.mjs +0 -1
  60. package/dist/public/assets/SettingsDialogBody-m4zzZa4Q.js +0 -7
  61. package/dist/public/assets/button-DenIdY-r.js +0 -1
  62. package/dist/repair-skills-BQA-lmTE.mjs +0 -1
  63. package/dist/server-lock-CyhBidkz-CrazWnBM.mjs +0 -1
  64. package/dist/start-B1nVQCdb.mjs +0 -1
@@ -48,7 +48,7 @@
48
48
  -->
49
49
  <script>(() => { let t = 'system'; try { const r = localStorage.getItem('ok-theme-v1'); if (r === 'light' || r === 'dark' || r === 'system') t = r; } catch {} let dark = t === 'dark'; if (t === 'system') { try { dark = window.matchMedia('(prefers-color-scheme: dark)').matches; } catch {} } if (dark) document.documentElement.classList.add('dark'); if (window.okDesktop) document.documentElement.classList.add('electron-mode'); })();</script>
50
50
  <style>html { background-color: #fafafa } html.dark { background-color: #171717 }</style>
51
- <script type="module" crossorigin src="./assets/index-D3rLIkvo.js"></script>
51
+ <script type="module" crossorigin src="./assets/index-DZGBILtp.js"></script>
52
52
  <link rel="modulepreload" crossorigin href="./assets/chunk-CFjPhJqf.js">
53
53
  <link rel="modulepreload" crossorigin href="./assets/preload-helper-2ej06EnG.js">
54
54
  <link rel="modulepreload" crossorigin href="./assets/w3c-keyname-B5t0fahT.js">
@@ -60,25 +60,25 @@
60
60
  <link rel="modulepreload" crossorigin href="./assets/stex-CzCFWeB9.js">
61
61
  <link rel="modulepreload" crossorigin href="./assets/compiler-runtime-Cs91PcD2.js">
62
62
  <link rel="modulepreload" crossorigin href="./assets/trace-api-CiCjX4Sz.js">
63
- <link rel="modulepreload" crossorigin href="./assets/button-DenIdY-r.js">
64
- <link rel="modulepreload" crossorigin href="./assets/prop-types-BLvAnH2n.js">
63
+ <link rel="modulepreload" crossorigin href="./assets/button-B_6r-4tt.js">
64
+ <link rel="modulepreload" crossorigin href="./assets/prop-types-fLbn-Ruk.js">
65
65
  <link rel="modulepreload" crossorigin href="./assets/propagation-api-3kmMXRwS.js">
66
- <link rel="modulepreload" crossorigin href="./assets/collapsible-BhpeB6tu.js">
67
- <link rel="modulepreload" crossorigin href="./assets/dist-DicqJavT.js">
68
- <link rel="modulepreload" crossorigin href="./assets/dialog-B1es0EvU.js">
69
- <link rel="modulepreload" crossorigin href="./assets/DocumentContext-ywaSbgZy.js">
70
- <link rel="modulepreload" crossorigin href="./assets/panel-BNBODYwB.js">
71
- <link rel="modulepreload" crossorigin href="./assets/typing-burst-detector-BjfA2X2R.js">
72
- <link rel="modulepreload" crossorigin href="./assets/checkbox-Co7Tjlri.js">
73
- <link rel="modulepreload" crossorigin href="./assets/label-DwEePOBC.js">
74
- <link rel="modulepreload" crossorigin href="./assets/dist-P7DYrfOB.js">
75
- <link rel="modulepreload" crossorigin href="./assets/textarea-luaT-nOK.js">
76
- <link rel="modulepreload" crossorigin href="./assets/toggle-group-Cs-1L92l.js">
77
- <link rel="modulepreload" crossorigin href="./assets/config-validation-events-Dtuvx7eU.js">
78
- <link rel="modulepreload" crossorigin href="./assets/agent-presence-DxGcS3q2.js">
79
- <link rel="modulepreload" crossorigin href="./assets/target-navigation-intent-BUfApF6Q.js">
66
+ <link rel="modulepreload" crossorigin href="./assets/collapsible-DC_eQWsn.js">
67
+ <link rel="modulepreload" crossorigin href="./assets/dist-q8_YTqei.js">
68
+ <link rel="modulepreload" crossorigin href="./assets/dialog-uNuZn7gJ.js">
69
+ <link rel="modulepreload" crossorigin href="./assets/DocumentContext-BR1_ll2e.js">
70
+ <link rel="modulepreload" crossorigin href="./assets/panel-DDVLqW48.js">
71
+ <link rel="modulepreload" crossorigin href="./assets/typing-burst-detector-Nq1G7KqK.js">
72
+ <link rel="modulepreload" crossorigin href="./assets/checkbox-qnHi6HI6.js">
73
+ <link rel="modulepreload" crossorigin href="./assets/label-DLO_wxY0.js">
74
+ <link rel="modulepreload" crossorigin href="./assets/dist-D6g7y0kn.js">
75
+ <link rel="modulepreload" crossorigin href="./assets/textarea-CaVb3JmO.js">
76
+ <link rel="modulepreload" crossorigin href="./assets/toggle-group-sKkFFfhD.js">
77
+ <link rel="modulepreload" crossorigin href="./assets/config-validation-events-Ci1USZRz.js">
78
+ <link rel="modulepreload" crossorigin href="./assets/agent-presence-B_GJzt87.js">
79
+ <link rel="modulepreload" crossorigin href="./assets/target-navigation-intent-Cm8CEQkf.js">
80
80
  <link rel="modulepreload" crossorigin href="./assets/project-paths-CsGHlmFh.js">
81
- <link rel="modulepreload" crossorigin href="./assets/keyboard-shortcuts-BtfhTJ-K.js">
81
+ <link rel="modulepreload" crossorigin href="./assets/keyboard-shortcuts-54kMWhVx.js">
82
82
  <link rel="modulepreload" crossorigin href="./assets/mcp-consent-store-CijO54Jd.js">
83
83
  <link rel="stylesheet" crossorigin href="./assets/DocumentContext-B0sQn39F.css">
84
84
  <link rel="stylesheet" crossorigin href="./assets/index-Bt-jLYAb.css">
@@ -1,2 +1,2 @@
1
- import{h as e,n as t}from"./init-DTN3nfbv.mjs";import{t as n}from"./is-object-C-4FJ0rP.mjs";import{existsSync as r,readFileSync as i}from"node:fs";import{join as a}from"node:path";const o=[[`@inkeep/open-knowledge`,`ui`],[`-y`,`@inkeep/open-knowledge`,`ui`],t];function s(e){if(e.runtimeExecutable===`/bin/sh`&&Array.isArray(e.runtimeArgs)){let t=e.runtimeArgs[2];if(typeof t==`string`){if(t.includes(`# ok-ui-v1`))return`canonical`;if(/# ok-ui-v\d+/.test(t))return`legacy-bare`}return`preserved`}if(e.runtimeExecutable===`npx`&&Array.isArray(e.runtimeArgs)){for(let t of o)if(c(e.runtimeArgs,t))return`legacy-bare`}return`preserved`}function c(e,t){if(e.length!==t.length)return!1;for(let n=0;n<t.length;n++)if(e[n]!==t[n])return!1;return!0}function l(t){let o=t.logger??u,c=a(t.projectDir,`.claude`,`launch.json`);if(t.reclaimDisableEnv===`1`)return o({event:`launch-json-repair-skipped`,reason:`reclaim-disabled`}),{outcome:{configPath:c,outcome:`skipped-reclaim-disabled`},repairedCount:0};if(!r(c))return{outcome:{configPath:c,outcome:`no-file`},repairedCount:0};let l;try{let e=i(c,`utf-8`).trim();l=e?JSON.parse(e):{}}catch(e){let t=e instanceof Error?e.message:String(e);return o({event:`launch-json-repair-read-failed`,configPath:c,error:t}),{outcome:{configPath:c,outcome:`read-failed`,error:t},repairedCount:0}}if(!n(l)){let e=`launch.json root is not an object`;return o({event:`launch-json-repair-read-failed`,configPath:c,error:e}),{outcome:{configPath:c,outcome:`read-failed`,error:e},repairedCount:0}}let d=l.configurations;if(!Array.isArray(d))return{outcome:{configPath:c,outcome:`no-entry`},repairedCount:0};let f=d.find(e=>n(e)&&e.name===`open-knowledge-ui`);if(!f)return{outcome:{configPath:c,outcome:`no-entry`},repairedCount:0};let p=s(f);if(p===`canonical`)return{outcome:{configPath:c,outcome:`canonical`},repairedCount:0};if(p===`preserved`)return{outcome:{configPath:c,outcome:`preserved`},repairedCount:0};let m=e(t.projectDir,{mode:`published`});if(m.action===`failed`){let e=m.error??`unknown write failure`;return o({event:`launch-json-repair-write-failed`,configPath:c,error:e}),{outcome:{configPath:c,outcome:`write-failed`,error:e},repairedCount:0}}return o({event:`launch-json-repair-applied`,configPath:c}),{outcome:{configPath:c,outcome:`repaired`},repairedCount:1}}function u(e){process.stderr.write(`${JSON.stringify(e)}\n`)}export{l as repairLaunchJson};
2
- //# sourceMappingURL=repair-launch-json-FQjShJhA.mjs.map
1
+ import{h as e,n as t}from"./init-BdFitPHK.mjs";import{t as n}from"./is-object-C-4FJ0rP.mjs";import{existsSync as r,readFileSync as i}from"node:fs";import{join as a}from"node:path";const o=[[`@inkeep/open-knowledge`,`ui`],[`-y`,`@inkeep/open-knowledge`,`ui`],t];function s(e){if(e.runtimeExecutable===`/bin/sh`&&Array.isArray(e.runtimeArgs)){let t=e.runtimeArgs[2];if(typeof t==`string`){if(t.includes(`# ok-ui-v1`))return`canonical`;if(/# ok-ui-v\d+/.test(t))return`legacy-bare`}return`preserved`}if(e.runtimeExecutable===`npx`&&Array.isArray(e.runtimeArgs)){for(let t of o)if(c(e.runtimeArgs,t))return`legacy-bare`}return`preserved`}function c(e,t){if(e.length!==t.length)return!1;for(let n=0;n<t.length;n++)if(e[n]!==t[n])return!1;return!0}function l(t){let o=t.logger??u,c=a(t.projectDir,`.claude`,`launch.json`);if(t.reclaimDisableEnv===`1`)return o({event:`launch-json-repair-skipped`,reason:`reclaim-disabled`}),{outcome:{configPath:c,outcome:`skipped-reclaim-disabled`},repairedCount:0};if(!r(c))return{outcome:{configPath:c,outcome:`no-file`},repairedCount:0};let l;try{let e=i(c,`utf-8`).trim();l=e?JSON.parse(e):{}}catch(e){let t=e instanceof Error?e.message:String(e);return o({event:`launch-json-repair-read-failed`,configPath:c,error:t}),{outcome:{configPath:c,outcome:`read-failed`,error:t},repairedCount:0}}if(!n(l)){let e=`launch.json root is not an object`;return o({event:`launch-json-repair-read-failed`,configPath:c,error:e}),{outcome:{configPath:c,outcome:`read-failed`,error:e},repairedCount:0}}let d=l.configurations;if(!Array.isArray(d))return{outcome:{configPath:c,outcome:`no-entry`},repairedCount:0};let f=d.find(e=>n(e)&&e.name===`open-knowledge-ui`);if(!f)return{outcome:{configPath:c,outcome:`no-entry`},repairedCount:0};let p=s(f);if(p===`canonical`)return{outcome:{configPath:c,outcome:`canonical`},repairedCount:0};if(p===`preserved`)return{outcome:{configPath:c,outcome:`preserved`},repairedCount:0};let m=e(t.projectDir,{mode:`published`});if(m.action===`failed`){let e=m.error??`unknown write failure`;return o({event:`launch-json-repair-write-failed`,configPath:c,error:e}),{outcome:{configPath:c,outcome:`write-failed`,error:e},repairedCount:0}}return o({event:`launch-json-repair-applied`,configPath:c}),{outcome:{configPath:c,outcome:`repaired`},repairedCount:1}}function u(e){process.stderr.write(`${JSON.stringify(e)}\n`)}export{l as repairLaunchJson};
2
+ //# sourceMappingURL=repair-launch-json-BXKGCwKI.mjs.map
@@ -1,2 +1,2 @@
1
- import{D as e,d as t,g as n,j as r,k as i}from"./init-DTN3nfbv.mjs";import{t as a}from"./mcp-migrate-event-BF8ILHwp.mjs";import{homedir as o}from"node:os";function s(t){let n=t.logger??u,r=t.home??o(),a=[];if(t.reclaimDisableEnv===`1`)return n({event:`mcp-config-repair-skipped`,reason:`reclaim-disabled`}),{outcomes:a,repairedCount:0};for(let o of e){let e=i[o],s=c(()=>e.configPath(``,r));if(s!==null&&a.push(l({scope:`user`,editorId:o,target:e,home:r,cwd:``,configPath:s,configPathOverride:void 0,logger:n})),e.projectConfigPath){let r=e.projectConfigPath,i=c(()=>r(t.projectDir));i!==null&&a.push(l({scope:`project`,editorId:o,target:e,home:void 0,cwd:t.projectDir,configPath:i,configPathOverride:i,logger:n}))}}return{outcomes:a,repairedCount:a.filter(e=>e.outcome===`repaired`).length}}function c(e){try{return e()}catch{return null}}function l(e){let i={scope:e.scope,editorId:e.editorId,configPath:e.configPath},o=t(e.target,e.cwd,e.home,e.configPathOverride);if(o===null)return{...i,outcome:`no-entry`};if(r(o))return{...i,outcome:`canonical`};e.logger(a({scope:e.scope,surface:`cli-repair`,editorId:e.editorId,configPath:e.configPath,priorEntry:o}));let s=n(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}),{...i,outcome:`write-failed`,error:t}}return{...i,outcome:`repaired`}}function u(e){process.stderr.write(`${JSON.stringify(e)}\n`)}export{s as repairMcpConfigs};
2
- //# sourceMappingURL=repair-mcp-configs-DnsD7NrD.mjs.map
1
+ import{D as e,d as t,g as n,j as r,k as i}from"./init-BdFitPHK.mjs";import{t as a}from"./mcp-migrate-event-BF8ILHwp.mjs";import{homedir as o}from"node:os";function s(t){let n=t.logger??u,r=t.home??o(),a=[];if(t.reclaimDisableEnv===`1`)return n({event:`mcp-config-repair-skipped`,reason:`reclaim-disabled`}),{outcomes:a,repairedCount:0};for(let o of e){let e=i[o],s=c(()=>e.configPath(``,r));if(s!==null&&a.push(l({scope:`user`,editorId:o,target:e,home:r,cwd:``,configPath:s,configPathOverride:void 0,logger:n})),e.projectConfigPath){let r=e.projectConfigPath,i=c(()=>r(t.projectDir));i!==null&&a.push(l({scope:`project`,editorId:o,target:e,home:void 0,cwd:t.projectDir,configPath:i,configPathOverride:i,logger:n}))}}return{outcomes:a,repairedCount:a.filter(e=>e.outcome===`repaired`).length}}function c(e){try{return e()}catch{return null}}function l(e){let i={scope:e.scope,editorId:e.editorId,configPath:e.configPath},o=t(e.target,e.cwd,e.home,e.configPathOverride);if(o===null)return{...i,outcome:`no-entry`};if(r(o))return{...i,outcome:`canonical`};e.logger(a({scope:e.scope,surface:`cli-repair`,editorId:e.editorId,configPath:e.configPath,priorEntry:o}));let s=n(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}),{...i,outcome:`write-failed`,error:t}}return{...i,outcome:`repaired`}}function u(e){process.stderr.write(`${JSON.stringify(e)}\n`)}export{s as repairMcpConfigs};
2
+ //# sourceMappingURL=repair-mcp-configs-C4d4u5O9.mjs.map
@@ -0,0 +1 @@
1
+ import{t as e}from"./repair-skills-Cx4jzEej.mjs";export{e as repairSkills};
@@ -1,3 +1,3 @@
1
- import{t as e}from"./esm-CEs3LWY3.mjs";import{Er as t,Mr as n,Pi as r,Sr as i,vr as a}from"./dist-9gkYdouR.mjs";import{t as o}from"./write-project-skill-DozAMZpM.mjs";import{existsSync as s,mkdirSync as c,readFileSync as l,readdirSync as u,rmSync as d,statSync as f,writeFileSync as p}from"node:fs";import{dirname as m,join as h,resolve as g}from"node:path";import{homedir as _}from"node:os";const v=[{hostDir:`.claude`,editorId:`claude`},{hostDir:`.cursor`,editorId:`cursor`},{hostDir:`.agents`,editorId:`codex`}],y=`open-knowledge-discovery`,b=[`.agents`,`skills`,y],x={existsSync:e=>s(e),isDirectory:e=>{try{return f(e).isDirectory()}catch(e){if(e.code===`ENOENT`)return!1;throw e}},readdirSync:e=>u(e),readFileSync:e=>l(e),writeFileSync:(e,t)=>{p(e,t)},mkdirSync:(e,t)=>{c(e,t)},rmSync:(e,t)=>{d(e,t)}},S={resolveProjectBundledSkillDir:()=>n(`project`,{checkDesktop:!1}),resolveDiscoveryBundledSkillDir:()=>n(`discovery`,{checkDesktop:!1}),readBundledVersion:()=>a(),readRecordedVersion:e=>i(e,`cli-hosts`),writeRecordedVersion:(e,t)=>r(e,`cli-hosts`,t,`cli-start`),recordEvent:e=>t(e)};function C(e){process.stderr.write(`${JSON.stringify(e)}\n`)}function w(e,t,n){n.rmSync(t,{recursive:!0,force:!0}),n.mkdirSync(m(t),{recursive:!0}),T(e,t,n)}function T(e,t,n){n.mkdirSync(t,{recursive:!0});for(let r of n.readdirSync(e)){let i=h(e,r),a=h(t,r);n.isDirectory(i)?T(i,a,n):n.writeFileSync(a,n.readFileSync(i))}}function E(e,t,n,r){let i;try{i=t.resolveProjectBundledSkillDir()}catch(e){return r({event:`project-skill-reclaim-bundle-missing`,scope:`project`,error:e instanceof Error?e.message:String(e)}),{outcome:`skipped`,reason:`bundle-missing`}}let a=[];for(let t of v){let s=h(e,t.hostDir,`skills`,`open-knowledge`),c=h(s,`SKILL.md`);if(!n.existsSync(c)){a.push({editorId:t.editorId,hostDir:t.hostDir,path:s,outcome:`no-token`}),r({event:`project-skill-reclaim-no-token`,scope:`project`,editorId:t.editorId,path:s});continue}try{o(s,e),w(i,s,n),a.push({editorId:t.editorId,hostDir:t.hostDir,path:s,outcome:`reclaimed`}),r({event:`project-skill-reclaim-reclaimed`,scope:`project`,editorId:t.editorId,path:s})}catch(e){let n=e instanceof Error?e.message:String(e);a.push({editorId:t.editorId,hostDir:t.hostDir,path:s,outcome:`failed`,error:n}),r({event:`project-skill-reclaim-failed`,scope:`project`,editorId:t.editorId,path:s,error:n})}}return{outcome:`done`,entries:a}}async function D(e,t,n,r){let i=e=>{t.recordEvent(e).catch(()=>{})},a=()=>new Date().toISOString(),o;try{o=await t.readBundledVersion()}catch(e){let t=e instanceof Error?e.message:String(e);return r({event:`user-skill-reclaim-version-read-failed`,scope:`user`,error:t}),i({ts:a(),surface:`cli-start`,target:`cli-hosts`,bundle:`discovery`,outcome:`failed`,reason:`version-read-failed:${t}`}),{outcome:`skipped`,reason:`version-read-failed`}}let s;try{s=await t.readRecordedVersion(e)}catch(e){r({event:`user-skill-reclaim-version-read-error`,scope:`user`,error:e instanceof Error?e.message:String(e)}),s=null}if(s!==null&&s===o)return r({event:`user-skill-reclaim-skipped-version-current`,scope:`user`,version:o}),{outcome:`skipped`,reason:`version-current`};let c;try{c=t.resolveDiscoveryBundledSkillDir()}catch(e){let t=e instanceof Error?e.message:String(e);return r({event:`user-skill-reclaim-bundle-missing`,scope:`user`,error:t}),i({ts:a(),surface:`cli-start`,target:`cli-hosts`,bundle:`discovery`,outcome:`failed`,reason:`bundle-missing:${t}`}),{outcome:`skipped`,reason:`bundle-missing`}}let l=[],u=h(e,...b),d=n.existsSync(u);try{w(c,u,n),l.push({kind:`central`,path:u,outcome:d?`overwritten`:`written`}),r({event:`user-skill-reclaim-central-written`,scope:`user`,path:u,preexisting:d,version:o})}catch(e){let t=e instanceof Error?e.message:String(e);l.push({kind:`central`,path:u,outcome:`failed`,error:t}),r({event:`user-skill-reclaim-central-failed`,scope:`user`,path:u,error:t})}for(let t of v){let i=h(e,t.hostDir),a=h(i,`skills`,y);if(a===u){l.push({kind:`host`,editorId:t.editorId,hostDir:t.hostDir,path:a,outcome:`skipped-collapsed-with-central`});continue}if(!n.existsSync(i)){l.push({kind:`host`,editorId:t.editorId,hostDir:t.hostDir,path:a,outcome:`skipped-host-absent`});continue}let s=n.existsSync(a);try{w(c,a,n),l.push({kind:`host`,editorId:t.editorId,hostDir:t.hostDir,path:a,outcome:s?`overwritten`:`written`}),r({event:`user-skill-reclaim-host-written`,scope:`user`,editorId:t.editorId,hostDir:t.hostDir,path:a,preexisting:s,version:o})}catch(e){let n=e instanceof Error?e.message:String(e);l.push({kind:`host`,editorId:t.editorId,hostDir:t.hostDir,path:a,outcome:`failed`,error:n}),r({event:`user-skill-reclaim-host-failed`,scope:`user`,editorId:t.editorId,hostDir:t.hostDir,path:a,error:n})}}let f=l.find(e=>e.kind===`central`);if(f?.outcome===`written`||f?.outcome===`overwritten`){let n=null;try{await t.writeRecordedVersion(e,o),r({event:`user-skill-reclaim-version-recorded`,scope:`user`,version:o})}catch(e){n=e instanceof Error?e.message:String(e),r({event:`user-skill-reclaim-version-record-failed`,scope:`user`,version:o,error:n})}i({ts:a(),surface:`cli-start`,target:`cli-hosts`,bundle:`discovery`,outcome:n===null?`installed`:`failed`,version:o,...n===null?{}:{reason:`state-write-failed:${n}`}})}else{let e=l.some(e=>e.kind===`host`&&e.outcome===`failed`);i({ts:a(),surface:`cli-start`,target:`cli-hosts`,bundle:`discovery`,outcome:`failed`,version:o,reason:e?`all-writes-failed`:`no-hosts-installed`})}return{outcome:`done`,version:o,entries:l}}async function O(e){let t=e.logger??C,n=e.fs??x,r=e.home??_(),i={...S,...e.deps};return e.reclaimDisableEnv===`1`?(t({event:`skill-repair-skipped`,reason:`reclaim-disabled`}),{status:`skipped`,reason:`reclaim-disabled`}):{status:`done`,project:E(e.projectDir,i,n,t),user:await D(r,i,n,t)}}function k(e){return e.status===`skipped`?e.reason===`reclaim-disabled`?0:1:e.project.outcome===`skipped`||e.user.outcome===`skipped`&&e.user.reason!==`version-current`||e.project.entries.some(e=>e.outcome===`failed`)||e.user.outcome===`done`&&e.user.entries.some(e=>e.outcome===`failed`)?1:0}function A(e){if(e.status===`skipped`)return`Skipped: ${e.reason}`;let t=[`Skill reclaim complete.`];if(e.project.outcome===`done`){let n=e.project.entries.filter(e=>e.outcome===`reclaimed`).length,r=e.project.entries.filter(e=>e.outcome===`no-token`).length,i=e.project.entries.filter(e=>e.outcome===`failed`).length;t.push(` Project: ${n} reclaimed, ${r} no-token, ${i} failed.`)}else t.push(` Project: skipped (${e.project.reason}).`);if(e.user.outcome===`done`){let n=e.user.entries.filter(e=>e.outcome===`written`||e.outcome===`overwritten`).length,r=e.user.entries.filter(e=>e.outcome===`skipped-host-absent`||e.outcome===`skipped-collapsed-with-central`).length,i=e.user.entries.filter(e=>e.outcome===`failed`).length;t.push(` User (${e.user.version}): ${n} written, ${r} skipped, ${i} failed.`)}else t.push(` User: skipped (${e.user.reason}).`);return t.join(`
1
+ import{t as e}from"./esm-CEs3LWY3.mjs";import{Er as t,Mr as n,Pi as r,Sr as i,vr as a}from"./dist-Dn42HqcN.mjs";import{t as o}from"./write-project-skill-JQmQecFt.mjs";import{existsSync as s,mkdirSync as c,readFileSync as l,readdirSync as u,rmSync as d,statSync as f,writeFileSync as p}from"node:fs";import{dirname as m,join as h,resolve as g}from"node:path";import{homedir as _}from"node:os";const v=[{hostDir:`.claude`,editorId:`claude`},{hostDir:`.cursor`,editorId:`cursor`},{hostDir:`.agents`,editorId:`codex`}],y=`open-knowledge-discovery`,b=[`.agents`,`skills`,y],x={existsSync:e=>s(e),isDirectory:e=>{try{return f(e).isDirectory()}catch(e){if(e.code===`ENOENT`)return!1;throw e}},readdirSync:e=>u(e),readFileSync:e=>l(e),writeFileSync:(e,t)=>{p(e,t)},mkdirSync:(e,t)=>{c(e,t)},rmSync:(e,t)=>{d(e,t)}},S={resolveProjectBundledSkillDir:()=>n(`project`,{checkDesktop:!1}),resolveDiscoveryBundledSkillDir:()=>n(`discovery`,{checkDesktop:!1}),readBundledVersion:()=>a(),readRecordedVersion:e=>i(e,`cli-hosts`),writeRecordedVersion:(e,t)=>r(e,`cli-hosts`,t,`cli-start`),recordEvent:e=>t(e)};function C(e){process.stderr.write(`${JSON.stringify(e)}\n`)}function w(e,t,n){n.rmSync(t,{recursive:!0,force:!0}),n.mkdirSync(m(t),{recursive:!0}),T(e,t,n)}function T(e,t,n){n.mkdirSync(t,{recursive:!0});for(let r of n.readdirSync(e)){let i=h(e,r),a=h(t,r);n.isDirectory(i)?T(i,a,n):n.writeFileSync(a,n.readFileSync(i))}}function E(e,t,n,r){let i;try{i=t.resolveProjectBundledSkillDir()}catch(e){return r({event:`project-skill-reclaim-bundle-missing`,scope:`project`,error:e instanceof Error?e.message:String(e)}),{outcome:`skipped`,reason:`bundle-missing`}}let a=[];for(let t of v){let s=h(e,t.hostDir,`skills`,`open-knowledge`),c=h(s,`SKILL.md`);if(!n.existsSync(c)){a.push({editorId:t.editorId,hostDir:t.hostDir,path:s,outcome:`no-token`}),r({event:`project-skill-reclaim-no-token`,scope:`project`,editorId:t.editorId,path:s});continue}try{o(s,e),w(i,s,n),a.push({editorId:t.editorId,hostDir:t.hostDir,path:s,outcome:`reclaimed`}),r({event:`project-skill-reclaim-reclaimed`,scope:`project`,editorId:t.editorId,path:s})}catch(e){let n=e instanceof Error?e.message:String(e);a.push({editorId:t.editorId,hostDir:t.hostDir,path:s,outcome:`failed`,error:n}),r({event:`project-skill-reclaim-failed`,scope:`project`,editorId:t.editorId,path:s,error:n})}}return{outcome:`done`,entries:a}}async function D(e,t,n,r){let i=e=>{t.recordEvent(e).catch(()=>{})},a=()=>new Date().toISOString(),o;try{o=await t.readBundledVersion()}catch(e){let t=e instanceof Error?e.message:String(e);return r({event:`user-skill-reclaim-version-read-failed`,scope:`user`,error:t}),i({ts:a(),surface:`cli-start`,target:`cli-hosts`,bundle:`discovery`,outcome:`failed`,reason:`version-read-failed:${t}`}),{outcome:`skipped`,reason:`version-read-failed`}}let s;try{s=await t.readRecordedVersion(e)}catch(e){r({event:`user-skill-reclaim-version-read-error`,scope:`user`,error:e instanceof Error?e.message:String(e)}),s=null}if(s!==null&&s===o)return r({event:`user-skill-reclaim-skipped-version-current`,scope:`user`,version:o}),{outcome:`skipped`,reason:`version-current`};let c;try{c=t.resolveDiscoveryBundledSkillDir()}catch(e){let t=e instanceof Error?e.message:String(e);return r({event:`user-skill-reclaim-bundle-missing`,scope:`user`,error:t}),i({ts:a(),surface:`cli-start`,target:`cli-hosts`,bundle:`discovery`,outcome:`failed`,reason:`bundle-missing:${t}`}),{outcome:`skipped`,reason:`bundle-missing`}}let l=[],u=h(e,...b),d=n.existsSync(u);try{w(c,u,n),l.push({kind:`central`,path:u,outcome:d?`overwritten`:`written`}),r({event:`user-skill-reclaim-central-written`,scope:`user`,path:u,preexisting:d,version:o})}catch(e){let t=e instanceof Error?e.message:String(e);l.push({kind:`central`,path:u,outcome:`failed`,error:t}),r({event:`user-skill-reclaim-central-failed`,scope:`user`,path:u,error:t})}for(let t of v){let i=h(e,t.hostDir),a=h(i,`skills`,y);if(a===u){l.push({kind:`host`,editorId:t.editorId,hostDir:t.hostDir,path:a,outcome:`skipped-collapsed-with-central`});continue}if(!n.existsSync(i)){l.push({kind:`host`,editorId:t.editorId,hostDir:t.hostDir,path:a,outcome:`skipped-host-absent`});continue}let s=n.existsSync(a);try{w(c,a,n),l.push({kind:`host`,editorId:t.editorId,hostDir:t.hostDir,path:a,outcome:s?`overwritten`:`written`}),r({event:`user-skill-reclaim-host-written`,scope:`user`,editorId:t.editorId,hostDir:t.hostDir,path:a,preexisting:s,version:o})}catch(e){let n=e instanceof Error?e.message:String(e);l.push({kind:`host`,editorId:t.editorId,hostDir:t.hostDir,path:a,outcome:`failed`,error:n}),r({event:`user-skill-reclaim-host-failed`,scope:`user`,editorId:t.editorId,hostDir:t.hostDir,path:a,error:n})}}let f=l.find(e=>e.kind===`central`);if(f?.outcome===`written`||f?.outcome===`overwritten`){let n=null;try{await t.writeRecordedVersion(e,o),r({event:`user-skill-reclaim-version-recorded`,scope:`user`,version:o})}catch(e){n=e instanceof Error?e.message:String(e),r({event:`user-skill-reclaim-version-record-failed`,scope:`user`,version:o,error:n})}i({ts:a(),surface:`cli-start`,target:`cli-hosts`,bundle:`discovery`,outcome:n===null?`installed`:`failed`,version:o,...n===null?{}:{reason:`state-write-failed:${n}`}})}else{let e=l.some(e=>e.kind===`host`&&e.outcome===`failed`);i({ts:a(),surface:`cli-start`,target:`cli-hosts`,bundle:`discovery`,outcome:`failed`,version:o,reason:e?`all-writes-failed`:`no-hosts-installed`})}return{outcome:`done`,version:o,entries:l}}async function O(e){let t=e.logger??C,n=e.fs??x,r=e.home??_(),i={...S,...e.deps};return e.reclaimDisableEnv===`1`?(t({event:`skill-repair-skipped`,reason:`reclaim-disabled`}),{status:`skipped`,reason:`reclaim-disabled`}):{status:`done`,project:E(e.projectDir,i,n,t),user:await D(r,i,n,t)}}function k(e){return e.status===`skipped`?e.reason===`reclaim-disabled`?0:1:e.project.outcome===`skipped`||e.user.outcome===`skipped`&&e.user.reason!==`version-current`||e.project.entries.some(e=>e.outcome===`failed`)||e.user.outcome===`done`&&e.user.entries.some(e=>e.outcome===`failed`)?1:0}function A(e){if(e.status===`skipped`)return`Skipped: ${e.reason}`;let t=[`Skill reclaim complete.`];if(e.project.outcome===`done`){let n=e.project.entries.filter(e=>e.outcome===`reclaimed`).length,r=e.project.entries.filter(e=>e.outcome===`no-token`).length,i=e.project.entries.filter(e=>e.outcome===`failed`).length;t.push(` Project: ${n} reclaimed, ${r} no-token, ${i} failed.`)}else t.push(` Project: skipped (${e.project.reason}).`);if(e.user.outcome===`done`){let n=e.user.entries.filter(e=>e.outcome===`written`||e.outcome===`overwritten`).length,r=e.user.entries.filter(e=>e.outcome===`skipped-host-absent`||e.outcome===`skipped-collapsed-with-central`).length,i=e.user.entries.filter(e=>e.outcome===`failed`).length;t.push(` User (${e.user.version}): ${n} written, ${r} skipped, ${i} failed.`)}else t.push(` User: skipped (${e.user.reason}).`);return t.join(`
2
2
  `)}function j(){return new e(`repair-skills`).description("Refresh bundled SKILL.md files for installed AI editors (project-local + user-global). Runs automatically during `ok start`; this command forces an explicit sweep.").action(async()=>{let e=await O({projectDir:g(process.cwd()),reclaimDisableEnv:process.env.OK_RECLAIM_DISABLE??null});process.stdout.write(`${A(e)}\n`),process.exitCode=k(e)})}export{j as n,O as t};
3
- //# sourceMappingURL=repair-skills--P4hyOt3.mjs.map
3
+ //# sourceMappingURL=repair-skills-Cx4jzEej.mjs.map
@@ -109,6 +109,15 @@
109
109
  "agentSettable": false,
110
110
  "defaultScope": "project-local",
111
111
  "description": "Optional output vector dimensions. Omit to use the model's native size (1536 for text-embedding-3-small). Set a smaller value (text-embedding-3 supports e.g. 512 / 1024) to shrink the on-disk cache, trading a little retrieval quality. Changing it re-embeds the corpus."
112
+ },
113
+ "similarityFloor": {
114
+ "type": "number",
115
+ "minimum": 0,
116
+ "maximum": 1,
117
+ "scope": "project-local",
118
+ "agentSettable": false,
119
+ "defaultScope": "project-local",
120
+ "description": "Optional hard cutoff: drop any \"by meaning\" match whose cosine similarity is below this value. Off by default (0) because retrieval is rank-based (the closest pages are returned regardless of absolute score) and the right cutoff is model-specific. Set it only to suppress weak matches for a specific provider/model whose cosine scale you know. Most setups should leave it unset and rely on the result-count cap."
112
121
  }
113
122
  },
114
123
  "additionalProperties": {}