@zhin.js/core 1.3.1 → 1.3.2

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 (135) hide show
  1. package/README.md +59 -4
  2. package/lib/adapter.d.ts +19 -1
  3. package/lib/adapter.d.ts.map +1 -1
  4. package/lib/adapter.js +39 -5
  5. package/lib/adapter.js.map +1 -1
  6. package/lib/built/adapter-process.d.ts +11 -1
  7. package/lib/built/adapter-process.d.ts.map +1 -1
  8. package/lib/built/adapter-process.js +43 -1
  9. package/lib/built/adapter-process.js.map +1 -1
  10. package/lib/built/command.d.ts +2 -0
  11. package/lib/built/command.d.ts.map +1 -1
  12. package/lib/built/command.js +13 -1
  13. package/lib/built/command.js.map +1 -1
  14. package/lib/built/endpoint-commands.d.ts +4 -0
  15. package/lib/built/endpoint-commands.d.ts.map +1 -0
  16. package/lib/built/endpoint-commands.js +102 -0
  17. package/lib/built/endpoint-commands.js.map +1 -0
  18. package/lib/built/endpoint-lifecycle-service.d.ts +27 -0
  19. package/lib/built/endpoint-lifecycle-service.d.ts.map +1 -0
  20. package/lib/built/endpoint-lifecycle-service.js +219 -0
  21. package/lib/built/endpoint-lifecycle-service.js.map +1 -0
  22. package/lib/built/endpoint-manager.d.ts +35 -0
  23. package/lib/built/endpoint-manager.d.ts.map +1 -0
  24. package/lib/built/endpoint-manager.js +2 -0
  25. package/lib/built/endpoint-manager.js.map +1 -0
  26. package/lib/built/generated-qrcode.d.ts +25 -0
  27. package/lib/built/generated-qrcode.d.ts.map +1 -0
  28. package/lib/built/generated-qrcode.js +46 -0
  29. package/lib/built/generated-qrcode.js.map +1 -0
  30. package/lib/built/html-renderer-loader.d.ts +12 -0
  31. package/lib/built/html-renderer-loader.d.ts.map +1 -0
  32. package/lib/built/html-renderer-loader.js +29 -0
  33. package/lib/built/html-renderer-loader.js.map +1 -0
  34. package/lib/built/html-segment-fallback.d.ts +2 -1
  35. package/lib/built/html-segment-fallback.d.ts.map +1 -1
  36. package/lib/built/html-segment-fallback.js.map +1 -1
  37. package/lib/built/introspection-format.d.ts +11 -0
  38. package/lib/built/introspection-format.d.ts.map +1 -0
  39. package/lib/built/introspection-format.js +28 -0
  40. package/lib/built/introspection-format.js.map +1 -0
  41. package/lib/built/login-assist.d.ts +1 -1
  42. package/lib/built/login-assist.d.ts.map +1 -1
  43. package/lib/built/management-command-guard.d.ts +11 -0
  44. package/lib/built/management-command-guard.d.ts.map +1 -0
  45. package/lib/built/management-command-guard.js +21 -0
  46. package/lib/built/management-command-guard.js.map +1 -0
  47. package/lib/built/outbound-media-contract.d.ts +23 -0
  48. package/lib/built/outbound-media-contract.d.ts.map +1 -0
  49. package/lib/built/outbound-media-contract.js +11 -0
  50. package/lib/built/outbound-media-contract.js.map +1 -0
  51. package/lib/built/outbound-media-utils.d.ts +10 -0
  52. package/lib/built/outbound-media-utils.d.ts.map +1 -0
  53. package/lib/built/outbound-media-utils.js +63 -0
  54. package/lib/built/outbound-media-utils.js.map +1 -0
  55. package/lib/built/qrcode-segment.d.ts +19 -0
  56. package/lib/built/qrcode-segment.d.ts.map +1 -0
  57. package/lib/built/qrcode-segment.js +79 -0
  58. package/lib/built/qrcode-segment.js.map +1 -0
  59. package/lib/built/rich-segments/adapter-policies.d.ts +10 -0
  60. package/lib/built/rich-segments/adapter-policies.d.ts.map +1 -0
  61. package/lib/built/rich-segments/adapter-policies.js +28 -0
  62. package/lib/built/rich-segments/adapter-policies.js.map +1 -0
  63. package/lib/built/rich-segments/base.d.ts +12 -0
  64. package/lib/built/rich-segments/base.d.ts.map +1 -0
  65. package/lib/built/rich-segments/base.js +25 -0
  66. package/lib/built/rich-segments/base.js.map +1 -0
  67. package/lib/built/rich-segments/builtins.d.ts +5 -0
  68. package/lib/built/rich-segments/builtins.d.ts.map +1 -0
  69. package/lib/built/rich-segments/builtins.js +41 -0
  70. package/lib/built/rich-segments/builtins.js.map +1 -0
  71. package/lib/built/rich-segments/capabilities.d.ts +7 -0
  72. package/lib/built/rich-segments/capabilities.d.ts.map +1 -0
  73. package/lib/built/rich-segments/capabilities.js +40 -0
  74. package/lib/built/rich-segments/capabilities.js.map +1 -0
  75. package/lib/built/rich-segments/html-segment.d.ts +16 -0
  76. package/lib/built/rich-segments/html-segment.d.ts.map +1 -0
  77. package/lib/built/rich-segments/html-segment.js +66 -0
  78. package/lib/built/rich-segments/html-segment.js.map +1 -0
  79. package/lib/built/rich-segments/index.d.ts +14 -0
  80. package/lib/built/rich-segments/index.d.ts.map +1 -0
  81. package/lib/built/rich-segments/index.js +14 -0
  82. package/lib/built/rich-segments/index.js.map +1 -0
  83. package/lib/built/rich-segments/markdown-segment.d.ts +15 -0
  84. package/lib/built/rich-segments/markdown-segment.d.ts.map +1 -0
  85. package/lib/built/rich-segments/markdown-segment.js +62 -0
  86. package/lib/built/rich-segments/markdown-segment.js.map +1 -0
  87. package/lib/built/rich-segments/markdown-to-text.d.ts +4 -0
  88. package/lib/built/rich-segments/markdown-to-text.d.ts.map +1 -0
  89. package/lib/built/rich-segments/markdown-to-text.js +28 -0
  90. package/lib/built/rich-segments/markdown-to-text.js.map +1 -0
  91. package/lib/built/rich-segments/qrcode-segment.d.ts +19 -0
  92. package/lib/built/rich-segments/qrcode-segment.d.ts.map +1 -0
  93. package/lib/built/rich-segments/qrcode-segment.js +74 -0
  94. package/lib/built/rich-segments/qrcode-segment.js.map +1 -0
  95. package/lib/built/rich-segments/registry.d.ts +17 -0
  96. package/lib/built/rich-segments/registry.d.ts.map +1 -0
  97. package/lib/built/rich-segments/registry.js +53 -0
  98. package/lib/built/rich-segments/registry.js.map +1 -0
  99. package/lib/built/rich-segments/resolve.d.ts +6 -0
  100. package/lib/built/rich-segments/resolve.d.ts.map +1 -0
  101. package/lib/built/rich-segments/resolve.js +88 -0
  102. package/lib/built/rich-segments/resolve.js.map +1 -0
  103. package/lib/built/rich-segments/tts-segment.d.ts +14 -0
  104. package/lib/built/rich-segments/tts-segment.d.ts.map +1 -0
  105. package/lib/built/rich-segments/tts-segment.js +52 -0
  106. package/lib/built/rich-segments/tts-segment.js.map +1 -0
  107. package/lib/built/rich-segments/types.d.ts +85 -0
  108. package/lib/built/rich-segments/types.d.ts.map +1 -0
  109. package/lib/built/rich-segments/types.js +18 -0
  110. package/lib/built/rich-segments/types.js.map +1 -0
  111. package/lib/built/schema-endpoint-manager.d.ts +18 -0
  112. package/lib/built/schema-endpoint-manager.d.ts.map +1 -0
  113. package/lib/built/schema-endpoint-manager.js +74 -0
  114. package/lib/built/schema-endpoint-manager.js.map +1 -0
  115. package/lib/built/speech-loader.d.ts +13 -0
  116. package/lib/built/speech-loader.d.ts.map +1 -0
  117. package/lib/built/speech-loader.js +28 -0
  118. package/lib/built/speech-loader.js.map +1 -0
  119. package/lib/index.d.ts +14 -0
  120. package/lib/index.d.ts.map +1 -1
  121. package/lib/index.js +13 -0
  122. package/lib/index.js.map +1 -1
  123. package/lib/message.d.ts +8 -0
  124. package/lib/message.d.ts.map +1 -1
  125. package/lib/message.js.map +1 -1
  126. package/lib/plugin.d.ts.map +1 -1
  127. package/lib/plugin.js +3 -16
  128. package/lib/plugin.js.map +1 -1
  129. package/lib/prompt.js +1 -1
  130. package/lib/prompt.js.map +1 -1
  131. package/lib/utils.d.ts +21 -11
  132. package/lib/utils.d.ts.map +1 -1
  133. package/lib/utils.js +29 -2
  134. package/lib/utils.js.map +1 -1
  135. package/package.json +8 -6
