@inkeep/open-knowledge 0.26.1-beta.1 → 0.27.0-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 (73) hide show
  1. package/dist/assets/skills/discovery/SKILL.md +1 -1
  2. package/dist/assets/skills/project/SKILL.md +2 -2
  3. package/dist/assets/skills/project/references/preview.md +4 -4
  4. package/dist/assets/skills/write-skill/SKILL.md +1 -1
  5. package/dist/cli.mjs +63 -63
  6. package/dist/constants-FPRBLLHv.mjs +2 -0
  7. package/dist/{dist-D8lHZNr8.mjs → dist-CZ4COUHS.mjs} +1 -1
  8. package/dist/{dist-CUbAo1yS.mjs → dist-CdVqgoPq.mjs} +5 -5
  9. package/dist/{gh-detect-BUJyWvGO.mjs → gh-detect-KLjG6xCR.mjs} +2 -2
  10. package/dist/index.d.mts +16 -3
  11. package/dist/index.mjs +1 -1
  12. package/dist/init-DdgQk34k.mjs +660 -0
  13. package/dist/init-NQBVedkZ.mjs +1 -0
  14. package/dist/loader-B67yXEGv.mjs +1 -0
  15. package/dist/{loader-DLBG2Jf0.mjs → loader-XWkMJYxk.mjs} +2 -2
  16. package/dist/{preview-DMdR22hR.mjs → preview-BLauTAym.mjs} +2 -2
  17. package/dist/preview-BUda_ENP.mjs +1 -0
  18. package/dist/public/assets/{ActivityModeContent-ZV1oiH21.js → ActivityModeContent-Bu-aPWfE.js} +1 -1
  19. package/dist/public/assets/{ConsentDialogBody-ClEtx_H4.js → ConsentDialogBody-u7A2_0jL.js} +1 -1
  20. package/dist/public/assets/{DocumentContext-CNrQKGNw.js → DocumentContext-BNan6rEA.js} +1 -1
  21. package/dist/public/assets/{EnableSyncConfirmDialog-BhMvTv-2.js → EnableSyncConfirmDialog-DLAmAtNx.js} +1 -1
  22. package/dist/public/assets/{GraphPanel-B_Rx6o7k.js → GraphPanel-BXSu0qzO.js} +1 -1
  23. package/dist/public/assets/{ManagedArtifactProperties-CabIneyc.js → ManagedArtifactProperties-DCf7FSvm.js} +1 -1
  24. package/dist/public/assets/{McpConsentDialogBody-DW0Ku8h2.js → McpConsentDialogBody-DHnMMoKv.js} +1 -1
  25. package/dist/public/assets/{PropertyPanel-BGGPGg8z.js → PropertyPanel-CLRxrKmQ.js} +1 -1
  26. package/dist/public/assets/{SettingsDialogBody-D9Spbasa.js → SettingsDialogBody-BU_CWPpQ.js} +1 -1
  27. package/dist/public/assets/{ShareBranchSwitchDialog-MF01jVyK.js → ShareBranchSwitchDialog-DqhVt0LE.js} +1 -1
  28. package/dist/public/assets/{ShareReceiveDialog-BeDLlUWc.js → ShareReceiveDialog-COOji2w1.js} +1 -1
  29. package/dist/public/assets/{ShareReceiveMissDialog-CErdFiaW.js → ShareReceiveMissDialog-BIUsfWwx.js} +1 -1
  30. package/dist/public/assets/{SkillEditorActions--NrMimEw.js → SkillEditorActions-Cwen9r7n.js} +1 -1
  31. package/dist/public/assets/{SourceEditor-DR04Kk-L.js → SourceEditor-B8i0Zuc4.js} +1 -1
  32. package/dist/public/assets/{TerminalPanel-CDlxv5DM.js → TerminalPanel-CFHapL_S.js} +1 -1
  33. package/dist/public/assets/{auth-state-cache-XGzST2ZD.js → auth-state-cache-DbOzyU3U.js} +1 -1
  34. package/dist/public/assets/{config-provider-CNEpgM_S.js → config-provider-Do7HkFaK.js} +1 -1
  35. package/dist/public/assets/{dist-CQyX-suk.js → dist-IJIMi_KI.js} +2 -2
  36. package/dist/public/assets/{doc-hash-DK_ofUpp.js → doc-hash-B9qR3wab.js} +1 -1
  37. package/dist/public/assets/{documents-events-DWU2wzVY.js → documents-events-5sCrqLAB.js} +1 -1
  38. package/dist/public/assets/{file-tree-adapter-Co_rTNFv.js → file-tree-adapter-DeCSzJFc.js} +1 -1
  39. package/dist/public/assets/{index-CyAGZpgf.js → index-CfFNwC-k.js} +7 -7
  40. package/dist/public/assets/{index-CLrcKKoN.css → index-CwH3jLSk.css} +1 -1
  41. package/dist/public/assets/{keyboard-shortcuts-B_CAsza0.js → keyboard-shortcuts-DoqeoYey.js} +1 -1
  42. package/dist/public/assets/{navigation-targets-B88nmSdU.js → navigation-targets-CSLWdrg5.js} +1 -1
  43. package/dist/public/assets/{open-managed-artifact-tab-Bk_tqTdp.js → open-managed-artifact-tab-D6l9ALAm.js} +1 -1
  44. package/dist/public/assets/{pending-receive-nav-store-DpqQxXOd.js → pending-receive-nav-store-OU-qfx40.js} +1 -1
  45. package/dist/public/assets/{prop-types-YLAnoO2T.js → prop-types-Cak_LhNF.js} +1 -1
  46. package/dist/public/assets/{receive-store-BVPHm3DM.js → receive-store-DM0i5Ybb.js} +1 -1
  47. package/dist/public/assets/{selection-context-ythQq0B9.js → selection-context-Br-4VUmJ.js} +1 -1
  48. package/dist/public/assets/skill-actions-C1QaoF_v.js +1 -0
  49. package/dist/public/assets/{skills-api-9bY3Jtgz.js → skills-api-DJJ_LIKc.js} +1 -1
  50. package/dist/public/assets/{target-navigation-intent-CwZkFyaW.js → target-navigation-intent-DksqRbJO.js} +1 -1
  51. package/dist/public/assets/{typing-burst-detector-BwvPMOYl.js → typing-burst-detector-ClZLBemU.js} +1 -1
  52. package/dist/public/index.html +22 -22
  53. package/dist/{repair-launch-json-CWUTx3IW.mjs → repair-launch-json-Bk99TDG5.mjs} +2 -2
  54. package/dist/{repair-mcp-configs-BYRhVChI.mjs → repair-mcp-configs-D3XsTqKa.mjs} +2 -2
  55. package/dist/{repair-skills-B2AtzCSn.mjs → repair-skills-D7TJAZll.mjs} +2 -2
  56. package/dist/repair-skills-DCZqW9al.mjs +1 -0
  57. package/dist/server-lock-GuuouVft-CeF2bXVd.mjs +1 -0
  58. package/dist/{server-lock-iLcBw_q0-BF_u0tGL.mjs → server-lock-iLcBw_q0-CdrK5Xfo.mjs} +2 -2
  59. package/dist/{src-BWAFlazs.mjs → src-D0hiW4nw.mjs} +2 -2
  60. package/dist/{start-CnXUmVrI.mjs → start-B3yMZZZG.mjs} +2 -2
  61. package/dist/start-DAdXMVff.mjs +1 -0
  62. package/dist/write-project-skill-BEzL3S1a.mjs +36 -0
  63. package/package.json +1 -1
  64. package/dist/constants-BfJcirqe.mjs +0 -2
  65. package/dist/init-9d1LNBPj.mjs +0 -1
  66. package/dist/init-Dvj0QJzs.mjs +0 -321
  67. package/dist/loader-z1b3_1sK.mjs +0 -1
  68. package/dist/preview-C9s_wKIU.mjs +0 -1
  69. package/dist/public/assets/skill-actions-CbRk7LAn.js +0 -1
  70. package/dist/repair-skills-B8ePNziA.mjs +0 -1
  71. package/dist/server-lock-GuuouVft-CWlICi2c.mjs +0 -1
  72. package/dist/start-CY3HKbBn.mjs +0 -1
  73. package/dist/write-project-skill-Cjym3mlY.mjs +0 -36
