jev-recipes 0.2.0 → 0.3.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 (400) hide show
  1. package/CHANGELOG.md +8 -1
  2. package/README.md +62 -89
  3. package/dist/catalog/generated/details/action-scope.json +43 -0
  4. package/dist/catalog/generated/details/answer-consistency.json +46 -0
  5. package/dist/catalog/generated/details/answer-coverage.json +66 -0
  6. package/dist/catalog/generated/details/answer-invalidation.json +43 -0
  7. package/dist/catalog/generated/details/answer-relevance.json +45 -0
  8. package/dist/catalog/generated/details/answerability.json +55 -0
  9. package/dist/catalog/generated/details/argument-fit.json +41 -0
  10. package/dist/catalog/generated/details/attempted-step.json +39 -0
  11. package/dist/catalog/generated/details/audience-fit.json +45 -0
  12. package/dist/catalog/generated/details/cache-match.json +41 -0
  13. package/dist/catalog/generated/details/cancellation-check.json +40 -0
  14. package/dist/catalog/generated/details/certainty-match.json +45 -0
  15. package/dist/catalog/generated/details/change-meaning.json +43 -0
  16. package/dist/catalog/generated/details/citation-match.json +64 -0
  17. package/dist/catalog/generated/details/citation-needed.json +39 -0
  18. package/dist/catalog/generated/details/clarify.json +64 -0
  19. package/dist/catalog/generated/details/confirmation-match.json +40 -0
  20. package/dist/catalog/generated/details/context-role.json +45 -0
  21. package/dist/catalog/generated/details/correction-target.json +68 -0
  22. package/dist/catalog/generated/details/document-role.json +68 -0
  23. package/dist/catalog/generated/details/draft-compare.json +44 -0
  24. package/dist/catalog/generated/details/evidence-conflict.json +46 -0
  25. package/dist/catalog/generated/details/evidence-novelty.json +55 -0
  26. package/dist/catalog/generated/details/fact-stability.json +39 -0
  27. package/dist/catalog/generated/details/failure-kind.json +68 -0
  28. package/dist/catalog/generated/details/feedback-kind.json +69 -0
  29. package/dist/catalog/generated/details/field-select.json +68 -0
  30. package/dist/catalog/generated/details/followup-link.json +68 -0
  31. package/dist/catalog/generated/details/freshness-needed.json +38 -0
  32. package/dist/catalog/generated/details/frustration-signal.json +39 -0
  33. package/dist/catalog/generated/details/handoff.json +75 -0
  34. package/dist/catalog/generated/details/incident-match.json +68 -0
  35. package/dist/catalog/generated/details/instruction-fit.json +40 -0
  36. package/dist/catalog/generated/details/intent-change.json +43 -0
  37. package/dist/catalog/generated/details/issue-impact.json +42 -0
  38. package/dist/catalog/generated/details/memory-relation.json +46 -0
  39. package/dist/catalog/generated/details/memory-scope.json +42 -0
  40. package/dist/catalog/generated/details/memory-value.json +46 -0
  41. package/dist/catalog/generated/details/passage-duplicate.json +42 -0
  42. package/dist/catalog/generated/details/preference-kind.json +45 -0
  43. package/dist/catalog/generated/details/promise-check.json +42 -0
  44. package/dist/catalog/generated/details/query-equivalence.json +43 -0
  45. package/dist/catalog/generated/details/query-specificity.json +39 -0
  46. package/dist/catalog/generated/details/reference-resolve.json +69 -0
  47. package/dist/catalog/generated/details/repeated-attempt.json +43 -0
  48. package/dist/catalog/generated/details/reply-template-match.json +68 -0
  49. package/dist/catalog/generated/details/rerank.json +55 -0
  50. package/dist/catalog/generated/details/resolution-check.json +40 -0
  51. package/dist/catalog/generated/details/response-needed.json +42 -0
  52. package/dist/catalog/generated/details/result-outcome.json +42 -0
  53. package/dist/catalog/generated/details/result-usefulness.json +45 -0
  54. package/dist/catalog/generated/details/retrieval-needed.json +39 -0
  55. package/dist/catalog/generated/details/route.json +51 -0
  56. package/dist/catalog/generated/details/source-applicability.json +39 -0
  57. package/dist/catalog/generated/details/step-complete.json +39 -0
  58. package/dist/catalog/generated/details/step-progress.json +43 -0
  59. package/dist/catalog/generated/details/summary-coverage.json +66 -0
  60. package/dist/catalog/generated/details/ticket-match.json +43 -0
  61. package/dist/catalog/generated/details/tone-check.json +63 -0
  62. package/dist/catalog/generated/details/tool-fit.json +40 -0
  63. package/dist/catalog/generated/details/topic-shift.json +43 -0
  64. package/dist/catalog/generated/details/troubleshooting-fit.json +40 -0
  65. package/dist/catalog/generated/details/turn-intent.json +69 -0
  66. package/dist/catalog/generated/details/urgency-signal.json +39 -0
  67. package/dist/catalog/generated/details/verify.json +66 -0
  68. package/dist/catalog/generated/details/workaround-fit.json +40 -0
  69. package/dist/catalog/generated/loaders.d.ts +3 -0
  70. package/dist/catalog/generated/loaders.js +68 -0
  71. package/dist/catalog/generated/metadata.d.ts +2 -0
  72. package/dist/catalog/generated/metadata.js +1115 -0
  73. package/dist/catalog/generated/names.d.ts +1 -0
  74. package/dist/catalog/generated/names.js +69 -0
  75. package/dist/catalog/index.d.ts +9 -1764
  76. package/dist/catalog/index.js +8 -24
  77. package/dist/catalog/runner.d.ts +4 -0
  78. package/dist/catalog/runner.js +5 -0
  79. package/dist/catalog/schema.d.ts +51 -50
  80. package/dist/catalog/schema.js +2 -2
  81. package/dist/catalog/search.d.ts +3 -0
  82. package/dist/catalog/search.js +60 -0
  83. package/dist/cli/index.js +17 -8
  84. package/dist/cli/schema.d.ts +151 -167
  85. package/dist/cli/schema.js +37 -4
  86. package/dist/recipes/action-scope/schema.d.ts +3 -3
  87. package/dist/recipes/answer-consistency/schema.d.ts +3 -3
  88. package/dist/recipes/answer-coverage/schema.d.ts +6 -6
  89. package/dist/recipes/answerability/schema.d.ts +6 -6
  90. package/dist/recipes/cancellation-check/schema.d.ts +3 -3
  91. package/dist/recipes/certainty-match/schema.d.ts +3 -3
  92. package/dist/recipes/citation-needed/schema.d.ts +3 -3
  93. package/dist/recipes/clarify/schema.d.ts +3 -3
  94. package/dist/recipes/document-role/schema.d.ts +6 -6
  95. package/dist/recipes/evidence-conflict/schema.d.ts +3 -3
  96. package/dist/recipes/feedback-kind/schema.d.ts +3 -3
  97. package/dist/recipes/freshness-needed/schema.d.ts +3 -3
  98. package/dist/recipes/handoff/schema.d.ts +3 -3
  99. package/dist/recipes/passage-duplicate/schema.d.ts +3 -3
  100. package/dist/recipes/preference-kind/schema.d.ts +3 -3
  101. package/dist/recipes/promise-check/schema.d.ts +3 -3
  102. package/dist/recipes/query-equivalence/schema.d.ts +3 -3
  103. package/dist/recipes/result-outcome/schema.d.ts +3 -3
  104. package/dist/recipes/retrieval-needed/schema.d.ts +3 -3
  105. package/dist/recipes/step-progress/schema.d.ts +3 -3
  106. package/dist/recipes/summary-coverage/schema.d.ts +3 -3
  107. package/dist/recipes/ticket-match/schema.d.ts +3 -3
  108. package/dist/recipes/turn-intent/schema.d.ts +12 -12
  109. package/dist/src/index.d.ts +117 -117
  110. package/dist/src/index.js +51 -50
  111. package/dist/src/schema.d.ts +5 -0
  112. package/dist/src/schema.js +2 -0
  113. package/package.json +200 -191
  114. package/dist/catalog/groups/answers.d.ts +0 -565
  115. package/dist/catalog/groups/answers.js +0 -82
  116. package/dist/catalog/groups/conversation.d.ts +0 -608
  117. package/dist/catalog/groups/conversation.js +0 -90
  118. package/dist/catalog/groups/knowledge.d.ts +0 -522
  119. package/dist/catalog/groups/knowledge.js +0 -82
  120. package/dist/catalog/groups/retrieval.d.ts +0 -664
  121. package/dist/catalog/groups/retrieval.js +0 -106
  122. package/dist/catalog/groups/support.d.ts +0 -522
  123. package/dist/catalog/groups/support.js +0 -82
  124. package/dist/catalog/groups/workflow.d.ts +0 -623
  125. package/dist/catalog/groups/workflow.js +0 -98
  126. package/dist/catalog/recipes.d.ts +0 -3488
  127. package/dist/catalog/recipes.js +0 -14
  128. package/dist/examples/support/index.d.ts +0 -1
  129. package/dist/examples/support/index.js +0 -37
  130. package/dist/examples/support/schema.d.ts +0 -566
  131. package/dist/examples/support/schema.js +0 -76
  132. package/dist/examples/support/workflow.d.ts +0 -3
  133. package/dist/examples/support/workflow.js +0 -85
  134. package/dist/recipes/action-scope/metadata.d.ts +0 -8
  135. package/dist/recipes/action-scope/metadata.js +0 -10
  136. package/dist/recipes/answer-consistency/metadata.d.ts +0 -8
  137. package/dist/recipes/answer-consistency/metadata.js +0 -10
  138. package/dist/recipes/answer-coverage/metadata.d.ts +0 -8
  139. package/dist/recipes/answer-coverage/metadata.js +0 -11
  140. package/dist/recipes/answer-invalidation/metadata.d.ts +0 -8
  141. package/dist/recipes/answer-invalidation/metadata.js +0 -10
  142. package/dist/recipes/answer-relevance/metadata.d.ts +0 -8
  143. package/dist/recipes/answer-relevance/metadata.js +0 -10
  144. package/dist/recipes/answerability/metadata.d.ts +0 -8
  145. package/dist/recipes/answerability/metadata.js +0 -11
  146. package/dist/recipes/argument-fit/metadata.d.ts +0 -8
  147. package/dist/recipes/argument-fit/metadata.js +0 -10
  148. package/dist/recipes/attempted-step/metadata.d.ts +0 -8
  149. package/dist/recipes/attempted-step/metadata.js +0 -10
  150. package/dist/recipes/audience-fit/metadata.d.ts +0 -8
  151. package/dist/recipes/audience-fit/metadata.js +0 -10
  152. package/dist/recipes/cache-match/metadata.d.ts +0 -8
  153. package/dist/recipes/cache-match/metadata.js +0 -10
  154. package/dist/recipes/cancellation-check/metadata.d.ts +0 -8
  155. package/dist/recipes/cancellation-check/metadata.js +0 -10
  156. package/dist/recipes/certainty-match/metadata.d.ts +0 -8
  157. package/dist/recipes/certainty-match/metadata.js +0 -10
  158. package/dist/recipes/change-meaning/metadata.d.ts +0 -8
  159. package/dist/recipes/change-meaning/metadata.js +0 -10
  160. package/dist/recipes/citation-match/metadata.d.ts +0 -9
  161. package/dist/recipes/citation-match/metadata.js +0 -12
  162. package/dist/recipes/citation-needed/metadata.d.ts +0 -8
  163. package/dist/recipes/citation-needed/metadata.js +0 -10
  164. package/dist/recipes/clarify/metadata.d.ts +0 -8
  165. package/dist/recipes/clarify/metadata.js +0 -11
  166. package/dist/recipes/confirmation-match/metadata.d.ts +0 -8
  167. package/dist/recipes/confirmation-match/metadata.js +0 -10
  168. package/dist/recipes/context-role/metadata.d.ts +0 -8
  169. package/dist/recipes/context-role/metadata.js +0 -10
  170. package/dist/recipes/correction-target/metadata.d.ts +0 -8
  171. package/dist/recipes/correction-target/metadata.js +0 -11
  172. package/dist/recipes/document-role/metadata.d.ts +0 -8
  173. package/dist/recipes/document-role/metadata.js +0 -10
  174. package/dist/recipes/draft-compare/metadata.d.ts +0 -8
  175. package/dist/recipes/draft-compare/metadata.js +0 -10
  176. package/dist/recipes/evidence-conflict/metadata.d.ts +0 -8
  177. package/dist/recipes/evidence-conflict/metadata.js +0 -10
  178. package/dist/recipes/evidence-novelty/metadata.d.ts +0 -8
  179. package/dist/recipes/evidence-novelty/metadata.js +0 -11
  180. package/dist/recipes/fact-stability/metadata.d.ts +0 -8
  181. package/dist/recipes/fact-stability/metadata.js +0 -10
  182. package/dist/recipes/failure-kind/metadata.d.ts +0 -8
  183. package/dist/recipes/failure-kind/metadata.js +0 -11
  184. package/dist/recipes/feedback-kind/metadata.d.ts +0 -8
  185. package/dist/recipes/feedback-kind/metadata.js +0 -10
  186. package/dist/recipes/field-select/metadata.d.ts +0 -8
  187. package/dist/recipes/field-select/metadata.js +0 -11
  188. package/dist/recipes/followup-link/metadata.d.ts +0 -8
  189. package/dist/recipes/followup-link/metadata.js +0 -11
  190. package/dist/recipes/freshness-needed/metadata.d.ts +0 -8
  191. package/dist/recipes/freshness-needed/metadata.js +0 -10
  192. package/dist/recipes/frustration-signal/metadata.d.ts +0 -8
  193. package/dist/recipes/frustration-signal/metadata.js +0 -10
  194. package/dist/recipes/handoff/metadata.d.ts +0 -8
  195. package/dist/recipes/handoff/metadata.js +0 -11
  196. package/dist/recipes/incident-match/metadata.d.ts +0 -8
  197. package/dist/recipes/incident-match/metadata.js +0 -11
  198. package/dist/recipes/instruction-fit/metadata.d.ts +0 -8
  199. package/dist/recipes/instruction-fit/metadata.js +0 -10
  200. package/dist/recipes/intent-change/metadata.d.ts +0 -8
  201. package/dist/recipes/intent-change/metadata.js +0 -10
  202. package/dist/recipes/issue-impact/metadata.d.ts +0 -8
  203. package/dist/recipes/issue-impact/metadata.js +0 -10
  204. package/dist/recipes/memory-relation/metadata.d.ts +0 -8
  205. package/dist/recipes/memory-relation/metadata.js +0 -10
  206. package/dist/recipes/memory-scope/metadata.d.ts +0 -8
  207. package/dist/recipes/memory-scope/metadata.js +0 -10
  208. package/dist/recipes/memory-value/metadata.d.ts +0 -8
  209. package/dist/recipes/memory-value/metadata.js +0 -10
  210. package/dist/recipes/passage-duplicate/metadata.d.ts +0 -8
  211. package/dist/recipes/passage-duplicate/metadata.js +0 -10
  212. package/dist/recipes/preference-kind/metadata.d.ts +0 -8
  213. package/dist/recipes/preference-kind/metadata.js +0 -10
  214. package/dist/recipes/promise-check/metadata.d.ts +0 -8
  215. package/dist/recipes/promise-check/metadata.js +0 -10
  216. package/dist/recipes/query-equivalence/metadata.d.ts +0 -8
  217. package/dist/recipes/query-equivalence/metadata.js +0 -10
  218. package/dist/recipes/query-specificity/metadata.d.ts +0 -8
  219. package/dist/recipes/query-specificity/metadata.js +0 -10
  220. package/dist/recipes/reference-resolve/metadata.d.ts +0 -8
  221. package/dist/recipes/reference-resolve/metadata.js +0 -11
  222. package/dist/recipes/repeated-attempt/metadata.d.ts +0 -8
  223. package/dist/recipes/repeated-attempt/metadata.js +0 -10
  224. package/dist/recipes/reply-template-match/metadata.d.ts +0 -8
  225. package/dist/recipes/reply-template-match/metadata.js +0 -11
  226. package/dist/recipes/rerank/metadata.d.ts +0 -8
  227. package/dist/recipes/rerank/metadata.js +0 -11
  228. package/dist/recipes/resolution-check/metadata.d.ts +0 -8
  229. package/dist/recipes/resolution-check/metadata.js +0 -10
  230. package/dist/recipes/response-needed/metadata.d.ts +0 -8
  231. package/dist/recipes/response-needed/metadata.js +0 -10
  232. package/dist/recipes/result-outcome/metadata.d.ts +0 -8
  233. package/dist/recipes/result-outcome/metadata.js +0 -10
  234. package/dist/recipes/result-usefulness/metadata.d.ts +0 -8
  235. package/dist/recipes/result-usefulness/metadata.js +0 -10
  236. package/dist/recipes/retrieval-needed/metadata.d.ts +0 -8
  237. package/dist/recipes/retrieval-needed/metadata.js +0 -10
  238. package/dist/recipes/route/metadata.d.ts +0 -8
  239. package/dist/recipes/route/metadata.js +0 -11
  240. package/dist/recipes/source-applicability/metadata.d.ts +0 -8
  241. package/dist/recipes/source-applicability/metadata.js +0 -10
  242. package/dist/recipes/step-complete/metadata.d.ts +0 -8
  243. package/dist/recipes/step-complete/metadata.js +0 -10
  244. package/dist/recipes/step-progress/metadata.d.ts +0 -8
  245. package/dist/recipes/step-progress/metadata.js +0 -10
  246. package/dist/recipes/summary-coverage/metadata.d.ts +0 -8
  247. package/dist/recipes/summary-coverage/metadata.js +0 -11
  248. package/dist/recipes/ticket-match/metadata.d.ts +0 -8
  249. package/dist/recipes/ticket-match/metadata.js +0 -10
  250. package/dist/recipes/tone-check/metadata.d.ts +0 -8
  251. package/dist/recipes/tone-check/metadata.js +0 -11
  252. package/dist/recipes/tool-fit/metadata.d.ts +0 -8
  253. package/dist/recipes/tool-fit/metadata.js +0 -10
  254. package/dist/recipes/topic-shift/metadata.d.ts +0 -8
  255. package/dist/recipes/topic-shift/metadata.js +0 -10
  256. package/dist/recipes/troubleshooting-fit/metadata.d.ts +0 -8
  257. package/dist/recipes/troubleshooting-fit/metadata.js +0 -10
  258. package/dist/recipes/turn-intent/metadata.d.ts +0 -8
  259. package/dist/recipes/turn-intent/metadata.js +0 -10
  260. package/dist/recipes/urgency-signal/metadata.d.ts +0 -8
  261. package/dist/recipes/urgency-signal/metadata.js +0 -10
  262. package/dist/recipes/verify/metadata.d.ts +0 -8
  263. package/dist/recipes/verify/metadata.js +0 -11
  264. package/dist/recipes/workaround-fit/metadata.d.ts +0 -8
  265. package/dist/recipes/workaround-fit/metadata.js +0 -10
  266. package/examples/support/README.md +0 -60
  267. package/examples/support/demo.json +0 -156
  268. package/recipes/README.md +0 -128
  269. package/recipes/action-scope/README.md +0 -49
  270. package/recipes/answer-consistency/README.md +0 -50
  271. package/recipes/answer-coverage/README.md +0 -60
  272. package/recipes/answer-invalidation/README.md +0 -50
  273. package/recipes/answer-relevance/README.md +0 -49
  274. package/recipes/answerability/README.md +0 -54
  275. package/recipes/argument-fit/README.md +0 -51
  276. package/recipes/attempted-step/README.md +0 -48
  277. package/recipes/audience-fit/README.md +0 -50
  278. package/recipes/cache-match/README.md +0 -51
  279. package/recipes/cancellation-check/README.md +0 -50
  280. package/recipes/certainty-match/README.md +0 -49
  281. package/recipes/change-meaning/README.md +0 -49
  282. package/recipes/citation-match/README.md +0 -51
  283. package/recipes/citation-needed/README.md +0 -49
  284. package/recipes/clarify/README.md +0 -61
  285. package/recipes/confirmation-match/README.md +0 -49
  286. package/recipes/context-role/README.md +0 -49
  287. package/recipes/correction-target/README.md +0 -52
  288. package/recipes/document-role/README.md +0 -51
  289. package/recipes/draft-compare/README.md +0 -54
  290. package/recipes/evidence-conflict/README.md +0 -51
  291. package/recipes/evidence-novelty/README.md +0 -56
  292. package/recipes/fact-stability/README.md +0 -47
  293. package/recipes/failure-kind/README.md +0 -52
  294. package/recipes/feedback-kind/README.md +0 -51
  295. package/recipes/field-select/README.md +0 -53
  296. package/recipes/followup-link/README.md +0 -52
  297. package/recipes/freshness-needed/README.md +0 -46
  298. package/recipes/frustration-signal/README.md +0 -47
  299. package/recipes/handoff/README.md +0 -56
  300. package/recipes/incident-match/README.md +0 -52
  301. package/recipes/instruction-fit/README.md +0 -49
  302. package/recipes/intent-change/README.md +0 -50
  303. package/recipes/issue-impact/README.md +0 -48
  304. package/recipes/memory-relation/README.md +0 -52
  305. package/recipes/memory-scope/README.md +0 -50
  306. package/recipes/memory-value/README.md +0 -50
  307. package/recipes/passage-duplicate/README.md +0 -49
  308. package/recipes/preference-kind/README.md +0 -48
  309. package/recipes/promise-check/README.md +0 -48
  310. package/recipes/query-equivalence/README.md +0 -50
  311. package/recipes/query-specificity/README.md +0 -47
  312. package/recipes/reference-resolve/README.md +0 -54
  313. package/recipes/repeated-attempt/README.md +0 -50
  314. package/recipes/reply-template-match/README.md +0 -52
  315. package/recipes/rerank/README.md +0 -55
  316. package/recipes/resolution-check/README.md +0 -49
  317. package/recipes/response-needed/README.md +0 -48
  318. package/recipes/result-outcome/README.md +0 -49
  319. package/recipes/result-usefulness/README.md +0 -49
  320. package/recipes/retrieval-needed/README.md +0 -48
  321. package/recipes/route/README.md +0 -47
  322. package/recipes/source-applicability/README.md +0 -48
  323. package/recipes/step-complete/README.md +0 -48
  324. package/recipes/step-progress/README.md +0 -51
  325. package/recipes/summary-coverage/README.md +0 -60
  326. package/recipes/ticket-match/README.md +0 -50
  327. package/recipes/tone-check/README.md +0 -55
  328. package/recipes/tool-fit/README.md +0 -49
  329. package/recipes/topic-shift/README.md +0 -50
  330. package/recipes/troubleshooting-fit/README.md +0 -49
  331. package/recipes/turn-intent/README.md +0 -52
  332. package/recipes/urgency-signal/README.md +0 -47
  333. package/recipes/verify/README.md +0 -54
  334. package/recipes/workaround-fit/README.md +0 -50
  335. /package/{recipes → dist/recipes}/action-scope/demo.json +0 -0
  336. /package/{recipes → dist/recipes}/answer-consistency/demo.json +0 -0
  337. /package/{recipes → dist/recipes}/answer-coverage/demo.json +0 -0
  338. /package/{recipes → dist/recipes}/answer-invalidation/demo.json +0 -0
  339. /package/{recipes → dist/recipes}/answer-relevance/demo.json +0 -0
  340. /package/{recipes → dist/recipes}/answerability/demo.json +0 -0
  341. /package/{recipes → dist/recipes}/argument-fit/demo.json +0 -0
  342. /package/{recipes → dist/recipes}/attempted-step/demo.json +0 -0
  343. /package/{recipes → dist/recipes}/audience-fit/demo.json +0 -0
  344. /package/{recipes → dist/recipes}/cache-match/demo.json +0 -0
  345. /package/{recipes → dist/recipes}/cancellation-check/demo.json +0 -0
  346. /package/{recipes → dist/recipes}/certainty-match/demo.json +0 -0
  347. /package/{recipes → dist/recipes}/change-meaning/demo.json +0 -0
  348. /package/{recipes → dist/recipes}/citation-match/demo.json +0 -0
  349. /package/{recipes → dist/recipes}/citation-needed/demo.json +0 -0
  350. /package/{recipes → dist/recipes}/clarify/demo.json +0 -0
  351. /package/{recipes → dist/recipes}/confirmation-match/demo.json +0 -0
  352. /package/{recipes → dist/recipes}/context-role/demo.json +0 -0
  353. /package/{recipes → dist/recipes}/correction-target/demo.json +0 -0
  354. /package/{recipes → dist/recipes}/document-role/demo.json +0 -0
  355. /package/{recipes → dist/recipes}/draft-compare/demo.json +0 -0
  356. /package/{recipes → dist/recipes}/evidence-conflict/demo.json +0 -0
  357. /package/{recipes → dist/recipes}/evidence-novelty/demo.json +0 -0
  358. /package/{recipes → dist/recipes}/fact-stability/demo.json +0 -0
  359. /package/{recipes → dist/recipes}/failure-kind/demo.json +0 -0
  360. /package/{recipes → dist/recipes}/feedback-kind/demo.json +0 -0
  361. /package/{recipes → dist/recipes}/field-select/demo.json +0 -0
  362. /package/{recipes → dist/recipes}/followup-link/demo.json +0 -0
  363. /package/{recipes → dist/recipes}/freshness-needed/demo.json +0 -0
  364. /package/{recipes → dist/recipes}/frustration-signal/demo.json +0 -0
  365. /package/{recipes → dist/recipes}/handoff/demo.json +0 -0
  366. /package/{recipes → dist/recipes}/incident-match/demo.json +0 -0
  367. /package/{recipes → dist/recipes}/instruction-fit/demo.json +0 -0
  368. /package/{recipes → dist/recipes}/intent-change/demo.json +0 -0
  369. /package/{recipes → dist/recipes}/issue-impact/demo.json +0 -0
  370. /package/{recipes → dist/recipes}/memory-relation/demo.json +0 -0
  371. /package/{recipes → dist/recipes}/memory-scope/demo.json +0 -0
  372. /package/{recipes → dist/recipes}/memory-value/demo.json +0 -0
  373. /package/{recipes → dist/recipes}/passage-duplicate/demo.json +0 -0
  374. /package/{recipes → dist/recipes}/preference-kind/demo.json +0 -0
  375. /package/{recipes → dist/recipes}/promise-check/demo.json +0 -0
  376. /package/{recipes → dist/recipes}/query-equivalence/demo.json +0 -0
  377. /package/{recipes → dist/recipes}/query-specificity/demo.json +0 -0
  378. /package/{recipes → dist/recipes}/reference-resolve/demo.json +0 -0
  379. /package/{recipes → dist/recipes}/repeated-attempt/demo.json +0 -0
  380. /package/{recipes → dist/recipes}/reply-template-match/demo.json +0 -0
  381. /package/{recipes → dist/recipes}/rerank/demo.json +0 -0
  382. /package/{recipes → dist/recipes}/resolution-check/demo.json +0 -0
  383. /package/{recipes → dist/recipes}/response-needed/demo.json +0 -0
  384. /package/{recipes → dist/recipes}/result-outcome/demo.json +0 -0
  385. /package/{recipes → dist/recipes}/result-usefulness/demo.json +0 -0
  386. /package/{recipes → dist/recipes}/retrieval-needed/demo.json +0 -0
  387. /package/{recipes → dist/recipes}/route/demo.json +0 -0
  388. /package/{recipes → dist/recipes}/source-applicability/demo.json +0 -0
  389. /package/{recipes → dist/recipes}/step-complete/demo.json +0 -0
  390. /package/{recipes → dist/recipes}/step-progress/demo.json +0 -0
  391. /package/{recipes → dist/recipes}/summary-coverage/demo.json +0 -0
  392. /package/{recipes → dist/recipes}/ticket-match/demo.json +0 -0
  393. /package/{recipes → dist/recipes}/tone-check/demo.json +0 -0
  394. /package/{recipes → dist/recipes}/tool-fit/demo.json +0 -0
  395. /package/{recipes → dist/recipes}/topic-shift/demo.json +0 -0
  396. /package/{recipes → dist/recipes}/troubleshooting-fit/demo.json +0 -0
  397. /package/{recipes → dist/recipes}/turn-intent/demo.json +0 -0
  398. /package/{recipes → dist/recipes}/urgency-signal/demo.json +0 -0
  399. /package/{recipes → dist/recipes}/verify/demo.json +0 -0
  400. /package/{recipes → dist/recipes}/workaround-fit/demo.json +0 -0
