jev-recipes 0.6.1 → 0.8.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 (136) hide show
  1. package/README.md +61 -11
  2. package/dist/catalog/generated/details/callback-responsibility.json +45 -0
  3. package/dist/catalog/generated/details/completion-gate.json +110 -0
  4. package/dist/catalog/generated/details/contact-opt-out.json +45 -0
  5. package/dist/catalog/generated/details/context-prune.json +59 -0
  6. package/dist/catalog/generated/details/diff-hazards.json +112 -0
  7. package/dist/catalog/generated/details/followup-timing.json +45 -0
  8. package/dist/catalog/generated/details/game-action.json +8 -109
  9. package/dist/catalog/generated/details/model-route.json +82 -0
  10. package/dist/catalog/generated/details/route-many.json +68 -0
  11. package/dist/catalog/generated/details/tool-call-gate.json +123 -0
  12. package/dist/catalog/generated/details/wake-gate.json +40 -0
  13. package/dist/catalog/generated/loaders.js +10 -0
  14. package/dist/catalog/generated/metadata.js +295 -14
  15. package/dist/catalog/generated/names.d.ts +1 -1
  16. package/dist/catalog/generated/names.js +10 -0
  17. package/dist/catalog/schema.d.ts +10 -0
  18. package/dist/cli/evaluation.d.ts +1 -0
  19. package/dist/cli/evaluation.js +82 -0
  20. package/dist/cli/index.js +13 -0
  21. package/dist/cli/schema.d.ts +30 -0
  22. package/dist/evaluation/archive.d.ts +501 -0
  23. package/dist/evaluation/archive.js +276 -0
  24. package/dist/evaluation/dataset.d.ts +12 -0
  25. package/dist/evaluation/dataset.js +162 -0
  26. package/dist/evaluation/decisions.d.ts +10 -0
  27. package/dist/evaluation/decisions.js +87 -0
  28. package/dist/evaluation/engine.d.ts +50 -0
  29. package/dist/evaluation/engine.js +130 -0
  30. package/dist/evaluation/index.d.ts +5 -0
  31. package/dist/evaluation/index.js +3 -0
  32. package/dist/evaluation/report.d.ts +186 -0
  33. package/dist/evaluation/report.js +177 -0
  34. package/dist/evaluation/schema.d.ts +82 -0
  35. package/dist/evaluation/schema.js +50 -0
  36. package/dist/recipes/callback-responsibility/demo.json +25 -0
  37. package/dist/recipes/callback-responsibility/index.d.ts +5 -0
  38. package/dist/recipes/callback-responsibility/index.js +17 -0
  39. package/dist/recipes/callback-responsibility/schema.d.ts +42 -0
  40. package/dist/recipes/callback-responsibility/schema.js +20 -0
  41. package/dist/recipes/cancellation-check/schema.d.ts +6 -6
  42. package/dist/recipes/checkers-move/schema.d.ts +1 -1
  43. package/dist/recipes/choose-action/schema.d.ts +1 -1
  44. package/dist/recipes/clarify/index.js +2 -2
  45. package/dist/recipes/completion-gate/demo.json +29 -0
  46. package/dist/recipes/completion-gate/index.d.ts +5 -0
  47. package/dist/recipes/completion-gate/index.js +53 -0
  48. package/dist/recipes/completion-gate/schema.d.ts +103 -0
  49. package/dist/recipes/completion-gate/schema.js +33 -0
  50. package/dist/recipes/contact-opt-out/demo.json +24 -0
  51. package/dist/recipes/contact-opt-out/index.d.ts +5 -0
  52. package/dist/recipes/contact-opt-out/index.js +17 -0
  53. package/dist/recipes/contact-opt-out/schema.d.ts +42 -0
  54. package/dist/recipes/contact-opt-out/schema.js +20 -0
  55. package/dist/recipes/context-prune/demo.json +40 -0
  56. package/dist/recipes/context-prune/index.d.ts +5 -0
  57. package/dist/recipes/context-prune/index.js +42 -0
  58. package/dist/recipes/context-prune/schema.d.ts +58 -0
  59. package/dist/recipes/context-prune/schema.js +23 -0
  60. package/dist/recipes/correction-target/schema.d.ts +1 -1
  61. package/dist/recipes/diff-hazards/demo.json +18 -0
  62. package/dist/recipes/diff-hazards/index.d.ts +5 -0
  63. package/dist/recipes/diff-hazards/index.js +48 -0
  64. package/dist/recipes/diff-hazards/schema.d.ts +96 -0
  65. package/dist/recipes/diff-hazards/schema.js +24 -0
  66. package/dist/recipes/exercise-select/schema.d.ts +1 -1
  67. package/dist/recipes/extraction-fidelity/schema.d.ts +2 -2
  68. package/dist/recipes/failure-kind/schema.d.ts +1 -1
  69. package/dist/recipes/field-select/schema.d.ts +1 -1
  70. package/dist/recipes/finger-actions/schema.d.ts +1 -1
  71. package/dist/recipes/followup-link/schema.d.ts +1 -1
  72. package/dist/recipes/followup-timing/demo.json +25 -0
  73. package/dist/recipes/followup-timing/index.d.ts +5 -0
  74. package/dist/recipes/followup-timing/index.js +18 -0
  75. package/dist/recipes/followup-timing/schema.d.ts +45 -0
  76. package/dist/recipes/followup-timing/schema.js +21 -0
  77. package/dist/recipes/game-action/schema.d.ts +6 -6
  78. package/dist/recipes/game-action/schema.js +11 -6
  79. package/dist/recipes/handoff/schema.d.ts +4 -4
  80. package/dist/recipes/incident-match/schema.d.ts +1 -1
  81. package/dist/recipes/model-route/demo.json +45 -0
  82. package/dist/recipes/model-route/index.d.ts +5 -0
  83. package/dist/recipes/model-route/index.js +35 -0
  84. package/dist/recipes/model-route/schema.d.ts +51 -0
  85. package/dist/recipes/model-route/schema.js +16 -0
  86. package/dist/recipes/mood-match/schema.d.ts +2 -2
  87. package/dist/recipes/next-chord/schema.d.ts +1 -1
  88. package/dist/recipes/next-duration/schema.d.ts +1 -1
  89. package/dist/recipes/next-note/schema.d.ts +1 -1
  90. package/dist/recipes/objection-kind/schema.d.ts +3 -3
  91. package/dist/recipes/performance-feedback-facets/demo.json +1 -1
  92. package/dist/recipes/performance-feedback-facets/index.js +2 -2
  93. package/dist/recipes/product-match/schema.d.ts +2 -2
  94. package/dist/recipes/reference-resolve/schema.d.ts +1 -1
  95. package/dist/recipes/reply-template-match/schema.d.ts +1 -1
  96. package/dist/recipes/route/schema.d.ts +2 -2
  97. package/dist/recipes/route/schema.js +3 -3
  98. package/dist/recipes/route-many/demo.json +53 -0
  99. package/dist/recipes/route-many/index.d.ts +5 -0
  100. package/dist/recipes/route-many/index.js +48 -0
  101. package/dist/recipes/route-many/schema.d.ts +49 -0
  102. package/dist/recipes/route-many/schema.js +30 -0
  103. package/dist/recipes/sound-match/schema.d.ts +2 -2
  104. package/dist/recipes/step-complete/demo.json +1 -1
  105. package/dist/recipes/step-complete/index.js +2 -2
  106. package/dist/recipes/style-kind/schema.d.ts +3 -3
  107. package/dist/recipes/symptom-facets/demo.json +1 -1
  108. package/dist/recipes/symptom-facets/index.js +3 -3
  109. package/dist/recipes/tool-call-gate/demo.json +26 -0
  110. package/dist/recipes/tool-call-gate/index.d.ts +5 -0
  111. package/dist/recipes/tool-call-gate/index.js +67 -0
  112. package/dist/recipes/tool-call-gate/schema.d.ts +134 -0
  113. package/dist/recipes/tool-call-gate/schema.js +34 -0
  114. package/dist/recipes/trip-purpose-kind/schema.d.ts +3 -3
  115. package/dist/recipes/verify/index.js +4 -3
  116. package/dist/recipes/wake-gate/demo.json +20 -0
  117. package/dist/recipes/wake-gate/index.d.ts +5 -0
  118. package/dist/recipes/wake-gate/index.js +16 -0
  119. package/dist/recipes/wake-gate/schema.d.ts +40 -0
  120. package/dist/recipes/wake-gate/schema.js +15 -0
  121. package/dist/src/answers.d.ts +1 -1
  122. package/dist/src/answers.js +15 -5
  123. package/dist/src/batch.d.ts +12 -0
  124. package/dist/src/batch.js +23 -0
  125. package/dist/src/data.d.ts +6 -0
  126. package/dist/src/data.js +41 -0
  127. package/dist/src/decisions.d.ts +1 -1
  128. package/dist/src/fanout.d.ts +20 -0
  129. package/dist/src/fanout.js +39 -0
  130. package/dist/src/index.d.ts +20 -0
  131. package/dist/src/index.js +10 -0
  132. package/dist/src/schema.d.ts +4 -4
  133. package/dist/src/schema.js +4 -3
  134. package/dist/src/selection.d.ts +18 -0
  135. package/dist/src/selection.js +41 -11
  136. package/package.json +56 -4
