@cravery/core 0.0.30 → 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 (215) hide show
  1. package/dist/config/ai.d.ts.map +1 -1
  2. package/dist/config/ai.js +0 -7
  3. package/dist/config/ai.js.map +1 -1
  4. package/dist/types/ai/config.d.ts +2 -3
  5. package/dist/types/ai/config.d.ts.map +1 -1
  6. package/dist/types/recipe/recipe.d.ts +0 -9
  7. package/dist/types/recipe/recipe.d.ts.map +1 -1
  8. package/package.json +45 -45
  9. package/src/config/ai.ts +39 -46
  10. package/src/types/ai/config.ts +28 -30
  11. package/src/types/recipe/recipe.ts +92 -108
  12. package/dist/lib/ai/cost.d.ts +0 -22
  13. package/dist/lib/ai/cost.d.ts.map +0 -1
  14. package/dist/lib/ai/cost.js +0 -55
  15. package/dist/lib/ai/cost.js.map +0 -1
  16. package/dist/lib/ai/embedding.d.ts +0 -5
  17. package/dist/lib/ai/embedding.d.ts.map +0 -1
  18. package/dist/lib/ai/embedding.js +0 -43
  19. package/dist/lib/ai/embedding.js.map +0 -1
  20. package/dist/lib/ai/errors.d.ts +0 -14
  21. package/dist/lib/ai/errors.d.ts.map +0 -1
  22. package/dist/lib/ai/errors.js +0 -40
  23. package/dist/lib/ai/errors.js.map +0 -1
  24. package/dist/lib/ai/flow.d.ts +0 -33
  25. package/dist/lib/ai/flow.d.ts.map +0 -1
  26. package/dist/lib/ai/flow.js +0 -97
  27. package/dist/lib/ai/flow.js.map +0 -1
  28. package/dist/lib/ai/genkit.d.ts +0 -5
  29. package/dist/lib/ai/genkit.d.ts.map +0 -1
  30. package/dist/lib/ai/genkit.js +0 -33
  31. package/dist/lib/ai/genkit.js.map +0 -1
  32. package/dist/lib/ai/image.d.ts +0 -7
  33. package/dist/lib/ai/image.d.ts.map +0 -1
  34. package/dist/lib/ai/image.js +0 -23
  35. package/dist/lib/ai/image.js.map +0 -1
  36. package/dist/lib/ai/index.d.ts +0 -7
  37. package/dist/lib/ai/index.d.ts.map +0 -1
  38. package/dist/lib/ai/index.js +0 -23
  39. package/dist/lib/ai/index.js.map +0 -1
  40. package/dist/lib/api.d.ts +0 -20
  41. package/dist/lib/api.d.ts.map +0 -1
  42. package/dist/lib/api.js +0 -79
  43. package/dist/lib/api.js.map +0 -1
  44. package/dist/lib/firebase.d.ts +0 -3
  45. package/dist/lib/firebase.d.ts.map +0 -1
  46. package/dist/lib/firebase.js +0 -8
  47. package/dist/lib/firebase.js.map +0 -1
  48. package/dist/lib/iam.d.ts +0 -6
  49. package/dist/lib/iam.d.ts.map +0 -1
  50. package/dist/lib/iam.js +0 -72
  51. package/dist/lib/iam.js.map +0 -1
  52. package/dist/lib/index.d.ts +0 -8
  53. package/dist/lib/index.d.ts.map +0 -1
  54. package/dist/lib/index.js +0 -24
  55. package/dist/lib/index.js.map +0 -1
  56. package/dist/lib/storage.d.ts +0 -6
  57. package/dist/lib/storage.d.ts.map +0 -1
  58. package/dist/lib/storage.js +0 -50
  59. package/dist/lib/storage.js.map +0 -1
  60. package/dist/lib/usage/index.d.ts +0 -2
  61. package/dist/lib/usage/index.d.ts.map +0 -1
  62. package/dist/lib/usage/index.js +0 -18
  63. package/dist/lib/usage/index.js.map +0 -1
  64. package/dist/lib/usage/usage.service.d.ts +0 -27
  65. package/dist/lib/usage/usage.service.d.ts.map +0 -1
  66. package/dist/lib/usage/usage.service.js +0 -131
  67. package/dist/lib/usage/usage.service.js.map +0 -1
  68. package/dist/lib/utils/index.d.ts +0 -3
  69. package/dist/lib/utils/index.d.ts.map +0 -1
  70. package/dist/lib/utils/index.js +0 -19
  71. package/dist/lib/utils/index.js.map +0 -1
  72. package/dist/lib/utils/sanitize.d.ts +0 -20
  73. package/dist/lib/utils/sanitize.d.ts.map +0 -1
  74. package/dist/lib/utils/sanitize.js +0 -40
  75. package/dist/lib/utils/sanitize.js.map +0 -1
  76. package/dist/lib/utils/slug.d.ts +0 -13
  77. package/dist/lib/utils/slug.d.ts.map +0 -1
  78. package/dist/lib/utils/slug.js +0 -33
  79. package/dist/lib/utils/slug.js.map +0 -1
  80. package/dist/types/core/enums/image_type.d.ts +0 -5
  81. package/dist/types/core/enums/image_type.d.ts.map +0 -1
  82. package/dist/types/core/enums/image_type.js +0 -7
  83. package/dist/types/core/enums/image_type.js.map +0 -1
  84. package/dist/types/core/enums/index.d.ts +0 -6
  85. package/dist/types/core/enums/index.d.ts.map +0 -1
  86. package/dist/types/core/enums/index.js +0 -22
  87. package/dist/types/core/enums/index.js.map +0 -1
  88. package/dist/types/core/enums/locale.d.ts +0 -5
  89. package/dist/types/core/enums/locale.d.ts.map +0 -1
  90. package/dist/types/core/enums/locale.js +0 -7
  91. package/dist/types/core/enums/locale.js.map +0 -1
  92. package/dist/types/core/enums/measurement_system.d.ts +0 -5
  93. package/dist/types/core/enums/measurement_system.d.ts.map +0 -1
  94. package/dist/types/core/enums/measurement_system.js +0 -7
  95. package/dist/types/core/enums/measurement_system.js.map +0 -1
  96. package/dist/types/core/enums/theme.d.ts +0 -5
  97. package/dist/types/core/enums/theme.d.ts.map +0 -1
  98. package/dist/types/core/enums/theme.js +0 -7
  99. package/dist/types/core/enums/theme.js.map +0 -1
  100. package/dist/types/core/enums/url_type.d.ts +0 -5
  101. package/dist/types/core/enums/url_type.d.ts.map +0 -1
  102. package/dist/types/core/enums/url_type.js +0 -15
  103. package/dist/types/core/enums/url_type.js.map +0 -1
  104. package/dist/types/iam/enums/index.d.ts +0 -7
  105. package/dist/types/iam/enums/index.d.ts.map +0 -1
  106. package/dist/types/iam/enums/index.js +0 -23
  107. package/dist/types/iam/enums/index.js.map +0 -1
  108. package/dist/types/iam/enums/profile_status.d.ts +0 -5
  109. package/dist/types/iam/enums/profile_status.d.ts.map +0 -1
  110. package/dist/types/iam/enums/profile_status.js +0 -12
  111. package/dist/types/iam/enums/profile_status.js.map +0 -1
  112. package/dist/types/iam/enums/subscription_role.d.ts +0 -5
  113. package/dist/types/iam/enums/subscription_role.d.ts.map +0 -1
  114. package/dist/types/iam/enums/subscription_role.js +0 -7
  115. package/dist/types/iam/enums/subscription_role.js.map +0 -1
  116. package/dist/types/iam/enums/subscription_status.d.ts +0 -5
  117. package/dist/types/iam/enums/subscription_status.d.ts.map +0 -1
  118. package/dist/types/iam/enums/subscription_status.js +0 -12
  119. package/dist/types/iam/enums/subscription_status.js.map +0 -1
  120. package/dist/types/iam/enums/subscription_tier.d.ts +0 -4
  121. package/dist/types/iam/enums/subscription_tier.d.ts.map +0 -1
  122. package/dist/types/iam/enums/subscription_tier.js +0 -6
  123. package/dist/types/iam/enums/subscription_tier.js.map +0 -1
  124. package/dist/types/iam/enums/user_role.d.ts +0 -5
  125. package/dist/types/iam/enums/user_role.d.ts.map +0 -1
  126. package/dist/types/iam/enums/user_role.js +0 -13
  127. package/dist/types/iam/enums/user_role.js.map +0 -1
  128. package/dist/types/iam/enums/user_status.d.ts +0 -5
  129. package/dist/types/iam/enums/user_status.d.ts.map +0 -1
  130. package/dist/types/iam/enums/user_status.js +0 -12
  131. package/dist/types/iam/enums/user_status.js.map +0 -1
  132. package/dist/types/moderation/enums/index.d.ts +0 -5
  133. package/dist/types/moderation/enums/index.d.ts.map +0 -1
  134. package/dist/types/moderation/enums/index.js +0 -21
  135. package/dist/types/moderation/enums/index.js.map +0 -1
  136. package/dist/types/moderation/enums/moderation_status.d.ts +0 -5
  137. package/dist/types/moderation/enums/moderation_status.d.ts.map +0 -1
  138. package/dist/types/moderation/enums/moderation_status.js +0 -11
  139. package/dist/types/moderation/enums/moderation_status.js.map +0 -1
  140. package/dist/types/moderation/enums/priority.d.ts +0 -5
  141. package/dist/types/moderation/enums/priority.d.ts.map +0 -1
  142. package/dist/types/moderation/enums/priority.js +0 -7
  143. package/dist/types/moderation/enums/priority.js.map +0 -1
  144. package/dist/types/moderation/enums/severity.d.ts +0 -5
  145. package/dist/types/moderation/enums/severity.d.ts.map +0 -1
  146. package/dist/types/moderation/enums/severity.js +0 -7
  147. package/dist/types/moderation/enums/severity.js.map +0 -1
  148. package/dist/types/moderation/enums/suggestion_category.d.ts +0 -5
  149. package/dist/types/moderation/enums/suggestion_category.d.ts.map +0 -1
  150. package/dist/types/moderation/enums/suggestion_category.js +0 -13
  151. package/dist/types/moderation/enums/suggestion_category.js.map +0 -1
  152. package/dist/types/recipe/enums/allergen.d.ts +0 -5
  153. package/dist/types/recipe/enums/allergen.d.ts.map +0 -1
  154. package/dist/types/recipe/enums/allergen.js +0 -21
  155. package/dist/types/recipe/enums/allergen.js.map +0 -1
  156. package/dist/types/recipe/enums/cuisine.d.ts +0 -5
  157. package/dist/types/recipe/enums/cuisine.d.ts.map +0 -1
  158. package/dist/types/recipe/enums/cuisine.js +0 -41
  159. package/dist/types/recipe/enums/cuisine.js.map +0 -1
  160. package/dist/types/recipe/enums/dietary_tag.d.ts +0 -5
  161. package/dist/types/recipe/enums/dietary_tag.d.ts.map +0 -1
  162. package/dist/types/recipe/enums/dietary_tag.js +0 -23
  163. package/dist/types/recipe/enums/dietary_tag.js.map +0 -1
  164. package/dist/types/recipe/enums/difficulty.d.ts +0 -5
  165. package/dist/types/recipe/enums/difficulty.d.ts.map +0 -1
  166. package/dist/types/recipe/enums/difficulty.js +0 -12
  167. package/dist/types/recipe/enums/difficulty.js.map +0 -1
  168. package/dist/types/recipe/enums/index.d.ts +0 -11
  169. package/dist/types/recipe/enums/index.d.ts.map +0 -1
  170. package/dist/types/recipe/enums/index.js +0 -27
  171. package/dist/types/recipe/enums/index.js.map +0 -1
  172. package/dist/types/recipe/enums/meal_type.d.ts +0 -5
  173. package/dist/types/recipe/enums/meal_type.d.ts.map +0 -1
  174. package/dist/types/recipe/enums/meal_type.js +0 -16
  175. package/dist/types/recipe/enums/meal_type.js.map +0 -1
  176. package/dist/types/recipe/enums/recipe_source.d.ts +0 -5
  177. package/dist/types/recipe/enums/recipe_source.d.ts.map +0 -1
  178. package/dist/types/recipe/enums/recipe_source.js +0 -7
  179. package/dist/types/recipe/enums/recipe_source.js.map +0 -1
  180. package/dist/types/recipe/enums/recipe_status.d.ts +0 -5
  181. package/dist/types/recipe/enums/recipe_status.d.ts.map +0 -1
  182. package/dist/types/recipe/enums/recipe_status.js +0 -14
  183. package/dist/types/recipe/enums/recipe_status.js.map +0 -1
  184. package/dist/types/recipe/enums/spiciness.d.ts +0 -5
  185. package/dist/types/recipe/enums/spiciness.d.ts.map +0 -1
  186. package/dist/types/recipe/enums/spiciness.js +0 -7
  187. package/dist/types/recipe/enums/spiciness.js.map +0 -1
  188. package/dist/types/recipe/enums/temperature_unit.d.ts +0 -5
  189. package/dist/types/recipe/enums/temperature_unit.d.ts.map +0 -1
  190. package/dist/types/recipe/enums/temperature_unit.js +0 -7
  191. package/dist/types/recipe/enums/temperature_unit.js.map +0 -1
  192. package/dist/types/recipe/enums/unit.d.ts +0 -5
  193. package/dist/types/recipe/enums/unit.d.ts.map +0 -1
  194. package/dist/types/recipe/enums/unit.js +0 -53
  195. package/dist/types/recipe/enums/unit.js.map +0 -1
  196. package/dist/types/report/enums/index.d.ts +0 -5
  197. package/dist/types/report/enums/index.d.ts.map +0 -1
  198. package/dist/types/report/enums/index.js +0 -21
  199. package/dist/types/report/enums/index.js.map +0 -1
  200. package/dist/types/report/enums/report_priority.d.ts +0 -5
  201. package/dist/types/report/enums/report_priority.d.ts.map +0 -1
  202. package/dist/types/report/enums/report_priority.js +0 -12
  203. package/dist/types/report/enums/report_priority.js.map +0 -1
  204. package/dist/types/report/enums/report_status.d.ts +0 -5
  205. package/dist/types/report/enums/report_status.d.ts.map +0 -1
  206. package/dist/types/report/enums/report_status.js +0 -12
  207. package/dist/types/report/enums/report_status.js.map +0 -1
  208. package/dist/types/report/enums/report_target_type.d.ts +0 -5
  209. package/dist/types/report/enums/report_target_type.d.ts.map +0 -1
  210. package/dist/types/report/enums/report_target_type.js +0 -12
  211. package/dist/types/report/enums/report_target_type.js.map +0 -1
  212. package/dist/types/report/enums/report_type.d.ts +0 -5
  213. package/dist/types/report/enums/report_type.d.ts.map +0 -1
  214. package/dist/types/report/enums/report_type.js +0 -14
  215. package/dist/types/report/enums/report_type.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ai.d.ts","sourceRoot":"","sources":["../../src/config/ai.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC,eAAO,MAAM,SAAS,EAAE,QA2CvB,CAAC"}