package/README.md CHANGED
@@ -90,11 +90,56 @@ return segment.html({
90
90
  backgroundColor: '#d8dce3',
91
91
  fileName: 'card.png',
92
92
  })
93
+
94
+ // Markdown 段(QQ 等平台 policy 为 origin 时透传)
95
+ return segment.markdown('# Title\n\nBody')
96
+ ```
97
+
98
+ 出站富媒体段(`qrcode` / `html` / `markdown`)在 **`Adapter.renderSendMessage` 首步** 按各 Adapter 的 **`outboundRichSegmentPolicy`** 统一渲染为 `image` / `text` / `origin`:
99
+
100
+ | 渲染模式 | 含义 |
101
+ |---------|------|
102
+ | `image` | 转为 `image` 段(qrcode 生成 PNG;html/markdown 经 `@zhin.js/html-renderer` 动态转图,未安装则降级 text) |
103
+ | `text` | 剥离为纯文本段 |
104
+ | `origin` | 原样透传,由 Endpoint 解释(如 QQ markdown、process 终端二维码) |
105
+
106
+ 默认策略:`qrcode: image`,`html: text`,`markdown: text`。QQ / KOOK 等适配器 override static policy。
107
+
108
+ - 安装 **`@zhin.js/html-renderer`** 且 policy 为 `html: 'image'` 时,core 在首步动态 import 并转 PNG。
109
+ - policy 为 `html: 'text'` 时等价于 **`coerceHtmlSegmentsToText`** / **`htmlToFallbackText`**。
110
+ - 日志预览:`[html-card]`、`[qrcode]`、`[markdown]` + 摘要(前 80 字)。
111
+
112
+ #### 扩展新 Rich Segment(长期方案)
113
+
114
+ 内置 kind 通过 **`richSegmentRegistry`** 注册;optional 能力通过 **`registerRichSegmentCapabilityLoader`** 注入(与 `@zhin.js/html-renderer` 同模式)。
115
+
116
+ ```typescript
117
+ import {
118
+ RichSegment,
119
+ registerRichSegmentKind,
120
+ registerRichSegmentCapabilityLoader,
121
+ RICH_SEGMENT_MODE,
122
+ segment,
123
+ } from '@zhin.js/core';
124
+
125
+ // 1. 内置 capability:speech(@zhin.js/speech)已注册,tts kind 已内置
126
+ // 可选:注册 ffmpeg 等
127
+ registerRichSegmentCapabilityLoader('media-pipeline', async (opts) => {
128
+ const { createMediaPipeline } = await import('@zhin.js/media-pipeline');
129
+ return createMediaPipeline(opts.getConfig?.());
130
+ });
131
+
132
+ // 2. 使用内置 segment.tts(Adapter policy 决定 audio/text/origin)
133
+ // segment.tts({ text: '你好' })
134
+ class MyAdapter extends Adapter {
135
+ static override outboundRichSegmentPolicy = {
136
+ tts: 'audio',
137
+ qrcode: 'image', // 其余 kind 用 registry 默认值
138
+ };
139
+ }
93
140
  ```
94
141
 
95
- - 安装 **`@zhin.js/plugin-html-renderer`** 时,`before.sendMessage` 自动将 `html` 转为 PNG。
96
- - 未安装或转图失败时,`Adapter.renderSendMessage` 链尾调用 **`coerceHtmlSegmentsToText`**,用 **`htmlToFallbackText`** 剥离纯文本。
97
- - 日志预览为 `[html-card]` + 自动剥离摘要(前 80 字),不 dump 完整 HTML。
142
+ **分工**:Rich Segment 负责「语义段 标准 IM 段」;Endpoint `materializeOutboundMedia` 负责「已有 audio/video/file → 平台上传」。
98
143
 
99
144
  ### Adapter(适配器)
100
145
 
@@ -175,7 +220,17 @@ export { createMessageDispatcher } from './built/dispatcher.js'
175
220
  // 适配器与消息
176
221
  export { Adapter, Message, MessageCommand, Endpoint, segment, ... } from './'
177
222
 
178
- // HTML 出站回退
223
+ // 富媒体出站段
224
+ export {
225
+ resolveRichSegments,
226
+ DEFAULT_OUTBOUND_RICH_SEGMENT_POLICY,
227
+ QrcodeSegment,
228
+ HtmlSegment,
229
+ MarkdownSegment,
230
+ } from './built/rich-segments/index.js'
231
+ export type { RichSegmentKind, RichRenderMode, OutboundRichSegmentPolicy } from './built/rich-segments/types.js'
232
+
233
+ // HTML 出站回退(legacy;policy html:'text' 时等价)
179
234
  export { htmlToFallbackText, coerceHtmlSegmentsToText, registerHtmlSegmentFallback } from './built/*.js'
180
235
 
181
236
  // AI 原语(来自 @zhin.js/ai,非 ZhinAgent)
package/lib/adapter.d.ts CHANGED
@@ -1,11 +1,14 @@
1
1
  import { Endpoint } from "./endpoint.js";
2
2
  import { DEFAULT_ENDPOINT_CAPABILITIES, type EndpointCapability } from "./endpoint-capabilities.js";
3
+ import type { EndpointManager } from "./built/endpoint-manager.js";
3
4
  import { Plugin } from "./plugin.js";
4
5
  import { EventEmitter } from "node:events";
5
6
  import { Message } from "./message.js";
6
7
  import { Notice } from "./notice.js";
7
8
  import { Request } from "./request.js";
8
9
  import { SendOptions } from "./types.js";
10
+ import { type OutboundRichSegmentPolicy } from "./built/rich-segments/index.js";
11
+ import type { Schema } from '@zhin.js/schema';
9
12
  /**
10
13
  * Adapter类:适配器抽象,管理多平台Bot实例。
11
14
  * 负责根据配置启动/关闭各平台机器人,统一异常处理。
@@ -21,6 +24,8 @@ export declare abstract class Adapter<R extends Endpoint = Endpoint, const Caps
21
24
  private recallMessageHandler;
22
25
  /** Adapter 支持的能力上限(子类覆盖) */
23
26
  static readonly capabilities: readonly EndpointCapability[];
27
+ /** 出站富媒体段渲染策略(子类 override static) */
28
+ static outboundRichSegmentPolicy: OutboundRichSegmentPolicy;
24
29
  /** 并发上限,0 表示不限制(默认) */
25
30
  static DEFAULT_MAX_CONCURRENT_MESSAGES: number;
26
31
  get maxConcurrentMessages(): number;
@@ -42,6 +47,12 @@ export declare abstract class Adapter<R extends Endpoint = Endpoint, const Caps
42
47
  abstract createEndpoint(config: Adapter.EndpointConfig<R>): R;
43
48
  get logger(): import("@zhin.js/logger").Logger;
44
49
  binding(plugin: Plugin): void;
50
+ /** 运行时 Endpoint 管理(add/remove/edit/start/stop);未实现则 core 尝试 endpointConfigSchema 通用向导 */
51
+ getEndpointManager?(): EndpointManager | null;
52
+ /** 通用 schema 驱动 add/edit 时的字段定义 */
53
+ getEndpointConfigSchema?(): Schema | undefined;
54
+ /** 热连接失败时是否建议重启进程 */
55
+ getEndpointNeedsRestart?(): boolean;
45
56
  /**
46
57
  * 出站富媒体能力(Publisher 按此过滤/降级;各 adapter 可覆盖)。
47
58
  */
@@ -52,7 +63,14 @@ export declare abstract class Adapter<R extends Endpoint = Endpoint, const Caps
52
63
  file?: boolean;
53
64
  maxAttachmentBytes?: number;
54
65
  };
55
- private renderSendMessage;
66
+ protected getOutboundRichSegmentPolicy(): OutboundRichSegmentPolicy;
67
+ /**
68
+ * 出站两阶段:
69
+ * 1. resolveRichSegments — 语义段 → 标准 IM 段(image/audio/text)
70
+ * 2. Endpoint materializeOutboundMedia — base64/本地路径 → 平台 URL(各 adapter 可选)
71
+ * @see docs/essentials/rich-segment-adapters.md
72
+ */
73
+ protected renderSendMessage(options: SendOptions): Promise<SendOptions>;
56
74
  sendMessage(options: SendOptions): Promise<string>;
57
75
  start(): Promise<void>;
58
76
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAEL,6BAA6B,EAE7B,KAAK,kBAAkB,EACxB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAqB,WAAW,EAAE,MAAM,YAAY,CAAC;AAE5D,OAAO,EAGL,KAAK,yBAAyB,EAC/B,MAAM,gCAAgC,CAAC;AAMxC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C;;;;;GAKG;AACH,8BAAsB,OAAO,CAC3B,CAAC,SAAS,QAAQ,GAAG,QAAQ,EAC7B,KAAK,CAAC,IAAI,SAAS,SAAS,kBAAkB,EAAE,GAAG,OAAO,6BAA6B,CACvF,SAAQ,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC;;IAoC9B,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,MAAM,MAAM,CAAC,QAAQ;IAC3B,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;IArCrC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAwB;IACxD,OAAO,CAAC,oBAAoB,CAAoC;IAEhE,4BAA4B;IAC5B,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,SAAS,kBAAkB,EAAE,CAAiC;IAE5F,qCAAqC;IACrC,MAAM,CAAC,yBAAyB,EAAE,yBAAyB,CAAwC;IAInG,uBAAuB;IACvB,MAAM,CAAC,+BAA+B,SAAK;IAE3C,IAAI,qBAAqB,IAAI,MAAM,CAQlC;IAED,iBAAiB;IACjB,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED;;;;OAIG;gBAEM,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,MAAM,CAAC,QAAQ,EAC3B,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;IAoB5C,qCAAqC;IACrC,OAAO,CAAC,eAAe,CAA0B;IAEjD;;;OAGG;IACM,IAAI,EAAE,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CA+BR;IAC9C,QAAQ,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC;IAC7D,IAAI,MAAM,qCAGT;IACD,OAAO,CAAC,MAAM,EAAE,MAAM;IAItB,yFAAyF;IACzF,kBAAkB,CAAC,IAAI,eAAe,GAAG,IAAI;IAE7C,mCAAmC;IACnC,uBAAuB,CAAC,IAAI,MAAM,GAAG,SAAS;IAE9C,qBAAqB;IACrB,uBAAuB,CAAC,IAAI,OAAO;IAEnC;;OAEG;IACH,4BAA4B,IAAI;QAC9B,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,kBAAkB,CAAC,EAAE,MAAM,CAAC;KAC7B;IAUD,SAAS,CAAC,4BAA4B,IAAI,yBAAyB;IAInE;;;;;OAKG;cACa,iBAAiB,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAuCvE,WAAW,CAAC,OAAO,EAAC,WAAW,GAAE,OAAO,CAAC,MAAM,CAAC;IAqBhD,KAAK;IAqBX;;OAEG;IACG,IAAI;CAuCX;AACD,MAAM,WAAW,QAAQ;CAAG;AAC5B,yBAAiB,OAAO,CAAC;IACvB,KAAY,OAAO,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO,IAAI;QACjD,KACA,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,GAC1D,CAAC,CAAA;KACF,CAAC;IACF,UAAiB,SAAS;QACxB,iBAAiB,EAAE,CAAC,OAAO,CAAC,CAAC;QAC7B,yBAAyB,EAAE,CAAC,OAAO,CAAC,CAAC;QACrC,uBAAuB,EAAE,CAAC,OAAO,CAAC,CAAC;QACnC,yBAAyB,EAAE,CAAC,OAAO,CAAC,CAAC;QACrC,gBAAgB,EAAE,CAAC,MAAM,CAAC,CAAC;QAC3B,iBAAiB,EAAE,CAAC,OAAO,CAAC,CAAC;QAC7B,oBAAoB,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACxC;IACD;;;OAGG;IACI,MAAM,QAAQ,wEAA6B,CAAC;IACnD,KAAY,aAAa,CAAC,CAAC,SAAS,OAAO,GAAC,OAAO,IAAI,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,CAAC,GAC7E,CAAC,GACD,KAAK,CAAC;IACV,KAAY,cAAc,CAAC,CAAC,SAAS,QAAQ,IAAI,CAAC,SAAS,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACzF,KAAY,eAAe,CAAC,CAAC,SAAS,QAAQ,IAAI,CAAC,SAAS,QAAQ,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,CAAC,GACnF,CAAC,GACD,KAAK,CAAC;IACV;;;;;;;;;OASG;IACH,SAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,QAEtD;CACF"}
package/lib/adapter.js CHANGED
@@ -2,10 +2,12 @@ import { assertOutbound, DEFAULT_ENDPOINT_CAPABILITIES, hasInbound, } from "./en
2
2
  import { connectEndpointInstance, disconnectEndpointInstance } from "./built/connect-endpoint-instance.js";
3
3
  import { EventEmitter } from "node:events";
4
4
  import { getOutboundReplyStore } from "./built/dispatcher.js";
5
- import { coerceHtmlSegmentsToText } from "./built/html-segment-fallback.js";
5
+ import { DEFAULT_OUTBOUND_RICH_SEGMENT_POLICY, resolveRichSegments, } from "./built/rich-segments/index.js";
6
+ import { createRichSegmentRenderContext } from "./built/rich-segments/capabilities.js";
7
+ import { collectOutboundMediaKinds } from "./built/outbound-media-utils.js";
6
8
  import { segment } from "./utils.js";
7
9
  import { InboundMessagePipeline } from "./built/inbound-pipeline.js";
8
- import { formatCompact, truncatePreview } from '@zhin.js/logger';
10
+ import { formatCompact, truncatePreview, formatContentChainLog, CONTENT_CHAIN_STAGE } from '@zhin.js/logger';
9
11
  /**
10
12
  * Adapter类:适配器抽象,管理多平台Bot实例。
11
13
  * 负责根据配置启动/关闭各平台机器人,统一异常处理。
@@ -20,6 +22,8 @@ export class Adapter extends EventEmitter {
20
22
  recallMessageHandler;
21
23
  /** Adapter 支持的能力上限(子类覆盖) */
22
24
  static capabilities = DEFAULT_ENDPOINT_CAPABILITIES;
25
+ /** 出站富媒体段渲染策略(子类 override static) */
26
+ static outboundRichSegmentPolicy = DEFAULT_OUTBOUND_RICH_SEGMENT_POLICY;
23
27
  /** 入站消息并发计数 */
24
28
  #pendingMessages = 0;
25
29
  /** 并发上限,0 表示不限制(默认) */
@@ -112,16 +116,46 @@ export class Adapter extends EventEmitter {
112
116
  maxAttachmentBytes: 26_214_400,
113
117
  };
114
118
  }
119
+ getOutboundRichSegmentPolicy() {
120
+ return this.constructor.outboundRichSegmentPolicy;
121
+ }
122
+ /**
123
+ * 出站两阶段:
124
+ * 1. resolveRichSegments — 语义段 → 标准 IM 段(image/audio/text)
125
+ * 2. Endpoint materializeOutboundMedia — base64/本地路径 → 平台 URL(各 adapter 可选)
126
+ * @see docs/essentials/rich-segment-adapters.md
127
+ */
115
128
  async renderSendMessage(options) {
129
+ if (options.content != null) {
130
+ options = {
131
+ ...options,
132
+ content: await resolveRichSegments(options.content, this.getOutboundRichSegmentPolicy(), createRichSegmentRenderContext({
133
+ getConfig: () => {
134
+ const cfg = this.plugin.root.inject('config')?.getPrimary();
135
+ return cfg;
136
+ },
137
+ warn: (msg) => this.logger.warn(msg),
138
+ logContentChain: (fields) => {
139
+ this.logger.debug(formatContentChainLog({ ...fields, adapter: this.name }));
140
+ },
141
+ })),
142
+ };
143
+ const mediaKinds = collectOutboundMediaKinds(options.content);
144
+ if (mediaKinds.length > 0) {
145
+ this.logger.debug(formatContentChainLog({
146
+ stage: CONTENT_CHAIN_STAGE.OUTBOUND,
147
+ adapter: this.name,
148
+ endpoint: options.endpoint,
149
+ media: mediaKinds.join(','),
150
+ }));
151
+ }
152
+ }
116
153
  const fns = this.plugin.root.listeners('before.sendMessage');
117
154
  for (const fn of fns) {
118
155
  const result = await fn(options);
119
156
  if (result)
120
157
  options = result;
121
158
  }
122
- if (options.content != null) {
123
- options = { ...options, content: coerceHtmlSegmentsToText(options.content) };
124
- }
125
159
  return options;
126
160
  }
127
161
  async sendMessage(options) {
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,9 @@
1
- import { Adapter, Plugin, Endpoint, SendOptions, Message } from "@zhin.js/core";
1
+ import { Adapter } from "../adapter.js";
2
+ import { Plugin } from "../plugin.js";
3
+ import { Endpoint } from "../endpoint.js";
4
+ import { Message } from "../message.js";
5
+ import type { SendOptions } from "../types.js";
6
+ import type { OutboundRichSegmentPolicy } from "./rich-segments/types.js";
2
7
  export declare class ProcessEndpoint implements Endpoint<{
3
8
  owner?: string;
4
9
  }, {
@@ -33,7 +38,12 @@ export declare class ProcessEndpoint implements Endpoint<{
33
38
  }
34
39
  export declare class ProcessAdapter extends Adapter<ProcessEndpoint> {
35
40
  static readonly capabilities: readonly ["inbound", "outbound"];
41
+ static outboundRichSegmentPolicy: OutboundRichSegmentPolicy;
36
42
  constructor(plugin: Plugin);
43
+ /**
44
+ * process 出站由 $sendMessage 写入 stdout;父类 INFO preview 会与终端输出重复,故仅 debug 元数据。
45
+ */
46
+ sendMessage(options: SendOptions): Promise<string>;
37
47
  createEndpoint(config: Adapter.EndpointConfig<ProcessEndpoint>): ProcessEndpoint;
38
48
  }
39
49
  declare module '../adapter.js' {
@@ -1 +1 @@
1
- {"version":3,"file":"adapter-process.d.ts","sourceRoot":"","sources":["../../src/built/adapter-process.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAe,WAAW,EAAe,OAAO,EAAW,MAAM,eAAe,CAAC;AAGnH,qBAAa,eAAgB,YAAW,QAAQ,CAAC;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAAC;IAAC,OAAO,EAAC,MAAM,CAAC;IAAA,EAAE,EAAC,MAAM,CAAA;CAAC,CAAC;;IAOxE,OAAO,EAAE,cAAc;IAAS,OAAO,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IAN9E,GAAG,SAAgB;IACnB,IAAI,MAAM,qCAET;IACD,UAAU,UAAO;gBAEE,OAAO,EAAE,cAAc,EAAS,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAA0B;IAGtG,YAAY,CAAC,KAAK,EAAE,MAAM;IAMpB,OAAO;IAEP,UAAU;IAEhB,cAAc,CAAC,KAAK,EAAE;QAAC,OAAO,EAAC,MAAM,CAAC;QAAA,EAAE,EAAC,MAAM,CAAA;KAAC,GAAG,OAAO,CAAC;QAAC,OAAO,EAAC,MAAM,CAAC;QAAA,EAAE,EAAC,MAAM,CAAA;KAAC,CAAC;IAgChF,cAAc,CAAC,EAAE,EAAE,MAAM;IAEzB,YAAY,CAAC,OAAO,EAAE,WAAW;IAGjC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAIzB,WAAW;CAIpB;AACD,qBAAa,cAAe,SAAQ,OAAO,CAAC,eAAe,CAAC;IACxD,gBAAyB,YAAY,mCAAoC;gBAE7D,MAAM,EAAE,MAAM;IAI1B,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,eAAe,CAAC,GAAG,eAAe;CAGnF;AACD,OAAO,QAAQ,eAAe,CAAA;IAC1B,UAAU,QAAQ;QACd,OAAO,EAAC,cAAc,CAAA;KACzB;CACJ"}
1
+ {"version":3,"file":"adapter-process.d.ts","sourceRoot":"","sources":["../../src/built/adapter-process.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAoB,MAAM,eAAe,CAAC;AAC1D,OAAO,KAAK,EAAe,WAAW,EAAE,MAAM,aAAa,CAAC;AAM5D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAE1E,qBAAa,eAAgB,YAAW,QAAQ,CAAC;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAAC;IAAC,OAAO,EAAC,MAAM,CAAC;IAAA,EAAE,EAAC,MAAM,CAAA;CAAC,CAAC;;IAOxE,OAAO,EAAE,cAAc;IAAS,OAAO,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IAN9E,GAAG,SAAgB;IACnB,IAAI,MAAM,qCAET;IACD,UAAU,UAAO;gBAEE,OAAO,EAAE,cAAc,EAAS,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAA0B;IAGtG,YAAY,CAAC,KAAK,EAAE,MAAM;IAMpB,OAAO;IAEP,UAAU;IAEhB,cAAc,CAAC,KAAK,EAAE;QAAC,OAAO,EAAC,MAAM,CAAC;QAAA,EAAE,EAAC,MAAM,CAAA;KAAC,GAAG,OAAO,CAAC;QAAC,OAAO,EAAC,MAAM,CAAC;QAAA,EAAE,EAAC,MAAM,CAAA;KAAC,CAAC;IAgChF,cAAc,CAAC,EAAE,EAAE,MAAM;IAEzB,YAAY,CAAC,OAAO,EAAE,WAAW;IAUjC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAIzB,WAAW;CAIpB;AACD,qBAAa,cAAe,SAAQ,OAAO,CAAC,eAAe,CAAC;IACxD,gBAAyB,YAAY,mCAAoC;IACzE,OAAgB,yBAAyB,EAAE,yBAAyB,CAIlE;gBAEU,MAAM,EAAE,MAAM;IAI1B;;OAEG;IACY,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IAqBjE,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,eAAe,CAAC,GAAG,eAAe;CAGnF;AACD,OAAO,QAAQ,eAAe,CAAA;IAC1B,UAAU,QAAQ;QACd,OAAO,EAAC,cAAc,CAAA;KACzB;CACJ"}
@@ -1,5 +1,11 @@
1
- import { Adapter, Message } from "@zhin.js/core";
1
+ import { formatCompact } from "@zhin.js/logger";
2
+ import { Adapter } from "../adapter.js";
3
+ import { Message } from "../message.js";
4
+ import { segment } from "../utils.js";
5
+ import { assertOutbound } from "../endpoint-capabilities.js";
6
+ import { getOutboundReplyStore } from "./dispatcher.js";
2
7
  import { bindStdin, runtimePid, runtimeUser } from "./runtime-io.js";
8
+ import { interpretOriginQrcodeForProcess } from "./rich-segments/qrcode-segment.js";
3
9
  export class ProcessEndpoint {
4
10
  adapter;
5
11
  $config;
@@ -59,6 +65,13 @@ export class ProcessEndpoint {
59
65
  async $recallMessage(id) {
60
66
  }
61
67
  async $sendMessage(options) {
68
+ const content = await interpretOriginQrcodeForProcess(options.content ?? '');
69
+ if (content != null) {
70
+ const preview = segment.raw(content);
71
+ if (preview) {
72
+ process.stdout.write(`${preview}\n`);
73
+ }
74
+ }
62
75
  return `${Date.now()}`;
63
76
  }
64
77
  async $connect() {
@@ -72,9 +85,38 @@ export class ProcessEndpoint {
72
85
  }
73
86
  export class ProcessAdapter extends Adapter {
74
87
  static capabilities = ['inbound', 'outbound'];
88
+ static outboundRichSegmentPolicy = {
89
+ qrcode: 'origin',
90
+ html: 'text',
91
+ markdown: 'text',
92
+ };
75
93
  constructor(plugin) {
76
94
  super(plugin, 'process', [{ owner: runtimePid() }]);
77
95
  }
96
+ /**
97
+ * process 出站由 $sendMessage 写入 stdout;父类 INFO preview 会与终端输出重复,故仅 debug 元数据。
98
+ */
99
+ async sendMessage(options) {
100
+ options = await this.renderSendMessage(options);
101
+ const endpoint = this.endpoints.get(options.endpoint);
102
+ if (!endpoint)
103
+ throw new Error(`Endpoint ${options.endpoint} not found`);
104
+ assertOutbound(endpoint);
105
+ this.logger.debug(formatCompact({
106
+ send: `${options.type}(${options.id})`,
107
+ endpoint: options.endpoint,
108
+ }));
109
+ const messageId = await endpoint.$sendMessage(options);
110
+ const replyStore = getOutboundReplyStore();
111
+ this.plugin.root.dispatch('message.send', {
112
+ adapter: this.name,
113
+ options,
114
+ messageId,
115
+ replySource: replyStore?.source,
116
+ replyMessage: replyStore?.message,
117
+ });
118
+ return messageId;
119
+ }
78
120
  createEndpoint(config) {
79
121
  return new ProcessEndpoint(this, config);
80
122
  }
@@ -1 +1 @@
1
- {"version":3,"file":"adapter-process.js","sourceRoot":"","sources":["../../src/built/adapter-process.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adapter-process.js","sourceRoot":"","sources":["../../src/built/adapter-process.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,8 @@
5
5
  import { Feature, FeatureJSON } from "@zhin.js/kernel";
6
6
  /** 命令 pattern 的首个词(用于前缀排序) */
7
7
  export declare function commandLeadingToken(pattern: string): string;
8
+ /** 命令匹配优先级:首词越长越优先;同首词则完整 pattern 越长越优先 */
9
+ export declare function compareCommandPatterns(a: string, b: string): number;
8
10
  import { MessageCommand } from "../command.js";
9
11
  import { Message } from "../message.js";
10
12
  import { Plugin } from "../plugin.js";
@@ -1 +1 @@
1
- {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/built/command.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEvD,8BAA8B;AAC9B,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE3D;AACD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,MAAM,EAAa,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAErE;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,WAAW;IACX,UAAU,CAAC,CAAC,SAAS,iBAAiB,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC;CACjF;AAGD,OAAO,QAAQ,cAAc,CAAC;IAC5B,UAAU,MAAM,CAAC;QACf,UAAU,UAAW,SAAQ,wBAAwB;SAAG;QACxD,UAAU,QAAQ;YAChB,OAAO,EAAE,cAAc,CAAC;SACzB;KACF;CACF;AAED;;GAEG;AACH,qBAAa,cAAe,SAAQ,OAAO,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;IAC5E,QAAQ,CAAC,IAAI,EAAG,SAAS,CAAU;IACnC,QAAQ,CAAC,IAAI,cAAc;IAC3B,QAAQ,CAAC,IAAI,kBAAQ;IAErB,mBAAmB;IACnB,QAAQ,CAAC,MAAM,yCAAwD;IAEvE;;OAEG;IACH,GAAG,CAAC,OAAO,EAAE,cAAc,CAAC,iBAAiB,CAAC,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,IAAI;IAK/E;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,cAAc,CAAC,iBAAiB,CAAC,GAAG,OAAO;IAK3D;;OAEG;IACH,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CAAC,iBAAiB,CAAC,GAAG,SAAS;IAInE;;OAEG;IACG,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAW/F;;OAEG;IACH,OAAO,IAAI,IAAI;IAIf;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,WAAW;IAgBxC;;OAEG;IACH,IAAI,UAAU;mBAGC,CAAC,SAAS,iBAAiB,WAAW,cAAc,CAAC,CAAC,CAAC,SAlEK,IAAI;MA0E9E;CACF"}
1
+ {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/built/command.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEvD,8BAA8B;AAC9B,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,2CAA2C;AAC3C,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CASnE;AACD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,MAAM,EAAa,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAErE;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,WAAW;IACX,UAAU,CAAC,CAAC,SAAS,iBAAiB,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC;CACjF;AAGD,OAAO,QAAQ,cAAc,CAAC;IAC5B,UAAU,MAAM,CAAC;QACf,UAAU,UAAW,SAAQ,wBAAwB;SAAG;QACxD,UAAU,QAAQ;YAChB,OAAO,EAAE,cAAc,CAAC;SACzB;KACF;CACF;AAED;;GAEG;AACH,qBAAa,cAAe,SAAQ,OAAO,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;IAC5E,QAAQ,CAAC,IAAI,EAAG,SAAS,CAAU;IACnC,QAAQ,CAAC,IAAI,cAAc;IAC3B,QAAQ,CAAC,IAAI,kBAAQ;IAErB,mBAAmB;IACnB,QAAQ,CAAC,MAAM,yCAAwD;IAEvE;;OAEG;IACH,GAAG,CAAC,OAAO,EAAE,cAAc,CAAC,iBAAiB,CAAC,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,IAAI;IAK/E;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,cAAc,CAAC,iBAAiB,CAAC,GAAG,OAAO;IAK3D;;OAEG;IACH,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CAAC,iBAAiB,CAAC,GAAG,SAAS;IAInE;;OAEG;IACG,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAW/F;;OAEG;IACH,OAAO,IAAI,IAAI;IAIf;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,WAAW;IAgBxC;;OAEG;IACH,IAAI,UAAU;mBAGC,CAAC,SAAS,iBAAiB,WAAW,cAAc,CAAC,CAAC,CAAC,SAlEK,IAAI;MA0E9E;CACF"}
@@ -7,6 +7,18 @@ import { Feature } from "@zhin.js/kernel";
7
7
  export function commandLeadingToken(pattern) {
8
8
  return pattern.split(/\s/)[0] ?? "";
9
9
  }
10
+ /** 命令匹配优先级:首词越长越优先;同首词则完整 pattern 越长越优先 */
11
+ export function compareCommandPatterns(a, b) {
12
+ const leadDiff = commandLeadingToken(b).length - commandLeadingToken(a).length;
13
+ if (leadDiff !== 0)
14
+ return leadDiff;
15
+ const lenDiff = b.length - a.length;
16
+ if (lenDiff !== 0)
17
+ return lenDiff;
18
+ const tokA = a.trim().split(/\s+/).length;
19
+ const tokB = b.trim().split(/\s+/).length;
20
+ return tokB - tokA;
21
+ }
10
22
  import { getPlugin } from "../plugin.js";
11
23
  /**
12
24
  * 命令服务 Feature
@@ -41,7 +53,7 @@ export class CommandFeature extends Feature {
41
53
  * 处理消息,依次尝试匹配命令(较长前缀优先,避免 `teach` 抢 `teach-list`)
42
54
  */
43
55
  async handle(message, plugin) {
44
- const commands = [...this.items].sort((a, b) => commandLeadingToken(b.pattern).length - commandLeadingToken(a.pattern).length);
56
+ const commands = [...this.items].sort((a, b) => compareCommandPatterns(a.pattern, b.pattern));
45
57
  for (const command of commands) {
46
58
  const result = await command.handle(message, plugin);
47
59
  if (result)
@@ -1 +1 @@
1
- {"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/built/command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/built/command.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,OAAO,EAAe,MAAM,iBAAiB,CAAC;AAEvD,8BAA8B;AAC9B,MAAM,UAAU,mBAAmB,CAAC,OAAe;IACjD,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACtC,CAAC;AAED,2CAA2C;AAC3C,MAAM,UAAU,sBAAsB,CAAC,CAAS,EAAE,CAAS;IACzD,MAAM,QAAQ,GACZ,mBAAmB,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAChE,IAAI,QAAQ,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC;IACpC,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,IAAI,OAAO,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC;IAClC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;IAC1C,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;IAC1C,OAAO,IAAI,GAAG,IAAI,CAAC;AACrB,CAAC;AAGD,OAAO,EAAU,SAAS,EAAE,MAAM,cAAc,CAAC;AAqBjD;;GAEG;AACH,MAAM,OAAO,cAAe,SAAQ,OAA0C;IACnE,IAAI,GAAG,SAAkB,CAAC;IAC1B,IAAI,GAAG,UAAU,CAAC;IAClB,IAAI,GAAG,IAAI,CAAC;IAErB,mBAAmB;IACV,MAAM,GAAG,IAAI,GAAG,EAA6C,CAAC;IAEvE;;OAEG;IACH,GAAG,CAAC,OAA0C,EAAE,UAAkB;QAChE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC1C,OAAO,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,OAA0C;QAC/C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACpC,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,OAAe;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,OAAmD,EAAE,MAAc;QAC9E,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAC7C,sBAAsB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAC7C,CAAC;QACF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACrD,IAAI,MAAM;gBAAE,OAAO,MAAM,CAAC;QAC5B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,OAAO;QACL,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,UAAmB;QACxB,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;QACpE,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,MAAM;YAClB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACpB,IAAI,EAAE,CAAC,CAAC,OAAO;gBACf,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,IAAI;gBACtB,KAAK,EAAE,CAAC,CAAC,QAAQ,EAAE,KAAK;gBACxB,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,QAAQ;aAC/B,CAAC,CAAC;SACJ,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,IAAI,UAAU;QACZ,MAAM,OAAO,GAAG,IAAI,CAAC;QACrB,OAAO;YACL,UAAU,CAA8B,OAA0B;gBAChE,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;gBAC3B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,OAA4C,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;gBACvF,MAAM,CAAC,yBAAyB,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;gBAChE,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;gBAC1B,OAAO,OAAO,CAAC;YACjB,CAAC;SACF,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,4 @@
1
+ import type { CommandFeature } from './command.js';
2
+ import type { Plugin } from '../plugin.js';
3
+ export declare function registerEndpointManagementCommands(plugin: Plugin, commandService: CommandFeature): () => void;
4
+ //# sourceMappingURL=endpoint-commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoint-commands.d.ts","sourceRoot":"","sources":["../../src/built/endpoint-commands.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAqB3C,wBAAgB,kCAAkC,CAChD,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,cAAc,GAC7B,MAAM,IAAI,CA0FZ"}
@@ -0,0 +1,102 @@
1
+ /**
2
+ * IM Endpoint 管理与 /endpoints 内省命令(@zhin.js/core)
3
+ */
4
+ import { Adapter } from '../adapter.js';
5
+ import { MessageCommand } from '../command.js';
6
+ import { rejectUnlessManagementOperator } from './management-command-guard.js';
7
+ import { createEndpointLifecycleService } from './endpoint-lifecycle-service.js';
8
+ import { endpointHelpText, formatEndpointsList } from './introspection-format.js';
9
+ function collectRuntimeEndpoints(root) {
10
+ const rows = [];
11
+ for (const adapterName of root.adapters) {
12
+ const adapter = root.inject(adapterName);
13
+ if (!(adapter instanceof Adapter))
14
+ continue;
15
+ for (const [endpointId, endpoint] of adapter.endpoints.entries()) {
16
+ rows.push({
17
+ adapter: String(adapterName),
18
+ name: endpointId,
19
+ online: !!endpoint.$connected,
20
+ });
21
+ }
22
+ }
23
+ return rows;
24
+ }
25
+ export function registerEndpointManagementCommands(plugin, commandService) {
26
+ const root = plugin.root;
27
+ const disposers = [];
28
+ const service = () => createEndpointLifecycleService(root);
29
+ const guard = (message) => {
30
+ const ai = root.inject('ai');
31
+ return rejectUnlessManagementOperator(message, root, ai?.getTriggerConfig?.());
32
+ };
33
+ const register = (pattern, desc, handler) => {
34
+ const cmd = new MessageCommand(pattern)
35
+ .desc(desc)
36
+ .action(async (message, match) => {
37
+ const denied = guard(message);
38
+ if (denied)
39
+ return denied;
40
+ try {
41
+ return await handler(message, match);
42
+ }
43
+ catch (err) {
44
+ return `❌ ${err instanceof Error ? err.message : String(err)}`;
45
+ }
46
+ });
47
+ commandService.add(cmd, plugin.name);
48
+ disposers.push(() => commandService.remove(cmd));
49
+ };
50
+ register('/endpoint help', 'Endpoint 管理帮助', () => endpointHelpText());
51
+ register('/endpoint add [adapter:word]', '添加 Endpoint', async (message, match) => {
52
+ const adapterKey = typeof match?.params?.adapter === 'string' ? match.params.adapter.trim() : '';
53
+ if (!adapterKey) {
54
+ const list = service().listProvisionableAdapters();
55
+ if (list.length === 0) {
56
+ return '当前没有支持运行时添加的适配器(需 EndpointManager 或 endpointConfigSchema)。';
57
+ }
58
+ return [
59
+ '可用适配器:',
60
+ ...list.map((a) => ` • ${a} — /endpoint add ${a}`),
61
+ ].join('\n');
62
+ }
63
+ const result = await service().add(adapterKey, message);
64
+ return result.message;
65
+ });
66
+ register('/endpoint remove <adapter:word> <name:word>', '从配置移除 Endpoint', async (_message, match) => {
67
+ const adapterKey = String(match?.params?.adapter ?? '');
68
+ const name = String(match?.params?.name ?? '');
69
+ const result = await service().remove(adapterKey, name);
70
+ return result.message;
71
+ });
72
+ register('/endpoint edit <adapter:word> <name:word>', '编辑 Endpoint 配置', async (message, match) => {
73
+ const adapterKey = String(match?.params?.adapter ?? '');
74
+ const name = String(match?.params?.name ?? '');
75
+ const result = await service().edit(adapterKey, name, message);
76
+ return result.message;
77
+ });
78
+ register('/endpoint start <adapter:word> <name:word>', '连接 Endpoint', async (message, match) => {
79
+ const adapterKey = String(match?.params?.adapter ?? '');
80
+ const name = String(match?.params?.name ?? '');
81
+ const result = await service().start(adapterKey, name, message);
82
+ return result.message;
83
+ });
84
+ register('/endpoint stop <adapter:word> <name:word>', '断开 Endpoint(保留配置)', async (_message, match) => {
85
+ const adapterKey = String(match?.params?.adapter ?? '');
86
+ const name = String(match?.params?.name ?? '');
87
+ const result = await service().stop(adapterKey, name);
88
+ return result.message;
89
+ });
90
+ register('/endpoint cancel', '取消进行中的 Endpoint 添加/绑定', () => {
91
+ if (!service().cancelProvision()) {
92
+ return '当前没有进行中的 Endpoint 绑定流程。';
93
+ }
94
+ return '已取消 Endpoint 绑定流程。';
95
+ });
96
+ register('/endpoints', '列出各适配器下的 Endpoint 及在线状态', () => formatEndpointsList(collectRuntimeEndpoints(root)));
97
+ return () => {
98
+ for (const d of disposers)
99
+ d();
100
+ };
101
+ }
102
+ //# sourceMappingURL=endpoint-commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoint-commands.js","sourceRoot":"","sources":["../../src/built/endpoint-commands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { Adapter } from '../adapter.js';
2
+ import type { Endpoint } from '../endpoint.js';
3
+ import type { Message } from '../message.js';
4
+ import type { Plugin } from '../plugin.js';
5
+ import type { EndpointConfigRecord, EndpointManager } from './endpoint-manager.js';
6
+ export interface EndpointLifecycleResult {
7
+ message: string;
8
+ config?: EndpointConfigRecord;
9
+ }
10
+ export declare class EndpointLifecycleService {
11
+ private readonly root;
12
+ constructor(root: Plugin);
13
+ resolveAdapter(adapterKey: string): Adapter;
14
+ resolveManager(adapterKey: string): EndpointManager;
15
+ listProvisionableAdapters(): string[];
16
+ persistEndpoints(endpoints: EndpointConfigRecord[]): Promise<void>;
17
+ connectConfig(adapter: Adapter, config: EndpointConfigRecord): Promise<Endpoint>;
18
+ disconnectRuntime(adapter: Adapter, name: string): Promise<boolean>;
19
+ add(adapterKey: string, message: Message, initialReply?: string): Promise<EndpointLifecycleResult>;
20
+ edit(adapterKey: string, name: string, message: Message): Promise<EndpointLifecycleResult>;
21
+ remove(adapterKey: string, name: string): Promise<EndpointLifecycleResult>;
22
+ start(adapterKey: string, name: string, message: Message): Promise<EndpointLifecycleResult>;
23
+ stop(adapterKey: string, name: string): Promise<EndpointLifecycleResult>;
24
+ cancelProvision(): boolean;
25
+ }
26
+ export declare function createEndpointLifecycleService(root: Plugin): EndpointLifecycleService;
27
+ //# sourceMappingURL=endpoint-lifecycle-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoint-lifecycle-service.d.ts","sourceRoot":"","sources":["../../src/built/endpoint-lifecycle-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAI3C,OAAO,KAAK,EACV,oBAAoB,EACpB,eAAe,EAEhB,MAAM,uBAAuB,CAAC;AAG/B,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,oBAAoB,CAAC;CAC/B;AAkDD,qBAAa,wBAAwB;IACvB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,MAAM;IAEzC,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAQ3C,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe;IAWnD,yBAAyB,IAAI,MAAM,EAAE;IAW/B,gBAAgB,CAAC,SAAS,EAAE,oBAAoB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAOlE,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAchF,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAUnE,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAqClG,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAmC1F,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAqB1E,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAmB3F,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAW9E,eAAe,IAAI,OAAO;CAS3B;AAED,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,MAAM,GAAG,wBAAwB,CAErF"}