@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.
package/dist/index.cjs CHANGED
@@ -1141,6 +1141,83 @@ ${paragraph}`;
1141
1141
  return chunks.map((chunk) => chunk.length > maxChars ? chunk.slice(0, maxChars) : chunk).filter((chunk) => chunk.length > 0);
1142
1142
  }
1143
1143
 
1144
+ // src/core/parsers/text-extract.ts
1145
+ var TEXT_MIME_PREFIX = "text/";
1146
+ var TEXT_MIME_TYPES = /* @__PURE__ */ new Set([
1147
+ "application/json",
1148
+ "application/xml",
1149
+ "application/yaml",
1150
+ "application/x-yaml",
1151
+ "application/javascript",
1152
+ "application/typescript",
1153
+ "application/x-sh",
1154
+ "application/sql",
1155
+ "text/csv"
1156
+ ]);
1157
+ var TEXT_EXTENSIONS = /* @__PURE__ */ new Set([
1158
+ "txt",
1159
+ "md",
1160
+ "markdown",
1161
+ "csv",
1162
+ "tsv",
1163
+ "json",
1164
+ "xml",
1165
+ "yaml",
1166
+ "yml",
1167
+ "toml",
1168
+ "ini",
1169
+ "js",
1170
+ "mjs",
1171
+ "cjs",
1172
+ "ts",
1173
+ "tsx",
1174
+ "jsx",
1175
+ "py",
1176
+ "rb",
1177
+ "go",
1178
+ "rs",
1179
+ "java",
1180
+ "kt",
1181
+ "swift",
1182
+ "c",
1183
+ "h",
1184
+ "cpp",
1185
+ "hpp",
1186
+ "cs",
1187
+ "php",
1188
+ "sh",
1189
+ "bash",
1190
+ "zsh",
1191
+ "sql",
1192
+ "html",
1193
+ "css",
1194
+ "scss",
1195
+ "env"
1196
+ ]);
1197
+ var TEXT_EXTRACT_PER_FILE_LIMIT = 24e3;
1198
+ var TEXT_EXTRACT_TOTAL_LIMIT = 48e3;
1199
+ function isTextLike(mimeType, name) {
1200
+ if (mimeType.startsWith(TEXT_MIME_PREFIX) || TEXT_MIME_TYPES.has(mimeType)) return true;
1201
+ const extension = name.split(".").pop()?.toLowerCase() ?? "";
1202
+ return TEXT_EXTENSIONS.has(extension);
1203
+ }
1204
+ function extractText(bytes) {
1205
+ let out = "";
1206
+ const decoder = new TextDecoder("utf-8", { fatal: false });
1207
+ const chunkSize = 65536;
1208
+ for (let offset = 0; offset < bytes.length; offset += chunkSize) {
1209
+ out += decoder.decode(bytes.subarray(offset, Math.min(offset + chunkSize, bytes.length)), {
1210
+ stream: offset + chunkSize < bytes.length
1211
+ });
1212
+ }
1213
+ return out.split("\0").join("");
1214
+ }
1215
+ function capText(text, limit) {
1216
+ if (text.length <= limit) return text;
1217
+ return `${text.slice(0, limit)}
1218
+ [truncated]`;
1219
+ }
1220
+
1144
1221
  // src/core/calculations/random-base36-suffix.ts
1145
1222
  var BASE_36_RADIX = 36;
1146
1223
  var DECIMAL_OFFSET = 2;
@@ -1588,11 +1665,7 @@ function resolveTimestamp(value) {
1588
1665
  const parsed = Date.parse(value);
1589
1666
  return Number.isNaN(parsed) ? 0 : parsed;
1590
1667
  }
1591
- function truncateString(str, maxLength) {
1592
- if (str.length <= maxLength) return str;
1593
- return str.slice(0, Math.max(maxLength, 0));
1594
- }
1595
- function selectMemories(rows, maxItems = MEMORY_MAX_ITEMS, totalLimit = MEMORY_TOTAL_LIMIT) {
1668
+ function selectMemories(rows, maxItems = MEMORY_MAX_ITEMS, totalLimit = MEMORY_TOTAL_LIMIT, capper = capText) {
1596
1669
  const ordered = [...rows].sort((a, b) => {
1597
1670
  if (a.pinned !== b.pinned) return a.pinned ? -1 : 1;
1598
1671
  return resolveTimestamp(b.updatedAt) - resolveTimestamp(a.updatedAt);
@@ -1603,7 +1676,7 @@ function selectMemories(rows, maxItems = MEMORY_MAX_ITEMS, totalLimit = MEMORY_T
1603
1676
  if (out.length >= maxItems || used >= totalLimit) break;
1604
1677
  const content = row.content.trim();
1605
1678
  if (content.length === 0) continue;
1606
- const capped = truncateString(content, totalLimit - used);
1679
+ const capped = capper(content, totalLimit - used);
1607
1680
  out.push(capped);
1608
1681
  used += capped.length;
1609
1682
  }
@@ -2602,7 +2675,7 @@ var AnthropicProvider = class {
2602
2675
  }
2603
2676
  }
2604
2677
  toGenerationResult(response, fallbackModel) {
2605
- const text = extractText(response.content);
2678
+ const text = extractText2(response.content);
2606
2679
  const finishReason = mapAnthropicStopReason(response.stop_reason);
2607
2680
  if (text.length === 0) {
2608
2681
  if (finishReason === "refusal") {
@@ -2630,7 +2703,7 @@ var AnthropicProvider = class {
2630
2703
  };
2631
2704
  }
2632
2705
  };
2633
- function extractText(blocks) {
2706
+ function extractText2(blocks) {
2634
2707
  return blocks.filter((block) => block.type === "text").map((block) => block.text).join("");
2635
2708
  }
2636
2709
  function refusalTextFor(finishReason) {
@@ -7142,6 +7215,8 @@ exports.SeoService = SeoService;
7142
7215
  exports.SocialService = SocialService;
7143
7216
  exports.StreamingResponseParser = StreamingResponseParser;
7144
7217
  exports.StructuredPromptBuilder = StructuredPromptBuilder;
7218
+ exports.TEXT_EXTRACT_PER_FILE_LIMIT = TEXT_EXTRACT_PER_FILE_LIMIT;
7219
+ exports.TEXT_EXTRACT_TOTAL_LIMIT = TEXT_EXTRACT_TOTAL_LIMIT;
7145
7220
  exports.TEXT_TIERS = TEXT_TIERS;
7146
7221
  exports.TIMEOUTS = TIMEOUTS;
7147
7222
  exports.TRANSIENT_ERROR_CODES = TRANSIENT_ERROR_CODES;
@@ -7181,6 +7256,7 @@ exports.calculateExponentialBackoff = calculateExponentialBackoff;
7181
7256
  exports.calculateTrailingDelay = calculateTrailingDelay;
7182
7257
  exports.canFailover = canFailover;
7183
7258
  exports.canStartTask = canStartTask;
7259
+ exports.capText = capText;
7184
7260
  exports.chatIdGenerator = chatIdGenerator;
7185
7261
  exports.chunkText = chunkText;
7186
7262
  exports.clampScore = clampScore;
@@ -7227,6 +7303,7 @@ exports.extractJsonCandidate = extractJsonCandidate;
7227
7303
  exports.extractJsonFromCodeFence = extractJsonFromCodeFence;
7228
7304
  exports.extractJsonObject = extractJsonObject;
7229
7305
  exports.extractSseDataPayload = extractSseDataPayload;
7306
+ exports.extractText = extractText;
7230
7307
  exports.extractTextFromMessages = extractTextFromMessages;
7231
7308
  exports.extractTokenUsage = extractTokenUsage;
7232
7309
  exports.failoverCandidate = failoverCandidate;
@@ -7247,6 +7324,7 @@ exports.isMediaProvider = isMediaProvider;
7247
7324
  exports.isRetryableErrorType = isRetryableErrorType;
7248
7325
  exports.isSseDataLine = isSseDataLine;
7249
7326
  exports.isSseDoneMarker = isSseDoneMarker;
7327
+ exports.isTextLike = isTextLike;
7250
7328
  exports.isTextProvider = isTextProvider;
7251
7329
  exports.isTextTier = isTextTier;
7252
7330
  exports.isTransientError = isTransientError;