monomind 2.5.2 → 2.5.4

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 (122) hide show
  1. package/README.md +1 -1
  2. package/package.json +1 -1
  3. package/packages/@monomind/cli/.claude/agents/github/repo-architect.md +3 -3
  4. package/packages/@monomind/cli/.claude/agents/github/sync-coordinator.md +2 -2
  5. package/packages/@monomind/cli/.claude/agents/specialists/integration-architect.md +4 -4
  6. package/packages/@monomind/cli/.claude/commands/github/repo-architect.md +4 -4
  7. package/packages/@monomind/cli/.claude/commands/github/sync-coordinator.md +2 -2
  8. package/packages/@monomind/cli/.claude/helpers/event-logger.cjs +2 -2
  9. package/packages/@monomind/cli/.claude/helpers/extras-registry.json +1 -1
  10. package/packages/@monomind/cli/.claude/helpers/handlers/agent-start-handler.cjs +2 -2
  11. package/packages/@monomind/cli/.claude/helpers/handlers/edit-handler.cjs +2 -2
  12. package/packages/@monomind/cli/.claude/helpers/handlers/gates-handler.cjs +6 -1
  13. package/packages/@monomind/cli/.claude/helpers/handlers/route-handler.cjs +1 -1
  14. package/packages/@monomind/cli/.claude/helpers/handlers/session-handler.cjs +1 -1
  15. package/packages/@monomind/cli/.claude/helpers/handlers/session-restore-handler.cjs +11 -11
  16. package/packages/@monomind/cli/.claude/helpers/handlers/task-handler.cjs +2 -2
  17. package/packages/@monomind/cli/.claude/helpers/hook-handler.cjs +8 -8
  18. package/packages/@monomind/cli/.claude/skills/mastermind-techport/SKILL.md +1 -1
  19. package/packages/@monomind/cli/.claude/skills/monodesign/SKILL.md +2 -2
  20. package/packages/@monomind/cli/.claude/skills/monodesign/reference/antipatterns-catalog.md +47 -2
  21. package/packages/@monomind/cli/.claude/skills/monodesign/reference/critique.md +1 -1
  22. package/packages/@monomind/cli/.claude/skills/monodesign/reference/live.md +0 -8
  23. package/packages/@monomind/cli/.claude/skills/monodesign/reference/polish.md +2 -2
  24. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/context-signals.mjs +39 -6
  25. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/context.mjs +0 -1
  26. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/critique-storage.mjs +175 -2
  27. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detect-csp.mjs +0 -1
  28. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detect.mjs +0 -1
  29. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/browser/injected/index.mjs +25 -1
  30. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/cli/main.mjs +0 -1
  31. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/design-system.mjs +0 -1
  32. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/detect-antipatterns-browser.js +356 -1
  33. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/detect-antipatterns.mjs +0 -1
  34. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/engines/browser/detect-url.mjs +0 -1
  35. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/engines/browser/drivers.mjs +0 -1
  36. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/engines/regex/detect-text.mjs +63 -1
  37. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/engines/static-html/css-cascade.mjs +0 -1
  38. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/engines/static-html/detect-html.mjs +19 -1
  39. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/engines/visual/screenshot-contrast.mjs +0 -1
  40. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/findings.mjs +0 -1
  41. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/fix/css-regions.mjs +181 -0
  42. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/fix/fixers.mjs +373 -0
  43. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/fix/index.mjs +426 -0
  44. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/node/file-system.mjs +0 -1
  45. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/profile/profiler.mjs +0 -1
  46. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/registry/antipatterns.mjs +49 -1
  47. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/rules/checks.mjs +292 -1
  48. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/shared/color.mjs +0 -1
  49. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/shared/constants.mjs +0 -1
  50. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/shared/fonts.mjs +0 -1
  51. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/shared/inline-ignores.mjs +0 -1
  52. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/shared/page.mjs +0 -1
  53. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/hook-admin.mjs +0 -1
  54. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/hook-before-edit.mjs +0 -1
  55. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/hook-lib.mjs +0 -1
  56. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/hook.mjs +0 -1
  57. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/lib/design-parser.mjs +0 -1
  58. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/lib/is-generated.mjs +0 -1
  59. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/lib/monodesign-config.mjs +0 -1
  60. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/lib/monodesign-paths.mjs +0 -1
  61. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/lib/provider.mjs +0 -1
  62. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/lib/target-args.mjs +0 -1
  63. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/browser-script-parts.mjs +0 -1
  64. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/completion.mjs +0 -1
  65. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/event-validation.mjs +0 -1
  66. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/insert-ui.mjs +0 -1
  67. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/manual-apply.mjs +0 -1
  68. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/manual-edit-routes.mjs +0 -1
  69. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/manual-edits-buffer.mjs +0 -1
  70. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/session-store.mjs +5 -2
  71. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/svelte-component.mjs +0 -1
  72. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/sveltekit-adapter.mjs +0 -1
  73. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/ui-core.mjs +0 -1
  74. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/vocabulary.mjs +0 -1
  75. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-accept.mjs +0 -1
  76. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-browser-dom.js +0 -1
  77. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-browser-session.js +0 -1
  78. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-browser.js +0 -1
  79. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-commit-manual-edits.mjs +0 -1
  80. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-complete.mjs +0 -1
  81. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-copy-edit-agent.mjs +0 -1
  82. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-discard-manual-edits.mjs +0 -1
  83. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-inject.mjs +0 -1
  84. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-insert.mjs +0 -1
  85. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-manual-edit-evidence.mjs +0 -1
  86. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-poll.mjs +0 -1
  87. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-resume.mjs +0 -1
  88. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-server.mjs +0 -1
  89. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-status.mjs +0 -1
  90. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-target.mjs +0 -1
  91. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-wrap.mjs +0 -1
  92. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live.mjs +0 -1
  93. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/modern-screenshot.umd.js +0 -1
  94. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/palette.mjs +0 -1
  95. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/pin.mjs +0 -1
  96. package/packages/@monomind/cli/README.md +1 -1
  97. package/packages/@monomind/cli/dist/src/commands/design-detect.js +62 -1
  98. package/packages/@monomind/cli/dist/src/commands/design-palette.d.ts +0 -1
  99. package/packages/@monomind/cli/dist/src/commands/design-palette.js +0 -1
  100. package/packages/@monomind/cli/dist/src/commands/doctor-project-checks.d.ts +1 -1
  101. package/packages/@monomind/cli/dist/src/commands/doctor-project-checks.js +1 -1
  102. package/packages/@monomind/cli/dist/src/commands/hooks-workers.d.ts +1 -1
  103. package/packages/@monomind/cli/dist/src/commands/hooks-workers.js +8 -8
  104. package/packages/@monomind/cli/dist/src/commands/init.js +2 -2
  105. package/packages/@monomind/cli/dist/src/index.d.ts +1 -1
  106. package/packages/@monomind/cli/dist/src/index.js +3 -3
  107. package/packages/@monomind/cli/dist/src/init/claudemd-generator.js +5 -5
  108. package/packages/@monomind/cli/dist/src/init/executor.js +3 -3
  109. package/packages/@monomind/cli/dist/src/knowledge/document-pipeline.js +3 -1
  110. package/packages/@monomind/cli/dist/src/mcp-server.js +2 -2
  111. package/packages/@monomind/cli/dist/src/mcp-tools/hooks-intelligence.d.ts +1 -1
  112. package/packages/@monomind/cli/dist/src/mcp-tools/hooks-intelligence.js +1 -1
  113. package/packages/@monomind/cli/dist/src/mcp-tools/hooks-routing.js +2 -2
  114. package/packages/@monomind/cli/dist/src/mcp-tools/hooks-tools.js +1 -1
  115. package/packages/@monomind/cli/dist/src/memory/memory-kg.d.ts +5 -4
  116. package/packages/@monomind/cli/dist/src/memory/memory-kg.js +5 -4
  117. package/packages/@monomind/cli/dist/src/routing/embed-worker.js +1 -1
  118. package/packages/@monomind/cli/dist/src/routing/llm-caller.js +1 -1
  119. package/packages/@monomind/cli/dist/src/routing/route-layer-factory.js +1 -1
  120. package/packages/@monomind/cli/dist/src/ui/dashboard.html +22 -20
  121. package/packages/@monomind/cli/dist/src/update/checker.js +3 -3
  122. package/packages/@monomind/cli/package.json +5 -5
