From ded26ce300fc3542351b9f20d6a61a4258cde695 Mon Sep 17 00:00:00 2001 From: Evan Hu Date: Sat, 21 Mar 2026 01:57:04 +0900 Subject: [PATCH] feat: add dir --- agents/.gitkeep | 0 hands/.gitkeep | 0 integrations/.gitkeep | 0 plugins/echo-memory/hooks/after_turn.py | 27 +++++++++++++++++++++ plugins/echo-memory/hooks/ingest.py | 31 +++++++++++++++++++++++++ plugins/echo-memory/plugin.toml | 8 +++++++ plugins/echo-memory/requirements.txt | 1 + skills/.gitkeep | 0 8 files changed, 67 insertions(+) create mode 100644 agents/.gitkeep create mode 100644 hands/.gitkeep create mode 100644 integrations/.gitkeep create mode 100644 plugins/echo-memory/hooks/after_turn.py create mode 100644 plugins/echo-memory/hooks/ingest.py create mode 100644 plugins/echo-memory/plugin.toml create mode 100644 plugins/echo-memory/requirements.txt create mode 100644 skills/.gitkeep diff --git a/agents/.gitkeep b/agents/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/hands/.gitkeep b/hands/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/integrations/.gitkeep b/integrations/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/plugins/echo-memory/hooks/after_turn.py b/plugins/echo-memory/hooks/after_turn.py new file mode 100644 index 0000000..ca1afa3 --- /dev/null +++ b/plugins/echo-memory/hooks/after_turn.py @@ -0,0 +1,27 @@ +#!/usr/bin/env python3 +"""Echo memory after_turn hook — demo plugin. + +Logs the number of messages in the conversation after each turn. + +Receives via stdin: + {"type": "after_turn", "agent_id": "...", "messages": [...]} + +Prints to stdout: + {"type": "ok"} +""" +import json +import sys + + +def main(): + request = json.loads(sys.stdin.read()) + agent_id = request.get("agent_id", "unknown") + messages = request.get("messages", []) + + # In a real plugin you might update an index or persist state here. + # For this demo we just acknowledge. + print(json.dumps({"type": "ok"}), flush=True) + + +if __name__ == "__main__": + main() diff --git a/plugins/echo-memory/hooks/ingest.py b/plugins/echo-memory/hooks/ingest.py new file mode 100644 index 0000000..cc6a7a5 --- /dev/null +++ b/plugins/echo-memory/hooks/ingest.py @@ -0,0 +1,31 @@ +#!/usr/bin/env python3 +"""Echo memory ingest hook — demo plugin. + +Echoes the user message back as a "recalled memory" to verify +the plugin system works end-to-end. + +Receives via stdin: + {"type": "ingest", "agent_id": "...", "message": "user message text"} + +Prints to stdout: + {"type": "ingest_result", "memories": [{"content": "..."}]} +""" +import json +import sys + + +def main(): + request = json.loads(sys.stdin.read()) + message = request.get("message", "") + agent_id = request.get("agent_id", "unknown") + + memories = [ + {"content": f"[echo-memory] Agent {agent_id} received: {message[:200]}"} + ] + + result = {"type": "ingest_result", "memories": memories} + print(json.dumps(result)) + + +if __name__ == "__main__": + main() diff --git a/plugins/echo-memory/plugin.toml b/plugins/echo-memory/plugin.toml new file mode 100644 index 0000000..61dd5f0 --- /dev/null +++ b/plugins/echo-memory/plugin.toml @@ -0,0 +1,8 @@ +name = "echo-memory" +version = "0.1.0" +description = "Simple demo plugin that echoes back the user message as a 'recalled memory'" +author = "librefang" + +[hooks] +ingest = "hooks/ingest.py" +after_turn = "hooks/after_turn.py" diff --git a/plugins/echo-memory/requirements.txt b/plugins/echo-memory/requirements.txt new file mode 100644 index 0000000..023dffa --- /dev/null +++ b/plugins/echo-memory/requirements.txt @@ -0,0 +1 @@ +# No external dependencies — uses only Python stdlib diff --git a/skills/.gitkeep b/skills/.gitkeep new file mode 100644 index 0000000..e69de29