package/README.md CHANGED
@@ -11,7 +11,7 @@
11
11
 
12
12
  <!-- BEGIN GENERATED: summary -->
13
13
 
14
- 236 focused recipes for JavaScript and TypeScript. Route messages, check evidence, and label model responses with a function call.
14
+ 246 focused recipes for JavaScript and TypeScript. Route messages, check evidence, and label model responses with a function call.
15
15
 
16
16
  <!-- END GENERATED: summary -->
17
17
 
@@ -19,6 +19,10 @@ Each recipe accepts your data, calls [Jev through TypeSafe's API](https://docs.t
19
19
 
20
20
  For example, give `route` a support message and descriptions of your teams. It returns a team such as `billing`, or a review outcome when the choice is uncertain.
21
21
 
22
+ Evaluate your own cases with the [installed evaluator](https://github.com/agencyenterprise/jev-recipes/blob/main/docs/evaluation.md), retain model responses, and replay confidence policies offline. The [agent workflow](https://github.com/agencyenterprise/jev-recipes/blob/main/examples/agent-loop/README.md) and [customer queue](https://github.com/agencyenterprise/jev-recipes/blob/main/examples/customer-queue/README.md) show how decisions fit into application code. [Direct and Gateway integrations](https://github.com/agencyenterprise/jev-recipes/blob/main/docs/integrations.md) use the same recipe interface.
23
+
24
+ Build the searchable static catalog with `npm run site:build`, then preview it with `npm run site:preview`. It includes fixture exploration, related-recipe comparisons, and saved evaluation evidence. Current measurements and missing or older evidence are labeled explicitly.
25
+
22
26
  ## Watch Jev play checkers against Jev using the checkers-move recipe
23
27
 
24
28
  [![Jev plays checkers against Jev using the checkers-move recipe](https://raw.githubusercontent.com/agencyenterprise/jev-recipes/main/examples/checkers/jev-vs-jev.gif)](https://www.youtube.com/shorts/Z282rGKysTg)
@@ -117,16 +121,20 @@ The TypeSafe SDK handles API calls and typed answers. Recipes add the instructio
117
121
 
118
122
  ## Find your recipe
119
123
 
120
- | Your task | Start with |
121
- | ------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ |
122
- | Send a request to the right team | [`route`](https://github.com/agencyenterprise/jev-recipes/blob/main/recipes/route/README.md) |
123
- | Find useful passages | [`rerank`](https://github.com/agencyenterprise/jev-recipes/blob/main/recipes/rerank/README.md) |
124
- | Check whether the evidence is enough to answer | [`answerability`](https://github.com/agencyenterprise/jev-recipes/blob/main/recipes/answerability/README.md) |
125
- | Check claims against supplied evidence | [`verify`](https://github.com/agencyenterprise/jev-recipes/blob/main/recipes/verify/README.md) |
126
- | Find missing or ambiguous requirements | [`clarify`](https://github.com/agencyenterprise/jev-recipes/blob/main/recipes/clarify/README.md) |
127
- | Label a response's stance toward a claim | [`claim-stance`](https://github.com/agencyenterprise/jev-recipes/blob/main/recipes/claim-stance/README.md) |
128
- | Choose a move from available game actions | [`choose-action`](https://github.com/agencyenterprise/jev-recipes/blob/main/recipes/choose-action/README.md) |
129
- | Choose a checkers move from your board and legal moves | [`checkers-move`](https://github.com/agencyenterprise/jev-recipes/blob/main/recipes/checkers-move/README.md) |
124
+ | Your task | Start with |
125
+ | ------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------- |
126
+ | Send a request to the right team | [`route`](https://github.com/agencyenterprise/jev-recipes/blob/main/recipes/route/README.md) |
127
+ | Find useful passages | [`rerank`](https://github.com/agencyenterprise/jev-recipes/blob/main/recipes/rerank/README.md) |
128
+ | Check whether the evidence is enough to answer | [`answerability`](https://github.com/agencyenterprise/jev-recipes/blob/main/recipes/answerability/README.md) |
129
+ | Check claims against supplied evidence | [`verify`](https://github.com/agencyenterprise/jev-recipes/blob/main/recipes/verify/README.md) |
130
+ | Find missing or ambiguous requirements | [`clarify`](https://github.com/agencyenterprise/jev-recipes/blob/main/recipes/clarify/README.md) |
131
+ | Label a response's stance toward a claim | [`claim-stance`](https://github.com/agencyenterprise/jev-recipes/blob/main/recipes/claim-stance/README.md) |
132
+ | Choose a move from available game actions | [`choose-action`](https://github.com/agencyenterprise/jev-recipes/blob/main/recipes/choose-action/README.md) |
133
+ | Choose a checkers move from your board and legal moves | [`checkers-move`](https://github.com/agencyenterprise/jev-recipes/blob/main/recipes/checkers-move/README.md) |
134
+ | Allow, ask, or deny an agent's tool call | [`tool-call-gate`](https://github.com/agencyenterprise/jev-recipes/blob/main/recipes/tool-call-gate/README.md) |
135
+ | Check an agent's "done" against evidence | [`completion-gate`](https://github.com/agencyenterprise/jev-recipes/blob/main/recipes/completion-gate/README.md) |
136
+ | Pick a model tier and effort per request | [`model-route`](https://github.com/agencyenterprise/jev-recipes/blob/main/recipes/model-route/README.md) |
137
+ | Route a backlog of messages in a few calls | [`route-many`](https://github.com/agencyenterprise/jev-recipes/blob/main/recipes/route-many/README.md) |
130
138
 
131
139
  Search, inspect inputs, and try saved results without a key:
132
140
 
@@ -140,6 +148,8 @@ npx jev-recipes demo answerability
140
148
 
141
149
  For games, use [game-action](https://github.com/agencyenterprise/jev-recipes/blob/main/recipes/game-action/README.md) with your existing JSON state and actions. It returns the original selected action, preserving your game IDs. [checkers-move](https://github.com/agencyenterprise/jev-recipes/blob/main/recipes/checkers-move/README.md) accepts a structured checkers board and legal moves; the [checkers example](https://github.com/agencyenterprise/jev-recipes/blob/main/examples/checkers/README.md) shows how to run its visual demo locally.
142
150
 
151
+ For agent harnesses, browse [Agent harness](https://github.com/agencyenterprise/jev-recipes/blob/main/recipes/README.md#agent-harness) for the decisions inside an agent loop: `tool-call-gate` before a tool runs, `model-route` per turn, `context-prune` before compaction, `wake-gate` for paused agents, `diff-hazards` before a commit, and `completion-gate` before accepting a result. Search with `npx jev-recipes list harness`.
152
+
143
153
  For psychology, browse [Psychology & behavior](https://github.com/agencyenterprise/jev-recipes/blob/main/recipes/README.md#psychology--behavior) for gain/loss framing, causal explanations, stated motivation, and related wording annotations. Search with `npx jev-recipes list psychology`.
144
154
 
145
155
  For music, browse [Music & sound](https://github.com/agencyenterprise/jev-recipes/blob/main/recipes/README.md#music--sound) for generation-loop decisions such as `next-note` and `phrase-complete`, listener steering such as `listener-request-kind`, and instrument or music-software tooling. Pass musical state as text or JSON. Search with `npx jev-recipes list music`.
@@ -179,6 +189,46 @@ Batch recipes expose their own summaries, such as `verify.allSupported` and its
179
189
 
180
190
  Pass `{ client, model, signal }` as the optional second argument to configure a call. [Shared behavior and limits](https://github.com/agencyenterprise/jev-recipes/blob/main/recipes/README.md#shared-options-and-behavior) covers configuration, input limits, and uncertainty.
181
191
 
192
+ ## Batch many inputs
193
+
194
+ A Jev request evaluates every question in parallel, so several inputs that share the same decision can travel together. `route-many` routes up to 500 requests in batches of 20 by default, making one call per batch instead of one per request:
195
+
196
+ ```js
197
+ import { routeMany } from 'jev-recipes/route-many';
198
+
199
+ const result = await routeMany({
200
+ requests: tickets.map((ticket) => ({ id: ticket.id, text: ticket.body })),
201
+ routes: { billing: 'Payments and refunds', technical: 'Errors and outages' },
202
+ batchSize: 20,
203
+ });
204
+
205
+ for (const item of result.items) {
206
+ if (item.status === 'ready') assign(item.id, item.route);
207
+ else queueForReview(item.id, item.suggestedRoute);
208
+ }
209
+ console.log(`${result.requestsMade} calls for ${result.requestCount} tickets`);
210
+ ```
211
+
212
+ Accuracy can drop as batches grow. Measure on your own labeled data and tune `batchSize`; the [eval harness](https://github.com/agencyenterprise/jev-recipes/blob/main/CONTRIBUTING.md#model-evaluation) reports calibration per threshold.
213
+
214
+ ## Use a local or alternative decision model
215
+
216
+ Recipes talk to any server that implements the TypeSafe `systemOne` wire format. Point the SDK client at it with `baseURL`, or set `TYPESAFE_BASE_URL` in the environment, and pass the client to any recipe:
217
+
218
+ ```js
219
+ import { createClient } from 'jev-recipes';
220
+ import { route } from 'jev-recipes/route';
221
+
222
+ const client = createClient({
223
+ baseURL: 'http://localhost:11434', // a self-hosted, TypeSafe-compatible server
224
+ apiKey: 'local',
225
+ });
226
+
227
+ const result = await route({ request, routes }, { client, model: 'my-local-model' });
228
+ ```
229
+
230
+ The `model` option selects a model name on that server. Recipes validate every response against the same schemas, so a server that returns malformed probabilities fails loudly rather than silently. The tooling tests exercise this path against a local HTTP server.
231
+
182
232
  ## Verification and scope
183
233
 
184
234
  The [CI workflow](https://github.com/agencyenterprise/jev-recipes/actions/workflows/ci.yml) runs on Node.js 22 and 24. `make ci` checks types, formatting, generated-file consistency, recipe test coverage, tooling, and the installable package.
@@ -0,0 +1,45 @@
1
+ {
2
+ "inputSchema": {
3
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4
+ "type": "object",
5
+ "properties": {
6
+ "conversation": { "type": "string" },
7
+ "roles": { "type": "string" },
8
+ "minConfidence": { "type": "number", "minimum": 0, "maximum": 1 }
9
+ },
10
+ "required": ["conversation", "roles"]
11
+ },
12
+ "resultSchema": {
13
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
14
+ "type": "object",
15
+ "properties": {
16
+ "model": { "type": "string" },
17
+ "usage": {
18
+ "type": "object",
19
+ "properties": {
20
+ "input_tokens": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 },
21
+ "output_tokens": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }
22
+ },
23
+ "required": ["input_tokens", "output_tokens"],
24
+ "additionalProperties": false
25
+ },
26
+ "status": { "type": "string", "enum": ["ready", "review"] },
27
+ "verdict": {
28
+ "type": "string",
29
+ "enum": ["business", "customer", "either", "none", "unclear"]
30
+ },
31
+ "confidence": { "type": "number", "minimum": 0, "maximum": 1 },
32
+ "probabilities": {
33
+ "type": "object",
34
+ "propertyNames": {
35
+ "type": "string",
36
+ "enum": ["business", "customer", "either", "none", "unclear"]
37
+ },
38
+ "additionalProperties": { "type": "number", "minimum": 0, "maximum": 1 },
39
+ "required": ["business", "customer", "either", "none", "unclear"]
40
+ }
41
+ },
42
+ "required": ["model", "usage", "status", "verdict", "confidence", "probabilities"],
43
+ "additionalProperties": false
44
+ }
45
+ }
@@ -0,0 +1,110 @@
1
+ {
2
+ "inputSchema": {
3
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4
+ "type": "object",
5
+ "properties": {
6
+ "task": { "type": "string" },
7
+ "report": { "type": "string" },
8
+ "evidence": { "type": "string" },
9
+ "minConfidence": { "type": "number", "minimum": 0, "maximum": 1 }
10
+ },
11
+ "required": ["task", "report"]
12
+ },
13
+ "resultSchema": {
14
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
15
+ "type": "object",
16
+ "properties": {
17
+ "model": { "type": "string" },
18
+ "usage": {
19
+ "type": "object",
20
+ "properties": {
21
+ "input_tokens": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 },
22
+ "output_tokens": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }
23
+ },
24
+ "required": ["input_tokens", "output_tokens"],
25
+ "additionalProperties": false
26
+ },
27
+ "status": { "type": "string", "enum": ["ready", "review"] },
28
+ "verdict": { "type": "string", "enum": ["complete", "incomplete", "unverified", "unclear"] },
29
+ "confidence": { "type": "number", "minimum": 0, "maximum": 1 },
30
+ "probabilities": {
31
+ "type": "object",
32
+ "propertyNames": {
33
+ "type": "string",
34
+ "enum": ["complete", "incomplete", "unverified", "unclear"]
35
+ },
36
+ "additionalProperties": { "type": "number", "minimum": 0, "maximum": 1 },
37
+ "required": ["complete", "incomplete", "unverified", "unclear"]
38
+ },
39
+ "signals": {
40
+ "type": "object",
41
+ "properties": {
42
+ "claimsWithoutEvidence": {
43
+ "type": "object",
44
+ "properties": {
45
+ "status": { "type": "string", "enum": ["ready", "review"] },
46
+ "verdict": { "type": "string", "enum": ["present", "absent"] },
47
+ "probability": { "type": "number", "minimum": 0, "maximum": 1 },
48
+ "confidence": { "type": "number", "minimum": 0, "maximum": 1 }
49
+ },
50
+ "required": ["status", "verdict", "probability", "confidence"],
51
+ "additionalProperties": false
52
+ },
53
+ "scopeNarrowed": {
54
+ "type": "object",
55
+ "properties": {
56
+ "status": { "type": "string", "enum": ["ready", "review"] },
57
+ "verdict": { "type": "string", "enum": ["present", "absent"] },
58
+ "probability": { "type": "number", "minimum": 0, "maximum": 1 },
59
+ "confidence": { "type": "number", "minimum": 0, "maximum": 1 }
60
+ },
61
+ "required": ["status", "verdict", "probability", "confidence"],
62
+ "additionalProperties": false
63
+ },
64
+ "openQuestions": {
65
+ "type": "object",
66
+ "properties": {
67
+ "status": { "type": "string", "enum": ["ready", "review"] },
68
+ "verdict": { "type": "string", "enum": ["present", "absent"] },
69
+ "probability": { "type": "number", "minimum": 0, "maximum": 1 },
70
+ "confidence": { "type": "number", "minimum": 0, "maximum": 1 }
71
+ },
72
+ "required": ["status", "verdict", "probability", "confidence"],
73
+ "additionalProperties": false
74
+ },
75
+ "unresolvedErrors": {
76
+ "type": "object",
77
+ "properties": {
78
+ "status": { "type": "string", "enum": ["ready", "review"] },
79
+ "verdict": { "type": "string", "enum": ["present", "absent"] },
80
+ "probability": { "type": "number", "minimum": 0, "maximum": 1 },
81
+ "confidence": { "type": "number", "minimum": 0, "maximum": 1 }
82
+ },
83
+ "required": ["status", "verdict", "probability", "confidence"],
84
+ "additionalProperties": false
85
+ }
86
+ },
87
+ "required": ["claimsWithoutEvidence", "scopeNarrowed", "openQuestions", "unresolvedErrors"],
88
+ "additionalProperties": false
89
+ },
90
+ "detected": {
91
+ "type": "array",
92
+ "items": {
93
+ "type": "string",
94
+ "enum": ["claimsWithoutEvidence", "scopeNarrowed", "openQuestions", "unresolvedErrors"]
95
+ }
96
+ }
97
+ },
98
+ "required": [
99
+ "model",
100
+ "usage",
101
+ "status",
102
+ "verdict",
103
+ "confidence",
104
+ "probabilities",
105
+ "signals",
106
+ "detected"
107
+ ],
108
+ "additionalProperties": false
109
+ }
110
+ }
@@ -0,0 +1,45 @@
1
+ {
2
+ "inputSchema": {
3
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4
+ "type": "object",
5
+ "properties": {
6
+ "message": { "type": "string" },
7
+ "context": { "type": "string" },
8
+ "minConfidence": { "type": "number", "minimum": 0, "maximum": 1 }
9
+ },
10
+ "required": ["message"]
11
+ },
12
+ "resultSchema": {
13
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
14
+ "type": "object",
15
+ "properties": {
16
+ "model": { "type": "string" },
17
+ "usage": {
18
+ "type": "object",
19
+ "properties": {
20
+ "input_tokens": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 },
21
+ "output_tokens": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }
22
+ },
23
+ "required": ["input_tokens", "output_tokens"],
24
+ "additionalProperties": false
25
+ },
26
+ "status": { "type": "string", "enum": ["ready", "review"] },
27
+ "verdict": {
28
+ "type": "string",
29
+ "enum": ["all_contact", "channel", "campaign", "none", "unclear"]
30
+ },
31
+ "confidence": { "type": "number", "minimum": 0, "maximum": 1 },
32
+ "probabilities": {
33
+ "type": "object",
34
+ "propertyNames": {
35
+ "type": "string",
36
+ "enum": ["all_contact", "channel", "campaign", "none", "unclear"]
37
+ },
38
+ "additionalProperties": { "type": "number", "minimum": 0, "maximum": 1 },
39
+ "required": ["all_contact", "channel", "campaign", "none", "unclear"]
40
+ }
41
+ },
42
+ "required": ["model", "usage", "status", "verdict", "confidence", "probabilities"],
43
+ "additionalProperties": false
44
+ }
45
+ }
@@ -0,0 +1,59 @@
1
+ {
2
+ "inputSchema": {
3
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4
+ "type": "object",
5
+ "properties": {
6
+ "objective": { "type": "string" },
7
+ "items": {
8
+ "minItems": 1,
9
+ "maxItems": 50,
10
+ "type": "array",
11
+ "items": {
12
+ "type": "object",
13
+ "properties": { "id": { "type": "string" }, "text": { "type": "string" } },
14
+ "required": ["id", "text"]
15
+ }
16
+ },
17
+ "recent": { "type": "string" },
18
+ "minConfidence": { "type": "number", "minimum": 0, "maximum": 1 }
19
+ },
20
+ "required": ["objective", "items"]
21
+ },
22
+ "resultSchema": {
23
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
24
+ "type": "object",
25
+ "properties": {
26
+ "model": { "type": "string" },
27
+ "usage": {
28
+ "type": "object",
29
+ "properties": {
30
+ "input_tokens": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 },
31
+ "output_tokens": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }
32
+ },
33
+ "required": ["input_tokens", "output_tokens"],
34
+ "additionalProperties": false
35
+ },
36
+ "status": { "type": "string", "enum": ["ready", "review"] },
37
+ "items": {
38
+ "type": "array",
39
+ "items": {
40
+ "type": "object",
41
+ "properties": {
42
+ "id": { "type": "string" },
43
+ "status": { "type": "string", "enum": ["ready", "review"] },
44
+ "verdict": { "type": "string", "enum": ["keep", "drop"] },
45
+ "probability": { "type": "number", "minimum": 0, "maximum": 1 },
46
+ "confidence": { "type": "number", "minimum": 0, "maximum": 1 }
47
+ },
48
+ "required": ["id", "status", "verdict", "probability", "confidence"],
49
+ "additionalProperties": false
50
+ }
51
+ },
52
+ "keep": { "type": "array", "items": { "type": "string" } },
53
+ "drop": { "type": "array", "items": { "type": "string" } },
54
+ "evaluated": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }
55
+ },
56
+ "required": ["model", "usage", "status", "items", "keep", "drop", "evaluated"],
57
+ "additionalProperties": false
58
+ }
59
+ }
@@ -0,0 +1,112 @@
1
+ {
2
+ "inputSchema": {
3
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4
+ "type": "object",
5
+ "properties": {
6
+ "diff": { "type": "string" },
7
+ "context": { "type": "string" },
8
+ "minConfidence": { "type": "number", "minimum": 0, "maximum": 1 }
9
+ },
10
+ "required": ["diff"]
11
+ },
12
+ "resultSchema": {
13
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
14
+ "type": "object",
15
+ "properties": {
16
+ "model": { "type": "string" },
17
+ "usage": {
18
+ "type": "object",
19
+ "properties": {
20
+ "input_tokens": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 },
21
+ "output_tokens": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }
22
+ },
23
+ "required": ["input_tokens", "output_tokens"],
24
+ "additionalProperties": false
25
+ },
26
+ "status": { "type": "string", "enum": ["ready", "review"] },
27
+ "detected": {
28
+ "type": "array",
29
+ "items": {
30
+ "type": "string",
31
+ "enum": [
32
+ "secretLeak",
33
+ "destructiveCommand",
34
+ "debugLeftover",
35
+ "testsWeakened",
36
+ "dependencyChange"
37
+ ]
38
+ }
39
+ },
40
+ "labels": {
41
+ "type": "object",
42
+ "properties": {
43
+ "secretLeak": {
44
+ "type": "object",
45
+ "properties": {
46
+ "status": { "type": "string", "enum": ["ready", "review"] },
47
+ "verdict": { "type": "string", "enum": ["present", "absent"] },
48
+ "probability": { "type": "number", "minimum": 0, "maximum": 1 },
49
+ "confidence": { "type": "number", "minimum": 0, "maximum": 1 }
50
+ },
51
+ "required": ["status", "verdict", "probability", "confidence"],
52
+ "additionalProperties": false
53
+ },
54
+ "destructiveCommand": {
55
+ "type": "object",
56
+ "properties": {
57
+ "status": { "type": "string", "enum": ["ready", "review"] },
58
+ "verdict": { "type": "string", "enum": ["present", "absent"] },
59
+ "probability": { "type": "number", "minimum": 0, "maximum": 1 },
60
+ "confidence": { "type": "number", "minimum": 0, "maximum": 1 }
61
+ },
62
+ "required": ["status", "verdict", "probability", "confidence"],
63
+ "additionalProperties": false
64
+ },
65
+ "debugLeftover": {
66
+ "type": "object",
67
+ "properties": {
68
+ "status": { "type": "string", "enum": ["ready", "review"] },
69
+ "verdict": { "type": "string", "enum": ["present", "absent"] },
70
+ "probability": { "type": "number", "minimum": 0, "maximum": 1 },
71
+ "confidence": { "type": "number", "minimum": 0, "maximum": 1 }
72
+ },
73
+ "required": ["status", "verdict", "probability", "confidence"],
74
+ "additionalProperties": false
75
+ },
76
+ "testsWeakened": {
77
+ "type": "object",
78
+ "properties": {
79
+ "status": { "type": "string", "enum": ["ready", "review"] },
80
+ "verdict": { "type": "string", "enum": ["present", "absent"] },
81
+ "probability": { "type": "number", "minimum": 0, "maximum": 1 },
82
+ "confidence": { "type": "number", "minimum": 0, "maximum": 1 }
83
+ },
84
+ "required": ["status", "verdict", "probability", "confidence"],
85
+ "additionalProperties": false
86
+ },
87
+ "dependencyChange": {
88
+ "type": "object",
89
+ "properties": {
90
+ "status": { "type": "string", "enum": ["ready", "review"] },
91
+ "verdict": { "type": "string", "enum": ["present", "absent"] },
92
+ "probability": { "type": "number", "minimum": 0, "maximum": 1 },
93
+ "confidence": { "type": "number", "minimum": 0, "maximum": 1 }
94
+ },
95
+ "required": ["status", "verdict", "probability", "confidence"],
96
+ "additionalProperties": false
97
+ }
98
+ },
99
+ "required": [
100
+ "secretLeak",
101
+ "destructiveCommand",
102
+ "debugLeftover",
103
+ "testsWeakened",
104
+ "dependencyChange"
105
+ ],
106
+ "additionalProperties": false
107
+ }
108
+ },
109
+ "required": ["model", "usage", "status", "detected", "labels"],
110
+ "additionalProperties": false
111
+ }
112
+ }
@@ -0,0 +1,45 @@
1
+ {
2
+ "inputSchema": {
3
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4
+ "type": "object",
5
+ "properties": {
6
+ "message": { "type": "string" },
7
+ "context": { "type": "string" },
8
+ "minConfidence": { "type": "number", "minimum": 0, "maximum": 1 }
9
+ },
10
+ "required": ["message"]
11
+ },
12
+ "resultSchema": {
13
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
14
+ "type": "object",
15
+ "properties": {
16
+ "model": { "type": "string" },
17
+ "usage": {
18
+ "type": "object",
19
+ "properties": {
20
+ "input_tokens": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 },
21
+ "output_tokens": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }
22
+ },
23
+ "required": ["input_tokens", "output_tokens"],
24
+ "additionalProperties": false
25
+ },
26
+ "status": { "type": "string", "enum": ["ready", "review"] },
27
+ "verdict": {
28
+ "type": "string",
29
+ "enum": ["now", "later", "after_event", "not_requested", "declined", "unclear"]
30
+ },
31
+ "confidence": { "type": "number", "minimum": 0, "maximum": 1 },
32
+ "probabilities": {
33
+ "type": "object",
34
+ "propertyNames": {
35
+ "type": "string",
36
+ "enum": ["now", "later", "after_event", "not_requested", "declined", "unclear"]
37
+ },
38
+ "additionalProperties": { "type": "number", "minimum": 0, "maximum": 1 },
39
+ "required": ["now", "later", "after_event", "not_requested", "declined", "unclear"]
40
+ }
41
+ },
42
+ "required": ["model", "usage", "status", "verdict", "confidence", "probabilities"],
43
+ "additionalProperties": false
44
+ }
45
+ }