oneirocom / magick Goto Github PK
View Code? Open in Web Editor NEWMagick is a cutting-edge toolkit for a new kind of AI builder. Make Magick with us!
Home Page: https://magickml.com
License: Other
Magick is a cutting-edge toolkit for a new kind of AI builder. Make Magick with us!
Home Page: https://magickml.com
License: Other
For example, naming a node "Agent Facts" will create a comment box as I'm typing
The delete/backspace does not remove the nodes
Avatar window is open by default, but not available from the menu
builder(node: MagickNode) {
const out = new Rete.Output('output', 'output', numSocket)
const dataInput = new Rete.Input('trigger', 'Trigger', triggerSocket, true)
const _Min = new NumberControl({
dataKey: '_Min',
name: 'Value min',
icon: 'moon',
})
const _Max = new NumberControl({
dataKey: '_Max',
name: 'Value max',
icon: 'moon',
})
const name = new InputControl({
dataKey: 'name',
name: 'Name',
icon: 'moon',
})
node.data._Max = 100
node.data._Min = 0
node.inspector.add(name).add(_Min).add(_Max)
return node.addOutput(out).addInput(dataInput)
}
Event manager should be moved from the composer window to its own drawer/screen for easy management
We use Weaviate for neural search, and have a search running. Demonstrate long term memory using Weaviate by recalling stored events from database, creating vector embeddings and storing them into a weaviate store, then recalling facts and relevant conversation based on input. This should all be done in a Magick spell or set of spells so that agents can automatically add to their long term memory and recall from it.
https://app.dework.xyz/m3/ai-43567/view/board-lblry0sg?taskId=551855dd-ae87-4b66-8f86-826ae12bff84
Requirements:
Data controls should be able to create a socket on the component which it is registered. This will mean that all inspector components also have sockets that can be used to override values. This creates convenience and ease of use.
Connectors currently are all different and loaded all together in the entity. We need a proposal and implementation of a module system for the connectors. A clean API that can be generalized to all our connectors. We should start with migrating over a single connector as a trial. Let's start with discord.
Public variable nodes. Should have different types. Could possibly just make our current variables exposable as public. A public variable can be inject into the spell. So either as data from outside or as sockets into a spell. Used to create sets of data for different entities to share the same brain/spell.
Need to consider whether public variables can be populated from the top level spell all the way down to subspells or not.
We want the avatar and all avatar core code out.
Layouts right now reset after reloading. These could be stored in redux for persistence between sessions. Bonus for saving multiple layouts for recall later.
Playtesting with the conversational VRM or with the playtest window for agents is a pain, as we have to add a bunch of raw config to the "data" dropdown, which is just a temporary hack to pass more complicated data out.
It would be awesome if we had a dropdown with preset data for different connectors (discord, twitter, etc) which would make it really easy to test each of them as the data comes through the pipe.
Currently all the components in the inspector are poorly spaced and clunky. Here is a rough design I did up that I think would improve it a lot. Eeach one of the data Control components could probably be improved and polished more. Ignore the coloring in this design and just use the global primary color for the borders, etc.
If I clone a string or prompt node it can break the whole app, destroy all my strings, etc
Right now you have to go to "open" to import, import should just be in the file menu
@all-contributors please add @michaelsharpe for code and platform
Add alex as a contributor for past code contributions
A project for now will be considered all the spells in a person's workspace, since everything currently is local and personal. A project will be all the spells in the DB, along with a file spellbook.json
or similar which is at the root. The spellbook will list the name of all the spells. All spells, plus this spellbook.json, will be zipped and downloaded.
For import, someone selects the spellbook.json and all the spells, and uploads them. We read the spellbook and then load all the spells in.
note: spellbook may not be needed for this. But there may be metadata we want to associate anyways and it may be good to set the pattern now.
moon: hmm weird bug we're noticing, where node.display is not a function, might be related to worker fixes
parzvial: Oh yeah. We would need to remove those. On server when worker runs node.display isn’t a function since it is running on the server.
I could move the display functionality into the socket plugin when the node received the socket message from the servers worker.
Autosave is currently disabled. There is a tendency, though hard to reproduce, when the autosave will case a whole spell to be wiped. It is likely on a spell reload event when the spell is empty for a brief moment, and that is registered as a diff.
When I go to save a spell, I am unable to, because it's not doing or saying anything
We should be able to rename a spell without having to "save as" and delete the other, kind of annoying
We want to be able to receive on input via REST API and then write into a Discord channel. This will require multi modality. If we have this as a standard interface then we can add plugins and connectors to it easily.
Whenever an error occurs in a node on a graph, it crashes the whole entity server. We need much better error reporting and handling on the entity server so this doesn't happen.
Allow users to call a running Notebook from their Jupyter server by name (ideally validated via dropdown menu)
Bounty here
https://app.dework.xyz/m3/ai-43567?taskId=7b7d8230-9e9f-4add-a090-06781768cf30
The side drawer should be populated with functionality that pertains to a whole project, or whose UX would be really bad inside of a single window in the spell composer.
We tried this with C++, was hard.
A better solution is to run a server on banana.dev
We currently use Google Speech to Text to figure out what people are saying, but Whisper is better quality and can be run locally. A C++ version is here, which can be ported to WASM as well:https://github.com/ggerganov/whisper.cpp
https://app.dework.xyz/m3/ai-43567/view/board-lblry0sg?taskId=0e1e9ec5-a406-47bc-ac26-0b169dc48e79
Currently, users are getting stuck starting up because of invalid self-signed certificates.
We should either default to http and unsigned (which may have ramifications for some of our services and pipelines) or solve our certificate stuff and just have everything clean and working so https works everywhere locally and http works when users are behind tls
Currently, Discord bot can hold its connection and receive messages twice. We need to make sure that agents die completely when reset, and that Discord connection is properly handled.
Agent should never respond twice, basically. If the root spell is saved, or the front end is reset, or anything happens that could trigger a reset (hot reload), we want to make sure there are no issues.
** UPDATE:
I have added some logic to isolate the double-agents. However, if the discord bot crashes, we need to make sure it dies and restarts successfully.
Right now the whole graph has to complete before returning.
We need to be able to output and trigger responses asynchronously to the graph completing.
For one, this will enable multiple outputs.
Also, this will enable us to run memory tasks etc after responding, which should dramatically improve response time.
This is a prerequisite to multimodal graphs with inputs and outputs from other sources.
It seems like we might have some double reloading issues from hotreloading. Please review logs and ensure that when saving a file in client or server, or when reloading the client, plugins are not hot reloaded twice.
the goal is to make sure that our hotreloading is robust to any strangeness that may have arison from recent changes.
Package app into stand alone electron for easy download and experimentation. Will internally use sqlLite. Implement with Capacitor.
We want to remove the docker dependency so that users can quickstart without it, using a local sqlite instance. However, our current models use JSON. We can dynamically set which we startup with, but only if the models use the same supported features.
We want to present the channel ID and channel type (msg vs DM), this is mostly hooked up but not provided throught Discord adapter so it is undefined in the agent type.
We should really have a handful of core tests that ensure essential functionality is working. Subspells. Spell runner. Core components.
This might be a single robust spell with subspells that runs on PR that tests almost everything. Though AI services are mocked. Interface makes this easy to do.
We should be able to ensure that all basic functionality for now is secure once main branch is stable. We can expand to more robust and granular tests after.
Note, this has been claimed by volit on Discord, who has until Jan 10 to report results. Anyone else may discuss with him to speed it up.
https://app.dework.xyz/m3/ai-43567/view/board-lblry0sg?taskId=02418aba-715b-4255-9524-87b9c2e7c1c2
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.