@luzzle/core 0.0.32

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 (231) hide show
  1. package/README.md +41 -0
  2. package/dist/src/database/client.d.ts +4 -0
  3. package/dist/src/database/client.js +12 -0
  4. package/dist/src/database/client.js.map +1 -0
  5. package/dist/src/database/client.test.d.ts +1 -0
  6. package/dist/src/database/client.test.js +34 -0
  7. package/dist/src/database/client.test.js.map +1 -0
  8. package/dist/src/database/database.mock.d.ts +22 -0
  9. package/dist/src/database/database.mock.js +42 -0
  10. package/dist/src/database/database.mock.js.map +1 -0
  11. package/dist/src/database/migrations/2023-05-26T15:04:19.094Z.d.ts +3 -0
  12. package/dist/src/database/migrations/2023-05-26T15:04:19.094Z.js +49 -0
  13. package/dist/src/database/migrations/2023-05-26T15:04:19.094Z.js.map +1 -0
  14. package/dist/src/database/migrations/2023-10-30T23:24:40Z.d.ts +3 -0
  15. package/dist/src/database/migrations/2023-10-30T23:24:40Z.js +35 -0
  16. package/dist/src/database/migrations/2023-10-30T23:24:40Z.js.map +1 -0
  17. package/dist/src/database/migrations/2023-11-22T14:55:18Z.d.ts +3 -0
  18. package/dist/src/database/migrations/2023-11-22T14:55:18Z.js +16 -0
  19. package/dist/src/database/migrations/2023-11-22T14:55:18Z.js.map +1 -0
  20. package/dist/src/database/migrations/2023-11-27T04:32:07Z.d.ts +3 -0
  21. package/dist/src/database/migrations/2023-11-27T04:32:07Z.js +30 -0
  22. package/dist/src/database/migrations/2023-11-27T04:32:07Z.js.map +1 -0
  23. package/dist/src/database/migrations/2024-01-01T23:30:29Z.d.ts +3 -0
  24. package/dist/src/database/migrations/2024-01-01T23:30:29Z.js +11 -0
  25. package/dist/src/database/migrations/2024-01-01T23:30:29Z.js.map +1 -0
  26. package/dist/src/database/migrations/2024-01-06T15:52:43Z.d.ts +3 -0
  27. package/dist/src/database/migrations/2024-01-06T15:52:43Z.js +16 -0
  28. package/dist/src/database/migrations/2024-01-06T15:52:43Z.js.map +1 -0
  29. package/dist/src/database/migrations/2024-02-09T16:33:10Z.d.ts +3 -0
  30. package/dist/src/database/migrations/2024-02-09T16:33:10Z.js +37 -0
  31. package/dist/src/database/migrations/2024-02-09T16:33:10Z.js.map +1 -0
  32. package/dist/src/database/migrations/2024-02-13T05:56:43Z.d.ts +3 -0
  33. package/dist/src/database/migrations/2024-02-13T05:56:43Z.js +116 -0
  34. package/dist/src/database/migrations/2024-02-13T05:56:43Z.js.map +1 -0
  35. package/dist/src/database/migrations/2024-02-24T03:05:47Z-add-texts-table.d.ts +3 -0
  36. package/dist/src/database/migrations/2024-02-24T03:05:47Z-add-texts-table.js +42 -0
  37. package/dist/src/database/migrations/2024-02-24T03:05:47Z-add-texts-table.js.map +1 -0
  38. package/dist/src/database/migrations/2024-02-26T05:37:37Z-add-cache-table.d.ts +3 -0
  39. package/dist/src/database/migrations/2024-02-26T05:37:37Z-add-cache-table.js +20 -0
  40. package/dist/src/database/migrations/2024-02-26T05:37:37Z-add-cache-table.js.map +1 -0
  41. package/dist/src/database/migrations/2024-03-01T01:01:47Z-fix-trigger-bugs.d.ts +3 -0
  42. package/dist/src/database/migrations/2024-03-01T01:01:47Z-fix-trigger-bugs.js +43 -0
  43. package/dist/src/database/migrations/2024-03-01T01:01:47Z-fix-trigger-bugs.js.map +1 -0
  44. package/dist/src/database/migrations/2024-06-15T17:17:51Z-add-games-table.d.ts +3 -0
  45. package/dist/src/database/migrations/2024-06-15T17:17:51Z-add-games-table.js +54 -0
  46. package/dist/src/database/migrations/2024-06-15T17:17:51Z-add-games-table.js.map +1 -0
  47. package/dist/src/database/migrations/2024-06-24T20:16:48Z-remove-book-open-library-fields.d.ts +3 -0
  48. package/dist/src/database/migrations/2024-06-24T20:16:48Z-remove-book-open-library-fields.js +23 -0
  49. package/dist/src/database/migrations/2024-06-24T20:16:48Z-remove-book-open-library-fields.js.map +1 -0
  50. package/dist/src/database/migrations/2024-06-29T16:31:33Z-add-piece-manager-table.d.ts +3 -0
  51. package/dist/src/database/migrations/2024-06-29T16:31:33Z-add-piece-manager-table.js +17 -0
  52. package/dist/src/database/migrations/2024-06-29T16:31:33Z-add-piece-manager-table.js.map +1 -0
  53. package/dist/src/database/migrations/2024-07-14T06:59:07Z-remove-pieces.d.ts +3 -0
  54. package/dist/src/database/migrations/2024-07-14T06:59:07Z-remove-pieces.js +15 -0
  55. package/dist/src/database/migrations/2024-07-14T06:59:07Z-remove-pieces.js.map +1 -0
  56. package/dist/src/database/migrations/2024-11-06T15:27:05Z-remove-tags.d.ts +3 -0
  57. package/dist/src/database/migrations/2024-11-06T15:27:05Z-remove-tags.js +26 -0
  58. package/dist/src/database/migrations/2024-11-06T15:27:05Z-remove-tags.js.map +1 -0
  59. package/dist/src/database/migrations/2024-11-08T05:59:37Z-remove-pieces-items-unique-tables.d.ts +3 -0
  60. package/dist/src/database/migrations/2024-11-08T05:59:37Z-remove-pieces-items-unique-tables.js +24 -0
  61. package/dist/src/database/migrations/2024-11-08T05:59:37Z-remove-pieces-items-unique-tables.js.map +1 -0
  62. package/dist/src/database/migrations/2024-11-13T14:51:17Z-track-file-paths-on-piece.d.ts +3 -0
  63. package/dist/src/database/migrations/2024-11-13T14:51:17Z-track-file-paths-on-piece.js +54 -0
  64. package/dist/src/database/migrations/2024-11-13T14:51:17Z-track-file-paths-on-piece.js.map +1 -0
  65. package/dist/src/database/migrations/2024-12-15T06:35:24Z-track-assets-on-piece.d.ts +3 -0
  66. package/dist/src/database/migrations/2024-12-15T06:35:24Z-track-assets-on-piece.js +10 -0
  67. package/dist/src/database/migrations/2024-12-15T06:35:24Z-track-assets-on-piece.js.map +1 -0
  68. package/dist/src/database/migrations.d.ts +3 -0
  69. package/dist/src/database/migrations.js +16 -0
  70. package/dist/src/database/migrations.js.map +1 -0
  71. package/dist/src/database/migrations.test.d.ts +1 -0
  72. package/dist/src/database/migrations.test.js +37 -0
  73. package/dist/src/database/migrations.test.js.map +1 -0
  74. package/dist/src/database/tables/index.d.ts +21 -0
  75. package/dist/src/database/tables/index.js +7 -0
  76. package/dist/src/database/tables/index.js.map +1 -0
  77. package/dist/src/database/tables/pieces_cache.schema.d.ts +13 -0
  78. package/dist/src/database/tables/pieces_cache.schema.js +2 -0
  79. package/dist/src/database/tables/pieces_cache.schema.js.map +1 -0
  80. package/dist/src/database/tables/pieces_items.schema.d.ts +16 -0
  81. package/dist/src/database/tables/pieces_items.schema.js +2 -0
  82. package/dist/src/database/tables/pieces_items.schema.js.map +1 -0
  83. package/dist/src/database/tables/pieces_manager.schema.d.ts +13 -0
  84. package/dist/src/database/tables/pieces_manager.schema.js +2 -0
  85. package/dist/src/database/tables/pieces_manager.schema.js.map +1 -0
  86. package/dist/src/database/utils.d.ts +8 -0
  87. package/dist/src/database/utils.js +2 -0
  88. package/dist/src/database/utils.js.map +1 -0
  89. package/dist/src/database/utils.test.d.ts +1 -0
  90. package/dist/src/database/utils.test.js +9 -0
  91. package/dist/src/database/utils.test.js.map +1 -0
  92. package/dist/src/index.d.ts +11 -0
  93. package/dist/src/index.js +12 -0
  94. package/dist/src/index.js.map +1 -0
  95. package/dist/src/index.test.d.ts +1 -0
  96. package/dist/src/index.test.js +9 -0
  97. package/dist/src/index.test.js.map +1 -0
  98. package/dist/src/lib/ajv.d.ts +6 -0
  99. package/dist/src/lib/ajv.js +25 -0
  100. package/dist/src/lib/ajv.js.map +1 -0
  101. package/dist/src/lib/ajv.test.d.ts +1 -0
  102. package/dist/src/lib/ajv.test.js +43 -0
  103. package/dist/src/lib/ajv.test.js.map +1 -0
  104. package/dist/src/lib/frontmatter.d.ts +4 -0
  105. package/dist/src/lib/frontmatter.js +8 -0
  106. package/dist/src/lib/frontmatter.js.map +1 -0
  107. package/dist/src/lib/frontmatter.test.d.ts +1 -0
  108. package/dist/src/lib/frontmatter.test.js +37 -0
  109. package/dist/src/lib/frontmatter.test.js.map +1 -0
  110. package/dist/src/lib/markdown.d.ts +7 -0
  111. package/dist/src/lib/markdown.js +21 -0
  112. package/dist/src/lib/markdown.js.map +1 -0
  113. package/dist/src/lib/markdown.test.d.ts +1 -0
  114. package/dist/src/lib/markdown.test.js +34 -0
  115. package/dist/src/lib/markdown.test.js.map +1 -0
  116. package/dist/src/llm/google.d.ts +6 -0
  117. package/dist/src/llm/google.js +91 -0
  118. package/dist/src/llm/google.js.map +1 -0
  119. package/dist/src/llm/google.test.d.ts +1 -0
  120. package/dist/src/llm/google.test.js +253 -0
  121. package/dist/src/llm/google.test.js.map +1 -0
  122. package/dist/src/pieces/Piece.d.ts +66 -0
  123. package/dist/src/pieces/Piece.fixtures.d.ts +43 -0
  124. package/dist/src/pieces/Piece.fixtures.js +83 -0
  125. package/dist/src/pieces/Piece.fixtures.js.map +1 -0
  126. package/dist/src/pieces/Piece.js +256 -0
  127. package/dist/src/pieces/Piece.js.map +1 -0
  128. package/dist/src/pieces/Piece.test.d.ts +1 -0
  129. package/dist/src/pieces/Piece.test.js +839 -0
  130. package/dist/src/pieces/Piece.test.js.map +1 -0
  131. package/dist/src/pieces/Pieces.d.ts +55 -0
  132. package/dist/src/pieces/Pieces.js +144 -0
  133. package/dist/src/pieces/Pieces.js.map +1 -0
  134. package/dist/src/pieces/Pieces.test.d.ts +1 -0
  135. package/dist/src/pieces/Pieces.test.js +327 -0
  136. package/dist/src/pieces/Pieces.test.js.map +1 -0
  137. package/dist/src/pieces/assets.d.ts +5 -0
  138. package/dist/src/pieces/assets.js +6 -0
  139. package/dist/src/pieces/assets.js.map +1 -0
  140. package/dist/src/pieces/cache.d.ts +20 -0
  141. package/dist/src/pieces/cache.fixtures.d.ts +3 -0
  142. package/dist/src/pieces/cache.fixtures.js +12 -0
  143. package/dist/src/pieces/cache.fixtures.js.map +1 -0
  144. package/dist/src/pieces/cache.js +49 -0
  145. package/dist/src/pieces/cache.js.map +1 -0
  146. package/dist/src/pieces/cache.test.d.ts +1 -0
  147. package/dist/src/pieces/cache.test.js +98 -0
  148. package/dist/src/pieces/cache.test.js.map +1 -0
  149. package/dist/src/pieces/index.d.ts +8 -0
  150. package/dist/src/pieces/index.js +9 -0
  151. package/dist/src/pieces/index.js.map +1 -0
  152. package/dist/src/pieces/item.d.ts +9 -0
  153. package/dist/src/pieces/item.js +79 -0
  154. package/dist/src/pieces/item.js.map +1 -0
  155. package/dist/src/pieces/item.test.d.ts +1 -0
  156. package/dist/src/pieces/item.test.js +215 -0
  157. package/dist/src/pieces/item.test.js.map +1 -0
  158. package/dist/src/pieces/items.d.ts +39 -0
  159. package/dist/src/pieces/items.js +45 -0
  160. package/dist/src/pieces/items.js.map +1 -0
  161. package/dist/src/pieces/items.test.d.ts +1 -0
  162. package/dist/src/pieces/items.test.js +100 -0
  163. package/dist/src/pieces/items.test.js.map +1 -0
  164. package/dist/src/pieces/json.schema.d.ts +6 -0
  165. package/dist/src/pieces/json.schema.js +58 -0
  166. package/dist/src/pieces/json.schema.js.map +1 -0
  167. package/dist/src/pieces/json.schema.test.d.ts +1 -0
  168. package/dist/src/pieces/json.schema.test.js +27 -0
  169. package/dist/src/pieces/json.schema.test.js.map +1 -0
  170. package/dist/src/pieces/manager.d.ts +22 -0
  171. package/dist/src/pieces/manager.js +43 -0
  172. package/dist/src/pieces/manager.js.map +1 -0
  173. package/dist/src/pieces/manager.test.d.ts +1 -0
  174. package/dist/src/pieces/manager.test.js +72 -0
  175. package/dist/src/pieces/manager.test.js.map +1 -0
  176. package/dist/src/pieces/utils/frontmatter.d.ts +33 -0
  177. package/dist/src/pieces/utils/frontmatter.js +69 -0
  178. package/dist/src/pieces/utils/frontmatter.js.map +1 -0
  179. package/dist/src/pieces/utils/frontmatter.test.d.ts +1 -0
  180. package/dist/src/pieces/utils/frontmatter.test.js +185 -0
  181. package/dist/src/pieces/utils/frontmatter.test.js.map +1 -0
  182. package/dist/src/pieces/utils/markdown.d.ts +10 -0
  183. package/dist/src/pieces/utils/markdown.js +9 -0
  184. package/dist/src/pieces/utils/markdown.js.map +1 -0
  185. package/dist/src/pieces/utils/markdown.test.d.ts +1 -0
  186. package/dist/src/pieces/utils/markdown.test.js +38 -0
  187. package/dist/src/pieces/utils/markdown.test.js.map +1 -0
  188. package/dist/src/pieces/utils/piece.d.ts +13 -0
  189. package/dist/src/pieces/utils/piece.fixtures.d.ts +19 -0
  190. package/dist/src/pieces/utils/piece.fixtures.js +39 -0
  191. package/dist/src/pieces/utils/piece.fixtures.js.map +1 -0
  192. package/dist/src/pieces/utils/piece.js +142 -0
  193. package/dist/src/pieces/utils/piece.js.map +1 -0
  194. package/dist/src/pieces/utils/piece.test.d.ts +1 -0
  195. package/dist/src/pieces/utils/piece.test.js +333 -0
  196. package/dist/src/pieces/utils/piece.test.js.map +1 -0
  197. package/dist/src/pieces/utils.d.ts +10 -0
  198. package/dist/src/pieces/utils.js +101 -0
  199. package/dist/src/pieces/utils.js.map +1 -0
  200. package/dist/src/pieces/utils.test.d.ts +1 -0
  201. package/dist/src/pieces/utils.test.js +372 -0
  202. package/dist/src/pieces/utils.test.js.map +1 -0
  203. package/dist/src/storage/abstract.d.ts +19 -0
  204. package/dist/src/storage/abstract.js +4 -0
  205. package/dist/src/storage/abstract.js.map +1 -0
  206. package/dist/src/storage/fs.d.ts +22 -0
  207. package/dist/src/storage/fs.js +84 -0
  208. package/dist/src/storage/fs.js.map +1 -0
  209. package/dist/src/storage/fs.test.d.ts +1 -0
  210. package/dist/src/storage/fs.test.js +222 -0
  211. package/dist/src/storage/fs.test.js.map +1 -0
  212. package/dist/src/storage/index.d.ts +5 -0
  213. package/dist/src/storage/index.js +4 -0
  214. package/dist/src/storage/index.js.map +1 -0
  215. package/dist/src/storage/storage.mock.d.ts +2 -0
  216. package/dist/src/storage/storage.mock.js +18 -0
  217. package/dist/src/storage/storage.mock.js.map +1 -0
  218. package/dist/src/storage/types.d.ts +6 -0
  219. package/dist/src/storage/types.js +2 -0
  220. package/dist/src/storage/types.js.map +1 -0
  221. package/dist/src/storage/webdav.d.ts +25 -0
  222. package/dist/src/storage/webdav.js +65 -0
  223. package/dist/src/storage/webdav.js.map +1 -0
  224. package/dist/src/storage/webdav.test.d.ts +1 -0
  225. package/dist/src/storage/webdav.test.js +194 -0
  226. package/dist/src/storage/webdav.test.js.map +1 -0
  227. package/dist/tsconfig.tsbuildinfo +1 -0
  228. package/dist/vite.config.d.ts +2 -0
  229. package/dist/vite.config.js +36 -0
  230. package/dist/vite.config.js.map +1 -0
  231. package/package.json +60 -0
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=pieces_items.schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pieces_items.schema.js","sourceRoot":"","sources":["../../../../src/database/tables/pieces_items.schema.ts"],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ import type { Insertable, Updateable, Selectable } from 'kysely';
2
+ import { cuid, date_added, date_updated } from '../utils.js';
3
+ interface PieceManagerTable {
4
+ id: cuid;
5
+ date_added: date_added;
6
+ date_updated?: date_updated;
7
+ name: string;
8
+ schema: string;
9
+ }
10
+ type PieceManagerSelect = Selectable<PieceManagerTable>;
11
+ type PieceManagerInsert = Insertable<PieceManagerTable>;
12
+ type PieceManagerUpdate = Updateable<PieceManagerTable>;
13
+ export { type PieceManagerTable, type PieceManagerSelect, type PieceManagerInsert, type PieceManagerUpdate, };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=pieces_manager.schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pieces_manager.schema.js","sourceRoot":"","sources":["../../../../src/database/tables/pieces_manager.schema.ts"],"names":[],"mappings":""}
@@ -0,0 +1,8 @@
1
+ import { ColumnType } from 'kysely';
2
+ type cuid = string;
3
+ type date_added = ColumnType<number, undefined, never>;
4
+ type date_updated = ColumnType<number | null, undefined, number>;
5
+ type SchemaDateStringToDatabaseNumber<T> = {
6
+ [K in keyof T]: K extends `date_${string}` ? number : T[K] extends number ? string : T[K];
7
+ };
8
+ export { type cuid, type date_updated, type date_added, type SchemaDateStringToDatabaseNumber };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/database/utils.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,9 @@
1
+ import { describe, expect, test } from 'vitest';
2
+ import * as index from './utils.js';
3
+ // https://github.com/vitest-dev/vitest/issues/3605
4
+ describe('src/database/util.ts', () => {
5
+ test('schema', () => {
6
+ expect(index).toBeDefined();
7
+ });
8
+ });
9
+ //# sourceMappingURL=utils.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.test.js","sourceRoot":"","sources":["../../../src/database/utils.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC/C,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC,mDAAmD;AAEnD,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACrC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE;QACnB,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAA;IAC5B,CAAC,CAAC,CAAA;AACH,CAAC,CAAC,CAAA"}
@@ -0,0 +1,11 @@
1
+ import migrate from './database/migrations.js';
2
+ import compile from './lib/ajv.js';
3
+ import { sql } from 'kysely';
4
+ import { extractFullMarkdown } from './lib/markdown.js';
5
+ import { addFrontMatter } from './lib/frontmatter.js';
6
+ import { getDatabaseClient } from './database/client.js';
7
+ export * from './database/tables/index.js';
8
+ export * from './pieces/index.js';
9
+ export * from './llm/google.js';
10
+ export * from './storage/index.js';
11
+ export { getDatabaseClient, migrate, sql, compile, extractFullMarkdown, addFrontMatter };
@@ -0,0 +1,12 @@
1
+ import migrate from './database/migrations.js';
2
+ import compile from './lib/ajv.js';
3
+ import { sql } from 'kysely';
4
+ import { extractFullMarkdown } from './lib/markdown.js';
5
+ import { addFrontMatter } from './lib/frontmatter.js';
6
+ import { getDatabaseClient } from './database/client.js';
7
+ export * from './database/tables/index.js';
8
+ export * from './pieces/index.js';
9
+ export * from './llm/google.js';
10
+ export * from './storage/index.js';
11
+ export { getDatabaseClient, migrate, sql, compile, extractFullMarkdown, addFrontMatter };
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,0BAA0B,CAAA;AAC9C,OAAO,OAAO,MAAM,cAAc,CAAA;AAClC,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAA;AAC5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAExD,cAAc,4BAA4B,CAAA;AAC1C,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAElC,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,CAAA"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,9 @@
1
+ import { describe, expect, test } from 'vitest';
2
+ import * as index from './index.js';
3
+ // https://github.com/vitest-dev/vitest/issues/3605
4
+ describe('index.ts', () => {
5
+ test('schema', () => {
6
+ expect(index).toBeDefined();
7
+ });
8
+ });
9
+ //# sourceMappingURL=index.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/index.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC/C,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC,mDAAmD;AAEnD,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACzB,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE;QACnB,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAA;IAC5B,CAAC,CAAC,CAAA;AACH,CAAC,CAAC,CAAA"}
@@ -0,0 +1,6 @@
1
+ import { ValidateFunction, JSONSchemaType } from 'ajv';
2
+ export declare function commaSeparatedFormatValidator(data: string): boolean;
3
+ export declare function dateFormatValidator(data: string): boolean;
4
+ export declare function assetFormatValidator(data: string): boolean;
5
+ export declare function paragraphValidator(data: string): boolean;
6
+ export default function <T>(schema: JSONSchemaType<T>): ValidateFunction<T>;
@@ -0,0 +1,25 @@
1
+ import Ajv from 'ajv';
2
+ export function commaSeparatedFormatValidator(data) {
3
+ return typeof data === 'string';
4
+ }
5
+ export function dateFormatValidator(data) {
6
+ return !isNaN(Date.parse(data));
7
+ }
8
+ export function assetFormatValidator(data) {
9
+ return /^\.assets\/.+\/.+/.test(data);
10
+ }
11
+ export function paragraphValidator(data) {
12
+ return typeof data === 'string';
13
+ }
14
+ export default function (schema) {
15
+ const ajv = new Ajv();
16
+ ajv.addFormat('date', { type: 'string', validate: dateFormatValidator });
17
+ ajv.addFormat('asset', { type: 'string', validate: assetFormatValidator });
18
+ ajv.addFormat('comma-separated', {
19
+ type: 'string',
20
+ validate: commaSeparatedFormatValidator,
21
+ });
22
+ ajv.addFormat('paragraph', { type: 'string', validate: paragraphValidator });
23
+ return ajv.compile(schema);
24
+ }
25
+ //# sourceMappingURL=ajv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ajv.js","sourceRoot":"","sources":["../../../src/lib/ajv.ts"],"names":[],"mappings":"AAAA,OAAO,GAAyC,MAAM,KAAK,CAAA;AAE3D,MAAM,UAAU,6BAA6B,CAAC,IAAY;IACzD,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAA;AAChC,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC/C,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;AAChC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAChD,OAAO,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACtC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC9C,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAA;AAChC,CAAC;AAED,MAAM,CAAC,OAAO,WAAc,MAAyB;IACpD,MAAM,GAAG,GAAG,IAAI,GAAG,EAAE,CAAA;IAErB,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,mBAAmB,EAAE,CAAC,CAAA;IACxE,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,oBAAoB,EAAE,CAAC,CAAA;IAC1E,GAAG,CAAC,SAAS,CAAC,iBAAiB,EAAE;QAChC,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,6BAA6B;KACvC,CAAC,CAAA;IACF,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAA;IAE5E,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;AAC3B,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,43 @@
1
+ import { describe, expect, test, vi, afterEach } from 'vitest';
2
+ import { makeSchema } from '../pieces/utils/piece.fixtures.js';
3
+ import Ajv from 'ajv';
4
+ import ajv, { assetFormatValidator, dateFormatValidator, commaSeparatedFormatValidator, paragraphValidator } from './ajv.js';
5
+ vi.mock('ajv');
6
+ const mocks = {
7
+ Ajv: vi.mocked(Ajv),
8
+ compile: vi.mocked(Ajv.prototype.compile),
9
+ addFormat: vi.mocked(Ajv.prototype.addFormat),
10
+ };
11
+ const spies = {};
12
+ describe('src/lib/ajv.ts', () => {
13
+ afterEach(() => {
14
+ Object.values(mocks).forEach((mock) => {
15
+ mock.mockReset();
16
+ });
17
+ Object.keys(spies).forEach((key) => {
18
+ spies[key].mockRestore();
19
+ delete spies[key];
20
+ });
21
+ });
22
+ test('ajv', () => {
23
+ const schema = makeSchema();
24
+ ajv(schema);
25
+ expect(mocks.Ajv).toHaveBeenCalledTimes(1);
26
+ expect(mocks.compile).toHaveBeenCalledWith(schema);
27
+ });
28
+ test('commaSeparatedFormatValidator', () => {
29
+ expect(commaSeparatedFormatValidator('a,b,c')).toBe(true);
30
+ });
31
+ test('dateFormatValidator', () => {
32
+ expect(dateFormatValidator('2020-01-01')).toBe(true);
33
+ expect(dateFormatValidator('2020-01-32')).toBe(false);
34
+ });
35
+ test('assetFormatValidtor', () => {
36
+ expect(assetFormatValidator('.assets/1/2/3')).toBe(true);
37
+ expect(assetFormatValidator('./home/to/nowhere/5.jpg')).toBe(false);
38
+ });
39
+ test('paragraphFormatValidtor', () => {
40
+ expect(paragraphValidator('hi there')).toBe(true);
41
+ });
42
+ });
43
+ //# sourceMappingURL=ajv.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ajv.test.js","sourceRoot":"","sources":["../../../src/lib/ajv.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAgB,MAAM,QAAQ,CAAA;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAA;AAC9D,OAAO,GAAG,MAAM,KAAK,CAAA;AACrB,OAAO,GAAG,EAAE,EACX,oBAAoB,EACpB,mBAAmB,EACnB,6BAA6B,EAC7B,kBAAkB,EAClB,MAAM,UAAU,CAAA;AAEjB,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAEd,MAAM,KAAK,GAAG;IACb,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC;IACnB,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC;IACzC,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC;CAC7C,CAAA;AAED,MAAM,KAAK,GAAoC,EAAE,CAAA;AAEjD,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC/B,SAAS,CAAC,GAAG,EAAE;QACd,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACrC,IAAI,CAAC,SAAS,EAAE,CAAA;QACjB,CAAC,CAAC,CAAA;QAEF,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YAClC,KAAK,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAA;YACxB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAA;QAClB,CAAC,CAAC,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE;QAChB,MAAM,MAAM,GAAG,UAAU,EAAE,CAAA;QAE3B,GAAG,CAAC,MAAM,CAAC,CAAA;QAEX,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAA;QAC1C,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAA;IACnD,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,+BAA+B,EAAE,GAAG,EAAE;QAC1C,MAAM,CAAC,6BAA6B,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC1D,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,qBAAqB,EAAE,GAAG,EAAE;QAChC,MAAM,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACpD,MAAM,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACtD,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,qBAAqB,EAAE,GAAG,EAAE;QAChC,MAAM,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACxD,MAAM,CAAC,oBAAoB,CAAC,yBAAyB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACpE,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACpC,MAAM,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAClD,CAAC,CAAC,CAAA;AACH,CAAC,CAAC,CAAA"}
@@ -0,0 +1,4 @@
1
+ declare function addFrontMatter(markdown?: string | null, metadata?: {
2
+ [key: string]: unknown;
3
+ }): string;
4
+ export { addFrontMatter };
@@ -0,0 +1,8 @@
1
+ import { stringify } from 'yaml';
2
+ function addFrontMatter(markdown, metadata = {}) {
3
+ const yamlString = stringify(metadata);
4
+ const content = markdown?.trim() || '';
5
+ return `---\n${yamlString}---\n${content}\n`;
6
+ }
7
+ export { addFrontMatter };
8
+ //# sourceMappingURL=frontmatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frontmatter.js","sourceRoot":"","sources":["../../../src/lib/frontmatter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAA;AAEhC,SAAS,cAAc,CACtB,QAAwB,EACxB,WAAuC,EAAE;IAEzC,MAAM,UAAU,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;IACtC,MAAM,OAAO,GAAG,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;IAEtC,OAAO,QAAQ,UAAU,QAAQ,OAAO,IAAI,CAAA;AAC7C,CAAC;AAED,OAAO,EAAE,cAAc,EAAE,CAAA"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,37 @@
1
+ import { describe, expect, test, vi, afterEach } from 'vitest';
2
+ import * as frontmatter from './frontmatter.js';
3
+ import { stringify } from 'yaml';
4
+ vi.mock('yaml');
5
+ const mocks = {
6
+ stringify: vi.mocked(stringify),
7
+ };
8
+ describe('lib/frontmatter.ts', () => {
9
+ afterEach(() => {
10
+ Object.values(mocks).forEach((mock) => {
11
+ mock.mockReset();
12
+ mock.mockClear();
13
+ });
14
+ });
15
+ test('addFrontMatter', () => {
16
+ const markdown = 'this is markdown';
17
+ const metadata = {
18
+ a: 'awesome',
19
+ b: 'banana',
20
+ };
21
+ const yamlstring = 'yaml-front-matter';
22
+ mocks.stringify.mockReturnValueOnce(yamlstring);
23
+ const combined = frontmatter.addFrontMatter(markdown, metadata);
24
+ expect(combined).toBe(`---\n${yamlstring}---\n${markdown}\n`);
25
+ });
26
+ test('addFrontMatter with no markdown', () => {
27
+ const metadata = {
28
+ a: 'awesome',
29
+ b: 'banana',
30
+ };
31
+ const yamlstring = 'yaml-front-matter';
32
+ mocks.stringify.mockReturnValueOnce(yamlstring);
33
+ const combined = frontmatter.addFrontMatter(null, metadata);
34
+ expect(combined).toBe(`---\n${yamlstring}---\n\n`);
35
+ });
36
+ });
37
+ //# sourceMappingURL=frontmatter.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frontmatter.test.js","sourceRoot":"","sources":["../../../src/lib/frontmatter.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAC9D,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAA;AAEhC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;AAEf,MAAM,KAAK,GAAG;IACb,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC;CAC/B,CAAA;AAED,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IACnC,SAAS,CAAC,GAAG,EAAE;QACd,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACrC,IAAI,CAAC,SAAS,EAAE,CAAA;YAChB,IAAI,CAAC,SAAS,EAAE,CAAA;QACjB,CAAC,CAAC,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC3B,MAAM,QAAQ,GAAG,kBAAkB,CAAA;QACnC,MAAM,QAAQ,GAAG;YAChB,CAAC,EAAE,SAAS;YACZ,CAAC,EAAE,QAAQ;SACX,CAAA;QACD,MAAM,UAAU,GAAG,mBAAmB,CAAA;QAEtC,KAAK,CAAC,SAAS,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAA;QAE/C,MAAM,QAAQ,GAAG,WAAW,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;QAC/D,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,UAAU,QAAQ,QAAQ,IAAI,CAAC,CAAA;IAC9D,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,iCAAiC,EAAE,GAAG,EAAE;QAC5C,MAAM,QAAQ,GAAG;YAChB,CAAC,EAAE,SAAS;YACZ,CAAC,EAAE,QAAQ;SACX,CAAA;QACD,MAAM,UAAU,GAAG,mBAAmB,CAAA;QAEtC,KAAK,CAAC,SAAS,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAA;QAE/C,MAAM,QAAQ,GAAG,WAAW,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;QAC3D,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,UAAU,SAAS,CAAC,CAAA;IACnD,CAAC,CAAC,CAAA;AACH,CAAC,CAAC,CAAA"}
@@ -0,0 +1,7 @@
1
+ declare function extractFullMarkdown(contents: string | Buffer): Promise<{
2
+ frontmatter: {
3
+ [key: string]: unknown;
4
+ };
5
+ markdown: string;
6
+ }>;
7
+ export { extractFullMarkdown };
@@ -0,0 +1,21 @@
1
+ import { remark } from 'remark';
2
+ import remarkFrontMatter from 'remark-frontmatter';
3
+ import { visit } from 'unist-util-visit';
4
+ import YAML from 'yaml';
5
+ async function extractFullMarkdown(contents) {
6
+ let frontmatter = {};
7
+ let markdown = contents.toString();
8
+ await remark()
9
+ .use(remarkFrontMatter)
10
+ .use(() => (tree) => {
11
+ visit(tree, 'yaml', function (node) {
12
+ frontmatter = YAML.parse(node.value);
13
+ const endPosition = node.position?.end.offset;
14
+ markdown = markdown.slice(endPosition).trim();
15
+ });
16
+ })
17
+ .process(contents);
18
+ return { frontmatter, markdown };
19
+ }
20
+ export { extractFullMarkdown };
21
+ //# sourceMappingURL=markdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../../src/lib/markdown.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,iBAAiB,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACxC,OAAO,IAAI,MAAM,MAAM,CAAA;AAEvB,KAAK,UAAU,mBAAmB,CACjC,QAAyB;IAEzB,IAAI,WAAW,GAAG,EAAE,CAAA;IACpB,IAAI,QAAQ,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAA;IAElC,MAAM,MAAM,EAAE;SACZ,GAAG,CAAC,iBAAiB,CAAC;SACtB,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,IAAU,EAAE,EAAE;QACzB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,IAAI;YACjC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACpC,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAA;YAC7C,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAA;QAC9C,CAAC,CAAC,CAAA;IACH,CAAC,CAAC;SACD,OAAO,CAAC,QAAQ,CAAC,CAAA;IAEnB,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAA;AACjC,CAAC;AAED,OAAO,EAAE,mBAAmB,EAAE,CAAA"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,34 @@
1
+ import { describe, expect, test, afterEach } from 'vitest';
2
+ import * as markdown from './markdown.js';
3
+ const mocks = {};
4
+ describe('./lib/markdown.ts', () => {
5
+ afterEach(() => {
6
+ Object.values(mocks).forEach(() => {
7
+ //mock.mockReset()
8
+ //mock.mockClear()
9
+ });
10
+ });
11
+ test('extract markdown and frontmatter', async () => {
12
+ const contents = '---\na: awesome\nb: banana\n---\nthis is markdown';
13
+ const extracted = await markdown.extractFullMarkdown(contents);
14
+ expect(extracted.frontmatter).toEqual({ a: 'awesome', b: 'banana' });
15
+ expect(extracted.markdown).toBe('this is markdown');
16
+ });
17
+ test('should not escape footnotes', async () => {
18
+ const contents = `---
19
+ a: awesome
20
+ b: banana
21
+ ---
22
+ Here is a footnote reference,[^1] and another.[^longnote]
23
+
24
+ [^1]: Here is the footnote.
25
+ [^longnote]: Here's one with multiple blocks.
26
+ `;
27
+ const extracted = await markdown.extractFullMarkdown(contents);
28
+ expect(extracted.markdown).toBe(`Here is a footnote reference,[^1] and another.[^longnote]
29
+
30
+ [^1]: Here is the footnote.
31
+ [^longnote]: Here's one with multiple blocks.`);
32
+ });
33
+ });
34
+ //# sourceMappingURL=markdown.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.test.js","sourceRoot":"","sources":["../../../src/lib/markdown.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAC1D,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC,MAAM,KAAK,GAAG,EAAE,CAAA;AAEhB,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IAClC,SAAS,CAAC,GAAG,EAAE;QACd,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;YACjC,kBAAkB;YAClB,kBAAkB;QACnB,CAAC,CAAC,CAAA;IACH,CAAC,CAAC,CAAA;IAEH,IAAI,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,QAAQ,GAAG,mDAAmD,CAAA;QAEpE,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAA;QAE9D,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAA;QACpE,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;IACpD,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;QAC9C,MAAM,QAAQ,GAAG;;;;;;;;CAQlB,CAAA;QACC,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAA;QAC9D,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,IAAI,CAC9B;;;8CAG2C,CAC3C,CAAA;IACF,CAAC,CAAC,CAAA;AACH,CAAC,CAAC,CAAA"}
@@ -0,0 +1,6 @@
1
+ import { JSONSchemaType } from 'ajv';
2
+ import { type PieceFrontmatter } from '../pieces/index.js';
3
+ declare function pieceFrontMatterFromPrompt(apiKey: string, schema: JSONSchemaType<PieceFrontmatter>, prompt: string, files?: Array<string | Buffer>): Promise<{
4
+ [k: string]: string | number | boolean | number[] | string[] | boolean[];
5
+ }>;
6
+ export { pieceFrontMatterFromPrompt };
@@ -0,0 +1,91 @@
1
+ import { fileTypeFromBuffer, fileTypeFromFile } from 'file-type';
2
+ import { createPartFromUri, GoogleGenAI, HarmCategory, HarmBlockThreshold, } from '@google/genai';
3
+ import { readFile } from 'fs/promises';
4
+ import path from 'path';
5
+ const MODEL_NAME = 'gemini-2.5-flash';
6
+ const safetySettings = [
7
+ {
8
+ category: HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT,
9
+ threshold: HarmBlockThreshold.BLOCK_NONE,
10
+ },
11
+ {
12
+ category: HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT,
13
+ threshold: HarmBlockThreshold.BLOCK_NONE,
14
+ },
15
+ {
16
+ category: HarmCategory.HARM_CATEGORY_CIVIC_INTEGRITY,
17
+ threshold: HarmBlockThreshold.BLOCK_NONE,
18
+ },
19
+ ];
20
+ function getClient(apiKey) {
21
+ return new GoogleGenAI({ apiKey });
22
+ }
23
+ async function extractPartFromFile(file, genAI) {
24
+ const isBuffer = Buffer.isBuffer(file);
25
+ const fileType = isBuffer ? await fileTypeFromBuffer(file) : await fileTypeFromFile(file);
26
+ const mimeType = fileType?.mime;
27
+ // assume it's non binary
28
+ if (!mimeType) {
29
+ const fileContent = isBuffer ? file.toString() : await readFile(file, 'utf-8');
30
+ const fileName = isBuffer ? 'string buffer of downloaded file' : path.basename(file);
31
+ const data = [
32
+ `---[start] embedding ${fileName}---`,
33
+ fileContent,
34
+ `---[end] embedding of ${fileName}---`,
35
+ ];
36
+ return data.join('\n');
37
+ }
38
+ else {
39
+ const uploadedFile = await genAI.files.upload({
40
+ file: isBuffer ? new Blob([file]) : file,
41
+ config: {
42
+ mimeType,
43
+ },
44
+ });
45
+ // Wait for the file to be processed.
46
+ let getFile = await genAI.files.get({ name: uploadedFile.name });
47
+ while (getFile.state === 'PROCESSING') {
48
+ getFile = await genAI.files.get({ name: uploadedFile.name });
49
+ await new Promise((resolve) => {
50
+ setTimeout(resolve, 5000);
51
+ });
52
+ }
53
+ if (uploadedFile.state === 'FAILED') {
54
+ throw new Error('File processing failed.');
55
+ }
56
+ if (uploadedFile.uri && uploadedFile.mimeType) {
57
+ const fileContent = createPartFromUri(uploadedFile.uri, uploadedFile.mimeType);
58
+ return fileContent;
59
+ }
60
+ }
61
+ throw new Error('File processing failed.');
62
+ }
63
+ async function pieceFrontMatterFromPrompt(apiKey, schema, prompt, files) {
64
+ const genAI = getClient(apiKey);
65
+ const content = [prompt];
66
+ if (files) {
67
+ for (const file of files) {
68
+ const part = await extractPartFromFile(file, genAI);
69
+ content.push(part);
70
+ }
71
+ }
72
+ const result = await genAI.models.generateContent({
73
+ model: MODEL_NAME,
74
+ contents: content,
75
+ config: {
76
+ responseMimeType: 'application/json',
77
+ safetySettings: safetySettings,
78
+ responseJsonSchema: schema,
79
+ systemInstruction: `you are an assistant that helps generate JSON metadata for a record that will be added to a collection of similar records.
80
+
81
+ if you are provided pdf attachments, images or other text based files, please prioritize them as inputs for generating metadata for the record.
82
+
83
+ you are also given a responseJsonSchema to guide your output. each field in the schema has a description and examples to help guide what the intention of each field is and what values to expect.`,
84
+ },
85
+ });
86
+ const metadata = result.text || '{}';
87
+ const frontmatter = JSON.parse(metadata);
88
+ return Object.fromEntries(Object.entries(frontmatter).filter(([, value]) => value !== null || value === ''));
89
+ }
90
+ export { pieceFrontMatterFromPrompt };
91
+ //# sourceMappingURL=google.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"google.js","sourceRoot":"","sources":["../../../src/llm/google.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};