1
+ {"version":3,"file":"ai.d.ts","sourceRoot":"","sources":["../../src/config/ai.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC,eAAO,MAAM,SAAS,EAAE,QAoCvB,CAAC"}
package/dist/config/ai.js CHANGED
@@ -37,12 +37,5 @@ exports.AI_MODELS = {
37
37
  type: "embedding",
38
38
  cost: { input: 0.00015, output: 0 },
39
39
  },
40
- Veo31Fast: {
41
- id: "vertexai/veo-3.1-fast-generate-preview",
42
- alias: "veo31fast",
43
- name: "Veo 3.1 Fast",
44
- type: "video",
45
- cost: { input: 0, output: 0.10 },
46
- },
47
40
  };
48
41
  //# sourceMappingURL=ai.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ai.js","sourceRoot":"","sources":["../../src/config/ai.ts"],"names":[],"mappings":";;;AAEa,QAAA,SAAS,GAAa;IACjC,aAAa,EAAE;QACb,EAAE,EAAE,2BAA2B;QAC/B,KAAK,EAAE,eAAe;QACtB,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE;KAClC;IACD,WAAW,EAAE;QACX,EAAE,EAAE,yBAAyB;QAC7B,KAAK,EAAE,aAAa;QACpB,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;KACpC;IACD,YAAY,EAAE;QACZ,EAAE,EAAE,2BAA2B;QAC/B,KAAK,EAAE,cAAc;QACrB,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE;KAClC;IACD,WAAW,EAAE;QACX,EAAE,EAAE,uCAAuC;QAC3C,KAAK,EAAE,aAAa;QACpB,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE;KACjC;IACD,kBAAkB,EAAE;QAClB,EAAE,EAAE,+BAA+B;QACnC,KAAK,EAAE,oBAAoB;QAC3B,IAAI,EAAE,sBAAsB;QAC5B,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE;KACpC;IACD,SAAS,EAAE;QACT,EAAE,EAAE,wCAAwC;QAC5C,KAAK,EAAE,WAAW;QAClB,IAAI,EAAE,cAAc;QACpB,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE;KACjC;CACF,CAAC"}
