semantic-primitives 0.1.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.
Files changed (238) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +449 -0
  3. package/dist/index.d.ts +8 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +25016 -0
  6. package/dist/llm/client.d.ts +82 -0
  7. package/dist/llm/client.d.ts.map +1 -0
  8. package/dist/llm/index.d.ts +11 -0
  9. package/dist/llm/index.d.ts.map +1 -0
  10. package/dist/llm/providers/anthropic.d.ts +13 -0
  11. package/dist/llm/providers/anthropic.d.ts.map +1 -0
  12. package/dist/llm/providers/google.d.ts +13 -0
  13. package/dist/llm/providers/google.d.ts.map +1 -0
  14. package/dist/llm/providers/index.d.ts +7 -0
  15. package/dist/llm/providers/index.d.ts.map +1 -0
  16. package/dist/llm/providers/openai.d.ts +13 -0
  17. package/dist/llm/providers/openai.d.ts.map +1 -0
  18. package/dist/llm/types.d.ts +91 -0
  19. package/dist/llm/types.d.ts.map +1 -0
  20. package/dist/primitives/bigint/bigint.d.ts +197 -0
  21. package/dist/primitives/bigint/bigint.d.ts.map +1 -0
  22. package/dist/primitives/bigint/index.d.ts +7 -0
  23. package/dist/primitives/bigint/index.d.ts.map +1 -0
  24. package/dist/primitives/bigint/prompts.d.ts +37 -0
  25. package/dist/primitives/bigint/prompts.d.ts.map +1 -0
  26. package/dist/primitives/boolean/boolean.d.ts +194 -0
  27. package/dist/primitives/boolean/boolean.d.ts.map +1 -0
  28. package/dist/primitives/boolean/evals/from.evals.d.ts +7 -0
  29. package/dist/primitives/boolean/evals/from.evals.d.ts.map +1 -0
  30. package/dist/primitives/boolean/evals/index.d.ts +5 -0
  31. package/dist/primitives/boolean/evals/index.d.ts.map +1 -0
  32. package/dist/primitives/boolean/index.d.ts +6 -0
  33. package/dist/primitives/boolean/index.d.ts.map +1 -0
  34. package/dist/primitives/boolean/prompts.d.ts +29 -0
  35. package/dist/primitives/boolean/prompts.d.ts.map +1 -0
  36. package/dist/primitives/index.d.ts +14 -0
  37. package/dist/primitives/index.d.ts.map +1 -0
  38. package/dist/primitives/null/index.d.ts +6 -0
  39. package/dist/primitives/null/index.d.ts.map +1 -0
  40. package/dist/primitives/null/null.d.ts +181 -0
  41. package/dist/primitives/null/null.d.ts.map +1 -0
  42. package/dist/primitives/null/prompts.d.ts +39 -0
  43. package/dist/primitives/null/prompts.d.ts.map +1 -0
  44. package/dist/primitives/number/index.d.ts +6 -0
  45. package/dist/primitives/number/index.d.ts.map +1 -0
  46. package/dist/primitives/number/number.d.ts +154 -0
  47. package/dist/primitives/number/number.d.ts.map +1 -0
  48. package/dist/primitives/number/number.prompts.d.ts +53 -0
  49. package/dist/primitives/number/number.prompts.d.ts.map +1 -0
  50. package/dist/primitives/string/evals/classify.evals.d.ts +7 -0
  51. package/dist/primitives/string/evals/classify.evals.d.ts.map +1 -0
  52. package/dist/primitives/string/evals/index.d.ts +6 -0
  53. package/dist/primitives/string/evals/index.d.ts.map +1 -0
  54. package/dist/primitives/string/evals/semanticallyEquals.evals.d.ts +7 -0
  55. package/dist/primitives/string/evals/semanticallyEquals.evals.d.ts.map +1 -0
  56. package/dist/primitives/string/index.d.ts +206 -0
  57. package/dist/primitives/string/index.d.ts.map +1 -0
  58. package/dist/primitives/string/string.prompts.d.ts +45 -0
  59. package/dist/primitives/string/string.prompts.d.ts.map +1 -0
  60. package/dist/primitives/symbol/index.d.ts +6 -0
  61. package/dist/primitives/symbol/index.d.ts.map +1 -0
  62. package/dist/primitives/symbol/symbol.d.ts +176 -0
  63. package/dist/primitives/symbol/symbol.d.ts.map +1 -0
  64. package/dist/primitives/symbol/symbol.prompts.d.ts +53 -0
  65. package/dist/primitives/symbol/symbol.prompts.d.ts.map +1 -0
  66. package/dist/primitives/undefined/index.d.ts +5 -0
  67. package/dist/primitives/undefined/index.d.ts.map +1 -0
  68. package/dist/primitives/undefined/prompts.d.ts +40 -0
  69. package/dist/primitives/undefined/prompts.d.ts.map +1 -0
  70. package/dist/primitives/undefined/undefined.d.ts +216 -0
  71. package/dist/primitives/undefined/undefined.d.ts.map +1 -0
  72. package/dist/primitives/void/index.d.ts +5 -0
  73. package/dist/primitives/void/index.d.ts.map +1 -0
  74. package/dist/primitives/void/prompts.d.ts +37 -0
  75. package/dist/primitives/void/prompts.d.ts.map +1 -0
  76. package/dist/primitives/void/void.d.ts +172 -0
  77. package/dist/primitives/void/void.d.ts.map +1 -0
  78. package/dist/shared/base-classes.d.ts +331 -0
  79. package/dist/shared/base-classes.d.ts.map +1 -0
  80. package/dist/shared/eval-types.d.ts +82 -0
  81. package/dist/shared/eval-types.d.ts.map +1 -0
  82. package/dist/shared/index.d.ts +25 -0
  83. package/dist/shared/index.d.ts.map +1 -0
  84. package/dist/shared/interfaces.d.ts +799 -0
  85. package/dist/shared/interfaces.d.ts.map +1 -0
  86. package/dist/shared/types.d.ts +335 -0
  87. package/dist/shared/types.d.ts.map +1 -0
  88. package/dist/types/array/array.d.ts +250 -0
  89. package/dist/types/array/array.d.ts.map +1 -0
  90. package/dist/types/array/index.d.ts +6 -0
  91. package/dist/types/array/index.d.ts.map +1 -0
  92. package/dist/types/array/prompts.d.ts +63 -0
  93. package/dist/types/array/prompts.d.ts.map +1 -0
  94. package/dist/types/blob-file/blob.d.ts +188 -0
  95. package/dist/types/blob-file/blob.d.ts.map +1 -0
  96. package/dist/types/blob-file/file.d.ts +144 -0
  97. package/dist/types/blob-file/file.d.ts.map +1 -0
  98. package/dist/types/blob-file/index.d.ts +8 -0
  99. package/dist/types/blob-file/index.d.ts.map +1 -0
  100. package/dist/types/blob-file/prompts.d.ts +101 -0
  101. package/dist/types/blob-file/prompts.d.ts.map +1 -0
  102. package/dist/types/bun/bun.d.ts +266 -0
  103. package/dist/types/bun/bun.d.ts.map +1 -0
  104. package/dist/types/bun/index.d.ts +7 -0
  105. package/dist/types/bun/index.d.ts.map +1 -0
  106. package/dist/types/bun/prompts.d.ts +93 -0
  107. package/dist/types/bun/prompts.d.ts.map +1 -0
  108. package/dist/types/callable/callable.d.ts +200 -0
  109. package/dist/types/callable/callable.d.ts.map +1 -0
  110. package/dist/types/callable/index.d.ts +6 -0
  111. package/dist/types/callable/index.d.ts.map +1 -0
  112. package/dist/types/callable/prompts.d.ts +45 -0
  113. package/dist/types/callable/prompts.d.ts.map +1 -0
  114. package/dist/types/constructable/constructable.d.ts +150 -0
  115. package/dist/types/constructable/constructable.d.ts.map +1 -0
  116. package/dist/types/constructable/index.d.ts +5 -0
  117. package/dist/types/constructable/index.d.ts.map +1 -0
  118. package/dist/types/constructable/prompts.d.ts +41 -0
  119. package/dist/types/constructable/prompts.d.ts.map +1 -0
  120. package/dist/types/date/date.d.ts +258 -0
  121. package/dist/types/date/date.d.ts.map +1 -0
  122. package/dist/types/date/index.d.ts +6 -0
  123. package/dist/types/date/index.d.ts.map +1 -0
  124. package/dist/types/date/prompts.d.ts +93 -0
  125. package/dist/types/date/prompts.d.ts.map +1 -0
  126. package/dist/types/error/error.d.ts +191 -0
  127. package/dist/types/error/error.d.ts.map +1 -0
  128. package/dist/types/error/index.d.ts +6 -0
  129. package/dist/types/error/index.d.ts.map +1 -0
  130. package/dist/types/error/prompts.d.ts +49 -0
  131. package/dist/types/error/prompts.d.ts.map +1 -0
  132. package/dist/types/event-emitter/event-emitter.d.ts +230 -0
  133. package/dist/types/event-emitter/event-emitter.d.ts.map +1 -0
  134. package/dist/types/event-emitter/index.d.ts +6 -0
  135. package/dist/types/event-emitter/index.d.ts.map +1 -0
  136. package/dist/types/event-emitter/prompts.d.ts +51 -0
  137. package/dist/types/event-emitter/prompts.d.ts.map +1 -0
  138. package/dist/types/fetch/headers.d.ts +126 -0
  139. package/dist/types/fetch/headers.d.ts.map +1 -0
  140. package/dist/types/fetch/index.d.ts +9 -0
  141. package/dist/types/fetch/index.d.ts.map +1 -0
  142. package/dist/types/fetch/prompts.d.ts +139 -0
  143. package/dist/types/fetch/prompts.d.ts.map +1 -0
  144. package/dist/types/fetch/request.d.ts +188 -0
  145. package/dist/types/fetch/request.d.ts.map +1 -0
  146. package/dist/types/fetch/response.d.ts +155 -0
  147. package/dist/types/fetch/response.d.ts.map +1 -0
  148. package/dist/types/form-data/form-data.d.ts +277 -0
  149. package/dist/types/form-data/form-data.d.ts.map +1 -0
  150. package/dist/types/form-data/index.d.ts +7 -0
  151. package/dist/types/form-data/index.d.ts.map +1 -0
  152. package/dist/types/form-data/prompts.d.ts +80 -0
  153. package/dist/types/form-data/prompts.d.ts.map +1 -0
  154. package/dist/types/index.d.ts +29 -0
  155. package/dist/types/index.d.ts.map +1 -0
  156. package/dist/types/map/index.d.ts +6 -0
  157. package/dist/types/map/index.d.ts.map +1 -0
  158. package/dist/types/map/map.d.ts +204 -0
  159. package/dist/types/map/map.d.ts.map +1 -0
  160. package/dist/types/map/prompts.d.ts +56 -0
  161. package/dist/types/map/prompts.d.ts.map +1 -0
  162. package/dist/types/never/index.d.ts +5 -0
  163. package/dist/types/never/index.d.ts.map +1 -0
  164. package/dist/types/never/never.d.ts +220 -0
  165. package/dist/types/never/never.d.ts.map +1 -0
  166. package/dist/types/never/prompts.d.ts +50 -0
  167. package/dist/types/never/prompts.d.ts.map +1 -0
  168. package/dist/types/object/index.d.ts +6 -0
  169. package/dist/types/object/index.d.ts.map +1 -0
  170. package/dist/types/object/object.d.ts +162 -0
  171. package/dist/types/object/object.d.ts.map +1 -0
  172. package/dist/types/object/prompts.d.ts +55 -0
  173. package/dist/types/object/prompts.d.ts.map +1 -0
  174. package/dist/types/object-literal/index.d.ts +6 -0
  175. package/dist/types/object-literal/index.d.ts.map +1 -0
  176. package/dist/types/object-literal/object-literal.d.ts +223 -0
  177. package/dist/types/object-literal/object-literal.d.ts.map +1 -0
  178. package/dist/types/object-literal/prompts.d.ts +49 -0
  179. package/dist/types/object-literal/prompts.d.ts.map +1 -0
  180. package/dist/types/promise/index.d.ts +6 -0
  181. package/dist/types/promise/index.d.ts.map +1 -0
  182. package/dist/types/promise/promise.d.ts +240 -0
  183. package/dist/types/promise/promise.d.ts.map +1 -0
  184. package/dist/types/promise/prompts.d.ts +45 -0
  185. package/dist/types/promise/prompts.d.ts.map +1 -0
  186. package/dist/types/record/index.d.ts +5 -0
  187. package/dist/types/record/index.d.ts.map +1 -0
  188. package/dist/types/record/prompts.d.ts +45 -0
  189. package/dist/types/record/prompts.d.ts.map +1 -0
  190. package/dist/types/record/record.d.ts +179 -0
  191. package/dist/types/record/record.d.ts.map +1 -0
  192. package/dist/types/regexp/index.d.ts +7 -0
  193. package/dist/types/regexp/index.d.ts.map +1 -0
  194. package/dist/types/regexp/prompts.d.ts +56 -0
  195. package/dist/types/regexp/prompts.d.ts.map +1 -0
  196. package/dist/types/regexp/regexp.d.ts +160 -0
  197. package/dist/types/regexp/regexp.d.ts.map +1 -0
  198. package/dist/types/set/index.d.ts +6 -0
  199. package/dist/types/set/index.d.ts.map +1 -0
  200. package/dist/types/set/prompts.d.ts +60 -0
  201. package/dist/types/set/prompts.d.ts.map +1 -0
  202. package/dist/types/set/set.d.ts +261 -0
  203. package/dist/types/set/set.d.ts.map +1 -0
  204. package/dist/types/streams/index.d.ts +8 -0
  205. package/dist/types/streams/index.d.ts.map +1 -0
  206. package/dist/types/streams/prompts.d.ts +53 -0
  207. package/dist/types/streams/prompts.d.ts.map +1 -0
  208. package/dist/types/streams/readable-stream.d.ts +148 -0
  209. package/dist/types/streams/readable-stream.d.ts.map +1 -0
  210. package/dist/types/streams/transform-stream.d.ts +67 -0
  211. package/dist/types/streams/transform-stream.d.ts.map +1 -0
  212. package/dist/types/streams/writable-stream.d.ts +111 -0
  213. package/dist/types/streams/writable-stream.d.ts.map +1 -0
  214. package/dist/types/text-codec/index.d.ts +12 -0
  215. package/dist/types/text-codec/index.d.ts.map +1 -0
  216. package/dist/types/text-codec/prompts.d.ts +79 -0
  217. package/dist/types/text-codec/prompts.d.ts.map +1 -0
  218. package/dist/types/text-codec/text-codec.d.ts +305 -0
  219. package/dist/types/text-codec/text-codec.d.ts.map +1 -0
  220. package/dist/types/tuple/index.d.ts +6 -0
  221. package/dist/types/tuple/index.d.ts.map +1 -0
  222. package/dist/types/tuple/prompts.d.ts +41 -0
  223. package/dist/types/tuple/prompts.d.ts.map +1 -0
  224. package/dist/types/tuple/tuple.d.ts +221 -0
  225. package/dist/types/tuple/tuple.d.ts.map +1 -0
  226. package/dist/types/unknown/index.d.ts +5 -0
  227. package/dist/types/unknown/index.d.ts.map +1 -0
  228. package/dist/types/unknown/prompts.d.ts +45 -0
  229. package/dist/types/unknown/prompts.d.ts.map +1 -0
  230. package/dist/types/unknown/unknown.d.ts +220 -0
  231. package/dist/types/unknown/unknown.d.ts.map +1 -0
  232. package/dist/types/url/index.d.ts +7 -0
  233. package/dist/types/url/index.d.ts.map +1 -0
  234. package/dist/types/url/prompts.d.ts +93 -0
  235. package/dist/types/url/prompts.d.ts.map +1 -0
  236. package/dist/types/url/url.d.ts +270 -0
  237. package/dist/types/url/url.d.ts.map +1 -0
  238. package/package.json +73 -0
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Prompts for SemanticArray LLM operations
3
+ * These prompts enable semantic operations on array collections
4
+ */
5
+ /**
6
+ * System prompt for array semantic operations
7
+ */
8
+ export declare const ARRAY_SYSTEM_PROMPT = "You are a semantic array analyzer. Your task is to analyze arrays and their elements to provide semantic understanding.\n\nYou must respond with valid JSON only, no additional text or explanation.\n\nGuidelines:\n- Consider element meanings, relationships, and patterns\n- Provide confidence scores from 0.0 to 1.0\n- Be precise and consistent in your analysis\n- Handle both primitive and complex object arrays";
9
+ /**
10
+ * Prompt for semantic equality comparison
11
+ */
12
+ export declare function createSemanticallyEqualsPrompt(array1: unknown[], array2: unknown[], options?: {
13
+ orderMatters?: boolean;
14
+ threshold?: number;
15
+ }): string;
16
+ /**
17
+ * Prompt for semantic filtering
18
+ */
19
+ export declare function createSemanticFilterPrompt(array: unknown[], criteria: string): string;
20
+ /**
21
+ * Prompt for semantic grouping
22
+ */
23
+ export declare function createSemanticGroupPrompt(array: unknown[], criteria: string): string;
24
+ /**
25
+ * Prompt for semantic sorting
26
+ */
27
+ export declare function createSemanticSortPrompt(array: unknown[], criteria: string): string;
28
+ /**
29
+ * Prompt for semantic search
30
+ */
31
+ export declare function createSemanticSearchPrompt(array: unknown[], criteria: string, options?: {
32
+ limit?: number;
33
+ }): string;
34
+ /**
35
+ * Prompt for pattern detection
36
+ */
37
+ export declare function createDetectPatternsPrompt(array: unknown[]): string;
38
+ /**
39
+ * Prompt for summarization
40
+ */
41
+ export declare function createSummarizePrompt(array: unknown[], options?: {
42
+ maxLength?: number;
43
+ focus?: string;
44
+ }): string;
45
+ /**
46
+ * Prompt for semantic unique (deduplication)
47
+ */
48
+ export declare function createSemanticUniquePrompt(array: unknown[], options?: {
49
+ threshold?: number;
50
+ }): string;
51
+ /**
52
+ * Prompt for validation
53
+ */
54
+ export declare function createValidatePrompt(array: unknown[], rules: string[]): string;
55
+ /**
56
+ * Prompt for enrichment
57
+ */
58
+ export declare function createEnrichPrompt(array: unknown[], enrichments: Record<string, string>): string;
59
+ /**
60
+ * Prompt for inferring element type
61
+ */
62
+ export declare function createInferElementTypePrompt(array: unknown[]): string;
63
+ //# sourceMappingURL=prompts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../src/types/array/prompts.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,eAAO,MAAM,mBAAmB,gaAQkB,CAAC;AAEnD;;GAEG;AACH,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,OAAO,EAAE,EACjB,MAAM,EAAE,OAAO,EAAE,EACjB,OAAO,CAAC,EAAE;IAAE,YAAY,CAAC,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GACvD,MAAM,CAwBR;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,OAAO,EAAE,EAChB,QAAQ,EAAE,MAAM,GACf,MAAM,CAeR;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,OAAO,EAAE,EAChB,QAAQ,EAAE,MAAM,GACf,MAAM,CAkBR;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,OAAO,EAAE,EAChB,QAAQ,EAAE,MAAM,GACf,MAAM,CAeR;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,OAAO,EAAE,EAChB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3B,MAAM,CAqBR;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,CAoBnE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,OAAO,EAAE,EAChB,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAC/C,MAAM,CA2BR;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,OAAO,EAAE,EAChB,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAC/B,MAAM,CAqBR;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,OAAO,EAAE,EAChB,KAAK,EAAE,MAAM,EAAE,GACd,MAAM,CAiBR;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,OAAO,EAAE,EAChB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAClC,MAAM,CAuBR;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,CAkBrE"}
@@ -0,0 +1,188 @@
1
+ /**
2
+ * SemanticBlob - LLM-enhanced Blob type with semantic understanding
3
+ *
4
+ * Extends the native Blob with semantic operations including:
5
+ * - Content type detection beyond MIME headers
6
+ * - Semantic equivalence comparison
7
+ * - Content analysis and validation
8
+ * - Safety assessment
9
+ *
10
+ * Implements shared interfaces:
11
+ * - Semantic<Blob> - Base semantic wrapper
12
+ * - Comparable<Blob> - Semantic equality comparison
13
+ * - Explainable - Human-readable explanations
14
+ */
15
+ import type { LLMConfig, Message } from '../../llm/types.ts';
16
+ import type { SemanticEqualsResult } from '../../shared/types.ts';
17
+ import type { Semantic, Comparable, Explainable } from '../../shared/interfaces.ts';
18
+ export type { SemanticEqualsResult } from '../../shared/types.ts';
19
+ /** Extended semantic equals result with note */
20
+ export interface BlobSemanticEqualsResult extends SemanticEqualsResult {
21
+ note?: string;
22
+ }
23
+ /** Result of content type detection */
24
+ export interface ContentTypeResult {
25
+ type: string;
26
+ declaredType: string;
27
+ mismatch: boolean;
28
+ confidence: number;
29
+ }
30
+ /** Result of blob analysis */
31
+ export interface AnalyzeResult {
32
+ type: string;
33
+ details: Record<string, unknown>;
34
+ }
35
+ /** Result of validation for a use case */
36
+ export interface ValidateForResult {
37
+ valid: boolean;
38
+ reason?: string;
39
+ suggestions?: string[];
40
+ }
41
+ /** Result of safety assessment */
42
+ export interface SafetyResult {
43
+ safe: boolean;
44
+ warnings: string[];
45
+ scanned: string[];
46
+ }
47
+ /** LLM client interface for dependency injection */
48
+ export interface BlobLLMClientInterface {
49
+ chat(options: {
50
+ messages: Message[];
51
+ systemPrompt?: string;
52
+ } & LLMConfig): Promise<{
53
+ content: string;
54
+ }>;
55
+ }
56
+ /**
57
+ * SemanticBlob class
58
+ * Wraps a Blob value with LLM-powered semantic operations
59
+ *
60
+ * Implements:
61
+ * - Semantic<Blob> - valueOf() returns the Blob value
62
+ * - Comparable<Blob> - semanticallyEquals() for comparison
63
+ * - Explainable - explain() for human-readable explanations
64
+ */
65
+ export declare class SemanticBlob implements Semantic<Blob>, Comparable<Blob, BlobSemanticEqualsResult>, Explainable {
66
+ protected readonly _value: Blob;
67
+ protected readonly _llmClient: BlobLLMClientInterface;
68
+ protected readonly _llmConfig?: LLMConfig;
69
+ /**
70
+ * Create a SemanticBlob instance
71
+ * @param value - The Blob value to wrap
72
+ * @param llmClient - Optional LLM client for dependency injection (useful for testing)
73
+ * @param llmConfig - Optional LLM configuration
74
+ */
75
+ constructor(value: Blob, llmClient?: BlobLLMClientInterface, llmConfig?: LLMConfig);
76
+ /**
77
+ * Create a SemanticBlob from existing Blob or data.
78
+ *
79
+ * @param data - Blob, ArrayBuffer, or string
80
+ * @param options - Blob options
81
+ * @param llmClient - Optional LLM client for dependency injection
82
+ * @param llmConfig - Optional LLM configuration
83
+ * @returns SemanticBlob instance
84
+ *
85
+ * @example
86
+ * SemanticBlob.from(arrayBuffer, { type: "image/png" })
87
+ */
88
+ static from(data: Blob | ArrayBuffer | Uint8Array | string, options?: BlobPropertyBag, llmClient?: BlobLLMClientInterface, llmConfig?: LLMConfig): SemanticBlob;
89
+ /**
90
+ * Get a preview of the blob content as hex
91
+ */
92
+ protected getPreview(maxBytes?: number): Promise<string>;
93
+ /**
94
+ * Check if two blobs are semantically equivalent.
95
+ *
96
+ * @param other - Blob to compare
97
+ * @returns Equivalence result
98
+ *
99
+ * @example
100
+ * blob1.semanticallyEquals(blob2)
101
+ * // { equivalent: true, note: "Same image, different compression", confidence: 0.9 }
102
+ */
103
+ semanticallyEquals(other: Blob, _options?: Record<string, unknown>): Promise<BlobSemanticEqualsResult>;
104
+ /**
105
+ * Detect the actual content type (not just MIME header).
106
+ *
107
+ * @returns Content detection result
108
+ *
109
+ * @example
110
+ * blob.detectContentType()
111
+ * // { type: "image/png", declaredType: "application/octet-stream", mismatch: true }
112
+ */
113
+ detectContentType(): Promise<ContentTypeResult>;
114
+ /**
115
+ * Analyze the blob contents.
116
+ *
117
+ * @returns Content analysis
118
+ *
119
+ * @example
120
+ * imageBlob.analyze()
121
+ * // { type: "image", details: { format: "PNG", hasTransparency: true } }
122
+ */
123
+ analyze(): Promise<AnalyzeResult>;
124
+ /**
125
+ * Validate the blob for a specific use case.
126
+ *
127
+ * @param useCase - Intended use
128
+ * @returns Validation result
129
+ *
130
+ * @example
131
+ * blob.validateFor("profile picture")
132
+ * // { valid: false, reason: "Image dimensions too small (min 200x200)" }
133
+ */
134
+ validateFor(useCase: string): Promise<ValidateForResult>;
135
+ /**
136
+ * Check if the blob is safe (no malicious content).
137
+ *
138
+ * @returns Safety assessment
139
+ *
140
+ * @example
141
+ * blob.isSafe()
142
+ * // { safe: true, warnings: [], scanned: ["magic-bytes", "extension-match"] }
143
+ */
144
+ isSafe(): Promise<SafetyResult>;
145
+ /**
146
+ * Explain what this blob contains.
147
+ *
148
+ * @param _context - Optional context (unused, for interface compatibility)
149
+ * @returns Human-readable explanation
150
+ */
151
+ explain(_context?: string): Promise<string>;
152
+ /**
153
+ * Get a summary of blob metadata.
154
+ *
155
+ * @returns Metadata summary
156
+ */
157
+ getMetadata(): Promise<Record<string, unknown>>;
158
+ /**
159
+ * Get the raw Blob value
160
+ * @returns The underlying Blob
161
+ */
162
+ valueOf(): Blob;
163
+ /**
164
+ * Get the MIME type
165
+ */
166
+ get type(): string;
167
+ /**
168
+ * Get the size in bytes
169
+ */
170
+ get size(): number;
171
+ /**
172
+ * Slice the blob
173
+ */
174
+ slice(start?: number, end?: number, contentType?: string): Blob;
175
+ /**
176
+ * Get the blob as ArrayBuffer
177
+ */
178
+ arrayBuffer(): Promise<ArrayBuffer>;
179
+ /**
180
+ * Get the blob as text
181
+ */
182
+ text(): Promise<string>;
183
+ /**
184
+ * Get a stream of the blob
185
+ */
186
+ stream(): ReadableStream<Uint8Array>;
187
+ }
188
+ //# sourceMappingURL=blob.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blob.d.ts","sourceRoot":"","sources":["../../../src/types/blob-file/blob.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,144 @@
1
+ /**
2
+ * SemanticFile - LLM-enhanced File type with semantic understanding
3
+ *
4
+ * Extends SemanticBlob with file-specific semantic operations including:
5
+ * - Filename validation
6
+ * - Extension matching
7
+ * - Category inference
8
+ * - Filename suggestions
9
+ *
10
+ * Implements shared interfaces:
11
+ * - Semantic<File> - Base semantic wrapper
12
+ * - Comparable<File> - Semantic equality comparison
13
+ * - Explainable - Human-readable explanations
14
+ */
15
+ import type { LLMConfig } from '../../llm/types.ts';
16
+ import { SemanticBlob, type BlobLLMClientInterface } from './blob.ts';
17
+ import { SemanticDate } from '../date/date.ts';
18
+ export type { BlobSemanticEqualsResult, ContentTypeResult, AnalyzeResult, ValidateForResult, SafetyResult, BlobLLMClientInterface, } from './blob.ts';
19
+ /** Result of filename validation */
20
+ export interface FilenameValidationResult {
21
+ valid: boolean;
22
+ issues: string[];
23
+ suggestions: string[];
24
+ }
25
+ /** Result of extension validation */
26
+ export interface ExtensionValidationResult {
27
+ matches: boolean;
28
+ actualType: string;
29
+ expectedType: string;
30
+ }
31
+ /** Result of category inference */
32
+ export interface CategoryResult {
33
+ category: string;
34
+ subcategory?: string;
35
+ confidence: number;
36
+ }
37
+ /** Result of filename suggestion */
38
+ export interface FilenameSuggestionResult {
39
+ suggested: string;
40
+ reason: string;
41
+ }
42
+ /** LLM client interface for dependency injection */
43
+ export type FileLLMClientInterface = BlobLLMClientInterface;
44
+ /**
45
+ * SemanticFile class
46
+ * Wraps a File value with LLM-powered semantic operations
47
+ *
48
+ * Extends SemanticBlob with file-specific capabilities:
49
+ * - validateFilename() for filename rule validation
50
+ * - validateExtension() for extension/content matching
51
+ * - inferCategory() for file categorization
52
+ * - suggestFilename() for better naming suggestions
53
+ * - getLastModified() for semantic date access
54
+ */
55
+ export declare class SemanticFile extends SemanticBlob {
56
+ protected readonly _file: File;
57
+ protected readonly _filename: string;
58
+ protected readonly _lastModified: number;
59
+ /**
60
+ * Create a SemanticFile instance
61
+ * @param file - The File value to wrap
62
+ * @param llmClient - Optional LLM client for dependency injection (useful for testing)
63
+ * @param llmConfig - Optional LLM configuration
64
+ */
65
+ constructor(file: File, llmClient?: FileLLMClientInterface, llmConfig?: LLMConfig);
66
+ /**
67
+ * Create a SemanticFile from File or Blob.
68
+ *
69
+ * @param file - File or Blob with name
70
+ * @param filename - Optional filename override
71
+ * @param llmClient - Optional LLM client for dependency injection
72
+ * @param llmConfig - Optional LLM configuration
73
+ * @returns SemanticFile instance
74
+ *
75
+ * @example
76
+ * SemanticFile.fromFile(inputElement.files[0])
77
+ */
78
+ static fromFile(file: File | Blob, filename?: string, llmClient?: FileLLMClientInterface, llmConfig?: LLMConfig): SemanticFile;
79
+ /**
80
+ * Validate the filename.
81
+ *
82
+ * @param rules - Filename validation rules
83
+ * @returns Validation result
84
+ *
85
+ * @example
86
+ * file.validateFilename(["no spaces", "lowercase only"])
87
+ * // { valid: false, issues: ["contains spaces"], suggestions: ["use-kebab-case.pdf"] }
88
+ */
89
+ validateFilename(rules?: string[]): Promise<FilenameValidationResult>;
90
+ /**
91
+ * Check if file extension matches content.
92
+ *
93
+ * @returns Match result
94
+ *
95
+ * @example
96
+ * file.validateExtension()
97
+ * // { matches: false, actualType: "image/png", expectedType: "image/jpeg" }
98
+ */
99
+ validateExtension(): Promise<ExtensionValidationResult>;
100
+ /**
101
+ * Infer the file category.
102
+ *
103
+ * @returns File category
104
+ *
105
+ * @example
106
+ * file.inferCategory()
107
+ * // { category: "document", subcategory: "spreadsheet", confidence: 0.95 }
108
+ */
109
+ inferCategory(): Promise<CategoryResult>;
110
+ /**
111
+ * Suggest a better filename.
112
+ *
113
+ * @returns Suggested filename
114
+ *
115
+ * @example
116
+ * file.suggestFilename()
117
+ * // { suggested: "invoice-2024-01.pdf", reason: "Based on document content" }
118
+ */
119
+ suggestFilename(): Promise<FilenameSuggestionResult>;
120
+ /**
121
+ * Get the file's modification timestamp as SemanticDate.
122
+ *
123
+ * @returns Last modified date with semantic capabilities
124
+ */
125
+ getLastModified(): SemanticDate;
126
+ /**
127
+ * Get the raw File value
128
+ * @returns The underlying File
129
+ */
130
+ valueOf(): File;
131
+ /**
132
+ * Get the filename
133
+ */
134
+ get name(): string;
135
+ /**
136
+ * Get the last modified timestamp
137
+ */
138
+ get lastModified(): number;
139
+ /**
140
+ * Get the webkitRelativePath (if available)
141
+ */
142
+ get webkitRelativePath(): string;
143
+ }
144
+ //# sourceMappingURL=file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../../src/types/blob-file/file.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAW,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,KAAK,sBAAsB,EAAE,MAAM,WAAW,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAa/C,YAAY,EACV,wBAAwB,EACxB,iBAAiB,EACjB,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,sBAAsB,GACvB,MAAM,WAAW,CAAC;AAEnB,oCAAoC;AACpC,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,qCAAqC;AACrC,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,mCAAmC;AACnC,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,oCAAoC;AACpC,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,oDAAoD;AACpD,MAAM,MAAM,sBAAsB,GAAG,sBAAsB,CAAC;AAE5D;;;;;;;;;;GAUG;AACH,qBAAa,YAAa,SAAQ,YAAY;IAC5C,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;IAC/B,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IACrC,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAEzC;;;;;OAKG;gBAED,IAAI,EAAE,IAAI,EACV,SAAS,CAAC,EAAE,sBAAsB,EAClC,SAAS,CAAC,EAAE,SAAS;IAQvB;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,QAAQ,CACb,IAAI,EAAE,IAAI,GAAG,IAAI,EACjB,QAAQ,CAAC,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,sBAAsB,EAClC,SAAS,CAAC,EAAE,SAAS,GACpB,YAAY;IAUf;;;;;;;;;OASG;IACG,gBAAgB,CAAC,KAAK,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAiB/E;;;;;;;;OAQG;IACG,iBAAiB,IAAI,OAAO,CAAC,yBAAyB,CAAC;IAuB7D;;;;;;;;OAQG;IACG,aAAa,IAAI,OAAO,CAAC,cAAc,CAAC;IAqB9C;;;;;;;;OAQG;IACG,eAAe,IAAI,OAAO,CAAC,wBAAwB,CAAC;IAuB1D;;;;OAIG;IACH,eAAe,IAAI,YAAY;IAI/B;;;OAGG;IACM,OAAO,IAAI,IAAI;IAMxB;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED;;OAEG;IACH,IAAI,kBAAkB,IAAI,MAAM,CAE/B;CACF"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * SemanticBlob and SemanticFile Module
3
+ * LLM-enhanced Blob and File types with semantic understanding
4
+ */
5
+ export { SemanticBlob, type BlobSemanticEqualsResult, type ContentTypeResult, type AnalyzeResult, type ValidateForResult, type SafetyResult, type BlobLLMClientInterface, } from './blob.ts';
6
+ export { SemanticFile, type FilenameValidationResult, type ExtensionValidationResult, type CategoryResult, type FilenameSuggestionResult, type FileLLMClientInterface, } from './file.ts';
7
+ export type { SemanticEqualsResult } from '../../shared/types.ts';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/blob-file/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,YAAY,EACZ,KAAK,wBAAwB,EAC7B,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,sBAAsB,GAC5B,MAAM,WAAW,CAAC;AAGnB,OAAO,EACL,YAAY,EACZ,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,cAAc,EACnB,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,GAC5B,MAAM,WAAW,CAAC;AAGnB,YAAY,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,101 @@
1
+ /**
2
+ * Prompts for SemanticBlob and SemanticFile LLM operations
3
+ * These prompts are used for various semantic blob/file operations that require LLM understanding
4
+ */
5
+ /**
6
+ * System prompt for semantic blob equality comparison
7
+ */
8
+ export declare const SEMANTIC_EQUALS_SYSTEM = "You are a binary data comparison assistant. Your task is to determine if two blobs are semantically equivalent.\n\nConsider these factors when comparing:\n- Content type and MIME types\n- Binary signatures and magic bytes\n- Content structure similarity\n- Whether content represents the same data in different formats/compressions\n- Size differences and their implications\n\nAlways respond with valid JSON only.";
9
+ /**
10
+ * User prompt template for semantic blob equality
11
+ */
12
+ export declare function semanticEqualsPrompt(blob1Info: {
13
+ type: string;
14
+ size: number;
15
+ preview: string;
16
+ }, blob2Info: {
17
+ type: string;
18
+ size: number;
19
+ preview: string;
20
+ }): string;
21
+ /**
22
+ * System prompt for content type detection
23
+ */
24
+ export declare const DETECT_CONTENT_TYPE_SYSTEM = "You are a file type detection assistant. Your task is to detect the actual content type of binary data based on magic bytes and content signatures.\n\nCommon magic byte patterns:\n- PNG: 89 50 4E 47 0D 0A 1A 0A\n- JPEG: FF D8 FF\n- GIF: 47 49 46 38\n- PDF: 25 50 44 46\n- ZIP: 50 4B 03 04\n- MP3: 49 44 33 or FF FB\n- MP4: various (ftyp signature)\n- HTML/XML: text patterns\n- JSON: starts with { or [\n\nAlways respond with valid JSON only.";
25
+ /**
26
+ * User prompt template for content type detection
27
+ */
28
+ export declare function detectContentTypePrompt(declaredType: string, magicBytes: string, size: number): string;
29
+ /**
30
+ * System prompt for blob analysis
31
+ */
32
+ export declare const ANALYZE_BLOB_SYSTEM = "You are a binary data analysis assistant. Your task is to analyze blob contents and provide detailed information about the data.\n\nFor images, consider: dimensions, color depth, transparency, compression\nFor documents: format, potential content type\nFor audio/video: format, potential duration, codec hints\nFor text-based: encoding, structure\n\nAlways respond with valid JSON only.";
33
+ /**
34
+ * User prompt template for blob analysis
35
+ */
36
+ export declare function analyzeBlobPrompt(type: string, size: number, preview: string): string;
37
+ /**
38
+ * System prompt for use case validation
39
+ */
40
+ export declare const VALIDATE_FOR_SYSTEM = "You are a file validation assistant. Your task is to validate if a blob is suitable for a specific use case.\n\nConsider:\n- Content type appropriateness\n- Size constraints for the use case\n- Format compatibility\n- Quality requirements\n- Security considerations\n\nAlways respond with valid JSON only.";
41
+ /**
42
+ * User prompt template for use case validation
43
+ */
44
+ export declare function validateForPrompt(useCase: string, type: string, size: number, preview: string): string;
45
+ /**
46
+ * System prompt for safety assessment
47
+ */
48
+ export declare const IS_SAFE_SYSTEM = "You are a file safety assessment assistant. Your task is to assess whether a blob is safe (no malicious content indicators).\n\nSafety checks to consider:\n- Magic byte validation (type matches declared type)\n- Suspicious patterns (embedded scripts, polyglot files)\n- Known malicious signatures\n- Extension/type mismatches\n- Unusual size characteristics\n\nAlways respond with valid JSON only.";
49
+ /**
50
+ * User prompt template for safety assessment
51
+ */
52
+ export declare function isSafePrompt(declaredType: string, detectedType: string, size: number, magicBytes: string): string;
53
+ /**
54
+ * System prompt for blob explanation
55
+ */
56
+ export declare const EXPLAIN_BLOB_SYSTEM = "You are a file description assistant. Your task is to explain what a blob contains in human-readable terms.\n\nProvide a clear, concise description that a non-technical user could understand.\n\nAlways respond with valid JSON only.";
57
+ /**
58
+ * User prompt template for blob explanation
59
+ */
60
+ export declare function explainBlobPrompt(type: string, size: number, preview: string): string;
61
+ /**
62
+ * System prompt for metadata extraction
63
+ */
64
+ export declare const GET_METADATA_SYSTEM = "You are a file metadata extraction assistant. Your task is to extract and infer metadata from blob data.\n\nExtract information like:\n- Content type and format\n- Size information\n- Structural characteristics\n- Format-specific metadata hints\n\nAlways respond with valid JSON only.";
65
+ /**
66
+ * User prompt template for metadata extraction
67
+ */
68
+ export declare function getMetadataPrompt(type: string, size: number, preview: string): string;
69
+ /**
70
+ * System prompt for filename validation
71
+ */
72
+ export declare const VALIDATE_FILENAME_SYSTEM = "You are a filename validation assistant. Your task is to validate filenames against specified rules.\n\nCommon filename rules:\n- no spaces: filename should not contain spaces\n- lowercase only: all characters should be lowercase\n- alphanumeric: only letters, numbers, and allowed separators\n- no special characters: avoid special characters\n- max length: reasonable filename length\n- valid extension: extension matches content\n\nAlways respond with valid JSON only.";
73
+ /**
74
+ * User prompt template for filename validation
75
+ */
76
+ export declare function validateFilenamePrompt(filename: string, rules: string[]): string;
77
+ /**
78
+ * System prompt for extension validation
79
+ */
80
+ export declare const VALIDATE_EXTENSION_SYSTEM = "You are a file extension validation assistant. Your task is to check if a file's extension matches its actual content type.\n\nConsider:\n- Common extension mappings\n- MIME type to extension relationships\n- Content detection results\n\nAlways respond with valid JSON only.";
81
+ /**
82
+ * User prompt template for extension validation
83
+ */
84
+ export declare function validateExtensionPrompt(filename: string, actualType: string, detectedType: string): string;
85
+ /**
86
+ * System prompt for category inference
87
+ */
88
+ export declare const INFER_CATEGORY_SYSTEM = "You are a file categorization assistant. Your task is to infer the category of a file based on its name, type, and content.\n\nCategories to consider:\n- document (subcategories: text, spreadsheet, presentation, pdf)\n- image (subcategories: photo, icon, vector, screenshot)\n- video (subcategories: movie, clip, animation)\n- audio (subcategories: music, voice, sound-effect)\n- archive (subcategories: compressed, backup)\n- code (subcategories: source, config, script)\n- data (subcategories: database, dataset, export)\n\nAlways respond with valid JSON only.";
89
+ /**
90
+ * User prompt template for category inference
91
+ */
92
+ export declare function inferCategoryPrompt(filename: string, type: string, size: number): string;
93
+ /**
94
+ * System prompt for filename suggestion
95
+ */
96
+ export declare const SUGGEST_FILENAME_SYSTEM = "You are a filename suggestion assistant. Your task is to suggest a better, more descriptive filename based on file content and context.\n\nConsider:\n- Content type and format\n- Descriptive naming conventions\n- Date/timestamp inclusion if appropriate\n- Proper extension\n- Clean, readable format\n\nAlways respond with valid JSON only.";
97
+ /**
98
+ * User prompt template for filename suggestion
99
+ */
100
+ export declare function suggestFilenamePrompt(currentFilename: string, type: string, contentHints: string): string;
101
+ //# sourceMappingURL=prompts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../src/types/blob-file/prompts.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH;;GAEG;AACH,eAAO,MAAM,sBAAsB,maASE,CAAC;AAEtC;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAC1D,SAAS,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACzD,MAAM,CAeR;AAED;;GAEG;AACH,eAAO,MAAM,0BAA0B,+bAaF,CAAC;AAEtC;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,GACX,MAAM,CASR;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,uYAOK,CAAC;AAEtC;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GACd,MAAM,CAcR;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,sTASK,CAAC;AAEtC;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GACd,MAAM,CAUR;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,kZASU,CAAC;AAEtC;;GAEG;AACH,wBAAgB,YAAY,CAC1B,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,GACjB,MAAM,CAUR;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,4OAIK,CAAC;AAEtC;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GACd,MAAM,CASR;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,iSAQK,CAAC;AAEtC;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GACd,MAAM,CASR;AAMD;;GAEG;AACH,eAAO,MAAM,wBAAwB,4dAUA,CAAC;AAEtC;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAQhF;AAED;;GAEG;AACH,eAAO,MAAM,yBAAyB,uRAOD,CAAC;AAEtC;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GACnB,MAAM,CASR;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,ujBAWG,CAAC;AAEtC;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX,MAAM,CASR;AAED;;GAEG;AACH,eAAO,MAAM,uBAAuB,uVASC,CAAC;AAEtC;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,eAAe,EAAE,MAAM,EACvB,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,GACnB,MAAM,CASR"}