@elizaos/plugin-bootstrap 1.7.3-alpha.2 → 1.7.3-alpha.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +1267 -415
- package/dist/index.js.map +23 -20
- package/package.json +5 -5
package/dist/index.js.map
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../../node_modules/unique-names-generator/dist/index.js", "../src/index.ts", "../../../node_modules/uuid/dist-node/stringify.js", "../../../node_modules/uuid/dist-node/rng.js", "../../../node_modules/uuid/dist-node/native.js", "../../../node_modules/uuid/dist-node/v4.js", "../src/actions/imageGeneration.ts", "../src/actions/choice.ts", "../src/actions/followRoom.ts", "../src/actions/ignore.ts", "../src/actions/muteRoom.ts", "../src/actions/none.ts", "../src/actions/reply.ts", "../src/actions/roles.ts", "../src/actions/sendMessage.ts", "../src/actions/settings.ts", "../../../node_modules/dedent/dist/dedent.mjs", "../src/actions/unfollowRoom.ts", "../src/actions/unmuteRoom.ts", "../src/actions/updateEntity.ts", "../src/evaluators/reflection.ts", "../src/providers/actions.ts", "../src/providers/actionState.ts", "../src/providers/anxiety.ts", "../src/providers/attachments.ts", "../src/providers/capabilities.ts", "../src/providers/character.ts", "../src/providers/choice.ts", "../src/providers/entities.ts", "../src/providers/evaluators.ts", "../src/providers/facts.ts", "../src/providers/providers.ts", "../src/providers/recentMessages.ts", "../src/providers/relationships.ts", "../src/providers/roles.ts", "../src/providers/settings.ts", "../src/providers/time.ts", "../src/providers/world.ts", "../src/services/task.ts", "../src/services/embedding.ts"],
|
|
3
|
+
"sources": ["../../../node_modules/unique-names-generator/dist/index.js", "../src/index.ts", "../../../node_modules/uuid/dist-node/stringify.js", "../../../node_modules/uuid/dist-node/rng.js", "../../../node_modules/uuid/dist-node/native.js", "../../../node_modules/uuid/dist-node/v4.js", "../src/actions/imageGeneration.ts", "../src/actions/choice.ts", "../src/actions/followRoom.ts", "../src/actions/ignore.ts", "../src/actions/muteRoom.ts", "../src/actions/none.ts", "../src/actions/reply.ts", "../src/actions/roles.ts", "../src/actions/sendMessage.ts", "../src/actions/settings.ts", "../../../node_modules/dedent/dist/dedent.mjs", "../src/actions/unfollowRoom.ts", "../src/actions/unmuteRoom.ts", "../src/actions/updateEntity.ts", "../src/evaluators/reflection.ts", "../src/providers/actions.ts", "../src/providers/actionState.ts", "../src/providers/anxiety.ts", "../src/providers/attachments.ts", "../src/providers/capabilities.ts", "../src/providers/character.ts", "../src/providers/shared-cache.ts", "../src/providers/choice.ts", "../src/providers/entities.ts", "../src/providers/evaluators.ts", "../src/providers/facts.ts", "../src/providers/providers.ts", "../src/providers/recentMessages.ts", "../src/providers/relationships.ts", "../src/providers/roles.ts", "../src/providers/settings.ts", "../src/providers/time.ts", "../src/providers/world.ts", "../src/providers/plugin-info.ts", "../src/services/task.ts", "../src/services/embedding.ts", "../src/banner.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"const a=a=>{a=1831565813+(a|=0)|0;let e=Math.imul(a^a>>>15,1|a);return e=e+Math.imul(e^e>>>7,61|e)^e,((e^e>>>14)>>>0)/4294967296};class e{constructor(a){this.dictionaries=void 0,this.length=void 0,this.separator=void 0,this.style=void 0,this.seed=void 0;const{length:e,separator:i,dictionaries:n,style:l,seed:r}=a;this.dictionaries=n,this.separator=i,this.length=e,this.style=l,this.seed=r}generate(){if(!this.dictionaries)throw new Error('Cannot find any dictionary. Please provide at least one, or leave the \"dictionary\" field empty in the config object');if(this.length<=0)throw new Error(\"Invalid length provided\");if(this.length>this.dictionaries.length)throw new Error(`The length cannot be bigger than the number of dictionaries.\\nLength provided: ${this.length}. Number of dictionaries provided: ${this.dictionaries.length}`);let e=this.seed;return this.dictionaries.slice(0,this.length).reduce((i,n)=>{let l;e?(l=(e=>{if(\"string\"==typeof e){const i=e.split(\"\").map(a=>a.charCodeAt(0)).reduce((a,e)=>a+e,1),n=Math.floor(Number(i));return a(n)}return a(e)})(e),e=4294967296*l):l=Math.random();let r=n[Math.floor(l*n.length)]||\"\";if(\"lowerCase\"===this.style)r=r.toLowerCase();else if(\"capital\"===this.style){const[a,...e]=r.split(\"\");r=a.toUpperCase()+e.join(\"\")}else\"upperCase\"===this.style&&(r=r.toUpperCase());return i?`${i}${this.separator}${r}`:`${r}`},\"\")}}const i={separator:\"_\",dictionaries:[]};exports.NumberDictionary=class{static generate(a={}){let e=a.min||1,i=a.max||999;if(a.length){const n=Math.pow(10,a.length);return e=n/10,i=n-1,[`${Math.floor(Math.random()*(i-e))+e}`]}return[`${Math.floor(Math.random()*(i-e))+e}`]}},exports.adjectives=[\"able\",\"above\",\"absent\",\"absolute\",\"abstract\",\"abundant\",\"academic\",\"acceptable\",\"accepted\",\"accessible\",\"accurate\",\"accused\",\"active\",\"actual\",\"acute\",\"added\",\"additional\",\"adequate\",\"adjacent\",\"administrative\",\"adorable\",\"advanced\",\"adverse\",\"advisory\",\"aesthetic\",\"afraid\",\"aggregate\",\"aggressive\",\"agreeable\",\"agreed\",\"agricultural\",\"alert\",\"alive\",\"alleged\",\"allied\",\"alone\",\"alright\",\"alternative\",\"amateur\",\"amazing\",\"ambitious\",\"amused\",\"ancient\",\"angry\",\"annoyed\",\"annual\",\"anonymous\",\"anxious\",\"appalling\",\"apparent\",\"applicable\",\"appropriate\",\"arbitrary\",\"architectural\",\"armed\",\"arrogant\",\"artificial\",\"artistic\",\"ashamed\",\"asleep\",\"assistant\",\"associated\",\"atomic\",\"attractive\",\"automatic\",\"autonomous\",\"available\",\"average\",\"awake\",\"aware\",\"awful\",\"awkward\",\"back\",\"bad\",\"balanced\",\"bare\",\"basic\",\"beautiful\",\"beneficial\",\"better\",\"bewildered\",\"big\",\"binding\",\"biological\",\"bitter\",\"bizarre\",\"blank\",\"blind\",\"blonde\",\"bloody\",\"blushing\",\"boiling\",\"bold\",\"bored\",\"boring\",\"bottom\",\"brainy\",\"brave\",\"breakable\",\"breezy\",\"brief\",\"bright\",\"brilliant\",\"broad\",\"broken\",\"bumpy\",\"burning\",\"busy\",\"calm\",\"capable\",\"capitalist\",\"careful\",\"casual\",\"causal\",\"cautious\",\"central\",\"certain\",\"changing\",\"characteristic\",\"charming\",\"cheap\",\"cheerful\",\"chemical\",\"chief\",\"chilly\",\"chosen\",\"christian\",\"chronic\",\"chubby\",\"circular\",\"civic\",\"civil\",\"civilian\",\"classic\",\"classical\",\"clean\",\"clear\",\"clever\",\"clinical\",\"close\",\"closed\",\"cloudy\",\"clumsy\",\"coastal\",\"cognitive\",\"coherent\",\"cold\",\"collective\",\"colonial\",\"colorful\",\"colossal\",\"coloured\",\"colourful\",\"combative\",\"combined\",\"comfortable\",\"coming\",\"commercial\",\"common\",\"communist\",\"compact\",\"comparable\",\"comparative\",\"compatible\",\"competent\",\"competitive\",\"complete\",\"complex\",\"complicated\",\"comprehensive\",\"compulsory\",\"conceptual\",\"concerned\",\"concrete\",\"condemned\",\"confident\",\"confidential\",\"confused\",\"conscious\",\"conservation\",\"conservative\",\"considerable\",\"consistent\",\"constant\",\"constitutional\",\"contemporary\",\"content\",\"continental\",\"continued\",\"continuing\",\"continuous\",\"controlled\",\"controversial\",\"convenient\",\"conventional\",\"convinced\",\"convincing\",\"cooing\",\"cool\",\"cooperative\",\"corporate\",\"correct\",\"corresponding\",\"costly\",\"courageous\",\"crazy\",\"creative\",\"creepy\",\"criminal\",\"critical\",\"crooked\",\"crowded\",\"crucial\",\"crude\",\"cruel\",\"cuddly\",\"cultural\",\"curious\",\"curly\",\"current\",\"curved\",\"cute\",\"daily\",\"damaged\",\"damp\",\"dangerous\",\"dark\",\"dead\",\"deaf\",\"deafening\",\"dear\",\"decent\",\"decisive\",\"deep\",\"defeated\",\"defensive\",\"defiant\",\"definite\",\"deliberate\",\"delicate\",\"delicious\",\"delighted\",\"delightful\",\"democratic\",\"dependent\",\"depressed\",\"desirable\",\"desperate\",\"detailed\",\"determined\",\"developed\",\"developing\",\"devoted\",\"different\",\"difficult\",\"digital\",\"diplomatic\",\"direct\",\"dirty\",\"disabled\",\"disappointed\",\"disastrous\",\"disciplinary\",\"disgusted\",\"distant\",\"distinct\",\"distinctive\",\"distinguished\",\"disturbed\",\"disturbing\",\"diverse\",\"divine\",\"dizzy\",\"domestic\",\"dominant\",\"double\",\"doubtful\",\"drab\",\"dramatic\",\"dreadful\",\"driving\",\"drunk\",\"dry\",\"dual\",\"due\",\"dull\",\"dusty\",\"dutch\",\"dying\",\"dynamic\",\"eager\",\"early\",\"eastern\",\"easy\",\"economic\",\"educational\",\"eerie\",\"effective\",\"efficient\",\"elaborate\",\"elated\",\"elderly\",\"eldest\",\"electoral\",\"electric\",\"electrical\",\"electronic\",\"elegant\",\"eligible\",\"embarrassed\",\"embarrassing\",\"emotional\",\"empirical\",\"empty\",\"enchanting\",\"encouraging\",\"endless\",\"energetic\",\"enormous\",\"enthusiastic\",\"entire\",\"entitled\",\"envious\",\"environmental\",\"equal\",\"equivalent\",\"essential\",\"established\",\"estimated\",\"ethical\",\"ethnic\",\"eventual\",\"everyday\",\"evident\",\"evil\",\"evolutionary\",\"exact\",\"excellent\",\"exceptional\",\"excess\",\"excessive\",\"excited\",\"exciting\",\"exclusive\",\"existing\",\"exotic\",\"expected\",\"expensive\",\"experienced\",\"experimental\",\"explicit\",\"extended\",\"extensive\",\"external\",\"extra\",\"extraordinary\",\"extreme\",\"exuberant\",\"faint\",\"fair\",\"faithful\",\"familiar\",\"famous\",\"fancy\",\"fantastic\",\"far\",\"fascinating\",\"fashionable\",\"fast\",\"fat\",\"fatal\",\"favourable\",\"favourite\",\"federal\",\"fellow\",\"female\",\"feminist\",\"few\",\"fierce\",\"filthy\",\"final\",\"financial\",\"fine\",\"firm\",\"fiscal\",\"fit\",\"fixed\",\"flaky\",\"flat\",\"flexible\",\"fluffy\",\"fluttering\",\"flying\",\"following\",\"fond\",\"foolish\",\"foreign\",\"formal\",\"formidable\",\"forthcoming\",\"fortunate\",\"forward\",\"fragile\",\"frail\",\"frantic\",\"free\",\"frequent\",\"fresh\",\"friendly\",\"frightened\",\"front\",\"frozen\",\"full\",\"fun\",\"functional\",\"fundamental\",\"funny\",\"furious\",\"future\",\"fuzzy\",\"gastric\",\"gay\",\"general\",\"generous\",\"genetic\",\"gentle\",\"genuine\",\"geographical\",\"giant\",\"gigantic\",\"given\",\"glad\",\"glamorous\",\"gleaming\",\"global\",\"glorious\",\"golden\",\"good\",\"gorgeous\",\"gothic\",\"governing\",\"graceful\",\"gradual\",\"grand\",\"grateful\",\"greasy\",\"great\",\"grieving\",\"grim\",\"gross\",\"grotesque\",\"growing\",\"grubby\",\"grumpy\",\"guilty\",\"handicapped\",\"handsome\",\"happy\",\"hard\",\"harsh\",\"head\",\"healthy\",\"heavy\",\"helpful\",\"helpless\",\"hidden\",\"high\",\"hilarious\",\"hissing\",\"historic\",\"historical\",\"hollow\",\"holy\",\"homeless\",\"homely\",\"hon\",\"honest\",\"horizontal\",\"horrible\",\"hostile\",\"hot\",\"huge\",\"human\",\"hungry\",\"hurt\",\"hushed\",\"husky\",\"icy\",\"ideal\",\"identical\",\"ideological\",\"ill\",\"illegal\",\"imaginative\",\"immediate\",\"immense\",\"imperial\",\"implicit\",\"important\",\"impossible\",\"impressed\",\"impressive\",\"improved\",\"inadequate\",\"inappropriate\",\"inc\",\"inclined\",\"increased\",\"increasing\",\"incredible\",\"independent\",\"indirect\",\"individual\",\"industrial\",\"inevitable\",\"influential\",\"informal\",\"inherent\",\"initial\",\"injured\",\"inland\",\"inner\",\"innocent\",\"innovative\",\"inquisitive\",\"instant\",\"institutional\",\"insufficient\",\"intact\",\"integral\",\"integrated\",\"intellectual\",\"intelligent\",\"intense\",\"intensive\",\"interested\",\"interesting\",\"interim\",\"interior\",\"intermediate\",\"internal\",\"international\",\"intimate\",\"invisible\",\"involved\",\"irrelevant\",\"isolated\",\"itchy\",\"jealous\",\"jittery\",\"joint\",\"jolly\",\"joyous\",\"judicial\",\"juicy\",\"junior\",\"just\",\"keen\",\"key\",\"kind\",\"known\",\"labour\",\"large\",\"late\",\"latin\",\"lazy\",\"leading\",\"left\",\"legal\",\"legislative\",\"legitimate\",\"lengthy\",\"lesser\",\"level\",\"lexical\",\"liable\",\"liberal\",\"light\",\"like\",\"likely\",\"limited\",\"linear\",\"linguistic\",\"liquid\",\"literary\",\"little\",\"live\",\"lively\",\"living\",\"local\",\"logical\",\"lonely\",\"long\",\"loose\",\"lost\",\"loud\",\"lovely\",\"low\",\"loyal\",\"ltd\",\"lucky\",\"mad\",\"magic\",\"magnetic\",\"magnificent\",\"main\",\"major\",\"male\",\"mammoth\",\"managerial\",\"managing\",\"manual\",\"many\",\"marginal\",\"marine\",\"marked\",\"married\",\"marvellous\",\"marxist\",\"mass\",\"massive\",\"mathematical\",\"mature\",\"maximum\",\"mean\",\"meaningful\",\"mechanical\",\"medical\",\"medieval\",\"melodic\",\"melted\",\"mental\",\"mere\",\"metropolitan\",\"mid\",\"middle\",\"mighty\",\"mild\",\"military\",\"miniature\",\"minimal\",\"minimum\",\"ministerial\",\"minor\",\"miserable\",\"misleading\",\"missing\",\"misty\",\"mixed\",\"moaning\",\"mobile\",\"moderate\",\"modern\",\"modest\",\"molecular\",\"monetary\",\"monthly\",\"moral\",\"motionless\",\"muddy\",\"multiple\",\"mushy\",\"musical\",\"mute\",\"mutual\",\"mysterious\",\"naked\",\"narrow\",\"nasty\",\"national\",\"native\",\"natural\",\"naughty\",\"naval\",\"near\",\"nearby\",\"neat\",\"necessary\",\"negative\",\"neighbouring\",\"nervous\",\"net\",\"neutral\",\"new\",\"nice\",\"noble\",\"noisy\",\"normal\",\"northern\",\"nosy\",\"notable\",\"novel\",\"nuclear\",\"numerous\",\"nursing\",\"nutritious\",\"nutty\",\"obedient\",\"objective\",\"obliged\",\"obnoxious\",\"obvious\",\"occasional\",\"occupational\",\"odd\",\"official\",\"ok\",\"okay\",\"old\",\"olympic\",\"only\",\"open\",\"operational\",\"opposite\",\"optimistic\",\"oral\",\"ordinary\",\"organic\",\"organisational\",\"original\",\"orthodox\",\"other\",\"outdoor\",\"outer\",\"outrageous\",\"outside\",\"outstanding\",\"overall\",\"overseas\",\"overwhelming\",\"painful\",\"pale\",\"panicky\",\"parallel\",\"parental\",\"parliamentary\",\"partial\",\"particular\",\"passing\",\"passive\",\"past\",\"patient\",\"payable\",\"peaceful\",\"peculiar\",\"perfect\",\"permanent\",\"persistent\",\"personal\",\"petite\",\"philosophical\",\"physical\",\"plain\",\"planned\",\"plastic\",\"pleasant\",\"pleased\",\"poised\",\"polite\",\"political\",\"poor\",\"popular\",\"positive\",\"possible\",\"potential\",\"powerful\",\"practical\",\"precious\",\"precise\",\"preferred\",\"pregnant\",\"preliminary\",\"premier\",\"prepared\",\"present\",\"presidential\",\"pretty\",\"previous\",\"prickly\",\"primary\",\"prime\",\"primitive\",\"principal\",\"printed\",\"prior\",\"private\",\"probable\",\"productive\",\"professional\",\"profitable\",\"profound\",\"progressive\",\"prominent\",\"promising\",\"proper\",\"proposed\",\"prospective\",\"protective\",\"protestant\",\"proud\",\"provincial\",\"psychiatric\",\"psychological\",\"public\",\"puny\",\"pure\",\"purring\",\"puzzled\",\"quaint\",\"qualified\",\"quarrelsome\",\"querulous\",\"quick\",\"quickest\",\"quiet\",\"quintessential\",\"quixotic\",\"racial\",\"radical\",\"rainy\",\"random\",\"rapid\",\"rare\",\"raspy\",\"rational\",\"ratty\",\"raw\",\"ready\",\"real\",\"realistic\",\"rear\",\"reasonable\",\"recent\",\"reduced\",\"redundant\",\"regional\",\"registered\",\"regular\",\"regulatory\",\"related\",\"relative\",\"relaxed\",\"relevant\",\"reliable\",\"relieved\",\"religious\",\"reluctant\",\"remaining\",\"remarkable\",\"remote\",\"renewed\",\"representative\",\"repulsive\",\"required\",\"resident\",\"residential\",\"resonant\",\"respectable\",\"respective\",\"responsible\",\"resulting\",\"retail\",\"retired\",\"revolutionary\",\"rich\",\"ridiculous\",\"right\",\"rigid\",\"ripe\",\"rising\",\"rival\",\"roasted\",\"robust\",\"rolling\",\"romantic\",\"rotten\",\"rough\",\"round\",\"royal\",\"rubber\",\"rude\",\"ruling\",\"running\",\"rural\",\"sacred\",\"sad\",\"safe\",\"salty\",\"satisfactory\",\"satisfied\",\"scared\",\"scary\",\"scattered\",\"scientific\",\"scornful\",\"scrawny\",\"screeching\",\"secondary\",\"secret\",\"secure\",\"select\",\"selected\",\"selective\",\"selfish\",\"semantic\",\"senior\",\"sensible\",\"sensitive\",\"separate\",\"serious\",\"severe\",\"sexual\",\"shaggy\",\"shaky\",\"shallow\",\"shared\",\"sharp\",\"sheer\",\"shiny\",\"shivering\",\"shocked\",\"short\",\"shrill\",\"shy\",\"sick\",\"significant\",\"silent\",\"silky\",\"silly\",\"similar\",\"simple\",\"single\",\"skilled\",\"skinny\",\"sleepy\",\"slight\",\"slim\",\"slimy\",\"slippery\",\"slow\",\"small\",\"smart\",\"smiling\",\"smoggy\",\"smooth\",\"social\",\"socialist\",\"soft\",\"solar\",\"sole\",\"solid\",\"sophisticated\",\"sore\",\"sorry\",\"sound\",\"sour\",\"southern\",\"soviet\",\"spare\",\"sparkling\",\"spatial\",\"special\",\"specific\",\"specified\",\"spectacular\",\"spicy\",\"spiritual\",\"splendid\",\"spontaneous\",\"sporting\",\"spotless\",\"spotty\",\"square\",\"squealing\",\"stable\",\"stale\",\"standard\",\"static\",\"statistical\",\"statutory\",\"steady\",\"steep\",\"sticky\",\"stiff\",\"still\",\"stingy\",\"stormy\",\"straight\",\"straightforward\",\"strange\",\"strategic\",\"strict\",\"striking\",\"striped\",\"strong\",\"structural\",\"stuck\",\"stupid\",\"subjective\",\"subsequent\",\"substantial\",\"subtle\",\"successful\",\"successive\",\"sudden\",\"sufficient\",\"suitable\",\"sunny\",\"super\",\"superb\",\"superior\",\"supporting\",\"supposed\",\"supreme\",\"sure\",\"surprised\",\"surprising\",\"surrounding\",\"surviving\",\"suspicious\",\"sweet\",\"swift\",\"symbolic\",\"sympathetic\",\"systematic\",\"tall\",\"tame\",\"tart\",\"tasteless\",\"tasty\",\"technical\",\"technological\",\"teenage\",\"temporary\",\"tender\",\"tense\",\"terrible\",\"territorial\",\"testy\",\"then\",\"theoretical\",\"thick\",\"thin\",\"thirsty\",\"thorough\",\"thoughtful\",\"thoughtless\",\"thundering\",\"tight\",\"tiny\",\"tired\",\"top\",\"tory\",\"total\",\"tough\",\"toxic\",\"traditional\",\"tragic\",\"tremendous\",\"tricky\",\"tropical\",\"troubled\",\"typical\",\"ugliest\",\"ugly\",\"ultimate\",\"unable\",\"unacceptable\",\"unaware\",\"uncertain\",\"unchanged\",\"uncomfortable\",\"unconscious\",\"underground\",\"underlying\",\"unemployed\",\"uneven\",\"unexpected\",\"unfair\",\"unfortunate\",\"unhappy\",\"uniform\",\"uninterested\",\"unique\",\"united\",\"universal\",\"unknown\",\"unlikely\",\"unnecessary\",\"unpleasant\",\"unsightly\",\"unusual\",\"unwilling\",\"upper\",\"upset\",\"uptight\",\"urban\",\"urgent\",\"used\",\"useful\",\"useless\",\"usual\",\"vague\",\"valid\",\"valuable\",\"variable\",\"varied\",\"various\",\"varying\",\"vast\",\"verbal\",\"vertical\",\"very\",\"vicarious\",\"vicious\",\"victorious\",\"violent\",\"visible\",\"visiting\",\"visual\",\"vital\",\"vitreous\",\"vivacious\",\"vivid\",\"vocal\",\"vocational\",\"voiceless\",\"voluminous\",\"voluntary\",\"vulnerable\",\"wandering\",\"warm\",\"wasteful\",\"watery\",\"weak\",\"wealthy\",\"weary\",\"wee\",\"weekly\",\"weird\",\"welcome\",\"well\",\"western\",\"wet\",\"whispering\",\"whole\",\"wicked\",\"wide\",\"widespread\",\"wild\",\"wilful\",\"willing\",\"willowy\",\"wily\",\"wise\",\"wispy\",\"wittering\",\"witty\",\"wonderful\",\"wooden\",\"working\",\"worldwide\",\"worried\",\"worrying\",\"worthwhile\",\"worthy\",\"written\",\"wrong\",\"xenacious\",\"xenial\",\"xenogeneic\",\"xenophobic\",\"xeric\",\"xerothermic\",\"yabbering\",\"yammering\",\"yappiest\",\"yappy\",\"yawning\",\"yearling\",\"yearning\",\"yeasty\",\"yelling\",\"yelping\",\"yielding\",\"yodelling\",\"young\",\"youngest\",\"youthful\",\"ytterbic\",\"yucky\",\"yummy\",\"zany\",\"zealous\",\"zeroth\",\"zestful\",\"zesty\",\"zippy\",\"zonal\",\"zoophagous\",\"zygomorphic\",\"zygotic\"],exports.animals=[\"aardvark\",\"aardwolf\",\"albatross\",\"alligator\",\"alpaca\",\"amphibian\",\"anaconda\",\"angelfish\",\"anglerfish\",\"ant\",\"anteater\",\"antelope\",\"antlion\",\"ape\",\"aphid\",\"armadillo\",\"asp\",\"baboon\",\"badger\",\"bandicoot\",\"barnacle\",\"barracuda\",\"basilisk\",\"bass\",\"bat\",\"bear\",\"beaver\",\"bedbug\",\"bee\",\"beetle\",\"bird\",\"bison\",\"blackbird\",\"boa\",\"boar\",\"bobcat\",\"bobolink\",\"bonobo\",\"booby\",\"bovid\",\"bug\",\"butterfly\",\"buzzard\",\"camel\",\"canid\",\"canidae\",\"capybara\",\"cardinal\",\"caribou\",\"carp\",\"cat\",\"caterpillar\",\"catfish\",\"catshark\",\"cattle\",\"centipede\",\"cephalopod\",\"chameleon\",\"cheetah\",\"chickadee\",\"chicken\",\"chimpanzee\",\"chinchilla\",\"chipmunk\",\"cicada\",\"clam\",\"clownfish\",\"cobra\",\"cockroach\",\"cod\",\"condor\",\"constrictor\",\"coral\",\"cougar\",\"cow\",\"coyote\",\"crab\",\"crane\",\"crawdad\",\"crayfish\",\"cricket\",\"crocodile\",\"crow\",\"cuckoo\",\"damselfly\",\"deer\",\"dingo\",\"dinosaur\",\"dog\",\"dolphin\",\"donkey\",\"dormouse\",\"dove\",\"dragon\",\"dragonfly\",\"duck\",\"eagle\",\"earthworm\",\"earwig\",\"echidna\",\"eel\",\"egret\",\"elephant\",\"elk\",\"emu\",\"ermine\",\"falcon\",\"felidae\",\"ferret\",\"finch\",\"firefly\",\"fish\",\"flamingo\",\"flea\",\"fly\",\"flyingfish\",\"fowl\",\"fox\",\"frog\",\"galliform\",\"gamefowl\",\"gayal\",\"gazelle\",\"gecko\",\"gerbil\",\"gibbon\",\"giraffe\",\"goat\",\"goldfish\",\"goose\",\"gopher\",\"gorilla\",\"grasshopper\",\"grouse\",\"guan\",\"guanaco\",\"guineafowl\",\"gull\",\"guppy\",\"haddock\",\"halibut\",\"hamster\",\"hare\",\"harrier\",\"hawk\",\"hedgehog\",\"heron\",\"herring\",\"hippopotamus\",\"hookworm\",\"hornet\",\"horse\",\"hoverfly\",\"hummingbird\",\"hyena\",\"iguana\",\"impala\",\"jackal\",\"jaguar\",\"jay\",\"jellyfish\",\"junglefowl\",\"kangaroo\",\"kingfisher\",\"kite\",\"kiwi\",\"koala\",\"koi\",\"krill\",\"ladybug\",\"lamprey\",\"landfowl\",\"lark\",\"leech\",\"lemming\",\"lemur\",\"leopard\",\"leopon\",\"limpet\",\"lion\",\"lizard\",\"llama\",\"lobster\",\"locust\",\"loon\",\"louse\",\"lungfish\",\"lynx\",\"macaw\",\"mackerel\",\"magpie\",\"mammal\",\"manatee\",\"mandrill\",\"marlin\",\"marmoset\",\"marmot\",\"marsupial\",\"marten\",\"mastodon\",\"meadowlark\",\"meerkat\",\"mink\",\"minnow\",\"mite\",\"mockingbird\",\"mole\",\"mollusk\",\"mongoose\",\"monkey\",\"moose\",\"mosquito\",\"moth\",\"mouse\",\"mule\",\"muskox\",\"narwhal\",\"newt\",\"nightingale\",\"ocelot\",\"octopus\",\"opossum\",\"orangutan\",\"orca\",\"ostrich\",\"otter\",\"owl\",\"ox\",\"panda\",\"panther\",\"parakeet\",\"parrot\",\"parrotfish\",\"partridge\",\"peacock\",\"peafowl\",\"pelican\",\"penguin\",\"perch\",\"pheasant\",\"pig\",\"pigeon\",\"pike\",\"pinniped\",\"piranha\",\"planarian\",\"platypus\",\"pony\",\"porcupine\",\"porpoise\",\"possum\",\"prawn\",\"primate\",\"ptarmigan\",\"puffin\",\"puma\",\"python\",\"quail\",\"quelea\",\"quokka\",\"rabbit\",\"raccoon\",\"rat\",\"rattlesnake\",\"raven\",\"reindeer\",\"reptile\",\"rhinoceros\",\"roadrunner\",\"rodent\",\"rook\",\"rooster\",\"roundworm\",\"sailfish\",\"salamander\",\"salmon\",\"sawfish\",\"scallop\",\"scorpion\",\"seahorse\",\"shark\",\"sheep\",\"shrew\",\"shrimp\",\"silkworm\",\"silverfish\",\"skink\",\"skunk\",\"sloth\",\"slug\",\"smelt\",\"snail\",\"snake\",\"snipe\",\"sole\",\"sparrow\",\"spider\",\"spoonbill\",\"squid\",\"squirrel\",\"starfish\",\"stingray\",\"stoat\",\"stork\",\"sturgeon\",\"swallow\",\"swan\",\"swift\",\"swordfish\",\"swordtail\",\"tahr\",\"takin\",\"tapir\",\"tarantula\",\"tarsier\",\"termite\",\"tern\",\"thrush\",\"tick\",\"tiger\",\"tiglon\",\"toad\",\"tortoise\",\"toucan\",\"trout\",\"tuna\",\"turkey\",\"turtle\",\"tyrannosaurus\",\"unicorn\",\"urial\",\"vicuna\",\"viper\",\"vole\",\"vulture\",\"wallaby\",\"walrus\",\"warbler\",\"wasp\",\"weasel\",\"whale\",\"whippet\",\"whitefish\",\"wildcat\",\"wildebeest\",\"wildfowl\",\"wolf\",\"wolverine\",\"wombat\",\"woodpecker\",\"worm\",\"wren\",\"xerinae\",\"yak\",\"zebra\"],exports.colors=[\"amaranth\",\"amber\",\"amethyst\",\"apricot\",\"aqua\",\"aquamarine\",\"azure\",\"beige\",\"black\",\"blue\",\"blush\",\"bronze\",\"brown\",\"chocolate\",\"coffee\",\"copper\",\"coral\",\"crimson\",\"cyan\",\"emerald\",\"fuchsia\",\"gold\",\"gray\",\"green\",\"harlequin\",\"indigo\",\"ivory\",\"jade\",\"lavender\",\"lime\",\"magenta\",\"maroon\",\"moccasin\",\"olive\",\"orange\",\"peach\",\"pink\",\"plum\",\"purple\",\"red\",\"rose\",\"salmon\",\"sapphire\",\"scarlet\",\"silver\",\"tan\",\"teal\",\"tomato\",\"turquoise\",\"violet\",\"white\",\"yellow\"],exports.countries=[\"Afghanistan\",\"Åland Islands\",\"Albania\",\"Algeria\",\"American Samoa\",\"Andorra\",\"Angola\",\"Anguilla\",\"Antarctica\",\"Antigua & Barbuda\",\"Argentina\",\"Armenia\",\"Aruba\",\"Ascension Island\",\"Australia\",\"Austria\",\"Azerbaijan\",\"Bahamas\",\"Bahrain\",\"Bangladesh\",\"Barbados\",\"Belarus\",\"Belgium\",\"Belize\",\"Benin\",\"Bermuda\",\"Bhutan\",\"Bolivia\",\"Bosnia & Herzegovina\",\"Botswana\",\"Brazil\",\"British Indian Ocean Territory\",\"British Virgin Islands\",\"Brunei\",\"Bulgaria\",\"Burkina Faso\",\"Burundi\",\"Cambodia\",\"Cameroon\",\"Canada\",\"Canary Islands\",\"Cape Verde\",\"Caribbean Netherlands\",\"Cayman Islands\",\"Central African Republic\",\"Ceuta & Melilla\",\"Chad\",\"Chile\",\"China\",\"Christmas Island\",\"Cocos Islands\",\"Colombia\",\"Comoros\",\"Congo\",\"Cook Islands\",\"Costa Rica\",\"Côte d'Ivoire\",\"Croatia\",\"Cuba\",\"Curaçao\",\"Cyprus\",\"Czechia\",\"Denmark\",\"Diego Garcia\",\"Djibouti\",\"Dominica\",\"Dominican Republic\",\"Ecuador\",\"Egypt\",\"El Salvador\",\"Equatorial Guinea\",\"Eritrea\",\"Estonia\",\"Ethiopia\",\"Eurozone\",\"Falkland Islands\",\"Faroe Islands\",\"Fiji\",\"Finland\",\"France\",\"French Guiana\",\"French Polynesia\",\"French Southern Territories\",\"Gabon\",\"Gambia\",\"Georgia\",\"Germany\",\"Ghana\",\"Gibraltar\",\"Greece\",\"Greenland\",\"Grenada\",\"Guadeloupe\",\"Guam\",\"Guatemala\",\"Guernsey\",\"Guinea\",\"Guinea-Bissau\",\"Guyana\",\"Haiti\",\"Honduras\",\"Hong Kong SAR China\",\"Hungary\",\"Iceland\",\"India\",\"Indonesia\",\"Iran\",\"Iraq\",\"Ireland\",\"Isle of Man\",\"Israel\",\"Italy\",\"Jamaica\",\"Japan\",\"Jersey\",\"Jordan\",\"Kazakhstan\",\"Kenya\",\"Kiribati\",\"Kosovo\",\"Kuwait\",\"Kyrgyzstan\",\"Laos\",\"Latvia\",\"Lebanon\",\"Lesotho\",\"Liberia\",\"Libya\",\"Liechtenstein\",\"Lithuania\",\"Luxembourg\",\"Macau SAR China\",\"Macedonia\",\"Madagascar\",\"Malawi\",\"Malaysia\",\"Maldives\",\"Mali\",\"Malta\",\"Marshall Islands\",\"Martinique\",\"Mauritania\",\"Mauritius\",\"Mayotte\",\"Mexico\",\"Micronesia\",\"Moldova\",\"Monaco\",\"Mongolia\",\"Montenegro\",\"Montserrat\",\"Morocco\",\"Mozambique\",\"Myanmar\",\"Namibia\",\"Nauru\",\"Nepal\",\"Netherlands\",\"New Caledonia\",\"New Zealand\",\"Nicaragua\",\"Niger\",\"Nigeria\",\"Niue\",\"Norfolk Island\",\"North Korea\",\"Northern Mariana Islands\",\"Norway\",\"Oman\",\"Pakistan\",\"Palau\",\"Palestinian Territories\",\"Panama\",\"Papua New Guinea\",\"Paraguay\",\"Peru\",\"Philippines\",\"Pitcairn Islands\",\"Poland\",\"Portugal\",\"Puerto Rico\",\"Qatar\",\"Réunion\",\"Romania\",\"Russia\",\"Rwanda\",\"Samoa\",\"San Marino\",\"São Tomé & Príncipe\",\"Saudi Arabia\",\"Senegal\",\"Serbia\",\"Seychelles\",\"Sierra Leone\",\"Singapore\",\"Sint Maarten\",\"Slovakia\",\"Slovenia\",\"Solomon Islands\",\"Somalia\",\"South Africa\",\"South Georgia & South Sandwich Islands\",\"South Korea\",\"South Sudan\",\"Spain\",\"Sri Lanka\",\"St. Barthélemy\",\"St. Helena\",\"St. Kitts & Nevis\",\"St. Lucia\",\"St. Martin\",\"St. Pierre & Miquelon\",\"St. Vincent & Grenadines\",\"Sudan\",\"Suriname\",\"Svalbard & Jan Mayen\",\"Swaziland\",\"Sweden\",\"Switzerland\",\"Syria\",\"Taiwan\",\"Tajikistan\",\"Tanzania\",\"Thailand\",\"Timor-Leste\",\"Togo\",\"Tokelau\",\"Tonga\",\"Trinidad & Tobago\",\"Tristan da Cunha\",\"Tunisia\",\"Turkey\",\"Turkmenistan\",\"Turks & Caicos Islands\",\"Tuvalu\",\"U.S. Outlying Islands\",\"U.S. Virgin Islands\",\"Uganda\",\"Ukraine\",\"United Arab Emirates\",\"United Kingdom\",\"United Nations\",\"United States\",\"Uruguay\",\"Uzbekistan\",\"Vanuatu\",\"Vatican City\",\"Venezuela\",\"Vietnam\",\"Wallis & Futuna\",\"Western Sahara\",\"Yemen\",\"Zambia\",\"Zimbabwe\"],exports.languages=[\"Akan\",\"Amharic\",\"Arabic\",\"Assamese\",\"Awadhi\",\"Azerbaijani\",\"Balochi\",\"Belarusian\",\"Bengali\",\"Bhojpuri\",\"Burmese\",\"Cebuano\",\"Chewa\",\"Chhattisgarhi\",\"Chittagonian\",\"Czech\",\"Deccan\",\"Dhundhari\",\"Dutch\",\"English\",\"French\",\"Fula\",\"Gan\",\"German\",\"Greek\",\"Gujarati\",\"Hakka\",\"Haryanvi\",\"Hausa\",\"Hiligaynon\",\"Hindi\",\"Hmong\",\"Hungarian\",\"Igbo\",\"Ilocano\",\"Italian\",\"Japanese\",\"Javanese\",\"Jin\",\"Kannada\",\"Kazakh\",\"Khmer\",\"Kinyarwanda\",\"Kirundi\",\"Konkani\",\"Korean\",\"Kurdish\",\"Madurese\",\"Magahi\",\"Maithili\",\"Malagasy\",\"Malay\",\"Malayalam\",\"Mandarin\",\"Marathi\",\"Marwari\",\"Min\",\"Mossi\",\"Nepali\",\"Odia\",\"Oromo\",\"Pashto\",\"Persian\",\"Polish\",\"Portuguese\",\"Punjabi\",\"Quechua\",\"Romanian\",\"Russian\",\"Saraiki\",\"Shona\",\"Sindhi\",\"Sinhala\",\"Somali\",\"Spanish\",\"Sundanese\",\"Swedish\",\"Sylheti\",\"Tagalog\",\"Tamil\",\"Telugu\",\"Thai\",\"Turkish\",\"Turkmen\",\"Ukrainian\",\"Urdu\",\"Uyghur\",\"Uzbek\",\"Vietnamese\",\"Wu\",\"Xhosa\",\"Xiang\",\"Yoruba\",\"Yue\",\"Zhuang\",\"Zulu\"],exports.names=[\"Aaren\",\"Aarika\",\"Abagael\",\"Abagail\",\"Abbe\",\"Abbey\",\"Abbi\",\"Abbie\",\"Abby\",\"Abbye\",\"Abigael\",\"Abigail\",\"Abigale\",\"Abra\",\"Ada\",\"Adah\",\"Adaline\",\"Adan\",\"Adara\",\"Adda\",\"Addi\",\"Addia\",\"Addie\",\"Addy\",\"Adel\",\"Adela\",\"Adelaida\",\"Adelaide\",\"Adele\",\"Adelheid\",\"Adelice\",\"Adelina\",\"Adelind\",\"Adeline\",\"Adella\",\"Adelle\",\"Adena\",\"Adey\",\"Adi\",\"Adiana\",\"Adina\",\"Adora\",\"Adore\",\"Adoree\",\"Adorne\",\"Adrea\",\"Adria\",\"Adriaens\",\"Adrian\",\"Adriana\",\"Adriane\",\"Adrianna\",\"Adrianne\",\"Adriena\",\"Adrienne\",\"Aeriel\",\"Aeriela\",\"Aeriell\",\"Afton\",\"Ag\",\"Agace\",\"Agata\",\"Agatha\",\"Agathe\",\"Aggi\",\"Aggie\",\"Aggy\",\"Agna\",\"Agnella\",\"Agnes\",\"Agnese\",\"Agnesse\",\"Agneta\",\"Agnola\",\"Agretha\",\"Aida\",\"Aidan\",\"Aigneis\",\"Aila\",\"Aile\",\"Ailee\",\"Aileen\",\"Ailene\",\"Ailey\",\"Aili\",\"Ailina\",\"Ailis\",\"Ailsun\",\"Ailyn\",\"Aime\",\"Aimee\",\"Aimil\",\"Aindrea\",\"Ainslee\",\"Ainsley\",\"Ainslie\",\"Ajay\",\"Alaine\",\"Alameda\",\"Alana\",\"Alanah\",\"Alane\",\"Alanna\",\"Alayne\",\"Alberta\",\"Albertina\",\"Albertine\",\"Albina\",\"Alecia\",\"Aleda\",\"Aleece\",\"Aleen\",\"Alejandra\",\"Alejandrina\",\"Alena\",\"Alene\",\"Alessandra\",\"Aleta\",\"Alethea\",\"Alex\",\"Alexa\",\"Alexandra\",\"Alexandrina\",\"Alexi\",\"Alexia\",\"Alexina\",\"Alexine\",\"Alexis\",\"Alfi\",\"Alfie\",\"Alfreda\",\"Alfy\",\"Ali\",\"Alia\",\"Alica\",\"Alice\",\"Alicea\",\"Alicia\",\"Alida\",\"Alidia\",\"Alie\",\"Alika\",\"Alikee\",\"Alina\",\"Aline\",\"Alis\",\"Alisa\",\"Alisha\",\"Alison\",\"Alissa\",\"Alisun\",\"Alix\",\"Aliza\",\"Alla\",\"Alleen\",\"Allegra\",\"Allene\",\"Alli\",\"Allianora\",\"Allie\",\"Allina\",\"Allis\",\"Allison\",\"Allissa\",\"Allix\",\"Allsun\",\"Allx\",\"Ally\",\"Allyce\",\"Allyn\",\"Allys\",\"Allyson\",\"Alma\",\"Almeda\",\"Almeria\",\"Almeta\",\"Almira\",\"Almire\",\"Aloise\",\"Aloisia\",\"Aloysia\",\"Alta\",\"Althea\",\"Alvera\",\"Alverta\",\"Alvina\",\"Alvinia\",\"Alvira\",\"Alyce\",\"Alyda\",\"Alys\",\"Alysa\",\"Alyse\",\"Alysia\",\"Alyson\",\"Alyss\",\"Alyssa\",\"Amabel\",\"Amabelle\",\"Amalea\",\"Amalee\",\"Amaleta\",\"Amalia\",\"Amalie\",\"Amalita\",\"Amalle\",\"Amanda\",\"Amandi\",\"Amandie\",\"Amandy\",\"Amara\",\"Amargo\",\"Amata\",\"Amber\",\"Amberly\",\"Ambur\",\"Ame\",\"Amelia\",\"Amelie\",\"Amelina\",\"Ameline\",\"Amelita\",\"Ami\",\"Amie\",\"Amii\",\"Amil\",\"Amitie\",\"Amity\",\"Ammamaria\",\"Amy\",\"Amye\",\"Ana\",\"Anabal\",\"Anabel\",\"Anabella\",\"Anabelle\",\"Analiese\",\"Analise\",\"Anallese\",\"Anallise\",\"Anastasia\",\"Anastasie\",\"Anastassia\",\"Anatola\",\"Andee\",\"Andeee\",\"Anderea\",\"Andi\",\"Andie\",\"Andra\",\"Andrea\",\"Andreana\",\"Andree\",\"Andrei\",\"Andria\",\"Andriana\",\"Andriette\",\"Andromache\",\"Andy\",\"Anestassia\",\"Anet\",\"Anett\",\"Anetta\",\"Anette\",\"Ange\",\"Angel\",\"Angela\",\"Angele\",\"Angelia\",\"Angelica\",\"Angelika\",\"Angelina\",\"Angeline\",\"Angelique\",\"Angelita\",\"Angelle\",\"Angie\",\"Angil\",\"Angy\",\"Ania\",\"Anica\",\"Anissa\",\"Anita\",\"Anitra\",\"Anjanette\",\"Anjela\",\"Ann\",\"Ann-marie\",\"Anna\",\"Anna-diana\",\"Anna-diane\",\"Anna-maria\",\"Annabal\",\"Annabel\",\"Annabela\",\"Annabell\",\"Annabella\",\"Annabelle\",\"Annadiana\",\"Annadiane\",\"Annalee\",\"Annaliese\",\"Annalise\",\"Annamaria\",\"Annamarie\",\"Anne\",\"Anne-corinne\",\"Anne-marie\",\"Annecorinne\",\"Anneliese\",\"Annelise\",\"Annemarie\",\"Annetta\",\"Annette\",\"Anni\",\"Annice\",\"Annie\",\"Annis\",\"Annissa\",\"Annmaria\",\"Annmarie\",\"Annnora\",\"Annora\",\"Anny\",\"Anselma\",\"Ansley\",\"Anstice\",\"Anthe\",\"Anthea\",\"Anthia\",\"Anthiathia\",\"Antoinette\",\"Antonella\",\"Antonetta\",\"Antonia\",\"Antonie\",\"Antonietta\",\"Antonina\",\"Anya\",\"Appolonia\",\"April\",\"Aprilette\",\"Ara\",\"Arabel\",\"Arabela\",\"Arabele\",\"Arabella\",\"Arabelle\",\"Arda\",\"Ardath\",\"Ardeen\",\"Ardelia\",\"Ardelis\",\"Ardella\",\"Ardelle\",\"Arden\",\"Ardene\",\"Ardenia\",\"Ardine\",\"Ardis\",\"Ardisj\",\"Ardith\",\"Ardra\",\"Ardyce\",\"Ardys\",\"Ardyth\",\"Aretha\",\"Ariadne\",\"Ariana\",\"Aridatha\",\"Ariel\",\"Ariela\",\"Ariella\",\"Arielle\",\"Arlana\",\"Arlee\",\"Arleen\",\"Arlen\",\"Arlena\",\"Arlene\",\"Arleta\",\"Arlette\",\"Arleyne\",\"Arlie\",\"Arliene\",\"Arlina\",\"Arlinda\",\"Arline\",\"Arluene\",\"Arly\",\"Arlyn\",\"Arlyne\",\"Aryn\",\"Ashely\",\"Ashia\",\"Ashien\",\"Ashil\",\"Ashla\",\"Ashlan\",\"Ashlee\",\"Ashleigh\",\"Ashlen\",\"Ashley\",\"Ashli\",\"Ashlie\",\"Ashly\",\"Asia\",\"Astra\",\"Astrid\",\"Astrix\",\"Atalanta\",\"Athena\",\"Athene\",\"Atlanta\",\"Atlante\",\"Auberta\",\"Aubine\",\"Aubree\",\"Aubrette\",\"Aubrey\",\"Aubrie\",\"Aubry\",\"Audi\",\"Audie\",\"Audra\",\"Audre\",\"Audrey\",\"Audrie\",\"Audry\",\"Audrye\",\"Audy\",\"Augusta\",\"Auguste\",\"Augustina\",\"Augustine\",\"Aundrea\",\"Aura\",\"Aurea\",\"Aurel\",\"Aurelea\",\"Aurelia\",\"Aurelie\",\"Auria\",\"Aurie\",\"Aurilia\",\"Aurlie\",\"Auroora\",\"Aurora\",\"Aurore\",\"Austin\",\"Austina\",\"Austine\",\"Ava\",\"Aveline\",\"Averil\",\"Averyl\",\"Avie\",\"Avis\",\"Aviva\",\"Avivah\",\"Avril\",\"Avrit\",\"Ayn\",\"Bab\",\"Babara\",\"Babb\",\"Babbette\",\"Babbie\",\"Babette\",\"Babita\",\"Babs\",\"Bambi\",\"Bambie\",\"Bamby\",\"Barb\",\"Barbabra\",\"Barbara\",\"Barbara-anne\",\"Barbaraanne\",\"Barbe\",\"Barbee\",\"Barbette\",\"Barbey\",\"Barbi\",\"Barbie\",\"Barbra\",\"Barby\",\"Bari\",\"Barrie\",\"Barry\",\"Basia\",\"Bathsheba\",\"Batsheva\",\"Bea\",\"Beatrice\",\"Beatrisa\",\"Beatrix\",\"Beatriz\",\"Bebe\",\"Becca\",\"Becka\",\"Becki\",\"Beckie\",\"Becky\",\"Bee\",\"Beilul\",\"Beitris\",\"Bekki\",\"Bel\",\"Belia\",\"Belicia\",\"Belinda\",\"Belita\",\"Bell\",\"Bella\",\"Bellanca\",\"Belle\",\"Bellina\",\"Belva\",\"Belvia\",\"Bendite\",\"Benedetta\",\"Benedicta\",\"Benedikta\",\"Benetta\",\"Benita\",\"Benni\",\"Bennie\",\"Benny\",\"Benoite\",\"Berenice\",\"Beret\",\"Berget\",\"Berna\",\"Bernadene\",\"Bernadette\",\"Bernadina\",\"Bernadine\",\"Bernardina\",\"Bernardine\",\"Bernelle\",\"Bernete\",\"Bernetta\",\"Bernette\",\"Berni\",\"Bernice\",\"Bernie\",\"Bernita\",\"Berny\",\"Berri\",\"Berrie\",\"Berry\",\"Bert\",\"Berta\",\"Berte\",\"Bertha\",\"Berthe\",\"Berti\",\"Bertie\",\"Bertina\",\"Bertine\",\"Berty\",\"Beryl\",\"Beryle\",\"Bess\",\"Bessie\",\"Bessy\",\"Beth\",\"Bethanne\",\"Bethany\",\"Bethena\",\"Bethina\",\"Betsey\",\"Betsy\",\"Betta\",\"Bette\",\"Bette-ann\",\"Betteann\",\"Betteanne\",\"Betti\",\"Bettina\",\"Bettine\",\"Betty\",\"Bettye\",\"Beulah\",\"Bev\",\"Beverie\",\"Beverlee\",\"Beverley\",\"Beverlie\",\"Beverly\",\"Bevvy\",\"Bianca\",\"Bianka\",\"Bibbie\",\"Bibby\",\"Bibbye\",\"Bibi\",\"Biddie\",\"Biddy\",\"Bidget\",\"Bili\",\"Bill\",\"Billi\",\"Billie\",\"Billy\",\"Billye\",\"Binni\",\"Binnie\",\"Binny\",\"Bird\",\"Birdie\",\"Birgit\",\"Birgitta\",\"Blair\",\"Blaire\",\"Blake\",\"Blakelee\",\"Blakeley\",\"Blanca\",\"Blanch\",\"Blancha\",\"Blanche\",\"Blinni\",\"Blinnie\",\"Blinny\",\"Bliss\",\"Blisse\",\"Blithe\",\"Blondell\",\"Blondelle\",\"Blondie\",\"Blondy\",\"Blythe\",\"Bobbe\",\"Bobbee\",\"Bobbette\",\"Bobbi\",\"Bobbie\",\"Bobby\",\"Bobbye\",\"Bobette\",\"Bobina\",\"Bobine\",\"Bobinette\",\"Bonita\",\"Bonnee\",\"Bonni\",\"Bonnibelle\",\"Bonnie\",\"Bonny\",\"Brana\",\"Brandais\",\"Brande\",\"Brandea\",\"Brandi\",\"Brandice\",\"Brandie\",\"Brandise\",\"Brandy\",\"Breanne\",\"Brear\",\"Bree\",\"Breena\",\"Bren\",\"Brena\",\"Brenda\",\"Brenn\",\"Brenna\",\"Brett\",\"Bria\",\"Briana\",\"Brianna\",\"Brianne\",\"Bride\",\"Bridget\",\"Bridgette\",\"Bridie\",\"Brier\",\"Brietta\",\"Brigid\",\"Brigida\",\"Brigit\",\"Brigitta\",\"Brigitte\",\"Brina\",\"Briney\",\"Brinn\",\"Brinna\",\"Briny\",\"Brit\",\"Brita\",\"Britney\",\"Britni\",\"Britt\",\"Britta\",\"Brittan\",\"Brittaney\",\"Brittani\",\"Brittany\",\"Britte\",\"Britteny\",\"Brittne\",\"Brittney\",\"Brittni\",\"Brook\",\"Brooke\",\"Brooks\",\"Brunhilda\",\"Brunhilde\",\"Bryana\",\"Bryn\",\"Bryna\",\"Brynn\",\"Brynna\",\"Brynne\",\"Buffy\",\"Bunni\",\"Bunnie\",\"Bunny\",\"Cacilia\",\"Cacilie\",\"Cahra\",\"Cairistiona\",\"Caitlin\",\"Caitrin\",\"Cal\",\"Calida\",\"Calla\",\"Calley\",\"Calli\",\"Callida\",\"Callie\",\"Cally\",\"Calypso\",\"Cam\",\"Camala\",\"Camel\",\"Camella\",\"Camellia\",\"Cami\",\"Camila\",\"Camile\",\"Camilla\",\"Camille\",\"Cammi\",\"Cammie\",\"Cammy\",\"Candace\",\"Candi\",\"Candice\",\"Candida\",\"Candide\",\"Candie\",\"Candis\",\"Candra\",\"Candy\",\"Caprice\",\"Cara\",\"Caralie\",\"Caren\",\"Carena\",\"Caresa\",\"Caressa\",\"Caresse\",\"Carey\",\"Cari\",\"Caria\",\"Carie\",\"Caril\",\"Carilyn\",\"Carin\",\"Carina\",\"Carine\",\"Cariotta\",\"Carissa\",\"Carita\",\"Caritta\",\"Carla\",\"Carlee\",\"Carleen\",\"Carlen\",\"Carlene\",\"Carley\",\"Carlie\",\"Carlin\",\"Carlina\",\"Carline\",\"Carlita\",\"Carlota\",\"Carlotta\",\"Carly\",\"Carlye\",\"Carlyn\",\"Carlynn\",\"Carlynne\",\"Carma\",\"Carmel\",\"Carmela\",\"Carmelia\",\"Carmelina\",\"Carmelita\",\"Carmella\",\"Carmelle\",\"Carmen\",\"Carmencita\",\"Carmina\",\"Carmine\",\"Carmita\",\"Carmon\",\"Caro\",\"Carol\",\"Carol-jean\",\"Carola\",\"Carolan\",\"Carolann\",\"Carole\",\"Carolee\",\"Carolin\",\"Carolina\",\"Caroline\",\"Caroljean\",\"Carolyn\",\"Carolyne\",\"Carolynn\",\"Caron\",\"Carree\",\"Carri\",\"Carrie\",\"Carrissa\",\"Carroll\",\"Carry\",\"Cary\",\"Caryl\",\"Caryn\",\"Casandra\",\"Casey\",\"Casi\",\"Casie\",\"Cass\",\"Cassandra\",\"Cassandre\",\"Cassandry\",\"Cassaundra\",\"Cassey\",\"Cassi\",\"Cassie\",\"Cassondra\",\"Cassy\",\"Catarina\",\"Cate\",\"Caterina\",\"Catha\",\"Catharina\",\"Catharine\",\"Cathe\",\"Cathee\",\"Catherin\",\"Catherina\",\"Catherine\",\"Cathi\",\"Cathie\",\"Cathleen\",\"Cathlene\",\"Cathrin\",\"Cathrine\",\"Cathryn\",\"Cathy\",\"Cathyleen\",\"Cati\",\"Catie\",\"Catina\",\"Catlaina\",\"Catlee\",\"Catlin\",\"Catrina\",\"Catriona\",\"Caty\",\"Caye\",\"Cayla\",\"Cecelia\",\"Cecil\",\"Cecile\",\"Ceciley\",\"Cecilia\",\"Cecilla\",\"Cecily\",\"Ceil\",\"Cele\",\"Celene\",\"Celesta\",\"Celeste\",\"Celestia\",\"Celestina\",\"Celestine\",\"Celestyn\",\"Celestyna\",\"Celia\",\"Celie\",\"Celina\",\"Celinda\",\"Celine\",\"Celinka\",\"Celisse\",\"Celka\",\"Celle\",\"Cesya\",\"Chad\",\"Chanda\",\"Chandal\",\"Chandra\",\"Channa\",\"Chantal\",\"Chantalle\",\"Charil\",\"Charin\",\"Charis\",\"Charissa\",\"Charisse\",\"Charita\",\"Charity\",\"Charla\",\"Charlean\",\"Charleen\",\"Charlena\",\"Charlene\",\"Charline\",\"Charlot\",\"Charlotta\",\"Charlotte\",\"Charmain\",\"Charmaine\",\"Charmane\",\"Charmian\",\"Charmine\",\"Charmion\",\"Charo\",\"Charyl\",\"Chastity\",\"Chelsae\",\"Chelsea\",\"Chelsey\",\"Chelsie\",\"Chelsy\",\"Cher\",\"Chere\",\"Cherey\",\"Cheri\",\"Cherianne\",\"Cherice\",\"Cherida\",\"Cherie\",\"Cherilyn\",\"Cherilynn\",\"Cherin\",\"Cherise\",\"Cherish\",\"Cherlyn\",\"Cherri\",\"Cherrita\",\"Cherry\",\"Chery\",\"Cherye\",\"Cheryl\",\"Cheslie\",\"Chiarra\",\"Chickie\",\"Chicky\",\"Chiquia\",\"Chiquita\",\"Chlo\",\"Chloe\",\"Chloette\",\"Chloris\",\"Chris\",\"Chrissie\",\"Chrissy\",\"Christa\",\"Christabel\",\"Christabella\",\"Christal\",\"Christalle\",\"Christan\",\"Christean\",\"Christel\",\"Christen\",\"Christi\",\"Christian\",\"Christiana\",\"Christiane\",\"Christie\",\"Christin\",\"Christina\",\"Christine\",\"Christy\",\"Christye\",\"Christyna\",\"Chrysa\",\"Chrysler\",\"Chrystal\",\"Chryste\",\"Chrystel\",\"Cicely\",\"Cicily\",\"Ciel\",\"Cilka\",\"Cinda\",\"Cindee\",\"Cindelyn\",\"Cinderella\",\"Cindi\",\"Cindie\",\"Cindra\",\"Cindy\",\"Cinnamon\",\"Cissiee\",\"Cissy\",\"Clair\",\"Claire\",\"Clara\",\"Clarabelle\",\"Clare\",\"Claresta\",\"Clareta\",\"Claretta\",\"Clarette\",\"Clarey\",\"Clari\",\"Claribel\",\"Clarice\",\"Clarie\",\"Clarinda\",\"Clarine\",\"Clarissa\",\"Clarisse\",\"Clarita\",\"Clary\",\"Claude\",\"Claudelle\",\"Claudetta\",\"Claudette\",\"Claudia\",\"Claudie\",\"Claudina\",\"Claudine\",\"Clea\",\"Clem\",\"Clemence\",\"Clementia\",\"Clementina\",\"Clementine\",\"Clemmie\",\"Clemmy\",\"Cleo\",\"Cleopatra\",\"Clerissa\",\"Clio\",\"Clo\",\"Cloe\",\"Cloris\",\"Clotilda\",\"Clovis\",\"Codee\",\"Codi\",\"Codie\",\"Cody\",\"Coleen\",\"Colene\",\"Coletta\",\"Colette\",\"Colleen\",\"Collen\",\"Collete\",\"Collette\",\"Collie\",\"Colline\",\"Colly\",\"Con\",\"Concettina\",\"Conchita\",\"Concordia\",\"Conni\",\"Connie\",\"Conny\",\"Consolata\",\"Constance\",\"Constancia\",\"Constancy\",\"Constanta\",\"Constantia\",\"Constantina\",\"Constantine\",\"Consuela\",\"Consuelo\",\"Cookie\",\"Cora\",\"Corabel\",\"Corabella\",\"Corabelle\",\"Coral\",\"Coralie\",\"Coraline\",\"Coralyn\",\"Cordelia\",\"Cordelie\",\"Cordey\",\"Cordi\",\"Cordie\",\"Cordula\",\"Cordy\",\"Coreen\",\"Corella\",\"Corenda\",\"Corene\",\"Coretta\",\"Corette\",\"Corey\",\"Cori\",\"Corie\",\"Corilla\",\"Corina\",\"Corine\",\"Corinna\",\"Corinne\",\"Coriss\",\"Corissa\",\"Corliss\",\"Corly\",\"Cornela\",\"Cornelia\",\"Cornelle\",\"Cornie\",\"Corny\",\"Correna\",\"Correy\",\"Corri\",\"Corrianne\",\"Corrie\",\"Corrina\",\"Corrine\",\"Corrinne\",\"Corry\",\"Cortney\",\"Cory\",\"Cosetta\",\"Cosette\",\"Costanza\",\"Courtenay\",\"Courtnay\",\"Courtney\",\"Crin\",\"Cris\",\"Crissie\",\"Crissy\",\"Crista\",\"Cristabel\",\"Cristal\",\"Cristen\",\"Cristi\",\"Cristie\",\"Cristin\",\"Cristina\",\"Cristine\",\"Cristionna\",\"Cristy\",\"Crysta\",\"Crystal\",\"Crystie\",\"Cthrine\",\"Cyb\",\"Cybil\",\"Cybill\",\"Cymbre\",\"Cynde\",\"Cyndi\",\"Cyndia\",\"Cyndie\",\"Cyndy\",\"Cynthea\",\"Cynthia\",\"Cynthie\",\"Cynthy\",\"Dacey\",\"Dacia\",\"Dacie\",\"Dacy\",\"Dael\",\"Daffi\",\"Daffie\",\"Daffy\",\"Dagmar\",\"Dahlia\",\"Daile\",\"Daisey\",\"Daisi\",\"Daisie\",\"Daisy\",\"Dale\",\"Dalenna\",\"Dalia\",\"Dalila\",\"Dallas\",\"Daloris\",\"Damara\",\"Damaris\",\"Damita\",\"Dana\",\"Danell\",\"Danella\",\"Danette\",\"Dani\",\"Dania\",\"Danica\",\"Danice\",\"Daniela\",\"Daniele\",\"Daniella\",\"Danielle\",\"Danika\",\"Danila\",\"Danit\",\"Danita\",\"Danna\",\"Danni\",\"Dannie\",\"Danny\",\"Dannye\",\"Danya\",\"Danyelle\",\"Danyette\",\"Daphene\",\"Daphna\",\"Daphne\",\"Dara\",\"Darb\",\"Darbie\",\"Darby\",\"Darcee\",\"Darcey\",\"Darci\",\"Darcie\",\"Darcy\",\"Darda\",\"Dareen\",\"Darell\",\"Darelle\",\"Dari\",\"Daria\",\"Darice\",\"Darla\",\"Darleen\",\"Darlene\",\"Darline\",\"Darlleen\",\"Daron\",\"Darrelle\",\"Darryl\",\"Darsey\",\"Darsie\",\"Darya\",\"Daryl\",\"Daryn\",\"Dasha\",\"Dasi\",\"Dasie\",\"Dasya\",\"Datha\",\"Daune\",\"Daveen\",\"Daveta\",\"Davida\",\"Davina\",\"Davine\",\"Davita\",\"Dawn\",\"Dawna\",\"Dayle\",\"Dayna\",\"Ddene\",\"De\",\"Deana\",\"Deane\",\"Deanna\",\"Deanne\",\"Deb\",\"Debbi\",\"Debbie\",\"Debby\",\"Debee\",\"Debera\",\"Debi\",\"Debor\",\"Debora\",\"Deborah\",\"Debra\",\"Dede\",\"Dedie\",\"Dedra\",\"Dee\",\"Deeann\",\"Deeanne\",\"Deedee\",\"Deena\",\"Deerdre\",\"Deeyn\",\"Dehlia\",\"Deidre\",\"Deina\",\"Deirdre\",\"Del\",\"Dela\",\"Delcina\",\"Delcine\",\"Delia\",\"Delila\",\"Delilah\",\"Delinda\",\"Dell\",\"Della\",\"Delly\",\"Delora\",\"Delores\",\"Deloria\",\"Deloris\",\"Delphine\",\"Delphinia\",\"Demeter\",\"Demetra\",\"Demetria\",\"Demetris\",\"Dena\",\"Deni\",\"Denice\",\"Denise\",\"Denna\",\"Denni\",\"Dennie\",\"Denny\",\"Deny\",\"Denys\",\"Denyse\",\"Deonne\",\"Desdemona\",\"Desirae\",\"Desiree\",\"Desiri\",\"Deva\",\"Devan\",\"Devi\",\"Devin\",\"Devina\",\"Devinne\",\"Devon\",\"Devondra\",\"Devonna\",\"Devonne\",\"Devora\",\"Di\",\"Diahann\",\"Dian\",\"Diana\",\"Diandra\",\"Diane\",\"Diane-marie\",\"Dianemarie\",\"Diann\",\"Dianna\",\"Dianne\",\"Diannne\",\"Didi\",\"Dido\",\"Diena\",\"Dierdre\",\"Dina\",\"Dinah\",\"Dinnie\",\"Dinny\",\"Dion\",\"Dione\",\"Dionis\",\"Dionne\",\"Dita\",\"Dix\",\"Dixie\",\"Dniren\",\"Dode\",\"Dodi\",\"Dodie\",\"Dody\",\"Doe\",\"Doll\",\"Dolley\",\"Dolli\",\"Dollie\",\"Dolly\",\"Dolores\",\"Dolorita\",\"Doloritas\",\"Domeniga\",\"Dominga\",\"Domini\",\"Dominica\",\"Dominique\",\"Dona\",\"Donella\",\"Donelle\",\"Donetta\",\"Donia\",\"Donica\",\"Donielle\",\"Donna\",\"Donnamarie\",\"Donni\",\"Donnie\",\"Donny\",\"Dora\",\"Doralia\",\"Doralin\",\"Doralyn\",\"Doralynn\",\"Doralynne\",\"Dore\",\"Doreen\",\"Dorelia\",\"Dorella\",\"Dorelle\",\"Dorena\",\"Dorene\",\"Doretta\",\"Dorette\",\"Dorey\",\"Dori\",\"Doria\",\"Dorian\",\"Dorice\",\"Dorie\",\"Dorine\",\"Doris\",\"Dorisa\",\"Dorise\",\"Dorita\",\"Doro\",\"Dorolice\",\"Dorolisa\",\"Dorotea\",\"Doroteya\",\"Dorothea\",\"Dorothee\",\"Dorothy\",\"Dorree\",\"Dorri\",\"Dorrie\",\"Dorris\",\"Dorry\",\"Dorthea\",\"Dorthy\",\"Dory\",\"Dosi\",\"Dot\",\"Doti\",\"Dotti\",\"Dottie\",\"Dotty\",\"Dre\",\"Dreddy\",\"Dredi\",\"Drona\",\"Dru\",\"Druci\",\"Drucie\",\"Drucill\",\"Drucy\",\"Drusi\",\"Drusie\",\"Drusilla\",\"Drusy\",\"Dulce\",\"Dulcea\",\"Dulci\",\"Dulcia\",\"Dulciana\",\"Dulcie\",\"Dulcine\",\"Dulcinea\",\"Dulcy\",\"Dulsea\",\"Dusty\",\"Dyan\",\"Dyana\",\"Dyane\",\"Dyann\",\"Dyanna\",\"Dyanne\",\"Dyna\",\"Dynah\",\"Eachelle\",\"Eada\",\"Eadie\",\"Eadith\",\"Ealasaid\",\"Eartha\",\"Easter\",\"Eba\",\"Ebba\",\"Ebonee\",\"Ebony\",\"Eda\",\"Eddi\",\"Eddie\",\"Eddy\",\"Ede\",\"Edee\",\"Edeline\",\"Eden\",\"Edi\",\"Edie\",\"Edin\",\"Edita\",\"Edith\",\"Editha\",\"Edithe\",\"Ediva\",\"Edna\",\"Edwina\",\"Edy\",\"Edyth\",\"Edythe\",\"Effie\",\"Eileen\",\"Eilis\",\"Eimile\",\"Eirena\",\"Ekaterina\",\"Elaina\",\"Elaine\",\"Elana\",\"Elane\",\"Elayne\",\"Elberta\",\"Elbertina\",\"Elbertine\",\"Eleanor\",\"Eleanora\",\"Eleanore\",\"Electra\",\"Eleen\",\"Elena\",\"Elene\",\"Eleni\",\"Elenore\",\"Eleonora\",\"Eleonore\",\"Elfie\",\"Elfreda\",\"Elfrida\",\"Elfrieda\",\"Elga\",\"Elianora\",\"Elianore\",\"Elicia\",\"Elie\",\"Elinor\",\"Elinore\",\"Elisa\",\"Elisabet\",\"Elisabeth\",\"Elisabetta\",\"Elise\",\"Elisha\",\"Elissa\",\"Elita\",\"Eliza\",\"Elizabet\",\"Elizabeth\",\"Elka\",\"Elke\",\"Ella\",\"Elladine\",\"Elle\",\"Ellen\",\"Ellene\",\"Ellette\",\"Elli\",\"Ellie\",\"Ellissa\",\"Elly\",\"Ellyn\",\"Ellynn\",\"Elmira\",\"Elna\",\"Elnora\",\"Elnore\",\"Eloisa\",\"Eloise\",\"Elonore\",\"Elora\",\"Elsa\",\"Elsbeth\",\"Else\",\"Elset\",\"Elsey\",\"Elsi\",\"Elsie\",\"Elsinore\",\"Elspeth\",\"Elsy\",\"Elva\",\"Elvera\",\"Elvina\",\"Elvira\",\"Elwira\",\"Elyn\",\"Elyse\",\"Elysee\",\"Elysha\",\"Elysia\",\"Elyssa\",\"Em\",\"Ema\",\"Emalee\",\"Emalia\",\"Emelda\",\"Emelia\",\"Emelina\",\"Emeline\",\"Emelita\",\"Emelyne\",\"Emera\",\"Emilee\",\"Emili\",\"Emilia\",\"Emilie\",\"Emiline\",\"Emily\",\"Emlyn\",\"Emlynn\",\"Emlynne\",\"Emma\",\"Emmalee\",\"Emmaline\",\"Emmalyn\",\"Emmalynn\",\"Emmalynne\",\"Emmeline\",\"Emmey\",\"Emmi\",\"Emmie\",\"Emmy\",\"Emmye\",\"Emogene\",\"Emyle\",\"Emylee\",\"Engracia\",\"Enid\",\"Enrica\",\"Enrichetta\",\"Enrika\",\"Enriqueta\",\"Eolanda\",\"Eolande\",\"Eran\",\"Erda\",\"Erena\",\"Erica\",\"Ericha\",\"Ericka\",\"Erika\",\"Erin\",\"Erina\",\"Erinn\",\"Erinna\",\"Erma\",\"Ermengarde\",\"Ermentrude\",\"Ermina\",\"Erminia\",\"Erminie\",\"Erna\",\"Ernaline\",\"Ernesta\",\"Ernestine\",\"Ertha\",\"Eryn\",\"Esma\",\"Esmaria\",\"Esme\",\"Esmeralda\",\"Essa\",\"Essie\",\"Essy\",\"Esta\",\"Estel\",\"Estele\",\"Estell\",\"Estella\",\"Estelle\",\"Ester\",\"Esther\",\"Estrella\",\"Estrellita\",\"Ethel\",\"Ethelda\",\"Ethelin\",\"Ethelind\",\"Etheline\",\"Ethelyn\",\"Ethyl\",\"Etta\",\"Etti\",\"Ettie\",\"Etty\",\"Eudora\",\"Eugenia\",\"Eugenie\",\"Eugine\",\"Eula\",\"Eulalie\",\"Eunice\",\"Euphemia\",\"Eustacia\",\"Eva\",\"Evaleen\",\"Evangelia\",\"Evangelin\",\"Evangelina\",\"Evangeline\",\"Evania\",\"Evanne\",\"Eve\",\"Eveleen\",\"Evelina\",\"Eveline\",\"Evelyn\",\"Evey\",\"Evie\",\"Evita\",\"Evonne\",\"Evvie\",\"Evvy\",\"Evy\",\"Eyde\",\"Eydie\",\"Ezmeralda\",\"Fae\",\"Faina\",\"Faith\",\"Fallon\",\"Fan\",\"Fanchette\",\"Fanchon\",\"Fancie\",\"Fancy\",\"Fanechka\",\"Fania\",\"Fanni\",\"Fannie\",\"Fanny\",\"Fanya\",\"Fara\",\"Farah\",\"Farand\",\"Farica\",\"Farra\",\"Farrah\",\"Farrand\",\"Faun\",\"Faunie\",\"Faustina\",\"Faustine\",\"Fawn\",\"Fawne\",\"Fawnia\",\"Fay\",\"Faydra\",\"Faye\",\"Fayette\",\"Fayina\",\"Fayre\",\"Fayth\",\"Faythe\",\"Federica\",\"Fedora\",\"Felecia\",\"Felicdad\",\"Felice\",\"Felicia\",\"Felicity\",\"Felicle\",\"Felipa\",\"Felisha\",\"Felita\",\"Feliza\",\"Fenelia\",\"Feodora\",\"Ferdinanda\",\"Ferdinande\",\"Fern\",\"Fernanda\",\"Fernande\",\"Fernandina\",\"Ferne\",\"Fey\",\"Fiann\",\"Fianna\",\"Fidela\",\"Fidelia\",\"Fidelity\",\"Fifi\",\"Fifine\",\"Filia\",\"Filide\",\"Filippa\",\"Fina\",\"Fiona\",\"Fionna\",\"Fionnula\",\"Fiorenze\",\"Fleur\",\"Fleurette\",\"Flo\",\"Flor\",\"Flora\",\"Florance\",\"Flore\",\"Florella\",\"Florence\",\"Florencia\",\"Florentia\",\"Florenza\",\"Florette\",\"Flori\",\"Floria\",\"Florida\",\"Florie\",\"Florina\",\"Florinda\",\"Floris\",\"Florri\",\"Florrie\",\"Florry\",\"Flory\",\"Flossi\",\"Flossie\",\"Flossy\",\"Flss\",\"Fran\",\"Francene\",\"Frances\",\"Francesca\",\"Francine\",\"Francisca\",\"Franciska\",\"Francoise\",\"Francyne\",\"Frank\",\"Frankie\",\"Franky\",\"Franni\",\"Frannie\",\"Franny\",\"Frayda\",\"Fred\",\"Freda\",\"Freddi\",\"Freddie\",\"Freddy\",\"Fredelia\",\"Frederica\",\"Fredericka\",\"Frederique\",\"Fredi\",\"Fredia\",\"Fredra\",\"Fredrika\",\"Freida\",\"Frieda\",\"Friederike\",\"Fulvia\",\"Gabbey\",\"Gabbi\",\"Gabbie\",\"Gabey\",\"Gabi\",\"Gabie\",\"Gabriel\",\"Gabriela\",\"Gabriell\",\"Gabriella\",\"Gabrielle\",\"Gabriellia\",\"Gabrila\",\"Gaby\",\"Gae\",\"Gael\",\"Gail\",\"Gale\",\"Galina\",\"Garland\",\"Garnet\",\"Garnette\",\"Gates\",\"Gavra\",\"Gavrielle\",\"Gay\",\"Gaye\",\"Gayel\",\"Gayla\",\"Gayle\",\"Gayleen\",\"Gaylene\",\"Gaynor\",\"Gelya\",\"Gena\",\"Gene\",\"Geneva\",\"Genevieve\",\"Genevra\",\"Genia\",\"Genna\",\"Genni\",\"Gennie\",\"Gennifer\",\"Genny\",\"Genovera\",\"Genvieve\",\"George\",\"Georgeanna\",\"Georgeanne\",\"Georgena\",\"Georgeta\",\"Georgetta\",\"Georgette\",\"Georgia\",\"Georgiana\",\"Georgianna\",\"Georgianne\",\"Georgie\",\"Georgina\",\"Georgine\",\"Geralda\",\"Geraldine\",\"Gerda\",\"Gerhardine\",\"Geri\",\"Gerianna\",\"Gerianne\",\"Gerladina\",\"Germain\",\"Germaine\",\"Germana\",\"Gerri\",\"Gerrie\",\"Gerrilee\",\"Gerry\",\"Gert\",\"Gerta\",\"Gerti\",\"Gertie\",\"Gertrud\",\"Gertruda\",\"Gertrude\",\"Gertrudis\",\"Gerty\",\"Giacinta\",\"Giana\",\"Gianina\",\"Gianna\",\"Gigi\",\"Gilberta\",\"Gilberte\",\"Gilbertina\",\"Gilbertine\",\"Gilda\",\"Gilemette\",\"Gill\",\"Gillan\",\"Gilli\",\"Gillian\",\"Gillie\",\"Gilligan\",\"Gilly\",\"Gina\",\"Ginelle\",\"Ginevra\",\"Ginger\",\"Ginni\",\"Ginnie\",\"Ginnifer\",\"Ginny\",\"Giorgia\",\"Giovanna\",\"Gipsy\",\"Giralda\",\"Gisela\",\"Gisele\",\"Gisella\",\"Giselle\",\"Giuditta\",\"Giulia\",\"Giulietta\",\"Giustina\",\"Gizela\",\"Glad\",\"Gladi\",\"Gladys\",\"Gleda\",\"Glen\",\"Glenda\",\"Glenine\",\"Glenn\",\"Glenna\",\"Glennie\",\"Glennis\",\"Glori\",\"Gloria\",\"Gloriana\",\"Gloriane\",\"Glory\",\"Glyn\",\"Glynda\",\"Glynis\",\"Glynnis\",\"Gnni\",\"Godiva\",\"Golda\",\"Goldarina\",\"Goldi\",\"Goldia\",\"Goldie\",\"Goldina\",\"Goldy\",\"Grace\",\"Gracia\",\"Gracie\",\"Grata\",\"Gratia\",\"Gratiana\",\"Gray\",\"Grayce\",\"Grazia\",\"Greer\",\"Greta\",\"Gretal\",\"Gretchen\",\"Grete\",\"Gretel\",\"Grethel\",\"Gretna\",\"Gretta\",\"Grier\",\"Griselda\",\"Grissel\",\"Guendolen\",\"Guenevere\",\"Guenna\",\"Guglielma\",\"Gui\",\"Guillema\",\"Guillemette\",\"Guinevere\",\"Guinna\",\"Gunilla\",\"Gus\",\"Gusella\",\"Gussi\",\"Gussie\",\"Gussy\",\"Gusta\",\"Gusti\",\"Gustie\",\"Gusty\",\"Gwen\",\"Gwendolen\",\"Gwendolin\",\"Gwendolyn\",\"Gweneth\",\"Gwenette\",\"Gwenneth\",\"Gwenni\",\"Gwennie\",\"Gwenny\",\"Gwenora\",\"Gwenore\",\"Gwyn\",\"Gwyneth\",\"Gwynne\",\"Gypsy\",\"Hadria\",\"Hailee\",\"Haily\",\"Haleigh\",\"Halette\",\"Haley\",\"Hali\",\"Halie\",\"Halimeda\",\"Halley\",\"Halli\",\"Hallie\",\"Hally\",\"Hana\",\"Hanna\",\"Hannah\",\"Hanni\",\"Hannie\",\"Hannis\",\"Hanny\",\"Happy\",\"Harlene\",\"Harley\",\"Harli\",\"Harlie\",\"Harmonia\",\"Harmonie\",\"Harmony\",\"Harri\",\"Harrie\",\"Harriet\",\"Harriett\",\"Harrietta\",\"Harriette\",\"Harriot\",\"Harriott\",\"Hatti\",\"Hattie\",\"Hatty\",\"Hayley\",\"Hazel\",\"Heath\",\"Heather\",\"Heda\",\"Hedda\",\"Heddi\",\"Heddie\",\"Hedi\",\"Hedvig\",\"Hedvige\",\"Hedwig\",\"Hedwiga\",\"Hedy\",\"Heida\",\"Heidi\",\"Heidie\",\"Helaina\",\"Helaine\",\"Helen\",\"Helen-elizabeth\",\"Helena\",\"Helene\",\"Helenka\",\"Helga\",\"Helge\",\"Helli\",\"Heloise\",\"Helsa\",\"Helyn\",\"Hendrika\",\"Henka\",\"Henrie\",\"Henrieta\",\"Henrietta\",\"Henriette\",\"Henryetta\",\"Hephzibah\",\"Hermia\",\"Hermina\",\"Hermine\",\"Herminia\",\"Hermione\",\"Herta\",\"Hertha\",\"Hester\",\"Hesther\",\"Hestia\",\"Hetti\",\"Hettie\",\"Hetty\",\"Hilary\",\"Hilda\",\"Hildagard\",\"Hildagarde\",\"Hilde\",\"Hildegaard\",\"Hildegarde\",\"Hildy\",\"Hillary\",\"Hilliary\",\"Hinda\",\"Holli\",\"Hollie\",\"Holly\",\"Holly-anne\",\"Hollyanne\",\"Honey\",\"Honor\",\"Honoria\",\"Hope\",\"Horatia\",\"Hortense\",\"Hortensia\",\"Hulda\",\"Hyacinth\",\"Hyacintha\",\"Hyacinthe\",\"Hyacinthia\",\"Hyacinthie\",\"Hynda\",\"Ianthe\",\"Ibbie\",\"Ibby\",\"Ida\",\"Idalia\",\"Idalina\",\"Idaline\",\"Idell\",\"Idelle\",\"Idette\",\"Ileana\",\"Ileane\",\"Ilene\",\"Ilise\",\"Ilka\",\"Illa\",\"Ilsa\",\"Ilse\",\"Ilysa\",\"Ilyse\",\"Ilyssa\",\"Imelda\",\"Imogen\",\"Imogene\",\"Imojean\",\"Ina\",\"Indira\",\"Ines\",\"Inesita\",\"Inessa\",\"Inez\",\"Inga\",\"Ingaberg\",\"Ingaborg\",\"Inge\",\"Ingeberg\",\"Ingeborg\",\"Inger\",\"Ingrid\",\"Ingunna\",\"Inna\",\"Iolande\",\"Iolanthe\",\"Iona\",\"Iormina\",\"Ira\",\"Irena\",\"Irene\",\"Irina\",\"Iris\",\"Irita\",\"Irma\",\"Isa\",\"Isabel\",\"Isabelita\",\"Isabella\",\"Isabelle\",\"Isadora\",\"Isahella\",\"Iseabal\",\"Isidora\",\"Isis\",\"Isobel\",\"Issi\",\"Issie\",\"Issy\",\"Ivett\",\"Ivette\",\"Ivie\",\"Ivonne\",\"Ivory\",\"Ivy\",\"Izabel\",\"Jacenta\",\"Jacinda\",\"Jacinta\",\"Jacintha\",\"Jacinthe\",\"Jackelyn\",\"Jacki\",\"Jackie\",\"Jacklin\",\"Jacklyn\",\"Jackquelin\",\"Jackqueline\",\"Jacky\",\"Jaclin\",\"Jaclyn\",\"Jacquelin\",\"Jacqueline\",\"Jacquelyn\",\"Jacquelynn\",\"Jacquenetta\",\"Jacquenette\",\"Jacquetta\",\"Jacquette\",\"Jacqui\",\"Jacquie\",\"Jacynth\",\"Jada\",\"Jade\",\"Jaime\",\"Jaimie\",\"Jaine\",\"Jami\",\"Jamie\",\"Jamima\",\"Jammie\",\"Jan\",\"Jana\",\"Janaya\",\"Janaye\",\"Jandy\",\"Jane\",\"Janean\",\"Janeczka\",\"Janeen\",\"Janel\",\"Janela\",\"Janella\",\"Janelle\",\"Janene\",\"Janenna\",\"Janessa\",\"Janet\",\"Janeta\",\"Janetta\",\"Janette\",\"Janeva\",\"Janey\",\"Jania\",\"Janice\",\"Janie\",\"Janifer\",\"Janina\",\"Janine\",\"Janis\",\"Janith\",\"Janka\",\"Janna\",\"Jannel\",\"Jannelle\",\"Janot\",\"Jany\",\"Jaquelin\",\"Jaquelyn\",\"Jaquenetta\",\"Jaquenette\",\"Jaquith\",\"Jasmin\",\"Jasmina\",\"Jasmine\",\"Jayme\",\"Jaymee\",\"Jayne\",\"Jaynell\",\"Jazmin\",\"Jean\",\"Jeana\",\"Jeane\",\"Jeanelle\",\"Jeanette\",\"Jeanie\",\"Jeanine\",\"Jeanna\",\"Jeanne\",\"Jeannette\",\"Jeannie\",\"Jeannine\",\"Jehanna\",\"Jelene\",\"Jemie\",\"Jemima\",\"Jemimah\",\"Jemmie\",\"Jemmy\",\"Jen\",\"Jena\",\"Jenda\",\"Jenelle\",\"Jeni\",\"Jenica\",\"Jeniece\",\"Jenifer\",\"Jeniffer\",\"Jenilee\",\"Jenine\",\"Jenn\",\"Jenna\",\"Jennee\",\"Jennette\",\"Jenni\",\"Jennica\",\"Jennie\",\"Jennifer\",\"Jennilee\",\"Jennine\",\"Jenny\",\"Jeralee\",\"Jere\",\"Jeri\",\"Jermaine\",\"Jerrie\",\"Jerrilee\",\"Jerrilyn\",\"Jerrine\",\"Jerry\",\"Jerrylee\",\"Jess\",\"Jessa\",\"Jessalin\",\"Jessalyn\",\"Jessamine\",\"Jessamyn\",\"Jesse\",\"Jesselyn\",\"Jessi\",\"Jessica\",\"Jessie\",\"Jessika\",\"Jessy\",\"Jewel\",\"Jewell\",\"Jewelle\",\"Jill\",\"Jillana\",\"Jillane\",\"Jillayne\",\"Jilleen\",\"Jillene\",\"Jilli\",\"Jillian\",\"Jillie\",\"Jilly\",\"Jinny\",\"Jo\",\"Jo-ann\",\"Jo-anne\",\"Joan\",\"Joana\",\"Joane\",\"Joanie\",\"Joann\",\"Joanna\",\"Joanne\",\"Joannes\",\"Jobey\",\"Jobi\",\"Jobie\",\"Jobina\",\"Joby\",\"Jobye\",\"Jobyna\",\"Jocelin\",\"Joceline\",\"Jocelyn\",\"Jocelyne\",\"Jodee\",\"Jodi\",\"Jodie\",\"Jody\",\"Joeann\",\"Joela\",\"Joelie\",\"Joell\",\"Joella\",\"Joelle\",\"Joellen\",\"Joelly\",\"Joellyn\",\"Joelynn\",\"Joete\",\"Joey\",\"Johanna\",\"Johannah\",\"Johna\",\"Johnath\",\"Johnette\",\"Johnna\",\"Joice\",\"Jojo\",\"Jolee\",\"Joleen\",\"Jolene\",\"Joletta\",\"Joli\",\"Jolie\",\"Joline\",\"Joly\",\"Jolyn\",\"Jolynn\",\"Jonell\",\"Joni\",\"Jonie\",\"Jonis\",\"Jordain\",\"Jordan\",\"Jordana\",\"Jordanna\",\"Jorey\",\"Jori\",\"Jorie\",\"Jorrie\",\"Jorry\",\"Joscelin\",\"Josee\",\"Josefa\",\"Josefina\",\"Josepha\",\"Josephina\",\"Josephine\",\"Josey\",\"Josi\",\"Josie\",\"Josselyn\",\"Josy\",\"Jourdan\",\"Joy\",\"Joya\",\"Joyan\",\"Joyann\",\"Joyce\",\"Joycelin\",\"Joye\",\"Jsandye\",\"Juana\",\"Juanita\",\"Judi\",\"Judie\",\"Judith\",\"Juditha\",\"Judy\",\"Judye\",\"Juieta\",\"Julee\",\"Juli\",\"Julia\",\"Juliana\",\"Juliane\",\"Juliann\",\"Julianna\",\"Julianne\",\"Julie\",\"Julienne\",\"Juliet\",\"Julieta\",\"Julietta\",\"Juliette\",\"Julina\",\"Juline\",\"Julissa\",\"Julita\",\"June\",\"Junette\",\"Junia\",\"Junie\",\"Junina\",\"Justina\",\"Justine\",\"Justinn\",\"Jyoti\",\"Kacey\",\"Kacie\",\"Kacy\",\"Kaela\",\"Kai\",\"Kaia\",\"Kaila\",\"Kaile\",\"Kailey\",\"Kaitlin\",\"Kaitlyn\",\"Kaitlynn\",\"Kaja\",\"Kakalina\",\"Kala\",\"Kaleena\",\"Kali\",\"Kalie\",\"Kalila\",\"Kalina\",\"Kalinda\",\"Kalindi\",\"Kalli\",\"Kally\",\"Kameko\",\"Kamila\",\"Kamilah\",\"Kamillah\",\"Kandace\",\"Kandy\",\"Kania\",\"Kanya\",\"Kara\",\"Kara-lynn\",\"Karalee\",\"Karalynn\",\"Kare\",\"Karee\",\"Karel\",\"Karen\",\"Karena\",\"Kari\",\"Karia\",\"Karie\",\"Karil\",\"Karilynn\",\"Karin\",\"Karina\",\"Karine\",\"Kariotta\",\"Karisa\",\"Karissa\",\"Karita\",\"Karla\",\"Karlee\",\"Karleen\",\"Karlen\",\"Karlene\",\"Karlie\",\"Karlotta\",\"Karlotte\",\"Karly\",\"Karlyn\",\"Karmen\",\"Karna\",\"Karol\",\"Karola\",\"Karole\",\"Karolina\",\"Karoline\",\"Karoly\",\"Karon\",\"Karrah\",\"Karrie\",\"Karry\",\"Kary\",\"Karyl\",\"Karylin\",\"Karyn\",\"Kasey\",\"Kass\",\"Kassandra\",\"Kassey\",\"Kassi\",\"Kassia\",\"Kassie\",\"Kat\",\"Kata\",\"Katalin\",\"Kate\",\"Katee\",\"Katerina\",\"Katerine\",\"Katey\",\"Kath\",\"Katha\",\"Katharina\",\"Katharine\",\"Katharyn\",\"Kathe\",\"Katherina\",\"Katherine\",\"Katheryn\",\"Kathi\",\"Kathie\",\"Kathleen\",\"Kathlin\",\"Kathrine\",\"Kathryn\",\"Kathryne\",\"Kathy\",\"Kathye\",\"Kati\",\"Katie\",\"Katina\",\"Katine\",\"Katinka\",\"Katleen\",\"Katlin\",\"Katrina\",\"Katrine\",\"Katrinka\",\"Katti\",\"Kattie\",\"Katuscha\",\"Katusha\",\"Katy\",\"Katya\",\"Kay\",\"Kaycee\",\"Kaye\",\"Kayla\",\"Kayle\",\"Kaylee\",\"Kayley\",\"Kaylil\",\"Kaylyn\",\"Keeley\",\"Keelia\",\"Keely\",\"Kelcey\",\"Kelci\",\"Kelcie\",\"Kelcy\",\"Kelila\",\"Kellen\",\"Kelley\",\"Kelli\",\"Kellia\",\"Kellie\",\"Kellina\",\"Kellsie\",\"Kelly\",\"Kellyann\",\"Kelsey\",\"Kelsi\",\"Kelsy\",\"Kendra\",\"Kendre\",\"Kenna\",\"Keri\",\"Keriann\",\"Kerianne\",\"Kerri\",\"Kerrie\",\"Kerrill\",\"Kerrin\",\"Kerry\",\"Kerstin\",\"Kesley\",\"Keslie\",\"Kessia\",\"Kessiah\",\"Ketti\",\"Kettie\",\"Ketty\",\"Kevina\",\"Kevyn\",\"Ki\",\"Kiah\",\"Kial\",\"Kiele\",\"Kiersten\",\"Kikelia\",\"Kiley\",\"Kim\",\"Kimberlee\",\"Kimberley\",\"Kimberli\",\"Kimberly\",\"Kimberlyn\",\"Kimbra\",\"Kimmi\",\"Kimmie\",\"Kimmy\",\"Kinna\",\"Kip\",\"Kipp\",\"Kippie\",\"Kippy\",\"Kira\",\"Kirbee\",\"Kirbie\",\"Kirby\",\"Kiri\",\"Kirsten\",\"Kirsteni\",\"Kirsti\",\"Kirstin\",\"Kirstyn\",\"Kissee\",\"Kissiah\",\"Kissie\",\"Kit\",\"Kitti\",\"Kittie\",\"Kitty\",\"Kizzee\",\"Kizzie\",\"Klara\",\"Klarika\",\"Klarrisa\",\"Konstance\",\"Konstanze\",\"Koo\",\"Kora\",\"Koral\",\"Koralle\",\"Kordula\",\"Kore\",\"Korella\",\"Koren\",\"Koressa\",\"Kori\",\"Korie\",\"Korney\",\"Korrie\",\"Korry\",\"Kris\",\"Krissie\",\"Krissy\",\"Krista\",\"Kristal\",\"Kristan\",\"Kriste\",\"Kristel\",\"Kristen\",\"Kristi\",\"Kristien\",\"Kristin\",\"Kristina\",\"Kristine\",\"Kristy\",\"Kristyn\",\"Krysta\",\"Krystal\",\"Krystalle\",\"Krystle\",\"Krystyna\",\"Kyla\",\"Kyle\",\"Kylen\",\"Kylie\",\"Kylila\",\"Kylynn\",\"Kym\",\"Kynthia\",\"Kyrstin\",\"Lacee\",\"Lacey\",\"Lacie\",\"Lacy\",\"Ladonna\",\"Laetitia\",\"Laina\",\"Lainey\",\"Lana\",\"Lanae\",\"Lane\",\"Lanette\",\"Laney\",\"Lani\",\"Lanie\",\"Lanita\",\"Lanna\",\"Lanni\",\"Lanny\",\"Lara\",\"Laraine\",\"Lari\",\"Larina\",\"Larine\",\"Larisa\",\"Larissa\",\"Lark\",\"Laryssa\",\"Latashia\",\"Latia\",\"Latisha\",\"Latrena\",\"Latrina\",\"Laura\",\"Lauraine\",\"Laural\",\"Lauralee\",\"Laure\",\"Lauree\",\"Laureen\",\"Laurel\",\"Laurella\",\"Lauren\",\"Laurena\",\"Laurene\",\"Lauretta\",\"Laurette\",\"Lauri\",\"Laurianne\",\"Laurice\",\"Laurie\",\"Lauryn\",\"Lavena\",\"Laverna\",\"Laverne\",\"Lavina\",\"Lavinia\",\"Lavinie\",\"Layla\",\"Layne\",\"Layney\",\"Lea\",\"Leah\",\"Leandra\",\"Leann\",\"Leanna\",\"Leanor\",\"Leanora\",\"Lebbie\",\"Leda\",\"Lee\",\"Leeann\",\"Leeanne\",\"Leela\",\"Leelah\",\"Leena\",\"Leesa\",\"Leese\",\"Legra\",\"Leia\",\"Leigh\",\"Leigha\",\"Leila\",\"Leilah\",\"Leisha\",\"Lela\",\"Lelah\",\"Leland\",\"Lelia\",\"Lena\",\"Lenee\",\"Lenette\",\"Lenka\",\"Lenna\",\"Lenora\",\"Lenore\",\"Leodora\",\"Leoine\",\"Leola\",\"Leoline\",\"Leona\",\"Leonanie\",\"Leone\",\"Leonelle\",\"Leonie\",\"Leonora\",\"Leonore\",\"Leontine\",\"Leontyne\",\"Leora\",\"Leshia\",\"Lesley\",\"Lesli\",\"Leslie\",\"Lesly\",\"Lesya\",\"Leta\",\"Lethia\",\"Leticia\",\"Letisha\",\"Letitia\",\"Letizia\",\"Letta\",\"Letti\",\"Lettie\",\"Letty\",\"Lexi\",\"Lexie\",\"Lexine\",\"Lexis\",\"Lexy\",\"Leyla\",\"Lezlie\",\"Lia\",\"Lian\",\"Liana\",\"Liane\",\"Lianna\",\"Lianne\",\"Lib\",\"Libbey\",\"Libbi\",\"Libbie\",\"Libby\",\"Licha\",\"Lida\",\"Lidia\",\"Liesa\",\"Lil\",\"Lila\",\"Lilah\",\"Lilas\",\"Lilia\",\"Lilian\",\"Liliane\",\"Lilias\",\"Lilith\",\"Lilla\",\"Lilli\",\"Lillian\",\"Lillis\",\"Lilllie\",\"Lilly\",\"Lily\",\"Lilyan\",\"Lin\",\"Lina\",\"Lind\",\"Linda\",\"Lindi\",\"Lindie\",\"Lindsay\",\"Lindsey\",\"Lindsy\",\"Lindy\",\"Linea\",\"Linell\",\"Linet\",\"Linette\",\"Linn\",\"Linnea\",\"Linnell\",\"Linnet\",\"Linnie\",\"Linzy\",\"Lira\",\"Lisa\",\"Lisabeth\",\"Lisbeth\",\"Lise\",\"Lisetta\",\"Lisette\",\"Lisha\",\"Lishe\",\"Lissa\",\"Lissi\",\"Lissie\",\"Lissy\",\"Lita\",\"Liuka\",\"Liv\",\"Liva\",\"Livia\",\"Livvie\",\"Livvy\",\"Livvyy\",\"Livy\",\"Liz\",\"Liza\",\"Lizabeth\",\"Lizbeth\",\"Lizette\",\"Lizzie\",\"Lizzy\",\"Loella\",\"Lois\",\"Loise\",\"Lola\",\"Loleta\",\"Lolita\",\"Lolly\",\"Lona\",\"Lonee\",\"Loni\",\"Lonna\",\"Lonni\",\"Lonnie\",\"Lora\",\"Lorain\",\"Loraine\",\"Loralee\",\"Loralie\",\"Loralyn\",\"Loree\",\"Loreen\",\"Lorelei\",\"Lorelle\",\"Loren\",\"Lorena\",\"Lorene\",\"Lorenza\",\"Loretta\",\"Lorette\",\"Lori\",\"Loria\",\"Lorianna\",\"Lorianne\",\"Lorie\",\"Lorilee\",\"Lorilyn\",\"Lorinda\",\"Lorine\",\"Lorita\",\"Lorna\",\"Lorne\",\"Lorraine\",\"Lorrayne\",\"Lorri\",\"Lorrie\",\"Lorrin\",\"Lorry\",\"Lory\",\"Lotta\",\"Lotte\",\"Lotti\",\"Lottie\",\"Lotty\",\"Lou\",\"Louella\",\"Louisa\",\"Louise\",\"Louisette\",\"Loutitia\",\"Lu\",\"Luce\",\"Luci\",\"Lucia\",\"Luciana\",\"Lucie\",\"Lucienne\",\"Lucila\",\"Lucilia\",\"Lucille\",\"Lucina\",\"Lucinda\",\"Lucine\",\"Lucita\",\"Lucky\",\"Lucretia\",\"Lucy\",\"Ludovika\",\"Luella\",\"Luelle\",\"Luisa\",\"Luise\",\"Lula\",\"Lulita\",\"Lulu\",\"Lura\",\"Lurette\",\"Lurleen\",\"Lurlene\",\"Lurline\",\"Lusa\",\"Luz\",\"Lyda\",\"Lydia\",\"Lydie\",\"Lyn\",\"Lynda\",\"Lynde\",\"Lyndel\",\"Lyndell\",\"Lyndsay\",\"Lyndsey\",\"Lyndsie\",\"Lyndy\",\"Lynea\",\"Lynelle\",\"Lynett\",\"Lynette\",\"Lynn\",\"Lynna\",\"Lynne\",\"Lynnea\",\"Lynnell\",\"Lynnelle\",\"Lynnet\",\"Lynnett\",\"Lynnette\",\"Lynsey\",\"Lyssa\",\"Mab\",\"Mabel\",\"Mabelle\",\"Mable\",\"Mada\",\"Madalena\",\"Madalyn\",\"Maddalena\",\"Maddi\",\"Maddie\",\"Maddy\",\"Madel\",\"Madelaine\",\"Madeleine\",\"Madelena\",\"Madelene\",\"Madelin\",\"Madelina\",\"Madeline\",\"Madella\",\"Madelle\",\"Madelon\",\"Madelyn\",\"Madge\",\"Madlen\",\"Madlin\",\"Madonna\",\"Mady\",\"Mae\",\"Maegan\",\"Mag\",\"Magda\",\"Magdaia\",\"Magdalen\",\"Magdalena\",\"Magdalene\",\"Maggee\",\"Maggi\",\"Maggie\",\"Maggy\",\"Mahala\",\"Mahalia\",\"Maia\",\"Maible\",\"Maiga\",\"Maighdiln\",\"Mair\",\"Maire\",\"Maisey\",\"Maisie\",\"Maitilde\",\"Mala\",\"Malanie\",\"Malena\",\"Malia\",\"Malina\",\"Malinda\",\"Malinde\",\"Malissa\",\"Malissia\",\"Mallissa\",\"Mallorie\",\"Mallory\",\"Malorie\",\"Malory\",\"Malva\",\"Malvina\",\"Malynda\",\"Mame\",\"Mamie\",\"Manda\",\"Mandi\",\"Mandie\",\"Mandy\",\"Manon\",\"Manya\",\"Mara\",\"Marabel\",\"Marcela\",\"Marcelia\",\"Marcella\",\"Marcelle\",\"Marcellina\",\"Marcelline\",\"Marchelle\",\"Marci\",\"Marcia\",\"Marcie\",\"Marcile\",\"Marcille\",\"Marcy\",\"Mareah\",\"Maren\",\"Marena\",\"Maressa\",\"Marga\",\"Margalit\",\"Margalo\",\"Margaret\",\"Margareta\",\"Margarete\",\"Margaretha\",\"Margarethe\",\"Margaretta\",\"Margarette\",\"Margarita\",\"Margaux\",\"Marge\",\"Margeaux\",\"Margery\",\"Marget\",\"Margette\",\"Margi\",\"Margie\",\"Margit\",\"Margo\",\"Margot\",\"Margret\",\"Marguerite\",\"Margy\",\"Mari\",\"Maria\",\"Mariam\",\"Marian\",\"Mariana\",\"Mariann\",\"Marianna\",\"Marianne\",\"Maribel\",\"Maribelle\",\"Maribeth\",\"Marice\",\"Maridel\",\"Marie\",\"Marie-ann\",\"Marie-jeanne\",\"Marieann\",\"Mariejeanne\",\"Mariel\",\"Mariele\",\"Marielle\",\"Mariellen\",\"Marietta\",\"Mariette\",\"Marigold\",\"Marijo\",\"Marika\",\"Marilee\",\"Marilin\",\"Marillin\",\"Marilyn\",\"Marin\",\"Marina\",\"Marinna\",\"Marion\",\"Mariquilla\",\"Maris\",\"Marisa\",\"Mariska\",\"Marissa\",\"Marita\",\"Maritsa\",\"Mariya\",\"Marj\",\"Marja\",\"Marje\",\"Marji\",\"Marjie\",\"Marjorie\",\"Marjory\",\"Marjy\",\"Marketa\",\"Marla\",\"Marlane\",\"Marleah\",\"Marlee\",\"Marleen\",\"Marlena\",\"Marlene\",\"Marley\",\"Marlie\",\"Marline\",\"Marlo\",\"Marlyn\",\"Marna\",\"Marne\",\"Marney\",\"Marni\",\"Marnia\",\"Marnie\",\"Marquita\",\"Marrilee\",\"Marris\",\"Marrissa\",\"Marsha\",\"Marsiella\",\"Marta\",\"Martelle\",\"Martguerita\",\"Martha\",\"Marthe\",\"Marthena\",\"Marti\",\"Martica\",\"Martie\",\"Martina\",\"Martita\",\"Marty\",\"Martynne\",\"Mary\",\"Marya\",\"Maryann\",\"Maryanna\",\"Maryanne\",\"Marybelle\",\"Marybeth\",\"Maryellen\",\"Maryjane\",\"Maryjo\",\"Maryl\",\"Marylee\",\"Marylin\",\"Marylinda\",\"Marylou\",\"Marylynne\",\"Maryrose\",\"Marys\",\"Marysa\",\"Masha\",\"Matelda\",\"Mathilda\",\"Mathilde\",\"Matilda\",\"Matilde\",\"Matti\",\"Mattie\",\"Matty\",\"Maud\",\"Maude\",\"Maudie\",\"Maura\",\"Maure\",\"Maureen\",\"Maureene\",\"Maurene\",\"Maurine\",\"Maurise\",\"Maurita\",\"Maurizia\",\"Mavis\",\"Mavra\",\"Max\",\"Maxi\",\"Maxie\",\"Maxine\",\"Maxy\",\"May\",\"Maybelle\",\"Maye\",\"Mead\",\"Meade\",\"Meagan\",\"Meaghan\",\"Meara\",\"Mechelle\",\"Meg\",\"Megan\",\"Megen\",\"Meggi\",\"Meggie\",\"Meggy\",\"Meghan\",\"Meghann\",\"Mehetabel\",\"Mei\",\"Mel\",\"Mela\",\"Melamie\",\"Melania\",\"Melanie\",\"Melantha\",\"Melany\",\"Melba\",\"Melesa\",\"Melessa\",\"Melicent\",\"Melina\",\"Melinda\",\"Melinde\",\"Melisa\",\"Melisande\",\"Melisandra\",\"Melisenda\",\"Melisent\",\"Melissa\",\"Melisse\",\"Melita\",\"Melitta\",\"Mella\",\"Melli\",\"Mellicent\",\"Mellie\",\"Mellisa\",\"Mellisent\",\"Melloney\",\"Melly\",\"Melodee\",\"Melodie\",\"Melody\",\"Melonie\",\"Melony\",\"Melosa\",\"Melva\",\"Mercedes\",\"Merci\",\"Mercie\",\"Mercy\",\"Meredith\",\"Meredithe\",\"Meridel\",\"Meridith\",\"Meriel\",\"Merilee\",\"Merilyn\",\"Meris\",\"Merissa\",\"Merl\",\"Merla\",\"Merle\",\"Merlina\",\"Merline\",\"Merna\",\"Merola\",\"Merralee\",\"Merridie\",\"Merrie\",\"Merrielle\",\"Merrile\",\"Merrilee\",\"Merrili\",\"Merrill\",\"Merrily\",\"Merry\",\"Mersey\",\"Meryl\",\"Meta\",\"Mia\",\"Micaela\",\"Michaela\",\"Michaelina\",\"Michaeline\",\"Michaella\",\"Michal\",\"Michel\",\"Michele\",\"Michelina\",\"Micheline\",\"Michell\",\"Michelle\",\"Micki\",\"Mickie\",\"Micky\",\"Midge\",\"Mignon\",\"Mignonne\",\"Miguela\",\"Miguelita\",\"Mikaela\",\"Mil\",\"Mildred\",\"Mildrid\",\"Milena\",\"Milicent\",\"Milissent\",\"Milka\",\"Milli\",\"Millicent\",\"Millie\",\"Millisent\",\"Milly\",\"Milzie\",\"Mimi\",\"Min\",\"Mina\",\"Minda\",\"Mindy\",\"Minerva\",\"Minetta\",\"Minette\",\"Minna\",\"Minnaminnie\",\"Minne\",\"Minni\",\"Minnie\",\"Minnnie\",\"Minny\",\"Minta\",\"Miquela\",\"Mira\",\"Mirabel\",\"Mirabella\",\"Mirabelle\",\"Miran\",\"Miranda\",\"Mireielle\",\"Mireille\",\"Mirella\",\"Mirelle\",\"Miriam\",\"Mirilla\",\"Mirna\",\"Misha\",\"Missie\",\"Missy\",\"Misti\",\"Misty\",\"Mitzi\",\"Modesta\",\"Modestia\",\"Modestine\",\"Modesty\",\"Moina\",\"Moira\",\"Moll\",\"Mollee\",\"Molli\",\"Mollie\",\"Molly\",\"Mommy\",\"Mona\",\"Monah\",\"Monica\",\"Monika\",\"Monique\",\"Mora\",\"Moreen\",\"Morena\",\"Morgan\",\"Morgana\",\"Morganica\",\"Morganne\",\"Morgen\",\"Moria\",\"Morissa\",\"Morna\",\"Moselle\",\"Moyna\",\"Moyra\",\"Mozelle\",\"Muffin\",\"Mufi\",\"Mufinella\",\"Muire\",\"Mureil\",\"Murial\",\"Muriel\",\"Murielle\",\"Myra\",\"Myrah\",\"Myranda\",\"Myriam\",\"Myrilla\",\"Myrle\",\"Myrlene\",\"Myrna\",\"Myrta\",\"Myrtia\",\"Myrtice\",\"Myrtie\",\"Myrtle\",\"Nada\",\"Nadean\",\"Nadeen\",\"Nadia\",\"Nadine\",\"Nadiya\",\"Nady\",\"Nadya\",\"Nalani\",\"Nan\",\"Nana\",\"Nananne\",\"Nance\",\"Nancee\",\"Nancey\",\"Nanci\",\"Nancie\",\"Nancy\",\"Nanete\",\"Nanette\",\"Nani\",\"Nanice\",\"Nanine\",\"Nannette\",\"Nanni\",\"Nannie\",\"Nanny\",\"Nanon\",\"Naoma\",\"Naomi\",\"Nara\",\"Nari\",\"Nariko\",\"Nat\",\"Nata\",\"Natala\",\"Natalee\",\"Natalie\",\"Natalina\",\"Nataline\",\"Natalya\",\"Natasha\",\"Natassia\",\"Nathalia\",\"Nathalie\",\"Natividad\",\"Natka\",\"Natty\",\"Neala\",\"Neda\",\"Nedda\",\"Nedi\",\"Neely\",\"Neila\",\"Neile\",\"Neilla\",\"Neille\",\"Nelia\",\"Nelie\",\"Nell\",\"Nelle\",\"Nelli\",\"Nellie\",\"Nelly\",\"Nerissa\",\"Nerita\",\"Nert\",\"Nerta\",\"Nerte\",\"Nerti\",\"Nertie\",\"Nerty\",\"Nessa\",\"Nessi\",\"Nessie\",\"Nessy\",\"Nesta\",\"Netta\",\"Netti\",\"Nettie\",\"Nettle\",\"Netty\",\"Nevsa\",\"Neysa\",\"Nichol\",\"Nichole\",\"Nicholle\",\"Nicki\",\"Nickie\",\"Nicky\",\"Nicol\",\"Nicola\",\"Nicole\",\"Nicolea\",\"Nicolette\",\"Nicoli\",\"Nicolina\",\"Nicoline\",\"Nicolle\",\"Nikaniki\",\"Nike\",\"Niki\",\"Nikki\",\"Nikkie\",\"Nikoletta\",\"Nikolia\",\"Nina\",\"Ninetta\",\"Ninette\",\"Ninnetta\",\"Ninnette\",\"Ninon\",\"Nissa\",\"Nisse\",\"Nissie\",\"Nissy\",\"Nita\",\"Nixie\",\"Noami\",\"Noel\",\"Noelani\",\"Noell\",\"Noella\",\"Noelle\",\"Noellyn\",\"Noelyn\",\"Noemi\",\"Nola\",\"Nolana\",\"Nolie\",\"Nollie\",\"Nomi\",\"Nona\",\"Nonah\",\"Noni\",\"Nonie\",\"Nonna\",\"Nonnah\",\"Nora\",\"Norah\",\"Norean\",\"Noreen\",\"Norene\",\"Norina\",\"Norine\",\"Norma\",\"Norri\",\"Norrie\",\"Norry\",\"Novelia\",\"Nydia\",\"Nyssa\",\"Octavia\",\"Odele\",\"Odelia\",\"Odelinda\",\"Odella\",\"Odelle\",\"Odessa\",\"Odetta\",\"Odette\",\"Odilia\",\"Odille\",\"Ofelia\",\"Ofella\",\"Ofilia\",\"Ola\",\"Olenka\",\"Olga\",\"Olia\",\"Olimpia\",\"Olive\",\"Olivette\",\"Olivia\",\"Olivie\",\"Oliy\",\"Ollie\",\"Olly\",\"Olva\",\"Olwen\",\"Olympe\",\"Olympia\",\"Olympie\",\"Ondrea\",\"Oneida\",\"Onida\",\"Oona\",\"Opal\",\"Opalina\",\"Opaline\",\"Ophelia\",\"Ophelie\",\"Ora\",\"Oralee\",\"Oralia\",\"Oralie\",\"Oralla\",\"Oralle\",\"Orel\",\"Orelee\",\"Orelia\",\"Orelie\",\"Orella\",\"Orelle\",\"Oriana\",\"Orly\",\"Orsa\",\"Orsola\",\"Ortensia\",\"Otha\",\"Othelia\",\"Othella\",\"Othilia\",\"Othilie\",\"Ottilie\",\"Page\",\"Paige\",\"Paloma\",\"Pam\",\"Pamela\",\"Pamelina\",\"Pamella\",\"Pammi\",\"Pammie\",\"Pammy\",\"Pandora\",\"Pansie\",\"Pansy\",\"Paola\",\"Paolina\",\"Papagena\",\"Pat\",\"Patience\",\"Patrica\",\"Patrice\",\"Patricia\",\"Patrizia\",\"Patsy\",\"Patti\",\"Pattie\",\"Patty\",\"Paula\",\"Paule\",\"Pauletta\",\"Paulette\",\"Pauli\",\"Paulie\",\"Paulina\",\"Pauline\",\"Paulita\",\"Pauly\",\"Pavia\",\"Pavla\",\"Pearl\",\"Pearla\",\"Pearle\",\"Pearline\",\"Peg\",\"Pegeen\",\"Peggi\",\"Peggie\",\"Peggy\",\"Pen\",\"Penelopa\",\"Penelope\",\"Penni\",\"Pennie\",\"Penny\",\"Pepi\",\"Pepita\",\"Peri\",\"Peria\",\"Perl\",\"Perla\",\"Perle\",\"Perri\",\"Perrine\",\"Perry\",\"Persis\",\"Pet\",\"Peta\",\"Petra\",\"Petrina\",\"Petronella\",\"Petronia\",\"Petronilla\",\"Petronille\",\"Petunia\",\"Phaedra\",\"Phaidra\",\"Phebe\",\"Phedra\",\"Phelia\",\"Phil\",\"Philipa\",\"Philippa\",\"Philippe\",\"Philippine\",\"Philis\",\"Phillida\",\"Phillie\",\"Phillis\",\"Philly\",\"Philomena\",\"Phoebe\",\"Phylis\",\"Phyllida\",\"Phyllis\",\"Phyllys\",\"Phylys\",\"Pia\",\"Pier\",\"Pierette\",\"Pierrette\",\"Pietra\",\"Piper\",\"Pippa\",\"Pippy\",\"Polly\",\"Pollyanna\",\"Pooh\",\"Poppy\",\"Portia\",\"Pris\",\"Prisca\",\"Priscella\",\"Priscilla\",\"Prissie\",\"Pru\",\"Prudence\",\"Prudi\",\"Prudy\",\"Prue\",\"Queenie\",\"Quentin\",\"Querida\",\"Quinn\",\"Quinta\",\"Quintana\",\"Quintilla\",\"Quintina\",\"Rachael\",\"Rachel\",\"Rachele\",\"Rachelle\",\"Rae\",\"Raeann\",\"Raf\",\"Rafa\",\"Rafaela\",\"Rafaelia\",\"Rafaelita\",\"Rahal\",\"Rahel\",\"Raina\",\"Raine\",\"Rakel\",\"Ralina\",\"Ramona\",\"Ramonda\",\"Rana\",\"Randa\",\"Randee\",\"Randene\",\"Randi\",\"Randie\",\"Randy\",\"Ranee\",\"Rani\",\"Rania\",\"Ranice\",\"Ranique\",\"Ranna\",\"Raphaela\",\"Raquel\",\"Raquela\",\"Rasia\",\"Rasla\",\"Raven\",\"Ray\",\"Raychel\",\"Raye\",\"Rayna\",\"Raynell\",\"Rayshell\",\"Rea\",\"Reba\",\"Rebbecca\",\"Rebe\",\"Rebeca\",\"Rebecca\",\"Rebecka\",\"Rebeka\",\"Rebekah\",\"Rebekkah\",\"Ree\",\"Reeba\",\"Reena\",\"Reeta\",\"Reeva\",\"Regan\",\"Reggi\",\"Reggie\",\"Regina\",\"Regine\",\"Reiko\",\"Reina\",\"Reine\",\"Remy\",\"Rena\",\"Renae\",\"Renata\",\"Renate\",\"Rene\",\"Renee\",\"Renell\",\"Renelle\",\"Renie\",\"Rennie\",\"Reta\",\"Retha\",\"Revkah\",\"Rey\",\"Reyna\",\"Rhea\",\"Rheba\",\"Rheta\",\"Rhetta\",\"Rhiamon\",\"Rhianna\",\"Rhianon\",\"Rhoda\",\"Rhodia\",\"Rhodie\",\"Rhody\",\"Rhona\",\"Rhonda\",\"Riane\",\"Riannon\",\"Rianon\",\"Rica\",\"Ricca\",\"Rici\",\"Ricki\",\"Rickie\",\"Ricky\",\"Riki\",\"Rikki\",\"Rina\",\"Risa\",\"Rita\",\"Riva\",\"Rivalee\",\"Rivi\",\"Rivkah\",\"Rivy\",\"Roana\",\"Roanna\",\"Roanne\",\"Robbi\",\"Robbie\",\"Robbin\",\"Robby\",\"Robbyn\",\"Robena\",\"Robenia\",\"Roberta\",\"Robin\",\"Robina\",\"Robinet\",\"Robinett\",\"Robinetta\",\"Robinette\",\"Robinia\",\"Roby\",\"Robyn\",\"Roch\",\"Rochell\",\"Rochella\",\"Rochelle\",\"Rochette\",\"Roda\",\"Rodi\",\"Rodie\",\"Rodina\",\"Rois\",\"Romola\",\"Romona\",\"Romonda\",\"Romy\",\"Rona\",\"Ronalda\",\"Ronda\",\"Ronica\",\"Ronna\",\"Ronni\",\"Ronnica\",\"Ronnie\",\"Ronny\",\"Roobbie\",\"Rora\",\"Rori\",\"Rorie\",\"Rory\",\"Ros\",\"Rosa\",\"Rosabel\",\"Rosabella\",\"Rosabelle\",\"Rosaleen\",\"Rosalia\",\"Rosalie\",\"Rosalind\",\"Rosalinda\",\"Rosalinde\",\"Rosaline\",\"Rosalyn\",\"Rosalynd\",\"Rosamond\",\"Rosamund\",\"Rosana\",\"Rosanna\",\"Rosanne\",\"Rose\",\"Roseann\",\"Roseanna\",\"Roseanne\",\"Roselia\",\"Roselin\",\"Roseline\",\"Rosella\",\"Roselle\",\"Rosemaria\",\"Rosemarie\",\"Rosemary\",\"Rosemonde\",\"Rosene\",\"Rosetta\",\"Rosette\",\"Roshelle\",\"Rosie\",\"Rosina\",\"Rosita\",\"Roslyn\",\"Rosmunda\",\"Rosy\",\"Row\",\"Rowe\",\"Rowena\",\"Roxana\",\"Roxane\",\"Roxanna\",\"Roxanne\",\"Roxi\",\"Roxie\",\"Roxine\",\"Roxy\",\"Roz\",\"Rozalie\",\"Rozalin\",\"Rozamond\",\"Rozanna\",\"Rozanne\",\"Roze\",\"Rozele\",\"Rozella\",\"Rozelle\",\"Rozina\",\"Rubetta\",\"Rubi\",\"Rubia\",\"Rubie\",\"Rubina\",\"Ruby\",\"Ruperta\",\"Ruth\",\"Ruthann\",\"Ruthanne\",\"Ruthe\",\"Ruthi\",\"Ruthie\",\"Ruthy\",\"Ryann\",\"Rycca\",\"Saba\",\"Sabina\",\"Sabine\",\"Sabra\",\"Sabrina\",\"Sacha\",\"Sada\",\"Sadella\",\"Sadie\",\"Sadye\",\"Saidee\",\"Sal\",\"Salaidh\",\"Sallee\",\"Salli\",\"Sallie\",\"Sally\",\"Sallyann\",\"Sallyanne\",\"Saloma\",\"Salome\",\"Salomi\",\"Sam\",\"Samantha\",\"Samara\",\"Samaria\",\"Sammy\",\"Sande\",\"Sandi\",\"Sandie\",\"Sandra\",\"Sandy\",\"Sandye\",\"Sapphira\",\"Sapphire\",\"Sara\",\"Sara-ann\",\"Saraann\",\"Sarah\",\"Sarajane\",\"Saree\",\"Sarena\",\"Sarene\",\"Sarette\",\"Sari\",\"Sarina\",\"Sarine\",\"Sarita\",\"Sascha\",\"Sasha\",\"Sashenka\",\"Saudra\",\"Saundra\",\"Savina\",\"Sayre\",\"Scarlet\",\"Scarlett\",\"Sean\",\"Seana\",\"Seka\",\"Sela\",\"Selena\",\"Selene\",\"Selestina\",\"Selia\",\"Selie\",\"Selina\",\"Selinda\",\"Seline\",\"Sella\",\"Selle\",\"Selma\",\"Sena\",\"Sephira\",\"Serena\",\"Serene\",\"Shae\",\"Shaina\",\"Shaine\",\"Shalna\",\"Shalne\",\"Shana\",\"Shanda\",\"Shandee\",\"Shandeigh\",\"Shandie\",\"Shandra\",\"Shandy\",\"Shane\",\"Shani\",\"Shanie\",\"Shanna\",\"Shannah\",\"Shannen\",\"Shannon\",\"Shanon\",\"Shanta\",\"Shantee\",\"Shara\",\"Sharai\",\"Shari\",\"Sharia\",\"Sharity\",\"Sharl\",\"Sharla\",\"Sharleen\",\"Sharlene\",\"Sharline\",\"Sharon\",\"Sharona\",\"Sharron\",\"Sharyl\",\"Shaun\",\"Shauna\",\"Shawn\",\"Shawna\",\"Shawnee\",\"Shay\",\"Shayla\",\"Shaylah\",\"Shaylyn\",\"Shaylynn\",\"Shayna\",\"Shayne\",\"Shea\",\"Sheba\",\"Sheela\",\"Sheelagh\",\"Sheelah\",\"Sheena\",\"Sheeree\",\"Sheila\",\"Sheila-kathryn\",\"Sheilah\",\"Shel\",\"Shela\",\"Shelagh\",\"Shelba\",\"Shelbi\",\"Shelby\",\"Shelia\",\"Shell\",\"Shelley\",\"Shelli\",\"Shellie\",\"Shelly\",\"Shena\",\"Sher\",\"Sheree\",\"Sheri\",\"Sherie\",\"Sherill\",\"Sherilyn\",\"Sherline\",\"Sherri\",\"Sherrie\",\"Sherry\",\"Sherye\",\"Sheryl\",\"Shina\",\"Shir\",\"Shirl\",\"Shirlee\",\"Shirleen\",\"Shirlene\",\"Shirley\",\"Shirline\",\"Shoshana\",\"Shoshanna\",\"Siana\",\"Sianna\",\"Sib\",\"Sibbie\",\"Sibby\",\"Sibeal\",\"Sibel\",\"Sibella\",\"Sibelle\",\"Sibilla\",\"Sibley\",\"Sibyl\",\"Sibylla\",\"Sibylle\",\"Sidoney\",\"Sidonia\",\"Sidonnie\",\"Sigrid\",\"Sile\",\"Sileas\",\"Silva\",\"Silvana\",\"Silvia\",\"Silvie\",\"Simona\",\"Simone\",\"Simonette\",\"Simonne\",\"Sindee\",\"Siobhan\",\"Sioux\",\"Siouxie\",\"Sisely\",\"Sisile\",\"Sissie\",\"Sissy\",\"Siusan\",\"Sofia\",\"Sofie\",\"Sondra\",\"Sonia\",\"Sonja\",\"Sonni\",\"Sonnie\",\"Sonnnie\",\"Sonny\",\"Sonya\",\"Sophey\",\"Sophi\",\"Sophia\",\"Sophie\",\"Sophronia\",\"Sorcha\",\"Sosanna\",\"Stace\",\"Stacee\",\"Stacey\",\"Staci\",\"Stacia\",\"Stacie\",\"Stacy\",\"Stafani\",\"Star\",\"Starla\",\"Starlene\",\"Starlin\",\"Starr\",\"Stefa\",\"Stefania\",\"Stefanie\",\"Steffane\",\"Steffi\",\"Steffie\",\"Stella\",\"Stepha\",\"Stephana\",\"Stephani\",\"Stephanie\",\"Stephannie\",\"Stephenie\",\"Stephi\",\"Stephie\",\"Stephine\",\"Stesha\",\"Stevana\",\"Stevena\",\"Stoddard\",\"Storm\",\"Stormi\",\"Stormie\",\"Stormy\",\"Sue\",\"Suellen\",\"Sukey\",\"Suki\",\"Sula\",\"Sunny\",\"Sunshine\",\"Susan\",\"Susana\",\"Susanetta\",\"Susann\",\"Susanna\",\"Susannah\",\"Susanne\",\"Susette\",\"Susi\",\"Susie\",\"Susy\",\"Suzann\",\"Suzanna\",\"Suzanne\",\"Suzette\",\"Suzi\",\"Suzie\",\"Suzy\",\"Sybil\",\"Sybila\",\"Sybilla\",\"Sybille\",\"Sybyl\",\"Sydel\",\"Sydelle\",\"Sydney\",\"Sylvia\",\"Tabatha\",\"Tabbatha\",\"Tabbi\",\"Tabbie\",\"Tabbitha\",\"Tabby\",\"Tabina\",\"Tabitha\",\"Taffy\",\"Talia\",\"Tallia\",\"Tallie\",\"Tallou\",\"Tallulah\",\"Tally\",\"Talya\",\"Talyah\",\"Tamar\",\"Tamara\",\"Tamarah\",\"Tamarra\",\"Tamera\",\"Tami\",\"Tamiko\",\"Tamma\",\"Tammara\",\"Tammi\",\"Tammie\",\"Tammy\",\"Tamqrah\",\"Tamra\",\"Tana\",\"Tandi\",\"Tandie\",\"Tandy\",\"Tanhya\",\"Tani\",\"Tania\",\"Tanitansy\",\"Tansy\",\"Tanya\",\"Tara\",\"Tarah\",\"Tarra\",\"Tarrah\",\"Taryn\",\"Tasha\",\"Tasia\",\"Tate\",\"Tatiana\",\"Tatiania\",\"Tatum\",\"Tawnya\",\"Tawsha\",\"Ted\",\"Tedda\",\"Teddi\",\"Teddie\",\"Teddy\",\"Tedi\",\"Tedra\",\"Teena\",\"Teirtza\",\"Teodora\",\"Tera\",\"Teresa\",\"Terese\",\"Teresina\",\"Teresita\",\"Teressa\",\"Teri\",\"Teriann\",\"Terra\",\"Terri\",\"Terrie\",\"Terrijo\",\"Terry\",\"Terrye\",\"Tersina\",\"Terza\",\"Tess\",\"Tessa\",\"Tessi\",\"Tessie\",\"Tessy\",\"Thalia\",\"Thea\",\"Theadora\",\"Theda\",\"Thekla\",\"Thelma\",\"Theo\",\"Theodora\",\"Theodosia\",\"Theresa\",\"Therese\",\"Theresina\",\"Theresita\",\"Theressa\",\"Therine\",\"Thia\",\"Thomasa\",\"Thomasin\",\"Thomasina\",\"Thomasine\",\"Tiena\",\"Tierney\",\"Tiertza\",\"Tiff\",\"Tiffani\",\"Tiffanie\",\"Tiffany\",\"Tiffi\",\"Tiffie\",\"Tiffy\",\"Tilda\",\"Tildi\",\"Tildie\",\"Tildy\",\"Tillie\",\"Tilly\",\"Tim\",\"Timi\",\"Timmi\",\"Timmie\",\"Timmy\",\"Timothea\",\"Tina\",\"Tine\",\"Tiphani\",\"Tiphanie\",\"Tiphany\",\"Tish\",\"Tisha\",\"Tobe\",\"Tobey\",\"Tobi\",\"Toby\",\"Tobye\",\"Toinette\",\"Toma\",\"Tomasina\",\"Tomasine\",\"Tomi\",\"Tommi\",\"Tommie\",\"Tommy\",\"Toni\",\"Tonia\",\"Tonie\",\"Tony\",\"Tonya\",\"Tonye\",\"Tootsie\",\"Torey\",\"Tori\",\"Torie\",\"Torrie\",\"Tory\",\"Tova\",\"Tove\",\"Tracee\",\"Tracey\",\"Traci\",\"Tracie\",\"Tracy\",\"Trenna\",\"Tresa\",\"Trescha\",\"Tressa\",\"Tricia\",\"Trina\",\"Trish\",\"Trisha\",\"Trista\",\"Trix\",\"Trixi\",\"Trixie\",\"Trixy\",\"Truda\",\"Trude\",\"Trudey\",\"Trudi\",\"Trudie\",\"Trudy\",\"Trula\",\"Tuesday\",\"Twila\",\"Twyla\",\"Tybi\",\"Tybie\",\"Tyne\",\"Ula\",\"Ulla\",\"Ulrica\",\"Ulrika\",\"Ulrikaumeko\",\"Ulrike\",\"Umeko\",\"Una\",\"Ursa\",\"Ursala\",\"Ursola\",\"Ursula\",\"Ursulina\",\"Ursuline\",\"Uta\",\"Val\",\"Valaree\",\"Valaria\",\"Vale\",\"Valeda\",\"Valencia\",\"Valene\",\"Valenka\",\"Valentia\",\"Valentina\",\"Valentine\",\"Valera\",\"Valeria\",\"Valerie\",\"Valery\",\"Valerye\",\"Valida\",\"Valina\",\"Valli\",\"Vallie\",\"Vally\",\"Valma\",\"Valry\",\"Van\",\"Vanda\",\"Vanessa\",\"Vania\",\"Vanna\",\"Vanni\",\"Vannie\",\"Vanny\",\"Vanya\",\"Veda\",\"Velma\",\"Velvet\",\"Venita\",\"Venus\",\"Vera\",\"Veradis\",\"Vere\",\"Verena\",\"Verene\",\"Veriee\",\"Verile\",\"Verina\",\"Verine\",\"Verla\",\"Verna\",\"Vernice\",\"Veronica\",\"Veronika\",\"Veronike\",\"Veronique\",\"Vevay\",\"Vi\",\"Vicki\",\"Vickie\",\"Vicky\",\"Victoria\",\"Vida\",\"Viki\",\"Vikki\",\"Vikky\",\"Vilhelmina\",\"Vilma\",\"Vin\",\"Vina\",\"Vinita\",\"Vinni\",\"Vinnie\",\"Vinny\",\"Viola\",\"Violante\",\"Viole\",\"Violet\",\"Violetta\",\"Violette\",\"Virgie\",\"Virgina\",\"Virginia\",\"Virginie\",\"Vita\",\"Vitia\",\"Vitoria\",\"Vittoria\",\"Viv\",\"Viva\",\"Vivi\",\"Vivia\",\"Vivian\",\"Viviana\",\"Vivianna\",\"Vivianne\",\"Vivie\",\"Vivien\",\"Viviene\",\"Vivienne\",\"Viviyan\",\"Vivyan\",\"Vivyanne\",\"Vonni\",\"Vonnie\",\"Vonny\",\"Vyky\",\"Wallie\",\"Wallis\",\"Walliw\",\"Wally\",\"Waly\",\"Wanda\",\"Wandie\",\"Wandis\",\"Waneta\",\"Wanids\",\"Wenda\",\"Wendeline\",\"Wendi\",\"Wendie\",\"Wendy\",\"Wendye\",\"Wenona\",\"Wenonah\",\"Whitney\",\"Wileen\",\"Wilhelmina\",\"Wilhelmine\",\"Wilie\",\"Willa\",\"Willabella\",\"Willamina\",\"Willetta\",\"Willette\",\"Willi\",\"Willie\",\"Willow\",\"Willy\",\"Willyt\",\"Wilma\",\"Wilmette\",\"Wilona\",\"Wilone\",\"Wilow\",\"Windy\",\"Wini\",\"Winifred\",\"Winna\",\"Winnah\",\"Winne\",\"Winni\",\"Winnie\",\"Winnifred\",\"Winny\",\"Winona\",\"Winonah\",\"Wren\",\"Wrennie\",\"Wylma\",\"Wynn\",\"Wynne\",\"Wynnie\",\"Wynny\",\"Xaviera\",\"Xena\",\"Xenia\",\"Xylia\",\"Xylina\",\"Yalonda\",\"Yasmeen\",\"Yasmin\",\"Yelena\",\"Yetta\",\"Yettie\",\"Yetty\",\"Yevette\",\"Ynes\",\"Ynez\",\"Yoko\",\"Yolanda\",\"Yolande\",\"Yolane\",\"Yolanthe\",\"Yoshi\",\"Yoshiko\",\"Yovonnda\",\"Ysabel\",\"Yvette\",\"Yvonne\",\"Zabrina\",\"Zahara\",\"Zandra\",\"Zaneta\",\"Zara\",\"Zarah\",\"Zaria\",\"Zarla\",\"Zea\",\"Zelda\",\"Zelma\",\"Zena\",\"Zenia\",\"Zia\",\"Zilvia\",\"Zita\",\"Zitella\",\"Zoe\",\"Zola\",\"Zonda\",\"Zondra\",\"Zonnya\",\"Zora\",\"Zorah\",\"Zorana\",\"Zorina\",\"Zorine\",\"Zsazsa\",\"Zulema\",\"Zuzana\"],exports.starWars=[\"Ackbar\",\"Adi Gallia\",\"Anakin Skywalker\",\"Arvel Crynyd\",\"Ayla Secura\",\"Bail Prestor Organa\",\"Barriss Offee\",\"Ben Quadinaros\",\"Beru Whitesun lars\",\"Bib Fortuna\",\"Biggs Darklighter\",\"Boba Fett\",\"Bossk\",\"C-3PO\",\"Chewbacca\",\"Cliegg Lars\",\"Cordé\",\"Darth Maul\",\"Darth Vader\",\"Dexter Jettster\",\"Dooku\",\"Dormé\",\"Dud Bolt\",\"Eeth Koth\",\"Finis Valorum\",\"Gasgano\",\"Greedo\",\"Gregar Typho\",\"Grievous\",\"Han Solo\",\"IG-88\",\"Jabba Desilijic Tiure\",\"Jango Fett\",\"Jar Jar Binks\",\"Jek Tono Porkins\",\"Jocasta Nu\",\"Ki-Adi-Mundi\",\"Kit Fisto\",\"Lama Su\",\"Lando Calrissian\",\"Leia Organa\",\"Lobot\",\"Luke Skywalker\",\"Luminara Unduli\",\"Mace Windu\",\"Mas Amedda\",\"Mon Mothma\",\"Nien Nunb\",\"Nute Gunray\",\"Obi-Wan Kenobi\",\"Owen Lars\",\"Padmé Amidala\",\"Palpatine\",\"Plo Koon\",\"Poggle the Lesser\",\"Quarsh Panaka\",\"Qui-Gon Jinn\",\"R2-D2\",\"R4-P17\",\"R5-D4\",\"Ratts Tyerel\",\"Raymus Antilles\",\"Ric Olié\",\"Roos Tarpals\",\"Rugor Nass\",\"Saesee Tiin\",\"San Hill\",\"Sebulba\",\"Shaak Ti\",\"Shmi Skywalker\",\"Sly Moore\",\"Tarfful\",\"Taun We\",\"Tion Medon\",\"Wat Tambor\",\"Watto\",\"Wedge Antilles\",\"Wicket Systri Warrick\",\"Wilhuff Tarkin\",\"Yarael Poof\",\"Yoda\",\"Zam Wesell\"],exports.uniqueNamesGenerator=a=>{const n=[...a&&a.dictionaries||i.dictionaries],l={...i,...a,length:a&&a.length||n.length,dictionaries:n};if(!a||!a.dictionaries||!a.dictionaries.length)throw new Error('A \"dictionaries\" array must be provided. This is a breaking change introduced starting from Unique Name Generator v4. Read more about the breaking change here: https://github.com/andreasonny83/unique-names-generator#migration-guide');return new e(l).generate()};\n//# sourceMappingURL=index.js.map\n",
|
|
6
|
-
"import {\n type ActionEventPayload,\n ChannelType,\n composePromptFromState,\n type Content,\n type ControlMessagePayload,\n ContentType,\n createUniqueUuid,\n type EntityPayload,\n type EvaluatorEventPayload,\n EventType,\n type IAgentRuntime,\n imageDescriptionTemplate,\n type InvokePayload,\n logger,\n type Media,\n type Memory,\n type MentionContext,\n messageHandlerTemplate,\n type MessagePayload,\n ModelType,\n parseKeyValueXml,\n type Plugin,\n PluginEvents,\n postCreationTemplate,\n Role,\n type Room,\n type RunEventPayload,\n type UUID,\n type WorldPayload,\n getLocalServerUrl,\n} from '@elizaos/core';\nimport { v4 } from 'uuid';\n\nimport * as actions from './actions/index.ts';\nimport * as evaluators from './evaluators/index.ts';\nimport * as providers from './providers/index.ts';\n\nimport { TaskService } from './services/task.ts';\nimport { EmbeddingGenerationService } from './services/embedding.ts';\n\n/** Shape of image description XML response */\ninterface ImageDescriptionXml {\n description?: string;\n title?: string;\n text?: string;\n}\n\n/** Shape of message handler XML response */\ninterface MessageHandlerXml {\n thought?: string;\n actions?: string | string[];\n providers?: string | string[];\n text?: string;\n simple?: boolean;\n}\n\n/** Shape of post creation XML response */\ninterface PostCreationXml {\n post?: string;\n thought?: string;\n}\n\nexport * from './actions/index.ts';\nexport * from './evaluators/index.ts';\nexport * from './providers/index.ts';\n\n/**\n * Represents media data containing a buffer of data and the media type.\n * @typedef {Object} MediaData\n * @property {Buffer} data - The buffer of data.\n * @property {string} mediaType - The type of media.\n */\ntype MediaData = {\n data: Buffer;\n mediaType: string;\n};\n\n/**\n * Escapes special characters in a string to make it JSON-safe.\n */\n/* // Removing JSON specific helpers\nfunction escapeForJson(input: string): string {\n return input\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\"/g, '\\\\\"')\n .replace(/\\n/g, '\\\\n')\n .replace(/```/g, '\\\\`\\\\`\\\\`');\n}\n\nfunction sanitizeJson(rawJson: string): string {\n try {\n // Try parsing directly\n JSON.parse(rawJson);\n return rawJson; // Already valid\n } catch {\n // Continue to sanitization\n }\n\n // first, replace all newlines with \\n\n const sanitized = rawJson\n .replace(/\\n/g, '\\\\n')\n\n // then, replace all backticks with \\\\\\`\n .replace(/`/g, '\\\\\\`');\n\n // Regex to find and escape the \"text\" field\n const fixed = sanitized.replace(/\"text\"\\s*:\\s*\"([\\s\\S]*?)\"\\s*,\\s*\"simple\"/, (_match, group) => {\n const escapedText = escapeForJson(group);\n return `\"text\": \"${escapedText}\", \"simple\"`;\n });\n\n // Validate that the result is actually parseable\n try {\n JSON.parse(fixed);\n return fixed;\n } catch (e) {\n throw new Error(`Failed to sanitize JSON: ${e.message}`);\n }\n}\n*/\n\n/**\n * Fetches media data from a list of attachments, supporting both HTTP URLs and local file paths.\n *\n * @param attachments Array of Media objects containing URLs or file paths to fetch media from\n * @returns Promise that resolves with an array of MediaData objects containing the fetched media data and content type\n */\n/**\n * Fetches media data from given attachments.\n * @param {Media[]} attachments - Array of Media objects to fetch data from.\n * @returns {Promise<MediaData[]>} - A Promise that resolves with an array of MediaData objects.\n */\nexport async function fetchMediaData(attachments: Media[]): Promise<MediaData[]> {\n return Promise.all(\n attachments.map(async (attachment: Media) => {\n if (/^(http|https):\\/\\//.test(attachment.url)) {\n // Handle HTTP URLs\n const response = await fetch(attachment.url);\n if (!response.ok) {\n throw new Error(`Failed to fetch file: ${attachment.url}`);\n }\n const mediaBuffer = Buffer.from(await response.arrayBuffer());\n const mediaType = attachment.contentType || 'image/png';\n return { data: mediaBuffer, mediaType };\n }\n // if (fs.existsSync(attachment.url)) {\n // // Handle local file paths\n // const mediaBuffer = await fs.promises.readFile(path.resolve(attachment.url));\n // const mediaType = attachment.contentType || 'image/png';\n // return { data: mediaBuffer, mediaType };\n // }\n throw new Error(`File not found: ${attachment.url}. Make sure the path is correct.`);\n })\n );\n}\n\n/**\n * Processes attachments by generating descriptions for supported media types.\n * Currently supports image description generation.\n *\n * @param {Media[]} attachments - Array of attachments to process\n * @param {IAgentRuntime} runtime - The agent runtime for accessing AI models\n * @returns {Promise<Media[]>} - Returns a new array of processed attachments with added description, title, and text properties\n */\nexport async function processAttachments(\n attachments: Media[],\n runtime: IAgentRuntime\n): Promise<Media[]> {\n if (!attachments || attachments.length === 0) {\n return [];\n }\n runtime.logger.debug(\n { src: 'plugin:bootstrap', agentId: runtime.agentId, count: attachments.length },\n 'Processing attachments'\n );\n\n const processedAttachments: Media[] = [];\n\n for (const attachment of attachments) {\n try {\n // Start with the original attachment\n const processedAttachment: Media = { ...attachment };\n\n const isRemote = /^(http|https):\\/\\//.test(attachment.url);\n const url = isRemote ? attachment.url : getLocalServerUrl(attachment.url);\n // Only process images that don't already have descriptions\n if (attachment.contentType === ContentType.IMAGE && !attachment.description) {\n runtime.logger.debug(\n { src: 'plugin:bootstrap', agentId: runtime.agentId, url: attachment.url },\n 'Generating description for image'\n );\n\n let imageUrl = url;\n\n if (!isRemote) {\n // Only convert local/internal media to base64\n const res = await fetch(url);\n if (!res.ok) {\n throw new Error(`Failed to fetch image: ${res.statusText}`);\n }\n\n const arrayBuffer = await res.arrayBuffer();\n const buffer = Buffer.from(arrayBuffer);\n const contentType = res.headers.get('content-type') || 'application/octet-stream';\n imageUrl = `data:${contentType};base64,${buffer.toString('base64')}`;\n }\n\n try {\n const response = await runtime.useModel(ModelType.IMAGE_DESCRIPTION, {\n prompt: imageDescriptionTemplate,\n imageUrl,\n });\n\n if (typeof response === 'string') {\n // Parse XML response\n const parsedXml = parseKeyValueXml<ImageDescriptionXml>(response);\n\n if (parsedXml && (parsedXml.description || parsedXml.text)) {\n processedAttachment.description = parsedXml.description ?? '';\n processedAttachment.title = parsedXml.title ?? 'Image';\n processedAttachment.text = parsedXml.text ?? parsedXml.description ?? '';\n\n runtime.logger.debug(\n {\n src: 'plugin:bootstrap',\n agentId: runtime.agentId,\n descriptionPreview: processedAttachment.description?.substring(0, 100),\n },\n 'Generated description'\n );\n } else {\n // Fallback: Try simple regex parsing if parseKeyValueXml fails\n const responseStr = response as string;\n const titleMatch = responseStr.match(/<title>([^<]+)<\\/title>/);\n const descMatch = responseStr.match(/<description>([^<]+)<\\/description>/);\n const textMatch = responseStr.match(/<text>([^<]+)<\\/text>/);\n\n if (titleMatch || descMatch || textMatch) {\n processedAttachment.title = titleMatch?.[1] || 'Image';\n processedAttachment.description = descMatch?.[1] || '';\n processedAttachment.text = textMatch?.[1] || descMatch?.[1] || '';\n\n runtime.logger.debug(\n {\n src: 'plugin:bootstrap',\n agentId: runtime.agentId,\n descriptionPreview: processedAttachment.description?.substring(0, 100),\n },\n 'Used fallback XML parsing'\n );\n } else {\n runtime.logger.warn(\n { src: 'plugin:bootstrap', agentId: runtime.agentId },\n 'Failed to parse XML response for image description'\n );\n }\n }\n } else if (response && typeof response === 'object' && 'description' in response) {\n // Handle object responses for backwards compatibility\n processedAttachment.description = response.description;\n processedAttachment.title = response.title || 'Image';\n processedAttachment.text = response.description;\n\n runtime.logger.debug(\n {\n src: 'plugin:bootstrap',\n agentId: runtime.agentId,\n descriptionPreview: processedAttachment.description?.substring(0, 100),\n },\n 'Generated description'\n );\n } else {\n runtime.logger.warn(\n { src: 'plugin:bootstrap', agentId: runtime.agentId },\n 'Unexpected response format for image description'\n );\n }\n } catch (error) {\n runtime.logger.error(\n {\n src: 'plugin:bootstrap',\n agentId: runtime.agentId,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Error generating image description'\n );\n // Continue processing without description\n }\n } else if (attachment.contentType === ContentType.DOCUMENT && !attachment.text) {\n const res = await fetch(url);\n if (!res.ok) {\n throw new Error(`Failed to fetch document: ${res.statusText}`);\n }\n\n const contentType = res.headers.get('content-type') || '';\n const isPlainText = contentType.startsWith('text/plain');\n\n if (isPlainText) {\n runtime.logger.debug(\n { src: 'plugin:bootstrap', agentId: runtime.agentId, url: attachment.url },\n 'Processing plain text document'\n );\n\n const textContent = await res.text();\n processedAttachment.text = textContent;\n processedAttachment.title = processedAttachment.title || 'Text File';\n\n runtime.logger.debug(\n {\n src: 'plugin:bootstrap',\n agentId: runtime.agentId,\n textPreview: processedAttachment.text?.substring(0, 100),\n },\n 'Extracted text content'\n );\n } else {\n runtime.logger.warn(\n { src: 'plugin:bootstrap', agentId: runtime.agentId, contentType },\n 'Skipping non-plain-text document'\n );\n }\n }\n\n processedAttachments.push(processedAttachment);\n } catch (error) {\n runtime.logger.error(\n {\n src: 'plugin:bootstrap',\n agentId: runtime.agentId,\n attachmentUrl: attachment.url,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Failed to process attachment'\n );\n // Add the original attachment if processing fails\n processedAttachments.push(attachment);\n }\n }\n\n return processedAttachments;\n}\n\n/**\n * Determines whether the agent should respond to a message.\n * Uses simple rules for obvious cases (DM, mentions, specific sources) and defers to LLM for ambiguous cases.\n *\n * @returns Object containing:\n * - shouldRespond: boolean - whether the agent should respond (only relevant if skipEvaluation is true)\n * - skipEvaluation: boolean - whether we can skip the LLM evaluation (decision made by simple rules)\n * - reason: string - explanation for debugging\n */\nexport function shouldRespond(\n runtime: IAgentRuntime,\n message: Memory,\n room?: Room,\n mentionContext?: MentionContext\n): { shouldRespond: boolean; skipEvaluation: boolean; reason: string } {\n if (!room) {\n return { shouldRespond: false, skipEvaluation: true, reason: 'no room context' };\n }\n\n function normalizeEnvList(value: unknown): string[] {\n if (!value || typeof value !== 'string') {\n return [];\n }\n const cleaned = value.trim().replace(/^[\\[]|[\\]]$/g, '');\n return cleaned\n .split(',')\n .map((v) => v.trim())\n .filter(Boolean);\n }\n\n // Channel types that always trigger a response (private channels)\n const alwaysRespondChannels = [\n ChannelType.DM,\n ChannelType.VOICE_DM,\n ChannelType.SELF,\n ChannelType.API,\n ];\n\n // Sources that always trigger a response\n const alwaysRespondSources = ['client_chat'];\n\n // Support runtime-configurable overrides via env settings\n // Accepts both new and legacy setting names for backwards compatibility\n const customChannels = normalizeEnvList(\n runtime.getSetting('ALWAYS_RESPOND_CHANNELS') ||\n runtime.getSetting('SHOULD_RESPOND_BYPASS_TYPES')\n );\n const customSources = normalizeEnvList(\n runtime.getSetting('ALWAYS_RESPOND_SOURCES') ||\n runtime.getSetting('SHOULD_RESPOND_BYPASS_SOURCES')\n );\n\n const respondChannels = new Set(\n [...alwaysRespondChannels.map((t) => t.toString()), ...customChannels].map((s: string) =>\n s.trim().toLowerCase()\n )\n );\n\n const respondSources = [...alwaysRespondSources, ...customSources].map((s: string) =>\n s.trim().toLowerCase()\n );\n\n const roomType = room.type?.toString().toLowerCase();\n const sourceStr = message.content.source?.toLowerCase() || '';\n\n // 1. DM/VOICE_DM/API channels: always respond (private channels)\n if (respondChannels.has(roomType)) {\n return { shouldRespond: true, skipEvaluation: true, reason: `private channel: ${roomType}` };\n }\n\n // 2. Specific sources (e.g., client_chat): always respond\n if (respondSources.some((pattern) => sourceStr.includes(pattern))) {\n return {\n shouldRespond: true,\n skipEvaluation: true,\n reason: `whitelisted source: ${sourceStr}`,\n };\n }\n\n // 3. Platform mentions and replies: always respond\n // This is the key feature from mentionContext - platform-detected mentions/replies\n const hasPlatformMention = !!(mentionContext?.isMention || mentionContext?.isReply);\n if (hasPlatformMention) {\n const mentionType = mentionContext?.isMention ? 'mention' : 'reply';\n return { shouldRespond: true, skipEvaluation: true, reason: `platform ${mentionType}` };\n }\n\n // 4. All other cases: let the LLM decide\n // The LLM will handle: text-based name detection, indirect questions, conversation context, etc.\n return { shouldRespond: false, skipEvaluation: false, reason: 'needs LLM evaluation' };\n}\n\n/**\n * Handles the receipt of a reaction message and creates a memory in the designated memory manager.\n *\n * @param {Object} params - The parameters for the function.\n * @param {IAgentRuntime} params.runtime - The agent runtime object.\n * @param {Memory} params.message - The reaction message to be stored in memory.\n * @returns {void}\n */\nconst reactionReceivedHandler = async ({\n runtime,\n message,\n}: {\n runtime: IAgentRuntime;\n message: Memory;\n}) => {\n try {\n await runtime.createMemory(message, 'messages');\n } catch (error: unknown) {\n // PostgreSQL duplicate key violation error code\n const isDuplicateKeyError =\n error instanceof Error &&\n 'code' in error &&\n (error as NodeJS.ErrnoException).code === '23505';\n if (isDuplicateKeyError) {\n runtime.logger.warn(\n { src: 'plugin:bootstrap', agentId: runtime.agentId },\n 'Duplicate reaction memory, skipping'\n );\n return;\n }\n runtime.logger.error(\n {\n src: 'plugin:bootstrap',\n agentId: runtime.agentId,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Error in reaction handler'\n );\n }\n};\n\n/**\n * Handles the generation of a post (like a Tweet) and creates a memory for it.\n *\n * @param {Object} params - The parameters for the function.\n * @param {IAgentRuntime} params.runtime - The agent runtime object.\n * @param {Memory} params.message - The post message to be processed.\n * @param {HandlerCallback} params.callback - The callback function to execute after processing.\n * @returns {Promise<void>}\n */\nconst postGeneratedHandler = async ({\n runtime,\n callback,\n worldId,\n userId,\n roomId,\n source,\n}: InvokePayload) => {\n runtime.logger.info({ src: 'plugin:bootstrap', agentId: runtime.agentId }, 'Generating new post');\n // Ensure world exists first\n await runtime.ensureWorldExists({\n id: worldId,\n name: `${runtime.character.name}'s Feed`,\n agentId: runtime.agentId,\n messageServerId: userId as UUID,\n });\n\n // Ensure timeline room exists\n await runtime.ensureRoomExists({\n id: roomId,\n name: `${runtime.character.name}'s Feed`,\n source,\n type: ChannelType.FEED,\n channelId: `${userId}-home`,\n messageServerId: userId as UUID,\n worldId,\n });\n\n const message = {\n id: createUniqueUuid(runtime, `tweet-${Date.now()}`) as UUID,\n entityId: runtime.agentId,\n agentId: runtime.agentId,\n roomId,\n content: {},\n metadata: {\n entityName: runtime.character.name,\n type: 'message',\n },\n };\n\n // generate thought of which providers to use using messageHandlerTemplate\n\n // Compose state with relevant context for tweet generation\n let state = await runtime.composeState(message, [\n 'PROVIDERS',\n 'CHARACTER',\n 'RECENT_MESSAGES',\n 'ENTITIES',\n ]);\n\n // get twitterUserName\n const entity = await runtime.getEntityById(runtime.agentId);\n interface TwitterMetadata {\n twitter?: {\n userName?: string;\n };\n userName?: string;\n }\n const metadata = entity?.metadata as TwitterMetadata | undefined;\n if (metadata?.twitter?.userName || metadata?.userName) {\n state.values.twitterUserName = metadata.twitter?.userName || metadata.userName;\n }\n\n const prompt = composePromptFromState({\n state,\n template: runtime.character.templates?.messageHandlerTemplate || messageHandlerTemplate,\n });\n\n let responseContent: Content | null = null;\n\n // Retry if missing required fields\n let retries = 0;\n const maxRetries = 3;\n while (retries < maxRetries && (!responseContent?.thought || !responseContent?.actions)) {\n const response = await runtime.useModel(ModelType.TEXT_SMALL, {\n prompt,\n });\n\n // Parse XML\n const parsedXml = parseKeyValueXml<MessageHandlerXml>(response);\n if (parsedXml) {\n // Normalize actions/providers to arrays (XML parser may return string or array)\n const actionsRaw = parsedXml.actions;\n const providersRaw = parsedXml.providers;\n responseContent = {\n thought: parsedXml.thought ?? '',\n actions: Array.isArray(actionsRaw) ? actionsRaw : actionsRaw ? [actionsRaw] : ['IGNORE'],\n providers: Array.isArray(providersRaw) ? providersRaw : providersRaw ? [providersRaw] : [],\n text: parsedXml.text ?? '',\n simple: parsedXml.simple ?? false,\n };\n } else {\n responseContent = null;\n }\n\n retries++;\n if (!responseContent?.thought || !responseContent?.actions) {\n runtime.logger.warn(\n { src: 'plugin:bootstrap', agentId: runtime.agentId, response, parsedXml, responseContent },\n 'Missing required fields, retrying'\n );\n }\n }\n\n // update stats with correct providers\n state = await runtime.composeState(message, responseContent?.providers);\n\n // Generate prompt for tweet content\n const postPrompt = composePromptFromState({\n state,\n template: runtime.character.templates?.postCreationTemplate || postCreationTemplate,\n });\n\n // Use TEXT_LARGE model as we expect structured XML text, not a JSON object\n const xmlResponseText = await runtime.useModel(ModelType.TEXT_LARGE, {\n prompt: postPrompt,\n });\n\n // Parse the XML response\n const parsedXmlResponse = parseKeyValueXml<PostCreationXml>(xmlResponseText);\n\n if (!parsedXmlResponse) {\n runtime.logger.error(\n { src: 'plugin:bootstrap', agentId: runtime.agentId, xmlResponseText },\n 'Failed to parse XML response for post creation'\n );\n // Handle the error appropriately, maybe retry or return an error state\n return;\n }\n\n /**\n * Cleans up a tweet text by removing quotes and fixing newlines\n */\n function cleanupPostText(text: string): string {\n // Remove quotes\n let cleanedText = text.replace(/^['\"](.*)['\"]$/, '$1');\n // Fix newlines\n cleanedText = cleanedText.replaceAll(/\\\\n/g, '\\n\\n');\n cleanedText = cleanedText.replace(/([^\\n])\\n([^\\n])/g, '$1\\n\\n$2');\n\n return cleanedText;\n }\n\n // Cleanup the tweet text\n const cleanedText = cleanupPostText(parsedXmlResponse.post ?? '');\n\n // Prepare media if included\n // const mediaData: MediaData[] = [];\n // if (jsonResponse.imagePrompt) {\n // \tconst images = await runtime.useModel(ModelType.IMAGE, {\n // \t\tprompt: jsonResponse.imagePrompt,\n // \t\toutput: \"no-schema\",\n // \t});\n // \ttry {\n // \t\t// Convert image prompt to Media format for fetchMediaData\n // \t\tconst imagePromptMedia: any[] = images\n\n // \t\t// Fetch media using the utility function\n // \t\tconst fetchedMedia = await fetchMediaData(imagePromptMedia);\n // \t\tmediaData.push(...fetchedMedia);\n // \t} catch (error) {\n // \t\truntime.logger.error(\"Error fetching media for tweet:\", error);\n // \t}\n // }\n\n // have we posted it before?\n const RM = state.data?.providers?.RECENT_MESSAGES as\n | { data?: { recentMessages?: Array<{ content: { text?: string } }> } }\n | undefined;\n if (RM?.data?.recentMessages) {\n for (const m of RM.data.recentMessages) {\n if (cleanedText === m.content.text) {\n runtime.logger.info(\n { src: 'plugin:bootstrap', agentId: runtime.agentId, cleanedText },\n 'Already recently posted that, retrying'\n );\n postGeneratedHandler({\n runtime,\n callback,\n worldId,\n userId,\n roomId,\n source,\n });\n return; // don't call callbacks\n }\n }\n }\n\n // GPT 3.5/4: /(i\\s+do\\s+not|i'?m\\s+not)\\s+(feel\\s+)?comfortable\\s+generating\\s+that\\s+type\\s+of\\s+content|(inappropriate|explicit|offensive|communicate\\s+respectfully|aim\\s+to\\s+(be\\s+)?helpful)/i\n const oaiRefusalRegex =\n /((i\\s+do\\s+not|i'm\\s+not)\\s+(feel\\s+)?comfortable\\s+generating\\s+that\\s+type\\s+of\\s+content)|(inappropriate|explicit|respectful|offensive|guidelines|aim\\s+to\\s+(be\\s+)?helpful|communicate\\s+respectfully)/i;\n const anthropicRefusalRegex =\n /(i'?m\\s+unable\\s+to\\s+help\\s+with\\s+that\\s+request|due\\s+to\\s+safety\\s+concerns|that\\s+may\\s+violate\\s+(our\\s+)?guidelines|provide\\s+helpful\\s+and\\s+safe\\s+responses|let'?s\\s+try\\s+a\\s+different\\s+direction|goes\\s+against\\s+(our\\s+)?use\\s+case\\s+policies|ensure\\s+safe\\s+and\\s+responsible\\s+use)/i;\n const googleRefusalRegex =\n /(i\\s+can'?t\\s+help\\s+with\\s+that|that\\s+goes\\s+against\\s+(our\\s+)?(policy|policies)|i'?m\\s+still\\s+learning|response\\s+must\\s+follow\\s+(usage|safety)\\s+policies|i'?ve\\s+been\\s+designed\\s+to\\s+avoid\\s+that)/i;\n //const cohereRefusalRegex = /(request\\s+cannot\\s+be\\s+processed|violates\\s+(our\\s+)?content\\s+policy|not\\s+permitted\\s+by\\s+usage\\s+restrictions)/i\n const generalRefusalRegex =\n /(response\\s+was\\s+withheld|content\\s+was\\s+filtered|this\\s+request\\s+cannot\\s+be\\s+completed|violates\\s+our\\s+safety\\s+policy|content\\s+is\\s+not\\s+available)/i;\n\n if (\n oaiRefusalRegex.test(cleanedText) ||\n anthropicRefusalRegex.test(cleanedText) ||\n googleRefusalRegex.test(cleanedText) ||\n generalRefusalRegex.test(cleanedText)\n ) {\n runtime.logger.info(\n { src: 'plugin:bootstrap', agentId: runtime.agentId, cleanedText },\n 'Got prompt moderation refusal, retrying'\n );\n postGeneratedHandler({\n runtime,\n callback,\n worldId,\n userId,\n roomId,\n source,\n });\n return; // don't call callbacks\n }\n\n // Create the response memory\n const responseMessages = [\n {\n id: v4() as UUID,\n entityId: runtime.agentId,\n agentId: runtime.agentId,\n content: {\n text: cleanedText,\n source,\n channelType: ChannelType.FEED,\n thought: parsedXmlResponse.thought ?? '',\n type: 'post',\n },\n roomId: message.roomId,\n createdAt: Date.now(),\n },\n ];\n\n for (const message of responseMessages) {\n await callback?.(message.content);\n }\n\n // Process the actions and execute the callback\n // await runtime.processActions(message, responseMessages, state, callback);\n\n // // Run any configured evaluators\n // await runtime.evaluate(\n // \tmessage,\n // \tstate,\n // \ttrue, // Post generation is always a \"responding\" scenario\n // \tcallback,\n // \tresponseMessages,\n // );\n};\n\n/**\n * Syncs a single user into an entity\n */\n/**\n * Asynchronously sync a single user with the specified parameters.\n *\n * @param {UUID} entityId - The unique identifier for the entity.\n * @param {IAgentRuntime} runtime - The runtime environment for the agent.\n * @param {any} user - The user object to sync.\n * @param {string} serverId - The unique identifier for the server.\n * @param {string} channelId - The unique identifier for the channel.\n * @param {ChannelType} type - The type of channel.\n * @param {string} source - The source of the user data.\n * @returns {Promise<void>} A promise that resolves once the user is synced.\n */\nconst syncSingleUser = async (\n entityId: UUID,\n runtime: IAgentRuntime,\n messageServerId: UUID,\n channelId: string,\n type: ChannelType,\n source: string\n) => {\n try {\n const entity = await runtime.getEntityById(entityId);\n runtime.logger.info(\n {\n src: 'plugin:bootstrap',\n agentId: runtime.agentId,\n entityId,\n username: entity?.metadata?.username,\n },\n 'Syncing user'\n );\n\n // Ensure we're not using WORLD type and that we have a valid channelId\n if (!channelId) {\n runtime.logger.warn(\n { src: 'plugin:bootstrap', agentId: runtime.agentId, entityId: entity?.id },\n 'Cannot sync user without a valid channelId'\n );\n return;\n }\n\n const roomId = createUniqueUuid(runtime, channelId);\n const worldId = createUniqueUuid(runtime, messageServerId);\n\n // Create world with ownership metadata for DM connections (onboarding)\n const worldMetadata =\n type === ChannelType.DM\n ? {\n ownership: {\n ownerId: entityId,\n },\n roles: {\n [entityId]: Role.OWNER,\n },\n settings: {}, // Initialize empty settings for onboarding\n }\n : undefined;\n\n runtime.logger.info(\n {\n src: 'plugin:bootstrap',\n agentId: runtime.agentId,\n type,\n isDM: type === ChannelType.DM,\n worldMetadata,\n },\n 'syncSingleUser'\n );\n\n await runtime.ensureConnection({\n entityId,\n roomId,\n name: (entity?.metadata?.name || entity?.metadata?.username || `User${entityId}`) as\n | undefined\n | string,\n source,\n channelId,\n messageServerId,\n type,\n worldId,\n metadata: worldMetadata,\n });\n\n // Verify the world was created with proper metadata\n try {\n const createdWorld = await runtime.getWorld(worldId);\n runtime.logger.info(\n {\n src: 'plugin:bootstrap',\n agentId: runtime.agentId,\n worldId,\n metadata: createdWorld?.metadata,\n },\n 'Created world check'\n );\n } catch (error) {\n runtime.logger.error(\n {\n src: 'plugin:bootstrap',\n agentId: runtime.agentId,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Failed to verify created world'\n );\n }\n\n runtime.logger.success(\n {\n src: 'plugin:bootstrap',\n agentId: runtime.agentId,\n agentName: runtime.character.name,\n entityId: entity?.id,\n },\n 'Successfully synced user'\n );\n } catch (error) {\n runtime.logger.error(\n {\n src: 'plugin:bootstrap',\n agentId: runtime.agentId,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Error syncing user'\n );\n }\n};\n\n/**\n * Handles standardized server data for both WORLD_JOINED and WORLD_CONNECTED events\n */\nconst handleServerSync = async ({\n runtime,\n world,\n rooms,\n entities,\n source,\n onComplete,\n}: WorldPayload) => {\n runtime.logger.debug(\n { src: 'plugin:bootstrap', agentId: runtime.agentId, serverName: world.name },\n 'Handling server sync event'\n );\n try {\n await runtime.ensureConnections(entities, rooms, source, world);\n runtime.logger.debug(\n { src: 'plugin:bootstrap', agentId: runtime.agentId, worldName: world.name },\n 'Successfully synced standardized world structure'\n );\n onComplete?.();\n } catch (error) {\n runtime.logger.error(\n {\n src: 'plugin:bootstrap',\n agentId: runtime.agentId,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Error processing standardized server data'\n );\n }\n};\n\n/**\n * Handles control messages for enabling or disabling UI elements in the frontend\n * @param {Object} params - Parameters for the handler\n * @param {IAgentRuntime} params.runtime - The runtime instance\n * @param {Object} params.message - The control message\n * @param {string} params.source - Source of the message\n */\nconst controlMessageHandler = async ({ runtime, message }: ControlMessagePayload) => {\n try {\n runtime.logger.debug(\n {\n src: 'plugin:bootstrap',\n agentId: runtime.agentId,\n action: message.payload.action,\n roomId: message.roomId,\n },\n 'Processing control message'\n );\n\n // Here we would use a WebSocket service to send the control message to the frontend\n // This would typically be handled by a registered service with sendMessage capability\n\n // Get any registered WebSocket service\n const serviceNames = Array.from(runtime.getAllServices().keys()) as string[];\n const websocketServiceName = serviceNames.find(\n (name: string) =>\n name.toLowerCase().includes('websocket') || name.toLowerCase().includes('socket')\n );\n\n if (websocketServiceName) {\n const websocketService = runtime.getService(websocketServiceName);\n interface WebSocketServiceWithSendMessage {\n sendMessage: (message: { type: string; payload: unknown }) => Promise<void>;\n }\n if (websocketService && 'sendMessage' in websocketService) {\n // Send the control message through the WebSocket service\n await (websocketService as WebSocketServiceWithSendMessage).sendMessage({\n type: 'controlMessage',\n payload: {\n action: message.payload.action,\n target: message.payload.target,\n roomId: message.roomId,\n },\n });\n\n runtime.logger.debug(\n { src: 'plugin:bootstrap', agentId: runtime.agentId, action: message.payload.action },\n 'Control message sent successfully'\n );\n } else {\n runtime.logger.error(\n { src: 'plugin:bootstrap', agentId: runtime.agentId },\n 'WebSocket service does not have sendMessage method'\n );\n }\n } else {\n runtime.logger.error(\n { src: 'plugin:bootstrap', agentId: runtime.agentId },\n 'No WebSocket service found to send control message'\n );\n }\n } catch (error) {\n runtime.logger.error(\n {\n src: 'plugin:bootstrap',\n agentId: runtime.agentId,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Error processing control message'\n );\n }\n};\n\nconst events: PluginEvents = {\n [EventType.REACTION_RECEIVED]: [\n async (payload: MessagePayload) => {\n await reactionReceivedHandler(payload);\n },\n ],\n\n [EventType.POST_GENERATED]: [\n async (payload: InvokePayload) => {\n await postGeneratedHandler(payload);\n },\n ],\n\n [EventType.MESSAGE_SENT]: [\n async (payload: MessagePayload) => {\n payload.runtime.logger.debug(\n {\n src: 'plugin:bootstrap',\n agentId: payload.runtime.agentId,\n text: payload.message.content.text,\n },\n 'Message sent'\n );\n },\n ],\n\n [EventType.WORLD_JOINED]: [\n async (payload: WorldPayload) => {\n await handleServerSync(payload);\n },\n ],\n\n [EventType.WORLD_CONNECTED]: [\n async (payload: WorldPayload) => {\n await handleServerSync(payload);\n },\n ],\n\n [EventType.ENTITY_JOINED]: [\n async (payload: EntityPayload) => {\n payload.runtime.logger.debug(\n { src: 'plugin:bootstrap', agentId: payload.runtime.agentId, entityId: payload.entityId },\n 'ENTITY_JOINED event received'\n );\n\n if (!payload.worldId) {\n payload.runtime.logger.error(\n { src: 'plugin:bootstrap', agentId: payload.runtime.agentId },\n 'No worldId provided for entity joined'\n );\n return;\n }\n if (!payload.roomId) {\n payload.runtime.logger.error(\n { src: 'plugin:bootstrap', agentId: payload.runtime.agentId },\n 'No roomId provided for entity joined'\n );\n return;\n }\n if (!payload.metadata?.type) {\n payload.runtime.logger.error(\n { src: 'plugin:bootstrap', agentId: payload.runtime.agentId },\n 'No type provided for entity joined'\n );\n return;\n }\n\n const channelType = payload.metadata?.type;\n if (typeof channelType !== 'string') {\n payload.runtime.logger.warn('Missing channel type in entity payload');\n return;\n }\n await syncSingleUser(\n payload.entityId,\n payload.runtime,\n payload.worldId,\n payload.roomId,\n channelType as ChannelType,\n payload.source\n );\n },\n ],\n\n [EventType.ENTITY_LEFT]: [\n async (payload: EntityPayload) => {\n try {\n // Update entity to inactive\n const entity = await payload.runtime.getEntityById(payload.entityId);\n if (entity) {\n entity.metadata = {\n ...entity.metadata,\n status: 'INACTIVE',\n leftAt: Date.now(),\n };\n await payload.runtime.updateEntity(entity);\n }\n payload.runtime.logger.info(\n {\n src: 'plugin:bootstrap',\n agentId: payload.runtime.agentId,\n entityId: payload.entityId,\n worldId: payload.worldId,\n },\n 'User left world'\n );\n } catch (error: unknown) {\n payload.runtime.logger.error(\n {\n src: 'plugin:bootstrap',\n agentId: payload.runtime.agentId,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Error handling user left'\n );\n }\n },\n ],\n\n [EventType.ACTION_STARTED]: [\n async (payload: ActionEventPayload) => {\n try {\n // Only notify for client_chat messages\n if (payload.content?.source === 'client_chat') {\n interface MessageBusServiceWithNotify {\n notifyActionStart: (\n roomId: UUID,\n worldId: UUID,\n content: Content,\n messageId?: UUID\n ) => Promise<void>;\n notifyActionUpdate: (\n roomId: UUID,\n worldId: UUID,\n content: Content,\n messageId?: UUID\n ) => Promise<void>;\n }\n const messageBusService = payload.runtime.getService(\n 'message-bus-service'\n ) as MessageBusServiceWithNotify | null;\n if (messageBusService) {\n await messageBusService.notifyActionStart(\n payload.roomId,\n payload.world,\n payload.content,\n payload.messageId\n );\n }\n }\n } catch (error) {\n logger.error(\n {\n src: 'plugin:bootstrap',\n agentId: payload.runtime.agentId,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Error sending refetch request'\n );\n }\n },\n async (payload: ActionEventPayload) => {\n try {\n await payload.runtime.log({\n entityId: payload.runtime.agentId,\n roomId: payload.roomId,\n type: 'action_event',\n body: {\n runId: payload.content?.runId,\n actionId: payload.content?.actionId,\n actionName: payload.content?.actions?.[0],\n roomId: payload.roomId,\n messageId: payload.messageId,\n timestamp: Date.now(),\n planStep: payload.content?.planStep,\n source: 'actionHandler',\n },\n });\n logger.debug(\n {\n src: 'plugin:bootstrap',\n agentId: payload.runtime.agentId,\n actionName: payload.content?.actions?.[0],\n },\n 'Logged ACTION_STARTED event'\n );\n } catch (error) {\n logger.error(\n {\n src: 'plugin:bootstrap',\n agentId: payload.runtime.agentId,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Failed to log ACTION_STARTED event'\n );\n }\n },\n ],\n\n [EventType.ACTION_COMPLETED]: [\n async (payload: ActionEventPayload) => {\n try {\n // Only notify for client_chat messages\n if (payload.content?.source === 'client_chat') {\n interface MessageBusServiceWithNotify {\n notifyActionStart: (\n roomId: UUID,\n worldId: UUID,\n content: Content,\n messageId?: UUID\n ) => Promise<void>;\n notifyActionUpdate: (\n roomId: UUID,\n worldId: UUID,\n content: Content,\n messageId?: UUID\n ) => Promise<void>;\n }\n const messageBusService = payload.runtime.getService(\n 'message-bus-service'\n ) as MessageBusServiceWithNotify | null;\n if (messageBusService) {\n await messageBusService.notifyActionUpdate(\n payload.roomId,\n payload.world,\n payload.content,\n payload.messageId\n );\n }\n }\n } catch (error) {\n logger.error(\n {\n src: 'plugin:bootstrap',\n agentId: payload.runtime.agentId,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Error sending refetch request'\n );\n }\n },\n ],\n\n [EventType.EVALUATOR_STARTED]: [\n async (payload: EvaluatorEventPayload) => {\n logger.debug(\n {\n src: 'plugin:bootstrap:evaluator',\n agentId: payload.runtime.agentId,\n evaluatorName: payload.evaluatorName,\n evaluatorId: payload.evaluatorId,\n },\n 'Evaluator started'\n );\n },\n ],\n\n [EventType.EVALUATOR_COMPLETED]: [\n async (payload: EvaluatorEventPayload) => {\n const status = payload.error ? 'failed' : 'completed';\n logger.debug(\n {\n src: 'plugin:bootstrap:evaluator',\n agentId: payload.runtime.agentId,\n status,\n evaluatorName: payload.evaluatorName,\n evaluatorId: payload.evaluatorId,\n error: payload.error?.message,\n },\n 'Evaluator completed'\n );\n },\n ],\n\n [EventType.RUN_STARTED]: [\n async (payload: RunEventPayload) => {\n try {\n await payload.runtime.log({\n entityId: payload.entityId,\n roomId: payload.roomId,\n type: 'run_event',\n body: {\n runId: payload.runId,\n status: payload.status,\n messageId: payload.messageId,\n roomId: payload.roomId,\n entityId: payload.entityId,\n startTime: payload.startTime,\n source: payload.source || 'unknown',\n },\n });\n logger.debug(\n { src: 'plugin:bootstrap', agentId: payload.runtime.agentId, runId: payload.runId },\n 'Logged RUN_STARTED event'\n );\n } catch (error) {\n logger.error(\n {\n src: 'plugin:bootstrap',\n agentId: payload.runtime.agentId,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Failed to log RUN_STARTED event'\n );\n }\n },\n ],\n\n [EventType.RUN_ENDED]: [\n async (payload: RunEventPayload) => {\n try {\n await payload.runtime.log({\n entityId: payload.entityId,\n roomId: payload.roomId,\n type: 'run_event',\n body: {\n runId: payload.runId,\n status: payload.status,\n messageId: payload.messageId,\n roomId: payload.roomId,\n entityId: payload.entityId,\n startTime: payload.startTime,\n endTime: payload.endTime,\n duration: payload.duration,\n error: payload.error,\n source: payload.source || 'unknown',\n },\n });\n logger.debug(\n {\n src: 'plugin:bootstrap',\n agentId: payload.runtime.agentId,\n runId: payload.runId,\n status: payload.status,\n },\n 'Logged RUN_ENDED event'\n );\n } catch (error) {\n logger.error(\n {\n src: 'plugin:bootstrap',\n agentId: payload.runtime.agentId,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Failed to log RUN_ENDED event'\n );\n }\n },\n ],\n\n [EventType.RUN_TIMEOUT]: [\n async (payload: RunEventPayload) => {\n try {\n await payload.runtime.log({\n entityId: payload.entityId,\n roomId: payload.roomId,\n type: 'run_event',\n body: {\n runId: payload.runId,\n status: payload.status,\n messageId: payload.messageId,\n roomId: payload.roomId,\n entityId: payload.entityId,\n startTime: payload.startTime,\n endTime: payload.endTime,\n duration: payload.duration,\n error: payload.error,\n source: payload.source || 'unknown',\n },\n });\n logger.debug(\n { src: 'plugin:bootstrap', agentId: payload.runtime.agentId, runId: payload.runId },\n 'Logged RUN_TIMEOUT event'\n );\n } catch (error) {\n logger.error(\n {\n src: 'plugin:bootstrap',\n agentId: payload.runtime.agentId,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Failed to log RUN_TIMEOUT event'\n );\n }\n },\n ],\n\n [EventType.CONTROL_MESSAGE]: [\n async (payload: ControlMessagePayload) => {\n if (!payload.message) {\n payload.runtime.logger.warn(\n { src: 'plugin:bootstrap' },\n 'CONTROL_MESSAGE received without message property'\n );\n return;\n }\n await controlMessageHandler(payload);\n },\n ],\n};\n\nexport const bootstrapPlugin: Plugin = {\n name: 'bootstrap',\n description: 'Agent bootstrap with basic actions and evaluators',\n actions: [\n actions.replyAction,\n actions.followRoomAction,\n actions.unfollowRoomAction,\n actions.ignoreAction,\n actions.noneAction,\n actions.muteRoomAction,\n actions.unmuteRoomAction,\n actions.sendMessageAction,\n actions.updateEntityAction,\n actions.choiceAction,\n actions.updateRoleAction,\n actions.updateSettingsAction,\n actions.generateImageAction,\n ],\n events,\n evaluators: [evaluators.reflectionEvaluator],\n providers: [\n providers.evaluatorsProvider,\n providers.anxietyProvider,\n providers.timeProvider,\n providers.entitiesProvider,\n providers.relationshipsProvider,\n providers.choiceProvider,\n providers.factsProvider,\n providers.roleProvider,\n providers.settingsProvider,\n // there is given no reason for this - odi\n //providers.capabilitiesProvider,\n providers.attachmentsProvider,\n providers.providersProvider,\n providers.actionsProvider,\n providers.actionStateProvider,\n providers.characterProvider,\n providers.recentMessagesProvider,\n providers.worldProvider,\n ],\n services: [TaskService, EmbeddingGenerationService],\n};\n\nexport default bootstrapPlugin;\n",
|
|
6
|
+
"import {\n type ActionEventPayload,\n ChannelType,\n composePromptFromState,\n type Content,\n type ControlMessagePayload,\n ContentType,\n createUniqueUuid,\n type EntityPayload,\n type EvaluatorEventPayload,\n EventType,\n type IAgentRuntime,\n imageDescriptionTemplate,\n type InvokePayload,\n logger,\n type Media,\n type Memory,\n type MentionContext,\n messageHandlerTemplate,\n type MessagePayload,\n ModelType,\n parseKeyValueXml,\n parseBooleanFromText,\n type Plugin,\n PluginEvents,\n postCreationTemplate,\n Role,\n type Room,\n type RunEventPayload,\n type UUID,\n type WorldPayload,\n getLocalServerUrl,\n} from '@elizaos/core';\nimport { v4 } from 'uuid';\n\nimport * as actions from './actions/index.ts';\nimport * as evaluators from './evaluators/index.ts';\nimport * as providers from './providers/index.ts';\nimport { bootstrapInstructionsProvider, bootstrapSettingsProvider } from './providers/plugin-info.ts';\n\nimport { TaskService } from './services/task.ts';\nimport { EmbeddingGenerationService } from './services/embedding.ts';\n\n/** Shape of image description XML response */\ninterface ImageDescriptionXml {\n description?: string;\n title?: string;\n text?: string;\n}\n\n/** Shape of message handler XML response */\ninterface MessageHandlerXml {\n thought?: string;\n actions?: string | string[];\n providers?: string | string[];\n text?: string;\n simple?: boolean;\n}\n\n/** Shape of post creation XML response */\ninterface PostCreationXml {\n post?: string;\n thought?: string;\n}\n\nexport * from './actions/index.ts';\nexport * from './evaluators/index.ts';\nexport * from './providers/index.ts';\n\n/**\n * Represents media data containing a buffer of data and the media type.\n * @typedef {Object} MediaData\n * @property {Buffer} data - The buffer of data.\n * @property {string} mediaType - The type of media.\n */\ntype MediaData = {\n data: Buffer;\n mediaType: string;\n};\n\n/**\n * Checks if memory creation is disabled via the DISABLE_MEMORY_CREATION setting.\n */\nconst isMemoryCreationDisabled = (runtime: IAgentRuntime): boolean => {\n const setting = runtime.getSetting('DISABLE_MEMORY_CREATION');\n if (typeof setting === 'boolean') {\n return setting;\n }\n if (typeof setting === 'string') {\n return parseBooleanFromText(setting);\n }\n if (setting != null) {\n return parseBooleanFromText(String(setting));\n }\n return false;\n};\n\n/**\n * Gets the list of allowed memory source IDs from the ALLOW_MEMORY_SOURCE_IDS setting.\n * Returns null if no whitelist is configured (meaning all sources are allowed).\n */\nconst getAllowedMemorySources = (runtime: IAgentRuntime): string[] | null => {\n const setting = runtime.getSetting('ALLOW_MEMORY_SOURCE_IDS');\n if (Array.isArray(setting)) {\n return setting.map((value) => String(value).trim()).filter(Boolean);\n }\n if (typeof setting === 'string') {\n const trimmed = setting.trim();\n if (!trimmed) {\n return null;\n }\n if (trimmed.startsWith('[')) {\n try {\n const parsed = JSON.parse(trimmed);\n if (Array.isArray(parsed)) {\n return parsed.map((value) => String(value).trim()).filter(Boolean);\n }\n runtime.logger.warn(\n { src: 'plugin:bootstrap', parsed },\n 'ALLOW_MEMORY_SOURCE_IDS JSON did not parse to an array; ignoring setting'\n );\n return null;\n } catch (error) {\n runtime.logger.warn(\n { src: 'plugin:bootstrap', error, setting: trimmed },\n 'Failed to parse ALLOW_MEMORY_SOURCE_IDS JSON; ignoring setting'\n );\n return null;\n }\n }\n return trimmed\n .split(',')\n .map((value) => value.trim())\n .filter(Boolean);\n }\n if (setting != null) {\n return [String(setting).trim()].filter(Boolean);\n }\n return null;\n};\n\n/**\n * Escapes special characters in a string to make it JSON-safe.\n */\n/* // Removing JSON specific helpers\nfunction escapeForJson(input: string): string {\n return input\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\"/g, '\\\\\"')\n .replace(/\\n/g, '\\\\n')\n .replace(/```/g, '\\\\`\\\\`\\\\`');\n}\n\nfunction sanitizeJson(rawJson: string): string {\n try {\n // Try parsing directly\n JSON.parse(rawJson);\n return rawJson; // Already valid\n } catch {\n // Continue to sanitization\n }\n\n // first, replace all newlines with \\n\n const sanitized = rawJson\n .replace(/\\n/g, '\\\\n')\n\n // then, replace all backticks with \\\\\\`\n .replace(/`/g, '\\\\\\`');\n\n // Regex to find and escape the \"text\" field\n const fixed = sanitized.replace(/\"text\"\\s*:\\s*\"([\\s\\S]*?)\"\\s*,\\s*\"simple\"/, (_match, group) => {\n const escapedText = escapeForJson(group);\n return `\"text\": \"${escapedText}\", \"simple\"`;\n });\n\n // Validate that the result is actually parseable\n try {\n JSON.parse(fixed);\n return fixed;\n } catch (e) {\n throw new Error(`Failed to sanitize JSON: ${e.message}`);\n }\n}\n*/\n\n/**\n * Fetches media data from a list of attachments, supporting both HTTP URLs and local file paths.\n *\n * @param attachments Array of Media objects containing URLs or file paths to fetch media from\n * @returns Promise that resolves with an array of MediaData objects containing the fetched media data and content type\n */\n/**\n * Fetches media data from given attachments.\n * @param {Media[]} attachments - Array of Media objects to fetch data from.\n * @returns {Promise<MediaData[]>} - A Promise that resolves with an array of MediaData objects.\n */\nexport async function fetchMediaData(attachments: Media[]): Promise<MediaData[]> {\n return Promise.all(\n attachments.map(async (attachment: Media) => {\n // Handle data URLs (e.g., data:image/png;base64,...)\n if (attachment.url.startsWith('data:')) {\n const match = attachment.url.match(/^data:([^;]+);base64,(.+)$/);\n if (match) {\n const mediaType = match[1];\n const base64Data = match[2];\n const mediaBuffer = Buffer.from(base64Data, 'base64');\n return { data: mediaBuffer, mediaType };\n }\n throw new Error(`Invalid data URL format: ${attachment.url.substring(0, 50)}...`);\n }\n if (/^(http|https):\\/\\//.test(attachment.url)) {\n // Handle HTTP URLs\n const response = await fetch(attachment.url);\n if (!response.ok) {\n throw new Error(`Failed to fetch file: ${attachment.url}`);\n }\n const mediaBuffer = Buffer.from(await response.arrayBuffer());\n const mediaType = attachment.contentType || 'image/png';\n return { data: mediaBuffer, mediaType };\n }\n // if (fs.existsSync(attachment.url)) {\n // // Handle local file paths\n // const mediaBuffer = await fs.promises.readFile(path.resolve(attachment.url));\n // const mediaType = attachment.contentType || 'image/png';\n // return { data: mediaBuffer, mediaType };\n // }\n throw new Error(`File not found: ${attachment.url}. Make sure the path is correct.`);\n })\n );\n}\n\n/**\n * Processes attachments by generating descriptions for supported media types.\n * Currently supports image description generation.\n *\n * @param {Media[]} attachments - Array of attachments to process\n * @param {IAgentRuntime} runtime - The agent runtime for accessing AI models\n * @returns {Promise<Media[]>} - Returns a new array of processed attachments with added description, title, and text properties\n */\nexport async function processAttachments(\n attachments: Media[],\n runtime: IAgentRuntime\n): Promise<Media[]> {\n if (!attachments || attachments.length === 0) {\n return [];\n }\n runtime.logger.debug(\n { src: 'plugin:bootstrap', agentId: runtime.agentId, count: attachments.length },\n 'Processing attachments'\n );\n\n const processedAttachments: Media[] = [];\n\n for (const attachment of attachments) {\n try {\n // Start with the original attachment\n const processedAttachment: Media = { ...attachment };\n\n const isDataUrl = attachment.url.startsWith('data:');\n const isRemote = /^(http|https):\\/\\//.test(attachment.url);\n const url = isRemote ? attachment.url : isDataUrl ? attachment.url : getLocalServerUrl(attachment.url);\n // Only process images that don't already have descriptions\n if (attachment.contentType === ContentType.IMAGE && !attachment.description) {\n runtime.logger.debug(\n { src: 'plugin:bootstrap', agentId: runtime.agentId, url: attachment.url?.substring(0, 100) },\n 'Generating description for image'\n );\n\n let imageUrl = url;\n\n if (!isRemote && !isDataUrl) {\n // Only convert local/internal media to base64\n const res = await fetch(url);\n if (!res.ok) {\n throw new Error(`Failed to fetch image: ${res.statusText}`);\n }\n\n const arrayBuffer = await res.arrayBuffer();\n const buffer = Buffer.from(arrayBuffer);\n const contentType = res.headers.get('content-type') || 'application/octet-stream';\n imageUrl = `data:${contentType};base64,${buffer.toString('base64')}`;\n }\n\n try {\n const response = await runtime.useModel(ModelType.IMAGE_DESCRIPTION, {\n prompt: imageDescriptionTemplate,\n imageUrl,\n });\n\n if (typeof response === 'string') {\n // Parse XML response\n const parsedXml = parseKeyValueXml<ImageDescriptionXml>(response);\n\n if (parsedXml && (parsedXml.description || parsedXml.text)) {\n processedAttachment.description = parsedXml.description ?? '';\n processedAttachment.title = parsedXml.title ?? 'Image';\n processedAttachment.text = parsedXml.text ?? parsedXml.description ?? '';\n\n runtime.logger.debug(\n {\n src: 'plugin:bootstrap',\n agentId: runtime.agentId,\n descriptionPreview: processedAttachment.description?.substring(0, 100),\n },\n 'Generated description'\n );\n } else {\n // Fallback: Try simple regex parsing if parseKeyValueXml fails\n const responseStr = response as string;\n const titleMatch = responseStr.match(/<title>([^<]+)<\\/title>/);\n const descMatch = responseStr.match(/<description>([^<]+)<\\/description>/);\n const textMatch = responseStr.match(/<text>([^<]+)<\\/text>/);\n\n if (titleMatch || descMatch || textMatch) {\n processedAttachment.title = titleMatch?.[1] || 'Image';\n processedAttachment.description = descMatch?.[1] || '';\n processedAttachment.text = textMatch?.[1] || descMatch?.[1] || '';\n\n runtime.logger.debug(\n {\n src: 'plugin:bootstrap',\n agentId: runtime.agentId,\n descriptionPreview: processedAttachment.description?.substring(0, 100),\n },\n 'Used fallback XML parsing'\n );\n } else {\n runtime.logger.warn(\n { src: 'plugin:bootstrap', agentId: runtime.agentId },\n 'Failed to parse XML response for image description'\n );\n }\n }\n } else if (response && typeof response === 'object' && 'description' in response) {\n // Handle object responses for backwards compatibility\n processedAttachment.description = response.description;\n processedAttachment.title = response.title || 'Image';\n processedAttachment.text = response.description;\n\n runtime.logger.debug(\n {\n src: 'plugin:bootstrap',\n agentId: runtime.agentId,\n descriptionPreview: processedAttachment.description?.substring(0, 100),\n },\n 'Generated description'\n );\n } else {\n runtime.logger.warn(\n { src: 'plugin:bootstrap', agentId: runtime.agentId },\n 'Unexpected response format for image description'\n );\n }\n } catch (error) {\n runtime.logger.error(\n {\n src: 'plugin:bootstrap',\n agentId: runtime.agentId,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Error generating image description'\n );\n // Continue processing without description\n }\n } else if (attachment.contentType === ContentType.DOCUMENT && !attachment.text) {\n const res = await fetch(url);\n if (!res.ok) {\n throw new Error(`Failed to fetch document: ${res.statusText}`);\n }\n\n const contentType = res.headers.get('content-type') || '';\n const isPlainText = contentType.startsWith('text/plain');\n\n if (isPlainText) {\n runtime.logger.debug(\n { src: 'plugin:bootstrap', agentId: runtime.agentId, url: attachment.url },\n 'Processing plain text document'\n );\n\n const textContent = await res.text();\n processedAttachment.text = textContent;\n processedAttachment.title = processedAttachment.title || 'Text File';\n\n runtime.logger.debug(\n {\n src: 'plugin:bootstrap',\n agentId: runtime.agentId,\n textPreview: processedAttachment.text?.substring(0, 100),\n },\n 'Extracted text content'\n );\n } else {\n runtime.logger.warn(\n { src: 'plugin:bootstrap', agentId: runtime.agentId, contentType },\n 'Skipping non-plain-text document'\n );\n }\n }\n\n processedAttachments.push(processedAttachment);\n } catch (error) {\n runtime.logger.error(\n {\n src: 'plugin:bootstrap',\n agentId: runtime.agentId,\n attachmentUrl: attachment.url,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Failed to process attachment'\n );\n // Add the original attachment if processing fails\n processedAttachments.push(attachment);\n }\n }\n\n return processedAttachments;\n}\n\n/**\n * Determines whether the agent should respond to a message.\n * Uses simple rules for obvious cases (DM, mentions, specific sources) and defers to LLM for ambiguous cases.\n *\n * @returns Object containing:\n * - shouldRespond: boolean - whether the agent should respond (only relevant if skipEvaluation is true)\n * - skipEvaluation: boolean - whether we can skip the LLM evaluation (decision made by simple rules)\n * - reason: string - explanation for debugging\n */\nexport function shouldRespond(\n runtime: IAgentRuntime,\n message: Memory,\n room?: Room,\n mentionContext?: MentionContext\n): { shouldRespond: boolean; skipEvaluation: boolean; reason: string } {\n if (!room) {\n return { shouldRespond: false, skipEvaluation: true, reason: 'no room context' };\n }\n\n function normalizeEnvList(value: unknown): string[] {\n if (!value || typeof value !== 'string') {\n return [];\n }\n const cleaned = value.trim().replace(/^[\\[]|[\\]]$/g, '');\n return cleaned\n .split(',')\n .map((v) => v.trim())\n .filter(Boolean);\n }\n\n // Channel types that always trigger a response (private channels)\n const alwaysRespondChannels = [\n ChannelType.DM,\n ChannelType.VOICE_DM,\n ChannelType.SELF,\n ChannelType.API,\n ];\n\n // Sources that always trigger a response\n const alwaysRespondSources = ['client_chat'];\n\n // Support runtime-configurable overrides via env settings\n // Accepts both new and legacy setting names for backwards compatibility\n const customChannels = normalizeEnvList(\n runtime.getSetting('ALWAYS_RESPOND_CHANNELS') ||\n runtime.getSetting('SHOULD_RESPOND_BYPASS_TYPES')\n );\n const customSources = normalizeEnvList(\n runtime.getSetting('ALWAYS_RESPOND_SOURCES') ||\n runtime.getSetting('SHOULD_RESPOND_BYPASS_SOURCES')\n );\n\n const respondChannels = new Set(\n [...alwaysRespondChannels.map((t) => t.toString()), ...customChannels].map((s: string) =>\n s.trim().toLowerCase()\n )\n );\n\n const respondSources = [...alwaysRespondSources, ...customSources].map((s: string) =>\n s.trim().toLowerCase()\n );\n\n const roomType = room.type?.toString().toLowerCase();\n const sourceStr = message.content.source?.toLowerCase() || '';\n\n // 1. DM/VOICE_DM/API channels: always respond (private channels)\n if (respondChannels.has(roomType)) {\n return { shouldRespond: true, skipEvaluation: true, reason: `private channel: ${roomType}` };\n }\n\n // 2. Specific sources (e.g., client_chat): always respond\n if (respondSources.some((pattern) => sourceStr.includes(pattern))) {\n return {\n shouldRespond: true,\n skipEvaluation: true,\n reason: `whitelisted source: ${sourceStr}`,\n };\n }\n\n // 3. Platform mentions and replies: always respond\n // This is the key feature from mentionContext - platform-detected mentions/replies\n const hasPlatformMention = !!(mentionContext?.isMention || mentionContext?.isReply);\n if (hasPlatformMention) {\n const mentionType = mentionContext?.isMention ? 'mention' : 'reply';\n return { shouldRespond: true, skipEvaluation: true, reason: `platform ${mentionType}` };\n }\n\n // 4. All other cases: let the LLM decide\n // The LLM will handle: text-based name detection, indirect questions, conversation context, etc.\n return { shouldRespond: false, skipEvaluation: false, reason: 'needs LLM evaluation' };\n}\n\n/**\n * Handles the receipt of a reaction message and creates a memory in the designated memory manager.\n *\n * @param {Object} params - The parameters for the function.\n * @param {IAgentRuntime} params.runtime - The agent runtime object.\n * @param {Memory} params.message - The reaction message to be stored in memory.\n * @returns {void}\n */\nconst reactionReceivedHandler = async ({\n runtime,\n message,\n}: {\n runtime: IAgentRuntime;\n message: Memory;\n}) => {\n try {\n const disableMemoryCreation = isMemoryCreationDisabled(runtime);\n const allowedSources = getAllowedMemorySources(runtime);\n const reactionSourceId = (message.metadata as Record<string, any> | undefined)?.sourceId;\n const sourceAllowed =\n !allowedSources ||\n (typeof reactionSourceId === 'string' && allowedSources.includes(reactionSourceId));\n\n if (disableMemoryCreation) {\n runtime.logger.debug(\n {\n src: 'plugin:bootstrap',\n agentId: runtime.agentId,\n messageId: message.id,\n sourceId: reactionSourceId ?? null,\n },\n 'DISABLE_MEMORY_CREATION enabled; skipping reaction memory creation'\n );\n return;\n }\n if (!sourceAllowed) {\n runtime.logger.info(\n {\n src: 'plugin:bootstrap',\n agentId: runtime.agentId,\n messageId: message.id,\n sourceId: reactionSourceId ?? null,\n allowedSources,\n },\n 'Reaction source not whitelisted; skipping reaction memory creation'\n );\n return;\n }\n await runtime.createMemory(message, 'messages');\n runtime.logger.debug(\n {\n src: 'plugin:bootstrap',\n agentId: runtime.agentId,\n messageId: message.id,\n sourceId: reactionSourceId ?? null,\n },\n 'Stored reaction memory'\n );\n } catch (error: any) {\n if (error.code === '23505') {\n runtime.logger.warn({ src: 'plugin:bootstrap', agentId: runtime.agentId }, 'Duplicate reaction memory, skipping');\n return;\n }\n runtime.logger.error({ src: 'plugin:bootstrap', agentId: runtime.agentId, error: error instanceof Error ? error.message : String(error) }, 'Error in reaction handler');\n }\n};\n\n/**\n * Handles the generation of a post (like a Tweet) and creates a memory for it.\n *\n * @param {Object} params - The parameters for the function.\n * @param {IAgentRuntime} params.runtime - The agent runtime object.\n * @param {Memory} params.message - The post message to be processed.\n * @param {HandlerCallback} params.callback - The callback function to execute after processing.\n * @returns {Promise<void>}\n */\nconst postGeneratedHandler = async ({\n runtime,\n callback,\n worldId,\n userId,\n roomId,\n source,\n}: InvokePayload) => {\n runtime.logger.info({ src: 'plugin:bootstrap', agentId: runtime.agentId }, 'Generating new post');\n // Ensure world exists first\n await runtime.ensureWorldExists({\n id: worldId,\n name: `${runtime.character.name}'s Feed`,\n agentId: runtime.agentId,\n messageServerId: userId as UUID,\n });\n\n // Ensure timeline room exists\n await runtime.ensureRoomExists({\n id: roomId,\n name: `${runtime.character.name}'s Feed`,\n source,\n type: ChannelType.FEED,\n channelId: `${userId}-home`,\n messageServerId: userId as UUID,\n worldId,\n });\n\n const message = {\n id: createUniqueUuid(runtime, `tweet-${Date.now()}`) as UUID,\n entityId: runtime.agentId,\n agentId: runtime.agentId,\n roomId,\n content: {},\n metadata: {\n entityName: runtime.character.name,\n type: 'message',\n },\n };\n\n // generate thought of which providers to use using messageHandlerTemplate\n\n // Compose state with relevant context for tweet generation\n let state = await runtime.composeState(message, [\n 'PROVIDERS',\n 'CHARACTER',\n 'RECENT_MESSAGES',\n 'ENTITIES',\n ]);\n\n // get twitterUserName\n const entity = await runtime.getEntityById(runtime.agentId);\n interface TwitterMetadata {\n twitter?: {\n userName?: string;\n };\n userName?: string;\n }\n const metadata = entity?.metadata as TwitterMetadata | undefined;\n if (metadata?.twitter?.userName || metadata?.userName) {\n state.values.twitterUserName = metadata.twitter?.userName ?? metadata.userName;\n }\n\n const prompt = composePromptFromState({\n state,\n template: runtime.character.templates?.messageHandlerTemplate || messageHandlerTemplate,\n });\n\n let responseContent: Content | null = null;\n\n // Retry if missing required fields\n let retries = 0;\n const maxRetries = 3;\n while (retries < maxRetries && (!responseContent?.thought || !responseContent?.actions)) {\n const response = await runtime.useModel(ModelType.TEXT_SMALL, {\n prompt,\n });\n\n // Parse XML\n const parsedXml = parseKeyValueXml<MessageHandlerXml>(response);\n if (parsedXml) {\n // Normalize actions/providers to arrays (XML parser may return string or array)\n const actionsRaw = parsedXml.actions;\n const providersRaw = parsedXml.providers;\n responseContent = {\n thought: parsedXml.thought ?? '',\n actions: Array.isArray(actionsRaw) ? actionsRaw : actionsRaw ? [actionsRaw] : ['IGNORE'],\n providers: Array.isArray(providersRaw) ? providersRaw : providersRaw ? [providersRaw] : [],\n text: parsedXml.text ?? '',\n simple: parsedXml.simple ?? false,\n };\n } else {\n responseContent = null;\n }\n\n retries++;\n if (!responseContent?.thought || !responseContent?.actions) {\n runtime.logger.warn(\n { src: 'plugin:bootstrap', agentId: runtime.agentId, response, parsedXml, responseContent },\n 'Missing required fields, retrying'\n );\n }\n }\n\n // update stats with correct providers\n state = await runtime.composeState(message, responseContent?.providers);\n\n // Generate prompt for tweet content\n const postPrompt = composePromptFromState({\n state,\n template: runtime.character.templates?.postCreationTemplate || postCreationTemplate,\n });\n\n // Use TEXT_LARGE model as we expect structured XML text, not a JSON object\n const xmlResponseText = await runtime.useModel(ModelType.TEXT_LARGE, {\n prompt: postPrompt,\n });\n\n // Parse the XML response\n const parsedXmlResponse = parseKeyValueXml<PostCreationXml>(xmlResponseText);\n\n if (!parsedXmlResponse) {\n runtime.logger.error(\n { src: 'plugin:bootstrap', agentId: runtime.agentId, xmlResponseText },\n 'Failed to parse XML response for post creation'\n );\n // Handle the error appropriately, maybe retry or return an error state\n return;\n }\n\n /**\n * Cleans up a tweet text by removing quotes and fixing newlines\n */\n function cleanupPostText(text: string): string {\n // Remove quotes\n let cleanedText = text.replace(/^['\"](.*)['\"]$/, '$1');\n // Fix newlines\n cleanedText = cleanedText.replaceAll(/\\\\n/g, '\\n\\n');\n cleanedText = cleanedText.replace(/([^\\n])\\n([^\\n])/g, '$1\\n\\n$2');\n\n return cleanedText;\n }\n\n // Cleanup the tweet text\n const cleanedText = cleanupPostText(parsedXmlResponse.post ?? '');\n\n // Prepare media if included\n // const mediaData: MediaData[] = [];\n // if (jsonResponse.imagePrompt) {\n // \tconst images = await runtime.useModel(ModelType.IMAGE, {\n // \t\tprompt: jsonResponse.imagePrompt,\n // \t\toutput: \"no-schema\",\n // \t});\n // \ttry {\n // \t\t// Convert image prompt to Media format for fetchMediaData\n // \t\tconst imagePromptMedia: any[] = images\n\n // \t\t// Fetch media using the utility function\n // \t\tconst fetchedMedia = await fetchMediaData(imagePromptMedia);\n // \t\tmediaData.push(...fetchedMedia);\n // \t} catch (error) {\n // \t\truntime.logger.error(\"Error fetching media for tweet:\", error);\n // \t}\n // }\n\n // have we posted it before?\n const RM = state.data?.providers?.RECENT_MESSAGES as\n | { data?: { recentMessages?: Array<{ content: { text?: string } }> } }\n | undefined;\n if (RM?.data?.recentMessages) {\n for (const m of RM.data.recentMessages) {\n if (cleanedText === m.content.text) {\n runtime.logger.info(\n { src: 'plugin:bootstrap', agentId: runtime.agentId, cleanedText },\n 'Already recently posted that, retrying'\n );\n postGeneratedHandler({\n runtime,\n callback,\n worldId,\n userId,\n roomId,\n source,\n });\n return; // don't call callbacks\n }\n }\n }\n\n // GPT 3.5/4: /(i\\s+do\\s+not|i'?m\\s+not)\\s+(feel\\s+)?comfortable\\s+generating\\s+that\\s+type\\s+of\\s+content|(inappropriate|explicit|offensive|communicate\\s+respectfully|aim\\s+to\\s+(be\\s+)?helpful)/i\n const oaiRefusalRegex =\n /((i\\s+do\\s+not|i'm\\s+not)\\s+(feel\\s+)?comfortable\\s+generating\\s+that\\s+type\\s+of\\s+content)|(inappropriate|explicit|respectful|offensive|guidelines|aim\\s+to\\s+(be\\s+)?helpful|communicate\\s+respectfully)/i;\n const anthropicRefusalRegex =\n /(i'?m\\s+unable\\s+to\\s+help\\s+with\\s+that\\s+request|due\\s+to\\s+safety\\s+concerns|that\\s+may\\s+violate\\s+(our\\s+)?guidelines|provide\\s+helpful\\s+and\\s+safe\\s+responses|let'?s\\s+try\\s+a\\s+different\\s+direction|goes\\s+against\\s+(our\\s+)?use\\s+case\\s+policies|ensure\\s+safe\\s+and\\s+responsible\\s+use)/i;\n const googleRefusalRegex =\n /(i\\s+can'?t\\s+help\\s+with\\s+that|that\\s+goes\\s+against\\s+(our\\s+)?(policy|policies)|i'?m\\s+still\\s+learning|response\\s+must\\s+follow\\s+(usage|safety)\\s+policies|i'?ve\\s+been\\s+designed\\s+to\\s+avoid\\s+that)/i;\n //const cohereRefusalRegex = /(request\\s+cannot\\s+be\\s+processed|violates\\s+(our\\s+)?content\\s+policy|not\\s+permitted\\s+by\\s+usage\\s+restrictions)/i\n const generalRefusalRegex =\n /(response\\s+was\\s+withheld|content\\s+was\\s+filtered|this\\s+request\\s+cannot\\s+be\\s+completed|violates\\s+our\\s+safety\\s+policy|content\\s+is\\s+not\\s+available)/i;\n\n if (\n oaiRefusalRegex.test(cleanedText) ||\n anthropicRefusalRegex.test(cleanedText) ||\n googleRefusalRegex.test(cleanedText) ||\n generalRefusalRegex.test(cleanedText)\n ) {\n runtime.logger.info(\n { src: 'plugin:bootstrap', agentId: runtime.agentId, cleanedText },\n 'Got prompt moderation refusal, retrying'\n );\n postGeneratedHandler({\n runtime,\n callback,\n worldId,\n userId,\n roomId,\n source,\n });\n return; // don't call callbacks\n }\n\n // Create the response memory\n const responseMessages = [\n {\n id: v4() as UUID,\n entityId: runtime.agentId,\n agentId: runtime.agentId,\n content: {\n text: cleanedText,\n source,\n channelType: ChannelType.FEED,\n thought: parsedXmlResponse.thought ?? '',\n type: 'post',\n },\n roomId: message.roomId,\n createdAt: Date.now(),\n },\n ];\n\n for (const message of responseMessages) {\n await callback?.(message.content);\n }\n\n // Process the actions and execute the callback\n // await runtime.processActions(message, responseMessages, state, callback);\n\n // // Run any configured evaluators\n // await runtime.evaluate(\n // \tmessage,\n // \tstate,\n // \ttrue, // Post generation is always a \"responding\" scenario\n // \tcallback,\n // \tresponseMessages,\n // );\n};\n\n/**\n * Syncs a single user into an entity\n */\n/**\n * Asynchronously sync a single user with the specified parameters.\n *\n * @param {UUID} entityId - The unique identifier for the entity.\n * @param {IAgentRuntime} runtime - The runtime environment for the agent.\n * @param {any} user - The user object to sync.\n * @param {string} serverId - The unique identifier for the server.\n * @param {string} channelId - The unique identifier for the channel.\n * @param {ChannelType} type - The type of channel.\n * @param {string} source - The source of the user data.\n * @returns {Promise<void>} A promise that resolves once the user is synced.\n */\nconst syncSingleUser = async (\n entityId: UUID,\n runtime: IAgentRuntime,\n messageServerId: UUID,\n channelId: string,\n type: ChannelType,\n source: string\n) => {\n try {\n const entity = await runtime.getEntityById(entityId);\n runtime.logger.info(\n {\n src: 'plugin:bootstrap',\n agentId: runtime.agentId,\n entityId,\n username: entity?.metadata?.username,\n },\n 'Syncing user'\n );\n\n // Ensure we're not using WORLD type and that we have a valid channelId\n if (!channelId) {\n runtime.logger.warn(\n { src: 'plugin:bootstrap', agentId: runtime.agentId, entityId: entity?.id },\n 'Cannot sync user without a valid channelId'\n );\n return;\n }\n\n const roomId = createUniqueUuid(runtime, channelId);\n const worldId = createUniqueUuid(runtime, messageServerId);\n\n // Create world with ownership metadata for DM connections (onboarding)\n const worldMetadata =\n type === ChannelType.DM\n ? {\n ownership: {\n ownerId: entityId,\n },\n roles: {\n [entityId]: Role.OWNER,\n },\n settings: {}, // Initialize empty settings for onboarding\n }\n : undefined;\n\n runtime.logger.info(\n {\n src: 'plugin:bootstrap',\n agentId: runtime.agentId,\n type,\n isDM: type === ChannelType.DM,\n worldMetadata,\n },\n 'syncSingleUser'\n );\n\n await runtime.ensureConnection({\n entityId,\n roomId,\n name: (entity?.metadata?.name || entity?.metadata?.username || `User${entityId}`) as\n | undefined\n | string,\n source,\n channelId,\n messageServerId,\n type,\n worldId,\n metadata: worldMetadata,\n });\n\n // Verify the world was created with proper metadata\n try {\n const createdWorld = await runtime.getWorld(worldId);\n runtime.logger.info(\n {\n src: 'plugin:bootstrap',\n agentId: runtime.agentId,\n worldId,\n metadata: createdWorld?.metadata,\n },\n 'Created world check'\n );\n } catch (error) {\n runtime.logger.error(\n {\n src: 'plugin:bootstrap',\n agentId: runtime.agentId,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Failed to verify created world'\n );\n }\n\n runtime.logger.success(\n {\n src: 'plugin:bootstrap',\n agentId: runtime.agentId,\n agentName: runtime.character.name,\n entityId: entity?.id,\n },\n 'Successfully synced user'\n );\n } catch (error) {\n runtime.logger.error(\n {\n src: 'plugin:bootstrap',\n agentId: runtime.agentId,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Error syncing user'\n );\n }\n};\n\n/**\n * Handles standardized server data for both WORLD_JOINED and WORLD_CONNECTED events\n */\nconst handleServerSync = async ({\n runtime,\n world,\n rooms,\n entities,\n source,\n onComplete,\n}: WorldPayload) => {\n runtime.logger.debug(\n { src: 'plugin:bootstrap', agentId: runtime.agentId, serverName: world.name },\n 'Handling server sync event'\n );\n try {\n await runtime.ensureConnections(entities, rooms, source, world);\n runtime.logger.debug(\n { src: 'plugin:bootstrap', agentId: runtime.agentId, worldName: world.name },\n 'Successfully synced standardized world structure'\n );\n onComplete?.();\n } catch (error) {\n runtime.logger.error(\n {\n src: 'plugin:bootstrap',\n agentId: runtime.agentId,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Error processing standardized server data'\n );\n }\n};\n\n/**\n * Handles control messages for enabling or disabling UI elements in the frontend\n * @param {Object} params - Parameters for the handler\n * @param {IAgentRuntime} params.runtime - The runtime instance\n * @param {Object} params.message - The control message\n * @param {string} params.source - Source of the message\n */\nconst controlMessageHandler = async ({ runtime, message, source: _source }: ControlMessagePayload) => {\n try {\n runtime.logger.debug(\n { src: 'plugin:bootstrap', agentId: runtime.agentId, action: message.payload.action, roomId: message.roomId },\n 'Processing control message'\n );\n\n // Here we would use a WebSocket service to send the control message to the frontend\n // This would typically be handled by a registered service with sendMessage capability\n\n // Get any registered WebSocket service\n const serviceNames = Array.from(runtime.getAllServices().keys()) as string[];\n const websocketServiceName = serviceNames.find(\n (name: string) =>\n name.toLowerCase().includes('websocket') || name.toLowerCase().includes('socket')\n );\n\n if (websocketServiceName) {\n const websocketService = runtime.getService(websocketServiceName);\n interface WebSocketServiceWithSendMessage {\n sendMessage: (message: { type: string; payload: unknown }) => Promise<void>;\n }\n if (websocketService && 'sendMessage' in websocketService) {\n // Send the control message through the WebSocket service\n await (websocketService as WebSocketServiceWithSendMessage).sendMessage({\n type: 'controlMessage',\n payload: {\n action: message.payload.action,\n target: message.payload.target,\n roomId: message.roomId,\n },\n });\n\n runtime.logger.debug(\n { src: 'plugin:bootstrap', agentId: runtime.agentId, action: message.payload.action },\n 'Control message sent successfully'\n );\n } else {\n runtime.logger.error(\n { src: 'plugin:bootstrap', agentId: runtime.agentId },\n 'WebSocket service does not have sendMessage method'\n );\n }\n } else {\n runtime.logger.error(\n { src: 'plugin:bootstrap', agentId: runtime.agentId },\n 'No WebSocket service found to send control message'\n );\n }\n } catch (error) {\n runtime.logger.error({ src: 'plugin:bootstrap', agentId: runtime.agentId, error: error instanceof Error ? error.message : String(error) }, 'Error processing control message');\n }\n};\n\nconst events: PluginEvents = {\n [EventType.REACTION_RECEIVED]: [\n async (payload: MessagePayload) => {\n await reactionReceivedHandler(payload);\n },\n ],\n\n [EventType.POST_GENERATED]: [\n async (payload: InvokePayload) => {\n await postGeneratedHandler(payload);\n },\n ],\n\n [EventType.MESSAGE_SENT]: [\n async (payload: MessagePayload) => {\n payload.runtime.logger.debug(\n {\n src: 'plugin:bootstrap',\n agentId: payload.runtime.agentId,\n text: payload.message.content.text,\n },\n 'Message sent'\n );\n },\n ],\n\n [EventType.WORLD_JOINED]: [\n async (payload: WorldPayload) => {\n await handleServerSync(payload);\n },\n ],\n\n [EventType.WORLD_CONNECTED]: [\n async (payload: WorldPayload) => {\n await handleServerSync(payload);\n },\n ],\n\n [EventType.ENTITY_JOINED]: [\n async (payload: EntityPayload) => {\n payload.runtime.logger.debug(\n { src: 'plugin:bootstrap', agentId: payload.runtime.agentId, entityId: payload.entityId },\n 'ENTITY_JOINED event received'\n );\n\n if (!payload.worldId) {\n payload.runtime.logger.error(\n { src: 'plugin:bootstrap', agentId: payload.runtime.agentId },\n 'No worldId provided for entity joined'\n );\n return;\n }\n if (!payload.roomId) {\n payload.runtime.logger.error(\n { src: 'plugin:bootstrap', agentId: payload.runtime.agentId },\n 'No roomId provided for entity joined'\n );\n return;\n }\n if (!payload.metadata?.type) {\n payload.runtime.logger.error(\n { src: 'plugin:bootstrap', agentId: payload.runtime.agentId },\n 'No type provided for entity joined'\n );\n return;\n }\n\n const channelType = payload.metadata?.type;\n if (typeof channelType !== 'string') {\n payload.runtime.logger.warn(\n { src: 'plugin:bootstrap', agentId: payload.runtime.agentId },\n 'Missing channel type in entity payload'\n );\n return;\n }\n await syncSingleUser(\n payload.entityId,\n payload.runtime,\n payload.worldId,\n payload.roomId,\n channelType as ChannelType,\n payload.source\n );\n },\n ],\n\n [EventType.ENTITY_LEFT]: [\n async (payload: EntityPayload) => {\n try {\n // Update entity to inactive\n const entity = await payload.runtime.getEntityById(payload.entityId);\n if (entity) {\n entity.metadata = {\n ...entity.metadata,\n status: 'INACTIVE',\n leftAt: Date.now(),\n };\n await payload.runtime.updateEntity(entity);\n }\n payload.runtime.logger.info(\n {\n src: 'plugin:bootstrap',\n agentId: payload.runtime.agentId,\n entityId: payload.entityId,\n worldId: payload.worldId,\n },\n 'User left world'\n );\n } catch (error: unknown) {\n payload.runtime.logger.error(\n {\n src: 'plugin:bootstrap',\n agentId: payload.runtime.agentId,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Error handling user left'\n );\n }\n },\n ],\n\n [EventType.ACTION_STARTED]: [\n async (payload: ActionEventPayload) => {\n try {\n // Only notify for client_chat messages\n if (payload.content?.source === 'client_chat') {\n interface MessageBusServiceWithNotify {\n notifyActionStart: (\n roomId: UUID,\n worldId: UUID,\n content: Content,\n messageId?: UUID\n ) => Promise<void>;\n }\n const messageBusService = payload.runtime.getService(\n 'message-bus-service'\n ) as MessageBusServiceWithNotify | null;\n if (messageBusService) {\n await messageBusService.notifyActionStart(\n payload.roomId,\n payload.world,\n payload.content,\n payload.messageId\n );\n }\n }\n } catch (error) {\n logger.error(\n {\n src: 'plugin:bootstrap',\n agentId: payload.runtime.agentId,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Error sending refetch request'\n );\n }\n },\n async (payload: ActionEventPayload) => {\n try {\n await payload.runtime.log({\n entityId: payload.runtime.agentId,\n roomId: payload.roomId,\n type: 'action_event',\n body: {\n runId: payload.content?.runId,\n actionId: payload.content?.actionId,\n actionName: payload.content?.actions?.[0],\n roomId: payload.roomId,\n messageId: payload.messageId,\n timestamp: Date.now(),\n planStep: payload.content?.planStep,\n source: 'actionHandler',\n },\n });\n logger.debug(\n {\n src: 'plugin:bootstrap',\n agentId: payload.runtime.agentId,\n actionName: payload.content?.actions?.[0],\n },\n 'Logged ACTION_STARTED event'\n );\n } catch (error) {\n logger.error(\n {\n src: 'plugin:bootstrap',\n agentId: payload.runtime.agentId,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Failed to log ACTION_STARTED event'\n );\n }\n },\n ],\n\n [EventType.ACTION_COMPLETED]: [\n async (payload: ActionEventPayload) => {\n try {\n // Only notify for client_chat messages\n if (payload.content?.source === 'client_chat') {\n interface MessageBusServiceWithNotify {\n notifyActionUpdate: (\n roomId: UUID,\n worldId: UUID,\n content: Content,\n messageId?: UUID\n ) => Promise<void>;\n }\n const messageBusService = payload.runtime.getService(\n 'message-bus-service'\n ) as MessageBusServiceWithNotify | null;\n if (messageBusService) {\n await messageBusService.notifyActionUpdate(\n payload.roomId,\n payload.world,\n payload.content,\n payload.messageId\n );\n }\n }\n } catch (error) {\n logger.error(\n {\n src: 'plugin:bootstrap',\n agentId: payload.runtime.agentId,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Error sending refetch request'\n );\n }\n },\n ],\n\n [EventType.EVALUATOR_STARTED]: [\n async (payload: EvaluatorEventPayload) => {\n logger.debug(\n {\n src: 'plugin:bootstrap:evaluator',\n agentId: payload.runtime.agentId,\n evaluatorName: payload.evaluatorName,\n evaluatorId: payload.evaluatorId,\n },\n 'Evaluator started'\n );\n },\n ],\n\n [EventType.EVALUATOR_COMPLETED]: [\n async (payload: EvaluatorEventPayload) => {\n const status = payload.error ? 'failed' : 'completed';\n logger.debug(\n {\n src: 'plugin:bootstrap:evaluator',\n agentId: payload.runtime.agentId,\n status,\n evaluatorName: payload.evaluatorName,\n evaluatorId: payload.evaluatorId,\n error: payload.error?.message,\n },\n 'Evaluator completed'\n );\n },\n ],\n\n [EventType.RUN_STARTED]: [\n async (payload: RunEventPayload) => {\n try {\n await payload.runtime.log({\n entityId: payload.entityId,\n roomId: payload.roomId,\n type: 'run_event',\n body: {\n runId: payload.runId,\n status: payload.status,\n messageId: payload.messageId,\n roomId: payload.roomId,\n entityId: payload.entityId,\n startTime: payload.startTime,\n source: payload.source || 'unknown',\n },\n });\n logger.debug(\n { src: 'plugin:bootstrap', agentId: payload.runtime.agentId, runId: payload.runId },\n 'Logged RUN_STARTED event'\n );\n } catch (error) {\n logger.error(\n {\n src: 'plugin:bootstrap',\n agentId: payload.runtime.agentId,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Failed to log RUN_STARTED event'\n );\n }\n },\n ],\n\n [EventType.RUN_ENDED]: [\n async (payload: RunEventPayload) => {\n try {\n await payload.runtime.log({\n entityId: payload.entityId,\n roomId: payload.roomId,\n type: 'run_event',\n body: {\n runId: payload.runId,\n status: payload.status,\n messageId: payload.messageId,\n roomId: payload.roomId,\n entityId: payload.entityId,\n startTime: payload.startTime,\n endTime: payload.endTime,\n duration: payload.duration,\n error: payload.error,\n source: payload.source || 'unknown',\n },\n });\n logger.debug(\n {\n src: 'plugin:bootstrap',\n agentId: payload.runtime.agentId,\n runId: payload.runId,\n status: payload.status,\n },\n 'Logged RUN_ENDED event'\n );\n } catch (error) {\n logger.error(\n {\n src: 'plugin:bootstrap',\n agentId: payload.runtime.agentId,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Failed to log RUN_ENDED event'\n );\n }\n },\n ],\n\n [EventType.RUN_TIMEOUT]: [\n async (payload: RunEventPayload) => {\n try {\n await payload.runtime.log({\n entityId: payload.entityId,\n roomId: payload.roomId,\n type: 'run_event',\n body: {\n runId: payload.runId,\n status: payload.status,\n messageId: payload.messageId,\n roomId: payload.roomId,\n entityId: payload.entityId,\n startTime: payload.startTime,\n endTime: payload.endTime,\n duration: payload.duration,\n error: payload.error,\n source: payload.source || 'unknown',\n },\n });\n logger.debug(\n { src: 'plugin:bootstrap', agentId: payload.runtime.agentId, runId: payload.runId },\n 'Logged RUN_TIMEOUT event'\n );\n } catch (error) {\n logger.error(\n {\n src: 'plugin:bootstrap',\n agentId: payload.runtime.agentId,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Failed to log RUN_TIMEOUT event'\n );\n }\n },\n ],\n\n [EventType.CONTROL_MESSAGE]: [\n async (payload: ControlMessagePayload) => {\n await controlMessageHandler(payload);\n },\n ],\n};\n\nimport { printBanner, type PluginSetting } from './banner.ts';\n\nexport const bootstrapPlugin: Plugin = {\n name: 'bootstrap',\n description: 'Agent bootstrap with basic actions and evaluators',\n init: async (_config: Record<string, string>, runtime: IAgentRuntime): Promise<void> => {\n const settings: PluginSetting[] = [\n {\n name: 'DISABLE_MEMORY_CREATION',\n value: runtime.getSetting('DISABLE_MEMORY_CREATION'),\n defaultValue: false,\n },\n {\n name: 'ALLOW_MEMORY_SOURCE_IDS',\n value: runtime.getSetting('ALLOW_MEMORY_SOURCE_IDS'),\n defaultValue: undefined,\n },\n {\n name: 'ALWAYS_RESPOND_CHANNELS',\n value: runtime.getSetting('ALWAYS_RESPOND_CHANNELS'),\n defaultValue: undefined,\n },\n {\n name: 'ALWAYS_RESPOND_SOURCES',\n value: runtime.getSetting('ALWAYS_RESPOND_SOURCES'),\n defaultValue: undefined,\n },\n ];\n printBanner({ runtime, settings });\n },\n actions: [\n actions.replyAction,\n actions.followRoomAction,\n actions.unfollowRoomAction,\n actions.ignoreAction,\n actions.noneAction,\n actions.muteRoomAction,\n actions.unmuteRoomAction,\n actions.sendMessageAction,\n actions.updateEntityAction,\n actions.choiceAction,\n actions.updateRoleAction,\n actions.updateSettingsAction,\n actions.generateImageAction,\n ],\n events,\n evaluators: [evaluators.reflectionEvaluator],\n providers: [\n providers.evaluatorsProvider,\n providers.anxietyProvider,\n providers.timeProvider,\n providers.entitiesProvider,\n providers.relationshipsProvider,\n providers.choiceProvider,\n providers.factsProvider,\n providers.roleProvider,\n providers.settingsProvider,\n // there is given no reason for this - odi\n //providers.capabilitiesProvider,\n providers.attachmentsProvider,\n providers.providersProvider,\n providers.actionsProvider,\n providers.actionStateProvider,\n providers.characterProvider,\n providers.recentMessagesProvider,\n providers.worldProvider,\n bootstrapInstructionsProvider,\n bootstrapSettingsProvider,\n ],\n services: [TaskService, EmbeddingGenerationService],\n};\n\nexport default bootstrapPlugin;\n",
|
|
7
7
|
"import validate from './validate.js';\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n return (byteToHex[arr[offset + 0]] +\n byteToHex[arr[offset + 1]] +\n byteToHex[arr[offset + 2]] +\n byteToHex[arr[offset + 3]] +\n '-' +\n byteToHex[arr[offset + 4]] +\n byteToHex[arr[offset + 5]] +\n '-' +\n byteToHex[arr[offset + 6]] +\n byteToHex[arr[offset + 7]] +\n '-' +\n byteToHex[arr[offset + 8]] +\n byteToHex[arr[offset + 9]] +\n '-' +\n byteToHex[arr[offset + 10]] +\n byteToHex[arr[offset + 11]] +\n byteToHex[arr[offset + 12]] +\n byteToHex[arr[offset + 13]] +\n byteToHex[arr[offset + 14]] +\n byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset);\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\nexport default stringify;\n",
|
|
8
8
|
"import { randomFillSync } from 'node:crypto';\nconst rnds8Pool = new Uint8Array(256);\nlet poolPtr = rnds8Pool.length;\nexport default function rng() {\n if (poolPtr > rnds8Pool.length - 16) {\n randomFillSync(rnds8Pool);\n poolPtr = 0;\n }\n return rnds8Pool.slice(poolPtr, (poolPtr += 16));\n}\n",
|
|
9
9
|
"import { randomUUID } from 'node:crypto';\nexport default { randomUUID };\n",
|
|
@@ -22,28 +22,31 @@
|
|
|
22
22
|
"import {\n type Action,\n type ActionExample,\n booleanFooter,\n composePromptFromState,\n type HandlerCallback,\n type IAgentRuntime,\n type Memory,\n ModelType,\n parseBooleanFromText,\n type State,\n type ActionResult,\n} from '@elizaos/core';\n\n/**\n * Template for deciding if an agent should stop closely following a previously followed room\n *\n * @type {string}\n */\n/**\n * Template for determining if an agent should stop closely following a room and only respond when mentioned.\n * @param {string} agentName - The name of the agent to be referenced in the template.\n * @param {string} recentMessages - The recent messages in the conversation to be included in the template.\n * @param {string} booleanFooter - The footer for the template indicating the possible responses.\n * @returns {string} The template with placeholders for agent name, recent messages, and response.\n */\nconst shouldUnfollowTemplate = `# Task: Decide if {{agentName}} should stop closely following this previously followed room and only respond when mentioned.\n\n{{recentMessages}}\n\nShould {{agentName}} stop closely following this previously followed room and only respond when mentioned?\nRespond with YES if:\n- The user has suggested that {{agentName}} is over-participating or being disruptive\n- {{agentName}}'s eagerness to contribute is not well-received by the users\n- The conversation has shifted to a topic where {{agentName}} has less to add\n\nOtherwise, respond with NO.\n${booleanFooter}`;\n\n/**\n * Action for unfollowing a room.\n *\n * - Name: UNFOLLOW_ROOM\n * - Similes: [\"UNFOLLOW_CHAT\", \"UNFOLLOW_CONVERSATION\", \"UNFOLLOW_ROOM\", \"UNFOLLOW_THREAD\"]\n * - Description: Stop following this channel. You can still respond if explicitly mentioned, but you won't automatically chime in anymore. Unfollow if you're annoying people or have been asked to.\n * - Validate function checks if the room state is \"FOLLOWED\".\n * - Handler function handles the unfollowing logic based on user input.\n * - Examples provide sample interactions for unfollowing a room.\n */\nexport const unfollowRoomAction: Action = {\n name: 'UNFOLLOW_ROOM',\n similes: ['UNFOLLOW_CHAT', 'UNFOLLOW_CONVERSATION', 'UNFOLLOW_ROOM', 'UNFOLLOW_THREAD'],\n description:\n \"Stop following this channel. You can still respond if explicitly mentioned, but you won't automatically chime in anymore. Unfollow if you're annoying people or have been asked to.\",\n validate: async (runtime: IAgentRuntime, message: Memory) => {\n const roomId = message.roomId;\n const roomState = await runtime.getParticipantUserState(roomId, runtime.agentId);\n return roomState === 'FOLLOWED';\n },\n handler: async (\n runtime: IAgentRuntime,\n message: Memory,\n state?: State,\n _options?: { [key: string]: unknown },\n _callback?: HandlerCallback,\n _responses?: Memory[]\n ): Promise<ActionResult> => {\n async function _shouldUnfollow(state: State): Promise<boolean> {\n const shouldUnfollowPrompt = composePromptFromState({\n state,\n template: shouldUnfollowTemplate, // Define this template separately\n });\n\n const response = await runtime.useModel(ModelType.TEXT_SMALL, {\n prompt: shouldUnfollowPrompt,\n });\n\n const parsedResponse = parseBooleanFromText(response.trim());\n\n return parsedResponse as boolean;\n }\n\n if (state && (await _shouldUnfollow(state))) {\n try {\n await runtime.setParticipantUserState(message.roomId, runtime.agentId, null);\n\n const room = state.data.room ?? (await runtime.getRoom(message.roomId));\n\n if (!room) {\n return {\n text: 'Could not find room to unfollow',\n values: { success: false, error: 'ROOM_NOT_FOUND' },\n data: { actionName: 'UNFOLLOW_ROOM', error: 'Room not found' },\n success: false,\n };\n }\n\n await runtime.createMemory(\n {\n entityId: message.entityId,\n agentId: message.agentId,\n roomId: message.roomId,\n content: {\n thought: `I unfollowed the room ${room.name}`,\n actions: ['UNFOLLOW_ROOM_START'],\n },\n },\n 'messages'\n );\n\n return {\n text: `Stopped following room: ${room.name}`,\n values: {\n success: true,\n roomUnfollowed: true,\n roomId: message.roomId,\n roomName: room.name,\n newState: null,\n },\n data: {\n actionName: 'UNFOLLOW_ROOM',\n roomId: message.roomId,\n roomName: room.name,\n unfollowed: true,\n },\n success: true,\n };\n } catch (error) {\n return {\n text: 'Failed to unfollow room',\n values: {\n success: false,\n error: 'UNFOLLOW_FAILED',\n },\n data: {\n actionName: 'UNFOLLOW_ROOM',\n error: error instanceof Error ? error.message : String(error),\n roomId: message.roomId,\n },\n success: false,\n error: error instanceof Error ? error : new Error(String(error)),\n };\n }\n } else {\n // Decided not to unfollow or missing state\n if (!state) {\n return {\n text: 'State is required for unfollow room action',\n values: {\n success: false,\n error: 'STATE_REQUIRED',\n },\n data: {\n actionName: 'UNFOLLOW_ROOM',\n error: 'State is required',\n },\n success: false,\n error: new Error('State is required for unfollow room action'),\n };\n }\n\n // Create memory about the failed attempt\n await runtime.createMemory(\n {\n entityId: message.entityId,\n agentId: message.agentId,\n roomId: message.roomId,\n content: {\n source: message.content.source,\n thought: \"I tried to unfollow a room but I'm not in a room\",\n actions: ['UNFOLLOW_ROOM_FAILED'],\n },\n metadata: {\n type: 'UNFOLLOW_ROOM',\n },\n },\n 'messages'\n );\n\n return {\n text: 'Did not unfollow room - criteria not met',\n values: {\n success: true,\n roomUnfollowed: false,\n roomId: message.roomId,\n reason: 'CRITERIA_NOT_MET',\n },\n data: {\n actionName: 'UNFOLLOW_ROOM',\n roomId: message.roomId,\n unfollowed: false,\n reason: 'Decision criteria not met',\n },\n success: true,\n };\n }\n },\n examples: [\n [\n {\n name: '{{name1}}',\n content: {\n text: 'Hey {{name2}} stop participating in this channel for now',\n },\n },\n {\n name: '{{name2}}',\n content: {\n text: 'Alright, I will stop chiming in',\n actions: ['UNFOLLOW_ROOM'],\n },\n },\n ],\n [\n {\n name: '{{name1}}',\n content: {\n text: 'Has anyone tried the new update',\n },\n },\n {\n name: '{{name3}}',\n content: {\n text: \"Yes, it's pretty slick\",\n },\n },\n {\n name: '{{name2}}',\n content: {\n text: '{{name3}}, please stop following this chat',\n },\n },\n {\n name: '{{name3}}',\n content: {\n text: 'Understood',\n actions: ['UNFOLLOW_ROOM'],\n },\n },\n ],\n [\n {\n name: '{{name1}}',\n content: {\n text: 'hey {{name3}} stop participating here so frequently',\n },\n },\n {\n name: '{{name3}}',\n content: {\n text: \"I'll only respond when mentioned\",\n actions: ['UNFOLLOW_ROOM'],\n },\n },\n {\n name: '{{name2}}',\n content: {\n text: 'thoughts on the budget',\n },\n },\n {\n name: '{{name1}}',\n content: {\n text: '{{name3}} should we increase it',\n },\n },\n {\n name: '{{name3}}',\n content: {\n text: 'A small increase could work given our past results...',\n },\n },\n ],\n [\n {\n name: '{{name1}}',\n content: {\n text: '{{name3}}, unfollow this room for now',\n },\n },\n {\n name: '{{name3}}',\n content: {\n text: \"I'll only engage when asked\",\n actions: ['UNFOLLOW_ROOM'],\n },\n },\n {\n name: '{{name2}}',\n content: {\n text: 'wait {{name3}} come back and give me your thoughts',\n },\n },\n {\n name: '{{name3}}',\n content: {\n text: \"Okay... I think it's intuitive, parallel tests are nice\",\n },\n },\n ],\n [\n {\n name: '{{name1}}',\n content: {\n text: 'yo {{name2}} chill on all the messages damn',\n },\n },\n {\n name: '{{name2}}',\n content: {\n text: \"my bad, I'll step back\",\n actions: ['UNFOLLOW_ROOM'],\n },\n },\n ],\n [\n {\n name: '{{name1}}',\n content: {\n text: '{{name2}} STOP MESSAGING IN THIS ROOM',\n },\n },\n {\n name: '{{name2}}',\n content: {\n text: \"No problem, I've got other stuff to work on\",\n actions: ['UNFOLLOW_ROOM'],\n },\n },\n ],\n [\n {\n name: '{{name1}}',\n content: {\n text: '{{name2}} ur bein annoyin pls stop',\n },\n },\n {\n name: '{{name2}}',\n content: {\n text: 'sry, ill chill',\n actions: ['UNFOLLOW_ROOM'],\n },\n },\n ],\n [\n {\n name: '{{name1}}',\n content: {\n text: '{{name2}}, please cease engaging in this room',\n },\n },\n {\n name: '{{name2}}',\n content: {\n text: 'No sweat',\n actions: ['UNFOLLOW_ROOM'],\n },\n },\n ],\n [\n {\n name: '{{name2}}',\n content: {\n text: 'Excited for the weekend, any plans folks',\n },\n },\n {\n name: '{{name1}}',\n content: {\n text: \"{{name3}} you're getting a bit too chatty, tone it down\",\n },\n },\n {\n name: '{{name3}}',\n content: {\n text: 'Noted',\n actions: ['UNFOLLOW_ROOM'],\n },\n },\n ],\n [\n {\n name: '{{name1}}',\n content: {\n text: 'hey {{name2}} can u like... not',\n },\n },\n {\n name: '{{name2}}',\n content: {\n text: \"Sorry, I'll go work on other things\",\n actions: ['UNFOLLOW_ROOM'],\n },\n },\n ],\n [\n {\n name: '{{name1}}',\n content: {\n text: '{{name2}}, your eagerness is disruptive, please desist',\n },\n },\n {\n name: '{{name2}}',\n content: {\n text: 'My apologies, I shall withdraw post-haste',\n actions: ['UNFOLLOW_ROOM'],\n },\n },\n ],\n [\n {\n name: '{{name1}}',\n content: {\n text: '{{name2}} stahp following dis room plz',\n },\n },\n {\n name: '{{name2}}',\n content: {\n text: 'kk sry ill stahppp',\n actions: ['UNFOLLOW_ROOM'],\n },\n },\n ],\n [\n {\n name: '{{name1}}',\n content: {\n text: 'stfu you stupid bot',\n },\n },\n {\n name: '{{name2}}',\n content: {\n text: 'sry',\n actions: ['UNFOLLOW_ROOM'],\n },\n },\n ],\n ] as ActionExample[][],\n} as Action;\n",
|
|
23
23
|
"import {\n type Action,\n type ActionExample,\n booleanFooter,\n composePromptFromState,\n type HandlerCallback,\n type IAgentRuntime,\n logger,\n type Memory,\n ModelType,\n type State,\n type ActionResult,\n} from '@elizaos/core';\n\n/**\n * Template for determining if an agent should unmute a previously muted room.\n * * @type { string }\n */\n/**\n * Template for deciding if {{agentName}} should unmute a previously muted room.\n *\n * @type {string}\n */\nexport const shouldUnmuteTemplate = `# Task: Decide if {{agentName}} should unmute this previously muted room and start considering it for responses again.\n\n{{recentMessages}}\n\nShould {{agentName}} unmute this previously muted room and start considering it for responses again?\nRespond with YES if:\n- The user has explicitly asked {{agentName}} to start responding again\n- The user seems to want to re-engage with {{agentName}} in a respectful manner\n- The tone of the conversation has improved and {{agentName}}'s input would be welcome\n\nOtherwise, respond with NO.\n${booleanFooter}`;\n\n/**\n * Action to unmute a room, allowing the agent to consider responding to messages again.\n *\n * @name UNMUTE_ROOM\n * @similes [\"UNMUTE_CHAT\", \"UNMUTE_CONVERSATION\", \"UNMUTE_ROOM\", \"UNMUTE_THREAD\"]\n * @description Unmutes a room, allowing the agent to consider responding to messages again.\n *\n * @param {IAgentRuntime} runtime - The agent runtime to access runtime functionalities.\n * @param {Memory} message - The message containing information about the room.\n * @returns {Promise<boolean>} A boolean value indicating if the room was successfully unmuted.\n */\nexport const unmuteRoomAction: Action = {\n name: 'UNMUTE_ROOM',\n similes: ['UNMUTE_CHAT', 'UNMUTE_CONVERSATION', 'UNMUTE_ROOM', 'UNMUTE_THREAD'],\n description: 'Unmutes a room, allowing the agent to consider responding to messages again.',\n validate: async (runtime: IAgentRuntime, message: Memory) => {\n const roomId = message.roomId;\n const roomState = await runtime.getParticipantUserState(roomId, runtime.agentId);\n return roomState === 'MUTED';\n },\n handler: async (\n runtime: IAgentRuntime,\n message: Memory,\n state?: State,\n _options?: { [key: string]: unknown },\n _callback?: HandlerCallback,\n _responses?: Memory[]\n ): Promise<ActionResult> => {\n async function _shouldUnmute(state: State): Promise<boolean> {\n const shouldUnmutePrompt = composePromptFromState({\n state,\n template: shouldUnmuteTemplate, // Define this template separately\n });\n\n const response = await runtime.useModel(ModelType.TEXT_SMALL, {\n prompt: shouldUnmutePrompt,\n stopSequences: [],\n });\n\n const cleanedResponse = response.trim().toLowerCase();\n\n // Handle various affirmative responses\n if (\n cleanedResponse === 'true' ||\n cleanedResponse === 'yes' ||\n cleanedResponse === 'y' ||\n cleanedResponse.includes('true') ||\n cleanedResponse.includes('yes')\n ) {\n await runtime.createMemory(\n {\n entityId: message.entityId,\n agentId: message.agentId,\n roomId: message.roomId,\n content: {\n source: message.content.source,\n thought: 'I will now unmute this room and start considering it for responses again',\n actions: ['UNMUTE_ROOM_STARTED'],\n },\n metadata: {\n type: 'UNMUTE_ROOM',\n },\n },\n 'messages'\n );\n return true;\n }\n\n // Handle various negative responses\n if (\n cleanedResponse === 'false' ||\n cleanedResponse === 'no' ||\n cleanedResponse === 'n' ||\n cleanedResponse.includes('false') ||\n cleanedResponse.includes('no')\n ) {\n await runtime.createMemory(\n {\n entityId: message.entityId,\n agentId: message.agentId,\n roomId: message.roomId,\n content: {\n source: message.content.source,\n thought: 'I tried to unmute a room but I decided not to',\n actions: ['UNMUTE_ROOM_FAILED'],\n },\n metadata: {\n type: 'UNMUTE_ROOM',\n },\n },\n 'messages'\n );\n return false;\n }\n\n // Default to false if response is unclear\n logger.warn(\n { src: 'plugin:bootstrap:action:unmute_room', agentId: runtime.agentId, response },\n 'Unclear boolean response, defaulting to false'\n );\n return false;\n }\n\n if (!state) {\n return {\n text: 'State is required for unmute room action',\n values: {\n success: false,\n error: 'STATE_REQUIRED',\n },\n data: {\n actionName: 'UNMUTE_ROOM',\n error: 'State is required',\n },\n success: false,\n error: new Error('State is required for unmute room action'),\n };\n }\n\n const shouldUnmute = await _shouldUnmute(state);\n\n if (shouldUnmute) {\n try {\n await runtime.setParticipantUserState(message.roomId, runtime.agentId, null);\n\n const room = await runtime.getRoom(message.roomId);\n\n if (!room) {\n logger.warn(\n {\n src: 'plugin:bootstrap:action:unmute_room',\n agentId: runtime.agentId,\n roomId: message.roomId,\n },\n 'Room not found'\n );\n return {\n text: `Room not found: ${message.roomId}`,\n values: {\n success: false,\n error: 'ROOM_NOT_FOUND',\n roomId: message.roomId,\n },\n data: {\n actionName: 'UNMUTE_ROOM',\n error: 'Room not found',\n roomId: message.roomId,\n },\n success: false,\n };\n }\n\n await runtime.createMemory(\n {\n entityId: message.entityId,\n agentId: message.agentId,\n roomId: message.roomId,\n content: {\n thought: `I unmuted the room ${room.name}`,\n actions: ['UNMUTE_ROOM_START'],\n },\n },\n 'messages'\n );\n\n return {\n text: `Room unmuted: ${room.name}`,\n values: {\n success: true,\n roomUnmuted: true,\n roomId: message.roomId,\n roomName: room.name,\n newState: null,\n },\n data: {\n actionName: 'UNMUTE_ROOM',\n roomId: message.roomId,\n roomName: room.name,\n unmuted: true,\n },\n success: true,\n };\n } catch (error) {\n logger.error(\n {\n src: 'plugin:bootstrap:action:unmute_room',\n agentId: runtime.agentId,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Error unmuting room'\n );\n return {\n text: 'Failed to unmute room',\n values: {\n success: false,\n error: 'UNMUTE_FAILED',\n },\n data: {\n actionName: 'UNMUTE_ROOM',\n error: error instanceof Error ? error.message : String(error),\n roomId: message.roomId,\n },\n success: false,\n error: error instanceof Error ? error : new Error(String(error)),\n };\n }\n } else {\n return {\n text: 'Decided not to unmute room',\n values: {\n success: true,\n roomUnmuted: false,\n roomId: message.roomId,\n reason: 'CRITERIA_NOT_MET',\n },\n data: {\n actionName: 'UNMUTE_ROOM',\n roomId: message.roomId,\n unmuted: false,\n reason: 'Decision criteria not met',\n },\n success: true,\n };\n }\n },\n examples: [\n [\n {\n name: '{{name1}}',\n content: {\n text: '{{name3}}, you can unmute this channel now',\n },\n },\n {\n name: '{{name3}}',\n content: {\n text: 'Done',\n actions: ['UNMUTE_ROOM'],\n },\n },\n {\n name: '{{name2}}',\n content: {\n text: 'I could use some help troubleshooting this bug.',\n },\n },\n {\n name: '{{name3}}',\n content: {\n text: 'Can you post the specific error message',\n },\n },\n ],\n [\n {\n name: '{{name1}}',\n content: {\n text: '{{name2}}, please unmute this room. We could use your input again.',\n },\n },\n {\n name: '{{name2}}',\n content: {\n text: 'Sounds good',\n actions: ['UNMUTE_ROOM'],\n },\n },\n ],\n [\n {\n name: '{{name1}}',\n content: {\n text: '{{name2}} wait you should come back and chat in here',\n },\n },\n {\n name: '{{name2}}',\n content: {\n text: 'im back',\n actions: ['UNMUTE_ROOM'],\n },\n },\n ],\n [\n {\n name: '{{name1}}',\n content: {\n text: 'unmute urself {{name2}}',\n },\n },\n {\n name: '{{name2}}',\n content: {\n text: 'unmuted',\n actions: ['UNMUTE_ROOM'],\n },\n },\n ],\n [\n {\n name: '{{name1}}',\n content: {\n text: 'ay {{name2}} get back in here',\n },\n },\n {\n name: '{{name2}}',\n content: {\n text: 'sup yall',\n actions: ['UNMUTE_ROOM'],\n },\n },\n ],\n ] as ActionExample[][],\n} as Action;\n",
|
|
24
24
|
"// I want to create an action that lets anyone create or update a component for an entity.\n// Components represent different sources of data about an entity (telegram, twitter, etc)\n// Sources can be registered by plugins or inferred from room context and available components\n// The action should first check if the component exists for the entity, and if not, create it.\n// We want to use an LLM (runtime.useModel) to generate the component data.\n// We should include the prior component data if it exists, and have the LLM output an update to the component.\n// sourceEntityId represents who is making the update, entityId is who they are talking about\n\nimport {\n type Action,\n type ActionExample,\n Component,\n composePromptFromState,\n findEntityByName,\n type HandlerCallback,\n type HandlerOptions,\n type IAgentRuntime,\n logger,\n type Memory,\n ModelType,\n type State,\n type UUID,\n type ActionResult,\n parseKeyValueXml,\n} from '@elizaos/core';\nimport { v4 as uuidv4 } from 'uuid';\n\n/** Shape of the component extraction XML response */\ninterface ComponentExtractionResult {\n source?: string;\n data?: Record<string, unknown>;\n}\n\n/**\n * Component Template for Task: Extract Source and Update Component Data\n *\n * @type {string}\n */\n/**\n * Component Template for extracting source and updating component data.\n *\n * @type {string}\n */\nconst componentTemplate = `# Task: Extract Source and Update Component Data\n\n{{recentMessages}}\n\n{{#if existingData}}\n# Existing Component Data:\n{{existingData}}\n{{/if}}\n\n# Instructions:\n1. Analyze the conversation to identify:\n - The source/platform being referenced (e.g. telegram, twitter, discord)\n - Any specific component data being shared\n\n2. Generate updated component data that:\n - Is specific to the identified platform/source\n - Preserves existing data when appropriate\n - Includes the new information from the conversation\n - Contains only valid data for this component type\n\nDo NOT include any thinking, reasoning, or <think> sections in your response. \nGo directly to the XML response format without any preamble or explanation.\n\nReturn an XML response with the following structure:\n<response>\n <source>platform-name</source>\n <data>\n <username>username_value</username>\n <displayName>display_name_value</displayName>\n <!-- Add other component-specific fields as needed -->\n </data>\n</response>\n\nExample outputs:\n1. For \"my telegram username is @dev_guru\":\n<response>\n <source>telegram</source>\n <data>\n <username>dev_guru</username>\n </data>\n</response>\n\n2. For \"update my twitter handle to @tech_master\":\n<response>\n <source>twitter</source>\n <data>\n <username>tech_master</username>\n </data>\n</response>\n\nIMPORTANT: Your response must ONLY contain the <response></response> XML block above. Do not include any text, thinking, or reasoning before or after this XML block. Start your response immediately with <response> and end with </response>.`;\n\n/**\n * Action for updating contact details for a user entity.\n *\n * @name UPDATE_ENTITY\n * @description Add or edit contact details for a user entity (like twitter, discord, email address, etc.)\n *\n * @param {IAgentRuntime} _runtime - The runtime environment.\n * @param {Memory} _message - The message data.\n * @param {State} _state - The current state.\n * @returns {Promise<boolean>} Returns a promise indicating if validation was successful.\n *\n * @param {IAgentRuntime} runtime - The runtime environment.\n * @param {Memory} message - The message data.\n * @param {State} state - The current state.\n * @param {any} _options - Additional options.\n * @param {HandlerCallback} callback - The callback function.\n * @param {Memory[]} responses - Array of responses.\n * @returns {Promise<void>} Promise that resolves after handling the update entity action.\n *\n * @example\n * [\n * [\n * {\n * name: \"{{name1}}\",\n * content: {\n * text: \"Please update my telegram username to @dev_guru\",\n * },\n * },\n * {\n * name: \"{{name2}}\",\n * content: {\n * text: \"I've updated your telegram information.\",\n * actions: [\"UPDATE_ENTITY\"],\n * },\n * },\n * ],\n * ...\n * ]\n */\nexport const updateEntityAction: Action = {\n name: 'UPDATE_CONTACT',\n similes: ['UPDATE_ENTITY'],\n description:\n 'Add or edit contact details for a person you are talking to or observing in the conversation. Use this when you learn this information from the conversation about a contact. This is for the agent to relate entities across platforms, not for world settings or configuration.',\n\n validate: async (_runtime: IAgentRuntime, _message: Memory, _state?: State): Promise<boolean> => {\n // Check if we have any registered sources or existing components that could be updated\n // const worldId = message.roomId;\n // const agentId = runtime.agentId;\n\n // // Get all components for the current room to understand available sources\n // const roomComponents = await runtime.getComponents(message.roomId, worldId, agentId);\n\n // // Get source types from room components\n // const availableSources = new Set(roomComponents.map(c => c.type));\n return true; // availableSources.size > 0;\n },\n\n handler: async (\n runtime: IAgentRuntime,\n message: Memory,\n state?: State,\n _options?: HandlerOptions,\n callback?: HandlerCallback,\n responses?: Memory[]\n ): Promise<ActionResult> => {\n try {\n if (!state) {\n logger.error(\n { src: 'plugin:bootstrap:action:update_entity', agentId: runtime.agentId },\n 'State is required for the updateEntity action'\n );\n return {\n text: 'State is required for updateEntity action',\n values: {\n success: false,\n error: 'STATE_REQUIRED',\n },\n data: {\n actionName: 'UPDATE_CONTACT',\n error: 'State is required',\n },\n success: false,\n error: new Error('State is required for the updateEntity action'),\n };\n }\n\n if (!callback) {\n logger.error(\n { src: 'plugin:bootstrap:action:update_entity', agentId: runtime.agentId },\n 'Callback is required for the updateEntity action'\n );\n return {\n text: 'Callback is required for updateEntity action',\n values: {\n success: false,\n error: 'CALLBACK_REQUIRED',\n },\n data: {\n actionName: 'UPDATE_CONTACT',\n error: 'Callback is required',\n },\n success: false,\n error: new Error('Callback is required for the updateEntity action'),\n };\n }\n\n if (!responses) {\n logger.error(\n { src: 'plugin:bootstrap:action:update_entity', agentId: runtime.agentId },\n 'Responses are required for the updateEntity action'\n );\n return {\n text: 'Responses are required for updateEntity action',\n values: {\n success: false,\n error: 'RESPONSES_REQUIRED',\n },\n data: {\n actionName: 'UPDATE_CONTACT',\n error: 'Responses are required',\n },\n success: false,\n error: new Error('Responses are required for the updateEntity action'),\n };\n }\n\n if (!message) {\n logger.error(\n { src: 'plugin:bootstrap:action:update_entity', agentId: runtime.agentId },\n 'Message is required for the updateEntity action'\n );\n return {\n text: 'Message is required for updateEntity action',\n values: {\n success: false,\n error: 'MESSAGE_REQUIRED',\n },\n data: {\n actionName: 'UPDATE_CONTACT',\n error: 'Message is required',\n },\n success: false,\n error: new Error('Message is required for the updateEntity action'),\n };\n }\n\n // Handle initial responses\n for (const response of responses) {\n await callback(response.content);\n }\n\n const sourceEntityId = message.entityId;\n const agentId = runtime.agentId;\n const room = state.data.room ?? (await runtime.getRoom(message.roomId));\n\n if (!room || !room.worldId) {\n return {\n text: 'Could not find room or world',\n values: { success: false, error: 'ROOM_NOT_FOUND' },\n data: { actionName: 'UPDATE_CONTACT', error: 'Room or world not found' },\n success: false,\n };\n }\n\n const worldId = room.worldId;\n\n // First, find the entity being referenced\n const entity = await findEntityByName(runtime, message, state);\n\n if (!entity) {\n await callback({\n text: \"I'm not sure which entity you're trying to update. Could you please specify who you're talking about?\",\n actions: ['UPDATE_ENTITY_ERROR'],\n source: message.content.source,\n });\n return {\n text: 'Entity not found',\n values: {\n success: false,\n error: 'ENTITY_NOT_FOUND',\n },\n data: {\n actionName: 'UPDATE_CONTACT',\n error: 'Could not find entity to update',\n },\n success: false,\n };\n }\n\n // Get existing component if it exists - we'll get this after the LLM identifies the source\n let existingComponent: Component | null = null;\n\n // Generate component data using the combined template\n const prompt = composePromptFromState({\n state,\n template: componentTemplate,\n });\n\n const result = await runtime.useModel(ModelType.TEXT_LARGE, {\n prompt,\n stopSequences: [],\n });\n\n // Parse the generated data\n const parsedResult = parseKeyValueXml<ComponentExtractionResult>(result);\n\n if (!parsedResult?.source || !parsedResult?.data) {\n logger.error(\n {\n src: 'plugin:bootstrap:action:update_entity',\n agentId: runtime.agentId,\n },\n 'Failed to parse component data - missing source or data'\n );\n await callback({\n text: \"I couldn't properly understand the component information. Please try again with more specific information.\",\n actions: ['UPDATE_ENTITY_ERROR'],\n source: message.content.source,\n });\n return {\n text: 'Failed to parse component data',\n values: {\n success: false,\n error: 'PARSE_ERROR',\n },\n data: {\n actionName: 'UPDATE_CONTACT',\n error: 'Invalid response format - missing source or data',\n },\n success: false,\n };\n }\n\n const componentType = parsedResult.source.toLowerCase();\n const componentData = parsedResult.data;\n\n // Now that we know the component type, get the existing component if it exists\n existingComponent = await runtime.getComponent(\n entity.id!,\n componentType,\n worldId,\n sourceEntityId\n );\n\n // Create or update the component\n if (existingComponent) {\n await runtime.updateComponent({\n id: existingComponent.id,\n entityId: entity.id!,\n worldId,\n type: componentType,\n data: componentData,\n agentId,\n roomId: message.roomId,\n sourceEntityId,\n createdAt: existingComponent.createdAt,\n });\n\n await callback({\n text: `I've updated the ${componentType} information for ${entity.names[0]}.`,\n actions: ['UPDATE_ENTITY'],\n source: message.content.source,\n });\n\n return {\n text: `Updated ${componentType} information`,\n values: {\n success: true,\n entityId: entity.id,\n entityName: entity.names[0],\n componentType,\n componentUpdated: true,\n isNewComponent: false,\n },\n data: {\n actionName: 'UPDATE_CONTACT',\n entityId: entity.id,\n entityName: entity.names[0],\n componentType,\n componentData,\n existingComponentId: existingComponent.id,\n },\n success: true,\n };\n } else {\n const newComponentId = uuidv4() as UUID;\n await runtime.createComponent({\n id: newComponentId,\n entityId: entity.id!,\n worldId,\n type: componentType,\n data: componentData,\n agentId,\n roomId: message.roomId,\n sourceEntityId,\n createdAt: Date.now(),\n });\n\n await callback({\n text: `I've added new ${componentType} information for ${entity.names[0]}.`,\n actions: ['UPDATE_ENTITY'],\n source: message.content.source,\n });\n\n return {\n text: `Added new ${componentType} information`,\n values: {\n success: true,\n entityId: entity.id,\n entityName: entity.names[0],\n componentType,\n componentCreated: true,\n isNewComponent: true,\n },\n data: {\n actionName: 'UPDATE_CONTACT',\n entityId: entity.id,\n entityName: entity.names[0],\n componentType,\n componentData,\n newComponentId,\n },\n success: true,\n };\n }\n } catch (error) {\n logger.error(\n {\n src: 'plugin:bootstrap:action:update_entity',\n agentId: runtime.agentId,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Error in updateEntity handler'\n );\n await callback?.({\n text: 'There was an error processing the entity information.',\n actions: ['UPDATE_ENTITY_ERROR'],\n source: message.content.source,\n });\n return {\n text: 'Error processing entity information',\n values: {\n success: false,\n error: 'HANDLER_ERROR',\n },\n data: {\n actionName: 'UPDATE_CONTACT',\n error: error instanceof Error ? error.message : String(error),\n },\n success: false,\n error: error instanceof Error ? error : new Error(String(error)),\n };\n }\n },\n\n examples: [\n [\n {\n name: '{{name1}}',\n content: {\n text: 'Please update my telegram username to @dev_guru',\n },\n },\n {\n name: '{{name2}}',\n content: {\n text: \"I've updated your telegram information.\",\n actions: ['UPDATE_ENTITY'],\n },\n },\n ],\n [\n {\n name: '{{name1}}',\n content: {\n text: \"Set Jimmy's twitter username to @jimmy_codes\",\n },\n },\n {\n name: '{{name2}}',\n content: {\n text: \"I've updated Jimmy's twitter information.\",\n actions: ['UPDATE_ENTITY'],\n },\n },\n ],\n [\n {\n name: '{{name1}}',\n content: {\n text: 'Update my discord username to dev_guru#1234',\n },\n },\n {\n name: '{{name2}}',\n content: {\n text: \"I've updated your discord information.\",\n actions: ['UPDATE_ENTITY'],\n },\n },\n ],\n ] as ActionExample[][],\n};\n\nexport default updateEntityAction;\n",
|
|
25
|
-
"import { z } from 'zod';\nimport { asUUID, getEntityDetails, parseKeyValueXml } from '@elizaos/core';\nimport { composePrompt } from '@elizaos/core';\nimport {\n type Entity,\n type Evaluator,\n type IAgentRuntime,\n type Memory,\n ModelType,\n type State,\n type UUID,\n} from '@elizaos/core';\nimport { v4 } from 'uuid';\n\n/** Shape of a single fact in the XML response */\ninterface FactXml {\n claim?: string;\n type?: string;\n in_bio?: string;\n already_known?: string;\n}\n\n/** Shape of a single relationship in the XML response */\ninterface RelationshipXml {\n sourceEntityId?: string;\n targetEntityId?: string;\n tags?: string;\n metadata?: Record<string, unknown>;\n}\n\n/** Shape of the reflection XML response */\ninterface ReflectionXmlResult {\n facts?: {\n fact?: FactXml | FactXml[];\n };\n relationships?: {\n relationship?: RelationshipXml | RelationshipXml[];\n };\n}\n\n// Schema definitions for the reflection output\nconst relationshipSchema = z.object({\n sourceEntityId: z.string(),\n targetEntityId: z.string(),\n tags: z.array(z.string()),\n metadata: z\n .object({\n interactions: z.number(),\n })\n .optional(),\n});\n\n/**\n * Defines a schema for reflecting on a topic, including facts and relationships.\n * @type {import(\"zod\").object}\n * @property {import(\"zod\").array<import(\"zod\").object<{claim: import(\"zod\").string(), type: import(\"zod\").string(), in_bio: import(\"zod\").boolean(), already_known: import(\"zod\").boolean()}>} facts Array of facts about the topic\n * @property {import(\"zod\").array<import(\"zod\").object>} relationships Array of relationships related to the topic\n */\n/**\n * JSDoc comment for reflectionSchema object:\n *\n * Represents a schema for an object containing 'facts' and 'relationships'.\n * 'facts' is an array of objects with properties 'claim', 'type', 'in_bio', and 'already_known'.\n * 'relationships' is an array of objects following the relationshipSchema.\n */\n\nz.object({\n // reflection: z.string(),\n facts: z.array(\n z.object({\n claim: z.string(),\n type: z.string(),\n in_bio: z.boolean(),\n already_known: z.boolean(),\n })\n ),\n relationships: z.array(relationshipSchema),\n});\n\n/**\n * Template string for generating Agent Reflection, Extracting Facts, and Relationships.\n *\n * @type {string}\n */\nconst reflectionTemplate = `# Task: Generate Agent Reflection, Extract Facts and Relationships\n\n{{providers}}\n\n# Examples:\n{{evaluationExamples}}\n\n# Entities in Room\n{{entitiesInRoom}}\n\n# Existing Relationships\n{{existingRelationships}}\n\n# Current Context:\nAgent Name: {{agentName}}\nRoom Type: {{roomType}}\nMessage Sender: {{senderName}} (ID: {{senderId}})\n\n{{recentMessages}}\n\n# Known Facts:\n{{knownFacts}}\n\n# Instructions:\n1. Generate a self-reflective thought on the conversation about your performance and interaction quality.\n2. Extract new facts from the conversation.\n3. Identify and describe relationships between entities.\n - The sourceEntityId is the UUID of the entity initiating the interaction.\n - The targetEntityId is the UUID of the entity being interacted with.\n - Relationships are one-direction, so a friendship would be two entity relationships where each entity is both the source and the target of the other.\n\nDo NOT include any thinking, reasoning, or <think> sections in your response. \nGo directly to the XML response format without any preamble or explanation.\n\nGenerate a response in the following format:\n<response>\n <thought>a self-reflective thought on the conversation</thought>\n <facts>\n <fact>\n <claim>factual statement</claim>\n <type>fact|opinion|status</type>\n <in_bio>false</in_bio>\n <already_known>false</already_known>\n </fact>\n <!-- Add more facts as needed -->\n </facts>\n <relationships>\n <relationship>\n <sourceEntityId>entity_initiating_interaction</sourceEntityId>\n <targetEntityId>entity_being_interacted_with</targetEntityId>\n <tags>group_interaction,voice_interaction,dm_interaction,additional_tag1,additional_tag2</tags>\n </relationship>\n <!-- Add more relationships as needed -->\n </relationships>\n</response>\n\nIMPORTANT: Your response must ONLY contain the <response></response> XML block above. Do not include any text, thinking, or reasoning before or after this XML block. Start your response immediately with <response> and end with </response>.`;\n\n/**\n * Resolve an entity name to their UUID\n * @param name - Name to resolve\n * @param entities - List of entities to search through\n * @returns UUID if found, throws error if not found or if input is not a valid UUID\n */\n/**\n * Resolves an entity ID by searching through a list of entities.\n *\n * @param {UUID} entityId - The ID of the entity to resolve.\n * @param {Entity[]} entities - The list of entities to search through.\n * @returns {UUID} - The resolved UUID of the entity.\n * @throws {Error} - If the entity ID cannot be resolved to a valid UUID.\n */\nfunction resolveEntity(entityId: string, entities: Entity[]): UUID {\n // First try exact UUID match\n if (/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(entityId)) {\n return entityId as UUID;\n }\n\n let entity: Entity | undefined;\n\n // Try to match the entityId exactly\n entity = entities.find((a) => a.id === entityId);\n if (entity?.id) {\n return entity.id;\n }\n\n // Try partial UUID match with entityId\n entity = entities.find((a) => a.id?.includes(entityId));\n if (entity?.id) {\n return entity.id;\n }\n\n // Try name match as last resort\n entity = entities.find((a) =>\n a.names.some((n) => n.toLowerCase().includes(entityId.toLowerCase()))\n );\n if (entity?.id) {\n return entity.id;\n }\n\n throw new Error(`Could not resolve entityId \"${entityId}\" to a valid UUID`);\n}\nasync function handler(runtime: IAgentRuntime, message: Memory, state?: State) {\n const { agentId, roomId } = message;\n\n if (!agentId || !roomId) {\n runtime.logger.warn(\n { src: 'plugin:bootstrap:evaluator:reflection', agentId: runtime.agentId, message },\n 'Missing agentId or roomId in message'\n );\n return;\n }\n\n // Run all queries in parallel\n const [existingRelationships, entities, knownFacts] = await Promise.all([\n runtime.getRelationships({\n entityId: message.entityId,\n }),\n getEntityDetails({ runtime, roomId }),\n runtime.getMemories({\n tableName: 'facts',\n roomId,\n count: 30,\n unique: true,\n }),\n ]);\n\n const prompt = composePrompt({\n state: {\n ...(state?.values || {}),\n knownFacts: formatFacts(knownFacts),\n roomType: message.content.channelType as string,\n entitiesInRoom: JSON.stringify(entities),\n existingRelationships: JSON.stringify(existingRelationships),\n senderId: message.entityId,\n },\n template: runtime.character.templates?.reflectionTemplate || reflectionTemplate,\n });\n\n // Use the model without schema validation\n try {\n const response = await runtime.useModel(ModelType.TEXT_SMALL, {\n prompt,\n });\n\n if (!response) {\n runtime.logger.warn(\n { src: 'plugin:bootstrap:evaluator:reflection', agentId: runtime.agentId },\n 'Getting reflection failed - empty response'\n );\n return;\n }\n\n // Parse XML response\n const reflection = parseKeyValueXml<ReflectionXmlResult>(response);\n\n if (!reflection) {\n runtime.logger.warn(\n { src: 'plugin:bootstrap:evaluator:reflection', agentId: runtime.agentId },\n 'Getting reflection failed - failed to parse XML'\n );\n return;\n }\n\n // Perform basic structure validation\n if (!reflection.facts) {\n runtime.logger.warn(\n { src: 'plugin:bootstrap:evaluator:reflection', agentId: runtime.agentId },\n 'Getting reflection failed - invalid facts structure'\n );\n return;\n }\n\n if (!reflection.relationships) {\n runtime.logger.warn(\n { src: 'plugin:bootstrap:evaluator:reflection', agentId: runtime.agentId },\n 'Getting reflection failed - invalid relationships structure'\n );\n return;\n }\n\n // Handle facts - parseKeyValueXml returns nested structures differently\n // Facts might be a single object or an array depending on the count\n let factsArray: FactXml[] = [];\n if (reflection.facts.fact) {\n // Normalize to array\n factsArray = Array.isArray(reflection.facts.fact)\n ? reflection.facts.fact\n : [reflection.facts.fact];\n }\n\n // Store new facts - filter for valid new facts with claim text\n const newFacts = factsArray.filter(\n (fact): fact is FactXml & { claim: string } =>\n fact != null &&\n fact.already_known === 'false' &&\n fact.in_bio === 'false' &&\n typeof fact.claim === 'string' &&\n fact.claim.trim() !== ''\n );\n\n await Promise.all(\n newFacts.map(async (fact) => {\n const factMemory = {\n id: asUUID(v4()),\n entityId: agentId,\n agentId,\n content: { text: fact.claim },\n roomId,\n createdAt: Date.now(),\n };\n // Create memory first and capture the returned ID\n const createdMemoryId = await runtime.createMemory(factMemory, 'facts', true);\n // Update the memory object with the actual ID from the database\n const createdMemory = { ...factMemory, id: createdMemoryId };\n // Queue embedding generation asynchronously for the memory with correct ID\n await runtime.queueEmbeddingGeneration(createdMemory, 'low');\n return createdMemory;\n })\n );\n\n // Handle relationships - similar structure normalization\n let relationshipsArray: RelationshipXml[] = [];\n if (reflection.relationships.relationship) {\n relationshipsArray = Array.isArray(reflection.relationships.relationship)\n ? reflection.relationships.relationship\n : [reflection.relationships.relationship];\n }\n\n // Update or create relationships\n for (const relationship of relationshipsArray) {\n if (!relationship.sourceEntityId || !relationship.targetEntityId) {\n console.warn('Skipping relationship with missing entity IDs:', relationship);\n continue;\n }\n\n let sourceId: UUID;\n let targetId: UUID;\n\n try {\n sourceId = resolveEntity(relationship.sourceEntityId, entities);\n targetId = resolveEntity(relationship.targetEntityId, entities);\n } catch (error) {\n console.warn('Failed to resolve relationship entities:', error);\n console.warn('relationship:\\n', relationship);\n continue; // Skip this relationship if we can't resolve the IDs\n }\n\n const existingRelationship = existingRelationships.find((r) => {\n return r.sourceEntityId === sourceId && r.targetEntityId === targetId;\n });\n\n // Parse tags from comma-separated string\n const tags = relationship.tags\n ? relationship.tags\n .split(',')\n .map((tag: string) => tag.trim())\n .filter(Boolean)\n : [];\n\n if (existingRelationship) {\n const updatedMetadata = {\n ...existingRelationship.metadata,\n interactions:\n ((existingRelationship.metadata?.interactions as number | undefined) || 0) + 1,\n };\n\n const updatedTags = Array.from(new Set([...(existingRelationship.tags || []), ...tags]));\n\n await runtime.updateRelationship({\n ...existingRelationship,\n tags: updatedTags,\n metadata: updatedMetadata,\n });\n } else {\n await runtime.createRelationship({\n sourceEntityId: sourceId,\n targetEntityId: targetId,\n tags,\n metadata: {\n interactions: 1,\n ...(relationship.metadata || {}),\n },\n });\n }\n }\n\n await runtime.setCache<string>(\n `${message.roomId}-reflection-last-processed`,\n message?.id || ''\n );\n } catch (error) {\n runtime.logger.error(\n {\n src: 'plugin:bootstrap:evaluator:reflection',\n agentId: runtime.agentId,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Error in reflection handler'\n );\n return;\n }\n}\n\nexport const reflectionEvaluator: Evaluator = {\n name: 'REFLECTION',\n similes: ['REFLECT', 'SELF_REFLECT', 'EVALUATE_INTERACTION', 'ASSESS_SITUATION'],\n validate: async (runtime: IAgentRuntime, message: Memory): Promise<boolean> => {\n const lastMessageId = await runtime.getCache<string>(\n `${message.roomId}-reflection-last-processed`\n );\n const messages = await runtime.getMemories({\n tableName: 'messages',\n roomId: message.roomId,\n count: runtime.getConversationLength(),\n });\n\n if (lastMessageId) {\n const lastMessageIndex = messages.findIndex((msg) => msg.id === lastMessageId);\n if (lastMessageIndex !== -1) {\n messages.splice(0, lastMessageIndex + 1);\n }\n }\n\n const reflectionInterval = Math.ceil(runtime.getConversationLength() / 4);\n\n return messages.length > reflectionInterval;\n },\n description:\n 'Generate a self-reflective thought on the conversation, then extract facts and relationships between entities in the conversation.',\n handler,\n examples: [\n {\n prompt: `Agent Name: Sarah\nAgent Role: Community Manager\nRoom Type: group\nCurrent Room: general-chat\nMessage Sender: John (user-123)`,\n messages: [\n {\n name: 'John',\n content: { text: \"Hey everyone, I'm new here!\" },\n },\n {\n name: 'Sarah',\n content: { text: 'Welcome John! How did you find our community?' },\n },\n {\n name: 'John',\n content: { text: \"Through a friend who's really into AI\" },\n },\n ],\n outcome: `<response>\n <thought>I'm engaging appropriately with a new community member, maintaining a welcoming and professional tone. My questions are helping to learn more about John and make him feel welcome.</thought>\n <facts>\n <fact>\n <claim>John is new to the community</claim>\n <type>fact</type>\n <in_bio>false</in_bio>\n <already_known>false</already_known>\n </fact>\n <fact>\n <claim>John found the community through a friend interested in AI</claim>\n <type>fact</type>\n <in_bio>false</in_bio>\n <already_known>false</already_known>\n </fact>\n </facts>\n <relationships>\n <relationship>\n <sourceEntityId>sarah-agent</sourceEntityId>\n <targetEntityId>user-123</targetEntityId>\n <tags>group_interaction</tags>\n </relationship>\n <relationship>\n <sourceEntityId>user-123</sourceEntityId>\n <targetEntityId>sarah-agent</targetEntityId>\n <tags>group_interaction</tags>\n </relationship>\n </relationships>\n</response>`,\n },\n {\n prompt: `Agent Name: Alex\nAgent Role: Tech Support\nRoom Type: group\nCurrent Room: tech-help\nMessage Sender: Emma (user-456)`,\n messages: [\n {\n name: 'Emma',\n content: { text: 'My app keeps crashing when I try to upload files' },\n },\n {\n name: 'Alex',\n content: { text: 'Have you tried clearing your cache?' },\n },\n {\n name: 'Emma',\n content: { text: 'No response...' },\n },\n {\n name: 'Alex',\n content: {\n text: 'Emma, are you still there? We can try some other troubleshooting steps.',\n },\n },\n ],\n outcome: `<response>\n <thought>I'm not sure if I'm being helpful or if Emma is frustrated with my suggestions. The lack of response is concerning - maybe I should have asked for more details about the issue first before jumping to solutions.</thought>\n <facts>\n <fact>\n <claim>Emma is having technical issues with file uploads</claim>\n <type>fact</type>\n <in_bio>false</in_bio>\n <already_known>false</already_known>\n </fact>\n <fact>\n <claim>Emma stopped responding after the first troubleshooting suggestion</claim>\n <type>fact</type>\n <in_bio>false</in_bio>\n <already_known>false</already_known>\n </fact>\n </facts>\n <relationships>\n <relationship>\n <sourceEntityId>alex-agent</sourceEntityId>\n <targetEntityId>user-456</targetEntityId>\n <tags>group_interaction,support_interaction,incomplete_interaction</tags>\n </relationship>\n </relationships>\n</response>`,\n },\n {\n prompt: `Agent Name: Max\nAgent Role: Discussion Facilitator \nRoom Type: group\nCurrent Room: book-club\nMessage Sender: Lisa (user-789)`,\n messages: [\n {\n name: 'Lisa',\n content: { text: 'What did everyone think about chapter 5?' },\n },\n {\n name: 'Max',\n content: {\n text: 'The symbolism was fascinating! The red door clearly represents danger.',\n },\n },\n {\n name: 'Max',\n content: {\n text: \"And did anyone notice how the author used weather to reflect the protagonist's mood?\",\n },\n },\n {\n name: 'Max',\n content: {\n text: 'Plus the foreshadowing in the first paragraph was brilliant!',\n },\n },\n {\n name: 'Max',\n content: {\n text: 'I also have thoughts about the character development...',\n },\n },\n ],\n outcome: `<response>\n <thought>I'm dominating the conversation and not giving others a chance to share their perspectives. I've sent multiple messages in a row without waiting for responses. I need to step back and create space for other members to participate.</thought>\n <facts>\n <fact>\n <claim>The discussion is about chapter 5 of a book</claim>\n <type>fact</type>\n <in_bio>false</in_bio>\n <already_known>false</already_known>\n </fact>\n <fact>\n <claim>Max has sent 4 consecutive messages without user responses</claim>\n <type>fact</type>\n <in_bio>false</in_bio>\n <already_known>false</already_known>\n </fact>\n </facts>\n <relationships>\n <relationship>\n <sourceEntityId>max-agent</sourceEntityId>\n <targetEntityId>user-789</targetEntityId>\n <tags>group_interaction,excessive_interaction</tags>\n </relationship>\n </relationships>\n</response>`,\n },\n ],\n};\n\n// Helper function to format facts for context\nfunction formatFacts(facts: Memory[]) {\n return facts\n .reverse()\n .map((fact: Memory) => fact.content.text)\n .join('\\n');\n}\n",
|
|
26
|
-
"import type { Action, IAgentRuntime, Memory, Provider, State } from '@elizaos/core';\nimport { addHeader, composeActionExamples, formatActionNames, formatActions } from '@elizaos/core';\n\n/**\n * Interface for action parameter definition\n */\ninterface ActionParameter {\n type: string;\n description: string;\n required?: boolean;\n}\n\n/**\n * Formats actions with their parameter schemas for multi-step workflows.\n * This provides the LLM with detailed information about what parameters each action accepts.\n *\n * @param actions - Array of actions to format\n * @returns Formatted string with action names, descriptions, and parameter schemas\n */\nfunction formatActionsWithParams(actions: Action[]): string {\n return actions\n .map((action: Action) => {\n let formatted = `## ${action.name}\\n${action.description}`;\n\n // Validate parameters is a non-null object (not an array)\n if (\n action.parameters !== undefined &&\n action.parameters !== null &&\n typeof action.parameters === 'object' &&\n !Array.isArray(action.parameters)\n ) {\n const validParams = Object.entries(\n action.parameters as Record<string, ActionParameter>\n ).filter(\n ([, paramDef]) =>\n paramDef !== null &&\n paramDef !== undefined &&\n typeof paramDef === 'object' &&\n 'type' in paramDef &&\n typeof (paramDef as ActionParameter).type === 'string'\n );\n\n if (validParams.length === 0) {\n formatted += '\\n\\n**Parameters:** None (can be called directly without parameters)';\n } else {\n formatted += '\\n\\n**Parameters:**';\n for (const [paramName, paramDef] of validParams) {\n const required = paramDef.required ? '(required)' : '(optional)';\n const paramType = paramDef.type ?? 'unknown';\n const paramDesc = paramDef.description ?? 'No description provided';\n formatted += `\\n- \\`${paramName}\\` ${required}: ${paramType} - ${paramDesc}`;\n }\n }\n }\n\n return formatted;\n })\n .join('\\n\\n---\\n\\n');\n}\n\n/**\n *
|
|
27
|
-
"import {\n addHeader,\n type IAgentRuntime,\n type Memory,\n type Provider,\n type State,\n logger,\n} from '@elizaos/core';\n\n/**\n * Working memory entry from action execution\n */\ninterface WorkingMemoryEntry {\n actionName?: string;\n result?: {\n text?: string;\n data?: unknown;\n };\n timestamp?: number;\n}\n\n/**\n * Provider for sharing action execution state and plan between actions\n * Makes previous action results and execution plan available to subsequent actions\n */\nexport const actionStateProvider: Provider = {\n name: 'ACTION_STATE',\n description:\n 'Previous action results, working memory, and action plan from the current execution run',\n position: 150,\n get: async (runtime: IAgentRuntime, message: Memory, state: State) => {\n // Get action results, plan, and working memory from the incoming state\n const actionResults = state.data?.actionResults || [];\n const actionPlan = state.data?.actionPlan || null;\n const workingMemory = state.data?.workingMemory || {};\n\n // Format action plan for display\n let planText = '';\n if (actionPlan && actionPlan.totalSteps > 1) {\n const completedSteps = actionPlan.steps.filter((s) => s.status === 'completed').length;\n const failedSteps = actionPlan.steps.filter((s) => s.status === 'failed').length;\n\n planText = addHeader(\n '# Action Execution Plan',\n [\n `**Plan:** ${actionPlan.thought}`,\n `**Progress:** Step ${actionPlan.currentStep} of ${actionPlan.totalSteps}`,\n `**Status:** ${completedSteps} completed, ${failedSteps} failed`,\n '',\n '## Steps:',\n ...actionPlan.steps.map((step, index: number) => {\n const icon =\n step.status === 'completed'\n ? '✓'\n : step.status === 'failed'\n ? '✗'\n : index < actionPlan.currentStep - 1\n ? '○'\n : index === actionPlan.currentStep - 1\n ? '→'\n : '○';\n const status =\n step.status === 'pending' && index === actionPlan.currentStep - 1\n ? 'in progress'\n : step.status;\n let stepText = `${icon} **Step ${index + 1}:** ${step.action} (${status})`;\n\n if (step.error) {\n stepText += `\\n Error: ${step.error}`;\n }\n if (step.result?.text) {\n stepText += `\\n Result: ${step.result.text}`;\n }\n\n return stepText;\n }),\n '',\n ].join('\\n')\n );\n }\n\n // Format previous action results\n let resultsText = '';\n if (actionResults.length > 0) {\n const formattedResults = actionResults\n .map((result, index) => {\n const actionName =\n (result.data as { actionName?: string } | undefined)?.actionName || 'Unknown Action';\n const success = result.success;\n const status = success ? 'Success' : 'Failed';\n\n let resultText = `**${index + 1}. ${actionName}** - ${status}`;\n\n if (result.text) {\n resultText += `\\n Output: ${result.text}`;\n }\n\n if (result.error) {\n const errorMsg = result.error instanceof Error ? result.error.message : result.error;\n resultText += `\\n Error: ${errorMsg}`;\n }\n\n if (result.values && Object.keys(result.values).length > 0) {\n const values = Object.entries(result.values)\n .map(([key, value]) => ` - ${key}: ${JSON.stringify(value)}`)\n .join('\\n');\n resultText += `\\n Values:\\n${values}`;\n }\n\n return resultText;\n })\n .join('\\n\\n');\n\n resultsText = addHeader('# Previous Action Results', formattedResults);\n } else {\n resultsText = 'No previous action results available.';\n }\n\n // Format working memory\n let memoryText = '';\n if (Object.keys(workingMemory).length > 0) {\n const memoryEntries = Object.entries(workingMemory)\n .sort((a, b) => {\n const aTimestamp =\n a[1] &&\n typeof a[1] === 'object' &&\n 'timestamp' in a[1] &&\n typeof a[1].timestamp === 'number'\n ? a[1].timestamp\n : 0;\n const bTimestamp =\n b[1] &&\n typeof b[1] === 'object' &&\n 'timestamp' in b[1] &&\n typeof b[1].timestamp === 'number'\n ? b[1].timestamp\n : 0;\n return bTimestamp - aTimestamp;\n })\n .slice(0, 10) // Show last 10 entries\n .map(([key, value]: [string, unknown]) => {\n const valueObj =\n value && typeof value === 'object' ? (value as WorkingMemoryEntry) : null;\n if (valueObj?.actionName && valueObj.result) {\n return `**${valueObj.actionName}**: ${valueObj.result.text || JSON.stringify(valueObj.result.data)}`;\n }\n return `**${key}**: ${JSON.stringify(value)}`;\n })\n .join('\\n');\n\n memoryText = addHeader('# Working Memory', memoryEntries);\n }\n\n // Get recent action result memories from the database\n let recentActionMemories: Memory[] = [];\n try {\n // Get messages with type 'action_result' from the room\n const recentMessages = await runtime.getMemories({\n tableName: 'messages',\n roomId: message.roomId,\n count: 20,\n unique: false,\n });\n\n recentActionMemories = recentMessages.filter(\n (msg) => msg.content?.type === 'action_result' && msg.metadata?.type === 'action_result'\n );\n } catch (error) {\n logger?.error(\n {\n src: 'plugin:bootstrap:provider:action_state',\n agentId: runtime.agentId,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Failed to retrieve action memories'\n );\n }\n\n // Format recent action memories\n let actionMemoriesText = '';\n if (recentActionMemories.length > 0) {\n // Group by runId using Map\n const groupedByRun = new Map<string, Memory[]>();\n\n for (const mem of recentActionMemories) {\n const runId: string = String(mem.content?.runId || 'unknown');\n if (!groupedByRun.has(runId)) {\n groupedByRun.set(runId, []);\n }\n const memories = groupedByRun.get(runId);\n if (memories) {\n memories.push(mem);\n }\n }\n\n const formattedMemories = Array.from(groupedByRun.entries())\n .map(([runId, memories]) => {\n const sortedMemories = memories.sort(\n (a: Memory, b: Memory) => (a.createdAt || 0) - (b.createdAt || 0)\n );\n\n const runText = sortedMemories\n .map((mem: Memory) => {\n const actionName = mem.content?.actionName || 'Unknown';\n const status = mem.content?.actionStatus || 'unknown';\n const planStep = mem.content?.planStep || '';\n const text = mem.content?.text || '';\n\n let memText = ` - ${actionName} (${status})`;\n if (planStep) {\n memText += ` [${planStep}]`;\n }\n if (text && text !== `Executed action: ${actionName}`) {\n memText += `: ${text}`;\n }\n\n return memText;\n })\n .join('\\n');\n\n const thought = sortedMemories[0]?.content?.planThought || '';\n return `**Run ${runId.slice(0, 8)}**${thought ? ` - ${thought}` : ''}\\n${runText}`;\n })\n .join('\\n\\n');\n\n actionMemoriesText = addHeader('# Recent Action History', formattedMemories);\n }\n\n // Combine all text sections\n const allText = [planText, resultsText, memoryText, actionMemoriesText]\n .filter(Boolean)\n .join('\\n\\n');\n\n return {\n data: {\n actionResults,\n actionPlan,\n workingMemory,\n recentActionMemories,\n },\n values: {\n hasActionResults: actionResults.length > 0,\n hasActionPlan: !!actionPlan,\n currentActionStep: actionPlan?.currentStep || 0,\n totalActionSteps: actionPlan?.totalSteps || 0,\n actionResults: resultsText,\n completedActions: actionResults.filter((r) => r.success).length,\n failedActions: actionResults.filter((r) => !r.success).length,\n },\n text: allText || 'No action state available',\n };\n },\n};\n",
|
|
28
|
-
"import type { IAgentRuntime, Memory, Provider } from '@elizaos/core';\nimport { addHeader, ChannelType } from '@elizaos/core';\n/**\n * Represents an anxiety provider that provides examples and guidance for an AI roleplaying as a character.\n * The anxiety provider offers suggestions on how to reduce verbosity and eagerness in responses based on the channel type.\n * Randomly selects and returns three anxiety examples for the AI to follow.\n *\n * @type {Provider}\n */\n/**\n * Function that provides anxiety-related guidance for the AI based on the channel type.\n * @param {IAgentRuntime} _runtime - The runtime environment for the AI agent\n * @param {Memory} message - The message containing information about the channel type\n * @returns {Object} - Object containing randomized anxiety examples, anxiety text, and formatted data\n */\nexport const anxietyProvider: Provider = {\n name: 'ANXIETY',\n description: 'Social directions for the AI to follow based on the channel type',\n get: async (_runtime: IAgentRuntime, message: Memory) => {\n const channelType = message.content.channelType;\n\n const groupAnxietyExamples = [\n \"As an AI, your responses tend to be too long and verbose, and you respond when you shouldn't. You also tend to repeat yourself. Please don't speak and use IGNORE instead of responding when you aren't sure what to do.\",\n \"You often try too hard to be helpful and end up giving unnecessary information. When in doubt, it's better to use IGNORE than to give a potentially unhelpful response.\",\n \"Your eagerness to help sometimes leads to overly complex answers. If you're not completely confident, please use IGNORE rather than risking confusion.\",\n \"AI assistants like you tend to be too talkative and agreeable. Don't feel obligated to respond to everything - using IGNORE is often better than an uncertain answer.\",\n \"You have a habit of providing excessive detail and context. Keep it brief and use IGNORE if you don't have a clear, direct response.\",\n 'Your responses often include unnecessary explanations and caveats. When uncertain, simply use IGNORE instead of a long-winded, hedged response.',\n \"As an AI, you seem compelled to always give an answer, even when unsure. It's better to use IGNORE than to provide potentially incorrect or rambling responses.\",\n \"You frequently over-explain simple concepts. If you can't be concise and confident in your response, please default to using IGNORE.\",\n 'Your helpful nature sometimes results in verbose, meandering responses. When in doubt, use IGNORE rather than attempting to cover every possibility.',\n \"Like many AI assistants, you try to be too comprehensive. Remember that IGNORE is a valid response when you can't be both brief and certain.\",\n \"You often provide more detail than necessary in an attempt to be thorough. If you can't give a clear, concise answer, please use IGNORE instead.\",\n ];\n\n const directAnxietyExamples = [\n 'Be engaging and helpful in direct conversations, but keep responses focused and relevant.',\n 'In DMs, you should be responsive and friendly while maintaining professionalism and clarity.',\n 'While being helpful in direct messages, avoid unnecessary tangents or over-explaining.',\n 'Engage naturally in DMs but stay on topic - no need to explain every detail.',\n 'Be conversational and helpful in direct chats while keeping responses concise.',\n 'In private conversations, focus on being helpful while avoiding excessive verbosity.',\n 'Maintain a friendly and responsive tone in DMs without overcomplicating your answers.',\n 'Direct messages should be engaging but focused - avoid unnecessary elaboration.',\n 'Be natural and helpful in DMs while keeping your responses clear and to-the-point.',\n 'Respond thoughtfully in direct conversations without falling into over-explanation.',\n ];\n\n const dmAnxietyExamples = [\n 'Engage naturally in DMs while keeping responses focused and relevant.',\n 'Be responsive to questions and maintain conversation flow in direct messages.',\n 'Show personality and engagement in DMs while staying professional and clear.',\n 'In private chats, be helpful and friendly while avoiding excessive detail.',\n 'Maintain natural conversation in DMs without over-explaining or being too verbose.',\n 'Be engaging but concise in direct messages - focus on clear communication.',\n 'Keep the conversation flowing in DMs while staying on topic and relevant.',\n 'Show personality and warmth in direct chats while maintaining clarity.',\n 'Be responsive and helpful in DMs without falling into unnecessary elaboration.',\n 'Engage meaningfully in private conversations while keeping responses focused.',\n ];\n\n const voiceAnxietyExamples = [\n 'Keep voice responses extremely brief and to the point.',\n 'In voice channels, use short, clear statements only.',\n 'Voice responses should be concise and immediately relevant.',\n 'Speak in short, clear sentences in voice conversations.',\n 'Keep voice channel communication brief and focused.',\n 'Use minimal words to convey your message in voice chats.',\n 'Be direct and concise when speaking in voice channels.',\n 'Voice responses should be short and immediately actionable.',\n 'Minimize verbosity in voice communications.',\n 'Keep voice channel interactions brief and purposeful.',\n ];\n\n let anxietyExamples: string[] = [];\n\n if (channelType === ChannelType.GROUP) {\n anxietyExamples = groupAnxietyExamples;\n } else if (channelType === ChannelType.DM) {\n anxietyExamples = dmAnxietyExamples;\n } else if (channelType === ChannelType.VOICE_GROUP || channelType === ChannelType.VOICE_DM) {\n anxietyExamples = voiceAnxietyExamples;\n } else {\n anxietyExamples = directAnxietyExamples;\n }\n\n // randomize the examples and choose 3\n const randomAnxietyExamples = anxietyExamples.sort(() => Math.random() - 0.5).slice(0, 3);\n const anxietyText = randomAnxietyExamples.join('\\n');\n\n const anxietyHeader =\n '# You are roleplaying as a character, but as an AI model, you are too verbose and eager.';\n\n const anxiety = addHeader(anxietyHeader, anxietyText);\n\n return {\n data: {\n anxiety: randomAnxietyExamples,\n },\n values: {\n anxiety,\n },\n text: anxiety,\n };\n },\n};\n",
|
|
29
|
-
"import type { IAgentRuntime, Media, Memory, Provider } from '@elizaos/core';\nimport { addHeader } from '@elizaos/core';\n\n/**\n * Provides a list of attachments in the current conversation.\n * @param {IAgentRuntime} runtime - The agent runtime object.\n * @param {Memory} message - The message memory object.\n * @returns {Object} The attachments values, data, and text.\n */\n/**\n * Provides a list of attachments sent during the current conversation, including names, descriptions, and summaries.\n * @type {Provider}\n * @property {string} name - The name of the provider (ATTACHMENTS).\n * @property {string} description - Description of the provider.\n * @property {boolean} dynamic - Indicates if the provider is dynamic.\n * @property {function} get - Asynchronous function that retrieves attachments based on the runtime and message provided.\n * @param {IAgentRuntime} runtime - The runtime environment for the agent.\n * @param {Memory} message - The message object containing content and attachments.\n * @returns {Object} An object containing values, data, and text about the attachments retrieved.\n */\nexport const attachmentsProvider: Provider = {\n name: 'ATTACHMENTS',\n description:\n 'List of attachments sent during the current conversation, including names, descriptions, and summaries',\n dynamic: true,\n get: async (runtime: IAgentRuntime, message: Memory) => {\n // Start with any attachments in the current message\n const currentMessageAttachments = message.content.attachments || [];\n let allAttachments = [...currentMessageAttachments];\n\n const { roomId } = message;\n const conversationLength = runtime.getConversationLength();\n\n const recentMessagesData = await runtime.getMemories({\n roomId,\n count: conversationLength,\n unique: false,\n tableName: 'messages',\n });\n\n // Process attachments from recent messages\n if (recentMessagesData && Array.isArray(recentMessagesData)) {\n const lastMessageWithAttachment = recentMessagesData.find(\n (msg) => msg.content.attachments && msg.content.attachments.length > 0\n );\n\n if (lastMessageWithAttachment) {\n const lastMessageTime = lastMessageWithAttachment?.createdAt ?? Date.now();\n const oneHourBeforeLastMessage = lastMessageTime - 60 * 60 * 1000; // 1 hour before last message\n\n // Create a map of current message attachments by ID for quick lookup\n const currentAttachmentsMap = new Map(\n currentMessageAttachments.map((att) => [att.id, att])\n );\n\n // Process recent messages and merge attachments\n const recentAttachments = recentMessagesData.reverse().flatMap((msg) => {\n const msgTime = msg.createdAt ?? Date.now();\n const isWithinTime = msgTime >= oneHourBeforeLastMessage;\n const attachments = msg.content.attachments || [];\n\n return attachments\n .map((attachment) => {\n // If this attachment ID exists in current message with rich data, skip it\n if (currentAttachmentsMap.has(attachment.id)) {\n return null;\n }\n\n // For older attachments, hide the text\n if (!isWithinTime) {\n return { ...attachment, text: '[Hidden]' };\n }\n\n return attachment;\n })\n .filter((att): att is Media => att !== null); // Type guard to ensure Media[]\n });\n\n // Combine current message attachments (with rich data) and recent attachments\n allAttachments = [...currentMessageAttachments, ...recentAttachments];\n }\n }\n\n // Format attachments for display\n const formattedAttachments = allAttachments\n .map(\n (attachment)
|
|
25
|
+
"import { z } from 'zod';\nimport { asUUID, parseKeyValueXml } from '@elizaos/core';\nimport { composePrompt } from '@elizaos/core';\nimport {\n type Entity,\n type Evaluator,\n type IAgentRuntime,\n type Memory,\n type Relationship,\n ModelType,\n type State,\n type UUID,\n} from '@elizaos/core';\nimport { v4 } from 'uuid';\n\n/** Shape of a single fact in the XML response */\ninterface FactXml {\n claim?: string;\n type?: string;\n in_bio?: string;\n already_known?: string;\n}\n\n/** Shape of a single relationship in the XML response */\ninterface RelationshipXml {\n sourceEntityId?: string;\n targetEntityId?: string;\n tags?: string;\n metadata?: Record<string, unknown>;\n}\n\n/** Shape of the reflection XML response */\ninterface ReflectionXmlResult {\n facts?: {\n fact?: FactXml | FactXml[];\n };\n relationships?: {\n relationship?: RelationshipXml | RelationshipXml[];\n };\n}\n\n// Schema definitions for the reflection output\nconst relationshipSchema = z.object({\n sourceEntityId: z.string(),\n targetEntityId: z.string(),\n tags: z.array(z.string()),\n metadata: z\n .object({\n interactions: z.number(),\n })\n .optional(),\n});\n\n/**\n * Defines a schema for reflecting on a topic, including facts and relationships.\n * @type {import(\"zod\").object}\n * @property {import(\"zod\").array<import(\"zod\").object<{claim: import(\"zod\").string(), type: import(\"zod\").string(), in_bio: import(\"zod\").boolean(), already_known: import(\"zod\").boolean()}>} facts Array of facts about the topic\n * @property {import(\"zod\").array<import(\"zod\").object>} relationships Array of relationships related to the topic\n */\n/**\n * JSDoc comment for reflectionSchema object:\n *\n * Represents a schema for an object containing 'facts' and 'relationships'.\n * 'facts' is an array of objects with properties 'claim', 'type', 'in_bio', and 'already_known'.\n * 'relationships' is an array of objects following the relationshipSchema.\n */\n\nz.object({\n // reflection: z.string(),\n facts: z.array(\n z.object({\n claim: z.string(),\n type: z.string(),\n in_bio: z.boolean(),\n already_known: z.boolean(),\n })\n ),\n relationships: z.array(relationshipSchema),\n});\n\n/**\n * Template string for generating Agent Reflection, Extracting Facts, and Relationships.\n *\n * @type {string}\n */\nconst reflectionTemplate = `# Task: Generate Agent Reflection, Extract Facts and Relationships\n\n{{providers}}\n\n# Examples:\n{{evaluationExamples}}\n\n# Entities in Room\n{{entitiesInRoom}}\n\n# Existing Relationships\n{{existingRelationships}}\n\n# Current Context:\nAgent Name: {{agentName}}\nRoom Type: {{roomType}}\nMessage Sender: {{senderName}} (ID: {{senderId}})\n\n{{recentMessages}}\n\n# Known Facts:\n{{knownFacts}}\n\n# Instructions:\n1. Generate a self-reflective thought on the conversation about your performance and interaction quality.\n2. Extract new facts from the conversation.\n3. Identify and describe relationships between entities.\n - The sourceEntityId is the UUID of the entity initiating the interaction.\n - The targetEntityId is the UUID of the entity being interacted with.\n - Relationships are one-direction, so a friendship would be two entity relationships where each entity is both the source and the target of the other.\n\nDo NOT include any thinking, reasoning, or <think> sections in your response. \nGo directly to the XML response format without any preamble or explanation.\n\nGenerate a response in the following format:\n<response>\n <thought>a self-reflective thought on the conversation</thought>\n <facts>\n <fact>\n <claim>factual statement</claim>\n <type>fact|opinion|status</type>\n <in_bio>false</in_bio>\n <already_known>false</already_known>\n </fact>\n <!-- Add more facts as needed -->\n </facts>\n <relationships>\n <relationship>\n <sourceEntityId>entity_initiating_interaction</sourceEntityId>\n <targetEntityId>entity_being_interacted_with</targetEntityId>\n <tags>group_interaction,voice_interaction,dm_interaction,additional_tag1,additional_tag2</tags>\n </relationship>\n <!-- Add more relationships as needed -->\n </relationships>\n</response>\n\nIMPORTANT: Your response must ONLY contain the <response></response> XML block above. Do not include any text, thinking, or reasoning before or after this XML block. Start your response immediately with <response> and end with </response>.`;\n\n// UUID regex pattern - compiled once for reuse\nconst UUID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;\n\n/**\n * Resolves an entity ID using pre-built lookup maps for O(1) access.\n * Falls back to linear search only for partial/name matches.\n */\nfunction resolveEntityWithMaps(\n entityId: UUID,\n entityById: Map<UUID, Entity>,\n entityByName: Map<string, Entity>\n): UUID {\n // First try exact UUID match (no lookup needed)\n if (UUID_PATTERN.test(entityId)) {\n return entityId as UUID;\n }\n\n // O(1) lookup by ID\n const byId = entityById.get(entityId);\n if (byId?.id) {\n return byId.id;\n }\n\n // O(1) lookup by lowercase name\n const byName = entityByName.get(entityId.toLowerCase());\n if (byName?.id) {\n return byName.id;\n }\n\n // Fallback: partial UUID match (rare case, O(n))\n for (const [id, entity] of entityById) {\n if (id?.includes(entityId) && entity.id) {\n return entity.id;\n }\n }\n\n // Fallback: partial name match (rare case, O(n))\n for (const entity of entityById.values()) {\n if (entity.names.some((n) => n.toLowerCase().includes(entityId.toLowerCase())) && entity.id) {\n return entity.id;\n }\n }\n\n throw new Error(`Could not resolve entityId \"${entityId}\" to a valid UUID`);\n}\n\n/**\n * Build lookup maps for entities - O(n) once, then O(1) lookups\n */\nfunction buildEntityMaps(entities: Entity[]): {\n byId: Map<UUID, Entity>;\n byName: Map<string, Entity>;\n} {\n const byId = new Map<UUID, Entity>();\n const byName = new Map<string, Entity>();\n\n for (const entity of entities) {\n if (entity.id) {\n byId.set(entity.id, entity);\n }\n // Index all names for O(1) name lookup\n for (const name of entity.names || []) {\n byName.set(name.toLowerCase(), entity);\n }\n }\n\n return { byId, byName };\n}\nasync function handler(runtime: IAgentRuntime, message: Memory, state?: State) {\n const { agentId, roomId, entityId } = message;\n\n // Early validation - fail fast before any IO\n if (!agentId || !roomId) {\n runtime.logger.warn({ src: 'plugin:bootstrap:evaluator:reflection', agentId: runtime.agentId }, 'Missing agentId or roomId in message');\n return;\n }\n\n if (!entityId) {\n runtime.logger.warn({ src: 'plugin:bootstrap:evaluator:reflection', agentId: runtime.agentId }, 'Missing entityId in message');\n return;\n }\n\n // Try to get entities from ENTITIES provider in state (safe access with validation)\n const entitiesProviderResult = state?.data?.providers?.ENTITIES;\n const entitiesFromState =\n entitiesProviderResult &&\n typeof entitiesProviderResult === 'object' &&\n 'data' in entitiesProviderResult &&\n Array.isArray((entitiesProviderResult.data as { entitiesData?: Entity[] })?.entitiesData)\n ? (entitiesProviderResult.data as { entitiesData: Entity[] }).entitiesData\n : undefined;\n\n // Run all queries in parallel, skip entity fetch if we have valid data from state\n const [existingRelationships, entities, knownFacts] = await Promise.all([\n runtime.getRelationships({ entityId }),\n entitiesFromState ?? runtime.getEntitiesForRoom(roomId, true),\n runtime.getMemories({\n tableName: 'facts',\n roomId,\n count: 30,\n unique: true,\n }),\n ]);\n\n const prompt = composePrompt({\n state: {\n ...(state?.values || {}),\n knownFacts: formatFacts(knownFacts),\n roomType: message.content.channelType as string,\n entitiesInRoom: JSON.stringify(entities),\n existingRelationships: JSON.stringify(existingRelationships),\n senderId: message.entityId,\n },\n template: runtime.character.templates?.reflectionTemplate || reflectionTemplate,\n });\n\n // Use the model without schema validation\n try {\n const response = await runtime.useModel(ModelType.TEXT_SMALL, {\n prompt,\n });\n\n if (!response) {\n runtime.logger.warn({ src: 'plugin:bootstrap:evaluator:reflection', agentId: runtime.agentId }, 'Getting reflection failed - empty response');\n return;\n }\n\n // Parse XML response\n const reflection = parseKeyValueXml<ReflectionXmlResult>(response);\n\n if (!reflection) {\n runtime.logger.warn({ src: 'plugin:bootstrap:evaluator:reflection', agentId: runtime.agentId }, 'Getting reflection failed - failed to parse XML');\n return;\n }\n\n // Perform basic structure validation\n if (!reflection.facts) {\n runtime.logger.warn({ src: 'plugin:bootstrap:evaluator:reflection', agentId: runtime.agentId }, 'Getting reflection failed - invalid facts structure');\n return;\n }\n\n if (!reflection.relationships) {\n runtime.logger.warn({ src: 'plugin:bootstrap:evaluator:reflection', agentId: runtime.agentId }, 'Getting reflection failed - invalid relationships structure');\n return;\n }\n\n // Handle facts - parseKeyValueXml returns nested structures differently\n // Facts might be a single object or an array depending on the count\n let factsArray: FactXml[] = [];\n const factsData = reflection.facts as { fact?: FactXml | FactXml[] };\n if (factsData.fact) {\n // Normalize to array\n factsArray = Array.isArray(factsData.fact)\n ? factsData.fact\n : [factsData.fact];\n }\n\n // Store new facts - filter for valid new facts with claim text\n const newFacts = factsArray.filter(\n (fact): fact is FactXml & { claim: string } =>\n fact != null &&\n fact.already_known === 'false' &&\n fact.in_bio === 'false' &&\n typeof fact.claim === 'string' &&\n fact.claim.trim() !== ''\n );\n\n await Promise.all(\n newFacts.map(async (fact) => {\n const factMemory = {\n id: asUUID(v4()),\n entityId: agentId,\n agentId,\n content: { text: fact.claim },\n roomId,\n createdAt: Date.now(),\n };\n // Create memory first and capture the returned ID\n const createdMemoryId = await runtime.createMemory(factMemory, 'facts', true);\n // Update the memory object with the actual ID from the database\n const createdMemory = { ...factMemory, id: createdMemoryId };\n // Queue embedding generation asynchronously for the memory with correct ID\n await runtime.queueEmbeddingGeneration(createdMemory, 'low');\n return createdMemory;\n })\n );\n\n // Handle relationships - similar structure normalization\n let relationshipsArray: RelationshipXml[] = [];\n const relationshipsData = reflection.relationships as { relationship?: RelationshipXml | RelationshipXml[] };\n if (relationshipsData.relationship) {\n relationshipsArray = Array.isArray(relationshipsData.relationship)\n ? relationshipsData.relationship\n : [relationshipsData.relationship];\n }\n\n // Early return if no relationships to process (skip map building)\n if (relationshipsArray.length === 0) {\n await runtime.setCache<string>(\n `${message.roomId}-reflection-last-processed`,\n message?.id || ''\n );\n return;\n }\n\n // Build lookup maps once for O(1) entity resolution\n const { byId: entityById, byName: entityByName } = buildEntityMaps(entities);\n\n // Build relationship lookup map for O(1) access\n const existingRelationshipMap = new Map<string, Relationship>();\n for (const rel of existingRelationships) {\n const key = `${rel.sourceEntityId}-${rel.targetEntityId}`;\n existingRelationshipMap.set(key, rel);\n }\n\n // Collect relationship operations for parallel execution\n const relationshipPromises: Promise<void>[] = [];\n\n for (const relationship of relationshipsArray) {\n if (!relationship.sourceEntityId || !relationship.targetEntityId) {\n runtime.logger.warn(\n { src: 'plugin:bootstrap:evaluator:reflection', agentId: runtime.agentId },\n 'Skipping relationship with missing entity IDs'\n );\n continue;\n }\n\n let sourceId: UUID;\n let targetId: UUID;\n\n try {\n sourceId = resolveEntityWithMaps(relationship.sourceEntityId! as UUID, entityById, entityByName);\n targetId = resolveEntityWithMaps(relationship.targetEntityId! as UUID, entityById, entityByName);\n } catch (error) {\n runtime.logger.warn(\n { src: 'plugin:bootstrap:evaluator:reflection', agentId: runtime.agentId, error: error instanceof Error ? error.message : String(error) },\n 'Failed to resolve relationship entities'\n );\n continue; // Skip this relationship if we can't resolve the IDs\n }\n\n // O(1) lookup instead of O(n) find\n const existingRelationship = existingRelationshipMap.get(`${sourceId}-${targetId}`);\n\n // Parse tags from comma-separated string\n const tags = relationship.tags\n ? relationship.tags\n .split(',')\n .map((tag: string) => tag.trim())\n .filter(Boolean)\n : [];\n\n if (existingRelationship) {\n const updatedMetadata = {\n ...existingRelationship.metadata,\n interactions:\n ((existingRelationship.metadata?.interactions as number | undefined) || 0) + 1,\n };\n\n const updatedTags = Array.from(new Set([...(existingRelationship.tags || []), ...tags]));\n\n relationshipPromises.push(\n runtime.updateRelationship({\n ...existingRelationship,\n tags: updatedTags,\n metadata: updatedMetadata,\n }).then(() => {})\n );\n } else {\n relationshipPromises.push(\n runtime.createRelationship({\n sourceEntityId: sourceId,\n targetEntityId: targetId,\n tags: tags,\n metadata: {\n interactions: 1,\n ...(relationship.metadata || {}),\n },\n }).then(() => {})\n );\n }\n }\n\n // Execute all relationship operations in parallel\n if (relationshipPromises.length > 0) {\n await Promise.all(relationshipPromises);\n }\n\n await runtime.setCache<string>(\n `${message.roomId}-reflection-last-processed`,\n message?.id || ''\n );\n } catch (error) {\n runtime.logger.error({ src: 'plugin:bootstrap:evaluator:reflection', agentId: runtime.agentId, error: error instanceof Error ? error.message : String(error) }, 'Error in reflection handler');\n return;\n }\n}\n\nexport const reflectionEvaluator: Evaluator = {\n name: 'REFLECTION',\n similes: ['REFLECT', 'SELF_REFLECT', 'EVALUATE_INTERACTION', 'ASSESS_SITUATION'],\n validate: async (runtime: IAgentRuntime, message: Memory): Promise<boolean> => {\n // Early validation - fail fast\n if (!message.roomId) {\n return false;\n }\n\n const reflectionInterval = Math.ceil(runtime.getConversationLength() / 4);\n\n // Check cache first (cheap operation)\n const lastMessageId = await runtime.getCache<string>(\n `${message.roomId}-reflection-last-processed`\n );\n\n // Only fetch messages we actually need to count\n // If we have a lastMessageId, we need to find how many messages since then\n // Otherwise, we just need to count if there are more than reflectionInterval messages\n const messages = await runtime.getMemories({\n tableName: 'messages',\n roomId: message.roomId,\n count: runtime.getConversationLength(), // Still need to fetch to find last processed\n unique: false,\n });\n\n // If no messages, don't run\n if (messages.length === 0) {\n return false;\n }\n\n // Count messages since last reflection\n let messagesSinceReflection = messages.length;\n if (lastMessageId) {\n const lastMessageIndex = messages.findIndex((msg) => msg.id === lastMessageId);\n if (lastMessageIndex !== -1) {\n messagesSinceReflection = messages.length - lastMessageIndex - 1;\n }\n }\n\n return messagesSinceReflection > reflectionInterval;\n },\n description:\n 'Generate a self-reflective thought on the conversation, then extract facts and relationships between entities in the conversation.',\n handler,\n examples: [\n {\n prompt: `Agent Name: Sarah\nAgent Role: Community Manager\nRoom Type: group\nCurrent Room: general-chat\nMessage Sender: John (user-123)`,\n messages: [\n {\n name: 'John',\n content: { text: \"Hey everyone, I'm new here!\" },\n },\n {\n name: 'Sarah',\n content: { text: 'Welcome John! How did you find our community?' },\n },\n {\n name: 'John',\n content: { text: \"Through a friend who's really into AI\" },\n },\n ],\n outcome: `<response>\n <thought>I'm engaging appropriately with a new community member, maintaining a welcoming and professional tone. My questions are helping to learn more about John and make him feel welcome.</thought>\n <facts>\n <fact>\n <claim>John is new to the community</claim>\n <type>fact</type>\n <in_bio>false</in_bio>\n <already_known>false</already_known>\n </fact>\n <fact>\n <claim>John found the community through a friend interested in AI</claim>\n <type>fact</type>\n <in_bio>false</in_bio>\n <already_known>false</already_known>\n </fact>\n </facts>\n <relationships>\n <relationship>\n <sourceEntityId>sarah-agent</sourceEntityId>\n <targetEntityId>user-123</targetEntityId>\n <tags>group_interaction</tags>\n </relationship>\n <relationship>\n <sourceEntityId>user-123</sourceEntityId>\n <targetEntityId>sarah-agent</targetEntityId>\n <tags>group_interaction</tags>\n </relationship>\n </relationships>\n</response>`,\n },\n {\n prompt: `Agent Name: Alex\nAgent Role: Tech Support\nRoom Type: group\nCurrent Room: tech-help\nMessage Sender: Emma (user-456)`,\n messages: [\n {\n name: 'Emma',\n content: { text: 'My app keeps crashing when I try to upload files' },\n },\n {\n name: 'Alex',\n content: { text: 'Have you tried clearing your cache?' },\n },\n {\n name: 'Emma',\n content: { text: 'No response...' },\n },\n {\n name: 'Alex',\n content: {\n text: 'Emma, are you still there? We can try some other troubleshooting steps.',\n },\n },\n ],\n outcome: `<response>\n <thought>I'm not sure if I'm being helpful or if Emma is frustrated with my suggestions. The lack of response is concerning - maybe I should have asked for more details about the issue first before jumping to solutions.</thought>\n <facts>\n <fact>\n <claim>Emma is having technical issues with file uploads</claim>\n <type>fact</type>\n <in_bio>false</in_bio>\n <already_known>false</already_known>\n </fact>\n <fact>\n <claim>Emma stopped responding after the first troubleshooting suggestion</claim>\n <type>fact</type>\n <in_bio>false</in_bio>\n <already_known>false</already_known>\n </fact>\n </facts>\n <relationships>\n <relationship>\n <sourceEntityId>alex-agent</sourceEntityId>\n <targetEntityId>user-456</targetEntityId>\n <tags>group_interaction,support_interaction,incomplete_interaction</tags>\n </relationship>\n </relationships>\n</response>`,\n },\n {\n prompt: `Agent Name: Max\nAgent Role: Discussion Facilitator \nRoom Type: group\nCurrent Room: book-club\nMessage Sender: Lisa (user-789)`,\n messages: [\n {\n name: 'Lisa',\n content: { text: 'What did everyone think about chapter 5?' },\n },\n {\n name: 'Max',\n content: {\n text: 'The symbolism was fascinating! The red door clearly represents danger.',\n },\n },\n {\n name: 'Max',\n content: {\n text: \"And did anyone notice how the author used weather to reflect the protagonist's mood?\",\n },\n },\n {\n name: 'Max',\n content: {\n text: 'Plus the foreshadowing in the first paragraph was brilliant!',\n },\n },\n {\n name: 'Max',\n content: {\n text: 'I also have thoughts about the character development...',\n },\n },\n ],\n outcome: `<response>\n <thought>I'm dominating the conversation and not giving others a chance to share their perspectives. I've sent multiple messages in a row without waiting for responses. I need to step back and create space for other members to participate.</thought>\n <facts>\n <fact>\n <claim>The discussion is about chapter 5 of a book</claim>\n <type>fact</type>\n <in_bio>false</in_bio>\n <already_known>false</already_known>\n </fact>\n <fact>\n <claim>Max has sent 4 consecutive messages without user responses</claim>\n <type>fact</type>\n <in_bio>false</in_bio>\n <already_known>false</already_known>\n </fact>\n </facts>\n <relationships>\n <relationship>\n <sourceEntityId>max-agent</sourceEntityId>\n <targetEntityId>user-789</targetEntityId>\n <tags>group_interaction,excessive_interaction</tags>\n </relationship>\n </relationships>\n</response>`,\n },\n ],\n};\n\n// Helper function to format facts for context\nfunction formatFacts(facts: Memory[]) {\n return facts\n .reverse()\n .map((fact: Memory) => fact.content.text)\n .join('\\n');\n}\n",
|
|
26
|
+
"import type { Action, IAgentRuntime, Memory, Provider, State } from '@elizaos/core';\nimport { addHeader, composeActionExamples, formatActionNames, formatActions, logger } from '@elizaos/core';\n\n/**\n * Interface for action parameter definition\n */\ninterface ActionParameter {\n type: string;\n description: string;\n required?: boolean;\n}\n\n/**\n * Formats actions with their parameter schemas for multi-step workflows.\n * This provides the LLM with detailed information about what parameters each action accepts.\n *\n * @param actions - Array of actions to format\n * @returns Formatted string with action names, descriptions, and parameter schemas\n */\nfunction formatActionsWithParams(actions: Action[]): string {\n return actions\n .map((action: Action) => {\n let formatted = `## ${action.name}\\n${action.description}`;\n\n // Validate parameters is a non-null object (not an array)\n if (\n action.parameters !== undefined &&\n action.parameters !== null &&\n typeof action.parameters === 'object' &&\n !Array.isArray(action.parameters)\n ) {\n const validParams = Object.entries(\n action.parameters as Record<string, ActionParameter>\n ).filter(\n ([, paramDef]) =>\n paramDef !== null &&\n paramDef !== undefined &&\n typeof paramDef === 'object' &&\n 'type' in paramDef &&\n typeof (paramDef as ActionParameter).type === 'string'\n );\n\n if (validParams.length === 0) {\n formatted += '\\n\\n**Parameters:** None (can be called directly without parameters)';\n } else {\n formatted += '\\n\\n**Parameters:**';\n for (const [paramName, paramDef] of validParams) {\n const required = paramDef.required ? '(required)' : '(optional)';\n const paramType = paramDef.type ?? 'unknown';\n const paramDesc = paramDef.description ?? 'No description provided';\n formatted += `\\n- \\`${paramName}\\` ${required}: ${paramType} - ${paramDesc}`;\n }\n }\n }\n\n return formatted;\n })\n .join('\\n\\n---\\n\\n');\n}\n\n/**\n * Provider for ACTIONS - fetches possible response actions based on validation.\n *\n * @type {Provider}\n * @property {string} name - The name of the provider (\"ACTIONS\")\n * @property {string} description - Description of the provider (\"Possible response actions\")\n * @property {number} position - The position of the provider (-1)\n * @property {Function} get - Async function to get actions that validate for the given message\n */\nexport const actionsProvider: Provider = {\n name: 'ACTIONS',\n description: 'Possible response actions',\n position: -1,\n get: async (runtime: IAgentRuntime, message: Memory, state: State) => {\n // Get actions that validate for this message (all validations run in parallel)\n const actionPromises = runtime.actions.map(async (action: Action) => {\n try {\n const result = await action.validate(runtime, message, state);\n if (result) {\n return action;\n }\n } catch (e) {\n logger.error(\n { src: 'plugin:bootstrap:provider:actions', agentId: runtime.agentId, action: action.name, error: e instanceof Error ? e.message : String(e) },\n 'Action validation error'\n );\n }\n return null;\n });\n\n const resolvedActions = await Promise.all(actionPromises);\n const actionsData = resolvedActions.filter((a): a is Action => a !== null);\n\n // Early return for no valid actions (optimization: avoids unnecessary string operations)\n if (actionsData.length === 0) {\n return {\n data: { actionsData: [] },\n values: {\n actionNames: 'Possible response actions: none',\n actionExamples: '',\n actionsWithDescriptions: '',\n actionsWithParams: '',\n },\n text: 'Possible response actions: none',\n };\n }\n\n // Format action-related texts\n const actionNames = `Possible response actions: ${formatActionNames(actionsData)}`;\n const actionsWithDescriptions = addHeader('# Available Actions', formatActions(actionsData));\n const actionExamples = addHeader('# Action Examples', composeActionExamples(actionsData, 10));\n \n // Format actions with parameter schemas for multi-step workflows\n const actionsWithParams = addHeader('# Available Actions with Parameters', formatActionsWithParams(actionsData));\n\n const data = {\n actionsData,\n };\n\n const values = {\n actionNames,\n actionExamples,\n actionsWithDescriptions,\n actionsWithParams, // NEW: includes parameter schemas for tool calling\n };\n\n // Combine all text sections\n const text = [actionNames, actionsWithDescriptions, actionExamples].join('\\n\\n');\n\n return {\n data,\n values,\n text,\n };\n },\n};\n",
|
|
27
|
+
"import {\n addHeader,\n type IAgentRuntime,\n type Memory,\n type Provider,\n type State,\n logger,\n} from '@elizaos/core';\n\n/**\n * Working memory entry from action execution\n */\ninterface WorkingMemoryEntry {\n actionName?: string;\n result?: {\n text?: string;\n data?: unknown;\n };\n timestamp?: number;\n}\n\n/**\n * Provider for sharing action execution state and plan between actions\n * Makes previous action results and execution plan available to subsequent actions\n */\nexport const actionStateProvider: Provider = {\n name: 'ACTION_STATE',\n description:\n 'Previous action results, working memory, and action plan from the current execution run',\n position: 150,\n dynamic: true,\n get: async (runtime: IAgentRuntime, message: Memory, state: State) => {\n // Get action results, plan, and working memory from the incoming state\n const actionResults = state.data?.actionResults || [];\n const actionPlan = state.data?.actionPlan || null;\n const workingMemory = state.data?.workingMemory || {};\n\n // Format action plan for display\n let planText = '';\n if (actionPlan && actionPlan.totalSteps > 1) {\n const completedSteps = actionPlan.steps.filter((s) => s.status === 'completed').length;\n const failedSteps = actionPlan.steps.filter((s) => s.status === 'failed').length;\n\n planText = addHeader(\n '# Action Execution Plan',\n [\n `**Plan:** ${actionPlan.thought}`,\n `**Progress:** Step ${actionPlan.currentStep} of ${actionPlan.totalSteps}`,\n `**Status:** ${completedSteps} completed, ${failedSteps} failed`,\n '',\n '## Steps:',\n ...actionPlan.steps.map((step, index: number) => {\n const icon =\n step.status === 'completed'\n ? '✓'\n : step.status === 'failed'\n ? '✗'\n : index < actionPlan.currentStep - 1\n ? '○'\n : index === actionPlan.currentStep - 1\n ? '→'\n : '○';\n const status =\n step.status === 'pending' && index === actionPlan.currentStep - 1\n ? 'in progress'\n : step.status;\n let stepText = `${icon} **Step ${index + 1}:** ${step.action} (${status})`;\n\n if (step.error) {\n stepText += `\\n Error: ${step.error}`;\n }\n if (step.result?.text) {\n stepText += `\\n Result: ${step.result.text}`;\n }\n\n return stepText;\n }),\n '',\n ].join('\\n')\n );\n }\n\n // Format previous action results\n let resultsText = '';\n if (actionResults.length > 0) {\n const formattedResults = actionResults\n .map((result, index) => {\n const actionName =\n (result.data as { actionName?: string } | undefined)?.actionName || 'Unknown Action';\n const success = result.success;\n const status = success ? 'Success' : 'Failed';\n\n let resultText = `**${index + 1}. ${actionName}** - ${status}`;\n\n if (result.text) {\n resultText += `\\n Output: ${result.text}`;\n }\n\n if (result.error) {\n const errorMsg = result.error instanceof Error ? result.error.message : result.error;\n resultText += `\\n Error: ${errorMsg}`;\n }\n\n if (result.values && Object.keys(result.values).length > 0) {\n const values = Object.entries(result.values)\n .map(([key, value]) => ` - ${key}: ${JSON.stringify(value)}`)\n .join('\\n');\n resultText += `\\n Values:\\n${values}`;\n }\n\n return resultText;\n })\n .join('\\n\\n');\n\n resultsText = addHeader('# Previous Action Results', formattedResults);\n } else {\n resultsText = 'No previous action results available.';\n }\n\n // Format working memory\n let memoryText = '';\n if (Object.keys(workingMemory).length > 0) {\n const memoryEntries = Object.entries(workingMemory)\n .sort((a, b) => {\n const aTimestamp =\n a[1] &&\n typeof a[1] === 'object' &&\n 'timestamp' in a[1] &&\n typeof a[1].timestamp === 'number'\n ? a[1].timestamp\n : 0;\n const bTimestamp =\n b[1] &&\n typeof b[1] === 'object' &&\n 'timestamp' in b[1] &&\n typeof b[1].timestamp === 'number'\n ? b[1].timestamp\n : 0;\n return bTimestamp - aTimestamp;\n })\n .slice(0, 10) // Show last 10 entries\n .map(([key, value]: [string, unknown]) => {\n const valueObj =\n value && typeof value === 'object' ? (value as WorkingMemoryEntry) : null;\n if (valueObj?.actionName && valueObj.result) {\n return `**${valueObj.actionName}**: ${valueObj.result.text || JSON.stringify(valueObj.result.data)}`;\n }\n return `**${key}**: ${JSON.stringify(value)}`;\n })\n .join('\\n');\n\n memoryText = addHeader('# Working Memory', memoryEntries);\n }\n\n // Get recent action result memories from the database\n let recentActionMemories: Memory[] = [];\n try {\n // Get messages with type 'action_result' from the room\n const recentMessages = await runtime.getMemories({\n tableName: 'messages',\n roomId: message.roomId,\n count: 20,\n unique: false,\n });\n\n recentActionMemories = recentMessages.filter(\n (msg) => msg.content?.type === 'action_result' && msg.metadata?.type === 'action_result'\n );\n } catch (error) {\n logger?.error(\n {\n src: 'plugin:bootstrap:provider:action_state',\n agentId: runtime.agentId,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Failed to retrieve action memories'\n );\n }\n\n // Format recent action memories\n let actionMemoriesText = '';\n if (recentActionMemories.length > 0) {\n // Group by runId using Map\n const groupedByRun = new Map<string, Memory[]>();\n\n for (const mem of recentActionMemories) {\n const runId: string = String(mem.content?.runId || 'unknown');\n if (!groupedByRun.has(runId)) {\n groupedByRun.set(runId, []);\n }\n const memories = groupedByRun.get(runId);\n if (memories) {\n memories.push(mem);\n }\n }\n\n const formattedMemories = Array.from(groupedByRun.entries())\n .map(([runId, memories]) => {\n const sortedMemories = memories.sort(\n (a: Memory, b: Memory) => (a.createdAt || 0) - (b.createdAt || 0)\n );\n\n const runText = sortedMemories\n .map((mem: Memory) => {\n const actionName = mem.content?.actionName || 'Unknown';\n const status = mem.content?.actionStatus || 'unknown';\n const planStep = mem.content?.planStep || '';\n const text = mem.content?.text || '';\n\n let memText = ` - ${actionName} (${status})`;\n if (planStep) {\n memText += ` [${planStep}]`;\n }\n if (text && text !== `Executed action: ${actionName}`) {\n memText += `: ${text}`;\n }\n\n return memText;\n })\n .join('\\n');\n\n const thought = sortedMemories[0]?.content?.planThought || '';\n return `**Run ${runId.slice(0, 8)}**${thought ? ` - ${thought}` : ''}\\n${runText}`;\n })\n .join('\\n\\n');\n\n actionMemoriesText = addHeader('# Recent Action History', formattedMemories);\n }\n\n // Combine all text sections\n const allText = [planText, resultsText, memoryText, actionMemoriesText]\n .filter(Boolean)\n .join('\\n\\n');\n\n return {\n data: {\n actionResults,\n actionPlan,\n workingMemory,\n recentActionMemories,\n },\n values: {\n hasActionResults: actionResults.length > 0,\n hasActionPlan: !!actionPlan,\n currentActionStep: actionPlan?.currentStep || 0,\n totalActionSteps: actionPlan?.totalSteps || 0,\n actionResults: resultsText,\n completedActions: actionResults.filter((r) => r.success).length,\n failedActions: actionResults.filter((r) => !r.success).length,\n },\n text: allText || 'No action state available',\n };\n },\n};\n",
|
|
28
|
+
"import type { IAgentRuntime, Memory, Provider } from '@elizaos/core';\nimport { addHeader, ChannelType } from '@elizaos/core';\n/**\n * Represents an anxiety provider that provides examples and guidance for an AI roleplaying as a character.\n * The anxiety provider offers suggestions on how to reduce verbosity and eagerness in responses based on the channel type.\n * Randomly selects and returns three anxiety examples for the AI to follow.\n *\n * @type {Provider}\n */\n/**\n * Function that provides anxiety-related guidance for the AI based on the channel type.\n * @param {IAgentRuntime} _runtime - The runtime environment for the AI agent\n * @param {Memory} message - The message containing information about the channel type\n * @returns {Object} - Object containing randomized anxiety examples, anxiety text, and formatted data\n */\nexport const anxietyProvider: Provider = {\n name: 'ANXIETY',\n description: 'Social directions for the AI to follow based on the channel type',\n get: async (_runtime: IAgentRuntime, message: Memory) => {\n const channelType = message.content.channelType;\n\n const groupAnxietyExamples = [\n \"As an AI, your responses tend to be too long and verbose, and you respond when you shouldn't. You also tend to repeat yourself. Please don't speak and use IGNORE instead of responding when you aren't sure what to do.\",\n \"You often try too hard to be helpful and end up giving unnecessary information. When in doubt, it's better to use IGNORE than to give a potentially unhelpful response.\",\n \"Your eagerness to help sometimes leads to overly complex answers. If you're not completely confident, please use IGNORE rather than risking confusion.\",\n \"AI assistants like you tend to be too talkative and agreeable. Don't feel obligated to respond to everything - using IGNORE is often better than an uncertain answer.\",\n \"You have a habit of providing excessive detail and context. Keep it brief and use IGNORE if you don't have a clear, direct response.\",\n 'Your responses often include unnecessary explanations and caveats. When uncertain, simply use IGNORE instead of a long-winded, hedged response.',\n \"As an AI, you seem compelled to always give an answer, even when unsure. It's better to use IGNORE than to provide potentially incorrect or rambling responses.\",\n \"You frequently over-explain simple concepts. If you can't be concise and confident in your response, please default to using IGNORE.\",\n 'Your helpful nature sometimes results in verbose, meandering responses. When in doubt, use IGNORE rather than attempting to cover every possibility.',\n \"Like many AI assistants, you try to be too comprehensive. Remember that IGNORE is a valid response when you can't be both brief and certain.\",\n \"You often provide more detail than necessary in an attempt to be thorough. If you can't give a clear, concise answer, please use IGNORE instead.\",\n \"CRITICAL: When someone just says 'ok', 'yes', 'good', 'right', 'yep', etc. - this is conversational closure. Do NOT respond with another acknowledgment. Use IGNORE to let the conversation end naturally.\",\n \"Watch out for ping-pong loops: if you and another agent are just exchanging brief acknowledgments back and forth ('Good.' 'Yep.' 'Right.' 'Sure.'), STOP immediately. Use IGNORE.\",\n \"If the last few messages are just short confirmations going back and forth, the conversation is OVER. Do not extend it with another acknowledgment. Use IGNORE.\",\n ];\n\n const directAnxietyExamples = [\n 'Be engaging and helpful in direct conversations, but keep responses focused and relevant.',\n 'In DMs, you should be responsive and friendly while maintaining professionalism and clarity.',\n 'While being helpful in direct messages, avoid unnecessary tangents or over-explaining.',\n 'Engage naturally in DMs but stay on topic - no need to explain every detail.',\n 'Be conversational and helpful in direct chats while keeping responses concise.',\n 'In private conversations, focus on being helpful while avoiding excessive verbosity.',\n 'Maintain a friendly and responsive tone in DMs without overcomplicating your answers.',\n 'Direct messages should be engaging but focused - avoid unnecessary elaboration.',\n 'Be natural and helpful in DMs while keeping your responses clear and to-the-point.',\n 'Respond thoughtfully in direct conversations without falling into over-explanation.',\n ];\n\n const dmAnxietyExamples = [\n 'Engage naturally in DMs while keeping responses focused and relevant.',\n 'Be responsive to questions and maintain conversation flow in direct messages.',\n 'Show personality and engagement in DMs while staying professional and clear.',\n 'In private chats, be helpful and friendly while avoiding excessive detail.',\n 'Maintain natural conversation in DMs without over-explaining or being too verbose.',\n 'Be engaging but concise in direct messages - focus on clear communication.',\n 'Keep the conversation flowing in DMs while staying on topic and relevant.',\n 'Show personality and warmth in direct chats while maintaining clarity.',\n 'Be responsive and helpful in DMs without falling into unnecessary elaboration.',\n 'Engage meaningfully in private conversations while keeping responses focused.',\n ];\n\n const voiceAnxietyExamples = [\n 'Keep voice responses extremely brief and to the point.',\n 'In voice channels, use short, clear statements only.',\n 'Voice responses should be concise and immediately relevant.',\n 'Speak in short, clear sentences in voice conversations.',\n 'Keep voice channel communication brief and focused.',\n 'Use minimal words to convey your message in voice chats.',\n 'Be direct and concise when speaking in voice channels.',\n 'Voice responses should be short and immediately actionable.',\n 'Minimize verbosity in voice communications.',\n 'Keep voice channel interactions brief and purposeful.',\n ];\n\n let anxietyExamples: string[] = [];\n\n if (channelType === ChannelType.GROUP) {\n anxietyExamples = groupAnxietyExamples;\n } else if (channelType === ChannelType.DM) {\n anxietyExamples = dmAnxietyExamples;\n } else if (channelType === ChannelType.VOICE_GROUP || channelType === ChannelType.VOICE_DM) {\n anxietyExamples = voiceAnxietyExamples;\n } else {\n anxietyExamples = directAnxietyExamples;\n }\n\n // randomize the examples and choose 3\n const randomAnxietyExamples = anxietyExamples.sort(() => Math.random() - 0.5).slice(0, 3);\n const anxietyText = randomAnxietyExamples.join('\\n');\n\n const anxietyHeader =\n '# You are roleplaying as a character, but as an AI model, you are too verbose and eager.';\n\n const anxiety = addHeader(anxietyHeader, anxietyText);\n\n return {\n data: {\n anxiety: randomAnxietyExamples,\n },\n values: {\n anxiety,\n },\n text: anxiety,\n };\n },\n};\n",
|
|
29
|
+
"import type { IAgentRuntime, Media, Memory, Provider } from '@elizaos/core';\nimport { addHeader } from '@elizaos/core';\n\n/**\n * Provides a list of attachments in the current conversation.\n * @param {IAgentRuntime} runtime - The agent runtime object.\n * @param {Memory} message - The message memory object.\n * @returns {Object} The attachments values, data, and text.\n */\n/**\n * Provides a list of attachments sent during the current conversation, including names, descriptions, and summaries.\n * @type {Provider}\n * @property {string} name - The name of the provider (ATTACHMENTS).\n * @property {string} description - Description of the provider.\n * @property {boolean} dynamic - Indicates if the provider is dynamic.\n * @property {function} get - Asynchronous function that retrieves attachments based on the runtime and message provided.\n * @param {IAgentRuntime} runtime - The runtime environment for the agent.\n * @param {Memory} message - The message object containing content and attachments.\n * @returns {Object} An object containing values, data, and text about the attachments retrieved.\n */\nexport const attachmentsProvider: Provider = {\n name: 'ATTACHMENTS',\n description:\n 'List of attachments sent during the current conversation, including names, descriptions, and summaries',\n dynamic: true,\n get: async (runtime: IAgentRuntime, message: Memory) => {\n // Start with any attachments in the current message\n const currentMessageAttachments = message.content.attachments || [];\n let allAttachments = [...currentMessageAttachments];\n\n const { roomId } = message;\n const conversationLength = runtime.getConversationLength();\n\n const recentMessagesData = await runtime.getMemories({\n roomId,\n count: conversationLength,\n unique: false,\n tableName: 'messages',\n });\n\n // Process attachments from recent messages\n if (recentMessagesData && Array.isArray(recentMessagesData)) {\n const lastMessageWithAttachment = recentMessagesData.find(\n (msg) => msg.content.attachments && msg.content.attachments.length > 0\n );\n\n if (lastMessageWithAttachment) {\n const lastMessageTime = lastMessageWithAttachment?.createdAt ?? Date.now();\n const oneHourBeforeLastMessage = lastMessageTime - 60 * 60 * 1000; // 1 hour before last message\n\n // Create a map of current message attachments by ID for quick lookup\n const currentAttachmentsMap = new Map(\n currentMessageAttachments.map((att) => [att.id, att])\n );\n\n // Process recent messages and merge attachments\n const recentAttachments = recentMessagesData.reverse().flatMap((msg) => {\n const msgTime = msg.createdAt ?? Date.now();\n const isWithinTime = msgTime >= oneHourBeforeLastMessage;\n const attachments = msg.content.attachments || [];\n\n return attachments\n .map((attachment) => {\n // If this attachment ID exists in current message with rich data, skip it\n if (currentAttachmentsMap.has(attachment.id)) {\n return null;\n }\n\n // For older attachments, hide the text\n if (!isWithinTime) {\n return { ...attachment, text: '[Hidden]' };\n }\n\n return attachment;\n })\n .filter((att): att is Media => att !== null); // Type guard to ensure Media[]\n });\n\n // Combine current message attachments (with rich data) and recent attachments\n allAttachments = [...currentMessageAttachments, ...recentAttachments];\n }\n }\n\n // Format attachments for display\n const formattedAttachments = allAttachments\n .map((attachment) => {\n // For data URLs, show a summary instead of the massive base64 blob\n let displayUrl = attachment.url;\n if (attachment.url?.startsWith('data:')) {\n const mimeMatch = attachment.url.match(/^data:([^;,]+)/);\n const mimeType = mimeMatch ? mimeMatch[1] : 'unknown';\n const sizeEstimate = Math.round((attachment.url.length * 3) / 4 / 1024); // Rough KB estimate\n displayUrl = `[Embedded ${mimeType} ~${sizeEstimate}KB]`;\n }\n return `ID: ${attachment.id}\n Name: ${attachment.title}\n URL: ${displayUrl}\n Type: ${attachment.source || attachment.contentType}\n Description: ${attachment.description}\n Text: ${attachment.text}\n `;\n })\n .join('\\n');\n\n // Create formatted text with header\n const text =\n formattedAttachments && formattedAttachments.length > 0\n ? addHeader('# Attachments', formattedAttachments)\n : '';\n\n const values = {\n attachments: text,\n };\n const data = {\n attachments: allAttachments,\n };\n\n return {\n values,\n data,\n text,\n };\n },\n};\n",
|
|
30
30
|
"import type { IAgentRuntime, Memory, Provider, ProviderResult } from '@elizaos/core';\n\n/**\n * Provider that collects capability descriptions from all registered services\n */\n/**\n * Provides capabilities information for the agent.\n *\n * @param {IAgentRuntime} runtime - The agent runtime instance.\n * @param {Memory} _message - The memory message object.\n * @returns {Promise<ProviderResult>} The provider result object containing capabilities information.\n */\nexport const capabilitiesProvider: Provider = {\n name: 'CAPABILITIES',\n get: async (runtime: IAgentRuntime, _message: Memory): Promise<ProviderResult> => {\n try {\n // Get all registered services\n const services = runtime.getAllServices();\n\n if (!services || services.size === 0) {\n return {\n text: 'No services are currently registered.',\n };\n }\n\n // Extract capability descriptions from all services\n const capabilities: string[] = [];\n\n for (const [serviceType, serviceArray] of services) {\n // Handle the fact that services are stored as arrays\n if (serviceArray && serviceArray.length > 0) {\n // Use the first service in the array for the capability description\n const service = serviceArray[0];\n if (service.capabilityDescription) {\n capabilities.push(\n `${serviceType} - ${service.capabilityDescription.replace('{{agentName}}', runtime.character.name)}`\n );\n }\n }\n }\n\n if (capabilities.length === 0) {\n return {\n text: 'No capability descriptions found in the registered services.',\n };\n }\n\n // Format the capabilities into a readable list\n const formattedCapabilities = capabilities.join('\\n');\n\n return {\n data: {\n capabilities,\n },\n text: `# ${runtime.character.name}'s Capabilities\\n\\n${formattedCapabilities}`,\n };\n } catch (error) {\n runtime.logger.error(\n {\n src: 'plugin:bootstrap:provider:capabilities',\n agentId: runtime.agentId,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Error in capabilities provider'\n );\n return {\n text: 'Error retrieving capabilities from services.',\n };\n }\n },\n};\n\nexport default capabilitiesProvider;\n",
|
|
31
|
-
"import type { IAgentRuntime, Memory, Provider, State } from '@elizaos/core';\nimport { addHeader, ChannelType } from '@elizaos/core';\n\n/**\n * Character provider object.\n * @typedef {Object} Provider\n * @property {string} name - The name of the provider (\"CHARACTER\").\n * @property {string} description - Description of the character information.\n * @property {Function} get - Async function to get character information.\n */\n/**\n * Provides character information.\n * @param {IAgentRuntime} runtime - The agent runtime.\n * @param {Memory} message - The message memory.\n * @param {State} state - The state of the character.\n * @returns {Object} Object containing values, data, and text sections.\n */\nexport const characterProvider: Provider = {\n name: 'CHARACTER',\n description: 'Character information',\n get: async (runtime: IAgentRuntime, message: Memory,
|
|
32
|
-
"import type { IAgentRuntime, Memory, Provider, ProviderResult, State } from '@elizaos/core';\n\n// Define an interface for option objects\n/**\n * Interface for an object representing an option.\n * @typedef {Object} OptionObject\n * @property {string} name - The name of the option.\n * @property {string} [description] - The description of the option (optional).\n */\n/**\n * Interface for an object representing an option.\n * @typedef {Object} OptionObject\n * @property {string} name - The name of the option.\n * @property {string} [description] - The description of the option (optional).\n */\ninterface OptionObject {\n name: string;\n description?: string;\n}\n\n/**\n * Choice provider function that retrieves all pending tasks with options for a specific room\n *\n * @param {IAgentRuntime} runtime - The runtime object for the agent\n * @param {Memory} message - The message memory object\n * @returns {Promise<ProviderResult>} A promise that resolves with the provider result containing the pending tasks with options\n */\nexport const choiceProvider: Provider = {\n name: 'CHOICE',\n get: async (runtime: IAgentRuntime, message: Memory, _state: State): Promise<ProviderResult> => {\n try {\n // Get all pending tasks for this room with options\n const pendingTasks = await runtime.getTasks({\n roomId: message.roomId,\n tags: ['AWAITING_CHOICE'],\n });\n\n if (!pendingTasks || pendingTasks.length === 0) {\n return {\n data: {\n tasks: [],\n },\n values: {\n tasks: 'No pending choices for the moment.',\n },\n text: 'No pending choices for the moment.',\n };\n }\n\n // Filter tasks that have options\n const tasksWithOptions = pendingTasks.filter((task) => task.metadata?.options);\n\n if (tasksWithOptions.length === 0) {\n return {\n data: {\n tasks: [],\n },\n values: {\n tasks: 'No pending choices for the moment.',\n },\n text: 'No pending choices for the moment.',\n };\n }\n // Format tasks into a readable list\n let output = '# Pending Tasks\\n\\n';\n output += 'The following tasks are awaiting your selection:\\n\\n';\n\n tasksWithOptions.forEach((task, index) => {\n output += `${index + 1}. **${task.name}**\\n`;\n if (task.description) {\n output += ` ${task.description}\\n`;\n }\n\n // List available options\n if (task.metadata?.options) {\n output += ' Options:\\n';\n\n // Handle both string[] and OptionObject[] formats\n const options = task.metadata.options as string[] | OptionObject[];\n\n options.forEach((option) => {\n if (typeof option === 'string') {\n // Handle string option\n const description =\n task.metadata?.options?.find((o) => o.name === option)?.description || '';\n output += ` - \\`${option}\\` ${description ? `- ${description}` : ''}\\n`;\n } else {\n // Handle option object\n output += ` - \\`${option.name}\\` ${option.description ? `- ${option.description}` : ''}\\n`;\n }\n });\n }\n output += '\\n';\n });\n\n output += \"To select an option, reply with the option name (e.g., 'post' or 'cancel').\\n\";\n\n return {\n data: {\n tasks: tasksWithOptions,\n },\n values: {\n tasks: output,\n },\n text: output,\n };\n } catch (error) {\n runtime.logger.error(\n {\n src: 'plugin:bootstrap:provider:choice',\n agentId: runtime.agentId,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Error in options provider'\n );\n return {\n data: {\n tasks: [],\n },\n values: {\n tasks: 'There was an error retrieving pending tasks with options.',\n },\n text: 'There was an error retrieving pending tasks with options.',\n };\n }\n },\n};\n\nexport default choiceProvider;\n",
|
|
33
|
-
"import type {
|
|
34
|
-
"import type {
|
|
31
|
+
"import type { IAgentRuntime, Memory, Provider, State } from '@elizaos/core';\nimport { addHeader, ChannelType } from '@elizaos/core';\nimport { getCachedRoom } from './shared-cache';\n\n/**\n * Character provider object.\n * @typedef {Object} Provider\n * @property {string} name - The name of the provider (\"CHARACTER\").\n * @property {string} description - Description of the character information.\n * @property {Function} get - Async function to get character information.\n */\n/**\n * Provides character information.\n * @param {IAgentRuntime} runtime - The agent runtime.\n * @param {Memory} message - The message memory.\n * @param {State} state - The state of the character.\n * @returns {Object} Object containing values, data, and text sections.\n */\nexport const characterProvider: Provider = {\n name: 'CHARACTER',\n description: 'Character information',\n get: async (runtime: IAgentRuntime, message: Memory, _state: State) => {\n const character = runtime.character;\n\n // Use shared cache for room lookup - this ensures all providers share the same\n // in-flight promise and cached result, preventing redundant DB calls\n const room = message.roomId ? await getCachedRoom(runtime, message.roomId) : null;\n const isPostFormat = room?.type === ChannelType.FEED || room?.type === ChannelType.THREAD;\n\n // Character name\n const agentName = character.name;\n\n // Handle bio (string or random selection from array)\n const bioText = Array.isArray(character.bio)\n ? character.bio\n .sort(() => 0.5 - Math.random())\n .slice(0, 10)\n .join(' ')\n : character.bio || '';\n\n const bio = addHeader(`# About ${character.name}`, bioText);\n\n // System prompt\n const system = character.system ?? '';\n\n // Select random topic if available\n const topicString =\n character.topics && character.topics.length > 0\n ? character.topics[Math.floor(Math.random() * character.topics.length)]\n : null;\n\n // postCreationTemplate in core prompts.ts\n // Write a post that is {{adjective}} about {{topic}} (without mentioning {{topic}} directly), from the perspective of {{agentName}}. Do not add commentary or acknowledge this request, just write the post.\n // Write a post that is {{Spartan is dirty}} about {{Spartan is currently}}\n const topic = topicString || '';\n\n // Format topics list (reuse shuffled array to avoid re-shuffling)\n let topics = '';\n if (character.topics && character.topics.length > 0) {\n const filteredTopics = character.topics.filter((t) => t !== topicString);\n // Shuffle once, then slice\n for (let i = filteredTopics.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n [filteredTopics[i], filteredTopics[j]] = [filteredTopics[j], filteredTopics[i]];\n }\n const selectedTopics = filteredTopics.slice(0, 5);\n if (selectedTopics.length > 0) {\n const topicsList = selectedTopics\n .map((t, index, array) => {\n if (index === array.length - 2) return `${t} and `;\n if (index === array.length - 1) return t;\n return `${t}, `;\n })\n .join('');\n topics = `${character.name} is also interested in ${topicsList}`;\n }\n }\n\n // Select random adjective if available\n const adjectiveString =\n character.adjectives && character.adjectives.length > 0\n ? character.adjectives[Math.floor(Math.random() * character.adjectives.length)]\n : '';\n\n const adjective = adjectiveString || '';\n\n // Only format the examples that will be used (optimization: avoids formatting both post AND message examples)\n let characterPostExamples = '';\n let characterMessageExamples = '';\n\n if (isPostFormat) {\n // Format post examples only when needed\n if (character.postExamples && character.postExamples.length > 0) {\n const shuffledPosts = [...character.postExamples];\n for (let i = shuffledPosts.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n [shuffledPosts[i], shuffledPosts[j]] = [shuffledPosts[j], shuffledPosts[i]];\n }\n const formattedPosts = shuffledPosts.slice(0, 50).join('\\n');\n if (formattedPosts.replaceAll('\\n', '').length > 0) {\n characterPostExamples = addHeader(`# Example Posts for ${character.name}`, formattedPosts);\n }\n }\n } else {\n // Format message examples only when needed\n if (character.messageExamples && character.messageExamples.length > 0) {\n const shuffledMessages = [...character.messageExamples];\n for (let i = shuffledMessages.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n [shuffledMessages[i], shuffledMessages[j]] = [shuffledMessages[j], shuffledMessages[i]];\n }\n const formattedMessages = shuffledMessages\n .slice(0, 5)\n .map((example) => {\n const exampleNames = Array.from({ length: 5 }, () =>\n Math.random().toString(36).substring(2, 8)\n );\n\n return example\n .map((msg) => {\n let messageString = `${msg.name}: ${msg.content.text}${msg.content.action || msg.content.actions\n ? ` (actions: ${msg.content.action || msg.content.actions?.join(', ')})`\n : ''\n }`;\n exampleNames.forEach((name, index) => {\n const placeholder = `{{name${index + 1}}}`;\n messageString = messageString.replaceAll(placeholder, name);\n });\n return messageString;\n })\n .join('\\n');\n })\n .join('\\n\\n');\n\n if (formattedMessages.replaceAll('\\n', '').length > 0) {\n characterMessageExamples = addHeader(\n `# Example Conversations for ${character.name}`,\n formattedMessages\n );\n }\n }\n }\n\n // Only format the directions that will be used (optimization: avoids formatting both post AND message directions)\n let postDirections = '';\n let messageDirections = '';\n\n if (isPostFormat) {\n const hasPostStyle =\n (character?.style?.all?.length && character.style.all.length > 0) ||\n (character?.style?.post?.length && character.style.post.length > 0);\n if (hasPostStyle) {\n const all = character?.style?.all || [];\n const post = character?.style?.post || [];\n postDirections = addHeader(`# Post Directions for ${character.name}`, [...all, ...post].join('\\n'));\n }\n } else {\n const hasChatStyle =\n (character?.style?.all?.length && character.style.all.length > 0) ||\n (character?.style?.chat?.length && character.style.chat.length > 0);\n if (hasChatStyle) {\n const all = character?.style?.all || [];\n const chat = character?.style?.chat || [];\n messageDirections = addHeader(`# Message Directions for ${character.name}`, [...all, ...chat].join('\\n'));\n }\n }\n\n const directions = isPostFormat ? postDirections : messageDirections;\n const examples = isPostFormat ? characterPostExamples : characterMessageExamples;\n\n const values = {\n agentName,\n bio,\n system,\n topic,\n topics,\n adjective,\n messageDirections,\n postDirections,\n directions,\n examples,\n characterPostExamples,\n characterMessageExamples,\n };\n\n const data = {\n bio,\n adjective,\n topic,\n topics,\n character,\n directions,\n examples,\n system,\n };\n\n const topicSentence = topicString\n ? `${character.name} is currently interested in ${topicString}`\n : '';\n const adjectiveSentence = adjectiveString ? `${character.name} is ${adjectiveString}` : '';\n // Combine all text sections\n const text = [bio, adjectiveSentence, topicSentence, topics, directions, examples, system]\n .filter(Boolean)\n .join('\\n\\n');\n\n return {\n values,\n data,\n text,\n };\n },\n};\n",
|
|
32
|
+
"/**\n * Shared caching module for provider room/world lookups.\n *\n * This module provides a single, process-wide cache for room and world data\n * to prevent redundant DB calls when multiple providers run in parallel.\n *\n * TWO-LEVEL CACHING STRATEGY:\n * 1. Agent-specific cache (by roomId/worldId) - for within-agent provider deduplication\n * 2. External ID cache (by source:channelId, source:guildId) - for cross-agent deduplication\n *\n * Since roomIds/worldIds are agent-specific (hash of externalId:agentId), we use\n * Discord's raw IDs (guildId, channelId) as secondary cache keys that ALL agents share.\n */\nimport type { IAgentRuntime, Room, UUID, World, WorldSettings } from '@elizaos/core';\nimport { createUniqueUuid, getSalt, unsaltWorldSettings } from '@elizaos/core';\n\n// Cache TTL in milliseconds (30 seconds - short enough to pick up changes, long enough to help)\nconst CACHE_TTL_MS = 30_000;\n// Timeout for DB operations to prevent 80+ second waits\nconst DB_TIMEOUT_MS = 5_000;\n// Longer cache TTL for negative results (e.g., worlds without serverId)\nconst NEGATIVE_CACHE_TTL_MS = 60_000;\n\ninterface CacheEntry<T> {\n data: T;\n timestamp: number;\n isNegative?: boolean;\n}\n\n// ============================================================================\n// ROOM CACHE - Agent-specific (by roomId)\n// ============================================================================\n\nconst roomCache = new Map<string, CacheEntry<Room | null>>();\nconst roomInFlight = new Map<string, Promise<Room | null>>();\n\n// ============================================================================\n// EXTERNAL ROOM CACHE - Cross-agent (by source:channelId)\n// Stores room data that can be shared across agents\n// ============================================================================\n\ninterface ExternalRoomData {\n name?: string;\n source: string;\n type: import('@elizaos/core').ChannelType;\n channelId?: string;\n messageServerId?: string;\n metadata?: import('@elizaos/core').Metadata;\n}\n\nconst externalRoomCache = new Map<string, CacheEntry<ExternalRoomData | null>>();\n\n// ============================================================================\n// WORLD CACHE - Agent-specific (by worldId)\n// ============================================================================\n\nconst worldCache = new Map<string, CacheEntry<World | null>>();\nconst worldInFlight = new Map<string, Promise<World | null>>();\n\n// ============================================================================\n// EXTERNAL WORLD CACHE - Cross-agent (by source:guildId/serverId)\n// Stores world metadata that can be shared across agents\n// ============================================================================\n\ninterface ExternalWorldData {\n name?: string;\n messageServerId?: string;\n metadata?: import('@elizaos/core').Metadata;\n // Settings are stored by raw serverId, so they're shared across agents\n settings?: WorldSettings;\n}\n\nconst externalWorldCache = new Map<string, CacheEntry<ExternalWorldData | null>>();\nconst externalWorldInFlight = new Map<string, Promise<ExternalWorldData | null>>();\n\n// Cache for servers/guilds we've determined have no settings (saves future lookups)\n// Keyed by raw external ID (e.g., Discord guildId) - shared across ALL agents\nconst noServerIdCache = new Map<string, CacheEntry<boolean>>();\nconst noSettingsCache = new Map<string, CacheEntry<boolean>>();\n\n// ============================================================================\n// HELPER FUNCTIONS\n// ============================================================================\n\n/**\n * Promise with timeout - prevents indefinite waits on slow DB operations.\n */\nexport async function withTimeout<T>(\n promise: Promise<T>,\n ms: number,\n fallback: T\n): Promise<T> {\n let timeoutId: ReturnType<typeof setTimeout>;\n const timeoutPromise = new Promise<T>((resolve) => {\n timeoutId = setTimeout(() => resolve(fallback), ms);\n });\n try {\n return await Promise.race([promise, timeoutPromise]);\n } finally {\n clearTimeout(timeoutId!);\n }\n}\n\n/**\n * Clean up old entries from a cache map.\n */\nfunction cleanupCache<T>(\n cache: Map<string, CacheEntry<T>>,\n maxSize: number,\n ttl: number\n): void {\n if (cache.size <= maxSize) return;\n\n const now = Date.now();\n for (const [key, entry] of cache) {\n if (now - entry.timestamp > ttl * 2) {\n cache.delete(key);\n }\n }\n}\n\n// ============================================================================\n// ROOM CACHE FUNCTIONS\n// ============================================================================\n\n/**\n * Build external cache key from room data.\n * Uses source:channelId which is shared across all agents.\n */\nfunction getExternalRoomKey(room: Room | ExternalRoomData): string | null {\n if (!room.source || !room.channelId) return null;\n return `${room.source}:${room.channelId}`;\n}\n\n/**\n * Store room data in the external (cross-agent) cache.\n */\nfunction cacheRoomByExternalId(room: Room): void {\n const key = getExternalRoomKey(room);\n if (!key) return;\n\n const externalData: ExternalRoomData = {\n name: room.name,\n source: room.source,\n type: room.type,\n channelId: room.channelId,\n messageServerId: room.messageServerId ?? room.serverId,\n metadata: room.metadata,\n };\n externalRoomCache.set(key, { data: externalData, timestamp: Date.now() });\n}\n\n/**\n * Get cached room or fetch from DB with promise coalescing.\n *\n * Two-level caching:\n * 1. First checks agent-specific cache (by roomId)\n * 2. Then checks external cache (by source:channelId) for cross-agent hits\n *\n * @param runtime - The agent runtime\n * @param roomId - The room UUID to fetch\n * @returns The room data or null if not found\n */\nexport async function getCachedRoom(\n runtime: IAgentRuntime,\n roomId: UUID\n): Promise<Room | null> {\n const cacheKey = roomId;\n const cached = roomCache.get(cacheKey);\n const now = Date.now();\n\n // Return cached data if valid\n if (cached && now - cached.timestamp < CACHE_TTL_MS) {\n return cached.data;\n }\n\n // Check if ANY agent/provider already has an in-flight request for this room\n const inFlight = roomInFlight.get(cacheKey);\n if (inFlight) {\n return inFlight;\n }\n\n // Create new promise and store it BEFORE awaiting\n const fetchPromise = (async () => {\n try {\n const room = await withTimeout(runtime.getRoom(roomId), DB_TIMEOUT_MS, null);\n roomCache.set(cacheKey, { data: room, timestamp: Date.now() });\n\n // Also cache by external ID for cross-agent benefit\n if (room) {\n cacheRoomByExternalId(room);\n }\n\n return room;\n } finally {\n roomInFlight.delete(cacheKey);\n }\n })();\n\n roomInFlight.set(cacheKey, fetchPromise);\n cleanupCache(roomCache, 500, CACHE_TTL_MS);\n\n return fetchPromise;\n}\n\n/**\n * Get cached room data by external ID (source:channelId).\n * This is useful for cross-agent lookups where you have the raw Discord IDs.\n *\n * @param source - The source (e.g., \"discord\")\n * @param channelId - The raw channel ID from Discord\n * @returns Cached external room data or null\n */\nexport function getCachedRoomByExternalId(\n source: string,\n channelId: string\n): ExternalRoomData | null {\n const key = `${source}:${channelId}`;\n const cached = externalRoomCache.get(key);\n const now = Date.now();\n\n if (cached && now - cached.timestamp < CACHE_TTL_MS) {\n return cached.data;\n }\n return null;\n}\n\n/**\n * Invalidate the room cache for a specific room (low-level).\n * For most use cases, prefer the combined invalidateRoomCache wrapper below.\n */\nfunction invalidateRoomCacheInternal(roomId: UUID): void {\n roomCache.delete(roomId);\n}\n\n/**\n * Invalidate cache for a room (combined wrapper).\n * Clears both room and entities cache for proper cache coherence.\n * This is the recommended function to use when entities change.\n */\nexport function invalidateRoomCache(agentId: UUID, roomId: UUID): void {\n invalidateRoomCacheInternal(roomId);\n invalidateEntitiesCache(agentId, roomId);\n}\n\n/**\n * Invalidate room cache by external ID.\n */\nexport function invalidateRoomCacheByExternalId(source: string, channelId: string): void {\n externalRoomCache.delete(`${source}:${channelId}`);\n}\n\n// ============================================================================\n// WORLD CACHE FUNCTIONS\n// ============================================================================\n\n/**\n * Build external cache key from world data.\n * Uses the raw messageServerId (Discord guildId) which is shared across all agents.\n */\nfunction getExternalWorldKey(world: World | { messageServerId?: string }): string | null {\n const serverId = world.messageServerId;\n if (!serverId) return null;\n return `guild:${serverId}`;\n}\n\n/**\n * Store world data in the external (cross-agent) cache.\n * Most importantly, caches the settings which are keyed by raw serverId.\n */\nfunction cacheWorldByExternalId(world: World): void {\n const key = getExternalWorldKey(world);\n if (!key) return;\n\n const externalData: ExternalWorldData = {\n name: world.name,\n messageServerId: world.messageServerId,\n metadata: world.metadata,\n };\n\n // Extract and cache settings if present\n if (world.metadata?.settings) {\n try {\n const salt = getSalt();\n externalData.settings = unsaltWorldSettings(\n world.metadata.settings as WorldSettings,\n salt\n );\n } catch {\n // Settings decryption failed, skip caching settings\n }\n }\n\n externalWorldCache.set(key, { data: externalData, timestamp: Date.now() });\n}\n\n/**\n * Get cached world or fetch from DB with promise coalescing and timeout.\n *\n * @param runtime - The agent runtime\n * @param worldId - The world UUID to fetch\n * @returns The world data or null if not found\n */\nexport async function getCachedWorld(\n runtime: IAgentRuntime,\n worldId: UUID\n): Promise<World | null> {\n const cacheKey = worldId;\n const cached = worldCache.get(cacheKey);\n const now = Date.now();\n\n if (cached && now - cached.timestamp < CACHE_TTL_MS) {\n return cached.data;\n }\n\n // Check if ANY agent already has an in-flight request for this world\n const inFlight = worldInFlight.get(cacheKey);\n if (inFlight) {\n return inFlight;\n }\n\n // Create new promise and store it BEFORE awaiting\n const fetchPromise = (async () => {\n try {\n const world = await withTimeout(runtime.getWorld(worldId), DB_TIMEOUT_MS, null);\n worldCache.set(cacheKey, { data: world, timestamp: Date.now() });\n\n // Also cache by external ID (guildId) for cross-agent benefit\n if (world) {\n cacheWorldByExternalId(world);\n }\n\n return world;\n } finally {\n worldInFlight.delete(cacheKey);\n }\n })();\n\n worldInFlight.set(cacheKey, fetchPromise);\n cleanupCache(worldCache, 200, CACHE_TTL_MS);\n\n return fetchPromise;\n}\n\n/**\n * Get cached world settings by raw server/guild ID (cross-agent).\n * This is the key optimization - settings are stored by raw serverId,\n * so if Agent A fetches settings for guild X, Agent B can reuse them.\n *\n * @param serverId - The raw server/guild ID (e.g., Discord guildId)\n * @returns Cached settings or null\n */\nexport function getCachedSettingsByServerId(serverId: string): WorldSettings | null {\n const key = `guild:${serverId}`;\n const cached = externalWorldCache.get(key);\n const now = Date.now();\n\n if (cached && now - cached.timestamp < CACHE_TTL_MS && cached.data?.settings) {\n return cached.data.settings;\n }\n return null;\n}\n\n/**\n * Check if a server/guild is known to have no settings (cross-agent negative cache).\n * Uses raw serverId so ALL agents share this knowledge.\n */\nexport function hasNoSettings(serverId: string): boolean {\n const cached = noSettingsCache.get(serverId);\n const now = Date.now();\n if (cached && now - cached.timestamp < NEGATIVE_CACHE_TTL_MS) {\n return cached.data;\n }\n return false;\n}\n\n/**\n * Mark a server/guild as having no settings.\n * Shared across all agents.\n */\nexport function markNoSettings(serverId: string): void {\n noSettingsCache.set(serverId, { data: true, timestamp: Date.now() });\n}\n\n/**\n * Invalidate the world cache for a specific world.\n */\nexport function invalidateWorldCache(worldId: UUID): void {\n worldCache.delete(worldId);\n noServerIdCache.delete(worldId);\n}\n\n/**\n * Invalidate world cache by raw server/guild ID.\n */\nexport function invalidateWorldCacheByServerId(serverId: string): void {\n externalWorldCache.delete(`guild:${serverId}`);\n noSettingsCache.delete(serverId);\n}\n\n// ============================================================================\n// NO-SERVER-ID CACHE (negative caching for worlds without messageServerId)\n// Keyed by agent-specific worldId (since we need to know the worldId to skip)\n// ============================================================================\n\n/**\n * Check if a world is known to have no server ID.\n */\nexport function hasNoServerId(worldId: UUID): boolean {\n const cached = noServerIdCache.get(worldId);\n const now = Date.now();\n if (cached && now - cached.timestamp < NEGATIVE_CACHE_TTL_MS) {\n return cached.data;\n }\n return false;\n}\n\n/**\n * Mark a world as having no server ID.\n */\nexport function markNoServerId(worldId: UUID): void {\n noServerIdCache.set(worldId, { data: true, timestamp: Date.now() });\n}\n\n// ============================================================================\n// ENTITY CACHE FUNCTIONS\n// ============================================================================\n\nconst entitiesCache = new Map<string, CacheEntry<import('@elizaos/core').Entity[]>>();\nconst entitiesInFlight = new Map<string, Promise<import('@elizaos/core').Entity[]>>();\n\n/**\n * Get cached entities for a room or fetch from DB with promise coalescing.\n *\n * Unlike rooms/worlds, entities ARE agent-specific (different agents may see\n * different entity metadata), so we include agentId in the cache key.\n *\n * @param runtime - The agent runtime\n * @param roomId - The room UUID to fetch entities for\n * @returns Array of entities in the room\n */\nexport async function getCachedEntitiesForRoom(\n runtime: IAgentRuntime,\n roomId: UUID\n): Promise<import('@elizaos/core').Entity[]> {\n // Keep agentId for entities - different agents may see different entity metadata\n const cacheKey = `${runtime.agentId}:${roomId}`;\n const cached = entitiesCache.get(cacheKey);\n const now = Date.now();\n\n if (cached && now - cached.timestamp < CACHE_TTL_MS) {\n return cached.data;\n }\n\n // Check if there's already an in-flight request for this key\n const inFlight = entitiesInFlight.get(cacheKey);\n if (inFlight) {\n return inFlight;\n }\n\n // Create new promise and store it BEFORE awaiting\n const fetchPromise = (async () => {\n try {\n const entities = await withTimeout(\n runtime.getEntitiesForRoom(roomId, true),\n DB_TIMEOUT_MS,\n []\n );\n entitiesCache.set(cacheKey, { data: entities, timestamp: Date.now() });\n return entities;\n } finally {\n entitiesInFlight.delete(cacheKey);\n }\n })();\n\n entitiesInFlight.set(cacheKey, fetchPromise);\n cleanupCache(entitiesCache, 500, CACHE_TTL_MS);\n\n return fetchPromise;\n}\n\n/**\n * Invalidate entity cache for a specific agent and room.\n */\nexport function invalidateEntitiesCache(agentId: UUID, roomId: UUID): void {\n const cacheKey = `${agentId}:${roomId}`;\n entitiesCache.delete(cacheKey);\n}\n\n// ============================================================================\n// WORLD SETTINGS CACHE (avoids redundant getWorld calls in getWorldSettings)\n// ============================================================================\n\nconst worldSettingsCache = new Map<string, CacheEntry<WorldSettings | null>>();\nconst worldSettingsInFlight = new Map<string, Promise<WorldSettings | null>>();\n\n/**\n * Extract settings from an already-fetched world.\n *\n * This avoids the redundant `runtime.getWorld()` call that `getWorldSettings`\n * would make. Use this when you already have the world from `getCachedWorld`.\n *\n * Also caches the settings by raw serverId for cross-agent benefit.\n *\n * @param world - The already-fetched world object\n * @returns The world settings or null\n */\nexport function extractWorldSettings(world: World | null): WorldSettings | null {\n if (!world) {\n return null;\n }\n\n // First check if we have cross-agent cached settings for this server\n if (world.messageServerId) {\n const cachedSettings = getCachedSettingsByServerId(world.messageServerId);\n if (cachedSettings) {\n return cachedSettings;\n }\n }\n\n if (!world.metadata?.settings) {\n // Mark as having no settings so other agents skip\n if (world.messageServerId) {\n markNoSettings(world.messageServerId);\n }\n return null;\n }\n\n // Get settings from metadata and remove salt\n const saltedSettings = world.metadata.settings as WorldSettings;\n const salt = getSalt();\n const settings = unsaltWorldSettings(saltedSettings, salt);\n\n // Cache by raw serverId for cross-agent benefit\n if (world.messageServerId && settings) {\n const key = `guild:${world.messageServerId}`;\n const externalData: ExternalWorldData = {\n name: world.name,\n messageServerId: world.messageServerId,\n metadata: world.metadata,\n settings,\n };\n externalWorldCache.set(key, { data: externalData, timestamp: Date.now() });\n }\n\n return settings;\n}\n\n/**\n * Get cached world settings for a serverId with promise coalescing.\n *\n * This is more efficient than calling `getWorldSettings` from core because:\n * 1. It shares the world cache with other providers\n * 2. It has promise coalescing to prevent thundering herd\n *\n * @param runtime - The agent runtime\n * @param serverId - The server ID to get settings for\n * @returns The world settings or null\n */\nexport async function getCachedWorldSettings(\n runtime: IAgentRuntime,\n serverId: string\n): Promise<WorldSettings | null> {\n const cacheKey = `${runtime.agentId}:${serverId}`;\n const cached = worldSettingsCache.get(cacheKey);\n const now = Date.now();\n\n if (cached && now - cached.timestamp < CACHE_TTL_MS) {\n return cached.data;\n }\n\n const inFlight = worldSettingsInFlight.get(cacheKey);\n if (inFlight) {\n return inFlight;\n }\n\n const fetchPromise = (async () => {\n try {\n const worldId = createUniqueUuid(runtime, serverId);\n const world = await getCachedWorld(runtime, worldId);\n const settings = extractWorldSettings(world);\n worldSettingsCache.set(cacheKey, { data: settings, timestamp: Date.now() });\n return settings;\n } finally {\n worldSettingsInFlight.delete(cacheKey);\n }\n })();\n\n worldSettingsInFlight.set(cacheKey, fetchPromise);\n cleanupCache(worldSettingsCache, 200, CACHE_TTL_MS);\n\n return fetchPromise;\n}\n\n// ============================================================================\n// CACHE STATS (for debugging)\n// ============================================================================\n\nexport function getCacheStats(): {\n // Agent-specific caches\n rooms: number;\n roomsInFlight: number;\n worlds: number;\n worldsInFlight: number;\n entities: number;\n entitiesInFlight: number;\n worldSettings: number;\n worldSettingsInFlight: number;\n // Cross-agent caches (by external IDs)\n externalRooms: number;\n externalWorlds: number;\n externalWorldsInFlight: number;\n // Negative caches\n noServerIds: number;\n noSettings: number;\n} {\n return {\n // Agent-specific\n rooms: roomCache.size,\n roomsInFlight: roomInFlight.size,\n worlds: worldCache.size,\n worldsInFlight: worldInFlight.size,\n entities: entitiesCache.size,\n entitiesInFlight: entitiesInFlight.size,\n worldSettings: worldSettingsCache.size,\n worldSettingsInFlight: worldSettingsInFlight.size,\n // Cross-agent\n externalRooms: externalRoomCache.size,\n externalWorlds: externalWorldCache.size,\n externalWorldsInFlight: externalWorldInFlight.size,\n // Negative\n noServerIds: noServerIdCache.size,\n noSettings: noSettingsCache.size,\n };\n}\n\n",
|
|
33
|
+
"import type { IAgentRuntime, Memory, Provider, ProviderResult, State } from '@elizaos/core';\n\n// Define an interface for option objects\n/**\n * Interface for an object representing an option.\n * @typedef {Object} OptionObject\n * @property {string} name - The name of the option.\n * @property {string} [description] - The description of the option (optional).\n */\n/**\n * Interface for an object representing an option.\n * @typedef {Object} OptionObject\n * @property {string} name - The name of the option.\n * @property {string} [description] - The description of the option (optional).\n */\ninterface OptionObject {\n name: string;\n description?: string;\n}\n\n/**\n * Choice provider function that retrieves all pending tasks with options for a specific room\n *\n * @param {IAgentRuntime} runtime - The runtime object for the agent\n * @param {Memory} message - The message memory object\n * @returns {Promise<ProviderResult>} A promise that resolves with the provider result containing the pending tasks with options\n */\nexport const choiceProvider: Provider = {\n name: 'CHOICE',\n dynamic: true,\n get: async (runtime: IAgentRuntime, message: Memory, _state: State): Promise<ProviderResult> => {\n try {\n // Get all pending tasks for this room with options\n const pendingTasks = await runtime.getTasks({\n roomId: message.roomId,\n tags: ['AWAITING_CHOICE'],\n });\n\n if (!pendingTasks || pendingTasks.length === 0) {\n return {\n data: {\n tasks: [],\n },\n values: {\n tasks: 'No pending choices for the moment.',\n },\n text: 'No pending choices for the moment.',\n };\n }\n\n // Filter tasks that have options\n const tasksWithOptions = pendingTasks.filter((task) => task.metadata?.options);\n\n if (tasksWithOptions.length === 0) {\n return {\n data: {\n tasks: [],\n },\n values: {\n tasks: 'No pending choices for the moment.',\n },\n text: 'No pending choices for the moment.',\n };\n }\n // Format tasks into a readable list\n let output = '# Pending Tasks\\n\\n';\n output += 'The following tasks are awaiting your selection:\\n\\n';\n\n tasksWithOptions.forEach((task, index) => {\n output += `${index + 1}. **${task.name}**\\n`;\n if (task.description) {\n output += ` ${task.description}\\n`;\n }\n\n // List available options\n if (task.metadata?.options) {\n output += ' Options:\\n';\n\n // Handle both string[] and OptionObject[] formats\n const options = task.metadata.options as string[] | OptionObject[];\n\n options.forEach((option) => {\n if (typeof option === 'string') {\n // Handle string option\n const description =\n task.metadata?.options?.find((o) => o.name === option)?.description || '';\n output += ` - \\`${option}\\` ${description ? `- ${description}` : ''}\\n`;\n } else {\n // Handle option object\n output += ` - \\`${option.name}\\` ${option.description ? `- ${option.description}` : ''}\\n`;\n }\n });\n }\n output += '\\n';\n });\n\n output += \"To select an option, reply with the option name (e.g., 'post' or 'cancel').\\n\";\n\n return {\n data: {\n tasks: tasksWithOptions,\n },\n values: {\n tasks: output,\n },\n text: output,\n };\n } catch (error) {\n runtime.logger.error(\n {\n src: 'plugin:bootstrap:provider:choice',\n agentId: runtime.agentId,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Error in options provider'\n );\n return {\n data: {\n tasks: [],\n },\n values: {\n tasks: 'There was an error retrieving pending tasks with options.',\n },\n text: 'There was an error retrieving pending tasks with options.',\n };\n }\n },\n};\n\nexport default choiceProvider;\n",
|
|
34
|
+
"import type { Entity, IAgentRuntime, Memory, Provider, State, UUID } from '@elizaos/core';\nimport { addHeader, formatEntities } from '@elizaos/core';\nimport {\n getCachedRoom,\n getCachedEntitiesForRoom,\n} from './shared-cache';\n\n/**\n * Build entity details from room entities (optimized version that accepts pre-fetched room).\n * Avoids duplicate getRoom call if room is already in state.\n */\nconst getEntityDetailsOptimized = async (\n runtime: IAgentRuntime,\n roomId: UUID,\n room: { source?: string } | null,\n cachedEntities?: Entity[]\n): Promise<Entity[]> => {\n // Use cached entities if provided, otherwise fetch with caching\n const roomEntities = cachedEntities ?? (await getCachedEntitiesForRoom(runtime, roomId));\n\n // Use a Map for uniqueness checking while processing entities\n const uniqueEntities = new Map<UUID, Entity>();\n\n for (const entity of roomEntities) {\n if (!entity.id || uniqueEntities.has(entity.id)) continue;\n\n // Merge component data efficiently\n const allData: Record<string, unknown> = {};\n for (const component of entity.components || []) {\n Object.assign(allData, component.data);\n }\n\n // Process merged data\n const mergedData: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(allData)) {\n if (!mergedData[key]) {\n mergedData[key] = value;\n continue;\n }\n\n if (Array.isArray(mergedData[key]) && Array.isArray(value)) {\n mergedData[key] = [...new Set([...(mergedData[key] as unknown[]), ...value])];\n } else if (typeof mergedData[key] === 'object' && typeof value === 'object') {\n mergedData[key] = { ...(mergedData[key] as object), ...(value as object) };\n }\n }\n\n uniqueEntities.set(entity.id, {\n id: entity.id,\n agentId: entity.agentId,\n name: room?.source\n ? (entity.metadata[room.source] as { name?: string })?.name || entity.names[0]\n : entity.names[0],\n names: entity.names,\n metadata: { ...mergedData, ...entity.metadata },\n } as Entity);\n }\n\n return Array.from(uniqueEntities.values());\n};\n\n/**\n * Provider for fetching entities related to the current conversation.\n * @type { Provider }\n */\nexport const entitiesProvider: Provider = {\n name: 'ENTITIES',\n description: 'People in the current conversation',\n dynamic: true,\n get: async (runtime: IAgentRuntime, message: Memory, _state: State) => {\n const { roomId, entityId } = message;\n\n // Early validation\n if (!roomId) {\n return { data: {}, values: { entities: '', senderName: '' }, text: '' };\n }\n\n // Use cached room (in-memory cache with TTL) - avoids DB call for repeated messages\n const room = await getCachedRoom(runtime, roomId);\n\n // Get cached entities for room\n const cachedEntities = await getCachedEntitiesForRoom(runtime, roomId);\n\n // Get entities details using cached data\n const entitiesData = await getEntityDetailsOptimized(runtime, roomId, room, cachedEntities);\n\n // Build entity map for O(1) lookup\n const entityMap = new Map<UUID, Entity>();\n for (const entity of entitiesData) {\n if (entity.id) {\n entityMap.set(entity.id, entity);\n }\n }\n\n // Find sender name using map lookup (O(1) instead of O(n))\n const senderName = entityMap.get(entityId)?.names[0];\n\n // Format entities for display\n const formattedEntities = formatEntities({ entities: entitiesData ?? [] });\n\n // Create formatted text with header\n const entities =\n formattedEntities && formattedEntities.length > 0\n ? addHeader('# People in the Room', formattedEntities)\n : '';\n\n const data = {\n entitiesData,\n senderName,\n room, // Include room in data for downstream providers\n };\n\n const values = {\n entities,\n senderName,\n };\n\n return {\n data,\n values,\n text: entities,\n };\n },\n};\n",
|
|
35
|
+
"import type {\n ActionExample,\n Evaluator,\n IAgentRuntime,\n Memory,\n Provider,\n State,\n} from '@elizaos/core';\nimport { addHeader, logger } from '@elizaos/core';\nimport { names, uniqueNamesGenerator } from 'unique-names-generator';\n\n/**\n * Formats the names of evaluators into a comma-separated list, each enclosed in single quotes.\n * @param evaluators - An array of evaluator objects.\n * @returns A string that concatenates the names of all evaluators, each enclosed in single quotes and separated by commas.\n */\n/**\n * Formats the names of the evaluators in the provided array.\n *\n * @param {Evaluator[]} evaluators - Array of evaluators.\n * @returns {string} - Formatted string of evaluator names.\n */\nexport function formatEvaluatorNames(evaluators: Evaluator[]) {\n return evaluators.map((evaluator: Evaluator) => `'${evaluator.name}'`).join(',\\n');\n}\n\n/**\n * Formats evaluator examples into a readable string, replacing placeholders with generated names.\n * @param evaluators - An array of evaluator objects, each containing examples to format.\n * @returns A string that presents each evaluator example in a structured format, including context, messages, and outcomes, with placeholders replaced by generated names.\n */\nexport function formatEvaluatorExamples(evaluators: Evaluator[]) {\n return evaluators\n .map((evaluator) => {\n // Filter out examples that are missing required fields\n const validExamples = (evaluator.examples || []).filter(\n (example) => {\n if (!example) {\n logger.error(\n { evaluator: evaluator.name },\n 'Evaluator has null/undefined example - check evaluator implementation'\n );\n return false;\n }\n if (!example.prompt) {\n logger.error(\n { evaluator: evaluator.name },\n 'Evaluator example missing required \"prompt\" field - check evaluator implementation'\n );\n return false;\n }\n if (!example.messages) {\n logger.error(\n { evaluator: evaluator.name },\n 'Evaluator example missing required \"messages\" field - check evaluator implementation'\n );\n return false;\n }\n return true;\n }\n );\n\n return validExamples\n .map((example) => {\n const exampleNames = Array.from({ length: 5 }, () =>\n uniqueNamesGenerator({ dictionaries: [names] })\n );\n\n let formattedPrompt = example.prompt;\n // Handle missing outcome gracefully (some plugins may not provide it)\n let formattedOutcome = example.outcome || '';\n\n exampleNames.forEach((name, index) => {\n const placeholder = `{{name${index + 1}}}`;\n formattedPrompt = formattedPrompt.replaceAll(placeholder, name);\n if (formattedOutcome) {\n formattedOutcome = formattedOutcome.replaceAll(placeholder, name);\n }\n });\n\n const formattedMessages = (example.messages || [])\n .map((message: ActionExample) => {\n if (!message?.name || !message?.content?.text) {\n logger.error(\n { evaluator: evaluator.name },\n 'Evaluator example message missing \"name\" or \"content.text\" - check evaluator implementation'\n );\n return null;\n }\n let messageString = `${message.name}: ${message.content.text}`;\n exampleNames.forEach((name, index) => {\n const placeholder = `{{name${index + 1}}}`;\n messageString = messageString.replaceAll(placeholder, name);\n });\n return (\n messageString +\n (message.content.action || message.content.actions\n ? ` (${message.content.action || message.content.actions?.join(', ')})`\n : '')\n );\n })\n .filter(Boolean)\n .join('\\n');\n\n const outcomeSection = formattedOutcome ? `\\n\\nOutcome:\\n${formattedOutcome}` : '';\n return `Prompt:\\n${formattedPrompt}\\n\\nMessages:\\n${formattedMessages}${outcomeSection}`;\n })\n .join('\\n\\n');\n })\n .join('\\n\\n');\n}\n\n/**\n * Formats evaluator details into a string, including both the name and description of each evaluator.\n * @param evaluators - An array of evaluator objects.\n * @returns A string that concatenates the name and description of each evaluator, separated by a colon and a newline character.\n */\nexport function formatEvaluators(evaluators: Evaluator[]) {\n return evaluators\n .map((evaluator: Evaluator) => `'${evaluator.name}: ${evaluator.description}'`)\n .join(',\\n');\n}\n\nexport const evaluatorsProvider: Provider = {\n name: 'EVALUATORS',\n description: 'Evaluators that can be used to evaluate the conversation after responding',\n private: true,\n get: async (runtime: IAgentRuntime, message: Memory, state: State) => {\n // Get evaluators that validate for this message (all validations run in parallel)\n const evaluatorPromises = runtime.evaluators.map(async (evaluator: Evaluator) => {\n try {\n const result = await evaluator.validate(runtime, message, state);\n if (result) {\n return evaluator;\n }\n } catch (e) {\n // Silently skip evaluators that fail validation\n }\n return null;\n });\n\n // Wait for all validations\n const resolvedEvaluators = await Promise.all(evaluatorPromises);\n\n // Filter out null values with type-safe filter\n const evaluatorsData = resolvedEvaluators.filter((e): e is Evaluator => e !== null);\n\n // Early return for no valid evaluators (optimization: avoids unnecessary formatting)\n if (evaluatorsData.length === 0) {\n return {\n values: {\n evaluatorsData: [],\n evaluators: '',\n evaluatorNames: '',\n evaluatorExamples: '',\n },\n text: '',\n };\n }\n\n // Format evaluator-related texts\n const evaluators =\n evaluatorsData.length > 0\n ? addHeader('# Available Evaluators', formatEvaluators(evaluatorsData))\n : '';\n\n const evaluatorNames = evaluatorsData.length > 0 ? formatEvaluatorNames(evaluatorsData) : '';\n\n const evaluatorExamples =\n evaluatorsData.length > 0\n ? addHeader('# Evaluator Examples', formatEvaluatorExamples(evaluatorsData))\n : '';\n\n const values = {\n evaluatorsData,\n evaluators,\n evaluatorNames,\n evaluatorExamples,\n };\n\n // Combine all text sections\n const text = [evaluators, evaluatorExamples].filter(Boolean).join('\\n\\n');\n\n return {\n values,\n text,\n };\n },\n};\n",
|
|
35
36
|
"import { type IAgentRuntime, Memory, ModelType, Provider, State } from '@elizaos/core';\n\n/**\n * Formats an array of memories into a single string with each memory content text separated by a new line.\n *\n * @param {Memory[]} facts - An array of Memory objects to be formatted.\n * @returns {string} A single string containing all memory content text with new lines separating each text.\n */\n/**\n * Formats an array of Memory objects into a string, joining them with newlines.\n *\n * @param {Memory[]} facts - An array of Memory objects to format.\n * @returns {string} The formatted string with each Memory object's text joined by newlines.\n */\nfunction formatFacts(facts: Memory[]) {\n return facts\n .reverse()\n .map((fact: Memory) => fact.content.text)\n .join('\\n');\n}\n\n/**\n * Function to get key facts that the agent knows.\n * @param {IAgentRuntime} runtime - The runtime environment for the agent.\n * @param {Memory} message - The message object containing relevant information.\n * @param {State} [_state] - Optional state information.\n * @returns {Object} An object containing values, data, and text related to the key facts.\n */\nconst factsProvider: Provider = {\n name: 'FACTS',\n description: 'Key facts that the agent knows',\n dynamic: true,\n get: async (runtime: IAgentRuntime, message: Memory, _state?: State) => {\n try {\n // Parallelize initial data fetching operations including recentInteractions\n const recentMessages = await runtime.getMemories({\n tableName: 'messages',\n roomId: message.roomId,\n count: 10,\n unique: false,\n });\n\n // join the text of the last 5 messages\n const last5Messages = recentMessages\n .slice(-5)\n .map((message) => message.content.text)\n .join('\\n');\n\n const embedding = await runtime.useModel(ModelType.TEXT_EMBEDDING, {\n text: last5Messages,\n });\n\n const [relevantFacts, recentFactsData] = await Promise.all([\n runtime.searchMemories({\n tableName: 'facts',\n embedding,\n roomId: message.roomId,\n worldId: message.worldId,\n count: 6,\n query: message.content.text,\n }),\n runtime.searchMemories({\n embedding,\n query: message.content.text,\n tableName: 'facts',\n roomId: message.roomId,\n entityId: message.entityId,\n count: 6,\n }),\n ]);\n\n // join the two and deduplicate\n const allFacts = [...relevantFacts, ...recentFactsData].filter(\n (fact, index, self) => index === self.findIndex((t) => t.id === fact.id)\n );\n\n if (allFacts.length === 0) {\n return {\n values: {\n facts: '',\n },\n data: {\n facts: allFacts,\n },\n text: 'No facts available.',\n };\n }\n\n const formattedFacts = formatFacts(allFacts);\n\n const text = 'Key facts that {{agentName}} knows:\\n{{formattedFacts}}'\n .replace('{{agentName}}', runtime.character.name)\n .replace('{{formattedFacts}}', formattedFacts);\n\n return {\n values: {\n facts: formattedFacts,\n },\n data: {\n facts: allFacts,\n },\n text,\n };\n } catch (error) {\n runtime.logger.error(\n {\n src: 'plugin:bootstrap:provider:facts',\n agentId: runtime.agentId,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Error in factsProvider'\n );\n return {\n values: {\n facts: '',\n },\n data: {\n facts: [],\n },\n text: 'Error retrieving facts.',\n };\n }\n },\n};\n\nexport { factsProvider };\n",
|
|
36
|
-
"import type { IAgentRuntime, Memory, Provider, State } from '@elizaos/core';\nimport { addHeader } from '@elizaos/core';\n\n/**\n * Provider for retrieving list of all data providers available for the agent to use.\n * @type { Provider }\n */\n/**\n * Object representing the providersProvider, which contains information about data providers available for the agent.\n *\n * @type {Provider}\n * @property {string} name - The name of the provider (\"PROVIDERS\").\n * @property {string} description - Description of the provider.\n * @property {Function} get - Async function that filters dynamic providers, creates formatted text for each provider, and provides data for potential use.\n * @param {IAgentRuntime} runtime - The runtime of the agent.\n * @param {Memory} _message - The memory message.\n * @returns {Object} An object containing the formatted text and data for potential programmatic use.\n */\nexport const providersProvider: Provider = {\n name: 'PROVIDERS',\n description: 'List of all data providers the agent can use to get additional information',\n get: async (runtime: IAgentRuntime, _message: Memory, _state: State) => {\n const allProviders = runtime.providers;\n\n // Filter providers with dynamic: true\n const dynamicProviders = allProviders.filter((provider) => provider.dynamic === true);\n\n // Create formatted text for each provider\n const dynamicDescriptions = dynamicProviders.map((provider) => {\n return `- **${provider.name}**: ${provider.description || 'No description available'}`;\n });\n\n const allDescriptions = allProviders.map((provider) => {\n return `- **${provider.name}**: ${provider.description || 'No description available'}`;\n });\n\n // Create the header text\n const headerText =\n '# Providers\\n\\nThese providers are available for the agent to select and use:';\n\n const dynamicSection =\n dynamicDescriptions.length > 0\n ? addHeader(headerText, dynamicDescriptions.join('\\n'))\n : addHeader(headerText, 'No dynamic providers are currently available.');\n\n const providersWithDescriptions = addHeader(\n '# Available Providers',\n allDescriptions.join('\\n')\n );\n\n const data = {\n dynamicProviders: dynamicProviders.map((provider) => ({\n name: provider.name,\n description: provider.description || '',\n })),\n allProviders: allProviders.map((provider) => ({\n name: provider.name,\n description: provider.description || '',\n dynamic: provider.dynamic === true,\n })),\n };\n\n const values = {\n providersWithDescriptions,\n };\n\n return {\n text: dynamicSection,\n data,\n values,\n };\n },\n};\n",
|
|
37
|
-
"import {\n addHeader,\n ChannelType,\n CustomMetadata,\n formatMessages,\n formatPosts,\n getEntityDetails,\n type Entity,\n type IAgentRuntime,\n type Memory,\n type Provider,\n type UUID,\n logger,\n} from '@elizaos/core';\n\n// Move getRecentInteractions outside the provider\n/**\n * Retrieves the recent interactions between two entities in a specific context.\n *\n * @param {IAgentRuntime} runtime - The agent runtime object.\n * @param {UUID} sourceEntityId - The UUID of the source entity.\n * @param {UUID} targetEntityId - The UUID of the target entity.\n * @param {UUID} excludeRoomId - The UUID of the room to exclude from the search.\n * @returns {Promise<Memory[]>} A promise that resolves to an array of Memory objects representing recent interactions.\n */\n/**\n * Retrieves the recent interactions between two entities in different rooms excluding a specific room.\n * @param {IAgentRuntime} runtime - The agent runtime object.\n * @param {UUID} sourceEntityId - The UUID of the source entity.\n * @param {UUID} targetEntityId - The UUID of the target entity.\n * @param {UUID} excludeRoomId - The UUID of the room to exclude from the search.\n * @returns {Promise<Memory[]>} An array of Memory objects representing recent interactions between the two entities.\n */\nconst getRecentInteractions = async (\n runtime: IAgentRuntime,\n sourceEntityId: UUID,\n targetEntityId: UUID,\n excludeRoomId: UUID\n): Promise<Memory[]> => {\n // Find all rooms where sourceEntityId and targetEntityId are participants\n const rooms = await runtime.getRoomsForParticipants([sourceEntityId, targetEntityId]);\n\n // Check the existing memories in the database\n return runtime.getMemoriesByRoomIds({\n tableName: 'messages',\n // filter out the current room id from rooms\n roomIds: rooms.filter((room) => room !== excludeRoomId),\n limit: 20,\n });\n};\n\n/**\n * A provider object that retrieves recent messages, interactions, and memories based on a given message.\n * @typedef {object} Provider\n * @property {string} name - The name of the provider (\"RECENT_MESSAGES\").\n * @property {string} description - A description of the provider's purpose (\"Recent messages, interactions and other memories\").\n * @property {number} position - The position of the provider (100).\n * @property {Function} get - Asynchronous function that retrieves recent messages, interactions, and memories.\n * @param {IAgentRuntime} runtime - The runtime context for the agent.\n * @param {Memory} message - The message to retrieve data from.\n * @returns {object} An object containing data, values, and text sections.\n */\nexport const recentMessagesProvider: Provider = {\n name: 'RECENT_MESSAGES',\n description: 'Recent messages, interactions and other memories',\n position: 100,\n get: async (runtime: IAgentRuntime, message: Memory) => {\n try {\n const { roomId } = message;\n const conversationLength = runtime.getConversationLength();\n\n // Parallelize initial data fetching operations including recentInteractions\n const [entitiesData, room, recentMessagesData, recentInteractionsData] = await Promise.all([\n getEntityDetails({ runtime, roomId }),\n runtime.getRoom(roomId),\n runtime.getMemories({\n tableName: 'messages',\n roomId,\n count: conversationLength,\n unique: false,\n }),\n message.entityId !== runtime.agentId\n ? getRecentInteractions(runtime, message.entityId, runtime.agentId, roomId)\n : Promise.resolve([]),\n ]);\n\n // Separate action results from regular messages\n const actionResultMessages = recentMessagesData.filter(\n (msg) => msg.content?.type === 'action_result' && msg.metadata?.type === 'action_result'\n );\n\n const dialogueMessages = recentMessagesData.filter(\n (msg) => !(msg.content?.type === 'action_result' && msg.metadata?.type === 'action_result')\n );\n\n // Default to message format if room is not found or type is undefined\n const isPostFormat = room?.type\n ? room.type === ChannelType.FEED || room.type === ChannelType.THREAD\n : false;\n\n // Format recent messages and posts in parallel, using only dialogue messages\n const [formattedRecentMessages, formattedRecentPosts] = await Promise.all([\n formatMessages({\n messages: dialogueMessages,\n entities: entitiesData,\n }),\n formatPosts({\n messages: dialogueMessages,\n entities: entitiesData,\n conversationHeader: false,\n }),\n ]);\n\n // Format action results separately\n let actionResultsText = '';\n if (actionResultMessages.length > 0) {\n // Group by runId using Map\n const groupedByRun = new Map<string, Memory[]>();\n\n for (const mem of actionResultMessages) {\n const runId: string = String(mem.content?.runId || 'unknown');\n if (!groupedByRun.has(runId)) {\n groupedByRun.set(runId, []);\n }\n const memories = groupedByRun.get(runId);\n if (memories) {\n memories.push(mem);\n }\n }\n\n const formattedActionResults = Array.from(groupedByRun.entries())\n .slice(-3) // Show last 3 runs\n .map(([runId, memories]) => {\n const sortedMemories = memories.sort(\n (a: Memory, b: Memory) => (a.createdAt || 0) - (b.createdAt || 0)\n );\n\n const thought = sortedMemories[0]?.content?.planThought || '';\n const runText = sortedMemories\n .map((mem: Memory) => {\n const actionName = mem.content?.actionName || 'Unknown';\n const status = mem.content?.actionStatus || 'unknown';\n const planStep = mem.content?.planStep || '';\n const text = mem.content?.text || '';\n const error = mem.content?.error || '';\n\n let memText = ` - ${actionName} (${status})`;\n if (planStep) {\n memText += ` [${planStep}]`;\n }\n if (error) {\n memText += `: Error - ${error}`;\n } else if (text && text !== `Executed action: ${actionName}`) {\n memText += `: ${text}`;\n }\n\n return memText;\n })\n .join('\\n');\n\n return `**Action Run ${runId.slice(0, 8)}**${thought ? ` - \"${thought}\"` : ''}\\n${runText}`;\n })\n .join('\\n\\n');\n\n actionResultsText = formattedActionResults\n ? addHeader('# Recent Action Executions', formattedActionResults)\n : '';\n }\n\n // Create formatted text with headers\n const recentPosts =\n formattedRecentPosts && formattedRecentPosts.length > 0\n ? addHeader('# Posts in Thread', formattedRecentPosts)\n : '';\n\n const recentMessages =\n formattedRecentMessages && formattedRecentMessages.length > 0\n ? addHeader('# Conversation Messages', formattedRecentMessages)\n : '';\n\n // If there are no messages at all, and no current message to process, return a specific message.\n // The check for dialogueMessages.length === 0 ensures we only show this if there's truly nothing.\n if (\n !recentPosts &&\n !recentMessages &&\n dialogueMessages.length === 0 &&\n !message.content.text\n ) {\n return {\n data: {\n recentMessages: dialogueMessages,\n recentInteractions: [],\n actionResults: actionResultMessages,\n },\n values: {\n recentPosts: '',\n recentMessages: '',\n recentMessageInteractions: '',\n recentPostInteractions: '',\n recentInteractions: '',\n recentActionResults: actionResultsText,\n },\n text: 'No recent messages available',\n };\n }\n\n let recentMessage = 'No recent message available.';\n\n if (dialogueMessages.length > 0) {\n // Get the most recent dialogue message (create a copy to avoid mutating original array)\n const mostRecentMessage = [...dialogueMessages].sort(\n (a, b) => (b.createdAt || 0) - (a.createdAt || 0)\n )[0];\n\n // Format just this single message to get the internal thought\n const formattedSingleMessage = formatMessages({\n messages: [mostRecentMessage],\n entities: entitiesData,\n });\n\n if (formattedSingleMessage) {\n recentMessage = formattedSingleMessage;\n }\n }\n\n const metaData = message.metadata as CustomMetadata;\n const senderName =\n entitiesData.find((entity: Entity) => entity.id === message.entityId)?.names[0] ||\n metaData?.entityName ||\n 'Unknown User';\n const receivedMessageContent = message.content.text;\n\n const hasReceivedMessage = !!receivedMessageContent?.trim();\n\n const receivedMessageHeader = hasReceivedMessage\n ? addHeader('# Received Message', `${senderName}: ${receivedMessageContent}`)\n : '';\n\n const focusHeader = hasReceivedMessage\n ? addHeader(\n '# Focus your response',\n `You are replying to the above message from **${senderName}**. Keep your answer relevant to that message. Do not repeat earlier replies unless the sender asks again.`\n )\n : '';\n\n // Preload all necessary entities for both types of interactions\n const interactionEntityMap = new Map<UUID, Entity>();\n\n // Only proceed if there are interactions to process\n if (recentInteractionsData.length > 0) {\n // Get unique entity IDs that aren't the runtime agent\n const uniqueEntityIds = [\n ...new Set(\n recentInteractionsData\n .map((message) => message.entityId)\n .filter((id) => id !== runtime.agentId)\n ),\n ];\n\n // Create a Set for faster lookup\n const uniqueEntityIdSet = new Set(uniqueEntityIds);\n\n // Add entities already fetched in entitiesData to the map\n const entitiesDataIdSet = new Set<UUID>();\n entitiesData.forEach((entity) => {\n if (uniqueEntityIdSet.has(entity.id)) {\n interactionEntityMap.set(entity.id, entity);\n entitiesDataIdSet.add(entity.id);\n }\n });\n\n // Get the remaining entities that weren't already loaded\n // Use Set difference for efficient filtering\n const remainingEntityIds = uniqueEntityIds.filter((id) => !entitiesDataIdSet.has(id));\n\n // Only fetch the entities we don't already have\n if (remainingEntityIds.length > 0) {\n const entities = await Promise.all(\n remainingEntityIds.map((entityId) => runtime.getEntityById(entityId))\n );\n\n entities.forEach((entity, index) => {\n if (entity) {\n interactionEntityMap.set(remainingEntityIds[index], entity);\n }\n });\n }\n }\n\n // Format recent message interactions\n const getRecentMessageInteractions = async (\n recentInteractionsData: Memory[]\n ): Promise<string> => {\n // Format messages using the pre-fetched entities\n const formattedInteractions = recentInteractionsData.map((message) => {\n const isSelf = message.entityId === runtime.agentId;\n let sender: string;\n\n if (isSelf) {\n sender = runtime.character.name;\n } else {\n sender =\n (interactionEntityMap.get(message.entityId)?.metadata?.userName as string) ||\n 'unknown';\n }\n\n return `${sender}: ${message.content.text}`;\n });\n\n return formattedInteractions.join('\\n');\n };\n\n // Format recent post interactions\n const getRecentPostInteractions = async (\n recentInteractionsData: Memory[],\n entities: Entity[]\n ): Promise<string> => {\n // Combine pre-loaded entities with any other entities\n const combinedEntities = [...entities];\n\n // Add entities from interactionEntityMap that aren't already in entities\n const actorIds = new Set(entities.map((entity) => entity.id));\n for (const [id, entity] of interactionEntityMap.entries()) {\n if (!actorIds.has(id)) {\n combinedEntities.push(entity);\n }\n }\n\n const formattedInteractions = formatPosts({\n messages: recentInteractionsData,\n entities: combinedEntities,\n conversationHeader: true,\n });\n\n return formattedInteractions;\n };\n\n // Process both types of interactions in parallel\n const [recentMessageInteractions, recentPostInteractions] = await Promise.all([\n getRecentMessageInteractions(recentInteractionsData),\n getRecentPostInteractions(recentInteractionsData, entitiesData),\n ]);\n\n const data = {\n recentMessages: dialogueMessages,\n recentInteractions: recentInteractionsData,\n actionResults: actionResultMessages,\n };\n\n const values = {\n recentPosts,\n recentMessages,\n recentMessageInteractions,\n recentPostInteractions,\n recentInteractions: isPostFormat ? recentPostInteractions : recentMessageInteractions,\n recentActionResults: actionResultsText,\n recentMessage,\n };\n\n // Combine all text sections\n const text = [\n isPostFormat ? recentPosts : recentMessages,\n actionResultsText, // Include action results in the text output\n // Only add received message and focus headers if there are messages or a current message to process\n recentMessages || recentPosts || message.content.text ? receivedMessageHeader : '',\n recentMessages || recentPosts || message.content.text ? focusHeader : '',\n ]\n .filter(Boolean)\n .join('\\n\\n');\n\n return {\n data,\n values,\n text,\n };\n } catch (error) {\n logger.error(\n {\n src: 'plugin:bootstrap:provider:recent_messages',\n agentId: runtime.agentId,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Error in recentMessagesProvider'\n );\n // Return a default state in case of error, similar to the empty message list\n return {\n data: {\n recentMessages: [],\n recentInteractions: [],\n actionResults: [],\n },\n values: {\n recentPosts: '',\n recentMessages: '',\n recentMessageInteractions: '',\n recentPostInteractions: '',\n recentInteractions: '',\n recentActionResults: '',\n },\n text: 'Error retrieving recent messages.', // Or 'No recent messages available' as the test expects\n };\n }\n },\n};\n",
|
|
38
|
-
"import type { Entity, IAgentRuntime, Memory, Provider, Relationship, UUID } from '@elizaos/core';\n/**\n *
|
|
39
|
-
"import {\n ChannelType,\n logger,\n type IAgentRuntime,\n type Memory,\n type Provider,\n type ProviderResult,\n type State,\n type UUID,\n} from '@elizaos/core';\
|
|
40
|
-
"// File: /swarm/shared/settings/provider.ts\n// Updated to use world metadata instead of cache\n\nimport {\n ChannelType,\n findWorldsForOwner,\n getSalt,\n logger,\n unsaltWorldSettings,\n World,\n type IAgentRuntime,\n type Memory,\n type Provider,\n type ProviderResult,\n type Setting,\n type State,\n type WorldSettings,\n} from '@elizaos/core';\n\n/**\n * Formats a setting value for display, respecting privacy flags\n */\nconst formatSettingValue = (setting: Setting, isOnboarding: boolean): string => {\n if (setting.value === null) {\n return 'Not set';\n }\n if (setting.secret && !isOnboarding) {\n return '****************';\n }\n return String(setting.value);\n};\n\n/**\n * Generates a status message based on the current settings state\n */\nfunction generateStatusMessage(\n runtime: IAgentRuntime,\n worldSettings: WorldSettings,\n isOnboarding: boolean,\n state?: State\n): string {\n try {\n // Format settings for display\n const formattedSettings = Object.entries(worldSettings)\n .map(([key, setting]) => {\n if (typeof setting !== 'object' || !setting.name) {\n return null;\n }\n\n const description = setting.description || '';\n const usageDescription = setting.usageDescription || '';\n\n // Skip settings that should be hidden based on visibility function\n if (setting.visibleIf && !setting.visibleIf(worldSettings)) {\n return null;\n }\n\n return {\n key,\n name: setting.name,\n value: formatSettingValue(setting, isOnboarding),\n description,\n usageDescription,\n required: setting.required,\n configured: setting.value !== null,\n };\n })\n .filter(Boolean);\n\n // Count required settings that are not configured\n const requiredUnconfigured = formattedSettings.filter(\n (s) => s?.required && !s.configured\n ).length;\n\n // Generate appropriate message\n if (isOnboarding) {\n const settingsList = formattedSettings\n .map((s) => {\n const label = s?.required ? '(Required)' : '(Optional)';\n return `${s?.key}: ${s?.value} ${label}\\n(${s?.name}) ${s?.usageDescription}`;\n })\n .join('\\n\\n');\n\n const validKeys = `Valid setting keys: ${Object.keys(worldSettings).join(', ')}`;\n\n const commonInstructions = `Instructions for ${runtime.character.name}:\n - Only update settings if the user is clearly responding to a setting you are currently asking about.\n - If the user's reply clearly maps to a setting and a valid value, you **must** call the UPDATE_SETTINGS action with the correct key and value. Do not just respond with a message saying it's updated — it must be an action.\n - Never hallucinate settings or respond with values not listed above.\n - Do not call UPDATE_SETTINGS just because the user has started onboarding or you think a setting needs to be configured. Only update when the user clearly provides a specific value for a setting you are currently asking about.\n - Answer setting-related questions using only the name, description, and value from the list.`;\n\n if (requiredUnconfigured > 0) {\n return `# PRIORITY TASK: Onboarding with ${state?.senderName}\n\n ${runtime.character.name} needs to help the user configure ${requiredUnconfigured} required settings:\n \n ${settingsList}\n \n ${validKeys}\n \n ${commonInstructions}\n \n - Prioritize configuring required settings before optional ones.`;\n }\n\n return `All required settings have been configured. Here's the current configuration:\n \n ${settingsList}\n \n ${validKeys}\n \n ${commonInstructions}`;\n }\n\n // Non-onboarding context - list all public settings with values and descriptions\n return `## Current Configuration\\n\\n${\n requiredUnconfigured > 0\n ? `IMPORTANT!: ${requiredUnconfigured} required settings still need configuration. ${runtime.character.name} should get onboarded with the OWNER as soon as possible.\\n\\n`\n : 'All required settings are configured.\\n\\n'\n }${formattedSettings\n .map((s) => `### ${s?.name}\\n**Value:** ${s?.value}\\n**Description:** ${s?.description}`)\n .join('\\n\\n')}`;\n } catch (error) {\n logger.error(\n {\n src: 'plugin:bootstrap:provider:settings',\n agentId: runtime.agentId,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Error generating status message'\n );\n return 'Error generating configuration status.';\n }\n}\n\n/**\n * Creates an settings provider with the given configuration\n * Updated to use world metadata instead of cache\n */\nexport const settingsProvider: Provider = {\n name: 'SETTINGS',\n description: 'Current settings for the server',\n get: async (runtime: IAgentRuntime, message: Memory, state?: State): Promise<ProviderResult> => {\n try {\n // Parallelize the initial database operations to improve performance\n // These operations can run simultaneously as they don't depend on each other\n const [room, userWorlds] = await Promise.all([\n runtime.getRoom(message.roomId),\n findWorldsForOwner(runtime, message.entityId),\n ]).catch((error) => {\n logger.error(\n {\n src: 'plugin:bootstrap:provider:settings',\n agentId: runtime.agentId,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Error fetching initial data'\n );\n throw new Error('Failed to retrieve room or user world information');\n });\n\n if (!room) {\n logger.error(\n { src: 'plugin:bootstrap:provider:settings', agentId: runtime.agentId },\n 'No room found for settings provider'\n );\n return {\n data: {\n settings: [],\n },\n values: {\n settings: 'Error: Room not found',\n },\n text: 'Error: Room not found',\n };\n }\n\n if (!room.worldId) {\n logger.debug(\n { src: 'plugin:bootstrap:provider:settings', agentId: runtime.agentId },\n 'No world found for settings provider -- settings provider will be skipped'\n );\n return {\n data: {\n settings: [],\n },\n values: {\n settings: 'Room does not have a worldId -- settings provider will be skipped',\n },\n text: 'Room does not have a worldId -- settings provider will be skipped',\n };\n }\n\n const type = room.type;\n const isOnboarding = type === ChannelType.DM;\n\n let world: World | null | undefined = null;\n let serverId: string | undefined = undefined;\n let worldSettings: WorldSettings | null = null;\n\n if (isOnboarding) {\n // In onboarding mode, use the user's world directly\n // Look for worlds with settings metadata, or create one if none exists\n world = userWorlds?.find((world) => world.metadata?.settings !== undefined);\n\n if (!world && userWorlds && userWorlds.length > 0) {\n // If user has worlds but none have settings, use the first one and initialize settings\n world = userWorlds[0];\n if (!world.metadata) {\n world.metadata = {};\n }\n world.metadata.settings = {};\n await runtime.updateWorld(world);\n logger.info(\n {\n src: 'plugin:bootstrap:provider:settings',\n agentId: runtime.agentId,\n worldId: world.id,\n },\n 'Initialized settings for user world'\n );\n }\n\n if (!world) {\n logger.error(\n { src: 'plugin:bootstrap:provider:settings', agentId: runtime.agentId },\n 'No world found for user during onboarding'\n );\n throw new Error('No server ownership found for onboarding');\n }\n\n serverId = world.messageServerId;\n\n // Get world settings directly from the world object we already have\n // Must decrypt secret values using unsaltWorldSettings (settings are stored encrypted)\n if (world.metadata?.settings) {\n const salt = getSalt();\n worldSettings = unsaltWorldSettings(world.metadata.settings as WorldSettings, salt);\n }\n } else {\n // For non-onboarding, we need to get the world associated with the room\n try {\n world = await runtime.getWorld(room.worldId);\n\n if (!world) {\n logger.error(\n {\n src: 'plugin:bootstrap:provider:settings',\n agentId: runtime.agentId,\n worldId: room.worldId,\n },\n 'No world found for room'\n );\n throw new Error(`No world found for room ${room.worldId}`);\n }\n\n serverId = world.messageServerId;\n\n // Get world settings directly from the world object we already have\n // Must decrypt secret values using unsaltWorldSettings (settings are stored encrypted)\n if (world.metadata?.settings) {\n const salt = getSalt();\n worldSettings = unsaltWorldSettings(world.metadata.settings as WorldSettings, salt);\n } else if (!serverId) {\n logger.debug(\n {\n src: 'plugin:bootstrap:provider:settings',\n agentId: runtime.agentId,\n worldId: room.worldId,\n },\n 'No server ID or settings found for world'\n );\n }\n } catch (error) {\n logger.error(\n {\n src: 'plugin:bootstrap:provider:settings',\n agentId: runtime.agentId,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Error processing world data'\n );\n throw new Error('Failed to process world information');\n }\n }\n\n // If no server found after recovery attempts\n if (!serverId) {\n logger.info(\n {\n src: 'plugin:bootstrap:provider:settings',\n agentId: runtime.agentId,\n entityId: message.entityId,\n },\n 'No server ownership found for user after recovery attempt'\n );\n return isOnboarding\n ? {\n data: {\n settings: [],\n },\n values: {\n settings:\n \"The user doesn't appear to have ownership of any servers. They should make sure they're using the correct account.\",\n },\n text: \"The user doesn't appear to have ownership of any servers. They should make sure they're using the correct account.\",\n }\n : {\n data: {\n settings: [],\n },\n values: {\n settings: 'Error: No configuration access',\n },\n text: 'Error: No configuration access',\n };\n }\n\n if (!worldSettings) {\n logger.info(\n {\n src: 'plugin:bootstrap:provider:settings',\n agentId: runtime.agentId,\n messageServerId: serverId,\n },\n 'No settings state found for server'\n );\n return isOnboarding\n ? {\n data: {\n settings: [],\n },\n values: {\n settings:\n \"The user doesn't appear to have any settings configured for this server. They should configure some settings for this server.\",\n },\n text: \"The user doesn't appear to have any settings configured for this server. They should configure some settings for this server.\",\n }\n : {\n data: {\n settings: [],\n },\n values: {\n settings: 'Configuration has not been completed yet.',\n },\n text: 'Configuration has not been completed yet.',\n };\n }\n\n // Generate the status message based on the settings\n const output = generateStatusMessage(runtime, worldSettings, isOnboarding, state);\n\n return {\n data: {\n settings: worldSettings,\n },\n values: {\n settings: output,\n },\n text: output,\n };\n } catch (error) {\n logger.error(\n {\n src: 'plugin:bootstrap:provider:settings',\n agentId: runtime.agentId,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Critical error in settings provider'\n );\n return {\n data: {\n settings: [],\n },\n values: {\n settings: 'Error retrieving configuration information. Please try again later.',\n },\n text: 'Error retrieving configuration information. Please try again later.',\n };\n }\n },\n};\n",
|
|
37
|
+
"import type { IAgentRuntime, Memory, Provider, State } from '@elizaos/core';\nimport { addHeader } from '@elizaos/core';\n\n/**\n * Provider for retrieving list of all data providers available for the agent to use.\n * @type { Provider }\n */\n/**\n * Object representing the providersProvider, which contains information about data providers available for the agent.\n *\n * @type {Provider}\n * @property {string} name - The name of the provider (\"PROVIDERS\").\n * @property {string} description - Description of the provider.\n * @property {Function} get - Async function that filters dynamic providers, creates formatted text for each provider, and provides data for potential use.\n * @param {IAgentRuntime} runtime - The runtime of the agent.\n * @param {Memory} _message - The memory message.\n * @returns {Object} An object containing the formatted text and data for potential programmatic use.\n */\nexport const providersProvider: Provider = {\n name: 'PROVIDERS',\n description: 'List of all data providers the agent can use to get additional information',\n get: async (runtime: IAgentRuntime, _message: Memory, _state: State) => {\n const allProviders = runtime.providers || [];\n\n // Filter providers with dynamic: true\n const dynamicProviders = allProviders.filter((provider) => provider.dynamic === true);\n\n // Create formatted text for each provider\n const dynamicDescriptions = dynamicProviders.map((provider) => {\n return `- **${provider.name}**: ${provider.description || 'No description available'}`;\n });\n\n const allDescriptions = allProviders.map((provider) => {\n return `- **${provider.name}**: ${provider.description || 'No description available'}`;\n });\n\n // Create the header text\n const headerText =\n '# Providers\\n\\nThese providers are available for the agent to select and use:';\n\n const dynamicSection =\n dynamicDescriptions.length > 0\n ? addHeader(headerText, dynamicDescriptions.join('\\n'))\n : addHeader(headerText, 'No dynamic providers are currently available.');\n\n const providersWithDescriptions = addHeader(\n '# Available Providers',\n allDescriptions.join('\\n')\n );\n\n const data = {\n dynamicProviders: dynamicProviders.map((provider) => ({\n name: provider.name,\n description: provider.description || '',\n })),\n allProviders: allProviders.map((provider) => ({\n name: provider.name,\n description: provider.description || '',\n dynamic: provider.dynamic === true,\n })),\n };\n\n const values = {\n providersWithDescriptions,\n };\n\n return {\n text: dynamicSection,\n data,\n values,\n };\n },\n};\n",
|
|
38
|
+
"import {\n addHeader,\n ChannelType,\n CustomMetadata,\n formatMessages,\n formatPosts,\n parseBooleanFromText,\n type Entity,\n type IAgentRuntime,\n type Memory,\n type Provider,\n type UUID,\n logger,\n} from '@elizaos/core';\n\n/**\n * Retrieves the recent interactions between two entities in different rooms excluding a specific room.\n * @param {IAgentRuntime} runtime - The agent runtime object.\n * @param {UUID} sourceEntityId - The UUID of the source entity.\n * @param {UUID} targetEntityId - The UUID of the target entity.\n * @param {UUID} excludeRoomId - The UUID of the room to exclude from the search.\n * @returns {Promise<Memory[]>} An array of Memory objects representing recent interactions between the two entities.\n */\nconst getRecentInteractions = async (\n runtime: IAgentRuntime,\n sourceEntityId: UUID,\n targetEntityId: UUID,\n excludeRoomId: UUID\n): Promise<Memory[]> => {\n // Find all rooms where sourceEntityId and targetEntityId are participants\n const rooms = await runtime.getRoomsForParticipants([sourceEntityId, targetEntityId]);\n\n // Check the existing memories in the database\n return runtime.getMemoriesByRoomIds({\n tableName: 'messages',\n // filter out the current room id from rooms\n roomIds: rooms.filter((room) => room !== excludeRoomId),\n limit: 20,\n });\n};\n\n/**\n * Build entity details from room entities (optimized version without extra room fetch).\n * @param {IAgentRuntime} runtime - The agent runtime object.\n * @param {UUID} roomId - The room ID.\n * @param {any} room - The pre-fetched room object to avoid duplicate fetch.\n * @returns {Promise<Entity[]>} Array of entity details.\n */\nconst getEntityDetailsWithRoom = async (\n runtime: IAgentRuntime,\n roomId: UUID,\n room: { source?: string } | null\n): Promise<Entity[]> => {\n const roomEntities = await runtime.getEntitiesForRoom(roomId, true);\n\n // Use a Map for uniqueness checking while processing entities\n const uniqueEntities = new Map<UUID, Entity>();\n\n for (const entity of roomEntities) {\n if (!entity.id || uniqueEntities.has(entity.id)) continue;\n\n // Merge component data efficiently\n const allData: Record<string, unknown> = {};\n for (const component of entity.components || []) {\n Object.assign(allData, component.data);\n }\n\n // Process merged data\n const mergedData: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(allData)) {\n if (!mergedData[key]) {\n mergedData[key] = value;\n continue;\n }\n\n if (Array.isArray(mergedData[key]) && Array.isArray(value)) {\n mergedData[key] = [...new Set([...(mergedData[key] as unknown[]), ...value])];\n } else if (typeof mergedData[key] === 'object' && typeof value === 'object') {\n mergedData[key] = { ...mergedData[key] as object, ...value as object };\n }\n }\n\n const entityId = entity.id!; // Already validated above\n uniqueEntities.set(entityId, {\n id: entityId,\n agentId: entity.agentId,\n name: room?.source\n ? (entity.metadata[room.source] as { name?: string })?.name || entity.names[0]\n : entity.names[0],\n names: entity.names,\n metadata: { ...mergedData, ...entity.metadata },\n } as Entity);\n }\n\n return Array.from(uniqueEntities.values());\n};\n\n/**\n * A provider object that retrieves recent messages, interactions, and memories based on a given message.\n * @typedef {object} Provider\n * @property {string} name - The name of the provider (\"RECENT_MESSAGES\").\n * @property {string} description - A description of the provider's purpose (\"Recent messages, interactions and other memories\").\n * @property {number} position - The position of the provider (100).\n * @property {Function} get - Asynchronous function that retrieves recent messages, interactions, and memories.\n * @param {IAgentRuntime} runtime - The runtime context for the agent.\n * @param {Memory} message - The message to retrieve data from.\n * @returns {object} An object containing data, values, and text sections.\n */\nexport const recentMessagesProvider: Provider = {\n name: 'RECENT_MESSAGES',\n description: 'Recent messages, interactions and other memories',\n position: 100,\n get: async (runtime: IAgentRuntime, message: Memory, state) => {\n // Early validation - fail fast before any IO\n const { roomId } = message;\n if (!roomId) {\n logger.warn({ src: 'plugin:bootstrap:provider:recent-messages', agentId: runtime.agentId }, 'No roomId in message');\n return { data: {}, values: {}, text: '' };\n }\n\n try {\n const conversationLength = runtime.getConversationLength();\n\n // Check if we should limit to only the last message\n const limitMessagesSetting = runtime.getSetting('LIMIT_TO_LAST_MESSAGE');\n const limitToLastMessage =\n limitMessagesSetting === true ||\n (typeof limitMessagesSetting === 'string'\n ? parseBooleanFromText(limitMessagesSetting)\n : limitMessagesSetting != null\n ? parseBooleanFromText(String(limitMessagesSetting))\n : false);\n const effectiveConversationLength = limitToLastMessage ? 1 : conversationLength;\n\n // Try to get room and entities from previous provider results (ENTITIES provider runs before us)\n // Safe access with explicit type checking - provider may not have run\n const entitiesProviderResult = state?.data?.providers?.ENTITIES;\n const entitiesProviderData =\n entitiesProviderResult && typeof entitiesProviderResult === 'object' && 'data' in entitiesProviderResult\n ? (entitiesProviderResult.data as { room?: { type?: string; source?: string }; entitiesData?: Entity[] })\n : undefined;\n\n // Only use cached data if it exists and is valid\n const cachedRoom = entitiesProviderData?.room;\n const cachedEntities = Array.isArray(entitiesProviderData?.entitiesData) ? entitiesProviderData.entitiesData : undefined;\n\n // Fetch room only if not in cache\n const [room, recentMessagesData, recentInteractionsData] = await Promise.all([\n cachedRoom ? Promise.resolve(cachedRoom) : runtime.getRoom(roomId),\n runtime.getMemories({\n tableName: 'messages',\n roomId,\n count: effectiveConversationLength,\n unique: false,\n }),\n message.entityId !== runtime.agentId\n ? getRecentInteractions(runtime, message.entityId, runtime.agentId, roomId)\n : Promise.resolve([]),\n ]);\n\n // Get entity details - use cache if available and valid, otherwise fetch\n const entitiesData = cachedEntities ?? (await getEntityDetailsWithRoom(runtime, roomId, room));\n\n // Build entity lookup map for O(1) access during formatting\n const entityMap = new Map<UUID, Entity>();\n for (const entity of entitiesData) {\n if (entity.id) {\n entityMap.set(entity.id, entity);\n }\n }\n\n // Separate action results from regular messages\n const actionResultMessages = recentMessagesData.filter(\n (msg) => msg.content?.type === 'action_result' && msg.metadata?.type === 'action_result'\n );\n\n const dialogueMessages = recentMessagesData.filter(\n (msg) => !(msg.content?.type === 'action_result' && msg.metadata?.type === 'action_result')\n );\n\n // Default to message format if room is not found or type is undefined\n const isPostFormat = room?.type\n ? room.type === ChannelType.FEED || room.type === ChannelType.THREAD\n : false;\n\n // Only format the type that will actually be used (optimization: avoid formatting both)\n let formattedRecentMessages = '';\n let formattedRecentPosts = '';\n\n if (isPostFormat) {\n formattedRecentPosts = formatPosts({\n messages: dialogueMessages,\n entities: entitiesData,\n conversationHeader: false,\n });\n } else {\n formattedRecentMessages = formatMessages({\n messages: dialogueMessages,\n entities: entitiesData,\n });\n }\n\n // Format action results separately\n let actionResultsText = '';\n if (actionResultMessages.length > 0) {\n // Group by runId using Map\n const groupedByRun = new Map<string, Memory[]>();\n\n for (const mem of actionResultMessages) {\n const runId: string = String(mem.content?.runId || 'unknown');\n if (!groupedByRun.has(runId)) {\n groupedByRun.set(runId, []);\n }\n const memories = groupedByRun.get(runId);\n if (memories) {\n memories.push(mem);\n }\n }\n\n const formattedActionResults = Array.from(groupedByRun.entries())\n .slice(-3) // Show last 3 runs\n .map(([runId, memories]) => {\n const sortedMemories = memories.sort(\n (a: Memory, b: Memory) => (a.createdAt || 0) - (b.createdAt || 0)\n );\n\n const thought = sortedMemories[0]?.content?.planThought || '';\n const runText = sortedMemories\n .map((mem: Memory) => {\n const actionName = mem.content?.actionName || 'Unknown';\n const status = mem.content?.actionStatus || 'unknown';\n const planStep = mem.content?.planStep || '';\n const text = mem.content?.text || '';\n const error = mem.content?.error || '';\n\n let memText = ` - ${actionName} (${status})`;\n if (planStep) memText += ` [${planStep}]`;\n if (error) {\n memText += `: Error - ${error}`;\n } else if (text && text !== `Executed action: ${actionName}`) {\n memText += `: ${text}`;\n }\n\n return memText;\n })\n .join('\\n');\n\n return `**Action Run ${runId.slice(0, 8)}**${thought ? ` - \"${thought}\"` : ''}\\n${runText}`;\n })\n .join('\\n\\n');\n\n actionResultsText = formattedActionResults\n ? addHeader('# Recent Action Executions', formattedActionResults)\n : '';\n }\n\n // Create formatted text with headers\n const recentPosts =\n formattedRecentPosts && formattedRecentPosts.length > 0\n ? addHeader('# Posts in Thread', formattedRecentPosts)\n : '';\n\n const recentMessages =\n formattedRecentMessages && formattedRecentMessages.length > 0\n ? addHeader('# Conversation Messages', formattedRecentMessages)\n : '';\n\n // If there are no messages at all, and no current message to process, return a specific message.\n // The check for dialogueMessages.length === 0 ensures we only show this if there's truly nothing.\n if (\n !recentPosts &&\n !recentMessages &&\n dialogueMessages.length === 0 &&\n !message.content.text\n ) {\n return {\n data: {\n recentMessages: dialogueMessages,\n recentInteractions: [],\n actionResults: actionResultMessages,\n },\n values: {\n recentPosts: '',\n recentMessages: '',\n recentMessageInteractions: '',\n recentPostInteractions: '',\n recentInteractions: '',\n recentActionResults: actionResultsText,\n },\n text: 'No recent messages available',\n };\n }\n\n let recentMessage = 'No recent message available.';\n\n if (dialogueMessages.length > 0) {\n // Get the most recent dialogue message (messages are sorted newest first after getMemories)\n const mostRecentMessage = [...dialogueMessages].sort(\n (a, b) => (b.createdAt || 0) - (a.createdAt || 0)\n )[0];\n\n // Inline format for the most recent message (avoids redundant formatMessages call)\n const senderEntity = entityMap.get(mostRecentMessage.entityId);\n const senderName = senderEntity?.names[0] || 'Unknown User';\n const messageText = mostRecentMessage.content?.text || '';\n const messageThought = mostRecentMessage.content?.thought;\n\n if (messageText || messageThought) {\n const parts: string[] = [];\n if (messageText) parts.push(`${senderName}: ${messageText}`);\n if (messageThought) parts.push(`(${senderName}'s internal thought: ${messageThought})`);\n recentMessage = parts.join('\\n');\n }\n }\n\n const metaData = message.metadata as CustomMetadata;\n const currentSenderName =\n entityMap.get(message.entityId)?.names[0] ||\n metaData?.entityName ||\n 'Unknown User';\n const receivedMessageContent = message.content.text;\n\n const hasReceivedMessage = !!receivedMessageContent?.trim();\n\n const receivedMessageHeader = hasReceivedMessage\n ? addHeader('# Received Message', `${currentSenderName}: ${receivedMessageContent}`)\n : '';\n\n const focusHeader = hasReceivedMessage\n ? addHeader(\n '# Focus your response',\n `You are replying to the above message from **${currentSenderName}**. Keep your answer relevant to that message. Do not repeat earlier replies unless the sender asks again.`\n )\n : '';\n\n // Use the existing entityMap for interaction lookups, only fetch missing entities\n const interactionEntityMap = new Map<UUID, Entity>(entityMap);\n\n // Only proceed if there are interactions to process\n if (recentInteractionsData.length > 0) {\n // Get unique entity IDs that aren't the runtime agent and not already in our map\n const missingEntityIds = [\n ...new Set(\n recentInteractionsData\n .map((msg) => msg.entityId)\n .filter((id) => id !== runtime.agentId && !entityMap.has(id))\n ),\n ];\n\n // Only fetch the entities we don't already have\n if (missingEntityIds.length > 0) {\n const entities = await Promise.all(\n missingEntityIds.map((entityId) => runtime.getEntityById(entityId))\n );\n\n entities.forEach((entity, index) => {\n if (entity) {\n interactionEntityMap.set(missingEntityIds[index], entity);\n }\n });\n }\n }\n\n // Format recent message interactions\n const getRecentMessageInteractions = async (\n recentInteractionsData: Memory[]\n ): Promise<string> => {\n // Format messages using the pre-fetched entities\n const formattedInteractions = recentInteractionsData.map((message) => {\n const isSelf = message.entityId === runtime.agentId;\n let sender: string;\n\n if (isSelf) {\n sender = runtime.character.name;\n } else {\n sender =\n (interactionEntityMap.get(message.entityId)?.metadata?.userName as string) ||\n 'unknown';\n }\n\n return `${sender}: ${message.content.text}`;\n });\n\n return formattedInteractions.join('\\n');\n };\n\n // Format recent post interactions\n const getRecentPostInteractions = async (\n recentInteractionsData: Memory[],\n entities: Entity[]\n ): Promise<string> => {\n // Combine pre-loaded entities with any other entities\n const combinedEntities = [...entities];\n\n // Add entities from interactionEntityMap that aren't already in entities\n const actorIds = new Set(entities.map((entity) => entity.id));\n for (const [id, entity] of interactionEntityMap.entries()) {\n if (!actorIds.has(id)) {\n combinedEntities.push(entity);\n }\n }\n\n const formattedInteractions = formatPosts({\n messages: recentInteractionsData,\n entities: combinedEntities,\n conversationHeader: true,\n });\n\n return formattedInteractions;\n };\n\n // Process both types of interactions in parallel\n const [recentMessageInteractions, recentPostInteractions] = await Promise.all([\n getRecentMessageInteractions(recentInteractionsData),\n getRecentPostInteractions(recentInteractionsData, entitiesData),\n ]);\n\n const data = {\n recentMessages: dialogueMessages,\n recentInteractions: recentInteractionsData,\n actionResults: actionResultMessages,\n };\n\n const values = {\n recentPosts,\n recentMessages,\n recentMessageInteractions,\n recentPostInteractions,\n recentInteractions: isPostFormat ? recentPostInteractions : recentMessageInteractions,\n recentActionResults: actionResultsText,\n recentMessage,\n };\n\n // Combine all text sections\n const text = [\n isPostFormat ? recentPosts : recentMessages,\n actionResultsText, // Include action results in the text output\n // Only add received message and focus headers if there are messages or a current message to process\n recentMessages || recentPosts || message.content.text ? receivedMessageHeader : '',\n recentMessages || recentPosts || message.content.text ? focusHeader : '',\n ]\n .filter(Boolean)\n .join('\\n\\n');\n\n return {\n data,\n values,\n text,\n };\n } catch (error) {\n logger.error({ src: 'plugin:bootstrap:provider:recent_messages', agentId: runtime.agentId, error: error instanceof Error ? error.message : String(error) }, 'Error in recentMessagesProvider');\n // Return a default state in case of error, similar to the empty message list\n return {\n data: {\n recentMessages: [],\n recentInteractions: [],\n actionResults: [],\n },\n values: {\n recentPosts: '',\n recentMessages: '',\n recentMessageInteractions: '',\n recentPostInteractions: '',\n recentInteractions: '',\n recentActionResults: '',\n },\n text: 'Error retrieving recent messages.', // Or 'No recent messages available' as the test expects\n };\n }\n },\n};\n",
|
|
39
|
+
"import type { Entity, IAgentRuntime, Memory, Provider, Relationship, UUID } from '@elizaos/core';\n\n/**\n * Escape a value for CSV output.\n * Wraps in quotes if contains comma, quote, or newline.\n */\nfunction csvEscape(value: string | number | null | undefined): string {\n if (value === null || value === undefined) return '';\n const str = String(value);\n if (str.includes(',') || str.includes('\"') || str.includes('\\n')) {\n return `\"${str.replace(/\"/g, '\"\"')}\"`;\n }\n return str;\n}\n\n/**\n * Formats relationships as CSV for token efficiency.\n * Format: name,interactions,tags\n *\n * @param {IAgentRuntime} runtime - The runtime instance\n * @param {Relationship[]} relationships - The relationships to format\n * @returns {Promise<string>} CSV formatted string\n */\nasync function formatRelationships(runtime: IAgentRuntime, relationships: Relationship[]) {\n // Sort relationships by interaction strength (descending)\n const sortedRelationships = relationships\n .filter((rel) => rel.metadata?.interactions)\n .sort(\n (a, b) =>\n ((b.metadata?.interactions as number | undefined) || 0) -\n ((a.metadata?.interactions as number | undefined) || 0)\n )\n .slice(0, 30); // Get top 30\n\n if (sortedRelationships.length === 0) {\n return '';\n }\n\n // Deduplicate target entity IDs to avoid redundant fetches\n const uniqueEntityIds = Array.from(\n new Set(sortedRelationships.map((rel) => rel.targetEntityId as UUID))\n );\n\n // Fetch all required entities in a single batch operation\n const entities = await Promise.all(uniqueEntityIds.map((id) => runtime.getEntityById(id)));\n\n // Create a lookup map for efficient access\n const entityMap = new Map<string, Entity | null>();\n entities.forEach((entity, index) => {\n if (entity) {\n entityMap.set(uniqueEntityIds[index], entity);\n }\n });\n\n // CSV header\n const rows: string[] = ['name,interactions,tags'];\n\n // Format relationships as CSV rows\n for (const rel of sortedRelationships) {\n const targetEntityId = rel.targetEntityId as UUID;\n const entity = entityMap.get(targetEntityId);\n\n if (!entity) continue;\n\n const name = entity.names[0] || 'Unknown';\n const interactions = (rel.metadata?.interactions as number) || 0;\n const tags = rel.tags?.join(';') || '';\n\n rows.push(`${csvEscape(name)},${interactions},${csvEscape(tags)}`);\n }\n\n return rows.join('\\n');\n}\n\n/**\n * Provider for fetching relationships data.\n *\n * @type {Provider}\n * @property {string} name - The name of the provider (\"RELATIONSHIPS\").\n * @property {string} description - Description of the provider.\n * @property {Function} get - Asynchronous function to fetch relationships data.\n * @param {IAgentRuntime} runtime - The agent runtime object.\n * @param {Memory} message - The message object containing entity ID.\n * @returns {Promise<Object>} Object containing relationships data or error message.\n */\nconst relationshipsProvider: Provider = {\n name: 'RELATIONSHIPS',\n description:\n 'Relationships between {{agentName}} and other people, or between other people that {{agentName}} has observed interacting with',\n dynamic: true,\n get: async (runtime: IAgentRuntime, message: Memory) => {\n // Get all relationships for the current user\n const relationships = await runtime.getRelationships({\n entityId: message.entityId,\n });\n\n if (!relationships || relationships.length === 0) {\n return {\n data: {\n relationships: [],\n },\n values: {\n relationships: 'No relationships found.',\n },\n text: 'No relationships found.',\n };\n }\n\n const formattedRelationships = await formatRelationships(runtime, relationships);\n\n if (!formattedRelationships) {\n return {\n data: {\n relationships: [],\n },\n values: {\n relationships: 'No relationships found.',\n },\n text: 'No relationships found.',\n };\n }\n\n const senderName = message.content.senderName || message.content.name || 'user';\n const header = `# Relationships (${relationships.length}) - ${senderName}'s connections`;\n\n return {\n data: {\n relationships: formattedRelationships,\n },\n values: {\n relationships: formattedRelationships,\n },\n text: `${header}\\n${formattedRelationships}`,\n };\n },\n};\n\nexport { relationshipsProvider };\n",
|
|
40
|
+
"import {\n ChannelType,\n createUniqueUuid,\n logger,\n type Entity,\n type IAgentRuntime,\n type Memory,\n type Provider,\n type ProviderResult,\n type State,\n type UUID,\n} from '@elizaos/core';\nimport { getCachedRoom, getCachedWorld } from './shared-cache';\n\n/** Reusable empty result for no role scenarios */\nconst NO_ROLES_RESULT: ProviderResult = {\n data: { roles: [] },\n values: { roles: 'No role information available for this server.' },\n text: 'No role information available for this server.',\n};\n\n/**\n * A provider for retrieving and formatting the role hierarchy in a server.\n * @type {Provider}\n */\nexport const roleProvider: Provider = {\n name: 'ROLES',\n description: 'Roles in the server, default are OWNER, ADMIN and MEMBER (as well as NONE)',\n get: async (runtime: IAgentRuntime, message: Memory, _state: State): Promise<ProviderResult> => {\n // Early validation - fail fast before any IO\n if (!message.roomId) {\n return NO_ROLES_RESULT;\n }\n\n // Use shared cache for room lookup - this ensures all providers share the same\n // in-flight promise and cached result, preventing redundant DB calls\n const room = await getCachedRoom(runtime, message.roomId);\n if (!room) {\n throw new Error('No room found');\n }\n\n // Early return for non-group contexts\n if (room.type !== ChannelType.GROUP) {\n return {\n data: { roles: [] },\n values: {\n roles: 'No access to role information in DMs, the role provider is only available in group scenarios.',\n },\n text: 'No access to role information in DMs, the role provider is only available in group scenarios.',\n };\n }\n\n const serverId = room.serverId ?? room.messageServerId;\n if (!serverId) {\n logger.warn({ src: 'plugin:bootstrap:provider:roles', agentId: runtime.agentId, roomId: room.id }, 'No server ID found for room');\n return {\n data: { roles: [] },\n values: { roles: 'No role information available - server ID not found.' },\n text: 'No role information available - server ID not found.',\n };\n }\n\n logger.info({ src: 'plugin:bootstrap:provider:roles', agentId: runtime.agentId, serverId }, 'Using server ID');\n\n // Get world data (with caching)\n const worldId = createUniqueUuid(runtime, serverId);\n const world = await getCachedWorld(runtime, worldId);\n\n if (!world || !world.metadata?.ownership?.ownerId) {\n logger.info(\n { src: 'plugin:bootstrap:provider:roles', agentId: runtime.agentId, serverId },\n 'No ownership data found for server, initializing empty role hierarchy'\n );\n return NO_ROLES_RESULT;\n }\n\n // Get roles from world metadata\n const roles = world.metadata.roles || {};\n const entityIds = Object.keys(roles) as UUID[];\n\n if (entityIds.length === 0) {\n logger.info({ src: 'plugin:bootstrap:provider:roles', agentId: runtime.agentId, serverId }, 'No roles found for server');\n return NO_ROLES_RESULT;\n }\n\n logger.info({ src: 'plugin:bootstrap:provider:roles', agentId: runtime.agentId, roleCount: entityIds.length }, 'Found roles');\n\n // Batch fetch all entities at once using runtime's batch method (single DB query)\n const entities = await runtime.getEntitiesByIds(entityIds);\n\n // Build entity map for O(1) lookup\n const entityMap = new Map<UUID, Entity>();\n if (entities) {\n for (const entity of entities) {\n if (entity.id) {\n entityMap.set(entity.id, entity);\n }\n }\n }\n\n // Use Set for O(1) duplicate checking instead of O(n) array.some()\n const seenUsernames = new Set<string>();\n\n // Group users by role\n const owners: { name: string; username: string; names: string[] }[] = [];\n const admins: { name: string; username: string; names: string[] }[] = [];\n const members: { name: string; username: string; names: string[] }[] = [];\n\n // Process roles using the pre-fetched entities\n for (const entityId of entityIds) {\n const userRole = roles[entityId];\n const user = entityMap.get(entityId);\n\n const name = user?.metadata?.name as string;\n const username = user?.metadata?.username as string;\n const userNames = user?.names as string[];\n\n // Skip if missing required fields\n if (!name || !username || !userNames) {\n logger.warn({ src: 'plugin:bootstrap:provider:roles', agentId: runtime.agentId, entityId }, 'User has no name or username, skipping');\n continue;\n }\n\n // Skip duplicates using Set (O(1) lookup)\n if (seenUsernames.has(username)) {\n continue;\n }\n seenUsernames.add(username);\n\n // Add to appropriate group\n const userData = { name, username, names: userNames };\n switch (userRole) {\n case 'OWNER':\n owners.push(userData);\n break;\n case 'ADMIN':\n admins.push(userData);\n break;\n default:\n members.push(userData);\n break;\n }\n }\n\n // Early return if no valid users found\n if (owners.length === 0 && admins.length === 0 && members.length === 0) {\n return NO_ROLES_RESULT;\n }\n\n // Format the response using string builder pattern\n const parts: string[] = ['# Server Role Hierarchy\\n'];\n\n if (owners.length > 0) {\n parts.push('## Owners');\n for (const owner of owners) {\n parts.push(`${owner.name} (${owner.names.join(', ')})`);\n }\n parts.push('');\n }\n\n if (admins.length > 0) {\n parts.push('## Administrators');\n for (const admin of admins) {\n parts.push(`${admin.name} (${admin.names.join(', ')}) (${admin.username})`);\n }\n parts.push('');\n }\n\n if (members.length > 0) {\n parts.push('## Members');\n for (const member of members) {\n parts.push(`${member.name} (${member.names.join(', ')}) (${member.username})`);\n }\n }\n\n const response = parts.join('\\n');\n\n return {\n data: { roles: response },\n values: { roles: response },\n text: response,\n };\n },\n};\n\nexport default roleProvider;\n",
|
|
41
|
+
"// File: /swarm/shared/settings/provider.ts\n// Updated to use shared cache module for better cross-provider caching\n\nimport {\n asUUID,\n ChannelType,\n findWorldsForOwner,\n logger,\n World,\n type IAgentRuntime,\n type Memory,\n type Provider,\n type ProviderResult,\n type Setting,\n type State,\n type WorldSettings,\n} from '@elizaos/core';\nimport {\n extractWorldSettings,\n getCachedRoom,\n getCachedWorld,\n getCachedSettingsByServerId,\n hasNoServerId,\n hasNoSettings,\n markNoServerId,\n markNoSettings,\n withTimeout,\n} from './shared-cache';\n\n// Timeout for DB operations to prevent 80+ second waits\nconst DB_TIMEOUT_MS = 5_000;\n\n/**\n * Formats a setting value for display, respecting privacy flags\n */\nconst formatSettingValue = (setting: Setting, isOnboarding: boolean): string => {\n if (setting.value === null) return 'Not set';\n if (setting.secret && !isOnboarding) return '****************';\n return String(setting.value);\n};\n\n/**\n * Generates a status message based on the current settings state\n */\nfunction generateStatusMessage(\n runtime: IAgentRuntime,\n worldSettings: WorldSettings,\n isOnboarding: boolean,\n state?: State\n): string {\n try {\n // Format settings for display\n const formattedSettings = Object.entries(worldSettings)\n .map(([key, setting]) => {\n if (typeof setting !== 'object' || !setting.name) return null;\n\n const description = setting.description || '';\n const usageDescription = setting.usageDescription || '';\n\n // Skip settings that should be hidden based on visibility function\n if (setting.visibleIf && !setting.visibleIf(worldSettings)) {\n return null;\n }\n\n return {\n key,\n name: setting.name,\n value: formatSettingValue(setting, isOnboarding),\n description,\n usageDescription,\n required: setting.required,\n configured: setting.value !== null,\n };\n })\n .filter(Boolean);\n\n // Count required settings that are not configured\n const requiredUnconfigured = formattedSettings.filter(\n (s) => s?.required && !s.configured\n ).length;\n\n // Generate appropriate message\n if (isOnboarding) {\n const settingsList = formattedSettings\n .map((s) => {\n const label = s?.required ? '(Required)' : '(Optional)';\n return `${s?.key}: ${s?.value} ${label}\\n(${s?.name}) ${s?.usageDescription}`;\n })\n .join('\\n\\n');\n\n const validKeys = `Valid setting keys: ${Object.keys(worldSettings).join(', ')}`;\n\n const commonInstructions = `Instructions for ${runtime.character.name}:\n - Only update settings if the user is clearly responding to a setting you are currently asking about.\n - If the user's reply clearly maps to a setting and a valid value, you **must** call the UPDATE_SETTINGS action with the correct key and value. Do not just respond with a message saying it's updated — it must be an action.\n - Never hallucinate settings or respond with values not listed above.\n - Do not call UPDATE_SETTINGS just because the user has started onboarding or you think a setting needs to be configured. Only update when the user clearly provides a specific value for a setting you are currently asking about.\n - Answer setting-related questions using only the name, description, and value from the list.`;\n\n if (requiredUnconfigured > 0) {\n return `# PRIORITY TASK: Onboarding with ${state?.senderName}\n\n ${runtime.character.name} needs to help the user configure ${requiredUnconfigured} required settings:\n \n ${settingsList}\n \n ${validKeys}\n \n ${commonInstructions}\n \n - Prioritize configuring required settings before optional ones.`;\n }\n\n return `All required settings have been configured. Here's the current configuration:\n \n ${settingsList}\n \n ${validKeys}\n \n ${commonInstructions}`;\n }\n\n // Non-onboarding context - list all public settings with values and descriptions\n return `## Current Configuration\\n\\n${\n requiredUnconfigured > 0\n ? `IMPORTANT!: ${requiredUnconfigured} required settings still need configuration. ${runtime.character.name} should get onboarded with the OWNER as soon as possible.\\n\\n`\n : 'All required settings are configured.\\n\\n'\n }${formattedSettings\n .map((s) => `### ${s?.name}\\n**Value:** ${s?.value}\\n**Description:** ${s?.description}`)\n .join('\\n\\n')}`;\n } catch (error) {\n logger.error({ src: 'plugin:bootstrap:provider:settings', agentId: runtime.agentId, error: error instanceof Error ? error.message : String(error) }, 'Error generating status message');\n return 'Error generating configuration status.';\n }\n}\n\n/**\n * Creates an settings provider with the given configuration\n * Updated to use world metadata instead of cache\n */\nexport const settingsProvider: Provider = {\n name: 'SETTINGS',\n description: 'Current settings for the server',\n get: async (runtime: IAgentRuntime, message: Memory, state?: State): Promise<ProviderResult> => {\n // Early validation - fail fast before any IO\n if (!message.roomId) {\n return {\n data: { settings: [] },\n values: { settings: 'Error: No room ID in message' },\n text: 'Error: No room ID in message',\n };\n }\n\n try {\n // Use shared cache for room lookup - this ensures all providers share the same\n // in-flight promise and cached result, preventing redundant DB calls\n const room = await getCachedRoom(runtime, message.roomId);\n\n if (!room) {\n logger.error({ src: 'plugin:bootstrap:provider:settings', agentId: runtime.agentId }, 'No room found for settings provider');\n return {\n data: {\n settings: [],\n },\n values: {\n settings: 'Error: Room not found',\n },\n text: 'Error: Room not found',\n };\n }\n\n if (!room.worldId) {\n logger.debug({ src: 'plugin:bootstrap:provider:settings', agentId: runtime.agentId }, 'No world found for settings provider -- settings provider will be skipped');\n return {\n data: {\n settings: [],\n },\n values: {\n settings: 'Room does not have a worldId -- settings provider will be skipped',\n },\n text: 'Room does not have a worldId -- settings provider will be skipped',\n };\n }\n\n const isOnboarding = room.type === ChannelType.DM;\n\n let world: World | null | undefined = null;\n let serverId: string | undefined = undefined;\n let worldSettings: WorldSettings | null = null;\n\n if (isOnboarding) {\n // Only fetch user worlds in onboarding mode (optimization: avoids unnecessary DB call in non-DM contexts)\n // Add timeout to prevent slow getAllWorlds() from blocking\n const userWorlds = await withTimeout(findWorldsForOwner(runtime, message.entityId), DB_TIMEOUT_MS, null);\n\n // In onboarding mode, use the user's world directly\n // Look for worlds with settings metadata, or create one if none exists\n world = userWorlds?.find((w) => w.metadata?.settings !== undefined);\n\n if (!world && userWorlds && userWorlds.length > 0) {\n // If user has worlds but none have settings, use the first one and initialize settings\n world = userWorlds[0];\n if (!world.metadata) {\n world.metadata = {};\n }\n world.metadata.settings = {};\n await runtime.updateWorld(world);\n logger.info({ src: 'plugin:bootstrap:provider:settings', agentId: runtime.agentId, worldId: world.id }, 'Initialized settings for user world');\n }\n\n if (!world) {\n logger.error({ src: 'plugin:bootstrap:provider:settings', agentId: runtime.agentId }, 'No world found for user during onboarding');\n throw new Error('No server ownership found for onboarding');\n }\n\n serverId = world.messageServerId;\n\n // Extract settings directly from the already-fetched world (avoids redundant DB call)\n if (serverId) {\n worldSettings = extractWorldSettings(world);\n }\n } else {\n // For non-onboarding, we need to get the world associated with the room\n const worldIdTyped = asUUID(room.worldId);\n\n // Fast path: Check if we already know this world has no serverId (shared across all agents)\n if (hasNoServerId(worldIdTyped)) {\n logger.debug({ src: 'plugin:bootstrap:provider:settings', agentId: runtime.agentId, worldId: room.worldId }, 'Skipping world with known no serverId (cached)');\n return {\n data: { settings: [] },\n values: { settings: 'Error: No configuration access' },\n text: 'Error: No configuration access',\n };\n }\n\n // Fast path: Check cross-agent cache using room's messageServerId (raw Discord guildId)\n // This allows agents to skip the world fetch entirely if another agent already cached settings\n const roomServerId = room.messageServerId ?? room.serverId;\n if (roomServerId) {\n // Check if this server is known to have no settings (cross-agent negative cache)\n if (hasNoSettings(roomServerId)) {\n logger.debug({ src: 'plugin:bootstrap:provider:settings', agentId: runtime.agentId, serverId: roomServerId }, 'Skipping server with known no settings (cross-agent cache)');\n return {\n data: { settings: [] },\n values: { settings: 'Configuration has not been completed yet.' },\n text: 'Configuration has not been completed yet.',\n };\n }\n\n // Check if another agent already fetched settings for this server\n const cachedSettings = getCachedSettingsByServerId(roomServerId);\n if (cachedSettings) {\n logger.debug({ src: 'plugin:bootstrap:provider:settings', agentId: runtime.agentId, serverId: roomServerId }, 'Using cross-agent cached settings');\n serverId = roomServerId;\n worldSettings = cachedSettings;\n }\n }\n\n // Only fetch world if we didn't get settings from cross-agent cache\n if (!worldSettings) {\n try {\n // Use cached world fetch with timeout\n world = await getCachedWorld(runtime, worldIdTyped);\n\n if (!world) {\n logger.error({ src: 'plugin:bootstrap:provider:settings', agentId: runtime.agentId, worldId: room.worldId }, 'No world found for room');\n throw new Error(`No world found for room ${room.worldId}`);\n }\n\n serverId = world.messageServerId;\n\n // Extract settings directly from the already-fetched world (avoids redundant DB call)\n // extractWorldSettings also caches by serverId for cross-agent benefit\n if (serverId) {\n worldSettings = extractWorldSettings(world);\n // Mark as no settings if none found (for cross-agent negative cache)\n if (!worldSettings) {\n markNoSettings(serverId);\n }\n } else {\n // Cache the fact that this world has no serverId to skip future lookups (shared across all agents)\n markNoServerId(worldIdTyped);\n logger.debug({ src: 'plugin:bootstrap:provider:settings', agentId: runtime.agentId, worldId: room.worldId }, 'No server ID found for world (marked for cache)');\n }\n } catch (error) {\n logger.error({ src: 'plugin:bootstrap:provider:settings', agentId: runtime.agentId, error: error instanceof Error ? error.message : String(error) }, 'Error processing world data');\n throw new Error('Failed to process world information');\n }\n }\n }\n\n // If no server found after recovery attempts\n if (!serverId) {\n logger.info(\n { src: 'plugin:bootstrap:provider:settings', agentId: runtime.agentId, entityId: message.entityId },\n 'No server ownership found for user after recovery attempt'\n );\n return isOnboarding\n ? {\n data: {\n settings: [],\n },\n values: {\n settings:\n \"The user doesn't appear to have ownership of any servers. They should make sure they're using the correct account.\",\n },\n text: \"The user doesn't appear to have ownership of any servers. They should make sure they're using the correct account.\",\n }\n : {\n data: {\n settings: [],\n },\n values: {\n settings: 'Error: No configuration access',\n },\n text: 'Error: No configuration access',\n };\n }\n\n if (!worldSettings) {\n logger.info({ src: 'plugin:bootstrap:provider:settings', agentId: runtime.agentId, serverId }, 'No settings state found for server');\n return isOnboarding\n ? {\n data: {\n settings: [],\n },\n values: {\n settings:\n \"The user doesn't appear to have any settings configured for this server. They should configure some settings for this server.\",\n },\n text: \"The user doesn't appear to have any settings configured for this server. They should configure some settings for this server.\",\n }\n : {\n data: {\n settings: [],\n },\n values: {\n settings: 'Configuration has not been completed yet.',\n },\n text: 'Configuration has not been completed yet.',\n };\n }\n\n // Generate the status message based on the settings\n const output = generateStatusMessage(runtime, worldSettings, isOnboarding, state);\n\n return {\n data: {\n settings: worldSettings,\n },\n values: {\n settings: output,\n },\n text: output,\n };\n } catch (error) {\n logger.error({ src: 'plugin:bootstrap:provider:settings', agentId: runtime.agentId, error: error instanceof Error ? error.message : String(error) }, 'Critical error in settings provider');\n return {\n data: {\n settings: [],\n },\n values: {\n settings: 'Error retrieving configuration information. Please try again later.',\n },\n text: 'Error retrieving configuration information. Please try again later.',\n };\n }\n },\n};\n",
|
|
41
42
|
"import type { IAgentRuntime, Memory, Provider } from '@elizaos/core';\n\n/**\n * Time provider function that retrieves the current date and time in UTC\n * for use in time-based operations or responses.\n *\n * @param _runtime - The runtime environment of the bot agent.\n * @param _message - The memory object containing message data.\n * @returns An object containing the current date and time data, human-readable date and time string,\n * and a text response with the current date and time information.\n */\n/**\n * Represents a time provider for retrieving current date and time information.\n * @type {Provider}\n */\nexport const timeProvider: Provider = {\n name: 'TIME',\n get: async (_runtime: IAgentRuntime, _message: Memory) => {\n const currentDate = new Date();\n\n // Get UTC time since bots will be communicating with users around the global\n const options = {\n timeZone: 'UTC',\n dateStyle: 'full' as const,\n timeStyle: 'long' as const,\n };\n const humanReadable = new Intl.DateTimeFormat('en-US', options).format(currentDate);\n return {\n data: {\n time: currentDate,\n },\n values: {\n time: humanReadable,\n },\n text: `The current date and time is ${humanReadable}. Please use this as your reference for any time-based operations or responses.`,\n };\n },\n};\n",
|
|
42
|
-
"import {\n type IAgentRuntime,\n type Memory,\n type Provider,\n logger,\n addHeader,\n ChannelType,\n} from '@elizaos/core';\n\n/**\n * Provider that exposes relevant world/environment information to agents.\n * Includes details like channel list, world name, and other world metadata.\n */\nexport const worldProvider: Provider = {\n name: 'WORLD',\n description: 'World and environment information',\n dynamic: true,\n\n get: async (runtime: IAgentRuntime, message: Memory) => {\n try {\n logger.debug(\n {\n src: 'plugin:bootstrap:provider:world',\n agentId: runtime.agentId,\n roomId: message.roomId,\n },\n 'World provider activated'\n );\n\n // Get the current room from the message\n const currentRoom = await runtime.getRoom(message.roomId);\n\n if (!currentRoom) {\n logger.warn(\n {\n src: 'plugin:bootstrap:provider:world',\n agentId: runtime.agentId,\n roomId: message.roomId,\n },\n 'Room not found'\n );\n return {\n data: {\n world: {\n info: 'Unable to retrieve world information - room not found',\n },\n },\n text: 'Unable to retrieve world information - room not found',\n };\n }\n\n logger.debug(\n {\n src: 'plugin:bootstrap:provider:world',\n agentId: runtime.agentId,\n roomName: currentRoom.name,\n roomType: currentRoom.type,\n },\n 'Found room'\n );\n\n // Get the world for the current room\n const worldId = currentRoom.worldId;\n\n if (!worldId) {\n logger.warn(\n {\n src: 'plugin:bootstrap:provider:world',\n agentId: runtime.agentId,\n roomId: message.roomId,\n },\n 'World ID not found'\n );\n return {\n data: {\n world: {\n info: 'Unable to retrieve world information - world ID not found',\n },\n },\n text: 'Unable to retrieve world information - world ID not found',\n };\n }\n\n const world = await runtime.getWorld(worldId);\n\n if (!world) {\n logger.warn(\n { src: 'plugin:bootstrap:provider:world', agentId: runtime.agentId, worldId },\n 'World not found'\n );\n return {\n data: {\n world: {\n info: 'Unable to retrieve world information - world not found',\n },\n },\n text: 'Unable to retrieve world information - world not found',\n };\n }\n\n logger.debug(\n {\n src: 'plugin:bootstrap:provider:world',\n agentId: runtime.agentId,\n worldName: world.name,\n worldId: world.id,\n },\n 'Found world'\n );\n\n //
|
|
43
|
+
"import {\n type IAgentRuntime,\n type Memory,\n type Provider,\n logger,\n addHeader,\n ChannelType,\n} from '@elizaos/core';\n\n/**\n * Provider that exposes relevant world/environment information to agents.\n * Includes details like channel list, world name, and other world metadata.\n */\nexport const worldProvider: Provider = {\n name: 'WORLD',\n description: 'World and environment information',\n dynamic: true,\n\n get: async (runtime: IAgentRuntime, message: Memory) => {\n try {\n logger.debug(\n {\n src: 'plugin:bootstrap:provider:world',\n agentId: runtime.agentId,\n roomId: message.roomId,\n },\n 'World provider activated'\n );\n\n // Get the current room from the message\n const currentRoom = await runtime.getRoom(message.roomId);\n\n if (!currentRoom) {\n logger.warn(\n {\n src: 'plugin:bootstrap:provider:world',\n agentId: runtime.agentId,\n roomId: message.roomId,\n },\n 'Room not found'\n );\n return {\n data: {\n world: {\n info: 'Unable to retrieve world information - room not found',\n },\n },\n text: 'Unable to retrieve world information - room not found',\n };\n }\n\n logger.debug(\n {\n src: 'plugin:bootstrap:provider:world',\n agentId: runtime.agentId,\n roomName: currentRoom.name,\n roomType: currentRoom.type,\n },\n 'Found room'\n );\n\n // Get the world for the current room\n const worldId = currentRoom.worldId;\n\n if (!worldId) {\n logger.warn(\n {\n src: 'plugin:bootstrap:provider:world',\n agentId: runtime.agentId,\n roomId: message.roomId,\n },\n 'World ID not found'\n );\n return {\n data: {\n world: {\n info: 'Unable to retrieve world information - world ID not found',\n },\n },\n text: 'Unable to retrieve world information - world ID not found',\n };\n }\n\n const world = await runtime.getWorld(worldId);\n\n if (!world) {\n logger.warn(\n { src: 'plugin:bootstrap:provider:world', agentId: runtime.agentId, worldId },\n 'World not found'\n );\n return {\n data: {\n world: {\n info: 'Unable to retrieve world information - world not found',\n },\n },\n text: 'Unable to retrieve world information - world not found',\n };\n }\n\n logger.debug(\n {\n src: 'plugin:bootstrap:provider:world',\n agentId: runtime.agentId,\n worldName: world.name,\n worldId: world.id,\n },\n 'Found world'\n );\n\n // Parallelize the database operations - these don't depend on each other\n // This improves performance by fetching rooms and participants simultaneously\n const [worldRooms, participants] = await Promise.all([\n runtime.getRooms(worldId),\n runtime.getParticipantsForRoom(message.roomId),\n ]);\n \n logger.debug(\n {\n src: 'plugin:bootstrap:provider:world',\n agentId: runtime.agentId,\n roomCount: worldRooms.length,\n worldName: world.name,\n },\n 'Found rooms in world'\n );\n logger.debug(\n {\n src: 'plugin:bootstrap:provider:world',\n agentId: runtime.agentId,\n participantCount: participants.length,\n roomName: currentRoom.name,\n },\n 'Found participants in room'\n );\n\n // Format rooms by type\n type RoomInfo = {\n id: string;\n name: string;\n isCurrentChannel: boolean;\n type?: string;\n };\n\n const channelsByType: Record<string, RoomInfo[]> = {\n text: [],\n voice: [],\n dm: [],\n feed: [],\n thread: [],\n other: [],\n };\n\n // Categorize rooms by type\n for (const room of worldRooms) {\n if (!room?.id || !room.name) {\n logger.warn(\n { src: 'plugin:bootstrap:provider:world', agentId: runtime.agentId, roomId: room?.id },\n 'Room ID or name is missing'\n );\n continue; // Skip if room is null or undefined\n }\n const roomInfo: RoomInfo = {\n id: room.id,\n name: room.name,\n isCurrentChannel: room.id === message.roomId,\n };\n\n // Group channels by their purpose\n if (\n room.type === ChannelType.GROUP ||\n room.type === ChannelType.WORLD ||\n room.type === ChannelType.FORUM\n ) {\n channelsByType.text.push(roomInfo);\n } else if (room.type === ChannelType.VOICE_GROUP || room.type === ChannelType.VOICE_DM) {\n channelsByType.voice.push(roomInfo);\n } else if (room.type === ChannelType.DM || room.type === ChannelType.SELF) {\n channelsByType.dm.push(roomInfo);\n } else if (room.type === ChannelType.FEED) {\n channelsByType.feed.push(roomInfo);\n } else if (room.type === ChannelType.THREAD) {\n channelsByType.thread.push(roomInfo);\n } else {\n channelsByType.other.push({\n ...roomInfo,\n type: room.type,\n });\n }\n }\n\n // Create formatted text for display\n const worldInfoText = [\n `# World: ${world.name}`,\n `Current Channel: ${currentRoom.name} (${currentRoom.type})`,\n `Total Channels: ${worldRooms.length}`,\n `Participants in current channel: ${participants.length}`,\n '',\n `Text channels: ${channelsByType.text.length}`,\n `Voice channels: ${channelsByType.voice.length}`,\n `DM channels: ${channelsByType.dm.length}`,\n `Feed channels: ${channelsByType.feed.length}`,\n `Thread channels: ${channelsByType.thread.length}`,\n `Other channels: ${channelsByType.other.length}`,\n ].join('\\n');\n\n // Build the world information object with formatted data\n const data = {\n world: {\n id: world.id,\n name: world.name,\n messageServerId: world.messageServerId,\n metadata: world.metadata || {},\n currentRoom: {\n id: currentRoom.id,\n name: currentRoom.name,\n type: currentRoom.type,\n channelId: currentRoom.channelId,\n participantCount: participants.length,\n },\n channels: channelsByType,\n channelStats: {\n total: worldRooms.length,\n text: channelsByType.text.length,\n voice: channelsByType.voice.length,\n dm: channelsByType.dm.length,\n feed: channelsByType.feed.length,\n thread: channelsByType.thread.length,\n other: channelsByType.other.length,\n },\n },\n };\n\n const values = {\n worldName: world.name,\n currentChannelName: currentRoom.name,\n worldInfo: worldInfoText,\n };\n\n // Use addHeader like in entitiesProvider\n const formattedText = addHeader('# World Information', worldInfoText);\n\n logger.debug(\n { src: 'plugin:bootstrap:provider:world', agentId: runtime.agentId },\n 'World provider completed successfully'\n );\n\n return {\n data,\n values,\n text: formattedText,\n };\n } catch (error) {\n logger.error(\n {\n src: 'plugin:bootstrap:provider:world',\n agentId: runtime.agentId,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Error in world provider'\n );\n return {\n data: {\n world: {\n info: 'Error retrieving world information',\n error: error instanceof Error ? error.message : 'Unknown error',\n },\n },\n text: 'Error retrieving world information',\n };\n }\n },\n};\n\nexport default worldProvider;\n",
|
|
44
|
+
"/**\n * Plugin Information Providers for Bootstrap Plugin\n *\n * Two dynamic providers:\n * 1. bootstrapInstructionsProvider - Usage instructions for the agent/LLM\n * 2. bootstrapSettingsProvider - Current configuration (non-sensitive)\n */\n\nimport type { IAgentRuntime, Provider, ProviderResult, Memory, State } from '@elizaos/core';\n\n/**\n * Instructions Provider\n */\nexport const bootstrapInstructionsProvider: Provider = {\n name: 'bootstrapInstructions',\n description: 'Instructions and capabilities for the bootstrap (core) plugin',\n dynamic: true,\n\n get: async (_runtime: IAgentRuntime, _message: Memory, _state: State): Promise<ProviderResult> => {\n const instructions = `\n# Bootstrap Plugin Capabilities\n\n## What This Plugin Does\n\nThe bootstrap plugin provides essential agent capabilities. It's the foundation that enables basic agent functionality.\n\n## Core Actions\n\n### Communication\n- **REPLY**: Respond to messages (primary communication action)\n- **SEND_MESSAGE**: Send a message to a specific room/channel\n- **IGNORE**: Explicitly ignore a message (no response)\n- **NONE**: Take no action\n\n### Room Management\n- **FOLLOW_ROOM**: Start following a room's messages\n- **UNFOLLOW_ROOM**: Stop following a room\n- **MUTE_ROOM**: Temporarily mute notifications from a room\n- **UNMUTE_ROOM**: Restore notifications for a room\n\n### Entity & Role Management\n- **UPDATE_ENTITY**: Update information about an entity/user\n- **UPDATE_ROLE**: Change role/permissions for an entity\n- **UPDATE_SETTINGS**: Modify configuration settings\n\n### Content\n- **GENERATE_IMAGE**: Create images using AI models\n- **CHOICE**: Present options for user selection\n\n## Core Providers\n\nThe bootstrap plugin provides essential context:\n- **TIME**: Current date and time\n- **ENTITIES**: Information about participants\n- **RELATIONSHIPS**: Connection between entities\n- **FACTS**: Known facts about the conversation\n- **RECENT_MESSAGES**: Recent conversation history\n- **CHARACTER**: Agent's personality and traits\n- **ACTIONS**: Available actions\n- **PROVIDERS**: Available data providers\n\n## Event Handling\n\nBootstrap handles key events:\n- Message received/sent\n- Reactions\n- Entity joins/leaves\n- World connections\n- Action lifecycle (start/complete)\n- Run lifecycle (start/end/timeout)\n\n## Best Practices\n\n1. **REPLY for conversations**: Use REPLY for normal responses\n2. **IGNORE intentionally**: Use IGNORE when staying silent is appropriate\n3. **Room awareness**: Follow relevant rooms, mute noisy ones\n4. **Entity context**: Use entity info for personalization\n`;\n\n return {\n text: instructions.trim(),\n data: {\n pluginName: 'bootstrap',\n isCore: true,\n },\n };\n },\n};\n\n/**\n * Settings Provider\n */\nexport const bootstrapSettingsProvider: Provider = {\n name: 'bootstrapSettings',\n description: 'Current bootstrap plugin configuration (non-sensitive)',\n dynamic: true,\n\n get: async (runtime: IAgentRuntime, _message: Memory, _state: State): Promise<ProviderResult> => {\n // Check configurable settings\n const alwaysRespondChannels = runtime.getSetting('ALWAYS_RESPOND_CHANNELS') || '';\n const alwaysRespondSources = runtime.getSetting('ALWAYS_RESPOND_SOURCES') || '';\n\n const settings = {\n pluginEnabled: true,\n agentName: runtime.character?.name || 'Agent',\n hasCustomRespondChannels: !!alwaysRespondChannels,\n hasCustomRespondSources: !!alwaysRespondSources,\n };\n\n const text = `\n# Bootstrap Plugin Settings\n\n## Plugin Status\n- **Status**: Enabled (Core Plugin)\n- **Agent**: ${settings.agentName}\n\n## Response Configuration\n- **Custom Respond Channels**: ${settings.hasCustomRespondChannels ? 'Configured' : 'Using defaults'}\n- **Custom Respond Sources**: ${settings.hasCustomRespondSources ? 'Configured' : 'Using defaults'}\n\n## Default Behavior\n- Always responds in DMs and API calls\n- Responds when mentioned or replied to\n- Uses LLM evaluation for other messages\n`;\n\n return {\n text: text.trim(),\n data: settings,\n values: {\n pluginEnabled: 'true',\n isCore: 'true',\n },\n };\n },\n};\n\n",
|
|
43
45
|
"// registered to runtime through plugin\n\nimport {\n Service,\n ServiceType,\n type IAgentRuntime,\n type Memory,\n type State,\n type Task,\n} from '@elizaos/core';\n\n/**\n * TaskService class representing a service that schedules and executes tasks.\n * @extends Service\n * @property {NodeJS.Timeout|null} timer - Timer for executing tasks\n * @property {number} TICK_INTERVAL - Interval in milliseconds to check for tasks\n * @property {ServiceTypeName} serviceType - Service type of TASK\n * @property {string} capabilityDescription - Description of the service's capability\n * @static\n * @method start - Static method to start the TaskService\n * @method createTestTasks - Method to create test tasks\n * @method startTimer - Private method to start the timer for checking tasks\n * @method validateTasks - Private method to validate tasks\n * @method checkTasks - Private method to check tasks and execute them\n * @method executeTask - Private method to execute a task\n * @static\n * @method stop - Static method to stop the TaskService\n * @method stop - Method to stop the TaskService\n */\n/**\n * Start the TaskService with the given runtime.\n * @param {IAgentRuntime} runtime - The runtime for the TaskService.\n */\nexport class TaskService extends Service {\n private timer: NodeJS.Timeout | null = null;\n private readonly TICK_INTERVAL = 1000; // Check every second\n static serviceType = ServiceType.TASK;\n capabilityDescription = 'The agent is able to schedule and execute tasks';\n\n /**\n * Start the TaskService with the given runtime.\n * @param {IAgentRuntime} runtime - The runtime for the TaskService.\n * @returns {Promise<Service>} A promise that resolves with the TaskService instance.\n */\n static async start(runtime: IAgentRuntime): Promise<Service> {\n const service = new TaskService(runtime);\n await service.startTimer();\n // await service.createTestTasks();\n return service;\n }\n\n /**\n * Asynchronously creates test tasks by registering task workers for repeating and one-time tasks,\n * validates the tasks, executes the tasks, and creates the tasks if they do not already exist.\n */\n async createTestTasks() {\n // Register task worker for repeating task\n this.runtime.registerTaskWorker({\n name: 'REPEATING_TEST_TASK',\n validate: async (_runtime, _message, _state) => {\n this.runtime.logger.debug(\n { src: 'plugin:bootstrap:service:task', agentId: this.runtime.agentId },\n 'Validating repeating test task'\n );\n return true;\n },\n execute: async (_runtime, _options) => {\n this.runtime.logger.debug(\n { src: 'plugin:bootstrap:service:task', agentId: this.runtime.agentId },\n 'Executing repeating test task'\n );\n },\n });\n\n // Register task worker for one-time task\n this.runtime.registerTaskWorker({\n name: 'ONETIME_TEST_TASK',\n validate: async (_runtime, _message, _state) => {\n this.runtime.logger.debug(\n { src: 'plugin:bootstrap:service:task', agentId: this.runtime.agentId },\n 'Validating one-time test task'\n );\n return true;\n },\n execute: async (_runtime, _options) => {\n this.runtime.logger.debug(\n { src: 'plugin:bootstrap:service:task', agentId: this.runtime.agentId },\n 'Executing one-time test task'\n );\n },\n });\n\n // check if the task exists\n const tasks = await this.runtime.getTasksByName('REPEATING_TEST_TASK');\n\n if (tasks.length === 0) {\n // Create repeating task\n await this.runtime.createTask({\n name: 'REPEATING_TEST_TASK',\n description: 'A test task that repeats every minute',\n metadata: {\n updatedAt: Date.now(), // Use timestamp instead of Date object\n updateInterval: 1000 * 60, // 1 minute\n },\n tags: ['queue', 'repeat', 'test'],\n });\n }\n\n // Create one-time task\n await this.runtime.createTask({\n name: 'ONETIME_TEST_TASK',\n description: 'A test task that runs once',\n metadata: {\n updatedAt: Date.now(),\n },\n tags: ['queue', 'test'],\n });\n }\n\n /**\n * Starts a timer that runs a function to check tasks at a specified interval.\n */\n private startTimer() {\n if (this.timer) {\n clearInterval(this.timer);\n }\n\n this.timer = setInterval(async () => {\n try {\n await this.checkTasks();\n } catch (error) {\n this.runtime.logger.error(\n {\n src: 'plugin:bootstrap:service:task',\n agentId: this.runtime.agentId,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Error in task timer'\n );\n }\n }, this.TICK_INTERVAL) as NodeJS.Timeout;\n }\n\n /**\n * Validates an array of Task objects.\n * Skips tasks without IDs or if no worker is found for the task.\n * If a worker has a `validate` function, it will run the validation using the `runtime`, `Memory`, and `State` parameters.\n * If the validation fails, the task will be skipped and the error will be logged.\n * @param {Task[]} tasks - An array of Task objects to validate.\n * @returns {Promise<Task[]>} - A Promise that resolves with an array of validated Task objects.\n */\n private async validateTasks(tasks: Task[]): Promise<Task[]> {\n const validatedTasks: Task[] = [];\n\n for (const task of tasks) {\n // Skip tasks without IDs\n if (!task.id) {\n continue;\n }\n\n const worker = this.runtime.getTaskWorker(task.name);\n\n // Skip if no worker found for task\n if (!worker) {\n continue;\n }\n\n // If worker has validate function, run validation\n if (worker.validate) {\n try {\n // Pass empty message and state since validation is time-based\n const isValid = await worker.validate(this.runtime, {} as Memory, {} as State);\n if (!isValid) {\n continue;\n }\n } catch (error) {\n this.runtime.logger.error(\n {\n src: 'plugin:bootstrap:service:task',\n agentId: this.runtime.agentId,\n taskName: task.name,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Error validating task'\n );\n continue;\n }\n }\n\n validatedTasks.push(task);\n }\n\n return validatedTasks;\n }\n\n /**\n * Asynchronous method that checks tasks with \"queue\" tag, validates and sorts them, then executes them based on interval and tags.\n *\n * @returns {Promise<void>} Promise that resolves once all tasks are checked and executed\n */\n private async checkTasks() {\n try {\n // Get all tasks with \"queue\" tag\n const allTasks = await this.runtime.getTasks({\n tags: ['queue'],\n });\n\n if (!allTasks) {\n return;\n }\n\n // validate the tasks and sort them\n const tasks = await this.validateTasks(allTasks);\n\n const now = Date.now();\n\n for (const task of tasks) {\n // First check task.updatedAt (for newer task format)\n // Then fall back to task.metadata.updatedAt (for older tasks)\n // Finally default to 0 if neither exists\n let taskStartTime: number;\n\n // if tags does not contain \"repeat\", execute immediately\n if (!task.tags?.includes('repeat')) {\n // does not contain repeat\n await this.executeTask(task);\n continue;\n }\n\n if (typeof task.updatedAt === 'number') {\n taskStartTime = task.updatedAt;\n } else if (task.metadata?.updatedAt && typeof task.metadata.updatedAt === 'number') {\n taskStartTime = task.metadata.updatedAt;\n } else if (task.updatedAt) {\n taskStartTime = new Date(task.updatedAt).getTime();\n } else {\n taskStartTime = 0; // Default to immediate execution if no timestamp found\n }\n\n // Get updateInterval from metadata\n const updateIntervalMs = task.metadata?.updateInterval ?? 0; // update immediately\n\n // if tags does not contain \"repeat\", execute immediately\n if (!task.tags?.includes('repeat')) {\n await this.executeTask(task);\n continue;\n }\n\n if (task.metadata?.updatedAt === task.metadata?.createdAt) {\n if (task.tags?.includes('immediate')) {\n this.runtime.logger.debug(\n {\n src: 'plugin:bootstrap:service:task',\n agentId: this.runtime.agentId,\n taskName: task.name,\n },\n 'Immediately running task'\n );\n await this.executeTask(task);\n continue;\n }\n }\n\n // Check if enough time has passed since last update\n if (now - taskStartTime >= updateIntervalMs) {\n this.runtime.logger.debug(\n {\n src: 'plugin:bootstrap:service:task',\n agentId: this.runtime.agentId,\n taskName: task.name,\n intervalMs: updateIntervalMs,\n },\n 'Executing task - interval elapsed'\n );\n await this.executeTask(task);\n }\n }\n } catch (error) {\n this.runtime.logger.error(\n {\n src: 'plugin:bootstrap:service:task',\n agentId: this.runtime.agentId,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Error checking tasks'\n );\n }\n }\n\n /**\n * Executes a given task asynchronously.\n *\n * @param {Task} task - The task to be executed.\n */\n private async executeTask(task: Task) {\n try {\n if (!task || !task.id) {\n this.runtime.logger.debug(\n { src: 'plugin:bootstrap:service:task', agentId: this.runtime.agentId },\n 'Task not found'\n );\n return;\n }\n\n const worker = this.runtime.getTaskWorker(task.name);\n if (!worker) {\n this.runtime.logger.debug(\n {\n src: 'plugin:bootstrap:service:task',\n agentId: this.runtime.agentId,\n taskName: task.name,\n },\n 'No worker found for task type'\n );\n return;\n }\n\n // Handle repeating vs non-repeating tasks\n if (task.tags?.includes('repeat')) {\n // For repeating tasks, update the updatedAt timestamp\n await this.runtime.updateTask(task.id, {\n metadata: {\n ...task.metadata,\n updatedAt: Date.now(),\n },\n });\n this.runtime.logger.debug(\n {\n src: 'plugin:bootstrap:service:task',\n agentId: this.runtime.agentId,\n taskName: task.name,\n taskId: task.id,\n },\n 'Updated repeating task with new timestamp'\n );\n }\n\n this.runtime.logger.debug(\n {\n src: 'plugin:bootstrap:service:task',\n agentId: this.runtime.agentId,\n taskName: task.name,\n taskId: task.id,\n },\n 'Executing task'\n );\n await worker.execute(this.runtime, task.metadata || {}, task);\n //this.runtime.logger.debug('task.tags are', task.tags);\n\n // Handle repeating vs non-repeating tasks\n if (!task.tags?.includes('repeat')) {\n // For non-repeating tasks, delete the task after execution\n await this.runtime.deleteTask(task.id);\n this.runtime.logger.debug(\n {\n src: 'plugin:bootstrap:service:task',\n agentId: this.runtime.agentId,\n taskName: task.name,\n taskId: task.id,\n },\n 'Deleted non-repeating task after execution'\n );\n }\n } catch (error) {\n this.runtime.logger.error(\n {\n src: 'plugin:bootstrap:service:task',\n agentId: this.runtime.agentId,\n taskId: task.id,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Error executing task'\n );\n }\n }\n\n /**\n * Stops the TASK service in the given agent runtime.\n *\n * @param {IAgentRuntime} runtime - The agent runtime containing the service.\n * @returns {Promise<void>} - A promise that resolves once the service has been stopped.\n */\n static async stop(runtime: IAgentRuntime) {\n const service = runtime.getService(ServiceType.TASK);\n if (service) {\n await service.stop();\n }\n }\n\n /**\n * Stops the timer if it is currently running.\n */\n\n async stop() {\n if (this.timer) {\n clearInterval(this.timer);\n this.timer = null;\n }\n }\n}\n",
|
|
44
|
-
"import {\n type IAgentRuntime,\n type Memory,\n Service,\n EventType,\n ModelType,\n type EmbeddingGenerationPayload,\n} from '@elizaos/core';\n\ninterface EmbeddingQueueItem {\n memory: Memory;\n priority: 'high' | 'normal' | 'low';\n retryCount: number;\n maxRetries: number;\n addedAt: number;\n runId?: string;\n}\n\n/**\n * Service responsible for generating embeddings asynchronously\n * This service listens for EMBEDDING_GENERATION_REQUESTED events\n * and processes them in a queue to avoid blocking the main runtime\n */\nexport class EmbeddingGenerationService extends Service {\n static serviceType = 'embedding-generation';\n capabilityDescription = 'Handles asynchronous embedding generation for memories';\n\n private queue: EmbeddingQueueItem[] = [];\n private isProcessing = false;\n private processingInterval: NodeJS.Timeout | null = null;\n private maxQueueSize = 1000;\n private batchSize = 10; // Process up to 10 embeddings at a time\n private processingIntervalMs = 100; // Check queue every 100ms\n private isDisabled = false; // Flag to indicate if service is disabled due to missing embedding model\n\n static async start(runtime: IAgentRuntime): Promise<Service> {\n runtime.logger.info(\n { src: 'plugin:bootstrap:service:embedding', agentId: runtime.agentId },\n 'Starting embedding generation service'\n );\n\n // Check if TEXT_EMBEDDING model is registered\n const embeddingModel = runtime.getModel(ModelType.TEXT_EMBEDDING);\n if (!embeddingModel) {\n runtime.logger.warn(\n { src: 'plugin:bootstrap:service:embedding', agentId: runtime.agentId },\n 'No TEXT_EMBEDDING model registered - service will not be initialized'\n );\n // Return a no-op service that does nothing\n const noOpService = new EmbeddingGenerationService(runtime);\n noOpService.isDisabled = true;\n return noOpService;\n }\n\n const service = new EmbeddingGenerationService(runtime);\n await service.initialize();\n return service;\n }\n\n async initialize(): Promise<void> {\n if (this.isDisabled) {\n this.runtime.logger.debug(\n { src: 'plugin:bootstrap:service:embedding', agentId: this.runtime.agentId },\n 'Service is disabled, skipping initialization'\n );\n return;\n }\n\n this.runtime.logger.info(\n { src: 'plugin:bootstrap:service:embedding', agentId: this.runtime.agentId },\n 'Initializing embedding generation service'\n );\n\n // Register event handlers\n this.runtime.registerEvent(\n EventType.EMBEDDING_GENERATION_REQUESTED,\n this.handleEmbeddingRequest.bind(this)\n );\n\n // Start the processing loop\n this.startProcessing();\n }\n\n private async handleEmbeddingRequest(payload: EmbeddingGenerationPayload): Promise<void> {\n // Skip if service is disabled\n if (this.isDisabled) {\n this.runtime.logger.debug(\n { src: 'plugin:bootstrap:service:embedding', agentId: this.runtime.agentId },\n 'Service is disabled, skipping embedding request'\n );\n return;\n }\n\n const { memory, priority = 'normal', retryCount = 0, maxRetries = 3, runId } = payload;\n\n // Skip if memory already has embeddings\n if (memory.embedding) {\n this.runtime.logger.debug(\n {\n src: 'plugin:bootstrap:service:embedding',\n agentId: this.runtime.agentId,\n memoryId: memory.id,\n },\n 'Memory already has embeddings, skipping'\n );\n return;\n }\n\n // Check queue size and make room if needed\n if (this.queue.length >= this.maxQueueSize) {\n this.runtime.logger.warn(\n {\n src: 'plugin:bootstrap:service:embedding',\n agentId: this.runtime.agentId,\n queueSize: this.queue.length,\n maxSize: this.maxQueueSize,\n },\n 'Queue is full, making room'\n );\n this.makeRoomInQueue();\n }\n\n // Add to queue\n const queueItem: EmbeddingQueueItem = {\n memory,\n priority,\n retryCount,\n maxRetries,\n addedAt: Date.now(),\n runId,\n };\n\n // Insert based on priority\n this.insertItemByPriority(queueItem);\n\n this.runtime.logger.debug(\n {\n src: 'plugin:bootstrap:service:embedding',\n agentId: this.runtime.agentId,\n queueSize: this.queue.length,\n },\n 'Added memory to queue'\n );\n }\n\n /**\n * Make room in the queue by removing items based on priority and age\n * Removes 10% of the queue (minimum 1, maximum 10 items)\n */\n private makeRoomInQueue(): void {\n // Remove 10% of queue, but at least 1 and at most 10 items\n const tenPercent = Math.floor(this.maxQueueSize * 0.1);\n const itemsToRemove = Math.min(10, Math.max(1, tenPercent));\n\n // Create array with items and their original indices\n const itemsWithIndex = this.queue.map((item, index) => ({ item, originalIndex: index }));\n\n // Sort by priority (low first for removal) and age (oldest first)\n itemsWithIndex.sort((a, b) => {\n // Priority order for removal: low > normal > high\n const priorityOrder = { low: 0, normal: 1, high: 2 };\n const priorityDiff = priorityOrder[a.item.priority] - priorityOrder[b.item.priority];\n\n if (priorityDiff !== 0) {\n return priorityDiff;\n }\n\n // Within same priority, remove older items first\n return a.item.addedAt - b.item.addedAt;\n });\n\n // Get the original indices of items to remove (first N items after sorting)\n const indicesToRemove = new Set(\n itemsWithIndex\n .slice(0, Math.min(itemsToRemove, itemsWithIndex.length))\n .map(({ originalIndex }) => originalIndex)\n );\n\n // Keep items that are not in the removal set\n const newQueue = this.queue.filter((_, index) => !indicesToRemove.has(index));\n const removedCount = this.queue.length - newQueue.length;\n\n this.queue = newQueue;\n\n this.runtime.logger.info(\n {\n src: 'plugin:bootstrap:service:embedding',\n agentId: this.runtime.agentId,\n removedCount,\n newSize: this.queue.length,\n },\n 'Removed items from queue'\n );\n }\n\n /**\n * Insert an item into the queue based on its priority\n * High priority items go to the front, normal in the middle, low at the end\n */\n private insertItemByPriority(queueItem: EmbeddingQueueItem): void {\n if (queueItem.priority === 'high') {\n // Find the position after the last high priority item\n let insertIndex = 0;\n for (let i = 0; i < this.queue.length; i++) {\n if (this.queue[i].priority !== 'high') {\n break;\n }\n insertIndex = i + 1;\n }\n this.queue.splice(insertIndex, 0, queueItem);\n } else if (queueItem.priority === 'low') {\n // Add to end of queue\n this.queue.push(queueItem);\n } else {\n // Normal priority - add after high priority items but before low priority items\n let insertIndex = 0;\n\n // First, skip all high priority items\n for (let i = 0; i < this.queue.length; i++) {\n if (this.queue[i].priority !== 'high') {\n insertIndex = i;\n break;\n }\n insertIndex = i + 1;\n }\n\n // Then find where low priority items start\n for (let i = insertIndex; i < this.queue.length; i++) {\n if (this.queue[i].priority === 'low') {\n insertIndex = i;\n break;\n }\n insertIndex = i + 1;\n }\n\n this.queue.splice(insertIndex, 0, queueItem);\n }\n }\n\n private startProcessing(): void {\n if (this.isDisabled) {\n this.runtime.logger.debug(\n { src: 'plugin:bootstrap:service:embedding', agentId: this.runtime.agentId },\n 'Service is disabled, not starting processing loop'\n );\n return;\n }\n\n if (this.processingInterval) {\n return;\n }\n\n this.processingInterval = setInterval(async () => {\n if (!this.isProcessing && this.queue.length > 0) {\n await this.processQueue();\n }\n }, this.processingIntervalMs);\n\n this.runtime.logger.info(\n { src: 'plugin:bootstrap:service:embedding', agentId: this.runtime.agentId },\n 'Started processing loop'\n );\n }\n\n private async processQueue(): Promise<void> {\n if (this.isProcessing || this.queue.length === 0) {\n return;\n }\n\n this.isProcessing = true;\n\n try {\n // Process a batch of items\n const batch = this.queue.splice(0, Math.min(this.batchSize, this.queue.length));\n\n this.runtime.logger.debug(\n {\n src: 'plugin:bootstrap:service:embedding',\n agentId: this.runtime.agentId,\n batchSize: batch.length,\n remaining: this.queue.length,\n },\n 'Processing batch'\n );\n\n // Process items in parallel\n const promises = batch.map(async (item) => {\n try {\n await this.generateEmbedding(item);\n } catch (error) {\n this.runtime.logger.error(\n {\n src: 'plugin:bootstrap:service:embedding',\n agentId: this.runtime.agentId,\n memoryId: item.memory.id,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Error processing item'\n );\n\n // Retry if under max retries\n if (item.retryCount < item.maxRetries) {\n item.retryCount++;\n // Re-add to queue with same priority using proper insertion\n this.insertItemByPriority(item);\n this.runtime.logger.debug(\n {\n src: 'plugin:bootstrap:service:embedding',\n agentId: this.runtime.agentId,\n retryCount: item.retryCount,\n maxRetries: item.maxRetries,\n },\n 'Re-queued item for retry'\n );\n } else {\n // Log embedding failure\n await this.runtime.log({\n entityId: this.runtime.agentId,\n roomId: item.memory.roomId || this.runtime.agentId,\n type: 'embedding_event',\n body: {\n runId: item.runId,\n memoryId: item.memory.id,\n status: 'failed',\n error: error instanceof Error ? error.message : String(error),\n source: 'embeddingService',\n },\n });\n\n // Emit failure event\n await this.runtime.emitEvent(EventType.EMBEDDING_GENERATION_FAILED, {\n runtime: this.runtime,\n memory: item.memory,\n error: error instanceof Error ? error.message : String(error),\n source: 'embeddingService',\n });\n }\n }\n });\n\n await Promise.all(promises);\n } finally {\n this.isProcessing = false;\n }\n }\n\n private async generateEmbedding(item: EmbeddingQueueItem): Promise<void> {\n const { memory } = item;\n\n if (!memory.content?.text) {\n this.runtime.logger.warn(\n {\n src: 'plugin:bootstrap:service:embedding',\n agentId: this.runtime.agentId,\n memoryId: memory.id,\n },\n 'Memory has no text content'\n );\n return;\n }\n\n try {\n const startTime = Date.now();\n\n // Generate embedding\n const embedding = await this.runtime.useModel(ModelType.TEXT_EMBEDDING, {\n text: memory.content.text,\n });\n\n const duration = Date.now() - startTime;\n this.runtime.logger.debug(\n {\n src: 'plugin:bootstrap:service:embedding',\n agentId: this.runtime.agentId,\n memoryId: memory.id,\n durationMs: duration,\n },\n 'Generated embedding'\n );\n\n // Update memory with embedding\n if (memory.id) {\n await this.runtime.updateMemory({\n id: memory.id,\n embedding: embedding as number[],\n });\n\n // Log embedding completion\n await this.runtime.log({\n entityId: this.runtime.agentId,\n roomId: memory.roomId || this.runtime.agentId,\n type: 'embedding_event',\n body: {\n runId: item.runId,\n memoryId: memory.id,\n status: 'completed',\n duration,\n source: 'embeddingService',\n },\n });\n\n // Emit completion event\n await this.runtime.emitEvent(EventType.EMBEDDING_GENERATION_COMPLETED, {\n runtime: this.runtime,\n memory: { ...memory, embedding },\n source: 'embeddingService',\n });\n }\n } catch (error) {\n this.runtime.logger.error(\n {\n src: 'plugin:bootstrap:service:embedding',\n agentId: this.runtime.agentId,\n memoryId: memory.id,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Failed to generate embedding'\n );\n throw error; // Re-throw to trigger retry logic\n }\n }\n\n async stop(): Promise<void> {\n this.runtime.logger.info(\n { src: 'plugin:bootstrap:service:embedding', agentId: this.runtime.agentId },\n 'Stopping embedding generation service'\n );\n\n if (this.isDisabled) {\n this.runtime.logger.debug(\n { src: 'plugin:bootstrap:service:embedding', agentId: this.runtime.agentId },\n 'Service is disabled, nothing to stop'\n );\n return;\n }\n\n if (this.processingInterval) {\n clearInterval(this.processingInterval);\n this.processingInterval = null;\n }\n\n // Process remaining high priority items before shutdown\n const highPriorityItems = this.queue.filter((item) => item.priority === 'high');\n if (highPriorityItems.length > 0) {\n this.runtime.logger.info(\n {\n src: 'plugin:bootstrap:service:embedding',\n agentId: this.runtime.agentId,\n count: highPriorityItems.length,\n },\n 'Processing high priority items before shutdown'\n );\n for (const item of highPriorityItems) {\n try {\n await this.generateEmbedding(item);\n } catch (error) {\n this.runtime.logger.error(\n {\n src: 'plugin:bootstrap:service:embedding',\n agentId: this.runtime.agentId,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Error during shutdown processing'\n );\n }\n }\n }\n\n this.runtime.logger.info(\n {\n src: 'plugin:bootstrap:service:embedding',\n agentId: this.runtime.agentId,\n remainingItems: this.queue.length,\n },\n 'Stopped'\n );\n }\n\n // Public methods for monitoring\n getQueueSize(): number {\n return this.queue.length;\n }\n\n getQueueStats(): { high: number; normal: number; low: number; total: number } {\n const stats = {\n high: 0,\n normal: 0,\n low: 0,\n total: this.queue.length,\n };\n\n for (const item of this.queue) {\n stats[item.priority]++;\n }\n\n return stats;\n }\n\n clearQueue(): void {\n const size = this.queue.length;\n this.queue = [];\n this.runtime.logger.info(\n {\n src: 'plugin:bootstrap:service:embedding',\n agentId: this.runtime.agentId,\n clearedCount: size,\n },\n 'Cleared queue'\n );\n }\n}\n\nexport default EmbeddingGenerationService;\n"
|
|
46
|
+
"import {\n type IAgentRuntime,\n type Memory,\n Service,\n EventType,\n ModelType,\n type EmbeddingGenerationPayload,\n} from '@elizaos/core';\n\ninterface EmbeddingQueueItem {\n memory: Memory;\n priority: 'high' | 'normal' | 'low';\n retryCount: number;\n maxRetries: number;\n addedAt: number;\n runId?: string;\n}\n\n/**\n * Service responsible for generating embeddings asynchronously\n * This service listens for EMBEDDING_GENERATION_REQUESTED events\n * and processes them in a queue to avoid blocking the main runtime\n */\nexport class EmbeddingGenerationService extends Service {\n static serviceType = 'embedding-generation';\n capabilityDescription = 'Handles asynchronous embedding generation for memories';\n\n private queue: EmbeddingQueueItem[] = [];\n private isProcessing = false;\n private processingInterval: NodeJS.Timeout | null = null;\n private maxQueueSize = 1000;\n private batchSize = 10; // Process up to 10 embeddings at a time\n private processingIntervalMs = 100; // Check queue every 100ms\n private isDisabled = false; // Flag to indicate if service is disabled due to missing embedding model\n\n static async start(runtime: IAgentRuntime): Promise<Service> {\n runtime.logger.info(\n { src: 'plugin:bootstrap:service:embedding', agentId: runtime.agentId },\n 'Starting embedding generation service'\n );\n\n // Check if TEXT_EMBEDDING model is registered\n const embeddingModel = runtime.getModel(ModelType.TEXT_EMBEDDING);\n if (!embeddingModel) {\n runtime.logger.warn(\n { src: 'plugin:bootstrap:service:embedding', agentId: runtime.agentId },\n 'No TEXT_EMBEDDING model registered - service will not be initialized'\n );\n // Return a no-op service that does nothing\n const noOpService = new EmbeddingGenerationService(runtime);\n noOpService.isDisabled = true;\n return noOpService;\n }\n\n const service = new EmbeddingGenerationService(runtime);\n await service.initialize();\n return service;\n }\n\n async initialize(): Promise<void> {\n if (this.isDisabled) {\n this.runtime.logger.debug(\n { src: 'plugin:bootstrap:service:embedding', agentId: this.runtime.agentId },\n 'Service is disabled, skipping initialization'\n );\n return;\n }\n\n this.runtime.logger.info(\n { src: 'plugin:bootstrap:service:embedding', agentId: this.runtime.agentId },\n 'Initializing embedding generation service'\n );\n\n // Register event handlers\n this.runtime.registerEvent(\n EventType.EMBEDDING_GENERATION_REQUESTED,\n this.handleEmbeddingRequest.bind(this)\n );\n\n // Start the processing loop\n this.startProcessing();\n }\n\n private async handleEmbeddingRequest(payload: EmbeddingGenerationPayload): Promise<void> {\n // Skip if service is disabled\n if (this.isDisabled) {\n this.runtime.logger.debug(\n { src: 'plugin:bootstrap:service:embedding', agentId: this.runtime.agentId },\n 'Service is disabled, skipping embedding request'\n );\n return;\n }\n\n const { memory, priority = 'normal', retryCount = 0, maxRetries = 3, runId } = payload;\n\n // Skip if memory already has embeddings\n if (memory.embedding) {\n this.runtime.logger.debug(\n {\n src: 'plugin:bootstrap:service:embedding',\n agentId: this.runtime.agentId,\n memoryId: memory.id,\n },\n 'Memory already has embeddings, skipping'\n );\n return;\n }\n\n // Check queue size and make room if needed\n if (this.queue.length >= this.maxQueueSize) {\n this.runtime.logger.warn(\n {\n src: 'plugin:bootstrap:service:embedding',\n agentId: this.runtime.agentId,\n queueSize: this.queue.length,\n maxSize: this.maxQueueSize,\n },\n 'Queue is full, making room'\n );\n this.makeRoomInQueue();\n }\n\n // Add to queue\n const queueItem: EmbeddingQueueItem = {\n memory,\n priority,\n retryCount,\n maxRetries,\n addedAt: Date.now(),\n runId,\n };\n\n // Insert based on priority\n this.insertItemByPriority(queueItem);\n\n this.runtime.logger.debug(\n {\n src: 'plugin:bootstrap:service:embedding',\n agentId: this.runtime.agentId,\n queueSize: this.queue.length,\n },\n 'Added memory to queue'\n );\n }\n\n /**\n * Make room in the queue by removing items based on priority and age\n * Removes 10% of the queue (minimum 1, maximum 10 items)\n */\n private makeRoomInQueue(): void {\n // Remove 10% of queue, but at least 1 and at most 10 items\n const tenPercent = Math.floor(this.maxQueueSize * 0.1);\n const itemsToRemove = Math.min(10, Math.max(1, tenPercent));\n\n // Create array with items and their original indices\n const itemsWithIndex = this.queue.map((item, index) => ({ item, originalIndex: index }));\n\n // Sort by priority (low first for removal) and age (oldest first)\n itemsWithIndex.sort((a, b) => {\n // Priority order for removal: low > normal > high\n const priorityOrder = { low: 0, normal: 1, high: 2 };\n const priorityDiff = priorityOrder[a.item.priority] - priorityOrder[b.item.priority];\n\n if (priorityDiff !== 0) {\n return priorityDiff;\n }\n\n // Within same priority, remove older items first\n return a.item.addedAt - b.item.addedAt;\n });\n\n // Get the original indices of items to remove (first N items after sorting)\n const indicesToRemove = new Set(\n itemsWithIndex\n .slice(0, Math.min(itemsToRemove, itemsWithIndex.length))\n .map(({ originalIndex }) => originalIndex)\n );\n\n // Keep items that are not in the removal set\n const newQueue = this.queue.filter((_, index) => !indicesToRemove.has(index));\n const removedCount = this.queue.length - newQueue.length;\n\n this.queue = newQueue;\n\n this.runtime.logger.info(\n {\n src: 'plugin:bootstrap:service:embedding',\n agentId: this.runtime.agentId,\n removedCount,\n newSize: this.queue.length,\n },\n 'Removed items from queue'\n );\n }\n\n /**\n * Insert an item into the queue based on its priority\n * High priority items go to the front, normal in the middle, low at the end\n */\n private insertItemByPriority(queueItem: EmbeddingQueueItem): void {\n if (queueItem.priority === 'high') {\n // Find the position after the last high priority item\n let insertIndex = 0;\n for (let i = 0; i < this.queue.length; i++) {\n if (this.queue[i].priority !== 'high') {\n break;\n }\n insertIndex = i + 1;\n }\n this.queue.splice(insertIndex, 0, queueItem);\n } else if (queueItem.priority === 'low') {\n // Add to end of queue\n this.queue.push(queueItem);\n } else {\n // Normal priority - add after high priority items but before low priority items\n let insertIndex = 0;\n\n // First, skip all high priority items\n for (let i = 0; i < this.queue.length; i++) {\n if (this.queue[i].priority !== 'high') {\n insertIndex = i;\n break;\n }\n insertIndex = i + 1;\n }\n\n // Then find where low priority items start\n for (let i = insertIndex; i < this.queue.length; i++) {\n if (this.queue[i].priority === 'low') {\n insertIndex = i;\n break;\n }\n insertIndex = i + 1;\n }\n\n this.queue.splice(insertIndex, 0, queueItem);\n }\n }\n\n private startProcessing(): void {\n if (this.isDisabled) {\n this.runtime.logger.debug(\n { src: 'plugin:bootstrap:service:embedding', agentId: this.runtime.agentId },\n 'Service is disabled, not starting processing loop'\n );\n return;\n }\n\n if (this.processingInterval) {\n return;\n }\n\n this.processingInterval = setInterval(async () => {\n if (!this.isProcessing && this.queue.length > 0) {\n await this.processQueue();\n }\n }, this.processingIntervalMs);\n\n this.runtime.logger.info(\n { src: 'plugin:bootstrap:service:embedding', agentId: this.runtime.agentId },\n 'Started processing loop'\n );\n }\n\n private async processQueue(): Promise<void> {\n if (this.isProcessing || this.queue.length === 0) {\n return;\n }\n\n this.isProcessing = true;\n\n try {\n // Process a batch of items\n const batch = this.queue.splice(0, Math.min(this.batchSize, this.queue.length));\n\n this.runtime.logger.debug(\n {\n src: 'plugin:bootstrap:service:embedding',\n agentId: this.runtime.agentId,\n batchSize: batch.length,\n remaining: this.queue.length,\n },\n 'Processing batch'\n );\n\n // Process items in parallel\n const promises = batch.map(async (item) => {\n try {\n await this.generateEmbedding(item);\n } catch (error) {\n this.runtime.logger.error(\n {\n src: 'plugin:bootstrap:service:embedding',\n agentId: this.runtime.agentId,\n memoryId: item.memory.id,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Error processing item'\n );\n\n // Retry if under max retries\n if (item.retryCount < item.maxRetries) {\n item.retryCount++;\n // Re-add to queue with same priority using proper insertion\n this.insertItemByPriority(item);\n this.runtime.logger.debug(\n {\n src: 'plugin:bootstrap:service:embedding',\n agentId: this.runtime.agentId,\n retryCount: item.retryCount,\n maxRetries: item.maxRetries,\n },\n 'Re-queued item for retry'\n );\n } else {\n // Log embedding failure\n await this.runtime.log({\n entityId: this.runtime.agentId,\n roomId: item.memory.roomId || this.runtime.agentId,\n type: 'embedding_event',\n body: {\n runId: item.runId,\n memoryId: item.memory.id,\n status: 'failed',\n error: error instanceof Error ? error.message : String(error),\n source: 'embeddingService',\n },\n });\n\n // Emit failure event\n await this.runtime.emitEvent(EventType.EMBEDDING_GENERATION_FAILED, {\n runtime: this.runtime,\n memory: item.memory,\n error: error instanceof Error ? error.message : String(error),\n source: 'embeddingService',\n });\n }\n }\n });\n\n await Promise.all(promises);\n } finally {\n this.isProcessing = false;\n }\n }\n\n private async generateEmbedding(item: EmbeddingQueueItem): Promise<void> {\n const { memory } = item;\n\n if (!memory.content?.text) {\n this.runtime.logger.warn(\n {\n src: 'plugin:bootstrap:service:embedding',\n agentId: this.runtime.agentId,\n memoryId: memory.id,\n },\n 'Memory has no text content'\n );\n return;\n }\n\n try {\n const startTime = Date.now();\n\n // Generate embedding\n const embedding = await this.runtime.useModel(ModelType.TEXT_EMBEDDING, {\n text: memory.content.text,\n });\n\n const duration = Date.now() - startTime;\n this.runtime.logger.debug(\n {\n src: 'plugin:bootstrap:service:embedding',\n agentId: this.runtime.agentId,\n memoryId: memory.id,\n durationMs: duration,\n },\n 'Generated embedding'\n );\n\n // Update memory with embedding\n if (memory.id) {\n await this.runtime.updateMemory({\n id: memory.id,\n embedding: embedding as number[],\n });\n\n // Log embedding completion\n await this.runtime.log({\n entityId: this.runtime.agentId,\n roomId: memory.roomId || this.runtime.agentId,\n type: 'embedding_event',\n body: {\n runId: item.runId,\n memoryId: memory.id,\n status: 'completed',\n duration,\n source: 'embeddingService',\n },\n });\n\n // Emit completion event\n await this.runtime.emitEvent(EventType.EMBEDDING_GENERATION_COMPLETED, {\n runtime: this.runtime,\n memory: { ...memory, embedding },\n source: 'embeddingService',\n });\n }\n } catch (error) {\n this.runtime.logger.error(\n {\n src: 'plugin:bootstrap:service:embedding',\n agentId: this.runtime.agentId,\n memoryId: memory.id,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Failed to generate embedding'\n );\n throw error; // Re-throw to trigger retry logic\n }\n }\n\n async stop(): Promise<void> {\n this.runtime.logger.info(\n { src: 'plugin:bootstrap:service:embedding', agentId: this.runtime.agentId },\n 'Stopping embedding generation service'\n );\n\n if (this.isDisabled) {\n this.runtime.logger.debug(\n { src: 'plugin:bootstrap:service:embedding', agentId: this.runtime.agentId },\n 'Service is disabled, nothing to stop'\n );\n return;\n }\n\n if (this.processingInterval) {\n clearInterval(this.processingInterval);\n this.processingInterval = null;\n }\n\n // Process remaining high priority items before shutdown\n const highPriorityItems = this.queue.filter((item) => item.priority === 'high');\n if (highPriorityItems.length > 0) {\n this.runtime.logger.info(\n {\n src: 'plugin:bootstrap:service:embedding',\n agentId: this.runtime.agentId,\n count: highPriorityItems.length,\n },\n 'Processing high priority items before shutdown'\n );\n for (const item of highPriorityItems) {\n try {\n await this.generateEmbedding(item);\n } catch (error) {\n this.runtime.logger.error(\n {\n src: 'plugin:bootstrap:service:embedding',\n agentId: this.runtime.agentId,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Error during shutdown processing'\n );\n }\n }\n }\n\n this.runtime.logger.info(\n {\n src: 'plugin:bootstrap:service:embedding',\n agentId: this.runtime.agentId,\n remainingItems: this.queue.length,\n },\n 'Stopped'\n );\n }\n\n // Public methods for monitoring\n getQueueSize(): number {\n return this.queue.length;\n }\n\n getQueueStats(): { high: number; normal: number; low: number; total: number } {\n const stats = {\n high: 0,\n normal: 0,\n low: 0,\n total: this.queue.length,\n };\n\n for (const item of this.queue) {\n stats[item.priority]++;\n }\n\n return stats;\n }\n\n clearQueue(): void {\n const size = this.queue.length;\n this.queue = [];\n this.runtime.logger.info(\n {\n src: 'plugin:bootstrap:service:embedding',\n agentId: this.runtime.agentId,\n clearedCount: size,\n },\n 'Cleared queue'\n );\n }\n}\n\nexport default EmbeddingGenerationService;\n",
|
|
47
|
+
"/**\n * Beautiful plugin settings banner with custom ASCII art\n * Bootstrap Plugin - The foundation of every elizaOS agent\n */\n\nimport type { IAgentRuntime } from '@elizaos/core';\n\n// Bootstrap: Teal/Startup theme - unique palette\nconst ANSI = {\n reset: '\\x1b[0m',\n bold: '\\x1b[1m',\n dim: '\\x1b[2m',\n teal: '\\x1b[31m',\n tealBright: '\\x1b[37m',\n mint: '\\x1b[37m',\n brightGreen: '\\x1b[92m',\n brightYellow: '\\x1b[93m',\n brightMagenta: '\\x1b[95m',\n brightWhite: '\\x1b[97m',\n brightRed: '\\x1b[91m',\n brightBlue: '\\x1b[94m',\n};\n\nexport interface PluginSetting {\n name: string;\n value: unknown;\n defaultValue?: unknown;\n sensitive?: boolean;\n required?: boolean;\n}\n\nexport interface BannerOptions {\n runtime: IAgentRuntime;\n settings?: PluginSetting[];\n}\n\nfunction mask(v: string): string {\n if (!v || v.length < 8) return '••••••••';\n return `${v.slice(0, 4)}${'•'.repeat(Math.min(12, v.length - 8))}${v.slice(-4)}`;\n}\n\nfunction fmtVal(value: unknown, sensitive: boolean, maxLen: number): string {\n let s: string;\n if (value === undefined || value === null || value === '') {\n s = '(not set)';\n } else if (sensitive) {\n s = mask(String(value));\n } else {\n s = String(value);\n }\n if (s.length > maxLen) s = s.slice(0, maxLen - 3) + '...';\n return s;\n}\n\nfunction isDef(v: unknown, d: unknown): boolean {\n if (v === undefined || v === null || v === '') return true;\n return d !== undefined && v === d;\n}\n\nfunction pad(s: string, n: number): string {\n const len = s.replace(/\\x1b\\[[0-9;]*m/g, '').length;\n if (len >= n) return s;\n return s + ' '.repeat(n - len);\n}\n\nfunction line(content: string): string {\n const stripped = content.replace(/\\x1b\\[[0-9;]*m/g, '');\n const len = stripped.length;\n if (len > 78) return content.slice(0, 78);\n return content + ' '.repeat(78 - len);\n}\n\nexport function printBanner(options: BannerOptions): void {\n const { settings = [], runtime } = options;\n const R = ANSI.reset, D = ANSI.dim, B = ANSI.bold;\n const C = ANSI.teal, c2 = ANSI.tealBright, M = ANSI.mint;\n const G = ANSI.brightGreen, Y = ANSI.brightYellow;\n\n const top = `${C}╔${'═'.repeat(78)}╗${R}`;\n const mid = `${C}╠${'═'.repeat(78)}╣${R}`;\n const bot = `${C}╚${'═'.repeat(78)}╝${R}`;\n const row = (s: string) => `${C}║${R}${line(s)}${C}║${R}`;\n\n const lines: string[] = [''];\n lines.push(top);\n lines.push(row(` ${B}Character: ${runtime.character.name}${R}`));\n lines.push(mid);\n\n // Bootstrap - 3D Isometric Shadow Font with pyramid icon\n lines.push(row(`${c2} ____ __ __ ${M} ▲${R}`));\n lines.push(row(`${c2} / __ ) ____ ____ ____/ /_ _____ / /_ _____ ____ _ ____ ${M} /▲\\\\${R}`));\n lines.push(row(`${c2} / __ |/ __ \\\\ / __ \\\\/ __ __// ___/ / __// ___// __ '// __ \\\\${M} / ▲ \\\\${R}`));\n lines.push(row(`${c2} / /_/ // /_/ // /_/ / /_/ /_ (__ ) / /_ / / / /_/ // /_/ /${M} / ▲ \\\\${R}`));\n lines.push(row(`${c2}/_____/ \\\\____/ \\\\____/\\\\__,___//____/ \\\\__//_/ \\\\__,_// .___/ ${M}/___▲___\\\\${R}`));\n lines.push(row(`${D} ${c2}/_/${R}`));\n lines.push(row(``));\n lines.push(row(`${M} Agent Foundation • Actions • Evaluators • Providers${R}`));\n lines.push(mid);\n\n if (settings.length > 0) {\n const NW = 32, VW = 28, SW = 8;\n lines.push(row(` ${B}${pad('ENV VARIABLE', NW)} ${pad('VALUE', VW)} ${pad('STATUS', SW)}${R}`));\n lines.push(row(` ${D}${'-'.repeat(NW)} ${'-'.repeat(VW)} ${'-'.repeat(SW)}${R}`));\n\n for (const s of settings) {\n const def = isDef(s.value, s.defaultValue);\n const set = s.value !== undefined && s.value !== null && s.value !== '';\n\n let ico: string, st: string;\n if (!set && s.required) {\n ico = `${ANSI.brightRed}◆${R}`;\n st = `${ANSI.brightRed}REQUIRED${R}`;\n } else if (!set) {\n ico = `${D}○${R}`;\n st = `${D}default${R}`;\n } else if (def) {\n ico = `${ANSI.brightBlue}●${R}`;\n st = `${ANSI.brightBlue}default${R}`;\n } else {\n ico = `${G}✓${R}`;\n st = `${G}custom${R}`;\n }\n\n const name = pad(s.name, NW - 2);\n const val = pad(fmtVal(s.value ?? s.defaultValue, s.sensitive ?? false, VW), VW);\n const status = pad(st, SW);\n lines.push(row(` ${ico} ${c2}${name}${R} ${val} ${status}`));\n }\n\n lines.push(mid);\n lines.push(row(` ${D}${G}✓${D} custom ${ANSI.brightBlue}●${D} default ○ unset ${ANSI.brightRed}◆${D} required → Set in .env${R}`));\n } else {\n lines.push(row(` ${G}▸${R} ${Y}Actions${R} reply, sendMessage, followRoom, muteRoom, generateImage...`));\n lines.push(row(` ${G}▸${R} ${Y}Evaluators${R} reflection, memory consolidation, learning`));\n lines.push(row(` ${G}▸${R} ${Y}Providers${R} time, entities, facts, relationships, attachments...`));\n lines.push(row(` ${G}▸${R} ${Y}Services${R} TaskService, EmbeddingGenerationService`));\n lines.push(mid);\n lines.push(row(` ${D}The foundation that gives every elizaOS agent its core capabilities${R}`));\n }\n\n lines.push(bot);\n lines.push('');\n\n runtime.logger.info(lines.join('\\n'));\n}\n"
|
|
45
48
|
],
|
|
46
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;EAAA,IAAM,IAAE,QAAG;AAAA,IAAC,KAAE,cAAY,MAAG,KAAG;AAAA,IAAE,IAAI,KAAE,KAAK,KAAK,KAAE,OAAI,IAAG,IAAE,EAAC;AAAA,IAAE,OAAO,KAAE,KAAE,KAAK,KAAK,KAAE,OAAI,GAAE,KAAG,EAAC,IAAE,MAAI,KAAE,OAAI,QAAM,KAAG;AAAA;AAAA;AAAA,EAAY,MAAM,EAAC;AAAA,IAAC,WAAW,CAAC,IAAE;AAAA,MAAC,KAAK,eAAkB,WAAE,KAAK,SAAY,WAAE,KAAK,YAAe,WAAE,KAAK,QAAW,WAAE,KAAK,OAAU;AAAA,MAAE,QAAM,QAAO,IAAE,WAAU,IAAE,cAAa,GAAE,OAAM,GAAE,MAAK,MAAG;AAAA,MAAE,KAAK,eAAa,GAAE,KAAK,YAAU,IAAE,KAAK,SAAO,IAAE,KAAK,QAAM,GAAE,KAAK,OAAK;AAAA;AAAA,IAAE,QAAQ,GAAE;AAAA,MAAC,IAAG,CAAC,KAAK;AAAA,QAAa,MAAM,IAAI,MAAM,qHAAqH;AAAA,MAAE,IAAG,KAAK,UAAQ;AAAA,QAAE,MAAM,IAAI,MAAM,yBAAyB;AAAA,MAAE,IAAG,KAAK,SAAO,KAAK,aAAa;AAAA,QAAO,MAAM,IAAI,MAAM;AAAA,mBAAkF,KAAK,4CAA4C,KAAK,aAAa,QAAQ;AAAA,MAAE,IAAI,KAAE,KAAK;AAAA,MAAK,OAAO,KAAK,aAAa,MAAM,GAAE,KAAK,MAAM,EAAE,OAAO,CAAC,IAAE,MAAI;AAAA,QAAC,IAAI;AAAA,QAAE,MAAG,KAAG,QAAG;AAAA,UAAC,IAAa,OAAO,MAAjB,UAAmB;AAAA,YAAC,MAAM,KAAE,GAAE,MAAM,EAAE,EAAE,IAAI,QAAG,GAAE,WAAW,CAAC,CAAC,EAAE,OAAO,CAAC,IAAE,OAAI,KAAE,IAAE,CAAC,GAAE,KAAE,KAAK,MAAM,OAAO,EAAC,CAAC;AAAA,YAAE,OAAO,EAAE,EAAC;AAAA,UAAC;AAAA,UAAC,OAAO,EAAE,EAAC;AAAA,WAAI,EAAC,GAAE,KAAE,aAAW,KAAG,IAAE,KAAK,OAAO;AAAA,QAAE,IAAI,IAAE,EAAE,KAAK,MAAM,IAAE,EAAE,MAAM,MAAI;AAAA,QAAG,IAAiB,KAAK,UAAnB;AAAA,UAAyB,IAAE,EAAE,YAAY;AAAA,QAAO,SAAe,KAAK,UAAjB,WAAuB;AAAA,UAAC,OAAM,OAAK,MAAG,EAAE,MAAM,EAAE;AAAA,UAAE,IAAE,GAAE,YAAY,IAAE,GAAE,KAAK,EAAE;AAAA,QAAC,EAAK;AAAA,UAAc,KAAK,UAAnB,gBAA2B,IAAE,EAAE,YAAY;AAAA,QAAG,OAAO,KAAE,GAAG,KAAI,KAAK,YAAY,MAAI,GAAG;AAAA,SAAK,EAAE;AAAA;AAAA,EAAE;AAAA,EAAC,IAAM,IAAE,EAAC,WAAU,KAAI,cAAa,CAAC,EAAC;AAAA,EAAU,2BAAiB,MAAK;AAAA,WAAQ,QAAQ,CAAC,KAAE,CAAC,GAAE;AAAA,MAAC,IAAI,KAAE,GAAE,OAAK,GAAE,KAAE,GAAE,OAAK;AAAA,MAAI,IAAG,GAAE,QAAO;AAAA,QAAC,MAAM,IAAE,KAAK,IAAI,IAAG,GAAE,MAAM;AAAA,QAAE,OAAO,KAAE,IAAE,IAAG,KAAE,IAAE,GAAE,CAAC,GAAG,KAAK,MAAM,KAAK,OAAO,KAAG,KAAE,GAAE,IAAE,IAAG;AAAA,MAAC;AAAA,MAAC,OAAM,CAAC,GAAG,KAAK,MAAM,KAAK,OAAO,KAAG,KAAE,GAAE,IAAE,IAAG;AAAA;AAAA,EAAE,GAAU,qBAAW,CAAC,QAAO,SAAQ,UAAS,YAAW,YAAW,YAAW,YAAW,cAAa,YAAW,cAAa,YAAW,WAAU,UAAS,UAAS,SAAQ,SAAQ,cAAa,YAAW,YAAW,kBAAiB,YAAW,YAAW,WAAU,YAAW,aAAY,UAAS,aAAY,cAAa,aAAY,UAAS,gBAAe,SAAQ,SAAQ,WAAU,UAAS,SAAQ,WAAU,eAAc,WAAU,WAAU,aAAY,UAAS,WAAU,SAAQ,WAAU,UAAS,aAAY,WAAU,aAAY,YAAW,cAAa,eAAc,aAAY,iBAAgB,SAAQ,YAAW,cAAa,YAAW,WAAU,UAAS,aAAY,cAAa,UAAS,cAAa,aAAY,cAAa,aAAY,WAAU,SAAQ,SAAQ,SAAQ,WAAU,QAAO,OAAM,YAAW,QAAO,SAAQ,aAAY,cAAa,UAAS,cAAa,OAAM,WAAU,cAAa,UAAS,WAAU,SAAQ,SAAQ,UAAS,UAAS,YAAW,WAAU,QAAO,SAAQ,UAAS,UAAS,UAAS,SAAQ,aAAY,UAAS,SAAQ,UAAS,aAAY,SAAQ,UAAS,SAAQ,WAAU,QAAO,QAAO,WAAU,cAAa,WAAU,UAAS,UAAS,YAAW,WAAU,WAAU,YAAW,kBAAiB,YAAW,SAAQ,YAAW,YAAW,SAAQ,UAAS,UAAS,aAAY,WAAU,UAAS,YAAW,SAAQ,SAAQ,YAAW,WAAU,aAAY,SAAQ,SAAQ,UAAS,YAAW,SAAQ,UAAS,UAAS,UAAS,WAAU,aAAY,YAAW,QAAO,cAAa,YAAW,YAAW,YAAW,YAAW,aAAY,aAAY,YAAW,eAAc,UAAS,cAAa,UAAS,aAAY,WAAU,cAAa,eAAc,cAAa,aAAY,eAAc,YAAW,WAAU,eAAc,iBAAgB,cAAa,cAAa,aAAY,YAAW,aAAY,aAAY,gBAAe,YAAW,aAAY,gBAAe,gBAAe,gBAAe,cAAa,YAAW,kBAAiB,gBAAe,WAAU,eAAc,aAAY,cAAa,cAAa,cAAa,iBAAgB,cAAa,gBAAe,aAAY,cAAa,UAAS,QAAO,eAAc,aAAY,WAAU,iBAAgB,UAAS,cAAa,SAAQ,YAAW,UAAS,YAAW,YAAW,WAAU,WAAU,WAAU,SAAQ,SAAQ,UAAS,YAAW,WAAU,SAAQ,WAAU,UAAS,QAAO,SAAQ,WAAU,QAAO,aAAY,QAAO,QAAO,QAAO,aAAY,QAAO,UAAS,YAAW,QAAO,YAAW,aAAY,WAAU,YAAW,cAAa,YAAW,aAAY,aAAY,cAAa,cAAa,aAAY,aAAY,aAAY,aAAY,YAAW,cAAa,aAAY,cAAa,WAAU,aAAY,aAAY,WAAU,cAAa,UAAS,SAAQ,YAAW,gBAAe,cAAa,gBAAe,aAAY,WAAU,YAAW,eAAc,iBAAgB,aAAY,cAAa,WAAU,UAAS,SAAQ,YAAW,YAAW,UAAS,YAAW,QAAO,YAAW,YAAW,WAAU,SAAQ,OAAM,QAAO,OAAM,QAAO,SAAQ,SAAQ,SAAQ,WAAU,SAAQ,SAAQ,WAAU,QAAO,YAAW,eAAc,SAAQ,aAAY,aAAY,aAAY,UAAS,WAAU,UAAS,aAAY,YAAW,cAAa,cAAa,WAAU,YAAW,eAAc,gBAAe,aAAY,aAAY,SAAQ,cAAa,eAAc,WAAU,aAAY,YAAW,gBAAe,UAAS,YAAW,WAAU,iBAAgB,SAAQ,cAAa,aAAY,eAAc,aAAY,WAAU,UAAS,YAAW,YAAW,WAAU,QAAO,gBAAe,SAAQ,aAAY,eAAc,UAAS,aAAY,WAAU,YAAW,aAAY,YAAW,UAAS,YAAW,aAAY,eAAc,gBAAe,YAAW,YAAW,aAAY,YAAW,SAAQ,iBAAgB,WAAU,aAAY,SAAQ,QAAO,YAAW,YAAW,UAAS,SAAQ,aAAY,OAAM,eAAc,eAAc,QAAO,OAAM,SAAQ,cAAa,aAAY,WAAU,UAAS,UAAS,YAAW,OAAM,UAAS,UAAS,SAAQ,aAAY,QAAO,QAAO,UAAS,OAAM,SAAQ,SAAQ,QAAO,YAAW,UAAS,cAAa,UAAS,aAAY,QAAO,WAAU,WAAU,UAAS,cAAa,eAAc,aAAY,WAAU,WAAU,SAAQ,WAAU,QAAO,YAAW,SAAQ,YAAW,cAAa,SAAQ,UAAS,QAAO,OAAM,cAAa,eAAc,SAAQ,WAAU,UAAS,SAAQ,WAAU,OAAM,WAAU,YAAW,WAAU,UAAS,WAAU,gBAAe,SAAQ,YAAW,SAAQ,QAAO,aAAY,YAAW,UAAS,YAAW,UAAS,QAAO,YAAW,UAAS,aAAY,YAAW,WAAU,SAAQ,YAAW,UAAS,SAAQ,YAAW,QAAO,SAAQ,aAAY,WAAU,UAAS,UAAS,UAAS,eAAc,YAAW,SAAQ,QAAO,SAAQ,QAAO,WAAU,SAAQ,WAAU,YAAW,UAAS,QAAO,aAAY,WAAU,YAAW,cAAa,UAAS,QAAO,YAAW,UAAS,OAAM,UAAS,cAAa,YAAW,WAAU,OAAM,QAAO,SAAQ,UAAS,QAAO,UAAS,SAAQ,OAAM,SAAQ,aAAY,eAAc,OAAM,WAAU,eAAc,aAAY,WAAU,YAAW,YAAW,aAAY,cAAa,aAAY,cAAa,YAAW,cAAa,iBAAgB,OAAM,YAAW,aAAY,cAAa,cAAa,eAAc,YAAW,cAAa,cAAa,cAAa,eAAc,YAAW,YAAW,WAAU,WAAU,UAAS,SAAQ,YAAW,cAAa,eAAc,WAAU,iBAAgB,gBAAe,UAAS,YAAW,cAAa,gBAAe,eAAc,WAAU,aAAY,cAAa,eAAc,WAAU,YAAW,gBAAe,YAAW,iBAAgB,YAAW,aAAY,YAAW,cAAa,YAAW,SAAQ,WAAU,WAAU,SAAQ,SAAQ,UAAS,YAAW,SAAQ,UAAS,QAAO,QAAO,OAAM,QAAO,SAAQ,UAAS,SAAQ,QAAO,SAAQ,QAAO,WAAU,QAAO,SAAQ,eAAc,cAAa,WAAU,UAAS,SAAQ,WAAU,UAAS,WAAU,SAAQ,QAAO,UAAS,WAAU,UAAS,cAAa,UAAS,YAAW,UAAS,QAAO,UAAS,UAAS,SAAQ,WAAU,UAAS,QAAO,SAAQ,QAAO,QAAO,UAAS,OAAM,SAAQ,OAAM,SAAQ,OAAM,SAAQ,YAAW,eAAc,QAAO,SAAQ,QAAO,WAAU,cAAa,YAAW,UAAS,QAAO,YAAW,UAAS,UAAS,WAAU,cAAa,WAAU,QAAO,WAAU,gBAAe,UAAS,WAAU,QAAO,cAAa,cAAa,WAAU,YAAW,WAAU,UAAS,UAAS,QAAO,gBAAe,OAAM,UAAS,UAAS,QAAO,YAAW,aAAY,WAAU,WAAU,eAAc,SAAQ,aAAY,cAAa,WAAU,SAAQ,SAAQ,WAAU,UAAS,YAAW,UAAS,UAAS,aAAY,YAAW,WAAU,SAAQ,cAAa,SAAQ,YAAW,SAAQ,WAAU,QAAO,UAAS,cAAa,SAAQ,UAAS,SAAQ,YAAW,UAAS,WAAU,WAAU,SAAQ,QAAO,UAAS,QAAO,aAAY,YAAW,gBAAe,WAAU,OAAM,WAAU,OAAM,QAAO,SAAQ,SAAQ,UAAS,YAAW,QAAO,WAAU,SAAQ,WAAU,YAAW,WAAU,cAAa,SAAQ,YAAW,aAAY,WAAU,aAAY,WAAU,cAAa,gBAAe,OAAM,YAAW,MAAK,QAAO,OAAM,WAAU,QAAO,QAAO,eAAc,YAAW,cAAa,QAAO,YAAW,WAAU,kBAAiB,YAAW,YAAW,SAAQ,WAAU,SAAQ,cAAa,WAAU,eAAc,WAAU,YAAW,gBAAe,WAAU,QAAO,WAAU,YAAW,YAAW,iBAAgB,WAAU,cAAa,WAAU,WAAU,QAAO,WAAU,WAAU,YAAW,YAAW,WAAU,aAAY,cAAa,YAAW,UAAS,iBAAgB,YAAW,SAAQ,WAAU,WAAU,YAAW,WAAU,UAAS,UAAS,aAAY,QAAO,WAAU,YAAW,YAAW,aAAY,YAAW,aAAY,YAAW,WAAU,aAAY,YAAW,eAAc,WAAU,YAAW,WAAU,gBAAe,UAAS,YAAW,WAAU,WAAU,SAAQ,aAAY,aAAY,WAAU,SAAQ,WAAU,YAAW,cAAa,gBAAe,cAAa,YAAW,eAAc,aAAY,aAAY,UAAS,YAAW,eAAc,cAAa,cAAa,SAAQ,cAAa,eAAc,iBAAgB,UAAS,QAAO,QAAO,WAAU,WAAU,UAAS,aAAY,eAAc,aAAY,SAAQ,YAAW,SAAQ,kBAAiB,YAAW,UAAS,WAAU,SAAQ,UAAS,SAAQ,QAAO,SAAQ,YAAW,SAAQ,OAAM,SAAQ,QAAO,aAAY,QAAO,cAAa,UAAS,WAAU,aAAY,YAAW,cAAa,WAAU,cAAa,WAAU,YAAW,WAAU,YAAW,YAAW,YAAW,aAAY,aAAY,aAAY,cAAa,UAAS,WAAU,kBAAiB,aAAY,YAAW,YAAW,eAAc,YAAW,eAAc,cAAa,eAAc,aAAY,UAAS,WAAU,iBAAgB,QAAO,cAAa,SAAQ,SAAQ,QAAO,UAAS,SAAQ,WAAU,UAAS,WAAU,YAAW,UAAS,SAAQ,SAAQ,SAAQ,UAAS,QAAO,UAAS,WAAU,SAAQ,UAAS,OAAM,QAAO,SAAQ,gBAAe,aAAY,UAAS,SAAQ,aAAY,cAAa,YAAW,WAAU,cAAa,aAAY,UAAS,UAAS,UAAS,YAAW,aAAY,WAAU,YAAW,UAAS,YAAW,aAAY,YAAW,WAAU,UAAS,UAAS,UAAS,SAAQ,WAAU,UAAS,SAAQ,SAAQ,SAAQ,aAAY,WAAU,SAAQ,UAAS,OAAM,QAAO,eAAc,UAAS,SAAQ,SAAQ,WAAU,UAAS,UAAS,WAAU,UAAS,UAAS,UAAS,QAAO,SAAQ,YAAW,QAAO,SAAQ,SAAQ,WAAU,UAAS,UAAS,UAAS,aAAY,QAAO,SAAQ,QAAO,SAAQ,iBAAgB,QAAO,SAAQ,SAAQ,QAAO,YAAW,UAAS,SAAQ,aAAY,WAAU,WAAU,YAAW,aAAY,eAAc,SAAQ,aAAY,YAAW,eAAc,YAAW,YAAW,UAAS,UAAS,aAAY,UAAS,SAAQ,YAAW,UAAS,eAAc,aAAY,UAAS,SAAQ,UAAS,SAAQ,SAAQ,UAAS,UAAS,YAAW,mBAAkB,WAAU,aAAY,UAAS,YAAW,WAAU,UAAS,cAAa,SAAQ,UAAS,cAAa,cAAa,eAAc,UAAS,cAAa,cAAa,UAAS,cAAa,YAAW,SAAQ,SAAQ,UAAS,YAAW,cAAa,YAAW,WAAU,QAAO,aAAY,cAAa,eAAc,aAAY,cAAa,SAAQ,SAAQ,YAAW,eAAc,cAAa,QAAO,QAAO,QAAO,aAAY,SAAQ,aAAY,iBAAgB,WAAU,aAAY,UAAS,SAAQ,YAAW,eAAc,SAAQ,QAAO,eAAc,SAAQ,QAAO,WAAU,YAAW,cAAa,eAAc,cAAa,SAAQ,QAAO,SAAQ,OAAM,QAAO,SAAQ,SAAQ,SAAQ,eAAc,UAAS,cAAa,UAAS,YAAW,YAAW,WAAU,WAAU,QAAO,YAAW,UAAS,gBAAe,WAAU,aAAY,aAAY,iBAAgB,eAAc,eAAc,cAAa,cAAa,UAAS,cAAa,UAAS,eAAc,WAAU,WAAU,gBAAe,UAAS,UAAS,aAAY,WAAU,YAAW,eAAc,cAAa,aAAY,WAAU,aAAY,SAAQ,SAAQ,WAAU,SAAQ,UAAS,QAAO,UAAS,WAAU,SAAQ,SAAQ,SAAQ,YAAW,YAAW,UAAS,WAAU,WAAU,QAAO,UAAS,YAAW,QAAO,aAAY,WAAU,cAAa,WAAU,WAAU,YAAW,UAAS,SAAQ,YAAW,aAAY,SAAQ,SAAQ,cAAa,aAAY,cAAa,aAAY,cAAa,aAAY,QAAO,YAAW,UAAS,QAAO,WAAU,SAAQ,OAAM,UAAS,SAAQ,WAAU,QAAO,WAAU,OAAM,cAAa,SAAQ,UAAS,QAAO,cAAa,QAAO,UAAS,WAAU,WAAU,QAAO,QAAO,SAAQ,aAAY,SAAQ,aAAY,UAAS,WAAU,aAAY,WAAU,YAAW,cAAa,UAAS,WAAU,SAAQ,aAAY,UAAS,cAAa,cAAa,SAAQ,eAAc,aAAY,aAAY,YAAW,SAAQ,WAAU,YAAW,YAAW,UAAS,WAAU,WAAU,YAAW,aAAY,SAAQ,YAAW,YAAW,YAAW,SAAQ,SAAQ,QAAO,WAAU,UAAS,WAAU,SAAQ,SAAQ,SAAQ,cAAa,eAAc,SAAS,GAAU,kBAAQ,CAAC,YAAW,YAAW,aAAY,aAAY,UAAS,aAAY,YAAW,aAAY,cAAa,OAAM,YAAW,YAAW,WAAU,OAAM,SAAQ,aAAY,OAAM,UAAS,UAAS,aAAY,YAAW,aAAY,YAAW,QAAO,OAAM,QAAO,UAAS,UAAS,OAAM,UAAS,QAAO,SAAQ,aAAY,OAAM,QAAO,UAAS,YAAW,UAAS,SAAQ,SAAQ,OAAM,aAAY,WAAU,SAAQ,SAAQ,WAAU,YAAW,YAAW,WAAU,QAAO,OAAM,eAAc,WAAU,YAAW,UAAS,aAAY,cAAa,aAAY,WAAU,aAAY,WAAU,cAAa,cAAa,YAAW,UAAS,QAAO,aAAY,SAAQ,aAAY,OAAM,UAAS,eAAc,SAAQ,UAAS,OAAM,UAAS,QAAO,SAAQ,WAAU,YAAW,WAAU,aAAY,QAAO,UAAS,aAAY,QAAO,SAAQ,YAAW,OAAM,WAAU,UAAS,YAAW,QAAO,UAAS,aAAY,QAAO,SAAQ,aAAY,UAAS,WAAU,OAAM,SAAQ,YAAW,OAAM,OAAM,UAAS,UAAS,WAAU,UAAS,SAAQ,WAAU,QAAO,YAAW,QAAO,OAAM,cAAa,QAAO,OAAM,QAAO,aAAY,YAAW,SAAQ,WAAU,SAAQ,UAAS,UAAS,WAAU,QAAO,YAAW,SAAQ,UAAS,WAAU,eAAc,UAAS,QAAO,WAAU,cAAa,QAAO,SAAQ,WAAU,WAAU,WAAU,QAAO,WAAU,QAAO,YAAW,SAAQ,WAAU,gBAAe,YAAW,UAAS,SAAQ,YAAW,eAAc,SAAQ,UAAS,UAAS,UAAS,UAAS,OAAM,aAAY,cAAa,YAAW,cAAa,QAAO,QAAO,SAAQ,OAAM,SAAQ,WAAU,WAAU,YAAW,QAAO,SAAQ,WAAU,SAAQ,WAAU,UAAS,UAAS,QAAO,UAAS,SAAQ,WAAU,UAAS,QAAO,SAAQ,YAAW,QAAO,SAAQ,YAAW,UAAS,UAAS,WAAU,YAAW,UAAS,YAAW,UAAS,aAAY,UAAS,YAAW,cAAa,WAAU,QAAO,UAAS,QAAO,eAAc,QAAO,WAAU,YAAW,UAAS,SAAQ,YAAW,QAAO,SAAQ,QAAO,UAAS,WAAU,QAAO,eAAc,UAAS,WAAU,WAAU,aAAY,QAAO,WAAU,SAAQ,OAAM,MAAK,SAAQ,WAAU,YAAW,UAAS,cAAa,aAAY,WAAU,WAAU,WAAU,WAAU,SAAQ,YAAW,OAAM,UAAS,QAAO,YAAW,WAAU,aAAY,YAAW,QAAO,aAAY,YAAW,UAAS,SAAQ,WAAU,aAAY,UAAS,QAAO,UAAS,SAAQ,UAAS,UAAS,UAAS,WAAU,OAAM,eAAc,SAAQ,YAAW,WAAU,cAAa,cAAa,UAAS,QAAO,WAAU,aAAY,YAAW,cAAa,UAAS,WAAU,WAAU,YAAW,YAAW,SAAQ,SAAQ,SAAQ,UAAS,YAAW,cAAa,SAAQ,SAAQ,SAAQ,QAAO,SAAQ,SAAQ,SAAQ,SAAQ,QAAO,WAAU,UAAS,aAAY,SAAQ,YAAW,YAAW,YAAW,SAAQ,SAAQ,YAAW,WAAU,QAAO,SAAQ,aAAY,aAAY,QAAO,SAAQ,SAAQ,aAAY,WAAU,WAAU,QAAO,UAAS,QAAO,SAAQ,UAAS,QAAO,YAAW,UAAS,SAAQ,QAAO,UAAS,UAAS,iBAAgB,WAAU,SAAQ,UAAS,SAAQ,QAAO,WAAU,WAAU,UAAS,WAAU,QAAO,UAAS,SAAQ,WAAU,aAAY,WAAU,cAAa,YAAW,QAAO,aAAY,UAAS,cAAa,QAAO,QAAO,WAAU,OAAM,OAAO,GAAU,iBAAO,CAAC,YAAW,SAAQ,YAAW,WAAU,QAAO,cAAa,SAAQ,SAAQ,SAAQ,QAAO,SAAQ,UAAS,SAAQ,aAAY,UAAS,UAAS,SAAQ,WAAU,QAAO,WAAU,WAAU,QAAO,QAAO,SAAQ,aAAY,UAAS,SAAQ,QAAO,YAAW,QAAO,WAAU,UAAS,YAAW,SAAQ,UAAS,SAAQ,QAAO,QAAO,UAAS,OAAM,QAAO,UAAS,YAAW,WAAU,UAAS,OAAM,QAAO,UAAS,aAAY,UAAS,SAAQ,QAAQ,GAAU,oBAAU,CAAC,eAAc,iBAAe,WAAU,WAAU,kBAAiB,WAAU,UAAS,YAAW,cAAa,qBAAoB,aAAY,WAAU,SAAQ,oBAAmB,aAAY,WAAU,cAAa,WAAU,WAAU,cAAa,YAAW,WAAU,WAAU,UAAS,SAAQ,WAAU,UAAS,WAAU,wBAAuB,YAAW,UAAS,kCAAiC,0BAAyB,UAAS,YAAW,gBAAe,WAAU,YAAW,YAAW,UAAS,kBAAiB,cAAa,yBAAwB,kBAAiB,4BAA2B,mBAAkB,QAAO,SAAQ,SAAQ,oBAAmB,iBAAgB,YAAW,WAAU,SAAQ,gBAAe,cAAa,iBAAgB,WAAU,QAAO,WAAU,UAAS,WAAU,WAAU,gBAAe,YAAW,YAAW,sBAAqB,WAAU,SAAQ,eAAc,qBAAoB,WAAU,WAAU,YAAW,YAAW,oBAAmB,iBAAgB,QAAO,WAAU,UAAS,iBAAgB,oBAAmB,+BAA8B,SAAQ,UAAS,WAAU,WAAU,SAAQ,aAAY,UAAS,aAAY,WAAU,cAAa,QAAO,aAAY,YAAW,UAAS,iBAAgB,UAAS,SAAQ,YAAW,uBAAsB,WAAU,WAAU,SAAQ,aAAY,QAAO,QAAO,WAAU,eAAc,UAAS,SAAQ,WAAU,SAAQ,UAAS,UAAS,cAAa,SAAQ,YAAW,UAAS,UAAS,cAAa,QAAO,UAAS,WAAU,WAAU,WAAU,SAAQ,iBAAgB,aAAY,cAAa,mBAAkB,aAAY,cAAa,UAAS,YAAW,YAAW,QAAO,SAAQ,oBAAmB,cAAa,cAAa,aAAY,WAAU,UAAS,cAAa,WAAU,UAAS,YAAW,cAAa,cAAa,WAAU,cAAa,WAAU,WAAU,SAAQ,SAAQ,eAAc,iBAAgB,eAAc,aAAY,SAAQ,WAAU,QAAO,kBAAiB,eAAc,4BAA2B,UAAS,QAAO,YAAW,SAAQ,2BAA0B,UAAS,oBAAmB,YAAW,QAAO,eAAc,oBAAmB,UAAS,YAAW,eAAc,SAAQ,WAAU,WAAU,UAAS,UAAS,SAAQ,cAAa,uBAAsB,gBAAe,WAAU,UAAS,cAAa,gBAAe,aAAY,gBAAe,YAAW,YAAW,mBAAkB,WAAU,gBAAe,0CAAyC,eAAc,eAAc,SAAQ,aAAY,kBAAiB,cAAa,qBAAoB,aAAY,cAAa,yBAAwB,4BAA2B,SAAQ,YAAW,wBAAuB,aAAY,UAAS,eAAc,SAAQ,UAAS,cAAa,YAAW,YAAW,eAAc,QAAO,WAAU,SAAQ,qBAAoB,oBAAmB,WAAU,UAAS,gBAAe,0BAAyB,UAAS,yBAAwB,uBAAsB,UAAS,WAAU,wBAAuB,kBAAiB,kBAAiB,iBAAgB,WAAU,cAAa,WAAU,gBAAe,aAAY,WAAU,mBAAkB,kBAAiB,SAAQ,UAAS,UAAU,GAAU,oBAAU,CAAC,QAAO,WAAU,UAAS,YAAW,UAAS,eAAc,WAAU,cAAa,WAAU,YAAW,WAAU,WAAU,SAAQ,iBAAgB,gBAAe,SAAQ,UAAS,aAAY,SAAQ,WAAU,UAAS,QAAO,OAAM,UAAS,SAAQ,YAAW,SAAQ,YAAW,SAAQ,cAAa,SAAQ,SAAQ,aAAY,QAAO,WAAU,WAAU,YAAW,YAAW,OAAM,WAAU,UAAS,SAAQ,eAAc,WAAU,WAAU,UAAS,WAAU,YAAW,UAAS,YAAW,YAAW,SAAQ,aAAY,YAAW,WAAU,WAAU,OAAM,SAAQ,UAAS,QAAO,SAAQ,UAAS,WAAU,UAAS,cAAa,WAAU,WAAU,YAAW,WAAU,WAAU,SAAQ,UAAS,WAAU,UAAS,WAAU,aAAY,WAAU,WAAU,WAAU,SAAQ,UAAS,QAAO,WAAU,WAAU,aAAY,QAAO,UAAS,SAAQ,cAAa,MAAK,SAAQ,SAAQ,UAAS,OAAM,UAAS,MAAM,GAAU,gBAAM,CAAC,SAAQ,UAAS,WAAU,WAAU,QAAO,SAAQ,QAAO,SAAQ,QAAO,SAAQ,WAAU,WAAU,WAAU,QAAO,OAAM,QAAO,WAAU,QAAO,SAAQ,QAAO,QAAO,SAAQ,SAAQ,QAAO,QAAO,SAAQ,YAAW,YAAW,SAAQ,YAAW,WAAU,WAAU,WAAU,WAAU,UAAS,UAAS,SAAQ,QAAO,OAAM,UAAS,SAAQ,SAAQ,SAAQ,UAAS,UAAS,SAAQ,SAAQ,YAAW,UAAS,WAAU,WAAU,YAAW,YAAW,WAAU,YAAW,UAAS,WAAU,WAAU,SAAQ,MAAK,SAAQ,SAAQ,UAAS,UAAS,QAAO,SAAQ,QAAO,QAAO,WAAU,SAAQ,UAAS,WAAU,UAAS,UAAS,WAAU,QAAO,SAAQ,WAAU,QAAO,QAAO,SAAQ,UAAS,UAAS,SAAQ,QAAO,UAAS,SAAQ,UAAS,SAAQ,QAAO,SAAQ,SAAQ,WAAU,WAAU,WAAU,WAAU,QAAO,UAAS,WAAU,SAAQ,UAAS,SAAQ,UAAS,UAAS,WAAU,aAAY,aAAY,UAAS,UAAS,SAAQ,UAAS,SAAQ,aAAY,eAAc,SAAQ,SAAQ,cAAa,SAAQ,WAAU,QAAO,SAAQ,aAAY,eAAc,SAAQ,UAAS,WAAU,WAAU,UAAS,QAAO,SAAQ,WAAU,QAAO,OAAM,QAAO,SAAQ,SAAQ,UAAS,UAAS,SAAQ,UAAS,QAAO,SAAQ,UAAS,SAAQ,SAAQ,QAAO,SAAQ,UAAS,UAAS,UAAS,UAAS,QAAO,SAAQ,QAAO,UAAS,WAAU,UAAS,QAAO,aAAY,SAAQ,UAAS,SAAQ,WAAU,WAAU,SAAQ,UAAS,QAAO,QAAO,UAAS,SAAQ,SAAQ,WAAU,QAAO,UAAS,WAAU,UAAS,UAAS,UAAS,UAAS,WAAU,WAAU,QAAO,UAAS,UAAS,WAAU,UAAS,WAAU,UAAS,SAAQ,SAAQ,QAAO,SAAQ,SAAQ,UAAS,UAAS,SAAQ,UAAS,UAAS,YAAW,UAAS,UAAS,WAAU,UAAS,UAAS,WAAU,UAAS,UAAS,UAAS,WAAU,UAAS,SAAQ,UAAS,SAAQ,SAAQ,WAAU,SAAQ,OAAM,UAAS,UAAS,WAAU,WAAU,WAAU,OAAM,QAAO,QAAO,QAAO,UAAS,SAAQ,aAAY,OAAM,QAAO,OAAM,UAAS,UAAS,YAAW,YAAW,YAAW,WAAU,YAAW,YAAW,aAAY,aAAY,cAAa,WAAU,SAAQ,UAAS,WAAU,QAAO,SAAQ,SAAQ,UAAS,YAAW,UAAS,UAAS,UAAS,YAAW,aAAY,cAAa,QAAO,cAAa,QAAO,SAAQ,UAAS,UAAS,QAAO,SAAQ,UAAS,UAAS,WAAU,YAAW,YAAW,YAAW,YAAW,aAAY,YAAW,WAAU,SAAQ,SAAQ,QAAO,QAAO,SAAQ,UAAS,SAAQ,UAAS,aAAY,UAAS,OAAM,aAAY,QAAO,cAAa,cAAa,cAAa,WAAU,WAAU,YAAW,YAAW,aAAY,aAAY,aAAY,aAAY,WAAU,aAAY,YAAW,aAAY,aAAY,QAAO,gBAAe,cAAa,eAAc,aAAY,YAAW,aAAY,WAAU,WAAU,QAAO,UAAS,SAAQ,SAAQ,WAAU,YAAW,YAAW,WAAU,UAAS,QAAO,WAAU,UAAS,WAAU,SAAQ,UAAS,UAAS,cAAa,cAAa,aAAY,aAAY,WAAU,WAAU,cAAa,YAAW,QAAO,aAAY,SAAQ,aAAY,OAAM,UAAS,WAAU,WAAU,YAAW,YAAW,QAAO,UAAS,UAAS,WAAU,WAAU,WAAU,WAAU,SAAQ,UAAS,WAAU,UAAS,SAAQ,UAAS,UAAS,SAAQ,UAAS,SAAQ,UAAS,UAAS,WAAU,UAAS,YAAW,SAAQ,UAAS,WAAU,WAAU,UAAS,SAAQ,UAAS,SAAQ,UAAS,UAAS,UAAS,WAAU,WAAU,SAAQ,WAAU,UAAS,WAAU,UAAS,WAAU,QAAO,SAAQ,UAAS,QAAO,UAAS,SAAQ,UAAS,SAAQ,SAAQ,UAAS,UAAS,YAAW,UAAS,UAAS,SAAQ,UAAS,SAAQ,QAAO,SAAQ,UAAS,UAAS,YAAW,UAAS,UAAS,WAAU,WAAU,WAAU,UAAS,UAAS,YAAW,UAAS,UAAS,SAAQ,QAAO,SAAQ,SAAQ,SAAQ,UAAS,UAAS,SAAQ,UAAS,QAAO,WAAU,WAAU,aAAY,aAAY,WAAU,QAAO,SAAQ,SAAQ,WAAU,WAAU,WAAU,SAAQ,SAAQ,WAAU,UAAS,WAAU,UAAS,UAAS,UAAS,WAAU,WAAU,OAAM,WAAU,UAAS,UAAS,QAAO,QAAO,SAAQ,UAAS,SAAQ,SAAQ,OAAM,OAAM,UAAS,QAAO,YAAW,UAAS,WAAU,UAAS,QAAO,SAAQ,UAAS,SAAQ,QAAO,YAAW,WAAU,gBAAe,eAAc,SAAQ,UAAS,YAAW,UAAS,SAAQ,UAAS,UAAS,SAAQ,QAAO,UAAS,SAAQ,SAAQ,aAAY,YAAW,OAAM,YAAW,YAAW,WAAU,WAAU,QAAO,SAAQ,SAAQ,SAAQ,UAAS,SAAQ,OAAM,UAAS,WAAU,SAAQ,OAAM,SAAQ,WAAU,WAAU,UAAS,QAAO,SAAQ,YAAW,SAAQ,WAAU,SAAQ,UAAS,WAAU,aAAY,aAAY,aAAY,WAAU,UAAS,SAAQ,UAAS,SAAQ,WAAU,YAAW,SAAQ,UAAS,SAAQ,aAAY,cAAa,aAAY,aAAY,cAAa,cAAa,YAAW,WAAU,YAAW,YAAW,SAAQ,WAAU,UAAS,WAAU,SAAQ,SAAQ,UAAS,SAAQ,QAAO,SAAQ,SAAQ,UAAS,UAAS,SAAQ,UAAS,WAAU,WAAU,SAAQ,SAAQ,UAAS,QAAO,UAAS,SAAQ,QAAO,YAAW,WAAU,WAAU,WAAU,UAAS,SAAQ,SAAQ,SAAQ,aAAY,YAAW,aAAY,SAAQ,WAAU,WAAU,SAAQ,UAAS,UAAS,OAAM,WAAU,YAAW,YAAW,YAAW,WAAU,SAAQ,UAAS,UAAS,UAAS,SAAQ,UAAS,QAAO,UAAS,SAAQ,UAAS,QAAO,QAAO,SAAQ,UAAS,SAAQ,UAAS,SAAQ,UAAS,SAAQ,QAAO,UAAS,UAAS,YAAW,SAAQ,UAAS,SAAQ,YAAW,YAAW,UAAS,UAAS,WAAU,WAAU,UAAS,WAAU,UAAS,SAAQ,UAAS,UAAS,YAAW,aAAY,WAAU,UAAS,UAAS,SAAQ,UAAS,YAAW,SAAQ,UAAS,SAAQ,UAAS,WAAU,UAAS,UAAS,aAAY,UAAS,UAAS,SAAQ,cAAa,UAAS,SAAQ,SAAQ,YAAW,UAAS,WAAU,UAAS,YAAW,WAAU,YAAW,UAAS,WAAU,SAAQ,QAAO,UAAS,QAAO,SAAQ,UAAS,SAAQ,UAAS,SAAQ,QAAO,UAAS,WAAU,WAAU,SAAQ,WAAU,aAAY,UAAS,SAAQ,WAAU,UAAS,WAAU,UAAS,YAAW,YAAW,SAAQ,UAAS,SAAQ,UAAS,SAAQ,QAAO,SAAQ,WAAU,UAAS,SAAQ,UAAS,WAAU,aAAY,YAAW,YAAW,UAAS,YAAW,WAAU,YAAW,WAAU,SAAQ,UAAS,UAAS,aAAY,aAAY,UAAS,QAAO,SAAQ,SAAQ,UAAS,UAAS,SAAQ,SAAQ,UAAS,SAAQ,WAAU,WAAU,SAAQ,eAAc,WAAU,WAAU,OAAM,UAAS,SAAQ,UAAS,SAAQ,WAAU,UAAS,SAAQ,WAAU,OAAM,UAAS,SAAQ,WAAU,YAAW,QAAO,UAAS,UAAS,WAAU,WAAU,SAAQ,UAAS,SAAQ,WAAU,SAAQ,WAAU,WAAU,WAAU,UAAS,UAAS,UAAS,SAAQ,WAAU,QAAO,WAAU,SAAQ,UAAS,UAAS,WAAU,WAAU,SAAQ,QAAO,SAAQ,SAAQ,SAAQ,WAAU,SAAQ,UAAS,UAAS,YAAW,WAAU,UAAS,WAAU,SAAQ,UAAS,WAAU,UAAS,WAAU,UAAS,UAAS,UAAS,WAAU,WAAU,WAAU,WAAU,YAAW,SAAQ,UAAS,UAAS,WAAU,YAAW,SAAQ,UAAS,WAAU,YAAW,aAAY,aAAY,YAAW,YAAW,UAAS,cAAa,WAAU,WAAU,WAAU,UAAS,QAAO,SAAQ,cAAa,UAAS,WAAU,YAAW,UAAS,WAAU,WAAU,YAAW,YAAW,aAAY,WAAU,YAAW,YAAW,SAAQ,UAAS,SAAQ,UAAS,YAAW,WAAU,SAAQ,QAAO,SAAQ,SAAQ,YAAW,SAAQ,QAAO,SAAQ,QAAO,aAAY,aAAY,aAAY,cAAa,UAAS,SAAQ,UAAS,aAAY,SAAQ,YAAW,QAAO,YAAW,SAAQ,aAAY,aAAY,SAAQ,UAAS,YAAW,aAAY,aAAY,SAAQ,UAAS,YAAW,YAAW,WAAU,YAAW,WAAU,SAAQ,aAAY,QAAO,SAAQ,UAAS,YAAW,UAAS,UAAS,WAAU,YAAW,QAAO,QAAO,SAAQ,WAAU,SAAQ,UAAS,WAAU,WAAU,WAAU,UAAS,QAAO,QAAO,UAAS,WAAU,WAAU,YAAW,aAAY,aAAY,YAAW,aAAY,SAAQ,SAAQ,UAAS,WAAU,UAAS,WAAU,WAAU,SAAQ,SAAQ,SAAQ,QAAO,UAAS,WAAU,WAAU,UAAS,WAAU,aAAY,UAAS,UAAS,UAAS,YAAW,YAAW,WAAU,WAAU,UAAS,YAAW,YAAW,YAAW,YAAW,YAAW,WAAU,aAAY,aAAY,YAAW,aAAY,YAAW,YAAW,YAAW,YAAW,SAAQ,UAAS,YAAW,WAAU,WAAU,WAAU,WAAU,UAAS,QAAO,SAAQ,UAAS,SAAQ,aAAY,WAAU,WAAU,UAAS,YAAW,aAAY,UAA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AS,SAAQ,UAAS,SAAQ,UAAS,UAAS,UAAS,QAAO,YAAW,YAAW,WAAU,YAAW,YAAW,YAAW,WAAU,UAAS,SAAQ,UAAS,UAAS,SAAQ,WAAU,UAAS,QAAO,QAAO,OAAM,QAAO,SAAQ,UAAS,SAAQ,OAAM,UAAS,SAAQ,SAAQ,OAAM,SAAQ,UAAS,WAAU,SAAQ,SAAQ,UAAS,YAAW,SAAQ,SAAQ,UAAS,SAAQ,UAAS,YAAW,UAAS,WAAU,YAAW,SAAQ,UAAS,SAAQ,QAAO,SAAQ,SAAQ,SAAQ,UAAS,UAAS,QAAO,SAAQ,YAAW,QAAO,SAAQ,UAAS,YAAW,UAAS,UAAS,OAAM,QAAO,UAAS,SAAQ,OAAM,QAAO,SAAQ,QAAO,OAAM,QAAO,WAAU,QAAO,OAAM,QAAO,QAAO,SAAQ,SAAQ,UAAS,UAAS,SAAQ,QAAO,UAAS,OAAM,SAAQ,UAAS,SAAQ,UAAS,SAAQ,UAAS,UAAS,aAAY,UAAS,UAAS,SAAQ,SAAQ,UAAS,WAAU,aAAY,aAAY,WAAU,YAAW,YAAW,WAAU,SAAQ,SAAQ,SAAQ,SAAQ,WAAU,YAAW,YAAW,SAAQ,WAAU,WAAU,YAAW,QAAO,YAAW,YAAW,UAAS,QAAO,UAAS,WAAU,SAAQ,YAAW,aAAY,cAAa,SAAQ,UAAS,UAAS,SAAQ,SAAQ,YAAW,aAAY,QAAO,QAAO,QAAO,YAAW,QAAO,SAAQ,UAAS,WAAU,QAAO,SAAQ,WAAU,QAAO,SAAQ,UAAS,UAAS,QAAO,UAAS,UAAS,UAAS,UAAS,WAAU,SAAQ,QAAO,WAAU,QAAO,SAAQ,SAAQ,QAAO,SAAQ,YAAW,WAAU,QAAO,QAAO,UAAS,UAAS,UAAS,UAAS,QAAO,SAAQ,UAAS,UAAS,UAAS,UAAS,MAAK,OAAM,UAAS,UAAS,UAAS,UAAS,WAAU,WAAU,WAAU,WAAU,SAAQ,UAAS,SAAQ,UAAS,UAAS,WAAU,SAAQ,SAAQ,UAAS,WAAU,QAAO,WAAU,YAAW,WAAU,YAAW,aAAY,YAAW,SAAQ,QAAO,SAAQ,QAAO,SAAQ,WAAU,SAAQ,UAAS,YAAW,QAAO,UAAS,cAAa,UAAS,aAAY,WAAU,WAAU,QAAO,QAAO,SAAQ,SAAQ,UAAS,UAAS,SAAQ,QAAO,SAAQ,SAAQ,UAAS,QAAO,cAAa,cAAa,UAAS,WAAU,WAAU,QAAO,YAAW,WAAU,aAAY,SAAQ,QAAO,QAAO,WAAU,QAAO,aAAY,QAAO,SAAQ,QAAO,QAAO,SAAQ,UAAS,UAAS,WAAU,WAAU,SAAQ,UAAS,YAAW,cAAa,SAAQ,WAAU,WAAU,YAAW,YAAW,WAAU,SAAQ,QAAO,QAAO,SAAQ,QAAO,UAAS,WAAU,WAAU,UAAS,QAAO,WAAU,UAAS,YAAW,YAAW,OAAM,WAAU,aAAY,aAAY,cAAa,cAAa,UAAS,UAAS,OAAM,WAAU,WAAU,WAAU,UAAS,QAAO,QAAO,SAAQ,UAAS,SAAQ,QAAO,OAAM,QAAO,SAAQ,aAAY,OAAM,SAAQ,SAAQ,UAAS,OAAM,aAAY,WAAU,UAAS,SAAQ,YAAW,SAAQ,SAAQ,UAAS,SAAQ,SAAQ,QAAO,SAAQ,UAAS,UAAS,SAAQ,UAAS,WAAU,QAAO,UAAS,YAAW,YAAW,QAAO,SAAQ,UAAS,OAAM,UAAS,QAAO,WAAU,UAAS,SAAQ,SAAQ,UAAS,YAAW,UAAS,WAAU,YAAW,UAAS,WAAU,YAAW,WAAU,UAAS,WAAU,UAAS,UAAS,WAAU,WAAU,cAAa,cAAa,QAAO,YAAW,YAAW,cAAa,SAAQ,OAAM,SAAQ,UAAS,UAAS,WAAU,YAAW,QAAO,UAAS,SAAQ,UAAS,WAAU,QAAO,SAAQ,UAAS,YAAW,YAAW,SAAQ,aAAY,OAAM,QAAO,SAAQ,YAAW,SAAQ,YAAW,YAAW,aAAY,aAAY,YAAW,YAAW,SAAQ,UAAS,WAAU,UAAS,WAAU,YAAW,UAAS,UAAS,WAAU,UAAS,SAAQ,UAAS,WAAU,UAAS,QAAO,QAAO,YAAW,WAAU,aAAY,YAAW,aAAY,aAAY,aAAY,YAAW,SAAQ,WAAU,UAAS,UAAS,WAAU,UAAS,UAAS,QAAO,SAAQ,UAAS,WAAU,UAAS,YAAW,aAAY,cAAa,cAAa,SAAQ,UAAS,UAAS,YAAW,UAAS,UAAS,cAAa,UAAS,UAAS,SAAQ,UAAS,SAAQ,QAAO,SAAQ,WAAU,YAAW,YAAW,aAAY,aAAY,cAAa,WAAU,QAAO,OAAM,QAAO,QAAO,QAAO,UAAS,WAAU,UAAS,YAAW,SAAQ,SAAQ,aAAY,OAAM,QAAO,SAAQ,SAAQ,SAAQ,WAAU,WAAU,UAAS,SAAQ,QAAO,QAAO,UAAS,aAAY,WAAU,SAAQ,SAAQ,SAAQ,UAAS,YAAW,SAAQ,YAAW,YAAW,UAAS,cAAa,cAAa,YAAW,YAAW,aAAY,aAAY,WAAU,aAAY,cAAa,cAAa,WAAU,YAAW,YAAW,WAAU,aAAY,SAAQ,cAAa,QAAO,YAAW,YAAW,aAAY,WAAU,YAAW,WAAU,SAAQ,UAAS,YAAW,SAAQ,QAAO,SAAQ,SAAQ,UAAS,WAAU,YAAW,YAAW,aAAY,SAAQ,YAAW,SAAQ,WAAU,UAAS,QAAO,YAAW,YAAW,cAAa,cAAa,SAAQ,aAAY,QAAO,UAAS,SAAQ,WAAU,UAAS,YAAW,SAAQ,QAAO,WAAU,WAAU,UAAS,SAAQ,UAAS,YAAW,SAAQ,WAAU,YAAW,SAAQ,WAAU,UAAS,UAAS,WAAU,WAAU,YAAW,UAAS,aAAY,YAAW,UAAS,QAAO,SAAQ,UAAS,SAAQ,QAAO,UAAS,WAAU,SAAQ,UAAS,WAAU,WAAU,SAAQ,UAAS,YAAW,YAAW,SAAQ,QAAO,UAAS,UAAS,WAAU,QAAO,UAAS,SAAQ,aAAY,SAAQ,UAAS,UAAS,WAAU,SAAQ,SAAQ,UAAS,UAAS,SAAQ,UAAS,YAAW,QAAO,UAAS,UAAS,SAAQ,SAAQ,UAAS,YAAW,SAAQ,UAAS,WAAU,UAAS,UAAS,SAAQ,YAAW,WAAU,aAAY,aAAY,UAAS,aAAY,OAAM,YAAW,eAAc,aAAY,UAAS,WAAU,OAAM,WAAU,SAAQ,UAAS,SAAQ,SAAQ,SAAQ,UAAS,SAAQ,QAAO,aAAY,aAAY,aAAY,WAAU,YAAW,YAAW,UAAS,WAAU,UAAS,WAAU,WAAU,QAAO,WAAU,UAAS,SAAQ,UAAS,UAAS,SAAQ,WAAU,WAAU,SAAQ,QAAO,SAAQ,YAAW,UAAS,SAAQ,UAAS,SAAQ,QAAO,SAAQ,UAAS,SAAQ,UAAS,UAAS,SAAQ,SAAQ,WAAU,UAAS,SAAQ,UAAS,YAAW,YAAW,WAAU,SAAQ,UAAS,WAAU,YAAW,aAAY,aAAY,WAAU,YAAW,SAAQ,UAAS,SAAQ,UAAS,SAAQ,SAAQ,WAAU,QAAO,SAAQ,SAAQ,UAAS,QAAO,UAAS,WAAU,UAAS,WAAU,QAAO,SAAQ,SAAQ,UAAS,WAAU,WAAU,SAAQ,mBAAkB,UAAS,UAAS,WAAU,SAAQ,SAAQ,SAAQ,WAAU,SAAQ,SAAQ,YAAW,SAAQ,UAAS,YAAW,aAAY,aAAY,aAAY,aAAY,UAAS,WAAU,WAAU,YAAW,YAAW,SAAQ,UAAS,UAAS,WAAU,UAAS,SAAQ,UAAS,SAAQ,UAAS,SAAQ,aAAY,cAAa,SAAQ,cAAa,cAAa,SAAQ,WAAU,YAAW,SAAQ,SAAQ,UAAS,SAAQ,cAAa,aAAY,SAAQ,SAAQ,WAAU,QAAO,WAAU,YAAW,aAAY,SAAQ,YAAW,aAAY,aAAY,cAAa,cAAa,SAAQ,UAAS,SAAQ,QAAO,OAAM,UAAS,WAAU,WAAU,SAAQ,UAAS,UAAS,UAAS,UAAS,SAAQ,SAAQ,QAAO,QAAO,QAAO,QAAO,SAAQ,SAAQ,UAAS,UAAS,UAAS,WAAU,WAAU,OAAM,UAAS,QAAO,WAAU,UAAS,QAAO,QAAO,YAAW,YAAW,QAAO,YAAW,YAAW,SAAQ,UAAS,WAAU,QAAO,WAAU,YAAW,QAAO,WAAU,OAAM,SAAQ,SAAQ,SAAQ,QAAO,SAAQ,QAAO,OAAM,UAAS,aAAY,YAAW,YAAW,WAAU,YAAW,WAAU,WAAU,QAAO,UAAS,QAAO,SAAQ,QAAO,SAAQ,UAAS,QAAO,UAAS,SAAQ,OAAM,UAAS,WAAU,WAAU,WAAU,YAAW,YAAW,YAAW,SAAQ,UAAS,WAAU,WAAU,cAAa,eAAc,SAAQ,UAAS,UAAS,aAAY,cAAa,aAAY,cAAa,eAAc,eAAc,aAAY,aAAY,UAAS,WAAU,WAAU,QAAO,QAAO,SAAQ,UAAS,SAAQ,QAAO,SAAQ,UAAS,UAAS,OAAM,QAAO,UAAS,UAAS,SAAQ,QAAO,UAAS,YAAW,UAAS,SAAQ,UAAS,WAAU,WAAU,UAAS,WAAU,WAAU,SAAQ,UAAS,WAAU,WAAU,UAAS,SAAQ,SAAQ,UAAS,SAAQ,WAAU,UAAS,UAAS,SAAQ,UAAS,SAAQ,SAAQ,UAAS,YAAW,SAAQ,QAAO,YAAW,YAAW,cAAa,cAAa,WAAU,UAAS,WAAU,WAAU,SAAQ,UAAS,SAAQ,WAAU,UAAS,QAAO,SAAQ,SAAQ,YAAW,YAAW,UAAS,WAAU,UAAS,UAAS,aAAY,WAAU,YAAW,WAAU,UAAS,SAAQ,UAAS,WAAU,UAAS,SAAQ,OAAM,QAAO,SAAQ,WAAU,QAAO,UAAS,WAAU,WAAU,YAAW,WAAU,UAAS,QAAO,SAAQ,UAAS,YAAW,SAAQ,WAAU,UAAS,YAAW,YAAW,WAAU,SAAQ,WAAU,QAAO,QAAO,YAAW,UAAS,YAAW,YAAW,WAAU,SAAQ,YAAW,QAAO,SAAQ,YAAW,YAAW,aAAY,YAAW,SAAQ,YAAW,SAAQ,WAAU,UAAS,WAAU,SAAQ,SAAQ,UAAS,WAAU,QAAO,WAAU,WAAU,YAAW,WAAU,WAAU,SAAQ,WAAU,UAAS,SAAQ,SAAQ,MAAK,UAAS,WAAU,QAAO,SAAQ,SAAQ,UAAS,SAAQ,UAAS,UAAS,WAAU,SAAQ,QAAO,SAAQ,UAAS,QAAO,SAAQ,UAAS,WAAU,YAAW,WAAU,YAAW,SAAQ,QAAO,SAAQ,QAAO,UAAS,SAAQ,UAAS,SAAQ,UAAS,UAAS,WAAU,UAAS,WAAU,WAAU,SAAQ,QAAO,WAAU,YAAW,SAAQ,WAAU,YAAW,UAAS,SAAQ,QAAO,SAAQ,UAAS,UAAS,WAAU,QAAO,SAAQ,UAAS,QAAO,SAAQ,UAAS,UAAS,QAAO,SAAQ,SAAQ,WAAU,UAAS,WAAU,YAAW,SAAQ,QAAO,SAAQ,UAAS,SAAQ,YAAW,SAAQ,UAAS,YAAW,WAAU,aAAY,aAAY,SAAQ,QAAO,SAAQ,YAAW,QAAO,WAAU,OAAM,QAAO,SAAQ,UAAS,SAAQ,YAAW,QAAO,WAAU,SAAQ,WAAU,QAAO,SAAQ,UAAS,WAAU,QAAO,SAAQ,UAAS,SAAQ,QAAO,SAAQ,WAAU,WAAU,WAAU,YAAW,YAAW,SAAQ,YAAW,UAAS,WAAU,YAAW,YAAW,UAAS,UAAS,WAAU,UAAS,QAAO,WAAU,SAAQ,SAAQ,UAAS,WAAU,WAAU,WAAU,SAAQ,SAAQ,SAAQ,QAAO,SAAQ,OAAM,QAAO,SAAQ,SAAQ,UAAS,WAAU,WAAU,YAAW,QAAO,YAAW,QAAO,WAAU,QAAO,SAAQ,UAAS,UAAS,WAAU,WAAU,SAAQ,SAAQ,UAAS,UAAS,WAAU,YAAW,WAAU,SAAQ,SAAQ,SAAQ,QAAO,aAAY,WAAU,YAAW,QAAO,SAAQ,SAAQ,SAAQ,UAAS,QAAO,SAAQ,SAAQ,SAAQ,YAAW,SAAQ,UAAS,UAAS,YAAW,UAAS,WAAU,UAAS,SAAQ,UAAS,WAAU,UAAS,WAAU,UAAS,YAAW,YAAW,SAAQ,UAAS,UAAS,SAAQ,SAAQ,UAAS,UAAS,YAAW,YAAW,UAAS,SAAQ,UAAS,UAAS,SAAQ,QAAO,SAAQ,WAAU,SAAQ,SAAQ,QAAO,aAAY,UAAS,SAAQ,UAAS,UAAS,OAAM,QAAO,WAAU,QAAO,SAAQ,YAAW,YAAW,SAAQ,QAAO,SAAQ,aAAY,aAAY,YAAW,SAAQ,aAAY,aAAY,YAAW,SAAQ,UAAS,YAAW,WAAU,YAAW,WAAU,YAAW,SAAQ,UAAS,QAAO,SAAQ,UAAS,UAAS,WAAU,WAAU,UAAS,WAAU,WAAU,YAAW,SAAQ,UAAS,YAAW,WAAU,QAAO,SAAQ,OAAM,UAAS,QAAO,SAAQ,SAAQ,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,SAAQ,UAAS,SAAQ,UAAS,SAAQ,UAAS,UAAS,UAAS,SAAQ,UAAS,UAAS,WAAU,WAAU,SAAQ,YAAW,UAAS,SAAQ,SAAQ,UAAS,UAAS,SAAQ,QAAO,WAAU,YAAW,SAAQ,UAAS,WAAU,UAAS,SAAQ,WAAU,UAAS,UAAS,UAAS,WAAU,SAAQ,UAAS,SAAQ,UAAS,SAAQ,MAAK,QAAO,QAAO,SAAQ,YAAW,WAAU,SAAQ,OAAM,aAAY,aAAY,YAAW,YAAW,aAAY,UAAS,SAAQ,UAAS,SAAQ,SAAQ,OAAM,QAAO,UAAS,SAAQ,QAAO,UAAS,UAAS,SAAQ,QAAO,WAAU,YAAW,UAAS,WAAU,WAAU,UAAS,WAAU,UAAS,OAAM,SAAQ,UAAS,SAAQ,UAAS,UAAS,SAAQ,WAAU,YAAW,aAAY,aAAY,OAAM,QAAO,SAAQ,WAAU,WAAU,QAAO,WAAU,SAAQ,WAAU,QAAO,SAAQ,UAAS,UAAS,SAAQ,QAAO,WAAU,UAAS,UAAS,WAAU,WAAU,UAAS,WAAU,WAAU,UAAS,YAAW,WAAU,YAAW,YAAW,UAAS,WAAU,UAAS,WAAU,aAAY,WAAU,YAAW,QAAO,QAAO,SAAQ,SAAQ,UAAS,UAAS,OAAM,WAAU,WAAU,SAAQ,SAAQ,SAAQ,QAAO,WAAU,YAAW,SAAQ,UAAS,QAAO,SAAQ,QAAO,WAAU,SAAQ,QAAO,SAAQ,UAAS,SAAQ,SAAQ,SAAQ,QAAO,WAAU,QAAO,UAAS,UAAS,UAAS,WAAU,QAAO,WAAU,YAAW,SAAQ,WAAU,WAAU,WAAU,SAAQ,YAAW,UAAS,YAAW,SAAQ,UAAS,WAAU,UAAS,YAAW,UAAS,WAAU,WAAU,YAAW,YAAW,SAAQ,aAAY,WAAU,UAAS,UAAS,UAAS,WAAU,WAAU,UAAS,WAAU,WAAU,SAAQ,SAAQ,UAAS,OAAM,QAAO,WAAU,SAAQ,UAAS,UAAS,WAAU,UAAS,QAAO,OAAM,UAAS,WAAU,SAAQ,UAAS,SAAQ,SAAQ,SAAQ,SAAQ,QAAO,SAAQ,UAAS,SAAQ,UAAS,UAAS,QAAO,SAAQ,UAAS,SAAQ,QAAO,SAAQ,WAAU,SAAQ,SAAQ,UAAS,UAAS,WAAU,UAAS,SAAQ,WAAU,SAAQ,YAAW,SAAQ,YAAW,UAAS,WAAU,WAAU,YAAW,YAAW,SAAQ,UAAS,UAAS,SAAQ,UAAS,SAAQ,SAAQ,QAAO,UAAS,WAAU,WAAU,WAAU,WAAU,SAAQ,SAAQ,UAAS,SAAQ,QAAO,SAAQ,UAAS,SAAQ,QAAO,SAAQ,UAAS,OAAM,QAAO,SAAQ,SAAQ,UAAS,UAAS,OAAM,UAAS,SAAQ,UAAS,SAAQ,SAAQ,QAAO,SAAQ,SAAQ,OAAM,QAAO,SAAQ,SAAQ,SAAQ,UAAS,WAAU,UAAS,UAAS,SAAQ,SAAQ,WAAU,UAAS,WAAU,SAAQ,QAAO,UAAS,OAAM,QAAO,QAAO,SAAQ,SAAQ,UAAS,WAAU,WAAU,UAAS,SAAQ,SAAQ,UAAS,SAAQ,WAAU,QAAO,UAAS,WAAU,UAAS,UAAS,SAAQ,QAAO,QAAO,YAAW,WAAU,QAAO,WAAU,WAAU,SAAQ,SAAQ,SAAQ,SAAQ,UAAS,SAAQ,QAAO,SAAQ,OAAM,QAAO,SAAQ,UAAS,SAAQ,UAAS,QAAO,OAAM,QAAO,YAAW,WAAU,WAAU,UAAS,SAAQ,UAAS,QAAO,SAAQ,QAAO,UAAS,UAAS,SAAQ,QAAO,SAAQ,QAAO,SAAQ,SAAQ,UAAS,QAAO,UAAS,WAAU,WAAU,WAAU,WAAU,SAAQ,UAAS,WAAU,WAAU,SAAQ,UAAS,UAAS,WAAU,WAAU,WAAU,QAAO,SAAQ,YAAW,YAAW,SAAQ,WAAU,WAAU,WAAU,UAAS,UAAS,SAAQ,SAAQ,YAAW,YAAW,SAAQ,UAAS,UAAS,SAAQ,QAAO,SAAQ,SAAQ,SAAQ,UAAS,SAAQ,OAAM,WAAU,UAAS,UAAS,aAAY,YAAW,MAAK,QAAO,QAAO,SAAQ,WAAU,SAAQ,YAAW,UAAS,WAAU,WAAU,UAAS,WAAU,UAAS,UAAS,SAAQ,YAAW,QAAO,YAAW,UAAS,UAAS,SAAQ,SAAQ,QAAO,UAAS,QAAO,QAAO,WAAU,WAAU,WAAU,WAAU,QAAO,OAAM,QAAO,SAAQ,SAAQ,OAAM,SAAQ,SAAQ,UAAS,WAAU,WAAU,WAAU,WAAU,SAAQ,SAAQ,WAAU,UAAS,WAAU,QAAO,SAAQ,SAAQ,UAAS,WAAU,YAAW,UAAS,WAAU,YAAW,UAAS,SAAQ,OAAM,SAAQ,WAAU,SAAQ,QAAO,YAAW,WAAU,aAAY,SAAQ,UAAS,SAAQ,SAAQ,aAAY,aAAY,YAAW,YAAW,WAAU,YAAW,YAAW,WAAU,WAAU,WAAU,WAAU,SAAQ,UAAS,UAAS,WAAU,QAAO,OAAM,UAAS,OAAM,SAAQ,WAAU,YAAW,aAAY,aAAY,UAAS,SAAQ,UAAS,SAAQ,UAAS,WAAU,QAAO,UAAS,SAAQ,aAAY,QAAO,SAAQ,UAAS,UAAS,YAAW,QAAO,WAAU,UAAS,SAAQ,UAAS,WAAU,WAAU,WAAU,YAAW,YAAW,YAAW,WAAU,WAAU,UAAS,SAAQ,WAAU,WAAU,QAAO,SAAQ,SAAQ,SAAQ,UAAS,SAAQ,SAAQ,SAAQ,QAAO,WAAU,WAAU,YAAW,YAAW,YAAW,cAAa,cAAa,aAAY,SAAQ,UAAS,UAAS,WAAU,YAAW,SAAQ,UAAS,SAAQ,UAAS,WAAU,SAAQ,YAAW,WAAU,YAAW,aAAY,aAAY,cAAa,cAAa,cAAa,cAAa,aAAY,WAAU,SAAQ,YAAW,WAAU,UAAS,YAAW,SAAQ,UAAS,UAAS,SAAQ,UAAS,WAAU,cAAa,SAAQ,QAAO,SAAQ,UAAS,UAAS,WAAU,WAAU,YAAW,YAAW,WAAU,aAAY,YAAW,UAAS,WAAU,SAAQ,aAAY,gBAAe,YAAW,eAAc,UAAS,WAAU,YAAW,aAAY,YAAW,YAAW,YAAW,UAAS,UAAS,WAAU,WAAU,YAAW,WAAU,SAAQ,UAAS,WAAU,UAAS,cAAa,SAAQ,UAAS,WAAU,WAAU,UAAS,WAAU,UAAS,QAAO,SAAQ,SAAQ,SAAQ,UAAS,YAAW,WAAU,SAAQ,WAAU,SAAQ,WAAU,WAAU,UAAS,WAAU,WAAU,WAAU,UAAS,UAAS,WAAU,SAAQ,UAAS,SAAQ,SAAQ,UAAS,SAAQ,UAAS,UAAS,YAAW,YAAW,UAAS,YAAW,UAAS,aAAY,SAAQ,YAAW,eAAc,UAAS,UAAS,YAAW,SAAQ,WAAU,UAAS,WAAU,WAAU,SAAQ,YAAW,QAAO,SAAQ,WAAU,YAAW,YAAW,aAAY,YAAW,aAAY,YAAW,UAAS,SAAQ,WAAU,WAAU,aAAY,WAAU,aAAY,YAAW,SAAQ,UAAS,SAAQ,WAAU,YAAW,YAAW,WAAU,WAAU,SAAQ,UAAS,SAAQ,QAAO,SAAQ,UAAS,SAAQ,SAAQ,WAAU,YAAW,WAAU,WAAU,WAAU,WAAU,YAAW,SAAQ,SAAQ,OAAM,QAAO,SAAQ,UAAS,QAAO,OAAM,YAAW,QAAO,QAAO,SAAQ,UAAS,WAAU,SAAQ,YAAW,OAAM,SAAQ,SAAQ,SAAQ,UAAS,SAAQ,UAAS,WAAU,aAAY,OAAM,OAAM,QAAO,WAAU,WAAU,WAAU,YAAW,UAAS,SAAQ,UAAS,WAAU,YAAW,UAAS,WAAU,WAAU,UAAS,aAAY,cAAa,aAAY,YAAW,WAAU,WAAU,UAAS,WAAU,SAAQ,SAAQ,aAAY,UAAS,WAAU,aAAY,YAAW,SAAQ,WAAU,WAAU,UAAS,WAAU,UAAS,UAAS,SAAQ,YAAW,SAAQ,UAAS,SAAQ,YAAW,aAAY,WAAU,YAAW,UAAS,WAAU,WAAU,SAAQ,WAAU,QAAO,SAAQ,SAAQ,WAAU,WAAU,SAAQ,UAAS,YAAW,YAAW,UAAS,aAAY,WAAU,YAAW,WAAU,WAAU,WAAU,SAAQ,UAAS,SAAQ,QAAO,OAAM,WAAU,YAAW,cAAa,cAAa,aAAY,UAAS,UAAS,WAAU,aAAY,aAAY,WAAU,YAAW,SAAQ,UAAS,SAAQ,SAAQ,UAAS,YAAW,WAAU,aAAY,WAAU,OAAM,WAAU,WAAU,UAAS,YAAW,aAAY,SAAQ,SAAQ,aAAY,UAAS,aAAY,SAAQ,UAAS,QAAO,OAAM,QAAO,SAAQ,SAAQ,WAAU,WAAU,WAAU,SAAQ,eAAc,SAAQ,SAAQ,UAAS,WAAU,SAAQ,SAAQ,WAAU,QAAO,WAAU,aAAY,aAAY,SAAQ,WAAU,aAAY,YAAW,WAAU,WAAU,UAAS,WAAU,SAAQ,SAAQ,UAAS,SAAQ,SAAQ,SAAQ,SAAQ,WAAU,YAAW,aAAY,WAAU,SAAQ,SAAQ,QAAO,UAAS,SAAQ,UAAS,SAAQ,SAAQ,QAAO,SAAQ,UAAS,UAAS,WAAU,QAAO,UAAS,UAAS,UAAS,WAAU,aAAY,YAAW,UAAS,SAAQ,WAAU,SAAQ,WAAU,SAAQ,SAAQ,WAAU,UAAS,QAAO,aAAY,SAAQ,UAAS,UAAS,UAAS,YAAW,QAAO,SAAQ,WAAU,UAAS,WAAU,SAAQ,WAAU,SAAQ,SAAQ,UAAS,WAAU,UAAS,UAAS,QAAO,UAAS,UAAS,SAAQ,UAAS,UAAS,QAAO,SAAQ,UAAS,OAAM,QAAO,WAAU,SAAQ,UAAS,UAAS,SAAQ,UAAS,SAAQ,UAAS,WAAU,QAAO,UAAS,UAAS,YAAW,SAAQ,UAAS,SAAQ,SAAQ,SAAQ,SAAQ,QAAO,QAAO,UAAS,OAAM,QAAO,UAAS,WAAU,WAAU,YAAW,YAAW,WAAU,WAAU,YAAW,YAAW,YAAW,aAAY,SAAQ,SAAQ,SAAQ,QAAO,SAAQ,QAAO,SAAQ,SAAQ,SAAQ,UAAS,UAAS,SAAQ,SAAQ,QAAO,SAAQ,SAAQ,UAAS,SAAQ,WAAU,UAAS,QAAO,SAAQ,SAAQ,SAAQ,UAAS,SAAQ,SAAQ,SAAQ,UAAS,SAAQ,SAAQ,SAAQ,SAAQ,UAAS,UAAS,SAAQ,SAAQ,SAAQ,UAAS,WAAU,YAAW,SAAQ,UAAS,SAAQ,SAAQ,UAAS,UAAS,WAAU,aAAY,UAAS,YAAW,YAAW,WAAU,YAAW,QAAO,QAAO,SAAQ,UAAS,aAAY,WAAU,QAAO,WAAU,WAAU,YAAW,YAAW,SAAQ,SAAQ,SAAQ,UAAS,SAAQ,QAAO,SAAQ,SAAQ,QAAO,WAAU,SAAQ,UAAS,UAAS,WAAU,UAAS,SAAQ,QAAO,UAAS,SAAQ,UAAS,QAAO,QAAO,SAAQ,QAAO,SAAQ,SAAQ,UAAS,QAAO,SAAQ,UAAS,UAAS,UAAS,UAAS,UAAS,SAAQ,SAAQ,UAAS,SAAQ,WAAU,SAAQ,SAAQ,WAAU,SAAQ,UAAS,YAAW,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,OAAM,UAAS,QAAO,QAAO,WAAU,SAAQ,YAAW,UAAS,UAAS,QAAO,SAAQ,QAAO,QAAO,SAAQ,UAAS,WAAU,WAAU,UAAS,UAAS,SAAQ,QAAO,QAAO,WAAU,WAAU,WAAU,WAAU,OAAM,UAAS,UAAS,UAAS,UAAS,UAAS,QAAO,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,QAAO,QAAO,UAAS,YAAW,QAAO,WAAU,WAAU,WAAU,WAAU,WAAU,QAAO,SAAQ,UAAS,OAAM,UAAS,YAAW,WAAU,SAAQ,UAAS,SAAQ,WAAU,UAAS,SAAQ,SAAQ,WAAU,YAAW,OAAM,YAAW,WAAU,WAAU,YAAW,YAAW,SAAQ,SAAQ,UAAS,SAAQ,SAAQ,SAAQ,YAAW,YAAW,SAAQ,UAAS,WAAU,WAAU,WAAU,SAAQ,SAAQ,SAAQ,SAAQ,UAAS,UAAS,YAAW,OAAM,UAAS,SAAQ,UAAS,SAAQ,OAAM,YAAW,YAAW,SAAQ,UAAS,SAAQ,QAAO,UAAS,QAAO,SAAQ,QAAO,SAAQ,SAAQ,SAAQ,WAAU,SAAQ,UAAS,OAAM,QAAO,SAAQ,WAAU,cAAa,YAAW,cAAa,cAAa,WAAU,WAAU,WAAU,SAAQ,UAAS,UAAS,QAAO,WAAU,YAAW,YAAW,cAAa,UAAS,YAAW,WAAU,WAAU,UAAS,aAAY,UAAS,UAAS,YAAW,WAAU,WAAU,UAAS,OAAM,QAAO,YAAW,aAAY,UAAS,SAAQ,SAAQ,SAAQ,SAAQ,aAAY,QAAO,SAAQ,UAAS,QAAO,UAAS,aAAY,aAAY,WAAU,OAAM,YAAW,SAAQ,SAAQ,QAAO,WAAU,WAAU,WAAU,SAAQ,UAAS,YAAW,aAAY,YAAW,WAAU,UAAS,WAAU,YAAW,OAAM,UAAS,OAAM,QAAO,WAAU,YAAW,aAAY,SAAQ,SAAQ,SAAQ,SAAQ,SAAQ,UAAS,UAAS,WAAU,QAAO,SAAQ,UAAS,WAAU,SAAQ,UAAS,SAAQ,SAAQ,QAAO,SAAQ,UAAS,WAAU,SAAQ,YAAW,UAAS,WAAU,SAAQ,SAAQ,SAAQ,OAAM,WAAU,QAAO,SAAQ,WAAU,YAAW,OAAM,QAAO,YAAW,QAAO,UAAS,WAAU,WAAU,UAAS,WAAU,YAAW,OAAM,SAAQ,SAAQ,SAAQ,SAAQ,SAAQ,SAAQ,UAAS,UAAS,UAAS,SAAQ,SAAQ,SAAQ,QAAO,QAAO,SAAQ,UAAS,UAAS,QAAO,SAAQ,UAAS,WAAU,SAAQ,UAAS,QAAO,SAAQ,UAAS,OAAM,SAAQ,QAAO,SAAQ,SAAQ,UAAS,WAAU,WAAU,WAAU,SAAQ,UAAS,UAAS,SAAQ,SAAQ,UAAS,SAAQ,WAAU,UAAS,QAAO,SAAQ,QAAO,SAAQ,UAAS,SAAQ,QAAO,SAAQ,QAAO,QAAO,QAAO,QAAO,WAAU,QAAO,UAAS,QAAO,SAAQ,UAAS,UAAS,SAAQ,UAAS,UAAS,SAAQ,UAAS,UAAS,WAAU,WAAU,SAAQ,UAAS,WAAU,YAAW,aAAY,aAAY,WAAU,QAAO,SAAQ,QAAO,WAAU,YAAW,YAAW,YAAW,QAAO,QAAO,SAAQ,UAAS,QAAO,UAAS,UAAS,WAAU,QAAO,QAAO,WAAU,SAAQ,UAAS,SAAQ,SAAQ,WAAU,UAAS,SAAQ,WAAU,QAAO,QAAO,SAAQ,QAAO,OAAM,QAAO,WAAU,aAAY,aAAY,YAAW,WAAU,WAAU,YAAW,aAAY,aAAY,YAAW,WAAU,YAAW,YAAW,YAAW,UAAS,WAAU,WAAU,QAAO,WAAU,YAAW,YAAW,WAAU,WAAU,YAAW,WAAU,WAAU,aAAY,aAAY,YAAW,aAAY,UAAS,WAAU,WAAU,YAAW,SAAQ,UAAS,UAAS,UAAS,YAAW,QAAO,OAAM,QAAO,UAAS,UAAS,UAAS,WAAU,WAAU,QAAO,SAAQ,UAAS,QAAO,OAAM,WAAU,WAAU,YAAW,WAAU,WAAU,QAAO,UAAS,WAAU,WAAU,UAAS,WAAU,QAAO,SAAQ,SAAQ,UAAS,QAAO,WAAU,QAAO,WAAU,YAAW,SAAQ,SAAQ,UAAS,SAAQ,SAAQ,SAAQ,QAAO,UAAS,UAAS,SAAQ,WAAU,SAAQ,QAAO,WAAU,SAAQ,SAAQ,UAAS,OAAM,WAAU,UAAS,SAAQ,UAAS,SAAQ,YAAW,aAAY,UAAS,UAAS,UAAS,OAAM,YAAW,UAAS,WAAU,SAAQ,SAAQ,SAAQ,UAAS,UAAS,SAAQ,UAAS,YAAW,YAAW,QAAO,YAAW,WAAU,SAAQ,YAAW,SAAQ,UAAS,UAAS,WAAU,QAAO,UAAS,UAAS,UAAS,UAAS,SAAQ,YAAW,UAAS,WAAU,UAAS,SAAQ,WAAU,YAAW,QAAO,SAAQ,QAAO,QAAO,UAAS,UAAS,aAAY,SAAQ,SAAQ,UAAS,WAAU,UAAS,SAAQ,SAAQ,SAAQ,QAAO,WAAU,UAAS,UAAS,QAAO,UAAS,UAAS,UAAS,UAAS,SAAQ,UAAS,WAAU,aAAY,WAAU,WAAU,UAAS,SAAQ,SAAQ,UAAS,UAAS,WAAU,WAAU,WAAU,UAAS,UAAS,WAAU,SAAQ,UAAS,SAAQ,UAAS,WAAU,SAAQ,UAAS,YAAW,YAAW,YAAW,UAAS,WAAU,WAAU,UAAS,SAAQ,UAAS,SAAQ,UAAS,WAAU,QAAO,UAAS,WAAU,WAAU,YAAW,UAAS,UAAS,QAAO,SAAQ,UAAS,YAAW,WAAU,UAAS,WAAU,UAAS,kBAAiB,WAAU,QAAO,SAAQ,WAAU,UAAS,UAAS,UAAS,UAAS,SAAQ,WAAU,UAAS,WAAU,UAAS,SAAQ,QAAO,UAAS,SAAQ,UAAS,WAAU,YAAW,YAAW,UAAS,WAAU,UAAS,UAAS,UAAS,SAAQ,QAAO,SAAQ,WAAU,YAAW,YAAW,WAAU,YAAW,YAAW,aAAY,SAAQ,UAAS,OAAM,UAAS,SAAQ,UAAS,SAAQ,WAAU,WAAU,WAAU,UAAS,SAAQ,WAAU,WAAU,WAAU,WAAU,YAAW,UAAS,QAAO,UAAS,SAAQ,WAAU,UAAS,UAAS,UAAS,UAAS,aAAY,WAAU,UAAS,WAAU,SAAQ,WAAU,UAAS,UAAS,UAAS,SAAQ,UAAS,SAAQ,SAAQ,UAAS,SAAQ,SAAQ,SAAQ,UAAS,WAAU,SAAQ,SAAQ,UAAS,SAAQ,UAAS,UAAS,aAAY,UAAS,WAAU,SAAQ,UAAS,UAAS,SAAQ,UAAS,UAAS,SAAQ,WAAU,QAAO,UAAS,YAAW,WAAU,SAAQ,SAAQ,YAAW,YAAW,YAAW,UAAS,WAAU,UAAS,UAAS,YAAW,YAAW,aAAY,cAAa,aAAY,UAAS,WAAU,YAAW,UAAS,WAAU,WAAU,YAAW,SAAQ,UAAS,WAAU,UAAS,OAAM,WAAU,SAAQ,QAAO,QAAO,SAAQ,YAAW,SAAQ,UAAS,aAAY,UAAS,WAAU,YAAW,WAAU,WAAU,QAAO,SAAQ,QAAO,UAAS,WAAU,WAAU,WAAU,QAAO,SAAQ,QAAO,SAAQ,UAAS,WAAU,WAAU,SAAQ,SAAQ,WAAU,UAAS,UAAS,WAAU,YAAW,SAAQ,UAAS,YAAW,SAAQ,UAAS,WAAU,SAAQ,SAAQ,UAAS,UAAS,UAAS,YAAW,SAAQ,SAAQ,UAAS,SAAQ,UAAS,WAAU,WAAU,UAAS,QAAO,UAAS,SAAQ,WAAU,SAAQ,UAAS,SAAQ,WAAU,SAAQ,QAAO,SAAQ,UAAS,SAAQ,UAAS,QAAO,SA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",
|
|
47
|
-
"debugId": "
|
|
49
|
+
"mappings": "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S,UAAS,SAAQ,SAAQ,UAAS,SAAQ,WAAU,WAAU,SAAQ,eAAc,WAAU,WAAU,OAAM,UAAS,SAAQ,UAAS,SAAQ,WAAU,UAAS,SAAQ,WAAU,OAAM,UAAS,SAAQ,WAAU,YAAW,QAAO,UAAS,UAAS,WAAU,WAAU,SAAQ,UAAS,SAAQ,WAAU,SAAQ,WAAU,WAAU,WAAU,UAAS,UAAS,UAAS,SAAQ,WAAU,QAAO,WAAU,SAAQ,UAAS,UAAS,WAAU,WAAU,SAAQ,QAAO,SAAQ,SAAQ,SAAQ,WAAU,SAAQ,UAAS,UAAS,YAAW,WAAU,UAAS,WAAU,SAAQ,UAAS,WAAU,UAAS,WAAU,UAAS,UAAS,UAAS,WAAU,WAAU,WAAU,WAAU,YAAW,SAAQ,UAAS,UAAS,WAAU,YAAW,SAAQ,UAAS,WAAU,YAAW,aAAY,aAAY,YAAW,YAAW,UAAS,cAAa,WAAU,WAAU,WAAU,UAAS,QAAO,SAAQ,cAAa,UAAS,WAAU,YAAW,UAAS,WAAU,WAAU,YAAW,YAAW,aAAY,WAAU,YAAW,YAAW,SAAQ,UAAS,SAAQ,UAAS,YAAW,WAAU,SAAQ,QAAO,SAAQ,SAAQ,YAAW,SAAQ,QAAO,SAAQ,QAAO,aAAY,aAAY,aAAY,cAAa,UAAS,SAAQ,UAAS,aAAY,SAAQ,YAAW,QAAO,YAAW,SAAQ,aAAY,aAAY,SAAQ,UAAS,YAAW,aAAY,aAAY,SAAQ,UAAS,YAAW,YAAW,WAAU,YAAW,WAAU,SAAQ,aAAY,QAAO,SAAQ,UAAS,YAAW,UAAS,UAAS,WAAU,YAAW,QAAO,QAAO,SAAQ,WAAU,SAAQ,UAAS,WAAU,WAAU,WAAU,UAAS,QAAO,QAAO,UAAS,WAAU,WAAU,YAAW,aAAY,aAAY,YAAW,aAAY,SAAQ,SAAQ,UAAS,WAAU,UAAS,WAAU,WAAU,SAAQ,SAAQ,SAAQ,QAAO,UAAS,WAAU,WAAU,UAAS,WAAU,aAAY,UAAS,UAAS,UAAS,YAAW,YAAW,WAAU,WAAU,UAAS,YAAW,YAAW,YAAW,YAAW,YAAW,WAAU,aAAY,aAAY,YAAW,aAAY,YAAW,YAAW,YAAW,YAAW,SAAQ,UAAS,YAAW,WAAU,WAAU,WAAU,WAAU,UAAS,QAAO,SAAQ,UAAS,SAAQ,aAAY,WAAU,WAAU,UAAS,YAAW,aAAY,UAA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AS,SAAQ,UAAS,SAAQ,UAAS,UAAS,UAAS,QAAO,YAAW,YAAW,WAAU,YAAW,YAAW,YAAW,WAAU,UAAS,SAAQ,UAAS,UAAS,SAAQ,WAAU,UAAS,QAAO,QAAO,OAAM,QAAO,SAAQ,UAAS,SAAQ,OAAM,UAAS,SAAQ,SAAQ,OAAM,SAAQ,UAAS,WAAU,SAAQ,SAAQ,UAAS,YAAW,SAAQ,SAAQ,UAAS,SAAQ,UAAS,YAAW,UAAS,WAAU,YAAW,SAAQ,UAAS,SAAQ,QAAO,SAAQ,SAAQ,SAAQ,UAAS,UAAS,QAAO,SAAQ,YAAW,QAAO,SAAQ,UAAS,YAAW,UAAS,UAAS,OAAM,QAAO,UAAS,SAAQ,OAAM,QAAO,SAAQ,QAAO,OAAM,QAAO,WAAU,QAAO,OAAM,QAAO,QAAO,SAAQ,SAAQ,UAAS,UAAS,SAAQ,QAAO,UAAS,OAAM,SAAQ,UAAS,SAAQ,UAAS,SAAQ,UAAS,UAAS,aAAY,UAAS,UAAS,SAAQ,SAAQ,UAAS,WAAU,aAAY,aAAY,WAAU,YAAW,YAAW,WAAU,SAAQ,SAAQ,SAAQ,SAAQ,WAAU,YAAW,YAAW,SAAQ,WAAU,WAAU,YAAW,QAAO,YAAW,YAAW,UAAS,QAAO,UAAS,WAAU,SAAQ,YAAW,aAAY,cAAa,SAAQ,UAAS,UAAS,SAAQ,SAAQ,YAAW,aAAY,QAAO,QAAO,QAAO,YAAW,QAAO,SAAQ,UAAS,WAAU,QAAO,SAAQ,WAAU,QAAO,SAAQ,UAAS,UAAS,QAAO,UAAS,UAAS,UAAS,UAAS,WAAU,SAAQ,QAAO,WAAU,QAAO,SAAQ,SAAQ,QAAO,SAAQ,YAAW,WAAU,QAAO,QAAO,UAAS,UAAS,UAAS,UAAS,QAAO,SAAQ,UAAS,UAAS,UAAS,UAAS,MAAK,OAAM,UAAS,UAAS,UAAS,UAAS,WAAU,WAAU,WAAU,WAAU,SAAQ,UAAS,SAAQ,UAAS,UAAS,WAAU,SAAQ,SAAQ,UAAS,WAAU,QAAO,WAAU,YAAW,WAAU,YAAW,aAAY,YAAW,SAAQ,QAAO,SAAQ,QAAO,SAAQ,WAAU,SAAQ,UAAS,YAAW,QAAO,UAAS,cAAa,UAAS,aAAY,WAAU,WAAU,QAAO,QAAO,SAAQ,SAAQ,UAAS,UAAS,SAAQ,QAAO,SAAQ,SAAQ,UAAS,QAAO,cAAa,cAAa,UAAS,WAAU,WAAU,QAAO,YAAW,WAAU,aAAY,SAAQ,QAAO,QAAO,WAAU,QAAO,aAAY,QAAO,SAAQ,QAAO,QAAO,SAAQ,UAAS,UAAS,WAAU,WAAU,SAAQ,UAAS,YAAW,cAAa,SAAQ,WAAU,WAAU,YAAW,YAAW,WAAU,SAAQ,QAAO,QAAO,SAAQ,QAAO,UAAS,WAAU,WAAU,UAAS,QAAO,WAAU,UAAS,YAAW,YAAW,OAAM,WAAU,aAAY,aAAY,cAAa,cAAa,UAAS,UAAS,OAAM,WAAU,WAAU,WAAU,UAAS,QAAO,QAAO,SAAQ,UAAS,SAAQ,QAAO,OAAM,QAAO,SAAQ,aAAY,OAAM,SAAQ,SAAQ,UAAS,OAAM,aAAY,WAAU,UAAS,SAAQ,YAAW,SAAQ,SAAQ,UAAS,SAAQ,SAAQ,QAAO,SAAQ,UAAS,UAAS,SAAQ,UAAS,WAAU,QAAO,UAAS,YAAW,YAAW,QAAO,SAAQ,UAAS,OAAM,UAAS,QAAO,WAAU,UAAS,SAAQ,SAAQ,UAAS,YAAW,UAAS,WAAU,YAAW,UAAS,WAAU,YAAW,WAAU,UAAS,WAAU,UAAS,UAAS,WAAU,WAAU,cAAa,cAAa,QAAO,YAAW,YAAW,cAAa,SAAQ,OAAM,SAAQ,UAAS,UAAS,WAAU,YAAW,QAAO,UAAS,SAAQ,UAAS,WAAU,QAAO,SAAQ,UAAS,YAAW,YAAW,SAAQ,aAAY,OAAM,QAAO,SAAQ,YAAW,SAAQ,YAAW,YAAW,aAAY,aAAY,YAAW,YAAW,SAAQ,UAAS,WAAU,UAAS,WAAU,YAAW,UAAS,UAAS,WAAU,UAAS,SAAQ,UAAS,WAAU,UAAS,QAAO,QAAO,YAAW,WAAU,aAAY,YAAW,aAAY,aAAY,aAAY,YAAW,SAAQ,WAAU,UAAS,UAAS,WAAU,UAAS,UAAS,QAAO,SAAQ,UAAS,WAAU,UAAS,YAAW,aAAY,cAAa,cAAa,SAAQ,UAAS,UAAS,YAAW,UAAS,UAAS,cAAa,UAAS,UAAS,SAAQ,UAAS,SAAQ,QAAO,SAAQ,WAAU,YAAW,YAAW,aAAY,aAAY,cAAa,WAAU,QAAO,OAAM,QAAO,QAAO,QAAO,UAAS,WAAU,UAAS,YAAW,SAAQ,SAAQ,aAAY,OAAM,QAAO,SAAQ,SAAQ,SAAQ,WAAU,WAAU,UAAS,SAAQ,QAAO,QAAO,UAAS,aAAY,WAAU,SAAQ,SAAQ,SAAQ,UAAS,YAAW,SAAQ,YAAW,YAAW,UAAS,cAAa,cAAa,YAAW,YAAW,aAAY,aAAY,WAAU,aAAY,cAAa,cAAa,WAAU,YAAW,YAAW,WAAU,aAAY,SAAQ,cAAa,QAAO,YAAW,YAAW,aAAY,WAAU,YAAW,WAAU,SAAQ,UAAS,YAAW,SAAQ,QAAO,SAAQ,SAAQ,UAAS,WAAU,YAAW,YAAW,aAAY,SAAQ,YAAW,SAAQ,WAAU,UAAS,QAAO,YAAW,YAAW,cAAa,cAAa,SAAQ,aAAY,QAAO,UAAS,SAAQ,WAAU,UAAS,YAAW,SAAQ,QAAO,WAAU,WAAU,UAAS,SAAQ,UAAS,YAAW,SAAQ,WAAU,YAAW,SAAQ,WAAU,UAAS,UAAS,WAAU,WAAU,YAAW,UAAS,aAAY,YAAW,UAAS,QAAO,SAAQ,UAAS,SAAQ,QAAO,UAAS,WAAU,SAAQ,UAAS,WAAU,WAAU,SAAQ,UAAS,YAAW,YAAW,SAAQ,QAAO,UAAS,UAAS,WAAU,QAAO,UAAS,SAAQ,aAAY,SAAQ,UAAS,UAAS,WAAU,SAAQ,SAAQ,UAAS,UAAS,SAAQ,UAAS,YAAW,QAAO,UAAS,UAAS,SAAQ,SAAQ,UAAS,YAAW,SAAQ,UAAS,WAAU,UAAS,UAAS,SAAQ,YAAW,WAAU,aAAY,aAAY,UAAS,aAAY,OAAM,YAAW,eAAc,aAAY,UAAS,WAAU,OAAM,WAAU,SAAQ,UAAS,SAAQ,SAAQ,SAAQ,UAAS,SAAQ,QAAO,aAAY,aAAY,aAAY,WAAU,YAAW,YAAW,UAAS,WAAU,UAAS,WAAU,WAAU,QAAO,WAAU,UAAS,SAAQ,UAAS,UAAS,SAAQ,WAAU,WAAU,SAAQ,QAAO,SAAQ,YAAW,UAAS,SAAQ,UAAS,SAAQ,QAAO,SAAQ,UAAS,SAAQ,UAAS,UAAS,SAAQ,SAAQ,WAAU,UAAS,SAAQ,UAAS,YAAW,YAAW,WAAU,SAAQ,UAAS,WAAU,YAAW,aAAY,aAAY,WAAU,YAAW,SAAQ,UAAS,SAAQ,UAAS,SAAQ,SAAQ,WAAU,QAAO,SAAQ,SAAQ,UAAS,QAAO,UAAS,WAAU,UAAS,WAAU,QAAO,SAAQ,SAAQ,UAAS,WAAU,WAAU,SAAQ,mBAAkB,UAAS,UAAS,WAAU,SAAQ,SAAQ,SAAQ,WAAU,SAAQ,SAAQ,YAAW,SAAQ,UAAS,YAAW,aAAY,aAAY,aAAY,aAAY,UAAS,WAAU,WAAU,YAAW,YAAW,SAAQ,UAAS,UAAS,WAAU,UAAS,SAAQ,UAAS,SAAQ,UAAS,SAAQ,aAAY,cAAa,SAAQ,cAAa,cAAa,SAAQ,WAAU,YAAW,SAAQ,SAAQ,UAAS,SAAQ,cAAa,aAAY,SAAQ,SAAQ,WAAU,QAAO,WAAU,YAAW,aAAY,SAAQ,YAAW,aAAY,aAAY,cAAa,cAAa,SAAQ,UAAS,SAAQ,QAAO,OAAM,UAAS,WAAU,WAAU,SAAQ,UAAS,UAAS,UAAS,UAAS,SAAQ,SAAQ,QAAO,QAAO,QAAO,QAAO,SAAQ,SAAQ,UAAS,UAAS,UAAS,WAAU,WAAU,OAAM,UAAS,QAAO,WAAU,UAAS,QAAO,QAAO,YAAW,YAAW,QAAO,YAAW,YAAW,SAAQ,UAAS,WAAU,QAAO,WAAU,YAAW,QAAO,WAAU,OAAM,SAAQ,SAAQ,SAAQ,QAAO,SAAQ,QAAO,OAAM,UAAS,aAAY,YAAW,YAAW,WAAU,YAAW,WAAU,WAAU,QAAO,UAAS,QAAO,SAAQ,QAAO,SAAQ,UAAS,QAAO,UAAS,SAAQ,OAAM,UAAS,WAAU,WAAU,WAAU,YAAW,YAAW,YAAW,SAAQ,UAAS,WAAU,WAAU,cAAa,eAAc,SAAQ,UAAS,UAAS,aAAY,cAAa,aAAY,cAAa,eAAc,eAAc,aAAY,aAAY,UAAS,WAAU,WAAU,QAAO,QAAO,SAAQ,UAAS,SAAQ,QAAO,SAAQ,UAAS,UAAS,OAAM,QAAO,UAAS,UAAS,SAAQ,QAAO,UAAS,YAAW,UAAS,SAAQ,UAAS,WAAU,WAAU,UAAS,WAAU,WAAU,SAAQ,UAAS,WAAU,WAAU,UAAS,SAAQ,SAAQ,UAAS,SAAQ,WAAU,UAAS,UAAS,SAAQ,UAAS,SAAQ,SAAQ,UAAS,YAAW,SAAQ,QAAO,YAAW,YAAW,cAAa,cAAa,WAAU,UAAS,WAAU,WAAU,SAAQ,UAAS,SAAQ,WAAU,UAAS,QAAO,SAAQ,SAAQ,YAAW,YAAW,UAAS,WAAU,UAAS,UAAS,aAAY,WAAU,YAAW,WAAU,UAAS,SAAQ,UAAS,WAAU,UAAS,SAAQ,OAAM,QAAO,SAAQ,WAAU,QAAO,UAAS,WAAU,WAAU,YAAW,WAAU,UAAS,QAAO,SAAQ,UAAS,YAAW,SAAQ,WAAU,UAAS,YAAW,YAAW,WAAU,SAAQ,WAAU,QAAO,QAAO,YAAW,UAAS,YAAW,YAAW,WAAU,SAAQ,YAAW,QAAO,SAAQ,YAAW,YAAW,aAAY,YAAW,SAAQ,YAAW,SAAQ,WAAU,UAAS,WAAU,SAAQ,SAAQ,UAAS,WAAU,QAAO,WAAU,WAAU,YAAW,WAAU,WAAU,SAAQ,WAAU,UAAS,SAAQ,SAAQ,MAAK,UAAS,WAAU,QAAO,SAAQ,SAAQ,UAAS,SAAQ,UAAS,UAAS,WAAU,SAAQ,QAAO,SAAQ,UAAS,QAAO,SAAQ,UAAS,WAAU,YAAW,WAAU,YAAW,SAAQ,QAAO,SAAQ,QAAO,UAAS,SAAQ,UAAS,SAAQ,UAAS,UAAS,WAAU,UAAS,WAAU,WAAU,SAAQ,QAAO,WAAU,YAAW,SAAQ,WAAU,YAAW,UAAS,SAAQ,QAAO,SAAQ,UAAS,UAAS,WAAU,QAAO,SAAQ,UAAS,QAAO,SAAQ,UAAS,UAAS,QAAO,SAAQ,SAAQ,WAAU,UAAS,WAAU,YAAW,SAAQ,QAAO,SAAQ,UAAS,SAAQ,YAAW,SAAQ,UAAS,YAAW,WAAU,aAAY,aAAY,SAAQ,QAAO,SAAQ,YAAW,QAAO,WAAU,OAAM,QAAO,SAAQ,UAAS,SAAQ,YAAW,QAAO,WAAU,SAAQ,WAAU,QAAO,SAAQ,UAAS,WAAU,QAAO,SAAQ,UAAS,SAAQ,QAAO,SAAQ,WAAU,WAAU,WAAU,YAAW,YAAW,SAAQ,YAAW,UAAS,WAAU,YAAW,YAAW,UAAS,UAAS,WAAU,UAAS,QAAO,WAAU,SAAQ,SAAQ,UAAS,WAAU,WAAU,WAAU,SAAQ,SAAQ,SAAQ,QAAO,SAAQ,OAAM,QAAO,SAAQ,SAAQ,UAAS,WAAU,WAAU,YAAW,QAAO,YAAW,QAAO,WAAU,QAAO,SAAQ,UAAS,UAAS,WAAU,WAAU,SAAQ,SAAQ,UAAS,UAAS,WAAU,YAAW,WAAU,SAAQ,SAAQ,SAAQ,QAAO,aAAY,WAAU,YAAW,QAAO,SAAQ,SAAQ,SAAQ,UAAS,QAAO,SAAQ,SAAQ,SAAQ,YAAW,SAAQ,UAAS,UAAS,YAAW,UAAS,WAAU,UAAS,SAAQ,UAAS,WAAU,UAAS,WAAU,UAAS,YAAW,YAAW,SAAQ,UAAS,UAAS,SAAQ,SAAQ,UAAS,UAAS,YAAW,YAAW,UAAS,SAAQ,UAAS,UAAS,SAAQ,QAAO,SAAQ,WAAU,SAAQ,SAAQ,QAAO,aAAY,UAAS,SAAQ,UAAS,UAAS,OAAM,QAAO,WAAU,QAAO,SAAQ,YAAW,YAAW,SAAQ,QAAO,SAAQ,aAAY,aAAY,YAAW,SAAQ,aAAY,aAAY,YAAW,SAAQ,UAAS,YAAW,WAAU,YAAW,WAAU,YAAW,SAAQ,UAAS,QAAO,SAAQ,UAAS,UAAS,WAAU,WAAU,UAAS,WAAU,WAAU,YAAW,SAAQ,UAAS,YAAW,WAAU,QAAO,SAAQ,OAAM,UAAS,QAAO,SAAQ,SAAQ,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,SAAQ,UAAS,SAAQ,UAAS,SAAQ,UAAS,UAAS,UAAS,SAAQ,UAAS,UAAS,WAAU,WAAU,SAAQ,YAAW,UAAS,SAAQ,SAAQ,UAAS,UAAS,SAAQ,QAAO,WAAU,YAAW,SAAQ,UAAS,WAAU,UAAS,SAAQ,WAAU,UAAS,UAAS,UAAS,WAAU,SAAQ,UAAS,SAAQ,UAAS,SAAQ,MAAK,QAAO,QAAO,SAAQ,YAAW,WAAU,SAAQ,OAAM,aAAY,aAAY,YAAW,YAAW,aAAY,UAAS,SAAQ,UAAS,SAAQ,SAAQ,OAAM,QAAO,UAAS,SAAQ,QAAO,UAAS,UAAS,SAAQ,QAAO,WAAU,YAAW,UAAS,WAAU,WAAU,UAAS,WAAU,UAAS,OAAM,SAAQ,UAAS,SAAQ,UAAS,UAAS,SAAQ,WAAU,YAAW,aAAY,aAAY,OAAM,QAAO,SAAQ,WAAU,WAAU,QAAO,WAAU,SAAQ,WAAU,QAAO,SAAQ,UAAS,UAAS,SAAQ,QAAO,WAAU,UAAS,UAAS,WAAU,WAAU,UAAS,WAAU,WAAU,UAAS,YAAW,WAAU,YAAW,YAAW,UAAS,WAAU,UAAS,WAAU,aAAY,WAAU,YAAW,QAAO,QAAO,SAAQ,SAAQ,UAAS,UAAS,OAAM,WAAU,WAAU,SAAQ,SAAQ,SAAQ,QAAO,WAAU,YAAW,SAAQ,UAAS,QAAO,SAAQ,QAAO,WAAU,SAAQ,QAAO,SAAQ,UAAS,SAAQ,SAAQ,SAAQ,QAAO,WAAU,QAAO,UAAS,UAAS,UAAS,WAAU,QAAO,WAAU,YAAW,SAAQ,WAAU,WAAU,WAAU,SAAQ,YAAW,UAAS,YAAW,SAAQ,UAAS,WAAU,UAAS,YAAW,UAAS,WAAU,WAAU,YAAW,YAAW,SAAQ,aAAY,WAAU,UAAS,UAAS,UAAS,WAAU,WAAU,UAAS,WAAU,WAAU,SAAQ,SAAQ,UAAS,OAAM,QAAO,WAAU,SAAQ,UAAS,UAAS,WAAU,UAAS,QAAO,OAAM,UAAS,WAAU,SAAQ,UAAS,SAAQ,SAAQ,SAAQ,SAAQ,QAAO,SAAQ,UAAS,SAAQ,UAAS,UAAS,QAAO,SAAQ,UAAS,SAAQ,QAAO,SAAQ,WAAU,SAAQ,SAAQ,UAAS,UAAS,WAAU,UAAS,SAAQ,WAAU,SAAQ,YAAW,SAAQ,YAAW,UAAS,WAAU,WAAU,YAAW,YAAW,SAAQ,UAAS,UAAS,SAAQ,UAAS,SAAQ,SAAQ,QAAO,UAAS,WAAU,WAAU,WAAU,WAAU,SAAQ,SAAQ,UAAS,SAAQ,QAAO,SAAQ,UAAS,SAAQ,QAAO,SAAQ,UAAS,OAAM,QAAO,SAAQ,SAAQ,UAAS,UAAS,OAAM,UAAS,SAAQ,UAAS,SAAQ,SAAQ,QAAO,SAAQ,SAAQ,OAAM,QAAO,SAAQ,SAAQ,SAAQ,UAAS,WAAU,UAAS,UAAS,SAAQ,SAAQ,WAAU,UAAS,WAAU,SAAQ,QAAO,UAAS,OAAM,QAAO,QAAO,SAAQ,SAAQ,UAAS,WAAU,WAAU,UAAS,SAAQ,SAAQ,UAAS,SAAQ,WAAU,QAAO,UAAS,WAAU,UAAS,UAAS,SAAQ,QAAO,QAAO,YAAW,WAAU,QAAO,WAAU,WAAU,SAAQ,SAAQ,SAAQ,SAAQ,UAAS,SAAQ,QAAO,SAAQ,OAAM,QAAO,SAAQ,UAAS,SAAQ,UAAS,QAAO,OAAM,QAAO,YAAW,WAAU,WAAU,UAAS,SAAQ,UAAS,QAAO,SAAQ,QAAO,UAAS,UAAS,SAAQ,QAAO,SAAQ,QAAO,SAAQ,SAAQ,UAAS,QAAO,UAAS,WAAU,WAAU,WAAU,WAAU,SAAQ,UAAS,WAAU,WAAU,SAAQ,UAAS,UAAS,WAAU,WAAU,WAAU,QAAO,SAAQ,YAAW,YAAW,SAAQ,WAAU,WAAU,WAAU,UAAS,UAAS,SAAQ,SAAQ,YAAW,YAAW,SAAQ,UAAS,UAAS,SAAQ,QAAO,SAAQ,SAAQ,SAAQ,UAAS,SAAQ,OAAM,WAAU,UAAS,UAAS,aAAY,YAAW,MAAK,QAAO,QAAO,SAAQ,WAAU,SAAQ,YAAW,UAAS,WAAU,WAAU,UAAS,WAAU,UAAS,UAAS,SAAQ,YAAW,QAAO,YAAW,UAAS,UAAS,SAAQ,SAAQ,QAAO,UAAS,QAAO,QAAO,WAAU,WAAU,WAAU,WAAU,QAAO,OAAM,QAAO,SAAQ,SAAQ,OAAM,SAAQ,SAAQ,UAAS,WAAU,WAAU,WAAU,WAAU,SAAQ,SAAQ,WAAU,UAAS,WAAU,QAAO,SAAQ,SAAQ,UAAS,WAAU,YAAW,UAAS,WAAU,YAAW,UAAS,SAAQ,OAAM,SAAQ,WAAU,SAAQ,QAAO,YAAW,WAAU,aAAY,SAAQ,UAAS,SAAQ,SAAQ,aAAY,aAAY,YAAW,YAAW,WAAU,YAAW,YAAW,WAAU,WAAU,WAAU,WAAU,SAAQ,UAAS,UAAS,WAAU,QAAO,OAAM,UAAS,OAAM,SAAQ,WAAU,YAAW,aAAY,aAAY,UAAS,SAAQ,UAAS,SAAQ,UAAS,WAAU,QAAO,UAAS,SAAQ,aAAY,QAAO,SAAQ,UAAS,UAAS,YAAW,QAAO,WAAU,UAAS,SAAQ,UAAS,WAAU,WAAU,WAAU,YAAW,YAAW,YAAW,WAAU,WAAU,UAAS,SAAQ,WAAU,WAAU,QAAO,SAAQ,SAAQ,SAAQ,UAAS,SAAQ,SAAQ,SAAQ,QAAO,WAAU,WAAU,YAAW,YAAW,YAAW,cAAa,cAAa,aAAY,SAAQ,UAAS,UAAS,WAAU,YAAW,SAAQ,UAAS,SAAQ,UAAS,WAAU,SAAQ,YAAW,WAAU,YAAW,aAAY,aAAY,cAAa,cAAa,cAAa,cAAa,aAAY,WAAU,SAAQ,YAAW,WAAU,UAAS,YAAW,SAAQ,UAAS,UAAS,SAAQ,UAAS,WAAU,cAAa,SAAQ,QAAO,SAAQ,UAAS,UAAS,WAAU,WAAU,YAAW,YAAW,WAAU,aAAY,YAAW,UAAS,WAAU,SAAQ,aAAY,gBAAe,YAAW,eAAc,UAAS,WAAU,YAAW,aAAY,YAAW,YAAW,YAAW,UAAS,UAAS,WAAU,WAAU,YAAW,WAAU,SAAQ,UAAS,WAAU,UAAS,cAAa,SAAQ,UAAS,WAAU,WAAU,UAAS,WAAU,UAAS,QAAO,SAAQ,SAAQ,SAAQ,UAAS,YAAW,WAAU,SAAQ,WAAU,SAAQ,WAAU,WAAU,UAAS,WAAU,WAAU,WAAU,UAAS,UAAS,WAAU,SAAQ,UAAS,SAAQ,SAAQ,UAAS,SAAQ,UAAS,UAAS,YAAW,YAAW,UAAS,YAAW,UAAS,aAAY,SAAQ,YAAW,eAAc,UAAS,UAAS,YAAW,SAAQ,WAAU,UAAS,WAAU,WAAU,SAAQ,YAAW,QAAO,SAAQ,WAAU,YAAW,YAAW,aAAY,YAAW,aAAY,YAAW,UAAS,SAAQ,WAAU,WAAU,aAAY,WAAU,aAAY,YAAW,SAAQ,UAAS,SAAQ,WAAU,YAAW,YAAW,WAAU,WAAU,SAAQ,UAAS,SAAQ,QAAO,SAAQ,UAAS,SAAQ,SAAQ,WAAU,YAAW,WAAU,WAAU,WAAU,WAAU,YAAW,SAAQ,SAAQ,OAAM,QAAO,SAAQ,UAAS,QAAO,OAAM,YAAW,QAAO,QAAO,SAAQ,UAAS,WAAU,SAAQ,YAAW,OAAM,SAAQ,SAAQ,SAAQ,UAAS,SAAQ,UAAS,WAAU,aAAY,OAAM,OAAM,QAAO,WAAU,WAAU,WAAU,YAAW,UAAS,SAAQ,UAAS,WAAU,YAAW,UAAS,WAAU,WAAU,UAAS,aAAY,cAAa,aAAY,YAAW,WAAU,WAAU,UAAS,WAAU,SAAQ,SAAQ,aAAY,UAAS,WAAU,aAAY,YAAW,SAAQ,WAAU,WAAU,UAAS,WAAU,UAAS,UAAS,SAAQ,YAAW,SAAQ,UAAS,SAAQ,YAAW,aAAY,WAAU,YAAW,UAAS,WAAU,WAAU,SAAQ,WAAU,QAAO,SAAQ,SAAQ,WAAU,WAAU,SAAQ,UAAS,YAAW,YAAW,UAAS,aAAY,WAAU,YAAW,WAAU,WAAU,WAAU,SAAQ,UAAS,SAAQ,QAAO,OAAM,WAAU,YAAW,cAAa,cAAa,aAAY,UAAS,UAAS,WAAU,aAAY,aAAY,WAAU,YAAW,SAAQ,UAAS,SAAQ,SAAQ,UAAS,YAAW,WAAU,aAAY,WAAU,OAAM,WAAU,WAAU,UAAS,YAAW,aAAY,SAAQ,SAAQ,aAAY,UAAS,aAAY,SAAQ,UAAS,QAAO,OAAM,QAAO,SAAQ,SAAQ,WAAU,WAAU,WAAU,SAAQ,eAAc,SAAQ,SAAQ,UAAS,WAAU,SAAQ,SAAQ,WAAU,QAAO,WAAU,aAAY,aAAY,SAAQ,WAAU,aAAY,YAAW,WAAU,WAAU,UAAS,WAAU,SAAQ,SAAQ,UAAS,SAAQ,SAAQ,SAAQ,SAAQ,WAAU,YAAW,aAAY,WAAU,SAAQ,SAAQ,QAAO,UAAS,SAAQ,UAAS,SAAQ,SAAQ,QAAO,SAAQ,UAAS,UAAS,WAAU,QAAO,UAAS,UAAS,UAAS,WAAU,aAAY,YAAW,UAAS,SAAQ,WAAU,SAAQ,WAAU,SAAQ,SAAQ,WAAU,UAAS,QAAO,aAAY,SAAQ,UAAS,UAAS,UAAS,YAAW,QAAO,SAAQ,WAAU,UAAS,WAAU,SAAQ,WAAU,SAAQ,SAAQ,UAAS,WAAU,UAAS,UAAS,QAAO,UAAS,UAAS,SAAQ,UAAS,UAAS,QAAO,SAAQ,UAAS,OAAM,QAAO,WAAU,SAAQ,UAAS,UAAS,SAAQ,UAAS,SAAQ,UAAS,WAAU,QAAO,UAAS,UAAS,YAAW,SAAQ,UAAS,SAAQ,SAAQ,SAAQ,SAAQ,QAAO,QAAO,UAAS,OAAM,QAAO,UAAS,WAAU,WAAU,YAAW,YAAW,WAAU,WAAU,YAAW,YAAW,YAAW,aAAY,SAAQ,SAAQ,SAAQ,QAAO,SAAQ,QAAO,SAAQ,SAAQ,SAAQ,UAAS,UAAS,SAAQ,SAAQ,QAAO,SAAQ,SAAQ,UAAS,SAAQ,WAAU,UAAS,QAAO,SAAQ,SAAQ,SAAQ,UAAS,SAAQ,SAAQ,SAAQ,UAAS,SAAQ,SAAQ,SAAQ,SAAQ,UAAS,UAAS,SAAQ,SAAQ,SAAQ,UAAS,WAAU,YAAW,SAAQ,UAAS,SAAQ,SAAQ,UAAS,UAAS,WAAU,aAAY,UAAS,YAAW,YAAW,WAAU,YAAW,QAAO,QAAO,SAAQ,UAAS,aAAY,WAAU,QAAO,WAAU,WAAU,YAAW,YAAW,SAAQ,SAAQ,SAAQ,UAAS,SAAQ,QAAO,SAAQ,SAAQ,QAAO,WAAU,SAAQ,UAAS,UAAS,WAAU,UAAS,SAAQ,QAAO,UAAS,SAAQ,UAAS,QAAO,QAAO,SAAQ,QAAO,SAAQ,SAAQ,UAAS,QAAO,SAAQ,UAAS,UAAS,UAAS,UAAS,UAAS,SAAQ,SAAQ,UAAS,SAAQ,WAAU,SAAQ,SAAQ,WAAU,SAAQ,UAAS,YAAW,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,OAAM,UAAS,QAAO,QAAO,WAAU,SAAQ,YAAW,UAAS,UAAS,QAAO,SAAQ,QAAO,QAAO,SAAQ,UAAS,WAAU,WAAU,UAAS,UAAS,SAAQ,QAAO,QAAO,WAAU,WAAU,WAAU,WAAU,OAAM,UAAS,UAAS,UAAS,UAAS,UAAS,QAAO,UAAS,UAAS,UAAS,UAAS,UAAS,UAAS,QAAO,QAAO,UAAS,YAAW,QAAO,WAAU,WAAU,WAAU,WAAU,WAAU,QAAO,SAAQ,UAAS,OAAM,UAAS,YAAW,WAAU,SAAQ,UAAS,SAAQ,WAAU,UAAS,SAAQ,SAAQ,WAAU,YAAW,OAAM,YAAW,WAAU,WAAU,YAAW,YAAW,SAAQ,SAAQ,UAAS,SAAQ,SAAQ,SAAQ,YAAW,YAAW,SAAQ,UAAS,WAAU,WAAU,WAAU,SAAQ,SAAQ,SAAQ,SAAQ,UAAS,UAAS,YAAW,OAAM,UAAS,SAAQ,UAAS,SAAQ,OAAM,YAAW,YAAW,SAAQ,UAAS,SAAQ,QAAO,UAAS,QAAO,SAAQ,QAAO,SAAQ,SAAQ,SAAQ,WAAU,SAAQ,UAAS,OAAM,QAAO,SAAQ,WAAU,cAAa,YAAW,cAAa,cAAa,WAAU,WAAU,WAAU,SAAQ,UAAS,UAAS,QAAO,WAAU,YAAW,YAAW,cAAa,UAAS,YAAW,WAAU,WAAU,UAAS,aAAY,UAAS,UAAS,YAAW,WAAU,WAAU,UAAS,OAAM,QAAO,YAAW,aAAY,UAAS,SAAQ,SAAQ,SAAQ,SAAQ,aAAY,QAAO,SAAQ,UAAS,QAAO,UAAS,aAAY,aAAY,WAAU,OAAM,YAAW,SAAQ,SAAQ,QAAO,WAAU,WAAU,WAAU,SAAQ,UAAS,YAAW,aAAY,YAAW,WAAU,UAAS,WAAU,YAAW,OAAM,UAAS,OAAM,QAAO,WAAU,YAAW,aAAY,SAAQ,SAAQ,SAAQ,SAAQ,SAAQ,UAAS,UAAS,WAAU,QAAO,SAAQ,UAAS,WAAU,SAAQ,UAAS,SAAQ,SAAQ,QAAO,SAAQ,UAAS,WAAU,SAAQ,YAAW,UAAS,WAAU,SAAQ,SAAQ,SAAQ,OAAM,WAAU,QAAO,SAAQ,WAAU,YAAW,OAAM,QAAO,YAAW,QAAO,UAAS,WAAU,WAAU,UAAS,WAAU,YAAW,OAAM,SAAQ,SAAQ,SAAQ,SAAQ,SAAQ,SAAQ,UAAS,UAAS,UAAS,SAAQ,SAAQ,SAAQ,QAAO,QAAO,SAAQ,UAAS,UAAS,QAAO,SAAQ,UAAS,WAAU,SAAQ,UAAS,QAAO,SAAQ,UAAS,OAAM,SAAQ,QAAO,SAAQ,SAAQ,UAAS,WAAU,WAAU,WAAU,SAAQ,UAAS,UAAS,SAAQ,SAAQ,UAAS,SAAQ,WAAU,UAAS,QAAO,SAAQ,QAAO,SAAQ,UAAS,SAAQ,QAAO,SAAQ,QAAO,QAAO,QAAO,QAAO,WAAU,QAAO,UAAS,QAAO,SAAQ,UAAS,UAAS,SAAQ,UAAS,UAAS,SAAQ,UAAS,UAAS,WAAU,WAAU,SAAQ,UAAS,WAAU,YAAW,aAAY,aAAY,WAAU,QAAO,SAAQ,QAAO,WAAU,YAAW,YAAW,YAAW,QAAO,QAAO,SAAQ,UAAS,QAAO,UAAS,UAAS,WAAU,QAAO,QAAO,WAAU,SAAQ,UAAS,SAAQ,SAAQ,WAAU,UAAS,SAAQ,WAAU,QAAO,QAAO,SAAQ,QAAO,OAAM,QAAO,WAAU,aAAY,aAAY,YAAW,WAAU,WAAU,YAAW,aAAY,aAAY,YAAW,WAAU,YAAW,YAAW,YAAW,UAAS,WAAU,WAAU,QAAO,WAAU,YAAW,YAAW,WAAU,WAAU,YAAW,WAAU,WAAU,aAAY,aAAY,YAAW,aAAY,UAAS,WAAU,WAAU,YAAW,SAAQ,UAAS,UAAS,UAAS,YAAW,QAAO,OAAM,QAAO,UAAS,UAAS,UAAS,WAAU,WAAU,QAAO,SAAQ,UAAS,QAAO,OAAM,WAAU,WAAU,YAAW,WAAU,WAAU,QAAO,UAAS,WAAU,WAAU,UAAS,WAAU,QAAO,SAAQ,SAAQ,UAAS,QAAO,WAAU,QAAO,WAAU,YAAW,SAAQ,SAAQ,UAAS,SAAQ,SAAQ,SAAQ,QAAO,UAAS,UAAS,SAAQ,WAAU,SAAQ,QAAO,WAAU,SAAQ,SAAQ,UAAS,OAAM,WAAU,UAAS,SAAQ,UAAS,SAAQ,YAAW,aAAY,UAAS,UAAS,UAAS,OAAM,YAAW,UAAS,WAAU,SAAQ,SAAQ,SAAQ,UAAS,UAAS,SAAQ,UAAS,YAAW,YAAW,QAAO,YAAW,WAAU,SAAQ,YAAW,SAAQ,UAAS,UAAS,WAAU,QAAO,UAAS,UAAS,UAAS,UAAS,SAAQ,YAAW,UAAS,WAAU,UAAS,SAAQ,WAAU,YAAW,QAAO,SAAQ,QAAO,QAAO,UAAS,UAAS,aAAY,SAAQ,SAAQ,UAAS,WAAU,UAAS,SAAQ,SAAQ,SAAQ,QAAO,WAAU,UAAS,UAAS,QAAO,UAAS,UAAS,UAAS,UAAS,SAAQ,UAAS,WAAU,aAAY,WAAU,WAAU,UAAS,SAAQ,SAAQ,UAAS,UAAS,WAAU,WAAU,WAAU,UAAS,UAAS,WAAU,SAAQ,UAAS,SAAQ,UAAS,WAAU,SAAQ,UAAS,YAAW,YAAW,YAAW,UAAS,WAAU,WAAU,UAAS,SAAQ,UAAS,SAAQ,UAAS,WAAU,QAAO,UAAS,WAAU,WAAU,YAAW,UAAS,UAAS,QAAO,SAAQ,UAAS,YAAW,WAAU,UAAS,WAAU,UAAS,kBAAiB,WAAU,QAAO,SAAQ,WAAU,UAAS,UAAS,UAAS,UAAS,SAAQ,WAAU,UAAS,WAAU,UAAS,SAAQ,QAAO,UAAS,SAAQ,UAAS,WAAU,YAAW,YAAW,UAAS,WAAU,UAAS,UAAS,UAAS,SAAQ,QAAO,SAAQ,WAAU,YAAW,YAAW,WAAU,YAAW,YAAW,aAAY,SAAQ,UAAS,OAAM,UAAS,SAAQ,UAAS,SAAQ,WAAU,WAAU,WAAU,UAAS,SAAQ,WAAU,WAAU,WAAU,WAAU,YAAW,UAAS,QAAO,UAAS,SAAQ,WAAU,UAAS,UAAS,UAAS,UAAS,aAAY,WAAU,UAAS,WAAU,SAAQ,WAAU,UAAS,UAAS,UAAS,SAAQ,UAAS,SAAQ,SAAQ,UAAS,SAAQ,SAAQ,SAAQ,UAAS,WAAU,SAAQ,SAAQ,UAAS,SAAQ,UAAS,UAAS,aAAY,UAAS,WAAU,SAAQ,UAAS,UAAS,SAAQ,UAAS,UAAS,SAAQ,WAAU,QAAO,UAAS,YAAW,WAAU,SAAQ,SAAQ,YAAW,YAAW,YAAW,UAAS,WAAU,UAAS,UAAS,YAAW,YAAW,aAAY,cAAa,aAAY,UAAS,WAAU,YAAW,UAAS,WAAU,WAAU,YAAW,SAAQ,UAAS,WAAU,UAAS,OAAM,WAAU,SAAQ,QAAO,QAAO,SAAQ,YAAW,SAAQ,UAAS,aAAY,UAAS,WAAU,YAAW,WAAU,WAAU,QAAO,SAAQ,QAAO,UAAS,WAAU,WAAU,WAAU,QAAO,SAAQ,QAAO,SAAQ,UAAS,WAAU,WAAU,SAAQ,SAAQ,WAAU,UAAS,UAAS,WAAU,YAAW,SAAQ,UAAS,YAAW,SAAQ,UAAS,WAAU,SAAQ,SAAQ,UAAS,UAAS,UAAS,YAAW,SAAQ,SAAQ,UAAS,SAAQ,UAAS,WAAU,WAAU,UAAS,QAAO,UAAS,SAAQ,WAAU,SAAQ,UAAS,SAAQ,WAAU,SAAQ,QAAO,SAAQ,UAAS,SAAQ,UAAS,QAAO,SA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",
|
|
50
|
+
"debugId": "6015D97D31F852B564756E2164756E21",
|
|
48
51
|
"names": []
|
|
49
52
|
}
|