1
+ {"version":3,"file":"ai.js","sourceRoot":"","sources":["../../src/config/ai.ts"],"names":[],"mappings":";;;AAEa,QAAA,SAAS,GAAa;IACjC,aAAa,EAAE;QACb,EAAE,EAAE,2BAA2B;QAC/B,KAAK,EAAE,eAAe;QACtB,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE;KAClC;IACD,WAAW,EAAE;QACX,EAAE,EAAE,yBAAyB;QAC7B,KAAK,EAAE,aAAa;QACpB,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;KACpC;IACD,YAAY,EAAE;QACZ,EAAE,EAAE,2BAA2B;QAC/B,KAAK,EAAE,cAAc;QACrB,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE;KAClC;IACD,WAAW,EAAE;QACX,EAAE,EAAE,uCAAuC;QAC3C,KAAK,EAAE,aAAa;QACpB,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE;KACjC;IACD,kBAAkB,EAAE;QAClB,EAAE,EAAE,+BAA+B;QACnC,KAAK,EAAE,oBAAoB;QAC3B,IAAI,EAAE,sBAAsB;QAC5B,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE;KACpC;CACF,CAAC"}
@@ -3,10 +3,9 @@
3
3
  * - multimodal: cost per 1,000,000 input/output tokens
4
4
  * - image: cost per image (stored in cost.output)
