jevascript 0.1.0 → 0.1.1

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 (56) hide show
  1. package/README.md +51 -11
  2. package/dist/cache.d.ts +5 -2
  3. package/dist/cache.d.ts.map +1 -1
  4. package/dist/cache.js +10 -12
  5. package/dist/cache.js.map +1 -1
  6. package/dist/collections.d.ts.map +1 -1
  7. package/dist/collections.js +68 -27
  8. package/dist/collections.js.map +1 -1
  9. package/dist/config.d.ts +6 -0
  10. package/dist/config.d.ts.map +1 -1
  11. package/dist/config.js +8 -2
  12. package/dist/config.js.map +1 -1
  13. package/dist/context.d.ts +17 -50
  14. package/dist/context.d.ts.map +1 -1
  15. package/dist/context.js +33 -108
  16. package/dist/context.js.map +1 -1
  17. package/dist/define.d.ts +26 -13
  18. package/dist/define.d.ts.map +1 -1
  19. package/dist/define.js +4 -0
  20. package/dist/define.js.map +1 -1
  21. package/dist/env.d.ts +6 -0
  22. package/dist/env.d.ts.map +1 -0
  23. package/dist/env.js +8 -0
  24. package/dist/env.js.map +1 -0
  25. package/dist/errors.d.ts +7 -2
  26. package/dist/errors.d.ts.map +1 -1
  27. package/dist/errors.js +13 -4
  28. package/dist/errors.js.map +1 -1
  29. package/dist/evaluate.d.ts.map +1 -1
  30. package/dist/evaluate.js +11 -12
  31. package/dist/evaluate.js.map +1 -1
  32. package/dist/index.d.ts +7 -8
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +2 -2
  35. package/dist/index.js.map +1 -1
  36. package/dist/interpret.d.ts +25 -0
  37. package/dist/interpret.d.ts.map +1 -0
  38. package/dist/interpret.js +77 -0
  39. package/dist/interpret.js.map +1 -0
  40. package/dist/outputs.d.ts.map +1 -1
  41. package/dist/outputs.js +2 -1
  42. package/dist/outputs.js.map +1 -1
  43. package/dist/providers/jev.d.ts.map +1 -1
  44. package/dist/providers/jev.js +153 -48
  45. package/dist/providers/jev.js.map +1 -1
  46. package/dist/questions.d.ts +41 -4
  47. package/dist/questions.d.ts.map +1 -1
  48. package/dist/questions.js +8 -7
  49. package/dist/questions.js.map +1 -1
  50. package/dist/runner.d.ts +2 -1
  51. package/dist/runner.d.ts.map +1 -1
  52. package/dist/runner.js +53 -34
  53. package/dist/runner.js.map +1 -1
  54. package/dist/types.d.ts +2 -2
  55. package/dist/types.d.ts.map +1 -1
  56. package/package.json +33 -6
