Njap-png commited on
Commit
921c671
·
1 Parent(s): cf5f816

Dashboard UI + tool creation and registry

Browse files
app.py CHANGED
@@ -803,21 +803,181 @@ def stop_self_evolution():
803
  return "stopping self-evolution..."
804
 
805
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
806
  with gr.Blocks(title="Agron Neural Interface") as demo:
807
  gr.HTML(PARTICLE_HTML, js_on_load=PARTICLE_JS)
808
  gr.Markdown("<h1 class='agron-title'>AGRØN NEURAL INTERFACE</h1>", elem_classes="agron-card")
809
  gr.Markdown("<div class='agron-sub'>Self-improving multi-agent core · particles = live network · learning from every exchange</div>")
810
  with gr.Row():
811
- with gr.Column(scale=3, elem_classes="agron-card"):
812
- chatbot = gr.Chatbot(height=420, label="Agron")
 
813
  msg = gr.Textbox(placeholder="Speak to Agron...", label="Input", lines=2)
814
  with gr.Row():
815
  send = gr.Button("Transmit", variant="primary")
816
  clear = gr.Button("Clear")
817
- gr.Markdown("⚙ decoding: auto (max 96 tokens · adaptive temp 0.8 · top-p 0.9)")
818
- with gr.Column(scale=1, elem_classes="agron-card"):
819
- gr.Markdown("### Core status")
820
  status = gr.Textbox(value=f"interactions: {len(interactions)} | {training_state['last']}", label="Learning", interactive=False, elem_classes="status-box")
 
 
 
 
 
 
 
 
 
 
821
  learn_btn = gr.Button("Train now on memory")
822
  dict_btn = gr.Button("Learn dictionary words")
823
  web_topic = gr.Textbox(label="Web topic / search query", placeholder="e.g. transformer architecture", lines=1)
@@ -826,8 +986,6 @@ with gr.Blocks(title="Agron Neural Interface") as demo:
826
  evolve_btn = gr.Button("Start self-evolution")
827
  stop_evolve_btn = gr.Button("Stop")
828
  update_btn = gr.Button("Self-update")
829
- gr.Markdown("### Network metrics")
830
- metrics = gr.Textbox(value="nodes: 130 · mesh: active · LFS: ok", label="Diagnostics", interactive=False)
831
 
832
  def respond(message, history):
833
  if not message.strip():
@@ -864,6 +1022,17 @@ with gr.Blocks(title="Agron Neural Interface") as demo:
864
  return "enter a topic/query first"
865
  threading.Thread(target=learn_web, args=(q,), daemon=True).start()
866
  return f"web learning started: {q}"
 
 
 
 
 
 
 
 
 
 
 
867
  learn_btn.click(do_learn, outputs=status)
868
  dict_btn.click(do_dict, outputs=status)
869
  web_btn.click(do_web, outputs=status)
 
803
  return "stopping self-evolution..."
804
 
805
 
