@promptbook/components 0.104.0-0 โ 0.104.0-10
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/esm/index.es.js +626 -237
- package/esm/index.es.js.map +1 -1
- package/esm/typings/servers.d.ts +8 -0
- package/esm/typings/src/_packages/core.index.d.ts +2 -0
- package/esm/typings/src/_packages/types.index.d.ts +10 -2
- package/esm/typings/src/book-2.0/agent-source/AgentBasicInformation.d.ts +6 -1
- package/esm/typings/src/book-2.0/agent-source/createAgentModelRequirements.d.ts +6 -6
- package/esm/typings/src/book-2.0/agent-source/createAgentModelRequirementsWithCommitments.closed.test.d.ts +1 -0
- package/esm/typings/src/book-2.0/utils/generatePlaceholderAgentProfileImageUrl.d.ts +3 -3
- package/esm/typings/src/book-components/Chat/Chat/ChatMessageItem.d.ts +5 -1
- package/esm/typings/src/book-components/Chat/Chat/ChatProps.d.ts +5 -0
- package/esm/typings/src/book-components/Chat/CodeBlock/CodeBlock.d.ts +13 -0
- package/esm/typings/src/book-components/Chat/MarkdownContent/MarkdownContent.d.ts +1 -0
- package/esm/typings/src/book-components/Chat/types/ChatMessage.d.ts +7 -11
- package/esm/typings/src/book-components/_common/Dropdown/Dropdown.d.ts +2 -2
- package/esm/typings/src/book-components/_common/MenuHoisting/MenuHoistingContext.d.ts +56 -0
- package/esm/typings/src/collection/agent-collection/constructors/agent-collection-in-supabase/AgentCollectionInSupabase.d.ts +21 -11
- package/esm/typings/src/collection/agent-collection/constructors/agent-collection-in-supabase/AgentsDatabaseSchema.d.ts +80 -14
- package/esm/typings/src/commitments/DICTIONARY/DICTIONARY.d.ts +46 -0
- package/esm/typings/src/commitments/index.d.ts +2 -1
- package/esm/typings/src/llm-providers/_multiple/MultipleLlmExecutionTools.d.ts +6 -2
- package/esm/typings/src/llm-providers/agent/AgentLlmExecutionTools.d.ts +1 -1
- package/esm/typings/src/llm-providers/ollama/OllamaExecutionTools.d.ts +1 -1
- package/esm/typings/src/llm-providers/openai/createOpenAiCompatibleExecutionTools.d.ts +1 -1
- package/esm/typings/src/llm-providers/remote/RemoteLlmExecutionTools.d.ts +1 -0
- package/esm/typings/src/types/Message.d.ts +49 -0
- package/esm/typings/src/types/ModelRequirements.d.ts +38 -14
- package/esm/typings/src/types/typeAliases.d.ts +23 -1
- package/esm/typings/src/utils/color/utils/colorToDataUrl.d.ts +2 -1
- package/esm/typings/src/utils/environment/$detectRuntimeEnvironment.d.ts +4 -4
- package/esm/typings/src/utils/environment/$isRunningInBrowser.d.ts +1 -1
- package/esm/typings/src/utils/environment/$isRunningInJest.d.ts +1 -1
- package/esm/typings/src/utils/environment/$isRunningInNode.d.ts +1 -1
- package/esm/typings/src/utils/environment/$isRunningInWebWorker.d.ts +1 -1
- package/esm/typings/src/utils/markdown/extractAllBlocksFromMarkdown.d.ts +2 -2
- package/esm/typings/src/utils/markdown/extractOneBlockFromMarkdown.d.ts +2 -2
- package/esm/typings/src/utils/random/$randomBase58.d.ts +12 -0
- package/esm/typings/src/version.d.ts +1 -1
- package/package.json +1 -2
- package/umd/index.umd.js +634 -246
- package/umd/index.umd.js.map +1 -1
- package/esm/typings/src/book-2.0/utils/generateGravatarUrl.d.ts +0 -10
package/umd/index.umd.js
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
(function (global, factory) {
|
|
2
|
-
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('react/jsx-runtime'), require('react'), require('spacetrim'), require('crypto-js'), require('crypto-js/enc-hex'), require('path'), require('crypto'), require('react-dom'), require('@monaco-editor/react'), require('destroyable'), require('
|
|
3
|
-
typeof define === 'function' && define.amd ? define(['exports', 'react/jsx-runtime', 'react', 'spacetrim', 'crypto-js', 'crypto-js/enc-hex', 'path', 'crypto', 'react-dom', '@monaco-editor/react', 'destroyable', '
|
|
4
|
-
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global["promptbook-components"] = {}, global.jsxRuntime, global.react, global.spaceTrim$1, global.cryptoJs, global.hexEncoder, global.path, global.crypto, global.reactDom, global.Editor, global.destroyable, global.
|
|
5
|
-
})(this, (function (exports, jsxRuntime, react, spaceTrim$1, cryptoJs, hexEncoder, path, crypto, reactDom, Editor, destroyable,
|
|
2
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('react/jsx-runtime'), require('react'), require('spacetrim'), require('crypto-js'), require('crypto-js/enc-hex'), require('path'), require('crypto'), require('react-dom'), require('@monaco-editor/react'), require('destroyable'), require('katex'), require('react-dom/client'), require('showdown'), require('rxjs'), require('waitasecond'), require('crypto-js/sha256'), require('mime-types'), require('papaparse'), require('colors'), require('bottleneck'), require('openai'), require('qrcode')) :
|
|
3
|
+
typeof define === 'function' && define.amd ? define(['exports', 'react/jsx-runtime', 'react', 'spacetrim', 'crypto-js', 'crypto-js/enc-hex', 'path', 'crypto', 'react-dom', '@monaco-editor/react', 'destroyable', 'katex', 'react-dom/client', 'showdown', 'rxjs', 'waitasecond', 'crypto-js/sha256', 'mime-types', 'papaparse', 'colors', 'bottleneck', 'openai', 'qrcode'], factory) :
|
|
4
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global["promptbook-components"] = {}, global.jsxRuntime, global.react, global.spaceTrim$1, global.cryptoJs, global.hexEncoder, global.path, global.crypto, global.reactDom, global.Editor, global.destroyable, global.katex, global.client, global.showdown, global.rxjs, global.waitasecond, global.sha256, global.mimeTypes, global.papaparse, global.colors, global.Bottleneck, global.OpenAI, global.QRCode));
|
|
5
|
+
})(this, (function (exports, jsxRuntime, react, spaceTrim$1, cryptoJs, hexEncoder, path, crypto, reactDom, Editor, destroyable, katex, client, showdown, rxjs, waitasecond, sha256, mimeTypes, papaparse, colors, Bottleneck, OpenAI, QRCode) { 'use strict';
|
|
6
6
|
|
|
7
7
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
8
8
|
|
|
9
9
|
var spaceTrim__default = /*#__PURE__*/_interopDefaultLegacy(spaceTrim$1);
|
|
10
10
|
var hexEncoder__default = /*#__PURE__*/_interopDefaultLegacy(hexEncoder);
|
|
11
11
|
var Editor__default = /*#__PURE__*/_interopDefaultLegacy(Editor);
|
|
12
|
-
var hljs__default = /*#__PURE__*/_interopDefaultLegacy(hljs);
|
|
13
12
|
var katex__default = /*#__PURE__*/_interopDefaultLegacy(katex);
|
|
14
13
|
var sha256__default = /*#__PURE__*/_interopDefaultLegacy(sha256);
|
|
15
14
|
var colors__default = /*#__PURE__*/_interopDefaultLegacy(colors);
|
|
@@ -31,7 +30,7 @@
|
|
|
31
30
|
* @generated
|
|
32
31
|
* @see https://github.com/webgptorg/promptbook
|
|
33
32
|
*/
|
|
34
|
-
const PROMPTBOOK_ENGINE_VERSION = '0.104.0-
|
|
33
|
+
const PROMPTBOOK_ENGINE_VERSION = '0.104.0-10';
|
|
35
34
|
/**
|
|
36
35
|
* TODO: string_promptbook_version should be constrained to the all versions of Promptbook engine
|
|
37
36
|
* Note: [๐] Ignore a discrepancy between file name and entity name
|
|
@@ -80,9 +79,9 @@
|
|
|
80
79
|
}
|
|
81
80
|
}
|
|
82
81
|
|
|
83
|
-
var css_248z$
|
|
84
|
-
var styles$
|
|
85
|
-
styleInject(css_248z$
|
|
82
|
+
var css_248z$a = ".AvatarChip-module_AvatarChip__4sA0u{align-items:center;background:#e0e7ef;border:1px solid #b3c2d1;border-radius:16px;color:#2a3b4d;cursor:pointer;display:inline-flex;font-size:.95em;font-weight:500;margin:2px;padding:4px 12px}.AvatarChip-module_Avatar__mN2sc{border-radius:50%;height:24px;margin-right:8px;object-fit:cover;width:24px}.AvatarChip-module_TemplateLabel__-7vVI{background:#f0f4f8;border-radius:12px;color:#3a4752;font-size:.8em;margin-left:8px;margin-right:0;padding:2px 6px;text-transform:uppercase}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkF2YXRhckNoaXAubW9kdWxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxQ0FFSSxrQkFBbUIsQ0FHbkIsa0JBQW1CLENBS25CLHdCQUF5QixDQU56QixrQkFBbUIsQ0FFbkIsYUFBYyxDQU1kLGNBQWUsQ0FYZixtQkFBb0IsQ0FPcEIsZUFBaUIsQ0FEakIsZUFBZ0IsQ0FFaEIsVUFBVyxDQU5YLGdCQVVKLENBRUEsaUNBR0ksaUJBQWtCLENBRGxCLFdBQVksQ0FHWixnQkFBaUIsQ0FEakIsZ0JBQWlCLENBSGpCLFVBS0osQ0FFQSx3Q0FDSSxrQkFBbUIsQ0FJbkIsa0JBQW1CLENBSG5CLGFBQWMsQ0FDZCxjQUFnQixDQUdoQixlQUFnQixDQUNoQixjQUFlLENBSGYsZUFBZ0IsQ0FJaEIsd0JBQ0oiLCJmaWxlIjoiQXZhdGFyQ2hpcC5tb2R1bGUuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLkF2YXRhckNoaXAge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcGFkZGluZzogNHB4IDEycHg7XG4gICAgYm9yZGVyLXJhZGl1czogMTZweDtcbiAgICBiYWNrZ3JvdW5kOiAjZTBlN2VmO1xuICAgIGNvbG9yOiAjMmEzYjRkO1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgZm9udC1zaXplOiAwLjk1ZW07XG4gICAgbWFyZ2luOiAycHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgI2IzYzJkMTtcblxuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLkF2YXRhciB7XG4gICAgd2lkdGg6IDI0cHg7XG4gICAgaGVpZ2h0OiAyNHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICBtYXJnaW4tcmlnaHQ6IDhweDtcbn1cblxuLlRlbXBsYXRlTGFiZWwge1xuICAgIGJhY2tncm91bmQ6ICNmMGY0Zjg7XG4gICAgY29sb3I6ICMzYTQ3NTI7XG4gICAgZm9udC1zaXplOiAwLjhlbTtcbiAgICBwYWRkaW5nOiAycHggNnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gICAgbWFyZ2luLWxlZnQ6IDhweDtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbn1cbiJdfQ== */";
|
|
83
|
+
var styles$9 = {"AvatarChip":"AvatarChip-module_AvatarChip__4sA0u","Avatar":"AvatarChip-module_Avatar__mN2sc","TemplateLabel":"AvatarChip-module_TemplateLabel__-7vVI"};
|
|
84
|
+
styleInject(css_248z$a);
|
|
86
85
|
|
|
87
86
|
/**
|
|
88
87
|
* Shows a chip with avatar's avatar and name
|
|
@@ -92,7 +91,7 @@
|
|
|
92
91
|
function AvatarChip(props) {
|
|
93
92
|
const { avatarBasicInformation, className, onSelect, isSelected, isTemplate } = props;
|
|
94
93
|
const { agentName, meta } = avatarBasicInformation;
|
|
95
|
-
return (jsxRuntime.jsxs("div", { className: classNames(styles$
|
|
94
|
+
return (jsxRuntime.jsxs("div", { className: classNames(styles$9.AvatarChip, className, isSelected ? styles$9.Selected : undefined), onClick: () => onSelect === null || onSelect === void 0 ? void 0 : onSelect(avatarBasicInformation), style: { cursor: onSelect ? 'pointer' : undefined }, children: [jsxRuntime.jsx("img", { src: meta.image, alt: agentName || '', className: styles$9.Avatar }), meta.fullname || agentName, isTemplate && jsxRuntime.jsx("span", { className: styles$9.TemplateLabel, children: "Template" })] }));
|
|
96
95
|
}
|
|
97
96
|
|
|
98
97
|
/**
|
|
@@ -149,48 +148,12 @@
|
|
|
149
148
|
* TODO: [๐บ] Use some intermediate util splitWords
|
|
150
149
|
*/
|
|
151
150
|
|
|
152
|
-
/**
|
|
153
|
-
* Generates a gravatar URL based on agent name for fallback avatar
|
|
154
|
-
*
|
|
155
|
-
* @param agentName The agent name to generate avatar for
|
|
156
|
-
* @returns Gravatar URL
|
|
157
|
-
*
|
|
158
|
-
* @private - [๐คน] The fact that profile image is Gravatar is just implementation detail which should be hidden for consumer
|
|
159
|
-
*/
|
|
160
|
-
function generateGravatarUrl(agentName) {
|
|
161
|
-
// Use a default name if none provided
|
|
162
|
-
const safeName = agentName || 'Anonymous Agent';
|
|
163
|
-
// Create a simple hash from the name for consistent avatar
|
|
164
|
-
let hash = 0;
|
|
165
|
-
for (let i = 0; i < safeName.length; i++) {
|
|
166
|
-
const char = safeName.charCodeAt(i);
|
|
167
|
-
hash = (hash << 5) - hash + char;
|
|
168
|
-
hash = hash & hash; // Convert to 32bit integer
|
|
169
|
-
}
|
|
170
|
-
const avatarId = Math.abs(hash).toString();
|
|
171
|
-
return `https://www.gravatar.com/avatar/${avatarId}?default=robohash&size=200&rating=x`;
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
/**
|
|
175
|
-
* Generates an image for the agent to use as profile image
|
|
176
|
-
*
|
|
177
|
-
* @param agentName The agent name to generate avatar for
|
|
178
|
-
* @returns The placeholder profile image URL for the agent
|
|
179
|
-
*
|
|
180
|
-
* @public exported from `@promptbook/core`
|
|
181
|
-
*/
|
|
182
|
-
function generatePlaceholderAgentProfileImageUrl(agentName) {
|
|
183
|
-
// Note: [๐คน] The fact that profile image is Gravatar is just implementation detail which should be hidden for consumer
|
|
184
|
-
return generateGravatarUrl(agentName);
|
|
185
|
-
}
|
|
186
|
-
/**
|
|
187
|
-
* TODO: [๐คน] Figure out best placeholder image generator https://i.pravatar.cc/1000?u=568
|
|
188
|
-
*/
|
|
189
|
-
|
|
190
151
|
/**
|
|
191
152
|
* Core Promptbook server configuration.
|
|
192
153
|
*
|
|
193
154
|
* This server is also used for auto-federation in the Agents Server.
|
|
155
|
+
*
|
|
156
|
+
* @public exported from `@promptbook/core`
|
|
194
157
|
*/
|
|
195
158
|
const CORE_SERVER = {
|
|
196
159
|
title: 'Promptbook Core',
|
|
@@ -3043,13 +3006,14 @@
|
|
|
3043
3006
|
*
|
|
3044
3007
|
* @public exported from `@promptbook/utils`
|
|
3045
3008
|
*/
|
|
3046
|
-
|
|
3047
|
-
|
|
3048
|
-
|
|
3049
|
-
|
|
3050
|
-
|
|
3009
|
+
function $isRunningInBrowser() {
|
|
3010
|
+
try {
|
|
3011
|
+
return typeof window !== 'undefined' && typeof window.document !== 'undefined';
|
|
3012
|
+
}
|
|
3013
|
+
catch (e) {
|
|
3014
|
+
return false;
|
|
3015
|
+
}
|
|
3051
3016
|
}
|
|
3052
|
-
`);
|
|
3053
3017
|
/**
|
|
3054
3018
|
* TODO: [๐บ]
|
|
3055
3019
|
*/
|
|
@@ -3061,13 +3025,15 @@
|
|
|
3061
3025
|
*
|
|
3062
3026
|
* @public exported from `@promptbook/utils`
|
|
3063
3027
|
*/
|
|
3064
|
-
|
|
3065
|
-
|
|
3066
|
-
|
|
3067
|
-
|
|
3068
|
-
|
|
3028
|
+
function $isRunningInJest() {
|
|
3029
|
+
var _a;
|
|
3030
|
+
try {
|
|
3031
|
+
return typeof process !== 'undefined' && ((_a = process.env) === null || _a === void 0 ? void 0 : _a.JEST_WORKER_ID) !== undefined;
|
|
3032
|
+
}
|
|
3033
|
+
catch (e) {
|
|
3034
|
+
return false;
|
|
3035
|
+
}
|
|
3069
3036
|
}
|
|
3070
|
-
`);
|
|
3071
3037
|
/**
|
|
3072
3038
|
* TODO: [๐บ]
|
|
3073
3039
|
*/
|
|
@@ -3079,13 +3045,14 @@
|
|
|
3079
3045
|
*
|
|
3080
3046
|
* @public exported from `@promptbook/utils`
|
|
3081
3047
|
*/
|
|
3082
|
-
|
|
3083
|
-
|
|
3084
|
-
|
|
3085
|
-
|
|
3086
|
-
|
|
3048
|
+
function $isRunningInNode() {
|
|
3049
|
+
try {
|
|
3050
|
+
return typeof process !== 'undefined' && process.versions != null && process.versions.node != null;
|
|
3051
|
+
}
|
|
3052
|
+
catch (e) {
|
|
3053
|
+
return false;
|
|
3054
|
+
}
|
|
3087
3055
|
}
|
|
3088
|
-
`);
|
|
3089
3056
|
/**
|
|
3090
3057
|
* TODO: [๐บ]
|
|
3091
3058
|
*/
|
|
@@ -3097,17 +3064,17 @@
|
|
|
3097
3064
|
*
|
|
3098
3065
|
* @public exported from `@promptbook/utils`
|
|
3099
3066
|
*/
|
|
3100
|
-
|
|
3101
|
-
|
|
3102
|
-
|
|
3103
|
-
|
|
3104
|
-
|
|
3067
|
+
function $isRunningInWebWorker() {
|
|
3068
|
+
try {
|
|
3069
|
+
// Note: Check for importScripts which is specific to workers
|
|
3070
|
+
// and not available in the main browser thread
|
|
3071
|
+
return (typeof self !== 'undefined' &&
|
|
3072
|
+
typeof self.importScripts === 'function');
|
|
3073
|
+
}
|
|
3074
|
+
catch (e) {
|
|
3105
3075
|
return false;
|
|
3106
3076
|
}
|
|
3107
|
-
} catch (e) {
|
|
3108
|
-
return false;
|
|
3109
3077
|
}
|
|
3110
|
-
`);
|
|
3111
3078
|
/**
|
|
3112
3079
|
* TODO: [๐บ]
|
|
3113
3080
|
*/
|
|
@@ -4123,6 +4090,114 @@
|
|
|
4123
4090
|
* Note: [๐] Ignore a discrepancy between file name and entity name
|
|
4124
4091
|
*/
|
|
4125
4092
|
|
|
4093
|
+
/**
|
|
4094
|
+
* DICTIONARY commitment definition
|
|
4095
|
+
*
|
|
4096
|
+
* The DICTIONARY commitment defines specific terms and their meanings that the agent should use correctly
|
|
4097
|
+
* in its reasoning and responses. This ensures consistent terminology usage.
|
|
4098
|
+
*
|
|
4099
|
+
* Key features:
|
|
4100
|
+
* - Multiple DICTIONARY commitments are automatically merged into one
|
|
4101
|
+
* - Content is placed in a dedicated section of the system message
|
|
4102
|
+
* - Terms and definitions are stored in metadata.DICTIONARY for debugging
|
|
4103
|
+
* - Agent should use the defined terms correctly in responses
|
|
4104
|
+
*
|
|
4105
|
+
* Example usage in agent source:
|
|
4106
|
+
*
|
|
4107
|
+
* ```book
|
|
4108
|
+
* Legal Assistant
|
|
4109
|
+
*
|
|
4110
|
+
* PERSONA You are a knowledgeable legal assistant
|
|
4111
|
+
* DICTIONARY Misdemeanor is a minor wrongdoing or criminal offense
|
|
4112
|
+
* DICTIONARY Felony is a serious crime usually punishable by imprisonment for more than one year
|
|
4113
|
+
* DICTIONARY Tort is a civil wrong that causes harm or loss to another person, leading to legal liability
|
|
4114
|
+
* ```
|
|
4115
|
+
*
|
|
4116
|
+
* @private [๐ช] Maybe export the commitments through some package
|
|
4117
|
+
*/
|
|
4118
|
+
class DictionaryCommitmentDefinition extends BaseCommitmentDefinition {
|
|
4119
|
+
constructor() {
|
|
4120
|
+
super('DICTIONARY');
|
|
4121
|
+
}
|
|
4122
|
+
/**
|
|
4123
|
+
* Short one-line description of DICTIONARY.
|
|
4124
|
+
*/
|
|
4125
|
+
get description() {
|
|
4126
|
+
return 'Define terms and their meanings for consistent terminology usage.';
|
|
4127
|
+
}
|
|
4128
|
+
/**
|
|
4129
|
+
* Icon for this commitment.
|
|
4130
|
+
*/
|
|
4131
|
+
get icon() {
|
|
4132
|
+
return '๐';
|
|
4133
|
+
}
|
|
4134
|
+
/**
|
|
4135
|
+
* Markdown documentation for DICTIONARY commitment.
|
|
4136
|
+
*/
|
|
4137
|
+
get documentation() {
|
|
4138
|
+
return spaceTrim$1.spaceTrim(`
|
|
4139
|
+
# DICTIONARY
|
|
4140
|
+
|
|
4141
|
+
Defines specific terms and their meanings that the agent should use correctly in reasoning and responses.
|
|
4142
|
+
|
|
4143
|
+
## Key aspects
|
|
4144
|
+
|
|
4145
|
+
- Multiple \`DICTIONARY\` commitments are merged together.
|
|
4146
|
+
- Terms are defined in the format: "Term is definition"
|
|
4147
|
+
- The agent should use these terms consistently in responses.
|
|
4148
|
+
- Definitions help ensure accurate and consistent terminology.
|
|
4149
|
+
|
|
4150
|
+
## Examples
|
|
4151
|
+
|
|
4152
|
+
\`\`\`book
|
|
4153
|
+
Legal Assistant
|
|
4154
|
+
|
|
4155
|
+
PERSONA You are a knowledgeable legal assistant specializing in criminal law
|
|
4156
|
+
DICTIONARY Misdemeanor is a minor wrongdoing or criminal offense
|
|
4157
|
+
DICTIONARY Felony is a serious crime usually punishable by imprisonment for more than one year
|
|
4158
|
+
DICTIONARY Tort is a civil wrong that causes harm or loss to another person, leading to legal liability
|
|
4159
|
+
\`\`\`
|
|
4160
|
+
|
|
4161
|
+
\`\`\`book
|
|
4162
|
+
Medical Assistant
|
|
4163
|
+
|
|
4164
|
+
PERSONA You are a helpful medical assistant
|
|
4165
|
+
DICTIONARY Hypertension is persistently high blood pressure
|
|
4166
|
+
DICTIONARY Diabetes is a chronic condition that affects how the body processes blood sugar
|
|
4167
|
+
DICTIONARY Vaccine is a biological preparation that provides active immunity to a particular disease
|
|
4168
|
+
\`\`\`
|
|
4169
|
+
`);
|
|
4170
|
+
}
|
|
4171
|
+
applyToAgentModelRequirements(requirements, content) {
|
|
4172
|
+
var _a;
|
|
4173
|
+
const trimmedContent = content.trim();
|
|
4174
|
+
if (!trimmedContent) {
|
|
4175
|
+
return requirements;
|
|
4176
|
+
}
|
|
4177
|
+
// Get existing dictionary entries from metadata
|
|
4178
|
+
const existingDictionary = ((_a = requirements.metadata) === null || _a === void 0 ? void 0 : _a.DICTIONARY) || '';
|
|
4179
|
+
// Merge the new dictionary entry with existing entries
|
|
4180
|
+
const mergedDictionary = existingDictionary
|
|
4181
|
+
? `${existingDictionary}\n${trimmedContent}`
|
|
4182
|
+
: trimmedContent;
|
|
4183
|
+
// Store the merged dictionary in metadata for debugging and inspection
|
|
4184
|
+
const updatedMetadata = {
|
|
4185
|
+
...requirements.metadata,
|
|
4186
|
+
DICTIONARY: mergedDictionary,
|
|
4187
|
+
};
|
|
4188
|
+
// Create the dictionary section for the system message
|
|
4189
|
+
// Format: "# DICTIONARY\nTerm: definition\nTerm: definition..."
|
|
4190
|
+
const dictionarySection = `# DICTIONARY\n${mergedDictionary}`;
|
|
4191
|
+
return {
|
|
4192
|
+
...this.appendToSystemMessage(requirements, dictionarySection),
|
|
4193
|
+
metadata: updatedMetadata,
|
|
4194
|
+
};
|
|
4195
|
+
}
|
|
4196
|
+
}
|
|
4197
|
+
/**
|
|
4198
|
+
* Note: [๐] Ignore a discrepancy between file name and entity name
|
|
4199
|
+
*/
|
|
4200
|
+
|
|
4126
4201
|
/**
|
|
4127
4202
|
* FORMAT commitment definition
|
|
4128
4203
|
*
|
|
@@ -6943,6 +7018,7 @@
|
|
|
6943
7018
|
new DeleteCommitmentDefinition('CANCEL'),
|
|
6944
7019
|
new DeleteCommitmentDefinition('DISCARD'),
|
|
6945
7020
|
new DeleteCommitmentDefinition('REMOVE'),
|
|
7021
|
+
new DictionaryCommitmentDefinition(),
|
|
6946
7022
|
new OpenCommitmentDefinition(),
|
|
6947
7023
|
new ClosedCommitmentDefinition(),
|
|
6948
7024
|
new UseBrowserCommitmentDefinition(),
|
|
@@ -7002,17 +7078,64 @@
|
|
|
7002
7078
|
};
|
|
7003
7079
|
}
|
|
7004
7080
|
const lines = agentSource.split('\n');
|
|
7005
|
-
|
|
7081
|
+
let agentName = null;
|
|
7082
|
+
let agentNameLineIndex = -1;
|
|
7083
|
+
// Find the agent name: first non-empty line that is not a commitment and not a horizontal line
|
|
7084
|
+
for (let i = 0; i < lines.length; i++) {
|
|
7085
|
+
const line = lines[i];
|
|
7086
|
+
if (line === undefined) {
|
|
7087
|
+
continue;
|
|
7088
|
+
}
|
|
7089
|
+
const trimmed = line.trim();
|
|
7090
|
+
if (!trimmed) {
|
|
7091
|
+
continue;
|
|
7092
|
+
}
|
|
7093
|
+
const isHorizontal = HORIZONTAL_LINE_PATTERN.test(line);
|
|
7094
|
+
if (isHorizontal) {
|
|
7095
|
+
continue;
|
|
7096
|
+
}
|
|
7097
|
+
let isCommitment = false;
|
|
7098
|
+
for (const definition of COMMITMENT_REGISTRY) {
|
|
7099
|
+
const typeRegex = definition.createTypeRegex();
|
|
7100
|
+
const match = typeRegex.exec(trimmed);
|
|
7101
|
+
if (match && ((_a = match.groups) === null || _a === void 0 ? void 0 : _a.type)) {
|
|
7102
|
+
isCommitment = true;
|
|
7103
|
+
break;
|
|
7104
|
+
}
|
|
7105
|
+
}
|
|
7106
|
+
if (!isCommitment) {
|
|
7107
|
+
agentName = trimmed;
|
|
7108
|
+
agentNameLineIndex = i;
|
|
7109
|
+
break;
|
|
7110
|
+
}
|
|
7111
|
+
}
|
|
7006
7112
|
const commitments = [];
|
|
7007
7113
|
const nonCommitmentLines = [];
|
|
7008
|
-
//
|
|
7009
|
-
|
|
7010
|
-
|
|
7114
|
+
// Add lines before agentName that are horizontal lines (they are non-commitment)
|
|
7115
|
+
for (let i = 0; i < agentNameLineIndex; i++) {
|
|
7116
|
+
const line = lines[i];
|
|
7117
|
+
if (line === undefined) {
|
|
7118
|
+
continue;
|
|
7119
|
+
}
|
|
7120
|
+
const trimmed = line.trim();
|
|
7121
|
+
if (!trimmed) {
|
|
7122
|
+
continue;
|
|
7123
|
+
}
|
|
7124
|
+
const isHorizontal = HORIZONTAL_LINE_PATTERN.test(line);
|
|
7125
|
+
if (isHorizontal) {
|
|
7126
|
+
nonCommitmentLines.push(line);
|
|
7127
|
+
}
|
|
7128
|
+
// Note: Commitments before agentName are not added to nonCommitmentLines
|
|
7129
|
+
}
|
|
7130
|
+
// Add the agent name line to non-commitment lines
|
|
7131
|
+
if (agentNameLineIndex >= 0) {
|
|
7132
|
+
nonCommitmentLines.push(lines[agentNameLineIndex]);
|
|
7011
7133
|
}
|
|
7012
7134
|
// Parse commitments with multiline support
|
|
7013
7135
|
let currentCommitment = null;
|
|
7014
|
-
// Process lines starting from the
|
|
7015
|
-
|
|
7136
|
+
// Process lines starting from after the agent name line
|
|
7137
|
+
const startIndex = agentNameLineIndex >= 0 ? agentNameLineIndex + 1 : 0;
|
|
7138
|
+
for (let i = startIndex; i < lines.length; i++) {
|
|
7016
7139
|
const line = lines[i];
|
|
7017
7140
|
if (line === undefined) {
|
|
7018
7141
|
continue;
|
|
@@ -7219,10 +7342,6 @@
|
|
|
7219
7342
|
const metaType = normalizeTo_camelCase(metaTypeRaw);
|
|
7220
7343
|
meta[metaType] = spaceTrim__default["default"](commitment.content.substring(metaTypeRaw.length));
|
|
7221
7344
|
}
|
|
7222
|
-
// Generate gravatar fallback if no meta image specified
|
|
7223
|
-
if (!meta.image) {
|
|
7224
|
-
meta.image = generatePlaceholderAgentProfileImageUrl(parseResult.agentName || '!!');
|
|
7225
|
-
}
|
|
7226
7345
|
// Generate fullname fallback if no meta fullname specified
|
|
7227
7346
|
if (!meta.fullname) {
|
|
7228
7347
|
meta.fullname = parseResult.agentName || createDefaultAgentName(agentSource);
|
|
@@ -7234,6 +7353,7 @@
|
|
|
7234
7353
|
return {
|
|
7235
7354
|
agentName: normalizeAgentName(parseResult.agentName || createDefaultAgentName(agentSource)),
|
|
7236
7355
|
agentHash,
|
|
7356
|
+
permanentId: meta.id,
|
|
7237
7357
|
personaDescription,
|
|
7238
7358
|
initialMessage,
|
|
7239
7359
|
meta,
|
|
@@ -7273,9 +7393,9 @@
|
|
|
7273
7393
|
return jsxRuntime.jsx(AvatarChip, { avatarBasicInformation: avatarBasicInformation, ...props });
|
|
7274
7394
|
}
|
|
7275
7395
|
|
|
7276
|
-
var css_248z$
|
|
7277
|
-
var styles$
|
|
7278
|
-
styleInject(css_248z$
|
|
7396
|
+
var css_248z$9 = ".Modal-module_scrim__jKO-A{align-items:center;background-color:rgba(0,0,0,.5);display:flex;height:100%;justify-content:center;left:0;position:fixed;top:0;width:100%;z-index:9000000}.Modal-module_Modal__k49dY{background:#fff;border-radius:8px;max-height:90%;max-width:90%;min-height:30vh;min-width:50vw;overflow:auto;padding:20px;position:relative}.Modal-module_closeButton__dzf6l{background:transparent;border:none;cursor:pointer;font-size:24px;position:absolute;right:10px;top:10px}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1vZGFsLm1vZHVsZS5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMkJBU0ksa0JBQW1CLENBSG5CLCtCQUFvQyxDQUNwQyxZQUFhLENBRmIsV0FBWSxDQUdaLHNCQUF1QixDQUx2QixNQUFPLENBRlAsY0FBZSxDQUNmLEtBQU0sQ0FFTixVQUFXLENBTVgsZUFDSixDQUVBLDJCQUNJLGVBQWlCLENBRWpCLGlCQUFrQixDQUdsQixjQUFlLENBRGYsYUFBYyxDQUdkLGVBQWdCLENBRGhCLGNBQWUsQ0FFZixhQUFjLENBUGQsWUFBYSxDQUViLGlCQU1KLENBRUEsaUNBSUksc0JBQXVCLENBQ3ZCLFdBQVksQ0FFWixjQUFlLENBRGYsY0FBZSxDQUxmLGlCQUFrQixDQUVsQixVQUFXLENBRFgsUUFNSiIsImZpbGUiOiJNb2RhbC5tb2R1bGUuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLnNjcmltIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgei1pbmRleDogOTAwMDAwMDtcbn1cblxuLk1vZGFsIHtcbiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICBwYWRkaW5nOiAyMHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbWF4LXdpZHRoOiA5MCU7XG4gICAgbWF4LWhlaWdodDogOTAlO1xuICAgIG1pbi13aWR0aDogNTB2dztcbiAgICBtaW4taGVpZ2h0OiAzMHZoO1xuICAgIG92ZXJmbG93OiBhdXRvO1xufVxuXG4uY2xvc2VCdXR0b24ge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDEwcHg7XG4gICAgcmlnaHQ6IDEwcHg7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGZvbnQtc2l6ZTogMjRweDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG4iXX0= */";
|
|
7397
|
+
var styles$8 = {"scrim":"Modal-module_scrim__jKO-A","Modal":"Modal-module_Modal__k49dY","closeButton":"Modal-module_closeButton__dzf6l"};
|
|
7398
|
+
styleInject(css_248z$9);
|
|
7279
7399
|
|
|
7280
7400
|
/**
|
|
7281
7401
|
*
|
|
@@ -7293,7 +7413,7 @@
|
|
|
7293
7413
|
window.removeEventListener('keydown', handleKeyDown);
|
|
7294
7414
|
};
|
|
7295
7415
|
}, [onClose]);
|
|
7296
|
-
return reactDom.createPortal(jsxRuntime.jsx("div", { className: styles$
|
|
7416
|
+
return reactDom.createPortal(jsxRuntime.jsx("div", { className: styles$8.scrim, onClick: onClose, children: jsxRuntime.jsxs("div", { className: classNames(styles$8.Modal, className), onClick: (e) => e.stopPropagation(), children: [jsxRuntime.jsx("button", { className: styles$8.closeButton, onClick: onClose, children: "\u00D7" }), children] }) }), document.body);
|
|
7297
7417
|
}
|
|
7298
7418
|
|
|
7299
7419
|
/**
|
|
@@ -7378,9 +7498,9 @@
|
|
|
7378
7498
|
// <- [๐ฑโ๐] Buttons into genesis book
|
|
7379
7499
|
// <- TODO: [๐ฑโ๐] generateBookBoilerplate and deprecate `DEFAULT_BOOK`
|
|
7380
7500
|
|
|
7381
|
-
var css_248z$
|
|
7382
|
-
var styles$
|
|
7383
|
-
styleInject(css_248z$
|
|
7501
|
+
var css_248z$8 = ".BookEditor-module_BookEditor__s-0PU{width:100%}.BookEditor-module_bookEditorContainer__wLMwM{box-sizing:border-box;height:100%;padding:10px 25px 0;position:relative;width:100%}.BookEditor-module_bookEditorContainer__wLMwM.BookEditor-module_isVerbose__VQ6iL{background-color:rgba(0,0,0,.05);outline:1px dotted rgba(0,0,0,.5)}.BookEditor-module_isVerbose__VQ6iL{outline:2px dotted #ff7526}.BookEditor-module_bookEditorWrapper__twppD{background-color:#fff;border:1px solid rgba(209,213,219,.8);border-radius:1rem;box-shadow:0 1px 2px 0 rgba(0,0,0,.05);overflow:hidden;padding-top:10px;transition:box-shadow .2s ease-in-out}.BookEditor-module_isVerbose__VQ6iL .BookEditor-module_bookEditorWrapper__twppD{overflow:visible}.BookEditor-module_bookEditorWrapper__twppD:hover{box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06)}.BookEditor-module_bookEditorWrapper__twppD.BookEditor-module_isBorderRadiusDisabled__h1I3v{border-radius:0}.BookEditor-module_dropOverlay__xWWoX{align-items:center;background-color:rgba(0,0,0,.5);bottom:0;color:#fff;display:flex;font-size:1.5rem;justify-content:center;left:0;pointer-events:none;position:absolute;right:0;top:0;z-index:100}.BookEditor-module_bookEditorActionbar__KW6dc{position:absolute;right:55px;top:10px;z-index:100}.BookEditor-module_fullscreen__rktsl{border:none;border-radius:0;bottom:0;box-shadow:none;height:100%;left:0;padding-top:50px;position:fixed;right:0;top:0;width:100%;z-index:9999}.BookEditor-module_button__hS390{align-items:center;background-color:#fff;border:1px solid #d1d5db;border-radius:.375rem;box-shadow:0 1px 2px 0 rgba(0,0,0,.05);color:#374151;cursor:pointer;display:inline-flex;gap:.5rem;padding:.5rem 1rem;transition:all .2s ease-in-out}.BookEditor-module_button__hS390:hover{background-color:#f9fafb;border-color:#b7bcce;box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkJvb2tFZGl0b3IubW9kdWxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxQ0FFSSxVQUNKLENBRUEsOENBS0kscUJBQXNCLENBSHRCLFdBQVksQ0FFWixtQkFBb0IsQ0FEcEIsaUJBQWtCLENBRmxCLFVBS0osQ0FFQSxpRkFFSSxnQ0FBcUMsQ0FDckMsaUNBRUosQ0FFQSxvQ0FDSSwwQkFDSixDQUVBLDRDQUtJLHFCQUF1QixDQUR2QixxQ0FBMEMsQ0FGMUMsa0JBQW1CLENBSW5CLHNDQUEyQyxDQUwzQyxlQUFnQixDQUVoQixnQkFBaUIsQ0FJakIscUNBQ0osQ0FDQSxnRkFFSSxnQkFFSixDQUVBLGtEQUNJLHVFQUNKLENBVUEsNEZBQ0ksZUFDSixDQUVBLHNDQVNJLGtCQUFtQixDQUhuQiwrQkFBb0MsQ0FEcEMsUUFBUyxDQUVULFVBQVksQ0FDWixZQUFhLENBR2IsZ0JBQWlCLENBRGpCLHNCQUF1QixDQVB2QixNQUFPLENBVVAsbUJBQW9CLENBWnBCLGlCQUFrQixDQUdsQixPQUFRLENBRlIsS0FBTSxDQVVOLFdBRUosQ0FRQSw4Q0FDSSxpQkFBa0IsQ0FFbEIsVUFBVyxDQURYLFFBQVMsQ0FFVCxXQUNKLENBRUEscUNBV0ksV0FBWSxDQUZaLGVBQWdCLENBSmhCLFFBQVMsQ0FPVCxlQUFnQixDQUxoQixXQUFZLENBSlosTUFBTyxDQU9QLGdCQUFpQixDQVRqQixjQUFlLENBR2YsT0FBUSxDQUZSLEtBQU0sQ0FJTixVQUFXLENBRVgsWUFLSixDQUVBLGlDQU9JLGtCQUFtQixDQU5uQixxQkFBc0IsQ0FDdEIsd0JBQXlCLENBQ3pCLHFCQUF1QixDQU92QixzQ0FBMkMsQ0FEM0MsYUFBYyxDQUpkLGNBQWUsQ0FDZixtQkFBb0IsQ0FFcEIsU0FBVyxDQUpYLGtCQUFvQixDQU9wQiw4QkFDSixDQUVBLHVDQUNJLHdCQUF5QixDQUN6QixvQkFBcUIsQ0FDckIsaUVBQ0oiLCJmaWxlIjoiQm9va0VkaXRvci5tb2R1bGUuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLkJvb2tFZGl0b3Ige1xuICAgIC8qIGhlaWdodDogNDUwcHg7ICovXG4gICAgd2lkdGg6IDEwMCU7XG59XG5cbi5ib29rRWRpdG9yQ29udGFpbmVyIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHBhZGRpbmc6IDEwcHggMjVweCAwO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG5cbi5ib29rRWRpdG9yQ29udGFpbmVyLmlzVmVyYm9zZSB7XG4gICAgLyoqL1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4wNSk7XG4gICAgb3V0bGluZTogMXB4IGRvdHRlZCByZ2JhKDAsIDAsIDAsIDAuNSk7XG4gICAgLyoqL1xufVxuXG4uaXNWZXJib3NlIHtcbiAgICBvdXRsaW5lOiAycHggZG90dGVkIHJnYigyNTUgMTE3IDM4KTtcbn1cblxuLmJvb2tFZGl0b3JXcmFwcGVyIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgcGFkZGluZy10b3A6IDEwcHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyMDksIDIxMywgMjE5LCAwLjgpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgIGJveC1zaGFkb3c6IDAgMXB4IDJweCAwIHJnYmEoMCwgMCwgMCwgMC4wNSk7XG4gICAgdHJhbnNpdGlvbjogYm94LXNoYWRvdyAwLjJzIGVhc2UtaW4tb3V0O1xufVxuLmlzVmVyYm9zZSAuYm9va0VkaXRvcldyYXBwZXIge1xuICAgIC8qKi9cbiAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgICAvKiovXG59XG5cbi5ib29rRWRpdG9yV3JhcHBlcjpob3ZlciB7XG4gICAgYm94LXNoYWRvdzogMCA0cHggNnB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjEpLCAwIDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMDYpO1xufVxuXG4uYm9va0VkaXRvcldyYXBwZXI6Zm9jdXMtd2l0aGluIHtcbiAgICAvKlxuICAgIG91dGxpbmU6IDJweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICBvdXRsaW5lLW9mZnNldDogMnB4O1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDk5LCAxMDIsIDI0MSwgMC40KTtcbiAgICAqL1xufVxuXG4uYm9va0VkaXRvcldyYXBwZXIuaXNCb3JkZXJSYWRpdXNEaXNhYmxlZCB7XG4gICAgYm9yZGVyLXJhZGl1czogMDtcbn1cblxuLmRyb3BPdmVybGF5IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm90dG9tOiAwO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGZvbnQtc2l6ZTogMS41cmVtO1xuICAgIHotaW5kZXg6IDEwMDtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLypcbi5ib29rRWRpdG9yQ29udGFpbmVyIDpnbG9iYWwoLnZpZXctbGluZSkge1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWVlOyAvKiA8LSBOb3RlOiBgUFJPTVBUQk9PS19TWU5UQVhfQ09MT1JTLkxJTkVgICogL1xufVxuKi9cblxuLmJvb2tFZGl0b3JBY3Rpb25iYXIge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDEwcHg7XG4gICAgcmlnaHQ6IDU1cHg7XG4gICAgei1pbmRleDogMTAwO1xufVxuXG4uZnVsbHNjcmVlbiB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgei1pbmRleDogOTk5OTtcbiAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgIHBhZGRpbmctdG9wOiA1MHB4O1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBib3gtc2hhZG93OiBub25lO1xufVxuXG4uYnV0dG9uIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkMWQ1ZGI7XG4gICAgYm9yZGVyLXJhZGl1czogMC4zNzVyZW07XG4gICAgcGFkZGluZzogMC41cmVtIDFyZW07XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiAwLjVyZW07XG4gICAgY29sb3I6ICMzNzQxNTE7XG4gICAgYm94LXNoYWRvdzogMCAxcHggMnB4IDAgcmdiYSgwLCAwLCAwLCAwLjA1KTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluLW91dDtcbn1cblxuLmJ1dHRvbjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y5ZmFmYjtcbiAgICBib3JkZXItY29sb3I6ICNiN2JjY2U7XG4gICAgYm94LXNoYWRvdzogMCAxcHggM3B4IDAgcmdiYSgwLCAwLCAwLCAwLjEpLCAwIDFweCAycHggMCByZ2JhKDAsIDAsIDAsIDAuMDYpO1xufVxuIl19 */";
|
|
7502
|
+
var styles$7 = {"BookEditor":"BookEditor-module_BookEditor__s-0PU","bookEditorContainer":"BookEditor-module_bookEditorContainer__wLMwM","isVerbose":"BookEditor-module_isVerbose__VQ6iL","bookEditorWrapper":"BookEditor-module_bookEditorWrapper__twppD","isBorderRadiusDisabled":"BookEditor-module_isBorderRadiusDisabled__h1I3v","dropOverlay":"BookEditor-module_dropOverlay__xWWoX","bookEditorActionbar":"BookEditor-module_bookEditorActionbar__KW6dc","fullscreen":"BookEditor-module_fullscreen__rktsl","button":"BookEditor-module_button__hS390"};
|
|
7503
|
+
styleInject(css_248z$8);
|
|
7384
7504
|
|
|
7385
7505
|
/**
|
|
7386
7506
|
* Converts Blob, File or MediaSource to url using URL.createObjectURL
|
|
@@ -7500,6 +7620,101 @@
|
|
|
7500
7620
|
* Note: [๐ต] Code in this file should never be published outside of `@promptbook/browser`
|
|
7501
7621
|
*/
|
|
7502
7622
|
|
|
7623
|
+
/**
|
|
7624
|
+
* Downloads a file with the given content and filename
|
|
7625
|
+
*
|
|
7626
|
+
* @private utility of `<Chat/>` component
|
|
7627
|
+
*/
|
|
7628
|
+
function downloadFile(content, filename, mimeType) {
|
|
7629
|
+
const blob = new Blob([content], { type: mimeType });
|
|
7630
|
+
const url = URL.createObjectURL(blob);
|
|
7631
|
+
const link = document.createElement('a');
|
|
7632
|
+
link.href = url;
|
|
7633
|
+
link.download = filename;
|
|
7634
|
+
document.body.appendChild(link);
|
|
7635
|
+
link.click();
|
|
7636
|
+
document.body.removeChild(link);
|
|
7637
|
+
// Clean up the URL object
|
|
7638
|
+
setTimeout(() => URL.revokeObjectURL(url), 100);
|
|
7639
|
+
}
|
|
7640
|
+
|
|
7641
|
+
var css_248z$7 = ".CodeBlock-module_CodeBlock__6K33Z{border:1px solid #444;border-radius:5px;margin:10px 0;overflow:hidden}.CodeBlock-module_CodeBlockHeader__tfOwl{align-items:center;background-color:#2d2d2d;border-bottom:1px solid #444;color:#ccc;display:flex;font-size:.8em;justify-content:space-between;padding:5px 10px}.CodeBlock-module_CodeBlockButtons__rz1VO{display:flex;gap:8px}.CodeBlock-module_CopyButton__M07tp,.CodeBlock-module_CreateAgentButton__kUEnp,.CodeBlock-module_DownloadButton__ZTrzQ{align-items:center;background:transparent;border:none;color:#aaa;cursor:pointer;display:flex;font-size:inherit;gap:5px;padding:0;transition:color .2s}.CodeBlock-module_CopyButton__M07tp:hover,.CodeBlock-module_CreateAgentButton__kUEnp:hover,.CodeBlock-module_DownloadButton__ZTrzQ:hover{color:#fff}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNvZGVCbG9jay5tb2R1bGUuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG1DQUlJLHFCQUFzQixDQUZ0QixpQkFBa0IsQ0FEbEIsYUFBYyxDQUVkLGVBRUosQ0FFQSx5Q0FRSSxrQkFBbUIsQ0FQbkIsd0JBQXlCLENBSXpCLDRCQUE2QixDQUg3QixVQUFXLENBSVgsWUFBYSxDQUZiLGNBQWdCLENBR2hCLDZCQUE4QixDQUo5QixnQkFNSixDQUVBLDBDQUNJLFlBQWEsQ0FDYixPQUNKLENBRUEsdUhBVUksa0JBQW1CLENBUG5CLHNCQUF1QixDQUN2QixXQUFZLENBQ1osVUFBVyxDQUNYLGNBQWUsQ0FHZixZQUFhLENBRmIsaUJBQWtCLENBSWxCLE9BQVEsQ0FIUixTQUFVLENBSVYsb0JBQ0osQ0FFQSx5SUFHSSxVQUNKIiwiZmlsZSI6IkNvZGVCbG9jay5tb2R1bGUuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLkNvZGVCbG9jayB7XG4gICAgbWFyZ2luOiAxMHB4IDA7XG4gICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgYm9yZGVyOiAxcHggc29saWQgIzQ0NDsgLyogRGFyayBtb2RlIGJvcmRlciAqL1xufVxuXG4uQ29kZUJsb2NrSGVhZGVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmQyZDJkO1xuICAgIGNvbG9yOiAjY2NjO1xuICAgIHBhZGRpbmc6IDVweCAxMHB4O1xuICAgIGZvbnQtc2l6ZTogMC44ZW07XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICM0NDQ7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuLkNvZGVCbG9ja0J1dHRvbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZ2FwOiA4cHg7XG59XG5cbi5Db3B5QnV0dG9uLFxuLkRvd25sb2FkQnV0dG9uLFxuLkNyZWF0ZUFnZW50QnV0dG9uIHtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgY29sb3I6ICNhYWE7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDVweDtcbiAgICB0cmFuc2l0aW9uOiBjb2xvciAwLjJzO1xufVxuXG4uQ29weUJ1dHRvbjpob3Zlcixcbi5Eb3dubG9hZEJ1dHRvbjpob3Zlcixcbi5DcmVhdGVBZ2VudEJ1dHRvbjpob3ZlciB7XG4gICAgY29sb3I6ICNmZmY7XG59XG4iXX0= */";
|
|
7642
|
+
var styles$6 = {"CodeBlock":"CodeBlock-module_CodeBlock__6K33Z","CodeBlockHeader":"CodeBlock-module_CodeBlockHeader__tfOwl","CodeBlockButtons":"CodeBlock-module_CodeBlockButtons__rz1VO","CopyButton":"CodeBlock-module_CopyButton__M07tp","DownloadButton":"CodeBlock-module_DownloadButton__ZTrzQ","CreateAgentButton":"CodeBlock-module_CreateAgentButton__kUEnp"};
|
|
7643
|
+
styleInject(css_248z$7);
|
|
7644
|
+
|
|
7645
|
+
const LANGUAGE_EXTENSIONS = {
|
|
7646
|
+
python: 'py',
|
|
7647
|
+
javascript: 'js',
|
|
7648
|
+
typescript: 'ts',
|
|
7649
|
+
json: 'json',
|
|
7650
|
+
html: 'html',
|
|
7651
|
+
css: 'css',
|
|
7652
|
+
markdown: 'md',
|
|
7653
|
+
text: 'txt',
|
|
7654
|
+
xml: 'xml',
|
|
7655
|
+
sql: 'sql',
|
|
7656
|
+
sh: 'sh',
|
|
7657
|
+
bash: 'sh',
|
|
7658
|
+
zsh: 'sh',
|
|
7659
|
+
yaml: 'yaml',
|
|
7660
|
+
yml: 'yaml',
|
|
7661
|
+
book: 'book',
|
|
7662
|
+
};
|
|
7663
|
+
/**
|
|
7664
|
+
* Component to render a code block with syntax highlighting, copy, download, and create agent options.
|
|
7665
|
+
*
|
|
7666
|
+
* @private Internal utility of `<ChatMessage />` component
|
|
7667
|
+
*/
|
|
7668
|
+
function CodeBlock({ code, language, className, onCreateAgent }) {
|
|
7669
|
+
const lines = react.useMemo(() => code.split('\n').length, [code]);
|
|
7670
|
+
// Note: 19px is approx line height for fontSize 14. +20 for padding.
|
|
7671
|
+
// We cap at 400px to avoid taking too much space, allowing scroll.
|
|
7672
|
+
const height = Math.min(Math.max(lines * 19, 19), 400);
|
|
7673
|
+
const [copied, setCopied] = react.useState(false);
|
|
7674
|
+
const handleDownload = () => {
|
|
7675
|
+
const lang = (language === null || language === void 0 ? void 0 : language.trim().toLowerCase()) || 'text';
|
|
7676
|
+
const extension = LANGUAGE_EXTENSIONS[lang] || lang;
|
|
7677
|
+
const filename = `file.${extension}`;
|
|
7678
|
+
downloadFile(code, filename, 'text/plain');
|
|
7679
|
+
};
|
|
7680
|
+
const handleCopy = async () => {
|
|
7681
|
+
try {
|
|
7682
|
+
await navigator.clipboard.writeText(code);
|
|
7683
|
+
setCopied(true);
|
|
7684
|
+
setTimeout(() => setCopied(false), 2000);
|
|
7685
|
+
}
|
|
7686
|
+
catch (error) {
|
|
7687
|
+
console.error('Failed to copy code to clipboard:', error);
|
|
7688
|
+
}
|
|
7689
|
+
};
|
|
7690
|
+
const header = language ? (jsxRuntime.jsxs("div", { className: styles$6.CodeBlockHeader, children: [jsxRuntime.jsx("span", { children: language }), jsxRuntime.jsxs("div", { className: styles$6.CodeBlockButtons, children: [jsxRuntime.jsx("button", { onClick: handleCopy, className: styles$6.CopyButton, title: "Copy to clipboard", children: copied ? 'Copied!' : 'Copy' }), jsxRuntime.jsx("button", { onClick: handleDownload, className: styles$6.DownloadButton, title: "Download code", children: "Download" }), (language === null || language === void 0 ? void 0 : language.trim().toLowerCase()) === 'book' && onCreateAgent && (jsxRuntime.jsx("button", { onClick: () => onCreateAgent(code), className: styles$6.CreateAgentButton, title: "Create agent from this book", children: "Create Agent" }))] })] })) : null;
|
|
7691
|
+
if ((language === null || language === void 0 ? void 0 : language.trim().toLowerCase()) === 'book') {
|
|
7692
|
+
return (jsxRuntime.jsxs("div", { className: classNames(styles$6.CodeBlock, className), children: [header, jsxRuntime.jsx(BookEditor, { value: code, isReadonly: true, height: lines * 25 /* <- [๐ง ] A bit more than 19px to accommodate BookEditor lines */ })] }));
|
|
7693
|
+
}
|
|
7694
|
+
return (jsxRuntime.jsxs("div", { className: classNames(styles$6.CodeBlock, className), children: [header, jsxRuntime.jsx(Editor__default["default"], { height: `${height}px`, language: language || 'plaintext', value: code, theme: "vs-dark", options: {
|
|
7695
|
+
readOnly: true,
|
|
7696
|
+
minimap: { enabled: false },
|
|
7697
|
+
scrollBeyondLastLine: false,
|
|
7698
|
+
lineNumbers: 'on',
|
|
7699
|
+
folding: false,
|
|
7700
|
+
glyphMargin: false,
|
|
7701
|
+
fontFamily: 'Consolas, "Courier New", monospace',
|
|
7702
|
+
fontSize: 14,
|
|
7703
|
+
lineHeight: 19,
|
|
7704
|
+
overviewRulerLanes: 0,
|
|
7705
|
+
hideCursorInOverviewRuler: true,
|
|
7706
|
+
renderLineHighlight: 'none',
|
|
7707
|
+
contextmenu: false,
|
|
7708
|
+
scrollbar: {
|
|
7709
|
+
vertical: 'auto',
|
|
7710
|
+
horizontal: 'auto',
|
|
7711
|
+
useShadows: false,
|
|
7712
|
+
},
|
|
7713
|
+
domReadOnly: true,
|
|
7714
|
+
wordWrap: 'off',
|
|
7715
|
+
} })] }));
|
|
7716
|
+
}
|
|
7717
|
+
|
|
7503
7718
|
var css_248z$6 = ".MarkdownContent-module_MarkdownContent__2JuyX h1{font-size:2em}.MarkdownContent-module_MarkdownContent__2JuyX h2{font-size:1.75em}.MarkdownContent-module_MarkdownContent__2JuyX h3{font-size:1.5em}.MarkdownContent-module_MarkdownContent__2JuyX h4{font-size:1.25em}.MarkdownContent-module_MarkdownContent__2JuyX h5{font-size:1.1em}.MarkdownContent-module_MarkdownContent__2JuyX p{text-wrap:auto}.MarkdownContent-module_MarkdownContent__2JuyX ul{list-style:disc;margin-left:20px}.MarkdownContent-module_MarkdownContent__2JuyX ol{list-style:decimal;margin-left:20px}.MarkdownContent-module_MarkdownContent__2JuyX blockquote,.MarkdownContent-module_MarkdownContent__2JuyX img,.MarkdownContent-module_MarkdownContent__2JuyX pre,.MarkdownContent-module_MarkdownContent__2JuyX table{border-radius:8px;margin-bottom:10px;margin-top:10px}.MarkdownContent-module_MarkdownContent__2JuyX pre{background:#000;border:none;box-shadow:none;color:#fff;display:block;font-size:inherit;line-height:inherit;padding:1em}.MarkdownContent-module_MarkdownContent__2JuyX blockquote{background:#ffffffcc;border:none;box-shadow:none;color:#000;display:block;font-size:inherit;line-height:inherit;padding:1em}.MarkdownContent-module_MarkdownContent__2JuyX code{background:#cccccc55;border:none;box-shadow:none;color:inherit;display:inline-block;font-size:inherit;line-height:inherit;margin:0;padding:0}.MarkdownContent-module_MarkdownContent__2JuyX pre code{background-color:#000000cc;border-radius:8px}.MarkdownContent-module_MarkdownContent__2JuyX .MarkdownContent-module_chat-code-block__ZffFg{background:#181c23;border-color:#23272f;box-shadow:0 2px 8px rgba(0,0,0,.12);color:#f8fafc;font-family:Fira Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:14px;line-height:1.6;overflow-x:auto}.MarkdownContent-module_MarkdownContent__2JuyX .MarkdownContent-module_chat-code-block__ZffFg code{background:none!important;border:none!important;box-shadow:none!important;color:inherit!important;display:block;font-family:inherit!important;font-size:inherit!important;overflow-x:auto;padding:0!important;white-space:pre;word-break:break-word}.MarkdownContent-module_MarkdownContent__2JuyX table{background:#f8fafc;border-collapse:separate;border-spacing:0;box-shadow:0 2px 8px rgba(0,0,0,.08);color:#17223b;font-size:14px;margin:16px 0;width:100%}.MarkdownContent-module_MarkdownContent__2JuyX td,.MarkdownContent-module_MarkdownContent__2JuyX th{background:none;border-bottom:1px solid #d1dbe8;color:#17223b;padding:10px 16px;text-align:left}.MarkdownContent-module_MarkdownContent__2JuyX th{background:linear-gradient(90deg,#eaf3fa 80%,#d1e3f8);border-bottom:2px solid #b5c7de;color:#17223b;font-weight:700}.MarkdownContent-module_MarkdownContent__2JuyX tr:last-child td{border-bottom:none}.MarkdownContent-module_MarkdownContent__2JuyX tr:nth-child(2n) td{background:#eaf3fa}.MarkdownContent-module_MarkdownContent__2JuyX tr:hover td{background:#cbe0f7;transition:background .2s}.MarkdownContent-module_MarkdownContent__2JuyX table{border-radius:12px;overflow:hidden}.MarkdownContent-module_MarkdownContent__2JuyX td:first-child,.MarkdownContent-module_MarkdownContent__2JuyX th:first-child{border-top-left-radius:12px}.MarkdownContent-module_MarkdownContent__2JuyX td:last-child,.MarkdownContent-module_MarkdownContent__2JuyX th:last-child{border-top-right-radius:12px}.MarkdownContent-module_citation__11SMw{background:#e7f1ff;border-radius:4px;color:#007bff;cursor:default;display:inline-block;font-size:.7em;font-weight:700;margin:0 2px;padding:0 4px;user-select:none;vertical-align:super}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1hcmtkb3duQ29udGVudC5tb2R1bGUuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGtEQUNJLGFBQ0osQ0FFQSxrREFDSSxnQkFDSixDQUVBLGtEQUNJLGVBQ0osQ0FFQSxrREFDSSxnQkFDSixDQUVBLGtEQUNJLGVBQ0osQ0FFQSxpREFDSSxjQUNKLENBRUEsa0RBQ0ksZUFBZ0IsQ0FDaEIsZ0JBQ0osQ0FFQSxrREFDSSxrQkFBbUIsQ0FDbkIsZ0JBQ0osQ0FFQSxxTkFNSSxpQkFBa0IsQ0FEbEIsa0JBQW1CLENBRG5CLGVBR0osQ0FFQSxtREFJSSxlQUFxQixDQUZyQixXQUFZLENBQ1osZUFBZ0IsQ0FJaEIsVUFBVyxDQU5YLGFBQWMsQ0FJZCxpQkFBa0IsQ0FDbEIsbUJBQW9CLENBRXBCLFdBQ0osQ0FFQSwwREFJSSxvQkFBcUIsQ0FGckIsV0FBWSxDQUNaLGVBQWdCLENBSWhCLFVBQVcsQ0FOWCxhQUFjLENBSWQsaUJBQWtCLENBQ2xCLG1CQUFvQixDQUVwQixXQUNKLENBRUEsb0RBTUksb0JBQXFCLENBRnJCLFdBQVksQ0FDWixlQUFnQixDQUloQixhQUFjLENBUmQsb0JBQXFCLENBTXJCLGlCQUFrQixDQUNsQixtQkFBb0IsQ0FOcEIsUUFBUyxDQUNULFNBT0osQ0FFQSx3REFDSSwwQkFBMkIsQ0FDM0IsaUJBQ0osQ0FFQSw4RkFDSSxrQkFBbUIsQ0FLbkIsb0JBQXFCLENBQ3JCLG9DQUF5QyxDQUx6QyxhQUFjLENBTWQsOERBQTJFLENBTDNFLGNBQWUsQ0FDZixlQUFnQixDQUNoQixlQUlKLENBQ0EsbUdBQ0kseUJBQTJCLENBSzNCLHFCQUF1QixDQUN2Qix5QkFBMkIsQ0FMM0IsdUJBQXlCLENBU3pCLGFBQWMsQ0FSZCw2QkFBK0IsQ0FDL0IsMkJBQTZCLENBTTdCLGVBQWdCLENBTGhCLG1CQUFxQixDQUdyQixlQUFnQixDQUNoQixxQkFHSixDQUNBLHFEQUtJLGtCQUFtQixDQUhuQix3QkFBeUIsQ0FDekIsZ0JBQWlCLENBS2pCLG9DQUF5QyxDQUV6QyxhQUFjLENBRGQsY0FBZSxDQUxmLGFBQWMsQ0FIZCxVQVVKLENBQ0Esb0dBTUksZUFBZ0IsQ0FIaEIsK0JBQWdDLENBRWhDLGFBQWMsQ0FIZCxpQkFBa0IsQ0FFbEIsZUFHSixDQUNBLGtEQUNJLHFEQUE2RCxDQUc3RCwrQkFBZ0MsQ0FEaEMsYUFBYyxDQURkLGVBR0osQ0FDQSxnRUFDSSxrQkFDSixDQUNBLG1FQUNJLGtCQUNKLENBQ0EsMkRBQ0ksa0JBQW1CLENBQ25CLHlCQUNKLENBQ0EscURBQ0ksa0JBQW1CLENBQ25CLGVBQ0osQ0FDQSw0SEFFSSwyQkFDSixDQUNBLDBIQUVJLDRCQUNKLENBRUEsd0NBTUksa0JBQW1CLENBRW5CLGlCQUFrQixDQUhsQixhQUFjLENBS2QsY0FBZSxDQVRmLG9CQUFxQixDQUVyQixjQUFnQixDQUNoQixlQUFpQixDQUtqQixZQUFhLENBRmIsYUFBYyxDQUlkLGdCQUFpQixDQVRqQixvQkFVSiIsImZpbGUiOiJNYXJrZG93bkNvbnRlbnQubW9kdWxlLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5NYXJrZG93bkNvbnRlbnQgaDEge1xuICAgIGZvbnQtc2l6ZTogMmVtO1xufVxuXG4uTWFya2Rvd25Db250ZW50IGgyIHtcbiAgICBmb250LXNpemU6IDEuNzVlbTtcbn1cblxuLk1hcmtkb3duQ29udGVudCBoMyB7XG4gICAgZm9udC1zaXplOiAxLjVlbTtcbn1cblxuLk1hcmtkb3duQ29udGVudCBoNCB7XG4gICAgZm9udC1zaXplOiAxLjI1ZW07XG59XG5cbi5NYXJrZG93bkNvbnRlbnQgaDUge1xuICAgIGZvbnQtc2l6ZTogMS4xZW07XG59XG5cbi5NYXJrZG93bkNvbnRlbnQgcCB7XG4gICAgdGV4dC13cmFwOiBhdXRvO1xufVxuXG4uTWFya2Rvd25Db250ZW50IHVsIHtcbiAgICBsaXN0LXN0eWxlOiBkaXNjO1xuICAgIG1hcmdpbi1sZWZ0OiAyMHB4O1xufVxuXG4uTWFya2Rvd25Db250ZW50IG9sIHtcbiAgICBsaXN0LXN0eWxlOiBkZWNpbWFsO1xuICAgIG1hcmdpbi1sZWZ0OiAyMHB4O1xufVxuXG4uTWFya2Rvd25Db250ZW50IGltZyxcbi5NYXJrZG93bkNvbnRlbnQgcHJlLFxuLk1hcmtkb3duQ29udGVudCBibG9ja3F1b3RlLFxuLk1hcmtkb3duQ29udGVudCB0YWJsZSB7XG4gICAgbWFyZ2luLXRvcDogMTBweDtcbiAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbn1cblxuLk1hcmtkb3duQ29udGVudCBwcmUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICAgIGJhY2tncm91bmQ6ICMwMDAwMDBmZjtcbiAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgcGFkZGluZzogMWVtO1xufVxuXG4uTWFya2Rvd25Db250ZW50IGJsb2NrcXVvdGUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICAgIGJhY2tncm91bmQ6ICNmZmZmZmZjYztcbiAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG4gICAgY29sb3I6ICMwMDA7XG4gICAgcGFkZGluZzogMWVtO1xufVxuXG4uTWFya2Rvd25Db250ZW50IGNvZGUge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICBiYWNrZ3JvdW5kOiAjY2NjY2NjNTU7XG4gICAgZm9udC1zaXplOiBpbmhlcml0O1xuICAgIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xuICAgIGNvbG9yOiBpbmhlcml0O1xufVxuXG4uTWFya2Rvd25Db250ZW50IHByZSBjb2RlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwY2M7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xufVxuXG4uTWFya2Rvd25Db250ZW50IC5jaGF0LWNvZGUtYmxvY2sge1xuICAgIGJhY2tncm91bmQ6ICMxODFjMjM7XG4gICAgY29sb3I6ICNmOGZhZmM7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxLjY7XG4gICAgb3ZlcmZsb3cteDogYXV0bztcbiAgICBib3JkZXItY29sb3I6ICMyMzI3MmY7XG4gICAgYm94LXNoYWRvdzogMCAycHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XG4gICAgZm9udC1mYW1pbHk6ICdGaXJhIE1vbm8nLCAnTWVubG8nLCAnQ29uc29sYXMnLCAnTGliZXJhdGlvbiBNb25vJywgbW9ub3NwYWNlO1xufVxuLk1hcmtkb3duQ29udGVudCAuY2hhdC1jb2RlLWJsb2NrIGNvZGUge1xuICAgIGJhY2tncm91bmQ6IG5vbmUgIWltcG9ydGFudDtcbiAgICBjb2xvcjogaW5oZXJpdCAhaW1wb3J0YW50O1xuICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0ICFpbXBvcnRhbnQ7XG4gICAgZm9udC1zaXplOiBpbmhlcml0ICFpbXBvcnRhbnQ7XG4gICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICAgIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50O1xuICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbiAgICB3aGl0ZS1zcGFjZTogcHJlO1xuICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG4gICAgb3ZlcmZsb3cteDogYXV0bztcbiAgICBkaXNwbGF5OiBibG9jaztcbn1cbi5NYXJrZG93bkNvbnRlbnQgdGFibGUge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7XG4gICAgYm9yZGVyLXNwYWNpbmc6IDA7XG4gICAgbWFyZ2luOiAxNnB4IDA7XG4gICAgYmFja2dyb3VuZDogI2Y4ZmFmYzsgLyogU3Ryb25nZXIgbGlnaHQgYmFja2dyb3VuZCBmb3IgY29udHJhc3QgKi9cbiAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgYm94LXNoYWRvdzogMCAycHggOHB4IHJnYmEoMCwgMCwgMCwgMC4wOCk7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIGNvbG9yOiAjMTcyMjNiOyAvKiBEYXJrIHRleHQgZm9yIGNvbnRyYXN0ICovXG59XG4uTWFya2Rvd25Db250ZW50IHRoLFxuLk1hcmtkb3duQ29udGVudCB0ZCB7XG4gICAgcGFkZGluZzogMTBweCAxNnB4O1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZDFkYmU4O1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgY29sb3I6ICMxNzIyM2I7IC8qIEVuc3VyZSBzdHJvbmcgdGV4dCBjb2xvciBmb3IgYWxsIGNlbGxzICovXG4gICAgYmFja2dyb3VuZDogbm9uZTtcbn1cbi5NYXJrZG93bkNvbnRlbnQgdGgge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgI2VhZjNmYSA4MCUsICNkMWUzZjggMTAwJSk7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBjb2xvcjogIzE3MjIzYjsgLyogU3Ryb25nIGhlYWRlciB0ZXh0ICovXG4gICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICNiNWM3ZGU7XG59XG4uTWFya2Rvd25Db250ZW50IHRyOmxhc3QtY2hpbGQgdGQge1xuICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG59XG4uTWFya2Rvd25Db250ZW50IHRyOm50aC1jaGlsZChldmVuKSB0ZCB7XG4gICAgYmFja2dyb3VuZDogI2VhZjNmYTtcbn1cbi5NYXJrZG93bkNvbnRlbnQgdHI6aG92ZXIgdGQge1xuICAgIGJhY2tncm91bmQ6ICNjYmUwZjc7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjJzO1xufVxuLk1hcmtkb3duQ29udGVudCB0YWJsZSB7XG4gICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLk1hcmtkb3duQ29udGVudCB0aDpmaXJzdC1jaGlsZCxcbi5NYXJrZG93bkNvbnRlbnQgdGQ6Zmlyc3QtY2hpbGQge1xuICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDEycHg7XG59XG4uTWFya2Rvd25Db250ZW50IHRoOmxhc3QtY2hpbGQsXG4uTWFya2Rvd25Db250ZW50IHRkOmxhc3QtY2hpbGQge1xuICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAxMnB4O1xufVxuXG4uY2l0YXRpb24ge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogc3VwZXI7XG4gICAgZm9udC1zaXplOiAwLjdlbTtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBjb2xvcjogIzAwN2JmZjtcbiAgICBiYWNrZ3JvdW5kOiAjZTdmMWZmO1xuICAgIHBhZGRpbmc6IDAgNHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICBtYXJnaW46IDAgMnB4O1xuICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcbn1cblxuLyoqXG4gKiBUT0RPOiBb8J+MiV0gRFJZIE1hcmtkb3duIHByaW1pdGl2ZXMgc3R5bGluZ1xuICovXG4iXX0= */";
|
|
7504
7719
|
var styles$5 = {"MarkdownContent":"MarkdownContent-module_MarkdownContent__2JuyX","chat-code-block":"MarkdownContent-module_chat-code-block__ZffFg","citation":"MarkdownContent-module_citation__11SMw"};
|
|
7505
7720
|
styleInject(css_248z$6);
|
|
@@ -7602,32 +7817,8 @@
|
|
|
7602
7817
|
}
|
|
7603
7818
|
try {
|
|
7604
7819
|
const processedMarkdown = renderMathInMarkdown(markdown);
|
|
7605
|
-
|
|
7606
|
-
if (typeof window
|
|
7607
|
-
html = html.replace(/<pre><code( class="language-([^"]+)")?>([\s\S]*?)<\/code><\/pre>/g, (match, _langClass, lang, code) => {
|
|
7608
|
-
const decoded = code
|
|
7609
|
-
.replace(/&/g, '&')
|
|
7610
|
-
.replace(/</g, '<')
|
|
7611
|
-
.replace(/>/g, '>')
|
|
7612
|
-
.replace(/"/g, '"')
|
|
7613
|
-
.replace(/'/g, "'");
|
|
7614
|
-
const highlighted = lang
|
|
7615
|
-
? hljs__default["default"].highlight(decoded, { language: lang }).value
|
|
7616
|
-
: hljs__default["default"].highlightAuto(decoded).value;
|
|
7617
|
-
return `<pre class="chat-code-block"><code class="hljs${lang ? ' language-' + lang : ''}">${highlighted}</code></pre>`;
|
|
7618
|
-
});
|
|
7619
|
-
}
|
|
7620
|
-
else {
|
|
7621
|
-
if (html.match(/<pre><code/)) {
|
|
7622
|
-
const cssId = 'hljs-github-dark-css';
|
|
7623
|
-
if (!window.document.getElementById(cssId)) {
|
|
7624
|
-
const link = window.document.createElement('link');
|
|
7625
|
-
link.id = cssId;
|
|
7626
|
-
link.rel = 'stylesheet';
|
|
7627
|
-
link.href = 'https://book-components.ptbk.io/cdn/highlightjs/github-dark.css';
|
|
7628
|
-
window.document.head.appendChild(link);
|
|
7629
|
-
}
|
|
7630
|
-
}
|
|
7820
|
+
const html = chatMarkdownConverter.makeHtml(processedMarkdown);
|
|
7821
|
+
if (typeof window !== 'undefined') {
|
|
7631
7822
|
if (html.match(/class="katex/)) {
|
|
7632
7823
|
const katexCssId = 'katex-css';
|
|
7633
7824
|
if (!window.document.getElementById(katexCssId)) {
|
|
@@ -7638,38 +7829,6 @@
|
|
|
7638
7829
|
window.document.head.appendChild(link);
|
|
7639
7830
|
}
|
|
7640
7831
|
}
|
|
7641
|
-
const parser = new window.DOMParser();
|
|
7642
|
-
const doc = parser.parseFromString(html, 'text/html');
|
|
7643
|
-
doc.querySelectorAll('pre > code').forEach((codeEl) => {
|
|
7644
|
-
var _a;
|
|
7645
|
-
const preEl = codeEl.parentElement;
|
|
7646
|
-
if (!preEl)
|
|
7647
|
-
return;
|
|
7648
|
-
const lang = (_a = Array.from(codeEl.classList)
|
|
7649
|
-
.find((cls) => cls.startsWith('language-'))) === null || _a === void 0 ? void 0 : _a.replace('language-', '');
|
|
7650
|
-
const code = codeEl.innerHTML;
|
|
7651
|
-
let highlighted = '';
|
|
7652
|
-
try {
|
|
7653
|
-
const decoded = code
|
|
7654
|
-
.replace(/&/g, '&')
|
|
7655
|
-
.replace(/</g, '<')
|
|
7656
|
-
.replace(/>/g, '>')
|
|
7657
|
-
.replace(/"/g, '"')
|
|
7658
|
-
.replace(/'/g, "'");
|
|
7659
|
-
highlighted = lang
|
|
7660
|
-
? hljs__default["default"].highlight(decoded, { language: lang }).value
|
|
7661
|
-
: hljs__default["default"].highlightAuto(decoded).value;
|
|
7662
|
-
}
|
|
7663
|
-
catch (_b) {
|
|
7664
|
-
highlighted = code;
|
|
7665
|
-
}
|
|
7666
|
-
codeEl.innerHTML = highlighted;
|
|
7667
|
-
codeEl.classList.add('hljs');
|
|
7668
|
-
if (lang)
|
|
7669
|
-
codeEl.classList.add(`language-${lang}`);
|
|
7670
|
-
preEl.classList.add('chat-code-block');
|
|
7671
|
-
});
|
|
7672
|
-
html = doc.body.innerHTML;
|
|
7673
7832
|
}
|
|
7674
7833
|
const sanitizedHtml = html
|
|
7675
7834
|
.replace(/<\s*(script|style|iframe|object|embed)[^>]*>[\s\S]*?<\s*\/\s*\1\s*>/gi, '')
|
|
@@ -7699,9 +7858,50 @@
|
|
|
7699
7858
|
* @public exported from `@promptbook/components`
|
|
7700
7859
|
*/
|
|
7701
7860
|
function MarkdownContent(props) {
|
|
7702
|
-
const { content, className } = props;
|
|
7861
|
+
const { content, className, onCreateAgent } = props;
|
|
7703
7862
|
const htmlContent = react.useMemo(() => renderMarkdown(content), [content]);
|
|
7704
|
-
|
|
7863
|
+
const containerRef = react.useRef(null);
|
|
7864
|
+
const rootsRef = react.useRef([]);
|
|
7865
|
+
react.useEffect(() => {
|
|
7866
|
+
// Cleanup previous roots
|
|
7867
|
+
rootsRef.current.forEach((root) => root.unmount());
|
|
7868
|
+
rootsRef.current = [];
|
|
7869
|
+
if (!containerRef.current) {
|
|
7870
|
+
return;
|
|
7871
|
+
}
|
|
7872
|
+
const preElements = containerRef.current.querySelectorAll('pre');
|
|
7873
|
+
preElements.forEach((pre) => {
|
|
7874
|
+
// Check if it is a code block (has code element)
|
|
7875
|
+
const codeElement = pre.querySelector('code');
|
|
7876
|
+
if (!codeElement) {
|
|
7877
|
+
return;
|
|
7878
|
+
}
|
|
7879
|
+
// Get language and code
|
|
7880
|
+
const className = codeElement.className; // e.g. language-python
|
|
7881
|
+
const match = className.match(/language-([^\s]+)/);
|
|
7882
|
+
const language = match ? match[1] : undefined;
|
|
7883
|
+
const code = codeElement.textContent || '';
|
|
7884
|
+
// Clear the pre element content
|
|
7885
|
+
pre.innerHTML = '';
|
|
7886
|
+
pre.className = ''; // remove existing classes if any
|
|
7887
|
+
pre.style.background = 'none'; // reset styles
|
|
7888
|
+
pre.style.padding = '0';
|
|
7889
|
+
pre.style.margin = '0';
|
|
7890
|
+
pre.style.overflow = 'visible';
|
|
7891
|
+
// Create a container for the CodeBlock
|
|
7892
|
+
const mountPoint = document.createElement('div');
|
|
7893
|
+
pre.appendChild(mountPoint);
|
|
7894
|
+
// Render CodeBlock
|
|
7895
|
+
const root = client.createRoot(mountPoint);
|
|
7896
|
+
root.render(jsxRuntime.jsx(CodeBlock, { code: code, language: language, onCreateAgent: onCreateAgent }));
|
|
7897
|
+
rootsRef.current.push(root);
|
|
7898
|
+
});
|
|
7899
|
+
return () => {
|
|
7900
|
+
rootsRef.current.forEach((root) => root.unmount());
|
|
7901
|
+
rootsRef.current = [];
|
|
7902
|
+
};
|
|
7903
|
+
}, [htmlContent, onCreateAgent]);
|
|
7904
|
+
return (jsxRuntime.jsx("div", { ref: containerRef, className: classNames(styles$5.MarkdownContent, className), dangerouslySetInnerHTML: {
|
|
7705
7905
|
__html: htmlContent,
|
|
7706
7906
|
} }));
|
|
7707
7907
|
}
|
|
@@ -7918,6 +8118,16 @@
|
|
|
7918
8118
|
}, children: [icon, jsxRuntime.jsx("span", { children: name })] }, name))) }))] }));
|
|
7919
8119
|
}
|
|
7920
8120
|
|
|
8121
|
+
const MenuHoistingContext = react.createContext(null);
|
|
8122
|
+
/**
|
|
8123
|
+
* Hook to use the menu hoisting system
|
|
8124
|
+
*
|
|
8125
|
+
* @private mechanism inside Promptbook
|
|
8126
|
+
*/
|
|
8127
|
+
function useMenuHoisting() {
|
|
8128
|
+
return react.useContext(MenuHoistingContext);
|
|
8129
|
+
}
|
|
8130
|
+
|
|
7921
8131
|
/**
|
|
7922
8132
|
*
|
|
7923
8133
|
* @private Internal component used by `BookEditor`
|
|
@@ -7925,50 +8135,83 @@
|
|
|
7925
8135
|
function BookEditorActionbar(props) {
|
|
7926
8136
|
const { value, isDownloadButtonShown, isUploadButtonShown, isCameraButtonShown, isAboutButtonShown, isFullscreenButtonShown, onFullscreenClick, onUploadDocument, onTakePhoto, isFullscreen, } = props;
|
|
7927
8137
|
const [isAboutModalOpen, setIsAboutModalOpen] = react.useState(false);
|
|
7928
|
-
const
|
|
7929
|
-
|
|
8138
|
+
const menuHoisting = useMenuHoisting();
|
|
8139
|
+
// Note: [1] We use ref to avoid re-creating the handleDownload function (and thus the actions array) on every value change
|
|
8140
|
+
const valueRef = react.useRef(value);
|
|
8141
|
+
react.useEffect(() => {
|
|
8142
|
+
valueRef.current = value;
|
|
8143
|
+
}, [value]);
|
|
8144
|
+
const handleDownload = react.useCallback(() => {
|
|
8145
|
+
const book = validateBook(valueRef.current || DEFAULT_BOOK);
|
|
7930
8146
|
/* not await */ $induceBookDownload(book);
|
|
7931
|
-
};
|
|
7932
|
-
const actions =
|
|
7933
|
-
|
|
7934
|
-
|
|
7935
|
-
|
|
7936
|
-
|
|
7937
|
-
|
|
7938
|
-
|
|
7939
|
-
|
|
7940
|
-
|
|
7941
|
-
|
|
7942
|
-
|
|
7943
|
-
|
|
7944
|
-
|
|
7945
|
-
|
|
7946
|
-
|
|
7947
|
-
|
|
7948
|
-
|
|
7949
|
-
|
|
7950
|
-
|
|
7951
|
-
|
|
7952
|
-
|
|
7953
|
-
|
|
7954
|
-
|
|
7955
|
-
|
|
7956
|
-
|
|
7957
|
-
|
|
7958
|
-
|
|
7959
|
-
|
|
7960
|
-
|
|
7961
|
-
|
|
7962
|
-
|
|
7963
|
-
|
|
7964
|
-
|
|
7965
|
-
|
|
7966
|
-
|
|
7967
|
-
|
|
8147
|
+
}, []);
|
|
8148
|
+
const actions = react.useMemo(() => {
|
|
8149
|
+
const _actions = [];
|
|
8150
|
+
if (isUploadButtonShown && onUploadDocument) {
|
|
8151
|
+
_actions.push({
|
|
8152
|
+
icon: jsxRuntime.jsx(AttachmentIcon, {}),
|
|
8153
|
+
name: 'Upload document',
|
|
8154
|
+
onClick: onUploadDocument,
|
|
8155
|
+
});
|
|
8156
|
+
}
|
|
8157
|
+
if (isCameraButtonShown && onTakePhoto) {
|
|
8158
|
+
_actions.push({
|
|
8159
|
+
icon: jsxRuntime.jsx(CameraIcon, {}),
|
|
8160
|
+
name: 'Take photo',
|
|
8161
|
+
onClick: onTakePhoto,
|
|
8162
|
+
});
|
|
8163
|
+
}
|
|
8164
|
+
if (isDownloadButtonShown) {
|
|
8165
|
+
_actions.push({
|
|
8166
|
+
icon: jsxRuntime.jsx(DownloadIcon, {}),
|
|
8167
|
+
name: 'Download',
|
|
8168
|
+
onClick: handleDownload,
|
|
8169
|
+
});
|
|
8170
|
+
}
|
|
8171
|
+
if (isAboutButtonShown) {
|
|
8172
|
+
_actions.push({
|
|
8173
|
+
icon: jsxRuntime.jsx(AboutIcon, {}),
|
|
8174
|
+
name: 'About',
|
|
8175
|
+
onClick: () => setIsAboutModalOpen(true),
|
|
8176
|
+
});
|
|
8177
|
+
}
|
|
8178
|
+
if (isFullscreenButtonShown && onFullscreenClick) {
|
|
8179
|
+
_actions.push({
|
|
8180
|
+
icon: jsxRuntime.jsx(FullscreenIcon, {}),
|
|
8181
|
+
name: 'Fullscreen',
|
|
8182
|
+
onClick: onFullscreenClick,
|
|
8183
|
+
});
|
|
8184
|
+
}
|
|
8185
|
+
return _actions;
|
|
8186
|
+
}, [
|
|
8187
|
+
isUploadButtonShown,
|
|
8188
|
+
onUploadDocument,
|
|
8189
|
+
isCameraButtonShown,
|
|
8190
|
+
onTakePhoto,
|
|
8191
|
+
isDownloadButtonShown,
|
|
8192
|
+
handleDownload,
|
|
8193
|
+
isAboutButtonShown,
|
|
8194
|
+
isFullscreenButtonShown,
|
|
8195
|
+
onFullscreenClick,
|
|
8196
|
+
]);
|
|
8197
|
+
react.useEffect(() => {
|
|
8198
|
+
if (!menuHoisting || isFullscreen) {
|
|
8199
|
+
return;
|
|
8200
|
+
}
|
|
8201
|
+
menuHoisting.setMenu(actions);
|
|
8202
|
+
return () => {
|
|
8203
|
+
menuHoisting.setMenu([]);
|
|
8204
|
+
};
|
|
8205
|
+
}, [menuHoisting, actions, isFullscreen]);
|
|
7968
8206
|
if (isFullscreen) {
|
|
7969
|
-
return (jsxRuntime.jsx("div", { className: styles$
|
|
8207
|
+
return (jsxRuntime.jsx("div", { className: styles$7.bookEditorActionbar, children: jsxRuntime.jsx("button", { className: styles$7.button, onClick: onFullscreenClick, children: jsxRuntime.jsx(ExitFullscreenIcon, {}) }) }));
|
|
7970
8208
|
}
|
|
7971
|
-
|
|
8209
|
+
if (menuHoisting && !isFullscreen) {
|
|
8210
|
+
return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: isAboutModalOpen && (jsxRuntime.jsx(Modal, { onClose: () => {
|
|
8211
|
+
setIsAboutModalOpen(false);
|
|
8212
|
+
}, children: jsxRuntime.jsx(AboutPromptbookInformation, {}) })) }));
|
|
8213
|
+
}
|
|
8214
|
+
return (jsxRuntime.jsxs("div", { className: styles$7.bookEditorActionbar, children: [actions.length >= 2 ? (jsxRuntime.jsx(Dropdown, { actions: actions })) : (actions.map(({ icon, name, onClick }) => (jsxRuntime.jsx("button", { className: styles$7.button, onClick: onClick, children: icon }, name)))), isAboutModalOpen && (jsxRuntime.jsx(Modal, { onClose: () => {
|
|
7972
8215
|
setIsAboutModalOpen(false);
|
|
7973
8216
|
}, children: jsxRuntime.jsx(AboutPromptbookInformation, {}) }))] }));
|
|
7974
8217
|
}
|
|
@@ -8080,6 +8323,7 @@
|
|
|
8080
8323
|
const parameterRegex = /@([a-zA-Z0-9_รก-ลพร-ลฝฤ-ลฤ-ลลก-ลพล -ลฝะฐ-ัะ-ะฏัะ]+)/;
|
|
8081
8324
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
8082
8325
|
const bookRules = [
|
|
8326
|
+
[/^---[-]*$/, ''],
|
|
8083
8327
|
[parameterRegex, 'parameter'],
|
|
8084
8328
|
[/\{[^}]+\}/, 'parameter'],
|
|
8085
8329
|
[commitmentRegex, 'commitment'],
|
|
@@ -8088,7 +8332,12 @@
|
|
|
8088
8332
|
const tokenProvider = monaco.languages.setMonarchTokensProvider(BOOK_LANGUAGE_ID, {
|
|
8089
8333
|
ignoreCase: true,
|
|
8090
8334
|
tokenizer: {
|
|
8091
|
-
root: [
|
|
8335
|
+
root: [
|
|
8336
|
+
[/^\s*$/, 'empty'],
|
|
8337
|
+
[/^-*$/, 'line'],
|
|
8338
|
+
[/^.*$/, 'title', '@body'],
|
|
8339
|
+
[commitmentRegex, 'commitment'],
|
|
8340
|
+
],
|
|
8092
8341
|
body: bookRules,
|
|
8093
8342
|
},
|
|
8094
8343
|
});
|
|
@@ -8306,7 +8555,7 @@
|
|
|
8306
8555
|
event.preventDefault();
|
|
8307
8556
|
setIsDragOver(false);
|
|
8308
8557
|
}, []);
|
|
8309
|
-
return (jsxRuntime.jsxs("div", { className: classNames(styles$
|
|
8558
|
+
return (jsxRuntime.jsxs("div", { className: classNames(styles$7.bookEditorContainer, instanceClass), onDrop: handleDrop, onDragOver: handleDragOver, onDragEnter: handleDragEnter, onDragLeave: handleDragLeave, children: [(isUploadButtonShown ||
|
|
8310
8559
|
isCameraButtonShown ||
|
|
8311
8560
|
isDownloadButtonShown ||
|
|
8312
8561
|
isAboutButtonShown ||
|
|
@@ -8319,7 +8568,7 @@
|
|
|
8319
8568
|
onFullscreenClick,
|
|
8320
8569
|
onUploadDocument: handleUploadDocument,
|
|
8321
8570
|
onTakePhoto: handleTakePhoto,
|
|
8322
|
-
isFullscreen })), jsxRuntime.jsx("input", { type: "file", ref: fileUploadInputRef, style: { display: 'none' }, onChange: handleFileInputChange, multiple: true }), jsxRuntime.jsx("input", { type: "file", ref: cameraInputRef, style: { display: 'none' }, accept: "image/*", capture: "environment", onChange: handleFileInputChange }), isDragOver && jsxRuntime.jsx("div", { className: styles$
|
|
8571
|
+
isFullscreen })), jsxRuntime.jsx("input", { type: "file", ref: fileUploadInputRef, style: { display: 'none' }, onChange: handleFileInputChange, multiple: true }), jsxRuntime.jsx("input", { type: "file", ref: cameraInputRef, style: { display: 'none' }, accept: "image/*", capture: "environment", onChange: handleFileInputChange }), isDragOver && jsxRuntime.jsx("div", { className: styles$7.dropOverlay, children: "Drop files to upload" }), jsxRuntime.jsxs("div", { style: {
|
|
8323
8572
|
position: 'relative',
|
|
8324
8573
|
flex: 1,
|
|
8325
8574
|
height: '100%',
|
|
@@ -8384,7 +8633,7 @@
|
|
|
8384
8633
|
arrowSize: 0,
|
|
8385
8634
|
useShadows: false,
|
|
8386
8635
|
},
|
|
8387
|
-
}, loading: jsxRuntime.jsx("div", { className: styles$
|
|
8636
|
+
}, loading: jsxRuntime.jsx("div", { className: styles$7.loading, children: "\uD83D\uDCD6" }) })] })] }));
|
|
8388
8637
|
}
|
|
8389
8638
|
|
|
8390
8639
|
/**
|
|
@@ -8406,7 +8655,7 @@
|
|
|
8406
8655
|
const handleFullscreenToggle = () => {
|
|
8407
8656
|
setIsFullscreen(!isFullscreen);
|
|
8408
8657
|
};
|
|
8409
|
-
const editorContent = (jsxRuntime.jsx("div", { "data-book-component": "BookEditor", className: classNames(styles$
|
|
8658
|
+
const editorContent = (jsxRuntime.jsx("div", { "data-book-component": "BookEditor", className: classNames(styles$7.BookEditor, isVerbose && styles$7.isVerbose, styles$7.bookEditorWrapper, isBorderRadiusDisabled && styles$7.isBorderRadiusDisabled, isFullscreen && styles$7.fullscreen, className), style: isFullscreen
|
|
8410
8659
|
? style
|
|
8411
8660
|
: {
|
|
8412
8661
|
...(style || {}),
|
|
@@ -8532,6 +8781,52 @@
|
|
|
8532
8781
|
*/
|
|
8533
8782
|
const textColor = furthest(Color.get('white'), Color.from('black'));
|
|
8534
8783
|
|
|
8784
|
+
/**
|
|
8785
|
+
* Makes data url from color
|
|
8786
|
+
*
|
|
8787
|
+
* @public exported from `@promptbook/color`
|
|
8788
|
+
*/
|
|
8789
|
+
function colorToDataUrl(color) {
|
|
8790
|
+
if (typeof color === 'string') {
|
|
8791
|
+
color = Color.fromHex(color);
|
|
8792
|
+
}
|
|
8793
|
+
return rgbDataURL(color.red, color.green, color.blue);
|
|
8794
|
+
}
|
|
8795
|
+
/**
|
|
8796
|
+
* Pixel GIF code adapted from https://stackoverflow.com/a/33919020/266535
|
|
8797
|
+
*
|
|
8798
|
+
* @private util of `colorToDataUrl`
|
|
8799
|
+
*/
|
|
8800
|
+
const keyStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
|
|
8801
|
+
/**
|
|
8802
|
+
* Generates a base64-encoded triplet string
|
|
8803
|
+
*
|
|
8804
|
+
* @param e1 - The first element in the triplet.
|
|
8805
|
+
* @param e2 - The second element in the triplet.
|
|
8806
|
+
* @param e3 - The third element in the triplet.
|
|
8807
|
+
* @returns The base64-encoded triplet string.
|
|
8808
|
+
*
|
|
8809
|
+
* @private util of `colorToDataUrl`
|
|
8810
|
+
*/
|
|
8811
|
+
const triplet = (e1, e2, e3) => keyStr.charAt(e1 >> 2) +
|
|
8812
|
+
keyStr.charAt(((e1 & 3) << 4) | (e2 >> 4)) +
|
|
8813
|
+
keyStr.charAt(((e2 & 15) << 2) | (e3 >> 6)) +
|
|
8814
|
+
keyStr.charAt(e3 & 63);
|
|
8815
|
+
/**
|
|
8816
|
+
* Converts RGB values to a data URL string
|
|
8817
|
+
*
|
|
8818
|
+
* @param r - The red channel value.
|
|
8819
|
+
* @param g - The green channel value.
|
|
8820
|
+
* @param b - The blue channel value.
|
|
8821
|
+
* @returns The RGB data URL string.
|
|
8822
|
+
*
|
|
8823
|
+
* @private util of `colorToDataUrl`
|
|
8824
|
+
*/
|
|
8825
|
+
const rgbDataURL = (r, g, b) => `data:image/gif;base64,R0lGODlhAQABAPAA${triplet(0, r, g) + triplet(b, 255, 255)}/yH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==`;
|
|
8826
|
+
/**
|
|
8827
|
+
* TODO: Make as functions NOT const
|
|
8828
|
+
*/
|
|
8829
|
+
|
|
8535
8830
|
/**
|
|
8536
8831
|
* Restricts an Updatable to a (2) BehaviorSubject variant
|
|
8537
8832
|
*
|
|
@@ -9014,15 +9309,15 @@
|
|
|
9014
9309
|
ASSISTANT: '#ffb300',
|
|
9015
9310
|
SYSTEM: '#888',
|
|
9016
9311
|
};
|
|
9017
|
-
const bgColor = participantColors[String(message.
|
|
9312
|
+
const bgColor = participantColors[String(message.sender)] || '#2b7cff';
|
|
9018
9313
|
const textColor = getTextColor(bgColor);
|
|
9019
9314
|
return spaceTrim__default["default"](`
|
|
9020
9315
|
<div class="chat-message">
|
|
9021
9316
|
<div class="avatar" style="background:${bgColor};color:${getTextColor(bgColor)};">
|
|
9022
|
-
${String(message.
|
|
9317
|
+
${String(message.sender)[0] || '?'}
|
|
9023
9318
|
</div>
|
|
9024
9319
|
<div class="bubble" style="background:${bgColor};color:${textColor};">
|
|
9025
|
-
<span class="from-label">${String(message.
|
|
9320
|
+
<span class="from-label">${String(message.sender)}:</span>
|
|
9026
9321
|
${message.content}
|
|
9027
9322
|
</div>
|
|
9028
9323
|
</div>
|
|
@@ -9068,7 +9363,7 @@
|
|
|
9068
9363
|
getContent: ({ messages }) => spaceTrim$1.spaceTrim(`
|
|
9069
9364
|
${messages
|
|
9070
9365
|
.map((message) => spaceTrim$1.spaceTrim(`
|
|
9071
|
-
**${message.
|
|
9366
|
+
**${message.sender}:**
|
|
9072
9367
|
|
|
9073
9368
|
> ${message.content.replace(/\n/g, '\n> ')}
|
|
9074
9369
|
`))
|
|
@@ -9258,8 +9553,8 @@
|
|
|
9258
9553
|
*
|
|
9259
9554
|
* @private internal subcomponent of `<Chat>` component
|
|
9260
9555
|
*/
|
|
9261
|
-
const ChatMessageItem = react.memo(({ message, participant, participants, isLastMessage, onMessage, setExpandedMessageId, isExpanded, currentRating, handleRating, mode, isCopyButtonEnabled, isFeedbackEnabled, onCopy, }) => {
|
|
9262
|
-
const avatarSrc = (participant === null || participant === void 0 ? void 0 : participant.avatarSrc) ||
|
|
9556
|
+
const ChatMessageItem = react.memo(({ message, participant, participants, isLastMessage, onMessage, setExpandedMessageId, isExpanded, currentRating, handleRating, mode, isCopyButtonEnabled, isFeedbackEnabled, onCopy, onCreateAgent, }) => {
|
|
9557
|
+
const avatarSrc = (participant === null || participant === void 0 ? void 0 : participant.avatarSrc) || null;
|
|
9263
9558
|
const [isAvatarTooltipVisible, setIsAvatarTooltipVisible] = react.useState(false);
|
|
9264
9559
|
const [avatarTooltipPosition, setAvatarTooltipPosition] = react.useState(null);
|
|
9265
9560
|
const hoverTimeoutRef = react.useRef(null);
|
|
@@ -9350,9 +9645,14 @@
|
|
|
9350
9645
|
console.info('participant avatarSrc', avatarSrc);
|
|
9351
9646
|
console.info('participant color', { color, colorOfText });
|
|
9352
9647
|
console.groupEnd();
|
|
9353
|
-
}, children: [avatarSrc && (jsxRuntime.jsxs("div", { ref: avatarRef, className: chatStyles.avatar, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, onClick: showTooltip, children: [jsxRuntime.jsx("img", { width: AVATAR_SIZE, src: avatarSrc, alt: `Avatar of ${message.
|
|
9648
|
+
}, children: [avatarSrc && (jsxRuntime.jsxs("div", { ref: avatarRef, className: chatStyles.avatar, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, onClick: showTooltip, children: [jsxRuntime.jsx("img", { width: AVATAR_SIZE, src: avatarSrc, alt: `Avatar of ${message.sender.toString().toLocaleLowerCase()}`, style: {
|
|
9354
9649
|
'--avatar-bg-color': color.toHex(),
|
|
9650
|
+
objectFit: 'cover',
|
|
9651
|
+
objectPosition: '50% 20%',
|
|
9355
9652
|
width: AVATAR_SIZE,
|
|
9653
|
+
height: AVATAR_SIZE,
|
|
9654
|
+
aspectRatio: '1 / 1',
|
|
9655
|
+
backgroundImage: `url(${colorToDataUrl(color)})`,
|
|
9356
9656
|
} }), isAvatarTooltipVisible && (participant === null || participant === void 0 ? void 0 : participant.agentSource) && avatarTooltipPosition && (jsxRuntime.jsx(AvatarProfileTooltip, { ref: tooltipRef, agentSource: participant.agentSource, position: avatarTooltipPosition }))] })), jsxRuntime.jsxs("div", { className: chatStyles.messageText, style: {
|
|
9357
9657
|
'--message-bg-color': color.toHex(),
|
|
9358
9658
|
'--message-text-color': colorOfText.toHex(),
|
|
@@ -9401,7 +9701,7 @@
|
|
|
9401
9701
|
? ' ' + chatStyles.copiedTooltipLeft
|
|
9402
9702
|
: tooltipAlign === 'right'
|
|
9403
9703
|
? ' ' + chatStyles.copiedTooltipRight
|
|
9404
|
-
: ''), children: "Copied!" }))] }) })), message.isVoiceCall && (jsxRuntime.jsx("div", { className: chatStyles.voiceCallIndicator, children: jsxRuntime.jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "currentColor", children: jsxRuntime.jsx("path", { d: "M6.62 10.79c1.44 2.83 3.76 5.14 6.59 6.59l2.2-2.2c.27-.27.67-.36 1.02-.24 1.12.37 2.33.57 3.57.57.55 0 1 .45 1 1V20c0 .55-.45 1-1 1-9.39 0-17-7.61-17-17 0-.55.45-1 1-1h3.5c.55 0 1 .45 1 1 0 1.25.2 2.45.57 3.57.11.35.03.74-.25 1.02l-2.2 2.2z" }) }) })), message.content === LOADING_INTERACTIVE_IMAGE ? (jsxRuntime.jsx(jsxRuntime.Fragment, {})) : (jsxRuntime.jsx("div", { ref: contentWithoutButtonsRef, children: jsxRuntime.jsx(MarkdownContent, { content: contentWithoutButtons }) })), !message.isComplete && jsxRuntime.jsx("span", { className: chatStyles.NonCompleteMessageFiller, children: '_'.repeat(70) }), shouldShowButtons && (jsxRuntime.jsx("div", { className: chatStyles.messageButtons, children: buttons.map((button, buttonIndex) => (jsxRuntime.jsx("button", { className: chatStyles.messageButton, onClick: (event) => {
|
|
9704
|
+
: ''), children: "Copied!" }))] }) })), message.isVoiceCall && (jsxRuntime.jsx("div", { className: chatStyles.voiceCallIndicator, children: jsxRuntime.jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "currentColor", children: jsxRuntime.jsx("path", { d: "M6.62 10.79c1.44 2.83 3.76 5.14 6.59 6.59l2.2-2.2c.27-.27.67-.36 1.02-.24 1.12.37 2.33.57 3.57.57.55 0 1 .45 1 1V20c0 .55-.45 1-1 1-9.39 0-17-7.61-17-17 0-.55.45-1 1-1h3.5c.55 0 1 .45 1 1 0 1.25.2 2.45.57 3.57.11.35.03.74-.25 1.02l-2.2 2.2z" }) }) })), message.content === LOADING_INTERACTIVE_IMAGE ? (jsxRuntime.jsx(jsxRuntime.Fragment, {})) : (jsxRuntime.jsx("div", { ref: contentWithoutButtonsRef, children: jsxRuntime.jsx(MarkdownContent, { content: contentWithoutButtons, onCreateAgent: onCreateAgent }) })), !message.isComplete && jsxRuntime.jsx("span", { className: chatStyles.NonCompleteMessageFiller, children: '_'.repeat(70) }), shouldShowButtons && (jsxRuntime.jsx("div", { className: chatStyles.messageButtons, children: buttons.map((button, buttonIndex) => (jsxRuntime.jsx("button", { className: chatStyles.messageButton, onClick: (event) => {
|
|
9405
9705
|
event.stopPropagation();
|
|
9406
9706
|
if (onMessage) {
|
|
9407
9707
|
onMessage(button.message);
|
|
@@ -9484,7 +9784,7 @@
|
|
|
9484
9784
|
// isExperimental = false,
|
|
9485
9785
|
// TODO: [๐
]> isSaveButtonEnabled = false,
|
|
9486
9786
|
// exportHeaderMarkdown,
|
|
9487
|
-
participants = [], extraActions, actionsContainer, saveFormats, isSaveButtonEnabled = true, isCopyButtonEnabled = true, buttonColor: buttonColorRaw, onUseTemplate, } = props;
|
|
9787
|
+
participants = [], extraActions, actionsContainer, saveFormats, isSaveButtonEnabled = true, isCopyButtonEnabled = true, buttonColor: buttonColorRaw, onUseTemplate, onCreateAgent, } = props;
|
|
9488
9788
|
const buttonColor = react.useMemo(() => Color.from(buttonColorRaw || '#0066cc'), [buttonColorRaw]);
|
|
9489
9789
|
// Use the auto-scroll hook
|
|
9490
9790
|
const { isAutoScrolling, chatMessagesRef, handleScroll, handleMessagesChange, scrollToBottom, isMobile: isMobileFromHook, } = useChatAutoScroll();
|
|
@@ -9699,7 +9999,7 @@
|
|
|
9699
9999
|
}
|
|
9700
10000
|
}, [ratingModalOpen, isMobile]);
|
|
9701
10001
|
// Determine alignment for actions (Reset button) based on the first message
|
|
9702
|
-
const firstMessageFromUser = ((_a = messages[0]) === null || _a === void 0 ? void 0 : _a.
|
|
10002
|
+
const firstMessageFromUser = ((_a = messages[0]) === null || _a === void 0 ? void 0 : _a.sender) === 'USER';
|
|
9703
10003
|
const actionsAlignmentClass = firstMessageFromUser
|
|
9704
10004
|
? chatStyles.actions + ' ' + chatStyles.left
|
|
9705
10005
|
: chatStyles.actions + ' ' + chatStyles.right;
|
|
@@ -9776,11 +10076,11 @@
|
|
|
9776
10076
|
}
|
|
9777
10077
|
return true;
|
|
9778
10078
|
})() && chatStyles.hasActionsAndFirstMessageIsLong), ref: chatMessagesRef, onScroll: handleScroll, children: [postprocessedMessages.map((message, i) => {
|
|
9779
|
-
const participant = participants.find((participant) => participant.name === message.
|
|
10079
|
+
const participant = participants.find((participant) => participant.name === message.sender);
|
|
9780
10080
|
const isLastMessage = i === postprocessedMessages.length - 1;
|
|
9781
10081
|
const isExpanded = expandedMessageId === message.id;
|
|
9782
10082
|
const currentRating = messageRatings.get(message.id || message.content /* <-[๐] */) || 0;
|
|
9783
|
-
return (jsxRuntime.jsx(ChatMessageItem, { message: message, participant: participant, participants: participants, isLastMessage: isLastMessage, onMessage: onMessage, setExpandedMessageId: setExpandedMessageId, isExpanded: isExpanded, currentRating: currentRating, handleRating: handleRating, mode: mode, isCopyButtonEnabled: isCopyButtonEnabled, isFeedbackEnabled: isFeedbackEnabled, onCopy: handleCopy }, message.id));
|
|
10083
|
+
return (jsxRuntime.jsx(ChatMessageItem, { message: message, participant: participant, participants: participants, isLastMessage: isLastMessage, onMessage: onMessage, setExpandedMessageId: setExpandedMessageId, isExpanded: isExpanded, currentRating: currentRating, handleRating: handleRating, mode: mode, isCopyButtonEnabled: isCopyButtonEnabled, isFeedbackEnabled: isFeedbackEnabled, onCopy: handleCopy, onCreateAgent: onCreateAgent }, message.id));
|
|
9784
10084
|
}), jsxRuntime.jsx("div", {
|
|
9785
10085
|
// Note: Extra space at bottom for input area
|
|
9786
10086
|
style: { height: 100 } })] }), onMessage && (jsxRuntime.jsxs("div", { className: classNames(chatStyles.chatInput, useChatCssClassName('chatInput'), isDragOver && chatStyles.dragOver), ...(onFileUpload
|
|
@@ -9868,13 +10168,13 @@
|
|
|
9868
10168
|
const idx = postprocessedMessages.findIndex((m) => m.id === selectedMessage.id);
|
|
9869
10169
|
if (idx > 0) {
|
|
9870
10170
|
const prev = postprocessedMessages[idx - 1];
|
|
9871
|
-
if (prev.
|
|
10171
|
+
if (prev.sender === 'USER') {
|
|
9872
10172
|
return prev.content;
|
|
9873
10173
|
}
|
|
9874
10174
|
}
|
|
9875
10175
|
// fallback: find last USER message before selectedMessage
|
|
9876
10176
|
for (let i = messages.findIndex((m) => m.id === selectedMessage.id) - 1; i >= 0; i--) {
|
|
9877
|
-
if (messages[i].
|
|
10177
|
+
if (messages[i].sender === 'USER') {
|
|
9878
10178
|
return messages[i].content;
|
|
9879
10179
|
}
|
|
9880
10180
|
}
|
|
@@ -9901,7 +10201,9 @@
|
|
|
9901
10201
|
try {
|
|
9902
10202
|
const serializableMessages = messages.map((message) => ({
|
|
9903
10203
|
...message,
|
|
9904
|
-
|
|
10204
|
+
createdAt: (typeof message.createdAt === 'string'
|
|
10205
|
+
? new Date(message.createdAt)
|
|
10206
|
+
: message.createdAt || new Date()).toISOString(),
|
|
9905
10207
|
}));
|
|
9906
10208
|
const storageKey = this.STORAGE_PREFIX + persistenceKey;
|
|
9907
10209
|
localStorage.setItem(storageKey, JSON.stringify(serializableMessages));
|
|
@@ -9924,7 +10226,7 @@
|
|
|
9924
10226
|
// Convert date strings back to Date objects
|
|
9925
10227
|
return serializableMessages.map((message) => ({
|
|
9926
10228
|
...message,
|
|
9927
|
-
|
|
10229
|
+
createdAt: new Date(message.createdAt),
|
|
9928
10230
|
}));
|
|
9929
10231
|
}
|
|
9930
10232
|
catch (error) {
|
|
@@ -9977,7 +10279,7 @@
|
|
|
9977
10279
|
const { llmTools, persistenceKey, onChange, onReset, initialMessages, sendMessage, userParticipantName = 'USER', llmParticipantName = 'ASSISTANT', autoExecuteMessage, buttonColor, ...restProps } = props;
|
|
9978
10280
|
// Internal state management
|
|
9979
10281
|
// DRY: Single factory for seeding initial messages (used on mount and after reset)
|
|
9980
|
-
const buildInitialMessages = react.useCallback(() =>
|
|
10282
|
+
const buildInitialMessages = react.useCallback(() => initialMessages ? ([...initialMessages]) : ([]), [initialMessages]);
|
|
9981
10283
|
const [messages, setMessages] = react.useState(() => buildInitialMessages());
|
|
9982
10284
|
const [tasksProgress, setTasksProgress] = react.useState([]);
|
|
9983
10285
|
const [isVoiceCalling, setIsVoiceCalling] = react.useState(false);
|
|
@@ -10070,17 +10372,19 @@
|
|
|
10070
10372
|
setTasksProgress([{ id: taskId, name: 'Playing response...', progress: 100 }]);
|
|
10071
10373
|
const now = Date.now();
|
|
10072
10374
|
const userMessage = {
|
|
10375
|
+
// channel: 'PROMPTBOOK_CHAT',
|
|
10073
10376
|
id: `user_${now}`,
|
|
10074
|
-
|
|
10075
|
-
|
|
10377
|
+
createdAt: new Date(),
|
|
10378
|
+
sender: userParticipantName,
|
|
10076
10379
|
content: (result.userMessage || '(Voice message)'),
|
|
10077
10380
|
isComplete: true,
|
|
10078
10381
|
isVoiceCall: true,
|
|
10079
10382
|
};
|
|
10080
10383
|
const agentMessage = {
|
|
10384
|
+
// channel: 'PROMPTBOOK_CHAT',
|
|
10081
10385
|
id: `agent_${now}`,
|
|
10082
|
-
|
|
10083
|
-
|
|
10386
|
+
createdAt: new Date(),
|
|
10387
|
+
sender: llmParticipantName,
|
|
10084
10388
|
content: (result.agentMessage || result.text),
|
|
10085
10389
|
isComplete: true,
|
|
10086
10390
|
isVoiceCall: true,
|
|
@@ -10177,9 +10481,10 @@
|
|
|
10177
10481
|
hasUserInteractedRef.current = true;
|
|
10178
10482
|
// Add user message
|
|
10179
10483
|
const userMessage = {
|
|
10484
|
+
// channel: 'PROMPTBOOK_CHAT',
|
|
10180
10485
|
id: `user_${Date.now()}`,
|
|
10181
|
-
|
|
10182
|
-
|
|
10486
|
+
createdAt: new Date(),
|
|
10487
|
+
sender: userParticipantName,
|
|
10183
10488
|
content: messageContent,
|
|
10184
10489
|
isComplete: true,
|
|
10185
10490
|
};
|
|
@@ -10191,9 +10496,10 @@
|
|
|
10191
10496
|
}
|
|
10192
10497
|
// Add loading message for assistant
|
|
10193
10498
|
const loadingMessage = {
|
|
10499
|
+
// channel: 'PROMPTBOOK_CHAT',
|
|
10194
10500
|
id: `assistant_${Date.now()}`,
|
|
10195
|
-
|
|
10196
|
-
|
|
10501
|
+
createdAt: new Date(),
|
|
10502
|
+
sender: llmParticipantName,
|
|
10197
10503
|
content: 'Thinking...',
|
|
10198
10504
|
isComplete: false,
|
|
10199
10505
|
};
|
|
@@ -10224,9 +10530,10 @@
|
|
|
10224
10530
|
if (llmTools.callChatModelStream) {
|
|
10225
10531
|
result = await llmTools.callChatModelStream(prompt, (chunk) => {
|
|
10226
10532
|
const assistantMessage = {
|
|
10533
|
+
// channel: 'PROMPTBOOK_CHAT',
|
|
10227
10534
|
id: loadingMessage.id,
|
|
10228
|
-
|
|
10229
|
-
|
|
10535
|
+
createdAt: new Date(),
|
|
10536
|
+
sender: llmParticipantName,
|
|
10230
10537
|
content: chunk.content,
|
|
10231
10538
|
isComplete: false,
|
|
10232
10539
|
};
|
|
@@ -10247,9 +10554,10 @@
|
|
|
10247
10554
|
setTasksProgress([{ id: taskId, name: 'Response generated', progress: 100 }]);
|
|
10248
10555
|
// Replace loading message with actual response
|
|
10249
10556
|
const assistantMessage = {
|
|
10557
|
+
// channel: 'PROMPTBOOK_CHAT',
|
|
10250
10558
|
id: loadingMessage.id,
|
|
10251
|
-
|
|
10252
|
-
|
|
10559
|
+
createdAt: new Date(),
|
|
10560
|
+
sender: llmParticipantName,
|
|
10253
10561
|
content: result.content,
|
|
10254
10562
|
isComplete: true,
|
|
10255
10563
|
};
|
|
@@ -10268,9 +10576,10 @@
|
|
|
10268
10576
|
console.error('Error calling LLM:', error);
|
|
10269
10577
|
// Replace loading message with error message
|
|
10270
10578
|
const errorMessage = {
|
|
10579
|
+
// channel: 'PROMPTBOOK_CHAT',
|
|
10271
10580
|
id: loadingMessage.id,
|
|
10272
|
-
|
|
10273
|
-
|
|
10581
|
+
createdAt: new Date(),
|
|
10582
|
+
sender: llmParticipantName,
|
|
10274
10583
|
content: `Sorry, I encountered an error: ${error instanceof Error ? error.message : 'Unknown error'}`,
|
|
10275
10584
|
isComplete: true,
|
|
10276
10585
|
};
|
|
@@ -10337,7 +10646,8 @@
|
|
|
10337
10646
|
return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsx(LlmChat, { title: title || `Chat with ${agent.meta.fullname || agent.agentName || 'Agent'}`, persistenceKey: persistenceKey || `agent-chat-${agent.agentName}`, userParticipantName: "USER", llmParticipantName: "AGENT" // <- TODO: [๐ง ] Maybe dynamic agent id
|
|
10338
10647
|
, initialMessages: [
|
|
10339
10648
|
{
|
|
10340
|
-
|
|
10649
|
+
// channel: 'PROMPTBOOK_CHAT',
|
|
10650
|
+
sender: 'AGENT',
|
|
10341
10651
|
content: agent.initialMessage ||
|
|
10342
10652
|
spaceTrim__default["default"](`
|
|
10343
10653
|
|
|
@@ -10615,7 +10925,7 @@
|
|
|
10615
10925
|
if (delays.longPauseChance &&
|
|
10616
10926
|
Math.random() < delays.longPauseChance &&
|
|
10617
10927
|
i > 0 &&
|
|
10618
|
-
originalMessages[i].
|
|
10928
|
+
originalMessages[i].sender !== originalMessages[i - 1].sender) {
|
|
10619
10929
|
await waitasecond.forTime(getDelay(delays.longPauseDuration, 2000));
|
|
10620
10930
|
didLongPause = true;
|
|
10621
10931
|
if (isCancelled)
|
|
@@ -10636,9 +10946,10 @@
|
|
|
10636
10946
|
}
|
|
10637
10947
|
// Show incomplete message first (for typing effect)
|
|
10638
10948
|
const incompleteMessage = {
|
|
10949
|
+
// channel: 'PROMPTBOOK_CHAT',
|
|
10639
10950
|
id: currentMessage.id,
|
|
10640
|
-
|
|
10641
|
-
|
|
10951
|
+
createdAt: currentMessage.createdAt,
|
|
10952
|
+
sender: currentMessage.sender,
|
|
10642
10953
|
content: '',
|
|
10643
10954
|
isComplete: false,
|
|
10644
10955
|
expectedAnswer: currentMessage.expectedAnswer,
|
|
@@ -10656,9 +10967,10 @@
|
|
|
10656
10967
|
currentContent += (wordIndex > 0 ? ' ' : '') + word;
|
|
10657
10968
|
// Update the message with current content
|
|
10658
10969
|
const updatingMessage = {
|
|
10970
|
+
// channel: 'PROMPTBOOK_CHAT',
|
|
10659
10971
|
id: currentMessage.id,
|
|
10660
|
-
|
|
10661
|
-
|
|
10972
|
+
createdAt: currentMessage.createdAt,
|
|
10973
|
+
sender: currentMessage.sender,
|
|
10662
10974
|
content: currentContent,
|
|
10663
10975
|
isComplete: false,
|
|
10664
10976
|
expectedAnswer: currentMessage.expectedAnswer,
|
|
@@ -10676,9 +10988,10 @@
|
|
|
10676
10988
|
}
|
|
10677
10989
|
// Mark message as complete
|
|
10678
10990
|
const completeMessage = {
|
|
10991
|
+
// channel: 'PROMPTBOOK_CHAT',
|
|
10679
10992
|
id: currentMessage.id,
|
|
10680
|
-
|
|
10681
|
-
|
|
10993
|
+
createdAt: currentMessage.createdAt,
|
|
10994
|
+
sender: currentMessage.sender,
|
|
10682
10995
|
content: currentMessage.content,
|
|
10683
10996
|
isComplete: true,
|
|
10684
10997
|
expectedAnswer: currentMessage.expectedAnswer,
|
|
@@ -10930,6 +11243,12 @@
|
|
|
10930
11243
|
callEmbeddingModel(prompt) {
|
|
10931
11244
|
return this.callCommonModel(prompt);
|
|
10932
11245
|
}
|
|
11246
|
+
/**
|
|
11247
|
+
* Calls the best available embedding model
|
|
11248
|
+
*/
|
|
11249
|
+
callImageGenerationModel(prompt) {
|
|
11250
|
+
return this.callCommonModel(prompt);
|
|
11251
|
+
}
|
|
10933
11252
|
// <- Note: [๐ค]
|
|
10934
11253
|
/**
|
|
10935
11254
|
* Calls the best available model
|
|
@@ -10956,6 +11275,11 @@
|
|
|
10956
11275
|
continue llm;
|
|
10957
11276
|
}
|
|
10958
11277
|
return await llmExecutionTools.callEmbeddingModel(prompt);
|
|
11278
|
+
case 'IMAGE_GENERATION':
|
|
11279
|
+
if (llmExecutionTools.callImageGenerationModel === undefined) {
|
|
11280
|
+
continue llm;
|
|
11281
|
+
}
|
|
11282
|
+
return await llmExecutionTools.callImageGenerationModel(prompt);
|
|
10959
11283
|
// <- case [๐ค]:
|
|
10960
11284
|
default:
|
|
10961
11285
|
throw new UnexpectedError(`Unknown model variant "${prompt.modelRequirements.modelVariant}" in ${llmExecutionTools.title}`);
|
|
@@ -12130,6 +12454,15 @@
|
|
|
12130
12454
|
return promptResult;
|
|
12131
12455
|
};
|
|
12132
12456
|
}
|
|
12457
|
+
if (llmTools.callImageGenerationModel !== undefined) {
|
|
12458
|
+
proxyTools.callImageGenerationModel = async (prompt) => {
|
|
12459
|
+
// console.info('[๐] callImageGenerationModel through countTotalUsage');
|
|
12460
|
+
const promptResult = await llmTools.callImageGenerationModel(prompt);
|
|
12461
|
+
totalUsage = addUsage(totalUsage, promptResult.usage);
|
|
12462
|
+
spending.next(promptResult.usage);
|
|
12463
|
+
return promptResult;
|
|
12464
|
+
};
|
|
12465
|
+
}
|
|
12133
12466
|
// <- Note: [๐ค]
|
|
12134
12467
|
return proxyTools;
|
|
12135
12468
|
}
|
|
@@ -13673,8 +14006,9 @@
|
|
|
13673
14006
|
$ongoingTaskResult.$resultString = $ongoingTaskResult.$completionResult.content;
|
|
13674
14007
|
break variant;
|
|
13675
14008
|
case 'EMBEDDING':
|
|
14009
|
+
case 'IMAGE_GENERATION':
|
|
13676
14010
|
throw new PipelineExecutionError(spaceTrim$1.spaceTrim((block) => `
|
|
13677
|
-
|
|
14011
|
+
${modelRequirements.modelVariant} model can not be used in pipeline
|
|
13678
14012
|
|
|
13679
14013
|
This should be catched during parsing
|
|
13680
14014
|
|
|
@@ -14990,7 +15324,12 @@
|
|
|
14990
15324
|
};
|
|
14991
15325
|
}
|
|
14992
15326
|
// Apply each commitment in order using reduce-like pattern
|
|
14993
|
-
for (
|
|
15327
|
+
for (let i = 0; i < filteredCommitments.length; i++) {
|
|
15328
|
+
const commitment = filteredCommitments[i];
|
|
15329
|
+
// CLOSED commitment should work only if its the last commitment in the book
|
|
15330
|
+
if (commitment.type === 'CLOSED' && i !== filteredCommitments.length - 1) {
|
|
15331
|
+
continue;
|
|
15332
|
+
}
|
|
14994
15333
|
const definition = getCommitmentDefinition(commitment.type);
|
|
14995
15334
|
if (definition) {
|
|
14996
15335
|
try {
|
|
@@ -16005,7 +16344,7 @@
|
|
|
16005
16344
|
let threadMessages = [];
|
|
16006
16345
|
if ('thread' in prompt && Array.isArray(prompt.thread)) {
|
|
16007
16346
|
threadMessages = prompt.thread.map((msg) => ({
|
|
16008
|
-
role: msg.
|
|
16347
|
+
role: msg.sender === 'assistant' ? 'assistant' : 'user',
|
|
16009
16348
|
content: msg.content,
|
|
16010
16349
|
}));
|
|
16011
16350
|
}
|
|
@@ -16418,13 +16757,14 @@
|
|
|
16418
16757
|
const modelName = currentModelRequirements.modelName || this.getDefaultImageGenerationModel().modelName;
|
|
16419
16758
|
const modelSettings = {
|
|
16420
16759
|
model: modelName,
|
|
16421
|
-
|
|
16422
|
-
|
|
16423
|
-
|
|
16760
|
+
size: currentModelRequirements.size,
|
|
16761
|
+
quality: currentModelRequirements.quality,
|
|
16762
|
+
style: currentModelRequirements.style,
|
|
16424
16763
|
};
|
|
16425
16764
|
const rawPromptContent = templateParameters(content, { ...parameters, modelName });
|
|
16426
16765
|
const rawRequest = {
|
|
16427
16766
|
...modelSettings,
|
|
16767
|
+
size: modelSettings.size || '1024x1024',
|
|
16428
16768
|
prompt: rawPromptContent,
|
|
16429
16769
|
user: (_a = this.options.userId) === null || _a === void 0 ? void 0 : _a.toString(),
|
|
16430
16770
|
response_format: 'url', // TODO: [๐ง ] Maybe allow b64_json
|
|
@@ -17530,9 +17870,52 @@
|
|
|
17530
17870
|
${block(result.content)}
|
|
17531
17871
|
|
|
17532
17872
|
`);
|
|
17873
|
+
// Extract knowledge
|
|
17874
|
+
let knowledgeBlock = '';
|
|
17875
|
+
try {
|
|
17876
|
+
const extractionPrompt = {
|
|
17877
|
+
title: 'Knowledge Extraction',
|
|
17878
|
+
modelRequirements: {
|
|
17879
|
+
modelVariant: 'CHAT',
|
|
17880
|
+
},
|
|
17881
|
+
content: spaceTrim__default["default"]((block) => `
|
|
17882
|
+
You are an AI agent that is learning from a conversation.
|
|
17883
|
+
|
|
17884
|
+
Here is the conversation so far:
|
|
17885
|
+
|
|
17886
|
+
User: ${block(prompt.content)}
|
|
17887
|
+
Agent: ${block(result.content)}
|
|
17888
|
+
|
|
17889
|
+
Extract any new knowledge, facts, or important information that should be remembered for future interactions.
|
|
17890
|
+
Format the output as a list of KNOWLEDGE blocks.
|
|
17891
|
+
If there is no new knowledge, return nothing.
|
|
17892
|
+
|
|
17893
|
+
Example output:
|
|
17894
|
+
KNOWLEDGE The user's name is Alice.
|
|
17895
|
+
KNOWLEDGE The project deadline is next Friday.
|
|
17896
|
+
`),
|
|
17897
|
+
pipelineUrl: 'https://github.com/webgptorg/promptbook/blob/main/prompts/knowledge-extraction.ptbk.md',
|
|
17898
|
+
parameters: {},
|
|
17899
|
+
};
|
|
17900
|
+
if (this.options.llmTools.callChatModel) {
|
|
17901
|
+
const extractionResult = await this.options.llmTools.callChatModel(extractionPrompt);
|
|
17902
|
+
const extractedContent = extractionResult.content;
|
|
17903
|
+
if (extractedContent.includes('KNOWLEDGE')) {
|
|
17904
|
+
knowledgeBlock = '\n\n' + spaceTrim__default["default"](extractedContent);
|
|
17905
|
+
}
|
|
17906
|
+
}
|
|
17907
|
+
else {
|
|
17908
|
+
// TODO: [๐ง ] Fallback to callChatModelStream if callChatModel is not available
|
|
17909
|
+
}
|
|
17910
|
+
}
|
|
17911
|
+
catch (error) {
|
|
17912
|
+
if (this.options.isVerbose) {
|
|
17913
|
+
console.warn('Failed to extract knowledge', error);
|
|
17914
|
+
}
|
|
17915
|
+
}
|
|
17533
17916
|
// Append to the current source
|
|
17534
17917
|
const currentSource = this.agentSource.value;
|
|
17535
|
-
const newSource = padBook(validateBook(spaceTrim__default["default"](currentSource) + '\n\n' + learningExample));
|
|
17918
|
+
const newSource = padBook(validateBook(spaceTrim__default["default"](currentSource) + '\n\n' + learningExample + knowledgeBlock));
|
|
17536
17919
|
// Update the source (which will trigger the subscription and update the underlying tools)
|
|
17537
17920
|
this.agentSource.next(newSource);
|
|
17538
17921
|
return result;
|
|
@@ -17742,7 +18125,7 @@
|
|
|
17742
18125
|
* TODO: !!! Agent on remote server
|
|
17743
18126
|
*/
|
|
17744
18127
|
|
|
17745
|
-
var css_248z = ".PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegration__KTAQl{bottom:20px;font-family:sans-serif;position:fixed;right:20px;z-index:10000}.PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationButton__beMWa{align-items:center;background-color:#007bff;border-radius:30px;box-shadow:0 4px 12px rgba(0,0,0,.15);color:#fff;cursor:pointer;display:flex;padding:10px 20px;position:relative;transition:transform .2s,box-shadow .2s}.PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationButton__beMWa:hover{box-shadow:0 6px 16px rgba(0,0,0,.2);transform:translateY(-2px)}.PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationAvatar__OrK-R{background-color:#eee;border-radius:50%;height:32px;margin-right:10px;overflow:hidden;transform:translate(-10px) scale(1.3);width:32px}.PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationAvatar__OrK-R img{height:100%;object-fit:cover;width:100%}.PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationLabel__gvgCn{font-weight:700}.PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationStatus__QBwnt{border:2px solid #fff;border-radius:50%;bottom:12px;height:12px;left:40px;position:absolute;width:12px;z-index:10}.PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationStatusConnected__w15ZJ{background-color:#57b660}.PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationStatusPending__vtVxc{background-color:#9e9e9e}.PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationStatusError__nu02u{background-color:#f44336}.PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegration__KTAQl.PromptbookAgentSeamlessIntegration-module_open__rt5ey .PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationButton__beMWa{display:none}.PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationWindow__6sxeZ{animation:PromptbookAgentSeamlessIntegration-module_promptbook-agent-slide-up__0dGVe .3s ease-out;background-color:#fff;border-radius:12px;box-shadow:0 8px 32px rgba(0,0,0,.2);display:flex;flex-direction:column;height:600px;max-height:80vh;overflow:hidden;width:380px}@keyframes PromptbookAgentSeamlessIntegration-module_promptbook-agent-slide-up__0dGVe{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationHeader__9ae8B{align-items:center;background-color:#007bff;color:#fff;display:flex;justify-content:space-between;padding:15px}.PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationHeader__9ae8B button{align-items:center!important;background:transparent!important;border:none!important;border-radius:50%!important;box-shadow:none!important;color:inherit!important;cursor:pointer;display:flex!important;height:32px!important;justify-content:center!important;margin:0 2px!important;min-width:32px!important;opacity:.8;padding:5px!important;transition:opacity .2s}.PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationHeader__9ae8B button:hover{background-color:hsla(0,0%,100%,.2)!important;opacity:1}.PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationHeader__9ae8B button span{display:none!important}.PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationHeader__9ae8B button svg{height:20px;width:20px}.PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationTitle__D6p2j{font-size:1.1em;font-weight:700}.PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationClose__Ot41T{font-size:1.2em}.PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationContent__xqAns{display:flex;flex:1;flex-direction:column;overflow-y:auto;position:relative}.PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationError__RaBDa,.PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationLoading__OAqgE{align-items:center;color:#666;display:flex;flex:1;justify-content:center;padding:20px;text-align:center}.PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationError__RaBDa{color:#d32f2f}.PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationIframe__KX5iC{border:none;flex:1;height:100%;width:100%}@media (max-width:480px){.PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegration__KTAQl.PromptbookAgentSeamlessIntegration-module_open__rt5ey{bottom:0;left:0;right:0}.PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationWindow__6sxeZ{border-radius:0;height:100vh;max-height:100vh;width:100%}}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlByb21wdGJvb2tBZ2VudFNlYW1sZXNzSW50ZWdyYXRpb24ubW9kdWxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxRkFFSSxXQUFZLENBR1osc0JBQXVCLENBSnZCLGNBQWUsQ0FFZixVQUFXLENBQ1gsYUFFSixDQUVBLDJGQUVJLGtCQUFtQixDQUNuQix3QkFBeUIsQ0FFekIsa0JBQW1CLENBR25CLHFDQUEwQyxDQUoxQyxVQUFZLENBR1osY0FBZSxDQU5mLFlBQWEsQ0FLYixpQkFBa0IsQ0FJbEIsaUJBQWtCLENBRGxCLHVDQUVKLENBRUEsaUdBRUksb0NBQXlDLENBRHpDLDBCQUVKLENBRUEsMkZBTUkscUJBQXNCLENBSHRCLGlCQUFrQixDQURsQixXQUFZLENBR1osaUJBQWtCLENBRGxCLGVBQWdCLENBSWhCLHFDQUF5QyxDQVB6QyxVQVFKLENBRUEsK0ZBRUksV0FBWSxDQUNaLGdCQUFpQixDQUZqQixVQUdKLENBRUEsMEZBQ0ksZUFDSixDQUVBLDJGQUtJLHFCQUF1QixDQUR2QixpQkFBa0IsQ0FHbEIsV0FBWSxDQUpaLFdBQVksQ0FHWixTQUFVLENBTFYsaUJBQWtCLENBQ2xCLFVBQVcsQ0FNWCxVQUNKLENBRUEsb0dBQ0ksd0JBQ0osQ0FFQSxrR0FDSSx3QkFDSixDQUVBLGdHQUNJLHdCQUNKLENBUUEsc09BQ0ksWUFDSixDQUVBLDJGQVVJLGlHQUFrRCxDQU5sRCxxQkFBdUIsQ0FDdkIsa0JBQW1CLENBQ25CLG9DQUF5QyxDQUN6QyxZQUFhLENBQ2IscUJBQXNCLENBTnRCLFlBQWEsQ0FDYixlQUFnQixDQU1oQixlQUFnQixDQVJoQixXQVVKLENBRUEsc0ZBQ0ksR0FDSSxTQUFVLENBQ1YsMEJBQ0osQ0FDQSxHQUNJLFNBQVUsQ0FDVix1QkFDSixDQUNKLENBRUEsMkZBTUksa0JBQW1CLENBTG5CLHdCQUF5QixDQUN6QixVQUFZLENBRVosWUFBYSxDQUNiLDZCQUE4QixDQUY5QixZQUlKLENBTUEsa0dBV0ksNEJBQThCLENBVjlCLGdDQUFrQyxDQUNsQyxxQkFBdUIsQ0FhdkIsMkJBQTZCLENBWjdCLHlCQUEyQixDQUMzQix1QkFBeUIsQ0FDekIsY0FBZSxDQUtmLHNCQUF3QixDQUl4QixxQkFBdUIsQ0FGdkIsZ0NBQWtDLENBSGxDLHNCQUF3QixDQUl4Qix3QkFBMEIsQ0FQMUIsVUFBWSxDQUVaLHFCQUF1QixDQUR2QixzQkFTSixDQUVBLHdHQUVJLDZDQUFxRCxDQURyRCxTQUVKLENBR0EsdUdBQ0ksc0JBQ0osQ0FHQSxzR0FFSSxXQUFZLENBRFosVUFFSixDQUVBLDBGQUVJLGVBQWdCLENBRGhCLGVBRUosQ0FFQSwwRkFFSSxlQUNKLENBRUEsNEZBSUksWUFBYSxDQUhiLE1BQU8sQ0FJUCxxQkFBc0IsQ0FIdEIsZUFBZ0IsQ0FDaEIsaUJBR0osQ0FFQSxzTEFLSSxrQkFBbUIsQ0FHbkIsVUFBVyxDQUxYLFlBQWEsQ0FEYixNQUFPLENBRVAsc0JBQXVCLENBRXZCLFlBQWEsQ0FDYixpQkFFSixDQUVBLDBGQUNJLGFBQ0osQ0FFQSwyRkFHSSxXQUFZLENBQ1osTUFBTyxDQUZQLFdBQVksQ0FEWixVQUlKLENBRUEseUJBQ0ksMklBQ0ksUUFBUyxDQUVULE1BQU8sQ0FEUCxPQUVKLENBRUEsMkZBSUksZUFBZ0IsQ0FGaEIsWUFBYSxDQUNiLGdCQUFpQixDQUZqQixVQUlKLENBQ0oiLCJmaWxlIjoiUHJvbXB0Ym9va0FnZW50U2VhbWxlc3NJbnRlZ3JhdGlvbi5tb2R1bGUuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLlByb21wdGJvb2tBZ2VudFNlYW1sZXNzSW50ZWdyYXRpb24ge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICBib3R0b206IDIwcHg7XG4gICAgcmlnaHQ6IDIwcHg7XG4gICAgei1pbmRleDogMTAwMDA7XG4gICAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7XG59XG5cbi5Qcm9tcHRib29rQWdlbnRTZWFtbGVzc0ludGVncmF0aW9uQnV0dG9uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgYm9yZGVyLXJhZGl1czogMzBweDtcbiAgICBwYWRkaW5nOiAxMHB4IDIwcHg7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiYSgwLCAwLCAwLCAwLjE1KTtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4ycywgYm94LXNoYWRvdyAwLjJzO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLlByb21wdGJvb2tBZ2VudFNlYW1sZXNzSW50ZWdyYXRpb25CdXR0b246aG92ZXIge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbiAgICBib3gtc2hhZG93OiAwIDZweCAxNnB4IHJnYmEoMCwgMCwgMCwgMC4yKTtcbn1cblxuLlByb21wdGJvb2tBZ2VudFNlYW1sZXNzSW50ZWdyYXRpb25BdmF0YXIge1xuICAgIHdpZHRoOiAzMnB4O1xuICAgIGhlaWdodDogMzJweDtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTtcblxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0xMHB4LCAwKSBzY2FsZSgxLjMpO1xufVxuXG4uUHJvbXB0Ym9va0FnZW50U2VhbWxlc3NJbnRlZ3JhdGlvbkF2YXRhciBpbWcge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBvYmplY3QtZml0OiBjb3Zlcjtcbn1cblxuLlByb21wdGJvb2tBZ2VudFNlYW1sZXNzSW50ZWdyYXRpb25MYWJlbCB7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi5Qcm9tcHRib29rQWdlbnRTZWFtbGVzc0ludGVncmF0aW9uU3RhdHVzIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2lkdGg6IDEycHg7XG4gICAgaGVpZ2h0OiAxMnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBib3JkZXI6IDJweCBzb2xpZCB3aGl0ZTtcbiAgICBsZWZ0OiA0MHB4O1xuICAgIGJvdHRvbTogMTJweDtcbiAgICB6LWluZGV4OiAxMDtcbn1cblxuLlByb21wdGJvb2tBZ2VudFNlYW1sZXNzSW50ZWdyYXRpb25TdGF0dXNDb25uZWN0ZWQge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM1N2I2NjA7XG59XG5cbi5Qcm9tcHRib29rQWdlbnRTZWFtbGVzc0ludGVncmF0aW9uU3RhdHVzUGVuZGluZyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzllOWU5ZTtcbn1cblxuLlByb21wdGJvb2tBZ2VudFNlYW1sZXNzSW50ZWdyYXRpb25TdGF0dXNFcnJvciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y0NDMzNjtcbn1cblxuLyogU3RhdGUgY2xhc3NlcyAoZW1wdHkgdG8gYWxsb3cgbW9kdWxlIG1hcHBpbmcpICovXG4ub3BlbiB7XG59XG4uY2xvc2VkIHtcbn1cblxuLlByb21wdGJvb2tBZ2VudFNlYW1sZXNzSW50ZWdyYXRpb24ub3BlbiAuUHJvbXB0Ym9va0FnZW50U2VhbWxlc3NJbnRlZ3JhdGlvbkJ1dHRvbiB7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cblxuLlByb21wdGJvb2tBZ2VudFNlYW1sZXNzSW50ZWdyYXRpb25XaW5kb3cge1xuICAgIHdpZHRoOiAzODBweDtcbiAgICBoZWlnaHQ6IDYwMHB4O1xuICAgIG1heC1oZWlnaHQ6IDgwdmg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICBib3gtc2hhZG93OiAwIDhweCAzMnB4IHJnYmEoMCwgMCwgMCwgMC4yKTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBhbmltYXRpb246IHByb21wdGJvb2stYWdlbnQtc2xpZGUtdXAgMC4zcyBlYXNlLW91dDtcbn1cblxuQGtleWZyYW1lcyBwcm9tcHRib29rLWFnZW50LXNsaWRlLXVwIHtcbiAgICBmcm9tIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDIwcHgpO1xuICAgIH1cbiAgICB0byB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgICB9XG59XG5cbi5Qcm9tcHRib29rQWdlbnRTZWFtbGVzc0ludGVncmF0aW9uSGVhZGVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBwYWRkaW5nOiAxNXB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi8qIFxuICAgT3ZlcnJpZGUgY2hhdCBhY3Rpb24gYnV0dG9ucyB0byBsb29rIGxpa2UgdGhlIGNsb3NlIGJ1dHRvbiBcbiAgIHdoZW4gcmVuZGVyZWQgaW5zaWRlIHRoZSBoZWFkZXIgdmlhIHBvcnRhbFxuKi9cbi5Qcm9tcHRib29rQWdlbnRTZWFtbGVzc0ludGVncmF0aW9uSGVhZGVyIGJ1dHRvbiB7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcbiAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG4gICAgY29sb3I6IGluaGVyaXQgIWltcG9ydGFudDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgb3BhY2l0eTogMC44O1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycztcbiAgICBwYWRkaW5nOiA1cHggIWltcG9ydGFudDtcbiAgICBtYXJnaW46IDAgMnB4ICFpbXBvcnRhbnQ7XG4gICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50O1xuICAgIG1pbi13aWR0aDogMzJweCAhaW1wb3J0YW50O1xuICAgIGhlaWdodDogMzJweCAhaW1wb3J0YW50O1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJSAhaW1wb3J0YW50O1xufVxuXG4uUHJvbXB0Ym9va0FnZW50U2VhbWxlc3NJbnRlZ3JhdGlvbkhlYWRlciBidXR0b246aG92ZXIge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpICFpbXBvcnRhbnQ7XG59XG5cbi8qIEhpZGUgdGV4dCBsYWJlbHMgaW5zaWRlIGJ1dHRvbnMgaW4gaGVhZGVyIChOZXcgQ2hhdCwgU2F2ZSkgKi9cbi5Qcm9tcHRib29rQWdlbnRTZWFtbGVzc0ludGVncmF0aW9uSGVhZGVyIGJ1dHRvbiBzcGFuIHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG5cbi8qIEVuc3VyZSBTVkcgaWNvbnMgYXJlIHZpc2libGUgYW5kIHNpemVkIGNvcnJlY3RseSAqL1xuLlByb21wdGJvb2tBZ2VudFNlYW1sZXNzSW50ZWdyYXRpb25IZWFkZXIgYnV0dG9uIHN2ZyB7XG4gICAgd2lkdGg6IDIwcHg7XG4gICAgaGVpZ2h0OiAyMHB4O1xufVxuXG4uUHJvbXB0Ym9va0FnZW50U2VhbWxlc3NJbnRlZ3JhdGlvblRpdGxlIHtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBmb250LXNpemU6IDEuMWVtO1xufVxuXG4uUHJvbXB0Ym9va0FnZW50U2VhbWxlc3NJbnRlZ3JhdGlvbkNsb3NlIHtcbiAgICAvKiBVc2Ugc2FtZSBzdHlsZXMgYXMgYWJvdmUgb3ZlcnJpZGUsIGJ1dCBrZWVwIHNwZWNpZmljIGlmIG5lZWRlZCAqL1xuICAgIGZvbnQtc2l6ZTogMS4yZW07XG59XG5cbi5Qcm9tcHRib29rQWdlbnRTZWFtbGVzc0ludGVncmF0aW9uQ29udGVudCB7XG4gICAgZmxleDogMTtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG59XG5cbi5Qcm9tcHRib29rQWdlbnRTZWFtbGVzc0ludGVncmF0aW9uTG9hZGluZyxcbi5Qcm9tcHRib29rQWdlbnRTZWFtbGVzc0ludGVncmF0aW9uRXJyb3Ige1xuICAgIGZsZXg6IDE7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHBhZGRpbmc6IDIwcHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGNvbG9yOiAjNjY2O1xufVxuXG4uUHJvbXB0Ym9va0FnZW50U2VhbWxlc3NJbnRlZ3JhdGlvbkVycm9yIHtcbiAgICBjb2xvcjogI2QzMmYyZjtcbn1cblxuLlByb21wdGJvb2tBZ2VudFNlYW1sZXNzSW50ZWdyYXRpb25JZnJhbWUge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgZmxleDogMTtcbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDQ4MHB4KSB7XG4gICAgLlByb21wdGJvb2tBZ2VudFNlYW1sZXNzSW50ZWdyYXRpb24ub3BlbiB7XG4gICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgfVxuXG4gICAgLlByb21wdGJvb2tBZ2VudFNlYW1sZXNzSW50ZWdyYXRpb25XaW5kb3cge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDB2aDtcbiAgICAgICAgbWF4LWhlaWdodDogMTAwdmg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gICAgfVxufVxuIl19 */";
|
|
18128
|
+
var css_248z = ".PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegration__KTAQl{bottom:20px;font-family:sans-serif;position:fixed;right:20px;z-index:10000}.PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationButton__beMWa{align-items:center;background-color:#007bff;border-radius:30px;box-shadow:0 4px 12px rgba(0,0,0,.15);color:#fff;cursor:pointer;display:flex;padding:10px 20px;position:relative;transition:transform .2s,box-shadow .2s}.PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationButton__beMWa:hover{box-shadow:0 6px 16px rgba(0,0,0,.2);transform:translateY(-2px)}.PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationAvatar__OrK-R{background-color:#eee;border-radius:50%;height:32px;margin-right:10px;overflow:hidden;transform:translate(-10px) scale(1.3);width:32px}.PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationAvatar__OrK-R img{height:100%;object-fit:cover;width:100%}.PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationLabel__gvgCn{font-weight:700}.PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationStatus__QBwnt{border:2px solid #fff;border-radius:50%;bottom:12px;height:12px;left:40px;position:absolute;width:12px;z-index:10}.PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationStatusConnected__w15ZJ{background-color:#57b660}.PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationStatusPending__vtVxc{background-color:#9e9e9e}.PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationStatusError__nu02u{background-color:#f44336}.PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegration__KTAQl.PromptbookAgentSeamlessIntegration-module_open__rt5ey .PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationButton__beMWa{display:none}.PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationWindow__6sxeZ{animation:PromptbookAgentSeamlessIntegration-module_promptbook-agent-slide-up__0dGVe .3s ease-out;background-color:#fff;border-radius:12px;box-shadow:0 8px 32px rgba(0,0,0,.2);display:flex;flex-direction:column;height:600px;max-height:80vh;overflow:hidden;width:380px}@keyframes PromptbookAgentSeamlessIntegration-module_promptbook-agent-slide-up__0dGVe{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationHeader__9ae8B{align-items:center;background-color:#007bff;color:#fff;display:flex;justify-content:space-between;padding:15px}.PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationHeader__9ae8B button{align-items:center!important;background:transparent!important;border:none!important;border-radius:50%!important;box-shadow:none!important;color:inherit!important;cursor:pointer;display:flex!important;height:32px!important;justify-content:center!important;margin:0 2px!important;min-width:32px!important;opacity:.8;padding:5px!important;transition:opacity .2s}.PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationHeader__9ae8B button:hover{background-color:hsla(0,0%,100%,.2)!important;opacity:1}.PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationHeader__9ae8B button span{display:none!important}.PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationHeader__9ae8B button svg{height:20px;width:20px}.PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationTitle__D6p2j{font-size:1.1em;font-weight:700}.PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationClose__Ot41T{font-size:1.2em}.PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationContent__xqAns{display:flex;flex:1;flex-direction:column;overflow-y:auto;position:relative}.PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationError__RaBDa,.PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationLoading__OAqgE{align-items:center;color:#666;display:flex;flex:1;justify-content:center;padding:20px;text-align:center}.PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationError__RaBDa{color:#d32f2f}.PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationIframe__KX5iC{border:none;height:100%;left:0;position:absolute;top:0;transition:opacity .2s ease-in-out;width:100%}@media (max-width:480px){.PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegration__KTAQl.PromptbookAgentSeamlessIntegration-module_open__rt5ey{bottom:0;left:0;right:0}.PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationWindow__6sxeZ{border-radius:0;height:100vh;max-height:100vh;width:100%}}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlByb21wdGJvb2tBZ2VudFNlYW1sZXNzSW50ZWdyYXRpb24ubW9kdWxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxRkFFSSxXQUFZLENBR1osc0JBQXVCLENBSnZCLGNBQWUsQ0FFZixVQUFXLENBQ1gsYUFFSixDQUVBLDJGQUVJLGtCQUFtQixDQUNuQix3QkFBeUIsQ0FFekIsa0JBQW1CLENBR25CLHFDQUEwQyxDQUoxQyxVQUFZLENBR1osY0FBZSxDQU5mLFlBQWEsQ0FLYixpQkFBa0IsQ0FJbEIsaUJBQWtCLENBRGxCLHVDQUVKLENBRUEsaUdBRUksb0NBQXlDLENBRHpDLDBCQUVKLENBRUEsMkZBTUkscUJBQXNCLENBSHRCLGlCQUFrQixDQURsQixXQUFZLENBR1osaUJBQWtCLENBRGxCLGVBQWdCLENBSWhCLHFDQUF5QyxDQVB6QyxVQVFKLENBRUEsK0ZBRUksV0FBWSxDQUNaLGdCQUFpQixDQUZqQixVQUdKLENBRUEsMEZBQ0ksZUFDSixDQUVBLDJGQUtJLHFCQUF1QixDQUR2QixpQkFBa0IsQ0FHbEIsV0FBWSxDQUpaLFdBQVksQ0FHWixTQUFVLENBTFYsaUJBQWtCLENBQ2xCLFVBQVcsQ0FNWCxVQUNKLENBRUEsb0dBQ0ksd0JBQ0osQ0FFQSxrR0FDSSx3QkFDSixDQUVBLGdHQUNJLHdCQUNKLENBUUEsc09BQ0ksWUFDSixDQUVBLDJGQVVJLGlHQUFrRCxDQU5sRCxxQkFBdUIsQ0FDdkIsa0JBQW1CLENBQ25CLG9DQUF5QyxDQUN6QyxZQUFhLENBQ2IscUJBQXNCLENBTnRCLFlBQWEsQ0FDYixlQUFnQixDQU1oQixlQUFnQixDQVJoQixXQVVKLENBRUEsc0ZBQ0ksR0FDSSxTQUFVLENBQ1YsMEJBQ0osQ0FDQSxHQUNJLFNBQVUsQ0FDVix1QkFDSixDQUNKLENBRUEsMkZBTUksa0JBQW1CLENBTG5CLHdCQUF5QixDQUN6QixVQUFZLENBRVosWUFBYSxDQUNiLDZCQUE4QixDQUY5QixZQUlKLENBTUEsa0dBV0ksNEJBQThCLENBVjlCLGdDQUFrQyxDQUNsQyxxQkFBdUIsQ0FhdkIsMkJBQTZCLENBWjdCLHlCQUEyQixDQUMzQix1QkFBeUIsQ0FDekIsY0FBZSxDQUtmLHNCQUF3QixDQUl4QixxQkFBdUIsQ0FGdkIsZ0NBQWtDLENBSGxDLHNCQUF3QixDQUl4Qix3QkFBMEIsQ0FQMUIsVUFBWSxDQUVaLHFCQUF1QixDQUR2QixzQkFTSixDQUVBLHdHQUVJLDZDQUFxRCxDQURyRCxTQUVKLENBR0EsdUdBQ0ksc0JBQ0osQ0FHQSxzR0FFSSxXQUFZLENBRFosVUFFSixDQUVBLDBGQUVJLGVBQWdCLENBRGhCLGVBRUosQ0FFQSwwRkFFSSxlQUNKLENBRUEsNEZBSUksWUFBYSxDQUhiLE1BQU8sQ0FJUCxxQkFBc0IsQ0FIdEIsZUFBZ0IsQ0FDaEIsaUJBR0osQ0FFQSxzTEFLSSxrQkFBbUIsQ0FHbkIsVUFBVyxDQUxYLFlBQWEsQ0FEYixNQUFPLENBRVAsc0JBQXVCLENBRXZCLFlBQWEsQ0FDYixpQkFFSixDQUVBLDBGQUNJLGFBQ0osQ0FFQSwyRkFNSSxXQUFZLENBRFosV0FBWSxDQUZaLE1BQU8sQ0FGUCxpQkFBa0IsQ0FDbEIsS0FBTSxDQUtOLGtDQUFvQyxDQUhwQyxVQUlKLENBRUEseUJBQ0ksMklBQ0ksUUFBUyxDQUVULE1BQU8sQ0FEUCxPQUVKLENBRUEsMkZBSUksZUFBZ0IsQ0FGaEIsWUFBYSxDQUNiLGdCQUFpQixDQUZqQixVQUlKLENBQ0oiLCJmaWxlIjoiUHJvbXB0Ym9va0FnZW50U2VhbWxlc3NJbnRlZ3JhdGlvbi5tb2R1bGUuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLlByb21wdGJvb2tBZ2VudFNlYW1sZXNzSW50ZWdyYXRpb24ge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICBib3R0b206IDIwcHg7XG4gICAgcmlnaHQ6IDIwcHg7XG4gICAgei1pbmRleDogMTAwMDA7XG4gICAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7XG59XG5cbi5Qcm9tcHRib29rQWdlbnRTZWFtbGVzc0ludGVncmF0aW9uQnV0dG9uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgYm9yZGVyLXJhZGl1czogMzBweDtcbiAgICBwYWRkaW5nOiAxMHB4IDIwcHg7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiYSgwLCAwLCAwLCAwLjE1KTtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4ycywgYm94LXNoYWRvdyAwLjJzO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLlByb21wdGJvb2tBZ2VudFNlYW1sZXNzSW50ZWdyYXRpb25CdXR0b246aG92ZXIge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbiAgICBib3gtc2hhZG93OiAwIDZweCAxNnB4IHJnYmEoMCwgMCwgMCwgMC4yKTtcbn1cblxuLlByb21wdGJvb2tBZ2VudFNlYW1sZXNzSW50ZWdyYXRpb25BdmF0YXIge1xuICAgIHdpZHRoOiAzMnB4O1xuICAgIGhlaWdodDogMzJweDtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTtcblxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0xMHB4LCAwKSBzY2FsZSgxLjMpO1xufVxuXG4uUHJvbXB0Ym9va0FnZW50U2VhbWxlc3NJbnRlZ3JhdGlvbkF2YXRhciBpbWcge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBvYmplY3QtZml0OiBjb3Zlcjtcbn1cblxuLlByb21wdGJvb2tBZ2VudFNlYW1sZXNzSW50ZWdyYXRpb25MYWJlbCB7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi5Qcm9tcHRib29rQWdlbnRTZWFtbGVzc0ludGVncmF0aW9uU3RhdHVzIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2lkdGg6IDEycHg7XG4gICAgaGVpZ2h0OiAxMnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBib3JkZXI6IDJweCBzb2xpZCB3aGl0ZTtcbiAgICBsZWZ0OiA0MHB4O1xuICAgIGJvdHRvbTogMTJweDtcbiAgICB6LWluZGV4OiAxMDtcbn1cblxuLlByb21wdGJvb2tBZ2VudFNlYW1sZXNzSW50ZWdyYXRpb25TdGF0dXNDb25uZWN0ZWQge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM1N2I2NjA7XG59XG5cbi5Qcm9tcHRib29rQWdlbnRTZWFtbGVzc0ludGVncmF0aW9uU3RhdHVzUGVuZGluZyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzllOWU5ZTtcbn1cblxuLlByb21wdGJvb2tBZ2VudFNlYW1sZXNzSW50ZWdyYXRpb25TdGF0dXNFcnJvciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y0NDMzNjtcbn1cblxuLyogU3RhdGUgY2xhc3NlcyAoZW1wdHkgdG8gYWxsb3cgbW9kdWxlIG1hcHBpbmcpICovXG4ub3BlbiB7XG59XG4uY2xvc2VkIHtcbn1cblxuLlByb21wdGJvb2tBZ2VudFNlYW1sZXNzSW50ZWdyYXRpb24ub3BlbiAuUHJvbXB0Ym9va0FnZW50U2VhbWxlc3NJbnRlZ3JhdGlvbkJ1dHRvbiB7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cblxuLlByb21wdGJvb2tBZ2VudFNlYW1sZXNzSW50ZWdyYXRpb25XaW5kb3cge1xuICAgIHdpZHRoOiAzODBweDtcbiAgICBoZWlnaHQ6IDYwMHB4O1xuICAgIG1heC1oZWlnaHQ6IDgwdmg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICBib3gtc2hhZG93OiAwIDhweCAzMnB4IHJnYmEoMCwgMCwgMCwgMC4yKTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBhbmltYXRpb246IHByb21wdGJvb2stYWdlbnQtc2xpZGUtdXAgMC4zcyBlYXNlLW91dDtcbn1cblxuQGtleWZyYW1lcyBwcm9tcHRib29rLWFnZW50LXNsaWRlLXVwIHtcbiAgICBmcm9tIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDIwcHgpO1xuICAgIH1cbiAgICB0byB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgICB9XG59XG5cbi5Qcm9tcHRib29rQWdlbnRTZWFtbGVzc0ludGVncmF0aW9uSGVhZGVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBwYWRkaW5nOiAxNXB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi8qIFxuICAgT3ZlcnJpZGUgY2hhdCBhY3Rpb24gYnV0dG9ucyB0byBsb29rIGxpa2UgdGhlIGNsb3NlIGJ1dHRvbiBcbiAgIHdoZW4gcmVuZGVyZWQgaW5zaWRlIHRoZSBoZWFkZXIgdmlhIHBvcnRhbFxuKi9cbi5Qcm9tcHRib29rQWdlbnRTZWFtbGVzc0ludGVncmF0aW9uSGVhZGVyIGJ1dHRvbiB7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcbiAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG4gICAgY29sb3I6IGluaGVyaXQgIWltcG9ydGFudDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgb3BhY2l0eTogMC44O1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycztcbiAgICBwYWRkaW5nOiA1cHggIWltcG9ydGFudDtcbiAgICBtYXJnaW46IDAgMnB4ICFpbXBvcnRhbnQ7XG4gICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50O1xuICAgIG1pbi13aWR0aDogMzJweCAhaW1wb3J0YW50O1xuICAgIGhlaWdodDogMzJweCAhaW1wb3J0YW50O1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJSAhaW1wb3J0YW50O1xufVxuXG4uUHJvbXB0Ym9va0FnZW50U2VhbWxlc3NJbnRlZ3JhdGlvbkhlYWRlciBidXR0b246aG92ZXIge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpICFpbXBvcnRhbnQ7XG59XG5cbi8qIEhpZGUgdGV4dCBsYWJlbHMgaW5zaWRlIGJ1dHRvbnMgaW4gaGVhZGVyIChOZXcgQ2hhdCwgU2F2ZSkgKi9cbi5Qcm9tcHRib29rQWdlbnRTZWFtbGVzc0ludGVncmF0aW9uSGVhZGVyIGJ1dHRvbiBzcGFuIHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG5cbi8qIEVuc3VyZSBTVkcgaWNvbnMgYXJlIHZpc2libGUgYW5kIHNpemVkIGNvcnJlY3RseSAqL1xuLlByb21wdGJvb2tBZ2VudFNlYW1sZXNzSW50ZWdyYXRpb25IZWFkZXIgYnV0dG9uIHN2ZyB7XG4gICAgd2lkdGg6IDIwcHg7XG4gICAgaGVpZ2h0OiAyMHB4O1xufVxuXG4uUHJvbXB0Ym9va0FnZW50U2VhbWxlc3NJbnRlZ3JhdGlvblRpdGxlIHtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBmb250LXNpemU6IDEuMWVtO1xufVxuXG4uUHJvbXB0Ym9va0FnZW50U2VhbWxlc3NJbnRlZ3JhdGlvbkNsb3NlIHtcbiAgICAvKiBVc2Ugc2FtZSBzdHlsZXMgYXMgYWJvdmUgb3ZlcnJpZGUsIGJ1dCBrZWVwIHNwZWNpZmljIGlmIG5lZWRlZCAqL1xuICAgIGZvbnQtc2l6ZTogMS4yZW07XG59XG5cbi5Qcm9tcHRib29rQWdlbnRTZWFtbGVzc0ludGVncmF0aW9uQ29udGVudCB7XG4gICAgZmxleDogMTtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG59XG5cbi5Qcm9tcHRib29rQWdlbnRTZWFtbGVzc0ludGVncmF0aW9uTG9hZGluZyxcbi5Qcm9tcHRib29rQWdlbnRTZWFtbGVzc0ludGVncmF0aW9uRXJyb3Ige1xuICAgIGZsZXg6IDE7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHBhZGRpbmc6IDIwcHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGNvbG9yOiAjNjY2O1xufVxuXG4uUHJvbXB0Ym9va0FnZW50U2VhbWxlc3NJbnRlZ3JhdGlvbkVycm9yIHtcbiAgICBjb2xvcjogI2QzMmYyZjtcbn1cblxuLlByb21wdGJvb2tBZ2VudFNlYW1sZXNzSW50ZWdyYXRpb25JZnJhbWUge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycyBlYXNlLWluLW91dDtcbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDQ4MHB4KSB7XG4gICAgLlByb21wdGJvb2tBZ2VudFNlYW1sZXNzSW50ZWdyYXRpb24ub3BlbiB7XG4gICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgfVxuXG4gICAgLlByb21wdGJvb2tBZ2VudFNlYW1sZXNzSW50ZWdyYXRpb25XaW5kb3cge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDB2aDtcbiAgICAgICAgbWF4LWhlaWdodDogMTAwdmg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gICAgfVxufVxuIl19 */";
|
|
17746
18129
|
var styles = {"PromptbookAgentSeamlessIntegration":"PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegration__KTAQl","PromptbookAgentSeamlessIntegrationButton":"PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationButton__beMWa","PromptbookAgentSeamlessIntegrationAvatar":"PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationAvatar__OrK-R","PromptbookAgentSeamlessIntegrationLabel":"PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationLabel__gvgCn","PromptbookAgentSeamlessIntegrationStatus":"PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationStatus__QBwnt","PromptbookAgentSeamlessIntegrationStatusConnected":"PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationStatusConnected__w15ZJ","PromptbookAgentSeamlessIntegrationStatusPending":"PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationStatusPending__vtVxc","PromptbookAgentSeamlessIntegrationStatusError":"PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationStatusError__nu02u","open":"PromptbookAgentSeamlessIntegration-module_open__rt5ey","closed":"PromptbookAgentSeamlessIntegration-module_closed__VPHQ-","PromptbookAgentSeamlessIntegrationWindow":"PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationWindow__6sxeZ","promptbook-agent-slide-up":"PromptbookAgentSeamlessIntegration-module_promptbook-agent-slide-up__0dGVe","PromptbookAgentSeamlessIntegrationHeader":"PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationHeader__9ae8B","PromptbookAgentSeamlessIntegrationTitle":"PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationTitle__D6p2j","PromptbookAgentSeamlessIntegrationClose":"PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationClose__Ot41T","PromptbookAgentSeamlessIntegrationContent":"PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationContent__xqAns","PromptbookAgentSeamlessIntegrationLoading":"PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationLoading__OAqgE","PromptbookAgentSeamlessIntegrationError":"PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationError__RaBDa","PromptbookAgentSeamlessIntegrationIframe":"PromptbookAgentSeamlessIntegration-module_PromptbookAgentSeamlessIntegrationIframe__KX5iC"};
|
|
17747
18130
|
styleInject(css_248z);
|
|
17748
18131
|
|
|
@@ -17756,10 +18139,14 @@
|
|
|
17756
18139
|
const { agentUrl, meta, onOpenChange, className, style, isFocusedOnLoad, isIframeUsed = false } = props;
|
|
17757
18140
|
const [isOpen, setIsOpen] = react.useState(false);
|
|
17758
18141
|
const [headerElement, setHeaderElement] = react.useState(null);
|
|
18142
|
+
const [isIframeLoaded, setIsIframeLoaded] = react.useState(false);
|
|
17759
18143
|
react.useEffect(() => {
|
|
17760
18144
|
if (onOpenChange) {
|
|
17761
18145
|
onOpenChange(isOpen);
|
|
17762
18146
|
}
|
|
18147
|
+
if (!isOpen) {
|
|
18148
|
+
setIsIframeLoaded(false);
|
|
18149
|
+
}
|
|
17763
18150
|
}, [isOpen, onOpenChange]);
|
|
17764
18151
|
const [agent, setAgent] = react.useState(null);
|
|
17765
18152
|
const [error, setError] = react.useState(null);
|
|
@@ -17802,7 +18189,8 @@
|
|
|
17802
18189
|
// TODO: [๐ง ] Handle error state (show error message in the chat window)
|
|
17803
18190
|
const image = ((_a = agent === null || agent === void 0 ? void 0 : agent.meta) === null || _a === void 0 ? void 0 : _a.image) ||
|
|
17804
18191
|
(meta === null || meta === void 0 ? void 0 : meta.image) ||
|
|
17805
|
-
|
|
18192
|
+
// Note: [๐คน] Using default avatar from the agent server
|
|
18193
|
+
`${agentUrl}/images/default-avatar.png`;
|
|
17806
18194
|
const color = ((_b = agent === null || agent === void 0 ? void 0 : agent.meta) === null || _b === void 0 ? void 0 : _b.color) || (meta === null || meta === void 0 ? void 0 : meta.color);
|
|
17807
18195
|
let connectionStatus = 'pending';
|
|
17808
18196
|
if (agent) {
|
|
@@ -17815,7 +18203,7 @@
|
|
|
17815
18203
|
? styles.PromptbookAgentSeamlessIntegrationStatusConnected
|
|
17816
18204
|
: connectionStatus === 'error'
|
|
17817
18205
|
? styles.PromptbookAgentSeamlessIntegrationStatusError
|
|
17818
|
-
: styles.PromptbookAgentSeamlessIntegrationStatusPending}` }), jsxRuntime.jsx("div", { className: styles.PromptbookAgentSeamlessIntegrationLabel, children: "CHAT" })] }), isOpen && (jsxRuntime.jsxs("div", { className: styles.PromptbookAgentSeamlessIntegrationWindow, children: [jsxRuntime.
|
|
18206
|
+
: styles.PromptbookAgentSeamlessIntegrationStatusPending}` }), jsxRuntime.jsx("div", { className: styles.PromptbookAgentSeamlessIntegrationLabel, children: "CHAT" })] }), isOpen && (jsxRuntime.jsxs("div", { className: styles.PromptbookAgentSeamlessIntegrationWindow, children: [jsxRuntime.jsxs("div", { className: styles.PromptbookAgentSeamlessIntegrationHeader, style: { backgroundColor: color }, ref: setHeaderElement, children: [jsxRuntime.jsx("div", { className: styles.PromptbookAgentSeamlessIntegrationTitle, children: (agent === null || agent === void 0 ? void 0 : agent.meta.fullname) || (meta === null || meta === void 0 ? void 0 : meta.fullname) || (agent === null || agent === void 0 ? void 0 : agent.agentName) || 'Chat with Agent' }), isIframeUsed && (jsxRuntime.jsx("button", { className: styles.PromptbookAgentSeamlessIntegrationClose, onClick: () => setIsOpen(false), title: "Close", children: jsxRuntime.jsx(CloseIcon, {}) }))] }), jsxRuntime.jsx("div", { className: styles.PromptbookAgentSeamlessIntegrationContent, children: isIframeUsed ? (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [!isIframeLoaded && (jsxRuntime.jsx("div", { className: styles.PromptbookAgentSeamlessIntegrationLoading, children: "Loading chat..." })), jsxRuntime.jsx("iframe", { src: agentUrl + '/chat?headless', className: styles.PromptbookAgentSeamlessIntegrationIframe, style: { opacity: isIframeLoaded ? 1 : 0 }, tabIndex: -1, onLoad: () => setIsIframeLoaded(true) })] })) : agent ? (jsxRuntime.jsx(AgentChat, { agent: agent, actionsContainer: headerElement, isFocusedOnLoad: isFocusedOnLoad, extraActions: jsxRuntime.jsx("button", { className: styles.PromptbookAgentSeamlessIntegrationClose, onClick: () => setIsOpen(false), title: "Close", children: jsxRuntime.jsx(CloseIcon, {}) }) })) : error ? (jsxRuntime.jsxs("div", { className: styles.PromptbookAgentSeamlessIntegrationError, children: ["Failed to connect to agent: ", error.message] })) : (jsxRuntime.jsx("div", { className: styles.PromptbookAgentSeamlessIntegrationLoading, children: "Connecting to agent..." })) })] }))] }));
|
|
17819
18207
|
}
|
|
17820
18208
|
|
|
17821
18209
|
/**
|