@qfei-design/make-ai-assistant 0.1.3 → 0.1.5
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 +33 -10
- package/README.md +22 -4
- 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/make-ai-assistant.d.ts +3 -1
- package/dist/react.cjs +1 -1
- package/dist/react.mjs +602 -419
- package/dist/sse.cjs +1 -1
- package/dist/sse.mjs +1 -1
- package/dist/styles.css +276 -11
- 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
|
@@ -116,6 +116,8 @@
|
|
|
116
116
|
grid-template-rows: auto auto minmax(0, 1fr) auto;
|
|
117
117
|
height: 100%;
|
|
118
118
|
min-height: 360px;
|
|
119
|
+
min-width: 0;
|
|
120
|
+
position: relative;
|
|
119
121
|
}
|
|
120
122
|
|
|
121
123
|
.make-ai-assistant__header {
|
|
@@ -138,8 +140,9 @@
|
|
|
138
140
|
.make-ai-assistant__header h2 {
|
|
139
141
|
font-size: 15px;
|
|
140
142
|
font-weight: 700;
|
|
141
|
-
letter-spacing:
|
|
143
|
+
letter-spacing: 0;
|
|
142
144
|
line-height: 22px;
|
|
145
|
+
overflow-wrap: anywhere;
|
|
143
146
|
}
|
|
144
147
|
|
|
145
148
|
.make-ai-assistant__header p {
|
|
@@ -147,6 +150,7 @@
|
|
|
147
150
|
font-size: 12px;
|
|
148
151
|
line-height: 18px;
|
|
149
152
|
margin-top: 1px;
|
|
153
|
+
overflow-wrap: anywhere;
|
|
150
154
|
}
|
|
151
155
|
|
|
152
156
|
.make-ai-assistant__avatar {
|
|
@@ -210,10 +214,12 @@
|
|
|
210
214
|
margin: 12px 18px 0;
|
|
211
215
|
padding: 8px 10px;
|
|
212
216
|
border-radius: 10px;
|
|
217
|
+
overflow-wrap: anywhere;
|
|
213
218
|
}
|
|
214
219
|
|
|
215
220
|
.make-ai-assistant__body {
|
|
216
221
|
min-height: 0;
|
|
222
|
+
min-width: 0;
|
|
217
223
|
overflow: auto;
|
|
218
224
|
overscroll-behavior: contain;
|
|
219
225
|
padding: 22px 18px 30px;
|
|
@@ -251,13 +257,38 @@
|
|
|
251
257
|
}
|
|
252
258
|
|
|
253
259
|
.make-ai-assistant__message {
|
|
254
|
-
|
|
255
|
-
display: flex;
|
|
256
|
-
gap: 10px;
|
|
260
|
+
display: block;
|
|
257
261
|
margin-bottom: 24px;
|
|
258
262
|
}
|
|
259
263
|
|
|
260
264
|
.make-ai-assistant__message--user {
|
|
265
|
+
display: flex;
|
|
266
|
+
justify-content: flex-end;
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
.make-ai-assistant__message-turn {
|
|
270
|
+
display: flex;
|
|
271
|
+
flex-direction: column;
|
|
272
|
+
min-width: 0;
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
.make-ai-assistant__message--assistant .make-ai-assistant__message-turn {
|
|
276
|
+
max-width: 100%;
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
.make-ai-assistant__message--user .make-ai-assistant__message-turn {
|
|
280
|
+
align-items: flex-end;
|
|
281
|
+
max-width: min(82%, 330px);
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
.make-ai-assistant__message-identity {
|
|
285
|
+
align-items: center;
|
|
286
|
+
display: flex;
|
|
287
|
+
gap: 8px;
|
|
288
|
+
min-height: 26px;
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
.make-ai-assistant__message--user .make-ai-assistant__message-identity {
|
|
261
292
|
justify-content: flex-end;
|
|
262
293
|
}
|
|
263
294
|
|
|
@@ -269,13 +300,14 @@
|
|
|
269
300
|
}
|
|
270
301
|
|
|
271
302
|
.make-ai-assistant__message--assistant .make-ai-assistant__message-stack {
|
|
272
|
-
|
|
273
|
-
max-width: calc(100% -
|
|
303
|
+
margin-left: 34px;
|
|
304
|
+
max-width: calc(100% - 34px);
|
|
274
305
|
}
|
|
275
306
|
|
|
276
307
|
.make-ai-assistant__message--user .make-ai-assistant__message-stack {
|
|
277
308
|
align-items: flex-end;
|
|
278
|
-
|
|
309
|
+
margin-top: 5px;
|
|
310
|
+
width: 100%;
|
|
279
311
|
}
|
|
280
312
|
|
|
281
313
|
.make-ai-assistant__message-sender {
|
|
@@ -289,11 +321,39 @@
|
|
|
289
321
|
color: color-mix(in srgb, var(--make-ai-internal-accent) 72%, var(--make-ai-internal-text));
|
|
290
322
|
}
|
|
291
323
|
|
|
324
|
+
.make-ai-assistant__avatar--message,
|
|
325
|
+
.make-ai-assistant__user-avatar {
|
|
326
|
+
border-radius: 8px;
|
|
327
|
+
height: 26px;
|
|
328
|
+
width: 26px;
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
.make-ai-assistant__avatar--message svg {
|
|
332
|
+
height: 15px;
|
|
333
|
+
width: 15px;
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
.make-ai-assistant__user-avatar {
|
|
337
|
+
background: var(--make-ai-internal-surface-strong);
|
|
338
|
+
border: 1px solid var(--make-ai-internal-border);
|
|
339
|
+
display: inline-flex;
|
|
340
|
+
flex: 0 0 auto;
|
|
341
|
+
overflow: hidden;
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
.make-ai-assistant__user-avatar img {
|
|
345
|
+
height: 100%;
|
|
346
|
+
object-fit: cover;
|
|
347
|
+
width: 100%;
|
|
348
|
+
}
|
|
349
|
+
|
|
292
350
|
.make-ai-assistant__bubble {
|
|
293
351
|
color: var(--make-ai-internal-text);
|
|
294
352
|
font-size: 14px;
|
|
295
353
|
line-height: 1.7;
|
|
354
|
+
overflow-wrap: anywhere;
|
|
296
355
|
white-space: pre-wrap;
|
|
356
|
+
word-break: break-word;
|
|
297
357
|
}
|
|
298
358
|
|
|
299
359
|
.make-ai-assistant__message--user .make-ai-assistant__bubble {
|
|
@@ -333,6 +393,7 @@
|
|
|
333
393
|
font-size: 13px;
|
|
334
394
|
gap: 4px;
|
|
335
395
|
line-height: 1.55;
|
|
396
|
+
overflow-wrap: anywhere;
|
|
336
397
|
padding: 10px 12px;
|
|
337
398
|
}
|
|
338
399
|
|
|
@@ -346,20 +407,167 @@
|
|
|
346
407
|
align-items: center;
|
|
347
408
|
color: var(--make-ai-internal-text-secondary);
|
|
348
409
|
display: flex;
|
|
410
|
+
flex: 1;
|
|
349
411
|
font-size: 12px;
|
|
350
412
|
gap: 7px;
|
|
351
413
|
line-height: 18px;
|
|
414
|
+
min-width: 0;
|
|
352
415
|
min-height: 24px;
|
|
353
416
|
}
|
|
354
417
|
|
|
355
|
-
.make-ai-assistant__progress > span {
|
|
418
|
+
.make-ai-assistant__progress > span:first-child {
|
|
356
419
|
animation: make-ai-pulse 1.2s ease-in-out infinite;
|
|
357
420
|
background: var(--make-ai-internal-accent);
|
|
358
421
|
border-radius: 50%;
|
|
422
|
+
flex: 0 0 auto;
|
|
359
423
|
height: 7px;
|
|
360
424
|
width: 7px;
|
|
361
425
|
}
|
|
362
426
|
|
|
427
|
+
.make-ai-assistant__progress > span:last-child {
|
|
428
|
+
min-width: 0;
|
|
429
|
+
overflow-wrap: anywhere;
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
.make-ai-assistant__process {
|
|
433
|
+
background: var(--make-ai-internal-surface);
|
|
434
|
+
border: 1px solid color-mix(in srgb, var(--make-ai-internal-border) 88%, transparent);
|
|
435
|
+
border-radius: 10px;
|
|
436
|
+
color: var(--make-ai-internal-text-secondary);
|
|
437
|
+
font-size: 12px;
|
|
438
|
+
line-height: 1.55;
|
|
439
|
+
overflow: hidden;
|
|
440
|
+
overflow-wrap: anywhere;
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
.make-ai-assistant__process summary {
|
|
444
|
+
align-items: center;
|
|
445
|
+
cursor: pointer;
|
|
446
|
+
display: flex;
|
|
447
|
+
gap: 8px;
|
|
448
|
+
list-style: none;
|
|
449
|
+
min-height: 32px;
|
|
450
|
+
padding: 7px 9px;
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
.make-ai-assistant__process summary::-webkit-details-marker {
|
|
454
|
+
display: none;
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
.make-ai-assistant__process summary::after {
|
|
458
|
+
border-bottom: 1.5px solid currentColor;
|
|
459
|
+
border-right: 1.5px solid currentColor;
|
|
460
|
+
content: "";
|
|
461
|
+
flex: 0 0 auto;
|
|
462
|
+
height: 6px;
|
|
463
|
+
opacity: .72;
|
|
464
|
+
transform: rotate(45deg);
|
|
465
|
+
transition: transform 160ms ease;
|
|
466
|
+
width: 6px;
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
.make-ai-assistant__process[open] summary::after {
|
|
470
|
+
transform: rotate(225deg);
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
.make-ai-assistant__process-title {
|
|
474
|
+
flex: 1;
|
|
475
|
+
min-width: 0;
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
.make-ai-assistant__process-count {
|
|
479
|
+
color: color-mix(in srgb, var(--make-ai-internal-text-secondary) 78%, var(--make-ai-internal-bg));
|
|
480
|
+
flex: 0 0 auto;
|
|
481
|
+
font-size: 11px;
|
|
482
|
+
margin-left: auto;
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
.make-ai-assistant__process ol {
|
|
486
|
+
display: grid;
|
|
487
|
+
gap: 6px;
|
|
488
|
+
list-style: none;
|
|
489
|
+
margin: 0;
|
|
490
|
+
padding: 0 10px 10px 12px;
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
.make-ai-assistant__process li {
|
|
494
|
+
align-items: flex-start;
|
|
495
|
+
display: flex;
|
|
496
|
+
gap: 8px;
|
|
497
|
+
min-width: 0;
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
.make-ai-assistant__process li > span:first-child {
|
|
501
|
+
background: var(--make-ai-internal-border);
|
|
502
|
+
border-radius: 50%;
|
|
503
|
+
flex: 0 0 auto;
|
|
504
|
+
height: 6px;
|
|
505
|
+
margin-top: 7px;
|
|
506
|
+
width: 6px;
|
|
507
|
+
}
|
|
508
|
+
|
|
509
|
+
.make-ai-assistant__process li[data-step-active] > span:first-child {
|
|
510
|
+
background: var(--make-ai-internal-accent);
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
.make-ai-assistant__process li > span:last-child {
|
|
514
|
+
min-width: 0;
|
|
515
|
+
overflow-wrap: anywhere;
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
.make-ai-assistant__reply-actions {
|
|
519
|
+
align-items: center;
|
|
520
|
+
color: var(--make-ai-internal-text-secondary);
|
|
521
|
+
display: flex;
|
|
522
|
+
flex-wrap: wrap;
|
|
523
|
+
gap: 4px 10px;
|
|
524
|
+
min-height: 24px;
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
.make-ai-assistant__reply-actions button {
|
|
528
|
+
background: transparent;
|
|
529
|
+
border: 0;
|
|
530
|
+
border-radius: 6px;
|
|
531
|
+
color: inherit;
|
|
532
|
+
cursor: pointer;
|
|
533
|
+
font-size: 12px;
|
|
534
|
+
font-weight: 600;
|
|
535
|
+
padding: 3px 0;
|
|
536
|
+
}
|
|
537
|
+
|
|
538
|
+
.make-ai-assistant__reply-actions button:hover {
|
|
539
|
+
color: var(--make-ai-internal-accent);
|
|
540
|
+
}
|
|
541
|
+
|
|
542
|
+
.make-ai-assistant__reply-feedback {
|
|
543
|
+
color: color-mix(in srgb, var(--make-ai-internal-success) 78%, var(--make-ai-internal-text-secondary));
|
|
544
|
+
font-size: 12px;
|
|
545
|
+
}
|
|
546
|
+
|
|
547
|
+
.make-ai-assistant__reply-feedback[data-copy-status="error"] {
|
|
548
|
+
color: var(--make-ai-internal-danger);
|
|
549
|
+
}
|
|
550
|
+
|
|
551
|
+
.make-ai-assistant__back-to-latest {
|
|
552
|
+
background: var(--make-ai-internal-bg);
|
|
553
|
+
border: 1px solid color-mix(in srgb, var(--make-ai-internal-accent) 26%, var(--make-ai-internal-border));
|
|
554
|
+
border-radius: 999px;
|
|
555
|
+
bottom: 94px;
|
|
556
|
+
box-shadow: 0 8px 20px rgb(30 31 43 / 10%);
|
|
557
|
+
color: var(--make-ai-internal-accent);
|
|
558
|
+
cursor: pointer;
|
|
559
|
+
font-size: 12px;
|
|
560
|
+
font-weight: 600;
|
|
561
|
+
padding: 7px 11px;
|
|
562
|
+
position: absolute;
|
|
563
|
+
right: 18px;
|
|
564
|
+
z-index: 2;
|
|
565
|
+
}
|
|
566
|
+
|
|
567
|
+
.make-ai-assistant__back-to-latest:hover {
|
|
568
|
+
background: var(--make-ai-internal-accent-soft);
|
|
569
|
+
}
|
|
570
|
+
|
|
363
571
|
.make-ai-assistant__retry {
|
|
364
572
|
align-self: flex-start;
|
|
365
573
|
background: transparent;
|
|
@@ -506,7 +714,7 @@
|
|
|
506
714
|
font-size: 30px;
|
|
507
715
|
font-variant-numeric: tabular-nums;
|
|
508
716
|
font-weight: 700;
|
|
509
|
-
letter-spacing:
|
|
717
|
+
letter-spacing: 0;
|
|
510
718
|
line-height: 1.25;
|
|
511
719
|
margin-top: 8px;
|
|
512
720
|
}
|
|
@@ -628,6 +836,60 @@ button.make-ai-artifact__record:hover { background: var(--make-ai-internal-accen
|
|
|
628
836
|
to { opacity: 1; transform: translateX(0); }
|
|
629
837
|
}
|
|
630
838
|
|
|
839
|
+
@container (max-width: 360px) {
|
|
840
|
+
.make-ai-assistant__header {
|
|
841
|
+
gap: 8px;
|
|
842
|
+
grid-template-columns: auto minmax(0, 1fr) auto;
|
|
843
|
+
min-height: 64px;
|
|
844
|
+
padding: 12px 14px;
|
|
845
|
+
}
|
|
846
|
+
|
|
847
|
+
.make-ai-assistant__privacy-note {
|
|
848
|
+
align-items: flex-start;
|
|
849
|
+
margin: 10px 14px 0;
|
|
850
|
+
}
|
|
851
|
+
|
|
852
|
+
.make-ai-assistant__body {
|
|
853
|
+
padding: 18px 14px 28px;
|
|
854
|
+
}
|
|
855
|
+
|
|
856
|
+
.make-ai-assistant__message {
|
|
857
|
+
margin-bottom: 22px;
|
|
858
|
+
}
|
|
859
|
+
|
|
860
|
+
.make-ai-assistant__message--user .make-ai-assistant__message-turn {
|
|
861
|
+
max-width: 100%;
|
|
862
|
+
}
|
|
863
|
+
|
|
864
|
+
.make-ai-assistant__message--assistant .make-ai-assistant__message-stack {
|
|
865
|
+
margin-left: 32px;
|
|
866
|
+
max-width: calc(100% - 32px);
|
|
867
|
+
}
|
|
868
|
+
|
|
869
|
+
.make-ai-assistant__suggestions {
|
|
870
|
+
display: grid;
|
|
871
|
+
grid-template-columns: minmax(0, 1fr);
|
|
872
|
+
overflow: visible;
|
|
873
|
+
}
|
|
874
|
+
|
|
875
|
+
.make-ai-assistant__suggestions button {
|
|
876
|
+
text-align: left;
|
|
877
|
+
white-space: normal;
|
|
878
|
+
}
|
|
879
|
+
|
|
880
|
+
.make-ai-assistant__composer-region {
|
|
881
|
+
padding: 10px 14px 9px;
|
|
882
|
+
}
|
|
883
|
+
|
|
884
|
+
.make-ai-assistant__back-to-latest {
|
|
885
|
+
bottom: 104px;
|
|
886
|
+
left: 50%;
|
|
887
|
+
right: auto;
|
|
888
|
+
transform: translateX(-50%);
|
|
889
|
+
white-space: nowrap;
|
|
890
|
+
}
|
|
891
|
+
}
|
|
892
|
+
|
|
631
893
|
@media (max-width: 560px) {
|
|
632
894
|
.make-ai-assistant__drawer { width: 100vw; }
|
|
633
895
|
.make-ai-assistant__launcher { bottom: 20px; right: 20px; }
|
|
@@ -652,9 +914,12 @@ button.make-ai-artifact__record:hover { background: var(--make-ai-internal-accen
|
|
|
652
914
|
@media (prefers-reduced-motion: reduce) {
|
|
653
915
|
.make-ai-assistant__drawer,
|
|
654
916
|
.make-ai-assistant__launcher-orbit,
|
|
655
|
-
.make-ai-assistant__progress > span,
|
|
917
|
+
.make-ai-assistant__progress > span:first-child,
|
|
656
918
|
.make-ai-assistant__typing span {
|
|
657
919
|
animation: none;
|
|
658
920
|
}
|
|
659
|
-
.make-ai-assistant__launcher
|
|
921
|
+
.make-ai-assistant__launcher,
|
|
922
|
+
.make-ai-assistant__process summary::after {
|
|
923
|
+
transition: none;
|
|
924
|
+
}
|
|
660
925
|
}
|
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;
|