package/README.md CHANGED
@@ -16,11 +16,14 @@ if (urgency > 80) {
16
16
 
17
17
  The model supplies the judgement. Your code decides the consequence.
18
18
 
19
+ **[Website](https://jevascript.org/)** · **[Documentation](https://jevascript.org/docs)** ·
20
+ **[Changelog](CHANGELOG.md)**
21
+
19
22
  ## Status
20
23
 
21
- Working MVP. The package is verified end to end against the live
22
- TypeSafe API. Several items from the design doc are deliberately not built yet — see
23
- [Not yet built](#not-yet-built).
24
+ Working MVP, 0.x: the API may still change before 1.0. The package is verified end to end
25
+ against the live TypeSafe API. Several planned features are deliberately not built yet — see
26
+ the [roadmap](#roadmap).
24
27
 
25
28
  ## Install
26
29
 
@@ -109,6 +112,11 @@ const analysis = await semantic(ticket).batch({
109
112
  })
110
113
  ```
111
114
 
115
+ A question means the same thing in a batch as on its own: `threshold`, `allowUnknown`,
116
+ `minConfidence` with `fallback`, and `detailed` all apply, and the result types follow the
117
+ options — `is("…", { allowUnknown: true })` is typed `boolean | "unknown"`, never a bare
118
+ `boolean` that would let a truthy `"unknown"` through an `if`.
119
+
112
120
  `Promise.all([...])` on the same context batches identically. **Sequential `await`s cannot**
113
121
  — the second question doesn't exist until the first resolves — so the runtime warns once
114
122
  when a context issues a second request.
@@ -168,7 +176,9 @@ const risk = await semantic(order).score("fraud risk", {
168
176
  Without `minConfidence` or `samples`, `detailed: true` returns `probability` and leaves
169
177
  `confidence` undefined rather than filling it with a number that means nothing. Sampling a
170
178
  question does not multiply the cost of its neighbours: the extra rounds carry only the
171
- questions that asked for them.
179
+ questions that asked for them. The rounds run concurrently, so sampling costs requests, not
180
+ latency. A `minConfidence` set in `defaults` implies sampling just as one set on the call
181
+ does, and a cached answer keeps the confidence it was measured with.
172
182
 
173
183
  `choose()` and rubric-backed `score()` get a real confidence from the provider — the
174
184
  concentration of the distribution — so they need no sampling.
@@ -190,7 +200,19 @@ switch (await semantic(tx).is("This is fraud", { allowUnknown: true })) {
190
200
  await semantic(doc).score("quality", { cache: "1h" })
191
201
  ```
192
202
 
193
- Caching is a consistency tool here as much as a cost one.
203
+ Caching is a consistency tool here as much as a cost one. Cache keys are SHA-256 over exactly
204
+ what the provider is sent (`Date`s included), so two states can only share an answer if the
205
+ model would have seen the same thing.
206
+
207
+ ## Timeouts and failures
208
+
209
+ Every evaluation runs under one deadline — 10 s unless `defaults.timeoutMs` or the call's
210
+ `timeoutMs` says otherwise, `0` for none. Retries on 429/5xx spend from that deadline rather
211
+ than each getting a fresh one, and a timeout or a caller's `AbortSignal` is never retried.
212
+ A timeout throws `SemanticTimeoutError`; any other provider failure throws `ProviderError`
213
+ with the HTTP `status` and the API's own message. Answers are validated on the way in: a
214
+ choice that is not one of your options, or a probability outside [0, 1], is an error rather
215
+ than a value.
194
216
 
195
217
  ## Declare a schema once, apply it to data
196
218
 
@@ -266,6 +288,14 @@ if (await churnRisk(customer) > 80) startRetentionFlow()
266
288
 
267
289
  `churnRisk.question()` composes into `batch()`, so a defined metric still shares a request.
268
290
 
291
+ `defineRule` is the boolean counterpart. Whether a rule may answer `"unknown"` is part of its
292
+ definition, and its type says so:
293
+
294
+ ```ts
295
+ const fraud = defineRule({ name: "fraud", condition: "This order is fraudulent.", defaults: { allowUnknown: true } })
296
+ const verdict = await fraud(order) // boolean | "unknown"
297
+ ```
298
+
269
299
  Bump `version` whenever the wording changes. There is no fine-tuning: the prompt, the
270
300
  criteria and the pinned model version are a single artefact, and evaluations are only
271
301
  comparable within one.
@@ -278,7 +308,8 @@ Call cost differs by an order of magnitude, so it is worth knowing which you are
278
308
  |---|---|
279
309
  | `semantic.find(items, condition)` | **1** |
280
310
  | `semantic.compare(a, b, { by })` | **1** |
281
- | `semantic.filter` / `some` / `every` | N |
311
+ | `semantic.filter` | N |
312
+ | `semantic.some` / `every` | 1 to N — they stop as soon as the answer is decided |
282
313
  | `semantic(query).rank(items, { by })` | N |
283
314
 
284
315
  `find` puts the items themselves into one choice — and pairs it with an existence check,
@@ -370,9 +401,9 @@ Counting, arithmetic, and date comparison — a decision model reads dates as te
370
401
  ordered values. Extract the parts with a `choose`, then compare in code. Keep irrelevant
371
402
  fields out of the state; they measurably degrade accuracy.
372
403
 
373
- ## Not yet built
404
+ ## Roadmap
374
405
 
375
- From the design document, deliberately out of scope for this MVP:
406
+ Planned, and deliberately out of scope for this MVP:
376
407
 
377
408
  - `evidence` — the provider generates no text, so this has to be *extractive*: tag the state's
378
409
  lines with ids, run a choice over the ids plus an existence check, and cite the winning
@@ -430,7 +461,8 @@ npm run example examples/agent-guardrail.ts
430
461
 
431
462
  ```bash
432
463
  npm install
433
- npm test # build + typecheck + 53 tests, no network
464
+ npm test # build + typecheck + 89 tests, no network
465
+ npm run test:live # 10 contract tests against the live API, needs .env
434
466
  npm run example examples/support-ticket.ts # live, needs JEV_API_KEY
435
467
  npm run example examples/batching-benchmark.ts
436
468
  ```
@@ -441,7 +473,15 @@ npm run example examples/batching-benchmark.ts
441
473
  src/ the runtime: context, batching, primitives, cache, definitions, collections
442
474
  src/providers/ provider adapters (jev.ts today)
443
475
  src/testing.ts mock provider, exported as "jevascript/testing"
444
- test/ offline tests against the mock provider
476
+ test/ offline tests against the mock provider and a scripted fetch
477
+ test/live/ contract tests against the live API (npm run test:live)
445
478
  examples/ live end-to-end scripts (quick/, launch/, app/)
446
- docs/ landing page spec
447
479
  ```
480
+
481
+ ## Security
482
+
483
+ Found a vulnerability? Please report it privately — see [SECURITY.md](SECURITY.md).
484
+
485
+ ## License
486
+
487
+ [MIT](LICENSE)
package/dist/cache.d.ts CHANGED
@@ -5,11 +5,14 @@ export interface SemanticCache {
5
5
  }
6
6
  /** Parses "5m", "1h", "30s", "250ms", or a raw millisecond number. */
7
7
  export declare function parseTtl(ttl: string | number): number;
8
- /** FNV-1a, 128-bit-ish via two independent lanes. Adequate for cache keys. */
8
+ /**
9
+ * SHA-256, hex. A collision would silently serve one state's answer for
10
+ * another's, and states are often user-authored, so the key has to hold up
11
+ * against inputs chosen on purpose — not just against accidents.
12
+ */
9
13
  export declare function hashKey(input: string): string;
10
14
  export declare class MemoryCache implements SemanticCache {
11
15
  #private;
12
- private readonly maxEntries;
13
16
  constructor(maxEntries?: number);
14
17
  get(key: string): SemanticAnswer | undefined;
15
18
  set(key: string, value: SemanticAnswer, ttlMs: number): void;
@@ -1 +1 @@
1
- {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAEhD,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,GAAG,cAAc,GAAG,SAAS,CAAA;IAClF,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;CAC7E;AAED,sEAAsE;AACtE,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAQrD;AAED,8EAA8E;AAC9E,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAS7C;AAOD,qBAAa,WAAY,YAAW,aAAa;;IAGnC,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,SAAQ;IAE/C,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAa5C,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAU5D,KAAK,IAAI,IAAI;CAGd"}
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAEhD,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,GAAG,cAAc,GAAG,SAAS,CAAA;IAClF,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;CAC7E;AAED,sEAAsE;AACtE,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAQrD;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE7C;AAOD,qBAAa,WAAY,YAAW,aAAa;;gBAInC,UAAU,SAAQ;IAI9B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAa5C,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAU5D,KAAK,IAAI,IAAI;CAGd"}
package/dist/cache.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { createHash } from "node:crypto";
1
2
  /** Parses "5m", "1h", "30s", "250ms", or a raw millisecond number. */
2
3
  export function parseTtl(ttl) {
3
4
  if (typeof ttl === "number")
@@ -10,22 +11,19 @@ export function parseTtl(ttl) {
10
11
  const scale = { ms: 1, s: 1000, m: 60_000, h: 3_600_000, d: 86_400_000 }[unit];
11
12
  return value * scale;
12
13
  }
13
- /** FNV-1a, 128-bit-ish via two independent lanes. Adequate for cache keys. */
14
+ /**
15
+ * SHA-256, hex. A collision would silently serve one state's answer for
16
+ * another's, and states are often user-authored, so the key has to hold up
17
+ * against inputs chosen on purpose — not just against accidents.
18
+ */
14
19
  export function hashKey(input) {
15
- let a = 0x811c9dc5;
16
- let b = 0x01000193;
17
- for (let i = 0; i < input.length; i++) {
18
- const c = input.charCodeAt(i);
19
- a = Math.imul(a ^ c, 0x01000193) >>> 0;
20
- b = Math.imul(b ^ (c + i), 0x85ebca6b) >>> 0;
21
- }
22
- return a.toString(36) + b.toString(36);
20
+ return createHash("sha256").update(input).digest("hex");
23
21
  }
24
22
  export class MemoryCache {
25
- maxEntries;
26
23
  #entries = new Map();
24
+ #maxEntries;
27
25
  constructor(maxEntries = 5_000) {
28
- this.maxEntries = maxEntries;
26
+ this.#maxEntries = maxEntries;
29
27
  }
30
28
  get(key) {
31
29
  const entry = this.#entries.get(key);
@@ -44,7 +42,7 @@ export class MemoryCache {
44
42
  if (ttlMs <= 0)
45
43
  return;
46
44
  this.#entries.set(key, { value, expiresAt: Date.now() + ttlMs });
47
- while (this.#entries.size > this.maxEntries) {
45
+ while (this.#entries.size > this.#maxEntries) {
48
46
  const oldest = this.#entries.keys().next();
49
47
  if (oldest.done)
50
48
  break;
package/dist/cache.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cache.js","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAQxC,sEAAsE;AACtE,MAAM,UAAU,QAAQ,CAAC,GAAoB;IAC3C,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAA;IACvC,MAAM,KAAK,GAAG,+BAA+B,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAA;IAC9D,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAA;IACvG,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAC9B,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAiC,CAAA;IACrD,MAAM,KAAK,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,IAAI,CAAC,CAAA;IAC9E,OAAO,KAAK,GAAG,KAAK,CAAA;AACtB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,OAAO,CAAC,KAAa;IACnC,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AACzD,CAAC;AAOD,MAAM,OAAO,WAAW;IACtB,QAAQ,GAAG,IAAI,GAAG,EAAiB,CAAA;IAC1B,WAAW,CAAQ;IAE5B,YAAY,UAAU,GAAG,KAAK;QAC5B,IAAI,CAAC,WAAW,GAAG,UAAU,CAAA;IAC/B,CAAC;IAED,GAAG,CAAC,GAAW;QACb,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACpC,IAAI,CAAC,KAAK;YAAE,OAAO,SAAS,CAAA;QAC5B,IAAI,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YAClC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YACzB,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,8CAA8C;QAC9C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACzB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QAC7B,OAAO,KAAK,CAAC,KAAK,CAAA;IACpB,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,KAAqB,EAAE,KAAa;QACnD,IAAI,KAAK,IAAI,CAAC;YAAE,OAAM;QACtB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC,CAAA;QAChE,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAA;YAC1C,IAAI,MAAM,CAAC,IAAI;gBAAE,MAAK;YACtB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACpC,CAAC;IACH,CAAC;IAED,KAAK;QACH,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAA;IACvB,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"collections.d.ts","sourceRoot":"","sources":["../src/collections.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"collections.d.ts","sourceRoot":"","sources":["../src/collections.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { BUILTIN_DEFAULTS, globalRuntime } from "./config.js";
1
+ import { BUILTIN_DEFAULTS, globalRuntime, resolveTimeout } from "./config.js";
2
2
  import { emit as emitEvent, runPlan as runPlanRaw } from "./runner.js";
3
3
  import { parseTtlOrUndefined } from "./internal.js";
4
4
  function render(item, index, label) {
@@ -8,13 +8,30 @@ function render(item, index, label) {
8
8
  return item;
9
9
  return JSON.stringify(item);
10
10
  }
11
- async function mapLimited(items, limit, fn) {
11
+ /**
12
+ * Runs `fn` over `items` with at most `limit` in flight.
13
+ *
14
+ * Stops handing out new items as soon as one fails or `stop()` returns true,
15
+ * so a failing provider or an already-decided `some()` does not keep spending
16
+ * requests. Items never started are left `undefined`.
17
+ */
18
+ async function mapLimited(items, limit, fn, stop = () => false) {
12
19
  const results = new Array(items.length);
13
20
  let cursor = 0;
14
- const workers = Array.from({ length: Math.min(limit, items.length) }, async () => {
15
- while (cursor < items.length) {
21
+ let halted = false;
22
+ const workers = Array.from({ length: Math.max(1, Math.min(limit, items.length)) }, async () => {
23
+ while (!halted && cursor < items.length) {
16
24
  const index = cursor++;
17
- results[index] = await fn(items[index], index);
25
+ try {
26
+ const result = await fn(items[index], index);
27
+ results[index] = result;
28
+ if (stop(result))
29
+ halted = true;
30
+ }
31
+ catch (error) {
32
+ halted = true;
33
+ throw error;
34
+ }
18
35
  }
19
36
  });
20
37
  await Promise.all(workers);
@@ -26,16 +43,24 @@ export function bindCollections(runtime) {
26
43
  const resolveProvider = (override) => runtime.provider(override);
27
44
  const emit = (event) => emitEvent(event, runtime.config);
28
45
  const runPlan = (provider, state, planned, options = {}) => runPlanRaw(provider, state, planned, { ...options, store: runtime.store });
46
+ const thresholdOf = (options) => options.threshold ?? getConfig().defaults?.threshold ?? BUILTIN_DEFAULTS.threshold;
47
+ const timeoutOf = (options) => {
48
+ const timeoutMs = resolveTimeout(options.timeoutMs, getConfig());
49
+ return timeoutMs !== undefined ? { timeoutMs } : {};
50
+ };
29
51
  /**
30
- * Scores every item independently against one proposition.
52
+ * Scores items independently against one proposition.
31
53
  *
32
54
  * This is N requests, not one: each item is a different state, and a request
33
55
  * carries a single state. Prefer `find` when you only need the best item.
56
+ * `stopWhen` ends the walk early once the answer is decided.
34
57
  */
35
- async function scoreEach(items, condition, options, operation) {
58
+ async function scoreEach(items, condition, options, operation, stopWhen) {
36
59
  const provider = resolveProvider(options.provider);
37
60
  const ttl = parseTtlOrUndefined(options.cache ?? getConfig().defaults?.cache);
61
+ const samples = options.samples ?? 1;
38
62
  const started = Date.now();
63
+ const totals = { requests: 0, cached: 0, inputTokens: 0, outputTokens: 0 };
39
64
  const scores = await mapLimited(items, options.concurrency ?? 8, async (item, index) => {
40
65
  const rendered = render(item, index, options.label);
41
66
  const shared = options.context;
@@ -49,23 +74,29 @@ export function bindCollections(runtime) {
49
74
  ...(options.trueWhen !== undefined ? { trueWhen: options.trueWhen } : {}),
50
75
  ...(options.falseWhen !== undefined ? { falseWhen: options.falseWhen } : {}),
51
76
  },
52
- samples: options.samples ?? 1,
77
+ samples,
53
78
  ...(ttl !== undefined ? { cacheTtlMs: ttl } : {}),
54
79
  },
55
- ], options.timeoutMs !== undefined ? { timeoutMs: options.timeoutMs } : {});
80
+ ], timeoutOf(options));
81
+ totals.requests += result.requestCount;
82
+ totals.cached += result.cachedKeys.size;
83
+ totals.inputTokens += result.usage.inputTokens ?? 0;
84
+ totals.outputTokens += result.usage.outputTokens ?? 0;
56
85
  return result.answers["match"].probability;
57
- });
86
+ }, stopWhen);
87
+ const evaluated = scores.filter((s) => s !== undefined).length;
58
88
  emit({
59
89
  operation,
60
90
  keys: ["match"],
61
91
  provider: provider.name,
62
92
  model: provider.model,
63
93
  latencyMs: Date.now() - started,
64
- cached: false,
94
+ cached: evaluated > 0 && totals.cached === evaluated,
65
95
  batched: false,
66
- questionCount: items.length,
67
- requestCount: items.length * (options.samples ?? 1),
68
- samples: options.samples ?? 1,
96
+ questionCount: evaluated,
97
+ requestCount: totals.requests,
98
+ samples,
99
+ usage: { inputTokens: totals.inputTokens, outputTokens: totals.outputTokens },
69
100
  });
70
101
  return scores;
71
102
  }
@@ -73,16 +104,24 @@ export function bindCollections(runtime) {
73
104
  if (items.length === 0)
74
105
  return [];
75
106
  const scores = await scoreEach(items, condition, { ...options, by: condition }, "filter");
76
- const threshold = options.threshold ?? getConfig().defaults?.threshold ?? BUILTIN_DEFAULTS.threshold;
107
+ const threshold = thresholdOf(options);
77
108
  return items.filter((_, index) => scores[index] > threshold);
78
109
  }
110
+ /** Stops at the first match: at best one request, at worst N. */
79
111
  async function some(items, condition, options = {}) {
80
- return (await filter(items, condition, options)).length > 0;
112
+ if (items.length === 0)
113
+ return false;
114
+ const threshold = thresholdOf(options);
115
+ const scores = await scoreEach(items, condition, { ...options, by: condition }, "filter", (p) => p > threshold);
116
+ return scores.some((p) => p !== undefined && p > threshold);
81
117
  }
118
+ /** Stops at the first item that fails. */
82
119
  async function every(items, condition, options = {}) {
83
120
  if (items.length === 0)
84
121
  return true;
85
- return (await filter(items, condition, options)).length === items.length;
122
+ const threshold = thresholdOf(options);
123
+ const scores = await scoreEach(items, condition, { ...options, by: condition }, "filter", (p) => p <= threshold);
124
+ return scores.every((p) => p !== undefined && p > threshold);
86
125
  }
87
126
  async function rank(items, options) {
88
127
  if (items.length === 0)
@@ -105,26 +144,27 @@ export function bindCollections(runtime) {
105
144
  return undefined;
106
145
  const provider = resolveProvider(options.provider);
107
146
  const capacity = provider.capabilities.maxChoiceOptions;
147
+ const threshold = thresholdOf(options);
108
148
  if (items.length > capacity) {
109
149
  const ranked = await rank(items, { ...options, by: condition });
110
150
  const best = ranked[0];
111
- const threshold = options.threshold ?? getConfig().defaults?.threshold ?? BUILTIN_DEFAULTS.threshold;
112
151
  return best && best.score > threshold ? best.item : undefined;
113
152
  }
153
+ // Measured against the live API: the candidates belong both in the state
154
+ // (the existence check reads them there) and as the option descriptions
155
+ // (bare ids lose accuracy). Moving the text out of either costs correctness
156
+ // and saves almost no tokens.
114
157
  const ids = items.map((_, index) => `i${index}`);
115
- const optionMap = {};
116
158
  const candidates = {};
117
159
  items.forEach((item, index) => {
118
- const text = render(item, index, options.label);
119
- optionMap[ids[index]] = text;
120
- candidates[ids[index]] = text;
160
+ candidates[ids[index]] = render(item, index, options.label);
121
161
  });
122
162
  const ttl = parseTtlOrUndefined(options.cache ?? getConfig().defaults?.cache);
123
163
  const started = Date.now();
124
164
  const result = await runPlan(provider, { candidates }, [
125
165
  {
126
166
  key: "pick",
127
- question: { kind: "choice", instructions: condition, options: optionMap },
167
+ question: { kind: "choice", instructions: condition, options: candidates },
128
168
  samples: options.samples ?? 1,
129
169
  ...(ttl !== undefined ? { cacheTtlMs: ttl } : {}),
130
170
  },
@@ -138,7 +178,7 @@ export function bindCollections(runtime) {
138
178
  samples: options.samples ?? 1,
139
179
  ...(ttl !== undefined ? { cacheTtlMs: ttl } : {}),
140
180
  },
141
- ], options.timeoutMs !== undefined ? { timeoutMs: options.timeoutMs } : {});
181
+ ], timeoutOf(options));
142
182
  emit({
143
183
  operation: "find",
144
184
  keys: ["pick", "exists"],
@@ -152,7 +192,6 @@ export function bindCollections(runtime) {
152
192
  samples: options.samples ?? 1,
153
193
  usage: result.usage,
154
194
  });
155
- const threshold = options.threshold ?? getConfig().defaults?.threshold ?? BUILTIN_DEFAULTS.threshold;
156
195
  if (result.answers["exists"].probability <= threshold)
157
196
  return undefined;
158
197
  const picked = result.answers["pick"].choice;
@@ -163,6 +202,7 @@ export function bindCollections(runtime) {
163
202
  async function compare(left, right, options) {
164
203
  const provider = resolveProvider(options.provider);
165
204
  const toText = (item) => (options.label ? options.label(item) : typeof item === "string" ? item : JSON.stringify(item));
205
+ const ttl = parseTtlOrUndefined(options.cache ?? getConfig().defaults?.cache);
166
206
  const started = Date.now();
167
207
  const result = await runPlan(provider, { left: toText(left), right: toText(right) }, [
168
208
  {
@@ -177,15 +217,16 @@ export function bindCollections(runtime) {
177
217
  },
178
218
  },
179
219
  samples: options.samples ?? 1,
220
+ ...(ttl !== undefined ? { cacheTtlMs: ttl } : {}),
180
221
  },
181
- ], options.timeoutMs !== undefined ? { timeoutMs: options.timeoutMs } : {});
222
+ ], timeoutOf(options));
182
223
  emit({
183
224
  operation: "compare",
184
225
  keys: ["winner"],
185
226
  provider: provider.name,
186
227
  model: provider.model,
187
228
  latencyMs: Date.now() - started,
188
- cached: false,
229
+ cached: result.cachedKeys.size === 1,
189
230
  batched: false,
190
231
  questionCount: 1,
191
232
  requestCount: result.requestCount,
@@ -1 +1 @@
1
- {"version":3,"file":"collections.js","sourceRoot":"","sources":["../src/collections.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"collections.js","sourceRoot":"","sources":["../src/collections.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts CHANGED
@@ -1,6 +1,10 @@
1
1
  import { type SemanticCache } from "./cache.ts";
2
2
  import type { Observability, SemanticProvider } from "./types.ts";
3
3
  export interface SemanticDefaults {
4
+ /**
5
+ * Deadline for one evaluation, retries included. Defaults to 10 000. Pass `0`
6
+ * or `Infinity` to wait indefinitely.
7
+ */
4
8
  timeoutMs?: number;
5
9
  minConfidence?: number;
6
10
  cache?: string | number;
@@ -54,4 +58,6 @@ export declare function getConfig(): SemanticConfig;
54
58
  export declare function getCacheStore(): SemanticCache;
55
59
  export declare function resolveProvider(override?: SemanticProvider): SemanticProvider;
56
60
  export declare function shouldWarnUnbatched(config?: SemanticConfig): boolean;
61
+ /** The deadline a call runs under: its own, else the configured default, else the built-in one. */
62
+ export declare function resolveTimeout(explicit: number | undefined, config: SemanticConfig): number | undefined;
57
63
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,aAAa,EAAE,MAAM,YAAY,CAAA;AAG5D,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAEjE,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,kEAAkE;IAClE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,6EAA6E;IAC7E,eAAe,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC3C,qFAAqF;IACrF,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAA;CAC3C;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,gBAAgB,CAAA;IAC3B,QAAQ,CAAC,EAAE,gBAAgB,CAAA;IAC3B,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,UAAU,CAAC,EAAE,aAAa,CAAA;IAC1B,uGAAuG;IACvG,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED,eAAO,MAAM,gBAAgB;;;;IAI3B,8EAA8E;;CAEpD,CAAA;AAE5B;;;;;;GAMG;AACH,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAA;IAC/B,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAA;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,gBAAgB,GAAG,gBAAgB,CAAA;IACvD,4FAA4F;IAC5F,SAAS,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAAA;CACxC;AAaD,wBAAgB,aAAa,CAAC,MAAM,GAAE,cAAmB,GAAG,OAAO,CAgBlE;AAKD,6FAA6F;AAC7F,eAAO,MAAM,aAAa,EAAE,OAS3B,CAAA;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAG9D;AAED,wBAAgB,aAAa,IAAI,IAAI,CAGpC;AAED,wBAAgB,SAAS,IAAI,cAAc,CAE1C;AAED,wBAAgB,aAAa,IAAI,aAAa,CAE7C;AAED,wBAAgB,eAAe,CAAC,QAAQ,CAAC,EAAE,gBAAgB,GAAG,gBAAgB,CAE7E;AAED,wBAAgB,mBAAmB,CAAC,MAAM,GAAE,cAAwB,GAAG,OAAO,CAE7E"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,aAAa,EAAE,MAAM,YAAY,CAAA;AAI5D,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAEjE,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,kEAAkE;IAClE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,6EAA6E;IAC7E,eAAe,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC3C,qFAAqF;IACrF,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAA;CAC3C;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,gBAAgB,CAAA;IAC3B,QAAQ,CAAC,EAAE,gBAAgB,CAAA;IAC3B,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,UAAU,CAAC,EAAE,aAAa,CAAA;IAC1B,uGAAuG;IACvG,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED,eAAO,MAAM,gBAAgB;;;;IAI3B,8EAA8E;;CAEpD,CAAA;AAE5B;;;;;;GAMG;AACH,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAA;IAC/B,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAA;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,gBAAgB,GAAG,gBAAgB,CAAA;IACvD,4FAA4F;IAC5F,SAAS,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAAA;CACxC;AAaD,wBAAgB,aAAa,CAAC,MAAM,GAAE,cAAmB,GAAG,OAAO,CAgBlE;AAKD,6FAA6F;AAC7F,eAAO,MAAM,aAAa,EAAE,OAS3B,CAAA;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAG9D;AAED,wBAAgB,aAAa,IAAI,IAAI,CAGpC;AAED,wBAAgB,SAAS,IAAI,cAAc,CAE1C;AAED,wBAAgB,aAAa,IAAI,aAAa,CAE7C;AAED,wBAAgB,eAAe,CAAC,QAAQ,CAAC,EAAE,gBAAgB,GAAG,gBAAgB,CAE7E;AAED,wBAAgB,mBAAmB,CAAC,MAAM,GAAE,cAAwB,GAAG,OAAO,CAE7E;AAED,mGAAmG;AACnG,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS,CAGvG"}
package/dist/config.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import { MemoryCache } from "./cache.js";
2
2
  import { NotConfiguredError } from "./errors.js";
3
+ import { env } from "./env.js";
3
4
  import { jev } from "./providers/jev.js";
4
5
  export const BUILTIN_DEFAULTS = {
5
6
  timeoutMs: 10_000,
@@ -14,7 +15,7 @@ function resolveProviderIn(config, override) {
14
15
  if (config.provider)
15
16
  return config.provider;
16
17
  // Zero-config path: an API key in the environment is enough to start.
17
- if (process.env["JEV_API_KEY"]) {
18
+ if (env("JEV_API_KEY")) {
18
19
  config.provider = jev();
19
20
  return config.provider;
20
21
  }
@@ -70,6 +71,11 @@ export function resolveProvider(override) {
70
71
  return globalRuntime.provider(override);
71
72
  }
72
73
  export function shouldWarnUnbatched(config = current) {
73
- return config.warnUnbatched ?? process.env["NODE_ENV"] !== "production";
74
+ return config.warnUnbatched ?? env("NODE_ENV") !== "production";
75
+ }
76
+ /** The deadline a call runs under: its own, else the configured default, else the built-in one. */
77
+ export function resolveTimeout(explicit, config) {
78
+ const timeoutMs = explicit ?? config.defaults?.timeoutMs ?? BUILTIN_DEFAULTS.timeoutMs;
79
+ return timeoutMs > 0 && Number.isFinite(timeoutMs) ? timeoutMs : undefined;
74
80
  }
75
81
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dist/context.d.ts CHANGED
@@ -1,57 +1,22 @@
1
1
  import { type Runtime } from "./config.ts";
2
2
  import { type Ranked, type RankOptions } from "./collections.ts";
3
- import { type ChooseOptions, type IsOptions, type QuestionSpec, type ScoreOptions } from "./questions.ts";
4
- import type { ChoiceOptionSpec, State } from "./types.ts";
5
- export interface DetailedTruth {
6
- value: boolean;
7
- /** The calibrated signal. For truth-backed answers this *is* the uncertainty. */
8
- probability: number;
9
- /** Measured across sample rounds. Undefined unless `samples`/`minConfidence` was set. */
10
- confidence?: number;
11
- }
12
- export interface DetailedScore {
13
- value: number;
14
- probability?: number;
15
- /** Rubric position, 1-indexed. Present only for `levels`-backed scores. */
16
- level?: number;
17
- confidence?: number;
18
- }
19
- export interface DetailedChoice<T extends string> {
20
- value: T;
21
- confidence: number;
22
- probabilities: Record<string, number>;
23
- }
3
+ import { type ChoiceInput, type ChoiceKey, type ChooseOptions, type ChooseResult, type IsOptions, type IsResult, type QuestionSpec, type ScoreOptions, type ScoreResult } from "./questions.ts";
4
+ import type { State } from "./types.ts";
5
+ export type { DetailedChoice, DetailedScore, DetailedTruth } from "./questions.ts";
24
6
  export declare class SemanticContext {
25
7
  #private;
26
8
  constructor(state: State, runtime?: Runtime);
27
- is(condition: string, options?: IsOptions & {
28
- detailed?: false;
29
- allowUnknown?: false;
30
- }): Promise<boolean>;
31
- is(condition: string, options: IsOptions & {
32
- detailed: true;
33
- }): Promise<DetailedTruth>;
34
- is(condition: string, options: IsOptions & {
35
- allowUnknown: true;
36
- }): Promise<boolean | "unknown">;
37
- score(criterion: string, options?: ScoreOptions & {
38
- detailed?: false;
39
- }): Promise<number>;
40
- score(criterion: string, options: ScoreOptions & {
41
- detailed: true;
42
- }): Promise<DetailedScore>;
43
- choose<const T extends readonly string[]>(options: T, extra?: ChooseOptions & {
44
- detailed?: false;
45
- }): Promise<T[number]>;
46
- choose<const T extends readonly string[]>(options: T, extra: ChooseOptions & {
47
- detailed: true;
48
- }): Promise<DetailedChoice<T[number]>>;
49
- choose<const T extends Readonly<Record<string, string | ChoiceOptionSpec>>>(options: T, extra?: ChooseOptions & {
50
- detailed?: false;
51
- }): Promise<keyof T & string>;
52
- choose<const T extends Readonly<Record<string, string | ChoiceOptionSpec>>>(options: T, extra: ChooseOptions & {
53
- detailed: true;
54
- }): Promise<DetailedChoice<keyof T & string>>;
9
+ /**
10
+ * P(condition) thresholded into a boolean.
11
+ *
12
+ * `allowUnknown: true` widens the result to `boolean | "unknown"`, and
13
+ * `detailed: true` returns the probability alongside — the types follow.
14
+ */
15
+ is<O extends IsOptions = {}>(condition: string, options?: O): Promise<IsResult<O>>;
16
+ /** A probability- or rubric-backed number on `range` (0–100 by default). */
17
+ score<O extends ScoreOptions = {}>(criterion: string, options?: O): Promise<ScoreResult<O>>;
18
+ /** Exactly one of the options. The literal union is inferred without `as const`. */
19
+ choose<const T extends ChoiceInput, O extends ChooseOptions = {}>(options: T, extra?: O): Promise<ChooseResult<ChoiceKey<T>, O>>;
55
20
  /**
56
21
  * Orders items by how well they fit this state.
57
22
  *
@@ -64,7 +29,9 @@ export declare class SemanticContext {
64
29
  * Evaluates every question against this state in a single request.
65
30
  *
66
31
  * Equivalent to creating the same questions in one turn and awaiting them
67
- * together; this form just makes the intent explicit and names the results.
32
+ * together including every option: thresholds, `allowUnknown`,
33
+ * `minConfidence` and `fallback`, `detailed`. This form just makes the
34
+ * intent explicit and names the results.
68
35
  */
69
36
  batch<S extends Record<string, QuestionSpec>>(spec: S): Promise<{
70
37
  [K in keyof S]: S[K] extends QuestionSpec<infer V> ? V : never;