@zhin.js/plugin-music 1.1.0 → 1.1.3

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 (73) hide show
  1. package/README.md +27 -27
  2. package/commands/cookie/delete/{[source].js → [source]/index.js} +4 -4
  3. package/commands/cookie/delete/{[source].ts → [source]/index.ts} +5 -5
  4. package/commands/cookie/get/{[source].js → [source]/index.js} +4 -4
  5. package/commands/cookie/get/{[source].ts → [source]/index.ts} +5 -5
  6. package/commands/cookie/set/{[source].js → [source]/index.js} +4 -4
  7. package/commands/cookie/set/{[source].ts → [source]/index.ts} +5 -5
  8. package/commands/cookie/{status.js → status/index.js} +4 -4
  9. package/commands/cookie/{status.ts → status/index.ts} +5 -5
  10. package/commands/login/{[platform].js → [platform]/index.js} +10 -8
  11. package/commands/login/{[platform].ts → [platform]/index.ts} +10 -12
  12. package/commands//347/202/271/346/255/214/{[keyword].js → [keyword]/index.js} +7 -6
  13. package/commands//347/202/271/346/255/214/{[keyword].ts → [keyword]/index.ts} +8 -7
  14. package/components/{share-music.js → share-music/index.js} +4 -4
  15. package/components/{share-music.ts → share-music/index.ts} +5 -5
  16. package/lib/credential-store.d.ts +10 -7
  17. package/lib/credential-store.d.ts.map +1 -1
  18. package/lib/credential-store.js +44 -70
  19. package/lib/credential-store.js.map +1 -1
  20. package/lib/index.d.ts +5 -4
  21. package/lib/index.d.ts.map +1 -1
  22. package/lib/index.js +5 -4
  23. package/lib/index.js.map +1 -1
  24. package/lib/login/index.d.ts +18 -11
  25. package/lib/login/index.d.ts.map +1 -1
  26. package/lib/login/index.js +103 -79
  27. package/lib/login/index.js.map +1 -1
  28. package/lib/music-lib.d.ts +3 -2
  29. package/lib/music-lib.d.ts.map +1 -1
  30. package/lib/music-lib.js +4 -5
  31. package/lib/music-lib.js.map +1 -1
  32. package/lib/runtime.d.ts +12 -0
  33. package/lib/runtime.d.ts.map +1 -0
  34. package/lib/runtime.js +3 -0
  35. package/lib/runtime.js.map +1 -0
  36. package/lib/session.d.ts +10 -4
  37. package/lib/session.d.ts.map +1 -1
  38. package/lib/session.js +33 -21
  39. package/lib/session.js.map +1 -1
  40. package/lib/sources/index.d.ts +2 -1
  41. package/lib/sources/index.d.ts.map +1 -1
  42. package/lib/sources/index.js +8 -6
  43. package/lib/sources/index.js.map +1 -1
  44. package/lib/sources/kugou.d.ts.map +1 -1
  45. package/lib/sources/kugou.js +16 -1
  46. package/lib/sources/kugou.js.map +1 -1
  47. package/lib/sources/netease.d.ts +3 -0
  48. package/lib/sources/netease.d.ts.map +1 -1
  49. package/lib/sources/netease.js +5 -2
  50. package/lib/sources/netease.js.map +1 -1
  51. package/lib/sources/qq.d.ts +3 -0
  52. package/lib/sources/qq.d.ts.map +1 -1
  53. package/lib/sources/qq.js +6 -3
  54. package/lib/sources/qq.js.map +1 -1
  55. package/middlewares/{music-selection.js → music-selection/index.js} +9 -7
  56. package/middlewares/{music-selection.ts → music-selection/index.ts} +13 -7
  57. package/package.json +16 -11
  58. package/plugin.js +23 -9
  59. package/{agent/skills/music.md → skills/music/SKILL.md} +2 -2
  60. package/{tools/music-search.js → skills/music/tools/music-search/index.js} +4 -3
  61. package/{tools/music-search.ts → skills/music/tools/music-search/index.ts} +11 -5
  62. package/{tools/music-share.js → skills/music/tools/music-share/index.js} +4 -3
  63. package/{tools/music-share.ts → skills/music/tools/music-share/index.ts} +6 -4
  64. package/src/credential-store.ts +43 -87
  65. package/src/index.ts +8 -16
  66. package/src/login/index.ts +111 -92
  67. package/src/music-lib.ts +5 -4
  68. package/src/runtime.ts +17 -0
  69. package/src/session.ts +38 -21
  70. package/src/sources/index.ts +9 -6
  71. package/src/sources/kugou.ts +15 -1
  72. package/src/sources/netease.ts +8 -2
  73. package/src/sources/qq.ts +9 -3
