@blade-hq/agent-react 2612.0.0-beta.6 → 2612.0.0-beta.8

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/README.md CHANGED
@@ -478,7 +478,7 @@ blade-chat::part(input-toolbar) { gap: 12px; }
478
478
 
479
479
  主题资产候选通过当前主题的资产列表获取,使用专用 `TopicAssetMention` 药丸;没有关联主题时不展示候选。首页与会话输入框复用候选查询、引用序列化和展示结构。
480
480
 
481
- `useReferenceCandidates(getScope, { kbs, topics, files })` 在富输入子入口提供固定三组候选的并发查询、短等待与迟到刷新;作用域为 client、鉴权身份、session、topic,菜单使用 query 返回数组绑定 observe,退出时 cancel。宿主继续提供原有数据适配,控制器不执行工具或改写发送协议。
481
+ `useReferenceCandidates(getScope, { plugins, topics, files })` 在富输入子入口提供固定三组候选的并发查询、短等待与迟到刷新;作用域为 client、鉴权身份、session、topic,菜单使用 query 返回数组绑定 observe,退出时 cancel。宿主继续提供原有数据适配,控制器不执行工具或改写发送协议。
482
482
 
483
483
  `queueTopicAssetReference(sessionId, { topic_id, path })`(`@blade-hq/agent-react/rich-input`)可在导航到当前用户的同主题会话前预填引用。发送只携带引用身份,元数据和权限由服务端重新判断;本轮续跑保留引用,下一条消息默认不继承。
484
484
 
@@ -12,7 +12,7 @@ type TextRow = {
12
12
  failed?: boolean;
13
13
  /** 本轮(含子智能体循环)真实检索到的引用证据,只有 assistant 文本行才有——
14
14
  * 跟 AssistantTurnBlock.tsx 的 turnToolCalls/citations 同一套算法,不然轻量
15
- * 模式下 kb_search 的 [n] 角标只能停在纯文本,点不开、也 hover 不出来源。 */
15
+ * 模式下 插件引用的 [n] 角标只能停在纯文本,点不开、也 hover 不出来源。 */
16
16
  citations?: Record<number, CitationEntry>;
17
17
  };
