@blade-hq/agent-react 2612.0.0-beta.76 → 2612.0.0-beta.78

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 (62) hide show
  1. package/README.md +15 -1
  2. package/dist/SessionPluginConfigForm-7LJ5SUNY.js +9 -0
  3. package/dist/SessionPluginConfigForm-7LJ5SUNY.js.map +1 -0
  4. package/dist/chat/LiteMessageList.d.ts +4 -0
  5. package/dist/chat/TurnNavRail.d.ts +1 -4
  6. package/dist/chat/index.d.ts +2 -1
  7. package/dist/chat/turn-locate-channel.d.ts +53 -0
  8. package/dist/{chunk-XP6T6SHZ.js → chunk-66JXSDLB.js} +1186 -1038
  9. package/dist/chunk-66JXSDLB.js.map +1 -0
  10. package/dist/{chunk-XJ6ZA6LN.js → chunk-C3LBNHVM.js} +12 -10
  11. package/dist/{chunk-XJ6ZA6LN.js.map → chunk-C3LBNHVM.js.map} +1 -1
  12. package/dist/chunk-F4MWGSKX.js +1308 -0
  13. package/dist/chunk-F4MWGSKX.js.map +1 -0
  14. package/dist/{chunk-7MCGQH34.js → chunk-FBGCDXRK.js} +116 -114
  15. package/dist/chunk-FBGCDXRK.js.map +1 -0
  16. package/dist/{chunk-HCW7SI5Q.js → chunk-FDB3J5QF.js} +8 -6
  17. package/dist/{chunk-HCW7SI5Q.js.map → chunk-FDB3J5QF.js.map} +1 -1
  18. package/dist/{chunk-J72ZLILV.js → chunk-FH5HA3GW.js} +554 -455
  19. package/dist/chunk-FH5HA3GW.js.map +1 -0
  20. package/dist/chunk-KHJEIHMJ.js +973 -0
  21. package/dist/chunk-KHJEIHMJ.js.map +1 -0
  22. package/dist/{chunk-QIR73CES.js → chunk-MWILWSPG.js} +7396 -5684
  23. package/dist/chunk-MWILWSPG.js.map +1 -0
  24. package/dist/{chunk-WRIMPZPN.js → chunk-NRYLAO3X.js} +102 -155
  25. package/dist/chunk-NRYLAO3X.js.map +1 -0
  26. package/dist/{chunk-2DPLLZOU.js → chunk-SK43YNRX.js} +151 -1442
  27. package/dist/chunk-SK43YNRX.js.map +1 -0
  28. package/dist/components/AccountConnectorRules.d.ts +7 -0
  29. package/dist/components/BrowserConnectionDialog.d.ts +3 -2
  30. package/dist/components/ConfigConnection.d.ts +16 -0
  31. package/dist/components/ConnectorDetail.d.ts +46 -0
  32. package/dist/components/ConnectorRulesPanel.d.ts +10 -0
  33. package/dist/components/ConnectorRuntimeDiagnostics.d.ts +2 -2
  34. package/dist/components/DeviceConnection.d.ts +3 -1
  35. package/dist/components/FeishuPermissionStatus.d.ts +3 -1
  36. package/dist/components/ManagedConnection.d.ts +5 -2
  37. package/dist/components/PackEventNotice.d.ts +3 -0
  38. package/dist/components/SessionPluginConfigForm.d.ts +2 -1
  39. package/dist/connectors.d.ts +4 -0
  40. package/dist/connectors.js +10 -2
  41. package/dist/embed/entry.d.ts +4 -0
  42. package/dist/hooks/use-turn-navigation.d.ts +19 -0
  43. package/dist/index.d.ts +4 -0
  44. package/dist/index.js +16 -7
  45. package/dist/internal.d.ts +1 -1
  46. package/dist/internal.js +18 -9
  47. package/dist/internal.js.map +1 -1
  48. package/dist/questions.js +8 -6
  49. package/dist/questions.js.map +1 -1
  50. package/dist/rich-input.js +32 -13
  51. package/dist/rich-input.js.map +1 -1
  52. package/dist/style.full.css +1 -1
  53. package/dist/tool-details.js +5 -4
  54. package/dist/tool-details.js.map +1 -1
  55. package/package.json +2 -2
  56. package/public-api.md +46 -2
  57. package/dist/chunk-2DPLLZOU.js.map +0 -1
  58. package/dist/chunk-7MCGQH34.js.map +0 -1
  59. package/dist/chunk-J72ZLILV.js.map +0 -1
  60. package/dist/chunk-QIR73CES.js.map +0 -1
  61. package/dist/chunk-WRIMPZPN.js.map +0 -1
  62. package/dist/chunk-XP6T6SHZ.js.map +0 -1