package/lib/session.js CHANGED
@@ -1,5 +1,4 @@
1
1
  const SEARCH_TIMEOUT_MS = 3 * 60 * 1000;
2
- const pendingSessions = new Map();
3
2
  export function sessionKey(endpointId, conversationId, senderId) {
4
3
  return `${endpointId}:${conversationId}:${senderId}`;
5
4
  }
@@ -12,28 +11,41 @@ export function resolveMessageIds(input) {
12
11
  return null;
13
12
  return { endpointId, conversationId, senderId };
14
13
  }
15
- export function setPending(key, search) {
16
- pendingSessions.set(key, search);
17
- }
18
- export function getPending(key) {
19
- const session = pendingSessions.get(key);
20
- if (!session)
21
- return undefined;
22
- if (Date.now() - session.timestamp > SEARCH_TIMEOUT_MS) {
23
- pendingSessions.delete(key);
24
- return undefined;
14
+ /** Generation-owned pending music selections. */
15
+ export class MusicSearchSessions {
16
+ #pending = new Map();
17
+ #timeoutMs;
18
+ #now;
19
+ constructor(timeoutMs = SEARCH_TIMEOUT_MS, now = Date.now) {
20
+ this.#timeoutMs = timeoutMs;
21
+ this.#now = now;
25
22
  }
26
- return session;
27
- }
28
- export function clearPending(key) {
29
- pendingSessions.delete(key);
30
- }
31
- export function cleanExpired() {
32
- const now = Date.now();
33
- for (const [key, session] of pendingSessions) {
34
- if (now - session.timestamp > SEARCH_TIMEOUT_MS) {
35
- pendingSessions.delete(key);
23
+ set(key, search) {
24
+ this.#pending.set(key, search);
25
+ }
26
+ get(key) {
27
+ const session = this.#pending.get(key);
28
+ if (!session)
29
+ return undefined;
30
+ if (this.#now() - session.timestamp > this.#timeoutMs) {
31
+ this.#pending.delete(key);
32
+ return undefined;
36
33
  }
34
+ return session;
35
+ }
36
+ delete(key) {
37
+ this.#pending.delete(key);
38
+ }
39
+ pruneExpired() {
40
+ const now = this.#now();
41
+ for (const [key, session] of this.#pending) {
42
+ if (now - session.timestamp > this.#timeoutMs) {
43
+ this.#pending.delete(key);
44
+ }
45
+ }
46
+ }
47
+ dispose() {
48
+ this.#pending.clear();
37
49
  }
38
50
  }
39
51
  //# sourceMappingURL=session.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AASA,MAAM,iBAAiB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAExC,MAAM,eAAe,GAAG,IAAI,GAAG,EAAyB,CAAC;AAEzD,MAAM,UAAU,UAAU,CACxB,UAAkB,EAClB,cAAsB,EACtB,QAAgB;IAEhB,OAAO,GAAG,UAAU,IAAI,cAAc,IAAI,QAAQ,EAAE,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAIjC;IACC,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;IAClC,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC,YAAY,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IACrF,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,IAAI,CAAC,UAAU,IAAI,CAAC,cAAc,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC7D,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,GAAW,EAAE,MAAqB;IAC3D,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACzC,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,SAAS,GAAG,iBAAiB,EAAE,CAAC;QACvD,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC5B,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,eAAe,EAAE,CAAC;QAC7C,IAAI,GAAG,GAAG,OAAO,CAAC,SAAS,GAAG,iBAAiB,EAAE,CAAC;YAChD,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AASA,MAAM,iBAAiB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAExC,MAAM,UAAU,UAAU,CACxB,UAAkB,EAClB,cAAsB,EACtB,QAAgB;IAEhB,OAAO,GAAG,UAAU,IAAI,cAAc,IAAI,QAAQ,EAAE,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAIjC;IACC,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;IAClC,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC,YAAY,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IACrF,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,IAAI,CAAC,UAAU,IAAI,CAAC,cAAc,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC7D,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC;AAClD,CAAC;AAED,iDAAiD;AACjD,MAAM,OAAO,mBAAmB;IACrB,QAAQ,GAAG,IAAI,GAAG,EAAyB,CAAC;IAC5C,UAAU,CAAS;IACnB,IAAI,CAAe;IAE5B,YACE,SAAS,GAAG,iBAAiB,EAC7B,MAAoB,IAAI,CAAC,GAAG;QAE5B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IAClB,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,MAAqB;QACpC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACjC,CAAC;IAED,GAAG,CAAC,GAAW;QACb,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,CAAC,OAAO;YAAE,OAAO,SAAS,CAAC;QAC/B,IAAI,IAAI,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YACtD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC1B,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,CAAC,GAAW;QAChB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED,YAAY;QACV,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACxB,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3C,IAAI,GAAG,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;gBAC9C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;CACF"}
@@ -1,5 +1,6 @@
1
1
  import type { MusicSource, MusicSearchService } from '../types.js';
2
- export declare const musicServices: Record<MusicSource, MusicSearchService>;
2
+ import type { CredentialStore } from '../credential-store.js';
3
+ export declare function createMusicServices(credentials: CredentialStore): Record<MusicSource, MusicSearchService>;
3
4
  export * from './qq.js';
4
5
  export * from './netease.js';
5
6
  export * from './kuwo.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sources/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEnE,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,WAAW,EAAE,kBAAkB,CAKjE,CAAC;AAEF,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sources/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,eAAe,GAAG,MAAM,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAOzG;AAED,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC"}
@@ -2,12 +2,14 @@ import { QQMusicService } from './qq.js';
2
2
  import { NeteaseMusicService } from './netease.js';
3
3
  import { KuwoMusicService } from './kuwo.js';
4
4
  import { KugouMusicService } from './kugou.js';
5
- export const musicServices = {
6
- qq: new QQMusicService(),
7
- netease: new NeteaseMusicService(),
8
- kuwo: new KuwoMusicService(),
9
- kugou: new KugouMusicService(),
10
- };
5
+ export function createMusicServices(credentials) {
6
+ return {
7
+ qq: new QQMusicService(credentials),
8
+ netease: new NeteaseMusicService(credentials),
9
+ kuwo: new KuwoMusicService(),
10
+ kugou: new KugouMusicService(),
11
+ };
12
+ }
11
13
  export * from './qq.js';
12
14
  export * from './netease.js';
13
15
  export * from './kuwo.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sources/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAG/C,MAAM,CAAC,MAAM,aAAa,GAA4C;IACpE,EAAE,EAAE,IAAI,cAAc,EAAE;IACxB,OAAO,EAAE,IAAI,mBAAmB,EAAE;IAClC,IAAI,EAAE,IAAI,gBAAgB,EAAE;IAC5B,KAAK,EAAE,IAAI,iBAAiB,EAAE;CAC/B,CAAC;AAEF,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sources/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAI/C,MAAM,UAAU,mBAAmB,CAAC,WAA4B;IAC9D,OAAO;QACL,EAAE,EAAE,IAAI,cAAc,CAAC,WAAW,CAAC;QACnC,OAAO,EAAE,IAAI,mBAAmB,CAAC,WAAW,CAAC;QAC7C,IAAI,EAAE,IAAI,gBAAgB,EAAE;QAC5B,KAAK,EAAE,IAAI,iBAAiB,EAAE;KAC/B,CAAC;AACJ,CAAC;AAED,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"kugou.d.ts","sourceRoot":"","sources":["../../src/sources/kugou.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAW9E,qBAAa,iBAAkB,YAAW,kBAAkB;IACpD,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IA6BzD,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;CAoClD"}
1
+ {"version":3,"file":"kugou.d.ts","sourceRoot":"","sources":["../../src/sources/kugou.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAyB9E,qBAAa,iBAAkB,YAAW,kBAAkB;IACpD,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IA6BzD,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;CAoClD"}
@@ -1,3 +1,18 @@
1
+ function stripHtmlTags(input) {
2
+ let result = '';
3
+ let cursor = 0;
4
+ while (cursor < input.length) {
5
+ const start = input.indexOf('<', cursor);
6
+ if (start < 0)
7
+ return result + input.slice(cursor);
8
+ result += input.slice(cursor, start);
9
+ const end = input.indexOf('>', start + 1);
10
+ if (end < 0)
11
+ return result + input.slice(start);
12
+ cursor = end + 1;
13
+ }
14
+ return result;
15
+ }
1
16
  export class KugouMusicService {
2
17
  async search(keyword, limit = 10) {
3
18
  try {
@@ -13,7 +28,7 @@ export class KugouMusicService {
13
28
  return items.slice(0, limit).map((item) => ({
14
29
  id: item.hash,
15
30
  source: 'kugou',
16
- title: item.songname?.replace(/<[^>]+>/g, '') ?? '',
31
+ title: stripHtmlTags(item.songname ?? ''),
17
32
  artist: item.singername,
18
33
  album: item.album_name,
19
34
  duration: item.duration,
@@ -1 +1 @@
1
- {"version":3,"file":"kugou.js","sourceRoot":"","sources":["../../src/sources/kugou.ts"],"names":[],"mappings":"AAWA,MAAM,OAAO,iBAAiB;IAC5B,KAAK,CAAC,MAAM,CAAC,OAAe,EAAE,KAAK,GAAG,EAAE;QACtC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,gDAAgD,CAAC,CAAC;YACtE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACvC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACzC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAClC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAChD,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;YAEtC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;YACrD,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAElC,CAAC;YAEF,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;YACpC,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC1C,EAAE,EAAE,IAAI,CAAC,IAAI;gBACb,MAAM,EAAE,OAAgB;gBACxB,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,EAAE;gBACnD,MAAM,EAAE,IAAI,CAAC,UAAU;gBACvB,KAAK,EAAE,IAAI,CAAC,UAAU;gBACtB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,GAAG,EAAE,oCAAoC,IAAI,CAAC,IAAI,EAAE;aACrD,CAAC,CAAC,CAAC;QACN,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,EAAU;QACxB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,uCAAuC,CAAC,CAAC;QAC7D,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QAC1C,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACjC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACrC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAEpC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CASpC,CAAC;QACF,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAE9C,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;QAClC,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;QAEnD,OAAO;YACL,EAAE;YACF,MAAM,EAAE,OAAO;YACf,KAAK,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE;YAC3B,MAAM,EAAE,IAAI,CAAC,WAAW;YACxB,KAAK,EAAE,IAAI,CAAC,UAAU;YACtB,GAAG,EAAE,oCAAoC,EAAE,EAAE;YAC7C,KAAK,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE;YACrB,KAAK;YACL,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;SAC3E,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"kugou.js","sourceRoot":"","sources":["../../src/sources/kugou.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,9 @@
1
1
  import type { MusicSearchService, MusicDetail, MusicInfo } from '../types.js';
2
+ import type { CredentialStore } from '../credential-store.js';
2
3
  /** 网易云音乐搜索服务 */
3
4
  export declare class NeteaseMusicService implements MusicSearchService {
5
+ #private;
6
+ constructor(credentials: CredentialStore);
4
7
  search(keyword: string, limit?: number): Promise<MusicInfo[]>;
5
8
  getCover(id: string): Promise<string | null>;
6
9
  getDetail(id: string): Promise<MusicDetail>;
@@ -1 +1 @@
1
- {"version":3,"file":"netease.d.ts","sourceRoot":"","sources":["../../src/sources/netease.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,SAAS,EAAY,MAAM,aAAa,CAAC;AAGxF,gBAAgB;AAChB,qBAAa,mBAAoB,YAAW,kBAAkB;IACtD,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAwBzD,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAiB5C,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAoBjD;;;;;OAKG;IACG,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CA4B/C"}
1
+ {"version":3,"file":"netease.d.ts","sourceRoot":"","sources":["../../src/sources/netease.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,SAAS,EAAY,MAAM,aAAa,CAAC;AACxF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,gBAAgB;AAChB,qBAAa,mBAAoB,YAAW,kBAAkB;;gBAGhD,WAAW,EAAE,eAAe;IAIlC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAwBzD,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAiB5C,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAoBjD;;;;;OAKG;IACG,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CA4B/C"}
@@ -1,6 +1,9 @@
1
- import { getCredential } from '../credential-store.js';
2
1
  /** 网易云音乐搜索服务 */
3
2
  export class NeteaseMusicService {
3
+ #credentials;
4
+ constructor(credentials) {
5
+ this.#credentials = credentials;
6
+ }
4
7
  async search(keyword, limit = 10) {
5
8
  try {
6
9
  const searchUrl = `http://music.163.com/api/search/get/web?csrf_token=hlpretag=&hlposttag=&s=${encodeURIComponent(keyword)}&type=1&offset=0&total=true&limit=${limit}`;
@@ -62,7 +65,7 @@ export class NeteaseMusicService {
62
65
  * @returns 音频直链 URL
63
66
  */
64
67
  async getAudioUrl(id) {
65
- const cookie = await getCredential('netease', 'cookie');
68
+ const cookie = await this.#credentials.get('netease', 'cookie');
66
69
  if (cookie) {
67
70
  try {
68
71
  const response = await fetch(`https://music.163.com/api/song/enhance/player/url?ids=[${id}]&br=320000`, {
@@ -1 +1 @@
1
- {"version":3,"file":"netease.js","sourceRoot":"","sources":["../../src/sources/netease.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"netease.js","sourceRoot":"","sources":["../../src/sources/netease.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,8 @@
1
1
  import type { MusicSearchService, MusicDetail, MusicInfo } from '../types.js';
2
+ import type { CredentialStore } from '../credential-store.js';
2
3
  export declare class QQMusicService implements MusicSearchService {
4
+ #private;
5
+ constructor(credentials: CredentialStore);
3
6
  search(keyword: string, limit?: number): Promise<MusicInfo[]>;
4
7
  getDetail(id: string): Promise<MusicDetail>;
5
8
  getAudioUrl(id: string, mid?: string, mediaMid?: string): Promise<string>;
@@ -1 +1 @@
1
- {"version":3,"file":"qq.d.ts","sourceRoot":"","sources":["../../src/sources/qq.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAe9E,qBAAa,cAAe,YAAW,kBAAkB;IACjD,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IA0DzD,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAkC3C,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAiDzE,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAqBnD"}
1
+ {"version":3,"file":"qq.d.ts","sourceRoot":"","sources":["../../src/sources/qq.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAc9D,qBAAa,cAAe,YAAW,kBAAkB;;gBAG3C,WAAW,EAAE,eAAe;IAIlC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IA0DzD,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAkC3C,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAiDzE,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAqBnD"}
package/lib/sources/qq.js CHANGED
@@ -1,5 +1,4 @@
1
1
  import * as crypto from 'node:crypto';
2
- import { getCredential } from '../credential-store.js';
3
2
  const md5 = (text) => crypto.createHash('md5').update(text).digest('hex');
4
3
  const MUSICU_API = 'https://u.y.qq.com/cgi-bin/musicu.fcg';
5
4
  function getHeaders(cookie) {
@@ -10,9 +9,13 @@ function getHeaders(cookie) {
10
9
  };
11
10
  }
12
11
  export class QQMusicService {
12
+ #credentials;
13
+ constructor(credentials) {
14
+ this.#credentials = credentials;
15
+ }
13
16
  async search(keyword, limit = 10) {
14
17
  try {
15
- const cookie = await getCredential('qq', 'cookie');
18
+ const cookie = await this.#credentials.get('qq', 'cookie');
16
19
  const response = await fetch(MUSICU_API, {
17
20
  method: 'POST',
18
21
  headers: getHeaders(cookie),
@@ -96,7 +99,7 @@ export class QQMusicService {
96
99
  };
97
100
  }
98
101
  async getAudioUrl(id, mid, mediaMid) {
99
- const cookie = await getCredential('qq', 'cookie');
102
+ const cookie = await this.#credentials.get('qq', 'cookie');
100
103
  if (cookie) {
101
104
  try {
102
105
  const uin = /uin=o?(\d+)/.exec(cookie)?.[1] ?? '0';
@@ -1 +1 @@
1
- {"version":3,"file":"qq.js","sourceRoot":"","sources":["../../src/sources/qq.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"qq.js","sourceRoot":"","sources":["../../src/sources/qq.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,9 @@
1
1
  // Generated by build-plugin-runtime-entries.mjs. Do not edit.
2
2
  import { defineMiddleware } from 'zhin.js/middleware';
3
- import { sessionKey, resolveMessageIds, getPending, clearPending } from "../lib/session.js";
4
- import { shareMusicDetail, buildMusicShareSegment } from "../lib/music-lib.js";
5
- import { SOURCE_DISPLAY_NAME } from "../lib/config.js";
3
+ import { sessionKey, resolveMessageIds } from "../../lib/session.js";
4
+ import { shareMusicDetail, buildMusicShareSegment } from "../../lib/music-lib.js";
5
+ import { SOURCE_DISPLAY_NAME } from "../../lib/config.js";
6
+ import { musicRuntimeToken } from "../../lib/runtime.js";
6
7
  export default defineMiddleware({
7
8
  target: 'inbound',
8
9
  async handle(context, next) {
@@ -17,13 +18,14 @@ export default defineMiddleware({
17
18
  return;
18
19
  }
19
20
  const key = sessionKey(ids.endpointId, ids.conversationId, ids.senderId);
20
- const pending = getPending(key);
21
+ const runtime = context.use(musicRuntimeToken);
22
+ const pending = runtime.sessions.get(key);
21
23
  if (!pending) {
22
24
  await next();
23
25
  return;
24
26
  }
25
27
  if (raw === '取消') {
26
- clearPending(key);
28
+ runtime.sessions.delete(key);
27
29
  await context.input.$reply('已取消点歌');
28
30
  return;
29
31
  }
@@ -32,10 +34,10 @@ export default defineMiddleware({
32
34
  await next();
33
35
  return;
34
36
  }
35
- clearPending(key);
37
+ runtime.sessions.delete(key);
36
38
  const selected = pending.results[num - 1];
37
39
  const sourceName = SOURCE_DISPLAY_NAME[selected.source] ?? selected.source;
38
- const detailResult = await shareMusicDetail(selected.id, selected.source);
40
+ const detailResult = await shareMusicDetail(runtime, selected.id, selected.source);
39
41
  if (!detailResult.success) {
40
42
  await context.input.$reply(`[${sourceName}] 获取"${selected.title}"播放信息失败:${detailResult.error}`);
41
43
  return;
@@ -1,8 +1,9 @@
1
1
  import { defineMiddleware } from 'zhin.js/middleware';
2
2
  import type { Message } from '@zhin.js/core/runtime';
3
- import { sessionKey, resolveMessageIds, getPending, clearPending } from '../src/session.js';
4
- import { shareMusicDetail, buildMusicShareSegment } from '../src/music-lib.js';
5
- import { SOURCE_DISPLAY_NAME } from '../src/config.js';
3
+ import { sessionKey, resolveMessageIds } from '../../src/session.js';
4
+ import { shareMusicDetail, buildMusicShareSegment } from '../../src/music-lib.js';
5
+ import { SOURCE_DISPLAY_NAME } from '../../src/config.js';
6
+ import { musicRuntimeToken } from '../../src/runtime.js';
6
7
 
7
8
  export default defineMiddleware<Message>({
8
9
  target: 'inbound',
@@ -20,14 +21,15 @@ export default defineMiddleware<Message>({
20
21
  }
21
22
 
22
23
  const key = sessionKey(ids.endpointId, ids.conversationId, ids.senderId);
23
- const pending = getPending(key);
24
+ const runtime = context.use(musicRuntimeToken);
25
+ const pending = runtime.sessions.get(key);
24
26
  if (!pending) {
25
27
  await next();
26
28
  return;
27
29
  }
28
30
 
29
31
  if (raw === '取消') {
30
- clearPending(key);
32
+ runtime.sessions.delete(key);
31
33
  await context.input.$reply('已取消点歌');
32
34
  return;
33
35
  }
@@ -38,11 +40,15 @@ export default defineMiddleware<Message>({
38
40
  return;
39
41
  }
40
42
 
41
- clearPending(key);
43
+ runtime.sessions.delete(key);
42
44
  const selected = pending.results[num - 1]!;
43
45
  const sourceName = SOURCE_DISPLAY_NAME[selected.source] ?? selected.source;
44
46
 
45
- const detailResult = await shareMusicDetail(selected.id, selected.source);
47
+ const detailResult = await shareMusicDetail(
48
+ runtime,
49
+ selected.id,
50
+ selected.source,
51
+ );
46
52
  if (!detailResult.success) {
47
53
  await context.input.$reply(
48
54
  `[${sourceName}] 获取"${selected.title}"播放信息失败:${detailResult.error}`,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zhin.js/plugin-music",
3
- "version": "1.1.0",
3
+ "version": "1.1.3",
4
4
  "description": "Music search and sharing plugin for Zhin.js (Plugin Runtime)",
5
5
  "type": "module",
6
6
  "main": "./lib/index.js",
@@ -19,10 +19,10 @@
19
19
  "commands",
20
20
  "middlewares",
21
21
  "components",
22
- "tools",
23
22
  "src",
24
23
  "lib",
25
- "agent",
24
+ "tools",
25
+ "skills",
26
26
  "README.md"
27
27
  ],
28
28
  "keywords": [
@@ -43,20 +43,21 @@
43
43
  },
44
44
  "license": "MIT",
45
45
  "dependencies": {
46
- "@zhin.js/core": "1.1.35",
47
- "@zhin.js/tool": "1.1.0"
46
+ "@zhin.js/core": "1.1.38",
47
+ "@zhin.js/tool": "1.1.2",
48
+ "@zhin.js/skill": "1.1.2"
48
49
  },
49
50
  "devDependencies": {
50
51
  "typescript": "^6.0.3",
51
52
  "vitest": "^4.1.10",
52
- "zhin.js": "1.1.0"
53
+ "zhin.js": "1.1.3"
53
54
  },
54
55
  "peerDependencies": {
55
- "@zhin.js/adapter-icqq": "^1.1.0",
56
- "@zhin.js/command": "^1.1.0",
57
- "@zhin.js/component": "^1.1.0",
58
- "@zhin.js/middleware": "^1.1.0",
59
- "zhin.js": "^1.1.0"
56
+ "@zhin.js/adapter-icqq": "^1.1.3",
57
+ "@zhin.js/command": "^1.1.2",
58
+ "@zhin.js/component": "^1.1.2",
59
+ "@zhin.js/middleware": "^1.1.2",
60
+ "zhin.js": "^1.1.3"
60
61
  },
61
62
  "peerDependenciesMeta": {
62
63
  "@zhin.js/adapter-icqq": {
@@ -106,6 +107,10 @@
106
107
  {
107
108
  "package": "@zhin.js/tool",
108
109
  "api": "^1.0.0"
110
+ },
111
+ {
112
+ "package": "@zhin.js/skill",
113
+ "api": "^1.0.0"
109
114
  }
110
115
  ],
111
116
  "plugins": []
package/plugin.js CHANGED
@@ -1,8 +1,10 @@
1
1
  // Generated by build-plugin-runtime-entries.mjs. Do not edit.
2
2
  import { definePlugin, databaseHostToken } from 'zhin.js';
3
- import { cleanExpired } from "./lib/session.js";
4
- import { cleanExpiredLogins } from "./lib/login/index.js";
5
- import { MUSIC_CREDENTIALS_TABLE, provideCredentialDb, } from "./lib/credential-store.js";
3
+ import { MusicSearchSessions } from "./lib/session.js";
4
+ import { QrLoginRuntime } from "./lib/login/index.js";
5
+ import { CredentialStore, createInMemoryCredentialDb, MUSIC_CREDENTIALS_TABLE, } from "./lib/credential-store.js";
6
+ import { createMusicServices } from "./lib/sources/index.js";
7
+ import { musicRuntimeToken } from "./lib/runtime.js";
6
8
  function defineCredentialTable(db) {
7
9
  db.define(MUSIC_CREDENTIALS_TABLE, {
8
10
  source: { type: 'text', nullable: false },
@@ -17,15 +19,27 @@ export default definePlugin({
17
19
  displayName: 'Music',
18
20
  },
19
21
  setup(context) {
20
- if (context.resources.has(databaseHostToken)) {
22
+ const db = context.resources.has(databaseHostToken) ? (() => {
21
23
  const host = context.resources.use(databaseHostToken);
22
24
  defineCredentialTable(host);
23
- provideCredentialDb(context, host);
24
- }
25
+ return host;
26
+ })() : createInMemoryCredentialDb();
27
+ const credentials = new CredentialStore(db);
28
+ const runtime = Object.freeze({
29
+ credentials,
30
+ services: Object.freeze(createMusicServices(credentials)),
31
+ sessions: new MusicSearchSessions(),
32
+ logins: new QrLoginRuntime(credentials),
33
+ });
34
+ context.resources.provide(musicRuntimeToken, runtime);
25
35
  const timer = setInterval(() => {
26
- cleanExpired();
27
- cleanExpiredLogins();
36
+ runtime.sessions.pruneExpired();
37
+ runtime.logins.pruneExpired();
28
38
  }, 60_000);
29
- return () => clearInterval(timer);
39
+ return () => {
40
+ clearInterval(timer);
41
+ runtime.sessions.dispose();
42
+ runtime.logins.dispose();
43
+ };
30
44
  },
31
45
  });
@@ -19,8 +19,8 @@ tags:
19
19
  - entertainment
20
20
  - media
21
21
  tools:
22
- - music_search
23
- - music_share
22
+ - music-search
23
+ - music-share
24
24
  ---
25
25
 
26
26
  # 音乐搜索分享技能
@@ -1,6 +1,7 @@
1
1
  // Generated by build-plugin-runtime-entries.mjs. Do not edit.
2
2
  import { defineAgentTool } from '@zhin.js/tool';
3
- import { searchMusic } from "../lib/music-lib.js";
3
+ import { searchMusic } from "../../../../lib/music-lib.js";
4
+ import { musicRuntimeToken } from "../../../../lib/runtime.js";
4
5
  export default defineAgentTool({
5
6
  description: '搜索音乐并返回结果列表(支持QQ/网易云/酷我/酷狗)',
6
7
  inputSchema: {
@@ -16,6 +17,6 @@ export default defineAgentTool({
16
17
  },
17
18
  required: ['keyword'],
18
19
  },
19
- approval: 'never',
20
- execute: ({ keyword, source, limit }) => searchMusic(String(keyword), source, typeof limit === 'number' ? limit : 5),
20
+ requiresApproval: 'never',
21
+ execute: ({ keyword, source, limit }, context) => searchMusic(context.use(musicRuntimeToken), String(keyword), source, typeof limit === 'number' ? limit : 5),
21
22
  });
@@ -1,6 +1,7 @@
1
1
  import { defineAgentTool } from '@zhin.js/tool';
2
- import { searchMusic } from '../src/music-lib.js';
3
- import type { MusicSource } from '../src/types.js';
2
+ import { searchMusic } from '../../../../src/music-lib.js';
3
+ import type { MusicSource } from '../../../../src/types.js';
4
+ import { musicRuntimeToken } from '../../../../src/runtime.js';
4
5
 
5
6
  export default defineAgentTool<{
6
7
  keyword: string;
@@ -21,7 +22,12 @@ export default defineAgentTool<{
21
22
  },
22
23
  required: ['keyword'],
23
24
  },
24
- approval: 'never',
25
- execute: ({ keyword, source, limit }) =>
26
- searchMusic(String(keyword), source, typeof limit === 'number' ? limit : 5),
25
+ requiresApproval: 'never',
26
+ execute: ({ keyword, source, limit }, context) =>
27
+ searchMusic(
28
+ context.use(musicRuntimeToken),
29
+ String(keyword),
30
+ source,
31
+ typeof limit === 'number' ? limit : 5,
32
+ ),
27
33
  });
@@ -1,6 +1,7 @@
1
1
  // Generated by build-plugin-runtime-entries.mjs. Do not edit.
2
2
  import { defineAgentTool } from '@zhin.js/tool';
3
- import { shareMusicDetail } from "../lib/music-lib.js";
3
+ import { shareMusicDetail } from "../../../../lib/music-lib.js";
4
+ import { musicRuntimeToken } from "../../../../lib/runtime.js";
4
5
  export default defineAgentTool({
5
6
  description: '分享指定的音乐(支持QQ/网易云/酷我/酷狗)',
6
7
  inputSchema: {
@@ -15,6 +16,6 @@ export default defineAgentTool({
15
16
  },
16
17
  required: ['id', 'source'],
17
18
  },
18
- approval: 'never',
19
- execute: ({ id, source }) => shareMusicDetail(String(id), source),
19
+ requiresApproval: 'never',
20
+ execute: ({ id, source }, context) => shareMusicDetail(context.use(musicRuntimeToken), String(id), source),
20
21
  });
@@ -1,6 +1,7 @@
1
1
  import { defineAgentTool } from '@zhin.js/tool';
2
- import { shareMusicDetail } from '../src/music-lib.js';
3
- import type { MusicSource } from '../src/types.js';
2
+ import { shareMusicDetail } from '../../../../src/music-lib.js';
3
+ import type { MusicSource } from '../../../../src/types.js';
4
+ import { musicRuntimeToken } from '../../../../src/runtime.js';
4
5
 
5
6
  export default defineAgentTool<{
6
7
  id: string;
@@ -19,6 +20,7 @@ export default defineAgentTool<{
19
20
  },
20
21
  required: ['id', 'source'],
21
22
  },
22
- approval: 'never',
23
- execute: ({ id, source }) => shareMusicDetail(String(id), source),
23
+ requiresApproval: 'never',
24
+ execute: ({ id, source }, context) =>
25
+ shareMusicDetail(context.use(musicRuntimeToken), String(id), source),
24
26
  });