@luzzle/core 0.0.58 → 0.0.60

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 (92) hide show
  1. package/README.md +1 -1
  2. package/dist/src/database/NodeSqliteDialect.js.map +1 -1
  3. package/dist/src/database/NodeSqliteDialect.test.js +104 -0
  4. package/dist/src/database/NodeSqliteDialect.test.js.map +1 -0
  5. package/dist/src/database/client.js +5 -1
  6. package/dist/src/database/client.js.map +1 -1
  7. package/dist/src/database/client.test.js.map +1 -1
  8. package/dist/src/database/migrations/2023-05-26T15:04:19.094Z.js.map +1 -1
  9. package/dist/src/database/migrations/2023-10-30T23:24:40Z.js.map +1 -1
  10. package/dist/src/database/migrations/2023-11-22T14:55:18Z.js.map +1 -1
  11. package/dist/src/database/migrations/2023-11-27T04:32:07Z.js.map +1 -1
  12. package/dist/src/database/migrations/2024-01-01T23:30:29Z.js.map +1 -1
  13. package/dist/src/database/migrations/2024-01-06T15:52:43Z.js.map +1 -1
  14. package/dist/src/database/migrations/2024-02-09T16:33:10Z.js.map +1 -1
  15. package/dist/src/database/migrations/2024-02-13T05:56:43Z.js.map +1 -1
  16. package/dist/src/database/migrations/2024-02-24T03:05:47Z-add-texts-table.js.map +1 -1
  17. package/dist/src/database/migrations/2024-02-26T05:37:37Z-add-cache-table.js.map +1 -1
  18. package/dist/src/database/migrations/2024-03-01T01:01:47Z-fix-trigger-bugs.js.map +1 -1
  19. package/dist/src/database/migrations/2024-06-15T17:17:51Z-add-games-table.js.map +1 -1
  20. package/dist/src/database/migrations/2024-06-24T20:16:48Z-remove-book-open-library-fields.js.map +1 -1
  21. package/dist/src/database/migrations/2024-06-29T16:31:33Z-add-piece-manager-table.js.map +1 -1
  22. package/dist/src/database/migrations/2024-07-14T06:59:07Z-remove-pieces.js.map +1 -1
  23. package/dist/src/database/migrations/2024-11-06T15:27:05Z-remove-tags.js.map +1 -1
  24. package/dist/src/database/migrations/2024-11-08T05:59:37Z-remove-pieces-items-unique-tables.js.map +1 -1
  25. package/dist/src/database/migrations/2024-11-13T14:51:17Z-track-file-paths-on-piece.js.map +1 -1
  26. package/dist/src/database/migrations/2024-12-15T06:35:24Z-track-assets-on-piece.js.map +1 -1
  27. package/dist/src/database/migrations/2026-02-11T23:03:45Z-clear-pieces-cache.js.map +1 -1
  28. package/dist/src/database/migrations.js.map +1 -1
  29. package/dist/src/database/migrations.test.js.map +1 -1
  30. package/dist/src/database/tables/index.js.map +1 -1
  31. package/dist/src/database/tables/pieces_cache.schema.js.map +1 -1
  32. package/dist/src/database/tables/pieces_items.schema.js.map +1 -1
  33. package/dist/src/database/tables/pieces_manager.schema.js.map +1 -1
  34. package/dist/src/database/utils.js.map +1 -1
  35. package/dist/src/database/utils.test.js.map +1 -1
  36. package/dist/src/index.js.map +1 -1
  37. package/dist/src/index.test.js.map +1 -1
  38. package/dist/src/lib/ajv.js.map +1 -1
  39. package/dist/src/lib/ajv.test.js.map +1 -1
  40. package/dist/src/lib/frontmatter.js.map +1 -1
  41. package/dist/src/lib/frontmatter.test.js.map +1 -1
  42. package/dist/src/lib/markdown.js.map +1 -1
  43. package/dist/src/lib/markdown.test.js.map +1 -1
  44. package/dist/src/llm/google.js.map +1 -1
  45. package/dist/src/llm/google.test.js.map +1 -1
  46. package/dist/src/pieces/Piece.fixtures.js.map +1 -1
  47. package/dist/src/pieces/Piece.js +3 -0
  48. package/dist/src/pieces/Piece.js.map +1 -1
  49. package/dist/src/pieces/Piece.test.js +20 -1
  50. package/dist/src/pieces/Piece.test.js.map +1 -1
  51. package/dist/src/pieces/Pieces.js.map +1 -1
  52. package/dist/src/pieces/Pieces.test.js.map +1 -1
  53. package/dist/src/pieces/assets.js.map +1 -1
  54. package/dist/src/pieces/cache.fixtures.js.map +1 -1
  55. package/dist/src/pieces/cache.js.map +1 -1
  56. package/dist/src/pieces/cache.test.js.map +1 -1
  57. package/dist/src/pieces/index.js.map +1 -1
  58. package/dist/src/pieces/item.js.map +1 -1
  59. package/dist/src/pieces/item.test.js.map +1 -1
  60. package/dist/src/pieces/items.js.map +1 -1
  61. package/dist/src/pieces/items.test.js.map +1 -1
  62. package/dist/src/pieces/json.schema.js.map +1 -1
  63. package/dist/src/pieces/json.schema.test.js.map +1 -1
  64. package/dist/src/pieces/manager.js.map +1 -1
  65. package/dist/src/pieces/manager.test.js.map +1 -1
  66. package/dist/src/pieces/utils/frontmatter.js.map +1 -1
  67. package/dist/src/pieces/utils/frontmatter.path.js.map +1 -1
  68. package/dist/src/pieces/utils/frontmatter.path.test.js.map +1 -1
  69. package/dist/src/pieces/utils/frontmatter.test.js.map +1 -1
  70. package/dist/src/pieces/utils/markdown.js.map +1 -1
  71. package/dist/src/pieces/utils/markdown.test.js.map +1 -1
  72. package/dist/src/pieces/utils/piece.js.map +1 -1
  73. package/dist/src/pieces/utils/piece.test.js.map +1 -1
  74. package/dist/src/storage/abstract.js.map +1 -1
  75. package/dist/src/storage/fs.js.map +1 -1
  76. package/dist/src/storage/fs.test.js.map +1 -1
  77. package/dist/src/storage/index.d.ts +3 -4
  78. package/dist/src/storage/index.js +2 -2
  79. package/dist/src/storage/index.js.map +1 -1
  80. package/dist/src/storage/storage.mock.js.map +1 -1
  81. package/dist/src/storage/types.d.ts +1 -1
  82. package/dist/src/storage/types.js.map +1 -1
  83. package/dist/test/db.js.map +1 -1
  84. package/dist/tsconfig.tsbuildinfo +1 -1
  85. package/dist/vite.config.js.map +1 -1
  86. package/package.json +1 -2
  87. package/dist/src/storage/webdav.d.ts +0 -23
  88. package/dist/src/storage/webdav.js +0 -72
  89. package/dist/src/storage/webdav.js.map +0 -1
  90. package/dist/src/storage/webdav.test.js +0 -203
  91. package/dist/src/storage/webdav.test.js.map +0 -1
  92. /package/dist/src/{storage/webdav.test.d.ts → database/NodeSqliteDialect.test.d.ts} +0 -0
