monomind 2.5.2 → 2.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/package.json +1 -1
- package/packages/@monomind/cli/.claude/agents/github/repo-architect.md +3 -3
- package/packages/@monomind/cli/.claude/agents/github/sync-coordinator.md +2 -2
- package/packages/@monomind/cli/.claude/agents/specialists/integration-architect.md +4 -4
- package/packages/@monomind/cli/.claude/commands/github/repo-architect.md +4 -4
- package/packages/@monomind/cli/.claude/commands/github/sync-coordinator.md +2 -2
- package/packages/@monomind/cli/.claude/helpers/event-logger.cjs +2 -2
- package/packages/@monomind/cli/.claude/helpers/extras-registry.json +1 -1
- package/packages/@monomind/cli/.claude/helpers/handlers/agent-start-handler.cjs +2 -2
- package/packages/@monomind/cli/.claude/helpers/handlers/edit-handler.cjs +2 -2
- package/packages/@monomind/cli/.claude/helpers/handlers/gates-handler.cjs +1 -1
- package/packages/@monomind/cli/.claude/helpers/handlers/route-handler.cjs +1 -1
- package/packages/@monomind/cli/.claude/helpers/handlers/session-handler.cjs +1 -1
- package/packages/@monomind/cli/.claude/helpers/handlers/session-restore-handler.cjs +11 -11
- package/packages/@monomind/cli/.claude/helpers/handlers/task-handler.cjs +2 -2
- package/packages/@monomind/cli/.claude/helpers/hook-handler.cjs +8 -8
- package/packages/@monomind/cli/.claude/skills/mastermind-techport/SKILL.md +1 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/SKILL.md +2 -2
- package/packages/@monomind/cli/.claude/skills/monodesign/reference/antipatterns-catalog.md +47 -2
- package/packages/@monomind/cli/.claude/skills/monodesign/reference/critique.md +1 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/reference/live.md +0 -8
- package/packages/@monomind/cli/.claude/skills/monodesign/reference/polish.md +2 -2
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/context-signals.mjs +39 -6
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/context.mjs +0 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/critique-storage.mjs +175 -2
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detect-csp.mjs +0 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detect.mjs +0 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/browser/injected/index.mjs +25 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/cli/main.mjs +0 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/design-system.mjs +0 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/detect-antipatterns-browser.js +356 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/detect-antipatterns.mjs +0 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/engines/browser/detect-url.mjs +0 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/engines/browser/drivers.mjs +0 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/engines/regex/detect-text.mjs +63 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/engines/static-html/css-cascade.mjs +0 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/engines/static-html/detect-html.mjs +19 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/engines/visual/screenshot-contrast.mjs +0 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/findings.mjs +0 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/fix/css-regions.mjs +181 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/fix/fixers.mjs +373 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/fix/index.mjs +426 -0
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/node/file-system.mjs +0 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/profile/profiler.mjs +0 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/registry/antipatterns.mjs +49 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/rules/checks.mjs +292 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/shared/color.mjs +0 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/shared/constants.mjs +0 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/shared/fonts.mjs +0 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/shared/inline-ignores.mjs +0 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/shared/page.mjs +0 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/hook-admin.mjs +0 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/hook-before-edit.mjs +0 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/hook-lib.mjs +0 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/hook.mjs +0 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/lib/design-parser.mjs +0 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/lib/is-generated.mjs +0 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/lib/monodesign-config.mjs +0 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/lib/monodesign-paths.mjs +0 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/lib/provider.mjs +0 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/lib/target-args.mjs +0 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/browser-script-parts.mjs +0 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/completion.mjs +0 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/event-validation.mjs +0 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/insert-ui.mjs +0 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/manual-apply.mjs +0 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/manual-edit-routes.mjs +0 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/manual-edits-buffer.mjs +0 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/session-store.mjs +5 -2
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/svelte-component.mjs +0 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/sveltekit-adapter.mjs +0 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/ui-core.mjs +0 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/vocabulary.mjs +0 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-accept.mjs +0 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-browser-dom.js +0 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-browser-session.js +0 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-browser.js +0 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-commit-manual-edits.mjs +0 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-complete.mjs +0 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-copy-edit-agent.mjs +0 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-discard-manual-edits.mjs +0 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-inject.mjs +0 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-insert.mjs +0 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-manual-edit-evidence.mjs +0 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-poll.mjs +0 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-resume.mjs +0 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-server.mjs +0 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-status.mjs +0 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-target.mjs +0 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-wrap.mjs +0 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live.mjs +0 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/modern-screenshot.umd.js +0 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/palette.mjs +0 -1
- package/packages/@monomind/cli/.claude/skills/monodesign/scripts/pin.mjs +0 -1
- package/packages/@monomind/cli/README.md +1 -1
- package/packages/@monomind/cli/dist/src/commands/design-detect.js +62 -1
- package/packages/@monomind/cli/dist/src/commands/design-palette.d.ts +0 -1
- package/packages/@monomind/cli/dist/src/commands/design-palette.js +0 -1
- package/packages/@monomind/cli/dist/src/commands/doctor-project-checks.d.ts +1 -1
- package/packages/@monomind/cli/dist/src/commands/doctor-project-checks.js +1 -1
- package/packages/@monomind/cli/dist/src/commands/hooks-workers.d.ts +1 -1
- package/packages/@monomind/cli/dist/src/commands/hooks-workers.js +8 -8
- package/packages/@monomind/cli/dist/src/commands/init.js +2 -2
- package/packages/@monomind/cli/dist/src/index.d.ts +1 -1
- package/packages/@monomind/cli/dist/src/index.js +3 -3
- package/packages/@monomind/cli/dist/src/init/claudemd-generator.js +5 -5
- package/packages/@monomind/cli/dist/src/init/executor.js +3 -3
- package/packages/@monomind/cli/dist/src/knowledge/document-pipeline.js +3 -1
- package/packages/@monomind/cli/dist/src/mcp-server.js +2 -2
- package/packages/@monomind/cli/dist/src/mcp-tools/hooks-intelligence.d.ts +1 -1
- package/packages/@monomind/cli/dist/src/mcp-tools/hooks-intelligence.js +1 -1
- package/packages/@monomind/cli/dist/src/mcp-tools/hooks-routing.js +2 -2
- package/packages/@monomind/cli/dist/src/mcp-tools/hooks-tools.js +1 -1
- package/packages/@monomind/cli/dist/src/memory/memory-kg.d.ts +5 -4
- package/packages/@monomind/cli/dist/src/memory/memory-kg.js +5 -4
- package/packages/@monomind/cli/dist/src/routing/embed-worker.js +1 -1
- package/packages/@monomind/cli/dist/src/routing/llm-caller.js +1 -1
- package/packages/@monomind/cli/dist/src/routing/route-layer-factory.js +1 -1
- package/packages/@monomind/cli/dist/src/ui/dashboard.html +22 -20
- package/packages/@monomind/cli/dist/src/update/checker.js +3 -3
- 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;
|
|
@@ -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(@
|
|
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
|
]);
|
|
@@ -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 @
|
|
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 @
|
|
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 (@
|
|
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 (@
|
|
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 (@
|
|
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 @
|
|
421
|
+
// surviving commands run the real @monoes/hooks workers in-process.
|
|
422
422
|
const workerListCommand = {
|
|
423
423
|
name: 'list',
|
|
424
|
-
description: 'List all @
|
|
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('@
|
|
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('@
|
|
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 (@
|
|
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 (@
|
|
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('@
|
|
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 (@
|
|
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 @
|
|
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 @
|
|
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 @
|
|
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 (@
|
|
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('@
|
|
26
|
-
mcp: resolvable('@
|
|
27
|
-
routing: resolvable('@
|
|
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 (@
|
|
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> \\@
|
|
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('@
|
|
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 (@
|
|
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 (@
|
|
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
|
-
|
|
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 — @
|
|
681
|
-
const { createMCPServer } = await import('@
|
|
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 @
|
|
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 @
|
|
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 @
|
|
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('@
|
|
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 @
|
|
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
|
|
14
|
-
* `n:<
|
|
15
|
-
* merges idempotently via upsert
|
|
16
|
-
* ingest can be rolled back per
|
|
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
|
|
14
|
-
* `n:<
|
|
15
|
-
* merges idempotently via upsert
|
|
16
|
-
* ingest can be rolled back per
|
|
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('@
|
|
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
|
-
* `@
|
|
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('@
|
|
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();
|