UNPKG

@assistant-ui/react

Version:

Typescript/React library for AI Chat

90 lines (89 loc) 3.66 kB
"use strict"; var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/utils/json/parse-partial-json.ts var parse_partial_json_exports = {}; __export(parse_partial_json_exports, { parsePartialJson: () => parsePartialJson, useToolArgsFieldStatus: () => useToolArgsFieldStatus }); module.exports = __toCommonJS(parse_partial_json_exports); var import_secure_json_parse = __toESM(require("secure-json-parse")); var import_fix_json = require("./fix-json.js"); var import_context = require("../../context/index.js"); var PARTIAL_JSON_COUNT_SYMBOL = Symbol("partial-json-count"); var parsePartialJson = (json) => { try { return import_secure_json_parse.default.parse(json); } catch { try { const [fixedJson, partialCount] = (0, import_fix_json.fixJson)(json); const res = import_secure_json_parse.default.parse(fixedJson); res[PARTIAL_JSON_COUNT_SYMBOL] = partialCount; return res; } catch { return void 0; } } }; var COMPLETE_STATUS = Object.freeze({ type: "complete" }); var getFieldStatus = (lastState, args, fieldPath, partialCount) => { if (fieldPath.length === 0) return lastState; if (typeof args !== "object" || args === null) return COMPLETE_STATUS; const path = fieldPath.at(-1); if (!Object.prototype.hasOwnProperty.call(args, path)) { return lastState; } const argsKeys = Object.keys(args); const isLast = argsKeys[argsKeys.length - 1] === path; if (!isLast) return COMPLETE_STATUS; return getFieldStatus( lastState, args[path], fieldPath.slice(0, -1), partialCount - 1 ); }; var getToolArgsFieldStatus = (status, args, fieldPath) => { const partialCount = args[PARTIAL_JSON_COUNT_SYMBOL] ?? 0; if (partialCount === 0) return COMPLETE_STATUS; const lastState = status.type !== "requires-action" ? status : COMPLETE_STATUS; return getFieldStatus(lastState, args, fieldPath, partialCount); }; var useToolArgsFieldStatus = (fieldPath) => { return (0, import_context.useContentPart)((p) => { if (p.type !== "tool-call") throw new Error("not a tool call"); return getToolArgsFieldStatus(p.status, p.args, fieldPath); }); }; // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { parsePartialJson, useToolArgsFieldStatus }); //# sourceMappingURL=parse-partial-json.js.map