@elizaos/plugin-knowledge 1.2.3 → 1.5.11
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/dist/.vite/manifest.json +2 -2
- package/dist/assets/index-DtOcbZ9V.js +169 -0
- package/dist/assets/index-crC0VS8M.css +1 -0
- package/dist/index.html +2 -2
- package/dist/index.js +305 -31
- package/dist/index.js.map +1 -1
- package/package.json +8 -7
- package/dist/assets/index-B5VEkqpw.css +0 -1
- package/dist/assets/index-C_sAxTPC.js +0 -169
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/*! tailwindcss v4.1.11 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-orange-500:oklch(70.5% .213 47.604);--color-orange-600:oklch(64.6% .222 41.116);--color-yellow-500:oklch(79.5% .184 86.047);--color-green-500:oklch(72.3% .219 149.579);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-500:oklch(62.3% .214 259.815);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--spacing:.25rem;--container-md:28rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--leading-relaxed:1.625;--animate-spin:spin 1s linear infinite;--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}:root{--background:0 0% 97.65%;--foreground:0 0% 12.55%;--muted:0 0% 93.73%;--muted-foreground:0 0% 39.22%;--popover:0 0% 98.82%;--popover-foreground:0 0% 12.55%;--card:0 0% 98.82%;--card-foreground:0 0% 12.55%;--border:0 0% 84.71%;--input:0 0% 94.12%;--primary:22.93 92.59% 52.35%;--primary-foreground:44 0% 100%;--secondary:34.05 100% 85.49%;--secondary-foreground:16.27 50.43% 22.94%;--accent:0 0% 90.98%;--accent-foreground:0 0% 12.55%;--destructive:10.16 77.87% 53.92%;--destructive-foreground:0 0% 100%;--ring:24.8 79.79% 63.14%;--chart-1:22.93 92.59% 52.35%;--chart-2:34.05 100% 85.49%;--chart-3:0 0% 90.98%;--chart-4:34.05 100% 88.49%;--chart-5:22.93 95.59% 52.35%;--radius:.5rem}.dark{--background:0 0% 6.67%;--foreground:0 0% 93.33%;--muted:0 0% 13.33%;--muted-foreground:0 0% 70.59%;--popover:0 0% 9.8%;--popover-foreground:0 0% 93.33%;--card:0 0% 9.8%;--card-foreground:0 0% 93.33%;--border:44 14% 11%;--input:0 0% 28.24%;--primary:22.93 92.59% 52.35%;--primary-foreground:29.51 0% 100%;--secondary:28.5 64.52% 12.16%;--secondary-foreground:29.51 100% 88.04%;--accent:0 0% 16.47%;--accent-foreground:0 0% 93.33%;--destructive:10.16 77.87% 53.92%;--destructive-foreground:0 0% 100%;--ring:23.11 59.8% 40%;--chart-1:22.93 92.59% 52.35%;--chart-2:28.5 64.52% 12.16%;--chart-3:0 0% 16.47%;--chart-4:28.5 64.52% 15.16%;--chart-5:22.93 95.59% 52.35%}*{border-color:hsl(var(--border))}body{background-color:hsl(var(--background));color:hsl(var(--foreground))}}@layer components;@layer utilities{.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-0{inset:calc(var(--spacing)*0)}.top-1\/2{top:50%}.top-4{top:calc(var(--spacing)*4)}.right-4{right:calc(var(--spacing)*4)}.bottom-4{bottom:calc(var(--spacing)*4)}.left-1\/2{left:50%}.left-4{left:calc(var(--spacing)*4)}.z-10{z-index:10}.z-50{z-index:50}.col-span-2{grid-column:span 2/span 2}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.container,.mx-auto{margin-inline:auto}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-6{margin-top:calc(var(--spacing)*6)}.mt-8{margin-top:calc(var(--spacing)*8)}.mr-1{margin-right:calc(var(--spacing)*1)}.mr-1\.5{margin-right:calc(var(--spacing)*1.5)}.mr-2{margin-right:calc(var(--spacing)*2)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.ml-2{margin-left:calc(var(--spacing)*2)}.ml-auto{margin-left:auto}.line-clamp-4{-webkit-line-clamp:4;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.size-5{width:calc(var(--spacing)*5);height:calc(var(--spacing)*5)}.h-1\/3{height:33.3333%}.h-2{height:calc(var(--spacing)*2)}.h-2\/3{height:66.6667%}.h-3{height:calc(var(--spacing)*3)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-6{height:calc(var(--spacing)*6)}.h-7{height:calc(var(--spacing)*7)}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-11{height:calc(var(--spacing)*11)}.h-12{height:calc(var(--spacing)*12)}.h-40{height:calc(var(--spacing)*40)}.h-full{height:100%}.max-h-40{max-height:calc(var(--spacing)*40)}.max-h-\[95vh\]{max-height:95vh}.max-h-full{max-height:100%}.min-h-0{min-height:calc(var(--spacing)*0)}.min-h-\[2rem\]{min-height:2rem}.w-3{width:calc(var(--spacing)*3)}.w-4{width:calc(var(--spacing)*4)}.w-5{width:calc(var(--spacing)*5)}.w-6{width:calc(var(--spacing)*6)}.w-8{width:calc(var(--spacing)*8)}.w-10{width:calc(var(--spacing)*10)}.w-12{width:calc(var(--spacing)*12)}.w-full{width:100%}.max-w-\[95vw\]{max-width:95vw}.max-w-full{max-width:100%}.max-w-md{max-width:var(--container-md)}.min-w-0{min-width:calc(var(--spacing)*0)}.min-w-\[60px\]{min-width:60px}.min-w-full{min-width:100%}.flex-1{flex:1}.flex-shrink-0{flex-shrink:0}.caption-bottom{caption-side:bottom}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-spin{animation:var(--animate-spin)}.cursor-pointer{cursor:pointer}.resize{resize:both}.appearance-none{appearance:none}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1.5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}.gap-x-4{column-gap:calc(var(--spacing)*4)}.gap-y-1{row-gap:calc(var(--spacing)*1)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-border,.border-border\/30{border-color:hsl(var(--border))}@supports (color:color-mix(in lab,red,red)){.border-border\/30{border-color:color-mix(in oklab,hsl(var(--border))30%,transparent)}}.border-gray-500\/60{border-color:#6a728299}@supports (color:color-mix(in lab,red,red)){.border-gray-500\/60{border-color:color-mix(in oklab,var(--color-gray-500)60%,transparent)}}.border-input{border-color:hsl(var(--input))}.border-orange-600\/60{border-color:#f0510099}@supports (color:color-mix(in lab,red,red)){.border-orange-600\/60{border-color:color-mix(in oklab,var(--color-orange-600)60%,transparent)}}.bg-accent,.bg-accent\/20{background-color:hsl(var(--accent))}@supports (color:color-mix(in lab,red,red)){.bg-accent\/20{background-color:color-mix(in oklab,hsl(var(--accent))20%,transparent)}}.bg-background,.bg-background\/80{background-color:hsl(var(--background))}@supports (color:color-mix(in lab,red,red)){.bg-background\/80{background-color:color-mix(in oklab,hsl(var(--background))80%,transparent)}}.bg-blue-300{background-color:var(--color-blue-300)}.bg-card,.bg-card\/50{background-color:hsl(var(--card))}@supports (color:color-mix(in lab,red,red)){.bg-card\/50{background-color:color-mix(in oklab,hsl(var(--card))50%,transparent)}}.bg-card\/90{background-color:hsl(var(--card))}@supports (color:color-mix(in lab,red,red)){.bg-card\/90{background-color:color-mix(in oklab,hsl(var(--card))90%,transparent)}}.bg-destructive,.bg-destructive\/10{background-color:hsl(var(--destructive))}@supports (color:color-mix(in lab,red,red)){.bg-destructive\/10{background-color:color-mix(in oklab,hsl(var(--destructive))10%,transparent)}}.bg-gray-200{background-color:var(--color-gray-200)}.bg-gray-400\/90{background-color:#99a1afe6}@supports (color:color-mix(in lab,red,red)){.bg-gray-400\/90{background-color:color-mix(in oklab,var(--color-gray-400)90%,transparent)}}.bg-muted,.bg-muted\/30{background-color:hsl(var(--muted))}@supports (color:color-mix(in lab,red,red)){.bg-muted\/30{background-color:color-mix(in oklab,hsl(var(--muted))30%,transparent)}}.bg-muted\/50{background-color:hsl(var(--muted))}@supports (color:color-mix(in lab,red,red)){.bg-muted\/50{background-color:color-mix(in oklab,hsl(var(--muted))50%,transparent)}}.bg-orange-500{background-color:var(--color-orange-500)}.bg-orange-500\/90{background-color:#fe6e00e6}@supports (color:color-mix(in lab,red,red)){.bg-orange-500\/90{background-color:color-mix(in oklab,var(--color-orange-500)90%,transparent)}}.bg-primary{background-color:hsl(var(--primary))}.bg-secondary{background-color:hsl(var(--secondary))}.p-0{padding:calc(var(--spacing)*0)}.p-1{padding:calc(var(--spacing)*1)}.p-2{padding:calc(var(--spacing)*2)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-6{padding:calc(var(--spacing)*6)}.p-12{padding:calc(var(--spacing)*12)}.px-1{padding-inline:calc(var(--spacing)*1)}.px-1\.5{padding-inline:calc(var(--spacing)*1.5)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-2\.5{padding-inline:calc(var(--spacing)*2.5)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-6{padding-inline:calc(var(--spacing)*6)}.px-8{padding-inline:calc(var(--spacing)*8)}.py-0{padding-block:calc(var(--spacing)*0)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-2{padding-block:calc(var(--spacing)*2)}.pt-0{padding-top:calc(var(--spacing)*0)}.pt-2{padding-top:calc(var(--spacing)*2)}.pt-4{padding-top:calc(var(--spacing)*4)}.pb-2{padding-bottom:calc(var(--spacing)*2)}.pb-4{padding-bottom:calc(var(--spacing)*4)}.text-center{text-align:center}.text-left{text-align:left}.align-middle{vertical-align:middle}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.break-words{overflow-wrap:break-word}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-accent-foreground{color:hsl(var(--accent-foreground))}.text-blue-500{color:var(--color-blue-500)}.text-card-foreground{color:hsl(var(--card-foreground))}.text-destructive{color:hsl(var(--destructive))}.text-destructive-foreground{color:hsl(var(--destructive-foreground))}.text-foreground{color:hsl(var(--foreground))}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-green-500{color:var(--color-green-500)}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-primary\/80{color:hsl(var(--primary))}@supports (color:color-mix(in lab,red,red)){.text-primary\/80{color:color-mix(in oklab,hsl(var(--primary))80%,transparent)}}.text-red-500{color:var(--color-red-500)}.text-red-600{color:var(--color-red-600)}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.text-yellow-500{color:var(--color-yellow-500)}.opacity-0{opacity:0}.opacity-20{opacity:.2}.opacity-30{opacity:.3}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-offset-background{--tw-ring-offset-color:hsl(var(--background))}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,visibility,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-300{--tw-duration:.3s;transition-duration:.3s;animation-duration:.3s}@media (hover:hover){.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}@media (hover:hover){.hover\:bg-accent:hover,.hover\:bg-accent\/5:hover{background-color:hsl(var(--accent))}@supports (color:color-mix(in lab,red,red)){.hover\:bg-accent\/5:hover{background-color:color-mix(in oklab,hsl(var(--accent))5%,transparent)}}.hover\:bg-accent\/10:hover{background-color:hsl(var(--accent))}@supports (color:color-mix(in lab,red,red)){.hover\:bg-accent\/10:hover{background-color:color-mix(in oklab,hsl(var(--accent))10%,transparent)}}.hover\:bg-destructive\/10:hover{background-color:hsl(var(--destructive))}@supports (color:color-mix(in lab,red,red)){.hover\:bg-destructive\/10:hover{background-color:color-mix(in oklab,hsl(var(--destructive))10%,transparent)}}.hover\:bg-destructive\/90:hover{background-color:hsl(var(--destructive))}@supports (color:color-mix(in lab,red,red)){.hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab,hsl(var(--destructive))90%,transparent)}}.hover\:bg-muted\/50:hover{background-color:hsl(var(--muted))}@supports (color:color-mix(in lab,red,red)){.hover\:bg-muted\/50:hover{background-color:color-mix(in oklab,hsl(var(--muted))50%,transparent)}}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary))}@supports (color:color-mix(in lab,red,red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,hsl(var(--primary))90%,transparent)}}.hover\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))}.hover\:text-destructive:hover{color:hsl(var(--destructive))}.hover\:text-foreground:hover{color:hsl(var(--foreground))}}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color:hsl(var(--ring))}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:hsl(var(--background))}.data-\[state\=active\]\:text-foreground[data-state=active]{color:hsl(var(--foreground))}.data-\[state\=active\]\:shadow[data-state=active]{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:hsl(var(--muted))}@media (min-width:40rem){.sm\:mr-2{margin-right:calc(var(--spacing)*2)}.sm\:ml-0{margin-left:calc(var(--spacing)*0)}.sm\:inline{display:inline}.sm\:w-auto{width:auto}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}}@media (min-width:48rem){.md\:hidden{display:none}.md\:inline{display:inline}}.dark\:bg-gray-700:is(.dark *){background-color:var(--color-gray-700)}.\[\&_tr\]\:border-b tr{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-style:var(--tw-border-style);border-width:0}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:calc(var(--spacing)*0)}.\[\&\>\[role\=checkbox\]\]\:translate-y-\[2px\]>[role=checkbox]{--tw-translate-y:2px;translate:var(--tw-translate-x)var(--tw-translate-y)}.\[\&\>tr\]\:last\:border-b-0>tr:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}}:root{color-scheme:dark}body{background-color:hsl(var(--background));font-family:var(--font-mono);color:hsl(var(--foreground))}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0))}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}
|
package/dist/index.html
CHANGED
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
7
|
<title>Agent Plugin View</title>
|
|
8
|
-
<script type="module" crossorigin src="./assets/index-
|
|
9
|
-
<link rel="stylesheet" crossorigin href="./assets/index-
|
|
8
|
+
<script type="module" crossorigin src="./assets/index-DtOcbZ9V.js"></script>
|
|
9
|
+
<link rel="stylesheet" crossorigin href="./assets/index-crC0VS8M.css">
|
|
10
10
|
</head>
|
|
11
11
|
<body>
|
|
12
12
|
<div id="root"></div>
|
package/dist/index.js
CHANGED
|
@@ -810,11 +810,11 @@ async function generateAnthropicText(config, prompt, system, modelName, maxToken
|
|
|
810
810
|
prompt,
|
|
811
811
|
system,
|
|
812
812
|
temperature: 0.3,
|
|
813
|
-
maxTokens
|
|
813
|
+
maxOutputTokens: maxTokens
|
|
814
814
|
});
|
|
815
|
-
const totalTokens = result.usage.
|
|
815
|
+
const totalTokens = (result.usage.inputTokens || 0) + (result.usage.outputTokens || 0);
|
|
816
816
|
logger2.debug(
|
|
817
|
-
`[Document Processor] ${modelName}: ${totalTokens} tokens (${result.usage.
|
|
817
|
+
`[Document Processor] ${modelName}: ${totalTokens} tokens (${result.usage.inputTokens || 0}\u2192${result.usage.outputTokens || 0})`
|
|
818
818
|
);
|
|
819
819
|
return result;
|
|
820
820
|
} catch (error) {
|
|
@@ -843,11 +843,11 @@ async function generateOpenAIText(config, prompt, system, modelName, maxTokens)
|
|
|
843
843
|
prompt,
|
|
844
844
|
system,
|
|
845
845
|
temperature: 0.3,
|
|
846
|
-
maxTokens
|
|
846
|
+
maxOutputTokens: maxTokens
|
|
847
847
|
});
|
|
848
|
-
const totalTokens = result.usage.
|
|
848
|
+
const totalTokens = (result.usage.inputTokens || 0) + (result.usage.outputTokens || 0);
|
|
849
849
|
logger2.debug(
|
|
850
|
-
`[Document Processor] OpenAI ${modelName}: ${totalTokens} tokens (${result.usage.
|
|
850
|
+
`[Document Processor] OpenAI ${modelName}: ${totalTokens} tokens (${result.usage.inputTokens || 0}\u2192${result.usage.outputTokens || 0})`
|
|
851
851
|
);
|
|
852
852
|
return result;
|
|
853
853
|
}
|
|
@@ -862,15 +862,15 @@ async function generateGoogleText(prompt, system, modelName, maxTokens, config)
|
|
|
862
862
|
prompt,
|
|
863
863
|
system,
|
|
864
864
|
temperature: 0.3,
|
|
865
|
-
maxTokens
|
|
865
|
+
maxOutputTokens: maxTokens
|
|
866
866
|
});
|
|
867
|
-
const totalTokens = result.usage.
|
|
867
|
+
const totalTokens = (result.usage.inputTokens || 0) + (result.usage.outputTokens || 0);
|
|
868
868
|
logger2.debug(
|
|
869
|
-
`[Document Processor] Google ${modelName}: ${totalTokens} tokens (${result.usage.
|
|
869
|
+
`[Document Processor] Google ${modelName}: ${totalTokens} tokens (${result.usage.inputTokens || 0}\u2192${result.usage.outputTokens || 0})`
|
|
870
870
|
);
|
|
871
871
|
return result;
|
|
872
872
|
}
|
|
873
|
-
async function generateOpenRouterText(config, prompt, system, modelName, maxTokens, cacheDocument,
|
|
873
|
+
async function generateOpenRouterText(config, prompt, system, modelName, maxTokens, cacheDocument, _cacheOptions, autoCacheContextualRetrieval = true) {
|
|
874
874
|
const openrouter = createOpenRouter({
|
|
875
875
|
apiKey: config.OPENROUTER_API_KEY,
|
|
876
876
|
baseURL: config.OPENROUTER_BASE_URL
|
|
@@ -891,7 +891,6 @@ async function generateOpenRouterText(config, prompt, system, modelName, maxToke
|
|
|
891
891
|
}
|
|
892
892
|
}
|
|
893
893
|
if (documentForCaching && supportsCaching) {
|
|
894
|
-
const effectiveCacheOptions = cacheOptions || { type: "ephemeral" };
|
|
895
894
|
let promptText = prompt;
|
|
896
895
|
if (promptText.includes("<document>")) {
|
|
897
896
|
promptText = promptText.replace(/<document>[\s\S]*?<\/document>/, "").trim();
|
|
@@ -978,7 +977,7 @@ async function generateClaudeWithCaching(promptText, system, modelInstance, mode
|
|
|
978
977
|
model: modelInstance,
|
|
979
978
|
messages,
|
|
980
979
|
temperature: 0.3,
|
|
981
|
-
maxTokens,
|
|
980
|
+
maxOutputTokens: maxTokens,
|
|
982
981
|
providerOptions: {
|
|
983
982
|
openrouter: {
|
|
984
983
|
usage: {
|
|
@@ -988,9 +987,9 @@ async function generateClaudeWithCaching(promptText, system, modelInstance, mode
|
|
|
988
987
|
}
|
|
989
988
|
});
|
|
990
989
|
logCacheMetrics(result);
|
|
991
|
-
const totalTokens = result.usage.
|
|
990
|
+
const totalTokens = (result.usage.inputTokens || 0) + (result.usage.outputTokens || 0);
|
|
992
991
|
logger2.debug(
|
|
993
|
-
`[Document Processor] OpenRouter ${modelName}: ${totalTokens} tokens (${result.usage.
|
|
992
|
+
`[Document Processor] OpenRouter ${modelName}: ${totalTokens} tokens (${result.usage.inputTokens || 0}\u2192${result.usage.outputTokens || 0})`
|
|
994
993
|
);
|
|
995
994
|
return result;
|
|
996
995
|
}
|
|
@@ -1029,7 +1028,7 @@ ${promptText}`;
|
|
|
1029
1028
|
model: modelInstance,
|
|
1030
1029
|
prompt: geminiPrompt,
|
|
1031
1030
|
temperature: 0.3,
|
|
1032
|
-
maxTokens,
|
|
1031
|
+
maxOutputTokens: maxTokens,
|
|
1033
1032
|
providerOptions: {
|
|
1034
1033
|
openrouter: {
|
|
1035
1034
|
usage: {
|
|
@@ -1040,10 +1039,10 @@ ${promptText}`;
|
|
|
1040
1039
|
}
|
|
1041
1040
|
});
|
|
1042
1041
|
logCacheMetrics(result);
|
|
1043
|
-
const totalTokens = result.usage.
|
|
1042
|
+
const totalTokens = (result.usage.inputTokens || 0) + (result.usage.outputTokens || 0);
|
|
1044
1043
|
const cachingType = usingImplicitCaching ? "implicit" : "standard";
|
|
1045
1044
|
logger2.debug(
|
|
1046
|
-
`[Document Processor] OpenRouter ${modelName} (${cachingType} caching): ${totalTokens} tokens (${result.usage.
|
|
1045
|
+
`[Document Processor] OpenRouter ${modelName} (${cachingType} caching): ${totalTokens} tokens (${result.usage.inputTokens || 0}\u2192${result.usage.outputTokens || 0})`
|
|
1047
1046
|
);
|
|
1048
1047
|
return result;
|
|
1049
1048
|
}
|
|
@@ -1053,7 +1052,7 @@ async function generateStandardOpenRouterText(prompt, system, modelInstance, mod
|
|
|
1053
1052
|
prompt,
|
|
1054
1053
|
system,
|
|
1055
1054
|
temperature: 0.3,
|
|
1056
|
-
maxTokens,
|
|
1055
|
+
maxOutputTokens: maxTokens,
|
|
1057
1056
|
providerOptions: {
|
|
1058
1057
|
openrouter: {
|
|
1059
1058
|
usage: {
|
|
@@ -1063,9 +1062,9 @@ async function generateStandardOpenRouterText(prompt, system, modelInstance, mod
|
|
|
1063
1062
|
}
|
|
1064
1063
|
}
|
|
1065
1064
|
});
|
|
1066
|
-
const totalTokens = result.usage.
|
|
1065
|
+
const totalTokens = (result.usage.inputTokens || 0) + (result.usage.outputTokens || 0);
|
|
1067
1066
|
logger2.debug(
|
|
1068
|
-
`[Document Processor] OpenRouter ${modelName}: ${totalTokens} tokens (${result.usage.
|
|
1067
|
+
`[Document Processor] OpenRouter ${modelName}: ${totalTokens} tokens (${result.usage.inputTokens || 0}\u2192${result.usage.outputTokens || 0})`
|
|
1069
1068
|
);
|
|
1070
1069
|
return result;
|
|
1071
1070
|
}
|
|
@@ -2609,7 +2608,7 @@ var KnowledgeService = class _KnowledgeService extends Service {
|
|
|
2609
2608
|
return !!existingDocument;
|
|
2610
2609
|
}
|
|
2611
2610
|
async getKnowledge(message, scope) {
|
|
2612
|
-
logger6.debug(
|
|
2611
|
+
logger6.debug(`KnowledgeService: getKnowledge called for message id: ${message.id}`);
|
|
2613
2612
|
if (!message?.content?.text || message?.content?.text.trim().length === 0) {
|
|
2614
2613
|
logger6.warn("KnowledgeService: Invalid or empty message content for knowledge query.");
|
|
2615
2614
|
return [];
|
|
@@ -2899,10 +2898,7 @@ var KnowledgeService = class _KnowledgeService extends Service {
|
|
|
2899
2898
|
const chunks = await splitChunks2(text, targetTokens, overlap);
|
|
2900
2899
|
return chunks.map((chunk, index) => {
|
|
2901
2900
|
const fragmentIdContent = `${document.id}-fragment-${index}-${Date.now()}`;
|
|
2902
|
-
const fragmentId = createUniqueUuid(
|
|
2903
|
-
this.runtime.agentId + fragmentIdContent,
|
|
2904
|
-
fragmentIdContent
|
|
2905
|
-
);
|
|
2901
|
+
const fragmentId = createUniqueUuid(this.runtime, fragmentIdContent);
|
|
2906
2902
|
return {
|
|
2907
2903
|
id: fragmentId,
|
|
2908
2904
|
entityId: scope.entityId,
|
|
@@ -2937,10 +2933,20 @@ var KnowledgeService = class _KnowledgeService extends Service {
|
|
|
2937
2933
|
async getMemories(params) {
|
|
2938
2934
|
return this.runtime.getMemories({
|
|
2939
2935
|
...params,
|
|
2940
|
-
// includes tableName, roomId, count, end
|
|
2936
|
+
// includes tableName, roomId, count, offset, end
|
|
2941
2937
|
agentId: this.runtime.agentId
|
|
2942
2938
|
});
|
|
2943
2939
|
}
|
|
2940
|
+
/**
|
|
2941
|
+
* Counts memories for pagination.
|
|
2942
|
+
* Corresponds to counting documents or fragments.
|
|
2943
|
+
*/
|
|
2944
|
+
async countMemories(params) {
|
|
2945
|
+
const roomId = params.roomId || this.runtime.agentId;
|
|
2946
|
+
const unique = params.unique ?? false;
|
|
2947
|
+
const tableName = params.tableName;
|
|
2948
|
+
return this.runtime.countMemories(roomId, unique, tableName);
|
|
2949
|
+
}
|
|
2944
2950
|
/**
|
|
2945
2951
|
* Deletes a specific memory item (knowledge document) by its ID.
|
|
2946
2952
|
* Corresponds to DELETE /plugins/knowledge/documents/:knowledgeId
|
|
@@ -4016,7 +4022,7 @@ var processKnowledgeAction = {
|
|
|
4016
4022
|
};
|
|
4017
4023
|
const result = await service.addKnowledge(knowledgeOptions);
|
|
4018
4024
|
response = {
|
|
4019
|
-
text: `I've successfully processed the document "${fileName}". It has been split into ${result
|
|
4025
|
+
text: `I've successfully processed the document "${fileName}". It has been split into ${result?.fragmentCount || 0} searchable fragments and added to my knowledge base.`
|
|
4020
4026
|
};
|
|
4021
4027
|
} else {
|
|
4022
4028
|
const knowledgeContent = text.replace(/^(add|store|remember|process|learn)\s+(this|that|the following)?:?\s*/i, "").trim();
|
|
@@ -4038,7 +4044,7 @@ var processKnowledgeAction = {
|
|
|
4038
4044
|
roomId: message.roomId,
|
|
4039
4045
|
entityId: message.entityId
|
|
4040
4046
|
};
|
|
4041
|
-
|
|
4047
|
+
await service.addKnowledge(knowledgeOptions);
|
|
4042
4048
|
response = {
|
|
4043
4049
|
text: `I've added that information to my knowledge base. It has been stored and indexed for future reference.`
|
|
4044
4050
|
};
|
|
@@ -4151,7 +4157,7 @@ ${formattedResults}`
|
|
|
4151
4157
|
var knowledgeActions = [processKnowledgeAction, searchKnowledgeAction];
|
|
4152
4158
|
|
|
4153
4159
|
// src/routes.ts
|
|
4154
|
-
import { createUniqueUuid as createUniqueUuid2, logger as logger9, ModelType as ModelType4 } from "@elizaos/core";
|
|
4160
|
+
import { MemoryType as MemoryType4, createUniqueUuid as createUniqueUuid2, logger as logger9, ModelType as ModelType4 } from "@elizaos/core";
|
|
4155
4161
|
import fs4 from "fs";
|
|
4156
4162
|
import path4 from "path";
|
|
4157
4163
|
import multer from "multer";
|
|
@@ -4688,8 +4694,8 @@ async function getKnowledgeChunksHandler(req, res, runtime) {
|
|
|
4688
4694
|
if (documentId) {
|
|
4689
4695
|
const allFragments = await service.getMemories({
|
|
4690
4696
|
tableName: "knowledge",
|
|
4691
|
-
count:
|
|
4692
|
-
//
|
|
4697
|
+
count: 5e4
|
|
4698
|
+
// Reduced from 100000 - still high enough for large documents
|
|
4693
4699
|
});
|
|
4694
4700
|
const documentFragments = allFragments.filter((fragment) => {
|
|
4695
4701
|
const metadata = fragment.metadata;
|
|
@@ -4802,6 +4808,258 @@ async function searchKnowledgeHandler(req, res, runtime) {
|
|
|
4802
4808
|
sendError(res, 500, "SEARCH_ERROR", "Failed to search knowledge", error.message);
|
|
4803
4809
|
}
|
|
4804
4810
|
}
|
|
4811
|
+
async function getGraphNodesHandler(req, res, runtime) {
|
|
4812
|
+
const service = runtime.getService(KnowledgeService.serviceType);
|
|
4813
|
+
if (!service) {
|
|
4814
|
+
return sendError(res, 500, "SERVICE_NOT_FOUND", "KnowledgeService not found");
|
|
4815
|
+
}
|
|
4816
|
+
try {
|
|
4817
|
+
const parsedPage = req.query.page ? Number.parseInt(req.query.page, 10) : 1;
|
|
4818
|
+
const parsedLimit = req.query.limit ? Number.parseInt(req.query.limit, 10) : 20;
|
|
4819
|
+
const type = req.query.type;
|
|
4820
|
+
const agentId = req.query.agentId || runtime.agentId;
|
|
4821
|
+
const page = Number.isNaN(parsedPage) || parsedPage < 1 ? 1 : parsedPage;
|
|
4822
|
+
const limit = Number.isNaN(parsedLimit) || parsedLimit < 1 ? 20 : Math.min(parsedLimit, 50);
|
|
4823
|
+
const offset = (page - 1) * limit;
|
|
4824
|
+
logger9.debug(
|
|
4825
|
+
`[Graph API] \u{1F4CA} Fetching graph nodes: page=${page}, limit=${limit}, type=${type || "all"}, agent=${agentId}`
|
|
4826
|
+
);
|
|
4827
|
+
const totalDocuments = await service.countMemories({
|
|
4828
|
+
tableName: "documents",
|
|
4829
|
+
roomId: agentId,
|
|
4830
|
+
unique: false
|
|
4831
|
+
// Count all documents, not just unique ones
|
|
4832
|
+
});
|
|
4833
|
+
const totalPages = Math.ceil(totalDocuments / limit);
|
|
4834
|
+
const hasMore = page < totalPages;
|
|
4835
|
+
const paginatedDocuments = await service.getMemories({
|
|
4836
|
+
tableName: "documents",
|
|
4837
|
+
roomId: agentId,
|
|
4838
|
+
count: limit,
|
|
4839
|
+
offset
|
|
4840
|
+
});
|
|
4841
|
+
const nodes = [];
|
|
4842
|
+
const links = [];
|
|
4843
|
+
paginatedDocuments.forEach((doc) => {
|
|
4844
|
+
if (!doc.id) {
|
|
4845
|
+
logger9.warn(`[Graph API] \u26A0\uFE0F Skipping document without ID`);
|
|
4846
|
+
return;
|
|
4847
|
+
}
|
|
4848
|
+
nodes.push({ id: doc.id, type: "document" });
|
|
4849
|
+
});
|
|
4850
|
+
if (type !== "document") {
|
|
4851
|
+
const allFragments = await service.getMemories({
|
|
4852
|
+
tableName: "knowledge",
|
|
4853
|
+
roomId: agentId,
|
|
4854
|
+
count: 5e4
|
|
4855
|
+
// Reduced from 100000 - still high enough for large documents
|
|
4856
|
+
});
|
|
4857
|
+
logger9.debug(`[Graph API] \u{1F4CA} Total fragments found: ${allFragments.length}`);
|
|
4858
|
+
if (allFragments.length > 0) {
|
|
4859
|
+
logger9.debug(
|
|
4860
|
+
`[Graph API] \u{1F4CA} Sample fragment metadata: ${JSON.stringify(
|
|
4861
|
+
allFragments.slice(0, 3).map((f) => ({
|
|
4862
|
+
id: f.id,
|
|
4863
|
+
metadata: f.metadata
|
|
4864
|
+
}))
|
|
4865
|
+
)}`
|
|
4866
|
+
);
|
|
4867
|
+
}
|
|
4868
|
+
paginatedDocuments.forEach((doc) => {
|
|
4869
|
+
if (!doc.id) {
|
|
4870
|
+
return;
|
|
4871
|
+
}
|
|
4872
|
+
const docFragments = allFragments.filter((fragment) => {
|
|
4873
|
+
const metadata = fragment.metadata;
|
|
4874
|
+
const typeString = typeof metadata?.type === "string" ? metadata.type : null;
|
|
4875
|
+
const isFragment = typeString && typeString.toLowerCase() === "fragment" || metadata?.type === MemoryType4.FRAGMENT || // If no type but has documentId, assume it's a fragment
|
|
4876
|
+
!metadata?.type && metadata?.documentId;
|
|
4877
|
+
return metadata?.documentId === doc.id && isFragment;
|
|
4878
|
+
});
|
|
4879
|
+
if (docFragments.length > 0) {
|
|
4880
|
+
logger9.debug(`[Graph API] \u{1F4CA} Document ${doc.id} has ${docFragments.length} fragments`);
|
|
4881
|
+
}
|
|
4882
|
+
docFragments.forEach((frag) => {
|
|
4883
|
+
const docId = doc.id;
|
|
4884
|
+
if (!frag.id || !docId) {
|
|
4885
|
+
logger9.warn(
|
|
4886
|
+
`[Graph API] \u26A0\uFE0F Skipping fragment without ID for document ${docId || "unknown"}`
|
|
4887
|
+
);
|
|
4888
|
+
return;
|
|
4889
|
+
}
|
|
4890
|
+
nodes.push({ id: frag.id, type: "fragment" });
|
|
4891
|
+
links.push({ source: docId, target: frag.id });
|
|
4892
|
+
});
|
|
4893
|
+
});
|
|
4894
|
+
logger9.info(
|
|
4895
|
+
`[Graph API] \u{1F4CA} Final graph: ${nodes.length} nodes (${paginatedDocuments.length} documents), ${links.length} links`
|
|
4896
|
+
);
|
|
4897
|
+
}
|
|
4898
|
+
sendSuccess(res, {
|
|
4899
|
+
nodes,
|
|
4900
|
+
links,
|
|
4901
|
+
pagination: {
|
|
4902
|
+
currentPage: page,
|
|
4903
|
+
totalPages,
|
|
4904
|
+
hasMore,
|
|
4905
|
+
totalDocuments
|
|
4906
|
+
}
|
|
4907
|
+
});
|
|
4908
|
+
} catch (error) {
|
|
4909
|
+
logger9.error("[Graph API] \u274C Error fetching graph nodes:", error);
|
|
4910
|
+
sendError(res, 500, "GRAPH_ERROR", "Failed to fetch graph nodes", error.message);
|
|
4911
|
+
}
|
|
4912
|
+
}
|
|
4913
|
+
async function getGraphNodeDetailsHandler(req, res, runtime) {
|
|
4914
|
+
const service = runtime.getService(KnowledgeService.serviceType);
|
|
4915
|
+
if (!service) {
|
|
4916
|
+
return sendError(res, 500, "SERVICE_NOT_FOUND", "KnowledgeService not found");
|
|
4917
|
+
}
|
|
4918
|
+
const nodeId = req.params.nodeId;
|
|
4919
|
+
const agentId = req.query.agentId || runtime.agentId;
|
|
4920
|
+
if (!nodeId || nodeId.length < 36) {
|
|
4921
|
+
return sendError(res, 400, "INVALID_ID", "Invalid node ID format");
|
|
4922
|
+
}
|
|
4923
|
+
try {
|
|
4924
|
+
logger9.info(`[Graph API] \u{1F4CA} Fetching node details for: ${nodeId}, agent: ${agentId}`);
|
|
4925
|
+
const allDocuments = await service.getMemories({
|
|
4926
|
+
tableName: "documents",
|
|
4927
|
+
count: 1e4
|
|
4928
|
+
});
|
|
4929
|
+
logger9.debug(`[Graph API] \u{1F4CA} Total documents in DB: ${allDocuments.length}`);
|
|
4930
|
+
let document = allDocuments.find((doc) => doc.id === nodeId && doc.roomId === agentId);
|
|
4931
|
+
if (!document) {
|
|
4932
|
+
logger9.debug(`[Graph API] \u{1F4CA} Document not found with roomId filter, trying without filter`);
|
|
4933
|
+
document = allDocuments.find((doc) => doc.id === nodeId);
|
|
4934
|
+
if (document) {
|
|
4935
|
+
logger9.warn(
|
|
4936
|
+
`[Graph API] \u26A0\uFE0F Document ${nodeId} found but has different roomId: ${document.roomId} vs ${agentId}`
|
|
4937
|
+
);
|
|
4938
|
+
}
|
|
4939
|
+
}
|
|
4940
|
+
if (document) {
|
|
4941
|
+
logger9.info(`[Graph API] \u2705 Found document: ${nodeId}`);
|
|
4942
|
+
sendSuccess(res, {
|
|
4943
|
+
id: document.id,
|
|
4944
|
+
type: "document",
|
|
4945
|
+
content: document.content,
|
|
4946
|
+
metadata: document.metadata,
|
|
4947
|
+
createdAt: document.createdAt,
|
|
4948
|
+
entityId: document.entityId,
|
|
4949
|
+
roomId: document.roomId,
|
|
4950
|
+
agentId: document.agentId,
|
|
4951
|
+
worldId: document.worldId
|
|
4952
|
+
});
|
|
4953
|
+
return;
|
|
4954
|
+
}
|
|
4955
|
+
logger9.debug(`[Graph API] \u{1F4CA} Document not found, searching in fragments`);
|
|
4956
|
+
const allFragments = await service.getMemories({
|
|
4957
|
+
tableName: "knowledge",
|
|
4958
|
+
count: 5e4
|
|
4959
|
+
// Reduced from 100000 - still high enough for large documents
|
|
4960
|
+
});
|
|
4961
|
+
logger9.debug(`[Graph API] \u{1F4CA} Total fragments in DB: ${allFragments.length}`);
|
|
4962
|
+
let fragment = allFragments.find((frag) => frag.id === nodeId && frag.roomId === agentId);
|
|
4963
|
+
if (!fragment) {
|
|
4964
|
+
logger9.debug(`[Graph API] \u{1F4CA} Fragment not found with roomId filter, trying without filter`);
|
|
4965
|
+
fragment = allFragments.find((frag) => frag.id === nodeId);
|
|
4966
|
+
if (fragment) {
|
|
4967
|
+
logger9.warn(
|
|
4968
|
+
`[Graph API] \u26A0\uFE0F Fragment ${nodeId} found but has different roomId: ${fragment.roomId} vs ${agentId}`
|
|
4969
|
+
);
|
|
4970
|
+
}
|
|
4971
|
+
}
|
|
4972
|
+
if (fragment) {
|
|
4973
|
+
logger9.info(`[Graph API] \u2705 Found fragment: ${nodeId}`);
|
|
4974
|
+
sendSuccess(res, {
|
|
4975
|
+
id: fragment.id,
|
|
4976
|
+
type: "fragment",
|
|
4977
|
+
content: fragment.content,
|
|
4978
|
+
metadata: fragment.metadata,
|
|
4979
|
+
createdAt: fragment.createdAt,
|
|
4980
|
+
entityId: fragment.entityId,
|
|
4981
|
+
roomId: fragment.roomId,
|
|
4982
|
+
agentId: fragment.agentId,
|
|
4983
|
+
worldId: fragment.worldId
|
|
4984
|
+
});
|
|
4985
|
+
return;
|
|
4986
|
+
}
|
|
4987
|
+
logger9.error(`[Graph API] \u274C Node ${nodeId} not found in documents or fragments`);
|
|
4988
|
+
sendError(res, 404, "NOT_FOUND", `Node with ID ${nodeId} not found`);
|
|
4989
|
+
} catch (error) {
|
|
4990
|
+
logger9.error(`[Graph API] \u274C Error fetching node details for ${nodeId}:`, error);
|
|
4991
|
+
sendError(res, 500, "GRAPH_ERROR", "Failed to fetch node details", error.message);
|
|
4992
|
+
}
|
|
4993
|
+
}
|
|
4994
|
+
async function expandDocumentGraphHandler(req, res, runtime) {
|
|
4995
|
+
const service = runtime.getService(KnowledgeService.serviceType);
|
|
4996
|
+
if (!service) {
|
|
4997
|
+
return sendError(res, 500, "SERVICE_NOT_FOUND", "KnowledgeService not found");
|
|
4998
|
+
}
|
|
4999
|
+
const documentId = req.params.documentId;
|
|
5000
|
+
const agentId = req.query.agentId || runtime.agentId;
|
|
5001
|
+
if (!documentId || documentId.length < 36) {
|
|
5002
|
+
return sendError(res, 400, "INVALID_ID", "Invalid document ID format");
|
|
5003
|
+
}
|
|
5004
|
+
try {
|
|
5005
|
+
logger9.debug(`[Graph API] \u{1F4CA} Expanding document: ${documentId}, agent: ${agentId}`);
|
|
5006
|
+
const allFragments = await service.getMemories({
|
|
5007
|
+
tableName: "knowledge",
|
|
5008
|
+
roomId: agentId,
|
|
5009
|
+
// Filter by agent
|
|
5010
|
+
count: 5e4
|
|
5011
|
+
// Reduced from 100000 - still high enough for large documents
|
|
5012
|
+
});
|
|
5013
|
+
logger9.debug(`[Graph API] \u{1F4CA} Total fragments in knowledge table: ${allFragments.length}`);
|
|
5014
|
+
if (allFragments.length > 0 && process.env.NODE_ENV !== "production") {
|
|
5015
|
+
logger9.debug(
|
|
5016
|
+
`[Graph API] \u{1F4CA} Sample fragment metadata: ${JSON.stringify(allFragments[0].metadata)}`
|
|
5017
|
+
);
|
|
5018
|
+
const uniqueTypes = new Set(allFragments.map((f) => f.metadata?.type));
|
|
5019
|
+
logger9.debug(
|
|
5020
|
+
`[Graph API] \u{1F4CA} Unique metadata types found in knowledge table: ${JSON.stringify(Array.from(uniqueTypes))}`
|
|
5021
|
+
);
|
|
5022
|
+
const relevantFragments = allFragments.filter((fragment) => {
|
|
5023
|
+
const metadata = fragment.metadata;
|
|
5024
|
+
const hasDocumentId = metadata?.documentId === documentId;
|
|
5025
|
+
if (hasDocumentId) {
|
|
5026
|
+
logger9.debug(
|
|
5027
|
+
`[Graph API] \u{1F4CA} Fragment ${fragment.id} metadata: ${JSON.stringify(metadata)}`
|
|
5028
|
+
);
|
|
5029
|
+
}
|
|
5030
|
+
return hasDocumentId;
|
|
5031
|
+
});
|
|
5032
|
+
logger9.debug(
|
|
5033
|
+
`[Graph API] \u{1F4CA} Fragments with matching documentId: ${relevantFragments.length}`
|
|
5034
|
+
);
|
|
5035
|
+
}
|
|
5036
|
+
const documentFragments = allFragments.filter((fragment) => {
|
|
5037
|
+
const metadata = fragment.metadata;
|
|
5038
|
+
const typeString = typeof metadata?.type === "string" ? metadata.type : null;
|
|
5039
|
+
const isFragment = typeString && typeString.toLowerCase() === "fragment" || metadata?.type === MemoryType4.FRAGMENT || // If no type but has documentId, assume it's a fragment
|
|
5040
|
+
!metadata?.type && metadata?.documentId;
|
|
5041
|
+
return metadata?.documentId === documentId && isFragment;
|
|
5042
|
+
});
|
|
5043
|
+
const nodes = documentFragments.filter((frag) => frag.id !== void 0).map((frag) => ({
|
|
5044
|
+
id: frag.id,
|
|
5045
|
+
type: "fragment"
|
|
5046
|
+
}));
|
|
5047
|
+
const links = documentFragments.filter((frag) => frag.id !== void 0).map((frag) => ({
|
|
5048
|
+
source: documentId,
|
|
5049
|
+
target: frag.id
|
|
5050
|
+
}));
|
|
5051
|
+
logger9.info(`[Graph API] \u{1F4CA} Found ${nodes.length} fragments for document ${documentId}`);
|
|
5052
|
+
sendSuccess(res, {
|
|
5053
|
+
documentId,
|
|
5054
|
+
nodes,
|
|
5055
|
+
links,
|
|
5056
|
+
fragmentCount: nodes.length
|
|
5057
|
+
});
|
|
5058
|
+
} catch (error) {
|
|
5059
|
+
logger9.error(`[Graph API] \u274C Error expanding document ${documentId}:`, error);
|
|
5060
|
+
sendError(res, 500, "GRAPH_ERROR", "Failed to expand document", error.message);
|
|
5061
|
+
}
|
|
5062
|
+
}
|
|
4805
5063
|
async function uploadKnowledgeWithMulter(req, res, runtime) {
|
|
4806
5064
|
const upload = createUploadMiddleware(runtime);
|
|
4807
5065
|
const uploadArray = upload.array(
|
|
@@ -4858,6 +5116,22 @@ var knowledgeRoutes = [
|
|
|
4858
5116
|
type: "GET",
|
|
4859
5117
|
path: "/search",
|
|
4860
5118
|
handler: searchKnowledgeHandler
|
|
5119
|
+
},
|
|
5120
|
+
// New graph routes
|
|
5121
|
+
{
|
|
5122
|
+
type: "GET",
|
|
5123
|
+
path: "/graph/nodes",
|
|
5124
|
+
handler: getGraphNodesHandler
|
|
5125
|
+
},
|
|
5126
|
+
{
|
|
5127
|
+
type: "GET",
|
|
5128
|
+
path: "/graph/node/:nodeId",
|
|
5129
|
+
handler: getGraphNodeDetailsHandler
|
|
5130
|
+
},
|
|
5131
|
+
{
|
|
5132
|
+
type: "GET",
|
|
5133
|
+
path: "/graph/expand/:documentId",
|
|
5134
|
+
handler: expandDocumentGraphHandler
|
|
4861
5135
|
}
|
|
4862
5136
|
];
|
|
4863
5137
|
|