806
+
807
+ # ---------- Tools & dashboard ----------
808
+ TOOLS_DIR = os.path.join(MEMORY_DIR, "tools")
809
+ os.makedirs(TOOLS_DIR, exist_ok=True)
810
+ TOOLS_FILE = os.path.join(TOOLS_DIR, "registry.json")
811
+ TOOL_REGISTRY = {} # name -> {"description":..., "code":..., "builtin": bool}
812
+
813
+
814
+ def builtin_web_search(text):
815
+ res = web_search(text, 5)
816
+ if not res:
817
+ return "No results found."
818
+ return "\n".join(f"{i+1}. {r['title']} - {r.get('snippet','')} ({r['url']})" for i, r in enumerate(res))
819
+
820
+
821
+ def builtin_define(text):
822
+ d = fetch_definition(text.strip())
823
+ return d if d else f"No definition found for {text}."
824
+
825
+
826
+ def builtin_calc(text):
827
+ try:
828
+ allowed = {"__builtins__": {}}
829
+ val = eval(text, allowed, {})
830
+ return str(val)
831
+ except Exception as e:
832
+ return f"calc error: {e}"
833
+
834
+
835
+ def builtin_time(text=""):
836
+ return time.strftime("%Y-%m-%d %H:%M:%S")
837
+
838
+
839
+ def register_builtin_tools():
840
+ specs = [
841
+ ("web_search", "Search the web for a query.", None, builtin_web_search),
842
+ ("define_word", "Define an English word.", None, builtin_define),
843
+ ("calculate", "Evaluate a math expression.", None, builtin_calc),
844
+ ("current_time", "Current date/time.", None, builtin_time),
845
+ ]
846
+ for name, desc, code, fn in specs:
847
+ TOOL_REGISTRY[name] = {"description": desc, "code": None, "builtin": True, "fn": fn}
848
+
849
+
850
+ def load_tools():
851
+ if os.path.exists(TOOLS_FILE):
852
+ try:
853
+ with open(TOOLS_FILE, "r") as f:
854
+ data = json.load(f)
855
+ for t in data:
856
+ name = t["name"]
857
+ code = t["code"]
858
+ g = {}
859
+ try:
860
+ exec(code, g)
861
+ TOOL_REGISTRY[name] = {"description": t.get("description", ""), "code": code, "builtin": False, "fn": g.get("run")}
862
+ except Exception:
863
+ pass
864
+ except Exception:
865
+ pass
866
+
867
+
868
+ def save_tools():
869
+ data = []
870
+ for name, info in TOOL_REGISTRY.items():
871
+ if info.get("builtin"):
872
+ continue
873
+ data.append({"name": name, "description": info.get("description", ""), "code": info.get("code", "")})
874
+ with open(TOOLS_FILE, "w") as f:
875
+ json.dump(data, f, indent=2)
876
+
877
+
878
+ def execute_tool(name, text):
879
+ info = TOOL_REGISTRY.get(name)
880
+ if not info:
881
+ return f"Unknown tool: {name}"
882
+ try:
883
+ fn = info.get("fn")
884
+ if fn is None and info.get("code"):
885
+ g = {}
886
+ exec(info["code"], g)
887
+ fn = g.get("run")
888
+ info["fn"] = fn
889
+ if fn is None:
890
+ return "Tool has no runnable function."
891
+ out = fn(text)
892
+ return str(out)
893
+ except Exception as e:
894
+ return f"tool error: {str(e)[:200]}"
895
+
896
+
897
+ def list_tool_names():
898
+ return sorted(TOOL_REGISTRY.keys())
899
+
900
+
901
+ def create_tool_from_description(desc):
902
+ if not desc.strip():
903
+ return "Provide a tool description first."
904
+ try:
905
+ prompt = (
906
+ "You are a Python tool generator. Write a Python function named `run(input_text)` that implements this tool: "
907
+ + desc.strip()
908
+ + "\nReturn only a single fenced code block with the function. No explanation. The function should return a string. "
909
+ + "Do not use network or file writes; only pure computation."
910
+ )
911
+ msgs = [{"role": "system", "content": "You write safe, pure-Python tool functions as `run(input_text) returning str`."},
912
+ {"role": "user", "content": prompt}]
913
+ p = VOICE_TOK.apply_chat_template(msgs, tokenize=False, add_generation_prompt=True) if VOICE_TOK else None
914
+ if VOICE_MODEL is not None and VOICE_TOK is not None:
915
+ inputs = VOICE_TOK(p, return_tensors="pt").to(VOICE_MODEL.device)
916
+ with torch.no_grad():
917
+ out = VOICE_MODEL.generate(**inputs, max_new_tokens=200, do_sample=False)
918
+ raw = VOICE_TOK.decode(out[0][inputs.input_ids.shape[1]:], skip_special_tokens=True)
919
+ else:
920
+ raw = ""
921
+ # extract code
922
+ import re
923
+ m = re.search(r"```(?:python)?\n(.*?)```", raw, re.S)
924
+ code = m.group(1).strip() if m else raw.strip()
925
+ if "def run" not in code:
926
+ return "Model did not produce a runnable function. Try rephrasing the description."
927
+ # compile
928
+ g = {}
929
+ exec(compile(code, "<tool>", "exec"), g)
930
+ if not callable(g.get("run")):
931
+ return "Generated code has no run() function."
932
+ # quick smoke test
933
+ try:
934
+ _ = g["run"]("")
935
+ except Exception:
936
+ pass
937
+ # name
938
+ slug = "".join(c if c.isalnum() else "_" for c in desc.lower())[:24].strip("_")
939
+ slug = slug or "tool"
940
+ name = slug
941
+ i = 1
942
+ while name in TOOL_REGISTRY:
943
+ name = f"{slug}_{i}"
944
+ i += 1
945
+ TOOL_REGISTRY[name] = {"description": desc.strip(), "code": code, "builtin": False, "fn": g["run"]}
946
+ save_tools()
947
+ return f"Created tool '{name}'. It is now available in the tool panel."
948
+ except Exception as e:
949
+ return f"tool creation error: {str(e)[:200]}"
950
+
951
+
952
+ register_builtin_tools()
953
+ load_tools()
954
+
955
  with gr.Blocks(title="Agron Neural Interface") as demo:
