@loonylabs/llm-middleware 2.3.0 โ†’ 2.4.0

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/README.md CHANGED
@@ -44,6 +44,7 @@
44
44
  - ๐Ÿ”œ **OpenAI, Google**: Planned for future releases
45
45
  - ๐Ÿ”Œ **Pluggable**: Easy to add custom providers - see [LLM Providers Guide](docs/LLM_PROVIDERS.md)
46
46
  - ๐Ÿงน **JSON Cleaning**: Recipe-based JSON repair system with automatic strategy selection
47
+ - โœจ **v2.4.0**: Enhanced array extraction support - properly handles JSON arrays `[...]` in addition to objects `{...}`
47
48
  - ๐ŸŽจ **FlatFormatter System**: Advanced data formatting for LLM consumption
48
49
  - ๐Ÿ“Š **Comprehensive Logging**: Multi-level logging with metadata support
49
50
  - โš™๏ธ **Configuration Management**: Flexible model and application configuration
@@ -17,11 +17,13 @@ export declare class JsonExtractor implements Parser {
17
17
  thinking: string;
18
18
  };
19
19
  /**
20
- * Extract JSON block by finding balanced braces
20
+ * Extract JSON block by finding balanced braces or brackets
21
+ * Supports both objects {...} and arrays [...]
21
22
  */
22
23
  private extractJsonBlock;
23
24
  /**
24
25
  * Extract JSON using common patterns
26
+ * Supports both objects {...} and arrays [...]
25
27
  */
26
28
  private extractByPattern;