@@ -1,31 +1,15 @@
1
- import { z } from 'zod';
2
- import { recipeMetadataSchema } from '../src/schema.js';
3
- import { recipes } from './recipes.js';
1
+ import { readFileSync } from 'node:fs';
2
+ import { recipeMetadata } from './generated/metadata.js';
4
3
  import { recipeFiltersSchema, recipeNameSchema } from './schema.js';
4
+ import { searchRecipes } from './search.js';
5
5
  export function listRecipes(filters = {}) {
6
- const { query, category } = recipeFiltersSchema.parse(filters);
7
- const searchTerms = query?.toLowerCase().trim().split(/\s+/) ?? [];
8
- return Object.entries(recipes)
9
- .map(([id, recipe]) => ({
10
- ...recipeMetadataSchema.parse(recipe.metadata),
11
- id: recipeNameSchema.parse(id),
12
- }))
13
- .filter((recipe) => category === undefined || recipe.category === category)
14
- .filter((recipe) => matchesSearch(recipe, searchTerms));
6
+ return structuredClone(searchRecipes(recipeMetadata, recipeFiltersSchema.parse(filters)));
15
7
  }
16
8
  export function describeRecipe(name) {
17
- const recipe = recipes[recipeNameSchema.parse(name)];
18
- return {
19
- ...recipeMetadataSchema.parse(recipe.metadata),
20
- inputSchema: z.toJSONSchema(recipe.inputSchema, { io: 'input' }),
21
- resultSchema: z.toJSONSchema(recipe.resultSchema),
22
- };
23
- }
24
- function matchesSearch(recipe, terms) {
25
- const text = [recipe.id, recipe.title, recipe.description, recipe.category, ...recipe.tags]
26
- .join(' ')
27
- .toLowerCase();
28
- return terms.every((term) => text.includes(term));
9
+ const id = recipeNameSchema.parse(name);
10
+ const metadata = recipeMetadata.find((recipe) => recipe.id === id);
11
+ const schemas = JSON.parse(readFileSync(new URL(`./generated/details/${id}.json`, import.meta.url), 'utf8'));
12
+ return { ...structuredClone(metadata), ...schemas };
29
13
  }