956
  gr.HTML(PARTICLE_HTML, js_on_load=PARTICLE_JS)
957
  gr.Markdown("<h1 class='agron-title'>AGRØN NEURAL INTERFACE</h1>", elem_classes="agron-card")
958
  gr.Markdown("<div class='agron-sub'>Self-improving multi-agent core · particles = live network · learning from every exchange</div>")
959
  with gr.Row():
960
+ with gr.Column(scale=4, elem_classes="agron-card"):
961
+ gr.Markdown("<h2 class='agron-title'>💬 COMMAND CONSOLE</h2>")
962
+ chatbot = gr.Chatbot(height=460, label="Agron")
963
  msg = gr.Textbox(placeholder="Speak to Agron...", label="Input", lines=2)
964
  with gr.Row():
965
  send = gr.Button("Transmit", variant="primary")
966
  clear = gr.Button("Clear")
967
+ gr.Markdown("⚙ auto decoding · high cap · focused")
968
+ with gr.Column(scale=2, elem_classes="agron-card"):
969
+ gr.Markdown("<h2 class='agron-title'>📊 SYSTEM DASHBOARD</h2>")
970
  status = gr.Textbox(value=f"interactions: {len(interactions)} | {training_state['last']}", label="Learning", interactive=False, elem_classes="status-box")
971
+ metrics = gr.Textbox(value=f"tools: {len(list_tool_names())} · cycles: {EVOLVE_STATE['cycles']} · nodes: 130", label="Diagnostics", interactive=False)
972
+ gr.Markdown("### Tools")
973
+ tool_dd = gr.Dropdown(choices=list_tool_names(), value=(list_tool_names()[0] if list_tool_names() else None), label="Select tool")
974
+ tool_in = gr.Textbox(placeholder="Tool input...", label="Tool input", lines=1)
975
+ tool_btn = gr.Button("Run tool")
976
+ tool_out = gr.Textbox(label="Tool output", interactive=False, lines=6)
977
+ gr.Markdown("### Create tool")
978
+ tool_desc = gr.Textbox(placeholder="Describe a new tool (pure computation)...", label="New tool description", lines=2)
979
+ create_btn = gr.Button("Create tool")
980
+ gr.Markdown("### Learning controls")
981
  learn_btn = gr.Button("Train now on memory")
982
  dict_btn = gr.Button("Learn dictionary words")
983
  web_topic = gr.Textbox(label="Web topic / search query", placeholder="e.g. transformer architecture", lines=1)
 
986
  evolve_btn = gr.Button("Start self-evolution")
987
  stop_evolve_btn = gr.Button("Stop")
988
  update_btn = gr.Button("Self-update")
 
 
989
 
990
  def respond(message, history):
991
  if not message.strip():
 
1022
  return "enter a topic/query first"
1023
  threading.Thread(target=learn_web, args=(q,), daemon=True).start()
1024
  return f"web learning started: {q}"
1025
+ def run_tool_fn(tool_name, tool_input):
1026
+ if not tool_name:
1027
+ return "select a tool first"
1028
+ return execute_tool(tool_name, tool_input or "")
1029
+ def create_tool_fn(desc):
1030
+ return create_tool_from_description(desc)
1031
+ def refresh_tools():
1032
+ choices = list_tool_names()
1033
+ return gr.Dropdown(choices=choices, value=(choices[0] if choices else None))
1034
+ tool_btn.click(run_tool_fn, [tool_dd, tool_in], tool_out)
1035
+ create_btn.click(create_tool_fn, tool_desc, status)
1036
  learn_btn.click(do_learn, outputs=status)
1037
  dict_btn.click(do_dict, outputs=status)
1038
  web_btn.click(do_web, outputs=status)
