@zhin.js/adapter-kook 1.1.17 → 1.1.18
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.
- package/CHANGELOG.md +27 -0
- package/README.md +10 -0
- package/lib/console-spec.d.ts +12 -0
- package/lib/console-spec.js +12 -0
- package/lib/console.d.ts +8 -0
- package/lib/console.js +16 -0
- package/package.json +17 -9
- package/pages/index/index.js +15 -0
- package/pages/index/index.ts +16 -0
- package/plugin.js +3 -1
- package/src/console-spec.ts +17 -0
- package/src/console.ts +21 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,32 @@
|
|
|
1
1
|
# @zhin.js/adapter-kook
|
|
2
2
|
|
|
3
|
+
## 1.1.18
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 6345a38: feat(adapters): add per-adapter Console pages
|
|
8
|
+
|
|
9
|
+
Every platform adapter now ships a `pages/index` Console page backed by a shared
|
|
10
|
+
`createAdapterConsolePage` component and `createAdapterConsoleRpc` server helper:
|
|
11
|
+
|
|
12
|
+
- See running endpoints, test connectivity, and manage
|
|
13
|
+
`plugins.<adapter>.endpoints` (add/remove writes `.env` references) from the
|
|
14
|
+
Console instead of chat commands.
|
|
15
|
+
- Surface LoginAssist pending tasks (QR / slider / SMS / device) so ICQQ login no
|
|
16
|
+
longer requires the terminal.
|
|
17
|
+
- QQ moves its QR binding flow (`qq endpoint add`) into Console actions with
|
|
18
|
+
public/private selection.
|
|
19
|
+
- Pages are permission-gated by `<adapter>:read`; writes need `<adapter>:write`.
|
|
20
|
+
|
|
21
|
+
- Updated dependencies [6345a38]
|
|
22
|
+
- Updated dependencies [ff3efe7]
|
|
23
|
+
- Updated dependencies [c58c589]
|
|
24
|
+
- @zhin.js/adapter@1.1.25
|
|
25
|
+
- @zhin.js/client@1.1.21
|
|
26
|
+
- @zhin.js/core@1.1.53
|
|
27
|
+
- @zhin.js/im-contract@1.1.9
|
|
28
|
+
- @zhin.js/tool@1.1.12
|
|
29
|
+
|
|
3
30
|
## 1.1.17
|
|
4
31
|
|
|
5
32
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -105,6 +105,16 @@ canonical `keyboard` 映射为原生 Card `action-group`,每行 1–4 个按
|
|
|
105
105
|
|
|
106
106
|
canonical `share` 映射为含标题、描述/正文与“打开链接”按钮的 Card;只支持 HTTP(S) URL,不代表平台原生应用/音乐名片。share 的 image/audio/app metadata 尚未接线,明确拒绝。实机分享验收需核对标题、描述与点击后的目标 URL。
|
|
107
107
|
|
|
108
|
+
## Console 页面
|
|
109
|
+
|
|
110
|
+
启动后打开 Console 的「KOOK」页(地址 `/kook`),可以:
|
|
111
|
+
|
|
112
|
+
- 查看运行中的连接、点「测试连接」做连通性诊断;
|
|
113
|
+
- 增删 `plugins.kook.endpoints`(凭据写入 `.env`,配置里只保留 `${ENV}` 引用);
|
|
114
|
+
- 如果适配器要求登录,页面会显示 LoginAssist 的扫码 / 滑块 / 设备确认待办;
|
|
115
|
+
|
|
116
|
+
读取需要 `kook:read`,写操作需要 `kook:write`;管理员 full token 不受限。页面里的「添加 endpoint」等价于原来的 `kook endpoint add`。
|
|
117
|
+
|
|
108
118
|
## 故障排查
|
|
109
119
|
|
|
110
120
|
| 现象 | 排查 |
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* KOOK Console 页面元数据(浏览器与服务端共享;不要在这里 import 服务端代码)。
|
|
3
|
+
*/
|
|
4
|
+
import type { AdapterConsoleField } from 'zhin.js/adapter';
|
|
5
|
+
export declare const kookConsoleSpec: {
|
|
6
|
+
readonly adapterKey: "kook";
|
|
7
|
+
readonly adapterDisplayName: "KOOK";
|
|
8
|
+
readonly fields: readonly AdapterConsoleField[];
|
|
9
|
+
readonly docsUrl: "https://zhin.js.org/adapters/kook";
|
|
10
|
+
readonly readPermission: "kook:read";
|
|
11
|
+
readonly writePermission: "kook:write";
|
|
12
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export const kookConsoleSpec = {
|
|
2
|
+
adapterKey: 'kook',
|
|
3
|
+
adapterDisplayName: 'KOOK',
|
|
4
|
+
fields: [
|
|
5
|
+
{ key: 'token', required: true, env: true, description: 'KOOK bot token' },
|
|
6
|
+
{ key: 'encrypt_key', env: true, description: 'webhook 加密密钥(connection: webhook)', descriptionI18n: { en: 'Webhook encryption secret' } },
|
|
7
|
+
{ key: 'verify_token', env: true, description: 'webhook 验证 token(connection: webhook)', descriptionI18n: { en: 'Webhook verification token' } },
|
|
8
|
+
],
|
|
9
|
+
docsUrl: 'https://zhin.js.org/adapters/kook',
|
|
10
|
+
readPermission: 'kook:read',
|
|
11
|
+
writePermission: 'kook:write',
|
|
12
|
+
};
|
package/lib/console.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* KOOK Console RPC:运行状态 + endpoint 增删(原 `kook endpoint` 聊天命令)。
|
|
3
|
+
*
|
|
4
|
+
* 页面绑定 `pages/index`,读取 / 写入分别要求 `<adapter>:read` / `<adapter>:write`。
|
|
5
|
+
*/
|
|
6
|
+
import { type AdapterConsoleResources } from 'zhin.js/adapter';
|
|
7
|
+
import type { PluginConsoleRpc } from 'zhin.js';
|
|
8
|
+
export declare function createKookConsoleRpc(resources: AdapterConsoleResources, getConfig: () => unknown): PluginConsoleRpc;
|
package/lib/console.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* KOOK Console RPC:运行状态 + endpoint 增删(原 `kook endpoint` 聊天命令)。
|
|
3
|
+
*
|
|
4
|
+
* 页面绑定 `pages/index`,读取 / 写入分别要求 `<adapter>:read` / `<adapter>:write`。
|
|
5
|
+
*/
|
|
6
|
+
import { createAdapterConsoleRpc } from 'zhin.js/adapter';
|
|
7
|
+
import { kookRuntimeStateToken } from './kook-runtime-state.js';
|
|
8
|
+
import { kookConsoleSpec } from './console-spec.js';
|
|
9
|
+
export function createKookConsoleRpc(resources, getConfig) {
|
|
10
|
+
const state = resources.use(kookRuntimeStateToken);
|
|
11
|
+
return createAdapterConsoleRpc({
|
|
12
|
+
...kookConsoleSpec,
|
|
13
|
+
running: () => state.endpoints.values(),
|
|
14
|
+
getConfig,
|
|
15
|
+
}, resources);
|
|
16
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zhin.js/adapter-kook",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.18",
|
|
4
4
|
"description": "Zhin.js KOOK adapter for Plugin Runtime (WebSocket gateway or Webhook)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./lib/index.js",
|
|
@@ -33,23 +33,26 @@
|
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
35
|
"kook-client": "^1.0.5",
|
|
36
|
-
"@zhin.js/adapter": "1.1.
|
|
36
|
+
"@zhin.js/adapter": "1.1.25",
|
|
37
37
|
"@zhin.js/agent-feature": "1.1.10",
|
|
38
|
-
"@zhin.js/
|
|
38
|
+
"@zhin.js/client": "1.1.21",
|
|
39
|
+
"@zhin.js/console-contract": "1.1.3",
|
|
40
|
+
"@zhin.js/core": "1.1.53",
|
|
39
41
|
"@zhin.js/feature-kit": "1.1.9",
|
|
40
42
|
"@zhin.js/host-http": "1.1.11",
|
|
41
|
-
"@zhin.js/im-contract": "1.1.
|
|
43
|
+
"@zhin.js/im-contract": "1.1.9",
|
|
42
44
|
"@zhin.js/logger": "1.1.2",
|
|
45
|
+
"@zhin.js/page": "1.1.10",
|
|
43
46
|
"@zhin.js/permission": "1.1.9",
|
|
44
47
|
"@zhin.js/skill": "1.1.10",
|
|
45
|
-
"@zhin.js/tool": "1.1.
|
|
48
|
+
"@zhin.js/tool": "1.1.12"
|
|
46
49
|
},
|
|
47
50
|
"peerDependencies": {
|
|
48
51
|
"zod": "^4.0.0",
|
|
49
|
-
"@zhin.js/adapter": "^1.1.
|
|
52
|
+
"@zhin.js/adapter": "^1.1.25",
|
|
50
53
|
"@zhin.js/command": "^1.1.11",
|
|
51
|
-
"@zhin.js/core": "^1.1.
|
|
52
|
-
"zhin.js": "^1.1.
|
|
54
|
+
"@zhin.js/core": "^1.1.53",
|
|
55
|
+
"zhin.js": "^1.1.18"
|
|
53
56
|
},
|
|
54
57
|
"peerDependenciesMeta": {
|
|
55
58
|
"@zhin.js/command": {
|
|
@@ -68,11 +71,12 @@
|
|
|
68
71
|
"vitest": "^4.1.10",
|
|
69
72
|
"zod": "^4.4.3",
|
|
70
73
|
"@zhin.js/host-http": "1.1.11",
|
|
71
|
-
"zhin.js": "1.1.
|
|
74
|
+
"zhin.js": "1.1.18"
|
|
72
75
|
},
|
|
73
76
|
"files": [
|
|
74
77
|
"adapters",
|
|
75
78
|
"commands",
|
|
79
|
+
"pages",
|
|
76
80
|
"plugin.js",
|
|
77
81
|
"schema.json",
|
|
78
82
|
"src",
|
|
@@ -116,6 +120,10 @@
|
|
|
116
120
|
{
|
|
117
121
|
"package": "@zhin.js/agent-feature",
|
|
118
122
|
"api": "^1.0.0"
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
"package": "@zhin.js/page",
|
|
126
|
+
"api": "^1.0.0"
|
|
119
127
|
}
|
|
120
128
|
],
|
|
121
129
|
"plugins": []
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// Generated by build-plugin-runtime-entries.mjs. Do not edit.
|
|
2
|
+
import { definePage } from '@zhin.js/console-contract';
|
|
3
|
+
import { createAdapterConsolePage } from '@zhin.js/client';
|
|
4
|
+
export const meta = definePage({
|
|
5
|
+
title: 'KOOK',
|
|
6
|
+
titleI18n: { en: 'KOOK' },
|
|
7
|
+
icon: 'Gamepad2',
|
|
8
|
+
order: 65,
|
|
9
|
+
requiredPermissions: ['kook:read'],
|
|
10
|
+
});
|
|
11
|
+
/**
|
|
12
|
+
* Convention page: `pages/index/index.ts` → `/kook`(插件路径)。
|
|
13
|
+
* 连接状态、连接测试、endpoint 增删;登录待办来自 LoginAssist(ICQQ 等)。
|
|
14
|
+
*/
|
|
15
|
+
export default createAdapterConsolePage('kook');
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { definePage } from '@zhin.js/console-contract';
|
|
2
|
+
import { createAdapterConsolePage } from '@zhin.js/client';
|
|
3
|
+
|
|
4
|
+
export const meta = definePage({
|
|
5
|
+
title: 'KOOK',
|
|
6
|
+
titleI18n: { en: 'KOOK' },
|
|
7
|
+
icon: 'Gamepad2',
|
|
8
|
+
order: 65,
|
|
9
|
+
requiredPermissions: ['kook:read'],
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Convention page: `pages/index/index.ts` → `/kook`(插件路径)。
|
|
14
|
+
* 连接状态、连接测试、endpoint 增删;登录待办来自 LoginAssist(ICQQ 等)。
|
|
15
|
+
*/
|
|
16
|
+
export default createAdapterConsolePage('kook');
|
package/plugin.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
// Generated by build-plugin-runtime-entries.mjs. Do not edit.
|
|
2
2
|
import { createEndpointRuntimeState } from 'zhin.js/adapter';
|
|
3
|
-
import { definePlugin } from 'zhin.js';
|
|
3
|
+
import { definePlugin, pluginConsoleRpcToken } from 'zhin.js';
|
|
4
4
|
import { permissionHostToken } from '@zhin.js/permission';
|
|
5
5
|
import { checkKookPlatformPermit } from "./lib/platform-permit.js";
|
|
6
6
|
import { kookRuntimeStateToken } from "./lib/kook-runtime-state.js";
|
|
7
|
+
import { createKookConsoleRpc } from "./lib/console.js";
|
|
7
8
|
export default definePlugin({
|
|
8
9
|
name: 'kook',
|
|
9
10
|
metadata: {
|
|
@@ -11,6 +12,7 @@ export default definePlugin({
|
|
|
11
12
|
},
|
|
12
13
|
setup(context) {
|
|
13
14
|
context.resources.provide(kookRuntimeStateToken, createEndpointRuntimeState());
|
|
15
|
+
context.resources.provide(pluginConsoleRpcToken, createKookConsoleRpc(context.resources, () => context.config.get()));
|
|
14
16
|
if (context.resources.has(permissionHostToken)) {
|
|
15
17
|
const host = context.resources.use(permissionHostToken);
|
|
16
18
|
return host.registerPlatform('kook', checkKookPlatformPermit);
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* KOOK Console 页面元数据(浏览器与服务端共享;不要在这里 import 服务端代码)。
|
|
3
|
+
*/
|
|
4
|
+
import type { AdapterConsoleField } from 'zhin.js/adapter';
|
|
5
|
+
|
|
6
|
+
export const kookConsoleSpec = {
|
|
7
|
+
adapterKey: 'kook',
|
|
8
|
+
adapterDisplayName: 'KOOK',
|
|
9
|
+
fields: [
|
|
10
|
+
{ key: 'token', required: true, env: true, description: 'KOOK bot token' },
|
|
11
|
+
{ key: 'encrypt_key', env: true, description: 'webhook 加密密钥(connection: webhook)', descriptionI18n: { en: 'Webhook encryption secret' } },
|
|
12
|
+
{ key: 'verify_token', env: true, description: 'webhook 验证 token(connection: webhook)', descriptionI18n: { en: 'Webhook verification token' } },
|
|
13
|
+
] as readonly AdapterConsoleField[],
|
|
14
|
+
docsUrl: 'https://zhin.js.org/adapters/kook',
|
|
15
|
+
readPermission: 'kook:read',
|
|
16
|
+
writePermission: 'kook:write',
|
|
17
|
+
} as const;
|
package/src/console.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* KOOK Console RPC:运行状态 + endpoint 增删(原 `kook endpoint` 聊天命令)。
|
|
3
|
+
*
|
|
4
|
+
* 页面绑定 `pages/index`,读取 / 写入分别要求 `<adapter>:read` / `<adapter>:write`。
|
|
5
|
+
*/
|
|
6
|
+
import { createAdapterConsoleRpc, type AdapterConsoleResources } from 'zhin.js/adapter';
|
|
7
|
+
import type { PluginConsoleRpc } from 'zhin.js';
|
|
8
|
+
import { kookRuntimeStateToken } from './kook-runtime-state.js';
|
|
9
|
+
import { kookConsoleSpec } from './console-spec.js';
|
|
10
|
+
|
|
11
|
+
export function createKookConsoleRpc(
|
|
12
|
+
resources: AdapterConsoleResources,
|
|
13
|
+
getConfig: () => unknown,
|
|
14
|
+
): PluginConsoleRpc {
|
|
15
|
+
const state = resources.use(kookRuntimeStateToken);
|
|
16
|
+
return createAdapterConsoleRpc({
|
|
17
|
+
...kookConsoleSpec,
|
|
18
|
+
running: () => state.endpoints.values(),
|
|
19
|
+
getConfig,
|
|
20
|
+
}, resources);
|
|
21
|
+
}
|