koishi-plugin-chatluna-sandbox 1.0.0

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.
Files changed (63) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +72 -0
  3. package/dist/index.js +65954 -0
  4. package/dist/style.css +1 -0
  5. package/lib/account-profile.d.ts +18 -0
  6. package/lib/bot.d.ts +162 -0
  7. package/lib/builtin-avatar-options.d.ts +10 -0
  8. package/lib/builtin-avatars.d.ts +5 -0
  9. package/lib/chatluna/character-context.d.ts +43 -0
  10. package/lib/chatluna/error.d.ts +15 -0
  11. package/lib/chatluna/runtime.d.ts +25 -0
  12. package/lib/chatluna/state.d.ts +39 -0
  13. package/lib/chatluna/thinking.d.ts +7 -0
  14. package/lib/chatluna/usage.d.ts +46 -0
  15. package/lib/chatluna/wakeup.d.ts +102 -0
  16. package/lib/console-contract.d.ts +155 -0
  17. package/lib/console.d.ts +34 -0
  18. package/lib/control-service.d.ts +424 -0
  19. package/lib/conversation-resolution.d.ts +156 -0
  20. package/lib/evidence-kind.d.ts +61 -0
  21. package/lib/evidence-preview-text.d.ts +13 -0
  22. package/lib/inbound-delivery.d.ts +144 -0
  23. package/lib/index.d.ts +73 -0
  24. package/lib/index.js +14311 -0
  25. package/lib/mcp/arguments.d.ts +23 -0
  26. package/lib/mcp/call-records.d.ts +21 -0
  27. package/lib/mcp/http-api.d.ts +91 -0
  28. package/lib/mcp/server.d.ts +59 -0
  29. package/lib/mcp/service.d.ts +190 -0
  30. package/lib/mcp/tool-registry.d.ts +107 -0
  31. package/lib/mcp/types.d.ts +108 -0
  32. package/lib/media-storage.d.ts +32 -0
  33. package/lib/message-capabilities.d.ts +77 -0
  34. package/lib/model-evidence/index.d.ts +15 -0
  35. package/lib/model-evidence/metrics.d.ts +11 -0
  36. package/lib/model-evidence/request.d.ts +7 -0
  37. package/lib/model-evidence/response.d.ts +7 -0
  38. package/lib/model-evidence/shared.d.ts +37 -0
  39. package/lib/model-evidence/transport.d.ts +13 -0
  40. package/lib/model-evidence/types.d.ts +104 -0
  41. package/lib/model-evidence/usage.d.ts +10 -0
  42. package/lib/model-request-collector.d.ts +34 -0
  43. package/lib/model-request-error-preview.d.ts +5 -0
  44. package/lib/model-request-trajectory.d.ts +21 -0
  45. package/lib/model-request-variables.d.ts +16 -0
  46. package/lib/model-request.d.ts +150 -0
  47. package/lib/onebot-debug.d.ts +117 -0
  48. package/lib/onebot-message.d.ts +22 -0
  49. package/lib/onebot-profiles.d.ts +37 -0
  50. package/lib/persistence.d.ts +212 -0
  51. package/lib/presets/evidence-match.d.ts +9 -0
  52. package/lib/presets/index.d.ts +6 -0
  53. package/lib/presets/repository.d.ts +86 -0
  54. package/lib/presets/runtime-correlation.d.ts +18 -0
  55. package/lib/presets/service.d.ts +80 -0
  56. package/lib/presets/source-document.d.ts +2 -0
  57. package/lib/presets/types.d.ts +61 -0
  58. package/lib/record-store.d.ts +85 -0
  59. package/lib/relationship-actions.d.ts +156 -0
  60. package/lib/scope-directory.d.ts +153 -0
  61. package/lib/test-spaces.d.ts +71 -0
  62. package/lib/types.d.ts +957 -0
  63. package/package.json +110 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,72 @@