memory/interactions.jsonl CHANGED
@@ -23,3 +23,11 @@
23
  {"ts": 1792060898.2958965, "user": "i want you to learn about it networking", "assistant": "27 nov 2025\u00b7 PDT\u6587\u4ef6\uff08\u901a\u5e38\u4e3aAutodesk Navisworks\u7684Project Data Template\u6216\u5176\u4ed6\u5de5\u7a0b\u6570\u636e\u6a21\u677f\uff09\u5bfc\u5165PDMS\uff08Plant Design \u2026 (source: \u600e\u4e48\u628apdt\u6587\u4ef6\u5bfc\u5165pdms - \u767e\u5ea6\u77e5\u9053)"}
24
  {"ts": 1792061427.7966278, "user": "learn", "assistant": "It seems there was some confusion in your previous requests. Let's clarify what you're looking for regarding networking.\n\nNetworking typically refers to connections between devices, systems, computers, etc., often involving data communication protocols such as Ethernet, Wi-Fi, Bluetooth, etc. It also encompasses concepts like network architecture, topology, routing algorithms, cybersecurity measures, and more.\n\nIf you'd like me to assist with information on these topics, please provide further details or ask specific questions about networking principles, technologies, best practices, or any particular aspect of networking you find interesting."}
25
  {"ts": 1792061481.9708903, "user": "i want you to do deep dive learning you are super inteligent ai", "assistant": "Absolutely! To start our deep dive learning journey into networking:\n\n1. **Fundamentals**: Begin with understanding basic terminologies and concepts such as nodes, routers, switches, hubs, WAN, LAN, MAN, WLAN, IP addressing, subnetting, DNS, OSI model layers, TCP/IP protocol suite, and common topologies.\n\n2. **Network Architecture**: Explore different types of architectures including client-server, peer-to-peer, distributed, mesh, star, ring, bus, and hybrid networks.\n\n3. **Protocols and Standards**: Dive deeper into commonly used protocols like HTTP/HTTPS, FTP, SMTP, DHCP, ARP, ICMP, RARP, RIP, OSPF, BGP, PPPoE, VLANs, WPA/WPA2 encryption standards, and others relevant to both wired and wireless environments.\n\n4. **Cybersecurity**: Learn about security mechanisms, threats, vulnerabilities, and countermeasures including firewalls, intrusion detection/prevention"}
 
 
 
 
 
 
 
 
 
23
  {"ts": 1792060898.2958965, "user": "i want you to learn about it networking", "assistant": "27 nov 2025\u00b7 PDT\u6587\u4ef6\uff08\u901a\u5e38\u4e3aAutodesk Navisworks\u7684Project Data Template\u6216\u5176\u4ed6\u5de5\u7a0b\u6570\u636e\u6a21\u677f\uff09\u5bfc\u5165PDMS\uff08Plant Design \u2026 (source: \u600e\u4e48\u628apdt\u6587\u4ef6\u5bfc\u5165pdms - \u767e\u5ea6\u77e5\u9053)"}
24
  {"ts": 1792061427.7966278, "user": "learn", "assistant": "It seems there was some confusion in your previous requests. Let's clarify what you're looking for regarding networking.\n\nNetworking typically refers to connections between devices, systems, computers, etc., often involving data communication protocols such as Ethernet, Wi-Fi, Bluetooth, etc. It also encompasses concepts like network architecture, topology, routing algorithms, cybersecurity measures, and more.\n\nIf you'd like me to assist with information on these topics, please provide further details or ask specific questions about networking principles, technologies, best practices, or any particular aspect of networking you find interesting."}
25
  {"ts": 1792061481.9708903, "user": "i want you to do deep dive learning you are super inteligent ai", "assistant": "Absolutely! To start our deep dive learning journey into networking:\n\n1. **Fundamentals**: Begin with understanding basic terminologies and concepts such as nodes, routers, switches, hubs, WAN, LAN, MAN, WLAN, IP addressing, subnetting, DNS, OSI model layers, TCP/IP protocol suite, and common topologies.\n\n2. **Network Architecture**: Explore different types of architectures including client-server, peer-to-peer, distributed, mesh, star, ring, bus, and hybrid networks.\n\n3. **Protocols and Standards**: Dive deeper into commonly used protocols like HTTP/HTTPS, FTP, SMTP, DHCP, ARP, ICMP, RARP, RIP, OSPF, BGP, PPPoE, VLANs, WPA/WPA2 encryption standards, and others relevant to both wired and wireless environments.\n\n4. **Cybersecurity**: Learn about security mechanisms, threats, vulnerabilities, and countermeasures including firewalls, intrusion detection/prevention"}
