@qfei-design/make-ai-assistant 0.2.9 → 0.2.11

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 (38) hide show
  1. package/PUBLIC_API.md +17 -23
  2. package/README.md +12 -24
  3. package/capabilities.json +36 -9
  4. package/dist/conversation-CZfbgCXd.js +1111 -0
  5. package/dist/conversation-Cvh-IVRV.cjs +1 -0
  6. package/dist/core/conversation-management.d.ts +212 -0
  7. package/dist/core/conversation.d.ts +34 -2
  8. package/dist/core/index.d.ts +2 -0
  9. package/dist/core/response-state.d.ts +8 -0
  10. package/dist/index.cjs +1 -1
  11. package/dist/index.mjs +4 -4
  12. package/dist/make-app/protocol.d.ts +27 -0
  13. package/dist/make-app/stream.d.ts +20 -0
  14. package/dist/make-app.cjs +1 -1
  15. package/dist/make-app.d.ts +46 -11
  16. package/dist/make-app.mjs +698 -259
  17. package/dist/make-console.cjs +1 -1
  18. package/dist/make-console.mjs +1 -1
  19. package/dist/react/conversation-controls.d.ts +20 -0
  20. package/dist/react/use-attachments.d.ts +33 -0
  21. package/dist/react/use-conversation-manager.d.ts +35 -0
  22. package/dist/react.cjs +4 -4
  23. package/dist/react.mjs +2000 -845
  24. package/dist/sse.cjs +1 -1
  25. package/dist/sse.mjs +1 -1
  26. package/dist/styles.css +428 -13
  27. package/docs/backend-contract.md +8 -21
  28. package/docs/make-app-integration.md +80 -0
  29. package/examples/make-app/README.md +11 -0
  30. package/examples/make-app/index.html +5 -0
  31. package/examples/make-app/main.tsx +34 -0
  32. package/examples/make-app/style.css +4 -0
  33. package/examples/make-app/transport.ts +163 -0
  34. package/examples/make-app/vite.config.ts +7 -0
  35. package/package.json +10 -2
  36. package/recipes.json +36 -13
  37. package/dist/conversation-B7eGUXi-.js +0 -727
  38. package/dist/conversation-Cv1wdvCR.cjs +0 -1