@@ -1,4 +1,3 @@
1
- // Pattern adapted from impeccable (Apache-2.0) — rebranded for monomind
2
1
  (function(y,v){typeof exports=="object"&&typeof module!="undefined"?v(exports):typeof define=="function"&&define.amd?define(["exports"],v):(y=typeof globalThis!="undefined"?globalThis:y||self,v(y.modernScreenshot={}))})(this,function(y){"use strict";var rr=Object.defineProperty,nr=Object.defineProperties;var or=Object.getOwnPropertyDescriptors;var Z=Object.getOwnPropertySymbols;var xe=Object.prototype.hasOwnProperty,Me=Object.prototype.propertyIsEnumerable;var Oe=Math.pow,Le=(y,v,N)=>v in y?rr(y,v,{enumerable:!0,configurable:!0,writable:!0,value:N}):y[v]=N,D=(y,v)=>{for(var N in v||(v={}))xe.call(v,N)&&Le(y,N,v[N]);if(Z)for(var N of Z(v))Me.call(v,N)&&Le(y,N,v[N]);return y},M=(y,v)=>nr(y,or(v));var je=(y,v)=>{var N={};for(var R in y)xe.call(y,R)&&v.indexOf(R)<0&&(N[R]=y[R]);if(y!=null&&Z)for(var R of Z(y))v.indexOf(R)<0&&Me.call(y,R)&&(N[R]=y[R]);return N};var C=(y,v,N)=>new Promise((R,O)=>{var X=P=>{try{q(N.next(P))}catch(W){O(W)}},j=P=>{try{q(N.throw(P))}catch(W){O(W)}},q=P=>P.done?R(P.value):Promise.resolve(P.value).then(X,j);q((N=N.apply(y,v)).next())});var Be;function v(e,t){return e[13]=1,e[14]=t>>8,e[15]=t&255,e[16]=t>>8,e[17]=t&255,e}const N=112,R=72,O=89,X=115;let j;function q(){const e=new Int32Array(256);for(let t=0;t<256;t++){let r=t;for(let n=0;n<8;n++)r=r&1?3988292384^r>>>1:r>>>1;e[t]=r}return e}function P(e){let t=-1;j||(j=q());for(let r=0;r<e.length;r++)t=j[(t^e[r])&255]^t>>>8;return t^-1}function W(e){const t=e.length-1;for(let r=t;r>=4;r--)if(e[r-4]===9&&e[r-3]===N&&e[r-2]===R&&e[r-1]===O&&e[r]===X)return r-3;return 0}function ae(e,t,r=!1){const n=new Uint8Array(13);t*=39.3701,n[0]=N,n[1]=R,n[2]=O,n[3]=X,n[4]=t>>>24,n[5]=t>>>16,n[6]=t>>>8,n[7]=t&255,n[8]=n[4],n[9]=n[5],n[10]=n[6],n[11]=n[7],n[12]=1;const i=P(n),a=new Uint8Array(4);if(a[0]=i>>>24,a[1]=i>>>16,a[2]=i>>>8,a[3]=i&255,r){const s=W(e);return e.set(n,s),e.set(a,s+13),e}else{const s=new Uint8Array(4);s[0]=0,s[1]=0,s[2]=0,s[3]=9;const o=new Uint8Array(54);return o.set(e,0),o.set(s,33),o.set(n,37),o.set(a,50),o}}const qe="AAlwSFlz",We="AAAJcEhZ",He="AAAACXBI";function Ve(e){let t=e.indexOf(qe);return t===-1&&(t=e.indexOf(We)),t===-1&&(t=e.indexOf(He)),t}const se="[modern-screenshot]",U=typeof window!="undefined",ze=U&&"Worker"in window,ie=U&&"atob"in window,Xe=U&&"btoa"in window,ee=U?(Be=window.navigator)==null?void 0:Be.userAgent:"",le=ee.includes("Chrome"),G=ee.includes("AppleWebKit")&&!le,te=ee.includes("Firefox"),Ge=e=>e&&"__CONTEXT__"in e,Ye=e=>e.constructor.name==="CSSFontFaceRule",Je=e=>e.constructor.name==="CSSImportRule",Ke=e=>e.constructor.name==="CSSLayerBlockRule",I=e=>e.nodeType===1,H=e=>typeof e.className=="object",ce=e=>e.tagName==="image",Qe=e=>e.tagName==="use",V=e=>I(e)&&typeof e.style!="undefined"&&!H(e),Ze=e=>e.nodeType===8,et=e=>e.nodeType===3,$=e=>e.tagName==="IMG",Y=e=>e.tagName==="VIDEO",tt=e=>e.tagName==="CANVAS",rt=e=>e.tagName==="TEXTAREA",nt=e=>e.tagName==="INPUT",ot=e=>e.tagName==="STYLE",at=e=>e.tagName==="SCRIPT",st=e=>e.tagName==="SELECT",it=e=>e.tagName==="SLOT",lt=e=>e.tagName==="IFRAME",ct=(...e)=>console.warn(se,...e);function ut(e){var r;const t=(r=e==null?void 0:e.createElement)==null?void 0:r.call(e,"canvas");return t&&(t.height=t.width=1),!!t&&"toDataURL"in t&&!!t.toDataURL("image/webp").includes("image/webp")}const re=e=>e.startsWith("data:");function ue(e,t){if(e.match(/^[a-z]+:\/\//i))return e;if(U&&e.match(/^\/\//))return window.location.protocol+e;if(e.match(/^[a-z]+:/i)||!U)return e;const r=J().implementation.createHTMLDocument(),n=r.createElement("base"),i=r.createElement("a");return r.head.appendChild(n),r.body.appendChild(i),t&&(n.href=t),i.href=e,i.href}function J(e){var t;return(t=e&&I(e)?e==null?void 0:e.ownerDocument:e)!=null?t:window.document}const K="http://www.w3.org/2000/svg";function fe(e,t,r){const n=J(r).createElementNS(K,"svg");return n.setAttributeNS(null,"width",e.toString()),n.setAttributeNS(null,"height",t.toString()),n.setAttributeNS(null,"viewBox",`0 0 ${e} ${t}`),n}function de(e,t){let r=new XMLSerializer().serializeToString(e);return t&&(r=r.replace(/[\u0000-\u0008\v\f\u000E-\u001F\uD800-\uDFFF\uFFFE\uFFFF]/gu,"")),`data:image/svg+xml;charset=utf-8,${encodeURIComponent(r)}`}function ft(e,t="image/png",r=1){return C(this,null,function*(){try{return yield new Promise((n,i)=>{e.toBlob(a=>{a?n(a):i(new Error("Blob is null"))},t,r)})}catch(n){if(ie)return dt(e.toDataURL(t,r));throw n}})}function dt(e){var o,c;const[t,r]=e.split(","),n=(c=(o=t.match(/data:(.+);/))==null?void 0:o[1])!=null?c:void 0,i=window.atob(r),a=i.length,s=new Uint8Array(a);for(let u=0;u<a;u+=1)s[u]=i.charCodeAt(u);return new Blob([s],{type:n})}function ge(e,t){return new Promise((r,n)=>{const i=new FileReader;i.onload=()=>r(i.result),i.onerror=()=>n(i.error),i.onabort=()=>n(new Error(`Failed read blob to ${t}`)),t==="dataUrl"?i.readAsDataURL(e):t==="arrayBuffer"&&i.readAsArrayBuffer(e)})}const gt=e=>ge(e,"dataUrl"),mt=e=>ge(e,"arrayBuffer");function _(e,t){const r=J(t).createElement("img");return r.decoding="sync",r.loading="eager",r.src=e,r}function L(e,t){return new Promise(r=>{const{timeout:n,ownerDocument:i,onError:a,onWarn:s}=t!=null?t:{},o=typeof e=="string"?_(e,J(i)):e;let c=null,u=null;function l(){r(o),c&&clearTimeout(c),u==null||u()}if(n&&(c=setTimeout(l,n)),Y(o)){const d=o.currentSrc||o.src;if(!d)return o.poster?L(o.poster,t).then(r):l();if(o.readyState>=2)return l();const m=l,f=h=>{s==null||s("Failed video load",d,h),a==null||a(h),l()};u=()=>{o.removeEventListener("loadeddata",m),o.removeEventListener("error",f)},o.addEventListener("loadeddata",m,{once:!0}),o.addEventListener("error",f,{once:!0})}else{const d=ce(o)?o.href.baseVal:o.currentSrc||o.src;if(!d)return l();const m=()=>C(this,null,function*(){if($(o)&&"decode"in o)try{yield o.decode()}catch(h){s==null||s("Failed to decode image, trying to render anyway",o.dataset.originalSrc||d,h)}l()}),f=h=>{s==null||s("Failed image load",o.dataset.originalSrc||d,h),l()};if($(o)&&o.complete)return m();u=()=>{o.removeEventListener("load",m),o.removeEventListener("error",f)},o.addEventListener("load",m,{once:!0}),o.addEventListener("error",f,{once:!0})}})}function me(e,t){return C(this,null,function*(){V(e)&&($(e)||Y(e)?yield L(e,t):yield Promise.all(["img","video"].flatMap(r=>Array.from(e.querySelectorAll(r)).map(n=>L(n,t)))))})}const he=function(){let t=0;const r=()=>`0000${(Math.random()*Oe(36,4)<<0).toString(36)}`.slice(-4);return()=>(t+=1,`u${r()}${t}`)}();function we(e){return e==null?void 0:e.split(",").map(t=>t.trim().replace(/"|'/g,"").toLowerCase()).filter(Boolean)}let pe=0;function ht(e){const t=`${se}[#${pe}]`;return pe++,{time:r=>e&&console.time(`${t} ${r}`),timeEnd:r=>e&&console.timeEnd(`${t} ${r}`),warn:(...r)=>e&&ct(...r)}}function wt(e){return{cache:e?"no-cache":"force-cache"}}function k(e,t){return C(this,null,function*(){return Ge(e)?e:ye(e,M(D({},t),{autoDestruct:!0}))})}function ye(e,t){return C(this,null,function*(){var f,h,g,p,E;const{scale:r=1,workerUrl:n,workerNumber:i=1}=t||{},a=!!(t!=null&&t.debug),s=(f=t==null?void 0:t.features)!=null?f:!0,o=(h=e.ownerDocument)!=null?h:U?window.document:void 0,c=(p=(g=e.ownerDocument)==null?void 0:g.defaultView)!=null?p:U?window:void 0,u=new Map,l=M(D({width:0,height:0,quality:1,type:"image/png",scale:r,backgroundColor:null,style:null,filter:null,maximumCanvasSize:0,timeout:3e4,progress:null,debug:a,fetch:D({requestInit:wt((E=t==null?void 0:t.fetch)==null?void 0:E.bypassingCache),placeholderImage:"data:image/png;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",bypassingCache:!1},t==null?void 0:t.fetch),fetchFn:null,font:{},drawImageInterval:100,workerUrl:null,workerNumber:i,onCloneEachNode:null,onCloneNode:null,onEmbedNode:null,onCreateForeignObjectSvg:null,includeStyleProperties:null,autoDestruct:!1},t),{__CONTEXT__:!0,log:ht(a),node:e,ownerDocument:o,ownerWindow:c,dpi:r===1?null:96*r,svgStyleElement:be(o),svgDefsElement:o==null?void 0:o.createElementNS(K,"defs"),svgStyles:new Map,defaultComputedStyles:new Map,workers:[...Array.from({length:ze&&n&&i?i:0})].map(()=>{try{const b=new Worker(n);return b.onmessage=w=>C(this,null,function*(){var A,F,B,$e;const{url:S,result:T}=w.data;T?(F=(A=u.get(S))==null?void 0:A.resolve)==null||F.call(A,T):($e=(B=u.get(S))==null?void 0:B.reject)==null||$e.call(B,new Error(`Error receiving message from worker: ${S}`))}),b.onmessageerror=w=>{var T,A;const{url:S}=w.data;(A=(T=u.get(S))==null?void 0:T.reject)==null||A.call(T,new Error(`Error receiving message from worker: ${S}`))},b}catch(b){return l.log.warn("Failed to new Worker",b),null}}).filter(Boolean),fontFamilies:new Map,fontCssTexts:new Map,acceptOfImage:`${[ut(o)&&"image/webp","image/svg+xml","image/*","*/*"].filter(Boolean).join(",")};q=0.8`,requests:u,drawImageCount:0,tasks:[],features:s,isEnable:b=>{var w,S;return b==="restoreScrollPosition"?typeof s=="boolean"?!1:(w=s[b])!=null?w:!1:typeof s=="boolean"?s:(S=s[b])!=null?S:!0},shadowRoots:[]});l.log.time("wait until load"),yield me(e,{timeout:l.timeout,onWarn:l.log.warn}),l.log.timeEnd("wait until load");const{width:d,height:m}=pt(e,l);return l.width=d,l.height=m,l})}function be(e){if(!e)return;const t=e.createElement("style"),r=t.ownerDocument.createTextNode(`
3
2
  .______background-clip--text {
4
3
  background-clip: text;
@@ -1,5 +1,4 @@
1
1
  #!/usr/bin/env node
2
- // Pattern adapted from impeccable (Apache-2.0) — rebranded for monomind
3
2
  /**
4
3
  * Brand-seed picker. Returns one OKLCH seed color + the mood it most
5
4
  * naturally evokes, and teaches the model how to compose a full palette
@@ -1,5 +1,4 @@
1
1
  #!/usr/bin/env node
2
- // Pattern adapted from impeccable (Apache-2.0) — rebranded for monomind
3
2
  /**
4
3
  * Pin/unpin sub-commands as standalone skill shortcuts.
5
4
  *
@@ -365,7 +365,7 @@ Everything runs from inside Claude Code via slash commands. Here's the highlight
365
365
  graph TD
366
366
  CC["Claude Code"]
367
367
  MCP["MCP Server\nmonomind mcp start"]
368
- D["Background Workers\n(@monomind/hooks, in-process)"]
368
+ D["Background Workers\n(@monoes/hooks, in-process)"]
369
369
  ORG["OrgDaemon\nmonomind org run\nreal SDK sessions"]
370
370
 
371
371
  CC <-->|"MCP tools: monograph, memory"| MCP
@@ -105,6 +105,65 @@ const detectSubcommand = {
105
105
  return { success: exitCode === 0, exitCode };
106
106
  },
107
107
  };
108
+ // ─── fix subcommand ───────────────────────────────────────────────────────────
109
+ const fixSubcommand = {
110
+ name: 'fix',
111
+ description: 'Auto-fix design anti-patterns with a safe deterministic codemod, where one exists',
112
+ options: [
113
+ {
114
+ name: 'target',
115
+ short: 't',
116
+ type: 'string',
117
+ description: 'File or directory to fix',
118
+ default: '.',
119
+ },
120
+ {
121
+ name: 'dry-run',
122
+ type: 'boolean',
123
+ description: 'Print unified diffs of would-be changes; write nothing',
124
+ },
125
+ {
126
+ name: 'json',
127
+ type: 'boolean',
128
+ description: 'Output the fix report as JSON',
129
+ },
130
+ {
131
+ name: 'rule',
132
+ type: 'string',
133
+ description: 'Only fix the given rule ids (comma-separated)',
134
+ },
135
+ ],
136
+ examples: [
137
+ { command: 'monomind design fix', description: 'Auto-fix anti-patterns in the current directory' },
138
+ { command: 'monomind design fix -t ./src --dry-run', description: 'Preview fixes without writing' },
139
+ { command: 'monomind design fix --rule tight-leading,tiny-text', description: 'Fix only specific rules' },
140
+ ],
141
+ action: async (ctx) => {
142
+ const target = ctx.flags.target || ctx.args[0] || '.';
143
+ const dryRun = ctx.flags['dry-run'];
144
+ const jsonOutput = ctx.flags.json;
145
+ const rule = ctx.flags.rule;
146
+ output.writeln();
147
+ output.writeln(output.bold('Design Anti-Pattern Auto-Fix'));
148
+ output.writeln(output.dim('─'.repeat(50)));
149
+ const cliPath = resolveMonodesignCli();
150
+ if (!cliPath) {
151
+ printEngineMissing();
152
+ return { success: false, message: 'monodesign detection engine not found' };
153
+ }
154
+ output.writeln(output.dim(`Fixing: ${target}${dryRun ? ' (dry run)' : ''}`));
155
+ output.writeln();
156
+ const forwardArgs = ['fix', target];
157
+ if (dryRun)
158
+ forwardArgs.push('--dry-run');
159
+ if (jsonOutput)
160
+ forwardArgs.push('--json');
161
+ if (rule)
162
+ forwardArgs.push('--rule', rule);
163
+ const exitCode = await runMonodesign(cliPath, forwardArgs);
164
+ return { success: exitCode === 0, exitCode };
165
+ },
166
+ };
108
167
  // ─── ignores subcommand ───────────────────────────────────────────────────────
109
168
  const ignoresSubcommand = {
110
169
  name: 'ignores',
@@ -129,10 +188,11 @@ const ignoresSubcommand = {
129
188
  export const designCommand = {
130
189
  name: 'design',
131
190
  description: 'Design tooling: anti-pattern detection, OKLCH palette seeding, and design quality checks',
132
- subcommands: [detectSubcommand, ignoresSubcommand, paletteSubcommand],
191
+ subcommands: [detectSubcommand, fixSubcommand, ignoresSubcommand, paletteSubcommand],
133
192
  examples: [
134
193
  { command: 'monomind design detect', description: 'Detect design anti-patterns' },
135
194
  { command: 'monomind design detect -t ./src --json', description: 'JSON output for CI' },
195
+ { command: 'monomind design fix -t ./src --dry-run', description: 'Preview safe auto-fixes' },
136
196
  { command: 'monomind design ignores list', description: 'Manage detector ignore rules' },
137
197
  { command: 'monomind design palette', description: 'Pick an OKLCH brand seed color' },
138
198
  { command: 'monomind design palette --from "my-product"', description: 'Deterministic seed from product name' },
@@ -145,6 +205,7 @@ export const designCommand = {
145
205
  output.writeln('Subcommands:');
146
206
  output.printList([
147
207
  'detect - Detect design anti-patterns (bundled monodesign engine)',
208
+ 'fix - Auto-fix anti-patterns with a safe deterministic codemod, where one exists',
148
209
  'ignores - Manage detector ignore rules, files, and values',
149
210
  'palette - OKLCH brand seed — returns anchor color + mood + composition strategy',
150
211
  ]);
@@ -1,7 +1,6 @@
1
1
  /**
2
2
  * CLI Design Palette Command
3
3
  * OKLCH brand-seed picker — returns one anchor seed color + mood + composition strategy.
4
- * Pattern adapted from impeccable (Apache-2.0) — rebranded for monomind (129 hand-curated seeds).
5
4
  *
6
5
  * github.com/monoes/monomind
7
6
  */
@@ -1,7 +1,6 @@
1
1
  /**
2
2
  * CLI Design Palette Command
3
3
  * OKLCH brand-seed picker — returns one anchor seed color + mood + composition strategy.
4
- * Pattern adapted from impeccable (Apache-2.0) — rebranded for monomind (129 hand-curated seeds).
5
4
  *
6
5
  * github.com/monoes/monomind
7
6
  */
@@ -26,7 +26,7 @@ export declare function checkGitignoreCoverage(): Promise<HealthCheck>;
26
26
  export declare function checkAgentRegistry(): Promise<HealthCheck>;
27
27
  export declare function checkGuidanceGates(): Promise<HealthCheck>;
28
28
  /**
29
- * Worker metrics freshness — reports the age of the @monomind/hooks worker
29
+ * Worker metrics freshness — reports the age of the @monoes/hooks worker
30
30
  * output files (written at session start with a 6h staleness gate, or on
31
31
  * demand via `monomind hooks worker run <name>`), so missing/stale worker
32
32
  * output is visible without digging through .monomind/metrics.
@@ -586,7 +586,7 @@ function readMetricsJSON(name) {
586
586
  }
587
587
  }
588
588
  /**
589
- * Worker metrics freshness — reports the age of the @monomind/hooks worker
589
+ * Worker metrics freshness — reports the age of the @monoes/hooks worker
590
590
  * output files (written at session start with a 6h staleness gate, or on
591
591
  * demand via `monomind hooks worker run <name>`), so missing/stale worker
592
592
  * output is visible without digging through .monomind/metrics.
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Hooks Worker Commands
3
- * Background worker management (@monomind/hooks workers) + Intelligence command
3
+ * Background worker management (@monoes/hooks workers) + Intelligence command
4
4
  * Extracted from hooks.ts to reduce file size.
5
5
  */
6
6
  import type { Command } from '../types.js';
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Hooks Worker Commands
3
- * Background worker management (@monomind/hooks workers) + Intelligence command
3
+ * Background worker management (@monoes/hooks workers) + Intelligence command
4
4
  * Extracted from hooks.ts to reduce file size.
5
5
  */
6
6
  import { output } from '../output.js';
@@ -414,21 +414,21 @@ export const intelligenceCommand = {
414
414
  }
415
415
  };
416
416
  // =============================================================================
417
- // Worker Commands (@monomind/hooks WorkerManager)
417
+ // Worker Commands (@monoes/hooks WorkerManager)
418
418
  // =============================================================================
419
419
  // The old worker subcommands (dispatch/status/detect/cancel) dispatched to a
420
420
  // simulated in-memory tracker that fronted the deleted worker daemon. The
421
- // surviving commands run the real @monomind/hooks workers in-process.
421
+ // surviving commands run the real @monoes/hooks workers in-process.
422
422
  const workerListCommand = {
423
423
  name: 'list',
424
- description: 'List all @monomind/hooks background workers',
424
+ description: 'List all @monoes/hooks background workers',
425
425
  options: [],
426
426
  examples: [
427
427
  { command: 'monomind hooks worker list', description: 'List all workers' },
428
428
  ],
429
429
  action: async () => {
430
430
  try {
431
- const hooks = await import('@monomind/hooks');
431
+ const hooks = await import('@monoes/hooks');
432
432
  const workers = Object.values(hooks.WORKER_CONFIGS).map(w => ({
433
433
  name: w.name,
434
434
  description: w.description,
@@ -478,7 +478,7 @@ const workerRunCommand = {
478
478
  const spinner = output.createSpinner({ text: `Running ${name} worker...`, spinner: 'dots' });
479
479
  spinner.start();
480
480
  try {
481
- const hooks = await import('@monomind/hooks');
481
+ const hooks = await import('@monoes/hooks');
482
482
  if (!hooks.WORKER_CONFIGS[name]) {
483
483
  spinner.fail(`Unknown worker: ${name}`);
484
484
  output.writeln(`Available workers: ${Object.keys(hooks.WORKER_CONFIGS).join(', ')}`);
@@ -516,7 +516,7 @@ const workerRunCommand = {
516
516
  // Worker parent command
517
517
  export const workerCommand = {
518
518
  name: 'worker',
519
- description: 'Background worker management (@monomind/hooks workers, run in-process)',
519
+ description: 'Background worker management (@monoes/hooks workers, run in-process)',
520
520
  subcommands: [
521
521
  workerListCommand,
522
522
  workerRunCommand,
@@ -528,7 +528,7 @@ export const workerCommand = {
528
528
  ],
529
529
  action: async () => {
530
530
  output.writeln();
531
- output.writeln(output.bold('Background Worker System (@monomind/hooks)'));
531
+ output.writeln(output.bold('Background Worker System (@monoes/hooks)'));
532
532
  output.writeln();
533
533
  output.writeln('Workers run in-process and write their results to .monomind/metrics/.');
534
534
  output.writeln('The metrics-producing workers (ddd, map, audit, optimize, consolidate)');
@@ -215,7 +215,7 @@ const initAction = async (ctx) => {
215
215
  // Audit" as unconfigured, even though nothing is actually broken.
216
216
  try {
217
217
  output.writeln(output.dim(' Seeding worker metrics...'));
218
- const hooksMod = await import('@monomind/hooks').catch(() => null);
218
+ const hooksMod = await import('@monoes/hooks').catch(() => null);
219
219
  if (hooksMod && hooksMod.createWorkerManager) {
220
220
  const manager = hooksMod.createWorkerManager(ctx.cwd);
221
221
  await manager.ensureMetricsDir();
@@ -236,7 +236,7 @@ const initAction = async (ctx) => {
236
236
  }
237
237
  }
238
238
  else {
239
- output.writeln(output.dim(' Worker metrics seeding skipped (@monomind/hooks unavailable)'));
239
+ output.writeln(output.dim(' Worker metrics seeding skipped (@monoes/hooks unavailable)'));
240
240
  }
241
241
  }
242
242
  catch (e) {
@@ -49,7 +49,7 @@ export declare class CLI {
49
49
  private loadConfig;
50
50
  /**
51
51
  * Initialize optional subsystems at startup (non-blocking, all failures are silent).
52
- * Starts the @monomind/hooks WorkerManager, wires SwarmCheckpointer, and builds
52
+ * Starts the @monoes/hooks WorkerManager, wires SwarmCheckpointer, and builds
53
53
  * the unified agent registry so that packages/@monomind/* actually contribute
54
54
  * to the live runtime.
55
55
  */
@@ -458,12 +458,12 @@ export class CLI {
458
458
  }
459
459
  /**
460
460
  * Initialize optional subsystems at startup (non-blocking, all failures are silent).
461
- * Starts the @monomind/hooks WorkerManager, wires SwarmCheckpointer, and builds
461
+ * Starts the @monoes/hooks WorkerManager, wires SwarmCheckpointer, and builds
462
462
  * the unified agent registry so that packages/@monomind/* actually contribute
463
463
  * to the live runtime.
464
464
  */
465
465
  async initSubsystems() {
466
- // NOTE: the @monomind/hooks WorkerManager is intentionally NOT started
466
+ // NOTE: the @monoes/hooks WorkerManager is intentionally NOT started
467
467
  // here. Workers run from the session-restore hook (6h staleness gate) and
468
468
  // on demand via `monomind hooks worker run <name>`. Starting it on every
469
469
  // CLI invocation scheduled staggered 1-10s timers that usually died with
@@ -510,7 +510,7 @@ export class CLI {
510
510
  // could skip the warning even when the underlying issue was present. Doctor
511
511
  // runs it synchronously within its own check pass instead, so it's always
512
512
  // visible and itemized when you actually look for it.
513
- // NOTE: Semantic routing (@monomind/routing) is constructed on-demand by
513
+ // NOTE: Semantic routing (@monoes/routing) is constructed on-demand by
514
514
  // its consumers — `monomind route semantic` (commands/route.ts) and the
515
515
  // `hooks_route_semantic` MCP tool (mcp-tools/hooks-routing.ts), both via
516
516
  // routing/route-layer-factory.ts. `monomind agent` has no --task flag —
@@ -22,9 +22,9 @@ function detectOptionalPackages() {
22
22
  }
23
23
  };
24
24
  _availabilityCache = {
25
- hooks: resolvable('@monomind/hooks'),
26
- mcp: resolvable('@monomind/mcp'),
27
- routing: resolvable('@monomind/routing'),
25
+ hooks: resolvable('@monoes/hooks'),
26
+ mcp: resolvable('@monoes/mcp'),
27
+ routing: resolvable('@monoes/routing'),
28
28
  monofence: resolvable('monofence-ai'),
29
29
  };
30
30
  return _availabilityCache;
@@ -242,7 +242,7 @@ function hooksSystem() {
242
242
  | \`intelligence\` | Pattern-learning intelligence system |
243
243
  | \`worker\` | Background worker management |
244
244
 
245
- ### Background Workers (@monomind/hooks, run in-process)${unavailNote(avail.hooks)}
245
+ ### Background Workers (@monoes/hooks, run in-process)${unavailNote(avail.hooks)}
246
246
 
247
247
  | Worker | Priority | Description |
248
248
  |--------|----------|-------------|
@@ -255,7 +255,7 @@ function hooksSystem() {
255
255
  | \`performance\`, \`health\`, \`swarm\`, \`git\`, \`learning\`, \`adr\`, \`patterns\`, \`cache\`, \`progress\` | various | See \`hooks worker list\` for the full 15 |
256
256
 
257
257
  Metrics-producing workers refresh at session start when output is >6h old.
258
- ${avail.hooks ? '' : '\n> \\@monomind/hooks is not resolvable in this install — background workers will fail to load (see `hooks worker list`). This is an install/publish gap, not a project misconfiguration.\n'}
258
+ ${avail.hooks ? '' : '\n> \\@monoes/hooks is not resolvable in this install — background workers will fail to load (see `hooks worker list`). This is an install/publish gap, not a project misconfiguration.\n'}
259
259
  \`\`\`bash
260
260
  npx monomind@latest hooks pre-task --description "[task]"
261
261
  npx monomind@latest hooks post-task --task-id "[id]" --success true
@@ -1593,7 +1593,7 @@ async function writeCapabilitiesDoc(targetDir, options, result) {
1593
1593
  result.skipped.push('.monomind/CAPABILITIES.md');
1594
1594
  return;
1595
1595
  }
1596
- const hooksAvailable = _isOptionalPackageResolvable('@monomind/hooks');
1596
+ const hooksAvailable = _isOptionalPackageResolvable('@monoes/hooks');
1597
1597
  const capabilities = `# Monomind - Complete Capabilities Reference
1598
1598
  > Generated: ${new Date().toISOString()}
1599
1599
  > Full documentation: https://github.com/monoes/monomind
@@ -1754,7 +1754,7 @@ npx monomind@latest doctor --fix
1754
1754
 
1755
1755
  ## Hooks System
1756
1756
 
1757
- ### 29 Available Hook Subcommands${hooksAvailable ? '' : ' — background workers unavailable in this install (@monomind/hooks did not resolve)'}
1757
+ ### 29 Available Hook Subcommands${hooksAvailable ? '' : ' — background workers unavailable in this install (@monoes/hooks did not resolve)'}
1758
1758
 
1759
1759
  #### Core Hooks (6)
1760
1760
  | Hook | Description |
@@ -1790,7 +1790,7 @@ npx monomind@latest doctor --fix
1790
1790
  | \`coverage-suggest\` | Improvement suggestions |
1791
1791
  | \`coverage-gaps\` | Gap analysis |
1792
1792
 
1793
- ### 15 Background Workers (@monomind/hooks, run in-process)
1793
+ ### 15 Background Workers (@monoes/hooks, run in-process)
1794
1794
  | Worker | Priority | Purpose |
1795
1795
  |--------|----------|---------|
1796
1796
  | \`performance\` | normal | Benchmark performance |
@@ -312,7 +312,9 @@ export async function ingestDirectory(dirPath, scope = 'shared', opts) {
312
312
  return;
313
313
  }
314
314
  for (const entry of entries) {
315
- if (entry.name.startsWith('.') || entry.name.startsWith('._'))
315
+ // Skip dotfiles/dot-dirs (incl. exFAT `._*` junk) — except `.monodesign`,
316
+ // whose critique snapshots are markdown worth surfacing in the Second Brain.
317
+ if (entry.name.startsWith('.') && entry.name !== '.monodesign')
316
318
  continue;
317
319
  const full = path.join(dir, entry.name);
318
320
  if (entry.isDirectory()) {
@@ -677,8 +677,8 @@ export class MCPServerManager extends EventEmitter {
677
677
  }
678
678
  // Dynamically import the MCP server package
679
679
  // FIX for issue #942: Use proper package import instead of broken relative path
680
- // @ts-ignore — @monomind/mcp is an optional peer resolved at runtime
681
- const { createMCPServer } = await import('@monomind/mcp');
680
+ // @ts-ignore — @monoes/mcp is an optional peer resolved at runtime
681
+ const { createMCPServer } = await import('@monoes/mcp');
682
682
  const logger = {
683
683
  debug: (msg, data) => this.emit('log', { level: 'debug', msg, data }),
684
684
  info: (msg, data) => this.emit('log', { level: 'info', msg, data }),
@@ -4,7 +4,7 @@
4
4
  * intelligence stats/learn/attention, and model routing.
5
5
  * Extracted from hooks-tools.ts.
6
6
  * The simulated worker dispatch/status/detect/cancel tools were deleted with
7
- * the worker daemon -- real workers live in @monomind/hooks (`hooks worker run`).
7
+ * the worker daemon -- real workers live in @monoes/hooks (`hooks worker run`).
8
8
  */
9
9
  import { type MCPTool } from './types.js';
10
10
  export declare const hooksIntelligenceReset: MCPTool;
@@ -4,7 +4,7 @@
4
4
  * intelligence stats/learn/attention, and model routing.
5
5
  * Extracted from hooks-tools.ts.
6
6
  * The simulated worker dispatch/status/detect/cancel tools were deleted with
7
- * the worker daemon -- real workers live in @monomind/hooks (`hooks worker run`).
7
+ * the worker daemon -- real workers live in @monoes/hooks (`hooks worker run`).
8
8
  */
9
9
  import { existsSync, readdirSync, unlinkSync } from 'fs';
10
10
  import { join } from 'path';
@@ -410,7 +410,7 @@ export const hooksRoute = {
410
410
  };
411
411
  export const hooksRouteSemantic = {
412
412
  name: 'hooks_route_semantic',
413
- description: 'Route a task using the @monomind/routing package: keyword pre-filter, then real-embedding ' +
413
+ description: 'Route a task using the @monoes/routing package: keyword pre-filter, then real-embedding ' +
414
414
  'cosine-similarity matching (isolated worker), with a headless Claude (Haiku) fallback below ' +
415
415
  'the confidence threshold. Slower and more precise than hooks_route — use for ambiguous or ' +
416
416
  'highly specialized tasks (e.g. Solidity, game engines, embedded, DevOps) where keyword matching ' +
@@ -630,7 +630,7 @@ export const hooksPreTask = {
630
630
  }
631
631
  catch { /* non-critical */ }
632
632
  // NOTE: a LATS planning pass used to be attempted here via
633
- // `import('@monomind/hooks').buildLATSPlan` — that function never existed
633
+ // `import('@monoes/hooks').buildLATSPlan` — that function never existed
634
634
  // in the package (the planning module was removed), so the import failed
635
635
  // silently on every call. The dead block was removed.
636
636
  let plan;
@@ -39,7 +39,7 @@ export const hooksTools = [
39
39
  hooksModelRoute,
40
40
  hooksModelOutcome,
41
41
  hooksModelStats,
42
- // NOTE: the "advanced" tools formerly re-exported from @monomind/hooks/mcp
42
+ // NOTE: the "advanced" tools formerly re-exported from @monoes/hooks/mcp
43
43
  // (hooks/route-advanced, hooks/evo-agentx, hooks/rlvr-outcome, hooks/statusline,
44
44
  // trace + HIL checkpoint tools) and the hooks_synthesis-* tools were removed.
45
45
  // Their backing modules (AFLOW/LATS/GEPA/ReasoningBank) had already been
@@ -10,10 +10,11 @@
10
10
  * feedback/frequency weighting for free — KG node ranking improves with use
11
11
  * automatically.
12
12
  *
13
- * Identity is deterministic (cognee's DataPoint.id_for): the entry KEY is
14
- * `n:<type>:<normalized-name>`, so the same entity extracted from any session
15
- * merges idempotently via upsert. Every write carries `origin_refs` so a bad
16
- * ingest can be rolled back per run/session.
13
+ * Identity is deterministic and NAME-ONLY (cognee's Entity.identity_fields):
14
+ * the entry KEY is `n:<normalized-name>`, so the same entity extracted from
15
+ * any session merges idempotently via upsert regardless of assigned type.
16
+ * Every write carries `origin_refs` so a bad ingest can be rolled back per
17
+ * run/session.
17
18
  *
18
19
  * // monolean: graph traversal is in-process over a full kg:edges list —
19
20
  * // fine to ~10k edges; upgrade path is a real SQLite edges table with
@@ -10,10 +10,11 @@
10
10
  * feedback/frequency weighting for free — KG node ranking improves with use
11
11
  * automatically.
12
12
  *
13
- * Identity is deterministic (cognee's DataPoint.id_for): the entry KEY is
14
- * `n:<type>:<normalized-name>`, so the same entity extracted from any session
15
- * merges idempotently via upsert. Every write carries `origin_refs` so a bad
16
- * ingest can be rolled back per run/session.
13
+ * Identity is deterministic and NAME-ONLY (cognee's Entity.identity_fields):
14
+ * the entry KEY is `n:<normalized-name>`, so the same entity extracted from
15
+ * any session merges idempotently via upsert regardless of assigned type.
16
+ * Every write carries `origin_refs` so a bad ingest can be rolled back per
17
+ * run/session.
17
18
  *
18
19
  * // monolean: graph traversal is in-process over a full kg:edges list —
19
20
  * // fine to ~10k edges; upgrade path is a real SQLite edges table with
@@ -32,7 +32,7 @@ async function main() {
32
32
  }
33
33
  // Cap the task to prevent OOM when an oversized string is passed to the embedding model.
34
34
  const task = rawTask.length > MAX_TASK_LENGTH ? rawTask.slice(0, MAX_TASK_LENGTH) : rawTask;
35
- const { RouteLayer, ALL_ROUTES } = await import('@monomind/routing');
35
+ const { RouteLayer, ALL_ROUTES } = await import('@monoes/routing');
36
36
  const semantic = await createSemanticRouting(ALL_ROUTES);
37
37
  if (!semantic) {
38
38
  // Model unavailable — signal the parent to degrade.
@@ -7,7 +7,7 @@
7
7
  * No API key required: the host's existing Claude Code auth is reused.
8
8
  *
9
9
  * The returned function matches `LLMFallbackConfig.llmCaller` from
10
- * `@monomind/routing` — `(prompt: string) => Promise<string>`. When the
10
+ * `@monoes/routing` — `(prompt: string) => Promise<string>`. When the
11
11
  * `claude` CLI is unavailable it throws, which the routing layer already
12
12
  * catches and degrades to the best semantic match.
13
13
  */
@@ -140,7 +140,7 @@ function runWorker(task) {
140
140
  });
141
141
  }
142
142
  export async function createConfiguredRouteLayer(opts = {}) {
143
- const { RouteLayer, KeywordPreFilter, LLMFallbackRouter, ALL_ROUTES } = await import('@monomind/routing');
143
+ const { RouteLayer, KeywordPreFilter, LLMFallbackRouter, ALL_ROUTES } = await import('@monoes/routing');
144
144
  const { createClaudeLLMCaller } = await import('./llm-caller.js');
145
145
  const llmCaller = createClaudeLLMCaller({ model: 'haiku' });
146
146
  const keyword = new KeywordPreFilter();