@aipanel/core 1.2.10 → 1.2.12

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.
@@ -108,6 +108,12 @@ export declare const WIDGET_MSG: {
108
108
  readonly MINIMIZE_STATE: "MINIMIZE_STATE_CHANGE";
109
109
  readonly PROMPT_DOCK_VISIBILITY: "PROMPT_DOCK_VISIBILITY_CHANGE";
110
110
  readonly REVIEW_PANEL_TOGGLE: "REVIEW_PANEL_TOGGLE";
111
+ /** 宿主 → iframe:告知侧栏归属期望(mode: "host" | "provider"),Provider 据此决定是否展示自家侧栏 */
112
+ readonly SIDEBAR_MODE: "AIPANEL_SIDEBAR_MODE";
113
+ /** 宿主 → iframe:host 折叠开关驱动 Provider 收起/展开自家侧栏({ collapsed }) */
114
+ readonly SIDEBAR_COLLAPSE: "AIPANEL_SIDEBAR_COLLAPSE";
115
+ /** iframe → 宿主(可选):Provider 内部折叠变化回传({ collapsed }),供宿主同步左上角开关状态 */
116
+ readonly SIDEBAR_STATE: "AIPANEL_SIDEBAR_STATE";
111
117
  /** 无 deepLink 能力的 Provider:通知 iframe 聚焦指定会话 */
112
118
  readonly FOCUS_SESSION: "AIPANEL_FOCUS_SESSION";
113
119
  /** 无 deepLink 能力的 Provider:iframe 确认目标会话已激活且渲染稳定(携带 sessionId) */
@@ -57,6 +57,12 @@ const WIDGET_MSG = {
57
57
  MINIMIZE_STATE: "MINIMIZE_STATE_CHANGE",
58
58
  PROMPT_DOCK_VISIBILITY: "PROMPT_DOCK_VISIBILITY_CHANGE",
59
59
  REVIEW_PANEL_TOGGLE: "REVIEW_PANEL_TOGGLE",
60
+ /** 宿主 → iframe:告知侧栏归属期望(mode: "host" | "provider"),Provider 据此决定是否展示自家侧栏 */
61
+ SIDEBAR_MODE: "AIPANEL_SIDEBAR_MODE",
62
+ /** 宿主 → iframe:host 折叠开关驱动 Provider 收起/展开自家侧栏({ collapsed }) */
63
+ SIDEBAR_COLLAPSE: "AIPANEL_SIDEBAR_COLLAPSE",
64
+ /** iframe → 宿主(可选):Provider 内部折叠变化回传({ collapsed }),供宿主同步左上角开关状态 */
65
+ SIDEBAR_STATE: "AIPANEL_SIDEBAR_STATE",
60
66
  /** 无 deepLink 能力的 Provider:通知 iframe 聚焦指定会话 */
61
67
  FOCUS_SESSION: "AIPANEL_FOCUS_SESSION",
62
68
  /** 无 deepLink 能力的 Provider:iframe 确认目标会话已激活且渲染稳定(携带 sessionId) */
@@ -26,6 +26,8 @@ export interface ChatSession {
26
26
  }
27
27
  /** 会话运行状态 */
28
28
  export type SessionStatus = "idle" | "running" | "streaming" | "completed";
29
+ /** 会话等待用户交互的类型(对齐 dsh host approval/request 与 user-questions/request) */
30
+ export type SessionPendingKind = "approval" | "plan-review" | "question";
29
31
  /** Provider 事件(Provider 私有事件 → 归一化,客户端只消费这些事件) */
30
32
  export type ProviderEvent = {
31
33
  type: "connected";
@@ -46,6 +48,19 @@ export type ProviderEvent = {
46
48
  type: "thinking";
47
49
  sessionId: string;
48
50
  thinking: boolean;
51
+ }
52
+ /** 会话等待用户交互(审批/提问/计划评审)开始或结束 */
53
+ | {
54
+ type: "session.pending";
55
+ sessionId: string;
56
+ pending: boolean;
57
+ kind?: SessionPendingKind;
58
+ }
59
+ /** 父会话的进行中子代理数(>0 表示有子代理在跑;自身 idle 时 UI 仍显示进行中) */
60
+ | {
61
+ type: "session.subagents";
62
+ sessionId: string;
63
+ running: number;
49
64
  };
50
65
  /** Provider 环境检查结果 */
51
66
  export interface ProviderEnvironmentInfo {
@@ -137,6 +152,30 @@ export interface ProviderCapabilities {
137
152
  * 缺省/false:不支持,客户端隐藏该按钮,避免展示无功能的入口。
138
153
  */
139
154
  reviewPanel?: boolean;
155
+ /**
156
+ * Provider 是否接管会话侧栏(会话列表栏)。
157
+ * 缺省/false:宿主渲染原生会话列表(现状);true:宿主隐藏原生列表,
158
+ * Provider 自家侧栏接管会话导航,折叠开关归属见 ProviderSidebarCapability.collapseControl。
159
+ */
160
+ sidebar?: ProviderSidebarCapability;
161
+ }
162
+ /** Provider 侧栏折叠开关归属(谁提供折叠控制) */
163
+ export type ProviderSidebarCollapseControl = "host" | "provider";
164
+ /** Provider 接管会话侧栏(会话列表栏)的能力描述 */
165
+ export interface ProviderSidebarCapability {
166
+ /**
167
+ * Provider 自身 Web UI 自带会话侧栏并接管(宿主不再渲染原生会话列表)。
168
+ * true:宿主隐藏原生 SessionList,Provider 自家侧栏在 iframe 内渲染并负责会话导航;
169
+ * 缺省/false:宿主渲染原生会话列表(现状),Provider 侧应隐藏自家侧栏避免重复(如 dsh)。
170
+ */
171
+ takeover?: boolean;
172
+ /**
173
+ * 折叠开关归属(仅 takeover=true 时生效):
174
+ * - "host"(缺省):宿主保留左上角开关,切换时向 iframe 发送 SIDEBAR_COLLAPSE,
175
+ * 由 Provider 收起/展开自家侧栏;
176
+ * - "provider":Provider 自带折叠开关,宿主隐藏左上角按钮且不下发折叠消息。
177
+ */
178
+ collapseControl?: ProviderSidebarCollapseControl;
140
179
  }
141
180
  /**
142
181
  * Web Provider 适配器接口
@@ -2,7 +2,7 @@
2
2
  * 通用类型(Provider 无关)
3
3
  * Provider 专属类型已下沉至 @aipanel/provider-opencode。
4
4
  */
5
- import type { SessionStatus } from "./provider";
5
+ import type { ProviderSidebarCollapseControl, SessionPendingKind, SessionStatus } from "./provider";
6
6
  /**
7
7
  * 展示模式类型
8
8
  */
@@ -127,13 +127,24 @@ export type ServiceStatus = "idle" | "starting" | "ready" | "partial" | "failed"
127
127
  * Session 状态类型(别名:以 ./provider 的 SessionStatus 为单一来源)
128
128
  */
129
129
  export type AIPanelSessionStatusType = SessionStatus;
130
+ /**
131
+ * Session 交互状态(单一来源:./types.ts 定义,事件载荷类型见 ./provider.ts 的 SessionPendingKind)
132
+ */
133
+ export type AIPanelSessionPendingKind = SessionPendingKind;
130
134
  /**
131
135
  * Session 思考状态
132
136
  */
133
137
  export interface AIPanelSessionThinkingState {
134
138
  thinking: boolean;
135
139
  statusType: AIPanelSessionStatusType;
140
+ /** 是否存在待用户交互(审批/提问/计划评审);pending 优先级高于 thinking */
136
141
  hasPending: boolean;
142
+ /** 待交互类型(hasPending=true 时有值;单一来源 ./provider.ts) */
143
+ pendingKind?: AIPanelSessionPendingKind;
144
+ /** 是否刚运行完成(client 端由 running→idle 边沿且非当前选中推导;对齐官方 completed 提醒语义) */
145
+ completed?: boolean;
146
+ /** 进行中的子代理数(>0 时即使自身 idle 也视为"在跑";源:session.subagents) */
147
+ subagentsRunning?: number;
137
148
  }
138
149
  /**
139
150
  * 挂件会话信息
@@ -248,6 +259,14 @@ export interface AIPanelWidgetProps {
248
259
  hideBubble?: boolean;
249
260
  /** 是否支持代码审查面板(右上角 </> 按钮);由 Provider capabilities.reviewPanel 决定 */
250
261
  reviewPanelEnabled?: boolean;
262
+ /** Provider 接管会话侧栏(隐藏原生会话列表,Provider 自家侧栏在 iframe 内渲染);由 Provider capabilities.sidebar.takeover 决定 */
263
+ providerSidebar?: boolean;
264
+ /**
265
+ * 侧栏折叠开关归属(默认 "host"):
266
+ * host:宿主保留左上角开关并驱动折叠;provider:宿主隐藏左上角按钮,由 Provider 自带开关控制。
267
+ * 仅 providerSidebar=true 时生效;由 Provider capabilities.sidebar.collapseControl 决定。
268
+ */
269
+ sidebarCollapseControl?: ProviderSidebarCollapseControl;
251
270
  }
252
271
  /**
253
272
  * 挂件组件事件
@@ -125,6 +125,12 @@ const WIDGET_MSG = {
125
125
  MINIMIZE_STATE: "MINIMIZE_STATE_CHANGE",
126
126
  PROMPT_DOCK_VISIBILITY: "PROMPT_DOCK_VISIBILITY_CHANGE",
127
127
  REVIEW_PANEL_TOGGLE: "REVIEW_PANEL_TOGGLE",
128
+ /** 宿主 → iframe:告知侧栏归属期望(mode: "host" | "provider"),Provider 据此决定是否展示自家侧栏 */
129
+ SIDEBAR_MODE: "AIPANEL_SIDEBAR_MODE",
130
+ /** 宿主 → iframe:host 折叠开关驱动 Provider 收起/展开自家侧栏({ collapsed }) */
131
+ SIDEBAR_COLLAPSE: "AIPANEL_SIDEBAR_COLLAPSE",
132
+ /** iframe → 宿主(可选):Provider 内部折叠变化回传({ collapsed }),供宿主同步左上角开关状态 */
133
+ SIDEBAR_STATE: "AIPANEL_SIDEBAR_STATE",
128
134
  /** 无 deepLink 能力的 Provider:通知 iframe 聚焦指定会话 */
129
135
  FOCUS_SESSION: "AIPANEL_FOCUS_SESSION",
130
136
  /** 无 deepLink 能力的 Provider:iframe 确认目标会话已激活且渲染稳定(携带 sessionId) */
@@ -108,6 +108,12 @@ export declare const WIDGET_MSG: {
108
108
  readonly MINIMIZE_STATE: "MINIMIZE_STATE_CHANGE";
109
109
  readonly PROMPT_DOCK_VISIBILITY: "PROMPT_DOCK_VISIBILITY_CHANGE";
110
110
  readonly REVIEW_PANEL_TOGGLE: "REVIEW_PANEL_TOGGLE";
111
+ /** 宿主 → iframe:告知侧栏归属期望(mode: "host" | "provider"),Provider 据此决定是否展示自家侧栏 */
112
+ readonly SIDEBAR_MODE: "AIPANEL_SIDEBAR_MODE";
113
+ /** 宿主 → iframe:host 折叠开关驱动 Provider 收起/展开自家侧栏({ collapsed }) */
114
+ readonly SIDEBAR_COLLAPSE: "AIPANEL_SIDEBAR_COLLAPSE";
115
+ /** iframe → 宿主(可选):Provider 内部折叠变化回传({ collapsed }),供宿主同步左上角开关状态 */
116
+ readonly SIDEBAR_STATE: "AIPANEL_SIDEBAR_STATE";
111
117
  /** 无 deepLink 能力的 Provider:通知 iframe 聚焦指定会话 */
112
118
  readonly FOCUS_SESSION: "AIPANEL_FOCUS_SESSION";
113
119
  /** 无 deepLink 能力的 Provider:iframe 确认目标会话已激活且渲染稳定(携带 sessionId) */
@@ -26,6 +26,8 @@ export interface ChatSession {
26
26
  }
27
27
  /** 会话运行状态 */
28
28
  export type SessionStatus = "idle" | "running" | "streaming" | "completed";
29
+ /** 会话等待用户交互的类型(对齐 dsh host approval/request 与 user-questions/request) */
30
+ export type SessionPendingKind = "approval" | "plan-review" | "question";
29
31
  /** Provider 事件(Provider 私有事件 → 归一化,客户端只消费这些事件) */
30
32
  export type ProviderEvent = {
31
33
  type: "connected";
@@ -46,6 +48,19 @@ export type ProviderEvent = {
46
48
  type: "thinking";
47
49
  sessionId: string;
48
50
  thinking: boolean;
51
+ }
52
+ /** 会话等待用户交互(审批/提问/计划评审)开始或结束 */
53
+ | {
54
+ type: "session.pending";
55
+ sessionId: string;
56
+ pending: boolean;
57
+ kind?: SessionPendingKind;
58
+ }
59
+ /** 父会话的进行中子代理数(>0 表示有子代理在跑;自身 idle 时 UI 仍显示进行中) */
60
+ | {
61
+ type: "session.subagents";
62
+ sessionId: string;
63
+ running: number;
49
64
  };
50
65
  /** Provider 环境检查结果 */
51
66
  export interface ProviderEnvironmentInfo {
@@ -137,6 +152,30 @@ export interface ProviderCapabilities {
137
152
  * 缺省/false:不支持,客户端隐藏该按钮,避免展示无功能的入口。
138
153
  */
139
154
  reviewPanel?: boolean;
155
+ /**
156
+ * Provider 是否接管会话侧栏(会话列表栏)。
157
+ * 缺省/false:宿主渲染原生会话列表(现状);true:宿主隐藏原生列表,
158
+ * Provider 自家侧栏接管会话导航,折叠开关归属见 ProviderSidebarCapability.collapseControl。
159
+ */
160
+ sidebar?: ProviderSidebarCapability;
161
+ }
162
+ /** Provider 侧栏折叠开关归属(谁提供折叠控制) */
163
+ export type ProviderSidebarCollapseControl = "host" | "provider";
164
+ /** Provider 接管会话侧栏(会话列表栏)的能力描述 */
165
+ export interface ProviderSidebarCapability {
166
+ /**
167
+ * Provider 自身 Web UI 自带会话侧栏并接管(宿主不再渲染原生会话列表)。
168
+ * true:宿主隐藏原生 SessionList,Provider 自家侧栏在 iframe 内渲染并负责会话导航;
169
+ * 缺省/false:宿主渲染原生会话列表(现状),Provider 侧应隐藏自家侧栏避免重复(如 dsh)。
170
+ */
171
+ takeover?: boolean;
172
+ /**
173
+ * 折叠开关归属(仅 takeover=true 时生效):
174
+ * - "host"(缺省):宿主保留左上角开关,切换时向 iframe 发送 SIDEBAR_COLLAPSE,
175
+ * 由 Provider 收起/展开自家侧栏;
176
+ * - "provider":Provider 自带折叠开关,宿主隐藏左上角按钮且不下发折叠消息。
177
+ */
178
+ collapseControl?: ProviderSidebarCollapseControl;
140
179
  }
141
180
  /**
142
181
  * Web Provider 适配器接口
@@ -2,7 +2,7 @@
2
2
  * 通用类型(Provider 无关)
3
3
  * Provider 专属类型已下沉至 @aipanel/provider-opencode。
4
4
  */
5
- import type { SessionStatus } from "./provider";
5
+ import type { ProviderSidebarCollapseControl, SessionPendingKind, SessionStatus } from "./provider";
6
6
  /**
7
7
  * 展示模式类型
8
8
  */
@@ -127,13 +127,24 @@ export type ServiceStatus = "idle" | "starting" | "ready" | "partial" | "failed"
127
127
  * Session 状态类型(别名:以 ./provider 的 SessionStatus 为单一来源)
128
128
  */
129
129
  export type AIPanelSessionStatusType = SessionStatus;
130
+ /**
131
+ * Session 交互状态(单一来源:./types.ts 定义,事件载荷类型见 ./provider.ts 的 SessionPendingKind)
132
+ */
133
+ export type AIPanelSessionPendingKind = SessionPendingKind;
130
134
  /**
131
135
  * Session 思考状态
132
136
  */
133
137
  export interface AIPanelSessionThinkingState {
134
138
  thinking: boolean;
135
139
  statusType: AIPanelSessionStatusType;
140
+ /** 是否存在待用户交互(审批/提问/计划评审);pending 优先级高于 thinking */
136
141
  hasPending: boolean;
142
+ /** 待交互类型(hasPending=true 时有值;单一来源 ./provider.ts) */
143
+ pendingKind?: AIPanelSessionPendingKind;
144
+ /** 是否刚运行完成(client 端由 running→idle 边沿且非当前选中推导;对齐官方 completed 提醒语义) */
145
+ completed?: boolean;
146
+ /** 进行中的子代理数(>0 时即使自身 idle 也视为"在跑";源:session.subagents) */
147
+ subagentsRunning?: number;
137
148
  }
138
149
  /**
139
150
  * 挂件会话信息
@@ -248,6 +259,14 @@ export interface AIPanelWidgetProps {
248
259
  hideBubble?: boolean;
249
260
  /** 是否支持代码审查面板(右上角 </> 按钮);由 Provider capabilities.reviewPanel 决定 */
250
261
  reviewPanelEnabled?: boolean;
262
+ /** Provider 接管会话侧栏(隐藏原生会话列表,Provider 自家侧栏在 iframe 内渲染);由 Provider capabilities.sidebar.takeover 决定 */
263
+ providerSidebar?: boolean;
264
+ /**
265
+ * 侧栏折叠开关归属(默认 "host"):
266
+ * host:宿主保留左上角开关并驱动折叠;provider:宿主隐藏左上角按钮,由 Provider 自带开关控制。
267
+ * 仅 providerSidebar=true 时生效;由 Provider capabilities.sidebar.collapseControl 决定。
268
+ */
269
+ sidebarCollapseControl?: ProviderSidebarCollapseControl;
251
270
  }
252
271
  /**
253
272
  * 挂件组件事件
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aipanel/core",
3
- "version": "1.2.10",
3
+ "version": "1.2.12",
4
4
  "type": "module",
5
5
  "sideEffects": false,
6
6
  "main": "lib/index.cjs",