@drewpayment/mink 0.12.0-beta.6 → 0.12.0-beta.8

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 (47) hide show
  1. package/README.md +1 -0
  2. package/dashboard/out/404.html +1 -1
  3. package/dashboard/out/action-log.html +1 -1
  4. package/dashboard/out/action-log.txt +1 -1
  5. package/dashboard/out/activity.html +1 -1
  6. package/dashboard/out/activity.txt +1 -1
  7. package/dashboard/out/bugs.html +1 -1
  8. package/dashboard/out/bugs.txt +1 -1
  9. package/dashboard/out/capture.html +1 -1
  10. package/dashboard/out/capture.txt +1 -1
  11. package/dashboard/out/config.html +1 -1
  12. package/dashboard/out/config.txt +1 -1
  13. package/dashboard/out/daemon.html +1 -1
  14. package/dashboard/out/daemon.txt +1 -1
  15. package/dashboard/out/design.html +1 -1
  16. package/dashboard/out/design.txt +1 -1
  17. package/dashboard/out/discord.html +1 -1
  18. package/dashboard/out/discord.txt +1 -1
  19. package/dashboard/out/file-index.html +1 -1
  20. package/dashboard/out/file-index.txt +1 -1
  21. package/dashboard/out/index.html +1 -1
  22. package/dashboard/out/index.txt +1 -1
  23. package/dashboard/out/insights.html +1 -1
  24. package/dashboard/out/insights.txt +1 -1
  25. package/dashboard/out/learning.html +1 -1
  26. package/dashboard/out/learning.txt +1 -1
  27. package/dashboard/out/overview.html +1 -1
  28. package/dashboard/out/overview.txt +1 -1
  29. package/dashboard/out/scheduler.html +1 -1
  30. package/dashboard/out/scheduler.txt +1 -1
  31. package/dashboard/out/sync.html +1 -1
  32. package/dashboard/out/sync.txt +1 -1
  33. package/dashboard/out/tokens.html +1 -1
  34. package/dashboard/out/tokens.txt +1 -1
  35. package/dashboard/out/waste.html +1 -1
  36. package/dashboard/out/waste.txt +1 -1
  37. package/dashboard/out/wiki.html +1 -1
  38. package/dashboard/out/wiki.txt +1 -1
  39. package/dist/cli.bun.js +21 -14
  40. package/dist/cli.node.js +32 -23
  41. package/package.json +2 -2
  42. package/src/commands/init.ts +30 -14
  43. package/src/core/sync-merge-drivers.ts +8 -4
  44. package/src/core/sync.ts +7 -0
  45. package/src/storage/driver.node.ts +8 -0
  46. /package/dashboard/out/_next/static/{2qo2HCBP_HsNoQT7-KrRp → JMh4Nbbot9RESlGvYp6_4}/_buildManifest.js +0 -0
  47. /package/dashboard/out/_next/static/{2qo2HCBP_HsNoQT7-KrRp → JMh4Nbbot9RESlGvYp6_4}/_ssgManifest.js +0 -0