30
14
  export { recipeFiltersSchema, recipeNameSchema } from './schema.js';
31
15
  export { recipeCategorySchema, recipeMetadataSchema } from '../src/schema.js';
@@ -0,0 +1,4 @@
1
+ import type { RecipeOptions } from '../src/schema.js';
2
+ import type { RecipeName } from './schema.js';
3
+ export type RecipeRunner = (input: unknown, options?: RecipeOptions) => Promise<unknown>;
4
+ export declare function loadRecipe(name: RecipeName): Promise<RecipeRunner>;
@@ -0,0 +1,5 @@
1
+ import { recipeLoaders } from './generated/loaders.js';
2
+ import { recipeNameSchema } from './schema.js';
3
+ export function loadRecipe(name) {
4
+ return recipeLoaders[recipeNameSchema.parse(name)]();
5
+ }
@@ -1,71 +1,71 @@
1
1
  import { z } from 'zod';
2
2
  export declare const recipeNameSchema: z.ZodEnum<{
3
- route: "route";
4
- answerability: "answerability";
3
+ "action-scope": "action-scope";
4
+ "answer-consistency": "answer-consistency";
5
5
  "answer-coverage": "answer-coverage";
6
+ "answer-invalidation": "answer-invalidation";
6
7
  "answer-relevance": "answer-relevance";
8
+ answerability: "answerability";
9
+ "argument-fit": "argument-fit";
10
+ "attempted-step": "attempted-step";
11
+ "audience-fit": "audience-fit";
12
+ "cache-match": "cache-match";
13
+ "cancellation-check": "cancellation-check";
14
+ "certainty-match": "certainty-match";
15
+ "change-meaning": "change-meaning";
7
16
  "citation-match": "citation-match";
8
- verify: "verify";
9
17
  "citation-needed": "citation-needed";
10
- "answer-consistency": "answer-consistency";
11
- "summary-coverage": "summary-coverage";
12
- "certainty-match": "certainty-match";
13
- "promise-check": "promise-check";
14
- "tone-check": "tone-check";
18
+ clarify: "clarify";
19
+ "confirmation-match": "confirmation-match";
20
+ "context-role": "context-role";
21
+ "correction-target": "correction-target";
22
+ "document-role": "document-role";
15
23
  "draft-compare": "draft-compare";
16
- rerank: "rerank";
17
- "retrieval-needed": "retrieval-needed";
18
- "freshness-needed": "freshness-needed";
19
- "source-applicability": "source-applicability";
20
24
  "evidence-conflict": "evidence-conflict";
21
- "passage-duplicate": "passage-duplicate";
22
25
  "evidence-novelty": "evidence-novelty";
23
- "cache-match": "cache-match";
26
+ "fact-stability": "fact-stability";
27
+ "failure-kind": "failure-kind";
28
+ "feedback-kind": "feedback-kind";
29
+ "field-select": "field-select";
30
+ "followup-link": "followup-link";
31
+ "freshness-needed": "freshness-needed";
32
+ "frustration-signal": "frustration-signal";
33
+ handoff: "handoff";
34
+ "incident-match": "incident-match";
35
+ "instruction-fit": "instruction-fit";
36
+ "intent-change": "intent-change";
37
+ "issue-impact": "issue-impact";
38
+ "memory-relation": "memory-relation";
39
+ "memory-scope": "memory-scope";
40
+ "memory-value": "memory-value";
41
+ "passage-duplicate": "passage-duplicate";
42
+ "preference-kind": "preference-kind";
43
+ "promise-check": "promise-check";
24
44
  "query-equivalence": "query-equivalence";
25
- "context-role": "context-role";
26
45
  "query-specificity": "query-specificity";
27
- clarify: "clarify";
28
- "turn-intent": "turn-intent";
29
- "followup-link": "followup-link";
30
46
  "reference-resolve": "reference-resolve";
31
- "intent-change": "intent-change";
32
- "correction-target": "correction-target";
33
- "confirmation-match": "confirmation-match";
34
- "cancellation-check": "cancellation-check";
35
- "topic-shift": "topic-shift";
36
- "response-needed": "response-needed";
47
+ "repeated-attempt": "repeated-attempt";
48
+ "reply-template-match": "reply-template-match";
49
+ rerank: "rerank";
37
50
  "resolution-check": "resolution-check";
38
- handoff: "handoff";
39
- "tool-fit": "tool-fit";
40
- "argument-fit": "argument-fit";
41
- "result-usefulness": "result-usefulness";
51
+ "response-needed": "response-needed";
42
52
  "result-outcome": "result-outcome";
43
- "action-scope": "action-scope";
44
- "step-progress": "step-progress";
45
- "repeated-attempt": "repeated-attempt";
53
+ "result-usefulness": "result-usefulness";
54
+ "retrieval-needed": "retrieval-needed";
55
+ route: "route";
56
+ "source-applicability": "source-applicability";
46
57
  "step-complete": "step-complete";
47
- "failure-kind": "failure-kind";
48
- "instruction-fit": "instruction-fit";
49
- "issue-impact": "issue-impact";
50
- "attempted-step": "attempted-step";
51
- "workaround-fit": "workaround-fit";
58
+ "step-progress": "step-progress";
59
+ "summary-coverage": "summary-coverage";
52
60
  "ticket-match": "ticket-match";
53
- "incident-match": "incident-match";
61
+ "tone-check": "tone-check";
62
+ "tool-fit": "tool-fit";
63
+ "topic-shift": "topic-shift";
54
64
  "troubleshooting-fit": "troubleshooting-fit";
55
- "frustration-signal": "frustration-signal";
65
+ "turn-intent": "turn-intent";
56
66
  "urgency-signal": "urgency-signal";
57
- "feedback-kind": "feedback-kind";
58
- "reply-template-match": "reply-template-match";
59
- "memory-value": "memory-value";
60
- "memory-scope": "memory-scope";
61
- "memory-relation": "memory-relation";
62
- "preference-kind": "preference-kind";
63
- "fact-stability": "fact-stability";
64
- "document-role": "document-role";
65
- "audience-fit": "audience-fit";
66
- "change-meaning": "change-meaning";
67
- "answer-invalidation": "answer-invalidation";
68
- "field-select": "field-select";
67
+ verify: "verify";
68
+ "workaround-fit": "workaround-fit";
69
69
  }>;
