release: public alpha 0.6.0 baseline

This commit is contained in:
JWeBot Contributors
2026-10-15 03:58:31 +08:00
commit d4242ae07c
238 changed files with 37724 additions and 0 deletions
@@ -0,0 +1,21 @@
# person-memory
Author: `official`
管理个人和同群人物记忆
Help:
- `/记住 内容;/我的记忆;/忘记 关键词或全部;/人物记忆 [显示名]`
Registered commands:
- `/记住`
- `/我的记忆`
- `/忘记`
- `/人物记忆`
- `/记忆帮助`
The adapter has no direct Ledger, GUI, environment, shell, or network access.
It delegates to the reviewed `person-memory` Kernel service profile
and returns a structured `ReplyPlan`.
@@ -0,0 +1,14 @@
id = "person-memory"
author = "official"
description = "管理个人和同群人物记忆"
help = ["/记住 内容;/我的记忆;/忘记 关键词或全部;/人物记忆 [显示名]"]
version = "1.0.0"
api_version = "1"
entrypoint = "person_memory:plugin"
type = "command"
[capabilities]
commands = ["/记住", "/我的记忆", "/忘记", "/人物记忆", "/记忆帮助"]
storage = false
network_profiles = []
service_profiles = ["person-memory"]
@@ -0,0 +1,37 @@
"""Generated reviewed adapter for person-memory."""
from jwebot_sdk import Event, ExtensionResult, ReplyPlan, SingleGroupContext
PROFILE = 'person-memory'
AUTHOR = 'official'
DESCRIPTION = '管理个人和同群人物记忆'
HELP_ENTRIES = ('/记住 内容;/我的记忆;/忘记 关键词或全部;/人物记忆 [显示名]',)
COMMANDS = ('/记住', '/我的记忆', '/忘记', '/人物记忆', '/记忆帮助')
def _handler(context: SingleGroupContext, command: str):
def handle(event: Event, arguments: str) -> ExtensionResult:
response = context.services.call(
PROFILE,
operation="execute",
payload={
"command": command,
"arguments": arguments,
"event": event.to_mapping(),
},
)
text = response.get("text")
if not isinstance(text, str) or not text.strip():
raise ValueError("local service returned invalid text")
return ExtensionResult(
reply=ReplyPlan.text(text),
metadata={"local_extension": PROFILE, "author": AUTHOR},
)
return handle
def plugin(context: SingleGroupContext) -> None:
for command in COMMANDS:
context.commands.register(command, _handler(context, command))
@@ -0,0 +1,29 @@
import sys
import unittest
from pathlib import Path
from unittest import mock
SOURCE = Path(__file__).resolve().parents[1] / "src"
sys.path.insert(0, str(SOURCE))
from person_memory import AUTHOR, DESCRIPTION, HELP_ENTRIES, plugin
class PluginTests(unittest.TestCase):
def test_registers_declared_commands_and_author(self):
context = mock.Mock()
plugin(context)
registered = [
call.args[0]
for call in context.commands.register.call_args_list
]
self.assertEqual(AUTHOR, 'official')
self.assertEqual(DESCRIPTION, '管理个人和同群人物记忆')
self.assertEqual(HELP_ENTRIES, ('/记住 内容;/我的记忆;/忘记 关键词或全部;/人物记忆 [显示名]',))
self.assertIn('/记住', registered)
self.assertEqual(len(registered), 5)
if __name__ == "__main__":
unittest.main()