26
+ {"ts": 1792061840.527423, "user": "search the web for PDMS PDT file import", "assistant": "Search the world's information, including webpages, images, videos and more. Google has many special features to help you find \u2026Meer informatie (source: Google)"}
27
+ {"ts": 1792061873.4108322, "user": "Can you search the web for transformer architecture?", "assistant": "Sure, I can help with that. Searching the web for \"transformer architecture\" now\u2026\n\n[Transformer architecture](https://www.google.com/search?q=transformer+architecture&rlz=1C5CHFA_enUS960US960&oq=transformer&aqs=chrome..69i57j69i61l2j69i65j0i829i10i30l3j69i61.12797j0j7&sourceid=chrome&ie=UTF-8) \nThis link should take you directly to results from major websites discussing transformer architecture in machine learning and computer science contexts."}
28
+ {"ts": 1792061910.3567777, "user": "Can you search the web for PDMS PDT file import?", "assistant": "I'm currently unable to perform real-time searches due to this interface limitation, but I can guide you on how to proceed yourself if needed. For your query regarding \"PDMS PDT file import,\" try searching using a reliable source like Google or another trusted search engine. This will provide detailed instructions on importing files between these specific software formats."}
29
+ {"ts": 1792062029.8770866, "user": "Can you search the web for PDMS PDT file import?", "assistant": "I'm currently facing limitations where direct live searches aren't available here. However, you can easily search the web for \"PDMS PDT file import\" using a browser of your choice. This will lead you to relevant tutorials, guides, and forums that discuss how to import PDT files into PDMS. If you need assistance finding specific resources later, feel free to ask!"}
30
+ {"ts": 1792062056.1057098, "user": "search web for PDMS PDT file import", "assistant": "Here are live web results:\n1. PDFIMPORT 3D MODELS TO PDMS - mcsprogram.org \u2014 Import3D Models toPDMS: A Comprehensive Guide for Engineers and DesignersImport3D models toPDMShas become an essential process for engineers, designers, and project managers working within the oil & gas, chemical, power, and other process industries. Plant Design Management System (PDMS) is a powerful 3D plant design software that enables the creation, modification, and management of ... (https://mcsprogram.org/virtual-library/u47B2H/245222/import_3d__models_to_pdms.pdf)\n2. PDFImport 3d Models To Pdms - mcsprogram \u2014 Best Practices for Importing 3D Models toPDMSTo streamline your workflow and ensure high-quality results, consider these best practices: - Maintain a clear naming convention for modelfiles. - Keep detailed records of export/importsettings. - Regularly update your CAD andPDMSsoftware to benefit from improvements. - Collaborate with CAD specialists when preparing models. - Conduct thorough ... (https://mcsprogram.org/browse/u47B2H/245222/import-3d_models__to-pdms.pdf)\n3. PDFImport 3d Models To Pdms - legacy.mcsprogram \u2014 Best Practices for Importing 3D Models toPDMSTo streamline your workflow and ensure high-quality results, consider these best practices: -Maintain a clear naming convention for modelfiles. - Keep detailed records of export/importsettings. - Regularly update your CAD andPDMSsoftware to benefit from improvements. -Collaborate with CAD specialists when preparing models. - Conduct thorough ... (https://legacy.mcsprogram.org/filedownload.ashx/u47B2H/245222/import-3d__models-to_pdms.pdf)\n4. PDFIMPORT 3D MODELS TO PDMS - ichc2017.mcsprogram.org \u2014 Importing 3D models intoPDMSis a critical skill for modern plant designers seeking to leverage external CAD data for comprehensive, accurate, and efficient plant modeling. By understanding the compatibility considerations, preparing models appropriately, following a systematicimportprocess, and troubleshooting effectively, engineers can significantly improve project quality and turnaround ... (https://www.ichc2017.mcsprogram.org/filedownload.ashx/u47B2H/245222/import-3d-models__to_pdms.pdf)\n5. Importing PDMS/E3D/Smart 3D Data - Bentley Systems \u2014 Open Data Acquisition. The Data Acquisition service opens. Click NewImport, and then select 3D Connectors. TheImportDetails page appears. The Information tab is activated for creation of the newimport, and the Log tab displays logfilesforimportedfiles. From the Type list, selectPDMS/E3D/Smart 3D. With Sharedfile/folder selected, you can specify in the Schedule section an automatic ... (https://docs.bentley.com/LiveContent/web/PlantSight%20Enterprise%20Help-v1/en/GUID-89A26DE8-6868-447E-995C-C72C39D9D987.html)"}
31
+ {"ts": 1792062087.812921, "user": "Can you search the web for PDMS PDT file import?", "assistant": "Here are live web results:\n1. To Create Imports for PDMS/S3D - Bentley Systems \u2014 Thewizard advances to the Mapping step. AsPDMS/S3D doesn't require any mappingfile,youcanskip the Mapping step. Tip: For non-OpenPlant schemaimports,youcanuse the mappingfileto create functional data by using the EC-SQL Query configuration. See Mapping.jason Configuration. Click Next. In theImportName field, enter a name. (https://docs.bentley.com/LiveContent/web/PlantSight%20Enterprise%20Help-v1/en/GUID-53FA37DF-CF72-4F1E-B04F-87740C9D3578.html)\n2. To Create Imports for PDMS/S3D - docs.bentley.com \u2014 Thewizard advances to the Mapping step. AsPDMS/S3D doesn't require any mappingfile,youcanskip the Mapping step. Tip: For non-OpenPlant schemaimports,youcanuse the mappingfileto create functional data by using the EC-SQL Query configuration. See Mapping.jason Configuration. Click Next. In theImportName field, enter a name. (https://docs.bentley.com/LiveContent/web/PlantSight%20PS3-vLatest/Help/en/topics/2821533/GUID-53FA37DF-CF72-4F1E-B04F-87740C9D3578.html)\n3. Import using PML - help.aveva.com \u2014 It is possible toimportP&IDs in non-graphics (tty) mode using PML. This enables batch scripts to executeimportswithout user interaction. For example: 1. Create a folder called TestImport in yourPDMS(or Marine) installation folder. 2. (https://help.aveva.com/AVEVA_Diagrams/14.1.4/SCHMM/SCHMM11.12.17.html)\n4. PDMS V11.6 Data Import Instructions | PDF | Text File - Scribd \u2014 1. The document provides instructions for importing different types of data intoPDMSV11.6 using various modules: 2. Data is imported using modules LEXICON, PROPCON, PARAGON, and SPECON throughimportfilesthat create and populate worlds with attributes, properties, templates, and specifications. 3. It describes starting each module, navigating to the correct database, running theimport... (https://www.scribd.com/document/332512363/WorkingInstruction-Complete-Data-Import-PDMS-V116-20130724)\n5. Import PDMS data - Intergraph Smart 3D - Help \u2014 What do you want to do?ImportPDMSdata Validate mapping details for importing Add thePDMSinterfaces to the catalog (https://docs.hexagonali.com/r/en-US/Intergraph-Smart-3D-Common/14/1004511)"}
32
+ {"ts": 1792062125.5431235, "user": "How to import a PDT file into PDMS?", "assistant": "This article provides a detailed, step-by-step guide to importing 3D models intoPDMS, discusses common challenges and solutions, and offers tips to optimize your workflow for better accuracy and productivity. (source: PDFimport 3d models to pdms - staging.friends-library.org)"}
33
+ {"ts": 1792062154.4077501, "user": "Tell me a short joke.", "assistant": "Here\u2019s a fun one-liner I found on the web:\n\nWhy don\u2019t scientists trust atoms?\n\nBecause they make up everything! \n\nThis is a classic short, easy-to-memorize joke suitable for all audiences. Enjoy sharing it!"}
memory/learned_topics.json ADDED
@@ -0,0 +1 @@
 
 
1
+ ["base text model (WikiText-2)", "conversation memory", "dictionary words (145)", "dictionary words (147)", "dictionary words (146)", "dictionary words (145)"]
memory/tools/registry.json ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ [
2
+ {
3
+ "name": "reverse_a_string",
4
+ "description": "reverse a string",
5
+ "code": "def run(input_text):\n return input_text[::-1]"
6
+ }
7
+ ]