70
70
  export declare const recipeFiltersSchema: z.ZodObject<{
71
71
  query: z.ZodOptional<z.ZodString>;
@@ -78,6 +78,7 @@ export declare const recipeFiltersSchema: z.ZodObject<{
78
78
  memory: "memory";
79
79
  knowledge: "knowledge";
80
80
  }>>;
81
+ limit: z.ZodOptional<z.ZodNumber>;
81
82
  }, z.core.$strip>;
82
83
  export type RecipeName = z.infer<typeof recipeNameSchema>;
83
84
  export type RecipeFilters = z.infer<typeof recipeFiltersSchema>;
@@ -1,9 +1,9 @@
1
1
  import { z } from 'zod';
2
2
  import { nonEmptyText, recipeCategorySchema } from '../src/schema.js';
3
- import { recipes } from './recipes.js';
4
- const recipeNames = Object.keys(recipes);
3
+ import { recipeNames } from './generated/names.js';
5
4
  export const recipeNameSchema = z.enum(recipeNames);
6
5
  export const recipeFiltersSchema = z.object({
7
6
  query: nonEmptyText.optional(),
8
7
  category: recipeCategorySchema.optional(),
8
+ limit: z.number().int().positive().optional(),
9
9
  });
@@ -0,0 +1,3 @@
1
+ import type { RecipeMetadata } from '../src/schema.js';
2
+ import type { RecipeFilters } from './schema.js';
3
+ export declare function searchRecipes<T extends RecipeMetadata>(recipes: readonly T[], filters: RecipeFilters): T[];
@@ -0,0 +1,60 @@
1
+ const stopWords = new Set([
2
+ 'a',
3
+ 'an',
4
+ 'the',
5
+ 'i',
6
+ 'this',
7
+ 'is',
8
+ 'my',
9
+ 'to',
10
+ 'of',
11
+ 'for',
12
+ 'in',
13
+ 'it',
14
+ 'do',
15
+ 'does',
16
+ 'how',
17
+ 'should',
18
+ 'with',
19
+ ]);
20
+ export function searchRecipes(recipes, filters) {
21
+ const query = normalize(filters.query ?? '');
22
+ const words = query.split(' ').filter(Boolean);
23
+ const significantWords = words.filter((word) => !stopWords.has(word));
24
+ const terms = significantWords.length ? significantWords : words;
25
+ return recipes
26
+ .filter((recipe) => filters.category === undefined || recipe.category === filters.category)
27
+ .map((recipe) => ({ recipe, score: scoreRecipe(recipe, query, terms) }))
28
+ .filter(({ score }) => score >= 0)
29
+ .sort((a, b) => b.score - a.score || a.recipe.id.localeCompare(b.recipe.id, 'en'))
30
+ .slice(0, filters.limit)
31
+ .map(({ recipe }) => recipe);
32
+ }
33
+ function scoreRecipe(recipe, query, terms) {
34
+ if (!query)
35
+ return 0;
36
+ const fields = [
37
+ [normalize(recipe.id), 40],
38
+ [normalize(recipe.title), 25],
39
+ [normalize(recipe.tags.join(' ')), 20],
40
+ [normalize(recipe.useWhen ?? ''), 10],
41
+ [normalize(recipe.description), 5],
42
+ [normalize(recipe.category), 1],
43
+ ];
44
+ let score = normalize(recipe.id) === query ? 1000 : 0;
45
+ if (terms.length > 1 && normalize(recipe.useWhen ?? '').includes(terms.join(' ')))
46
+ score += 50;
47
+ for (const term of terms) {
48
+ const matches = fields.filter(([text]) => text.includes(term));
49
+ if (!matches.length)
50
+ return -1;
51
+ score += Math.max(...matches.map(([, weight]) => weight));
52
+ }
53
+ return score;
54
+ }
55
+ function normalize(text) {
56
+ return text
57
+ .toLowerCase()
58
+ .replace(/[^\p{L}\p{N}]+/gu, ' ')
59
+ .trim();
60
+ }
package/dist/cli/index.js CHANGED
@@ -2,7 +2,7 @@
2
2
  import { readFile } from 'node:fs/promises';
