langgraph-ui-components 0.0.13 → 0.0.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.es107.js +4 -4
- package/dist/index.es109.js +1 -1
- package/dist/index.es115.js +1 -1
- package/dist/index.es119.js +1 -1
- package/dist/index.es121.js +1 -1
- package/dist/index.es122.js +9 -9
- package/dist/index.es129.js +2 -2
- package/dist/index.es13.js +6 -6
- package/dist/index.es132.js +2 -2
- package/dist/index.es141.js +1 -1
- package/dist/index.es142.js +2 -2
- package/dist/index.es143.js +1 -1
- package/dist/index.es156.js +1 -1
- package/dist/index.es16.js +1 -1
- package/dist/index.es164.js +1 -1
- package/dist/index.es165.js +1 -1
- package/dist/index.es166.js +1 -1
- package/dist/index.es167.js +1 -1
- package/dist/index.es168.js +1 -1
- package/dist/index.es169.js +1 -1
- package/dist/index.es170.js +1 -1
- package/dist/index.es171.js +1 -1
- package/dist/index.es172.js +1 -1
- package/dist/index.es173.js +1 -1
- package/dist/index.es174.js +1 -1
- package/dist/index.es175.js +1 -1
- package/dist/index.es176.js +1 -1
- package/dist/index.es177.js +1 -1
- package/dist/index.es178.js +1 -1
- package/dist/index.es179.js +1 -1
- package/dist/index.es180.js +1 -1
- package/dist/index.es181.js +1 -1
- package/dist/index.es182.js +1 -1
- package/dist/index.es183.js +1 -1
- package/dist/index.es184.js +1 -1
- package/dist/index.es185.js +1 -1
- package/dist/index.es186.js +1 -1
- package/dist/index.es187.js +1 -1
- package/dist/index.es188.js +1 -1
- package/dist/index.es189.js +1 -1
- package/dist/index.es190.js +1 -1
- package/dist/index.es191.js +1 -1
- package/dist/index.es192.js +1 -1
- package/dist/index.es193.js +1 -1
- package/dist/index.es194.js +1 -1
- package/dist/index.es195.js +1 -1
- package/dist/index.es196.js +1 -1
- package/dist/index.es197.js +1 -1
- package/dist/index.es198.js +1 -1
- package/dist/index.es199.js +1 -1
- package/dist/index.es2.js +30 -24
- package/dist/index.es2.js.map +1 -1
- package/dist/index.es20.js +2 -2
- package/dist/index.es200.js +1 -1
- package/dist/index.es201.js +1 -1
- package/dist/index.es202.js +1 -1
- package/dist/index.es203.js +1 -1
- package/dist/index.es204.js +1 -1
- package/dist/index.es205.js +1 -1
- package/dist/index.es206.js +1 -1
- package/dist/index.es207.js +1 -1
- package/dist/index.es208.js +1 -1
- package/dist/index.es214.js +4 -2
- package/dist/index.es214.js.map +1 -1
- package/dist/index.es215.js +2 -2
- package/dist/index.es216.js +2 -2
- package/dist/index.es217.js +2 -2
- package/dist/index.es218.js +2 -2
- package/dist/index.es219.js +2 -2
- package/dist/index.es22.js +15 -119
- package/dist/index.es22.js.map +1 -1
- package/dist/index.es220.js +2 -2
- package/dist/index.es221.js +2 -2
- package/dist/index.es222.js +2 -2
- package/dist/index.es223.js +2 -2
- package/dist/index.es224.js +2 -2
- package/dist/index.es225.js +2 -2
- package/dist/index.es226.js +2 -2
- package/dist/index.es227.js +2 -2
- package/dist/index.es228.js +2 -2
- package/dist/index.es229.js +2 -2
- package/dist/index.es23.js +64 -17
- package/dist/index.es23.js.map +1 -1
- package/dist/index.es230.js +2 -2
- package/dist/index.es231.js +2 -2
- package/dist/index.es232.js +2 -2
- package/dist/index.es233.js +2 -2
- package/dist/index.es234.js +2 -2
- package/dist/index.es235.js +2 -2
- package/dist/index.es236.js +2 -2
- package/dist/index.es237.js +2 -2
- package/dist/index.es238.js +2 -2
- package/dist/index.es239.js +2 -2
- package/dist/index.es24.js +29 -60
- package/dist/index.es24.js.map +1 -1
- package/dist/index.es240.js +2 -2
- package/dist/index.es241.js +2 -2
- package/dist/index.es242.js +2 -2
- package/dist/index.es243.js +2 -2
- package/dist/index.es244.js +2 -2
- package/dist/index.es245.js +2 -2
- package/dist/index.es246.js +2 -2
- package/dist/index.es247.js +2 -2
- package/dist/index.es248.js +2 -2
- package/dist/index.es249.js +2 -2
- package/dist/index.es25.js +145 -28
- package/dist/index.es25.js.map +1 -1
- package/dist/index.es250.js +2 -2
- package/dist/index.es251.js +2 -2
- package/dist/index.es252.js +2 -2
- package/dist/index.es253.js +2 -2
- package/dist/index.es254.js +2 -2
- package/dist/index.es255.js +2 -2
- package/dist/index.es256.js +2 -2
- package/dist/index.es257.js +2 -2
- package/dist/index.es258.js +2 -2
- package/dist/index.es259.js +2 -4
- package/dist/index.es259.js.map +1 -1
- package/dist/index.es26.js +100 -144
- package/dist/index.es26.js.map +1 -1
- package/dist/index.es260.js +8 -5
- package/dist/index.es260.js.map +1 -1
- package/dist/index.es261.js +5 -13
- package/dist/index.es261.js.map +1 -1
- package/dist/index.es262.js +12 -5
- package/dist/index.es262.js.map +1 -1
- package/dist/index.es263.js +6 -8
- package/dist/index.es263.js.map +1 -1
- package/dist/index.es267.js +63 -6
- package/dist/index.es267.js.map +1 -1
- package/dist/index.es268.js +21 -102
- package/dist/index.es268.js.map +1 -1
- package/dist/index.es269.js +5 -118
- package/dist/index.es269.js.map +1 -1
- package/dist/index.es27.js +66 -101
- package/dist/index.es27.js.map +1 -1
- package/dist/index.es270.js +330 -117
- package/dist/index.es270.js.map +1 -1
- package/dist/index.es271.js +6 -114
- package/dist/index.es271.js.map +1 -1
- package/dist/index.es272.js +103 -6
- package/dist/index.es272.js.map +1 -1
- package/dist/index.es273.js +112 -57
- package/dist/index.es273.js.map +1 -1
- package/dist/index.es274.js +135 -21
- package/dist/index.es274.js.map +1 -1
- package/dist/index.es275.js +114 -5
- package/dist/index.es275.js.map +1 -1
- package/dist/index.es276.js +6 -349
- package/dist/index.es276.js.map +1 -1
- package/dist/index.es28.js +121 -68
- package/dist/index.es28.js.map +1 -1
- package/dist/index.es280.js +3726 -131
- package/dist/index.es280.js.map +1 -1
- package/dist/index.es281.js +342 -2
- package/dist/index.es281.js.map +1 -1
- package/dist/index.es282.js +76 -3704
- package/dist/index.es282.js.map +1 -1
- package/dist/index.es283.js +117 -326
- package/dist/index.es283.js.map +1 -1
- package/dist/index.es284.js +13 -107
- package/dist/index.es284.js.map +1 -1
- package/dist/index.es285.js +142 -123
- package/dist/index.es285.js.map +1 -1
- package/dist/index.es286.js +13 -13
- package/dist/index.es286.js.map +1 -1
- package/dist/index.es287.js +6 -150
- package/dist/index.es287.js.map +1 -1
- package/dist/index.es288.js +19 -13
- package/dist/index.es288.js.map +1 -1
- package/dist/index.es289.js +88 -6
- package/dist/index.es289.js.map +1 -1
- package/dist/index.es29.js +1 -1
- package/dist/index.es290.js +238 -16
- package/dist/index.es290.js.map +1 -1
- package/dist/index.es291.js +22 -88
- package/dist/index.es291.js.map +1 -1
- package/dist/index.es292.js +6 -243
- package/dist/index.es292.js.map +1 -1
- package/dist/index.es293.js +4 -24
- package/dist/index.es293.js.map +1 -1
- package/dist/index.es294.js +18 -6
- package/dist/index.es294.js.map +1 -1
- package/dist/index.es295.js +8 -4
- package/dist/index.es295.js.map +1 -1
- package/dist/index.es296.js +141 -17
- package/dist/index.es296.js.map +1 -1
- package/dist/index.es297.js +2 -8
- package/dist/index.es297.js.map +1 -1
- package/dist/index.es50.js +208 -5
- package/dist/index.es50.js.map +1 -1
- package/dist/index.es51.js +138 -202
- package/dist/index.es51.js.map +1 -1
- package/dist/index.es52.js +42 -141
- package/dist/index.es52.js.map +1 -1
- package/dist/index.es53.js +5 -45
- package/dist/index.es53.js.map +1 -1
- package/dist/index.es7.js +5 -25
- package/dist/index.es7.js.map +1 -1
- package/package.json +1 -1
package/dist/index.es107.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { ZodIssueCode, ZodError } from "./index.
|
|
2
|
-
import { getParsedType, util, ZodParsedType } from "./index.
|
|
3
|
-
import { errorUtil } from "./index.
|
|
4
|
-
import { OK, ParseStatus, isAsync, isValid, addIssueToContext, INVALID, DIRTY, isAborted, isDirty } from "./index.
|
|
1
|
+
import { ZodIssueCode, ZodError } from "./index.es275.js";
|
|
2
|
+
import { getParsedType, util, ZodParsedType } from "./index.es274.js";
|
|
3
|
+
import { errorUtil } from "./index.es276.js";
|
|
4
|
+
import { OK, ParseStatus, isAsync, isValid, addIssueToContext, INVALID, DIRTY, isAborted, isDirty } from "./index.es273.js";
|
|
5
5
|
class ParseInputLazyPath {
|
|
6
6
|
constructor(parent, value, path, key) {
|
|
7
7
|
this._cachedPath = [];
|
package/dist/index.es109.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getDefaultExportFromCjs } from "./index.
|
|
1
|
+
import { getDefaultExportFromCjs } from "./index.es214.js";
|
|
2
2
|
import { __require as requireEventemitter3 } from "./index.es158.js";
|
|
3
3
|
var eventemitter3Exports = requireEventemitter3();
|
|
4
4
|
const EventEmitter = /* @__PURE__ */ getDefaultExportFromCjs(eventemitter3Exports);
|
package/dist/index.es115.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getDefaultExportFromCjs } from "./index.
|
|
1
|
+
import { getDefaultExportFromCjs } from "./index.es214.js";
|
|
2
2
|
import { __require as requireDecamelize } from "./index.es136.js";
|
|
3
3
|
var decamelizeExports = requireDecamelize();
|
|
4
4
|
const snakeCase = /* @__PURE__ */ getDefaultExportFromCjs(decamelizeExports);
|
package/dist/index.es119.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getDefaultExportFromCjs } from "./index.
|
|
1
|
+
import { getDefaultExportFromCjs } from "./index.es214.js";
|
|
2
2
|
import { __require as requireDist } from "./index.es148.js";
|
|
3
3
|
var distExports = requireDist();
|
|
4
4
|
const PQueueMod = /* @__PURE__ */ getDefaultExportFromCjs(distExports);
|
package/dist/index.es121.js
CHANGED
package/dist/index.es122.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { Client } from "./index.
|
|
2
|
-
import { isTracingEnabled } from "./index.
|
|
3
|
-
import { isConflictingEndpointsError, ConflictingEndpointsError } from "./index.
|
|
4
|
-
import { _LC_CONTEXT_VARIABLES_KEY, _REPLICA_TRACE_ROOTS_KEY } from "./index.
|
|
5
|
-
import { getContextVar, setContextVar } from "./index.
|
|
6
|
-
import { getEnvironmentVariable, getRuntimeEnvironment, getLangSmithEnvironmentVariable } from "./index.
|
|
7
|
-
import { getDefaultProjectName } from "./index.
|
|
8
|
-
import { warnOnce } from "./index.
|
|
9
|
-
import { uuid7FromTime } from "./index.
|
|
1
|
+
import { Client } from "./index.es280.js";
|
|
2
|
+
import { isTracingEnabled } from "./index.es292.js";
|
|
3
|
+
import { isConflictingEndpointsError, ConflictingEndpointsError } from "./index.es289.js";
|
|
4
|
+
import { _LC_CONTEXT_VARIABLES_KEY, _REPLICA_TRACE_ROOTS_KEY } from "./index.es293.js";
|
|
5
|
+
import { getContextVar, setContextVar } from "./index.es294.js";
|
|
6
|
+
import { getEnvironmentVariable, getRuntimeEnvironment, getLangSmithEnvironmentVariable } from "./index.es285.js";
|
|
7
|
+
import { getDefaultProjectName } from "./index.es263.js";
|
|
8
|
+
import { warnOnce } from "./index.es287.js";
|
|
9
|
+
import { uuid7FromTime } from "./index.es286.js";
|
|
10
10
|
import { v5 } from "uuid";
|
|
11
11
|
const UUID_NAMESPACE_DNS = "6ba7b810-9dad-11d1-80b4-00c04fd430c8";
|
|
12
12
|
function getReplicaKey(replica) {
|
package/dist/index.es129.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { $constructor, $ZodAsyncError } from "./index.
|
|
1
|
+
import { $constructor, $ZodAsyncError } from "./index.es267.js";
|
|
2
2
|
import { defineLazy, aborted } from "./index.es128.js";
|
|
3
3
|
import { clone } from "./index.es128.js";
|
|
4
4
|
import { safeParse, safeParseAsync } from "./index.es132.js";
|
|
5
|
-
import { version } from "./index.
|
|
5
|
+
import { version } from "./index.es269.js";
|
|
6
6
|
const $ZodType = /* @__PURE__ */ $constructor("$ZodType", (inst, def) => {
|
|
7
7
|
var _a;
|
|
8
8
|
inst ?? (inst = {});
|
package/dist/index.es13.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { jsx, jsxs, Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { useStreamContext } from "./index.es7.js";
|
|
3
|
-
import { isAiWithToolCalls, isToolMessage } from "./index.
|
|
3
|
+
import { isAiWithToolCalls, isToolMessage } from "./index.es22.js";
|
|
4
4
|
import React__default, { useState, useMemo, useRef, useCallback, useEffect, useLayoutEffect } from "react";
|
|
5
|
-
import AgentMessage from "./index.
|
|
6
|
-
import CustomComponentRender from "./index.
|
|
7
|
-
import HumanMessage from "./index.
|
|
8
|
-
import Thinking from "./index.
|
|
9
|
-
import ToolCallFunctions from "./index.
|
|
5
|
+
import AgentMessage from "./index.es23.js";
|
|
6
|
+
import CustomComponentRender from "./index.es24.js";
|
|
7
|
+
import HumanMessage from "./index.es25.js";
|
|
8
|
+
import Thinking from "./index.es26.js";
|
|
9
|
+
import ToolCallFunctions from "./index.es27.js";
|
|
10
10
|
function ChatBody({ setIsFirstMessage, enableToolCallIndicator }) {
|
|
11
11
|
const stream = useStreamContext();
|
|
12
12
|
const messages = stream.messages;
|
package/dist/index.es132.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { config, $ZodAsyncError } from "./index.
|
|
2
|
-
import { $ZodRealError, $ZodError } from "./index.
|
|
1
|
+
import { config, $ZodAsyncError } from "./index.es267.js";
|
|
2
|
+
import { $ZodRealError, $ZodError } from "./index.es268.js";
|
|
3
3
|
import { finalizeIssue, captureStackTrace } from "./index.es128.js";
|
|
4
4
|
const _parseAsync = (_Err) => async (schema, value, _ctx, params) => {
|
|
5
5
|
const ctx = _ctx ? Object.assign(_ctx, { async: true }) : { async: true };
|
package/dist/index.es141.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { __export } from "./index.es54.js";
|
|
2
2
|
import { BaseTracer } from "./index.es125.js";
|
|
3
|
-
import styles from "./index.
|
|
3
|
+
import styles from "./index.es261.js";
|
|
4
4
|
var console_exports = {};
|
|
5
5
|
__export(console_exports, { ConsoleCallbackHandler: () => ConsoleCallbackHandler });
|
|
6
6
|
function wrap(style, text) {
|
package/dist/index.es142.js
CHANGED
|
@@ -2,14 +2,14 @@ import { __export } from "./index.es54.js";
|
|
|
2
2
|
import { mergeUsageMetadata } from "./index.es57.js";
|
|
3
3
|
import { AIMessage } from "./index.es41.js";
|
|
4
4
|
import { BaseTracer } from "./index.es125.js";
|
|
5
|
-
import { getDefaultLangChainClientSingleton } from "./index.
|
|
5
|
+
import { getDefaultLangChainClientSingleton } from "./index.es262.js";
|
|
6
6
|
import { getCurrentRunTree } from "./index.es106.js";
|
|
7
7
|
import { RunTree } from "./index.es122.js";
|
|
8
8
|
import "uuid";
|
|
9
9
|
import "./index.es119.js";
|
|
10
10
|
import "./index.es120.js";
|
|
11
11
|
import "./index.es121.js";
|
|
12
|
-
import { getDefaultProjectName } from "./index.
|
|
12
|
+
import { getDefaultProjectName } from "./index.es263.js";
|
|
13
13
|
var tracer_langchain_exports = {};
|
|
14
14
|
__export(tracer_langchain_exports, { LangChainTracer: () => LangChainTracer });
|
|
15
15
|
function _getUsageMetadataFromGenerations(generations) {
|
package/dist/index.es143.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getDefaultLangChainClientSingleton } from "./index.
|
|
1
|
+
import { getDefaultLangChainClientSingleton } from "./index.es262.js";
|
|
2
2
|
import { getGlobalAsyncLocalStorageInstance } from "./index.es117.js";
|
|
3
3
|
import PQueueMod from "./index.es119.js";
|
|
4
4
|
let queue;
|
package/dist/index.es156.js
CHANGED
package/dist/index.es16.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsxs, jsx, Fragment } from "react/jsx-runtime";
|
|
2
2
|
import useTools from "./index.es10.js";
|
|
3
3
|
import { useThread } from "./index.es6.js";
|
|
4
|
-
import { getContentString } from "./index.
|
|
4
|
+
import { getContentString } from "./index.es22.js";
|
|
5
5
|
import { PanelLeft, MoreVertical, Pencil, Share2, Archive, Trash2 } from "lucide-react";
|
|
6
6
|
import { useState, useEffect, useRef } from "react";
|
|
7
7
|
function ThreadHistory({ header }) {
|
package/dist/index.es164.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { __module as interopRequireDefault } from "./index.
|
|
1
|
+
import { __module as interopRequireDefault } from "./index.es215.js";
|
|
2
2
|
var hasRequiredInteropRequireDefault;
|
|
3
3
|
function requireInteropRequireDefault() {
|
|
4
4
|
if (hasRequiredInteropRequireDefault) return interopRequireDefault.exports;
|
package/dist/index.es165.js
CHANGED
package/dist/index.es166.js
CHANGED
package/dist/index.es167.js
CHANGED
package/dist/index.es168.js
CHANGED
package/dist/index.es169.js
CHANGED
package/dist/index.es170.js
CHANGED
package/dist/index.es171.js
CHANGED
package/dist/index.es172.js
CHANGED
package/dist/index.es173.js
CHANGED
package/dist/index.es174.js
CHANGED
package/dist/index.es175.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { __exports as base16Ateliersulphurpool_light } from "./index.
|
|
1
|
+
import { __exports as base16Ateliersulphurpool_light } from "./index.es226.js";
|
|
2
2
|
var hasRequiredBase16Ateliersulphurpool_light;
|
|
3
3
|
function requireBase16Ateliersulphurpool_light() {
|
|
4
4
|
if (hasRequiredBase16Ateliersulphurpool_light) return base16Ateliersulphurpool_light;
|
package/dist/index.es176.js
CHANGED
package/dist/index.es177.js
CHANGED
package/dist/index.es178.js
CHANGED
package/dist/index.es179.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { __exports as coyWithoutShadows } from "./index.
|
|
1
|
+
import { __exports as coyWithoutShadows } from "./index.es230.js";
|
|
2
2
|
var hasRequiredCoyWithoutShadows;
|
|
3
3
|
function requireCoyWithoutShadows() {
|
|
4
4
|
if (hasRequiredCoyWithoutShadows) return coyWithoutShadows;
|
package/dist/index.es180.js
CHANGED
package/dist/index.es181.js
CHANGED
package/dist/index.es182.js
CHANGED
package/dist/index.es183.js
CHANGED
package/dist/index.es184.js
CHANGED
package/dist/index.es185.js
CHANGED
package/dist/index.es186.js
CHANGED
package/dist/index.es187.js
CHANGED
package/dist/index.es188.js
CHANGED
package/dist/index.es189.js
CHANGED
package/dist/index.es190.js
CHANGED
package/dist/index.es191.js
CHANGED
package/dist/index.es192.js
CHANGED
package/dist/index.es193.js
CHANGED
package/dist/index.es194.js
CHANGED
package/dist/index.es195.js
CHANGED
package/dist/index.es196.js
CHANGED
package/dist/index.es197.js
CHANGED
package/dist/index.es198.js
CHANGED
package/dist/index.es199.js
CHANGED
package/dist/index.es2.js
CHANGED
|
@@ -29,37 +29,43 @@ function Sidebar(props) {
|
|
|
29
29
|
if (preventSubmit || input.trim().length === 0 && fileInput.length === 0 || isLoading)
|
|
30
30
|
return;
|
|
31
31
|
let latestFiles = fileInput;
|
|
32
|
+
let skipSubmitMessage = false;
|
|
32
33
|
if (callThisOnSubmit) {
|
|
33
34
|
const result = await callThisOnSubmit();
|
|
34
|
-
if (result && result.length > 0)
|
|
35
|
+
if (result && result.length > 0) {
|
|
36
|
+
latestFiles = result;
|
|
37
|
+
skipSubmitMessage = true;
|
|
38
|
+
}
|
|
35
39
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
40
|
+
if (!skipSubmitMessage && (input.trim().length > 0 || latestFiles.length > 0)) {
|
|
41
|
+
let contentBlocks;
|
|
42
|
+
if (s3_upload) {
|
|
43
|
+
let messageText = input.trim();
|
|
44
|
+
if (latestFiles.length > 0) {
|
|
45
|
+
const fileNames = latestFiles.map((file) => file.fileName).join(", ");
|
|
46
|
+
const fileText = `${fileNames} uploaded`;
|
|
47
|
+
messageText = messageText ? `${fileText}
|
|
43
48
|
|
|
44
49
|
- ${messageText}` : fileText;
|
|
50
|
+
}
|
|
51
|
+
contentBlocks = [{ type: "text", text: messageText }];
|
|
52
|
+
} else {
|
|
53
|
+
contentBlocks = [
|
|
54
|
+
...input.trim().length > 0 ? [{ type: "text", text: input }] : [],
|
|
55
|
+
...latestFiles.map((file) => ({
|
|
56
|
+
type: "document",
|
|
57
|
+
...file,
|
|
58
|
+
cache_control: { type: "ephemeral" }
|
|
59
|
+
}))
|
|
60
|
+
];
|
|
45
61
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
...file,
|
|
53
|
-
cache_control: { type: "ephemeral" }
|
|
54
|
-
}))
|
|
55
|
-
];
|
|
62
|
+
const newHumanMessage = {
|
|
63
|
+
id: v4(),
|
|
64
|
+
type: "human",
|
|
65
|
+
content: contentBlocks
|
|
66
|
+
};
|
|
67
|
+
await stream.submitMessage(newHumanMessage);
|
|
56
68
|
}
|
|
57
|
-
const newHumanMessage = {
|
|
58
|
-
id: v4(),
|
|
59
|
-
type: "human",
|
|
60
|
-
content: contentBlocks
|
|
61
|
-
};
|
|
62
|
-
await stream.submitMessage(newHumanMessage);
|
|
63
69
|
setInput("");
|
|
64
70
|
setFileInput([]);
|
|
65
71
|
};
|
package/dist/index.es2.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es2.js","sources":["../src/pages/Sidebar/sidebar.tsx"],"sourcesContent":["import Suggestion from \"@/components/Suggestion\";\nimport { useFileProvider } from \"@/providers/FileProvider\";\nimport { useStreamContext } from \"@/providers/Stream\";\nimport { useThread } from \"@/providers/Thread\";\nimport type { ChatSidebarProps } from \"@/types/ChatProps\";\nimport type { FileInfo } from \"@/types/fileInput\";\nimport type { Message } from \"@langchain/langgraph-sdk\";\nimport { AnimatePresence, motion } from \"framer-motion\";\nimport { X, ChevronLeft } from \"lucide-react\";\nimport { useEffect, useState, type FormEvent } from \"react\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport ChatBody from \"../../components/ChatBody\";\nimport ChatButton from \"../../components/ChatButton\";\nimport ChatInput from \"../../components/sidebar/ChatInput\";\n\n/**\n * Main sidebar chat interface component.\n * Displays a chat button that opens a sliding sidebar with full chat functionality.\n * \n * @param header - Custom header text for the chat sidebar (default: \"AI Assistant\")\n * @param handleFileSelect - Optional custom file selection handler\n * @param callThisOnSubmit - Optional callback invoked before message submission, can return updated file list\n * @param preventSubmit - Optional boolean to prevent all submit actions when true\n * @param leftPanelContent - Optional custom content for the left panel when expanded\n * @param leftPanelOpen - Optional external control for left panel open state\n * @param setLeftPanelOpen - Optional external setter for left panel open state\n * \n * @example\n * ```tsx\n * <Sidebar \n * header=\"My Custom AI\"\n * preventSubmit={true} // Disables all submit functionality\n * callThisOnSubmit={async () => {\n * // Upload files to your backend\n * return updatedFiles;\n * }}\n * leftPanelContent={<div className=\"text-white\">Custom left panel content here!</div>}\n * leftPanelOpen={isLeftPanelOpen}\n * setLeftPanelOpen={setIsLeftPanelOpen}\n * />\n * ```\n */\nexport default function Sidebar(props: ChatSidebarProps) {\n\n const { handleFileSelect, callThisOnSubmit, enableToolCallIndicator, header, inputFileAccept, filePreview, s3_upload, preventSubmit, leftPanelContent, leftPanelOpen: externalLeftPanelOpen, setLeftPanelOpen: externalSetLeftPanelOpen } = props;\n const [open, setOpen] = useState(false);\n const [input, setInput] = useState(\"\");\n const [internalLeftPanelOpen, setInternalLeftPanelOpen] = useState(false);\n const { fileInput, setFileInput } = useFileProvider();\n\n const leftPanelOpen = externalLeftPanelOpen !== undefined ? externalLeftPanelOpen : internalLeftPanelOpen;\n const setLeftPanelOpen = externalSetLeftPanelOpen || setInternalLeftPanelOpen;\n\n const stream = useStreamContext();\n const isLoading = stream.isLoading;\n const { setMode } = useThread();\n\n // Set thread mode to single when using Sidebar\n useEffect(() => {\n setMode(\"single\");\n }, [setMode]);\n\n const defaultHandleSubmit = async (e: FormEvent) => {\n e.preventDefault();\n\n if (preventSubmit || (input.trim().length === 0 && fileInput.length === 0) || isLoading)\n return;\n\n // Call the custom upload and get the latest files\n let latestFiles: FileInfo[] = fileInput;\n if (callThisOnSubmit) {\n const result = await callThisOnSubmit();\n if (result && result.length > 0) latestFiles = result;\n }\n\n // Create content blocks based on upload type\n let contentBlocks: any;\n if (s3_upload) {\n // For S3 uploads, send text message\n let messageText = input.trim();\n if (latestFiles.length > 0) {\n const fileNames = latestFiles.map(file => file.fileName).join(\", \");\n const fileText = `${fileNames} uploaded`;\n messageText = messageText ? `${fileText}\\n\\n - ${messageText}` : fileText;\n }\n contentBlocks = [{ type: \"text\", text: messageText }];\n } else {\n contentBlocks = [\n ...(input.trim().length > 0 ? [{ type: \"text\", text: input }] : []),\n ...latestFiles.map((file) => ({\n type: \"document\" as const,\n ...file,\n cache_control: { type: \"ephemeral\" as const },\n })),\n ];\n }\n\n const newHumanMessage: Message = {\n id: uuidv4(),\n type: \"human\",\n content: contentBlocks,\n };\n\n // Use the unified submitMessage function\n await stream.submitMessage(newHumanMessage);\n\n setInput(\"\");\n setFileInput([]);\n };\n\n const defaultHandleFileSelect = async (\n event: React.ChangeEvent<HTMLInputElement>\n ) => {\n const files = event.target.files;\n if (!files) return;\n\n // Convert files to base64 for sending\n const fileDetails: FileInfo[] = await Promise.all(\n Array.from(files).map(async (file) => {\n const base64Data = await new Promise<string>((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => {\n const result = reader.result as string;\n resolve(result.split(\",\")[1]); // Remove data:...;base64, prefix\n };\n reader.onerror = reject;\n reader.readAsDataURL(file);\n });\n\n return {\n fileName: file.name,\n fileType: file.type,\n file: file,\n fileData: base64Data,\n };\n })\n );\n\n setFileInput((prevFile) => [...prevFile, ...fileDetails]);\n };\n\n const onFileSelect = handleFileSelect || defaultHandleFileSelect;\n return (\n <>\n <AnimatePresence>\n {open && (\n <>\n {/* Overlay */}\n <motion.div\n className=\"fixed inset-0 z-40 bg-black/30\"\n onClick={() => setOpen(false)}\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n />\n\n {/* Sidebar */}\n <motion.aside\n className=\"fixed right-0 top-0 z-50 h-screen w-[520px] bg-black flex flex-col text-white\"\n initial={{ x: \"100%\" }}\n animate={{ x: 0 }}\n exit={{ x: \"100%\" }}\n transition={{ type: \"spring\", stiffness: 260, damping: 30 }}\n >\n <AnimatePresence>\n {leftPanelOpen && (\n <motion.div\n className=\"fixed right-[520px] top-0 h-full w-[520px]\"\n initial={{ x: \"30%\" }}\n animate={{ x: 0 }}\n exit={{ x: \"30%\" }}\n transition={{ type: \"spring\", stiffness: 400, damping: 40 }}\n >\n {leftPanelContent || (\n <>\n <h3 className=\"text-lg font-semibold mb-4 text-white\">Left Panel</h3>\n <p className=\"text-zinc-300\">This is the left extension panel. You can add any content here.</p>\n </>\n )} \n </motion.div>\n )}\n </AnimatePresence>\n <div className=\"flex h-full flex-col\">\n <div className=\"flex border-b border-zinc-800 py-4 px-6 justify-between items-center\">\n <div className=\"flex items-center gap-3\">\n {header?.logoUrl && (\n <img\n src={header?.logoUrl}\n alt={header?.title ? `${header.title} logo` : \"AI Assistant logo\"}\n className=\"h-8 w-8 object-contain rounded-sm\"\n />\n )}\n <div className=\"text-start text-2xl font-bold\">{header?.title || \"AI Assistant\"}</div>\n \n </div>\n <X\n className=\"text-zinc-400 cursor-pointer\"\n onClick={() => setOpen(false)}\n />\n </div>\n {/* Vertically centered left panel toggle */}\n {leftPanelContent && (\n <div className=\"absolute left-0 top-1/2 transform -translate-y-1/2 z-10\">\n <ChevronLeft \n className={`cursor-pointer transition-transform ${leftPanelOpen ? 'rotate-180' : ''}`}\n onClick={() => setLeftPanelOpen(!leftPanelOpen)}\n />\n </div>\n )}\n <div className=\"flex-1 overflow-auto scrollbar-none\">\n <div className=\"p-4\">\n <ChatBody enableToolCallIndicator={enableToolCallIndicator} />\n </div>\n </div>\n <Suggestion />\n <div className=\"sticky bottom-0 border-t border-zinc-800 m-2\">\n <ChatInput\n input={input}\n inputFileAccept={inputFileAccept}\n setInput={setInput}\n handleSubmit={defaultHandleSubmit}\n isLoading={isLoading}\n fileInput={fileInput}\n handleFileSelect={onFileSelect}\n setFileInput={setFileInput}\n onCancel={() => stream.stop?.()}\n filePreview={filePreview}\n />\n </div>\n </div>\n </motion.aside>\n </>\n )}\n </AnimatePresence>\n\n <ChatButton isVisible={!open} setOpen={setOpen} />\n </>\n );\n}\n"],"names":["uuidv4"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.es2.js","sources":["../src/pages/Sidebar/sidebar.tsx"],"sourcesContent":["import Suggestion from \"@/components/Suggestion\";\nimport { useFileProvider } from \"@/providers/FileProvider\";\nimport { useStreamContext } from \"@/providers/Stream\";\nimport { useThread } from \"@/providers/Thread\";\nimport type { ChatSidebarProps } from \"@/types/ChatProps\";\nimport type { FileInfo } from \"@/types/fileInput\";\nimport type { Message } from \"@langchain/langgraph-sdk\";\nimport { AnimatePresence, motion } from \"framer-motion\";\nimport { X, ChevronLeft } from \"lucide-react\";\nimport { useEffect, useState, type FormEvent } from \"react\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport ChatBody from \"../../components/ChatBody\";\nimport ChatButton from \"../../components/ChatButton\";\nimport ChatInput from \"../../components/sidebar/ChatInput\";\n\n/**\n * Main sidebar chat interface component.\n * Displays a chat button that opens a sliding sidebar with full chat functionality.\n * \n * @param header - Custom header text for the chat sidebar (default: \"AI Assistant\")\n * @param handleFileSelect - Optional custom file selection handler\n * @param callThisOnSubmit - Optional callback invoked before message submission, can return updated file list\n * @param preventSubmit - Optional boolean to prevent all submit actions when true\n * @param leftPanelContent - Optional custom content for the left panel when expanded\n * @param leftPanelOpen - Optional external control for left panel open state\n * @param setLeftPanelOpen - Optional external setter for left panel open state\n * \n * @example\n * ```tsx\n * <Sidebar \n * header=\"My Custom AI\"\n * preventSubmit={true} // Disables all submit functionality\n * callThisOnSubmit={async () => {\n * // Upload files to your backend\n * return updatedFiles;\n * }}\n * leftPanelContent={<div className=\"text-white\">Custom left panel content here!</div>}\n * leftPanelOpen={isLeftPanelOpen}\n * setLeftPanelOpen={setIsLeftPanelOpen}\n * />\n * ```\n */\nexport default function Sidebar(props: ChatSidebarProps) {\n\n const { handleFileSelect, callThisOnSubmit, enableToolCallIndicator, header, inputFileAccept, filePreview, s3_upload, preventSubmit, leftPanelContent, leftPanelOpen: externalLeftPanelOpen, setLeftPanelOpen: externalSetLeftPanelOpen } = props;\n const [open, setOpen] = useState(false);\n const [input, setInput] = useState(\"\");\n const [internalLeftPanelOpen, setInternalLeftPanelOpen] = useState(false);\n const { fileInput, setFileInput } = useFileProvider();\n\n const leftPanelOpen = externalLeftPanelOpen !== undefined ? externalLeftPanelOpen : internalLeftPanelOpen;\n const setLeftPanelOpen = externalSetLeftPanelOpen || setInternalLeftPanelOpen;\n\n const stream = useStreamContext();\n const isLoading = stream.isLoading;\n const { setMode } = useThread();\n\n // Set thread mode to single when using Sidebar\n useEffect(() => {\n setMode(\"single\");\n }, [setMode]);\n\n const defaultHandleSubmit = async (e: FormEvent) => {\n e.preventDefault();\n\n if (preventSubmit || (input.trim().length === 0 && fileInput.length === 0) || isLoading)\n return;\n\n // Call the custom upload and get the latest files\n let latestFiles: FileInfo[] = fileInput;\n let skipSubmitMessage = false;\n\n if (callThisOnSubmit) {\n const result = await callThisOnSubmit();\n if (result && result.length > 0) {\n latestFiles = result;\n skipSubmitMessage = true;\n }\n }\n\n if (!skipSubmitMessage && (input.trim().length > 0 || latestFiles.length > 0)) {\n let contentBlocks: any;\n if (s3_upload) {\n let messageText = input.trim();\n if (latestFiles.length > 0) {\n const fileNames = latestFiles.map(file => file.fileName).join(\", \");\n const fileText = `${fileNames} uploaded`;\n messageText = messageText ? `${fileText}\\n\\n - ${messageText}` : fileText;\n }\n contentBlocks = [{ type: \"text\", text: messageText }];\n } else {\n contentBlocks = [\n ...(input.trim().length > 0 ? [{ type: \"text\", text: input }] : []),\n ...latestFiles.map((file) => ({\n type: \"document\" as const,\n ...file,\n cache_control: { type: \"ephemeral\" as const },\n })),\n ];\n }\n\n const newHumanMessage: Message = {\n id: uuidv4(),\n type: \"human\",\n content: contentBlocks,\n };\n\n await stream.submitMessage(newHumanMessage);\n }\n setInput(\"\");\n setFileInput([]);\n };\n\n const defaultHandleFileSelect = async (\n event: React.ChangeEvent<HTMLInputElement>\n ) => {\n const files = event.target.files;\n if (!files) return;\n\n // Convert files to base64 for sending\n const fileDetails: FileInfo[] = await Promise.all(\n Array.from(files).map(async (file) => {\n const base64Data = await new Promise<string>((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => {\n const result = reader.result as string;\n resolve(result.split(\",\")[1]); // Remove data:...;base64, prefix\n };\n reader.onerror = reject;\n reader.readAsDataURL(file);\n });\n\n return {\n fileName: file.name,\n fileType: file.type,\n file: file,\n fileData: base64Data,\n };\n })\n );\n\n setFileInput((prevFile) => [...prevFile, ...fileDetails]);\n };\n\n const onFileSelect = handleFileSelect || defaultHandleFileSelect;\n return (\n <>\n <AnimatePresence>\n {open && (\n <>\n {/* Overlay */}\n <motion.div\n className=\"fixed inset-0 z-40 bg-black/30\"\n onClick={() => setOpen(false)}\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n />\n\n {/* Sidebar */}\n <motion.aside\n className=\"fixed right-0 top-0 z-50 h-screen w-[520px] bg-black flex flex-col text-white\"\n initial={{ x: \"100%\" }}\n animate={{ x: 0 }}\n exit={{ x: \"100%\" }}\n transition={{ type: \"spring\", stiffness: 260, damping: 30 }}\n >\n <AnimatePresence>\n {leftPanelOpen && (\n <motion.div\n className=\"fixed right-[520px] top-0 h-full w-[520px]\"\n initial={{ x: \"30%\" }}\n animate={{ x: 0 }}\n exit={{ x: \"30%\" }}\n transition={{ type: \"spring\", stiffness: 400, damping: 40 }}\n >\n {leftPanelContent || (\n <>\n <h3 className=\"text-lg font-semibold mb-4 text-white\">Left Panel</h3>\n <p className=\"text-zinc-300\">This is the left extension panel. You can add any content here.</p>\n </>\n )}\n </motion.div>\n )}\n </AnimatePresence>\n <div className=\"flex h-full flex-col\">\n <div className=\"flex border-b border-zinc-800 py-4 px-6 justify-between items-center\">\n <div className=\"flex items-center gap-3\">\n {header?.logoUrl && (\n <img\n src={header?.logoUrl}\n alt={header?.title ? `${header.title} logo` : \"AI Assistant logo\"}\n className=\"h-8 w-8 object-contain rounded-sm\"\n />\n )}\n <div className=\"text-start text-2xl font-bold\">{header?.title || \"AI Assistant\"}</div>\n\n </div>\n <X\n className=\"text-zinc-400 cursor-pointer\"\n onClick={() => setOpen(false)}\n />\n </div>\n {/* Vertically centered left panel toggle */}\n {leftPanelContent && (\n <div className=\"absolute left-0 top-1/2 transform -translate-y-1/2 z-10\">\n <ChevronLeft\n className={`cursor-pointer transition-transform ${leftPanelOpen ? 'rotate-180' : ''}`}\n onClick={() => setLeftPanelOpen(!leftPanelOpen)}\n />\n </div>\n )}\n <div className=\"flex-1 overflow-auto scrollbar-none\">\n <div className=\"p-4\">\n <ChatBody enableToolCallIndicator={enableToolCallIndicator} />\n </div>\n </div>\n <Suggestion />\n <div className=\"sticky bottom-0 border-t border-zinc-800 m-2\">\n <ChatInput\n input={input}\n inputFileAccept={inputFileAccept}\n setInput={setInput}\n handleSubmit={defaultHandleSubmit}\n isLoading={isLoading}\n fileInput={fileInput}\n handleFileSelect={onFileSelect}\n setFileInput={setFileInput}\n onCancel={() => stream.stop?.()}\n filePreview={filePreview}\n />\n </div>\n </div>\n </motion.aside>\n </>\n )}\n </AnimatePresence>\n\n <ChatButton isVisible={!open} setOpen={setOpen} />\n </>\n );\n}\n"],"names":["uuidv4"],"mappings":"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"}
|
package/dist/index.es20.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { bootstrapUiContext } from "./index.
|
|
2
|
-
import { LoadExternalComponent, useStreamContext } from "./index.
|
|
1
|
+
import { bootstrapUiContext } from "./index.es28.js";
|
|
2
|
+
import { LoadExternalComponent, useStreamContext } from "./index.es28.js";
|
|
3
3
|
bootstrapUiContext();
|
|
4
4
|
export {
|
|
5
5
|
LoadExternalComponent,
|
package/dist/index.es200.js
CHANGED
package/dist/index.es201.js
CHANGED
package/dist/index.es202.js
CHANGED
package/dist/index.es203.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { __exports as solarizedDarkAtom } from "./index.
|
|
1
|
+
import { __exports as solarizedDarkAtom } from "./index.es254.js";
|
|
2
2
|
var hasRequiredSolarizedDarkAtom;
|
|
3
3
|
function requireSolarizedDarkAtom() {
|
|
4
4
|
if (hasRequiredSolarizedDarkAtom) return solarizedDarkAtom;
|
package/dist/index.es204.js
CHANGED