agentshim 0.15.2__tar.gz → 0.15.4__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.
- {agentshim-0.15.2 → agentshim-0.15.4}/CHANGELOG.md +19 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/PKG-INFO +1 -1
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/__init__.py +3 -2
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/core/profile.py +9 -1
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/providers/__init__.py +10 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/providers/claude/provider.py +1 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/providers/codex/provider.py +1 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/providers/copilot/provider.py +3 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/providers/gemini/provider.py +1 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/providers/opencode/provider.py +1 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/pyproject.toml +1 -1
- {agentshim-0.15.2 → agentshim-0.15.4}/.gitignore +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/LICENSE +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/README.md +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/agent.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/core/__init__.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/core/_files.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/core/checkpoints.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/core/clock.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/core/conversation.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/core/env.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/core/errors.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/core/events.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/core/home.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/core/ids.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/core/mcp.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/core/permissions.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/core/pricing.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/core/provider.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/core/schema.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/core/session_policy.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/core/skills.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/core/status.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/core/stream.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/core/turn.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/core/usage.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/execution/__init__.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/execution/confinement.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/execution/docker.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/execution/executor.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/execution/host.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/execution/process.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/execution/transform.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/oneshot.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/probe.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/providers/claude/__init__.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/providers/claude/events.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/providers/claude/failures.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/providers/claude/hooks/__init__.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/providers/claude/hooks/confine_reads.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/providers/claude/parser.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/providers/claude/probe.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/providers/claude/rate_limits.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/providers/claude/sandbox.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/providers/claude/scripted.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/providers/claude/stream_argv.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/providers/claude/stream_transport.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/providers/claude/user_hooks.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/providers/codex/__init__.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/providers/codex/_toml.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/providers/codex/app_server/__init__.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/providers/codex/app_server/_wire.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/providers/codex/app_server/approvals.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/providers/codex/app_server/channel.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/providers/codex/app_server/errors.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/providers/codex/app_server/items.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/providers/codex/app_server/mcp.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/providers/codex/app_server/permissions.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/providers/codex/app_server/profile.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/providers/codex/app_server/protocol.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/providers/codex/app_server/rate_limits.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/providers/codex/app_server/transport.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/providers/codex/app_server/usage.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/providers/codex/events.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/providers/codex/failures.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/providers/codex/mcp_scope.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/providers/codex/parser.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/providers/codex/probe.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/providers/codex/rules.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/providers/codex/sandbox.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/providers/codex/scripted.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/providers/codex/skills.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/providers/copilot/__init__.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/providers/copilot/events.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/providers/copilot/parser.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/providers/copilot/probe.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/providers/copilot/scripted.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/providers/gemini/__init__.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/providers/gemini/events.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/providers/gemini/parser.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/providers/gemini/probe.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/providers/gemini/scripted.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/providers/opencode/__init__.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/providers/opencode/events.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/providers/opencode/parser.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/providers/opencode/probe.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/providers/opencode/scripted.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/py.typed +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/runtime.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/session.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/testing/__init__.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/testing/claude_stream.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/testing/clock.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/testing/codex_app_server.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/testing/confinement.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/testing/contracts.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/testing/conversation.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/testing/probe.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/agentshim/testing/process.py +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/tests/fixtures/claude_stream/README.md +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/tests/fixtures/codex/README.md +0 -0
- {agentshim-0.15.2 → agentshim-0.15.4}/tests/fixtures/codex_app_server/README.md +0 -0
|
@@ -1,5 +1,24 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.15.4 (2026-10-09)
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
|
|
7
|
+
- `stream_provider_names()`: the providers that have a long-lived transport
|
|
8
|
+
(today `claude` and `codex`), so a caller picks `TransportKind.STREAM` from
|
|
9
|
+
the registry instead of naming providers.
|
|
10
|
+
|
|
11
|
+
## 0.15.3 (2026-10-09)
|
|
12
|
+
|
|
13
|
+
### Added
|
|
14
|
+
|
|
15
|
+
- `ProviderProfile.credential_files` (default empty): the subset of `auth_files`
|
|
16
|
+
that holds refreshable login credentials, as opposed to settings. A caller that
|
|
17
|
+
lends a login to another process shares these files writable so a token
|
|
18
|
+
refresh there reaches the original login. Claude `.claude/.credentials.json`,
|
|
19
|
+
Codex `.codex/auth.json`, Gemini `.gemini/oauth_creds.json`, opencode
|
|
20
|
+
`.local/share/opencode/auth.json`, Copilot `.copilot/config.json`.
|
|
21
|
+
|
|
3
22
|
## 0.15.2 (2026-10-09)
|
|
4
23
|
|
|
5
24
|
### Added
|
|
@@ -146,7 +146,7 @@ from .execution import (
|
|
|
146
146
|
)
|
|
147
147
|
from .oneshot import OneShotTransport
|
|
148
148
|
from .probe import probe_provider
|
|
149
|
-
from .providers import get_provider, provider_names
|
|
149
|
+
from .providers import get_provider, provider_names, stream_provider_names
|
|
150
150
|
from .providers.claude import ClaudeHook, ClaudeProvider, ClaudeStreamTransport, SandboxConfig
|
|
151
151
|
from .providers.codex import CodexProvider, CodexSandboxConfig
|
|
152
152
|
from .providers.codex.app_server import CodexAppServerTransport
|
|
@@ -156,7 +156,7 @@ from .providers.opencode import OpencodeProvider
|
|
|
156
156
|
from .runtime import Agent
|
|
157
157
|
from .session import Session, Turn, TurnTicket, map_mcp_servers
|
|
158
158
|
|
|
159
|
-
__version__ = "0.15.
|
|
159
|
+
__version__ = "0.15.4"
|
|
160
160
|
|
|
161
161
|
__all__ = [
|
|
162
162
|
"Agent",
|
|
@@ -314,4 +314,5 @@ __all__ = [
|
|
|
314
314
|
"price_for",
|
|
315
315
|
"probe_provider",
|
|
316
316
|
"provider_names",
|
|
317
|
+
"stream_provider_names",
|
|
317
318
|
]
|
|
@@ -152,7 +152,9 @@ class ProviderProfile:
|
|
|
152
152
|
``state_root_env`` is the documented variable that relocates
|
|
153
153
|
``state_dirs[0]``, or ``None`` when the CLI names none. ``auth_files`` are
|
|
154
154
|
the home-relative paths, each inside a ``state_dirs`` entry, whose
|
|
155
|
-
contents are the minimal set to copy so the CLI is logged in elsewhere
|
|
155
|
+
contents are the minimal set to copy so the CLI is logged in elsewhere;
|
|
156
|
+
``credential_files`` (0.15.3+, default empty) is the subset of them that
|
|
157
|
+
holds refreshable login credentials rather than settings.
|
|
156
158
|
``mcp_config_file`` is the workspace-relative path a ``CONFIG_FILE``
|
|
157
159
|
provider writes its MCP config to for a turn, and ``None`` for
|
|
158
160
|
``CLI_FLAGS``/``NONE`` providers.
|
|
@@ -174,6 +176,12 @@ class ProviderProfile:
|
|
|
174
176
|
container_env: Mapping[str, str] = field(default_factory=_no_container_env)
|
|
175
177
|
state_root_env: str | None = None
|
|
176
178
|
auth_files: tuple[str, ...] = ()
|
|
179
|
+
#: The subset of ``auth_files`` that holds login credentials (OAuth tokens
|
|
180
|
+
#: the CLI itself refreshes and rewrites), as opposed to settings. A caller
|
|
181
|
+
#: that lends a login to another process shares exactly these files
|
|
182
|
+
#: writable so a token refresh there is not lost, and keeps the rest of
|
|
183
|
+
#: ``auth_files`` read-only. Every entry is also in ``auth_files``.
|
|
184
|
+
credential_files: tuple[str, ...] = ()
|
|
177
185
|
mcp_config_file: str | None = None
|
|
178
186
|
#: Whether the stream lists the skills offered (``SkillsDiscovered``).
|
|
179
187
|
skill_discovery: SkillSignal = SkillSignal.NONE
|
|
@@ -175,6 +175,15 @@ def provider_names() -> list[str]:
|
|
|
175
175
|
return sorted(_FACTORIES)
|
|
176
176
|
|
|
177
177
|
|
|
178
|
+
def stream_provider_names() -> list[str]:
|
|
179
|
+
"""Return the providers that have a long-lived transport, sorted.
|
|
180
|
+
|
|
181
|
+
These accept ``Agent(name, transport=TransportKind.STREAM)``; every other
|
|
182
|
+
provider in ``provider_names()`` is reached only one process per turn.
|
|
183
|
+
"""
|
|
184
|
+
return sorted(_STREAM_TRANSPORTS)
|
|
185
|
+
|
|
186
|
+
|
|
178
187
|
def get_provider(name: str) -> Provider:
|
|
179
188
|
"""Construct the provider registered under *name* with its defaults."""
|
|
180
189
|
factory = _FACTORIES.get(name)
|
|
@@ -260,4 +269,5 @@ __all__ = [
|
|
|
260
269
|
"get_scripted_lines",
|
|
261
270
|
"get_stream_transport",
|
|
262
271
|
"provider_names",
|
|
272
|
+
"stream_provider_names",
|
|
263
273
|
]
|
|
@@ -101,6 +101,7 @@ PROFILE = ProviderProfile(
|
|
|
101
101
|
# policy and preferences, so consumers that copy or mount auth state must
|
|
102
102
|
# not needlessly expose it to an agent process.
|
|
103
103
|
auth_files=(".codex/auth.json",),
|
|
104
|
+
credential_files=(".codex/auth.json",),
|
|
104
105
|
# CLI_FLAGS: Codex takes MCP servers as --config overrides, never a file.
|
|
105
106
|
mcp_config_file=None,
|
|
106
107
|
# A long Codex thread slows down and costs more per turn, so a session
|
|
@@ -58,6 +58,9 @@ PROFILE = ProviderProfile(
|
|
|
58
58
|
# install held only ``versions.json``, which is not credential-bearing,
|
|
59
59
|
# so it is left out.
|
|
60
60
|
auth_files=(".copilot/config.json", ".copilot/settings.json"),
|
|
61
|
+
# config.json carries the logged-in users and, without a keychain, the
|
|
62
|
+
# tokens; the CLI rewrites it in place on login and refresh.
|
|
63
|
+
credential_files=(".copilot/config.json",),
|
|
61
64
|
# CLI_FLAGS: Copilot takes MCP servers as one --additional-mcp-config
|
|
62
65
|
# flag, never a file.
|
|
63
66
|
mcp_config_file=None,
|
|
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
|
|
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
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|