3
3
  import { stdin, stdout, stderr } from 'node:process';
4
4
  import { z } from 'zod';
5
- import { recipes } from '../catalog/recipes.js';
5
+ import { loadRecipe } from '../catalog/runner.js';
6
6
  import { listRecipes, describeRecipe, recipeCategorySchema } from '../catalog/index.js';
7
7
  import { commandArgumentsSchema, demoFixtureSchema } from './schema.js';
8
8
  async function main() {
@@ -34,8 +34,8 @@ function parseCommandArguments(args) {
34
34
  function printHelp() {
35
35
  stdout.write(`jev-recipes
36
36
 
37
- jev-recipes list [query] [--category <category>]
38
- Discover recipes (all search terms must match)
37
+ jev-recipes list [query] [--category <category>] [--limit <count>]
38
+ Find recipes, with the closest matches first
39
39
  jev-recipes describe <recipe> Print metadata, JSON schemas, and example input
40
40
  jev-recipes demo <recipe|all> Run offline fixtures (no model calls)
41
41
  jev-recipes example <recipe> Print example input as JSON
@@ -55,9 +55,11 @@ async function printVersion() {
55
55
  }
56
56
  function printRecipeList(args) {
57
57
  const categoryPosition = args.indexOf('--category');
58
- const query = args[0] === '--category' ? undefined : args[0];
58
+ const limitPosition = args.indexOf('--limit');
59
+ const query = args[0]?.startsWith('--') ? undefined : args[0];
59
60
  const category = categoryPosition === -1 ? undefined : recipeCategorySchema.parse(args[categoryPosition + 1]);
60
- printJson(listRecipes({ query, category }));
61
+ const limit = limitPosition === -1 ? undefined : Number(args[limitPosition + 1]);
62
+ printJson(listRecipes({ query, category, limit }));
61
63
  }
62
64
  async function printRecipeDescription(name) {
63
65
  const fixture = await readDemoFixture(name);
@@ -76,7 +78,8 @@ async function runOfflineRecipes(name) {
76
78
  async function evaluateOfflineRecipe(name) {
77
79
  const fixture = await readDemoFixture(name);
78
80
  const fixtureClient = { systemOne: async () => fixture.response };
79
- const result = await recipes[name].run(fixture.input, { client: fixtureClient });
81
+ const run = await loadRecipe(name);
82
+ const result = await run(fixture.input, { client: fixtureClient });
80
83
  return {
81
84
  mode: 'demo',
82
85
  recipe: name,
@@ -85,12 +88,18 @@ async function evaluateOfflineRecipe(name) {
85
88
  };
86
89
  }
87
90
  async function runLiveRecipe(name, source) {
91
+ if (!process.env.TYPESAFE_API_KEY?.trim()) {
92
+ throw new Error('Set TYPESAFE_API_KEY in your environment before running a live recipe. Try jev-recipes demo ' +
93
+ name +
94
+ ' without a key.');
95
+ }
88
96
  const inputJson = source === '-' ? await readStandardInput() : await readFile(source, 'utf8');
89
- const result = await recipes[name].run(JSON.parse(inputJson));
97
+ const run = await loadRecipe(name);
98
+ const result = await run(JSON.parse(inputJson));
90
99
  printJson({ mode: 'live', result });
91
100
  }
92
101
  async function readDemoFixture(name) {
93
- const fixturePath = new URL(`../../recipes/${name}/demo.json`, import.meta.url);
102
+ const fixturePath = new URL(`../recipes/${name}/demo.json`, import.meta.url);
94
103
  const fixtureJson = await readFile(fixturePath, 'utf8');
95
104
  return demoFixtureSchema.parse(JSON.parse(fixtureJson));
96
105
  }