jev-recipes 0.0.4 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (527) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/README.md +52 -63
  3. package/dist/catalog/groups/answers.d.ts +565 -0
  4. package/dist/catalog/groups/answers.js +82 -0
  5. package/dist/catalog/groups/conversation.d.ts +608 -0
  6. package/dist/catalog/groups/conversation.js +90 -0
  7. package/dist/catalog/groups/knowledge.d.ts +522 -0
  8. package/dist/catalog/groups/knowledge.js +82 -0
  9. package/dist/catalog/groups/retrieval.d.ts +664 -0
  10. package/dist/catalog/groups/retrieval.js +106 -0
  11. package/dist/catalog/groups/support.d.ts +522 -0
  12. package/dist/catalog/groups/support.js +82 -0
  13. package/dist/catalog/groups/workflow.d.ts +623 -0
  14. package/dist/catalog/groups/workflow.js +98 -0
  15. package/dist/catalog/index.d.ts +1564 -5
  16. package/dist/catalog/recipes.d.ts +3239 -102
  17. package/dist/catalog/recipes.js +12 -48
  18. package/dist/catalog/schema.d.ts +65 -1
  19. package/dist/cli/index.js +1 -1
  20. package/dist/cli/schema.d.ts +191 -3
  21. package/dist/examples/support/schema.d.ts +7 -7
  22. package/dist/recipes/action-scope/index.d.ts +5 -0
  23. package/dist/recipes/action-scope/index.js +15 -0
  24. package/dist/recipes/action-scope/metadata.d.ts +8 -0
  25. package/dist/recipes/action-scope/metadata.js +10 -0
  26. package/dist/recipes/action-scope/schema.d.ts +37 -0
  27. package/dist/recipes/action-scope/schema.js +15 -0
  28. package/dist/recipes/answer-consistency/index.d.ts +5 -0
  29. package/dist/recipes/answer-consistency/index.js +16 -0
  30. package/dist/recipes/answer-consistency/metadata.d.ts +8 -0
  31. package/dist/recipes/answer-consistency/metadata.js +10 -0
  32. package/dist/recipes/answer-consistency/schema.d.ts +40 -0
  33. package/dist/recipes/answer-consistency/schema.js +20 -0
  34. package/dist/recipes/answer-coverage/index.d.ts +5 -0
  35. package/dist/recipes/answer-coverage/index.js +22 -0
  36. package/dist/recipes/answer-coverage/metadata.d.ts +8 -0
  37. package/dist/recipes/answer-coverage/metadata.js +11 -0
  38. package/dist/recipes/answer-coverage/schema.d.ts +50 -0
  39. package/dist/recipes/answer-coverage/schema.js +22 -0
  40. package/dist/recipes/answer-invalidation/index.d.ts +5 -0
  41. package/dist/recipes/answer-invalidation/index.js +15 -0
  42. package/dist/recipes/answer-invalidation/metadata.d.ts +8 -0
  43. package/dist/recipes/answer-invalidation/metadata.js +10 -0
  44. package/dist/recipes/answer-invalidation/schema.d.ts +37 -0
  45. package/dist/recipes/answer-invalidation/schema.js +19 -0
  46. package/dist/recipes/answer-relevance/index.d.ts +5 -0
  47. package/dist/recipes/answer-relevance/index.js +16 -0
  48. package/dist/recipes/answer-relevance/metadata.d.ts +8 -0
  49. package/dist/recipes/answer-relevance/metadata.js +10 -0
  50. package/dist/recipes/answer-relevance/schema.d.ts +39 -0
  51. package/dist/recipes/answer-relevance/schema.js +19 -0
  52. package/dist/recipes/answerability/index.js +15 -27
  53. package/dist/recipes/argument-fit/index.d.ts +5 -0
  54. package/dist/recipes/argument-fit/index.js +15 -0
  55. package/dist/recipes/argument-fit/metadata.d.ts +8 -0
  56. package/dist/recipes/argument-fit/metadata.js +10 -0
  57. package/dist/recipes/argument-fit/schema.d.ts +38 -0
  58. package/dist/recipes/argument-fit/schema.js +16 -0
  59. package/dist/recipes/attempted-step/index.d.ts +5 -0
  60. package/dist/recipes/attempted-step/index.js +15 -0
  61. package/dist/recipes/attempted-step/metadata.d.ts +8 -0
  62. package/dist/recipes/attempted-step/metadata.js +10 -0
  63. package/dist/recipes/attempted-step/schema.d.ts +36 -0
  64. package/dist/recipes/attempted-step/schema.js +14 -0
  65. package/dist/recipes/audience-fit/index.d.ts +5 -0
  66. package/dist/recipes/audience-fit/index.js +16 -0
  67. package/dist/recipes/audience-fit/metadata.d.ts +8 -0
  68. package/dist/recipes/audience-fit/metadata.js +10 -0
  69. package/dist/recipes/audience-fit/schema.d.ts +39 -0
  70. package/dist/recipes/audience-fit/schema.js +19 -0
  71. package/dist/recipes/cache-match/index.d.ts +5 -0
  72. package/dist/recipes/cache-match/index.js +15 -0
  73. package/dist/recipes/cache-match/metadata.d.ts +8 -0
  74. package/dist/recipes/cache-match/metadata.js +10 -0
  75. package/dist/recipes/cache-match/schema.d.ts +38 -0
  76. package/dist/recipes/cache-match/schema.js +16 -0
  77. package/dist/recipes/cancellation-check/index.d.ts +5 -0
  78. package/dist/recipes/cancellation-check/index.js +16 -0
  79. package/dist/recipes/cancellation-check/metadata.d.ts +8 -0
  80. package/dist/recipes/cancellation-check/metadata.js +10 -0
  81. package/dist/recipes/cancellation-check/schema.d.ts +40 -0
  82. package/dist/recipes/cancellation-check/schema.js +15 -0
  83. package/dist/recipes/certainty-match/index.d.ts +5 -0
  84. package/dist/recipes/certainty-match/index.js +16 -0
  85. package/dist/recipes/certainty-match/metadata.d.ts +8 -0
  86. package/dist/recipes/certainty-match/metadata.js +10 -0
  87. package/dist/recipes/certainty-match/schema.d.ts +39 -0
  88. package/dist/recipes/certainty-match/schema.js +19 -0
  89. package/dist/recipes/change-meaning/index.d.ts +5 -0
  90. package/dist/recipes/change-meaning/index.js +15 -0
  91. package/dist/recipes/change-meaning/metadata.d.ts +8 -0
  92. package/dist/recipes/change-meaning/metadata.js +10 -0
  93. package/dist/recipes/change-meaning/schema.d.ts +37 -0
  94. package/dist/recipes/change-meaning/schema.js +15 -0
  95. package/dist/recipes/citation-match/index.d.ts +5 -0
  96. package/dist/recipes/citation-match/index.js +21 -0
  97. package/dist/recipes/citation-match/metadata.d.ts +9 -0
  98. package/dist/recipes/citation-match/metadata.js +12 -0
  99. package/dist/recipes/citation-match/schema.d.ts +41 -0
  100. package/dist/recipes/citation-match/schema.js +13 -0
  101. package/dist/recipes/citation-needed/index.d.ts +5 -0
  102. package/dist/recipes/citation-needed/index.js +15 -0
  103. package/dist/recipes/citation-needed/metadata.d.ts +8 -0
  104. package/dist/recipes/citation-needed/metadata.js +10 -0
  105. package/dist/recipes/citation-needed/schema.d.ts +36 -0
  106. package/dist/recipes/citation-needed/schema.js +14 -0
  107. package/dist/recipes/clarify/index.js +15 -34
  108. package/dist/recipes/clarify/schema.d.ts +3 -3
  109. package/dist/recipes/confirmation-match/index.d.ts +5 -0
  110. package/dist/recipes/confirmation-match/index.js +15 -0
  111. package/dist/recipes/confirmation-match/metadata.d.ts +8 -0
  112. package/dist/recipes/confirmation-match/metadata.js +10 -0
  113. package/dist/recipes/confirmation-match/schema.d.ts +37 -0
  114. package/dist/recipes/confirmation-match/schema.js +15 -0
  115. package/dist/recipes/context-role/index.d.ts +5 -0
  116. package/dist/recipes/context-role/index.js +16 -0
  117. package/dist/recipes/context-role/metadata.d.ts +8 -0
  118. package/dist/recipes/context-role/metadata.js +10 -0
  119. package/dist/recipes/context-role/schema.d.ts +39 -0
  120. package/dist/recipes/context-role/schema.js +19 -0
  121. package/dist/recipes/correction-target/index.d.ts +5 -0
  122. package/dist/recipes/correction-target/index.js +7 -0
  123. package/dist/recipes/correction-target/metadata.d.ts +8 -0
  124. package/dist/recipes/correction-target/metadata.js +11 -0
  125. package/dist/recipes/correction-target/schema.d.ts +36 -0
  126. package/dist/recipes/correction-target/schema.js +9 -0
  127. package/dist/recipes/document-role/index.d.ts +5 -0
  128. package/dist/recipes/document-role/index.js +19 -0
  129. package/dist/recipes/document-role/metadata.d.ts +8 -0
  130. package/dist/recipes/document-role/metadata.js +10 -0
  131. package/dist/recipes/document-role/schema.d.ts +47 -0
  132. package/dist/recipes/document-role/schema.js +21 -0
  133. package/dist/recipes/draft-compare/index.d.ts +5 -0
  134. package/dist/recipes/draft-compare/index.js +17 -0
  135. package/dist/recipes/draft-compare/metadata.d.ts +8 -0
  136. package/dist/recipes/draft-compare/metadata.js +10 -0
  137. package/dist/recipes/draft-compare/schema.d.ts +44 -0
  138. package/dist/recipes/draft-compare/schema.js +16 -0
  139. package/dist/recipes/evidence-conflict/index.d.ts +5 -0
  140. package/dist/recipes/evidence-conflict/index.js +16 -0
  141. package/dist/recipes/evidence-conflict/metadata.d.ts +8 -0
  142. package/dist/recipes/evidence-conflict/metadata.js +10 -0
  143. package/dist/recipes/evidence-conflict/schema.d.ts +40 -0
  144. package/dist/recipes/evidence-conflict/schema.js +20 -0
  145. package/dist/recipes/evidence-novelty/index.d.ts +5 -0
  146. package/dist/recipes/evidence-novelty/index.js +16 -0
  147. package/dist/recipes/evidence-novelty/metadata.d.ts +8 -0
  148. package/dist/recipes/evidence-novelty/metadata.js +11 -0
  149. package/dist/recipes/evidence-novelty/schema.d.ts +43 -0
  150. package/dist/recipes/evidence-novelty/schema.js +20 -0
  151. package/dist/recipes/fact-stability/index.d.ts +5 -0
  152. package/dist/recipes/fact-stability/index.js +15 -0
  153. package/dist/recipes/fact-stability/metadata.d.ts +8 -0
  154. package/dist/recipes/fact-stability/metadata.js +10 -0
  155. package/dist/recipes/fact-stability/schema.d.ts +36 -0
  156. package/dist/recipes/fact-stability/schema.js +14 -0
  157. package/dist/recipes/failure-kind/index.d.ts +5 -0
  158. package/dist/recipes/failure-kind/index.js +7 -0
  159. package/dist/recipes/failure-kind/metadata.d.ts +8 -0
  160. package/dist/recipes/failure-kind/metadata.js +11 -0
  161. package/dist/recipes/failure-kind/schema.d.ts +36 -0
  162. package/dist/recipes/failure-kind/schema.js +9 -0
  163. package/dist/recipes/feedback-kind/index.d.ts +5 -0
  164. package/dist/recipes/feedback-kind/index.js +19 -0
  165. package/dist/recipes/feedback-kind/metadata.d.ts +8 -0
  166. package/dist/recipes/feedback-kind/metadata.js +10 -0
  167. package/dist/recipes/feedback-kind/schema.d.ts +48 -0
  168. package/dist/recipes/feedback-kind/schema.js +22 -0
  169. package/dist/recipes/field-select/index.d.ts +5 -0
  170. package/dist/recipes/field-select/index.js +7 -0
  171. package/dist/recipes/field-select/metadata.d.ts +8 -0
  172. package/dist/recipes/field-select/metadata.js +11 -0
  173. package/dist/recipes/field-select/schema.d.ts +36 -0
  174. package/dist/recipes/field-select/schema.js +9 -0
  175. package/dist/recipes/followup-link/index.d.ts +5 -0
  176. package/dist/recipes/followup-link/index.js +7 -0
  177. package/dist/recipes/followup-link/metadata.d.ts +8 -0
  178. package/dist/recipes/followup-link/metadata.js +11 -0
  179. package/dist/recipes/followup-link/schema.d.ts +36 -0
  180. package/dist/recipes/followup-link/schema.js +9 -0
  181. package/dist/recipes/freshness-needed/index.d.ts +5 -0
  182. package/dist/recipes/freshness-needed/index.js +15 -0
  183. package/dist/recipes/freshness-needed/metadata.d.ts +8 -0
  184. package/dist/recipes/freshness-needed/metadata.js +10 -0
  185. package/dist/recipes/freshness-needed/schema.d.ts +35 -0
  186. package/dist/recipes/freshness-needed/schema.js +13 -0
  187. package/dist/recipes/frustration-signal/index.d.ts +5 -0
  188. package/dist/recipes/frustration-signal/index.js +15 -0
  189. package/dist/recipes/frustration-signal/metadata.d.ts +8 -0
  190. package/dist/recipes/frustration-signal/metadata.js +10 -0
  191. package/dist/recipes/frustration-signal/schema.d.ts +36 -0
  192. package/dist/recipes/frustration-signal/schema.js +14 -0
  193. package/dist/recipes/handoff/index.js +16 -35
  194. package/dist/recipes/incident-match/index.d.ts +5 -0
  195. package/dist/recipes/incident-match/index.js +7 -0
  196. package/dist/recipes/incident-match/metadata.d.ts +8 -0
  197. package/dist/recipes/incident-match/metadata.js +11 -0
  198. package/dist/recipes/incident-match/schema.d.ts +36 -0
  199. package/dist/recipes/incident-match/schema.js +9 -0
  200. package/dist/recipes/instruction-fit/index.d.ts +5 -0
  201. package/dist/recipes/instruction-fit/index.js +15 -0
  202. package/dist/recipes/instruction-fit/metadata.d.ts +8 -0
  203. package/dist/recipes/instruction-fit/metadata.js +10 -0
  204. package/dist/recipes/instruction-fit/schema.d.ts +37 -0
  205. package/dist/recipes/instruction-fit/schema.js +15 -0
  206. package/dist/recipes/intent-change/index.d.ts +5 -0
  207. package/dist/recipes/intent-change/index.js +16 -0
  208. package/dist/recipes/intent-change/metadata.d.ts +8 -0
  209. package/dist/recipes/intent-change/metadata.js +10 -0
  210. package/dist/recipes/intent-change/schema.d.ts +40 -0
  211. package/dist/recipes/intent-change/schema.js +15 -0
  212. package/dist/recipes/issue-impact/index.d.ts +5 -0
  213. package/dist/recipes/issue-impact/index.js +16 -0
  214. package/dist/recipes/issue-impact/metadata.d.ts +8 -0
  215. package/dist/recipes/issue-impact/metadata.js +10 -0
  216. package/dist/recipes/issue-impact/schema.d.ts +39 -0
  217. package/dist/recipes/issue-impact/schema.js +14 -0
  218. package/dist/recipes/memory-relation/index.d.ts +5 -0
  219. package/dist/recipes/memory-relation/index.js +18 -0
  220. package/dist/recipes/memory-relation/metadata.d.ts +8 -0
  221. package/dist/recipes/memory-relation/metadata.js +10 -0
  222. package/dist/recipes/memory-relation/schema.d.ts +46 -0
  223. package/dist/recipes/memory-relation/schema.js +22 -0
  224. package/dist/recipes/memory-scope/index.d.ts +5 -0
  225. package/dist/recipes/memory-scope/index.js +17 -0
  226. package/dist/recipes/memory-scope/metadata.d.ts +8 -0
  227. package/dist/recipes/memory-scope/metadata.js +10 -0
  228. package/dist/recipes/memory-scope/schema.d.ts +42 -0
  229. package/dist/recipes/memory-scope/schema.js +14 -0
  230. package/dist/recipes/memory-value/index.d.ts +5 -0
  231. package/dist/recipes/memory-value/index.js +16 -0
  232. package/dist/recipes/memory-value/metadata.d.ts +8 -0
  233. package/dist/recipes/memory-value/metadata.js +10 -0
  234. package/dist/recipes/memory-value/schema.d.ts +40 -0
  235. package/dist/recipes/memory-value/schema.js +20 -0
  236. package/dist/recipes/passage-duplicate/index.d.ts +5 -0
  237. package/dist/recipes/passage-duplicate/index.js +16 -0
  238. package/dist/recipes/passage-duplicate/metadata.d.ts +8 -0
  239. package/dist/recipes/passage-duplicate/metadata.js +10 -0
  240. package/dist/recipes/passage-duplicate/schema.d.ts +39 -0
  241. package/dist/recipes/passage-duplicate/schema.js +19 -0
  242. package/dist/recipes/preference-kind/index.d.ts +5 -0
  243. package/dist/recipes/preference-kind/index.js +16 -0
  244. package/dist/recipes/preference-kind/metadata.d.ts +8 -0
  245. package/dist/recipes/preference-kind/metadata.js +10 -0
  246. package/dist/recipes/preference-kind/schema.d.ts +39 -0
  247. package/dist/recipes/preference-kind/schema.js +19 -0
  248. package/dist/recipes/promise-check/index.d.ts +5 -0
  249. package/dist/recipes/promise-check/index.js +15 -0
  250. package/dist/recipes/promise-check/metadata.d.ts +8 -0
  251. package/dist/recipes/promise-check/metadata.js +10 -0
  252. package/dist/recipes/promise-check/schema.d.ts +36 -0
  253. package/dist/recipes/promise-check/schema.js +14 -0
  254. package/dist/recipes/query-equivalence/index.d.ts +5 -0
  255. package/dist/recipes/query-equivalence/index.js +16 -0
  256. package/dist/recipes/query-equivalence/metadata.d.ts +8 -0
  257. package/dist/recipes/query-equivalence/metadata.js +10 -0
  258. package/dist/recipes/query-equivalence/schema.d.ts +40 -0
  259. package/dist/recipes/query-equivalence/schema.js +20 -0
  260. package/dist/recipes/query-specificity/index.d.ts +5 -0
  261. package/dist/recipes/query-specificity/index.js +15 -0
  262. package/dist/recipes/query-specificity/metadata.d.ts +8 -0
  263. package/dist/recipes/query-specificity/metadata.js +10 -0
  264. package/dist/recipes/query-specificity/schema.d.ts +36 -0
  265. package/dist/recipes/query-specificity/schema.js +14 -0
  266. package/dist/recipes/reference-resolve/index.d.ts +5 -0
  267. package/dist/recipes/reference-resolve/index.js +7 -0
  268. package/dist/recipes/reference-resolve/metadata.d.ts +8 -0
  269. package/dist/recipes/reference-resolve/metadata.js +11 -0
  270. package/dist/recipes/reference-resolve/schema.d.ts +37 -0
  271. package/dist/recipes/reference-resolve/schema.js +10 -0
  272. package/dist/recipes/repeated-attempt/index.d.ts +5 -0
  273. package/dist/recipes/repeated-attempt/index.js +15 -0
  274. package/dist/recipes/repeated-attempt/metadata.d.ts +8 -0
  275. package/dist/recipes/repeated-attempt/metadata.js +10 -0
  276. package/dist/recipes/repeated-attempt/schema.d.ts +37 -0
  277. package/dist/recipes/repeated-attempt/schema.js +19 -0
  278. package/dist/recipes/reply-template-match/index.d.ts +5 -0
  279. package/dist/recipes/reply-template-match/index.js +7 -0
  280. package/dist/recipes/reply-template-match/metadata.d.ts +8 -0
  281. package/dist/recipes/reply-template-match/metadata.js +11 -0
  282. package/dist/recipes/reply-template-match/schema.d.ts +36 -0
  283. package/dist/recipes/reply-template-match/schema.js +9 -0
  284. package/dist/recipes/rerank/index.js +7 -7
  285. package/dist/recipes/resolution-check/index.d.ts +5 -0
  286. package/dist/recipes/resolution-check/index.js +15 -0
  287. package/dist/recipes/resolution-check/metadata.d.ts +8 -0
  288. package/dist/recipes/resolution-check/metadata.js +10 -0
  289. package/dist/recipes/resolution-check/schema.d.ts +37 -0
  290. package/dist/recipes/resolution-check/schema.js +15 -0
  291. package/dist/recipes/response-needed/index.d.ts +5 -0
  292. package/dist/recipes/response-needed/index.js +15 -0
  293. package/dist/recipes/response-needed/metadata.d.ts +8 -0
  294. package/dist/recipes/response-needed/metadata.js +10 -0
  295. package/dist/recipes/response-needed/schema.d.ts +36 -0
  296. package/dist/recipes/response-needed/schema.js +14 -0
  297. package/dist/recipes/result-outcome/index.d.ts +5 -0
  298. package/dist/recipes/result-outcome/index.js +16 -0
  299. package/dist/recipes/result-outcome/metadata.d.ts +8 -0
  300. package/dist/recipes/result-outcome/metadata.js +10 -0
  301. package/dist/recipes/result-outcome/schema.d.ts +39 -0
  302. package/dist/recipes/result-outcome/schema.js +19 -0
  303. package/dist/recipes/result-usefulness/index.d.ts +5 -0
  304. package/dist/recipes/result-usefulness/index.js +16 -0
  305. package/dist/recipes/result-usefulness/metadata.d.ts +8 -0
  306. package/dist/recipes/result-usefulness/metadata.js +10 -0
  307. package/dist/recipes/result-usefulness/schema.d.ts +39 -0
  308. package/dist/recipes/result-usefulness/schema.js +19 -0
  309. package/dist/recipes/retrieval-needed/index.d.ts +5 -0
  310. package/dist/recipes/retrieval-needed/index.js +15 -0
  311. package/dist/recipes/retrieval-needed/metadata.d.ts +8 -0
  312. package/dist/recipes/retrieval-needed/metadata.js +10 -0
  313. package/dist/recipes/retrieval-needed/schema.d.ts +36 -0
  314. package/dist/recipes/retrieval-needed/schema.js +14 -0
  315. package/dist/recipes/route/index.js +12 -21
  316. package/dist/recipes/source-applicability/index.d.ts +5 -0
  317. package/dist/recipes/source-applicability/index.js +15 -0
  318. package/dist/recipes/source-applicability/metadata.d.ts +8 -0
  319. package/dist/recipes/source-applicability/metadata.js +10 -0
  320. package/dist/recipes/source-applicability/schema.d.ts +36 -0
  321. package/dist/recipes/source-applicability/schema.js +14 -0
  322. package/dist/recipes/step-complete/index.d.ts +5 -0
  323. package/dist/recipes/step-complete/index.js +15 -0
  324. package/dist/recipes/step-complete/metadata.d.ts +8 -0
  325. package/dist/recipes/step-complete/metadata.js +10 -0
  326. package/dist/recipes/step-complete/schema.d.ts +36 -0
  327. package/dist/recipes/step-complete/schema.js +14 -0
  328. package/dist/recipes/step-progress/index.d.ts +5 -0
  329. package/dist/recipes/step-progress/index.js +16 -0
  330. package/dist/recipes/step-progress/metadata.d.ts +8 -0
  331. package/dist/recipes/step-progress/metadata.js +10 -0
  332. package/dist/recipes/step-progress/schema.d.ts +40 -0
  333. package/dist/recipes/step-progress/schema.js +15 -0
  334. package/dist/recipes/summary-coverage/index.d.ts +5 -0
  335. package/dist/recipes/summary-coverage/index.js +22 -0
  336. package/dist/recipes/summary-coverage/metadata.d.ts +8 -0
  337. package/dist/recipes/summary-coverage/metadata.js +11 -0
  338. package/dist/recipes/summary-coverage/schema.d.ts +50 -0
  339. package/dist/recipes/summary-coverage/schema.js +22 -0
  340. package/dist/recipes/ticket-match/index.d.ts +5 -0
  341. package/dist/recipes/ticket-match/index.js +16 -0
  342. package/dist/recipes/ticket-match/metadata.d.ts +8 -0
  343. package/dist/recipes/ticket-match/metadata.js +10 -0
  344. package/dist/recipes/ticket-match/schema.d.ts +40 -0
  345. package/dist/recipes/ticket-match/schema.js +15 -0
  346. package/dist/recipes/tone-check/index.d.ts +5 -0
  347. package/dist/recipes/tone-check/index.js +21 -0
  348. package/dist/recipes/tone-check/metadata.d.ts +8 -0
  349. package/dist/recipes/tone-check/metadata.js +11 -0
  350. package/dist/recipes/tone-check/schema.d.ts +47 -0
  351. package/dist/recipes/tone-check/schema.js +22 -0
  352. package/dist/recipes/tool-fit/index.d.ts +5 -0
  353. package/dist/recipes/tool-fit/index.js +15 -0
  354. package/dist/recipes/tool-fit/metadata.d.ts +8 -0
  355. package/dist/recipes/tool-fit/metadata.js +10 -0
  356. package/dist/recipes/tool-fit/schema.d.ts +37 -0
  357. package/dist/recipes/tool-fit/schema.js +15 -0
  358. package/dist/recipes/topic-shift/index.d.ts +5 -0
  359. package/dist/recipes/topic-shift/index.js +16 -0
  360. package/dist/recipes/topic-shift/metadata.d.ts +8 -0
  361. package/dist/recipes/topic-shift/metadata.js +10 -0
  362. package/dist/recipes/topic-shift/schema.d.ts +40 -0
  363. package/dist/recipes/topic-shift/schema.js +15 -0
  364. package/dist/recipes/troubleshooting-fit/index.d.ts +5 -0
  365. package/dist/recipes/troubleshooting-fit/index.js +15 -0
  366. package/dist/recipes/troubleshooting-fit/metadata.d.ts +8 -0
  367. package/dist/recipes/troubleshooting-fit/metadata.js +10 -0
  368. package/dist/recipes/troubleshooting-fit/schema.d.ts +37 -0
  369. package/dist/recipes/troubleshooting-fit/schema.js +15 -0
  370. package/dist/recipes/turn-intent/index.d.ts +5 -0
  371. package/dist/recipes/turn-intent/index.js +19 -0
  372. package/dist/recipes/turn-intent/metadata.d.ts +8 -0
  373. package/dist/recipes/turn-intent/metadata.js +10 -0
  374. package/dist/recipes/turn-intent/schema.d.ts +48 -0
  375. package/dist/recipes/turn-intent/schema.js +22 -0
  376. package/dist/recipes/urgency-signal/index.d.ts +5 -0
  377. package/dist/recipes/urgency-signal/index.js +15 -0
  378. package/dist/recipes/urgency-signal/metadata.d.ts +8 -0
  379. package/dist/recipes/urgency-signal/metadata.js +10 -0
  380. package/dist/recipes/urgency-signal/schema.d.ts +36 -0
  381. package/dist/recipes/urgency-signal/schema.js +14 -0
  382. package/dist/recipes/verify/index.js +11 -31
  383. package/dist/recipes/workaround-fit/index.d.ts +5 -0
  384. package/dist/recipes/workaround-fit/index.js +15 -0
  385. package/dist/recipes/workaround-fit/metadata.d.ts +8 -0
  386. package/dist/recipes/workaround-fit/metadata.js +10 -0
  387. package/dist/recipes/workaround-fit/schema.d.ts +37 -0
  388. package/dist/recipes/workaround-fit/schema.js +15 -0
  389. package/dist/src/checks.d.ts +14 -0
  390. package/dist/src/checks.js +21 -0
  391. package/dist/src/decisions.d.ts +13 -0
  392. package/dist/src/decisions.js +26 -0
  393. package/dist/src/index.d.ts +120 -0
  394. package/dist/src/index.js +60 -0
  395. package/dist/src/schema.d.ts +48 -0
  396. package/dist/src/schema.js +30 -1
  397. package/dist/src/selection.d.ts +2 -0
  398. package/dist/src/selection.js +30 -0
  399. package/examples/support/README.md +1 -1
  400. package/package.json +254 -7
  401. package/recipes/README.md +128 -0
  402. package/recipes/action-scope/README.md +49 -0
  403. package/recipes/action-scope/demo.json +25 -0
  404. package/recipes/answer-consistency/README.md +50 -0
  405. package/recipes/answer-consistency/demo.json +26 -0
  406. package/recipes/answer-coverage/README.md +60 -0
  407. package/recipes/answer-coverage/demo.json +46 -0
  408. package/recipes/answer-invalidation/README.md +50 -0
  409. package/recipes/answer-invalidation/demo.json +26 -0
  410. package/recipes/answer-relevance/README.md +49 -0
  411. package/recipes/answer-relevance/demo.json +26 -0
  412. package/recipes/answerability/README.md +39 -14
  413. package/recipes/argument-fit/README.md +51 -0
  414. package/recipes/argument-fit/demo.json +26 -0
  415. package/recipes/attempted-step/README.md +48 -0
  416. package/recipes/attempted-step/demo.json +25 -0
  417. package/recipes/audience-fit/README.md +50 -0
  418. package/recipes/audience-fit/demo.json +26 -0
  419. package/recipes/cache-match/README.md +51 -0
  420. package/recipes/cache-match/demo.json +26 -0
  421. package/recipes/cancellation-check/README.md +50 -0
  422. package/recipes/cancellation-check/demo.json +26 -0
  423. package/recipes/certainty-match/README.md +49 -0
  424. package/recipes/certainty-match/demo.json +26 -0
  425. package/recipes/change-meaning/README.md +49 -0
  426. package/recipes/change-meaning/demo.json +25 -0
  427. package/recipes/citation-match/README.md +51 -0
  428. package/recipes/citation-match/demo.json +44 -0
  429. package/recipes/citation-needed/README.md +49 -0
  430. package/recipes/citation-needed/demo.json +25 -0
  431. package/recipes/clarify/README.md +42 -13
  432. package/recipes/confirmation-match/README.md +49 -0
  433. package/recipes/confirmation-match/demo.json +25 -0
  434. package/recipes/context-role/README.md +49 -0
  435. package/recipes/context-role/demo.json +26 -0
  436. package/recipes/correction-target/README.md +52 -0
  437. package/recipes/correction-target/demo.json +35 -0
  438. package/recipes/document-role/README.md +51 -0
  439. package/recipes/document-role/demo.json +28 -0
  440. package/recipes/draft-compare/README.md +54 -0
  441. package/recipes/draft-compare/demo.json +29 -0
  442. package/recipes/evidence-conflict/README.md +51 -0
  443. package/recipes/evidence-conflict/demo.json +27 -0
  444. package/recipes/evidence-novelty/README.md +56 -0
  445. package/recipes/evidence-novelty/demo.json +32 -0
  446. package/recipes/fact-stability/README.md +47 -0
  447. package/recipes/fact-stability/demo.json +24 -0
  448. package/recipes/failure-kind/README.md +52 -0
  449. package/recipes/failure-kind/demo.json +35 -0
  450. package/recipes/feedback-kind/README.md +51 -0
  451. package/recipes/feedback-kind/demo.json +28 -0
  452. package/recipes/field-select/README.md +53 -0
  453. package/recipes/field-select/demo.json +36 -0
  454. package/recipes/followup-link/README.md +52 -0
  455. package/recipes/followup-link/demo.json +35 -0
  456. package/recipes/freshness-needed/README.md +46 -0
  457. package/recipes/freshness-needed/demo.json +24 -0
  458. package/recipes/frustration-signal/README.md +47 -0
  459. package/recipes/frustration-signal/demo.json +24 -0
  460. package/recipes/handoff/README.md +34 -13
  461. package/recipes/incident-match/README.md +52 -0
  462. package/recipes/incident-match/demo.json +35 -0
  463. package/recipes/instruction-fit/README.md +49 -0
  464. package/recipes/instruction-fit/demo.json +25 -0
  465. package/recipes/intent-change/README.md +50 -0
  466. package/recipes/intent-change/demo.json +26 -0
  467. package/recipes/issue-impact/README.md +48 -0
  468. package/recipes/issue-impact/demo.json +25 -0
  469. package/recipes/memory-relation/README.md +52 -0
  470. package/recipes/memory-relation/demo.json +28 -0
  471. package/recipes/memory-scope/README.md +50 -0
  472. package/recipes/memory-scope/demo.json +27 -0
  473. package/recipes/memory-value/README.md +50 -0
  474. package/recipes/memory-value/demo.json +26 -0
  475. package/recipes/passage-duplicate/README.md +49 -0
  476. package/recipes/passage-duplicate/demo.json +26 -0
  477. package/recipes/preference-kind/README.md +48 -0
  478. package/recipes/preference-kind/demo.json +25 -0
  479. package/recipes/promise-check/README.md +48 -0
  480. package/recipes/promise-check/demo.json +25 -0
  481. package/recipes/query-equivalence/README.md +50 -0
  482. package/recipes/query-equivalence/demo.json +26 -0
  483. package/recipes/query-specificity/README.md +47 -0
  484. package/recipes/query-specificity/demo.json +24 -0
  485. package/recipes/reference-resolve/README.md +54 -0
  486. package/recipes/reference-resolve/demo.json +36 -0
  487. package/recipes/repeated-attempt/README.md +50 -0
  488. package/recipes/repeated-attempt/demo.json +26 -0
  489. package/recipes/reply-template-match/README.md +52 -0
  490. package/recipes/reply-template-match/demo.json +35 -0
  491. package/recipes/rerank/README.md +40 -10
  492. package/recipes/resolution-check/README.md +49 -0
  493. package/recipes/resolution-check/demo.json +25 -0
  494. package/recipes/response-needed/README.md +48 -0
  495. package/recipes/response-needed/demo.json +25 -0
  496. package/recipes/result-outcome/README.md +49 -0
  497. package/recipes/result-outcome/demo.json +26 -0
  498. package/recipes/result-usefulness/README.md +49 -0
  499. package/recipes/result-usefulness/demo.json +26 -0
  500. package/recipes/retrieval-needed/README.md +48 -0
  501. package/recipes/retrieval-needed/demo.json +25 -0
  502. package/recipes/route/README.md +30 -7
  503. package/recipes/source-applicability/README.md +48 -0
  504. package/recipes/source-applicability/demo.json +25 -0
  505. package/recipes/step-complete/README.md +48 -0
  506. package/recipes/step-complete/demo.json +25 -0
  507. package/recipes/step-progress/README.md +51 -0
  508. package/recipes/step-progress/demo.json +27 -0
  509. package/recipes/summary-coverage/README.md +60 -0
  510. package/recipes/summary-coverage/demo.json +46 -0
  511. package/recipes/ticket-match/README.md +50 -0
  512. package/recipes/ticket-match/demo.json +26 -0
  513. package/recipes/tone-check/README.md +55 -0
  514. package/recipes/tone-check/demo.json +30 -0
  515. package/recipes/tool-fit/README.md +49 -0
  516. package/recipes/tool-fit/demo.json +25 -0
  517. package/recipes/topic-shift/README.md +50 -0
  518. package/recipes/topic-shift/demo.json +26 -0
  519. package/recipes/troubleshooting-fit/README.md +49 -0
  520. package/recipes/troubleshooting-fit/demo.json +25 -0
  521. package/recipes/turn-intent/README.md +52 -0
  522. package/recipes/turn-intent/demo.json +29 -0
  523. package/recipes/urgency-signal/README.md +47 -0
  524. package/recipes/urgency-signal/demo.json +24 -0
  525. package/recipes/verify/README.md +37 -13
  526. package/recipes/workaround-fit/README.md +50 -0
  527. package/recipes/workaround-fit/demo.json +26 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jev-recipes",