18
18
  type MemoryRefsRow = {
@@ -30,7 +30,7 @@ export type ChatViewClassNames = Partial<{
30
30
  skillStatusBarInner: string;
31
31
  }>;
32
32
  /** 输入框提交时的附加项(模型、推理档位、知识库等由富输入给出)。 */
33
- export interface ChatSendOptions extends Pick<ChatSendExtras, "thinkingOverride" | "reasoningLevel" | "kbIds" | "refs" | "topicAssetRefs" | "queueWhenRunning"> {
33
+ export interface ChatSendOptions extends Pick<ChatSendExtras, "thinkingOverride" | "reasoningLevel" | "refs" | "topicAssetRefs" | "queueWhenRunning"> {
34
34
  /** 附件实际上传到的会话(首页新建会话时由输入框给出)。 */
35
35
  targetSessionId?: string;
36
36
  /** 本条消息用的模型;null 表示沿用会话已保存的模型。 */
@@ -85,16 +85,13 @@ export { ENTRY_SCROLL_MARGIN_PX, calculateStickyAwareMargin, normalizeScrollEntr
85
85
  export { BashRenderer } from "./tool-renderers/BashRenderer";
86
86
  export { FileEditRenderer } from "./tool-renderers/FileEditRenderer";
87
87
  export { FileReadRenderer } from "./tool-renderers/FileReadRenderer";
88
- export { KbSearchRenderer } from "./tool-renderers/KbSearchRenderer";
89
88
  export { SearchRenderer } from "./tool-renderers/SearchRenderer";
90
89
  export { SubmitResultRenderer } from "./tool-renderers/SubmitResultRenderer";
91
- export { parseKbSearchResult, formatKbSearchLabel } from "./tool-renderers/kb-search-result";
92
- export type { KbSearchHit, KbSearchResult } from "./tool-renderers/kb-search-result";
93
90
  export { getRenderer } from "./tool-renderers/registry";
94
91
  export { getResultText, getResultImages, parseJsonValue, isPlainObject, getStringValue, getNumberValue, getBooleanValue, extractErrorMessage, getFileName, getCodeLanguage, formatBytes, CodePreview } from "./tool-renderers/shared";
95
92
  export { shouldFollowWritePreview, scrollWritePreviewToLatest } from "./tool-renderers/write-preview-scroll";
96
93
  export { skillDisplayName } from "./lib/skill-name";
97
- export { type ConnectorComputerSectionProps, type InputConnection, type InputDataState, type InputKnowledgeBase, type InputModelCatalog, type InputModelOption, type InputModelPreferences, type InputSessionSkill, type InputSkillStats, type RichInputServices, parseModelReasoningLevels, RichInputServicesProvider, useRichInputServices, } from "./runtime/input-services";
94
+ export { type ConnectorComputerSectionProps, type InputConnection, type InputDataState, type InputModelCatalog, type InputModelOption, type InputModelPreferences, type InputSessionSkill, type InputSkillStats, type RichInputServices, parseModelReasoningLevels, RichInputServicesProvider, useRichInputServices, } from "./runtime/input-services";
98
95
  export { backgroundTaskDismissals, useDismissedBackgroundTasks } from "./runtime/background-task-dismissals";
99
96
  export { visibleSkillIds, visibleSkills } from "./lib/skill-visibility";
100
97
  export { resetInputCaches } from "./runtime/input-cache-reset";
@@ -1,34 +1,13 @@
1
1
  import type { ToolCallInfo } from "@blade-hq/agent-client/internal";
2
- /** 一条可点击引用的原文,来自保存的插件快照或旧知识库结果。 */
2
+ /** 一条可点击引用的原文,来自保存的插件快照。 */
3
3
  export interface CitationEntry {
4
4
  n: number;
5
- kbName: string;
6
5
  title: string;
7
- path: string;
8
- page: number | null;
9
- heading: string | null;
10
6
  text: string;
11
7
  previewUrl: string | null;
12
8
  snapshot?: boolean;
13
9
  toolCallId?: string;
14
10
  itemId?: string;
15
11
  }
16
- /**
17
- * 从一轮里的工具调用抽取可引用证据。规则:
18
- * - 插件证据只读可信投影 evidence 字段,并核对具体调用;普通结果文本不产生证据。
19
- * - 旧知识库仅认成功完成的 kb_search 调用,清理由 #3311 完成。
20
- * - 汇总本轮全部 kb_search 调用的命中,不只看最后一次。后端(见
21
- * `knowledge_base.py build_search_tool_output` 的 `start_index`、
22
- * `EngineSkillMixin.allocate_kb_citation_range`)保证本轮内多次 kb_search
23
- * 调用的编号连续递增、不重叠、不归零,所以回答里的每个 `[n]` 在这一轮里
24
- * 本该全局唯一,直接汇总即可,不用再靠"只用最后一次"去猜模型引用的是哪次。
25
- * - 但前端不信任协议 100% 不出错:万一后端真出现同一个编号在不同调用间指向
26
- * 不同证据的异常情况,这里依然按"冲突就剔除"处理——发现冲突直接从返回的
27
- * map 里删掉这个编号,而不是用后来者覆盖前者,避免一旦协议出岔子就退回到
28
- * "看起来能点、点开却是错的文档"这个原始 bug。正常情况下这段防御代码不会
29
- * 被触发。
30
- *
31
- * 返回的 map 只包含真的有证据支撑、且没有歧义的编号——`[n]` 是否可点全靠这个
32
- * map 里有没有对应的 key,不额外维护一个"允许列表",避免两处状态不同步。
33
- */
12
+ /** Collect saved plugin sources; conflicting numbers remain unclickable. */
34
13
  export declare function buildCitationsFromToolCalls(toolCalls: ToolCallInfo[] | null | undefined): Record<number, CitationEntry>;
@@ -9,7 +9,6 @@ export interface ChatSendExtras {
9
9
  model?: string;
10
10
  thinkingOverride?: boolean;
11
11
  reasoningLevel?: string;
12
- kbIds?: number[];
13
12
  refs?: SendOptions["refs"];
14
13
  topicAssetRefs?: SendOptions["topicAssetRefs"];
15
14
  whatif?: SendOptions["whatif"];
@@ -38,11 +38,6 @@ export interface InputModelPreferences {
38
38
  }
39
39
  /** 偏好里存的是 JSON 字符串(模型 id → 档位);坏数据当作没有。 */
40
40
  export declare function parseModelReasoningLevels(value: string | null | undefined): Record<string, string>;
41
- export interface InputKnowledgeBase {
42
- id: number;
43
- name: string;
44
- description?: string | null;
45
- }
46
41
  export interface InputSessionSkill {
47
42
  skill_id: string;
48
43
  display_name?: string | null;
@@ -80,7 +75,6 @@ export interface RichInputServices {
80
75
  useModelCatalog?: () => InputModelCatalog;
81
76
  useModelPreferences?: () => InputModelPreferences;
82
77
  /** 知识库清单(`@` 菜单打开时才调用)。 */
83
- useKnowledgeBaseLoader?: () => () => Promise<InputKnowledgeBase[]>;
84
78
  /** 语音是否可用(部署可以关掉);默认不可用,不显示麦克风。 */
85
79
  voiceEnabled?: boolean;
86
80
  /** 语音的 AudioWorklet 脚本地址。 */