27
29
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"json-extractor.parser.d.ts","sourceRoot":"","sources":["../../../../../src/middleware/services/json-cleaner/parsers/json-extractor.parser.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C;;;GAGG;AACH,qBAAa,aAAc,YAAW,MAAM;IACnC,IAAI,SAAoB;IAE/B;;OAEG;IACI,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAKvC;;OAEG;IACI,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE;IA4B/D;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAgDxB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA8BxB;;OAEG;IACH,OAAO,CAAC,YAAY;CAuBrB"}
1
+ {"version":3,"file":"json-extractor.parser.d.ts","sourceRoot":"","sources":["../../../../../src/middleware/services/json-cleaner/parsers/json-extractor.parser.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C;;;GAGG;AACH,qBAAa,aAAc,YAAW,MAAM;IACnC,IAAI,SAAoB;IAE/B;;OAEG;IACI,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAKvC;;OAEG;IACI,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE;IA4B/D;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAoExB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAwDxB;;OAEG;IACH,OAAO,CAAC,YAAY;CAuBrB"}
@@ -44,11 +44,14 @@ class JsonExtractor {
44
44
  return { json: result, thinking: '' };
45
45
  }
46
46
  /**
47
- * Extract JSON block by finding balanced braces
47
+ * Extract JSON block by finding balanced braces or brackets
48
+ * Supports both objects {...} and arrays [...]
48
49
  */
49
50
  extractJsonBlock(text) {
50
51
  let braceCount = 0;
52
+ let bracketCount = 0;
51
53
  let startIndex = -1;
54
+ let startChar = null;
52
55
  let inString = false;
53
56
  let escapeNext = false;
54
57
  for (let i = 0; i < text.length; i++) {
@@ -67,14 +70,35 @@ class JsonExtractor {
67
70
  }
68
71
  if (!inString) {
69
72
  if (char === '{') {
70
- if (braceCount === 0) {
73
+ if (braceCount === 0 && bracketCount === 0) {
71
74
  startIndex = i;
75
+ startChar = '{';
72
76
  }
73
77
  braceCount++;
74
78
  }
75
79
  else if (char === '}') {
76
80
  braceCount--;
77
- if (braceCount === 0 && startIndex >= 0) {
81
+ if (braceCount === 0 && bracketCount === 0 && startIndex >= 0 && startChar === '{') {
82
+ const jsonCandidate = text.substring(startIndex, i + 1);
83
+ try {
84
+ JSON.parse(jsonCandidate);
85
+ return jsonCandidate;
86
+ }
87
+ catch (e) {
88
+ // Continue searching
89
+ }
90
+ }
91
+ }
92
+ else if (char === '[') {
93
+ if (braceCount === 0 && bracketCount === 0) {
94
+ startIndex = i;
95
+ startChar = '[';
96
+ }
97
+ bracketCount++;
98
+ }
99
+ else if (char === ']') {
100
+ bracketCount--;
101
+ if (bracketCount === 0 && braceCount === 0 && startIndex >= 0 && startChar === '[') {
78
102
  const jsonCandidate = text.substring(startIndex, i + 1);
79
103
  try {
80
104
  JSON.parse(jsonCandidate);
@@ -91,25 +115,52 @@ class JsonExtractor {
91
115
  }
92
116
  /**
93
117
  * Extract JSON using common patterns
118
+ * Supports both objects {...} and arrays [...]
94
119
  */
95
120
  extractByPattern(text) {
96
- // Pattern 1: JSON after "response:" or similar
97
- const responsePattern = /(?:response|result|json|output):\s*(\{.*\})/is;
98
- const responseMatch = text.match(responsePattern);
99
- if (responseMatch) {
121
+ // Pattern 1: JSON object after "response:" or similar
122
+ const responseObjectPattern = /(?:response|result|json|output):\s*(\{.*\})/is;
123
+ const responseObjectMatch = text.match(responseObjectPattern);
124
+ if (responseObjectMatch) {
125
+ try {
126
+ JSON.parse(responseObjectMatch[1]);
127
+ return responseObjectMatch[1];
128
+ }
129
+ catch (e) {
130
+ // Continue with other patterns
131
+ }
132
+ }
133
+ // Pattern 2: JSON array after "response:" or similar
134
+ const responseArrayPattern = /(?:response|result|json|output):\s*(\[.*\])/is;
135
+ const responseArrayMatch = text.match(responseArrayPattern);
136
+ if (responseArrayMatch) {
100
137
  try {
101
- JSON.parse(responseMatch[1]);
102
- return responseMatch[1];
138
+ JSON.parse(responseArrayMatch[1]);
139
+ return responseArrayMatch[1];
103
140
  }
104
141
  catch (e) {
105
142
  // Continue with other patterns
106
143
  }
107
144
  }
108
- // Pattern 2: JSON in the middle of text
109
- const jsonPattern = /\{[^{}]*(?:\{[^{}]*\}[^{}]*)*\}/g;
110
- const matches = text.match(jsonPattern);
111
- if (matches) {
112
- for (const match of matches) {
145
+ // Pattern 3: JSON object in the middle of text
146
+ const jsonObjectPattern = /\{[^{}]*(?:\{[^{}]*\}[^{}]*)*\}/g;
147
+ const objectMatches = text.match(jsonObjectPattern);
148
+ if (objectMatches) {
149
+ for (const match of objectMatches) {
150
+ try {
151
+ JSON.parse(match);
152
+ return match;
153
+ }
154
+ catch (e) {
155
+ // Continue with next match
156
+ }
157
+ }
158
+ }
159
+ // Pattern 4: JSON array in the middle of text
160
+ const jsonArrayPattern = /\[[^\[\]]*(?:\[[^\[\]]*\][^\[\]]*)*\]/g;
161
+ const arrayMatches = text.match(jsonArrayPattern);
162
+ if (arrayMatches) {
163
+ for (const match of arrayMatches) {
113
164
  try {
114
165
  JSON.parse(match);
115
166
  return match;
@@ -1 +1 @@
1
- {"version":3,"file":"json-extractor.parser.js","sourceRoot":"","sources":["../../../../../src/middleware/services/json-cleaner/parsers/json-extractor.parser.ts"],"names":[],"mappings":";;;AAAA,gEAA2D;AAG3D;;;GAGG;AACH,MAAa,aAAa;IAA1B;QACS,SAAI,GAAG,gBAAgB,CAAC;IAuJjC,CAAC;IArJC;;OAEG;IACI,QAAQ,CAAC,KAAa;QAC3B,mDAAmD;QACnD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,KAAa;QACxB,MAAM,aAAa,GAAG,KAAK,CAAC;QAC5B,IAAI,MAAM,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAE1B,2DAA2D;QAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAChD,IAAI,SAAS,EAAE,CAAC;YACd,uCAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC;YACjE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QAC3C,CAAC;QAED,2CAA2C;QAC3C,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACvD,IAAI,gBAAgB,EAAE,CAAC;YACrB,uCAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE,gBAAgB,CAAC,CAAC;YACxE,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QAClD,CAAC;QAED,mCAAmC;QACnC,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;YACvB,uCAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;YAC/D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QACzC,CAAC;QAED,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IACxC,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,IAAY;QACnC,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC;QACpB,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,UAAU,GAAG,KAAK,CAAC;QAEvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAErB,IAAI,UAAU,EAAE,CAAC;gBACf,UAAU,GAAG,KAAK,CAAC;gBACnB,SAAS;YACX,CAAC;YAED,IAAI,IAAI,KAAK,IAAI,IAAI,QAAQ,EAAE,CAAC;gBAC9B,UAAU,GAAG,IAAI,CAAC;gBAClB,SAAS;YACX,CAAC;YAED,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChC,QAAQ,GAAG,CAAC,QAAQ,CAAC;gBACrB,SAAS;YACX,CAAC;YAED,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;oBACjB,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;wBACrB,UAAU,GAAG,CAAC,CAAC;oBACjB,CAAC;oBACD,UAAU,EAAE,CAAC;gBACf,CAAC;qBAAM,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;oBACxB,UAAU,EAAE,CAAC;oBACb,IAAI,UAAU,KAAK,CAAC,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;wBACxC,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;wBACxD,IAAI,CAAC;4BACH,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;4BAC1B,OAAO,aAAa,CAAC;wBACvB,CAAC;wBAAC,OAAO,CAAC,EAAE,CAAC;4BACX,qBAAqB;wBACvB,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,IAAY;QACnC,+CAA+C;QAC/C,MAAM,eAAe,GAAG,+CAA+C,CAAC;QACxE,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QAClD,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,CAAC;gBACH,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC7B,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC;YAC1B,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,+BAA+B;YACjC,CAAC;QACH,CAAC;QAED,wCAAwC;QACxC,MAAM,WAAW,GAAG,kCAAkC,CAAC;QACvD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACxC,IAAI,OAAO,EAAE,CAAC;YACZ,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,IAAI,CAAC;oBACH,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBAClB,OAAO,KAAK,CAAC;gBACf,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,2BAA2B;gBAC7B,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,IAAY;QAC/B,IAAI,MAAM,GAAG,IAAI,CAAC;QAElB,yBAAyB;QACzB,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,2CAA2C,EAAE,EAAE,CAAC,CAAC;QAEzE,kCAAkC;QAClC,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACpD,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QACxB,CAAC;QAED,yBAAyB;QACzB,MAAM,GAAG,MAAM;YACb,yBAAyB;aACxB,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC;YAC9B,oBAAoB;aACnB,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;YACnB,4BAA4B;aAC3B,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;QAEnC,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;CACF;AAxJD,sCAwJC"}
1
+ {"version":3,"file":"json-extractor.parser.js","sourceRoot":"","sources":["../../../../../src/middleware/services/json-cleaner/parsers/json-extractor.parser.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loonylabs/llm-middleware",
3
- "version": "2.3.0",
3
+ "version": "2.4.0",
4
4
  "description": "Complete middleware infrastructure for LLM-based backends with multi-provider support (Ollama, Anthropic, OpenAI, Google)",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",