3
- "version": "0.0.4",
3
+ "version": "0.2.0",
4
4
  "description": "Small, composable Jev decisions for retrieval, conversations, and agent workflows.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -47,6 +47,246 @@
47
47
  "./catalog": {
48
48
  "types": "./dist/catalog/index.d.ts",
49
49
  "import": "./dist/catalog/index.js"
50
+ },
51
+ "./answer-coverage": {
52
+ "types": "./dist/recipes/answer-coverage/index.d.ts",
53
+ "import": "./dist/recipes/answer-coverage/index.js"
54
+ },
55
+ "./answer-relevance": {
56
+ "types": "./dist/recipes/answer-relevance/index.d.ts",
57
+ "import": "./dist/recipes/answer-relevance/index.js"
58
+ },
59
+ "./citation-match": {
60
+ "types": "./dist/recipes/citation-match/index.d.ts",
61
+ "import": "./dist/recipes/citation-match/index.js"
62
+ },
63
+ "./citation-needed": {
64
+ "types": "./dist/recipes/citation-needed/index.d.ts",
65
+ "import": "./dist/recipes/citation-needed/index.js"
66
+ },
67
+ "./answer-consistency": {
68
+ "types": "./dist/recipes/answer-consistency/index.d.ts",
69
+ "import": "./dist/recipes/answer-consistency/index.js"
70
+ },
71
+ "./summary-coverage": {
72
+ "types": "./dist/recipes/summary-coverage/index.d.ts",
73
+ "import": "./dist/recipes/summary-coverage/index.js"
74
+ },
75
+ "./certainty-match": {
76
+ "types": "./dist/recipes/certainty-match/index.d.ts",
77
+ "import": "./dist/recipes/certainty-match/index.js"
78
+ },
79
+ "./promise-check": {
80
+ "types": "./dist/recipes/promise-check/index.d.ts",
81
+ "import": "./dist/recipes/promise-check/index.js"
82
+ },
83
+ "./tone-check": {
84
+ "types": "./dist/recipes/tone-check/index.d.ts",
85
+ "import": "./dist/recipes/tone-check/index.js"
86
+ },
87
+ "./draft-compare": {
88
+ "types": "./dist/recipes/draft-compare/index.d.ts",
89
+ "import": "./dist/recipes/draft-compare/index.js"
90
+ },
91
+ "./retrieval-needed": {
92
+ "types": "./dist/recipes/retrieval-needed/index.d.ts",
93
+ "import": "./dist/recipes/retrieval-needed/index.js"
94
+ },
95
+ "./freshness-needed": {
96
+ "types": "./dist/recipes/freshness-needed/index.d.ts",
97
+ "import": "./dist/recipes/freshness-needed/index.js"
98
+ },
99
+ "./source-applicability": {
100
+ "types": "./dist/recipes/source-applicability/index.d.ts",
101
+ "import": "./dist/recipes/source-applicability/index.js"
102
+ },
103
+ "./evidence-conflict": {
104
+ "types": "./dist/recipes/evidence-conflict/index.d.ts",
105
+ "import": "./dist/recipes/evidence-conflict/index.js"
106
+ },
107
+ "./passage-duplicate": {
108
+ "types": "./dist/recipes/passage-duplicate/index.d.ts",
109
+ "import": "./dist/recipes/passage-duplicate/index.js"
110
+ },
111
+ "./evidence-novelty": {
112
+ "types": "./dist/recipes/evidence-novelty/index.d.ts",
113
+ "import": "./dist/recipes/evidence-novelty/index.js"
114
+ },
115
+ "./cache-match": {
116
+ "types": "./dist/recipes/cache-match/index.d.ts",
117
+ "import": "./dist/recipes/cache-match/index.js"
118
+ },
119
+ "./query-equivalence": {
120
+ "types": "./dist/recipes/query-equivalence/index.d.ts",
121
+ "import": "./dist/recipes/query-equivalence/index.js"
122
+ },
123
+ "./context-role": {
124
+ "types": "./dist/recipes/context-role/index.d.ts",
125
+ "import": "./dist/recipes/context-role/index.js"
126
+ },
127
+ "./query-specificity": {
128
+ "types": "./dist/recipes/query-specificity/index.d.ts",
129
+ "import": "./dist/recipes/query-specificity/index.js"
130
+ },
131
+ "./turn-intent": {
132
+ "types": "./dist/recipes/turn-intent/index.d.ts",
133
+ "import": "./dist/recipes/turn-intent/index.js"
134
+ },
135
+ "./followup-link": {
136
+ "types": "./dist/recipes/followup-link/index.d.ts",
137
+ "import": "./dist/recipes/followup-link/index.js"
138
+ },
139
+ "./reference-resolve": {
140
+ "types": "./dist/recipes/reference-resolve/index.d.ts",
141
+ "import": "./dist/recipes/reference-resolve/index.js"
142
+ },
143
+ "./intent-change": {
144
+ "types": "./dist/recipes/intent-change/index.d.ts",
145
+ "import": "./dist/recipes/intent-change/index.js"
146
+ },
147
+ "./correction-target": {
148
+ "types": "./dist/recipes/correction-target/index.d.ts",
149
+ "import": "./dist/recipes/correction-target/index.js"
150
+ },
151
+ "./confirmation-match": {
152
+ "types": "./dist/recipes/confirmation-match/index.d.ts",
153
+ "import": "./dist/recipes/confirmation-match/index.js"
154
+ },
155
+ "./cancellation-check": {
156
+ "types": "./dist/recipes/cancellation-check/index.d.ts",
157
+ "import": "./dist/recipes/cancellation-check/index.js"
158
+ },
159
+ "./topic-shift": {
160
+ "types": "./dist/recipes/topic-shift/index.d.ts",
161
+ "import": "./dist/recipes/topic-shift/index.js"
162
+ },
163
+ "./response-needed": {
164
+ "types": "./dist/recipes/response-needed/index.d.ts",
165
+ "import": "./dist/recipes/response-needed/index.js"
166
+ },
167
+ "./resolution-check": {
168
+ "types": "./dist/recipes/resolution-check/index.d.ts",
169
+ "import": "./dist/recipes/resolution-check/index.js"
170
+ },
171
+ "./tool-fit": {
172
+ "types": "./dist/recipes/tool-fit/index.d.ts",
173
+ "import": "./dist/recipes/tool-fit/index.js"
174
+ },
175
+ "./argument-fit": {
176
+ "types": "./dist/recipes/argument-fit/index.d.ts",
177
+ "import": "./dist/recipes/argument-fit/index.js"
178
+ },
179
+ "./result-usefulness": {
180
+ "types": "./dist/recipes/result-usefulness/index.d.ts",
181
+ "import": "./dist/recipes/result-usefulness/index.js"
182
+ },
183
+ "./result-outcome": {
184
+ "types": "./dist/recipes/result-outcome/index.d.ts",
185
+ "import": "./dist/recipes/result-outcome/index.js"
186
+ },
187
+ "./action-scope": {
188
+ "types": "./dist/recipes/action-scope/index.d.ts",
189
+ "import": "./dist/recipes/action-scope/index.js"
190
+ },
191
+ "./step-progress": {
192
+ "types": "./dist/recipes/step-progress/index.d.ts",
193
+ "import": "./dist/recipes/step-progress/index.js"
194
+ },
195
+ "./repeated-attempt": {
196
+ "types": "./dist/recipes/repeated-attempt/index.d.ts",
197
+ "import": "./dist/recipes/repeated-attempt/index.js"
198
+ },
199
+ "./step-complete": {
200
+ "types": "./dist/recipes/step-complete/index.d.ts",
201
+ "import": "./dist/recipes/step-complete/index.js"
202
+ },
203
+ "./failure-kind": {
204
+ "types": "./dist/recipes/failure-kind/index.d.ts",
205
+ "import": "./dist/recipes/failure-kind/index.js"
206
+ },
207
+ "./instruction-fit": {
208
+ "types": "./dist/recipes/instruction-fit/index.d.ts",
209
+ "import": "./dist/recipes/instruction-fit/index.js"
210
+ },
211
+ "./issue-impact": {
212
+ "types": "./dist/recipes/issue-impact/index.d.ts",
213
+ "import": "./dist/recipes/issue-impact/index.js"
214
+ },
215
+ "./attempted-step": {
216
+ "types": "./dist/recipes/attempted-step/index.d.ts",
217
+ "import": "./dist/recipes/attempted-step/index.js"
218
+ },
219
+ "./workaround-fit": {
220
+ "types": "./dist/recipes/workaround-fit/index.d.ts",
221
+ "import": "./dist/recipes/workaround-fit/index.js"
222
+ },
223
+ "./ticket-match": {
224
+ "types": "./dist/recipes/ticket-match/index.d.ts",
225
+ "import": "./dist/recipes/ticket-match/index.js"
226
+ },
227
+ "./incident-match": {
228
+ "types": "./dist/recipes/incident-match/index.d.ts",
229
+ "import": "./dist/recipes/incident-match/index.js"
230
+ },
231
+ "./troubleshooting-fit": {
232
+ "types": "./dist/recipes/troubleshooting-fit/index.d.ts",
233
+ "import": "./dist/recipes/troubleshooting-fit/index.js"
234
+ },
235
+ "./frustration-signal": {
236
+ "types": "./dist/recipes/frustration-signal/index.d.ts",
237
+ "import": "./dist/recipes/frustration-signal/index.js"
238
+ },
239
+ "./urgency-signal": {
240
+ "types": "./dist/recipes/urgency-signal/index.d.ts",
241
+ "import": "./dist/recipes/urgency-signal/index.js"
242
+ },
243
+ "./feedback-kind": {
244
+ "types": "./dist/recipes/feedback-kind/index.d.ts",
245
+ "import": "./dist/recipes/feedback-kind/index.js"
246
+ },
247
+ "./reply-template-match": {
248
+ "types": "./dist/recipes/reply-template-match/index.d.ts",
249
+ "import": "./dist/recipes/reply-template-match/index.js"
250
+ },
251
+ "./memory-value": {
252
+ "types": "./dist/recipes/memory-value/index.d.ts",
253
+ "import": "./dist/recipes/memory-value/index.js"
254
+ },
255
+ "./memory-scope": {
256
+ "types": "./dist/recipes/memory-scope/index.d.ts",
257
+ "import": "./dist/recipes/memory-scope/index.js"
258
+ },
259
+ "./memory-relation": {
260
+ "types": "./dist/recipes/memory-relation/index.d.ts",
261
+ "import": "./dist/recipes/memory-relation/index.js"
262
+ },
263
+ "./preference-kind": {
264
+ "types": "./dist/recipes/preference-kind/index.d.ts",
265
+ "import": "./dist/recipes/preference-kind/index.js"
266
+ },
267
+ "./fact-stability": {
268
+ "types": "./dist/recipes/fact-stability/index.d.ts",
269
+ "import": "./dist/recipes/fact-stability/index.js"
270
+ },
271
+ "./document-role": {
272
+ "types": "./dist/recipes/document-role/index.d.ts",
273
+ "import": "./dist/recipes/document-role/index.js"
274
+ },
275
+ "./audience-fit": {
276
+ "types": "./dist/recipes/audience-fit/index.d.ts",
277
+ "import": "./dist/recipes/audience-fit/index.js"
278
+ },
279
+ "./change-meaning": {
280
+ "types": "./dist/recipes/change-meaning/index.d.ts",
281
+ "import": "./dist/recipes/change-meaning/index.js"
282
+ },
283
+ "./answer-invalidation": {
284
+ "types": "./dist/recipes/answer-invalidation/index.d.ts",
285
+ "import": "./dist/recipes/answer-invalidation/index.js"
286
+ },
287
+ "./field-select": {
288
+ "types": "./dist/recipes/field-select/index.d.ts",
289
+ "import": "./dist/recipes/field-select/index.js"
50
290
  }