package/README.md CHANGED
@@ -510,7 +510,7 @@ Questionnaire 负责必答校验、原生单选/多选、自填和前后分页
510
510
 
511
511
  `ConnectorConnection` 通过 `type="device"` 或 `type="managed"` 选择连接方式,并接收对应连接组件的宿主回调。
512
512
 
513
- `DeviceConnection` 接收宿主的 `read`、`act`、`onChanged` 回调及可选 `onDisable`、`diagnostics`。宿主可用 `initialPage="manage"` 在首次挂载时直达管理页;尚未关联应用时仍进入连接入口,不会自动创建应用或授权。初始权限采用飞书平台默认模板及官方 CLI 推荐清单,不以机器人/本人身份或 SW 已实现能力筛选。权限状态按企业侧开通、本人授权分别展示,未知不等于拒绝;工作能力目录另外说明当前能执行的操作。
513
+ `DeviceConnection` 接收宿主的 `read`、`act`、`onChanged` 回调及可选 `onDisable`、`diagnostics`。未传 `detail` 的授权界面可用 `initialPage="manage"` 在首次挂载时直达管理页;尚未关联应用时仍进入连接入口,不会自动创建应用或授权。初始权限采用飞书平台默认模板及官方 CLI 推荐清单,不以机器人/本人身份或 SW 已实现能力筛选。权限状态按企业侧开通、本人授权分别展示,未知不等于拒绝;工作能力目录另外说明当前能执行的操作。
514
514
 
515
515
  首次关联应用后继续确认官方推荐的本人授权,允许两次扫码。企业审核要求以飞书页面为准;添加能力仍按当前操作核验和补充,核验失败保留连接与错误。统一授权流程按 `authorize` / `poll` 逐步展示当前飞书官方二维码,完成后显式 `finish`;PA 通过 `bindDelivery` 接入机器人消息,接入失败保留授权,可单独重试。完整分类选择在完成时替换启用集合,局部补权保留其他已选项;取消申请保留已有授权。增加能力时保留此助手原有停用状态,按钮显示“授权并保存”,暂停推送也不会被自动恢复。日志、历史步骤和原生错误编号放在连接帮助的高级排查内。
516
516
 
@@ -522,3 +522,17 @@ PA 等只需要授权界面的宿主可从 `@blade-hq/agent-react/connectors`
522
522
  `@blade-hq/agent-react/connectors` 的 `DeviceConnection` 可传 `autoAuthorize`:仅在用户主动打开聊天授权卡片时开始准备官方二维码,设置页默认仍手动发起。`authorizationCapabilities` 用于只补当前操作需要的能力;已有有效二维码会继续使用,不重复生成。生成二维码不代表用户授权或企业审核已通过。
523
523
 
524
524
  首次连接默认只申请机器人能力;需要本人能力时按操作补充授权。已有连接的选择和授权不受影响。