@@ -1,3 +1,3 @@
1
- import{Wo as e}from"./server-lock-iLcBw_q0-BF_u0tGL.mjs";import{execFileSync as t}from"node:child_process";import{dirname as n,join as r}from"node:path";import{homedir as i}from"node:os";import{existsSync as a,mkdirSync as o,readFileSync as s,writeFileSync as c}from"node:fs";var l=e();const u=`open-knowledge`;function d(e){try{e()}catch{}}var f=class{backend=`keyring`;constructor(e){this.onKeychainRead=e}async get(e){let{Entry:t}=await import(`@napi-rs/keyring`),n;try{n=new t(u,e).getPassword()}catch(t){return d(()=>this.onKeychainRead?.({kind:`read-error`,host:e,error:t instanceof Error?t.name:`unknown`})),null}if(n==null)return d(()=>this.onKeychainRead?.({kind:`absent`,host:e})),null;try{return JSON.parse(n)}catch{return d(()=>this.onKeychainRead?.({kind:`corrupt-entry`,host:e,error:`corrupt-entry`})),null}}async set(e,t,n,r){let{Entry:i}=await import(`@napi-rs/keyring`),a=new i(u,e),o={login:t,token:n,...r};a.setPassword(JSON.stringify(o))}async clear(e){let{Entry:t}=await import(`@napi-rs/keyring`);try{new t(u,e).deletePassword()}catch{}}},p=class{backend=`file`;authFile;constructor(e){this.authFile=e??r(i(),`.ok`,`auth.yml`)}read(){if(!a(this.authFile))return{};try{return(0,l.parse)(s(this.authFile,`utf-8`))??{}}catch(e){let t=e instanceof Error?e.message:`unknown error`;return process.stderr.write(`[auth] Failed to parse ${this.authFile}: ${t}. Starting with empty credentials.\n`),{}}}write(e){let t=n(this.authFile);a(t)||o(t,{recursive:!0,mode:448}),c(this.authFile,(0,l.stringify)(e),{mode:384})}async get(e){return this.read()[e]??null}async set(e,t,n,r){let i=this.read();i[e]={login:t,token:n,...r},this.write(i)}async clear(e){let t=this.read();delete t[e],this.write(t)}},m=class{backend=`keyring`;constructor(e,t){this.keychain=e,this.file=t}async get(e){let t=await this.keychain.get(e);if(t!=null)return t;let n=await this.file.get(e);if(n==null)return null;try{await this.keychain.set(e,n.login,n.token,{gitProtocol:n.gitProtocol,name:n.name,email:n.email}),await this.file.clear(e),process.stderr.write(`[auth] migrated ${e} credential from ~/.ok/auth.yml to the OS keychain\n`)}catch{}return n}set(e,t,n,r){return this.keychain.set(e,t,n,r)}async clear(e){await this.keychain.clear(e),await this.file.get(e)!=null&&await this.file.clear(e)}};async function h(e,t){try{let{Entry:n}=await import(`@napi-rs/keyring`);return new n(u,`__probe__`),process.stderr.write(`[auth] token storage: OS keychain
1
+ import{Wo as e}from"./server-lock-iLcBw_q0-CdrK5Xfo.mjs";import{execFileSync as t}from"node:child_process";import{dirname as n,join as r}from"node:path";import{homedir as i}from"node:os";import{existsSync as a,mkdirSync as o,readFileSync as s,writeFileSync as c}from"node:fs";var l=e();const u=`open-knowledge`;function d(e){try{e()}catch{}}var f=class{backend=`keyring`;constructor(e){this.onKeychainRead=e}async get(e){let{Entry:t}=await import(`@napi-rs/keyring`),n;try{n=new t(u,e).getPassword()}catch(t){return d(()=>this.onKeychainRead?.({kind:`read-error`,host:e,error:t instanceof Error?t.name:`unknown`})),null}if(n==null)return d(()=>this.onKeychainRead?.({kind:`absent`,host:e})),null;try{return JSON.parse(n)}catch{return d(()=>this.onKeychainRead?.({kind:`corrupt-entry`,host:e,error:`corrupt-entry`})),null}}async set(e,t,n,r){let{Entry:i}=await import(`@napi-rs/keyring`),a=new i(u,e),o={login:t,token:n,...r};a.setPassword(JSON.stringify(o))}async clear(e){let{Entry:t}=await import(`@napi-rs/keyring`);try{new t(u,e).deletePassword()}catch{}}},p=class{backend=`file`;authFile;constructor(e){this.authFile=e??r(i(),`.ok`,`auth.yml`)}read(){if(!a(this.authFile))return{};try{return(0,l.parse)(s(this.authFile,`utf-8`))??{}}catch(e){let t=e instanceof Error?e.message:`unknown error`;return process.stderr.write(`[auth] Failed to parse ${this.authFile}: ${t}. Starting with empty credentials.\n`),{}}}write(e){let t=n(this.authFile);a(t)||o(t,{recursive:!0,mode:448}),c(this.authFile,(0,l.stringify)(e),{mode:384})}async get(e){return this.read()[e]??null}async set(e,t,n,r){let i=this.read();i[e]={login:t,token:n,...r},this.write(i)}async clear(e){let t=this.read();delete t[e],this.write(t)}},m=class{backend=`keyring`;constructor(e,t){this.keychain=e,this.file=t}async get(e){let t=await this.keychain.get(e);if(t!=null)return t;let n=await this.file.get(e);if(n==null)return null;try{await this.keychain.set(e,n.login,n.token,{gitProtocol:n.gitProtocol,name:n.name,email:n.email}),await this.file.clear(e),process.stderr.write(`[auth] migrated ${e} credential from ~/.ok/auth.yml to the OS keychain\n`)}catch{}return n}set(e,t,n,r){return this.keychain.set(e,t,n,r)}async clear(e){await this.keychain.clear(e),await this.file.get(e)!=null&&await this.file.clear(e)}};async function h(e,t){try{let{Entry:n}=await import(`@napi-rs/keyring`);return new n(u,`__probe__`),process.stderr.write(`[auth] token storage: OS keychain
2
2
  `),d(()=>t?.onBackendSelected?.({backend:`keyring`})),new m(new f(t?.onKeychainRead),new p(e))}catch(n){let r=n instanceof Error?`${n.name}: ${n.message}`:String(n);return process.stderr.write(`[auth] token storage: file (~/.ok/auth.yml) — OS keychain unavailable: ${r}\n`),d(()=>t?.onBackendSelected?.({backend:`file`,reason:r})),new p(e)}}function g(e){let t=null;return function(){if(t)return t;let n=2e3;return t=(async()=>{let t=null,r=new Promise(r=>{t=setTimeout(()=>{process.stderr.write(`[auth] token storage: keyring init exceeded ${n}ms; falling back to file (~/.ok/auth.yml)\n`),r(new p(e))},n)});try{return await Promise.race([h(e),r])}catch{return new p(e)}finally{t!==null&&clearTimeout(t)}})(),t}}function _(e){let t=g(e);return{async get(e){let n=await(await t()).get(e);return n===null?null:{token:n.token}}}}function v(e){let t=g(e);return{backend:`file`,async get(e){return(await t()).get(e)},async set(e,n,r,i){return(await t()).set(e,n,r,i)},async clear(e){return(await t()).clear(e)}}}async function y(e,t){let n=[],r=new p(t);await r.get(e)!=null&&(await r.clear(e),n.push(`file`));let i;try{let{Entry:t}=await import(`@napi-rs/keyring`);new t(u,`__probe__`);let r,a=await new f(e=>{e.kind===`read-error`&&(r=e.error??`read-error`)}).get(e);if(r!==void 0)i=r;else if(a!=null)try{new t(u,e).deletePassword(),n.push(`keychain`)}catch(e){i=e instanceof Error?e.name:`delete-error`}}catch{}return{touched:n,keychainError:i}}const b=[`/opt/homebrew/bin/gh`,`/usr/local/bin/gh`,`/opt/local/bin/gh`,`/snap/bin/gh`,`/usr/bin/gh`];function x(e,n={}){let r=n._exec??t,i=n._fileExists??a,o=[`auth`,`token`,...e?[`--hostname`,e]:[]],s=[`gh`,...b.filter(i)];for(let e of s)try{let t=r(e,o,{encoding:`utf-8`,stdio:[`ignore`,`pipe`,`pipe`],timeout:5e3}).toString().trim();if(t.length>0)return{available:!0,token:t}}catch{}return{available:!1}}export{v as a,_ as i,y as n,h as r,x as t};
3
- //# sourceMappingURL=gh-detect-BUJyWvGO.mjs.map
3
+ //# sourceMappingURL=gh-detect-KLjG6xCR.mjs.map
package/dist/index.d.mts CHANGED
@@ -187,10 +187,23 @@ interface EditorMcpTarget {
187
187
  id: EditorId;
188
188
  /** Human-friendly name for CLI output. */
189
189
  label: string;
190
- /** Resolve the absolute path to the MCP config file. */
190
+ /**
191
+ * Resolve the absolute path to the MCP config file. Throws for an editor
192
+ * with NO user-global config surface on this platform (Claude Desktop on
193
+ * Linux; Pi everywhere — its integration is the project-scoped managed
194
+ * file). Every generic consumer already tolerates the throw (repair sweep,
195
+ * uninstall plan, classify) — it means "nothing to sweep at user scope".
196
+ */
191
197
  configPath: (cwd: string, home?: string) => string;
192
- /** On-disk config format for this editor. */
193
- format: 'json' | 'toml';
198
+ /**
199
+ * On-disk config format for this editor. `'json'` / `'toml'` entries go
200
+ * through the surgical entry upsert; `'file'` means OK owns the WHOLE file
201
+ * (Pi's bridge extension) — the write path drops
202
+ * `buildPiExtensionSource(...)` verbatim and classify/removal treat the raw
203
+ * text (via the synthetic `PI_MANAGED_FILE_ENTRY_COMMAND` entry) instead of
204
+ * parsing a server map. `topLevelKey` is inert for `'file'` targets.
205
+ */
206
+ format: 'json' | 'toml' | 'file';
194
207
  /** Top-level key that holds the server map. */
195
208
  topLevelKey: 'mcpServers' | 'servers' | 'mcp_servers' | 'mcp';
196
209
  /**
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- import{i as e,r as t,t as n}from"./gh-detect-BUJyWvGO.mjs";import{F as r,I as i,L as a,M as o,N as s,P as c,R as l,S as u,T as d,a as f,c as p,i as m,l as h,n as g,p as _,x as v,y}from"./init-Dvj0QJzs.mjs";import{_ as b,d as x,g as S,i as C,l as w,n as T,p as E,r as D,t as O,u as k,v as A,y as j}from"./src-BWAFlazs.mjs";import{a as M,c as N,d as P,f as F,i as I,l as L,p as R,r as z,t as B,u as V}from"./write-project-skill-Cjym3mlY.mjs";import{n as H}from"./loader-DLBG2Jf0.mjs";import{n as U}from"./preview-DMdR22hR.mjs";import{n as W,t as G}from"./mcp-migrate-event-D0NrGjvc.mjs";export{M as ALL_EDITOR_IDS,N as EDITOR_LABELS,L as EDITOR_TARGETS,V as HOSTS_WITH_USER_SKILL_DIR,g as LAUNCH_CONFIG_NAME,m as LAUNCH_UI_CHAIN_SENTINEL,f as LAUNCH_UI_CHAIN_V1,w as PATH_SHIM_BEGIN,k as PATH_SHIM_BLOCK_RE,x as PATH_SHIM_END,o as addOkPathsToGitExclude,B as assertProjectPathSafe,P as buildManagedServerEntry,D as buildMcpConfigDeclineEvent,G as buildMcpConfigMigrateEvent,p as classifyExistingMcpEntry,t as createTokenStore,n as detectGh,h as detectInstalledEditors,s as formatTrackedRemediation,c as getExcludedOkPaths,r as getOkArtifactPaths,F as isEntryUpToDate,R as isOwnManagedEntry,H as loadConfig,e as makeLazyProbeTokenStore,S as parseGitHubBlobUrl,b as parseGitHubShareUrl,A as parseGitHubTreeUrl,j as parseGitUrl,E as pathInstallMarkerPath,U as previewContent,i as probeTrackedOkPaths,_ as readExistingMcpEntry,a as readSharingMode,l as removeOkPathsFromGitExclude,z as removeUserGlobalSkillBundle,d as resolveProjectRoot,C as runStop,y as scaffoldLaunchJson,W as truncatePriorEntry,I as userGlobalSkillBundleTargets,T as validateLocalFolderForShare,v as writeEditorMcpConfig,O as writeProjectAiIntegrations,u as writeUserMcpConfigs};
1
+ import{i as e,r as t,t as n}from"./gh-detect-KLjG6xCR.mjs";import{B as r,C as i,E as a,F as o,I as s,L as c,P as l,R as u,S as d,a as f,b as p,i as m,l as h,m as g,n as _,u as v,z as y}from"./init-DdgQk34k.mjs";import{_ as b,d as x,g as S,i as C,l as w,n as T,p as E,r as D,t as O,u as k,v as A,y as j}from"./src-D0hiW4nw.mjs";import{a as M,c as N,g as P,h as F,i as I,l as L,m as R,r as z,t as B,u as V}from"./write-project-skill-BEzL3S1a.mjs";import{n as H}from"./loader-XWkMJYxk.mjs";import{n as U}from"./preview-BLauTAym.mjs";import{n as W,t as G}from"./mcp-migrate-event-D0NrGjvc.mjs";export{M as ALL_EDITOR_IDS,N as EDITOR_LABELS,L as EDITOR_TARGETS,V as HOSTS_WITH_USER_SKILL_DIR,_ as LAUNCH_CONFIG_NAME,m as LAUNCH_UI_CHAIN_SENTINEL,f as LAUNCH_UI_CHAIN_V1,w as PATH_SHIM_BEGIN,k as PATH_SHIM_BLOCK_RE,x as PATH_SHIM_END,l as addOkPathsToGitExclude,B as assertProjectPathSafe,R as buildManagedServerEntry,D as buildMcpConfigDeclineEvent,G as buildMcpConfigMigrateEvent,h as classifyExistingMcpEntry,t as createTokenStore,n as detectGh,v as detectInstalledEditors,o as formatTrackedRemediation,s as getExcludedOkPaths,c as getOkArtifactPaths,F as isEntryUpToDate,P as isOwnManagedEntry,H as loadConfig,e as makeLazyProbeTokenStore,S as parseGitHubBlobUrl,b as parseGitHubShareUrl,A as parseGitHubTreeUrl,j as parseGitUrl,E as pathInstallMarkerPath,U as previewContent,u as probeTrackedOkPaths,g as readExistingMcpEntry,y as readSharingMode,r as removeOkPathsFromGitExclude,z as removeUserGlobalSkillBundle,a as resolveProjectRoot,C as runStop,p as scaffoldLaunchJson,W as truncatePriorEntry,I as userGlobalSkillBundleTargets,T as validateLocalFolderForShare,d as writeEditorMcpConfig,O as writeProjectAiIntegrations,i as writeUserMcpConfigs};