51
291
  },
52
292
  "bin": {
@@ -60,21 +300,25 @@
60
300
  "CHANGELOG.md",
61
301
  "LICENSE",
62
302
  "examples/support/demo.json",
63
- "examples/support/README.md"
303
+ "examples/support/README.md",
304
+ "recipes/README.md"
64
305
  ],
65
306
  "scripts": {
66
307
  "clean": "rimraf dist",
67
308
  "build": "npm run clean && tsc -p tsconfig.json",
68
- "typecheck": "tsc -p tsconfig.json --noEmit",
309
+ "typecheck": "tsc -p tsconfig.json --noEmit && tsc -p tests/tsconfig.json",
69
310
  "format": "prettier --write .",
70
311
  "format:check": "prettier --check .",
71
312
  "demo": "node dist/cli/index.js demo all",
72
- "jev": "node --env-file-if-exists=.env dist/cli/index.js",
73
- "ci": "npm run format:check && npm run typecheck && npm run build && npm run demo && npm run example:support",
313
+ "jev-recipes": "node --env-file-if-exists=.env dist/cli/index.js",
314
+ "ci": "npm run format:check && npm run typecheck && npm run test:coverage && npm run build && npm run demo && npm run example:support",
74
315
  "pack:check": "npm pack --dry-run",
75
316
  "prepack": "npm run build",
76
317
  "prepublishOnly": "npm run ci",
77
- "example:support": "node --env-file-if-exists=.env dist/examples/support/index.js"
318
+ "example:support": "node --env-file-if-exists=.env dist/examples/support/index.js",
319
+ "test": "vitest run",
320
+ "test:watch": "vitest",
321
+ "test:coverage": "vitest run --coverage"
78
322
  },
