@qfei-design/make-ai-assistant 0.2.11 → 0.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.
package/dist/styles.css CHANGED
@@ -391,13 +391,13 @@
391
391
 
392
392
  .make-ai-assistant__task-list-trigger {
393
393
  align-items: center;
394
- background: transparent;
395
- border: 1px solid transparent;
394
+ background: var(--make-ai-internal-surface-strong);
395
+ border: 0;
396
396
  border-radius: 9px;
397
397
  color: var(--make-ai-internal-text-secondary);
398
398
  cursor: pointer;
399
399
  display: inline-flex;
400
- font-size: var(--make-ai-internal-font-size-meta);
400
+ font-size: var(--make-ai-internal-font-size-caption);
401
401
  gap: 6px;
402
402
  height: 34px;
403
403
  max-width: 118px;
@@ -407,43 +407,25 @@
407
407
 
408
408
  .make-ai-assistant__task-list-trigger:hover,
409
409
  .make-ai-assistant__task-list-trigger[aria-expanded="true"] {
410
- background: var(--make-ai-internal-surface);
411
- border-color: color-mix(in srgb, var(--make-ai-internal-accent) 30%, var(--make-ai-internal-border));
410
+ background: color-mix(in srgb, var(--make-ai-internal-accent) 8%, var(--make-ai-internal-surface-strong));
412
411
  color: var(--make-ai-internal-text);
413
412
  }
414
413
 
415
414
  .make-ai-assistant__task-list-trigger svg:first-child {
416
- height: 17px;
417
- width: 17px;
415
+ height: 19px;
416
+ width: 19px;
418
417
  }
419
418
 
420
419
  .make-ai-assistant__task-list-trigger svg:last-child {
421
- height: 12px;
420
+ height: 15px;
422
421
  transition: transform 160ms ease;
423
- width: 12px;
422
+ width: 15px;
424
423
  }
425
424
 
426
425
  .make-ai-assistant__task-list-trigger[aria-expanded="true"] svg:last-child {
427
426
  transform: rotate(180deg);
428
427
  }
429
428
 
430
- .make-ai-assistant__header-content,
431
- .make-ai-assistant__header-title-row,
432
- .make-ai-assistant__header-context {
433
- min-width: 0;
434
- }
435
-
436
- .make-ai-assistant__header-title-row,
437
- .make-ai-assistant__header-context {
438
- align-items: center;
439
- display: flex;
440
- }
441
-
442
- .make-ai-assistant__header-title-row {
443
- gap: 8px;
444
- justify-content: center;
445
- }
446
-
447
429
  .make-ai-assistant__header-title {
448
430
  flex: 0 1 auto;
449
431
  min-width: 0;
@@ -452,98 +434,6 @@
452
434
  white-space: nowrap;
453
435
  }
454
436
 
455
- .make-ai-assistant__current-conversation {
456
- color: var(--make-ai-internal-text-secondary);
457
- flex: 0 1 auto;
458
- font-size: var(--make-ai-internal-font-size-caption);
459
- line-height: var(--make-ai-internal-line-height-caption);
460
- min-width: 0;
461
- overflow: hidden;
462
- text-overflow: ellipsis;
463
- white-space: nowrap;
464
- }
465
-
466
- .make-ai-assistant__read-only-tag {
467
- background: color-mix(in srgb, var(--make-ai-internal-accent) 10%, var(--make-ai-internal-bg));
468
- border: 1px solid color-mix(in srgb, var(--make-ai-internal-accent) 24%, var(--make-ai-internal-border));
469
- border-radius: 5px;
470
- color: color-mix(in srgb, var(--make-ai-internal-accent) 82%, var(--make-ai-internal-text));
471
- flex: 0 0 auto;
472
- font-size: var(--make-ai-internal-font-size-caption);
473
- font-weight: 650;
474
- line-height: var(--make-ai-internal-line-height-caption);
475
- padding: 0 5px;
476
- }
477
-
478
- .make-ai-assistant__header-context {
479
- gap: 6px;
480
- justify-content: center;
481
- margin-top: 1px;
482
- }
483
-
484
- .make-ai-assistant__header-context p {
485
- min-width: 0;
486
- overflow: hidden;
487
- text-overflow: ellipsis;
488
- white-space: nowrap;
489
- }
490
-
491
- .make-ai-assistant__header-context-help {
492
- align-items: center;
493
- border-radius: 50%;
494
- color: color-mix(in srgb, var(--make-ai-internal-text-secondary) 84%, var(--make-ai-internal-accent));
495
- cursor: pointer;
496
- display: inline-flex;
497
- flex: 0 0 auto;
498
- height: 18px;
499
- justify-content: center;
500
- width: 18px;
501
- }
502
-
503
- .make-ai-assistant__header-context-help svg {
504
- fill: none;
505
- height: 14px;
506
- stroke: currentColor;
507
- stroke-linecap: round;
508
- stroke-linejoin: round;
509
- stroke-width: 1.8;
510
- width: 14px;
511
- }
512
-
513
- .make-ai-assistant__header-context-help:focus-visible {
514
- outline: 2px solid color-mix(in srgb, var(--make-ai-internal-accent) 32%, transparent);
515
- outline-offset: 2px;
516
- }
517
-
518
- .make-ai-assistant__header-context-tooltip {
519
- background: var(--make-ai-internal-overlay);
520
- border-radius: 8px;
521
- box-shadow: 0 8px 18px var(--make-ai-internal-overlay-shadow);
522
- color: var(--make-ai-internal-on-overlay);
523
- font-size: var(--make-ai-internal-font-size-meta);
524
- font-weight: 500;
525
- line-height: var(--make-ai-internal-line-height-meta);
526
- max-height: calc(100vh - 32px);
527
- max-width: min(280px, calc(100vw - 32px));
528
- opacity: 0;
529
- overflow: auto;
530
- padding: 7px 8px;
531
- pointer-events: none;
532
- position: fixed;
533
- transform: translateY(-2px);
534
- transition: opacity 120ms ease, transform 120ms ease;
535
- visibility: hidden;
536
- white-space: normal;
537
- width: max-content;
538
- z-index: calc(var(--make-ai-internal-z-index) + 1);
539
- }
540
-
541
- .make-ai-assistant__header-context-tooltip[data-positioned][data-visible] {
542
- opacity: 1;
543
- transform: translateY(0);
544
- visibility: visible;
545
- }
546
-
547
437
  .make-ai-assistant__body {
548
438
  background: var(--make-ai-internal-bg);
549
439
  grid-row: 2;
@@ -1656,10 +1546,7 @@ button.make-ai-artifact__record:hover { background: var(--make-ai-internal-accen
1656
1546
  }
1657
1547
 
1658
1548
  .make-ai-assistant__task-list-trigger > span,
1659
- .make-ai-assistant__task-list-trigger svg:last-child,
1660
- .make-ai-assistant__current-conversation,
1661
- .make-ai-assistant__read-only-tag,
1662
- .make-ai-assistant__header-context {
1549
+ .make-ai-assistant__task-list-trigger svg:last-child {
1663
1550
  display: none;
1664
1551
  }
1665
1552
 
@@ -1861,7 +1748,7 @@ button.make-ai-artifact__record:hover { background: var(--make-ai-internal-accen
1861
1748
  overflow: auto;
1862
1749
  padding: 12px 8px 8px;
1863
1750
  position: absolute;
1864
- top: calc(var(--make-ai-internal-header-height) + 8px);
1751
+ top: calc(var(--make-ai-internal-header-height) + 3px);
1865
1752
  width: min(300px, calc(100% - var(--make-ai-internal-panel-gutter) * 2));
1866
1753
  z-index: calc(var(--make-ai-internal-z-index) + 1);
1867
1754
  }
@@ -2161,7 +2048,6 @@ button.make-ai-artifact__record:hover { background: var(--make-ai-internal-accen
2161
2048
  .make-ai-assistant__launcher > svg,
2162
2049
  .make-ai-assistant__back-to-latest,
2163
2050
  .make-ai-assistant__drawer-resize-handle::after,
2164
- .make-ai-assistant__header-context-tooltip,
2165
2051
  .make-ai-assistant__reply-action[data-tooltip]::after,
2166
2052
  .make-ai-assistant__send[data-tooltip]::after,
2167
2053
  .make-ai-assistant__process summary::after {
@@ -19,7 +19,7 @@
19
19
  | setFeedback | 持久助手 messageId、requestId、like/dislike/none,以及可选 reason/comment |
20
20
  | startUpload / getUpload | 上传初始化与 completedParts 续传进度 |
21
21
  | uploadPart / completeUpload | 从 0 编号的二进制分段,全部完成后获取 ready 内容引用 |
22
- | readContent | 鉴权后原始 Uint8Array,不能把 contentRef 当公开 URL |
22
+ | readContent(可选) | 宿主具备无损二进制认证读取能力时返回原始 Uint8Array;未提供时不展示下载/预览操作 |
23
23
  | eventSourceFactory | 以 chatId、responseId、cursor 创建带凭据的 EventSource;包负责关闭与重连 |
24
24
 
25
25
  JSON 回调返回服务端裸对象,204 返回 void,内容返回 Uint8Array。不要在所有响应上统一解包 data 或 JSON.parse。每个异步回调都必须传递 AbortSignal。scopeKey 仅隔离浏览器内的状态,不能代替服务器授权。
@@ -34,7 +34,7 @@ JSON 回调返回服务端裸对象,204 返回 void,内容返回 Uint8Array
34
34
 
35
35
  输出按 itemId/partId 归并,完整 done 文本覆盖增量。中间模型活动放在过程区域,不能充当最终可反馈消息。response.completed 后读取历史对账,切换到持久助手 messageId,再开放反馈。点踩说明提交失败保留表单,重新提交复用未知结果的原意图;撤销用 rating=none。
36
36
 
37
- 文件选择、拖拽和粘贴进入同一上传队列。分段大小读 partSize,重试先查 completedParts;未 ready 的附件不能发送。暂停/移除只影响本地任务和草稿,当前没有远程上传取消接口。附件卡片可鉴权下载和受控预览,不执行 HTML/SVG/脚本。
37
+ 文件选择、拖拽和粘贴共用一个“上传文件或图片”入口和上传队列;前端不按 `modelInputKinds` 过滤或拒绝媒体类型。分段大小读 partSize,重试先查 completedParts,未 ready 的附件不能发送;服务端根据消息 parts 和实际模型能力决定是否接受。暂停/移除只影响本地任务和草稿,当前没有远程上传取消接口。提供 `readContent` 时,附件卡片可鉴权下载和受控预览;未提供时仅展示附件元数据,不执行 HTML/SVG/脚本。
38
38
 
39
39
  ## 流式事件与恢复
40
40
 
@@ -62,9 +62,9 @@ EventSource.onerror 后先关闭旧实例,再由 adapter 从最后处理游标
62
62
  | 上传 | 单文件 64 MiB,分段当前 1 MiB;服务端按完整 Namespace 限流/限容量 |
63
63
  | 历史 | cursor=-1 从最早事件正向扫描,limit 数底层事件;空可见页仍可 hasMore=true |
64
64
  | 长历史 | 分页继续加载,有界展示最近加载的 200 条/正文预算;不会声称首个窗口是全部历史 |
65
- | 模型媒体能力 | modelInputKinds 默认只有 text;逐类真实模型验收后由宿主开放 |
65
+ | 模型媒体能力 | modelInputKinds 默认只有 text;前端仍提供统一上传入口,服务端按实际模型能力校验消息 parts |
66
66
  | 未完成上传 | 服务端当前 24 小时失效;无公开 abort/清理,容量不保证自动回收 |
67
- | 下载 | 当前为 attachment/octet-stream,不承诺 Range/206;预览用本地受控 Blob |
67
+ | 下载 | readContent 为可选能力;启用时返回 attachment/octet-stream,不承诺 Range/206,预览使用本地受控 Blob |
68
68
  | Artifact/页面上下文 | 通用能力保留;当前 Make App 请求不携带 context/capabilities,不从 Markdown 猜 Artifact |
69
69
  | 重新生成 | 没有服务端替换语义,保持关闭;普通再次提问属于新消息 |
70
70
 
@@ -6,6 +6,6 @@
6
6
 
7
7
  宿主提供同源 `GET /runtime-config`,响应为 `{appKey, appName, agentId, identityKey}`;identityKey 是用户/租户变化时同步变化的非凭据缓存隔离键。该配置不构成服务器授权。生产 POC 应将示例 request 换成已有认证客户端,并沿现有 Service/Make Gateway 转发公共接口。
8
8
 
9
- 当前 Make App 后端只支持文本模型输入;示例的 modelInputKinds 为 `["text"]`。图片、文件、非实时音视频可先上传和查看原件,模型理解逐类验收后再配置开放。不要以文件上传成功判断模型已经支持。
9
+ 当前 Make App 后端只支持文本模型输入;示例的 modelInputKinds 为 `["text"]`,但仍保留统一的“上传文件或图片”入口。服务端必须根据消息 parts 和实际模型能力校验媒体类型;不要以原件存储或读取能力判断模型已经支持输入。
10
10
 
11
11
  详见 [接入说明](../../docs/make-app-integration.md)。正式发布仍由原仓库 GitLab CI 负责。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qfei-design/make-ai-assistant",
3
- "version": "0.2.11",
3
+ "version": "0.2.12",
4
4
  "description": "Platform-wide Make AI Assistant contracts, React shell, and context-aware artifact templates.",
5
5
  "type": "module",
6
6
  "sideEffects": [