1
+ # koishi-plugin-chatluna-sandbox
2
+
3
+ 在 Koishi 控制台中提供可验证 OneBot 插件行为的模拟 QQ 环境。
4
+
5
+ 当前版本提供 WebQQ 风格的全页工作台。用户可以在浏览器内将普通用户或虚拟 OneBot 机器人切换为当前操作者,统一使用该参与者的视图、权限和发送身份,并在同一会话中观察被测插件回复;共享场景仍由服务端统一持有。
6
+
7
+ ## 灵感来源
8
+
9
+ - 轨迹功能的设计灵感来源于 [DeepSeek Harness(dsh)](https://github.com/deepseek-ai/deepseek-harness)。
10
+ - 请求体与响应体的样式来源于 [Axonhub](https://github.com/looplj/axonhub)。
11
+
12
+ ## AI 测试空间
13
+
14
+ 测试控制端点默认开启,外部测试控制器可以创建空白且隔离的 AI 测试空间,自主准备用户、机器人、群组和关系,再通过真实 OneBot 交互验证插件行为。端点只监听回环地址且要求 Bearer 测试凭证,需先在环境管理页创建凭证才能调用。修改操作必须显式携带 `spaceId`,不会写入主模拟 QQ 环境。
15
+
16
+ WebQQ 顶部主导航提供测试空间总览:主环境固定在首位,AI 空间按创建时间从旧到新排列。用户可以实时观察空间、接管或归还控制权、复盘已完成空间,以及按需重新激活或删除。数据库持久化模式会同时保存主环境和测试空间场景。
17
+
18
+ 完整权限的 MCP 凭证可发现 41 个工具和 6 个只读资源,其中包括用于构造和按权限读取合并转发的 `send_forward_message`、`get_forward_message`,以及 7 个测试空间生命周期工具:`list_test_spaces`、`get_test_space`、`create_test_space`、`complete_test_space`、`fail_test_space`、`reactivate_test_space` 和 `delete_test_space`。环境管理页会直接展示由服务端权威定义生成的 MCP 工具、资源、权限范围和协议能力目录。
19
+
20
+ 被测机器人只在唤醒条件成立时回复,而条件由当前装着的 ChatLuna 响应插件决定:ChatLuna 主功能与 chatluna-character 的判定口径完全不同,两者同时装上时默认只有 chatluna-character 回复,而它的白名单默认为空。`get_wakeup_rules` 按会话答出谁在响应、消息要怎么写才能唤醒它(@、引用、昵称开头、昵称任意位置、命令)、哪些触发不由消息决定(累计条数、发言等待、群活跃度、随机概率),以及哪些陷阱会让唤醒落空。同一份答案还会跟着 `send_message` 的参数说明与 `chatluna-sandbox://guide` 一起发布,因此 AI 客户端连上端点就能读到,不必先想到要问。
21
+
22
+ 断言插件行为时不要只看机器人回复的文本:`wait_for_onebot_action` 可以等待插件真实发起的 OneBot action 及其成败,`wait_for_message` 的 `settleSeconds` 可以跳过「稍等」这类中间回复并拿到最终结果,专属头衔、群禁言和表情回应等有状态 action 的结果都能从场景快照复查。
23
+
24
+ ## 测试控制端点
25
+
26
+ 测试控制端点是一个独立的 HTTP 监听器,在同一个地址和端口上并列提供两种协议表述。两者共用监听地址、TLS、来源与 Origin 白名单、测试凭证与配额,背后是同一个测试控制服务,因此权限、幂等、确认令牌与测试调用记录的语义完全一致。插件全局配置里有三个相关分组:`MCP 测试端点` 与 `HTTP 测试端点` 各有一个总开关(默认都开启,可以按需单独关掉其中一种)和自己的路径,`端点通用设置` 放监听地址与端口、来源与 Origin 白名单、TLS 与全部调用配额。
27
+
28
+ | 表述 | 默认路径 | 适合谁 |
29
+ | --- | --- | --- |
30
+ | MCP Streamable HTTP | `/mcp` | 能自动发现工具与 Schema 的外部 AI 客户端 |
31
+ | HTTP 测试接口 | `/api` | 直接构造请求的 Shell 脚本与 CI |
32
+
33
+ HTTP 表述只做协议翻译:请求体直接就是工具参数,不必包 JSON-RPC 信封,也不必协商 `Accept: text/event-stream`;失败返回真实 HTTP 状态码,错误信封平铺在响应体顶层,字段与 MCP 表述逐字一致。
34
+
35
+ ```bash
36
+ TOKEN=<测试凭证 Token>
37
+ BASE=http://127.0.0.1:61901/api/v1
38
+
39
+ # 发现工具与参数契约
40
+ curl -s -H "authorization: Bearer $TOKEN" "$BASE/tools"
41
+
42
+ # 调用工具:请求体就是参数,无参工具连 -d 都不需要
43
+ curl -s -X POST -H "authorization: Bearer $TOKEN" "$BASE/tools/get_server_info"
44
+ curl -s -X POST -H "authorization: Bearer $TOKEN" -H 'content-type: application/json' \
45
+ -d '{"name":"退群公告测试","idempotencyKey":"run-1-space"}' "$BASE/tools/create_test_space"
46
+
47
+ # 读取只读资源
48
+ curl -s -H "authorization: Bearer $TOKEN" "$BASE/resources"
49
+ curl -s -H "authorization: Bearer $TOKEN" --get --data-urlencode 'uri=chatluna-sandbox://guide' "$BASE/resources"
50
+ ```
51
+
52
+ 状态码按稳定错误码映射:参数与契约类为 `400`,凭证缺失为 `401`,权限不足为 `403`,实体或路径不存在为 `404`,动词不符为 `405`,乐观并发与空间状态冲突为 `409`,游标过期为 `410`,需要确认令牌为 `428`,请求体超限为 `413`,限流与并发超限为 `429`(带 `Retry-After`),领域主动拒绝为 `422`,未预期异常为 `500`。完整错误码清单从 `chatluna-sandbox://errors` 资源读取。
53
+
54
+ 失败响应里的 `traceId` 就是那次失败写下的测试调用记录 ID,可用 `get_test_call_record` 取回完整参数与错误。WebQQ 的测试调用工作台会标注每条记录的来路,并支持按 `MCP 客户端` / `HTTP 接口` 筛选。
55
+
56
+ ## OneBot 基线
57
+
58
+ | 实现配置 | 文档快照日期 | 上游来源版本 | `get_version_info.app_name` |
59
+ | --- | --- | --- | --- |
60
+ | NapCat | 2026-07-24 | `NapNeko/NapCatQQ@33546b936e008c017b2b9c1c41a0bb4f9e86c5be` | `NapCat.Onebot` |
61
+ | LLBot | 2026-07-24 | `LLOneBot/LuckyLilliaBot@d6e2f485b8164597d04a2907d307739ecfcf4a55` | `LLOneBot` |
62
+
63
+ 能力覆盖支持按 action、别名和作用说明搜索;各能力的 API 兼容性说明见 `docs/onebot-profiles.md`。
64
+
65
+ ## 开发
66
+
67
+ ```bash
68
+ yarn install
69
+ yarn test
70
+ yarn typecheck
71
+ yarn build
72
+ ```