clawd-code-sdk 0.3.4__tar.gz → 0.3.6__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.
Files changed (69) hide show
  1. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/PKG-INFO +1 -1
  2. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/pyproject.toml +1 -1
  3. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/src/clawd_code_sdk/client.py +8 -7
  4. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/src/clawd_code_sdk/models/messages.py +13 -12
  5. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/src/clawd_code_sdk/models/options.py +11 -5
  6. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/.gitignore +0 -0
  7. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/LICENSE +0 -0
  8. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/README.md +0 -0
  9. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/src/clawd_code_sdk/__init__.py +0 -0
  10. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/src/clawd_code_sdk/_bundled/.gitignore +0 -0
  11. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/src/clawd_code_sdk/_errors.py +0 -0
  12. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/src/clawd_code_sdk/_internal/__init__.py +0 -0
  13. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/src/clawd_code_sdk/_internal/message_parser.py +0 -0
  14. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/src/clawd_code_sdk/_internal/query.py +0 -0
  15. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/src/clawd_code_sdk/_internal/transport/__init__.py +0 -0
  16. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/src/clawd_code_sdk/_internal/transport/subprocess_cli.py +0 -0
  17. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/src/clawd_code_sdk/_version.py +0 -0
  18. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/src/clawd_code_sdk/anthropic_types.py +0 -0
  19. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/src/clawd_code_sdk/list_sessions.py +0 -0
  20. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/src/clawd_code_sdk/mcp_utils.py +0 -0
  21. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/src/clawd_code_sdk/models/__init__.py +0 -0
  22. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/src/clawd_code_sdk/models/agents.py +0 -0
  23. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/src/clawd_code_sdk/models/base.py +0 -0
  24. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/src/clawd_code_sdk/models/content_blocks.py +0 -0
  25. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/src/clawd_code_sdk/models/control.py +0 -0
  26. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/src/clawd_code_sdk/models/hooks.py +0 -0
  27. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/src/clawd_code_sdk/models/input_types.py +0 -0
  28. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/src/clawd_code_sdk/models/mcp.py +0 -0
  29. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/src/clawd_code_sdk/models/output_types.py +0 -0
  30. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/src/clawd_code_sdk/models/permissions.py +0 -0
  31. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/src/clawd_code_sdk/models/sandbox.py +0 -0
  32. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/src/clawd_code_sdk/models/server_info.py +0 -0
  33. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/src/clawd_code_sdk/py.typed +0 -0
  34. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/src/clawd_code_sdk/query.py +0 -0
  35. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/src/clawd_code_sdk/session.py +0 -0
  36. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/src/clawd_code_sdk/storage/ARCHITECTURE.md +0 -0
  37. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/src/clawd_code_sdk/storage/__init__.py +0 -0
  38. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/src/clawd_code_sdk/storage/helpers.py +0 -0
  39. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/src/clawd_code_sdk/storage/models.py +0 -0
  40. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/src/clawd_code_sdk/storage/replay.py +0 -0
  41. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/src/clawd_code_sdk/usage.py +0 -0
  42. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/tests/conftest.py +0 -0
  43. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/tests/e2e/__init__.py +0 -0
  44. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/tests/e2e/test_agents_and_settings.py +0 -0
  45. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/tests/e2e/test_dynamic_control.py +0 -0
  46. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/tests/e2e/test_hook_events.py +0 -0
  47. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/tests/e2e/test_hooks.py +0 -0
  48. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/tests/e2e/test_include_partial_messages.py +0 -0
  49. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/tests/e2e/test_mcp_tools.py +0 -0
  50. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/tests/e2e/test_sdk_mcp_tools.py +0 -0
  51. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/tests/e2e/test_slash_commands.py +0 -0
  52. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/tests/e2e/test_stderr_callback.py +0 -0
  53. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/tests/e2e/test_structured_output.py +0 -0
  54. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/tests/e2e/test_subagent_invocation.py +0 -0
  55. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/tests/e2e/test_tool_permissions.py +0 -0
  56. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/tests/mcp_server.py +0 -0
  57. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/tests/mock_claude_server.py +0 -0
  58. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/tests/test_changelog.py +0 -0
  59. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/tests/test_client.py +0 -0
  60. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/tests/test_errors.py +0 -0
  61. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/tests/test_image.png +0 -0
  62. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/tests/test_integration.py +0 -0
  63. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/tests/test_message_parser.py +0 -0
  64. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/tests/test_sdk_mcp_integration.py +0 -0
  65. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/tests/test_session.py +0 -0
  66. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/tests/test_streaming_client.py +0 -0
  67. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/tests/test_subprocess_buffering.py +0 -0
  68. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/tests/test_tool_callbacks.py +0 -0
  69. {clawd_code_sdk-0.3.4 → clawd_code_sdk-0.3.6}/tests/test_transport.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: clawd-code-sdk
3
- Version: 0.3.4
3
+ Version: 0.3.6
4
4
  Summary: Python SDK for Claude Code
5
5
  Project-URL: Documentation, https://github.com/phil65/claude-agent-sdk-python
6
6
  Project-URL: Homepage, https://github.com/phil65/claude-agent-sdk-python
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "clawd-code-sdk"
3
- version = "0.3.4"
3
+ version = "0.3.6"
4
4
  description = "Python SDK for Claude Code"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.13"
@@ -118,13 +118,14 @@ class ClaudeSDKClient:
118
118
  # Extract system prompt for initialize request
119
119
  system_prompt: str | None = None
120
120
  append_system_prompt: str | None = None
