jevkit-runtime 0.3.0__tar.gz → 0.3.1__tar.gz
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.
- jevkit_runtime-0.3.1/CHANGELOG.md +42 -0
- {jevkit_runtime-0.3.0 → jevkit_runtime-0.3.1}/PKG-INFO +6 -4
- {jevkit_runtime-0.3.0 → jevkit_runtime-0.3.1}/README.md +3 -3
- jevkit_runtime-0.3.1/SECURITY.md +18 -0
- {jevkit_runtime-0.3.0 → jevkit_runtime-0.3.1}/docs/diffusiongemma.md +16 -4
- {jevkit_runtime-0.3.0 → jevkit_runtime-0.3.1}/docs/laya.md +17 -4
- {jevkit_runtime-0.3.0 → jevkit_runtime-0.3.1}/pyproject.toml +3 -1
- {jevkit_runtime-0.3.0 → jevkit_runtime-0.3.1}/src/jevkit_runtime/__init__.py +1 -1
- {jevkit_runtime-0.3.0 → jevkit_runtime-0.3.1}/uv.lock +1 -1
- {jevkit_runtime-0.3.0 → jevkit_runtime-0.3.1}/.github/workflows/downstream.yml +0 -0
- {jevkit_runtime-0.3.0 → jevkit_runtime-0.3.1}/.github/workflows/publish.yml +0 -0
- {jevkit_runtime-0.3.0 → jevkit_runtime-0.3.1}/.github/workflows/test.yml +0 -0
- {jevkit_runtime-0.3.0 → jevkit_runtime-0.3.1}/.gitignore +0 -0
- {jevkit_runtime-0.3.0 → jevkit_runtime-0.3.1}/LICENSE +0 -0
- {jevkit_runtime-0.3.0 → jevkit_runtime-0.3.1}/scripts/dev.py +0 -0
- {jevkit_runtime-0.3.0 → jevkit_runtime-0.3.1}/scripts/laya_server.py +0 -0
- {jevkit_runtime-0.3.0 → jevkit_runtime-0.3.1}/scripts/offline/sitecustomize.py +0 -0
- {jevkit_runtime-0.3.0 → jevkit_runtime-0.3.1}/src/jevkit_runtime/client.py +0 -0
- {jevkit_runtime-0.3.0 → jevkit_runtime-0.3.1}/src/jevkit_runtime/errors.py +0 -0
- {jevkit_runtime-0.3.0 → jevkit_runtime-0.3.1}/src/jevkit_runtime/meter.py +0 -0
- {jevkit_runtime-0.3.0 → jevkit_runtime-0.3.1}/src/jevkit_runtime/protocol.py +0 -0
- {jevkit_runtime-0.3.0 → jevkit_runtime-0.3.1}/src/jevkit_runtime/providers.py +0 -0
- {jevkit_runtime-0.3.0 → jevkit_runtime-0.3.1}/src/jevkit_runtime/settings.py +0 -0
- {jevkit_runtime-0.3.0 → jevkit_runtime-0.3.1}/src/jevkit_runtime/store.py +0 -0
- {jevkit_runtime-0.3.0 → jevkit_runtime-0.3.1}/src/jevkit_runtime/transport.py +0 -0
- {jevkit_runtime-0.3.0 → jevkit_runtime-0.3.1}/tests/test_client.py +0 -0
- {jevkit_runtime-0.3.0 → jevkit_runtime-0.3.1}/tests/test_dev_runner.py +0 -0
- {jevkit_runtime-0.3.0 → jevkit_runtime-0.3.1}/tests/test_protocol.py +0 -0
- {jevkit_runtime-0.3.0 → jevkit_runtime-0.3.1}/tests/test_settings_and_providers.py +0 -0
- {jevkit_runtime-0.3.0 → jevkit_runtime-0.3.1}/tests/test_store.py +0 -0
- {jevkit_runtime-0.3.0 → jevkit_runtime-0.3.1}/tests/test_transport.py +0 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
`jevkit-runtime` is 0.x: a minor version may break the API. The JevKit tools pin `<0.(n+1)` so a
|
|
4
|
+
new minor release never changes an installed tool.
|
|
5
|
+
|
|
6
|
+
## 0.3.1
|
|
7
|
+
|
|
8
|
+
- Documentation and package metadata only; the code is the same as 0.3.0.
|
|
9
|
+
- The DiffusionGemma and Laya guides report what to expect from the four tools' benchmarks.
|
|
10
|
+
- Add this changelog and a security policy, and list the repository and changelog on PyPI.
|
|
11
|
+
- README links point to GitHub, so they also work on PyPI.
|
|
12
|
+
|
|
13
|
+
## 0.3.0
|
|
14
|
+
|
|
15
|
+
- Add the local decision servers `diffusiongemma` (OpenJev) and `laya` (laya-mlx) to the catalog.
|
|
16
|
+
They need no key, are chosen only by name and never in place of a configured hosted provider, and
|
|
17
|
+
are priced at zero API fees.
|
|
18
|
+
- A provider may carry its own price; `JEV_PRICE_PER_MTOK` overrides it and `Settings.list_price`
|
|
19
|
+
is the fallback.
|
|
20
|
+
- Providers with joint reads key every answer on the whole ordered batch and are re-sent whole when
|
|
21
|
+
any slot is missing.
|
|
22
|
+
- Setup guides for both servers in `docs/`, and the Laya server adapter in `scripts/`.
|
|
23
|
+
|
|
24
|
+
## 0.2.0
|
|
25
|
+
|
|
26
|
+
Breaking redesign: one request pipeline, one answer store, one provider catalog.
|
|
27
|
+
|
|
28
|
+
- `Client.ask` owns the whole pipeline: request sharing, hedging, cache-only runs, charge callbacks
|
|
29
|
+
and provenance are per-call keyword arguments. It returns `Answers`, a dict with an `origins`
|
|
30
|
+
attribute.
|
|
31
|
+
- The import is now `jevkit_runtime`, matching the distribution.
|
|
32
|
+
- The answer store keeps answer and provenance in one row under a versioned schema; caches from
|
|
33
|
+
0.1 are reset and re-asked.
|
|
34
|
+
- HTTP/2 is used whenever the `http2` extra is installed.
|
|
35
|
+
- Removed: the legacy key recipes, the two-table cache, the `DecisionClient` seam, and the unused
|
|
36
|
+
local providers.
|
|
37
|
+
|
|
38
|
+
## 0.1.0
|
|
39
|
+
|
|
40
|
+
- First release: shared transport, settings, answer cache and metering for jgrep, jsort, jlink,
|
|
41
|
+
jselect and jcol, published as `jevkit-runtime` (the PyPI name `jevkit-core` belongs to another
|
|
42
|
+
project).
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: jevkit-runtime
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.1
|
|
4
4
|
Summary: Shared transport, configuration, caching, and accounting for JevKit tools
|
|
5
5
|
Project-URL: Homepage, https://github.com/keltokhy/jevkit-core
|
|
6
|
+
Project-URL: Repository, https://github.com/keltokhy/jevkit-core
|
|
7
|
+
Project-URL: Changelog, https://github.com/keltokhy/jevkit-core/blob/main/CHANGELOG.md
|
|
6
8
|
Project-URL: Issues, https://github.com/keltokhy/jevkit-core/issues
|
|
7
9
|
Author: Khaled Eltokhy
|
|
8
10
|
License-Expression: MIT
|
|
@@ -82,13 +84,13 @@ in place of a configured hosted provider, need no key, and are metered at zero A
|
|
|
82
84
|
DiffusionGemma reads every question in a batch together, so the runtime keys each of its answers
|
|
83
85
|
on the whole ordered batch and re-sends a batch whole when any slot is missing.
|
|
84
86
|
|
|
85
|
-
No package ships the models. [docs/diffusiongemma.md](docs/diffusiongemma.md) and
|
|
86
|
-
[docs/laya.md](docs/laya.md) explain how to run the servers, and `scripts/laya_server.py` is the
|
|
87
|
+
No package ships the models. [docs/diffusiongemma.md](https://github.com/keltokhy/jevkit-core/blob/main/docs/diffusiongemma.md) and
|
|
88
|
+
[docs/laya.md](https://github.com/keltokhy/jevkit-core/blob/main/docs/laya.md) explain how to run the servers, and `scripts/laya_server.py` is the
|
|
87
89
|
adapter the Laya guide starts.
|
|
88
90
|
|
|
89
91
|
## Development
|
|
90
92
|
|
|
91
|
-
Keep the six checkouts as siblings. Each consumer depends on `jevkit-runtime>=0.
|
|
93
|
+
Keep the six checkouts as siblings. Each consumer depends on `jevkit-runtime>=0.3.0,<0.4.0` and
|
|
92
94
|
overrides it for development with `jevkit-runtime = { path = "../jevkit-core", editable = true }`
|
|
93
95
|
under `[tool.uv.sources]`.
|
|
94
96
|
|
|
@@ -67,13 +67,13 @@ in place of a configured hosted provider, need no key, and are metered at zero A
|
|
|
67
67
|
DiffusionGemma reads every question in a batch together, so the runtime keys each of its answers
|
|
68
68
|
on the whole ordered batch and re-sends a batch whole when any slot is missing.
|
|
69
69
|
|
|
70
|
-
No package ships the models. [docs/diffusiongemma.md](docs/diffusiongemma.md) and
|
|
71
|
-
[docs/laya.md](docs/laya.md) explain how to run the servers, and `scripts/laya_server.py` is the
|
|
70
|
+
No package ships the models. [docs/diffusiongemma.md](https://github.com/keltokhy/jevkit-core/blob/main/docs/diffusiongemma.md) and
|
|
71
|
+
[docs/laya.md](https://github.com/keltokhy/jevkit-core/blob/main/docs/laya.md) explain how to run the servers, and `scripts/laya_server.py` is the
|
|
72
72
|
adapter the Laya guide starts.
|
|
73
73
|
|
|
74
74
|
## Development
|
|
75
75
|
|
|
76
|
-
Keep the six checkouts as siblings. Each consumer depends on `jevkit-runtime>=0.
|
|
76
|
+
Keep the six checkouts as siblings. Each consumer depends on `jevkit-runtime>=0.3.0,<0.4.0` and
|
|
77
77
|
overrides it for development with `jevkit-runtime = { path = "../jevkit-core", editable = true }`
|
|
78
78
|
under `[tool.uv.sources]`.
|
|
79
79
|
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Security
|
|
2
|
+
|
|
3
|
+
## Reporting a vulnerability
|
|
4
|
+
|
|
5
|
+
Please report security problems privately through GitHub:
|
|
6
|
+
[Report a vulnerability](https://github.com/keltokhy/jevkit-core/security/advisories/new).
|
|
7
|
+
Do not open a public issue. This is maintained by one person in spare time; expect a first reply
|
|
8
|
+
within a week.
|
|
9
|
+
|
|
10
|
+
Only the latest release is supported. Fixes ship as a new release, not as patches to older ones.
|
|
11
|
+
|
|
12
|
+
## What to know when using it
|
|
13
|
+
|
|
14
|
+
- Text you pass in is sent to the model provider you configure (TypeSafe, OpenRouter, a gateway,
|
|
15
|
+
or a server on your own machine). Do not send data you are not allowed to share with that provider.
|
|
16
|
+
- API keys are read from environment variables or `~/.config/jev/<provider>.key` and are sent only
|
|
17
|
+
to the provider they belong to. They are never written to the answer cache or to logs.
|
|
18
|
+
- Answers are cached on disk in `~/.cache/jev`. Delete it to remove stored answers.
|
|
@@ -80,7 +80,19 @@ same URL and model, use `--no-cache` or a separate `XDG_CACHE_HOME`.
|
|
|
80
80
|
|
|
81
81
|
## What to expect
|
|
82
82
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
83
|
+
On September 22, 2026, DiffusionGemma (`openjev-0.1`) ran each tool's benchmarks on an Apple M3
|
|
84
|
+
Ultra with 96 GiB of unified memory, beside Jev 1.13's recorded runs. It is a reasonable
|
|
85
|
+
substitute for Jev when the text must stay on your machine and each decision is about one record,
|
|
86
|
+
or about long ones. In
|
|
87
|
+
[jgrep](https://github.com/keltokhy/jgrep/blob/main/docs/benchmarks/local-models-2026-09-22.md)
|
|
88
|
+
its spam F1 was 0.87 against Jev's 0.91, with the same news accuracy; in
|
|
89
|
+
[jlink](https://github.com/keltokhy/jlink/blob/main/docs/benchmarks/local-models-2026-09-22.md)
|
|
90
|
+
it came within 0.03 of Jev's F1 on four of five benchmarks; in
|
|
91
|
+
[jcol](https://github.com/keltokhy/jcol/blob/main/benchmarks/README.md#local-models-2026-09-22)
|
|
92
|
+
it agreed with the product label on 78 of 100 complaints against Jev's 75; and in
|
|
93
|
+
[jsort](https://github.com/keltokhy/jsort/blob/main/docs/benchmarks/local-models-2026-09-22.md)
|
|
94
|
+
its scores for whole FOMC statements correlated 0.89 with Jev's. It is not a substitute for
|
|
95
|
+
sorting single short lines, where its comparisons had a reliability of 0.62 and 0.39 against
|
|
96
|
+
Jev's 0.97 and 0.96, or for judging isolated diff lines. The server runs one call at a time on
|
|
97
|
+
the GPU: about a third of a second per short record, and 14 to 18 minutes per 3,000 record pairs.
|
|
98
|
+
Keep it experimental and evaluate its cutoff on your own data.
|
|
@@ -74,7 +74,20 @@ or a separate `XDG_CACHE_HOME`.
|
|
|
74
74
|
|
|
75
75
|
## What to expect
|
|
76
76
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
77
|
+
On September 22, 2026, Laya (`laya-421m`) ran each tool's benchmarks on an Apple M3 Ultra with
|
|
78
|
+
96 GiB of unified memory, beside Jev 1.13's recorded runs. It is a fast classifier of short texts
|
|
79
|
+
into broad topics, and not a substitute for Jev elsewhere. In
|
|
80
|
+
[jgrep](https://github.com/keltokhy/jgrep/blob/main/docs/benchmarks/local-models-2026-09-22.md)
|
|
81
|
+
it had the best news accuracy of the three models, 92% against Jev's 87%, and finished 2,000
|
|
82
|
+
messages in 46 s; at the default cutoff it also flagged 235 messages that were not spam, against
|
|
83
|
+
Jev's 41. Its 512-token window, question included, decides what it can read: the adapter refuses
|
|
84
|
+
longer requests with HTTP 422, which the tools report as failed decisions, so in
|
|
85
|
+
[jcol](https://github.com/keltokhy/jcol/blob/main/benchmarks/README.md#local-models-2026-09-22)
|
|
86
|
+
it refused 27 of 100 complaint narratives and in
|
|
87
|
+
[jsort](https://github.com/keltokhy/jsort/blob/main/docs/benchmarks/local-models-2026-09-22.md)
|
|
88
|
+
every whole FOMC statement. On what it could read, its pairwise comparisons in jsort did not
|
|
89
|
+
follow Jev's order, and in
|
|
90
|
+
[jlink](https://github.com/keltokhy/jlink/blob/main/docs/benchmarks/local-models-2026-09-22.md)
|
|
91
|
+
it scored most candidate pairs as matches, for an F1 of 0.16 to 0.22 on firms, products and
|
|
92
|
+
software where Jev's was 0.67 to 0.94. Evaluate thresholds on your own labeled inputs before
|
|
93
|
+
relying on the scores.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "jevkit-runtime"
|
|
3
|
-
version = "0.3.
|
|
3
|
+
version = "0.3.1"
|
|
4
4
|
description = "Shared transport, configuration, caching, and accounting for JevKit tools"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = "MIT"
|
|
@@ -10,6 +10,8 @@ dependencies = ["httpx>=0.27"]
|
|
|
10
10
|
|
|
11
11
|
[project.urls]
|
|
12
12
|
Homepage = "https://github.com/keltokhy/jevkit-core"
|
|
13
|
+
Repository = "https://github.com/keltokhy/jevkit-core"
|
|
14
|
+
Changelog = "https://github.com/keltokhy/jevkit-core/blob/main/CHANGELOG.md"
|
|
13
15
|
Issues = "https://github.com/keltokhy/jevkit-core/issues"
|
|
14
16
|
|
|
15
17
|
[project.optional-dependencies]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|