@umituz/web-ai 1.0.8 → 1.0.9

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.
@@ -1134,6 +1134,83 @@ ${paragraph}`;
1134
1134
  return chunks.map((chunk) => chunk.length > maxChars ? chunk.slice(0, maxChars) : chunk).filter((chunk) => chunk.length > 0);
1135
1135
  }
1136
1136
 
1137
+ // src/core/parsers/text-extract.ts
1138
+ var TEXT_MIME_PREFIX = "text/";
1139
+ var TEXT_MIME_TYPES = /* @__PURE__ */ new Set([
1140
+ "application/json",
1141
+ "application/xml",
1142
+ "application/yaml",
1143
+ "application/x-yaml",
1144
+ "application/javascript",
1145
+ "application/typescript",
1146
+ "application/x-sh",
1147
+ "application/sql",
1148
+ "text/csv"
1149
+ ]);
1150
+ var TEXT_EXTENSIONS = /* @__PURE__ */ new Set([
1151
+ "txt",
1152
+ "md",
1153
+ "markdown",
1154
+ "csv",
1155
+ "tsv",
1156
+ "json",
1157
+ "xml",
1158
+ "yaml",
1159
+ "yml",
1160
+ "toml",
1161
+ "ini",
1162
+ "js",
1163
+ "mjs",
1164
+ "cjs",
1165
+ "ts",
1166
+ "tsx",
1167
+ "jsx",
1168
+ "py",
1169
+ "rb",
1170
+ "go",
1171
+ "rs",
1172
+ "java",
1173
+ "kt",
1174
+ "swift",
1175
+ "c",
1176
+ "h",
1177
+ "cpp",
1178
+ "hpp",
1179
+ "cs",
1180
+ "php",
1181
+ "sh",
1182
+ "bash",
1183
+ "zsh",
1184
+ "sql",
1185
+ "html",
1186
+ "css",
1187
+ "scss",
1188
+ "env"
1189
+ ]);
1190
+ var TEXT_EXTRACT_PER_FILE_LIMIT = 24e3;
1191
+ var TEXT_EXTRACT_TOTAL_LIMIT = 48e3;
1192
+ function isTextLike(mimeType, name) {
1193
+ if (mimeType.startsWith(TEXT_MIME_PREFIX) || TEXT_MIME_TYPES.has(mimeType)) return true;
1194
+ const extension = name.split(".").pop()?.toLowerCase() ?? "";
1195
+ return TEXT_EXTENSIONS.has(extension);
1196
+ }
1197
+ function extractText(bytes) {
1198
+ let out = "";
1199
+ const decoder = new TextDecoder("utf-8", { fatal: false });
1200
+ const chunkSize = 65536;
1201
+ for (let offset = 0; offset < bytes.length; offset += chunkSize) {
1202
+ out += decoder.decode(bytes.subarray(offset, Math.min(offset + chunkSize, bytes.length)), {
1203
+ stream: offset + chunkSize < bytes.length
1204
+ });
1205
+ }
1206
+ return out.split("\0").join("");
1207
+ }
1208
+ function capText(text, limit) {
1209
+ if (text.length <= limit) return text;
1210
+ return `${text.slice(0, limit)}
1211
+ [truncated]`;
1212
+ }
1213
+
1137
1214
  // src/core/calculations/random-base36-suffix.ts
1138
1215
  var BASE_36_RADIX = 36;
1139
1216
  var DECIMAL_OFFSET = 2;
@@ -1581,11 +1658,7 @@ function resolveTimestamp(value) {
1581
1658
  const parsed = Date.parse(value);
1582
1659
  return Number.isNaN(parsed) ? 0 : parsed;
1583
1660
  }
1584
- function truncateString(str, maxLength) {
1585
- if (str.length <= maxLength) return str;
1586
- return str.slice(0, Math.max(maxLength, 0));
1587
- }
1588
- function selectMemories(rows, maxItems = MEMORY_MAX_ITEMS, totalLimit = MEMORY_TOTAL_LIMIT) {
1661
+ function selectMemories(rows, maxItems = MEMORY_MAX_ITEMS, totalLimit = MEMORY_TOTAL_LIMIT, capper = capText) {
1589
1662
  const ordered = [...rows].sort((a, b) => {
1590
1663
  if (a.pinned !== b.pinned) return a.pinned ? -1 : 1;
1591
1664
  return resolveTimestamp(b.updatedAt) - resolveTimestamp(a.updatedAt);
@@ -1596,7 +1669,7 @@ function selectMemories(rows, maxItems = MEMORY_MAX_ITEMS, totalLimit = MEMORY_T
1596
1669
  if (out.length >= maxItems || used >= totalLimit) break;
1597
1670
  const content = row.content.trim();
1598
1671
  if (content.length === 0) continue;
1599
- const capped = truncateString(content, totalLimit - used);
1672
+ const capped = capper(content, totalLimit - used);
1600
1673
  out.push(capped);
1601
1674
  used += capped.length;
1602
1675
  }
@@ -1879,6 +1952,8 @@ exports.STATUS_TO_CODE = STATUS_TO_CODE;
1879
1952
  exports.SYSTEM_PROMPT_VERSION = SYSTEM_PROMPT_VERSION;
1880
1953
  exports.StreamingResponseParser = StreamingResponseParser;
1881
1954
  exports.StructuredPromptBuilder = StructuredPromptBuilder;
1955
+ exports.TEXT_EXTRACT_PER_FILE_LIMIT = TEXT_EXTRACT_PER_FILE_LIMIT;
1956
+ exports.TEXT_EXTRACT_TOTAL_LIMIT = TEXT_EXTRACT_TOTAL_LIMIT;
1882
1957
  exports.TEXT_TIERS = TEXT_TIERS;
1883
1958
  exports.TRANSIENT_ERROR_CODES = TRANSIENT_ERROR_CODES;
1884
1959
  exports.ThrottleManager = ThrottleManager;
@@ -1903,6 +1978,7 @@ exports.calculateExponentialBackoff = calculateExponentialBackoff;
1903
1978
  exports.calculateTrailingDelay = calculateTrailingDelay;
1904
1979
  exports.canFailover = canFailover;
1905
1980
  exports.canStartTask = canStartTask;
1981
+ exports.capText = capText;
1906
1982
  exports.chunkText = chunkText;
1907
1983
  exports.clampScore = clampScore;
1908
1984
  exports.classifyHttpStatus = classifyHttpStatus;
@@ -1928,6 +2004,7 @@ exports.extractJsonCandidate = extractJsonCandidate;
1928
2004
  exports.extractJsonFromCodeFence = extractJsonFromCodeFence;
1929
2005
  exports.extractJsonObject = extractJsonObject;
1930
2006
  exports.extractSseDataPayload = extractSseDataPayload;
2007
+ exports.extractText = extractText;
1931
2008
  exports.failoverCandidate = failoverCandidate;
1932
2009
  exports.findTopKSimilar = findTopKSimilar;
1933
2010
  exports.formatCost = formatCost;
@@ -1938,6 +2015,7 @@ exports.isAuthErrorType = isAuthErrorType;
1938
2015
  exports.isRetryableErrorType = isRetryableErrorType;
1939
2016
  exports.isSseDataLine = isSseDataLine;
1940
2017
  exports.isSseDoneMarker = isSseDoneMarker;
2018
+ exports.isTextLike = isTextLike;
1941
2019
  exports.isTextTier = isTextTier;
1942
2020
  exports.isTransientError = isTransientError;
1943
2021
  exports.isValidApiKey = isValidApiKey;