525
+
526
+ ### 连接器管理详情
527
+
528
+ `ConnectorConnection` 的 `detail` 传入名称、图标和 `rules` 内容,使用共享的紧凑头部、更多操作、权限/诊断二级页与确认框。只在 PA 等拥有对应能力的宿主传入 `bindDelivery`、`detail.preferences`、`detail.onOpenPush`;不提供的能力不会生成空标签。停用只改变本地启用意图,移除才会清除托管凭据并停止收推,两者分别确认。
529
+
530
+ 普通 schema / 网页登录连接使用 `ConfigConnection`,宿主提供表单或登录内容、连接状态及已鉴权的动作回调。`ConnectorDetail` 可组合其他连接方式;动作可通过 `description` 提供菜单中的影响说明;动作类型为 `ConnectorDetailAction`,宿主插槽类型为 `ConnectorDetailOptions`,签名见 [公开 API](public-api.md)。切换连接器或认证身份时按身份重建组件,授权轮询只由连接组件持有。
531
+
532
+ 源码集成时扫描新增的 `ConnectorDetail.tsx` / `ConfigConnection.tsx`、使用的 UI composites;Shadow DOM 宿主沿用 `OverlayRootProvider`。生产集成保留浏览器与 schema 表单的按需加载,不为使用详情而加载整套聊天 UI。
533
+
534
+ ### ConnectorRulesPanel
535
+
536
+ 从 `@blade-hq/agent-react/connectors` 导入 `ConnectorRulesPanel`,传入稳定的 `read` 和 `update` 回调(调用 `client.connectors.rules/updateRules`)。组件展示分组、分类、三档设置与恢复默认;保存成功才替换当前值,失败保留原设置。宿主通过 `className` 与继承主题接入已有样式;`onCountChange` 返回可设置规则组数。详情中的 `compact` 隐藏重复标题,并默认显示第一个业务分类;仍可选择全部及恢复所有分类的默认设置。
537
+
538
+ 连接器宿主可通过 `ConnectorDetailOptions.name` 提供连接器名。飞书待开通权限提醒按连接器名、连接身份与权限集合摘要记忆展开状态;缺失权限归零时清理该连接器的旧记录;直接组合 `ConnectorDetail` 时可用 `noticeStorageKey` 指定本地记忆键。localStorage 不可用时保留内存内交互。
@@ -0,0 +1,9 @@
1
+ import {
2
+ SessionPluginConfigForm
3
+ } from "./chunk-SK43YNRX.js";
4
+ import "./chunk-KHJEIHMJ.js";
5
+ import "./chunk-PR4QN5HX.js";
6
+ export {
7
+ SessionPluginConfigForm
8
+ };
9
+ //# sourceMappingURL=SessionPluginConfigForm-7LJ5SUNY.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -52,6 +52,10 @@ type ContextDividerRow = {
52
52
  type LiteRow = {
53
53
  type: "background-wakeup";
54
54
  key: string;
55
+ } | {
56
+ type: "pack-event";
57
+ key: string;
58
+ title: string;
55
59
  } | TextRow | MemoryRefsRow | FollowupRow | HistoricalFeedbackRow | QuestionRow | ToolDescriptionRow | ContextGroupRow | ContextDividerRow;