121
- match self.options.system_prompt:
122
- case None:
123
- system_prompt = "" # Explicitly clear default system prompt
124
- case str() as prompt_str:
125
- system_prompt = prompt_str
126
- case {"type": "preset", "append": str() as append}:
127
- append_system_prompt = append
121
+ if self.options.system_prompt is None:
122
+ if not self.options.include_builtin_system_prompt:
123
+ system_prompt = "" # Clear the builtin prompt
124
+ # else: send nothing, CLI uses its default builtin prompt
125
+ elif self.options.include_builtin_system_prompt:
126
+ append_system_prompt = self.options.system_prompt
127
+ else:
128
+ system_prompt = self.options.system_prompt
128
129
 
129
130
  # JSON schema for structured output
130
131
  json_schema: dict[str, Any] | None
@@ -198,9 +198,9 @@ class HookStartedSystemMessage(BaseSystemMessage):
198
198
  """System message emitted when a hook starts."""
199
199
 
200
200
  subtype: Literal["hook_started"] = "hook_started"
201
- hook_id: str | None = None
202
- hook_name: str | None = None
203
- hook_event: str | None = None
201
+ hook_id: str
202
+ hook_name: str
203
+ hook_event: str
204
204
 
205
205
 
206
206
  @dataclass(kw_only=True)
@@ -209,6 +209,7 @@ class StatusSystemMessage(BaseSystemMessage):
209
209
 
210
210
  subtype: Literal["status"] = "status"
211
211
  status: Literal["compacting"] | None
212
+ permissionMode: PermissionMode | None = None # noqa: N815
212
213
 
213
214
 
214
215
  class TriggerMetadata(TypedDict):
@@ -247,9 +248,9 @@ class TaskStartedSystemMessage(BaseSystemMessage):
247
248
  """System message emitted when a subagent task starts."""
248
249
 
249
250
  subtype: Literal["task_started"] = "task_started"
250
- task_id: str = ""
251
+ task_id: str
251
252
  tool_use_id: str | None = None
252
- description: str = ""
253
+ description: str
253
254
  task_type: str | None = None
254
255
 
255
256
 
@@ -258,10 +259,10 @@ class TaskNotificationSystemMessage(BaseSystemMessage):
258
259
  """System message emitted when a subagent task completes, fails, or stops."""
259
260
 
260
261
  subtype: Literal["task_notification"] = "task_notification"
261
- task_id: str = ""
262
- status: TaskStatus = "completed"
263
- output_file: str = ""
264
- summary: str = ""
262
+ task_id: str
263
+ status: TaskStatus
264
+ output_file: str
265
+ summary: str
265
266
  tool_use_id: str | None = None
266
267
 
267
268
 
@@ -278,10 +279,10 @@ class TaskProgressSystemMessage(BaseSystemMessage):
278
279
  """System message emitted periodically with task progress updates."""
279
280
 
280
281
  subtype: Literal["task_progress"] = "task_progress"
281
- task_id: str = ""
282
+ task_id: str
282
283
  tool_use_id: str | None = None
283
- description: str = ""
284
- usage: TaskProgressUsage | None = None
284
+ description: str
285
+ usage: TaskProgressUsage
285
286
  last_tool_name: ToolName | str | None = None
286
287
 
287
288
 
@@ -10,12 +10,12 @@ from typing import TYPE_CHECKING, Any, Literal, TypedDict
10
10
 
11
11
 
12
12
  if TYPE_CHECKING:
13
- from collections.abc import Callable
13
+ from collections.abc import Callable, Sequence
14
14
 
15
15
  from clawd_code_sdk.models.base import ModelName
16
16
  from clawd_code_sdk.models.permissions import OnUserQuestion
17
17
 
18
- from .agents import AgentDefinition, SystemPromptPreset, ToolsPreset
18
+ from .agents import AgentDefinition, ToolsPreset
19
19
  from .base import PermissionMode, ReasoningEffort, SettingSource, ThinkingConfig
20
20
  from .hooks import HookEvent, HookMatcher
21
21
  from .mcp import McpServerConfig, SdkPluginConfig
@@ -192,7 +192,7 @@ class ClaudeAgentOptions:
192
192
  """CLI path override (auto-detects by default)."""
193
193
  extra_args: dict[str, str | None] = field(default_factory=dict)
194
194
  """Arbitrary extra CLI flags."""
195
- max_buffer_size: int | None = None
195
+ max_buffer_size: int = 10 * 1024 * 1024
196
196
  """Max bytes when buffering CLI stdout."""
197
197
  stderr: Callable[[str], None] | None = None
198
198
  """Callback for stderr output from CLI."""
@@ -201,7 +201,7 @@ class ClaudeAgentOptions:
201
201
  user: str | None = None
202
202
  """User for the AnyIO process."""
203
203
  # CWD
204
- add_dirs: list[str | Path] = field(default_factory=list)
204
+ add_dirs: Sequence[str | Path] = field(default_factory=list)
205
205
  """Add additional working directories."""
206
206
  cwd: str | Path | None = None
207
207
  """The working directory for the agent."""
@@ -219,8 +219,14 @@ class ClaudeAgentOptions:
219
219
  debug_file: str | None = None
220
220
  """Write debug logs to a specific file path. Implicitly enables debug mode."""
221
221
  # Agent config
222
- system_prompt: str | SystemPromptPreset | None = None
222
+ system_prompt: str | None = None
223
223
  """System prompt for the agent."""
224
+ include_builtin_system_prompt: bool = True
225
+ """Whether to include Claude Code's builtin system prompt.
226
+
227
+ When True (default) and system_prompt is set, it is appended to the
228
+ builtin system prompt. When False, the system_prompt replaces it entirely.
229
+ """
224
230
  hooks: dict[HookEvent, list[HookMatcher]] | None = None
225
231
  """Hook configurations."""
226
232
  agents: dict[str, AgentDefinition] | None = None
File without changes
File without changes