@zhin.js/plugin-rss 4.0.2 → 4.0.5
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/commands/rss-add/{[url:string].js → [url].js} +2 -1
- package/commands/rss-add/{[url:string].ts → [url].ts} +2 -1
- package/commands/rss-check/{[url:string=].js → [[url]].js} +1 -0
- package/commands/rss-check/{[url:string=].ts → [[url]].ts} +1 -0
- package/commands/rss-preview/{[url:string].js → [url].js} +1 -0
- package/commands/rss-preview/{[url:string].ts → [url].ts} +1 -0
- package/commands/rss-remove/{[url:string].js → [url].js} +1 -0
- package/commands/rss-remove/{[url:string].ts → [url].ts} +1 -0
- package/lib/channel.d.ts +2 -2
- package/lib/channel.d.ts.map +1 -1
- package/lib/channel.js +14 -8
- package/lib/channel.js.map +1 -1
- package/lib/memory-store.d.ts +10 -8
- package/lib/memory-store.d.ts.map +1 -1
- package/lib/memory-store.js +4 -0
- package/lib/memory-store.js.map +1 -1
- package/lib/poll.d.ts +1 -1
- package/lib/poll.d.ts.map +1 -1
- package/lib/poll.js +1 -1
- package/lib/poll.js.map +1 -1
- package/package.json +5 -5
- package/plugin.js +5 -3
- package/src/channel.ts +23 -12
- package/src/memory-store.ts +10 -8
- package/src/poll.ts +2 -2
|
@@ -6,6 +6,7 @@ import { fetchFeed, resolveRssConfig } from "../../lib/feed.js";
|
|
|
6
6
|
import { markItemsSeen } from "../../lib/poll.js";
|
|
7
7
|
export default defineCommand({
|
|
8
8
|
description: '订阅一个 RSS/Atom 源',
|
|
9
|
+
params: { url: { type: 'string' } },
|
|
9
10
|
async execute({ params, config, input }) {
|
|
10
11
|
const Subs = getRssSubs();
|
|
11
12
|
if (!Subs)
|
|
@@ -46,7 +47,7 @@ export default defineCommand({
|
|
|
46
47
|
url,
|
|
47
48
|
feed_title: feedTitle,
|
|
48
49
|
adapter_name: channel.adapterName,
|
|
49
|
-
endpoint_id: channel.
|
|
50
|
+
endpoint_id: channel.endpointKey,
|
|
50
51
|
channel_type: channel.channelType,
|
|
51
52
|
channel_id: channel.channelId,
|
|
52
53
|
creator_id: channel.senderId,
|
|
@@ -6,6 +6,7 @@ import { markItemsSeen } from '../../src/poll.js';
|
|
|
6
6
|
|
|
7
7
|
export default defineCommand<RssConfig>({
|
|
8
8
|
description: '订阅一个 RSS/Atom 源',
|
|
9
|
+
params: { url: { type: 'string' } },
|
|
9
10
|
async execute({ params, config, input }) {
|
|
10
11
|
const Subs = getRssSubs();
|
|
11
12
|
if (!Subs) return 'RSS 数据库尚未就绪,请稍后重试';
|
|
@@ -47,7 +48,7 @@ export default defineCommand<RssConfig>({
|
|
|
47
48
|
url,
|
|
48
49
|
feed_title: feedTitle,
|
|
49
50
|
adapter_name: channel.adapterName,
|
|
50
|
-
endpoint_id: channel.
|
|
51
|
+
endpoint_id: channel.endpointKey,
|
|
51
52
|
channel_type: channel.channelType,
|
|
52
53
|
channel_id: channel.channelId,
|
|
53
54
|
creator_id: channel.senderId,
|
|
@@ -6,6 +6,7 @@ import { resolveRssConfig } from "../../lib/feed.js";
|
|
|
6
6
|
import { checkSubscriptions } from "../../lib/poll.js";
|
|
7
7
|
export default defineCommand({
|
|
8
8
|
description: '手动触发检查 RSS 更新',
|
|
9
|
+
params: { url: { type: 'string', default: '' } },
|
|
9
10
|
async execute({ params, config, input }) {
|
|
10
11
|
const Subs = getRssSubs();
|
|
11
12
|
if (!Subs)
|
|
@@ -6,6 +6,7 @@ import { checkSubscriptions } from '../../src/poll.js';
|
|
|
6
6
|
|
|
7
7
|
export default defineCommand<RssConfig>({
|
|
8
8
|
description: '手动触发检查 RSS 更新',
|
|
9
|
+
params: { url: { type: 'string', default: '' } },
|
|
9
10
|
async execute({ params, config, input }) {
|
|
10
11
|
const Subs = getRssSubs();
|
|
11
12
|
if (!Subs) return 'RSS 数据库尚未就绪';
|
|
@@ -3,6 +3,7 @@ import { defineCommand } from '@zhin.js/command';
|
|
|
3
3
|
import { fetchFeed, formatFeedPreview, resolveRssConfig } from "../../lib/feed.js";
|
|
4
4
|
export default defineCommand({
|
|
5
5
|
description: '预览一个 RSS 源的最新内容(不订阅)',
|
|
6
|
+
params: { url: { type: 'string' } },
|
|
6
7
|
async execute({ params, config }) {
|
|
7
8
|
const url = String(params.url ?? '').trim();
|
|
8
9
|
if (!url)
|
|
@@ -3,6 +3,7 @@ import { fetchFeed, formatFeedPreview, resolveRssConfig, type RssConfig } from '
|
|
|
3
3
|
|
|
4
4
|
export default defineCommand<RssConfig>({
|
|
5
5
|
description: '预览一个 RSS 源的最新内容(不订阅)',
|
|
6
|
+
params: { url: { type: 'string' } },
|
|
6
7
|
async execute({ params, config }) {
|
|
7
8
|
const url = String(params.url ?? '').trim();
|
|
8
9
|
if (!url) return '请提供 RSS 源地址';
|
|
@@ -4,6 +4,7 @@ import { extractChannelInfo } from "../../lib/channel.js";
|
|
|
4
4
|
import { getRssSubs } from "../../lib/db-store.js";
|
|
5
5
|
export default defineCommand({
|
|
6
6
|
description: '取消一个 RSS 订阅',
|
|
7
|
+
params: { url: { type: 'string' } },
|
|
7
8
|
async execute({ params, input }) {
|
|
8
9
|
const Subs = getRssSubs();
|
|
9
10
|
if (!Subs)
|
|
@@ -5,6 +5,7 @@ import type { RssConfig } from '../../src/feed.js';
|
|
|
5
5
|
|
|
6
6
|
export default defineCommand<RssConfig>({
|
|
7
7
|
description: '取消一个 RSS 订阅',
|
|
8
|
+
params: { url: { type: 'string' } },
|
|
8
9
|
async execute({ params, input }) {
|
|
9
10
|
const Subs = getRssSubs();
|
|
10
11
|
if (!Subs) return 'RSS 数据库尚未就绪';
|
package/lib/channel.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Extract subscription channel keys from Runtime Message (`input`).
|
|
3
|
-
* Gaps vs legacy: no `$channel` / `$group` — use `
|
|
3
|
+
* Gaps vs legacy: no `$channel` / `$group` — use `conversation` / `metadata`.
|
|
4
4
|
*/
|
|
5
5
|
export interface ChannelInfo {
|
|
6
6
|
adapterName: string;
|
|
7
|
-
|
|
7
|
+
endpointKey: string;
|
|
8
8
|
channelType: string;
|
|
9
9
|
channelId: string;
|
|
10
10
|
senderId: string;
|
package/lib/channel.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../src/channel.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,
|
|
1
|
+
{"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../src/channel.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,2DAA2D;AAC3D,eAAO,MAAM,aAAa,EAAE,WAO3B,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,CA4C9D"}
|
package/lib/channel.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Extract subscription channel keys from Runtime Message (`input`).
|
|
3
|
-
* Gaps vs legacy: no `$channel` / `$group` — use `
|
|
3
|
+
* Gaps vs legacy: no `$channel` / `$group` — use `conversation` / `metadata`.
|
|
4
4
|
*/
|
|
5
5
|
/** Smoke / agent / execute()-without-dispatch fallback. */
|
|
6
6
|
export const SMOKE_CHANNEL = {
|
|
7
7
|
adapterName: 'smoke',
|
|
8
|
-
|
|
8
|
+
endpointKey: 'local',
|
|
9
9
|
channelType: 'private',
|
|
10
10
|
channelId: 'global',
|
|
11
11
|
senderId: '',
|
|
@@ -16,17 +16,23 @@ export function extractChannelInfo(input) {
|
|
|
16
16
|
return { ...SMOKE_CHANNEL };
|
|
17
17
|
const msg = input;
|
|
18
18
|
const meta = msg.metadata ?? {};
|
|
19
|
-
const
|
|
20
|
-
const
|
|
21
|
-
const
|
|
22
|
-
const
|
|
19
|
+
const conversation = msg.conversation;
|
|
20
|
+
const channelType = String(meta.channelType ?? meta.type ?? meta.channel_type ?? conversation?.kind ?? 'private');
|
|
21
|
+
const channelId = String(meta.channelId ?? meta.channel_id ?? conversation?.id ?? SMOKE_CHANNEL.channelId);
|
|
22
|
+
const endpointCapabilityId = typeof conversation?.endpoint?.id === 'string'
|
|
23
|
+
? conversation.endpoint.id
|
|
24
|
+
: undefined;
|
|
25
|
+
const adapterName = String((endpointCapabilityId?.split('\0').pop() ?? endpointCapabilityId)?.split('~')[0]
|
|
26
|
+
?? meta.adapter
|
|
27
|
+
?? SMOKE_CHANNEL.adapterName);
|
|
28
|
+
const endpointKey = String(meta.endpoint ?? meta.endpointKey ?? meta.endpoint_id ?? adapterName);
|
|
23
29
|
const senderId = String(msg.sender ?? meta.senderId ?? '');
|
|
24
30
|
const senderName = String(meta.senderName ?? meta.name ?? '');
|
|
25
31
|
if (!channelId)
|
|
26
|
-
return { ...SMOKE_CHANNEL, adapterName,
|
|
32
|
+
return { ...SMOKE_CHANNEL, adapterName, endpointKey, senderId, senderName };
|
|
27
33
|
return {
|
|
28
34
|
adapterName,
|
|
29
|
-
|
|
35
|
+
endpointKey,
|
|
30
36
|
channelType,
|
|
31
37
|
channelId,
|
|
32
38
|
senderId,
|
package/lib/channel.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channel.js","sourceRoot":"","sources":["../src/channel.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,2DAA2D;AAC3D,MAAM,CAAC,MAAM,aAAa,GAAgB;IACxC,WAAW,EAAE,OAAO;IACpB,
|
|
1
|
+
{"version":3,"file":"channel.js","sourceRoot":"","sources":["../src/channel.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,2DAA2D;AAC3D,MAAM,CAAC,MAAM,aAAa,GAAgB;IACxC,WAAW,EAAE,OAAO;IACpB,WAAW,EAAE,OAAO;IACpB,WAAW,EAAE,SAAS;IACtB,SAAS,EAAE,QAAQ;IACnB,QAAQ,EAAE,EAAE;IACZ,UAAU,EAAE,EAAE;CACf,CAAC;AAEF,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,EAAE,GAAG,aAAa,EAAE,CAAC;IAErE,MAAM,GAAG,GAAG,KAQX,CAAC;IACF,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC;IAChC,MAAM,YAAY,GAAG,GAAG,CAAC,YAAY,CAAC;IACtC,MAAM,WAAW,GAAG,MAAM,CACxB,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,YAAY,IAAI,YAAY,EAAE,IAAI,IAAI,SAAS,CACtF,CAAC;IACF,MAAM,SAAS,GAAG,MAAM,CACtB,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,IAAI,YAAY,EAAE,EAAE,IAAI,aAAa,CAAC,SAAS,CACjF,CAAC;IACF,MAAM,oBAAoB,GAAG,OAAO,YAAY,EAAE,QAAQ,EAAE,EAAE,KAAK,QAAQ;QACzE,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE;QAC1B,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,WAAW,GAAG,MAAM,CACxB,CAAC,oBAAoB,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,oBAAoB,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;WAC7E,IAAI,CAAC,OAAO;WACZ,aAAa,CAAC,WAAW,CAC7B,CAAC;IACF,MAAM,WAAW,GAAG,MAAM,CACxB,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,IAAI,WAAW,CACrE,CAAC;IACF,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IAC3D,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAE9D,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,GAAG,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;IAE5F,OAAO;QACL,WAAW;QACX,WAAW;QACX,WAAW;QACX,SAAS;QACT,QAAQ;QACR,UAAU;KACX,CAAC;AACJ,CAAC"}
|
package/lib/memory-store.d.ts
CHANGED
|
@@ -1,20 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* In-memory RSS models (slice-2) until Plugin Runtime DatabaseFeature Resource lands.
|
|
3
|
+
*
|
|
4
|
+
* 模型表面与 `@zhin.js/plugin-runtime` 的 DatabaseHostModel 结构兼容:
|
|
5
|
+
* select 的 where 返回 PromiseLike(host 返回链式 Selection,memory 返回 Promise),
|
|
6
|
+
* 这样 plugin.ts 可以把 PluginDatabaseHost 直接当 RssMemoryDb 用。
|
|
3
7
|
*/
|
|
4
|
-
export
|
|
5
|
-
id: string;
|
|
6
|
-
}
|
|
8
|
+
export type RssRow = Record<string, unknown>;
|
|
7
9
|
export interface RssModel {
|
|
8
|
-
select: () => {
|
|
9
|
-
where: (query: Record<string, unknown>) =>
|
|
10
|
+
select: (...fields: string[]) => {
|
|
11
|
+
where: (query: Record<string, unknown>) => PromiseLike<RssRow[]>;
|
|
10
12
|
then: <TResult1 = RssRow[], TResult2 = never>(onfulfilled?: ((value: RssRow[]) => TResult1 | PromiseLike<TResult1>) | null, onrejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | null) => Promise<TResult1 | TResult2>;
|
|
11
13
|
};
|
|
12
|
-
insert: (row: Record<string, unknown>) => Promise<
|
|
14
|
+
insert: (row: Record<string, unknown>) => Promise<unknown>;
|
|
13
15
|
delete: () => {
|
|
14
|
-
where: (query: Record<string, unknown>) => Promise<
|
|
16
|
+
where: (query: Record<string, unknown>) => Promise<unknown>;
|
|
15
17
|
};
|
|
16
18
|
update: (patch: Record<string, unknown>) => {
|
|
17
|
-
where: (query: Record<string, unknown>) => Promise<
|
|
19
|
+
where: (query: Record<string, unknown>) => Promise<unknown>;
|
|
18
20
|
};
|
|
19
21
|
}
|
|
20
22
|
export interface RssMemoryDb {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-store.d.ts","sourceRoot":"","sources":["../src/memory-store.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"memory-store.d.ts","sourceRoot":"","sources":["../src/memory-store.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE7C,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,MAAM,EAAE,KAAK;QAC/B,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;QACjE,IAAI,EAAE,CAAC,QAAQ,GAAG,MAAM,EAAE,EAAE,QAAQ,GAAG,KAAK,EAC1C,WAAW,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,EAC5E,UAAU,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,KAAK,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,KACxE,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC,CAAC;KACnC,CAAC;IACF,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3D,MAAM,EAAE,MAAM;QAAE,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;KAAE,CAAC;IAC9E,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK;QAC1C,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;KAC7D,CAAC;CACH;AA6CD,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE;QACN,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,QAAQ,GAAG,SAAS,CAAC;KAC7C,CAAC;CACH;AAED,eAAO,MAAM,cAAc,sBAAsB,CAAC;AAClD,eAAO,MAAM,cAAc,mBAAmB,CAAC;AAE/C,wBAAgB,mBAAmB,IAAI,WAAW,CAUjD"}
|
package/lib/memory-store.js
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* In-memory RSS models (slice-2) until Plugin Runtime DatabaseFeature Resource lands.
|
|
3
|
+
*
|
|
4
|
+
* 模型表面与 `@zhin.js/plugin-runtime` 的 DatabaseHostModel 结构兼容:
|
|
5
|
+
* select 的 where 返回 PromiseLike(host 返回链式 Selection,memory 返回 Promise),
|
|
6
|
+
* 这样 plugin.ts 可以把 PluginDatabaseHost 直接当 RssMemoryDb 用。
|
|
3
7
|
*/
|
|
4
8
|
function createMemoryModel() {
|
|
5
9
|
const rows = [];
|
package/lib/memory-store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-store.js","sourceRoot":"","sources":["../src/memory-store.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"memory-store.js","sourceRoot":"","sources":["../src/memory-store.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAmBH,SAAS,iBAAiB;IACxB,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,IAAI,MAAM,GAAG,CAAC,CAAC;IAEf,SAAS,OAAO,CAAC,GAA4B,EAAE,KAA8B;QAC3E,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC;IAC3E,CAAC;IAED,SAAS,GAAG;QACV,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,OAAO;QACL,MAAM,EAAE,GAAG,EAAE;YACX,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;YACvC,OAAO;gBACL,KAAK,EAAE,KAAK,EAAE,KAA8B,EAAE,EAAE,CAC9C,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;gBACtE,IAAI,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC;aACzE,CAAC;QACJ,CAAC;QACD,MAAM,EAAE,KAAK,EAAE,GAA4B,EAAE,EAAE;YAC7C,MAAM,MAAM,GAAW,EAAE,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC;YACxD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAClB,OAAO,EAAE,GAAG,MAAM,EAAE,CAAC;QACvB,CAAC;QACD,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;YACb,KAAK,EAAE,KAAK,EAAE,KAA8B,EAAE,EAAE;gBAC9C,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC7C,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAE,EAAE,KAAK,CAAC;wBAAE,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAClD,CAAC;YACH,CAAC;SACF,CAAC;QACF,MAAM,EAAE,CAAC,KAA8B,EAAE,EAAE,CAAC,CAAC;YAC3C,KAAK,EAAE,KAAK,EAAE,KAA8B,EAAE,EAAE;gBAC9C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;oBACvB,IAAI,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC;wBAAE,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBACrD,CAAC;YACH,CAAC;SACF,CAAC;KACH,CAAC;AACJ,CAAC;AAQD,MAAM,CAAC,MAAM,cAAc,GAAG,mBAAmB,CAAC;AAClD,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAgB,CAAC;AAE/C,MAAM,UAAU,mBAAmB;IACjC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAmB;QACvC,CAAC,cAAc,EAAE,iBAAiB,EAAE,CAAC;QACrC,CAAC,cAAc,EAAE,iBAAiB,EAAE,CAAC;KACtC,CAAC,CAAC;IACH,OAAO;QACL,MAAM,EAAE;YACN,GAAG,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;SACxC;KACF,CAAC;AACJ,CAAC"}
|
package/lib/poll.d.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
import { type FeedItem, type RssConfig } from './feed.js';
|
|
5
5
|
export type RssOutboundPush = (input: {
|
|
6
6
|
readonly adapterName: string;
|
|
7
|
-
readonly
|
|
7
|
+
readonly endpointKey: string;
|
|
8
8
|
readonly channelType: string;
|
|
9
9
|
readonly channelId: string;
|
|
10
10
|
readonly content: string;
|
package/lib/poll.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"poll.d.ts","sourceRoot":"","sources":["../src/poll.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAa,KAAK,QAAQ,EAAE,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAGrE,MAAM,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE;IACpC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"poll.d.ts","sourceRoot":"","sources":["../src/poll.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAa,KAAK,QAAQ,EAAE,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAGrE,MAAM,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE;IACpC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAIpB,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI,GAAG,IAAI,CAErE;AAED,wBAAgB,kBAAkB,IAAI,eAAe,GAAG,IAAI,CAE3D;AAMD,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAY7F;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAcrF;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AA4BD;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE;IAChD,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACxB,MAAM,EAAE,SAAS,CAAC;CACnB,GAAG,OAAO,CAAC,WAAW,CAAC,CAuCvB;AAED;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAiBlD;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,CAO1E"}
|
package/lib/poll.js
CHANGED
|
@@ -59,7 +59,7 @@ async function pushToSubscribers(feedUrl, content) {
|
|
|
59
59
|
try {
|
|
60
60
|
await push({
|
|
61
61
|
adapterName,
|
|
62
|
-
|
|
62
|
+
endpointKey: String(sub.endpoint_id ?? adapterName),
|
|
63
63
|
channelType: String(sub.channel_type ?? 'private'),
|
|
64
64
|
channelId,
|
|
65
65
|
content,
|
package/lib/poll.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"poll.js","sourceRoot":"","sources":["../src/poll.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"poll.js","sourceRoot":"","sources":["../src/poll.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zhin.js/plugin-rss",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.5",
|
|
4
4
|
"description": "RSS/Atom feed subscription plugin for Zhin.js (Plugin Runtime)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./lib/index.js",
|
|
@@ -41,18 +41,18 @@
|
|
|
41
41
|
"license": "MIT",
|
|
42
42
|
"dependencies": {
|
|
43
43
|
"rss-parser": "^3.13.0",
|
|
44
|
-
"@zhin.js/command": "1.0.
|
|
45
|
-
"@zhin.js/plugin-runtime": "1.1.
|
|
44
|
+
"@zhin.js/command": "1.0.9",
|
|
45
|
+
"@zhin.js/plugin-runtime": "1.1.5"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
48
|
"typescript": "^6.0.3",
|
|
49
49
|
"vitest": "^4.1.10",
|
|
50
50
|
"zod": "^4.4.3",
|
|
51
|
-
"@zhin.js/agent": "1.1.
|
|
51
|
+
"@zhin.js/agent": "1.1.5"
|
|
52
52
|
},
|
|
53
53
|
"peerDependencies": {
|
|
54
54
|
"zod": "^4.0.0",
|
|
55
|
-
"@zhin.js/agent": "1.1.
|
|
55
|
+
"@zhin.js/agent": "1.1.5"
|
|
56
56
|
},
|
|
57
57
|
"peerDependenciesMeta": {
|
|
58
58
|
"@zhin.js/agent": {
|
package/plugin.js
CHANGED
|
@@ -51,9 +51,11 @@ export default definePlugin({
|
|
|
51
51
|
setRssOutboundPush(async (input) => {
|
|
52
52
|
await outbound.send({
|
|
53
53
|
adapter: input.adapterName,
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
54
|
+
endpointKey: input.endpointKey,
|
|
55
|
+
conversation: {
|
|
56
|
+
kind: input.channelType,
|
|
57
|
+
id: input.channelId,
|
|
58
|
+
},
|
|
57
59
|
content: input.content,
|
|
58
60
|
});
|
|
59
61
|
});
|
package/src/channel.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Extract subscription channel keys from Runtime Message (`input`).
|
|
3
|
-
* Gaps vs legacy: no `$channel` / `$group` — use `
|
|
3
|
+
* Gaps vs legacy: no `$channel` / `$group` — use `conversation` / `metadata`.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
export interface ChannelInfo {
|
|
7
7
|
adapterName: string;
|
|
8
|
-
|
|
8
|
+
endpointKey: string;
|
|
9
9
|
channelType: string;
|
|
10
10
|
channelId: string;
|
|
11
11
|
senderId: string;
|
|
@@ -15,7 +15,7 @@ export interface ChannelInfo {
|
|
|
15
15
|
/** Smoke / agent / execute()-without-dispatch fallback. */
|
|
16
16
|
export const SMOKE_CHANNEL: ChannelInfo = {
|
|
17
17
|
adapterName: 'smoke',
|
|
18
|
-
|
|
18
|
+
endpointKey: 'local',
|
|
19
19
|
channelType: 'private',
|
|
20
20
|
channelId: 'global',
|
|
21
21
|
senderId: '',
|
|
@@ -26,30 +26,41 @@ export function extractChannelInfo(input: unknown): ChannelInfo {
|
|
|
26
26
|
if (!input || typeof input !== 'object') return { ...SMOKE_CHANNEL };
|
|
27
27
|
|
|
28
28
|
const msg = input as {
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
conversation?: {
|
|
30
|
+
endpoint?: { id?: string; adapter?: string };
|
|
31
|
+
kind?: string;
|
|
32
|
+
id?: string;
|
|
33
|
+
};
|
|
31
34
|
sender?: string;
|
|
32
35
|
metadata?: Record<string, unknown>;
|
|
33
36
|
};
|
|
34
37
|
const meta = msg.metadata ?? {};
|
|
38
|
+
const conversation = msg.conversation;
|
|
35
39
|
const channelType = String(
|
|
36
|
-
meta.channelType ?? meta.type ?? meta.channel_type ?? 'private',
|
|
40
|
+
meta.channelType ?? meta.type ?? meta.channel_type ?? conversation?.kind ?? 'private',
|
|
37
41
|
);
|
|
38
42
|
const channelId = String(
|
|
39
|
-
meta.channelId ?? meta.channel_id ??
|
|
43
|
+
meta.channelId ?? meta.channel_id ?? conversation?.id ?? SMOKE_CHANNEL.channelId,
|
|
40
44
|
);
|
|
41
|
-
const
|
|
42
|
-
|
|
43
|
-
|
|
45
|
+
const endpointCapabilityId = typeof conversation?.endpoint?.id === 'string'
|
|
46
|
+
? conversation.endpoint.id
|
|
47
|
+
: undefined;
|
|
48
|
+
const adapterName = String(
|
|
49
|
+
(endpointCapabilityId?.split('\0').pop() ?? endpointCapabilityId)?.split('~')[0]
|
|
50
|
+
?? meta.adapter
|
|
51
|
+
?? SMOKE_CHANNEL.adapterName,
|
|
52
|
+
);
|
|
53
|
+
const endpointKey = String(
|
|
54
|
+
meta.endpoint ?? meta.endpointKey ?? meta.endpoint_id ?? adapterName,
|
|
44
55
|
);
|
|
45
56
|
const senderId = String(msg.sender ?? meta.senderId ?? '');
|
|
46
57
|
const senderName = String(meta.senderName ?? meta.name ?? '');
|
|
47
58
|
|
|
48
|
-
if (!channelId) return { ...SMOKE_CHANNEL, adapterName,
|
|
59
|
+
if (!channelId) return { ...SMOKE_CHANNEL, adapterName, endpointKey, senderId, senderName };
|
|
49
60
|
|
|
50
61
|
return {
|
|
51
62
|
adapterName,
|
|
52
|
-
|
|
63
|
+
endpointKey,
|
|
53
64
|
channelType,
|
|
54
65
|
channelId,
|
|
55
66
|
senderId,
|
package/src/memory-store.ts
CHANGED
|
@@ -1,23 +1,25 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* In-memory RSS models (slice-2) until Plugin Runtime DatabaseFeature Resource lands.
|
|
3
|
+
*
|
|
4
|
+
* 模型表面与 `@zhin.js/plugin-runtime` 的 DatabaseHostModel 结构兼容:
|
|
5
|
+
* select 的 where 返回 PromiseLike(host 返回链式 Selection,memory 返回 Promise),
|
|
6
|
+
* 这样 plugin.ts 可以把 PluginDatabaseHost 直接当 RssMemoryDb 用。
|
|
3
7
|
*/
|
|
4
8
|
|
|
5
|
-
export
|
|
6
|
-
id: string;
|
|
7
|
-
}
|
|
9
|
+
export type RssRow = Record<string, unknown>;
|
|
8
10
|
|
|
9
11
|
export interface RssModel {
|
|
10
|
-
select: () => {
|
|
11
|
-
where: (query: Record<string, unknown>) =>
|
|
12
|
+
select: (...fields: string[]) => {
|
|
13
|
+
where: (query: Record<string, unknown>) => PromiseLike<RssRow[]>;
|
|
12
14
|
then: <TResult1 = RssRow[], TResult2 = never>(
|
|
13
15
|
onfulfilled?: ((value: RssRow[]) => TResult1 | PromiseLike<TResult1>) | null,
|
|
14
16
|
onrejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | null,
|
|
15
17
|
) => Promise<TResult1 | TResult2>;
|
|
16
18
|
};
|
|
17
|
-
insert: (row: Record<string, unknown>) => Promise<
|
|
18
|
-
delete: () => { where: (query: Record<string, unknown>) => Promise<
|
|
19
|
+
insert: (row: Record<string, unknown>) => Promise<unknown>;
|
|
20
|
+
delete: () => { where: (query: Record<string, unknown>) => Promise<unknown> };
|
|
19
21
|
update: (patch: Record<string, unknown>) => {
|
|
20
|
-
where: (query: Record<string, unknown>) => Promise<
|
|
22
|
+
where: (query: Record<string, unknown>) => Promise<unknown>;
|
|
21
23
|
};
|
|
22
24
|
}
|
|
23
25
|
|
package/src/poll.ts
CHANGED
|
@@ -6,7 +6,7 @@ import { getRssSeen, getRssSubs } from './db-store.js';
|
|
|
6
6
|
|
|
7
7
|
export type RssOutboundPush = (input: {
|
|
8
8
|
readonly adapterName: string;
|
|
9
|
-
readonly
|
|
9
|
+
readonly endpointKey: string;
|
|
10
10
|
readonly channelType: string;
|
|
11
11
|
readonly channelId: string;
|
|
12
12
|
readonly content: string;
|
|
@@ -75,7 +75,7 @@ async function pushToSubscribers(feedUrl: string, content: string): Promise<numb
|
|
|
75
75
|
try {
|
|
76
76
|
await push({
|
|
77
77
|
adapterName,
|
|
78
|
-
|
|
78
|
+
endpointKey: String(sub.endpoint_id ?? adapterName),
|
|
79
79
|
channelType: String(sub.channel_type ?? 'private'),
|
|
80
80
|
channelId,
|
|
81
81
|
content,
|