spawnllm 0.6.2__tar.gz → 0.8.0__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.
- {spawnllm-0.6.2 → spawnllm-0.8.0}/PKG-INFO +12 -1
- {spawnllm-0.6.2 → spawnllm-0.8.0}/README.md +11 -0
- {spawnllm-0.6.2 → spawnllm-0.8.0}/pyproject.toml +2 -2
- {spawnllm-0.6.2 → spawnllm-0.8.0}/spawnllm/backends/claude.py +1 -1
- {spawnllm-0.6.2 → spawnllm-0.8.0}/spawnllm/spec.py +5 -2
- {spawnllm-0.6.2 → spawnllm-0.8.0}/LICENSE +0 -0
- {spawnllm-0.6.2 → spawnllm-0.8.0}/spawnllm/__init__.py +0 -0
- {spawnllm-0.6.2 → spawnllm-0.8.0}/spawnllm/__main__.py +0 -0
- {spawnllm-0.6.2 → spawnllm-0.8.0}/spawnllm/backends/__init__.py +0 -0
- {spawnllm-0.6.2 → spawnllm-0.8.0}/spawnllm/backends/base.py +0 -0
- {spawnllm-0.6.2 → spawnllm-0.8.0}/spawnllm/backends/codex.py +0 -0
- {spawnllm-0.6.2 → spawnllm-0.8.0}/spawnllm/backends/gemini.py +0 -0
- {spawnllm-0.6.2 → spawnllm-0.8.0}/spawnllm/backends/mlx.py +0 -0
- {spawnllm-0.6.2 → spawnllm-0.8.0}/spawnllm/backends/openai_endpoint.py +0 -0
- {spawnllm-0.6.2 → spawnllm-0.8.0}/spawnllm/backends/registry.py +0 -0
- {spawnllm-0.6.2 → spawnllm-0.8.0}/spawnllm/call.py +0 -0
- {spawnllm-0.6.2 → spawnllm-0.8.0}/spawnllm/cli.py +0 -0
- {spawnllm-0.6.2 → spawnllm-0.8.0}/spawnllm/extract.py +0 -0
- {spawnllm-0.6.2 → spawnllm-0.8.0}/spawnllm/mlx/__init__.py +0 -0
- {spawnllm-0.6.2 → spawnllm-0.8.0}/spawnllm/mlx/codec.py +0 -0
- {spawnllm-0.6.2 → spawnllm-0.8.0}/spawnllm/mlx/engine.py +0 -0
- {spawnllm-0.6.2 → spawnllm-0.8.0}/spawnllm/mlx/fuse.py +0 -0
- {spawnllm-0.6.2 → spawnllm-0.8.0}/spawnllm/mlx/patches.py +0 -0
- {spawnllm-0.6.2 → spawnllm-0.8.0}/spawnllm/proc.py +0 -0
- {spawnllm-0.6.2 → spawnllm-0.8.0}/spawnllm/py.typed +0 -0
- {spawnllm-0.6.2 → spawnllm-0.8.0}/spawnllm/response.py +0 -0
- {spawnllm-0.6.2 → spawnllm-0.8.0}/spawnllm/run.py +0 -0
- {spawnllm-0.6.2 → spawnllm-0.8.0}/spawnllm/structured.py +0 -0
- {spawnllm-0.6.2 → spawnllm-0.8.0}/spawnllm/types.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: spawnllm
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.8.0
|
|
4
4
|
Summary: Delete your subprocess wrappers around claude, codex, and gemini.
|
|
5
5
|
Keywords:
|
|
6
6
|
Author: Yasyf Mohamedali
|
|
@@ -119,6 +119,17 @@ uv add "spawnllm[mlx]"
|
|
|
119
119
|
|
|
120
120
|
`AdapterFuser.ensure_fused` fuses your compressed adapter into the base model once and caches the result in the Hugging Face hub layout; `MlxEngine` loads it on a dedicated worker thread, precomputes a prompt cache for your shared prefix messages, and batches generation. Wrap the engine in an `MlxBackend` and the same `run_sync` call works.
|
|
121
121
|
|
|
122
|
+
### Call the same backends from Go or Rust
|
|
123
|
+
|
|
124
|
+
The bindings ship the identical engine: argv planning, output parsing, schema strictification, and retry policy compile from one Rust core, pinned to the Python behavior by a shared golden-vector suite and released in lockstep.
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
go get github.com/yasyf/spawnllm/go # pure Go, no cgo — the core embeds as WASM
|
|
128
|
+
cargo add spawnllm # async-first, with a blocking mirror
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
Both expose `Call`/`call` and typed `Extract`/`extract` against your existing CLI logins — see the [Go README](https://github.com/yasyf/spawnllm/tree/main/go) and the [Rust README](https://github.com/yasyf/spawnllm/tree/main/rust/spawnllm). MLX stays Python-only.
|
|
132
|
+
|
|
122
133
|
## More in the docs
|
|
123
134
|
|
|
124
135
|
- **Spec-driven runs** — a literal model id, per-provider flag passthrough, and envelope-aware retry via `RunSpec` — [Running reference](https://yasyf.github.io/spawnllm/reference/#running)
|
|
@@ -71,6 +71,17 @@ uv add "spawnllm[mlx]"
|
|
|
71
71
|
|
|
72
72
|
`AdapterFuser.ensure_fused` fuses your compressed adapter into the base model once and caches the result in the Hugging Face hub layout; `MlxEngine` loads it on a dedicated worker thread, precomputes a prompt cache for your shared prefix messages, and batches generation. Wrap the engine in an `MlxBackend` and the same `run_sync` call works.
|
|
73
73
|
|
|
74
|
+
### Call the same backends from Go or Rust
|
|
75
|
+
|
|
76
|
+
The bindings ship the identical engine: argv planning, output parsing, schema strictification, and retry policy compile from one Rust core, pinned to the Python behavior by a shared golden-vector suite and released in lockstep.
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
go get github.com/yasyf/spawnllm/go # pure Go, no cgo — the core embeds as WASM
|
|
80
|
+
cargo add spawnllm # async-first, with a blocking mirror
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Both expose `Call`/`call` and typed `Extract`/`extract` against your existing CLI logins — see the [Go README](https://github.com/yasyf/spawnllm/tree/main/go) and the [Rust README](https://github.com/yasyf/spawnllm/tree/main/rust/spawnllm). MLX stays Python-only.
|
|
84
|
+
|
|
74
85
|
## More in the docs
|
|
75
86
|
|
|
76
87
|
- **Spec-driven runs** — a literal model id, per-provider flag passthrough, and envelope-aware retry via `RunSpec` — [Running reference](https://yasyf.github.io/spawnllm/reference/#running)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "spawnllm"
|
|
3
3
|
# Inert sentinel: the real version is set from the release tag (uv version --frozen).
|
|
4
|
-
version = "0.
|
|
4
|
+
version = "0.8.0"
|
|
5
5
|
description = "Delete your subprocess wrappers around claude, codex, and gemini."
|
|
6
6
|
readme = "README.md"
|
|
7
7
|
license = "MIT"
|
|
@@ -127,5 +127,5 @@ docs = [
|
|
|
127
127
|
# griffe (2.x) distribution, overriding the legacy griffe<2 pin great-docs
|
|
128
128
|
# itself still declares.
|
|
129
129
|
"griffelib>=2.0",
|
|
130
|
-
"great-docs>=0.
|
|
130
|
+
"great-docs>=0.15,<0.16",
|
|
131
131
|
]
|
|
@@ -130,7 +130,7 @@ class ClaudeCliBackend(CliBackend):
|
|
|
130
130
|
),
|
|
131
131
|
*(["--system-prompt", cfg.system_prompt] if cfg.system_prompt is not None else []),
|
|
132
132
|
*(["--max-turns", str(cfg.max_turns)] if cfg.max_turns is not None else []),
|
|
133
|
-
*(["--tools", cfg.tools] if cfg.tools is not None else []),
|
|
133
|
+
*(["--tools", *cfg.tools] if cfg.tools else ["--tools", ""] if cfg.tools is not None else []),
|
|
134
134
|
*(["--disable-slash-commands"] if cfg.disable_slash_commands else []),
|
|
135
135
|
*(
|
|
136
136
|
["--json-schema", schema, "--output-format", "json"]
|
|
@@ -19,10 +19,13 @@ class ClaudeConfig:
|
|
|
19
19
|
(`permission_mode`, `mcp_config`, `strict_mcp`, `append_system_prompt`,
|
|
20
20
|
`system_prompt`, `settings`, `disallowed_tools`) and orthogonal extras
|
|
21
21
|
(`max_turns`, `max_budget_usd`, `tools`, `disable_slash_commands`,
|
|
22
|
-
`output_format`, `verbose`).
|
|
22
|
+
`output_format`, `verbose`). `tools` selects the built-in toolset: `None`
|
|
23
|
+
keeps the CLI default, `()` disables every built-in tool, and names
|
|
24
|
+
restrict the session to those tools.
|
|
23
25
|
|
|
24
26
|
Example:
|
|
25
27
|
>>> ClaudeConfig(permission_mode="bypassPermissions", strict_mcp=True)
|
|
28
|
+
>>> ClaudeConfig(tools=()) # bare session: no built-in tools
|
|
26
29
|
"""
|
|
27
30
|
|
|
28
31
|
permission_mode: str | None = None
|
|
@@ -34,7 +37,7 @@ class ClaudeConfig:
|
|
|
34
37
|
disallowed_tools: tuple[str, ...] = ()
|
|
35
38
|
max_turns: int | None = None
|
|
36
39
|
max_budget_usd: float | None = None
|
|
37
|
-
tools: str | None = None
|
|
40
|
+
tools: tuple[str, ...] | None = None
|
|
38
41
|
disable_slash_commands: bool = False
|
|
39
42
|
output_format: str | None = None
|
|
40
43
|
verbose: bool = False
|
|
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
|
|
File without changes
|
|
File without changes
|