5
5
  * - embedding: cost per 1,000 input tokens
6
- * - video: cost per second of video (stored in cost.output)
7
6
  */
8
- export type AIModel = "Gemini25Flash" | "Gemini25Pro" | "Gemini3Flash" | "Imagen4Fast" | "GeminiEmbedding001" | "Veo31Fast";
9
- export type AIModelType = "multimodal" | "image" | "embedding" | "video";
7
+ export type AIModel = "Gemini25Flash" | "Gemini25Pro" | "Gemini3Flash" | "Imagen4Fast" | "GeminiEmbedding001";
8
+ export type AIModelType = "multimodal" | "image" | "embedding";
10
9
  export interface AIModelCost {
11
10
  input: number;
12
11
  output: number;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/types/ai/config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,MAAM,OAAO,GACf,eAAe,GACf,aAAa,GACb,cAAc,GACd,aAAa,GACb,oBAAoB,GACpB,WAAW,CAAC;AAChB,MAAM,MAAM,WAAW,GAAG,YAAY,GAAG,OAAO,GAAG,WAAW,GAAG,OAAO,CAAC;AAEzE,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,WAAW,CAAC;CACnB;AAED,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/types/ai/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,MAAM,OAAO,GACf,eAAe,GACf,aAAa,GACb,cAAc,GACd,aAAa,GACb,oBAAoB,CAAC;AACzB,MAAM,MAAM,WAAW,GAAG,YAAY,GAAG,OAAO,GAAG,WAAW,CAAC;AAE/D,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,WAAW,CAAC;CACnB;AAED,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC"}
@@ -12,7 +12,6 @@ import { Nutrition } from "./nutrition";
12
12
  import { RecipeSource } from "./recipe_source";
13
13
  import { RecipeStatus } from "./recipe_status";
14
14
  import { Spiciness } from "./spiciness";
15
- export type VideoGenerationStatus = "idle" | "generating" | "completed" | "failed";
16
15
  export interface RecipeMeta extends Entity {
17
16
  allergens: Allergen[];
18
17
  confidence: number;
@@ -34,10 +33,6 @@ export interface RecipeMeta extends Entity {
34
33
  spiciness: Spiciness;
35
34
  status: RecipeStatus;
36
35
  time: number;
37
- videoUrl?: string;
38
- videoGeneratedAt?: Timestamp;
39
- videoGenerationStatus?: VideoGenerationStatus;
40
- videoGenerationError?: string;
41
36
  }
42
37
  export interface RecipeContent {
43
38
  description: string;
@@ -73,10 +68,6 @@ export interface Recipe extends Entity {
73
68
  time: number;
74
69
  tips?: string[];
75
70
  title: string;
76
- videoUrl?: string;
77
- videoGeneratedAt?: Timestamp;
78
- videoGenerationStatus?: VideoGenerationStatus;
79
- videoGenerationError?: string;
80
71
  }
81
72
  export interface RecipeStats {
82
73
  comments: number;
@@ -1 +1 @@
1
- {"version":3,"file":"recipe.d.ts","sourceRoot":"","sources":["../../../src/types/recipe/recipe.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recipe.d.ts","sourceRoot":"","sources":["../../../src/types/recipe/recipe.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,45 +1,45 @@
1
- {
2
- "name": "@cravery/core",
3
- "version": "0.0.30",
4
- "description": "Clean architecture foundation for Cravery",
5
- "main": "dist/index.js",
6
- "types": "dist/index.d.ts",
7
- "exports": {
8
- ".": {
9
- "types": "./dist/index.d.ts",
10
- "default": "./dist/index.js"
11
- },
12
- "./types": {
13
- "types": "./dist/types/index.d.ts",
14
- "default": "./dist/types/index.js"
15
- },
16
- "./config": {
17
- "types": "./dist/config/index.d.ts",
18
- "default": "./dist/config/index.js"
19
- }
20
- },
21
- "typesVersions": {
22
- "*": {
23
- "types": [
24
- "dist/types/index.d.ts"
25
- ],
26
- "config": [
27
- "dist/config/index.d.ts"
28
- ]
29
- }
30
- },
31
- "scripts": {
32
- "build": "tsc",
33
- "build:watch": "tsc --watch",
34
- "clean": "rimraf dist && npm run build"
35
- },
36
- "keywords": [],
37
- "devDependencies": {
38
- "rimraf": "^6.1.2",
39
- "typescript": "^5.9.3"
40
- },
41
- "files": [
42
- "dist/**/*",
43
- "src/**/*"
44
- ]
45
- }
1
+ {
2
+ "name": "@cravery/core",
3
+ "version": "0.0.32",
4
+ "description": "Clean architecture foundation for Cravery",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "default": "./dist/index.js"
11
+ },
12
+ "./types": {
13
+ "types": "./dist/types/index.d.ts",
14
+ "default": "./dist/types/index.js"
15
+ },
16
+ "./config": {
17
+ "types": "./dist/config/index.d.ts",
18
+ "default": "./dist/config/index.js"
19
+ }
20
+ },
21
+ "typesVersions": {
22
+ "*": {
23
+ "types": [
24
+ "dist/types/index.d.ts"
25
+ ],
26
+ "config": [
27
+ "dist/config/index.d.ts"
28
+ ]
29
+ }
30
+ },
31
+ "scripts": {
32
+ "build": "tsc",
33
+ "build:watch": "tsc --watch",
34
+ "clean": "rimraf dist && npm run build"
35
+ },
36
+ "keywords": [],
37
+ "devDependencies": {
38
+ "rimraf": "^6.1.2",
39
+ "typescript": "^5.9.3"
40
+ },
41
+ "files": [
42
+ "dist/**/*",
43
+ "src/**/*"
44
+ ]
45
+ }
package/src/config/ai.ts CHANGED
@@ -1,46 +1,39 @@
1
- import { AIConfig } from "../types";
2
-
3
- export const AI_MODELS: AIConfig = {
4
- Gemini25Flash: {
5
- id: "vertexai/gemini-2.5-flash",
6
- alias: "gemini25flash",
7
- name: "Gemini 2.5 Flash",
8
- type: "multimodal",
9
- cost: { input: 0.3, output: 2.5 },
10
- },
11
- Gemini25Pro: {
12
- id: "vertexai/gemini-2.5-pro",
13
- alias: "gemini25pro",
14
- name: "Gemini 2.5 Pro",
15
- type: "multimodal",
16
- cost: { input: 1.25, output: 10.0 },
17
- },
18
- Gemini3Flash: {
19
- id: "vertexai/gemini-3.0-flash",
20
- alias: "gemini3flash",
21
- name: "Gemini 3 Flash",
22
- type: "multimodal",
23
- cost: { input: 0.5, output: 3.0 },
24
- },
25
- Imagen4Fast: {
26
- id: "vertexai/imagen-4.0-fast-generate-001",
27
- alias: "imagen4fast",
28
- name: "Imagen 4 Fast",
29
- type: "image",
30
- cost: { input: 0, output: 0.02 },
31
- },
32
- GeminiEmbedding001: {
33
- id: "vertexai/gemini-embedding-001",
34
- alias: "geminiembedding001",
35
- name: "Gemini Embedding 001",
36
- type: "embedding",
37
- cost: { input: 0.00015, output: 0 },
38
- },
39
- Veo31Fast: {
40
- id: "vertexai/veo-3.1-fast-generate-preview",
41
- alias: "veo31fast",
42
- name: "Veo 3.1 Fast",
43
- type: "video",
44
- cost: { input: 0, output: 0.10 },
45
- },
46
- };
1
+ import { AIConfig } from "../types";
2
+
3
+ export const AI_MODELS: AIConfig = {
4
+ Gemini25Flash: {
5
+ id: "vertexai/gemini-2.5-flash",
6
+ alias: "gemini25flash",
7
+ name: "Gemini 2.5 Flash",
8
+ type: "multimodal",
9
+ cost: { input: 0.3, output: 2.5 },
10
+ },
11
+ Gemini25Pro: {
12
+ id: "vertexai/gemini-2.5-pro",
13
+ alias: "gemini25pro",
14
+ name: "Gemini 2.5 Pro",
15
+ type: "multimodal",
16
+ cost: { input: 1.25, output: 10.0 },
17
+ },
18
+ Gemini3Flash: {
19
+ id: "vertexai/gemini-3.0-flash",
20
+ alias: "gemini3flash",
21
+ name: "Gemini 3 Flash",
22
+ type: "multimodal",
23
+ cost: { input: 0.5, output: 3.0 },
24
+ },
25
+ Imagen4Fast: {
26
+ id: "vertexai/imagen-4.0-fast-generate-001",
27
+ alias: "imagen4fast",
28
+ name: "Imagen 4 Fast",
29
+ type: "image",
30
+ cost: { input: 0, output: 0.02 },
31
+ },
32
+ GeminiEmbedding001: {
33
+ id: "vertexai/gemini-embedding-001",
34
+ alias: "geminiembedding001",
35
+ name: "Gemini Embedding 001",
36
+ type: "embedding",
37
+ cost: { input: 0.00015, output: 0 },
38
+ },
39
+ };
@@ -1,30 +1,28 @@
1
- /**
2
- * AI model configuration, costs are in USD:
3
- * - multimodal: cost per 1,000,000 input/output tokens
4
- * - image: cost per image (stored in cost.output)
5
- * - embedding: cost per 1,000 input tokens
6
- * - video: cost per second of video (stored in cost.output)
7
- */
8
- export type AIModel =
9
- | "Gemini25Flash"
10
- | "Gemini25Pro"
11
- | "Gemini3Flash"
12
- | "Imagen4Fast"
13
- | "GeminiEmbedding001"
14
- | "Veo31Fast";
15
- export type AIModelType = "multimodal" | "image" | "embedding" | "video";
16
-
17
- export interface AIModelCost {
18
- input: number;
19
- output: number;
20
- }
21
-
22
- export interface AIModelConfig {
23
- id: string;
24
- alias: string;
25
- cost: AIModelCost;
26
- name: string;
27
- type: AIModelType;
28
- }
29
-
30
- export type AIConfig = Record<AIModel, AIModelConfig>;
1
+ /**
2
+ * AI model configuration, costs are in USD:
3
+ * - multimodal: cost per 1,000,000 input/output tokens
4
+ * - image: cost per image (stored in cost.output)
5
+ * - embedding: cost per 1,000 input tokens
6
+ */
7
+ export type AIModel =
8
+ | "Gemini25Flash"
9
+ | "Gemini25Pro"
10
+ | "Gemini3Flash"
11
+ | "Imagen4Fast"
12
+ | "GeminiEmbedding001";
13
+ export type AIModelType = "multimodal" | "image" | "embedding";
14
+
15
+ export interface AIModelCost {
16
+ input: number;
17
+ output: number;
18
+ }
19
+
20
+ export interface AIModelConfig {
21
+ id: string;
22
+ alias: string;
23
+ cost: AIModelCost;
24
+ name: string;
25
+ type: AIModelType;
26
+ }
27
+
28
+ export type AIConfig = Record<AIModel, AIModelConfig>;
@@ -1,108 +1,92 @@
1
- import { Entity, Timestamp } from "../core";
2
- import { Locale } from "../core/locale";
3
- import { Allergen } from "./allergen";
4
- import { Cuisine } from "./cuisine";
5
- import { DietaryTag } from "./dietary_tag";
6
- import { Difficulty } from "./difficulty";
7
- import { Equipment, EquipmentContent, EquipmentMeta } from "./equipment";
8
- import {
9
- IngredientSection,
10
- IngredientSectionContent,
11
- IngredientSectionMeta,
12
- } from "./ingredient";
13
- import {
14
- Instruction,
15
- InstructionContent,
16
- InstructionMeta,
17
- } from "./instruction";
18
- import { MealType } from "./meal_type";
19
- import { Nutrition } from "./nutrition";
20
- import { RecipeSource } from "./recipe_source";
21
- import { RecipeStatus } from "./recipe_status";
22
- import { Spiciness } from "./spiciness";
23
-
24
- export type VideoGenerationStatus =
25
- | "idle" // No video generated yet
26
- | "generating" // Video generation in progress
27
- | "completed" // Video successfully generated
28
- | "failed"; // Video generation failed
29
-
30
- export interface RecipeMeta extends Entity {
31
- allergens: Allergen[];
32
- confidence: number;
33
- createdBy: string;
34
- cuisine: Cuisine;
35
- deletedAt?: Timestamp;
36
- dietaryTags: DietaryTag[];
37
- difficulty: Difficulty;
38
- equipment?: EquipmentMeta[];
39
- imageUrl?: string;
40
- ingredientSections: IngredientSectionMeta[];
41
- instructions: InstructionMeta[];
42
- mealTypes: MealType[];
43
- nutrition?: Nutrition;
44
- originalLocale: Locale;
45
- servings: number;
46
- source: RecipeSource;
47
- sourceUrl?: string;
48
- spiciness: Spiciness;
49
- status: RecipeStatus;
50
- time: number;
51
- // Video generation fields
52
- videoUrl?: string;
53
- videoGeneratedAt?: Timestamp;
54
- videoGenerationStatus?: VideoGenerationStatus;
55
- videoGenerationError?: string;
56
- }
57
-
58
- export interface RecipeContent {
59
- description: string;
60
- equipment?: EquipmentContent[];
61
- ingredientSections: IngredientSectionContent[];
62
- instructions: InstructionContent[];
63
- locale: Locale;
64
- tips?: string[];
65
- title: string;
66
- }
67
-
68
- export interface Recipe extends Entity {
69
- allergens: Allergen[];
70
- confidence: number;
71
- createdBy: string;
72
- cuisine: Cuisine;
73
- deletedAt?: Timestamp;
74
- description: string;
75
- dietaryTags: DietaryTag[];
76
- difficulty: Difficulty;
77
- equipment?: Equipment[];
78
- imageUrl?: string;
79
- ingredientSections: IngredientSection[];
80
- instructions: Instruction[];
81
- locale: Locale;
82
- mealTypes: MealType[];
83
- nutrition?: Nutrition;
84
- originalLocale: Locale;
85
- servings: number;
86
- source: RecipeSource;
87
- sourceUrl?: string;
88
- spiciness: Spiciness;
89
- status: RecipeStatus;
90
- time: number;
91
- tips?: string[];
92
- title: string;
93
- // Video generation fields
94
- videoUrl?: string;
95
- videoGeneratedAt?: Timestamp;
96
- videoGenerationStatus?: VideoGenerationStatus;
97
- videoGenerationError?: string;
98
- }
99
-
100
- export interface RecipeStats {
101
- comments: number;
102
- likes: number;
103
- rating: number;
104
- ratingCount: number;
105
- saves: number;
106
- updatedAt: number;
107
- views: number;
108
- }
1
+ import { Entity, Timestamp } from "../core";
2
+ import { Locale } from "../core/locale";
3
+ import { Allergen } from "./allergen";
4
+ import { Cuisine } from "./cuisine";
5
+ import { DietaryTag } from "./dietary_tag";
6
+ import { Difficulty } from "./difficulty";
7
+ import { Equipment, EquipmentContent, EquipmentMeta } from "./equipment";
8
+ import {
9
+ IngredientSection,
10
+ IngredientSectionContent,
11
+ IngredientSectionMeta,
12
+ } from "./ingredient";
13
+ import {
14
+ Instruction,
15
+ InstructionContent,
16
+ InstructionMeta,
17
+ } from "./instruction";
18
+ import { MealType } from "./meal_type";
19
+ import { Nutrition } from "./nutrition";
20
+ import { RecipeSource } from "./recipe_source";
21
+ import { RecipeStatus } from "./recipe_status";
22
+ import { Spiciness } from "./spiciness";
23
+
24
+ export interface RecipeMeta extends Entity {
25
+ allergens: Allergen[];
26
+ confidence: number;
27
+ createdBy: string;
28
+ cuisine: Cuisine;
29
+ deletedAt?: Timestamp;
30
+ dietaryTags: DietaryTag[];
31
+ difficulty: Difficulty;
32
+ equipment?: EquipmentMeta[];
33
+ imageUrl?: string;
34
+ ingredientSections: IngredientSectionMeta[];
35
+ instructions: InstructionMeta[];
36
+ mealTypes: MealType[];
37
+ nutrition?: Nutrition;
38
+ originalLocale: Locale;
39
+ servings: number;
40
+ source: RecipeSource;
41
+ sourceUrl?: string;
42
+ spiciness: Spiciness;
43
+ status: RecipeStatus;
44
+ time: number;
45
+ }
46
+
47
+ export interface RecipeContent {
48
+ description: string;
49
+ equipment?: EquipmentContent[];
50
+ ingredientSections: IngredientSectionContent[];
51
+ instructions: InstructionContent[];
52
+ locale: Locale;
53
+ tips?: string[];
54
+ title: string;
55
+ }
56
+
57
+ export interface Recipe extends Entity {
58
+ allergens: Allergen[];
59
+ confidence: number;
60
+ createdBy: string;
61
+ cuisine: Cuisine;
62
+ deletedAt?: Timestamp;
63
+ description: string;
64
+ dietaryTags: DietaryTag[];
65
+ difficulty: Difficulty;
66
+ equipment?: Equipment[];
67
+ imageUrl?: string;
68
+ ingredientSections: IngredientSection[];
69
+ instructions: Instruction[];
70
+ locale: Locale;
71
+ mealTypes: MealType[];
72
+ nutrition?: Nutrition;
73
+ originalLocale: Locale;
74
+ servings: number;
75
+ source: RecipeSource;
76
+ sourceUrl?: string;
77
+ spiciness: Spiciness;
78
+ status: RecipeStatus;
79
+ time: number;
80
+ tips?: string[];
81
+ title: string;
82
+ }
83
+
84
+ export interface RecipeStats {
85
+ comments: number;
86
+ likes: number;
87
+ rating: number;
88
+ ratingCount: number;
89
+ saves: number;
90
+ updatedAt: number;
91
+ views: number;
92
+ }
@@ -1,22 +0,0 @@
1
- import { AIModelConfig } from "../../types";
2
- interface BaseUsage {
3
- flowName: string;
4
- model: AIModelConfig;
5
- }
6
- interface MultimodalUsage extends BaseUsage {
7
- type: "multimodal";
8
- inputTokens: number;
9
- outputTokens: number;
10
- }
11
- interface ImageUsage extends BaseUsage {
12
- type: "image";
13
- imageCount: number;
14
- }
15
- interface EmbeddingUsage extends BaseUsage {
16
- type: "embedding";
17
- tokenCount: number;
18
- }
19
- export type AIUsage = MultimodalUsage | ImageUsage | EmbeddingUsage;
20
- export declare const logAIUsage: (usage: AIUsage) => number;
21
- export {};
22
- //# sourceMappingURL=cost.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cost.d.ts","sourceRoot":"","sources":["../../../src/lib/ai/cost.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,UAAU,SAAS;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,aAAa,CAAC;CACtB;AAED,UAAU,eAAgB,SAAQ,SAAS;IACzC,IAAI,EAAE,YAAY,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,UAAW,SAAQ,SAAS;IACpC,IAAI,EAAE,OAAO,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,cAAe,SAAQ,SAAS;IACxC,IAAI,EAAE,WAAW,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,OAAO,GAAG,eAAe,GAAG,UAAU,GAAG,cAAc,CAAC;AAEpE,eAAO,MAAM,UAAU,GAAI,OAAO,OAAO,KAAG,MAuD3C,CAAC"}
@@ -1,55 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.logAIUsage = void 0;
4
- const database_1 = require("firebase-admin/database");
5
- const logAIUsage = (usage) => {
6
- const { flowName, model } = usage;
7
- let cost;
8
- let metrics;
9
- switch (usage.type) {
10
- case "multimodal":
11
- cost =
12
- (usage.inputTokens / 1000000) * model.cost.input +
13
- (usage.outputTokens / 1000000) * model.cost.output;
14
- metrics = {
15
- inputTokens: usage.inputTokens,
16
- outputTokens: usage.outputTokens,
17
- };
18
- break;
19
- case "image":
20
- cost = usage.imageCount * model.cost.output;
21
- metrics = { images: usage.imageCount };
22
- break;
23
- case "embedding":
24
- cost = (usage.tokenCount / 1000) * model.cost.input;
25
- metrics = { tokens: usage.tokenCount };
26
- break;
27
- }
28
- const db = (0, database_1.getDatabase)();
29
- const date = new Date().toISOString().split("T")[0];
30
- const base = `ai_usage/live/${date}`;
31
- const updates = {
32
- [`${base}/total`]: database_1.ServerValue.increment(cost),
33
- [`${base}/count`]: database_1.ServerValue.increment(1),
34
- [`${base}/flows/${flowName}/cost`]: database_1.ServerValue.increment(cost),
35
- [`${base}/flows/${flowName}/count`]: database_1.ServerValue.increment(1),
36
- [`${base}/models/${model.alias}/cost`]: database_1.ServerValue.increment(cost),
37
- };
38
- for (const [key, value] of Object.entries(metrics)) {
39
- updates[`${base}/models/${model.alias}/${key}`] =
40
- database_1.ServerValue.increment(value);
41
- }
42
- db.ref()
43
- .update(updates)
44
- .catch((error) => {
45
- console.error("[AI Usage] Failed to log usage:", {
46
- flowName,
47
- model: model.id,
48
- cost,
49
- error: error instanceof Error ? error.message : String(error),
50
- });
51
- });
52
- return cost;
53
- };
54
- exports.logAIUsage = logAIUsage;
55
- //# sourceMappingURL=cost.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cost.js","sourceRoot":"","sources":["../../../src/lib/ai/cost.ts"],"names":[],"mappings":";;;AAAA,sDAAmE;AA0B5D,MAAM,UAAU,GAAG,CAAC,KAAc,EAAU,EAAE;IACnD,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IAElC,IAAI,IAAY,CAAC;IACjB,IAAI,OAA+B,CAAC;IAEpC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,YAAY;YACf,IAAI;gBACF,CAAC,KAAK,CAAC,WAAW,GAAG,OAAS,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK;oBAClD,CAAC,KAAK,CAAC,YAAY,GAAG,OAAS,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;YACvD,OAAO,GAAG;gBACR,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,YAAY,EAAE,KAAK,CAAC,YAAY;aACjC,CAAC;YACF,MAAM;QACR,KAAK,OAAO;YACV,IAAI,GAAG,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;YAC5C,OAAO,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;YACvC,MAAM;QACR,KAAK,WAAW;YACd,IAAI,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,IAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;YACrD,OAAO,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;YACvC,MAAM;IACV,CAAC;IAED,MAAM,EAAE,GAAG,IAAA,sBAAW,GAAE,CAAC;IACzB,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,iBAAiB,IAAI,EAAE,CAAC;IAErC,MAAM,OAAO,GAA4B;QACvC,CAAC,GAAG,IAAI,QAAQ,CAAC,EAAE,sBAAW,CAAC,SAAS,CAAC,IAAI,CAAC;QAC9C,CAAC,GAAG,IAAI,QAAQ,CAAC,EAAE,sBAAW,CAAC,SAAS,CAAC,CAAC,CAAC;QAC3C,CAAC,GAAG,IAAI,UAAU,QAAQ,OAAO,CAAC,EAAE,sBAAW,CAAC,SAAS,CAAC,IAAI,CAAC;QAC/D,CAAC,GAAG,IAAI,UAAU,QAAQ,QAAQ,CAAC,EAAE,sBAAW,CAAC,SAAS,CAAC,CAAC,CAAC;QAC7D,CAAC,GAAG,IAAI,WAAW,KAAK,CAAC,KAAK,OAAO,CAAC,EAAE,sBAAW,CAAC,SAAS,CAAC,IAAI,CAAC;KACpE,CAAC;IAEF,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACnD,OAAO,CAAC,GAAG,IAAI,WAAW,KAAK,CAAC,KAAK,IAAI,GAAG,EAAE,CAAC;YAC7C,sBAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAED,EAAE,CAAC,GAAG,EAAE;SACL,MAAM,CAAC,OAAO,CAAC;SACf,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACf,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE;YAC/C,QAAQ;YACR,KAAK,EAAE,KAAK,CAAC,EAAE;YACf,IAAI;YACJ,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAC9D,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEL,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAvDW,QAAA,UAAU,cAuDrB"}
@@ -1,5 +0,0 @@
1
- import { recipesRetriever } from "./genkit";
2
- export { recipesRetriever };
3
- export declare const generateEmbedding: (text: string, flowName: string) => Promise<number[]>;
4
- export declare const storeEmbedding: (collection: string, docId: string, text: string, flowName?: string, vectorField?: string) => Promise<void>;
5
- //# sourceMappingURL=embedding.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"embedding.d.ts","sourceRoot":"","sources":["../../../src/lib/ai/embedding.ts"],"names":[],"mappings":"AAEA,OAAO,EAA0B,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAMpE,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAE5B,eAAO,MAAM,iBAAiB,GAAU,MAAM,MAAM,EAAE,UAAU,MAAM,sBAmBrE,CAAC;AAEF,eAAO,MAAM,cAAc,GACzB,YAAY,MAAM,EAClB,OAAO,MAAM,EACb,MAAM,MAAM,EACZ,WAAW,MAAM,EACjB,cAAa,MAAoB,kBAYlC,CAAC"}