Fix chat interface - restore continuous conversation flow

🎯 Major improvements to MissionControl component:
- Always keep input field visible and functional after AI responses
- Auto-clear input after submitting questions for better UX
- Add dynamic visual indicators (first question vs follow-up)
- Improve response layout with clear separation and hints
- Enable proper chat-like experience for continuous learning

🌟 Additional enhancements:
- Better language-specific messaging throughout interface
- Clearer visual hierarchy between input and response areas
- Intuitive flow that guides users to ask follow-up questions
- Maintains responsive design and accessibility

🔧 Technical changes:
- Enhanced MissionControl state management
- Improved component layout and styling
- Better TypeScript integration across components
- Updated tsconfig for stricter type checking
This commit is contained in:
rwiegand
2025-07-14 12:39:05 +02:00
parent b31492a354
commit f893530471
1798 changed files with 25329 additions and 92638 deletions

View File

@@ -1,9 +1,9 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.stringify = stringify;
exports.stringify = void 0;
const utils_1 = require("./utils.js");
const formats_1 = require("./formats.js");
const values_1 = require("../utils/values.js");
const has = Object.prototype.hasOwnProperty;
const array_prefix_generators = {
brackets(prefix) {
return String(prefix) + '[]';
@@ -16,10 +16,12 @@ const array_prefix_generators = {
return String(prefix);
},
};
const is_array = Array.isArray;
const push = Array.prototype.push;
const push_to_array = function (arr, value_or_array) {
Array.prototype.push.apply(arr, (0, values_1.isArray)(value_or_array) ? value_or_array : [value_or_array]);
push.apply(arr, is_array(value_or_array) ? value_or_array : [value_or_array]);
};
let toISOString;
const to_ISO = Date.prototype.toISOString;
const defaults = {
addQueryPrefix: false,
allowDots: false,
@@ -33,11 +35,11 @@ const defaults = {
encoder: utils_1.encode,
encodeValuesOnly: false,
format: formats_1.default_format,
formatter: formats_1.default_formatter,
formatter: formats_1.formatters[formats_1.default_format],
/** @deprecated */
indices: false,
serializeDate(date) {
return (toISOString ?? (toISOString = Function.prototype.call.bind(Date.prototype.toISOString)))(date);
return to_ISO.call(date);
},
skipNulls: false,
strictNullHandling: false,
@@ -77,7 +79,7 @@ function inner_stringify(object, prefix, generateArrayPrefix, commaRoundTrip, al
else if (obj instanceof Date) {
obj = serializeDate?.(obj);
}
else if (generateArrayPrefix === 'comma' && (0, values_1.isArray)(obj)) {
else if (generateArrayPrefix === 'comma' && is_array(obj)) {
obj = (0, utils_1.maybe_map)(obj, function (value) {
if (value instanceof Date) {
return serializeDate?.(value);
@@ -113,7 +115,7 @@ function inner_stringify(object, prefix, generateArrayPrefix, commaRoundTrip, al
return values;
}
let obj_keys;
if (generateArrayPrefix === 'comma' && (0, values_1.isArray)(obj)) {
if (generateArrayPrefix === 'comma' && is_array(obj)) {
// we need to join elements in
if (encodeValuesOnly && encoder) {
// @ts-expect-error values only
@@ -121,7 +123,7 @@ function inner_stringify(object, prefix, generateArrayPrefix, commaRoundTrip, al
}
obj_keys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];
}
else if ((0, values_1.isArray)(filter)) {
else if (is_array(filter)) {
obj_keys = filter;
}
else {
@@ -129,8 +131,8 @@ function inner_stringify(object, prefix, generateArrayPrefix, commaRoundTrip, al
obj_keys = sort ? keys.sort(sort) : keys;
}
const encoded_prefix = encodeDotInKeys ? String(prefix).replace(/\./g, '%2E') : String(prefix);
const adjusted_prefix = commaRoundTrip && (0, values_1.isArray)(obj) && obj.length === 1 ? encoded_prefix + '[]' : encoded_prefix;
if (allowEmptyArrays && (0, values_1.isArray)(obj) && obj.length === 0) {
const adjusted_prefix = commaRoundTrip && is_array(obj) && obj.length === 1 ? encoded_prefix + '[]' : encoded_prefix;
if (allowEmptyArrays && is_array(obj) && obj.length === 0) {
return adjusted_prefix + '[]';
}
for (let j = 0; j < obj_keys.length; ++j) {
@@ -143,7 +145,7 @@ function inner_stringify(object, prefix, generateArrayPrefix, commaRoundTrip, al
}
// @ts-ignore
const encoded_key = allowDots && encodeDotInKeys ? key.replace(/\./g, '%2E') : key;
const key_prefix = (0, values_1.isArray)(obj) ?
const key_prefix = is_array(obj) ?
typeof generateArrayPrefix === 'function' ?
generateArrayPrefix(adjusted_prefix, encoded_key)
: adjusted_prefix
@@ -153,7 +155,7 @@ function inner_stringify(object, prefix, generateArrayPrefix, commaRoundTrip, al
valueSideChannel.set(sentinel, sideChannel);
push_to_array(values, inner_stringify(value, key_prefix, generateArrayPrefix, commaRoundTrip, allowEmptyArrays, strictNullHandling, skipNulls, encodeDotInKeys,
// @ts-ignore
generateArrayPrefix === 'comma' && encodeValuesOnly && (0, values_1.isArray)(obj) ? null : encoder, filter, sort, allowDots, serializeDate, format, formatter, encodeValuesOnly, charset, valueSideChannel));
generateArrayPrefix === 'comma' && encodeValuesOnly && is_array(obj) ? null : encoder, filter, sort, allowDots, serializeDate, format, formatter, encodeValuesOnly, charset, valueSideChannel));
}
return values;
}
@@ -173,14 +175,14 @@ function normalize_stringify_options(opts = defaults) {
}
let format = formats_1.default_format;
if (typeof opts.format !== 'undefined') {
if (!(0, utils_1.has)(formats_1.formatters, opts.format)) {
if (!has.call(formats_1.formatters, opts.format)) {
throw new TypeError('Unknown format option provided.');
}
format = opts.format;
}
const formatter = formats_1.formatters[format];
let filter = defaults.filter;
if (typeof opts.filter === 'function' || (0, values_1.isArray)(opts.filter)) {
if (typeof opts.filter === 'function' || is_array(opts.filter)) {
filter = opts.filter;
}
let arrayFormat;
@@ -234,7 +236,7 @@ function stringify(object, opts = {}) {
filter = options.filter;
obj = filter('', obj);
}
else if ((0, values_1.isArray)(options.filter)) {
else if (is_array(options.filter)) {
filter = options.filter;
obj_keys = filter;
}
@@ -274,4 +276,5 @@ function stringify(object, opts = {}) {
}
return joined.length > 0 ? prefix + joined : '';
}
exports.stringify = stringify;
//# sourceMappingURL=stringify.js.map