pika-plugin-ai 0.6.8
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/index.css +953 -0
- package/dist/index.css.map +1 -0
- package/dist/index.d.mts +261 -0
- package/dist/index.d.ts +261 -0
- package/dist/index.js +1865 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +1846 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +59 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../styles.css"],"sourcesContent":["/* ============================================================\n Color tokens (subset used by plugin-ai)\n ============================================================ */\n:root {\n --puck-color-azure-01: #00175d;\n --puck-color-azure-02: #002c77;\n --puck-color-azure-03: #014292;\n --puck-color-azure-04: #0158ad;\n --puck-color-azure-05: #3479be;\n --puck-color-azure-06: #6499cf;\n --puck-color-azure-08: #abc7e5;\n --puck-color-azure-10: #e7eef7;\n --puck-color-azure-11: #f3f6fb;\n --puck-color-azure-12: #f7faff;\n --puck-color-green-04: #0c680c;\n --puck-color-green-06: #2faa53;\n --puck-color-grey-01: #181818;\n --puck-color-grey-02: #292929;\n --puck-color-grey-03: #404040;\n --puck-color-grey-04: #5a5a5a;\n --puck-color-grey-05: #767676;\n --puck-color-grey-06: #949494;\n --puck-color-grey-07: #ababab;\n --puck-color-grey-08: #c3c3c3;\n --puck-color-grey-09: #dcdcdc;\n --puck-color-grey-10: #efefef;\n --puck-color-grey-11: #f5f5f5;\n --puck-color-grey-12: #fafafa;\n --puck-color-red-02: #6a0a10;\n --puck-color-red-03: #8a1422;\n --puck-color-red-04: #ac1f35;\n --puck-color-red-05: #bf5366;\n --puck-color-black: #000000;\n --puck-color-white: #ffffff;\n --puck-font-size-xxxs: 0.75rem;\n --puck-font-size-xxs: 0.875rem;\n --puck-font-size-xs: 1rem;\n --puck-font-size-s: 1.125rem;\n --puck-font-size-m: 1.3125rem;\n --puck-font-size-base: var(--puck-font-size-xs);\n --line-height-s: 1.333;\n --line-height-m: 1.5;\n}\n\n/* ============================================================\n Loader\n ============================================================ */\n\n@keyframes puck-ai-loader-spin {\n 0% { transform: rotate(0deg) scale(1); }\n 50% { transform: rotate(180deg) scale(0.8); }\n 100% { transform: rotate(360deg) scale(1); }\n}\n\n.puck-ai-loader {\n background: transparent;\n border-radius: 100%;\n border: 2px solid currentColor;\n border-bottom-color: transparent;\n display: inline-block;\n animation: puck-ai-loader-spin 1s 0s infinite linear;\n animation-fill-mode: both;\n}\n\n/* ============================================================\n Icon button\n ============================================================ */\n\n.puck-ai-icon-button {\n appearance: none;\n background: transparent;\n border: none;\n border-radius: 4px;\n color: var(--puck-color-grey-08);\n padding: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n}\n\n.puck-ai-icon-button:hover {\n background-color: var(--puck-color-azure-11);\n color: var(--puck-color-azure-04);\n}\n\n/* ============================================================\n Chat outer panel (outer wrapper)\n ============================================================ */\n\n.puck-ai-chat {\n background: white;\n height: 100%;\n display: flex;\n flex-direction: column;\n text-align: left;\n}\n\n.puck-ai-chat-header {\n align-items: center;\n display: flex;\n gap: 4px;\n padding: 4px 8px 4px 16px;\n font-weight: 600;\n border-bottom: 1px solid var(--puck-color-grey-09);\n flex-shrink: 0;\n}\n\n.puck-ai-chat-header-title {\n flex: 1;\n}\n\n@media (min-width: 638px) {\n .puck-ai-chat-header {\n padding: 12px 8px 12px 16px;\n }\n}\n\n/* Placeholder (shown when no messages, inside the chat body default slot) */\n.puck-ai-chat-placeholder {\n align-items: center;\n box-sizing: border-box;\n color: var(--puck-color-grey-06);\n display: none;\n justify-content: center;\n flex-direction: column;\n height: 100%;\n text-align: center;\n padding: 32px;\n gap: 8px;\n}\n\n@media (min-width: 638px) {\n .puck-ai-chat-placeholder {\n display: flex;\n }\n}\n\n.puck-ai-chat-actions {\n display: flex;\n gap: 8px;\n justify-content: center;\n flex-wrap: wrap;\n margin-top: 4px;\n}\n\n.puck-ai-chat-action,\n.puck-ai-chat-action-outlined {\n border: 1px solid var(--puck-color-azure-04);\n border-radius: 16px;\n padding: 4px 12px;\n font-size: 12px;\n cursor: pointer;\n}\n\n.puck-ai-chat-action {\n background: var(--puck-color-azure-04);\n color: white;\n}\n\n.puck-ai-chat-action:hover {\n opacity: 0.8;\n}\n\n.puck-ai-chat-action-outlined {\n background: transparent;\n color: var(--puck-color-azure-04);\n}\n\n.puck-ai-chat-action-outlined:hover {\n background: var(--puck-color-azure-11);\n}\n\n/* ============================================================\n ChatBody\n ============================================================ */\n\n.puck-ai-chatbody {\n --chat-background-color: white;\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n}\n\n.puck-ai-chatbody-inner {\n background-color: var(--chat-background-color);\n display: flex;\n flex-direction: column;\n position: relative;\n /* flex: 1 + min-height: 0 allows the inner to shrink and scroll correctly */\n flex: 1;\n min-height: 0;\n}\n\n.puck-ai-chatbody--has-messages .puck-ai-chatbody-messages {\n display: flex;\n flex-direction: column-reverse;\n padding: 16px;\n overflow: auto;\n flex: 1;\n min-height: 0;\n}\n\n.puck-ai-chatbody-messages {\n flex: 1;\n min-height: 0;\n overflow: auto;\n}\n\n.puck-ai-chatbody-form {\n background-color: white;\n padding: 16px;\n flex-shrink: 0;\n}\n\n.puck-ai-chatbody--hide-input .puck-ai-chatbody-form {\n display: none;\n}\n\n.puck-ai-chatbody--has-messages .puck-ai-chatbody-form {\n border-top: 1px solid var(--puck-color-grey-09);\n}\n\n@media (min-width: 638px) {\n .puck-ai-chatbody-form {\n border-top: 1px solid var(--puck-color-grey-09);\n }\n}\n\n.puck-ai-chatbody-example-prompts {\n align-items: center;\n display: flex;\n flex-wrap: nowrap;\n gap: 6px;\n padding-top: 16px;\n width: 100%;\n overflow-x: auto;\n}\n\n.puck-ai-chatbody-example-prompt {\n align-items: center;\n background: white;\n border: 1px solid var(--puck-color-grey-09);\n border-radius: 48px;\n cursor: pointer;\n display: flex;\n gap: 4px;\n font-size: var(--puck-font-size-xxxs);\n justify-content: center;\n padding: 6px 12px;\n text-wrap: nowrap;\n text-decoration: none;\n color: inherit;\n}\n\n.puck-ai-chatbody-example-prompt:hover {\n background: var(--puck-color-azure-11);\n border-color: var(--puck-color-azure-08);\n color: var(--puck-color-azure-04);\n}\n\n.puck-ai-chatbody-example-prompt-arrow {\n display: flex;\n margin-left: auto;\n}\n\n.puck-ai-chatbody-default {\n overflow-y: auto;\n flex-grow: 1;\n min-height: 0;\n}\n\n.puck-ai-chatbody--has-messages .puck-ai-chatbody-default {\n /* Remove from layout entirely so it doesn't steal height from the messages area */\n display: none;\n}\n\n.puck-ai-chatbody-loader {\n padding: 16px;\n padding-top: 0;\n}\n\n.puck-ai-chatbody-error {\n align-items: center;\n display: flex;\n gap: 8px;\n font-size: var(--puck-font-size-xxs);\n margin: 16px;\n}\n\n.puck-ai-chatbody-error-label {\n color: var(--puck-color-red-04);\n}\n\n.puck-ai-chatbody-error-action {\n margin-left: auto;\n}\n\n/* ============================================================\n ChatMessage\n ============================================================ */\n\n.puck-ai-chat-message {\n font-size: var(--puck-font-size-xs);\n line-height: var(--line-height-s);\n overflow-wrap: break-word;\n}\n\n.puck-ai-chat-message--user-role .puck-ai-chat-message-text {\n background: var(--puck-color-azure-10);\n border-radius: 16px;\n color: var(--puck-color-grey-03);\n margin-left: 24px;\n margin-bottom: 8px;\n margin-top: 8px;\n padding: 12px 16px;\n}\n\n.puck-ai-chat-message ul,\n.puck-ai-chat-message ol {\n list-style: decimal;\n margin: 0;\n margin-bottom: 12px;\n margin-top: 12px;\n padding-left: 32px;\n}\n\n.puck-ai-chat-message li {\n margin-bottom: 8px;\n margin-top: 8px;\n padding-left: 8px;\n}\n\n.puck-ai-chat-message h1,\n.puck-ai-chat-message h2,\n.puck-ai-chat-message h3,\n.puck-ai-chat-message h4,\n.puck-ai-chat-message h5,\n.puck-ai-chat-message h6 {\n font-weight: 600;\n}\n\n.puck-ai-chat-message p {\n margin-bottom: 8px;\n margin-top: 8px;\n}\n\n.puck-ai-chat-message--user-role .puck-ai-chat-message-text > *:first-of-type {\n margin-top: 0;\n}\n\n.puck-ai-chat-message--user-role .puck-ai-chat-message-text > *:last-of-type {\n margin-bottom: 0;\n}\n\n.puck-ai-chat-message a {\n color: var(--puck-color-azure-04);\n font-weight: 600;\n text-decoration: none;\n}\n\n.puck-ai-chat-message a:hover {\n color: var(--puck-color-azure-05);\n}\n\n.puck-ai-chat-message hr {\n border-top: none;\n border-bottom-color: var(--puck-color-grey-09);\n margin-bottom: 16px;\n margin-top: 16px;\n}\n\n.puck-ai-chat-message blockquote {\n margin-bottom: 8px;\n margin-top: 8px;\n margin-left: 0;\n border-left: 2px solid var(--puck-color-grey-09);\n padding-left: 16px;\n}\n\n.puck-ai-chat-message-data {\n background: var(--puck-color-grey-12);\n border: 1px solid var(--puck-color-grey-08);\n border-radius: 16px;\n color: var(--puck-color-grey-05);\n margin-right: 24px;\n padding: 8px 12px;\n margin-top: 4px;\n margin-bottom: 4px;\n}\n\n.puck-ai-chat-message-data-inner {\n align-items: center;\n display: flex;\n gap: 8px;\n}\n\n.puck-ai-chat-message-data-icon {\n display: flex;\n}\n\n.puck-ai-chat-message-file {\n margin-bottom: 8px;\n margin-top: 8px;\n}\n\n.puck-ai-chat-message-file--user {\n margin-left: 24px;\n}\n\n.puck-ai-chat-message-file-image {\n border-radius: 12px;\n display: block;\n max-height: 220px;\n max-width: 100%;\n object-fit: contain;\n}\n\n.puck-ai-chat-message-file--user .puck-ai-chat-message-file-image {\n background: var(--puck-color-azure-10);\n border: 1px solid var(--puck-color-azure-08);\n}\n\n.puck-ai-chat-message-file-caption {\n color: var(--puck-color-grey-05);\n display: block;\n font-size: var(--puck-font-size-xxxs);\n margin-top: 4px;\n}\n\n.puck-ai-chat-message-file--document {\n background: var(--puck-color-azure-10);\n border-radius: 12px;\n padding: 8px 12px;\n}\n\n.puck-ai-chat-message-file--document a {\n word-break: break-all;\n}\n\n.puck-ai-chat-message-reasoning {\n background: var(--puck-color-grey-11);\n border: 1px solid var(--puck-color-grey-09);\n border-radius: 10px;\n color: var(--puck-color-grey-04);\n font-size: var(--puck-font-size-xxxs);\n margin-bottom: 8px;\n margin-top: 8px;\n padding: 6px 10px;\n}\n\n.puck-ai-chat-message-reasoning-summary {\n cursor: pointer;\n font-weight: 600;\n list-style: none;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.puck-ai-chat-message-reasoning-summary::-webkit-details-marker {\n display: none;\n}\n\n.puck-ai-chat-message-reasoning-streaming {\n display: inline-flex;\n align-items: center;\n}\n\n.puck-ai-chat-message-reasoning-body {\n border-top: 1px solid var(--puck-color-grey-09);\n margin-top: 8px;\n padding-top: 8px;\n}\n\n.puck-ai-chat-message-reasoning-body p {\n margin: 0 0 6px;\n}\n\n.puck-ai-chat-message-source {\n color: var(--puck-color-grey-05);\n font-size: var(--puck-font-size-xxxs);\n margin-bottom: 6px;\n margin-top: 6px;\n}\n\n.puck-ai-chat-message-source-meta {\n color: var(--puck-color-grey-07);\n margin-left: 6px;\n}\n\n.puck-ai-chat-message-step {\n border-top: 1px dashed var(--puck-color-grey-09);\n margin: 8px 0;\n opacity: 0.6;\n}\n\n.puck-ai-chat-message-tool {\n background: var(--puck-color-grey-12);\n border: 1px solid var(--puck-color-grey-09);\n border-radius: 12px;\n margin-bottom: 8px;\n margin-top: 8px;\n margin-right: 24px;\n padding: 8px 12px;\n}\n\n.puck-ai-chat-message-tool-header {\n align-items: center;\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n}\n\n.puck-ai-chat-message-tool-icon {\n color: var(--puck-color-grey-06);\n display: flex;\n}\n\n.puck-ai-chat-message-tool-name {\n font-weight: 600;\n color: var(--puck-color-grey-03);\n}\n\n.puck-ai-chat-message-tool-state {\n align-items: center;\n color: var(--puck-color-grey-05);\n display: inline-flex;\n font-size: var(--puck-font-size-xxxs);\n gap: 6px;\n margin-left: auto;\n}\n\n.puck-ai-chat-message-tool-error {\n color: var(--puck-color-red-04);\n font-size: var(--puck-font-size-xxxs);\n margin-top: 6px;\n}\n\n.puck-ai-chat-message-tool-details {\n margin-top: 8px;\n}\n\n.puck-ai-chat-message-tool-details summary {\n color: var(--puck-color-azure-04);\n cursor: pointer;\n font-size: var(--puck-font-size-xxxs);\n font-weight: 600;\n list-style: none;\n}\n\n.puck-ai-chat-message-tool-details summary::-webkit-details-marker {\n display: none;\n}\n\n.puck-ai-chat-message-tool-pre {\n background: var(--puck-color-grey-11);\n border-radius: 6px;\n font-size: 11px;\n line-height: 1.45;\n margin-top: 6px;\n max-height: 200px;\n overflow: auto;\n padding: 8px;\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n.puck-ai-chat-message-data-summary {\n color: var(--puck-color-grey-05);\n font-size: var(--puck-font-size-xxxs);\n margin-bottom: 6px;\n margin-top: 6px;\n}\n\n.puck-ai-chat-message-data-raw {\n margin-bottom: 6px;\n margin-top: 6px;\n}\n\n.puck-ai-chat-message-data-raw summary {\n color: var(--puck-color-grey-05);\n cursor: pointer;\n font-size: var(--puck-font-size-xxxs);\n list-style: none;\n}\n\n.puck-ai-chat-message-data-raw summary::-webkit-details-marker {\n display: none;\n}\n\n/* ============================================================\n Target component banner\n ============================================================ */\n\n.puck-ai-target-banner {\n align-items: center;\n background: var(--puck-color-azure-11);\n border: 1px solid var(--puck-color-azure-09);\n border-radius: 6px;\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n margin-bottom: 8px;\n padding: 6px 10px;\n font-size: var(--puck-font-size-xxxs);\n line-height: 1.4;\n}\n\n.puck-ai-target-banner-label {\n color: var(--puck-color-azure-05);\n font-weight: 600;\n flex-shrink: 0;\n}\n\n.puck-ai-target-banner-name {\n color: var(--puck-color-grey-02);\n font-weight: 600;\n}\n\n.puck-ai-target-banner-id {\n color: var(--puck-color-grey-05);\n font-family: var(--puck-font-family-monospaced, monospace);\n font-size: 11px;\n background: var(--puck-color-azure-10);\n border-radius: 3px;\n padding: 1px 4px;\n /* Truncate very long IDs */\n max-width: 140px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.puck-ai-target-banner-clear {\n appearance: none;\n background: transparent;\n border: none;\n border-radius: 50%;\n color: var(--puck-color-grey-06);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 16px;\n line-height: 1;\n margin-left: auto;\n padding: 0 2px;\n flex-shrink: 0;\n}\n\n.puck-ai-target-banner-clear:hover {\n color: var(--puck-color-grey-02);\n}\n\n/* ============================================================\n PromptForm\n ============================================================ */\n\n.puck-ai-prompt-form {\n --radius: 9px;\n background-color: var(--puck-color-grey-09);\n border-radius: var(--radius);\n width: 100%;\n}\n\n.puck-ai-prompt-form-inner {\n border-radius: var(--radius);\n padding: 1px;\n position: relative;\n}\n\n.puck-ai-prompt-form--dark {\n background-color: var(--puck-color-grey-02);\n box-shadow: none;\n}\n\n@keyframes puck-ai-glow-loop {\n 0% { transform: translate(-50%, -50%) rotate(0deg); }\n 100% { transform: translate(-50%, -50%) rotate(360deg); }\n}\n\n.puck-ai-prompt-form--glow .puck-ai-prompt-form-glow {\n border: 2px solid transparent;\n border-radius: var(--radius);\n -webkit-mask: linear-gradient(transparent, transparent), linear-gradient(white, white);\n mask: linear-gradient(transparent, transparent), linear-gradient(white, white);\n -webkit-mask-clip: padding-box, border-box;\n mask-clip: padding-box, border-box;\n -webkit-mask-composite: intersect;\n mask-composite: intersect;\n pointer-events: none;\n position: absolute;\n inset: -1px;\n z-index: 0;\n overflow: hidden;\n}\n\n.puck-ai-prompt-form--glow .puck-ai-prompt-form-glow::after {\n background: radial-gradient(circle at center, var(--puck-color-azure-06), transparent 50%);\n content: \"\";\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n aspect-ratio: 1;\n width: 200%;\n animation: puck-ai-glow-loop 3s linear infinite;\n}\n\n.puck-ai-prompt-form-form-inner {\n background-color: white;\n border-radius: 8px;\n position: relative;\n}\n\n.puck-ai-prompt-form-input {\n background-color: transparent;\n border: none;\n display: block;\n resize: none;\n color: var(--puck-color-grey-03);\n padding: 12px 16px;\n padding-left: 16px;\n padding-right: 8px;\n padding-bottom: 4px;\n font-family: inherit;\n font-size: var(--puck-font-size-xs);\n line-height: var(--line-height-s);\n width: 100%;\n box-sizing: border-box;\n}\n\n.puck-ai-prompt-form-input:focus {\n outline: none;\n}\n\n.puck-ai-prompt-form-form-inner:has(.puck-ai-prompt-form-input:focus) {\n outline: 2px solid var(--puck-color-azure-04);\n}\n\n.puck-ai-prompt-form--dark .puck-ai-prompt-form-input {\n background-color: var(--puck-color-grey-01);\n color: var(--puck-color-grey-08);\n}\n\n.puck-ai-prompt-form--is-disabled .puck-ai-prompt-form-input {\n background-color: var(--puck-color-grey-12);\n cursor: not-allowed;\n}\n\n.puck-ai-prompt-form-actions {\n align-items: flex-end;\n cursor: text;\n display: flex;\n gap: 8px;\n bottom: 0;\n left: 0;\n right: 0;\n padding: 6px;\n}\n\n.puck-ai-prompt-form-actions-left {\n align-items: center;\n cursor: auto;\n display: flex;\n padding-left: 8px;\n}\n\n.puck-ai-prompt-form-actions-right {\n cursor: auto;\n margin-left: auto;\n}\n\n.puck-ai-prompt-form-action-submit {\n background: var(--puck-color-azure-04);\n border-radius: 48px;\n border: 0;\n color: white;\n display: flex;\n align-items: center;\n justify-content: center;\n align-self: flex-end;\n padding: 4px;\n pointer-events: auto;\n cursor: pointer;\n}\n\n.puck-ai-prompt-form-action-submit:hover {\n background: var(--puck-color-azure-05);\n}\n\n.puck-ai-prompt-form--is-disabled .puck-ai-prompt-form-action-submit {\n background-color: var(--puck-color-grey-06);\n cursor: not-allowed;\n}\n\n.puck-ai-prompt-form--is-loading .puck-ai-prompt-form-action-submit {\n background-color: var(--puck-color-azure-06);\n cursor: not-allowed;\n}\n\n/* ─── Image attachment button ──────────────────────────────────────────────── */\n\n.puck-ai-image-attach-btn {\n align-items: center;\n background: transparent;\n border: 1px solid transparent;\n border-radius: 6px;\n color: var(--puck-color-grey-05);\n cursor: pointer;\n display: flex;\n justify-content: center;\n padding: 5px;\n transition: background 80ms, color 80ms, border-color 80ms;\n}\n\n.puck-ai-image-attach-btn:hover {\n background: var(--puck-color-grey-11);\n border-color: var(--puck-color-grey-09);\n color: var(--puck-color-grey-02);\n}\n\n.puck-ai-image-attach-btn:disabled {\n color: var(--puck-color-grey-08);\n cursor: not-allowed;\n}\n\n/* ─── Drag-over state ───────────────────────────────────────────────────────── */\n\n.puck-ai-prompt-form--drag-over .puck-ai-prompt-form-form-inner {\n border-color: var(--puck-color-azure-05);\n background: var(--puck-color-azure-12);\n outline: 2px dashed var(--puck-color-azure-05);\n}\n\n/* ─── Image thumbnails strip ────────────────────────────────────────────────── */\n\n.puck-ai-image-thumbnails {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n padding: 8px 10px 0;\n}\n\n.puck-ai-image-thumbnail {\n position: relative;\n border-radius: 6px;\n overflow: hidden;\n width: 56px;\n height: 56px;\n border: 1px solid var(--puck-color-grey-09);\n flex-shrink: 0;\n}\n\n.puck-ai-image-thumbnail img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n display: block;\n}\n\n.puck-ai-image-thumbnail-remove {\n position: absolute;\n top: 2px;\n right: 2px;\n background: rgba(0, 0, 0, 0.55);\n border: none;\n border-radius: 50%;\n color: #fff;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n padding: 0;\n opacity: 0;\n transition: opacity 120ms;\n}\n\n.puck-ai-image-thumbnail:hover .puck-ai-image-thumbnail-remove {\n opacity: 1;\n}\n\n/* ============================================================\n Toggle switch\n ============================================================ */\n\n.puck-ai-toggle {\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n height: 20px;\n position: relative;\n width: 36px;\n}\n\n.puck-ai-toggle-input {\n height: 0;\n opacity: 0;\n position: absolute;\n width: 0;\n}\n\n.puck-ai-toggle-slider {\n background: var(--puck-color-grey-08);\n border-radius: 20px;\n inset: 0;\n position: absolute;\n transition: background 120ms;\n}\n\n.puck-ai-toggle-slider::after {\n background: white;\n border-radius: 50%;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);\n content: '';\n height: 16px;\n left: 2px;\n position: absolute;\n top: 2px;\n transition: left 120ms;\n width: 16px;\n}\n\n.puck-ai-toggle-input:checked + .puck-ai-toggle-slider {\n background: var(--puck-color-azure-04);\n}\n\n.puck-ai-toggle-input:checked + .puck-ai-toggle-slider::after {\n left: 18px;\n}\n\n.puck-ai-toggle-input:focus-visible + .puck-ai-toggle-slider {\n outline: 2px solid var(--puck-color-azure-04);\n outline-offset: 2px;\n}\n\n.puck-ai-toggle--disabled {\n cursor: not-allowed;\n opacity: 0.45;\n}\n\n.puck-ai-toggle--disabled .puck-ai-toggle-input:disabled + .puck-ai-toggle-slider {\n background: var(--puck-color-grey-08);\n}\n\n/* ============================================================\n Settings panel\n ============================================================ */\n\n.puck-ai-settings-scroll {\n flex: 1;\n overflow-y: auto;\n min-height: 0;\n}\n\n.puck-ai-settings {\n display: flex;\n flex-direction: column;\n gap: 24px;\n padding: 16px;\n}\n\n.puck-ai-settings-section {\n display: flex;\n flex-direction: column;\n}\n\n.puck-ai-settings-section-title {\n color: var(--puck-color-grey-05);\n font-size: 11px;\n font-weight: 600;\n letter-spacing: 0.06em;\n margin-bottom: 4px;\n text-transform: uppercase;\n}\n\n.puck-ai-settings-row {\n align-items: center;\n border-bottom: 1px solid var(--puck-color-grey-10);\n display: flex;\n gap: 12px;\n justify-content: space-between;\n padding: 10px 0;\n}\n\n.puck-ai-settings-row:last-child {\n border-bottom: none;\n}\n\n.puck-ai-settings-row--column {\n align-items: flex-start;\n flex-direction: column;\n gap: 8px;\n}\n\n.puck-ai-settings-label {\n color: var(--puck-color-grey-02);\n cursor: pointer;\n display: flex;\n flex-direction: column;\n font-size: var(--puck-font-size-xxxs);\n font-weight: 500;\n gap: 2px;\n}\n\n.puck-ai-settings-hint {\n color: var(--puck-color-grey-06);\n font-size: 11px;\n font-weight: 400;\n}\n\n.puck-ai-settings-select {\n appearance: none;\n background-color: var(--puck-color-grey-11);\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%23767676'/%3E%3C/svg%3E\");\n background-position: right 8px center;\n background-repeat: no-repeat;\n border: 1px solid var(--puck-color-grey-09);\n border-radius: 6px;\n color: var(--puck-color-grey-02);\n cursor: pointer;\n flex-shrink: 0;\n font-family: inherit;\n font-size: var(--puck-font-size-xxxs);\n padding: 5px 28px 5px 8px;\n}\n\n.puck-ai-settings-select:focus {\n outline: 2px solid var(--puck-color-azure-04);\n outline-offset: 2px;\n}\n\n.puck-ai-settings-input-wrap {\n align-items: center;\n background: var(--puck-color-grey-12);\n border: 1px solid var(--puck-color-grey-09);\n border-radius: 6px;\n display: flex;\n overflow: hidden;\n width: 100%;\n}\n\n.puck-ai-settings-input-wrap:focus-within {\n outline: 2px solid var(--puck-color-azure-04);\n outline-offset: 0;\n}\n\n.puck-ai-settings-input {\n background: transparent;\n border: none;\n color: var(--puck-color-grey-02);\n flex: 1;\n font-family: var(--puck-font-family-monospaced, monospace);\n font-size: 11px;\n min-width: 0;\n padding: 7px 8px;\n}\n\n.puck-ai-settings-input:focus {\n outline: none;\n}\n\n.puck-ai-settings-input-action {\n align-items: center;\n appearance: none;\n background: transparent;\n border: none;\n border-left: 1px solid var(--puck-color-grey-09);\n color: var(--puck-color-grey-06);\n cursor: pointer;\n display: flex;\n flex-shrink: 0;\n justify-content: center;\n padding: 7px 8px;\n}\n\n.puck-ai-settings-input-action:hover {\n background: var(--puck-color-grey-11);\n color: var(--puck-color-grey-02);\n}\n\n.puck-ai-settings-link {\n color: var(--puck-color-azure-04);\n font-size: 11px;\n text-decoration: none;\n}\n\n.puck-ai-settings-link:hover {\n color: var(--puck-color-azure-05);\n text-decoration: underline;\n}\n\n.puck-ai-settings-clear-chat {\n align-items: center;\n align-self: flex-start;\n appearance: none;\n background: var(--puck-color-white);\n border: 1px solid var(--puck-color-red-04);\n border-radius: 6px;\n color: var(--puck-color-red-04);\n cursor: pointer;\n display: inline-flex;\n font-family: inherit;\n font-size: var(--puck-font-size-xxxs);\n font-weight: 600;\n gap: 8px;\n margin-top: 4px;\n padding: 8px 12px;\n}\n\n.puck-ai-settings-clear-chat:hover:not(:disabled) {\n background: var(--puck-color-grey-12);\n}\n\n.puck-ai-settings-clear-chat:focus-visible {\n outline: 2px solid var(--puck-color-azure-04);\n outline-offset: 2px;\n}\n\n.puck-ai-settings-clear-chat:disabled {\n cursor: not-allowed;\n opacity: 0.45;\n}\n"],"mappings":"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","names":[]}
|
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { PuckAction, Data, Config, Plugin } from 'pika-editor-core';
|
|
3
|
+
import { CreateUIMessage, UIMessage, LanguageModelUsage, DataUIPart, ChatStatus } from 'ai';
|
|
4
|
+
|
|
5
|
+
interface AttachedImage {
|
|
6
|
+
/** Unique key for React lists */
|
|
7
|
+
id: string;
|
|
8
|
+
/** base64 data URL e.g. "data:image/png;base64,..." */
|
|
9
|
+
dataUrl: string;
|
|
10
|
+
/** Original file name */
|
|
11
|
+
name: string;
|
|
12
|
+
}
|
|
13
|
+
type _JSONSchema = boolean | JSONSchema;
|
|
14
|
+
type JSONSchema = {
|
|
15
|
+
[k: string]: unknown;
|
|
16
|
+
$schema?: string;
|
|
17
|
+
$id?: string;
|
|
18
|
+
$ref?: string;
|
|
19
|
+
$defs?: Record<string, JSONSchema>;
|
|
20
|
+
type?: "object" | "array" | "string" | "number" | "boolean" | "null" | "integer";
|
|
21
|
+
additionalItems?: _JSONSchema;
|
|
22
|
+
unevaluatedItems?: _JSONSchema;
|
|
23
|
+
prefixItems?: _JSONSchema[];
|
|
24
|
+
items?: _JSONSchema | _JSONSchema[];
|
|
25
|
+
contains?: _JSONSchema;
|
|
26
|
+
additionalProperties?: _JSONSchema;
|
|
27
|
+
unevaluatedProperties?: _JSONSchema;
|
|
28
|
+
properties?: Record<string, _JSONSchema>;
|
|
29
|
+
patternProperties?: Record<string, _JSONSchema>;
|
|
30
|
+
dependentSchemas?: Record<string, _JSONSchema>;
|
|
31
|
+
propertyNames?: _JSONSchema;
|
|
32
|
+
if?: _JSONSchema;
|
|
33
|
+
then?: _JSONSchema;
|
|
34
|
+
else?: _JSONSchema;
|
|
35
|
+
allOf?: JSONSchema[];
|
|
36
|
+
anyOf?: JSONSchema[];
|
|
37
|
+
oneOf?: JSONSchema[];
|
|
38
|
+
not?: _JSONSchema;
|
|
39
|
+
multipleOf?: number;
|
|
40
|
+
maximum?: number;
|
|
41
|
+
exclusiveMaximum?: number | boolean;
|
|
42
|
+
minimum?: number;
|
|
43
|
+
exclusiveMinimum?: number | boolean;
|
|
44
|
+
maxLength?: number;
|
|
45
|
+
minLength?: number;
|
|
46
|
+
pattern?: string;
|
|
47
|
+
maxItems?: number;
|
|
48
|
+
minItems?: number;
|
|
49
|
+
uniqueItems?: boolean;
|
|
50
|
+
maxContains?: number;
|
|
51
|
+
minContains?: number;
|
|
52
|
+
maxProperties?: number;
|
|
53
|
+
minProperties?: number;
|
|
54
|
+
required?: string[];
|
|
55
|
+
dependentRequired?: Record<string, string[]>;
|
|
56
|
+
enum?: Array<string | number | boolean | null>;
|
|
57
|
+
const?: string | number | boolean | null;
|
|
58
|
+
id?: string;
|
|
59
|
+
title?: string;
|
|
60
|
+
description?: string;
|
|
61
|
+
default?: unknown;
|
|
62
|
+
deprecated?: boolean;
|
|
63
|
+
readOnly?: boolean;
|
|
64
|
+
writeOnly?: boolean;
|
|
65
|
+
nullable?: boolean;
|
|
66
|
+
examples?: unknown[];
|
|
67
|
+
format?: string;
|
|
68
|
+
contentMediaType?: string;
|
|
69
|
+
contentEncoding?: string;
|
|
70
|
+
contentSchema?: JSONSchema;
|
|
71
|
+
_prefault?: unknown;
|
|
72
|
+
};
|
|
73
|
+
type ComponentAiParams = {
|
|
74
|
+
instructions?: string;
|
|
75
|
+
exclude?: boolean;
|
|
76
|
+
defaultZone?: {
|
|
77
|
+
allow?: string[];
|
|
78
|
+
disallow?: string[];
|
|
79
|
+
disabled?: boolean;
|
|
80
|
+
};
|
|
81
|
+
};
|
|
82
|
+
type FieldAiParams = {
|
|
83
|
+
instructions?: string;
|
|
84
|
+
exclude?: boolean;
|
|
85
|
+
required?: boolean;
|
|
86
|
+
stream?: boolean;
|
|
87
|
+
schema?: JSONSchema;
|
|
88
|
+
bind?: string;
|
|
89
|
+
};
|
|
90
|
+
type AddOperation = {
|
|
91
|
+
op: "add";
|
|
92
|
+
id: string;
|
|
93
|
+
index: number;
|
|
94
|
+
zone: string;
|
|
95
|
+
type: string;
|
|
96
|
+
props: object;
|
|
97
|
+
};
|
|
98
|
+
type UpdateOperation = {
|
|
99
|
+
op: "update";
|
|
100
|
+
id: string;
|
|
101
|
+
props: object;
|
|
102
|
+
};
|
|
103
|
+
type UpdateRootOperation = {
|
|
104
|
+
op: "updateRoot";
|
|
105
|
+
props: object;
|
|
106
|
+
};
|
|
107
|
+
type MoveOperation = {
|
|
108
|
+
op: "move";
|
|
109
|
+
zone: string;
|
|
110
|
+
id: string;
|
|
111
|
+
index: number;
|
|
112
|
+
};
|
|
113
|
+
type DeleteOperation = {
|
|
114
|
+
op: "delete";
|
|
115
|
+
id: string;
|
|
116
|
+
};
|
|
117
|
+
type DuplicateOperation = {
|
|
118
|
+
op: "duplicate";
|
|
119
|
+
id: string;
|
|
120
|
+
};
|
|
121
|
+
type ResetOperation = {
|
|
122
|
+
op: "reset";
|
|
123
|
+
};
|
|
124
|
+
type Operation = AddOperation | UpdateOperation | UpdateRootOperation | MoveOperation | DeleteOperation | DuplicateOperation | ResetOperation;
|
|
125
|
+
type ToolStatus = {
|
|
126
|
+
loading: boolean;
|
|
127
|
+
label: string;
|
|
128
|
+
error?: {
|
|
129
|
+
message: string;
|
|
130
|
+
};
|
|
131
|
+
};
|
|
132
|
+
type DataToolStatus = {
|
|
133
|
+
status: ToolStatus;
|
|
134
|
+
toolCallId: string;
|
|
135
|
+
};
|
|
136
|
+
type TokenUsage = {
|
|
137
|
+
inputTokens: number | undefined;
|
|
138
|
+
outputTokens: number | undefined;
|
|
139
|
+
totalTokens: number | undefined;
|
|
140
|
+
reasoningTokens?: number | undefined;
|
|
141
|
+
cachedInputTokens?: number | undefined;
|
|
142
|
+
};
|
|
143
|
+
type DataFinish = {
|
|
144
|
+
totalCost: number;
|
|
145
|
+
tokenUsage: TokenUsage;
|
|
146
|
+
};
|
|
147
|
+
type PuckDataParts = {
|
|
148
|
+
"new-chat-created": {
|
|
149
|
+
chatId: string;
|
|
150
|
+
};
|
|
151
|
+
"puck-actions": PuckAction[];
|
|
152
|
+
"build-op": Operation;
|
|
153
|
+
"tool-status": DataToolStatus;
|
|
154
|
+
"user-tool": {
|
|
155
|
+
toolCallId: string;
|
|
156
|
+
tools: {
|
|
157
|
+
name: string;
|
|
158
|
+
input: any;
|
|
159
|
+
}[];
|
|
160
|
+
};
|
|
161
|
+
"send-screenshot": {
|
|
162
|
+
id: string;
|
|
163
|
+
urls: {
|
|
164
|
+
[breakpoint: number]: string;
|
|
165
|
+
}[];
|
|
166
|
+
};
|
|
167
|
+
finish: DataFinish;
|
|
168
|
+
page: Data;
|
|
169
|
+
};
|
|
170
|
+
type PuckProviderMetadata = {
|
|
171
|
+
tokenUsage?: LanguageModelUsage;
|
|
172
|
+
};
|
|
173
|
+
type PuckMessage = UIMessage<PuckProviderMetadata, PuckDataParts>;
|
|
174
|
+
type RequestOptions = {
|
|
175
|
+
body?: {
|
|
176
|
+
chatId?: string;
|
|
177
|
+
trigger?: string;
|
|
178
|
+
messages?: PuckMessage[];
|
|
179
|
+
pageData?: Data;
|
|
180
|
+
config?: Config;
|
|
181
|
+
[key: string]: any;
|
|
182
|
+
};
|
|
183
|
+
headers?: HeadersInit;
|
|
184
|
+
credentials?: RequestCredentials;
|
|
185
|
+
};
|
|
186
|
+
type ThinkingLevel = "none" | "low" | "medium" | "high";
|
|
187
|
+
type AiSettings = {
|
|
188
|
+
thinkingLevel: ThinkingLevel;
|
|
189
|
+
urlContext: boolean;
|
|
190
|
+
googleSearch: boolean;
|
|
191
|
+
enterpriseWebSearch: boolean;
|
|
192
|
+
/**
|
|
193
|
+
* When a migration source URL is present, run Browser Rendering (Puppeteer/Worker) to capture
|
|
194
|
+
* a viewport screenshot and DOM bundle for the model. When off, migration URLs still enable
|
|
195
|
+
* URL context only — no `runBrowserMigrationPipeline` on the server.
|
|
196
|
+
*/
|
|
197
|
+
browserCapture: boolean;
|
|
198
|
+
/**
|
|
199
|
+
* When migrating from a page URL, run the full browser pipeline (DOM bundle + structured IR).
|
|
200
|
+
* Slower and uses more Worker time; leave off for screenshot-only + Vertex url_context.
|
|
201
|
+
* Only applies when {@link AiSettings.browserCapture} is enabled.
|
|
202
|
+
*/
|
|
203
|
+
pageMigrationIr: boolean;
|
|
204
|
+
figmaToken: string;
|
|
205
|
+
};
|
|
206
|
+
type AiPluginProps = {
|
|
207
|
+
host?: string;
|
|
208
|
+
chat?: {
|
|
209
|
+
onSubmit?: (prompt: string) => void;
|
|
210
|
+
examplePrompts?: {
|
|
211
|
+
label: string;
|
|
212
|
+
href?: string;
|
|
213
|
+
onClick?: () => void;
|
|
214
|
+
}[];
|
|
215
|
+
};
|
|
216
|
+
scrollTracking?: boolean;
|
|
217
|
+
prepareRequest?: (opts: RequestOptions) => RequestOptions | Promise<RequestOptions>;
|
|
218
|
+
settings?: {
|
|
219
|
+
storageKey?: string;
|
|
220
|
+
};
|
|
221
|
+
};
|
|
222
|
+
declare module "pika-editor-core" {
|
|
223
|
+
interface ComponentMetadata {
|
|
224
|
+
ai?: ComponentAiParams;
|
|
225
|
+
}
|
|
226
|
+
interface ComponentConfigExtensions {
|
|
227
|
+
ai?: ComponentAiParams;
|
|
228
|
+
}
|
|
229
|
+
interface FieldMetadata {
|
|
230
|
+
ai?: FieldAiParams;
|
|
231
|
+
}
|
|
232
|
+
interface BaseField {
|
|
233
|
+
ai?: FieldAiParams;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
type TargetComponent = {
|
|
237
|
+
id: string;
|
|
238
|
+
type: string;
|
|
239
|
+
label?: string;
|
|
240
|
+
};
|
|
241
|
+
declare global {
|
|
242
|
+
interface Window {
|
|
243
|
+
__PUCK_AI: {
|
|
244
|
+
sendMessage: (message: CreateUIMessage<PuckMessage>) => void;
|
|
245
|
+
setMessages: (_messages: PuckMessage[]) => void;
|
|
246
|
+
processData: (_dataPart: DataUIPart<PuckDataParts>) => void;
|
|
247
|
+
setStatus: (_status: ChatStatus) => void;
|
|
248
|
+
setPrompt: (_value: string) => void;
|
|
249
|
+
setTargetComponent: (_target: TargetComponent | null) => void;
|
|
250
|
+
};
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
declare function Chat({ chat, host, prepareRequest, settings, }: {
|
|
254
|
+
chat?: AiPluginProps["chat"];
|
|
255
|
+
host?: string;
|
|
256
|
+
prepareRequest?: AiPluginProps["prepareRequest"];
|
|
257
|
+
settings?: AiPluginProps["settings"];
|
|
258
|
+
}): react_jsx_runtime.JSX.Element;
|
|
259
|
+
declare function createAiPlugin(opts?: AiPluginProps): Plugin;
|
|
260
|
+
|
|
261
|
+
export { type AddOperation, type AiPluginProps, type AiSettings, type AttachedImage, Chat, type ComponentAiParams, type DataToolStatus, type DeleteOperation, type DuplicateOperation, type FieldAiParams, type JSONSchema, type MoveOperation, type Operation, type PuckMessage, type RequestOptions, type ResetOperation, type TargetComponent, type ThinkingLevel, type ToolStatus, type UpdateOperation, type UpdateRootOperation, createAiPlugin, createAiPlugin as default };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { PuckAction, Data, Config, Plugin } from 'pika-editor-core';
|
|
3
|
+
import { CreateUIMessage, UIMessage, LanguageModelUsage, DataUIPart, ChatStatus } from 'ai';
|
|
4
|
+
|
|
5
|
+
interface AttachedImage {
|
|
6
|
+
/** Unique key for React lists */
|
|
7
|
+
id: string;
|
|
8
|
+
/** base64 data URL e.g. "data:image/png;base64,..." */
|
|
9
|
+
dataUrl: string;
|
|
10
|
+
/** Original file name */
|
|
11
|
+
name: string;
|
|
12
|
+
}
|
|
13
|
+
type _JSONSchema = boolean | JSONSchema;
|
|
14
|
+
type JSONSchema = {
|
|
15
|
+
[k: string]: unknown;
|
|
16
|
+
$schema?: string;
|
|
17
|
+
$id?: string;
|
|
18
|
+
$ref?: string;
|
|
19
|
+
$defs?: Record<string, JSONSchema>;
|
|
20
|
+
type?: "object" | "array" | "string" | "number" | "boolean" | "null" | "integer";
|
|
21
|
+
additionalItems?: _JSONSchema;
|
|
22
|
+
unevaluatedItems?: _JSONSchema;
|
|
23
|
+
prefixItems?: _JSONSchema[];
|
|
24
|
+
items?: _JSONSchema | _JSONSchema[];
|
|
25
|
+
contains?: _JSONSchema;
|
|
26
|
+
additionalProperties?: _JSONSchema;
|
|
27
|
+
unevaluatedProperties?: _JSONSchema;
|
|
28
|
+
properties?: Record<string, _JSONSchema>;
|
|
29
|
+
patternProperties?: Record<string, _JSONSchema>;
|
|
30
|
+
dependentSchemas?: Record<string, _JSONSchema>;
|
|
31
|
+
propertyNames?: _JSONSchema;
|
|
32
|
+
if?: _JSONSchema;
|
|
33
|
+
then?: _JSONSchema;
|
|
34
|
+
else?: _JSONSchema;
|
|
35
|
+
allOf?: JSONSchema[];
|
|
36
|
+
anyOf?: JSONSchema[];
|
|
37
|
+
oneOf?: JSONSchema[];
|
|
38
|
+
not?: _JSONSchema;
|
|
39
|
+
multipleOf?: number;
|
|
40
|
+
maximum?: number;
|
|
41
|
+
exclusiveMaximum?: number | boolean;
|
|
42
|
+
minimum?: number;
|
|
43
|
+
exclusiveMinimum?: number | boolean;
|
|
44
|
+
maxLength?: number;
|
|
45
|
+
minLength?: number;
|
|
46
|
+
pattern?: string;
|
|
47
|
+
maxItems?: number;
|
|
48
|
+
minItems?: number;
|
|
49
|
+
uniqueItems?: boolean;
|
|
50
|
+
maxContains?: number;
|
|
51
|
+
minContains?: number;
|
|
52
|
+
maxProperties?: number;
|
|
53
|
+
minProperties?: number;
|
|
54
|
+
required?: string[];
|
|
55
|
+
dependentRequired?: Record<string, string[]>;
|
|
56
|
+
enum?: Array<string | number | boolean | null>;
|
|
57
|
+
const?: string | number | boolean | null;
|
|
58
|
+
id?: string;
|
|
59
|
+
title?: string;
|
|
60
|
+
description?: string;
|
|
61
|
+
default?: unknown;
|
|
62
|
+
deprecated?: boolean;
|
|
63
|
+
readOnly?: boolean;
|
|
64
|
+
writeOnly?: boolean;
|
|
65
|
+
nullable?: boolean;
|
|
66
|
+
examples?: unknown[];
|
|
67
|
+
format?: string;
|
|
68
|
+
contentMediaType?: string;
|
|
69
|
+
contentEncoding?: string;
|
|
70
|
+
contentSchema?: JSONSchema;
|
|
71
|
+
_prefault?: unknown;
|
|
72
|
+
};
|
|
73
|
+
type ComponentAiParams = {
|
|
74
|
+
instructions?: string;
|
|
75
|
+
exclude?: boolean;
|
|
76
|
+
defaultZone?: {
|
|
77
|
+
allow?: string[];
|
|
78
|
+
disallow?: string[];
|
|
79
|
+
disabled?: boolean;
|
|
80
|
+
};
|
|
81
|
+
};
|
|
82
|
+
type FieldAiParams = {
|
|
83
|
+
instructions?: string;
|
|
84
|
+
exclude?: boolean;
|
|
85
|
+
required?: boolean;
|
|
86
|
+
stream?: boolean;
|
|
87
|
+
schema?: JSONSchema;
|
|
88
|
+
bind?: string;
|
|
89
|
+
};
|
|
90
|
+
type AddOperation = {
|
|
91
|
+
op: "add";
|
|
92
|
+
id: string;
|
|
93
|
+
index: number;
|
|
94
|
+
zone: string;
|
|
95
|
+
type: string;
|
|
96
|
+
props: object;
|
|
97
|
+
};
|
|
98
|
+
type UpdateOperation = {
|
|
99
|
+
op: "update";
|
|
100
|
+
id: string;
|
|
101
|
+
props: object;
|
|
102
|
+
};
|
|
103
|
+
type UpdateRootOperation = {
|
|
104
|
+
op: "updateRoot";
|
|
105
|
+
props: object;
|
|
106
|
+
};
|
|
107
|
+
type MoveOperation = {
|
|
108
|
+
op: "move";
|
|
109
|
+
zone: string;
|
|
110
|
+
id: string;
|
|
111
|
+
index: number;
|
|
112
|
+
};
|
|
113
|
+
type DeleteOperation = {
|
|
114
|
+
op: "delete";
|
|
115
|
+
id: string;
|
|
116
|
+
};
|
|
117
|
+
type DuplicateOperation = {
|
|
118
|
+
op: "duplicate";
|
|
119
|
+
id: string;
|
|
120
|
+
};
|
|
121
|
+
type ResetOperation = {
|
|
122
|
+
op: "reset";
|
|
123
|
+
};
|
|
124
|
+
type Operation = AddOperation | UpdateOperation | UpdateRootOperation | MoveOperation | DeleteOperation | DuplicateOperation | ResetOperation;
|
|
125
|
+
type ToolStatus = {
|
|
126
|
+
loading: boolean;
|
|
127
|
+
label: string;
|
|
128
|
+
error?: {
|
|
129
|
+
message: string;
|
|
130
|
+
};
|
|
131
|
+
};
|
|
132
|
+
type DataToolStatus = {
|
|
133
|
+
status: ToolStatus;
|
|
134
|
+
toolCallId: string;
|
|
135
|
+
};
|
|
136
|
+
type TokenUsage = {
|
|
137
|
+
inputTokens: number | undefined;
|
|
138
|
+
outputTokens: number | undefined;
|
|
139
|
+
totalTokens: number | undefined;
|
|
140
|
+
reasoningTokens?: number | undefined;
|
|
141
|
+
cachedInputTokens?: number | undefined;
|
|
142
|
+
};
|
|
143
|
+
type DataFinish = {
|
|
144
|
+
totalCost: number;
|
|
145
|
+
tokenUsage: TokenUsage;
|
|
146
|
+
};
|
|
147
|
+
type PuckDataParts = {
|
|
148
|
+
"new-chat-created": {
|
|
149
|
+
chatId: string;
|
|
150
|
+
};
|
|
151
|
+
"puck-actions": PuckAction[];
|
|
152
|
+
"build-op": Operation;
|
|
153
|
+
"tool-status": DataToolStatus;
|
|
154
|
+
"user-tool": {
|
|
155
|
+
toolCallId: string;
|
|
156
|
+
tools: {
|
|
157
|
+
name: string;
|
|
158
|
+
input: any;
|
|
159
|
+
}[];
|
|
160
|
+
};
|
|
161
|
+
"send-screenshot": {
|
|
162
|
+
id: string;
|
|
163
|
+
urls: {
|
|
164
|
+
[breakpoint: number]: string;
|
|
165
|
+
}[];
|
|
166
|
+
};
|
|
167
|
+
finish: DataFinish;
|
|
168
|
+
page: Data;
|
|
169
|
+
};
|
|
170
|
+
type PuckProviderMetadata = {
|
|
171
|
+
tokenUsage?: LanguageModelUsage;
|
|
172
|
+
};
|
|
173
|
+
type PuckMessage = UIMessage<PuckProviderMetadata, PuckDataParts>;
|
|
174
|
+
type RequestOptions = {
|
|
175
|
+
body?: {
|
|
176
|
+
chatId?: string;
|
|
177
|
+
trigger?: string;
|
|
178
|
+
messages?: PuckMessage[];
|
|
179
|
+
pageData?: Data;
|
|
180
|
+
config?: Config;
|
|
181
|
+
[key: string]: any;
|
|
182
|
+
};
|
|
183
|
+
headers?: HeadersInit;
|
|
184
|
+
credentials?: RequestCredentials;
|
|
185
|
+
};
|
|
186
|
+
type ThinkingLevel = "none" | "low" | "medium" | "high";
|
|
187
|
+
type AiSettings = {
|
|
188
|
+
thinkingLevel: ThinkingLevel;
|
|
189
|
+
urlContext: boolean;
|
|
190
|
+
googleSearch: boolean;
|
|
191
|
+
enterpriseWebSearch: boolean;
|
|
192
|
+
/**
|
|
193
|
+
* When a migration source URL is present, run Browser Rendering (Puppeteer/Worker) to capture
|
|
194
|
+
* a viewport screenshot and DOM bundle for the model. When off, migration URLs still enable
|
|
195
|
+
* URL context only — no `runBrowserMigrationPipeline` on the server.
|
|
196
|
+
*/
|
|
197
|
+
browserCapture: boolean;
|
|
198
|
+
/**
|
|
199
|
+
* When migrating from a page URL, run the full browser pipeline (DOM bundle + structured IR).
|
|
200
|
+
* Slower and uses more Worker time; leave off for screenshot-only + Vertex url_context.
|
|
201
|
+
* Only applies when {@link AiSettings.browserCapture} is enabled.
|
|
202
|
+
*/
|
|
203
|
+
pageMigrationIr: boolean;
|
|
204
|
+
figmaToken: string;
|
|
205
|
+
};
|
|
206
|
+
type AiPluginProps = {
|
|
207
|
+
host?: string;
|
|
208
|
+
chat?: {
|
|
209
|
+
onSubmit?: (prompt: string) => void;
|
|
210
|
+
examplePrompts?: {
|
|
211
|
+
label: string;
|
|
212
|
+
href?: string;
|
|
213
|
+
onClick?: () => void;
|
|
214
|
+
}[];
|
|
215
|
+
};
|
|
216
|
+
scrollTracking?: boolean;
|
|
217
|
+
prepareRequest?: (opts: RequestOptions) => RequestOptions | Promise<RequestOptions>;
|
|
218
|
+
settings?: {
|
|
219
|
+
storageKey?: string;
|
|
220
|
+
};
|
|
221
|
+
};
|
|
222
|
+
declare module "pika-editor-core" {
|
|
223
|
+
interface ComponentMetadata {
|
|
224
|
+
ai?: ComponentAiParams;
|
|
225
|
+
}
|
|
226
|
+
interface ComponentConfigExtensions {
|
|
227
|
+
ai?: ComponentAiParams;
|
|
228
|
+
}
|
|
229
|
+
interface FieldMetadata {
|
|
230
|
+
ai?: FieldAiParams;
|
|
231
|
+
}
|
|
232
|
+
interface BaseField {
|
|
233
|
+
ai?: FieldAiParams;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
type TargetComponent = {
|
|
237
|
+
id: string;
|
|
238
|
+
type: string;
|
|
239
|
+
label?: string;
|
|
240
|
+
};
|
|
241
|
+
declare global {
|
|
242
|
+
interface Window {
|
|
243
|
+
__PUCK_AI: {
|
|
244
|
+
sendMessage: (message: CreateUIMessage<PuckMessage>) => void;
|
|
245
|
+
setMessages: (_messages: PuckMessage[]) => void;
|
|
246
|
+
processData: (_dataPart: DataUIPart<PuckDataParts>) => void;
|
|
247
|
+
setStatus: (_status: ChatStatus) => void;
|
|
248
|
+
setPrompt: (_value: string) => void;
|
|
249
|
+
setTargetComponent: (_target: TargetComponent | null) => void;
|
|
250
|
+
};
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
declare function Chat({ chat, host, prepareRequest, settings, }: {
|
|
254
|
+
chat?: AiPluginProps["chat"];
|
|
255
|
+
host?: string;
|
|
256
|
+
prepareRequest?: AiPluginProps["prepareRequest"];
|
|
257
|
+
settings?: AiPluginProps["settings"];
|
|
258
|
+
}): react_jsx_runtime.JSX.Element;
|
|
259
|
+
declare function createAiPlugin(opts?: AiPluginProps): Plugin;
|
|
260
|
+
|
|
261
|
+
export { type AddOperation, type AiPluginProps, type AiSettings, type AttachedImage, Chat, type ComponentAiParams, type DataToolStatus, type DeleteOperation, type DuplicateOperation, type FieldAiParams, type JSONSchema, type MoveOperation, type Operation, type PuckMessage, type RequestOptions, type ResetOperation, type TargetComponent, type ThinkingLevel, type ToolStatus, type UpdateOperation, type UpdateRootOperation, createAiPlugin, createAiPlugin as default };
|