package/PUBLIC_API.md CHANGED
@@ -125,16 +125,14 @@ interface AssistantTransport {
125
125
  `regenerate` 存在时,面板才会展示成功回答的“重新生成”。该请求必须具备服务端替换旧回答或
126
126
  不追加重复用户消息的语义,不能简单映射到普通 `sendMessage`。`features` 决定 UI 是否展示
127
127
  新建会话、是否关闭重新生成,以及停止按钮应表达“远程取消”还是仅“停止接收”。默认会显示头部
128
- “新建对话”图标按钮,`features.newConversation === false` 时隐藏;点击新建对话会取消当前生成、
129
- 清空本地会话,并调用可选的 `onNewConversation`。
128
+ “新建对话”图标按钮,`features.newConversation === false` 时隐藏;Make App 新建对话调用持久创建;通用 transport 清理本地视图。两者均可调用 `onNewConversation`。
130
129
  历史快照最多接受 200 条消息、1,000,000 字符正文和 500 个 Artifact;同一条历史消息内
131
130
  Artifact id 必须唯一,避免恢复后产生重复渲染 key。
132
131
 
133
- 传输边界支持中断。UI 在停止时会立即回到可输入状态、忽略迟到事件,并尝试关闭
134
- AsyncIterator,因此即使自定义 transport 没有及时响应 `AbortSignal`,也不会一直卡在
132
+ 传输边界支持中断。通用流 UI 在停止时释放输入并尝试关闭
133
+ AsyncIterator;Make App 则等待独立取消命令的服务端终态,因此不会将连接关闭误记为取消。通用自定义 transport 没有及时响应 `AbortSignal` 时也不会一直卡在
135
134
  streaming。停止按钮会通过 hover/focus tooltip 展示“停止生成”或“停止接收”。关闭
136
- `MakeAiAssistant` 抽屉只隐藏 Drawer,不触发 active run cancel;取消只由停止、新建会话、
137
- 切换 App/reinitialize 或根组件卸载触发。真实实现可以读取 fetch SSE,也可以把 AG-UI
135
+ `MakeAiAssistant` 抽屉只隐藏 Drawer,不触发 active run cancel;新建、切换 App/身份或卸载只释放本地工作,Make App 远程取消只来自显式停止。真实实现可以读取 fetch SSE,也可以把 AG-UI
138
136
  runtime 事件归一化为包事件。
139
137
  UI 不直接请求固定 URL。
140
138
 
@@ -175,23 +173,19 @@ UI 会拒绝孤立、迟到、重复或跨 run 混入的事件,避免静默丢
175
173
 
176
174
  ## Make App transport
177
175
 
178
- `/make-app` 导出 `createMakeAppAssistantTransport`、
179
- `MakeAppAssistantTransportOptions`、`MakeAppAssistantEventSourceFactory` 及相关结构类型。
180
- 宿主需要注入四个语义能力:
181
-
182
- - `locateChat(context, options)`:按当前宿主身份与 App 定位会话,返回 `chatId`;
183
- - `loadHistory({ chatId, cursor, limit }, options)`:恢复已定位会话的历史;
184
- - `sendMessage({ chatId, messageId, text }, options)`:提交幂等消息并返回 `responseId`;
185
- - `eventSourceFactory({ chatId, responseId, cursor }, init)`:订阅响应事件。
186
-
187
- 每个异步回调都会收到可选 `AbortSignal`。具体 URL、请求方法、认证、Cookie、租户与当前
188
- 用户解析均属于宿主边界;包不提供默认路径,也不缓存可能跨身份失效的会话定位结果。
189
- adapter 会校验宿主响应并归一化事件,但不生成 Artifact;在后端加入版本化结构结果前,
190
- 真实链路只渲染文本和进度。当前 Make App adapter 不实现 `regenerate()`,因为现有
191
- `sendMessage({ chatId, messageId, text })` 语义会持久化新的用户消息,不能安全表达
192
- “替换旧回答”。
193
- `historyLimit` 可配置为 1 到 100;`maxEventCharacters` 控制单个 EventSource `data` 的
194
- 最大字符数,默认 1,000,000,超限会在 `JSON.parse` 前终止本次流并关闭 EventSource。
176
+ `/make-app` 导出 `createMakeAppAssistantTransport`、`MakeAppAssistantTransportOptions`、`MakeAppAssistantScope`、`MakeAppAssistantEventSourceFactory` 及相关结构类型。完整回调与接线示例见 [当前 Make App 合同](docs/make-app-integration.md)。
177
+
178
+ 宿主注入 resolveScope 和 17 项语义能力:listAgents、createChat、listChats、getChat、updateChat、deleteChat、loadHistory、sendMessage、getResponse、cancelResponse、setFeedback、startUpload、getUpload、uploadPart、completeUpload、readContent、eventSourceFactory。JSON 回调返回裸对象;204 返回 void;下载返回 Uint8Array。
179
+
180
+ `resolveScope(context)` 返回 appKey、agentId 和随登录身份变化的 identityKey。包只用于作用域绑定与缓存失效,服务器仍独立鉴权。每个异步回调接受 AbortSignal;包不提供部署 URL、不读 Cookie、不导入认证 SDK。
181
+
182
+ `AssistantTransport` 原地增加 listAgents、listConversations、create/get/update/deleteConversation、get/cancelResponse、setFeedback、上传/内容方法与 watchResponse。方法在通用 interface 上可选,Make App adapter 实现全部。loadConversation options 可传 threadId/cursor,返回 nextCursor/hasMore;分页读取不会隐式创建 Chat。
183
+
184
+ 输入 message 可携带 parts;响应事件增加 response.accepted/state/output_item.added/output_text.delta/output_item.done/snapshot/reconciled/terminal。每个 Run、item 和 part 的身份独立,持久助手 messageId 用于反馈。`AssistantConversationState.responses` 保存响应集合;输入可以合并到同一 Run,不按调用次数伪造 Turn。
185
+
186
+ features 增加 conversationManagement、feedback、attachments、modelInputKinds。Make App 的 newConversation/remoteCancellation 为 true,regeneration 为 false。historyLimit 范围 1—200;maxEventCharacters 默认 1,000,000;重连由 adapter 单独负责。完整快照属于覆盖,不能当新 delta。
187
+
188
+ 根入口导出 AssistantContentPart、AssistantMedia、AssistantChat、AssistantChatPage、AssistantAgent、AssistantFeedback、AssistantUpload、AssistantResponseSnapshot、AssistantResponseEvent 等类型,仍无 React/DOM File 依赖。文件读取与 Object URL 留在 React/宿主边界。
195
189
 
196
190
  ## Make Console transport
197
191
 
package/README.md CHANGED
@@ -39,7 +39,7 @@ export function AppAssistant() {
39
39
  设置为 `bottom-left`、`bottom-right`、`top-left`、`top-right`、`left-center` 或 `right-center`;默认值为
40
40
  `bottom-right`。`launcher` 自定义渲染器自行负责位置。浮动入口首次打开后,关闭抽屉只隐藏 Drawer,不卸载 `AssistantPanel`,因此不会中断
41
41
  正在进行的生成;重新打开时会按用户关闭前的滚动意图恢复消息位置,空闲时聚焦输入框,生成中
42
- 聚焦停止按钮。只有点击“停止生成”、新建对话、切换 App/reinitialize 或宿主卸载根组件时才会取消当前请求。
42
+ 聚焦停止按钮。切换会话、App/身份或卸载根组件只释放本地订阅。Make App 的显式停止通过独立取消命令等待服务端终态;关闭订阅不会取消后台 Run。
43
43
 
44
44
  标准位置确定锚点后,宿主可在 `MakeAiAssistant` 外层通过 CSS 变量微调偏移:
45
45
  `--make-ai-launcher-left`、`--make-ai-launcher-right`、`--make-ai-launcher-top`、
@@ -117,8 +117,7 @@ const hostTheme: MakeAiTheme = {
117
117
  宿主内容,传入 `[]` 时隐藏推荐问题。
118
118
 
119
119
  默认头部右侧会展示“新建对话”图标按钮;宿主将 `transport.features.newConversation` 显式设为
120
- `false` 时隐藏该按钮。点击新建对话会取消当前生成、清空本地会话,并调用可选的
121
- `onNewConversation` 回调。
120
+ `false` 时隐藏该按钮。Make App 点击新建会持久创建 Chat,成功后切换会话;通用 transport 按其能力清理本地视图,并调用可选的 `onNewConversation` 回调。
122
121
 
123
122
  ## Package provides
124
123
 
@@ -194,33 +193,23 @@ const assistantTransport = createSseAssistantTransport({
194
193
  });
195
194
  ```
196
195
 
197
- 已有 Make App AI Browser API 可使用专用 adapter:
196
+ Make App 使用专用 adapter 与当前唯一公开契约:
198
197
 
199
198
  ```ts
200
199
  import { createMakeAppAssistantTransport } from "@qfei-design/make-ai-assistant/make-app";
201
200
 
202
201
  const assistantTransport = createMakeAppAssistantTransport({
203
- locateChat: (context, options) =>
204
- makeAppAiClient.locateChat(context, options),
205
- loadHistory: (request, options) =>
206
- makeAppAiClient.loadHistory(request, options),
207
- sendMessage: (request, options) =>
208
- makeAppAiClient.sendMessage(request, options),
209
- eventSourceFactory: (subscription, init) =>
210
- makeAppAiClient.subscribeResponse(subscription, init),
211
- maxEventCharacters: 1_000_000,
202
+ ...makeAppAiClient,
203
+ resolveScope: () => ({ appKey, agentId, identityKey }),
204
+ modelInputKinds: ["text"],
212
205
  });
213
206
  ```
214
207
 
215
- adapter 会按 App 定位持久会话、加载最近历史、提交消息,并把
216
- `response.delta/progress/message/completed/failed` 归一化为包内事件。当前后端不提供
217
- 新建会话与远程取消,因此 UI 会隐藏“新建对话”,停止操作只关闭本地 EventSource。
218
- 当前 adapter 也不提供 `regenerate()`,避免用普通 `sendMessage` 伪装重新生成后在持久历史中
219
- 产生重复用户消息。
220
- 具体 URL、认证方式、租户和当前用户解析全部由宿主实现;adapter 不缓存跨调用会话定位结果。
221
- Make App 历史恢复同样受包级预算保护:最多 200 条历史消息、1,000,000 字符历史正文和
222
- 500 个历史 Artifact;单个 EventSource `data` 默认不能超过 1,000,000 字符,超限会在
223
- JSON 解析前被拒绝。
208
+ `makeAppAiClient` 实现完整的 17 项语义回调:Agent/Chat 管理、分页历史、消息、响应快照、独立取消、反馈、上传/原件和 EventSource。完整类型与示例见 [Make App 接入说明](docs/make-app-integration.md) 和 [宿主示例](examples/make-app/main.tsx)。网络与认证由宿主注入,identityKey 随当前用户/租户变化。
209
+
210
+ 内置面板支持持久会话列表、新建、改名、置顶/删除、反馈与附件队列。历史 cursor=-1 从最早事件正向分页,空可见页仍可能存在后续事件。首次加载不隐式建会话,用户新建或主动发送才创建。item/part 增量、完整文本覆盖、快照恢复和持久 messageId 对账由包统一处理。
211
+
212
+ 停止显示“停止中”,直到服务端确认终态;中断订阅不取消后台 Run。当前 Make App 不提供重新生成语义,也不传 context/capabilities 或伪造 Artifact。modelInputKinds 默认只有 text,附件存储与模型理解分别验收。单条消息文本最多 8 KiB UTF-8,最多 32 个 parts。
224
213
 
225
214
  Make Console 可以使用独立 adapter:
226
215
 
@@ -255,8 +244,7 @@ Console BFF 与 Make App Browser API 是两个独立宿主协议,不应只替
255
244
  需要兼容已有事件协议时,在宿主内实现薄 adapter;不要修改聊天组件或复制 Artifact 模板。
256
245
 
257
246
  流必须以 `run.complete`、`run.cancelled` 或 `error` 终止;异常断流会进入可重试错误状态。
258
- 停止生成按钮悬浮或键盘聚焦时会显示“停止生成”提示;点击后会立即解除输入锁定并丢弃迟到事件,
259
- 标准 SSE transport 会同步取消底层 reader。关闭抽屉只隐藏 UI,不会触发该取消流程。
247
+ 停止生成按钮悬浮或键盘聚焦时会显示“停止生成”提示;Make App 点击后等待远程终态;标准 SSE transport 停止时取消底层 reader 并释放本地输入锁。关闭抽屉只隐藏 UI,不会触发该取消流程。
260
248
  `/sse` 的公开类型不依赖 TypeScript `DOM` lib,现代 Node 宿主也可直接消费。
261
249
  调用前已经取消的 `AbortSignal` 不会触发网络请求。
262
250
  助手只发送宿主提供的上下文,实际数据权限始终由宿主 Service 在服务端重新校验。
package/capabilities.json CHANGED
@@ -9,7 +9,11 @@
9
9
  "status": "experimental",
10
10
  "summary": "Versioned semantic result contract, runtime validation and JSON Schema.",
11
11
  "docPath": "PUBLIC_API.md",
12
- "relatedExports": ["validateArtifact", "parseArtifact", "MakeAiArtifact"]
12
+ "relatedExports": [
13
+ "validateArtifact",
14
+ "parseArtifact",
15
+ "MakeAiArtifact"
16
+ ]
13
17
  },
14
18
  {
15
19
  "id": "artifact-registry",
@@ -18,7 +22,11 @@
18
22
  "status": "experimental",
19
23
  "summary": "Deterministic template selection, extension and capability negotiation.",
20
24
  "docPath": "PUBLIC_API.md",
21
- "relatedExports": ["createArtifactTemplateRegistry", "resolveArtifactTemplate", "createArtifactCapabilities"]
25
+ "relatedExports": [
26
+ "createArtifactTemplateRegistry",
27
+ "resolveArtifactTemplate",
28
+ "createArtifactCapabilities"
29
+ ]
22
30
  },
23
31
  {
24
32
  "id": "react-shell",
@@ -27,7 +35,10 @@
27
35
  "status": "experimental",
28
36
  "summary": "Floating launcher, right-side drawer, embedded panel and streaming conversation UI.",
29
37
  "docPath": "README.md",
30
- "relatedExports": ["MakeAiAssistant", "AssistantPanel"]
38
+ "relatedExports": [
39
+ "MakeAiAssistant",
40
+ "AssistantPanel"
41
+ ]
31
42
  },
32
43
  {
33
44
  "id": "platform-templates",
@@ -36,7 +47,11 @@
36
47
  "status": "experimental",
37
48
  "summary": "Default metric, comparison, trend, ranking, record-list and notice renderers.",
38
49
  "docPath": "PUBLIC_API.md",
39
- "relatedExports": ["ArtifactRenderer", "createPlatformArtifactRegistry", "platformArtifactTemplates"]
50
+ "relatedExports": [
51
+ "ArtifactRenderer",
52
+ "createPlatformArtifactRegistry",
53
+ "platformArtifactTemplates"
54
+ ]
40
55
  },
41
56
  {
42
57
  "id": "sse-transport",
@@ -45,16 +60,22 @@
45
60
  "status": "experimental",
46
61
  "summary": "Abortable fetch SSE adapter for the standard Make AI Assistant event contract.",
47
62
  "docPath": "PUBLIC_API.md",
48
- "relatedExports": ["@qfei-design/make-ai-assistant/sse:createSseAssistantTransport", "AssistantTransport"]
63
+ "relatedExports": [
64
+ "@qfei-design/make-ai-assistant/sse:createSseAssistantTransport",
65
+ "AssistantTransport"
66
+ ]
49
67
  },
50
68
  {
51
69
  "id": "make-app-transport",
52
70
  "name": "Make App AI transport",
53
71
  "category": "integration",
54
72
  "status": "experimental",
55
- "summary": "Host-injected adapter for durable Make App chats, history and response-level SSE events.",
73
+ "summary": "宿主注入的多会话管理、反馈、附件与 item/part SSE、快照恢复和远程取消。",
56
74
  "docPath": "PUBLIC_API.md",
57
- "relatedExports": ["@qfei-design/make-ai-assistant/make-app:createMakeAppAssistantTransport", "AssistantTransport"]
75
+ "relatedExports": [
76
+ "@qfei-design/make-ai-assistant/make-app:createMakeAppAssistantTransport",
77
+ "AssistantTransport"
78
+ ]
58
79
  },
59
80
  {
60
81
  "id": "make-console-transport",
@@ -63,7 +84,10 @@
63
84
  "status": "experimental",
64
85
  "summary": "Host-injected adapter for Console Agents, Sessions, durable events, Run SSE and polling fallback.",
65
86
  "docPath": "PUBLIC_API.md",
66
- "relatedExports": ["@qfei-design/make-ai-assistant/make-console:createMakeConsoleAssistantTransport", "AssistantTransport"]
87
+ "relatedExports": [
88
+ "@qfei-design/make-ai-assistant/make-console:createMakeConsoleAssistantTransport",
89
+ "AssistantTransport"
90
+ ]
67
91
  },
68
92
  {
69
93
  "id": "mock-transport",
@@ -72,7 +96,10 @@
72
96
  "status": "experimental",
73
97
  "summary": "Protocol-compatible mock transport and generic fixtures for App integration before backend readiness.",
74
98
  "docPath": "README.md",
75
- "relatedExports": ["createMockAssistantTransport", "artifactFixtures"]
99
+ "relatedExports": [
100
+ "createMockAssistantTransport",
101
+ "artifactFixtures"
102
+ ]
76
103
  }
77
104
  ]
78
105
  }