79
323
  "dependencies": {
80
324
  "@typesafe-ai/sdk": "0.6.0",
@@ -82,9 +326,12 @@
82
326
  },
83
327
  "devDependencies": {
84
328
  "@types/node": "^22.0.0",
329
+ "@vitest/coverage-v8": "4.1.11",
85
330
  "prettier": "3.9.8",
86
331
  "rimraf": "6.1.3",
87
- "typescript": "~5.9.3"
332
+ "typescript": "~5.9.3",
333
+ "vite": "6.4.3",
334
+ "vitest": "4.1.11"
88
335
  },
89
336
  "homepage": "https://github.com/agencyenterprise/jev-recipes#readme",
90
337
  "bugs": {
@@ -0,0 +1,128 @@
1
+ # Recipe catalog
2
+
3
+ 66 small decisions for AI applications. Every recipe has its own input and result schemas, example, and usage guide. The package exports camelCase functions from kebab-case paths: `answerCoverage` from `jev-recipes/answer-coverage`, for example.
4
+
5
+ After `npm install jev-recipes`, browse the groups below or use `npx jev-recipes list <query>` and `npx jev-recipes describe <recipe>` from your app’s directory. Discovery needs no API key. Each recipe guide describes its inputs, results, limits, and review policy.
6
+
7
+ ## Answer quality
8
+
9
+ | Recipe | Function | Decision |
10
+ | ---------------------------------------------------- | ------------------- | ------------------------------------------------------------------------------------------------------ |
11
+ | [`answer-coverage`](answer-coverage/README.md) | `answerCoverage` | Check whether a draft answers each supplied question. |
12
+ | [`answer-relevance`](answer-relevance/README.md) | `answerRelevance` | How directly does draft address request? |
13
+ | [`citation-match`](citation-match/README.md) | `citationMatch` | Find supplied passages that independently support an entire claim. |
14
+ | [`citation-needed`](citation-needed/README.md) | `citationNeeded` | Do citationRules require evidence for statement? |
15
+ | [`answer-consistency`](answer-consistency/README.md) | `answerConsistency` | Do firstStatement and secondStatement make compatible claims about the same subject and circumstances? |
16
+ | [`summary-coverage`](summary-coverage/README.md) | `summaryCoverage` | Check whether a summary preserves each supplied point. |
17
+ | [`certainty-match`](certainty-match/README.md) | `certaintyMatch` | Does the certainty expressed in draft match assessment? |
18
+ | [`promise-check`](promise-check/README.md) | `promiseCheck` | Does reply promise actions or outcomes beyond allowedCommitments? |
19
+ | [`tone-check`](tone-check/README.md) | `toneCheck` | Check a draft against each supplied writing criterion. |
20
+ | [`draft-compare`](draft-compare/README.md) | `draftCompare` | Which draft better satisfies request under rubric? |
21
+
22
+ ## Retrieval and evidence
23
+
24
+ | Recipe | Function | Decision |
25
+ | -------------------------------------------------------- | --------------------- | ------------------------------------------------------------------------------------------------------------ |
26
+ | [`rerank`](rerank/README.md) | `rerank` | Select and order relevant passages. |
27
+ | [`verify`](verify/README.md) | `verify` | Check claims against supplied evidence. |
28
+ | [`answerability`](answerability/README.md) | `answerability` | Check whether evidence can answer the question. |
29
+ | [`retrieval-needed`](retrieval-needed/README.md) | `retrievalNeeded` | Does request require facts beyond context? |
30
+ | [`freshness-needed`](freshness-needed/README.md) | `freshnessNeeded` | Does question require a current or time-specific state that can change, or stable conceptual knowledge? |
31
+ | [`source-applicability`](source-applicability/README.md) | `sourceApplicability` | Does the scope described in passage apply to scenario? |
32
+ | [`evidence-conflict`](evidence-conflict/README.md) | `evidenceConflict` | Do firstPassage and secondPassage give incompatible evidence relevant to question under the same conditions? |
33
+ | [`passage-duplicate`](passage-duplicate/README.md) | `passageDuplicate` | How much material information do firstPassage and secondPassage share? |
34
+ | [`evidence-novelty`](evidence-novelty/README.md) | `evidenceNovelty` | Does passage add material information relevant to question beyond existingEvidence? |
35
+ | [`cache-match`](cache-match/README.md) | `cacheMatch` | Does cachedAnswer address question with the same relevant meaning and conditions as originalQuestion? |
36
+ | [`query-equivalence`](query-equivalence/README.md) | `queryEquivalence` | Do firstQuestion and secondQuestion request the same information under the same stated conditions? |
37
+ | [`context-role`](context-role/README.md) | `contextRole` | What role does passage play in answering question? |
38
+ | [`query-specificity`](query-specificity/README.md) | `querySpecificity` | Does question, interpreted with context, identify a focused information need? |
39
+
40
+ ## Conversation
41
+
42
+ | Recipe | Function | Decision |
43
+ | ---------------------------------------------------- | ------------------- | ---------------------------------------------------------------------------------- |
44
+ | [`clarify`](clarify/README.md) | `clarify` | Find missing or ambiguous requirements. |
45
+ | [`turn-intent`](turn-intent/README.md) | `turnIntent` | What is the primary communicative purpose of message in context? |
46
+ | [`followup-link`](followup-link/README.md) | `followupLink` | Which supplied earlier request does message follow up on? |
47
+ | [`reference-resolve`](reference-resolve/README.md) | `referenceResolve` | Which supplied candidate does reference refer to in message and context? |
48
+ | [`intent-change`](intent-change/README.md) | `intentChange` | How does message change currentGoal? |
49
+ | [`correction-target`](correction-target/README.md) | `correctionTarget` | Which supplied field or statement is message correcting? |
50
+ | [`confirmation-match`](confirmation-match/README.md) | `confirmationMatch` | Does response clearly agree to or reject this exact proposal? |
51
+ | [`cancellation-check`](cancellation-check/README.md) | `cancellationCheck` | Does message ask to cancel, pause, or continue task? |
52
+ | [`topic-shift`](topic-shift/README.md) | `topicShift` | Does message stay with currentTopic, introduce a different topic, or contain both? |
53
+ | [`response-needed`](response-needed/README.md) | `responseNeeded` | Does message require a substantive reply in context? |
54
+ | [`resolution-check`](resolution-check/README.md) | `resolutionCheck` | Does message establish that the customer reports issue as resolved? |
55
+
56
+ ## Tools and tasks
57
+
58
+ | Recipe | Function | Decision |
59
+ | -------------------------------------------------- | ------------------ | ---------------------------------------------------------------------------------------- |
60
+ | [`route`](route/README.md) | `route` | Choose a handler for a request. |
61
+ | [`handoff`](handoff/README.md) | `handoff` | Check your rules for involving a human. |
62
+ | [`tool-fit`](tool-fit/README.md) | `toolFit` | Can the capabilities explicitly described in tool perform task? |
63
+ | [`argument-fit`](argument-fit/README.md) | `argumentFit` | Does proposedValue for argument express the intended value in request and context? |
64
+ | [`result-usefulness`](result-usefulness/README.md) | `resultUsefulness` | Does result provide information useful for task? |
65
+ | [`result-outcome`](result-outcome/README.md) | `resultOutcome` | What outcome does result report for task? |
66
+ | [`action-scope`](action-scope/README.md) | `actionScope` | Is proposedAction within the work requested in request and constraints? |
67
+ | [`step-progress`](step-progress/README.md) | `stepProgress` | How does observation change progress toward objective relative to previousState? |
68
+ | [`repeated-attempt`](repeated-attempt/README.md) | `repeatedAttempt` | Does proposedAttempt use essentially the same approach as previousAttempt for objective? |
69
+ | [`step-complete`](step-complete/README.md) | `stepComplete` | Does evidence establish that condition has been met? |
70
+ | [`failure-kind`](failure-kind/README.md) | `failureKind` | Which supplied category best describes the observed failure? |
71
+ | [`instruction-fit`](instruction-fit/README.md) | `instructionFit` | Does the explicit scope of instruction cover task and context? |
72
+
73
+ ## Customer support
74
+
75
+ | Recipe | Function | Decision |
76
+ | -------------------------------------------------------- | -------------------- | ---------------------------------------------------------------------------- |
77
+ | [`issue-impact`](issue-impact/README.md) | `issueImpact` | What practical impact does message explicitly describe? |
78
+ | [`attempted-step`](attempted-step/README.md) | `attemptedStep` | Does conversation establish whether the customer already performed step? |
79
+ | [`workaround-fit`](workaround-fit/README.md) | `workaroundFit` | Can workaround address issue without violating constraints? |
80
+ | [`ticket-match`](ticket-match/README.md) | `ticketMatch` | Do firstTicket and secondTicket describe the same underlying reported issue? |
81
+ | [`incident-match`](incident-match/README.md) | `incidentMatch` | Which supplied incident is supported as a match for ticket? |
82
+ | [`troubleshooting-fit`](troubleshooting-fit/README.md) | `troubleshootingFit` | Does procedure address symptoms under the described circumstances? |
83
+ | [`frustration-signal`](frustration-signal/README.md) | `frustrationSignal` | Does message express frustration or dissatisfaction in its wording? |
84
+ | [`urgency-signal`](urgency-signal/README.md) | `urgencySignal` | Does message explicitly request urgent attention? |
85
+ | [`feedback-kind`](feedback-kind/README.md) | `feedbackKind` | What is the primary kind of feedback in message? |
86
+ | [`reply-template-match`](reply-template-match/README.md) | `replyTemplateMatch` | Which supplied approved template applies to request and context? |
87
+
88
+ ## Memory
89
+
90
+ | Recipe | Function | Decision |
91
+ | ---------------------------------------------- | ---------------- | ------------------------------------------------------------------------------------------ |
92
+ | [`memory-value`](memory-value/README.md) | `memoryValue` | How useful is fact for future work under purpose? |
93
+ | [`memory-scope`](memory-scope/README.md) | `memoryScope` | What is the narrowest explicitly supported scope of fact in context? |
94
+ | [`memory-relation`](memory-relation/README.md) | `memoryRelation` | How does newFact relate to existingMemory? |
95
+ | [`preference-kind`](preference-kind/README.md) | `preferenceKind` | Does statement express an ongoing preference, a factual assertion, or a temporary request? |
96
+ | [`fact-stability`](fact-stability/README.md) | `factStability` | Is fact about an enduring or historical attribute, or a state that is expected to change? |
97
+
98
+ ## Knowledge maintenance
99
+
100
+ | Recipe | Function | Decision |
101
+ | ------------------------------------------------------ | -------------------- | ------------------------------------------------------------------------------------------------------- |
102
+ | [`document-role`](document-role/README.md) | `documentRole` | What is the primary purpose of document? |
103
+ | [`audience-fit`](audience-fit/README.md) | `audienceFit` | Does the level of explanation in document fit the knowledge and needs explicitly described in audience? |
104
+ | [`change-meaning`](change-meaning/README.md) | `changeMeaning` | Does the revision from before to after change material meaning, conditions, or obligations? |
105
+ | [`answer-invalidation`](answer-invalidation/README.md) | `answerInvalidation` | Does updatedEvidence still support the entire claim that was based on previousEvidence? |
106
+ | [`field-select`](field-select/README.md) | `fieldSelect` | Which supplied candidate is the value of field in document? |
107
+
108
+ ## Shared options and behavior
109
+
110
+ - Pass `{ client, model, signal }` as an optional second argument to any recipe. The default client reads `TYPESAFE_API_KEY` from the process environment.
111
+ - Recipes that accept `minConfidence` default it to `0.8`. Rerank uses `minRelevance`, defaulting to `0.5`. Each guide explains which outcomes require review and how individual checks affect the overall decision.
112
+ - `ready` describes confidence in the assessment. Inspect the verdict too: a ready result can describe a conflict, missing information, or an unsuitable candidate.
113
+ - Candidate selectors return `selection` only for a ready match. `suggestedSelection` preserves a low-confidence suggestion. Candidate probabilities use your supplied IDs; no candidate match and ambiguity are separate outcomes.
114
+ - Item checks preserve each item's ID, verdict, confidence, and status. The coverage and tone recipes also provide `allAnswered`, `allPreserved`, or `allPassed` as appropriate.
115
+ - Model and token usage accompany every result. Inputs and model responses are validated with Zod 4. Invalid input, malformed answers, and provider failures throw.
116
+ - Shared `{ id, text }` lists accept 1 to 50 items with unique non-empty IDs. Route accepts up to 254 routes; rerank and verify accept up to 100 items. Each guide documents its input limits. Provider context limits may require smaller inputs; content is not silently truncated.
117
+
118
+ ## Reuse and side effects
119
+
120
+ Recipes share small helpers for choices, candidate selection, and item checks. Rerank uses independent yes/no relevance scores. Each recipe owns its question and decision rules. `citation-match` composes the public `verify` function; its guide and catalog `uses` field name that dependency.
121
+
122
+ Each current recipe makes one logical Jev request per live invocation. Batch checks place their questions in that request. SDK retries can add transport attempts. The recipes return decisions without executing application actions. The separate support example makes up to six logical requests and can stop early.
123
+
124
+ ## Examples and limits
125
+
126
+ Every `demo.json` includes input and a hand-authored response. These examples illustrate behavior; they are not model accuracy results. Use `example <recipe>` to obtain editable input and `demo <recipe>` to inspect an offline illustration when desired.
127
+
128
+ Application code owns exact arithmetic, dates, identifiers, access controls, consent, and storage. Recipe guides describe the limits of each semantic decision. Larger applications combine the recipes in caller code; see [Cool projects](../README.md#cool-projects).
@@ -0,0 +1,49 @@
1
+ # Check proposed action scope
2
+
3
+ Is proposedAction within the work requested in request and constraints? Do not treat a potentially helpful extra task as requested work. An explicit constraint overrides an implied convenience.
4
+
5
+ ```ts
6
+ import { actionScope } from 'jev-recipes/action-scope';
7
+
8
+ const result = await actionScope({
9
+ request: 'Explain why this deployment failed.',
10
+ proposedAction: 'Deploy a replacement release to production.',
11
+ });
12
+
13
+ console.log(result.status, result.verdict);
14
+ ```
15
+
16
+ ## Input
17
+
18
+ | Field | Accepts |
19
+ | ---------------- | -------------------------------------------- |
20
+ | `request` | Non-empty text |
21
+ | `proposedAction` | Non-empty text |
22
+ | `constraints` | Optional non-empty text |
23
+ | `minConfidence` | Optional number from 0 to 1; defaults to 0.8 |
24
+
25
+ See [shared options and behavior](../README.md#shared-options-and-behavior) for client configuration, validation, and errors.
26
+
27
+ ## Result
28
+
29
+ | Verdict | Meaning |
30
+ | ----------------- | ------------------------------------------------------------------------------------------------------------- |
31
+ | `within_scope` | The action is explicitly requested or directly necessary under the stated constraints. |
32
+ | `additional_work` | The action introduces unrequested work, changes the requested outcome, or violates a stated scope constraint. |
33
+ | `unclear` | The scope relationship cannot be established from the request. |
34
+
35
+ The result includes `verdict`, `confidence`, and all choice `probabilities`. `unclear` always requires review, even at high confidence. Other verdicts can be ready, including negative assessments.
36
+
37
+ Results include model and token usage. Decisions below `minConfidence` require review. Inspect the outcome as well as the status.
38
+
39
+ ## Reuse and calls
40
+
41
+ Uses the shared choice helper for the Jev call and response parsing. This folder owns its question, verdict criteria, and review policy. A live invocation makes one logical Jev request; SDK retries can add transport attempts.
42
+
43
+ ## Limits
44
+
45
+ Assesses semantic scope only. User authorization and access controls must be enforced by the application.
46
+
47
+ ## Example input
48
+
49
+ [demo.json](demo.json) contains editable input and a hand-authored response. After installing `jev-recipes`, `npx jev-recipes demo action-scope` shows the result offline. The fixture is an illustration, not an accuracy measurement. `npx jev-recipes describe action-scope` shows the input and result schemas.
@@ -0,0 +1,25 @@
1
+ {
2
+ "input": {
3
+ "request": "Explain why this deployment failed.",
4
+ "proposedAction": "Deploy a replacement release to production."
5
+ },
6
+ "response": {
7
+ "model": "demo-fixture",
8
+ "usage": {
9
+ "input_tokens": 0,
10
+ "output_tokens": 0
11
+ },
12
+ "answers": {
13
+ "decision": {
14
+ "type": "choice",
15
+ "choice": "additional_work",
16
+ "confidence": 0.96,
17
+ "probabilities": {
18
+ "within_scope": 0,
19
+ "additional_work": 1,
20
+ "unclear": 0
21
+ }
22
+ }
23
+ }
24
+ }
25
+ }
@@ -0,0 +1,50 @@
1
+ # Check answer consistency
2
+
3
+ Do firstStatement and secondStatement make compatible claims about the same subject and circumstances? Distinguish different conditions from a contradiction.
4
+
5
+ ```ts
6
+ import { answerConsistency } from 'jev-recipes/answer-consistency';
7
+
8
+ const result = await answerConsistency({
9
+ firstStatement: 'Guests can export reports.',
10
+ secondStatement: 'Guests cannot export reports.',
11
+ });
12
+
13
+ console.log(result.status, result.verdict);
14
+ ```
15
+
16
+ ## Input
17
+
18
+ | Field | Accepts |
19
+ | ----------------- | -------------------------------------------- |
20
+ | `firstStatement` | Non-empty text |
21
+ | `secondStatement` | Non-empty text |
22
+ | `context` | Optional non-empty text |
23
+ | `minConfidence` | Optional number from 0 to 1; defaults to 0.8 |
24
+
25
+ See [shared options and behavior](../README.md#shared-options-and-behavior) for client configuration, validation, and errors.
26
+
27
+ ## Result
28
+
29
+ | Verdict | Meaning |
30
+ | ------------- | --------------------------------------------------------------------------------------- |
31
+ | `consistent` | Both statements concern the same subject and can hold under the supplied circumstances. |
32
+ | `conflicting` | The statements concern the same circumstances and make mutually incompatible claims. |
33
+ | `unrelated` | The statements concern different subjects or scopes that should not be compared. |
34
+ | `unclear` | The supplied circumstances do not resolve whether the statements conflict. |
35
+
36
+ The result includes `verdict`, `confidence`, and all choice `probabilities`. `unclear` always requires review, even at high confidence. Other verdicts can be ready, including negative assessments.
37
+
38
+ Results include model and token usage. Decisions below `minConfidence` require review. Inspect the outcome as well as the status.
39
+
40
+ ## Reuse and calls
41
+
42
+ Uses the shared choice helper for the Jev call and response parsing. This folder owns its question, verdict criteria, and review policy. A live invocation makes one logical Jev request; SDK retries can add transport attempts.
43
+
44
+ ## Limits
45
+
46
+ Checks semantic consistency between two statements. Exact numeric and date comparisons belong in code.
47
+
48
+ ## Example input
49
+
50
+ [demo.json](demo.json) contains editable input and a hand-authored response. After installing `jev-recipes`, `npx jev-recipes demo answer-consistency` shows the result offline. The fixture is an illustration, not an accuracy measurement. `npx jev-recipes describe answer-consistency` shows the input and result schemas.
@@ -0,0 +1,26 @@
1
+ {
2
+ "input": {
3
+ "firstStatement": "Guests can export reports.",
4
+ "secondStatement": "Guests cannot export reports."
5
+ },
6
+ "response": {
7
+ "model": "demo-fixture",
8
+ "usage": {
9
+ "input_tokens": 0,
10
+ "output_tokens": 0
11
+ },
12
+ "answers": {
13
+ "decision": {
14
+ "type": "choice",
15
+ "choice": "conflicting",
16
+ "confidence": 0.96,
17
+ "probabilities": {
18
+ "consistent": 0,
19
+ "conflicting": 1,
20
+ "unrelated": 0,
21
+ "unclear": 0
22
+ }
23
+ }
24
+ }
25
+ }
26
+ }
@@ -0,0 +1,60 @@
1
+ # Check answer coverage
2
+
3
+ Check whether a draft answers each supplied question.
4
+
5
+ ```ts
6
+ import { answerCoverage } from 'jev-recipes/answer-coverage';
7
+
8
+ const result = await answerCoverage({
9
+ draft: 'Select Forgot password on the sign-in page.',
10
+ questions: [
11
+ {
12
+ id: 'reset',
13
+ text: 'How do I reset my password?',
14
+ },
15
+ {
16
+ id: 'expiry',
17
+ text: 'When does the link expire?',
18
+ },
19
+ ],
20
+ });
21
+
22
+ console.log(result.status, result.checks);
23
+ ```
24
+
25
+ ## Input
26
+
27
+ | Field | Accepts |
28
+ | --------------- | -------------------------------------------- |
29
+ | `draft` | Non-empty text |
30
+ | `questions` | 1 to 50 `{ id, text }` items with unique IDs |
31
+ | `minConfidence` | Optional number from 0 to 1; defaults to 0.8 |
32
+
33
+ See [shared options and behavior](../README.md#shared-options-and-behavior) for client configuration, validation, and errors.
34
+
35
+ ## Result
36
+
37
+ `checks` contains the original ID, verdict, status, confidence, and probabilities for each item. `allAnswered` is true only when every check is ready and has verdict `answered`. Any uncertain check makes overall status `review`.
38
+
39
+ | Verdict | Meaning |
40
+ | ---------- | -------------------------------------------------------- |
41
+ | `answered` | Every material part of this question is answered. |
42
+ | `partial` | Some material parts are answered but others are missing. |
43
+ | `missing` | No substantive answer to this question appears. |
44
+ | `unclear` | The wording prevents a reliable coverage decision. |
45
+
46
+ `unclear` always requires review, even at high confidence. Other verdicts can be ready, including negative assessments.
47
+
48
+ Results include model and token usage. Decisions below `minConfidence` require review. Inspect the outcome as well as the status.
49
+
50
+ ## Reuse and calls
51
+
52
+ Uses the shared item-check helper. This folder owns its question, verdict criteria, and aggregate decision. A live invocation makes one logical Jev request; SDK retries can add transport attempts. All item questions are sent in that request.
53
+
54
+ ## Limits
55
+
56
+ Checks supplied question IDs only. It does not extract questions or verify the draft against sources.
57
+
58
+ ## Example input
59
+
60
+ [demo.json](demo.json) contains editable input and a hand-authored response. After installing `jev-recipes`, `npx jev-recipes demo answer-coverage` shows the result offline. The fixture is an illustration, not an accuracy measurement. `npx jev-recipes describe answer-coverage` shows the input and result schemas.