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.
- package/CHANGELOG.md +8 -1
- package/README.md +62 -89
- package/dist/catalog/generated/details/action-scope.json +43 -0
- package/dist/catalog/generated/details/answer-consistency.json +46 -0
- package/dist/catalog/generated/details/answer-coverage.json +66 -0
- package/dist/catalog/generated/details/answer-invalidation.json +43 -0
- package/dist/catalog/generated/details/answer-relevance.json +45 -0
- package/dist/catalog/generated/details/answerability.json +55 -0
- package/dist/catalog/generated/details/argument-fit.json +41 -0
- package/dist/catalog/generated/details/attempted-step.json +39 -0
- package/dist/catalog/generated/details/audience-fit.json +45 -0
- package/dist/catalog/generated/details/cache-match.json +41 -0
- package/dist/catalog/generated/details/cancellation-check.json +40 -0
- package/dist/catalog/generated/details/certainty-match.json +45 -0
- package/dist/catalog/generated/details/change-meaning.json +43 -0
- package/dist/catalog/generated/details/citation-match.json +64 -0
- package/dist/catalog/generated/details/citation-needed.json +39 -0
- package/dist/catalog/generated/details/clarify.json +64 -0
- package/dist/catalog/generated/details/confirmation-match.json +40 -0
- package/dist/catalog/generated/details/context-role.json +45 -0
- package/dist/catalog/generated/details/correction-target.json +68 -0
- package/dist/catalog/generated/details/document-role.json +68 -0
- package/dist/catalog/generated/details/draft-compare.json +44 -0
- package/dist/catalog/generated/details/evidence-conflict.json +46 -0
- package/dist/catalog/generated/details/evidence-novelty.json +55 -0
- package/dist/catalog/generated/details/fact-stability.json +39 -0
- package/dist/catalog/generated/details/failure-kind.json +68 -0
- package/dist/catalog/generated/details/feedback-kind.json +69 -0
- package/dist/catalog/generated/details/field-select.json +68 -0
- package/dist/catalog/generated/details/followup-link.json +68 -0
- package/dist/catalog/generated/details/freshness-needed.json +38 -0
- package/dist/catalog/generated/details/frustration-signal.json +39 -0
- package/dist/catalog/generated/details/handoff.json +75 -0
- package/dist/catalog/generated/details/incident-match.json +68 -0
- package/dist/catalog/generated/details/instruction-fit.json +40 -0
- package/dist/catalog/generated/details/intent-change.json +43 -0
- package/dist/catalog/generated/details/issue-impact.json +42 -0
- package/dist/catalog/generated/details/memory-relation.json +46 -0
- package/dist/catalog/generated/details/memory-scope.json +42 -0
- package/dist/catalog/generated/details/memory-value.json +46 -0
- package/dist/catalog/generated/details/passage-duplicate.json +42 -0
- package/dist/catalog/generated/details/preference-kind.json +45 -0
- package/dist/catalog/generated/details/promise-check.json +42 -0
- package/dist/catalog/generated/details/query-equivalence.json +43 -0
- package/dist/catalog/generated/details/query-specificity.json +39 -0
- package/dist/catalog/generated/details/reference-resolve.json +69 -0
- package/dist/catalog/generated/details/repeated-attempt.json +43 -0
- package/dist/catalog/generated/details/reply-template-match.json +68 -0
- package/dist/catalog/generated/details/rerank.json +55 -0
- package/dist/catalog/generated/details/resolution-check.json +40 -0
- package/dist/catalog/generated/details/response-needed.json +42 -0
- package/dist/catalog/generated/details/result-outcome.json +42 -0
- package/dist/catalog/generated/details/result-usefulness.json +45 -0
- package/dist/catalog/generated/details/retrieval-needed.json +39 -0
- package/dist/catalog/generated/details/route.json +51 -0
- package/dist/catalog/generated/details/source-applicability.json +39 -0
- package/dist/catalog/generated/details/step-complete.json +39 -0
- package/dist/catalog/generated/details/step-progress.json +43 -0
- package/dist/catalog/generated/details/summary-coverage.json +66 -0
- package/dist/catalog/generated/details/ticket-match.json +43 -0
- package/dist/catalog/generated/details/tone-check.json +63 -0
- package/dist/catalog/generated/details/tool-fit.json +40 -0
- package/dist/catalog/generated/details/topic-shift.json +43 -0
- package/dist/catalog/generated/details/troubleshooting-fit.json +40 -0
- package/dist/catalog/generated/details/turn-intent.json +69 -0
- package/dist/catalog/generated/details/urgency-signal.json +39 -0
- package/dist/catalog/generated/details/verify.json +66 -0
- package/dist/catalog/generated/details/workaround-fit.json +40 -0
- package/dist/catalog/generated/loaders.d.ts +3 -0
- package/dist/catalog/generated/loaders.js +68 -0
- package/dist/catalog/generated/metadata.d.ts +2 -0
- package/dist/catalog/generated/metadata.js +1115 -0
- package/dist/catalog/generated/names.d.ts +1 -0
- package/dist/catalog/generated/names.js +69 -0
- package/dist/catalog/index.d.ts +9 -1764
- package/dist/catalog/index.js +8 -24
- package/dist/catalog/runner.d.ts +4 -0
- package/dist/catalog/runner.js +5 -0
- package/dist/catalog/schema.d.ts +51 -50
- package/dist/catalog/schema.js +2 -2
- package/dist/catalog/search.d.ts +3 -0
- package/dist/catalog/search.js +60 -0
- package/dist/cli/index.js +17 -8
- package/dist/cli/schema.d.ts +151 -167
- package/dist/cli/schema.js +37 -4
- package/dist/recipes/action-scope/schema.d.ts +3 -3
- package/dist/recipes/answer-consistency/schema.d.ts +3 -3
- package/dist/recipes/answer-coverage/schema.d.ts +6 -6
- package/dist/recipes/answerability/schema.d.ts +6 -6
- package/dist/recipes/cancellation-check/schema.d.ts +3 -3
- package/dist/recipes/certainty-match/schema.d.ts +3 -3
- package/dist/recipes/citation-needed/schema.d.ts +3 -3
- package/dist/recipes/clarify/schema.d.ts +3 -3
- package/dist/recipes/document-role/schema.d.ts +6 -6
- package/dist/recipes/evidence-conflict/schema.d.ts +3 -3
- package/dist/recipes/feedback-kind/schema.d.ts +3 -3
- package/dist/recipes/freshness-needed/schema.d.ts +3 -3
- package/dist/recipes/handoff/schema.d.ts +3 -3
- package/dist/recipes/passage-duplicate/schema.d.ts +3 -3
- package/dist/recipes/preference-kind/schema.d.ts +3 -3
- package/dist/recipes/promise-check/schema.d.ts +3 -3
- package/dist/recipes/query-equivalence/schema.d.ts +3 -3
- package/dist/recipes/result-outcome/schema.d.ts +3 -3
- package/dist/recipes/retrieval-needed/schema.d.ts +3 -3
- package/dist/recipes/step-progress/schema.d.ts +3 -3
- package/dist/recipes/summary-coverage/schema.d.ts +3 -3
- package/dist/recipes/ticket-match/schema.d.ts +3 -3
- package/dist/recipes/turn-intent/schema.d.ts +12 -12
- package/dist/src/index.d.ts +117 -117
- package/dist/src/index.js +51 -50
- package/dist/src/schema.d.ts +5 -0
- package/dist/src/schema.js +2 -0
- package/package.json +200 -191
- package/dist/catalog/groups/answers.d.ts +0 -565
- package/dist/catalog/groups/answers.js +0 -82
- package/dist/catalog/groups/conversation.d.ts +0 -608
- package/dist/catalog/groups/conversation.js +0 -90
- package/dist/catalog/groups/knowledge.d.ts +0 -522
- package/dist/catalog/groups/knowledge.js +0 -82
- package/dist/catalog/groups/retrieval.d.ts +0 -664
- package/dist/catalog/groups/retrieval.js +0 -106
- package/dist/catalog/groups/support.d.ts +0 -522
- package/dist/catalog/groups/support.js +0 -82
- package/dist/catalog/groups/workflow.d.ts +0 -623
- package/dist/catalog/groups/workflow.js +0 -98
- package/dist/catalog/recipes.d.ts +0 -3488
- package/dist/catalog/recipes.js +0 -14
- package/dist/examples/support/index.d.ts +0 -1
- package/dist/examples/support/index.js +0 -37
- package/dist/examples/support/schema.d.ts +0 -566
- package/dist/examples/support/schema.js +0 -76
- package/dist/examples/support/workflow.d.ts +0 -3
- package/dist/examples/support/workflow.js +0 -85
- package/dist/recipes/action-scope/metadata.d.ts +0 -8
- package/dist/recipes/action-scope/metadata.js +0 -10
- package/dist/recipes/answer-consistency/metadata.d.ts +0 -8
- package/dist/recipes/answer-consistency/metadata.js +0 -10
- package/dist/recipes/answer-coverage/metadata.d.ts +0 -8
- package/dist/recipes/answer-coverage/metadata.js +0 -11
- package/dist/recipes/answer-invalidation/metadata.d.ts +0 -8
- package/dist/recipes/answer-invalidation/metadata.js +0 -10
- package/dist/recipes/answer-relevance/metadata.d.ts +0 -8
- package/dist/recipes/answer-relevance/metadata.js +0 -10
- package/dist/recipes/answerability/metadata.d.ts +0 -8
- package/dist/recipes/answerability/metadata.js +0 -11
- package/dist/recipes/argument-fit/metadata.d.ts +0 -8
- package/dist/recipes/argument-fit/metadata.js +0 -10
- package/dist/recipes/attempted-step/metadata.d.ts +0 -8
- package/dist/recipes/attempted-step/metadata.js +0 -10
- package/dist/recipes/audience-fit/metadata.d.ts +0 -8
- package/dist/recipes/audience-fit/metadata.js +0 -10
- package/dist/recipes/cache-match/metadata.d.ts +0 -8
- package/dist/recipes/cache-match/metadata.js +0 -10
- package/dist/recipes/cancellation-check/metadata.d.ts +0 -8
- package/dist/recipes/cancellation-check/metadata.js +0 -10
- package/dist/recipes/certainty-match/metadata.d.ts +0 -8
- package/dist/recipes/certainty-match/metadata.js +0 -10
- package/dist/recipes/change-meaning/metadata.d.ts +0 -8
- package/dist/recipes/change-meaning/metadata.js +0 -10
- package/dist/recipes/citation-match/metadata.d.ts +0 -9
- package/dist/recipes/citation-match/metadata.js +0 -12
- package/dist/recipes/citation-needed/metadata.d.ts +0 -8
- package/dist/recipes/citation-needed/metadata.js +0 -10
- package/dist/recipes/clarify/metadata.d.ts +0 -8
- package/dist/recipes/clarify/metadata.js +0 -11
- package/dist/recipes/confirmation-match/metadata.d.ts +0 -8
- package/dist/recipes/confirmation-match/metadata.js +0 -10
- package/dist/recipes/context-role/metadata.d.ts +0 -8
- package/dist/recipes/context-role/metadata.js +0 -10
- package/dist/recipes/correction-target/metadata.d.ts +0 -8
- package/dist/recipes/correction-target/metadata.js +0 -11
- package/dist/recipes/document-role/metadata.d.ts +0 -8
- package/dist/recipes/document-role/metadata.js +0 -10
- package/dist/recipes/draft-compare/metadata.d.ts +0 -8
- package/dist/recipes/draft-compare/metadata.js +0 -10
- package/dist/recipes/evidence-conflict/metadata.d.ts +0 -8
- package/dist/recipes/evidence-conflict/metadata.js +0 -10
- package/dist/recipes/evidence-novelty/metadata.d.ts +0 -8
- package/dist/recipes/evidence-novelty/metadata.js +0 -11
- package/dist/recipes/fact-stability/metadata.d.ts +0 -8
- package/dist/recipes/fact-stability/metadata.js +0 -10
- package/dist/recipes/failure-kind/metadata.d.ts +0 -8
- package/dist/recipes/failure-kind/metadata.js +0 -11
- package/dist/recipes/feedback-kind/metadata.d.ts +0 -8
- package/dist/recipes/feedback-kind/metadata.js +0 -10
- package/dist/recipes/field-select/metadata.d.ts +0 -8
- package/dist/recipes/field-select/metadata.js +0 -11
- package/dist/recipes/followup-link/metadata.d.ts +0 -8
- package/dist/recipes/followup-link/metadata.js +0 -11
- package/dist/recipes/freshness-needed/metadata.d.ts +0 -8
- package/dist/recipes/freshness-needed/metadata.js +0 -10
- package/dist/recipes/frustration-signal/metadata.d.ts +0 -8
- package/dist/recipes/frustration-signal/metadata.js +0 -10
- package/dist/recipes/handoff/metadata.d.ts +0 -8
- package/dist/recipes/handoff/metadata.js +0 -11
- package/dist/recipes/incident-match/metadata.d.ts +0 -8
- package/dist/recipes/incident-match/metadata.js +0 -11
- package/dist/recipes/instruction-fit/metadata.d.ts +0 -8
- package/dist/recipes/instruction-fit/metadata.js +0 -10
- package/dist/recipes/intent-change/metadata.d.ts +0 -8
- package/dist/recipes/intent-change/metadata.js +0 -10
- package/dist/recipes/issue-impact/metadata.d.ts +0 -8
- package/dist/recipes/issue-impact/metadata.js +0 -10
- package/dist/recipes/memory-relation/metadata.d.ts +0 -8
- package/dist/recipes/memory-relation/metadata.js +0 -10
- package/dist/recipes/memory-scope/metadata.d.ts +0 -8
- package/dist/recipes/memory-scope/metadata.js +0 -10
- package/dist/recipes/memory-value/metadata.d.ts +0 -8
- package/dist/recipes/memory-value/metadata.js +0 -10
- package/dist/recipes/passage-duplicate/metadata.d.ts +0 -8
- package/dist/recipes/passage-duplicate/metadata.js +0 -10
- package/dist/recipes/preference-kind/metadata.d.ts +0 -8
- package/dist/recipes/preference-kind/metadata.js +0 -10
- package/dist/recipes/promise-check/metadata.d.ts +0 -8
- package/dist/recipes/promise-check/metadata.js +0 -10
- package/dist/recipes/query-equivalence/metadata.d.ts +0 -8
- package/dist/recipes/query-equivalence/metadata.js +0 -10
- package/dist/recipes/query-specificity/metadata.d.ts +0 -8
- package/dist/recipes/query-specificity/metadata.js +0 -10
- package/dist/recipes/reference-resolve/metadata.d.ts +0 -8
- package/dist/recipes/reference-resolve/metadata.js +0 -11
- package/dist/recipes/repeated-attempt/metadata.d.ts +0 -8
- package/dist/recipes/repeated-attempt/metadata.js +0 -10
- package/dist/recipes/reply-template-match/metadata.d.ts +0 -8
- package/dist/recipes/reply-template-match/metadata.js +0 -11
- package/dist/recipes/rerank/metadata.d.ts +0 -8
- package/dist/recipes/rerank/metadata.js +0 -11
- package/dist/recipes/resolution-check/metadata.d.ts +0 -8
- package/dist/recipes/resolution-check/metadata.js +0 -10
- package/dist/recipes/response-needed/metadata.d.ts +0 -8
- package/dist/recipes/response-needed/metadata.js +0 -10
- package/dist/recipes/result-outcome/metadata.d.ts +0 -8
- package/dist/recipes/result-outcome/metadata.js +0 -10
- package/dist/recipes/result-usefulness/metadata.d.ts +0 -8
- package/dist/recipes/result-usefulness/metadata.js +0 -10
- package/dist/recipes/retrieval-needed/metadata.d.ts +0 -8
- package/dist/recipes/retrieval-needed/metadata.js +0 -10
- package/dist/recipes/route/metadata.d.ts +0 -8
- package/dist/recipes/route/metadata.js +0 -11
- package/dist/recipes/source-applicability/metadata.d.ts +0 -8
- package/dist/recipes/source-applicability/metadata.js +0 -10
- package/dist/recipes/step-complete/metadata.d.ts +0 -8
- package/dist/recipes/step-complete/metadata.js +0 -10
- package/dist/recipes/step-progress/metadata.d.ts +0 -8
- package/dist/recipes/step-progress/metadata.js +0 -10
- package/dist/recipes/summary-coverage/metadata.d.ts +0 -8
- package/dist/recipes/summary-coverage/metadata.js +0 -11
- package/dist/recipes/ticket-match/metadata.d.ts +0 -8
- package/dist/recipes/ticket-match/metadata.js +0 -10
- package/dist/recipes/tone-check/metadata.d.ts +0 -8
- package/dist/recipes/tone-check/metadata.js +0 -11
- package/dist/recipes/tool-fit/metadata.d.ts +0 -8
- package/dist/recipes/tool-fit/metadata.js +0 -10
- package/dist/recipes/topic-shift/metadata.d.ts +0 -8
- package/dist/recipes/topic-shift/metadata.js +0 -10
- package/dist/recipes/troubleshooting-fit/metadata.d.ts +0 -8
- package/dist/recipes/troubleshooting-fit/metadata.js +0 -10
- package/dist/recipes/turn-intent/metadata.d.ts +0 -8
- package/dist/recipes/turn-intent/metadata.js +0 -10
- package/dist/recipes/urgency-signal/metadata.d.ts +0 -8
- package/dist/recipes/urgency-signal/metadata.js +0 -10
- package/dist/recipes/verify/metadata.d.ts +0 -8
- package/dist/recipes/verify/metadata.js +0 -11
- package/dist/recipes/workaround-fit/metadata.d.ts +0 -8
- package/dist/recipes/workaround-fit/metadata.js +0 -10
- package/examples/support/README.md +0 -60
- package/examples/support/demo.json +0 -156
- package/recipes/README.md +0 -128
- package/recipes/action-scope/README.md +0 -49
- package/recipes/answer-consistency/README.md +0 -50
- package/recipes/answer-coverage/README.md +0 -60
- package/recipes/answer-invalidation/README.md +0 -50
- package/recipes/answer-relevance/README.md +0 -49
- package/recipes/answerability/README.md +0 -54
- package/recipes/argument-fit/README.md +0 -51
- package/recipes/attempted-step/README.md +0 -48
- package/recipes/audience-fit/README.md +0 -50
- package/recipes/cache-match/README.md +0 -51
- package/recipes/cancellation-check/README.md +0 -50
- package/recipes/certainty-match/README.md +0 -49
- package/recipes/change-meaning/README.md +0 -49
- package/recipes/citation-match/README.md +0 -51
- package/recipes/citation-needed/README.md +0 -49
- package/recipes/clarify/README.md +0 -61
- package/recipes/confirmation-match/README.md +0 -49
- package/recipes/context-role/README.md +0 -49
- package/recipes/correction-target/README.md +0 -52
- package/recipes/document-role/README.md +0 -51
- package/recipes/draft-compare/README.md +0 -54
- package/recipes/evidence-conflict/README.md +0 -51
- package/recipes/evidence-novelty/README.md +0 -56
- package/recipes/fact-stability/README.md +0 -47
- package/recipes/failure-kind/README.md +0 -52
- package/recipes/feedback-kind/README.md +0 -51
- package/recipes/field-select/README.md +0 -53
- package/recipes/followup-link/README.md +0 -52
- package/recipes/freshness-needed/README.md +0 -46
- package/recipes/frustration-signal/README.md +0 -47
- package/recipes/handoff/README.md +0 -56
- package/recipes/incident-match/README.md +0 -52
- package/recipes/instruction-fit/README.md +0 -49
- package/recipes/intent-change/README.md +0 -50
- package/recipes/issue-impact/README.md +0 -48
- package/recipes/memory-relation/README.md +0 -52
- package/recipes/memory-scope/README.md +0 -50
- package/recipes/memory-value/README.md +0 -50
- package/recipes/passage-duplicate/README.md +0 -49
- package/recipes/preference-kind/README.md +0 -48
- package/recipes/promise-check/README.md +0 -48
- package/recipes/query-equivalence/README.md +0 -50
- package/recipes/query-specificity/README.md +0 -47
- package/recipes/reference-resolve/README.md +0 -54
- package/recipes/repeated-attempt/README.md +0 -50
- package/recipes/reply-template-match/README.md +0 -52
- package/recipes/rerank/README.md +0 -55
- package/recipes/resolution-check/README.md +0 -49
- package/recipes/response-needed/README.md +0 -48
- package/recipes/result-outcome/README.md +0 -49
- package/recipes/result-usefulness/README.md +0 -49
- package/recipes/retrieval-needed/README.md +0 -48
- package/recipes/route/README.md +0 -47
- package/recipes/source-applicability/README.md +0 -48
- package/recipes/step-complete/README.md +0 -48
- package/recipes/step-progress/README.md +0 -51
- package/recipes/summary-coverage/README.md +0 -60
- package/recipes/ticket-match/README.md +0 -50
- package/recipes/tone-check/README.md +0 -55
- package/recipes/tool-fit/README.md +0 -49
- package/recipes/topic-shift/README.md +0 -50
- package/recipes/troubleshooting-fit/README.md +0 -49
- package/recipes/turn-intent/README.md +0 -52
- package/recipes/urgency-signal/README.md +0 -47
- package/recipes/verify/README.md +0 -54
- package/recipes/workaround-fit/README.md +0 -50
- /package/{recipes → dist/recipes}/action-scope/demo.json +0 -0
- /package/{recipes → dist/recipes}/answer-consistency/demo.json +0 -0
- /package/{recipes → dist/recipes}/answer-coverage/demo.json +0 -0
- /package/{recipes → dist/recipes}/answer-invalidation/demo.json +0 -0
- /package/{recipes → dist/recipes}/answer-relevance/demo.json +0 -0
- /package/{recipes → dist/recipes}/answerability/demo.json +0 -0
- /package/{recipes → dist/recipes}/argument-fit/demo.json +0 -0
- /package/{recipes → dist/recipes}/attempted-step/demo.json +0 -0
- /package/{recipes → dist/recipes}/audience-fit/demo.json +0 -0
- /package/{recipes → dist/recipes}/cache-match/demo.json +0 -0
- /package/{recipes → dist/recipes}/cancellation-check/demo.json +0 -0
- /package/{recipes → dist/recipes}/certainty-match/demo.json +0 -0
- /package/{recipes → dist/recipes}/change-meaning/demo.json +0 -0
- /package/{recipes → dist/recipes}/citation-match/demo.json +0 -0
- /package/{recipes → dist/recipes}/citation-needed/demo.json +0 -0
- /package/{recipes → dist/recipes}/clarify/demo.json +0 -0
- /package/{recipes → dist/recipes}/confirmation-match/demo.json +0 -0
- /package/{recipes → dist/recipes}/context-role/demo.json +0 -0
- /package/{recipes → dist/recipes}/correction-target/demo.json +0 -0
- /package/{recipes → dist/recipes}/document-role/demo.json +0 -0
- /package/{recipes → dist/recipes}/draft-compare/demo.json +0 -0
- /package/{recipes → dist/recipes}/evidence-conflict/demo.json +0 -0
- /package/{recipes → dist/recipes}/evidence-novelty/demo.json +0 -0
- /package/{recipes → dist/recipes}/fact-stability/demo.json +0 -0
- /package/{recipes → dist/recipes}/failure-kind/demo.json +0 -0
- /package/{recipes → dist/recipes}/feedback-kind/demo.json +0 -0
- /package/{recipes → dist/recipes}/field-select/demo.json +0 -0
- /package/{recipes → dist/recipes}/followup-link/demo.json +0 -0
- /package/{recipes → dist/recipes}/freshness-needed/demo.json +0 -0
- /package/{recipes → dist/recipes}/frustration-signal/demo.json +0 -0
- /package/{recipes → dist/recipes}/handoff/demo.json +0 -0
- /package/{recipes → dist/recipes}/incident-match/demo.json +0 -0
- /package/{recipes → dist/recipes}/instruction-fit/demo.json +0 -0
- /package/{recipes → dist/recipes}/intent-change/demo.json +0 -0
- /package/{recipes → dist/recipes}/issue-impact/demo.json +0 -0
- /package/{recipes → dist/recipes}/memory-relation/demo.json +0 -0
- /package/{recipes → dist/recipes}/memory-scope/demo.json +0 -0
- /package/{recipes → dist/recipes}/memory-value/demo.json +0 -0
- /package/{recipes → dist/recipes}/passage-duplicate/demo.json +0 -0
- /package/{recipes → dist/recipes}/preference-kind/demo.json +0 -0
- /package/{recipes → dist/recipes}/promise-check/demo.json +0 -0
- /package/{recipes → dist/recipes}/query-equivalence/demo.json +0 -0
- /package/{recipes → dist/recipes}/query-specificity/demo.json +0 -0
- /package/{recipes → dist/recipes}/reference-resolve/demo.json +0 -0
- /package/{recipes → dist/recipes}/repeated-attempt/demo.json +0 -0
- /package/{recipes → dist/recipes}/reply-template-match/demo.json +0 -0
- /package/{recipes → dist/recipes}/rerank/demo.json +0 -0
- /package/{recipes → dist/recipes}/resolution-check/demo.json +0 -0
- /package/{recipes → dist/recipes}/response-needed/demo.json +0 -0
- /package/{recipes → dist/recipes}/result-outcome/demo.json +0 -0
- /package/{recipes → dist/recipes}/result-usefulness/demo.json +0 -0
- /package/{recipes → dist/recipes}/retrieval-needed/demo.json +0 -0
- /package/{recipes → dist/recipes}/route/demo.json +0 -0
- /package/{recipes → dist/recipes}/source-applicability/demo.json +0 -0
- /package/{recipes → dist/recipes}/step-complete/demo.json +0 -0
- /package/{recipes → dist/recipes}/step-progress/demo.json +0 -0
- /package/{recipes → dist/recipes}/summary-coverage/demo.json +0 -0
- /package/{recipes → dist/recipes}/ticket-match/demo.json +0 -0
- /package/{recipes → dist/recipes}/tone-check/demo.json +0 -0
- /package/{recipes → dist/recipes}/tool-fit/demo.json +0 -0
- /package/{recipes → dist/recipes}/topic-shift/demo.json +0 -0
- /package/{recipes → dist/recipes}/troubleshooting-fit/demo.json +0 -0
- /package/{recipes → dist/recipes}/turn-intent/demo.json +0 -0
- /package/{recipes → dist/recipes}/urgency-signal/demo.json +0 -0
- /package/{recipes → dist/recipes}/verify/demo.json +0 -0
- /package/{recipes → dist/recipes}/workaround-fit/demo.json +0 -0
package/dist/catalog/index.js
CHANGED
|
@@ -1,31 +1,15 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
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
|
-
|
|
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
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
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>;
|
package/dist/catalog/schema.d.ts
CHANGED
|
@@ -1,71 +1,71 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
export declare const recipeNameSchema: z.ZodEnum<{
|
|
3
|
-
|
|
4
|
-
|
|
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
|
-
|
|
11
|
-
"
|
|
12
|
-
"
|
|
13
|
-
"
|
|
14
|
-
"
|
|
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
|
-
"
|
|
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
|
-
"
|
|
32
|
-
"
|
|
33
|
-
|
|
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
|
-
|
|
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
|
-
"
|
|
44
|
-
"
|
|
45
|
-
|
|
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
|
-
"
|
|
48
|
-
"
|
|
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
|
-
"
|
|
61
|
+
"tone-check": "tone-check";
|
|
62
|
+
"tool-fit": "tool-fit";
|
|
63
|
+
"topic-shift": "topic-shift";
|
|
54
64
|
"troubleshooting-fit": "troubleshooting-fit";
|
|
55
|
-
"
|
|
65
|
+
"turn-intent": "turn-intent";
|
|
56
66
|
"urgency-signal": "urgency-signal";
|
|
57
|
-
|
|
58
|
-
"
|
|
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>;
|
package/dist/catalog/schema.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { nonEmptyText, recipeCategorySchema } from '../src/schema.js';
|
|
3
|
-
import {
|
|
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,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 {
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
|
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(
|
|
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
|
}
|