@@ -15,7 +15,7 @@ f:I[4431,[],"ViewportBoundary"]
15
15
  :HL["/_next/static/media/bb3ef058b751a6ad-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
16
16
  :HL["/_next/static/media/e4af272ccee01ff0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
17
17
  :HL["/_next/static/css/5e43917ea49c5b3e.css","style"]
18
- 0:{"P":null,"b":"2qo2HCBP_HsNoQT7-KrRp","p":"","c":["","waste"],"i":false,"f":[[["",{"children":["(panels)",{"children":["waste",{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/5e43917ea49c5b3e.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"__variable_f367f3 __variable_3c557b","data-theme":"dark","data-accent":"green","data-density":"compact","data-live":"on","data-daemon":"offline","children":["$","$L2",null,{"attribute":"data-theme","value":{"light":"light","dark":"dark"},"defaultTheme":"dark","enableSystem":true,"storageKey":"mink-theme","children":[["$","$L3",null,{}],["$","$L4",null,{"children":["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]}]}]]}],{"children":["(panels)",["$","$1","c",{"children":[null,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:style","children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:children:props:children:1:props:style","children":404}],["$","div",null,{"style":"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:style","children":["$","h2",null,{"style":"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style","children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["waste",["$","$1","c",{"children":[null,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L7",null,{"Component":"$8","searchParams":{},"params":{},"promises":["$@9","$@a"]}],null,["$","$Lb",null,{"children":["$Lc",["$","$Ld",null,{"promise":"$@e"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,[["$","$Lf",null,{"children":"$L10"}],["$","meta",null,{"name":"next-size-adjust","content":""}]],["$","$L11",null,{"children":["$","div",null,{"hidden":true,"children":["$","$12",null,{"fallback":null,"children":"$L13"}]}]}]]}],false]],"m":"$undefined","G":["$14",[]],"s":false,"S":true}
18
+ 0:{"P":null,"b":"JMh4Nbbot9RESlGvYp6_4","p":"","c":["","waste"],"i":false,"f":[[["",{"children":["(panels)",{"children":["waste",{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/5e43917ea49c5b3e.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"__variable_f367f3 __variable_3c557b","data-theme":"dark","data-accent":"green","data-density":"compact","data-live":"on","data-daemon":"offline","children":["$","$L2",null,{"attribute":"data-theme","value":{"light":"light","dark":"dark"},"defaultTheme":"dark","enableSystem":true,"storageKey":"mink-theme","children":[["$","$L3",null,{}],["$","$L4",null,{"children":["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]}]}]]}],{"children":["(panels)",["$","$1","c",{"children":[null,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:style","children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:children:props:children:1:props:style","children":404}],["$","div",null,{"style":"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:style","children":["$","h2",null,{"style":"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style","children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["waste",["$","$1","c",{"children":[null,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L7",null,{"Component":"$8","searchParams":{},"params":{},"promises":["$@9","$@a"]}],null,["$","$Lb",null,{"children":["$Lc",["$","$Ld",null,{"promise":"$@e"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,[["$","$Lf",null,{"children":"$L10"}],["$","meta",null,{"name":"next-size-adjust","content":""}]],["$","$L11",null,{"children":["$","div",null,{"hidden":true,"children":["$","$12",null,{"fallback":null,"children":"$L13"}]}]}]]}],false]],"m":"$undefined","G":["$14",[]],"s":false,"S":true}
19
19
  9:{}
20
20
  a:"$0:f:0:1:2:children:2:children:2:children:1:props:children:0:props:params"
21
21
  10:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
@@ -1 +1 @@
1
- <!DOCTYPE html><!--2qo2HCBP_HsNoQT7_KrRp--><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/bb3ef058b751a6ad-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/e4af272ccee01ff0-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/5e43917ea49c5b3e.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-4e3139a490df1cfe.js"/><script src="/_next/static/chunks/4bd1b696-c023c6e3521b1417.js" async=""></script><script src="/_next/static/chunks/255-6b79f309a27fb98b.js" async=""></script><script src="/_next/static/chunks/main-app-c2dc0acf542ec1c6.js" async=""></script><script src="/_next/static/chunks/189-fe789442321eb5eb.js" async=""></script><script src="/_next/static/chunks/app/layout-782cd26e0ccc4514.js" async=""></script><script src="/_next/static/chunks/app/(panels)/wiki/page-a32fdbd0bf58b30b.js" async=""></script><meta name="next-size-adjust" content=""/><title>Mink — Command Center</title><meta name="description" content="Real-time dashboard for Mink token intelligence"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="__variable_f367f3 __variable_3c557b" data-theme="dark" data-accent="green" data-density="compact" data-live="on" data-daemon="offline"><div hidden=""><!--$--><!--/$--></div><script>((a,b,c,d,e,f,g,h)=>{let i=document.documentElement,j=["light","dark"];function k(b){var c;(Array.isArray(a)?a:[a]).forEach(a=>{let c="class"===a,d=c&&f?e.map(a=>f[a]||a):e;c?(i.classList.remove(...d),i.classList.add(f&&f[b]?f[b]:b)):i.setAttribute(a,b)}),c=b,h&&j.includes(c)&&(i.style.colorScheme=c)}if(d)k(d);else try{let a=localStorage.getItem(b)||c,d=g&&"system"===a?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":a;k(d)}catch(a){}})("data-theme","mink-theme","dark",null,["light","dark"],{"light":"light","dark":"dark"},true,true)</script><div id="app-root"><div class="shell"><aside class="sidebar"><div class="sb-head"><div class="sb-logo">M</div><div class="sb-title">Mink</div><div class="sb-sub">v1</div></div><div class="sb-project"><svg class="icn" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="M3 7a2 2 0 012-2h4l2 2h8a2 2 0 012 2v9a2 2 0 01-2 2H5a2 2 0 01-2-2V7z"></path></svg><div style="min-width:0;flex:1"><div class="pname">Mink</div><div class="pslug"></div></div><svg class="icn pchev" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="M6 9l6 6 6-6"></path></svg></div><div><div class="sb-group">Overview</div><a class="sb-item" href="/overview"><svg class="icn" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="M22 12h-4l-3 9L9 3l-3 9H2"></path></svg><span>Sessions</span></a><a class="sb-item" href="/activity"><svg class="icn" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="M2 12h4l2-7 4 14 2-7h6"></path></svg><span>Activity log</span></a><a class="sb-item" href="/tokens"><svg class="icn" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="M3 20h18M6 16V8M11 16V4M16 16v-6M21 16v-3"></path></svg><span>Token ledger</span></a><a class="sb-item" href="/waste"><svg class="icn" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2l11 20H1L12 2zm0 7v5m0 4v0"></path></svg><span>Waste detect</span></a></div><div><div class="sb-group">Knowledge</div><a class="sb-item" href="/file-index"><svg class="icn" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8l-6-6z"></path></svg><span>File index</span></a><a class="sb-item" href="/learning"><svg class="icn" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="M12 4a4 4 0 00-4 4v1a3 3 0 00-2 5.5A3 3 0 008 19a4 4 0 004 2 4 4 0 004-2 3 3 0 002-4.5A3 3 0 0016 9V8a4 4 0 00-4-4z"></path></svg><span>Learning</span></a><a class="sb-item" href="/bugs"><svg class="icn" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="M8 8V6a4 4 0 018 0v2M4 13h16M12 8v13M7 21s-3-2-3-8M17 21s3-2 3-8M8 9l-4-3M16 9l4-3M8 13l-4 3M16 13l4 3"></path></svg><span>Bug memory</span></a></div><div><div class="sb-group">Notes &amp; Wiki</div><a aria-current="page" class="sb-item active" href="/wiki"><svg class="icn" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="M4 4h12a4 4 0 014 4v12H8a4 4 0 01-4-4V4zm0 0v16"></path></svg><span>Vault</span></a><a class="sb-item" href="/capture"><svg class="icn" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="M12 5v14M5 12h14"></path></svg><span>Capture</span></a></div><div><div class="sb-group">Operations</div><a class="sb-item" href="/scheduler"><svg class="icn" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22a10 10 0 100-20 10 10 0 000 20zm0-16v6l4 2"></path></svg><span>Scheduler</span></a><a class="sb-item" href="/discord"><svg class="icn" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="M9 14a1 1 0 100-2 1 1 0 000 2zm6 0a1 1 0 100-2 1 1 0 000 2zM7 7l2-1h6l2 1 2 5-1 5-3 1-1-2-4 0-1 2-3-1-1-5z"></path></svg><span>Discord</span></a><a class="sb-item" href="/sync"><svg class="icn" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="M6 3v12M6 15a3 3 0 110 6 3 3 0 010-6zm0-12a3 3 0 110 6 3 3 0 010-6zm12 6a3 3 0 110 6 3 3 0 010-6zM18 9v2a2 2 0 01-2 2H9"></path></svg><span>Sync</span></a></div><div><div class="sb-group">System</div><a class="sb-item" href="/daemon"><svg class="icn" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="M18 6a8 8 0 11-12 0M12 2v8"></path></svg><span>Daemon</span></a><a class="sb-item" href="/config"><svg class="icn" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="M12 15a3 3 0 100-6 3 3 0 000 6zm8-3l2-1-2-4-2 1-1-1V4h-4v1l-1 1-2-1-2 4 2 1v2l-2 1 2 4 2-1 1 1v1h4v-1l1-1 2 1 2-4-2-1v-2z"></path></svg><span>Configuration</span></a></div><div style="height:20px"></div></aside><header class="topbar"><div class="tb-section"><span class="muted">Mink</span><span class="sep">/</span><span class="muted">Notes &amp; Wiki</span><span class="sep">/</span><span class="crumb">Vault</span></div><div class="tb-spacer"></div><div class="cmdk" title="Command palette (coming soon)"><svg class="icn" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="M21 21l-5-5m2-6a8 8 0 11-16 0 8 8 0 0116 0z"></path></svg><span>Search files, notes, bugs…</span><kbd>⌘K</kbd></div><span class="daemon-pill" title="Daemon offline"><span class="pulse"></span><span class="mono" style="font-size:10.5px">daemon · offline</span></span><button type="button" class="tb-icon-btn" title="Refresh data"><svg class="icn" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="M3 12a9 9 0 019-9c2.5 0 4.7 1 6.3 2.7M21 3v5h-5M21 12a9 9 0 01-9 9c-2.5 0-4.7-1-6.3-2.7M3 21v-5h5"></path></svg></button><button type="button" class="tb-icon-btn" title="Tweaks"><svg class="icn" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="M15 4V2m0 14v-2m-7-7h2M22 9h-2M5.6 5.6l1.4 1.4M18.4 5.6L17 7m0 10l1.4 1.4M7 17l-1.4 1.4M14 7l-9 9 3 3 9-9"></path></svg></button><button type="button" class="tb-icon-btn" title="More" aria-label="More"><svg class="icn" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12a1 1 0 102 0 1 1 0 00-2 0zm6 0a1 1 0 102 0 1 1 0 00-2 0zm6 0a1 1 0 102 0 1 1 0 00-2 0z"></path></svg></button></header><main class="main"><div class="page"><div class="card"><div class="card-head"><h3>Wiki</h3></div><div class="card-body"><div class="empty"><h4>Loading…</h4></div></div></div></div><!--$--><!--/$--></main><footer class="statusbar"><span class="sb-stat daemon-stat"><span class="dot-mini"></span><span class="k">daemon</span><span class="v">offline</span></span><span style="flex:1"></span><span class="sb-stat"><span class="k">run</span><span class="v">mink daemon start</span></span></footer></div></div><script src="/_next/static/chunks/webpack-4e3139a490df1cfe.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[5379,[\"189\",\"static/chunks/189-fe789442321eb5eb.js\",\"177\",\"static/chunks/app/layout-782cd26e0ccc4514.js\"],\"ThemeProvider\"]\n3:I[2800,[\"189\",\"static/chunks/189-fe789442321eb5eb.js\",\"177\",\"static/chunks/app/layout-782cd26e0ccc4514.js\"],\"SSEProvider\"]\n4:I[7758,[\"189\",\"static/chunks/189-fe789442321eb5eb.js\",\"177\",\"static/chunks/app/layout-782cd26e0ccc4514.js\"],\"AppShell\"]\n5:I[9766,[],\"\"]\n6:I[8924,[],\"\"]\n7:I[1959,[],\"ClientPageRoot\"]\n8:I[3191,[\"386\",\"static/chunks/app/(panels)/wiki/page-a32fdbd0bf58b30b.js\"],\"default\"]\nb:I[4431,[],\"OutletBoundary\"]\nd:I[5278,[],\"AsyncMetadataOutlet\"]\nf:I[4431,[],\"ViewportBoundary\"]\n11:I[4431,[],\"MetadataBoundary\"]\n12:\"$Sreact.suspense\"\n14:I[7150,[],\"\"]\n:HL[\"/_next/static/media/bb3ef058b751a6ad-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/e4af272ccee01ff0-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/5e43917ea49c5b3e.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"2qo2HCBP_HsNoQT7-KrRp\",\"p\":\"\",\"c\":[\"\",\"wiki\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"(panels)\",{\"children\":[\"wiki\",{\"children\":[\"__PAGE__\",{}]}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/5e43917ea49c5b3e.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"className\":\"__variable_f367f3 __variable_3c557b\",\"data-theme\":\"dark\",\"data-accent\":\"green\",\"data-density\":\"compact\",\"data-live\":\"on\",\"data-daemon\":\"offline\",\"children\":[\"$\",\"$L2\",null,{\"attribute\":\"data-theme\",\"value\":{\"light\":\"light\",\"dark\":\"dark\"},\"defaultTheme\":\"dark\",\"enableSystem\":true,\"storageKey\":\"mink-theme\",\"children\":[[\"$\",\"$L3\",null,{}],[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]}]}]]}],{\"children\":[\"(panels)\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:style\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"wiki\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L7\",null,{\"Component\":\"$8\",\"searchParams\":{},\"params\":{},\"promises\":[\"$@9\",\"$@a\"]}],null,[\"$\",\"$Lb\",null,{\"children\":[\"$Lc\",[\"$\",\"$Ld\",null,{\"promise\":\"$@e\"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[[\"$\",\"$Lf\",null,{\"children\":\"$L10\"}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]],[\"$\",\"$L11\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$12\",null,{\"fallback\":null,\"children\":\"$L13\"}]}]}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$14\",[]],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"9:{}\na:\"$0:f:0:1:2:children:2:children:2:children:1:props:children:0:props:params\"\n"])</script><script>self.__next_f.push([1,"10:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\nc:null\n"])</script><script>self.__next_f.push([1,"e:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Mink — Command Center\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Real-time dashboard for Mink token intelligence\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"13:\"$e:metadata\"\n"])</script></body></html>
1
+ <!DOCTYPE html><!--JMh4Nbbot9RESlGvYp6_4--><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/bb3ef058b751a6ad-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/e4af272ccee01ff0-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/5e43917ea49c5b3e.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-4e3139a490df1cfe.js"/><script src="/_next/static/chunks/4bd1b696-c023c6e3521b1417.js" async=""></script><script src="/_next/static/chunks/255-6b79f309a27fb98b.js" async=""></script><script src="/_next/static/chunks/main-app-c2dc0acf542ec1c6.js" async=""></script><script src="/_next/static/chunks/189-fe789442321eb5eb.js" async=""></script><script src="/_next/static/chunks/app/layout-782cd26e0ccc4514.js" async=""></script><script src="/_next/static/chunks/app/(panels)/wiki/page-a32fdbd0bf58b30b.js" async=""></script><meta name="next-size-adjust" content=""/><title>Mink — Command Center</title><meta name="description" content="Real-time dashboard for Mink token intelligence"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="__variable_f367f3 __variable_3c557b" data-theme="dark" data-accent="green" data-density="compact" data-live="on" data-daemon="offline"><div hidden=""><!--$--><!--/$--></div><script>((a,b,c,d,e,f,g,h)=>{let i=document.documentElement,j=["light","dark"];function k(b){var c;(Array.isArray(a)?a:[a]).forEach(a=>{let c="class"===a,d=c&&f?e.map(a=>f[a]||a):e;c?(i.classList.remove(...d),i.classList.add(f&&f[b]?f[b]:b)):i.setAttribute(a,b)}),c=b,h&&j.includes(c)&&(i.style.colorScheme=c)}if(d)k(d);else try{let a=localStorage.getItem(b)||c,d=g&&"system"===a?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":a;k(d)}catch(a){}})("data-theme","mink-theme","dark",null,["light","dark"],{"light":"light","dark":"dark"},true,true)</script><div id="app-root"><div class="shell"><aside class="sidebar"><div class="sb-head"><div class="sb-logo">M</div><div class="sb-title">Mink</div><div class="sb-sub">v1</div></div><div class="sb-project"><svg class="icn" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="M3 7a2 2 0 012-2h4l2 2h8a2 2 0 012 2v9a2 2 0 01-2 2H5a2 2 0 01-2-2V7z"></path></svg><div style="min-width:0;flex:1"><div class="pname">Mink</div><div class="pslug"></div></div><svg class="icn pchev" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="M6 9l6 6 6-6"></path></svg></div><div><div class="sb-group">Overview</div><a class="sb-item" href="/overview"><svg class="icn" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="M22 12h-4l-3 9L9 3l-3 9H2"></path></svg><span>Sessions</span></a><a class="sb-item" href="/activity"><svg class="icn" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="M2 12h4l2-7 4 14 2-7h6"></path></svg><span>Activity log</span></a><a class="sb-item" href="/tokens"><svg class="icn" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="M3 20h18M6 16V8M11 16V4M16 16v-6M21 16v-3"></path></svg><span>Token ledger</span></a><a class="sb-item" href="/waste"><svg class="icn" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2l11 20H1L12 2zm0 7v5m0 4v0"></path></svg><span>Waste detect</span></a></div><div><div class="sb-group">Knowledge</div><a class="sb-item" href="/file-index"><svg class="icn" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8l-6-6z"></path></svg><span>File index</span></a><a class="sb-item" href="/learning"><svg class="icn" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="M12 4a4 4 0 00-4 4v1a3 3 0 00-2 5.5A3 3 0 008 19a4 4 0 004 2 4 4 0 004-2 3 3 0 002-4.5A3 3 0 0016 9V8a4 4 0 00-4-4z"></path></svg><span>Learning</span></a><a class="sb-item" href="/bugs"><svg class="icn" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="M8 8V6a4 4 0 018 0v2M4 13h16M12 8v13M7 21s-3-2-3-8M17 21s3-2 3-8M8 9l-4-3M16 9l4-3M8 13l-4 3M16 13l4 3"></path></svg><span>Bug memory</span></a></div><div><div class="sb-group">Notes &amp; Wiki</div><a aria-current="page" class="sb-item active" href="/wiki"><svg class="icn" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="M4 4h12a4 4 0 014 4v12H8a4 4 0 01-4-4V4zm0 0v16"></path></svg><span>Vault</span></a><a class="sb-item" href="/capture"><svg class="icn" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="M12 5v14M5 12h14"></path></svg><span>Capture</span></a></div><div><div class="sb-group">Operations</div><a class="sb-item" href="/scheduler"><svg class="icn" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22a10 10 0 100-20 10 10 0 000 20zm0-16v6l4 2"></path></svg><span>Scheduler</span></a><a class="sb-item" href="/discord"><svg class="icn" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="M9 14a1 1 0 100-2 1 1 0 000 2zm6 0a1 1 0 100-2 1 1 0 000 2zM7 7l2-1h6l2 1 2 5-1 5-3 1-1-2-4 0-1 2-3-1-1-5z"></path></svg><span>Discord</span></a><a class="sb-item" href="/sync"><svg class="icn" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="M6 3v12M6 15a3 3 0 110 6 3 3 0 010-6zm0-12a3 3 0 110 6 3 3 0 010-6zm12 6a3 3 0 110 6 3 3 0 010-6zM18 9v2a2 2 0 01-2 2H9"></path></svg><span>Sync</span></a></div><div><div class="sb-group">System</div><a class="sb-item" href="/daemon"><svg class="icn" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="M18 6a8 8 0 11-12 0M12 2v8"></path></svg><span>Daemon</span></a><a class="sb-item" href="/config"><svg class="icn" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="M12 15a3 3 0 100-6 3 3 0 000 6zm8-3l2-1-2-4-2 1-1-1V4h-4v1l-1 1-2-1-2 4 2 1v2l-2 1 2 4 2-1 1 1v1h4v-1l1-1 2 1 2-4-2-1v-2z"></path></svg><span>Configuration</span></a></div><div style="height:20px"></div></aside><header class="topbar"><div class="tb-section"><span class="muted">Mink</span><span class="sep">/</span><span class="muted">Notes &amp; Wiki</span><span class="sep">/</span><span class="crumb">Vault</span></div><div class="tb-spacer"></div><div class="cmdk" title="Command palette (coming soon)"><svg class="icn" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="M21 21l-5-5m2-6a8 8 0 11-16 0 8 8 0 0116 0z"></path></svg><span>Search files, notes, bugs…</span><kbd>⌘K</kbd></div><span class="daemon-pill" title="Daemon offline"><span class="pulse"></span><span class="mono" style="font-size:10.5px">daemon · offline</span></span><button type="button" class="tb-icon-btn" title="Refresh data"><svg class="icn" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="M3 12a9 9 0 019-9c2.5 0 4.7 1 6.3 2.7M21 3v5h-5M21 12a9 9 0 01-9 9c-2.5 0-4.7-1-6.3-2.7M3 21v-5h5"></path></svg></button><button type="button" class="tb-icon-btn" title="Tweaks"><svg class="icn" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="M15 4V2m0 14v-2m-7-7h2M22 9h-2M5.6 5.6l1.4 1.4M18.4 5.6L17 7m0 10l1.4 1.4M7 17l-1.4 1.4M14 7l-9 9 3 3 9-9"></path></svg></button><button type="button" class="tb-icon-btn" title="More" aria-label="More"><svg class="icn" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12a1 1 0 102 0 1 1 0 00-2 0zm6 0a1 1 0 102 0 1 1 0 00-2 0zm6 0a1 1 0 102 0 1 1 0 00-2 0z"></path></svg></button></header><main class="main"><div class="page"><div class="card"><div class="card-head"><h3>Wiki</h3></div><div class="card-body"><div class="empty"><h4>Loading…</h4></div></div></div></div><!--$--><!--/$--></main><footer class="statusbar"><span class="sb-stat daemon-stat"><span class="dot-mini"></span><span class="k">daemon</span><span class="v">offline</span></span><span style="flex:1"></span><span class="sb-stat"><span class="k">run</span><span class="v">mink daemon start</span></span></footer></div></div><script src="/_next/static/chunks/webpack-4e3139a490df1cfe.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[5379,[\"189\",\"static/chunks/189-fe789442321eb5eb.js\",\"177\",\"static/chunks/app/layout-782cd26e0ccc4514.js\"],\"ThemeProvider\"]\n3:I[2800,[\"189\",\"static/chunks/189-fe789442321eb5eb.js\",\"177\",\"static/chunks/app/layout-782cd26e0ccc4514.js\"],\"SSEProvider\"]\n4:I[7758,[\"189\",\"static/chunks/189-fe789442321eb5eb.js\",\"177\",\"static/chunks/app/layout-782cd26e0ccc4514.js\"],\"AppShell\"]\n5:I[9766,[],\"\"]\n6:I[8924,[],\"\"]\n7:I[1959,[],\"ClientPageRoot\"]\n8:I[3191,[\"386\",\"static/chunks/app/(panels)/wiki/page-a32fdbd0bf58b30b.js\"],\"default\"]\nb:I[4431,[],\"OutletBoundary\"]\nd:I[5278,[],\"AsyncMetadataOutlet\"]\nf:I[4431,[],\"ViewportBoundary\"]\n11:I[4431,[],\"MetadataBoundary\"]\n12:\"$Sreact.suspense\"\n14:I[7150,[],\"\"]\n:HL[\"/_next/static/media/bb3ef058b751a6ad-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/e4af272ccee01ff0-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/5e43917ea49c5b3e.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"JMh4Nbbot9RESlGvYp6_4\",\"p\":\"\",\"c\":[\"\",\"wiki\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"(panels)\",{\"children\":[\"wiki\",{\"children\":[\"__PAGE__\",{}]}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/5e43917ea49c5b3e.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"className\":\"__variable_f367f3 __variable_3c557b\",\"data-theme\":\"dark\",\"data-accent\":\"green\",\"data-density\":\"compact\",\"data-live\":\"on\",\"data-daemon\":\"offline\",\"children\":[\"$\",\"$L2\",null,{\"attribute\":\"data-theme\",\"value\":{\"light\":\"light\",\"dark\":\"dark\"},\"defaultTheme\":\"dark\",\"enableSystem\":true,\"storageKey\":\"mink-theme\",\"children\":[[\"$\",\"$L3\",null,{}],[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]}]}]]}],{\"children\":[\"(panels)\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:style\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"wiki\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L7\",null,{\"Component\":\"$8\",\"searchParams\":{},\"params\":{},\"promises\":[\"$@9\",\"$@a\"]}],null,[\"$\",\"$Lb\",null,{\"children\":[\"$Lc\",[\"$\",\"$Ld\",null,{\"promise\":\"$@e\"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[[\"$\",\"$Lf\",null,{\"children\":\"$L10\"}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]],[\"$\",\"$L11\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$12\",null,{\"fallback\":null,\"children\":\"$L13\"}]}]}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$14\",[]],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"9:{}\na:\"$0:f:0:1:2:children:2:children:2:children:1:props:children:0:props:params\"\n"])</script><script>self.__next_f.push([1,"10:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\nc:null\n"])</script><script>self.__next_f.push([1,"e:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Mink — Command Center\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Real-time dashboard for Mink token intelligence\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"13:\"$e:metadata\"\n"])</script></body></html>
@@ -15,7 +15,7 @@ f:I[4431,[],"ViewportBoundary"]
15
15
  :HL["/_next/static/media/bb3ef058b751a6ad-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
16
16
  :HL["/_next/static/media/e4af272ccee01ff0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
17
17
  :HL["/_next/static/css/5e43917ea49c5b3e.css","style"]
18
- 0:{"P":null,"b":"2qo2HCBP_HsNoQT7-KrRp","p":"","c":["","wiki"],"i":false,"f":[[["",{"children":["(panels)",{"children":["wiki",{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/5e43917ea49c5b3e.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"__variable_f367f3 __variable_3c557b","data-theme":"dark","data-accent":"green","data-density":"compact","data-live":"on","data-daemon":"offline","children":["$","$L2",null,{"attribute":"data-theme","value":{"light":"light","dark":"dark"},"defaultTheme":"dark","enableSystem":true,"storageKey":"mink-theme","children":[["$","$L3",null,{}],["$","$L4",null,{"children":["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]}]}]]}],{"children":["(panels)",["$","$1","c",{"children":[null,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:style","children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:children:props:children:1:props:style","children":404}],["$","div",null,{"style":"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:style","children":["$","h2",null,{"style":"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style","children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["wiki",["$","$1","c",{"children":[null,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L7",null,{"Component":"$8","searchParams":{},"params":{},"promises":["$@9","$@a"]}],null,["$","$Lb",null,{"children":["$Lc",["$","$Ld",null,{"promise":"$@e"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,[["$","$Lf",null,{"children":"$L10"}],["$","meta",null,{"name":"next-size-adjust","content":""}]],["$","$L11",null,{"children":["$","div",null,{"hidden":true,"children":["$","$12",null,{"fallback":null,"children":"$L13"}]}]}]]}],false]],"m":"$undefined","G":["$14",[]],"s":false,"S":true}
18
+ 0:{"P":null,"b":"JMh4Nbbot9RESlGvYp6_4","p":"","c":["","wiki"],"i":false,"f":[[["",{"children":["(panels)",{"children":["wiki",{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/5e43917ea49c5b3e.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"__variable_f367f3 __variable_3c557b","data-theme":"dark","data-accent":"green","data-density":"compact","data-live":"on","data-daemon":"offline","children":["$","$L2",null,{"attribute":"data-theme","value":{"light":"light","dark":"dark"},"defaultTheme":"dark","enableSystem":true,"storageKey":"mink-theme","children":[["$","$L3",null,{}],["$","$L4",null,{"children":["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]}]}]]}],{"children":["(panels)",["$","$1","c",{"children":[null,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:style","children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:children:props:children:1:props:style","children":404}],["$","div",null,{"style":"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:style","children":["$","h2",null,{"style":"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style","children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["wiki",["$","$1","c",{"children":[null,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L7",null,{"Component":"$8","searchParams":{},"params":{},"promises":["$@9","$@a"]}],null,["$","$Lb",null,{"children":["$Lc",["$","$Ld",null,{"promise":"$@e"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,[["$","$Lf",null,{"children":"$L10"}],["$","meta",null,{"name":"next-size-adjust","content":""}]],["$","$L11",null,{"children":["$","div",null,{"hidden":true,"children":["$","$12",null,{"fallback":null,"children":"$L13"}]}]}]]}],false]],"m":"$undefined","G":["$14",[]],"s":false,"S":true}
19
19
  9:{}
20
20
  a:"$0:f:0:1:2:children:2:children:2:children:1:props:children:0:props:params"
21
21
  10:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
package/dist/cli.bun.js CHANGED
@@ -2018,6 +2018,13 @@ wiki/projects/*/conventions.md
2018
2018
  wiki/projects/*/architecture.md
2019
2019
  `, GITATTRIBUTES_CONTENTS = `# Sync v2 \u2014 merge drivers eliminate conflicts on shared files.
2020
2020
  # Drivers are registered in .git/config by ensureMergeDriversRegistered().
2021
+ #
2022
+ # NOTE (sync size tradeoff): marking mink.db 'binary' means git stores a full
2023
+ # new blob of the database on every sync rather than a line-level delta the way
2024
+ # it did for the old file-index.json/token-ledger.json. For large projects
2025
+ # (20k+ files) this grows the ~/.mink sync repo and lengthens clones over time.
2026
+ # This is an accepted cost of moving the hot-path stores into SQLite for hook
2027
+ # latency. If the repo gets heavy, run a periodic 'git gc'/repack on ~/.mink.
2021
2028
  projects/*/mink.db merge=mink-db-merge
2022
2029
  projects/*/mink.db binary
2023
2030
  projects/*/file-index.json merge=mink-json-union
@@ -5589,6 +5596,7 @@ var init_seed = __esm(() => {
5589
5596
  var exports_init = {};
5590
5597
  __export(exports_init, {
5591
5598
  writeMinkRule: () => writeMinkRule,
5599
+ resolveCliPathFrom: () => resolveCliPathFrom,
5592
5600
  resolveCliPath: () => resolveCliPath,
5593
5601
  mergeHooksIntoSettings: () => mergeHooksIntoSettings,
5594
5602
  init: () => init,
@@ -5606,17 +5614,19 @@ function detectRuntime() {
5606
5614
  return "node";
5607
5615
  }
5608
5616
  }
5609
- function resolveCliPath() {
5610
- const selfPath = new URL(import.meta.url).pathname;
5617
+ function resolveCliPathFrom(selfPath) {
5611
5618
  const selfDir = dirname7(selfPath);
5612
- if (selfPath.endsWith("dist/cli.js")) {
5613
- return selfPath;
5619
+ if (selfPath.endsWith("dist/cli.js") || selfPath.endsWith("dist/cli.bun.js") || selfPath.endsWith("dist/cli.node.js")) {
5620
+ return join18(selfDir, "cli.js");
5614
5621
  }
5615
- const projectRoot = resolve2(selfDir, "../..");
5616
- const distPath = join18(projectRoot, "dist", "cli.js");
5617
- if (existsSync19(distPath))
5618
- return distPath;
5619
- return resolve2(selfDir, "../cli.ts");
5622
+ const packageRoot = resolve2(selfDir, "..", "..");
5623
+ const distShim = join18(packageRoot, "dist", "cli.js");
5624
+ if (existsSync19(distShim))
5625
+ return distShim;
5626
+ return join18(packageRoot, "src", "cli.ts");
5627
+ }
5628
+ function resolveCliPath() {
5629
+ return resolveCliPathFrom(new URL(import.meta.url).pathname);
5620
5630
  }
5621
5631
  function buildHooksConfig(cliPath) {
5622
5632
  const isTsSource = cliPath.endsWith(".ts");
@@ -89730,7 +89740,7 @@ var init_agent = __esm(() => {
89730
89740
  });
89731
89741
 
89732
89742
  // src/core/sync-merge-drivers.ts
89733
- import { readFileSync as readFileSync31, writeFileSync as writeFileSync12, appendFileSync as appendFileSync2, copyFileSync as copyFileSync2, unlinkSync as unlinkSync7 } from "fs";
89743
+ import { readFileSync as readFileSync31, writeFileSync as writeFileSync12, appendFileSync as appendFileSync2, copyFileSync as copyFileSync2, renameSync as renameSync4, unlinkSync as unlinkSync7 } from "fs";
89734
89744
  import { join as join34 } from "path";
89735
89745
  function logWarning(driver, args, err) {
89736
89746
  try {
@@ -89985,10 +89995,7 @@ function mergeDbDriver(args) {
89985
89995
  unlinkSync7(`${tmp}${suffix}`);
89986
89996
  } catch {}
89987
89997
  }
89988
- copyFileSync2(tmp, args.oursPath);
89989
- try {
89990
- unlinkSync7(tmp);
89991
- } catch {}
89998
+ renameSync4(tmp, args.oursPath);
89992
89999
  } catch (err) {
89993
90000
  logWarning("mink-db-merge", args, err);
89994
90001
  try {
package/dist/cli.node.js CHANGED
@@ -2019,6 +2019,13 @@ wiki/projects/*/conventions.md
2019
2019
  wiki/projects/*/architecture.md
2020
2020
  `, GITATTRIBUTES_CONTENTS = `# Sync v2 — merge drivers eliminate conflicts on shared files.
2021
2021
  # Drivers are registered in .git/config by ensureMergeDriversRegistered().
2022
+ #
2023
+ # NOTE (sync size tradeoff): marking mink.db 'binary' means git stores a full
2024
+ # new blob of the database on every sync rather than a line-level delta the way
2025
+ # it did for the old file-index.json/token-ledger.json. For large projects
2026
+ # (20k+ files) this grows the ~/.mink sync repo and lengthens clones over time.
2027
+ # This is an accepted cost of moving the hot-path stores into SQLite for hook
2028
+ # latency. If the repo gets heavy, run a periodic 'git gc'/repack on ~/.mink.
2022
2029
  projects/*/mink.db merge=mink-db-merge
2023
2030
  projects/*/mink.db binary
2024
2031
  projects/*/file-index.json merge=mink-json-union
@@ -5759,6 +5766,7 @@ var init_seed = __esm(() => {
5759
5766
  var exports_init = {};
5760
5767
  __export(exports_init, {
5761
5768
  writeMinkRule: () => writeMinkRule,
5769
+ resolveCliPathFrom: () => resolveCliPathFrom,
5762
5770
  resolveCliPath: () => resolveCliPath,
5763
5771
  mergeHooksIntoSettings: () => mergeHooksIntoSettings,
5764
5772
  init: () => init,
@@ -5776,17 +5784,19 @@ function detectRuntime() {
5776
5784
  return "node";
5777
5785
  }
5778
5786
  }
5779
- function resolveCliPath() {
5780
- const selfPath = new URL(import.meta.url).pathname;
5787
+ function resolveCliPathFrom(selfPath) {
5781
5788
  const selfDir = dirname7(selfPath);
5782
- if (selfPath.endsWith("dist/cli.js")) {
5783
- return selfPath;
5789
+ if (selfPath.endsWith("dist/cli.js") || selfPath.endsWith("dist/cli.bun.js") || selfPath.endsWith("dist/cli.node.js")) {
5790
+ return join19(selfDir, "cli.js");
5784
5791
  }
5785
- const projectRoot = resolve2(selfDir, "../..");
5786
- const distPath = join19(projectRoot, "dist", "cli.js");
5787
- if (existsSync20(distPath))
5788
- return distPath;
5789
- return resolve2(selfDir, "../cli.ts");
5792
+ const packageRoot = resolve2(selfDir, "..", "..");
5793
+ const distShim = join19(packageRoot, "dist", "cli.js");
5794
+ if (existsSync20(distShim))
5795
+ return distShim;
5796
+ return join19(packageRoot, "src", "cli.ts");
5797
+ }
5798
+ function resolveCliPath() {
5799
+ return resolveCliPathFrom(new URL(import.meta.url).pathname);
5790
5800
  }
5791
5801
  function buildHooksConfig(cliPath) {
5792
5802
  const isTsSource = cliPath.endsWith(".ts");
@@ -10615,17 +10625,19 @@ var init_dashboard = __esm(() => {
10615
10625
  // src/commands/init.ts
10616
10626
  import { mkdirSync as mkdirSync14, existsSync as existsSync32 } from "fs";
10617
10627
  import { resolve as resolve6, dirname as dirname13, basename as basename8, join as join28 } from "path";
10618
- function resolveCliPath2() {
10619
- const selfPath = new URL(import.meta.url).pathname;
10628
+ function resolveCliPathFrom2(selfPath) {
10620
10629
  const selfDir = dirname13(selfPath);
10621
- if (selfPath.endsWith("dist/cli.js")) {
10622
- return selfPath;
10630
+ if (selfPath.endsWith("dist/cli.js") || selfPath.endsWith("dist/cli.bun.js") || selfPath.endsWith("dist/cli.node.js")) {
10631
+ return join28(selfDir, "cli.js");
10623
10632
  }
10624
- const projectRoot = resolve6(selfDir, "../..");
10625
- const distPath = join28(projectRoot, "dist", "cli.js");
10626
- if (existsSync32(distPath))
10627
- return distPath;
10628
- return resolve6(selfDir, "../cli.ts");
10633
+ const packageRoot = resolve6(selfDir, "..", "..");
10634
+ const distShim = join28(packageRoot, "dist", "cli.js");
10635
+ if (existsSync32(distShim))
10636
+ return distShim;
10637
+ return join28(packageRoot, "src", "cli.ts");
10638
+ }
10639
+ function resolveCliPath2() {
10640
+ return resolveCliPathFrom2(new URL(import.meta.url).pathname);
10629
10641
  }
10630
10642
  function buildHooksConfig2(cliPath) {
10631
10643
  const isTsSource = cliPath.endsWith(".ts");
@@ -93060,7 +93072,7 @@ var init_agent = __esm(() => {
93060
93072
  });
93061
93073
 
93062
93074
  // src/core/sync-merge-drivers.ts
93063
- import { readFileSync as readFileSync32, writeFileSync as writeFileSync12, appendFileSync as appendFileSync2, copyFileSync as copyFileSync2, unlinkSync as unlinkSync7 } from "fs";
93075
+ import { readFileSync as readFileSync32, writeFileSync as writeFileSync12, appendFileSync as appendFileSync2, copyFileSync as copyFileSync2, renameSync as renameSync4, unlinkSync as unlinkSync7 } from "fs";
93064
93076
  import { join as join37 } from "path";
93065
93077
  function logWarning(driver, args, err) {
93066
93078
  try {
@@ -93315,10 +93327,7 @@ function mergeDbDriver(args) {
93315
93327
  unlinkSync7(`${tmp}${suffix}`);
93316
93328
  } catch {}
93317
93329
  }
93318
- copyFileSync2(tmp, args.oursPath);
93319
- try {
93320
- unlinkSync7(tmp);
93321
- } catch {}
93330
+ renameSync4(tmp, args.oursPath);
93322
93331
  } catch (err) {
93323
93332
  logWarning("mink-db-merge", args, err);
93324
93333
  try {
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@drewpayment/mink",
3
- "version": "0.12.0-beta.6",
3
+ "version": "0.12.0-beta.8",
4
4
  "description": "A hidden presence that moves alongside the developer — token efficiency and cross-project wiki for AI coding assistants",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "mink": "./dist/cli.js"
8
8
  },
9
9
  "engines": {
10
- "node": ">=22.5.0"
10
+ "node": ">=24.0.0"
11
11
  },
12
12
  "scripts": {
13
13
  "build": "node scripts/build.mjs",
@@ -34,25 +34,41 @@ export function detectRuntime(): "bun" | "node" {
34
34
  }
35
35
  }
36
36
 
37
- export function resolveCliPath(): string {
38
- // When running from the compiled bundle, import.meta.url points to dist/cli.js
39
- // When running from source, it points to src/commands/init.ts
40
- const selfPath = new URL(import.meta.url).pathname;
37
+ // Exported for unit testing — accepts the caller's effective import.meta.url
38
+ // path so test cases can simulate every runtime form without juggling
39
+ // real filesystem layouts.
40
+ export function resolveCliPathFrom(selfPath: string): string {
41
+ // After `bun build`, import.meta.url for any bundled module points to
42
+ // whichever bundle was loaded:
43
+ // - dist/cli.js (legacy single-file build)
44
+ // - dist/cli.bun.js (current Bun bundle)
45
+ // - dist/cli.node.js (current Node bundle)
46
+ // In source-dev mode it points to src/commands/init.ts. Mapping any of the
47
+ // bundled forms to dist/cli.js (the bin shim) keeps buildHooksConfig on the
48
+ // portable `mink <subcmd>` path; only the source-dev fallback emits a
49
+ // `bun run <abs>/cli.ts` command.
41
50
  const selfDir = dirname(selfPath);
42
51
 
43
- // If we're running from dist/cli.js, use that directly
44
- if (selfPath.endsWith("dist/cli.js")) {
45
- return selfPath;
52
+ // Running from any of the dist bundles → use the bin shim path. That file
53
+ // ships as the npm `bin` entry, so it always sits next to the bundles.
54
+ if (
55
+ selfPath.endsWith("dist/cli.js") ||
56
+ selfPath.endsWith("dist/cli.bun.js") ||
57
+ selfPath.endsWith("dist/cli.node.js")
58
+ ) {
59
+ return join(selfDir, "cli.js");
46
60
  }
47
61
 
48
- // Check for compiled dist/cli.js relative to project root
49
- // From src/commands/ go up two levels to project root
50
- const projectRoot = resolve(selfDir, "../..");
51
- const distPath = join(projectRoot, "dist", "cli.js");
52
- if (existsSync(distPath)) return distPath;
62
+ // Source-dev: init.ts lives at src/commands/init.ts. Walk up to the package
63
+ // root and prefer dist/cli.js if a build is present, otherwise the source.
64
+ const packageRoot = resolve(selfDir, "..", "..");
65
+ const distShim = join(packageRoot, "dist", "cli.js");
66
+ if (existsSync(distShim)) return distShim;
67
+ return join(packageRoot, "src", "cli.ts");
68
+ }
53
69
 
54
- // Fall back to src/cli.ts (requires bun)
55
- return resolve(selfDir, "../cli.ts");
70
+ export function resolveCliPath(): string {
71
+ return resolveCliPathFrom(new URL(import.meta.url).pathname);
56
72
  }
57
73
 
58
74
  export function buildHooksConfig(cliPath: string): HooksConfig {
@@ -1,4 +1,4 @@
1
- import { readFileSync, writeFileSync, appendFileSync, copyFileSync, unlinkSync } from "fs";
1
+ import { readFileSync, writeFileSync, appendFileSync, copyFileSync, renameSync, unlinkSync } from "fs";
2
2
  import { join } from "path";
3
3
  import { minkRoot } from "./paths";
4
4
  import { parseLearningMemory, serializeLearningMemory } from "./learning-memory";
@@ -365,9 +365,13 @@ export function mergeDbDriver(args: DriverArgs): void {
365
365
  try { unlinkSync(`${tmp}${suffix}`); } catch { /* not present */ }
366
366
  }
367
367
 
368
- // Atomic replace.
369
- copyFileSync(tmp, args.oursPath);
370
- try { unlinkSync(tmp); } catch { /* best effort */ }
368
+ // Atomic replace: rename within the same directory is atomic on POSIX, so
369
+ // a crash can never leave args.oursPath half-written. A plain copy is not
370
+ // atomic a crash mid-copy could truncate ours.db. `tmp` is created
371
+ // alongside oursPath, so the rename stays on one filesystem and won't
372
+ // EXDEV. (The WAL/SHM sidecars were already cleaned above, so the renamed
373
+ // file is self-contained.)
374
+ renameSync(tmp, args.oursPath);
371
375
  } catch (err) {
372
376
  logWarning("mink-db-merge", args, err);
373
377
  try { if (ours) ours.close(); } catch { /* ignore */ }
package/src/core/sync.ts CHANGED
@@ -80,6 +80,13 @@ wiki/projects/*/architecture.md
80
80
 
81
81
  const GITATTRIBUTES_CONTENTS = `# Sync v2 — merge drivers eliminate conflicts on shared files.
82
82
  # Drivers are registered in .git/config by ensureMergeDriversRegistered().
83
+ #
84
+ # NOTE (sync size tradeoff): marking mink.db 'binary' means git stores a full
85
+ # new blob of the database on every sync rather than a line-level delta the way
86
+ # it did for the old file-index.json/token-ledger.json. For large projects
87
+ # (20k+ files) this grows the ~/.mink sync repo and lengthens clones over time.
88
+ # This is an accepted cost of moving the hot-path stores into SQLite for hook
89
+ # latency. If the repo gets heavy, run a periodic 'git gc'/repack on ~/.mink.
83
90
  projects/*/mink.db merge=mink-db-merge
84
91
  projects/*/mink.db binary
85
92
  projects/*/file-index.json merge=mink-json-union
@@ -1,6 +1,14 @@
1
1
  // node:sqlite implementation of the DbDriver interface.
2
2
  // Selected at build time when MINK_RUNTIME === "node" and via runtime
3
3
  // detection when running unbundled under Node.
4
+ //
5
+ // Node engine floor (package.json `engines.node`) is pinned to >=24.0.0:
6
+ // node:sqlite first appeared (flagged/experimental) in 22.5 and its API
7
+ // shifted across 22.x/23.x. Node 24 is the only line we smoke-test the node
8
+ // bundle against in CI, so it's the floor we actually validate this driver on.
9
+ // This pin does NOT affect Bun users — Bun runs through driver.bun.ts
10
+ // (bun:sqlite), which is always available and is the preferred, faster path;
11
+ // `engines.node` is an npm/Node-side constraint only.
4
12
 
5
13
  import type { DbDriver, DriverModule, SqlParam, Statement } from "./driver";
6
14