@@ -1 +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"}
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","sourcesContent":["import { describe, expect, test } from 'vitest'\nimport * as index from './index.js'\n\n// https://github.com/vitest-dev/vitest/issues/3605\n\ndescribe('index.ts', () => {\n\ttest('schema', () => {\n\t\texpect(index).toBeDefined()\n\t})\n})\n"]}
@@ -1 +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,uBAAuB,CAAC,IAAY;IACnD,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,wBAAwB,CAAC,IAAY;IACpD,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,wBAAwB,EAAE,CAAC,CAAA;IAClF,GAAG,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,uBAAuB,EAAE,CAAC,CAAA;IAEhF,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;AAC3B,CAAC"}
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,uBAAuB,CAAC,IAAY;IACnD,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,wBAAwB,CAAC,IAAY;IACpD,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,wBAAwB,EAAE,CAAC,CAAA;IAClF,GAAG,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,uBAAuB,EAAE,CAAC,CAAA;IAEhF,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;AAC3B,CAAC","sourcesContent":["import Ajv, { ValidateFunction, JSONSchemaType } from 'ajv'\n\nexport function commaSeparatedFormatValidator(data: string) {\n\treturn typeof data === 'string'\n}\n\nexport function markdownFormatValidator(data: string) {\n\treturn typeof data === 'string'\n}\n\nexport function dateFormatValidator(data: string) {\n\treturn !isNaN(Date.parse(data))\n}\n\nexport function assetFormatValidator(data: string) {\n\treturn /^\\.assets\\/.+\\/.+/.test(data)\n}\n\nexport function paragraphFormatValidator(data: string) {\n\treturn typeof data === 'string'\n}\n\nexport default function <T>(schema: JSONSchemaType<T>): ValidateFunction<T> {\n\tconst ajv = new Ajv()\n\n\tajv.addFormat('date', { type: 'string', validate: dateFormatValidator })\n\tajv.addFormat('asset', { type: 'string', validate: assetFormatValidator })\n\tajv.addFormat('comma-separated', {\n\t\ttype: 'string',\n\t\tvalidate: commaSeparatedFormatValidator,\n\t})\n\tajv.addFormat('paragraph', { type: 'string', validate: paragraphFormatValidator })\n\tajv.addFormat('markdown', { type: 'string', validate: markdownFormatValidator })\n\n\treturn ajv.compile(schema)\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ajv.test.js","sourceRoot":"","sources":["../../../src/lib/ajv.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ajv.test.js","sourceRoot":"","sources":["../../../src/lib/ajv.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { describe, expect, test, vi, afterEach, MockInstance } from 'vitest'\nimport { makeSchema } from '../pieces/Piece.fixtures.js'\nimport Ajv from 'ajv'\nimport ajv, {\n\tassetFormatValidator,\n\tdateFormatValidator,\n\tcommaSeparatedFormatValidator,\n\tparagraphFormatValidator,\n\tmarkdownFormatValidator\n} from './ajv.js'\n\nvi.mock('ajv')\n\nconst mocks = {\n\tAjv: vi.mocked(Ajv),\n\tcompile: vi.mocked(Ajv.prototype.compile),\n\taddFormat: vi.mocked(Ajv.prototype.addFormat),\n}\n\nconst spies: { [key: string]: MockInstance } = {}\n\ndescribe('src/lib/ajv.ts', () => {\n\tafterEach(() => {\n\t\tObject.values(mocks).forEach((mock) => {\n\t\t\tmock.mockReset()\n\t\t})\n\n\t\tObject.keys(spies).forEach((key) => {\n\t\t\tspies[key].mockRestore()\n\t\t\tdelete spies[key]\n\t\t})\n\t})\n\n\ttest('ajv', () => {\n\t\tconst schema = makeSchema()\n\n\t\tajv(schema)\n\n\t\texpect(mocks.Ajv).toHaveBeenCalledTimes(1)\n\t\texpect(mocks.compile).toHaveBeenCalledWith(schema)\n\t})\n\n\ttest('commaSeparatedFormatValidator', () => {\n\t\texpect(commaSeparatedFormatValidator('a,b,c')).toBe(true)\n\t})\n\n\ttest('dateFormatValidator', () => {\n\t\texpect(dateFormatValidator('2020-01-01')).toBe(true)\n\t\texpect(dateFormatValidator('2020-01-32')).toBe(false)\n\t})\n\n\ttest('assetFormatValidtor', () => {\n\t\texpect(assetFormatValidator('.assets/1/2/3')).toBe(true)\n\t\texpect(assetFormatValidator('./home/to/nowhere/5.jpg')).toBe(false)\n\t})\n\n\ttest('paragraphFormatValidtor', () => {\n\t\texpect(paragraphFormatValidator('hi there')).toBe(true)\n\t})\n\n\ttest('paragraphFormatValidtor', () => {\n\t\texpect(paragraphFormatValidator('hi there')).toBe(true)\n\t})\n\n\ttest('markdownFormatValidtor', () => {\n\t\texpect(markdownFormatValidator('hi there')).toBe(true)\n\t})\n})\n"]}
@@ -1 +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"}
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","sourcesContent":["import { stringify } from 'yaml'\n\nfunction addFrontMatter(\n\tmarkdown?: string | null,\n\tmetadata: { [key: string]: unknown } = {}\n): string {\n\tconst yamlString = stringify(metadata)\n\tconst content = markdown?.trim() || ''\n\n\treturn `---\\n${yamlString}---\\n${content}\\n`\n}\n\nexport { addFrontMatter }\n"]}
@@ -1 +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"}
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","sourcesContent":["import { describe, expect, test, vi, afterEach } from 'vitest'\nimport * as frontmatter from './frontmatter.js'\nimport { stringify } from 'yaml'\n\nvi.mock('yaml')\n\nconst mocks = {\n\tstringify: vi.mocked(stringify),\n}\n\ndescribe('lib/frontmatter.ts', () => {\n\tafterEach(() => {\n\t\tObject.values(mocks).forEach((mock) => {\n\t\t\tmock.mockReset()\n\t\t\tmock.mockClear()\n\t\t})\n\t})\n\n\ttest('addFrontMatter', () => {\n\t\tconst markdown = 'this is markdown'\n\t\tconst metadata = {\n\t\t\ta: 'awesome',\n\t\t\tb: 'banana',\n\t\t}\n\t\tconst yamlstring = 'yaml-front-matter'\n\n\t\tmocks.stringify.mockReturnValueOnce(yamlstring)\n\n\t\tconst combined = frontmatter.addFrontMatter(markdown, metadata)\n\t\texpect(combined).toBe(`---\\n${yamlstring}---\\n${markdown}\\n`)\n\t})\n\n\ttest('addFrontMatter with no markdown', () => {\n\t\tconst metadata = {\n\t\t\ta: 'awesome',\n\t\t\tb: 'banana',\n\t\t}\n\t\tconst yamlstring = 'yaml-front-matter'\n\n\t\tmocks.stringify.mockReturnValueOnce(yamlstring)\n\n\t\tconst combined = frontmatter.addFrontMatter(null, metadata)\n\t\texpect(combined).toBe(`---\\n${yamlstring}---\\n\\n`)\n\t})\n})\n"]}
@@ -1 +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"}
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","sourcesContent":["import { Root } from 'mdast';\nimport { remark } from 'remark'\nimport remarkFrontMatter from 'remark-frontmatter'\nimport { visit } from 'unist-util-visit'\nimport YAML from 'yaml'\n\nasync function extractFullMarkdown(\n\tcontents: string | Buffer\n): Promise<{ frontmatter: { [key: string]: unknown }; markdown: string }> {\n\tlet frontmatter = {}\n\tlet markdown = contents.toString()\n\n\tawait remark()\n\t\t.use(remarkFrontMatter)\n\t\t.use(() => (tree: Root) => {\n\t\t\tvisit(tree, 'yaml', function (node) {\n\t\t\t\tfrontmatter = YAML.parse(node.value)\n\t\t\t\tconst endPosition = node.position?.end.offset\n\t\t\t\tmarkdown = markdown.slice(endPosition).trim()\n\t\t\t})\n\t\t})\n\t\t.process(contents)\n\n\treturn { frontmatter, markdown }\n}\n\nexport { extractFullMarkdown }\n"]}
@@ -1 +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"}
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","sourcesContent":["import { describe, expect, test, afterEach } from 'vitest'\nimport * as markdown from './markdown.js'\n\nconst mocks = {}\n\ndescribe('./lib/markdown.ts', () => {\n\tafterEach(() => {\n\t\tObject.values(mocks).forEach(() => {\n\t\t\t//mock.mockReset()\n\t\t\t//mock.mockClear()\n\t\t})\n\t})\n\ntest('extract markdown and frontmatter', async () => {\n\t\tconst contents = '---\\na: awesome\\nb: banana\\n---\\nthis is markdown'\n\n\t\tconst extracted = await markdown.extractFullMarkdown(contents)\n\n\t\texpect(extracted.frontmatter).toEqual({ a: 'awesome', b: 'banana' })\n\t\texpect(extracted.markdown).toBe('this is markdown')\n\t})\n\n\ttest('should not escape footnotes', async () => {\n\t\tconst contents = `--- \na: awesome\nb: banana\n---\nHere is a footnote reference,[^1] and another.[^longnote]\n\n[^1]: Here is the footnote.\n[^longnote]: Here's one with multiple blocks.\n`\n\t\tconst extracted = await markdown.extractFullMarkdown(contents)\n\t\texpect(extracted.markdown).toBe(\n\t\t\t`Here is a footnote reference,[^1] and another.[^longnote]\n\n[^1]: Here is the footnote.\n[^longnote]: Here's one with multiple blocks.`\n\t\t)\n\t})\n})\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"google.js","sourceRoot":"","sources":["../../../src/llm/google.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"google.js","sourceRoot":"","sources":["../../../src/llm/google.ts"],"names":[],"mappings":"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","sourcesContent":["import { fileTypeFromBuffer } from 'file-type'\nimport { fileTypeFromFile } from 'file-type/node'\nimport {\n\tContentListUnion,\n\tcreatePartFromUri,\n\tGoogleGenAI,\n\tHarmCategory,\n\tHarmBlockThreshold,\n\tSafetySetting,\n} from '@google/genai'\nimport { readFile } from 'fs/promises'\nimport path from 'path'\nimport { JSONSchemaType } from 'ajv'\nimport { type PieceFrontmatter } from '../pieces/index.js'\n\nconst MODEL_NAME = 'gemini-2.5-flash'\n\nconst safetySettings: SafetySetting[] = [\n\t{\n\t\tcategory: HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT,\n\t\tthreshold: HarmBlockThreshold.BLOCK_NONE,\n\t},\n\t{\n\t\tcategory: HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT,\n\t\tthreshold: HarmBlockThreshold.BLOCK_NONE,\n\t},\n\t{\n\t\tcategory: HarmCategory.HARM_CATEGORY_CIVIC_INTEGRITY,\n\t\tthreshold: HarmBlockThreshold.BLOCK_NONE,\n\t},\n]\n\nfunction getClient(apiKey: string) {\n\treturn new GoogleGenAI({ apiKey })\n}\n\nasync function extractPartFromFile(file: string | Buffer, genAI: GoogleGenAI) {\n\tconst isBuffer = Buffer.isBuffer(file)\n\tconst fileType = isBuffer ? await fileTypeFromBuffer(file) : await fileTypeFromFile(file)\n\tconst mimeType = fileType?.mime\n\n\t// assume it's non binary\n\tif (!mimeType) {\n\t\tconst fileContent = isBuffer ? file.toString() : await readFile(file, 'utf-8')\n\t\tconst fileName = isBuffer ? 'string buffer of downloaded file' : path.basename(file)\n\t\tconst data = [\n\t\t\t`---[start] embedding ${fileName}---`,\n\t\t\tfileContent,\n\t\t\t`---[end] embedding of ${fileName}---`,\n\t\t]\n\n\t\treturn data.join('\\n')\n\t} else {\n\t\tconst uploadedFile = await genAI.files.upload({\n\t\t\tfile: isBuffer ? new Blob([file]) : file,\n\t\t\tconfig: {\n\t\t\t\tmimeType,\n\t\t\t},\n\t\t})\n\n\t\t// Wait for the file to be processed.\n\t\tlet getFile = await genAI.files.get({ name: uploadedFile.name as string })\n\n\t\twhile (getFile.state === 'PROCESSING') {\n\t\t\tgetFile = await genAI.files.get({ name: uploadedFile.name as string })\n\n\t\t\tawait new Promise((resolve) => {\n\t\t\t\tsetTimeout(resolve, 5000)\n\t\t\t})\n\t\t}\n\n\t\tif (uploadedFile.state === 'FAILED') {\n\t\t\tthrow new Error('File processing failed.')\n\t\t}\n\n\t\tif (uploadedFile.uri && uploadedFile.mimeType) {\n\t\t\tconst fileContent = createPartFromUri(uploadedFile.uri, uploadedFile.mimeType)\n\t\t\treturn fileContent\n\t\t}\n\t}\n\n\tthrow new Error('File processing failed.')\n}\n\nasync function pieceFrontMatterFromPrompt(\n\tapiKey: string,\n\tschema: JSONSchemaType<PieceFrontmatter>,\n\tprompt: string,\n\tfiles?: Array<string | Buffer>\n) {\n\tconst genAI = getClient(apiKey)\n\n\tconst content: ContentListUnion = [prompt]\n\n\tif (files) {\n\t\tfor (const file of files) {\n\t\t\tconst part = await extractPartFromFile(file, genAI)\n\t\t\tcontent.push(part)\n\t\t}\n\t}\n\n\tconst result = await genAI.models.generateContent({\n\t\tmodel: MODEL_NAME,\n\t\tcontents: content,\n\t\tconfig: {\n\t\t\tresponseMimeType: 'application/json',\n\t\t\tsafetySettings: safetySettings,\n\t\t\tresponseJsonSchema: schema,\n\t\t\tsystemInstruction: `you are an assistant that helps generate JSON metadata for a record that will be added to a collection of similar records. \n\nif you are provided pdf attachments, images or other text based files, please prioritize them as inputs for generating metadata for the record. \n\nyou 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.`,\n\t\t},\n\t})\n\n\tconst metadata = result.text || '{}'\n\tconst frontmatter = JSON.parse(metadata) as PieceFrontmatter\n\n\treturn Object.fromEntries(\n\t\tObject.entries(frontmatter).filter(([, value]) => value !== null || value === '')\n\t)\n}\n\nexport { pieceFrontMatterFromPrompt }\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"google.test.js","sourceRoot":"","sources":["../../../src/llm/google.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"google.test.js","sourceRoot":"","sources":["../../../src/llm/google.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { describe, expect, vi, afterEach, test, MockInstance } from 'vitest'\nimport { pieceFrontMatterFromPrompt } from './google.js'\nimport {\n\tGoogleGenAI,\n\tPart,\n\tcreatePartFromUri,\n\tGenerateContentResponse,\n\tFileState,\n} from '@google/genai'\nimport { fileTypeFromBuffer, fileTypeFromFile } from 'file-type'\nimport { readFile } from 'fs/promises'\nimport { JSONSchemaType } from 'ajv'\nimport { PieceFrontmatter } from '../pieces/index.js'\n\n// Mock schema created locally to remove dependency on piece.fixtures.ts\nconst makeSchema = (\n\tname: string\n): JSONSchemaType<PieceFrontmatter> => {\n\treturn {\n\t\ttype: 'object',\n\t\ttitle: name,\n\t\tproperties: {\n\t\t\ttitle: { type: 'string', examples: ['title'] },\n\t\t\tkeywords: { type: 'string', nullable: true },\n\t\t},\n\t\trequired: ['title'],\n\t\tadditionalProperties: false,\n\t} as unknown as JSONSchemaType<PieceFrontmatter>\n}\n\nvi.mock('@luzzle/core')\nvi.mock('file-type')\nvi.mock('fs/promises')\nvi.mock('@google/genai', () => {\n\tconst Gemini = vi.fn()\n\n\tGemini.prototype.models = vi.fn()\n\tGemini.prototype.files = vi.fn()\n\tGemini.prototype.models.generateContent = vi.fn()\n\tGemini.prototype.files.upload = vi.fn()\n\tGemini.prototype.files.get = vi.fn()\n\n\treturn {\n\t\tGoogleGenAI: Gemini,\n\t\tHarmCategory: {},\n\t\tHarmBlockThreshold: {},\n\t\tcreatePartFromUri: vi.fn(),\n\t}\n})\n\nconst mocks = {\n\tgenerateContent: vi.mocked(GoogleGenAI.prototype.models.generateContent),\n\tuploadFile: vi.mocked(GoogleGenAI.prototype.files.upload),\n\tgetFile: vi.mocked(GoogleGenAI.prototype.files.get),\n\tfileTypeFromFile: vi.mocked(fileTypeFromFile),\n\tfileTypeFromBuffer: vi.mocked(fileTypeFromBuffer),\n\tcreatePartFromUri: vi.mocked(createPartFromUri),\n\treadFile: vi.mocked(readFile),\n}\n\nconst spies: { [key: string]: MockInstance } = {}\n\ndescribe('lib/llm/google.ts', () => {\n\tafterEach(() => {\n\t\tObject.values(mocks).forEach((mock) => {\n\t\t\tmock.mockReset()\n\t\t})\n\n\t\tObject.keys(spies).forEach((key) => {\n\t\t\tspies[key].mockRestore()\n\t\t\tdelete spies[key]\n\t\t})\n\t})\n\n\ttest('pieceFrontMatterFromPrompt', async () => {\n\t\tconst apiKey = 'apiKey'\n\t\tconst schema = makeSchema('books')\n\t\tconst prompt = 'prompt'\n\t\tconst frontmatter = { field: 'value' }\n\t\tconst responseText = JSON.stringify(frontmatter)\n\n\t\tmocks.generateContent.mockResolvedValueOnce({\n\t\t\ttext: responseText,\n\t\t} as GenerateContentResponse)\n\n\t\tconst generatedFrontmatter = await pieceFrontMatterFromPrompt(apiKey, schema, prompt)\n\n\t\texpect(mocks.generateContent).toHaveBeenCalledTimes(1)\n\t\texpect(mocks.generateContent).toHaveBeenCalledWith({\n\t\t\tcontents: expect.arrayContaining([prompt]),\n\t\t\tconfig: expect.any(Object),\n\t\t\tmodel: expect.any(String),\n\t\t})\n\t\texpect(generatedFrontmatter).toEqual(frontmatter)\n\t})\n\n\ttest('pieceFrontMatterFromPrompt strips empty fields', async () => {\n\t\tconst apiKey = 'apiKey'\n\t\tconst schema = makeSchema('books')\n\t\tconst prompt = 'prompt'\n\t\tconst frontmatter = { field: 'value', field2: null, field3: undefined }\n\t\tconst responseText = JSON.stringify(frontmatter)\n\n\t\tmocks.generateContent.mockResolvedValueOnce({\n\t\t\ttext: responseText,\n\t\t} as GenerateContentResponse)\n\n\t\tconst generatedFrontmatter = await pieceFrontMatterFromPrompt(apiKey, schema, prompt)\n\n\t\texpect(mocks.generateContent).toHaveBeenCalledTimes(1)\n\t\texpect(mocks.generateContent).toHaveBeenCalledWith({\n\t\t\tcontents: expect.arrayContaining([prompt]),\n\t\t\tconfig: expect.any(Object),\n\t\t\tmodel: expect.any(String),\n\t\t})\n\t\texpect(generatedFrontmatter).toEqual({ field: 'value' })\n\t})\n\n\ttest('pieceFrontMatterFromPrompt returns on empty result', async () => {\n\t\tconst apiKey = 'apiKey'\n\t\tconst schema = makeSchema('books')\n\t\tconst prompt = 'prompt'\n\t\tconst responseText = undefined\n\n\t\tmocks.generateContent.mockResolvedValueOnce({\n\t\t\ttext: responseText,\n\t\t} as GenerateContentResponse)\n\n\t\tconst generatedFrontmatter = await pieceFrontMatterFromPrompt(apiKey, schema, prompt)\n\n\t\texpect(mocks.generateContent).toHaveBeenCalledTimes(1)\n\t\texpect(mocks.generateContent).toHaveBeenCalledWith({\n\t\t\tcontents: expect.arrayContaining([prompt]),\n\t\t\tconfig: expect.any(Object),\n\t\t\tmodel: expect.any(String),\n\t\t})\n\t\texpect(generatedFrontmatter).toEqual({})\n\t})\n\n\ttest('generatePieceFrontmatter with a binary file', async () => {\n\t\tconst apiKey = 'apiKey'\n\t\tconst schema = makeSchema('books')\n\t\tconst prompt = 'prompt'\n\t\tconst file = '/path/to/file.pdf'\n\t\tconst uri = 'gs://another/path/to/file.pdf'\n\t\tconst name = 'file.pdf'\n\t\tconst mimeType = 'application/pdf'\n\t\tconst frontmatter = { field: 'value' }\n\t\tconst responseText = JSON.stringify(frontmatter)\n\t\tconst fileContent = 'fileContent' as Part\n\n\t\tvi.useFakeTimers()\n\n\t\tmocks.generateContent.mockResolvedValueOnce({\n\t\t\ttext: responseText,\n\t\t} as GenerateContentResponse)\n\t\tmocks.uploadFile.mockResolvedValue({ name, uri, mimeType })\n\t\tmocks.getFile.mockResolvedValueOnce({ state: 'PROCESSING' as FileState })\n\t\tmocks.getFile.mockResolvedValueOnce({ uri, mimeType, state: 'ACTIVE' as FileState })\n\t\tmocks.fileTypeFromFile.mockResolvedValueOnce({ mime: mimeType, ext: 'pdf' })\n\t\tmocks.createPartFromUri.mockReturnValue(fileContent)\n\n\t\tvi.runAllTimersAsync()\n\n\t\tconst generatedFrontmatter = await pieceFrontMatterFromPrompt(apiKey, schema, prompt, [file])\n\n\t\texpect(mocks.uploadFile).toHaveBeenCalledWith({ file, config: { mimeType } })\n\t\texpect(mocks.getFile).toHaveBeenCalledWith({ name })\n\t\texpect(mocks.createPartFromUri).toHaveBeenCalledTimes(1)\n\t\texpect(mocks.generateContent).toHaveBeenCalledTimes(1)\n\t\texpect(mocks.generateContent).toHaveBeenCalledWith({\n\t\t\tcontents: expect.arrayContaining([prompt, fileContent]),\n\t\t\tconfig: expect.any(Object),\n\t\t\tmodel: expect.any(String),\n\t\t})\n\t\texpect(generatedFrontmatter).toEqual(frontmatter)\n\n\t\tvi.useRealTimers()\n\t})\n\n\ttest('generatePieceFrontmatter with a text file', async () => {\n\t\tconst apiKey = 'apiKey'\n\t\tconst schema = makeSchema('books')\n\t\tconst prompt = 'prompt'\n\t\tconst file = '/path/to/file.html'\n\t\tconst frontmatter = { field: 'value' }\n\t\tconst responseText = JSON.stringify(frontmatter)\n\t\tconst fileContent = 'fileContent'\n\n\t\tmocks.generateContent.mockResolvedValueOnce({\n\t\t\ttext: responseText,\n\t\t} as GenerateContentResponse)\n\t\tmocks.fileTypeFromFile.mockResolvedValueOnce(undefined)\n\t\tmocks.readFile.mockResolvedValueOnce(fileContent)\n\n\t\tconst generatedFrontmatter = await pieceFrontMatterFromPrompt(apiKey, schema, prompt, [file])\n\n\t\texpect(mocks.generateContent).toHaveBeenCalledTimes(1)\n\t\texpect(mocks.generateContent).toHaveBeenCalledWith({\n\t\t\tcontents: expect.arrayContaining([prompt, expect.stringContaining(fileContent)]),\n\t\t\tconfig: expect.any(Object),\n\t\t\tmodel: expect.any(String),\n\t\t})\n\t\texpect(generatedFrontmatter).toEqual(frontmatter)\n\n\t\tvi.useRealTimers()\n\t})\n\n\ttest('generatePieceFrontmatter with a text Buffer', async () => {\n\t\tconst apiKey = 'apiKey'\n\t\tconst schema = makeSchema('books')\n\t\tconst prompt = 'prompt'\n\t\tconst frontmatter = { field: 'value' }\n\t\tconst responseText = JSON.stringify(frontmatter)\n\t\tconst buffer = Buffer.from('buffer data')\n\n\t\tmocks.generateContent.mockResolvedValueOnce({\n\t\t\ttext: responseText,\n\t\t} as GenerateContentResponse)\n\t\tmocks.fileTypeFromBuffer.mockResolvedValueOnce(undefined)\n\n\t\tconst generatedFrontmatter = await pieceFrontMatterFromPrompt(apiKey, schema, prompt, [buffer])\n\n\t\texpect(mocks.generateContent).toHaveBeenCalledTimes(1)\n\t\texpect(mocks.generateContent).toHaveBeenCalledWith({\n\t\t\tcontents: expect.arrayContaining([prompt, expect.stringContaining(buffer.toString())]),\n\t\t\tconfig: expect.any(Object),\n\t\t\tmodel: expect.any(String),\n\t\t})\n\n\t\texpect(generatedFrontmatter).toEqual(frontmatter)\n\t})\n\n\ttest('generatePieceFrontmatter with a binary Buffer', async () => {\n\t\tconst apiKey = 'apiKey'\n\t\tconst schema = makeSchema('books')\n\t\tconst prompt = 'prompt'\n\t\tconst name = 'file.pdf'\n\t\tconst uri = 'gs://another/path/to/file.pdf'\n\t\tconst mimeType = 'application/pdf'\n\t\tconst frontmatter = { field: 'value' }\n\t\tconst responseText = JSON.stringify(frontmatter)\n\t\tconst buffer = Buffer.from('buffer data')\n\t\tconst blob = new Blob([buffer])\n\t\tconst fileContent = 'fileContent' as Part\n\n\t\tmocks.generateContent.mockResolvedValueOnce({\n\t\t\ttext: responseText,\n\t\t} as GenerateContentResponse)\n\t\tmocks.uploadFile.mockResolvedValue({ name, uri, mimeType })\n\t\tmocks.getFile.mockResolvedValue({ uri, mimeType, state: 'ACTIVE' as FileState })\n\t\tmocks.fileTypeFromBuffer.mockResolvedValueOnce({ mime: mimeType, ext: 'pdf' })\n\t\tmocks.createPartFromUri.mockReturnValue(fileContent)\n\n\t\tconst generatedFrontmatter = await pieceFrontMatterFromPrompt(apiKey, schema, prompt, [buffer])\n\n\t\texpect(mocks.uploadFile).toHaveBeenCalledWith({ file: blob, config: { mimeType } })\n\t\texpect(mocks.getFile).toHaveBeenCalledWith({ name })\n\t\texpect(mocks.generateContent).toHaveBeenCalledTimes(1)\n\t\texpect(mocks.generateContent).toHaveBeenCalledWith({\n\t\t\tcontents: expect.arrayContaining([prompt, fileContent]),\n\t\t\tconfig: expect.any(Object),\n\t\t\tmodel: expect.any(String),\n\t\t})\n\n\t\texpect(generatedFrontmatter).toEqual(frontmatter)\n\t})\n\n\ttest('generatePieceFrontmatter binary file fails to process upload', async () => {\n\t\tconst apiKey = 'apiKey'\n\t\tconst schema = makeSchema('books')\n\t\tconst prompt = 'prompt'\n\t\tconst file = '/path/to/file.pdf'\n\t\tconst name = 'file.pdf'\n\t\tconst mimeType = 'application/pdf'\n\t\tconst frontmatter = { field: 'value' }\n\t\tconst responseText = JSON.stringify(frontmatter)\n\n\t\tmocks.generateContent.mockResolvedValueOnce({\n\t\t\ttext: responseText,\n\t\t} as GenerateContentResponse)\n\t\tmocks.uploadFile.mockResolvedValue({ name, state: 'FAILED' as FileState })\n\t\tmocks.getFile.mockResolvedValue({})\n\t\tmocks.fileTypeFromFile.mockResolvedValueOnce({ mime: mimeType, ext: 'pdf' })\n\n\t\tconst generating = pieceFrontMatterFromPrompt(apiKey, schema, prompt, [file])\n\n\t\texpect(generating).rejects.toThrowError()\n\t})\n\n\ttest('generatePieceFrontmatter file fails to extract', async () => {\n\t\tconst apiKey = 'apiKey'\n\t\tconst schema = makeSchema('books')\n\t\tconst prompt = 'prompt'\n\t\tconst file = '/path/to/file.pdf'\n\t\tconst name = 'file.pdf'\n\t\tconst mimeType = 'application/pdf'\n\t\tconst frontmatter = { field: 'value' }\n\t\tconst responseText = JSON.stringify(frontmatter)\n\n\t\tmocks.generateContent.mockResolvedValueOnce({\n\t\t\ttext: responseText,\n\t\t} as GenerateContentResponse)\n\t\tmocks.uploadFile.mockResolvedValue({ name, uri: undefined })\n\t\tmocks.getFile.mockResolvedValue({})\n\t\tmocks.fileTypeFromFile.mockResolvedValueOnce({ mime: mimeType, ext: 'pdf' })\n\n\t\tconst generating = pieceFrontMatterFromPrompt(apiKey, schema, prompt, [file])\n\n\t\texpect(generating).rejects.toThrowError()\n\t})\n})\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Piece.fixtures.js","sourceRoot":"","sources":["../../../src/pieces/Piece.fixtures.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Piece.fixtures.js","sourceRoot":"","sources":["../../../src/pieces/Piece.fixtures.ts"],"names":[],"mappings":"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","sourcesContent":["import { ValidateFunction } from 'ajv'\nimport { LuzzleSelectable } from '../database/tables/index.js'\nimport { PieceFrontmatter, PieceFrontmatterSchema } from './utils/frontmatter.js'\nimport { PieceMarkdown } from './utils/markdown.js'\nimport LuzzleStorage from '../storage/abstract.js'\nimport Piece from './Piece.js'\nimport { vi } from 'vitest'\nimport { PieceManagerSelect } from '../database/tables/pieces_manager.schema.js'\n\nconst sample = {\n\tnote_markdown: 'sampleNote',\n\tfile_path: 'samplePath.md',\n\tid: 'sampleId',\n\ttype: 'table',\n\tdate_added: new Date().getTime(),\n\tdate_updated: new Date().getTime(),\n\tfrontmatter_json: JSON.stringify({ title: 'sampleTitle' }),\n} as LuzzleSelectable<'pieces_items'>\n\nexport type PieceValidator = ValidateFunction<PieceFrontmatter>\n\nexport function makeValidator(): PieceValidator {\n\tconst validate = () => true\n\treturn validate as unknown as PieceValidator\n}\n\nexport type MockSchemaProperty = {\n\ttype?: string\n\tnullable?: boolean\n\titems?: MockSchemaProperty\n\tformat?: string\n\tpattern?: string\n\tenum?: string[] | number[]\n\tproperties?: Record<string, MockSchemaProperty>\n\trequired?: string[]\n\texamples?: unknown[]\n\tdefault?: unknown\n}\n\nexport function makeSchema(\n\tpropertiesOrName?: string | Record<string, MockSchemaProperty>\n): PieceFrontmatterSchema<PieceFrontmatter> {\n\tconst name = typeof propertiesOrName === 'string' ? propertiesOrName : 'table'\n\tconst properties = typeof propertiesOrName === 'object' ? propertiesOrName : {}\n\n\treturn {\n\t\ttype: 'object',\n\t\ttitle: name,\n\t\tproperties: {\n\t\t\ttitle: { type: 'string', examples: ['title'] },\n\t\t\tkeywords: { type: 'string', nullable: true, examples: ['keyword1'] },\n\t\t\tsubtitle: { type: 'string', nullable: true, examples: ['subtitle'] },\n\t\t\t...properties,\n\t\t},\n\t\trequired: ['title'],\n\t\tadditionalProperties: true,\n\t} as unknown as PieceFrontmatterSchema<PieceFrontmatter>\n}\n\nexport function makeStorage(root = 'root'): LuzzleStorage {\n\treturn {\n\t\troot,\n\t\ttype: 'fs',\n\t\tparseArgPath: vi.fn((p) => p),\n\t\treadFile: vi.fn(),\n\t\twriteFile: vi.fn(),\n\t\tgetFilesIn: vi.fn(),\n\t\texists: vi.fn(),\n\t\tdelete: vi.fn(),\n\t\tstat: vi.fn(),\n\t\tcreateReadStream: vi.fn(),\n\t\tcreateWriteStream: vi.fn(),\n\t\tmakeDirectory: vi.fn(),\n\t} as unknown as LuzzleStorage\n}\n\nexport function makeFrontmatterSample(\n\toverrides: Record<string, unknown> = {}\n): PieceFrontmatter {\n\treturn {\n\t\ttitle: 'sampleTitle',\n\t\t...overrides,\n\t}\n}\n\nexport function makeMarkdownSample<F extends PieceFrontmatter>(\n\tfilePathOrOptions: string | Partial<PieceMarkdown<F>> = 'samplePath.md',\n\tpiece = 'table',\n\tnote = 'sampleNote',\n\tfrontmatter?: F\n): PieceMarkdown<F> {\n\tif (typeof filePathOrOptions === 'object') {\n\t\treturn {\n\t\t\tfilePath: 'samplePath.md',\n\t\t\tpiece: 'table',\n\t\t\tnote: 'sampleNote',\n\t\t\tfrontmatter: makeFrontmatterSample() as F,\n\t\t\t...filePathOrOptions,\n\t\t}\n\t}\n\n\treturn {\n\t\tfilePath: filePathOrOptions,\n\t\tpiece,\n\t\tnote,\n\t\tfrontmatter: (frontmatter || makeFrontmatterSample()) as F,\n\t}\n}\n\nexport function makePieceItemSelectable(\n\toverrides?: Partial<LuzzleSelectable<'pieces_items'>>\n): LuzzleSelectable<'pieces_items'> {\n\treturn {\n\t\t...sample,\n\t\t...overrides,\n\t}\n}\n\nexport class PieceMock extends Piece<PieceFrontmatter> {\n\tconstructor(\n\t\tname: string = 'table',\n\t\tstorage: LuzzleStorage = makeStorage(),\n\t\tschema: PieceFrontmatterSchema<PieceFrontmatter> = makeSchema(name)\n\t) {\n\t\tsuper(name, storage, schema)\n\t}\n}\n\nexport function makePieceMock() {\n\treturn PieceMock\n}\n\nexport function makeRegisteredPiece(overrides?: Partial<PieceManagerSelect>) {\n\tconst { schema, ...rest } = overrides || {}\n\treturn {\n\t\tid: `id-${Math.random()}`,\n\t\tdate_added: new Date().getTime(),\n\t\tdate_updated: null,\n\t\tname: 'table',\n\t\tschema: makeSchema(typeof schema === 'string' ? schema : 'table'),\n\t\t...rest,\n\t}\n}\n"]}
@@ -133,6 +133,9 @@ class Piece {
133
133
  }
134
134
  return { action: 'updated', file };
135
135
  }
136
+ if (!options?.dryRun) {
137
+ await updateCache(db, markdown.filePath, newHash);
138
+ }
136
139
  return { action: 'skipped', file };
137
140
  }
138
141
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"Piece.js","sourceRoot":"","sources":["../../../src/pieces/Piece.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Piece.js","sourceRoot":"","sources":["../../../src/pieces/Piece.ts"],"names":[],"mappings":"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","sourcesContent":["import { updateCache, addCache, getCache } from './cache.js'\nimport { cpus } from 'os'\nimport path from 'path'\nimport slugify from '@sindresorhus/slugify'\nimport { Readable } from 'stream'\nimport {\n\tdatabaseValueToPieceFrontmatterValue,\n\tgetPieceFrontmatterSchemaFields,\n\tinitializePieceFrontMatter,\n\tPieceFrontmatter,\n\tPieceFrontmatterSchema,\n\tPieceFrontmatterSchemaField,\n\tPieceFrontMatterValue,\n} from './utils/frontmatter.js'\nimport {\n\tfindFrontmatterField,\n\tsetFrontmatterValue,\n\tunsetFrontmatterValue,\n\tgetFrontmatterValue,\n} from './utils/frontmatter.path.js'\nimport LuzzleStorage from '../storage/abstract.js'\nimport { makePieceMarkdown, makePieceMarkdownString, PieceMarkdown } from './utils/markdown.js'\nimport {\n\tisAttachableStream,\n\tcalculateHashFromFile,\n\tmakePieceAttachment,\n\tmakePieceValue,\n} from './utils/piece.js'\nimport { LuzzleDatabase, LuzzleSelectable } from '../database/tables/index.js'\nimport compile from '../lib/ajv.js'\nimport {\n\tgetValidatePieceItemErrors,\n\tmakePieceItemInsertable,\n\tmakePieceItemUpdatable,\n\tvalidatePieceItem,\n} from './item.js'\nimport { extractFullMarkdown } from '../lib/markdown.js'\nimport { deleteItem, insertItem, selectItem, selectItems, updateItem } from './items.js'\nimport { LUZZLE_PIECE_FILE_EXTENSION } from './assets.js'\n\nexport interface InterfacePiece<F extends PieceFrontmatter> {\n\tnew(directory: string, pieceName: string, schemaOverride?: PieceFrontmatterSchema<F>): Piece<F>\n}\n\nexport type PiecePruneResult =\n\t| {\n\t\taction: 'pruned'\n\t\tfile: string\n\t\terror?: false\n\t}\n\t| {\n\t\tfile: string\n\t\terror: true\n\t\tmessage: string\n\t}\n\nexport type PieceSyncResult =\n\t| {\n\t\taction: 'added' | 'updated' | 'skipped'\n\t\tfile: string\n\t\terror?: false\n\t}\n\t| {\n\t\tfile: string\n\t\terror: true\n\t\tmessage: string\n\t}\n\nclass Piece<F extends PieceFrontmatter> {\n\tprivate _validator?: ReturnType<typeof compile<F>>\n\tprivate _schema: PieceFrontmatterSchema<F>\n\tprivate _storage: LuzzleStorage\n\tprivate _pieceName: string\n\tprivate _fields?: Array<PieceFrontmatterSchemaField>\n\n\tconstructor(pieceName: string, storage: LuzzleStorage, schema: PieceFrontmatterSchema<F>) {\n\t\tthis._storage = storage\n\t\tthis._schema = schema\n\t\tthis._pieceName = pieceName\n\n\t\tif (this._pieceName !== this._schema.title) {\n\t\t\tthrow new Error(`${pieceName} does not match the schema title: ${this._schema.title}`)\n\t\t}\n\t}\n\n\tasync create(directory: string, name: string): Promise<PieceMarkdown<F>> {\n\t\tconst slug = slugify(name)\n\t\tconst filename = `${slug}.${this.type}.${LUZZLE_PIECE_FILE_EXTENSION}`\n\t\tconst file = path.join(directory, filename)\n\t\tconst exists = await this._storage.exists(file)\n\n\t\tif (exists) {\n\t\t\tthrow new Error(`file already exists: ${file}`)\n\t\t}\n\n\t\tconst frontmatter = initializePieceFrontMatter(this._schema, true) as F\n\t\treturn makePieceMarkdown(file, this._pieceName, undefined, frontmatter)\n\t}\n\n\tasync delete(file: string) {\n\t\tconst exists = await this._storage.exists(file)\n\n\t\tif (exists) {\n\t\t\tawait this._storage.delete(file)\n\t\t\treturn\n\t\t}\n\n\t\tthrow new Error(`${file} does not exist`)\n\t}\n\n\tget type() {\n\t\treturn this._pieceName\n\t}\n\n\tget schema() {\n\t\treturn this._schema\n\t}\n\n\tprotected get validator(): ReturnType<typeof compile<F>> {\n\t\tthis._validator = this._validator || compile<F>(this._schema)\n\t\treturn this._validator\n\t}\n\n\tget fields() {\n\t\tthis._fields = this._fields || getPieceFrontmatterSchemaFields(this._schema)\n\t\treturn this._fields\n\t}\n\n\tasync isOutdated(file: string, db: LuzzleDatabase): Promise<boolean> {\n\t\tconst fileStat = await this._storage.stat(file).catch(() => null)\n\n\t\tif (fileStat) {\n\t\t\tconst cache = await getCache(db, file)\n\t\t\tconst cachedDate = cache?.date_updated || cache?.date_added\n\n\t\t\treturn !cachedDate || fileStat.last_modified.getTime() > cachedDate\n\t\t}\n\n\t\tthrow new Error(`${file} does not exist`)\n\t}\n\n\tvalidate(markdown: PieceMarkdown<F>): { isValid: true } | { isValid: false; errors: string[] } {\n\t\tconst valid = validatePieceItem(markdown, this.validator)\n\n\t\tif (valid) {\n\t\t\treturn { isValid: true }\n\t\t} else {\n\t\t\tconst errors = getValidatePieceItemErrors(this.validator)\n\t\t\treturn { isValid: false, errors }\n\t\t}\n\t}\n\n\tasync get(file: string): Promise<PieceMarkdown<F>> {\n\t\tconst exists = await this._storage.exists(file)\n\n\t\tif (exists) {\n\t\t\tconst contents = await this._storage.readFile(file, 'text')\n\t\t\tconst data = await extractFullMarkdown(contents)\n\n\t\t\tif (!/^\\//.test(file)) {\n\t\t\t\treturn makePieceMarkdown(file, this._pieceName, data.markdown, data.frontmatter as F)\n\t\t\t}\n\t\t}\n\n\t\tthrow new Error(`${file} does not exist`)\n\t}\n\n\tasync write(markdown: PieceMarkdown<F>): Promise<void> {\n\t\tconst validated = this.validate(markdown)\n\n\t\tif (validated.isValid) {\n\t\t\tconst markdownString = makePieceMarkdownString(markdown)\n\t\t\tawait this._storage.writeFile(markdown.filePath, markdownString)\n\t\t} else {\n\t\t\tthrow new Error(\n\t\t\t\t`Could not write ${markdown.filePath} due to\\n\\n: ${validated.errors.join('\\n')}`\n\t\t\t)\n\t\t}\n\t}\n\n\tasync prune(db: LuzzleDatabase, files: string[], options?: { dryRun: boolean }) {\n\t\tconst dbPieces = await selectItems(db, { type: this._pieceName })\n\t\tconst diskPiecesSet = new Set<string>(files)\n\t\tconst missingPieces = dbPieces.filter((piece) => !diskPiecesSet.has(piece.file_path))\n\t\tconst missingFiles = missingPieces.map((piece) => piece.file_path)\n\t\tconst stream = Readable.from(missingFiles)\n\n\t\treturn stream.map(\n\t\t\tasync (file: string): Promise<PiecePruneResult> => {\n\t\t\t\ttry {\n\t\t\t\t\tif (!options?.dryRun) {\n\t\t\t\t\t\tawait deleteItem(db, file)\n\t\t\t\t\t}\n\t\t\t\t\treturn { action: 'pruned', file }\n\t\t\t\t} catch (error) {\n\t\t\t\t\treturn { file, error: true, message: `error pruning piece: ${error}` }\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ concurrency: cpus().length }\n\t\t) as Readable & AsyncIterable<PiecePruneResult>\n\t}\n\n\tasync sync(db: LuzzleDatabase, files: string[], options?: { dryRun?: boolean; force?: boolean }) {\n\t\tconst stream = Readable.from(files)\n\n\t\treturn stream.map(\n\t\t\tasync (file: string): Promise<PieceSyncResult> => {\n\t\t\t\ttry {\n\t\t\t\t\tconst markdown = await this.get(file)\n\t\t\t\t\tconst dbPiece = await selectItem(db, markdown.filePath)\n\n\t\t\t\t\tif (dbPiece) {\n\t\t\t\t\t\tconst readStream = this._storage.createReadStream(markdown.filePath)\n\t\t\t\t\t\tconst newHash = await calculateHashFromFile(readStream)\n\t\t\t\t\t\tconst cache = await getCache(db, markdown.filePath)\n\t\t\t\t\t\tif (options?.force || cache?.content_hash !== newHash) {\n\t\t\t\t\t\t\tif (!options?.dryRun) {\n\t\t\t\t\t\t\t\tawait this.syncMarkdownUpdate(db, markdown, dbPiece)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn { action: 'updated', file }\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (!options?.dryRun) {\n\t\t\t\t\t\t\tawait updateCache(db, markdown.filePath, newHash)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn { action: 'skipped', file }\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (!options?.dryRun) {\n\t\t\t\t\t\t\tawait this.syncMarkdownAdd(db, markdown)\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn { action: 'added', file }\n\t\t\t\t\t}\n\t\t\t\t} catch (error) {\n\t\t\t\t\treturn { file, error: true, message: `error syncing piece: ${error}` }\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ concurrency: cpus().length }\n\t\t) as Readable & AsyncIterable<PieceSyncResult>\n\t}\n\n\tasync syncMarkdownAdd(db: LuzzleDatabase, markdown: PieceMarkdown<F>): Promise<void> {\n\t\tconst createInput = makePieceItemInsertable(this._pieceName, markdown, this._schema)\n\t\tconst readStream = this._storage.createReadStream(markdown.filePath)\n\t\tconst hash = await calculateHashFromFile(readStream)\n\n\t\tawait insertItem(db, createInput)\n\t\tawait addCache(db, markdown.filePath, hash)\n\t}\n\n\tasync syncMarkdown(db: LuzzleDatabase, markdown: PieceMarkdown<F>): Promise<void> {\n\t\tconst dbPiece = await selectItem(db, markdown.filePath)\n\n\t\tif (dbPiece) {\n\t\t\tawait this.syncMarkdownUpdate(db, markdown, dbPiece)\n\t\t} else {\n\t\t\tawait this.syncMarkdownAdd(db, markdown)\n\t\t}\n\t}\n\n\tasync syncMarkdownUpdate(\n\t\tdb: LuzzleDatabase,\n\t\tmarkdown: PieceMarkdown<F>,\n\t\tdata: LuzzleSelectable<'pieces_items'>\n\t): Promise<void> {\n\t\tconst updateInput = makePieceItemUpdatable(markdown, this._schema, data, false)\n\t\tawait updateItem(db, markdown.filePath, updateInput)\n\t\tconst readStream = this._storage.createReadStream(markdown.filePath)\n\t\tconst hash = await calculateHashFromFile(readStream)\n\n\t\tawait updateCache(db, data.file_path, hash)\n\t}\n\n\ttoMarkdown(data: LuzzleSelectable<'pieces_items'>): PieceMarkdown<F> {\n\t\tconst frontmatter = JSON.parse(data.frontmatter_json)\n\t\tconst frontmatterJson: Record<string, unknown> = {}\n\t\tconst dataKeys = Object.keys(frontmatter)\n\t\tconst fields = getPieceFrontmatterSchemaFields(this._schema).filter(\n\t\t\t(f): f is PieceFrontmatterSchemaField & { name: string } =>\n\t\t\t\t!!f.name && dataKeys.includes(f.name)\n\t\t)\n\n\t\tfields.forEach((field) => {\n\t\t\tconst name = field.name\n\t\t\tconst value = frontmatter[name]\n\n\t\t\tfrontmatterJson[name] = databaseValueToPieceFrontmatterValue(value, field)\n\t\t})\n\n\t\treturn makePieceMarkdown(data.file_path, data.type, data.note_markdown, frontmatterJson as F)\n\t}\n\n\tgetField(markdown: PieceMarkdown<F>, fieldPath: string): PieceFrontMatterValue | undefined {\n\t\treturn getFrontmatterValue(markdown.frontmatter, fieldPath)\n\t}\n\n\tasync setFields(\n\t\tmarkdown: PieceMarkdown<F>,\n\t\tfields: Record<string, unknown>\n\t): Promise<PieceMarkdown<F>> {\n\t\tlet updatedMarkdown = markdown\n\n\t\tfor (const fieldname in fields) {\n\t\t\tupdatedMarkdown = await this.setField(updatedMarkdown, fieldname, fields[fieldname])\n\t\t}\n\n\t\treturn updatedMarkdown\n\t}\n\n\tasync removeFields(\n\t\tmarkdown: PieceMarkdown<F>,\n\t\tfields: string[]\n\t): Promise<PieceMarkdown<Omit<F, keyof F>>> {\n\t\tlet updatedMarkdown = markdown as unknown as PieceMarkdown<Omit<F, keyof F>>\n\n\t\tfor (const field of fields) {\n\t\t\tupdatedMarkdown = (await this.removeField(\n\t\t\t\tupdatedMarkdown as unknown as PieceMarkdown<F>,\n\t\t\t\tfield\n\t\t\t)) as unknown as PieceMarkdown<Omit<F, keyof F>>\n\t\t}\n\n\t\treturn updatedMarkdown\n\t}\n\n\tasync setField(\n\t\tmarkdown: PieceMarkdown<F>,\n\t\tfieldPath: string,\n\t\tvalue: unknown\n\t): Promise<PieceMarkdown<F>> {\n\t\tconst pieceField = findFrontmatterField(this.fields, fieldPath)\n\n\t\tif (!pieceField) {\n\t\t\tthrow new Error(`${fieldPath} is not a field in ${this._pieceName} ${markdown.filePath}`)\n\t\t}\n\n\t\tconst isArray = pieceField.type === 'array'\n\t\tconst itemField = isArray ? { ...pieceField.items, name: pieceField.name } : pieceField\n\t\tconst values = Array.isArray(value) ? value : [value]\n\n\t\tconst updatedFrontmatter = structuredClone(markdown.frontmatter)\n\n\t\ttry {\n\t\t\tif (isArray) {\n\t\t\t\tconst current = getFrontmatterValue(updatedFrontmatter, fieldPath)\n\t\t\t\tif (!Array.isArray(current)) {\n\t\t\t\t\tsetFrontmatterValue(updatedFrontmatter, fieldPath, [] as unknown as PieceFrontMatterValue)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (const one of values) {\n\t\t\t\tconst pieceValue = await makePieceValue(itemField, one)\n\n\t\t\t\tconst val = isAttachableStream(pieceValue)\n\t\t\t\t\t? await makePieceAttachment(\n\t\t\t\t\t\tmarkdown.filePath,\n\t\t\t\t\t\titemField as PieceFrontmatterSchemaField,\n\t\t\t\t\t\tpieceValue,\n\t\t\t\t\t\tthis._storage\n\t\t\t\t\t)\n\t\t\t\t\t: (pieceValue as PieceFrontMatterValue)\n\n\t\t\t\tsetFrontmatterValue(updatedFrontmatter, fieldPath, val)\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tconst error = e as Error\n\t\t\tconsole.error(`could not set field ${fieldPath}: ${error.message}`)\n\t\t\treturn markdown\n\t\t}\n\n\t\treturn makePieceMarkdown(markdown.filePath, markdown.piece, markdown.note, updatedFrontmatter)\n\t}\n\n\tasync removeField(\n\t\tmarkdown: PieceMarkdown<F>,\n\t\tfieldPath: string,\n\t\tvalue?: number | string | boolean\n\t): Promise<PieceMarkdown<F>> {\n\t\tconst pieceField = findFrontmatterField(this.fields, fieldPath)\n\n\t\tif (!pieceField) {\n\t\t\tthrow new Error(`${fieldPath} is not a field in ${this._pieceName} ${markdown.filePath}`)\n\t\t}\n\n\t\tif (pieceField.nullable !== true) {\n\t\t\tthrow new Error(`${fieldPath} is a required field in ${this._pieceName} ${markdown.filePath}`)\n\t\t}\n\n\t\tconst updatedFrontmatter = structuredClone(markdown.frontmatter)\n\n\t\tif (value === undefined) {\n\t\t\tunsetFrontmatterValue(updatedFrontmatter, fieldPath)\n\t\t} else {\n\t\t\tconst pieceValue = await makePieceValue(pieceField, value)\n\t\t\tconst current = getFrontmatterValue(updatedFrontmatter, fieldPath)\n\n\t\t\tif (Array.isArray(current) && !isAttachableStream(pieceValue)) {\n\t\t\t\tconst index = current.indexOf(pieceValue as PieceFrontMatterValue)\n\t\t\t\tif (index !== -1) {\n\t\t\t\t\tunsetFrontmatterValue(updatedFrontmatter, `${fieldPath}.${index}`)\n\t\t\t\t} else {\n\t\t\t\t\treturn markdown\n\t\t\t\t}\n\t\t\t} else if (current === pieceValue) {\n\t\t\t\tunsetFrontmatterValue(updatedFrontmatter, fieldPath)\n\t\t\t}\n\t\t}\n\n\t\treturn makePieceMarkdown(markdown.filePath, markdown.piece, markdown.note, updatedFrontmatter)\n\t}\n}\n\nexport default Piece\n"]}
@@ -317,6 +317,7 @@ describe('pieces/Piece.ts', () => {
317
317
  expect(result.action).toBe('skipped');
318
318
  }
319
319
  }
320
+ expect(mocks.cache.updateCache).toHaveBeenCalledWith(db, 's.md', 'same-hash');
320
321
  });
321
322
  test('sync handles dryRun', async () => {
322
323
  const PieceType = makePieceMock();
@@ -353,6 +354,24 @@ describe('pieces/Piece.ts', () => {
353
354
  }
354
355
  expect(syncUpdateSpy).not.toHaveBeenCalled();
355
356
  });
357
+ test('sync handles dryRun skip', async () => {
358
+ const PieceType = makePieceMock();
359
+ const storage = makeStorage();
360
+ const piece = new PieceType('table', storage);
361
+ const markdown = makeMarkdownSample({ filePath: 's.md' });
362
+ vi.spyOn(piece, 'get').mockResolvedValue(markdown);
363
+ mocks.items.selectItem.mockResolvedValue(makePieceItemSelectable({ id: '1' }));
364
+ mocks.pieceUtils.calculateHashFromFile.mockResolvedValue('same-hash');
365
+ mocks.cache.getCache.mockResolvedValue(makeCache({ content_hash: 'same-hash' }));
366
+ vi.spyOn(storage, 'createReadStream').mockReturnValue({});
367
+ const stream = await piece.sync(db, ['s.md'], { dryRun: true });
368
+ for await (const result of stream) {
369
+ if (!result.error) {
370
+ expect(result.action).toBe('skipped');
371
+ }
372
+ }
373
+ expect(mocks.cache.updateCache).not.toHaveBeenCalled();
374
+ });
356
375
  test('sync handles force update even if hash same', async () => {
357
376
  const PieceType = makePieceMock();
358
377
  const storage = makeStorage();
@@ -503,7 +522,7 @@ describe('pieces/Piece.ts', () => {
503
522
  const piece = new PieceType('table');
504
523
  const markdown = makeMarkdownSample();
505
524
  const setting = piece.setField(markdown, 'title2', 'new');
506
- expect(setting).rejects.toThrow();
525
+ await expect(setting).rejects.toThrow();
507
526
  });
508
527
  test('removeField unsets a nested value', async () => {
509
528
  const PieceType = makePieceMock();