@qfei-design/make-ai-assistant 0.1.4 → 0.1.6
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/PUBLIC_API.md +32 -9
- package/README.md +19 -2
- package/dist/{conversation-Dy2Sghjv.js → conversation-B7eGUXi-.js} +241 -198
- package/dist/conversation-Cv1wdvCR.cjs +1 -0
- package/dist/core/conversation.d.ts +11 -0
- package/dist/core/types.d.ts +2 -0
- package/dist/index.cjs +1 -1
- package/dist/index.mjs +2 -2
- package/dist/make-app.cjs +1 -1
- package/dist/make-app.mjs +7 -6
- package/dist/make-console.cjs +1 -1
- package/dist/make-console.mjs +56 -55
- package/dist/react.cjs +5 -1
- package/dist/react.mjs +726 -485
- package/dist/sse.cjs +1 -1
- package/dist/sse.mjs +1 -1
- package/dist/styles.css +384 -29
- package/package.json +1 -1
- package/dist/conversation-Yku9Lzj_.cjs +0 -1
package/dist/sse.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const b=require("./conversation-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const b=require("./conversation-Cv1wdvCR.cjs"),S=1e6,u=e=>typeof e=="object"&&e!==null&&!Array.isArray(e),p=(e,t,r)=>{const a=Object.keys(e).find(s=>s.toLowerCase()===t.toLowerCase());a&&delete e[a],e[t]=r},A=e=>{const t={};return Array.isArray(e)?e.forEach(([r,a])=>p(t,r,a)):e&&typeof e.forEach=="function"?e.forEach((r,a)=>p(t,a,r)):e&&Object.entries(e).forEach(([r,a])=>p(t,r,a)),p(t,"Accept","text/event-stream"),p(t,"Content-Type","application/json"),t},I=(e,t)=>{if(!u(t))throw new Error("Invalid assistant SSE event: data");if(Object.prototype.hasOwnProperty.call(t,"type"))throw new Error("Invalid assistant SSE event: unsupported field");try{return b.parseAssistantEvent({...t,type:e})}catch(r){throw r instanceof Error&&r.message.startsWith("Invalid assistant event")?new Error(r.message.replace("Invalid assistant event","Invalid assistant SSE event")):r}},w=e=>{if(!e.trim())return;const t=e.split(`
|
|
2
2
|
`),r=t.find(n=>n.startsWith("event:"))?.slice(6).trim(),a=t.filter(n=>n.startsWith("data:")).map(n=>n.slice(5).trimStart()).join(`
|
|
3
3
|
`);if(t.some(n=>n.startsWith("event:")||n.startsWith("data:"))){if(!r||!a)throw new Error("Invalid assistant SSE event: missing event or data");try{return I(r,JSON.parse(a))}catch(n){throw n instanceof Error&&n.message.startsWith("Invalid assistant SSE event")?n:new Error("Invalid assistant SSE event: JSON")}}};async function*T(e,t,r=S){if(!e.body)throw new Error("当前运行环境无法读取 AI 助手流式响应");const a=e.body.getReader(),s=new TextDecoder;let n="",d=!1,h=!1,l;const c=()=>(l??=a.cancel().catch(o=>{console.error("[make-ai-assistant] SSE reader cancellation failed",{errorType:o instanceof Error?o.name:typeof o})}),l),f=()=>{c()};t?.addEventListener("abort",f,{once:!0});const m=o=>{const i=o.type==="error"||o.type==="run.cancelled"||o.type==="run.complete";return h||=i,i};try{for(;;){if(t?.aborted)throw new DOMException("Aborted","AbortError");const o=await a.read();if(t?.aborted)throw new DOMException("Aborted","AbortError");let i=s.decode(o.value,{stream:!o.done});d&&(i=`\r${i}`,d=!1),!o.done&&i.endsWith("\r")&&(i=i.slice(0,-1),d=!0),o.done&&d&&(i+="\r",d=!1),n+=i.replace(/\r\n|\r/g,`
|
|
4
4
|
`);let E=n.indexOf(`
|
package/dist/sse.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { p as b } from "./conversation-
|
|
1
|
+
import { p as b } from "./conversation-B7eGUXi-.js";
|
|
2
2
|
const S = 1e6, u = (e) => typeof e == "object" && e !== null && !Array.isArray(e), E = (e, t, r) => {
|
|
3
3
|
const a = Object.keys(e).find(
|
|
4
4
|
(s) => s.toLowerCase() === t.toLowerCase()
|
package/dist/styles.css
CHANGED
|
@@ -15,6 +15,9 @@
|
|
|
15
15
|
--make-ai-internal-shadow: var(--make-ai-shadow, 0 18px 48px rgb(30 31 43 / 12%));
|
|
16
16
|
--make-ai-internal-drawer-width: var(--make-ai-drawer-width, 432px);
|
|
17
17
|
--make-ai-internal-z-index: var(--make-ai-z-index, 1050);
|
|
18
|
+
--make-ai-internal-font-size-body: var(--make-ai-font-size-body, .8125rem);
|
|
19
|
+
--make-ai-internal-font-size-ui: var(--make-ai-font-size-ui, .75rem);
|
|
20
|
+
--make-ai-internal-line-height-body: var(--make-ai-line-height-body, 1.62);
|
|
18
21
|
}
|
|
19
22
|
|
|
20
23
|
.make-ai-assistant,
|
|
@@ -72,7 +75,6 @@
|
|
|
72
75
|
|
|
73
76
|
.make-ai-assistant__launcher:focus-visible,
|
|
74
77
|
.make-ai-assistant button:focus-visible,
|
|
75
|
-
.make-ai-assistant textarea:focus-visible,
|
|
76
78
|
.make-ai-artifact button:focus-visible {
|
|
77
79
|
outline: 3px solid color-mix(in srgb, var(--make-ai-internal-accent) 28%, transparent);
|
|
78
80
|
outline-offset: 2px;
|
|
@@ -116,6 +118,8 @@
|
|
|
116
118
|
grid-template-rows: auto auto minmax(0, 1fr) auto;
|
|
117
119
|
height: 100%;
|
|
118
120
|
min-height: 360px;
|
|
121
|
+
min-width: 0;
|
|
122
|
+
position: relative;
|
|
119
123
|
}
|
|
120
124
|
|
|
121
125
|
.make-ai-assistant__header {
|
|
@@ -138,8 +142,9 @@
|
|
|
138
142
|
.make-ai-assistant__header h2 {
|
|
139
143
|
font-size: 15px;
|
|
140
144
|
font-weight: 700;
|
|
141
|
-
letter-spacing:
|
|
145
|
+
letter-spacing: 0;
|
|
142
146
|
line-height: 22px;
|
|
147
|
+
overflow-wrap: anywhere;
|
|
143
148
|
}
|
|
144
149
|
|
|
145
150
|
.make-ai-assistant__header p {
|
|
@@ -147,6 +152,7 @@
|
|
|
147
152
|
font-size: 12px;
|
|
148
153
|
line-height: 18px;
|
|
149
154
|
margin-top: 1px;
|
|
155
|
+
overflow-wrap: anywhere;
|
|
150
156
|
}
|
|
151
157
|
|
|
152
158
|
.make-ai-assistant__avatar {
|
|
@@ -210,10 +216,12 @@
|
|
|
210
216
|
margin: 12px 18px 0;
|
|
211
217
|
padding: 8px 10px;
|
|
212
218
|
border-radius: 10px;
|
|
219
|
+
overflow-wrap: anywhere;
|
|
213
220
|
}
|
|
214
221
|
|
|
215
222
|
.make-ai-assistant__body {
|
|
216
223
|
min-height: 0;
|
|
224
|
+
min-width: 0;
|
|
217
225
|
overflow: auto;
|
|
218
226
|
overscroll-behavior: contain;
|
|
219
227
|
padding: 22px 18px 30px;
|
|
@@ -343,9 +351,10 @@
|
|
|
343
351
|
|
|
344
352
|
.make-ai-assistant__bubble {
|
|
345
353
|
color: var(--make-ai-internal-text);
|
|
346
|
-
font-size:
|
|
347
|
-
line-height:
|
|
348
|
-
|
|
354
|
+
font-size: var(--make-ai-internal-font-size-body);
|
|
355
|
+
line-height: var(--make-ai-internal-line-height-body);
|
|
356
|
+
overflow-wrap: anywhere;
|
|
357
|
+
word-break: break-word;
|
|
349
358
|
}
|
|
350
359
|
|
|
351
360
|
.make-ai-assistant__message--user .make-ai-assistant__bubble {
|
|
@@ -354,6 +363,84 @@
|
|
|
354
363
|
border-radius: 16px 5px 16px 16px;
|
|
355
364
|
color: color-mix(in srgb, var(--make-ai-internal-accent) 68%, var(--make-ai-internal-text));
|
|
356
365
|
padding: 10px 13px;
|
|
366
|
+
white-space: pre-wrap;
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
.make-ai-assistant__assistant-text {
|
|
370
|
+
display: grid;
|
|
371
|
+
gap: 10px;
|
|
372
|
+
max-width: min(100%, 66ch);
|
|
373
|
+
white-space: normal;
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
.make-ai-assistant__assistant-text p,
|
|
377
|
+
.make-ai-assistant__assistant-text ul,
|
|
378
|
+
.make-ai-assistant__assistant-text pre {
|
|
379
|
+
margin: 0;
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
.make-ai-assistant__assistant-text p {
|
|
383
|
+
min-width: 0;
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
.make-ai-assistant__assistant-text ul {
|
|
387
|
+
display: grid;
|
|
388
|
+
gap: 6px;
|
|
389
|
+
list-style: none;
|
|
390
|
+
padding: 1px 0 1px 2px;
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
.make-ai-assistant__assistant-text li {
|
|
394
|
+
min-width: 0;
|
|
395
|
+
padding-left: 15px;
|
|
396
|
+
position: relative;
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
.make-ai-assistant__assistant-text li::before {
|
|
400
|
+
background: color-mix(in srgb, var(--make-ai-internal-accent) 46%, var(--make-ai-internal-border));
|
|
401
|
+
border-radius: 50%;
|
|
402
|
+
content: "";
|
|
403
|
+
height: 5px;
|
|
404
|
+
left: 1px;
|
|
405
|
+
position: absolute;
|
|
406
|
+
top: .72em;
|
|
407
|
+
width: 5px;
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
.make-ai-assistant__assistant-text strong {
|
|
411
|
+
color: color-mix(in srgb, var(--make-ai-internal-text) 92%, var(--make-ai-internal-accent));
|
|
412
|
+
font-weight: 650;
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
.make-ai-assistant__assistant-text code {
|
|
416
|
+
background: color-mix(in srgb, var(--make-ai-internal-surface-strong) 78%, var(--make-ai-internal-bg));
|
|
417
|
+
border: 1px solid color-mix(in srgb, var(--make-ai-internal-border) 78%, transparent);
|
|
418
|
+
border-radius: 5px;
|
|
419
|
+
color: color-mix(in srgb, var(--make-ai-internal-text) 88%, var(--make-ai-internal-accent));
|
|
420
|
+
font-family: ui-monospace, SFMono-Regular, "SF Mono", Consolas, "Liberation Mono", monospace;
|
|
421
|
+
font-size: .92em;
|
|
422
|
+
padding: .05rem .25rem;
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
.make-ai-assistant__assistant-text pre {
|
|
426
|
+
background: var(--make-ai-internal-surface);
|
|
427
|
+
border: 1px solid color-mix(in srgb, var(--make-ai-internal-border) 84%, transparent);
|
|
428
|
+
border-radius: 10px;
|
|
429
|
+
color: var(--make-ai-internal-text-secondary);
|
|
430
|
+
font-size: .92em;
|
|
431
|
+
line-height: 1.55;
|
|
432
|
+
max-width: 100%;
|
|
433
|
+
overflow: auto;
|
|
434
|
+
padding: 9px 10px;
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
.make-ai-assistant__assistant-text pre code {
|
|
438
|
+
background: transparent;
|
|
439
|
+
border: 0;
|
|
440
|
+
color: inherit;
|
|
441
|
+
display: block;
|
|
442
|
+
padding: 0;
|
|
443
|
+
white-space: pre;
|
|
357
444
|
}
|
|
358
445
|
|
|
359
446
|
.make-ai-assistant__typing {
|
|
@@ -385,6 +472,7 @@
|
|
|
385
472
|
font-size: 13px;
|
|
386
473
|
gap: 4px;
|
|
387
474
|
line-height: 1.55;
|
|
475
|
+
overflow-wrap: anywhere;
|
|
388
476
|
padding: 10px 12px;
|
|
389
477
|
}
|
|
390
478
|
|
|
@@ -398,20 +486,196 @@
|
|
|
398
486
|
align-items: center;
|
|
399
487
|
color: var(--make-ai-internal-text-secondary);
|
|
400
488
|
display: flex;
|
|
489
|
+
flex: 1;
|
|
401
490
|
font-size: 12px;
|
|
402
491
|
gap: 7px;
|
|
403
492
|
line-height: 18px;
|
|
493
|
+
min-width: 0;
|
|
404
494
|
min-height: 24px;
|
|
405
495
|
}
|
|
406
496
|
|
|
407
|
-
.make-ai-assistant__progress > span {
|
|
497
|
+
.make-ai-assistant__progress > span:first-child {
|
|
408
498
|
animation: make-ai-pulse 1.2s ease-in-out infinite;
|
|
409
499
|
background: var(--make-ai-internal-accent);
|
|
410
500
|
border-radius: 50%;
|
|
501
|
+
flex: 0 0 auto;
|
|
411
502
|
height: 7px;
|
|
412
503
|
width: 7px;
|
|
413
504
|
}
|
|
414
505
|
|
|
506
|
+
.make-ai-assistant__progress > span:last-child {
|
|
507
|
+
min-width: 0;
|
|
508
|
+
overflow-wrap: anywhere;
|
|
509
|
+
}
|
|
510
|
+
|
|
511
|
+
.make-ai-assistant__process {
|
|
512
|
+
background: var(--make-ai-internal-surface);
|
|
513
|
+
border: 1px solid color-mix(in srgb, var(--make-ai-internal-border) 88%, transparent);
|
|
514
|
+
border-radius: 10px;
|
|
515
|
+
color: var(--make-ai-internal-text-secondary);
|
|
516
|
+
font-size: 12px;
|
|
517
|
+
line-height: 1.55;
|
|
518
|
+
overflow: hidden;
|
|
519
|
+
overflow-wrap: anywhere;
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
.make-ai-assistant__process summary {
|
|
523
|
+
align-items: center;
|
|
524
|
+
cursor: pointer;
|
|
525
|
+
display: flex;
|
|
526
|
+
gap: 8px;
|
|
527
|
+
list-style: none;
|
|
528
|
+
min-height: 32px;
|
|
529
|
+
padding: 7px 9px;
|
|
530
|
+
}
|
|
531
|
+
|
|
532
|
+
.make-ai-assistant__process summary::-webkit-details-marker {
|
|
533
|
+
display: none;
|
|
534
|
+
}
|
|
535
|
+
|
|
536
|
+
.make-ai-assistant__process summary::after {
|
|
537
|
+
border-bottom: 1.5px solid currentColor;
|
|
538
|
+
border-right: 1.5px solid currentColor;
|
|
539
|
+
content: "";
|
|
540
|
+
flex: 0 0 auto;
|
|
541
|
+
height: 6px;
|
|
542
|
+
opacity: .72;
|
|
543
|
+
transform: rotate(45deg);
|
|
544
|
+
transition: transform 160ms ease;
|
|
545
|
+
width: 6px;
|
|
546
|
+
}
|
|
547
|
+
|
|
548
|
+
.make-ai-assistant__process[open] summary::after {
|
|
549
|
+
transform: rotate(225deg);
|
|
550
|
+
}
|
|
551
|
+
|
|
552
|
+
.make-ai-assistant__process-title {
|
|
553
|
+
flex: 1;
|
|
554
|
+
min-width: 0;
|
|
555
|
+
}
|
|
556
|
+
|
|
557
|
+
.make-ai-assistant__process-count {
|
|
558
|
+
color: color-mix(in srgb, var(--make-ai-internal-text-secondary) 78%, var(--make-ai-internal-bg));
|
|
559
|
+
flex: 0 0 auto;
|
|
560
|
+
font-size: 11px;
|
|
561
|
+
margin-left: auto;
|
|
562
|
+
}
|
|
563
|
+
|
|
564
|
+
.make-ai-assistant__process ol {
|
|
565
|
+
display: grid;
|
|
566
|
+
gap: 6px;
|
|
567
|
+
list-style: none;
|
|
568
|
+
margin: 0;
|
|
569
|
+
padding: 0 10px 10px 12px;
|
|
570
|
+
}
|
|
571
|
+
|
|
572
|
+
.make-ai-assistant__process li {
|
|
573
|
+
align-items: flex-start;
|
|
574
|
+
display: flex;
|
|
575
|
+
gap: 8px;
|
|
576
|
+
min-width: 0;
|
|
577
|
+
}
|
|
578
|
+
|
|
579
|
+
.make-ai-assistant__process li > span:first-child {
|
|
580
|
+
background: var(--make-ai-internal-border);
|
|
581
|
+
border-radius: 50%;
|
|
582
|
+
flex: 0 0 auto;
|
|
583
|
+
height: 6px;
|
|
584
|
+
margin-top: 7px;
|
|
585
|
+
width: 6px;
|
|
586
|
+
}
|
|
587
|
+
|
|
588
|
+
.make-ai-assistant__process li[data-step-active] > span:first-child {
|
|
589
|
+
background: var(--make-ai-internal-accent);
|
|
590
|
+
}
|
|
591
|
+
|
|
592
|
+
.make-ai-assistant__process li > span:last-child {
|
|
593
|
+
min-width: 0;
|
|
594
|
+
overflow-wrap: anywhere;
|
|
595
|
+
}
|
|
596
|
+
|
|
597
|
+
.make-ai-assistant__reply-actions {
|
|
598
|
+
align-items: center;
|
|
599
|
+
color: var(--make-ai-internal-text-secondary);
|
|
600
|
+
display: flex;
|
|
601
|
+
flex-wrap: wrap;
|
|
602
|
+
gap: 4px 8px;
|
|
603
|
+
min-height: 28px;
|
|
604
|
+
}
|
|
605
|
+
|
|
606
|
+
.make-ai-assistant__reply-action {
|
|
607
|
+
background: transparent;
|
|
608
|
+
border: 0;
|
|
609
|
+
border-radius: 6px;
|
|
610
|
+
color: inherit;
|
|
611
|
+
cursor: pointer;
|
|
612
|
+
font-size: var(--make-ai-internal-font-size-ui);
|
|
613
|
+
font-weight: 600;
|
|
614
|
+
}
|
|
615
|
+
|
|
616
|
+
.make-ai-assistant__reply-copy {
|
|
617
|
+
align-items: center;
|
|
618
|
+
border: 1px solid transparent;
|
|
619
|
+
display: inline-flex;
|
|
620
|
+
height: 28px;
|
|
621
|
+
justify-content: center;
|
|
622
|
+
padding: 0;
|
|
623
|
+
width: 28px;
|
|
624
|
+
}
|
|
625
|
+
|
|
626
|
+
.make-ai-assistant__reply-copy svg {
|
|
627
|
+
fill: none;
|
|
628
|
+
height: 15px;
|
|
629
|
+
stroke: currentColor;
|
|
630
|
+
stroke-linecap: round;
|
|
631
|
+
stroke-linejoin: round;
|
|
632
|
+
stroke-width: 1.75;
|
|
633
|
+
width: 15px;
|
|
634
|
+
}
|
|
635
|
+
|
|
636
|
+
.make-ai-assistant__reply-regenerate {
|
|
637
|
+
padding: 3px 0;
|
|
638
|
+
}
|
|
639
|
+
|
|
640
|
+
.make-ai-assistant__reply-copy:hover {
|
|
641
|
+
background: var(--make-ai-internal-surface);
|
|
642
|
+
border-color: color-mix(in srgb, var(--make-ai-internal-accent) 18%, var(--make-ai-internal-border));
|
|
643
|
+
color: var(--make-ai-internal-accent);
|
|
644
|
+
}
|
|
645
|
+
|
|
646
|
+
.make-ai-assistant__reply-regenerate:hover {
|
|
647
|
+
color: var(--make-ai-internal-accent);
|
|
648
|
+
}
|
|
649
|
+
|
|
650
|
+
.make-ai-assistant__reply-feedback {
|
|
651
|
+
color: color-mix(in srgb, var(--make-ai-internal-success) 78%, var(--make-ai-internal-text-secondary));
|
|
652
|
+
font-size: var(--make-ai-internal-font-size-ui);
|
|
653
|
+
}
|
|
654
|
+
|
|
655
|
+
.make-ai-assistant__reply-feedback[data-copy-status="error"] {
|
|
656
|
+
color: var(--make-ai-internal-danger);
|
|
657
|
+
}
|
|
658
|
+
|
|
659
|
+
.make-ai-assistant__back-to-latest {
|
|
660
|
+
background: var(--make-ai-internal-bg);
|
|
661
|
+
border: 1px solid color-mix(in srgb, var(--make-ai-internal-accent) 26%, var(--make-ai-internal-border));
|
|
662
|
+
border-radius: 999px;
|
|
663
|
+
bottom: 94px;
|
|
664
|
+
box-shadow: 0 8px 20px rgb(30 31 43 / 10%);
|
|
665
|
+
color: var(--make-ai-internal-accent);
|
|
666
|
+
cursor: pointer;
|
|
667
|
+
font-size: 12px;
|
|
668
|
+
font-weight: 600;
|
|
669
|
+
padding: 7px 11px;
|
|
670
|
+
position: absolute;
|
|
671
|
+
right: 18px;
|
|
672
|
+
z-index: 2;
|
|
673
|
+
}
|
|
674
|
+
|
|
675
|
+
.make-ai-assistant__back-to-latest:hover {
|
|
676
|
+
background: var(--make-ai-internal-accent-soft);
|
|
677
|
+
}
|
|
678
|
+
|
|
415
679
|
.make-ai-assistant__retry {
|
|
416
680
|
align-self: flex-start;
|
|
417
681
|
background: transparent;
|
|
@@ -426,9 +690,10 @@
|
|
|
426
690
|
}
|
|
427
691
|
|
|
428
692
|
.make-ai-assistant__composer-region {
|
|
429
|
-
background: var(--make-ai-internal-bg);
|
|
693
|
+
background: color-mix(in srgb, var(--make-ai-internal-bg) 94%, var(--make-ai-internal-surface));
|
|
430
694
|
border-top: 1px solid var(--make-ai-internal-border);
|
|
431
|
-
|
|
695
|
+
box-shadow: 0 -8px 18px rgb(30 31 43 / 3%);
|
|
696
|
+
padding: 10px 18px 9px;
|
|
432
697
|
}
|
|
433
698
|
|
|
434
699
|
.make-ai-assistant__suggestions {
|
|
@@ -457,35 +722,44 @@
|
|
|
457
722
|
|
|
458
723
|
.make-ai-assistant__composer {
|
|
459
724
|
align-items: flex-end;
|
|
460
|
-
background: var(--make-ai-internal-bg);
|
|
461
|
-
border: 1px solid var(--make-ai-internal-border);
|
|
462
|
-
border-radius:
|
|
725
|
+
background: color-mix(in srgb, var(--make-ai-internal-bg) 96%, var(--make-ai-internal-surface));
|
|
726
|
+
border: 1px solid color-mix(in srgb, var(--make-ai-internal-border) 92%, transparent);
|
|
727
|
+
border-radius: 15px;
|
|
463
728
|
display: flex;
|
|
464
|
-
gap:
|
|
465
|
-
|
|
466
|
-
|
|
729
|
+
gap: 9px;
|
|
730
|
+
min-height: 54px;
|
|
731
|
+
padding: 7px 8px 7px 12px;
|
|
732
|
+
transition: background 160ms ease, border-color 160ms ease, box-shadow 160ms ease;
|
|
467
733
|
}
|
|
468
734
|
|
|
469
735
|
.make-ai-assistant__composer:focus-within {
|
|
470
|
-
|
|
471
|
-
|
|
736
|
+
background: var(--make-ai-internal-bg);
|
|
737
|
+
border-color: color-mix(in srgb, var(--make-ai-internal-accent) 42%, var(--make-ai-internal-border));
|
|
738
|
+
box-shadow:
|
|
739
|
+
0 0 0 2px color-mix(in srgb, var(--make-ai-internal-accent) 10%, transparent),
|
|
740
|
+
0 8px 18px rgb(30 31 43 / 5%);
|
|
472
741
|
}
|
|
473
742
|
|
|
474
743
|
.make-ai-assistant__composer textarea {
|
|
475
744
|
background: transparent;
|
|
476
745
|
border: 0;
|
|
477
746
|
color: var(--make-ai-internal-text);
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
747
|
+
font-size: var(--make-ai-internal-font-size-body);
|
|
748
|
+
line-height: 1.5;
|
|
749
|
+
max-height: 112px;
|
|
750
|
+
min-height: 38px;
|
|
481
751
|
outline: 0;
|
|
482
|
-
padding:
|
|
752
|
+
padding: 4px 0 2px;
|
|
483
753
|
resize: none;
|
|
484
754
|
width: 100%;
|
|
485
755
|
}
|
|
486
756
|
|
|
757
|
+
.make-ai-assistant__composer textarea:focus-visible {
|
|
758
|
+
outline: 0;
|
|
759
|
+
}
|
|
760
|
+
|
|
487
761
|
.make-ai-assistant__composer textarea::placeholder {
|
|
488
|
-
color: color-mix(in srgb, var(--make-ai-internal-text-secondary)
|
|
762
|
+
color: color-mix(in srgb, var(--make-ai-internal-text-secondary) 70%, var(--make-ai-internal-bg));
|
|
489
763
|
}
|
|
490
764
|
|
|
491
765
|
.make-ai-assistant__send {
|
|
@@ -497,13 +771,37 @@
|
|
|
497
771
|
cursor: pointer;
|
|
498
772
|
display: flex;
|
|
499
773
|
flex: 0 0 auto;
|
|
500
|
-
height:
|
|
774
|
+
height: 34px;
|
|
501
775
|
justify-content: center;
|
|
502
|
-
|
|
776
|
+
margin-bottom: 2px;
|
|
777
|
+
position: relative;
|
|
778
|
+
transition: background 160ms ease, box-shadow 160ms ease, opacity 160ms ease;
|
|
779
|
+
width: 34px;
|
|
780
|
+
}
|
|
781
|
+
|
|
782
|
+
.make-ai-assistant__send::before {
|
|
783
|
+
content: "";
|
|
784
|
+
inset: -5px;
|
|
785
|
+
position: absolute;
|
|
786
|
+
}
|
|
787
|
+
|
|
788
|
+
.make-ai-assistant__send svg {
|
|
789
|
+
height: 18px;
|
|
790
|
+
transform: translateX(1px);
|
|
791
|
+
width: 18px;
|
|
503
792
|
}
|
|
504
793
|
|
|
505
|
-
.make-ai-assistant__send:hover:not(:disabled) {
|
|
506
|
-
|
|
794
|
+
.make-ai-assistant__send:hover:not(:disabled) {
|
|
795
|
+
background: var(--make-ai-internal-accent-strong);
|
|
796
|
+
box-shadow: 0 6px 14px color-mix(in srgb, var(--make-ai-internal-accent) 18%, transparent);
|
|
797
|
+
}
|
|
798
|
+
|
|
799
|
+
.make-ai-assistant__send:disabled {
|
|
800
|
+
background: color-mix(in srgb, var(--make-ai-internal-surface-strong) 72%, var(--make-ai-internal-bg));
|
|
801
|
+
color: color-mix(in srgb, var(--make-ai-internal-text-secondary) 54%, var(--make-ai-internal-bg));
|
|
802
|
+
cursor: not-allowed;
|
|
803
|
+
opacity: 1;
|
|
804
|
+
}
|
|
507
805
|
|
|
508
806
|
.make-ai-assistant__send--stop span {
|
|
509
807
|
background: currentColor;
|
|
@@ -516,7 +814,7 @@
|
|
|
516
814
|
color: var(--make-ai-internal-text-secondary);
|
|
517
815
|
font-size: 10px;
|
|
518
816
|
line-height: 1.45;
|
|
519
|
-
margin:
|
|
817
|
+
margin: 7px 0 0;
|
|
520
818
|
text-align: center;
|
|
521
819
|
}
|
|
522
820
|
|
|
@@ -558,7 +856,7 @@
|
|
|
558
856
|
font-size: 30px;
|
|
559
857
|
font-variant-numeric: tabular-nums;
|
|
560
858
|
font-weight: 700;
|
|
561
|
-
letter-spacing:
|
|
859
|
+
letter-spacing: 0;
|
|
562
860
|
line-height: 1.25;
|
|
563
861
|
margin-top: 8px;
|
|
564
862
|
}
|
|
@@ -680,6 +978,60 @@ button.make-ai-artifact__record:hover { background: var(--make-ai-internal-accen
|
|
|
680
978
|
to { opacity: 1; transform: translateX(0); }
|
|
681
979
|
}
|
|
682
980
|
|
|
981
|
+
@container (max-width: 360px) {
|
|
982
|
+
.make-ai-assistant__header {
|
|
983
|
+
gap: 8px;
|
|
984
|
+
grid-template-columns: auto minmax(0, 1fr) auto;
|
|
985
|
+
min-height: 64px;
|
|
986
|
+
padding: 12px 14px;
|
|
987
|
+
}
|
|
988
|
+
|
|
989
|
+
.make-ai-assistant__privacy-note {
|
|
990
|
+
align-items: flex-start;
|
|
991
|
+
margin: 10px 14px 0;
|
|
992
|
+
}
|
|
993
|
+
|
|
994
|
+
.make-ai-assistant__body {
|
|
995
|
+
padding: 18px 14px 28px;
|
|
996
|
+
}
|
|
997
|
+
|
|
998
|
+
.make-ai-assistant__message {
|
|
999
|
+
margin-bottom: 22px;
|
|
1000
|
+
}
|
|
1001
|
+
|
|
1002
|
+
.make-ai-assistant__message--user .make-ai-assistant__message-turn {
|
|
1003
|
+
max-width: 100%;
|
|
1004
|
+
}
|
|
1005
|
+
|
|
1006
|
+
.make-ai-assistant__message--assistant .make-ai-assistant__message-stack {
|
|
1007
|
+
margin-left: 32px;
|
|
1008
|
+
max-width: calc(100% - 32px);
|
|
1009
|
+
}
|
|
1010
|
+
|
|
1011
|
+
.make-ai-assistant__suggestions {
|
|
1012
|
+
display: grid;
|
|
1013
|
+
grid-template-columns: minmax(0, 1fr);
|
|
1014
|
+
overflow: visible;
|
|
1015
|
+
}
|
|
1016
|
+
|
|
1017
|
+
.make-ai-assistant__suggestions button {
|
|
1018
|
+
text-align: left;
|
|
1019
|
+
white-space: normal;
|
|
1020
|
+
}
|
|
1021
|
+
|
|
1022
|
+
.make-ai-assistant__composer-region {
|
|
1023
|
+
padding: 10px 14px 9px;
|
|
1024
|
+
}
|
|
1025
|
+
|
|
1026
|
+
.make-ai-assistant__back-to-latest {
|
|
1027
|
+
bottom: 104px;
|
|
1028
|
+
left: 50%;
|
|
1029
|
+
right: auto;
|
|
1030
|
+
transform: translateX(-50%);
|
|
1031
|
+
white-space: nowrap;
|
|
1032
|
+
}
|
|
1033
|
+
}
|
|
1034
|
+
|
|
683
1035
|
@media (max-width: 560px) {
|
|
684
1036
|
.make-ai-assistant__drawer { width: 100vw; }
|
|
685
1037
|
.make-ai-assistant__launcher { bottom: 20px; right: 20px; }
|
|
@@ -704,9 +1056,12 @@ button.make-ai-artifact__record:hover { background: var(--make-ai-internal-accen
|
|
|
704
1056
|
@media (prefers-reduced-motion: reduce) {
|
|
705
1057
|
.make-ai-assistant__drawer,
|
|
706
1058
|
.make-ai-assistant__launcher-orbit,
|
|
707
|
-
.make-ai-assistant__progress > span,
|
|
1059
|
+
.make-ai-assistant__progress > span:first-child,
|
|
708
1060
|
.make-ai-assistant__typing span {
|
|
709
1061
|
animation: none;
|
|
710
1062
|
}
|
|
711
|
-
.make-ai-assistant__launcher
|
|
1063
|
+
.make-ai-assistant__launcher,
|
|
1064
|
+
.make-ai-assistant__process summary::after {
|
|
1065
|
+
transition: none;
|
|
1066
|
+
}
|
|
712
1067
|
}
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";const $=(t,e)=>{let r=0;for(const a of t)if(r+=1,r>e)break;return r};const o={actions:10,comparisonItems:24,jsonCharacters:1e6,jsonDepth:64,jsonNodes:1e4,rankingItems:50,recordColumns:20,recordListRecords:100,recordValues:100,textCharacters:2e4,trendPointsPerSeries:120,trendSeries:8,validationIssues:100},l={artifactsPerRun:50,assistantMessagesPerRun:20,historyArtifacts:500,historyCharacters:1e6,historyMessages:200,identifierCharacters:1e3,messageCharacters:1e5},K=["metric","comparison","trend","ranking","record-list","notice"],C=()=>({success:!1,issues:[{path:"",message:"could not be safely inspected"}]}),D=new Set(["navigate","open-record","open-list","invoke"]),F=new Set(["decimal","currency","percent"]);class M extends Array{push(...e){const r=o.validationIssues-this.length;return r>0?super.push(...e.slice(0,r)):this.length}}const c=t=>(()=>{if(typeof t!="object"||t===null||Array.isArray(t))return!1;const e=Object.getPrototypeOf(t);return e===Object.prototype||e===null})(),x=t=>typeof t=="string"&&t.trim().length>0,T=(t,e)=>{let r=0;for(const a of t)if(r+=1,r>e)return r;return r},u=t=>typeof t=="string"&&T(t,o.textCharacters)<=o.textCharacters,b=t=>typeof t=="number"&&Number.isFinite(t),L=t=>t.length<=120?t:`${t.slice(0,117)}...`,m=(t,e,r)=>{x(t)?u(t)||r.push({path:e,message:`must contain at most ${o.textCharacters} characters`}):r.push({path:e,message:"must be a non-empty string"})},I=(t,e,r)=>{t!==void 0&&typeof t!="string"?r.push({path:e,message:"must be a string"}):typeof t=="string"&&!u(t)&&r.push({path:e,message:`must contain at most ${o.textCharacters} characters`})},d=(t,e,r,a)=>{for(const s in t)if(Object.prototype.hasOwnProperty.call(t,s)){if(a.length>=o.validationIssues)break;e.has(s)||a.push({path:L(r?`${r}.${s}`:s),message:"is not supported"})}},A=(t,e,r,a)=>t.length>e?(a.push({path:r,message:`must contain at most ${e} items`}),!0):!1,E=(t,e,r)=>{for(let a=0;a<t.length;a+=1)if(!Object.prototype.hasOwnProperty.call(t,a))return r.push({path:e,message:"must not contain empty array slots"}),!0;return!1},S=(t,e,r,a)=>{const s=new Set;t.forEach((n,f)=>{if(!c(n)||typeof n[e]!="string")return;const i=n[e];s.has(i)?a.push({path:`${r}[${f}].${e}`,message:"must be unique within the collection"}):s.add(i)})},q=new Set(["schemaVersion","id","kind","title","summary","presentation","actions","meta","data"]),U=new Set(["template","density"]),z=new Set(["style","currency","precision","unit"]),J=new Set(["id","label","intent","target","appearance"]),H=new Set(["value","format","delta","context"]),B=new Set(["value","format","direction","label"]),P=new Set(["items"]),W=new Set(["id","label","value","format","hint"]),G=new Set(["series"]),Q=new Set(["id","label","points","format"]),X=new Set(["x","y"]),Z=new Set(["id","label","value","format","description"]),tt=new Set(["entity","columns","records","total"]),et=new Set(["key","label"]),rt=new Set(["key","label","format"]),nt=new Set(["id","title","values","action"]),at=new Set(["tone","body"]),w=(t,e,r)=>c(t)?(d(t,z,e,r),t.style!==void 0&&(typeof t.style!="string"||!F.has(t.style))&&r.push({path:`${e}.style`,message:"is not supported"}),t.currency!==void 0&&m(t.currency,`${e}.currency`,r),t.precision!==void 0&&(!Number.isInteger(t.precision)||Number(t.precision)<0||Number(t.precision)>20)&&r.push({path:`${e}.precision`,message:"must be an integer between 0 and 20"}),I(t.unit,`${e}.unit`,r),!0):(r.push({path:e,message:"must be an object"}),!1),R=t=>{const e=[{kind:"visit",depth:0,value:t}],r=new WeakSet;let a=0,s=0;try{for(;e.length>0;){const n=e.pop();if(!n)break;if(n.kind==="leave"){r.delete(n.value);continue}if(s+=1,s>o.jsonNodes||n.depth>o.jsonDepth)return!1;if(n.value===null||typeof n.value=="boolean")continue;if(typeof n.value=="string"){if(a+=T(n.value,o.textCharacters),!u(n.value)||a>o.jsonCharacters)return!1;continue}if(typeof n.value=="number"){if(!Number.isFinite(n.value))return!1;continue}if(!Array.isArray(n.value)&&!c(n.value)||r.has(n.value))return!1;r.add(n.value),e.push({kind:"leave",value:n.value});const f=o.jsonNodes-s;if(Array.isArray(n.value)){if(n.value.length>f)return!1;for(let i=n.value.length-1;i>=0;i-=1)e.push({kind:"visit",depth:n.depth+1,value:n.value[i]})}else{const i=[];for(const h in n.value)if(Object.prototype.hasOwnProperty.call(n.value,h)){if(!u(h)||(a+=T(h,o.textCharacters),a>o.jsonCharacters)||i.length>=f)return!1;i.push(h)}for(let h=i.length-1;h>=0;h-=1){const y=i[h];e.push({kind:"visit",depth:n.depth+1,value:n.value[y]})}}}return!0}catch{return!1}},st=t=>t===null||typeof t=="boolean"||u(t)||b(t),Y=(t,e,r)=>c(t)?(d(t,J,e,r),m(t.id,`${e}.id`,r),m(t.label,`${e}.label`,r),(typeof t.intent!="string"||!D.has(t.intent))&&r.push({path:`${e}.intent`,message:"is not supported"}),(!c(t.target)||!R(t.target))&&r.push({path:`${e}.target`,message:"must be a JSON object"}),t.appearance!==void 0&&(typeof t.appearance!="string"||!["primary","secondary","link"].includes(t.appearance))&&r.push({path:`${e}.appearance`,message:"is not supported"}),!0):(r.push({path:e,message:"must be an object"}),!1),ot=(t,e)=>{if(d(t,q,"",e),t.schemaVersion!=="1.0"&&e.push({path:"schemaVersion",message:"must equal 1.0"}),m(t.id,"id",e),K.includes(t.kind)||e.push({path:"kind",message:"is not a supported Artifact kind"}),I(t.title,"title",e),I(t.summary,"summary",e),t.presentation!==void 0&&(c(t.presentation)?(d(t.presentation,U,"presentation",e),t.presentation.template!==void 0&&!x(t.presentation.template)?e.push({path:"presentation.template",message:"must be a non-empty string"}):t.presentation.template!==void 0&&!u(t.presentation.template)&&e.push({path:"presentation.template",message:`must contain at most ${o.textCharacters} characters`}),t.presentation.density!==void 0&&(typeof t.presentation.density!="string"||!["compact","comfortable"].includes(t.presentation.density))&&e.push({path:"presentation.density",message:"is not supported"})):e.push({path:"presentation",message:"must be an object"})),t.actions!==void 0){if(!Array.isArray(t.actions))e.push({path:"actions",message:"must be an array"});else if(!A(t.actions,o.actions,"actions",e)){if(E(t.actions,"actions",e))return;S(t.actions,"id","actions",e),t.actions.forEach((a,s)=>Y(a,`actions[${s}]`,e))}}t.meta!==void 0&&(!c(t.meta)||!R(t.meta))&&e.push({path:"meta",message:"must be a JSON object"})},it=(t,e)=>{d(t,H,"data",e),!b(t.value)&&!u(t.value)&&e.push({path:"data.value",message:"must be a finite number or string"}),t.format!==void 0&&w(t.format,"data.format",e),t.delta!==void 0&&(c(t.delta)?(d(t.delta,B,"data.delta",e),b(t.delta.value)||e.push({path:"data.delta.value",message:"must be a finite number"}),t.delta.direction!==void 0&&(typeof t.delta.direction!="string"||!["up","down","flat"].includes(t.delta.direction))&&e.push({path:"data.delta.direction",message:"is not supported"}),t.delta.format!==void 0&&(typeof t.delta.format!="string"||!["decimal","percent"].includes(t.delta.format))&&e.push({path:"data.delta.format",message:"is not supported"}),I(t.delta.label,"data.delta.label",e)):e.push({path:"data.delta",message:"must be an object"})),I(t.context,"data.context",e)},ct=(t,e)=>{if(d(t,P,"data",e),!Array.isArray(t.items)||t.items.length===0){e.push({path:"data.items",message:"must be a non-empty array"});return}A(t.items,o.comparisonItems,"data.items",e)||E(t.items,"data.items",e)||(S(t.items,"id","data.items",e),t.items.forEach((r,a)=>{const s=`data.items[${a}]`;if(!c(r)){e.push({path:s,message:"must be an object"});return}d(r,W,s,e),m(r.id,`${s}.id`,e),m(r.label,`${s}.label`,e),!b(r.value)&&!u(r.value)&&e.push({path:`${s}.value`,message:"must be a finite number or string"}),r.format!==void 0&&w(r.format,`${s}.format`,e),I(r.hint,`${s}.hint`,e)}))},dt=(t,e)=>{if(d(t,G,"data",e),!Array.isArray(t.series)||t.series.length===0){e.push({path:"data.series",message:"must be a non-empty array"});return}A(t.series,o.trendSeries,"data.series",e)||E(t.series,"data.series",e)||(S(t.series,"id","data.series",e),t.series.forEach((r,a)=>{const s=`data.series[${a}]`;if(!c(r)){e.push({path:s,message:"must be an object"});return}if(d(r,Q,s,e),m(r.id,`${s}.id`,e),m(r.label,`${s}.label`,e),r.format!==void 0&&w(r.format,`${s}.format`,e),!Array.isArray(r.points)||r.points.length===0){e.push({path:`${s}.points`,message:"must be a non-empty array"});return}A(r.points,o.trendPointsPerSeries,`${s}.points`,e)||E(r.points,`${s}.points`,e)||r.points.forEach((n,f)=>{const i=`${s}.points[${f}]`;if(!c(n)){e.push({path:i,message:"must be an object"});return}d(n,X,i,e),!b(n.x)&&!u(n.x)&&e.push({path:`${i}.x`,message:"must be a finite number or string"}),b(n.y)||e.push({path:`${i}.y`,message:"must be a finite number"})})}))},pt=(t,e)=>{if(d(t,P,"data",e),!Array.isArray(t.items)||t.items.length===0){e.push({path:"data.items",message:"must be a non-empty array"});return}A(t.items,o.rankingItems,"data.items",e)||E(t.items,"data.items",e)||(S(t.items,"id","data.items",e),t.items.forEach((r,a)=>{const s=`data.items[${a}]`;if(!c(r)){e.push({path:s,message:"must be an object"});return}d(r,Z,s,e),m(r.id,`${s}.id`,e),m(r.label,`${s}.label`,e),b(r.value)||e.push({path:`${s}.value`,message:"must be a finite number"}),r.format!==void 0&&w(r.format,`${s}.format`,e),I(r.description,`${s}.description`,e)}))},mt=(t,e)=>{if(d(t,tt,"data",e),c(t.entity)?(d(t.entity,et,"data.entity",e),m(t.entity.key,"data.entity.key",e),I(t.entity.label,"data.entity.label",e)):e.push({path:"data.entity",message:"must be an object"}),!Array.isArray(t.columns)||t.columns.length===0)e.push({path:"data.columns",message:"must be a non-empty array"});else if(!A(t.columns,o.recordColumns,"data.columns",e)){if(E(t.columns,"data.columns",e))return;S(t.columns,"key","data.columns",e),t.columns.forEach((a,s)=>{const n=`data.columns[${s}]`;if(!c(a)){e.push({path:n,message:"must be an object"});return}d(a,rt,n,e),m(a.key,`${n}.key`,e),m(a.label,`${n}.label`,e),a.format!==void 0&&w(a.format,`${n}.format`,e)})}if(!Array.isArray(t.records))e.push({path:"data.records",message:"must be an array"});else if(!A(t.records,o.recordListRecords,"data.records",e)){if(E(t.records,"data.records",e))return;S(t.records,"id","data.records",e),t.records.forEach((a,s)=>{const n=`data.records[${s}]`;if(!c(a)){e.push({path:n,message:"must be an object"});return}if(d(a,nt,n,e),m(a.id,`${n}.id`,e),I(a.title,`${n}.title`,e),!c(a.values))e.push({path:`${n}.values`,message:"must contain only JSON primitive display values"});else{const f=a.values;let i=!1,h=0;for(const y in f)if(Object.prototype.hasOwnProperty.call(f,y)){if(h+=1,h>o.recordValues)break;i||=!u(y)||!st(f[y])}h>o.recordValues?e.push({path:`${n}.values`,message:`must contain at most ${o.recordValues} values`}):i&&e.push({path:`${n}.values`,message:"must contain only JSON primitive display values"})}a.action!==void 0&&Y(a.action,`${n}.action`,e)})}t.total!==void 0&&(!Number.isInteger(t.total)||Number(t.total)<0)&&e.push({path:"data.total",message:"must be a non-negative integer"})},ft=(t,e)=>{d(t,at,"data",e),(typeof t.tone!="string"||!["info","success","warning","danger"].includes(t.tone))&&e.push({path:"data.tone",message:"is not supported"}),m(t.body,"data.body",e)},j=(t,e)=>{if(ot(t,e),!c(t.data)){e.push({path:"data",message:"must be an object"});return}switch(t.kind){case"metric":it(t.data,e);break;case"comparison":ct(t.data,e);break;case"trend":dt(t.data,e);break;case"ranking":pt(t.data,e);break;case"record-list":mt(t.data,e);break;case"notice":ft(t.data,e);break}},V=t=>{const e=new M;try{if(!c(t))return{success:!1,issues:[{path:"",message:"must be an object"}]};j(t,e)}catch{return C()}if(e.length>0)return{success:!1,issues:e};if(!R(t))return{success:!1,issues:[{path:"",message:"exceeds the Artifact resource budget"}]};let r;try{r=structuredClone(t)}catch{return C()}const a=new M;try{if(!c(r))return C();j(r,a)}catch{return C()}return a.length===0&&!R(r)&&a.push({path:"",message:"exceeds the Artifact resource budget"}),a.length===0?{success:!0,artifact:r}:{success:!1,issues:a}},k=t=>{const e=V(t);if(e.success)return e.artifact;const r=e.issues.map(a=>`${a.path||"artifact"} ${a.message}`).join(", ");throw new Error(`Invalid Make AI Artifact: ${r}`)},N=t=>typeof t=="object"&&t!==null&&!Array.isArray(t),g=(t,e)=>{if(Object.keys(t).some(r=>!e.has(r)))throw new Error("Invalid assistant event: unsupported field")},p=(t,e,r=l.identifierCharacters)=>{const a=typeof t=="string"?$(t,r):0;if(typeof t!="string"||!t.trim()||a>r)throw new Error(`Invalid assistant event: ${e}`);return t},ht=t=>{if(!N(t)||typeof t.type!="string")throw new Error("Invalid assistant event: data");switch(t.type){case"message.start":return g(t,new Set(["type","runId","messageId"])),{type:t.type,runId:p(t.runId,"runId"),messageId:p(t.messageId,"messageId")};case"message.delta":if(g(t,new Set(["type","messageId","delta"])),typeof t.delta!="string")throw new Error("Invalid assistant event: delta");return{type:t.type,messageId:p(t.messageId,"messageId"),delta:t.delta};case"message.replace":return g(t,new Set(["type","messageId","content"])),{type:t.type,messageId:p(t.messageId,"messageId"),content:p(t.content,"content",l.messageCharacters)};case"message.complete":return g(t,new Set(["type","messageId"])),{type:t.type,messageId:p(t.messageId,"messageId")};case"artifact":return g(t,new Set(["type","messageId","artifact"])),{type:t.type,messageId:p(t.messageId,"messageId"),artifact:k(t.artifact)};case"run.progress":return g(t,new Set(["type","runId","message"])),{type:t.type,runId:p(t.runId,"runId"),message:p(t.message,"message",l.messageCharacters)};case"error":if(g(t,new Set(["type","code","message","retryable","requestId"])),typeof t.retryable!="boolean")throw new Error("Invalid assistant event: retryable");return{type:t.type,code:p(t.code,"code"),message:p(t.message,"message",l.messageCharacters),retryable:t.retryable,requestId:t.requestId===void 0?void 0:p(t.requestId,"requestId")};case"run.cancelled":return g(t,new Set(["type","runId"])),{type:t.type,runId:t.runId===void 0?void 0:p(t.runId,"runId")};case"run.complete":return g(t,new Set(["type","runId","threadId"])),{type:t.type,runId:p(t.runId,"runId"),threadId:p(t.threadId,"threadId")};default:throw new Error("Invalid assistant event: unsupported type")}},lt=t=>{try{return ht(t)}catch(e){throw e instanceof Error&&(e.message.startsWith("Invalid assistant event:")||e.message.startsWith("Invalid Make AI Artifact:"))?e:new Error("Invalid assistant event: data")}},gt=t=>{if(!N(t))throw new Error("Invalid assistant conversation snapshot: data");if(g(t,new Set(["threadId","messages"])),!Array.isArray(t.messages)||t.messages.length>l.historyMessages)throw new Error("Invalid assistant conversation snapshot: messages");const e=new Set;let r=0,a=0;return{messages:t.messages.map(n=>{if(!N(n))throw new Error("Invalid assistant conversation snapshot: message");g(n,new Set(["id","role","content","artifacts"]));const f=p(n.id,"messageId");if(e.has(f))throw new Error("Invalid assistant conversation snapshot: duplicate message id");if(e.add(f),n.role!=="assistant"&&n.role!=="user")throw new Error("Invalid assistant conversation snapshot: role");const i=n.role,h=typeof n.content=="string"?$(n.content,l.messageCharacters):0;if(typeof n.content!="string"||h>l.messageCharacters)throw new Error("Invalid assistant conversation snapshot: content");if(r+=$(n.content,l.historyCharacters-r),r>l.historyCharacters)throw new Error("Invalid assistant conversation snapshot: content budget");if(n.artifacts!==void 0&&(!Array.isArray(n.artifacts)||n.artifacts.length>l.artifactsPerRun))throw new Error("Invalid assistant conversation snapshot: artifacts");const y=(n.artifacts??[]).map(k),O=new Set;for(const v of y){if(O.has(v.id))throw new Error("Invalid assistant conversation snapshot: duplicate artifact id");O.add(v.id)}if(a+=y.length,a>l.historyArtifacts)throw new Error("Invalid assistant conversation snapshot: artifact budget");return{id:f,role:i,content:n.content,artifacts:y,status:"complete"}}),status:"idle",threadId:t.threadId===void 0?void 0:p(t.threadId,"threadId")}},ut=t=>t===void 0?{messages:[],status:"idle"}:gt(t),yt=(t,e)=>({...t,error:void 0,progress:void 0,status:"streaming",messages:[...t.messages,{id:e.id,role:"user",content:e.content,artifacts:[],status:"complete"}]}),_=(t,e,r)=>({...t,messages:t.messages.map(a=>a.id===e?r(a):a)}),It=(t,e)=>{switch(e.type){case"message.start":return{...t,activeRunId:e.runId,error:void 0,progress:void 0,status:"streaming",messages:[...t.messages,{id:e.messageId,role:"assistant",content:"",artifacts:[],status:"streaming"}]};case"message.delta":return _(t,e.messageId,r=>({...r,content:`${r.content}${e.delta}`}));case"message.replace":return _(t,e.messageId,r=>({...r,content:e.content}));case"artifact":return _(t,e.messageId,r=>({...r,artifacts:[...r.artifacts,e.artifact]}));case"message.complete":return _(t,e.messageId,r=>({...r,status:"complete"}));case"run.progress":return{...t,progress:{runId:e.runId,message:e.message}};case"error":return{...t,activeRunId:void 0,error:{code:e.code,message:e.message,retryable:e.retryable,requestId:e.requestId},progress:void 0,messages:t.messages.map(r=>r.status==="streaming"?{...r,status:"complete"}:r),status:"error"};case"run.cancelled":return{...t,activeRunId:void 0,progress:void 0,status:"idle",messages:t.messages.map(r=>r.status==="streaming"?{...r,status:"complete"}:r)};case"run.complete":return{...t,activeRunId:void 0,error:void 0,progress:void 0,messages:t.messages.map(r=>r.status==="streaming"?{...r,status:"complete"}:r),status:"idle",threadId:e.threadId}}};exports.MAKE_AI_ARTIFACT_KINDS=K;exports.MAKE_AI_ARTIFACT_LIMITS=o;exports.MAKE_AI_ARTIFACT_SCHEMA_VERSION="1.0";exports.MAKE_AI_CONVERSATION_LIMITS=l;exports.appendUserMessage=yt;exports.countCodePointsUpTo=$;exports.createAssistantConversationState=ut;exports.parseArtifact=k;exports.parseAssistantEvent=lt;exports.reduceAssistantEvent=It;exports.validateArtifact=V;
|