56
60
  export declare function buildLiteRows({ messages, followup, sessionMessages, agentLoops, resultFeedbackByEntry, showContexts, }: {
57
61
  messages: ChatMessage[];
@@ -1,7 +1,4 @@
1
- export interface TurnNavItem {
2
- id: string;
3
- title: string;
4
- }
1
+ import type { TurnNavItem } from "../hooks/use-turn-navigation";
5
2
  interface TurnNavRailProps {
6
3
  items: TurnNavItem[];
7
4
  activeTurnId: string | null;
@@ -27,7 +27,8 @@ export { TextAttachmentPills } from "./TextAttachmentPills";
27
27
  export { getFilePreviewName, ToolFilePreviewAction, ToolPreviewAction, resolveAskQuestionState, ToolCallBlock } from "./ToolCallBlock";
28
28
  export { ToolUiCard } from "./ToolUiCard";
29
29
  export { TurnNavRail } from "./TurnNavRail";
30
- export type { TurnNavItem } from "./TurnNavRail";
30
+ export { turnLocateChannel, useTurnLocateRequest, useTurnLocateStatus } from "./turn-locate-channel";
31
+ export type { TurnLocateRequest, TurnLocateStatus } from "./turn-locate-channel";
31
32
  export { isUserMessage, isErrorMessage, USER_MESSAGE_MARKDOWN_CLASS, UserMessageBubble, ErrorMessageBlock } from "./UserMessageBubble";
32
33
  export type { UserChatMessage, ErrorChatMessage } from "./UserMessageBubble";
33
34
  export { WorkflowRunBlock } from "./WorkflowRunBlock";
@@ -0,0 +1,53 @@
1
+ /**
2
+ * 跨组件「定位到某条发言」的请求通道。
3
+ *
4
+ * 消息列表(MessageList)与右侧脉络面板不在同一棵组件树里,而定位到窗口外
5
+ * 的历史发言需要 MessageList 内部的虚拟列表状态(isEntryLoaded / revealEntry /
6
+ * 滚动容器),脉络面板拿不到这些。这里用一个模块级 store 把「点击脉络里的
7
+ * 某条发言」变成一条带序号的信令,MessageList 监听后在它自己的
8
+ * useTurnNavigation.selectEntry 里执行完整定位(跨页加载 + 滚动 + 高亮)。
9
+ *
10
+ * 与 composer-channels 同一模式:module singleton + 订阅回调,
11
+ * 不依赖任何宿主 store,SDK 内可复用。
12
+ */
13
+ export interface TurnLocateRequest {
14
+ entryId: string;
15
+ /** 单调递增,避免「同一条发言点两次」或「晚到的旧信号」被误判成新请求。 */
16
+ seq: number;
17
+ }
18
+ /** 执行侧回传的进度:面板据此显示「正在定位」/失败提示。 */
19
+ export interface TurnLocateStatus {
20
+ seq: number;
21
+ entryId: string;
22
+ state: "pending" | "failed";
23
+ }
24
+ export declare const turnLocateChannel: {
25
+ getState: () => Record<string, TurnLocateRequest>;
26
+ getStatus: () => Record<string, TurnLocateStatus>;
27
+ request(sessionId: string, entryId: string): void;
28
+ /** 执行侧回传进度;只有最新一次请求的结果会被接受。 */
29
+ report(sessionId: string, seq: number, state: TurnLocateStatus["state"]): void;
30
+ /** 定位完成(成功):清掉进度,面板不再显示「正在定位」。 */
31
+ clearStatus(sessionId: string, seq: number): void;
32
+ subscribe(listener: () => void): () => void;
33
+ /** 某条信令已被消费:同 seq 不再重复定位(避免重新挂载时又跳一次)。 */
34
+ consume(sessionId: string, seq: number): void;
35
+ /** 只清进度、不动未消费的请求(列表卸载时用)。 */
36
+ clearStatusForSession(sessionId: string): void;
37
+ clearSession(sessionId: string): void;
38
+ reset(): void;
39
+ };
40
+ /**
41
+ * 订阅某个会话的定位请求。
42
+ *
43
+ * 用「命令式订阅 + useState」而不是 useSyncExternalStore:每条信令都是一次
44
+ * **一次性事件**(点一下就执行一次),store 里不留状态,消费完立即清空。
45
+ * useSyncExternalStore 要的是「可重复读取的快照」,在这种事件通道上反而容易
46
+ * 因为快照被清空/重读而漏掉那一次更新。
47
+ */
48
+ export declare function useTurnLocateRequest(sessionId: string | null | undefined): TurnLocateRequest | null;
49
+ /**
50
+ * 订阅某个会话最近一次定位的进度。面板用它显示「正在定位」和失败提示——
51
+ * 定位实际由消息列表执行,面板自己的 useTurnNavigation 拿不到这份状态。
52
+ */
53
+ export declare function useTurnLocateStatus(sessionId: string | null | undefined): TurnLocateStatus | null;